summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--texmf-dist/doc/latex/eqexam/README.md61
-rw-r--r--texmf-dist/doc/latex/eqexam/eqexamman.pdfbin0 -> 580529 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/coorplane.eps9923
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/coorplane.pdfbin0 -> 32512 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/eqex_solnsonly.pdfbin0 -> 24092 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/eqex_solnsonly.tex121
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/fig1.bb5
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/fig1.epsbin0 -> 834475 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/fig1.jpgbin0 -> 33479 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/fig1.pdfbin0 -> 12673 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/graph.eps9158
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/graph.pdfbin0 -> 27764 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/hw.cfg12
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/hw.cfg.txt12
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/hw01.pdfbin0 -> 31305 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/hw01.tex166
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/hw02.pdfbin0 -> 32852 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/hw02.tex143
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/hw03.pdfbin0 -> 21745 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/hw03.tex71
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/markqs.pdfbin0 -> 22192 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/markqs.tex177
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/quiz.cfg7
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/quiz.cfg.txt7
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/quiz01.pdfbin0 -> 33181 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/quiz01.tex126
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/quiz02.pdfbin0 -> 34997 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/quiz02.tex146
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/selectversion_tst.pdfbin0 -> 29031 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/selectversion_tst.tex220
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test01.pdfbin0 -> 115104 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test01.synctex4789
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test01.tex445
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test02.pdfbin0 -> 216104 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test02.tex370
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test03.pdfbin0 -> 256124 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test03.tex581
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test_matching.pdfbin0 -> 18253 bytes
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/test_matching.tex92
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/tex_survey.tex537
-rw-r--r--texmf-dist/doc/latex/eqexam/examples/tex_survey_h.tex551
-rw-r--r--texmf-dist/source/latex/eqexam/doc/eqexamman.tex4611
-rw-r--r--texmf-dist/source/latex/eqexam/doc/fortextbook.zipbin0 -> 718935 bytes
-rw-r--r--texmf-dist/source/latex/eqexam/doc/fortextbook/fortextbook.pdfbin0 -> 577912 bytes
-rw-r--r--texmf-dist/source/latex/eqexam/eqexam.dtx8258
-rw-r--r--texmf-dist/source/latex/eqexam/eqexam.ins62
-rw-r--r--texmf-dist/source/latex/eqexam/script/eqAttach.asp202
-rw-r--r--texmf-dist/tex/latex/eqexam/aebrandom.def168
-rw-r--r--texmf-dist/tex/latex/eqexam/eqalone.def44
-rw-r--r--texmf-dist/tex/latex/eqexam/eqecus.opt12
-rw-r--r--texmf-dist/tex/latex/eqexam/eqexam.def1651
-rw-r--r--texmf-dist/tex/latex/eqexam/eqexam.sty3151
-rw-r--r--texmf-dist/tex/latex/eqexam/eqtextb.def765
-rw-r--r--texmf-dist/tex/latex/eqexam/fortextbook.sty31
-rw-r--r--tlpkg/tlpsrc/eqexam.tlpsrc0
55 files changed, 46675 insertions, 0 deletions
diff --git a/texmf-dist/doc/latex/eqexam/README.md b/texmf-dist/doc/latex/eqexam/README.md
new file mode 100644
index 00000000..b79ff587
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/README.md
@@ -0,0 +1,61 @@
+The eqexam Package
+Dated: 2017-03-16
+Author: D. P. Story
+
+eqExam is a LaTeX package for writing exams, tests, quizzes,
+homework assignments, etc. It is a stand alone package, yet is
+tightly integrated with the AcroTeX eDucation Bundle (AeB). Highlights of
+this package are as follows:
+
+ 1. Can create exams (tests, quizzes, homework assignments) for
+ paper, with points in the left or right margins (or both), totals
+ for each page optionally shown at the bottom corner of each page.
+ Questions can be objective, fill-in, true false, or multiple
+ choice.
+ 2. Solutions can optionally be included in the source file, and
+ by changing options, can be displayed (for an answer key), in a
+ couple of different ways. A solutions only document can also be
+ generated.
+ 3. Can create multi-part exams, as I often do for final exams, these
+ multiple exams are meant to be graded individually.
+ 4. The one thing that distinguishes this package from the other
+ exam package is its support for PDF, and this is where AeB comes
+ in. When you have AeB installed, and you select any of
+ several options (pdf, links, online or email), a variety of
+ things can happen. For example, in the case of the online or
+ email options, white space for solutions is converted into
+ multi-line text field, spaces to fill in answers are converted to
+ text fields,multiple choice questions are converted into radio
+ button fields, etc. When the email option is used, a "Submit"
+ button is automatically created at the top of the first page of
+ the test. The student can take the test online (perhaps in a
+ testing lab) then submit responses to the instructor. The email
+ that is generated to the instructor attaches the FDF file of
+ form data, so the instructor gets a copy of all responses.
+ She/He can then open the file and view the responses of the
+ student. Get the latest AeB (AcroTeX eDucation Bundle,
+ web,exerquiz,etc)
+ 5. A major option, fortextbook, is designed to support (U.S.) textbook
+ authors. Documentation for this option is found in the doc/fortextbook
+ folder. See also the series of blogs at
+ http://www.acrotex.net/blog/?tag=fortextbook
+
+Sample files, previous distributed with eqexam are now available from
+
+ http://www.acrotex.net/blog/?cat=107
+and
+ http://www.acrotex.net/blog/?tag=eqexam-package
+
+The home page for eqexam is
+
+ http://www.math.uakron.edu/~dpstory/eqexam.html
+
+The home page for AeB is
+
+ http://www.math.uakron.edu/~dpstory/webeq.html
+
+Comments and suggestions are always gratefully accepted and seriously
+considered.
+
+D. P. Story
+
diff --git a/texmf-dist/doc/latex/eqexam/eqexamman.pdf b/texmf-dist/doc/latex/eqexam/eqexamman.pdf
new file mode 100644
index 00000000..15c7fbc1
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/eqexamman.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/coorplane.eps b/texmf-dist/doc/latex/eqexam/examples/coorplane.eps
new file mode 100644
index 00000000..5ca2b1ee
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/coorplane.eps
@@ -0,0 +1,9923 @@
+%!PS-Adobe-3.1 EPSF-3.0
+%ADO_DSC_Encoding: Windows Roman
+%%Title: coorplane.pdf
+%%Creator: Adobe Acrobat 10.0.1
+%%For: D. P. Story
+%%CreationDate: 4/8/2011, 3:22:34 PM
+%%BoundingBox: -1 0 273 191
+%%HiResBoundingBox: 0 0 272.7656 190.2490
+%%CropBox: 0 0 272.7656 190.2490
+%%LanguageLevel: 2
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentNeededFeatures: (atend)
+%%DocumentSuppliedFeatures: (atend)
+%%DocumentData: Clean7Bit
+%%Pages: (atend)
+%%DocumentProcessColors: Black
+%%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-2006 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 not{pop exit}if
+ 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-2007 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
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }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
+ dup currentblackgeneration eq {pop}{setblackgeneration}ifelse
+ dup null eq {pop /AGMCORE_currentucr load}{/Procedure get_res}ifelse
+ dup currentundercolorremoval eq {pop}{setundercolorremoval}ifelse
+}def
+/setcolorrendering_opt
+{
+ dup currentcolorrendering eq{
+ pop
+ }{
+ product(HP Color LaserJet 2605)anchorsearch{
+ pop pop pop
+ }{
+ pop
+ clonedict
+ begin
+ /Intent Intent def
+ currentdict
+ end
+ setcolorrendering
+ }ifelse
+ }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
+ {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse
+ 3 1 roll 2 index{
+ exch pop/sep_tint AGMCORE_gget exch
+ }if
+ mark 3 1 roll
+ setsepcolorspace
+ counttomark 0 ne{
+ setsepcolor
+ }if
+ pop
+ not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if
+ 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
+/capture_mysetup
+{
+ /Pscript_Win_Data where{
+ pop
+ Pscript_Win_Data/mysetup known{
+ Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put
+ }if
+ }if
+}def
+/restore_mysetup
+{
+ /Pscript_Win_Data where{
+ pop
+ Pscript_Win_Data/mysetup known{
+ Adobe_AGM_Core/save_mysetup known{
+ Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put
+ Adobe_AGM_Core/save_mysetup undef
+ }if
+ }if
+ }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 /$None SetSubstituteStrategy end
+%%BeginResource: procset Adobe_AGM_Image 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2006 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 xcheck
+ {
+ [
+ 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
+ }{
+ DataSource aload pop AGMCORE_get_ink_data
+ }ifelse 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 dup/names_index known exch/Names get convert_to_process or{
+ 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
+ }{
+ //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec
+ }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 2010 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} 1281 (% &end XMP packet& %) ReadBypdfmark_5_string
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xmp:ModifyDate="2011-04-08T15:19:23-05:00"
+ xmp:CreateDate="2011-04-08T15:19:23-05:00"
+ xmp:MetadataDate="2011-04-08T15:19:23-05:00"
+ xmp:CreatorTool="DVIPSONE 2.3.4.149 http://www.YandY.com"
+ dc:format="application/pdf"
+ xmpMM:DocumentID="uuid:59e6a26d-d46f-4728-8c15-f91db24a21bf"
+ xmpMM:InstanceID="uuid:0e496a18-f0a1-4380-b9f2-bcbc2bf4adb6"
+ pdf:Producer="Acrobat Distiller 10.0.1 (Windows)">
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">test03</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <dc:description>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">TeX output 2011.04.08:1517</rdf:li>
+ </rdf:Alt>
+ </dc:description>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li>Donald Story (Complimentary Copy) 4662 2009-10-23 13:17:17</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_Core/capture_mysetup gx
+Adobe_AGM_Utils/capture_cpd gx
+Adobe_CoolType_Core/ps get exec
+Adobe_AGM_Image/ps gx
+%%EndPageSetup
+1 -1 scale 0 -190.249 translate
+pgsv
+[1 0 0 1 0 0 ]ct
+gsave
+np
+gsave
+-7.62939e-6 0 mo
+-7.62939e-6 190.249 li
+272.766 190.249 li
+272.766 0 li
+cp
+clp
+false sop
+/0
+<<
+/Name (Black)
+/0
+[/DeviceCMYK] /CSA add_res
+/CSA /0 get_csa_by_name
+/MappedCSA /0 /CSA get_res
+/TintMethod /Subtractive
+/TintProc null
+/NComponents 4
+/Components [ 0 0 0 1 ]
+>>
+/CSD add_res
+1 /0 /CSD get_res sepcs
+1 sep
+%ADOBeginSubsetFont: PBAAAA+CMR10 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /PBAAAA+CMR10 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1994 Blue Sky Research and Y&Y, Inc. http://www.YandY.com) def
+/Weight (Medium) def
+/ItalicAngle 0 def
+/BaseFontName (CMR10) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 53 /five put
+dup 58 /colon put
+dup 65 /A put
+dup 67 /C put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 84 /T put
+dup 97 /a put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 109 /m put
+dup 111 /o put
+dup 123 /endash put
+def
+/UniqueID 5000793 def
+/FontBBox {-40 -250 1009 969} def
+end
+systemdict begin
+dup /Private
+13 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-22 -0 683 705 431 448 666 677] def
+/OtherBlues [-206 -194] def
+/BlueScale 0.04379 def
+/StdHW [31] def
+/StdVW [69] def
+/StemSnapH [22 31] def
+/StemSnapV [69 89] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+21 dict dup begin
+/slash <1C60D8A8C9B7A73DB56225352A24C6E389DE2B55CA06CAB1D904D74F
+E21B6520E910DE6837DBFFB95567192F781E541A03B8446689265DEAE7140ED2
+3D1C3943714CDFC12315> |-
+/zero <1C60D8A8C9B7A73D3B2D32309B1F5D5A32FC3614834F8BC61B6EB92C1
+2484BD76628737DA40CF9DA1C97CCDAFB1D1B732C642F74A7C41B7D3AC6DAF8D
+1E760692B6EBD2417EF1893A4AA0B1CF049D4C54D830CEC073A9153D451FAD42
+892B0930AEE4FE18588336BFDAD60D8A4F4CFFED76F103FB9BBD8A33EFBA3F18
+232B88D88FE54E17260FA3E2CC29DEC0CB72B88DC816FF5> |-
+/one <1C60D8A8C9B7A73DC579B9CE13A4EA8C203AFC890ABD6F58341B006CF1
+BDD8FED3A7238E01F751FEAC75885229C293891E5636AD630D9C884528B6FEF0
+0728A740ED77D054B4743ECA5E3947520FEF6B23D548765D11> |-
+/two <1C60D8A8C9B7A73DC50B0411757B441481CCF7EF812EEB9B3F6A07BD51
+606BCA866C4BD24CA34E86B9CA5A529B664F3EEDB6B4AF8A2B994DB57B49473E
+162231CB943675FE63E9B92B8AEBB62FB22456EC4173C66EF6C2F34FFEC22ACA
+E77FFFAAD70F3754CADC0D2CF63CB6D286D930AEA5A613E5AB9CB004BEAEBADD
+D070EDAF4FF25FDB6421F540D58D2C7A3FC40290CBCF831BE1B89B7F> |-
+/three <1C60D8A8C9B7A73D3B2B97DEB4C7BDB68E0D63865C8BF294429AD1BA
+AE59A25299F9306A9E28AA5C0C0AF9F97F56096DB0FD0EC440ACCE834B0BA539
+2FD94D026768A961AA5D1A88FAE30F2B2033E77AFAB55B0B9C8092CD226DD9EF
+EEAAF5CD5AE79D6DDEC4C37DC43DE3B85DD2A2EC4DC0C9F349D5E8F9F615782E
+DC8C53805553FD3C0007C1818BF3D99AB659A079ED36132BBDC613CA63D7A0FE
+429706DBC6BA998CE56A89C002758EF37F90A390F83B3DFE49D312FA66FDF2F1
+6212D1503559B35FC2DB8BD5A49535> |-
+/five <1C60D8A8C9B7A73D3B2B97F19D54A2E00E7DDA8E72064220CB7581D13
+CEDF071F346430E40993A6297E3A2A6D6093205222D977AC7F7B65CC82B221D9
+B18ADEA5D4AF0261ABF060D3E283C7B3B5EB39FF499721FD51203AE59E3BEA25
+7DFD3E472FEF67221488EC8D1F355E2FAD057CA44A8B4BAD6C6C719C164907CB
+F9A6CC770DB0C7E58A37D2385E23F576BCFF94FFBFD8ADD4C5E6C32CD83ACEB7
+7472D00FE1A4DC66393A99AC6BBD252B04C98B710149EA42B66ACE89D4FC4393
+F3A09165DF477ABCB0E8A8DB21E4278CA219EBCC9B067F92619913BDBD1EF3C9
+A> |-
+/colon <1C60D8A8C9B08A95708109816759149241680C741B6923EBD56E6248
+E5269499A7D548A5AC3ECB516C4A5048666940A11AD8CB54F4BA847274447EEB
+614F54B956BBCFCAD8E88A403FBD4464DA283ACB> |-
+/A <1C60D8A8C9B08A9501CDAE1251A61DF6E2312CA41635F6CE1D00B63E171C
+70F84D42F62A21A6DD37D84C279E3FAE908D39B730ACD671ED9E277ACFE833A1
+1F48F076C9803DC08258033731BCBCE19DF3B81C1C298B382A15FAC94387A992
+AD9631716A7ED4F711137D6C851AE1C8DCBBFBCF7274E882226E58958CE6283A
+197E7FAE3A2D0F6C24FA411BECFB36A10FF2A923EA89ABEFAD5AB23D600F> |-
+/C <1C60D8A8C9B08A9454CA4C75C5C983901A105955FD02AB95A1C2D2A205D6
+C9A19566388580DAF81E45849DB37660797B67B5A88B6906602915C5F5C9B0EC
+D18BF9F52BC4BC58CA3DC88745B8BAABAD3D92E461BFB415E7240305CDDA1D0D
+B5D35FEBC75FFD4C053E78B6CA772ACEB0C2FF98C08B672F492F305E0C5F3841
+918729B4AEB78A65C2A83364408240D8D653DA56F4DCB028D3D78F3C2D6BC7> |-
+/M <1C60D8A8C9B08A94284A0D047609A407E661A852E250B140B4157477FB2A
+AE2E22210B2D780B692B0718211E5BD86C3DCF8087849BEE2B9F6D1D8621E40C
+8FBE892AC1B23002BF18819E26C6741335DF8DA8AC82506D7051C0505D48DDFA
+17EE84A06E07C05EBAC6174D600BACE071866247BE6C83F4CF28F6D6EE6A6CF8
+A788C4FFFDBDCA978C2B0B201753D21CB7AF0542C690ECE8E7EDBE1B1FB29939
+734E35E0ECCA8BA7FAEB58AC205A8A82A94C960A65> |-
+/N <1C60D8A8C9B08A9501CDAE1251A61DF6E23FBE9059A2A88492E84D61402E
+80BD80B5057FF8914FA4679EB3900C60B246DA77BF837041B1C053FCD543E3D1
+D259FCE953A74E40366D604A99F9233772AC97F872D505329B1446640ABD99E4
+AC723C39DD6EA376A043CE3633F04D9BC6DEFE2E1A831DBB9C16F90A966DFA0F
+3802BB1EB0AA3DAEB0E864B9D3CC3E14AE1E9219B48660289CF348B4E280> |-
+/P <1C60D8A8C9B08A94478101EE5603CAF9EA65868978F157B7D9DB71203FAD
+46B85DF1A1E477012038D20B3756C0124AD7E2F6ACCB98150AB793091E3E7A8F
+3C0AE6FC8D7A5031BB678671889D46F3A15BD495F1AB5B7C8F63325E15B44523
+174D09593A38714FEB5177883F725186FE6BF7095A24CD9EDEFA3551580A0E2B
+0B49AC2002> |-
+/T <1C60D8A8C9B08A9454CA4C75C5C97DCE7AB32777FAAECD12647866E7CB3F
+CCDC541E37F2225E520DEDE695980D4012AD5B972BDABC7E7E5410E71AC63692
+4E778B3131B6C4D1E76F8C4592AC311A2107F53DC1850538C9E487E6D5DBDFE8
+027D7126BA9ED8B24E7379B57E474ACD298BF6B3700CC970D80111DD98EFC872
+C24D0DA3C75DDDFD177C6D15> |-
+/a <1C60D8A8C9B7A73DCB03313BCF7AD8C8EE234E5372D46A65E92A78F4B7E0
+2ECC58F71EE6C027AD4D56C5E4DE1AF1031295DC17C0E7AC8D8358634F9A19B0
+2A110E5539C10136C68E0D2CBEA6658A501D9D73323861F8C29EB92F9080ACC3
+E236C5F14389534682EC2925F59CD4A215569A7BD7B9F7827A30BA75EB840535
+B2A2C8F92AD166CE93D277314A4C690C47DB847F73BFE1049631CDDB9124FD76
+2753AA8DB187C216AFB74F76299B3C51610D74CF31321BBFEB5CFCA7D213C896
+D1B8E57EFC05695F2F73> |-
+/e <1C60D8A8C9B08A95B1F07368C45D8D2AF4BC97E4CB216B20786BB8409E5C
+B0892E60E7F0AD9AC8433678C58AAD59736BF9700A3AEB0B5352F4A898A5EEFB
+C72A64BFB45B917D9879BD0577DAB96A0E86BECAB5E8A8A051E5E40886D5A00C
+EC53E0A3265FC74195574846689BF9F38086985C2DD3223390D51155F707CE86
+59EC1C65A75BE9A0BA862DB1A00FF6A01FCED7E6> |-
+/f <1C60D8A8C9B08A956BA65798425CE9B0A78F07A04AF2F8524751F181F94C
+EF756ACD6AB92BD09462A05FB08A9160A0AB5267B62445F916DEFC1DAF3F1FB4
+B3761F71CBE3290960500C788D04CB45BB0A2825753AA6E46495F35A08389AAA
+C80F35ADADFB7ACE340FEC03C9E5F9A50A8AD731E7A553A32F387574697F9CAB
+2E100B6DD6E3525398F6> |-
+/g <1C60D8A8C9B7A73DB58EA28807584EB19BC6EA1448A12312E623B90358A1
+63CFC67672A34CC74B0AEAADF24229DF1CCAA1488AE3E348FE2ACD572EA487EC
+9D77FBB0710AB421B03DD5B8AE5519B5C269E9648E819E7ECE806EEF16A6618D
+07D9AAB350E57F26F5259E8FCF9E5C2D96BBEAD16502F9E7819E854042DDB2BC
+674C39681CC2E5224219582BC7B59BBAEF869C9DF91CA7770A97BAD53C3C3A99
+175BA8F0A5744B5969D3BC15831A95918F7C707E41F5D87B8DB2D57378BC9C29
+7DAE69E4BF438246E63F565B22D86CBE28DEF748262FB9FF82A88935451D6280
+A28F1AD964E6E476D5779321E42D3A86BE41122F1BED36C3DC47E1E01C225345
+98D0431873197ABE1C8EC03B4011E4B26D249635BDBABB8E5B69BE07AFA65F88
+EAF6> |-
+/m <1C60D8A8C9B08A940B724A74A01E176AC76C178E539FDA15CBEFB3251A61
+C8116B9FE351FF1BC83539595D23AE382CF3B7BD76D62DC94F39B27B55D161C2
+888F1D0802E5CF73898C0ACDCA15FB7A28AA1DFAA4097D26E5F1ED6CA3CF5043
+5DDF248924E60D22E0F7E352F621676508849260B5671A3BC8A3B68A0E5A236B
+21A2D545F7F03555DF313A266CEFB0FAC4D988447E218579B005BC3818325D6B
+E4238BE79A219C693AEEC947AC4494C76A2FABFB89C7C87C3BF2D966FC535B3B
+3741AD984B1F14E65DD80CEDA6556E93E5BCA78596D9E4AFF7E9C4C85DEC092B
+62781D6D09AD7F124D9201> |-
+/o <1C60D8A8C9B7A73DCEB07E09D16841D605E4F67059E6B258F546B80703E4
+CDAF20027B900118209D5372F965F2045D50C02A29110A048C891DEBA3210CDF
+C5CDE2309C0CDE0E4855E9F6D8954C4C68826A14AD2E4C6227A036D85D304D6A
+96FEAA92DEC3CD1B9F4AD57B5F1EBAB070FE911461A7D5B958F5> |-
+/endash <1C60D8A8C9B7A73DB9B60A0DBA4B5FB3A045D6B65F12EE5E3DC48D3
+43D8E> |-
+/.notdef <1C60D8A8C9B08A959E2F69652E8B8F> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLO+CMR10 /PBAAAA+CMR10 findfont ct_VMDictPut
+/YNDRLO+CMR10*1
+[47{/.notdef}rp /slash /zero /one /two /three /.notdef /five
+4{/.notdef}rp /colon 6{/.notdef}rp /A /.notdef /C 9{/.notdef}rp /M
+/N /.notdef /P 3{/.notdef}rp /T 12{/.notdef}rp /a 3{/.notdef}rp
+/e /f /g 5{/.notdef}rp /m /.notdef /o 11{/.notdef}rp
+/endash 132{/.notdef}rp]
+YNDRLO+CMR10 nf
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-11.6635 -385.261 mo
+(MAC1105/T3{Page2of10{Name:)
+[9.13578 7.19498 7.193 4.9813 4.9813 4.9813 4.98129 4.98131 7.19299 92.4629 8.30183 6.50757
+4.98131 4.98129 7.74393 8.30185 4.98129 6.36908 4.98129 8.30182 92.4629 7.47192 4.98132 8.29874
+4.4234 0 ]xsh
+.398 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+false sadj
+294.337 -383.866 mo
+456.337 -383.866 li
+@
+%ADOBeginSubsetFont: PBAAAA+CMR10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLO+CMR10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/parenleft <1C60D8A8C9B08A958B2129D6E9761120E2D623F206A8BB61D8ED
+90A20EE239C62172B553BFF416342D6CD99C95C515CA225C40039DBAF08CE4F0
+55B08F39C15D29C99EF3EDD066CCCEF8932365A3BB1620FA5F0BCE8AF21A5BDE
+C0FFD55FA45F247FC811007CB408F0DCDD3AE01E3246> |-
+/parenright <1C60D8A8C9B08A958B2129D6E9761120E2D623F206A8A207F03
+DEA8F466C0D4F860EDF515D421F89285FC2D8EC76F5E903EDE1B5CFFAEC5DEA9
+22C7FC4A51953A99A5FB1F96793348D816F60492670058F4DEA6D328AB20FBAD
+B3C1B57A79D8CCD13A3C6D068BAD5F09F347ED0C895> |-
+/period <1C60D8A8C9B08A9570810981675968F2C907C696DFE9BE69433F613
+9DF6C45B8165ACC43B6E0B309859F778ABCF0> |-
+/four <1C60D8A8C9B7A73DC579B9C1587087D4749982A674065FCDD01CF53F5
+4AF89DAF22339F0A467CE8D8CC25949B03A9DEFE86592098644AED5891ABD8D0
+71237FB9B66EF7648D767508B0BB1075A0AC676C770BFE6D0E818B53FD7884E4
+D8E6A983234A6E833EF72FF7FE587> |-
+/equal <1C60D8A8C9B08A946182837629008D945C50B3BD77B79680F3B07BDA
+6301D2521ADF665EADEA779B8650AC6CDB556621631497A3BE00C67036F6EB06
+05A36A2C0EE306396247E4A79F8EFAE500D78B59605F041F11> |-
+/F <1C60D8A8C9B08A95E211B68BD74B7CA2EA30EA4FC2444F1F126966AA7729
+7BA7EB9B6F06068DCAA13C02B3588F5A46379A5072E7E2DBF343C097B55CA4D5
+88C6753F362DD28478A1BC56804A66D1A6D1CB247FEE04B2647D343D14D14B66
+B993C73F534C4128A2626BB2404D5D4FD30D29B727A906D4DCB574AC37C31D5E
+5DAFB5704A4D0DA0711E1E> |-
+/H <1C60D8A8C9B08A9501CDAE1251A61DF6E231BC81B88E41105B4578E26F75
+33C91E98D9D9F0DC8C827F9E5FB445026E71B317BF6D603A04AAC81296A14D60
+4B877F27C9DD27B4DC2545831BD665E24D0613C48BC1EA147AE4885D7E3A573C
+86CB3AF0A8F296DC75447A42C47A8893EE38CD8E8C5A652E130762E1FBF4BEBD
+8D51BBDA5B97EC2473674DF8CAEF85D376E5C08D4D01F4F9C1FAD429BC789992
+9508B400F3B77D9DBC47B5D1AD91F72F12D2C72AEEEF7A9A888271CBABE24E> |-
+/S <1C60D8A8C9B08A95C5897169EED99899F86A6DCF3CD291B001131D3BCB45
+BF71748507542417352D5B30F63C60EB90DCF55005F88E95175B21D3219CD9E9
+2E89E417B177D285600845553F66626D2225552D23A7697637BDCEEECAEA18AB
+42A896E96FF5B3536CC368A5F7504B6C75D962A4B5F9534F79AC78DC99848461
+42257A40DE257430C92806EBA73FF7D93DF0A6C207299E2D17F4071F9096D016
+163F4D3EC1889ADA266D3682F2D99904573A5022A10E61069737F2D55F919F95
+A33DB6DD2667321E4727855B58DBF4B1E5A294928E6CEABFBD34F296C1B758> |-
+/c <1C60D8A8C9B08A95B1F07368C45D8D2AF4BC563DEDE799FE18B66F38FD9D
+86FB331DD3DB6A5ADDE092231D11965313897214CFA9548A44D6E8F1A5823DDB
+10C1E43AD77B684F0880415DCDCBB7468071C506E9CCDDF7025FEBCA45C23CBE
+0A175026D7E2CD65B070B0D65E2A89308219FAF9747E02015EE5DEFBD16624AC
+037BD0C160D02AA648C898853C8C0F> |-
+/d <1C60D8A8C9B08A95C5897169EED96D33CB6A9013DDE3D04C2845E595598F
+3E2E6D79295DF7CC9B6C00D2CF2AC2502697856E5474C945441376692CB09ED9
+25CE9D4F710C7DE089B5E658450CEECC611DD1F25787624443E710373775DB0D
+7A6478B3FD4F82DF4FC109429D4EADCED1BD77A35BF25A1C1E584B0EB23CE621
+6847A21EE88B35D72221C7F9F0705E61C9F9C0A224456A04D3E81DE0BD98422F
+FA8C7335713899937F5FFEC7771BB8FDAEE53DE3E6> |-
+/h <1C60D8A8C9B08A95C5897169EED9664BED359D179BDDBB0B44F78A354068
+F188259C421AB0565D2C93368C7FE6E0A9F40BB196D1F23D06A9B4099431512B
+C136412B8071F881A48FA8A97D03ACD06EBB8221F2FCB171D9A905549A8F7881
+2735FA48F2EC00ACCEB309920B412B3F60D0173EF224E4CB3F5C1DAD9CC6147F
+9ADED8EC6C9533B7B1AABCF5D1E9B7F36A2D4B8D2B26EAE8EA> |-
+/i <1C60D8A8C9B08A9570810981675968AD25F24D2B3EAE33A4AEDADBE9B65D
+A53E9F2E54B16133284CA9914BED3880C793207FBDC7926300AD07E6E54407B5
+1EA082FB5EE3816A6A23A8296A947037E4E873086619D7E86B5A60AFA576E554
+D14C9B74D403098ADE85F71880A3E75D7FC1> |-
+/n <1C60D8A8C9B08A95C5897169EED9664BED359D179BD38846B55E34D4CAA6
+E85E9CF3F20D5FF6B35F1C9AAE2A542B7B24E087B6004A4C7219997095CC0DD0
+7A15DB83B5FEAD13F209441FFD364AD3DBF6E16129F3599BACA005A523490ABC
+41E4DF320ACE384037EE1D352E3FAD8A9E2CECBD75A999F7B655F4FFBFAC6FFF
+84029A8DF710DBB0D7CD4C1D20367E79BC4E3121199FA9593C876B29EA793F10
+2A1E36BE8056D0377A> |-
+/p <1C60D8A8C9B08A95C5897169EED91609D9E4D5F91353B4B61FEC4EAC5FAD
+7B5032144CF9ADF0F974C4F1789F7935ECC14F06F084A964A5CA17285CA0C9EC
+1B8F57A0E66AEAF75BA11AE734E6416585ED4DB12A3372EA2BA1BABC0DE7BE87
+584CD6EA8819CE99CB18F04E8ECD619D7E02CDE60A0AA18597DE62AF13ABCC5A
+5F1D59EBFBBEF560144EF0DCE1B387B4BC40F158468D6A4DE477659B50190482
+6F081FC4942E5187D9F03F6D1BD471F55D6300> |-
+/q <1C60D8A8C9B08A95D222871B45C8677AD60861C3F92152D679EC046FD508
+04EE7440261F7F760EFE5BDA37735333B634AEF0E39D128EC81BD50CEED93A00
+645B5D6515E247CEC7B0C61191F67893C528A900762C59FAEA845D61ACA5F7E7
+B106031460E4734AA4EE85618EEC80B1ED1E754561578DABED479BE37358B263
+04EF9BF65844BFE482C31643A7466E43F6E32A0E02E6EBB6652EB71BB9780CA6
+2F7BC7305363> |-
+/r <1C60D8A8C9B08A9584DCB847BA986212E50A0E258C2648145E7BCFAC2BA8
+6C36E84B654FABD35F6BE558D4B54676EA44C57F6EF668BC4866822048422FD6
+D8B608EB2C1C67EC3EE3CEBDD94E9A9214F99F9DA8EE2F6900EB47053AC763EE
+DABCA0360701D8CB383B9ECCD7B848D18CFB88761A167471DE407F7BED4BC50B
+779C4D57BF133C3E4777AA4605171C6D> |-
+/s <1C60D8A8C9B08A9586D4F7B21AA9B0967A13D9D7A42FE5E3505E2F3EE7CA
+FF99F258F00E5A08E889C3CC5D8ACF7164CD2AC0013AEF91C534D4ACEB36DB05
+CE0E820904C7EB6E6797C2D5FB5E96476FD3694427C3F770022BFE939EC57571
+FAC1F965E0A7F32B36C86522DA3AFB3A309E4B5D72F0E56F1BEB5C7254CECC22
+9B1219F95DA80187F2FFAF15E03AF5B396BE650B53989F1A64B4AA9655D1019B
+496166D38FC8961ACDA2D0B1533422796A114C02DCAA98A8558155EE2C970442
+944A032E8A6A4004C15A48F9176AE45E44068C23BC> |-
+/t <1C60D8A8C9B08A958B2129D6E9766AD6B3247B9CBDFB0724765D43ED23A7
+B2BC7B24077C209594776C48799589E3DF7269407A6893D4C106057122D99E3F
+649ACAFBE1812EEAA6C4DCDDD716BEB7694626BFFCAE715C15EF0FD8CE9F6FE4
+E96B03> |-
+/u <1C60D8A8C9B08A95C5897169EED96D33CB6A8CCD6F539BADC574F30FA019
+2FAAA0351E8C93175F4B6BE4D2DCA8A13E4F01BEC5788441B5C71C1247369B6B
+73137454B1C207EA4F43D533FE87512BAD8DD4F3DBBECD9A7A1CE3F33A4D3F31
+6952FDB339B4B6A937009D6EC9821D8553981B7D8AABC3E750369071> |-
+/v <1C60D8A8C9B08A95D222871B45C81C126204E8A3F3EFC2EBF937B1E5F2B8
+737EDCCFF78DB8693FA0E7B559CFAC0A233112105FC1A8807ADD3013D4AE86C4
+38318F1223CADD606642DF7E9A8EE9BE743E975DA759D856D52F7E927FE33606
+3979ED38AB2E1EA4CB4F371A1EB04E6C5B864C9DB5271435AB2DE7D9DE15A6B1
+D9E3FD555F015DADE467> |-
+/x <1C60D8A8C9B08A95D222871B45C8170346D4B3692E8D5307651DE3271DD6
+AF0FFCDE284DD9CDD3B987BD9A4951E635C7A5CDCF53A699D8D2BA39BF571FED
+C61B4760FA01C102B3CF6C44B24A57107DFFEFB711E00B7E6B8A7F332F9AC2C5
+3243312E3CD55C94054BCA0B5D37362E138F5DD97019783B5271FD96258D5354
+389532FB5D3FC50CB007DF880768FCF0AAEC6D6F5D8AB1559D6270DF0761EAD0
+57A9F39E9A718AA16D8D8ECA90D61565C41A9B86CA057EC652FEE1927FFE969C
+A046D06A10E75C83320EEEAB290370B870EF0E26D64C8EE9F9FD2B5549> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLO+CMR10 /Encoding get
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 46 /period put
+dup 52 /four put
+dup 61 /equal put
+dup 70 /F put
+dup 72 /H put
+dup 83 /S put
+dup 99 /c put
+dup 100 /d put
+dup 104 /h put
+dup 105 /i put
+dup 110 /n put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+pop
+%ADOEndSubsetFont
+/YNDRLO+CMR10*1
+[40{/.notdef}rp /parenleft /parenright 4{/.notdef}rp /period /slash /zero /one
+/two /three /four /five 4{/.notdef}rp /colon 2{/.notdef}rp /equal
+3{/.notdef}rp /A /.notdef /C 2{/.notdef}rp /F /.notdef /H
+4{/.notdef}rp /M /N /.notdef /P 2{/.notdef}rp /S /T
+12{/.notdef}rp /a /.notdef /c /d /e /f /g
+/h /i 3{/.notdef}rp /m /n /o /p /q
+/r /s /t /u /v /.notdef /x 2{/.notdef}rp
+/endash 132{/.notdef}rp]
+YNDRLO+CMR10 nf
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-45.0216 -355.373 mo
+(\()sh
+%ADOBeginSubsetFont: HIBBAA+CMR9 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /HIBBAA+CMR9 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988-1992 Blue Sky Research and Y&Y, Inc. http://www.YandY.com) def
+/Weight (Medium) def
+/ItalicAngle 0 def
+/BaseFontName (CMR9) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 41 /parenright put
+dup 53 /five put
+def
+/UniqueID 5000792 def
+/FontBBox {-259 -250 1036 969} def
+end
+systemdict begin
+dup /Private
+13 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-22 -0 683 705 431 448 666 677] def
+/OtherBlues [-206 -194] def
+/BlueScale 0.04379 def
+/StdHW [31] def
+/StdVW [74] def
+/StemSnapH [25 31] def
+/StemSnapV [74 90] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+3 dict dup begin
+/parenright <1C60D8A8C9B08A9580C822583BC370487009D181CBA691147F6
+F8E8C42F265A062451575BEC72F3C54B75B3042D03FE51288E9DEA2DB7D89B60
+C5AB212AD0328C2FED2452C8D71307D8BEB902AB741F57EB271E260A8DDAB60A
+642C0AB4B9BA1A462E698D6BDE5146B5F8358CAA639> |-
+/five <1C60D8A8C9B08A95D419B460E02949711E720A4077D26DD7A080E00D4
+DBD09050278296788C7EDD2BB214F6B140ABE36647DFD9317DC0E68F3DCAC8F3
+C4A02FDA88653A7AA275130DBF9CCDCED17C6CD1BAC4223BC20B6E6A4BC55A02
+19CE2C9017E92992CD114F37B3979CA159210092C7217E21A4267991C1FC8766
+AB20FE76E82CA3859AFBF2FC009F9854E3EA6E91732A71D79AB96F35873CA1AF
+7197AC348F4E13D54680F47DDBF4022C7EF240A091505B941511698D8640F179
+ED11A895385> |-
+/.notdef <1C60D8A8C9B08A9599C1D3CEECCC8D> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLP+CMR9 /HIBBAA+CMR9 findfont ct_VMDictPut
+/YNDRLP+CMR9*1
+[41{/.notdef}rp /parenright 11{/.notdef}rp /five 202{/.notdef}rp]
+YNDRLP+CMR9 nf
+YNDRLP+CMR9*1 [8.9664 0 0 -8.9664 0 0 ]msf
+-41.1472 -355.373 mo
+(5)sh
+%ADOBeginSubsetFont: QJJAAA+CMR6 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /QJJAAA+CMR6 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1992 Blue Sky Research and Y&Y, Inc. http://www.YandY.com) def
+/Weight (Medium) def
+/ItalicAngle 0 def
+/BaseFontName (CMR6) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 112 /p put
+dup 115 /s put
+dup 116 /t put
+def
+/UniqueID 5000789 def
+/FontBBox {-307 -250 1193 968} def
+end
+systemdict begin
+dup /Private
+13 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-21 -0 683 704 431 446 665 675] def
+/OtherBlues [-205 -194] def
+/BlueScale 0.04379 def
+/StdHW [39] def
+/StdVW [83] def
+/StemSnapH [32 39] def
+/StemSnapV [83 100] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+4 dict dup begin
+/p <1C60D8A8C9B08A944682CDB2CEB55A74B6ED00777DC807209D0FFA0F869D
+6A57A217266FA8EF2564481C3E7CB2C48224354A458E1061E0810A25D89C2DD3
+B76575D29E7AA275B71A4644F8366F4F5E4496A5FDD162F3813309F64034DB41
+AFC075EC8248C374B358F6ED31862CE7C114B35C65AB41B74A5C305863EFAFE2
+D34DF13F11FFA00905934B7F8EFF90BFD605> |-
+/s <1C60D8A8C9B08A95A2C8A0F249798E017217C11BB482AB75DBF2547F4990
+46EB1BEE341D075C819108E9509FC0B6F599339E670179644E1C3729C9A6F301
+1FE7AF9216C826E32D7FA5858F08935B66A883749096602F0F862769D84D8127
+339D8A1F215B761BCCE0272FD6C048C8CF4B4C83BE04767F22F78F55D199717A
+523DF83BF6568D513EB93AB72DDEEEBEE3968FF97DD590A320ACDD6B2FDAA566
+BEA97E466532BBE8712C4DFBED44802754D5B8FE96A435EB> |-
+/t <1C60D8A8C9B08A95A0A3AB1E3D9B4D40DCAD754562EF6C6D3DEF6F43FBCB
+F6712F42A082EF4530994D14B40572A79BA447985100CE00F056010BB6BC6CE7
+615E601E4E14F9020F0831574FCAA6E6991EDEA062A92D934D70C1216BF921> |-
+/.notdef <1C60D8A8C9B08A95BE2B761DD6BD68> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLQ+CMR6 /QJJAAA+CMR6 findfont ct_VMDictPut
+/YNDRLQ+CMR6*1
+[112{/.notdef}rp /p 2{/.notdef}rp /s /t 139{/.notdef}rp]
+YNDRLQ+CMR6 nf
+YNDRLQ+CMR6*1 [5.9776 0 0 -5.9776 0 0 ]msf
+-36.5394 -359.68 mo
+(pts)
+[4.04142 2.87584 0 ]xsh
+YNDRLP+CMR9*1 [8.9664 0 0 -8.9664 0 0 ]msf
+-26.206 -355.373 mo
+(\))sh
+%ADOBeginSubsetFont: GFNBAA+CMBX10 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /GFNBAA+CMBX10 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1994 Blue Sky Research and Y&Y, Inc. http://www.YandY.com) def
+/Weight (Bold) def
+/ItalicAngle 0 def
+/BaseFontName (CMBX10) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 52 /four put
+def
+/UniqueID 5000768 def
+/FontBBox {-301 -250 1164 946} def
+end
+systemdict begin
+dup /Private
+14 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-11 -0 686 697 444 453 655 676] def
+/OtherBlues [-201 -194] def
+/BlueScale 0.04379 def
+/StdHW [47] def
+/StdVW [114] def
+/StemSnapH [40 47] def
+/StemSnapV [114 142] def
+/ForceBold true def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+3 dict dup begin
+/period <1C60D8A8C9B08A9560D4C2F3A74D92838E83B7DC14B89478B799496
+0CFDC6D2144A34A20CA36052335682902BE7739DD> |-
+/four <1C60D8A8C9B7FCB6AF8364F0605C451CEEA3B4E1B916196AB7B08943E
+0CF71744315D573147B01821B98A6E1D4D4D879C9FFD38F4E4551A3DC3091068
+6735A4AD4544FACE2F5F9D09C6BD2006C051140924F82F9CA156066831D37EFC
+60047D0193DA594CCE1> |-
+/.notdef <1C60D8A8C9B08A95899606B6B060A7> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLR+CMBX10 /GFNBAA+CMBX10 findfont ct_VMDictPut
+/YNDRLR+CMBX10*1
+[46{/.notdef}rp /period 5{/.notdef}rp /four 203{/.notdef}rp]
+YNDRLR+CMBX10 nf
+YNDRLR+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-5.93501 -355.373 mo
+(4.)
+[5.72846 0 ]xsh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+6.7952 -355.373 mo
+(Findtheequationofthequadraticfunction)
+[6.50558 2.7696 5.5392 9.44853 3.87553 5.53921 8.33272 4.4234 5.26024 5.53922 4.98129 3.87552
+2.76962 4.98129 9.44852 4.98131 6.95787 3.87553 5.5392 8.33272 5.26025 5.53919 4.98131 5.5392
+3.90532 4.98131 3.87552 2.76961 8.33272 3.04855 5.53922 5.53922 4.42337 3.87552 2.76962 4.98129
+0 ]xsh
+%ADOBeginSubsetFont: HJCBAA+CMMI10 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /HJCBAA+CMMI10 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1996 Blue Sky Research and Y&Y, Inc. (978) 371-3286) def
+/Weight (Medium) def
+/ItalicAngle -14.04 def
+/BaseFontName (CMMI10) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+dup 80 /P put
+dup 86 /V put
+dup 102 /f put
+dup 120 /x put
+dup 121 /y put
+def
+/UniqueID 5087385 def
+/FontBBox {-32 -250 1048 750} def
+end
+systemdict begin
+dup /Private
+12 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-22 -0 683 705 431 442 453 466] def
+/OtherBlues [-205 -194] def
+/BlueScale 0.04379 def
+/StdHW [31] def
+/StdVW [72] def
+/StemSnapH [25 31] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+7 dict dup begin
+/comma <1C60D8A8C9B08A9570810981675918D0BCF1CD202F5F15202B7A6E1C
+EF0947ED02AAA4C366CA78E08C39B6DD0700901548AC0500952501F57D43D699
+1493A7332E9D6FB3B92D3B17F7AFEDFB43B1F0997B51EC481BBA2E83EB27> |-
+/P <1C60D8A8C9B677ECB1F5884EF202194D27AFDA20C9C5AF9717AEDDA8FACC
+FA5CE5F06E7E735F3308B4CA613864C8BB9E998C2D16EBC620C6B43596E1DD40
+839888CA51D52E708072E18AA08B28E3CB1E6EF21FAD99F857CC70EE52D6669F
+D4FEF6D378C3644D9B3C83FB9CAAC301898C0568C7EDDC149173AA0D66326455
+24A8E317AEDEA6E137E747B687221C612ED78EEB9D5BC26FBD4832935A8A744A
+79B07DF310B6BFAA137B534BCCDB0286BC5B1A9F8DB00E7C57> |-
+/V <1C60D8A8C9B08A95FF8CEA8AF5E081C6F02740DACAFFE5A2787935AF2B67
+DE2E7EB4064F400583DCFFCB975A0A5B856DE1372CA242F7CED7D047752AAC26
+BA220E55F1F7E54D0A19D02128B276B5C86A93B57D1C6EA6F9A3F8A0CE56B7E7
+A455AEC2F7481AED5044B03BCB5E7742AE418C4A710ADD0B17D2FD077229F311
+2BD0466A5DE205AFD8EC3FD4485F469F794B22118D2D39A7CCBCAA5AC4DA3AD7
+CDB1E59327867A> |-
+/f <1C60D8A8C9B08A95A31CD7D9F217DCBA6071B8E0D5846125EF4CB4EF23CC
+4DD09E878CE196EC9B9F1F54A677ADB5C5E9ACDFCDD60FBB7D164F70307F6FF3
+E6CF0DB7E2074C1F7921AAD73B6B148990BE29E190748D2E55F76C8DD519464C
+4DCA4CE0036FE5445919C3CF6FF6DCAE21D932617F2FE28250D9FD929A5C31EC
+01CDB055499E20A4E6ACC9CEE6E4FD03E9282ED811C39CA628CE996E2370CF0C
+ADC74D2C4D895E1A9293BFD21891AEF1BAE4A5D07F6F5FCCAD81E4752A24937F
+1ABC3CF8652B> |-
+/x <1C60D8A8C9B08A95C3B1459DC8650F9F96183FC46268F5BDA744B05C84F8
+C7E5FE6BFCA9D4C8BD3488080E8FC96F34EA177DCAE190D27F37102D2F45514A
+ECF6E4A3B2E6F401810D0AF13E4BDFDB8118476E04C9DD93F8884F46C9ABEE13
+C8E7992449902F6BC3D518B2A70293976C8BCE67ED913D975C52E884BF7F46CE
+8DF8170D79262260A6CB5A6A088C0A964E0271DA63944ABA9C96D1AA58CB590F
+97DC9C8372606676C2CA18B1A9303EBF11B510FAB8A33E9B530D274E48DD09EE
+8829EC16181BBC16C4E81343ACB5386F22A9C0CA2C23959102E833> |-
+/y <1C60D8A8C9B08A95A3A690DEE11C2ACFF7516D4A7CDA884FB3B130648C63
+2F41B68B5E071E6BAD692658125A4CE9A4427A55054BF5DABFF855AF9D186215
+1F50AD5D2EE36E064C9718B8694EF83525324184D7DD07A10B9FD203C707D849
+3E926469CD1C36E94D5785557A2D95B556774E51CEFBAE2CC8AB735FFF293AFE
+FA32B8D1FD5C52EC860AA6EC20816B24BD1EB69FE8581708322D6F09A08B3182
+91EF57EAE554A00C60D585B786E53371A6D3FB2D8729C3F2C51DB65ABF8CA421
+EEB103AED2CB924D829D66429CF6664CDEAFEEC4AD07C95E7FE8BCAB5D2A1AD6
+731779D5> |-
+/.notdef <1C60D8A8C9B08A959E2F69652E8B8F> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLS+CMMI10 /HJCBAA+CMMI10 findfont ct_VMDictPut
+/YNDRLS+CMMI10*1
+[59{/.notdef}rp /comma 20{/.notdef}rp /P 5{/.notdef}rp /V 15{/.notdef}rp /f
+17{/.notdef}rp /x /y 134{/.notdef}rp]
+YNDRLS+CMMI10 nf
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+204.525 -355.373 mo
+(y)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+213.515 -355.373 mo
+(=)sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+225.012 -355.373 mo
+(f)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+230.962 -355.373 mo
+(\()sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+234.836 -355.373 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+240.53 -355.373 mo
+(\)thathasvertexat)
+[7.78485 3.87552 5.53922 4.98129 7.78485 5.53922 4.98129 7.83456 4.98328 4.4234 3.90533 3.87552
+4.4234 9.16959 4.98129 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+332.39 -355.373 mo
+(V)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+340.416 -355.373 mo
+(\(2)
+[3.87552 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+349.272 -355.373 mo
+(;)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+353.699 -355.373 mo
+(0\)andpassingthrough)
+[4.98129 7.78485 4.98132 5.53918 9.44852 5.53922 4.98129 3.92523 3.92526 2.76959 5.53918 8.89063
+3.87555 5.53918 3.90533 4.98132 5.53918 4.98132 0 ]xsh
+6.79319 -343.418 mo
+(thepoint)
+[3.87553 5.53921 7.74393 5.81616 4.9813 2.7696 5.26225 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+49.9651 -343.418 mo
+(P)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+57.7449 -343.418 mo
+(\(4)
+[3.87553 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+66.6007 -343.418 mo
+(;)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+71.0281 -343.418 mo
+(3\).\(Hint:Startthestandardformforaquadraticfunction.\))
+[4.98129 3.87553 7.19698 3.87553 7.47194 2.76961 5.26224 3.87553 7.19698 5.5392 3.87553 4.98129
+3.90532 7.19608 3.87552 5.53922 7.74393 3.92523 3.87552 4.98129 5.53922 5.53922 4.98129 3.9053
+8.85974 3.04855 4.98129 3.90533 11.6193 3.04855 4.98132 7.22583 8.30182 5.26025 5.53922 4.98129
+5.53922 3.9053 4.98132 3.87552 2.76962 7.7439 3.04858 5.53918 5.53918 4.4234 3.87555 2.76959
+4.98129 5.53922 2.76959 0 ]xsh
+31.6997 -311.239 mo
+(Ans:)
+[7.47195 5.53921 3.92523 0 ]xsh
+61.3685 -329.769 mo
+212.143 -329.769 li
+@
+61.5675 -301.475 mo
+61.5675 -329.769 li
+@
+211.943 -301.475 mo
+211.943 -329.769 li
+@
+61.3685 -301.475 mo
+212.143 -301.475 li
+@
+%ADOBeginSubsetFont: PBAAAA+CMR10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLO+CMR10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/plus <1C60D8A8C9B08A9461828376290042B3B0012119E49A5F8A40FFB07EC
+16079327C8839C8F2280897EA08CCF42D3B4E2B36A495896A102B0E0B676D7CD
+E615B4B502BC24C313F43E124C5C3EF4728FA76AB60F029D0136D86C00EF66A5
+8511B752E> |-
+/comma <1C60D8A8C9B08A9570810981675918D0EB69F4849D276580C082D099
+7802A927AAA2375534E06DEEACA66ED813A5B192A7FE5DA703C37E60926BB724
+44209BF2BEF896DBE7EE9ABE82F3CFBC974BB345C7D152C7> |-
+/hyphen <1C60D8A8C9B08A959E2F69652E8B76AC2AC5B4F1FA8662A86AEED57
+846929C2FBC07360B> |-
+/eight <1C60D8A8C9B7A73D3B2B97F1414E4E14F801A059892814FA42E4E2C8
+0EFDA659D9BB77F349463F4A00D8ED33975855544E68ADA715C46B48E5214EC1
+478071E2CA54580909701967B928DD6D384659775DC9744471AF4209ABE86CCF
+54E84B03EB8981900A33E230A5E176029A4F3431D5460DA2A76659C526F48B26
+52E37466C39C5889089BE6A19F3137FC6D1B485B848C7736C3557EF97475E9CA
+989D1C5C068CA476E0F43FE30877AB721411F0A7DBA400> |-
+/U <1C60D8A8C9B08A9501CDAE1251A6E3AF1199B24D30F25809B39A0DD6474A
+CF1BFDB89F5985BBB0F2E5FE7296314FDA462BECDBDEA31B3750001975D37A8B
+F31F224CAB5093B8997B856DAE5F9007E1497BEED45CA8AC033A65F773653762
+77BFCDF39A2D8F1BC8E5626BEEEF5D670E87E32F25C0530E88A4E2B9AD6D8333
+3A6C173F8B22714E74A224AD610C2B1EAB> |-
+/fi <1C60D8A8C9B08A95C5897169EED9664BED3581948373A452C15E4C3B51F
+55A9DC6A0C100710D56E7C6F019B9B4E72A04A6011AD7DCB16FE5DCCC03F7498
+0027ED133122486B164CF04FA5471382DF043096D0A8C2D8205379F1D24FA530
+3D478366008D43EE4D8D7A68A3EF7ABE85450F42207223B0818C0B63E6EEFEFC
+572FFE621D97F1837407CCDA5F53C193FFC91FB835409D6099928BA194B90036
+A423E9DD2BBD7C0D4FF99AA83190CADC86BE5FBB7034A3CD2B345BB396A3CA47
+FF656DE46D50935C1130BD470FDB47CF34C2317460A0C7396> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLO+CMR10 /Encoding get
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 56 /eight put
+dup 85 /U put
+dup 175 /fi put
+pop
+%ADOEndSubsetFont
+/YNDRLO+CMR10*1
+[40{/.notdef}rp /parenleft /parenright /.notdef /plus /comma /hyphen /period
+/slash /zero /one /two /three /four /five 2{/.notdef}rp
+/eight /.notdef /colon 2{/.notdef}rp /equal 3{/.notdef}rp /A /.notdef
+/C 2{/.notdef}rp /F /.notdef /H 4{/.notdef}rp /M /N
+/.notdef /P 2{/.notdef}rp /S /T /U 11{/.notdef}rp /a
+/.notdef /c /d /e /f /g /h /i
+3{/.notdef}rp /m /n /o /p /q /r /s
+/t /u /v /.notdef /x 2{/.notdef}rp /endash 51{/.notdef}rp
+/fi 80{/.notdef}rp]
+YNDRLO+CMR10 nf
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-45.0216 -191.351 mo
+(\()sh
+YNDRLP+CMR9*1 [8.9664 0 0 -8.9664 0 0 ]msf
+-41.1472 -191.351 mo
+(5)sh
+YNDRLQ+CMR6*1 [5.9776 0 0 -5.9776 0 0 ]msf
+-36.5394 -195.658 mo
+(pts)
+[4.04142 2.87584 0 ]xsh
+YNDRLP+CMR9*1 [8.9664 0 0 -8.9664 0 0 ]msf
+-26.206 -191.351 mo
+(\))sh
+%ADOBeginSubsetFont: GFNBAA+CMBX10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLR+CMBX10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/five <1C60D8A8C9B7FCB6A4EC6CDC845AF08DBED09EA9C7F33182AFC703011
+60666AEA164958808F9011F6FA9DB2F58BA8568ED7327DA5423B9D702A196C72
+8AA107A4AB8C8EACBE3017CDF3A5211CECD1BE830110553F9F08F4EF9E634B24
+219505B139C4E7F16310FDAE20ED23F1564E52FDBF0312361108AA486EDC0FD0
+6827CA1BEFDBE2B56A02A9426FF43266AC2E214D839A31D77D0DB548899751FF
+8FFFB115778B8280430E41E54537FDC801CD3CA21011131C53199DA913D184CD
+2656A0A0911E6616EE78AC5CCCF1EF48CFA> |-
+/a <1C60D8A8C9B08A95C60527548E754D765DB4EDA6BA0D2CC6D8A620394D95
+5731400D0093175DD4FDCB6F936DAB2E93BD9C1B54BF99F619E92F88F8093B57
+6575F38778E5971C238BB03705C8902A6FCFED1FF202619A2D8A4C3FD818942E
+E7E0400EE37C1268C755A54355454E010823DC11303C9CDCFFF1370DF47DDE8E
+0505D81ACB493683AAFD9A5B8B94F66FF9ECA66884B26F31C72D900D51753830
+4DA83D95E97AC104F2FDC53254E575E01E9C7E8025E9> |-
+/e <1C60D8A8C9B08A95D1DE8AA71D3914AC9DDC5BFDDE55301EE17DAE184B08
+E53C36FBF9A44FDF3309DBE08895DBFECCF103737D7326528346FD01CD1D9FC3
+874638E8C50ADE3B494897353EB3188B512405DD1BA5DA59E8C179230F7C8D15
+AFCEA2228DAC03C77D614B36A41126CE831B41CDF160A67B175BB36C52353A72
+5460F4256C> |-
+/f <1C60D8A8C9B08A95959A8F784B7EF0775E015DD20DEA1213AD0E07AF4C09
+CE165F97A542F1816A5AC50A3C909AAD1BC3E7C3F642FEBC0CECFA1D309AFF8D
+13A6E13D72E8A154D7B3CD36A60FD1AE6F9C242B1780C55702CDA8788486BCF4
+B3081800F3610659D71EE1030C59AFB6C99C8518A3513B1EEAFB312E1D76B804
+BF82> |-
+/l <1C60D8A8C9B08A9560D4C2F3A74D92CE39CD89050C421F6EB031E3EDE051
+2AA4AD5B81E17A938D0422CF87295A2035937494C11C32195EF4AB3FD58FD45B
+46FD4E5EE0FC3A> |-
+/m <1C60D8A8C9B08A943819E9A7E2C5069B3F1B2D03CD1524D83A2D258C3F82
+7FDF54BB18F721FE3F454FAABC11D7CA89C4C19C11B5C30D173E79137EC84AC2
+77B998A334D7BA85C6B96AA4B0F02CC2BED450B3A709B0F96F78B6CE241D5BFA
+AC403F83855B7A94329ECB40DA8F31599AFB6EF8B71B13B5AB4C664C4C065A0E
+E78334BEF0A5D4AB7E30F69B04B4E35F289A7CE142CE71AF2C96F59A109E30BF
+D7494BECBB0A4A078F86EB3A84A14D516A64047A3607B48A7DE80EA48BF4C45B
+F5BC9C74E2CCBE70D6D270A69F1E0B7D776846F978> |-
+/o <1C60D8A8C9B7FCB6A15C803B3B972EE31F5A721ABF9B8490D1BCABFAF507
+3D6D0835AA64493F9EC5B8BAE86BFF5C8028599ED438B3807899BF98EB3DF2EE
+9BBE5DC52FDB77ACA45EA052A40521B13F529CBBBB8B40F192297C658BE1CF97
+9B5618AA4355B6A77C9FC09641> |-
+/r <1C60D8A8C9B08A95A5BEE1199161ADD44E1E8B27A5C75D09130CF9546F37
+4B2A22381A06BD734F2C4BF093B03F9AF2D0D4C8BE8AA6899632B1BDCEA5F8FA
+27D0647BB27FC7927912A6761C3F8A51172D73B92082F06EFA277243DBD96EE1
+6421DB7B86390678EAD31E9D8E521BD186BAE7A8A68851384DC5E4933D7D1C5E
+E5A527356EDB77> |-
+/t <1C60D8A8C9B08A95B289C730516FE0D4538DFB1DC5F03AB2A5BEF8745C1E
+35FCB761515E409A6F65039A0D58B91172FF5C95F2480FE3881FAA4AD06F5183
+F1B973B251F977BA472832041222D1E0F2231105C2CDDEEF4D7697B4581717> |-
+/u <1C60D8A8C9B08A95E5CBCB515510AF055BEAA5A885DDAB81EBFFFCEF09D0
+4F66877D2C2F3DC2FF20129B503D0259EFE57E291A13CFF6B1511568438D4A20
+297E1247987321757C81667B7BC4DB2CD1ED658E5F8864225BE2E87B909D3E7C
+4B6F1CABF222FF59DF64FD0A1246441792DB31FF90BD769AB08F5CF519DB0C> |-
+/v <1C60D8A8C9B08A95F1118A977C624E83CF27678167D409FB9CBB2CD28A75
+267A2384DA90A49D89E5BF350EA89EC55761E77C6CD88C98506090A75A746C46
+9A927AA468E2A4D26BAFA4A508A54BA0F40FF721C9C2716F5A4628037B04E9B7
+042CBF20C913B0AE56899A0AC9D01020E32C0360762279F9E0CB> |-
+/x <1C60D8A8C9B08A95F1118A977C6242CC6F5E327BF4FA5D5A96003A353B9F
+5194FC29E209B0E58D492B32361BA463B6BF5C8F5713114044F381A33FC053B0
+4264D2166B00A0D46B0483E7D71E6B2BF037C36A33F31F6939D5141C37793F10
+64A0F374AFDFD9C87199B35E9C7A6009C599A58421D97E6DEA9C4D9690F018C5
+EE3E53343C76D3E513788DA12001E489EB7FF420036E340D26978DF0E5DDDF42
+F55B791009CB89C0F4FDC246D837796B093D849043F6C168FB> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLR+CMBX10 /Encoding get
+dup 53 /five put
+dup 97 /a put
+dup 101 /e put
+dup 102 /f put
+dup 108 /l put
+dup 109 /m put
+dup 111 /o put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+pop
+%ADOEndSubsetFont
+/YNDRLR+CMBX10*1
+[46{/.notdef}rp /period 5{/.notdef}rp /four /five 43{/.notdef}rp /a 3{/.notdef}rp
+/e /f 5{/.notdef}rp /l /m /.notdef /o 2{/.notdef}rp
+/r /.notdef /t /u /v /.notdef /x 135{/.notdef}rp]
+YNDRLR+CMBX10 nf
+YNDRLR+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-5.93501 -191.351 mo
+(5.)
+[5.72846 0 ]xsh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+6.7952 -191.351 mo
+(Usethe)
+[7.47195 3.92524 13.1088 3.87552 5.53921 0 ]xsh
+YNDRLR+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+53.8336 -191.351 mo
+(vertexformula)
+[5.72943 5.25023 4.72226 4.45334 5.25023 16.0358 3.49684 5.72847 4.72226 9.22629 6.36618 3.17807
+0 ]xsh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+142.254 -191.351 mo
+(to\257ndthe)
+[3.87553 13.6667 5.5392 5.5392 14.2246 3.87552 5.53922 0 ]xsh
+%ADOBeginSubsetFont: HJCBAA+CMMI10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLS+CMMI10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/h <1C60D8A8C9B08A95FDA51623F05A9A2A6A39B89F3D1AEC8E6882E4D019E1
+EE3223B66924A1F490116934BD651EEDE67679700979054D4F9C056A7A822424
+FD7D9B8BB4EF44E21D821C9BC2DC1CA0EA5B2FD8AAD4BBE7D9D6E0B70C0C2F4F
+87945E636760D0AD8DADF1CA59165D8797B5050DDD7E7BA968915EF5A1AA319C
+F3912D16DA7D42B75F1FBCDDF88B5B6529D3064AB3E881A082F8DB91528CD457
+5C8DF1CDC6067EB5AA702E24D2E9FCAFAC4CC2CE3EEF0A86DB41A080FC8BF41B
+36A612E9D38EE5FE8C1F6E730D033DB10D1CE4BD13F1D549CC26> |-
+/k <1C60D8A8C9B08A950870E36747CCD2F069BAB4078E293FC46118DBB0FF50
+21FD267E305A93E3B9EEC42C57CCDC98E9085508A0279B5E924DC8D8249FB392
+C042269C59395DE18C56A360550D8C0ED9C3AFC2FDA4AE58AD909C542F1D56B1
+61C5179601DBF5C94444DD0B9F055BE088FB6B642BE14831A86C5BEEF0E256B3
+9D4AC46C4ED9DF4A354293CDCB8A1813369714C569D8175330F277A54A760D07
+A53A3C00B10B1764A5E232EA1C68F5C304B41316F75BD759DC633B0BA29C870B
+363D372EA12A78A4D533B5A688CD4860D786992FBDB0833174D4125943DE5B62
+FF7B77A96423BE665CBFC96F04F996C6434785D817FA8F95D8BFEC21E11687C7
+716A7F64FE23864587A3> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLS+CMMI10 /Encoding get
+dup 104 /h put
+dup 107 /k put
+pop
+%ADOEndSubsetFont
+/YNDRLS+CMMI10*1
+[59{/.notdef}rp /comma 20{/.notdef}rp /P 5{/.notdef}rp /V 15{/.notdef}rp /f
+/.notdef /h 2{/.notdef}rp /k 12{/.notdef}rp /x /y 134{/.notdef}rp]
+YNDRLS+CMMI10 nf
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+207.608 -191.351 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+213.302 -191.351 mo
+(-)sh
+6.79521 -179.395 mo
+(coordinate,)
+[4.42339 5.25826 4.9813 3.90532 5.53921 2.7696 5.5392 4.98131 3.87552 4.4234 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+60.5385 -179.395 mo
+(h)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+66.2789 -179.395 mo
+(,andthe)
+[8.05576 4.98129 5.53922 10.4328 3.87552 5.53922 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+114.007 -179.395 mo
+(y)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+119.249 -179.395 mo
+(-coordinate,)
+[3.31747 4.4234 5.25825 4.98129 3.90533 5.5392 2.76959 5.53922 4.98129 3.87552 4.4234 0
+]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+176.314 -179.395 mo
+(k)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+181.814 -179.395 mo
+(,ofthe)
+[8.05576 4.98129 7.94119 3.87552 5.53922 0 ]xsh
+6.79525 -167.44 mo
+(quadraticfunction)
+[5.26025 5.5392 4.9813 5.53921 3.90532 4.9813 3.87553 2.7696 7.74393 3.04855 5.5392 5.5392
+4.4234 3.87553 2.76959 4.98129 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+90.3994 -167.44 mo
+(f)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+96.3491 -167.44 mo
+(\()sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+100.224 -167.44 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+105.917 -167.44 mo
+(\)=2)
+[6.64314 10.5185 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+128.056 -167.44 mo
+(x)sh
+%ADOBeginSubsetFont: UGXAAA+CMR7 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /UGXAAA+CMR7 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1992 Blue Sky Research and Y&Y, Inc. http://www.YandY.com) def
+/Weight (Medium) def
+/ItalicAngle 0 def
+/BaseFontName (CMR7) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 50 /two put
+def
+/UniqueID 5000790 def
+/FontBBox {-286 -250 1122 967} def
+end
+systemdict begin
+dup /Private
+13 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-20 -0 683 703 431 446 664 674] def
+/OtherBlues [-205 -194] def
+/BlueScale 0.04379 def
+/StdHW [36] def
+/StdVW [79] def
+/StemSnapH [28 36] def
+/StemSnapV [79 95] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+2 dict dup begin
+/two <1C60D8A8C9B08A95C25148D4A67F955E56DED8709BEAC975B0F2E8A32A
+514F6D9222A5E47F7F9AE809FC929439005D711A5946815CD69262A805D0F899
+C8EBB5027F0DDD5B81DF529E7E3811173669493CAEFC29805ADB063CD3E32E39
+72B91F3A4784DBF342B608A84378E8760E2174C16BC88D5442E7B57E279222AA
+7C3147D75D44707368> |-
+/.notdef <1C60D8A8C9B08A958AA685092D4752> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLT+CMR7 /UGXAAA+CMR7 findfont ct_VMDictPut
+/YNDRLT+CMR7*1
+[50{/.notdef}rp /two 205{/.notdef}rp]
+YNDRLT+CMR7 nf
+YNDRLT+CMR7*1 [6.9738 0 0 -6.9738 0 0 ]msf
+133.751 -171.554 mo
+(2)sh
+%ADOBeginSubsetFont: MZQAAA+CMSY10 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /MZQAAA+CMSY10 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1996 Y&Y, Inc. All Right Reserved. http://www.YandY.com) def
+/Weight (Medium) def
+/ItalicAngle -14.035 def
+/BaseFontName (CMSY10) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+def
+/UniqueID 5096651 def
+/FontBBox {-29 -960 1116 775} def
+end
+systemdict begin
+dup /Private
+13 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-24 -0 683 705] def
+/OtherBlues [-135 -124] def
+/BlueScale 0.04379 def
+/StdHW [40] def
+/StdVW [40] def
+/StemSnapH [40 56] def
+/StemSnapV [40 56] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+2 dict dup begin
+/minus <1C60D8A8C9B08A946182837629008DF7702985522C1BEB4D11AB8A6B
+5589D8B615C840A4D8FD35DE7CD09D4C55DA8FE732830DDE> |-
+/.notdef <1C60D8A8C9B08A959E2F69652E8B8F> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLU+CMSY10 /MZQAAA+CMSY10 findfont ct_VMDictPut
+/YNDRLU+CMSY10*1
+[161{/.notdef}rp /minus 94{/.notdef}rp]
+YNDRLU+CMSY10 nf
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+140.434 -167.44 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+150.397 -167.44 mo
+(8)sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+155.378 -167.44 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+163.286 -167.44 mo
+(+5.)
+[9.9646 4.98129 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+14.691 -139.812 mo
+(h)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+23.1981 -139.812 mo
+(=)sh
+11.3025 -158.342 mo
+109.1 -158.342 li
+@
+11.5015 -130.048 mo
+11.5015 -158.342 li
+@
+108.901 -130.048 mo
+108.901 -158.342 li
+@
+11.3025 -130.048 mo
+109.1 -130.048 li
+@
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+122.451 -139.811 mo
+(k)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+130.719 -139.811 mo
+(=)sh
+119.063 -158.342 mo
+216.621 -158.342 li
+@
+119.263 -130.048 mo
+119.263 -158.342 li
+@
+216.422 -130.048 mo
+216.422 -158.342 li
+@
+119.063 -130.048 mo
+216.621 -130.048 li
+@
+231.565 -82.514 mo
+231.565 -201.313 li
+@
+%ADOBeginSubsetFont: GFNBAA+CMBX10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLR+CMBX10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/six <1C60D8A8C9B7FCB6A4EC6CCC9FCABED061B15B7D04288E658174D7F720
+94397557BC1198A2FF4B60C32EFFD71DB7057614ADD82D4EFF80CD28362F7945
+42C97EBB540D8B3019D847C0B1FCF0F66803F24063196B4E884DF3D051032E2B
+962A0F0ADA01C960A76EEC3E28519ED1661A37488E4A35EFD6A7F15C7746AB33
+304982B589A0BF07E27CF8960828F787448A9EAF8B8FB3EA4556CD435193CA14
+B0D480234697D67B2B9ACB08B1BCB089378EE507536C29A4B3F1233D5F0D41DC
+85AD> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLR+CMBX10 /Encoding get
+dup 54 /six put
+pop
+%ADOEndSubsetFont
+/YNDRLR+CMBX10*1
+[46{/.notdef}rp /period 5{/.notdef}rp /four /five /six 42{/.notdef}rp /a
+3{/.notdef}rp /e /f 5{/.notdef}rp /l /m /.notdef /o
+2{/.notdef}rp /r /.notdef /t /u /v /.notdef /x
+135{/.notdef}rp]
+YNDRLR+CMBX10 nf
+YNDRLR+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+233.78 -191.351 mo
+(6.)
+[5.72845 0 ]xsh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+246.51 -191.351 mo
+(\(3pts\)Thefunction)
+[3.87552 6.64206 5.53922 3.87552 3.92523 8.59085 7.19299 5.53918 9.1387 3.04855 5.53922 5.53918
+4.4234 3.87552 2.76962 4.98129 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+341.243 -191.351 mo
+(f)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+347.193 -191.351 mo
+(\()sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+351.067 -191.351 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+356.761 -191.351 mo
+(\)=)
+[8.96741 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+378.567 -191.351 mo
+(x)sh
+YNDRLT+CMR7*1 [6.9738 0 0 -6.9738 0 0 ]msf
+384.263 -195.464 mo
+(2)sh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+391.876 -191.351 mo
+(\241)sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+402.768 -191.351 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+411.606 -191.351 mo
+(+1hasa)
+[10.8941 9.69659 5.53918 4.98132 8.6405 0 ]xsh
+246.509 -178.001 mo
+300.509 -178.001 li
+@
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+303.83 -179.395 mo
+(\(max/min\)at)
+[3.87552 8.29877 4.98132 5.26025 4.98129 8.29877 2.76959 5.53922 7.19604 4.98132 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+367.205 -179.395 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+375.666 -179.395 mo
+(=)sh
+386.182 -178.001 mo
+422.182 -178.001 li
+@
+%ADOBeginSubsetFont: PBAAAA+CMR10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLO+CMR10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/b <1C60D8A8C9B08A95C5897169EED96641DA8B10CA087E6B7A5588052BABB7
+BC0836B12A49068694BF7254A2B820A876E020738250AC32ED44C3A7F2C5F700
+C2D03E307AFB7135F6415FEEB6D856569E9D5429B4DD3F524606607A7502F4FA
+00BE0184FC677554B2B6367E60A281A4837A2231515AF09B33399B7D5C3D2E8F
+3A2971F2933C4A4CAAA727A80DBDC9692BD6B38D543D422C14068650D2C61B6B
+E587855459543E451B14A31F96D9B341DFF415> |-
+/l <1C60D8A8C9B08A9570810981675968AD25F317189905083B97CD6CD1B880
+05B79B666989E13C0F8D0889AD0162C7E87274D188EBBD1A911FDD0B6E360AA1
+C515725198B9106B157680FC> |-
+/y <1C60D8A8C9B08A95D222871B45C8674D920EF37C9F679699CE0B0FB82274
+530CA6994E4FADB5C701717EBB278510CEF9D9EF1CB9FAAD7A4852BC3264781D
+C6E288589EC6BAAB146DF34989FBC4BF92E31D5C616C1050CCC8D58166B328D1
+E315EF5F39AF721DC6173775DFB26E6B6D40709A2BB053DECCFFF00649FC51FF
+5F341744BBA1E71297E598A51054A43B9F951D7105485742D0A3BB595676EC69
+1F5215F9D0DE2FC2C87BF5CCF8146FF6F88E> |-
+/z <1C60D8A8C9B08A95B1F07368C45D864DF4474A20870D1E195FBAAC9373D9
+2C93E3D24F1DE2394D0012E9565A09A0C2FC94DD6A6D4770D74AFB126C31DCA6
+ECBCA4E2CE8063F08F3759339B5A93CD00FEFB275550CDB6A2EDD2B1ADD82E89
+901E70494FCAD520852AE0> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLO+CMR10 /Encoding get
+dup 98 /b put
+dup 108 /l put
+dup 121 /y put
+dup 122 /z put
+pop
+%ADOEndSubsetFont
+/YNDRLO+CMR10*1
+[40{/.notdef}rp /parenleft /parenright /.notdef /plus /comma /hyphen /period
+/slash /zero /one /two /three /four /five 2{/.notdef}rp
+/eight /.notdef /colon 2{/.notdef}rp /equal 3{/.notdef}rp /A /.notdef
+/C 2{/.notdef}rp /F /.notdef /H 4{/.notdef}rp /M /N
+/.notdef /P 2{/.notdef}rp /S /T /U 11{/.notdef}rp /a
+/b /c /d /e /f /g /h /i
+2{/.notdef}rp /l /m /n /o /p /q /r
+/s /t /u /v /.notdef /x /y /z
+/endash 51{/.notdef}rp /fi 80{/.notdef}rp]
+YNDRLO+CMR10 nf
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+422.182 -179.395 mo
+(.)sh
+-45.0199 -60.5415 mo
+(\()sh
+%ADOBeginSubsetFont: HIBBAA+CMR9 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLP+CMR9 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/four <1C60D8A8C9B08A95D419B460E029B72392EFD3516AC6D47A0580F8E7F
+F8847046F49DCDA4820A0DC9E78CEE823202EFBD2B71DC482E2F0C7EBB391D22
+B16C197936E1F1399F8FCE0BC3C8FB98225FDE550707B36E94FA8270E630DFD5
+1A75573A58A24800A486D3D63B84BD85BBA07> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLP+CMR9 /Encoding get
+dup 52 /four put
+pop
+%ADOEndSubsetFont
+/YNDRLP+CMR9*1
+[41{/.notdef}rp /parenright 10{/.notdef}rp /four /five 202{/.notdef}rp]
+YNDRLP+CMR9 nf
+YNDRLP+CMR9*1 [8.9664 0 0 -8.9664 0 0 ]msf
+-41.1472 -60.5411 mo
+(4)sh
+YNDRLQ+CMR6*1 [5.9776 0 0 -5.9776 0 0 ]msf
+-36.5394 -64.8482 mo
+(pts)
+[4.04142 2.87584 0 ]xsh
+YNDRLP+CMR9*1 [8.9664 0 0 -8.9664 0 0 ]msf
+-26.206 -60.5411 mo
+(\))sh
+%ADOBeginSubsetFont: GFNBAA+CMBX10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLR+CMBX10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/seven <1C60D8A8C9B7FCB6A4FAB6A9D341141913323C94D688DF3A3CA84F36
+AE7F8D04C5AC2854620CED2689E1219070992AF07DF9A674CD2A62E1ABD46722
+C3D4B8026D12D1710944752B1E696F8038B7BE5D69EB782F0E83B442C89314B6
+131E48D72131FC42DC96F7B2F0D2BC4C7378E5151A75B2EFD41680E05B1DDA3F> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLR+CMBX10 /Encoding get
+dup 55 /seven put
+pop
+%ADOEndSubsetFont
+/YNDRLR+CMBX10*1
+[46{/.notdef}rp /period 5{/.notdef}rp /four /five /six /seven 41{/.notdef}rp
+/a 3{/.notdef}rp /e /f 5{/.notdef}rp /l /m /.notdef
+/o 2{/.notdef}rp /r /.notdef /t /u /v /.notdef
+/x 135{/.notdef}rp]
+YNDRLR+CMBX10 nf
+YNDRLR+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-5.93501 -60.5411 mo
+(7.)
+[5.72846 0 ]xsh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+6.7952 -60.5411 mo
+(Forapolynomialofdegree12,accordingtotheory,themaximumnumberofzerosis)
+[5.67569 4.9813 7.12823 8.2042 5.81616 4.9813 2.76961 5.26025 5.5392 4.98129 8.29878 2.76959
+4.98129 5.99252 4.98129 6.27145 5.5392 4.4234 4.98131 3.9053 4.4234 7.6463 4.98129 4.98131
+6.01242 4.98131 4.4234 4.42339 4.98131 3.90532 5.5392 2.76962 5.53918 8.20419 3.87552 8.20422
+3.87552 5.53922 4.4234 4.98126 3.90533 4.43036 6.01245 3.87552 5.53922 7.6463 8.29877 4.98129
+5.26025 2.76959 8.02182 5.53922 11.5217 5.26224 5.53922 8.02179 5.81616 4.4234 7.12823 4.98129
+6.27145 4.4234 4.4234 3.90533 4.98129 7.14816 2.76959 0 ]xsh
+377.996 -59.146 mo
+413.996 -59.146 li
+@
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+417.219 -60.541 mo
+(,andthe)
+[6.01242 4.98129 5.53922 8.76208 3.87555 5.53918 0 ]xsh
+6.79616 -48.5859 mo
+(maximumnumberofturningpointsis)
+[8.29877 4.98129 5.26025 2.76961 8.0218 5.5392 11.6193 5.26225 5.5392 8.0218 5.81616 4.4234
+7.22586 4.98129 6.36908 3.87553 5.5392 3.90533 5.53918 2.76961 5.53919 8.30185 5.81613 4.98132
+2.76959 5.26224 3.87555 7.24576 2.76959 0 ]xsh
+176.327 -47.191 mo
+212.327 -47.191 li
+@
+%ADOBeginSubsetFont: PBAAAA+CMR10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLO+CMR10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/D <1C60D8A8C9B08A9464DE8546F88D2A05AE66A80CFAB072F6DD7E68AFC04F
+8CB1FADB5E26854F1AB31DBD2A5DF3CA3DD1B59308732B5F717D99BE176292FB
+4B61473C545010195B72D8BD51A37A97972F71DA29D05B719122162A62E85384
+B5893DABEC3DD4C6F100837213E0F5892BD442264F7EBD017CA7B57BEF07B0D0
+16> |-
+/k <1C60D8A8C9B08A95D222871B45C8170346D4B3692EE324314ECB68C750E8
+0C39C0E118E6175CCD69769E2118B02E8AEF864A1ADB8D0BF5A5FFDD4A9B9B6C
+C867F43FFF5A7BBEB959851C5A4053DF1F3B8EBF64DEEC6B682D7055139D4103
+B0A63AD1D8193F253FA365D16CC3EC1AC7C7AEA533CCF6F8272FF6B8CD1FC7B4
+0DE006133FBB2B23E8E1776C461B4D8ABE09C8DE32B25BAD44EC36CACD378C29
+9496103B1CB809290EFAF69E7582E8754F6B25D7A0FD> |-
+/w <1C60D8A8C9B08A9454CA4C75C5C9761F27DFD501BA4813FE991E533E1CD1
+E174DB2ECA59D495EC56B0C1FD43D089BD170DD220487C38F20C192FAA7E2E88
+3AD5437BC552CE37BD6C6BBA40409BE02939A8B895FF98709899D61A578F68A8
+22D6CFB7A000AD2B69212700685F8E729740E6656D3B8D43A0C52B18628B0EFF
+5F05D1944E33A86827C6670A3438CE653DA430AB3E54D22481FDFA780C4812C2
+F3255AA0E07A5FC796A8653D62150A6CD8B7FE4B68F43CAA66CB6512EB54E359
+E67F4D5FAA2BB87B8812835557ADA47955DD5F> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLO+CMR10 /Encoding get
+dup 68 /D put
+dup 107 /k put
+dup 119 /w put
+pop
+%ADOEndSubsetFont
+/YNDRLO+CMR10*1
+[40{/.notdef}rp /parenleft /parenright /.notdef /plus /comma /hyphen /period
+/slash /zero /one /two /three /four /five 2{/.notdef}rp
+/eight /.notdef /colon 2{/.notdef}rp /equal 3{/.notdef}rp /A /.notdef
+/C /D /.notdef /F /.notdef /H 4{/.notdef}rp /M
+/N /.notdef /P 2{/.notdef}rp /S /T /U 11{/.notdef}rp
+/a /b /c /d /e /f /g /h
+/i /.notdef /k /l /m /n /o /p
+/q /r /s /t /u /v /w /x
+/y /z /endash 51{/.notdef}rp /fi 80{/.notdef}rp]
+YNDRLO+CMR10 nf
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+215.649 -48.5859 mo
+(.)sh
+-45.0208 -21.6869 mo
+(\()sh
+%ADOBeginSubsetFont: HIBBAA+CMR9 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLP+CMR9 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/eight <1C60D8A8C9B08A95D419B460E02949711E7C08BD6D2FC80DA151FC7A
+5CB0A7D077860651A04CAB51E65C4D8CE6C7FB979F91CA3CFEF3C5AEA866C506
+4B2F3765E86222B233E7295AE3C4637A5020E4EEA27A4F4CD3A6A95719E8AEDA
+962724231D429ABD3467505C1522B617B0A402070F763A15B4B310D15C899EA3
+5A5B19AF01D3621043009733D9F84C91B9CA4510ED5F3602A79C98E04261D905
+959C30B56F21A71E01D9F42169A1B567DE6DD02CF4009B> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLP+CMR9 /Encoding get
+dup 56 /eight put
+pop
+%ADOEndSubsetFont
+/YNDRLP+CMR9*1
+[41{/.notdef}rp /parenright 10{/.notdef}rp /four /five 2{/.notdef}rp /eight 199{/.notdef}rp]
+YNDRLP+CMR9 nf
+YNDRLP+CMR9*1 [8.9664 0 0 -8.9664 0 0 ]msf
+-41.1472 -21.6868 mo
+(8)sh
+YNDRLQ+CMR6*1 [5.9776 0 0 -5.9776 0 0 ]msf
+-36.5394 -25.9939 mo
+(pts)
+[4.04142 2.87584 0 ]xsh
+YNDRLP+CMR9*1 [8.9664 0 0 -8.9664 0 0 ]msf
+-26.206 -21.6868 mo
+(\))sh
+%ADOBeginSubsetFont: GFNBAA+CMBX10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLR+CMBX10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/eight <1C60D8A8C9B7FCB6A4EC6CCC71FFBC41969F86A86636A65E5BD14FD4
+EBD93FCE205F86ECC615335CAFE8E2240019DB970894F9979E3FDF252D8A9472
+1B680E23D2DF204A99891D5AD0E347695938A6FCE4923A098978EC0AC2A3894C
+8A94767FEBA61293F9C489BAC7A89726BFA765D56F2D198E99D500D81046ACE1
+5301FD9FB36D2F2E4EAA017CCF306EAEC8E157B40FDE6DC2FA713180A587E730
+6AD0870F441697503D> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLR+CMBX10 /Encoding get
+dup 56 /eight put
+pop
+%ADOEndSubsetFont
+/YNDRLR+CMBX10*1
+[46{/.notdef}rp /period 5{/.notdef}rp /four /five /six /seven /eight
+40{/.notdef}rp /a 3{/.notdef}rp /e /f 5{/.notdef}rp /l /m
+/.notdef /o 2{/.notdef}rp /r /.notdef /t /u /v
+/.notdef /x 135{/.notdef}rp]
+YNDRLR+CMBX10 nf
+YNDRLR+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-5.93501 -21.6868 mo
+(8.)
+[5.72846 0 ]xsh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+6.7952 -21.6868 mo
+(De\257ne)
+[7.6115 4.42339 5.5392 5.53921 0 ]xsh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+37.4252 -21.6868 mo
+(f)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+43.3749 -21.6868 mo
+(\()sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+47.2493 -21.6868 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+52.943 -21.6868 mo
+(\)=)
+[6.64314 0 ]xsh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+70.1005 -21.6868 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+77.8495 -21.6868 mo
+(2)sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+82.8308 -21.6868 mo
+(x)sh
+YNDRLT+CMR7*1 [6.9738 0 0 -6.9738 0 0 ]msf
+88.5255 -25.8003 mo
+(2)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+92.9949 -21.6868 mo
+(\()sh
+YNDRLS+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+96.8693 -21.6868 mo
+(x)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+104.323 -21.6868 mo
+(+1\).Makeagoodsketchofthegraphinthecoordinateplanebelow,takinginto)
+[9.51129 4.98131 3.87552 7.12226 9.13577 4.98131 4.98328 7.51779 8.07568 4.98129 5.25827 5.25827
+8.63358 3.92523 4.98331 4.4234 3.87552 4.14642 8.63361 4.98129 6.14294 3.87552 5.53922 7.51779
+4.98129 3.9053 4.98132 5.53918 8.63361 2.76959 8.63358 3.87552 5.53922 7.51779 4.4234 5.25824
+4.98132 3.9053 5.53922 2.76959 5.53918 4.98132 3.87552 7.51779 5.53918 2.76959 4.98132 5.53918
+7.51782 5.81616 4.4234 2.76959 4.70435 7.19299 5.90881 3.87549 4.98132 5.26025 2.76959 5.53918
+8.07568 2.76965 5.26221 3.87555 0 ]xsh
+6.79548 -9.73169 mo
+(considerationtheend-behaviorofthepolynomial,anditsintercepts.)
+[4.42339 4.9813 5.53921 3.92524 2.76959 5.53921 4.42339 3.90533 4.9813 3.87553 2.76959 4.98129
+8.85974 3.87553 5.5392 7.74393 4.4234 5.53922 5.53918 3.31747 5.81616 4.4234 5.5392 4.70435
+5.26025 2.76961 4.98129 7.22585 4.98131 6.36908 3.87553 5.5392 7.74393 5.81616 4.98132 2.76959
+5.26025 5.53918 4.98132 8.29877 2.76959 4.98129 2.76962 6.09012 4.98129 5.53922 8.85971 2.76962
+3.87552 7.24579 2.76959 5.26224 3.87552 4.4234 3.90533 4.4234 4.42337 5.53922 3.87552 3.92523
+0 ]xsh
+254.471 93.712 mo
+258.795 92.168 li
+254.471 90.624 li
+256.201 92.168 li
+f
+gsave
+258.794 182.168 mo
+6.7945 182.168 li
+6.7945 2.168 li
+258.794 2.168 li
+cp
+clp
+.797 lw
+6.79449 92.168 mo
+256.2 92.168 li
+@
+grestore
+.399 lw
+132.794 96.153 mo
+132.794 88.183 li
+@
+160.794 96.153 mo
+160.794 88.183 li
+@
+188.794 96.153 mo
+188.794 88.183 li
+@
+216.794 96.153 mo
+216.794 88.183 li
+@
+244.794 96.153 mo
+244.794 88.183 li
+@
+132.794 96.153 mo
+132.794 88.183 li
+@
+104.795 96.153 mo
+104.795 88.183 li
+@
+76.7945 96.153 mo
+76.7945 88.183 li
+@
+48.7945 96.153 mo
+48.7945 88.183 li
+@
+20.7945 96.153 mo
+20.7945 88.183 li
+@
+134.339 6.492 mo
+132.795 2.16803 li
+131.251 6.492 li
+132.795 4.76303 li
+f
+.797 lw
+132.794 182.168 mo
+132.794 4.76199 li
+@
+.399 lw
+128.809 92.168 mo
+136.779 92.168 li
+@
+128.809 72.168 mo
+136.779 72.168 li
+@
+128.809 52.168 mo
+136.779 52.168 li
+@
+128.809 32.168 mo
+136.779 32.168 li
+@
+128.809 12.168 mo
+136.779 12.168 li
+@
+128.809 92.168 mo
+136.779 92.168 li
+@
+128.809 112.168 mo
+136.779 112.168 li
+@
+128.809 132.168 mo
+136.779 132.168 li
+@
+128.809 152.168 mo
+136.779 152.168 li
+@
+128.809 172.168 mo
+136.779 172.168 li
+@
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+118.847 75.3784 mo
+(1)sh
+118.847 55.3785 mo
+(2)sh
+118.847 35.3786 mo
+(3)sh
+118.847 15.3787 mo
+(4)sh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+111.098 114.963 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+118.847 114.963 mo
+(1)sh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+111.098 134.963 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+118.847 134.963 mo
+(2)sh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+111.098 154.963 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+118.847 154.963 mo
+(3)sh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+111.098 174.963 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+118.847 174.963 mo
+(4)sh
+158.304 107.555 mo
+(1234)
+[27.9999 27.9999 27.9999 0 ]xsh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+98.4298 107.555 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+106.179 107.555 mo
+(1)sh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+70.43 107.555 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+78.1789 107.555 mo
+(2)sh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+42.4301 107.555 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+50.179 107.555 mo
+(3)sh
+YNDRLU+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+14.4302 107.555 mo
+(\241)sh
+YNDRLO+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+22.1791 107.555 mo
+(4)sh
+.797 lw
+1 lc
+[0 2 ] 1 dsh
+true sadj
+20.7945 173.168 mo
+20.7945 11.168 li
+48.7945 173.168 mo
+48.7945 11.168 li
+76.7945 173.168 mo
+76.7945 11.168 li
+104.794 173.168 mo
+104.794 11.168 li
+132.794 173.168 mo
+132.794 11.168 li
+160.794 173.168 mo
+160.794 11.168 li
+188.794 173.168 mo
+188.794 11.168 li
+216.794 173.168 mo
+216.794 11.168 li
+244.794 173.168 mo
+244.794 11.168 li
+@
+[0 2.8 ] 1.4 dsh
+19.3945 172.168 mo
+246.194 172.168 li
+19.3945 152.168 mo
+246.194 152.168 li
+19.3945 132.168 mo
+246.194 132.168 li
+19.3945 112.168 mo
+246.194 112.168 li
+19.3945 92.168 mo
+246.194 92.168 li
+19.3945 72.168 mo
+246.194 72.168 li
+19.3945 52.168 mo
+246.194 52.168 li
+19.3945 32.168 mo
+246.194 32.168 li
+19.3945 12.168 mo
+246.194 12.168 li
+@
+%ADOBeginSubsetFont: GFNBAA+CMBX10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLR+CMBX10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/A <1C60D8A8C9B08A941DDBC3AF1C109AC61AF06DEF14497758E2577FC09808
+E2F83FED36FAC5C5DF9845F9151204EBE19A62A093C0C714296A8AEB5EA72983
+7304C560208E23A9B00E450B7895C64B840FF7B8D2624ED826E8D6D1CB5BC276
+3958AE415A241BD617EA928FD9818043D58C39BCDA5256A3F17DFF2FADD0CDFE
+4A5999053732F0E5CE29974C519106> |-
+/W <1C60D8A8C9B08A949EE89938EFD2B089915D4CA87E50351E8DD3F3914A85
+384965AB9720D1BDB02951199DD63BE938B296E11B8132C78ABED307E15E2C96
+04E0EEA5C8FB1D25F45078482232C4120E0C6D7ECC100B9CF59823239764E960
+AC203F05154297337EBEC8D426CABE71C6D1BABE3D2EE87EB4EC26DC5A175D2E
+1776DC7CB846E1C76A588A844BC3111554540D100610F9152C35EB0670475763
+7F97762997D01BB6BF9BF94F9DBF981A5DB94B101F849599A265> |-
+/k <1C60D8A8C9B08A95F1118A977C6242CC6F5E327BF4A2BCE6E631EAC27F33
+5285F637895192724CE2C53641A392411149B8A3F127ECD7DEB11923D35A35EC
+238223B6B1C9CF9675A0C83B3A0C95C18823DF1B6F368BBFEEE7185E77AE9040
+378C34B27A11D9EE3C9721E2EAFF82B925C0F3ABE698646F0C4A57CEC100EA29
+86134B063D8450710541B66D42FC62B89A6AB4B6D6C05FC0E5F8EF9F1253768A
+DA78BF283C77228ACE6FD83E9384> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLR+CMBX10 /Encoding get
+dup 65 /A put
+dup 87 /W put
+dup 107 /k put
+pop
+%ADOEndSubsetFont
+/YNDRLR+CMBX10*1
+[46{/.notdef}rp /period 5{/.notdef}rp /four /five /six /seven /eight
+8{/.notdef}rp /A 21{/.notdef}rp /W 9{/.notdef}rp /a 3{/.notdef}rp /e
+/f 4{/.notdef}rp /k /l /m /.notdef /o 2{/.notdef}rp
+/r /.notdef /t /u /v /.notdef /x 135{/.notdef}rp]
+YNDRLR+CMBX10 nf
+YNDRLR+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+344.808 9.08679 mo
+(WorkArea)
+[10.8911 5.72845 4.72226 9.86591 8.65753 4.72226 5.25021 0 ]xsh
+grestore
+grestore
+pgrs
+%%PageTrailer
+[
+[/CSA [/0 ]]
+[/CSD [/0 ]]
+] del_res
+/YNDRLP+CMR9*1 uf
+/YNDRLP+CMR9 uf
+/HIBBAA+CMR9 uf
+/YNDRLT+CMR7*1 uf
+/YNDRLT+CMR7 uf
+/UGXAAA+CMR7 uf
+/YNDRLR+CMBX10*1 uf
+/YNDRLR+CMBX10 uf
+/GFNBAA+CMBX10 uf
+/YNDRLU+CMSY10*1 uf
+/YNDRLU+CMSY10 uf
+/MZQAAA+CMSY10 uf
+/YNDRLO+CMR10*1 uf
+/YNDRLO+CMR10 uf
+/PBAAAA+CMR10 uf
+/YNDRLS+CMMI10*1 uf
+/YNDRLS+CMMI10 uf
+/HJCBAA+CMMI10 uf
+/YNDRLQ+CMR6*1 uf
+/YNDRLQ+CMR6 uf
+/QJJAAA+CMR6 uf
+Adobe_AGM_Image/pt gx
+Adobe_CoolType_Core/pt get exec
+Adobe_AGM_Core/restore_mysetup gx
+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/eqexam/examples/coorplane.pdf b/texmf-dist/doc/latex/eqexam/examples/coorplane.pdf
new file mode 100644
index 00000000..391442d3
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/coorplane.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/eqex_solnsonly.pdf b/texmf-dist/doc/latex/eqexam/examples/eqex_solnsonly.pdf
new file mode 100644
index 00000000..76c35e35
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/eqex_solnsonly.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/eqex_solnsonly.tex b/texmf-dist/doc/latex/eqexam/examples/eqex_solnsonly.tex
new file mode 100644
index 00000000..6f7974d9
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/eqex_solnsonly.tex
@@ -0,0 +1,121 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+%\usepackage[pointsonleft,nototals,forpaper,useforms,vspacewithsolns]{eqexam}
+\usepackage[pointsonleft,nototals,forpaper,useforms,solutionsonly]{eqexam}
+
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+
+\subject[MC]{My Course}
+\title[T1]{Test 1}
+\author{Dr.\ D. P. Story}
+\date{\thisterm, \the\year}
+\duedate{2012/04/28}
+\keywords{My Course, Exam \nExam, {\thisterm} semester, \theduedate, at AcroTeX.Net}
+
+%
+% Compile the file with the vspacewithsolns option to create the .sol auxiliary file
+% that contains a listing of all the solutions, like so
+% \usepackage[pointsonleft,nototals,forpaper,useforms,vspacewithsolns]{eqexam}
+% then compile with the solutionsonly option, like so
+% \usepackage[pointsonleft,nototals,forpaper,useforms,solutionsonly]{eqexam}
+%
+\encloseProblemsWith{theseproblems}
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{myProblems}
+
+\ifsolutionsonly
+\begin{instructions}[Solutions.]
+The solutions to Test~1.
+\end{instructions}
+\belowsqskip{\par} % removes the skip after the exam env
+\else
+\begin{instructions}
+Solve each problem and box in your final $\boxed{\text{answer}}$.
+\end{instructions}
+\fi
+
+\begin{theseproblems}
+
+\begin{problem*}[3ea]
+\leadinitem
+ It is well known that \fillin{1in}{Newton} and
+ \fillin{1in}{Leibniz} are jointly credited as the founders
+ of modern calculus.
+\ifkeyalt
+\begin{solution}
+ It is well known that \fillin{1in}{Newton} and
+ \fillin{1in}{Leibniz} are jointly credited as the founders
+ of modern calculus.
+\end{solution}
+\fi
+
+\begin{parts}
+\item \TF{T} (True `T' or False `F') The area of a circle is $\pi r^2$.
+\ifkeyalt
+\begin{solution}
+\item\TF{T} The area of a circle is $\pi r^2$.
+\end{solution}
+\fi
+
+\item Suppose the \emph{discriminant} of a quadratic equation is
+\emph{negative}, which statement describes the roots to
+the equation?
+\begin{answers}{2}
+\bChoices
+ \Ans0 There is only one real root\eAns
+ \Ans0 There are two distinct real roots\eAns
+ \Ans1 There are two complex roots\eAns
+ \Ans0 None of these\eAns
+\eChoices
+\end{answers}
+\ifkeyalt
+\begin{solution}[]
+\parbox[t]{\linewidth}{\sqTabPos{t}%
+\begin{answers}{2}
+\bChoices
+ \Ans0 There is only one real root\eAns
+ \Ans0 There are two distinct real roots\eAns
+ \Ans1 There are two complex roots\eAns
+ \Ans0 None of these\eAns
+\eChoices
+\end{answers}}%
+\adjDisplayBelow
+\end{solution}
+\fi
+\end{parts}
+\end{problem*}
+
+\begin{problem}[8]
+In the space below, solve the quadratic equation
+$ 2x^2 - 3x + 2 = 0 $ using any valid method.
+\begin{solution}[1.5in]
+We use the quadratic formula:
+\begin{equation*}
+ x = \frac{3 \pm \sqrt{9-4\cdot2\cdot2}}{2\cdot2}
+ = \frac{3 \pm \sqrt{-7}}{4}
+ = \boxed{ \frac{3 \pm \sqrt{7}\,\imath}{4} }
+\end{equation*}
+\end{solution}
+\end{problem}
+
+\begin{problem}[8]
+Find the equation of the line perpendicular to $ 3x - 5y = 2 $ and passing
+through the point $P(1,7)$. Leave your answer in the general form.
+\[
+ \text{Ans:\quad}
+ \fillin[boxed,boxsize=Large]{2in}{5x+3y=26}
+\]
+\begin{solution}[.5in]\ifkeyalt$ \text{Ans:\quad}
+ \fillin[boxed,boxsize=Large]{2in}{5x+3y=26}$\\[3pt]\fi
+Apparently the given line has slope $m=3/5$, so $ m_{\perp}=-5/3$. The rest
+is left to the reader.
+\end{solution}
+\end{problem}
+
+\end{theseproblems}
+\end{exam}
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/fig1.bb b/texmf-dist/doc/latex/eqexam/examples/fig1.bb
new file mode 100644
index 00000000..ac080e4e
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/fig1.bb
@@ -0,0 +1,5 @@
+%%Title: ./fig1.jpg
+%%Creator: ebb Version 0.5.2
+%%BoundingBox: 0 0 636 704
+%%CreationDate: Fri Feb 04 18:59:33 2005
+
diff --git a/texmf-dist/doc/latex/eqexam/examples/fig1.eps b/texmf-dist/doc/latex/eqexam/examples/fig1.eps
new file mode 100644
index 00000000..d40a7d65
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/fig1.eps
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/fig1.jpg b/texmf-dist/doc/latex/eqexam/examples/fig1.jpg
new file mode 100644
index 00000000..27e8564d
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/fig1.jpg
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/fig1.pdf b/texmf-dist/doc/latex/eqexam/examples/fig1.pdf
new file mode 100644
index 00000000..054fe38f
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/fig1.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/graph.eps b/texmf-dist/doc/latex/eqexam/examples/graph.eps
new file mode 100644
index 00000000..240e89ef
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/graph.eps
@@ -0,0 +1,9158 @@
+%!PS-Adobe-3.1 EPSF-3.0
+%ADO_DSC_Encoding: Windows Roman
+%%Title: graph.pdf
+%%Creator: Adobe Acrobat 10.0.1
+%%For: D. P. Story
+%%CreationDate: 4/8/2011, 3:22:12 PM
+%%BoundingBox: -1 0 257 195
+%%HiResBoundingBox: 0 0 256.7930 194.9510
+%%CropBox: 0 0 256.7930 194.9510
+%%LanguageLevel: 2
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentNeededFeatures: (atend)
+%%DocumentSuppliedFeatures: (atend)
+%%DocumentData: Clean7Bit
+%%Pages: (atend)
+%%DocumentProcessColors: Black
+%%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-2006 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 not{pop exit}if
+ 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-2007 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
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }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
+ dup currentblackgeneration eq {pop}{setblackgeneration}ifelse
+ dup null eq {pop /AGMCORE_currentucr load}{/Procedure get_res}ifelse
+ dup currentundercolorremoval eq {pop}{setundercolorremoval}ifelse
+}def
+/setcolorrendering_opt
+{
+ dup currentcolorrendering eq{
+ pop
+ }{
+ product(HP Color LaserJet 2605)anchorsearch{
+ pop pop pop
+ }{
+ pop
+ clonedict
+ begin
+ /Intent Intent def
+ currentdict
+ end
+ setcolorrendering
+ }ifelse
+ }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
+ {/sep_colorspace_dict AGMCORE_gget/ForeignContent known not}{false}ifelse
+ 3 1 roll 2 index{
+ exch pop/sep_tint AGMCORE_gget exch
+ }if
+ mark 3 1 roll
+ setsepcolorspace
+ counttomark 0 ne{
+ setsepcolor
+ }if
+ pop
+ not{/sep_tint 1.0 AGMCORE_gput/sep_colorspace_dict AGMCORE_gget/ForeignContent true put}if
+ 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
+/capture_mysetup
+{
+ /Pscript_Win_Data where{
+ pop
+ Pscript_Win_Data/mysetup known{
+ Adobe_AGM_Core/save_mysetup Pscript_Win_Data/mysetup get put
+ }if
+ }if
+}def
+/restore_mysetup
+{
+ /Pscript_Win_Data where{
+ pop
+ Pscript_Win_Data/mysetup known{
+ Adobe_AGM_Core/save_mysetup known{
+ Pscript_Win_Data/mysetup Adobe_AGM_Core/save_mysetup get put
+ Adobe_AGM_Core/save_mysetup undef
+ }if
+ }if
+ }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 /$None SetSubstituteStrategy end
+%%BeginResource: procset Adobe_AGM_Image 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2006 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 xcheck
+ {
+ [
+ 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
+ }{
+ DataSource aload pop AGMCORE_get_ink_data
+ }ifelse 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 dup/names_index known exch/Names get convert_to_process or{
+ 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
+ }{
+ //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec
+ }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 2010 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} 1281 (% &end XMP packet& %) ReadBypdfmark_5_string
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xmp:ModifyDate="2011-04-08T15:21:07-05:00"
+ xmp:CreateDate="2011-04-08T15:21:07-05:00"
+ xmp:MetadataDate="2011-04-08T15:21:07-05:00"
+ xmp:CreatorTool="DVIPSONE 2.3.4.149 http://www.YandY.com"
+ dc:format="application/pdf"
+ xmpMM:DocumentID="uuid:4672a2a6-f2a2-46c1-a618-bae4e40b5b67"
+ xmpMM:InstanceID="uuid:840d3c6d-0825-497a-9944-212dd7f55635"
+ pdf:Producer="Acrobat Distiller 10.0.1 (Windows)">
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">test03</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <dc:description>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">TeX output 2011.04.08:1517</rdf:li>
+ </rdf:Alt>
+ </dc:description>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li>Donald Story (Complimentary Copy) 4662 2009-10-23 13:17:17</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_Core/capture_mysetup gx
+Adobe_AGM_Utils/capture_cpd gx
+Adobe_CoolType_Core/ps get exec
+Adobe_AGM_Image/ps gx
+%%EndPageSetup
+1 -1 scale 0 -194.951 translate
+pgsv
+[1 0 0 1 0 0 ]ct
+gsave
+np
+gsave
+-7.62939e-6 0 mo
+-7.62939e-6 194.951 li
+256.793 194.951 li
+256.793 0 li
+cp
+clp
+false sop
+/0
+<<
+/Name (Black)
+/0
+[/DeviceCMYK] /CSA add_res
+/CSA /0 get_csa_by_name
+/MappedCSA /0 /CSA get_res
+/TintMethod /Subtractive
+/TintProc null
+/NComponents 4
+/Components [ 0 0 0 1 ]
+>>
+/CSD add_res
+1 /0 /CSD get_res sepcs
+1 sep
+%ADOBeginSubsetFont: GLAAAA+CMR10 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /GLAAAA+CMR10 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1994 Blue Sky Research and Y&Y, Inc. http://www.YandY.com) def
+/Weight (Medium) def
+/ItalicAngle 0 def
+/BaseFontName (CMR10) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 51 /three put
+dup 53 /five put
+dup 65 /A put
+dup 67 /C put
+dup 73 /I put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 97 /a put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 111 /o put
+dup 123 /endash put
+def
+/UniqueID 5000793 def
+/FontBBox {-40 -250 1009 969} def
+end
+systemdict begin
+dup /Private
+13 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-22 -0 683 705 431 448 666 677] def
+/OtherBlues [-206 -194] def
+/BlueScale 0.04379 def
+/StdHW [31] def
+/StdVW [69] def
+/StemSnapH [22 31] def
+/StemSnapV [69 89] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+23 dict dup begin
+/slash <1C60D8A8C9B7A73DB56225352A24C6E389DE2B55CA06CAB1D904D74F
+E21B6520E910DE6837DBFFB95567192F781E541A03B8446689265DEAE7140ED2
+3D1C3943714CDFC12315> |-
+/zero <1C60D8A8C9B7A73D3B2D32309B1F5D5A32FC3614834F8BC61B6EB92C1
+2484BD76628737DA40CF9DA1C97CCDAFB1D1B732C642F74A7C41B7D3AC6DAF8D
+1E760692B6EBD2417EF1893A4AA0B1CF049D4C54D830CEC073A9153D451FAD42
+892B0930AEE4FE18588336BFDAD60D8A4F4CFFED76F103FB9BBD8A33EFBA3F18
+232B88D88FE54E17260FA3E2CC29DEC0CB72B88DC816FF5> |-
+/one <1C60D8A8C9B7A73DC579B9CE13A4EA8C203AFC890ABD6F58341B006CF1
+BDD8FED3A7238E01F751FEAC75885229C293891E5636AD630D9C884528B6FEF0
+0728A740ED77D054B4743ECA5E3947520FEF6B23D548765D11> |-
+/three <1C60D8A8C9B7A73D3B2B97DEB4C7BDB68E0D63865C8BF294429AD1BA
+AE59A25299F9306A9E28AA5C0C0AF9F97F56096DB0FD0EC440ACCE834B0BA539
+2FD94D026768A961AA5D1A88FAE30F2B2033E77AFAB55B0B9C8092CD226DD9EF
+EEAAF5CD5AE79D6DDEC4C37DC43DE3B85DD2A2EC4DC0C9F349D5E8F9F615782E
+DC8C53805553FD3C0007C1818BF3D99AB659A079ED36132BBDC613CA63D7A0FE
+429706DBC6BA998CE56A89C002758EF37F90A390F83B3DFE49D312FA66FDF2F1
+6212D1503559B35FC2DB8BD5A49535> |-
+/five <1C60D8A8C9B7A73D3B2B97F19D54A2E00E7DDA8E72064220CB7581D13
+CEDF071F346430E40993A6297E3A2A6D6093205222D977AC7F7B65CC82B221D9
+B18ADEA5D4AF0261ABF060D3E283C7B3B5EB39FF499721FD51203AE59E3BEA25
+7DFD3E472FEF67221488EC8D1F355E2FAD057CA44A8B4BAD6C6C719C164907CB
+F9A6CC770DB0C7E58A37D2385E23F576BCFF94FFBFD8ADD4C5E6C32CD83ACEB7
+7472D00FE1A4DC66393A99AC6BBD252B04C98B710149EA42B66ACE89D4FC4393
+F3A09165DF477ABCB0E8A8DB21E4278CA219EBCC9B067F92619913BDBD1EF3C9
+A> |-
+/A <1C60D8A8C9B08A9501CDAE1251A61DF6E2312CA41635F6CE1D00B63E171C
+70F84D42F62A21A6DD37D84C279E3FAE908D39B730ACD671ED9E277ACFE833A1
+1F48F076C9803DC08258033731BCBCE19DF3B81C1C298B382A15FAC94387A992
+AD9631716A7ED4F711137D6C851AE1C8DCBBFBCF7274E882226E58958CE6283A
+197E7FAE3A2D0F6C24FA411BECFB36A10FF2A923EA89ABEFAD5AB23D600F> |-
+/C <1C60D8A8C9B08A9454CA4C75C5C983901A105955FD02AB95A1C2D2A205D6
+C9A19566388580DAF81E45849DB37660797B67B5A88B6906602915C5F5C9B0EC
+D18BF9F52BC4BC58CA3DC88745B8BAABAD3D92E461BFB415E7240305CDDA1D0D
+B5D35FEBC75FFD4C053E78B6CA772ACEB0C2FF98C08B672F492F305E0C5F3841
+918729B4AEB78A65C2A83364408240D8D653DA56F4DCB028D3D78F3C2D6BC7> |-
+/I <1C60D8A8C9B08A9591900960B3FA4612DFF926AB21A530E1912F33677612
+AC06B324D812E42049FF4946BE5E0FFA24FA0C62F2839FF2110EEC7EE0A42476
+46E6F699D4C8BECE1825B3A661611E4D55F40F2E64FACB836D4D0C9780F60650
+FBF10E0D42> |-
+/L <1C60D8A8C9B08A9504870DC577BFF1117CB147078FC0444648398262998D
+8061E386D366188391878ADBE16C10A3B1BC6A93F56BD64AE45F8370470F419D
+A43CBACE3D7B1152502CD0CF1468D72D3CB197A29E71D336CDA7D6BAA426EC1B
+681825BDDC37329099DC579F155C> |-
+/M <1C60D8A8C9B08A94284A0D047609A407E661A852E250B140B4157477FB2A
+AE2E22210B2D780B692B0718211E5BD86C3DCF8087849BEE2B9F6D1D8621E40C
+8FBE892AC1B23002BF18819E26C6741335DF8DA8AC82506D7051C0505D48DDFA
+17EE84A06E07C05EBAC6174D600BACE071866247BE6C83F4CF28F6D6EE6A6CF8
+A788C4FFFDBDCA978C2B0B201753D21CB7AF0542C690ECE8E7EDBE1B1FB29939
+734E35E0ECCA8BA7FAEB58AC205A8A82A94C960A65> |-
+/N <1C60D8A8C9B08A9501CDAE1251A61DF6E23FBE9059A2A88492E84D61402E
+80BD80B5057FF8914FA4679EB3900C60B246DA77BF837041B1C053FCD543E3D1
+D259FCE953A74E40366D604A99F9233772AC97F872D505329B1446640ABD99E4
+AC723C39DD6EA376A043CE3633F04D9BC6DEFE2E1A831DBB9C16F90A966DFA0F
+3802BB1EB0AA3DAEB0E864B9D3CC3E14AE1E9219B48660289CF348B4E280> |-
+/O <1C60D8A8C9B08A946182837629000F56F09862ED5AA400F2B4EB929FCD0B
+6F40CAF45238A67BE496742823610F15AF19832E8EC09C64557C48DB0BC41E07
+C1B98081893CB2216BAE4CCECC72A02E2F6B8D0FE8B2E6548D00AAA585F02486
+772A4FC1258C2982A5ECEC> |-
+/P <1C60D8A8C9B08A94478101EE5603CAF9EA65868978F157B7D9DB71203FAD
+46B85DF1A1E477012038D20B3756C0124AD7E2F6ACCB98150AB793091E3E7A8F
+3C0AE6FC8D7A5031BB678671889D46F3A15BD495F1AB5B7C8F63325E15B44523
+174D09593A38714FEB5177883F725186FE6BF7095A24CD9EDEFA3551580A0E2B
+0B49AC2002> |-
+/S <1C60D8A8C9B08A95C5897169EED99899F86A6DCF3CD291B001131D3BCB45
+BF71748507542417352D5B30F63C60EB90DCF55005F88E95175B21D3219CD9E9
+2E89E417B177D285600845553F66626D2225552D23A7697637BDCEEECAEA18AB
+42A896E96FF5B3536CC368A5F7504B6C75D962A4B5F9534F79AC78DC99848461
+42257A40DE257430C92806EBA73FF7D93DF0A6C207299E2D17F4071F9096D016
+163F4D3EC1889ADA266D3682F2D99904573A5022A10E61069737F2D55F919F95
+A33DB6DD2667321E4727855B58DBF4B1E5A294928E6CEABFBD34F296C1B758> |-
+/T <1C60D8A8C9B08A9454CA4C75C5C97DCE7AB32777FAAECD12647866E7CB3F
+CCDC541E37F2225E520DEDE695980D4012AD5B972BDABC7E7E5410E71AC63692
+4E778B3131B6C4D1E76F8C4592AC311A2107F53DC1850538C9E487E6D5DBDFE8
+027D7126BA9ED8B24E7379B57E474ACD298BF6B3700CC970D80111DD98EFC872
+C24D0DA3C75DDDFD177C6D15> |-
+/U <1C60D8A8C9B08A9501CDAE1251A6E3AF1199B24D30F25809B39A0DD6474A
+CF1BFDB89F5985BBB0F2E5FE7296314FDA462BECDBDEA31B3750001975D37A8B
+F31F224CAB5093B8997B856DAE5F9007E1497BEED45CA8AC033A65F773653762
+77BFCDF39A2D8F1BC8E5626BEEEF5D670E87E32F25C0530E88A4E2B9AD6D8333
+3A6C173F8B22714E74A224AD610C2B1EAB> |-
+/a <1C60D8A8C9B7A73DCB03313BCF7AD8C8EE234E5372D46A65E92A78F4B7E0
+2ECC58F71EE6C027AD4D56C5E4DE1AF1031295DC17C0E7AC8D8358634F9A19B0
+2A110E5539C10136C68E0D2CBEA6658A501D9D73323861F8C29EB92F9080ACC3
+E236C5F14389534682EC2925F59CD4A215569A7BD7B9F7827A30BA75EB840535
+B2A2C8F92AD166CE93D277314A4C690C47DB847F73BFE1049631CDDB9124FD76
+2753AA8DB187C216AFB74F76299B3C51610D74CF31321BBFEB5CFCA7D213C896
+D1B8E57EFC05695F2F73> |-
+/e <1C60D8A8C9B08A95B1F07368C45D8D2AF4BC97E4CB216B20786BB8409E5C
+B0892E60E7F0AD9AC8433678C58AAD59736BF9700A3AEB0B5352F4A898A5EEFB
+C72A64BFB45B917D9879BD0577DAB96A0E86BECAB5E8A8A051E5E40886D5A00C
+EC53E0A3265FC74195574846689BF9F38086985C2DD3223390D51155F707CE86
+59EC1C65A75BE9A0BA862DB1A00FF6A01FCED7E6> |-
+/f <1C60D8A8C9B08A956BA65798425CE9B0A78F07A04AF2F8524751F181F94C
+EF756ACD6AB92BD09462A05FB08A9160A0AB5267B62445F916DEFC1DAF3F1FB4
+B3761F71CBE3290960500C788D04CB45BB0A2825753AA6E46495F35A08389AAA
+C80F35ADADFB7ACE340FEC03C9E5F9A50A8AD731E7A553A32F387574697F9CAB
+2E100B6DD6E3525398F6> |-
+/g <1C60D8A8C9B7A73DB58EA28807584EB19BC6EA1448A12312E623B90358A1
+63CFC67672A34CC74B0AEAADF24229DF1CCAA1488AE3E348FE2ACD572EA487EC
+9D77FBB0710AB421B03DD5B8AE5519B5C269E9648E819E7ECE806EEF16A6618D
+07D9AAB350E57F26F5259E8FCF9E5C2D96BBEAD16502F9E7819E854042DDB2BC
+674C39681CC2E5224219582BC7B59BBAEF869C9DF91CA7770A97BAD53C3C3A99
+175BA8F0A5744B5969D3BC15831A95918F7C707E41F5D87B8DB2D57378BC9C29
+7DAE69E4BF438246E63F565B22D86CBE28DEF748262FB9FF82A88935451D6280
+A28F1AD964E6E476D5779321E42D3A86BE41122F1BED36C3DC47E1E01C225345
+98D0431873197ABE1C8EC03B4011E4B26D249635BDBABB8E5B69BE07AFA65F88
+EAF6> |-
+/o <1C60D8A8C9B7A73DCEB07E09D16841D605E4F67059E6B258F546B80703E4
+CDAF20027B900118209D5372F965F2045D50C02A29110A048C891DEBA3210CDF
+C5CDE2309C0CDE0E4855E9F6D8954C4C68826A14AD2E4C6227A036D85D304D6A
+96FEAA92DEC3CD1B9F4AD57B5F1EBAB070FE911461A7D5B958F5> |-
+/endash <1C60D8A8C9B7A73DB9B60A0DBA4B5FB3A045D6B65F12EE5E3DC48D3
+43D8E> |-
+/.notdef <1C60D8A8C9B08A959E2F69652E8B8F> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLJ+CMR10 /GLAAAA+CMR10 findfont ct_VMDictPut
+/YNDRLJ+CMR10*1
+[47{/.notdef}rp /slash /zero /one /.notdef /three /.notdef /five
+11{/.notdef}rp /A /.notdef /C 5{/.notdef}rp /I 2{/.notdef}rp /L
+/M /N /O /P 2{/.notdef}rp /S /T /U
+11{/.notdef}rp /a 3{/.notdef}rp /e /f /g 7{/.notdef}rp /o
+11{/.notdef}rp /endash 132{/.notdef}rp]
+YNDRLJ+CMR10 nf
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-31.697 -36.8879 mo
+(MAC1105/T3{Page5of10{SOLUTIONS)
+[9.13578 7.19498 7.193 4.9813 4.9813 4.9813 4.98129 4.98131 7.19299 92.4629 8.30183 6.50756
+4.98131 4.98129 7.74393 8.30185 4.98129 6.36908 4.98129 8.30182 195.931 5.53922 7.75089 6.22662
+7.47195 7.19296 3.59644 7.75098 7.47192 0 ]xsh
+%ADOBeginSubsetFont: GISAAA+CMBX10 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /GISAAA+CMBX10 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1994 Blue Sky Research and Y&Y, Inc. http://www.YandY.com) def
+/Weight (Bold) def
+/ItalicAngle 0 def
+/BaseFontName (CMBX10) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 56 /eight put
+def
+/UniqueID 5000768 def
+/FontBBox {-301 -250 1164 946} def
+end
+systemdict begin
+dup /Private
+14 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-11 -0 686 697 444 453 655 676] def
+/OtherBlues [-201 -194] def
+/BlueScale 0.04379 def
+/StdHW [47] def
+/StdVW [114] def
+/StemSnapH [40 47] def
+/StemSnapV [114 142] def
+/ForceBold true def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+3 dict dup begin
+/period <1C60D8A8C9B08A9560D4C2F3A74D92838E83B7DC14B89478B799496
+0CFDC6D2144A34A20CA36052335682902BE7739DD> |-
+/eight <1C60D8A8C9B7FCB6A4EC6CCC71FFBC41969F86A86636A65E5BD14FD4
+EBD93FCE205F86ECC615335CAFE8E2240019DB970894F9979E3FDF252D8A9472
+1B680E23D2DF204A99891D5AD0E347695938A6FCE4923A098978EC0AC2A3894C
+8A94767FEBA61293F9C489BAC7A89726BFA765D56F2D198E99D500D81046ACE1
+5301FD9FB36D2F2E4EAA017CCF306EAEC8E157B40FDE6DC2FA713180A587E730
+6AD0870F441697503D> |-
+/.notdef <1C60D8A8C9B08A95899606B6B060A7> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLK+CMBX10 /GISAAA+CMBX10 findfont ct_VMDictPut
+/YNDRLK+CMBX10*1
+[46{/.notdef}rp /period 9{/.notdef}rp /eight 199{/.notdef}rp]
+YNDRLK+CMBX10 nf
+YNDRLK+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+-25.9685 -7.00012 mo
+(8.)
+[5.72846 0 ]xsh
+249.382 99.488 mo
+253.706 97.944 li
+249.382 96.4 li
+251.112 97.944 li
+f
+gsave
+253.705 187.944 mo
+1.70499 187.944 li
+1.70499 7.94397 li
+253.705 7.94397 li
+cp
+clp
+.797 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+false sadj
+1.70499 97.944 mo
+251.111 97.944 li
+@
+grestore
+.399 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+false sadj
+127.705 101.929 mo
+127.705 93.959 li
+@
+155.705 101.929 mo
+155.705 93.959 li
+@
+183.705 101.929 mo
+183.705 93.959 li
+@
+211.705 101.929 mo
+211.705 93.959 li
+@
+239.705 101.929 mo
+239.705 93.959 li
+@
+127.705 101.929 mo
+127.705 93.959 li
+@
+99.705 101.929 mo
+99.705 93.959 li
+@
+71.705 101.929 mo
+71.705 93.959 li
+@
+43.705 101.929 mo
+43.705 93.959 li
+@
+15.705 101.929 mo
+15.705 93.959 li
+@
+129.25 12.268 mo
+127.706 7.94403 li
+126.162 12.268 li
+127.706 10.5391 li
+f
+.797 lw
+127.705 187.944 mo
+127.705 10.538 li
+@
+.399 lw
+123.72 97.944 mo
+131.69 97.944 li
+@
+123.72 77.944 mo
+131.69 77.944 li
+@
+123.72 57.944 mo
+131.69 57.944 li
+@
+123.72 37.944 mo
+131.69 37.944 li
+@
+123.72 17.944 mo
+131.69 17.944 li
+@
+123.72 97.944 mo
+131.69 97.944 li
+@
+123.72 117.944 mo
+131.69 117.944 li
+@
+123.72 137.944 mo
+131.69 137.944 li
+@
+123.72 157.944 mo
+131.69 157.944 li
+@
+123.72 177.944 mo
+131.69 177.944 li
+@
+%ADOBeginSubsetFont: GLAAAA+CMR10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLJ+CMR10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/two <1C60D8A8C9B7A73DC50B0411757B441481CCF7EF812EEB9B3F6A07BD51
+606BCA866C4BD24CA34E86B9CA5A529B664F3EEDB6B4AF8A2B994DB57B49473E
+162231CB943675FE63E9B92B8AEBB62FB22456EC4173C66EF6C2F34FFEC22ACA
+E77FFFAAD70F3754CADC0D2CF63CB6D286D930AEA5A613E5AB9CB004BEAEBADD
+D070EDAF4FF25FDB6421F540D58D2C7A3FC40290CBCF831BE1B89B7F> |-
+/four <1C60D8A8C9B7A73DC579B9C1587087D4749982A674065FCDD01CF53F5
+4AF89DAF22339F0A467CE8D8CC25949B03A9DEFE86592098644AED5891ABD8D0
+71237FB9B66EF7648D767508B0BB1075A0AC676C770BFE6D0E818B53FD7884E4
+D8E6A983234A6E833EF72FF7FE587> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLJ+CMR10 /Encoding get
+dup 50 /two put
+dup 52 /four put
+pop
+%ADOEndSubsetFont
+/YNDRLJ+CMR10*1
+[47{/.notdef}rp /slash /zero /one /two /three /four /five
+11{/.notdef}rp /A /.notdef /C 5{/.notdef}rp /I 2{/.notdef}rp /L
+/M /N /O /P 2{/.notdef}rp /S /T /U
+11{/.notdef}rp /a 3{/.notdef}rp /e /f /g 7{/.notdef}rp /o
+11{/.notdef}rp /endash 132{/.notdef}rp]
+YNDRLJ+CMR10 nf
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+113.758 81.1542 mo
+(1)sh
+113.758 61.1542 mo
+(2)sh
+113.758 41.1543 mo
+(3)sh
+113.758 21.1544 mo
+(4)sh
+%ADOBeginSubsetFont: BUZAAA+CMSY10 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /BUZAAA+CMSY10 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1996 Y&Y, Inc. All Right Reserved. http://www.YandY.com) def
+/Weight (Medium) def
+/ItalicAngle -14.035 def
+/BaseFontName (CMSY10) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 161 /minus put
+def
+/UniqueID 5096651 def
+/FontBBox {-29 -960 1116 775} def
+end
+systemdict begin
+dup /Private
+13 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-24 -0 683 705] def
+/OtherBlues [-135 -124] def
+/BlueScale 0.04379 def
+/StdHW [40] def
+/StdVW [40] def
+/StemSnapH [40 56] def
+/StemSnapV [40 56] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+2 dict dup begin
+/minus <1C60D8A8C9B08A946182837629008DF7702985522C1BEB4D11AB8A6B
+5589D8B615C840A4D8FD35DE7CD09D4C55DA8FE732830DDE> |-
+/.notdef <1C60D8A8C9B08A959E2F69652E8B8F> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLL+CMSY10 /BUZAAA+CMSY10 findfont ct_VMDictPut
+/YNDRLL+CMSY10*1
+[161{/.notdef}rp /minus 94{/.notdef}rp]
+YNDRLL+CMSY10 nf
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+106.009 120.739 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+113.758 120.739 mo
+(1)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+106.009 140.738 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+113.758 140.738 mo
+(2)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+106.009 160.738 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+113.758 160.738 mo
+(3)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+106.009 180.738 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+113.758 180.738 mo
+(4)sh
+153.215 113.33 mo
+(1234)
+[27.9999 27.9999 27.9999 0 ]xsh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+93.3403 113.33 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+101.089 113.33 mo
+(1)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+65.3404 113.33 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+73.0894 113.33 mo
+(2)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+37.3406 113.33 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+45.0895 113.33 mo
+(3)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+9.34069 113.33 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+17.0896 113.33 mo
+(4)sh
+.797 lw
+1 lc
+[0 2 ] 1 dsh
+true sadj
+15.705 178.944 mo
+15.705 16.944 li
+43.705 178.944 mo
+43.705 16.944 li
+71.705 178.944 mo
+71.705 16.944 li
+99.705 178.944 mo
+99.705 16.944 li
+127.705 178.944 mo
+127.705 16.944 li
+155.705 178.944 mo
+155.705 16.944 li
+183.705 178.944 mo
+183.705 16.944 li
+211.705 178.944 mo
+211.705 16.944 li
+239.705 178.944 mo
+239.705 16.944 li
+@
+[0 2.8 ] 1.4 dsh
+14.305 177.944 mo
+241.105 177.944 li
+14.305 157.944 mo
+241.105 157.944 li
+14.305 137.944 mo
+241.105 137.944 li
+14.305 117.944 mo
+241.105 117.944 li
+14.305 97.944 mo
+241.105 97.944 li
+14.305 77.944 mo
+241.105 77.944 li
+14.305 57.944 mo
+241.105 57.944 li
+14.305 37.944 mo
+241.105 37.944 li
+14.305 17.944 mo
+241.105 17.944 li
+@
+gsave
+253.705 187.944 mo
+1.70499 187.944 li
+1.70499 7.94397 li
+253.705 7.94397 li
+cp
+clp
+0 lc
+[] 0 dsh
+false sadj
+1.70499 -2737.06 mo
+4.24998 -2552.98 li
+6.79598 -2376.98 li
+9.34098 -2208.89 li
+13.759 -1924.66 18.654 -1640.43 24.614 -1356.22 cv
+27.16 -1238.41 li
+29.705 -1127.06 li
+34.562 -922.47 39.996 -717.87 47.523 -513.361 cv
+50.069 -447.207 li
+52.614 -385.893 li
+55.159 -329.236 li
+57.705 -277.057 li
+61.675 -200.65 66.029 -124.124 72.978 -47.9209 cv
+75.523 -22.0378 li
+78.069 .810059 li
+80.614 20.802 li
+83.159 38.1201 li
+85.705 52.9441 li
+88.25 65.4531 li
+90.796 75.8291 li
+93.341 84.251 li
+95.887 90.9001 li
+98.432 95.957 li
+100.978 99.6001 li
+103.523 102.012 li
+106.069 103.372 li
+108.614 103.861 li
+115.605 104.102 121.972 97.1501 128.978 98.03 cv
+131.523 98.7891 li
+134.069 100.48 li
+136.614 103.282 li
+139.159 107.377 li
+141.705 112.944 li
+144.25 120.164 li
+146.796 129.217 li
+149.341 140.284 li
+151.887 153.545 li
+154.432 169.18 li
+156.978 187.369 li
+159.523 208.293 li
+162.069 232.132 li
+164.614 259.067 li
+167.159 289.277 li
+177.002 416.085 182.398 543.453 187.523 670.524 cv
+190.069 738.33 li
+192.614 811.215 li
+195.159 889.359 li
+197.705 972.942 li
+206.34 1268.27 212.532 1563.68 218.069 1859.07 cv
+220.614 1999.72 li
+223.159 2147.62 li
+232.552 2709.84 239.689 3272.1 246.069 3834.36 cv
+248.614 4064.6 li
+251.159 4304.06 li
+253.705 4552.94 li
+@
+grestore
+%ADOBeginSubsetFont: GISAAA+CMBX10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLK+CMBX10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/A <1C60D8A8C9B08A941DDBC3AF1C109AC61AF06DEF14497758E2577FC09808
+E2F83FED36FAC5C5DF9845F9151204EBE19A62A093C0C714296A8AEB5EA72983
+7304C560208E23A9B00E450B7895C64B840FF7B8D2624ED826E8D6D1CB5BC276
+3958AE415A241BD617EA928FD9818043D58C39BCDA5256A3F17DFF2FADD0CDFE
+4A5999053732F0E5CE29974C519106> |-
+/W <1C60D8A8C9B08A949EE89938EFD2B089915D4CA87E50351E8DD3F3914A85
+384965AB9720D1BDB02951199DD63BE938B296E11B8132C78ABED307E15E2C96
+04E0EEA5C8FB1D25F45078482232C4120E0C6D7ECC100B9CF59823239764E960
+AC203F05154297337EBEC8D426CABE71C6D1BABE3D2EE87EB4EC26DC5A175D2E
+1776DC7CB846E1C76A588A844BC3111554540D100610F9152C35EB0670475763
+7F97762997D01BB6BF9BF94F9DBF981A5DB94B101F849599A265> |-
+/a <1C60D8A8C9B08A95C60527548E754D765DB4EDA6BA0D2CC6D8A620394D95
+5731400D0093175DD4FDCB6F936DAB2E93BD9C1B54BF99F619E92F88F8093B57
+6575F38778E5971C238BB03705C8902A6FCFED1FF202619A2D8A4C3FD818942E
+E7E0400EE37C1268C755A54355454E010823DC11303C9CDCFFF1370DF47DDE8E
+0505D81ACB493683AAFD9A5B8B94F66FF9ECA66884B26F31C72D900D51753830
+4DA83D95E97AC104F2FDC53254E575E01E9C7E8025E9> |-
+/e <1C60D8A8C9B08A95D1DE8AA71D3914AC9DDC5BFDDE55301EE17DAE184B08
+E53C36FBF9A44FDF3309DBE08895DBFECCF103737D7326528346FD01CD1D9FC3
+874638E8C50ADE3B494897353EB3188B512405DD1BA5DA59E8C179230F7C8D15
+AFCEA2228DAC03C77D614B36A41126CE831B41CDF160A67B175BB36C52353A72
+5460F4256C> |-
+/k <1C60D8A8C9B08A95F1118A977C6242CC6F5E327BF4A2BCE6E631EAC27F33
+5285F637895192724CE2C53641A392411149B8A3F127ECD7DEB11923D35A35EC
+238223B6B1C9CF9675A0C83B3A0C95C18823DF1B6F368BBFEEE7185E77AE9040
+378C34B27A11D9EE3C9721E2EAFF82B925C0F3ABE698646F0C4A57CEC100EA29
+86134B063D8450710541B66D42FC62B89A6AB4B6D6C05FC0E5F8EF9F1253768A
+DA78BF283C77228ACE6FD83E9384> |-
+/o <1C60D8A8C9B7FCB6A15C803B3B972EE31F5A721ABF9B8490D1BCABFAF507
+3D6D0835AA64493F9EC5B8BAE86BFF5C8028599ED438B3807899BF98EB3DF2EE
+9BBE5DC52FDB77ACA45EA052A40521B13F529CBBBB8B40F192297C658BE1CF97
+9B5618AA4355B6A77C9FC09641> |-
+/r <1C60D8A8C9B08A95A5BEE1199161ADD44E1E8B27A5C75D09130CF9546F37
+4B2A22381A06BD734F2C4BF093B03F9AF2D0D4C8BE8AA6899632B1BDCEA5F8FA
+27D0647BB27FC7927912A6761C3F8A51172D73B92082F06EFA277243DBD96EE1
+6421DB7B86390678EAD31E9D8E521BD186BAE7A8A68851384DC5E4933D7D1C5E
+E5A527356EDB77> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLK+CMBX10 /Encoding get
+dup 65 /A put
+dup 87 /W put
+dup 97 /a put
+dup 101 /e put
+dup 107 /k put
+dup 111 /o put
+dup 114 /r put
+pop
+%ADOEndSubsetFont
+/YNDRLK+CMBX10*1
+[46{/.notdef}rp /period 9{/.notdef}rp /eight 8{/.notdef}rp /A 21{/.notdef}rp /W
+9{/.notdef}rp /a 3{/.notdef}rp /e 5{/.notdef}rp /k 3{/.notdef}rp /o
+2{/.notdef}rp /r 141{/.notdef}rp]
+YNDRLK+CMBX10 nf
+YNDRLK+CMBX10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+324.775 14.8624 mo
+(WorkArea)
+[10.8911 5.72845 4.72226 9.86591 8.65753 4.72226 5.25021 0 ]xsh
+%ADOBeginSubsetFont: BUZAAA+CMSY10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLL+CMSY10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/bullet <1C60D8A8C9B7A73D8D0B3FCDAA7E46FB68E7B1A6E412E25369E4ABB
+A70D277941C6A488EED866AD61E359C443EB0FEA5> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLL+CMSY10 /Encoding get
+dup 178 /bullet put
+pop
+%ADOEndSubsetFont
+/YNDRLL+CMSY10*1
+[161{/.notdef}rp /minus 16{/.notdef}rp /bullet 77{/.notdef}rp]
+YNDRLL+CMSY10 nf
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+283.593 34.7875 mo
+(\262)sh
+%ADOBeginSubsetFont: GLAAAA+CMR10 AddGlyphs
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+systemdict begin
+YNDRLJ+CMR10 dup
+/Private get dup rcheck
+{begin true}{pop false}ifelse exch
+/CharStrings get begin
+systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if
+/parenleft <1C60D8A8C9B08A958B2129D6E9761120E2D623F206A8BB61D8ED
+90A20EE239C62172B553BFF416342D6CD99C95C515CA225C40039DBAF08CE4F0
+55B08F39C15D29C99EF3EDD066CCCEF8932365A3BB1620FA5F0BCE8AF21A5BDE
+C0FFD55FA45F247FC811007CB408F0DCDD3AE01E3246> |-
+/parenright <1C60D8A8C9B08A958B2129D6E9761120E2D623F206A8A207F03
+DEA8F466C0D4F860EDF515D421F89285FC2D8EC76F5E903EDE1B5CFFAEC5DEA9
+22C7FC4A51953A99A5FB1F96793348D816F60492670058F4DEA6D328AB20FBAD
+B3C1B57A79D8CCD13A3C6D068BAD5F09F347ED0C895> |-
+/hyphen <1C60D8A8C9B08A959E2F69652E8B76AC2AC5B4F1FA8662A86AEED57
+846929C2FBC07360B> |-
+/colon <1C60D8A8C9B08A95708109816759149241680C741B6923EBD56E6248
+E5269499A7D548A5AC3ECB516C4A5048666940A11AD8CB54F4BA847274447EEB
+614F54B956BBCFCAD8E88A403FBD4464DA283ACB> |-
+/semicolon <1C60D8A8C9B08A9570810981675918D0BCF1CD202F5F8524F1CF
+461D4270459E44DB560BC854C3F48DFD92347C27A6AAF0E2B1A04AFEB82D8D46
+6FB78A9BF2E74CE09AE4A8F352791B5C7110FA6307B2916ECC9F5904CC094CEE
+59D67B4016AFD5BCFCA64E9EC736BD726D1A09B76CECE761EBE5219FDE764D2A
+9C6D289DBA39E76263> |-
+/equal <1C60D8A8C9B08A946182837629008D945C50B3BD77B79680F3B07BDA
+6301D2521ADF665EADEA779B8650AC6CDB556621631497A3BE00C67036F6EB06
+05A36A2C0EE306396247E4A79F8EFAE500D78B59605F041F11> |-
+/b <1C60D8A8C9B08A95C5897169EED96641DA8B10CA087E6B7A5588052BABB7
+BC0836B12A49068694BF7254A2B820A876E020738250AC32ED44C3A7F2C5F700
+C2D03E307AFB7135F6415FEEB6D856569E9D5429B4DD3F524606607A7502F4FA
+00BE0184FC677554B2B6367E60A281A4837A2231515AF09B33399B7D5C3D2E8F
+3A2971F2933C4A4CAAA727A80DBDC9692BD6B38D543D422C14068650D2C61B6B
+E587855459543E451B14A31F96D9B341DFF415> |-
+/d <1C60D8A8C9B08A95C5897169EED96D33CB6A9013DDE3D04C2845E595598F
+3E2E6D79295DF7CC9B6C00D2CF2AC2502697856E5474C945441376692CB09ED9
+25CE9D4F710C7DE089B5E658450CEECC611DD1F25787624443E710373775DB0D
+7A6478B3FD4F82DF4FC109429D4EADCED1BD77A35BF25A1C1E584B0EB23CE621
+6847A21EE88B35D72221C7F9F0705E61C9F9C0A224456A04D3E81DE0BD98422F
+FA8C7335713899937F5FFEC7771BB8FDAEE53DE3E6> |-
+/h <1C60D8A8C9B08A95C5897169EED9664BED359D179BDDBB0B44F78A354068
+F188259C421AB0565D2C93368C7FE6E0A9F40BB196D1F23D06A9B4099431512B
+C136412B8071F881A48FA8A97D03ACD06EBB8221F2FCB171D9A905549A8F7881
+2735FA48F2EC00ACCEB309920B412B3F60D0173EF224E4CB3F5C1DAD9CC6147F
+9ADED8EC6C9533B7B1AABCF5D1E9B7F36A2D4B8D2B26EAE8EA> |-
+/i <1C60D8A8C9B08A9570810981675968AD25F24D2B3EAE33A4AEDADBE9B65D
+A53E9F2E54B16133284CA9914BED3880C793207FBDC7926300AD07E6E54407B5
+1EA082FB5EE3816A6A23A8296A947037E4E873086619D7E86B5A60AFA576E554
+D14C9B74D403098ADE85F71880A3E75D7FC1> |-
+/k <1C60D8A8C9B08A95D222871B45C8170346D4B3692EE324314ECB68C750E8
+0C39C0E118E6175CCD69769E2118B02E8AEF864A1ADB8D0BF5A5FFDD4A9B9B6C
+C867F43FFF5A7BBEB959851C5A4053DF1F3B8EBF64DEEC6B682D7055139D4103
+B0A63AD1D8193F253FA365D16CC3EC1AC7C7AEA533CCF6F8272FF6B8CD1FC7B4
+0DE006133FBB2B23E8E1776C461B4D8ABE09C8DE32B25BAD44EC36CACD378C29
+9496103B1CB809290EFAF69E7582E8754F6B25D7A0FD> |-
+/l <1C60D8A8C9B08A9570810981675968AD25F317189905083B97CD6CD1B880
+05B79B666989E13C0F8D0889AD0162C7E87274D188EBBD1A911FDD0B6E360AA1
+C515725198B9106B157680FC> |-
+/n <1C60D8A8C9B08A95C5897169EED9664BED359D179BD38846B55E34D4CAA6
+E85E9CF3F20D5FF6B35F1C9AAE2A542B7B24E087B6004A4C7219997095CC0DD0
+7A15DB83B5FEAD13F209441FFD364AD3DBF6E16129F3599BACA005A523490ABC
+41E4DF320ACE384037EE1D352E3FAD8A9E2CECBD75A999F7B655F4FFBFAC6FFF
+84029A8DF710DBB0D7CD4C1D20367E79BC4E3121199FA9593C876B29EA793F10
+2A1E36BE8056D0377A> |-
+/p <1C60D8A8C9B08A95C5897169EED91609D9E4D5F91353B4B61FEC4EAC5FAD
+7B5032144CF9ADF0F974C4F1789F7935ECC14F06F084A964A5CA17285CA0C9EC
+1B8F57A0E66AEAF75BA11AE734E6416585ED4DB12A3372EA2BA1BABC0DE7BE87
+584CD6EA8819CE99CB18F04E8ECD619D7E02CDE60A0AA18597DE62AF13ABCC5A
+5F1D59EBFBBEF560144EF0DCE1B387B4BC40F158468D6A4DE477659B50190482
+6F081FC4942E5187D9F03F6D1BD471F55D6300> |-
+/r <1C60D8A8C9B08A9584DCB847BA986212E50A0E258C2648145E7BCFAC2BA8
+6C36E84B654FABD35F6BE558D4B54676EA44C57F6EF668BC4866822048422FD6
+D8B608EB2C1C67EC3EE3CEBDD94E9A9214F99F9DA8EE2F6900EB47053AC763EE
+DABCA0360701D8CB383B9ECCD7B848D18CFB88761A167471DE407F7BED4BC50B
+779C4D57BF133C3E4777AA4605171C6D> |-
+/s <1C60D8A8C9B08A9586D4F7B21AA9B0967A13D9D7A42FE5E3505E2F3EE7CA
+FF99F258F00E5A08E889C3CC5D8ACF7164CD2AC0013AEF91C534D4ACEB36DB05
+CE0E820904C7EB6E6797C2D5FB5E96476FD3694427C3F770022BFE939EC57571
+FAC1F965E0A7F32B36C86522DA3AFB3A309E4B5D72F0E56F1BEB5C7254CECC22
+9B1219F95DA80187F2FFAF15E03AF5B396BE650B53989F1A64B4AA9655D1019B
+496166D38FC8961ACDA2D0B1533422796A114C02DCAA98A8558155EE2C970442
+944A032E8A6A4004C15A48F9176AE45E44068C23BC> |-
+/t <1C60D8A8C9B08A958B2129D6E9766AD6B3247B9CBDFB0724765D43ED23A7
+B2BC7B24077C209594776C48799589E3DF7269407A6893D4C106057122D99E3F
+649ACAFBE1812EEAA6C4DCDDD716BEB7694626BFFCAE715C15EF0FD8CE9F6FE4
+E96B03> |-
+/u <1C60D8A8C9B08A95C5897169EED96D33CB6A8CCD6F539BADC574F30FA019
+2FAAA0351E8C93175F4B6BE4D2DCA8A13E4F01BEC5788441B5C71C1247369B6B
+73137454B1C207EA4F43D533FE87512BAD8DD4F3DBBECD9A7A1CE3F33A4D3F31
+6952FDB339B4B6A937009D6EC9821D8553981B7D8AABC3E750369071> |-
+/v <1C60D8A8C9B08A95D222871B45C81C126204E8A3F3EFC2EBF937B1E5F2B8
+737EDCCFF78DB8693FA0E7B559CFAC0A233112105FC1A8807ADD3013D4AE86C4
+38318F1223CADD606642DF7E9A8EE9BE743E975DA759D856D52F7E927FE33606
+3979ED38AB2E1EA4CB4F371A1EB04E6C5B864C9DB5271435AB2DE7D9DE15A6B1
+D9E3FD555F015DADE467> |-
+systemdict /gcheck known {setglobal} if end {end} if
+end
+YNDRLJ+CMR10 /Encoding get
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 98 /b put
+dup 100 /d put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 110 /n put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+pop
+%ADOEndSubsetFont
+/YNDRLJ+CMR10*1
+[40{/.notdef}rp /parenleft /parenright 3{/.notdef}rp /hyphen /.notdef /slash /zero
+/one /two /three /four /five 4{/.notdef}rp /colon /semicolon
+/.notdef /equal 3{/.notdef}rp /A /.notdef /C 5{/.notdef}rp /I
+2{/.notdef}rp /L /M /N /O /P 2{/.notdef}rp /S
+/T /U 11{/.notdef}rp /a /b /.notdef /d /e
+/f /g /h /i /.notdef /k /l /.notdef
+/n /o /p /.notdef /r /s /t /u
+/v 4{/.notdef}rp /endash 132{/.notdef}rp]
+YNDRLJ+CMR10 nf
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+293.556 34.7875 mo
+(Theend-behaviorislike)
+[7.19299 5.53922 7.24979 4.4234 5.53918 5.53922 3.31747 5.81616 4.4234 5.53918 4.70435 5.26025
+2.76959 4.98129 6.73172 2.76962 6.75162 2.76959 2.76962 4.98328 0 ]xsh
+%ADOBeginSubsetFont: WRBBAA+CMMI10 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /WRBBAA+CMMI10 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1996 Blue Sky Research and Y&Y, Inc. (978) 371-3286) def
+/Weight (Medium) def
+/ItalicAngle -14.04 def
+/BaseFontName (CMMI10) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 120 /x put
+dup 121 /y put
+def
+/UniqueID 5087385 def
+/FontBBox {-32 -250 1048 750} def
+end
+systemdict begin
+dup /Private
+12 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-22 -0 683 705 431 442 453 466] def
+/OtherBlues [-205 -194] def
+/BlueScale 0.04379 def
+/StdHW [31] def
+/StdVW [72] def
+/StemSnapH [25 31] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+3 dict dup begin
+/x <1C60D8A8C9B08A95C3B1459DC8650F9F96183FC46268F5BDA744B05C84F8
+C7E5FE6BFCA9D4C8BD3488080E8FC96F34EA177DCAE190D27F37102D2F45514A
+ECF6E4A3B2E6F401810D0AF13E4BDFDB8118476E04C9DD93F8884F46C9ABEE13
+C8E7992449902F6BC3D518B2A70293976C8BCE67ED913D975C52E884BF7F46CE
+8DF8170D79262260A6CB5A6A088C0A964E0271DA63944ABA9C96D1AA58CB590F
+97DC9C8372606676C2CA18B1A9303EBF11B510FAB8A33E9B530D274E48DD09EE
+8829EC16181BBC16C4E81343ACB5386F22A9C0CA2C23959102E833> |-
+/y <1C60D8A8C9B08A95A3A690DEE11C2ACFF7516D4A7CDA884FB3B130648C63
+2F41B68B5E071E6BAD692658125A4CE9A4427A55054BF5DABFF855AF9D186215
+1F50AD5D2EE36E064C9718B8694EF83525324184D7DD07A10B9FD203C707D849
+3E926469CD1C36E94D5785557A2D95B556774E51CEFBAE2CC8AB735FFF293AFE
+FA32B8D1FD5C52EC860AA6EC20816B24BD1EB69FE8581708322D6F09A08B3182
+91EF57EAE554A00C60D585B786E53371A6D3FB2D8729C3F2C51DB65ABF8CA421
+EEB103AED2CB924D829D66429CF6664CDEAFEEC4AD07C95E7FE8BCAB5D2A1AD6
+731779D5> |-
+/.notdef <1C60D8A8C9B08A959E2F69652E8B8F> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLM+CMMI10 /WRBBAA+CMMI10 findfont ct_VMDictPut
+/YNDRLM+CMMI10*1
+[120{/.notdef}rp /x /y 134{/.notdef}rp]
+YNDRLM+CMMI10 nf
+YNDRLM+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+399.866 34.7875 mo
+(y)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+407.875 34.7875 mo
+(=)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+418.391 34.7875 mo
+(\241)sh
+YNDRLM+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+426.14 34.7875 mo
+(x)sh
+%ADOBeginSubsetFont: KEDBAA+CMR7 Initial
+%ADOt1write: (1.0.24)
+%%Copyright: Copyright 2011 Adobe System Incorporated. All rights reserved.
+13 dict dup begin
+/FontType 1 def
+/FontName /KEDBAA+CMR7 def
+/FontInfo 8 dict dup begin
+/Notice (Copyright (c) 1988 - 1992 Blue Sky Research and Y&Y, Inc. http://www.YandY.com) def
+/Weight (Medium) def
+/ItalicAngle 0 def
+/BaseFontName (CMR7) def
+/WasEmbedded true def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 51 /three put
+def
+/UniqueID 5000790 def
+/FontBBox {-286 -250 1122 967} def
+end
+systemdict begin
+dup /Private
+13 dict dup begin
+/|- {def} def
+/| {put} def
+/BlueValues [-20 -0 683 703 431 446 664 674] def
+/OtherBlues [-205 -194] def
+/BlueScale 0.04379 def
+/StdHW [36] def
+/StdVW [79] def
+/StemSnapH [28 36] def
+/StemSnapV [79 95] def
+/password 5839 def
+/MinFeature {16 16} def
+/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def
+/Subrs 5 array
+dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> |
+dup 1 <1C60D8A8C9C3D06D9E> |
+dup 2 <1C60D8A8C9C202D79A> |
+dup 3 <1C60D8A849> |
+dup 4 <1C60D8A8CC3674F41144B13B77> |
+def
+put
+dup /CharStrings
+2 dict dup begin
+/three <1C60D8A8C9B08A95C25148D4A67F69EFB9DDFA5ECA5AE37566D87066
+172F8CABE2B2CB84CA762EB5E603C8A9A699CCCFA6A0578E3DA76E6C9E7B5A84
+45F01D818A380DD4AC46AFDB5422B8800FEF2E8AFDA86EDD8199C34D64992E4F
+43992CF1D54B07E3F575480A9A0B868375A4E2A9893BE0AEBB713690AB6C5B93
+E6D8D619357F90F56F58A8525CC0A1BD91DA9365507B440F549B60D4E7E5CBB3
+769D4C82F061F9E20A25AD23418551374D804A6B25C8CE003D> |-
+/.notdef <1C60D8A8C9B08A958AA685092D4752> |-
+end put
+end
+dup /FontName get exch definefont pop
+end
+%ADOEndSubsetFont
+/YNDRLN+CMR7 /KEDBAA+CMR7 findfont ct_VMDictPut
+/YNDRLN+CMR7*1
+[51{/.notdef}rp /three 204{/.notdef}rp]
+YNDRLN+CMR7 nf
+YNDRLN+CMR7*1 [6.9738 0 0 -6.9738 0 0 ]msf
+431.835 30.6743 mo
+(3)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+283.593 54.713 mo
+(\262)sh
+YNDRLM+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+293.556 54.713 mo
+(x)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+299.25 54.713 mo
+(-int:)
+[3.31747 2.76959 5.26224 3.87555 0 ]xsh
+YNDRLM+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+325.685 54.713 mo
+(x)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+337.496 54.713 mo
+(=0\(even\);)
+[13.868 10.3123 3.87552 4.4234 4.98328 4.4234 5.53922 3.87552 0 ]xsh
+YNDRLM+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+397.897 54.713 mo
+(x)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+409.708 54.713 mo
+(=)sh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+423.574 54.713 mo
+(\241)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+431.323 54.713 mo
+(1)sh
+293.557 66.6682 mo
+(\(odd\))
+[3.87552 5.25827 5.53922 5.53918 0 ]xsh
+YNDRLL+CMSY10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+283.594 86.5933 mo
+(\262)sh
+YNDRLM+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+293.557 86.5933 mo
+(y)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+298.799 86.5933 mo
+(-int:)
+[3.31747 2.76959 5.26224 3.87555 0 ]xsh
+YNDRLM+CMMI10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+321.623 86.5933 mo
+(y)sh
+YNDRLJ+CMR10*1 [9.9626 0 0 -9.9626 0 0 ]msf
+329.971 86.5933 mo
+(=0\(passesthroughori-)
+[10.8572 8.50607 3.87552 5.53922 4.98129 3.92523 3.92523 4.4234 7.45001 3.87552 5.53922 3.9053
+4.98129 5.53922 4.98129 9.06396 4.98132 3.90533 2.76959 0 ]xsh
+293.557 98.5485 mo
+(gin\))
+[4.98129 2.76962 5.53918 0 ]xsh
+grestore
+grestore
+pgrs
+%%PageTrailer
+[
+[/CSA [/0 ]]
+[/CSD [/0 ]]
+] del_res
+/YNDRLM+CMMI10*1 uf
+/YNDRLM+CMMI10 uf
+/WRBBAA+CMMI10 uf
+/YNDRLN+CMR7*1 uf
+/YNDRLN+CMR7 uf
+/KEDBAA+CMR7 uf
+/YNDRLJ+CMR10*1 uf
+/YNDRLJ+CMR10 uf
+/GLAAAA+CMR10 uf
+/YNDRLL+CMSY10*1 uf
+/YNDRLL+CMSY10 uf
+/BUZAAA+CMSY10 uf
+/YNDRLK+CMBX10*1 uf
+/YNDRLK+CMBX10 uf
+/GISAAA+CMBX10 uf
+Adobe_AGM_Image/pt gx
+Adobe_CoolType_Core/pt get exec
+Adobe_AGM_Core/restore_mysetup gx
+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/eqexam/examples/graph.pdf b/texmf-dist/doc/latex/eqexam/examples/graph.pdf
new file mode 100644
index 00000000..7b5e8589
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/graph.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/hw.cfg b/texmf-dist/doc/latex/eqexam/examples/hw.cfg
new file mode 100644
index 00000000..57511627
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/hw.cfg
@@ -0,0 +1,12 @@
+\renewcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\underbar{\websubject}\\\@date}\hfill
+ \shortstack[l]{\underbar{\webtitle}\\\strut}\hfill
+ \shortstack[l]{\strut\underbar{Due \theduedate}\\\webauthor}}%
+}
+\rhead{\webauthor}
+\def\exrtnlabelformat{$\square$}
+\def\exrtnlabelformatwp{}
+\def\eq@sqslrtnlabel{}
+\everymath{\displaystyle}
diff --git a/texmf-dist/doc/latex/eqexam/examples/hw.cfg.txt b/texmf-dist/doc/latex/eqexam/examples/hw.cfg.txt
new file mode 100644
index 00000000..57511627
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/hw.cfg.txt
@@ -0,0 +1,12 @@
+\renewcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\underbar{\websubject}\\\@date}\hfill
+ \shortstack[l]{\underbar{\webtitle}\\\strut}\hfill
+ \shortstack[l]{\strut\underbar{Due \theduedate}\\\webauthor}}%
+}
+\rhead{\webauthor}
+\def\exrtnlabelformat{$\square$}
+\def\exrtnlabelformatwp{}
+\def\eq@sqslrtnlabel{}
+\everymath{\displaystyle}
diff --git a/texmf-dist/doc/latex/eqexam/examples/hw01.pdf b/texmf-dist/doc/latex/eqexam/examples/hw01.pdf
new file mode 100644
index 00000000..4ec71306
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/hw01.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/hw01.tex b/texmf-dist/doc/latex/eqexam/examples/hw01.tex
new file mode 100644
index 00000000..c9489aa2
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/hw01.tex
@@ -0,0 +1,166 @@
+\documentclass[12pt]{article}
+\usepackage[fleqn]{amsmath}
+
+% This set of parameters are used to distribute the assignment to the class (in paper form)
+% and for posting on the class web site (for those who missed the class).
+% With the pdf option the information contained in the keys below are placed
+% in the document info of the PDF document. If you don't have the AcroTeX Bundle
+% installed, remove the pdf option.
+\usepackage[pdf,forpaper,cfg=hw,nopoints,nosolutions]{eqexam}
+
+% Note: When using a PDF option like pdf, you need to specify a driver
+% that is passed to hyperref, web.sty etc. For example,
+% \usepackage[pdf,pdftex,forpaper,cfg=hw,nopoints,nosolutions]{eqexam}
+
+% This set of parameters are used to publish the solutions on the class web site, if
+% desired.
+% \usepackage[pdf,forpaper,cfg=hw,pointsonleft,answerkey]{eqexam}
+
+% Try compiling the file with vspacewithsolns
+% % \usepackage[pdf,forpaper,cfg=hw,pointsonleft,vspacewithsolns]{eqexam}
+
+% Note the use of the myconfigi parameter. This then inputs eqexami.cfg, there I
+% have placed some definitions specific to a homework assignment.
+
+\subject[AC2]{Advanced Calculus II}
+\title[HW1]{HW \#1}
+\author{Dr.\ D. P. Story}
+\date{Spring 2005}
+\duedate{01/28/05}
+\keywords{Homework due \theduedate}
+
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{HW}
+
+\ifanswerkey
+\begin{instructions}[Solutions]
+Below, please find a set of solutions to this assignment.
+\end{instructions}
+\else
+\begin{instructions}[]
+Assignments should be neatly-written, well-organized and concise.
+If you miss a class and need to get an assignment, see
+\[
+ \text{\url{http://www.math.uakron.edu/~dpstory/}}
+\]
+All class assignments and other announcements will be posted on
+this web site.
+\end{instructions}
+\fi
+
+\begin{eqComments}[]\S4.3, page 155, in the text\end{eqComments}
+
+\begin{problem}[4]
+Problem 15. Use the definition to prove $f(x) = x^2$ is convex on
+$\mathbb{R}$.
+\begin{solution}
+Let $[c,d]$ be any interval and let $t\in[0,1]$, we need to prove
+\begin{equation}
+ f\bigl( (1-t)c + td \bigr) \le (1-t) f(c) + tf(d)\label{eq0}
+\end{equation}
+or,
+\begin{equation}
+ \bigl( ( 1-t )c + td \bigr)^2 \le (1-t) c^2 + t d^2\label{eq2}
+\end{equation}
+We show that the right-side minus the left-side in \eqref{eq2} is nonnegative. Indeed,
+\begin{align*}
+ (1-t) c^2 + &t d^2 - \left( ( 1-t )c + td \right)^2 \\&
+ = (1-t) c^2 + t d^2 - \left( ( 1-t )^2 c^2 + 2t(1-t)cd + t^2d^2 \right)\\&
+ = (1-t)[1-(1-t)]c^2 - 2t(1-t)cd + t(1-t)d^2\\&
+ = t(1-t)c^2 - 2t(1-t)cd + t(1-t)d^2\\&
+ = t(1-t)( c - d )^2 \ge 0
+\end{align*}
+From the first and last lines we have $(1-t) c^2 + t d^2 - \left( ( 1-t )c + td \right)^2\ge0$. This is equivalent
+to the desired inequality~\eqref{eq2}. \eqfititin{$\square$}
+
+\medskip\noindent\textit{Alternate Solution}:
+We apply the \textbf{Cauchy-Schwartz Inequality}, page.~16, to the expression on the left side of line~\eqref{eq2}.
+For convenience, I paraphrase the \textbf{Cauchy-Schwartz Inequality}:
+\[
+ \left(\sum_{k=1}^n a_k b_k \right)^2 \le \left(\sum_{k=1}^n a_k^2 \right) \left(\sum_{k=1}^n b_k^2 \right)
+\]
+Applying this inequality, with $a_1 = \sqrt{1-t}$, $b_1 =
+\sqrt{1-t}\,c$, $a_2 = \sqrt{t}$, $b_2 = \sqrt{t}\,d$ (here,
+$n=2$, two terms), we obtain,
+\begin{align*}
+(1-t)^2 c^2 + t^2 d^2 &
+ \le \left( (\sqrt{1-t})^2 + (\sqrt{t})^2\right)\left((\sqrt{1-t}\,c)^2 + (\sqrt{t}\,d)^2\right)\\&
+ = (1-t)c^2 + td^2
+\end{align*}
+Thus,
+\[
+ (1-t)^2 c^2 + t^2 d^2 \le (1-t)c^2 + td^2
+\]
+which is line~\eqref{eq2}, what we wanted to prove.
+\end{solution}
+\end{problem}
+
+\begin{problem}[3]
+Problem 18. Prove the sum of two convex functions is convex.
+\begin{solution}
+Seems simple enough. Suppose $f$ and $g$ be convex on $I$. Let $[\,c,d\,]\subseteq$ and let $t\in[\,0,1\,]$. Then
+\begin{align*}
+ (f+g)\bigl( (1-t) c + td \bigr) &
+ = f\bigl( (1-t) c + td \bigr) + g\bigl( (1-t) c + td \bigr)\\&
+ \le (1-t) f(c) + tf(d) + (1-t) g(c) + tg(d)\\&
+ = (1-t) (f+g)(c) + t(f+g)(d)
+\end{align*}
+Thus, $(f+g)\bigl( (1-t) c + td \bigr) \le (1-t) (f+g)(c) + t(f+g)(d)$, which is what we wanted to prove.
+\end{solution}
+\end{problem}
+
+\begin{problem}[2]
+Problem 20. Give an example of a function that is convex and unbounded on $(0,1)$.
+\begin{solution}
+Let $ f(x) = 1/x $, $ x \in (0,1) $. This function is clearly unbounded and since $ f''(x) = 1/x^3\ge 0$ on $(0,1)$,
+it is convex on $(0,1)$.
+\end{solution}
+\end{problem}
+
+\begin{problem}[4]
+Problem 21. Define
+\[
+ f(x) = \begin{cases}
+ 2, & x = -1;\\
+ x^2, & -1 < x < 2;\\
+ 5, & x = 2
+ \end{cases}
+\]
+Show $f$ is convex on $[\,-1,2\,]$ but not continuous on $[\,-1,2\,]$.
+\begin{solution}
+Define $g(x) = x^2$, $x\in[\,-1,2\,]$. Then $g$ is twice differentiable on $[\,-1,2\,]$ and $ g''(x) = 2\ge 0$, hence,
+$g$ is convex on $[\,-1,2\,]$. Note that $ g(x) \le f(x) $ for all $x\in[\,-1,2\,]$.
+
+Let $[\,c,d\,]\subseteq [\,-1,2\,]$, we need to show, $\forall t \in [\,0,1\,]$,
+$$
+ f\bigl( (1-t)c + td \bigr) \le (1-t) f(c) + tf(d)
+$$
+This inequality is \emph{always true} for $t=0$ and $t=1$, so it suffices to assume
+$t\in(0,1)$, this implies $(1-t)c \ne -1$ and $ td \ne 2$, hence, $(1-t)c + td\in(-1,2)$ . Thus,
+$$
+ f\bigl( (1-t)c + td \bigr) = g\bigl( (1-t)c + td \bigr)) \le (1-t) g(c) + tg(d) = (1-t) f(c) + tf(d)
+$$
+As the assertion about the discontinuity of $f$ (at its endpoints) is obvious, this completes the proof.
+\end{solution}
+\end{problem}
+
+\begin{problem}[3]
+Problem 23. Suppose $f$ is convex on $\mathbb R$, prove $f$ is continuous on $\mathbb R$.
+\begin{solution}
+This is an application of \textbf{Theorem~4.28}. Let $x\in\mathbb R$, enclose $x$ in a open
+interval $(a,b)$, where $a$, $b\in\mathbb R$. Then $f$ is convex on $(a,b)$, since it is convex
+on $\mathbb R$, so by \textbf{Theorem~4.28}, $f$ is continuous on $(a,b)$. Since $f$ is continuous
+on $(a,b)$, it is, in particular, continuous at $x\in(a,b)$.
+
+We have shown that for any $x\in\mathbb R$, $f$ is continuous at
+$x$, this means that $f$ is continuous on $\mathbb R$.
+\end{solution}
+\end{problem}
+\end{exam}
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/hw02.pdf b/texmf-dist/doc/latex/eqexam/examples/hw02.pdf
new file mode 100644
index 00000000..cb3309e7
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/hw02.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/hw02.tex b/texmf-dist/doc/latex/eqexam/examples/hw02.tex
new file mode 100644
index 00000000..0f03398b
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/hw02.tex
@@ -0,0 +1,143 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[pdf,forpaper,cfg=hw,nopoints,useforms,
+% Try compiling this file under one of these options:
+% nosolutions,
+% answerkey,
+ vspacewithsolns,
+]{eqexam}
+
+\subject[CA]{College Algebra}
+\title[HW2]{HW \#2}
+\author{Dr.\ D. P. Story}
+\date{Spring 2011}
+\duedate{03/05/11}
+\keywords{Homework due \theduedate}
+
+% Make the end of solution label blank
+\def\exrtnlabelformat{}
+\def\exrtnlabelformatwp{}
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{HW}
+
+\begin{instructions}[]
+In preparation for the quiz on Thursday, solve each of these short
+problems in the space provided before looking at their solutions at the
+end of the document.
+\[
+ \text{\url{http://faculty.nwfsc.edu/web/math/storyd}}
+\]
+All class assignments and other announcements will be posted on
+this web site.
+\end{instructions}
+
+\begin{problem*}[4ea]
+Let $P(-4,2)$ and $Q(2,-3)$ be two points in the plane.
+\begin{parts}
+\item Find the distance $d(P,Q)$ between $P$ and $Q$.
+\begin{solution}[1in]
+We use the distance formula
+\[
+ d(P,Q)=\sqrt{(2+4)^2+(-3-2)^2}=\sqrt{61}
+\]
+to obtained the required answer.
+\end{solution}
+
+\item Find the midpoint $M$ between $P$ and $Q$.
+\begin{solution}[\sameVspace]
+We use the midpoint formula
+\[
+ M=\left(\frac{-4+2}{2},\frac{2+(-3)}{2}\right)=\left(-1,-\dfrac{1}{2}\right)
+\]
+to obtained the required answer.
+\end{solution}
+\end{parts}
+\end{problem*}
+
+\begin{problem*}[3ea]
+Complete each of the two sentences below with correct entries.
+\begin{parts}
+ \item The function $ g(x) = | x+2 | $ can be graphed from the library
+ function $ f(x) = |x| $ by shifting it \fillin[u]{.25in}{2} units
+ \fillin[u]{1.25in}{horizontally} (horizontally/vertically) \fillin[u]{.75in}{left} (left/right/up/down).
+% Make the solution label blank.
+\ifkeyalt
+\begin{solution}[]
+% We want this to be shown at the end of the file, but not if the author changes the option
+% to answerkey
+ The function $ g(x) = | x+2 | $ can be graphed from the library
+ function $ f(x) = |x| $ by shifting it \fillin[u]{.25in}{2} units
+ \fillin[u]{1.25in}{horizontally} (horizontally/vertically) \fillin[u]{.75in}{left}
+ (left/\penalty0right/\penalty0up/\penalty0down). % Note: \penalty0 is inserted to help TeX break the line after the forward slash /
+\end{solution}
+\fi
+ \item The function $ g(x) = 5 - x^2 $ can be graphed from the library
+ function $ f(x) = x^2 $ by first reflecting it with respect to the
+ \fillin[u]{.25in}{$x$} axis, then shifting it \fillin[u]{.25in}{5} units
+ \fillin[u]{1.25in}{vertically} (horizontally/vertically) \fillin[u]{.75in}{upward} (left/right/up/down).
+\ifkeyalt
+\begin{solution}[]
+% We want this to be shown at the end of the file, but not if the author changes the option
+% to answerkey.
+ The function $ g(x) = 5 - x^2 $ can be graphed from the library function
+ $ f(x) = x^2 $ by first reflecting it with respect to the
+ \fillin[u]{.25in}{$x$} axis, then shifting it \fillin[u]{.25in}{5} units
+ \fillin[u]{1.25in}{vertically} (horizontally/vertically)
+ \fillin[u]{.75in}{upward} (left/right/up/down).
+\end{solution}
+\fi
+\end{parts}
+\end{problem*}
+
+\begin{problem}[5]
+The circle $ x^2 + y^2 = 25 $ passes through
+the point $P(3,4)$. Let $\ell$ be the line passing though the origin and
+the point $P$. Find the equation of the line perpendicular to line $\ell$ and passing
+through point $P$.
+\begin{solution}[1in]
+The slope of the line perpendicular to $\ell$ is $ m = -\tfrac{3}{4} $, the line
+must pass through $(3,4)$; thus, the line is $ y-4 = -\tfrac{3}{4}(x-3) \implies
+y = -\tfrac{3}{4} x + \tfrac{25}{4} $. Thus,
+\[
+ \text{Ans:}\quad\boxed{ y = -\tfrac{3}{4} x + \tfrac{25}{4} }
+\]
+This is the equation of the line tangent to the circle at $P(3,4)$.
+\end{solution}
+\end{problem}
+
+\begin{problem}[3]
+If the slope the a line is negative, then the line is
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 increasing\eAns
+ \Ans1 decreasing\eAns
+ \Ans0 constant\eAns
+ \Ans0 none of these\eAns
+ \eChoices
+ \end{answers}
+
+% The \texttt{answers} and \texttt{manswers} environments can now
+% be copied and pasted into the solutions environment as well.
+%
+\ifkeyalt
+\begin{solution}[.25in]
+If the slope the a line is negative, then the line is
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 increasing\eAns
+ \Ans1 decreasing\eAns
+ \Ans0 constant\eAns
+ \Ans0 none of these\eAns
+ \eChoices
+ \end{answers}
+\end{solution}
+\fi
+\end{problem}
+\end{exam}
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/hw03.pdf b/texmf-dist/doc/latex/eqexam/examples/hw03.pdf
new file mode 100644
index 00000000..a7f3a9a9
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/hw03.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/hw03.tex b/texmf-dist/doc/latex/eqexam/examples/hw03.tex
new file mode 100644
index 00000000..68320f0c
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/hw03.tex
@@ -0,0 +1,71 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[pdf,forcolorpaper,cfg=hw,nopoints,useforms,
+% Try compiling this file under one of these options:
+ nosolutions,
+% answerkey,
+% vspacewithsolns,
+]{eqexam}
+
+\subject[GOV]{Government}
+\title[HW3]{HW \#3}
+\author{Dr.\ D. P. Story}
+\date{Spring 2011}
+\duedate{03/07/11}
+\keywords{Homework due \theduedate}
+
+\forceNoColor
+\useFillerLines
+\vspacewithkeyOn
+
+%\useFillerDefault
+%\fillTypeHRule
+%\fillTypeDefault
+%\fillTypeDashLine
+
+\fillTypeDots
+
+%\eqWriteLineColor{red}
+\eqWLSpacing{14pt}
+
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{HW}
+
+\begin{instructions}[]
+Solve each problem, use your best effort.
+\end{instructions}
+
+\begin{problem}
+Write a short essay on how you would improve things.
+\begin{solution}[2in]
+I have no thoughts that I would care to share in this public forum.
+\end{solution}
+\end{problem}
+
+\fillTypeDefault
+
+\begin{problem*}
+Write a short paragraph on each of the following topics.
+\begin{parts}
+ \item The state of the economy.
+\begin{solution}[1in]
+Not good.
+\end{solution}
+
+\fillTypeDashLine
+
+ \item The state of politics.
+\begin{solution}[3in]
+Divisive.
+\end{solution}
+\end{parts}
+\end{problem*}
+
+\end{exam}
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/markqs.pdf b/texmf-dist/doc/latex/eqexam/examples/markqs.pdf
new file mode 100644
index 00000000..6c20924a
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/markqs.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/markqs.tex b/texmf-dist/doc/latex/eqexam/examples/markqs.tex
new file mode 100644
index 00000000..5f0b7e47
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/markqs.tex
@@ -0,0 +1,177 @@
+\documentclass{article}
+\usepackage[forpaper,pointsonleft,totalsonright,
+ nosolutions
+]{eqexam}[2012/05/16]
+
+
+\university
+{%
+ NORTHWEST FLORIDA STATE COLLEGE\\
+ Department of Mathematics%
+}
+\email{storyd@nwfsc.edu}
+
+\examNum{1}\numVersions{1}\forVersion{a}
+\subject[DM]{Demoing Marks}
+\longTitleText
+ {Test~\nExam}
+\endlongTitleText
+\shortTitleText
+ {T\nExam}
+\endshortTitleText
+\title[\sExam]{\Exam}
+\author{Dr.\ D. P. Story}
+\date{Spring, 2012}
+\duedate{2012/04/24}
+\keywords{Demonstrating various markers}
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{Test\nExam}
+
+\begin{instructions}\relax\parindent0pt\parskip6pt
+Solve each without error. Passing is 100\%.
+
+We summarize the information in the test. (Compile three times.)
+
+Section I: \markStartFor{SectionI}--\markEndFor{SectionI}, this section
+has \markNumQsFor{SectionI} problems.
+
+Section II: \markStartFor{SectionII}--\markEndFor{SectionII}, this section
+has \markNumQsFor{SectionII} problems.
+
+Section III: \markStartFor{SectionIII}--\markEndFor{SectionIII}, this section
+has \markNumQsFor{SectionIII} problems.
+
+Section IV: \markStartFor{SectionIV}--\markEndFor{SectionIV}, this section
+has \markNumQsFor{SectionIV} problems.
+\end{instructions}
+
+\calcQsBtwnMarkers[SectionII]{SectionI}
+
+\begin{problem}[5]
+Problem from Section I
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section I
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section I
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section I
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section I
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section I
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section I
+\end{problem}
+
+\calcQsBtwnMarkers[SectionIII]{SectionII}
+
+\begin{problem}[5]
+Problem from Section II
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section II
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section II
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section II
+\end{problem}
+
+\calcQsBtwnMarkers[SectionIV]{SectionIII}
+
+\begin{eqComments}[Section III.]
+You can separate the sections of the test with an header, like this one.
+\end{eqComments}
+
+\begin{problem}[5]
+Problem from Section III
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section III
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section III
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section III
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section III
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section III
+\end{problem}
+
+\calcQsBtwnMarkers[EndExam]{SectionIV}
+
+\promoteNewPage
+
+\begin{eqComments}[Section IV.]
+You can separate the sections of the test with an header, like this one.
+\end{eqComments}
+\begin{problem}[5]
+Problem from Section IV
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section IV
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section IV
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section IV
+\end{problem}
+
+\begin{problem}[5]
+Problem from Section IV
+\end{problem}
+
+\calcQsBtwnMarkers{EndExam}
+
+\end{exam}
+
+\parindent0pt \parskip6pt
+
+We summarize the information in the test. (Compile three times.)
+
+Section I: \markStartFor{SectionI}--\markEndFor{SectionI}, this section
+has \markNumQsFor{SectionI} problems.
+
+Section II: \markStartFor{SectionII}--\markEndFor{SectionII}, this section
+has \markNumQsFor{SectionII} problems.
+
+Section III: \markStartFor{SectionIII}--\markEndFor{SectionIII}, this section
+has \markNumQsFor{SectionIII} problems.
+
+Section IV: \markStartFor{SectionIV}--\markEndFor{SectionIV}, this section
+has \markNumQsFor{SectionIV} problems.
+
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/quiz.cfg b/texmf-dist/doc/latex/eqexam/examples/quiz.cfg
new file mode 100644
index 00000000..bc9a15ae
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/quiz.cfg
@@ -0,0 +1,7 @@
+\renewcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\websubject\\\webauthor, \@date}\hfill
+ \shortstack[l]{\webtitle\\\strut}\hfill
+ \shortstack[l]{\strut\eq@ExamName\\\eq@SID}}%
+}
diff --git a/texmf-dist/doc/latex/eqexam/examples/quiz.cfg.txt b/texmf-dist/doc/latex/eqexam/examples/quiz.cfg.txt
new file mode 100644
index 00000000..bc9a15ae
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/quiz.cfg.txt
@@ -0,0 +1,7 @@
+\renewcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\websubject\\\webauthor, \@date}\hfill
+ \shortstack[l]{\webtitle\\\strut}\hfill
+ \shortstack[l]{\strut\eq@ExamName\\\eq@SID}}%
+}
diff --git a/texmf-dist/doc/latex/eqexam/examples/quiz01.pdf b/texmf-dist/doc/latex/eqexam/examples/quiz01.pdf
new file mode 100644
index 00000000..0a09709e
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/quiz01.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/quiz01.tex b/texmf-dist/doc/latex/eqexam/examples/quiz01.tex
new file mode 100644
index 00000000..8682623c
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/quiz01.tex
@@ -0,0 +1,126 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[pdf,cfg=quiz,forpaper,pointsonleft,
+% compile with exactly one of the following three
+ nosolutions
+% answerkey
+% vspacewithsolns
+]{eqexam}
+
+\examNum{1}\numVersions{2}\forVersion{a}
+\longTitleText
+ {Quiz~\nExam--003}
+ {Quiz~\nExam--007}
+\endlongTitleText
+\shortTitleText
+ {Q{\nExam}s3}
+ {Q{\nExam}s7}
+\endshortTitleText
+
+\title[\sExam]{\bfseries\Exam}
+\author{D. P. Story}
+\subject[C1]{Calculus I}
+\date{Spring \the\year}
+\keywords{Test~\nExam, Section \ifAB{003}{007}}
+\email{dpstory@uakron.edu}
+
+\vspacewithkeyOn
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+\everymath{\displaystyle}
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{Part1}
+
+\begin{instructions}[Instructions:]
+Solve each of the following problems without error. \textit{Show all
+details.} Box in your $\boxed{\text{answers}}$. Use good notation, you
+\emph{will} be marked off for bad notation. \textbf{Note:} The value of a
+limit can be a number, the symbol $+\infty$, the symbol $-\infty$, or may
+be labeled DNE (for ``does not exist'').
+\end{instructions}
+
+\begin{problem}[4]
+Compute $ \vA{\lim_{x\to-1}\frac{4x^2+x}{x}}\vB{\lim_{x\to2}\frac{1-3x}{x+1}}$
+\begin{solution}[2in]
+As discussed in class, this is a ``Skill Level 0'' limit problem:
+\[
+\begin{verA}
+\lim_{x\to-1}\frac{4x^2+x}{x}
+ = \frac{4(-1)^2+(-1)}{-1}
+ = \boxed{-3}
+\end{verA}
+\begin{verB}
+ \lim_{x\to2}\frac{1-3x}{x+1}
+ \lim_{x\to2}\frac{1-3(2)}{2+1}
+ = \boxed{-\frac{5}{3}}
+\end{verB}
+\]
+\ifkeyalt\adjDisplayBelow\fi
+\end{solution}
+\end{problem}
+
+\begin{problem}[3]
+Define the function $ f(x) = \begin{cases} 2x^3 - 1 & x < -2\\ 2- x^2 & x
+\ge -2\end{cases}$. Compute $\lim_{x\to\vA{-2^-}\vB{-2^+}} f(x) $, show the
+details of your reasoning.
+
+\begin{solution}[2in]
+We use standard techniques:
+\begin{verA}
+\begin{alignat*}{2}
+ \lim_{x\to-2^-} f(x) &
+ = \lim_{x\to-2^-} (2x^3-1) &&\qquad\text{since $ x < -2$}\\&
+ = 2(-2)^3 - 1&&\qquad\text{now a skill level 0 problem}\\&
+ = \boxed{-17}
+\end{alignat*}
+\end{verA}
+\begin{verB}
+\begin{alignat*}{2}
+ \lim_{x\to-2^+} f(x) &
+ = \lim_{x\to-2^+} (2- x^2) &&\qquad\text{since $ x < -2$}\\&
+ = 2 - (-2)^2&&\qquad\text{now a skill level 0 problem}\\&
+ = \boxed{-2}
+\end{alignat*}
+\end{verB}
+\ifkeyalt\adjDisplayBelow\fi
+\end{solution}
+\end{problem}
+
+\begin{problem}[3]
+Compute $\vA{\lim_{x\to2} \frac{1-x}{(x-2)^2}}
+ \vB{\lim_{x\to3} \frac{x-2}{(3-x)^2}}$
+
+\begin{solution}[1in]
+\begin{verA}
+Notice the denominator goes to zero, but the numerator does not;
+this indicates a vertical asymptote usually. Because the
+denominator is squared, it's always positive. When $x$ is
+``close'' to $2$, $1 - x < 0$, that is, when $x$ is ``close'' to
+$2$ the numerator is \emph{negative}. The ratio of the numerator and
+denominator is \emph{negative} when $x$ is ``close'' to $2$. Thus, we
+conclude,
+\[
+ \boxed{\lim_{x\to2} \frac{1-x}{(x-2)^2} = -\infty}
+\]
+\end{verA}
+\begin{verB}
+Notice the denominator goes to zero, but the numerator does not;
+this indicates a vertical asymptote usually. Because the
+denominator is squared, it's always positive. When $x$ is
+``close'' to $3$, $x - 2 > 0$, that is, when $x$ is ``close'' to
+$3$ the numerator is \emph{positive}. The ratio of the numerator and
+denominator is \emph{positive} when $x$ is ``close'' to $3$. Thus, we
+conclude,
+\[
+ \boxed{\lim_{x\to3} \frac{x-2}{(3-x)^2} = +\infty}
+\]
+\end{verB}
+\ifkeyalt\adjDisplayBelow\fi
+\end{solution}
+\end{problem}
+
+\end{exam}
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/quiz02.pdf b/texmf-dist/doc/latex/eqexam/examples/quiz02.pdf
new file mode 100644
index 00000000..c06a4e1c
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/quiz02.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/quiz02.tex b/texmf-dist/doc/latex/eqexam/examples/quiz02.tex
new file mode 100644
index 00000000..091d2030
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/quiz02.tex
@@ -0,0 +1,146 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[pdf,cfg=quiz,forpaper,pointsonleft,
+% compile with exactly one of the following three
+ nosolutions
+% answerkey
+% vspacewithsolns
+]{eqexam}
+
+\examNum{2}\numVersions{2}\forVersion{a}
+\longTitleText
+ {Quiz~\nExam--003}
+ {Quiz~\nExam--007}
+\endlongTitleText
+\shortTitleText
+ {Q{\nExam}s3}
+ {Q{\nExam}s7}
+\endshortTitleText
+
+
+\title[\sExam]{\bfseries\Exam}
+\author{D. P. Story}
+\subject[C1]{Calculus I}
+\date{Spring \the\year}
+\keywords{Test~\nExam, Section \vA{003}\vB{007}}
+\email{dpstory@uakron.edu}
+
+\vspacewithkeyOn
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+\everymath{\displaystyle}
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{qz02}
+
+\begin{instructions}[Global Instructions:]
+Solve each of the following problems without error. \textit{Show all details.} Box in your
+$\boxed{\text{answers.}}$ Use good notation, you \emph{will} be marked off for bad notation.
+\end{instructions}
+
+\begin{problem}[3]
+Identify all numbers $x$ at which the function $ f(x) = \frac{x+2}{\sqrt{\vA{x-1}\vB{2-x}}} $ is continuous.
+
+\begin{solution}[.75in]
+We require $ \vA{x - 1}\vB{2-x} >0 $ or $ \vA{x > 1}\vB{x<2} $. In
+interval notation, the set of all numbers at which $f$ is continuous is
+$\boxed{\vA{( 1, \infty )}\vB{(-\infty, 2)} }$.
+\end{solution}
+\end{problem}
+
+\begin{problem}[3]
+Given $ f(x) = \begin{cases}
+ 3x^2 - 2x & x < -1 \\
+ 6x^2 + x \vB{+1} & x \ge -1
+\end{cases}$. Is this function (a) continuous at $ x = -1 $;, (b)~discontinuous with a removable discontinuity
+at $ x = -1 $; or (c)~discontinuous with a jump discontinuity at $ x = -1 $? Justify your response.
+
+\begin{solution}[2in]
+Look at the left and right limits:
+\begin{align*}
+ \lim_{x\to-1^-}f(x) &= \lim_{x\to-1^-} 3x^2 - 2x = 5\\
+ \lim_{x\to-1^+}f(x) &= \lim_{x\to-1^+} 6x^2 + x \vB{+1} = \vA{5}\vB{6} \vA{=}\vB{\neq} f(-1)
+\end{align*}
+Thus, $\lim_{x\to-1^-}f(x) \vA{=}\vB{\neq}
+\lim_{x\to-1^+}f(x)\vA{=f(-1)}$. The two sided limit \vA{exists}\vB{does
+not exist}\vA{ and $\lim_{x\to-1}f(x)=f(-1)$}. This function \vA{is}\vB{is
+not} continuous at $x=-1$, \vB{it has a jump discontinuity, since
+$\lim_{x\to-1^-}f(x) \neq \lim_{x\to-1^+}f(x)$}; as a result, the answer
+is \vA{(a)}\vB{(c)}.
+\end{solution}
+\end{problem}
+
+\begin{problem}[4]
+Define the function $ f(x) = 3x^2 - 2x $. Use one of the formulas:
+\[
+ m = \lim_{x\to a} \frac{f(x) - f(a)}{x-a}\quad\text{or}\quad
+ m = \lim_{h\to 0} \frac{f(a+h) - f(a)}{h}
+\]
+Then the slope of the line tangent to the graph of $f$ at the point $
+\vA{( 1, 1 )}\vB{(-1,5)} $.
+
+\renameSolnAfterTo{}
+\begin{solution}[2in]\ifkeyalt We make the following calculations:\fi
+\begin{multicols}{2}
+\noindent\textbf{Calculations}
+\begin{verA}
+\begin{alignat*}{2}
+ m &= \lim_{x\to1} \frac{f(x)-f(1)}{x-1}\\&
+ = \lim_{x\to1} 3x+1&&\quad\text{from side calc}\\&
+ = \boxed4
+\end{alignat*}
+\end{verA}
+\begin{verB}
+\begin{alignat*}{2}
+ m &= \lim_{x\to-1} \frac{f(x)-f(-1)}{x+1}\\&
+ = \lim_{x\to-1} 3x-5&&\quad\text{from side calc}\\&
+ = \boxed{-8}
+\end{alignat*}
+\end{verB}
+
+\columnbreak
+\noindent\textbf{Side Calculations}
+\begin{verA}
+\begin{align*}
+ f(x)-f(1) &= 3x^2 - 2x - 1\\&
+ = (x-1)(3x+1)
+\intertext{thus, the difference quotient is}
+ \frac{f(x)-f(1)}{x-1} &= 3x+1
+\end{align*}
+\end{verA}
+\begin{verB}
+\begin{align*}
+ f(x)-f(-1) &= 3x^2 - 2x - 5\\&
+ = (x+1)(3x-5)
+\intertext{thus, the difference quotient is}
+ \frac{f(x)-f(-1)}{x+1} &= 3x-5
+\end{align*}
+\end{verB}
+
+
+\vfill
+\vspace*{\sameVspace}
+\vfill
+\end{multicols}
+\end{solution}
+\begin{workarea}{\sameVspace}\parindent0pt\bfseries
+\begin{multicols}{2}
+\textbf{Calculations}
+
+\vfil\vspace*{\sameVspace}\vfil
+
+
+\columnbreak
+\textbf{Side Calculations}
+
+\vfil\vspace*{1.9in}\vfil
+
+\end{multicols}
+\end{workarea}
+
+\end{problem}
+
+\end{exam}
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/selectversion_tst.pdf b/texmf-dist/doc/latex/eqexam/examples/selectversion_tst.pdf
new file mode 100644
index 00000000..141fb082
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/selectversion_tst.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/selectversion_tst.tex b/texmf-dist/doc/latex/eqexam/examples/selectversion_tst.tex
new file mode 100644
index 00000000..12b1faff
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/selectversion_tst.tex
@@ -0,0 +1,220 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+%
+% Try these various options.
+%
+\usepackage[pointsonleft,nototals,forpaper,useforms,
+% Select exactly one of the next three options
+ nosolutions,
+% answerkey,
+% vspacewithsolns,
+ obeylocalversions, % try this in combination with
+]{eqexam}
+
+\university
+{%
+ NORTHWEST FLORIDA STATE COLLEGE\\
+ Department of Mathematics
+}
+\email{storyd@nwfsc.edu}
+
+\examNum{1}\numVersions{5}\forVersion{e}
+\subject[CA]{College Algebra}
+\longTitleText
+ {Test~{\nExam} A}
+ {Test~{\nExam} B}
+ {Test~{\nExam} C}
+ {Test~{\nExam} D}
+ {Test~{\nExam} E}
+\endlongTitleText
+\shortTitleText
+ {T\nExam-A}
+ {T\nExam-B}
+ {T\nExam-C}
+ {T\nExam-D}
+ {T\nExam-E}
+\endshortTitleText
+\title[\sExam]{\Exam}
+\author{Dr.\ D. P. Story}
+\date{\thisterm, \the\year}
+\duedate{09/30/09}
+\keywords{MAC 1105, Exam \nExam, {\thisterm} semester, \theduedate, at NWFSC}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+\turnContAnnotOn
+
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{T1}
+
+\begin{eqComments}[Instructions:]
+This file was used to test the revised definitions of
+\cs{longTitleText} \cs{shortTitleText}, and \cs{selectVersion}. This
+file has 5 versions, \verb!\numVersions{5}!; however, not every
+problem has this number of versions, some have 2, other have 3 or 4.
+When you specify a value of \cs{forVersion}, and each problem has a
+\cs{selectVersion}, \textsf{eqexam} will perform modular arithmetic
+on the number of available versions of a problem, in this way each
+problem will be properly posed; consequently, when we say
+\verb!\forVersion{e}!, we get version B for the first problem,
+version A for 2(a), and so on. Try compiling with other values for
+\cs{forVersion} (a--e).
+
+Try compiling the document with the with the \texttt{vspacewithsolns} option
+\begin{verbatim}
+ \usepackage[vspacewithsolns.pointsonleft,nototals,forpaper,useforms]{eqexam}
+\end{verbatim}
+The solutions appear at the end of the document, note the solutions
+match to the version selected for the question. This required a
+little trick with the solutions file, and requires the exerquiz
+package dated 2009/10/05 or later, if one of the pdf options is
+used (\texttt{pdf}, \texttt{links}, \texttt{online},
+\texttt{email}).
+
+After you have exhausted yourself, try using the \texttt{obeylocalversions} option,
+for this to work correctly, you need to comment out the \cs{forVersion} specification
+in the preamble. Go through the file and select one of the versions, by specifying
+the first argument of the \cs{selectVersion} command.
+
+Another feature, apropos to the \texttt{obeylocalversions} option is the optional
+argument of \cs{longTitleText} and \cs{shortTitleText}. If you say
+\cs{longTitleText[b]}, the second title is selected for display in the document;
+similarly, for \cs{shortTitleText}. The optional argument can also be used
+when \texttt{obeylocalversions}, and the version is set by \cs{forVersion}.
+\end{eqComments}
+
+\selectVersion{}{3}
+\begin{problem}[5]
+\verb!\selectVersion{}{3}! This problem is version \vA{A}\vB{B}\vC{C} of 3.
+
+\begin{solution}
+The first problem, version \vA{A}\vB{B}\vC{C} of 3.
+\end{solution}
+\end{problem}
+
+\begin{problem*}[2ea]
+Multi-part question.
+ \begin{parts}
+\selectVersion{}{4}
+ \item \verb!\selectVersion{}{4}! This is problem, version \vA{A}\vB{B}\vC{C}\vD{D} of 4.
+\begin{solution}
+This is version \vA{A}\vB{B}\vC{C}\vD{D}
+
+The answer is:
+\begin{verA}
+This is version A
+\end{verA}
+\begin{verB}
+This is version B
+\end{verB}
+\begin{verC}
+This is version C
+\end{verC}
+\begin{verD}
+This is version D
+\end{verD}
+\end{solution}
+
+\selectVersion{}{3}
+ \item \verb!\selectVersion{}{3}! This is a problem, version \vA{A}\vB{B}\vC{C} of 3.
+\begin{verA}
+This is A
+\end{verA}
+\begin{verB}
+This is version B
+\end{verB}
+\begin{verE}
+This is version E
+\end{verE}
+
+\begin{solution}
+This is version \vA{A}\vB{B}\vC{C}\vD{D}
+
+The answer is:
+\begin{verA}
+This is version A
+\end{verA}
+\begin{verB}
+This is version B
+\end{verB}
+\begin{verC}
+This is version C
+\end{verC}
+\begin{verD}
+This is version D
+\end{verD}
+\end{solution}
+
+\pushProblem
+\begin{eqComments}
+We insert a new page command so we can see the shortened titles on the next page
+to verify that the new system of title management is working correctly.
+\end{eqComments}
+\emitMessageNearBottom*[.5\textheight]{%
+ \vfill\hfill\textbf{Problem~{\eqeCurrProb} continues on next page}}
+\popProblem
+
+
+
+\selectVersion{}{5}
+ \item \verb!\selectVersion{}{5}! This is a problem, version \vA{A}\vB{B}\vC{C}\vD{D}\vE{E} of 5.
+\begin{verB}
+This is version B
+\end{verB}
+\begin{verE}
+This is version E
+\end{verE}
+\begin{solution}
+This is version \vA{A}\vB{B}\vC{C}\vD{D}\vE{E}
+
+The answer is:
+\begin{verB}
+This is version B
+\end{verB}
+\begin{verE}
+This is version E
+\end{verE}
+\end{solution}
+
+\selectVersion{}{4}
+ \item \verb!\selectVersion{}{4}! This is a problem, version \vA{A}\vB{B}\vC{C}\vD{D} of 4.
+\begin{verA}
+This is A
+\end{verA}
+\begin{verB}
+This is version B
+\end{verB}
+\begin{verE}
+This is version E
+\end{verE}
+\begin{solution}
+This is version \vA{A}\vB{B}\vC{C}\vD{D}\vE{E}.
+
+The answer is:
+\begin{verA}
+This is version A
+\end{verA}
+\begin{verB}
+This is version B
+\end{verB}
+\begin{verC}
+This is version C
+\end{verC}
+\begin{verD}
+This is version D
+\end{verD}
+\begin{verE}
+This is version E
+\end{verE}
+\end{solution}
+\end{parts}
+\end{problem*}
+
+
+\end{exam}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/test01.pdf b/texmf-dist/doc/latex/eqexam/examples/test01.pdf
new file mode 100644
index 00000000..51e8c54f
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test01.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/test01.synctex b/texmf-dist/doc/latex/eqexam/examples/test01.synctex
new file mode 100644
index 00000000..16cc5e11
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test01.synctex
@@ -0,0 +1,4789 @@
+SyncTeX Version:1
+Input:1:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\test01.tex
+Input:2:C:\Program Files\MiKTeX 2.9\tex\latex\base\article.cls
+Input:3:C:\Program Files\MiKTeX 2.9\tex\latex\base\size12.clo
+Input:4:C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amsmath.sty
+Input:5:C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amstext.sty
+Input:6:C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amsgen.sty
+Input:7:C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amsbsy.sty
+Input:8:C:\Program Files\MiKTeX 2.9\tex\latex\amsmath\amsopn.sty
+Input:9:C:\Program Files\MiKTeX 2.9\tex\latex\graphics\graphicx.sty
+Input:10:C:\Program Files\MiKTeX 2.9\tex\latex\graphics\keyval.sty
+Input:11:C:\Program Files\MiKTeX 2.9\tex\latex\graphics\graphics.sty
+Input:12:C:\Program Files\MiKTeX 2.9\tex\latex\graphics\trig.sty
+Input:13:C:\Program Files\MiKTeX 2.9\tex\latex\graphics-cfg\graphics.cfg
+Input:14:C:\Program Files\MiKTeX 2.9\tex\latex\graphics-def\dvips.def
+Input:15:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\eqexam.sty
+Input:16:C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\ifpdf.sty
+Input:17:C:\Program Files\MiKTeX 2.9\tex\generic\ifxetex\ifxetex.sty
+Input:18:C:\Program Files\MiKTeX 2.9\tex\latex\xkeyval\xkeyval.sty
+Input:19:C:\Program Files\MiKTeX 2.9\tex\generic\xkeyval\xkeyval.tex
+Input:20:C:\Program Files\MiKTeX 2.9\tex\generic\xkeyval\xkvutils.tex
+Input:21:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\web.cfg
+Input:22:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\eqecus.opt
+Input:23:C:\Program Files\MiKTeX 2.9\tex\latex\xcolor\xcolor.sty
+Input:24:C:\Program Files\MiKTeX 2.9\tex\latex\graphics-cfg\color.cfg
+Input:25:C:\Program Files\MiKTeX 2.9\tex\latex\amsfonts\amssymb.sty
+Input:26:C:\Program Files\MiKTeX 2.9\tex\latex\amsfonts\amsfonts.sty
+Input:27:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\apb\comment.sty
+Input:28:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\web.sty
+Input:29:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\web.cfg
+Input:30:C:\Program Files\MiKTeX 2.9\tex\latex\tools\calc.sty
+Input:31:C:\Program Files\MiKTeX 2.9\tex\latex\hyperref\hyperref.sty
+Input:32:C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\hobsub-hyperref.sty
+Input:33:C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\hobsub-generic.sty
+Input:34:C:\Program Files\MiKTeX 2.9\tex\latex\oberdiek\auxhook.sty
+Input:35:C:\Program Files\MiKTeX 2.9\tex\latex\oberdiek\kvoptions.sty
+Input:36:C:\Program Files\MiKTeX 2.9\tex\latex\hyperref\pd1enc.def
+Input:37:C:\Program Files\MiKTeX 2.9\tex\latex\00miktex\hyperref.cfg
+Input:38:C:\Program Files\MiKTeX 2.9\tex\latex\hyperref\backref.sty
+Input:39:C:\Program Files\MiKTeX 2.9\tex\latex\oberdiek\rerunfilecheck.sty
+Input:40:C:\Program Files\MiKTeX 2.9\tex\latex\url\url.sty
+Input:41:C:\Program Files\MiKTeX 2.9\tex\latex\hyperref\hdvips.def
+Input:42:C:\Program Files\MiKTeX 2.9\tex\latex\hyperref\pdfmark.def
+Input:43:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\websec.def
+Input:44:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\exerquiz.sty
+Input:45:C:\Program Files\MiKTeX 2.9\tex\latex\tools\array.sty
+Input:46:C:\Program Files\MiKTeX 2.9\tex\latex\tools\verbatim.sty
+Input:47:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\eforms.sty
+Input:48:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\insdljs.sty
+Input:49:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\conv-xkv\conv-xkv.sty
+Input:50:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\taborder.sty
+Input:51:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\pdfdochex.def
+Input:52:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\epdfmark.def
+Input:53:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\acrotex\aebjs.def
+Input:54:C:\Program Files\MiKTeX 2.9\tex\latex\psnfss\pifont.sty
+Input:55:C:\Program Files\MiKTeX 2.9\tex\latex\psnfss\upzd.fd
+Input:56:C:\Program Files\MiKTeX 2.9\tex\latex\psnfss\upsy.fd
+Input:57:C:\Program Files\MiKTeX 2.9\tex\latex\tools\multicol.sty
+Input:58:C:\Program Files\MiKTeX 2.9\tex\latex\amsfonts\umsa.fd
+Input:59:C:\Program Files\MiKTeX 2.9\tex\latex\amsfonts\umsb.fd
+Input:60:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\test01.aux
+Input:61:C:\Program Files\MiKTeX 2.9\tex\latex\hyperref\nameref.sty
+Input:62:C:\Program Files\MiKTeX 2.9\tex\generic\oberdiek\gettitlestring.sty
+Input:63:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\test01.out
+Input:64:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\test01.out
+Output:dvi
+Magnification:1000
+Unit:1
+X Offset:4736287
+Y Offset:4736287
+Content:
+!4701
+{1
+[1,37:0,42626580:30785864,42626580,0
+(1,37:0,0:0,0,0
+)
+[1,37:0,0:0,0,0
+(1,37:0,-2433924:0,0,0
+k1,37:0,-2433924:65781
+)
+]
+[1,37:0,42626580:30785864,42626580,0
+[1,37:0,42626580:30785864,44994723,0
+[1,37:0,-1581711:30785864,786432,0
+(1,37:0,-1581711:30785864,0,0
+h1,37:0,-1581711:30785864,0,0
+)
+]
+[1,37:0,41905684:30785864,42176675,0
+(1,37:0,6000831:30785864,1201930,808713
+(1,37:0,6000831:30785864,1201930,808713
+g1,37:0,6000831
+$1,37:0,6000831
+[1,37:0,6000831:30785864,1201930,808713
+(1,37:0,5446396:30785864,647495,0
+k1,37:7557014,5446396:7557014
+h1,37:7557014,5446396:0,0,0
+x1,37:9822374,5446396
+g1,37:10176268,5446396
+x1,37:17033519,5446396
+g1,37:17387413,5446396
+x1,37:18852140,5446396
+g1,37:19206034,5446396
+x1,37:21630867,5446396
+x1,37:23228851,5446396
+g1,37:23228851,5446396
+k1,37:30785864,5446396:7557013
+)
+(1,37:0,6626044:30785864,655359,183500
+k1,37:6560657,6626044:6560657
+h1,37:6560657,6626044:0,0,0
+x1,37:11812814,6626044
+g1,37:12166708,6626044
+x1,37:13862449,6626044
+g1,37:14216343,6626044
+x1,37:17861778,6626044
+g1,37:18215672,6626044
+x1,37:24225208,6626044
+g1,37:24225208,6626044
+k1,37:30785864,6626044:6560656
+)
+]
+$1,37:30785864,6000831
+g1,37:30785864,6000831
+)
+g1,37:30785864,6000831
+g1,37:30785864,6000831
+)
+(1,37:0,11617292:30785864,524288,131071
+(1,37:0,11617292:30785864,524288,131071
+g1,37:0,11617292
+$1,37:0,11617292
+[1,37:0,11617292:30785864,524288,131071
+(1,37:0,11748363:30785864,655359,0
+k1,37:13046800,11748363:13046800
+h1,37:13046800,11748363:0,0,0
+x1,37:16989768,11748363
+g1,37:17343662,11748363
+x1,37:17739063,11748363
+g1,37:17739063,11748363
+k1,37:30785863,11748363:13046800
+)
+]
+$1,37:30785864,11617292
+g1,37:30785864,11617292
+)
+g1,37:30785864,11617292
+g1,37:30785864,11617292
+)
+(1,37:0,13353996:30785864,520356,127139
+(1,37:0,13353996:30785864,520356,127139
+g1,37:0,13353996
+$1,37:0,13353996
+[1,37:0,13353996:30785864,520356,127139
+(1,37:0,13481135:30785864,647495,0
+k1,37:13967580,13481135:13967580
+h1,37:13967580,13481135:0,0,0
+x1,37:14705951,13481135
+x1,37:15933549,13481135
+g1,37:16287443,13481135
+x1,37:16818284,13481135
+g1,37:16818284,13481135
+k1,37:30785864,13481135:13967580
+)
+]
+$1,37:30785864,13353996
+g1,37:30785864,13353996
+)
+g1,37:30785864,13353996
+g1,37:30785864,13353996
+)
+(1,37:0,41682862:30785864,12984858,222822
+[1,37:0,41682862:13853544,3967018,0
+(1,37:0,38274990:13853544,559146,164453
+h1,37:0,38274990:0,0,0
+(1,37:0,38274990:0,0,0
+r1,37:0,38274990:0,0,0
+)
+$1,37:0,38274990
+[1,37:0,38274990:13853544,537395,157280
+(1,37:0,38274990:13853544,537395,0
+(1,37:0,38274990:13853544,537395,0
+(1,37:0,38274990:13853544,537395,0
+x1,37:2160117,38274990
+k1,37:13853544,38274990:11693427
+)
+)
+)
+]
+$1,37:13853544,38274990
+(1,37:13853544,38274990:0,559146,164453
+(1,37:13853544,38340771:0,624927,98672
+(1,37:13853544,38340771:0,624927,98672
+k1,37:2416797,38340771:-11436747
+(1,37:2416797,38340771:11436747,624927,98672
+(1,37:2416797,38439443:0,0,0
+)
+(1,37:2416797,38340771:11436747,624927,98672
+(1,37:2416797,38439443:11436747,723599,0
+[1,37:2416797,38439443:11436747,723599,0
+(1,37:2416797,37715844:11436747,0,0
+h1,37:2416797,37715844:0,0,0
+k1,37:13853544,37715844:11436747
+g1,37:13853544,37715844
+)
+]
+)
+)
+(1,37:13853544,37715844:0,0,0
+)
+)
+)
+)
+)
+g1,37:13853544,38274990
+g1,37:13853544,38274990
+)
+(1,37:0,39902468:13853544,559146,164453
+[1,37:0,39902468:13853544,537395,157280
+(1,37:0,39902468:13853544,537395,0
+(1,37:0,39902468:13853544,537395,0
+(1,37:0,39902468:13853544,537395,0
+x1,37:1507586,39902468
+k1,37:13853544,39902468:12345958
+)
+)
+)
+]
+$1,37:13853544,39902468
+(1,37:13853544,39902468:0,559146,164453
+(1,37:13853544,39968249:0,624927,98672
+(1,37:13853544,39968249:0,624927,98672
+k1,37:1764266,39968249:-12089278
+(1,37:1764266,39968249:12089278,624927,98672
+(1,37:1764266,40066921:0,0,0
+)
+(1,37:1764266,39968249:12089278,624927,98672
+(1,37:1764266,40066921:12089278,723599,0
+[1,37:1764266,40066921:12089278,723599,0
+(1,37:1764266,39343322:12089278,0,0
+h1,37:1764266,39343322:0,0,0
+k1,37:13853544,39343322:12089278
+g1,37:13853544,39343322
+)
+]
+)
+)
+(1,37:13853544,39343322:0,0,0
+)
+)
+)
+)
+)
+g1,37:13853544,39902468
+g1,37:13853544,39902468
+)
+(1,37:0,41529946:13853544,537395,152916
+x1,37:801989,41529946
+g1,37:1058669,41529946
+x1,37:1582588,41529946
+x1,37:1732318,41529946
+g1,37:1988998,41529946
+x1,37:3807148,41529946
+x1,37:4021048,41529946
+g1,37:4277728,41529946
+x1,37:6459508,41529946
+g1,37:6716188,41529946
+x1,37:8256268,41529946
+k1,37:13853544,41529946:5597276
+g1,37:13853544,41529946
+)
+]
+k1,37:14623585,41682862:770041
+(1,37:14623585,41682862:16162279,12984858,222822
+(1,37:14623585,41682862:16162279,12984858,222822
+(1,37:14623585,41905684:16162279,13207680,0
+[1,37:14623585,41905684:16162279,13207680,0
+(1,37:14623585,41879470:16162279,13155252,0
+[1,37:14649799,41879470:16109851,13155252,0
+(1,37:14649799,41682862:16109851,12762036,0
+[1,37:14846407,41682862:15716635,12762036,0
+(1,37:14846407,29860174:15716635,546132,0
+(1,37:14846407,29860174:0,0,0
+g1,37:14846407,29860174
+g1,37:14846407,29860174
+g1,37:14461387,29860174
+(1,37:14461387,29860174:0,0,0
+)
+g1,37:14846407,29860174
+)
+x1,37:17061433,29860174
+g1,37:17356345,29860174
+x1,37:20108403,29860174
+k1,37:25335723,29860174:5227320
+k1,37:30563042,29860174:5227319
+)
+(1,37:14846407,31596878:15716635,589824,196608
+h1,37:14846407,31596878:0,0,0
+$1,37:14846407,31596878
+[1,37:14846407,31596878:7104430,537395,157280
+(1,37:14846407,31596878:7104430,537395,0
+(1,37:14846407,31596878:7104430,537395,0
+(1,37:14846407,31596878:0,537395,152916
+x1,37:15370326,31596878
+x1,37:16461216,31596878
+g1,37:16717896,31596878
+x1,37:17102916,31596878
+k1,37:14846407,31596878:-2256509
+)
+r1,37:14846407,31596878:0,537395,0
+g1,37:21950837,31596878
+g1,37:21950837,31596878
+)
+)
+]
+$1,37:21950837,31596878
+x1,37:22335857,31596878
+g1,37:22592537,31596878
+$1,37:22592537,31596878
+(1,37:22592537,31596878:770040,506811,0
+x1,37:23362577,31596878
+)
+g1,37:23493647,31596878
+(1,37:23493647,31596878:1030998,483719,152916
+(1,37:23493647,31596878:1030998,483719,152916
+x1,37:24524645,31596878
+)
+)
+$1,37:24524645,31596878
+k1,37:27543844,31596878:3019199
+k1,37:30563042,31596878:3019198
+)
+(1,37:14846407,33333582:15716635,589824,196608
+h1,37:14846407,33333582:0,0,0
+$1,37:14846407,33333582
+[1,37:14846407,33333582:7104430,537395,157280
+(1,37:14846407,33333582:7104430,537395,0
+(1,37:14846407,33333582:7104430,537395,0
+(1,37:14846407,33333582:0,537395,152916
+x1,37:15370326,33333582
+x1,37:16461216,33333582
+g1,37:16717896,33333582
+x1,37:17102916,33333582
+k1,37:14846407,33333582:-2256509
+)
+r1,37:14846407,33333582:0,537395,0
+g1,37:21950837,33333582
+g1,37:21950837,33333582
+)
+)
+]
+$1,37:21950837,33333582
+x1,37:22335857,33333582
+g1,37:22592537,33333582
+$1,37:22592537,33333582
+(1,37:22592537,33333582:770040,506811,0
+x1,37:23362577,33333582
+)
+g1,37:23493647,33333582
+(1,37:23493647,33333582:1030998,483719,152916
+(1,37:23493647,33333582:1030998,483719,152916
+x1,37:24524645,33333582
+)
+)
+$1,37:24524645,33333582
+k1,37:27543844,33333582:3019199
+k1,37:30563042,33333582:3019198
+)
+(1,37:14846407,35070286:15716635,589824,196608
+h1,37:14846407,35070286:0,0,0
+$1,37:14846407,35070286
+[1,37:14846407,35070286:7104430,537395,157280
+(1,37:14846407,35070286:7104430,537395,0
+(1,37:14846407,35070286:7104430,537395,0
+(1,37:14846407,35070286:0,537395,152916
+x1,37:15370326,35070286
+x1,37:16461216,35070286
+g1,37:16717896,35070286
+x1,37:17102916,35070286
+k1,37:14846407,35070286:-2256509
+)
+r1,37:14846407,35070286:0,537395,0
+g1,37:21950837,35070286
+g1,37:21950837,35070286
+)
+)
+]
+$1,37:21950837,35070286
+x1,37:22335857,35070286
+g1,37:22592537,35070286
+$1,37:22592537,35070286
+(1,37:22592537,35070286:770040,506811,0
+x1,37:23362577,35070286
+)
+g1,37:23493647,35070286
+(1,37:23493647,35070286:1030998,483719,152916
+(1,37:23493647,35070286:1030998,483719,152916
+x1,37:24524645,35070286
+)
+)
+$1,37:24524645,35070286
+g1,37:24781325,35070286
+$1,37:24781325,35070286
+x1,37:25850825,35070286
+g1,37:25981895,35070286
+(1,37:25981895,35070286:1030998,483719,152916
+(1,37:25981895,35070286:1030998,483719,152916
+x1,37:27012893,35070286
+)
+)
+g1,37:27187653,35070286
+x1,37:27786573,35070286
+g1,37:27961333,35070286
+x1,37:28731373,35070286
+g1,37:28862443,35070286
+(1,37:28862443,35070286:1030998,483719,152916
+(1,37:28862443,35070286:1030998,483719,152916
+x1,37:29893441,35070286
+)
+)
+x1,37:30192901,35070286
+$1,37:30192901,35070286
+k1,37:30377972,35070286:185071
+k1,37:30563042,35070286:185070
+)
+(1,37:14846407,36806990:15716635,589824,196608
+h1,37:14846407,36806990:0,0,0
+$1,37:14846407,36806990
+[1,37:14846407,36806990:7104430,537395,157280
+(1,37:14846407,36806990:7104430,537395,0
+(1,37:14846407,36806990:7104430,537395,0
+(1,37:14846407,36806990:0,537395,152916
+x1,37:15370326,36806990
+x1,37:16461216,36806990
+g1,37:16717896,36806990
+x1,37:17102916,36806990
+k1,37:14846407,36806990:-2256509
+)
+r1,37:14846407,36806990:0,537395,0
+g1,37:21950837,36806990
+g1,37:21950837,36806990
+)
+)
+]
+$1,37:21950837,36806990
+x1,37:22335857,36806990
+g1,37:22592537,36806990
+$1,37:22592537,36806990
+(1,37:22592537,36806990:770040,506811,0
+x1,37:23362577,36806990
+)
+g1,37:23493647,36806990
+(1,37:23493647,36806990:1030998,483719,152916
+(1,37:23493647,36806990:1030998,483719,152916
+x1,37:24524645,36806990
+)
+)
+$1,37:24524645,36806990
+k1,37:27543844,36806990:3019199
+k1,37:30563042,36806990:3019198
+)
+(1,37:14846407,38543694:15716635,589824,196608
+h1,37:14846407,38543694:0,0,0
+$1,37:14846407,38543694
+[1,37:14846407,38543694:7104430,546132,157280
+(1,37:14846407,38543694:7104430,546132,0
+(1,37:14846407,38543694:7104430,546132,0
+(1,37:14846407,38543694:0,546132,0
+x1,37:15402547,38543694
+x1,37:16835677,38543694
+k1,37:14846407,38543694:-1989270
+)
+g1,37:21950837,38543694
+)
+)
+]
+$1,37:21950837,38543694
+x1,37:22335857,38543694
+g1,37:22592537,38543694
+$1,37:22592537,38543694
+(1,37:22592537,38543694:1155060,506811,0
+x1,37:23747597,38543694
+)
+g1,37:23878667,38543694
+(1,37:23878667,38543694:1030998,483719,152916
+(1,37:23878667,38543694:1030998,483719,152916
+x1,37:24909665,38543694
+)
+)
+$1,37:24909665,38543694
+k1,37:27736354,38543694:2826689
+k1,37:30563042,38543694:2826688
+)
+(1,37:14846407,40280398:15716635,546132,157280
+h1,37:14846407,40280398:0,0,0
+$1,37:14846407,40280398
+[1,37:14846407,40280398:7104430,546132,157280
+(1,37:14846407,40280398:7104430,546132,0
+(1,37:14846407,40280398:7104430,546132,0
+(1,37:14846407,40280398:0,546132,0
+x1,37:17119027,40280398
+k1,37:14846407,40280398:-2272620
+)
+g1,37:21950837,40280398
+)
+)
+]
+$1,37:21950837,40280398
+k1,37:26256940,40280398:4306103
+k1,37:30563042,40280398:4306102
+)
+]
+)
+]
+)
+]
+)
+)
+(1,37:14623585,41682862:16162279,12984858,222822
+[1,37:14623585,41905684:16162279,13207680,0
+(1,37:14623585,41892577:16162279,13181466,0
+r1,37:14649799,41892577:26214,13181466,0
+r1,37:30785864,41892577:26214,13181466,0
+)
+]
+)
+)
+g1,37:30785864,41682862
+g1,37:30785864,41682862
+)
+]
+(1,37:0,42626580:30785864,0,0
+h1,37:0,42626580:30785864,0,0
+)
+]
+]
+]
+!10794
+}1
+!10
+{2
+[1,192:0,42626580:30785864,42626580,0
+[1,192:0,0:0,0,0
+(1,192:0,-2433924:0,0,0
+k1,192:0,-2433924:65781
+)
+]
+[1,192:0,42626580:30785864,42626580,0
+[1,192:0,42626580:30785864,44994723,0
+[1,192:0,-1581711:30785864,786432,0
+(1,192:0,-1581711:30785864,0,0
+(1,192:0,-1581711:30785864,0,0
+k1,192:30785864,-1581711:30785864
+)
+)
+]
+[1,192:0,41905684:30785864,42176675,0
+(1,39:0,1413283:30785864,1684274,285084
+(1,38:0,1413283:0,0,0
+h1,38:0,1413283:0,0,0
+)
+(1,38:0,1413283:30785864,1684274,285084
+g1,38:0,1413283
+[1,38:0,1413283:3978540,1684274,152916
+(1,38:0,394196:3978540,665187,285084
+g1,38:0,394196
+(1,38:0,394196:3978540,665187,285084
+r1,38:0,394196:0,950271,285084
+x1,38:2870538,394196
+g1,38:3127218,394196
+x1,38:3405015,394196
+k1,38:3978540,394196:573525
+)
+g1,38:3978540,394196
+)
+(1,38:0,1413283:3978540,537395,152916
+g1,38:0,1413283
+(1,38:0,1413283:3978540,537395,152916
+x1,38:2181780,1413283
+g1,38:2438460,1413283
+x1,38:3978540,1413283
+g1,38:3978540,1413283
+)
+g1,38:3978540,1413283
+)
+]
+k1,38:11014326,1413283:7035786
+[1,38:11014326,1413283:2079108,1399190,285084
+(1,38:11014326,551488:2079108,537395,0
+g1,38:11014326,551488
+(1,38:11014326,551488:2079108,537395,0
+g1,38:11014326,551488
+x1,38:11570466,551488
+x1,38:12451734,551488
+g1,38:12708414,551488
+x1,38:13093434,551488
+g1,38:13093434,551488
+)
+g1,38:13093434,551488
+)
+(1,38:11014326,1413283:2079108,665187,285084
+g1,38:11014326,1413283
+(1,38:11014326,1413283:2079108,665187,285084
+k1,38:12053880,1413283:1039554
+r1,38:12053880,1413283:0,950271,285084
+k1,38:13093434,1413283:1039554
+)
+g1,38:13093434,1413283
+)
+]
+k1,38:20129219,1413283:7035785
+[1,38:20129219,1413283:10656645,1684274,152916
+(1,38:20129219,394196:10656645,665187,285084
+g1,38:20129219,394196
+(1,38:20129219,394196:10656645,665187,285084
+r1,38:20129219,394196:0,950271,285084
+$1,38:20129219,394196
+[1,38:20129219,394196:10656645,537395,157280
+(1,38:20129219,394196:10656645,537395,0
+(1,38:20129219,394196:10656645,537395,0
+(1,38:20129219,394196:10656645,537395,0
+x1,38:22289336,394196
+k1,38:30785864,394196:8496528
+)
+)
+)
+]
+$1,38:30785864,394196
+(1,38:30785864,394196:0,559146,164453
+(1,38:30785864,459977:0,624927,98672
+(1,38:30785864,459977:0,624927,98672
+k1,38:22546016,459977:-8239848
+(1,38:22546016,459977:8239848,624927,98672
+(1,38:22546016,558649:0,0,0
+)
+(1,38:22546016,459977:8239848,624927,98672
+(1,38:22546016,558649:8239848,723599,0
+[1,38:22546016,558649:8239848,723599,0
+(1,38:22546016,-164950:8239848,0,0
+h1,38:22546016,-164950:0,0,0
+k1,38:30785864,-164950:8239848
+g1,38:30785864,-164950
+)
+]
+)
+)
+(1,38:30785864,-164950:0,0,0
+)
+)
+)
+)
+)
+g1,38:30785864,394196
+)
+g1,38:30785864,394196
+)
+(1,38:20129219,1413283:10656645,537395,152916
+g1,38:20129219,1413283
+(1,38:20129219,1413283:10656645,537395,152916
+x1,38:20931208,1413283
+g1,38:21187888,1413283
+x1,38:21711807,1413283
+x1,38:21861537,1413283
+g1,38:22118217,1413283
+x1,38:23936367,1413283
+k1,38:30785864,1413283:6849497
+)
+g1,38:30785864,1413283
+)
+]
+g1,38:30785864,1413283
+)
+g1,39:30785864,1413283
+g1,39:30785864,1413283
+)
+(1,46:0,2689602:30785864,589824,196608
+k1,43:0,2689602:0
+(1,43:0,2689602:0,0,0
+g1,43:0,2689602
+g1,43:0,2689602
+)
+x1,43:604388,2689602
+x1,43:1715315,2689602
+k1,43:2029809,2689602:314494
+x1,43:2605070,2689602
+k1,43:2919565,2689602:314495
+x1,43:3219025,2689602
+$1,43:3219025,2689602
+(1,43:3219025,2689602:770040,506811,0
+x1,43:3989065,2689602
+)
+k1,43:4120135,2689602:131070
+(1,43:4120135,2689602:2057718,521949,152916
+(1,43:4120135,2689602:2057718,521949,152916
+x1,43:4547935,2689602
+x1,43:5596045,2689602
+x1,43:6177853,2689602
+)
+)
+$1,43:6177853,2689602
+x1,43:6477313,2689602
+k1,43:6791807,2689602:314494
+k1,43:6791807,2689602:0
+k1,43:6791807,2689602:0
+x1,43:8224937,2689602
+k1,44:6791807,2689602:-21390
+x1,44:8545787,2689602
+k1,44:8819511,2689602:273724
+x1,44:9889011,2689602
+x1,44:10295421,2689602
+k1,44:10569145,2689602:273724
+x1,44:11189455,2689602
+k1,44:11463179,2689602:273724
+x1,44:12532679,2689602
+k1,44:12806402,2689602:273723
+x1,44:15848060,2689602
+k1,44:16121784,2689602:273724
+x1,44:18731364,2689602
+k1,44:19005088,2689602:273724
+x1,44:20844628,2689602
+k1,44:21237999,2689602:393371
+x1,44:21751086,2689602
+k1,44:22024810,2689602:273724
+x1,44:22431220,2689602
+x1,44:23222650,2689602
+k1,44:23496374,2689602:273724
+x1,44:24929504,2689602
+x1,44:25250354,2689602
+k1,44:25524078,2689602:273724
+x1,44:26336898,2689602
+k1,44:26610621,2689602:273723
+x1,44:28450161,2689602
+k1,44:28728146,2689602:277985
+x1,44:29155946,2689602
+k1,45:28728146,2689602:21390
+x1,45:30204056,2689602
+x1,45:30785864,2689602
+k1,45:30785864,2689602:0
+)
+(1,46:0,3639874:30785864,546132,152916
+x1,46:1197840,3639874
+g1,45:1454520,3639874
+x1,45:1882320,3639874
+x1,45:2245950,3639874
+g1,45:2502630,3639874
+x1,45:6057648,3639874
+g1,45:6314328,3639874
+x1,45:7875798,3639874
+g1,45:8132478,3639874
+x1,45:8538888,3639874
+x1,45:9629778,3639874
+g1,45:9886458,3639874
+x1,45:11469318,3639874
+g1,45:11725998,3639874
+x1,45:13612596,3639874
+k1,46:30785864,3639874:17173268
+g1,46:30785864,3639874
+)
+(1,51:1425408,4786754:29360456,589824,196608
+(1,48:1425408,4786754:0,0,0
+g1,48:1425408,4786754
+g1,48:0,4786754
+g1,48:-256680,4786754
+(1,48:-256680,4786754:1425408,0,0
+k1,48:1168728,4786754:1425408
+)
+g1,48:1425408,4786754
+)
+k1,49:1425408,4786754:0
+(1,49:1425408,4786754:0,589824,196608
+k1,49:-2436856,4786754:-3862264
+x1,49:-2137396,4786754
+$1,49:-2137396,4786754
+x1,49:-1778586,4786754
+(1,49:-1778586,4526336:778615,322479,101945
+x1,49:-1032739,4526336
+)
+$1,49:-999971,4786754
+x1,49:-720896,4786754
+r1,49:-720896,4786754:0,786432,196608
+g1,49:1425408,4786754
+g1,49:1425408,4786754
+)
+(1,49:1425408,4786754:0,506811,0
+k1,49:442368,4786754:-983040
+(1,49:442368,4786754:983040,506811,0
+x1,49:1130496,4786754
+g1,49:1425408,4786754
+)
+)
+x1,49:2926986,4786754
+k1,49:3218767,4786754:291781
+x1,49:3736405,4786754
+k1,49:4028186,4786754:291781
+x1,49:4841006,4786754
+k1,49:5132787,4786754:291781
+x1,49:7892097,4786754
+k1,49:8183878,4786754:291781
+x1,49:8804188,4786754
+k1,49:9095970,4786754:291782
+x1,49:9480990,4786754
+k1,49:9772771,4786754:291781
+x1,49:10585591,4786754
+x1,49:12467911,4786754
+x1,49:12788761,4786754
+k1,49:13080542,4786754:291781
+x1,49:16100810,4786754
+k1,49:16401366,4786754:300556
+x1,49:17470866,4786754
+k1,49:17762647,4786754:291781
+x1,49:19991485,4786754
+x1,49:20269555,4786754
+k1,49:20561336,4786754:291781
+x1,49:21720674,4786754
+k1,49:22012456,4786754:291782
+x1,49:22654156,4786754
+k1,49:22945937,4786754:291781
+x1,49:25345895,4786754
+k1,50:25637676,4786754:291781
+x1,50:27010914,4786754
+x1,50:28491102,4786754
+k1,50:28782883,4786754:291781
+x1,50:29424583,4786754
+k1,50:29716364,4786754:291781
+x1,50:30785864,4786754
+k1,50:30785864,4786754:0
+)
+(1,51:1425408,5737026:29360456,546132,152916
+x1,51:3226446,5737026
+g1,50:3483126,5737026
+x1,50:3910926,5737026
+x1,50:4873476,5737026
+x1,50:5622126,5737026
+k1,51:30785864,5737026:25163738
+g1,51:30785864,5737026
+)
+(1,59:1425408,7402677:29360456,1447199,920944
+(1,52:1425408,7402677:29360456,1447199,920944
+(1,52:1425408,8323621:0,0,0
+)
+(1,52:1425408,7402677:29360456,1447199,920944
+(1,52:1425408,8323621:29360456,2368143,0
+[1,52:1425408,8323621:29360456,2368143,0
+(1,52:1425408,5955478:29360456,0,0
+h1,52:1425408,5955478:0,0,0
+k1,52:30785864,5955478:29360456
+g1,52:30785864,5955478
+)
+]
+)
+)
+(1,52:30785864,5955478:0,0,0
+)
+)
+g1,59:30785864,7402677
+g1,59:30785864,7402677
+)
+(1,67:1425408,9447560:29360456,665187,213887
+(1,62:1425408,9447560:0,0,0
+g1,62:1425408,9447560
+g1,62:0,9447560
+g1,62:-256680,9447560
+(1,62:-256680,9447560:1425408,0,0
+k1,62:1168728,9447560:1425408
+)
+g1,62:1425408,9447560
+)
+k1,63:1425408,9447560:0
+(1,63:1425408,9447560:0,589824,196608
+k1,63:-2436856,9447560:-3862264
+x1,63:-2137396,9447560
+$1,63:-2137396,9447560
+x1,63:-1778586,9447560
+(1,63:-1778586,9187142:778615,322479,101945
+x1,63:-1032739,9187142
+)
+$1,63:-999971,9447560
+x1,63:-720896,9447560
+r1,63:-720896,9447560:0,786432,196608
+g1,63:1425408,9447560
+g1,63:1425408,9447560
+)
+(1,63:1425408,9447560:0,506811,0
+k1,63:442368,9447560:-983040
+(1,63:442368,9447560:983040,506811,0
+x1,63:1130496,9447560
+g1,63:1425408,9447560
+)
+)
+x1,63:2430465,9447560
+k1,63:2662162,9447560:231697
+x1,63:5421472,9447560
+k1,63:5653169,9447560:231697
+x1,63:6273479,9447560
+k1,63:6505176,9447560:231697
+x1,63:6890196,9447560
+k1,63:7121893,9447560:231697
+x1,63:8234173,9447560
+x1,63:8875873,9447560
+k1,63:9107571,9447560:231698
+x1,63:12127839,9447560
+k1,63:12457587,9447560:329748
+x1,63:13034844,9447560
+k1,64:13266541,9447560:231697
+x1,64:13784179,9447560
+k1,64:14015876,9447560:231697
+x1,64:14572016,9447560
+x1,64:15320666,9447560
+k1,64:15552364,9447560:231698
+x1,64:16771594,9447560
+x1,64:17734144,9447560
+k1,64:17965841,9447560:231697
+x1,64:19377581,9447560
+k1,64:19609278,9447560:231697
+(1,64:19609278,9447560:4736286,665187,157280
+$1,64:19609278,9447560
+[1,64:19609278,9447560:4736286,665187,157280
+(1,64:19609278,9447560:4736286,665187,0
+(1,64:19609278,9447560:4736286,665187,0
+(1,64:19609278,9447560:4736286,665187,285084
+k1,64:21188040,9447560:1578762
+r1,64:21188040,9447560:0,950271,285084
+k1,64:22766802,9447560:1578762
+k1,64:24345564,9447560:1578762
+)
+)
+)
+]
+$1,64:24345564,9447560
+)
+(1,64:24345564,9447560:0,608580,213887
+(1,64:24345564,9513341:0,674361,148106
+(1,64:24345564,9513341:0,674361,148106
+k1,64:19609278,9513341:-4736286
+(1,64:19609278,9513341:4736286,674361,148106
+(1,64:19609278,9661447:0,0,0
+)
+(1,64:19609278,9513341:4736286,674361,148106
+(1,64:19609278,9661447:4736286,822467,0
+[1,64:19609278,9661447:4736286,822467,0
+(1,64:19609278,8838980:4736286,0,0
+h1,64:19609278,8838980:0,0,0
+k1,64:24345564,8838980:4736286
+g1,64:24345564,8838980
+)
+]
+)
+)
+(1,64:24345564,8838980:0,0,0
+)
+)
+)
+)
+)
+k1,64:24577261,9447560:231697
+x1,64:25817881,9447560
+k1,64:26049578,9447560:231697
+(1,65:26049578,9447560:4736286,665187,157280
+$1,65:26049578,9447560
+[1,65:26049578,9447560:4736286,665187,157280
+(1,65:26049578,9447560:4736286,665187,0
+(1,65:26049578,9447560:4736286,665187,0
+(1,65:26049578,9447560:4736286,665187,285084
+k1,65:27628340,9447560:1578762
+r1,65:27628340,9447560:0,950271,285084
+k1,65:29207102,9447560:1578762
+k1,65:30785864,9447560:1578762
+)
+)
+)
+]
+$1,65:30785864,9447560
+)
+(1,65:30785864,9447560:0,608580,213887
+(1,65:30785864,9513341:0,674361,148106
+(1,65:30785864,9513341:0,674361,148106
+k1,65:26049578,9513341:-4736286
+(1,65:26049578,9513341:4736286,674361,148106
+(1,65:26049578,9661447:0,0,0
+)
+(1,65:26049578,9513341:4736286,674361,148106
+(1,65:26049578,9661447:4736286,822467,0
+[1,65:26049578,9661447:4736286,822467,0
+(1,65:26049578,8838980:4736286,0,0
+h1,65:26049578,8838980:0,0,0
+k1,65:30785864,8838980:4736286
+g1,65:30785864,8838980
+)
+]
+)
+)
+(1,65:30785864,8838980:0,0,0
+)
+)
+)
+)
+)
+k1,65:30785864,9447560:0
+)
+(1,67:1425408,10397832:29360456,546132,152916
+x1,67:2452128,10397832
+g1,65:2708808,10397832
+x1,65:3970818,10397832
+x1,65:4869198,10397832
+g1,65:5125878,10397832
+x1,65:7821018,10397832
+g1,65:8077698,10397832
+x1,65:8766456,10397832
+g1,65:9023136,10397832
+x1,65:10092636,10397832
+g1,65:10349316,10397832
+x1,65:13198464,10397832
+g1,65:13455144,10397832
+x1,65:14075454,10397832
+g1,65:14332134,10397832
+x1,65:15358854,10397832
+k1,66:14332134,10397832:21390
+x1,66:16877544,10397832
+g1,66:17134224,10397832
+x1,66:20004762,10397832
+k1,67:30785864,10397832:10781102
+g1,67:30785864,10397832
+)
+(1,81:1425408,11741320:29360456,671603,196608
+(1,80:1425408,11741320:0,0,0
+g1,80:1425408,11741320
+g1,80:0,11741320
+g1,80:-256680,11741320
+(1,80:-256680,11741320:1425408,0,0
+k1,80:1168728,11741320:1425408
+)
+g1,80:1425408,11741320
+)
+g1,80:1425408,11741320
+(1,80:1425408,11741320:0,671603,196608
+k1,80:-2436856,11741320:-3862264
+x1,80:-2137396,11741320
+$1,80:-2137396,11741320
+x1,80:-1778586,11741320
+[1,80:-1778586,11834692:778615,764975,0
+(1,80:-1778586,11392196:778615,322479,101945
+x1,80:-1032739,11392196
+)
+(1,80:-1778586,11834692:713624,225735,0
+x1,80:-1097730,11834692
+)
+]
+$1,80:-999971,11741320
+x1,80:-720896,11741320
+r1,80:-720896,11741320:0,868211,196608
+g1,80:1425408,11741320
+g1,80:1425408,11741320
+)
+(1,80:1425408,11741320:0,506811,0
+k1,80:442368,11741320:-983040
+(1,80:442368,11741320:983040,506811,0
+x1,80:1130496,11741320
+g1,80:1425408,11741320
+)
+)
+x1,80:1975916,11741320
+x1,80:3008119,11741320
+g1,80:3323599,11741320
+x1,80:4008079,11741320
+g1,80:4264759,11741320
+x1,80:4766842,11741320
+x1,80:6180063,11741320
+g1,80:6522303,11741320
+x1,80:7484580,11741320
+g1,80:7741260,11741320
+x1,80:9221448,11741320
+x1,80:11702688,11741320
+g1,80:11959368,11741320
+x1,80:14483388,11741320
+k1,81:30785864,11741320:16302476
+g1,81:30785864,11741320
+)
+(1,90:4931568,12876048:25854296,665187,213887
+(1,87:4931568,12876048:0,589824,196608
+g1,87:4931568,12876048
+g1,87:3904848,12876048
+g1,87:1425408,12876048
+(1,87:1425408,12876048:1026720,589824,196608
+g1,87:1425408,12876048
+(1,87:1425408,12876048:1026720,589824,196608
+k1,87:1439668,12876048:14260
+x1,87:1739128,12876048
+k1,87:1753388,12876048:14260
+x1,87:2138408,12876048
+k1,87:2152668,12876048:14260
+x1,87:2452128,12876048
+)
+)
+g1,87:4931568,12876048
+)
+(1,87:4931568,12876048:0,665187,213887
+k1,87:2708808,12876048:-2222760
+(1,87:2708808,12876048:1966080,665187,157280
+$1,87:2708808,12876048
+[1,87:2708808,12876048:1966080,665187,157280
+(1,87:2708808,12876048:1966080,665187,0
+(1,87:2708808,12876048:1966080,665187,0
+(1,87:2708808,12876048:1966080,665187,285084
+k1,87:3364168,12876048:655360
+r1,87:3364168,12876048:0,950271,285084
+k1,87:4019528,12876048:655360
+k1,87:4674888,12876048:655360
+)
+)
+)
+]
+$1,87:4674888,12876048
+)
+(1,87:4674888,12876048:0,608580,213887
+(1,87:4674888,12941829:0,674361,148106
+(1,87:4674888,12941829:0,674361,148106
+k1,87:2708808,12941829:-1966080
+(1,87:2708808,12941829:1966080,674361,148106
+(1,87:2708808,13089935:0,0,0
+)
+(1,87:2708808,12941829:1966080,674361,148106
+(1,87:2708808,13089935:1966080,822467,0
+[1,87:2708808,13089935:1966080,822467,0
+(1,87:2708808,12267468:1966080,0,0
+h1,87:2708808,12267468:0,0,0
+k1,87:4674888,12267468:1966080
+g1,87:4674888,12267468
+)
+]
+)
+)
+(1,87:4674888,12267468:0,0,0
+)
+)
+)
+)
+)
+g1,87:4931568,12876048
+)
+x1,87:5444655,12876048
+k1,87:5717126,12876048:272471
+x1,87:8587664,12876048
+k1,87:8860136,12876048:272472
+x1,87:9672956,12876048
+x1,87:10057976,12876048
+x1,87:10378826,12876048
+k1,87:10651297,12876048:272471
+$1,87:10651297,12876048
+x1,87:11036317,12876048
+$1,87:11036317,12876048
+k1,87:11308789,12876048:272472
+x1,87:13114105,12876048
+k1,87:13390524,12876048:276419
+x1,87:14887824,12876048
+k1,87:15160295,12876048:272471
+x1,87:15973115,12876048
+k1,87:16245587,12876048:272472
+x1,87:18106517,12876048
+x1,87:19137515,12876048
+k1,87:19409986,12876048:272471
+x1,87:20436706,12876048
+k1,88:20709178,12876048:272472
+x1,88:22719838,12876048
+k1,88:23109452,12876048:389614
+x1,88:24071729,12876048
+x1,88:24606479,12876048
+k1,88:24878950,12876048:272471
+x1,88:25396588,12876048
+k1,88:25669060,12876048:272472
+x1,88:26738560,12876048
+k1,88:27011031,12876048:272471
+x1,88:28508331,12876048
+k1,88:28780803,12876048:272472
+x1,88:29700573,12876048
+k1,88:29973044,12876048:272471
+x1,88:30785864,12876048
+k1,88:30785864,12876048:0
+)
+(1,90:4931568,13826320:25854296,546132,152916
+x1,90:5701608,13826320
+x1,88:6108018,13826320
+x1,88:6557208,13826320
+g1,88:6813888,13826320
+x1,88:8225628,13826320
+g1,88:8482308,13826320
+x1,88:9166788,13826320
+g1,88:9423468,13826320
+x1,88:11134668,13826320
+g1,88:11391348,13826320
+x1,88:12075828,13826320
+g1,88:12332508,13826320
+x1,88:13402008,13826320
+g1,88:13658688,13826320
+x1,88:14685408,13826320
+g1,88:14942088,13826320
+x1,88:15562398,13826320
+g1,89:15819078,13826320
+x1,89:17401938,13826320
+g1,89:17658618,13826320
+x1,89:19241478,13826320
+x1,89:20225418,13826320
+x1,89:20375148,13826320
+k1,90:30785864,13826320:10410716
+g1,90:30785864,13826320
+)
+(1,107:4931568,14973200:25854296,713465,213887
+(1,104:4931568,14973200:0,589824,196608
+g1,104:4931568,14973200
+g1,104:3904848,14973200
+g1,104:1425408,14973200
+(1,104:1425408,14973200:1026720,589824,196608
+g1,104:1425408,14973200
+(1,104:1425408,14973200:1026720,589824,196608
+g1,104:1425408,14973200
+x1,104:1724868,14973200
+g1,104:1724868,14973200
+x1,104:2152668,14973200
+g1,104:2152668,14973200
+x1,104:2452128,14973200
+)
+)
+g1,104:4931568,14973200
+)
+(1,104:4931568,14973200:0,665187,213887
+k1,104:2708808,14973200:-2222760
+(1,104:2708808,14973200:1966080,665187,157280
+$1,104:2708808,14973200
+[1,104:2708808,14973200:1966080,665187,157280
+(1,104:2708808,14973200:1966080,665187,0
+(1,104:2708808,14973200:1966080,665187,0
+(1,104:2708808,14973200:1966080,665187,285084
+k1,104:3364168,14973200:655360
+r1,104:3364168,14973200:0,950271,285084
+k1,104:4019528,14973200:655360
+k1,104:4674888,14973200:655360
+)
+)
+)
+]
+$1,104:4674888,14973200
+)
+(1,104:4674888,14973200:0,608580,213887
+(1,104:4674888,15038981:0,674361,148106
+(1,104:4674888,15038981:0,674361,148106
+k1,104:2708808,15038981:-1966080
+(1,104:2708808,15038981:1966080,674361,148106
+(1,104:2708808,15187087:0,0,0
+)
+(1,104:2708808,15038981:1966080,674361,148106
+(1,104:2708808,15187087:1966080,822467,0
+[1,104:2708808,15187087:1966080,822467,0
+(1,104:2708808,14364620:1966080,0,0
+h1,104:2708808,14364620:0,0,0
+k1,104:4674888,14364620:1966080
+g1,104:4674888,14364620
+)
+]
+)
+)
+(1,104:4674888,14364620:0,0,0
+)
+)
+)
+)
+)
+g1,104:4931568,14973200
+)
+$1,104:4931568,14973200
+x1,104:5316588,14973200
+k1,104:5515380,14973200:198792
+x1,104:6114300,14973200
+k1,104:6313092,14973200:198792
+x1,104:6698112,14973200
+k1,104:6976643,14973200:278531
+x1,104:7575563,14973200
+k1,104:7854093,14973200:278530
+x1,104:8239113,14973200
+$1,104:8239113,14973200
+k1,104:8531091,14973200:291978
+x1,104:8744991,14973200
+x1,104:9194181,14973200
+k1,104:9486158,14973200:291977
+$1,104:9486158,14973200
+(1,104:9486158,14973200:1040382,713465,104422
+(1,104:9486158,14322647:655362,31456,754975
+x1,104:10141520,14322647
+)
+[1,104:10141520,14973200:385020,713465,0
+(1,104:10141520,14973200:385020,506811,0
+x1,104:10526540,14973200
+)
+]
+)
+$1,104:10526540,14973200
+k1,104:10818517,14973200:291977
+x1,104:11336155,14973200
+k1,104:11628133,14973200:291978
+x1,104:12013153,14973200
+k1,104:12305130,14973200:291977
+x1,104:14914710,14973200
+k1,104:15206688,14973200:291978
+x1,104:15634488,14973200
+x1,104:16682598,14973200
+x1,104:17089008,14973200
+x1,104:17965998,14973200
+k1,104:18414130,14973200:448132
+x1,104:19376407,14973200
+x1,104:19911157,14973200
+k1,104:20203134,14973200:291977
+x1,104:20720772,14973200
+k1,105:21012750,14973200:291978
+x1,105:22082250,14973200
+k1,105:22374227,14973200:291977
+x1,105:23871527,14973200
+k1,105:24163504,14973200:291977
+x1,105:25083274,14973200
+k1,105:25375252,14973200:291978
+x1,105:26188072,14973200
+k1,105:26480049,14973200:291977
+x1,105:27250089,14973200
+x1,105:27656499,14973200
+x1,105:28105689,14973200
+k1,105:28397667,14973200:291978
+x1,105:29809407,14973200
+k1,105:30101384,14973200:291977
+x1,105:30785864,14973200
+k1,105:30785864,14973200:0
+)
+(1,107:4931568,15923472:25854296,546132,152916
+x1,107:6642768,15923472
+g1,105:6899448,15923472
+x1,105:7583928,15923472
+g1,105:7840608,15923472
+x1,105:8910108,15923472
+g1,105:9166788,15923472
+x1,105:10193508,15923472
+g1,105:10450188,15923472
+x1,105:11070498,15923472
+g1,105:11327178,15923472
+x1,105:12910038,15923472
+g1,105:13166718,15923472
+x1,105:14749578,15923472
+k1,106:13166718,15923472:-21390
+x1,106:15733518,15923472
+x1,106:15883248,15923472
+k1,107:30785864,15923472:14902616
+g1,107:30785864,15923472
+)
+(1,122:4931568,17070352:25854296,665187,213887
+(1,116:4931568,17070352:0,589824,196608
+g1,116:4931568,17070352
+g1,116:3904848,17070352
+g1,116:1425408,17070352
+(1,116:1425408,17070352:1026720,589824,196608
+g1,116:1425408,17070352
+(1,116:1425408,17070352:1026720,589824,196608
+k1,116:1453928,17070352:28520
+x1,116:1753388,17070352
+k1,116:1781908,17070352:28520
+x1,116:2124148,17070352
+k1,116:2152668,17070352:28520
+x1,116:2452128,17070352
+)
+)
+g1,116:4931568,17070352
+)
+(1,116:4931568,17070352:0,665187,213887
+k1,116:2708808,17070352:-2222760
+(1,116:2708808,17070352:1966080,665187,157280
+$1,116:2708808,17070352
+[1,116:2708808,17070352:1966080,665187,157280
+(1,116:2708808,17070352:1966080,665187,0
+(1,116:2708808,17070352:1966080,665187,0
+(1,116:2708808,17070352:1966080,665187,285084
+k1,116:3364168,17070352:655360
+r1,116:3364168,17070352:0,950271,285084
+k1,116:4019528,17070352:655360
+k1,116:4674888,17070352:655360
+)
+)
+)
+]
+$1,116:4674888,17070352
+)
+(1,116:4674888,17070352:0,608580,213887
+(1,116:4674888,17136133:0,674361,148106
+(1,116:4674888,17136133:0,674361,148106
+k1,116:2708808,17136133:-1966080
+(1,116:2708808,17136133:1966080,674361,148106
+(1,116:2708808,17284239:0,0,0
+)
+(1,116:2708808,17136133:1966080,674361,148106
+(1,116:2708808,17284239:1966080,822467,0
+[1,116:2708808,17284239:1966080,822467,0
+(1,116:2708808,16461772:1966080,0,0
+h1,116:2708808,16461772:0,0,0
+k1,116:4674888,16461772:1966080
+g1,116:4674888,16461772
+)
+]
+)
+)
+(1,116:4674888,16461772:0,0,0
+)
+)
+)
+)
+)
+g1,116:4931568,17070352
+)
+$1,116:4931568,17070352
+x1,116:7516812,17070352
+x1,116:8956997,17070352
+k1,116:9218215,17070352:233001
+x1,116:9817135,17070352
+k1,116:10050136,17070352:233001
+x1,116:10734616,17070352
+$1,116:10734616,17070352
+k1,116:11504656,17070352:770040
+x1,116:11804116,17070352
+$1,116:11804116,17070352
+x1,116:12241702,17070352
+$1,116:12241702,17070352
+x1,116:12455602,17070352
+k1,116:12722968,17070352:267366
+$1,117:12722968,17070352
+x1,117:13098430,17070352
+$1,117:13126647,17070352
+k1,117:13391876,17070352:265229
+x1,117:14632496,17070352
+k1,117:14897725,17070352:265229
+x1,117:15325525,17070352
+x1,117:16373635,17070352
+x1,117:16780045,17070352
+x1,117:18260233,17070352
+k1,117:18628119,17070352:367886
+x1,117:19590396,17070352
+x1,117:20125146,17070352
+k1,117:20390375,17070352:265229
+x1,117:20908013,17070352
+k1,117:21173241,17070352:265228
+x1,117:22242741,17070352
+k1,117:22507970,17070352:265229
+x1,117:24005270,17070352
+k1,117:24270499,17070352:265229
+x1,117:25190269,17070352
+k1,117:25455498,17070352:265229
+x1,117:26268318,17070352
+k1,117:26533546,17070352:265228
+x1,117:27303586,17070352
+x1,117:27709996,17070352
+x1,117:28159186,17070352
+k1,117:28424415,17070352:265229
+x1,117:29836155,17070352
+k1,117:30101384,17070352:265229
+x1,117:30785864,17070352
+k1,117:30785864,17070352:0
+)
+(1,122:4931568,18020624:25854296,546132,152916
+x1,122:6642768,18020624
+g1,117:6899448,18020624
+x1,117:7583928,18020624
+g1,117:7840608,18020624
+x1,117:8910108,18020624
+g1,118:9166788,18020624
+x1,118:10193508,18020624
+g1,118:10450188,18020624
+x1,118:11070498,18020624
+g1,118:11327178,18020624
+x1,118:12910038,18020624
+g1,118:13166718,18020624
+x1,118:14749578,18020624
+x1,118:15733518,18020624
+x1,118:15883248,18020624
+k1,122:30785864,18020624:14902616
+g1,122:30785864,18020624
+)
+(1,128:4931568,19167504:25854296,665187,213887
+(1,123:4931568,19167504:0,589824,196608
+g1,123:4931568,19167504
+g1,123:3904848,19167504
+g1,123:1425408,19167504
+(1,123:1425408,19167504:1026720,589824,196608
+g1,123:1425408,19167504
+(1,123:1425408,19167504:1026720,589824,196608
+g1,123:1425408,19167504
+x1,123:1724868,19167504
+g1,123:1724868,19167504
+x1,123:2152668,19167504
+g1,123:2152668,19167504
+x1,123:2452128,19167504
+)
+)
+g1,123:4931568,19167504
+)
+(1,123:4931568,19167504:0,665187,213887
+k1,123:2708808,19167504:-2222760
+(1,123:2708808,19167504:1966080,665187,157280
+$1,123:2708808,19167504
+[1,123:2708808,19167504:1966080,665187,157280
+(1,123:2708808,19167504:1966080,665187,0
+(1,123:2708808,19167504:1966080,665187,0
+(1,123:2708808,19167504:1966080,665187,285084
+k1,123:3364168,19167504:655360
+r1,123:3364168,19167504:0,950271,285084
+k1,123:4019528,19167504:655360
+k1,123:4674888,19167504:655360
+)
+)
+)
+]
+$1,123:4674888,19167504
+)
+(1,123:4674888,19167504:0,608580,213887
+(1,123:4674888,19233285:0,674361,148106
+(1,123:4674888,19233285:0,674361,148106
+k1,123:2708808,19233285:-1966080
+(1,123:2708808,19233285:1966080,674361,148106
+(1,123:2708808,19381391:0,0,0
+)
+(1,123:2708808,19233285:1966080,674361,148106
+(1,123:2708808,19381391:1966080,822467,0
+[1,123:2708808,19381391:1966080,822467,0
+(1,123:2708808,18558924:1966080,0,0
+h1,123:2708808,18558924:0,0,0
+k1,123:4674888,18558924:1966080
+g1,123:4674888,18558924
+)
+]
+)
+)
+(1,123:4674888,18558924:0,0,0
+)
+)
+)
+)
+)
+g1,123:4931568,19167504
+)
+$1,123:4931568,19167504
+x1,123:7516812,19167504
+x1,123:8938571,19167504
+x1,123:9930248,19167504
+x1,123:10702337,19167504
+g1,123:10877097,19167504
+x1,123:11476017,19167504
+g1,123:11650777,19167504
+x1,123:12026239,19167504
+x1,123:12353916,19167504
+g1,123:12572366,19167504
+x1,123:13171286,19167504
+g1,123:13389736,19167504
+x1,123:14074216,19167504
+$1,123:14074216,19167504
+x1,123:14288116,19167504
+g1,123:14544796,19167504
+g1,124:15314836,19167504
+x1,124:15614296,19167504
+$1,124:15614296,19167504
+x1,124:16051882,19167504
+$1,124:16051882,19167504
+x1,124:16265782,19167504
+g1,124:16522462,19167504
+$1,124:16522462,19167504
+x1,124:16897924,19167504
+$1,124:16926141,19167504
+x1,124:17140041,19167504
+g1,124:17396721,19167504
+x1,124:18637341,19167504
+g1,124:18894021,19167504
+$1,124:18894021,19167504
+x1,124:19251735,19167504
+$1,124:19286778,19167504
+g1,124:19543458,19167504
+x1,124:20784078,19167504
+g1,124:21040758,19167504
+x1,124:21468558,19167504
+x1,124:22516668,19167504
+x1,124:22923078,19167504
+x1,124:24403266,19167504
+k1,128:30785864,19167504:6382598
+g1,128:30785864,19167504
+)
+(1,137:1425408,20683296:29360456,589824,196608
+(1,133:1425408,20683296:0,0,0
+g1,133:1425408,20683296
+g1,133:0,20683296
+g1,133:-256680,20683296
+(1,133:-256680,20683296:1425408,0,0
+k1,133:1168728,20683296:1425408
+)
+g1,133:1425408,20683296
+)
+k1,133:1425408,20683296:0
+(1,133:1425408,20683296:0,589824,196608
+k1,133:-2795666,20683296:-4221074
+x1,133:-2496206,20683296
+$1,133:-2496206,20683296
+(1,133:-2496206,20683296:717620,462465,0
+x1,133:-1778586,20683296
+)
+(1,133:-1778586,20422878:778615,322479,101945
+x1,133:-1032739,20422878
+)
+$1,133:-999971,20683296
+x1,133:-720896,20683296
+r1,133:-720896,20683296:0,786432,196608
+g1,133:1425408,20683296
+g1,133:1425408,20683296
+)
+(1,133:1425408,20683296:0,506811,0
+k1,133:442368,20683296:-983040
+(1,133:442368,20683296:983040,506811,0
+x1,133:1130496,20683296
+g1,133:1425408,20683296
+)
+)
+x1,133:2986605,20683296
+k1,133:3157964,20683296:171359
+x1,133:3675602,20683296
+k1,133:3846960,20683296:171358
+x1,133:4659780,20683296
+k1,133:4831139,20683296:171359
+x1,133:7590449,20683296
+k1,133:7761807,20683296:171358
+x1,133:8382117,20683296
+k1,133:8553476,20683296:171359
+x1,133:8938496,20683296
+k1,133:9109854,20683296:171358
+x1,133:10607154,20683296
+k1,133:10778513,20683296:171359
+x1,133:13730333,20683296
+k1,133:13901692,20683296:171359
+x1,133:16853512,20683296
+k1,133:17167311,20683296:313799
+x1,133:17744568,20683296
+k1,133:17915927,20683296:171359
+x1,133:19006817,20683296
+x1,133:19631405,20683296
+k1,133:19802763,20683296:171358
+x1,133:20872263,20683296
+k1,133:21043622,20683296:171359
+x1,133:23781542,20683296
+k1,134:23952900,20683296:171358
+x1,134:26861940,20683296
+x1,134:27140010,20683296
+k1,134:27311369,20683296:171359
+x1,134:27525269,20683296
+x1,134:30358064,20683296
+x1,134:30785864,20683296
+k1,134:30785864,20683296:0
+)
+(1,137:1425408,21633568:29360456,546132,152916
+x1,137:2002665,21633568
+x1,134:2751315,21633568
+g1,134:3007995,21633568
+x1,134:3739533,21633568
+x1,134:5301003,21633568
+g1,134:5557683,21633568
+x1,134:6627183,21633568
+g1,134:6883863,21633568
+x1,134:7311663,21633568
+k1,135:6883863,21633568:21390
+x1,135:8359773,21633568
+x1,135:8941581,21633568
+g1,135:9198261,21633568
+x1,135:10575777,21633568
+x1,135:12607827,21633568
+g1,135:12864507,21633568
+x1,135:14361807,21633568
+g1,135:14618487,21633568
+x1,135:15687987,21633568
+x1,135:16094397,21633568
+g1,135:16351077,21633568
+x1,135:17762817,21633568
+g1,135:18019497,21633568
+x1,135:19777755,21633568
+g1,135:20034435,21633568
+x1,135:21103935,21633568
+g1,135:21360615,21633568
+x1,135:22979355,21633568
+g1,135:23236035,21633568
+x1,135:26701215,21633568
+k1,137:30785864,21633568:4084649
+g1,137:30785864,21633568
+)
+(1,141:2708808,22768297:28077056,589824,196608
+(1,140:2708808,22768297:0,589824,196608
+g1,140:2708808,22768297
+g1,140:1682088,22768297
+g1,140:1425408,22768297
+(1,140:1425408,22768297:1026720,589824,196608
+g1,140:1425408,22768297
+(1,140:1425408,22768297:1026720,589824,196608
+k1,140:1439668,22768297:14260
+x1,140:1739128,22768297
+k1,140:1753388,22768297:14260
+x1,140:2138408,22768297
+k1,140:2152668,22768297:14260
+x1,140:2452128,22768297
+)
+)
+g1,140:2708808,22768297
+)
+x1,140:3008268,22768297
+$1,140:3008268,22768297
+(1,140:3008268,22768297:770040,506811,0
+x1,140:3778308,22768297
+)
+g1,140:3909378,22768297
+(1,140:3909378,22768297:1030998,483719,152916
+(1,140:3909378,22768297:1030998,483719,152916
+x1,140:4940376,22768297
+)
+)
+$1,140:4940376,22768297
+x1,140:5239836,22768297
+g1,140:5496516,22768297
+x1,140:6998094,22768297
+g1,140:7254774,22768297
+x1,140:7639794,22768297
+g1,140:7896474,22768297
+x1,140:9436554,22768297
+g1,140:9693234,22768297
+x1,140:11062194,22768297
+k1,141:30785864,22768297:19723670
+g1,141:30785864,22768297
+)
+(1,145:2708808,25069676:28077056,2039235,1512980
+(1,142:2708808,25069676:28077056,2039235,1512980
+(1,142:2708808,26582656:0,0,0
+)
+(1,142:2708808,25069676:28077056,2039235,1512980
+(1,142:2708808,26582656:28077056,3552215,0
+[1,142:2708808,26582656:28077056,3552215,0
+(1,142:2708808,23030441:28077056,0,0
+h1,142:2708808,23030441:0,0,0
+k1,142:30785864,23030441:28077056
+g1,142:30785864,23030441
+)
+]
+)
+)
+(1,142:30785864,23030441:0,0,0
+)
+)
+g1,145:30785864,25069676
+g1,145:30785864,25069676
+)
+(1,147:2708808,27434624:28077056,589824,196608
+(1,146:2708808,27434624:0,589824,196608
+g1,146:2708808,27434624
+g1,146:1682088,27434624
+g1,146:1425408,27434624
+(1,146:1425408,27434624:1026720,589824,196608
+g1,146:1425408,27434624
+(1,146:1425408,27434624:1026720,589824,196608
+g1,146:1425408,27434624
+x1,146:1724868,27434624
+g1,146:1724868,27434624
+x1,146:2152668,27434624
+g1,146:2152668,27434624
+x1,146:2452128,27434624
+)
+)
+g1,146:2708808,27434624
+)
+x1,146:3008268,27434624
+$1,146:3008268,27434624
+x1,146:3393288,27434624
+g1,146:3524358,27434624
+(1,146:3524358,27434624:1030998,483719,152916
+(1,146:3524358,27434624:1030998,483719,152916
+x1,146:4555356,27434624
+)
+)
+$1,146:4555356,27434624
+x1,146:4854816,27434624
+g1,146:5111496,27434624
+x1,146:6613074,27434624
+g1,146:6869754,27434624
+x1,146:8024814,27434624
+g1,146:8281494,27434624
+x1,146:8799132,27434624
+g1,146:9055812,27434624
+x1,146:10702842,27434624
+x1,146:11142702,27434624
+g1,146:11399382,27434624
+x1,146:12088140,27434624
+g1,146:12344820,27434624
+x1,146:14098800,27434624
+k1,147:30785864,27434624:16687064
+g1,147:30785864,27434624
+)
+(1,151:2708808,29736003:28077056,2039235,1512980
+(1,148:2708808,29736003:28077056,2039235,1512980
+(1,148:2708808,31248983:0,0,0
+)
+(1,148:2708808,29736003:28077056,2039235,1512980
+(1,148:2708808,31248983:28077056,3552215,0
+[1,148:2708808,31248983:28077056,3552215,0
+(1,148:2708808,27696768:28077056,0,0
+h1,148:2708808,27696768:0,0,0
+k1,148:30785864,27696768:28077056
+g1,148:30785864,27696768
+)
+]
+)
+)
+(1,148:30785864,27696768:0,0,0
+)
+)
+g1,151:30785864,29736003
+g1,151:30785864,29736003
+)
+(1,161:1425408,32469863:29360456,589824,196608
+(1,158:1425408,32469863:0,0,0
+g1,158:1425408,32469863
+g1,158:0,32469863
+g1,158:-256680,32469863
+(1,158:-256680,32469863:1425408,0,0
+k1,158:1168728,32469863:1425408
+)
+g1,158:1425408,32469863
+)
+k1,158:1425408,32469863:0
+(1,158:1425408,32469863:0,589824,196608
+k1,158:-2795666,32469863:-4221074
+x1,158:-2496206,32469863
+$1,158:-2496206,32469863
+(1,158:-2496206,32469863:717620,462465,0
+x1,158:-1778586,32469863
+)
+(1,158:-1778586,32209445:778615,322479,101945
+x1,158:-1032739,32209445
+)
+$1,158:-999971,32469863
+x1,158:-720896,32469863
+r1,158:-720896,32469863:0,786432,196608
+g1,158:1425408,32469863
+g1,158:1425408,32469863
+)
+(1,158:1425408,32469863:0,506811,0
+k1,158:442368,32469863:-983040
+(1,158:442368,32469863:983040,506811,0
+x1,158:1130496,32469863
+g1,158:1425408,32469863
+)
+)
+x1,158:3393288,32469863
+k1,159:3705081,32469863:311793
+x1,159:4774581,32469863
+k1,159:5086374,32469863:311793
+x1,159:7396494,32469863
+k1,159:7708287,32469863:311793
+x1,159:9380985,32469863
+x1,159:10001295,32469863
+k1,159:10313089,32469863:311794
+x1,159:11232859,32469863
+k1,159:11544652,32469863:311793
+x1,159:12614152,32469863
+x1,159:13020562,32469863
+k1,159:13332355,32469863:311793
+x1,159:13952665,32469863
+k1,159:14264458,32469863:311793
+x1,159:15333958,32469863
+k1,159:15645751,32469863:311793
+x1,159:17078881,32469863
+x1,159:18640351,32469863
+k1,159:18952144,32469863:311793
+x1,159:19593844,32469863
+x1,159:21711454,32469863
+k1,159:22023247,32469863:311793
+x1,159:22365487,32469863
+k1,160:22023247,32469863:-21390
+x1,160:24269197,32469863
+k1,160:24776777,32469863:507580
+x1,160:26744657,32469863
+k1,160:27056450,32469863:311793
+x1,160:27574088,32469863
+k1,160:27885881,32469863:311793
+x1,160:29319011,32469863
+k1,160:29630804,32469863:311793
+x1,160:30785864,32469863
+k1,160:30785864,32469863:0
+)
+(1,161:1425408,33420135:29360456,483719,0
+x1,161:3735528,33420135
+g1,160:3992208,33420135
+x1,160:5664906,33420135
+x1,160:6499116,33420135
+k1,161:30785864,33420135:24286748
+g1,161:30785864,33420135
+)
+(1,188:1425408,34567015:29360456,665187,6969756
+r1,161:1425408,34567015:0,7634943,6969756
+g1,161:2708808,34567015
+(1,188:2708808,34567015:0,665187,6969756
+$1,188:2708808,34567015
+[1,188:2708808,34567015:0,665187,6969756
+(1,188:2708808,34567015:-37458944,665187,6969756
+g1,163:2708808,34567015
+(1,175:2708808,34567015:14038528,665187,6969756
+r1,163:2708808,34567015:0,950271,285084
+[1,175:2708808,34567015:13298524,665187,3791259
+(1,164:2708808,34567015:13298524,665187,285084
+h1,163:2708808,34567015:0,0,0
+r1,163:2708808,34567015:0,950271,285084
+g1,163:2708808,34567015
+(1,163:2708808,34567015:0,589824,196608
+k1,163:1468188,34567015:-1240620
+x1,163:1767648,34567015
+g1,163:1767648,34567015
+x1,163:2152668,34567015
+g1,163:2152668,34567015
+x1,163:2452128,34567015
+g1,163:2708808,34567015
+)
+x1,163:3008268,34567015
+$1,163:3008268,34567015
+x1,163:3393288,34567015
+g1,163:3524358,34567015
+(1,163:3524358,34567015:1030998,483719,152916
+(1,163:3524358,34567015:1030998,483719,152916
+x1,163:4555356,34567015
+)
+)
+$1,163:4555356,34567015
+x1,163:4854816,34567015
+g1,163:5111496,34567015
+x1,163:5817093,34567015
+g1,163:6073773,34567015
+x1,163:7742193,34567015
+g1,163:7998873,34567015
+x1,163:8405283,34567015
+x1,163:9410613,34567015
+g1,163:9667293,34567015
+x1,163:10736793,34567015
+g1,163:10993473,34567015
+x1,163:13218033,34567015
+x1,163:14355981,34567015
+g1,163:14612661,34567015
+x1,163:15729219,34567015
+k1,163:16007332,34567015:278113
+)
+(1,164:2708808,35517287:13298524,546132,0
+x1,164:3778308,35517287
+g1,163:4034988,35517287
+x1,163:4420008,35517287
+x1,163:5938698,35517287
+g1,163:6195378,35517287
+x1,163:7970748,35517287
+k1,164:11989040,35517287:4018292
+k1,164:16007332,35517287:4018292
+)
+(1,171:2708808,37122918:13298524,1343487,950271
+(1,171:2708808,37122918:13298524,1343487,950271
+$1,171:2708808,37122918
+[1,171:2708808,37122918:13298524,1343487,950271
+(1,169:2708808,36444618:13298524,665187,285084
+g1,165:2708808,36444618
+(1,168:2708808,36444618:6649262,665187,285084
+r1,165:2708808,36444618:0,950271,285084
+[1,168:2708808,36444618:6550958,665187,285084
+(1,168:2708808,36444618:6550958,665187,285084
+h1,167:2708808,36444618:0,0,0
+r1,167:2708808,36444618:0,950271,285084
+g1,167:2708808,36444618
+(1,167:2708808,36543290:0,0,0
+)
+(1,167:2708808,36444618:723599,624927,98672
+(1,167:2708808,36543290:723599,723599,0
+[1,167:2708808,36543290:723599,723599,0
+(1,167:2708808,35819691:723599,0,0
+h1,167:2708808,35819691:0,0,0
+k1,167:3432407,35819691:723599
+g1,167:3432407,35819691
+)
+]
+)
+)
+(1,167:3432407,35819691:0,0,0
+)
+g1,167:3689087,36444618
+x1,167:5229167,36444618
+r1,168:5229167,36444618:0,285084,285084
+k1,168:7244467,36444618:2015300
+k1,168:9259766,36444618:2015299
+)
+]
+g1,168:9259766,36444618
+g1,168:9358070,36444618
+)
+g1,168:9358070,36444618
+(1,169:9358070,36444618:6649262,665187,285084
+g1,168:9456374,36444618
+[1,169:9456374,36444618:6550958,665187,285084
+(1,169:9456374,36444618:6550958,665187,285084
+h1,168:9456374,36444618:0,0,0
+r1,168:9456374,36444618:0,950271,285084
+g1,168:9456374,36444618
+(1,168:9456374,36543290:0,0,0
+)
+(1,168:9456374,36444618:723599,624927,98672
+(1,168:9456374,36543290:723599,723599,0
+[1,168:9456374,36543290:723599,723599,0
+(1,168:9456374,35819691:723599,0,0
+h1,168:9456374,35819691:0,0,0
+k1,168:10179973,35819691:723599
+g1,168:10179973,35819691
+)
+]
+)
+)
+(1,168:10179973,35819691:0,0,0
+)
+g1,168:10436653,36444618
+x1,168:11976733,36444618
+r1,169:11976733,36444618:0,285084,285084
+k1,169:13992033,36444618:2015300
+k1,169:16007332,36444618:2015299
+)
+]
+g1,169:16007332,36444618
+)
+g1,169:16007332,36444618
+)
+(1,171:2708808,37788105:13298524,665187,285084
+g1,169:2708808,37788105
+(1,170:2708808,37788105:6649262,665187,285084
+r1,169:2708808,37788105:0,950271,285084
+[1,170:2708808,37788105:6550958,665187,285084
+(1,170:2708808,37788105:6550958,665187,285084
+h1,169:2708808,37788105:0,0,0
+r1,169:2708808,37788105:0,950271,285084
+g1,169:2708808,37788105
+(1,169:2708808,37886777:0,0,0
+)
+(1,169:2708808,37788105:723599,624927,98672
+(1,169:2708808,37886777:723599,723599,0
+[1,169:2708808,37886777:723599,723599,0
+(1,169:2708808,37163178:723599,0,0
+h1,169:2708808,37163178:0,0,0
+k1,169:3432407,37163178:723599
+g1,169:3432407,37163178
+)
+]
+)
+)
+(1,169:3432407,37163178:0,0,0
+)
+g1,169:3689087,37788105
+x1,169:5229167,37788105
+r1,170:5229167,37788105:0,285084,285084
+k1,170:7244467,37788105:2015300
+k1,170:9259766,37788105:2015299
+)
+]
+g1,170:9259766,37788105
+g1,170:9358070,37788105
+)
+g1,170:9358070,37788105
+(1,171:9358070,37788105:6649262,665187,285084
+g1,170:9456374,37788105
+[1,171:9456374,37788105:6550958,665187,285084
+(1,171:9456374,37788105:6550958,665187,285084
+h1,170:9456374,37788105:0,0,0
+r1,170:9456374,37788105:0,950271,285084
+g1,170:9456374,37788105
+(1,170:9456374,37886777:0,0,0
+)
+(1,170:9456374,37788105:723599,624927,98672
+(1,170:9456374,37886777:723599,723599,0
+[1,170:9456374,37886777:723599,723599,0
+(1,170:9456374,37163178:723599,0,0
+h1,170:9456374,37163178:0,0,0
+k1,170:10179973,37163178:723599
+g1,170:10179973,37163178
+)
+]
+)
+)
+(1,170:10179973,37163178:0,0,0
+)
+g1,170:10436653,37788105
+x1,170:11976733,37788105
+r1,171:11976733,37788105:0,285084,285084
+k1,171:13992033,37788105:2015300
+k1,171:16007332,37788105:2015299
+)
+]
+g1,171:16007332,37788105
+)
+g1,171:16007332,37788105
+)
+]
+$1,171:16007332,37122918
+)
+g1,171:16007332,37122918
+g1,171:16007332,37122918
+)
+(1,175:2708808,38073190:13298524,0,285084
+r1,175:2708808,38073190:0,285084,285084
+k1,175:9358070,38073190:6649262
+k1,175:16007332,38073190:6649262
+)
+]
+g1,175:16007332,34567015
+g1,175:16747336,34567015
+)
+g1,175:16747336,34567015
+(1,188:16747336,34567015:-51497472,665187,6969756
+g1,176:17487340,34567015
+[1,188:17487340,34567015:13298524,665187,6969756
+(1,177:17487340,34567015:13298524,665187,285084
+h1,176:17487340,34567015:0,0,0
+r1,176:17487340,34567015:0,950271,285084
+g1,176:17487340,34567015
+(1,176:17487340,34567015:0,589824,196608
+k1,176:16203940,34567015:-1283400
+x1,176:16503400,34567015
+g1,176:16503400,34567015
+x1,176:16931200,34567015
+g1,176:16931200,34567015
+x1,176:17230660,34567015
+g1,176:17487340,34567015
+)
+x1,176:17786800,34567015
+$1,176:17786800,34567015
+x1,176:18171820,34567015
+g1,176:18302890,34567015
+(1,176:18302890,34567015:1030998,483719,152916
+(1,176:18302890,34567015:1030998,483719,152916
+x1,176:19333888,34567015
+)
+)
+$1,176:19333888,34567015
+x1,176:19633348,34567015
+g1,176:19890028,34567015
+x1,176:20595625,34567015
+g1,176:20852305,34567015
+x1,176:22520725,34567015
+g1,176:22777405,34567015
+x1,176:23183815,34567015
+x1,176:24189145,34567015
+g1,176:24445825,34567015
+x1,176:25515325,34567015
+g1,176:25772005,34567015
+x1,176:27996565,34567015
+x1,176:29134513,34567015
+g1,176:29391193,34567015
+x1,176:30507751,34567015
+k1,176:30785864,34567015:278113
+)
+(1,177:17487340,35517287:13298524,546132,0
+x1,177:18556840,35517287
+g1,176:18813520,35517287
+x1,176:19198540,35517287
+x1,176:20717230,35517287
+g1,176:20973910,35517287
+x1,176:22749280,35517287
+k1,177:26767572,35517287:4018292
+k1,177:30785864,35517287:4018292
+)
+(1,180:18467619,36664167:12318245,665187,285084
+(1,179:18467619,36664167:0,665187,285084
+g1,179:18467619,36664167
+g1,179:17487340,36664167
+g1,179:17487340,36664167
+(1,179:17487340,36664167:980279,665187,285084
+g1,179:17487340,36664167
+r1,179:17487340,36664167:0,950271,285084
+(1,179:17487340,36762839:0,0,0
+)
+(1,179:17487340,36664167:723599,624927,98672
+(1,179:17487340,36762839:723599,723599,0
+[1,179:17487340,36762839:723599,723599,0
+(1,179:17487340,36039240:723599,0,0
+h1,179:17487340,36039240:0,0,0
+k1,179:18210939,36039240:723599
+g1,179:18210939,36039240
+)
+]
+)
+)
+(1,179:18210939,36039240:0,0,0
+)
+g1,179:18467619,36664167
+)
+g1,179:18467619,36664167
+)
+g1,179:18467619,36664167
+x1,179:20007699,36664167
+k1,180:25396782,36664167:5389083
+k1,180:30785864,36664167:5389082
+)
+(1,181:18467619,37811047:12318245,665187,285084
+(1,180:18467619,37811047:0,665187,285084
+g1,180:18467619,37811047
+g1,180:17487340,37811047
+g1,180:17487340,37811047
+(1,180:17487340,37811047:980279,665187,285084
+g1,180:17487340,37811047
+r1,180:17487340,37811047:0,950271,285084
+(1,180:17487340,37909719:0,0,0
+)
+(1,180:17487340,37811047:723599,624927,98672
+(1,180:17487340,37909719:723599,723599,0
+[1,180:17487340,37909719:723599,723599,0
+(1,180:17487340,37186120:723599,0,0
+h1,180:17487340,37186120:0,0,0
+k1,180:18210939,37186120:723599
+g1,180:18210939,37186120
+)
+]
+)
+)
+(1,180:18210939,37186120:0,0,0
+)
+g1,180:18467619,37811047
+)
+g1,180:18467619,37811047
+)
+g1,180:18467619,37811047
+x1,180:20007699,37811047
+k1,181:25396782,37811047:5389083
+k1,181:30785864,37811047:5389082
+)
+(1,182:18467619,38957927:12318245,665187,285084
+(1,181:18467619,38957927:0,665187,285084
+g1,181:18467619,38957927
+g1,181:17487340,38957927
+g1,181:17487340,38957927
+(1,181:17487340,38957927:980279,665187,285084
+g1,181:17487340,38957927
+r1,181:17487340,38957927:0,950271,285084
+(1,181:17487340,39056599:0,0,0
+)
+(1,181:17487340,38957927:723599,624927,98672
+(1,181:17487340,39056599:723599,723599,0
+[1,181:17487340,39056599:723599,723599,0
+(1,181:17487340,38333000:723599,0,0
+h1,181:17487340,38333000:0,0,0
+k1,181:18210939,38333000:723599
+g1,181:18210939,38333000
+)
+]
+)
+)
+(1,181:18210939,38333000:0,0,0
+)
+g1,181:18467619,38957927
+)
+g1,181:18467619,38957927
+)
+g1,181:18467619,38957927
+x1,181:20007699,38957927
+k1,182:25396782,38957927:5389083
+k1,182:30785864,38957927:5389082
+)
+(1,184:18467619,40104807:12318245,665187,285084
+(1,182:18467619,40104807:0,665187,285084
+g1,182:18467619,40104807
+g1,182:17487340,40104807
+g1,182:17487340,40104807
+(1,182:17487340,40104807:980279,665187,285084
+g1,182:17487340,40104807
+r1,182:17487340,40104807:0,950271,285084
+(1,182:17487340,40203479:0,0,0
+)
+(1,182:17487340,40104807:723599,624927,98672
+(1,182:17487340,40203479:723599,723599,0
+[1,182:17487340,40203479:723599,723599,0
+(1,182:17487340,39479880:723599,0,0
+h1,182:17487340,39479880:0,0,0
+k1,182:18210939,39479880:723599
+g1,182:18210939,39479880
+)
+]
+)
+)
+(1,182:18210939,39479880:0,0,0
+)
+g1,182:18467619,40104807
+)
+g1,182:18467619,40104807
+)
+g1,182:18467619,40104807
+x1,182:20007699,40104807
+k1,184:25396782,40104807:5389083
+k1,184:30785864,40104807:5389082
+)
+(1,188:17487340,41251687:13298524,0,285084
+r1,188:17487340,41251687:0,285084,285084
+k1,188:24136602,41251687:6649262
+k1,188:30785864,41251687:6649262
+)
+]
+g1,188:30785864,34567015
+g1,188:-34750136,34567015
+)
+g1,188:-34750136,34567015
+)
+]
+$1,188:2708808,34567015
+)
+k1,188:30785864,34567015:28077056
+g1,188:30785864,34567015
+)
+]
+(1,192:0,42626580:30785864,0,0
+(1,192:0,42626580:30785864,0,0
+(1,192:0,42626580:0,0,0
+r1,192:0,42626580:0,0,0
+g1,192:30785864,42626580
+g1,192:30785864,42626580
+r1,192:30785864,42626580:0,0,0
+g1,192:31506760,42626580
+g1,192:31506760,42626580
+(1,192:31506760,42626580:2293760,0,0
+(1,192:31506760,43971707:2293760,1345127,951910
+$1,192:31506760,43971707
+[1,192:31506760,43971707:2293760,1345127,951910
+(1,192:31506760,43971707:2293760,1345127,951910
+h1,192:31506760,43971707:0,0,0
+(1,192:31506760,43971707:2293760,1345127,951910
+$1,192:31506760,43971707
+[1,192:31506760,43971707:2293760,1345127,951910
+(1,192:31506760,43635834:2293760,983040,285084
+g1,192:31506760,43635834
+(1,192:31506760,43635834:2293760,983040,285084
+r1,192:31506760,43635834:0,950271,285084
+r1,192:31532974,43635834:26214,1268124,285084
+g1,192:31532974,43635834
+k1,192:32653640,43635834:1120666
+r1,192:32653640,43635834:0,1268124,285084
+k1,192:33774306,43635834:1120666
+g1,192:33774306,43635834
+r1,192:33800520,43635834:26214,1268124,285084
+)
+g1,192:33800520,43635834
+)
+(1,192:31506760,44612319:2293760,665187,285084
+g1,192:31506760,44612319
+(1,192:31506760,44612319:2293760,665187,285084
+r1,192:31506760,44612319:0,950271,285084
+r1,192:31532974,44612319:26214,950271,285084
+g1,192:31532974,44612319
+g1,192:31532974,44612319
+(1,192:31532974,44612319:2241332,462465,139537
+k1,192:31754623,44612319:221649
+$1,192:31754623,44612319
+(1,192:31754623,44612319:717620,462465,0
+x1,192:32472243,44612319
+)
+g1,192:32591844,44612319
+(1,192:32591844,44612319:960814,441393,139537
+(1,192:32591844,44612319:960814,441393,139537
+x1,192:33552658,44612319
+)
+)
+$1,192:33552658,44612319
+k1,192:33774306,44612319:221648
+)
+g1,192:33774306,44612319
+g1,192:33774306,44612319
+r1,192:33800520,44612319:26214,950271,285084
+)
+g1,192:33800520,44612319
+)
+]
+$1,192:33800520,43971707
+)
+g1,192:33800520,43971707
+g1,192:33800520,43971707
+)
+]
+$1,192:33800520,43971707
+)
+)
+k1,192:0,42626580:-33800520
+)
+g1,192:0,42626580
+k1,192:15392932,42626580:15392932
+k1,192:30785864,42626580:15392932
+)
+)
+]
+]
+]
+!45099
+}2
+Input:65:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\panel1.cut
+Input:66:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\panel1.cut
+Input:67:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\panel2.cut
+Input:68:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\panel2.cut
+Input:69:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\panel3.cut
+Input:70:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\panel3.cut
+!544
+{3
+[1,357:0,42626580:30785864,42626580,0
+[1,357:0,0:0,0,0
+(1,357:0,-2433924:0,0,0
+k1,357:0,-2433924:65781
+)
+]
+[1,357:0,42626580:30785864,42626580,0
+[1,357:0,42626580:30785864,44994723,0
+[1,357:0,-1581711:30785864,786432,0
+(1,357:0,-1581711:30785864,589824,196608
+(1,357:0,-1581711:30785864,589824,196608
+r1,357:0,-1581711:0,786432,196608
+g1,357:0,-1581711
+g1,357:0,-1581711
+(1,357:0,-1581711:30785864,589824,196608
+g1,357:0,-1581711
+x1,357:2267340,-1581711
+k1,357:8668980,-1581711:6401640
+x1,357:9054000,-1581711
+g1,357:9310680,-1581711
+x1,357:9834599,-1581711
+x1,357:10925489,-1581711
+g1,357:11182169,-1581711
+x1,357:11567189,-1581711
+g1,357:11823869,-1581711
+x1,357:12444179,-1581711
+g1,357:12700859,-1581711
+x1,357:13085879,-1581711
+g1,357:13342559,-1581711
+x1,357:13727579,-1581711
+k1,357:20129219,-1581711:6401640
+$1,357:20129219,-1581711
+[1,357:20129219,-1581711:10656645,537395,157280
+(1,357:20129219,-1581711:10656645,537395,0
+(1,357:20129219,-1581711:10656645,537395,0
+(1,357:20129219,-1581711:10656645,537395,0
+x1,357:22289336,-1581711
+k1,357:30785864,-1581711:8496528
+)
+)
+)
+]
+$1,357:30785864,-1581711
+(1,357:30785864,-1581711:0,559146,164453
+(1,357:30785864,-1515930:0,624927,98672
+(1,357:30785864,-1515930:0,624927,98672
+k1,357:22546016,-1515930:-8239848
+(1,357:22546016,-1515930:8239848,624927,98672
+(1,357:22546016,-1417258:0,0,0
+)
+(1,357:22546016,-1515930:8239848,624927,98672
+(1,357:22546016,-1417258:8239848,723599,0
+[1,357:22546016,-1417258:8239848,723599,0
+(1,357:22546016,-2140857:8239848,0,0
+h1,357:22546016,-2140857:0,0,0
+k1,357:30785864,-2140857:8239848
+g1,357:30785864,-2140857
+)
+]
+)
+)
+(1,357:30785864,-2140857:0,0,0
+)
+)
+)
+)
+)
+g1,357:30785864,-1581711
+)
+)
+)
+]
+[1,357:0,41905684:30785864,42176675,0
+(1,194:1425408,515441:29360456,589824,196608
+(1,192:1425408,515441:0,0,0
+g1,192:1425408,515441
+g1,192:0,515441
+g1,192:-256680,515441
+(1,192:-256680,515441:1425408,0,0
+k1,192:1168728,515441:1425408
+)
+g1,192:1425408,515441
+)
+g1,193:1425408,515441
+(1,193:1425408,515441:0,589824,196608
+k1,193:-2436856,515441:-3862264
+x1,193:-2137396,515441
+$1,193:-2137396,515441
+x1,193:-1778586,515441
+(1,193:-1778586,255023:778615,322479,101945
+x1,193:-1032739,255023
+)
+$1,193:-999971,515441
+x1,193:-720896,515441
+r1,193:-720896,515441:0,786432,196608
+g1,193:1425408,515441
+g1,193:1425408,515441
+)
+(1,193:1425408,515441:0,506811,0
+k1,193:442368,515441:-983040
+(1,193:442368,515441:983040,506811,0
+x1,193:1130496,515441
+g1,193:1425408,515441
+)
+)
+x1,193:3200505,515441
+x1,193:3606915,515441
+g1,193:3863595,515441
+x1,193:4483905,515441
+g1,193:4740585,515441
+x1,193:5810085,515441
+g1,193:6066765,515441
+x1,193:7499895,515441
+x1,193:9061365,515441
+g1,193:9318045,515441
+x1,193:9745845,515441
+x1,193:10712673,515441
+g1,193:10969353,515441
+x1,193:13326531,515441
+x1,193:13993899,515441
+g1,193:14250579,515441
+x1,193:17313354,515441
+g1,193:17570034,515441
+x1,193:19281234,515441
+x1,193:19687644,515441
+x1,193:20436294,515441
+k1,194:30785864,515441:10349570
+g1,194:30785864,515441
+)
+(1,207:2405687,1662321:28380177,665187,285084
+(1,204:2405687,1662321:0,665187,285084
+g1,204:2405687,1662321
+g1,204:1425408,1662321
+g1,204:1425408,1662321
+(1,204:1425408,1662321:980279,665187,285084
+g1,204:1425408,1662321
+r1,204:1425408,1662321:0,950271,285084
+(1,204:1425408,1760993:0,0,0
+)
+(1,204:1425408,1662321:723599,624927,98672
+(1,204:1425408,1760993:723599,723599,0
+[1,204:1425408,1760993:723599,723599,0
+(1,204:1425408,1037394:723599,0,0
+h1,204:1425408,1037394:0,0,0
+k1,204:2149007,1037394:723599
+g1,204:2149007,1037394
+)
+]
+)
+)
+(1,204:2149007,1037394:0,0,0
+)
+g1,204:2405687,1662321
+)
+g1,204:2405687,1662321
+)
+g1,204:2405687,1662321
+x1,204:3325184,1662321
+g1,204:3581864,1662321
+x1,204:4758314,1662321
+x1,204:6105884,1662321
+x1,204:6897314,1662321
+g1,204:7153994,1662321
+x1,204:8223494,1662321
+g1,204:8480174,1662321
+x1,204:11350712,1662321
+g1,204:11607392,1662321
+x1,204:13361372,1662321
+g1,204:13618052,1662321
+x1,204:14563490,1662321
+g1,204:14820170,1662321
+x1,204:16445537,1662321
+x1,204:17882945,1662321
+x1,204:18267965,1662321
+g1,204:18524645,1662321
+x1,204:19080785,1662321
+x1,204:19748153,1662321
+g1,204:20004833,1662321
+x1,204:22019771,1662321
+g1,204:22276451,1662321
+x1,204:23196221,1662321
+g1,204:23452901,1662321
+x1,204:24522401,1662321
+g1,204:24779081,1662321
+x1,204:27174761,1662321
+k1,207:30785864,1662321:3611103
+g1,207:30785864,1662321
+)
+(1,210:2405687,2809201:28380177,665187,285084
+(1,207:2405687,2809201:0,665187,285084
+g1,207:2405687,2809201
+g1,207:1425408,2809201
+g1,207:1425408,2809201
+(1,207:1425408,2809201:980279,665187,285084
+g1,207:1425408,2809201
+r1,207:1425408,2809201:0,950271,285084
+(1,207:1425408,2907873:0,0,0
+)
+(1,207:1425408,2809201:723599,624927,98672
+(1,207:1425408,2907873:723599,723599,0
+[1,207:1425408,2907873:723599,723599,0
+(1,207:1425408,2184274:723599,0,0
+h1,207:1425408,2184274:0,0,0
+k1,207:2149007,2184274:723599
+g1,207:2149007,2184274
+)
+]
+)
+)
+(1,207:2149007,2184274:0,0,0
+)
+g1,207:2405687,2809201
+)
+g1,207:2405687,2809201
+)
+g1,207:2405687,2809201
+x1,207:3630197,2809201
+x1,207:4378847,2809201
+g1,207:4635527,2809201
+x1,207:6560627,2809201
+g1,207:6817307,2809201
+x1,207:7737077,2809201
+g1,207:7993757,2809201
+x1,207:9324215,2809201
+g1,207:9580895,2809201
+x1,207:11339153,2809201
+g1,207:11595833,2809201
+x1,207:12665333,2809201
+g1,207:12922013,2809201
+x1,207:16280243,2809201
+g1,207:16536923,2809201
+x1,207:19360403,2809201
+g1,207:19617083,2809201
+$1,207:19617083,2809201
+x1,207:19996643,2809201
+x1,207:21117116,2809201
+$1,207:21117116,2809201
+x1,207:21331016,2809201
+k1,210:30785864,2809201:9454848
+g1,210:30785864,2809201
+)
+(1,213:2405687,3956081:28380177,665187,285084
+(1,210:2405687,3956081:0,665187,285084
+g1,210:2405687,3956081
+g1,210:1425408,3956081
+g1,210:1425408,3956081
+(1,210:1425408,3956081:980279,665187,285084
+g1,210:1425408,3956081
+r1,210:1425408,3956081:0,950271,285084
+(1,210:1425408,4054753:0,0,0
+)
+(1,210:1425408,3956081:723599,624927,98672
+(1,210:1425408,4054753:723599,723599,0
+[1,210:1425408,4054753:723599,723599,0
+(1,210:1425408,3331154:723599,0,0
+h1,210:1425408,3331154:0,0,0
+k1,210:2149007,3331154:723599
+g1,210:2149007,3331154
+)
+]
+)
+)
+(1,210:2149007,3331154:0,0,0
+)
+g1,210:2405687,3956081
+)
+g1,210:2405687,3956081
+)
+g1,210:2405687,3956081
+x1,210:3325184,3956081
+g1,210:3581864,3956081
+x1,210:6020324,3956081
+g1,210:6277004,3956081
+x1,210:7346504,3956081
+g1,210:7603184,3956081
+x1,210:8416004,3956081
+x1,210:9464114,3956081
+x1,210:11008472,3956081
+x1,210:11799902,3956081
+g1,210:12056582,3956081
+x1,210:13532492,3956081
+x1,210:13853342,3956081
+x1,210:14238362,3956081
+g1,210:14495042,3956081
+x1,210:15735662,3956081
+g1,210:15992342,3956081
+x1,210:17322800,3956081
+g1,210:17579480,3956081
+x1,210:19081058,3956081
+g1,210:19337738,3956081
+x1,210:20407238,3956081
+g1,210:20663918,3956081
+x1,210:22760138,3956081
+x1,210:23209328,3956081
+g1,210:23466008,3956081
+x1,210:24086318,3956081
+g1,210:24342998,3956081
+x1,210:25887356,3956081
+g1,210:26144036,3956081
+x1,210:28826342,3956081
+k1,213:30785864,3956081:1959522
+g1,213:30785864,3956081
+)
+(1,216:2405687,5102961:28380177,665187,285084
+(1,213:2405687,5102961:0,665187,285084
+g1,213:2405687,5102961
+g1,213:1425408,5102961
+g1,213:1425408,5102961
+(1,213:1425408,5102961:980279,665187,285084
+g1,213:1425408,5102961
+r1,213:1425408,5102961:0,950271,285084
+(1,213:1425408,5201633:0,0,0
+)
+(1,213:1425408,5102961:723599,624927,98672
+(1,213:1425408,5201633:723599,723599,0
+[1,213:1425408,5201633:723599,723599,0
+(1,213:1425408,4478034:723599,0,0
+h1,213:1425408,4478034:0,0,0
+k1,213:2149007,4478034:723599
+g1,213:2149007,4478034
+)
+]
+)
+)
+(1,213:2149007,4478034:0,0,0
+)
+g1,213:2405687,5102961
+)
+g1,213:2405687,5102961
+)
+g1,213:2405687,5102961
+x1,213:3325184,5102961
+g1,213:3581864,5102961
+x1,213:4912322,5102961
+g1,213:5169002,5102961
+x1,213:6730472,5102961
+x1,213:8805302,5102961
+g1,213:9061982,5102961
+x1,213:9447002,5102961
+g1,213:9703682,5102961
+x1,213:11975300,5102961
+g1,213:12231980,5102961
+x1,213:13002020,5102961
+x1,213:15397700,5102961
+g1,213:15654380,5102961
+x1,213:16274690,5102961
+g1,213:16531370,5102961
+x1,213:17600870,5102961
+g1,213:17857550,5102961
+x1,213:19440410,5102961
+g1,213:19697090,5102961
+x1,213:20937710,5102961
+g1,213:21194390,5102961
+x1,213:22349450,5102961
+x1,213:23269220,5102961
+x1,213:24188990,5102961
+x1,213:24574010,5102961
+g1,213:24830690,5102961
+x1,213:25451000,5102961
+g1,213:25707680,5102961
+x1,213:26092700,5102961
+g1,213:26349380,5102961
+x1,213:29322590,5102961
+k1,216:30785864,5102961:1463274
+g1,216:30785864,5102961
+)
+(1,219:2405687,6249841:28380177,665187,285084
+(1,216:2405687,6249841:0,665187,285084
+g1,216:2405687,6249841
+g1,216:1425408,6249841
+g1,216:1425408,6249841
+(1,216:1425408,6249841:980279,665187,285084
+g1,216:1425408,6249841
+r1,216:1425408,6249841:0,950271,285084
+(1,216:1425408,6348513:0,0,0
+)
+(1,216:1425408,6249841:723599,624927,98672
+(1,216:1425408,6348513:723599,723599,0
+[1,216:1425408,6348513:723599,723599,0
+(1,216:1425408,5624914:723599,0,0
+h1,216:1425408,5624914:0,0,0
+k1,216:2149007,5624914:723599
+g1,216:2149007,5624914
+)
+]
+)
+)
+(1,216:2149007,5624914:0,0,0
+)
+g1,216:2405687,6249841
+)
+g1,216:2405687,6249841
+)
+k1,216:2405687,6249841:0
+x1,216:3394907,6249841
+x1,216:3779927,6249841
+x1,216:4100777,6249841
+k1,216:4442927,6249841:342150
+x1,216:4827947,6249841
+k1,216:5170098,6249841:342151
+x1,216:7869516,6249841
+k1,216:8211666,6249841:342150
+x1,216:8981706,6249841
+x1,216:11377386,6249841
+k1,216:11719536,6249841:342150
+x1,216:12339846,6249841
+k1,216:12681996,6249841:342150
+x1,216:13751496,6249841
+k1,216:14093647,6249841:342151
+x1,216:14863687,6249841
+x1,216:16574887,6249841
+k1,216:16917037,6249841:342150
+x1,216:17558737,6249841
+x1,216:19462447,6249841
+x1,216:20232487,6249841
+x1,216:21045307,6249841
+k1,216:21387457,6249841:342150
+x1,216:22029157,6249841
+x1,216:23932867,6249841
+k1,216:24275017,6249841:342150
+x1,216:25686757,6249841
+k1,216:26028908,6249841:342151
+x1,216:26841728,6249841
+x1,216:27376478,6249841
+k1,216:27718628,6249841:342150
+x1,216:28146428,6249841
+x1,216:29498276,6249841
+k1,216:29840426,6249841:342150
+x1,216:30785864,6249841
+k1,216:30785864,6249841:0
+)
+(1,219:2405687,7200113:28380177,338603,0
+x1,219:4416347,7200113
+k1,219:30785863,7200113:26369516
+g1,219:30785863,7200113
+)
+(1,222:2405687,8346993:28380177,665187,285084
+(1,219:2405687,8346993:0,665187,285084
+g1,219:2405687,8346993
+g1,219:1425408,8346993
+g1,219:1425408,8346993
+(1,219:1425408,8346993:980279,665187,285084
+g1,219:1425408,8346993
+r1,219:1425408,8346993:0,950271,285084
+(1,219:1425408,8445665:0,0,0
+)
+(1,219:1425408,8346993:723599,624927,98672
+(1,219:1425408,8445665:723599,723599,0
+[1,219:1425408,8445665:723599,723599,0
+(1,219:1425408,7722066:723599,0,0
+h1,219:1425408,7722066:0,0,0
+k1,219:2149007,7722066:723599
+g1,219:2149007,7722066
+)
+]
+)
+)
+(1,219:2149007,7722066:0,0,0
+)
+g1,219:2405687,8346993
+)
+g1,219:2405687,8346993
+)
+g1,219:2405687,8346993
+x1,219:3500582,8346993
+g1,219:3757262,8346993
+x1,219:6580742,8346993
+g1,219:6837422,8346993
+x1,219:7757192,8346993
+g1,219:8013872,8346993
+x1,219:9083372,8346993
+g1,219:9340052,8346993
+x1,219:11029862,8346993
+x1,219:12291872,8346993
+x1,219:12612722,8346993
+g1,219:12869402,8346993
+x1,219:14110022,8346993
+g1,219:14366702,8346993
+x1,219:15436202,8346993
+g1,219:15692882,8346993
+x1,219:16334582,8346993
+x1,219:18238292,8346993
+g1,219:18494972,8346993
+x1,219:19012610,8346993
+g1,219:19269290,8346993
+x1,219:20770868,8346993
+g1,219:21027548,8346993
+x1,219:21776198,8346993
+x1,219:22524848,8346993
+g1,219:22781528,8346993
+x1,219:23466008,8346993
+g1,219:23722688,8346993
+x1,219:24967586,8346993
+g1,219:25224266,8346993
+x1,219:26037086,8346993
+x1,219:26422106,8346993
+x1,219:26571836,8346993
+k1,222:30785864,8346993:4214028
+g1,222:30785864,8346993
+)
+(1,234:1425408,9887089:29360456,589824,196608
+(1,232:1425408,9887089:0,0,0
+g1,232:1425408,9887089
+g1,232:0,9887089
+g1,232:-256680,9887089
+(1,232:-256680,9887089:1425408,0,0
+k1,232:1168728,9887089:1425408
+)
+g1,232:1425408,9887089
+)
+g1,233:1425408,9887089
+(1,233:1425408,9887089:0,589824,196608
+k1,233:-2436856,9887089:-3862264
+x1,233:-2137396,9887089
+$1,233:-2137396,9887089
+x1,233:-1778586,9887089
+(1,233:-1778586,9626671:778615,322479,101945
+x1,233:-1032739,9626671
+)
+$1,233:-999971,9887089
+x1,233:-720896,9887089
+r1,233:-720896,9887089:0,786432,196608
+g1,233:1425408,9887089
+g1,233:1425408,9887089
+)
+(1,233:1425408,9887089:0,506811,0
+k1,233:442368,9887089:-983040
+(1,233:442368,9887089:983040,506811,0
+x1,233:1130496,9887089
+g1,233:1425408,9887089
+)
+)
+x1,233:3200505,9887089
+x1,233:3606915,9887089
+g1,233:3863595,9887089
+x1,233:4483905,9887089
+g1,233:4740585,9887089
+x1,233:5810085,9887089
+g1,233:6066765,9887089
+x1,233:7499895,9887089
+x1,233:9061365,9887089
+g1,233:9318045,9887089
+x1,233:10344765,9887089
+g1,233:10601445,9887089
+x1,233:13275195,9887089
+g1,233:13531875,9887089
+x1,233:15824883,9887089
+k1,234:30785864,9887089:14960981
+g1,234:30785864,9887089
+)
+(1,242:1425408,11033969:29360456,671744,278527
+(1,242:1425408,11033969:24532581,671744,278527
+$1,242:1425408,11033969
+[1,242:1425408,11033969:24532581,671744,278527
+(1,242:1425408,11027412:24532581,665187,285084
+g1,235:1425408,11027412
+(1,238:1425408,11027412:4827873,665187,285084
+r1,235:1425408,11027412:0,950271,285084
+[1,238:1425408,11027412:4729569,665187,285084
+(1,238:1425408,11027412:4729569,665187,285084
+h1,237:1425408,11027412:0,0,0
+r1,237:1425408,11027412:0,950271,285084
+g1,237:1425408,11027412
+(1,237:1425408,11027412:723599,624927,98672
+(1,237:1425408,11126084:0,0,0
+)
+(1,237:1425408,11027412:723599,624927,98672
+(1,237:1425408,11126084:723599,723599,0
+[1,237:1425408,11126084:723599,723599,0
+(1,237:1425408,10402485:723599,0,0
+h1,237:1425408,10402485:0,0,0
+k1,237:2149007,10402485:723599
+g1,237:2149007,10402485
+)
+]
+)
+)
+(1,237:2149007,10402485:0,0,0
+)
+)
+g1,237:2405687,11027412
+x1,237:3934936,11027412
+r1,238:3934936,11027412:0,285084,285084
+k1,238:5044957,11027412:1110021
+k1,238:6154977,11027412:1110020
+)
+]
+g1,238:6154977,11027412
+g1,238:6253281,11027412
+)
+g1,238:6253281,11027412
+(1,239:6253281,11027412:4926177,665187,285084
+g1,238:6351585,11027412
+[1,239:6351585,11027412:4729569,665187,285084
+(1,239:6351585,11027412:4729569,665187,285084
+h1,238:6351585,11027412:0,0,0
+r1,238:6351585,11027412:0,950271,285084
+g1,238:6351585,11027412
+(1,238:6351585,11027412:723599,624927,98672
+(1,238:6351585,11126084:0,0,0
+)
+(1,238:6351585,11027412:723599,624927,98672
+(1,238:6351585,11126084:723599,723599,0
+[1,238:6351585,11126084:723599,723599,0
+(1,238:6351585,10402485:723599,0,0
+h1,238:6351585,10402485:0,0,0
+k1,238:7075184,10402485:723599
+g1,238:7075184,10402485
+)
+]
+)
+)
+(1,238:7075184,10402485:0,0,0
+)
+)
+g1,238:7331864,11027412
+x1,238:9347804,11027412
+r1,239:9347804,11027412:0,285084,285084
+k1,239:10214479,11027412:866675
+k1,239:11081154,11027412:866675
+)
+]
+g1,239:11081154,11027412
+g1,239:11179458,11027412
+)
+g1,239:11179458,11027412
+(1,240:11179458,11027412:4926177,665187,285084
+g1,239:11277762,11027412
+[1,240:11277762,11027412:4729569,665187,285084
+(1,240:11277762,11027412:4729569,665187,285084
+h1,239:11277762,11027412:0,0,0
+r1,239:11277762,11027412:0,950271,285084
+g1,239:11277762,11027412
+(1,239:11277762,11027412:723599,624927,98672
+(1,239:11277762,11126084:0,0,0
+)
+(1,239:11277762,11027412:723599,624927,98672
+(1,239:11277762,11126084:723599,723599,0
+[1,239:11277762,11126084:723599,723599,0
+(1,239:11277762,10402485:723599,0,0
+h1,239:11277762,10402485:0,0,0
+k1,239:12001361,10402485:723599
+g1,239:12001361,10402485
+)
+]
+)
+)
+(1,239:12001361,10402485:0,0,0
+)
+)
+g1,239:12258041,11027412
+x1,239:12835298,11027412
+x1,239:13926188,11027412
+x1,239:14460938,11027412
+r1,240:14460938,11027412:0,285084,285084
+k1,240:15234135,11027412:773197
+k1,240:16007331,11027412:773196
+)
+]
+g1,240:16007331,11027412
+g1,240:16105635,11027412
+)
+g1,240:16105635,11027412
+(1,241:16105635,11027412:4926177,665187,285084
+g1,240:16203939,11027412
+[1,241:16203939,11027412:4729569,665187,285084
+(1,241:16203939,11027412:4729569,665187,285084
+h1,240:16203939,11027412:0,0,0
+r1,240:16203939,11027412:0,950271,285084
+g1,240:16203939,11027412
+(1,240:16203939,11027412:723599,624927,98672
+(1,240:16203939,11126084:0,0,0
+)
+(1,240:16203939,11027412:723599,624927,98672
+(1,240:16203939,11126084:723599,723599,0
+[1,240:16203939,11126084:723599,723599,0
+(1,240:16203939,10402485:723599,0,0
+h1,240:16203939,10402485:0,0,0
+k1,240:16927538,10402485:723599
+g1,240:16927538,10402485
+)
+]
+)
+)
+(1,240:16927538,10402485:0,0,0
+)
+)
+g1,240:17184218,11027412
+x1,240:19622678,11027412
+r1,241:19622678,11027412:0,285084,285084
+k1,241:20278093,11027412:655415
+k1,241:20933508,11027412:655415
+)
+]
+g1,241:20933508,11027412
+g1,241:21031812,11027412
+)
+g1,241:21031812,11027412
+(1,242:21031812,11027412:4926177,665187,285084
+g1,241:21130116,11027412
+[1,242:21130116,11027412:4729569,665187,285084
+(1,242:21130116,11027412:4729569,665187,285084
+h1,241:21130116,11027412:0,0,0
+r1,241:21130116,11027412:0,950271,285084
+g1,241:21130116,11027412
+(1,241:21130116,11027412:723599,624927,98672
+(1,241:21130116,11126084:0,0,0
+)
+(1,241:21130116,11027412:723599,624927,98672
+(1,241:21130116,11126084:723599,723599,0
+[1,241:21130116,11126084:723599,723599,0
+(1,241:21130116,10402485:723599,0,0
+h1,241:21130116,10402485:0,0,0
+k1,241:21853715,10402485:723599
+g1,241:21853715,10402485
+)
+]
+)
+)
+(1,241:21853715,10402485:0,0,0
+)
+)
+g1,241:22110395,11027412
+x1,241:23447134,11027412
+r1,242:23447134,11027412:0,285084,285084
+k1,242:24653410,11027412:1206276
+k1,242:25859685,11027412:1206275
+)
+]
+g1,242:25859685,11027412
+g1,242:25957989,11027412
+)
+g1,242:25957989,11027412
+)
+]
+$1,242:25957989,11033969
+)
+k1,242:30785864,11033969:4827875
+g1,242:30785864,11033969
+)
+(1,282:1425408,12574065:29360456,589824,196608
+(1,280:1425408,12574065:0,0,0
+g1,280:1425408,12574065
+g1,280:0,12574065
+g1,280:-256680,12574065
+(1,280:-256680,12574065:1425408,0,0
+k1,280:1168728,12574065:1425408
+)
+g1,280:1425408,12574065
+)
+g1,281:1425408,12574065
+(1,281:1425408,12574065:0,589824,196608
+k1,281:-2436856,12574065:-3862264
+x1,281:-2137396,12574065
+$1,281:-2137396,12574065
+x1,281:-1778586,12574065
+(1,281:-1778586,12313647:778615,322479,101945
+x1,281:-1032739,12313647
+)
+$1,281:-999971,12574065
+x1,281:-720896,12574065
+r1,281:-720896,12574065:0,786432,196608
+g1,281:1425408,12574065
+g1,281:1425408,12574065
+)
+(1,281:1425408,12574065:0,506811,0
+k1,281:442368,12574065:-983040
+(1,281:442368,12574065:983040,506811,0
+x1,281:1130496,12574065
+g1,281:1425408,12574065
+)
+)
+x1,281:2926986,12574065
+g1,281:3183666,12574065
+x1,281:3701304,12574065
+g1,281:3957984,12574065
+x1,281:4343004,12574065
+g1,281:4599684,12574065
+x1,281:7406052,12574065
+g1,281:7662732,12574065
+x1,281:8218872,12574065
+x1,281:9609222,12574065
+g1,281:9865902,12574065
+$1,281:9865902,12574065
+x1,281:10250922,12574065
+$1,281:10250922,12574065
+g1,281:10507602,12574065
+x1,281:10935402,12574065
+x1,281:11983512,12574065
+x1,281:12779220,12574065
+k1,282:30785864,12574065:18006644
+g1,282:30785864,12574065
+)
+(1,293:1425408,15400960:29360456,2564751,2171535
+$1,292:1425408,15400960
+[1,292:1425408,15400960:29360456,2564751,2171535
+(1,292:1425408,17572495:29360456,4736286,0
+h1,287:1425408,17572495:0,0,0
+[1,292:1425408,17572495:24723513,4736286,0
+(1,292:1425408,15467479:24723513,2631270,2105016
+(1,287:1425408,15467479:24723513,2631270,2105016
+(1,287:1425408,17572495:0,0,0
+)
+(1,287:1425408,15467479:24723513,2631270,2105016
+(1,287:1425408,17572495:24723513,4736286,0
+[1,287:1425408,17572495:24723513,4736286,0
+(1,287:1425408,12836209:24723513,0,0
+h1,287:1425408,12836209:0,0,0
+k1,287:26148920,12836209:24723512
+g1,287:26148920,12836209
+)
+]
+)
+)
+(1,287:26148921,12836209:0,0,0
+)
+)
+g1,292:26148921,15467479
+g1,292:26148921,15467479
+)
+]
+k1,292:30785864,17572495:4636943
+g1,292:30785864,17572495
+)
+]
+$1,292:30785864,15400960
+g1,293:30785864,15400960
+g1,293:30785864,15400960
+)
+(1,293:1425408,17352946:29360456,665187,285084
+r1,293:1425408,17352946:0,950271,285084
+(1,293:1425408,17352946:29360456,0,0
+(1,293:1425408,17352946:29360456,4736286,0
+[1,293:1425408,17352946:29360456,4736286,0
+(1,293:1425408,17444233:29360456,4630965,0
+h1,293:1425408,17444233:0,0,0
+k1,293:26345528,17444233:24920120
+(66,2:26345528,17444233:4183655,4630965,0
+(66,2:26345528,17444233:4183655,4630965,0
+)
+)
+g66,2:30785863,17444233
+g1,293:30785863,17444233
+g1,293:30785863,17444233
+)
+]
+)
+)
+g1,293:30785864,17352946
+)
+(1,293:1425408,18303218:29360456,665187,285084
+r1,293:1425408,18303218:0,950271,285084
+k1,293:30785864,18303218:29360456
+g1,293:30785864,18303218
+)
+(1,301:1425408,19646706:29360456,589824,196608
+(1,299:1425408,19646706:0,0,0
+g1,299:1425408,19646706
+g1,299:0,19646706
+g1,299:-256680,19646706
+(1,299:-256680,19646706:1425408,0,0
+k1,299:1168728,19646706:1425408
+)
+g1,299:1425408,19646706
+)
+g1,300:1425408,19646706
+(1,300:1425408,19646706:0,589824,196608
+k1,300:-2436856,19646706:-3862264
+x1,300:-2137396,19646706
+$1,300:-2137396,19646706
+x1,300:-1778586,19646706
+(1,300:-1778586,19386288:778615,322479,101945
+x1,300:-1032739,19386288
+)
+$1,300:-999971,19646706
+x1,300:-720896,19646706
+r1,300:-720896,19646706:0,786432,196608
+g1,300:1425408,19646706
+g1,300:1425408,19646706
+)
+(1,300:1425408,19646706:0,506811,0
+k1,300:442368,19646706:-983040
+(1,300:442368,19646706:983040,506811,0
+x1,300:1130496,19646706
+g1,300:1425408,19646706
+)
+)
+x1,300:2926986,19646706
+g1,300:3183666,19646706
+x1,300:3701304,19646706
+g1,300:3957984,19646706
+x1,300:4343004,19646706
+g1,300:4599684,19646706
+x1,300:7406052,19646706
+g1,300:7662732,19646706
+x1,300:8218872,19646706
+x1,300:9609222,19646706
+g1,300:9865902,19646706
+$1,300:9865902,19646706
+x1,300:10250922,19646706
+$1,300:10250922,19646706
+g1,300:10507602,19646706
+x1,300:10935402,19646706
+x1,300:11983512,19646706
+x1,300:12779220,19646706
+k1,301:30785864,19646706:18006644
+g1,301:30785864,19646706
+)
+(1,312:1425408,23065637:29360456,3156787,2763571
+$1,311:1425408,23065637
+[1,311:1425408,23065637:29360456,3156787,2763571
+(1,311:1425408,25829208:29360456,5920358,0
+h1,307:1425408,25829208:0,0,0
+[1,311:1425408,25829208:24723513,5920358,0
+(1,311:1425408,23132156:24723513,3223306,2697052
+(1,307:1425408,23132156:24723513,3223306,2697052
+(1,307:1425408,25829208:0,0,0
+)
+(1,307:1425408,23132156:24723513,3223306,2697052
+(1,307:1425408,25829208:24723513,5920358,0
+[1,307:1425408,25829208:24723513,5920358,0
+(1,307:1425408,19908850:24723513,0,0
+h1,307:1425408,19908850:0,0,0
+k1,307:26148920,19908850:24723512
+g1,307:26148920,19908850
+)
+]
+)
+)
+(1,307:26148921,19908850:0,0,0
+)
+)
+g1,311:26148921,23132156
+g1,311:26148921,23132156
+)
+]
+k1,311:30785864,25829208:4636943
+g1,311:30785864,25829208
+)
+]
+$1,311:30785864,23065637
+g1,312:30785864,23065637
+g1,312:30785864,23065637
+)
+(1,312:1425408,25609659:29360456,665187,285084
+r1,312:1425408,25609659:0,950271,285084
+(1,312:1425408,25609659:29360456,0,0
+(1,312:1425408,25609659:29360456,5920358,0
+[1,312:1425408,25609659:29360456,5920358,0
+(1,312:1425408,24516874:29360456,4630965,0
+h1,312:1425408,24516874:0,0,0
+k1,312:26345528,24516874:24920120
+(68,2:26345528,24516874:4183655,4630965,0
+(68,2:26345528,24516874:4183655,4630965,0
+)
+)
+g68,2:30785863,24516874
+g1,312:30785863,24516874
+g1,312:30785863,24516874
+)
+]
+)
+)
+g1,312:30785864,25609659
+)
+(1,312:1425408,26559931:29360456,665187,285084
+r1,312:1425408,26559931:0,950271,285084
+k1,312:30785864,26559931:29360456
+g1,312:30785864,26559931
+)
+(1,320:1425408,27975370:29360456,671603,196608
+(1,319:1425408,27975370:0,0,0
+g1,319:1425408,27975370
+g1,319:0,27975370
+g1,319:-256680,27975370
+(1,319:-256680,27975370:1425408,0,0
+k1,319:1168728,27975370:1425408
+)
+g1,319:1425408,27975370
+)
+g1,319:1425408,27975370
+(1,319:1425408,27975370:0,671603,196608
+k1,319:-2795666,27975370:-4221074
+x1,319:-2496206,27975370
+$1,319:-2496206,27975370
+(1,319:-2496206,27975370:717620,462465,0
+x1,319:-1778586,27975370
+)
+[1,319:-1778586,28068742:778615,764975,0
+(1,319:-1778586,27626246:778615,322479,101945
+x1,319:-1032739,27626246
+)
+(1,319:-1778586,28068742:713624,225735,0
+x1,319:-1097730,28068742
+)
+]
+$1,319:-999971,27975370
+x1,319:-720896,27975370
+r1,319:-720896,27975370:0,868211,196608
+g1,319:1425408,27975370
+g1,319:1425408,27975370
+)
+(1,319:1425408,27975370:0,506811,0
+k1,319:0,27975370:-1425408
+(1,319:0,27975370:1425408,506811,0
+x1,319:1130496,27975370
+g1,319:1425408,27975370
+)
+)
+x1,319:3290343,27975370
+x1,319:3910653,27975370
+g1,319:4167333,27975370
+x1,319:5236833,27975370
+x1,319:5643243,27975370
+g1,319:5899923,27975370
+x1,319:6520233,27975370
+g1,319:6776913,27975370
+x1,319:7846413,27975370
+g1,319:8103093,27975370
+x1,319:9536223,27975370
+x1,319:11097693,27975370
+g1,319:11354373,27975370
+x1,319:14678379,27975370
+k1,320:30785864,27975370:16107485
+g1,320:30785864,27975370
+)
+(1,322:2708808,29122250:28077056,589824,196608
+(1,321:2708808,29122250:0,589824,196608
+g1,321:2708808,29122250
+g1,321:1682088,29122250
+g1,321:1425408,29122250
+(1,321:1425408,29122250:1026720,589824,196608
+g1,321:1425408,29122250
+(1,321:1425408,29122250:1026720,589824,196608
+k1,321:1439668,29122250:14260
+x1,321:1739128,29122250
+k1,321:1753388,29122250:14260
+x1,321:2138408,29122250
+k1,321:2152668,29122250:14260
+x1,321:2452128,29122250
+)
+)
+g1,321:2708808,29122250
+)
+x1,321:4210386,29122250
+g1,321:4467066,29122250
+x1,321:4984704,29122250
+g1,321:5241384,29122250
+x1,321:5626404,29122250
+g1,321:5883084,29122250
+x1,321:8903352,29122250
+k1,322:30785864,29122250:21882512
+g1,322:30785864,29122250
+)
+(1,337:2708808,31896485:28077056,2512091,2118874
+$1,336:2708808,31896485
+[1,336:2708808,31896485:28077056,2512091,2118874
+(1,336:2708808,34015359:28077056,4630965,0
+h1,332:2708808,34015359:0,0,0
+[1,336:2708808,34015359:23440113,4630965,0
+(1,336:2708808,31963004:23440113,2578610,2052355
+(1,332:2708808,31963004:23440113,2578610,2052355
+(1,332:2708808,34015359:0,0,0
+)
+(1,332:2708808,31963004:23440113,2578610,2052355
+(1,332:2708808,34015359:23440113,4630965,0
+[1,332:2708808,34015359:23440113,4630965,0
+(1,332:2708808,29384394:23440113,0,0
+h1,332:2708808,29384394:0,0,0
+k1,332:26148920,29384394:23440112
+g1,332:26148920,29384394
+)
+]
+)
+)
+(1,332:26148921,29384394:0,0,0
+)
+)
+g1,336:26148921,31963004
+g1,336:26148921,31963004
+)
+]
+k1,336:30785864,34015359:4636943
+g1,336:30785864,34015359
+)
+]
+$1,336:30785864,31896485
+g1,337:30785864,31896485
+g1,337:30785864,31896485
+)
+(1,337:2708808,33795810:28077056,665187,285084
+r1,337:2708808,33795810:0,950271,285084
+(1,337:2708808,33795810:28077056,0,0
+(1,337:2708808,33795810:28077056,4630965,0
+[1,337:2708808,33795810:28077056,4630965,0
+(1,337:2708808,33992418:28077056,4630965,0
+h1,337:2708808,33992418:0,0,0
+k1,337:26345528,33992418:23636720
+(70,2:26345528,33992418:4183655,4630965,0
+(70,2:26345528,33992418:4183655,4630965,0
+)
+)
+g70,2:30785863,33992418
+g1,337:30785863,33992418
+g1,337:30785863,33992418
+)
+]
+)
+)
+g1,337:30785864,33795810
+)
+(1,337:2708808,34746082:28077056,665187,285084
+r1,337:2708808,34746082:0,950271,285084
+k1,337:30785864,34746082:28077056
+g1,337:30785864,34746082
+)
+(1,340:2708808,35892962:28077056,589824,196608
+(1,339:2708808,35892962:0,589824,196608
+g1,339:2708808,35892962
+g1,339:1682088,35892962
+g1,339:1425408,35892962
+(1,339:1425408,35892962:1026720,589824,196608
+g1,339:1425408,35892962
+(1,339:1425408,35892962:1026720,589824,196608
+g1,339:1425408,35892962
+x1,339:1724868,35892962
+g1,339:1724868,35892962
+x1,339:2152668,35892962
+g1,339:2152668,35892962
+x1,339:2452128,35892962
+)
+)
+g1,339:2708808,35892962
+)
+x1,339:4210386,35892962
+g1,339:4467066,35892962
+x1,339:4984704,35892962
+g1,339:5241384,35892962
+x1,339:5626404,35892962
+g1,339:5883084,35892962
+x1,339:8903352,35892962
+k1,340:30785864,35892962:21882512
+g1,340:30785864,35892962
+)
+(1,345:2708808,38194341:28077056,2039235,1512980
+(1,340:2708808,38194341:28077056,2039235,1512980
+(1,340:2708808,39707321:0,0,0
+)
+(1,340:2708808,38194341:28077056,2039235,1512980
+(1,340:2708808,39707321:28077056,3552215,0
+[1,340:2708808,39707321:28077056,3552215,0
+(1,340:2708808,36155106:28077056,0,0
+h1,340:2708808,36155106:0,0,0
+k1,340:30785864,36155106:28077056
+g1,340:30785864,36155106
+)
+]
+)
+)
+(1,340:30785864,36155106:0,0,0
+)
+)
+g1,345:30785864,38194341
+g1,345:30785864,38194341
+)
+]
+(1,357:0,42626580:30785864,0,0
+(1,357:0,42626580:30785864,0,0
+(1,357:0,42626580:0,0,0
+r1,357:0,42626580:0,0,0
+g1,357:30785864,42626580
+g1,357:30785864,42626580
+r1,357:30785864,42626580:0,0,0
+g1,357:31506760,42626580
+g1,357:31506760,42626580
+(1,357:31506760,42626580:2293760,0,0
+(1,357:31506760,43971707:2293760,1345127,951910
+$1,357:31506760,43971707
+[1,357:31506760,43971707:2293760,1345127,951910
+(1,357:31506760,43971707:2293760,1345127,951910
+h1,357:31506760,43971707:0,0,0
+(1,357:31506760,43971707:2293760,1345127,951910
+$1,357:31506760,43971707
+[1,357:31506760,43971707:2293760,1345127,951910
+(1,357:31506760,43635834:2293760,983040,285084
+g1,357:31506760,43635834
+(1,357:31506760,43635834:2293760,983040,285084
+r1,357:31506760,43635834:0,950271,285084
+r1,357:31532974,43635834:26214,1268124,285084
+g1,357:31532974,43635834
+k1,357:32653640,43635834:1120666
+r1,357:32653640,43635834:0,1268124,285084
+k1,357:33774306,43635834:1120666
+g1,357:33774306,43635834
+r1,357:33800520,43635834:26214,1268124,285084
+)
+g1,357:33800520,43635834
+)
+(1,357:31506760,44612319:2293760,665187,285084
+g1,357:31506760,44612319
+(1,357:31506760,44612319:2293760,665187,285084
+r1,357:31506760,44612319:0,950271,285084
+r1,357:31532974,44612319:26214,950271,285084
+g1,357:31532974,44612319
+g1,357:31532974,44612319
+(1,357:31532974,44612319:2241332,462465,139537
+k1,357:31754623,44612319:221649
+$1,357:31754623,44612319
+(1,357:31754623,44612319:717620,462465,0
+x1,357:32472243,44612319
+)
+g1,357:32591844,44612319
+(1,357:32591844,44612319:960814,441393,139537
+(1,357:32591844,44612319:960814,441393,139537
+x1,357:33552658,44612319
+)
+)
+$1,357:33552658,44612319
+k1,357:33774306,44612319:221648
+)
+g1,357:33774306,44612319
+g1,357:33774306,44612319
+r1,357:33800520,44612319:26214,950271,285084
+)
+g1,357:33800520,44612319
+)
+]
+$1,357:33800520,43971707
+)
+g1,357:33800520,43971707
+g1,357:33800520,43971707
+)
+]
+$1,357:33800520,43971707
+)
+)
+k1,357:0,42626580:-33800520
+)
+g1,357:0,42626580
+k1,357:15392932,42626580:15392932
+k1,357:30785864,42626580:15392932
+)
+)
+]
+]
+]
+!29873
+}3
+!10
+{4
+[1,430:0,42626580:30785864,42626580,0
+[1,430:0,0:0,0,0
+(1,430:0,-2433924:0,0,0
+k1,430:0,-2433924:65781
+)
+]
+[1,430:0,42626580:30785864,42626580,0
+[1,430:0,42626580:30785864,44994723,0
+[1,430:0,-1581711:30785864,786432,0
+(1,430:0,-1581711:30785864,589824,196608
+(1,430:0,-1581711:30785864,589824,196608
+r1,430:0,-1581711:0,786432,196608
+g1,430:0,-1581711
+g1,430:0,-1581711
+(1,430:0,-1581711:30785864,589824,196608
+g1,430:0,-1581711
+x1,430:2267340,-1581711
+k1,430:8668980,-1581711:6401640
+x1,430:9054000,-1581711
+g1,430:9310680,-1581711
+x1,430:9834599,-1581711
+x1,430:10925489,-1581711
+g1,430:11182169,-1581711
+x1,430:11567189,-1581711
+g1,430:11823869,-1581711
+x1,430:12444179,-1581711
+g1,430:12700859,-1581711
+x1,430:13085879,-1581711
+g1,430:13342559,-1581711
+x1,430:13727579,-1581711
+k1,430:20129219,-1581711:6401640
+$1,430:20129219,-1581711
+[1,430:20129219,-1581711:10656645,537395,157280
+(1,430:20129219,-1581711:10656645,537395,0
+(1,430:20129219,-1581711:10656645,537395,0
+(1,430:20129219,-1581711:10656645,537395,0
+x1,430:22289336,-1581711
+k1,430:30785864,-1581711:8496528
+)
+)
+)
+]
+$1,430:30785864,-1581711
+(1,430:30785864,-1581711:0,559146,164453
+(1,430:30785864,-1515930:0,624927,98672
+(1,430:30785864,-1515930:0,624927,98672
+k1,430:22546016,-1515930:-8239848
+(1,430:22546016,-1515930:8239848,624927,98672
+(1,430:22546016,-1417258:0,0,0
+)
+(1,430:22546016,-1515930:8239848,624927,98672
+(1,430:22546016,-1417258:8239848,723599,0
+[1,430:22546016,-1417258:8239848,723599,0
+(1,430:22546016,-2140857:8239848,0,0
+h1,430:22546016,-2140857:0,0,0
+k1,430:30785864,-2140857:8239848
+g1,430:30785864,-2140857
+)
+]
+)
+)
+(1,430:30785864,-2140857:0,0,0
+)
+)
+)
+)
+)
+g1,430:30785864,-1581711
+)
+)
+)
+]
+[1,430:0,41905684:30785864,42176675,0
+(1,359:1425408,515441:29360456,589824,196608
+(1,357:1425408,515441:0,0,0
+g1,357:1425408,515441
+g1,357:0,515441
+g1,357:-256680,515441
+(1,357:-256680,515441:1425408,0,0
+k1,357:1168728,515441:1425408
+)
+g1,357:1425408,515441
+)
+g1,357:1425408,515441
+(1,357:1425408,515441:0,589824,196608
+k1,357:-2795666,515441:-4221074
+x1,357:-2496206,515441
+$1,357:-2496206,515441
+(1,357:-2496206,515441:717620,462465,0
+x1,357:-1778586,515441
+)
+(1,357:-1778586,255023:778615,322479,101945
+x1,357:-1032739,255023
+)
+$1,357:-999971,515441
+x1,357:-720896,515441
+r1,357:-720896,515441:0,786432,196608
+g1,357:1425408,515441
+g1,357:1425408,515441
+)
+(1,357:1425408,515441:0,506811,0
+k1,357:0,515441:-1425408
+(1,357:0,515441:1425408,506811,0
+x1,357:1130496,515441
+g1,357:1425408,515441
+)
+)
+x1,357:2858538,515441
+x1,357:3179388,515441
+g1,357:3436068,515441
+x1,357:4505568,515441
+x1,357:4911978,515441
+g1,357:5168658,515441
+x1,357:5788968,515441
+g1,357:6045648,515441
+x1,357:7115148,515441
+g1,357:7371828,515441
+x1,357:8804958,515441
+x1,357:10580328,515441
+g1,357:10922568,515441
+x1,357:11713725,515441
+x1,357:12740445,515441
+g1,357:12997125,515441
+g1,357:12997125,515441
+g1,357:12740445,515441
+g1,357:12997125,515441
+g1,357:12997125,515441
+x1,357:13809945,515441
+g1,357:14066625,515441
+x1,357:15136125,515441
+g1,357:15392805,515441
+x1,357:16547865,515441
+x1,357:16932885,515441
+g1,357:17189565,515441
+x1,357:17809875,515441
+g1,357:18066555,515441
+x1,357:19606635,515441
+g1,357:19863315,515441
+x1,357:20462235,515441
+k1,359:30785864,515441:10323629
+g1,359:30785864,515441
+)
+(1,384:1425408,13155585:29360456,12279696,152916
+[1,384:1425408,13155585:14352548,12279696,0
+(1,364:2708808,1662321:13069148,589824,196608
+(1,363:2708808,1662321:0,589824,196608
+g1,363:2708808,1662321
+g1,363:1682088,1662321
+g1,363:1425408,1662321
+(1,363:1425408,1662321:1026720,589824,196608
+g1,363:1425408,1662321
+(1,363:1425408,1662321:1026720,589824,196608
+k1,363:1439668,1662321:14260
+x1,363:1739128,1662321
+k1,363:1753388,1662321:14260
+x1,363:2138408,1662321
+k1,363:2152668,1662321:14260
+x1,363:2452128,1662321
+)
+)
+g1,363:2708808,1662321
+)
+x1,363:4210386,1662321
+k1,363:4528146,1662321:317760
+x1,363:5045784,1662321
+k1,363:5363543,1662321:317759
+x1,363:5748563,1662321
+k1,363:6066323,1662321:317760
+x1,363:7546511,1662321
+x1,363:9086591,1662321
+k1,363:9612070,1662321:525479
+x1,363:10499619,1662321
+k1,363:10817379,1662321:317760
+x1,363:12190617,1662321
+k1,363:12508376,1662321:317759
+x1,363:12914786,1662321
+x1,363:13706216,1662321
+k1,363:14023976,1662321:317760
+x1,363:15777956,1662321
+k1,363:15777956,1662321:0
+)
+(1,364:2708808,2612593:13069148,546132,152916
+x1,364:4141938,2612593
+x1,363:4462788,2612593
+g1,363:4719468,2612593
+x1,363:5532288,2612593
+x1,363:5917308,2612593
+g1,363:6173988,2612593
+x1,363:6815688,2612593
+x1,363:8013528,2612593
+g1,363:8270208,2612593
+x1,363:9403605,2612593
+g1,363:9660285,2612593
+x1,363:10216425,2612593
+x1,363:11221755,2612593
+x1,363:11628165,2612593
+x1,363:12868785,2612593
+k1,364:15777956,2612593:2909171
+g1,364:15777956,2612593
+)
+(1,368:2708808,5462315:13069148,2631270,2105016
+(1,365:2708808,5462315:13069148,2631270,2105016
+(1,365:2708808,7567331:0,0,0
+)
+(1,365:2708808,5462315:13069148,2631270,2105016
+(1,365:2708808,7567331:13069148,4736286,0
+[1,365:2708808,7567331:13069148,4736286,0
+(1,365:2708808,2831045:13069148,0,0
+h1,365:2708808,2831045:0,0,0
+k1,365:15777956,2831045:13069148
+g1,365:15777956,2831045
+)
+]
+)
+)
+(1,365:15777956,2831045:0,0,0
+)
+)
+g1,368:15777956,5462315
+g1,368:15777956,5462315
+)
+(1,370:2708808,8419299:13069148,589824,196608
+(1,369:2708808,8419299:0,589824,196608
+g1,369:2708808,8419299
+g1,369:1682088,8419299
+g1,369:1425408,8419299
+(1,369:1425408,8419299:1026720,589824,196608
+g1,369:1425408,8419299
+(1,369:1425408,8419299:1026720,589824,196608
+g1,369:1425408,8419299
+x1,369:1724868,8419299
+g1,369:1724868,8419299
+x1,369:2152668,8419299
+g1,369:2152668,8419299
+x1,369:2452128,8419299
+)
+)
+g1,369:2708808,8419299
+)
+x1,369:4210386,8419299
+g1,369:4467066,8419299
+x1,369:4984704,8419299
+g1,369:5241384,8419299
+x1,369:5626404,8419299
+g1,369:5883084,8419299
+x1,369:7363272,8419299
+x1,369:8903352,8419299
+k1,370:15777956,8419299:6874604
+g1,370:15777956,8419299
+)
+(1,373:2708808,11312713:13069148,2631270,2105016
+(1,370:2708808,11312713:13069148,2631270,2105016
+(1,370:2708808,13417729:0,0,0
+)
+(1,370:2708808,11312713:13069148,2631270,2105016
+(1,370:2708808,13417729:13069148,4736286,0
+[1,370:2708808,13417729:13069148,4736286,0
+(1,370:2708808,8681443:13069148,0,0
+h1,370:2708808,8681443:0,0,0
+k1,370:15777956,8681443:13069148
+g1,370:15777956,8681443
+)
+]
+)
+)
+(1,370:15777956,8681443:0,0,0
+)
+)
+g1,373:15777956,11312713
+g1,373:15777956,11312713
+)
+]
+k1,384:16092529,13155585:314573
+r1,384:16118743,13155585:26214,12432612,152916
+k1,384:16433316,13155585:314573
+[1,384:16433316,13155585:14352548,12279696,0
+(1,375:17716716,1662321:13069148,589824,196608
+(1,374:17716716,1662321:0,589824,196608
+g1,374:17716716,1662321
+g1,374:16689996,1662321
+g1,374:16433316,1662321
+(1,374:16433316,1662321:1026720,589824,196608
+g1,374:16433316,1662321
+(1,374:16433316,1662321:1026720,589824,196608
+k1,374:16461836,1662321:28520
+x1,374:16761296,1662321
+k1,374:16789816,1662321:28520
+x1,374:17132056,1662321
+k1,374:17160576,1662321:28520
+x1,374:17460036,1662321
+)
+)
+g1,374:17716716,1662321
+)
+x1,374:19218294,1662321
+g1,374:19474974,1662321
+x1,374:19992612,1662321
+g1,374:20249292,1662321
+x1,374:20634312,1662321
+g1,374:20890992,1662321
+x1,374:22371180,1662321
+x1,374:23911260,1662321
+k1,375:30785864,1662321:6874604
+g1,375:30785864,1662321
+)
+(1,378:17716716,4555735:13069148,2631270,2105016
+(1,375:17716716,4555735:13069148,2631270,2105016
+(1,375:17716716,6660751:0,0,0
+)
+(1,375:17716716,4555735:13069148,2631270,2105016
+(1,375:17716716,6660751:13069148,4736286,0
+[1,375:17716716,6660751:13069148,4736286,0
+(1,375:17716716,1924465:13069148,0,0
+h1,375:17716716,1924465:0,0,0
+k1,375:30785864,1924465:13069148
+g1,375:30785864,1924465
+)
+]
+)
+)
+(1,375:30785864,1924465:0,0,0
+)
+)
+g1,378:30785864,4555735
+g1,378:30785864,4555735
+)
+(1,380:17716716,7512719:13069148,589824,196608
+(1,379:17716716,7512719:0,589824,196608
+g1,379:17716716,7512719
+g1,379:16689996,7512719
+g1,379:16433316,7512719
+(1,379:16433316,7512719:1026720,589824,196608
+g1,379:16433316,7512719
+(1,379:16433316,7512719:1026720,589824,196608
+g1,379:16433316,7512719
+x1,379:16732776,7512719
+g1,379:16732776,7512719
+x1,379:17160576,7512719
+g1,379:17160576,7512719
+x1,379:17460036,7512719
+)
+)
+g1,379:17716716,7512719
+)
+x1,379:19218294,7512719
+g1,379:19474974,7512719
+x1,379:19992612,7512719
+g1,379:20249292,7512719
+x1,379:20634312,7512719
+g1,379:20890992,7512719
+x1,379:22371180,7512719
+x1,379:23911260,7512719
+k1,380:30785864,7512719:6874604
+g1,380:30785864,7512719
+)
+(1,383:17716716,10406133:13069148,2631270,2105016
+(1,380:17716716,10406133:13069148,2631270,2105016
+(1,380:17716716,12511149:0,0,0
+)
+(1,380:17716716,10406133:13069148,2631270,2105016
+(1,380:17716716,12511149:13069148,4736286,0
+[1,380:17716716,12511149:13069148,4736286,0
+(1,380:17716716,7774863:13069148,0,0
+h1,380:17716716,7774863:0,0,0
+k1,380:30785864,7774863:13069148
+g1,380:30785864,7774863
+)
+]
+)
+)
+(1,380:30785864,7774863:0,0,0
+)
+)
+g1,383:30785864,10406133
+g1,383:30785864,10406133
+)
+]
+(1,384:30785864,13155585:0,338603,152916
+h1,384:30785864,13155585:427800,338603,152916
+k1,384:30785864,13155585:-427800
+)
+)
+(1,388:0,14741154:30785864,26214,0
+h1,387:0,14741154:1155060,0,0
+(1,387:1155060,14741154:29360456,26214,0
+k1,387:5522052,14741154:4366992
+(1,387:5522052,14741154:20626472,26214,0
+r1,387:26148524,14741154:20626472,26214,0
+)
+k1,387:30515516,14741154:4366992
+)
+k1,388:30785864,14741154:270348
+g1,388:30785864,14741154
+)
+(1,393:0,15990987:30785864,589824,196608
+g1,391:0,15990987
+(1,391:0,15990987:0,0,0
+g1,391:0,15990987
+g1,391:0,15990987
+)
+x1,391:604388,15990987
+x1,391:1715315,15990987
+g1,391:2010227,15990987
+x1,391:2339728,15990987
+x1,391:2939565,15990987
+g1,391:3234477,15990987
+x1,391:3533937,15990987
+$1,391:3533937,15990987
+(1,391:3533937,15990987:770040,506811,0
+x1,391:4303977,15990987
+)
+g1,391:4435047,15990987
+(1,391:4435047,15990987:2057718,521949,152916
+(1,391:4435047,15990987:2057718,521949,152916
+x1,391:4862847,15990987
+x1,391:5910957,15990987
+x1,391:6492765,15990987
+)
+)
+$1,391:6492765,15990987
+x1,391:6792225,15990987
+g1,391:7087137,15990987
+g1,391:7087137,15990987
+g1,391:7087137,15990987
+x1,391:8413317,15990987
+g1,392:8669997,15990987
+x1,392:10103127,15990987
+x1,392:11664597,15990987
+g1,392:11921277,15990987
+x1,392:12438915,15990987
+g1,392:12695595,15990987
+x1,392:13080615,15990987
+g1,392:13337295,15990987
+x1,392:15052773,15990987
+g1,392:15309453,15990987
+x1,392:17469843,15990987
+g1,392:17726523,15990987
+x1,392:18346833,15990987
+g1,392:18603513,15990987
+x1,392:22030191,15990987
+g1,392:22286871,15990987
+x1,392:25328529,15990987
+g1,392:25585209,15990987
+x1,392:28579809,15990987
+k1,393:30785864,15990987:2206055
+g1,393:30785864,15990987
+)
+(1,397:1425408,17137867:29360456,589824,196608
+(1,395:1425408,17137867:0,0,0
+g1,395:1425408,17137867
+g1,395:0,17137867
+g1,395:-256680,17137867
+(1,395:-256680,17137867:1425408,0,0
+k1,395:1168728,17137867:1425408
+)
+g1,395:1425408,17137867
+)
+g1,396:1425408,17137867
+(1,396:1425408,17137867:0,589824,196608
+k1,396:-2436856,17137867:-3862264
+x1,396:-2137396,17137867
+$1,396:-2137396,17137867
+x1,396:-1778586,17137867
+(1,396:-1778586,16877449:778615,322479,101945
+x1,396:-1032739,16877449
+)
+$1,396:-999971,17137867
+x1,396:-720896,17137867
+r1,396:-720896,17137867:0,786432,196608
+g1,396:1425408,17137867
+g1,396:1425408,17137867
+)
+(1,396:1425408,17137867:0,506811,0
+k1,396:442368,17137867:-983040
+(1,396:442368,17137867:983040,506811,0
+x1,396:1130496,17137867
+g1,396:1425408,17137867
+)
+)
+x1,396:2926986,17137867
+g1,396:3183666,17137867
+x1,396:3701304,17137867
+g1,396:3957984,17137867
+x1,396:4343004,17137867
+g1,396:4599684,17137867
+x1,396:7619952,17137867
+k1,397:30785864,17137867:23165912
+g1,397:30785864,17137867
+)
+(1,400:1425408,18847210:29360456,1447199,920944
+(1,397:1425408,18847210:29360456,1447199,920944
+(1,397:1425408,19768154:0,0,0
+)
+(1,397:1425408,18847210:29360456,1447199,920944
+(1,397:1425408,19768154:29360456,2368143,0
+[1,397:1425408,19768154:29360456,2368143,0
+(1,397:1425408,17400011:29360456,0,0
+h1,397:1425408,17400011:0,0,0
+k1,397:30785864,17400011:29360456
+g1,397:30785864,17400011
+)
+]
+)
+)
+(1,397:30785864,17400011:0,0,0
+)
+)
+g1,400:30785864,18847210
+g1,400:30785864,18847210
+)
+(1,404:1425408,20816730:29360456,589824,196608
+(1,402:1425408,20816730:0,0,0
+g1,402:1425408,20816730
+g1,402:0,20816730
+g1,402:-256680,20816730
+(1,402:-256680,20816730:1425408,0,0
+k1,402:1168728,20816730:1425408
+)
+g1,402:1425408,20816730
+)
+g1,403:1425408,20816730
+(1,403:1425408,20816730:0,589824,196608
+k1,403:-2436856,20816730:-3862264
+x1,403:-2137396,20816730
+$1,403:-2137396,20816730
+x1,403:-1778586,20816730
+(1,403:-1778586,20556312:778615,322479,101945
+x1,403:-1032739,20556312
+)
+$1,403:-999971,20816730
+x1,403:-720896,20816730
+r1,403:-720896,20816730:0,786432,196608
+g1,403:1425408,20816730
+g1,403:1425408,20816730
+)
+(1,403:1425408,20816730:0,506811,0
+k1,403:442368,20816730:-983040
+(1,403:442368,20816730:983040,506811,0
+x1,403:1130496,20816730
+g1,403:1425408,20816730
+)
+)
+x1,403:2926986,20816730
+g1,403:3183666,20816730
+x1,403:3701304,20816730
+g1,403:3957984,20816730
+x1,403:4343004,20816730
+g1,403:4599684,20816730
+x1,403:7619952,20816730
+k1,404:30785864,20816730:23165912
+g1,404:30785864,20816730
+)
+(1,407:1425408,22526073:29360456,1447199,920944
+(1,404:1425408,22526073:29360456,1447199,920944
+(1,404:1425408,23447017:0,0,0
+)
+(1,404:1425408,22526073:29360456,1447199,920944
+(1,404:1425408,23447017:29360456,2368143,0
+[1,404:1425408,23447017:29360456,2368143,0
+(1,404:1425408,21078874:29360456,0,0
+h1,404:1425408,21078874:0,0,0
+k1,404:30785864,21078874:29360456
+g1,404:30785864,21078874
+)
+]
+)
+)
+(1,404:30785864,21078874:0,0,0
+)
+)
+g1,407:30785864,22526073
+g1,407:30785864,22526073
+)
+(1,411:1425408,24495593:29360456,589824,196608
+(1,409:1425408,24495593:0,0,0
+g1,409:1425408,24495593
+g1,409:0,24495593
+g1,409:-256680,24495593
+(1,409:-256680,24495593:1425408,0,0
+k1,409:1168728,24495593:1425408
+)
+g1,409:1425408,24495593
+)
+g1,410:1425408,24495593
+(1,410:1425408,24495593:0,589824,196608
+k1,410:-2436856,24495593:-3862264
+x1,410:-2137396,24495593
+$1,410:-2137396,24495593
+x1,410:-1778586,24495593
+(1,410:-1778586,24235175:778615,322479,101945
+x1,410:-1032739,24235175
+)
+$1,410:-999971,24495593
+x1,410:-720896,24495593
+r1,410:-720896,24495593:0,786432,196608
+g1,410:1425408,24495593
+g1,410:1425408,24495593
+)
+(1,410:1425408,24495593:0,506811,0
+k1,410:442368,24495593:-983040
+(1,410:442368,24495593:983040,506811,0
+x1,410:1130496,24495593
+g1,410:1425408,24495593
+)
+)
+x1,410:2926986,24495593
+g1,410:3183666,24495593
+x1,410:3701304,24495593
+g1,410:3957984,24495593
+x1,410:4343004,24495593
+g1,410:4599684,24495593
+x1,410:7619952,24495593
+k1,411:30785864,24495593:23165912
+g1,411:30785864,24495593
+)
+(1,414:1425408,27389007:29360456,2631270,2105016
+(1,411:1425408,27389007:29360456,2631270,2105016
+(1,411:1425408,29494023:0,0,0
+)
+(1,411:1425408,27389007:29360456,2631270,2105016
+(1,411:1425408,29494023:29360456,4736286,0
+[1,411:1425408,29494023:29360456,4736286,0
+(1,411:1425408,24757737:29360456,0,0
+h1,411:1425408,24757737:0,0,0
+k1,411:30785864,24757737:29360456
+g1,411:30785864,24757737
+)
+]
+)
+)
+(1,411:30785864,24757737:0,0,0
+)
+)
+g1,414:30785864,27389007
+g1,414:30785864,27389007
+)
+(1,418:1425408,30542599:29360456,589824,196608
+(1,416:1425408,30542599:0,0,0
+g1,416:1425408,30542599
+g1,416:0,30542599
+g1,416:-256680,30542599
+(1,416:-256680,30542599:1425408,0,0
+k1,416:1168728,30542599:1425408
+)
+g1,416:1425408,30542599
+)
+g1,417:1425408,30542599
+(1,417:1425408,30542599:0,589824,196608
+k1,417:-2436856,30542599:-3862264
+x1,417:-2137396,30542599
+$1,417:-2137396,30542599
+x1,417:-1778586,30542599
+(1,417:-1778586,30282181:778615,322479,101945
+x1,417:-1032739,30282181
+)
+$1,417:-999971,30542599
+x1,417:-720896,30542599
+r1,417:-720896,30542599:0,786432,196608
+g1,417:1425408,30542599
+g1,417:1425408,30542599
+)
+(1,417:1425408,30542599:0,506811,0
+k1,417:442368,30542599:-983040
+(1,417:442368,30542599:983040,506811,0
+x1,417:1130496,30542599
+g1,417:1425408,30542599
+)
+)
+x1,417:2926986,30542599
+g1,417:3183666,30542599
+x1,417:3701304,30542599
+g1,417:3957984,30542599
+x1,417:4343004,30542599
+g1,417:4599684,30542599
+x1,417:7619952,30542599
+k1,418:30785864,30542599:23165912
+g1,418:30785864,30542599
+)
+(1,421:1425408,33436013:29360456,2631270,2105016
+(1,418:1425408,33436013:29360456,2631270,2105016
+(1,418:1425408,35541029:0,0,0
+)
+(1,418:1425408,33436013:29360456,2631270,2105016
+(1,418:1425408,35541029:29360456,4736286,0
+[1,418:1425408,35541029:29360456,4736286,0
+(1,418:1425408,30804743:29360456,0,0
+h1,418:1425408,30804743:0,0,0
+k1,418:30785864,30804743:29360456
+g1,418:30785864,30804743
+)
+]
+)
+)
+(1,418:30785864,30804743:0,0,0
+)
+)
+g1,421:30785864,33436013
+g1,421:30785864,33436013
+)
+(1,425:1425408,36589605:29360456,589824,196608
+(1,423:1425408,36589605:0,0,0
+g1,423:1425408,36589605
+g1,423:0,36589605
+g1,423:-256680,36589605
+(1,423:-256680,36589605:1425408,0,0
+k1,423:1168728,36589605:1425408
+)
+g1,423:1425408,36589605
+)
+g1,424:1425408,36589605
+(1,424:1425408,36589605:0,589824,196608
+k1,424:-2795666,36589605:-4221074
+x1,424:-2496206,36589605
+$1,424:-2496206,36589605
+(1,424:-2496206,36589605:717620,462465,0
+x1,424:-1778586,36589605
+)
+(1,424:-1778586,36329187:778615,322479,101945
+x1,424:-1032739,36329187
+)
+$1,424:-999971,36589605
+x1,424:-720896,36589605
+r1,424:-720896,36589605:0,786432,196608
+g1,424:1425408,36589605
+g1,424:1425408,36589605
+)
+(1,424:1425408,36589605:0,506811,0
+k1,424:442368,36589605:-983040
+(1,424:442368,36589605:983040,506811,0
+x1,424:1130496,36589605
+g1,424:1425408,36589605
+)
+)
+x1,424:2926986,36589605
+g1,424:3183666,36589605
+x1,424:3701304,36589605
+g1,424:3957984,36589605
+x1,424:4343004,36589605
+g1,424:4599684,36589605
+x1,424:7619952,36589605
+k1,425:30785864,36589605:23165912
+g1,425:30785864,36589605
+)
+(1,428:1425408,39483019:29360456,2631270,2105016
+(1,425:1425408,39483019:29360456,2631270,2105016
+(1,425:1425408,41588035:0,0,0
+)
+(1,425:1425408,39483019:29360456,2631270,2105016
+(1,425:1425408,41588035:29360456,4736286,0
+[1,425:1425408,41588035:29360456,4736286,0
+(1,425:1425408,36851749:29360456,0,0
+h1,425:1425408,36851749:0,0,0
+k1,425:30785864,36851749:29360456
+g1,425:30785864,36851749
+)
+]
+)
+)
+(1,425:30785864,36851749:0,0,0
+)
+)
+g1,428:30785864,39483019
+g1,428:30785864,39483019
+)
+]
+(1,430:0,42626580:30785864,0,0
+(1,430:0,42626580:30785864,0,0
+(1,430:0,42626580:0,0,0
+r1,430:0,42626580:0,0,0
+g1,430:30785864,42626580
+g1,430:30785864,42626580
+r1,430:30785864,42626580:0,0,0
+g1,430:31506760,42626580
+g1,430:31506760,42626580
+(1,430:31506760,42626580:2293760,0,0
+(1,430:31506760,43971707:2293760,1345127,951910
+$1,430:31506760,43971707
+[1,430:31506760,43971707:2293760,1345127,951910
+(1,430:31506760,43971707:2293760,1345127,951910
+h1,430:31506760,43971707:0,0,0
+(1,430:31506760,43971707:2293760,1345127,951910
+$1,430:31506760,43971707
+[1,430:31506760,43971707:2293760,1345127,951910
+(1,430:31506760,43635834:2293760,983040,285084
+g1,430:31506760,43635834
+(1,430:31506760,43635834:2293760,983040,285084
+r1,430:31506760,43635834:0,950271,285084
+r1,430:31532974,43635834:26214,1268124,285084
+g1,430:31532974,43635834
+k1,430:32653640,43635834:1120666
+r1,430:32653640,43635834:0,1268124,285084
+k1,430:33774306,43635834:1120666
+g1,430:33774306,43635834
+r1,430:33800520,43635834:26214,1268124,285084
+)
+g1,430:33800520,43635834
+)
+(1,430:31506760,44612319:2293760,665187,285084
+g1,430:31506760,44612319
+(1,430:31506760,44612319:2293760,665187,285084
+r1,430:31506760,44612319:0,950271,285084
+r1,430:31532974,44612319:26214,950271,285084
+g1,430:31532974,44612319
+g1,430:31532974,44612319
+(1,430:31532974,44612319:2241332,462465,139537
+k1,430:31754623,44612319:221649
+$1,430:31754623,44612319
+(1,430:31754623,44612319:717620,462465,0
+x1,430:32472243,44612319
+)
+g1,430:32591844,44612319
+(1,430:32591844,44612319:960814,441393,139537
+(1,430:32591844,44612319:960814,441393,139537
+x1,430:33552658,44612319
+)
+)
+$1,430:33552658,44612319
+k1,430:33774306,44612319:221648
+)
+g1,430:33774306,44612319
+g1,430:33774306,44612319
+r1,430:33800520,44612319:26214,950271,285084
+)
+g1,430:33800520,44612319
+)
+]
+$1,430:33800520,43971707
+)
+g1,430:33800520,43971707
+g1,430:33800520,43971707
+)
+]
+$1,430:33800520,43971707
+)
+)
+k1,430:0,42626580:-33800520
+)
+g1,430:0,42626580
+k1,430:15392932,42626580:15392932
+k1,430:30785864,42626580:15392932
+)
+)
+]
+]
+]
+!20154
+}4
+!10
+{5
+[1,445:0,42626580:30785864,42626580,0
+[1,445:0,0:0,0,0
+(1,445:0,-2433924:0,0,0
+k1,445:0,-2433924:65781
+)
+]
+[1,445:0,42626580:30785864,42626580,0
+[1,445:0,42626580:30785864,44994723,0
+[1,445:0,-1581711:30785864,786432,0
+(1,445:0,-1581711:30785864,589824,196608
+(1,445:0,-1581711:30785864,589824,196608
+r1,445:0,-1581711:0,786432,196608
+g1,445:0,-1581711
+g1,445:0,-1581711
+(1,445:0,-1581711:30785864,589824,196608
+g1,445:0,-1581711
+x1,445:2267340,-1581711
+k1,445:8668980,-1581711:6401640
+x1,445:9054000,-1581711
+g1,445:9310680,-1581711
+x1,445:9834599,-1581711
+x1,445:10925489,-1581711
+g1,445:11182169,-1581711
+x1,445:11567189,-1581711
+g1,445:11823869,-1581711
+x1,445:12444179,-1581711
+g1,445:12700859,-1581711
+x1,445:13085879,-1581711
+g1,445:13342559,-1581711
+x1,445:13727579,-1581711
+k1,445:20129219,-1581711:6401640
+$1,445:20129219,-1581711
+[1,445:20129219,-1581711:10656645,537395,157280
+(1,445:20129219,-1581711:10656645,537395,0
+(1,445:20129219,-1581711:10656645,537395,0
+(1,445:20129219,-1581711:10656645,537395,0
+x1,445:22289336,-1581711
+k1,445:30785864,-1581711:8496528
+)
+)
+)
+]
+$1,445:30785864,-1581711
+(1,445:30785864,-1581711:0,559146,164453
+(1,445:30785864,-1515930:0,624927,98672
+(1,445:30785864,-1515930:0,624927,98672
+k1,445:22546016,-1515930:-8239848
+(1,445:22546016,-1515930:8239848,624927,98672
+(1,445:22546016,-1417258:0,0,0
+)
+(1,445:22546016,-1515930:8239848,624927,98672
+(1,445:22546016,-1417258:8239848,723599,0
+[1,445:22546016,-1417258:8239848,723599,0
+(1,445:22546016,-2140857:8239848,0,0
+h1,445:22546016,-2140857:0,0,0
+k1,445:30785864,-2140857:8239848
+g1,445:30785864,-2140857
+)
+]
+)
+)
+(1,445:30785864,-2140857:0,0,0
+)
+)
+)
+)
+)
+g1,445:30785864,-1581711
+)
+)
+)
+]
+[1,445:0,41905684:30785864,42176675,0
+(1,432:1425408,515441:29360456,589824,196608
+(1,430:1425408,515441:0,0,0
+g1,430:1425408,515441
+g1,430:0,515441
+g1,430:-256680,515441
+(1,430:-256680,515441:1425408,0,0
+k1,430:1168728,515441:1425408
+)
+g1,430:1425408,515441
+)
+g1,431:1425408,515441
+(1,431:1425408,515441:0,589824,196608
+k1,431:-2436856,515441:-3862264
+x1,431:-2137396,515441
+$1,431:-2137396,515441
+x1,431:-1778586,515441
+(1,431:-1778586,255023:778615,322479,101945
+x1,431:-1032739,255023
+)
+$1,431:-999971,515441
+x1,431:-720896,515441
+r1,431:-720896,515441:0,786432,196608
+g1,431:1425408,515441
+g1,431:1425408,515441
+)
+(1,431:1425408,515441:0,506811,0
+k1,431:442368,515441:-983040
+(1,431:442368,515441:983040,506811,0
+x1,431:1130496,515441
+g1,431:1425408,515441
+)
+)
+x1,431:2926986,515441
+g1,431:3183666,515441
+x1,431:3701304,515441
+g1,431:3957984,515441
+x1,431:4343004,515441
+g1,431:4599684,515441
+x1,431:7619952,515441
+k1,432:30785864,515441:23165912
+g1,432:30785864,515441
+)
+(1,435:1425408,3408855:29360456,2631270,2105016
+(1,432:1425408,3408855:29360456,2631270,2105016
+(1,432:1425408,5513871:0,0,0
+)
+(1,432:1425408,3408855:29360456,2631270,2105016
+(1,432:1425408,5513871:29360456,4736286,0
+[1,432:1425408,5513871:29360456,4736286,0
+(1,432:1425408,777585:29360456,0,0
+h1,432:1425408,777585:0,0,0
+k1,432:30785864,777585:29360456
+g1,432:30785864,777585
+)
+]
+)
+)
+(1,432:30785864,777585:0,0,0
+)
+)
+g1,435:30785864,3408855
+g1,435:30785864,3408855
+)
+(1,439:1425408,6562447:29360456,589824,196608
+(1,437:1425408,6562447:0,0,0
+g1,437:1425408,6562447
+g1,437:0,6562447
+g1,437:-256680,6562447
+(1,437:-256680,6562447:1425408,0,0
+k1,437:1168728,6562447:1425408
+)
+g1,437:1425408,6562447
+)
+g1,438:1425408,6562447
+(1,438:1425408,6562447:0,589824,196608
+k1,438:-2795666,6562447:-4221074
+x1,438:-2496206,6562447
+$1,438:-2496206,6562447
+(1,438:-2496206,6562447:717620,462465,0
+x1,438:-1778586,6562447
+)
+(1,438:-1778586,6302029:778615,322479,101945
+x1,438:-1032739,6302029
+)
+$1,438:-999971,6562447
+x1,438:-720896,6562447
+r1,438:-720896,6562447:0,786432,196608
+g1,438:1425408,6562447
+g1,438:1425408,6562447
+)
+(1,438:1425408,6562447:0,506811,0
+k1,438:442368,6562447:-983040
+(1,438:442368,6562447:983040,506811,0
+x1,438:1130496,6562447
+g1,438:1425408,6562447
+)
+)
+x1,438:2926986,6562447
+g1,438:3183666,6562447
+x1,438:3701304,6562447
+g1,438:3957984,6562447
+x1,438:4343004,6562447
+g1,438:4599684,6562447
+x1,438:7619952,6562447
+k1,439:30785864,6562447:23165912
+g1,439:30785864,6562447
+)
+(1,442:1425408,9455861:29360456,2631270,2105016
+(1,439:1425408,9455861:29360456,2631270,2105016
+(1,439:1425408,11560877:0,0,0
+)
+(1,439:1425408,9455861:29360456,2631270,2105016
+(1,439:1425408,11560877:29360456,4736286,0
+[1,439:1425408,11560877:29360456,4736286,0
+(1,439:1425408,6824591:29360456,0,0
+h1,439:1425408,6824591:0,0,0
+k1,439:30785864,6824591:29360456
+g1,439:30785864,6824591
+)
+]
+)
+)
+(1,439:30785864,6824591:0,0,0
+)
+)
+g1,442:30785864,9455861
+g1,442:30785864,9455861
+)
+]
+(1,445:0,42626580:30785864,0,0
+(1,445:0,42626580:30785864,0,0
+(1,445:0,42626580:0,0,0
+r1,445:0,42626580:0,0,0
+g1,445:30785864,42626580
+g1,445:30785864,42626580
+r1,445:30785864,42626580:0,0,0
+g1,445:31506760,42626580
+g1,445:31506760,42626580
+(1,445:31506760,42626580:2293760,0,0
+(1,445:31506760,43971707:2293760,1345127,951910
+$1,445:31506760,43971707
+[1,445:31506760,43971707:2293760,1345127,951910
+(1,445:31506760,43971707:2293760,1345127,951910
+h1,445:31506760,43971707:0,0,0
+(1,445:31506760,43971707:2293760,1345127,951910
+$1,445:31506760,43971707
+[1,445:31506760,43971707:2293760,1345127,951910
+(1,445:31506760,43635834:2293760,983040,285084
+g1,445:31506760,43635834
+(1,445:31506760,43635834:2293760,983040,285084
+r1,445:31506760,43635834:0,950271,285084
+r1,445:31532974,43635834:26214,1268124,285084
+g1,445:31532974,43635834
+k1,445:32653640,43635834:1120666
+r1,445:32653640,43635834:0,1268124,285084
+k1,445:33774306,43635834:1120666
+g1,445:33774306,43635834
+r1,445:33800520,43635834:26214,1268124,285084
+)
+g1,445:33800520,43635834
+)
+(1,445:31506760,44612319:2293760,665187,285084
+g1,445:31506760,44612319
+(1,445:31506760,44612319:2293760,665187,285084
+r1,445:31506760,44612319:0,950271,285084
+r1,445:31532974,44612319:26214,950271,285084
+g1,445:31532974,44612319
+g1,445:31532974,44612319
+(1,445:31532974,44612319:2241332,462465,139537
+k1,445:31754623,44612319:221649
+$1,445:31754623,44612319
+(1,445:31754623,44612319:717620,462465,0
+x1,445:32472243,44612319
+)
+g1,445:32591844,44612319
+(1,445:32591844,44612319:960814,441393,139537
+(1,445:32591844,44612319:960814,441393,139537
+x1,445:33552658,44612319
+)
+)
+$1,445:33552658,44612319
+k1,445:33774306,44612319:221648
+)
+g1,445:33774306,44612319
+g1,445:33774306,44612319
+r1,445:33800520,44612319:26214,950271,285084
+)
+g1,445:33800520,44612319
+)
+]
+$1,445:33800520,43971707
+)
+g1,445:33800520,43971707
+g1,445:33800520,43971707
+)
+]
+$1,445:33800520,43971707
+)
+)
+k1,445:0,42626580:-33800520
+)
+g1,445:0,42626580
+k1,445:15392932,42626580:15392932
+k1,445:30785864,42626580:15392932
+)
+)
+]
+]
+]
+!6659
+}5
+Input:71:C:\Users\Public\Documents\My TeX Files\tex\latex\aeb\eqexam\examples\test01.aux
+!98
+Postamble:
+Count:3699
+!26
+Post scriptum:
diff --git a/texmf-dist/doc/latex/eqexam/examples/test01.tex b/texmf-dist/doc/latex/eqexam/examples/test01.tex
new file mode 100644
index 00000000..9b08e9ea
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test01.tex
@@ -0,0 +1,445 @@
+\documentclass[12pt]{article}
+\usepackage{amsmath}
+\usepackage{graphicx}
+\usepackage[%
+ online, % try commenting out this option to get a paper document
+ nosolutions,
+% vspacewithsolns,
+ forcolorpaper,
+ pointsonleft,totalsonright,noparttotals,
+ coverpage,coverpagesumry=bypages
+ ]{eqexam}
+
+\title[T1]{Test 1}
+\author{D. P. Story}
+\subject[C1]{Calculus I}
+\date{Spring \the\year}
+\keywords{Test~1, Section 001}
+
+\university
+{%
+ THE UNIVERSITY OF AKRON\\
+ Theoretical and Applied Mathematics
+}
+\email{dpstory@uakron.edu}
+
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+\turnContAnnotOn
+
+\optsFillIn{\BC{0.847 0.847 0.847}}
+\optsMlTextField{\BC{0.847 0.847 0.847}}
+\eqExamName[\Ff\FfRequired\BC{0.847 0.847 0.847}]{2.25in}
+\eqSID[\Ff\FfRequired\BC{0.847 0.847 0.847}]{2.25in}
+\cpSetSumryWidth{.55\textwidth-1em}
+
+\hfuzz = .7pt
+
+\begin{document}
+\maketitle
+
+
+\begin{exam}[Part I.]{Part1}
+
+\begin{instructions}[Part I.]
+Solve each of the problems without error. If you make an error,
+points will be subtracted from your total score.
+\end{instructions}
+
+\begin{problem}[5]
+This is an example of a objective question, the student fills in
+his/her response in the space below.
+
+\begin{solution}[.5in]
+The solution to the question. This solution will not appear when
+the option \texttt{nosolutions} is specified. It will appear
+immediately after the question with the \texttt{solutionsafter}
+option, and appear at the end of the document if a solutions
+option is not specified.
+\end{solution}
+\end{problem}
+
+
+\begin{problem}[5]
+An example of a fill-in question:
+It is well known that \fillin{1in}{Newton} and
+\fillin{1in}{Leibniz} are jointly credited as the founders of
+modern calculus.
+
+\begin{solution}
+It is well known that \underbar{Newton} and \underbar{Leibniz} are
+jointly credited as the founders of modern calculus.
+
+\medskip\noindent\textbf{Notes.} Here the optional argument for
+the \texttt{solution} environment is not specified, this implies
+that no room should be left for the student to answer, seems
+reasonable since this is a fill-in.
+\end{solution}
+\end{problem}
+
+\begin{problem*}[2ea]
+\textit{True} or \textit{False}. No justification needed.
+
+% Comment out this next line to see the effect.
+\fillinWidth\defaultTFwidth
+
+\begin{parts}
+
+ \item[h] \TF{T} If triangles have $4$ sides, then all monkeys
+ are green. Now is the time for all good men to come to the aid
+ of their country.
+
+\begin{solution}
+ This is the solution, let's hope it's correct, or I would be
+ embarrassed to no end. Now is the time for all good men to
+ come to the aid of their country.
+
+ \medskip\noindent\textbf{Notes.} This \texttt{\string\item}
+ has an optional argument `\texttt{[h]}', so the
+ solution will not appear at the end of the document when there
+ is no solutions option, but will appear when
+ \texttt{solutionsafter} is specified. The
+ \texttt{nohiddensolutions} option can override this feature.
+\end{solution}
+
+ \item[H] \TF{T} $1+1=3$ iff $\sqrt2$ is a rational number. Now
+ is the time for all good men to come to the aid of their
+ country.
+
+\begin{solution}
+ \textbf{Notes.} This \texttt{\string\item} has an optional
+ argument `\texttt{[H]}', so the solution will not appear at
+ the end of the document when there is no solutions option, nor
+ does it appear when \texttt{solutionsafter} is specified. The
+ \texttt{noHiddensolutions} option can override this feature.
+\end{solution}
+
+ \item[h] \TF{F} $(\forall x)(\exists y)(xy>1)$\hskip1em($x$,
+ $y$~real numbers). Now is the time for all good men to come to
+ the aid of their country.
+\begin{solution}
+This is a tough solution.
+\end{solution}
+
+ \item[h] \TF{F} $(\forall x)(\exists y)(\forall z)(z(x+y)>0)$,
+ \hskip1em($x$,~$y$, and~$z$ real numbers).
+\begin{solution}
+This is a tough solution.
+\end{solution}
+
+\end{parts}
+\end{problem*}
+
+\begin{problem*}[\auto]
+Here is an example of a auto calculate problem. It takes the
+optional argument `\texttt{[\string\auto]}'. You specify the
+points associated with each part using the \texttt{\string\PTs}
+command.
+
+\begin{parts}
+
+\item \PTs{10} This a hard one!
+
+\begin{solution}[.75in]
+This is a tough solution.
+\end{solution}
+
+\item \PTs{5} This one is ``half'' as hard.
+
+\begin{solution}[\sameVspace]
+This solution is easy.
+\end{solution}
+
+\end{parts}
+\end{problem*}
+
+%\newpage
+
+
+\begin{problem*}[\auto] \sqForms
+Select the correct answer for each of the following multiple
+choice. There is only one correct answer.
+\begin{parts}[2]
+
+ \item\PTs{6} In what year did Columbus sail the ocean blue?
+ \begin{answers}{2} % specify tabular any with 6 columns
+ \bChoices
+ \Ans0 1490\eAns
+ \Ans0 1491\eAns
+ \Ans1 1492\eAns
+ \Ans0 1493\eAns
+ \eChoices
+ \end{answers}
+\begin{solution}
+ Yes, Columbus sailed the ocean blue in 1492.
+\end{solution}
+&%
+ \item\PTs{4} In what year did Columbus sail the ocean blue?
+ \begin{answers}{1} % specify a list environment.
+ \bChoices
+ \Ans0 1490\eAns
+ \Ans0 1491\eAns
+ \Ans1 1492\eAns
+ \Ans0 1493\eAns
+ \eChoices
+ \end{answers}
+\begin{solution}
+ Yes, Columbus sailed the ocean blue in 1492.
+\end{solution}
+\end{parts}
+\end{problem*}
+
+
+\begin{problem}[5]
+Which of the following best describes Augustin Cauchy?
+
+\sqForms % change this multiple choice to a forms style.
+
+%\begin{multicols}{2}
+
+% use two columns
+
+\begin{answers}{1} % an argument of 1 means list style
+\bChoices
+ \Ans0 He developed the Calculus while his University was closed
+ for the plague.\eAns % Newton
+
+ \Ans0 Given credit for first using the functional notation
+ $f(x)$.\eAns % Euler
+
+ \Ans0 He created the ``bell-shaped curve'' and first used the
+ method of least squares.\eAns % Gauss
+
+ \Ans1 He first formulated a precise definition of the limit
+ and continuity of a function.\eAns % Cauchy
+
+ \Ans0 Gave a rigorous definition of the definite integral---an
+ integral that now bears his name.\eAns % Riemann
+
+ \Ans0 His notation for the derivative and the integral is used
+ even to this day.\eAns % Leibnitz
+\eChoices
+
+\end{answers}
+
+%\end{multicols}
+
+\begin{solution}
+This is a solution to a problem question.
+\end{solution}
+
+\end{problem}
+
+\begin{problem}[5]
+Which of the following are primary colors?
+ \begin{manswers}{6} % specify tabular any with 6 columns
+ \bChoices
+ \Ans1 Blue\eAns
+ \Ans0 Green\eAns
+ \Ans1 Yellow\eAns
+ \Ans0 Orange\eAns
+ \Ans1 Red\eAns
+ \eChoices
+ \end{manswers}
+\begin{solution}
+ Yes, Columbus sailed the ocean blue in 1492.
+\end{solution}
+\end{problem}
+
+% We remove this problem if the online option is taken.
+\ifeqeonline\else
+\begin{problem}[3]
+This is a question. Work \OnBackOfPage, and be quick about it!
+\begin{solution}[1in]
+This is the solution, let's hope it's correct, or I would be
+embarrassed to no end.
+\end{solution}
+%
+% This example illustrates the use of the work area. Place the
+% \texttt{workarea} environment just below the \texttt{solution} environment, it's
+% parameter must be the same as the one specified by \texttt{solution}. The material
+% in the \texttt{workarea} environment will lay on top the vertical space generated above,
+% when the \texttt{nosoutions} option is specified; otherwise, it does nothing.
+%
+\begin{workarea}[.5\linewidth]{1in}
+Peter piper picked a peck of pickled peppers, how many pecks of pickled
+peppers did Peter Piper pick?
+%
+\vfill\hfill\setlength{\fboxsep}{6pt}\fbox{Answer: \fillin[b]{1in}{17}}
+\end{workarea}
+\end{problem}
+\fi
+
+% The previous solution works well for paper publications, however, when the online
+% or email option is taken, a text field is created for the student to type into,
+% the graphics and text are superimposed on top this text field, so the student
+% types over these elements, not a good solution in this case.
+%
+% The next example illustrates a work around. It works for both paper and for online
+% documents.
+
+\begin{problem}[5]
+This is a question worth $5$ points.
+
+\begin{splitsolution}
+\begin{panel}\relax
+\includegraphics[scale=.2]{fig1}
+\end{panel}
+\begin{solution}[1in]
+This a really good solution. I hope this solution is correct or I will be total
+embarrassed to no end. Even if it is wrong, maybe the students will appreciate
+my tremendous effort. You can see from the figure that the solution is obvious.
+What is less obvious is why this works!
+\end{solution}
+\end{splitsolution}
+\end{problem}
+
+% Here is the same layout, but without the computation of the figure width and height
+% Here I set the width to 1in and the depth to 1.25in.
+
+\begin{problem}[7]
+This is a question worth $7$ points.
+
+\begin{splitsolution}[1.25in]
+\begin{panel}\relax
+\includegraphics[scale=.2]{fig1}
+\end{panel}
+\begin{solution}
+This a really good solution. I hope this solution is correct or I will be total
+embarrassed to no end. Even if it is wrong, maybe the students will appreciate
+my tremendous effort. You can see from the figure that the solution is obvious.
+What is less obvious is why this works!
+\end{solution}
+\end{splitsolution}
+\end{problem}
+
+
+% This example illustrates multiple part a question
+
+\begin{problem*}[10ea]
+Answer each of the following questions.
+\begin{parts}
+\item This is a question.
+
+%\sbox{\eqpanelbox}{\includegraphics[scale=.2]{fig1}}
+
+%\previewtrue
+
+\begin{splitsolution}
+\begin{panel}[r]
+\includegraphics[scale=.2]{fig1}
+\end{panel}
+\begin{solution}
+This a really good solution. I hope this solution is correct or I will be total
+embarrassed to no end. Even if it is wrong, maybe the students will appreciate
+my tremendous effort. You can see from the figure that the solution is obvious.
+What is less obvious is why this works!
+\end{solution}
+\end{splitsolution}
+
+\item This is a question.
+\begin{solution}[.75in]
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+\end{solution}
+\end{parts}
+\end{problem*}
+
+% The next problem falls at the bottom of the the page, so I'll increment
+% \nbaselineskip from 6\baselineskip, the default, to 7\baselineskip.
+% This is enough to move the problem to the next page.
+
+\nbaselineskip{7}
+
+% This example illustrates multiple part a question using the multicol package
+
+\begin{problem*}[12]
+Solve each of the following. Work \OnBackOfPage.
+\begin{multicols}{2}
+
+
+
+\begin{parts}
+\item This is a question. Be sure you don't make any error, I'm watching.
+
+\begin{solution}[1in]
+This is the solution.
+\end{solution}
+
+\item This is a question.
+\begin{solution}[\sameVspace]
+This is the solution.
+\end{solution}
+
+\item This is a question.
+\begin{solution}[\sameVspace]
+This is the solution.
+\end{solution}
+
+\item This is a question.
+\begin{solution}[\sameVspace]
+This is the solution.
+\end{solution}
+\end{parts}
+\end{multicols}
+\end{problem*}
+
+\end{exam}
+
+\begin{exam}[Part II.]{Part2}
+
+\begin{instructions}[Part II.]
+The following is a short review of previously mastered material.
+\end{instructions}
+
+\begin{problem}[5]
+This is a question.
+\begin{solution}[.5in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[7]
+This is a question.
+\begin{solution}[.5in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[8]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[5]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[10]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[5]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[10]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+\end{exam}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/test02.pdf b/texmf-dist/doc/latex/eqexam/examples/test02.pdf
new file mode 100644
index 00000000..2a4c84b5
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test02.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/test02.tex b/texmf-dist/doc/latex/eqexam/examples/test02.tex
new file mode 100644
index 00000000..c8dec509
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test02.tex
@@ -0,0 +1,370 @@
+\documentclass[10pt]{article}
+\usepackage{amsmath}
+\usepackage{graphicx}
+\usepackage[vspacewithsolns,
+% coverpage,coverpagesumry=byparts,
+ pointsonboth,totalsonright,forpaper]{eqexam}
+
+\title[T2]{Test 2}
+\author{D. P. Story}
+\subject[C1]{Calculus I}
+\date{Spring \the\year}
+\keywords{Test~2, Section 001}
+
+\university
+{%
+ THE UNIVERSITY OF AKRON\\
+ Theoretical and Applied Mathematics
+}
+\email{dpstory@uakron.edu}
+
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}[Part I.]{Part1}
+
+\begin{instructions}[Part I.]
+Solve each of the problems without error. If you make an error,
+points will be subtracted from your total score.
+\end{instructions}
+
+
+\begin{problem}[5]
+This is an example of a objective question, the student fills in his/her response
+in the space below.
+
+\begin{solution}[.5in]
+The solution to the question. This solution will not appear when
+the option \texttt{nosolutions} is specified. It will appear
+immediately after the question with the \texttt{solutionsafter}
+option, and appear at the end of the document if a solutions
+option is not specified.
+\end{solution}
+\end{problem}
+
+
+\begin{problem}[5]
+An example of a fill-in question:
+It is well known that \fillin{1in}{Newton} and
+\fillin{1in}{Leibniz} are jointly credited as the founders of
+modern calculus.
+
+\begin{solution}
+It is well known that \underbar{Newton} and \underbar{Leibniz} are
+jointly credited as the founders of modern calculus.
+
+\medskip\noindent\textbf{Notes.} Here the optional argument for
+the \texttt{solution} environment is not specified, this implies
+that no room should be left for the student to answer, seems
+reasonable since this is a fill-in.
+\end{solution}
+\end{problem}
+
+\begin{problem*}[3ea]
+\textit{True} or \textit{False}. No justification needed.
+
+% Comment out this next line to see the effect.
+\fillinWidth\defaultTFwidth
+
+\begin{parts}
+
+ \item[h] \TF{T} If triangles have $4$ sides, then all monkeys
+ are green. Now is the time for all good men to come to the aid
+ of their country.
+
+\begin{solution}
+ This is the solution, let's hope it's correct, or I would be embarrassed to no end.
+ Now is the time for all good men to come to the aid
+ of their country.
+
+ \medskip\noindent\textbf{Notes.} This \texttt{\string\item}
+ has an optional argument `\texttt{[h]}', so the
+ solution will not appear at the end of the document when there
+ is no solutions option, but will appear when
+ \texttt{solutionsafter} is specified. The
+ \texttt{nohiddensolutions} option can override this feature.
+\end{solution}
+
+ \item[H] \TF{T} $1+1=3$ iff $\sqrt2$ is a rational number. Now is the time for all good men to come to the aid
+ of their country.
+
+\begin{solution}
+ \textbf{Notes.} This \texttt{\string\item} has an optional argument `\texttt{[H]}', so
+ the solution will not appear at the end of the document when there is no solutions option, nor does
+ it appear when \texttt{solutionsafter} is specified. The
+ \texttt{noHiddensolutions} option can override this feature.
+\end{solution}
+
+ \item[h] \TF{F} $(\forall x)(\exists y)(xy>1)$\hskip1em($x$, $y$~real numbers). Now is the time for all good men to come to the aid
+ of their country.
+
+ \item[h] \TF{F} $(\forall x)(\exists y)(\forall z)(z(x+y)>0)$,
+ \hskip1em($x$,~$y$, and~$z$ real numbers).
+
+%\end{exam}
+%\end{document}
+
+
+
+
+\end{parts}
+\end{problem*}
+
+
+
+\begin{problem*}[\auto]
+Here is an example of a auto calculate problem. It takes the optional
+argument `\texttt{[\string\auto]}'. You specify the points associated with each part
+using the \texttt{\string\PTs} command.
+
+\begin{parts}
+
+\item \PTs{10} This a hard one!
+
+\begin{solution}[1in]
+This is a tough solution.
+\end{solution}
+
+\item \PTs{5} This one is ``half'' as hard.
+
+\begin{solution}[1in]
+This solution is easy.
+\end{solution}
+
+\end{parts}
+\end{problem*}
+
+\begin{problem*}[\auto]\sqForms
+Select the correct answer for each of the following multiple choice. There is
+only one correct answer.
+\begin{parts}
+ \item\PTs{5} In what year did Columbus sail the ocean blue?
+ \begin{answers}{6} % specify 6 columns for a tabular environment
+ \Ans0 1490 &\Ans0 1491 &\Ans1 1492 &\Ans0 1493
+ \end{answers}
+\begin{solution}
+Yes, Columbus sailed the ocean blue in 1492.
+\end{solution}
+
+ \item\PTs{6} In what year did Columbus sail the ocean blue?
+ \begin{answers}{1} % specify a list environment.
+ \Ans0 1490
+ \Ans0 1491
+ \Ans1 1492
+ \Ans0 1493
+ \end{answers}
+\begin{solution}
+Yes, Columbus sailed the ocean blue in 1492.
+\end{solution}
+
+\end{parts}
+\end{problem*}
+
+
+\begin{problem}[5]
+Which of the following best describes Augustin Cauchy?
+
+\sqForms % change this multiple choice to a forms style.
+
+\begin{multicols}{2}
+
+% use two columns
+
+\begin{answers}{1} % an argument of 1 means list style
+
+\Ans0 He developed the Calculus while his University was closed
+for the plague. % Newton
+\Ans0 Given credit for first using the functional notation
+$f(x)$. % Euler
+\Ans0 He created the ``bell-shaped curve'' and first used the
+method of least squares. % Gauss
+
+\Ans1 He first formulated a precise definition of the limit
+and continuity of a function. % Cauchy
+\Ans0 Gave a rigorous definition of the definite integral---an
+integral that now bears his name. % Riemann
+\Ans0 His notation for the derivative and the integral is used
+even to this day. % Leibniz
+
+\end{answers}
+\end{multicols}
+
+
+\begin{solution}
+This is a solution to a problem question.
+\end{solution}
+
+\end{problem}
+
+\begin{problem}[3]
+This is a question. Work \OnBackOfPage, and be quick about it!
+
+\begin{solution}[1in]
+This is the solution, let's hope it's correct, or I would be embarrassed to no end.
+\end{solution}
+%
+% This example illustrates the use of the work area. Place the
+% \texttt{workarea} environment just below the \texttt{solution} environment, it's
+% parameter must be the same as the one specified by \texttt{solution}. The material
+% in the \texttt{workarea} environment will lay on top the vertical space generated above,
+% when the \texttt{nosoutions} option is specified; otherwise, it does nothing.
+%
+\begin{workarea}[.5\linewidth]{1in}
+Peter piper picked a peck of pickled peppers, how many pecks of pickled
+peppers did Peter Piper pick?
+%
+\vfill\hfill\setlength{\fboxsep}{6pt}\fbox{Answer: \fillin[b]{1in}{17}}
+\end{workarea}
+\end{problem}
+
+\begin{problem}[7]
+This is a question. Now is the time for all good men to come to
+the aid of their country. Peter Piper picked a peck of pickled
+peppers. Use the figure below.
+
+
+\begin{solution}[1in]
+This a really good solution. I hope this solution is correct or I will be
+embarrassed to no end. Even if it is wrong, maybe the students will appreciate
+my effort. You can see from the figure that the solution is obvious.
+(You could also use commands from a figure wrapping package as well.)
+\end{solution}
+\begin{workarea}[\linewidth]{1in}
+\hfill\includegraphics[scale=.2]{fig1}
+\end{workarea}
+\end{problem}
+
+% The previous solution works well for paper publications, however, when the online
+% or email option is taken, a text field is created for the student to type into,
+% the graphics and text are superimposed on top this text field, so the student
+% types over these elements, not a good solution in this case.
+%
+% The next example illustrates a work around. It works for both paper and for online
+% documents.
+
+\begin{problem}[5]
+This is a question worth $5$ points.
+
+\begin{solution}[1.5in]
+This a really good solution. I hope this solution is correct or I will be total
+embarrassed to no end. Even if it is wrong, maybe the students will appreciate
+my tremendous effort. You can see from the figure that the solution is obvious.
+\end{solution}
+\end{problem}
+
+% This example illustrates multiple part a question
+
+\begin{problem*}[10ea]
+Answer each of the following questions.
+\begin{parts}
+\item This is a question.
+\begin{solution}[1in]
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+\end{solution}
+\item This is a question.
+\begin{solution}[1in]
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+\end{solution}
+\end{parts}
+\end{problem*}
+
+% This example illustrates multiple part a question using the multicol package
+
+\begin{problem*}[12]
+Solve each of the following. Work \OnBackOfPage
+\begin{multicols}{2}
+
+\def\solnsp{1in}
+
+\begin{parts}
+\item This is a question. Be sure you don't make any error, I'm watching.
+
+\begin{solution}[\solnsp]
+This is the solution.
+\end{solution}
+
+\item This is a question.
+\begin{solution}[\solnsp]
+This is the solution.
+\end{solution}
+
+\item This is a question.
+\begin{solution}[\solnsp]
+This is the solution.
+\end{solution}
+
+\item This is a question.
+\begin{solution}[\solnsp]
+This is the solution.
+\end{solution}
+\end{parts}
+\end{multicols}
+\end{problem*}
+
+\end{exam}
+
+\begin{exam}[Part II.]{Part2}
+
+\begin{instructions}[Part II.]
+The following is a short review of previously mastered material.
+\end{instructions}
+
+\begin{problem}[5]
+This is a question.
+\begin{solution}[.5in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[7]
+This is a question.
+\begin{solution}[.5in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[8]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[5]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[10]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[5]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+
+\begin{problem}[10]
+This is a question.
+\begin{solution}[1in]
+This is the solution to answer all questions.
+\end{solution}
+\end{problem}
+\end{exam}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/test03.pdf b/texmf-dist/doc/latex/eqexam/examples/test03.pdf
new file mode 100644
index 00000000..74f5c5b3
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test03.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/test03.tex b/texmf-dist/doc/latex/eqexam/examples/test03.tex
new file mode 100644
index 00000000..717c41a4
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test03.tex
@@ -0,0 +1,581 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[pointsonleft,nototals,
+ forcolorpaper,useforms,
+% choose to compile with exactly one of the next 4 options
+%-------------------
+ nosolutions, % compile with no solutions to get the exam document
+% answerkey, % get answer key
+% vspacewithsolns,% put solutions at end of document
+% solutionsonly, % compile with vspacewithsolns several times, then compile with solutionsonly
+%-------------------
+% coverpage,coverpagesumry=bypages
+ showgrayletters]{eqexam}
+\usepackage{graphicx}
+
+\forceNoColor
+\vspacewithkeyOn
+
+\university
+{%
+ NORTHWEST FLORIDA STATE COLLEGE\\
+ Department of Mathematics
+}
+\email{storyd@nwfsc.edu}
+
+\examSIDLabel{Class: MAC 1105, \vA{12:30 pm, L-134}\vB{12:30 am, L-105}}
+\coverpageSubjectFmt{\bfseries\LARGE}
+\coverpageTitleFmt{\bfseries\LARGE}
+\examNum{3}\numVersions{2}\forVersion{a}
+\subject[MAC1105]{College Algebra}
+\longTitleText
+ {Test~\nExam}
+ {Test~\nExam}
+\endlongTitleText
+\shortTitleText
+ {T\nExam}
+ {T\nExam}
+\endshortTitleText
+\altTitle{\vA{12:30 pm, L-134}\vB{12:30 pm, L-105}}
+\title[\sExam]{\Exam}
+\author{Dr.\ D. P. Story}
+\date{\thisterm, \the\year}
+\duedate{04/05/11}
+\keywords{MAC 1105, Exam \nExam, {\thisterm} semester, \theduedate, at NWFSC}
+\renewcommand{\fillInFormatDefault}{}
+\DoNotFitItIn
+\eqpartsitemsep{3pt}
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+
+
+\everymath{\displaystyle}
+%\renameSolnAfterTo{}
+%\resetSolnAfterToDefault
+
+
+\eqCommentsColor{gray}
+\eqCommentsColorBody{gray}
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\def\qt#1{&&\qquad\text{#1}}
+
+
+\encloseProblemsWith{theseproblems}
+
+\begin{document}
+
+\maketitle
+
+
+\begin{exam}{Test\nExam}
+
+\ifsolutionsonly\NoPoints
+\begin{instructions}[Solutions:]
+The solutions to the test.
+\end{instructions}
+\else
+\begin{instructions}[Instructions:]
+This exam has {\nQuesInExam} questions distributed over {\nPagesOnExam} pages.
+Solve each of the problem and box in your final $\boxed{\text{answer}}$, where applicable.
+\end{instructions}
+\fi
+
+\begin{theseproblems}
+
+\renameSolnAfterTo{}
+
+\begin{problem*}[2ea]\label{shortAns}
+Answer each of the following, none of the problems shown below requires any
+calculations. Respond to True/False questions with \texttt{T} (for True) or \texttt{F} (for
+False).
+\begin{parts}
+ \item When viewing the graph of a function, we may use the
+ \fillin[u]{1.5in}{Horizontal Line} Test to determine if it is a
+ one-to-one function.
+\begin{solution}[]\ifvspacewithsolns
+When viewing the graph of a function, we may use the
+\fillin[u]{1.5in}{Horizontal Line} Test to determine if it is a
+one-to-one function.\fi
+\end{solution}
+
+ \item \TF{F} (\texttt{T} or \texttt{F}) The graph of the function $ f(x) =
+ 2-4x-3x^2$ is a parabola that opens up.
+\begin{solution}[]\ifvspacewithsolns
+\TF{F} (\texttt{T} or \texttt{F}) The graph of the function $ f(x) =
+2-4x-3x^2$ is a parabola that opens up.\fi
+\end{solution}
+
+ \item \TF{F} (\texttt{T} or \texttt{F}) For a quadratic function of the form
+ $f(x)=ax^2+bx+c$, if $a>0$, then the function has a \emph{maximum
+ value}.
+\begin{solution}[]\ifvspacewithsolns
+\TF{F} (\texttt{T} or \texttt{F}) For a quadratic function of the form
+ $f(x)=ax^2+bx+c$, if $a>0$, then the function has a \emph{maximum
+ value}.\fi
+\end{solution}
+
+\pushProblem
+
+\begin{eqComments}[Comments:]
+Questions like the three above (fill-in and True/False) often have no
+solution; hence, normally, the \texttt{solution} environment is not used. When
+using the \texttt{vspacewithsolns} or the \texttt{solutionsonly} options
+you would like the ``answers'' to appear on the solutions pages. To
+rectify this, we simply copy and past the item into a solutions
+environment, like so, in the case of the last question above.
+\begin{verbatim}
+\begin{solution}[]\ifvspacewithsolns
+\TF{F} (\texttt{T} or \texttt{F}) For a quadratic function of the form
+ $f(x)=ax^2+bx+c$, if $a>0$, then the function has a \emph{maximum
+ value}.\fi
+\end{solution}
+\end{verbatim}
+The optional argument is empty (important). We don't want the student or instructor to
+see this solution when the document is compiled using the \texttt{answerkey}
+option, so we wrap this solution in a conditional
+\verb~\ifvspacewithsolns...\fi~ This switch will be true if either the
+options \texttt{vspacewithsolns} or \texttt{solutionsonly} options are
+taken
+\end{eqComments}
+
+\popProblem
+
+ \item\label{whichRatFunc} Which rational function below has a horizontal asymptote of
+ $y=-2$, and has vertical asymptotes of $x=1$ (odd) and $ x=2 $ (even)?
+ \begin{answers}{3}\rowsep{6pt}
+ \bChoices[label=whichRat]
+ \Ans0 $ y = \frac{(x+2) (1-2x)}{(1-x)(x-2)^2} $\eAns
+ \Ans0 $ y = \frac{(x+2)^2 (2x-1)}{(x-1)(x-2)^2} $\eAns
+ \Ans1 $ y = \frac{(x+2)^2 (1-2x)}{(x-1)(x-2)^2} $\eAns
+ \Ans0 $ y = \frac{(x+2)^2 (2x-1)}{(x-1)^2(x-2)} $\eAns
+ \Ans0 $ y = \frac{(x+2) (1-2x)^2}{(x-1)^2(x-2)} $\eAns
+ \Ans0 none of these\eAns
+ \eChoices
+ \end{answers}
+\begin{solution}[]\ifvspacewithsolns
+We can access the ``answers'' to a multiple choice question in several
+ways:
+\begin{itemize}
+\item The correct alternative is part~\useSavedAlts{whichRat},
+\useSavedAns{whichRat}.
+\begin{verbatim}
+The correct alternative is part~\useSavedAlts{whichRat},
+\useSavedAns{whichRat}.
+\end{verbatim}
+The command \verb!\useSavedAlts{whichRat}! expands to the letter alternative of the
+correct response, \useSavedAlts{whichRat}, in this case. Similarly,
+\verb!\useSavedAns{whichRat}! expands to the correct answer, here, the
+correct answer is \useSavedAns{whichRat}.
+
+\item The correct answer is \useSavedAltsAns{whichRat}.
+\begin{verbatim}
+The correct answer is \useSavedAltsAns{whichRat}.
+\end{verbatim}
+The command \verb!\useSavedAltsAns{whichRat}! expands to the correct
+letter followed by the correct answer.
+\item You can now copy and paste the \texttt{answers} (or \texttt{manswers})
+ environment into the \texttt{solutions} environment, like so.
+
+\item[] Which rational function below has a horizontal asymptote of
+ $y=-2$, and has vertical asymptotes of $x=1$ (odd) and $ x=2 $ (even)?
+ \begin{answers}{3}\rowsep{6pt}
+ \bChoices[label=whichRat]
+ \Ans0 $ y = \frac{(x+2) (1-2x)}{(1-x)(x-2)^2} $\eAns
+ \Ans0 $ y = \frac{(x+2)^2 (2x-1)}{(x-1)(x-2)^2} $\eAns
+ \Ans1 $ y = \frac{(x+2)^2 (1-2x)}{(x-1)(x-2)^2} $\eAns
+ \Ans0 $ y = \frac{(x+2)^2 (2x-1)}{(x-1)^2(x-2)} $\eAns
+ \Ans0 $ y = \frac{(x+2) (1-2x)^2}{(x-1)^2(x-2)} $\eAns
+ \Ans0 none of these\eAns
+ \eChoices
+ \end{answers}
+\end{itemize}\fi
+\end{solution}
+
+\pushProblem
+\begin{eqComments}[Comments:]
+Multiple choice and multiple selection questions were an especially
+difficult problem to solve; the \texttt{answers} and \texttt{manswers}
+environments are undefined outside of an \texttt{exam} environment so one
+cannot simply copy and paste the choices into the \texttt{solution} environment.
+
+To resolve this issue, I added a key-value pair to the \cs{bChoices} command,
+the key is \texttt{label}. The source code for the above question reads
+\verb!\bChoices[label=whichRat]! The value of the label key is used to
+build a series of macros that record the labels and text for the choices
+that are marked correct by \cs{Ans1}. The information gathered by these
+macros are accessible through \cs{useSavedAlts}, \cs{useSavedAns},
+\cs{useSavedAltsAns}, and \cs{useSavedNumAns}, as described in the \textsf{eqexam}
+manual. See the solutions pages to see the answers to these multiple
+choice questions and details on the use of these commands.
+\end{eqComments}
+\popProblem
+
+ \item How many times can a quadratic equation cross the $x$-axis?
+ Check as many of the alternatives that are possibly correct for a
+ quadratic function.
+ \begin{manswers}{4}
+ \bChoices[label=nCrossings]
+ \Ans1 0\eAns
+ \Ans1 2\eAns
+ \Ans1 3\eAns
+ \Ans0 4\eAns
+ \Ans0 5\eAns
+ \Ans0 6\eAns
+ \Ans0 infinitely many\eAns
+ \Ans0 none of these\eAns
+ \eChoices
+ \end{manswers}
+\begin{solution}[]\ifvspacewithsolns
+Here is how these same macros expand for multiple selection problems.
+\begin{itemize}
+\item The correct alternatives are parts~\useSavedAlts{nCrossings}.
+\begin{verbatim}
+The correct alternatives are parts~\useSavedAlts{nCrossings}.
+\end{verbatim}
+\item The correct answers are \useSavedAns{nCrossings}.
+\begin{verbatim}
+The correct answers are \useSavedAns{nCrossings}.
+\end{verbatim}
+\item The correct responses are \useSavedAltsAns{nCrossings}.
+\begin{verbatim}
+The correct responses are \useSavedAltsAns{nCrossings}.
+\end{verbatim}
+\item[] End each case, the command expands to a comma-delimited list of correct
+answers.
+\end{itemize}
+You can also access the answers individually, for example the second
+correct response is part~\useSavedAlts[2]{nCrossings}, the answer for
+part~\useSavedAlts[2]{nCrossings} is \useSavedAns[2]{nCrossings}. Or,
+we can say, \useSavedAltsAns[2]{nCrossings} to get a combined listing of
+the second correct response.
+\begin{verbatim}
+You can also access the answers individually, for example the second
+correct response is part~\useSavedAlts[2]{nCrossings}, the answer for
+part~\useSavedAlts[2]{nCrossings} is \useSavedAns[2]{nCrossings}. Or,
+we can say, \useSavedAltsAns[2]{nCrossings} to get a combined listing of
+the second correct response.
+\end{verbatim}
+\fi
+\end{solution}
+\end{parts}
+\end{problem*}
+
+\begin{eqComments}[Comments:]
+The above question is a multiple selection question. The student must
+select all the correct choices. See the solutions pages to see the answers
+to these multiple choice questions and details on the use of these
+commands.
+\end{eqComments}
+
+\begin{problem}[5]
+Which rational function below has a horizontal asymptote of
+ $y=-2$, and has vertical asymptotes of $x=1$ (odd) and $ x=2 $ (even)?
+ \begin{answers}{3}\rowsep{6pt}
+ \bChoices[label=whichRat1]
+ \Ans0 $ y = \frac{(x+2) (1-2x)}{(1-x)(x-2)^2} $\eAns
+ \Ans0 $ y = \frac{(x+2)^2 (2x-1)}{(x-1)(x-2)^2} $\eAns
+ \Ans1 $ y = \frac{(x+2)^2 (1-2x)}{(x-1)(x-2)^2} $\eAns
+ \Ans0 $ y = \frac{(x+2)^2 (2x-1)}{(x-1)^2(x-2)} $\eAns
+ \Ans0 $ y = \frac{(x+2) (1-2x)^2}{(x-1)^2(x-2)} $\eAns
+ \Ans0 none of these\eAns
+ \eChoices
+ \end{answers}
+\begin{solution}[]\ifvspacewithsolns
+We can access the ``answers'' to a multiple choice question in several
+ways:
+\begin{itemize}
+\item The correct alternative is part~\useSavedAlts{whichRat1},
+\useSavedAns{whichRat1}.
+\begin{verbatim}
+The correct alternative is part~\useSavedAlts{whichRat1},
+\useSavedAns{whichRat1}.
+\end{verbatim}
+The command \verb!\useSavedAlts{whichRat1}! expands to the letter alternative of the
+correct response, \useSavedAlts{whichRat1}, in this case. Similarly,
+\verb!\useSavedAns{whichRat1}! expands to the correct answer, here, the
+correct answer is \useSavedAns{whichRat1}.
+
+\item The correct answer is \useSavedAltsAns{whichRat1}.
+\begin{verbatim}
+The correct answer is \useSavedAltsAns{whichRat1}.
+\end{verbatim}
+The command \verb!\useSavedAltsAns{whichRat1}! expands to the correct
+letter followed by the correct answer.
+\end{itemize}\fi
+\end{solution}
+\end{problem}
+
+\begin{eqComments}[Comments:]
+This is the same question as Problem~\ref{shortAns} (\ref{whichRatFunc}),
+but this one is a stand alone question. The lettering of the label can
+change depending on the options you take, so, if you compile this document
+without the \texttt{useforms} options, the choices listed in~\ref{shortAns} (\ref{whichRatFunc})
+will be numbers, (A), (B),\dots, and the choices of this question will be
+letters, (a), (b),\dots. Check the solutions page, the references should
+change to reflect the change in options, let's hope.
+\end{eqComments}
+
+\resetSolnAfterToDefault
+
+\begin{problem*}[\auto]
+Let $f(x) = 4x+3$ and $ g(x) = 2x^2 - 5 $. Compute each of the following,
+simplify were appropriate.
+\begin{multicols}{2}
+\begin{parts}
+\item \PTs{2} $ (fg)(-2) = \fillin[boxed,boxsize=LARGE,align=l]{1in}{-15} $
+
+\begin{solution}[.65in]
+We have \[ (fg)(-2)=f(-2)g(-2)=(-5)(3)=\boxed{-15}\]
+\end{solution}
+
+\item \PTs{2} $\left(\frac{g}{f}\right)(x)= \fillin[boxed,boxsize=LARGE]{\ifNoSolutions{1in}{}}{\frac{2x^2-5}{4x+3}} $
+
+\begin{solution}[\sameVspace]
+$ \left(\frac{g}{f}\right)(x)=\frac{g(x)}{f(x)}=\boxed{\frac{2x^2 - 5}{4x+3}}$
+\end{solution}
+
+\item \PTs{2} $ (f\circ f )(x) = \fillin[boxed,boxsize=LARGE]{\ifNoSolutions{1in}{}}{16x+15} $
+
+\begin{solution}[\sameVspace]
+Composing, $(f\circ f )(x)=f(f(x))=f(4x+3)=4(4x+3)+3=\boxed{16x+15}$
+\end{solution}
+
+\item \PTs{4} $ (f\circ g )(x) = \fillin[boxed,boxsize=LARGE]{1in}{8x^2-17} $
+
+\begin{solution}[\sameVspace]
+Composing, $(f\circ g )(x)=f(g(x))=f(2x^2 - 5)=4(2x^2 -5)+3=\boxed{8x^2-17}$
+\end{solution}
+\end{parts}
+\end{multicols}
+\end{problem*}
+
+\begin{eqComments}[Comments:]
+Nothing new about the above problem, each has a solution, no special
+attention is needed. In some of the answer boxes, \cs{ifNoSolutions} is
+used to set the width then \texttt{nosolutions} is in effect, and to et the box to
+its natural width otherwise.
+\end{eqComments}
+
+
+\begingroup
+
+\setlength{\columnsep}{30pt}
+
+\begin{multicols}{2}
+\begin{problem}[5]
+Use the \textbf{vertex formula} to find the $x$-coordinate, $h$, and the
+$y$-coordinate, $k$, of the quadratic function $ f(x) = 2x^2 - 8x + 5 $.
+\begin{equation*}
+ \fillin[boxed,boxsize=LARGE,align=l,boxpretext={h=}]{1in}{2}\quad
+ \fillin[boxed,boxsize=LARGE,align=l,boxpretext={k=}]{1in}{-3}
+\end{equation*}
+\begin{solution}[.5in]
+We use the vertex formula, $ h = -b/(2a) = - (-8)/4 = 2 $, and
+so $h=f(2) = 8 - 16 + 5 = -3$.
+\end{solution}
+\end{problem}
+
+\columnbreak
+
+\begin{problem}[] %
+\PTs{3}\addtocounter{eqpointvalue}{3} The function $ f(x) = x^2 - x + 1 $ has a
+\fillin[u]{.75in}{minimum} (max/min) at $x = \fillin[u]{.5in}{1/2}$.
+\begin{solution}[\sameVspace]
+We use the vertex formula, $ h = -b/(2a) = - (-1)/2 =
+1/2 $. A \textbf{minimum} occurs since the leading coefficient is
+positive, which means the parabola opens up, the vertex is a minimum.
+\end{solution}
+\end{problem}
+\end{multicols}
+
+\endgroup
+
+\begin{eqComments}[Comments:]
+I include this problem in this file, because it is a construct that
+appeared in a test of mine. I wanted to conserve vertical space so I put
+to problems into two column format. The problem is the points appear to
+the left. So, for the problem on the left, the points appear as usual, for
+the problem on the right, the points appear in-line, I had to explicitly
+increment the points counter, like so
+\verb~\addtocounter{eqpointvalue}{3}~. Some adjustment of the space
+between the columns was necessary \verb~\setlength{\columnsep}{30pt}~.
+\end{eqComments}
+
+\renameSolnAfterTo{}
+
+\begin{problem}[5]
+For a polynomial of degree $12$, according to theory, the maximum number
+of zeros is \fillin[u]{.5in}{12}, and the maximum number of turning points
+is \fillin[u]{.5in}{11}.
+\begin{solution}[]\ifvspacewithsolns
+For a polynomial of degree $12$, according to theory, the maximum number
+of zeros is \fillin[u]{.5in}{12}, and the maximum number of turning points
+is \fillin[u]{.5in}{11}.\fi
+\end{solution}
+\end{problem}
+
+\begin{eqComments}[Comments:]
+A fill-in the blank problem, just copy and paste it into the solution
+environment, protected by \verb~\ifvspacewithsolns...\fi~.
+\end{eqComments}
+
+
+\begin{problem}[5]
+In the boxes provided, list the laws of the exponents and the laws of
+logarithms.
+ \begin{equation*}\def\bwidth{2.75in}\def\bheight{1.5in}
+ \begin{tabular}{cc}
+ \textbf{Laws of the Exponents} & \textbf{Laws of Logarithms}\\
+ \multicolumn{1}{p{\bwidth}}{%
+ \fillin[boxed,enclosesoln,parbox={[c][\bheight][t]}]{\linewidth}{%
+%
+ \begin{enumerate}
+ \item $a^x a^y = a^{x+y}$
+ \item $a^x/a^y = a^{x-y}$
+ \item $ (a^x)^y = a^{xy}$
+ \end{enumerate}
+%
+ }}&
+ \multicolumn{1}{p{\bwidth}}{%
+ \fillin[boxed,enclosesoln,parbox={[c][\bheight][t]}]{\linewidth}{%
+%
+ \begin{enumerate}
+ \item $\log_a(xy) = \log_a(x)+\log_a(y)$
+ \item $\log_a(x/y) = \log_a(x)-\log_a(y)$
+ \item $\log_a(x^r) = r\log_a(x)$
+ \end{enumerate}
+%
+ }}
+ \end{tabular}
+ \end{equation*}
+\begin{solution}[]\ifvspacewithsolns
+Write sentences, in the provided boxes, describing, in laymen's terms, Type I
+ and Type II errors for this test of hypothesis.
+ \begin{equation*}\def\bwidth{2.75in}\def\bheight{1.5in}
+ \begin{tabular}{cc}
+ \textbf{Laws of the Exponents} & \textbf{Laws of Logarithms}\\
+ \multicolumn{1}{p{\bwidth}}{%
+ \fillin[boxed,enclosesoln,parbox={[c][\bheight][t]}]{\linewidth}{%
+%
+ \begin{enumerate}
+ \item $a^x a^y = a^{x+y}$
+ \item $a^x/a^y = a^{x-y}$
+ \item $ (a^x)^y = a^{xy}$
+ \end{enumerate}
+%
+ }}&
+ \multicolumn{1}{p{\bwidth}}{%
+ \fillin[boxed,enclosesoln,parbox={[c][\bheight][t]}]{\linewidth}{%
+%
+ \begin{enumerate}
+ \item $\log_a(xy) = \log_a(x)+\log_a(y)$
+ \item $\log_a(x/y) = \log_a(x)-\log_a(y)$
+ \item $\log_a(x^r) = r\log_a(x)$
+ \end{enumerate}
+%
+ }}
+ \end{tabular}
+ \end{equation*}\fi
+\end{solution}
+\end{problem}
+
+\begin{eqComments}[Comments:]
+The above pair of boxes use the \texttt{enclosesoln} key. When this key is
+used, the vertical size of the box is adjusted to the vertical size the
+solution uses when either \texttt{nosolutions} or \texttt{vspacewithsolns}
+option are used. Note the dimensions of the \cs{parbox} are adjusted so
+that the width and height are correct. The \cs{boxed} command adds
+\texttt{2\cs{fboxesp}+2\cs{fboxrule}}, so we reduce the \cs{parbox} by
+that amount so the boxes are the correct size.
+\end{eqComments}
+
+\begin{problem}[12]
+Define $ f(x) = -2x^2(x+1) $. Make a good sketch of the graph in the
+coordinate plane below, taking into consideration the end-behavior of the
+polynomial, and its intercepts.
+\begin{solution}[3in]
+The graph of $ f(x) = -2x^2(x+1) $ is seen below.
+\par\nobreak\medskip\vskip-1.5\baselineskip
+\begin{minipage}[t]{3.5in}\vskip\baselineskip\kern0pt
+\includegraphics[width=3.5in]{graph}
+\end{minipage}\hfill
+\begin{minipage}[t]{\linewidth-3.5in-30pt}\vskip\baselineskip\kern0pt
+\noindent\makebox[\linewidth][c]{\textbf{Work Area}}
+\begin{itemize}
+\item The end-behavior is like $y=-x^3$
+\item $x$-int: $x=0$ (even); $ x=-1 $ (odd)
+\item $y$-int: $y=0$ (passes through origin)
+\end{itemize}
+\end{minipage}
+\end{solution}
+\begin{workarea}{\sameVspace}%
+\begin{minipage}[t]{3.5in}\kern0pt
+\includegraphics[width=3.5in]{coorplane}
+\end{minipage}\hfill
+\begin{minipage}[t]{\linewidth-3.5in-30pt}\kern0pt
+\makebox[\linewidth][c]{\textbf{Work Area}}
+\end{minipage}
+\end{workarea}
+\end{problem}
+
+\begin{eqComments}[Comments:]
+Finally, we have the above problem. It uses the \texttt{workarea}
+environment. Previously, \texttt{workarea} appeared with the \texttt{nosolutions}
+option. Now it appears with the \texttt{vspacewithsolns} option as well.
+On the actual test, I used \textsf{PSTricks} for the graphics, for this
+demo file, I replace the \textsf{pstricks} code this a figure depicting what the
+\textsf{pstricks} produced, that way users of pdflatex can compile this
+file! \texttt{:-)}
+\end{eqComments}
+
+\newpage
+
+\begin{eqComments}%
+On this page, we more clearly demonstrate the new feature of preserving
+the vertical space even when the \texttt{answerkey} option is used. In the
+preamble, we have \cs{vspacewithkeyOn}.
+\end{eqComments}
+
+
+\resetSolnAfterToDefault
+% try changing \vspacewithkeyOn to \vspacewithkeyOff and recompile,
+% the 4 inches of vertical space are not preserved when you compile
+% with the answerkey option.
+\vspacewithkeyOn
+
+\begin{problem}[10]
+Solve the equation $2x^2 - 5x + 10 = 0 $ using the quadratic formula.
+\begin{solution}[4in]
+Applying the quadratic formula with $a=2$, $ b = -5 $, and $ c = 10 $,
+\begin{alignat*}{2}
+ x & = \frac{-b \pm \sqrt{b^2 -4ac}}{2a} \qt{The Quad.\ Formula}\\&
+ = \frac{5 \pm \sqrt{25 -4(2)(10)}}{2(2)} \qt{substitute}\\&
+ = \frac{5 \pm \sqrt{25 -80}}{4} \qt{arithmetic}\\&
+ = \frac{5 \pm \sqrt{-45}}{4} \qt{ditto}\\&
+ = \frac{5 \pm 3\sqrt{5}\,\imath}{4} \qt{simplify}
+\end{alignat*}
+The solution is $\boxed{x=\frac{5 \pm 3\sqrt{5}\,\imath}{4}}$
+\end{solution}
+\end{problem}
+
+\begin{problem}[5]
+Write the equation, in standard form, for the circle with center at
+$C(1,-3)$ and radius of $2$
+\begin{solution}[1in]
+We have $(x-1)^2 + (y+2)^2 = 4 $. Expanding and combining the equation, we
+have\dots \[\boxed{x^2+y^2-2x+4y+1=0}\]
+\end{solution}
+\end{problem}
+
+\begin{eqComments}[Comments:]
+The \texttt{solution} environments in the above problems declared 4 inches
+and 1 inch of vertical space, respectively. With \cs{vspacewithkeyOn} we
+should have about 4 inches (resp., 1 inch) of vertical space even with the
+\texttt{answerkey} option. Try compiling the file with
+\cs{vspacewithkeyOff}.
+\end{eqComments}
+
+\end{theseproblems}
+
+\end{exam}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/test_matching.pdf b/texmf-dist/doc/latex/eqexam/examples/test_matching.pdf
new file mode 100644
index 00000000..56eff405
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test_matching.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/eqexam/examples/test_matching.tex b/texmf-dist/doc/latex/eqexam/examples/test_matching.tex
new file mode 100644
index 00000000..27317c65
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/test_matching.tex
@@ -0,0 +1,92 @@
+\documentclass{article}
+\usepackage{amsmath}
+\usepackage{graphicx}
+\usepackage[forpaper,pointsonleft,
+% online,
+% compile with one of the following three options
+ nosolutions,
+% answerkey,
+% vspacewithsolns
+]{eqexam}
+%\usepackage[forpaper,pointsonleft,nosolutions]{eqexam}
+%\usepackage[online,forpaper,pointsonleft,answerkey]{eqexam}
+
+\solAtEndFormatting{\eqequesitemsep{3pt}}
+
+
+\title[T1]{Test 1}
+\author{D. P. Story}
+\subject{A Matching Problem}
+\date{\thisterm, \the\year}
+\keywords{Test 1, Section 001}
+
+\university
+{%
+ NORTHWEST FLORIDA STATE COLLEGE\\
+ Department of Mathematics
+}
+\email{storyd@nwfsc.edu}
+
+\hfuzz = .7pt
+
+\begin{document}
+\maketitle
+
+
+\begin{exam}{Part1}
+
+\begin{instructions}
+Solve each of the problems without error. If you make an error,
+points will be subtracted from your total score.
+\end{instructions}
+
+
+\begin{problem*}[\auto]
+Match each of names on the left, with the corresponding names on the right.
+
+\begin{multicols}{2}
+\begin{parts}
+\item\label{dps}\PTs*{2}\fillin{.5in}{\ref{george}} Washington
+\ifkeyalt
+\begin{solution}[]
+\fillin{.5in}{\ref{george}} Washington
+\end{solution}
+\fi
+\item\PTs*{2}\fillin{.5in}{\ref{john}} Adams
+\ifkeyalt
+\begin{solution}[]
+\fillin{.5in}{\ref{john}} Adams
+\end{solution}
+\fi
+\item\PTs*{2}\fillin{.5in}{\ref{thomas}} Jefferson
+\ifkeyalt
+\begin{solution}[]
+\fillin{.5in}{\ref{thomas}} Jefferson
+\end{solution}
+\fi
+
+\columnbreak
+
+\renewcommand{\thepartno}{\Alph{partno}}
+\partsformat{\Alph{partno}.}
+
+% The above redefinitions are reset when we leave the group, when \end{parts}
+% is completed. If the original definitions are needed to be reset before then
+% execute the following commands: \defaultthepartno, \defaultpartsformat
+
+% \foritem{a} resets the partno counter back to 0, and displays (a), which
+% has been redefined to A.
+
+\foritem{a}\label{john} John
+
+\item\label{thomas} Thomas
+
+\item\label{george} George
+
+\end{parts}
+\end{multicols}
+\end{problem*}
+
+\end{exam}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/tex_survey.tex b/texmf-dist/doc/latex/eqexam/examples/tex_survey.tex
new file mode 100644
index 00000000..b007f34d
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/tex_survey.tex
@@ -0,0 +1,537 @@
+\documentclass{article}
+%
+% AcroTeX eDucation Bundle required for the email option.
+%
+\usepackage[email,coverpage,forcolorpaper,nopoints,nosolutions,useforms]{eqexam}
+
+\title[TS]{\texorpdfstring{\TeX}{\textbackslash TeX} Usage Survey}
+\author{D. P. Story}
+\subject{\texorpdfstring{\sffamily eqExam}{eqExam} Demo}
+\date{Spring, \the\year}
+\keywords{TeX Usage Survey, eqExam, AcroTeX}
+
+\university
+{%
+ THE UNIVERSITY OF AKRON\\
+ Theoretical and Applied Mathematics
+}
+\email{dpstory@uakron.edu}
+
+\EmailSubject{TeX/LaTeX Survey Results}
+\EmailCourseName{eqExam Demo}
+\EmailExamName{TeX Usage Survey}
+\ServerRetnMsg{Your TeX survey results have been received, thank you.}
+\SubmitInfo{http://myWebSite/scripts/eqAttach.asp?nopath\#FDF}{myname@mymailprovider}
+
+\lhead{\textsf{eqExam} Demo}
+\rhead{\TeX{} Usage Survey}
+
+\renewcommand\maketitledesign
+{%
+ \parbox{\textwidth}{\normalsize
+ \makebox[\textwidth][c]{\bfseries\sffamily\Large\webtitle}\\[3ex]
+ \makebox[\textwidth][s]{An \textsf{eqExam} Demo \hfill\webauthor}}
+}
+\makeatletter
+\renewcommand\eqexcoverpagedesign
+{%
+ \thispagestyle{empty}
+ \addtolength\textwidth{\oddsidemargin}
+ \vspace*{.1\textheight}
+ \noindent\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\bfseries\color{blue}\large\centering\webuniversity}}
+ \par\vspace{.1\textheight}
+ \noindent\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\bfseries\color{blue}\large\centering\websubject}}
+ \par\vspace{\bigskipamount}
+ \noindent\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\bfseries\color{blue}\large\centering\webtitle}}
+ \par\vfill
+ \optionalpagematter
+ \par\vfill
+ \parindent0pt
+ \@date
+}
+\makeatother
+
+%
+% From the Web package, part of the AcroTeX eDucation Bundle
+%
+\newNaviIcon[j]{\GoToSubmit}{20pt}{15pt}{\textcolor{webblue}{$\blacktriangleleft$}}{this.pageNum=1}
+\def\optionalpagematter
+{%
+ \begin{center}\setlength{\fboxrule}{1pt}
+ \fcolorbox{blue}{webyellow}{%
+ \begin{minipage}{.67\linewidth}
+ \noindent\textcolor{red}{\textbf{Instructions:}} First, thank
+ you very much for taking the time to fill out this survey of
+ \TeX/\LaTeX{} usage. I will summarize the results, and make
+ them publicly available. The survey has not been commissioned
+ by TUG ({\TeX} User's Group), but is a demo of some of
+ capabilities of my new {\LaTeX} package
+ \textsf{eqExam}.\par\medskip When you have finished, click on
+ the ``Submit'' button to record your responses.\par\medskip
+ \textbf{\textcolor{red}{Note:}} The \textcolor{webblue}{Adobe
+ Reader}, or an \textcolor{webblue}{Acrobat} application
+ (version 5.0 or later) is required to submit this
+ survey.\hfill\mbox{D. P. Story}
+ \end{minipage}}
+ \end{center}
+}
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{Part1}
+
+\begin{instructions}[\TeX/\LaTeX.]
+This first block of questions concerns your use of {\TeX/\LaTeX}.
+\end{instructions}
+
+\begin{problem*}
+Experience using \TeX/\LaTeX.
+\begin{parts}
+\item How would you describe yourself in terms of experience using \TeX/\LaTeX?
+\begin{answers}{4}
+\rowsep{1bp}
+\bChoices
+ \Ans0 Novice\eAns
+ \Ans0 Intermediate\eAns
+ \Ans0 Experienced\eAns
+ \Ans0 Package Developer\eAns
+\eChoices
+\end{answers}
+
+\item I have used \TeX/\LaTeX{} for\dots
+\begin{answers}{3}
+\rowsep{1bp}
+\bChoices
+ \Ans0 less than a year\eAns
+ \Ans0 one to two years\eAns
+ \Ans0 two to five years\eAns
+ \Ans0 five to ten years\eAns
+ \Ans0 ten to fifteen years\eAns
+ \Ans0 fifteen to twenty years\eAns
+ \Ans0 more than twenty years\eAns
+\eChoices
+\end{answers}
+
+\end{parts}
+\end{problem*}
+
+\begin{problem}
+Approximately how many hours do you spend using \TeX/\LaTeX{} in a typical week?
+On a per week basis, I use \TeX/\LaTeX\dots
+\begin{answers}{4}
+\rowsep{1bp}
+\bChoices
+ \Ans0 less than an hour\eAns
+ \Ans0 one to two hours\eAns
+ \Ans0 three to five hours\eAns
+ \Ans0 ten hours\eAns
+ \Ans0 more than ten hours\eAns
+\eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+There are many {\TeX} user's groups worldwide, are you a member of one or more?
+\begin{answers}{4}
+\bChoices
+ \Ans0 Yes\eAns
+ \Ans0 No\eAns
+\eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem*}
+The following questions concern your preferred use of \TeX.
+\begin{parts}
+\item\label{whichTeX} Which styles to you predominately use?
+\begin{answers}{4}
+\rowsep{1bp}
+\bChoices[2]
+ \Ans0 Plain \TeX\eAns
+ \Ans0 \LaTeX\eAns
+ \Ans0 Con\TeX t\eAns
+ \Ans0 Other, \makebox[0pt][l]{please specify \fillin{1.25in}{\empty}}\eAns
+\eChoices
+\end{answers}
+
+\item Based on your response to \hyperref[whichTeX]{(\ref*{whichTeX})},
+please explain why you made the choice you did.
+\begin{solution}[.75in]
+\end{solution}
+
+
+\item There are many {\TeX} Systems available for use, commercial,
+shareware, freeware. Which one do you primarily use?
+\begin{answers}{4}
+\rowsep{1bp}
+\bChoices
+ \Ans0 A \TeX{} Live System\eAns
+ \Ans0 te\TeX\eAns
+ \Ans0 Mik\TeX\eAns
+ \Ans0 PC\TeX\eAns
+ \Ans0 Y\negthinspace{\scriptsize\&}\negthinspace Y \TeX{} System\eAns
+ \Ans0 Textures\eAns
+ \Ans0 CMac\TeX\eAns
+ \Ans0 True\TeX\eAns
+ \Ans0 Oz\TeX\eAns
+ \Ans0 Other, \makebox[0pt][l]{please specify \fillin{1.75in}{\empty}}\eAns
+\eChoices
+\end{answers}
+
+\item What is your favorite {\TeX} editor? Specify \fillin{1.75in}{\empty}
+
+\end{parts}
+\end{problem*}
+
+\begin{problem*}
+What operating systems (OS) do you use \TeX?
+
+\setlength\columnseprule{0pt}
+
+\begin{parts}
+
+\item What operating system (OS) runs on the machine you
+most frequently use when working with \TeX/\LaTeX? Select one.
+\begin{multicols}{2}
+\begin{answers}{1}
+\bChoices
+ \Ans0 Windows XP\eAns
+ \Ans0 Windows ME\eAns
+ \Ans0 Windows NT\eAns
+ \Ans0 Windows 2000\eAns
+ \Ans0 Windows 98\eAns
+ \Ans0 Windows 95\eAns
+ \Ans0 Macintosh OS X\eAns
+ \Ans0 Macintosh OS 9\eAns
+ \Ans0 Macintosh OS 8\eAns
+ \Ans0 Macintosh OS 7 or earlier\eAns
+ \Ans0 Unix or Linux\eAns
+ \Ans0 Other, please specify \fillin{1.25in}{\empty}\eAns
+ \Ans0 Don't know\eAns
+\eChoices
+\end{answers}
+\end{multicols}
+
+\item Some people work on multiple platforms, what is your secondary
+OS for working with \TeX/\LaTeX?
+\begin{multicols}{2}
+\begin{answers}{1}
+\bChoices
+ \Ans0 Windows XP\eAns
+ \Ans0 Windows ME\eAns
+ \Ans0 Windows NT\eAns
+ \Ans0 Windows 2000\eAns
+ \Ans0 Windows 98\eAns
+ \Ans0 Windows 95\eAns
+ \Ans0 Macintosh OS X\eAns
+ \Ans0 Macintosh OS 9\eAns
+ \Ans0 Macintosh OS 8\eAns
+ \Ans0 Macintosh OS 7 or earlier\eAns
+ \Ans0 Unix or Linux\eAns
+ \Ans0 Other, please specify \fillin{1.25in}{\empty}\eAns
+ \Ans0 Don't use two systems.\eAns
+\eChoices
+\end{answers}
+\end{multicols}
+
+\end{parts}
+
+\end{problem*}
+
+
+\begin{eqComments}[Seeking Help.]\end{eqComments}
+
+\begin{problem*}
+These questions concern any problems you may have with \TeX/\LaTeX{} and resources available to you.
+\begin{parts}
+\item Do you struggle on alone (with \TeX/\LaTeX ) if things are going wrong, or do you
+ seek help?
+ \begin{answers}{3}
+ \bChoices
+ \Ans0 Struggle on along\eAns
+ \Ans0 Seek help from a friend or colleague\eAns
+ \Ans0 Seek help from a public forum\eAns
+ \eChoices
+ \end{answers}
+
+\item Do you use on-line resources?
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes, I use \makebox[0pt][l]{\fillin{1.75in}{\empty}}\eAns
+ \eChoices
+ \end{answers}
+
+\goodbreak
+
+\item Do you seek help from \texttt{comp.text.tex}?
+ \begin{answers}{3}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes, I read the postings occasionally\eAns
+ \Ans0 Yes, I read the postings regularly\eAns
+ \Ans0 Yes, I even ask questions\eAns
+ \Ans0 Yes, I answer questions on occasion\eAns
+ \Ans0 Yes, I regularly answer questions\eAns
+ \eChoices
+ \end{answers}
+\end{parts}
+\end{problem*}
+
+\begin{problem*}
+The \textsf{CTAN} Archive.
+\begin{parts}
+\item\label{CTAN} Do you know about \textsf{CTAN} (Central {\TeX} Archive Network)?
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes\eAns
+ \eChoices
+ \end{answers}
+
+\item If you answered ``Yes'' to question~\hyperref[CTAN]{(\ref*{CTAN})}, approximately, how often
+ do you use this archive?
+ \begin{answers}{3}
+ \bChoices
+ \Ans0 Once or twice a month\eAns
+ \Ans0 three to five times per month\eAns
+ \Ans0 More than five times per month\eAns
+ \eChoices
+ \end{answers}
+
+\end{parts}
+\end{problem*}
+
+\begin{problem*}
+The {\TeX} \textsf{FAQ} Resource.
+\begin{parts}
+\item\label{FAQ} Do you know there is a {\TeX} \textsf{FAQ} online resource? (\texttt{http://www.tex.ac.uk/faq})
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes\eAns
+ \eChoices
+ \end{answers}
+
+\item\label{FAQ1} If you answered ``Yes'' to question, \hyperref[FAQ]{(\ref*{FAQ})} have you ever used the \textsf{FAQ}?
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes, \makebox[0pt][l]{how often? \fillin{1in}{\empty} per year.}\eAns
+ \eChoices
+ \end{answers}
+\end{parts}
+\end{problem*}
+
+\begin{problem}
+In terms of paper publications, what are the titles of the books you use for a reference to your
+work in \TeX/\LaTeX? Please list titles/authors in the space provided below.
+\begin{solution}[1.8in]
+\end{solution}
+\end{problem}
+
+\goodbreak
+\begin{eqComments}[Print and PDF.]\end{eqComments}
+
+\begin{problem}
+What application do you use to create PDF? Adobe Distiller, ps2pdf, other.
+\begin{answers}{3}
+\rowsep{1bp}
+ \bChoices
+ \Ans0 Adobe Distiller\eAns
+ \Ans0 \textsf{ps2pdf} (\textsf{pdfwriter})\eAns
+ \Ans0 \textsf{pdftex}\eAns
+ \Ans0 \textsf{dvipdfm}\eAns
+ \Ans0 Other, \makebox[0pt][l]{please specify \fillin{1.75in}{\empty}}\eAns
+ \eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+Describe the reasons you create PDF document from a \TeX/\LaTeX{} source. Is it for
+distribution over the Internet; to create interactive, high
+content materials; for business purposes? Please elaborate in the
+space provided below.
+\begin{solution}[.75in]
+\end{solution}
+\end{problem}
+
+\begin{problem}
+Do you use {\TeX/\LaTeX} primarily for creating printable documents, or for creating
+a PDF document suitable for publication on the Internet, or distribution to a colleague?
+\begin{answers}{3}
+ \bChoices
+ \Ans0 Exclusively for print\eAns
+ \Ans0 Mostly for PDF\eAns
+ \Ans0 About half and half\eAns
+ \eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+If you have any experience or knowledge of commercial publishing
+houses that use a \TeX/\LaTeX{} or \textsf{pdftex} work flow for
+prepress typesetting, please list publishing houses and countries
+in the space provided below.
+\begin{solution}[.75in]
+\end{solution}
+\end{problem}
+
+\begin{eqComments}[Population Demographics.]
+The next set of questions concern you.
+\end{eqComments}
+
+\begin{problem}
+My gender is \dots
+\begin{answers}{5}
+ \bChoices
+ \Ans0 Male\eAns
+ \Ans0 Female\eAns
+ \Ans0 \makebox[0pt][l]{Prefer not to disclose}\eAns
+ \eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+I am \fillin{.75in}{\empty} years old.
+\end{problem}
+
+\begin{problem}
+Which of the following best describes your status as
+an \TeX{} user today? Select one:
+
+\begin{answers}{1}
+ \bChoices
+ \Ans0 Use as a student\eAns
+ \Ans0 Use as an educator/trainer\eAns
+ \Ans0 Use at home for personal use or as a hobby\eAns
+ \Ans0 Use for a home-based business\eAns
+ \Ans0 Use in a company or business (non-home based)\eAns
+ \eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+What is your country of residence? Select one:
+
+\setlength\columnseprule{0pt}
+
+\begin{multicols}{2}
+\begin{answers}{1}
+ \bChoices
+ \Ans0 United States of America\eAns
+ \Ans0 Canada\eAns
+ \Ans0 Other Americas, \mbox{specify: \fillin{1.24in}{\empty}}\eAns
+ \Ans0 United Kingdom\eAns
+ \Ans0 France\eAns
+ \Ans0 Germany\eAns
+ \Ans0 Sweden\eAns
+ \Ans0 Netherlands\eAns
+ \Ans0 Other Europe, \mbox{specify: \fillin{1.25in}{\empty}}\eAns
+ \Ans0 Japan\eAns
+ \Ans0 Hong Kong/Taiwan\eAns
+ \Ans0 China\eAns
+ \Ans0 Other Asia, \mbox{specify: \fillin{1.25in}{\empty}}\eAns
+ \Ans0 Australia\eAns
+ \Ans0 New Zealand\eAns
+ \Ans0 Africa, \mbox{specify: \fillin{1.25in}{\empty}}\eAns
+ \eChoices
+\end{answers}
+\end{multicols}
+\end{problem}
+
+\def\myDing{\makebox[0pt][r]{\textcolor{red}{\ding{042}}\enspace}}
+
+\begin{eqComments}[]%
+\myDing If your company/organization uses \TeX/\LaTeX/\textsf{pdftex} in their business work flow,
+please answer questions \textbf{\textcolor{blue}{\ref*{buss1}}} and \textbf{\textcolor{blue}{\ref*{buss2}}}.
+\end{eqComments}
+
+\begin{problem}\label{buss1}
+How many employees work at your company including all
+sites? Select one:
+
+\setlength\columnseprule{0pt}
+\begin{multicols}{3}
+\begin{answers}{1}
+ \bChoices
+ \Ans0 One/work alone\eAns
+ \Ans0 2 - 9\eAns
+ \Ans0 10 - 49\eAns
+ \Ans0 50 - 99\eAns
+ \Ans0 100 - 499\eAns
+ \Ans0 500 - 999\eAns
+ \Ans0 1000 - 2999\eAns
+ \Ans0 3000 - 4999\eAns
+ \Ans0 5000 or more\eAns
+ \Ans0 Don't know\eAns
+ \eChoices
+\end{answers}
+\end{multicols}
+\end{problem}
+
+\begin{problem}\label{buss2}
+What is your company/organization's PRIMARY industry? Select one:
+
+\setlength\columnseprule{0pt}
+
+\begin{multicols}{2}
+\begin{answers}{1}
+ \bChoices
+ \Ans0 Aerospace\eAns
+ \Ans0 Automotive\eAns
+ \Ans0 Computer hardware\eAns
+ \Ans0 Computer software\eAns
+ \Ans0 Education\eAns
+ \Ans0 Engineering\eAns
+ \Ans0 Financial services\eAns
+ \Ans0 Government\eAns
+ \Ans0 Graphic design/fine art\eAns
+ \Ans0 Healthcare/social services\eAns
+ \Ans0 Insurance\eAns
+ \Ans0 Legal\eAns
+ \Ans0 Manufacturing\eAns
+ \Ans0 Membership organizations - religious, nonprofit, trade unions\eAns
+ \Ans0 Military\eAns
+ \Ans0 Pharmaceuticals/bio tech\eAns
+ \Ans0 Professional services (documentation)\eAns
+ \Ans0 Professional services (technical/IT/Internet)\eAns
+ \Ans0 Printing and publishing\eAns
+ \Ans0 Public and protective services (police, fire)\eAns
+ \Ans0 Retail\eAns
+ \Ans0 Telecommunications\eAns
+ \Ans0 Transportation\eAns
+ \Ans0 Travel\eAns
+ \Ans0 Wholesale\eAns
+ \Ans0 Other, \mbox{please specify: \fillin{1.25in}{\empty}}\eAns
+ \eChoices
+\end{answers}
+\end{multicols}
+\end{problem}
+
+\begin{eqComments}[Improvements in \TeX.]\end{eqComments}
+
+\begin{problem}
+What you most like to see improved in \TeX/\LaTeX? Use the space provided
+below:
+\begin{solution}[2in]
+\end{solution}
+\end{problem}
+
+
+\begin{eqComments}[Thank You] once again for participating in this survey.\end{eqComments}
+\begin{eqComments}[\GoToSubmit]
+Click on the left arrow to return to the first page to submit your responses.\end{eqComments}
+
+
+
+\end{exam}
+\end{document}
diff --git a/texmf-dist/doc/latex/eqexam/examples/tex_survey_h.tex b/texmf-dist/doc/latex/eqexam/examples/tex_survey_h.tex
new file mode 100644
index 00000000..158f2ca9
--- /dev/null
+++ b/texmf-dist/doc/latex/eqexam/examples/tex_survey_h.tex
@@ -0,0 +1,551 @@
+\RequirePackage[!use=publish]{spdef}
+\documentclass{article}
+% var aSubmitFields = new Array("IdInfo", "Quiz1", "pathToTxtFile", "courseName", "quizName", "pdfFileName", "rtnURL");
+% this.submitForm({cURL: "http://localhost/scripts/eq2db/eqText_html.asp", bEmpty: true, aFields: aSubmitFields, cSubmitAs: "HTML" });
+% cPathToTxtFile = Request.Form("pathToTxtFile")
+% cRtnURL = Request.Form("rtnURL")
+% AcroTeX eDucation Bundle required for the email option.
+%
+\usepackage[online,coverpage,forcolorpaper,nopoints,nosolutions,useforms]{eqexam}
+\usepackage[submitAs=html,eqText,tagged]{eq2db}
+
+\title[TS]{\texorpdfstring{\TeX}{\textbackslash TeX} Usage Survey}
+\author{D. P. Story}
+\subject{\texorpdfstring{\sffamily eqExam}{eqExam} Demo}
+\date{Spring, \the\year}
+\keywords{TeX Usage Survey, eqExam, AcroTeX}
+
+\university
+{%
+ THE UNIVERSITY OF AKRON\\
+ Theoretical and Applied Mathematics
+}
+\email{dpstory@uakron.edu}
+
+%\EmailSubject{TeX/LaTeX Survey Results}
+%\EmailCourseName{eqExam Demo}
+%\EmailExamName{TeX Usage Survey}
+%\ServerRetnMsg{Your TeX survey results have been received, thank you.}
+%\SubmitInfo{http://myWebSite/scripts/eqAttach.asp?nopath\#FDF}{myname@mymailprovider}
+
+\ifpublish
+\eqSubmit{http://faculty.nwfsc.edu/web/math/storyd/scripts/eqText_html.asp}%
+ {d:/web/facultyweb/web/math/storyd/scripts/data/texsurvey.txt}{eqexam.TeXSurvey}
+\else
+\eqSubmit{http://localhost/scripts/eq2db/eqText_html.asp}%
+ {c:/Inetpub/Data/texsurvey.txt}{eqexam.TeXSurvey}
+\fi
+\rtnURL{http://faculty.nwfsc.edu/web/math/storyd}
+
+\lhead{\textsf{eqExam} Demo}
+\rhead{\TeX{} Usage Survey}
+
+\renewcommand\maketitledesign
+{%
+ \parbox{\textwidth}{\normalsize
+ \makebox[\textwidth][c]{\bfseries\sffamily\Large\webtitle}\\[3ex]
+ \makebox[\textwidth][s]{An \textsf{eqExam} Demo \hfill\webauthor}}
+}
+\makeatletter
+\renewcommand\eqexcoverpagedesign
+{%
+ \thispagestyle{empty}
+ \addtolength\textwidth{\oddsidemargin}
+ \vspace*{.1\textheight}
+ \noindent\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\bfseries\color{blue}\large\centering\webuniversity}}
+ \par\vspace{.1\textheight}
+ \noindent\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\bfseries\color{blue}\large\centering\websubject}}
+ \par\vspace{\bigskipamount}
+ \noindent\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\bfseries\color{blue}\large\centering\webtitle}}
+ \par\vfill
+ \optionalpagematter
+ \par\vfill
+ \parindent0pt
+ \@date
+}
+\makeatother
+
+%
+% From the Web package, part of the AcroTeX eDucation Bundle
+%
+\newNaviIcon[j]{\GoToSubmit}{20pt}{15pt}{\textcolor{webblue}{$\blacktriangleleft$}}{this.pageNum=1}
+\def\optionalpagematter
+{%
+ \begin{center}\setlength{\fboxrule}{1pt}
+ \fcolorbox{blue}{webyellow}{%
+ \begin{minipage}{.67\linewidth}
+ \noindent\textcolor{red}{\textbf{Instructions:}} First, thank
+ you very much for taking the time to fill out this survey of
+ \TeX/\LaTeX{} usage. I will summarize the results, and make
+ them publicly available. The survey has not been commissioned
+ by TUG ({\TeX} User's Group), but is a demo of some of
+ capabilities of my new {\LaTeX} package
+ \textsf{eqExam}.\par\medskip When you have finished, click on
+ the ``Submit'' button to record your responses.\par\medskip
+ \textbf{\textcolor{red}{Note:}} The \textcolor{webblue}{Adobe
+ Reader}, or an \textcolor{webblue}{Acrobat} application
+ (version 5.0 or later) is required to submit this
+ survey.\hfill\mbox{D. P. Story}
+ \end{minipage}}
+ \end{center}
+}
+
+\begin{document}
+
+\maketitle
+
+\begin{exam}{TeXSurvey}
+
+\begin{instructions}[\TeX/\LaTeX.]
+This first block of questions concerns your use of {\TeX/\LaTeX}.
+\end{instructions}
+
+\begin{problem*}
+Experience using \TeX/\LaTeX.
+\begin{parts}
+\item How would you describe yourself in terms of experience using \TeX/\LaTeX?
+\begin{answers}{4}
+\rowsep{1bp}
+\bChoices
+ \Ans0 Novice\eAns
+ \Ans0 Intermediate\eAns
+ \Ans0 Experienced\eAns
+ \Ans0 Package Developer\eAns
+\eChoices
+\end{answers}
+
+\item I have used \TeX/\LaTeX{} for\dots
+\begin{answers}{3}
+\rowsep{1bp}
+\bChoices
+ \Ans0 less than a year\eAns
+ \Ans0 one to two years\eAns
+ \Ans0 two to five years\eAns
+ \Ans0 five to ten years\eAns
+ \Ans0 ten to fifteen years\eAns
+ \Ans0 fifteen to twenty years\eAns
+ \Ans0 more than twenty years\eAns
+\eChoices
+\end{answers}
+
+\end{parts}
+\end{problem*}
+
+\begin{problem}
+Approximately how many hours do you spend using \TeX/\LaTeX{} in a typical week?
+On a per week basis, I use \TeX/\LaTeX\dots
+\begin{answers}{4}
+\rowsep{1bp}
+\bChoices
+ \Ans0 less than an hour\eAns
+ \Ans0 one to two hours\eAns
+ \Ans0 three to five hours\eAns
+ \Ans0 ten hours\eAns
+ \Ans0 more than ten hours\eAns
+\eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+There are many {\TeX} user's groups worldwide, are you a member of one or more?
+\begin{answers}{4}
+\bChoices
+ \Ans0 Yes\eAns
+ \Ans0 No\eAns
+\eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem*}
+The following questions concern your preferred use of \TeX.
+\begin{parts}
+\item\label{whichTeX} Which styles to you predominately use?
+\begin{answers}{4}
+\rowsep{1bp}
+\bChoices[2]
+ \Ans0 Plain \TeX\eAns
+ \Ans0 \LaTeX\eAns
+ \Ans0 Con\TeX t\eAns
+ \Ans0 Other, \makebox[0pt][l]{please specify \fillin{1.25in}{\empty}}\eAns
+\eChoices
+\end{answers}
+
+\item Based on your response to \hyperref[whichTeX]{(\ref*{whichTeX})},
+please explain why you made the choice you did.
+\begin{solution}[.75in]
+\end{solution}
+
+
+\item There are many {\TeX} Systems available for use, commercial,
+shareware, freeware. Which one do you primarily use?
+\begin{answers}{4}
+\rowsep{1bp}
+\bChoices
+ \Ans0 A \TeX{} Live System\eAns
+ \Ans0 te\TeX\eAns
+ \Ans0 Mik\TeX\eAns
+ \Ans0 PC\TeX\eAns
+ \Ans0 Y\negthinspace{\scriptsize\&}\negthinspace Y \TeX{} System\eAns
+ \Ans0 Textures\eAns
+ \Ans0 CMac\TeX\eAns
+ \Ans0 True\TeX\eAns
+ \Ans0 Oz\TeX\eAns
+ \Ans0 Other, \makebox[0pt][l]{please specify \fillin{1.75in}{\empty}}\eAns
+\eChoices
+\end{answers}
+
+\item What is your favorite {\TeX} editor? Specify \fillin{1.75in}{\empty}
+
+\end{parts}
+\end{problem*}
+
+\begin{problem*}
+What operating systems (OS) do you use \TeX?
+
+\setlength\columnseprule{0pt}
+
+\begin{parts}
+
+\item What operating system (OS) runs on the machine you
+most frequently use when working with \TeX/\LaTeX? Select one.
+\begin{multicols}{2}
+\begin{answers}{1}
+\bChoices
+ \Ans0 Windows XP\eAns
+ \Ans0 Windows ME\eAns
+ \Ans0 Windows NT\eAns
+ \Ans0 Windows 2000\eAns
+ \Ans0 Windows 98\eAns
+ \Ans0 Windows 95\eAns
+ \Ans0 Macintosh OS X\eAns
+ \Ans0 Macintosh OS 9\eAns
+ \Ans0 Macintosh OS 8\eAns
+ \Ans0 Macintosh OS 7 or earlier\eAns
+ \Ans0 Unix or Linux\eAns
+ \Ans0 Other, please specify \fillin{1.25in}{\empty}\eAns
+ \Ans0 Don't know\eAns
+\eChoices
+\end{answers}
+\end{multicols}
+
+\item Some people work on multiple platforms, what is your secondary
+OS for working with \TeX/\LaTeX?
+\begin{multicols}{2}
+\begin{answers}{1}
+\bChoices
+ \Ans0 Windows XP\eAns
+ \Ans0 Windows ME\eAns
+ \Ans0 Windows NT\eAns
+ \Ans0 Windows 2000\eAns
+ \Ans0 Windows 98\eAns
+ \Ans0 Windows 95\eAns
+ \Ans0 Macintosh OS X\eAns
+ \Ans0 Macintosh OS 9\eAns
+ \Ans0 Macintosh OS 8\eAns
+ \Ans0 Macintosh OS 7 or earlier\eAns
+ \Ans0 Unix or Linux\eAns
+ \Ans0 Other, please specify \fillin{1.25in}{\empty}\eAns
+ \Ans0 Don't use two systems.\eAns
+\eChoices
+\end{answers}
+\end{multicols}
+
+\end{parts}
+
+\end{problem*}
+
+
+\begin{eqComments}[Seeking Help.]\end{eqComments}
+
+\begin{problem*}
+These questions concern any problems you may have with \TeX/\LaTeX{} and resources available to you.
+\begin{parts}
+\item Do you struggle on alone (with \TeX/\LaTeX ) if things are going wrong, or do you
+ seek help?
+ \begin{answers}{3}
+ \bChoices
+ \Ans0 Struggle on along\eAns
+ \Ans0 Seek help from a friend or colleague\eAns
+ \Ans0 Seek help from a public forum\eAns
+ \eChoices
+ \end{answers}
+
+\item Do you use on-line resources?
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes, I use \makebox[0pt][l]{\fillin{1.75in}{\empty}}\eAns
+ \eChoices
+ \end{answers}
+
+\goodbreak
+
+\item Do you seek help from \texttt{comp.text.tex}?
+ \begin{answers}{3}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes, I read the postings occasionally\eAns
+ \Ans0 Yes, I read the postings regularly\eAns
+ \Ans0 Yes, I even ask questions\eAns
+ \Ans0 Yes, I answer questions on occasion\eAns
+ \Ans0 Yes, I regularly answer questions\eAns
+ \eChoices
+ \end{answers}
+\end{parts}
+\end{problem*}
+
+\begin{problem*}
+The \textsf{CTAN} Archive.
+\begin{parts}
+\item\label{CTAN} Do you know about \textsf{CTAN} (Central {\TeX} Archive Network)?
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes\eAns
+ \eChoices
+ \end{answers}
+
+\item If you answered ``Yes'' to question~\hyperref[CTAN]{(\ref*{CTAN})}, approximately, how often
+ do you use this archive?
+ \begin{answers}{3}
+ \bChoices
+ \Ans0 Once or twice a month\eAns
+ \Ans0 three to five times per month\eAns
+ \Ans0 More than five times per month\eAns
+ \eChoices
+ \end{answers}
+
+\end{parts}
+\end{problem*}
+
+\begin{problem*}
+The {\TeX} \textsf{FAQ} Resource.
+\begin{parts}
+\item\label{FAQ} Do you know there is a {\TeX} \textsf{FAQ} online resource? (\texttt{http://www.tex.ac.uk/faq})
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes\eAns
+ \eChoices
+ \end{answers}
+
+\item\label{FAQ1} If you answered ``Yes'' to question, \hyperref[FAQ]{(\ref*{FAQ})} have you ever used the \textsf{FAQ}?
+ \begin{answers}{4}
+ \bChoices
+ \Ans0 No\eAns
+ \Ans0 Yes, \makebox[0pt][l]{how often? \fillin{1in}{\empty} per year.}\eAns
+ \eChoices
+ \end{answers}
+\end{parts}
+\end{problem*}
+
+\begin{problem}
+In terms of paper publications, what are the titles of the books you use for a reference to your
+work in \TeX/\LaTeX? Please list titles/authors in the space provided below.
+\begin{solution}[1.8in]
+\end{solution}
+\end{problem}
+
+\goodbreak
+\begin{eqComments}[Print and PDF.]\end{eqComments}
+
+\begin{problem}
+What application do you use to create PDF? Adobe Distiller, ps2pdf, other.
+\begin{answers}{3}
+\rowsep{1bp}
+ \bChoices
+ \Ans0 Adobe Distiller\eAns
+ \Ans0 \textsf{ps2pdf} (\textsf{pdfwriter})\eAns
+ \Ans0 \textsf{pdftex}\eAns
+ \Ans0 \textsf{dvipdfm}\eAns
+ \Ans0 Other, \makebox[0pt][l]{please specify \fillin{1.75in}{\empty}}\eAns
+ \eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+Describe the reasons you create PDF document from a \TeX/\LaTeX{} source. Is it for
+distribution over the Internet; to create interactive, high
+content materials; for business purposes? Please elaborate in the
+space provided below.
+\begin{solution}[.75in]
+\end{solution}
+\end{problem}
+
+\begin{problem}
+Do you use {\TeX/\LaTeX} primarily for creating printable documents, or for creating
+a PDF document suitable for publication on the Internet, or distribution to a colleague?
+\begin{answers}{3}
+ \bChoices
+ \Ans0 Exclusively for print\eAns
+ \Ans0 Mostly for PDF\eAns
+ \Ans0 About half and half\eAns
+ \eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+If you have any experience or knowledge of commercial publishing
+houses that use a \TeX/\LaTeX{} or \textsf{pdftex} work flow for
+prepress typesetting, please list publishing houses and countries
+in the space provided below.
+\begin{solution}[.75in]
+\end{solution}
+\end{problem}
+
+\begin{eqComments}[Population Demographics.]
+The next set of questions concern you.
+\end{eqComments}
+
+\begin{problem}
+My gender is \dots
+\begin{answers}{5}
+ \bChoices
+ \Ans0 Male\eAns
+ \Ans0 Female\eAns
+ \Ans0 \makebox[0pt][l]{Prefer not to disclose}\eAns
+ \eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+I am \fillin{.75in}{\empty} years old.
+\end{problem}
+
+\begin{problem}
+Which of the following best describes your status as
+an \TeX{} user today? Select one:
+
+\begin{answers}{1}
+ \bChoices
+ \Ans0 Use as a student\eAns
+ \Ans0 Use as an educator/trainer\eAns
+ \Ans0 Use at home for personal use or as a hobby\eAns
+ \Ans0 Use for a home-based business\eAns
+ \Ans0 Use in a company or business (non-home based)\eAns
+ \eChoices
+\end{answers}
+\end{problem}
+
+\begin{problem}
+What is your country of residence? Select one:
+
+\setlength\columnseprule{0pt}
+
+\begin{multicols}{2}
+\begin{answers}{1}
+ \bChoices
+ \Ans0 United States of America\eAns
+ \Ans0 Canada\eAns
+ \Ans0 Other Americas, \mbox{specify: \fillin{1.24in}{\empty}}\eAns
+ \Ans0 United Kingdom\eAns
+ \Ans0 France\eAns
+ \Ans0 Germany\eAns
+ \Ans0 Sweden\eAns
+ \Ans0 Netherlands\eAns
+ \Ans0 Other Europe, \mbox{specify: \fillin{1.25in}{\empty}}\eAns
+ \Ans0 Japan\eAns
+ \Ans0 Hong Kong/Taiwan\eAns
+ \Ans0 China\eAns
+ \Ans0 Other Asia, \mbox{specify: \fillin{1.25in}{\empty}}\eAns
+ \Ans0 Australia\eAns
+ \Ans0 New Zealand\eAns
+ \Ans0 Africa, \mbox{specify: \fillin{1.25in}{\empty}}\eAns
+ \eChoices
+\end{answers}
+\end{multicols}
+\end{problem}
+
+\def\myDing{\makebox[0pt][r]{\textcolor{red}{\ding{042}}\enspace}}
+
+\begin{eqComments}[]%
+\myDing If your company/organization uses \TeX/\LaTeX/\textsf{pdftex} in their business work flow,
+please answer questions \textbf{\textcolor{blue}{\ref*{buss1}}} and \textbf{\textcolor{blue}{\ref*{buss2}}}.
+\end{eqComments}
+
+\begin{problem}\label{buss1}
+How many employees work at your company including all
+sites? Select one:
+
+\setlength\columnseprule{0pt}
+\begin{multicols}{3}
+\begin{answers}{1}
+ \bChoices
+ \Ans0 One/work alone\eAns
+ \Ans0 2 - 9\eAns
+ \Ans0 10 - 49\eAns
+ \Ans0 50 - 99\eAns
+ \Ans0 100 - 499\eAns
+ \Ans0 500 - 999\eAns
+ \Ans0 1000 - 2999\eAns
+ \Ans0 3000 - 4999\eAns
+ \Ans0 5000 or more\eAns
+ \Ans0 Don't know\eAns
+ \eChoices
+\end{answers}
+\end{multicols}
+\end{problem}
+
+\begin{problem}\label{buss2}
+What is your company/organization's PRIMARY industry? Select one:
+
+\setlength\columnseprule{0pt}
+
+\begin{multicols}{2}
+\begin{answers}{1}
+ \bChoices
+ \Ans0 Aerospace\eAns
+ \Ans0 Automotive\eAns
+ \Ans0 Computer hardware\eAns
+ \Ans0 Computer software\eAns
+ \Ans0 Education\eAns
+ \Ans0 Engineering\eAns
+ \Ans0 Financial services\eAns
+ \Ans0 Government\eAns
+ \Ans0 Graphic design/fine art\eAns
+ \Ans0 Healthcare/social services\eAns
+ \Ans0 Insurance\eAns
+ \Ans0 Legal\eAns
+ \Ans0 Manufacturing\eAns
+ \Ans0 Membership organizations - religious, nonprofit, trade unions\eAns
+ \Ans0 Military\eAns
+ \Ans0 Pharmaceuticals/bio tech\eAns
+ \Ans0 Professional services (documentation)\eAns
+ \Ans0 Professional services (technical/IT/Internet)\eAns
+ \Ans0 Printing and publishing\eAns
+ \Ans0 Public and protective services (police, fire)\eAns
+ \Ans0 Retail\eAns
+ \Ans0 Telecommunications\eAns
+ \Ans0 Transportation\eAns
+ \Ans0 Travel\eAns
+ \Ans0 Wholesale\eAns
+ \Ans0 Other, \mbox{please specify: \fillin{1.25in}{\empty}}\eAns
+ \eChoices
+\end{answers}
+\end{multicols}
+\end{problem}
+
+\begin{eqComments}[Improvements in \TeX.]\end{eqComments}
+
+\begin{problem}
+What you most like to see improved in \TeX/\LaTeX? Use the space provided
+below:
+\begin{solution}[2in]
+\end{solution}
+\end{problem}
+
+
+\begin{eqComments}[Thank You] once again for participating in this survey.\end{eqComments}
+\begin{eqComments}[\GoToSubmit]
+Click on the left arrow to return to the first page to submit your responses.\end{eqComments}
+
+
+
+\end{exam}
+\end{document}
diff --git a/texmf-dist/source/latex/eqexam/doc/eqexamman.tex b/texmf-dist/source/latex/eqexam/doc/eqexamman.tex
new file mode 100644
index 00000000..c8ec9c86
--- /dev/null
+++ b/texmf-dist/source/latex/eqexam/doc/eqexamman.tex
@@ -0,0 +1,4611 @@
+\documentclass{article}
+%\usepackage{makeidx,showidx}
+\usepackage[fleqn]{amsmath}
+\usepackage{graphicx}
+\usepackage[
+ web={designv,
+ latextoc,forcolorpaper,
+ centertitlepage},
+ eforms
+]{aeb_pro}
+%\usepackage[designv,
+% latextoc,forcolorpaper,
+% centertitlepage]{web}
+%\usepackage{eforms}
+
+%\usepackage[nopoints,fortextbook,nomarginwrite,usecustomdesign]{eqexam}
+%\usepackage{longtable,colortbl}
+%\useFullWidthForPaper
+
+\usepackage{eqexaman}
+
+%\usepackage{srcltx}
+
+\hfuzz=1pt
+
+\def\AEBBook{\textsl{{Acro\!\TeX} eDucation System Tools: {\LaTeX} for interactive PDF documents}}
+\def\AEBP{\textsf{AeB Pro}}
+
+\DeclareFontFamily{U}{wi}{}
+\DeclareFontShape{U}{wi}{m}{n}{<-> wingding}{}
+\DeclareFontFamily{U}{webd}{}
+\DeclareFontShape{U}{webd}{m}{n}{<-> webdings}{}
+
+\font\zqacr=zqacr at 8pt
+
+
+
+\setlength{\mathindent}{\leftmargini}
+%\def\meta#1{\textit{$\langle$#1$\rangle$}}
+
+\makeatletter
+
+%\def\numberline#1{{\setlength{\fboxsep}{0pt}\fbox{\hb@xt@\@tempdima{#1\hfil}}}}
+
+%\renewcommand*\l@section{\addvspace{2pt}\@dottedtocline{1}{1.5em}{2.5em}}
+\renewcommand*\l@subsection{\addvspace{1pt}\@dottedtocline{2}{1.5em}{3em}}
+\renewcommand*\l@subsubsection{\addvspace{1pt}\@dottedtocline{3}{4.5em}{1.2em}}
+
+%\renewcommand*\l@subsubsection{\addvspace{1pt}\@dottedtocline{3}{7.4em}{1.2em}}
+
+%\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
+%\renewcommand*\l@subsection{\@dottedtocline{2}{4.8em}{3.4em}}
+%\renewcommand*\l@subsubsection{\@dottedtocline{3}{8.2em}{1.2em}}
+%\renewcommand*\l@subsubsection{\@dottedtocline{3}{7em}{1.2em}}
+
+
+\newcommand{\exAeBBlogPDF}[2][\urlAcroTeXBlog/]{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\vskip\medskipamount\noindent\makebox[0pt][r]{%
+ \makebox[0pt][l]{\textcolor{blue}{\Pisymbol{webd}{254}}}%
+ \raisebox{-2pt}{\color{red}\href{#1?#2}{{\zqacr b\hspace{9.5pt}}}}\enspace}\ignorespaces}
+
+\newcommand{\exAeBBlogArticle}[2][\urlAcroTeXBlog/]{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\vskip\medskipamount\noindent\makebox[0pt][r]{\makebox[0pt][l]{\hspace{-1pt}\textcolor{blue}{\Pisymbol{webd}{254}}}%
+\raisebox{.5pt}{\color{red}\href{#1?#2}{\ding{045}}\hspace{7.5pt}\enspace}}\ignorespaces}
+\definePath{\urlAcroTeXBlog}{http://www.acrotex.net/blog}
+
+\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\hardspace{{\fontfamily{cmtt}\selectfont\symbol{32}}}
+\def\AcroBlog{{Acro\!\TeX} Blog}
+\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\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{\kern0pt\itshape\small
+ \ifusebw\color{gray}\else\color{blue}\fi
+ \raggedleft\hspace{0pt}}
+\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$}}}
+
+
+%\makeindex
+
+\title{The \texorpdfstring{\textsf{eqexam} Package\\}{eqexam Package, }
+part of the\texorpdfstring{\\Acro\TeX}{AcroTeX} eDucation Bundle}
+\author{D. P. Story}
+\subject{%
+ A LaTeX package for creating Test, quizzes, both for paper and for
+ online use; supports writing problems sets for textbook authors.%
+}
+\keywords{LaTeX, hyperref, PDF, exercises, quizzes}
+\university{{\AcroT} Software Development Team}
+\email{dpstory@acrotex.net}
+\version{v4.9, 2017/03/16}
+\copyrightyears{2005-\the\year}
+
+\chngDocObjectTo{\newDO}{doc}
+\begin{docassembly}
+var titleOfManual="The eqexam Manual";
+var manualfilename="Manual_BG_Print_eqexam.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
+
+\tableofcontents
+
+\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 16, 2016
+\end{flushright}
+
+\section{Introduction}
+
+In my classroom work at The University of Akron, I've been using a
+personal {\LaTeX} package, which is called \textsf{eqexam}, for creating
+my in-class tests, quizzes, homework assignments, and review documents
+(pre-tests/sample tests). In recent weeks---at the end of the Fall
+Semester, 2004, and prior to the Spring Semester, 2005, I have filled the
+mundane and boring days with work on \textsf{eqexam}, fixing and enhancing
+it quite a bit.
+
+The \textsf{eqexam} package is a stand-alone for {\LaTeX}, but is also
+tightly integrated with the {\cAcroEB}. \textsf{eqexam} will be
+distributed by itself, as well as a part of the {\cAcroB}. The integration
+with the {\AcroB} gives it many of the online features that users of the
+Bundle are familiar with.
+
+\newtopic (Version 3.0 or later) The method of formatting an \textsf{eqexam}
+document has changed, each \texttt{problem}/\texttt{problem*} environment
+is now in a list environment, the \texttt{eqequestions} environment. This
+environment is not normally used by the document author, but its
+parameters may be redefined. The purpose of this reformatting, is to open
+up \textsf{eqexam} for use by other packages. Textbook authors can now, I
+hope, easily integrate \textsf{eqexam} into the custom book format
+being used.
+
+\newtopic Let's have an overview of the package, with suggestions for
+possible uses.
+\begin{enumerate}
+ \item The first, and most obvious application of this package
+ is to create a \textcolor{blue}{pExam} or a
+ \textcolor{blue}{pQuiz}. (Here, the `\textcolor{blue}{p}'
+ prefix refers to \underline paper or \underline pulp; thus, we
+ can use \textsf{eqexam} to write paper Exams and/or pulp
+ Quizzes). You can write the questions and the solutions, and
+ publish (i.e., print the document on a printer) the exam/quiz
+ with no solutions---ready to be taken in class---, or {\LaTeX}
+ the source document with solutions listed after each question
+ to create an answer key, for your personal use, or for the use
+ by the class.
+
+ \item So much for pulp. Now on to `\textcolor{blue}{e}' (for
+ electronic publication). In some of my classes, I put sample
+ questions (review tests) on the web as {\PDF} documents. In
+ this case, you can create a {\PDF} document without the
+ solutions, and give the class time to solve the problems; then
+ publish the document (in {\PDF} on the web) with solutions.
+ The solutions can appear immediately after the questions, or
+ can be accumulated at the end of the document.
+
+ \item[] In the case where the solutions are at the end of the
+ document, you can add links from the question to the solution.
+
+ \item[] Documents can be published with color (to enhance the
+ on screen appearance) or can be published in black and white,
+ meant to be printed. Or, you can do both: a screen
+ version and a paper version.
+
+ \item By invoking the \texttt{online} option, the white space
+ left for hand-written answers to the questions become Acroform
+ multi-line text fields, multiple choice questions become radio
+ buttons, and fill-in questions also become text fields. The
+ student can bring up the exam, and take it at a computer (in a
+ CBT\footnote{Computer Based Testing.} lab). After the student
+ is finished, he/she can print out the exam, and submit it to
+ the instructor for traditional grading.
+
+ \item Now, here is an exciting feature of the \textsf{eqexam}
+ package, that of email submittal! This feature is not too
+ useful for technical fields (i.e., mathematics related fields)
+ that require students to enter special symbols, but for some
+ academic disciplines (English, History, Sociology, Politics
+ and Government, etc.) this feature could be quite
+ exciting.\footnote{Of course, I am addressing now the some six
+ people worldwide in these fields that use {\LaTeX} and \PDF!
+ For you six, this feature is for you!}
+
+ \item[] When you take the \texttt{email} option of
+ \textsf{eqexam}, as with the \texttt{online} option, the white
+ space left for hand-written answers to the questions become
+ Acroform multi-line text fields, multiple choice questions
+ become radio buttons, and fill-in questions also become text
+ fields. Additionally, a button is automatically provided to
+ submit by email the results of the test to the instructor. The
+ results arrive at the instructor's mailer as an {\FDF}
+ attachment. The instructor can open the {\FDF} and view in the
+ originating {\PDF} the responses given by the student.
+
+ \item[] The instructor can print out the document and grade in
+ a traditional way, or if the instructor has
+ \textbf{Acrobat~Pro} or \textbf{Standard}, the instructor can
+ use mark-up annotations within the PDF, save a copy of the
+ students test to a class folder, and email a copy of the
+ students exam, marked up with grade.\footnote{Seems doubtful
+ that anyone at this time has the expertise to do this! But
+ it's available if anyone ever wants it.}
+
+ \item[] If the exam is given for credit, it can be taken in a
+ secure lab.
+
+ \item Perhaps a more reasonable application of this email
+ submission feature of \textsf{eqexam} is the building and
+ publication of surveys and questionnaires! Perhaps
+ teacher evaluations! The environments of \textsf{eqexam} can
+ be easily used to write surveys and questionnaires to
+ solicit the opinion of a target population. Responses are
+ emailed to the designated person, who can summarize them.
+
+ \item[] By the way, speaking of summarizing results, a new
+ feature of \textbf{Acrobat Pro~7.0}, allows you to take a
+ folder of {\FDF} files, such as the ones created by email
+ submission, and extract all form fields and place results to a
+ comma-delimited file (\texttt{.csv}). This comma-delimited
+ file can be opened by a spreadsheet program and manipulated.
+ Cool.
+
+ \item (08/05/11) Version 3.0 of \textsf{eqexam} has a major option,
+ \texttt{fortextbook},\footnote{The \texttt{fortextbook} option is briefly
+ described on page~\pageref*{fortextbook}.} designed to support (U.S.)
+ textbook authors. Documentation for this option is found in the
+ \texttt{doc/fortextbook} folder. See also the series of blogs at the
+ \ulSetLink{http://www.acrotex.net/blog/?tag=fortextbook}{{Acro\TeX} Blog}.
+
+\end{enumerate}
+
+%\subsection{What's New}
+%
+%\begin{enumerate}
+%
+% \item (Version 1.7) Added the ability to randomize items in a
+% multiple choice/selection list. See \Nameref{s:random} and the
+% \texttt{allowrandomize} option, as listed in \Nameref{eqoptions}.
+%
+% \item (Version 1.6) In this version, I've added the command
+% \cs{thisterm} (see \Nameref{preamble}) and expanded the control of
+% multiple versions. Now you can have up to $26$ versions of the same
+% test! For details of this new multiple version scheme, see the
+% discussion in \Nameref{mutiVerNew}.
+%
+% \item[] Also added are \cs{forproblem} and \cs{foritem}. See \mlNameref{solnSets}.
+%
+% \item (Version 1.4) Added a \texttt{manswers} environment for
+% multiple choice questions where multiple selections are permitted.
+% \textsf{Exerquiz} version 6.04 or greater is required with the
+% \texttt{online} and \texttt{email} options. See the section
+% \Nameref{multiSelect} for details.
+%
+% \item (Version 1.3) Added in the \cs{bChoices} and
+% \cs{eChoices} pair for specifying multiple choice
+% alternatives. See the brief discussion in
+% the section \Nameref{multichoice}.
+%\end{enumerate}
+
+\section{Required and Optional Packages}
+
+The following packages that are not part of the normal {\LaTeX}
+distribution are \emph{required}:
+\begin{enumerate}
+\item \texttt{calc}: Used for calculation of the position of the
+ marginal points.
+
+\item \texttt{pifont}: Used when the \texttt{proofread} option is
+ used to indicate the correct answers to multiple choice questions.
+
+\item \texttt{comment}: Used to have optional content, useful for
+ developing exams for multiple sections of the same class.
+
+\item \texttt{multicol}: Used to create questions in multi-column mode.
+
+\item \texttt{verbatim}: Used to write solutions to the hard drive.
+\end{enumerate}
+
+\noindent Additionally, the following packages may be used
+depending on the options chosen:
+\begin{enumerate}
+\item \texttt{web}: Used when the \texttt{pdf}, \texttt{links},
+ \texttt{online} or the \texttt{email} option is taken.
+
+\item \texttt{exerquiz}: Used when the
+ \texttt{links}, \texttt{online} or the \texttt{email} option is
+ taken.
+\end{enumerate}
+Of course, \texttt{web} and \texttt{exerquiz}, in turn, input a
+whole plethora of packages. Consult the documentation for the
+\cAcroEB.
+
+\section{Installing \textsf{eqexam}}
+
+Create a folder in your \texttt{latex} search path named
+\textsf{eqexam} and place the package files \texttt{eqexam.dtx},
+\texttt{eqexam.ins}, \texttt{eqexam.def} and any \texttt{.cfg}
+files. (If you have an \texttt{acrotex} folder, you can place the
+files there as well.)
+
+Next, \texttt{latex} \texttt{eqexam.ins} to create
+\texttt{eqexam.sty} and \texttt{eqalone.def}. The other files
+(\texttt{*.tex} and \texttt{*.pdf}) can be placed anywhere.
+
+The \textsf{eqexam} is a stand alone package that is tightly
+integrated with the \cAcroB. The file \texttt{eqexam.def} comes
+from the {\cAcroB} to provide the necessary support for many of
+the commands and environments defined in \textsf{eqexam}. The file
+\texttt{eqalone.def} are miscellaneous definitions that are needed
+for the stand-alone version. When you choose one of the options
+\texttt{links}, \texttt{online} or \texttt{email}, then
+\textsf{Exerquiz} is included in the package files. When you use
+one of these options you will need the most recent version of the
+\cAcroEB, the one published concurrently with this package.
+
+\section{Demonstration files}
+
+\exAeBBlogPDF{cat=107} The original
+\href{\urlAcroTeXBlog/?cat=107}{\pkg{eqexam} demonstration files} are posted
+on the \href{\urlAcroTeXBlog/}{{Acro\TeX} Blog}. Throughout the manual, individual
+files are references and a link is provided to that resource. The source file is attached
+to all PDFs on the {Acro\TeX} Blog website.
+
+\exAeBBlogPDF{tag=eqexam-package}
+Additional demonstration files developed after the original set are also available
+from the {Acro\TeX} Blog. See the articles tagged as
+\textit{\href{\urlAcroTeXBlog/?tag=eqexam-package}{eqexam-package}}.
+
+%http://www.acrotex.net/blog/?tag=eqexam-package
+
+
+\section{Page Layout Considerations}
+
+With Version~3.0, you can design your own page layout scheme, perhaps to
+conform to a book style. The following are some basics on formatting for
+\textsf{eqexam}.
+
+The following two commands appear in \textsf{eqexam}, the first sets some basic
+page parameters.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\newcommand{\eqeSetExamPageParams}{%
+ \setlength{\headheight}{12pt}
+ \setlength{\topmargin}{-.5in}
+ \setlength{\headsep}{20pt}
+ \setlength{\oddsidemargin}{0pt}
+ \setlength{\evensidemargin}{0pt}
+ \setlength{\marginparsep}{11pt}
+ \setlength{\marginparwidth}{35pt}
+ \setlength{\footskip}{11pt}
+}
+\end{Verbatim}
+The second command calculates values for \cs{textwidth} and \cs{textheight}
+based on the the settings of the first command.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\newcommand{\eqExamPageLayout}{%
+ \setlength\textwidth\paperwidth
+ \addtolength{\textwidth}{-2in}
+ \addtolength{\textwidth}{-\oddsidemargin}
+ \setlength\textheight{\paperheight}
+ \addtolength\textheight{-2in}
+ \addtolength\textheight{-\headheight}
+ \addtolength\textheight{-\headsep}
+ \addtolength\textheight{-\topmargin}
+ \addtolength\textheight{-\footskip}
+}
+\end{Verbatim}
+When the package option \texttt{usecustomdesign} \textit{is not taken,}
+then the two commands \cs{eqeSetExamPageParams} and \cs{eqExamPageLayout}
+are executed immediately after the above definitions. These are the
+original parameters used by \textsf{eqexam}, designed to yield a maximum
+text body in which to typeset an exam. The margins are set at 1 inch, the
+\cs{topmargin} is raised up, all to maximize space.
+
+Now, if the package option \texttt{usecustomdesign} is specified, the
+commands \cs{eqeSet\-Exam\-Page\-Params} and \cs{eqExamPageLayout} are \emph{not
+executed}, the package designer can either do a \cs{renewcommand} for
+these two commands in the preamble with custom values inserted (and
+execute \cs{eqeSetExamPageParams} and \cs{eqExamPageLayout}), or the
+designer may use another package to set the page layout parameters (or
+take the default of the class being used). In the latter case,
+neither \cs{eqeSetExamPageParams} nor \cs{eqExamPageLayout} should be executed.
+
+\newtopic The following commands directly effect how the problems are
+displayed within an \textsf{eqexam} environment.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\eqexammargin{\normalsize\normalfont\bfseries00.\ }
+\end{Verbatim}
+The command \cs{eqexammargin} is a convenient way of specifying the
+\cs{labelwidth} as set by the \texttt{eqequestions} environment (see
+below). The command uses \cs{settowidth} to set the \cs{eqemargin} length.
+The \cs{eqemargin} may also be set directly with \cs{setlength}.
+\cs{eqexammargin} can be executed anytime between exam environments (or
+even between problems, though this is not a intuitive option). Normally it
+is executed once for the entire document; but may be executed multiple
+times to change margins.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\newcommand{\widthtpboxes}{35pt}
+\end{Verbatim}
+This command sets the width of the boxes that appear in the right margin
+when one of more of the options \texttt{pointsonright},
+\texttt{pointsonboth}, \texttt{totalsonleft}, \texttt{totalsonright}, are
+used. These boxes are used for exams, and not relevant for problem sets of
+textbooks. Normally, this parameter is not redefined.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\newenvironment{eqequestions}{%
+ \begin{list}{}{%
+ \setlength{\labelwidth}{\eqemargin}%
+ \setlength{\topsep}{3pt}\setlength{\parsep}{0pt}%
+ \setlength{\itemindent}{0pt}\setlength{\itemsep}{3pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \settowidth{\labelsep}{\ }%
+ }\item\relax}{\end{list}}
+\end{Verbatim}
+This environment is opened at the beginning of a \texttt{problem}
+(\texttt{problem*}), and closed at the end of these environments.
+
+\section{Building an Exam}
+
+In this section, we outline the steps to create an exam using the
+\textsf{eqexam} package. Consult the sample exams for additional
+examples.
+
+\subsection{The Preamble}\label{preamble}
+
+Of course, we begin with the standard article class, and the
+\textsf{eqexam} package:
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\documentclass{article}
+\usepackage[!meta(options)]{eqexam}
+\end{Verbatim}
+\noindent The \meta{options} are discussed in
+section~\ref{eqoptions}. Next comes a exam identification
+information:
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\title[T1]{Test 1}
+\subject[C1]{Calculus I}
+\author{D. P. Story}
+\keywords{Calculus I, Section 004}
+\university{%
+ THE UNIVERSITY OF AKRON\\
+ Mathematics and Computer Science
+}
+\date{\thisterm, \the\year}
+\duedate{October 17, 2005}
+\end{Verbatim}
+\noindent The \cs{title}, \cs{subject}, \cs{author} and \cs{date}
+are the same as is used in the \textsf{web} package. These are
+used by the standard {\LaTeX} macro to create the heading line of
+the first page of the exam, and are used in the running headers.
+
+The \cs{title}, \cs{subject} have optional first arguments, where
+you can list a shorted version of the title or the subject. The
+shortened versions, if present, are used in the running headers.
+
+The \cs{keywords} is used when you publish your exam in {\PDF} and
+you use the \texttt{pdf} option (or \texttt{online}, \texttt{links},
+\texttt{email}). The value of the argument of \cs{keywords} appears
+in the keywords field of the document info dialog.
+
+When you take the \texttt{coverpage} option, the value of
+\cs{university} is used, along with some of the others on the
+cover page.
+
+I've also defined a keyword of \cs{duedate}, this might be useful
+when using \textsf{eqexam} to create homework assignments with a
+due date, or just to record the date of the exam. The argument of \cs{duedate} fills the text macro
+\cs{theduedate}. So that if you say \verb|\duedate{05/31/06}|, the macro
+\cs{theduedate} will expand to `05/31/06'.
+
+\newtopic Beginning with version~1.6, \cs{thisterm} is defined.
+The academic year of many American universities are divided into semesters
+(or terms); Fall, Spring, and Summer. The command \cs{thisterm} takes the current
+date and determines if it is the Fall, Spring or Summer Semester. For example,
+if the date of the compile is October 17, 2005, then \verb!\thisterm, \the\year!
+expands to `Fall, 2005'. This command is useful with the \cs{date} command.
+
+The command \cs{thisterm} can be redefined to conform to the terms
+of the document author's university. See the definition in
+\texttt{eqexam.dtx}, copy and modify it.
+
+\subsection{The \texttt{exam} Environment}\label{exam}
+
+An exam is contained within the \texttt{exam} environment.
+
+One of the things that I do in my courses, especially for the
+final exam, is to have a two-part exam. Typically, the first part
+is worth $100$ points and covers the new material not already
+tested; the second part is usually a $50$ point review. I grade
+these two parts separately and record them separately. Therefore,
+an \textsf{eqexam} test may contain one or more \texttt{exam}
+environments.\footnote{Remember, this was originally a personal
+package, meant to suit my own needs.}
+
+\newtopic After the preamble, we then say
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{document}
+
+\maketitle
+
+\begin{exam}[Part I.]{Part1}
+
+\begin{instructions}[Part I.]
+Solve each of the problems without error. If you make an error,
+points will be subtracted from your total score.
+\end{instructions}
+...
+...
+...
+\end{exam}
+
+\begin{exam}[Part II.]{Part2}
+
+\begin{instructions}[Part II.]
+The following is a short review of previously mastered material.
+\end{instructions}
+...
+...
+...
+\end{exam}
+\end{document}
+\end{Verbatim}
+After the \verb+\begin{document}+ and standard \cs{maketitle}, we begin an
+exam by opening an \texttt{exam} environment.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{exam}[\meta{friendly\_name}]\darg{\meta{exam\_name}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{exam}[!meta(friendly_name)]{!meta(exam_name)}
+...
+\end{exam}
+\end{dCmd}
+\noindent This environment has two arguments: the first optional, the second
+required. The first argument is a user friendly name (used when the solutions
+are listed at the end of the document when there are multiple \texttt{exam}
+environments); the second required argument is the name of the of the exam,
+\texttt{Part1} or \texttt{Part2}, for example. This argument is used to build
+the names of the PDF Acroform field names. This argument should consist of
+letters and numbers only. You can use the command \cs{autoExamName} for the
+\meta{exam\_name}; this command will name each \texttt{exam} environment
+\texttt{exam1}, \texttt{exam2}, \texttt{exam3}, etc.
+
+Following the opening of the exam, typically, the instructor would have
+some instructions, this is the purpose of the \texttt{instructions}
+environment. It has one optional argument, heading text for the
+instructions; if this optional parameter is not provided, then the default
+word is used, the default word is determined by \cs{defaultInstructions},
+its default definition is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\defaultInstructions{Instructions.}
+\end{Verbatim}
+Following this label, the total number of points for this part is
+inserted, unless the \texttt{nosummarytotals} option is taken.
+
+\redpoint The optional argument of the \texttt{instructions}
+environment has a color associated with it, and is visible when you
+compile the document with the \texttt{forcolorpaper} option. This
+color can be set by the command \cs{instructionsColor}; this command
+takes a single argument, a named color:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\instructionsColor{blue}
+\end{Verbatim}
+\noindent The above is the default definition.
+
+
+\newtopic At this point, you would insert your questions. Following the
+listing of all the questions (and optionally, their solutions), you
+finish up by closing out the \texttt{exam} environment.
+
+Repeat, if additional parts to the exam are desired. Finally,
+finish off the document with \verb+\end{document}+.
+
+\redpoint You must \texttt{latex} your document \emph{three times} to be
+sure all points have been properly calculated.
+
+\subsection{The \texttt{problem} and \texttt{problem*} Environments}
+
+All questions are posed using the \texttt{problem} and
+\texttt{problem*} environments. The former is for a single
+question, the latter is for a question with multiple parts.
+
+\subsubsection{\texttt{problem}}\label{problem}
+
+The \texttt{problem} encloses a single question; the question
+itself may contain special constructs such as one or more fill-in
+the blanks.
+
+The syntax for \texttt{problem} is
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont,
+ commandchars=!()]
+\begin{problem}[!meta(num)|*!meta(num)|empty][h|H]
+!anglemeta(Statement of question, which may contain special constructs)
+...
+...
+\begin{solution}[!meta(vspace)]
+...
+...
+\end{solution}
+\end{problem}
+\end{Verbatim}
+\noindent The environment takes two optional arguments. The first
+argument \meta{num} is the number of points for this problem, for
+example, if we want to have a $5$ point question, we would begin the
+environment like so, \verb+\begin{problem}[5]+; on the other hand, if we
+say \verb+\begin{problem}+, the problem has no points associated with it.
+If you specify points weight for a problem, the points appear in the
+margins (when one of the option \texttt{pointsonleft},
+\texttt{pointsonright}, or \texttt{pointsonboth} is specified); if the
+\texttt{*} form is specified (\meta{*num}), the point weight appears
+``in-line,'' just after the problem number; thus, typesetting a problem
+with the specification \verb!\begin{problem}[*5]! yields
+\begin{quote}
+\textbf{1.} (5 pts) \dots
+\end{quote}
+This is useful when the problems are put into a two-column format; the
+problems in the right-hand column do not have the margin to hold the
+points, in this case, we place the points ``in-line.''
+
+\newtopic The \texttt{problem} is actually a redefined \texttt{exercise}
+environment, as defined in \textsf{exerquiz}. The second parameter
+is inherited from the \texttt{exercise} environment. The second
+argument can optionally be an \texttt{h} or a \texttt{H}.
+
+Use \texttt{h} if you do not want the solution to appear at the
+end of document (when you do not use the \texttt{nosolutions} or
+the \texttt{solutionsafter} options); the solution, however, will
+appear if the \texttt{solutionafter} option is specified.
+
+For the \texttt{H} argument, the solution will not appear at the
+end of the document (just as in \texttt{h}), nor will it appear if you
+specify the \texttt{solutionsafter} option.
+
+To make things work correctly, if you do not want to have points
+for a question and want to hide the solution, use `\texttt{[]}'
+(empty brackets with no spaces) for the first argument.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[][H]
+($5$ Points Extra Credit) Solve this problem for extra credit.
+\begin{solution}
+This solution will not appear in all cases, unless the second
+parameter is eliminated or is changed to h, in the latter case,
+the solution appears just for \texttt{solutonsafter}.
+\end{solution}
+\end{problem}
+\end{Verbatim}
+\noindent Here, this problem has no points that will be added into
+the total number of points for the test.
+
+The \texttt{solution} environment encloses the solutions. This environment
+is optional. The environment takes one optional parameter, namely the
+vertical space to leave for the student to work the problem. This vertical
+space is \emph{created only} when the document author takes the
+\texttt{nosolutions} option. For example,
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[10]
+Do this problem.
+\begin{solution}[2in]
+This is the solution.
+\end{solution}
+\end{problem}
+\end{Verbatim}
+\noindent This defines a $10$ point problem and leaves $2$ inches
+of vertical space following the problem statement for the student
+to respond, provided the \texttt{nosolutions} option has been taken.
+
+Be aware that the solution environment searches for its optional
+parameter, and will expand macros looking for a left bracket (\texttt{[}).
+In documents where the optional parameter is not used; this can lead to
+problems in compiling. For example, if you say,
+\verb!\begin{solution} \textbf{My solution:}...!, the command \cs{textbf}
+will be expanded prematurely and result in `My solution' not appearing in
+bold. Similarly, if you write \verb!\begin{solution} \begin{equation}...!
+can lead to compilation stopping. Suggested workarounds:
+\begin{itemize}
+ \item Supply empty brackets: \verb!\begin{solution}[]!
+ \item Use \cs{relax}: \verb!\begin{solution}\relax\textbf{...}!.
+ The \cs{relax} should not be on the line by itself.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{solution}\relax % Not this
+\textbf{...}
+...
+\end{Verbatim}
+The above causes an unwanted newline. The next two examples show the
+``correct'' method.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{solution}\relax\textbf{...} % correct
+...
+\end{Verbatim}
+\noexpand The \cs{relax} appearing on the second line.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{solution}
+\relax\textbf{...} % correct
+...
+\end{Verbatim}
+\end{itemize}
+If you have no need for the vertical space in your document and putting in
+these workarounds is too much trouble, you can use a global solution. Use
+\cs{noSolnOpt} to globally turn off the check for the option parameter by
+the \texttt{solution} environment; \cs{ckSolnOpt} turns on parameter
+checking (the default). To summarize:
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\ckSolnOpt % turn on checking for the optional argument (the default)
+\noSolnOpt % turn off checking for the optional argument
+\end{Verbatim}
+Place either of these two commands between problems to turn off (or back on) the
+parameter checking.
+
+\redpoint See \Nameref{eqoptions} for more details on
+the two options \texttt{nosolutions} and \texttt{solutionsafter}.
+
+\subsubsection{\texttt{problem*}}\label{problemstar}
+
+This environment is used when you want to ask a multi-part
+question, a series of related questions that are to be treated as
+a group.
+
+The syntax is
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont,
+ commandchars=!()]
+\begin{problem*}[!meta(num)|!anglemeta(num)ea|\auto|empty][\Do!anglemeta(do_num)]
+Do each of the following problems, and be quick about it.
+\begin{parts}
+
+\item[h|H] The first question.
+\begin{solution}[1.5in]
+This is the solution to the first problem.
+\end{solution}
+
+\item[h|H] The second question.
+\begin{solution}[3in]
+This is the solution to the second problem.
+\end{solution}
+
+\end{parts}
+\end{problem*}
+\end{Verbatim}
+The \texttt{problem*} environment takes two optional parameters,
+the first one takes one of four values:
+\begin{aebDescript}
+ \item[\meta{num}] When the value of the first parameter is
+ a number, this represents the total number of points for this
+ multi-part question. Here, the instructor does not specify the
+ weight of each part.
+
+ \item[\meta{*num}] The points appear ``in-line'' rather than
+ in the margin.
+
+ \item[\anglemeta{num}\texttt{ea}] When you specify a number followed by
+ `\texttt{ea}' (which is short for \underbar{ea}ch). Thus,
+ `\texttt{[5ea]}' signifies that each part of this problem has
+ weight of $5$ points.
+
+ \item[\texttt{*\anglemeta{num}ea}] The points appear ``in-line'' rather than
+ in the margin.
+
+ \item[\cs{auto}] If the value of the first parameter is
+ \cs{auto}, then the total number of points is calculated
+ automatically from the points defined by the \cs{PTs} macro.
+ The \cs{PTs} would be placed following \cs{item} of each part
+ that is to be given points. For example:
+
+ \item[*\cs{auto}] The points appear ``in-line'' rather than
+ in the margin.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem*}[\auto]
+Do each of the following problems, and be quick about it.
+\begin{parts}
+
+\item\PTs{3} The first question.
+\begin{solution}[1.5in]
+This is the solution to the first problem.
+\end{solution}
+
+\item\PTs{4} The second question.
+\begin{solution}[3in]
+This is the solution to the second problem.
+\end{solution}
+
+\end{parts}
+\end{problem*}
+\end{Verbatim}
+This defines a $7$ point problem.
+
+\item[\texttt{empty}] You need not specify any points at all. In
+this case do not include this first parameter, in which case, the
+second parameter is not used, so don't include it either.
+
+\end{aebDescript}
+
+\noindent Now for a description of the second parameter the
+\texttt{[\cs{Do}\anglemeta{do\_num}]} parameter. In my senior- or graduate-level
+classes, I sometimes ask a questions with multiple parts. As part
+of the instructions for that problem I write, ``Do exactly three
+of the following five problems.'' These questions are usually
+proof-type problems, and they can choose their best three to
+grade. In this context, all parts of the problem must be of the same
+weight; the weight of each is \anglemeta{num} of the \texttt{[\anglemeta{num}ea]}.
+
+This is what \texttt{[\cs{Do}\anglemeta{do\_num}]} does. When you specify
+\texttt{\cs{Do}3}, then only the points of $3$ of the problems are
+added into the exam total. This second parameter is only checked
+if the first parameter is \texttt{[\anglemeta{num}ea]}. For example,
+specifying
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem*}[5ea][\Do3]
+\end{Verbatim}
+creates a $15$ point question. This assumes there are $3$ or
+more parts to this question.
+
+By the way, there are two macros that are defined when the \cs{Do}
+is used, they are \cs{DoNum} and \cs{OutOfNum}; these expand to
+the (English) word for the number of problems to do, and the
+(English) word for the total number of problems. For example, if
+there were five parts to the problem below,\dots
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem*}[5ea][\Do3]
+Solve exactly \textit{\DoNum} of the following {\OutOfNum}
+problems. ....
+\end{problem*}
+\end{Verbatim}
+\noindent The instructions would read, ``Solve exactly
+\textit{three} of the following five problems.'' These macros can
+be easily redefined to reflect other languages. The numbers
+themselves are contained in the two macros \cs{nDoNum} and
+\cs{nOutOfNum}.
+
+\redpoint \texttt{parts} and \cs{item}: For a multi-part problem
+(\texttt{problem*}), the actual problems are enclosed in a
+\texttt{parts} environment, and each question is posed as an
+\cs{item} of that \texttt{list} environment. The command \cs{item}
+takes the \texttt{[h|H]} optional argument. As in the case of the
+\texttt{problem} environment, \texttt{h} prevents the solution
+from appearing at the end of the document (but it appears with
+\texttt{solutionsafter}), and \texttt{H} removes the solution in
+all cases.
+
+\paragraph{\texorpdfstring{\cs{leadinitem}}{\CMD{leadinitem}}}
+When using the \texttt{problem*} environment, there is an introductory sentence
+that sets up the multi-part problem set. For various reasons, some authors
+have asked to be able to pose multi-part questions without the
+introductory sentence. This is harder request than it sounds, but now
+there is the \cs{leadinitem} command. Study the code below.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem*}[\auto]
+\leadinitem\PTs{3} The first question.
+\begin{solution}[1.5in]
+This is the solution to the first problem.
+\end{solution}
+
+\begin{parts}
+\item\PTs{4} The second question.
+\begin{solution}[3in]
+This is the solution to the second problem.
+\end{solution}
+...
+\end{parts}
+\end{problem*}
+\end{Verbatim}
+There is no introductory sentence. The problem starts off with
+\texttt{\cs{leadinitem}\cs{PTs\{3\}} The first question}; this problem
+is stated outside of the \texttt{parts} environment. The rest of the parts
+to this problem are listed, as usual, from within the \texttt{parts} environment.
+Only one \cs{leadinitem} is allowed per \texttt{problem*} environment.
+
+\newtopic The results of this code is viewed as follows, when typeset.
+
+\bigskip
+\noindent\hfill\begin{minipage}{\linewidth-2\leftmargini}
+\noindent\llap{($10^{\text{pts}}$)\quad}\textbf{1.}\ (a)\ The first question.\\[3pt]
+\phantom{\textbf{1.}\ }(b)\ The second question.\\[3pt]
+\phantom{\textbf{1.}\ }\dots
+\end{minipage}
+\bigskip
+
+The general syntax for \cs{leadinitem} is the same as that of the \cs{item} command within the
+\texttt{parts} environment; \verb!\leadinitem[h|H]!, \texttt{h} prevents the solution
+from appearing at the end of the document (but it appears with
+\texttt{solutionsafter} or with \texttt{answerkey}), and \texttt{H} removes the solution in
+all cases.
+
+\subsubsection{Page Breaking}
+
+The \texttt{exam}, \texttt{problem} and \texttt{problem*}
+environments use a (simple) page breaking algorithm to move a
+problem (or the beginning of an exam) to the next page.
+
+If an \texttt{exam} environment begins at the lower third of the
+page, it is moved to the next page. You can influence this page
+break by using \cs{fvsizeskip} just before the beginning of the
+\texttt{exam} environment, like so,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\fvsizeskip{.4}
+\end{Verbatim}
+\noindent \cs{fvsizeskip} takes a decimal number between $0$ and
+$1$. In the example above, the environment will move to a new page
+if it begins in the lower \texttt{.4\cs{textheight}} of the page. The
+default value is $.3$.
+
+There is a similar algorithm for \texttt{problem} and
+\texttt{problem} but is measured as a multiple of
+\cs{baselineskip}. If you place
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\nbaselineskip{8}
+\end{Verbatim}
+\noindent just before a problem that appears near the bottom of
+the page, then it will be moved to the next page if it is within
+\texttt{8\cs{baselineskip}} of the bottom. The default for this
+command is $6$.
+
+\medskip\noindent
+The following are strategies for fitting the maximum
+number of questions on the minimum number of pages.
+\begin{enumerate}
+ \item \textbf{Moving: }Rearrange the order of the questions,
+ if a problem can't fit entirely on a page, you can
+ exchange or move a shorter problem to that place, and move the longer
+ problem to another page.
+
+ \item \textbf{Tweaking: }Modify the space defined by the
+ \texttt{solutions} environment to fit a problem on the page that
+ is below it.
+
+ \item \textbf{Placing work on back: }Using the
+ \hyperref[onbackofpage]{\cs{OnBackOfPage}} command,
+ page~\pageref{onbackofpage}, you can direct the student to
+ answer the question on the back of another page, and thus,
+ little space is needed to follow that
+ question.
+
+ \item \textbf{Working on separate sheets: }Of course, for some
+ types of exams, the exam just contains the questions, and the
+ students answer the questions on separate sheets of paper. For
+ this, you can use the \texttt{nospacetowork} option.
+\end{enumerate}
+
+
+\subsection{Fill-in Questions}
+
+In this section we cover the various fill-in constructs.
+
+\subsubsection{Short Fill-in Questions}
+For a question requiring one or more short fill-in responses,
+\textsf{eqexam} has the \cs{fillin} command, the syntax is
+\settowidth{\aebdimen}{\ttfamily\string\fillin[u|b]\darg{\meta{width}}\darg{\meta{answer}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\fillin[u|b]{!meta(width)}{!meta(answer)}
+\end{dCmd}
+The first optional parameter determines whether the fill-in is
+underlined `\texttt{[u]}' or not `\texttt{[b]}', the default it to
+underline the fill-in. The second is the amount of horizontal
+space you want to leave for the student to write in the response.
+The third argument is the correct answer. This correct answer
+will appear when you compile the document with the
+\texttt{answerkey} option.
+
+\redpoint An example of \cs{fillin}.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[5]
+It is well known that \fillin{1in}{Newton} and \fillin{1in}{Leibniz}
+are jointly credited as the founders of modern calculus.
+\begin{solution}
+It is well known that \underbar{Newton} and \underbar{Leibniz}
+are jointly credited as the founders of modern calculus.
+\end{solution}
+\end{problem}
+\end{Verbatim}
+
+\redpoint When you choose the \texttt{online} or \texttt{email}
+option, \cs{fillin} generates a text field.
+
+When the \texttt{usexkv} option, and if the \textsf{xkeyval} package is available on the
+system, \textsf{eqexam} extends the capability and control of \cs{fillin}.
+See \begin{NoHyper}\Nameref{extendfillin}\end{NoHyper}.
+
+\subsubsection{True/False Questions}
+
+True and false questions are, of course, just a special case of
+fill-in. A special command is available for true/false:
+\settowidth{\aebdimen}{\ttfamily\string\TF[\meta{width}]\darg{\meta{answer}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\TF[!meta(width)]{!meta(answer)}
+\end{dCmd}
+\indent The required parameter, \meta{answer}, is the correct answer (e.g.,
+`T' or `F'). The macro creates an underlined blank space the width of which
+is \meta{wide}. When the \meta{width} is \emph{not specified},
+\cs{defaultTFwidth} (default \texttt{30pt}) is used (and this value can be redefined).
+
+The \cs{TF} command behaves differently from the generic
+\cs{fillin} command. Suppose you want to create a multi-part question
+(using \texttt{problem*}) consisting entirely of true/false
+questions. When an \cs{item} leads off with the \cs{TF} there are two possible
+formatting options: This one:
+
+\begingroup\parskip6pt\parindent30pt
+
+\def\Item#1{\par\hangindent\parindent\indent\llap{#1\enspace}\ignorespaces}%
+\parbox{4in}{\noindent
+ \Item{(a)}\underbar{\hspace{30pt}} Isaac Newton is considered to be one of
+ the founders of Calculus.}
+
+\medskip\noindent or this one:\medskip
+
+
+\def\Item#1{\par\hangindent\parindent\indent\llap{#1\enspace}\ignorespaces}
+\leavevmode\parbox{4in}{\Item{(a)}\underbar{\hspace{30pt}} Isaac Newton is considered to be one of
+ the founders of \hspace*{30pt} Calculus.}
+
+\endgroup
+
+\newtopic The first alignment is the default. To get the second
+alignment, you need to set the value of \cs{fillinWidth} to the
+common width value of the \cs{TF} fields. For example:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\fillinWidth\defaultTFwidth
+\end{Verbatim}
+\noindent When \cs{fillinWidth} is set to a positive length (the
+common width of the \cs{TF} field), the second alignment above is
+created.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem*}[3ea]
+\textit{True} or \textit{False}.
+
+\fillinWidth\defaultTFwidth
+
+\begin{parts}
+
+ \item \TF{T} It is well known that Isaac Newton and
+ Gottfried Leibniz are jointly credited as the founders
+ of modern calculus.
+ ...
+ \item ...
+ ...
+\end{parts}
+\end{problem*}
+\end{Verbatim}
+
+\redpoint \textbf{Important:} The example above demonstrates the
+correct placement of \cs{fillinWidth}, just outside the
+\texttt{parts} environment, before it has the time to set up
+the paragraph shape of the environment.
+
+The change is only local to that \texttt{parts} environment.
+The \cs{fillinWidth} command goes outside a \texttt{parts}
+environment, and can cause strange results if executed within a
+\texttt{parts} environment. Setting it to a \meta{width} value
+other than the common width of the \cs{TF} fields will also create
+bad formatting.
+
+\redpoint Just use \cs{fillinWidth} as illustrated in the above
+example.
+
+\redpoint When you choose the \texttt{online} or \texttt{email}
+option, \cs{TF} generates a text field.
+
+\subsubsection{Long Fill-in Questions}
+
+There is no special command for a longer response question, just
+leave enough vertical white space for the student to respond, for
+example,
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[5]
+Do this problem
+\begin{solution}[1.5in]
+That's how you do it!
+\end{solution}
+\end{problem}
+\end{Verbatim}
+\noindent The above example leaves $1.5$ inches of vertical space to do the
+work.
+
+\redpoint When you choose the \texttt{online} or \texttt{email}
+option, this vertical space is changed into a multi-line text
+field.
+
+\subsection{Multiple Choice}\label{multichoice}
+
+For multiple choice questions, we use the \texttt{answers}
+environment. If the \texttt{online} or \texttt{email} option is
+taken, the choices are made into radio button fields so that
+\emph{only one alternative} can be chosen. When multiple selections
+are permitted, the \texttt{manswers} environment can be used, see
+\Nameref{multiSelect}.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem*}[\auto] Answer each of the following.
+\begin{parts} %\sqLinks
+ \item\PTs{5} In what year did Columbus sail the ocean blue?
+ \begin{answers}{4}
+ \Ans0 1490 &\Ans0 1491\\
+ \Ans1 1492 &\Ans0 1493
+ \end{answers}
+ \item\PTs{6} In what year did Columbus sail the ocean blue?
+ \begin{answers}{1}
+ \Ans0 1490
+ \Ans0 1491
+ \Ans1 1492
+ \Ans0 1493
+ \end{answers}
+\end{parts}
+\end{problem*}
+\end{Verbatim}
+\noindent \textbf{Note:} No solutions are given for this problem.
+
+\redpoint Because the labels and values of the alternatives are
+based on the alphabet, the number of alternatives is restricted to
+twenty-six.
+
+The \texttt{answers} environment is borrowed from \texttt{exerquiz} and
+operates the same way. The one required argument is the number of columns
+to be used in displaying the alternative answers. If the number of columns
+is $1$, a \texttt{list} environment is used, otherwise a \texttt{tabular}
+environment is used.
+
+In the first item in the example above, we specify $6$ columns,
+and must use tabular notation (separate columns with
+`\texttt{\&}') and end rows with `\verb+\\+'. The second item in
+the example above uses $1$ column, the tabular notation is not
+needed, or used.
+
+The \cs{Ans} macro is used to designate which alternative is the
+correct answer ($1$ for correct, $0$ for not correct).
+
+\subsubsection{Using \texorpdfstring{\cs{bChoices}/\cs{eChoices}}
+{\CMD{bChoices}/\CMD{eChoices}}}
+Beginning with Version 1.3, an alternate style of specifying the
+alternatives is defined. A new pair of commands are defined: \cs{bChoices}
+and \cs{eChoices}. These two enclose the alternatives like so:
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{exam}{Exam1}
+\begin{instructions}
+Select the ``best'' answer and darken the corresponding oval on
+your scantron sheet.
+\end{instructions}
+\begin{problem}[5] In what year did Columbus sail the ocean blue?
+ \begin{answers}{3}
+ \bChoices
+ \Ans0 1490\eAns
+ \Ans0 1491\eAns
+ \Ans1 1492\eAns
+ \Ans0 1493\eAns
+ \eChoices
+ \end{answers}
+\end{problem}
+\begin{problem}[5] In what year did Columbus sail the ocean blue?
+ \begin{answers}{1}
+ \bChoices
+ \Ans0 1490\eAns
+ \Ans0 1491\eAns
+ \Ans1 1492\eAns
+ \Ans0 1493\eAns
+ \eChoices
+ \end{answers}
+\end{problem}
+\end{exam}
+\end{Verbatim}
+\noindent Notice that the set of alternatives are the same, and
+are specified in exactly the same way; the first question,
+however, is a tabular environment with $6$ columns (the argument
+of $6$ of the \texttt{answers} environment), the second question
+is a list environment (since the argument \texttt{answers}
+environment is $1$). Notice also that `\texttt{\&}' and
+`\verb!\\!' are not used, and that each alternative is terminated
+by \cs{eAns}.
+
+The \cs{bChoices} and \cs{eChoices} are creatures of the \textsf{exerquiz}
+package, and are fully documented in the reference for the
+\ulSetLink{http://www.math.uakron.edu/~dpstory/acrotex/aeb_man.pdf}{\cAcroB}.
+
+
+\subsubsection{\texorpdfstring{\cs{sqForms} versus \cs{sqLinks}}
+{\CMD{sqForms} versus \CMD{sqLinks}}}
+
+There are two styles of multiple choice: (1) enumerate the
+alternatives using letters; (2) enumerate the alternatives using
+boxes (that the student would check or fill-in). The default is (1),
+but you can change the default to (2) by using the \texttt{useforms}
+option. This styles can be locally changed by specifying the
+\cs{sqLinks} or \cs{sqForms} commands. In the above example, the
+\cs{sqLinks} command is commented out, but shows the correct
+position for it to change to style (1), which I am calling
+``links''. Within a multi-part, multiple choice set of questions,
+you can change one item to ``links'' and the next to ``forms.''
+Changes are local as long as you place the commands, \cs{sqLinks} or
+\cs{sqForms} within an environment (\texttt{parts},
+\texttt{problem}, or \texttt{problem*}).
+
+\subsubsection{Using Circles for Multiple Choice}\label{allowcirc4mc}
+
+Then the package option \texttt{allowcirc4mc} is used, the font standard
+{\LaTeX} font \texttt{lcircle10} is loaded at which point \textsf{eqexam}
+can use it to create circles, instead of rectangles, to indicate the parts
+in a multiple choice (MC) question. To use circles in a multiple choice
+question, execute the command,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\useCircForMC
+\end{Verbatim}
+prior to the MC question.
+
+\goodbreak
+
+To return to the use of rectangles, execute the command,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\useRectForMC
+\end{Verbatim}
+prior to the MC question.
+
+Both commands have a local context. If expanded inside a group, the
+definition going into the group will hold on exit from the group.
+
+\subsubsection{Using \texorpdfstring{\cs{proofingsymbol}}{\CMD{proofingsymbol}}
+and friends}
+
+By default, a check mark (\ding{52}) is used to indicate which of the
+alternatives in a MC problem is correct; however, there are other
+``proofing symbols'' that can be used. Below are two additional suggested
+proofing symbols.
+
+\makeatletter
+\font\eqe@lcir=lcircle10 at 10pt
+\bgroup
+\setbox0=\hbox{\eqe@lcir h}
+\xdef\eqe@cirDiam{\the\wd0}
+\@tempdima=.5\wd0
+\xdef\eqe@cirRadius{\the\@tempdima}
+\egroup
+\def\circGlyph#1#2{\hbox{\smash{\raisebox{\eqe@cirRadius}%
+ {\makebox[\eqe@cirDiam]{\llap{\rlap{\eqe@lcir#1}%
+ \hskip#2\relax}}}}}}
+\makeatother
+
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\useCheckForProof (!normalfont Check !ding(52), the default)
+\useCrossForProof (!normalfont Cross !ding(56), alternative to check)
+\useCircForProof (!normalfont Circle !circGlyph(x)(1pt), appropriate with )\useCircForMC
+\end{Verbatim}
+All of these user friendly commands are based on the \cs{proofingsymbol}
+command. For example, the definitions of \cs{useCheckForProof} and
+\cs{useCrossForProof} are,
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\newcommand{\useCheckForProof}{\symbolchoice{check}%
+ \proofingsymbol{\ding{52}}}
+\newcommand{\useCrossForProof}{\symbolchoice{cross}%
+ \proofingsymbol{\raisebox{-1pt}
+ {\rlap{\kern-1pt\Large\ding{56}}}}}
+\end{Verbatim}
+Both definitions use the \textsf{pifont} package to create the symbols.
+Note that some adjustment of size and position is used for the cross
+symbol.
+
+The command \cs{symbolchoice} is defined in the \textsf{eforms} package
+and does nothing in \textsf{eqexam} unless either \texttt{online} or
+\texttt{email} options are taken. From the \textsf{eforms} manual,
+possible values for \cs{symbolchoice} are \texttt{check}, \texttt{circle},
+\texttt{cross}, \texttt{square}, \texttt{diamond}, and \texttt{star}. The
+\cs{proofingsymbol} command is for marking the multiple choices when
+either the \texttt{answerkey} or \texttt{vspace\-with\-solns} option is
+taken. The choice of \cs{proofingsymbol} is `{\LaTeX}ed' into the
+document. The \cs{proofingsymbol} may be used to create other proofing
+symbols, as desired.
+
+\newtopic\textbf{Summary.} Currently, there only two geometric shapes used
+for multiple choice, rectangles (the default) and circles. To Shift
+between these two types, use \cs{useRectForMC} and \cs{useCircForMC},
+respectively. Accompanying the choice for geometric shape for MC is the
+symbol used to make the choice/correct answer. When the \texttt{answerkey} or
+\texttt{vspace\-with\-solns} option is used, the correct answer is marked
+using a symbol, current choices are \cs{useCheckForProof},
+\cs{useCrossForProof} and \cs{useCircForProof} (used with
+\cs{useCircForMC}).
+
+When the \texttt{vspace\-with\-solns} is used, solutions are written to
+the back of the document and markup up as they are with the
+\texttt{answerkey} option. To get the answers in the solutions section to
+have the same choices, you must write to the solutions file using
+\cs{writeToSolnFile}. Below is an example.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\useCircForMC\useCircForProof
+\writeToSolnFile{\protect\useCircForMC\protect\useCircForProof}
+\begin{problem}[5] In what year did Columbus sail the ocean blue?
+ \begin{answers}{3}
+ \bChoices
+ \Ans0 1490\eAns
+ \Ans0 1491\eAns
+ \Ans1 1492\eAns
+ \Ans0 1493\eAns
+ \eChoices
+ \end{answers}
+\end{problem}
+\end{Verbatim}
+Any multiple choice question that follows will also draw circles for
+multiple choice questions, and mark them with a filled circle.
+To shift back to the default, expand the following commands prior the next
+question.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\useRectForMC\useCheckForProof
+\writeToSolnFile{\protect\useRectForMC\protect\useCheckForProof}
+...
+\end{Verbatim}
+
+\subsection{Multiple Selection}\label{multiSelect}
+
+When writing a multiple choice question for which more than one
+alternative is permitted, use the \texttt{manswers} environment
+(\underbar multiple \underbar{answers}). The distinction between the
+\texttt{answers} and \texttt{manswers} environments is lost when
+publishing to paper, but becomes important with the \texttt{online}
+and \texttt{email} options.
+
+Use the \texttt{manswers} environment in the same way you use
+\texttt{answers}, except code in more than one correct answer. For
+example,
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[5]
+Which of the following are primary colors?
+\begin{manswers}{6} % specify tabular with 6 columns
+ \bChoices
+ \Ans1 Blue\eAns
+ \Ans0 Green\eAns
+ \Ans1 Yellow\eAns
+ \Ans0 Orange\eAns
+ \Ans1 Red\eAns
+ \eChoices
+\end{manswers}
+\begin{solution}
+Yes, red, blue and yellow are primary colors.
+\end{solution}
+\end{problem}
+\end{Verbatim}
+\noindent You can use the \cs{bChoices}/\cs{eChoices} pair to specify the
+alternatives, or you can use the standard tabular notation. As with the
+\texttt{answers} environment an argument of \texttt1 specifies a list
+environment. See \Nameref{multichoice} for more examples on the use of the
+\cs{bChoices}/\cs{eChoices} pair.
+
+\subsection{Randomizing Choices}\label{s:random}
+
+Beginning with version~1.7 of \textsf{eqexam}, the choices of a
+multiple choice/selection question can be randomized. The \texttt{random.tex}
+macro file by Donald Arseneau is used for this purpose.
+
+\newtopic The randomization is only allowed if the \texttt{allowrandomize}
+option of \textsf{eqexam} is used; otherwise, no randomization
+can occur.
+
+The randomization is only defined for choices listed between the
+pair \cs{bChoices} and \cs{eChoices}. The
+\cs{bChoices} command now takes two optional key-value arguments:
+\begin{itemize}
+ \item \texttt{nCols=\anglemeta{num}}: The number of columns to create, as described.
+ You can also use the old style by specifying just
+ \anglemeta{num}. Thus, \cs{bChoices[nCols=2]} and \cs{bChoices[2]}
+ are equivalent.
+ \item \texttt{random=\anglemeta{\upshape true|false}}: Specify this option if you want the choices
+ to be randomized. You can use the key word \texttt{random} instead of
+ \texttt{random=true}. For example, the following commands all will randomize the
+ choices, \cs{bChoices[random]} or \cs{bChoices[nCols=2,random]} or
+ \cs{bChoices[2,random=true]}. The default is to not randomize the
+ choices.
+\end{itemize}
+
+\newtopic The following is an example of the \texttt{random} option of \cs{bChoices}.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[5]
+Try to guess the correct answer.
+ \begin{answers}{3}
+ \bChoices[nCols=2,random]
+ \Ans0 1 a choice\eAns
+ \Ans1\label{eq} 2 another choice\eAns
+ \Ans0 3 still another choice\eAns
+ \Ans0 4 another\eAns
+ \Ans0 5 incoming\eAns
+ \Ans0 6 more choices\eAns
+ \Ans0 7 another still\eAns
+ \Ans0 8 too many\eAns
+ \Ans0 9 choices\eAns
+ \eFreeze
+ \Ans0 10 None of these\eAns
+ \eChoices
+ \end{answers}
+\end{problem}
+\end{Verbatim}
+
+\newtopic Note the presence of the command \cs{eFreeze}. Any of
+the items listed after \cs{eFreeze} are not randomized, and are
+placed at the end of the list. So, for the example above, the first
+nine items will be randomized, whereas, the last item (None of
+these) will placed at the end of the list.
+
+\newtopic Additionally, there are five other commands that support the
+randomization feature.
+
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\saveRandomSeed
+\inputRandomSeed
+\end{Verbatim}
+
+\newtopic A pseudo-random sequence of numbers requires an initial seed
+value. The \texttt{random.tex} macro file creates, by default, a
+seed value based on the data and time (the number of minutes since
+midnight); consequently, after every minute, the random sequence
+will change. By setting the value of the count register \cs{randomi}, as in
+\texttt{\string\randomi=24},
+the document author can also set the initial seed of the pseudo-random
+sequence.
+
+The command \cs{saveRandomSeed} will write the last seed used in the
+source file to an auxiliary file (\cs{jobname\_ran.sav}), while the
+command \cs{inputRandomSeed} inputs the seed stored in the
+\cs{jobname\_ran.sav} back into the beginning of the source file.
+These two commands should be placed in the preamble.
+
+By invoking both of these commands, a new pseudo-random sequence will be generated
+each time the source file is latexed.
+
+Assuming a \cs{jobname\_ran.sav} has already been created, by
+invoking the command \cs{inputRandomSeed} only (and not
+\cs{saveRandomSeed}), the seed already saved will be used for every
+subsequent compiling of the source document. Using the same seed is
+necessary in two situations:
+\begin{enumerate}
+ \item When the document contains one or more \cs{label} commands, using the same
+ seed gives you the same sequence every time you latex the document. This will
+ give the auxiliary files a chance to come up to date so that any referencing of the label
+ will be accurate.
+
+ \item When creating an exam with randomization that has several
+ versions, which later you publish the solutions to, it is
+ important that the randomization for the document is the same as
+ that for the solution document. By using \cs{inputRandomSeed} (and
+ not \cs{saveRandomSeed}), you should get the same sequence for the
+ solution document (unless you modify the source file, adding or
+ removing questions that have randomization).
+\end{enumerate}
+
+\newtopic\textbf{Things to look for:} If \textsf{eqexam} is not rearranging the order
+of the choices as you expect it to, it could be that
+\textsf{eqexam} is reading an old \texttt{.sav} file. Either delete that file
+in your source folder, or comment out \cs{inputRandomSeed} in your document.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\useRandomSeed{!meta(num)}
+\end{Verbatim}
+
+You may have several sections of the same class take the exam with the
+questions rearranged for each. Save the seed value used by
+\textsf{eqexam} to randomize the choices (open the \texttt{.sav}
+and copy and paste line you see into your document, for example, it
+could read \cs{randomi=132088850}. Then use \cs{useRandomSeed} to
+use that seed value for that class, for example
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\useRandomSeed{132088850} % 11:00 class
+% \useRandomSeed{634952429} % 12:30 class
+\end{Verbatim}
+Of course comment out \cs{inputRandomSeed}.
+
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\turnOnRandomize
+\obeyLocalRandomize
+\end{Verbatim}
+
+The command \cs{turnOnRandomize} overrides all local settings of \cs{bChoices}
+and causes all choice lists to be randomized. While \cs{obeyLocalRandomize}
+returns control to the local settings. For example,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\turnOnRandomize
+...
+\bChoices
+ \Ans...\eAns
+ \Ans...\eAns
+ ...
+\eChoices
+\end{Verbatim}
+will cause the choice list to be randomized, even though the
+\texttt{random} option was not specified. Whereas, in this code
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\turnOnRandomize
+...
+\obeyLocalRandomize
+,,,
+\bChoices
+ \Ans...\eAns
+ \Ans...\eAns
+ ...
+\eChoices
+\end{Verbatim}
+the choices will not be randomized, because the \texttt{random}
+option was not specified; or they will be randomized if the
+\texttt{random} option is used.
+
+\newtopic\textcolor{red}{Limitations:} There are natural limitations on the use
+of \cs{bChoices} and \cs{eChoices} and consequently, there are
+limitations on the randomization. The content between \cs{Ans} and
+\cs{eAns} cannot have any verbatim text. This is usually not a
+problem for mathematical content, but could be a limitation for
+computer science where questions about syntax may be posed. I have
+in mind a work-around, but haven't pursued the problem as of yet.
+
+\subsection{Labeling Choices}
+
+The \cs{bChoices} command has a \texttt{label} key,
+\verb~\bChoices[label=~\texttt{\anglemeta{label}]}, used to specify a (unique) label for the
+current set of choices. When a label is specified, \textsf{eqexam} creates
+commands that save the label of each correct answers (for multiple
+choice/multiple selection problems), and saves the answer text for each
+correct answer. These can be read back into the document using some
+user-interface commands: \cs{useSavedAlts}, \cs{useSavedAns},
+\cs{useSavedAltsAns}, and \cs{useSavedNumAns}.
+
+%\handpoint The demo file for this feature is named \texttt{test03.tex}.\medskip
+
+\exAeBBlogPDF{p=1206} The demo file for this feature is named
+\texttt{test03.tex}, download
+\texttt{\href{\urlAcroTeXBlog/?p=1206}{test03.pdf}} from the {\AcroBlog}
+website. The source file is attached to the PDF.
+
+
+\settowidth{\aebdimen}{\ttfamily\string\useSavedAltsAns[\meta{num}]\darg{\meta{label}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\useSavedAlts[!meta(num)]{!meta(label)}
+\useSavedAns[!meta(num)]{!meta(label)}
+\useSavedAltsAns[!meta(num)]{!meta(label)}
+\useSavedNumAns{!meta(label)}
+\end{dCmd}
+\noindent The optional argument is useful \emph{only if} the \cs{bChoices} appears in a
+\texttt{manswers} environment where there are more than one selectable answer. The required
+parameter is the value of the \texttt{label} key.
+\begin{description}\def\NH{\hspace{-\labelsep}}
+ \item\NH\cs{useSavedAlts\darg{\meta{label}}} expands to the
+ \meta{label} of the correct answer(s). For example
+ \cs{useSavedAlts\darg{\meta{label}}} might expand to (c); if there
+ are multiple answers, it might expand to (a), (c), a
+ comma-delimited list of labels of the (correct) answers. For
+ multiple selection, \cs{useSavedAlts[2]\darg{\meta{label}}} might
+ expand to (c), the label of the second correct answer.
+
+ \item\NH\cs{useSavedAns\darg{\meta{label}}} expands to the \emph{text}
+ of the correct answer(s). As an example,
+ \cs{useSavedAns\darg{\meta{label}}} might expand to $ y = x^3 $; if
+ there are multiple answers, it might expand to $ y = x^3 $, $ y =
+ -x^3 $, a comma-delimited list of the text of the (correct)
+ answers. For multiple selection,
+ \cs{useSavedAns[2]\darg{\meta{label}}} might expand to $ y = -x^3
+ $, the text of the second correct answer.
+
+ \item\NH\cs{useSavedAltsAns\darg{\meta{label}}} combines the two
+ previous commands. Again, for example,
+ \cs{useSavedAltsAns\darg{\meta{label}}} might expand to (c) $ y =
+ x^3 $. When there are multiple answers, it expands to a comma
+ delimited of labels and text. As with the other two commands, the
+ optional argument can be used to pick off a particular choice.
+ \item \NH\cs{useSavedNumAns\darg{\meta{label}}} is the number of
+ correct answers in the current list of choices.
+\end{description}
+
+\subsection{Gizmos and Gadgets}
+
+I have a couple of crazy gizmos that you can use.
+
+\subsubsection{The \texttt{workarea} Environment}
+
+For a mathematics test, we often pose
+a question that needs to be worked out. Vertical space is created
+by the \texttt{solutions} environment, and appears when the
+\texttt{nosolutions} or \texttt{vspacewithsolns} option is used; however, often we want to
+mark up this vertical space with additional instructions, a
+diagram or a figure. The problem is how can the author write over
+the provided white space. For this, \textsf{eqexam} provides the
+\texttt{workarea} environment. The syntax is:
+%\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\settowidth{\aebdimen}{\ttfamily\anglemeta{Material that will overwrite the solutions vertical space}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{workarea}[!meta(width)]{!meta(depth)}
+...
+!anglemeta(Material that will overwrite the solutions vertical space)
+...
+\end{workarea}
+\end{dCmd}
+This environment is placed immediately \emph{after} the \texttt{solutions}
+environment, and the value of its parameter should be the same as the
+optional parameter at the beginning the \texttt{solutions} environment
+(\cs{begin\darg{solutions}[\meta{depth}]}). The optional \meta{width}
+parameter is the width of the work area, which is \cs{linewidth} by default.
+The required \meta{depth} parameter is the depth of the work area and it
+should match the optional parameter of the \texttt{solutions} environment,
+directly above it.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[3]
+This is a question.
+
+\begin{solution}[2in]
+This is the solution, let's hope it's correct, or I would be
+embarrassed to no end.
+\end{solution}
+
+\begin{workarea}{2in}
+\textit{Hint}: Think long and hard before answering.
+\par\vfill\hfill\setlength{\fboxsep}{2mm}
+\fbox{Answer:\fillin[n]{1in}{The correct answer.}}
+\end{workarea}
+\end{problem}
+\end{Verbatim}
+\noindent When the \texttt{nosolutions} option is taken, the
+\texttt{solutions} leaves $2$~inches of white space. The
+\texttt{workarea} environment that follows also specifies
+$2$~inches, and the content of this environment will overlap the
+white space. (The student would then work around the written
+material.) Here, we give a hint, and leave an answer box (a
+fill-in) for the student to insert his/her answer.
+
+When the \texttt{nosolutions} is not specified, the vertical space
+is not provided, and the \texttt{workarea} does nothing. If
+\texttt{solutionsafter} is specified, that space is replaced by
+the provided solution.
+
+\subsubsection{The \texorpdfstring{\cs{placeAtxy}}{\textbackslash placeAtxy} Command}
+
+The \cs{placeAtxy} command is another device that I've used to
+place a block of text or a graphic on top of the vertical space
+created by the \texttt{solutions} environment when the
+\texttt{nosolutions} or \texttt{vspacewithsolns} option is in effect.
+\settowidth{\aebdimen}{\ttfamily\string\placeAtxy\darg{\meta{x\_dim}}\darg{\meta{y\_dim}}\darg{\meta{content}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\placeAtxy{!meta(x_dim)}{!meta(y_dim)}{!meta(content)}
+\end{dCmd}
+\noindent The first two arguments are the $x$ and $y$ coordinates
+(with dimensions) of where the \meta{content} is to be placed.
+If this command is placed below the \texttt{solutions}
+environment, then the origin is the lower left corner of the
+solutions box.
+
+The following example, places the frame box \framebox{Place a
+graph here} (roughly) one inch up and one inch shifted to the
+right, measured from the bottom left corner of the \texttt{solutions}
+environment (when the \texttt{nosolutions} option is in effect).
+As with \texttt{workarea}, \cs{placeAtxy} does nothing if the
+\texttt{nosolutions} option has not been taken.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[3]
+This is a question.
+\begin{solution}[2in]
+This is the solution, let's hope it's correct, or I would be
+embarrassed to no end.
+\end{solution}
+\placeAtxy{1in}{1in}{\framebox{Place a graph here}}
+\end{problem}
+\end{Verbatim}
+\noindent The \cs{placeAtxy} command can also be used in
+combination with the \texttt{workarea} environment.
+
+%
+% Fixed with version 1.3. 02/07/05
+%
+% \redpoint With this release of \textsf{eqexam}, the
+% \texttt{splitsolution} environment does not obey the `\texttt{h}'
+% or `\texttt{H}' options. These options were discussed in section
+% on the \hyperref[problem]{\texttt{problem} environment}, on
+% page~\hyperref[problem]{\pageref*{problem}}.
+
+\subsubsection{The \texttt{splitsolution} Environment}
+
+I developed this environment to solve a problem with the
+\texttt{online} and \texttt{email} options. The white space
+created by the \texttt{solution} environment is converted into
+text fields (\PDF{} form fields). If the \texttt{workarea}
+environment or the \cs{placeAtxy} command is used to place content
+on the white space, the student will be in the position of having
+to type on top of this content. (See the demo file
+\texttt{\href{\urlAcroTeXBlog/?p=1198}{test01.pdf}}\marginpar{\mbox{\makebox[0pt][l]{\textcolor{blue}{\Pisymbol{webd}{254}}}\raisebox{-2pt}{\color{red}{{\zqacr
+b\hspace{9.5pt}}}}}} for an illustration of this.)
+
+
+Therefore, it was necessary to have a way to separate the space
+reserved for the text field, and the additional content you might
+want to appear in this white space area. The
+\texttt{splitsolution} environment is my solution to this problem.
+
+As of 2012/12/10, a new syntax has been implemented for the
+\texttt{splitsolution} and \texttt{panel} environments. Below is a
+side-by-side comparison of the new syntax and the old.
+
+\settowidth{\aebdimen}{\small\ttfamily\string\begin\darg{splitsolution}[\meta{width}][\meta{depth}]}
+\newtopic\begin{minipage}{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{Verbatim}[commandchars=!(),fontsize=\small,frame=single]
+(!normalsize!normalfont!bfseries New Syntax)
+\begin{splitsolution}[!meta(width)][!meta(depth)]
+\begin{panel}[l|r]
+...
+\end{panel}
+\begin{solution}
+...
+\end{solution}
+\end{splitsolution}
+\end{Verbatim}
+\end{minipage}\quad
+\begin{minipage}{.45\linewidth}
+\begin{Verbatim}[commandchars=!(),fontsize=\small]
+(!normalsize!normalfont!bfseries Old Syntax)
+\begin{splitsolution}{!meta(depth)}
+\begin{panel}[l|r]{!meta(width)}
+...
+\end{panel}
+\begin{solution}
+...
+\end{solution}
+\end{splitsolution}
+\end{Verbatim}
+\end{minipage}
+\newtopic There has not been any feedback to this feature, so I am confident that
+this change has little impact on users. Both \meta{width} and
+\meta{height} are optional arguments for the new syntax of
+\texttt{splitsolution}. If there are no optional arguments, the default
+values of \cs{panelwidth} and \cs{panelheight}; these are automatically
+measured. If only one optional parameter is given, it is interpreted as
+\meta{height} (and the \meta{width} is taken to be \cs{panelwidth}). The
+default value of the optional parameter for the \texttt{panel} environment
+is now \texttt{r} rather than \texttt{l}.
+
+\redpoint Consider the following example.
+\begin{Verbatim}[numbers=left,xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[7]
+This is a question worth $7$ points.
+\begin{splitsolution}
+\begin{panel}\relax
+\includegraphics[scale=.2]{fig1}
+\end{panel}
+\begin{solution}
+This a really good solution. I hope this solution is correct or I
+will be total embarrassed to no end. Even if it is wrong, maybe
+the students will appreciate my tremendous effort. You can see
+from the figure that the solution is obvious.
+\end{solution}
+\end{splitsolution}
+\end{problem}
+\end{Verbatim}
+Note the use of \cs{relax} in line~(4). The first object in the panel
+environment is a command. To prevent the command from expanding
+prematurely, place a \cs{relax} as above. This will give you the default
+parameter of \texttt{r} and prevent expansion. The use of \cs{relax} is
+only needed when there is a command immediately following the opening of
+the \texttt{panel} environment; otherwise, just \verb!\begin{panel}! should
+work correctly. The optional argument can always be specified,
+\verb!\begin{panel}[r]!; this too would prevent the premature expansion of
+any command that immediately follows.
+
+The \texttt{panel} environment takes its contents and writes it verbatim
+to a \textsf{CUT} file, then inputs it back in (at the end of the \texttt{panel}
+environment), and places its contents in the box \cs{eqpanelbox} where it
+takes it measurements of \cs{panelwidth} and \cs{panelheight} (the total
+height).
+
+The \texttt{splitsolution} environment \emph{must} enclose two
+other environments: The \texttt{panel} and the \texttt{solutions}
+environments, \emph{in that order}.
+
+The \texttt{panel} environment comes first and takes optional argument.
+The optional parameter has takes a value of `\texttt{r}' (the default) or
+`\texttt{l}'. The \texttt{r} (resp., \texttt{l}) option means the panel is
+to appear on the right (resp., left) of the solution (or vertical white
+space).
+
+After the \texttt{panel} environment comes the \texttt{solutions}
+environment. The optional parameter of this environment need not
+be specified, as it gets its value from the \texttt{split\-solution}
+parameter.
+
+There is a small gap of \texttt{3pt} (the default) inserted between the
+panel and the solution. The value of this gap is contained in the
+\cs{panelgap} command,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\panelgap{3pt}
+\end{Verbatim}
+which can be redefined.
+
+\redpoint The depth (the default is \cs{panelheight}) that you specify as
+the parameter of the \texttt{splitsolution} environment needs to be large
+enough to accommodate your typeset solution; otherwise, the solution will
+overlap the next problem. This is because, unlike the solutions inside a
+\texttt{solution} environment (but not in a \texttt{splitsolution}
+environment) are typeset in a \texttt{minipage} with a specified depth.
+
+To extend the height of the solution, use the following method.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\begin{splitsolution}[\panelheight+1in]
+...
+\end{splitsolution}
+\end{Verbatim}
+This sets the total height to be the natural height of the panel plus 1 inch.
+
+\section{\textsf{eqexam} Options}\label{eqoptions}
+
+The options documented here are entered as optional arguments of the eqexam package:
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\usepackage[!meta(optionals)]{eqexam}
+\end{Verbatim}
+The optional arguments can also be introduced through \texttt{exambuilder.cfg}, the configuration file.
+Create a text file with the name of \texttt{exambuilder.cfg}
+and create the line shown below.
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\ExecuteOptionsX{!meta(optionals)}
+\end{Verbatim}
+Place \texttt{exambuilder.cfg} in the folder of the source file and not on the {\LaTeX}
+search path.
+
+\redpoint The \textsf{eqexam} package has numerous options, some
+inherited from \textsf{web}, some from \textsf{exerquiz}, and a
+number of new ones.
+\begin{description}
+ \item[\texttt{forpaper}] Take this option when you want to create
+ a black and white paper version of your test.
+
+ \item[\texttt{forcolorpaper}] Take this option
+ when you want to have a nice colorful paper version,
+ or are publishing on the web in {\PDF}. See \Nameref{customColor}.
+
+ \item[\texttt{nosolutions}] This is the normal option taken when
+ you are printing a test for distribution to a class of
+ students. When this option is taken, vertical space is
+ generated by the \texttt{solutions} environment based on
+ the value of its optional parameter. This leaves room for
+ the student to solve/answer the question.
+
+ \item[\texttt{nohiddensolutions}] If you use the \texttt{h}
+ optional parameter for \texttt{problem} or \cs{item}, the
+ solution will not be listed (at the end of the document)
+ \emph{when you do not specify} \texttt{nosolutions}; but
+ solutions will be typeset for the \texttt{solutionsafter} option.
+ This option will override this feature.
+
+ \item[\texttt{noHiddensolutions}] Normally, when you use the
+ \texttt{H} optional parameter for \texttt{problem} or \cs{item}, the
+ solution will not be listed when you use the \texttt{nosolutions} or
+ \texttt{so\-lu\-tions\-af\-ter} options for \textsf{eqexam}. This option will
+ override this feature.
+
+ \item[\texttt{solutionsafter}] Causes solutions to appear
+ following the statement of the problem.
+
+ When the \texttt{solutionsafter} is in effect, the word
+ \textit{Solution:} is typeset at the beginning of the solutions.
+ The command \cs{renameSolnAfterTo} can be used for conveniently
+ changing the \texttt{solutionsafter} label, for example, executing
+ the command \verb!\renameSolnAfterTo{\textbf{Proof:}}! prior to a
+ \texttt{solution} environment changes the label to
+ \textbf{Proof:}; \verb!\renameSolnAfterTo{}! produces no
+ label. These changes will be local to the group in which they are
+ made, or global of there they are not made in a group.
+
+ The command \cs{resetSolnAfterToDefault} sets the label text back to
+ the default. The default label is \verb!\textit{Solution}:!.
+
+ \item[\texttt{preview}] The bounding boxes are shown when this
+ option is taken, provided the \texttt{online} or \texttt{email}
+ option is chosen. See the description of these two options
+ below.
+
+ \item[\texttt{proofing}] Using this option will cause the
+ correct answer for multiple choice questions to be marked with
+ a check mark; the correct answers for fill-in questions
+ (\cs{fillin} or \cs{TF}) are also shown.\medskip
+
+ The \texttt{answerkey} option, described below,
+ executes the \texttt{proofing} and \texttt{solutions\-after}
+ options.
+
+\end{description}
+
+\redpoint The following options are unique to the \textsf{eqexam} package.
+
+\begin{description}
+\item[\texttt{pointsonleft}] The points for the problem are displayed in
+ the left margin.
+
+\item[\texttt{pointsonright}] The points for the problem are on the left
+ margin.
+
+\item[\texttt{pointsonboth}] Points are displayed in both margins.
+
+\item[\texttt{nopoints}] Causes points not to be displayed, or
+ calculated. Useful for writing documents that do not have points,
+ such as a questionnaire.
+
+\item[\texttt{totalsonleft}] The totals for each page can be
+ displayed at the bottom left corner of each page using this option.
+
+\item[\texttt{totalsonright}] The totals for each page can be
+ displayed at the bottom right corner of each page using this
+ option.
+
+\item[\texttt{nototals}] Use this option if you don't want any
+ totals at the bottom of the page.
+
+\item[\texttt{noparttotals}] When multiple \texttt{exam} environments appear on
+ the same page, they are separated by a horizontal rule. The page total
+ for the closing \texttt{exam} environment is inserted into the margin on
+ the same line as the horizontal rule. This option turns off the insertion
+ of the page total for the closing \texttt{exam} environment.\medskip
+
+ There are two commands that can be used for local control of
+ this feature, they are \cs{eoeTotalOff} and \cs{eoeTotalOn}.
+ When an \texttt{exam} ends near the bottom of one page, the
+ new exam will begin on the next page, this results in the
+ horizontal rule being generated with the end of exam totals,
+ and the totals at the bottom as well. If these two numbers are
+ the same, then you can turn off the end of exam total using
+ \cs{eoeTotalOff}. Use this command just above
+ \verb+\end{exam}+ and the changes will be local to that exam
+ part.
+
+\item[\texttt{parttotalsonright}] Place the part totals in the right
+ margin, this is the default.
+
+\item[\texttt{parttotalsonleft}] Place the part totals in the left
+ margin.
+
+\item[\texttt{nosummarytotals}] When you use the
+ \texttt{instructions} environment, the total points for
+ \texttt{exam} are displayed following the instruction heading.
+ Using this option turns off this feature.
+
+\item[\texttt{noseparationrule}] When the document has multiple
+ \texttt{exam} environments, a separation rule is placed between
+ them. This option turns off that feature.
+
+ The design of the separation rule may be modified by the document author
+ by redefining \cs{separationrule}, its definition is given below:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand{\separationrule}{\makebox[\linewidth]%
+{\centering\rule{.67\linewidth}{.4pt}}}
+\end{Verbatim}
+
+\item[\texttt{coverpage}] Some instructors like to have a cover
+ page for their exams, use this option to create a cover page. Use
+ the \cs{eqexcoverpagedesign} command to design your own cover page.
+
+\item[\texttt{coverpagesumry}] is a companion to the \texttt{coverpage} option,
+ \texttt{coverpagesumry} takes one of three values: \texttt{bypages}, \texttt{byparts}, \texttt{none}.
+
+\begin{description}
+ \item[\texttt{coverpagesumry=bypages}] If \texttt{bypages} is chosen, an ``Exam Record''
+ appears on the cover page. See the left-hand figure in
+ Figure~\ref{fig:ExamRecord}. A page total appears on each line. Note
+ ``Page~3,'' in the figure; the total there is ``$37\,\text{pts}\
+ (12\,\text{pts}+25\,\text{pts})$.'' This means that there are 37
+ points on page~3; on this page the first \texttt{exam} environment
+ ended and a second \texttt{exam} environment begins, there are 12
+ points on page~3 from the first \texttt{exam} environment, and 25
+ points on that page from the second \texttt{exam} environment.
+
+\begin{figure}[htb]
+\begin{center}
+\includegraphics[width=.4\linewidth]{bypages}\quad
+\includegraphics[width=.4\linewidth]{byparts}
+\caption{Exam Record}\label{fig:ExamRecord}
+\end{center}
+\end{figure}
+
+ \item [\texttt{coverpagesumry=byparts}] If \texttt{byparts} is chosen, an
+ ``Exam Record'' appears on the cover page that lists the number of
+ points per part. (Each exam environment is considered here a
+ ``part.'') See the right-hand figure in
+ Figure~\ref{fig:ExamRecord}.
+
+ \item [\texttt{coverpagesumry=none}] If this option is chosen (the default), no
+ ``Exam Record'' is generated. If the key \texttt{coverpagesumry} does not
+ appear in the option list of \textsf{eqexam}, no ``Exam Record'' is written.
+
+ \end{description}
+
+ See \Nameref{examrecord} for more details on this topic.
+
+\item[\texttt{nospacetowork}] When the \texttt{nosolutions} option
+ is taken, the \texttt{solutions}
+ environment leaves vertical space in which to respond to the
+ question. Use this option to override this behavior.\medskip
+
+ The command \cs{SpaceToWork} causes the white space to be
+ created again, and the \cs{NoSpaceToWork} turns it off again.
+ Use these two commands to turn on and off the creation of
+ vertical spaces in different parts of your exam.
+
+\item[\texttt{answerkey}] This is a convenience option equivalent
+ to \texttt{proofing} and \texttt{solutionsafter}. Useful for
+ creating an ``answer key'' with answers and solutions displayed.
+
+\item[\texttt{solutionsonly}] Using this option, it is possible to obtain
+a typeset document consisting of only the solutions to \textsf{eqexam} document.
+See \Nameref{solutionsonly} for further details.
+
+\item[\texttt{vspacewithsolns}] An unusual feature requested by a user
+ for homework assignments. This option is a combination of
+ \texttt{nosolutions} (where vertical space is left by the
+ \texttt{solutions} environment to respond to the question), but
+ the solutions are written the \cs{jobname.sol} and input back in
+ at the end of the document.
+
+ This option is incompatible with \texttt{answerkey},
+ \texttt{nosolutions}, and \texttt{solutionsafter}, so when
+ \texttt{vspacewithsolns} is used, it ``cancels'' these other
+ options.
+
+ The command \cs{showAllAnsAtEnd} is inserted at the top of the
+ \cs{jobname.sol} file and when \cs{jobname.sol} are input back
+ in, the command \cs{showAllAnsAtEnd} is executed. The definition
+ of \cs{showAllAnsAtEnd} is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand{\showAllAnsAtEnd}{%
+ \makeAnsEnvForSolnsAtEnd
+ \answerkeytrue\eq@proofingtrue
+ \eq@solutionsaftertrue\vspacewithsolnstrue
+ \displayworkareafalse\withsoldoctrue
+}
+\end{Verbatim}
+Basically, this turns on all the switches that correspond to the
+\texttt{answerkey} option. This command may be redefined to suite your
+purposes.
+
+\handpoint When this option is taken, the switch \cs{ifvspacewithsolns}
+may be used to bring in alternate content.
+
+See \Nameref{vspacewithsolns} for further details.
+
+\item[\texttt{ftbsolns}] An alias for \texttt{vspacewithsolns}.
+
+\item[\texttt{useforms}] Multiple choice questions have two forms,
+ (1) the choices are labeled using letters (a), (b), (c), etc.; or
+ (2) using a rectangular fill box. The default is~(1). The
+ \texttt{useforms} switches the default to~(2). You can use the
+ commands \cs{sqLinks} and \cs{sqForms} to change back and forth
+ between these two types within the exam document. Using one of
+ these commands outside a \texttt{problem} environment will
+ globally change the default, from within, it will only change the
+ default locally.
+
+\item[\texttt{myconfig}] If this option is taken, \textsf{eqexam}
+ looks for the configuration file \texttt{eqexam.cfg}. This
+ configuration file is input at the end of the package, and can be used
+ to redefine, for language localization purposes, any of the (text)
+ macros described in this manual. See the section \Nameref{custom} for
+ a partial listing of macros that can be redefined and placed in
+ \texttt{eqexam.cfg}.\medskip
+
+\item[\texttt{myconfigi}\dots\texttt{myconfigvi}] Six additional
+ options for inputting a configuration file. If you take one of
+ these options, \textsf{eqexam} inputs the corresponding
+ configuration file \texttt{eqexami.cfg}\dots\texttt{eqexamvi.cfg}.
+
+\item[\texttt{cfg}] Syntax: \texttt{cfg=\anglemeta{basename}}. If this option is taken,
+\textsf{eqexam} looks for a file named \texttt{\anglemeta{basename}.cfg} and is input.
+
+ For one of my recent classes, I wrote many
+ standard handouts documents: first day handout, assignment documents,
+ homework assignments, review documents, test documents, and
+ in-class notes. Each document-type had its own \textsf{eqexam}
+ format (configuration file, \texttt{eqexami.cfg}\dots\texttt{eqexamiv.cfg}.
+ It got confusing to keep track of all these configuration files. At which point
+ I decided to add a \emph{named} configuration scheme. If you use the key \texttt{cfg}
+ in the option list \texttt{cfg=firstday}, \textsf{eqexam} will look for a file
+ named \texttt{firstday.cfg}
+
+\item[\texttt{obeylocalversions}] An option put in to give greater control over
+ versions. Perhaps you have a \textsf{eqexam} file that has questions
+ with multiple versions. You would like to pick and choose the versions
+ to be used. In this case, using \texttt{obeylocalversions} will cause
+ \textsf{eqexam} to obey any \cs{selectVersion} commands embedded in
+ the document.
+
+\item[\texttt{allowrandomize}] Use this option to randomize
+ the multiple choice/selection questions. See \Nameref{s:random} for details.
+
+\item[\texttt{showgrayletters}] When \texttt{showgrayletters} is used, multiple choice
+questions will have a gray capital letter
+\texttt{A}, \texttt{B}, \texttt{C}, etc. underneath it. This letter
+can then be referred to in the text or the solution using the \cs{REF} command.
+
+See \Nameref{showgraylettersOpt} for more information.
+
+ \item[\texttt{usexkv}] When this option is used, and the document
+ author has the \textsf{xkeyval} package on his/her system, there is a
+ re-definition of the \cs{fillin} command. For more information,
+ see \Nameref{extendfillin}.
+
+ \item[\texttt{allowcirc4mc}] Allows to use of circles (created by
+ the \texttt{lcircle10} font) for multiple choice questions. See
+ \Nameref{allowcirc4mc} for details.
+
+
+\end{description}
+
+\redpoint The next option concerns a major new feature, available
+in \textsf{eqexam}, version 3.0 or later.
+
+\begin{description}
+ \item[\texttt{fortextbook}]\label{fortextbook} This option is designed support
+ textbook authors. See \mlNameref{ftbop} for a greater explanation.
+\end{description}
+
+\redpoint The next two apply to files that have several versions in them,
+these were defined for use by the \textsf{AeB Exam Builder}
+utility,\footnote{\url{http://www.acrotex.net/builders/}} but they are
+available to the document author.
+
+\begin{description}
+ \item[\texttt{max}] The value of \texttt{max}, \texttt{max=\anglemeta{N}},
+ is a positive integer. The value of \texttt{max} is the
+ number of versions for this document. This option executes
+ \cs{numVersions\darg{\anglemeta{N}}} at the end of the package.
+
+ \item[\texttt{rendition}] This is a key-value pair.
+ \texttt{rendition=\anglemeta{alpha}}, where \anglemeta{alpha} letter corresponding to
+ the version that is to be typeset. At the end of the package, the
+ command \cs{forVersion\darg{\anglemeta{alpha}}} is executed.
+
+\end{description}
+
+\redpoint The next four options require the {\cAcroB}, and all of
+its required packages, such as \textsf{hyperref}, their use
+implies you are going to publish the document as a {\PDF}.
+
+\begin{description}
+
+\item[\texttt{pdf}] This option doesn't do much, it brings in the
+ \textsf{web} package, which in turn, places the values of the
+ keywords (\cs{title}, \cs{author}, \cs{subject}, etc.) into the
+ Document Description dialog of the {\PDF}.
+
+\item[\texttt{links}] This option brings in both \texttt{web} and
+ \texttt{exerquiz}. When you do not use a solutions option
+ (\texttt{nosolutions} and \texttt{solutionafter}), the solutions
+ appear at the end of the document. When the \texttt{links} option
+ is used, links from the questions to the solutions are created.
+ Unless you use a ``paper option'' (\texttt{forpaper} and
+ \texttt{forcolorpaper}), each solution is on a different page,
+ making a document with a lot of pages. When you also specify a
+ paper option, the solutions are separated by a \cs{medskip}.
+
+\item[\texttt{online}] The \texttt{online} option implies the
+ previous two options, but does more. When this option is taken,
+ and the \texttt{nosolutions} option is specified, {\PDF} forms are
+ created: multiple choice questions become radio button fields;
+ fill-in questions become text fields, and the vertical space
+ created by the \texttt{solutions} environment become multi-line
+ text fields.\medskip
+
+ This may be a useful option for an exam taken in a
+ CBT\footnote{Computer Based Testing} lab, where the students
+ can type in their responses and when finished, print the
+ document to a lab printer to hand in.
+
+\item[\texttt{email}] This option implies the \texttt{online}
+ option, in addition, adds a submit button to the upper left corner
+ of the first page of the exam. The student can take the test in a
+ CBT lab, then submit the results to the instructor via email.
+
+\end{description}
+\noindent See the section \Nameref{email} for additional details
+of these last two options.
+
+\redpoint When any one of the four options above are taken, a
+driver needs to be specified as well, the choices are\dots
+
+\begin{description}
+\item[\texttt{dvipsone}] For users of the
+ {Y\!{\footnotesize\&}\!Y\TeX} System, such as myself.
+
+\item[\texttt{dvips}] For users of \textsf{dvips}, the
+ dvi-to-postscript converter.
+
+\item[\texttt{pdftex}] For users of \textsf{pdftex} application.
+
+\item[\texttt{dvipdfm}] For users of \textsf{dvipdfm} application.
+
+\item[\texttt{textures}] For \textsf{textures} users. (This
+option is totally untested.)
+\end{description}
+\noindent These options are passed on to \textsf{hyperref} and to
+\texttt{eforms}\footnote{A component of \AcroB.} for the proper
+creation of links and form fields.
+
+\subsection{Configuration Files}
+
+The \textsf{eqexam} looks for two configuration files, they are
+\texttt{web.cfg} and \texttt{eqexam.cfg}.
+
+The first one \texttt{web.cfg} may be already present on your hard
+drive if you use the {\AcroB}. Typically, desired default driver
+option is placed in here, for example, \texttt{web.cfg} might
+contain the single line,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\ExecuteOptions{dvips}
+\end{Verbatim}
+\noindent for users of the \textsf{dvips} application for
+converting \texttt{.dvi} files to \texttt{.ps} file. The drivers
+supported by \textsf{eqexam} are listed in the previous section.
+
+The second configuration file, \texttt{eqexam.cfg}, is input at
+the end of the package, provided the document author takes the
+\texttt{myconfig} option. Use this file to redefine some of the
+commands described in \Nameref{custom}, and elsewhere, to
+customize \textsf{eqexam}. An obvious use for this is to have a
+language customization of the package, input through
+\texttt{eqexam.cfg}.
+
+If you place \texttt{eqexam.cfg} in the {\LaTeX} search path,
+these customization will be global to all documents that specify
+the \texttt{myconfig} option. If is is placed in the source
+document folder (which is not in the {\LaTeX} search path) the
+changes are local to all documents developed in that folder.
+
+\subsection{The \texttt{solutionsonly} Option}\label{solutionsonly}
+
+With this option, it is possible to obtain a listing of only the solutions
+in an \textsf{eqexam} source file. A possible application of this feature
+is if you publish homework or practice test questions, you can later
+publish the solutions to them.
+
+%\handpoint The demo file for this option is \texttt{eqex\_solnsonly.tex}, where you
+%will find detailed instructions for how to do this. See also the file
+%\texttt{text03.tex}, which demos both the \texttt{solutionsonly} option and the
+%\texttt{vspacewithsolns} option.
+
+\exAeBBlogPDF{p=1227} The demo file for this option is
+\texttt{\href{\urlAcroTeXBlog/?p=1227}{eqex\_solnsonly.pdf}}, available from
+the {\AcroBlog} website. The source file is attached to the PDF. Within the
+source file, you will find detailed instructions for how to create a
+solutions-only file.
+
+
+\subsection{The \texttt{vspacewithsolns} Option}\label{vspacewithsolns}
+
+With option is a combination of \texttt{nosolutions} (where vertical
+spaces are left for extended response questions, and multiple choice and
+fill-in the blank are left, well, blank) and compiling the document
+with no options at all, in this case the solutions appear at the end of
+the document.
+
+To summarize, when \texttt{vspacewithsolns} is used, the test section is
+left blank for the student to fill in, but at the end of the document are
+the solutions. I've recently used this option to compile an old test (from
+a previous semester) and publish it on the web. The student can try
+solving the old test, with the solutions at the end of the
+document.\footnote{Another option is to first publish your old exam with
+the \texttt{nosolutions} option, then, after a suitable time, publish the same document
+with the \texttt{solutionsonly} option.}
+
+\newtopic An alias for this option is the option \texttt{ftbsolns}.
+
+\exAeBBlogPDF{p=1220} The demo file for this feature is named
+\texttt{\href{\urlAcroTeXBlog/?p=1220}{hw02.pdf}}. See also the file
+\texttt{\href{\urlAcroTeXBlog/?p=1206}{test03.pdf}}, which demos both the
+\texttt{solutionsonly} option and the \texttt{vspacewithsolns} option.
+
+\subsection{The \texttt{fortextbook} Option and \textsf{fortextbook} Package}\label{ftbop}
+
+This option is designed for authors of textbooks. The \texttt{fortextbook}
+option defines the \texttt{probset} environment---used to create problems
+sets in the textbook---as a re-purposing of the \texttt{exam}
+environment. When the text is compiled with the \texttt{studented} option
+(student edition), only odd-numbered solutions/answers are written to the
+end of the document; when the \texttt{instred} option (instructor edition) is
+used, all solutions/answers are written to the end of the document, there
+are options for annotating the book with the answers in the margins or
+following the questions (instructor edition).
+
+Documentation for this option is found in the \texttt{doc/fortextbook}
+folder. See the file \texttt{fortextbook.pdf} and its source file
+\texttt{fortextbook.ltx}.
+
+To use the \texttt{fortextbook} option, a whole panoply of options are needed,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\usepackage[%
+ fortextbook,ftbsolns,usecustomdesign,
+ forcolorpaper,noseparationrule,usexkv
+]{eqexam}
+\end{Verbatim}
+Accompanying the \textsf{eqexam} is a simple wrapper package called
+\texttt{fortextbook}, which basically calls \textsf{eqexam} with all the above
+options. So, the textbook author needs only to specify,
+
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\usepackage{fortextbook}
+\end{Verbatim}
+The documentation for this option is quite extensive and is
+available in the separate document \texttt{fortextbook.pdf}. This
+document is a short ``textbook'' that illustrates and documents
+the features of this option.
+
+See the \textbf{\ulSetLink{http://www.acrotex.net/blog}{Acro\TeX{}
+Blog}} for several articles on the \texttt{fortextbook} option,
+beginning with the first article
+\textsl{\ulSetLink{http://www.acrotex.net/blog/?p=604}{The
+\texttt{fortextbook} option, Part 1, The Instructor Edition}}. A
+listing of all articles of the
+\ulSetLink{http://www.math.uakron.edu/~dpstory/eqexam.html}{\textsf{eqexam}
+package} may be obtained by following
+\ulSetLink{http://www.acrotex.net/blog/?tag=eqexam-package}{this
+link}.
+
+The full series of articles on the \texttt{fortextbook} option may be found under the
+\ulSetLink{http://www.acrotex.net/blog/?tag=fortextbook}{fortextbook tag} at the blog site.
+
+
+
+\section{The \texttt{online} and \texttt{email} Options}\label{email}
+
+When you use the \texttt{online} option, all fields created by the
+\cs{fillin} command, and this includes \cs{TF}, are converted into
+text fields, and the white space created by the \texttt{solutions}
+environment is converted to a multi-line text field. The fields
+manifest themselves when the document is viewed within the Adobe
+Reader, or any other {\PDF} viewer that supports form fields.
+
+This may be a useful option to the few people out there who are
+not in a technical field that requires specialized symbols to
+respond to a question. An exam created by the \texttt{online}
+option can be filled out online, printed, and submitted to the
+course instructor, perhaps within a lab setting.
+
+There are other applications, such as creating a course survey, or
+a questionnaire of some type the students can fill out and submit.
+The \texttt{email} option may be more appropriate for these
+applications.
+
+\subsection{The \texttt{email} Option}
+
+When you pass the \texttt{email} option to \textsf{eqexam}, this
+does everything the \texttt{online} option does, in addition, it
+creates a ``Submit'' button that appears in the top-left margin of
+the exam (it does not appear on the cover page), and is placed
+there by the \cs{maketitle} command, that normally goes just after
+the opening of the document environment, \verb+\begin{document}+.
+
+The forms button is all setup to submit to the server-side script,
+\textsf{eqAttach.asp}, an active server page using
+\textsf{vbscript} as its scripting language. This script, when
+properly installed and functional, receives the form data
+generated by the document and attaches it to an email, which it
+sends off to the designated destination. Before discussing how to
+install and use \textsf{eqAttach.asp}, let me cover some commands
+that controls this button as well as options for changing what is
+sent to the server-side script.
+
+When you take the \texttt{email} option, you need to supply a
+minimum of two pieces of information: the path to the server-side
+script \textsf{eqAttach.asp} and the email address of the person
+the results are to be sent. The command \cs{SubmitInfo} is used to
+supply this info, for example,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\SubmitInfo{http://localhost/scripts}{dpstory@uakron.edu}
+\end{Verbatim}
+This command takes two arguments, the first is the URL to the
+server-side folder that contains \textsf{eqAttach.asp}, the second
+argument is the email address of the recipient of the email. (You
+can have multiple recipients by separating the address by an
+comma.)
+
+After the student submits the responses to the questions, an email
+is sent to the recipient (the instructor, perhaps). When the
+recipient receives the email, s/he can save the {\FDF} attached file
+(containing the student responses) to a folder on the local hard
+drive. At least for a Windows machine when you open the {\FDF}, the
+{\PDF} will be fetched and the student data will be populated into
+the form fields.
+
+Once this is done, the instructor can either save the populated
+file to the hard drive for later processing (the Acrobat
+application needed for this step) or print it to a printer for
+grading by hand.
+
+If the instructor has Acrobat, s/he can use the markup capability
+of Acrobat to grade the electronic version of the test, and return
+the electronic version, with markup, to the student.
+
+Below is the subject and message body of a ``typical'' submittal for the
+student ``John Q. Student''.
+
+\begin{flushleft}
+Message Subject:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+Exam Results: Test 1 of U. S. History
+\end{Verbatim}
+\end{flushleft}
+
+\begin{flushleft}
+Message Body:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+Exam Information:
+ Course Name: U. S. History
+ Exam: Test 1
+ Student: John Q. Student
+ TimeOfQuiz: 1/19/2005 12:07:56 PM
+\end{Verbatim}
+The {\FDF} is attached.
+\end{flushleft}
+
+
+\noindent The following commands can be used to modify the email message.
+
+\redpoint\cs{EmailCourseName} is used to specify the name of the
+course. The default value for this is \cs{websubject}, obtained
+from the \cs{subject} macro used in the preamble; however, if you
+want a different name in the email, perhaps with more information
+included, you can redefine the value using this macro.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\EmailCourseName{\websubject} % the default
+\end{Verbatim}
+
+\noindent\textbf{\color{red}Important:} When you use {\TeX}
+formatting in the subject, such as
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\subject{\bfseries Calculus 1}
+\end{Verbatim}
+and you are using the \texttt{email} option, it will
+be necessary to use \cs{EmailCourseName} to redefine the subject, e.g.,
+\verb+\EmailCourseName{Calculus 1}+, to avoid possible {\TeX} compile
+errors, or to prevent {\TeX} primitives being a part of your
+email!
+
+\redpoint\cs{EmailExamName} is used to specify the exam name of
+the course. The default value for this is \cs{webtitle}, obtained
+from the \cs{title} macro used in the preamble; however, if you
+want a different name in the email, perhaps with more information
+included, you can redefine the value using this macro.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\EmailExamName{\webtitle} % the default
+\end{Verbatim}
+
+\noindent\textbf{\color{red}Important:} If you use some {\TeX}
+formatting in the title, such as
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\title{\bfseries Test 1}
+\end{Verbatim}
+and you are using the \texttt{email} option, it will be necessary
+to use \cs{EmailExamName} to redefine the title, e.g.,
+\verb+\EmailExamName{Test 1}+, to avoid possible {\TeX} compile
+errors, or to prevent {\TeX} primitives being a part of your
+email!
+
+\redpoint\cs{EmailSubject} The document author might want a custom
+subject in the email, instead of the standard one. By using this
+macro, he can design his own email subject.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\EmailSubject{} % the default
+\end{Verbatim}
+\noindent In this case \textsf{eqAttach.asp} inserts the standard one.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+Exam Results: \webtitle of \websubject
+\end{Verbatim}
+\noindent The email would read ``\texttt{Exam Results: Test 1 of
+Calculus I}'', for example.
+
+To change the email subject we would put the following command in
+the preamble:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\EmailSubject{Another Set of Cool Results}
+\end{Verbatim}
+
+\redpoint \cs{ServerRetnMsg} The server script
+(\textsf{eqAttach.asp}) returns a message acknowledging the
+receipt of the data, this command allows the document author to
+customize the return message. The default definition is:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\ServerRetnMsg{}
+\end{Verbatim}
+\noindent In this case \textsf{eqAttach.asp} inserts the standard
+one, ``Exam results successfully sent to your instructor!''.
+
+To change the return message to something more meaningful, put
+this command in the preamble, for example,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\ServerRetnMsg{Your responses to the \\TeX Survey have been
+ received, thank you!}
+\end{Verbatim}
+
+\redpoint\cs{SubmitButtonLabel} is the label that appears on the
+submit button.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\SubmitButtonLabel{Submit} % the default
+\end{Verbatim}
+
+
+\subsubsection{Installing \textsf{eqAttach.asp}}
+
+On the server side, in order for \textsf{eqAttach.asp} to run
+correctly, Microsoft Internet Information Server (IIS), version
+4.0 or greater, is needed. The script \textsf{eqAttach.asp} needs
+to be placed where ASP scripts have execute permissions.
+
+The \textsf{eqAttach.asp} uses the \textsl{Acrobat FDF
+Toolkit}\footnote{Currently located at the
+\href{http://partners.adobe.com/public/developer/acrobat/devcenter.html}
+{Acrobat Family Developer Center}.}, version 6.0. Follow the
+directions for installation contained in the accompanying
+documentation.
+
+Install \textsf{eqAttach.asp} in a folder (perhaps called
+\texttt{Scripts}) designated to execute scripts. If you don't
+have such a folder, then the following steps explain how to
+create a virtual directory through IIS that points to this folder.
+
+\begin{enumerate}
+\item Create a new folder on the system (\texttt{Scripts}, for
+example). Its recommended location is inside the \texttt{Inetpub}
+folder.
+
+\item Place \textsf{eqAttach.asp} in this newly created folder.
+
+\item In the MMC snap-in for IIS, create a virtual directory by
+right-clicking on the Default Web Site and selecting \texttt{New >
+Virtual Directory}.
+
+\item Type ``Scripts'' (or whatever the name of the folder you
+created in~Step~1) as the alias for the virtual directory, and
+then link it to the physical directory you created in Step~1.
+
+\item Make sure that ``Script execution'' privileges are enabled.
+If not, enable them.
+\end{enumerate}
+
+
+\subsubsection{Setting up and Modifying the Script}
+
+On the server side, in order for \textsf{eqAttach.asp} to run
+correctly, Microsoft Internet Information Server (IIS), version
+4.0 or greater, is needed. The script \textsf{eqAttach.asp} should
+be placed where ASP scripts have execute permissions. There are
+two methods of sending e-mail:
+\begin{enumerate}
+ \item \texttt{CDONTS}: This method (which is commented out by
+ default) can be used on an NT server. Uncomment if you want to
+ use CDONTS, and comment out the CDOSYS code lines that follow.
+ \item \texttt{CDOSYS}: This can be run on a Win2000 or WinXP
+ server.
+\end{enumerate}
+
+The script needs to be modified appropriate to your server, in
+particular, search down in \texttt{eqAttach.asp} for the
+configuration line
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+eqMail.Configuration.Fields.Item
+ ("http://schemas.microsoft.com/cdo/configuration/smtpserver")
+ = "mySMTP"
+\end{Verbatim}
+\noindent replace \texttt{mySMTP} with your SMTP server.
+
+\subsubsection{Some Options}
+
+The default behavior of \textsf{eqAttach.asp} is to return a
+message to the document that indicates the receipt of the data,
+this message is``Exam results successfully sent to your
+instructor!'' The message, as explained earlier, can be changed
+using the \cs{ServerRetnMsg}, like so
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\ServerRetnMsg{Your TeX survey results have been received, thank you.}
+\end{Verbatim}
+\noindent Now, if for whatever reason you don't want this
+confirmation message to return to the document for display in
+alert box, you can sent the \texttt{silent} as part of the query
+string. For example, if
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\SubmitInfo{http://myWebSite/scripts/eqAttach.asp?silent\#FDF}
+ {myname@mymailprovider}
+\end{Verbatim}
+\noindent placed in the preamble of your document specifies the
+path to the script, silent mode, and the email address of the
+recipient of the form data.
+
+\medskip\noindent
+Another other feature of \textsf{eqAttach.asp} that can be changed
+through the query string is the \texttt{/F} key-value pair of the
+\texttt{FDF} sent out in email. The value of this key is the path
+to the document that sent the \texttt{FDF}, it may be a url (an
+address on the Internet) or it could be a file specification of a
+local hard drive. If you specify \texttt{nopath} in the query
+string, like so
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\SubmitInfo{http://myWebSite/scripts/eqAttach.asp?nopath\#FDF}
+ {myname@mymailprovider}
+\end{Verbatim}
+\noindent then \textsf{eqAttach.asp} strips out the file path and
+leaves only the file name.
+
+\redpoint This is what I did with the \texttt{tex\_survey.tex}
+source file. I placed \texttt{tex\_survey.pdf} in a \texttt{LaTeX
+Survey} folder on my desktop. As the emails came in, I saved the
+\textsf{FDF} attachments to this folder. By (double) clicking on
+the \textsf{FDF}, \texttt{tex\_survey.pdf}, which is in the same
+folder, opened and the form data populated the fields from whence
+they were sent. It worked well for me.
+
+If you don't use the \texttt{nopath} option, when you click
+on an \texttt{FDF} file you've received by email, your browser
+opens and the PDF on the Internet is brought into the
+browser and the form data populates the form fields, \dots at least on
+a Windows machine. \texttt{:-)}
+
+\subsubsection{References}
+
+The following links were used as a reference in the development of the
+\texttt{Email.asp} script.
+\begin{itemize}
+ \item CDOSYS:
+ \begin{itemize}
+ \item \href{http://invisionportal.com/show_tutorial.asp?TutorialID=160}{Invision Portal} Tutorial: CDOSYS email tutorial
+ \item \href{http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_imessage_interface.asp}
+ {MSDN}: CDO for Windows 2000. The IMessage Interface. (Use MIE to view this page.)
+ \item \href{http://www.asp101.com/articles/john/cdosmtprelay/default.asp}{ASP 101} Sending Email Via an External SMTP Server Using CDO
+ \end{itemize}
+ \item CDONTS
+ \begin{itemize}
+ \item \href{http://www.juicystudio.com/tutorial/asp/cdonts.html}{Juicy Studio} The ASP CDONTS Component
+ \item \href{http://www.devasp.com/Samples/mail.asp}{DevASP} Sending Mail from ASP with CDONTS.NewMail Object
+ \end{itemize}
+\end{itemize}
+
+\section{Bells, Whistles and other Customizations}
+
+\subsection{Customizations}\label{custom}
+
+We enumerate some commands for changing the default design of \textsf{eqexam}.
+
+\subsubsection{Course Info Commands}\label{courseInfo}
+
+\textsf{eqexam} has several commands for the student to provide some identification
+information.
+
+\redpoint \cs{eqexamName}. This command defines the macro
+\cs{eq@ExamName} that creates the underlined space for the student
+to enter his/her name, and also defines the text box form field,
+in the case the \texttt{online} or \texttt{email} options are
+taken. There are two (design) parameters for \cs{eqexamName}
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\eqexamName[!meta(eforms_opts)]{!meta(width)}
+\end{Verbatim}
+\noindent The first optional parameter can be used to modify the
+appearance of the text field, see the \href{eformman.pdf}{eForms}
+documentation for details. The second parameter is the width of
+the field. The default definition is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\eqexamName[\Ff\FfRequired]{2.25in}
+\end{Verbatim}
+\noindent Here, the text field that will be generated (when
+\texttt{online} or \texttt{email} is specified) will be a required
+field. The total width of the space provided is $2.25$ inches.
+
+The command \cs{examNameLabel} controls the label to be used for
+this name field. It takes one parameter, the label
+to be used for the name field; the default definition is
+\verb+\examNameLabel{Name:}+.
+
+\redpoint \cs{eqSID}. This command defines the macro \cs{eq@SID}
+that creates the underlined space for the student to enter his/her
+student Identification number (SID), and also defines the text box
+form field, in the case the \texttt{online} or \texttt{email}
+options are taken. There are two (design) parameters for
+\cs{eqSID}
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\newcommand\eqSID[!meta(eforms_opts)]{!meta(width)}
+\end{Verbatim}
+\noindent The first optional parameter can be used to modify the
+appearance of the text field, see the \href{eformman.pdf}{eForms}
+documentation for details. The second parameter is the width of
+the field. The default definition is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\eqSID[\Ff\FfRequired]{2.25in}
+\end{Verbatim}
+\noindent Here, the text field that will be generated (when
+\texttt{online} or \texttt{email} is specified) will be a required
+field. The total width of the space provided is $2.25$ inches.
+
+The command \cs{examSIDLabel} controls the label used for this SID field.
+It takes one parameter, the label to be used for the name field; the
+default is \verb+\examSIDLabel{SID:}+.
+
+\redpoint \cs{eqEmail}. This command defines the macro
+\cs{eq@Email} that creates the underlined space for the student to
+enter his/her student email address, and also defines the text box
+form field, in the case the \texttt{online} or \texttt{email}
+options are taken. There are two (design) parameters for
+\cs{eqEmail}
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\newcommand\eqEmail[!meta(eforms_opts)]{!meta(width)}
+\end{Verbatim}
+\noindent The first optional parameter can be used to modify the
+appearance of the text field, see the \href{eformman.pdf}{eForms}
+documentation for details. The second parameter is the width of
+the field. The default definition is
+\begin{Verbatim}[xleftmargin=\leftmargini,]
+\eqEmail{2.25in}
+\end{Verbatim}
+\noindent Here, the text field that will be generated (when
+\texttt{online} or \texttt{email} is specified). The total width
+of the space provided is $2.25$ inches.
+
+
+The command \cs{examEmailLabel} controls the label to be used for
+this email field. It takes one parameter, the
+label to be used for the name field; the default definition is
+\verb+\examEmailLabel{Email:}+.
+
+
+\subsubsection{Changing the Title and Cover Page}
+
+\redpoint \cs{maketitle}. The main heading that appears at the top
+of the first page of the exam is created by the {\LaTeX}
+(redefined) command \cs{maketitle}. The \cs{maketitle} has some
+code to place the email button in the top margin, followed by the
+expansion of the command \cs{maketitledesign}, whose definition is
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\newcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\websubject\\\@date}\hfill
+ \shortstack[c]{\webtitle\\\strut\@altTitle}\hfill
+ \shortstack[l]{\strut\eq@ExamName\\\webauthor}}%
+}
+\end{Verbatim}
+This command can be redefined using \cs{renewcommand} to suite your needs, for example,
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\makeatletter
+\renewcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\websubject\\\webauthor, \@date}\hfill
+ \shortstack[l]{\webtitle\\\strut\@altTitle}\hfill
+ \shortstack[l]{\strut\eq@ExamName\\\eq@SID}}%
+}
+\makeatother
+\end{Verbatim}
+\noindent This code adds in a field for the student to enter
+his/her student Id, here we enclose the code in a
+\cs{makeatletter}/\cs{makeatother} because this redefinition
+occurs in the preamble, and the code has an `\texttt{@}' in it.
+
+Command elements that are appropriate to the redefinition are \cs{maketitledesign} are\dots
+\begin{description}
+ \item[\cs{websubject}] This is the course name, as determined by the \cs{subject} command.
+ \item[\cs{webtitle}] This is the exam name as determined by the \cs{title} command.
+ \item[\cs{altTitle}] An additional text field that is placed below \cs{webtitle}.
+ \item[\cs{@date}] This is the date as determined by the \cs{date} command.
+ \item[\cs{eq@ExamName}] This is the name field for the student to enter his/her name, as defined
+ by default or redefined by \cs{eqexamName}, see \Nameref{courseInfo}.
+ \item[\cs{eq@SID}] This is the student ID field for the student to enter his/her ID, as
+ defined by default, or redefined by the command \cs{eqSID}, see \Nameref{courseInfo}.
+ \item[\cs{eq@Email}] This is the student email field for the student to enter an email address, as
+ defined by default, or redefined by \cs{eqEmail}, see \Nameref{courseInfo}.
+ \item[\cs{theduedate}] This is a text macro defined by the \cs{duedate} command. For example, setting
+ \verb+\duedate{03/10/05}+ defines \cs{theduedate} so that it expands to \texttt{03/10/05}. May
+ be useful when redefining \cs{maketitledesign} for a homework assignment page.
+\end{description}
+
+\redpoint \cs{eqexcoverpagedesign}. When the \texttt{coverpage} option is
+taken, a default cover page appears unless it is redefined. The
+\textsf{eqexam} package provides \cs{eqexcoverpagedesign} to design your
+own cover page. The default cover page uses the
+
+\begin{description}
+ \item[\cs{websubject}] This is the course name, as determined by the \cs{subject} command.
+ \item[\cs{webtitle}] This is the exam name as determined by the \cs{title} command
+ \item[\cs{webuniversity}] This is the value set by the \cs{university} command, given
+ in the preamble.
+ \item[\cs{@date}] This is the date as determined by the \cs{date} command.
+ \item[\cs{eq@ExamName}] This is the name field for the student to enter his/her name, as defined
+ by default or redefined by \cs{eqexamName}, see \Nameref{courseInfo}.
+ \item[\cs{eq@SID}] This is the student ID field for the student to enter his/her ID, as
+ defined by default, or redefined by the command \cs{eqSID}, see \Nameref{courseInfo}.
+ \item[\cs{eq@Email}] This is the student email field for the student to enter his/her email address, as
+ defined by default, or redefined by \cs{eqEmail}, see \mlNameref{courseInfo}.
+\end{description}
+Copy the definition of \cs{eqexcoverpagedesign} from
+\textsf{eqexam.dtx} and modify as desired. Place the new
+definition in the preamble (enclosed between
+\cs{makeatletter} and \cs{makeatother}) or in a custom style file. No
+special support for this design is offered, because a cover page
+can be designed in so many different ways.
+
+\newtopic Another command associated with the \texttt{coverpage} option,is the
+\cs{place\-Cover\-Page\-Logo}, a simple command used to insert a logo on the cover page.
+The logo can be used to cover the score in the next page if the
+instructor places the score under the logo. Example of usage
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\placeCoverPageLogo{5in}{-1.5in}{\includegraphics{nwfsc_logo}}
+\end{Verbatim}
+Working from the upper left corner, the first parameter is the amount to move to logo
+to the right, the second parameter is the amount to move the logo vertically. The
+Third parameter is the content; perhaps an \cs{includegraphics} command.
+
+
+\subsubsection{Changing the Running Headers}
+
+There are two running headers, one header for the exam itself, and
+another when the solutions are shown at the end of the document.
+
+\redpoint Running Header for Exam. The commands \cs{lheadeqe},
+\cs{cheadeqe} and \cs{rheadeqe} are used for defining the left, right, and
+center running headers. \textbf{Note:} these commands have been recently
+renamed, originally they were named \cs{lhead}, \cs{chead} and \cs{rhead},
+but this conflicts with the \textsf{fancyhdr} package. If
+\textsf{fancyhdr} has not been loaded by the time \textsf{eqexam} is
+loaded, the eqexam definitions for \cs{lhead}, \cs{chead} and \cs{rhead}
+still hold. Generally, it is recommended that the new command be used,
+\cs{lheadeqe}, \cs{cheadeqe} and \cs{rheadeqe}.
+
+\begin{enumerate}
+\item \begin{Verbatim}[commandchars=!()]
+\lheadeqe{!meta(text)}
+\end{Verbatim}
+Changes the left header text of the running header. This command defines an
+internal macro \cs{eq@lhead} that actually contains the text. The default is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\lheadeqe{\shortwebsubject/\shortwebtitle}
+\end{Verbatim}
+
+\item \begin{Verbatim}[commandchars=!()]
+\cheadeqe{!meta(text)}
+\end{Verbatim}
+Changes the center header text of the running header.
+This command defines an internal macro \cs{eq@chead} that actually
+contains the text. The default is
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\cheadeqe{-- Page \arabic{page}\space of \nPagesOnExam\space--}
+\end{Verbatim}
+
+\item \begin{Verbatim}[commandchars=!()]
+\rheadeqe{!meta(text)}
+\end{Verbatim}
+\noindent Changes the right header text of the running header.
+This command defines an internal macro \cs{eq@rhead} that actually
+contains the text.
+\item[]The default is \verb+\rhead{\eq@ExamName}+.
+\end{enumerate}
+If you want to redesign the layout of the running
+header, here is the macro that the above components fill.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\newcommand\runExamHeader{\eq@lhead\hfill\eq@chead\hfill\eq@rhead}
+\end{Verbatim}
+
+\redpoint Running Header for Solutions. The components of the
+running header for the solutions pages occur, as above, on the left, center
+and right of each header are defined by the commands \cs{lheadSol},
+\cs{cheadSol} and \cs{rheadSol}.
+
+\begin{enumerate}
+\item \begin{Verbatim}[commandchars=!()]
+\lheadSol{!meta(text)}
+\end{Verbatim}
+\noindent Changes the left header text of the running header. This
+command defines an
+internal macro \cs{eq@lheadSol} that actually contains the text. The default is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\lheadSol{\shortwebsubject/\shortwebtitle}
+\end{Verbatim}
+
+
+\item \begin{Verbatim}[commandchars=!()]
+\cheadSol{!meta(text)}
+\end{Verbatim}
+\noindent Changes the center header text of the running header.
+This command defines an internal macro \cs{eq@cheadSol} that
+actually contains the text. The default is
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\cheadSol{-- Page \arabic{page}\space of \nPagesOnExam\space--}
+\end{Verbatim}
+
+\item \begin{Verbatim}[commandchars=!()]
+\rheadSol{!meta(text)}
+\end{Verbatim}
+\noindent Changes the right header text of the running header.
+This command defines an internal macro \cs{eq@rheadSol} that
+actually contains the text. The default definition is
+\verb+\rheadSol{SOLUTIONS}+.
+\end{enumerate}
+\noindent If you want to redesign the layout of the running
+header, here is the macro that the above components fill.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\runExamHeaderSol
+ {\eq@lheadSol\hfill\eq@cheadSol\hfill\eq@rheadSol}
+\end{Verbatim}
+
+\subsubsection{Changing the Running Footers}
+
+The default set up of \textsf{eqexam} is to use no running footers;
+actually, that's not quite right. \textsf{eqexam} places the command
+\cs{settotalsbox} in the footer; this command is the one that places the
+totals boxes, when requested.
+
+\newtopic\textsf{eqexam} defines three commands for the footer,
+\settowidth{\aebdimen}{\ttfamily\string\lfooteqe\darg{\meta{text}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\lfooteqe{!meta(text)}
+\cfooteqe{!meta(text)}
+\rfooteqe{!meta(text)}
+\end{dCmd}
+\noindent where the \meta{text} is placed at the left, center, and
+right of the running footer. The default for each is empty text. These
+three comprise the definition of \cs{runExamFooter}
+\begin{dCmd}{\linewidth}
+\newcommand{\runExamFooter}{\eq@lfoot\hfill\eq@cfoot\hfill\eq@rfoot}
+\end{dCmd}
+\noindent The \cs{settotalsbox} and \cs{runExamFooter} then appear in the definition
+of \cs{@oddfoot} in the definition of the \texttt{eqExamheadings} page style.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\renewcommand{\@oddfoot}{\settotalsbox\runExamFooter}
+\end{Verbatim}
+When doing any re-definition of the running footers at the \cs{@oddfoot} command,
+be sure to include \cs{settotalsbox} on the \emph{left side of the running footer}; otherwise,
+you will not have a totals box when you request one.
+
+
+\subsubsection{Exam Strings}
+
+In this section we list a new commands that contain information about the exam.
+
+\settowidth{\aebdimen}{\ttfamily\string\nPagesOnExam}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\nPagesOnExam
+\end{dCmd}
+\noindent The command \cs{nPagesOnExam} expands to the total number of pages in the exam.
+
+\settowidth{\aebdimen}{\ttfamily\string\nQuesInExam\darg{\meta{exam\_name}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\nQuesInExam[!meta(exam_name)]
+\end{dCmd}
+\noindent \cs{nQuesInExam} expands to the total number of questions in the
+exam. The command takes an optional argument, the \meta{exam\_name}
+(this is the name given the exam as the required argument of the
+\texttt{exam} environment). If the argument is not given, the name of the
+current exam is used (when executed within an \texttt{exam} environment).
+When \cs{nQuesInExam} outside an \texttt{exam} environment, the value of
+the optional argument needs to be specified.
+
+\newtopic There are several commands are useful for documents that have several
+\textsf{eqexam} environments, these are
+\settowidth{\aebdimen}{\ttfamily\string\percentForPart\darg{\meta{exam\_name}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\theGrandTotal
+\totalForPart{!meta(exam_name)}
+\percentForPart{!meta(exam_name)}
+\end{dCmd}
+\noindent The first command sums the point totals for each of the
+\texttt{exam} environments. The latter two, each taking one argument, the
+name associated with the \texttt{exam}, reports the points for that
+\texttt{exam} environment and the percent of the total for that
+\texttt{exam} environment.
+
+\newtopic Below is a recent example taken from a final exam that I constructed for my class.
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\begin{eqComments}[Final Exam:] (\theGrandTotal\space points) The
+final exam has two parts:
+ \textbf{Part I} (\totalForPart{InstrQuestions} points or
+ \percentForPart{InstrQuestions} of the total points) consists of
+ questions written by the instructor;
+ \textbf{Part II} (\totalForPart{GenEd} points or
+ \percentForPart{GenEd} of the total points) consists of
+ questions provided by the Department of Mathematics.
+\end{eqComments}
+\end{Verbatim}
+
+\promoteNewPageHere{10pt}
+
+\handpoint The calculation of \cs{percentForPart} is done in one of two ways:
+\begin{enumerate}
+ \item If the \textsf{fp} package is loaded, ``floating point
+ arithmetic'' is used and results are rounded to the number of
+ decimal points determined by \cs{nPctDecPts}, the default
+ definition of which is \verb!\newcommand{\nPctDecPts}{1}!. This command may be redefined
+ to another nonnegative integer value.
+\item Otherwise---if the \textsf{fp} package is \emph{not
+ loaded}---\TeX's count registers are used, the percentage rounded
+ to the nearest integer.
+\end{enumerate}
+
+\newtopic The calculations are made when the \cs{maketitle} command is
+expanded. If, for whatever reason, you are not using \cs{maketitle}, you
+can place the command that does the calculations,
+\cs{EQEcalculateAllTotals}, just after \verb!\begin{document}!, and before
+the first use of \cs{theGrandTotal} and \cs{percentForPart}.
+
+\settowidth{\aebdimen}{\ttfamily\string\firstPageOfExam\darg{\meta{exam\_name}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\firstPageOfExam{!meta(exam_name)}
+\lastPageOfExam{!meta(exam_name)}
+\end{dCmd}
+\noindent These two commands expand the page numbers of the beginning and the ending
+of the exam environment, respectively, with name \meta{exam\_name}.
+
+\subsubsection{Localization of Strings}
+
+% Added 01/10/06
+% \examNameLabel
+% \ptsLabel, \ptsLabel
+% \eachLabel
+% \pointsLabel, \pointLabel
+% \defaultInstructions
+
+In this section we list various macros that expand to text
+appearing on an \textsf{eqexam} document. The default text is in
+English. These commands can be redefined to other English
+language phrases, or to other languages, and placed in the preamble of your document,
+or in one of the \texttt{.cfg} files.
+
+\begin{itemize}
+% Added 01/10/06
+\item\cs{examNameLabel}: On each page of the exam, there is a place
+for the student to enter her/his name. \cs{examNameLabel} can be
+used to define the name label, the default is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\examNameLabel{Name:}
+\end{Verbatim}
+\item \cs{examAnsKeyLabel}: When the \texttt{answerkey} option is in
+ effect, the line in which the student enters her/his name (labeled by
+ \cs{examNameLabel}) is filled by the value of the text macro
+ \cs{examAnsKeyLabel}. The default definition is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\examAnsKeyLabel{Answer Key}
+\end{Verbatim}
+Thus, when the \texttt{answerkey}
+option is used, the name field appears as follows:
+\begin{flushleft}
+\underbar{\makebox[2.5in][l]{Answer Key}}
+\end{flushleft}
+
+\item\cs{ptLabel} and \cs{ptsLabel}: Labels for indicating the points of a problem, the first is
+the singular form of the second. The default is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\ptLabel{pt} % singular form
+\ptsLabel{pts} % plural form
+\end{Verbatim}
+\item\cs{eachLabel}: Label for indicating the common point value of each of several parts
+of the same problem.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\eachLabel{ea.}
+\end{Verbatim}
+\item\cs{pointLabel} and \cs{pointsLabel}: The word for `points' used in the \texttt{instructions} environment
+ that lists the number of points in this exam. The default is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\pointLabel{point} % singular form
+\pointsLabel{points} % plural form
+\end{Verbatim}
+The \cs{pointsLabel} command defines \cs{eq@pointsLabel}, which,
+in turn, is used in the \cs{summaryTotalsTxt}, the definition of
+which follows:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand{\summaryTotalsTxt}
+ {($\summaryPointTotal\,\text{\eqpointsLabel}$)}
+\end{Verbatim}
+\item\cs{defaultInstructions}: The \texttt{instructions} environment has a default heading.
+The command \cs{defaultInstructions} allows you to change this heading. The default is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\defaultInstructions{Instructions.}
+\end{Verbatim}
+\end{itemize}
+
+\newtopic See \Nameref{ptTotalsBoxes} as well as the section \mlNameref{courseInfo} for
+additional details on these and commands useful for laying out the
+standard text of an \textsf{eqexam} document.
+
+\subsubsection{Customization of Color}\label{customColor}
+
+When the \texttt{forcolorpaper} option is used, various elements---such as
+section titles, instruction headers, color for fill-in problems, and so on---have default colors. In
+this section we list the color controls, along with their default definitions.
+
+\begin{Verbatim}[numbers=left,xleftmargin=\leftmargini,fontsize=\fontsize{10}{14}\selectfont]
+\proofingsymbolColor{red}
+\instructionsColor{blue}
+\eqCommentsColor{blue}
+\eqCommentsColorBody{black}
+\universityColor{blue}
+\titleColor{black}
+\authorColor{black}
+\subjectColor{blue}
+\linkcolor{blue}
+\nolinkcolor{blue}
+\fillinColor{red}
+\forceNoColor
+\end{Verbatim}
+
+\noindent\textbf{Description of Color Commands:}
+\begin{enumerate}
+ \item The color of the proofing symbol, it appear for multiple
+ choice questions with the \texttt{answerkey} option in effect.
+ \item The color of the header text for the \texttt{instructions} environment.
+ The header is the text that appears in the optional argument.
+ \item The color for the header text for the \texttt{eqComments} environment.
+ The header is the text that appears in the optional argument.
+ \item The color for the body of the text for the \texttt{eqComments} environment.
+ \item The color of the university, visible only when the \texttt{coverpage} option is taken.
+ \item The color of the title, visible only when the \texttt{coverpage} option is taken.
+ \item The color of the author, visible only when the \texttt{coverpage} option is taken.
+ \item The color of the subject, visible only when the \texttt{coverpage} option is taken.
+ \item The color applied to a link, applies only when \textsf{hyperref} is included through one of the PDF options,
+ \texttt{links}, \texttt{online}, or \texttt{email}.
+ \item The color applied to a link that has been turned off, applies
+ only when \textsf{hyperref} is included through one of the PDF options,
+ \texttt{links}, \texttt{online}, or \texttt{email}.
+ \item The color of the a fill-in (including a True/False question)
+ when one of the options \texttt{answerkey},
+ \texttt{vspacewithsolns}, or \texttt{solutionsonly} is
+ taken.
+ \item This convenience command forces all the above colors to black. Useful when you want to use the
+ \texttt{showgrayletters}. This produces a black and white document, with gray letters. (If you use the
+ \texttt{forpaper} option, the gray letters appear black.)
+\end{enumerate}
+
+
+\subsection{Creating Multiple Versions of Exam}
+
+Unfortunately, I teach multiple sections of the same course, and
+am faced with the problem of writing different exams for the same
+course each administered to a different section.
+
+Typically, I only have a need for two variations on the test; however,
+further extensions can be made, if needed (See \Nameref{mutiVerNew})
+
+\subsubsection{The Original Version Scheme}\label{mutiVerOrig}
+
+The \textsf{eqexam} package defines a boolean switch,
+\cs{ifVersionA} for this purpose. The two sections of the same
+course are ``Version A'' and ``Version B''. The default is that
+you are preparing an exam for ``Version A''.
+
+The command \cs{forVersion} sets the version: \verb+\forVersion A+
+sets version to ``Version A'', and \verb+\forVersion B+ set the
+version to ``Version B''. (The argument of the \cs{forVersion} command is case
+insensitive, so you also type in \verb+\forVersion b+.)
+
+For small variations in text, there is the \cs{ifAB} macro,
+\settowidth{\aebdimen}{\ttfamily\string\ifAB\darg{\anglemeta{Version A text}}%
+\darg{\anglemeta{Version B text}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\ifAB{!anglemeta(Version A text)}{!anglemeta(Version B text)}
+\end{dCmd}
+\noindent for example, one could say,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\begin{problem}[2]
+Compute $\frac{d}{dx}\ifAB{x^2}{x^3}$.
+\end{problem}
+\end{Verbatim}
+\noindent For longer variations, the \texttt{comments} package is
+used to create comment environments that are included or excluded.
+The two environments are \texttt{verA} and \texttt{verB}.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\begin{problem}[2]
+Compute $\frac{d}{dx}\ifAB{x^2}{x^3}$.
+
+\begin{solution}[1in]
+We use standard techniques:
+\begin{verA}
+$$
+ \frac{d}{dx} x^2 = 2x
+$$
+\end{verA}
+\begin{verB}
+$$
+ \frac{d}{dx} x^3 = 3x^2
+$$
+\end{verB}
+\end{solution}
+\end{problem}
+\end{Verbatim}
+
+There are several convenience macros for referring to the exams
+generated by the two variations.
+
+Usually, an exam, test, homework assignment has a number associate
+with it, e.g. ``Exam 1'', ``Test 2'', ``Assignment~\#12'', etc\@.
+This number should be defined using the \cs{examNum} macro.
+\settowidth{\aebdimen}{\ttfamily\string\examNum\darg{\meta{num}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\examNum{!meta(num)}
+\end{dCmd}
+where \meta{num} is the number to be associated
+with the exam (test, assignment) under construction.
+
+This command \emph{must appear before} \cs{title} in the
+preamble. The command \cs{examNum} takes its argument and defines
+another macro \cs{nExam}, which has no arguments, but expands to
+\meta{num}.
+
+The \textsf{eqexam} package defines two commands \cs{Exam} and
+\cs{sExam} to automatically enter the test information for the
+current version. In the preamble, you can say,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\title[\sExam]{\Exam}
+\end{Verbatim}
+\noindent \cs{Exam} is the long version of the test name, and takes as its
+argument the exam number. \cs{sExam} is the short version, having no
+argument. Both \cs{Exam} and \cs{sExam} use the value determined by
+\cs{examNum}, described above.
+
+The text of \cs{Exam} and \cs{sExam} are generated by the four
+commands,
+\begin{enumerate}
+\item \cs{VersionAtext\darg{\meta{text}}} This is the text for the long
+version of the exam name for ``Version A''. The default text is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\VersionAtext{Exam~\nExam--Version A}
+\end{Verbatim}
+
+\item \cs{VersionBtext\darg{\meta{text}}} This is the text for the long
+version of the exam name for ``Version B''. The default text is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\VersionAtext{Exam~\nExam--Version B}
+\end{Verbatim}
+
+\item \cs{shortVersionAtext\darg{\meta{text}}} This is the text for the
+short version of the exam name for ``Version A''. The default text
+is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\VersionAtext{Exam~\nExam A}
+\end{Verbatim}
+
+\item \cs{shortVersionBtext\darg{\meta{text}}} This is the text for the
+short version of the exam name for ``Version B''. The default text
+is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\VersionAtext{Exam~\nExam B}
+\end{Verbatim}
+\end{enumerate}
+
+\redpoint All the above commands,
+\textbf{\textcolor{blue}1}--\textbf{\textcolor{blue}4}, need to
+appear before \cs{title} in the preamble.\medskip
+
+\noindent Below is a ``typical'' example of how to correctly
+redefine all the version text.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\documentclass{article}
+\usepackage{amsmath}
+\usepackage[forpaper,pointsonleft,noparttotals,nosolutions]{eqexam}
+
+\examNum{1}
+\forVersion{B}
+\VersionAtext{Test~\nExam--003}
+\VersionBtext{Test~\nExam--007}
+\shortVersionAtext{T{\nExam}s3}
+\shortVersionBtext{T{\nExam}s7}
+
+\title[\sExam]{\Exam}
+\author{D. P. Story}
+\subject[C2]{Calculus II}
+\date{Spring \the\year}
+\keywords{Test \nExam, Section \ifAB{003}{007}}
+\end{Verbatim}
+
+
+\subsubsection{New Version Control}\label{mutiVerNew}
+
+In this section we introduce a new set of commands that supersede
+the commands defined above. Those commands were limited to only
+two versions. The ones below can handle up to $26$ versions.
+
+The steps for creating a multiple version \textsf{eqexam} document are as follows.
+\settowidth{\aebdimen}{\ttfamily\string\numVersions\darg{\meta{num}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\numVersions{!meta(num)}
+\end{dCmd}
+\noindent In the preamble, declare the number of versions for this document
+ using \cs{numVersions}, e.g., \verb|\numVersions{3}|.
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\longTitleText
+ {!anglemeta(Text_1)}
+ {!anglemeta(Text_2)}
+ ...
+ {!anglemeta(Text_n)}
+\endlongTitleText
+\end{Verbatim}
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!()]
+\shortTitleText
+ {!anglemeta(Text_1)}
+ {!anglemeta(Text_2)}
+ ...
+ {!anglemeta(Text_n)}
+\endshortTitleText
+\end{Verbatim}
+\textbf{Note:} If there are more titles than what are declared, the rest
+of the titles are absorbed (gobbled). If there are fewer titles than declared, a
+{\LaTeX} package error is generated, and ``fake'' titles are
+generated.
+
+
+\newtopic Next, state the long and short titles for the document,
+one for each of the declared number of versions given earlier in \cs{numVersions}.
+For example, we can use the value \cs{nExam} in our titles. Usage:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\longTitleText
+ {Test~\nExam--Version A}
+ {Test~\nExam--Version B}
+ {Test~\nExam--Make Up}
+\endlongTitleText
+\shortTitleText
+ {T\nExam A}
+ {T\nExam B}
+ {T\nExam MU}
+\endshortTitleText
+\end{Verbatim}
+These two commands give values to \cs{Exam} and \cs{sExam}. If
+\verb!\forVersion{a}! is executed, \cs{Exam} expands to the text \verb|Test~\nExam--Version A| and
+\cs{sExam} expands to \verb|T\nExam A|, using the example above. The value of \cs{nExam}
+is determined by the \cs{examNum} command, as described above.
+
+\newtopic Next is the command that does all the work. It creates alternate
+text macros for each of the versions declared using \cs{numVersions}. The syntax is
+\settowidth{\aebdimen}{\ttfamily\string\forVersion\darg{\meta{letter}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\forVersion{!meta(letter)}
+\end{dCmd}
+For example, assuming \verb|\numVersions{3}|, \verb|\forVersion{a}| (or \verb|\forVersion{A}|) defines $3$ text commands \cs{vA}, \cs{vB} and
+\cs{vC}, each taking one argument, the text you want to display:
+\begin{Verbatim}[xleftmargin=\leftmargini]
+ Name the \vA{place}\vB{date}\vC{year} of the signing
+ of the Magna Carta.
+\end{Verbatim}
+\noindent Since \verb|forVersion{a}| was declared, only the \cs{vA} text
+is displayed, the others are gobbled up. But wait, time out, the \cs{forVersion}
+does more than that! It also creates a series of comment environments
+\verb|\begin{verA}/\end{verA}|, \verb|\begin{verB}/\end{verB}|, \verb|\begin{verC}/\end{verC}|, etc.,
+where only the version for which this compile applies will be typeset,
+the others are commented out.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\numVersions{3}
+\forVersion{b}
+...
+\begin{document}
+...
+Solve the equation for $\vA{x}\vB{y}\vC{z}$:
+\[
+\begin{verA}
+ 2x + 4 = 7
+\end{verA}
+\begin{verB}
+ 5y + 2 = 4
+\end{verB}
+\begin{verC}
+ 3z - 2 = 2
+\end{verC}
+\]
+\end{Verbatim}
+
+\noindent Here is a final example of the multiple version scheme, taken from the preamble of one of
+my Calculus tests.
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\documentclass{article}
+\usepackage{amsmath,graphicx}
+\usepackage[forpaper,pointsonleft,nototals,nosolutions]{eqexam}
+%\usepackage[forpaper,pointsonleft,nototals,answerkey]{eqexam}
+
+\numVersions{3}
+\forVersion{a}
+\examNum{1}
+\longTitleText
+ {Test \nExam--Version A}
+ {Test \nExam--Version B}
+ {Test \nExam--Make Up}
+\endlongTitleText
+\shortTitleText
+ {T\nExam A}
+ {T\nExam B}
+ {T\nExam MU}
+\endshortTitleText
+
+\subject[C3]{Calculus III}
+\title[\sExam]{\Exam}
+\author{Dr.\ D. P. Story}
+\university
+{%
+ THE UNIVERSITY OF AKRON\\
+ Department of Theoretical and Applied Mathematics
+}
+\date{\thisterm\space\the\year} % Fall 2005
+\duedate{09/26/05} % actual date of the test
+% If you convert to pdf using a pdf (links, online, email)
+% option, this will appear in the keywords field of the
+% document info dialog.
+\keywords{\Exam, administered \theduedate}
+\end{Verbatim}
+
+\newtopic There is one additional command that can be used to locally control
+which version that is typeset in the document.
+\settowidth{\aebdimen}{\ttfamily\string\selectVersion\darg{\meta{num}}%
+\darg{\meta{total\_versions}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\selectVersion{!meta(num)}{!meta(total_versions)}
+\end{dCmd}
+You can place the \cs{selectVersion} command in front of a question or a part of a question
+that has multiple versions. Through this command you can select which version to typeset,
+provided the option \texttt{obeylocalversions} is set. For example,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\selectVersion{3}{4}
+\begin{problem}[10]
+...
+\end{problem}
+\end{Verbatim}
+\noindent The \cs{selectVersion} command says there are four variations on the next question
+and the document author wants to use the third one (that would correspond to C, in the
+\cs{forVersion} command). Again, the \texttt{obeylocalversions} must be taken for
+\textsf{eqexam} to obey this command.
+
+\newtopic \textbf{Recommendation:} Each problem should
+have the command \cs{selectVersion} in front of it, even for parts.
+Suppose the document author says \verb!\numVersions{5}!, but some
+problems don't have five versions, what do you do? If there is a
+\cs{selectVersion} in front of a problem with multiple versions, the
+\cs{selectVersion} will partially expand to determine if it is
+needed. It is needed if the version specified by \cs{forVersion}, is
+greater than the number of versions for the problem. In this case,
+\cs{selectVersion} performs modular arithmetic to compute which
+version is to be used. For example, if \verb!\forVersion{E}! has
+been declared in the preamble, but a problem has only three
+variations, the \textsf{eqexam} will use variation B; if
+\verb!\forVersion{D}! was declared, version A is
+used, and so on.
+
+
+\subsection{The Point and Totals Boxes}\label{ptTotalsBoxes}
+
+There are two types of points boxes, but only one type of totals
+box. All the commands listed below can be redefined for language
+localizations, for example.
+
+\redpoint Points that appear in the left margin (the
+\texttt{pointsonleft} or \texttt{pointsonboth} options). There are two text macros
+that are used,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\leftmarginPtsTxt[1]{(\small$#1^{\text{pts}}$)}
+\end{Verbatim}
+\noindent when the total points for that problem are shown, and the other
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\leftmarginPtsEaTxt[1]
+ {(\small$#1_{\text{ea.}}^{\text{pts}}$)}
+\end{Verbatim}
+\noindent when the author indicates that each sub-part of a problem
+is weighted the same, (when the author begins a \texttt{problem*}
+environment with \verb+\begin{problem*}[3ea]+, for example).
+
+\redpoint Points that appear in the right margin (options
+\texttt{pointsonright} or \texttt{pointsonboth}). These points appear
+in the bottom half of a box, the text for that box is determined by the
+following definition.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\marginpointsboxtext[2]{\small$#1\,\text{pts}$}
+\end{Verbatim}
+\noindent By the way, the purpose of the upper part of the box is
+for the instructor to enter the number of points a student
+received for that problem.
+
+\redpoint Points specified by the \cs{PTs} command. This text is
+defined by \cs{itemPTsTxt} as follows. See the paragraphs on
+\Nameref{problemstar} for a discussion of the use of \cs{PTs}.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\itemPTsTxt[1]{($#1$ pts)}
+\end{Verbatim}
+
+\redpoint \textbf{The totals box.} When you specify either option
+\texttt{totalsonleft} or \texttt{totalsonright}, you get a page totals
+box appearing in the lower left or right bottom corner.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+\newcommand\totalsboxtext{\small$\theeqpointsthispage\,\text{pts}$}
+\end{Verbatim}
+where \texttt{eqpointsthispage} is a counter whose value
+at the end of each page \emph{should} be the page total. For tests
+that have multiple \texttt{exam} environments, if one exam part
+ends on a page, and another begins on the same page, this number
+(\texttt{eqpointsthispage}) is the total on the page from the
+beginning of the new exam part. In this case, at the end of the
+exam part, there should also appear a remaining total for that
+part on that page.
+
+The totals boxes are located in the lower right corner
+(\texttt{totalsonright}) or in the lower left corner
+(\texttt{totalsonleft}). Vertical placement of these boxes is controled
+by the length \cs{eqevtranstotbox}, its default value is
+\texttt{0pt}. To raise the boxes \texttt{6pt}, for example,
+execute \verb!\setlength{\eqevtranstotbox}{6pt}!; the box may be lowered
+by using a negative length.
+
+\redpoint \textbf{Summary Totals.} When you use the \texttt{instructions}
+environment to give initial instructions for an exam, the total
+points appears automatically in the text, unless you specify the
+\texttt{nosummarytotals} option. This text is defined by
+\cs{summaryTotalsTxt}, whose definition follows:
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\newcommand\summaryTotalsTxt{($\summaryPointTotal\,\text{points}$)}
+\end{Verbatim}
+\noindent where \cs{summaryPointTotal} is a macro that expands to
+the total for this \texttt{exam} environment.
+
+\subsection{The \texttt{eqComments} Environment}
+
+In addition to the \texttt{instructions} environment, as explained
+in the section~\ref*{exam}, entitled \Nameref{exam}, should you want to insert
+additional instructions from within the body or the exam, use the
+\cs{eqComments} environment. The \cs{eqComments} environment has
+one optional argument, a formatted heading for the comments you
+want to make. For example,
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{eqComments}[Proofs.]
+Solve each of the problems~5--8 on a separate sheet of paper,
+do not write on the back of the paper. Follow the instructions
+provided for each problem. Use your little gray cells.
+\end{eqComments}
+\end{Verbatim}
+\noindent Such instructions must go between problems, of course,
+not within the body of either a \texttt{problem} or a
+\texttt{problem*} environment.
+
+\redpoint The optional argument has a color associated with it, and
+is visible when you compile the document with the
+\texttt{forcolorpaper} option. \cs{eqCommentsColor} colors the text that may appear
+in the optional argument of the environment; \cs{eqCommentsColorBody} colors the body
+of the text. Each take a single named color argument.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\eqCommentsColor{blue}
+\eqCommentsColorBody{black}
+\end{Verbatim}
+The above are the default definition.
+
+\subsection{The \texorpdfstring{\protect\cs{OnBackOfPage}}{\textbackslash OnBackOfPage} Command}\label{onbackofpage}
+
+In order to reduce the number of pages needed for an exam, I often
+cheat by asking the student to work on the back of one of the test
+pages.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\bopText{on the back of page~\boPage}
+\newcommand\bopCoverPageText{(the cover page)}
+\newcommand\OnBackOfPage[1][\bopText]{%
+\end{Verbatim}
+
+For this, I use the \cs{OnBackOfPage} command
+\settowidth{\aebdimen}{\ttfamily\string\OnBackOfPage[\meta{text}]}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\OnBackOfPage[!meta(text)]
+\end{dCmd}
+\noindent The optional argument allows you to enter variational
+text, text that varies from the default text. The default text is
+contained in \cs{bopText} macro, its definition is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\bopText{on the back of page~\boPage}
+\end{Verbatim}
+\noindent where \cs{boPage} is the page the student is instructed
+to do the work. Thus, if you say, ``Continue \cs{OnBackOfPage}.''
+This would expand to ``Continue on the back of page 2.'', or
+whatever \cs{boPage} is determined to be.
+
+\newtopic To illustrate the use of the optional argument of
+\cs{OnBackOfPage}, you might say,
+\begin{quote}
+ \verb+\OnBackOfPage[The back of page~\boPage]+ can be used\\
+ to continue work, if necessary.
+\end{quote}
+This expands to
+``The back of page 2 can be used to continue work, if necessary.''
+
+The algorithm used to compute the page, \cs{boPage}, on which to
+continue to work is as follows: For all pages, except for the
+first page of the test, the student works on the back of the
+previous page. For the first page of the test, the student works
+on the back of the first page, unless there is a cover page, in
+which case the student is instructed to work on the back of that
+page.
+
+In the case of working on the back of the cover page, there is a variation on the
+instructions, \cs{OnBackOfPage} expands to ``on the back of page 1 (the cover page)''.
+The phrase ``(the cover page)'' can be redefined using the \cs{bopCoverPageText} command.
+The definition of this command is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\bopCoverPageText{\space(the cover page)}
+\end{Verbatim}
+\noindent We could change this as follows,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\renewcommand\bopCoverPageText{, the cover page}
+\end{Verbatim}
+\noindent so that it would now read, ``on the back of page 1, the cover page''. To remove this feature
+altogether, you could redefine as
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\renewcommand\bopCoverPageText{}
+\end{Verbatim}
+
+\subsection{\texorpdfstring
+ {The \cs{pushProblem} and \cs{popProblem} Commands}
+ {The \CMD{pushProblem} and \CMD{popProblem} Commands}
+}
+
+
+There may be an occasion when a multi-part question needs to be broken between parts,
+use the \cs{pushProblem} and \cs{popProblem} for this purpose. The push saves the
+counter value, and ends the \texttt{parts} environment. The pop restarts the
+\texttt{parts}, and resets the parts counter.
+
+\newtopic
+In the \texttt{multicols} environment below, we \cs{pushProblem}, then close \texttt{multicols}, we execute \cs{popProblem}, and then continue with the multi-parts in single column.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem*}[\auto]
+Do each of the following without error.
+\begin{multicols}{2}
+ \begin{parts}
+ \item\PTs{3} This is a problem.
+ \begin{solution}[1in]\end{solution}
+
+ \item\PTs{3} This is a problem.
+ \begin{solution}[1in]\end{solution}
+\pushProblem
+\end{multicols}
+\popProblem
+ \item\PTs{4} Do this harder problem.
+ \begin{solution}[.5in]\end{solution}
+ \end{parts}
+\end{problem*}
+\end{Verbatim}
+\newtopic In the example, the first two questions appear in two
+column format, while the third appears in single column format. The
+same thing can be done in reverse, like so:
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem*}[\auto]
+Do each of the following without error.
+ \begin{parts}
+ \item\PTs{3} This is a problem.
+ \begin{solution}[1in]\end{solution}
+\pushProblem
+\begin{multicols}{2}
+\popProblem
+ \item\PTs{4} This is a hard problem.
+ \begin{solution}[1in]\end{solution}
+ \item\PTs{4} Do this harder problem.
+ \begin{solution}[1in]\end{solution}
+ \end{parts}
+\end{multicols}
+\end{problem*}
+\end{Verbatim}
+\newtopic Now, first question is in single column and the next two are in two column format.
+
+\handpoint In order to get the correct formatting, the \texttt{multicols} environment must begin
+before the \texttt{parts} environment.
+
+%\newtopic See \texttt{quiz02.tex} for an example of \cs{pushProblem} and \cs{popProblem}.
+
+\exAeBBlogPDF{p=1211} See \texttt{\href{\urlAcroTeXBlog/?p=1211}{quiz02.pdf}}
+for an example of \cs{pushProblem} and \cs{popProblem}.
+
+
+\subsection{\texorpdfstring{\protect\cs{qNewPage}, \protect\cs{aNewPage},
+ and \protect\cs{promoteNewPage}}
+ {\CMD{qNewPage}, \CMD{aNewPage}, and \CMD{promoteNewPage}}}\label{aqpNewPage}
+
+The command \cs{qNewPage} (questions newpage) and \cs{aNewPage}
+(answers newpage) are convenience commands for creating new pages.
+The first one expands to \cs{newpage} when the \cs{ifanswerkey} is
+false and the second one expands to \cs{newpage} when the
+\cs{ifanswerkey} is true; their definitions are
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand\qNewPage{\ifanswerkey\else\newpage\fi}
+\newcommand\aNewPage{\ifanswerkey\newpage\fi}
+\end{Verbatim}
+
+The \cs{promoteNewPage} can be used to insert a page break, if needed.
+\settowidth{\aebdimen}{\ttfamily\string\promoteNewPage\darg{\meta{vspace}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\promoteNewPage[!meta(vspace)]
+\end{dCmd}
+If there is more than \meta{vspace} left on the current page, a
+\cs{newpage} command is executed (a \cs{columnbreak} if in a
+\texttt{multicols} environment). The default value for \meta{vspace}
+is \cs{@fvsizeskip}\cs{textheight}, where \cs{@fvsizeskip} is a decimal
+number between 0 and 1 that is set by \cs{fvsizeskip}. The default is
+\verb!\fvsizeskip{.3}!. This means that if there is less than
+\verb!.3\textheight!, and new page is created. This may be too large for
+most applications, so you can pass a \meta{vspace} through the optional argument.
+For example, \cs{promoteNewPage[.25in]}.
+
+
+
+\subsection{Support for Solution Sets from a Text}\label{solnSets}
+
+I use \textsf{eqexam} not only for exams, quizzes and homework
+assignments, but also for solution sets for problems assigned from the text.
+
+Suppose the assignment was to solve, on a certain page in the text,
+problems which include \textbf{2}, \textbf{6} and \textbf{12(b)(d)} and
+it is desired to provide solutions to these problem. For this
+purpose, \textsf{eqexam} provides \cs{forproblem} and \cs{foritem}. These
+commands are used as follows:
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{exam}{HW\nExam}
+\begin{instructions}[Description] (10 points)
+Selected solutions from Assignments~24, 25, \S7.1.
+\end{instructions}
+
+\begin{eqComments}[\S7.1]
+\textbf{Solving Linear Equations}
+\end{eqComments}
+
+\forproblem{2}
+\begin{problem}
+Statement of problem.
+\begin{solution}
+Solution to this problem.
+\end{solution}
+\end{problem}
+
+\forproblem{6}
+\begin{problem}
+Statement of problem.
+\begin{solution}
+Solution to this problem.
+\end{solution}
+\end{problem}
+
+\forproblem{12}
+\begin{problem*}
+Statement of problem.
+\begin{parts}
+ \foritem{b} Statement for item (b)
+ \begin{solution}
+ Solution to this problem.
+ \end{solution}
+
+ \foritem{d} Statement for item (d)
+ \begin{solution}
+ Solution to this problem.
+ \end{solution}
+\end{parts}
+\end{problem*}
+\end{exam}
+\end{Verbatim}
+
+\subsection{Referencing Multiple Choice Questions}\label{showgraylettersOpt}
+
+When the \texttt{showgrayletters} option is used, each alternatives in a
+multiple choice question will have a gray capital letter \texttt{A},
+\texttt{B}, \texttt{C}, etc. underneath it. This letter can then be
+referred to in the text or the solution.
+
+The use of this option is global and is controlled by the switch,
+\cs{ifaeb\-show\-gray\-letters}. The gray letter feature can be turned on
+and off locally: To turn on this feature, insert the command
+\cs{graylettersOn} at some appropriately chosen point in
+the document; to turn off the gray letter feature insert
+\cs{graylettersOff}.
+
+\newtopic In support of the \texttt{showgrayletters} option is a new
+command \cs{REF}. \cs{REF} acts like the {\LaTeX} command \cs{ref}
+with the hyperref modifications, but it converts the reference to
+uppercase. When \cs{ref} would typeset the letter `a', for example,
+\cs{REF} would typeset the letter `A'. \cs{REF}, like \cs{ref},
+typesets a hyperref link. Hyperref defines a \texttt{*} version of
+\cs{ref}; \cs{ref*} typesets the reference, but does not create a
+link; \cs{REF*} does the same. When \cs{aebshowgraylettersfalse} is
+in effect, \cs{REF} does not capitalize the reference.
+
+\redpoint Below is an example of this.
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{problem}[5]
+Answer this if you can!
+\begin{answers}{2}
+\bChoices
+ \Ans0\label{testsqFirst} This is a possible answer.\eAns
+ \Ans1\label{testsqSecond} Try this one (the correct one).\eAns
+ \Ans0 This is an answer.\eAns
+ \Ans0 Another alternative.\eAns
+\eChoices
+\end{answers}
+\begin{solution}
+We reference alternatives (\REF*{testsqFirst}), an incorrect answer,
+and (\REF{testsqSecond}), the correct answer.
+\end{solution}
+\end{problem}
+\end{Verbatim}
+\newtopic Notice that the gray letters was not turned to off
+until after the usage of \cs{REF}.
+
+\newtopic\textcolor{red}{\bfseries Important} The gray letters are typeset into the document. Do not
+use a background color for the checkboxes as this color will cover
+up the gray letters. The default background color checkboxes is
+transparent, keep it that way.
+
+\newtopic When typesetting an exam for paper (using the \texttt{forpaper}
+option), the gray letters appear as black letters. If you want actual gray
+letters, you have to use the \texttt{forcolorpaper} option. In this case,
+you'll see the blue color appearing in various places. Change these blue
+colors to black using the following commands in the preamble:
+\settowidth{\aebdimen}{\ttfamily\string\forceNoColor}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\forceNoColor
+\end{dCmd}
+
+
+\subsection{Displaying Points between two Markers}
+
+Some instructors might like a subdivide the exam into segments (or parts) and to have a total for
+that segment of problems. The \textsf{eqexam} package offers three commands for that purpose.
+\settowidth{\aebdimen}{\ttfamily\string\calcFromMarkers[\meta{formatting}]\darg{\meta{name2}}\darg{\meta{name3}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\placeMarkerHere{!meta(name)}
+\calcFromMarkers[!meta(formatting)]{!meta(name2)}{!meta(name3)}
+\markerTotalFmt{!meta(formatting)}
+\end{dCmd}
+Place \cs{placeMarkerHere} outside of a \texttt{problem}/\texttt{problem*} environment, giving each
+a unique name; for example \verb!\placeMarkerHere{bQForm}!. Place
+\cs{calcFromMarkers} wherever you wish a calculation to be displayed, for example,
+
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\placeMarkerHere{bQForm}
+\begin{eqComments}[Quadratic Formula\calcFromMarkers{eQForm}{bForm}.]
+Solve each of the following equations using the quadratic formula.
+\end{eqComments}
+..
+\begin{problem}[5]
+...
+\end{problem}
+...
+% Finished with problems that use the quadratic formula,
+% now create another marker for the next set of questions.
+\placeMarkerHere{eQForm}
+...
+\end{Verbatim}
+After you {\LaTeX} three times (and the totals are all brought up to date),
+the header of the \textbf{eqComments} should read \textbf{Quadratic
+Formula (12 points)}, where the \textbf{12 points} are the total of all
+points assigned between the \texttt{bQForm} marker and the \texttt{eQForm}
+marker.
+
+The formatting for the total points between markers is determined by the optional first parameter
+of \cs{calcFromMarkers}, and if there is no optional first parameter, by a global command,
+\cs{markerTotalFmt}, which sets the default formatting. The default definition of
+\cs{markerTotalFmt} is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\markerTotalFmt{ (\themarkerCnt\space points)}
+\end{Verbatim}
+The command \cs{themarkerCnt} references the counter \texttt{markerCnt} in which the calculations are made.
+Any redefinition of \cs{markerTotalFmt} should use \cs{themarkerCnt} to reference to value.
+
+You use the optional first parameter the same way as the definition of \cs{marker\-Total\-Fmt}. You can say, for
+example, you can type
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\calcFromMarkers[ $\themarkerCnt^{\text{pts}}$]{eQForm}{bForm}
+\end{Verbatim}
+to get a formatted total \verb*! $12^{\text{pts}}$!, which typesets to ` $12^{\text{pts}}$'.
+
+You might have noticed that I've inserted a space character at the beginning of the definition
+\verb*!\markerTotalFmt{ (\themarkerCnt\space points)}!, and place \cs{calc\-From\-Markers} up against
+the previous word, as in
+\begin{Verbatim}[xleftmargin=\leftmargini]
+Quadratic Formula\calcFromMarkers{eQForm}{bForm}.
+\end{Verbatim}
+This is so that when the required totals are not defined---early in the {\LaTeX}ing process---there
+is no space between \texttt{Formula} and the period (.); this is nothing but a cosmetic trivial point. After
+you {\LaTeX} enough times, the full expansion appears as,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+Quadratic Formula (12 points).
+\end{Verbatim}
+
+
+\subsection{Extending the \texorpdfstring{\protect\cs{fillin}}{\CMD{fillin}} Command}\label{extendfillin}
+
+When the document author uses the \texttt{usexkv} option, and the
+\textsf{xkeyval} package is found on the document author's system,
+the \cs{fillin} command is redefined to use key-value pairs in the
+optional first argument. The syntax for \cs{fillin} now is,
+%\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\fontsize{9}{11}\selectfont]
+\begin{dCmd}[commandchars=!(),fontsize=\small]{\linewidth}
+\fillin[
+ underline=true|false,u,b,boxed=true|false,boxpretext=!anglemeta(text),
+ align=l|r|c,boxsize=!anglemeta(!upshape(\tiny|...|normalsize|large|...|Huge)),
+ color=!anglemeta(namedcolor),format=!anglemeta(!upshape\bfseries|\ttfamily|\Large|!meta(whatever)),
+ enclosesoln=!anglemeta(!upshape(true|false)),fitwidth=!anglemeta(!upshape(true|false))
+]{!meta(width)}{!meta(answer)}
+\end{dCmd}
+\textbf{Parameter Description.} \cs{fillin} takes three parameters.
+\begin{enumerate}
+\item The first optional parameter uses a key-value system, these allow the document author
+to set the appearance and behavior of the field. The keys are described below.
+
+\item The second parameter \meta{width} is the amount of horizontal
+space to leave for the student to write in the response. For example,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\fillin[boxed,boxsize=Large]{1.5in}{$2x - 3$}
+\end{Verbatim}
+Yields the following results, depending on the option.
+\begin{alignat*}{2}
+&\makebox[1.5in][c]{\text{\texttt{nosolutions} option}}&&\qquad
+\makebox[1.5in][c]{\text{\texttt{answerkey} option}}\\
+&\boxed{\text{\Large\strut}\makebox[1.5in]{\hfill}}&&\qquad
+\boxed{\text{\Large\strut}\makebox[1.5in]{$2x-3$}}
+\end{alignat*}
+If this parameter is left empty,
+the \textsf{eqexam} uses the \meta{answer} parameter to determine the width of the field.
+The code
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\fillin[boxed,boxsize=Large]{}{$2x - 3$}
+\end{Verbatim}
+gives a box the same width as the answer, $2x-3$, which is not very wide
+in this case. On the test, (compiled with the \texttt{nosolutions} option)
+the student would see this box
+$\boxed{\text{\Large\strut}\text{\phantom{$2x-3$}}}$. Though we can typeset the
+answer into this box, it is too narrow for the student to write the answer
+into; a better strategy is as follows:
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+\fillin[boxed,boxsize=Large]{\ifNoSolutions{1.5in}{}}{$2x - 3$}
+\end{Verbatim}
+Now, when the file is compiled under different options, we obtain
+\begin{alignat*}{2}
+&\makebox[1.5in][c]{\text{\texttt{nosolutions} option}}&&\qquad
+\makebox[1.5in][c]{\text{\texttt{answerkey} option}}\\
+&\boxed{\text{\Large\strut}\makebox[1.5in]{\hfill}}&&\qquad
+\makebox[1.5in][c]{$\boxed{\text{\Large\strut}2x-3}$}
+\end{alignat*}
+For the answer key version, the answer is enclosed is tightly enclosed, a
+cosmetic difference. See also the \texttt{fitwidth} option.
+
+\item[] The command \verb!\ifNoSolutions{#1}{#2}! executes the first parameter if
+the compile option is \texttt{nosolutions}, otherwise it executes the second parameter.
+
+\item The third argument, \meta{answer}, is the correct answer; this correct answer
+appears when the document is compiled with the \texttt{answerkey} option.
+\end{enumerate}
+
+\newtopic\textbf{The description of the key-value pairs for \cs{fillin}:}
+\begin{description}
+ \item[\texttt{underline}:] A Boolean switch, which if \texttt{true}, the
+ fill-in region is underlined. The default is \texttt{false}, the region
+ is not underlined.
+ \item[\texttt{u,b}:] Legacy options. If \texttt{u} is chosen, the region is
+ underlined, if \texttt{b} is chosen, the region is not underlined. Use
+ of the \texttt{underline} key is recommended.
+ \item[\texttt{boxed}:] A Boolean switch, which if \texttt{true}, the
+ fill-in region is boxed in using the \cs{boxed} command of
+ \textsf{amsmath} package. The default is \texttt{false}, the region is
+ not boxed.
+ \item[\texttt{boxpretext}:] A key that takes \meta{text} as its value. This
+ value will be placed in front of the third argument, labeled
+ \meta{answer} above. The \meta{text} appears in the box even when
+ the \texttt{answerkey} is not in effect. This key is ignored if the
+ \texttt{boxed} option is not taken.
+
+ This option allows you to create an expression like
+\begin{equation*}
+ \boxed{ y =\hspace{1in}\text{\Large\strut}}\quad\text{and with \texttt{answerkey}}\quad
+ \boxed{ y = \rlap{$2x^2 + 1$}\hspace{1in}\text{\Large\strut}}
+\end{equation*}
+ \item[\texttt{boxsize}:] This is a choice key, the choices being \texttt{tiny}, \texttt{scriptsize}, \texttt{footnotesize}, \texttt{small}, \texttt{normalsize},
+ \texttt{large}, \texttt{Large}, \texttt{LARGE}, \texttt{huge} and \texttt{Huge}. the smaller sizes probably are not useful,
+ I give them to you for free. This key allows you to adjust the height of the box. This key is ignored if the
+ \texttt{boxed} key does not appear in the option list. For example,
+\begin{flushleft}
+\hskip\leftmargini\begin{tabular}{@{}cc}
+ \makebox[1.2in][c]{\texttt{boxsize=Large}}&\makebox[1.2in][c]{\texttt{boxsize=Huge}}\\
+ \multicolumn{1}{@{}p{1.2in}}{\kern0pt\centering\fbox{\hspace{1in}\Large\strut}}&
+ \multicolumn{1}{p{1.2in}}{\kern0pt\centering\fbox{\hspace{1in}\Huge\strut}}
+\end{tabular}
+\end{flushleft}
+ Choice of size depends on the height of the anticipated response of
+ the student. The default is \texttt{normalsize}.
+
+ \item[\texttt{enclosesoln}:] This Boolean key only takes effect when the
+ \texttt{boxed} key is used, and when either the \texttt{nosolutions} or the
+ \texttt{vspacewithsolns} option is taken. When these conditions are
+ met, a box is created around the solution (the third parameter of \cs{fillin}); the solution
+ is enclosed in a \cs{phantom} so it is not seen, but the dimensions of the solution are used.
+ This key allows you to create a box or arbitrary dimension.
+
+A simple example would be
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+\fillin[boxed,enclosesoln,parbox={[t][1in]}]{2.4in}{%
+ The box is 2.4 inch wide and 1 inch high. The solution to
+ this problem appears when \texttt{answerkey} is in effect.
+}
+\end{Verbatim}
+Below shows how this command appears under different options.
+\begin{equation*}\def\fb#1{#1-2\fboxrule-2\fboxsep}
+\boxed{\phantom{\parbox[b][\fb{1in}][t]{\fb{2.4in}}{%
+ The box is 2.4 inch wide and 1 inch high. The solution to
+ this problem appears when the answerkey is in effect}
+}}\quad\boxed{\parbox[b][\fb{1in}][t]{\fb{2.4in}}{%
+ The box is 2.4 inch wide and 1 inch high. The solution to
+ this problem appears when \texttt{answerkey} is in effect.
+}}
+\end{equation*}
+The box on the left is appears when the \texttt{nosolutions} or
+\texttt{vspacewithsolns} is in effect. The one on the right appears when
+the \texttt{answerkey} option is taken. Note the size of the two boxes are
+the same.
+
+\textbf{Note:} The explanation of the \texttt{parbox} option used in this
+example appears below.
+
+\item[\texttt{fitwidth}] This key is an implementation of the
+ \cs{ifNoSolutions} strategy discussed earlier. If \texttt{fitwidth} is
+ specified and the \texttt{nosolutions} option (an \textsf{eqexam}
+ option) is in effect, the width of the fill-in region is taken from
+ the second parameter; however, if the \texttt{answerkey} option is
+ specified, the natural with of the answer (the third parameter) is
+ used.
+
+ \item[\texttt{align}:] A key that takes one of three values, \texttt{l},
+ \texttt{\texttt{r}}, and \texttt{c}. This key aligns the text within
+ the fill-in field (when the \texttt{answerkey} option is taken):
+ \texttt{l} (left-aligned), \texttt{c} (center, the default), \texttt{r}
+ (right-aligned). This parameter affects the position of the
+ \meta{answer}, and does not affect the position of the
+ \meta{text}, which is aligned left, of the \texttt{boxpretext} key.
+ The alignment becomes visible when the \texttt{answerkey} option is in
+ effect.
+
+ \item[\texttt{hiddenbox}:] When the \texttt{boxed} option is used,
+ \textsf{eqexam} uses an \cs{fbox} to enclose the content.
+ The \texttt{hiddenbox} is used with the \texttt{boxed} option and it
+ resets the lengths of \cs{fboxrule} and \cs{fboxsep} to
+ \texttt{0pt}. In this way, some of the features
+ (\texttt{enclosesoln} and \texttt{boxpretext}, for example) that
+ apply to boxed content can be used without the surrounding boundary
+ rule. See \texttt{parbox} for an example.
+
+ \item[\texttt{parbox}:] When this option is taken, \textsf{eqexam}
+ encloses the third argument (the answer) in a \cs{parbox}. The value
+ of the \texttt{parbox} option is the first three parameters of a
+ \cs{parbox}; for example \verb!parbox={[t][.5in][c]}! causes \cs{fillin}
+ to enclose the content in a \cs{parbox} with a height of \texttt{.5in}. The width
+ of the \cs{parbox} is taken to be the second parameter of
+ \cs{fillin} macro. The third parameter of \cs{fillin} becomes
+ \cs{parbox[t][.5in][c]\darg{\meta{width}}\darg{\meta{answer}}}.
+ The value of the \texttt{parbox} key needs to be
+ enclosed in braces, as just illustrated.
+
+Here is an example of the use of this key-value pair:
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+\fillin[parbox={[t][.5in]},boxed,hiddenbox,
+ boxpretext={\textbf{\textcolor{black}{Conclusion: }}},
+ format=\normalfont,enclosesoln]{\linewidth}{%
+ There is sufficient evidence at the $\alpha=0.05$ level to
+ conclude that the mean microwave repair cost is less than
+ \$100.}
+\end{Verbatim}
+If you say \cs{fillin[parbox,boxed,\meta{options}]\darg{\meta{width}}\darg{\meta{answer}}} (\texttt{parbox} with the
+empty argument), translates into \cs{parbox\darg{\meta{text}}}, the height of the box is the
+natural height of the content.
+
+Note the presence of the \texttt{hiddenbox} key, in this case, no rule
+or additional spacing appears around the box.
+
+ This typesets, when \texttt{answerkey} option is used as
+
+ \parbox[t][.5in]{\linewidth}{\textbf{\textcolor{black}{Conclusion: }}
+ There is sufficient evidence at the $\alpha=0.05$ level to
+ conclude that the mean microwave repair cost is less than
+ \$100.}
+
+ When \texttt{answerkey} is not used, the following is seen (by the student at test time):
+
+ \parbox[t][.5in]{\linewidth}{\textbf{\textcolor{black}{Conclusion: }}}
+
+ The same vertical space is used in both cases because of the \texttt{enclosesoln}
+ option taken in this example.
+
+ If the \texttt{hiddenbox} key is removed, a proper boxed region appears,
+
+ $\def\FB#1{#1-2\fboxrule-2\fboxsep}
+ \boxed{\parbox[t][\FB{.5in}]{\FB{\linewidth}}{\textbf{\textcolor{black}{Conclusion: }}
+ There is sufficient evidence at the $\alpha=0.05$ level to
+ conclude that the mean microwave repair cost is less than
+ \$100.}}$
+
+ Similarly, when \texttt{answerkey} is not used, the following is seen,
+
+ $\def\FB#1{#1-2\fboxrule-2\fboxsep}
+ \boxed{\parbox[t][\FB{.5in}]{\FB{\linewidth}}{%
+ \textbf{\textcolor{black}{Conclusion: }}\hfill\vfill}}$
+
+
+ \item[\texttt{color}:] The value of this key is a named color. The
+ \meta{answer} appears in this color, when \texttt{answerkey} option is
+ in effect. The default is red.
+
+ \item[\texttt{format}:] A general purpose formatting key. The value of the key can be most anything:
+ \cs{bfseries} (to change font series), \cs{ttfamily} (to change font family), \cs{Large} (to change size of
+ the \meta{answer} and \meta{text} (the value of \texttt{boxpretext}). Several formatting commands can appear
+ as the value; thus, \verb!format={\bfseries\Large}! makes the answer, when \texttt{answerkey} is in effect, appear in large bold font.
+ The default is \verb!format={\fillInFormatDefault}!, where the definition of the command \cs{fillInFormatDefault} is
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand{\fillInFormatDefault}{\bfseries}
+\end{Verbatim}
+\end{description}
+The next three keys apply when a \texttt{boxed} option is not taken, that is, they
+apply to the case of \texttt{u} (\texttt{underlined}) or \texttt{b} (blank). The keys were designed
+for the \texttt{underline} option, however.
+\begin{description}
+\item[\texttt{lift}:] The syntax is \texttt{lift=length} This key lowers the underline without changing the baseline reference
+point of the content. For example, \texttt{lift=10pt} lowers the underlining by \texttt{10pt}.
+\begin{equation*}
+\frac{1}{2}+\frac{1}{3} = \underbar{\makebox[1in]{\ensuremath{\displaystyle\frac{3}{4}}}}
+\qquad
+\frac{1}{2}+\frac{1}{3} = \raisebox{-10pt}{\underbar{\raisebox{10pt}{\makebox[1in]{\ensuremath{\displaystyle\frac{3}{4}}}}}}
+\end{equation*}
+The expression on the right corresponds to
+\begin{Verbatim}[xleftmargin=\leftmargini]
+$...\fillin[lift=10pt]{1in}{\frac{3}{4}}...$
+\end{Verbatim}
+The underline is lowered to include the baseline of the denominator of the fraction.
+
+\item[\texttt{autolift}:] The \texttt{autolift} key takes the guesswork
+ out of the \texttt{lift}. When \texttt{autolift} is used, the depth of
+ the content of the answer field. For example, with the \texttt{autolift} key,
+ \verb!\fillin[autolift]{1in}{\frac{3}{4}}! yields
+ {\setbox0=\hbox{$\displaystyle\frac{3}{4}$}
+ \raisebox{-\dp0}{\underbar{\raisebox{\dp0}{\makebox[1in]{\ensuremath{\displaystyle\frac{3}{4}}}}}}}.
+ Now the fraction is exactly underlined.
+
+\item[\texttt{addtoautolift}:] The \texttt{addtoautolift} key is a companion to \texttt{autolift}.
+ If we assign \texttt{addtoautolift=3pt}, \texttt{3pt} additional lift is added
+ to the amount of lift determined by \texttt{autolift}. For example,
+\begin{small}%
+\begin{equation*}
+\setbox0=\hbox{$\displaystyle\frac{3}{4}$}
+\dimen0=\dp0 \advance\dimen0by3pt
+ \verb!\fillin[autolift,addtoautolift=3pt]{.5in}{\frac{3}{4}}!\ \text{yields}\
+ \raisebox{-\dimen0}{\underbar{\raisebox{\dimen0}{\makebox[.5in]{\ensuremath{\displaystyle\frac{3}{4}}}}}}
+\end{equation*}
+\end{small}%
+the number three-fourths is underlined plus \texttt{3pt} more.
+\end{description}
+The keys are processed by an \cs{edef}, this allows you to define a
+command with your favorite options; for example, you can define
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\newcommand{\myBoxOpts}{boxed,boxsize=Large,align=l}
+\end{Verbatim}
+then in the exam, type
+\begin{Verbatim}[xleftmargin=\leftmargini]
+$\frac{\sqrt{-18}}{\sqrt{6}}=\fillin[\myBoxOpts]{1.5in}{3\imath}$
+\end{Verbatim}
+
+% dps Need to revise this section, I've changed how \fillin works.
+
+\paragraph*{\cs{fillin} boxed.} When the \texttt{boxed} key is used,
+the \cs{boxed} command of \texttt{amsmath} is used; This command needs to
+be in math mode. If the \texttt{boxed} key is used and the \cs{fillin}
+command is in math mode, then \cs{fillin} puts the \meta{answer} and
+\texttt{boxpretext} in math mode too; if \cs{fillin} command \emph{not in
+math mode} (i.e., it is in text mode), \cs{fillin} typesets the
+\meta{answer} and \texttt{boxpretext} in text mode. For example,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+Let $ x = 4 $ and $ y = -3 $ and let $ z = 2x - 4y $ then
+ $\fillin[boxed,align=l,boxpretext={z=}]{1in}{20}$
+\end{Verbatim}
+When \texttt{answerkey} is used, the above question appears as
+\begin{quote}
+Let $ x = 4 $ and $ y = -3 $ and let $ z = 2x - 4y $ then
+ \fbox{\makebox[1in][l]{$ z=20 $ }}
+\end{quote}
+Here is an example in text mode
+\begin{Verbatim}[xleftmargin=\leftmargini]
+The first president of the US is
+ \fillin[boxed,align=c]{1.5in}{Washington}
+\end{Verbatim}
+When \texttt{answerkey} is used, the above question appears as
+\begin{quote}
+The first president of the US is
+ \fbox{\makebox[1.5in][c]{Washington}}
+\end{quote}
+Here is an example of mixed mode
+\begin{Verbatim}[xleftmargin=\leftmargini]
+The width of a rectangle is 20 feet and length is 15 feet.
+Find the area: $\fillin[boxed,align=l,
+ boxpretext={\text{Area: }}]{1in}{300\,\text{feet}}$
+\end{Verbatim}
+The answer is typeset in math mode, but the value of \texttt{boxpretext}
+needs to be typeset in text mode. When \texttt{answerkey} is used, the
+above question appears as
+\begin{quote}
+The width of a rectangle is 20 feet and length is 15 feet.
+Find the area: \fbox{\makebox[1in][l]{Area: $300\,\text{feet}$}}
+\end{quote}
+
+\paragraph*{\cs{fillin} not boxed.} The \cs{fillin} command will typeset
+the answer in math mode if \cs{fillin} is in math mode, and in text mode,
+otherwise. For example, each of the following typesets the same.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+The area of a circle of radius $2$ is \fillin[u]{.5in}{$4\pi$}
+The area of a circle of radius $2$ is $\fillin[u]{.5in}{4\pi}$
+\end{Verbatim}
+
+\subsection{Vertical Space Fill Types}
+
+When the \texttt{nosolutions} or the \texttt{vspacewithsolns} is used, a
+vertical space is generated by the \texttt{solution} environment.
+Previously, this has just been a vertical white space, now, we provide
+the ability to fill the space with horizontal rules of different types.
+
+%\redpoint The demo file for these features is \texttt{hw03.tex}.
+
+\exAeBBlogPDF{p=1222} The demo file for this feature is named
+\texttt{\href{\urlAcroTeXBlog/?p=1222}{hw03.pdf}}
+
+
+\newtopic There are two sets of commands.
+\settowidth{\aebdimen}{\ttfamily\string\useFillerDefault}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\useFillerLines
+\useFillerDefault
+\end{dCmd}
+\noindent The first command sets the code to draw rule lines in the
+vertical white space, the second command reverts back to the default,
+plain vertical white space.
+
+\newtopic The next set of commands determine the type of line to be drawn
+in the white space.
+\settowidth{\aebdimen}{\ttfamily\string\fillTypeDashLine}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\fillTypeHRule
+\fillTypeDashLine
+\fillTypeDots
+\fillTypeDefault
+\end{dCmd}
+\noindent The rule types are in the order listed: draw solid horizontal lines; draw
+dashed lines; draw dotted lines; draw the default line type (\cs{fillTypeHRule)}.
+
+\newtopic These two command determine color of the lines, and the spacing between lines.
+\settowidth{\aebdimen}{\ttfamily\string\eqWriteLineColor\darg{\meta{named\_color}}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\eqWriteLineColor{!meta(named_color)}
+\eqWLSpacing{!meta(length)}
+\end{dCmd}
+\noindent The default color is \texttt{gray} and the default vertical
+spacing between lines is
+\texttt{14pt}.
+
+\subsection{Keep vertical space with \texttt{answerkey}}
+
+One thing that has bothered me in my efforts to create the ``perfect''
+exam package, is the differences in vertical spacing between the exam the
+student sees (which is compiled with the \texttt{nosolutions} option), and
+the solutions document the instructor sees (as compiled with the
+\texttt{answerkey} option). The differences in vertical space of the two
+documents makes it harder for the eye to move from the student's exam to
+the answer key document and back again. In the past, I've used
+\cs{aNewPage} or \cs{qNewPage} to force page breaks so that the page
+breaks of the two document match, this makes it easier to get one page at
+a time.
+
+
+Below is a simple example to illustrate the above points. In the example below,
+we simulate
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\begin{solution}[1in]
+$ x+1 = 4 \implies x = 3 $
+\end{solution}
+\end{Verbatim}
+\begin{flushleft}
+\setlength{\fboxsep}{0pt}
+\begin{tabular}{@{\hskip\leftmargini}cc}
+\texttt{nosolutions} & \texttt{answerkey}\\
+\fbox{\parbox[t][1in]{.4\linewidth}{\strut\kern0pt\vfill\hfill}}&
+\fbox{\parbox[t]{.4\linewidth}{\strut\textit{Solution:} $ x+1 = 4 \implies x = 3 $}}\\
+\end{tabular}
+\end{flushleft}
+We have put an \cs{fbox} around the vertical space so you can see the
+bottom of the vertical space, and better appreciate the point I am trying
+to make. When \texttt{nosolutions} is in effect, a vertical space of 1
+inch is created; when the \texttt{answerkey} is used, the vertical spacing
+is ignored, and the solution is typeset, as shown above. Notice the
+difference in the vertical spacing between the two.
+
+The \textsf{eqexam} package now attempts to build the solution environment
+so the vertical spacing is (roughly) the same.
+\settowidth{\aebdimen}{\ttfamily\string\vspacewithkeyOff}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\vspacewithkeyOn
+\vspacewithkeyOff
+\end{dCmd}
+\noindent The first command turns on this new feature---the feature of trying to
+place the vertical spacing in the \texttt{answerkey} mode as requested by
+the optional argument of the \texttt{solution} environment. The second
+one, \cs{vspacewithkeyOff} (the default) turns off this new feature, and
+reverts to the old behavior of \textsf{eqexam}.
+
+Here is a representation of the effects of the command \cs{vspacewithkeyOn}.
+
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\begin{solution}[1in]
+$ x+1 = 4 \implies x = 3 $
+\end{solution}
+\end{Verbatim}
+\begin{flushleft}
+\setlength{\fboxsep}{0pt}
+\begin{tabular}{@{\hskip\leftmargini}cc}
+\texttt{nosolutions} & \texttt{answerkey}\\
+\fbox{\parbox[t][1in]{.4\linewidth}{\strut\kern0pt\vfill\hfill}}&
+\fbox{\parbox[t][1in]{.4\linewidth}{\strut\textit{Solution:} $ x+1 = 4 \implies x = 3 $\hfill\vfill}}\\
+\end{tabular}
+\end{flushleft}
+As you can see, the vertical spacing with solutions is the same as
+without, the page breaks should be the same, and the positioning of the problems should be
+(roughly) the same throughout the test.
+
+\newtopic The commands \cs{vspacewithkeyOn} and \cs{vspacewithkeyOff} may
+be used anywhere (between problems or parts), but normally, one would put
+\cs{vspacewithkeyOn} in the preamble.
+
+\subsection{Annotating a Continuing Problem with Parts}
+
+% http://www.acrotex.net/blog/?p=698
+% Annotating a Continuing Problem with Parts, and Page totals
+The demonstration file for this feature is
+\begin{equation*}
+\textsl{\textsl{\ulSetLink{http://www.acrotex.net/blog/?p=698}{Annotating a
+Continuing Problem with Parts, and Page totals}}}
+\end{equation*}
+found at the \textbf{\ulSetLink{http://www.acrotex.net/blog}{Acro\TeX{} Blog}}
+
+\newtopic A situation often encountered is when a problem with parts crosses a page
+boundary; the problem continues on the next page without any annotation.
+This feature works to insert a text string at the top of the next page, a
+string that gives the reader (student) the context of the part.
+
+\medskip\noindent
+\begin{minipage}{\linewidth}
+\begin{minipage}[t]{.5\linewidth-5pt}
+\emph{(Page 2)}\\
+\textbf{4.} Solve each of the following.
+\begin{enumerate}
+\item[(a)] Solve this
+\item[(b)] Solve this
+\end{enumerate}
+\end{minipage}\hfil\vrule\hfill
+\begin{minipage}[t]{.5\linewidth-10pt}
+\emph{(Page 3)}\\
+\textbf{Problem~4 continued.}
+\begin{enumerate}
+\item[(c)] Solve this
+\item[(d)] Solve this
+\end{enumerate}
+\end{minipage}
+\end{minipage}
+\newtopic Above is an illustration of how this feature works.
+
+%the default string is \textbf{Problem \texttt{<num>} continued.}
+
+\settowidth{\aebdimen}{\ttfamily\string\turnContAnnotOff}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\turnContAnnotOff
+\turnContAnnotOn
+\end{dCmd}
+\noindent The feature may be turned off and on using the above two commands. These
+commands are usually in the preamble, but they can appear between problems
+or between \texttt{exam} environments.
+
+\newtopic The annotatation text that appears is determined by the definition of
+\cs{annotContStr}.
+\begingroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily \string\textbf\darg{Problem\string~\string\eqeCurrProb\string\space continued.}\}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\newcommand{\annotContStr}{%
+ \textbf{Problem~\eqeCurrProb\space continued.}}
+\end{dCmd}
+\endgroup\noindent where \cs{eqeCurrProb} is the current problem number.
+\cs{annotContStr} may be redefined, but be sure to include the problem
+number \cs{eqeCurrProb}.
+
+The insertion of the continuation annotation uses \cs{promoteNewPage}, see
+Section~\ref{aqpNewPage} on page~\pageref{aqpNewPage} for a description of
+\cs{promoteNewPage}.
+
+\settowidth{\aebdimen}{\ttfamily\string\newcommand\darg{\string\ic@vspacedefault}\darg{1in}}
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\acvspace{!meta(vspace)}
+\resetacvspace
+\newcommand{\ic@vspacedefault}{1in}
+\end{dCmd}
+\noindent The above three lines describes some commands for controlling the generation of a new page
+through the use of \cs{promoteNewPage}. The first one \cs{acvspace} is used to set the option
+parameter of \cs{promoteNewPage}. The default value for promoting a new page is \texttt{.25in}, as
+defined by \cs{ic@vspacedefault}, which can be redefined. The command \cs{resetacvspace} resets
+the optional argument of \cs{promoteNewPage} back to its default. All definitions are local, so the revert to
+their original values when a group is exited.
+
+
+\subsection{The Exam Record}\label{examrecord}
+
+% http://www.acrotex.net/blog/?p=703
+% The Exam Record on the Cover Page
+
+The demonstration file for this feature is
+\begin{equation*}
+\textsl{\textsl{\ulSetLink{http://www.acrotex.net/blog/?p=703}{The Exam Record on the Cover Page}}}
+\end{equation*}
+found at the \textbf{\ulSetLink{http://www.acrotex.net/blog}{Acro\TeX{} Blog}}
+
+
+\newtopic When choose the \texttt{coverpage} option and the \texttt{coverpagesumry} option is set to either
+\texttt{byparts} or \texttt{bypages}, you get an \textbf{Exam Record} appearing on the cover page.
+See Figure~\ref{fig:ExamRecord}, page~\pageref{fig:ExamRecord}.
+
+There are several commands that can be used to customize the layout of the \textbf{Exam Record}
+\begin{Verbatim}[xleftmargin=\leftmargini,numbers=left]
+\eqeSumryHoriz
+\eqeSumryVert
+\end{Verbatim}
+These two commands arrange the \textbf{Exam Record}
+relative to the student/instructor information. The former is a horizontal
+arrangement, the latter is a vertical arrangement, \cs{eqeSumryVert} is the default.
+
+\newtopic Below are several text commands for customizing the text in the \textbf{Exam Record}
+box:
+\begin{Verbatim}[xleftmargin=\leftmargini,numbers=left]
+\newcommand{\cpSumryHeader}{\textbf{Exam Record}}
+\newcommand{\cpSumryPts}{\,\text{pts}}
+\newcommand{\cpSumryPage}{Page}
+\newcommand{\cpSumryTotal}{Total:}
+\newcommand{\cpSumryGrade}{Grade:}
+\cpSetSumryWidth{.5\linewidth}
+\end{Verbatim}
+The meanings of numbers~(1)--(5) are apparent from Figure~\ref{fig:ExamRecord}, page~\pageref{fig:ExamRecord},
+where these strings are on display. Number~(6) determines the width of the \textbf{Exam Record}, its default
+is half the \cs{linewidth}.
+
+\newtopic The \textbf{Exam Record} by default is enclosed in an \cs{fbox}, use the command
+\cs{cpNofbox} in the preamble to remove this enclosing box.
+
+\newtopic\textbf{Naming conventions for \texttt{byparts}.} When
+\texttt{coverpagesumry=byparts}, there are several naming options
+available. The default name of each part is the exam name (the required
+argument of the \texttt{exam} environment. By specifying
+\cs{useUIPartNames} in the preamble, the user friendly name is used (the
+one that appears as the optional first argument of the \texttt{exam}
+environment. The user friendly names are used when the solutions are
+listed in the back of the document (for example, when the option
+\texttt{vspacewithsolns} is specified). These user-friendly names may be too wide
+to put in the \textbf{Exam Record}, in this case, you can executed
+\cs{useCustomPartNames} in the preamble. This allows you to define your own names
+that are to appear in the \textbf{Exam Record}. To define your custom names, use
+the \cs{customNaming} command:
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=+\(\)]
+\customNaming{+meta(name)}{+meta(text)}
+\end{Verbatim}
+where, \meta{name} is the name of the exam, and \meta{text} is the text to appear
+in the \textbf{Exam Record}. For example, the following definitions might be made
+for a two part final exam, the first part the instructor is free to pose questions,
+the second part are Department supplied questions.
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\customNaming{Part1}{Instr Qs:}
+\customNaming{Part2}{Dept Qs:}
+\end{Verbatim}
+
+\subsection{Calculate problem range between two markers}
+
+I have defined the command In response to a user who wanted more
+information about problem ranges between two marks, the command
+\cs{calcQsBtwnMarkers} is the proposed solution. The syntax is\dots
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=+\(\)]
+\calcQsBtwnMarkers[+meta(Mrk2)]{+meta(Mrk1)}
+\end{Verbatim}
+The required parameter (\meta{Mrk1}) is called the \emph{primary mark}.
+The command defines a number of other commands based on the primary
+mark name. \cs{calcQsBtwnMarkers} calculates the first and
+last problem numbers of the questions between the command
+\cs{calcQsBtwnMarkers} that has \meta{Mrk1} as its \emph{primary marker} and
+another command \cs{calcQsBtwnMarkers} that has \meta{Mrk2} as its \emph{primary
+marker}. The names of the commands produced are all based in the primary
+marker name \meta{Mrk1}.
+
+\newtopic As mentioned above, there are several other commands
+\cs{calcQsBtwnMarkers} defines.
+\cs{calcQsBtwnMarkers[\meta{Mrk2}]}\verb!{!\meta{Mrk1}\verb!}! defines the
+following commands:
+\begin{itemize}
+
+\item \cs{\meta{Mrk1}Start} is the first question number that follows the placement
+of the command \cs{calcQsBtwnMarkers} with \meta{Mrk1} as its primary marker.
+
+\item \cs{\meta{Mrk1}End} is the last question number between two
+\cs{calcQsBtwnMarkers} commands having \meta{Mrk1} and \meta{Mrk2} as their
+primary marks.
+
+\item \cs{\meta{Mrk1}nQs} is the number of questions appearing
+between \cs{calcQsBtwnMarkers} commands having primary marks of
+\meta{Mrk1} and \meta{Mrk2}.
+\end{itemize}
+Three other commands are defined for easy user access.
+\begin{itemize}
+\item \cs{markStartFor}\verb!{!\meta{Mrk1}\verb!}! expands to \cs{\meta{Mrk1}Start}.
+\item \cs{markEndFor}\verb!{!\meta{Mrk1}\verb!}! expands to \cs{\meta{Mrk1}End}.
+\item \cs{markNumQsFor}\verb!{!\meta{Mrk1}\verb!}! expands to \cs{\meta{Mrk1}nQs}.
+\end{itemize}
+Use the command \cs{calcQsBtwnMarkers} without the optional first argument as the last mark
+in your \texttt{exam} environment.
+
+%\handpoint The demo file for this feature is named \texttt{markqs.tex}.
+
+\exAeBBlogPDF{p=1231} The demo file for this feature is named
+\texttt{\href{\urlAcroTeXBlog/?p=1231}{markqs.pdf}}
+
+\newpage
+\markright{References}
+
+\begin{thebibliography}{[1]}\label{references}
+\addcontentsline{toc}{section}{\protect\numberline{}References}
+\backrefparscanfalse
+\def\srtln{\vskip-\baselineskip\vskip-\parsep}
+\def\lngln{\vskip-\parsep}
+
+\bibitem{book:AEBB}
+ D. P. Story, \textsl{\AEBBook}, in preparation. \backrefprint
+
+\end{thebibliography}
+
+
+\end{document}
diff --git a/texmf-dist/source/latex/eqexam/doc/fortextbook.zip b/texmf-dist/source/latex/eqexam/doc/fortextbook.zip
new file mode 100644
index 00000000..e3210cfd
--- /dev/null
+++ b/texmf-dist/source/latex/eqexam/doc/fortextbook.zip
Binary files differ
diff --git a/texmf-dist/source/latex/eqexam/doc/fortextbook/fortextbook.pdf b/texmf-dist/source/latex/eqexam/doc/fortextbook/fortextbook.pdf
new file mode 100644
index 00000000..4619dc88
--- /dev/null
+++ b/texmf-dist/source/latex/eqexam/doc/fortextbook/fortextbook.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/eqexam/eqexam.dtx b/texmf-dist/source/latex/eqexam/eqexam.dtx
new file mode 100644
index 00000000..951c5f74
--- /dev/null
+++ b/texmf-dist/source/latex/eqexam/eqexam.dtx
@@ -0,0 +1,8258 @@
+% \iffalse
+% makeindex -s gglo.ist -o eqexam.gls eqexam.glo
+% makeindex -s gind.ist -o eqexam.ind eqexam.idx
+%<*copyright>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2017 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License 1.2 %%
+%% 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{eqexam}
+%<package> [2017/03/16 v4.9 An Exam Construction Package (dps)]
+%<package>\def\eqexamdefReq{2017/03/16}
+%<*driver>
+\documentclass{ltxdoc}
+\GlossaryPrologue{\section{{Change History}}}%
+\IndexPrologue{\section{{Index}}}%
+\value{IndexColumns}=2
+\value{GlossaryColumns}=2
+\usepackage{makeidx}
+\usepackage[colorlinks,hyperindex]{hyperref}
+%\pdfstringdefDisableCommands{\let\\\textbackslash}%
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\InputIfFileExists{aebdocfmt.def}{\PackageInfo{eqexam}{Inputting aebdocfmt.def}}
+ {\def\IndexOpt{\DescribeMacro}\let\setupFullwidth\relax
+ \PackageInfo{eqexam}{aebdocfmt.def cannot be found}}
+\begin{document}
+ \let\pkg\textsf
+ \def\switchCats{\catcode`\{=12\relax\catcode`\}=12\relax
+ \catcode`\(=1\relax\catcode`\)=2\relax}
+ \GetFileInfo{eqexam.sty}
+ \title{\textsf{eqexam}: An Exam Construction Package}
+ \author{D. P. Story\\
+ Email: \texttt{dpstory@uakron.edu}}
+ \date{Processed \today}
+ \maketitle
+ \tableofcontents
+ \let\Email\texttt
+ \DocInput{eqexam.dtx}
+\IfFileExists{\jobname.ind}{\newpage\setupFullwidth\PrintIndex}{\paragraph*{Index} The index goes here.\\Execute
+ \texttt{makeindex -s gind.ist -o eqexam.ind eqexam.idx} on the command line and recompile
+ \texttt{eqexam.dtx}.}
+\IfFileExists{\jobname.gls}{\PrintChanges}{\paragraph*{Change History} The list of changes goes here.\\Execute
+ \texttt{makeindex -s gglo.ist -o eqexam.gls eqexam.glo} on the command line and recompile
+ \texttt{eqexam.dtx}.}
+\end{document}
+%</driver>
+% \fi
+%
+% \StopEventually{}
+%
+% \InputIfFileExists{aebDoNotIndex.def}{\PackageInfo{eqexam}{Inputting aebDoNotIndex.def}}
+% {\PackageInfo{eqexam}{aebDoNotIndex.def cannot be found}}
+%
+% \section{Introduction}
+%
+% This package is my attempt at writing a set of macros for creating exams.
+% The package can be used with or without \textsf{web} or \textsf{exerquiz}.
+% When used without, what is produced is a document suitable for printing.
+% When \textsf{exerquiz} is used, the same document is produced, but with
+% hypertext links to solutions. This may be useful for publishing solutions
+% on the web, or publishing pretests with/without solutions.
+%
+% The package must be as flexible as possible vis-\`a-vis PDF. (1)
+% \textsf{web} only does not add much, it does input hyperrref and test info
+% such as \cs{title}, \cs{subject}, etc are placed in the Document Info
+% fields of the PDF. (2) If \textsf{exerquiz} is also input (prior to
+% \textsf{eqexam}), then hyperlinks will be created to the solutions to the
+% test, if solutions are included at the end of the document. (3) If
+% \textsf{web} and \textsf{exerquiz} are input, and the \texttt{online}
+% option is taken, then the checkboxes will be come interactive, the space
+% left to work the problems will be multi-line text boxes, fill-ins limited
+% to True/False and simple text fill-in the blank will also become text
+% boxes.
+%
+% When in \texttt{online} mode, the student can take the test in a computer
+% lab, the completed exam can be printed and handed in, or perhaps submitted
+% server-side script.
+%
+% \medskip\noindent (2011/05/13) The version of \textsf{eqexam} is a
+% departure from previous versions. Previously, the list of problems were
+% not in list, they were left-justified, with the problem number extending
+% out into a little area determined by \cs{oddsidemargin}. This makes it
+% hard to reformat a list of problems to fit into a custom book format.
+% This new version defines a new environment, \texttt{eqequestions}, that
+% makes each problem into a list. The list environment allows for an easy
+% redesign of the formatting of the problems. The purpose of this new
+% scheme, is to open up \textsf{eqexam} as a format package that can be used
+% by author for writing a textbook.
+%
+% The \texttt{fortextbook} option supplies support for authors writing a
+% textbook. The \texttt{exam} environment is re-cast into the
+% \texttt{probset} environment, it can be used to write problem sets within
+% the text. there is a version for the instructor and the student. The
+% instructors version writes answers to the problem sets to the margins (or
+% inline). Two solutions are offered, short and long. The short solutions
+% appear in the back of the book (odd-numbered ones for the student edition.
+% The long solutions are used to build the stand-alone solutions manuals for
+% both the student and the instructor. More details are found in
+% \Nameref{fortextbook}, see also \Nameref{fortextbookstyle}.
+%
+% \newpage
+% \section{Package options and Process Options}
+% Let us catalog the options of this package.
+%
+% \subsection{Early inclusion of packages}
+% We include these packages early in the process of loading.
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%\changes{v3.1b}{2012/06/18}{New requirement \textsf{ifpdf}}
+% \begin{macrocode}
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+% \end{macrocode}
+% Very useful package for defining key-values.
+% \begin{macrocode}
+\usepackage{xkeyval}
+% \end{macrocode}
+%
+% \subsection{Options New to \textsf{eqexam}}
+% Here are some options unique to this package.
+% \IndexOpt{usecustomdesign}
+% Use this option to avoid \textsf{eqexam} from setting up the ``standard'' page layout.
+% \begin{macrocode}
+\DeclareOptionX{usecustomdesign}{\eqcustomdesigntrue}
+\newif\ifeqcustomdesign \eqcustomdesignfalse
+\DeclareOptionX{nocustomdesign}{\let\eqe@nocustomdesign=1}
+\let\eqe@nocustomdesign=0
+% \end{macrocode}
+% \IndexOpt{fortextbook}
+% An option to extend the application of \textsf{eqexam} to provide support
+% (exercises, providing solutions, short solutions, answers, and hints) for
+% authors writing textbooks. See \Nameref{fortextbook}.
+% \begin{macrocode}
+\DeclareOptionX{fortextbook}{\eqfortextbooktrue}
+\newif\ifeqfortextbook \eqfortextbookfalse
+% \end{macrocode}
+% \IndexOpt{forinstr}
+% \IndexOpt{forstudent}
+% These two options simply set a switch to signal the intention of the
+% document author.
+% \begin{macrocode}
+\DeclareOptionX{forinstr}{\eqforinstrtrue}
+\DeclareOptionX{forstudent}{\eqforinstrfalse}
+\newif\ifeqforinstr \eqforinstrfalse
+% \end{macrocode}
+% \IndexOpt{nomarginwrite}
+% The switch \cs{ifeqwritetomargins} is used by the \texttt{fortextbook}
+% option. It is normally \texttt{true}, but if set to \texttt{false}, the
+% \cs{AddToShipoutPicture} is not generated at the beginning of the
+% document. Here is the code taken from below:
+%\begin{verbatim}
+% \ifeqfortextbook\ifeqwritetomargins
+% \AtBeginDocument{\chkmarginboxwidth
+% \AddToShipoutPicture{\eqe@tb@shipout}}
+% \fi\fi
+%\end{verbatim}
+% Using this option, the check for the margin width is not done,
+% and writing to the margins is turned off.
+% (\cs{marginpar} still works)
+% \begin{macrocode}
+\DeclareOptionX{nomarginwrite}{\eqwritetomarginsfalse}
+\newif\ifeqwritetomargins\eqwritetomarginstrue
+% \end{macrocode}
+%
+% \paragraph*{Configuration Files.}
+% This section contains options for the configuration files.
+% \IndexOpt{cfg}
+% The \texttt{cfg} option is used to specify a named configuration file, extension
+% must be \texttt{.cfg}; usage \texttt{cfg=hwdoc}.
+%\changes{v3.0u}{2012/09/03}{Added the \texttt{cfg} option for inputting
+% a custom config file.}
+%\changes{v3.1d}{2012/09/29}{Added \cs{ifeqexamCFG} and cs{eqexamCFG}; these are
+% used by \textsf{ATB} to attached the configuration file.}
+% \begin{macrocode}
+\define@key{eqexam.sty}{cfg}[]{%
+ \def\arg@i{#1}\ifx\arg@i\@empty
+ \PackageWarning{eqexam}{No value for `cfg' specified}\else
+ \def\ifeqexamCFG{true}\def\eqexamCFG{#1.cfg}%
+ \AtEndOfPackage{\InputIfFileExists{#1.cfg}
+ {\typeout{Inputting #1.cfg}}{\PackageWarning{eqexam}{%
+ Cannot find configuration file #1.cfg}}}\fi
+ }
+\def\ifeqexamCFG{false}
+\let\eqexamCFG\@empty
+% \end{macrocode}
+% \IndexOpt{myconfig}\IndexOpt{myconfigi...myconfigvi}
+% We offer seven sets of configuration files, that should be enough, especially
+% light of the new \texttt{cfg} option, defined above.
+% \changes{v3.0t}{2012/25/01}{Added four more CFG files are the request
+% of a user.}
+% \begin{macrocode}
+\@for\eqe@tmp@i:={},i,ii,iii,iv,v,vi\do{%
+ \edef\eqe@tmp@exp{%
+ \noexpand\DeclareOptionX{myconfig\eqe@tmp@i}%
+ {\noexpand\AtEndOfPackage{\expandafter\noexpand
+ \csname eqemyconfig\eqe@tmp@i\endcsname}}%
+ }\eqe@tmp@exp
+}
+% \end{macrocode}
+%
+% \paragraph*{Point options.}
+% Options relating to points, points on left, right, both, no points,
+% totals on left and right.
+% \IndexOpt{pointsonleft}
+% \IndexOpt{pointsonright}
+% \IndexOpt{pointsonboth}
+% \IndexOpt{nopoints}
+% \IndexOpt{totalsonleft}
+% \IndexOpt{totalsonright}
+% \IndexOpt{nozerototals}
+% We offer options for points and totals.
+% \begin{macrocode}
+\DeclareOptionX{pointsonleft}{\AtEndOfPackage{\PointsOnLeft}}
+\DeclareOptionX{pointsonright}{\AtEndOfPackage{\PointsOnRight}}
+\DeclareOptionX{pointsonboth}{\AtEndOfPackage{\PointsOnBothSides}}
+\DeclareOptionX{nopoints}{\AtEndOfPackage{\NoPoints}}
+\DeclareOptionX{totalsonleft}{\AtEndOfPackage{\TotalsOnLeft}}
+\DeclareOptionX{totalsonright}{\AtEndOfPackage{\TotalsOnRight}}
+\DeclareOptionX{nozerototals}{\AtEndOfPackage{\noZeroTotals}}
+% \end{macrocode}
+%
+% \paragraph*{Totals options.}
+%
+% \IndexOpt{nototals}
+% \IndexOpt{noparttotals}
+% \IndexOpt{parttotalsonright}
+% \IndexOpt{parttotalsonleft}
+% \IndexOpt{noseparationrule}
+% \IndexOpt{nosummarytotals}
+% Options relating to totals
+% \begin{macrocode}
+\let\eqe@YES=y \let\eqe@NO=n
+\let\eqe@One=1 \let\eqe@Zero=0
+\let\eqe@Two=2 \let\eqe@Three=3 \let\eqe@Four=4
+\DeclareOptionX{nototals}{\AtEndOfPackage{\NoTotals}}
+\DeclareOptionX{noparttotals}{%
+ \AtEndOfPackage{\let\eq@parttotals\eqe@NO}}
+\DeclareOptionX{parttotalsonright}{%
+ \def\eqeomarginbox{\eqeomarginboxright}}
+\DeclareOptionX{parttotalsonleft}{%
+ \def\eqeomarginbox{\eqeomarginboxleft}}
+\def\eqeomarginbox{\eqeomarginboxright}
+\DeclareOptionX{noseparationrule}{%
+ \AtEndOfPackage{\separationruleOff}}
+% \AtEndOfPackage{\let\separationrule\relax}}
+\DeclareOptionX{nosummarytotals}{\let\eq@nosummarytotals\eqe@YES}
+% \end{macrocode}
+%
+% \paragraph*{cover page options.} There are two such options,
+% \texttt{coverpage} and \texttt{cover\-page\-sumry}.
+% \IndexOpt{coverpage}
+% If this option is taken, a cover page is generate.
+% \begin{macrocode}
+\DeclareOptionX{coverpage}{\def\eqex@coverpage{\eqexcoverpage}%
+ \setcounter{page}{0}}
+% \end{macrocode}
+% \IndexOpt{coverpagesumry}
+% If this option is taken, an \textbf{Exam Record} is generated on the
+% cover page, provided the \texttt{coverpage} option is taken. Possible
+% values aer \texttt{byparts}, \texttt{bypages}, or \texttt{none}.
+% \begin{macrocode}
+\define@choicekey+{eqexam.sty}{coverpagesumry}[\val\nr]%
+ {byparts,bypages,none}{%
+ \ifcase\nr\relax
+ \def\sumryAnnots{\cpSumrybyparts}\or
+ \def\sumryAnnots{\cpSumrybypages}\or
+ \let\sumryAnnots\relax
+ \fi
+}{\PackageWarning{aeb}{Bad choice for coverpagesumry, permissible values
+ are byparts, bypages, and none. Try again}}
+\let\sumryAnnots\relax
+% \end{macrocode}
+%
+% \paragraph*{Options related to how the document is built.}
+%
+% \IndexOpt{nospacetowork}
+% The vertical space defined by the solution environment is removed.
+% \begin{macrocode}
+\DeclareOptionX{nospacetowork}{%
+ \AtEndOfPackage{\let\eq@insertverticalspace\eqe@NO}}
+% \end{macrocode}
+% \IndexOpt{answerkey}
+% Equivalent to solutionsafter and proofing.
+% \begin{macrocode}
+\newif\ifanswerkey \answerkeyfalse
+\DeclareOptionX{answerkey}{\AnswerKey}
+\def\AnswerKey{\answerkeytrue\eq@proofingtrue
+ \eq@solutionsaftertrue}
+% \end{macrocode}
+% \IndexOpt{vspacewithsolns}
+% When \texttt{vspacewithsolns} is used, vertical space is created by
+% the solutions environment, and the solutions are written to the
+% end of the file.
+% \changes{v2.0d}{2011/03/04}{%
+% Added the \texttt{vspacewithsolns} option}
+% \IndexOpt{ftbsolns}
+% Added \texttt{ftbsolns} as an alias for \texttt{vspacewithsolns}
+% \changes{v3.0h}{2011/08/17}{% 2011/08/17 v3.0h Added the
+% \texttt{vspacewithsolns} option}. This is implemented through
+% a Boolean switch \cs{ifvspacewithsolns}, which I'm sorry now I've made
+% so long. To make up for that bad decision, I also define
+% \DescribeMacro{\ifkeyalt}\cmd{ifkeyalt} to be \cmd{\ifvspacewithsolns}
+% with making conditional decisions, of course, one cannot say
+% \cs{keyalttrue}.
+% \begin{macrocode}
+\newif\ifvspacewithsolns\vspacewithsolnsfalse
+\def\ifkeyalt{\csname ifvspacewithsolns\endcsname}
+\def\ifkeyOrkeyalt{\ifanswerkey
+ \def\eqe@next{\csname iftrue\endcsname}\else
+ \ifvspacewithsolns\def\eqe@next{\csname iftrue\endcsname}\else
+ \def\eqe@next{\csname iffalse\endcsname}\fi\fi\eqe@next}
+\DeclareOptionX{vspacewithsolns}{%
+ \vspacewithsolnstrue\displayworkareatrue}
+\DeclareOptionX{ftbsolns}{%
+ \vspacewithsolnstrue\displayworkareatrue}
+% \end{macrocode}
+% \IndexOpt{useforms}
+% Use forms (if online option is taken); otherwise draw rectangles for
+% multiple choice/multiple selection questions.
+% \begin{macrocode}
+\DeclareOptionX{useforms}{\AtEndOfPackage{\def\sqstar{*}}}
+% \end{macrocode}
+% \IndexOpt{allowcirc4mc}
+% This option uses \texttt{lcircle10} to draw circles around multiple choice questions.
+% \begin{macrocode}
+\newif\ifallowcircmc \allowcircmcfalse
+\DeclareOptionX{allowcirc4mc}{\allowcircmctrue}
+% \end{macrocode}
+%
+% \paragraph*{PDF Options} The various options to go beyond paper!
+%
+% \IndexOpt{online}
+% \IndexOpt{pdf}
+% \IndexOpt{links}
+% \IndexOpt{email}
+% Options related to the interactive capability of \textsf{eqexam}.
+% \changes{v3.1b}{2012/06/18}{Added \cs{eqe@auto@chk@drivers}}
+% For each of the PDF options, we auto-check for \textsf{pdftex}
+% and \textsf{xetex}.
+% \begin{macrocode}
+\def\eqe@auto@chk@drivers{\ifpdf\ExecuteOptionsX{pdftex}\else
+ \ifxetex\ExecuteOptionsX{xetex}\fi\fi}
+\newif\ifeqeonline \eqeonlinefalse
+\DeclareOptionX{online}{\eqe@auto@chk@drivers
+ \let\eq@online\eqe@YES\eqeonlinetrue\ExecuteOptionsX{links}}
+\DeclareOptionX{pdf}{\eqe@auto@chk@drivers\let\load@web\eqe@YES}
+\DeclareOptionX{links}{\eqe@auto@chk@drivers
+ \let\load@web\eqe@YES\let\load@exerquiz\eqe@YES}
+\DeclareOptionX{email}{\eqe@auto@chk@drivers
+ \let\use@email\eqe@YES\ExecuteOptionsX{online}}
+% \end{macrocode}
+% \IndexOpt{obeylocalversions}
+% This option is used for multiple versions of a document.
+% \begin{macrocode}
+\newif\ifeqobeylocalversion \eqobeylocalversionfalse
+\DeclareOptionX{obeylocalversions}{\eqobeylocalversiontrue}
+% \end{macrocode}
+% \IndexOpt{usexkv}
+% Causes the \textsf{xkeyval} package to be input, this option extends the
+% option list of
+% \cs{fillIn}.
+% \begin{macrocode}
+\DeclareOptionX{usexkv}{\let\eq@usexkeys\eqe@YES}
+% \end{macrocode}
+%\texttt{2014/12/19} Now, the \texttt{usexkeys} is on by default.
+%\changes{v3.5a}{2014/12/19}{Made \texttt{usexkeys} as default}
+% \begin{macrocode}
+\let\eq@usexkeys\eqe@YES
+% \end{macrocode}
+%
+%\paragraph*{Renditions} Options relating to renditions.
+% \IndexOpt{max}
+% \IndexOpt{rendition}
+% The \texttt{max} and \texttt{rendition} option can be used instead of the
+% \verb!\numVersions{2}! and \verb!\forVersion{a}!, respectively. These options
+% allow you to set the version information though a package option. This allows us, for
+% example, to use a \textsf{cfg} file such as \texttt{rendition.cfg} to dynamically set the version.
+% This feature is used primarily by \textsf{AeB Exam Builder}.
+% \changes{v2.0}{2010/03/05}
+% {%
+% Switched over to \textsf{xkeyval}, added max and rendition to be consistent
+% with the renditions package, though we don't use the rendition package
+% itself. \textsf{eqexam} has a more extensive renditions system already.
+% Introduced this mostly for use AeB Exam Builder.
+% }
+% \begin{macrocode}
+\let\eq@renditionOptions\@empty
+\let\eq@max@selected\@empty \let\eq@ren@selected\@empty
+\DeclareOptionX{max}{\def\eq@max@selected{#1}%
+ \g@addto@macro\eq@renditionOptions{\numVersions{#1}}}
+\DeclareOptionX{rendition}{\def\eq@ren@selected{#1}%
+ \g@addto@macro\eq@renditionOptions{\forVersion{#1}}}
+% \end{macrocode}
+% \paragraph*{Randomization} Options relating to randomization.
+% \IndexOpt{allowrandomize}
+% Use this option to randomize the choices of a multiple choice question.
+% \begin{macrocode}
+\DeclareOptionX{allowrandomize}{\AtEndOfPackage{\inputRandomizeChoices}}
+\def\inputRandomizeChoices{\InputIfFileExists{aebrandom.def}
+ {\typeout{inputting aebrandom.def}}{cannot find aebrandom.def}}
+% \end{macrocode}
+%
+% \paragraph*{Set Misc. Defaults and Helper Macros.}
+% We set some defaults, and define macros for use by the document author.
+% \begin{macrocode}
+\let\eq@online\eqe@NO
+\def\ifisOnline{\ifx\eq@online\eqe@YES}
+\let\use@email\eqe@NO
+\let\load@web\eqe@NO
+\let\load@exerquiz\eqe@NO
+\def\sqLinks{\def\sqstar{}}\sqLinks
+\def\sqForms{\def\sqstar{*}}
+\def\NoSpaceToWork{\let\eq@insertverticalspace\eqe@NO}
+\def\SpaceToWork{\let\eq@insertverticalspace\eqe@YES}
+\let\eq@nototals\eqe@NO
+\let\eq@nosummarytotals\eqe@NO
+\let\eq@parttotals\eqe@YES
+\let\eqx@separationrule\eqe@YES
+\let\eq@insertverticalspace\eqe@YES
+\let\eqex@coverpage\relax
+\def\@reportpoints{0}
+\let\marginpoints\@empty
+\let\totalsbox=\hfil
+% \end{macrocode}
+%
+% \subsection{Options from and for \textsf{web}}
+% \IndexOpt{forpaper}
+% \IndexOpt{forcolorpaper}
+% Here is the list of options of \textsf{exerquiz} we plan to recognize.
+% \changes{v4.6a}{2016/06/04}{Added \string\cs{ifequsecolor} to easily distinguish between
+% \string\texttt{forpaper} and \string\texttt{forcolorpaper} options.}
+% \begin{macrocode}
+\@ifundefined{ifequsecolor}{\newif\ifequsecolor\equsecolorfalse}{}
+\DeclareOptionX{forpaper}{\equsecolorfalse\eqforpapertrue
+ \PassOptionsToPackage{monochrome}{\eq@ColorPackage}}
+\DeclareOptionX{forcolorpaper}{\equsecolortrue\eqforpapertrue} % for print
+% \end{macrocode}
+% \IndexOpt{preview}
+% Preview shows outlines for form fields.
+% \begin{macrocode}
+\DeclareOptionX{preview}{\previewtrue}
+% \end{macrocode}
+% \IndexOpt{webOpts}
+% Pass options to \textsf{web}, when \texttt{pdf} or higher is used.
+% \begin{macrocode}
+\define@key{eqexam.sty}{webOpts}[]{\def\eqe@webOpts{#1,\eqDriverName}}
+\def\eqe@webOpts{\eqDriverName}
+% \end{macrocode}
+%
+% \subsection{Options from and for \textsf{exerquiz}}
+% Options from \textsf{exerquiz} that are useful for this package.
+% \IndexOpt{exerquizOpts}
+% Pass options to \textsf{exerquiz}, when \texttt{links} or higher is used.
+% \begin{macrocode}
+\define@key{eqexam.sty}{exerquizOpts}[]{\def\eqe@eqOpts{#1,nodljs}}
+\def\eqe@eqOpts{nodljs}
+% \end{macrocode}
+% \IndexOpt{nosolutions}
+% \IndexOpt{nohiddensolutions}
+% \IndexOpt{noHiddensolutions}
+% \IndexOpt{solutionsafter}
+% \changes{v1.7b}{2007/21/07}{Added a \texttt{solutionsonly} option}
+% \IndexOpt{solutionsonly}
+% Solutions related options
+% \begin{macrocode}
+% dps 03/04/11
+\DeclareOptionX{nosolutions}{\eq@nolinktrue\eq@nosolutionstrue
+ \displayworkareatrue}
+\DeclareOptionX{nohiddensolutions}{\eq@globalshowsolutionstrue}
+\DeclareOptionX{noHiddensolutions}%
+ {\eq@globalshowsolutionstrue\AtBeginDocument{\def\Hidesymbol{h}}}
+\DeclareOptionX{solutionsafter}{\eq@solutionsaftertrue
+ \displayworkareafalse}
+\DeclareOptionX{solutionsonly}{%
+ \solutionsonlytrue\answerkeytrue\displayworkareafalse
+ \AtEndOfPackage{\therearesolutionstrue\let\exerSolnsHeadnToc\relax}}
+% \end{macrocode}
+% \IndexOpt{proofing}
+% The \texttt{proofing} option sets a switch that controls whether
+% the checkbox for multiple choice questions appears, and whether
+% the answer for the \cs{fillin} command appears. \cmd{\ifeq@proofing}
+% is set to true when the \texttt{answerkey} option is taken.
+% \begin{macrocode}
+\DeclareOptionX{proofing}{\eq@proofingtrue}
+% \end{macrocode}
+% We provide two helper commands for turning on or off proofing. These are
+% \DescribeMacro{\showproofing}\cmd{\showproofing} for turning on proofing
+% and \DescribeMacro{\hideproofing}\cmd{\hideproofing} for turning off proofing.
+% There was some reason for defining these two, but can't remember now.
+% \begin{macrocode}
+\newcommand{\showproofing}{\eq@proofingtrue}
+\newcommand{\hideproofing}{\eq@proofingfalse}
+% \end{macrocode}
+% \IndexOpt{showgrayletters}
+% \changes{v1.7c}{2008/08/21}
+% {
+% Added the \texttt{showgrayletters} option to eqexam
+% (ported from exerquiz)
+% }
+% When this option is in effect, capital letters in gray appear under
+% the multiple choice question boxes.
+% \begin{macrocode}
+\newif\ifaebshowgrayletters\aebshowgraylettersfalse
+\DeclareOptionX{showgrayletters}%
+ {\AtEndOfPackage{\aebshowgrayletterstrue}}
+% \end{macrocode}
+%
+%\changes{v2.0i}{2011/04/17 }
+%{
+% Added the switch \cs{ifdisplayworkarea} to better control when the
+% work area is to be displayed.
+%}
+% \begin{macrocode}
+\newif\ifdisplayworkarea \displayworkareafalse
+% \end{macrocode}
+%
+% \paragraph*{Color packages}
+% We set the color package, \texttt{xcolor} preferred.
+% \begin{macrocode}
+\IfFileExists{xcolor.sty}%
+{\def\eq@ColorPackage{xcolor}\def\eqe@color@opt{table}%
+ \PassOptionsToPackage{xcolor}{table}}
+{\def\eq@ColorPackage{color}\let\eqe@color@opt\@empty}
+% \end{macrocode}
+% \DescribeMacro{noxcolor}\texttt{noxcolor} forces the use of the color package.
+% \begin{macrocode}
+\DeclareOptionX{noxcolor}{\def\eq@ColorPackage{color}}
+% \end{macrocode}
+%
+% \subsubsection{Title page options}
+% To\DescribeMacro{useclassmaketitle} support the use of eqexam outside a straight exam document, we allow the
+% user to bypass the redefinition of \cs{maketitle}. This is automatic
+% with the \texttt{fortextbook} option.
+% \begin{macrocode}
+\newif\if@eqeuseclassmaketitle \@eqeuseclassmaketitlefalse
+\DeclareOptionX{useclassmaketitle}{\@eqeuseclassmaketitletrue}
+\newif\if@bypasseqexamheading \@bypasseqexamheadingfalse
+\DeclareOptionX{bypasspkgpagestyle}{\@bypasseqexamheadingtrue
+ \ExecuteOptionsX{nototals}}
+% \end{macrocode}
+% \subsection{Drivers Recognized}
+% These drivers are only relevant when
+% a \textsf{PDF} option is taken (\texttt{pdf}, \texttt{links}, \texttt{online}, \texttt{email}).
+% For ordinary paper documents, it is not necessary to specify the driver. If you
+% put the assignment/homework/test (solns) on the web, suggested option is \texttt{pdf},
+% this inputs hyperref, and the document info dialog is filled in.
+% \IndexOpt{dvipsone}
+% \IndexOpt{dvips}
+% \IndexOpt{pdftex}
+% \IndexOpt{dvipdfm}
+% \IndexOpt{dvipdfmx}
+% \IndexOpt{xetex}
+% \IndexOpt{textures}
+% The list of recognized and supported drivers.
+% \begin{macrocode}
+\DeclareOptionX{dvipsone}{%
+ \def\eqe@drivernum{0}\def\eqDriverName{dvipsone}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipsone}}
+\DeclareOptionX{dvips}{\def\eqe@drivernum{0}\def\eqDriverName{dvips}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvips}}
+\DeclareOptionX{pdftex}{\def\eqe@drivernum{1}\def\eqDriverName{pdftex}%
+ \PassOptionsToPackage{\eq@ColorPackage}{pdftex}}
+\DeclareOptionX{dvipdfm}{%
+ \def\eqe@drivernum{2}\def\eqDriverName{dvipdfm}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipdfm}}
+\DeclareOptionX{dvipdfmx}{\def\eqe@drivernum{2}%
+ \def\eqDriverName{dvipdfmx}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipdfmx}}
+\DeclareOptionX{xetex}{\def\eqe@drivernum{2}\def\eqDriverName{xetex}%
+ \PassOptionsToPackage{\eq@ColorPackage}{xetex}}
+\DeclareOptionX{textures}{%
+ \def\eqe@drivernum{3}\def\eqDriverName{textures}%
+ \PassOptionsToPackage{\eq@ColorPackage}{textures}}
+\DeclareOptionX*{%
+ \PassOptionsToPackage{\CurrentOption}{\eq@ColorPackage}}
+\def\eqe@drivernum{5}
+\let\eqDriverName\@empty
+% \end{macrocode}
+% If \textsf{exerquiz} is not loaded, when we need to define some of the switches that
+% were defined in \textsf{exerquiz}.
+%
+% The following switches are used in the options above, and are also defined
+% in web, exerquiz, or eforms.
+% \begin{macrocode}
+\newif\ifeq@solutionsafter \eq@solutionsafterfalse
+\newif\ifsolutionsonly\solutionsonlyfalse
+\newif\ifeq@hidesolution \eq@hidesolutionfalse
+\newif\ifeq@globalshowsolutions \eq@globalshowsolutionsfalse
+\newif\ifeq@nosolutions \eq@nosolutionsfalse
+\newif\ifeq@proofing \eq@proofingfalse
+\newif\ifeq@nolink \eq@nolinkfalse
+\@ifundefined{ifpreview}{\newif\ifpreview \previewfalse}{}
+\newif\ifeqforpaper \eqforpaperfalse
+% \end{macrocode}
+% We define the commands for inputting the CFG files.
+% \begin{macrocode}
+\def\eqe@csarg#1#2{\expandafter#1\csname#2\endcsname}
+\@for\eqe@tmp@i:={},i,ii,iii,iv,v,vi\do{\eqe@csarg
+ \edef{eqemyconfig\eqe@tmp@i}{\noexpand
+ \InputIfFileExists{eqexam\eqe@tmp@i.cfg}{}{}}%
+ \eqe@tmp@exp
+}
+% \end{macrocode}
+%
+% \subsection{Bring in Config Files}
+%
+% First read \texttt{web.cfg}, to possibly get the driver, then input
+% \texttt{eqecus.opt}, which is used to create convenient custom options.
+% \changes{v1.6e}{2006/05/07}{%
+% Added a custom option feature. Just before the options are processed, the
+% tex compiler looks for the file \texttt{eqecus.opt}. This file should
+% contain one or more custom options. }
+%
+% Here is an example of usage for defining your own custom options, must be based on
+% current options, this code would be in the file \texttt{eqecus.opt}.
+%\begin{verbatim}
+%\DeclareOptionX{atbdbopts}
+%{%
+% \ExecuteOptionsX{online}
+% \ExecuteOptionsX{forcolorpaper}
+% \ExecuteOptionsX{nosolutions}
+% \ExecuteOptionsX{nopoints}
+% \ExecuteOptionsX{nototals}
+% \ExecuteOptionsX{nospacetowork}
+% \ExecuteOptionsX{obeylocalversions}
+% \ExecuteOptionsX{myconfig}
+%}
+%\end{verbatim}
+% The following config files are input prior to \cs{ProcessOptionsX}, and can,
+% therefore, contain declaration of options. \texttt{web.cfg} usually only
+% specifies the default driver. \texttt{eqecus.opt} is used by \textsf{@EASE},
+% but can be used locally.
+% \begin{macrocode}
+\InputIfFileExists{web.cfg}{}{}
+\InputIfFileExists{eqecus.opt}{}{}
+% \end{macrocode}
+%\changes{v2.0}{2010/03/05}
+%{
+% Added exambuilder.cfg for use by AeB Exam Builder, to pass the values of the options
+% max and rendition to eqexam.
+%}
+% These two are used by the \textsf{rendition} package and the exam builder utility.
+% \begin{macrocode}
+\InputIfFileExists{rendition.cfg}{}{}
+\InputIfFileExists{exambuilder.cfg}{}{}
+% \end{macrocode}
+%
+% \subsection{Process Options}
+%
+% Now process the options.
+% \begin{macrocode}
+\ProcessOptionsX
+% \end{macrocode}
+% \changes{v3.2c}{2013/02/23}{Added \cs{selectedMC} at end of package}
+% The \cs{selectedMC} command contains the choice for the styling for the
+% region multiple choice questions: rectangles or circles. The default is
+% rectangles.
+% \begin{macrocode}
+\AtEndOfPackage{\selectedMC}
+% \end{macrocode}
+% (2015/07/12) Move the inclusion of the color package prior to loading many of the other
+% required packages.
+% \begin{macrocode}
+\edef\eqe@tmpexp{\noexpand
+\RequirePackage{\eq@ColorPackage}}\eqe@tmpexp
+% \end{macrocode}
+% We require a minimal version for \textsf{xcolor}.
+%\changes{}{2015/07/21}{add \cs{let}\cs{CT@arc@}\cs{relax}}
+% \begin{macrocode}
+\@ifpackageloaded{xcolor}{\AtEndOfPackage{\let\CT@cell@color\relax
+ \let\CT@arc@\relax}%
+ \@ifpackagelater{xcolor}{2004/07/04}{}{\PackageError{eqexam}{%
+ *************************************************\MessageBreak
+ * Your Version of `xcolor.sty' is too old!\MessageBreak
+ * You need the version from 2004/07/04 or newer\MessageBreak
+ * or use: \string\usepackage[noxcolor]{eqexam}\MessageBreak
+ * or \string\documentclass[noxcolor]{article}\MessageBreak
+ *************************************************}{}%
+ }%
+}{}
+% \end{macrocode}
+% If \texttt{nocustomdesign} option is taken, we set the switch
+% \cmd{\eqcustomdesignfalse}.
+% \begin{macrocode}
+\if\eqe@nocustomdesign1\eqcustomdesignfalse\fi
+% \end{macrocode}
+% Define a \cs{immediate}\cs{write} helper macro.
+% \begin{macrocode}
+\long\def\eqe@IWO#1{\immediate\write#1}
+% \end{macrocode}
+% \paragraph*{Early definitions for the \texttt{fortextbook} option.}
+% \begin{macro}{\showAllAnsAtEnd}
+% If the user has chosen the \texttt{vspacewithsolns} option, we must turn
+% of all other solution options, namely \texttt{answerkey}. This command is
+% used internally.
+% \changes{v4.6b}{2016/10/02}{Include \string\cs{eqTopOfSolnPage} from \string\pkg{exerquiz}
+% to support copying question to solution page.}
+% \medskip\par\noindent
+% (2016/10/02) Include \cs{eqTopOfSolnPage} from \pkg{exerquiz}
+% to support copying question to solution page.
+% \begin{macrocode}
+\newcommand{\showAllAnsAtEnd}{%
+ \makeAnsEnvForSolnsAtEnd\eqTopOfSolnPage
+ \answerkeytrue\eq@proofingtrue
+ \eq@solutionsaftertrue\vspacewithsolnstrue
+ \displayworkareafalse\withsoldoctrue
+}
+% \end{macrocode}
+% \begin{macro}{\makeAnsEnvForSolnsAtEnd}
+% One user wanted to be able to use the \texttt{answers} environment
+% in the solutions section at the end of the document (when the
+% \texttt{vspacewithsolns} is used). Here it is. This definition
+% is added to the definition of \cmd{\showAllAnsAtEnd}.
+% \begin{macrocode}
+\newcommand{\makeAnsEnvForSolnsAtEnd}{%
+% \end{macrocode}
+% \changes{v3.1e}{2012/11/10}{Removed hard-wired \cs{proofingsymbol}}
+% \begin{macrocode}
+% \proofingsymbol{\ding{52}}%
+ \let\answers\answers@sq
+ \let\endanswers\endanswers@sq
+ \let\manswers\manswers@sq
+ \let\endmanswers\endmanswers@sq
+}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\solAtEndFormatting}[1]{\def\eqeAEFormatting{#1}}
+\let\eqeAEFormatting\@empty
+% \end{macrocode}
+% \cs{writeAllAnsAtEnd} writes the \cs{showAllAnsAtEnd} command to the solutions file.
+% \begin{macrocode}
+\def\writeAllAnsAtEnd{\ifsolutionsonly\else
+ \let\quiz@solns\ex@solns
+ \eqe@IWO\quiz@solns{\string\showAllAnsAtEnd}%
+ \ifx\eqeAEFormatting\@empty\else
+ \eqe@IWO\quiz@solns{\string\eqeAEFormatting}\fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setSolnMargins}
+% Sets the value of \cs{eqemargin} in the context of the solution file,
+% this command is redefined later.
+% \begin{macrocode}
+\newcommand{\setSolnMargins}[1]{\setlength\eqemargin{#1}}
+% \end{macrocode}
+% \end{macro}
+% (2011/05/08) In the new version of \textsf{eqexam}, the one that makes
+% the problems within an \texttt{exam} environment, into a list, the
+% solutions file that appears at the end of the document also needs to be
+% put into a list. Here, we define the command that writes the beginning of
+% the \texttt{eqequestions} environment to the beginning of the
+% \cs{jobname.sol} file. We hard-wire write \verb!\setSolnMargins{\the\eqemargin}!
+% to the solution file, but leave a back door open to write an alternate string.
+% (2014/03/20) \DescribeMacro{\altSetSolnMargins}\cmd{\altSetSolnMargins} allows you,
+% through its argument to pass an alternate string.
+% \begin{macrocode}
+\def\altSetSolnMargins#1{\def\alt@SetSolnMargins{#1}}
+\let\alt@SetSolnMargins\@empty
+\def\writeBeginEqeQuestions{%
+ \ifsolutionsonly\else
+ \let\quiz@solns\ex@solns
+ \ifx\alt@SetSolnMargins\@empty
+ \writeToSolnFile{\string\setSolnMargins{\the\eqemargin}}\else
+ \writeToSolnFile{\alt@SetSolnMargins}\fi
+ \writeToSolnFile{\string\noindent\string\begin{eqequestions}}%
+ \fi
+}
+% \end{macrocode}
+% (2011/05/08) We define the command that writes the end of the \texttt{eqequestions}
+% environment to the beginning of the \cs{jobname.sol} file.
+% \begin{macrocode}
+\newcommand{\setBtwnExamSkip}[1]{\gdef\btwnExamSkipAmt{#1}%
+ \def\btwnExamSkip{\ifdim#1=0pt\else
+ \vskip#1\relax\fi}}
+\setBtwnExamSkip{6pt}
+\def\writeEndEqeQuestions{%
+ \ifsolutionsonly\else
+ \let\quiz@solns\ex@solns
+ \eqe@IWO\quiz@solns{\string\end{eqequestions}^^J}%
+ \writeToSolnFile{\string\btwnExamSkip^^J}%
+ \fi
+}
+% \end{macrocode}
+% If \cs{ifvspacewithsolns} we set the switches need to simulate
+% \texttt{nosolutions}.
+% \begin{macrocode}
+\ifvspacewithsolns
+ \answerkeyfalse\eq@proofingfalse\eq@solutionsafterfalse
+ \eq@nolinkfalse\eq@nosolutionsfalse\displayworkareatrue
+\fi
+% \end{macrocode}
+%
+% \subsection{Save Switch Values}
+%
+% Now, save the current state of the switches defined above. When, and if,
+% the packages web, \textsf{exerquiz} and \textsf{eforms} are loaded, they will overwrite the
+% choices set by the author, so we save them.
+% \begin{macrocode}
+\let\savedeq@online\eq@online
+\let\savedifeq@solutionsafter\ifeq@solutionsafter
+\let\savedifeq@hidesolution\ifeq@hidesolution
+\let\savedifeq@globalshowsolutions\ifeq@globalshowsolutions
+\let\savedifeq@nosolutions\ifeq@nosolutions
+\let\savedifeq@proofing\ifeq@proofing
+\let\savedifeq@nolink\ifeq@nolink
+\let\savedifpreview\ifpreview
+\let\savedifeqforpaper\ifeqforpaper
+\let\ifnosolutions\ifeq@nosolutions
+% \end{macrocode}
+% \section{Required Packages}
+% The following are the required packages for \textsf{eqexam}.
+% \begin{macrocode}
+\RequirePackage{amstext,amssymb}
+% \end{macrocode}
+% \begin{macrocode}
+\@ifundefined{if@fleqn}{\let\fleqnOn\relax\let\fleqnOff\relax}
+ {\def\fleqnOn{\@fleqntrue}\def\fleqnOff{\@fleqnfalse}}
+% \end{macrocode}
+% Bring the \texttt{comment} package in early, before \texttt{verbatim}, these two
+% clash a bit.
+% \begin{macrocode}
+\RequirePackage{comment}
+% \end{macrocode}
+% The macro \cs{includeexersolutions} is defined in \textsf{eqexam.def}. We execute
+% the command \cs{include@solutions} before the web package is loaded. The \textsf{web} package
+% has a \cs{AtEndDocument} as well, and inserts a new page that we don't want.
+% \begin{macrocode}
+\AtEndDocument{\includeexersolutions}
+% \end{macrocode}
+% If user has specified one of the pdf options (pdf, links, online, email), we bring in
+% the web package.
+% \begin{macrocode}
+\@ifpackageloaded{web}{\let\load@web\eqe@YES}{%
+ \ifx\load@web\eqe@YES\ifnum\eqe@drivernum=5
+ \PackageInfo{eqexam}{You have not selected a driver %
+ for eqexam. Perhaps the \MessageBreak
+ driver is introduced through web.cfg%
+ }\fi\expandafter\RequirePackage\expandafter[\eqe@webOpts]{web}%
+ \edef\@pdfcreator{\@pdfcreator, The eqexam Package}\fi
+}
+% \end{macrocode}
+% If user has specified links, online or email, we bring in the exerquiz package.
+% \begin{macrocode}
+\@ifpackageloaded{exerquiz}{\let\load@exerquiz\eqe@YES}{%
+ \let\symbolchoice\@gobble
+ \ifx\load@exerquiz\eqe@YES\expandafter
+ \RequirePackage\expandafter[\eqe@eqOpts]{exerquiz}[2011/08/30]
+% \end{macrocode}
+% We input \textsf{exerquiz} with the \texttt{nodljs}, we don't need all the JavaScript
+% to process interactive shortquizzes or quizzes, but we do want the option of
+% adding in document JavaScript, so after we input \textsf{exerquiz}, we set the
+% switches to allow these features.
+% \begin{macrocode}
+ \let\importdljs\eqe@YES\let\execjs\eqe@YES
+ \fi
+}
+\@ifpackageloaded{eforms}{}{%
+% \end{macrocode}
+% If \textsf{eforms} is not loaded, we define \cs{symbolchoice}, which is
+% defined in \textsf{eforms} to gobble up its argument, we don't need it.
+% \begin{macrocode}
+ \let\symbolchoice\@gobble
+}
+% \end{macrocode}
+% Here is a fix to a problem I've been having previewing in \textsf{dviwindo}. I've traced
+% the problem down to \cs{@pdfviewparams}. Redefining \cs{@pdfviewparams} as follows.
+% \begin{macrocode}
+\def\eqDvipsone{dvipsone}
+\@ifpackageloaded{hyperref}
+ {\ifx\eqDriverName\eqDvipsone
+ \renewcommand\@pdfviewparams{ null null null}\fi
+ }{\let\textorpdfstring\@firstoftwo}
+% \end{macrocode}
+% Now that we have possibly input \textsf{web} or \textsf{exerquiz}, we need to restore the authors options.
+% \begin{macrocode}
+\let\eq@online\savedeq@online
+\let\ifeq@solutionsafter\savedifeq@solutionsafter
+\def\ifsolutionsafter{\ifeq@solutionsafter} % user interface
+\let\ifeq@hidesolution\savedifeq@hidesolution
+\let\ifeq@globalshowsolutions\savedifeq@globalshowsolutions
+\let\ifeq@nosolutions\savedifeq@nosolutions
+\let\ifeq@proofing\savedifeq@proofing
+\let\ifeq@nolink\savedifeq@nolink
+\let\ifpreview\savedifpreview
+\let\ifeqforpaper\savedifeqforpaper
+% \end{macrocode}
+% Other packages of interest.
+% \begin{macrocode}
+\RequirePackage{calc}
+\RequirePackage{pifont}
+\RequirePackage{array}
+% \end{macrocode}
+% Here, I input the \texttt{verbatim} package after the comment package.
+% \begin{macrocode}
+\RequirePackage{verbatim}
+% \end{macrocode}
+% When constructing paper tests, I often use a multi-column format for some of
+% the questions, so let's require this package
+% \begin{macrocode}
+\RequirePackage{multicol}
+\setlength\columnseprule{.4pt}
+\raggedcolumns\multicolsep=3pt
+\newcommand{\setmulticolprob}{%
+ \setlength{\linewidth}{\linewidth+\eqemargin}}
+% \end{macrocode}
+% For the \texttt{fortextbook} option, we require \textsf{eso-pic}.
+% \begin{macrocode}
+\edef\eqe@reqPack{\ifeqfortextbook\noexpand\RequirePackage{eso-pic}\else
+\relax\fi}
+\eqe@reqPack
+% \end{macrocode}
+% We've processed the options, I need to detect whether the document author
+% has not chosen any solutions options.
+% \begin{macrocode}
+\@ifundefined{ifsolutionsAtEnd}
+ {\newif\ifsolutionsAtEnd\solutionsAtEndtrue}{}
+\ifvspacewithsolns\solutionsAtEndtrue\fi
+\ifanswerkey\solutionsAtEndfalse\fi
+\ifeq@nosolutions\solutionsAtEndfalse\fi
+\ifeq@solutionsafter\solutionsAtEndfalse\fi
+% \end{macrocode}
+% \section{Page Layout}
+% (2011/05/08) The revised version of \texttt{eqexam} allows the document author
+% to more easily design the size of the page; the new version makes all content
+% inside the \texttt{exam} environment into a list, this gives us better control over the
+% margins and spacing.
+% \begin{macro}{\eqexammargin}
+% (2011/05/08) Use this command to set the margin for the \texttt{exam} environment.
+% \begin{macrocode}
+\@ifundefined{eqemargin}{\newlength{\eqemargin}}{}
+\providecommand{\prbDecPt}[1]{\def\eqe@decPointPrb{#1}}
+\def\eqe@decPointPrb{.}\def\eqe@dpsepPrb{\ }
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\def\eqe@prtsepPrb{\ }
+\providecommand{\prbNumPrtsep}[1]{\def\eqe@hspannerPrb{#1}}
+\def\eqe@hspannerPrb{\ }
+\newcommand{\eqexammargin}[2][\normalsize\normalfont\bfseries]{%
+ \settowidth{\eqemargin}{#1#2\eqe@decPointPrb\eqe@hspannerPrb}}
+% \end{macrocode}
+% (2011/05/08) The default margin for the \textsf{eqexam} environment, two digits and a space.
+% \begin{macrocode}
+\eqexammargin{00}
+% \end{macrocode}
+%\changes{v3.0s}{2012/01/01}{%
+% Moved a copy of \cs{eqe@spannerSoln} out of the \texttt{ftbsty} to the \texttt{package} section,
+% its needed here as well.}
+% \begin{macrocode}
+\def\eqe@hspannerSoln{\ } % space after prob number
+\providecommand{\solNumPrtsep}[1]{\def\eqe@hspannerSoln{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eqeSetExamPageParams}
+% (2011/05/08) The default spacing maximizes the amount of space on the page.
+% \begin{macrocode}
+\newcommand{\eqeSetExamPageParams}{%
+ \setlength{\headheight}{12pt}
+ \setlength{\topmargin}{-.5in}
+ \setlength{\headsep}{20pt}
+ \setlength{\oddsidemargin}{0pt}
+ \setlength{\evensidemargin}{0pt}
+ \setlength{\marginparsep}{11pt}
+ \setlength{\marginparwidth}{35pt}
+ \setlength{\footskip}{11pt}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eqExamPageLayout}
+% Set the basic parameters of this exam page package
+% \begin{macrocode}
+\newcommand{\eqExamPageLayout}{%
+ \setlength\textwidth\paperwidth
+ \addtolength{\textwidth}{-2in}
+ \addtolength{\textwidth}{-\oddsidemargin}
+ \setlength\textheight{\paperheight}
+ \addtolength\textheight{-2in}
+ \addtolength\textheight{-\headheight}
+ \addtolength\textheight{-\headsep}
+ \addtolength\textheight{-\topmargin}
+ \addtolength\textheight{-\footskip}
+}
+% \end{macrocode}
+% (2011/05/08) If \texttt{usecustomdesign} is used it is expected that
+% \cs{eqe\-Set\-Exam\-Page\-Params} and \cs{eqeSetExamPageParams} are redefined in he preamble,
+% otherwise, we set up the standard parameters; otherwise
+% \begin{macrocode}
+\ifeqcustomdesign\else
+\eqeSetExamPageParams
+\eqExamPageLayout
+\fi
+% \end{macrocode}
+% \end{macro}
+% A simple page layout scheme for this exam.
+% \begin{macrocode}
+\newcommand{\ps@eqExamheadings}
+{%
+ \renewcommand{\@oddhead}{%
+ {\normalfont\normalsize\ifnum\value{page}<2
+ \hfil\else\eqExamRunHead\fi}}%
+ \renewcommand{\@evenhead}{\@oddhead}
+ \renewcommand{\@oddfoot}{\settotalsbox\runExamFooter}
+ \renewcommand{\@evenfoot}{\@oddfoot}
+}
+\raggedbottom
+% \end{macrocode}
+% \section{Counters, Lengths and Tokens}
+% Some counters to keep track of things. \DescribeEnv{eqpointsofar}
+% \DescribeEnv{eqpointsthispage} The first two counters keep track, respectively,
+% of the total points so far up the current page, and the number of points
+% on the current page. \DescribeEnv{eq@numparts} The counter \texttt{eq@numparts}
+% holds the number of parts of the multi-part question.
+% \begin{macrocode}
+\newcounter{eqpointsofar}
+\newcounter{eqpointsthispage}
+\newcounter{eq@numparts}
+\newcounter{eq@count}
+\newtoks\partNames \partNames={}
+\newlength{\eq@tmplengthA}
+\newbox{\eq@pointbox}
+\newlength{\eq@pointboxtotalheight}
+% \end{macrocode}
+% Some scratch registers to do calc calculations.
+% \begin{macrocode}
+\newlength{\eqetmplengtha}
+\newlength{\eqetmplengthb}
+% \end{macrocode}
+% \section{Some Macros to Support the Options}
+% We make a few definitions to support various options.
+% \begin{macrocode}
+\def\PointsOnLeft{\def\@reportpoints{1}\let\marginpoints\eqleftmargin}
+\def\PointsOnRight{\def\@reportpoints{2}\relax
+ \let\marginpoints\eqrightmarginbox}
+\def\PointsOnBothSides{\def\@reportpoints{3}\relax
+ \let\marginpoints\eqbothmargins}
+\newif\ifeqe@nopoints \eqe@nopointsfalse
+\def\NoPoints{\if\isInExamEnv\eqe@NO
+ \eqe@nopointstrue\def\@reporttotals{0}\let\totalsbox=\hfil
+ \let\marginpoints\@empty\let\eq@nosummarytotals\eqe@YES\else
+ \PackageWarning{eqexam}{The \string\NoPoints\space ignored;
+ it needs to be executed\MessageBreak outside of an
+ exam environment}\fi}
+\def\TotalsOnLeft{\def\@reporttotals{1}\def\totalsbox{\totalsboxleft}}
+\def\TotalsOnRight{\def\@reporttotals{2}\def\totalsbox{\totalsboxright}}
+\def\noZeroTotals{\let\eqe@zeroTotalsAllowed\eqe@NO}
+\def\allowZeroTotals{\let\eqe@zeroTotalsAllowed\eqe@YES}
+\allowZeroTotals
+\def\NoTotals{\def\@reporttotals{0}\let\totalsbox=\hfil}
+\def\SummaryTotalsOn{\let\eq@nosummarytotals\eqe@NO}
+\def\SummaryTotalsOff{\let\eq@nosummarytotals\eqe@YES}
+\def\eoeTotalOff{\let\eq@parttotals\eqe@NO}
+\def\eoeTotalOn{\let\eq@parttotals\eqe@YES}
+\def\separationruleOn{\let\eqx@separationrule\eqe@YES}
+\def\separationruleOff{\let\eqx@separationrule\eqe@NO}
+\def\AllowFitItIn{\global\let\eq@fititin\eqfititin}
+\def\DoNotFitItIn{\global\let\eq@fititin\@gobble}
+% \end{macrocode}
+%\changes{v3.0p}{2011/09/22}{Added \cs{NoSolutions} to be executed in
+%preamble, needed with the fortextbook package.}
+% \begin{macrocode}
+\def\NoSolutions{\eq@nolinktrue\eq@nosolutionstrue
+ \displayworkareatrue}
+\@onlypreamble\NoSolutions
+% \end{macrocode}
+% \begin{macro}{\vspacewithkeyOn}
+% \begin{macro}{\vspacewithkeyOff}
+%\changes{v2.0k}{2011/04/29}{Added user interface to the switch
+%\cs{ifkeepdeclaredvspacing}, which is defined in \texttt{eqexam.def}/\textsf{exerquiz}.}
+% User interface to keeping the declare vspace, even when
+% the \texttt{answerkey} (or \texttt{solutionsafter}) option is taken. The switch
+% \cs{ifkeepdeclaredvspacing} is defined in \texttt{eqexam.def}/\textsf{exerquiz}.
+% \begin{macrocode}
+\def\vspacewithkeyOn{\keepdeclaredvspacingtrue}
+\def\vspacewithkeyOff{\keepdeclaredvspacingfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%\DescribeMacro{\displayPointsOn}\cmd{\displayPointsOn} displays the points, if not otherwise
+% overridden and the command \DescribeMacro{\displayPointsOff}\cmd{\displayPointsOff} turns off the
+% display of points. In either case, points are calculated.
+% \begin{macrocode}
+\newif\ifdispl@yPoints\displ@yPointstrue
+\newcommand{\displayPointsOn}{\displ@yPointstrue}
+\newcommand{\displayPointsOff}{\displ@yPointsfalse}
+\newif\ifl@stDispl@yPoints\l@stDispl@yPointsfalse
+% \end{macrocode}
+% \begin{macro}{\encloseProblemsWith}
+%\changes{v1.7b}{2007/21/07}
+%{%
+% Added \cs{encloseProblemsWith} to support the \texttt{solutionsonly} option
+%}
+% \cs{encloseProblemsWith} to support the \texttt{solutionsonly} option
+% \begin{macrocode}
+\def\encloseProblemsWith#1{%
+ \ifsolutionsonly\excludecomment{#1}\else
+ \includecomment{#1}\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \section{Colors}
+% \begin{macro}{\proofingsymbolColor}
+% \begin{macro}{\instructionsColor}
+% \begin{macro}{\eqCommentsColor}
+% \begin{macro}{\universityColor}
+% \begin{macro}{\titleColor}
+% \begin{macro}{\authorColor}
+% \begin{macro}{\subjectColor}
+% \begin{macro}{\linkcolor}
+% \begin{macro}{\nolinkcolor}
+% \begin{macro}{\fillinColor}
+% \begin{macro}{\forceNoColor}
+% \begin{macro}{\eqEndExamTotalColor}
+% Here we list commands for controlling colors. There are some other
+% colors defined in the stand alone code.
+% \changes{v1.6e}{2006/05/07}
+% {
+% Added easy user access to various colors, \cs{proofing\-symbol\-Color},
+% \cs{instructionsColor}, \cs{eqCommentsColor}, \cs{authorColor},
+% \cs{title\-Color}, \cs{universityColor} and \cs{subjectColor}
+% }
+% \begin{macrocode}
+\providecommand{\proofingsymbolColor}[1]{\def\@proofingsymbolColor{#1}}
+\proofingsymbolColor{red}
+\providecommand{\instructionsColor}[1]{\def\@instructionsColor{#1}}
+\instructionsColor{blue}
+\providecommand{\eqCommentsColor}[1]{\def\@eqCommentsColor{#1}}
+\eqCommentsColor{blue}
+\providecommand{\eqCommentsColorBody}[1]{\def\@eqCommentsColorBody{#1}}
+\eqCommentsColorBody{black}
+\providecommand{\universityColor}[1]{\def\webuniversity@color{#1}}
+\universityColor{blue}
+\providecommand{\titleColor}[1]{\def\webtitle@color{#1}}
+\titleColor{black}
+\providecommand{\authorColor}[1]{\def\webauthor@color{#1}}
+\authorColor{black}
+\providecommand{\subjectColor}[1]{\def\websubject@color{#1}}
+\subjectColor{blue}
+\providecommand{\linkcolor}[1]{\def\@linkcolor{#1}}
+\linkcolor{blue}
+\providecommand{\nolinkcolor}[1]{\def\@nolinkcolor{#1}}
+\nolinkcolor{black}
+\providecommand{\eqEndExamTotalColor}[1]{\def\endexamtotal@color{#1}}
+\eqEndExamTotalColor{black}
+\newcommand\fillinColor[1]{\def\eq@fillinColor{#1}}\fillinColor{red}
+\providecommand{\sectionColor}[1]{\def\web@sectionsColorOld{#1}
+ \def\aeb@sectioncolor{#1}}
+\sectionColor{blue}
+\newcommand{\forceNoColor}{%
+ \proofingsymbolColor{black}\instructionsColor{black}
+ \eqCommentsColor{black}\universityColor{black}
+ \titleColor{black}\authorColor{black}
+ \subjectColor{black}\linkcolor{black}
+ \nolinkcolor{black}\fillinColor{black}
+ \eqEndExamTotalColor{black}
+ \if\load@web\eqe@YES\sectionColor{black}\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \section{Version Control}
+% Here are some simple macros use to create two versions,
+% version A and version B, of the same test.
+% \begin{macro}{\examNum}
+% Convenience macro for holding the exam number. It sets the
+% value of \cs{nExam}.
+% \begin{macrocode}
+\def\examNum#1{\def\nExam{#1}}
+\examNum{1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Exam}
+% \begin{macro}{\sExam}
+% Convenience macros for titling the exam. Usage:
+%\begin{verbatim}
+%\VersionAtext{Test~\nExam--Version A}
+%\VersionBtext{Test~\nExam--Version B}
+%\shortVersionAtext{T\nExam A}
+%\shortVersionBtext{T\nExam B}
+%
+%\examNum{1}
+%\forVersion{c}
+%\subject[C3]{Calculus III}
+%\title[\sExam]{\Exam}
+%\author{Dr.\ D. P. Story}
+%\end{verbatim}
+% These next two definitions are overwritten by the two
+% commands \cs{longTitleText} and \cs{shortTitleText}.
+% \begin{macrocode}
+\def\Exam{\ifAB{\eq@VersionAtext}{\eq@VersionBtext}}
+\def\sExam{\ifAB{\eq@shortVersionAtext}{\eq@shortVersionBtext}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\VersionAtext}
+% \begin{macro}{\VersionBtext}
+% \begin{macro}{\shortVersionAtext}
+% \begin{macro}{\shortVersionBtext}
+% Convenience macros for entering the text for the title, long and short
+% for versions A and B.
+% \begin{macrocode}
+\def\VersionAtext#1{\def\eq@VersionAtext{#1}}
+\def\VersionBtext#1{\def\eq@VersionBtext{#1}}
+\def\shortVersionAtext#1{\def\eq@shortVersionAtext{#1}}
+\def\shortVersionBtext#1{\def\eq@shortVersionBtext{#1}}
+\VersionAtext{Exam~\nExam--Version A}
+\VersionBtext{Exam~\nExam--Version B}
+\shortVersionAtext{Exam~\nExam A}
+\shortVersionBtext{Exam~\nExam B}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% In this section we introduce a new set of commands that supersedes
+% the commands defined above. Those commands were limited to only
+% two versions. The ones below can handle up to $26$ versions.
+% \begin{macrocode}
+\newtoks\eqtemptokena
+\newtoks\eqtemptokenb
+% \end{macrocode}
+% \begin{macro}{\numVersions}
+% In the preamble, declare the number of versions for this document
+% using \cs{numVersions}, e.g., |\numVersions{3}|. This sets the value
+% of \cs{eq@nVersions}
+% \begin{macrocode}
+\def\numVersions#1{\ifnum#1>26\def\eq@nVersions{26}%
+ \PackageWarning{eqexam}{The value of \string\numVersions\space is
+ too large. \MessageBreak Choose a natural number less than 27}
+ \else\def\eq@nVersions{#1}\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\longTitleText}
+% \begin{macro}{\endlongTitleText}
+% \begin{macro}{\shortTitleText}
+% \begin{macro}{\endshortTitleText}
+% Next we state the long and short titles for our document,
+% one for each of our declare number of versions given earlier.
+% For example, we can use the value \cs{nExam} in out titles. Usage:
+%\begin{verbatim}
+% \longTitleText
+% {Test~\nExam--Version A}
+% {Test~\nExam--Version B}
+% {Test~\nExam--Make Up}
+% \endlongTitleText
+% \shortTitleText
+% {T\nExam A}
+% {T\nExam B}
+% {T\nExam MU}
+% \endshortTitleText
+%\end{verbatim}
+% I've added markers that delimit the end of the arguments. In this
+% way, the end of the list of titles can be detected, even though
+% the number of titles is not the same as what is declared by the
+% \cs{numVersions}.
+%
+% If there are more titles than what is declared, the rest are absorbed (gobbled).
+% If there are fewer titles than declared, a {\LaTeX} package error is generated,
+% and substitute titles are generated.
+% \changes{v1.9f}{2009/10/06}
+% {
+% Modified \cs{longTitleText}, \cs{shortTitleText} to have an optional
+% argument (A--Z;a--z). You can select a particular title from a list
+% of titles. If no optional argument is passed, then the title determined
+% by \cs{forVersion} is used.
+% }
+% Modified \cs{longTitleText} and \cs{shortTitleText} to have an optional
+% argument (A--Z;a--z). You can select a particular title from a list
+% of titles. If no optional argument is passed, then the title determined
+% by \cs{forVersion} is used.
+% \begin{macrocode}
+\newcommand{\longTitleText}[1][]{%
+ \ifeqglobalversion\let\eq@selectedVersion@save\eq@selectedVersion
+ \else\let\eq@selectedVersion@save\relax\fi
+ \uppercase{\def\eqe@localTextTitle{#1}}%
+ \ifx\eqe@localTextTitle\@empty\else
+ \expandafter\forVersion\expandafter{\eqe@localTextTitle}\fi
+ \eqe@contTitleText{\Exam}{\endlongTitleText}%
+}
+\def\endlongTitleText{l}
+\newcommand{\shortTitleText}[1][]{%
+ \ifeqglobalversion\let\eq@selectedVersion@save\eq@selectedVersion
+ \else\let\eq@selectedVersion@save\relax\fi
+ \uppercase{\def\eqe@localTextTitle{#1}}%
+ \ifx\eqe@localTextTitle\@empty\else
+ \expandafter\forVersion\expandafter{\eqe@localTextTitle}\fi
+ \eqe@contTitleText{\sExam}{\endshortTitleText}%
+}
+\def\endshortTitleText{s}
+% \end{macrocode}
+% Both title commands, above, call this macro which sets the environment
+% for \cs{@gatherTitleText}, which gathers the list of titles.
+% \begin{macrocode}
+\def\eqe@contTitleText#1#2{%
+ \setcounter{eq@count}{0}%
+ \eqtemptokena={}\let\endtitleMarker#2
+ \@gatherTitleText{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% This command gathers each title and places it as the argument of a
+% \cs{v<LETTTER>} command. These are accumulated in token registers
+% then saved in \cs{Exam} and \cs{sExam}.
+% \begin{macrocode}
+\def\@gatherTitleText#1#2{%
+ \def\eqe@argii{#2}
+ \if\endtitleMarker\eqe@argii
+% \end{macrocode}
+% Encountered the end marker. See if we have collected the
+% correct number of titles declared. If we have collected too
+% few, we note an warning in the log, and create titles.
+% \begin{macrocode}
+ \ifnum\value{eq@count}>\eq@nVersions\let\eqe@next\relax
+ \else\def\eqe@next{\eq@shortTitlesFix{#1}}\fi
+ \else
+ \stepcounter{eq@count}
+ \eqtemptokenb=\expandafter{#2}
+ \xdef#1{\the\eqtemptokena\expandafter\noexpand
+ \csname v\Alph{eq@count}\endcsname{\the\eqtemptokenb}}
+ \xdef\sExam{\the\eqtemptokena\expandafter\noexpand
+ \csname v\Alph{eq@count}\endcsname{\the\eqtemptokenb}}
+ \eqtemptokena=\expandafter{#1}
+ \ifnum\value{eq@count}<\eq@nVersions
+ \def\eqe@next{\@gatherTitleText{#1}}%
+ \else
+ \def\eqe@next{%
+ \if\endtitleMarker\endlongTitleText
+ \expandafter\eqe@absorbTokensLong
+ \else
+ \expandafter\eqe@absorbTokensShort
+ \fi
+ }%
+ \fi
+ \fi
+ \eqe@next
+}
+\long\def\eqe@absorbTokensLong#1\endlongTitleText{%
+ \protected@xdef\Exam{\Exam}\ifx\eq@selectedVersion@save\relax
+ \eqe@offVersion\else\expandafter\forVersion\expandafter
+ {\eq@selectedVersion@save}\fi}
+\long\def\eqe@absorbTokensShort#1\endshortTitleText{%
+ \protected@xdef\sExam{\sExam}\ifx\eq@selectedVersion@save\relax
+ \eqe@offVersion\else\expandafter\forVersion\expandafter
+ {\eq@selectedVersion@save}\fi}
+% \end{macrocode}
+% We have reached \cs{endtitleMarker}, but the count is still less than \cs{eq@nVersions},
+% so we'll warn the user, and create titles for user.
+% \begin{macrocode}
+\def\eq@shortTitlesFix#1{%
+ \PackageWarning{eqexam}{You have defined an insufficient number
+ of titles\MessageBreak for the number of versions declared in
+ \string\numVersions.\MessageBreak Please fix the problem}%
+ \stepcounter{eq@count}%
+ \if\endtitleMarker\endlongTitleText
+ \edef\eqe@tmp{\noexpand\@gatherTitleText{\noexpand#1}
+ {??---Title \# \the\value{eq@count}---??}%
+ \noexpand\endlongTitleText}
+ \else
+ \edef\eqe@tmp{\noexpand\@gatherTitleText{\noexpand#1}
+ {T\#\the\value{eq@count}??}\noexpand\endshortTitleText}
+ \fi
+ \addtocounter{eq@count}{-1}%
+ \eqe@tmp
+}
+% \end{macrocode}
+% Here, we define \cs{ifAB} so that document under the old system
+% still work properly, I hope. Usage of \cs{ifAB} at this point
+% is discouraged.
+% \begin{macrocode}
+\def\ifAB#1#2{\if\eq@selectedVersion A#1%
+ \else\if\eq@selectedVersion B#2\fi\fi}
+\def\eq@replaceToken#1{#1}
+% \end{macrocode}
+% \begin{macro}{\forVersion}
+% Here is the command that does all the work. It creates alternate
+% text macros for each of the versions declared using \cs{numVersions}.
+%
+% For example, assuming |\numVersions{3}| appeared earlier, the
+% command |\forVersion{a}| (or |\forVersion{A}|) defines $3$ text commands \cs{vA}, \cs{vB} and
+% \cs{vC}, each taking one argument, the text you want to display:
+%\begin{verbatim}
+% Name the \vA{place}\vB{date}\vC{year} of the signing of the Declaration
+% of independence.
+%\end{verbatim}
+% Since we said |forVersion{a}| only the \cs{vA} text
+% is displayed, the others are gobbled up, etc. But wait, the \cs{forVersion}
+% does more than that! It also creates a series of comment environments
+% |\begin{verA}/\end{verA}|, |\begin{verB}/\end{verB}|, |\begin{verC}/\end{verC}|, etc.,
+% where only the version for which this compile applies will be typeset,
+% the others are commented out.
+%\begin{verbatim}
+%\numVersions{3}
+%\forVersion{b}
+%...
+%\begin{document}
+%...
+% Solve the equation for $\vA{x}\vB{y}\vC{z}$:
+%\[
+%\begin{verA}
+% 2x + 4 = 7
+%\end{verA}
+%\begin{verB}
+% 5y + 2 = 4
+%\end{verB}
+%\begin{verC}
+% 3z - 2 = 2
+%\end{verC}
+%\]
+%\end{verbatim}
+% \changes{1.6b}{2006/04/03}
+% {
+% Changed the alphabet environments \texttt{A}, \texttt{B}, etc.\ due to a
+% conflict with \cs{S}, the control sequence for the \textsf{amsmath} package
+% for a section: \cs{S} expands to \S. Names changed to \texttt{verA}, \texttt{verB}, etc.
+% }
+% \changes{v1.6f}{2006/10/24}
+% {
+% Fixed a bug in the \cs{eqe@initializeMultiVersions} command, made sure that any
+% already defined comment environments are set to relax.
+% }
+% \begin{macrocode}
+\newif\ifeqglobalversion \eqglobalversionfalse
+\newif\ifeqlocalversion \eqlocalversionfalse
+\newif\if@templocalversion \@templocalversionfalse
+\def\eqe@initializeMultiVersions{%
+ \let\save@message\message\let\message\@gobble
+ \@tfor\eqe@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\let\csname v\eqe@tmp\endcsname\@gobble
+ \expandafter\excludecomment\expandafter{ver\eqe@tmp}%
+ \expandafter\let\csname Afterver\eqe@tmp Comment\endcsname\relax
+ }\let\message\save@message
+}
+\AtBeginDocument{\let\eqe@initializeMultiVersions\relax}
+% \end{macrocode}
+% (09/10/04) Trying to fix a bug in the case when the version selected is greater
+% then the number of versions available for a given problem; that is, when modular
+% arithmetic occurs (in \cs{selectVersion}).
+% \begin{macrocode}
+\let\eqe@@onVersion\@empty
+\def\eqe@onVersion{\g@addto@macro\eqe@@onVersion}
+\let\eqe@@offVersion\@empty
+\def\eqe@offVersion{\g@addto@macro\eqe@@offVersion}
+\let\eqe@@holdTemp\@empty
+\def\eqe@holdTemp{\g@addto@macro\eqe@@holdTemp}
+% \end{macrocode}
+% Two commands to turn on and off versions (the \cs{v<LETTER>} and the \texttt{ver<LETTER>}
+% environment).
+%
+% Throughout the definitions below, we use \cs{csarg}, a command that is defined in the
+% \textsf{comment} package.
+% \begin{macrocode}
+\def\eqe@showArg#1{#1}
+\def\eqe@turnOnComment#1{%
+% \csarg\let{v#1}\@empty
+ \csarg\let{v#1}\eqe@showArg
+ \edef\exp@temp{\noexpand\includecomment{ver#1}}\exp@temp
+}
+\def\eqe@turnOffComment#1{%
+ \csarg\let{v#1}\@gobble
+ \edef\exp@temp{\noexpand\excludecomment{ver#1}}\exp@temp
+ \csarg\let{Afterver#1Comment}\relax
+}
+% \end{macrocode}
+% Finally, the \cs{forVersion} command. \DescribeMacro{\selVersion}\cmd{\selVersion}
+% holds the version selected in upper-case.
+% \begin{macrocode}
+\def\forVersion#1%
+{%
+ \eqe@initializeMultiVersions
+ \let\eqe@@onVersion\@empty
+ \let\eqe@@offVersion\@empty
+ \global\eqglobalversiontrue
+ \setcounter{eq@count}{0}%
+ \uppercase{\edef\eq@selectedVersion{#1}}%
+ \edef\selVersion{\eq@selectedVersion}%
+ \@ifundefined{eq@nVersions}{\PackageInfo{eqexam}{%
+ \string\numVersions\space has not been declared, \MessageBreak
+ taking the number of versions to be 2.}\def\eq@nVersions{2}}{}%
+ \loop
+ \stepcounter{eq@count}%
+ \expandafter\if\Alph{eq@count}\eq@selectedVersion
+ \xdef\eq@nSelectedVersion{\the\value{eq@count}}%
+ \setcounter{eq@count}{27}\fi
+ \ifnum\value{eq@count}<26\repeat
+ \ifnum\eq@nSelectedVersion >\eq@nVersions
+ \PackageError{eqexam}
+ {The value of \string\forVersion
+ \space(\eq@selectedVersion)\MessageBreak
+ exceeds the value of \string\numVersions\space
+ (\eq@nVersions)}%
+ {Decrease the value of \string\forVersion.}%
+ \fi
+ \setcounter{eq@count}{0}%
+ \let\save@message\message\let\message\@gobble
+ \loop
+ \stepcounter{eq@count}%
+ \csarg\let{After\Alph{eq@count}Comment}\relax
+ \lowercase
+ {%
+ \if#1\alph{eq@count}%
+ \eqe@turnOnComment{\Alph{eq@count}}%
+% \end{macrocode}
+% (09/10/04) Save the commands for turning on the version with
+% \cs{eqe@onVersion}, and for turning it off with
+% \cs{eqe@offVeresion}.
+% \begin{macrocode}
+ \edef\temp@exp{\noexpand
+ \eqe@turnOnComment{\Alph{eq@count}}}%
+ \expandafter\eqe@onVersion\expandafter{\temp@exp}%
+ \edef\temp@exp{\noexpand
+ \eqe@turnOffComment{\Alph{eq@count}}}%
+ \expandafter\eqe@offVersion\expandafter{\temp@exp}%
+ \else
+ \eqe@turnOffComment{\Alph{eq@count}}%
+ \fi
+ }%
+ \ifnum\value{eq@count}<\eq@nVersions\repeat
+ \let\message\save@message
+}
+% \end{macrocode}
+% Let us assume version A initially, user with reset this in document.
+%\changes{1.6c}{2006/05/02}
+%{%
+% At the end of the package, set the initial value of \cs{select\-Version} to
+% \string\verb!*+\string\selectVersion{26}+ and set the initial value
+% of \cs{forVersion} to \string\verb!*+\string\forVersion{A}+.
+%}
+% \begin{macrocode}
+\AtEndOfPackage{\numVersions{26}\forVersion{A}%
+ \eq@renditionOptions}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\selectVersion}
+% When an exam has questions in which the number of variations are not all the same,
+% then you can locally change the version between problems.
+% If the first argument is empty, the first variation is chosen.
+% The syntax is
+%\begin{verbatim}
+%\selectVersion{2}{3}
+%\end{verbatim}
+%This command says that the next problem has 3 variations, and here we select the second one.
+%\changes{1.6a}{2006/01/22}
+% {%
+% added \cs{selectVersion} command, also the command was fixed \cs{forVersion} so that it can be changed
+% within the document, added switches to control new selection.
+% }
+%\changes{v3.7}{2015/02/11}{Worked on the logic}
+% \begin{macrocode}
+\def\selectVersion#1#2{% #1 \le #2
+ \xdef\nLocalSelection{#1}\xdef\nLocalVersions{#2}%
+% \end{macrocode}
+% If obey local version is in effect and the local selection is not empty,
+% no modular arithmetic is needed in the first loop below
+% of \cs{nLocalSelection}.
+% \begin{macrocode}
+ \let\needsModArith\eqe@YES
+ \ifeqobeylocalversion\ifx\nLocalSelection\@empty\else
+ \let\needsModArith\eqe@NO\fi\fi
+% \end{macrocode}
+% When the solutions appear at the end of the document, the version may not match
+% the version for the question. We need to use a private hook defined in
+% \textsf{exerquiz} (and \texttt{eqexam.def}) to reproduce the same settings going into
+% each solution at the end. So, we write the \cs{selectVersion} to the solution
+% file.
+% \begin{macrocode}
+ \edef\exer@solnheadhook{%
+ \string\selectVersion{#1}{#2}}%
+% \end{macrocode}
+% Turn off messaging.
+% \begin{macrocode}
+ \let\save@message\message\let\message\@gobble
+% \end{macrocode}
+% Reset the selected version, the one selected in the preamble. A previous problem
+% may have changed the version due to modular arithmetic.
+% \begin{macrocode}
+ \eqe@@onVersion
+ \ifx\eqe@@holdTemp\@empty\else
+% \end{macrocode}
+% If \cs{eqe@holdTemp} is non-empty, this means that modular
+% arithmetic was performed on the previous problem. We need to turn
+% on the original choice, and turn off the temporary choice, then
+% clear the command \cs{eqe@@holdTemp}.
+% \begin{macrocode}
+ \eqe@@onVersion\eqe@@holdTemp
+ \let\eqe@@holdTemp\@empty
+ \fi
+% \end{macrocode}
+% If \cs{eqglobalversion} is \texttt{true}, then a \cs{forVersion}
+% has been executed. If the number of versions declared by
+% \cs{numVersions} is greater than the number of local versions for
+% this problem, then we perform modular arithmetic to get an
+% appropriate alternative. It may be necessarily to temporarily put
+% \cs{eqobeylocalversion} to true to accomplish, but we use change it
+% back at the end.
+% \begin{macrocode}
+\ifx\needsModArith\eqe@YES
+ \ifeqglobalversion\ifnum\eq@nSelectedVersion>\nLocalVersions
+% \end{macrocode}
+% If we perform modular arithmetic, turn off original choice.
+% \begin{macrocode}
+ \eqe@@offVersion
+% \end{macrocode}
+% Now perform mod arithmetic
+% \begin{macrocode}
+ {\count0=\eq@nSelectedVersion \count2=\count0
+ \advance\count0by-1 \divide\count0by\nLocalVersions
+ \multiply\count0by\nLocalVersions %\count2=\eq@nSelectedVersion
+ \advance\count2by-\count0
+ \xdef\nLocalSelection{\the\count2 }%
+ \ifeqobeylocalversion\else
+ \global\@templocalversiontrue
+ \global\eqobeylocalversiontrue\fi}%
+ \global\let\eqe@@holdTemp\@empty
+ \fi\fi
+\fi
+ \ifeqobeylocalversion
+ \global\eqlocalversiontrue
+ \setcounter{eq@count}{0}%
+% \end{macrocode}
+% If local selection is empty, use the version requested by \cs{forVersion},
+% modular arithmetic may have to be performed.
+% arithmetic to resolve the matter
+% \begin{macrocode}
+ \ifx\nLocalSelection\@empty
+ \def\nLocalSelection{\eq@nSelectedVersion}%
+ \fi
+% \end{macrocode}
+% If local selection exceeds number of local versions, use modular
+% arithmetic to resolve the matter
+% \begin{macrocode}
+ \ifnum\nLocalSelection>\nLocalVersions
+ {\count0=\nLocalSelection
+ \count2=\count0
+ \advance\count0by-1 \divide\count0by\nLocalVersions
+ \multiply\count0by\nLocalVersions
+ \advance\count2by-\count0
+ \xdef\nLocalSelection{\the\count2 }}%
+ \fi
+ \let\save@message\message\let\message\@gobble
+ \loop
+ \stepcounter{eq@count}%
+ \csarg\let{Afterver\Alph{eq@count}Comment}\relax
+ \lowercase
+ {%
+ \ifnum\value{eq@count}=\nLocalSelection
+ \eqe@turnOnComment{\Alph{eq@count}}%
+ \edef\temp@exp{\noexpand
+ \eqe@turnOffComment{\Alph{eq@count}}}%
+ \expandafter\eqe@holdTemp\expandafter{\temp@exp}%
+ \else
+ \eqe@turnOffComment{\Alph{eq@count}}%
+ \fi
+ }%
+ \ifnum\value{eq@count}<\nLocalVersions\repeat
+ \let\message\save@message
+ \fi
+ \if@templocalversion\global\eqobeylocalversionfalse\fi
+% \end{macrocode}
+% added 09/10/03 reset back to default
+% \begin{macrocode}
+ \@templocalversionfalse
+ \let\message\save@message
+}
+% \end{macrocode}
+% \end{macro}
+% \section{Title Definitions from Web}
+% \begin{macro}{\title}
+% \begin{macro}{\subject}
+% \begin{macro}{\author}
+% \begin{macro}{\email}
+% \begin{macro}{\keywords}
+% \begin{macro}{\university}
+% Make Title Definitions taken from the \texttt{Web} package. This is
+% to maintain compatibility with \texttt{Web}.
+% \begin{macrocode}
+\@ifpackageloaded{web}{}{%
+ \@ifpackageloaded{hyperref}{}{\let\texorpdfstring\@firstoftwo}%
+ \let\web@save@title\title
+ \def\title{\@ifnextchar[{\@web@title}{\@web@title[]}}
+ \def\@web@title[#1]#2{\gdef\webtitle{#2}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdftitle={#2}}}%
+ \def\webArg{#1}\ifx\webArg\@empty\gdef\shortwebtitle{#2}\else
+ \gdef\shortwebtitle{#1}\fi\web@save@title{#2}}
+ \let\web@saved@author\author
+ \def\author#1{\gdef\webauthor{#1}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfauthor={#1}}}%
+ \web@saved@author{#1}}
+ \def\subject{\@ifnextchar[{\@subject}{\@subject[]}}
+ \def\@subject[#1]#2{\def\webArg{#1}%
+ \ifx\webArg\@empty\gdef\shortwebsubject{#2}\else
+ \gdef\shortwebsubject{#1}\fi\gdef\websubject{#2}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfsubject={#2}}}}
+ \def\email#1{\gdef\webemail{#1}}
+ \def\keywords#1{\gdef\webkeywords{#1}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfkeywords={#1}}}}
+ \def\university#1{\gdef\webuniversity{#1}}
+ \def\copyrightyears#1{\gdef\webcopyrightyears{#1}}
+ \def\version#1{\gdef\web@version@value{#1}%
+ \edef\webversion{\ifx\web@version@value\@empty\else
+ \noexpand\web@versionlabel\noexpand\
+ \noexpand\web@version@value\fi}%
+ }
+ \let\web@version@value\@empty
+ \def\versionLabel#1{\def\web@versionlabel{#1}}
+ \versionLabel{Version}
+ \def\web@toc{Table of Contents}
+ \def\web@continued{cont.}
+% set some defaults
+ \title{}\author{}\email{}\subject{}\keywords{}\university{}
+ \providecommand{\optionalPageMatter}[2][]{%
+ \def\optionalpagematter{#2}}
+ \def\optionalpagematter{}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\date}
+% {\LaTeX} (\TeX) defines a \cs{date} command that is also used by \textsf{eqexam}.
+% \begin{macrocode}
+\def\duedate#1{\def\theduedate{#1}}
+\duedate{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\duedate}
+% In addition to these, we also define a \cs{duedate} macro, may be useful for
+% writing assignments with a due date.
+% \begin{macrocode}
+\def\duedate#1{\def\theduedate{#1}}
+\duedate{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\thisterm}
+% The command \cs{thisterm} can be used in the \cs{date} field to indicate the term
+% of this test, for example, \verb!\date{\thisterm, \the\year}! This command may
+% be redefined to conform to your own academic terms.
+% \begin{macrocode}
+\newcommand\thisterm{%
+% if prior to June (Jan--May)
+ \ifnum\month<6Spring\else
+% if prior to August (June-July)
+ \ifnum\month<8Summer\else
+% August or later; if Sept--Dec
+ \ifnum\month>8Fall\else
+% Month of August; if after 25th
+ \ifnum\day>25Fall\else
+% if it's 25th or earlier in month of August
+ Summer\fi\fi\fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \section{Identification Information}
+% We define a series of commands in support of building an exam: Lines to identify
+% the student and his/her student id (SID), the instructors email address, the name of the
+% test and the course.
+%\par\medskip
+%\noindent\DescribeMacro{\eqExamName}\DescribeMacro{\examNameLabel} provides a line for the student to enter his/her name into the
+% exam. The command \cs{examNameLabel} can be used to define the name label, the default
+% is \texttt{Name:}
+%
+% Will insert a text box as well if the \texttt{option} is taken in addition
+% to \texttt{nosolutions} and with \texttt{solutionsafter} not taken.
+% This macro defines \cs{eq@ExamName}, which actually contains the code.
+% The first (optional) parameter is passed to \cs{insTxtFieldIdInfo}, and can be
+% used to change the appearance of the text field created; the second required parameter
+% is the width of the field.
+% \begin{macrocode}
+\newcommand{\examAnsKeyLabel}[1]{%
+ \def\@examAnsKeyLabel{\ifanswerkey\space #1\fi}}
+\examAnsKeyLabel{Answer Key}
+\newcommand\examNameLabel[1]{\gdef\@examNameLabel{#1\@examAnsKeyLabel}}
+\examNameLabel{Name:}
+\newcommand{\idinfoHighlight}[1]{\def\eqe@idinfohl{#1}}
+\idinfoHighlight{\underbar}
+\newcommand\eqExamName[2][]{%
+ \def\eqExamName@argi{#1}\def\eqExamName@argii{#2}}
+\def\eq@ExamName{\bgroup
+ \settowidth\eq@tmplengthA{\@examNameLabel\ }%
+ \@tempdima=\eqExamName@argii\relax
+ \advance\@tempdima by-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\eqExamName@argii][l]{\@examNameLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqExamName@argi]%
+ {\@tempdima}{IdInfo.Name}\egroup}
+% \end{macrocode}
+% Here we set the field to be a required field with width of $2.25$ inches
+% \begin{macrocode}
+\eqExamName[\Ff\FfRequired]{2.25in}
+% \end{macrocode}
+% \DescribeMacro{\eqSID} provides a line for the student to enter his/her ID number (SID).
+%
+% Will insert a text box as well if the \texttt{option} is taken in addition
+% to \texttt{nosolutions} and with \texttt{solutionsafter} not taken.
+% The first (optional) parameter is passed to \cs{insTxtFieldIdInfo}, and can be
+% used to change the appearance of the text field created; the second required parameter
+% is the width of the field.
+% \begin{macrocode}
+\newcommand\examSIDLabel[1]{\gdef\@examSIDLabel{#1}}
+\examSIDLabel{SID:}
+\newcommand\eqSID[2][]{\def\eqSID@argi{#1}\def\eqSID@argii{#2}}
+\def\eq@SID{\bgroup\settowidth\eq@tmplengthA{\@examSIDLabel\ }%
+ \@tempdima=\eqSID@argii\relax\advance\@tempdima by-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\eqSID@argii][l]{\@examSIDLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqSID@argi]%
+ {\@tempdima}{IdInfo.SID}\egroup}
+% \end{macrocode}
+% Here we set the field to be a required field with width of $2.25$ inches
+% \begin{macrocode}
+\eqSID[\Ff\FfRequired]{2.25in}
+% \end{macrocode}
+% \DescribeMacro{\eqEmail} provides a line for the student
+% to enter his/her email address. Useful for documents submitted by email, the
+% instructor can reply.
+%
+% Will insert a text box as well if the \texttt{option} is taken in addition
+% to \texttt{nosolutions} and with \texttt{solutionsafter} not taken.
+% The first (optional) parameter is passed to \cs{insTxtFieldIdInfo}, and can be
+% used to change the appearance of the text field created; the second required parameter
+% is the width of the field.
+% \begin{macrocode}
+\newcommand\examEmailLabel[1]{\gdef\@examEmailLabel{#1}}
+\examEmailLabel{Email:}
+\newcommand\eqEmail[2][]{%
+ \def\eqExam@argi{#1}\def\eqEmail@argii{#2}}
+\gdef\eq@Email{\bgroup\settowidth\eq@tmplengthA{\@examEmailLabel\ }%
+ \@tempdima=\eqEmail@argii\relax\advance\@tempdima by-\eq@tmplengthA
+ \underbar{\makebox[\eqEmail@argii][l]{\@examEmailLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqEmail@argi]%
+ {\@tempdima}{IdInfo.email}\egroup}
+% \end{macrocode}
+% Here we set the field to be a field with width of $2.25$ inches. (Not set to be a required field.)
+% \begin{macrocode}
+\eqEmail{2.25in}
+% \end{macrocode}
+% \DescribeMacro{\insTxtFieldIdInfo} The above macros (\cs{eqExamName}, \cs{eqSID} and \cs{eqEmail})
+% all call this macro, which inserts a Acroforms text field if the \texttt{option} is taken in addition
+% to \texttt{nosolutions} and with \texttt{solutionsafter} not taken.
+%
+% The first (optional) parameter is used to change the appearance of the text field.
+% The second parameter is the width of the field, and the third is the field name.
+% \begin{macrocode}
+\def\insTxtFieldIdInfo[#1]#2#3{%
+ \@ifundefined{@quiz}{}{\if\eq@online\eqe@YES
+ \ifeq@nosolutions\ifeq@solutionsafter\else
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}#1]{#3}{#2}{11bp}}}%
+ \fi\fi\fi
+ }%
+}
+% \end{macrocode}
+% \DescribeMacro{\SubmitInfo} is required when the \texttt{email} option is taken,
+% and should appear in the preamble. The first argument is the URL to the \textsf{eqAttach.asp}
+% code on the server, and the second is the email of the instructor is to receive the results.
+% (Multiple recipients can be specified by separating each with a comma.)
+% \begin{macrocode}
+\def\SubmitInfo#1#2{%
+ \def\EqExam@SubmitURL{#1}\def\@EmailInstr{#2}%
+}
+% \end{macrocode}
+% \DescribeMacro{\EmailCourseName} is used to specify the course name of the course. The default
+% value for this is \cs{websubject}, obtained from the \cs{subject} macro used in the preamble; however,
+% if you want a different name in the email, perhaps with more information included, you can redefine
+% the value using this macro.
+% \begin{macrocode}
+\def\EmailCourseName#1{\def\@EmailCourseName{#1}}
+% \end{macrocode}
+% Here's the default value.
+% \begin{macrocode}
+\EmailCourseName{\websubject}
+% \end{macrocode}
+% \DescribeMacro{\EmailExamName} is used to specify the exam name of the course. The default
+% value for this is \cs{webtitle}, obtained from the \cs{title} macro used in the preamble; however,
+% if you want a different name in the email, perhaps with more information included, you can redefine
+% the value using this macro.
+% (Multiple recipients can be specified by separating each with a comma.)
+% \begin{macrocode}
+\def\EmailExamName#1{\def\@EmailExamName{#1}}
+% \end{macrocode}
+% Here's the default value.
+% \begin{macrocode}
+\EmailExamName{\webtitle}
+% \end{macrocode}
+% \DescribeMacro{\EmailSubject} The document author mail want a custom subject in the email, instead
+% of the standard one. By using this macro, he can design his own email subject.
+% \begin{macrocode}
+\def\EmailSubject#1{\def\@EmailSubject{#1}}
+% \end{macrocode}
+% Here's the default value, which generates no custom subject line.
+% \begin{macrocode}
+\EmailSubject{}
+% \end{macrocode}
+% In this case \textsf{eqAttach.asp} inserts the standard one.
+%\begin{verbatim}
+%Exam Results: \webtitle of \websubject
+%\end{verbatim}
+% The email would read like ``\texttt{Exam Results:~Test 1 of Calculus I}'', for example.
+%
+% \DescribeMacro{\ServerRetnMsg} Unless submitted in \texttt{silent} mode, the \textsf{eqAttach.asp}
+% returns a message acknowledging the receipt of the data. \cs{ServerRetnMsg} is used to customize
+% this message.
+% \begin{macrocode}
+\def\ServerRetnMsg#1{\def\@ServerRetnMsg{#1}}
+% \end{macrocode}
+% Here's the default value, which generates no custom return message
+% \begin{macrocode}
+\ServerRetnMsg{}
+% \end{macrocode}
+% \noindent\DescribeMacro{\SubmitButtonLabel} is the label that appears on the submit button.
+% \begin{macrocode}
+\def\SubmitButtonLabel#1{\def\@SubmitButtonLabel{#1}}
+% \end{macrocode}
+% Here's the default value.
+% \begin{macrocode}
+\SubmitButtonLabel{Submit}
+% \end{macrocode}
+% \DescribeMacro{\SubmitButton} is the macro that provides the submit button
+% when the \texttt{email} option is taken. It appears automatically at the top of
+% the first page of the exam, and appears only if \texttt{nosolutions} has has been
+% taken, and \texttt{solutionsafter} has not been taken.
+% \begin{macrocode}
+\let\priorSubmitJS\@gobble
+\let\postSubmitJS\@empty
+\def\SubmitButton
+{%
+ \ifx\use@email\eqe@YES\ifeq@nosolutions\ifeq@solutionsafter\else
+ \makebox[0pt][l]{\pushButton
+ [\CA{\@SubmitButtonLabel}\A{\JS{%
+ var _eqEok2Submit = true;\r
+ var aSubmitFields = new Array("eqexam", "IdInfo");\r
+ \priorSubmitJS\r
+ if(_eqEok2Submit) this.submitForm("\EqExam@SubmitURL",
+ true, false, aSubmitFields);\r
+ \postSubmitJS
+ }}]{Submit}{1.5in}{16bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailInstr}
+ \V{\@EmailInstr}]{IdInfo.mailTo}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailCourseName}
+ \V{\@EmailCourseName}]{IdInfo.courseName}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailExamName}
+ \V{\@EmailExamName}]{IdInfo.examName}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailSubject}
+ \V{\@EmailSubject}]{IdInfo.subject}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@ServerRetnMsg}
+ \V{\@ServerRetnMsg}]{IdInfo.retnmsg}{11bp}{11bp}}%
+ \fi\fi\fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\thequizno{\if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
+\def\linkContentFormat{%
+ \if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
+\def\linkContentWrapper{(\hfil\linkContentFormat\hfil)}%
+\def\Ans@r@l@Defaults
+{%
+ \BC{}\S{S}\W{1}\Ff{\FfNoToggleToOff}
+ \textSize{12}\textColor{0 g}
+}
+% \end{macrocode}
+% (2014/03/12) Added \verb!\eq@hspanner\ignorespaces!, in the next two commands. Fixes
+% problems with spacing following the choice box.
+% \begin{macrocode}
+\newcommand{\optsRadioBtnf}[1]{\def\eqe@optsRadiof{#1}}
+\newcommand{\optsRadioBtnl}[1]{\def\eqe@optsRadiol{#1}}
+\let\eqe@optsRadiof\@empty\let\eqe@optsRadiol\@empty
+\def\eqExam@Ans@sq@l{\leavevmode
+ \if\eq@listType1\stepcounter{quizno}\else\ifwithsoldoc
+ \stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@l}%
+ \sbox{\eq@tmpbox}{\eq@l@l}\eq@tmpdima=\wd\eq@tmpbox
+ \def\link@@Content{\linkContentWrapper}%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.part\thepartno%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi%
+ \fi
+ }%
+ \if\eq@online\eqe@YES\relax
+ \makebox[0pt][l]{%
+ \radio@@Button{\presets{\eqe@optsRadiol}}{\fieldName}%
+ {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@r@l@Defaults\every@RadioButton\every@qRadioButton}}%
+ \else
+ \edef\@linkcolor{\@nolinkcolor}%
+ \fi
+ \ifeq@nosolutions\edef\@linkcolor{\@nolinkcolor}\fi
+ \textcolor{\@linkcolor}{\makebox[\eq@tmpdima]{\link@@Content}}%
+ \Ans@proofing{\eq@tmpdima}%
+ \eq@hspanner\ignorespaces
+}
+\def\eqExam@Ans@sq@f{\if\eq@listType1\stepcounter{quizno}\else
+ \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \if\eq@online\eqe@NO\previewtrue
+ \insertGrayLetters
+ \Ans@sq@f@driver
+ \else
+ \ifanswerkey\previewtrue
+ \Ans@sq@f@driver
+ \else
+% \ifallowcircmc
+% \ifx\Bbox\eqe@BboxCirc\symbolchoice{circle}\fi\fi
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi%
+ \fi
+ }\insertGrayLetters
+ \radio@@Button{\presets{\eqe@optsRadiof}}%
+ {\fieldName}{\RadioFieldSize}%
+ {\RadioFieldSize}{\Ans@choice\alph{quizno}}{\eq@protect\A}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
+ \every@sqRadioButton\insert@circlesymbol}%
+ \fi
+ \fi
+ \Ans@proofing{\RadioFieldSize}%
+ \eq@hspanner\ignorespaces
+}
+\newcommand{\optsCkBxf}[1]{\def\eqe@optscbf{#1}}
+\newcommand{\optsCkBxl}[1]{\def\eqe@optscbl{#1}}
+\let\eqe@optscbl\@empty\let\eqe@optscbf\@empty
+\def\eqExam@Ans@ck@sq@l{\leavevmode
+ \if\eq@listType1\stepcounter{quizno}\else
+ \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@l}%
+ \sbox{\eq@tmpbox}{\eq@l@l}\eq@tmpdima=\wd\eq@tmpbox
+ \def\link@@Content{\linkContentWrapper}%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno.\alph{quizno}%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.\alph{quizno}%
+ \fi
+ }%
+ \if\eq@online\eqe@YES\relax
+ \makebox[0pt][l]{\check@@Box{\presets{\eqe@optscbl}}{\fieldName}%
+ {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@r@l@Defaults\every@RadioButton\every@qRadioButton}}%
+ \else
+ \edef\@linkcolor{\@nolinkcolor}%
+ \fi
+ \ifeq@nosolutions\def\@linkcolor{\@nolinkcolor}\fi
+ \textcolor{\@linkcolor}{\makebox[\eq@tmpdima]{\link@@Content}}%
+ \Ans@proofing{\eq@tmpdima}%
+ \eq@hspanner\ignorespaces
+}
+\def\eqExam@Ans@ck@sq@f{\if\eq@listType1\stepcounter{quizno}\else
+ \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \if\eq@online\eqe@NO\previewtrue
+ \insertGrayLetters
+ \Ans@sq@f@driver
+ \else
+ \ifanswerkey\previewtrue
+ \Ans@sq@f@driver
+ \else
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno.\alph{quizno}%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.\alph{quizno}%
+ \fi
+ }\insertGrayLetters
+ \mbox{\check@@Box{\presets{\eqe@optscbf}}{\fieldName}%
+ {\RadioFieldSize}{\RadioFieldSize}%
+ {\Ans@choice\alph{quizno}}{\eq@protect\A}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
+ \every@sqRadioButton}}%
+ \fi
+ \fi
+ \Ans@proofing{\RadioFieldSize}%
+ \eq@hspanner\ignorespaces
+}
+% \end{macrocode}
+% \DescribeMacro{\optsMlTextField} is used to pass options to the multiline
+% text field.
+% \begin{macrocode}
+\def\optsMlTextField#1{\def\eqe@optsmltf{#1}}
+\let\eqe@optsmltf\@empty
+\def\eqExamPriorVspace#1{%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.%
+ \theeqquestionnoi.part\thepartno.solution%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.solution%
+ \fi
+ }%
+ \nobreak\noindent\textField[\BC{}\presets{\eqe@optsmltf}
+ \Ff\FfMultiline]{\fieldName}{\linewidth}{#1}\@gobble
+}
+% \end{macrocode}
+%
+% Test to see if \texttt{exerquiz} is loaded. If not, we input
+% the `stand alone', \texttt{eqalone.def}, followed by \texttt{eqexam.def}. The latter
+% definition file is maintained in \texttt{exerquiz.dtx} under the \texttt{eqexam} option.
+%
+% \begin{macrocode}
+\@ifpackageloaded{exerquiz}{%
+ \let\Ans@sq@l\eqExam@Ans@sq@l
+ \let\Ans@sq@f\eqExam@Ans@sq@f
+ \let\Ans@ck@sq@l\eqExam@Ans@ck@sq@l
+ \let\Ans@ck@sq@f\eqExam@Ans@ck@sq@f
+ \def\eqexheader@wrapper{\makebox[0pt][r]{%
+ \hypertarget{qex.\the@exno}{\eqexheader}}}%
+ \if\eq@online\eqe@YES\relax
+ \newcounter{@cntfillin}%
+ \let\eqPriorVspace\eqExamPriorVspace
+ \fi
+}%
+{%
+ \input{eqalone.def}
+ \input{eqexam.def}
+% \end{macrocode}
+% \changes{v4.9}{2017/03/16}{Updated \string\pkg{eqexam} to reflect changes in \string\texttt{eqexam.def}.}
+% \begin{macrocode}
+ \@ifl@ter{def}{eqexam}{\eqexamdefReq}{}
+ {\PackageWarningNoLine{eqexam}
+ {This version of eqexam requires eqexam.def\MessageBreak
+ dated \eqexamdefReq\space or later}}
+ \def\eqexheader@wrapper{\makebox[0pt][r]{\eqexheader}}
+}
+% \end{macrocode}
+% We wrote \verb!\begin{eqequestions}! to the top of the solutions file (\cs{jobname.sol}.
+% \begin{macrocode}
+%\writeBeginEqeQuestions
+% \end{macrocode}
+% If the \texttt{vspacewithsolns} is in effect, we write solutions to the end of the document.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifvspacewithsolns\writeAllAnsAtEnd\else
+ \ifeqfortextbook\writeAllAnsAtEnd\fi\fi
+}
+% \end{macrocode}
+% We execute \cs{vspacewithkeyOff}, which sets \cs{ifkeepdeclaredvspacing} to false,
+% the default behavior of \textsf{eqexam} before the new feature.
+% \begin{macrocode}
+\vspacewithkeyOff
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% \section{Stand alone Code}
+%
+% \begin{macrocode}
+%<*standalone>
+% \end{macrocode}
+% Now we begin the listing of the stand alone code. This code is necessary if
+% \textsf{exerquiz} has not been loaded, which is the case if there is no \textsf{PDF} options
+% or if the \texttt{pdf} option is taken.
+%
+% Many of the following definitions are given in \texttt{eforms}, which was recently separated
+% from \texttt{exerquiz} and is now maintained as a separate package.
+% \begin{macrocode}
+\ProvidesFile{eqalone.def}
+ [2012/25/01 v3.0t Minimal code used by eqexam (dps)]
+\@ifundefined{eq@tmpbox}{\newsavebox{\eq@tmpbox}}{}% defined in eforms
+\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{} % defined in eforms
+\def\RadioFieldSize{11bp}
+% \end{macrocode}
+% \begin{macrocode}
+\newdimen\eqcenterWidget
+% \end{macrocode}
+% This macro is used to vertically center the response box on the line. Seems to
+% work well.
+% \begin{macrocode}
+\def\centerWidget
+#1{%
+ \eqcenterWidget=#1
+ \eqcenterWidget=.5\eqcenterWidget
+ \advance\eqcenterWidget by-4bp
+}
+% \end{macrocode}
+% \DescribeMacro{\eqe@Bbox}When the \texttt{preview} option has been used, draw a frame box
+% around the bounding rectangle.
+% \changes{}{2015/06/04}{Added \cs{previewColor}}
+% \DescribeMacro\previewColor\cmd{\previewColor} adds some color to the preview (bounding boxes). The
+% default is \texttt{black}.
+% \begin{macrocode}
+\providecommand\previewColor{black}
+\def\eqe@BboxRect#1#2{\hbox{\color{\previewColor}\vbox{\hrule width #1
+ \hbox to#1{\vrule height#2\hfill\vrule height#2}\vfill\hrule}}}
+\def\useRectForMC{\let\Bbox\eqe@BboxRect}
+\def\selectedMC{\useRectForMC}
+% \end{macrocode}
+% \DescribeMacro{\Rect} is used internally to color a link.
+% \begin{macrocode}
+\def\Rect#1{\textcolor{\@linkcolor}{#1}}
+% \end{macrocode}
+% The auxiliary file \texttt{eqexam.def}, created by \textsf{exerquiz}, writes
+% \DescribeMacro{\ReturnTo}\cs{ReturnTo} to the \textsf{SOL} file
+% in the form \verb!\ReturnTo{page.1}{\mbox{}}!. We want to remove the
+% \cs{mbox} because it causes, at times, more vertical space that is wanted
+% in an exam document.
+% \begin{macrocode}
+\def\eqe@striphbox\mbox#1{#1}
+\newcommand{\ReturnTo}[2]{\eq@fititin{\eqe@striphbox#2}}
+% \end{macrocode}
+%\section{Switching proofing symbols}
+% \DescribeMacro{\proofingsymbol} The definition of the proofing symbol, this
+% symbol marks the correct answer of a multiple choice question when the
+% \texttt{proofing} option is used.
+% \begin{macrocode}
+\newcommand{\proofingsymbol}[1]{%
+ \def\@proofingsymbol{\textcolor{\@proofingsymbolColor}{#1}}}
+% \end{macrocode}
+% This is the answers macro for the link-style and is called from the \texttt{eqexam.def} file.
+% \begin{macrocode}
+%</standalone>
+% \end{macrocode}
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% In response to the \texttt{allowcircmc}, we load \texttt{lcircle10} and use the `h' and `x'
+% glyph.
+% \begin{macrocode}
+\def\selectedMC{\useRectForMC}
+\ifallowcircmc
+ \font\eqe@lcir=lcircle10 at 12pt
+ \bgroup
+% \end{macrocode}
+% Get the width of the `h', the circle has zero height and depth. Set the
+% diameter and radius of the circle.
+% \begin{macrocode}
+ \setbox0=\hbox{\eqe@lcir h}
+ \xdef\eqe@cirDiam{\the\wd0}
+ \@tempdima=.5\wd0
+ \xdef\eqe@cirRadius{\the\@tempdima}
+ \egroup
+% \end{macrocode}
+% A command to use the circle (h) and the filled circle (x).
+% \begin{macrocode}
+ \def\circ@Glyph#1#2{\hbox{\smash{\raisebox{\eqe@cirRadius}%
+ {\makebox[\eqe@cirDiam]{\llap{\rlap{\eqe@lcir#1}%
+ \hskip#2\relax}}}}}}
+% \end{macrocode}
+% Added preview color to the circle version of the bounding box. The color
+% accessed through \cs{previewColor}, its default is \texttt{black}.
+% \begin{macrocode}
+ \def\eqe@BboxCirc#1#2{\hbox{%
+ \textcolor{\previewColor}{\circ@Glyph{h}{0pt}}}}
+% \end{macrocode}
+% For proofing purposes, prepare the filled circle in the form of the command
+% \cs{circProofingForCirc}.
+% \begin{macrocode}
+ \def\circProofingForCirc{\centerWidget\RadioFieldSize
+ \lower\eqcenterWidget\circ@Glyph{x}{1.4pt}}
+ \if\eq@online\eqe@YES
+% \end{macrocode}
+% If online (\texttt{online} or \texttt{email} option), we cancel these commands.
+% \begin{macrocode}
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc\useMCCircles}
+ \def\selectedMC{\useCircForMC}
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox\useMCRects}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect\useMCRects}}
+% \let\useRectForMC\relax
+ \else % if not online
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect}}
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc}
+ \def\selectedMC{\useCircForMC}
+ \fi
+ \def\useCircForProof{\symbolchoice{circle}%
+ \proofingsymbol{\circProofingForCirc}}
+\else
+% \end{macrocode}
+% If \texttt{allowcircmc} is not taken
+% \begin{macrocode}
+ \if\eq@online\eqe@YES
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc\useMCCircles}
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox\useMCRects}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect\useMCRects}}
+ \else
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect}}
+ \def\useCircForMC{\useRectForMC}
+ \def\selectedMC{\useRectForMC}
+ \fi
+ \let\useCircForProof\relax
+\fi
+% \end{macrocode}
+%\DescribeMacro{\useRectForMS}\cmd{\useRectForMS} When declared, rectangles are
+% used for multiple selection, similarly, \DescribeMacro{\useCircForMS}\cmd{\useCircForMS}
+% uses circles if \texttt{allowcirc4mc} is in effect.
+% \begin{macrocode}
+\newif\ifuserectforms
+\def\useRectForMS{\userectformstrue}
+\def\useCircForMS{\userectformsfalse}
+% \end{macrocode}
+% \changes{v3.1e}{2012/11/10}{Changed default for \cs{proofingsymbol}}
+% \begin{macrocode}
+\newcommand{\useCheckForProof}{\symbolchoice{check}%
+ \proofingsymbol{\ding{52}}}
+\useCheckForProof
+% \end{macrocode}
+% Similarly, for a cross, we get a nice `handwritten' cross \verb!\ding{56}!, !when we latex
+% the document; for the \texttt{online} or \texttt{email} option, we get a simple cross in the
+% active radio button field.
+% \begin{macrocode}
+\newcommand{\useCrossForProof}{\symbolchoice{cross}%
+ \proofingsymbol{\raisebox{-1pt}{\rlap{\kern-1pt\Large\ding{56}}}}}
+% \end{macrocode}
+%
+% \section{The Main Code}
+% We now continue with the main package. Mostly, we define macros specific to the
+% \texttt{eqexam} package: define the \texttt{problem} and \texttt{problem*} environments,
+% macros for calculating totals per page, etc.
+%
+% \begin{macrocode}
+\def\MCcolor{black}
+\def\Ans@sq@l@driver{\edef\@linkcolor{\MCcolor}%
+ \Rect{\makebox[\eq@tmpdima]{\linkContentWrapper}}%
+ \Ans@proofing{\eq@tmpdima}%
+}
+% \end{macrocode}
+% This is the answers macro for the form-style and is called from the \texttt{eqexam.def} file.
+% \begin{macrocode}
+\def\Ans@sq@f@driver{%
+ \centerWidget\RadioFieldSize
+ \leavevmode\lower\eqcenterWidget\Bbox %\eqe@Bbox
+ {\RadioFieldSize}{\RadioFieldSize}%
+ \Ans@proofing{\RadioFieldSize}%
+}
+% \end{macrocode}
+% Write quiz solutions to the exercise solutions file
+% \begin{macrocode}
+\def\eq@sqsllabel{\string\textbf{Solution to Quiz:}}
+\def\sqsllabel{\eq@sqsllabel}
+% \end{macrocode}
+% \begin{macro}{\writeToSolnFile}
+% General purpose command for writing to the solution file.
+% \begin{macro}{\preExamSolnHead}
+% Executed just before a user friendly name
+% \begin{macro}{\examSolnHeadFmt}
+% Format for the user friendly name
+% \begin{macro}{\postExamSolnHead}
+% Executed just after a user friendly name
+% \begin{macrocode}
+\let\quiz@solns\ex@solns
+\newcommand{\preExamSolnHead}{\goodbreak\noindent}
+\newcommand{\examSolnHeadFmt}[1]{\textbf{#1}}
+\newcommand{\postExamSolnHead}{\par\medskip}
+\newcommand{\writeToSolnFile}[1]{%
+ \let\quiz@solns\ex@solns
+ \set@display@protect
+ \eqe@IWO\quiz@solns{#1}%
+ \set@typeset@protect
+}
+% \end{macrocode}
+% We will write all solutions to the \texttt{.sol} auxiliary file.
+% \begin{macrocode}
+\def\eqe@writetoSolns#1{%
+ \set@display@protect
+ \eqe@IWO\quiz@solns{\string\preExamSolnHead
+ \string\examSolnHeadFmt{#1}\string\postExamSolnHead}%
+ \set@typeset@protect
+}
+\def\eqe@writetoAux#1{%
+ \set@display@protect
+ \eqe@IWO\@auxout{#1}%
+ \set@typeset@protect
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Turn off interactivity of short quiz.
+\def\Ans@sq@l@Actions{}
+\def\Ans@sq@f@Actions{}
+% \begin{macrocode}
+% \end{macrocode}
+% This macro is defined in \texttt{exerquiz}, but has a little different definition for \textsf{eqexam}.
+% \begin{macrocode}
+\def\Ans@proofing
+#1{%
+ \ifeq@proofing\if\Ans@choice1\relax
+ \llap{\rlap{\,\@proofingsymbol}\hskip#1\relax}%
+ \fi\fi
+}
+% \end{macrocode}
+% This macro gets the page number of the last page of the exam. It is read in through
+% a macro definition made and written to the \texttt{.aux} file.
+% \begin{macrocode}
+\def\eq@ExamLastPage{\csname eqExamLastPage\endcsname}
+\newcommand{\nPagesOnExam}{\csname eqExamLastPage\endcsname}
+\newcommand{\nPagesOfQues}{\ifvspacewithsolns
+ \csname eqExamQuesLastPage\endcsname\else
+ \csname eqExamLastPage\endcsname\fi}
+\newcommand{\nPagesOfSols}{\def\eqExamNumPagesSolns{0}%
+ \csarg\ifx{eqExamLastPage}\relax\else
+ \csarg\ifx{eqExamLastPage}\relax\else
+ {\count\z@=\nPagesOnExam\relax\advance
+ \count\z@-\nPagesOfQues\relax
+ \xdef\eqExamNumPagesSolns{\the\count\z@}}\fi\fi
+ \eqExamNumPagesSolns
+}
+% \end{macrocode}
+% \begin{macro}{\lastPageOfExam}
+%\changes{v2.0l}{2011/05/05}{%
+% Returns the page number of the end of the exam with a given name.
+%}
+% Returns the page number of the end of the exam with a name of \texttt{\#1}.
+% \begin{macro}{\firstPageOfExam}
+%\changes{v2.0l}{2011/05/05}{%
+% Returns the page number of the beginning of the exam with a given name.
+%}
+% Returns the page number of the beginning of the exam with a name of \texttt{\#1}.
+% \begin{macrocode}
+\newcommand{\lastPageOfExam}[1]{\pageref{#1PageEnd}}
+\newcommand{\firstPageOfExam}[1]{\pageref{#1PageBegin}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% The last two commands are meant to produce typeset numbers; however, there
+% is a need to convert these to numbers that tex's registers can manipulate.
+% Here goes. \DescribeMacro{\eqe@defNumRefii}\cmd{\eqe@defNumRefii} takes
+% its argument and strips away the other arguments of \cs{pageref}; it picks
+% off the second of two or five, depending if \textsf{hyperref} is loaded.
+% It defines a macro |\csname nRefii@#1\endcsname| whose value is a page
+% number of the referenced object.
+% \begin{macrocode}
+\newcommand{\eqe@defNumRefii}[1]{%
+ \@ifundefined{hyperref}{\let\@getsecondOf\@secondoftwo}
+ {\let\@getsecondOf\@secondoffive}%
+ \@ifundefined{r@#1}{%
+% \end{macrocode}
+% If the reference \texttt{r@\#1} is undefined, define the value to be 0
+% \begin{macrocode}
+ \csarg\gdef{nRefii@#1}{0}}{%
+% \end{macrocode}
+% If the reference \texttt{r@\#1} is defined, define the value to be
+% the second argument of \cs{r@\#1} expanded
+% \begin{macrocode}
+ \expandafter\xdef\csname nRefii@#1\endcsname
+ {\expandafter\expandafter\expandafter
+ \@getsecondOf\csname r@#1\endcsname}%
+ }%
+}
+% \end{macrocode}
+% \DescribeMacro{\eqe@numRefii} takes one argument, the control
+% name. Its value is zero or \cs{nRefii@\#1}. This expands to a number
+% in all cases. It can be used in tex comparisons.
+% \begin{macrocode}
+\def\eqe@numRefii#1{%
+ \csarg\ifx{nRefii@#1}\relax 0\else
+ \@nameuse{nRefii@#1}\fi}
+% \end{macrocode}
+% \begin{macro}{\numLastPageOfExam}
+% \begin{macro}{\numFirstPageOfExam}
+% This is the user-interface to acquiring the first and last page
+% numbers of the exam with name \texttt{\#1}. These can be used
+% in comparisons, e.g.
+%\begin{verbatim}
+% \rfooteqe{\ifnum\value{page}<\numLastPageOfExam{<myTest>}%
+% \textbf{Test Continues}\fi}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\numLastPageOfExam}[1]{\eqe@numRefii{#1PageEnd}}
+\newcommand{\numFirstPageOfExam}[1]{\eqe@numRefii{#1PageBegin}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\newcommand{\makeRefsNums}{%
+ \@ifundefined{thePartNames}{}{\begingroup
+ \def\\##1{\typeout{processing ##1}%
+ \eqe@defNumRefii
+ {##1PageEnd}\eqe@defNumRefii{##1PageBegin}}%
+ \thePartNames
+ \endgroup}%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\AtBeginDocument{\makeRefsNums}
+% \end{macrocode}
+% \subsection{Running Heads and Feet}
+% We develop a series of macros for creating running headers and footers for the exam.
+% \begin{macro}{\lheadeqe}
+% \begin{macro}{\cheadeqe}
+% \begin{macro}{\rheadeqe}
+%\changes{2.0a}{2010/05/06}{
+% Changed the definitions of \cs{lhead}, \cs{chead}, and \cs{rhead} so they don't clash
+% with the \textsf{fancyhdr} package. If \textsf{fancyhdr} is not loaded at the time \textsf{eqexam} is loaded, we
+% \cs{let} the old names to the new names. Therefore, when \textsf{fancyhdr} is loaded first use
+% the new definitions.
+%}
+% Set the left, center, and right running headers.
+% \begin{macrocode}
+\newcommand{\lheadeqe}[1]{\def\eq@lhead{#1}}
+\lheadeqe{\shortwebsubject/\shortwebtitle}
+\newcommand{\cheadeqe}[1]{\def\eq@chead{#1}}
+\cheadeqe{-- Page \arabic{page} of {\nPagesOnExam} --}
+\newcommand{\rheadeqe}[1]{\def\eq@rhead{#1}}
+% \end{macrocode}
+% The default is \cs{eq@ExamName}, which is defined by \cs{eqExamName}, the default displays the word \texttt{"Name"}
+% and an underlined horizontal space for the student to enter his/her name.
+% \begin{macrocode}
+\rheadeqe{\eq@ExamName}
+% \end{macrocode}
+% \begin{macro}{\lhead}
+% \begin{macro}{\chead}
+% \begin{macro}{\rhead}
+% These are the original names for the headers, we'll keep them if
+% \textsf{fancyhdr} is not already loaded to maintain compatibility
+% with previous versions of \textsf{eqexam}. The use of these commands
+% is \emph{discouraged}.
+% \begin{macrocode}
+\@ifpackageloaded{fancyhdr}{}{%
+ \let\lhead\lheadeqe
+ \let\chead\cheadeqe
+ \let\rhead\rheadeqe
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\runExamHeader}
+% \begin{macro}{\eqExamRunHead}
+% The running header of the exam, may be redefined.
+% \begin{macrocode}
+\newcommand{\runExamHeader}{\eq@lhead\hfill\eq@chead\hfill\eq@rhead}
+\newcommand\eqExamRunHead{%
+ \addtolength\textwidth{\oddsidemargin}%
+ \noindent\hspace*{-\oddsidemargin}\makebox[\textwidth]
+ {\runExamHeader}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \paragraph*{Running footers.}
+% One or two users wanted to use running footers, so
+% here they are.
+% \begin{macro}{\lfooteqe}
+% \begin{macro}{\cfooteqe}
+% \begin{macro}{\rfooteqe}
+% There has been some demand for running footers. You have to be
+% a little careful, \textsf{eqexam} uses the footer for the
+% command \cmd{\settotalsbox}, which puts in the totals for the pages
+% either on the left (\texttt{totalsonleft}) or right (\texttt{totalsonright}) side, depending on the option.
+% \begin{macrocode}
+\newcommand{\lfooteqe}[1]{\def\eq@lfoot{#1}}
+\lfooteqe{}
+\newcommand{\cfooteqe}[1]{\def\eq@cfoot{#1}}
+\cfooteqe{}
+\newcommand{\rfooteqe}[1]{\def\eq@rfoot{#1}}
+\rfooteqe{}
+% \end{macrocode}
+% \DescribeMacro{\runExamFooter}Considering the defaults for the left, center, and right footer elements,
+% the default footer contributes nothing, except inserting
+% \cmd{\settotalsbox} (see the definition of \cs{@oddfoot})
+% \begin{macrocode}
+\newcommand{\runExamFooter}{\eq@lfoot\hfill\eq@cfoot\hfill\eq@rfoot}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \paragraph*{Running headers for solutions.}
+% We provide a special set of headers for the solution pages.
+% The document author needs to manage running footers for the solution
+% pages.
+% \begin{macro}{\lheadSol}
+% \begin{macro}{\cheadSol}
+% \begin{macro}{\rheadSol}
+% \begin{macro}{\runExamHeaderSol}
+% \begin{macro}{\eqsolutionshook}
+% The running header of the exam, when solutions are included at the end of
+% the document, perhaps for posting the solutions to the exam, or
+% publication of a ``pretest''. Note that \cs{eqsolutionshook} is defined
+% in \texttt{exerquiz/eqexam.def}. May be redefined.
+% \begin{macrocode}
+\newcommand{\lheadSol}[1]{\def\eq@lheadSol{#1}}
+\lheadSol{\shortwebsubject/\shortwebtitle}
+\newcommand{\cheadSol}[1]{\def\eq@cheadSol{#1}}
+\cheadSol{-- Page \arabic{page} of {\eq@ExamLastPage} --}
+\newcommand{\rheadSol}[1]{\def\eq@rheadSol{#1}}
+\rheadSol{SOLUTIONS}
+% \end{macrocode}
+% The \cs{runExamHeaderSol} distributes the three solution headers across
+% the page.
+% \begin{macrocode}
+\newcommand{\runExamHeaderSol}
+ {\eq@lheadSol\hfill\eq@cheadSol\hfill\eq@rheadSol}
+% \end{macrocode}
+% The solutions headers are inserted using the \cs{eq@solutionshook}, see
+% the definition of \cmd{\exerSolnInput}.
+% \begin{macrocode}
+\def\eq@solutionshook
+{%
+ \gdef\eqExamRunHead{\addtolength\textwidth{\oddsidemargin}%
+ \noindent\hspace*{-\oddsidemargin}\makebox[\textwidth]
+ {\runExamHeaderSol}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \subsection{\texorpdfstring{\protect\cs{maketitle}}{\textbackslash{maketitle}} definitions}
+% \begin{macro}{\maketitle}
+% \begin{macro}{\maketitledesign}
+% \begin{macro}{\altTitle}
+% Standard {\LaTeX} macro, but this time it is used to create the header at the top of the first
+% page of the exam. Typically, consisting of two rows of info. (1) first row has course name, exam name, and
+% a place for the student to put his/her name. (2) second row has date and instructor. May be redefined.
+%
+% Modify the title by redefining \cs{maketitledesign}, the \cs{maketitle} command
+% itself has {\LaTeX} commands in it that should not be changed.
+% \changes{v1.6i}{2007/09/18}
+%{
+% Added the command \cs{altTitle} as an alternate title for the exam
+% document. This alternate title appear centered under the title
+% of the document.
+%}
+% \begin{macrocode}
+\newcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\websubject\\\@date}\hfill
+ \shortstack[c]{\webtitle\\\strut\@altTitle}\hfill
+ \shortstack[l]{\strut\eq@ExamName\\\webauthor}}%
+}
+\def\altTitle#1{\def\@altTitle{#1}}
+\let\@altTitle\@empty
+\def\eqemaketitle
+{%
+% \end{macrocode}
+% \cs{EQEcalculateAllTotals}: We don't actually calculate all totals, just
+% some of them. We do calculate the grade total of all the \texttt{exam}
+% environments in the document, we also calculate the percentage that each
+% exam contributes to to the total. If \cs{maketitle} is not used, for
+% whatever reason, this command should be calculated explicitly just after
+% |\begin{document}|.
+% \changes{v3.0y}{2012/04/20}{Moved \cs{EQEcalculateAllTotals} from the bottom
+% to the top of \cs{eqemaketitle}. In case the author wants the grand total
+% of the exam in the title, we need to make all calculations before
+% \cs{maketitledesign.}}
+% \begin{macrocode}
+ \EQEcalculateAllTotals
+ \begingroup
+% \addtolength\textwidth{\oddsidemargin}%
+ \noindent%\hspace*{-\oddsidemargin}%
+ \raisebox{.7in}[0pt][0pt]{\SubmitButton}%
+ \maketitledesign
+ \endgroup
+}
+% \end{macrocode}
+% If the \texttt{fortextbook} option is not taken, we set up the usual \cs{maketitle} definition.
+% If the \texttt{useclassmaketitle} option is taken, we don't redefine either.
+% \begin{macrocode}
+\ifeqfortextbook
+ \@ifpackageloaded{web}{\let\maketitle\web@save@maketitle}{}%
+\else
+ \if@eqeuseclassmaketitle
+ \@ifpackageloaded{web}{\let\maketitle\web@save@maketitle}{}%
+ \else
+ \let\maketitle\eqemaketitle
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \subsection{The cover page definitions}
+% \begin{macro}{\eqexcoverpage}
+% The \texttt{eqexam} package allows for the possibility of a cover page, if the \texttt{coverpage}
+% option is taken.
+% \begin{macro}{\placeCoverPageLogo}
+% A simple command to insert a logo on the cover page. The logo can be used to cover the
+% score in the next page, if the instructor places the score under the logo. Example of usage
+%\begin{verbatim}
+% \placeCoverPageLogo{5in}{-1.5in}{\includegraphics{nwfsc_logo}}
+%\end{verbatim}
+% Working from the upper left corner, the first parameter is the amount to move to logo
+% to the right, the second parameter is the amount to move the logo vertically. The
+% Third parameter is the content; perhaps an \cs{includegraphics} command.
+%\changes{v1.9b}{2009/09/29}{Added \cs{placeCoverPageLogo} to insert a logo on the cover page.}
+% \begin{macrocode}
+\newcommand\placeCoverPageLogo[3]{%
+ \def\eqe@insertLogo{\hbox to0pt{%
+ \hspace*{#1}\smash{\raisebox{#2}{#3}}\hss}}}
+\let\eqe@insertLogo\relax
+% \end{macrocode}
+% Define \cs{eqexcoverpage}, this command places \cs{eqe@insertLogo} and
+% \cs{eqex\-cover\-page\-design} in a group. It is this command that gets executed when
+% the user calls for the \texttt{coverpage} option.
+% \begin{macrocode}
+\def\eqexcoverpage{%
+ \begingroup
+ \pagenumbering{roman}
+ \eqe@insertLogo
+ \eqexcoverpagedesign
+ \endgroup\newpage
+ \pagenumbering{arabic}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\eqexcoverpagedesign}
+% The \texttt{eqexam} package allows for the possibility of a cover page,
+% if the \texttt{coverpage} option is taken. This macro can and should be
+% redefined to fit your needs. The definition below is just a
+% representative example.
+% \begin{macro}{\coverpagesubject}
+% \begin{macro}{\coverpageUniversityFmt}
+% \begin{macro}{\coverpageSubjectFmt}
+% \begin{macro}{\coverpageTitleFmt}
+% The following four commands are used with the cover page.
+% The \cs{cover\-page\-sub\-ject} is used to provide a special subject
+% for the cover page, different from \cs{websubject}. The others
+% are used for formatting.
+%\changes{v1.9a}{2009/28/09}{Added these various Fmt commands for coverpage.}
+% \begin{macrocode}
+\newcommand{\coverpagesubject}[1]{\def\coverpage@subject{#1}}
+\let\coverpage@subject\@empty
+\def\eqexamsubject{\ifx\coverpage@subject\@empty\websubject
+ \else\coverpage@subject\fi}
+\newcommand{\coverpageUniversityFmt}[1]{%
+ \def\eqex@coverpageUniversityFmt{#1}}
+\coverpageUniversityFmt{\bfseries\large}
+\newcommand{\coverpageSubjectFmt}[1]{%
+ \def\eqex@coverpageSubjectFmt{#1}}
+\coverpageSubjectFmt{\bfseries\large}
+\newcommand{\coverpageTitleFmt}[1]{%
+ \def\eqex@coverpageTitleFmt{#1}}
+\coverpageTitleFmt{\bfseries\large}
+\newcommand\cpCID[1]{\def\cp@@CID{#1}}
+\let\cp@@CID\@empty
+%\newcommand\coverpageCID[1]{\def\cpCID@argi{#1}}
+\newcommand{\cpSetCIDWidth}[1]{\bgroup\setlength{\@tempdima}{#1}
+ \xdef\cpCID@argi{\the\@tempdima}\egroup}
+\def\cp@CID{\bgroup\settowidth\eq@tmplengthA{\cp@@CID}%
+ \@tempdima=\cpCID@argi\relax
+ \advance\@tempdima-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\cpCID@argi][l]{\cp@@CID}}\egroup}
+\cpSetCIDWidth{2.25in}
+%\coverpageCID{2.25in}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% When \texttt{coverpage} and \texttt{coverpagesumry} are used, an \textbf{Exam Record}
+% is generated, just a summary may appear beneath the name and ID section of the cover
+% page (\DescribeMacro{\qeSumryVert}\cmd{\qeSumryVert}) or to the right
+% (\DescribeMacro{\eqeSumryHoriz}\cmd{\eqeSumryHoriz}).
+% \begin{macrocode}
+\def\eqeSumryVert{\def\eqe@SumryVert{\par\vfill}%
+ \let\eqe@SumryHoriz\relax
+ \def\eqe@@SumryVert{\vspace{\stretch{-1}}\bigskip}}
+\def\eqeSumryHoriz{\def\eqe@SumryHoriz{\hfill}\let\eqe@SumryVert\relax
+ \let\eqe@@SumryVert\relax}
+% \end{macrocode}
+% The default is a horizontal orientation.
+% \begin{macrocode}
+\eqeSumryHoriz
+% \end{macrocode}
+% We can name the components of the \textbf{Exam Record} by page or by parts. For the case
+% they are named by parts, there are three options: You can used the exam name (the default);
+% you can use the friendly name of the exam (the optional argument), executing
+% \DescribeMacro{\useUIPartNames}\cmd{\useUIPartNames} invokes this option; you can use
+% custom names (useful if the friendly names are too long), execute the command
+% \DescribeMacro{\useCustomPartNames}\cmd{\useCustomPartNames} for this option.
+% \begin{macrocode}
+\def\eqe@coverPageNaming{0}
+\newcommand{\useUIPartNames}{\def\eqe@coverPageNaming{1}}
+\newcommand{\useCustomPartNames}{\def\eqe@coverPageNaming{2}}
+% \end{macrocode}
+% When there is custom naming (\cmd{\customNaming}), we need to provide the user with a
+% way of defining these custom names. \DescribeMacro{\customNaming}\cmd{\customNaming}
+% provides that mechanism. The command takes two arguments, the first is
+% \meta{name}, the exam name, the second is the associated \meta{text} the text that is to appear
+% in the \textbf{Exam Record}
+% \begin{macrocode}
+\newcommand{\customNaming}[2]{\@namedef{userCustom#1}{#2}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\cpSetNameAndIDWidth}[1]{\bgroup
+ \setlength{\@tempdima}{#1}%
+ \xdef\cp@SetNameAndIDWidth{\the\@tempdima}\egroup}
+\cpSetNameAndIDWidth{.45\textwidth}
+\newcommand{\cpEnclNameAndID}[1]{\def\cp@EnclNameAndID{#1}}
+\let\cp@EnclNameAndID\@empty
+\newcommand{\cpSetHghtFrstLn}[1]{\def\cp@HghtFrstLn{#1}}
+\def\cp@HghtFrstLn{0pt}
+\def\cp@setHghtFrstLn{\rule[\cp@HghtFrstLn]{0pt}{0pt}}
+\newcommand\cpNameAndID{\noindent
+ \edef\eqExamName@argii{\cp@SetNameAndIDWidth}%
+ \edef\eqSID@argii{\cp@SetNameAndIDWidth}%
+ \edef\cpCID@argi{\cp@SetNameAndIDWidth}%
+ \cp@EnclNameAndID{\parbox[b]{\cp@SetNameAndIDWidth}{\parindent0pt
+ \cp@setHghtFrstLn\eq@ExamName\\[2ex]
+ \ifx\cp@@CID\@empty\eq@SID\else\cp@CID\fi\\[2ex]
+ \ifx\use@email\eqe@YES\eq@Email\\[2ex]\fi
+ \textcolor{\webauthor@color}{\webauthor}, \@date\vskip0pt}}}
+% \end{macrocode}
+% Now we present the definition of \cs{eqexcoverpagedesign}.
+% \begin{macrocode}
+\newcommand{\eqexcoverpagedesign}
+{%
+ \begingroup
+ \parindent0pt
+ \thispagestyle{empty}
+% \addtolength\textwidth{\oddsidemargin}
+ \vspace*{.1\textheight}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageUniversityFmt
+ \color{\webuniversity@color}%
+ \centering\webuniversity}}
+ \par\vspace{.1\textheight}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageSubjectFmt
+ \color{\websubject@color}%
+ \centering\eqexamsubject}}
+ \par\vspace{\bigskipamount}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageTitleFmt
+ \color{\webtitle@color}%
+ \centering\webtitle}}
+ \par\vspace{\stretch{1}}
+ \optionalpagematter
+ \par\vspace{\stretch{1}}\cpNameAndID
+ \eqe@SumryHoriz\eqe@SumryVert
+ \sumryAnnots
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% The following are various local strings used in the \textbf{Exam Record}, the
+% default is to use English words.
+% \begin{macro}{\cpSumryHeader}
+% The header that appears at the top of the box
+% \begin{macro}{\cpSumryPts}
+% The formatting for the number of points
+% \begin{macro}{\cpSumryPage}
+% The word for ``Page''
+% \begin{macro}{\cpSumryTotal}
+% The word for ``Total''
+% \begin{macro}{\cpSumryGrade}
+% The word for ``Grade''
+% \begin{macro}{\cpSetSumryWidth}
+% The width of the summary box
+% \begin{macro}{\cpUsefbox}
+% Enclose in an \cs{fbox}? The default is yes
+% \begin{macro}{\cpNofbox}
+% Do not enclose in an \cs{fbox}
+% \begin{macrocode}
+\newcommand{\cpSumryHeader}{\textbf{Exam Record}}
+\newcommand{\cpSumryPts}{\,\text{pts}}
+\newcommand{\cpSumryPage}{Page}
+\newcommand{\cpSumryTotal}{Total:}
+\newcommand{\cpSumryGrade}{Grade:}
+\newcommand{\cpSetSumryWidth}[1]{\bgroup\setlength{\@tempdima}{#1}
+ \xdef\cp@SetSumryWidth{\the\@tempdima}\egroup}
+\cpSetSumryWidth{.5\textwidth}
+\newcommand{\cpUsefbox}{\let\cp@Usefbox\fbox}
+\cpUsefbox
+\newcommand{\cpNofbox}{\let\cp@Usefbox\mbox}
+\newcommand{\cprulelength}{1.5in}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% A helper command used in \cs{cpSumybyparts}
+% \begin{macrocode}
+\def\cp@IsertNaming#1{%
+ \ifcase\eqe@coverPageNaming
+ #1\or\@nameuse{userFriendly#1}\or
+ \@nameuse{userCustom#1}\else#1\fi
+}
+% \end{macrocode}
+% \DescribeMacro{\cpSumrybyparts}
+% The routine for building the summary box, where we list the statistics
+% for each part.
+% \begin{macrocode}
+\newcommand{\cpSumrybyparts}{%
+ \eqe@@SumryVert\cp@Usefbox{%
+ \ifx\cp@Usefbox\fbox
+ \def\cp@sumryWdth{\cp@SetSumryWidth-2\fboxrule-2\fboxsep}\else
+ \def\cp@sumryWdth{\cp@SetSumryWidth}\fi
+ \begin{minipage}[b]{\cp@sumryWdth}\kern0pt
+ \begin{flushleft}
+ \setlength{\eqetmplengtha}{\cprulelength}%
+ \edef\eqe@cprulelength{\the\eqetmplengtha}%
+ \csarg\ifx{NumberOfParts}\relax
+ \else
+ \count2=0
+ \medskip
+ \cpSumryHeader\par\parskip\bigskipamount
+ \def\\##1{\advance\count2by\csname ##1total\endcsname
+ \underbar{\makebox[0pt][l]{%
+ \cp@IsertNaming{##1}}\hspace*{\eqe@cprulelength}}%
+ / $\eqe@ptsFmt{\csname ##1total\endcsname}%
+ \cpSumryPts$\par}\thePartNames
+ \fi
+ \underbar{\makebox[0pt][l]{\cpSumryTotal}%
+ \hspace{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count2\relax}\cpSumryPts$ \par
+ \underbar{\makebox[0pt][l]{\cpSumryGrade}%
+ \hspace{\eqe@cprulelength}}%
+ \ifx\cp@Usefbox\fbox\medskip\fi
+ \end{flushleft}\kern0pt
+ \end{minipage}}\par
+}
+% \end{macrocode}
+% \DescribeMacro{\cpSumrybypages}
+% The routine for building the summary box, where we list the statistics
+% for each page.
+% \begin{macrocode}
+\newcommand{\cpSumrybypages}{%
+ \eqe@@SumryVert\cp@Usefbox{%
+ \ifx\cp@Usefbox\fbox
+ \def\cp@sumryWdth{\cp@SetSumryWidth-2\fboxrule-2\fboxsep}\else
+ \def\cp@sumryWdth{\cp@SetSumryWidth}\fi
+ \begin{minipage}[b]{\cp@sumryWdth}\kern0pt
+ \begin{flushleft}
+ \setlength{\eqetmplengtha}{\cprulelength}%
+ \edef\eqe@cprulelength{\the\eqetmplengtha}%
+ \csarg\ifx{NumberOfParts}\relax
+ \else\medskip\count0=0\relax\count2=0\relax
+ \cpSumryHeader\par\parskip\bigskipamount
+ \ifsolutionsAtEnd
+ \@ifundefined{eqExamQuesLastPage}{\def\NUMPAGES{0}}
+ {\edef\NUMPAGES{\@nameuse{eqExamQuesLastPage}}}%
+ \else
+ \@ifundefined{eqExamLastPage}{\def\NUMPAGES{0}}
+ {\edef\NUMPAGES{\@nameuse{eqExamLastPage}}}%
+ \fi
+ \@whilenum\count0<\NUMPAGES\relax\do{%
+ \advance\count0by1\relax
+ \@ifundefined{Page\the\count0total}{\count4=0\relax}
+ {\count4=\@nameuse{Page\the\count0total}\relax}%
+ \csarg\ifx{Page\the\count0spilltotal}\relax
+ \else\advance\count4by\csname%
+ Page\the\count0spilltotal\endcsname\relax\fi
+ \advance\count2by\count4\relax\underbar{%
+ \makebox[0pt][l]{\cpSumryPage~\the\count0}%
+ \hspace*{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count4\relax}%
+ \cpSumryPts$\csarg\ifx{Page\the\count0spilltotal}\relax
+ \else\ $(\@nameuse{Page\the\count0spilltotal}%
+ \cpSumryPts+\@nameuse{Page\the\count0total}%
+ \cpSumryPts)$\fi\par
+ }%
+ \fi
+ \underbar{\makebox[0pt][l]{\cpSumryTotal}%
+ \hspace{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count2\relax}\cpSumryPts$\par
+ \underbar{\makebox[0pt][l]{\cpSumryGrade}%
+ \hspace{\eqe@cprulelength}}%
+ \ifx\cp@Usefbox\fbox\medskip\fi
+ \end{flushleft}\kern0pt
+ \end{minipage}}\par
+}
+% \end{macrocode}
+% If the author takes the \texttt{coverpage} option, \cs{eqex@coverpage} is set equal
+% to \cs{eqexcoverpagedesign}, otherwise, it is set equal to \cs{relax}.
+% \begin{macrocode}
+\AtBeginDocument{\eqex@coverpage}
+% \end{macrocode}
+% \subsection{Insert Points in Margins and Compute Page Totals}
+% Here we attempt to place point values of a problem in the margins and
+% to compute the page totals.
+%
+%\begin{macro}{\probvalue}
+% This is a fundamental macro for keeping track of the points of the problem.
+% It increments the counter \texttt{eqpointvalue}, which keeps a running total
+% of the points of the current part of the exam, puts the value in the margins,
+% and sets a \texttt{mark}, so that at the end of the page, we can compute the
+% number of points on the current page. This macro is used in several situations,
+% for example, in the \texttt{problem} environment, \cs{manualcalcparts} and in
+% \cs{autocaleparts}. \textbf{Should not be redefined}.
+%\begin{flushleft}
+%Parameters
+%\begin{verbatim}
+%#1 = total points for this problem
+%#2 = 0 if total points, otherwise, #2 is the number of points each
+% problem.
+%\end{verbatim}
+%\end{flushleft}
+% \begin{macrocode}
+\def\@marktotalvalue{\global\let\eqe@innermarkpts\relax
+ \if@bypasseqexamheading\else\def\eqe@marktxt{%
+ \theeqpointvalue\@nameuse{eqExam}\theeq@numparts}%
+ \ifx\endparts\endexercise@parts@tabular
+ \xdef\eqe@innermarkpts{\noexpand\mark{\eqe@marktxt}}\else
+ \mark{\eqe@marktxt}\fi\fi}
+\def\probvalue#1#2{\addtocounter{eqpointvalue}{#1}%
+ \ifdispl@yPoints\marginpoints{#1}{#2}\fi
+ \@marktotalvalue}
+% \end{macrocode}
+% \end{macro}
+% \DescribeMacro{\widthtpboxes} is the width of the box in the margins that
+% contains the points or totals. The design of the box keys off this width.
+% \begin{macrocode}
+\newcommand{\widthtpboxes}{35pt}
+% \end{macrocode}
+% \DescribeMacro{\marginboxdesign} is the basic box that encloses the points
+% on the right, and the totals. This box may be redefined as desired, in which case,
+% \cs{measurePtBoxHt} should be re-executed.
+% \begin{macrocode}
+\newcommand{\marginboxdesign}[2][]{%
+ \parbox{\widthtpboxes}{\tabcolsep=0pt\relax
+ \begin{tabular}{|c|}\hline
+ \vrule height15pt width0pt#1\\\hline
+ \makebox[\widthtpboxes-2\fboxrule]{#2}\\\hline
+ \end{tabular}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\eqleftmarginbox}
+% This macro places the problem value in the left margin, can be redefined, if you dare.
+%\begin{flushleft}
+% Parameters
+%\begin{verbatim}
+%#1 = total points for this problem
+%#2 = 0 if total points, otherwise, #2 is the number of points each
+% problem.
+%\end{verbatim}
+%\end{flushleft}
+% Currently, this macro is not used so I'll make it into verbatim text.
+%\begin{verbatim}
+\newcommand{\eqleftmarginbox}[2]{\makebox[0pt][r]{%
+ \setlength\tabcolsep{0pt}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign{\marginpointsboxtext{#1}{#2}}%
+ }\hspace*{\marginparsep}\hspace*{\eqemargin}}%
+}
+%\end{verbatim}
+% \end{macro}
+% \paragraph*{Formatting the points}
+% \begin{macro}{\ptsLabel}
+% \begin{macro}{\eachLabel}
+% \begin{macro}{\pointsLabel}
+% The following three convenience commands can be used to localize some of
+% the strings to other languages.
+% \begin{macrocode}
+\providecommand{\ptsLabel}[1]{\def\eqptsLabel{#1}}\ptsLabel{pts}
+\providecommand{\ptLabel}[1]{\def\eqptLabel{#1}}\ptLabel{pt}
+\newcommand{\eachLabel}[1]{\def\eqeachLabel{#1}}\eachLabel{ea.}
+% \end{macrocode}
+% These next two are used by the \texttt{instructions} environment to display
+% the points for the exam.
+% \begin{macrocode}
+\newcommand{\pointsLabel}[1]{%
+ \def\eqpointsLabel{#1}}\pointsLabel{points}
+\newcommand{\pointLabel}[1]{%
+ \def\eqpointLabel{#1}}\pointLabel{point}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \paragraph*{pointsonleft or pointsonboth}
+% \begin{macro}{\marginpointtext}
+% Creates the text for \cs{eqleftmargin} to use. From the macro definition,
+% if \texttt{\#2} is 0, then we write the points for the problem, else, we write
+% the points each for the problem. \DescribeMacro{\leftmarginPtsTxt}\cmd{\leftmarginPtsTxt}
+% is the formatting for the total points for the problem; while
+% \DescribeMacro{\leftmarginPtsEaTxt}\cmd{\leftmarginPtsEaTxt} is the formatting
+% for the \verb!{problem*}{<num>ea}!-type problems.
+%
+% \begin{macro}{\pointsAsText}
+% We begin by giving the user a choice, typeset
+% the points in math mode (the default) or typeset in the normal font.
+% \begin{macrocode}
+\def\pointsAsText{\def\eqe@ptsFmt{\text}}
+\let\eqe@ptsFmt\relax
+\@onlypreamble\pointsAsText
+% \end{macrocode}
+% \end{macro}
+% \DescribeMacro{\marginpointtext} determines, based on \texttt{\#2}
+% whether the points are `points each' or not, and calls either
+% \cmd{\leftmarginPtsTxt} or \cmd{\leftmarginPtsTxt}, as appropriate.
+% \begin{macrocode}
+\newcommand{\marginpointtext}[2]{\ifnum#2=0\leftmarginPtsTxt{#1}\else
+ \leftmarginPtsEaTxt{#2}\fi
+}
+% \end{macrocode}
+% \DescribeMacro{\leftmarginPtsTxt} displays points in the left margin:
+% \mbox{(\small$\texttt{\#1}^{\mbox{\scriptsize{pt}}}$)} or
+% \mbox{(\small$\texttt{\#1}^{\mbox{\scriptsize{pts}}}$)},
+% where \texttt{\#1} is the number of points for this problem.
+% \begin{macrocode}
+\newcommand{\leftmarginPtsTxt}[1]{(\small$\eqe@ptsFmt{#1}^{\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}}$)}
+% \end{macrocode}
+% \DescribeMacro{\leftmarginPtsEaTxt} displays `points each' in the left margin:
+% \mbox{(\small$\texttt{\#1}_{\mbox{\scriptsize{ea.}}}^{\mbox{\scriptsize{pt}}}$)} or
+% \mbox{(\small$\texttt{\#1}_{\mbox{\scriptsize{ea.}}}^{\mbox{\scriptsize{pts}}}$)},
+% where \texttt{\#1} is the number of points for each part of this problem.
+% \begin{macrocode}
+\newcommand{\leftmarginPtsEaTxt}[1]{(\small$\eqe@ptsFmt{#1}_{\text{%
+ \eqeachLabel}}^{\text{\ifnum#1=1\relax\eqptLabel\else
+ \eqptsLabel\fi}}$)}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eqleftmargin}
+% Places the number of points (or points each) in the left margin. Can be redefined as
+% desired. This macro is used when author chooses the \texttt{pointsonleft}
+% or \texttt{pointsonbothsides} option. The text for the points is defined above,
+% \cmd{\marginpointtext}.
+% \begin{macrocode}
+\newcommand{\eqleftmargin}[2]{\makebox[0pt][r]{\marginpointtext{#1}{#2}%
+ \setlength{\@tempdima}{\marginparsep+\eqemargin}%
+ \hspace*{\@tempdima}}}
+% \end{macrocode}
+% \end{macro}
+% \paragraph*{pointsonright or pointsonboth}
+% \begin{macro}{\marginpointsboxtext}
+% When the author selects \texttt{pointsonright} or \texttt{pointsonbothsides}, a box
+% appears in the right margin containing problem totals, this is the text for the box.
+% \begin{macrocode}
+\newcommand{\marginpointsboxtext}[2]{\small$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}$}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eqrightmarginbox}
+% When the author selects \texttt{pointsonright} or \texttt{pointsonbothsides}, a box
+% appears in the right margin containing problem totals, this is the box that appears.
+% \begin{macro}{\insertPointsBoxPDF}
+% \begin{macro}{\insertTotalsBoxPDF}
+% These two commands are \cmd{\let}ing them be either a form field (that the
+% document author can fill in during online grading, or as \cs{relax}. It depends
+% on whether the \texttt{email} option is taken or not.
+% \begin{macrocode}
+\def\@insertPointsBoxPDF
+{
+ \def\fieldName{pointsgiven.\curr@quiz.page\thepage.%
+ \theeqquestionnoi}%
+ \calcTextField[\F\FHidden\BC{}\Q1\textColor{1 0 0 rg}]
+ {\fieldName}{\widthtpboxes}{15pt}%
+}
+\def\@insertTotalsBoxPDF
+{
+ \def\fieldName{pagetotals.\curr@quiz.page\thepage}%
+ \calcTextField[\F\FHidden\BC{}\Q1\textColor{1 0 0 rg}
+ \AA{\AACalculate{AFSimple_Calculate("SUM",
+ new Array("pointsgiven.\curr@quiz.page\thepage"));}}]
+ {\fieldName}{\widthtpboxes}{15pt}%
+}
+\ifx\use@email y
+ \let\insertPointsBoxPDF\@insertPointsBoxPDF
+ \let\insertTotalsBoxPDF\@insertTotalsBoxPDF
+\else
+ \let\insertPointsBoxPDF\@empty
+ \let\insertTotalsBoxPDF\@empty
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% The points box that appears in the left margin, may be re-defined, if you dare.
+% At the bottom of the box goes the points for the problem, if the \texttt{email} option
+% is used, in the top, a text field is inserted.
+% \begin{macrocode}
+\newcommand{\eqrightmarginbox}[2]{\makebox[0pt][l]{%
+ \setlength\tabcolsep{0pt}%
+% \end{macrocode}
+% (2011/05/08) new calculation for the right point box.
+% \begin{macrocode}
+ \setlength{\@tempdima}{\textwidth-\eqemargin+\marginparsep}%
+ \hspace*{\@tempdima}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertPointsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }\hfil
+ }%
+}
+% \end{macrocode}
+% At the end of each exam \verb!\end{exam}! the part totals can be optionally
+% displayed on the right. This is the box for doing that.
+% \begin{macrocode}
+\newcommand{\eqeomarginboxright}[2]{\makebox[0pt][l]{%
+ \setlength\tabcolsep{0pt}%
+ \setlength{\@tempdima}{\textwidth+\marginparsep-\parindent}%-\parindent
+ \hspace*{\@tempdima}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }\hfil
+ }%
+}
+% \end{macrocode}
+% At the end of each exam \verb!\end{exam}! the part totals can be optionally
+% displayed on the left. This is the box for doing that.
+% \begin{macrocode}
+\newcommand{\eqeomarginboxleft}[2]{\noindent\makebox[0pt][r]{%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }{\settowidth{\@tempdimb}{\eqe@hspannerPrb}%
+ \setlength{\@tempdima}{\marginparsep+\eqemargin-\@tempdimb}%
+ \hspace*{\@tempdima}}}\hfil
+}
+% \end{macrocode}
+% \DescribeMacro{\measurePtBoxHt} We measure the height of our point/total boxes and store it
+% in the length \cs{eq@pointboxtotalheight}, which is used
+% to separate the boxes so they don't overlap.
+% \begin{macrocode}
+\newcommand{\measurePtBoxHt}{\setbox\eq@pointbox\hbox{%
+ \marginboxdesign{\marginpointsboxtext{00}{0}}%
+ }\setlength\eq@pointboxtotalheight{.5\ht\eq@pointbox}%
+ \xdef\halfHtPtBox{\the\eq@pointboxtotalheight}%
+ \setlength\eq@pointboxtotalheight{\dp\eq@pointbox+\ht\eq@pointbox}%
+ \xdef\totHtPtBox{\the\eq@pointboxtotalheight}%
+ \xdef\dpPtBox{\the\dp\eq@pointbox}%
+ \xdef\htPtBox{\the\ht\eq@pointbox}%
+}
+\measurePtBoxHt
+% \end{macrocode}
+% \end{macro}
+% A helper command to set both margin boxes.
+% \begin{macrocode}
+\newcommand{\eqbothmargins}[2]{\eqleftmargin{#1}{#2}%
+ \eqrightmarginbox{#1}{#2}}
+% \end{macrocode}
+% The macro \cs{probvalue}, defined above, says
+%\begin{verbatim}
+%\mark{\theeqpointvalue\csname eqExam\endcsname\theeq@numparts}
+%\end{verbatim}
+% so the \cs{botmark} contains the point value of this page and the part number for
+% this page.
+% \begin{macrocode}
+\def\lastparttotaled{0}
+% \end{macrocode}
+% The \texttt{botmark} looks like \texttt{18\string\eqExam0}, where $18$ will be the total number of
+% points accumulated for this exam part. We need to retrieve these number, I don't remember why
+% I save them this way.
+%
+% \DescribeMacro{\parsetotals}
+% The \cs{parsetotals} macro is called in \cs{settotalsbox} to retrieve the ongoing point values
+% from \cs{botmark}, and returns two parameters, contained in \cs{argi} and \cs{argiii}.
+% \DescribeMacro{\stripeqExam}
+% Whereas, \cs{stripeqExam} just retrieves the first parameter only.
+% \begin{macrocode}
+\def\parsetotals#1\eqExam#2\end{\def\argi{#1}\def\argii{#2}}
+\def\stripeqExam#1\eqExam{\def\argii{#1}}
+% \end{macrocode}
+% \begin{macro}{\settotalsbox}
+% This is the box containing the page total, it may appear on the left or right side bottom
+% corner.
+% \begin{macrocode}
+\def\settotalsbox{%
+ \expandafter\parsetotals\botmark\eqExam\end
+ \ifx\argi\@empty\hfil
+ \else\ifx\argii\@empty\hfil
+ \else
+ \expandafter\stripeqExam\argii
+% \end{macrocode}
+% Set \texttt{eqpointsthispage} equal to \cs{argi}, which should be the accumulated total
+% for this part of the test so far.
+% \begin{macrocode}
+ \setcounter{eqpointsthispage}{\argi}%
+% \end{macrocode}
+% This subtract \texttt{eqpointsofar}, which should be the total for this test part through the
+% previous page. The difference is the number of points for this page.
+% \begin{macrocode}
+ \addtocounter{eqpointsthispage}{-\value{eqpointsofar}}%
+% \end{macrocode}
+% Now we set \texttt{eqpointsofar} to the new accumulated total \cs{argi}.
+% \begin{macrocode}
+ \setcounter{eqpointsofar}{\argi}%
+% \end{macrocode}
+% And save to the auxiliary file for later usage.
+% \begin{macrocode}
+ \xdef\lastparttotaled{\argii}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef{Page\thepage total}%
+ {\theeqpointsthispage}}%
+% \end{macrocode}
+% Finally, place the totals box.
+% \begin{macrocode}
+ \totalsbox
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \DescribeMacro{\totalsboxtext} This is the text that appears in the totals boxes
+% \begin{macrocode}
+\newcommand\totalsboxtext{\small$
+ \eqe@ptsFmt{\theeqpointsthispage}\,\text{%
+ \ifnum\theeqpointsthispage=1\relax\eqptLabel\else
+ \eqptsLabel\fi}$}
+% \end{macrocode}
+% \DescribeMacro{\eqevtranstotbox}\cmd{\eqevtranstotbox} is a length
+% that can be used to raise or lower the position of the total boxes
+% in the left/right bottom corner. The default is \texttt{0pt}.
+% \begin{macrocode}
+\newlength\eqevtranstotbox
+\setlength{\eqevtranstotbox}{0pt}
+% \end{macrocode}
+% \DescribeMacro{\totalsboxleft}\DescribeMacro{\totalsboxright} There are two totals boxes, one for the left and one
+% for the right side. These can be redefined as desired.
+% \begin{macrocode}
+\def\eqe@chkZeroTotals{\let\eqe@allow\eqe@YES
+ \ifx\eqe@zeroTotalsAllowed\eqe@NO
+ \ifnum\theeqpointsthispage=0 \let\eqe@allow\eqe@NO\fi\fi}
+\newcommand{\totalsboxleft}{\eqe@chkZeroTotals
+ \ifx\eqe@allow\eqe@YES
+ \makebox[0pt][r]{\setlength\tabcolsep{0pt}%
+ \raisebox{-\height+\eqevtranstotbox}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]{\totalsboxtext}%
+ }\hspace*{\marginparsep}%
+ }\fi\hfil
+}
+\newcommand{\totalsboxright}{\eqe@chkZeroTotals
+ \ifx\eqe@allow\eqe@YES
+ \makebox[0pt][l]{\setlength\tabcolsep{0pt}%
+ \hspace*{\textwidth}\hspace*{\marginparsep}%
+ \raisebox{-\height+\eqevtranstotbox}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]{\totalsboxtext}%
+ }%
+ }\fi\hfil
+}
+% \end{macrocode}
+% We begin the document by declaring the current part is part 0 with 0 points. This is the default,
+% in case the author writes a document with no parts or points!
+% \begin{macrocode}
+\ifeqe@nopoints\else\if@bypasseqexamheading\else
+\AtBeginDocument{\mark{0\csname eqExam\endcsname0}}
+\fi\fi
+% \end{macrocode}
+% At the end of the document, we write out the number of parts for this test, and
+% the names of the parts the author has given each part.
+% \begin{macrocode}
+\AtEndDocument{%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef{NumberOfParts}%
+ {\arabic{eq@numparts}}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef{thePartNames}%
+ {\the\partNames}}%
+ \clearpage\addtocounter{page}{-1}\writelastpage\relax
+ \addtocounter{page}{1}%
+}
+% \end{macrocode}
+% \begin{macro}{\theGrandTotal}
+% When an exam has multiple parts, the total of each part is computed
+% and the grand total is computed with \cs{theGrandTotal}.
+% \begin{macrocode}
+\newcommand\theGrandTotal{%
+ $\eqe@ptsFmt{\csname eqeGrandTotal\endcsname}$}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\totalForPart}
+% User access to the total for a exam environment, one argument, the name of the exam.
+% \begin{macro}{\percentForPart}
+% Attempts to calculate the percent of the total that the referenced exam (\texttt{\#1})
+% contributes to the grand total.
+% \begin{macrocode}
+\newcommand{\totalForPart}[1]{$\eqe@ptsFmt{\csname#1total\endcsname}$}
+\def\tot@lForPart#1{\csname#1total\endcsname}
+\newcommand{\percentForPart}[1]{$\eqe@ptsFmt
+ {\csname#1percent\endcsname}$\%}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%\subsection{Computing Number of Points within a Segment of the Exam}
+%
+% We add some commands for calculating number of points in a segment of the exam.
+% A segment being defined subset of consecutive problems within an exam. We can
+% define segments by placing markers (using \cs{placeMarkerHere}) between problems. We can
+% then calculate the total number of points between markers.
+%
+% The counter below is a scratch counter for making the calculations. We assume the
+% \texttt{calc} package is loaded, it does the work for us.
+%
+% \begin{macrocode}
+\newcounter{markerCnt}
+% \end{macrocode}
+% \begin{macro}{\placeMarkerHere}
+% Placed outside of any \texttt{problem}/\texttt{problem*} environment, this command
+% takes one argument, the symbolic name for this marker. We write to the auxiliary file
+% and define a command whose name is based on \texttt{\#1}, and whose value is
+% the cumulative total \cs{theeqpointvalue}.
+%\changes{v1.8}{2008/11/02}
+%{
+% Added a set of commands \cs{placeMarkerHere}, \cs{calcFromMarkers},
+% and \cs{markerTotalFmt} to enable the calculation of totals of segments
+% of the exam.
+%}
+% \begin{macrocode}
+\def\placeMarkerHere#1{%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#1SaveTotalHere}{\theeqpointvalue}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\calcFromMarkers}
+% Once the markers are in place, we can calculate the number of points defined between
+% two such markers. The \cs{calcFromMarkers} takes three arguments, \texttt{\#2} and
+% \texttt{\#3} are the symbolic names of the two markers. While, \texttt{\#1} is an optional
+% argument for formatting the calculation. The default is \cs{@markerTotalFmt}, defined
+% below in \cs{markerTotalFmt}. The value of the total is \cs{themarkerCnt}.
+% \begin{macrocode}
+\newcommand{\calcFromMarkers}[3][\@markerTotalFmt]{%
+ \@ifundefined{#2SaveTotalHere}{}%
+ {\@ifundefined{#3SaveTotalHere}{}{\setcounter{markerCnt}%
+ {\@nameuse{#2SaveTotalHere}-\@nameuse{#3SaveTotalHere}}%
+ \ifnum\value{markerCnt}<0\relax
+ \setcounter{markerCnt}{-\value{markerCnt}}\fi#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\markerTotalFmt}
+% Used to set the global format of the marker totals. The value of the marker total
+% is \cs{themarkerCnt}. The default follows the definition of \cs{markerTotalFmt}
+% \begin{macrocode}
+\newcommand{\markerTotalFmt}[1]{\def\@markerTotalFmt{#1}}
+\markerTotalFmt{\space(\themarkerCnt\space points)}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\calcQsBtwnMarkers}
+% \changes{v3.1}{2012/05/16}{Added \cs{calcQsBtwnMarkers}}
+% \cs{calcQsBtwnMarkers[\meta{Mrk2}]}|{|\meta{Mrk1}|}| does a number of things; primarily,
+% it determines the range of the questions between the two marks. The names of the
+% commands produced are all based in the first marker name \meta{Mrk1}.
+% \DescribeMacro{ \bslash\meta{Mrk1}Start}\cs{\meta{Mrk1}Start} is the first question number that follows the
+% the placement of \cs{calcQsBtwnMarkers}. Similarly,
+% \DescribeMacro{ \bslash\meta{Mrk1}End}\cs{\meta{Mrk1}End}
+% is the last question number between the two marks \meta{Mrk1} and \meta{Mrk2}.
+%
+% We also calculate \DescribeMacro{ \bslash\meta{Mrk1}nQs}\cs{\meta{Mrk1}nQs}, the number of questions appearing between
+% \meta{Mrk1} and \meta{Mrk2}.
+% \begin{macrocode}
+\newcommand{\calcQsBtwnMarkers}[2][]{\setcounter{markerCnt}{0}%
+ \def\eqe@argi{#1}%
+% \end{macrocode}
+% \cs{\meta{Mrk1}thisQnum} is the question number in effect at the point where
+% the command \cs{calcQsBtwnMarkers} is inserted.
+% \begin{macrocode}
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2thisQnum}{\theeqquestionnoi}}%
+% \end{macrocode}
+% \cs{\meta{Mrk1}Start} is 0 if undefined.
+% \begin{macrocode}
+ \@ifundefined{#2thisQnum}{\csarg\xdef{#2Start}{0}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2Start}{0}}%
+ }{%
+% \end{macrocode}
+% \cs{\meta{Mrk1}Start} is the current question number plus 1.
+% \begin{macrocode}
+ \setcounter{markerCnt}{\value{eqquestionnoi}+1}\csarg
+ \xdef{#2Start}{\the\value{markerCnt}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2Start}{\@nameuse{#2Start}}}%
+ }
+% \end{macrocode}
+% Using now both \meta{Mrk1} and \meta{Mrk2} we calculate the difference
+% in the two. Result held in \texttt{markerCnt}. If there is no optional parameter, \meta{Mrk2},
+% do not produce the \cs{\meta{Mrk1}thisQnum}.
+% \begin{macrocode}
+ \ifx\eqe@argi\@empty\else
+ \@ifundefined{#2thisQnum}{\setcounter{markerCnt}{0}}%
+ {\@ifundefined{#1thisQnum}{\setcounter{markerCnt}{0}}{%
+ \setcounter{markerCnt}%
+ {\@nameuse{#1thisQnum}-\@nameuse{#2thisQnum}}%
+ }}%
+ \fi
+% \end{macrocode}
+% \cs{\meta{Mrk1}nQs} is the number of questions that appear between
+% \meta{Mrk1} and \meta{Mrk2}.
+% \begin{macrocode}
+ \csarg\xdef{#2nQs}{\the\value{markerCnt}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2nQs}{\the\value{markerCnt}}}%
+% \end{macrocode}
+% \cs{\meta{Mrk1}End} is 0 if undefined. If there is no optional parameter, \meta{Mrk2},
+% do not produce the \cs{\meta{Mrk1}End}
+% \begin{macrocode}
+ \ifx\eqe@argi\@empty\else
+ \@ifundefined{#1thisQnum}{\csarg\xdef{#2End}{0}%
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{#2End}{0}}%
+ }{%
+% \end{macrocode}
+% \cs{\meta{Mrk1}End} is \cs{\meta{Mrk2}thisQnum}.
+% \begin{macrocode}
+ \csarg\xdef{#2End}{\@nameuse{#1thisQnum}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2End}{\@nameuse{#2End}}}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\markStartFor}
+% \begin{macro}{\markEndtFor}
+% \begin{macro}{\markNumQsFor}
+% We provide a user interface to the three macros defined above. The required
+% parameter is a mark (a name that was used as the first argument of
+% \cmd{\calcQsBtwnMarkers}).
+% \begin{macrocode}
+\newcommand{\markStartFor}[1]{\@nameuse{#1Start}}
+\newcommand{\markEndFor}[1]{\@nameuse{#1End}}
+\newcommand{\markNumQsFor}[1]{\@nameuse{#1nQs}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Useful Commands to Write Problems}
+%
+% \subsubsection{The \texorpdfstring{\cs{placeAtxy}}{\textbackslash{placeAtxy}} command}
+% \begin{macro}{\placeAtxy}
+% Use to place material within the solutions area that is visible to the student
+% on the test document. Syntax:
+% \begin{quote}\switchCats\ttfamily
+% \string\placeAtxy{\meta(x\_dim)}{\meta(y\_dim)}{\meta(content)}
+% \end(quote)
+% \cs{placeAtxy} goes immediately after \verb!\end{solution}!
+% \begin{macrocode}
+\newcommand{\placeAtxy}[3]{{%
+ \par\nointerlineskip
+ \ifdisplayworkarea
+ \ifx\eq@insertverticalspace\eqe@YES
+ \makebox[0pt][l]{\hspace*{-\parindent}\hspace*{#1}%
+ \raisebox{#2}[0pt][0pt]{#3}}\fi
+ \fi
+}}
+% \end{macrocode}
+% \end{macro}
+% \subsubsection{The \texttt{workarea} environment}
+% As of this writing, 2012/12/09, this segment of code has been re-written. The
+% \texttt{splitsolution} and \texttt{panel} environments have a new syntax. I've never
+% gotten any feedback from user who use these environments, so I suspect the impact
+% of these changes are minimal.
+% \begin{environment}{workarea}
+% A work area is an environment used when we display vertical space such as when the
+% \texttt{nosolutions} and \texttt{vspacewithsolns} options are in effect.
+% \DescribeMacro{\workareasb}\cmd{\workareasb} is a save box used in the
+% argument of \texttt{lrbox} to save the contents of the \texttt{minipage}.
+% \begin{quote}\switchCats\ttfamily
+% \string\begin{workarea}[\meta(width)]{\meta(depth)}\\
+% ...\\
+% \string\end{workarea}
+% \end(quote)
+% \begin{macrocode}
+\newsavebox{\workareasb}
+\newenvironment{workarea}[2][\linewidth]
+{%
+ \removelastparskip
+ \edef\workareadepth{\if\currhideopt H0pt\else#2\fi}%
+ \begin{lrbox}{\workareasb}\setlength{\eqetmplengtha}{#1}%
+ \begin{minipage}[b][\workareadepth][t]{\eqetmplengtha}\vspace*{3pt}%
+}{%
+ \end{minipage}\end{lrbox}%
+% \end{macrocode}
+% \texttt{4/5/11} Changed the logic here, so the \texttt{workarea} is available
+% for the \texttt{vspace\-with\-solns} option.
+% \begin{macrocode}
+ \par\ifdisplayworkarea
+ \ifx\eq@insertverticalspace\eqe@YES
+ \removelastparskip
+ \vspace{-\baselineskip}%
+ \if\currhideopt H\else
+ \noindent\strut\smash{\usebox{\workareasb}}%
+ \fi\fi
+ \fi
+}
+% \end{macrocode}
+% \end{environment}
+% \subsubsection{The \texttt{splitsolution} environment}
+% \begin{environment}{splitsolution}
+%\changes{v3.2}{2012/12/10}{Rewrote splitsolution and related code to change the syntax.}
+% This is a special solution environment designed for use with the
+% \texttt{online} or \texttt{email} options, but it is compatible with all other options
+% as well.\par\medskip\noindent
+%\begin{minipage}{.55\linewidth}
+%\textbf{New Syntax}\\[3pt]
+%\begingroup\small
+% \switchCats\ttfamily
+% \string\begin{splitsolution}[\meta(width)][\meta(depth)]\\
+% \string\begin{panel}[l\string|r]\\
+% ...\\
+% \string\end{panel}\\
+% \string\begin{solution}\\
+% ...\\
+% \string\end{solution}\\
+% \string\end{splitsolution}
+%\par\endgroup
+%\end{minipage}\hfil
+%\begin{minipage}{.45\linewidth}
+%\textbf{Old Syntax}\\[3pt]
+%\begingroup\small
+% \switchCats\ttfamily
+% \string\begin{splitsolution}{\meta(depth)}\\
+% \string\begin{panel}[l\string|r]{\meta(width)}\\
+% ...\\
+% \string\end{panel}\\
+% \string\begin{solution}\\
+% ...\\
+% \string\end{solution}\\
+% \string\end{splitsolution}
+%\par\endgroup
+%\end{minipage}
+%\par\medskip\noindent
+% The \texttt{panel} writes its contents to a CUT file, then inputs it back
+%in to get its dimensions, it places the contents in the box
+%\cs{eqpanelbox}.
+%
+% Below is an example of the use of the \texttt{splitsolution} environment
+% (which is defined well below here).
+%\begin{verbatim}
+%\begin{problem}[5]
+%This is a question worth $5$ points.
+%\begin{splitsolution}
+%\begin{panel}\relax
+%\includegraphics[scale=.2]{fig1}
+%\end{panel}
+%\begin{solution}
+%This a really good solution and worthy of a $5$ points.
+%\end{solution}
+%\end{splitsolution}
+%\end{problem}
+%\end{verbatim}
+% Here, we include a graphic. We put it into a box, \cs{eqpanelbox} to get its dimensions.
+% The \texttt{splitsolution} environment has one required argument, the total height of the
+% solution. We then place the graphic in the \texttt{panel} environment, and write the solution
+% in the usual way.
+%\par\medskip\noindent
+% We arrive at the \DescribeEnv{splitsolution}\texttt{splitsolution} environment.
+% \begin{macrocode}
+\def\splitsolution{%
+ \@ifnextchar[{\splitsolutioni}%
+ {\splitsolutioniii{\panelwidth}{\panelheight}}%
+}
+\def\splitsolutioni[#1]{%
+ \@ifnextchar[{\splitsolutionii{#1}}
+ {\splitsolutioniii{\panelwidth}{#1}}%
+}
+\def\splitsolutionii#1[#2]{%
+ \splitsolutioniii{#1}{#2}%
+}
+\def\splitsolutioniii#1#2{%
+ \@ifundefined{panel@write}{\newwrite\panel@write}{}%
+ \gdef\ss@Argiii{#1}\gdef\ss@Argii{#2}%
+% \end{macrocode}
+% Here, we \cs{let} \cs{solution} to \cs{@sssolution} and replace it with
+% \cs{@ssSolution}
+% \begin{macrocode}
+ \let\@sssolution\solution
+ \let\end@sssolution\endsolution
+ \let\solution\@ssSolution
+ \let\endsolution\end@ssSolution
+ \par\noindent\ignorespaces
+% \end{macrocode}
+% The \texttt{panel} environment should appear next, just after the \verb!\begin{splitslution}!
+% \begin{macrocode}
+}
+\def\endsplitsolution{%
+ \ifeq@solutionsafter\strut\par\fi
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi %%dps
+ \edef\eqe@workwidth{\if\ss@Argi l\noexpand\ss@Argiii
+ \else\noexpand\linewidth\fi}%
+ \edef\eqe@workfill{\if\ss@Argi l\else\hfill\fi}%
+ \begin{workarea}[\eqe@workwidth]{\eqedepth}%
+ \let\panelGetDimen\relax%
+ \eqe@workfill\input{panel\thepanel@cnt.cut}%
+ \end{workarea}
+ \strut\par
+}
+% \end{macrocode}
+% \end{environment}
+%\par\medskip\noindent
+% \DescribeMacro{\panelgap}\cs{panelgap} is the separation between solution area
+% and the panel. \DescribeMacro{\eqpanelbox} is a box to put things into, to measure their
+% dimensions. The user accessible commands \DescribeMacro{\panelwidth}\cs{panelwidth} returns the
+% width and \DescribeMacro{\panelheight}\cs{panelheight} the height. There is a special counter
+% \DescribeMacro{panel@cnt}\texttt{panel@cnt} to keep track of the panels generated.
+% \begin{macrocode}
+\newcommand\panelgap{3pt}
+\newsavebox{\eqpanelbox}
+\newdimen\eqepanelwidth
+\newdimen\eqepanelheight
+% \end{macrocode}
+% The \DescribeMacro{\getDimSSPanel}\cs{getDimSSPanel} is an internal command. It
+% places it argument in the box \cs{eqpanelbox} and gets its dimensions. It
+% save the dimensions as \cs{eqepanelwidth} and \cs{eqepanelheight} (the total height).
+% \begin{macrocode}
+\newcommand{\getDimSSPanel}[1]{%
+ \sbox{\eqpanelbox}{#1}%
+ \eqepanelwidth=\wd\eqpanelbox
+ \eqepanelheight=\ht\eqpanelbox
+ \advance\eqepanelheight by\the\dp\eqpanelbox
+}
+% \end{macrocode}
+% \DescribeMacro{\panelwidth}\cs{panelwidth} and \DescribeMacro{\panelheight}\cs{panelheight}
+% are aliases for the dimension registers. This is for compatibility with previous versions.
+% \begin{macrocode}
+\def\panelwidth{\eqepanelwidth}
+\def\panelheight{\eqepanelheight}
+\newcounter{panel@cnt}
+% \end{macrocode}
+% \DescribeMacro{panel} environment goes inside the \texttt{splitsolution}
+% environment. Permissible values of the first parameter are \texttt{r} and
+% \texttt{l}, the default being \texttt{l}. This is the alignment parameter.
+% The second argument is the width of the panel.
+% \begin{macrocode}
+\def\panel{\def\eqe@panelir{\eqe@paneli[r]}%
+ \@ifnextchar[{\eqe@paneli}
+ {\@ifnextchar\relax{\expandafter\eqe@panelir\@gobble}%
+ {\eqe@paneli[r]}}%
+}
+% \end{macrocode}
+% We continue the \texttt{panel} environment.
+% \begin{macrocode}
+\def\eqe@paneli[#1]{%
+ \gdef\ss@Argi{#1}\def\eqe@l{l}\def\eqe@r{r}%
+ \ifx\ss@Argi\@empty\gdef\ss@Argi{r}\else
+ \ifx\eqe@l\ss@Argi\else\ifx\eqe@r\ss@Argi\else
+ \PackageError{eqexam}{Permissible arguments for panel are l and r}
+ {Use l or r for the argument of panel.}\fi\fi\fi
+ \stepcounter{panel@cnt}%
+ \immediate\openout \panel@write panel\thepanel@cnt.cut
+% \end{macrocode}
+% Manage the \texttt{h}, \texttt{H}, and global overrides.
+% \begin{macrocode}
+ \if\currhideopt H%
+ \eqe@IWO\panel@write{\vfill}%
+ \immediate\closeout\panel@write
+ \gdef\ss@Argii{0pt}%
+ \else
+ \if\currhideopt h\ifeq@solutionsafter\else
+ \ifeq@globalshowsolutions\else
+ \eqe@IWO\panel@write{\vfill}%
+ \immediate\closeout\panel@write
+ \gdef\ss@Argii{0pt}%
+ \fi\fi
+ \fi
+ \fi
+ \begingroup
+% \end{macrocode}
+% Write the contents of this environment to the file
+% \texttt{panel\string\thepanel@cnt.cut}.
+% \begin{macrocode}
+ \let\verbatim@out\panel@write
+% \end{macrocode}
+% We begin by writing \verb!\panelGetDimen{%! to the CUT file
+% \begin{macrocode}
+ {\lccode`C=`\%\lccode`P=`\{
+ \lowercase{\eqe@IWO\verbatim@out{\string\panelGetDimen PC}}}%
+% \end{macrocode}
+% Followed by the verbatim listing of the \texttt{panel} environment.
+% \begin{macrocode}
+ \verbatimwrite
+}
+\def\endpanel{%
+ \endverbatimwrite
+% \end{macrocode}
+% After the verbatim write, we write \verb!}! to close off the argument
+% of \cs{panelGetDimen}.
+% \begin{macrocode}
+ {\lccode`P=`\}\lowercase{\eqe@IWO\verbatim@out{P}}}%
+ \immediate\closeout\panel@write
+ \endgroup
+% \end{macrocode}
+% The command \cs{eqePANEL} cut does all the work at the end of this environment.
+% We first \cs{let} \cs{panelGetDimen} to \cs{getDimenSSPanel} and input the
+% CUT file. This loads the panel contents into \cs{eqpanelbox}, and gets their
+% dimensions. We set the value of \cs{ss@Argiii} which is the width parameter
+% of the \texttt{splitsolution} environment. \cs{mp@Width} calculates the width.
+% \begin{macrocode}
+ \gdef\eqePANELCUT{%
+ \let\panelGetDimen\getDimSSPanel
+ \input{panel\thepanel@cnt.cut}%
+ \setlength{\eq@tmpdima}{\ss@Argiii}%
+ \xdef\ss@Argiii{\the\eq@tmpdima}%
+ \xdef\mp@Width{\ifeq@solutionsafter\linewidth
+ \else\linewidth-\ss@Argiii-\panelgap\fi}%
+ }\aftergroup\eqePANELCUT
+}
+% \end{macrocode}
+% \cs{eqe@IW} is a macro that either writes verbatim text (\texttt{\#1}), or
+% it gobbles the argument, depending on whether have \texttt{solutionsafter}, \texttt{nosolutions},
+% hidden or not hidden.
+% \begin{macrocode}
+\long\def\eqe@IW#1{%
+ \ifeq@solutionsafter
+ \let\eqe@next\@empty
+ \else
+ \def\eqe@next{\eqe@IWO\verbatim@out{#1}}%
+ \ifeq@nosolutions\else
+ \if\currhideopt H%
+ \gdef\ss@Argii{0pt}\let\eqe@next\@empty
+ \else
+ \if\currhideopt h%
+ \ifeq@globalshowsolutions\else
+ \gdef\ss@Argii{0pt}\let\eqe@next\@empty
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \eqe@next
+}
+% \end{macrocode}
+% The \texttt{splitsolution} environment \cs{let}s the solution environment
+% to the internal \texttt{@ssSolution} environment. It performs various tasks
+% then turns it over to the old solution environment, which has been \cs{let}
+% to \cs{@sssolution}.
+% \begin{macrocode}
+\newenvironment{@ssSolution}[1][\ss@Argii]%
+{%
+ \def\eqe@argi{#1}\ifx\eqe@argi\@empty\else
+% \setlength{\eq@tmpdima}{#1}%
+%
+ \let\soln@keys@nLines\@empty
+ \edef\panelheight{\the\panelheight}%
+ \edef\panelwidth{\the\panelwidth}%
+ \edef\temp@exp{\noexpand
+ \setkeys*{soln@keys}{#1}}\temp@exp
+% \setkeys*{soln@keys}{#1}%
+ \ifx\soln@keys@nLines\@empty
+ \edef\ss@Argii{\XKV@rm}%
+ \else
+ \@tempdima\wlVspace\relax
+ \@tempdima=\soln@keys@nLines\@tempdima
+ \edef\ss@Argii{\the\@tempdima}%
+ \ifx\XKV@rm\@empty\else
+ \if@equsedim\edef\ss@Argii{\XKV@rm}\fi\fi
+ \fi
+ \setlength{\eq@tmpdima}{\ss@Argii}%
+% \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
+% \end{macrocode}
+% If the \texttt{panelheight} is greater than the requested height,
+% we make the requested height equal to \texttt{panelheight}.
+% \begin{macrocode}
+ \ifdim\eqepanelheight>\eq@tmpdima
+ \eq@tmpdima\eqepanelheight\fi
+ \xdef\ss@Argii{\the\eq@tmpdima}%
+ \fi
+% \end{macrocode}
+% We calculate the depth of the solutions; this is generally the values
+% passed to use as the optional argument, and encapsuled by \cs{ss@Argii}.
+% \begin{macrocode}
+ \xdef\eqedepth{%
+ \ifvspacewithsolns\ss@Argii\else
+ \ifeq@nosolutions\ss@Argii\else
+ \ifeq@solutionsafter\ss@Argii\else0pt\fi\fi\fi}%
+% \end{macrocode}
+% The width is either \cs{linewidth} or \verb!\linewidth-\ss@Argiii-\panelgap!,
+% where \cs{ss@Argiii} is the width of the panel.
+% \begin{macrocode}
+ \xdef\mp@Width{\ifeq@solutionsafter\noexpand\linewidth\else
+ \noexpand\linewidth-\ss@Argiii-\panelgap\fi}%
+% \end{macrocode}
+% If its a left panel\dots
+% \begin{macrocode}
+ \if\ss@Argi l%
+ \ifeq@solutionsafter
+ \def\eqe@lPanel{\parbox[b][\eqedepth][t]{\ss@Argiii}
+% \end{macrocode}
+% Here, and elsewhere, we \cs{let} \cs{panelGetDimen} to \cs{relax} when we
+% want to purely input the CUT file in the solution.
+% \begin{macrocode}
+ {\let\panelGetDimen\relax
+ \input{panel\thepanel@cnt.cut}\vfill}\hfill}%
+ \def\eqe@rPanel{\@empty}%
+ \else
+% \end{macrocode}
+% For the left panel, we need to subtract \cs{eqemargin}
+% \begin{macrocode}
+ \def\eqe@subleftgutter{-\string\eqemargin}%
+ \def\eqe@lPanel{%
+ \string\parbox[b][\string\eqedepth]{\ss@Argiii}%
+ {\string\let\string\panelGetDimen\string\relax
+ \string\input{panel\thepanel@cnt.cut}%
+ \string\vfill}\string\hfill^^J}%
+ \def\eqe@rPanel{\@empty}%
+ \fi
+ \else
+% \end{macrocode}
+% If its a right panel\dots
+% \begin{macrocode}
+ \ifeq@solutionsafter
+ \def\eqe@lPanel{\@empty}%
+ \def\eqe@rPanel{%
+ \hfill\parbox[b][\eqedepth][t]{\ss@Argiii}
+ {\let\panelGetDimen\relax
+ \hfill\input{panel\thepanel@cnt.cut}\vfill}}%
+ \else
+% \end{macrocode}
+% For the right panel, we do not to subtract \cs{eqemargin} as above.
+% \begin{macrocode}
+ \let\eqe@subleftgutter\@empty
+ \def\eqe@lPanel{\@empty}%
+ \def\eqe@rPanel{%
+ \string\hfill\string\parbox[b][\string\eqedepth]%
+ {\ss@Argiii}{\string\endgraf%
+ \string\noindent\string\hfill%
+ \string\let\string\panelGetDimen\string\relax
+ \string\input{panel\thepanel@cnt.cut}%
+ \string\vfill}}%
+ \fi
+ \fi
+ \let\verbatim@out\ex@solns
+ \par\ifeq@solutionsafter\smallskip\fi
+% \end{macrocode}
+% Since everything is put a box, we set the \cs{linewidth}, and
+% set \cs{solutionparshape} to \cs{@empty}.
+% \begin{macrocode}
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi %%dps
+ \let\solutionparshape\@empty
+ \noindent\minipage{\linewidth}%
+ \if\ss@Argi l\noindent\parbox[b][\eqedepth][t]{\ss@Argiii}%
+ {\vfill}\hfill\fi
+ \minipage[b][\eqedepth][t]{\mp@Width}%
+ {\lccode`C=`\%\lowercase{\eqe@IW{%
+ \string\def\string\panelgap{\panelgap}%
+ \string\setlength{\string\panelwidth}{\ss@Argiii}%
+ \string\def\string\eqedepth
+ {\ifeq@nosolutions\ss@Argii\else\ss@Argii\fi}C}}}%
+ {\lccode`C=`\%\lowercase{\eqe@IW{%
+ \string\strut\string\noindent%
+% \string\strut\par\string\nobreak\string\noindent%
+ \string\hbox\space to\string\linewidth\bgroup^^J%
+ \eqe@lPanel\string\minipage[b][\string\eqedepth][t]%
+ {\string\linewidth\eqe@subleftgutter%
+ -\string\panelwidth-\string\panelgap}C
+ }}}%
+ \ifeq@solutionsafter
+ \noindent\strut\hbox to\linewidth\bgroup
+ \eqe@lPanel
+ \minipage[b][\eqedepth][t]{\linewidth-\ss@Argiii-\panelgap}%
+ \def\solutionsafterSkip{}%
+ \fi
+% \end{macrocode}
+% Here, we start the original definition of the solutions environment, which was \cs{let}
+% to \cs{@sssolution}.
+% \begin{macrocode}
+ \ifx\soln@keys@nLines\@empty
+ \edef\passedss@Argii{\ss@Argii}\else
+ \edef\passedss@Argii{\ss@Argii,nLines=\soln@keys@nLines}\fi
+ \expandafter\@sssolution\expandafter[\passedss@Argii]%
+}{%
+ \eqe@IW{\string\endminipage\eqe@rPanel\egroup}%
+ \ifeq@solutionsafter\endminipage\eqe@rPanel\egroup\fi
+ \end@sssolution
+ \endminipage\endminipage
+}
+% Redefine the \cs{paragraph} command
+% \begin{macrocode}
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{12pt}{-3pt}{\bfseries}}
+% \end{macrocode}
+% \begin{macro}{\defaultInstructions}
+% For the \texttt{instructions} environment, defined next, the default string
+% for the instructions is \cs{eq@default@Instructions}, this command is
+% defined using \cs{defaultInstructions}.
+% \begin{macrocode}
+\newcommand{\defaultInstructions}[1]{\def\eq@default@Instructions{#1}}
+\defaultInstructions{Instructions.}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{instructions}
+% Each test, or a part of a test usually have instructions. This \texttt{instruction}
+% environment is used in this purpose. Normally, the number of points for the part is
+% displayed following the heading (the default is \textbf{Instructions.}). You can
+% eliminate the total points from the instructions by taking the \texttt{nosummarytotals}
+% option.
+%
+% \begin{macrocode}
+\newcommand{\beforeInstrSkip}{1ex}
+\newcommand{\afterInstrSkip}{-0em}
+\newcommand\hInstrSpace{\ }
+\newcommand\styleInstr{\bfseries}
+\newenvironment{instructions}[1][\eq@default@Instructions]{%
+% \end{macrocode}
+% If \cs{summaryPointTotal} is zero, show no summary points.
+% \begin{macrocode}
+ \@ifundefined{\thisexamlabel total}{\let\eq@nosummarytotals\eqe@YES}
+ {\ifnum\summaryPointTotal=0 \let\eq@nosummarytotals\eqe@YES\fi}%
+ \expandafter\def\expandafter\eq@argi\expandafter{#1}%
+ \def\hsi{\hInstrSpace}%
+% \end{macrocode}
+% We start a paragraph environment
+% \begin{macrocode}
+ \@startsection{paragraph}{4}{\z@}%
+ {\beforeInstrSkip\space\@plus1ex \@minus.2ex}%
+ {\afterInstrSkip}{\normalfont\normalsize\styleInstr}*%
+ {\textcolor{\@instructionsColor}{#1}\normalcolor%
+ \ifx\eq@nosummarytotals\eqe@YES\else\ifx\eq@argi\@empty\else\hsi\fi
+ {\normalfont\summaryTotalsTxt}\hsi\fi}\hskip-\lastskip
+ \ifx\eq@nosummarytotals\eqe@YES\ifx\eq@argi\@empty\else\hsi\fi\fi
+ \normalfont\normalsize\ignorespaces
+}{\par\vskip\beforeInstrSkip\relax}
+% \end{macrocode}
+% \cmd{\summaryPointTotal}\DescribeMacro{\summaryPointTotal} contains the total points
+% for the current exam; the command \cmd\summaryTotalsTxt\DescribeMacro\summaryTotalsTxt\ defines its the formatting
+% for the points. The command \cmd\nQuesInExam\DescribeMacro\nQuesInExam\ is the total number
+% of questions in the exam.
+% \begin{macrocode}
+\newcommand\summaryPointTotal{\csname\thisexamlabel total\endcsname}
+\newcommand\summaryTotalsTxt{($\eqe@ptsFmt{\summaryPointTotal}\,\text{%
+ \@ifundefined{\thisexamlabel total}{\eqpointsLabel}%
+ {\ifnum\summaryPointTotal=1\relax\eqpointLabel\else
+ \eqpointsLabel\fi}}$)}
+\newcommand{\nQuesInExam}[1][\thisexamlabel]{%
+ \def\eqe@argi{#1}%
+ \ifx\thisexamlabel\@empty\ifx\eqe@argi\thisexamlabel
+ \PackageError{eqexam}{The optional argument for
+ \string\nQuesInExam\MessageBreak must be specified}{}\fi\fi
+ \csname#1nQuestions\endcsname}
+% \end{macrocode}
+% \end{environment}
+% Make this definition for \texttt{hyperref}, so its anchors will be unique. Useful
+% when there are multiple parts of the test.
+% \begin{macrocode}
+\ifx\hyper@anchor\@undefined\else
+ \renewcommand\theHeqquestionnoi
+ {\curr@quiz.\theeqquestionnoi\eqe@fpmrk}
+ \renewcommand\theHquizno{%
+ \if\probstar*\curr@quiz.%
+ \theeqquestionnoi.part\thepartno.\arabic{quizno}%
+ \else
+ \curr@quiz.%
+ \theeqquestionnoi.\arabic{quizno}%
+ \fi
+ }
+ \renewcommand\theHpartno{\curr@quiz.%
+ \theeqquestionnoi.part\thepartno}
+\fi
+% \end{macrocode}
+% \begin{environment}{eqComments}
+% Often, I want to make additional instructions between problems, you can use
+% this comment environment.
+% \begin{macrocode}
+\newcommand{\beforeCommentSkip}{1.25ex}
+\newcommand{\afterCommentSkip}{-1ex}
+\newcommand\hCommSpace{\ }
+\newcommand\styleComm{\bfseries}
+\newenvironment{eqComments}[1][\strut]{\removelastskip
+ \def\eqe@argi{#1}\def\eqe@Strut{\strut}\def\hsc{\styleComm}%
+ \@startsection{paragraph}{4}{\z@}%
+ {\beforeCommentSkip\space\@plus1ex \@minus.2ex}%
+ {\afterCommentSkip}{\normalfont\normalsize\styleComm}*%
+ {\textcolor{\@eqCommentsColor}{#1}}%
+ \ifx\eqe@argi\eqe@Strut\hskip\afterCommentSkip
+ \else\ifx\eqe@argi\@empty\hskip\afterCommentSkip\else
+ \hsc\strut\fi\fi\normalfont\normalsize
+ \color{\@eqCommentsColorBody}\ignorespaces
+}{\par\vskip\beforeCommentSkip\space\@plus1ex \@minus.2ex}
+% \end{macrocode}
+% \end{environment}
+% \subsection{The \texttt{exam} Environment}
+% Each part of the exam is enclosed in an \texttt{exam} environment. The environment is
+% a customized version of the \texttt{shortquiz} environment.
+% \begin{macro}{\exambegdef}
+% Some definitions that are executed at the beginning of each exam environment.
+% \begin{macrocode}
+\let\tb@beginexam@code\relax
+\def\partialspillovertotals{0}
+\def\exambegdef
+{%
+ \csname\thisexamlabel pagemark\endcsname
+ \@ifundefined{partialtotalpg}{}{%
+ \ifnum\partialtotalpg=\arabic{page}%
+ {\count0=\partialspillovertotals
+ \advance\count0by\partialtotaleoe
+ \xdef\partialspillovertotals{\the\count0}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {Page\partialtotalpg spilltotal}{\partialtotaleoe}}%
+ }%
+ \fi
+ }%
+ \csarg\ifx{\thisexamlabel pageno}\relax
+ \else
+ \csarg\ifx{pagenofirstprob\thisexamlabel}\relax
+ \else
+ \csarg\ifnum{\thisexamlabel pageno}
+ < \@nameuse{pagenofirstprob\thisexamlabel}%
+ \else
+ \csarg\ifx{\thisexamlabel pagemark}\relax
+ \else
+ \ifnum\value{page}=%
+ \csname\thisexamlabel pageno\endcsname
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {\thisexamlabel pagemark}{\string\newpage}}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \setcounter{eqquestionnoi}{0}\setcounter{eqpointvalue}{0}%
+ \setcounter{eqpointsofar}{0}\setcounter{eqpointsthispage}{0}%
+ \setcounter{eq@count}{0}%
+% \end{macrocode}
+% We wrote \verb!\begin{eqequestions}! to the top of the solutions file (\cs{jobname.sol}.
+% \begin{macrocode}
+ \writeBeginEqeQuestions
+% \end{macrocode}
+% \begin{macrocode}
+ \label{\thisexamlabel PageBegin}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {\thisexamlabel pageno}{\thepage}}%
+% \let\sq@priorhook\@empty
+ \ifeqfortextbook
+ \global\examenvtrue\tb@beginexam@code
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\examenddef}
+% Some definitions that are executed at the end of each exam environment.
+% We place a totals box to report the total since the last page.
+% \begin{macrocode}
+\def\tb@insmargmark{\ifisinstred\ifismarginans
+ \insMidMarg{\mark{}}\fi\fi}
+\def\eqe@adjForSepRule{\if\eq@parttotals\eqe@YES
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \advance\eq@pointboxtotalheight\pointsmarginparpush
+ \vspace*{\eq@pointboxtotalheight}\fi}
+\def\eqe@afterexamsepcode{% dps7
+ \if\eq@parttotals\eqe@YES
+ \@actionsAtPageBreak{\global\let\@spacetobreak1}%
+ {\global\let\@spacetobreak0}%
+ \ifx\@spacetobreak0\relax
+ \bgroup\@tempdima=\pagetotal
+ \advance\@tempdima\eq@pointboxtotalheight
+ \ifdim\@tempdima>\pagegoal\aftergroup\newpage
+ \else\ifnum\arabic{eq@count}>0\relax
+ \removelastskip\vskip6pt\kern0pt %dps7
+ \if\@reportpoints\eqe@One\else\@checkSpacing{0}\fi
+ \textcolor{\endexamtotal@color}%
+ {\eqeomarginbox{\arabic{eq@count}}{0}}\fi
+ \ifx\eqx@separationrule\eqe@YES
+ \separationrule\eqe@adjForSepRule\fi
+ \fi\egroup
+ \fi
+ \else\ifx\eqx@separationrule\eqe@YES
+ \separationrule\eqe@adjForSepRule\fi
+ \fi
+}
+\def\examenddef
+{%
+ \global\let\partialtotaleoe\relax
+ \global\let\partialtotalpg\relax
+ \global\let\afterexamsepcode\relax
+ \csarg\ifx{NumberOfParts}\relax
+ \else
+ \ifnum\value{eq@numparts}<\NumberOfParts
+ \setcounter{eq@count}{\value{eqpointvalue}}%
+ \addtocounter{eq@count}{-\value{eqpointsofar}}%
+ \xdef\partialtotaleoe{\arabic{eq@count}}%
+ \xdef\partialtotalpg{\arabic{page}}%
+% \end{macrocode}
+% See if there is enough room at the bottom of the page to place the end of exam
+% totals and to start a new exam, if any. If not, forget it, and start a new page.
+% \begin{macrocode}
+ \global\let\afterexamsepcode\eqe@afterexamsepcode % dps7
+ \fi
+ \fi
+ \ifeqfortextbook\global\examenvfalse\fi
+% \end{macrocode}
+% (2011/05/08) Just before the file is closed and input, we write the end
+% of the \texttt{eqequestions} environment, \verb!\end{eqequestions}!.
+% \begin{macrocode}
+ \writeEndEqeQuestions
+% \end{macrocode}
+% \begin{macrocode}
+ \writetotalstoaux
+ \addtocounter{page}{-1}%
+ \writelastpage[\thisexamlabel]\addtocounter{page}{1}%
+ \ifeqfortextbook\tb@insmargmark\fi
+}
+\def\@actionsAtPageBreak#1#2{%
+ \bgroup\@tempdima\pagegoal\advance\@tempdima-\pagetotal
+ \@tempdimb\@fvsizeskip\vsize
+ \ifdim\@tempdima < \@tempdimb #1\else #2\fi\egroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\separationrule}
+% For an exam with multiple parts, a separation rule is created, unless absorbed
+% into a page break. The command \cs{separationrule} defines this separation rule,
+% it can be redefined as desired.
+% \changes{v1.7a}{2007/12/10}
+%{
+% Added \cs{separationrule} so user's can redesign the separation rule
+% that is created between two parts of an exam.
+%}
+% \begin{macrocode}
+\newcommand{\separationrule}{\makebox[\linewidth-\eqemargin][c]%
+ {\rule{.67\linewidth}{.4pt}}}
+% \end{macrocode}
+% \end{macro}
+% (2011/05/08) This is a new environment that makes an exam into a list of problems.
+% This is an attempt to expand the use of \textsf{eqexam} to {\LaTeX}
+% documents. We give control over the page layout so an eqexam document
+% can be used within a textbook.
+% \begin{macrocode}
+\def\eqe@hspannerPrb{\ }
+\@ifundefined{ifwithsoldoc}{\newif\ifwithsoldoc\withsoldocfalse}{}
+\newcommand{\eqequestopsep}[1]{\def\eqeques@topsep{#1}}
+\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
+\newcommand{\eqequesitemsep}[1]{\def\eqeques@itemsep{#1}}
+\newcommand{\eqequeslistparindent}[1]{\def\eqeques@listparindent{#1}}
+\eqequestopsep{0pt}
+\eqequesparsep{0pt}
+\eqequesitemsep{0pt}
+\eqequeslistparindent{0pt}
+\newif\iffirstitem
+\def\eqeSolnItemMngt{\iffirstitem\global\firstitemfalse
+ \let\eqe@next\@empty\else\let\eqe@next\item\fi\eqe@next\relax}
+\newenvironment{eqequestions}{%
+ \begin{list}{}{%
+ \ifwithsoldoc\let\solnItemMngt\eqeSolnItemMngt\fi
+ \setlength{\labelwidth}{\eqemargin}%
+ \setlength{\parsep}{\eqeques@parsep}%
+ \setlength{\itemsep}{\eqeques@itemsep}%
+ \setlength{\topsep}{\eqeques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\eqeques@listparindent}%dps%
+ \ifwithsoldoc\settowidth{\labelsep}{\eqe@hspannerSoln}\else
+ \settowidth{\labelsep}{\eqe@hspannerPrb}\fi
+ \setlength{\leftmargin}{\labelwidth}%
+ }\ifwithsoldoc\global\firstitemtrue\fi\item\relax}{\end{list}}
+% \end{macrocode}
+% \begin{environment}{exam}
+% Each part of the exam is enclosed in an \texttt{exam} environment. The one
+% required parameter is the name of the part, for example, `Part1', `Part2'.
+% These should be one word, no white spaces, just letters and possibly numbers.
+% \begin{macrocode}
+\def\setDefaultfvsizeskip#1{\def\default@fvsizeskip{#1}%
+ \def\@fvsizeskip{#1}}
+\def\default@fvsizeskip{.3}
+\edef\@fvsizeskip{\default@fvsizeskip}
+\newcommand{\fvsizeskip}[1]{\def\@fvsizeskip{#1}}
+\def\autoExamName{exam\the\value{eq@numparts}}
+\def\nNumberOfP@rts{\csname NumberOfParts\endcsname}
+\abovesqskip{}
+\let\eqeWrtExamTitleToSolns\eqe@YES
+\def\wrtExamTitleInSolns{\let\eqeWrtExamTitleToSolns\eqe@YES}
+\def\noExamTitleInSolns{\let\eqeWrtExamTitleToSolns\eqe@NO}
+\let\thisexamlabel\@empty
+\let\isInExamEnv\eqe@NO
+\newenvironment{exam}[2][]
+{%
+ \makeRoomForProb{\@fvsizeskip\textheight}{0}%
+ \let\isInExamEnv\eqe@YES
+ \stepcounter{eq@numparts}%
+% \end{macrocode}
+% If \texttt{\#2} is empty, use \cs{autoExamName}
+% \begin{macrocode}
+ \def\eqexamargii{#2}\ifx\eqexamargii\@empty
+ \edef\eqexamargii{\autoExamName}\fi
+ \xdef\thisexamlabel{\eqexamargii}\xdef\curr@quiz{\eqexamargii}%
+ \def\eqexamargi{#1}\ifx\eqexamargi\@empty
+ \edef\eqexamargi{\eqexamargii}\fi
+ \expandafter\gdef\expandafter\thisUFexamlabel
+ \expandafter{\eqexamargi}%
+ \edef\eq@tmp{\the\partNames\string\\{\eqexamargii}}%
+ \global\partNames=\expandafter{\eq@tmp}%
+ \csarg\ifx{NumberOfParts}\relax\else
+\ifx\eqeWrtExamTitleToSolns\eqe@YES
+ \ifnum\nNumberOfP@rts=1\relax\else
+ \def\eqe@argi{#1}\ifx\eqe@argi\@empty
+ \eqe@writetoSolns{\eqexamargii}\eqe@writetoAux{\string
+ \csarg\string\gdef{userFriendly\eqexamargii}{\eqexamargii}}
+ \else
+ \eqe@writetoSolns{#1}\eqe@writetoAux{\string
+ \csarg\string\gdef{userFriendly#2}{#1}}
+ \fi
+ \fi\fi
+\fi
+ \exambegdef
+ \edef\temp@Exp{\noexpand\shortquiz\sqstar[\eqexamargii]}\temp@Exp
+% \expandafter\shortquiz\sqstar[\eqexamargii]%
+}{%
+ \examenddef
+% \end{macrocode}
+% \changes{v4.4}{2015/05/24}{Finish with a \cs{vskip} to clear the last
+% item or problem.}
+% \begin{macrocode}
+ \vskip\eqeques@parsep\relax\kern0pt %dps88
+ \endshortquiz
+ \aftergroup\afterexamsepcode % dps7
+ \par\penalty-100\vskip0pt
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\EQEcalculateAllTotals}
+% (4/22/11) Added the command \cs{EQEcalculateAllTotals}. The command is executed
+% as part of the \cs{maketitle} command. If \cs{maketitle} is not used for some reason
+% \cs{EQEcalculateAllTotals} can be executed just after \verb~\begin{document}~.
+% \begin{macrocode}
+\newcommand{\EQEcalculateAllTotals}{%
+ \begingroup
+% \end{macrocode}
+% We calculate the grand total of all the parts of the \texttt{exam} environments,
+% and we define \cs{eqeGrandTotal}, which contains the total.
+% \begin{macrocode}
+ \count\z@=0\relax
+ \def\\##1{\csarg\ifx{##1total}\relax\else
+ \advance\count\z@\csname##1total\endcsname
+% \end{macrocode}
+% \cs{thePartNames} list all named exam environments in the document, e.g.,
+%\begin{verbatim}
+% \\{Part1}\\{Part2}...\\{LastPart}
+%\end{verbatim}
+% \begin{macrocode}
+ \fi}\csname thePartNames\endcsname
+ \xdef\eqeGrandTotal{\the\count\z@}%
+ \ifnum\eqeGrandTotal=0 \else
+% \end{macrocode}
+% If there is a nonzero grandtotal, we move on to calculate
+% the percentages.
+% \begin{macrocode}
+ \def\\##1{\eqe@calc@percent{##1}}%
+ \csname thePartNames\endcsname\fi
+ \endgroup
+}
+% \end{macrocode}
+%
+% \begin{macro}{\eqe@calc@percent}
+% We go through the parts listed in \cs{thePartNames} and create a
+% calculation of the percentage for that part, and leave it in
+% \verb!\csname#1percent\endcsname!, which can be accessed
+% through the \cs{percentForPart} command, for example
+% \verb!\percentForPart{<part_name>}! might expand to \texttt{45.6\%}.
+% \begin{macro}{\nPctDecPts}
+% The number of decimal points to carry in the representation of the
+% percentage.
+% \begin{macrocode}
+\newcommand{\nPctDecPts}{1}
+\def\eqe@calc@percent#1{\@ifundefined{#1total}{%
+ \csarg\gdef{#1percent}{??}}{%
+% \end{macrocode}
+% If the \textsf{fp} package is not loaded, we use register arithmetic,
+% percentages are truncated to integers.
+% \begin{macrocode}
+ \csarg\ifx{FPdiv}\relax
+ \count2=\tot@lForPart{#1}%
+ \edef\expGT{\csname eqeGrandTotal\endcsname}%
+ \multiply\count2by100\relax\divide\count2by\expGT\relax
+ \csarg\xdef{#1percent}{\the\count2 }\else
+% \end{macrocode}
+% If the \textsf{fp} package is loaded, we use this package to calculate
+% the percentage, accurate to one decimal place.
+% \begin{macrocode}
+ \FPdiv{\eqe@pForPart}{\csname#1total\endcsname}%
+ {\csname eqeGrandTotal\endcsname}%
+ \FPmul{\eqe@pForPart}{\eqe@pForPart}{100}%
+ \FPround{\eqe@pForPart}{\eqe@pForPart}{\nPctDecPts}%
+ \csarg\xdef{#1percent}{\eqe@pForPart}\fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\def\writetotalstoaux{\eqe@IWO\@auxout{\string
+ \csarg\string\gdef{\thisexamlabel total}{\theeqpointvalue}}%
+ \eqe@IWO\@auxout{\string\csarg
+ \string\gdef{\thisexamlabel nQuestions}{\theeqquestionnoi}}%
+}
+\newcommand{\writelastpage}[1][]{\def\eqe@argi{#1}%
+ \ifx\eqe@argi\@empty\else\label{#1PageEnd}\fi
+ \eqe@IWO\@auxout{\string\csarg
+ \string\gdef{eqExamLastPage}{\arabic{page}}}%
+}
+\def\exlabel{}
+\def\sqlabel{}
+\def\exsolafter{\textit{Solution}:}
+\def\sqsolafter{\textit{Solution}:}
+% \end{macrocode}
+% The exercise labels in the body of the text. (2015/02/27) changed
+% the command \cs{exlabelformatwp} to incorporate other parameters.
+% \begin{macrocode}
+%\def\exlabelformat{\textbf{\theeqquestionnoi.\ }}
+\def\exlabelformat{\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerPrb}}
+\def\exlabelformatwp{\exlabelformat}
+% \end{macrocode}
+% The exercise labels for solutions at the end of the document
+% \begin{macrocode}
+\def\exsllabelformat
+ {\string\makebox[0pt][r]{\string\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerSoln}}}
+\def\exsllabelformatwp
+ {\string\makebox[0pt][r]{\string\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerSoln}}%
+ (\thepartno)\eqe@hspannerSoln}
+\ifanswerkey
+ \def\exrtnlabelformat{}
+ \def\exrtnlabelformatwp{}
+ \def\eq@sqslrtnlabel{}
+\else
+ \def\exrtnlabelformat{$\square$}
+ \def\exrtnlabelformatwp{$\square$}
+ \def\eq@sqslrtnlabel{$\square$}
+\fi
+\def\sqslrtnlabel{\eq@sqslrtnlabel}
+% \end{macrocode}
+% (2010/08/21) Enable some localizations of strings
+% \begin{macrocode}
+\newcommand{\exsectitletext}{Solutions to \webtitle}
+\def\exsectitle{\normalsize\exsectitletext}
+%\def\exsectitle{\normalsize\hspace*
+% {-\oddsidemargin}\exsectitletext}
+\@ifpackageloaded{exerquiz}{%{Solutions to \websubject}
+ \renewcommand{\exsecrunhead}{}}{\newcommand{\exsecrunhead}{}}
+%\providecommand{\exsecrunhead}{Solutions to \websubject}%
+\def\eq@sqslsectitle{}
+\def\eq@sqslsecrunhead{}
+\def\eq@sqsllabel{{\string\llap{\string\textbf{\theeqquestionnoi.\ }}}}
+\def\eq@sqlabel{}
+\let\include@quizsolutions\relax
+\let\solnhspace\@empty
+% \end{macrocode}
+% \subsection{\texttt{problem} Environments}
+% A single question is posed with the \texttt{problem} environment, and a question with
+% multiple parts with the \texttt{problem*} environment.
+% \begin{macro}{\fillin}
+% This macro is used for fill-in type questions. The first argument is the length
+% of the underline blank to leave to fill-in, the second argument is the correct answer.
+% \begin{macrocode}
+\newcommand{\optsFillIn}[1]{\def\eqe@optsFillIn{#1}}
+\let\eqe@optsFillIn\@empty
+\newcommand{\fillin}[3][u]{%
+ \ifx#1u\let\@fillinFmt\underbar
+ \else\ifx#1b\let\@fillinFmt\relax
+ \else\let\@fillinFmt\relax\fi\fi
+ \ifeq@proofing
+ \@fillinFmt{\makebox[#2]{%
+ \strut\hfil\bfseries\color{red}#3\hfil}}%
+ \else
+ \@fillinFmt{\makebox[#2]{\strut\hfil}}%
+ \@ifundefined{@quiz}{}{%
+ \if\eq@online\eqe@YES\relax
+ \ifeq@nosolutions
+ \ifeq@solutionsafter\else
+ \ifx\eq@insertverticalspace\eqe@YES\relax
+ \stepcounter{@cntfillin}%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.part\thepartno.%
+ fi\the@cntfillin%
+ \else
+ eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.fi\the@cntfillin%
+ \fi
+ }\makebox[0pt][r]{\textField[\BC{}
+ \presets{\eqe@optsFillIn}]{%
+ \fieldName}{#2}{11bp}}%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \fi\space\ignorespaces}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TF}
+% A specialized version of \cs{fillin} for True/False questions.
+% \begin{macrocode}
+\newcommand\defaultTFwidth{30pt}
+\newcommand\TF[2][\defaultTFwidth]{%
+ \def\eqe@next{\fillin{#1}{#2}}%
+ \ifdim\eq@extralabelsep=0pt\relax\else
+ \if\probstar*\relax\if\exerwparts@cols0
+ \def\eqe@next{\makebox[0pt][r]{%
+ \fillin{#1}{#2}}\ignorespaces}%
+ \fi\fi\fi
+\eqe@next}
+\def\fillinWidth#1{%
+ \if\probstar*
+ \settowidth{\eq@tmplengthA}{\normalfont\ }%
+ \addtolength{\eq@tmplengthA}{#1}%
+ \edef\eq@extralabelsep{\the\eq@tmplengthA}%
+ \fi
+}
+\let\fillInFormatDefault\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Do<num>}
+% The following commands supports the optional argument \texttt{{\string\Do<num>}}.
+% When I teach senior or graduate-level classes, I often give a problem with
+% multiple parts (each of equal value) and ask them to ``do 3 of the following 5''
+% parts.
+% \begin{macrocode}
+\def\eqe@DoWarning#1{\PackageWarning{eqexam}{\string#1\space
+ requires the first argument\MessageBreak of problem* to be <num>ea}}
+\def\eqe@DoNum{\textbf{??}\eqe@DoWarning{\DoNum}}
+\def\eqe@nDoNum{\textbf{??}\eqe@DoWarning{\nDoNum}}
+\let\DoNum\eqe@DoNum
+\let\nDoNum\eqe@nDoNum
+\def\makeDoNum#1{\xdef\nDoNum{#1}%
+ \def\ifc@sewrap{\ifcase#1??\or}%
+ \xdef\DoNum{\expandafter\ifc@sewrap\eqe@wordNums\else
+ \eqe@wordNumbsError\fi}}
+\def\makeOutOfNum#1{\xdef\nOutOfNum{#1}%
+ \def\ifc@sewrap{\ifcase#1??\or}%
+ \xdef\OutOfNum{\expandafter\ifc@sewrap\eqe@wordNums\else
+ \eqe@wordNumbsError\fi}}
+\def\eqe@OutOfNum{\textbf{??}\eqe@DoWarning{\OutOfNum}}
+\def\eqe@nOutOfNum{\textbf{??}\eqe@DoWarning{\nOutOfNum}}
+\let\OutOfNum\eqe@OutOfNum
+\let\nOutOfNum\eqe@nOutOfNum
+% \end{macrocode}
+% \DescribeMacro{\eqe@wordNums} is used to typeset the English word for
+% the numbers (1--10). This command may be redefined to other languages.
+% \begin{macrocode}
+\newcommand{\eqe@wordNums}{one\or two\or three\or
+ four\or five\or six\or seven\or eight\or nine\or ten}
+\newcommand{\eqe@wordNumbsError}{\noexpand\PackageError{eqexam}%
+ {Number out of range, 1--10}%
+ {Use a smaller number, or redefine the command
+ \string\eqe@wordNums.}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\makeRoomForProb#1#2{\par %\endgraf % dps 11/11/10
+ \bgroup\@nobreakfalse\addpenalty{-500}%
+ \setlength{\@tempdimb}{#1}%
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \ifdim \@tempdima<\@tempdimb\ifnum\col@number>\@ne\columnbreak
+ \else\newpage\fi\fi\egroup
+ \ifnum\@reportpoints>1
+ \ifx\eqe@prevProbZero\eqe@YES
+ \if\eqe@isPts0\else\vskip-\halfHtPtBox\relax\fi
+ \else
+ \ifl@stDispl@yPoints
+ \if\eqe@isPts0\@checkSpacing{1}\else
+ \if#21 \@checkSpacing{0}\fi
+ \fi\fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\emitMessageNearBottom}
+% The syntax for this command is
+%\begin{verbatim}
+% \emitMessageNearBottom*[vspace]{msg}
+%\end{verbatim}
+% If there is less than \texttt{vspace} remaining on the page, a message,
+% \texttt{msg}, is emitted. Then the optional \texttt{*} appears, a
+% \cs{newpage} is also emitted just after the \texttt{msg} and
+% \cs{insertContAnnot} is expanded just after \cs{newpage}.
+% \begin{macrocode}
+\newcommand{\emitMessageNearBottom}{\@ifstar
+ {\def\eqe@emnb{\ifnum\col@number>\@ne\columnbreak
+ \else\newpage\fi\insertContAnnot}\eq@emitMessageNearBottom}
+ {\let\eqe@emnb\relax\eq@emitMessageNearBottom}}
+\newcommand{\eq@emitMessageNearBottom}[2][\iacvspace]{%
+ \eq@@emitMessageNearBottom{#1}{#2}}
+\def\eq@@emitMessageNearBottom#1#2{\par
+ \bgroup\@nobreakfalse\addpenalty{-500}%
+ \setlength{\@tempdimb}{#1}%
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \ifdim \@tempdima<\@tempdimb #2 \eqe@emnb\fi\egroup}
+% \end{macrocode}
+% \end{macro}
+% \DescribeMacro{\getSpaceLeftOnPage}\cmd{\getSpaceLeftOnPage} calculates
+% the amount of space left on the current page. It saves the calculation
+% in the text macro \DescribeMacro{\amtSpaceOnLeftOnPage}\cmd{\amtSpaceOnLeftOnPage}.
+% \begin{macrocode}
+\newcommand{\getSpaceLeftOnPage}{\par\bgroup
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \xdef\amtSpaceOnLeftOnPage{\the\@tempdima}\egroup}
+% \end{macrocode}
+% \begin{macro}{\promoteNewPage}
+%\changes{v2.0n}{2011/05/13}{%
+% A simple variation on \cs{makeRoomForProb} designed for user use.
+%}
+% A simple variation on \cs{makeRoomForProb} designed for user use.
+% \begin{macrocode}
+\newcommand{\pnpDflt}{\@fvsizeskip\textheight}
+\newcommand{\promoteNewPage}[1][\pnpDflt]{%
+ \makeRoomForProb{#1}{0}}
+% \end{macrocode}
+% \end{macro}
+% Used in \cmd{\makeRoomForProb} and elsewhere. \DescribeMacro{\pointsmarginparpush}
+% \cs{pointsmarginparpush} adds a little more separation between point
+% boxes. \DescribeMacro{\@checkSpacing}\cmd{\@checkSpacing} is the algorithm
+% for adjusting the vertical spaces between problems when points are on the
+% right.
+% \begin{macrocode}
+\def\pointsmarginparpush{3pt}
+\def\@checkSpacing#1{\bgroup\ifinner\else
+ \@tempdima\lastPageTotal
+ \@tempdimb\pagetotal
+% \end{macrocode}
+% If \cs{lastPageTotal} is less than \cs{pagetotal}, continue
+% \begin{macrocode}
+ \ifdim\@tempdima < \@tempdimb
+% \end{macrocode}
+% Compute \texttt{\cs{pagetotal} - \cs{lastPageTotal}}
+% \begin{macrocode}
+ \advance\@tempdimb by-\@tempdima
+ \ifdim\@tempdimb < \eq@pointboxtotalheight
+ \if#11%
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \fi
+ \@tempdima=\eq@pointboxtotalheight
+ \advance\@tempdima\pointsmarginparpush\relax
+ \advance\@tempdima by-\@tempdimb
+ \vspace*{\@tempdima}%
+ \fi
+ \fi\fi
+\egroup}
+\def\@checkSpacingi{\bgroup
+ \@tempdima = \lastPageTotal
+ \@tempdimb = \pagetotal
+ \ifdim\@tempdima < \@tempdimb
+ \advance\@tempdimb by-\@tempdima
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \ifdim\@tempdimb < \eq@pointboxtotalheight
+ \@tempdima=\eq@pointboxtotalheight
+ \advance\@tempdima\pointsmarginparpush\relax
+ \advance\@tempdima by-\@tempdimb
+ \vspace*{\@tempdima}%
+ \fi
+ \fi
+\egroup}
+% \end{macrocode}
+% \DescribeMacro{\default@nbaselineskip} is the default number of \cs{baselineskip}s needed to place
+% a new problem. While \DescribeMacro{\nbaselineskip}\cmd{\nbaselineskip} is the number
+% of \cs{baselineskip}s needed for a new \texttt{problem} (or \texttt{problem*}).
+% \begin{macrocode}
+\newcommand{\setDefaultnbaselineskip}[1]{\def\default@nbaselineskip{#1}}
+\setDefaultnbaselineskip{6}
+\def\nbaselineskip#1{\def\@nbaselineskip{#1}}
+\def\nbaselineskipReset{\edef\@nbaselineskip{\default@nbaselineskip}}
+\nbaselineskipReset
+% \end{macrocode}
+% \begin{environment}{problem}
+% The \texttt{problem} is used to pose a single---non-multi-part---question.
+% The optional argument is the number of points for this problem.
+% \begin{macrocode}
+\def\eqe@gobbletoend#1\end{}
+\def\eqe@grabarg#1\end{\def\numpoints{#1}}
+\def\eqe@isPts{1}
+% \end{macrocode}
+% We reset some \textsf{exerquiz} parameters for \textsf{eqexam}
+% \begin{macrocode}
+\aboveexskip{3pt}\belowexskip{3pt}
+\partstopsep{3pt}\partsitemsep{3pt}\partsparsep{0pt}
+\rowsepDefault{3pt}\partstabcolsep{1.5pt}%
+\partstabtopsep{3pt}\partstabrowsep{3pt}
+\renewcommand\belowexsolnskip{{}}%
+% \end{macrocode}
+% The \textsf{problem} environment now begins.
+% \begin{macrocode}
+\let\isProbEnv\eqe@NO
+\let\topofprobhook\relax
+\newenvironment{problem}[1][]{\let\isProbEnv\eqe@YES
+ \if\eqe@isPts0\global\let\eqe@prevProbZero\eqe@YES\else
+ \global\let\eqe@prevProbZero\eqe@NO\fi
+ \global\thereissolutionfalse
+ \def\numpointsEmpty{0}\def\numpoints{#1}%
+ \ifx\numpoints\@empty\def\numpoints{0}\def\numpointsEmpty{1}%
+ \gdef\eqe@isPts{0}\else\gdef\eqe@isPts{1}\fi
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{\eqe@isPts}%
+ \gdef\probstar{x}\let\afterlabelhskip\@empty
+ \ifx\marginpoints\@empty\else %\def\numpoints{#1}%
+ \if\numpointsEmpty\eqe@One\let\marginpoints\@gobbletwo\fi
+% \end{macrocode}
+%\changes{v2.0n}{2011/05/13}{%
+% Added \texttt{*<num>} to signal in-line display of points.
+%}
+% (2011/5/13) We add a \texttt{*} feature. When the author types
+% \texttt{[*3]}, it is a three point problem, but the value is expressed
+% in-line, not in the margins.
+% \begin{macrocode}
+ \@ifstar{\let\@isitstar\eqe@One\eqe@grabarg}%
+ {\let\@isitstar\eqe@Zero\eqe@gobbletoend}#1\end
+ \if\@isitstar\eqe@One\addtocounter{eqpointvalue}{\numpoints}%
+ \@marktotalvalue
+ \ifdispl@yPoints
+ \def\marginparafterhook{\PTs{\numpoints}\space}\else
+ \def\marginparafterhook{\PTs*{\numpoints}\space}\fi\else
+ \def\marginparpriorhook{\noindent
+ \probvalue{\numpoints}{0}}\fi
+ \fi\setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \ifnum\value{eq@count}=1\relax
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{pagenofirstprob\thisexamlabel}{\thepage}}%
+ \fi
+% \end{macrocode}
+% \changes{}{2015/06/01}{Added the hook \cs{topofprobstarhook}}
+% \DescribeMacro\topofprobhook is a general purpose hook at the top of the
+% \texttt{problem} environment, before the beginning of the nested
+% \texttt{eqequestions} environment.
+% \begin{macrocode}
+ \topofprobhook
+% \end{macrocode}
+% \changes{v3.1e}{2012/11/10}{Removed hard-wired \cs{proofingsymbol}}
+% \begin{macrocode}
+% \proofingsymbol{\ding{52}}%
+ \begin{eqequestions}%
+ \begin{exercise}[eqquestionnoi]%
+}{\end{exercise}%
+ \end{eqequestions}%
+ \ifeqlocalversion\ifeqglobalversion
+ \xdef\eqe@tmp{\noexpand\forVersion{\eq@selectedVersion}}%
+ \aftergroup\eqe@tmp
+ \fi\fi
+ \global\eqlocalversionfalse
+ \ifdispl@yPoints\global\l@stDispl@yPointstrue
+ \else\global\l@stDispl@yPointsfalse\fi
+ \global\let\eqe@fpmrk\@empty
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\PTs}
+% \begin{macro}{\itemPTsTxt}
+% \begin{macro}{\itemPTsFormated}
+% When you specify \cs{auto} for the optional argument of the \texttt{problem*}
+% environment, when each item must have the command \cs{PTs} to assign the
+% value of that question. The \cs{PTs} has one optional star-parameter, and one
+% required parameter. The required parameter is the number of points for this item,
+% if the \texttt{*} is specified, then the point value is not typeset in the document.
+%
+% The command \cs{itemPTsTxt} has one argument, the number of points for this item. This
+% argument is passed from the \cs{PTs} command. You can redefine the way the points appear
+% in the document using \cs{itemPTsTxt}. As separate command \cs{itemPTsFormated} is used to
+% put parentheses around \cs{itemPTsTxt}. If the \texttt{*} option is taken with \cs{PTs}, then
+% you are free to place \cs{itemPTsTxt} anywhere in the problem statement.
+% \changes{v1.6g}{2006/11/29}
+%{
+% Added \cs{itemPTsTxt} and \cs{itemPTsFormated} to work with \cs{PTs}.
+% Also added a \texttt{*} option, to \cs{PTs}, in this case the points
+% are not typeset.
+%}
+% \begin{macrocode}
+\newcommand\itemPTsTxt[1]{$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}$}
+\newcommand\itemPTsEaTxt[1]{$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi\space\eqeachLabel}$}
+\newcommand{\itemPTsFormated}[1]{(#1)}
+% \end{macrocode}
+% (2013/12/04) Added \DescribeMacro{\obeyPTsStar}\cmd{\obeyPTsStar} and
+% \DescribeMacro{\ignorePTsStar}\cmd{\ignorePTsStar}. The former is the default.
+% if \cmd{\ignorePTsStar} is in effect, \cs{PTs*} is treated as \cs{PTs}. Useful
+% for assigning points to parts of a question, but not explicitly telling the student.
+% when you compile for the key (with \texttt{answerkey} option), you can include
+% \cmd{\ignorePTsStar} so the instructor can see the assigned points for each part.
+% \begin{macrocode}
+\newif\ifObeyPTsStar \ObeyPTsStartrue
+\def\obeyPTsStar{\global\ObeyPTsStartrue}
+\def\ignorePTsStar{\global\ObeyPTsStarfalse}
+\def\PTs{\leavevmode\@ifstar{\@PTs{*}}{\@PTs{x}}}
+\def\@PTs#1#2{%
+ \if\@reportpoints\eqe@Zero\ignorespaces\else
+ \if\eqe@pointsPartsId\eqe@One
+ \addtocounter{eqpointvalue}{#2}\@marktotalvalue
+ \addtocounter{eq@count}{#2}\fi
+% \end{macrocode}
+% If \DescribeMacro{\ignorePTsStar}\cmd{\ignorePTsStar} is in effect
+% (\cmd{\ObeyPTsStarfalse}), we gobble
+% the \cs{else} and let the code flow through.
+% \begin{macrocode}
+ \if#1*\ifObeyPTsStar\ignorespaces\else\expandafter\@gobble\fi
+ \else
+% \end{macrocode}
+% (2012/04/26) Wrapped |\itemPTsFormated{\itemPTsTxt{#2}}| as the argument
+% of \cs{eqe@movePTs}. \cs{eqe@movePTs} does nothing by default, but may be
+% redefined, for example, to place the value of each part on the margin.
+% The default definition of \cs{eqe@movePTs} follows.
+% \begin{macrocode}
+ \eqe@movePTs{\itemPTsFormated{\itemPTsTxt{#2}}}\fi
+ \fi
+}
+\def\eqe@movePTs#1{#1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \DescribeMacro{\Do<num>} The \cs{isItD@} tests to see if the next token
+% is \cs{Do}, if yes, it marks it and calls \cs{y@st@Do}, which gets the argument
+% if the \cs{Do} token.
+% \begin{macrocode}
+\let\auto\relax
+\def\isItD@{\@ifnextchar\Do{\let\yest@D@\eqe@YES\y@st@Do}
+ {\let\yest@D@\eqe@NO\@gobblet@end}}
+\let\yest@D@\eqe@NO
+\let\D@Num\@empty
+\def\y@st@Do\Do#1\end{\gdef\D@Num{#1}}
+\def\@gobblet@end#1\end{}
+% \end{macrocode}
+% Test the argument to see if it is the \cs{auto} token
+% \begin{macrocode}
+\def\is@uto#1\auto#2\@nil{\def\eqe@argi{#1}\def\eqe@argii{#2}%
+ \ifx\eqe@argii\@empty\let\isit@uto\eqe@Zero\else
+ \let\isit@uto\eqe@One\fi
+}
+% \end{macrocode}
+%
+% \begin{environment}{problem*}
+%
+% The \texttt{problem*} environment is used to pose a multi-part question.
+% The \texttt{parts} environment is used to enumerate the parts.
+%\changes{v2.0c}{2011/01/11}{%
+% Changed \cs{@next} to \cs{eqe@next}. There was conflict in
+% the use of this command with one of the float environments. When user
+% used the table environment inside the problem* environment, the
+% compiled stopped because \cs{@next} was overwritten.
+%}
+% \begin{macrocode}
+% \end{macrocode}
+% We create a Id for the points specified by the first (and second) optional parameters:
+% 0 (total points specified); 1 (\cs{auto} specified); 2 (points each
+% specified); 4 (\cs{Do} second optional parameter); a value of \cs{relax} means
+% no points specified (the default).
+% \begin{macrocode}
+\let\eqe@pointsPartsId\relax
+% \end{macrocode}
+% \begin{macrocode}
+\def\leadinitemWarningStar{\PackageWarning{eqexam}
+ {Using the star (*) in front of the points\MessageBreak
+ designator is not allowed when there is a
+ \MessageBreak\string\leadinitem}}
+\def\tableadinWarningStar{\PackageWarning{eqexam}
+ {Using the star (*) in front of the points\MessageBreak
+ designator is not allowed when there is a
+ \MessageBreak\string\tableadin}}
+% \end{macrocode}
+% We now begin the code for the \texttt{problem*} environment.
+% \begin{macrocode}
+\let\isProbStarEnv\eqe@NO
+\let\topofprobstarhook\relax
+\csarg\def{problem*}{\let\isProbEnv\eqe@YES
+ \let\isProbStarEnv\eqe@YES
+ \global\thereissolutionfalse
+ \@ifnextchar[{\pr@bl@m@star}{\pr@bl@m@star[]}}
+\def\pr@bl@m@star[#1]{%
+ \@ifnextchar[{\pr@blem@star{#1}}{\pr@blem@star{#1}[]}}
+\def\pr@blem@star#1[#2]{%
+ \if\eqe@isPts0\global\let\eqe@prevProbZero\eqe@YES\else
+ \global\let\eqe@prevProbZero\eqe@NO\fi
+ \def\numpoints{#1}\ifx\numpoints\@empty
+ \gdef\eqe@isPts{0}\else\gdef\eqe@isPts{1}\fi
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{\eqe@isPts}%
+% \end{macrocode}
+% Let the \cs{Do} commands to internal versions
+% \begin{macrocode}
+ \let\DoNum\eqe@DoNum\let\nDoNum\eqe@nDoNum
+ \let\OutOfNum\eqe@OutOfNum\let\nOutOfNum\eqe@nOutOfNum
+% \end{macrocode}
+% \changes{v3.1e}{2012/11/10}{Removed hard-wired \cs{proofingsymbol}}
+% \begin{macrocode}
+% \proofingsymbol{\ding{52}}%
+ \gdef\probstar{*}%
+ \gdef\pr@b@secondarg{#2}\setcounter{eq@count}{0}%
+ \let\afterlabelhskip\@empty
+ \global\let\probpointseach\@empty\def\numpoints{#1}%
+% \end{macrocode}
+% Determine if the argument begins with \texttt{*}
+% \begin{macrocode}
+ \@ifstar{\let\@isitstar\eqe@One\eqe@grabarg}%
+ {\let\@isitstar\eqe@Zero\eqe@gobbletoend}#1\end
+% \end{macrocode}
+% If this \texttt{problem*} environment has a \cs{leadinitem}, the \texttt{*}
+% option is not allowed
+% \begin{macrocode}
+ \if\@isitstar\eqe@One
+ \@tempcnta=\theeqquestionnoi\relax
+ \advance\@tempcnta1\relax
+ \@ifundefined{leadinitem\thisexamlabel-\the\@tempcnta}{}
+ {\leadinitemWarningStar\let\@isitstar\eqe@Zero}%
+ \@ifundefined{tableadin\thisexamlabel-\the\@tempcnta}{}
+ {\tableadinWarningStar\let\@isitstar\eqe@Zero}%
+ \fi
+% \end{macrocode}
+% Check for the \cs{auto} keyword
+% \changes{v3.1a}{2012/05/21}{Using a more robust method of detecting the
+% presence of \cs{auto}}.
+% There are problems when the first two digits are the same, the old comparison
+% would say that the first parameter is \cs{auto}, which is it not. Replace
+% the old comparison with a more robust method.
+% \begin{macrocode}
+ \expandafter\is@uto\numpoints\auto\@nil
+ \if\isit@uto\eqe@One\let\eqe@pointsPartsId\eqe@One
+ \global\let\probpointseach\relax
+% \end{macrocode}
+% The author has requested \cs{auto}
+% \begin{macrocode}
+ \def\eqe@next{\autocalcparts}%
+ \else
+ \ifx\pr@b@secondarg\@empty\else
+ \let\eqe@pointsPartsId\eqe@Four
+ \isItD@#2\end\fi
+% \end{macrocode}
+% Not \cs{auto} so either \texttt{<num>ea} or \texttt{<num>}
+% \begin{macrocode}
+ \def\eqe@next{\manualcalcparts{\numpoints}}%
+ \fi\eqe@next
+% \end{macrocode}
+% 2012/11/30 added \cs{leadinitem} defined \texttt{eqexam.def} as a dummy command, which we
+% the \cs{let} here to \cs{eqe@leadinitem}.
+% \begin{macrocode}
+ \let\leadinitem\eqe@leadinitem
+% \end{macrocode}
+% 2015/05/31 added \cs{tableadin} defined \texttt{eqexam.def} as a dummy command, which we
+% the \cs{let} here to \cs{eqe@leadinitem}.
+% \begin{macrocode}
+ \let\tableadin\eqe@tableadin
+% \end{macrocode}
+% \changes{}{2015/06/01}{Added the hook \cs{topofprobstarhook}}
+% \DescribeMacro\topofprobstarhook is a general purpose hook at the top of the
+% \texttt{problem*} environment, before the beginning of the nested
+% \texttt{eqequestions} environment.
+% \begin{macrocode}
+ \topofprobstarhook
+ \ifeqfortextbook
+ \writeToSolnFile{\protect\global\protect\frstProbNumShownfalse}\fi
+ \begin{eqequestions}%
+ \begin{exercise}[eqquestionnoi]*}%
+% \end{macrocode}
+% \begin{macrocode}
+\def\ftb@endprobstarCks{%
+ \ifWithinANSGrp
+ \PackageError{eqexam}{\string\bGrpANS\space is still open}
+ {You need to match it with an \string\bGrpANS,
+ or remove it.}%
+ \fi
+}
+% \end{macrocode}
+%\DescribeMacro{\endproblem*} begins here.
+% \begin{macrocode}
+\csarg\def{endproblem*}{%
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{nPartsThisProb\thisexamlabel.\theeqquestionnoi}%
+ {\arabic{partno}}}%
+ \ifx\probpointseach\@empty\else
+ \ifx\probpointseach\auto
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{prob\thisexamlabel.\theeqquestionnoi}%
+ {\theeq@count}}%
+ \else
+ \setcounter{eq@count}{\value{partno}}%
+ \ifx\pr@b@secondarg\@empty\else
+ \bgroup\toks0=\expandafter{\pr@b@secondarg}%
+ \expandafter\isItD@\the\toks0 \end
+% \end{macrocode}
+% If there is a |\Do|, we write this info to AUX.
+% \begin{macrocode}
+ \ifx\yest@D@\eqe@YES\ifx\eqe@pointsEach\eqe@YES
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{DoNumThisProb\thisexamlabel.%
+ \theeqquestionnoi}{\D@Num}}%
+ \@tempcnta = \value{eq@count}%
+ \advance\@tempcnta -\D@Num
+ \global\advance\value{eq@count}-\@tempcnta
+% 3.0k
+ \@tempcnta=\value{partno}%
+ \advance\@tempcnta -\D@Num
+ \multiply\@tempcnta by\argi
+ \addtocounter{eqpointvalue}{-\@tempcnta}%
+ \fi\fi
+ \egroup
+ \fi
+ \multiply\value{eq@count}\argi
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{prob\thisexamlabel.\theeqquestionnoi}%
+ {\theeq@count}}%
+ \fi\fi
+ \end{exercise}%
+ \end{eqequestions}%
+ \ifeqfortextbook\ftb@endprobstarCks\fi
+ \ifeqlocalversion\ifeqglobalversion
+ \xdef\eqe@tmp{\noexpand\forVersion{\eq@selectedVersion}}%
+ \aftergroup\eqe@tmp
+ \fi\fi
+ \global\eqlocalversionfalse
+% \end{macrocode}
+% \changes{}{2015/06/02}{Added \cs{@marktotalvalue} which seems to solve a problem
+% with \texttt{multicols}. Sometimes the totals are not correct, they do not `migrate' out
+% as they should.}
+% \begin{macrocode}
+ \@marktotalvalue
+ \ifdispl@yPoints\global\l@stDispl@yPointstrue
+ \else\global\l@stDispl@yPointsfalse\fi
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\leadinitem}
+%\changes{v3.1f}{2012/11/27}{Created \cs{leadinitem} command for a lead in question
+% for the \texttt{parts*} environment.}
+% Some authors, no me among them, want to post a question with parts (\texttt{problem*}) without
+% an introductory sentence. Scandalous!
+%\begin{verbatim}
+%\begin{problem*}\relax
+%\leadinitem Prove that $4x^2\ge (x+1)^2$ for $x\ge1$.
+%\begin{solution} soln\end{solution}
+%\begin{parts}
+%\item Use the principle of mathematical induction to prove that
+% $4^n\geq3n^2$ for all positive integers $n$.
+%\begin{solution} soln\end{solution}
+%\end{parts}
+%\end{problem*}
+%\end{verbatim}
+% Below is my solution to this problem. There were changes in both \textsf{eqexam} and
+% \textsf{exerquiz} (\texttt{eqexam.def}). Here are the listing of changes for my future
+% reference.
+%\begin{itemize}
+% \item Defined \cs{eqe@leadinitem}, \cs{eqe@@leadinitem}, and \cs{leadinitem} below.
+% The first one mostly tests whether we are permitted to use the \cs{leadinitem} command.
+% If \cs{solutionparshape} is empty, the command may be used. (This gives a restriction
+% of only one use per a single \texttt{problem*} environment.) Control is passed
+% to \cs{eqe@@leadinitem} which does all the work.
+% \item In the definition of \cs{pr@blem@star} (part of the startup for \texttt{problem*} we
+% say \verb!\let\leadinitem=\eqe@leadinitem!
+% \item In the startup code for \texttt{exercise@parts@list} (\texttt{exerquiz})
+% lines containing \cs{solutionparshape} and \verb!\let\leadinitem\eq@leadinitemparts!
+% are found. Also, when the \texttt{parts} environment is complete, we restore the
+% default definition of \cs{leadinitem}, \verb!\let\leadinitem\leadinitem@external!.
+% \item In the definition of \cs{eqe@@leadinitem}, we also define \cs{solutionparshape}
+% to help control the paragraphs for this delicate problem of a lead-in item. Its
+% normal definition is \cs{@empty}, and this fact used to detect whether the document
+% author is trying to use two \cs{leadinitem}s in one \texttt{problem*} environment.
+%\item At the beginning of the definition of the command \cs{@exercise} (in \textsf{exerquiz}
+% we \cs{let} \cs{solutionparshape} to \cs{@empty}.
+% \item So too does \cs{solutionparshape} appear in the definition of
+% \cs{vspaceFmt} (\textsf{exerquiz}).
+% \item \cs{solutionparshape} use used to correctly format in the \texttt{solutionsafter},
+% found in \cs{solnexer@@@woparts} (\textsf{exerquiz}).
+%\end{itemize}
+% As can be seen, this simple feature is not so simple.\par\medskip\noindent
+% Set the default value of \cs{solutionparshape}.
+% \begin{macrocode}
+\let\solutionparshape\@empty
+% \end{macrocode}
+% This is the beginning of \DescribeMacro{\leadinitem}\cs{leadinitem}, at least the
+% the active definition within the \texttt{problem*} environment, and outside
+% the \texttt{parts} environment.
+% \begin{macrocode}
+\def\eqe@leadinitem{%
+ \ifx\solutionparshape\@empty
+% \end{macrocode}
+% \cs{solutionparshape} empty means \cs{leadinitem} hasn't been used yet,
+% so we can use it here by passing control to \cs{eqe@@leadinitem}, otherwise,
+% we toss an exception.
+% \begin{macrocode}
+ \def\eqe@next{\eqe@@leadinitem}%
+ \ifeqfortextbook\writeToSolnFile{\protect\bpartsmrk}\fi
+ \else
+ \def\eqe@next{\PackageError{eqexam}
+ {The \string\leadinitem\space command may
+ only be used\MessageBreak once per problem* environment}
+ {Remove all but one of the \string\leadinitem\space
+ commands.}}%
+ \fi\eqe@next
+}
+\newif\ifisleadin \isleadinfalse
+\let\isparshapeExpanded\eqe@NO
+\def\eqe@@leadinitem{\if\itsforleadinitem\eqe@NO
+ \setcounter{partno}{0}\fi\refstepcounter{partno}%
+% \end{macrocode}
+% After initializing the counter, we make various calculations
+% \begin{macrocode}
+ \eq@initializeContAnnot
+ \isleadintrue\let\isitleadin\eqe@YES
+% \end{macrocode}
+% We signal a \cs{leadinitem} by writing a special command to the AUX file,
+% this is used to disallow the use of the \texttt{*} option of points.
+% \begin{macrocode}
+ \eqe@writetoAux{\string
+ \csarg\string\gdef{leadinitem\thisexamlabel-\theeqquestionnoi}{}}%
+ \settowidth{\eq@tmpdima}{\normalfont\parts@indent\eqe@prtsepPrb}%
+ \xdef\leadinIndentPrtSep{\the\eq@tmpdima}%
+ \setlength{\eq@tmpdima}{\eqemargin+\eq@tmpdima}%
+ \xdef\leadinIndent{\the\eq@tmpdima}%
+ \settowidth{\eq@tmplength}{\parts@indent}%
+ \edef\partsleadinIndent{\the\eq@tmplength}%
+ \setlength{\eq@tmplength}{\linewidth-\leadinIndentPrtSep}%
+ \edef\leadinIndentLength{\the\eq@tmplength}%
+% \end{macrocode}
+% \changes{v3.8}{2015/03/17}{Spacing is not correct with standard itemize and
+% enumerate environments, this is a fix.}
+% Modify \cs{@listii} from core LaTeX: Increase \cs{leftmarginii} and \cs{linewidth}
+% appropriately.
+% \begin{macrocode}
+\@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
+ \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
+ \advance\leftmarginii\leadinIndentPrtSep\relax
+ \leftmargin\leftmarginii \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+% \advance\linewidth\leadinIndentPrtSep\relax
+ }%
+% \end{macrocode}
+% The \texttt{parshape} for the first paragraph of the \cs{leadinitem}.
+% \begin{macrocode}
+ \parshape=2 \eqemargin \linewidth \leadinIndent \leadinIndentLength
+% \end{macrocode}
+% Here is the definition of \cs{solutionparshape}, we use the shape of
+% subsequent paragraphs.
+% \begin{macrocode}
+ \xdef\solutionparshape{%\noexpand\linewidth\leadinIndentLength
+ \noexpand\parshape=1 \leadinIndent\space\leadinIndentLength}%
+% \end{macrocode}
+% After the current paragraph, we execute \cs{solutionparshape}, then
+% empty out \cs{everypar}. Seems to work.
+% \begin{macrocode}
+ \global\let\isparshapeExpanded\eqe@NO
+ \everypar{\solutionparshape
+ \global\let\isparshapeExpanded\eqe@YES\everypar{}}%
+% \end{macrocode}
+% These next lines were taken from \cs{eq@item@common} in \textsf{exerquiz}.
+% The command \cs{eq@insertContAnnot} was removed from the \cs{eq@item@common} code, it is not needed
+% here and caused trouble. We \cs{let} \cs{eq@item} to \cs{eq@leadin@item} to
+% continue the flow. \cs{@ckhide} checks for an optional argument (\texttt{h} or \texttt{H})
+% and sets switches as appropriate.
+% \begin{macrocode}
+ \let\eq@item\eq@leadin@item\eqp@rtc@lcm@rk
+ \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
+ \@ifnextchar[{\@ckhide}{\eq@item}%
+}
+% \end{macrocode}
+% The final step. If the solution is hidden, we do not write the header.
+% \changes{v3.3a}{2013/05/03}{Changed name of \cs{eq@writeexheader} to \cs{eqExerSolnHeader}}
+% \begin{macrocode}
+\def\eq@leadin@item{\eq@ckglobalhide\ifeq@hidesolution\else
+ \global\let\eqExerSolnHeader\eq@@writeexheaderlist\fi
+ \ifeq@nosolutions\eq@nolinktrue\fi
+ \unskip\noindent\makebox[\partsleadinIndent]{\eqexlisttabheader}%
+ \eqe@prtsepPrb\ignorespaces
+}
+% \end{macrocode}
+% \end{macro}
+% \DescribeMacro{\tableadin}\cs{tableadin} is \cs{let} to \cs{eqe@tableadin} within
+% the \texttt{problem*} env. The switch \cs{if@tableadinitem} is defined in
+% \textsf{exerquiz}.
+% \begin{macrocode}
+\def\eqe@tableadin{\@tableadinitemtrue\eqe@writetoAux{\protect
+ \csarg\protect\gdef{tableadin\thisexamlabel-\theeqquestionnoi}{}}%
+}
+% \end{macrocode}
+% \begin{macro}{\pushProblem}
+% \begin{macro}{\popProblem}
+% There may be an occasion when a multi-part question needs to be broken between parts.
+% use the \cs{pushProblem} and \cs{popProblem} for this purpose. The push saves the
+% counter value, and ends the \texttt{parts} environment. The pop restarts the
+% \texttt{parts}, and resets the parts counter.
+% \changes{1.6b}{2006/3/12}
+% {
+% Added \cs{pushProblem} and \cs{popProblem} to grant the ability to interrupt
+% a parts environment for, for example, a multicolumn environment.
+% }
+%\par\medskip\noindent
+%In the example below, we have our parts in a \texttt{multicols} environment, we
+%\cs{pushProblem}, close \texttt{multicols}, \cs{popProblem} and continue with
+% the multi-parts in single column.
+%\begin{verbatim}
+%\item Compute $\lim_{x\to2^{\text{$-$}}} f(x)$
+%\begin{solution}[1in]\end{solution}
+%\pushProblem
+%\end{multicols}
+%\popProblem
+%\item What value(s) of $c$ make the function $f$
+%continuous at $x=2$?
+%\begin{solution}[.5in]\end{solution}
+%\end{parts}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand\pushProblem{\xdef\nlastItem{\arabic{partno}}\end{parts}}
+% \end{macrocode}
+% (2013/05/30) Adding an optional parameter to \cs{popProblem} to match
+% the option argument of the \texttt{parts} environment. This enables you
+% to push a \texttt{list} environment and push a \texttt{tabular} environment.
+% \begin{macrocode}
+\newcommand\popProblem[1][]{%
+ \def\@argi{#1}\ifx\@argi\@empty
+ \def\eqe@bParts{\begin{parts}}\else
+ \def\eqe@bParts{\begin{parts}[#1]}\fi
+ \eqe@bParts\setcounter{partno}{\nlastItem}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\def\lastPageTotal{0pt}
+\def\marginparafterhook{\xdef\lastPageTotal{\the\pagetotal}}
+% \end{macrocode}
+% \DescribeMacro{\manualcalcparts} is the command calculates points
+% when the argument is \emph{not} \cs{auto}. The macro \cmd{\prob@Arg}
+% determines if the points argument passed is of the form \texttt{<num>ea}.
+% \begin{macrocode}
+\def\prob@Arg#1ea#2\end{\def\argi{#1}\def\argii{#2}}
+% \end{macrocode}
+% Now begin \cs{manualcalcparts}; \texttt{\#1} is the number of points, which may be
+% of the form \texttt{<num>ea}, or just \texttt{<num>}.
+% \begin{macrocode}
+\let\eqe@pointsEach\eqe@NO
+\def\manualcalcparts#1{%
+ \expandafter\prob@Arg#1ea\end
+ \ifx\argii\@empty\edef\numpoints{#1}%
+ \let\eqe@pointsEach\eqe@NO
+% \end{macrocode}
+% Argument form is \texttt{<num>} assumed: Total points specified, we
+% should ignore any \cs{PTs} commands.
+% \begin{macrocode}
+ \let\eqe@pointsPartsId\eqe@Zero
+ \else
+% \end{macrocode}
+% Argument form is \texttt{<num>ea} assumed: Again we
+% should ignore any \cs{PTs} commands.
+% \begin{macrocode}
+ \gdef\probpointseach{x}\let\eqe@pointsPartsId\eqe@Two
+ \let\eqe@pointsEach\eqe@YES
+% \end{macrocode}
+% Points each specified
+% \begin{macrocode}
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}\csarg
+ \ifx{prob\thisexamlabel.\theeq@count}\relax
+ \def\numpoints{\argi}\else
+ \def\numpoints{\expandafter
+ \csname prob\thisexamlabel.\theeq@count\endcsname}%
+ \fi
+% \end{macrocode}
+%\changes{v4.1}{2015/04/23}{Moved this segment of code to \cs{manualcalcparts},
+% it is taken from the main \texttt{problem*} env.}
+% \begin{macrocode}
+ \ifx\yest@D@\eqe@YES
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \@ifundefined{nPartsThisProb\thisexamlabel.\theeq@count}
+ {\makeOutOfNum{0}\makeDoNum{0}}{%
+ \expandafter\makeOutOfNum{%
+ \csname nPartsThisProb\thisexamlabel.%
+ \theeq@count\endcsname}%
+ \expandafter\makeDoNum{%
+ \csname DoNumThisProb\thisexamlabel.%
+ \theeq@count\endcsname}}%
+ \fi
+ \fi
+% \end{macrocode}
+% If \cs{marginpoints} is \cs{@empty}, the author has chosen the \texttt{nopoints} option
+% or used the \cs{NoPoints} command.
+% \begin{macrocode}
+ \ifx\marginpoints\@empty
+% \end{macrocode}
+% No points for this exam
+% \begin{macrocode}
+ \else
+ \ifx\argi\@empty
+% \end{macrocode}
+% If \cs{argi} is empty, no points were specified, so we \cs{let}
+% \cs{marginpoints} to \cs{@empty}
+% \begin{macrocode}
+ \let\marginpoints\@empty
+ \else
+% \end{macrocode}
+% Points are displayed in margins or inline
+% \begin{macrocode}
+ \ifx\argii\@empty
+% \end{macrocode}
+% \paragraph*{Total points specified}
+% \begin{macrocode}
+ \ifx\marginpoints\@empty\else
+ \if\@isitstar\eqe@One
+% \end{macrocode}
+% Points to appear ``in-line'' rather than in the margins
+% \begin{macrocode}
+ \addtocounter{eqpointvalue}{#1}%
+ \@marktotalvalue\ifdispl@yPoints
+ \def\marginparafterhook{\itemPTsFormated{%
+ \itemPTsTxt{\numpoints}}\space}\fi
+ \else
+% \end{macrocode}
+% Points appear in the margins
+% \begin{macrocode}
+ \def\marginparpriorhook{\noindent
+ \probvalue{\numpoints}{0}}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% \paragraph*{Points each specified}
+% \begin{macrocode}
+ \ifx\marginpoints\@empty\else
+ \if\@isitstar\eqe@One\ifdispl@yPoints
+% \end{macrocode}
+% Points to appear ``in-line'' rather than in the margins
+% \begin{macrocode}
+ \def\marginparafterhook{%
+ \itemPTsFormated{\itemPTsEaTxt{\argi}}\space}\fi
+ \else
+% \end{macrocode}
+% Points appear in the margins
+% \begin{macrocode}
+ \ifdispl@yPoints
+ \def\marginparpriorhook{\noindent
+ \marginpoints{\numpoints}{\argi}}\fi
+ \fi
+% \end{macrocode}
+% Don't remember why I named this command the way I did, but it is use to pass
+% the number of points, when there is a \cs{leadinitem}.
+% \begin{macrocode}
+ \edef\eqp@rtc@lcm@rk{\noexpand
+ \addtocounter{eqpointvalue}{\argi}%
+ \noexpand\@marktotalvalue}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum\value{eq@count}=1\relax
+ \eqe@IWO\@auxout{\string\csarg\string
+ \gdef{pagenofirstprob\thisexamlabel}{\thepage}}%
+ \fi
+}
+% \end{macrocode}
+% \DescribeMacro{\autocalcparts} is the command that computes the total points when
+% the author specifies \cs{auto} as the optional argument of \texttt{problem*}. The
+% commands \cmd{\acp@mpah} and \cmd{\acp@mpph} were recently (2012/04/21) separated
+% out to allow for additional customization, without re-defining the whole of
+% \cs{autocalcparts}.
+% \begin{macrocode}
+\def\acp@mpah{\itemPTsFormated{\itemPTsTxt{\numpoints}}\space}
+\def\acp@mpph{\noindent\marginpoints{\numpoints}{0}}
+\def\autocalcparts{%
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \csarg\ifx{prob\thisexamlabel.\theeq@count}\relax
+ \def\numpoints{0}% assume zero points until we get the total
+ \else
+ \edef\numpoints{\@nameuse{prob\thisexamlabel.\theeq@count}}%
+ \fi
+% \addtocounter{eqpointvalue}{\numpoints}\@marktotalvalue
+ \ifx\marginpoints\@empty\else
+ \ifdispl@yPoints
+ \if\@isitstar\eqe@One
+% \end{macrocode}
+% If we have \texttt{*\cs{auto}}, the total is to appear inline.
+% \begin{macrocode}
+ \def\marginparafterhook{\acp@mpah}\else
+% \end{macrocode}
+% Otherwise, the total will appear in the margin.
+% \begin{macrocode}
+ \def\marginparpriorhook{\acp@mpph}\fi
+ \fi
+ \fi
+ \setcounter{eq@count}{0}%
+}
+% \end{macrocode}
+% \begin{macro}{\forproblem}
+% \begin{macro}{\foritem}
+% \begin{macro}{\forleadinitem}
+% When typing solutions from assigned problems in a textbook, the problems
+% assigned are not consecutive. You can set the problem number before the problem
+% environments by using the \cs{forproblem} command. The one required argument is
+% the problem number: \verb!\forproblem{10)!.
+% \changes{v1.6h}{2007/01/24}
+% {
+% Added \cs{forproblem}, \cs{foritem}, \cs{aNewPage}
+% }
+% \changes{v3.6a}{2015/01/31}{Added \cs{eqe@fpmrk} to add to the uniqueness
+% of \cs{theHeqquestionnoi}.}
+% \begin{macrocode}
+\let\eqe@fpmrk\@empty
+\newcommand{\forproblem}[1]{\def\eqe@fpmrk{-\the@exno}%
+ \setcounter{eqquestionnoi}{#1 - 1}}
+% \end{macrocode}
+% A similar comment for \cs{item}. These are useful for making out solution
+% sets to homework assignments where problems are assigned from the textbook
+% and you want to give a solution to problem 12, part (b), An example of usage is
+%\begin{verbatim}
+%\forproblem{12}
+%\begin{problem*}
+%Factor each.
+%\begin{parts}
+% \foritem{b} $ x^2 + 2x + 1 = ( x + 1 )^2 $
+% \item $ x^2 - x - 2 = ( x - 2 )( x + 1) $ % this is part (c)
+% \foritem{e} $ x^2 + 7x + 10 = ( x - 2 )( x + 7) $
+% \item ... % this will be part (f)
+%\end{parts}
+%\end{problem*}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\foritem}[2][]{%
+ \setcounter{partno}{0}\def\@rgi{#1}\ifx\@rgi\@empty
+ \def\eqe@nextitem{\item}\else
+ \def\eqe@nextitem{\item[#1]}\fi
+ \foritem@cont{#2}}
+\newcommand{\forleadinitem}[2][]{%
+ \setcounter{partno}{0}\def\@rgi{#1}\ifx\@rgi\@empty
+ \def\eqe@nextitem{\leadinitem}\else
+ \def\eqe@nextitem{\leadinitem[#1]}\fi
+ \foritem@cont{#2}}
+% \end{macrocode}
+% (2017/01/04) Modified \cs{foritem@cont} to allow for numbering parts.
+% \changes{v4.7}{2017/01/04}{Modified \cs{foritem@cont} to allow for numbering parts}
+% \begin{macrocode}
+\def\foritem@cont#1{\ifuseNumForParts
+ \edef\fliPartNo{#1}\setcounter{partno}{#1-1}\else
+ \lowercase{\def\eq@selectedItem{#1}}%
+ \let\eq@initLoop\eqe@NO
+ \loop
+ \stepcounter{partno}\expandafter
+ \if\alph{partno}\eq@selectedItem
+ \let\eq@initLoop\eqe@YES\fi
+ \ifx\eq@initLoop\eqe@NO\repeat
+ \edef\fliPartNo{\the\c@partno}%
+ \addtocounter{partno}{-1}\fi\let\itsforleadinitem\eqe@YES
+ \eqe@nextitem}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% The command \cs{eqe@insertContAnnot} attempts to insert a string just prior
+% to a part, if that part begins a new page. To get it right, it promotes a new
+% page using the default of .25in. The optional parameter allows you to insert
+% a new value; this may be needed to get the string \cs{annotContStr} placed properly.
+% The commands
+% \begin{macro}{\annotContStr}
+% \changes{v3.0l}{2011/08/22}{Defined \cs{eqe@insertContAnnot} and related commands}
+% The string that is typeset by the \cs{eqe@insertContAnnot} command.
+% \begin{macro}{\acvspace}
+% User access to changing the vertical spacing \cs{promoteNewPage} uses within
+% \cs{eqe@insertContAnnot}.
+% \begin{macro}{\resetacvspace}
+% Resets the vertical spacing back to its default.
+% \begin{macrocode}
+\newcommand{\annotContStr}{%
+ \textbf{Problem~{\eqeCurrProb} continued\strut}}
+\newcommand{\acvspace}[1]{\def\ic@vspace{#1}\setlength\iacvspace{#1}}
+% \end{macrocode}
+% \DescribeMacro{\ic@vspacedefault} is the default vertical spacing used
+% by \cs{eqe@insertContAnnot}
+% \begin{macrocode}
+\newlength\iacvspace
+\newcommand{\ic@vspacedefault}{1in} % changed .25in to 1in 2012/12/04
+\newcommand{\resetacvspace}{\setlength\iacvspace{\ic@vspacedefault}}
+\resetacvspace
+% \end{macrocode}
+% \cs{eqe@insertContAnnot} promotes a new page, and if the current
+% page is different than the starting page, \cs{eq@currProbStartPage}, we
+% insert \cs{annotContStr}.
+% \begin{macrocode}
+%\newcommand{\priorAnnotInsert}[1]{\def\eq@priorAnnotInsert{#1}}
+%\let\eq@priorAnnotInsert\relax
+\newcommand{\eqe@insertContAnnot}[1][\iacvspace]{\promoteNewPage[#1]%
+ \ifnum\arabic{page}>\eq@currProbStartPage
+ \xdef\eq@currProbStartPage{\arabic{page}}%
+ {\settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\eqe@partsIndent{\the\eq@tmplength}}%
+ \ifwithinparts
+% \end{macrocode}
+% \cs{eq@item} is the \texttt{list} definition of \cs{item} which has been
+% \cs{let} to \cs{eq@item} within the \texttt{parts} environment.
+% \begin{macrocode}
+ \@ifundefined{eq@item@latex}{\item[]\hspace*{-\eqemargin}%
+ \ifx\solutionparshape\@empty\else\hspace*{-\eqe@partsIndent}\fi}
+ {\eq@item@latex[]\hspace*{-\eqemargin}%
+ \hspace{-\eqe@partsIndent}}\else
+% \end{macrocode}
+% If placed between problem sets, we indent as appropriate.
+% \begin{macrocode}
+ \hspace*{-\eqemargin}\fi\annotContStr
+ \fi
+}
+\edef\eq@currProbStartPage{\arabic{page}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\turnContAnnotOff}
+% \begin{macro}{\turnContAnnotOn}
+% Turn off and on this feature. The default is off.
+% \begin{macrocode}
+%\newcommand{\@gobbloptone}[1][]{}
+\newcommand{\turnContAnnotOff}{\global\let\eq@insertContAnnot\relax}
+\newcommand{\turnContAnnotOn}{%
+ \global\let\eq@insertContAnnot\eqe@insertContAnnot}
+\turnContAnnotOff
+% \end{macrocode}
+% Used for manually inserting annot
+% \begin{macrocode}
+\def\insertContAnnot{\eq@insertContAnnot}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\aNewPage}
+% \begin{macro}{\qNewPage}
+% A simple command for inserting \cs{newpage}, only if the \cs{answerkey}
+% option has been taken.
+% \changes{v1.6h}{2007/01/24}
+% {
+% Added \cs{aNewPage} and \cs{qNewPage}
+% }
+% \begin{macrocode}
+\newcommand\aNewPage{\ifanswerkey\newpage\fi}
+\newcommand\qNewPage{\ifanswerkey\else\newpage\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\OnBackOfPage}
+%
+% In an effort to make maximum use of the paper, I sometimes ask the
+% students to solve the problem on the back of a page. The following
+% command is an automated instruction. Generally, we work on the back
+% of the previous page, unless we are on page 1, in this case we work
+% on the back of page 1.
+%
+% \begin{macrocode}
+\newcounter{backofpage}
+\newcommand\bopText{on the back of page~\boPage}
+\newcommand\bopCoverPageText{on the back of the cover page}
+\newcommand\OnBackOfPage[1][\bopText]{%
+ \refstepcounter{backofpage}\label{bop\thebackofpage}
+ \begingroup
+ \csarg\ifx{r@bop\thebackofpage}\relax
+ \def\boPage{??}\else
+ \edef\eqe@temp{\csname r@bop\thebackofpage\endcsname}%
+ \ifx\hyper@anchor\@undefined
+ \edef\boPage{\expandafter\@secondoftwo\eqe@temp}\else
+ \edef\boPage{\expandafter\@secondoffive\eqe@temp}\fi
+ \c@eq@count\boPage
+ \advance\c@eq@count-1\relax
+% \end{macrocode}
+% If on page 1, we work on the back of page 1, otherwise, we work on the
+% back of the previous page.
+% \begin{macrocode}
+ \edef\boPage
+ {%
+ \ifx\eqex@coverpage\relax
+ \ifnum\value{eq@count}=0
+ 1%
+ \else
+ \the\value{eq@count}%
+ \fi
+ \else
+ \ifnum\value{eq@count}=0
+ -1%
+ \else
+ \the\value{eq@count}%
+ \fi
+ \fi
+ }%
+ \fi
+ \csarg\ifx{r@bop\thebackofpage}\relax#1\else
+ \ifnum\boPage=-1\relax\bopCoverPageText\else#1\fi\fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+%\subsection{Vertical Space Filling Options}
+%
+% When the \texttt{nosolutions} or the \texttt{vspacewithsolns} is used, a
+% vertical space is generated by the \texttt{solution} environment.
+% Previously, this has just been a vertical white space, now, we provide
+% the ability to fill the space with horizontal rules of different types.
+% Below is the implementation of this.
+% \begin{macro}{\eqWriteLineColor}
+% The color of the rule to use.
+% \begin{macrocode}
+\newcommand{\eqWriteLineColor}[1]{\def\eq@WriteLineColor{#1}}
+\eqWriteLineColor{gray}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eqWLSpacing}
+% The line spacing between the rules.
+% \begin{macrocode}
+\newlength\wlVspace
+\newcommand{\eqWLSpacing}[1]{\setlength\wlVspace{#1}}
+\eqWLSpacing{14pt}
+% \end{macrocode}
+% \end{macro}
+% \paragraph*{Fill Types.} We have three types of line fill:
+% \cs{hrulefill}, \cs{dotfill}, and a custom rule \cs{eqdashrulefill}.
+% The commands three \cs{eqWriteLineFill}, \cs{eqWriteLineDots}, and
+% \cs{eqWriteLineDashFill} implements these three types. They are
+% \cs{let} to \cs{eqWriteLine}, which is used in \cs{vspaceFillerLines}.
+% \begin{macrocode}
+\newcommand{\eqWriteLineFill}{%
+ \textcolor{\eq@WriteLineColor}{\hrulefill}}
+%\newcommand{\eqWriteLineDots}{%
+% \textcolor{\eq@WriteLineColor}{\dotfill}}
+\def\eqdotrulefile{\leavevmode
+ \cleaders\hb@xt@ .44em{\hbox to0pt{\hss.\hss}\hss}\hfill\kern\z@}
+\newcommand{\eqWriteLineDots}{%
+ \textcolor{\eq@WriteLineColor}{\eqdotrulefile}}
+%\def\eqdashrulefill{\leavevmode
+% \cleaders\hb@xt@ .44em{\hss\rule{.22em}{.4pt}\hss}\hfill\kern\z@}
+\def\eqdashrulefill{\leavevmode%\kern-.11em
+ \cleaders\hb@xt@ .44em{\rule{.22em}{.4pt}\hss}\hfill\kern\z@}
+\newcommand{\eqWriteLineDashFill}{%
+ \textcolor{\eq@WriteLineColor}{\eqdashrulefill}}
+\newcommand{\eqWriteLineBlankFill}{\hfill}
+% \end{macrocode}
+% Use \DescribeMacro{\fillerLinesAlignDef}\cs{fillerLinesAlignDef} and
+% \DescribeMacro{\fillerLinesOnLeftMargin}\cs{fillerLinesOnLeftMargin} to adjust
+% the alignment of the rule lines for this feature. The first is the default,
+% the second one aligns rule lines to the left margin.
+% \begin{macrocode}
+\newif\if@equsedim \@equsedimtrue
+\newcommand{\useVspaceDimen}{\@equsedimtrue}
+\newcommand{\usenLineDimen}{\@equsedimfalse}
+\newif\if@eqalignfilllinestoleft\@eqalignfilllinestoleftfalse
+\newcommand{\fillerLinesOnLeftMargin}{\@eqalignfilllinestolefttrue}
+\newcommand{\fillerLinesAlignDef}{\@eqalignfilllinestoleftfalse}
+\newcommand\priorPageBreakMsg[1]{\def\priorP@geBre@kMsg{#1}}
+\let\priorP@geBre@kMsg\@empty
+\newcommand{\flPageBreakMsg}[1]{%\acvspace{2\wlVspace}%
+ \priorPageBreakMsg{\emitMessageNearBottom[2\wlVspace]
+ {\eqfititin{{\Large\strut}#1}}}%
+}
+\newcommand{\vspaceFillerLines}[1]{\begingroup\offinterlineskip
+ \parindent0pt\relax\parskip0pt
+ \@tempdima\wlVspace\eqetmplengtha0pt
+ \def\eqe@fillwidth{\linewidth+\eqetmplengtha}%
+ \settowidth{\eqetmplengthb}{\eqe@decPointPrb}%
+ \@whiledim\@tempdima<#1\relax\do{\priorP@geBre@kMsg
+ \eq@insertContAnnot\vskip\wlVspace\eqe@wrtLineKernal
+ \makebox[0pt][l]{\makebox[\eqe@fillwidth]{\eqWriteLine}}%
+ \addtolength{\@tempdima}{.4pt+\wlVspace}\par
+ }\endgroup
+}
+\def\eq@linesXPgs{\begingroup\offinterlineskip
+ \parindent0pt\relax\parskip0pt
+ \@tempcnta=0 \eqetmplengtha0pt
+ \settowidth{\eqetmplengthb}{\eqe@decPointPrb}%
+ \def\eqe@fillwidth{\linewidth+\eqetmplengtha}%
+ \@whilenum\@tempcnta<\soln@keys@nLines\relax\do{\priorP@geBre@kMsg
+ \eq@insertContAnnot\vskip\wlVspace\eqe@wrtLineKernal
+ \makebox[0pt][l]{\makebox[\eqe@fillwidth]{\eqWriteLine}}%
+ \advance\@tempcnta1\relax}\par\endgroup
+}
+\def\eqe@wrtLineKernal{%
+ \ifx\solutionparshape\@empty
+ \if@eqalignfilllinestoleft
+ \setlength{\eqetmplengtha}{\labelwidth+\eqemargin}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha+\eqetmplengthb}%
+ \ifwithinparts
+ \setlength{\eqetmplengtha}{\labelwidth}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha+\eqetmplengthb}%
+ \ifx\eq@item\item@part@tabular
+ \hspace*{-\eqemargin}\eqetmplengtha\eqemargin\else
+ \hspace*{-\eqetmplengtha}\fi
+ \else
+ \hspace*{-\eqemargin}\eqetmplengtha\eqemargin
+ \fi
+ \else
+ \ifwithinparts
+ \setlength{\eqetmplengtha}{\labelwidth}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha-\eqetmplengthb}%
+ \setlength{\eqetmplengtha}{\labelwidth}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha+\eqetmplengthb}%
+ \ifx\eq@item\item@part@tabular
+ \hspace*{\eqetmplengtha}%
+ \settowidth{\eqetmplengthb}{\eqe@prtsepPrb}%
+ \setlength{\eqetmplengtha}
+ {-\labelwidth-\eqetmplengthb}\else
+ \eqetmplengtha0pt\fi
+ \else
+ \eqetmplengtha0pt
+ \fi
+ \fi
+ \else
+ \if@eqalignfilllinestoleft
+ \setlength{\eqetmplengtha}
+ {\eqemargin+\leadinIndentPrtSep}%
+ \hspace*{-\eqetmplengtha}\else\hspace*{0pt}\fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\useFillerLines}
+% When used, the vertical space is written with lines (rules, dashes, dots).
+%\changes{v2.0e}{2011/03/07}
+%{%
+% Added the feature of filling the vertical space with ruled lines of
+% different types. This feature is available for paper options and for
+% \texttt{nosolutions} and \texttt{vspacewithsolution} options.
+%}
+% \begin{macrocode}
+\newcommand{\useFillerLines}{\let\vspaceFiller\vspaceFillerLines
+ \fillTypeDefault\@eqlinedfillertrue}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\useFillerDefault}
+% Resets the vertical space to the original white space.
+% \begin{macrocode}
+\newcommand{\useFillerDefault}{\let\vspaceFiller\vspaceFillerDefault
+ \let\eqWriteLine\hfill\@eqlinedfillerfalse}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fillTypeHRule}
+% Writes the line as a solid line (\cs{hrulefill}).
+% \begin{macrocode}
+\newcommand{\fillTypeHRule}{\let\eqWriteLine\eqWriteLineFill}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fillTypeDots}
+% Writes the line as a dotted line (\cs{dotfill}).
+% \begin{macrocode}
+\newcommand{\fillTypeDots}{\let\eqWriteLine\eqWriteLineDots}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fillTypeDashLine}
+% Writes the line as a dotted line (\cs{eqdashrulefill}).
+% \begin{macrocode}
+\newcommand{\fillTypeDashLine}{\let\eqWriteLine\eqWriteLineDashFill}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fillTypeBlankLine}
+% Fills the line
+% \begin{macrocode}
+\newcommand{\fillTypeBlankLine}{\let\eqWriteLine\eqWriteLineBlankFill}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fillTypeDefault}
+% Resets fill type back to the default, \cs{hrulefill}.
+% \begin{macrocode}
+\newcommand{\fillTypeDefault}{\let\eqWriteLine\eqWriteLineFill}
+% \end{macrocode}
+% \end{macro}
+% Set the \textsf{eqexam} page style, if not otherwise indicated.
+% \begin{macrocode}
+\ifeqfortextbook\else
+ \if@bypasseqexamheading\else
+\pagestyle{eqExamheadings}\fi\fi
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+%<*textbook>
+\ProvidesFile{eqtextb.def}
+ [2016/01/18 v4.6 Cmds used by the fortextbook option (dps)]
+% \end{macrocode}
+%
+% \section{Concerning the \protect\texttt{fortextbook} option}\label{fortextbook}
+%
+% What are my goals/desired features? Modern (U.S.) textbooks---at least
+% the ones I'm familiar with---consist of some or all of the following
+% resources:
+% \begin{itemize}
+% \item \textbf{Student Edition}: Answers to odd-numbered problems
+% appear in the back of the text.
+% \item[] We need to have a scheme where odd-numbered problems, under suitable options,
+% are compiled. \textbf{Goal:} It does not need to be restricted to odd-numbered, however, need to latex only
+% those problems that meet the ``include'' criteria.
+% \item[] For chapter review problem sets, odd-number problems are have solutions in the
+% back of the book.
+% \item[] For chapter quizzes, odd-numbered (optionally all) solutions
+% are in the back of the book.
+%
+% \item \textbf{Instructor Edition}: Answers to all problems appear in
+% the back of the book. Answers may also appear in the body of the text,
+% in the margins of the text, or immediately after the statement of the
+% problem. If the answer is too long, there is a cross-reference to the
+% solution in the appendix.
+% \item[] Some publishers I've seen have wide margins where additional material can be inserted
+% (historical sketches, instructor notes, pictures, etc.). In these margins, the answers to the problems
+% can appear. Other publishers put answer immediately
+% following the questions. The latter is easy to do; just have a macro, say \verb!\ANS{$12.5$}!, which only
+% expands when the ``instructor'' option is used.
+% \item \textbf{Student Solution Manual}: Contains solutions to all
+% odd-problems, as well as any review problems and chapter quizzes.
+% Some publishers include all solutions to chapter quizzes.
+% \item[] A solution manual is a separate publication. This document would be
+% created by latexing one or more of the auxiliary file (\texttt{.sol})
+% These files might have to be edited before the final compile. We include only the solutions
+% that meet the include criteria (i.e., odd-numbered ones).
+% \item[] The current features of \textsf{eqexam} is what is needed here. The authors need only
+% include solutions to each problem in a \texttt{solution} environment. Now, I realize that often times
+% the authors create the solutions, but someone else, possibly a grade student or contractor, solves the problems.
+% In the latter case, the authors would probably not like to turn over the source files to the one solving and typesetting
+% the problems.
+% \item \textbf{Instructor Solution Manual}: Contains solutions to all
+% problems, review problems, chapter quizzes.
+% \item[] Similar comments for the instructor solution manual.
+% \end{itemize}
+% Some other thoughts by a contributor:
+% \begin{itemize}
+%\item Often there is a diagram or graphic within the problem -- this has
+% some figure caption and after the running counter of the figure it is
+% named the NUMBER of the problem (cross-reference to the problem number)
+%
+%\item Often the probs with soln are setup in two-column style.
+%
+%\item Often the PROBLEM NUMBER has a special formatting (not only bold and
+% black), maybe with a colorframebox around or some special formatting
+% from the author
+%
+%\item Of course I have seen in some EXAMPLES that there is a wide margin
+% to put in additional graphics etc. setup in two-side style -- wide left
+% margin on even pages, wide right margins on odd pages. Here as well
+% are captions setup and cross-references.
+%\end{itemize}
+%
+%\subsection{Setting options with \texorpdfstring{\cs{textbookOpts}}{\textbackslash{textbookOpts}}}
+% \begin{macro}{\textbookOpts}
+% \begin{macro}{marginans}
+% \begin{macro}{inlineans}
+% \begin{macro}{marginsonleft}
+% \begin{macro}{ssols}
+% \begin{macro}{lsols}
+% We set up a command for setting the options for the \texttt{fortextbook} option.
+% \begin{macrocode}
+\define@boolkey{eqe@tbopts}[is]{instred}[true]{}
+\define@boolkey{eqe@tbopts}[is]{studented}[true]{%
+ \ifisstudented
+% \end{macrocode}
+% Now let's try to filter out the even-numbered problems for the student edition.
+% \begin{macrocode}
+ \tbfilterOutEvenNums
+% \end{macrocode}
+% The above command is normally \cs{let} to \cs{@gobble}.
+% \begin{macrocode}
+ \fi
+}
+% \end{macrocode}
+% This code is executed in \cs{exambegdef}, the start up code of the \texttt{exam} environment.
+% This enables problems with fill-ins, true/false, or multiple choice, to have the answer appear
+% in the space provided.
+% \begin{macrocode}
+\def\tb@beginexam@code{%
+ \ifisinstred\answerkeytrue\eq@proofingtrue\fi}
+% \end{macrocode}
+% \verb!\eqEXt{\theeqquestionnoi}! and \verb!\endeqEXt\tok1\tok2! enclose each
+% solution, \cs{tbfilterOutEvenNums} redefines \cs{eqEXt} to gobble everything,
+% when the page number is even, through \cs{endeqEXt} and the two tokens it follows.
+% This leaves only the odd-numbered problems.
+% \begin{macrocode}
+\newcommand{\tbfilterOutEvenNums}{%
+% \end{macrocode}
+%\changes{v3.3}{2013/04/07}{\textsf{exerquiz} changed \cs{eqEXt} to two variables, so
+% we make the same change here.}
+% \textsf{exerquiz} changed \cs{eqEXt} to two variables, so
+% we make the same change here
+% \begin{macrocode}
+ \def\eqEXt##1##2{\ifodd##1\let\eqe@next\relax\else
+ \def\eqe@next{\gobbletoEndEXt}\fi\eqe@next}%
+}
+\newcommand{\tballowAllNums}{%
+% \end{macrocode}
+%\changes{v3.3}{2013/04/07}{\textsf{exerquiz} changed \cs{eqEXt} to two variables, so
+% we make the same change here.}
+% \textsf{exerquiz} changed \cs{eqEXt} to two variables, so
+% we make the same change here
+% \begin{macrocode}
+% \let\eqEXt\@gobble
+ \let\eqEXt\@gobbletwo
+ \let\endeqEXt\relax
+}
+\define@boolkey{eqe@tbopts}[is]{marginans}[true]{}
+\define@boolkey{eqe@tbopts}[is]{inlineans}[true]{}
+\define@boolkey{eqe@tbopts}[]{marginsonleft}[true]
+% \end{macrocode}
+% If margins are always on left, we turn off switching of margin notes
+% as placed by \cs{marginpar}, and use \cs{reversemarginpar} to get them
+% on the left.
+% \begin{macrocode}
+ {\@mparswitchfalse\reversemarginpar}
+\define@boolkey{eqe@tbopts}[show]{ssols}[true]{}
+\define@boolkey{eqe@tbopts}[show]{lsols}[true]{%
+ \ifshowlsols\let\tb@soln@choice\tb@showlsols\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% The default settings are \texttt{true} for \texttt{studented} and
+% \texttt{false} for \texttt{instred}.
+%
+% \begin{macrocode}
+\newcommand{\textbookOpts}[1]{\setkeys{eqe@tbopts}{#1}%
+% \end{macrocode}
+% We do not allow both \texttt{instred} and \texttt{studented} to be true.
+% \begin{macrocode}
+ \ifisinstred\global\isstudentedfalse\else
+ \ifisstudented\global\isinstredfalse
+ \fi\fi
+% \end{macrocode}
+% \changes{v3.0v}{2012/03/14}{Include \cs{tbMakeFinalCalcs} at end of
+% \cs{textbookOpts}}
+% Added this part in in case \cs{textbookOpts} comes after \cs{marparboxwidth}.
+% \begin{macrocode}
+ \ifdim\tbmarparboxwidth=1sp\else
+ \expandafter\tbMakeFinalCalcs\fi
+}
+% \end{macrocode}
+% As mentioned above, the default settings are \texttt{true} for \texttt{studented} and
+% \texttt{false} for \texttt{instred}.
+% \begin{macrocode}
+\isstudentedtrue
+\isinstredfalse
+\ismarginansfalse
+\isinlineansfalse
+% \end{macrocode}
+% The command is available only in the preamble.
+% \begin{macrocode}
+\@onlypreamble{\textbookOpts}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\turnOffMarAnsOnAnsInline}
+% \begin{macro}{\turnOnMarAnsOffAnsInline}
+% \begin{macro}{\toggleInstrAns}
+% These three command may not be useful in the creation of a textbook, but
+% you never know, I used them in my demo doc \texttt{fortextbook.tex} to turn
+% off and on the display of the answers (change margin to inline, change inline to margin,
+% and toggle margin and inline).
+% \begin{macrocode}
+\newcommand{\turnOffMarAnsOnAnsInline}{%
+ \global\ismarginansfalse\global\isinlineanstrue
+ \insMidMarg{\global\ismarginansfalse
+ \global\isinlineanstrue}%
+}
+\newcommand{\turnOnMarAnsOffAnsInline}{%
+ \global\ismarginanstrue\global\isinlineansfalse
+ \insMidMarg{\global\ismarginanstrue
+ \global\isinlineansfalse}%
+}
+\newcommand{\toggleInstrAns}{%
+ \ifisinstred\ifismarginans
+ \global\ismarginansfalse\global\isinlineanstrue
+ \insMidMarg{\global\ismarginansfalse
+ \global\isinlineanstrue}%
+ \else
+ \global\ismarginanstrue\global\isinlineansfalse
+ \insMidMarg{\global\ismarginanstrue
+ \global\isinlineansfalse}%
+ \fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Macros to display answers/shortsolns}
+% In this section, we develop some commands to display answers or short solutions. These
+% would appear if \texttt{instred=true}, in-line, or in the margins.
+% \begin{macro}{\ANS}
+% Let us begin by creating a simple macro for saving an answer. The answer is displayed ``in-line.''
+% No verbatim-type text allowed, no unbalanced braces unless escaped. \cs{ANS} displays the answer
+% if the \texttt{instred} option of the \texttt{eqe@tbopts} family, i.e., by executing
+%
+% \begin{macro}{\bGrpANS}
+% \begin{macro}{\eGrpANS}
+% Two macros used to group answers in the margins.
+%\changes{v3.0q}{2011/14/22}{Added \cs{bGrpANS} and \cs{eGrpANS}}
+% \begin{macrocode}
+\newif\ifWithinANSGrp\WithinANSGrpfalse
+\newif\ifftb@isANSListOpen\ftb@isANSListOpenfalse
+\newcommand{\bGrpANS}{%
+ \if\probstar*\else
+ \PackageError{eqexam}{Use of \string\bGrpANS\space
+ only applies\MessageBreak to the problem* environment}{Please
+ remove this \string\bGrpANS.}%
+ \fi
+ \ifWithinANSGrp
+ \global\WithinANSGrpfalse
+ \let\tb@next\relax
+ \PackageError{eqexam}{\string\bGrpANS\space already open}
+ {You issued an earlier \string\bGrpANS,
+ but did not close it.}%
+ \else
+ \global\WithinANSGrptrue
+ \global\ftb@isANSListOpenfalse
+ \def\tb@next{\ANS}%
+ \fi
+ \tb@next
+}
+\newcommand{\eGrpANS}{%
+ \if\probstar*\else
+ \PackageError{eqexam}{Use of \string\eGrpANS\space
+ only applies\MessageBreak to the problem* environment}{Please
+ remove this \string\eGrpANS.}%
+ \fi
+ \ifWithinANSGrp
+ \global\WithinANSGrpfalse
+ \def\tb@next{\ANS}%
+ \else
+ \let\tb@next\relax
+ \PackageError{eqexam}{\string\eGrpANS\space already closed}
+ {You've issued two consecutive \string\eGrpANS\space
+ commands,\MessageBreak either remove this one
+ or the previous one.}%
+ \fi
+ \tb@next
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \cs{ANS} begin by checking to see if there is a star that follows the command,
+% this is used for inline answers. If \texttt{*} is present, we do not put the
+% answer inline, but will put it in the margins if the option call for it.
+% \begin{macrocode}
+\newcommand{\ANS}{\@ifstar{\let\tb@istart=1\tb@ANS}
+ {\let\tb@istart=0\tb@ANS}}
+% \end{macrocode}
+% (10/13/2011) The following is the original definition of \cs{tb@ANS} before the creation of
+% the commands \cs{bGrpANS} and \cs{bGrpANS}. We keep this to revert to this definition
+% if this new feature causes problems.
+%\begin{verbatim}
+%\newcommand{\tb@ANS}[1]{%
+% \ifisinstred
+% \ifisinlineans\if\tb@istart0\ANSFmt{\theeqquestionnoi}{#1}\fi\fi
+% \ifismarginans
+% \edef\eqe@prehold{\noexpand\par\kern0pt\noindent
+% \if\probstar*%
+% \noexpand\begin{eqeList}[\tb@wparts@len]{%
+% \noexpand\eqedsplyOnlyFrst{\theeqquestionnoi}%
+% {\thepartno}\noexpand\eqe@hspannerMrg
+% \noexpand\makebox[\noexpand\tbmrgpartwdth]%
+% {\noexpand\tb@mrgPartFmt{\thepartno}}}%
+% \else
+% \noexpand\begin{eqeList}%
+% {\noexpand\tb@mrgDigitFmt{%
+% \theeqquestionnoi\eqe@decPointMrg}}%
+% \fi
+% }\expandafter\insMidMarg%
+% \expandafter{\eqe@prehold#1\end{eqeList}}%
+% \fi
+% \fi
+%}
+%\end{verbatim}
+% \DescribeMacro{\ftb@defineInsSpan} is used when there is an optional
+% argument for \cs{ANS}. It formats the range of parts,
+% for example, (a)--(c). This macro can be redefined, I suppose, to meet
+% the needs of the author.
+% \begin{macrocode}
+\def\ftb@defineInsSpan#1{\def\ftb@argi{#1}\ifx\ftb@argi\@empty
+ \def\ftb@InsSpan{}\else\ftb@spanPrts{#1}%
+ \def\ftb@InsSpan{\noexpand\hspace{-\labelsep}%
+ \noexpand\textcolor{MRGPARTcolor}{--}\noexpand
+ \makebox[\noexpand\tbmrgpartwdth]{\noexpand
+ \tb@mrgPartFmt{\ftb@EndSpanPrts}}\eqe@hspannerMrg}\fi
+}
+% \end{macrocode}
+% \DescribeMacro{\ftb@spanPrts} calculates the letter of the end of the
+% range. \texttt{\#1} is passed by \cs{ANS} (\cs{tb@ANS}, actually). For
+% example if we have \verb!\ANS[2]{...}!, \texttt{\#1=2}.
+% \begin{macrocode}
+\def\ftb@spanPrts#1{{%
+ \advance\value{partno}by#1\relax
+ \xdef\ftb@EndSpanPrts{\thepartno}}%
+}
+% \end{macrocode}
+% \DescribeMacro{\ftb@EqeListPrtsFmt} is the internal formatting used within the \texttt{eqeList} for the part letter.
+% \begin{macrocode}
+\def\ftb@EqeListPrtsFmt{\noexpand
+ \makebox[\noexpand\tbmrgpartwdth]{\noexpand
+ \tb@mrgPartFmt{\thepartno}}\nobreak
+}
+% \end{macrocode}
+% \DescribeMacro{\ftb@OpenEqeListPrts} opens an \texttt{eqeList} environment,
+% and displays the question number (optionally) and the part number.
+% \begin{macrocode}
+\def\ftb@OpenEqeListPrts{\noexpand
+ \begin{eqeList}[\tb@wparts@len]{\noexpand
+ \eqedsplyOnlyFrst{\theeqquestionnoi}%
+ {\thepartno}\noexpand\eqe@hspannerMrg\ftb@EqeListPrtsFmt}%
+}
+% \end{macrocode}
+% \DescribeMacro{\ftb@CloseEqeList} closes the \texttt{eqeList} after
+% inserting \cs{qe@prehold} and the content, \texttt{\#1}.
+% \begin{macrocode}
+\def\ftb@CloseEqeList#1{\expandafter\insMidMarg%
+ \expandafter{\eqe@prehold#1\end{eqeList}}%
+}
+% \end{macrocode}
+% \DescribeMacro{\grpANSDelimiter} delimits the parts
+% when \cs{bGrpANS}/\cs{eGrpANS} is used. May be redefined.
+% \begin{macrocode}
+\newcommand{\grpANSDelimiter}{\textcolor{MRGPARTcolor}{,}\space}
+% \end{macrocode}
+% \DescribeMacro{\tb@ANS} does the main work of \cs{ANS}.
+% \begin{macrocode}
+\newcommand{\tb@ANS}[2][]{%
+ \ifisinstred
+ \ifisinlineans
+ \if\tb@istart0\ANSFmt{\theeqquestionnoi}{#2}\fi
+ \fi
+ \ifismarginans
+ \ftb@defineInsSpan{#1}%
+% \end{macrocode}
+% We create the code that we will introduce into \cs{insMidMarg}, this will
+% be introduced prior to \texttt{\#2}.
+% \begin{macrocode}
+ \edef\eqe@prehold{%
+ \if\probstar*%
+% \end{macrocode}
+% If this question is one with parts...
+% \begin{macrocode}
+ \ifftb@isANSListOpen
+% \end{macrocode}
+% If the list is already open (\cs{ifftb@isANSListOpen}),
+% we just add content to the \texttt{eqeList} environment.
+% \begin{macrocode}
+ \ftb@EqeListPrtsFmt\noexpand\eqe@hspannerMrg
+ \else
+% \end{macrocode}
+% If the list is not open, we start the \texttt{eqeList} environment
+% in the usual way, this also includes the case where \cs{bGrpAns} is
+% not uses, which is normally the case.
+%
+% \begin{macrocode}
+ \noexpand\par\kern0pt\noindent
+ \ftb@OpenEqeListPrts\ftb@InsSpan
+ \fi
+ \else
+% \end{macrocode}
+% This is a question without parts.
+% \begin{macrocode}
+ \noexpand\begin{eqeList}%
+ {\noexpand\tb@mrgDigitFmt{%
+ \theeqquestionnoi\eqe@decPointMrg}}%
+ \fi
+ }%
+% \end{macrocode}
+% We have finished constructing \cs{eqe@prehold}. We next set
+% \cs{ftb@isANSListOpen} to \texttt{true}, if \cs{WithinANSGrp} is \texttt{true}.
+% \begin{macrocode}
+ \ifWithinANSGrp\global\ftb@isANSListOpentrue\fi
+% \end{macrocode}
+% If we are within an open group, we emit \cs{insMidMarg} with the
+% \cs{eqe@prehold}, followed by \texttt{\#2}, and a comma-space combo,
+% but \emph{we do not close} the \texttt{eqeList} environment.
+% \begin{macrocode}
+ \ifWithinANSGrp
+ \expandafter\insMidMarg\expandafter
+ {\eqe@prehold#2\grpANSDelimiter}%
+ \else
+% \end{macrocode}
+% This is the normal case, we insert \cs{eqe@prehold}, \texttt{\#2}, and
+% close the \texttt{eqeList} environment.
+%
+% \begin{macrocode}
+ \expandafter\insMidMarg%
+ \expandafter{\eqe@prehold#2\end{eqeList}}%
+ \global\ftb@isANSListOpenfalse
+ \fi
+ \fi % \ifismarginans
+ \fi %\ifisinstred
+}
+% \end{macrocode}
+% End (10/13)
+% \begin{environment}{eqeList}
+% An environment used to format the answers in the margins, when
+% \texttt{marginans} is in effect.
+% \begin{macrocode}
+\newenvironment{eqeList}[2][\tb@woparts@len]{\begin{list}{#2}{%
+ \def\argi{#1}\setlength{\labelwidth}{#1}%
+ \ifx\argi\tb@wparts@len
+ \settowidth{\labelsep}{\eqe@prtsepMrg}\else
+ \settowidth{\labelsep}{\eqe@hspannerMrg}\fi
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
+ \setlength{\parskip}{0pt}\setlength{\partopsep}{0pt}%
+ \setlength{\topsep}{1pt}\setlength{\parsep}{0pt}%
+ \setlength{\itemindent}{0pt}\setlength{\itemsep}{3pt}%
+}\item\relax}{\end{list}}
+% \end{macrocode}
+% \end{environment}
+% \paragraph*{Formatting Answers and Solutions}
+% \begin{macro}{\mrgDigitFmt}
+% Format of the digit (and the decimal point) for the answers in the margins.
+%\begin{verbatim}
+%\mrgDigitFmt{\textbf{#1}}
+%\mrgPartFmt{\textbf{(\hfil#1\hfil)}}
+%\setMarIndents[\bfseries\normalsize\normalfont]{00}{(d)}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\mrgDigitFmt}[1]{\def\tb@mrgDigitFmt##1{#1}}
+\mrgDigitFmt{#1}
+% \end{macrocode}
+% \begin{macro}{\mrgPartFmt}
+% Format of the part (including possibly the parentheses), example give above.
+% \begin{macrocode}
+\definecolor{MRGPARTcolor}{named}{black}
+\newcommand{\mrgPartFmt}[1]{\def\tb@mrgPartFmt##1{#1}}
+\mrgPartFmt{\textcolor{MRGPARTcolor}{(\hfil#1\hfil)}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{ANScolor}
+% The default color of the answers that appear in the margins or inline.
+% \begin{macrocode}
+\definecolor{ANScolor}{rgb}{0,0,.8}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ANSFmt}
+% The command that sets the format, may be redefined as needed. Used in the
+% \cs{ANS} command above.
+% \begin{macrocode}
+\newcommand{\ANSFmt}[2]{\textcolor{ANScolor}{#2}}
+% \end{macrocode}
+% \end{macro}
+% We have two environments that we use in three different situations:
+%\begin{itemize}
+% \item \texttt{eqequestions} environment: (1) Used to control the display of the
+% \texttt{probset} environment within the body of the textbook; (2) used
+% to control the display of the solutions ``in the back of the book.''
+% \item \texttt{eqeList} environment: Used for displaying answers in the margin of
+% the book, when the appropriate options allow it.
+%\end{itemize}
+% We want to be able to manipulate some of the parameters of these three
+% situation, independently of each other. There are several issues, setting
+% what I have been calling the gutter width, and the display of the problem
+% numbers.
+%\par\medskip\noindent
+% We define four commands for each of the three situations described above. The names
+% have a pattern to them, and similarly named commands have the same use.
+%
+% The numbering of the problems has the pattern: \verb*!dd. (a) !
+% We provide convenience commands to give these internal macros values
+% \begin{macro}{\prbDecPt}
+% \begin{macro}{\prbPrtsep}
+% \begin{macro}{\prbNumPrtsep}
+% Basic parameters for the problems in the body of the text.
+% \begin{macrocode}
+\def\eqe@decPointPrb{.} % decimal point of prob number
+\def\eqe@prtsepPrb{\ } % prob with parts, space after part
+\def\eqe@hspannerPrb{\ } % space after prob number
+\providecommand{\prbDecPt}[1]{\def\eqe@decPointPrb{#1}}
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\prbNumPrtsep}[1]{\def\eqe@hspannerPrb{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\solDecPt}
+% \begin{macro}{\solPrtsep}
+% \begin{macro}{\solNumPrtsep}
+% Basic parameters for the problems in the solution sets.
+% \begin{macrocode}
+\def\eqedecPointSoln{.} % decimal point of prob number
+\def\eqe@prtsepSoln{\ } % prob with parts, space after part
+\def\eqe@hspannerSoln{\ } % space after prob number
+\newcommand{\solDecPt}[1]{\def\eqedecPointSoln{#1}}
+\newcommand{\solPrtsep}[1]{\def\eqe@prtsepSoln{#1}}
+\providecommand{\solNumPrtsep}[1]{\def\eqe@hspannerSoln{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\mrgDecPt}
+% \begin{macro}{\mrgPrtsep}
+% \begin{macro}{\mrgNumPrtsep}
+% Basic parameters for the problems in the margins.
+% \begin{macrocode}
+\def\eqe@decPointMrg{.} % decimal point of prob number
+\def\eqe@prtsepMrg{\ } % prob with parts, space after part
+\def\eqe@hspannerMrg{\ } % space after prob number
+\newcommand{\mrgDecPt}[1]{\def\eqe@decPointMrg{#1}}
+\newcommand{\mrgPrtsep}[1]{\def\eqe@prtsepMrg{#1}}
+\newcommand{\mrgNumPrtsep}[1]{\def\eqe@hspannerMrg{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setMarIndents}
+% Sets some dimensions used by the \texttt{eqeList} environment.
+% \cs{tb@woparts@len} is calculated and
+% is used as the default gutter width in \texttt{eqeList}. \cs{tb@wparts@len}
+% is used for the gutter width for the gutter width when there is a problem
+% with parts. Finally, \cs{tbmrgpartwdth} in \cs{ANS} and is used for the width
+% of a \cs{makebox} that enclosed the part letter.
+% \begin{macrocode}
+\newcommand{\setMarIndents}[3][\normalsize\normalfont]{{%
+ \settowidth{\@tempdima}{#1#2\eqe@decPointMrg}%
+ \xdef\tb@woparts@len{\the\@tempdima}%
+ \settowidth{\@tempdima}%
+ {#1#2\eqe@decPointMrg\eqe@hspannerMrg#3}%
+ \xdef\tb@wparts@len{\the\@tempdima}%
+ \settowidth{\@tempdima}{#1#3}%
+ \xdef\tbmrgpartwdth{\the\@tempdima}%
+}}
+\setMarIndents{00}{(d)}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setSolnIndent}
+% Used to set the some parameters used by \texttt{eqequestions}, in the solutions file.
+% \begin{macrocode}
+\newdimen\solnGutter
+\newcommand{\setSolnIndent}[3][\normalsize\normalfont\bfseries]{%
+ {\settowidth{\@tempdima}{#1#2\eqedecPointSoln\eqe@hspannerSoln}%
+ \global\solnGutter\@tempdima
+ \settowidth{\@tempdima}{#1#3}%
+ \xdef\tbsolnpartwdth{\the\@tempdima}%
+}}
+\setSolnIndent{00}{(d)}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setSolnMargins}
+% This command is written to the solution file, and expanded when that file
+% is input back in. If \cs{solnGutter} is not \texttt{0pt}, we set the length
+% of \cs{eqemargin} using the current value; otherwise, we use the value
+% determined by \cs{setSolnIndent}, above.
+% \begin{macrocode}
+\renewcommand{\setSolnMargins}[1]{%
+ \ifdim\solnGutter=0pt \setlength\eqemargin{#1}\else
+ \setlength\eqemargin{\solnGutter}\fi}
+%\newcommand{\defaultSolnIndent}{\gdef\solnGutter{0pt}}
+\newcommand{\defaultSolnIndent}{\global\solnGutter=0pt}
+\defaultSolnIndent
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\prbNumFmt}
+% \begin{macro}{\solWoPrtsFmt}
+% \begin{macro}{\solWPrtsFmt}
+% We redefine \cs{exlabelformat}, \cs{exsllabelformat}, and
+% \cs{exsllabelformatwp}. They are defined in such a way as
+% to simply their modification through a series of simple
+% formatting commands. The defaults are
+%\begin{verbatim}
+%\prbNumFmt{\textbf{#1}}
+%\solWoPrtsFmt{\textbf{#1}}
+%\solWPrtsFmt{\textbf{#1}}{(\hfil#2\hfil)}
+%\end{verbatim}
+% \begin{macrocode}
+\renewcommand{\exlabelformat}{%
+ \tbprbNumFmt{\theeqquestionnoi\eqe@decPointPrb}}
+% \end{macrocode}
+% \cs{prbNumFmt} is the format for the number of the problems
+% in the body of the text. The argument \texttt{\#1} is a symbolic
+% argument for the question number.
+% \begin{macrocode}
+\newcommand{\prbNumFmt}[1]{\def\tbprbNumFmt##1{#1\eqe@hspannerPrb}}
+\prbNumFmt{\textbf{#1}}
+% \end{macrocode}
+% Redefine \cs{exsllabelformat}, and \cs{exsllabelformatwp}
+% \begin{macrocode}
+\renewcommand{\exsllabelformat}{\string\tbsolWoPrtsFmt{%
+ \theeqquestionnoi\string\eqedecPointSoln}}
+\renewcommand{\exsllabelformatwp}{\string\tbsolWPrtsFmt%
+ {\string\eqedsplyOnlyFrst{\theeqquestionnoi}{\thepartno}}%
+ {\thepartno}%
+}
+% \end{macrocode}
+% \cs{solWoPrtsFmt} is the format for the number of the problems
+% in the solution set. The argument \texttt{\#1} is a symbolic
+% argument for the question number. \cs{solWPrtsFmt} is the format
+% for a problem with parts in the solution file. \texttt{\#1} is
+% symbolically the question number, and \texttt{\#2} is a
+% symbolic for the part letter.
+% \begin{macrocode}
+\newcommand{\solWoPrtsFmt}[1]{\def\tbsolWoPrtsFmt##1{%
+ \makebox[0pt][r]{#1\eqe@hspannerSoln}}}
+\solWoPrtsFmt{\textbf{#1}}
+\newcommand{\solWPrtsFmt}[2]{\def\tbsolWPrtsFmt##1##2{%
+ \makebox[0pt][r]{#1\eqe@hspannerSoln}%
+ \makebox[\tbsolnpartwdth][l]{#2}\eqe@prtsepSoln%
+}}
+\solWPrtsFmt{\textbf{#1}}{(\hfil#2\hfil)}
+% \end{macrocode}
+% An alternate definition for \cs{solWPrtsFmt}, used by \cs{hangSolWPrtsFmt}.
+% \begin{macrocode}
+\newcommand{\solWPrtsFmt@hang}[2]{%
+ \def\tbsolWPrtsFmt##1##2{%
+ \makebox[0pt][r]{#1\eqe@prtsepSoln%
+ \makebox[\tbsolnpartwdth][l]{#2}\eqe@hspannerSoln}%
+}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\hangSolWPrtsFmt}
+% The command takes two arguments, the same as \cs{solWPrtsFmt}. When this
+% command is executed in the preamble, we get hanging indentation for problems
+% with parts.
+%\changes{v3.0g}{2011/08/15}{Use this to use ``hanging indentation'' for the
+% parts for problems with parts in the solutions file.}
+% \begin{macrocode}
+\let\bpartsmrk\relax
+\let\epartsmrk\relax
+\newcommand{\hangSolWPrtsFmt}[2]{%
+% \end{macrocode}
+% At the beginning and ending of a parts environment, we begin and end
+% a special \texttt{eqepartsquestions} environment, designed to give
+% the desired indentation.
+% \begin{macrocode}
+ \def\prior@parts@hook{%
+ \ifisleadin\else
+ \writeToSolnFile{^^J\protect\bpartsmrk}\fi}%
+ \def\post@parts@hook{%
+ \writeToSolnFile{\protect\epartsmrk^^J}}%
+ \def\bpartsmrk{\global\firstitemtrue\begin{eqepartsquestions}}%
+ \def\epartsmrk{\end{eqepartsquestions}\global\firstitemfalse}%
+% \end{macrocode}
+% We must also redefine \cs{solWPrtsFmt} by letting it to
+% \cs{solWPrtsFmt@hang}, then executing it using the parameters passed.
+% \begin{macrocode}
+ \let\solWPrtsFmt\solWPrtsFmt@hang
+ \solWPrtsFmt{#1}{#2}%
+}
+%\@onlypreamble\hangSolWPrtsFmt
+% \end{macrocode}
+% \end{macro}
+% Define some switches, token registers, and boxes for managing
+% the answers and marginal notes.
+% \begin{macrocode}
+\newif\ifexamenv \examenvfalse
+\newif\iffirstemit \firstemittrue
+\newtoks\txtbkt@ks \txtbkt@ks={}
+\newtoks\txtbkt@ksi \txtbkt@ksi={}
+\newbox\txtbkb@xb@t
+\newbox\txtbkb@xt@p
+\newbox\txtbkb@xh@ld
+\let\tbTopMargin\relax
+\let\tbBotMargin\relax
+\long\def\tb@addtoTopMargin#1{\txtbkt@ksi={#1}%
+ \edef\eqe@tmphold{\the\txtbkt@ksi\the\txtbkt@ks}%
+ \global\txtbkt@ks=\expandafter{\eqe@tmphold}%
+}
+\newcommand{\tb@addtoMargin}[1]{%
+ \edef\eqe@tmphold{\the\txtbkt@ks}%
+ \global\txtbkt@ks=\expandafter{\eqe@tmphold#1}%
+}
+% \end{macrocode}
+% As my first attempt, let's create two comment environmets to be used within
+% the \texttt{solution} environment.
+%\begin{verbatim}
+%\begin{solution}
+%\begin{ssol}
+% <short solution/answer>
+%\end{ssol}
+%\begin{lsol}
+% <long solution>
+%\end{lsol}
+%\end{solution}
+%\end{verbatim}
+% The control of these environments are made through
+% \begin{environment}{lsol}
+% \begin{macro}{\tb@showlsols}
+% Place full (or long) solutions in this environment.
+% \begin{macrocode}
+\newcommand{\tb@showlsols}{\includecomment{lsol}\excludecomment{ssol}}
+% \end{macrocode}
+% \end{macro}
+% \end{environment}
+% \begin{environment}{ssol}
+% \begin{macro}{\tb@showssols}
+% Place short solutions in this environment.
+% \begin{macrocode}
+\newcommand{\tb@showssols}{\includecomment{ssol}\excludecomment{lsol}}
+% \end{macrocode}
+% \end{macro}
+% \end{environment}
+% The default is to show the short solutions.
+% \begin{macrocode}
+\let\tb@soln@choice\tb@showssols
+%\let\tb@sols@choice\tb@showssols
+% \end{macrocode}
+% \subsection{Marginal Matter.} There are three levels in the margins:
+% \begin{enumerate}
+% \item \textbf{Top level}: This is a command \cs{tbTopMargin} with may be
+% redefined between pages. It should have the width of the \cs{parbox}
+% that contains all the content of the margin, this width is \cs{tb@marparboxwidth}
+% (\texttt{\cs{oddsidemargin}-\cs{marginparsep}}). The content \emph{must} be
+% unbreakable across pages. The content of \cs{tbTopMargin} will appear \emph{on
+% every page subsequent to its definition}.
+% \item[] \DescribeMacro{\clearTopMargin} We can clear the top level using the following command
+% \begin{macrocode}
+\newcommand{\clearTopMargin}{\global\let\tbTopMargin\relax}
+% \end{macrocode}
+% \item[] Clearing will take effect on the following page.
+% \item[] \DescribeMacro{\setTopMargin} As a convenience macro, we can create top margin content.
+% Redefinitions will appear on the next page from where the definition was made.
+% \begin{macrocode}
+\newcommand{\setTopMargin}[1]{%
+ \gdef\tbTopMargin{\color@begingroup\normalcolor
+ #1\color@endgroup}%
+ \gdef\tbSaveTopMargin{\color@begingroup\normalcolor
+ #1\color@endgroup}}
+\let\tbTopMargin\@empty
+\let\tbSaveTopMargin\@empty
+% \end{macrocode}
+% \item \textbf{Middle level}: The middle level is the most interesting. You write to it
+% using \cs{insMidMarg}. Normally, this is text. If there is too much text,
+% it will be split off and placed in the middle level of the next page. The command
+% \cs{ANS} also writes to the middle level when the \texttt{instred} and \texttt{marginans} options are
+% taken.
+% \item \textbf{Bottom level}: This is similar to the top level, but on the bottom. The
+% command is named \cs{tbBotMargin} and follows the same rules as \cs{tbTopMargin}.
+% Again, the content of \cs{tbBotMargin} will appear \emph{on every
+% page subsequent to its definition}.
+% \item[] \DescribeMacro{\clearBotMargin} We can clear the bottom level using the following command
+% \begin{macrocode}
+\newcommand{\clearBotMargin}{\global\let\tbBotMargin\relax}
+% \end{macrocode}
+% \item[] Clearing will take effect on the following page.
+% \item[] \DescribeMacro{\setBotMargin} As a convenience macro, we can create bottom margin content.
+% Redefinitions will appear on the next page from where the definition was made.
+% \begin{macrocode}
+\newcommand{\setBotMargin}[1]{\gdef\tbBotMargin{#1}%
+ \gdef\tbSaveBotMargin{#1}}
+\let\tbBotMargin\@empty
+\let\tbSaveBotMargin\@empty
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\restoreLastTopMargin}{\expandafter\setTopMargin
+ \expandafter{\tbSaveTopMargin}}
+\newcommand{\restoreLastBotMargin}{\expandafter\setBotMargin
+ \expandafter{\tbSaveBotMargin}}
+% \end{macrocode}
+% \end{enumerate}
+%
+% \begin{macro}{\insMidMarg}
+% \cs{insMidMarg} is a \cs{parbox} that will hold the material in the margin.
+% \begin{macro}{\MarParBoxFmt}
+% The formatting for the marginal \cs{parbox}
+% \begin{macrocode}
+\newcommand{\MarParBoxFmt}{\normalsfcodes
+ \normalfont\normalsize\normalbaselines\parindent0pt
+ \vbadness\@Mi \hbadness5000 \tolerance9999
+ \parskip0pt\raggedright %\spaceskip=0pt\xspaceskip=0pt
+ \setlength{\linewidth}{\tbmarparboxwidth}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tbmarparboxwidth}
+% The width of the margin box. Initial value of \texttt{1sp}, if the user does not
+% reset the value, it is a package error.
+% \begin{macrocode}
+\newlength\tbmarparboxwidth
+\setlength\tbmarparboxwidth{1sp}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{MidMargcolor}
+% The default color of text of the middle level
+% \begin{macrocode}
+\definecolor{MidMargcolor}{rgb}{0,0,.8}
+\newcommand{\midMargFmt}[1]{%
+ \def\tb@midMargFmt{\normalfont\normalsize\normalcolor#1}}
+\midMargFmt{\color{MidMargcolor}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eqe@MarParBox}
+% This is the actual \cs{parbox} that holds the marginal material. I have two versions
+% of this box, the first one has height \cs{textheight}, the second one has height
+% \texttt{\cs{textheight}+\cs{footskip}}.
+% \begin{macrocode}
+%\def\eqe@MarParBox#1{\parbox[b][\textheight][t]%
+% {\tbmarparboxwidth}{\color{MidMargcolor}#1}}
+\def\eqe@MarParBox#1{\lower\footskip\hbox{%
+ \leavevmode\parbox[b][\textheight+\footskip][t]%
+ {\tbmarparboxwidth}{\tb@midMargFmt#1}}} %
+% \end{macrocode}
+% \end{macro}
+% Finally, we get to the \cs{insMidMarg}, this is used to write to the middle
+% level.
+% \begin{macrocode}
+\newcommand{\insMidMarg}[1]{%
+ \let\eqe@margininsert\@empty
+ \expandafter\tb@addtoMargin\expandafter{\eqe@margininsert#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tbPreMarginHeader}
+% Executed prior to the marginal heading
+% \begin{macro}{\tbPostMarginHeader}
+% Executed after the marginal heading
+% \begin{macro}{HEADERcolor}
+% Default color of a marginal header
+% \begin{macro}{\cngMargHeadColorTo}
+% Changes the marginal header to a named color
+%\changes{v3.0o}{2011/09/20}{Added \cs{cngMargHeadColorTo} and
+% \cs{resetMargHeadColor} to make it easier to change the color
+% of the header globally, or just once.}
+% \begin{macro}{\resetMargHeadColor}
+% Reset the marginal header color to the default, \texttt{HEADERcolor}
+% \begin{macro}{\tbMarginHeaderFmt}
+% Formatting for a marginal header.
+% Format the marginal header, the default is \texttt{HEADERcolor} in bold
+% \begin{macrocode}
+\newcommand{\tbPreMarginHeader}{\par\penalty0 \kern3pt}
+\newcommand{\tbPostMarginHeader}{\par\nobreak}
+\definecolor{HEADERcolor}{named}{black}
+\newcommand{\cngMargHeadColorTo}[1]{\insMidMarg{\gdef\tb@MHC{#1}}}
+\newcommand{\resetMargHeadColor}{\insMidMarg{\gdef\tb@MHC{HEADERcolor}}}
+\resetMargHeadColor
+\newcommand{\tbMarginHeaderFmt}[1]{\textcolor{\tb@MHC}{\textbf{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\insMargHead}
+% Used to insert a general marginal heading into the middle level. The
+% optional parameter allows you to set a mark.
+%
+% \begin{macro}{\insProbHead}
+% Used to insert a marginal heading for a problem set into the middle level.
+% The optional parameter allows you to insert a mark, the default mark is
+% \verb!#1 \tbcontinued!.
+% \begin{macrocode}
+\newcommand{\insMargHead}[2][]{% dps
+ \insMidMarg{\tb@marginHeader{#1}{#2}}}
+\newcommand{\insProbHead}[2][]{%
+ \def\tb@argi{#1}\ifx\tb@argi\@empty
+ \protected@xdef\currProbHead{#2 \tbcontinued}\else
+ \protected@xdef\currProbHead{#1}\fi
+ \ifisinstred\ifismarginans
+ \insMidMarg{\tb@marginProbHeader{#1}{#2}}\fi\fi
+}
+\newcommand{\tb@marginProbHeader}[2]{%
+ \def\tb@argi{#1}\ifx\tb@argi\@empty
+ \tb@marginHeader{#2 \tbcontinued}{#2}\else
+ \tb@marginHeader{#1}{#2}\fi
+}
+\newcommand{\tb@marginHeader}[2]{\tbPreMarginHeader
+ \tbMarginHeaderFmt{#2}\def\tb@argi{#1}\ifx\tb@argi\@empty
+ \mark{#2}\else\mark{#1}\fi\tbPostMarginHeader
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\tbcontinued}
+% The continue annot that appear when a problem set flows over to the next page.
+% \begin{macrocode}
+\newcommand{\tbcontinued}{(cont.)}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tbplaceMargins}
+% Redefine this macro to set the locations of the margins we are writing to.
+% \begin{macrocode}
+\newcommand{\marparboxwidth}[1]{%
+ \setlength\tbmarparboxwidth{#1}%
+ \setlength{\marginparwidth}{\tbmarparboxwidth}%
+ \tbMakeFinalCalcs
+}
+\@onlypreamble\marparboxwidth
+\newcommand{\chkmarginboxwidth}{%
+ \ifdim\tbmarparboxwidth=1sp \PackageError{eqexam}%
+ {You have not set the value of\MessageBreak
+ \string\marparboxwidth}%
+ {Define the \string\marparboxwidth\space command}\fi
+}
+% \end{macrocode}
+% \begin{macro}{\ifmarginsonleft}
+% A Boolean switch, if true, all margins are on the left; otherwise, they alternate
+% \begin{macrocode}
+\newif\ifmarginsonleft \marginsonleftfalse
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tbSetupForMargins}
+% We compute \cs{oddsidemargin}, \cs{evensidemargin}, and \cs{textwidth}
+% \begin{macrocode}
+\newcommand{\tbSetupForMargins}{%
+ \ifmarginsonleft
+ \setlength{\oddsidemargin}{\tbmarparboxwidth+\marginparsep}%
+ \setlength{\evensidemargin}{\oddsidemargin}%
+ \setlength{\textwidth}{\paperwidth-2in-\oddsidemargin}%
+ \else
+ \setlength{\oddsidemargin}{0pt}%
+ \setlength{\evensidemargin}{\tbmarparboxwidth+\marginparsep}%
+ \setlength{\textwidth}{%
+ \paperwidth-2in-\oddsidemargin-\evensidemargin}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tbplaceMargins}
+% We calculate the coordinates of the lower left hand corner of the margin \cs{parbox}
+% depending on the value of \cs{ifmarginsonleft}.
+% \begin{macrocode}
+\newcommand{\tbplaceMargins}{{%
+ \setlength{\@tempdima}{%
+ \paperheight-1in-\topmargin-\headheight-\headsep-\textheight}%
+ \xdef\@evenlly{\strip@pt\@tempdima}%
+ \xdef\@oddlly{\@evenlly}%
+ \setlength{\@tempdima}{1in}%
+ \xdef\@evenllx{\strip@pt\@tempdima}%
+ \ifmarginsonleft\else
+ \setlength{\@tempdima}{1in+\textwidth+\marginparsep}\fi
+ \xdef\@oddllx{\strip@pt\@tempdima}%
+}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\tbMakeFinalCalcs}
+% Executed by \cs{marparboxwidth}
+% \begin{macrocode}
+\newcommand{\tbMakeFinalCalcs}{%
+ \tbSetupForMargins
+ \tbplaceMargins
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tbminskipbtnlayers}
+% \cs{tbminskipbtnlayers} is the minimum skip between layers (top, middle, bottom)
+% Executed by \cs{marparboxwidth}
+% \begin{macrocode}
+\newlength\tbminskipbtnlayers
+\setlength{\tbminskipbtnlayers}{6pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newif\ifiscarryover \iscarryoverfalse
+% \end{macrocode}
+% \begin{environment}{carryoverFmt}
+% is a work-around for the color problem
+% experienced with carry over text: Suppose there is a change of
+% color of the text on the previous page, the carry over text will naturally be
+% colored the default color, \texttt{MidMargcolor}. To continue the text with the same color
+% as the one the previous page, we enclose the text in the
+% \texttt{carryoverFmt} environment.
+% \begin{macrocode}
+\newenvironment{carryOverFmt}[1]{#1\let\tb@carryoverFmt\@empty
+ \c@rryoverFmt{#1}}{}
+% \end{macrocode}
+% \end{environment}
+% This command is called by the \texttt{carryOverFmt} environment.
+% it takes its argument, which is a change in color or style, and
+% defines \cs{tb@carryoverFmt}, which will be executed on the next page.
+% \begin{macrocode}
+\def\c@rryoverFmt#1{%
+ \ifx\tb@carryoverFmt\@empty
+ \global\let\tb@carryoverFmt\@empty
+ \xdef\tb@co@page{\thepage}%
+ \gdef\tb@carryoverFmt{\ifnum\thepage>\tb@co@page\relax
+ #1\global\let\tb@carryoverFmt\@empty\fi}%
+ \fi
+}
+\let\tb@carryoverFmt\@empty
+% \end{macrocode}
+% \cs{tb@insertCarryOver} takes its argument, that is always
+% \verb!\unvbox\txtbkb@xb@t}!, and if there is any carryover
+% content, will insert its argument followed by a copy,
+% \cs{tb@rest@reMarginFmt} of the default margin format. This seems
+% to work for recovering from a change of text or style over a page
+% boundary.
+% \begin{macrocode}
+\let\tb@rest@reMarginFmt\relax
+\def\tb@insertCarryOver#1{%
+ \let\tb@rest@reMarginFmt\relax
+ \ifiscarryover\ifx\tb@carryoverFmt\@empty\else
+ \let\tb@rest@reMarginFmt\tb@midMargFmt
+ \tb@carryoverFmt\fi\fi
+ #1 \tb@rest@reMarginFmt
+}
+% \end{macrocode}
+% \begin{macro}{\eqe@tb@shipout}
+% We define the shipout to the margins.\par\medskip\noindent
+% \textbf{Bug:} When I use \textsf{graphicxsp}, embed the picture (such as a logo),
+% and use that picture as the \cs{setTopMargin}, the shipout routine is executed
+% twice for each page. I haven't figured out what causes this, but here is a
+% work around. We record the most recent page number, if it equals the page number
+% of the last iteration of \cs{eqe@tb@shipout}, we do nothing; otherwise,
+% execute the shipout code.
+% \begin{macrocode}
+\newif\iftb@shipoutPermitted \tb@shipoutPermittedtrue
+\newcommand{\turnOnFTBShipout}{\global\tb@shipoutPermittedtrue}
+\newcommand{\turnOffFTBShipout}{\global\tb@shipoutPermittedfalse}
+% \end{macrocode}
+%\changes{v3.7a}{2015/02/26}{Added a new Boolean switch \cs{iftb@shipoutPermitted}
+% to turn off the shipout. Two convenience commands in support are also added,
+% \cs{turnOffFTBShipout} and \cs{turnOffFTBShipout}.}
+% \DescribeMacro{\turnOnFTBShipout}\cmd{\turnOnFTBShipout} turns on the shipout,
+% the default, and \DescribeMacro{\turnOffFTBShipout}\cmd{\turnOffFTBShipout}
+% turns it off.
+% \begin{macrocode}
+\newcommand{\eqe@tb@shipout}{\iftb@shipoutPermitted
+ \ifnum\arabic{page}=\tblastpageshipped
+ \let\tb@so@next\relax\else
+ \xdef\tblastpageshipped{\arabic{page}}%
+ \def\tb@so@next{\eqe@tb@ship@ut}\fi
+ \expandafter\tb@so@next\fi
+}
+\def\tblastpageshipped{-100}
+% \end{macrocode}
+% Here is the actual shipout code for writing to the margins.
+% \begin{macrocode}
+\newcommand{\eqe@tb@ship@ut}{%
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \global\setbox\txtbkb@xb@t=\vbox\bgroup
+ \color@begingroup
+ \hsize=\tbmarparboxwidth
+ \vsize=\textheight
+ \MarParBoxFmt
+ \csname tbTopMargin\endcsname
+ \vskip\tbminskipbtnlayers
+\set@typeset@protect
+ \the\txtbkt@ks
+ \color@endgroup\vfil
+ \egroup
+ \global\setbox\txtbkb@xt@p=\vsplit\txtbkb@xb@t to\textheight
+ \ifvoid\txtbkb@xb@t\global\iscarryoverfalse
+ \else\global\iscarryovertrue\fi
+% \end{macrocode}
+% We have three levels the top (\cs{tbTopMargin}), the bottom (\cs{tbBotMargin}),
+% and the middle (\cs{txtbkt@ks}). \cs{tbTopMargin} is no problem but \cs{tbBotMargin}
+% requires some special attention.
+% \begin{macrocode}
+ \ifx\tbBotMargin\relax\else
+% \end{macrocode}
+% If \cs{tbBotMargin} is not \cs{relax}, we begin by putting \cs{tbBotMargin}
+% into a \cs{vbox} under the same assumptions, and get its height.
+% \begin{macrocode}
+ \bgroup\setbox2=\vbox{%
+ \color@begingroup\normalcolor
+ \hsize=\tbmarparboxwidth\kern0pt
+ \MarParBoxFmt\csname tbBotMargin\endcsname
+ \color@endgroup
+ \kern0pt
+ }%
+% \end{macrocode}
+% We reduce \cs{textheight} by the height of \cs{tbBotMargin}
+% \begin{macrocode}
+ \dimen0=\textheight
+ \advance\dimen0-\ht\txtbkb@xh@ld
+ \advance\dimen0-\tbminskipbtnlayers
+% \end{macrocode}
+% We split off the top material by this amount, the new bottom
+% is in \cs{txtbkb@xt@p} the new top is in \cs{box0}
+% \begin{macrocode}
+ \setbox0=\vsplit\txtbkb@xt@p to \dimen0
+% \end{macrocode}
+% The new bottom (which will overflow to the next page) is the content
+% we clipped off bottom of \cs{txtbkb@xt@p} and the original overflow
+% material still in \cs{txtbkb@xb@t}.
+% \changes{v4.6}{2016/01/18}{Removed \cs{vfil} between unboxing, this allows
+% correct breaking of margin content across pages.}
+% \begin{macrocode}
+ \global\setbox\txtbkb@xb@t=\vbox{%
+ \unvbox\txtbkb@xt@p\unvbox\txtbkb@xb@t}%
+% \end{macrocode}
+% We then patch everything together the new top
+% is in \cs{txtbkb@xt@p} the new top is in \cs{@tempboxa} followed by
+% \cs{tbBotMargin} (in \cs{box}\cs{txtbkb@xh@ld}).
+% \begin{macrocode}
+ \global\setbox\txtbkb@xt@p=\vbox{\unvbox0
+ \vfill\vskip\tbminskipbtnlayers
+ \vfil\unvbox2\relax}\egroup
+ \fi
+ \ifodd\value{page}%
+ \put(\@oddllx,\@oddlly){%
+ \eqe@MarParBox{\unvbox\txtbkb@xt@p}}\else
+ \put(\@evenllx,\@evenlly){%
+ \eqe@MarParBox{\unvbox\txtbkb@xt@p}}\fi
+% \end{macrocode}
+% We see if there is any carry over, if yes, we insert into
+% \cs{txtbkt@ks} for use on the next page, along with a heading,
+% if any.
+% \begin{macrocode}
+ \global\txtbkt@ks={}\ifvoid\txtbkb@xb@t\else
+% \end{macrocode}
+% We test whether these is a \cs{splitbotmark}, if yes, then we will
+% insert it at the top of the next page with formatting.
+% \begin{macrocode}
+ \if!\splitbotmark!\global\let\tb@sbm@exp\relax\else
+ \xdef\tb@sbm@exp{\noexpand\tbPreMarginHeader
+ \noexpand\tbMarginHeaderFmt{\splitbotmark}%
+ \noexpand\tbPostMarginHeader
+ \noexpand\par\kern3pt}%
+ \fi
+% \end{macrocode}
+% Here is the content that will be carried over to the next page,
+% we insert a \cs{splitbotmark} if it is non-empty (\cs{tb@tmp@exp}).
+% \begin{macrocode}
+ \global\txtbkt@ks=\expandafter{\tb@sbm@exp
+ \tb@insertCarryOver{\unvbox\txtbkb@xb@t}}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\insertpageifcarryover}
+% This macro is use to generate a blank page if there is carry over from the
+% previous page. It is place just after the exercises, and before a new chapter of section.
+% The optional argument allows you to insert something into the new page, if one is
+% automatically created. The default is \cs{null}.
+% \begin{macrocode}
+\newcommand{\insertpageifcarryover}[1][\null]{%
+% \end{macrocode}
+% We begin by starting a new page, the shipout routine of previous page
+% will be initialized and can then get an accurate result for
+% \cs{ifiscarryover}.
+% \begin{macrocode}
+ \newpage
+% \end{macrocode}
+% If there is carryover, we create a new page by inserting
+% a content into the page. If there is no carry over, we do
+% now insert any content, and the page will not be created.
+% \begin{macrocode}
+ \ifiscarryover\def\eqeifnext{\csname iftrue\endcsname}%
+ \PackageInfo{eqexam}{Carry over of content in margin
+ from page \thepage.\MessageBreak Creating a blank page}\else
+ \def\eqeifnext{\csname iffalse\endcsname}\fi\eqeifnext#1\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setFullWidthHeader}
+% Makes the running header full width.
+% \begin{macrocode}
+\newcommand{\setFullWidthHeader}{%
+ \setlength{\@tempdima}{%
+ \evensidemargin+\tbmarparboxwidth+\marginparsep}%
+ \edef\@headoffset{\the\@tempdima}%
+ \def\@evenhead{\makebox[0pt]{\makebox[0pt][l]
+ {\thepage}\hspace{\@headoffset}}\hfil\slshape\leftmark}%
+ \ifmarginsonleft
+ \def\@oddhead{\makebox[0pt]{\makebox[0pt][l]
+ {\slshape\rightmark}\hspace{\@headoffset}}\hfil\thepage}%
+ \else
+ \def\@oddhead{{\slshape\rightmark}\hfil\makebox[0pt]
+ {\hspace{\@headoffset}\makebox[0pt][r]{\thepage}}}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{In support of solutions at end of document and chapter}
+%
+% A feature that may not be used much is to have solutions at the end of each chapter.
+% \begin{macro}{\chaptersolutions}
+% If \cs{tb@EndOfChapterExercises} is executed, and
+% \cs{chaptersolutions} is placed between chapters, we can generate
+% solutions at the end of the chapters, instead of at the end of the book.
+% \cs{chaptersolutions} is \cs{let} to \cs{relax} unless
+% \cs{tb@EndOfChapterExercises} is executed. In this case
+% \cs{chaptersolutions} inputs the the \texttt{.sol} file, then
+% then opens it
+% \begin{macrocode}
+\newif\ifchapterexercises \chapterexercisesfalse
+\let\chaptersolutions\relax
+\def\tb@EndOfChapterExercises{%
+ \let\include@solutions@chapter\include@solutions
+ \def\includeexersolutions{%
+ \include@solutions@chapter
+ \global\let\include@solutions\relax
+ }%
+% \end{macrocode}
+% \cs{chaptersolutions} is redefined from \cs{relax}. Input current solutions,
+% close stream, open stream.
+% \begin{macrocode}
+ \def\chaptersolutions{%
+ \includeexersolutions
+ \immediate\closeout\ex@solns
+ \newwrite \ex@solns \global\let\quiz@solns\ex@solns
+ \immediate\openout \ex@solns \jobname.sol
+ \ifvspacewithsolns\writeAllAnsAtEnd\fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\writeallsolutions{\let\chaptersolutions\relax}
+% \end{macrocode}
+% \begin{macro}{\exercisesAtEndOfChapter}
+% If you want solutions at the end of each chapter, you'll have to
+% execute this command in the preamble. See \cs{initChapAfterSolns} for an
+% example of usage.
+% \begin{environment}{afterChapSolns}
+% This comment environment is a convenience for placing content between
+% chapters.
+% \begin{macrocode}
+\excludecomment{afterChapSolns}
+%\includecomment{solnsAtEnd}
+% \end{macrocode}
+% (2014/05/08) There is a problem with nested comment environments when \texttt{solnsAtEnd}
+% contains within it the \cs{includeexersolutions} command, especially when
+% \texttt{multicols} is used. The fix seems to redefine things so that
+% \texttt{solnsAtEnd} writes to a different CUT file
+% \begin{macrocode}
+\def\NewCommentCutFile{\def\CommentCutFile{solnsAtEnd.cut}}
+\def\RestoreCommentCutFile{\def\CommentCutFile{comment.cut}}
+\@ifundefined{BeforeIncludedComment}{%
+\long\def\solnsAtEndcomment
+ #1{\message{Special comment '#1'}%
+ \csarg\def{#1}{\endgroup \message{Processing '#1' comment.}%
+ \NewCommentCutFile\SetUpCutFile
+ % #2 before SetUp, so we can do renaming.
+ \message{Comment '#1' writing to \CommentCutFile.}%
+ \ProcessComment{#1}}%
+ \csarg\def{After#1Comment}{\immediate\closeout\CommentStream
+ \RestoreCommentCutFile\input{solnsAtEnd.cut}\relax}%
+ \CommentEndDef{#1}}
+}{\long\def\solnsAtEndcomment
+ #1{\message{Special comment '#1'}%
+ \csarg\def{After#1Comment}{\immediate\closeout\CommentStream
+ \RestoreCommentCutFile\input{solnsAtEnd.cut}\relax}%
+ \csarg\def{#1}{\NewCommentCutFile\BeforeIncludedComment\relax
+ \ProcessComment{#1}}%
+ \CommentEndDef{#1}}
+ }
+\solnsAtEndcomment{solnsAtEnd}
+\newcommand{\exercisesAtEndOfChapter}{%
+ \ifeq@nosolutions\else
+ \typeout{^^J!!!!!Executing in chapter solutions!!!!!^^J}
+ \chapterexercisestrue\tb@EndOfChapterExercises
+ \ifchapterexercises
+ \csarg\let{solnsAtEnd}\@gobble
+ \excludecomment{solnsAtEnd}%
+ \csarg\let{AftersolnsAtEndComment}\relax
+ \includecomment{afterChapSolns}\else
+ \excludecomment{afterChapSolns}\fi
+ \fi
+}
+\@onlypreamble\exercisesAtEndOfChapter
+% \end{macrocode}
+% \end{environment}
+% \end{macro}
+% \subsection{Modifying and restoring the Layout}
+% The book may need a wide page format and use multi-columns to display homework sets, or
+% solutions at the end if the book.
+% \begin{macro}{\setFullWidthLayout}
+% A command to set the page layout for the solutions in the back of the book. Typically,
+% we do away with the wide margins. We also save the current values of the parameters
+% we are changing so we can restore them later.
+% \begin{macrocode}
+\newcommand{\setFullWidthLayout}{%
+ \saveBasicLayoutParams
+ \setlength{\oddsidemargin}{0in}%
+ \setlength{\evensidemargin}{\oddsidemargin}%
+ \setlength{\textwidth}{\paperwidth-2in}%
+ \setlength{\linewidth}{\paperwidth-2in}%
+ \setlength{\columnseprule}{0pt}%
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+}
+% \end{macrocode}
+% \begin{environment}{fullwidthtext}
+% When \cs{setFullWidthLayout} is in effect, we have the problem of writing text.
+% Originally, I used a \cs{parbox} with width of \cs{linewidth}, but this has it problems
+% when breaking across pages. We have instead an environment for writing; the list environment
+% obeys the current \cs{linewidth}, which is set to \cs{paperwidth-2in}, this latter value
+% may not always be correct (especially when the margins are smaller than 2in.
+% \begin{macrocode}
+\newenvironment{fullwidthtext}{%
+\begin{list}{}{%
+ \setlength{\labelwidth}{0pt}\setlength{\labelsep}{0pt}%
+ \setlength{\itemindent}{0pt}\setlength{\itemsep}{0pt}%
+ \setlength{\topsep}{0pt}\setlength{\parsep}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\leftmargin}{0pt}\setlength{\rightmargin}{0pt}
+}\item\relax}{\end{list}}
+% \end{macrocode}
+% \begin{macro}{\restorePageLayout}
+% Restore the last saved page parameters.
+% \begin{macrocode}
+\newcommand{\restorePageLayout}{\newpage
+ \setlength{\oddsidemargin}{\tb@osms}
+ \setlength\evensidemargin{\tb@esms}
+ \setlength{\textwidth}{\tb@tws}
+ \setlength{\linewidth}{\tb@lws}
+ \setlength{\columnseprule}{\tb@csr}
+}
+% \end{macrocode}
+% Used by \cs{setFullWidthLayout} just before the page layout parameters are changed.
+% \begin{macrocode}
+\newcommand{\saveBasicLayoutParams}{%
+ \xdef\tb@osms{\the\oddsidemargin}%
+ \xdef\tb@esms{\the\evensidemargin}%
+ \xdef\tb@tws{\the\textwidth}%
+ \xdef\tb@lws{\the\linewidth}%
+ \xdef\tb@csr{\the\columnseprule}%
+}
+% \end{macrocode}
+% \begin{macro}{\initChapAfterSolns}
+% Initializes the environment when solutions appear after each chapter.
+% Example of usage, taken from fortextbook.ltx,
+%\begin{verbatim}
+%\begin{afterChapSolns}
+%\initChapAfterSolns
+%\section{Solutions to Chapter Exercises}
+%\begin{fullwidthtext}
+%We present short solutions to the problems.
+%We present short solutions to the problems.
+%We present short solutions to the problems.
+%We present short solutions to the problems.
+%\end{fullwidthtext}
+%\bigskip
+%\begin{multicols}{2}\forceNoColor
+%\chaptersolutions
+%\end{multicols}
+%\restoreFromChapAfterSolns
+%\end{afterChapSolns}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\initChapAfterSolns}{\newpage
+ \clearTopMargin\clearBotMargin
+ \setFullWidthLayout
+}
+% \end{macrocode}
+% \begin{macro}{\restoreFromChapAfterSolns}
+% Restores the saved parameters at the end of the chapter solutions, see
+% above for an example.
+% \begin{macrocode}
+\newcommand{\restoreFromChapAfterSolns}{\newpage
+ \restorePageLayout\setFullWidthHeader
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+% \end{macro}
+% \begin{macrocode}
+%</textbook>
+%<*package>
+% \end{macrocode}
+% \subsection{We shipout in support of \texttt{fortextbook}}
+% We shipout \cs{eqe@tb@shipout} to be placed in the margins on every page.
+% \begin{macrocode}
+\ifeqfortextbook
+\AtBeginDocument{\tb@soln@choice
+ \ifeqwritetomargins\chkmarginboxwidth
+ \AddToShipoutPicture{\eqe@tb@shipout}\fi}
+\fi
+%</package>
+%<*textbook>
+% \end{macrocode}
+%
+% \subsection{Modify \texttt{eqequestions} environment}
+%
+% We adjust the \texttt{eqequestions} environment to minimize spacing between problems.
+% \begin{macrocode}
+\eqequestopsep{0pt}
+\eqequesparsep{0pt}
+\eqequesitemsep{0pt}
+\eqequeslistparindent{0pt}
+\renewenvironment{eqequestions}{%
+ \begin{list}{}{%
+ \ifwithsoldoc\let\solnItemMngt\eqeSolnItemMngt\fi
+ \setlength{\labelwidth}{\eqemargin}%
+ \setlength{\parsep}{\eqeques@parsep}%
+ \setlength{\itemsep}{\eqeques@itemsep}
+ \setlength{\topsep}{\eqeques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\eqeques@listparindent}%dps%
+ \ifwithsoldoc\settowidth{\labelsep}{\eqe@hspannerSoln}\else
+ \settowidth{\labelsep}{\eqe@hspannerPrb}\fi
+ \setlength{\leftmargin}{\labelwidth}%
+ }\ifwithsoldoc\global\firstitemtrue\fi\item\relax}{\end{list}}
+% \end{macrocode}
+% \begin{environment}{eqepartsquestions}
+% This environment is used in the SOL file with problems with parts to hang indent
+% the solutions with parts.
+% \begin{macrocode}
+\newcommand{\eqepquestopsep}[1]{\def\eqepques@topsep{#1}}
+\newcommand{\eqepquesparsep}[1]{\def\eqepques@parsep{#1}}
+\newcommand{\eqepquesitemsep}[1]{\def\eqepques@itemsep{#1}}
+\eqepquestopsep{\eqeques@itemsep}
+\eqepquesparsep{\eqeques@parsep}
+\eqepquesitemsep{\eqeques@itemsep}
+\newenvironment{eqepartsquestions}{%
+ \begin{list}{}{%
+ \settowidth{\labelwidth}{\eqe@prtsepSoln\hspace{\tbsolnpartwdth}}
+ \setlength{\parsep}{\eqepques@parsep}%
+ \setlength{\itemsep}{\eqepques@itemsep}%
+ \setlength{\topsep}{\eqepques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \settowidth{\labelsep}{\eqe@hspannerSoln}
+ \setlength{\leftmargin}{\labelwidth}%
+ }\item\relax}{\end{list}}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Modifications for solutions page}
+%
+% \DescribeMacro{\gobbletoEndEXt} is a command to gobble all content from the current position \cs{eqEXt}
+% down to \cs{endeqEXt}. In the solutions file ends with \cs{par}\cs{medskip}, which
+% we gobble up too. We define \DescribeMacro{\eqExtArg}\cs{eqExtArg} to \cs{thequestionno} so we can use the problem
+% number to filter out the even-problems.
+% \begin{macrocode}
+\long\def\gobbletoEndEXt#1\endeqEXt{\@gobbletwo}
+\def\eqExtArg{\theeqquestionnoi}
+% \end{macrocode}
+% \begin{macrocode}
+\if\load@exerquiz\eqe@NO\DoNotFitItIn\fi
+\let\fillInFormatDefault\@empty
+\def\exerSolnsHeadnToc{}
+\renewcommand{\exerSolnInput}{%
+ \let\webnewpage\relax
+ \ifsolutionsonly\else\immediate\closeout\ex@solns\fi
+ \ifeq@nosolutions\else\newpage % 2012-03-14
+ \iftherearesolutions\eq@solutionshook\eqsolutionshook
+ \ifsolutionsonly\else\newpage\eq@solutionshook
+ \eqsolutionshook\fi
+ \ifx\webnewpage\relax
+ \def\webnewpage{\let\webnewpage\newpage}%
+ \fi
+ \priorexsectitle\exerSolnsHeadnToc\priorexslinput
+ \InputIfFileExists{\jobname.sol}{}{\PackageWarning{exerquiz}
+ {!!! Solutions to exercises not found}}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\eqedsplyOnlyFrst}
+% The default listing of a problem with multiple parts is to typeset
+% \texttt{<num>.}~\texttt{(<part>)}. Here, we do not typeset the number after
+% the first time.
+% \begin{macrocode}
+\setcounter{partno}{1}\edef\firstPartLtr{\thepartno}
+% \end{macrocode}
+% ???? 6/2/11 When part (a) is hidden we need to generate the questions number
+% for the the first non-hidden part. Created \cs{iffrstProbNumShown} to help
+% but it not working yet.
+% \begin{macrocode}
+\newif\iffrstProbNumShown\frstProbNumShownfalse
+\def\tb@insertDecPoint{\ifwithsoldoc\eqedecPointSoln\else
+ \eqe@decPointMrg\fi}
+\newcommand{\eqedsplyOnlyFrst}[2]{\def\thisPart{#2}%
+ \ifx\thisPart\firstPartLtr\global\frstProbNumShowntrue
+ \tb@mrgDigitFmt{#1}\tb@insertDecPoint\else
+ \iffrstProbNumShown\tb@GenProbNum{#1}\else
+ \global\frstProbNumShowntrue\tb@mrgDigitFmt{#1}%
+ \tb@insertDecPoint\fi\fi\global\eqeGenProbNumfalse
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\displayProbNumOnce}
+% If a part is carried over to the next page, it may be necessary to manually
+% force the display of the first digit.
+%\begin{verbatim}
+%\insMidMarg{\displayProbNumOnce}
+%\end{verbatim}
+% \begin{macrocode}
+\newif\ifeqeGenProbNum \eqeGenProbNumfalse
+\newcommand{\displayProbNumOnce}{\global\eqeGenProbNumtrue} %
+%\def\tb@GenProbNum#1{\ifeqeGenProbNum#1\eqe@decPointMrg\else
+\def\tb@GenProbNum#1{\ifeqeGenProbNum#1\tb@insertDecPoint\else
+ \phantom{#1\tb@insertDecPoint}\fi}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\sq@priorhook{\medskip}
+% \end{macrocode}
+% Adjustments of spacing between problems \cs{eqexerskip}, and the check for enough
+% room for the next problem.
+% \begin{macrocode}
+\def\default@fvsizeskip{.1}
+% \end{macrocode}
+% The skip prior to the beginning of an exercise
+% \begin{macrocode}
+\aboveexskip{0pt}
+% \end{macrocode}
+% The skip after the end of an exercise
+% \begin{macrocode}
+\belowexskip{0pt}
+% \end{macrocode}
+% The skip in the solutions file following an exercise OR a part of an exercise
+% The text of this command should be a single token, that's why I've enclosed
+% it in braces. (There is a \cs{@gobbletwo} that gobbles it up for the \texttt{studented} option.)
+% \begin{macrocode}
+\renewcommand\belowexsolnskip{{}}
+% \end{macrocode}
+% We remove the \cs{mark} from this definition, see original definition in \texttt{eqexam.def}
+% \begin{macrocode}
+\renewcommand\exerSolnHeader[3]{%
+ \ifeqforpaper\else\webnewpage\fi%\par
+ \noindent\@ifundefined{hypertarget}
+ {#3}{\hypertarget{#2}{#3}\relax}\solnhspace
+}
+% \end{macrocode}
+% This causes the \texttt{eqexam} environment to write the user friendly name of the exam
+% even if there is only one exam.
+% \begin{macrocode}
+\def\nNumberOfP@rts{0}
+% \end{macrocode}
+%
+% \subsection{Some Convenience/Formatting Commands}
+%
+% \begin{macro}{\preExamSolnHead}
+% \begin{macro}{\examSolnHeadFmt}
+% \begin{macro}{\postExamSolnHead}
+% These are redefinitions of commands defined in \texttt{eqexam},
+% They control the vertical spacing before and after a heading in the
+% solutions at the end of the book, as well as the formatting.
+% \begin{macrocode}
+\renewcommand{\preExamSolnHead}{\medbreak\noindent}
+\renewcommand{\examSolnHeadFmt}[1]{\textbf{#1}}
+\renewcommand{\postExamSolnHead}{\smallskip}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\wrtChapSolnHead}
+% Writes a chapter heading to the solution file, usage,
+%\begin{verbatim}
+%\wrtChapSolnHead{The New {\eqexam}}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\wrtChapSolnHead}[1]{%
+ \writeToSolnFile{%
+ \protect\preChapSolnHead
+ \protect\chapHeadSolnFmt{\protect\ftbFmtChapter{\thechapter}#1}%
+ \protect\postChapSolnHead
+}}
+% \end{macrocode}
+% \begin{macro}{\preChapSolnHead}
+% \begin{macro}{\chapHeadSolnFmt}
+% \begin{macro}{\postChapSolnHead}
+% Same as above, except for chapter headings.
+% \begin{macrocode}
+\newcommand{\preChapSolnHead}{\bigbreak\noindent}
+\newcommand{\chapHeadSolnFmt}[1]{{\large\textbf{#1}}}
+\newcommand{\postChapSolnHead}{\medbreak}
+% \end{macrocode}
+% \begin{macro}{\ftbFmtChapter}
+% This command may (optionally) insert the chapter number into the chapter title passed
+% to \cs{wrtChapSolnHead}. The default is to pass the chapter name (``Chapter'') and chapter number.
+% If you say \verb!\let\ftbFmtChapter\@gobble!, the chapter name and number will not appear.
+% You can redefine this command as desired.
+% \begin{macrocode}
+\newcommand{\ftbFmtChapter}[1]{\chaptername\space#1.\space\ignorespaces}
+% \end{macrocode}
+% In the solution manual, all these
+%chapter commands may be redefined like so
+%\begin{verbatim}
+%\let\preChapSolnHead\relax
+%\let\chapHeadSolnFmt\chapter
+%\let\ftbFmtChapter\@gobble
+%\let\postChapSolnHead\relax
+%\end{verbatim}
+% In fact, let's make this into a command.
+% \begin{macro}{\convertChapHeadToChapters}
+%In the solutions manual, the chapter headings will become chapters of the manual, rather than
+%just a bold faced heading.
+% \begin{macrocode}
+\newcommand{\convertChapHeadToChapters}{%
+ \let\preChapSolnHead\relax
+ \let\chapHeadSolnFmt\chapter
+ \let\ftbFmtChapter\@gobble
+ \let\postChapSolnHead\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\probSet}
+% A simple command to announce the problem set.
+%\begin{verbatim}
+%\subsection*{\probSet{\thesection}}
+%\end{verbatim}
+% See also the definition for the \texttt{probset} environment below.
+% \begin{macrocode}
+\newcommand{\probSet}[1]{Problem Set #1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\annotPage}
+% Use to annotation the page number onto a solution heading, for example,
+%\begin{verbatim}
+%\begin{exam}[\thesection. Another Section\annotPage]{\autoExamName}
+%\end{verbatim}
+% or using the \texttt{probset} environment defined below
+%\begin{verbatim}
+%\begin{probset}{{\thesection} Setting the page layout\annotPage}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\annotPage}{\protect\annotThePage{\thepage}}
+\newcommand{\annotThePage}[1]{\space(page\protect~#1)}
+% \end{macrocode}
+% \end{macro}
+% \subsection{The \texttt{probset} and \texttt{example} environments}
+% We define two environments based. The first (\texttt{probset}) is based on the
+% \texttt{exam} environment; the second (example) is based on the \texttt{exercise} environment.
+% \begin{environment}{probset}
+% A convenience environment, it is the \texttt{exam} environment, renamed, with
+% different arguments. \texttt{\#1} is the heading that will appear in the margins,
+% and \texttt{\#2} is the heading to appear in the back of the book.
+%\changes{v3.0n}{2011/09/18}{Added an \cs{edef} in case \cs{thesection} does not get
+% expanded early enough to display correctly in the margins.}
+% \begin{macrocode}
+\def\noProbHeader{NPH}
+\newenvironment{probset}[2][\probSet{\thesection}]{%
+ \exam[#2]{\autoExamName}\ifx#1\noProbHeader\else
+ \protected@edef\ftb@tmp@exp{\noexpand\insProbHead{#1}}%
+ \ftb@tmp@exp\fi}{\endexam}
+% \end{macrocode}
+% \end{environment}
+% \begin{macrocode}
+\newcounter{exampleno}[section]
+\renewcommand{\theexampleno}{\arabic{section}.\arabic{exampleno}}
+% \end{macrocode}
+% \textbf{Note:} The counter is \texttt{exampleno} and is designed to show the section
+% number and example number, and to reset at each section. To change the definition
+% of \cs{theexampleno} to reflect the chapter number followed by the example number, and
+% resetting at the beginning of each new chapter, the following code is needed.
+%\begin{verbatim}
+%\usepackage{remreset}
+%\@removefromreset{exampleno}{section}
+%\renewcommand{\theexampleno}{\arabic{chapter}.\arabic{exampleno}}
+%\@addtoreset{exampleno}{chapter}
+%\end{verbatim}
+%\DescribeMacro{\examplenoname} is the label placed on the example.
+% \begin{macrocode}
+\newcommand{\examplenoname}{Example}
+% \end{macrocode}
+% \begin{environment}{example}
+% A simple example environment, based on the \texttt{exercise} environment.
+% \begin{macrocode}
+\newenvironment{example}{%\medskip
+ \belowexskip{\medskipamount}\aboveexskip{\medskipamount}%
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{}%
+ \renewcommand\exlabel{Example}%
+ \renewcommand\exlabelformat{\textbf{\exlabel~\theexampleno.}}%
+ \let\eq@fititin\eqfititin
+ \renewcommand\exrtnlabelformat{$\square$}%
+ \def\eqexheader@wrapper{\eqexheader}%
+ \SolutionsAfter
+ \begin{exercise}[exampleno]}{\end{exercise}}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{example*}
+% An example environment with parts.
+% \begin{macrocode}
+\newenvironment{example*}{%\medskip
+ \belowexskip{\medskipamount}\aboveexskip{\medskipamount}%
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{}%
+ \renewcommand\exlabel{Example}%
+ \renewcommand\exlabelformat{\textbf{\exlabel~\theexampleno.}}%
+ \let\eq@fititin\eqfititin
+ \renewcommand\exrtnlabelformat{$\square$}%
+ \def\eqexheader@wrapper{\eqexheader}%
+ \SolutionsAfter
+ \begin{exercise*}[exampleno]}{\end{exercise*}}
+% \end{macrocode}
+% \end{environment}
+% We set some parameters, to values better suited for the option.
+% \begin{macrocode}
+\setDefaultfvsizeskip{.1}
+\nbaselineskip{4}
+% \end{macrocode}
+% \subsection{Commands in support of Solution Manuals}
+% Generally, the solution manual source file should have the same
+% packages as the source file for the book itself, perhaps with a few exceptions,
+% but definitely the \textsf{eqexam} package is required with its \texttt{fortextbook} option.
+%
+% At this time, we provide only two commands, these are \cs{ftbInputBookAux} and
+% \cs{ftbInputSolnFiles}.
+% \begin{macro}{\ftbInputBookAux}
+% This command is used to input the auxiliary files of the master source file. It takes
+% one argument, the name of the master source file (\texttt{myBook.ltx} or \texttt{myBook.tex}).
+% If the extension is not present, it is assumed to be \texttt{.tex}.
+%\changes{v3.0f}{2011/08/13}{Added \cs{ftbInputBookAux} to support solution manual}
+% \begin{macrocode}
+\newcommand{\ftbInputBookAux}[1]{%
+ \filename@parse{#1}\@ifundefined{filename@ext}%
+ {\def\filename@ext{tex}}{}%
+ \xdef\tbBaseName{\filename@base}%
+ \xdef\tbSourceFile{\filename@base.\filename@ext}%
+% \end{macrocode}
+% In the next 4 lines, we save \cs{@writefile} and \cs{@setckpt}, and \cs{let}
+% them to \cs{@gobbletwo}. We restore their definitions after we input the aux files.
+% We include the aux files of the source file in case there are some cross references
+% in the solution files, or the body of the text would like to refer back to the
+% original book. (Seems unlikely.)
+% \begin{macrocode}
+ \let\save@writefile\@writefile
+ \let\@writefile\@gobbletwo
+ \let\save@setckpt\@setckpt
+ \let\@setckpt\@gobbletwo
+ \makeatletter
+ \InputIfFileExists{\tbBaseName.aux}{%
+ \PackageInfo{eqexam}
+ {Inputting auxiliary files of\MessageBreak\tbSourceFile}%
+ }{%
+ \PackageError{eqexam}
+ {Auxiliary files for \tbSourceFile\space were not found}
+ {Compile the source file \tbSourceFile\space
+ three times\MessageBreak%
+ to create the required auxiliary files.}%
+ }%
+ \makeatother
+% \end{macrocode}
+% The solution files really shouldn't have a label, but if we do
+% we'll save the {\LaTeX} definition of \cs{label}, and \cs{let}
+% it two \cs{@gobble}. Within the body of the solutions, the
+% command \cs{ftblabel} may be used to cross reference, if needed.
+%
+% \begin{macrocode}
+ \global\let\ftblabel\label
+ \let\label\@gobble
+ \let\@writefile\save@writefile
+ \let\@setckpt\save@setckpt
+}
+\@onlypreamble\ftbInputBookAux
+% \end{macrocode}
+% \begin{macro}{\restorelabel}
+% \begin{macro}{\gobblelabel}
+% These two are used to restore the usual definition of \cs{label}, and to
+% cancel it out by letting it to \cs{@gobble}.
+% \begin{macrocode}
+\newcommand{\restorelabel}{\global\let\label\ftblabel}
+\newcommand{\gobblelabel}{\let\label\@gobble}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ftbInputSolnFiles}
+% In the body of the text, place \cs{ftbInputSolnFiles} in vertical mode.
+% This will input the \texttt{.sol} file of the master source document.
+% The optional argument is the name of the solution file. The default name
+% is \verb!\tbBaseName.sol!, where \cs{tbBaseName} was defined in
+% \cs{ftbInputBookAux}. If no extension is specified, an extension of \texttt{.sol}
+% is assumed. The original \texttt{.sol} may have changed its name, if someone
+% renamed it (to keep it from being overwritten). The solution file may be editing (by hand)
+% as needed.
+%\changes{v3.0f}{2011/08/13}{Added \cs{ftbInputSolnFiles} to support solution manual}
+% \begin{macrocode}
+\newcommand{\ftbInputSolnFiles}[1][\tbBaseName.sol]{%
+ \filename@parse{#1}\@ifundefined{filename@ext}%
+ {\def\filename@ext{sol}}{}%
+ \xdef\tbBaseName{\filename@base}%
+ \xdef\tbSourceFile{\filename@base.\filename@ext}%
+ \InputIfFileExists{\tbBaseName.sol}{%
+ \PackageInfo{eqexam}
+ {Inputting solutions file \tbBaseName.sol\MessageBreak}%
+ }{%
+ \PackageError{eqexam}
+ {Solutions file for \tbSourceFile\space was not found}%
+ {Compile the source files three times}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</textbook>
+%<*ftbsty>
+% \end{macrocode}
+% \section{\textsf{fortextbook} Style File}\label{fortextbookstyle}
+% One person said it would be nice to separate \textsf{eqexam} from the \texttt{fortextbook} option, and
+% have \textsf{fortextbook} as a \texttt{separate} style (package). Rather than spending tens of hours separating them
+% I create a simple ``wrapper'' package, which simply calls \textsf{eqexam} with the \texttt{fortextook} option along
+% with all the recommended options.
+%\changes{v3.0p}{2011/09/22}{Added the wrapper package fortextbook.}
+%\par\medskip\noindent
+% \textbf{Usage:}
+%\begin{verbatim}
+%\documentclass[twoside,letterpaper]{book}
+%\usepackage[fleqn]{amsmath}
+%\usepackage{fortextbook}
+%...
+%\end{verbatim}
+% Below is the style.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{fortextbook}
+ [2012/03/14 v1.0 A fortextbook Package (dps)]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eqexam}}
+\ProcessOptions
+\RequirePackage[%
+ ftbsolns,fortextbook,usecustomdesign,
+ forcolorpaper,noseparationrule,usexkv
+]{eqexam}
+% \end{macrocode}
+% In support of this style, I've also defined \cs{NoSolutions} to compile the document
+% without creating the solutions at the end of the file (this reduces the amount if IO
+% when compiling). I've also defined a special option \texttt{nocustomdesign} which
+% cancels out the \texttt{usecustomdesign} option.
+% \begin{macrocode}
+%</ftbsty>
+%<*package>
+% \end{macrocode}
+% \begin{center}
+% \rule{.67\linewidth}{.4pt}
+% \end{center}
+% \paragraph*{Input \texttt{eqtextb.def}.}
+% Back in the main package, we choose this point to input the
+% \texttt{fortextbook} code (\texttt{eqtextb.def}) if the
+% \texttt{fortextbook} option is taken.
+% \begin{macrocode}
+\edef\ftbInputEqTextb{\ifeqfortextbook\noexpand
+ \InputIfFileExists{eqtextb.def}{}{}\fi}
+\ftbInputEqTextb
+% \end{macrocode}
+% \begin{center}
+% \rule{.67\linewidth}{.4pt}
+% \end{center}
+%
+% \section{\textsf{xkeyval} Extensions}
+%
+% We load this material if \textsf{xkeyval} exists, and if the document author has specified
+% the \texttt{usexkv} option.
+%
+% \texttt{2014/12/19} Now, the \texttt{usexkeys} is on by default.
+% \begin{macrocode}
+%\IfFileExists{xkeyval}{%
+% \if\eq@usexkeys\eqe@YES\RequirePackage{xkeyval}\else
+% \endinput\fi}{\endinput}
+% \end{macrocode}
+% We redefine selected commands if the user has specified the \texttt{usexkv} option.
+%
+%\paragraph*{New options for \cs{fillin}}
+% \begin{macro}{underline}
+% Underline the fillin
+% \begin{macro}{u,b}
+% Legacy parameters, underlines (\texttt{u}) or leaves a blank space (\texttt{b})
+% \begin{macro}{boxed}
+% Boxes in the response region
+% \begin{macro}{boxpretext}
+% When boxed is use, use this to insert text in front of the answer, for example, \texttt{x=}
+% \begin{macro}{boxsize}
+% When boxed is taken, use boxsize to set the size of the box; permissible choices are
+% tiny, scriptsize, footnotesize, small, normalsize, large, Large, LARGE, huge, Huge
+% \begin{macro}{align}
+% Align the answer within the response region, permissible values are \texttt{l}, \texttt{c}, \texttt{r}.
+% \begin{macro}{color}
+% The color of the response (named color)
+% \begin{macro}{format}
+% Special formatting for the answer, the default is \cs{bfseries}
+% \begin{macro}{enclosesoln}
+% This Boolean key only takes effect when the
+% \texttt{boxed} key is used, and when either the \texttt{nosolutions} or the
+% \texttt{vspacewithsolns} option is taken. When these conditions are
+% met, a box is created around the solution (the third parameter of \cs{fillin}); the solution
+% is enclosed in a \cs{phantom} so it is not seen, but the dimensions of the solution are used.
+% This key allows you to create a box or arbitrary dimension.
+%\changes{v2.0j}{2011/04/19}{added the \texttt{enclosesoln} key to \texttt{eqFillin} family.}
+% \begin{macro}{fitwidth}
+%\changes{v3.0i}{2011/08/18}{added the \texttt{fitwidth} key to \texttt{eqFillin} family.}
+% The \texttt{fitwidth} option uses the natural width of the answer to create the fillin
+% when the \texttt{answerkey} option is in effect; otherwise it uses the second parameter \texttt{\#2}.
+% \begin{macro}{parbox}
+% The \texttt{parbox} parameter may be used to create a multiline \cs{fillin}
+% box. The value of \texttt{parbox} is the same as the first three parameters
+% of the {\LaTeX} command \cs{parbox}, e.g., \verb!parbox={[t][.5in][t]}!.
+% The value needs to be enclosed in braces.
+% \changes{v3.0w}{2012/03/27}{Added \texttt{parbox}}%
+% \begin{macro}{hiddenbox}
+% When the \texttt{boxed} option is used, this option resets the \cs{fbox}
+% parameters to \texttt{0pt}, making the box ``hidden.''
+%\changes{v3.0w}{2012/03/27}{Added \texttt{hiddenbox} options}
+%\par\medskip\noindent
+% Below are the \textsf{xkeyval} definitions of the keys recognized by \cs{fillin}.
+%\changes{v4.5a}{2015/11/10}{Added some logic to the underline key}
+% Add some logic to the \texttt{underline} key, now it is equivalent to the
+% \texttt{b} key.
+% \begin{macrocode}
+\define@boolkey{eqFillin}{underline}[true]{}
+\define@key{eqFillin}{u}[]{\KV@eqFillin@underlinetrue}
+\define@key{eqFillin}{b}[]{\KV@eqFillin@underlinefalse}
+\define@boolkey{eqFillin}{boxed}[true]{}
+\define@key{eqFillin}{boxpretext}[]{\def\eq@fillintext{#1}}
+\let\eq@fillintext\@empty
+% \end{macrocode}
+% If the user just says \texttt{parbox,...} the value of
+% \cs{eq@fillinparbox} is \cs{relax}. If \texttt{parbox}
+% does not appear in the option list, \cs{eq@fillinparbox}
+% has a default value of \cs{@empty}. In this way, we can
+% distinguish between \texttt{parbox} with the empty value,
+% and \texttt{parbox} not present at all.
+% \begin{macrocode}
+\define@key{eqFillin}{parbox}[\relax]{\def\eq@fillinparbox{#1}}
+\let\eq@fillinparbox\@empty
+\define@key{eqFillin}{hiddenbox}[]{%
+ \def\eq@fillinhiddenbox{%
+ \setlength{\fboxrule}{0pt}\setlength{\fboxsep}{0pt}}}
+\let\eq@fillinhiddenbox\@empty
+\define@boolkey{eqFillin}{enclosesoln}[true]{}
+\define@choicekey+{eqFillin}{boxsize}{tiny,scriptsize,footnotesize,%
+ small,normalsize,large,Large,LARGE,huge,Huge}[normalsize]{%
+ \def\eq@eqFillin@boxsize{\text{\csname#1\endcsname\strut}}%
+}{\PackageWarning{eqexam}{Bad choice for boxsize, permissible values
+ are tiny, scriptsize, footnotesize, small, normalsize,
+ large, Large, LARGE, huge and Huge. Try again}}
+\def\eq@eqFillin@boxsize{\text{\normalsize\strut}}
+\define@key{eqFillin}{color}[\eq@fillinColor]{\edef\eq@fillin@color{#1}}
+% \end{macrocode}
+% \changes{v3.0x}{2012/04/03}{Added \cs{eqe@align@hfill} to \texttt{align} property.
+% used to set position of content when \texttt{parbox} is used.}
+% \begin{macrocode}
+\define@choicekey+{eqFillin}{align}[\val\nr]%
+ {l,r,c}[\eq@eqFillin@align@default]{%
+ \def\eq@eqFillin@align{#1}%
+ \ifcase\nr\relax
+ \def\eqe@align@hfill{}\or
+ \def\eqe@align@hfill{\hfill}\or
+ \def\eqe@align@hfill{\hfil}\fi
+ }{%
+ \PackageWarning{eqexam}{Bad choice for align, permissible values
+ are l, r, and c. Try again}}
+\let\eqe@align@hfill\relax
+% \end{macrocode}
+% \DescribeMacro{defaultalign} is used to change the values of the default macros
+% \cs{eq@eqFillin@align@default} and \cs{eqe@align@hfill@default} for the \texttt{align} key together.
+% \begin{macrocode}
+\define@choicekey+{eqFillin}{defaultalign}[\val\nr]{l,r,c}[c]{%
+ \def\eq@eqFillin@align@default{#1}%
+ \ifcase\nr\relax
+ \def\eqe@align@hfill@default{}\or
+ \def\eqe@align@hfill@default{\hfill}\or
+ \def\eqe@align@hfill@default{\hfil}\fi
+ }{%
+ \PackageWarning{eqexam}{Bad choice for defaultalign, permissible
+ values are l, r, and c. Try again}}
+\setkeys{eqFillin}{defaultalign=c}
+% \end{macrocode}
+% \DescribeMacro{\fillInFormatDefault} is the default fill-in format
+% \begin{macrocode}
+\renewcommand{\fillInFormatDefault}{\normalfont}
+\define@key{eqFillin}{format}[\fillInFormatDefault]{%
+ \def\eq@fillin@format{#1}}
+\def\eq@fillin@format{\bfseries}
+\def\eqe@fbox@corr#1{#1-2\fboxsep-2\fboxrule}
+\define@boolkey{eqFillin}{fitwidth}[true]{} %
+% \end{macrocode}
+% \begin{macro}{boxcmd}
+% The \texttt{boxcmd} key is used to define a boxing command. The default
+% is either \cs{boxed} or \cs{fbox}. You can say
+% |boxcmd={\fboxcolor{blue}{yellow}}| to obtain a box with a blue frame
+% and yellow background.
+%\changes{v3.1c}{2012/07/30}{Added boxcmd to \cs{fillin}}
+% \begin{macrocode}
+\@ifundefined{boxed}{%
+ \def\eq@fillin@defaultbox{\fbox}%
+ \def\eq@fillin@boxcmd{\fbox}%
+ }{%
+ \def\eq@fillin@defaultbox{\boxed}%
+ \def\eq@fillin@boxcmd{\boxed}%
+ }
+% \end{macrocode}
+% \begin{macro}{ulcmd}
+% The \texttt{ulcmd} key is used to define a underlining command. The default
+% is either \texttt{underline} or \texttt{underbar}. You can say
+% |ulcmd=underline| to obtained an underline using \cs{underline}.
+%\changes{v3.1c}{2012/07/30}{Added ulcmd to \cs{fillin}}
+% \begin{macrocode}
+\define@key{eqFillin}{boxcmd}%
+ [\eq@fillin@defaultbox]{\def\eq@fillin@boxcmd{#1}}
+\@ifundefined{underbar}{%
+ \def\eq@fillin@defaultul{underline}%
+ \def\eq@fillin@ulcmd{\underline}%
+ }{%
+ \def\eq@fillin@defaultul{underbar}%
+ \def\eq@fillin@ulcmd{\underbar}%
+ }
+% \end{macrocode}
+% (2017/01/28) Added custom underline option, the author must define \cs{ulcustom} and specify
+% \texttt{ulcmd=custom}.
+% \changes{v4.6c}{2017/01/28}{added custom underline option}
+% \begin{macrocode}
+\edef\ulcustom{\expandafter\noexpand\eq@fillin@ulcmd}
+\edef\temp@exp{\noexpand
+\define@choicekey+{eqFillin}{ulcmd}
+ {underbar,underline,custom}[\eq@fillin@defaultul]}
+\temp@exp{\def\@rgi{#1}\def\eq@custom{custom}\ifx\@rgi\eq@custom
+ \def\eq@fillin@ulcmd{\@nameuse{ulcustom}}\else
+ \def\eq@fillin@ulcmd{\@nameuse{#1}}\fi
+}{\PackageWarning{aeb}{Bad choice for ulcmd, permissible values
+ are underbar and underline. Try again}}
+% \end{macrocode}
+% (2013/02/16) \DescribeMacro{lift}\texttt{lift} lifts (actually lowers) the underline by the amount specified.
+% \DescribeMacro{autolift}\texttt{autolift} measures the depth of the content and lifts
+% (actually lowers) the underline by that amount. \DescribeMacro{addtoautolift}\texttt{addtoautolift}
+% works with \texttt{autolift} to add the specified amount to the amount of lift as calculated
+% by \texttt{autolift}.
+% \begin{macrocode}
+\define@key{eqFillin}{lift}[-1sp]{\def\eq@fillin@lift{#1}}
+\define@boolkey{eqFillin}{autolift}[true]{} %
+\define@key{eqFillin}{addtoautolift}[0pt]{%
+ \def\eq@fillin@addtoautolift{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% The macro \cs{eqe@getiiiOpts} is based on early parsing code of \cs{parbox}.
+% It picks up three optional parameters and saves their values under the
+% commands \cs{eqe@opts@argi}, \cs{eqe@opts@argii}, \cs{eqe@opts@argiii}.
+% We are interested in \cs{eqe@opts@argiii}, which specifies the depth of
+% the \cs{parbox}. If the \texttt{boxed} option is taken, we reduce the value
+% of \cs{eqe@opts@argiii} by \texttt{2\string\fboxsep+2\string\fboxrule} so
+% that the height will be exactly as specified. The macro \cs{eqe@getiiiOpts}
+% is used with the \texttt{parbox} option of \cs{fillin}.
+% The macro \cs{eqe@getiiiOpts} has syntax:
+%\begin{quote}
+% \cs{eqe@getiiiOpts[\meta{pos}][\meta{height}][\meta{inner-pos}]}
+%\end{quote}
+% \begin{macrocode}
+\def\eqe@getiiiOpts{%
+ \@ifnextchar[%]
+ \i@eqe@getiiiOpts
+ {\iii@eqe@getiiiOpts{c}{\relax}[s]}}
+% \end{macrocode}
+% Get \meta{pos}
+% \begin{macrocode}
+\def\i@eqe@getiiiOpts[#1]{%
+ \@ifnextchar[%]
+ {\ii@eqe@getiiiOpts{#1}}%
+ {\iii@eqe@getiiiOpts{#1}{\relax}[s]}}
+% \end{macrocode}
+% Get \meta{height}
+% \begin{macrocode}
+\def\ii@eqe@getiiiOpts#1[#2]{%
+ \@ifnextchar[%]
+ {\iii@eqe@getiiiOpts{#1}{#2}}%
+ {\iii@eqe@getiiiOpts{#1}{#2}[#1]}}
+% \end{macrocode}
+% Get \meta{inner-pos}
+% \begin{macrocode}
+\def\iii@eqe@getiiiOpts#1#2[#3]{%
+ \def\eqe@opts@argi{#1}%
+ \def\eqe@opts@argii{#2}%
+ \def\eqe@opts@argiii{#3}}
+% \end{macrocode}
+% \paragraph*{Redefine the \cs{fillin} command}
+% \begin{macro}{\fillin}
+% Re-worked \cs{fillin} to have \textsf{xkeyval} in the optional first parameter.
+% The syntax is illustrated below.
+%\begin{verbatim}
+% \fillin[
+% underline=true|false,u,b,boxed=true|false,boxpretext=<text>,
+% align=l|r|c,boxsize=\tiny|..\normalsize|\large|...|\Huge,
+% color=<namedcolor>,format=<\bfseries|\ttfamily|\Large|whatever>
+% ]{<width>}{<ans>}
+%\end{verbatim}
+% \changes{v4.5}{2015/11/10}{Added \cs{setfillinDefaults}}
+% \DescribeMacro{\setfillinDefaults}\cmd{\setfillinDefaults} sets any default
+% options for \cs{fillin} the document author wants.
+% \begin{macrocode}
+\newcommand{\setfillinDefaults}[1]{\def\eqe@argi{#1}\ifx\eqe@argi\@empty
+ \let\eqe@setfillinDefaults\@empty\else
+ \def\eqe@setfillinDefaults{#1}\fi}
+\let\eqe@setfillinDefaults\@empty
+% \end{macrocode}
+% \begin{macrocode}
+\renewcommand{\fillin}[3][]{\begingroup%
+% \end{macrocode}
+% \cs{ifsp@expand} is defined in \textsf{spdef} package. This is a version
+% if \cs{ifsp} that expands correctly in an \cs{edef}.
+% \begin{macrocode}
+ \expandafter\let\expandafter\ifsp\csname ifsp@expand\endcsname
+% \end{macrocode}
+% Get the keys indicated by the document author.
+% \begin{macrocode}
+ \setkeys{eqFillin}{boxsize,underline=true,boxed=false,%
+ boxpretext,color,format,enclosesoln=false,fitwidth=false,lift,%
+ autolift=false,addtoautolift}%
+ \ifx\eqe@setfillinDefaults\@empty\else
+ \protected@edef\eq@temp@exp{\noexpand
+ \setkeys{eqFillin}{\eqe@setfillinDefaults}}%
+ \eq@temp@exp
+ \fi
+ \protected@edef\eq@temp@exp{\noexpand\setkeys{eqFillin}{#1}}%
+ \eq@temp@exp
+% \end{macrocode}
+% If boxed, we turn underlining off
+% \begin{macrocode}
+ \ifKV@eqFillin@boxed\KV@eqFillin@underlinefalse\fi
+% \end{macrocode}
+% Put \cs{eq@fillin@lift} to \texttt{-2sp} as a signal not to use
+% the \texttt{lift} value in the case the author specified \texttt{autofill}
+% and \texttt{lift}.
+% \begin{macrocode}
+ \ifKV@eqFillin@autolift\def\eq@fillin@lift{-2sp}\fi
+% \end{macrocode}
+% Get the second parameter.
+% \begin{macrocode}
+ \edef\eqe@argii{#2}%
+% \end{macrocode}
+% We reset \cs{fboxrule} and \cs{fboxsep} as needed.
+% \begin{macrocode}
+ \eq@fillinhiddenbox
+% \end{macrocode}
+% If the document author uses the \texttt{hiddenbox} option,
+% this option assumes the \texttt{boxed} option as well so we'll
+% set \cs{KV@eqFillin@boxedtrue} to signal the \texttt{boxed} option.
+% \begin{macrocode}
+ \ifx\eq@fillinhiddenbox\@empty\else
+ \KV@eqFillin@boxedtrue\fi
+% \end{macrocode}
+% If the \texttt{parbox} option is taken, we define the third parameter
+% to be wrapped in a \cs{parbox}.
+% \begin{macrocode}
+ \ifx\eq@fillinparbox\@empty\def\eqe@argiii{#3}\else
+% \end{macrocode}
+% If \texttt{parbox} is specified, we make \texttt{align=l} the default.
+% \begin{macrocode}
+ \ifx\eqe@align@hfill\relax
+ \def\eq@eqFillin@align{l}\def\eqe@align@hfill{}\fi
+% \end{macrocode}
+% If \texttt{parbox} is specified, we get its three optional
+% parameters so we can manipulate the width parameter.
+% \begin{macrocode}
+ \expandafter\eqe@getiiiOpts\eq@fillinparbox\relax
+% \end{macrocode}
+% Now, if this is to be \texttt{boxed}, we reduce the height
+% of the box (\cs{boxed} increases the height by
+% \texttt{2\string\fboxrule+2\string\fboxrule}
+% \begin{macrocode}
+ \ifKV@eqFillin@boxed
+% \end{macrocode}
+% \cs{eqe@opts@argii} has a value of \cs{relax} if the document author
+% did not specify a height for the box.
+% \begin{macrocode}
+ \expandafter\ifx\eqe@opts@argii\relax\else
+ \edef\eqe@opts@argii{\expandafter
+ \eqe@fbox@corr\expandafter{\eqe@opts@argii}}\fi
+ \fi
+% \end{macrocode}
+% We need to feed \cs{parbox} the parameters it expects, so, if the
+% height parameter is not given, we just pass the first argument;
+% otherwise, we pass all three parameters.
+% \begin{macrocode}
+ \edef\eqe@parboxOptArgs{[\eqe@opts@argi]%
+ \expandafter\ifx\eqe@opts@argii\relax\else
+ [\eqe@opts@argii][\eqe@opts@argiii]\fi}%
+% \end{macrocode}
+% Now we build the third parameter, \cs{eqe@argiii}.
+% \begin{macrocode}
+ \def\eqe@argiii{\expandafter\parbox\eqe@parboxOptArgs{\eqe@bw}%
+% \end{macrocode}
+% We insert \cs{eqe@align@hfill}, which is synchronized to the value of
+% the \texttt{align} key to move the \cs{parbox} contents to left aligned, centered,
+% or right aligned. \cs{eqe@align@hfill} will only be effective if \texttt{\#3} is
+% enclosed in a narrower box.
+% \begin{macrocode}
+ {\eqe@align@hfill\ifKV@eqFillin@boxed\eq@fillintext\fi#3}}%
+ \fi
+% \end{macrocode}
+% If \cs{eqe@align@hfill} is still equal to \cs{relax}, give it the default
+% value.
+% \begin{macrocode}
+ \ifx\eqe@align@hfill\relax
+ \def\eq@eqFillin@align{c}%
+ \edef\eqe@align@hfill{\eqe@align@hfill@default}\fi
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\text\fi
+% \end{macrocode}
+% We re-calculate the width of the formatted box
+% \begin{macrocode}
+ \ifx\eq@fillinparbox\@empty
+ \ifx\eqe@argii\@empty
+% \end{macrocode}
+% If no \texttt{parbox} option and if the second argument is empty,
+% we set width based on the natural width of \texttt{\#3}
+% \begin{macrocode}
+ \settowidth{\eqetmplengthb}{\@eqmath{\eq@fillin@format
+ \ifKV@eqFillin@boxed\eq@fillintext\fi\eqe@argiii}}%
+ \ifKV@eqFillin@boxed
+ \setlength{\eqetmplengthb}{%
+ \eqetmplengthb+2\fboxsep+2\fboxrule}%
+ \fi
+ \else
+% \end{macrocode}
+% If \texttt{\#2} is nonempty, we use this value.
+% \begin{macrocode}
+ \setlength{\eqetmplengthb}{#2}%
+ \fi
+ \else
+% \end{macrocode}
+% \texttt{parbox} option with empty second argument, use \cs{linewidth}.
+% for width
+% \begin{macrocode}
+ \ifx\eqe@argii\@empty
+ \setlength{\eqetmplengthb}{\linewidth}%
+ \PackageWarning{eqexam}{Parameter \#2
+ is empty with parbox option,\MessageBreak
+ using \string\linewidth\space for width%
+ }%
+ \else
+% \end{macrocode}
+% \texttt{parbox} option with second argument, use \texttt{\#2}
+% for width
+% \begin{macrocode}
+ \setlength{\eqetmplengthb}{#2}%
+ \fi
+ \fi
+% \end{macrocode}
+% Return \cs{ifsp} to its default definition.
+% \begin{macrocode}
+ \expandafter\let\expandafter\ifsp\csname ifsp@default\endcsname
+% \end{macrocode}
+% Save the final calculated width as \cs{eqe@bw}.
+% \begin{macrocode}
+ \edef\eqe@bw{\the\eqetmplengthb}%
+% \end{macrocode}
+% Set the underline option, \dots
+% \begin{macrocode}
+ \ifKV@eqFillin@underline\let\@fillinFmt\eq@fillin@ulcmd
+ \else\let\@fillinFmt\relax\fi
+% \end{macrocode}
+% however, if \texttt{parbox} is specified, we remove the underlining,
+% if any.
+% \begin{macrocode}
+ \ifx\eq@fillinparbox\@empty\else
+ \ifKV@eqFillin@underline\let\@fillinFmt\relax
+% \ifx\@fillinFmt\underbar\let\@fillinFmt\relax
+ \PackageInfo{eqexam}{Removing underline option, not permissible
+ \MessageBreak with parbox option}%
+ \fi\fi
+% \end{macrocode}
+% \paragraph*{Build the \cs{fillin} box.} After the preliminaries, we
+% create the requested answer field. We begin by building the answer
+% field for the case of \cs{ifeq@proofing} is true (which occurs when
+% the \texttt{answerkey} is used.
+% \begin{macrocode}
+ \ifeq@proofing
+ \ifKV@eqFillin@fitwidth
+% \end{macrocode}
+% If the \texttt{fitwidth} option is taken, we measure the width
+% of the box. Ignored when the \texttt{parbox} option is used.
+% \begin{macrocode}
+ \settowidth{\eqetmplengthb}{\@eqmath{\eq@fillin@format
+ \ifx\eq@fillinparbox\@empty\ifKV@eqFillin@boxed
+ \eq@fillintext\fi\fi\eqe@argiii}}%
+% \end{macrocode}
+% If boxed, we increase the width by
+% \texttt{2\string\fboxsep+2\string\fboxrule}; when content is \cs{boxed},
+% the dimensions are reduced.
+% \begin{macrocode}
+ \ifKV@eqFillin@boxed
+ \setlength{\eqetmplengthb}{%
+ \eqetmplengthb+2\fboxsep+2\fboxrule}%
+ \fi
+ \edef\eqe@bw{\the\eqetmplengthb}%
+ \fi
+% \end{macrocode}
+% We build the fill-in field for the case of \texttt{boxed}.
+% \begin{macrocode}
+ \ifKV@eqFillin@boxed
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\text\fi
+% \mbox{\eq@fillin@format\ensuremath{\boxed{%
+ \setbox\z@\hbox{\@eqmath{\eq@fillin@boxcmd{%
+% \eq@fillin@format\ensuremath{\eq@fillin@boxcmd{%
+ \eq@eqFillin@boxsize
+ \@fillinFmt{%
+ \ifKV@eqFillin@boxed
+ \edef\eqe@bw{\eqe@fbox@corr{\eqe@bw}}%
+ \fi
+% \end{macrocode}
+% \changes{v2.0h}{2011/04/14}{Modified the calculation of the width
+% of \cs{fillin}, the width of enclosing box now equals the requested
+% width}
+% When the boxed option is taken, we adjust the width of the \cs{makebox}
+% to get the desired width \texttt{\#2}.
+% \begin{macrocode}
+ \makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \@eqmath{\eq@fillin@format\color{\eq@fillin@color}%
+ \ifx\eq@fillinparbox\@empty
+ \eq@fillintext\fi\eqe@argiii}}%
+ }% end \@fillinFmt
+ }}}% end \mbox
+ \setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \else
+% \end{macrocode}
+% The content is not to be boxed.
+% \begin{macrocode}
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\relax\fi
+ \setbox\z@\hbox{%
+% \end{macrocode}
+% A value of \texttt{-1sp} signals that \texttt{lift} has not been specified,
+% nor has \texttt{autofill} been specified. So we use the usual code for underlining.
+% \begin{macrocode}
+ \ifdim\eq@fillin@lift=-1sp\relax
+ \@fillinFmt{\makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \color{\eq@fillin@color}%
+ \@eqmath{\eq@fillin@format\eqe@argiii}}}%
+ \else
+% \end{macrocode}
+% (2014/02/16) The \texttt{autolift} or \texttt{lift} keys are specified.
+% If \texttt{autofill}, put contents in a box. Set \cs{@tempdima} to
+% \texttt{\cs{dp2}+\cs{eq@fillin@addtoautolift}}, the latter normally has
+% a value of \texttt{0pt} unless specified on the option list.
+% \begin{macrocode}
+ \ifKV@eqFillin@autolift
+ \setbox2=\hbox{\@eqmath{\eq@fillin@format\eqe@argiii}}%
+ \setlength{\@tempdima}{\dp2+\eq@fillin@addtoautolift}%
+ \edef\eq@fillin@lift{\the\@tempdima}\fi
+% \end{macrocode}
+% (2014/02/16) We lower by an amount of \cs{eq@fillin@lift}, but raise the context
+% by that same amount.
+% \begin{macrocode}
+ \raisebox{-\eq@fillin@lift}{\@fillinFmt{%
+ \makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \color{\eq@fillin@color}%
+ \raisebox{\eq@fillin@lift}{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}}}}%
+ \fi
+ }\setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \fi
+ \else
+% \end{macrocode}
+% We begin the case of not \cs{ifeq@proofing}, that is, the document author
+% is not compiling with the \texttt{answerkey} option.
+% \begin{macrocode}
+ \ifKV@eqFillin@boxed
+% \mbox{\eq@fillin@format\ensuremath{\boxed{%
+% \eq@fillin@format\ensuremath{\eq@fillin@boxcmd{%
+ \setbox\z@\hbox{\@eqmath{\eq@fillin@format
+ \eq@fillin@boxcmd{\eq@eqFillin@boxsize\ifeq@nosolutions
+ \rlap{\@eqmath{\eq@fillintext}}\fi
+ \ifvspacewithsolns\rlap{\@eqmath{\eq@fillintext}}\fi
+ \@fillinFmt{%
+% \end{macrocode}
+% We do a similar thing if proofing is not active (\texttt{nosolutions} is taken).
+% \begin{macrocode}
+ \makebox[\eqe@fbox@corr{\eqe@bw}]{%
+ \ifKV@eqFillin@enclosesoln\phantom
+ {\setlength\eqetmplengthb{\eqe@bw-2\fboxsep}%
+ \edef\eqe@bw{\the\eqetmplengthb}%
+ \@eqmath{\eqe@argiii}}\else
+ \strut\hfill\fi
+ }%
+ }%end \@fillinFmt
+ }}}% end \hbox
+ \setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \else
+% \end{macrocode}
+% This is the case where the field is \emph{not} boxed.
+% \begin{macrocode}
+ \setbox\z@\hbox{%
+ \ifdim\eq@fillin@lift=-1sp\relax
+ \@fillinFmt{\makebox[\eqe@bw]{%
+% \phantom{\@eqmath{\eqe@argiii}}
+ \strut\hfil}}%
+ \else
+ \ifKV@eqFillin@autolift
+ \setbox2=\hbox{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}%
+ \setlength{\@tempdima}%
+ {\dp2+\eq@fillin@addtoautolift}%
+ \edef\eq@fillin@lift{\the\@tempdima}\fi
+ \raisebox{-\eq@fillin@lift}{\@fillinFmt{%
+ \makebox[\eqe@bw]{\raisebox{\eq@fillin@lift}
+ {\phantom{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}\strut\hfil}}}}%
+ \fi
+ }\setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \fi
+% \end{macrocode}
+% \paragraph*{Online Code.} If the \texttt{quiz} environment is defined,
+% and the user has asked for \texttt{online} option we build a text field.
+% \begin{macrocode}
+ \@ifundefined{@quiz}{}{%
+ \if\eq@online\eqe@YES\relax
+ \ifeq@nosolutions
+ \ifeq@solutionsafter\else
+ \ifx\eq@insertverticalspace\eqe@YES\relax
+% \end{macrocode}
+% OK, we get this far if we choose \texttt{online} (or higher) and
+% if \texttt{nosolutions} (which includes the \texttt{vspacewithsolns}
+% option). We require \cs{eq@insertverticalspace} to be \texttt{y}.
+% This last value is the default (\cs{SpaceToWork}).
+% \begin{macrocode}
+ \stepcounter{@cntfillin}%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.part\thepartno.%
+ fi\the@cntfillin%
+ \else
+ eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.fi\the@cntfillin%
+ \fi
+ }\ifx\eq@fillinparbox\@empty
+% \end{macrocode}
+% If the \texttt{parbox} option is not taken, we build a text field with height \texttt{11bp}
+% \begin{macrocode}
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}\presets{\eqe@optsFillIn}]
+ {\fieldName}{#2}{\fillinTotalHeight}}}\else
+% \end{macrocode}
+% If the user has taken the \texttt{parbox} option, then the text field becomes a multiline
+% field, with height equal to the requested height.
+% \begin{macrocode}
+ \setlength{\@tempdima}%
+ {\eqe@opts@argii+2\fboxrule+2\fboxsep}%
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}\presets{\eqe@optsFillIn}
+ \Ff{\FfMultiline}]{\fieldName}{#2}
+ {\fillinTotalHeight}}}\fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \fi\endgroup\space\ignorespaces}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TF}
+% The \cs{TF} command depends on \cs{fillin}, so we make the appropriate changes.
+% \begin{macrocode}
+\renewcommand\TF[2][\defaultTFwidth]{%
+ \def\eqe@next{\fillin[underline]{#1}{#2}}%
+ \ifdim\eq@extralabelsep=0pt\relax\else
+ \if\probstar*\relax\if\exerwparts@cols0
+ \def\eqe@next{\makebox[0pt][r]{%
+ \fillin[underline]{#1}{#2}}\ignorespaces}%
+ \fi\fi\fi\eqe@next
+}
+% \end{macrocode}
+% \end{macro}
+% This marks the end of the \textsf{eqexam} package. dps
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+\endinput
diff --git a/texmf-dist/source/latex/eqexam/eqexam.ins b/texmf-dist/source/latex/eqexam/eqexam.ins
new file mode 100644
index 00000000..531d24ca
--- /dev/null
+++ b/texmf-dist/source/latex/eqexam/eqexam.ins
@@ -0,0 +1,62 @@
+%%
+%% 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{2001/01/22}
+\def\batchfile{eqexam.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{eqexam.sty}{\from{eqexam.dtx}{copyright,package}}
+ \file{eqalone.def}{\from{eqexam.dtx}{copyright,standalone}}
+ \file{eqtextb.def}{\from{eqexam.dtx}{copyright,textbook}}
+ \file{fortextbook.sty}{\from{eqexam.dtx}{copyright,ftbsty}}
+ \file{eqexam.drv}{\from{eqexam.dtx}{copyright,driver}}
+}
+\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/eqexam/script/eqAttach.asp b/texmf-dist/source/latex/eqexam/script/eqAttach.asp
new file mode 100644
index 00000000..f87f8b47
--- /dev/null
+++ b/texmf-dist/source/latex/eqexam/script/eqAttach.asp
@@ -0,0 +1,202 @@
+<%@ LANGUAGE = VBScript%>
+<%
+' Copyright 2005 D. P. Story
+' All Rights Reserved
+' See eqexamman.pdf for some documentation
+
+' NOTICE: 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.
+
+' This script is offered "as is", no guarantees are extended.
+' eqRecord should be extensively tested on your own system
+' until you are satisfied with its functionality and
+' reliability.
+'
+' Note: You need to edit one line below. Search this file for the line that
+' contains the string "mySMTP". Replace this string with your SMTP server.
+
+Response.buffer = True
+
+Dim DebugTxt, DebugFDF
+Dim ErcStatus : ErcStatus = "Problems Reported: "
+DebugTxt = False
+DebugFDF = False
+
+' Send FDF file
+If DebugTxt Then
+ Response.ContentType = "text/html"
+ Response.Write "Debug Info" & "<br>"
+Else
+ Response.ContentType = "application/vnd.fdf"
+End If
+
+On error Resume Next
+
+Dim silentMode : silentMode = False
+Dim stripPath : stripPath = False
+
+If Request.QueryString("silent").Count > 0 Then silentMode = True
+If Request.QueryString("nopath").Count > 0 Then stripPath = True
+
+Rem Create an FDF object
+Set FdfAcx = Server.CreateObject("FdfApp.FdfApp")
+Set FDFout = FdfAcx.FDFCreate
+
+Rem Parse Incoming Data
+Set FDFin = FdfAcx.FDFOpenFromBuf (Request.BinaryRead(Request.TotalBytes))
+
+Dim cPDFPath, pos
+
+If stripPath Then
+ If DebugTxt Then Response.Write "stripPath is true " & "<br>"
+ cPDFPath = FDFin.FDFGetFile
+ pos = InStrRev( cPDFPath, "/")
+ If pos <> 0 Then
+ If DebugTxt Then Response.Write "pos = " & pos & "<br>"
+ cPDFPath = Mid(cPDFPath, pos + 1, Len(cPDFPath) - pos )
+ If DebugTxt Then Response.Write "cPDFPath = " & cPDFPath & "<br>"
+ FDFin.FDFSetFile cPDFPath
+ End If
+End If
+
+Rem Declare some variables
+Dim cBuf
+Dim cTime : cTime = Now
+Dim eqMail, cMailTo, cMailFrom, cMailSubject
+Dim cCourseName, cExam, cStudent, cSID, strMessage, cRetnMsg, eqTab, eqCR
+eqTab = chr(9)
+eqCR = chr(10)
+
+' Get Required Info -------------------
+' The only thing we really need is the email address to send this data to
+cMailTo = FDFin.FDFGetValue("IdInfo.mailTo")
+' cMailFrom = cMailTo
+
+' Get Optional Info ------
+
+On error Resume Next
+cCourseName = "" : cCourseName = Trim(FDFin.FDFGetValue("IdInfo.courseName"))
+
+On error Resume Next
+cExam = "" : cExam = Trim(FDFin.FDFGetValue("IdInfo.examName"))
+
+On error Resume Next
+cStudent = "" : cStudent = Trim(FDFin.FDFGetValue("IdInfo.Name"))
+
+On error Resume Next
+cSID = "" : cSID = Trim(FDFin.FDFGetValue("IdInfo.SID"))
+
+On error Resume Next
+cMailFrom = "" : cMailFrom = Trim(FDFin.FDFGetValue("IdInfo.email"))
+If Trim(cMailFrom) = "" Then cMailFrom = cMailTo
+
+On error Resume Next
+cMailSubject = "" : cMailSubject = FDFin.FDFGetValue("IdInfo.subject")
+If Trim(cMailSubject) = "" Then cMailSubject = "Exam Results: " & cExam & " of " & cCourseName
+
+On error Resume Next
+cRetnMsg = "" : cRetnMsg = Trim(FDFin.FDFGetValue("IdInfo.retnmsg"))
+
+strMessage = "Summary Information:"
+If cCourseName <> "" Then strMessage = strMessage & eqCR & eqTab & "Subject: " & cCourseName
+If cExam <> "" Then strMessage = strMessage & eqCR & eqTab & "Title: " & cExam
+If cStudent <> "" Then strMessage = strMessage & eqCR & eqTab & "Name: " & cStudent
+strMessage = strMessage & eqCR & eqTab & "TimeOfQuiz: " & cTime
+
+If Trim(cRetnMsg) = "" Then
+ cBuf = "Exam results successfully sent to your instructor!"
+Else
+ cBuf = cRetnMsg
+End If
+
+If DebugFDF Then cBuf = cBuf & " " & ErcStatus
+
+If Not silentMode Then FDFout.FDFSetStatus cBuf
+
+' Construct and send e-mail
+
+'CDONTS
+' Set eqMail = CreateObject("CDONTS.NewMail") 'cdots
+
+' CDOSYS
+Set eqMail = Server.CreateObject("CDO.Message")
+eqMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
+eqMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mySMTP"
+eqMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
+eqMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
+' eqMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0
+eqMail.Configuration.Fields.Update
+
+eqMail.To = cMailTo
+' See if there is a comma in the cMailFrom string, if yes, then we have multiple addresses
+' that we are sending to. We extract the first e-mail address as the one we will put in
+' the eqMail.From address.
+position = InStr(1,cMailFrom,",",0)
+If position <> 0 Then cMailFrom = Trim(Mid(cMailFrom,1,position-1))
+eqMail.From = cMailFrom
+eqMail.Subject = cMailSubject
+
+' CDOSSYS or CDONTS
+eqMail.TextBody = strMessage
+' eqMail.Body = strMessage 'cdots
+
+Dim strTempFile
+Dim strTempFolder
+Dim strTemp
+Dim fso
+
+Set fso = CreateObject("Scripting.FileSystemObject")
+Set strTempfolder = fso.GetSpecialFolder(2)
+strTempFile = fso.GetTempName()
+strTempFile = left(strTempFile, len(strTempFile)-4)
+strTemp = strTempFolder & "\" & strTempFile & ".fdf"
+FDFin.FDFSaveToFile strTemp
+
+If DebugTxt Then Response.Write "strTemp = " & strTemp & "<br>"
+
+' CDOSSYS or CDONTS
+eqMail.AddAttachment strTemp
+' eqMail.AttachFile strTemp 'cdots
+
+eqMail.Send
+Set eqMail = Nothing
+' Send back to the browser
+Response.BinaryWrite FDFout.FDFSaveToBuf
+
+' Delete temporary file
+fso.DeleteFile strTemp
+Set fso = nothing
+
+FDFin.FDFClose
+FDFout.FDFClose
+Set FdfAcx = Nothing
+Set FDFin = Nothing
+Set FDFout = Nothing
+
+If DebugTxt Then
+ Response.Write strMessage
+End If
+
+Sub RecordError(field)
+ If Err.Number <> 0 And DebugFDF Then
+ ErcStatus = ErcStatus & " "&field&": " & Err.Description
+ End If
+ If Err.Number <> 0 And DebugTxt Then
+ Response.Write "Set Error: "&field&": " & Err.Description & "<br>"
+ End If
+ Err.Clear
+End Sub
+
+Sub ReportError(ByRef localErr)
+ DebugMsg "Err.Description: ", localErr.Description
+ DebugMsg "Err.Number: ", localErr.Number
+ localErr.Clear
+End Sub
+
+Sub DebugMsg(myText, myEval)
+ If DebugTxt Then Response.Write myText & myEval &"<br>"
+End Sub
+%>
diff --git a/texmf-dist/tex/latex/eqexam/aebrandom.def b/texmf-dist/tex/latex/eqexam/aebrandom.def
new file mode 100644
index 00000000..6a39db37
--- /dev/null
+++ b/texmf-dist/tex/latex/eqexam/aebrandom.def
@@ -0,0 +1,168 @@
+%%
+%% This is file `aebrandom.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,randomize')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-2017 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. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{aebrandom.def}
+ [2017/03/16 v7.8g %
+ Exerquiz support for randomization (dps)]
+\@ifundefined{nextrandom}{\input{random.tex}}{}
+\def\nextrandom{\begingroup
+ \ifnum\randomi<\@ne % then initialize with time
+ \global\randomi\time
+ \global\multiply\randomi388 \global\advance\randomi\year
+ \global\multiply\randomi31 \global\advance\randomi\day
+ \global\multiply\randomi97 \global\advance\randomi\month
+ \message{Randomizer initialized to \the\randomi.}%
+ \nextrandom \nextrandom \nextrandom
+ \xdef\InitSeedValue{\the\randomi}%
+ \fi
+ \count@ii\randomi
+ \divide\count@ii 127773 % modulus = multiplier * 127773 + 2836
+ \count@\count@ii
+ \multiply\count@ii 127773
+ \global\advance\randomi-\count@ii % random mod 127773
+ \global\multiply\randomi 16807
+ \multiply\count@ 2836
+ \global\advance\randomi-\count@
+ \ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi
+ \endgroup
+}
+\def\@ansChoices[#1]%
+{%
+ \global\let\@tempholdSaveAns\@empty % 5/24
+ \global\let\@tempholdSaveChoice\@empty % 5/24
+ \global\let\bChoiceLabel\@empty % 5/24
+ \ifeq@randomizeallChoices
+ \setkeys{bchoice}{#1,random=true}\else
+ \setkeys{bchoice}{#1}\fi
+ \global\eq@tabColCnt=0
+ \ifeq@randomizeChoices\expandafter\@@bChoices
+ \else\expandafter\@@ansChoices\fi
+}
+\def\@@ansChoices{%
+ \ifnum\aeb@numCols=1 % list mode
+ \def\eq@next{\@layoutListAns}%
+ \else % tabular mode
+ \edef\eq@next{\noexpand\@layoutTabularAns{\bChoiceNumCols}}%
+ \fi
+ \eq@next
+}
+\newcount\aeb@numChoices
+\newcount\aeb@ranChoice
+\newtoks\aeb@hold\aeb@hold={}
+\def\@@bChoices{\gdef\@temphold{}\gdef\@tempholdrandom{}%
+ \gdef\@tempholdfreeze{}\aeb@searchfortoken{\@getAns}%
+}
+\def\aeb@searchfortoken#1{%
+ \@ifnextchar\Ans{\advance\aeb@numChoices1\relax#1}
+ {\@ifnextchar\eFreeze{\expandafter\@getFreezeAns\@gobble}
+ {\@ifnextchar\par{\def\@@temp{\aeb@searchfortoken{#1}}%
+ \expandafter\@@temp\@gobble}{\@eChoices}}}%
+}
+\long\def\@getAns\Ans#1\eAns{%
+ \g@addto@macro\@temphold{{\Ans#1\eAns}}%
+ \aeb@searchfortoken{\@getAns}%
+}
+\def\@getFreezeAns{\aeb@searchfortoken{\@@getFreezeAns}}
+\long\def\@@getFreezeAns\Ans#1\eAns{%
+ \g@addto@macro\@tempholdfreeze{\Ans#1\eAns}%
+ \aeb@searchfortoken{\@@getFreezeAns}%
+}
+\long\def\@eChoices#1\eChoices{%
+ \aeb@randomizeChoices{\the\aeb@numChoices}%
+}
+\def\aeb@randomizeChoices#1{%
+ \setrannum{\aeb@ranChoice}{1}{#1}
+ \count0=0 \aeb@hold=\expandafter{\@temphold}\def\@temphold{}%
+ \expandafter\@tfor\expandafter
+ \@temp\expandafter:\expandafter=\the\aeb@hold \do {%
+ \advance\count0by1
+ \ifnum\count0=\aeb@ranChoice
+ \aeb@hold=\expandafter\expandafter\expandafter
+ {\expandafter\@tempholdrandom\@temp}%
+ \edef\@tempholdrandom{\the\aeb@hold}%
+ \else
+ \aeb@hold=\expandafter\expandafter\expandafter
+ {\expandafter\@temphold\expandafter{\@temp}}%
+ \edef\@temphold{\the\aeb@hold}%
+ \fi
+ }%
+ \aeb@numChoices=#1
+ \advance\aeb@numChoices-1
+ \ifnum\aeb@numChoices=0\relax
+ \def\aeb@next{\aeb@finishedRandomizing}\else
+ \def\aeb@next{\aeb@randomizeChoices{\the\aeb@numChoices}}\fi
+ \aeb@next
+}
+\def\aeb@finishedRandomizing{%
+ \aeb@hold=\expandafter\expandafter\expandafter
+ {\expandafter\@tempholdrandom\@tempholdfreeze}%
+ \gdef\@temphold{}\gdef\@tempholdrandom{}\gdef\@tempholdfreeze{}%
+ \edef\finished@Randomizing{%
+ \noexpand\@@ansChoices
+ \the\aeb@hold
+ \noexpand\eChoices}%
+ \finished@Randomizing
+}
+\def\saveRandomSeed{\PackageInfo{exerquiz}
+ {The command \string\saveRandomSeed\space
+ is deprecated.\MessageBreak Seed automatically saved}}
+\@ifpackageloaded{ran_toks}{%
+ \let\inputRandomSeed\useLastAsSeed
+ \let\useRandomSeed\useThisSeed
+}{%
+ \def\inputRandomSeed{\eq@readRandomData}%
+ \def\useRandomSeed#1{\saveseedfalse\randomi=#1}%
+}
+\def\InitSeedValue{\the\randomi} % dps
+\@ifundefined{ifsaveseed}{\newif\ifsaveseed\saveseedtrue}{} % dps
+\def\eq@writeRandomData
+{%
+ \ifsaveseed
+ \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
+ \immediate\openout \saveseedinfo \jobname_rt.sav
+ \let\verbatim@out\saveseedinfo
+ \def\eqrt@msgi{initializing seed value}%
+ \def\eqrt@msgii{last random number used}%
+ \uccode`c=`\%\uppercase{%
+ \immediate\write\verbatim@out
+ {\InitSeedValue\space c \eqrt@msgi}%
+ \immediate\write\verbatim@out
+ {\the\randomi\space c \eqrt@msgii}%
+ }\immediate\closeout\saveseedinfo
+ \fi
+}
+\AtEndDocument{\eq@writeRandomData}
+\def\eq@readRandomData{\IfFileExists{\jobname_rt.sav}{%
+ \PackageInfo{exerquiz}{Inputting \jobname_rt.sav}%
+ \@ifundefined{readsavfile}{\newread\readsavfile}{}%
+ \openin\readsavfile=\jobname_rt.sav
+ \read\readsavfile to \InitSeedValue
+ \read\readsavfile to \eqlastRandomNum
+ \closein\readsavfile
+ \randomi=\eqlastRandomNum
+ \xdef\InitSeedValue{\the\randomi}%
+ \immediate\closeout\readsavfile
+}{%
+ \PackageInfo{exerquiz}{\jobname_rt.sav cannot
+ be found, \MessageBreak
+ using the random initializer}%
+}}
+\endinput
+%%
+%% End of file `aebrandom.def'.
diff --git a/texmf-dist/tex/latex/eqexam/eqalone.def b/texmf-dist/tex/latex/eqexam/eqalone.def
new file mode 100644
index 00000000..f9e68f24
--- /dev/null
+++ b/texmf-dist/tex/latex/eqexam/eqalone.def
@@ -0,0 +1,44 @@
+%%
+%% This is file `eqalone.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,standalone')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2017 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License 1.2 %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqalone.def}
+ [2012/25/01 v3.0t Minimal code used by eqexam (dps)]
+\@ifundefined{eq@tmpbox}{\newsavebox{\eq@tmpbox}}{}% defined in eforms
+\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{} % defined in eforms
+\def\RadioFieldSize{11bp}
+\newdimen\eqcenterWidget
+\def\centerWidget
+#1{%
+ \eqcenterWidget=#1
+ \eqcenterWidget=.5\eqcenterWidget
+ \advance\eqcenterWidget by-4bp
+}
+\providecommand\previewColor{black}
+\def\eqe@BboxRect#1#2{\hbox{\color{\previewColor}\vbox{\hrule width #1
+ \hbox to#1{\vrule height#2\hfill\vrule height#2}\vfill\hrule}}}
+\def\useRectForMC{\let\Bbox\eqe@BboxRect}
+\def\selectedMC{\useRectForMC}
+\def\Rect#1{\textcolor{\@linkcolor}{#1}}
+\def\eqe@striphbox\mbox#1{#1}
+\newcommand{\ReturnTo}[2]{\eq@fititin{\eqe@striphbox#2}}
+\newcommand{\proofingsymbol}[1]{%
+ \def\@proofingsymbol{\textcolor{\@proofingsymbolColor}{#1}}}
+\endinput
+%%
+%% End of file `eqalone.def'.
diff --git a/texmf-dist/tex/latex/eqexam/eqecus.opt b/texmf-dist/tex/latex/eqexam/eqecus.opt
new file mode 100644
index 00000000..15c45866
--- /dev/null
+++ b/texmf-dist/tex/latex/eqexam/eqecus.opt
@@ -0,0 +1,12 @@
+%
+% AcroTeX Software Development Teams -- 2010
+% http://www.acrotex.net
+%
+% The following options combination of options are special to the
+% @EASE application. Do not change.
+%
+\DeclareOptionX{atbdbopts}{%
+ \ExecuteOptionsX{online,forcolorpaper,nosolutions,nopoints,nototals,nospacetowork,obeylocalversions,myconfig}
+}
+\endinput
+
diff --git a/texmf-dist/tex/latex/eqexam/eqexam.def b/texmf-dist/tex/latex/eqexam/eqexam.def
new file mode 100644
index 00000000..9142ea35
--- /dev/null
+++ b/texmf-dist/tex/latex/eqexam/eqexam.def
@@ -0,0 +1,1651 @@
+%%
+%% This is file `eqexam.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `eqexam')
+%%
+\ProvidesFile{eqexam.def}
+ [2017/03/16 v7.8g %
+ Exerquiz support file for eqexam (dps)]
+\let\eq@YES=y \let\eq@NO=n
+\let\eq@One=1 \let\eq@Zero=0
+\def\eq@r{r}\let\eq@f=f \let\eq@l=l
+\newif\ifeq@noforms \eq@noformsfalse
+\newif\ifeq@noquizsolutions \eq@noquizsolutionsfalse % dps new
+\newif\ifnocorrections \nocorrectionsfalse
+\newif\ifkeepdeclaredvspacing \keepdeclaredvspacingfalse
+\newif\ifeq@nolink \eq@nolinkfalse
+\def\eq@ckglobalhide{\ifeq@globalshowsolutions\eq@hidesolutionfalse\fi}
+\def\hidesymbol{h}\def\Hidesymbol{H}
+\newif\iftherearesolutions \therearesolutionsfalse
+\newif\ifIsRespBox \global\IsRespBoxfalse
+\def\SolutionsAfter{\eq@solutionsaftertrue\eq@nolinktrue}
+\newif\ifcqSA\cqSAfalse
+\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse}
+\def\NoSpaceToWork{\let\eq@insertverticalspace\eq@NO}
+\def\SpaceToWork{\let\eq@insertverticalspace\eq@YES}
+\SpaceToWork
+\long\def\ifNoSolutions#1#2{%
+ \ifeq@nosolutions\expandafter#1\else
+ \expandafter#2\fi
+}
+\newif\ifeq@randomizeChoices \eq@randomizeChoicesfalse
+\newif\ifeq@randomizeallChoices \eq@randomizeallChoicesfalse
+\def\turnOnRandomize{\eq@randomizeallChoicestrue}
+\def\obeyLocalRandomize{\eq@randomizeallChoicesfalse}
+\let\saveRandomSeed\relax
+\let\inputRandomSeed\relax
+\newcommand{\exsolafter}{\eq@exsolafterDefault}
+\newcommand{\resetSolnAfterToDefault}{%
+ \def\exsolafter{\eq@exsolafterDefault}}
+\newcommand{\exsolafterDefault}[1]{\def\eq@exsolafterDefault{#1}%
+ \def\exSolafterDefault{#1}\resetSolnAfterToDefault}
+\exsolafterDefault{\textit{Solution}:}
+\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
+\def\recoverDisplayBelow{\vskip\belowdisplayskip}
+\newcommand{\adjDisplayBelow}{\vskip-\lastskip\vskip-\baselineskip}
+\newcommand{\adjDisplayBelowPlus}{\adjDisplayBelow\recoverDisplayBelow}
+\newcommand\setDefShortQuizLabelName[1]%
+ {\def\eq@defaultShortQuizLabelName{#1}}
+\setDefShortQuizLabelName{Quiz}
+\ifsolutionsonly
+\InputIfFileExists{\jobname_xdefs.cut}{%
+ \typeout{^^JExerquiz|Eqexam: Reading \jobname_xdefs.cut^^J}}
+ {\PackageWarningNoLine{exerquiz|eqexam}{%
+ \jobname_xdefs.cut not found.\MessageBreak
+ Recompile file under the vspacewithsolns\MessageBreak
+ option, then compile with the solutionsonly\MessageBreak
+ option}}
+\else
+\newwrite\ex@solns \immediate\openout \ex@solns \jobname.sol
+\newcommand{\writeToExSolns}[1]{%
+ \set@display@protect
+ \immediate\write\ex@solns{#1}%
+ \set@typeset@protect
+}
+\newwrite\eq@xrefdefns \immediate\openout\eq@xrefdefns\jobname_xdefs.cut
+\fi
+\newwrite\quiz@solns \immediate\openout \quiz@solns \jobname.qsl
+\newcommand{\writeToQzSolns}[1]{%
+ \set@display@protect
+ \immediate\write\quiz@solns{#1}%
+ \set@typeset@protect
+}
+\def\eq@IWAuxOut#1{\immediate\write\@auxout{#1}}
+\def\eq@IWDefs#1{\immediate\write\eq@xrefdefns{#1}}
+\newcounter{eqexno} \setcounter{eqexno}{0}
+\newcounter{@exno} \setcounter{@exno}{0} % running exno
+\newcounter{quizno} \setcounter{quizno}{0}
+\renewcommand\thequizno{\alph{quizno}}
+\newcounter{eqpointvalue} \setcounter{eqpointvalue}{0}
+\newlength\eq@tmplength
+\newlength\eqtmplength
+\newcounter{questionno}
+\newcounter{eqquestionnoi}
+\newcounter{eqquestionnoii}
+\newcounter{eqquestionnoiii}
+\newcount\@eqquestiondepth \@eqquestiondepth=0
+\newcounter{partno}
+\newif\ifuseNumForParts\useNumForPartsfalse
+\def\alphaParts{\def\partnoFmt{\alph}\useNumForPartsfalse}\alphaParts
+\def\numberParts{\def\partnoFmt{\arabic}\useNumForPartstrue}
+\renewcommand\thepartno{\partnoFmt{partno}}
+\newtoks\eq@scratchtoks
+\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}
+\providecommand\PBS[1]{\let\temp=\\#1\let\\=\temp}
+\newcommand{\belowexskip}[1]{\setlength{\eq@tmplength}{#1}%
+ \edef\eq@exerskip{\noexpand\removelastparskip
+ \noexpand\vskip\the\eq@tmplength\relax\kern0pt}}
+\let\eqexerskip\belowexskip
+\belowexskip{\medskipamount}
+\newcommand{\aboveexskip}[1]{\setlength{\eq@tmplength}{#1}%
+ \edef\eq@priorexskip{\noexpand\vskip\the\eq@tmplength\relax
+ \kern0pt}}
+\let\priorexskip\aboveexskip
+\aboveexskip{\medskipamount}
+\let\eq@postexerciseHook\relax
+\newcommand\belowexsolnskip{\protect\medskip}
+\def\removelastparskip{\ifdim\parskip>0pt\vskip-\parskip\fi}
+\let\marginparpriorhook\@empty % used to material before the exercise
+\let\marginparafterhook\@empty % used to material after the exercise
+\let\afterlabelhskip\space
+\let\exersolnheadhook\@empty
+\let\exer@solnheadhook\@empty
+\newcommand{\eqexheader}
+{%
+ \mbox{\color{\@nolinkcolor}\if\exerstar*\exlabelformatwp\else
+ \exlabelformat\fi}%
+}
+\def\eqexheader@wrapper{\hypertarget{qex.\the@exno}{\eqexheader}}
+\newcommand{\partsformat}[1]{\def\eq@partsformat{#1}}
+\partsformat{(\hfil\thepartno\hfil)}
+\newcommand{\defaultpartsformat}{%
+ \partsformat{(\hfil\thepartno\hfil)}}
+\let\exlisttabheaderpriorhook\@empty
+\let\exlisttabheaderafterhook\@empty
+\newcommand{\eqexlisttabheader}
+{%
+ \exlisttabheaderpriorhook
+ \color{\@nolinkcolor}\eq@partsformat
+}
+\newcount\cq@Cnt
+\def\cq@CutName{cq-\the\cq@Cnt.cut}
+\let\cq@star\eq@NO
+\newif\ifcqqs \cqqstrue
+\newif\ifcqIsActive \cqIsActivefalse
+\def\cqQS{\@ifstar{\cqQSV}{\cqQSA}}
+\def\cqQSA#1#2{\ifcqqs#1\else#2\fi}
+\@ifpackageloaded{web}{\@ifundefined{IF@AorBswitch}{%
+ \PackageWarningNoLine{A version of the web package
+ dated\MessageBreak 2016/11/03 or later is required
+ for \string\cqQS}}}{}%
+\@ifundefined{webtempboxi}{\newbox\webtempboxi
+ \newbox\webtempboxii}{}
+\providecommand\SHOWTEMPBOXi{\unhbox\webtempboxi}
+\providecommand\TRUEACTIONi{\aftergroup\SETTEMPBOXii}
+\providecommand\TRUEACTIONia{\aftergroup\SHOWTEMPBOXi}
+\providecommand\FALSEACTIONii{\aftergroup\SETTEMPBOXi}
+\providecommand\FALSEACTIONiia{\aftergroup\SHOWTEMPBOXi}
+\providecommand\SETTEMPBOXi{\IF@AorBswitch\else
+ \afterassignment\TRUEACTIONia\fi
+ \setbox\webtempboxi=\hbox}
+\providecommand\SETTEMPBOXii{\IF@AorBswitch
+ \afterassignment\FALSEACTIONiia\fi
+ \setbox\webtempboxii=\hbox}
+\def\cqQSV{\let\IF@AorBswitch\ifcqqs
+ \IF@AorBswitch
+ \def\eq@next{\afterassignment\TRUEACTIONi\SETTEMPBOXi}\else
+ \def\eq@next{\afterassignment\FALSEACTIONii\SETTEMPBOXii}\fi
+ \eq@next}
+\def\eq@turnMessageOff{\let\save@message\message
+ \let\message\@gobble}
+\def\eq@turnMessageOn{\let\message\save@message}
+\def\eqCQDeclarations{\cqqsfalse\eq@turnMessageOff
+ \includecomment{sPage}\excludecomment{qPage}%
+ \eq@turnMessageOn}
+\def\eqTopOfSolnPage{\cqSAfalse
+ \eqCQDeclarations}
+\eq@turnMessageOff
+\includecomment{qPage}\excludecomment{sPage}
+\eq@turnMessageOn
+\newenvironment{cq@CQ}
+{%
+ \global\cqIsActivetrue
+ \global\advance\cq@Cnt1\relax
+ \immediate\openout\CommentStream=\cq@CutName
+ \let\verbatim@out\CommentStream
+ \verbatimwrite
+}{%
+ \endverbatimwrite
+ \immediate\closeout\CommentStream
+ \ifx\cq@star\eq@YES
+ \xdef\cq@INPUTCUT{\noexpand\cqqstrue
+ \noexpand\input{\cq@CutName}\noexpand
+ \def@QuesToSoln}\else
+ \xdef\cq@INPUTCUT{\noexpand\cqqstrue
+ \noexpand\input{\cq@CutName}\noexpand
+ \p@ssQuesToSoln}\fi
+ \aftergroup\cq@INPUTCUT
+}
+\newenvironment{cqs@CQ}{\let\cq@star\eq@YES\cq@CQ}{\endcq@CQ}
+\def\declCQQuesStr#1{\def\cqQStr{#1}}
+\declCQQuesStr{Question}
+\def\declCQSolStr#1{\def\cqSStr{#1}}
+\declCQSolStr{Solution}
+\newcommand\declCQPre[1]{\def\cq@Pre{#1}}
+\declCQPre{\emph{\cqQStr}:\space}
+\newcommand\declCQPost[1]{\def\cq@Post{#1}}
+\declCQPost{\par\medskip\noindent\emph{\cqSStr}:\space\ignorespaces}
+\def\cqFmtPasteQues#1{\cq@Pre\input{#1}\cq@Post}
+\def\p@ssQuesToSoln{\ifeq@hidesolution\else
+ \global\terminexchangedtrue % dps cq
+ \writeToExSolns{\protect
+ \decleqterminex{\protect\cqFmtPasteQues{\cq@CutName}}}\fi}
+\def\declCopyQues#1{\def\cqCopiedQues{#1}}
+\def\def@QuesToSoln{\restoreNormalSolns
+ \global\terminexchangedfalse % dps cq
+ \ifeq@hidesolution\else\writeToExSolns{\protect
+ \declCopyQues{\protect\input{\cq@CutName}}}\fi}
+\newcommand\restoreNormalSolns{%
+ \writeToExSolns{\protect\decleqterminex{\protect\eqterminexDEF}}}
+\newcommand{\eq@CommonCmd}[1]{\def\eq@@CommonCmd{#1}#1}
+\let\eq@@CommonCmd\@empty
+\newcommand\gExCommonCmd[1]{\gdef\gEx@CommonCmd{\eq@CommonCmd{#1}}}
+\let\gEx@CommonCmd\@empty
+\let\endexerhook\@empty
+\newenvironment{exercise}
+{%
+ \let\cq\cq@CQ\let\endcq\endcq@CQ
+ \csarg\let{cq*}\cqs@CQ
+ \csarg\let{endcq*}\endcqs@CQ
+ \par\removelastskip\eq@priorexskip\noindent
+ \let\eqCommonCmd\eq@CommonCmd
+ \def\eq@argi{eqexno}%% use eqexno counter
+ \if\eq@exerstarEnv*\def\exerstar{*}\else\def\exerstar{x}\fi
+ \def\currhideopt{x}%
+ \@ifnextchar[{\exercise@}%
+ {\if\exerstar*\def\eq@next{\@exercise}\else
+ \def\eq@next{\exercise@@}\fi\eq@next}%
+}{\eq@postexerciseHook\endexerhook\par
+ \global\eq@exerciseheadingtrue\removelastskip\eq@exerskip}
+\def\exercise@[#1]{\edef\eq@arg{#1}%
+ \if\eq@arg h\def\currhideopt{h}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse\fi
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \if\eq@arg H%
+ \edef\currhideopt{\Hidesymbol}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse
+ \fi
+ \def\eq@next{\@exercise}% H, no *, no counter
+ \else
+ \def\currhideopt{x}%
+ \ifx\eq@arg\@empty\else\def\eq@argi{#1}\fi
+ \if\exerstar*\def\eq@next{\@exercise}\else
+ \def\eq@next{\exercise@@}\fi
+ \fi
+ \fi
+\eq@next}
+\def\exercise@@{\@ifstar{\def\exerstar{*}\@exercise}{\exercise@@@}}
+\def\exercise@@@{\@ifnextchar[{\exercise@@@@}{\@exercise}}
+\def\exercise@@@@[#1]{\edef\eq@arg{#1}%
+ \if\eq@arg h\def\currhideopt{h}%
+ \eq@hidesolutiontrue\eq@nolinktrue
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse\fi
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \if\eq@arg H\edef\currhideopt{\Hidesymbol}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \def\currhideopt{x}%
+ \PackageWarning{exerquiz}{The option #1 is not recognized}
+ \let\eq@next\relax
+ \fi
+ \fi
+\eq@next}
+\newif\ifeq@exerciseheading \eq@exerciseheadingtrue
+\let\prior@exerSolnHeaderHook\@empty
+\newcommand\exerSolnHeader[3]{%
+ \prior@exerSolnHeaderHook
+ \ifeqforpaper\else\webnewpage\fi\markright{#1}%\par\noindent%
+ #3%
+ \solnhspace
+}
+\let\solnItemMngt\relax
+\let\eqEXt\@gobbletwo
+\let\endeqEXt\relax
+\let\eqExtArg\@empty
+\let\eqFilterArg\@empty
+\let\eqExerSolnHeader\@empty
+\let\solutionparshape\@empty
+\def\eq@pslnaindnt{0pt}
+\let\eq@setPrbSolnAftrIndnt\relax
+\newcommand{\setPrbSolnAftrIndent}[1]{\ifdim#1=0pt
+ \def\eq@pslnaindnt{0pt}\let\eq@setPrbSolnAftrIndnt\relax\else
+ \edef\eq@pslnaindnt{#1}\edef\eq@setPrbSolnAftrIndnt{%
+ \expandafter\noexpand\expandafter\parindent#1\noexpand\relax}\fi
+}
+\newif\if@restorejustify \@restorejustifyfalse
+\newcommand\restoreJustifyOn{\@restorejustifytrue}
+\newcommand\restoreJustifyOff{\@restorejustifyfalse}
+\def\restorejustify{\if@restorejustify
+ \@rightskip\z@skip \rightskip\@rightskip
+ \leftskip\z@skip \let\\\@normalcr\fi}
+\def\@exercise{%
+ \global\let\solutionparshape\@empty
+ \let\verbatim@out=\ex@solns
+ \if\eq@argi0\else\refstepcounter{\eq@argi}\fi\stepcounter{@exno}%
+ \if\exerstar*% if exercise with parts
+ \eq@nolinktrue
+ \else
+ \if\currhideopt H%
+ \else
+ \ifeq@solutionsafter
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide %
+ \ifeq@hidesolution\else
+ \global\let\eqExerSolnHeader\eq@@writeexheader
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifvmode\ifdim\lastskip>\z@
+ \vskip-\lastskip
+ \fi\fi
+ \if\exerstar*%
+ \let\solution\solnexer@woparts
+ \let\endsolution\endsolnexer@woparts
+ \let\parts\exercise@parts
+ \let\endparts\endexercise@parts
+ \else
+ \let\solution\solnexer@woparts
+ \let\endsolution\endsolnexer@woparts
+ \let\parts\relax
+ \let\endparts\relax
+ \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
+ \eq@nolinktrue\fi\fi
+ \fi
+ \eq@initializeContAnnot
+ \ifeq@exerciseheading
+ \prior@questionsHook\marginparpriorhook\noindent\eqexheader@wrapper
+ \afterlabelhskip\marginparafterhook\gEx@CommonCmd
+ \eq@setPrbSolnAftrIndnt\ignorespaces\fi
+}
+\newif\ifterminexchanged \terminexchangedfalse % dps cq
+\newcommand\decleqterminex[1]{\def\eqterminex{#1}}
+\def\eqterminexDEF{\relax\ignorespaces}
+\decleqterminex{\eqterminexDEF}
+\def\eqExerSolnHeaderSngl{%
+ \protect\eqEXt{\eqExtArg}{\eqFilterArg}\protect
+ \solnItemMngt\protect\exerSolnHeader{\exsecrunhead}{ex.\the@exno}%
+ {\exsllabelformat}\exer@solnheadhook
+ \exersolnheadhook\protect\eqterminex
+}
+\def\eq@@writeexheader{\set@display@protect
+ \immediate\write\verbatim@out{\eqExerSolnHeaderSngl}%
+ \set@typeset@protect
+}
+\def\eqExerSolnHeaderList{%
+ \protect\eqEXt{\eqExtArg}{\eqFilterArg}\protect
+ \solnItemMngt\protect\exerSolnHeader{\exsecrunhead}%
+ {ex.\the@exno\thepartno}{\exsllabelformatwp}%
+ \exer@solnheadhook\exersolnheadhook\protect\eqterminex
+}
+\def\eq@@writeexheaderlist{\set@display@protect
+ \immediate\write\verbatim@out{\eqExerSolnHeaderList}%
+ \set@typeset@protect
+}
+\long\def\setsolnspace#1{\def\newsolnspace{#1}%
+ \let\solnspace\newsolnspace}
+\newif\ifeq@ckSolnVspace \eq@ckSolnVspacetrue
+\def\ckSolnOpt{\global\eq@ckSolnVspacetrue}
+\def\noSolnOpt{\global\eq@ckSolnVspacefalse}
+\let\solnhspace\space
+\let\solnspace\space
+\def\solnexer@woparts{\def\bLeaveVspace{x}% = no vertical space added
+ \ifeq@ckSolnVspace
+ \def\eq@next{\@ifnextchar[{\solnexer@@woparts}%
+ {\solnexer@@woparts[\null]}}\else
+ \def\eq@next{\solnexer@@woparts[\null]}\fi
+ \eq@next
+}
+\let\eqPriorVspace\@gobble
+\newif\if@eqlinedfiller \@eqlinedfillerfalse
+\newcommand{\vspaceFiller}[1]{\vfill}
+\newcommand{\vspaceFillerDefault}[1]{\vfill}
+\def\eqWriteLine{\hfill}
+\def\eq@linesXPgs{%
+ \begingroup\offinterlineskip\parskip0pt
+ \@tempcnta=0
+ \@whilenum\@tempcnta<\soln@keys@nLines\relax\do
+ {\vskip0pt\penalty-50\vglue\wlVspace\eqWriteLine
+ \advance\@tempcnta1\relax}\par\endgroup
+}
+\newcommand{\vspaceFmt}[1]{%
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi
+ \ifdim\sameVspace>0pt
+ \let\bLeaveVspace\@empty
+ \def\leavevspace{%
+ \ifx\eq@insertverticalspace\eq@YES\par
+ \eqPriorVspace{#1}{\nobreak\noindent
+ \ifx\soln@keys@nLines\@empty
+ \if@eqlinedfiller
+ \def\eq@lines@next{\vspaceFiller{#1}}\else
+ \def\eq@lines@next{\parbox[b][#1][t]{\linewidth}
+ {\vspaceFiller{#1}}}\fi
+ \else
+ \def\eq@lines@next{\eq@linesXPgs}%
+ \fi\eq@lines@next
+ }%
+ \fi
+ }%
+ \fi
+}
+\define@key{soln@keys}{nLines}[]{\def\soln@keys@nLines{#1}}
+\let\soln@keys@nLines\@empty
+\def\eqKV@errx#1{\xdef\XKV@rm{\@tempa}}
+\def\eqSolnForEqexam#1{%
+ \let\soln@keys@nLines\@empty
+ \setkeys*{soln@keys}{#1}%
+ \ifx\soln@keys@nLines\@empty
+ \ifx\minVspacet@bs\@empty\xdef\sameVspace{\XKV@rm}\else
+ \xdef\sameVspace{\minVspacet@bs}\fi
+ \else
+ \@tempdima\wlVspace
+ \@tempdima=\soln@keys@nLines\@tempdima
+ \xdef\sameVspace{\the\@tempdima}%
+ \ifx\XKV@rm\@empty\else
+ \if@equsedim\let\soln@keys@nLines\@empty
+ \xdef\sameVspace{\XKV@rm}\fi
+ \fi
+ \fi
+ \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
+}
+\def\solnexer@@woparts[#1]{%
+ \ifcqIsActive\else\ifterminexchanged
+ \restoreNormalSolns\fi\fi % dps cq
+ \global\cqIsActivefalse
+ \def\eq@argi{#1}\def\eq@null{\null}%
+ \ifx\eq@argi\@empty\gdef\sameVspace{0pt}\else
+ \ifx\eq@argi\eq@null\gdef\sameVspace{0pt}\else
+ \@ifundefined{PointsOnLeft}{%
+ \let\eqKV@errx@SAVE\KV@errx
+ \let\KV@errx\eqKV@errx\let\XKV@rm\@empty
+ \edef\temp@exp{\noexpand\setkeys*{soln@keys}{#1}}\temp@exp
+ \let\KV@errx\eqKV@errx@SAVE
+ \ifx\soln@keys@nLines\@empty\else
+ \PackageInfo{exerquiz}{%
+ nLines key detected in solution environment,\MessageBreak
+ is not not recognized without eqexam,\MessageBreak
+ will remove it}%
+ \let\soln@keys@nLines\@empty\fi
+ \xdef\sameVspace{\XKV@rm}%
+ }{\eqSolnForEqexam{#1}}%
+ \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
+ \ifvspacewithsolns\vspaceFmt{\sameVspace}\fi
+ \ifeq@nosolutions\ifeq@solutionsafter\else
+ \vspaceFmt{\sameVspace}\fi\fi
+ \fi\fi
+ \solnexer@@@woparts
+}
+\def\solnsafterSkip#1{\setlength{\@tempdima}{#1}%
+ \def\solnsafterSkipAmt{\the\@tempdima}%
+ \def\solutionsafterSkip{\vskip#1\relax}}
+\solnsafterSkip{\smallskipamount}
+\def\eqe@debugVertSkip#1{}
+\def\eqe@showEndHere#1{#1}
+\def\eqe@setStartSolns{%
+ \xdef\eq@startSoln{\the\pagetotal}%
+ \eqe@debugVertSkip{\marginpar{\smash{b[\sameVspace]}}}%
+}
+\let\eqSavedComment\comment
+\let\eqSavedEndCommet\endcomment
+\def\setTabulrSolnEnv{%
+ \@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
+ \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
+ \leftmargin\leftmarginii \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep}%
+ \def\everyparShape{\everypar{\parshape \@ne 0pt \linewidth}}%
+ \reset@doendpe{\parshape \@ne 0pt \linewidth}%
+ \parshape \@ne 0pt \linewidth
+ \everyparShape
+}
+\newif\ifthereissolution
+\let\priorexsolafterList\@empty
+\let\priorexsolafterTab\@empty
+\let\priorexsolafterSngl\@empty
+\def\eq@Hid{H}\def\eq@hid{h}
+\def\solnexer@@@woparts{%
+ \global\thereissolutiontrue
+ \def\exerwparts@cols{0}%
+ \let\verbatim@out\ex@solns
+ \if\currhideopt\eq@Hid
+ \let\minVspacet@bs\@empty
+ \let\procsoln\eqSavedComment
+ \let\endprocsoln\eqSavedEndCommet
+ \def\eq@next{\procsoln}%
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution
+ \let\procsoln\eqSavedComment
+ \let\endprocsoln\eqSavedEndCommet
+ \else
+ \ifx\bLeaveVspace\@empty\leavevspace\fi
+ \ifeq@solutionsafter\else
+ \ifx\eq@@CommonCmd\@empty\else
+ \set@display@protect
+ \immediate\write\verbatim@out{\eq@@CommonCmd}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \let\procsoln\verbatimwrite
+ \let\endprocsoln\endverbatimwrite
+ \fi
+ \def\eq@next{%
+ \ifeq@solutionsafter%\par
+ \removelastskip\removelastparskip
+ \cqSAtrue\eqCQDeclarations
+ \declCopyQues{\input{\cq@CutName}}%
+ \ifx\exsolafter\@empty
+ \ifdim\sameVspace=0pt\eqe@setStartSolns
+ \else
+ \solutionsafterSkip
+ \eqe@setStartSolns
+ \fi
+ \else\par\kern0pt
+ \solutionsafterSkip
+ \noindent\strut\eqe@setStartSolns
+ \fi
+ \parskip\eqeques@parsep
+ \ifx\endparts\endexercise@parts@tabular
+ \eq@setPrbSolnAftrIndnt
+ \restorejustify
+ \fi
+ \ifx\endparts\endexercise@parts@tabular\expandafter
+ \priorexsolafterTab\else
+ \ifx\endparts\endexercise@parts@list\expandafter
+ \priorexsolafterList\else\expandafter
+ \priorexsolafterSngl\fi\fi
+ \exsolafter\space\ignorespaces
+ \solutionparshape
+ \else
+ \eqExerSolnHeader
+ \global\let\eqExerSolnHeader\@empty
+ \global\therearesolutionstrue\expandafter\procsoln
+ \fi
+ }%
+ \fi
+\eq@next}
+\let\endsolnexerhook\@empty
+\let\pkg@endsolnexerhook\@empty
+\let\endsolnexerhookaux\@empty
+\def\eq@fititin#1{\noindent\unskip\nobreak\hfill\penalty100
+ \hskip1em\hbox{}\nobreak\hfill#1}%
+\let\eqfititin\eq@fititin
+\newcommand\eqExerSolnTrailer{%
+ \protect\ReturnTo{page.\the\c@page}%
+ {\protect\mbox{\if\exerstar*\exrtnlabelformatwp\else
+ \exrtnlabelformat\fi}}%
+ \protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi^^J%
+}
+\def\endsolnexer@woparts{%
+ \if\currhideopt H%
+ \ifkeepdeclaredvspacing\vskip\sameVspace\fi
+ \csname endprocsoln\endcsname
+ \else
+ \ifeq@solutionsafter
+ \if\exerstar*%
+ \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
+ \eq@fititin{\mbox{\exrtnlabelformat}}\fi
+ \ifx\istabularexer\eq@YES\kern0pt\else\par\fi
+\ifx\minVspacet@bs\@empty
+ \ifkeepdeclaredvspacing
+ \@tempdima\pagetotal
+ \advance\@tempdima-\eq@startSoln
+ \@tempdimb\sameVspace\relax
+ \ifdim\@tempdimb>1sp\relax
+ \advance\@tempdimb-\@tempdima
+ \ifdim\@tempdimb>0pt\vglue\@tempdimb\kern0pt
+ \let\eqe@showEndHere\@gobble
+ \edef\tmp@exp{\noexpand\marginpar{%
+ \noexpand\smash{e: adj \the\@tempdimb}}}%
+ \eqe@debugVertSkip{\tmp@exp}%
+ \fi
+ \fi
+ \fi
+ \eqe@showEndHere{\eqe@debugVertSkip{\marginpar{\smash{e}}}}%
+\fi
+ \else
+ \endprocsoln
+ \eq@ckglobalhide
+ \ifeq@hidesolution\else
+ \endsolnexerhookaux
+ \set@display@protect
+ \immediate\write\verbatim@out{\eqExerSolnTrailer}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \fi
+\pkg@endsolnexerhook\endsolnexerhook}
+\let\eq@exerstarEnv\relax
+\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
+{\endexercise}
+\def\exerwparts@cols{0}
+\let\topofpartshook\relax
+\let\@listiiredefined\eq@NO
+\let\itsExerParts\eq@NO
+\newif\if@tableadinitem\@tableadinitemfalse
+\newcommand{\tableadin@external}{\PackageError{exerquiz/eqexam}
+ {The \string\tableadin\space command is designed\MessageBreak
+ for the problem* environment of eqexam}{Use \string\tableadin\space
+ in the problem* environment of eqexam.}%
+}
+\let\tableadin\tableadin@external
+\newcommand{\eq@tableadinparts}{\item\relax
+ \PackageError{exerquiz/eqexam}{The \string\tableadin\space
+ command is not allowed in the\MessageBreak
+ parts environment}{Use \string\tableadin\space
+ in the problem* environment of eqexam.}%
+}
+\let\istabularexer\eq@NO % dps 2016/12/16
+\def\exercise@parts{\let\rlspar\relax
+ \ifx\solutionparshape\@empty
+ \let\isitleadin\eq@NO
+ \if@tableadinitem\let\rlspar\@gobbletwo\fi
+ \else\let\isitleadin\eq@YES\fi
+ \rlspar\removelastskip\par
+ \if\isitleadin\eq@YES
+ \def\eqparts@topsep{0pt}% dps88
+ \vskip\eqparts@itemsep\relax\fi % dps88
+ \topofpartshook
+ \let\itsExerParts\eq@YES % dps17
+ \global\let\@listiiredefined\eq@NO
+ \def\exerwparts@cols{0}\@ifnextchar[%
+ {%
+ \if@tableadinitem\else\removelastparskip\fi % dps11
+ \let\endparts\endexercise@parts@tabular\exercise@parts@tabular@}%
+ {\let\endparts\endexercise@parts@list\exercise@parts@list}}
+\def\eq@extralabelsep{0pt}
+\newcommand{\setPartsWidth}[1]{\def\parts@indent{\normalfont#1}%
+ \bgroup\settowidth{\eq@tmpdima}{\parts@indent}%
+ \xdef\widthOfParts{\the\eq@tmpdima}\egroup}
+\setPartsWidth{(d)}
+\def\eqe@prtsepPrb{\ }
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
+\eqequesparsep{0pt}
+\let\prior@parts@hook\@empty
+\let\post@parts@hook\@empty
+\let\abovepartshook\@empty
+\let\belowpartshook\@empty
+\let\eqp@rtc@lcm@rk\relax
+\let\eq@insertContAnnot\relax
+\def\eq@item@common{\eq@insertContAnnot\eqp@rtc@lcm@rk
+ \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
+ \@ifnextchar[{\@ckhide}{\eq@item}}
+\newcommand{\partsitemsep}[1]{{% dps88
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@itemsep{\the\@tempdima}}}
+\let\eqpartsitemsep\partsitemsep
+\def\eqparts@itemsep{0pt}
+\newcommand\partsparsep[1]{{% dps88
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@parsep{\the\@tempdima}}}
+\def\eqparts@parsep{0pt}
+\newcommand\partstopsep[1]{{% dps88
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@topsep{\the\@tempdima}}}
+\def\eqparts@topsep{3pt}
+\newcommand{\leadinitem@external}{\PackageError{exerquiz/eqexam}
+ {The \string\leadinitem\space command is designed to be\MessageBreak
+ the first item in the problem*\MessageBreak
+ environment above the parts environment}
+ {Use \string\leadinitem\space in the problem* environment.}%
+}
+\let\leadinitem\leadinitem@external
+\let\itsforleadinitem\eq@NO
+\newcommand{\eq@leadinitemparts}{\item\relax
+ \PackageError{exerquiz/eqexam}{The \string\leadinitem\space
+ command is not allowed in the\MessageBreak
+ parts environment}
+ {Use \string\leadinitem\space in the problem* environment.}%
+}
+\def\eq@handleOptArg[#1]{\def\eq@optArg{[#1]}\eq@handleOptArgi}
+\def\eq@handleOptArgi{\expandafter
+ \eq@item@latex\eq@optArg\exlisttabheaderafterhook}
+\newif\ifwithinparts
+\let\ex@listtabheader@fterhook\@empty
+\newenvironment{exercise@parts@list}{%
+ \settowidth{\eq@tmplength}{\parts@indent}%
+ \edef\widthOfParts{\the\eq@tmplength}%
+ \eq@initializeContAnnot\eq@nolinkfalse\prior@parts@hook
+ \abovepartshook\list{\normalfont
+ \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
+ \eq@nolinktrue\fi\fi
+ \if\currhideopt H%
+ \else
+ \ifeq@solutionsafter
+ \eq@nolinktrue % no link to solution
+ \else
+ \ifeq@nosolutions
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution\eq@nolinktrue\else
+ \global\let\eqExerSolnHeader\eq@@writeexheaderlist
+ \fi
+ \fi
+ \fi
+ \fi
+ \makebox[\widthOfParts][r]{\eqexlisttabheader}%
+}{%
+ \usecounter{partno}%
+ \if\isitleadin\eq@YES % dps7
+ \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\prtsIndntSep{\the\eq@tmplength}% dps7
+ \if\itsforleadinitem\eqe@YES\setcounter{partno}{\fliPartNo}\else
+ \setcounter{partno}{1}\fi\fi
+ \let\leadinitem\eq@leadinitemparts
+ \let\tableadin\eq@tableadinparts
+ \global\let\solutionparshape\@empty
+ \setlength{\topsep}{\eqparts@topsep}%
+ \setlength{\parskip}{0pt}%
+ \setlength{\partopsep}{0pt plus 1pt minus 1pt}%
+ \ifdim\eqeques@parsep=0pt
+ \setlength{\parsep}{\eqparts@parsep}%
+ \else
+ \setlength{\parsep}{\eqeques@parsep}%
+ \fi
+ \setlength{\itemsep}{\eqparts@itemsep-\parsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \settowidth{\labelsep}{\normalfont\eqe@prtsepPrb}%
+ \addtolength{\labelsep}{\eq@extralabelsep}%
+ \settowidth{\labelwidth}{\parts@indent}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \let\eq@item@latex\item
+ \def\eq@item{\@ifnextchar[{\eq@handleOptArg}
+ {\eq@item@latex\ex@listtabheader@fterhook
+ \exlisttabheaderafterhook}}%
+ \def\eqthisenv{parts}\withinpartstrue
+ \def\item{\ifx\@currenvir\eqthisenv
+ \def\eq@next{\eq@item@common}\else
+ \def\eq@next{\eq@item}\fi
+ \eq@next}%
+}}{\endlist\global\let\leadinitem\leadinitem@external
+ \post@parts@hook\belowpartshook}
+\def\eq@initializeContAnnot{\@ifundefined{eqequestions}
+ {\global\let\eqeCurrProb\relax}
+ {\xdef\eqeCurrProb{\theeqquestionnoi}}%
+ \xdef\eq@currProbStartPage{\arabic{page}}%
+}
+\define@key{tabp@rts}{nCols}{\def\exerwparts@cols{#1}}
+\define@key{tabp@rts}{minVspace}{\def\minVspacet@bs{#1}}
+\let\minVspacet@bs\@empty
+\def\minVspacetabs#1{\def\minVspacet@bs{#1}}
+\def\priorexsolafterTab{\ifkeepdeclaredvspacing
+ \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
+ \priorexsolafterTab@cont\fi\fi\fi}
+\def\priorexsolafterTab@cont{\let\exsolafter@save\exsolafter
+ \let\exsolafter\@empty
+ \makebox[0pt][r]{\parbox[t][\minVspacet@bs][t]{0pt}
+ {\strut\hfill\vfill\strut}}%
+ \minipage[t]{\linewidth}\exsolafter@save}
+\def\pkg@endsolnexerhook{\ifkeepdeclaredvspacing
+ \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
+ \endminipage\fi\fi\fi}
+\def\exercise@parts@tabular@[#1]{%
+ \inittabMark
+ \let\eq@insertContAnnot\relax
+ \let\exerwparts@cols\@empty
+ \setkeys*{tabp@rts}{#1}\ifx\exerwparts@cols\@empty
+ \edef\exerwparts@cols{\XKV@rm}\fi
+ \ifx\minVspacet@bs\@empty\keepdeclaredvspacingfalse\fi
+ \let\istabularexer\eq@YES
+ \@tempcnta\exerwparts@cols\relax
+ \ifnum\@tempcnta<2\relax
+ \PackageError{exerquiz}{%
+ The number of columns for parts\MessageBreak
+ needs to be an integer greater than 1}
+ {Enter an integer, 2 or larger}\fi
+ \exercise@parts@tabular}
+\newcount\eq@extabColCnt
+\def\autotabOn{\let\eq@tabMarkChk\relax%
+ \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOn}}
+\def\autotabOff{\let\eq@tabMarkChk\@gobble
+ \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOff}}
+\autotabOff
+\def\inittabMark{\global\eq@extabColCnt=0 }
+\def\resettabMark{\global\eq@extabColCnt=1 }
+\newcommand\autotabnewline[1][\eqparts@tabrowsep]{%
+ \ifnum\exerwparts@cols>0\relax % dps cq
+ \ifx\eq@tabMarkChk\@gobble
+ \def\eq@atnext{\expandafter
+ \tabularnewline\expandafter[#1]}\else
+ \def\eq@atnext{\resettabMark\tabularnewline
+ \noalign{\expandafter\kern#1}}\fi % dps7
+ \expandafter\eq@atnext\fi}
+\def\eq@tabMark{%
+ \ifnum\eq@extabColCnt=0\relax
+ \global\advance\eq@extabColCnt1\relax
+ \let\eq@next\relax
+ \else
+ \ifnum\eq@extabColCnt=1\relax
+ \let\eq@next\relax
+ \else
+ \ifnum\eq@extabColCnt>\exerwparts@cols
+ \let\eq@next\autotabnewline
+ \else\def\eq@next{&}\fi
+ \fi
+ \fi
+ \eq@next
+ \global\advance\eq@extabColCnt1\relax
+}
+\newcommand\partstabcolsep[1]{\def\eq@partstabcolsep{#1}}
+\partstabcolsep{1.5pt}
+\newcommand\partstabtopsep[1]{\def\eq@partstabtopsep{#1}}
+\partstabtopsep{3pt}
+\def\eq@vpartstabtopsep{\vskip\eq@partstabtopsep\relax}
+\newcommand\partstabrowsep[1]{\setlength{\@tempdima}{#1}%
+ \edef\eqparts@tabrowsep{\the\@tempdima}}
+\partstabrowsep{0pt}
+\newenvironment{exercise@parts@tabular}{%
+ \setcounter{partno}{0}%
+ \def\tablrIndent{\hglue\prtsIndntSep\relax}%
+ \if\isitleadin\eq@YES % dps7
+ \if$\the\everypar$\let\tablrIndent\relax\fi
+ \setcounter{partno}{1}\fi
+ \let\leadinitem\eq@leadinitemparts
+ \let\tableadin\eq@tableadinparts
+ \global\let\solutionparshape\@empty
+ \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
+ \sbox{\eq@tmpbox}{\parts@indent}%
+ \let\eq@item@latex\item
+ \let\eq@item\item@part@tabular
+ \def\eqthisenv{parts}\withinpartstrue
+ \def\item{\ifx\@currenvir\eqthisenv
+ \def\eq@next{\eq@tabMarkChk\eq@tabMark\eq@item@common}\else
+ \def\eq@next{\eq@item@latex}\fi
+ \eq@next}\eq@nolinkfalse
+ \@ifundefined{@xtabularcr}{\let\@xarraycr\eq@xtabularcr}
+ {\let\@xtabularcr\eq@xtabularcr}%
+ \eq@tmpdima=\linewidth
+ \advance\eq@tmpdima-\prtsIndntSep\relax
+ \@tempcnta\exerwparts@cols\relax
+ \advance\@tempcnta-1\relax
+ \multiply\@tempcnta2\relax
+ \@tempdima\prtsIndntSep\relax
+ \divide\@tempdima 2\relax
+ \edef\halfWidth{\the\@tempdima}%
+ \advance\@tempdima\eq@partstabcolsep\relax
+ \tabcolsep\@tempdima
+ \multiply\@tempdima\@tempcnta
+ \advance\eq@tmpdima-\@tempdima
+ \divide\eq@tmpdima by\exerwparts@cols
+ \advance\eq@tmpdima\prtsIndntSep\relax
+ \if@tableadinitem\else\vskip\eq@partstabtopsep\relax\fi % dps11
+ \noindent\normalbaselines\kern0pt
+ \prior@parts@hook\abovepartshook
+ \tablrIndent\tabular[t]{@{}*{\exerwparts@cols}{>{\setTabulrSolnEnv
+ \parskip\eqeques@parsep\relax
+ \parindent0pt\relax\strut}p{\eq@tmpdima}}@{\hidewidth}}%
+}{\endtabular\kern0pt
+ \@ifundefined{@listii@SAVE}{}{\global\let\@listii\@listii@SAVE
+ \global\let\@listii@SAVE\relax}%
+ \post@parts@hook\belowpartshook
+ \aftergroup\eqe@innermarkpts
+ \aftergroup\eq@vpartstabtopsep}
+\let\eqe@innermarkpts\relax
+\def\item@part@tabular{\refstepcounter{partno}%
+ \global\let\eqExerSolnHeader\@empty
+ \ifeq@solutionsafter
+ \eq@nolinktrue % no link to solution
+ \else\ifeq@nosolutions
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution\eq@nolinktrue\else
+ \gdef\eqExerSolnHeader{\eq@@writeexheaderlist}%
+ \fi\fi\fi
+ \if@restorejustify\restorejustify\else\PBS\raggedright\fi
+ \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
+ \sbox{\eq@tmpbox}{\parts@indent}%
+ \eq@tmpdima=\wd\eq@tmpbox
+ \addtolength\eq@tmplength{\eq@extralabelsep}%
+ \xdef\partshangamount{\the\eq@tmplength}%
+ \advance\linewidth-\eq@tmplength
+ \parshape \@ne 0pt \linewidth
+ \everypar{\parshape \@ne 0pt \linewidth}%
+ \eq@setPrbSolnAftrIndnt
+ \makebox[0pt][r]{\eqexlisttabheader\eqe@prtsepPrb}%
+ \ex@listtabheader@fterhook
+ \exlisttabheaderafterhook\ignorespaces
+}
+\def\@ckhide[#1]{\edef\eq@arg{#1}%
+ \def\currhideopt{x}%
+ \ifx\eq@arg\@empty\else
+ \if\eq@arg\eq@Hid
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \edef\currhideopt{\Hidesymbol}%
+ \else
+ \ifeq@globalshowsolutions\else
+ \if\eq@arg\eq@hid
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \def\currhideopt{h}%
+ \fi
+ \fi
+ \fi\fi
+ \eq@item
+}
+\def\tabControlOn{\@ifundefined{@xtabularcr}
+ {\let\save@@xtabularcr\@xarraycr}
+ {\let\save@@xtabularcr\@xtabularcr}}
+\def\tabControlOff{\@ifundefined{@xtabularcr}
+ {\let\@xarraycr\save@@xtabularcr}
+ {\let\@xtabularcr\save@@xtabularcr}}
+\AtBeginDocument{\tabControlOn}
+\def\eq@xtabularcr{\@ifnextchar[{\save@@xtabularcr}
+ {\eqe@tab@parts@rowsep}}%
+\def\eqe@tab@parts@rowsep{\save@@xtabularcr
+ \noalign{\expandafter\kern\eqparts@tabrowsep}}%
+\def\includeexersolutions{\@ifstar
+ {\let\resetEXsolns\relax\includeexersolutionsi}
+ {\def\resetEXsolns{\global\let\include@solutions\relax}%
+ \includeexersolutionsi}%
+}
+\newcommand{\includeexersolutionsi}[1][]{%
+ \filterFor{#1}\includeexersolutionsii
+}
+\def\includeexersolutionsii{%
+ \include@solutions
+ \resetEXsolns
+ \let\eqFilterArg\@empty
+}
+\long\def\gobbleToEndEXt#1\endeqEXt{%
+ \ifeqforpaper\expandafter\@gobbletwo\fi}
+\newcommand\filterFor[1]{\def\eqFilterArg{#1}}
+\newcommand\inclEXtFilter[2]{\def\eqargii{#2}\ifx\eqargii\eqFilterArg
+ \else\expandafter\gobbleToEndEXt\fi}
+\newcommand\useEXtFilter{\let\eqEXt\inclEXtFilter}
+\let\eqsolutionshook\@empty
+\let\eq@solutionshook\@empty
+\let\priorexsectitle\@empty
+\let\priorexslinput\@empty
+\def\exerSolnsHeadnToc{\section*{\exsectitle}%
+ \addcontentsline{toc}{section}{%
+ \@ifundefined{web@latextoc}{}{%
+ \ifx\web@latextoc\eq@YES\else
+ \protect\numberline{}\fi}\exsectitle}}
+\@ifpackageloaded{web}{\def\eq@normallheader{\lheader{\rightmark}}}
+ {\let\eq@normallheader\relax}
+\@ifpackageloaded{web}{\def\eq@defaultlheader{\lheader{\aeb@setmarks}}}
+ {\let\eq@defaultlheader\relax}
+\newif\ifExSolutionsSet \ExSolutionsSetfalse
+\newcommand{\exerSolnInput}
+{%
+ \@ifundefined{eqe@IWO}{}{\ifsolutionsAtEnd%\ifvspacewithsolns
+ \eqe@IWO\@auxout{\string\expandafter\string\gdef
+ \string\csname\space eqExamQuesLastPage\string\endcsname
+ {\arabic{page}}}\fi}
+ \let\webnewpage\relax
+ \ifsolutionsonly\else\immediate\closeout\ex@solns\fi
+ \ifeq@nosolutions\else
+ \iftherearesolutions
+ \ifsolutionsonly\eq@solutionshook
+ \eqsolutionshook
+ \else
+ \newpage\eq@solutionshook
+ \eqsolutionshook\markright{}\eq@normallheader
+ \fi
+ \markright{\exsectitle}%
+ \ifx\webnewpage\relax
+ \def\webnewpage{\let\webnewpage\newpage}%
+ \fi
+ \priorexsectitle\exerSolnsHeadnToc\priorexslinput
+ \InputIfFileExists{\jobname.sol}
+ {\global\ExSolutionsSettrue}{\PackageWarning{exerquiz}
+ {!!! Solutions to exercises not found}}%
+ \global\ExSolutionsSetfalse
+ \newpage\eq@defaultlheader
+ \fi
+ \fi
+}
+\def\include@solutions{%
+ \exerSolnInput
+}
+\newcommand{\prior@questionsHook}{}
+\let\qMark@Hook\@empty
+\let\aebtitleQuiz\@empty
+\newcommand{\post@questionsHook}{}
+\newcommand{\quesNumColor}[1]{\def\eq@quesNumCol{#1}}
+\quesNumColor{blue}
+\renewcommand{\theeqquestionnoi}{\arabic{eqquestionnoi}}
+\newcommand{\labeleqquestionnoi}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoi.}
+\renewcommand\theeqquestionnoii{(\alph{eqquestionnoii})}
+\newcommand{\labeleqquestionnoii}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoii}
+\renewcommand\theeqquestionnoiii{(\roman{eqquestionnoiii})}
+\newcommand{\labeleqquestionnoiii}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoiii}
+\define@key{props@ques}{labelwidthTo}%
+ [\normalsize\normalfont\bfseries00.]%
+ {\def\propQ@labelwidthTo{#1}}
+\define@key{props@ques}{labelwidth}[]{\def\propQ@labelwidth{#1}}
+\let\propQ@labelwidth\@empty
+\define@key{props@ques}{topsep}[\the\topsep]{\edef\propQ@topsep{#1}}
+\define@key{props@ques}{partopsep}[\the\partopsep]%
+ {\edef\propQ@partopsep{#1}}
+\define@key{props@ques}{parsep}[\the\parsep]{\edef\propQ@parsep{#1}}
+\define@key{props@ques}{itemsep}[\the\itemsep]{\edef\propQ@itemsep{#1}}
+\define@key{props@ques}{labelsepTo}[\normalsize\normalfont\ ]%
+ {\def\propQ@labelsepTo{#1}}
+\define@key{props@ques}{labelsep}[\@empty]{\def\propQ@labelsep{#1}}
+\let\propQ@labelsep\@empty
+\define@key{props@ques}{color}[blue]{\quesNumColor{#1}}
+\setkeys{props@ques}{labelwidthTo,topsep,partopsep,parsep,%
+ itemsep,labelsepTo,color}%
+\newenvironment{questions}[1][]
+{%
+ \ifnum\@eqquestiondepth>\tw@\@toodeep\else
+ \advance\@eqquestiondepth\@ne\fi
+ \def\@quesctr{eqquestionno\romannumeral\the\@eqquestiondepth}%
+ \toks@=\expandafter\expandafter\expandafter{#1}\expandafter
+ \xdef\csname quesOpts\@quesctr\endcsname{\the\toks@}%
+ \edef\tempexp{\noexpand\setkeys{props@ques}{\the\toks@}}\tempexp
+ \list{\qMark@Hook\prior@questionsHook\gdef\eqPTs{1}%
+ \global\let\eqQT\eq@na%
+ {\@tempcnta=0 \let\@thispr@b\@empty
+ \@whilenum\@tempcnta<\@eqquestiondepth\do{\advance\@tempcnta\@ne
+ \ifx\@thispr@b\@empty\edef\@thispr@b{%
+ \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\else
+ \edef\@thispr@b{\@thispr@b%
+ \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\fi
+ }\xdef\@currentQues{\@thispr@b}}%
+ \makebox[\labelwidth][r]{\normalfont\@nameuse{label\@quesctr}}%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ \post@questionsHook}{\usecounter{\@quesctr}%
+ \ifx\propQ@labelsep\@empty
+ \settowidth{\labelsep}{\propQ@labelsepTo}\else
+ \setlength{\labelsep}{\propQ@labelsep}\fi
+ \ifx\propQ@labelwidth\@empty
+ \settowidth{\labelwidth}%
+ {\propQ@labelwidthTo\hspace{\labelsep}}\else
+ \settowidth{\labelwidth}{\hspace{\propQ@labelwidth}%
+ \hspace{\labelsep}}\fi
+ \setlength{\topsep}{\propQ@topsep}%
+ \setlength{\partopsep}{\propQ@partopsep}%
+ \ifdim\parskip>\z@\addtolength{\topsep}{-\parskip}\fi
+ \setlength{\parsep}{\propQ@parsep}%
+ \setlength{\itemsep}{\propQ@itemsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ }%
+}{\endlist}
+\def\pushquestions{\expandafter\xdef\csname save\@quesctr\endcsname
+ {\expandafter\the\csname c@\@quesctr\endcsname}\end{questions}}
+\def\popquestions{%
+ \begin{questions}[\csname quesOpts\@quesctr\endcsname]%
+ \setcounter{\@quesctr}{\csname save\@quesctr\endcsname}%
+ \@ifnextchar\popquestions{\item[]}{\@ifnextchar\begin{\item[]}{}}}
+\newcommand{\priorsqhook}[1]{\def\sq@priorhook{#1}}
+\priorsqhook{}
+\newcommand{\abovesqskip}[1]{\def\sq@aboveskip{#1}}
+\abovesqskip{\par\medskip}
+\long\def\endsqhook#1{\def\sq@afterhook{#1}}
+\endsqhook{}
+\def\@shortquizCnt{0}
+\def\@sqGenBaseName{eqSqBn\@shortquizCnt}
+\let\sqhspace\space
+\newenvironment{shortquiz}
+{%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ \let\@currentQues\@empty
+ {\count0=\@shortquizCnt \advance\count0by1\relax
+ \xdef\@shortquizCnt{\the\count0}}%
+ \goodbreak\@ifstar{\sqForms\@shortquiz}%
+ {\if\aeb@FLOverride\eq@f\def\sqstar{*}\else
+ \def\sqstar{}\sqLinks\fi\@shortquiz}%
+}{\aeb@endshortquiz}
+\newenvironment{shortquiz*}
+{%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ {\count0=\@shortquizCnt\advance\count0by1\relax
+ \xdef\@shortquizCnt{\the\count0 }}%
+ \sqForms\@shortquiz
+}{\aeb@endshortquiz}
+\def\@shortquiz{\@ifnextchar[%
+ {\@@shortquiz}{\@@shortquiz[\@sqGenBaseName]}}
+\def\sq@setCLN#1{\ifx\aebTitleQuiz\@empty
+ \protected@edef\@currentlabelname{#1}\else
+ \protected@edef\@currentlabelname{\@currentlabelname}\fi
+}
+\let\isQZ=q \let\isSQZ=s
+\def\@@shortquiz[#1]{%\begingroup
+ \gdef\oField{#1}\gdef\curr@quiz{#1}\gdef\currQuiz{#1}%
+ \global\let\eqQzQuesList\@empty
+ \let\eq@AddProbToQzQuesList\relax
+ \edef\@currentlabel{\@shortquizCnt}%
+ \edef\@currentHref{shortquiz.\@shortquizCnt}%
+ \global\let\eqQuizType\isSQZ\let\@qzsolndest\@empty
+ \if\sqstar*\relax
+ \let\@Ans\Ans@sq@f
+ \ifx\oField\@empty
+ \typeout{^^JExerquiz: Base field name required when using
+ shortquiz with '*' option}%
+ \PackageInfo{exerquiz}{Assuming link style^^J}%
+ \let\@Ans\Ans@sq@l
+ \fi
+ \else
+ \let\@Ans\Ans@sq@l
+ \fi
+ \setcounter{questionno}{0}%
+ \let\answers\answers@sq
+ \let\endanswers\endanswers@sq
+ \let\manswers\manswers@sq
+ \let\endmanswers\endmanswers@sq
+ \let\solution\solution@sq
+ \let\endsolution\endsolution@sq
+ \sq@aboveskip\sq@priorhook\ignorespaces
+}
+\newcommand\belowsqskip[1]{\def\aftershortquizskip{#1}}
+\belowsqskip{\medskip}
+\def\aeb@endshortquiz{\setcounter{quizno}{0}%
+ \sq@afterhook
+ \global\let\sqlabel\eq@sqlabel
+ \global\let\sqslrtnlabel\eq@sqslrtnlabel
+ \global\let\sqsllabel\eq@sqsllabel
+ \par\aftershortquizskip
+}
+\def\sqLinks{\def\sqstar{}}\sqLinks
+\def\sqForms{\def\sqstar{*}}
+\let\eq@tq@star\relax
+\def\qzPriorSolutionAfterHook{\smallskip}
+\let\sqPostHeaderHook\@empty
+\let\qPostHeaderHook\@empty
+\let\eq@sqPostHeaderHook\@empty
+\let\eq@qPostHeaderHook\@empty
+\let\prior@eqQt\@empty
+\let\prior@eqSQt\@empty
+\def\sqsolafterhspace{\space}
+\def\solution@sq{\let\eq@next\relax
+ \ifx\@qzsolndest\@empty
+ \PackageWarning{exerquiz}%
+ {* Solutions unexpected here, will *\MessageBreak
+ * assume solutionsafter option *}%
+ \eq@solutionsaftertrue
+ \fi
+ \ifeq@solutionsafter
+ \par\qzPriorSolutionAfterHook\noindent
+ \if!\sqsolafter!\else
+ \sqsolafter\sqsolafterhspace\fi\ignorespaces
+ \else
+ \global\therearequizsolutionstrue\let\verbatim@out=\quiz@solns
+ \set@display@protect
+ \immediate\write\verbatim@out{%
+ \if\eqQuizType\isQZ
+ \ifx\prior@eqQt\@empty\else\prior@eqQt\fi
+ \protect\eqQt{\eqFilterArg}\else
+ \ifx\prior@eqSQt\@empty\else\prior@eqSQt\fi
+ \protect\eqSQt{\eqFilterArg}\fi
+ \protect\quizSolnHeader\if\eqQuizType\isQZ\ifx\allow@peek\eq@NO
+ [{\curr@quiz}{\currQuizStartPage}]\fi\fi
+ {\@qzsolndest}{\sqsllabel}\protect\eqterminex
+ \if\eqQuizType\isQZ\expandafter\eq@qPostHeaderHook
+ \expandafter\qPostHeaderHook\else
+ \expandafter\eq@sqPostHeaderHook
+ \expandafter\sqPostHeaderHook\fi}%
+ \set@typeset@protect
+ \expandafter\verbatimwrite\fi
+}
+\let\qzSolutionsAfterHook\@empty
+\def\endsolution@sq
+{%
+ \ifeq@solutionsafter
+ \eq@fititin{\mbox{\sqslrtnlabel}}\par\qzSolutionsAfterHook
+ \aftergroup\ignorespaces
+ \else
+ \endverbatimwrite
+ \ifx\@qzsolndest\@empty\else\set@display@protect
+ \immediate\write\verbatim@out{\eqSqSolnTrailer}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \global\let\@qzsolndest\@empty
+}
+\def\fpAfterSolutionsSkip{\par\medskip}
+\let\eqSqSolnTrailerHook\@empty
+\let\eqQzSolnTrailerHook\@empty
+\newcommand\eqSqSolnTrailer{%
+ \if\eqQuizType\isQZ
+ \eqQzSolnTrailerHook
+ \protect\ReturnTo{page.\eq@pageThisQ}%
+ {\protect\mbox{\sqslrtnlabel}}\string\endeqQt
+ \else
+ \eqSqSolnTrailerHook
+ \protect\ReturnTo{page.\eq@pageThisQ}%
+ {\protect\mbox{\sqslrtnlabel}}\string\endeqSQt%
+ \fi
+ \ifeqforpaper\protect\fpAfterSolutionsSkip\fi^^J%
+}
+\let\eqSQt\@gobble
+\let\endeqSQt\relax
+\let\eqQt\@gobble
+\let\endeqQt\relax
+\let\prior@quizSolnHeaderHook\@empty
+\newcommand\quizSolnHeader[3][]{%
+ \prior@quizSolnHeaderHook
+ \ifeqforpaper\else\webnewpage\fi\noindent
+ #2%
+ \solnspace
+}
+\newif\iftherearequizsolutions \therearequizsolutionsfalse
+\let\aeb@FLOverride\relax
+\def\includequizsolutions{\@ifstar
+ {\let\resetQZtsolns\relax\includequizsolutionsi}
+ {\def\resetQZtsolns{\global\let\include@quizsolutions\relax}%
+ \includequizsolutionsi}%
+}
+\newcommand{\includequizsolutionsi}[1][]{%
+ \filterFor{#1}\includequizsolutionsii
+}
+\def\includequizsolutionsii{%
+ \include@quizsolutions
+ \resetQZtsolns
+ \let\eqFilterArg\@empty
+}
+\newcommand\useForms{\def\aeb@FLOverride{f}}
+\newcommand\useLinks{\def\aeb@FLOverride{l}}
+\newcommand\restoreFLTypeDefault{\global\let\aeb@FLOverride\relax}
+\let\aeb@FLOverride\relax
+\let\aebtitleQuiz\@empty
+\let\aebTitleQuiz\@empty
+\def\pushEnvir{\xdef\eq@currenvir{\@currenvir}\endgroup}
+\def\popEnvir{\begingroup\@endpefalse
+ \edef\@currenvir{\eq@currenvir}%
+ \edef\@currenvline{\on@line}%
+}
+\def\answers@sq{\parindent0pt
+ \ifx\solutionparshape\@empty\else
+ \pushEnvir\par\noindent\expandafter\popEnvir\fi
+ \stepcounter{questionno}%
+ \if\sqstar*\relax
+ \if\aeb@FLOverride\eq@l
+ \let\@Ans\Ans@sq@l\else
+ \let\@Ans\Ans@sq@f\fi
+ \else
+ \if\aeb@FLOverride\eq@f
+ \let\@Ans\Ans@sq@f\else
+ \let\@Ans\Ans@sq@l\fi
+ \fi
+ \def\aeb@answerType{r}\@ifnextchar[{\answers@@sq}%
+ {\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
+\def\manswers@sq{\parindent0pt
+ \@ifundefined{ifuserectforms}{}
+ {\if\aeb@FLOverride\eq@f\ifuserectforms
+ \useRectForMC\else\useCircForMC\fi\fi}%
+ \ifx\solutionparshape\@empty\else
+ \pushEnvir\par\noindent\expandafter\popEnvir\fi
+ \stepcounter{questionno}%
+ \if\sqstar*\relax
+ \if\aeb@FLOverride\eq@l
+ \let\@Ans\Ans@ck@sq@l\else
+ \let\@Ans\Ans@ck@sq@f\fi
+ \else
+ \if\aeb@FLOverride\eq@f
+ \let\@Ans\Ans@ck@sq@f\else
+ \let\@Ans\Ans@ck@sq@l\fi
+ \fi
+ \def\aeb@answerType{c}\@ifnextchar[{\answers@@sq}%
+ {\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
+\let\sq@hwdest\@empty % hard-wired destination
+\def\answers@@sq[#1]#2{%
+ \xdef\aeb@numCols{#2}%
+ \ifx\sq@hwdest\@empty
+ \xdef\@qzsolndest{#1}\else
+ \gdef\@qzsolndest{\sq@hwdest}\fi
+ \if\aeb@numCols1\gdef\eq@listType{1}\expandafter\answers@sq@list
+ \else
+ \gdef\eq@listType{0}\expandafter\answers@@sq@tabular
+ \fi{\aeb@numCols}%
+}
+\def\setMClabelsepDefault#1{\def\eq@hspanner@default{#1}}
+\def\setMClabelsep#1{\def\eq@hspanner{#1}}
+\setMClabelsep{\ }\setMClabelsepDefault{\ }
+\def\resetMClabelsep{\expandafter\setMClabelsep\expandafter
+ {\eq@hspanner@default}}
+\def\eq@lw@l{\eq@l@l\eq@hspanner}
+\def\eq@l@l{\normalsize\normalfont(d)}
+\def\eq@lw@f{\kern\RadioFieldSize\eq@hspanner}
+\@ifundefined{ifwithsoldoc}{\newif\ifwithsoldoc\withsoldocfalse}{}
+\let\eq@ansChoiceArray\@empty
+\def\eq@recordAnsChoice{%
+ \ifx\eq@ansChoiceArray\@empty
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\eq@ansChoiceArray{"\alph{quizno}"}}\else
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\eq@ansChoiceArray{,"\alph{quizno}"}}\fi
+ \tmp@exp
+}
+\newcommand\Ans@list[2][0]{\gdef\eq@pPTs{#1}%
+ \xdef\Ans@choice{#2}\item\relax\noindent\if\eq@listType\eq@One
+ \addtocounter{quizno}{-1}\@ifundefined{ifwithsoldoc}
+ {\refstepcounter{quizno}}{\ifwithsoldoc\stepcounter{quizno}\else
+ \refstepcounter{quizno}\fi}\fi
+ \ignorespaces}
+\newenvironment{answers@sq@list}[1]
+{%
+ \ifx\aeb@answerType\eq@r
+ \let\endanswers\endanswers@sq@list\else
+ \let\endmanswers\endanswers@sq@list\fi
+ \list{\strut\@Ans}{%
+ \if\sqstar*\relax
+ \settowidth{\labelwidth}{\eq@lw@f}\else
+ \settowidth{\labelwidth}{\eq@lw@l}\fi
+ \setlength{\topsep}{-\parskip+\aboveanswersSkip}%
+ \setlength{\parsep}{0pt}\setlength{\itemindent}{0pt}%
+ \setlength{\itemsep}{0pt}\setlength{\partopsep}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \ifnum\exerwparts@cols>1\relax
+ \ifx\itsExerParts\eq@YES % dps17
+ \setlength{\leftmargin}{\labelwidth}\else
+ \setlength{\leftmargin}{\labelwidth+\eqemargin}\fi
+ \else
+ \ifx\solutionparshape\@empty
+ \setlength{\leftmargin}{\labelwidth}\else
+ \setlength{\leftmargin}{\labelwidth+\eqemargin}\fi\fi
+ \setlength{\labelsep}{0pt}%
+ \def\Ans{\Ans@list}%
+ }%
+}%
+{\endlist\setcounter{quizno}{0}\eq@answersEndHook}
+\newcommand\Ans@tabular[2][0]{\gdef\eq@pPTs{#1}%
+ \xdef\Ans@choice{#2}\leavevmode\@Ans
+}
+\newcommand\sqtabsep[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty
+ \def\sq@tabsep{1.5pt}\else\def\sq@tabsep{#1}\fi}
+\sqtabsep{1.5pt}
+\def\sqTabPos#1{\def\sq@TabPos{[#1]}}\sqTabPos{}
+\def\answers@@sq@tabular#1{%
+ \ifinner % dps17
+ \ifx\itsExerParts\eq@YES\par\removelastskip
+ \removelastparskip\vskip\aboveanswersSkip\fi
+ \else\par\removelastskip\removelastparskip
+ \vskip\aboveanswersSkip\fi
+ \noindent\ifnum\exerwparts@cols>1\relax\parshape=0\fi
+ \tabcolsep=0pt
+ \eq@tmpdima=\linewidth
+ \@tempcnta#1\relax
+ \advance\@tempcnta-1\relax
+ \multiply\@tempcnta by2
+ \@tempdima\sq@tabsep\relax
+ \multiply\@tempdima\@tempcnta
+ \advance\eq@tmpdima-\@tempdima
+ \divide\eq@tmpdima by#1
+ \def\Ans{\Ans@tabular}%
+ \tabcolsep\sq@tabsep\relax
+ \expandafter\tabular\sq@TabPos{@{}*{#1}{p{\eq@tmpdima}}@{}}}%
+\let\eq@save@doendpe\@doendpe
+\def\reset@doendpe#1{\global\eq@scratchtoks=\expandafter{#1}%
+ \gdef\@doendpe{\par\@endpetrue\global\let\@doendpe\eq@save@doendpe
+ \def\par{\@restorepar
+ \expandafter\everypar
+ \expandafter{\the\eq@scratchtoks}\par\@endpefalse}%
+ \everypar{{\setbox\z@\lastbox}%
+ \everypar{}\@endpefalse}\the\eq@scratchtoks
+ }%
+}
+\newcommand\answersEndHook[1]{\def\eq@answersEndHook{#1}}
+\let\eq@answersEndHook\@empty
+\def\endanswers@sq{\endtabular\setcounter{quizno}{0}%
+ \eq@answersEndHook\reset@doendpe{\the\everypar}%
+ \ifinner\else%\par
+ \removelastskip
+ \vspace{\aboveanswersSkip}\@endpetrue\fi
+}
+\def\endmanswers@sq{\endtabular\setcounter{quizno}{0}%
+ \eq@answersEndHook\reset@doendpe{\the\everypar}%
+ \ifinner\else%\par
+ \removelastskip
+ \vspace{\aboveanswersSkip}\@endpetrue\fi
+}
+\def\popiiictm{\special{CTM: pop pop pop}}
+\def\aebChoiceAltFmt{\noexpand\ifaebshowgrayletters
+ \Alph{quizno}\noexpand\else\linkContentFormat\noexpand\fi}
+\def\linkContentFormat{%
+ \if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
+\def\linkContentWrapper{(\hfil\linkContentFormat\hfil)}%
+\def\Ans@sq@l{%
+ \leavevmode\if\eq@listType\eq@One\stepcounter{quizno}\else
+ \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
+ {\ifwithsoldoc\stepcounter{quizno}\else
+ \refstepcounter{quizno}\fi}\fi\PBS\raggedright
+ \settowidth{\eq@tmplength}{\eq@lw@l}\sbox{\eq@tmpbox}{\eq@l@l}%
+ \eq@tmpdima=\wd\eq@tmpbox
+ \def\link@@Content{\linkContentWrapper}%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \Ans@sq@l@driver
+\eq@hspanner\ignorespaces}
+\let\Ans@ck@sq@l\Ans@sq@l
+\let\rbf@Opts\@empty
+\def\Ans@sq@f{%
+ \if\eq@listType\eq@One\stepcounter{quizno}\else
+ \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
+ {\ifwithsoldoc\stepcounter{quizno}\else
+ \refstepcounter{quizno}\fi}\fi\PBS\raggedright
+ \settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \insertGrayLetters % 6.3d
+ \Ans@sq@f@driver
+\eq@hspanner\ignorespaces}
+\let\Ans@ck@sq@f\Ans@sq@f
+\newskip\aboveanswersSkip
+\setlength\aboveanswersSkip{3pt}
+\providecommand\graylettersColor{gray}
+\def\insertGrayLetters{\ifaebshowgrayletters
+ \rlap{\makebox[\RadioFieldSize]%
+ {\textcolor{\graylettersColor}{\Alph{quizno}}}}\else\relax\fi}
+\newcount\eq@tabColCnt
+\define@key{bchoice}{nCols}{\def\bChoiceNumCols{#1}}
+\@for\eqi:=1,2,3,4,5,6,7,8,9,10 \do{\edef\temp@expand@def{%
+ \noexpand\define@key{bchoice}{\eqi}[\eqi]{%
+ \noexpand\def\noexpand\bChoiceNumCols{\eqi}}%
+ }\temp@expand@def
+}
+\def\bChoiceNumCols{\aeb@numCols}
+\define@key{bchoice}{random}[true]{%
+ \csname if#1\endcsname\eq@randomizeChoicestrue
+ \else\eq@randomizeChoicesfalse\fi
+}
+\define@key{bchoice}{label}[]{\xdef\bChoiceLabel{#1}}
+\def\bChoices{\@ifnextchar[{\@ansChoices}{\@ansChoices[\aeb@numCols]}}
+\def\@ansChoices[#1]%
+{%
+ \global\let\@tempholdSaveAns\@empty %4/5
+ \global\let\@tempholdSaveChoice\@empty %4/5
+ \global\let\bChoiceLabel\@empty %4/5
+ \setkeys{bchoice}{#1}%
+ \global\eq@tabColCnt=0
+ \ifnum\aeb@numCols=1 % list mode
+ \def\eq@next{\@layoutListAns}\else % tabular mode
+ \def\eq@next{\@layoutTabularAns{\bChoiceNumCols}}\fi
+ \eq@next
+}
+\let\eChoices\relax
+\def\@layoutListAns{\@ifnextchar\Ans{\@getListAns}%
+ {\@lookforendansChoices{\@layoutListAns}}%
+}
+\newcommand{\eq@saveAns}[2][]{%
+ \let\eq@next\@@@SaveAnsGobbleAns
+ \ifx\bChoiceLabel\@empty\else
+ \def\eq@savedAnsOpt{#1}\def\eq@savedAnsZO{#2}%
+ \if\eq@savedAnsZO1 \let\eq@next\@@@SaveAns\fi
+ \fi\eq@next
+}
+\long\def\@@@SaveAns#1\eAns{% 4/5
+ \g@addto@macro\@tempholdSaveAns{\\{\ignorespaces#1}}%
+ \addtocounter{quizno}{1}%
+ \edef\temp@expand{\noexpand\g@addto@macro\noexpand
+ \@tempholdSaveChoice{%
+ \noexpand\\{\ifx\sqstar\@empty\aebChoiceAltFmt\else
+ \ifaebshowgrayletters\Alph{quizno}\else
+ \linkContentFormat\fi\fi}}}\temp@expand
+ \addtocounter{quizno}{-1}%
+}
+\newif\ifoxfordcomma \oxfordcommatrue
+\def\oxfordCommaOn{\oxfordcommatrue}
+\def\oxfordCommaOff{\oxfordcommafalse}
+\def\eq@insertComma{%
+ \ifx\eq@comma\@empty
+ \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
+ \def\eq@comma{,}\fi
+ \else\ifx\eq@insertAnd\@empty\eq@comma\space
+ \else\ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}%
+ \ifoxfordcomma\eq@comma\fi\else\eq@comma\fi\space
+ \fi
+ \fi
+}
+\newcommand\eqAnd{and}\def\eq@insertAnd{%
+ \ifnum\@nameuse{NumAns\eq@namearg}<2\relax\else
+ \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
+ \else\leavevmode\space\fi\eqAnd\space\fi}
+\long\def\eq@displayAns#1{\advance\@tempcnta1\relax
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
+\def\eq@displayAlts#1{\advance\@tempcnta1
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi
+ \savedAltFmt{#1}}
+\def\eq@displayAltsAns#1{\advance\@tempcnta1\relax
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
+\newcommand{\savedAltFmt}[1]{(#1)}
+\newcommand{\useSavedAns}{\bgroup\@ifstar{\useSavedAns@i}
+ {\let\eq@insertAnd\@empty\useSavedAns@i}}
+\newcommand{\useSavedAns@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\let\label\@gobble
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAns\@nameuse{SavedAns#2}\else
+ \@nameuse{SavedAns#2-Idx#1}\fi
+ \egroup
+}
+\newcommand{\useSavedAlts}{\bgroup\@ifstar{\useSavedAlts@i}
+ {\let\eq@insertAnd\@empty\useSavedAlts@i}}
+\newcommand{\useSavedAlts@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\@nameuse{caseFor#2}%
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAlts\@nameuse{SavedAlts#2}\else
+ \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}\fi
+ \egroup
+}
+\newcommand{\useSavedAltsAns}{\bgroup\@ifstar{\useSavedAltsAns@i}
+ {\let\eq@insertAnd\@empty\useSavedAltsAns@i}}
+\newcommand{\useSavedAltsAns@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\@nameuse{caseFor#2}\let\label\@gobble
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAltsAns\@nameuse{SavedAltsAns#2}\else
+ \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}
+ \@nameuse{SavedAns#2-Idx#1}\fi
+ \egroup
+}
+\newcommand{\useSavedNumAns}[1]{\@nameuse{NumAns#1}}
+\long\def\@@@SaveAnsGobbleAns#1\eAns{} % 4/5
+\long\def\@getListAns\Ans#1\eAns{%\@@par %start new paragraph
+ \eq@saveAns#1\eAns % 4/5
+ \Ans#1\vspace{\@rowskip}%
+ \@layoutListAns
+}
+\long\def\@lookforendansChoices#1{%
+ \@ifnextchar\eChoices{\rowsep{\rowsep@default}%
+ \expandafter\@findendans\@gobble}{\expandafter#1\@gobble}%
+}
+\def\@layoutTabularAns#1{%
+ \let\eq@tabSep\@empty
+ \xdef\numShortCols{#1}%
+ \ifnum#1>\aeb@numCols \xdef\numShortCols{\aeb@numCols}\fi
+ \@@layoutTabularAns
+}
+\def\@@layoutTabularAns{%
+ \@ifnextchar\Ans{\@getTabAns}%
+ {\@lookforendansChoices{\@@layoutTabularAns}}%
+}
+\def\rowsep#1{\gdef\@rowsep{[#1]}\gdef\@rowskip{#1}}%
+\rowsep{\rowsep@default}
+\def\rowsepDefault#1{\def\rowsep@default{#1}}
+\def\rowsep@default{0pt}
+\long\def\@getTabAns\Ans#1\eAns{%
+ \eq@saveAns#1\eAns
+ \global\advance\eq@tabColCnt1
+ \let\@save@tabSep=\eq@tabSep
+ \ifnum\eq@tabColCnt=\numShortCols
+ \global\eq@tabColCnt=0
+ \xdef\eq@tabSep{\noexpand\\\noalign{\kern\@rowskip\relax}}%
+ \else
+ \gdef\eq@tabSep{&}%
+ \fi
+ \@ifnextchar\eChoices{\@save@tabSep\Ans#1\rowsep{\rowsep@default}
+ \expandafter\@findendans\@gobble}%
+ {\@save@tabSep\Ans#1\@@layoutTabularAns}%
+}
+\def\@findendans{\@ifnextchar\end{% 4/5
+ \ifx\bChoiceLabel\@empty\else
+ \processLabeledAns\fi
+ }{\expandafter\@findendans\@gobble}}%
+\def\defineEachAns#1{\advance\count0by1\relax
+ \@temptokena={#1}\csarg\xdef
+ {SavedAns\bChoiceLabel-Idx\the\count0}{\the\@temptokena}%
+ \ifsolutionsonly\else
+ {\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAns\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}}}\fi
+}
+\def\defineEachChoice#1{\advance\count0by1\relax
+ \@temptokena={#1}\csarg\xdef
+ {SavedAlts\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}\ifsolutionsonly\else
+ {\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAlts\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}}}\fi
+}
+\def\processLabeledAns{%
+ \bgroup
+ \let\label\@gobble
+\if\aeb@FLOverride\eq@l
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\else
+ \ifaebshowgrayletters
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOn}\else
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\fi
+\fi
+ \toks@=\expandafter{\@tempholdSaveAns}\csarg
+ \xdef{SavedAns\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAns\bChoiceLabel}{\the\toks@}}}\fi
+ \count0=0\relax\let\\\defineEachAns\the\toks@
+ \xdef\@currNCntAns{\the\count0 }\csarg
+ \xdef{NumAns\bChoiceLabel}{\@currNCntAns}%
+ \ifsolutionsonly\else{\eq@IWDefs{\string
+ \csarg\string\gdef{NumAns\bChoiceLabel}{\the\count0 }}}\fi
+ \toks@=\expandafter{\@tempholdSaveChoice}\csarg
+ \xdef{SavedAlts\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAlts\bChoiceLabel}{\the\toks@}}}\fi
+ \count0=0\relax\let\\\defineEachChoice\the\toks@
+ \count0=1\relax\toks@={}%{\ignorespaces\@gobble}%
+ \loop
+ \edef\temp@exp{\the\toks@\noexpand\\{%
+ \noexpand\useSavedAlts[\the\count0]{\bChoiceLabel}
+ \noexpand\useSavedAns[\the\count0]{\bChoiceLabel}}}%
+ \toks@=\expandafter{\temp@exp}%
+ \ifnum\count0<\@currNCntAns
+ \advance\count0by1
+ \repeat
+ \csarg\xdef{SavedAltsAns\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAltsAns\bChoiceLabel}{\the\toks@}}}\fi
+ \egroup
+}
+\def\graylettersOn{\aebshowgrayletterstrue}
+\def\graylettersOff{\aebshowgraylettersfalse}
+\def\aeb@exiii{\expandafter\expandafter\expandafter}
+\def\REF{\@ifstar{\let\isREFstar\eq@One\aeb@REFstar}
+ {\let\isREFstar\eq@Zero\aeb@REF}}
+\def\aeb@REFstar#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
+ {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
+ \else\ref*{#1}\fi}%
+}
+\def\aeb@REF#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
+ {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
+ \else\ref{#1}\fi}%
+}
+\def\aeb@buildUpperCaseRef#1{%
+ \xdef\tmp@expand{\aeb@exiii\@firstoftwo\csname r@#1\endcsname}%
+ \xdef\tmp@expand{\uppercase{\tmp@expand}}\tmp@expand
+}
+\endinput
+%%
+%% End of file `eqexam.def'.
diff --git a/texmf-dist/tex/latex/eqexam/eqexam.sty b/texmf-dist/tex/latex/eqexam/eqexam.sty
new file mode 100644
index 00000000..bd6a873a
--- /dev/null
+++ b/texmf-dist/tex/latex/eqexam/eqexam.sty
@@ -0,0 +1,3151 @@
+%%
+%% This is file `eqexam.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2017 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License 1.2 %%
+%% 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{eqexam}
+ [2017/03/16 v4.9 An Exam Construction Package (dps)]
+\def\eqexamdefReq{2017/03/16}
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\usepackage{xkeyval}
+\DeclareOptionX{usecustomdesign}{\eqcustomdesigntrue}
+\newif\ifeqcustomdesign \eqcustomdesignfalse
+\DeclareOptionX{nocustomdesign}{\let\eqe@nocustomdesign=1}
+\let\eqe@nocustomdesign=0
+\DeclareOptionX{fortextbook}{\eqfortextbooktrue}
+\newif\ifeqfortextbook \eqfortextbookfalse
+\DeclareOptionX{forinstr}{\eqforinstrtrue}
+\DeclareOptionX{forstudent}{\eqforinstrfalse}
+\newif\ifeqforinstr \eqforinstrfalse
+\DeclareOptionX{nomarginwrite}{\eqwritetomarginsfalse}
+\newif\ifeqwritetomargins\eqwritetomarginstrue
+\define@key{eqexam.sty}{cfg}[]{%
+ \def\arg@i{#1}\ifx\arg@i\@empty
+ \PackageWarning{eqexam}{No value for `cfg' specified}\else
+ \def\ifeqexamCFG{true}\def\eqexamCFG{#1.cfg}%
+ \AtEndOfPackage{\InputIfFileExists{#1.cfg}
+ {\typeout{Inputting #1.cfg}}{\PackageWarning{eqexam}{%
+ Cannot find configuration file #1.cfg}}}\fi
+ }
+\def\ifeqexamCFG{false}
+\let\eqexamCFG\@empty
+\@for\eqe@tmp@i:={},i,ii,iii,iv,v,vi\do{%
+ \edef\eqe@tmp@exp{%
+ \noexpand\DeclareOptionX{myconfig\eqe@tmp@i}%
+ {\noexpand\AtEndOfPackage{\expandafter\noexpand
+ \csname eqemyconfig\eqe@tmp@i\endcsname}}%
+ }\eqe@tmp@exp
+}
+\DeclareOptionX{pointsonleft}{\AtEndOfPackage{\PointsOnLeft}}
+\DeclareOptionX{pointsonright}{\AtEndOfPackage{\PointsOnRight}}
+\DeclareOptionX{pointsonboth}{\AtEndOfPackage{\PointsOnBothSides}}
+\DeclareOptionX{nopoints}{\AtEndOfPackage{\NoPoints}}
+\DeclareOptionX{totalsonleft}{\AtEndOfPackage{\TotalsOnLeft}}
+\DeclareOptionX{totalsonright}{\AtEndOfPackage{\TotalsOnRight}}
+\DeclareOptionX{nozerototals}{\AtEndOfPackage{\noZeroTotals}}
+\let\eqe@YES=y \let\eqe@NO=n
+\let\eqe@One=1 \let\eqe@Zero=0
+\let\eqe@Two=2 \let\eqe@Three=3 \let\eqe@Four=4
+\DeclareOptionX{nototals}{\AtEndOfPackage{\NoTotals}}
+\DeclareOptionX{noparttotals}{%
+ \AtEndOfPackage{\let\eq@parttotals\eqe@NO}}
+\DeclareOptionX{parttotalsonright}{%
+ \def\eqeomarginbox{\eqeomarginboxright}}
+\DeclareOptionX{parttotalsonleft}{%
+ \def\eqeomarginbox{\eqeomarginboxleft}}
+\def\eqeomarginbox{\eqeomarginboxright}
+\DeclareOptionX{noseparationrule}{%
+ \AtEndOfPackage{\separationruleOff}}
+\DeclareOptionX{nosummarytotals}{\let\eq@nosummarytotals\eqe@YES}
+\DeclareOptionX{coverpage}{\def\eqex@coverpage{\eqexcoverpage}%
+ \setcounter{page}{0}}
+\define@choicekey+{eqexam.sty}{coverpagesumry}[\val\nr]%
+ {byparts,bypages,none}{%
+ \ifcase\nr\relax
+ \def\sumryAnnots{\cpSumrybyparts}\or
+ \def\sumryAnnots{\cpSumrybypages}\or
+ \let\sumryAnnots\relax
+ \fi
+}{\PackageWarning{aeb}{Bad choice for coverpagesumry, permissible values
+ are byparts, bypages, and none. Try again}}
+\let\sumryAnnots\relax
+\DeclareOptionX{nospacetowork}{%
+ \AtEndOfPackage{\let\eq@insertverticalspace\eqe@NO}}
+\newif\ifanswerkey \answerkeyfalse
+\DeclareOptionX{answerkey}{\AnswerKey}
+\def\AnswerKey{\answerkeytrue\eq@proofingtrue
+ \eq@solutionsaftertrue}
+\newif\ifvspacewithsolns\vspacewithsolnsfalse
+\def\ifkeyalt{\csname ifvspacewithsolns\endcsname}
+\def\ifkeyOrkeyalt{\ifanswerkey
+ \def\eqe@next{\csname iftrue\endcsname}\else
+ \ifvspacewithsolns\def\eqe@next{\csname iftrue\endcsname}\else
+ \def\eqe@next{\csname iffalse\endcsname}\fi\fi\eqe@next}
+\DeclareOptionX{vspacewithsolns}{%
+ \vspacewithsolnstrue\displayworkareatrue}
+\DeclareOptionX{ftbsolns}{%
+ \vspacewithsolnstrue\displayworkareatrue}
+\DeclareOptionX{useforms}{\AtEndOfPackage{\def\sqstar{*}}}
+\newif\ifallowcircmc \allowcircmcfalse
+\DeclareOptionX{allowcirc4mc}{\allowcircmctrue}
+\def\eqe@auto@chk@drivers{\ifpdf\ExecuteOptionsX{pdftex}\else
+ \ifxetex\ExecuteOptionsX{xetex}\fi\fi}
+\newif\ifeqeonline \eqeonlinefalse
+\DeclareOptionX{online}{\eqe@auto@chk@drivers
+ \let\eq@online\eqe@YES\eqeonlinetrue\ExecuteOptionsX{links}}
+\DeclareOptionX{pdf}{\eqe@auto@chk@drivers\let\load@web\eqe@YES}
+\DeclareOptionX{links}{\eqe@auto@chk@drivers
+ \let\load@web\eqe@YES\let\load@exerquiz\eqe@YES}
+\DeclareOptionX{email}{\eqe@auto@chk@drivers
+ \let\use@email\eqe@YES\ExecuteOptionsX{online}}
+\newif\ifeqobeylocalversion \eqobeylocalversionfalse
+\DeclareOptionX{obeylocalversions}{\eqobeylocalversiontrue}
+\DeclareOptionX{usexkv}{\let\eq@usexkeys\eqe@YES}
+\let\eq@usexkeys\eqe@YES
+\let\eq@renditionOptions\@empty
+\let\eq@max@selected\@empty \let\eq@ren@selected\@empty
+\DeclareOptionX{max}{\def\eq@max@selected{#1}%
+ \g@addto@macro\eq@renditionOptions{\numVersions{#1}}}
+\DeclareOptionX{rendition}{\def\eq@ren@selected{#1}%
+ \g@addto@macro\eq@renditionOptions{\forVersion{#1}}}
+\DeclareOptionX{allowrandomize}{\AtEndOfPackage{\inputRandomizeChoices}}
+\def\inputRandomizeChoices{\InputIfFileExists{aebrandom.def}
+ {\typeout{inputting aebrandom.def}}{cannot find aebrandom.def}}
+\let\eq@online\eqe@NO
+\def\ifisOnline{\ifx\eq@online\eqe@YES}
+\let\use@email\eqe@NO
+\let\load@web\eqe@NO
+\let\load@exerquiz\eqe@NO
+\def\sqLinks{\def\sqstar{}}\sqLinks
+\def\sqForms{\def\sqstar{*}}
+\def\NoSpaceToWork{\let\eq@insertverticalspace\eqe@NO}
+\def\SpaceToWork{\let\eq@insertverticalspace\eqe@YES}
+\let\eq@nototals\eqe@NO
+\let\eq@nosummarytotals\eqe@NO
+\let\eq@parttotals\eqe@YES
+\let\eqx@separationrule\eqe@YES
+\let\eq@insertverticalspace\eqe@YES
+\let\eqex@coverpage\relax
+\def\@reportpoints{0}
+\let\marginpoints\@empty
+\let\totalsbox=\hfil
+\@ifundefined{ifequsecolor}{\newif\ifequsecolor\equsecolorfalse}{}
+\DeclareOptionX{forpaper}{\equsecolorfalse\eqforpapertrue
+ \PassOptionsToPackage{monochrome}{\eq@ColorPackage}}
+\DeclareOptionX{forcolorpaper}{\equsecolortrue\eqforpapertrue} % for print
+\DeclareOptionX{preview}{\previewtrue}
+\define@key{eqexam.sty}{webOpts}[]{\def\eqe@webOpts{#1,\eqDriverName}}
+\def\eqe@webOpts{\eqDriverName}
+\define@key{eqexam.sty}{exerquizOpts}[]{\def\eqe@eqOpts{#1,nodljs}}
+\def\eqe@eqOpts{nodljs}
+\DeclareOptionX{nosolutions}{\eq@nolinktrue\eq@nosolutionstrue
+ \displayworkareatrue}
+\DeclareOptionX{nohiddensolutions}{\eq@globalshowsolutionstrue}
+\DeclareOptionX{noHiddensolutions}%
+ {\eq@globalshowsolutionstrue\AtBeginDocument{\def\Hidesymbol{h}}}
+\DeclareOptionX{solutionsafter}{\eq@solutionsaftertrue
+ \displayworkareafalse}
+\DeclareOptionX{solutionsonly}{%
+ \solutionsonlytrue\answerkeytrue\displayworkareafalse
+ \AtEndOfPackage{\therearesolutionstrue\let\exerSolnsHeadnToc\relax}}
+\DeclareOptionX{proofing}{\eq@proofingtrue}
+\newcommand{\showproofing}{\eq@proofingtrue}
+\newcommand{\hideproofing}{\eq@proofingfalse}
+\newif\ifaebshowgrayletters\aebshowgraylettersfalse
+\DeclareOptionX{showgrayletters}%
+ {\AtEndOfPackage{\aebshowgrayletterstrue}}
+\newif\ifdisplayworkarea \displayworkareafalse
+\IfFileExists{xcolor.sty}%
+{\def\eq@ColorPackage{xcolor}\def\eqe@color@opt{table}%
+ \PassOptionsToPackage{xcolor}{table}}
+{\def\eq@ColorPackage{color}\let\eqe@color@opt\@empty}
+\DeclareOptionX{noxcolor}{\def\eq@ColorPackage{color}}
+\newif\if@eqeuseclassmaketitle \@eqeuseclassmaketitlefalse
+\DeclareOptionX{useclassmaketitle}{\@eqeuseclassmaketitletrue}
+\newif\if@bypasseqexamheading \@bypasseqexamheadingfalse
+\DeclareOptionX{bypasspkgpagestyle}{\@bypasseqexamheadingtrue
+ \ExecuteOptionsX{nototals}}
+\DeclareOptionX{dvipsone}{%
+ \def\eqe@drivernum{0}\def\eqDriverName{dvipsone}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipsone}}
+\DeclareOptionX{dvips}{\def\eqe@drivernum{0}\def\eqDriverName{dvips}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvips}}
+\DeclareOptionX{pdftex}{\def\eqe@drivernum{1}\def\eqDriverName{pdftex}%
+ \PassOptionsToPackage{\eq@ColorPackage}{pdftex}}
+\DeclareOptionX{dvipdfm}{%
+ \def\eqe@drivernum{2}\def\eqDriverName{dvipdfm}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipdfm}}
+\DeclareOptionX{dvipdfmx}{\def\eqe@drivernum{2}%
+ \def\eqDriverName{dvipdfmx}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipdfmx}}
+\DeclareOptionX{xetex}{\def\eqe@drivernum{2}\def\eqDriverName{xetex}%
+ \PassOptionsToPackage{\eq@ColorPackage}{xetex}}
+\DeclareOptionX{textures}{%
+ \def\eqe@drivernum{3}\def\eqDriverName{textures}%
+ \PassOptionsToPackage{\eq@ColorPackage}{textures}}
+\DeclareOptionX*{%
+ \PassOptionsToPackage{\CurrentOption}{\eq@ColorPackage}}
+\def\eqe@drivernum{5}
+\let\eqDriverName\@empty
+\newif\ifeq@solutionsafter \eq@solutionsafterfalse
+\newif\ifsolutionsonly\solutionsonlyfalse
+\newif\ifeq@hidesolution \eq@hidesolutionfalse
+\newif\ifeq@globalshowsolutions \eq@globalshowsolutionsfalse
+\newif\ifeq@nosolutions \eq@nosolutionsfalse
+\newif\ifeq@proofing \eq@proofingfalse
+\newif\ifeq@nolink \eq@nolinkfalse
+\@ifundefined{ifpreview}{\newif\ifpreview \previewfalse}{}
+\newif\ifeqforpaper \eqforpaperfalse
+\def\eqe@csarg#1#2{\expandafter#1\csname#2\endcsname}
+\@for\eqe@tmp@i:={},i,ii,iii,iv,v,vi\do{\eqe@csarg
+ \edef{eqemyconfig\eqe@tmp@i}{\noexpand
+ \InputIfFileExists{eqexam\eqe@tmp@i.cfg}{}{}}%
+ \eqe@tmp@exp
+}
+\InputIfFileExists{web.cfg}{}{}
+\InputIfFileExists{eqecus.opt}{}{}
+\InputIfFileExists{rendition.cfg}{}{}
+\InputIfFileExists{exambuilder.cfg}{}{}
+\ProcessOptionsX
+\AtEndOfPackage{\selectedMC}
+\edef\eqe@tmpexp{\noexpand
+\RequirePackage{\eq@ColorPackage}}\eqe@tmpexp
+\@ifpackageloaded{xcolor}{\AtEndOfPackage{\let\CT@cell@color\relax
+ \let\CT@arc@\relax}%
+ \@ifpackagelater{xcolor}{2004/07/04}{}{\PackageError{eqexam}{%
+ *************************************************\MessageBreak
+ * Your Version of `xcolor.sty' is too old!\MessageBreak
+ * You need the version from 2004/07/04 or newer\MessageBreak
+ * or use: \string\usepackage[noxcolor]{eqexam}\MessageBreak
+ * or \string\documentclass[noxcolor]{article}\MessageBreak
+ *************************************************}{}%
+ }%
+}{}
+\if\eqe@nocustomdesign1\eqcustomdesignfalse\fi
+\long\def\eqe@IWO#1{\immediate\write#1}
+\newcommand{\showAllAnsAtEnd}{%
+ \makeAnsEnvForSolnsAtEnd\eqTopOfSolnPage
+ \answerkeytrue\eq@proofingtrue
+ \eq@solutionsaftertrue\vspacewithsolnstrue
+ \displayworkareafalse\withsoldoctrue
+}
+\newcommand{\makeAnsEnvForSolnsAtEnd}{%
+ \let\answers\answers@sq
+ \let\endanswers\endanswers@sq
+ \let\manswers\manswers@sq
+ \let\endmanswers\endmanswers@sq
+}
+\newcommand{\solAtEndFormatting}[1]{\def\eqeAEFormatting{#1}}
+\let\eqeAEFormatting\@empty
+\def\writeAllAnsAtEnd{\ifsolutionsonly\else
+ \let\quiz@solns\ex@solns
+ \eqe@IWO\quiz@solns{\string\showAllAnsAtEnd}%
+ \ifx\eqeAEFormatting\@empty\else
+ \eqe@IWO\quiz@solns{\string\eqeAEFormatting}\fi
+ \fi
+}
+\newcommand{\setSolnMargins}[1]{\setlength\eqemargin{#1}}
+\def\altSetSolnMargins#1{\def\alt@SetSolnMargins{#1}}
+\let\alt@SetSolnMargins\@empty
+\def\writeBeginEqeQuestions{%
+ \ifsolutionsonly\else
+ \let\quiz@solns\ex@solns
+ \ifx\alt@SetSolnMargins\@empty
+ \writeToSolnFile{\string\setSolnMargins{\the\eqemargin}}\else
+ \writeToSolnFile{\alt@SetSolnMargins}\fi
+ \writeToSolnFile{\string\noindent\string\begin{eqequestions}}%
+ \fi
+}
+\newcommand{\setBtwnExamSkip}[1]{\gdef\btwnExamSkipAmt{#1}%
+ \def\btwnExamSkip{\ifdim#1=0pt\else
+ \vskip#1\relax\fi}}
+\setBtwnExamSkip{6pt}
+\def\writeEndEqeQuestions{%
+ \ifsolutionsonly\else
+ \let\quiz@solns\ex@solns
+ \eqe@IWO\quiz@solns{\string\end{eqequestions}^^J}%
+ \writeToSolnFile{\string\btwnExamSkip^^J}%
+ \fi
+}
+\ifvspacewithsolns
+ \answerkeyfalse\eq@proofingfalse\eq@solutionsafterfalse
+ \eq@nolinkfalse\eq@nosolutionsfalse\displayworkareatrue
+\fi
+\let\savedeq@online\eq@online
+\let\savedifeq@solutionsafter\ifeq@solutionsafter
+\let\savedifeq@hidesolution\ifeq@hidesolution
+\let\savedifeq@globalshowsolutions\ifeq@globalshowsolutions
+\let\savedifeq@nosolutions\ifeq@nosolutions
+\let\savedifeq@proofing\ifeq@proofing
+\let\savedifeq@nolink\ifeq@nolink
+\let\savedifpreview\ifpreview
+\let\savedifeqforpaper\ifeqforpaper
+\let\ifnosolutions\ifeq@nosolutions
+\RequirePackage{amstext,amssymb}
+\@ifundefined{if@fleqn}{\let\fleqnOn\relax\let\fleqnOff\relax}
+ {\def\fleqnOn{\@fleqntrue}\def\fleqnOff{\@fleqnfalse}}
+\RequirePackage{comment}
+\AtEndDocument{\includeexersolutions}
+\@ifpackageloaded{web}{\let\load@web\eqe@YES}{%
+ \ifx\load@web\eqe@YES\ifnum\eqe@drivernum=5
+ \PackageInfo{eqexam}{You have not selected a driver %
+ for eqexam. Perhaps the \MessageBreak
+ driver is introduced through web.cfg%
+ }\fi\expandafter\RequirePackage\expandafter[\eqe@webOpts]{web}%
+ \edef\@pdfcreator{\@pdfcreator, The eqexam Package}\fi
+}
+\@ifpackageloaded{exerquiz}{\let\load@exerquiz\eqe@YES}{%
+ \let\symbolchoice\@gobble
+ \ifx\load@exerquiz\eqe@YES\expandafter
+ \RequirePackage\expandafter[\eqe@eqOpts]{exerquiz}[2011/08/30]
+ \let\importdljs\eqe@YES\let\execjs\eqe@YES
+ \fi
+}
+\@ifpackageloaded{eforms}{}{%
+ \let\symbolchoice\@gobble
+}
+\def\eqDvipsone{dvipsone}
+\@ifpackageloaded{hyperref}
+ {\ifx\eqDriverName\eqDvipsone
+ \renewcommand\@pdfviewparams{ null null null}\fi
+ }{\let\textorpdfstring\@firstoftwo}
+\let\eq@online\savedeq@online
+\let\ifeq@solutionsafter\savedifeq@solutionsafter
+\def\ifsolutionsafter{\ifeq@solutionsafter} % user interface
+\let\ifeq@hidesolution\savedifeq@hidesolution
+\let\ifeq@globalshowsolutions\savedifeq@globalshowsolutions
+\let\ifeq@nosolutions\savedifeq@nosolutions
+\let\ifeq@proofing\savedifeq@proofing
+\let\ifeq@nolink\savedifeq@nolink
+\let\ifpreview\savedifpreview
+\let\ifeqforpaper\savedifeqforpaper
+\RequirePackage{calc}
+\RequirePackage{pifont}
+\RequirePackage{array}
+\RequirePackage{verbatim}
+\RequirePackage{multicol}
+\setlength\columnseprule{.4pt}
+\raggedcolumns\multicolsep=3pt
+\newcommand{\setmulticolprob}{%
+ \setlength{\linewidth}{\linewidth+\eqemargin}}
+\edef\eqe@reqPack{\ifeqfortextbook\noexpand\RequirePackage{eso-pic}\else
+\relax\fi}
+\eqe@reqPack
+\@ifundefined{ifsolutionsAtEnd}
+ {\newif\ifsolutionsAtEnd\solutionsAtEndtrue}{}
+\ifvspacewithsolns\solutionsAtEndtrue\fi
+\ifanswerkey\solutionsAtEndfalse\fi
+\ifeq@nosolutions\solutionsAtEndfalse\fi
+\ifeq@solutionsafter\solutionsAtEndfalse\fi
+\@ifundefined{eqemargin}{\newlength{\eqemargin}}{}
+\providecommand{\prbDecPt}[1]{\def\eqe@decPointPrb{#1}}
+\def\eqe@decPointPrb{.}\def\eqe@dpsepPrb{\ }
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\def\eqe@prtsepPrb{\ }
+\providecommand{\prbNumPrtsep}[1]{\def\eqe@hspannerPrb{#1}}
+\def\eqe@hspannerPrb{\ }
+\newcommand{\eqexammargin}[2][\normalsize\normalfont\bfseries]{%
+ \settowidth{\eqemargin}{#1#2\eqe@decPointPrb\eqe@hspannerPrb}}
+\eqexammargin{00}
+\def\eqe@hspannerSoln{\ } % space after prob number
+\providecommand{\solNumPrtsep}[1]{\def\eqe@hspannerSoln{#1}}
+\newcommand{\eqeSetExamPageParams}{%
+ \setlength{\headheight}{12pt}
+ \setlength{\topmargin}{-.5in}
+ \setlength{\headsep}{20pt}
+ \setlength{\oddsidemargin}{0pt}
+ \setlength{\evensidemargin}{0pt}
+ \setlength{\marginparsep}{11pt}
+ \setlength{\marginparwidth}{35pt}
+ \setlength{\footskip}{11pt}
+}
+\newcommand{\eqExamPageLayout}{%
+ \setlength\textwidth\paperwidth
+ \addtolength{\textwidth}{-2in}
+ \addtolength{\textwidth}{-\oddsidemargin}
+ \setlength\textheight{\paperheight}
+ \addtolength\textheight{-2in}
+ \addtolength\textheight{-\headheight}
+ \addtolength\textheight{-\headsep}
+ \addtolength\textheight{-\topmargin}
+ \addtolength\textheight{-\footskip}
+}
+\ifeqcustomdesign\else
+\eqeSetExamPageParams
+\eqExamPageLayout
+\fi
+\newcommand{\ps@eqExamheadings}
+{%
+ \renewcommand{\@oddhead}{%
+ {\normalfont\normalsize\ifnum\value{page}<2
+ \hfil\else\eqExamRunHead\fi}}%
+ \renewcommand{\@evenhead}{\@oddhead}
+ \renewcommand{\@oddfoot}{\settotalsbox\runExamFooter}
+ \renewcommand{\@evenfoot}{\@oddfoot}
+}
+\raggedbottom
+\newcounter{eqpointsofar}
+\newcounter{eqpointsthispage}
+\newcounter{eq@numparts}
+\newcounter{eq@count}
+\newtoks\partNames \partNames={}
+\newlength{\eq@tmplengthA}
+\newbox{\eq@pointbox}
+\newlength{\eq@pointboxtotalheight}
+\newlength{\eqetmplengtha}
+\newlength{\eqetmplengthb}
+\def\PointsOnLeft{\def\@reportpoints{1}\let\marginpoints\eqleftmargin}
+\def\PointsOnRight{\def\@reportpoints{2}\relax
+ \let\marginpoints\eqrightmarginbox}
+\def\PointsOnBothSides{\def\@reportpoints{3}\relax
+ \let\marginpoints\eqbothmargins}
+\newif\ifeqe@nopoints \eqe@nopointsfalse
+\def\NoPoints{\if\isInExamEnv\eqe@NO
+ \eqe@nopointstrue\def\@reporttotals{0}\let\totalsbox=\hfil
+ \let\marginpoints\@empty\let\eq@nosummarytotals\eqe@YES\else
+ \PackageWarning{eqexam}{The \string\NoPoints\space ignored;
+ it needs to be executed\MessageBreak outside of an
+ exam environment}\fi}
+\def\TotalsOnLeft{\def\@reporttotals{1}\def\totalsbox{\totalsboxleft}}
+\def\TotalsOnRight{\def\@reporttotals{2}\def\totalsbox{\totalsboxright}}
+\def\noZeroTotals{\let\eqe@zeroTotalsAllowed\eqe@NO}
+\def\allowZeroTotals{\let\eqe@zeroTotalsAllowed\eqe@YES}
+\allowZeroTotals
+\def\NoTotals{\def\@reporttotals{0}\let\totalsbox=\hfil}
+\def\SummaryTotalsOn{\let\eq@nosummarytotals\eqe@NO}
+\def\SummaryTotalsOff{\let\eq@nosummarytotals\eqe@YES}
+\def\eoeTotalOff{\let\eq@parttotals\eqe@NO}
+\def\eoeTotalOn{\let\eq@parttotals\eqe@YES}
+\def\separationruleOn{\let\eqx@separationrule\eqe@YES}
+\def\separationruleOff{\let\eqx@separationrule\eqe@NO}
+\def\AllowFitItIn{\global\let\eq@fititin\eqfititin}
+\def\DoNotFitItIn{\global\let\eq@fititin\@gobble}
+\def\NoSolutions{\eq@nolinktrue\eq@nosolutionstrue
+ \displayworkareatrue}
+\@onlypreamble\NoSolutions
+\def\vspacewithkeyOn{\keepdeclaredvspacingtrue}
+\def\vspacewithkeyOff{\keepdeclaredvspacingfalse}
+\newif\ifdispl@yPoints\displ@yPointstrue
+\newcommand{\displayPointsOn}{\displ@yPointstrue}
+\newcommand{\displayPointsOff}{\displ@yPointsfalse}
+\newif\ifl@stDispl@yPoints\l@stDispl@yPointsfalse
+\def\encloseProblemsWith#1{%
+ \ifsolutionsonly\excludecomment{#1}\else
+ \includecomment{#1}\fi
+}
+\providecommand{\proofingsymbolColor}[1]{\def\@proofingsymbolColor{#1}}
+\proofingsymbolColor{red}
+\providecommand{\instructionsColor}[1]{\def\@instructionsColor{#1}}
+\instructionsColor{blue}
+\providecommand{\eqCommentsColor}[1]{\def\@eqCommentsColor{#1}}
+\eqCommentsColor{blue}
+\providecommand{\eqCommentsColorBody}[1]{\def\@eqCommentsColorBody{#1}}
+\eqCommentsColorBody{black}
+\providecommand{\universityColor}[1]{\def\webuniversity@color{#1}}
+\universityColor{blue}
+\providecommand{\titleColor}[1]{\def\webtitle@color{#1}}
+\titleColor{black}
+\providecommand{\authorColor}[1]{\def\webauthor@color{#1}}
+\authorColor{black}
+\providecommand{\subjectColor}[1]{\def\websubject@color{#1}}
+\subjectColor{blue}
+\providecommand{\linkcolor}[1]{\def\@linkcolor{#1}}
+\linkcolor{blue}
+\providecommand{\nolinkcolor}[1]{\def\@nolinkcolor{#1}}
+\nolinkcolor{black}
+\providecommand{\eqEndExamTotalColor}[1]{\def\endexamtotal@color{#1}}
+\eqEndExamTotalColor{black}
+\newcommand\fillinColor[1]{\def\eq@fillinColor{#1}}\fillinColor{red}
+\providecommand{\sectionColor}[1]{\def\web@sectionsColorOld{#1}
+ \def\aeb@sectioncolor{#1}}
+\sectionColor{blue}
+\newcommand{\forceNoColor}{%
+ \proofingsymbolColor{black}\instructionsColor{black}
+ \eqCommentsColor{black}\universityColor{black}
+ \titleColor{black}\authorColor{black}
+ \subjectColor{black}\linkcolor{black}
+ \nolinkcolor{black}\fillinColor{black}
+ \eqEndExamTotalColor{black}
+ \if\load@web\eqe@YES\sectionColor{black}\fi
+}
+\def\examNum#1{\def\nExam{#1}}
+\examNum{1}
+\def\Exam{\ifAB{\eq@VersionAtext}{\eq@VersionBtext}}
+\def\sExam{\ifAB{\eq@shortVersionAtext}{\eq@shortVersionBtext}}
+\def\VersionAtext#1{\def\eq@VersionAtext{#1}}
+\def\VersionBtext#1{\def\eq@VersionBtext{#1}}
+\def\shortVersionAtext#1{\def\eq@shortVersionAtext{#1}}
+\def\shortVersionBtext#1{\def\eq@shortVersionBtext{#1}}
+\VersionAtext{Exam~\nExam--Version A}
+\VersionBtext{Exam~\nExam--Version B}
+\shortVersionAtext{Exam~\nExam A}
+\shortVersionBtext{Exam~\nExam B}
+\newtoks\eqtemptokena
+\newtoks\eqtemptokenb
+\def\numVersions#1{\ifnum#1>26\def\eq@nVersions{26}%
+ \PackageWarning{eqexam}{The value of \string\numVersions\space is
+ too large. \MessageBreak Choose a natural number less than 27}
+ \else\def\eq@nVersions{#1}\fi}
+\newcommand{\longTitleText}[1][]{%
+ \ifeqglobalversion\let\eq@selectedVersion@save\eq@selectedVersion
+ \else\let\eq@selectedVersion@save\relax\fi
+ \uppercase{\def\eqe@localTextTitle{#1}}%
+ \ifx\eqe@localTextTitle\@empty\else
+ \expandafter\forVersion\expandafter{\eqe@localTextTitle}\fi
+ \eqe@contTitleText{\Exam}{\endlongTitleText}%
+}
+\def\endlongTitleText{l}
+\newcommand{\shortTitleText}[1][]{%
+ \ifeqglobalversion\let\eq@selectedVersion@save\eq@selectedVersion
+ \else\let\eq@selectedVersion@save\relax\fi
+ \uppercase{\def\eqe@localTextTitle{#1}}%
+ \ifx\eqe@localTextTitle\@empty\else
+ \expandafter\forVersion\expandafter{\eqe@localTextTitle}\fi
+ \eqe@contTitleText{\sExam}{\endshortTitleText}%
+}
+\def\endshortTitleText{s}
+\def\eqe@contTitleText#1#2{%
+ \setcounter{eq@count}{0}%
+ \eqtemptokena={}\let\endtitleMarker#2
+ \@gatherTitleText{#1}%
+}
+\def\@gatherTitleText#1#2{%
+ \def\eqe@argii{#2}
+ \if\endtitleMarker\eqe@argii
+ \ifnum\value{eq@count}>\eq@nVersions\let\eqe@next\relax
+ \else\def\eqe@next{\eq@shortTitlesFix{#1}}\fi
+ \else
+ \stepcounter{eq@count}
+ \eqtemptokenb=\expandafter{#2}
+ \xdef#1{\the\eqtemptokena\expandafter\noexpand
+ \csname v\Alph{eq@count}\endcsname{\the\eqtemptokenb}}
+ \xdef\sExam{\the\eqtemptokena\expandafter\noexpand
+ \csname v\Alph{eq@count}\endcsname{\the\eqtemptokenb}}
+ \eqtemptokena=\expandafter{#1}
+ \ifnum\value{eq@count}<\eq@nVersions
+ \def\eqe@next{\@gatherTitleText{#1}}%
+ \else
+ \def\eqe@next{%
+ \if\endtitleMarker\endlongTitleText
+ \expandafter\eqe@absorbTokensLong
+ \else
+ \expandafter\eqe@absorbTokensShort
+ \fi
+ }%
+ \fi
+ \fi
+ \eqe@next
+}
+\long\def\eqe@absorbTokensLong#1\endlongTitleText{%
+ \protected@xdef\Exam{\Exam}\ifx\eq@selectedVersion@save\relax
+ \eqe@offVersion\else\expandafter\forVersion\expandafter
+ {\eq@selectedVersion@save}\fi}
+\long\def\eqe@absorbTokensShort#1\endshortTitleText{%
+ \protected@xdef\sExam{\sExam}\ifx\eq@selectedVersion@save\relax
+ \eqe@offVersion\else\expandafter\forVersion\expandafter
+ {\eq@selectedVersion@save}\fi}
+\def\eq@shortTitlesFix#1{%
+ \PackageWarning{eqexam}{You have defined an insufficient number
+ of titles\MessageBreak for the number of versions declared in
+ \string\numVersions.\MessageBreak Please fix the problem}%
+ \stepcounter{eq@count}%
+ \if\endtitleMarker\endlongTitleText
+ \edef\eqe@tmp{\noexpand\@gatherTitleText{\noexpand#1}
+ {??---Title \# \the\value{eq@count}---??}%
+ \noexpand\endlongTitleText}
+ \else
+ \edef\eqe@tmp{\noexpand\@gatherTitleText{\noexpand#1}
+ {T\#\the\value{eq@count}??}\noexpand\endshortTitleText}
+ \fi
+ \addtocounter{eq@count}{-1}%
+ \eqe@tmp
+}
+\def\ifAB#1#2{\if\eq@selectedVersion A#1%
+ \else\if\eq@selectedVersion B#2\fi\fi}
+\def\eq@replaceToken#1{#1}
+\newif\ifeqglobalversion \eqglobalversionfalse
+\newif\ifeqlocalversion \eqlocalversionfalse
+\newif\if@templocalversion \@templocalversionfalse
+\def\eqe@initializeMultiVersions{%
+ \let\save@message\message\let\message\@gobble
+ \@tfor\eqe@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\let\csname v\eqe@tmp\endcsname\@gobble
+ \expandafter\excludecomment\expandafter{ver\eqe@tmp}%
+ \expandafter\let\csname Afterver\eqe@tmp Comment\endcsname\relax
+ }\let\message\save@message
+}
+\AtBeginDocument{\let\eqe@initializeMultiVersions\relax}
+\let\eqe@@onVersion\@empty
+\def\eqe@onVersion{\g@addto@macro\eqe@@onVersion}
+\let\eqe@@offVersion\@empty
+\def\eqe@offVersion{\g@addto@macro\eqe@@offVersion}
+\let\eqe@@holdTemp\@empty
+\def\eqe@holdTemp{\g@addto@macro\eqe@@holdTemp}
+\def\eqe@showArg#1{#1}
+\def\eqe@turnOnComment#1{%
+ \csarg\let{v#1}\eqe@showArg
+ \edef\exp@temp{\noexpand\includecomment{ver#1}}\exp@temp
+}
+\def\eqe@turnOffComment#1{%
+ \csarg\let{v#1}\@gobble
+ \edef\exp@temp{\noexpand\excludecomment{ver#1}}\exp@temp
+ \csarg\let{Afterver#1Comment}\relax
+}
+\def\forVersion#1%
+{%
+ \eqe@initializeMultiVersions
+ \let\eqe@@onVersion\@empty
+ \let\eqe@@offVersion\@empty
+ \global\eqglobalversiontrue
+ \setcounter{eq@count}{0}%
+ \uppercase{\edef\eq@selectedVersion{#1}}%
+ \edef\selVersion{\eq@selectedVersion}%
+ \@ifundefined{eq@nVersions}{\PackageInfo{eqexam}{%
+ \string\numVersions\space has not been declared, \MessageBreak
+ taking the number of versions to be 2.}\def\eq@nVersions{2}}{}%
+ \loop
+ \stepcounter{eq@count}%
+ \expandafter\if\Alph{eq@count}\eq@selectedVersion
+ \xdef\eq@nSelectedVersion{\the\value{eq@count}}%
+ \setcounter{eq@count}{27}\fi
+ \ifnum\value{eq@count}<26\repeat
+ \ifnum\eq@nSelectedVersion >\eq@nVersions
+ \PackageError{eqexam}
+ {The value of \string\forVersion
+ \space(\eq@selectedVersion)\MessageBreak
+ exceeds the value of \string\numVersions\space
+ (\eq@nVersions)}%
+ {Decrease the value of \string\forVersion.}%
+ \fi
+ \setcounter{eq@count}{0}%
+ \let\save@message\message\let\message\@gobble
+ \loop
+ \stepcounter{eq@count}%
+ \csarg\let{After\Alph{eq@count}Comment}\relax
+ \lowercase
+ {%
+ \if#1\alph{eq@count}%
+ \eqe@turnOnComment{\Alph{eq@count}}%
+ \edef\temp@exp{\noexpand
+ \eqe@turnOnComment{\Alph{eq@count}}}%
+ \expandafter\eqe@onVersion\expandafter{\temp@exp}%
+ \edef\temp@exp{\noexpand
+ \eqe@turnOffComment{\Alph{eq@count}}}%
+ \expandafter\eqe@offVersion\expandafter{\temp@exp}%
+ \else
+ \eqe@turnOffComment{\Alph{eq@count}}%
+ \fi
+ }%
+ \ifnum\value{eq@count}<\eq@nVersions\repeat
+ \let\message\save@message
+}
+\AtEndOfPackage{\numVersions{26}\forVersion{A}%
+ \eq@renditionOptions}
+\def\selectVersion#1#2{% #1 \le #2
+ \xdef\nLocalSelection{#1}\xdef\nLocalVersions{#2}%
+ \let\needsModArith\eqe@YES
+ \ifeqobeylocalversion\ifx\nLocalSelection\@empty\else
+ \let\needsModArith\eqe@NO\fi\fi
+ \edef\exer@solnheadhook{%
+ \string\selectVersion{#1}{#2}}%
+ \let\save@message\message\let\message\@gobble
+ \eqe@@onVersion
+ \ifx\eqe@@holdTemp\@empty\else
+ \eqe@@onVersion\eqe@@holdTemp
+ \let\eqe@@holdTemp\@empty
+ \fi
+\ifx\needsModArith\eqe@YES
+ \ifeqglobalversion\ifnum\eq@nSelectedVersion>\nLocalVersions
+ \eqe@@offVersion
+ {\count0=\eq@nSelectedVersion \count2=\count0
+ \advance\count0by-1 \divide\count0by\nLocalVersions
+ \multiply\count0by\nLocalVersions %\count2=\eq@nSelectedVersion
+ \advance\count2by-\count0
+ \xdef\nLocalSelection{\the\count2 }%
+ \ifeqobeylocalversion\else
+ \global\@templocalversiontrue
+ \global\eqobeylocalversiontrue\fi}%
+ \global\let\eqe@@holdTemp\@empty
+ \fi\fi
+\fi
+ \ifeqobeylocalversion
+ \global\eqlocalversiontrue
+ \setcounter{eq@count}{0}%
+ \ifx\nLocalSelection\@empty
+ \def\nLocalSelection{\eq@nSelectedVersion}%
+ \fi
+ \ifnum\nLocalSelection>\nLocalVersions
+ {\count0=\nLocalSelection
+ \count2=\count0
+ \advance\count0by-1 \divide\count0by\nLocalVersions
+ \multiply\count0by\nLocalVersions
+ \advance\count2by-\count0
+ \xdef\nLocalSelection{\the\count2 }}%
+ \fi
+ \let\save@message\message\let\message\@gobble
+ \loop
+ \stepcounter{eq@count}%
+ \csarg\let{Afterver\Alph{eq@count}Comment}\relax
+ \lowercase
+ {%
+ \ifnum\value{eq@count}=\nLocalSelection
+ \eqe@turnOnComment{\Alph{eq@count}}%
+ \edef\temp@exp{\noexpand
+ \eqe@turnOffComment{\Alph{eq@count}}}%
+ \expandafter\eqe@holdTemp\expandafter{\temp@exp}%
+ \else
+ \eqe@turnOffComment{\Alph{eq@count}}%
+ \fi
+ }%
+ \ifnum\value{eq@count}<\nLocalVersions\repeat
+ \let\message\save@message
+ \fi
+ \if@templocalversion\global\eqobeylocalversionfalse\fi
+ \@templocalversionfalse
+ \let\message\save@message
+}
+\@ifpackageloaded{web}{}{%
+ \@ifpackageloaded{hyperref}{}{\let\texorpdfstring\@firstoftwo}%
+ \let\web@save@title\title
+ \def\title{\@ifnextchar[{\@web@title}{\@web@title[]}}
+ \def\@web@title[#1]#2{\gdef\webtitle{#2}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdftitle={#2}}}%
+ \def\webArg{#1}\ifx\webArg\@empty\gdef\shortwebtitle{#2}\else
+ \gdef\shortwebtitle{#1}\fi\web@save@title{#2}}
+ \let\web@saved@author\author
+ \def\author#1{\gdef\webauthor{#1}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfauthor={#1}}}%
+ \web@saved@author{#1}}
+ \def\subject{\@ifnextchar[{\@subject}{\@subject[]}}
+ \def\@subject[#1]#2{\def\webArg{#1}%
+ \ifx\webArg\@empty\gdef\shortwebsubject{#2}\else
+ \gdef\shortwebsubject{#1}\fi\gdef\websubject{#2}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfsubject={#2}}}}
+ \def\email#1{\gdef\webemail{#1}}
+ \def\keywords#1{\gdef\webkeywords{#1}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfkeywords={#1}}}}
+ \def\university#1{\gdef\webuniversity{#1}}
+ \def\copyrightyears#1{\gdef\webcopyrightyears{#1}}
+ \def\version#1{\gdef\web@version@value{#1}%
+ \edef\webversion{\ifx\web@version@value\@empty\else
+ \noexpand\web@versionlabel\noexpand\
+ \noexpand\web@version@value\fi}%
+ }
+ \let\web@version@value\@empty
+ \def\versionLabel#1{\def\web@versionlabel{#1}}
+ \versionLabel{Version}
+ \def\web@toc{Table of Contents}
+ \def\web@continued{cont.}
+ \title{}\author{}\email{}\subject{}\keywords{}\university{}
+ \providecommand{\optionalPageMatter}[2][]{%
+ \def\optionalpagematter{#2}}
+ \def\optionalpagematter{}
+}
+\def\duedate#1{\def\theduedate{#1}}
+\duedate{}
+\def\duedate#1{\def\theduedate{#1}}
+\duedate{}
+\newcommand\thisterm{%
+ \ifnum\month<6Spring\else
+ \ifnum\month<8Summer\else
+ \ifnum\month>8Fall\else
+ \ifnum\day>25Fall\else
+ Summer\fi\fi\fi\fi
+}
+\newcommand{\examAnsKeyLabel}[1]{%
+ \def\@examAnsKeyLabel{\ifanswerkey\space #1\fi}}
+\examAnsKeyLabel{Answer Key}
+\newcommand\examNameLabel[1]{\gdef\@examNameLabel{#1\@examAnsKeyLabel}}
+\examNameLabel{Name:}
+\newcommand{\idinfoHighlight}[1]{\def\eqe@idinfohl{#1}}
+\idinfoHighlight{\underbar}
+\newcommand\eqExamName[2][]{%
+ \def\eqExamName@argi{#1}\def\eqExamName@argii{#2}}
+\def\eq@ExamName{\bgroup
+ \settowidth\eq@tmplengthA{\@examNameLabel\ }%
+ \@tempdima=\eqExamName@argii\relax
+ \advance\@tempdima by-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\eqExamName@argii][l]{\@examNameLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqExamName@argi]%
+ {\@tempdima}{IdInfo.Name}\egroup}
+\eqExamName[\Ff\FfRequired]{2.25in}
+\newcommand\examSIDLabel[1]{\gdef\@examSIDLabel{#1}}
+\examSIDLabel{SID:}
+\newcommand\eqSID[2][]{\def\eqSID@argi{#1}\def\eqSID@argii{#2}}
+\def\eq@SID{\bgroup\settowidth\eq@tmplengthA{\@examSIDLabel\ }%
+ \@tempdima=\eqSID@argii\relax\advance\@tempdima by-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\eqSID@argii][l]{\@examSIDLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqSID@argi]%
+ {\@tempdima}{IdInfo.SID}\egroup}
+\eqSID[\Ff\FfRequired]{2.25in}
+\newcommand\examEmailLabel[1]{\gdef\@examEmailLabel{#1}}
+\examEmailLabel{Email:}
+\newcommand\eqEmail[2][]{%
+ \def\eqExam@argi{#1}\def\eqEmail@argii{#2}}
+\gdef\eq@Email{\bgroup\settowidth\eq@tmplengthA{\@examEmailLabel\ }%
+ \@tempdima=\eqEmail@argii\relax\advance\@tempdima by-\eq@tmplengthA
+ \underbar{\makebox[\eqEmail@argii][l]{\@examEmailLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqEmail@argi]%
+ {\@tempdima}{IdInfo.email}\egroup}
+\eqEmail{2.25in}
+\def\insTxtFieldIdInfo[#1]#2#3{%
+ \@ifundefined{@quiz}{}{\if\eq@online\eqe@YES
+ \ifeq@nosolutions\ifeq@solutionsafter\else
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}#1]{#3}{#2}{11bp}}}%
+ \fi\fi\fi
+ }%
+}
+\def\SubmitInfo#1#2{%
+ \def\EqExam@SubmitURL{#1}\def\@EmailInstr{#2}%
+}
+\def\EmailCourseName#1{\def\@EmailCourseName{#1}}
+\EmailCourseName{\websubject}
+\def\EmailExamName#1{\def\@EmailExamName{#1}}
+\EmailExamName{\webtitle}
+\def\EmailSubject#1{\def\@EmailSubject{#1}}
+\EmailSubject{}
+\def\ServerRetnMsg#1{\def\@ServerRetnMsg{#1}}
+\ServerRetnMsg{}
+\def\SubmitButtonLabel#1{\def\@SubmitButtonLabel{#1}}
+\SubmitButtonLabel{Submit}
+\let\priorSubmitJS\@gobble
+\let\postSubmitJS\@empty
+\def\SubmitButton
+{%
+ \ifx\use@email\eqe@YES\ifeq@nosolutions\ifeq@solutionsafter\else
+ \makebox[0pt][l]{\pushButton
+ [\CA{\@SubmitButtonLabel}\A{\JS{%
+ var _eqEok2Submit = true;\r
+ var aSubmitFields = new Array("eqexam", "IdInfo");\r
+ \priorSubmitJS\r
+ if(_eqEok2Submit) this.submitForm("\EqExam@SubmitURL",
+ true, false, aSubmitFields);\r
+ \postSubmitJS
+ }}]{Submit}{1.5in}{16bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailInstr}
+ \V{\@EmailInstr}]{IdInfo.mailTo}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailCourseName}
+ \V{\@EmailCourseName}]{IdInfo.courseName}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailExamName}
+ \V{\@EmailExamName}]{IdInfo.examName}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailSubject}
+ \V{\@EmailSubject}]{IdInfo.subject}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@ServerRetnMsg}
+ \V{\@ServerRetnMsg}]{IdInfo.retnmsg}{11bp}{11bp}}%
+ \fi\fi\fi
+}
+\def\thequizno{\if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
+\def\linkContentFormat{%
+ \if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
+\def\linkContentWrapper{(\hfil\linkContentFormat\hfil)}%
+\def\Ans@r@l@Defaults
+{%
+ \BC{}\S{S}\W{1}\Ff{\FfNoToggleToOff}
+ \textSize{12}\textColor{0 g}
+}
+\newcommand{\optsRadioBtnf}[1]{\def\eqe@optsRadiof{#1}}
+\newcommand{\optsRadioBtnl}[1]{\def\eqe@optsRadiol{#1}}
+\let\eqe@optsRadiof\@empty\let\eqe@optsRadiol\@empty
+\def\eqExam@Ans@sq@l{\leavevmode
+ \if\eq@listType1\stepcounter{quizno}\else\ifwithsoldoc
+ \stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@l}%
+ \sbox{\eq@tmpbox}{\eq@l@l}\eq@tmpdima=\wd\eq@tmpbox
+ \def\link@@Content{\linkContentWrapper}%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.part\thepartno%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi%
+ \fi
+ }%
+ \if\eq@online\eqe@YES\relax
+ \makebox[0pt][l]{%
+ \radio@@Button{\presets{\eqe@optsRadiol}}{\fieldName}%
+ {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@r@l@Defaults\every@RadioButton\every@qRadioButton}}%
+ \else
+ \edef\@linkcolor{\@nolinkcolor}%
+ \fi
+ \ifeq@nosolutions\edef\@linkcolor{\@nolinkcolor}\fi
+ \textcolor{\@linkcolor}{\makebox[\eq@tmpdima]{\link@@Content}}%
+ \Ans@proofing{\eq@tmpdima}%
+ \eq@hspanner\ignorespaces
+}
+\def\eqExam@Ans@sq@f{\if\eq@listType1\stepcounter{quizno}\else
+ \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \if\eq@online\eqe@NO\previewtrue
+ \insertGrayLetters
+ \Ans@sq@f@driver
+ \else
+ \ifanswerkey\previewtrue
+ \Ans@sq@f@driver
+ \else
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi%
+ \fi
+ }\insertGrayLetters
+ \radio@@Button{\presets{\eqe@optsRadiof}}%
+ {\fieldName}{\RadioFieldSize}%
+ {\RadioFieldSize}{\Ans@choice\alph{quizno}}{\eq@protect\A}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
+ \every@sqRadioButton\insert@circlesymbol}%
+ \fi
+ \fi
+ \Ans@proofing{\RadioFieldSize}%
+ \eq@hspanner\ignorespaces
+}
+\newcommand{\optsCkBxf}[1]{\def\eqe@optscbf{#1}}
+\newcommand{\optsCkBxl}[1]{\def\eqe@optscbl{#1}}
+\let\eqe@optscbl\@empty\let\eqe@optscbf\@empty
+\def\eqExam@Ans@ck@sq@l{\leavevmode
+ \if\eq@listType1\stepcounter{quizno}\else
+ \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@l}%
+ \sbox{\eq@tmpbox}{\eq@l@l}\eq@tmpdima=\wd\eq@tmpbox
+ \def\link@@Content{\linkContentWrapper}%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno.\alph{quizno}%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.\alph{quizno}%
+ \fi
+ }%
+ \if\eq@online\eqe@YES\relax
+ \makebox[0pt][l]{\check@@Box{\presets{\eqe@optscbl}}{\fieldName}%
+ {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@r@l@Defaults\every@RadioButton\every@qRadioButton}}%
+ \else
+ \edef\@linkcolor{\@nolinkcolor}%
+ \fi
+ \ifeq@nosolutions\def\@linkcolor{\@nolinkcolor}\fi
+ \textcolor{\@linkcolor}{\makebox[\eq@tmpdima]{\link@@Content}}%
+ \Ans@proofing{\eq@tmpdima}%
+ \eq@hspanner\ignorespaces
+}
+\def\eqExam@Ans@ck@sq@f{\if\eq@listType1\stepcounter{quizno}\else
+ \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \if\eq@online\eqe@NO\previewtrue
+ \insertGrayLetters
+ \Ans@sq@f@driver
+ \else
+ \ifanswerkey\previewtrue
+ \Ans@sq@f@driver
+ \else
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno.\alph{quizno}%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.\alph{quizno}%
+ \fi
+ }\insertGrayLetters
+ \mbox{\check@@Box{\presets{\eqe@optscbf}}{\fieldName}%
+ {\RadioFieldSize}{\RadioFieldSize}%
+ {\Ans@choice\alph{quizno}}{\eq@protect\A}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
+ \every@sqRadioButton}}%
+ \fi
+ \fi
+ \Ans@proofing{\RadioFieldSize}%
+ \eq@hspanner\ignorespaces
+}
+\def\optsMlTextField#1{\def\eqe@optsmltf{#1}}
+\let\eqe@optsmltf\@empty
+\def\eqExamPriorVspace#1{%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.%
+ \theeqquestionnoi.part\thepartno.solution%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.solution%
+ \fi
+ }%
+ \nobreak\noindent\textField[\BC{}\presets{\eqe@optsmltf}
+ \Ff\FfMultiline]{\fieldName}{\linewidth}{#1}\@gobble
+}
+\@ifpackageloaded{exerquiz}{%
+ \let\Ans@sq@l\eqExam@Ans@sq@l
+ \let\Ans@sq@f\eqExam@Ans@sq@f
+ \let\Ans@ck@sq@l\eqExam@Ans@ck@sq@l
+ \let\Ans@ck@sq@f\eqExam@Ans@ck@sq@f
+ \def\eqexheader@wrapper{\makebox[0pt][r]{%
+ \hypertarget{qex.\the@exno}{\eqexheader}}}%
+ \if\eq@online\eqe@YES\relax
+ \newcounter{@cntfillin}%
+ \let\eqPriorVspace\eqExamPriorVspace
+ \fi
+}%
+{%
+ \input{eqalone.def}
+ \input{eqexam.def}
+ \@ifl@ter{def}{eqexam}{\eqexamdefReq}{}
+ {\PackageWarningNoLine{eqexam}
+ {This version of eqexam requires eqexam.def\MessageBreak
+ dated \eqexamdefReq\space or later}}
+ \def\eqexheader@wrapper{\makebox[0pt][r]{\eqexheader}}
+}
+\AtBeginDocument{%
+ \ifvspacewithsolns\writeAllAnsAtEnd\else
+ \ifeqfortextbook\writeAllAnsAtEnd\fi\fi
+}
+\vspacewithkeyOff
+\def\selectedMC{\useRectForMC}
+\ifallowcircmc
+ \font\eqe@lcir=lcircle10 at 12pt
+ \bgroup
+ \setbox0=\hbox{\eqe@lcir h}
+ \xdef\eqe@cirDiam{\the\wd0}
+ \@tempdima=.5\wd0
+ \xdef\eqe@cirRadius{\the\@tempdima}
+ \egroup
+ \def\circ@Glyph#1#2{\hbox{\smash{\raisebox{\eqe@cirRadius}%
+ {\makebox[\eqe@cirDiam]{\llap{\rlap{\eqe@lcir#1}%
+ \hskip#2\relax}}}}}}
+ \def\eqe@BboxCirc#1#2{\hbox{%
+ \textcolor{\previewColor}{\circ@Glyph{h}{0pt}}}}
+ \def\circProofingForCirc{\centerWidget\RadioFieldSize
+ \lower\eqcenterWidget\circ@Glyph{x}{1.4pt}}
+ \if\eq@online\eqe@YES
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc\useMCCircles}
+ \def\selectedMC{\useCircForMC}
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox\useMCRects}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect\useMCRects}}
+ \else % if not online
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect}}
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc}
+ \def\selectedMC{\useCircForMC}
+ \fi
+ \def\useCircForProof{\symbolchoice{circle}%
+ \proofingsymbol{\circProofingForCirc}}
+\else
+ \if\eq@online\eqe@YES
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc\useMCCircles}
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox\useMCRects}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect\useMCRects}}
+ \else
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect}}
+ \def\useCircForMC{\useRectForMC}
+ \def\selectedMC{\useRectForMC}
+ \fi
+ \let\useCircForProof\relax
+\fi
+\newif\ifuserectforms
+\def\useRectForMS{\userectformstrue}
+\def\useCircForMS{\userectformsfalse}
+\newcommand{\useCheckForProof}{\symbolchoice{check}%
+ \proofingsymbol{\ding{52}}}
+\useCheckForProof
+\newcommand{\useCrossForProof}{\symbolchoice{cross}%
+ \proofingsymbol{\raisebox{-1pt}{\rlap{\kern-1pt\Large\ding{56}}}}}
+\def\MCcolor{black}
+\def\Ans@sq@l@driver{\edef\@linkcolor{\MCcolor}%
+ \Rect{\makebox[\eq@tmpdima]{\linkContentWrapper}}%
+ \Ans@proofing{\eq@tmpdima}%
+}
+\def\Ans@sq@f@driver{%
+ \centerWidget\RadioFieldSize
+ \leavevmode\lower\eqcenterWidget\Bbox %\eqe@Bbox
+ {\RadioFieldSize}{\RadioFieldSize}%
+ \Ans@proofing{\RadioFieldSize}%
+}
+\def\eq@sqsllabel{\string\textbf{Solution to Quiz:}}
+\def\sqsllabel{\eq@sqsllabel}
+\let\quiz@solns\ex@solns
+\newcommand{\preExamSolnHead}{\goodbreak\noindent}
+\newcommand{\examSolnHeadFmt}[1]{\textbf{#1}}
+\newcommand{\postExamSolnHead}{\par\medskip}
+\newcommand{\writeToSolnFile}[1]{%
+ \let\quiz@solns\ex@solns
+ \set@display@protect
+ \eqe@IWO\quiz@solns{#1}%
+ \set@typeset@protect
+}
+\def\eqe@writetoSolns#1{%
+ \set@display@protect
+ \eqe@IWO\quiz@solns{\string\preExamSolnHead
+ \string\examSolnHeadFmt{#1}\string\postExamSolnHead}%
+ \set@typeset@protect
+}
+\def\eqe@writetoAux#1{%
+ \set@display@protect
+ \eqe@IWO\@auxout{#1}%
+ \set@typeset@protect
+}
+\def\Ans@sq@l@Actions{}
+\def\Ans@sq@f@Actions{}
+\def\Ans@proofing
+#1{%
+ \ifeq@proofing\if\Ans@choice1\relax
+ \llap{\rlap{\,\@proofingsymbol}\hskip#1\relax}%
+ \fi\fi
+}
+\def\eq@ExamLastPage{\csname eqExamLastPage\endcsname}
+\newcommand{\nPagesOnExam}{\csname eqExamLastPage\endcsname}
+\newcommand{\nPagesOfQues}{\ifvspacewithsolns
+ \csname eqExamQuesLastPage\endcsname\else
+ \csname eqExamLastPage\endcsname\fi}
+\newcommand{\nPagesOfSols}{\def\eqExamNumPagesSolns{0}%
+ \csarg\ifx{eqExamLastPage}\relax\else
+ \csarg\ifx{eqExamLastPage}\relax\else
+ {\count\z@=\nPagesOnExam\relax\advance
+ \count\z@-\nPagesOfQues\relax
+ \xdef\eqExamNumPagesSolns{\the\count\z@}}\fi\fi
+ \eqExamNumPagesSolns
+}
+\newcommand{\lastPageOfExam}[1]{\pageref{#1PageEnd}}
+\newcommand{\firstPageOfExam}[1]{\pageref{#1PageBegin}}
+\newcommand{\eqe@defNumRefii}[1]{%
+ \@ifundefined{hyperref}{\let\@getsecondOf\@secondoftwo}
+ {\let\@getsecondOf\@secondoffive}%
+ \@ifundefined{r@#1}{%
+ \csarg\gdef{nRefii@#1}{0}}{%
+ \expandafter\xdef\csname nRefii@#1\endcsname
+ {\expandafter\expandafter\expandafter
+ \@getsecondOf\csname r@#1\endcsname}%
+ }%
+}
+\def\eqe@numRefii#1{%
+ \csarg\ifx{nRefii@#1}\relax 0\else
+ \@nameuse{nRefii@#1}\fi}
+\newcommand{\numLastPageOfExam}[1]{\eqe@numRefii{#1PageEnd}}
+\newcommand{\numFirstPageOfExam}[1]{\eqe@numRefii{#1PageBegin}}
+\newcommand{\makeRefsNums}{%
+ \@ifundefined{thePartNames}{}{\begingroup
+ \def\\##1{\typeout{processing ##1}%
+ \eqe@defNumRefii
+ {##1PageEnd}\eqe@defNumRefii{##1PageBegin}}%
+ \thePartNames
+ \endgroup}%
+}
+\AtBeginDocument{\makeRefsNums}
+\newcommand{\lheadeqe}[1]{\def\eq@lhead{#1}}
+\lheadeqe{\shortwebsubject/\shortwebtitle}
+\newcommand{\cheadeqe}[1]{\def\eq@chead{#1}}
+\cheadeqe{-- Page \arabic{page} of {\nPagesOnExam} --}
+\newcommand{\rheadeqe}[1]{\def\eq@rhead{#1}}
+\rheadeqe{\eq@ExamName}
+\@ifpackageloaded{fancyhdr}{}{%
+ \let\lhead\lheadeqe
+ \let\chead\cheadeqe
+ \let\rhead\rheadeqe
+}
+\newcommand{\runExamHeader}{\eq@lhead\hfill\eq@chead\hfill\eq@rhead}
+\newcommand\eqExamRunHead{%
+ \addtolength\textwidth{\oddsidemargin}%
+ \noindent\hspace*{-\oddsidemargin}\makebox[\textwidth]
+ {\runExamHeader}%
+}
+\newcommand{\lfooteqe}[1]{\def\eq@lfoot{#1}}
+\lfooteqe{}
+\newcommand{\cfooteqe}[1]{\def\eq@cfoot{#1}}
+\cfooteqe{}
+\newcommand{\rfooteqe}[1]{\def\eq@rfoot{#1}}
+\rfooteqe{}
+\newcommand{\runExamFooter}{\eq@lfoot\hfill\eq@cfoot\hfill\eq@rfoot}
+\newcommand{\lheadSol}[1]{\def\eq@lheadSol{#1}}
+\lheadSol{\shortwebsubject/\shortwebtitle}
+\newcommand{\cheadSol}[1]{\def\eq@cheadSol{#1}}
+\cheadSol{-- Page \arabic{page} of {\eq@ExamLastPage} --}
+\newcommand{\rheadSol}[1]{\def\eq@rheadSol{#1}}
+\rheadSol{SOLUTIONS}
+\newcommand{\runExamHeaderSol}
+ {\eq@lheadSol\hfill\eq@cheadSol\hfill\eq@rheadSol}
+\def\eq@solutionshook
+{%
+ \gdef\eqExamRunHead{\addtolength\textwidth{\oddsidemargin}%
+ \noindent\hspace*{-\oddsidemargin}\makebox[\textwidth]
+ {\runExamHeaderSol}}%
+}
+\newcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\websubject\\\@date}\hfill
+ \shortstack[c]{\webtitle\\\strut\@altTitle}\hfill
+ \shortstack[l]{\strut\eq@ExamName\\\webauthor}}%
+}
+\def\altTitle#1{\def\@altTitle{#1}}
+\let\@altTitle\@empty
+\def\eqemaketitle
+{%
+ \EQEcalculateAllTotals
+ \begingroup
+ \noindent%\hspace*{-\oddsidemargin}%
+ \raisebox{.7in}[0pt][0pt]{\SubmitButton}%
+ \maketitledesign
+ \endgroup
+}
+\ifeqfortextbook
+ \@ifpackageloaded{web}{\let\maketitle\web@save@maketitle}{}%
+\else
+ \if@eqeuseclassmaketitle
+ \@ifpackageloaded{web}{\let\maketitle\web@save@maketitle}{}%
+ \else
+ \let\maketitle\eqemaketitle
+ \fi
+\fi
+\newcommand\placeCoverPageLogo[3]{%
+ \def\eqe@insertLogo{\hbox to0pt{%
+ \hspace*{#1}\smash{\raisebox{#2}{#3}}\hss}}}
+\let\eqe@insertLogo\relax
+\def\eqexcoverpage{%
+ \begingroup
+ \pagenumbering{roman}
+ \eqe@insertLogo
+ \eqexcoverpagedesign
+ \endgroup\newpage
+ \pagenumbering{arabic}
+}
+\newcommand{\coverpagesubject}[1]{\def\coverpage@subject{#1}}
+\let\coverpage@subject\@empty
+\def\eqexamsubject{\ifx\coverpage@subject\@empty\websubject
+ \else\coverpage@subject\fi}
+\newcommand{\coverpageUniversityFmt}[1]{%
+ \def\eqex@coverpageUniversityFmt{#1}}
+\coverpageUniversityFmt{\bfseries\large}
+\newcommand{\coverpageSubjectFmt}[1]{%
+ \def\eqex@coverpageSubjectFmt{#1}}
+\coverpageSubjectFmt{\bfseries\large}
+\newcommand{\coverpageTitleFmt}[1]{%
+ \def\eqex@coverpageTitleFmt{#1}}
+\coverpageTitleFmt{\bfseries\large}
+\newcommand\cpCID[1]{\def\cp@@CID{#1}}
+\let\cp@@CID\@empty
+\newcommand{\cpSetCIDWidth}[1]{\bgroup\setlength{\@tempdima}{#1}
+ \xdef\cpCID@argi{\the\@tempdima}\egroup}
+\def\cp@CID{\bgroup\settowidth\eq@tmplengthA{\cp@@CID}%
+ \@tempdima=\cpCID@argi\relax
+ \advance\@tempdima-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\cpCID@argi][l]{\cp@@CID}}\egroup}
+\cpSetCIDWidth{2.25in}
+\def\eqeSumryVert{\def\eqe@SumryVert{\par\vfill}%
+ \let\eqe@SumryHoriz\relax
+ \def\eqe@@SumryVert{\vspace{\stretch{-1}}\bigskip}}
+\def\eqeSumryHoriz{\def\eqe@SumryHoriz{\hfill}\let\eqe@SumryVert\relax
+ \let\eqe@@SumryVert\relax}
+\eqeSumryHoriz
+\def\eqe@coverPageNaming{0}
+\newcommand{\useUIPartNames}{\def\eqe@coverPageNaming{1}}
+\newcommand{\useCustomPartNames}{\def\eqe@coverPageNaming{2}}
+\newcommand{\customNaming}[2]{\@namedef{userCustom#1}{#2}}
+\newcommand{\cpSetNameAndIDWidth}[1]{\bgroup
+ \setlength{\@tempdima}{#1}%
+ \xdef\cp@SetNameAndIDWidth{\the\@tempdima}\egroup}
+\cpSetNameAndIDWidth{.45\textwidth}
+\newcommand{\cpEnclNameAndID}[1]{\def\cp@EnclNameAndID{#1}}
+\let\cp@EnclNameAndID\@empty
+\newcommand{\cpSetHghtFrstLn}[1]{\def\cp@HghtFrstLn{#1}}
+\def\cp@HghtFrstLn{0pt}
+\def\cp@setHghtFrstLn{\rule[\cp@HghtFrstLn]{0pt}{0pt}}
+\newcommand\cpNameAndID{\noindent
+ \edef\eqExamName@argii{\cp@SetNameAndIDWidth}%
+ \edef\eqSID@argii{\cp@SetNameAndIDWidth}%
+ \edef\cpCID@argi{\cp@SetNameAndIDWidth}%
+ \cp@EnclNameAndID{\parbox[b]{\cp@SetNameAndIDWidth}{\parindent0pt
+ \cp@setHghtFrstLn\eq@ExamName\\[2ex]
+ \ifx\cp@@CID\@empty\eq@SID\else\cp@CID\fi\\[2ex]
+ \ifx\use@email\eqe@YES\eq@Email\\[2ex]\fi
+ \textcolor{\webauthor@color}{\webauthor}, \@date\vskip0pt}}}
+\newcommand{\eqexcoverpagedesign}
+{%
+ \begingroup
+ \parindent0pt
+ \thispagestyle{empty}
+ \vspace*{.1\textheight}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageUniversityFmt
+ \color{\webuniversity@color}%
+ \centering\webuniversity}}
+ \par\vspace{.1\textheight}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageSubjectFmt
+ \color{\websubject@color}%
+ \centering\eqexamsubject}}
+ \par\vspace{\bigskipamount}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageTitleFmt
+ \color{\webtitle@color}%
+ \centering\webtitle}}
+ \par\vspace{\stretch{1}}
+ \optionalpagematter
+ \par\vspace{\stretch{1}}\cpNameAndID
+ \eqe@SumryHoriz\eqe@SumryVert
+ \sumryAnnots
+ \endgroup
+}
+\newcommand{\cpSumryHeader}{\textbf{Exam Record}}
+\newcommand{\cpSumryPts}{\,\text{pts}}
+\newcommand{\cpSumryPage}{Page}
+\newcommand{\cpSumryTotal}{Total:}
+\newcommand{\cpSumryGrade}{Grade:}
+\newcommand{\cpSetSumryWidth}[1]{\bgroup\setlength{\@tempdima}{#1}
+ \xdef\cp@SetSumryWidth{\the\@tempdima}\egroup}
+\cpSetSumryWidth{.5\textwidth}
+\newcommand{\cpUsefbox}{\let\cp@Usefbox\fbox}
+\cpUsefbox
+\newcommand{\cpNofbox}{\let\cp@Usefbox\mbox}
+\newcommand{\cprulelength}{1.5in}
+\def\cp@IsertNaming#1{%
+ \ifcase\eqe@coverPageNaming
+ #1\or\@nameuse{userFriendly#1}\or
+ \@nameuse{userCustom#1}\else#1\fi
+}
+\newcommand{\cpSumrybyparts}{%
+ \eqe@@SumryVert\cp@Usefbox{%
+ \ifx\cp@Usefbox\fbox
+ \def\cp@sumryWdth{\cp@SetSumryWidth-2\fboxrule-2\fboxsep}\else
+ \def\cp@sumryWdth{\cp@SetSumryWidth}\fi
+ \begin{minipage}[b]{\cp@sumryWdth}\kern0pt
+ \begin{flushleft}
+ \setlength{\eqetmplengtha}{\cprulelength}%
+ \edef\eqe@cprulelength{\the\eqetmplengtha}%
+ \csarg\ifx{NumberOfParts}\relax
+ \else
+ \count2=0
+ \medskip
+ \cpSumryHeader\par\parskip\bigskipamount
+ \def\\##1{\advance\count2by\csname ##1total\endcsname
+ \underbar{\makebox[0pt][l]{%
+ \cp@IsertNaming{##1}}\hspace*{\eqe@cprulelength}}%
+ / $\eqe@ptsFmt{\csname ##1total\endcsname}%
+ \cpSumryPts$\par}\thePartNames
+ \fi
+ \underbar{\makebox[0pt][l]{\cpSumryTotal}%
+ \hspace{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count2\relax}\cpSumryPts$ \par
+ \underbar{\makebox[0pt][l]{\cpSumryGrade}%
+ \hspace{\eqe@cprulelength}}%
+ \ifx\cp@Usefbox\fbox\medskip\fi
+ \end{flushleft}\kern0pt
+ \end{minipage}}\par
+}
+\newcommand{\cpSumrybypages}{%
+ \eqe@@SumryVert\cp@Usefbox{%
+ \ifx\cp@Usefbox\fbox
+ \def\cp@sumryWdth{\cp@SetSumryWidth-2\fboxrule-2\fboxsep}\else
+ \def\cp@sumryWdth{\cp@SetSumryWidth}\fi
+ \begin{minipage}[b]{\cp@sumryWdth}\kern0pt
+ \begin{flushleft}
+ \setlength{\eqetmplengtha}{\cprulelength}%
+ \edef\eqe@cprulelength{\the\eqetmplengtha}%
+ \csarg\ifx{NumberOfParts}\relax
+ \else\medskip\count0=0\relax\count2=0\relax
+ \cpSumryHeader\par\parskip\bigskipamount
+ \ifsolutionsAtEnd
+ \@ifundefined{eqExamQuesLastPage}{\def\NUMPAGES{0}}
+ {\edef\NUMPAGES{\@nameuse{eqExamQuesLastPage}}}%
+ \else
+ \@ifundefined{eqExamLastPage}{\def\NUMPAGES{0}}
+ {\edef\NUMPAGES{\@nameuse{eqExamLastPage}}}%
+ \fi
+ \@whilenum\count0<\NUMPAGES\relax\do{%
+ \advance\count0by1\relax
+ \@ifundefined{Page\the\count0total}{\count4=0\relax}
+ {\count4=\@nameuse{Page\the\count0total}\relax}%
+ \csarg\ifx{Page\the\count0spilltotal}\relax
+ \else\advance\count4by\csname%
+ Page\the\count0spilltotal\endcsname\relax\fi
+ \advance\count2by\count4\relax\underbar{%
+ \makebox[0pt][l]{\cpSumryPage~\the\count0}%
+ \hspace*{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count4\relax}%
+ \cpSumryPts$\csarg\ifx{Page\the\count0spilltotal}\relax
+ \else\ $(\@nameuse{Page\the\count0spilltotal}%
+ \cpSumryPts+\@nameuse{Page\the\count0total}%
+ \cpSumryPts)$\fi\par
+ }%
+ \fi
+ \underbar{\makebox[0pt][l]{\cpSumryTotal}%
+ \hspace{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count2\relax}\cpSumryPts$\par
+ \underbar{\makebox[0pt][l]{\cpSumryGrade}%
+ \hspace{\eqe@cprulelength}}%
+ \ifx\cp@Usefbox\fbox\medskip\fi
+ \end{flushleft}\kern0pt
+ \end{minipage}}\par
+}
+\AtBeginDocument{\eqex@coverpage}
+\def\@marktotalvalue{\global\let\eqe@innermarkpts\relax
+ \if@bypasseqexamheading\else\def\eqe@marktxt{%
+ \theeqpointvalue\@nameuse{eqExam}\theeq@numparts}%
+ \ifx\endparts\endexercise@parts@tabular
+ \xdef\eqe@innermarkpts{\noexpand\mark{\eqe@marktxt}}\else
+ \mark{\eqe@marktxt}\fi\fi}
+\def\probvalue#1#2{\addtocounter{eqpointvalue}{#1}%
+ \ifdispl@yPoints\marginpoints{#1}{#2}\fi
+ \@marktotalvalue}
+\newcommand{\widthtpboxes}{35pt}
+\newcommand{\marginboxdesign}[2][]{%
+ \parbox{\widthtpboxes}{\tabcolsep=0pt\relax
+ \begin{tabular}{|c|}\hline
+ \vrule height15pt width0pt#1\\\hline
+ \makebox[\widthtpboxes-2\fboxrule]{#2}\\\hline
+ \end{tabular}%
+ }%
+}
+\newcommand{\eqleftmarginbox}[2]{\makebox[0pt][r]{%
+ \setlength\tabcolsep{0pt}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign{\marginpointsboxtext{#1}{#2}}%
+ }\hspace*{\marginparsep}\hspace*{\eqemargin}}%
+}
+\providecommand{\ptsLabel}[1]{\def\eqptsLabel{#1}}\ptsLabel{pts}
+\providecommand{\ptLabel}[1]{\def\eqptLabel{#1}}\ptLabel{pt}
+\newcommand{\eachLabel}[1]{\def\eqeachLabel{#1}}\eachLabel{ea.}
+\newcommand{\pointsLabel}[1]{%
+ \def\eqpointsLabel{#1}}\pointsLabel{points}
+\newcommand{\pointLabel}[1]{%
+ \def\eqpointLabel{#1}}\pointLabel{point}
+\def\pointsAsText{\def\eqe@ptsFmt{\text}}
+\let\eqe@ptsFmt\relax
+\@onlypreamble\pointsAsText
+\newcommand{\marginpointtext}[2]{\ifnum#2=0\leftmarginPtsTxt{#1}\else
+ \leftmarginPtsEaTxt{#2}\fi
+}
+\newcommand{\leftmarginPtsTxt}[1]{(\small$\eqe@ptsFmt{#1}^{\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}}$)}
+\newcommand{\leftmarginPtsEaTxt}[1]{(\small$\eqe@ptsFmt{#1}_{\text{%
+ \eqeachLabel}}^{\text{\ifnum#1=1\relax\eqptLabel\else
+ \eqptsLabel\fi}}$)}
+\newcommand{\eqleftmargin}[2]{\makebox[0pt][r]{\marginpointtext{#1}{#2}%
+ \setlength{\@tempdima}{\marginparsep+\eqemargin}%
+ \hspace*{\@tempdima}}}
+\newcommand{\marginpointsboxtext}[2]{\small$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}$}
+\def\@insertPointsBoxPDF
+{
+ \def\fieldName{pointsgiven.\curr@quiz.page\thepage.%
+ \theeqquestionnoi}%
+ \calcTextField[\F\FHidden\BC{}\Q1\textColor{1 0 0 rg}]
+ {\fieldName}{\widthtpboxes}{15pt}%
+}
+\def\@insertTotalsBoxPDF
+{
+ \def\fieldName{pagetotals.\curr@quiz.page\thepage}%
+ \calcTextField[\F\FHidden\BC{}\Q1\textColor{1 0 0 rg}
+ \AA{\AACalculate{AFSimple_Calculate("SUM",
+ new Array("pointsgiven.\curr@quiz.page\thepage"));}}]
+ {\fieldName}{\widthtpboxes}{15pt}%
+}
+\ifx\use@email y
+ \let\insertPointsBoxPDF\@insertPointsBoxPDF
+ \let\insertTotalsBoxPDF\@insertTotalsBoxPDF
+\else
+ \let\insertPointsBoxPDF\@empty
+ \let\insertTotalsBoxPDF\@empty
+\fi
+\newcommand{\eqrightmarginbox}[2]{\makebox[0pt][l]{%
+ \setlength\tabcolsep{0pt}%
+ \setlength{\@tempdima}{\textwidth-\eqemargin+\marginparsep}%
+ \hspace*{\@tempdima}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertPointsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }\hfil
+ }%
+}
+\newcommand{\eqeomarginboxright}[2]{\makebox[0pt][l]{%
+ \setlength\tabcolsep{0pt}%
+ \setlength{\@tempdima}{\textwidth+\marginparsep-\parindent}%-\parindent
+ \hspace*{\@tempdima}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }\hfil
+ }%
+}
+\newcommand{\eqeomarginboxleft}[2]{\noindent\makebox[0pt][r]{%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }{\settowidth{\@tempdimb}{\eqe@hspannerPrb}%
+ \setlength{\@tempdima}{\marginparsep+\eqemargin-\@tempdimb}%
+ \hspace*{\@tempdima}}}\hfil
+}
+\newcommand{\measurePtBoxHt}{\setbox\eq@pointbox\hbox{%
+ \marginboxdesign{\marginpointsboxtext{00}{0}}%
+ }\setlength\eq@pointboxtotalheight{.5\ht\eq@pointbox}%
+ \xdef\halfHtPtBox{\the\eq@pointboxtotalheight}%
+ \setlength\eq@pointboxtotalheight{\dp\eq@pointbox+\ht\eq@pointbox}%
+ \xdef\totHtPtBox{\the\eq@pointboxtotalheight}%
+ \xdef\dpPtBox{\the\dp\eq@pointbox}%
+ \xdef\htPtBox{\the\ht\eq@pointbox}%
+}
+\measurePtBoxHt
+\newcommand{\eqbothmargins}[2]{\eqleftmargin{#1}{#2}%
+ \eqrightmarginbox{#1}{#2}}
+\def\lastparttotaled{0}
+\def\parsetotals#1\eqExam#2\end{\def\argi{#1}\def\argii{#2}}
+\def\stripeqExam#1\eqExam{\def\argii{#1}}
+\def\settotalsbox{%
+ \expandafter\parsetotals\botmark\eqExam\end
+ \ifx\argi\@empty\hfil
+ \else\ifx\argii\@empty\hfil
+ \else
+ \expandafter\stripeqExam\argii
+ \setcounter{eqpointsthispage}{\argi}%
+ \addtocounter{eqpointsthispage}{-\value{eqpointsofar}}%
+ \setcounter{eqpointsofar}{\argi}%
+ \xdef\lastparttotaled{\argii}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef{Page\thepage total}%
+ {\theeqpointsthispage}}%
+ \totalsbox
+ \fi
+ \fi
+}
+\newcommand\totalsboxtext{\small$
+ \eqe@ptsFmt{\theeqpointsthispage}\,\text{%
+ \ifnum\theeqpointsthispage=1\relax\eqptLabel\else
+ \eqptsLabel\fi}$}
+\newlength\eqevtranstotbox
+\setlength{\eqevtranstotbox}{0pt}
+\def\eqe@chkZeroTotals{\let\eqe@allow\eqe@YES
+ \ifx\eqe@zeroTotalsAllowed\eqe@NO
+ \ifnum\theeqpointsthispage=0 \let\eqe@allow\eqe@NO\fi\fi}
+\newcommand{\totalsboxleft}{\eqe@chkZeroTotals
+ \ifx\eqe@allow\eqe@YES
+ \makebox[0pt][r]{\setlength\tabcolsep{0pt}%
+ \raisebox{-\height+\eqevtranstotbox}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]{\totalsboxtext}%
+ }\hspace*{\marginparsep}%
+ }\fi\hfil
+}
+\newcommand{\totalsboxright}{\eqe@chkZeroTotals
+ \ifx\eqe@allow\eqe@YES
+ \makebox[0pt][l]{\setlength\tabcolsep{0pt}%
+ \hspace*{\textwidth}\hspace*{\marginparsep}%
+ \raisebox{-\height+\eqevtranstotbox}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]{\totalsboxtext}%
+ }%
+ }\fi\hfil
+}
+\ifeqe@nopoints\else\if@bypasseqexamheading\else
+\AtBeginDocument{\mark{0\csname eqExam\endcsname0}}
+\fi\fi
+\AtEndDocument{%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef{NumberOfParts}%
+ {\arabic{eq@numparts}}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef{thePartNames}%
+ {\the\partNames}}%
+ \clearpage\addtocounter{page}{-1}\writelastpage\relax
+ \addtocounter{page}{1}%
+}
+\newcommand\theGrandTotal{%
+ $\eqe@ptsFmt{\csname eqeGrandTotal\endcsname}$}
+\newcommand{\totalForPart}[1]{$\eqe@ptsFmt{\csname#1total\endcsname}$}
+\def\tot@lForPart#1{\csname#1total\endcsname}
+\newcommand{\percentForPart}[1]{$\eqe@ptsFmt
+ {\csname#1percent\endcsname}$\%}
+\newcounter{markerCnt}
+\def\placeMarkerHere#1{%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#1SaveTotalHere}{\theeqpointvalue}}%
+}
+\newcommand{\calcFromMarkers}[3][\@markerTotalFmt]{%
+ \@ifundefined{#2SaveTotalHere}{}%
+ {\@ifundefined{#3SaveTotalHere}{}{\setcounter{markerCnt}%
+ {\@nameuse{#2SaveTotalHere}-\@nameuse{#3SaveTotalHere}}%
+ \ifnum\value{markerCnt}<0\relax
+ \setcounter{markerCnt}{-\value{markerCnt}}\fi#1}}%
+}
+\newcommand{\markerTotalFmt}[1]{\def\@markerTotalFmt{#1}}
+\markerTotalFmt{\space(\themarkerCnt\space points)}
+\newcommand{\calcQsBtwnMarkers}[2][]{\setcounter{markerCnt}{0}%
+ \def\eqe@argi{#1}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2thisQnum}{\theeqquestionnoi}}%
+ \@ifundefined{#2thisQnum}{\csarg\xdef{#2Start}{0}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2Start}{0}}%
+ }{%
+ \setcounter{markerCnt}{\value{eqquestionnoi}+1}\csarg
+ \xdef{#2Start}{\the\value{markerCnt}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2Start}{\@nameuse{#2Start}}}%
+ }
+ \ifx\eqe@argi\@empty\else
+ \@ifundefined{#2thisQnum}{\setcounter{markerCnt}{0}}%
+ {\@ifundefined{#1thisQnum}{\setcounter{markerCnt}{0}}{%
+ \setcounter{markerCnt}%
+ {\@nameuse{#1thisQnum}-\@nameuse{#2thisQnum}}%
+ }}%
+ \fi
+ \csarg\xdef{#2nQs}{\the\value{markerCnt}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2nQs}{\the\value{markerCnt}}}%
+ \ifx\eqe@argi\@empty\else
+ \@ifundefined{#1thisQnum}{\csarg\xdef{#2End}{0}%
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{#2End}{0}}%
+ }{%
+ \csarg\xdef{#2End}{\@nameuse{#1thisQnum}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2End}{\@nameuse{#2End}}}%
+ }%
+ \fi
+}
+\newcommand{\markStartFor}[1]{\@nameuse{#1Start}}
+\newcommand{\markEndFor}[1]{\@nameuse{#1End}}
+\newcommand{\markNumQsFor}[1]{\@nameuse{#1nQs}}
+\newcommand{\placeAtxy}[3]{{%
+ \par\nointerlineskip
+ \ifdisplayworkarea
+ \ifx\eq@insertverticalspace\eqe@YES
+ \makebox[0pt][l]{\hspace*{-\parindent}\hspace*{#1}%
+ \raisebox{#2}[0pt][0pt]{#3}}\fi
+ \fi
+}}
+\newsavebox{\workareasb}
+\newenvironment{workarea}[2][\linewidth]
+{%
+ \removelastparskip
+ \edef\workareadepth{\if\currhideopt H0pt\else#2\fi}%
+ \begin{lrbox}{\workareasb}\setlength{\eqetmplengtha}{#1}%
+ \begin{minipage}[b][\workareadepth][t]{\eqetmplengtha}\vspace*{3pt}%
+}{%
+ \end{minipage}\end{lrbox}%
+ \par\ifdisplayworkarea
+ \ifx\eq@insertverticalspace\eqe@YES
+ \removelastparskip
+ \vspace{-\baselineskip}%
+ \if\currhideopt H\else
+ \noindent\strut\smash{\usebox{\workareasb}}%
+ \fi\fi
+ \fi
+}
+\def\splitsolution{%
+ \@ifnextchar[{\splitsolutioni}%
+ {\splitsolutioniii{\panelwidth}{\panelheight}}%
+}
+\def\splitsolutioni[#1]{%
+ \@ifnextchar[{\splitsolutionii{#1}}
+ {\splitsolutioniii{\panelwidth}{#1}}%
+}
+\def\splitsolutionii#1[#2]{%
+ \splitsolutioniii{#1}{#2}%
+}
+\def\splitsolutioniii#1#2{%
+ \@ifundefined{panel@write}{\newwrite\panel@write}{}%
+ \gdef\ss@Argiii{#1}\gdef\ss@Argii{#2}%
+ \let\@sssolution\solution
+ \let\end@sssolution\endsolution
+ \let\solution\@ssSolution
+ \let\endsolution\end@ssSolution
+ \par\noindent\ignorespaces
+}
+\def\endsplitsolution{%
+ \ifeq@solutionsafter\strut\par\fi
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi %%dps
+ \edef\eqe@workwidth{\if\ss@Argi l\noexpand\ss@Argiii
+ \else\noexpand\linewidth\fi}%
+ \edef\eqe@workfill{\if\ss@Argi l\else\hfill\fi}%
+ \begin{workarea}[\eqe@workwidth]{\eqedepth}%
+ \let\panelGetDimen\relax%
+ \eqe@workfill\input{panel\thepanel@cnt.cut}%
+ \end{workarea}
+ \strut\par
+}
+\newcommand\panelgap{3pt}
+\newsavebox{\eqpanelbox}
+\newdimen\eqepanelwidth
+\newdimen\eqepanelheight
+\newcommand{\getDimSSPanel}[1]{%
+ \sbox{\eqpanelbox}{#1}%
+ \eqepanelwidth=\wd\eqpanelbox
+ \eqepanelheight=\ht\eqpanelbox
+ \advance\eqepanelheight by\the\dp\eqpanelbox
+}
+\def\panelwidth{\eqepanelwidth}
+\def\panelheight{\eqepanelheight}
+\newcounter{panel@cnt}
+\def\panel{\def\eqe@panelir{\eqe@paneli[r]}%
+ \@ifnextchar[{\eqe@paneli}
+ {\@ifnextchar\relax{\expandafter\eqe@panelir\@gobble}%
+ {\eqe@paneli[r]}}%
+}
+\def\eqe@paneli[#1]{%
+ \gdef\ss@Argi{#1}\def\eqe@l{l}\def\eqe@r{r}%
+ \ifx\ss@Argi\@empty\gdef\ss@Argi{r}\else
+ \ifx\eqe@l\ss@Argi\else\ifx\eqe@r\ss@Argi\else
+ \PackageError{eqexam}{Permissible arguments for panel are l and r}
+ {Use l or r for the argument of panel.}\fi\fi\fi
+ \stepcounter{panel@cnt}%
+ \immediate\openout \panel@write panel\thepanel@cnt.cut
+ \if\currhideopt H%
+ \eqe@IWO\panel@write{\vfill}%
+ \immediate\closeout\panel@write
+ \gdef\ss@Argii{0pt}%
+ \else
+ \if\currhideopt h\ifeq@solutionsafter\else
+ \ifeq@globalshowsolutions\else
+ \eqe@IWO\panel@write{\vfill}%
+ \immediate\closeout\panel@write
+ \gdef\ss@Argii{0pt}%
+ \fi\fi
+ \fi
+ \fi
+ \begingroup
+ \let\verbatim@out\panel@write
+ {\lccode`C=`\%\lccode`P=`\{
+ \lowercase{\eqe@IWO\verbatim@out{\string\panelGetDimen PC}}}%
+ \verbatimwrite
+}
+\def\endpanel{%
+ \endverbatimwrite
+ {\lccode`P=`\}\lowercase{\eqe@IWO\verbatim@out{P}}}%
+ \immediate\closeout\panel@write
+ \endgroup
+ \gdef\eqePANELCUT{%
+ \let\panelGetDimen\getDimSSPanel
+ \input{panel\thepanel@cnt.cut}%
+ \setlength{\eq@tmpdima}{\ss@Argiii}%
+ \xdef\ss@Argiii{\the\eq@tmpdima}%
+ \xdef\mp@Width{\ifeq@solutionsafter\linewidth
+ \else\linewidth-\ss@Argiii-\panelgap\fi}%
+ }\aftergroup\eqePANELCUT
+}
+\long\def\eqe@IW#1{%
+ \ifeq@solutionsafter
+ \let\eqe@next\@empty
+ \else
+ \def\eqe@next{\eqe@IWO\verbatim@out{#1}}%
+ \ifeq@nosolutions\else
+ \if\currhideopt H%
+ \gdef\ss@Argii{0pt}\let\eqe@next\@empty
+ \else
+ \if\currhideopt h%
+ \ifeq@globalshowsolutions\else
+ \gdef\ss@Argii{0pt}\let\eqe@next\@empty
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \eqe@next
+}
+\newenvironment{@ssSolution}[1][\ss@Argii]%
+{%
+ \def\eqe@argi{#1}\ifx\eqe@argi\@empty\else
+ \let\soln@keys@nLines\@empty
+ \edef\panelheight{\the\panelheight}%
+ \edef\panelwidth{\the\panelwidth}%
+ \edef\temp@exp{\noexpand
+ \setkeys*{soln@keys}{#1}}\temp@exp
+ \ifx\soln@keys@nLines\@empty
+ \edef\ss@Argii{\XKV@rm}%
+ \else
+ \@tempdima\wlVspace\relax
+ \@tempdima=\soln@keys@nLines\@tempdima
+ \edef\ss@Argii{\the\@tempdima}%
+ \ifx\XKV@rm\@empty\else
+ \if@equsedim\edef\ss@Argii{\XKV@rm}\fi\fi
+ \fi
+ \setlength{\eq@tmpdima}{\ss@Argii}%
+ \ifdim\eqepanelheight>\eq@tmpdima
+ \eq@tmpdima\eqepanelheight\fi
+ \xdef\ss@Argii{\the\eq@tmpdima}%
+ \fi
+ \xdef\eqedepth{%
+ \ifvspacewithsolns\ss@Argii\else
+ \ifeq@nosolutions\ss@Argii\else
+ \ifeq@solutionsafter\ss@Argii\else0pt\fi\fi\fi}%
+ \xdef\mp@Width{\ifeq@solutionsafter\noexpand\linewidth\else
+ \noexpand\linewidth-\ss@Argiii-\panelgap\fi}%
+ \if\ss@Argi l%
+ \ifeq@solutionsafter
+ \def\eqe@lPanel{\parbox[b][\eqedepth][t]{\ss@Argiii}
+ {\let\panelGetDimen\relax
+ \input{panel\thepanel@cnt.cut}\vfill}\hfill}%
+ \def\eqe@rPanel{\@empty}%
+ \else
+ \def\eqe@subleftgutter{-\string\eqemargin}%
+ \def\eqe@lPanel{%
+ \string\parbox[b][\string\eqedepth]{\ss@Argiii}%
+ {\string\let\string\panelGetDimen\string\relax
+ \string\input{panel\thepanel@cnt.cut}%
+ \string\vfill}\string\hfill^^J}%
+ \def\eqe@rPanel{\@empty}%
+ \fi
+ \else
+ \ifeq@solutionsafter
+ \def\eqe@lPanel{\@empty}%
+ \def\eqe@rPanel{%
+ \hfill\parbox[b][\eqedepth][t]{\ss@Argiii}
+ {\let\panelGetDimen\relax
+ \hfill\input{panel\thepanel@cnt.cut}\vfill}}%
+ \else
+ \let\eqe@subleftgutter\@empty
+ \def\eqe@lPanel{\@empty}%
+ \def\eqe@rPanel{%
+ \string\hfill\string\parbox[b][\string\eqedepth]%
+ {\ss@Argiii}{\string\endgraf%
+ \string\noindent\string\hfill%
+ \string\let\string\panelGetDimen\string\relax
+ \string\input{panel\thepanel@cnt.cut}%
+ \string\vfill}}%
+ \fi
+ \fi
+ \let\verbatim@out\ex@solns
+ \par\ifeq@solutionsafter\smallskip\fi
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi %%dps
+ \let\solutionparshape\@empty
+ \noindent\minipage{\linewidth}%
+ \if\ss@Argi l\noindent\parbox[b][\eqedepth][t]{\ss@Argiii}%
+ {\vfill}\hfill\fi
+ \minipage[b][\eqedepth][t]{\mp@Width}%
+ {\lccode`C=`\%\lowercase{\eqe@IW{%
+ \string\def\string\panelgap{\panelgap}%
+ \string\setlength{\string\panelwidth}{\ss@Argiii}%
+ \string\def\string\eqedepth
+ {\ifeq@nosolutions\ss@Argii\else\ss@Argii\fi}C}}}%
+ {\lccode`C=`\%\lowercase{\eqe@IW{%
+ \string\strut\string\noindent%
+ \string\hbox\space to\string\linewidth\bgroup^^J%
+ \eqe@lPanel\string\minipage[b][\string\eqedepth][t]%
+ {\string\linewidth\eqe@subleftgutter%
+ -\string\panelwidth-\string\panelgap}C
+ }}}%
+ \ifeq@solutionsafter
+ \noindent\strut\hbox to\linewidth\bgroup
+ \eqe@lPanel
+ \minipage[b][\eqedepth][t]{\linewidth-\ss@Argiii-\panelgap}%
+ \def\solutionsafterSkip{}%
+ \fi
+ \ifx\soln@keys@nLines\@empty
+ \edef\passedss@Argii{\ss@Argii}\else
+ \edef\passedss@Argii{\ss@Argii,nLines=\soln@keys@nLines}\fi
+ \expandafter\@sssolution\expandafter[\passedss@Argii]%
+}{%
+ \eqe@IW{\string\endminipage\eqe@rPanel\egroup}%
+ \ifeq@solutionsafter\endminipage\eqe@rPanel\egroup\fi
+ \end@sssolution
+ \endminipage\endminipage
+}
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{12pt}{-3pt}{\bfseries}}
+\newcommand{\defaultInstructions}[1]{\def\eq@default@Instructions{#1}}
+\defaultInstructions{Instructions.}
+\newcommand{\beforeInstrSkip}{1ex}
+\newcommand{\afterInstrSkip}{-0em}
+\newcommand\hInstrSpace{\ }
+\newcommand\styleInstr{\bfseries}
+\newenvironment{instructions}[1][\eq@default@Instructions]{%
+ \@ifundefined{\thisexamlabel total}{\let\eq@nosummarytotals\eqe@YES}
+ {\ifnum\summaryPointTotal=0 \let\eq@nosummarytotals\eqe@YES\fi}%
+ \expandafter\def\expandafter\eq@argi\expandafter{#1}%
+ \def\hsi{\hInstrSpace}%
+ \@startsection{paragraph}{4}{\z@}%
+ {\beforeInstrSkip\space\@plus1ex \@minus.2ex}%
+ {\afterInstrSkip}{\normalfont\normalsize\styleInstr}*%
+ {\textcolor{\@instructionsColor}{#1}\normalcolor%
+ \ifx\eq@nosummarytotals\eqe@YES\else\ifx\eq@argi\@empty\else\hsi\fi
+ {\normalfont\summaryTotalsTxt}\hsi\fi}\hskip-\lastskip
+ \ifx\eq@nosummarytotals\eqe@YES\ifx\eq@argi\@empty\else\hsi\fi\fi
+ \normalfont\normalsize\ignorespaces
+}{\par\vskip\beforeInstrSkip\relax}
+\newcommand\summaryPointTotal{\csname\thisexamlabel total\endcsname}
+\newcommand\summaryTotalsTxt{($\eqe@ptsFmt{\summaryPointTotal}\,\text{%
+ \@ifundefined{\thisexamlabel total}{\eqpointsLabel}%
+ {\ifnum\summaryPointTotal=1\relax\eqpointLabel\else
+ \eqpointsLabel\fi}}$)}
+\newcommand{\nQuesInExam}[1][\thisexamlabel]{%
+ \def\eqe@argi{#1}%
+ \ifx\thisexamlabel\@empty\ifx\eqe@argi\thisexamlabel
+ \PackageError{eqexam}{The optional argument for
+ \string\nQuesInExam\MessageBreak must be specified}{}\fi\fi
+ \csname#1nQuestions\endcsname}
+\ifx\hyper@anchor\@undefined\else
+ \renewcommand\theHeqquestionnoi
+ {\curr@quiz.\theeqquestionnoi\eqe@fpmrk}
+ \renewcommand\theHquizno{%
+ \if\probstar*\curr@quiz.%
+ \theeqquestionnoi.part\thepartno.\arabic{quizno}%
+ \else
+ \curr@quiz.%
+ \theeqquestionnoi.\arabic{quizno}%
+ \fi
+ }
+ \renewcommand\theHpartno{\curr@quiz.%
+ \theeqquestionnoi.part\thepartno}
+\fi
+\newcommand{\beforeCommentSkip}{1.25ex}
+\newcommand{\afterCommentSkip}{-1ex}
+\newcommand\hCommSpace{\ }
+\newcommand\styleComm{\bfseries}
+\newenvironment{eqComments}[1][\strut]{\removelastskip
+ \def\eqe@argi{#1}\def\eqe@Strut{\strut}\def\hsc{\styleComm}%
+ \@startsection{paragraph}{4}{\z@}%
+ {\beforeCommentSkip\space\@plus1ex \@minus.2ex}%
+ {\afterCommentSkip}{\normalfont\normalsize\styleComm}*%
+ {\textcolor{\@eqCommentsColor}{#1}}%
+ \ifx\eqe@argi\eqe@Strut\hskip\afterCommentSkip
+ \else\ifx\eqe@argi\@empty\hskip\afterCommentSkip\else
+ \hsc\strut\fi\fi\normalfont\normalsize
+ \color{\@eqCommentsColorBody}\ignorespaces
+}{\par\vskip\beforeCommentSkip\space\@plus1ex \@minus.2ex}
+\let\tb@beginexam@code\relax
+\def\partialspillovertotals{0}
+\def\exambegdef
+{%
+ \csname\thisexamlabel pagemark\endcsname
+ \@ifundefined{partialtotalpg}{}{%
+ \ifnum\partialtotalpg=\arabic{page}%
+ {\count0=\partialspillovertotals
+ \advance\count0by\partialtotaleoe
+ \xdef\partialspillovertotals{\the\count0}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {Page\partialtotalpg spilltotal}{\partialtotaleoe}}%
+ }%
+ \fi
+ }%
+ \csarg\ifx{\thisexamlabel pageno}\relax
+ \else
+ \csarg\ifx{pagenofirstprob\thisexamlabel}\relax
+ \else
+ \csarg\ifnum{\thisexamlabel pageno}
+ < \@nameuse{pagenofirstprob\thisexamlabel}%
+ \else
+ \csarg\ifx{\thisexamlabel pagemark}\relax
+ \else
+ \ifnum\value{page}=%
+ \csname\thisexamlabel pageno\endcsname
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {\thisexamlabel pagemark}{\string\newpage}}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \setcounter{eqquestionnoi}{0}\setcounter{eqpointvalue}{0}%
+ \setcounter{eqpointsofar}{0}\setcounter{eqpointsthispage}{0}%
+ \setcounter{eq@count}{0}%
+ \writeBeginEqeQuestions
+ \label{\thisexamlabel PageBegin}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {\thisexamlabel pageno}{\thepage}}%
+ \ifeqfortextbook
+ \global\examenvtrue\tb@beginexam@code
+ \fi
+}
+\def\tb@insmargmark{\ifisinstred\ifismarginans
+ \insMidMarg{\mark{}}\fi\fi}
+\def\eqe@adjForSepRule{\if\eq@parttotals\eqe@YES
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \advance\eq@pointboxtotalheight\pointsmarginparpush
+ \vspace*{\eq@pointboxtotalheight}\fi}
+\def\eqe@afterexamsepcode{% dps7
+ \if\eq@parttotals\eqe@YES
+ \@actionsAtPageBreak{\global\let\@spacetobreak1}%
+ {\global\let\@spacetobreak0}%
+ \ifx\@spacetobreak0\relax
+ \bgroup\@tempdima=\pagetotal
+ \advance\@tempdima\eq@pointboxtotalheight
+ \ifdim\@tempdima>\pagegoal\aftergroup\newpage
+ \else\ifnum\arabic{eq@count}>0\relax
+ \removelastskip\vskip6pt\kern0pt %dps7
+ \if\@reportpoints\eqe@One\else\@checkSpacing{0}\fi
+ \textcolor{\endexamtotal@color}%
+ {\eqeomarginbox{\arabic{eq@count}}{0}}\fi
+ \ifx\eqx@separationrule\eqe@YES
+ \separationrule\eqe@adjForSepRule\fi
+ \fi\egroup
+ \fi
+ \else\ifx\eqx@separationrule\eqe@YES
+ \separationrule\eqe@adjForSepRule\fi
+ \fi
+}
+\def\examenddef
+{%
+ \global\let\partialtotaleoe\relax
+ \global\let\partialtotalpg\relax
+ \global\let\afterexamsepcode\relax
+ \csarg\ifx{NumberOfParts}\relax
+ \else
+ \ifnum\value{eq@numparts}<\NumberOfParts
+ \setcounter{eq@count}{\value{eqpointvalue}}%
+ \addtocounter{eq@count}{-\value{eqpointsofar}}%
+ \xdef\partialtotaleoe{\arabic{eq@count}}%
+ \xdef\partialtotalpg{\arabic{page}}%
+ \global\let\afterexamsepcode\eqe@afterexamsepcode % dps7
+ \fi
+ \fi
+ \ifeqfortextbook\global\examenvfalse\fi
+ \writeEndEqeQuestions
+ \writetotalstoaux
+ \addtocounter{page}{-1}%
+ \writelastpage[\thisexamlabel]\addtocounter{page}{1}%
+ \ifeqfortextbook\tb@insmargmark\fi
+}
+\def\@actionsAtPageBreak#1#2{%
+ \bgroup\@tempdima\pagegoal\advance\@tempdima-\pagetotal
+ \@tempdimb\@fvsizeskip\vsize
+ \ifdim\@tempdima < \@tempdimb #1\else #2\fi\egroup
+}
+\newcommand{\separationrule}{\makebox[\linewidth-\eqemargin][c]%
+ {\rule{.67\linewidth}{.4pt}}}
+\def\eqe@hspannerPrb{\ }
+\@ifundefined{ifwithsoldoc}{\newif\ifwithsoldoc\withsoldocfalse}{}
+\newcommand{\eqequestopsep}[1]{\def\eqeques@topsep{#1}}
+\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
+\newcommand{\eqequesitemsep}[1]{\def\eqeques@itemsep{#1}}
+\newcommand{\eqequeslistparindent}[1]{\def\eqeques@listparindent{#1}}
+\eqequestopsep{0pt}
+\eqequesparsep{0pt}
+\eqequesitemsep{0pt}
+\eqequeslistparindent{0pt}
+\newif\iffirstitem
+\def\eqeSolnItemMngt{\iffirstitem\global\firstitemfalse
+ \let\eqe@next\@empty\else\let\eqe@next\item\fi\eqe@next\relax}
+\newenvironment{eqequestions}{%
+ \begin{list}{}{%
+ \ifwithsoldoc\let\solnItemMngt\eqeSolnItemMngt\fi
+ \setlength{\labelwidth}{\eqemargin}%
+ \setlength{\parsep}{\eqeques@parsep}%
+ \setlength{\itemsep}{\eqeques@itemsep}%
+ \setlength{\topsep}{\eqeques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\eqeques@listparindent}%dps%
+ \ifwithsoldoc\settowidth{\labelsep}{\eqe@hspannerSoln}\else
+ \settowidth{\labelsep}{\eqe@hspannerPrb}\fi
+ \setlength{\leftmargin}{\labelwidth}%
+ }\ifwithsoldoc\global\firstitemtrue\fi\item\relax}{\end{list}}
+\def\setDefaultfvsizeskip#1{\def\default@fvsizeskip{#1}%
+ \def\@fvsizeskip{#1}}
+\def\default@fvsizeskip{.3}
+\edef\@fvsizeskip{\default@fvsizeskip}
+\newcommand{\fvsizeskip}[1]{\def\@fvsizeskip{#1}}
+\def\autoExamName{exam\the\value{eq@numparts}}
+\def\nNumberOfP@rts{\csname NumberOfParts\endcsname}
+\abovesqskip{}
+\let\eqeWrtExamTitleToSolns\eqe@YES
+\def\wrtExamTitleInSolns{\let\eqeWrtExamTitleToSolns\eqe@YES}
+\def\noExamTitleInSolns{\let\eqeWrtExamTitleToSolns\eqe@NO}
+\let\thisexamlabel\@empty
+\let\isInExamEnv\eqe@NO
+\newenvironment{exam}[2][]
+{%
+ \makeRoomForProb{\@fvsizeskip\textheight}{0}%
+ \let\isInExamEnv\eqe@YES
+ \stepcounter{eq@numparts}%
+ \def\eqexamargii{#2}\ifx\eqexamargii\@empty
+ \edef\eqexamargii{\autoExamName}\fi
+ \xdef\thisexamlabel{\eqexamargii}\xdef\curr@quiz{\eqexamargii}%
+ \def\eqexamargi{#1}\ifx\eqexamargi\@empty
+ \edef\eqexamargi{\eqexamargii}\fi
+ \expandafter\gdef\expandafter\thisUFexamlabel
+ \expandafter{\eqexamargi}%
+ \edef\eq@tmp{\the\partNames\string\\{\eqexamargii}}%
+ \global\partNames=\expandafter{\eq@tmp}%
+ \csarg\ifx{NumberOfParts}\relax\else
+\ifx\eqeWrtExamTitleToSolns\eqe@YES
+ \ifnum\nNumberOfP@rts=1\relax\else
+ \def\eqe@argi{#1}\ifx\eqe@argi\@empty
+ \eqe@writetoSolns{\eqexamargii}\eqe@writetoAux{\string
+ \csarg\string\gdef{userFriendly\eqexamargii}{\eqexamargii}}
+ \else
+ \eqe@writetoSolns{#1}\eqe@writetoAux{\string
+ \csarg\string\gdef{userFriendly#2}{#1}}
+ \fi
+ \fi\fi
+\fi
+ \exambegdef
+ \edef\temp@Exp{\noexpand\shortquiz\sqstar[\eqexamargii]}\temp@Exp
+}{%
+ \examenddef
+ \vskip\eqeques@parsep\relax\kern0pt %dps88
+ \endshortquiz
+ \aftergroup\afterexamsepcode % dps7
+ \par\penalty-100\vskip0pt
+}
+\newcommand{\EQEcalculateAllTotals}{%
+ \begingroup
+ \count\z@=0\relax
+ \def\\##1{\csarg\ifx{##1total}\relax\else
+ \advance\count\z@\csname##1total\endcsname
+ \fi}\csname thePartNames\endcsname
+ \xdef\eqeGrandTotal{\the\count\z@}%
+ \ifnum\eqeGrandTotal=0 \else
+ \def\\##1{\eqe@calc@percent{##1}}%
+ \csname thePartNames\endcsname\fi
+ \endgroup
+}
+\newcommand{\nPctDecPts}{1}
+\def\eqe@calc@percent#1{\@ifundefined{#1total}{%
+ \csarg\gdef{#1percent}{??}}{%
+ \csarg\ifx{FPdiv}\relax
+ \count2=\tot@lForPart{#1}%
+ \edef\expGT{\csname eqeGrandTotal\endcsname}%
+ \multiply\count2by100\relax\divide\count2by\expGT\relax
+ \csarg\xdef{#1percent}{\the\count2 }\else
+ \FPdiv{\eqe@pForPart}{\csname#1total\endcsname}%
+ {\csname eqeGrandTotal\endcsname}%
+ \FPmul{\eqe@pForPart}{\eqe@pForPart}{100}%
+ \FPround{\eqe@pForPart}{\eqe@pForPart}{\nPctDecPts}%
+ \csarg\xdef{#1percent}{\eqe@pForPart}\fi
+ }%
+}
+\def\writetotalstoaux{\eqe@IWO\@auxout{\string
+ \csarg\string\gdef{\thisexamlabel total}{\theeqpointvalue}}%
+ \eqe@IWO\@auxout{\string\csarg
+ \string\gdef{\thisexamlabel nQuestions}{\theeqquestionnoi}}%
+}
+\newcommand{\writelastpage}[1][]{\def\eqe@argi{#1}%
+ \ifx\eqe@argi\@empty\else\label{#1PageEnd}\fi
+ \eqe@IWO\@auxout{\string\csarg
+ \string\gdef{eqExamLastPage}{\arabic{page}}}%
+}
+\def\exlabel{}
+\def\sqlabel{}
+\def\exsolafter{\textit{Solution}:}
+\def\sqsolafter{\textit{Solution}:}
+\def\exlabelformat{\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerPrb}}
+\def\exlabelformatwp{\exlabelformat}
+\def\exsllabelformat
+ {\string\makebox[0pt][r]{\string\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerSoln}}}
+\def\exsllabelformatwp
+ {\string\makebox[0pt][r]{\string\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerSoln}}%
+ (\thepartno)\eqe@hspannerSoln}
+\ifanswerkey
+ \def\exrtnlabelformat{}
+ \def\exrtnlabelformatwp{}
+ \def\eq@sqslrtnlabel{}
+\else
+ \def\exrtnlabelformat{$\square$}
+ \def\exrtnlabelformatwp{$\square$}
+ \def\eq@sqslrtnlabel{$\square$}
+\fi
+\def\sqslrtnlabel{\eq@sqslrtnlabel}
+\newcommand{\exsectitletext}{Solutions to \webtitle}
+\def\exsectitle{\normalsize\exsectitletext}
+\@ifpackageloaded{exerquiz}{%{Solutions to \websubject}
+ \renewcommand{\exsecrunhead}{}}{\newcommand{\exsecrunhead}{}}
+\def\eq@sqslsectitle{}
+\def\eq@sqslsecrunhead{}
+\def\eq@sqsllabel{{\string\llap{\string\textbf{\theeqquestionnoi.\ }}}}
+\def\eq@sqlabel{}
+\let\include@quizsolutions\relax
+\let\solnhspace\@empty
+\newcommand{\optsFillIn}[1]{\def\eqe@optsFillIn{#1}}
+\let\eqe@optsFillIn\@empty
+\newcommand{\fillin}[3][u]{%
+ \ifx#1u\let\@fillinFmt\underbar
+ \else\ifx#1b\let\@fillinFmt\relax
+ \else\let\@fillinFmt\relax\fi\fi
+ \ifeq@proofing
+ \@fillinFmt{\makebox[#2]{%
+ \strut\hfil\bfseries\color{red}#3\hfil}}%
+ \else
+ \@fillinFmt{\makebox[#2]{\strut\hfil}}%
+ \@ifundefined{@quiz}{}{%
+ \if\eq@online\eqe@YES\relax
+ \ifeq@nosolutions
+ \ifeq@solutionsafter\else
+ \ifx\eq@insertverticalspace\eqe@YES\relax
+ \stepcounter{@cntfillin}%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.part\thepartno.%
+ fi\the@cntfillin%
+ \else
+ eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.fi\the@cntfillin%
+ \fi
+ }\makebox[0pt][r]{\textField[\BC{}
+ \presets{\eqe@optsFillIn}]{%
+ \fieldName}{#2}{11bp}}%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \fi\space\ignorespaces}
+\newcommand\defaultTFwidth{30pt}
+\newcommand\TF[2][\defaultTFwidth]{%
+ \def\eqe@next{\fillin{#1}{#2}}%
+ \ifdim\eq@extralabelsep=0pt\relax\else
+ \if\probstar*\relax\if\exerwparts@cols0
+ \def\eqe@next{\makebox[0pt][r]{%
+ \fillin{#1}{#2}}\ignorespaces}%
+ \fi\fi\fi
+\eqe@next}
+\def\fillinWidth#1{%
+ \if\probstar*
+ \settowidth{\eq@tmplengthA}{\normalfont\ }%
+ \addtolength{\eq@tmplengthA}{#1}%
+ \edef\eq@extralabelsep{\the\eq@tmplengthA}%
+ \fi
+}
+\let\fillInFormatDefault\@empty
+\def\eqe@DoWarning#1{\PackageWarning{eqexam}{\string#1\space
+ requires the first argument\MessageBreak of problem* to be <num>ea}}
+\def\eqe@DoNum{\textbf{??}\eqe@DoWarning{\DoNum}}
+\def\eqe@nDoNum{\textbf{??}\eqe@DoWarning{\nDoNum}}
+\let\DoNum\eqe@DoNum
+\let\nDoNum\eqe@nDoNum
+\def\makeDoNum#1{\xdef\nDoNum{#1}%
+ \def\ifc@sewrap{\ifcase#1??\or}%
+ \xdef\DoNum{\expandafter\ifc@sewrap\eqe@wordNums\else
+ \eqe@wordNumbsError\fi}}
+\def\makeOutOfNum#1{\xdef\nOutOfNum{#1}%
+ \def\ifc@sewrap{\ifcase#1??\or}%
+ \xdef\OutOfNum{\expandafter\ifc@sewrap\eqe@wordNums\else
+ \eqe@wordNumbsError\fi}}
+\def\eqe@OutOfNum{\textbf{??}\eqe@DoWarning{\OutOfNum}}
+\def\eqe@nOutOfNum{\textbf{??}\eqe@DoWarning{\nOutOfNum}}
+\let\OutOfNum\eqe@OutOfNum
+\let\nOutOfNum\eqe@nOutOfNum
+\newcommand{\eqe@wordNums}{one\or two\or three\or
+ four\or five\or six\or seven\or eight\or nine\or ten}
+\newcommand{\eqe@wordNumbsError}{\noexpand\PackageError{eqexam}%
+ {Number out of range, 1--10}%
+ {Use a smaller number, or redefine the command
+ \string\eqe@wordNums.}}
+\def\makeRoomForProb#1#2{\par %\endgraf % dps 11/11/10
+ \bgroup\@nobreakfalse\addpenalty{-500}%
+ \setlength{\@tempdimb}{#1}%
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \ifdim \@tempdima<\@tempdimb\ifnum\col@number>\@ne\columnbreak
+ \else\newpage\fi\fi\egroup
+ \ifnum\@reportpoints>1
+ \ifx\eqe@prevProbZero\eqe@YES
+ \if\eqe@isPts0\else\vskip-\halfHtPtBox\relax\fi
+ \else
+ \ifl@stDispl@yPoints
+ \if\eqe@isPts0\@checkSpacing{1}\else
+ \if#21 \@checkSpacing{0}\fi
+ \fi\fi
+ \fi
+ \fi
+}
+\newcommand{\emitMessageNearBottom}{\@ifstar
+ {\def\eqe@emnb{\ifnum\col@number>\@ne\columnbreak
+ \else\newpage\fi\insertContAnnot}\eq@emitMessageNearBottom}
+ {\let\eqe@emnb\relax\eq@emitMessageNearBottom}}
+\newcommand{\eq@emitMessageNearBottom}[2][\iacvspace]{%
+ \eq@@emitMessageNearBottom{#1}{#2}}
+\def\eq@@emitMessageNearBottom#1#2{\par
+ \bgroup\@nobreakfalse\addpenalty{-500}%
+ \setlength{\@tempdimb}{#1}%
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \ifdim \@tempdima<\@tempdimb #2 \eqe@emnb\fi\egroup}
+\newcommand{\getSpaceLeftOnPage}{\par\bgroup
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \xdef\amtSpaceOnLeftOnPage{\the\@tempdima}\egroup}
+\newcommand{\pnpDflt}{\@fvsizeskip\textheight}
+\newcommand{\promoteNewPage}[1][\pnpDflt]{%
+ \makeRoomForProb{#1}{0}}
+\def\pointsmarginparpush{3pt}
+\def\@checkSpacing#1{\bgroup\ifinner\else
+ \@tempdima\lastPageTotal
+ \@tempdimb\pagetotal
+ \ifdim\@tempdima < \@tempdimb
+ \advance\@tempdimb by-\@tempdima
+ \ifdim\@tempdimb < \eq@pointboxtotalheight
+ \if#11%
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \fi
+ \@tempdima=\eq@pointboxtotalheight
+ \advance\@tempdima\pointsmarginparpush\relax
+ \advance\@tempdima by-\@tempdimb
+ \vspace*{\@tempdima}%
+ \fi
+ \fi\fi
+\egroup}
+\def\@checkSpacingi{\bgroup
+ \@tempdima = \lastPageTotal
+ \@tempdimb = \pagetotal
+ \ifdim\@tempdima < \@tempdimb
+ \advance\@tempdimb by-\@tempdima
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \ifdim\@tempdimb < \eq@pointboxtotalheight
+ \@tempdima=\eq@pointboxtotalheight
+ \advance\@tempdima\pointsmarginparpush\relax
+ \advance\@tempdima by-\@tempdimb
+ \vspace*{\@tempdima}%
+ \fi
+ \fi
+\egroup}
+\newcommand{\setDefaultnbaselineskip}[1]{\def\default@nbaselineskip{#1}}
+\setDefaultnbaselineskip{6}
+\def\nbaselineskip#1{\def\@nbaselineskip{#1}}
+\def\nbaselineskipReset{\edef\@nbaselineskip{\default@nbaselineskip}}
+\nbaselineskipReset
+\def\eqe@gobbletoend#1\end{}
+\def\eqe@grabarg#1\end{\def\numpoints{#1}}
+\def\eqe@isPts{1}
+\aboveexskip{3pt}\belowexskip{3pt}
+\partstopsep{3pt}\partsitemsep{3pt}\partsparsep{0pt}
+\rowsepDefault{3pt}\partstabcolsep{1.5pt}%
+\partstabtopsep{3pt}\partstabrowsep{3pt}
+\renewcommand\belowexsolnskip{{}}%
+\let\isProbEnv\eqe@NO
+\let\topofprobhook\relax
+\newenvironment{problem}[1][]{\let\isProbEnv\eqe@YES
+ \if\eqe@isPts0\global\let\eqe@prevProbZero\eqe@YES\else
+ \global\let\eqe@prevProbZero\eqe@NO\fi
+ \global\thereissolutionfalse
+ \def\numpointsEmpty{0}\def\numpoints{#1}%
+ \ifx\numpoints\@empty\def\numpoints{0}\def\numpointsEmpty{1}%
+ \gdef\eqe@isPts{0}\else\gdef\eqe@isPts{1}\fi
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{\eqe@isPts}%
+ \gdef\probstar{x}\let\afterlabelhskip\@empty
+ \ifx\marginpoints\@empty\else %\def\numpoints{#1}%
+ \if\numpointsEmpty\eqe@One\let\marginpoints\@gobbletwo\fi
+ \@ifstar{\let\@isitstar\eqe@One\eqe@grabarg}%
+ {\let\@isitstar\eqe@Zero\eqe@gobbletoend}#1\end
+ \if\@isitstar\eqe@One\addtocounter{eqpointvalue}{\numpoints}%
+ \@marktotalvalue
+ \ifdispl@yPoints
+ \def\marginparafterhook{\PTs{\numpoints}\space}\else
+ \def\marginparafterhook{\PTs*{\numpoints}\space}\fi\else
+ \def\marginparpriorhook{\noindent
+ \probvalue{\numpoints}{0}}\fi
+ \fi\setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \ifnum\value{eq@count}=1\relax
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{pagenofirstprob\thisexamlabel}{\thepage}}%
+ \fi
+ \topofprobhook
+ \begin{eqequestions}%
+ \begin{exercise}[eqquestionnoi]%
+}{\end{exercise}%
+ \end{eqequestions}%
+ \ifeqlocalversion\ifeqglobalversion
+ \xdef\eqe@tmp{\noexpand\forVersion{\eq@selectedVersion}}%
+ \aftergroup\eqe@tmp
+ \fi\fi
+ \global\eqlocalversionfalse
+ \ifdispl@yPoints\global\l@stDispl@yPointstrue
+ \else\global\l@stDispl@yPointsfalse\fi
+ \global\let\eqe@fpmrk\@empty
+}
+\newcommand\itemPTsTxt[1]{$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}$}
+\newcommand\itemPTsEaTxt[1]{$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi\space\eqeachLabel}$}
+\newcommand{\itemPTsFormated}[1]{(#1)}
+\newif\ifObeyPTsStar \ObeyPTsStartrue
+\def\obeyPTsStar{\global\ObeyPTsStartrue}
+\def\ignorePTsStar{\global\ObeyPTsStarfalse}
+\def\PTs{\leavevmode\@ifstar{\@PTs{*}}{\@PTs{x}}}
+\def\@PTs#1#2{%
+ \if\@reportpoints\eqe@Zero\ignorespaces\else
+ \if\eqe@pointsPartsId\eqe@One
+ \addtocounter{eqpointvalue}{#2}\@marktotalvalue
+ \addtocounter{eq@count}{#2}\fi
+ \if#1*\ifObeyPTsStar\ignorespaces\else\expandafter\@gobble\fi
+ \else
+ \eqe@movePTs{\itemPTsFormated{\itemPTsTxt{#2}}}\fi
+ \fi
+}
+\def\eqe@movePTs#1{#1}
+\let\auto\relax
+\def\isItD@{\@ifnextchar\Do{\let\yest@D@\eqe@YES\y@st@Do}
+ {\let\yest@D@\eqe@NO\@gobblet@end}}
+\let\yest@D@\eqe@NO
+\let\D@Num\@empty
+\def\y@st@Do\Do#1\end{\gdef\D@Num{#1}}
+\def\@gobblet@end#1\end{}
+\def\is@uto#1\auto#2\@nil{\def\eqe@argi{#1}\def\eqe@argii{#2}%
+ \ifx\eqe@argii\@empty\let\isit@uto\eqe@Zero\else
+ \let\isit@uto\eqe@One\fi
+}
+\let\eqe@pointsPartsId\relax
+\def\leadinitemWarningStar{\PackageWarning{eqexam}
+ {Using the star (*) in front of the points\MessageBreak
+ designator is not allowed when there is a
+ \MessageBreak\string\leadinitem}}
+\def\tableadinWarningStar{\PackageWarning{eqexam}
+ {Using the star (*) in front of the points\MessageBreak
+ designator is not allowed when there is a
+ \MessageBreak\string\tableadin}}
+\let\isProbStarEnv\eqe@NO
+\let\topofprobstarhook\relax
+\csarg\def{problem*}{\let\isProbEnv\eqe@YES
+ \let\isProbStarEnv\eqe@YES
+ \global\thereissolutionfalse
+ \@ifnextchar[{\pr@bl@m@star}{\pr@bl@m@star[]}}
+\def\pr@bl@m@star[#1]{%
+ \@ifnextchar[{\pr@blem@star{#1}}{\pr@blem@star{#1}[]}}
+\def\pr@blem@star#1[#2]{%
+ \if\eqe@isPts0\global\let\eqe@prevProbZero\eqe@YES\else
+ \global\let\eqe@prevProbZero\eqe@NO\fi
+ \def\numpoints{#1}\ifx\numpoints\@empty
+ \gdef\eqe@isPts{0}\else\gdef\eqe@isPts{1}\fi
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{\eqe@isPts}%
+ \let\DoNum\eqe@DoNum\let\nDoNum\eqe@nDoNum
+ \let\OutOfNum\eqe@OutOfNum\let\nOutOfNum\eqe@nOutOfNum
+ \gdef\probstar{*}%
+ \gdef\pr@b@secondarg{#2}\setcounter{eq@count}{0}%
+ \let\afterlabelhskip\@empty
+ \global\let\probpointseach\@empty\def\numpoints{#1}%
+ \@ifstar{\let\@isitstar\eqe@One\eqe@grabarg}%
+ {\let\@isitstar\eqe@Zero\eqe@gobbletoend}#1\end
+ \if\@isitstar\eqe@One
+ \@tempcnta=\theeqquestionnoi\relax
+ \advance\@tempcnta1\relax
+ \@ifundefined{leadinitem\thisexamlabel-\the\@tempcnta}{}
+ {\leadinitemWarningStar\let\@isitstar\eqe@Zero}%
+ \@ifundefined{tableadin\thisexamlabel-\the\@tempcnta}{}
+ {\tableadinWarningStar\let\@isitstar\eqe@Zero}%
+ \fi
+ \expandafter\is@uto\numpoints\auto\@nil
+ \if\isit@uto\eqe@One\let\eqe@pointsPartsId\eqe@One
+ \global\let\probpointseach\relax
+ \def\eqe@next{\autocalcparts}%
+ \else
+ \ifx\pr@b@secondarg\@empty\else
+ \let\eqe@pointsPartsId\eqe@Four
+ \isItD@#2\end\fi
+ \def\eqe@next{\manualcalcparts{\numpoints}}%
+ \fi\eqe@next
+ \let\leadinitem\eqe@leadinitem
+ \let\tableadin\eqe@tableadin
+ \topofprobstarhook
+ \ifeqfortextbook
+ \writeToSolnFile{\protect\global\protect\frstProbNumShownfalse}\fi
+ \begin{eqequestions}%
+ \begin{exercise}[eqquestionnoi]*}%
+\def\ftb@endprobstarCks{%
+ \ifWithinANSGrp
+ \PackageError{eqexam}{\string\bGrpANS\space is still open}
+ {You need to match it with an \string\bGrpANS,
+ or remove it.}%
+ \fi
+}
+\csarg\def{endproblem*}{%
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{nPartsThisProb\thisexamlabel.\theeqquestionnoi}%
+ {\arabic{partno}}}%
+ \ifx\probpointseach\@empty\else
+ \ifx\probpointseach\auto
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{prob\thisexamlabel.\theeqquestionnoi}%
+ {\theeq@count}}%
+ \else
+ \setcounter{eq@count}{\value{partno}}%
+ \ifx\pr@b@secondarg\@empty\else
+ \bgroup\toks0=\expandafter{\pr@b@secondarg}%
+ \expandafter\isItD@\the\toks0 \end
+ \ifx\yest@D@\eqe@YES\ifx\eqe@pointsEach\eqe@YES
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{DoNumThisProb\thisexamlabel.%
+ \theeqquestionnoi}{\D@Num}}%
+ \@tempcnta = \value{eq@count}%
+ \advance\@tempcnta -\D@Num
+ \global\advance\value{eq@count}-\@tempcnta
+ \@tempcnta=\value{partno}%
+ \advance\@tempcnta -\D@Num
+ \multiply\@tempcnta by\argi
+ \addtocounter{eqpointvalue}{-\@tempcnta}%
+ \fi\fi
+ \egroup
+ \fi
+ \multiply\value{eq@count}\argi
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{prob\thisexamlabel.\theeqquestionnoi}%
+ {\theeq@count}}%
+ \fi\fi
+ \end{exercise}%
+ \end{eqequestions}%
+ \ifeqfortextbook\ftb@endprobstarCks\fi
+ \ifeqlocalversion\ifeqglobalversion
+ \xdef\eqe@tmp{\noexpand\forVersion{\eq@selectedVersion}}%
+ \aftergroup\eqe@tmp
+ \fi\fi
+ \global\eqlocalversionfalse
+ \@marktotalvalue
+ \ifdispl@yPoints\global\l@stDispl@yPointstrue
+ \else\global\l@stDispl@yPointsfalse\fi
+}
+\let\solutionparshape\@empty
+\def\eqe@leadinitem{%
+ \ifx\solutionparshape\@empty
+ \def\eqe@next{\eqe@@leadinitem}%
+ \ifeqfortextbook\writeToSolnFile{\protect\bpartsmrk}\fi
+ \else
+ \def\eqe@next{\PackageError{eqexam}
+ {The \string\leadinitem\space command may
+ only be used\MessageBreak once per problem* environment}
+ {Remove all but one of the \string\leadinitem\space
+ commands.}}%
+ \fi\eqe@next
+}
+\newif\ifisleadin \isleadinfalse
+\let\isparshapeExpanded\eqe@NO
+\def\eqe@@leadinitem{\if\itsforleadinitem\eqe@NO
+ \setcounter{partno}{0}\fi\refstepcounter{partno}%
+ \eq@initializeContAnnot
+ \isleadintrue\let\isitleadin\eqe@YES
+ \eqe@writetoAux{\string
+ \csarg\string\gdef{leadinitem\thisexamlabel-\theeqquestionnoi}{}}%
+ \settowidth{\eq@tmpdima}{\normalfont\parts@indent\eqe@prtsepPrb}%
+ \xdef\leadinIndentPrtSep{\the\eq@tmpdima}%
+ \setlength{\eq@tmpdima}{\eqemargin+\eq@tmpdima}%
+ \xdef\leadinIndent{\the\eq@tmpdima}%
+ \settowidth{\eq@tmplength}{\parts@indent}%
+ \edef\partsleadinIndent{\the\eq@tmplength}%
+ \setlength{\eq@tmplength}{\linewidth-\leadinIndentPrtSep}%
+ \edef\leadinIndentLength{\the\eq@tmplength}%
+\@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
+ \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
+ \advance\leftmarginii\leadinIndentPrtSep\relax
+ \leftmargin\leftmarginii \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ }%
+ \parshape=2 \eqemargin \linewidth \leadinIndent \leadinIndentLength
+ \xdef\solutionparshape{%\noexpand\linewidth\leadinIndentLength
+ \noexpand\parshape=1 \leadinIndent\space\leadinIndentLength}%
+ \global\let\isparshapeExpanded\eqe@NO
+ \everypar{\solutionparshape
+ \global\let\isparshapeExpanded\eqe@YES\everypar{}}%
+ \let\eq@item\eq@leadin@item\eqp@rtc@lcm@rk
+ \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
+ \@ifnextchar[{\@ckhide}{\eq@item}%
+}
+\def\eq@leadin@item{\eq@ckglobalhide\ifeq@hidesolution\else
+ \global\let\eqExerSolnHeader\eq@@writeexheaderlist\fi
+ \ifeq@nosolutions\eq@nolinktrue\fi
+ \unskip\noindent\makebox[\partsleadinIndent]{\eqexlisttabheader}%
+ \eqe@prtsepPrb\ignorespaces
+}
+\def\eqe@tableadin{\@tableadinitemtrue\eqe@writetoAux{\protect
+ \csarg\protect\gdef{tableadin\thisexamlabel-\theeqquestionnoi}{}}%
+}
+\newcommand\pushProblem{\xdef\nlastItem{\arabic{partno}}\end{parts}}
+\newcommand\popProblem[1][]{%
+ \def\@argi{#1}\ifx\@argi\@empty
+ \def\eqe@bParts{\begin{parts}}\else
+ \def\eqe@bParts{\begin{parts}[#1]}\fi
+ \eqe@bParts\setcounter{partno}{\nlastItem}}
+\def\lastPageTotal{0pt}
+\def\marginparafterhook{\xdef\lastPageTotal{\the\pagetotal}}
+\def\prob@Arg#1ea#2\end{\def\argi{#1}\def\argii{#2}}
+\let\eqe@pointsEach\eqe@NO
+\def\manualcalcparts#1{%
+ \expandafter\prob@Arg#1ea\end
+ \ifx\argii\@empty\edef\numpoints{#1}%
+ \let\eqe@pointsEach\eqe@NO
+ \let\eqe@pointsPartsId\eqe@Zero
+ \else
+ \gdef\probpointseach{x}\let\eqe@pointsPartsId\eqe@Two
+ \let\eqe@pointsEach\eqe@YES
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}\csarg
+ \ifx{prob\thisexamlabel.\theeq@count}\relax
+ \def\numpoints{\argi}\else
+ \def\numpoints{\expandafter
+ \csname prob\thisexamlabel.\theeq@count\endcsname}%
+ \fi
+ \ifx\yest@D@\eqe@YES
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \@ifundefined{nPartsThisProb\thisexamlabel.\theeq@count}
+ {\makeOutOfNum{0}\makeDoNum{0}}{%
+ \expandafter\makeOutOfNum{%
+ \csname nPartsThisProb\thisexamlabel.%
+ \theeq@count\endcsname}%
+ \expandafter\makeDoNum{%
+ \csname DoNumThisProb\thisexamlabel.%
+ \theeq@count\endcsname}}%
+ \fi
+ \fi
+ \ifx\marginpoints\@empty
+ \else
+ \ifx\argi\@empty
+ \let\marginpoints\@empty
+ \else
+ \ifx\argii\@empty
+ \ifx\marginpoints\@empty\else
+ \if\@isitstar\eqe@One
+ \addtocounter{eqpointvalue}{#1}%
+ \@marktotalvalue\ifdispl@yPoints
+ \def\marginparafterhook{\itemPTsFormated{%
+ \itemPTsTxt{\numpoints}}\space}\fi
+ \else
+ \def\marginparpriorhook{\noindent
+ \probvalue{\numpoints}{0}}%
+ \fi
+ \fi
+ \else
+ \ifx\marginpoints\@empty\else
+ \if\@isitstar\eqe@One\ifdispl@yPoints
+ \def\marginparafterhook{%
+ \itemPTsFormated{\itemPTsEaTxt{\argi}}\space}\fi
+ \else
+ \ifdispl@yPoints
+ \def\marginparpriorhook{\noindent
+ \marginpoints{\numpoints}{\argi}}\fi
+ \fi
+ \edef\eqp@rtc@lcm@rk{\noexpand
+ \addtocounter{eqpointvalue}{\argi}%
+ \noexpand\@marktotalvalue}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum\value{eq@count}=1\relax
+ \eqe@IWO\@auxout{\string\csarg\string
+ \gdef{pagenofirstprob\thisexamlabel}{\thepage}}%
+ \fi
+}
+\def\acp@mpah{\itemPTsFormated{\itemPTsTxt{\numpoints}}\space}
+\def\acp@mpph{\noindent\marginpoints{\numpoints}{0}}
+\def\autocalcparts{%
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \csarg\ifx{prob\thisexamlabel.\theeq@count}\relax
+ \def\numpoints{0}% assume zero points until we get the total
+ \else
+ \edef\numpoints{\@nameuse{prob\thisexamlabel.\theeq@count}}%
+ \fi
+ \ifx\marginpoints\@empty\else
+ \ifdispl@yPoints
+ \if\@isitstar\eqe@One
+ \def\marginparafterhook{\acp@mpah}\else
+ \def\marginparpriorhook{\acp@mpph}\fi
+ \fi
+ \fi
+ \setcounter{eq@count}{0}%
+}
+\let\eqe@fpmrk\@empty
+\newcommand{\forproblem}[1]{\def\eqe@fpmrk{-\the@exno}%
+ \setcounter{eqquestionnoi}{#1 - 1}}
+\newcommand{\foritem}[2][]{%
+ \setcounter{partno}{0}\def\@rgi{#1}\ifx\@rgi\@empty
+ \def\eqe@nextitem{\item}\else
+ \def\eqe@nextitem{\item[#1]}\fi
+ \foritem@cont{#2}}
+\newcommand{\forleadinitem}[2][]{%
+ \setcounter{partno}{0}\def\@rgi{#1}\ifx\@rgi\@empty
+ \def\eqe@nextitem{\leadinitem}\else
+ \def\eqe@nextitem{\leadinitem[#1]}\fi
+ \foritem@cont{#2}}
+\def\foritem@cont#1{\ifuseNumForParts
+ \edef\fliPartNo{#1}\setcounter{partno}{#1-1}\else
+ \lowercase{\def\eq@selectedItem{#1}}%
+ \let\eq@initLoop\eqe@NO
+ \loop
+ \stepcounter{partno}\expandafter
+ \if\alph{partno}\eq@selectedItem
+ \let\eq@initLoop\eqe@YES\fi
+ \ifx\eq@initLoop\eqe@NO\repeat
+ \edef\fliPartNo{\the\c@partno}%
+ \addtocounter{partno}{-1}\fi\let\itsforleadinitem\eqe@YES
+ \eqe@nextitem}
+\newcommand{\annotContStr}{%
+ \textbf{Problem~{\eqeCurrProb} continued\strut}}
+\newcommand{\acvspace}[1]{\def\ic@vspace{#1}\setlength\iacvspace{#1}}
+\newlength\iacvspace
+\newcommand{\ic@vspacedefault}{1in} % changed .25in to 1in 2012/12/04
+\newcommand{\resetacvspace}{\setlength\iacvspace{\ic@vspacedefault}}
+\resetacvspace
+\newcommand{\eqe@insertContAnnot}[1][\iacvspace]{\promoteNewPage[#1]%
+ \ifnum\arabic{page}>\eq@currProbStartPage
+ \xdef\eq@currProbStartPage{\arabic{page}}%
+ {\settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\eqe@partsIndent{\the\eq@tmplength}}%
+ \ifwithinparts
+ \@ifundefined{eq@item@latex}{\item[]\hspace*{-\eqemargin}%
+ \ifx\solutionparshape\@empty\else\hspace*{-\eqe@partsIndent}\fi}
+ {\eq@item@latex[]\hspace*{-\eqemargin}%
+ \hspace{-\eqe@partsIndent}}\else
+ \hspace*{-\eqemargin}\fi\annotContStr
+ \fi
+}
+\edef\eq@currProbStartPage{\arabic{page}}
+\newcommand{\turnContAnnotOff}{\global\let\eq@insertContAnnot\relax}
+\newcommand{\turnContAnnotOn}{%
+ \global\let\eq@insertContAnnot\eqe@insertContAnnot}
+\turnContAnnotOff
+\def\insertContAnnot{\eq@insertContAnnot}
+\newcommand\aNewPage{\ifanswerkey\newpage\fi}
+\newcommand\qNewPage{\ifanswerkey\else\newpage\fi}
+\newcounter{backofpage}
+\newcommand\bopText{on the back of page~\boPage}
+\newcommand\bopCoverPageText{on the back of the cover page}
+\newcommand\OnBackOfPage[1][\bopText]{%
+ \refstepcounter{backofpage}\label{bop\thebackofpage}
+ \begingroup
+ \csarg\ifx{r@bop\thebackofpage}\relax
+ \def\boPage{??}\else
+ \edef\eqe@temp{\csname r@bop\thebackofpage\endcsname}%
+ \ifx\hyper@anchor\@undefined
+ \edef\boPage{\expandafter\@secondoftwo\eqe@temp}\else
+ \edef\boPage{\expandafter\@secondoffive\eqe@temp}\fi
+ \c@eq@count\boPage
+ \advance\c@eq@count-1\relax
+ \edef\boPage
+ {%
+ \ifx\eqex@coverpage\relax
+ \ifnum\value{eq@count}=0
+ 1%
+ \else
+ \the\value{eq@count}%
+ \fi
+ \else
+ \ifnum\value{eq@count}=0
+ -1%
+ \else
+ \the\value{eq@count}%
+ \fi
+ \fi
+ }%
+ \fi
+ \csarg\ifx{r@bop\thebackofpage}\relax#1\else
+ \ifnum\boPage=-1\relax\bopCoverPageText\else#1\fi\fi
+ \endgroup
+}
+\newcommand{\eqWriteLineColor}[1]{\def\eq@WriteLineColor{#1}}
+\eqWriteLineColor{gray}
+\newlength\wlVspace
+\newcommand{\eqWLSpacing}[1]{\setlength\wlVspace{#1}}
+\eqWLSpacing{14pt}
+\newcommand{\eqWriteLineFill}{%
+ \textcolor{\eq@WriteLineColor}{\hrulefill}}
+\def\eqdotrulefile{\leavevmode
+ \cleaders\hb@xt@ .44em{\hbox to0pt{\hss.\hss}\hss}\hfill\kern\z@}
+\newcommand{\eqWriteLineDots}{%
+ \textcolor{\eq@WriteLineColor}{\eqdotrulefile}}
+\def\eqdashrulefill{\leavevmode%\kern-.11em
+ \cleaders\hb@xt@ .44em{\rule{.22em}{.4pt}\hss}\hfill\kern\z@}
+\newcommand{\eqWriteLineDashFill}{%
+ \textcolor{\eq@WriteLineColor}{\eqdashrulefill}}
+\newcommand{\eqWriteLineBlankFill}{\hfill}
+\newif\if@equsedim \@equsedimtrue
+\newcommand{\useVspaceDimen}{\@equsedimtrue}
+\newcommand{\usenLineDimen}{\@equsedimfalse}
+\newif\if@eqalignfilllinestoleft\@eqalignfilllinestoleftfalse
+\newcommand{\fillerLinesOnLeftMargin}{\@eqalignfilllinestolefttrue}
+\newcommand{\fillerLinesAlignDef}{\@eqalignfilllinestoleftfalse}
+\newcommand\priorPageBreakMsg[1]{\def\priorP@geBre@kMsg{#1}}
+\let\priorP@geBre@kMsg\@empty
+\newcommand{\flPageBreakMsg}[1]{%\acvspace{2\wlVspace}%
+ \priorPageBreakMsg{\emitMessageNearBottom[2\wlVspace]
+ {\eqfititin{{\Large\strut}#1}}}%
+}
+\newcommand{\vspaceFillerLines}[1]{\begingroup\offinterlineskip
+ \parindent0pt\relax\parskip0pt
+ \@tempdima\wlVspace\eqetmplengtha0pt
+ \def\eqe@fillwidth{\linewidth+\eqetmplengtha}%
+ \settowidth{\eqetmplengthb}{\eqe@decPointPrb}%
+ \@whiledim\@tempdima<#1\relax\do{\priorP@geBre@kMsg
+ \eq@insertContAnnot\vskip\wlVspace\eqe@wrtLineKernal
+ \makebox[0pt][l]{\makebox[\eqe@fillwidth]{\eqWriteLine}}%
+ \addtolength{\@tempdima}{.4pt+\wlVspace}\par
+ }\endgroup
+}
+\def\eq@linesXPgs{\begingroup\offinterlineskip
+ \parindent0pt\relax\parskip0pt
+ \@tempcnta=0 \eqetmplengtha0pt
+ \settowidth{\eqetmplengthb}{\eqe@decPointPrb}%
+ \def\eqe@fillwidth{\linewidth+\eqetmplengtha}%
+ \@whilenum\@tempcnta<\soln@keys@nLines\relax\do{\priorP@geBre@kMsg
+ \eq@insertContAnnot\vskip\wlVspace\eqe@wrtLineKernal
+ \makebox[0pt][l]{\makebox[\eqe@fillwidth]{\eqWriteLine}}%
+ \advance\@tempcnta1\relax}\par\endgroup
+}
+\def\eqe@wrtLineKernal{%
+ \ifx\solutionparshape\@empty
+ \if@eqalignfilllinestoleft
+ \setlength{\eqetmplengtha}{\labelwidth+\eqemargin}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha+\eqetmplengthb}%
+ \ifwithinparts
+ \setlength{\eqetmplengtha}{\labelwidth}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha+\eqetmplengthb}%
+ \ifx\eq@item\item@part@tabular
+ \hspace*{-\eqemargin}\eqetmplengtha\eqemargin\else
+ \hspace*{-\eqetmplengtha}\fi
+ \else
+ \hspace*{-\eqemargin}\eqetmplengtha\eqemargin
+ \fi
+ \else
+ \ifwithinparts
+ \setlength{\eqetmplengtha}{\labelwidth}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha-\eqetmplengthb}%
+ \setlength{\eqetmplengtha}{\labelwidth}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha+\eqetmplengthb}%
+ \ifx\eq@item\item@part@tabular
+ \hspace*{\eqetmplengtha}%
+ \settowidth{\eqetmplengthb}{\eqe@prtsepPrb}%
+ \setlength{\eqetmplengtha}
+ {-\labelwidth-\eqetmplengthb}\else
+ \eqetmplengtha0pt\fi
+ \else
+ \eqetmplengtha0pt
+ \fi
+ \fi
+ \else
+ \if@eqalignfilllinestoleft
+ \setlength{\eqetmplengtha}
+ {\eqemargin+\leadinIndentPrtSep}%
+ \hspace*{-\eqetmplengtha}\else\hspace*{0pt}\fi
+ \fi
+}
+\newcommand{\useFillerLines}{\let\vspaceFiller\vspaceFillerLines
+ \fillTypeDefault\@eqlinedfillertrue}
+\newcommand{\useFillerDefault}{\let\vspaceFiller\vspaceFillerDefault
+ \let\eqWriteLine\hfill\@eqlinedfillerfalse}
+\newcommand{\fillTypeHRule}{\let\eqWriteLine\eqWriteLineFill}
+\newcommand{\fillTypeDots}{\let\eqWriteLine\eqWriteLineDots}
+\newcommand{\fillTypeDashLine}{\let\eqWriteLine\eqWriteLineDashFill}
+\newcommand{\fillTypeBlankLine}{\let\eqWriteLine\eqWriteLineBlankFill}
+\newcommand{\fillTypeDefault}{\let\eqWriteLine\eqWriteLineFill}
+\ifeqfortextbook\else
+ \if@bypasseqexamheading\else
+\pagestyle{eqExamheadings}\fi\fi
+\ifeqfortextbook
+\AtBeginDocument{\tb@soln@choice
+ \ifeqwritetomargins\chkmarginboxwidth
+ \AddToShipoutPicture{\eqe@tb@shipout}\fi}
+\fi
+\edef\ftbInputEqTextb{\ifeqfortextbook\noexpand
+ \InputIfFileExists{eqtextb.def}{}{}\fi}
+\ftbInputEqTextb
+\define@boolkey{eqFillin}{underline}[true]{}
+\define@key{eqFillin}{u}[]{\KV@eqFillin@underlinetrue}
+\define@key{eqFillin}{b}[]{\KV@eqFillin@underlinefalse}
+\define@boolkey{eqFillin}{boxed}[true]{}
+\define@key{eqFillin}{boxpretext}[]{\def\eq@fillintext{#1}}
+\let\eq@fillintext\@empty
+\define@key{eqFillin}{parbox}[\relax]{\def\eq@fillinparbox{#1}}
+\let\eq@fillinparbox\@empty
+\define@key{eqFillin}{hiddenbox}[]{%
+ \def\eq@fillinhiddenbox{%
+ \setlength{\fboxrule}{0pt}\setlength{\fboxsep}{0pt}}}
+\let\eq@fillinhiddenbox\@empty
+\define@boolkey{eqFillin}{enclosesoln}[true]{}
+\define@choicekey+{eqFillin}{boxsize}{tiny,scriptsize,footnotesize,%
+ small,normalsize,large,Large,LARGE,huge,Huge}[normalsize]{%
+ \def\eq@eqFillin@boxsize{\text{\csname#1\endcsname\strut}}%
+}{\PackageWarning{eqexam}{Bad choice for boxsize, permissible values
+ are tiny, scriptsize, footnotesize, small, normalsize,
+ large, Large, LARGE, huge and Huge. Try again}}
+\def\eq@eqFillin@boxsize{\text{\normalsize\strut}}
+\define@key{eqFillin}{color}[\eq@fillinColor]{\edef\eq@fillin@color{#1}}
+\define@choicekey+{eqFillin}{align}[\val\nr]%
+ {l,r,c}[\eq@eqFillin@align@default]{%
+ \def\eq@eqFillin@align{#1}%
+ \ifcase\nr\relax
+ \def\eqe@align@hfill{}\or
+ \def\eqe@align@hfill{\hfill}\or
+ \def\eqe@align@hfill{\hfil}\fi
+ }{%
+ \PackageWarning{eqexam}{Bad choice for align, permissible values
+ are l, r, and c. Try again}}
+\let\eqe@align@hfill\relax
+\define@choicekey+{eqFillin}{defaultalign}[\val\nr]{l,r,c}[c]{%
+ \def\eq@eqFillin@align@default{#1}%
+ \ifcase\nr\relax
+ \def\eqe@align@hfill@default{}\or
+ \def\eqe@align@hfill@default{\hfill}\or
+ \def\eqe@align@hfill@default{\hfil}\fi
+ }{%
+ \PackageWarning{eqexam}{Bad choice for defaultalign, permissible
+ values are l, r, and c. Try again}}
+\setkeys{eqFillin}{defaultalign=c}
+\renewcommand{\fillInFormatDefault}{\normalfont}
+\define@key{eqFillin}{format}[\fillInFormatDefault]{%
+ \def\eq@fillin@format{#1}}
+\def\eq@fillin@format{\bfseries}
+\def\eqe@fbox@corr#1{#1-2\fboxsep-2\fboxrule}
+\define@boolkey{eqFillin}{fitwidth}[true]{} %
+\@ifundefined{boxed}{%
+ \def\eq@fillin@defaultbox{\fbox}%
+ \def\eq@fillin@boxcmd{\fbox}%
+ }{%
+ \def\eq@fillin@defaultbox{\boxed}%
+ \def\eq@fillin@boxcmd{\boxed}%
+ }
+\define@key{eqFillin}{boxcmd}%
+ [\eq@fillin@defaultbox]{\def\eq@fillin@boxcmd{#1}}
+\@ifundefined{underbar}{%
+ \def\eq@fillin@defaultul{underline}%
+ \def\eq@fillin@ulcmd{\underline}%
+ }{%
+ \def\eq@fillin@defaultul{underbar}%
+ \def\eq@fillin@ulcmd{\underbar}%
+ }
+\edef\ulcustom{\expandafter\noexpand\eq@fillin@ulcmd}
+\edef\temp@exp{\noexpand
+\define@choicekey+{eqFillin}{ulcmd}
+ {underbar,underline,custom}[\eq@fillin@defaultul]}
+\temp@exp{\def\@rgi{#1}\def\eq@custom{custom}\ifx\@rgi\eq@custom
+ \def\eq@fillin@ulcmd{\@nameuse{ulcustom}}\else
+ \def\eq@fillin@ulcmd{\@nameuse{#1}}\fi
+}{\PackageWarning{aeb}{Bad choice for ulcmd, permissible values
+ are underbar and underline. Try again}}
+\define@key{eqFillin}{lift}[-1sp]{\def\eq@fillin@lift{#1}}
+\define@boolkey{eqFillin}{autolift}[true]{} %
+\define@key{eqFillin}{addtoautolift}[0pt]{%
+ \def\eq@fillin@addtoautolift{#1}}
+\def\eqe@getiiiOpts{%
+ \@ifnextchar[%]
+ \i@eqe@getiiiOpts
+ {\iii@eqe@getiiiOpts{c}{\relax}[s]}}
+\def\i@eqe@getiiiOpts[#1]{%
+ \@ifnextchar[%]
+ {\ii@eqe@getiiiOpts{#1}}%
+ {\iii@eqe@getiiiOpts{#1}{\relax}[s]}}
+\def\ii@eqe@getiiiOpts#1[#2]{%
+ \@ifnextchar[%]
+ {\iii@eqe@getiiiOpts{#1}{#2}}%
+ {\iii@eqe@getiiiOpts{#1}{#2}[#1]}}
+\def\iii@eqe@getiiiOpts#1#2[#3]{%
+ \def\eqe@opts@argi{#1}%
+ \def\eqe@opts@argii{#2}%
+ \def\eqe@opts@argiii{#3}}
+\newcommand{\setfillinDefaults}[1]{\def\eqe@argi{#1}\ifx\eqe@argi\@empty
+ \let\eqe@setfillinDefaults\@empty\else
+ \def\eqe@setfillinDefaults{#1}\fi}
+\let\eqe@setfillinDefaults\@empty
+\renewcommand{\fillin}[3][]{\begingroup%
+ \expandafter\let\expandafter\ifsp\csname ifsp@expand\endcsname
+ \setkeys{eqFillin}{boxsize,underline=true,boxed=false,%
+ boxpretext,color,format,enclosesoln=false,fitwidth=false,lift,%
+ autolift=false,addtoautolift}%
+ \ifx\eqe@setfillinDefaults\@empty\else
+ \protected@edef\eq@temp@exp{\noexpand
+ \setkeys{eqFillin}{\eqe@setfillinDefaults}}%
+ \eq@temp@exp
+ \fi
+ \protected@edef\eq@temp@exp{\noexpand\setkeys{eqFillin}{#1}}%
+ \eq@temp@exp
+ \ifKV@eqFillin@boxed\KV@eqFillin@underlinefalse\fi
+ \ifKV@eqFillin@autolift\def\eq@fillin@lift{-2sp}\fi
+ \edef\eqe@argii{#2}%
+ \eq@fillinhiddenbox
+ \ifx\eq@fillinhiddenbox\@empty\else
+ \KV@eqFillin@boxedtrue\fi
+ \ifx\eq@fillinparbox\@empty\def\eqe@argiii{#3}\else
+ \ifx\eqe@align@hfill\relax
+ \def\eq@eqFillin@align{l}\def\eqe@align@hfill{}\fi
+ \expandafter\eqe@getiiiOpts\eq@fillinparbox\relax
+ \ifKV@eqFillin@boxed
+ \expandafter\ifx\eqe@opts@argii\relax\else
+ \edef\eqe@opts@argii{\expandafter
+ \eqe@fbox@corr\expandafter{\eqe@opts@argii}}\fi
+ \fi
+ \edef\eqe@parboxOptArgs{[\eqe@opts@argi]%
+ \expandafter\ifx\eqe@opts@argii\relax\else
+ [\eqe@opts@argii][\eqe@opts@argiii]\fi}%
+ \def\eqe@argiii{\expandafter\parbox\eqe@parboxOptArgs{\eqe@bw}%
+ {\eqe@align@hfill\ifKV@eqFillin@boxed\eq@fillintext\fi#3}}%
+ \fi
+ \ifx\eqe@align@hfill\relax
+ \def\eq@eqFillin@align{c}%
+ \edef\eqe@align@hfill{\eqe@align@hfill@default}\fi
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\text\fi
+ \ifx\eq@fillinparbox\@empty
+ \ifx\eqe@argii\@empty
+ \settowidth{\eqetmplengthb}{\@eqmath{\eq@fillin@format
+ \ifKV@eqFillin@boxed\eq@fillintext\fi\eqe@argiii}}%
+ \ifKV@eqFillin@boxed
+ \setlength{\eqetmplengthb}{%
+ \eqetmplengthb+2\fboxsep+2\fboxrule}%
+ \fi
+ \else
+ \setlength{\eqetmplengthb}{#2}%
+ \fi
+ \else
+ \ifx\eqe@argii\@empty
+ \setlength{\eqetmplengthb}{\linewidth}%
+ \PackageWarning{eqexam}{Parameter \#2
+ is empty with parbox option,\MessageBreak
+ using \string\linewidth\space for width%
+ }%
+ \else
+ \setlength{\eqetmplengthb}{#2}%
+ \fi
+ \fi
+ \expandafter\let\expandafter\ifsp\csname ifsp@default\endcsname
+ \edef\eqe@bw{\the\eqetmplengthb}%
+ \ifKV@eqFillin@underline\let\@fillinFmt\eq@fillin@ulcmd
+ \else\let\@fillinFmt\relax\fi
+ \ifx\eq@fillinparbox\@empty\else
+ \ifKV@eqFillin@underline\let\@fillinFmt\relax
+ \PackageInfo{eqexam}{Removing underline option, not permissible
+ \MessageBreak with parbox option}%
+ \fi\fi
+ \ifeq@proofing
+ \ifKV@eqFillin@fitwidth
+ \settowidth{\eqetmplengthb}{\@eqmath{\eq@fillin@format
+ \ifx\eq@fillinparbox\@empty\ifKV@eqFillin@boxed
+ \eq@fillintext\fi\fi\eqe@argiii}}%
+ \ifKV@eqFillin@boxed
+ \setlength{\eqetmplengthb}{%
+ \eqetmplengthb+2\fboxsep+2\fboxrule}%
+ \fi
+ \edef\eqe@bw{\the\eqetmplengthb}%
+ \fi
+ \ifKV@eqFillin@boxed
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\text\fi
+ \setbox\z@\hbox{\@eqmath{\eq@fillin@boxcmd{%
+ \eq@eqFillin@boxsize
+ \@fillinFmt{%
+ \ifKV@eqFillin@boxed
+ \edef\eqe@bw{\eqe@fbox@corr{\eqe@bw}}%
+ \fi
+ \makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \@eqmath{\eq@fillin@format\color{\eq@fillin@color}%
+ \ifx\eq@fillinparbox\@empty
+ \eq@fillintext\fi\eqe@argiii}}%
+ }% end \@fillinFmt
+ }}}% end \mbox
+ \setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \else
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\relax\fi
+ \setbox\z@\hbox{%
+ \ifdim\eq@fillin@lift=-1sp\relax
+ \@fillinFmt{\makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \color{\eq@fillin@color}%
+ \@eqmath{\eq@fillin@format\eqe@argiii}}}%
+ \else
+ \ifKV@eqFillin@autolift
+ \setbox2=\hbox{\@eqmath{\eq@fillin@format\eqe@argiii}}%
+ \setlength{\@tempdima}{\dp2+\eq@fillin@addtoautolift}%
+ \edef\eq@fillin@lift{\the\@tempdima}\fi
+ \raisebox{-\eq@fillin@lift}{\@fillinFmt{%
+ \makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \color{\eq@fillin@color}%
+ \raisebox{\eq@fillin@lift}{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}}}}%
+ \fi
+ }\setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \fi
+ \else
+ \ifKV@eqFillin@boxed
+ \setbox\z@\hbox{\@eqmath{\eq@fillin@format
+ \eq@fillin@boxcmd{\eq@eqFillin@boxsize\ifeq@nosolutions
+ \rlap{\@eqmath{\eq@fillintext}}\fi
+ \ifvspacewithsolns\rlap{\@eqmath{\eq@fillintext}}\fi
+ \@fillinFmt{%
+ \makebox[\eqe@fbox@corr{\eqe@bw}]{%
+ \ifKV@eqFillin@enclosesoln\phantom
+ {\setlength\eqetmplengthb{\eqe@bw-2\fboxsep}%
+ \edef\eqe@bw{\the\eqetmplengthb}%
+ \@eqmath{\eqe@argiii}}\else
+ \strut\hfill\fi
+ }%
+ }%end \@fillinFmt
+ }}}% end \hbox
+ \setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \else
+ \setbox\z@\hbox{%
+ \ifdim\eq@fillin@lift=-1sp\relax
+ \@fillinFmt{\makebox[\eqe@bw]{%
+ \strut\hfil}}%
+ \else
+ \ifKV@eqFillin@autolift
+ \setbox2=\hbox{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}%
+ \setlength{\@tempdima}%
+ {\dp2+\eq@fillin@addtoautolift}%
+ \edef\eq@fillin@lift{\the\@tempdima}\fi
+ \raisebox{-\eq@fillin@lift}{\@fillinFmt{%
+ \makebox[\eqe@bw]{\raisebox{\eq@fillin@lift}
+ {\phantom{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}\strut\hfil}}}}%
+ \fi
+ }\setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \fi
+ \@ifundefined{@quiz}{}{%
+ \if\eq@online\eqe@YES\relax
+ \ifeq@nosolutions
+ \ifeq@solutionsafter\else
+ \ifx\eq@insertverticalspace\eqe@YES\relax
+ \stepcounter{@cntfillin}%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.part\thepartno.%
+ fi\the@cntfillin%
+ \else
+ eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.fi\the@cntfillin%
+ \fi
+ }\ifx\eq@fillinparbox\@empty
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}\presets{\eqe@optsFillIn}]
+ {\fieldName}{#2}{\fillinTotalHeight}}}\else
+ \setlength{\@tempdima}%
+ {\eqe@opts@argii+2\fboxrule+2\fboxsep}%
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}\presets{\eqe@optsFillIn}
+ \Ff{\FfMultiline}]{\fieldName}{#2}
+ {\fillinTotalHeight}}}\fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \fi\endgroup\space\ignorespaces}
+\renewcommand\TF[2][\defaultTFwidth]{%
+ \def\eqe@next{\fillin[underline]{#1}{#2}}%
+ \ifdim\eq@extralabelsep=0pt\relax\else
+ \if\probstar*\relax\if\exerwparts@cols0
+ \def\eqe@next{\makebox[0pt][r]{%
+ \fillin[underline]{#1}{#2}}\ignorespaces}%
+ \fi\fi\fi\eqe@next
+}
+\endinput
+%%
+%% End of file `eqexam.sty'.
diff --git a/texmf-dist/tex/latex/eqexam/eqtextb.def b/texmf-dist/tex/latex/eqexam/eqtextb.def
new file mode 100644
index 00000000..f388e3e7
--- /dev/null
+++ b/texmf-dist/tex/latex/eqexam/eqtextb.def
@@ -0,0 +1,765 @@
+%%
+%% This is file `eqtextb.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,textbook')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2017 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License 1.2 %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqtextb.def}
+ [2016/01/18 v4.6 Cmds used by the fortextbook option (dps)]
+\define@boolkey{eqe@tbopts}[is]{instred}[true]{}
+\define@boolkey{eqe@tbopts}[is]{studented}[true]{%
+ \ifisstudented
+ \tbfilterOutEvenNums
+ \fi
+}
+\def\tb@beginexam@code{%
+ \ifisinstred\answerkeytrue\eq@proofingtrue\fi}
+\newcommand{\tbfilterOutEvenNums}{%
+ \def\eqEXt##1##2{\ifodd##1\let\eqe@next\relax\else
+ \def\eqe@next{\gobbletoEndEXt}\fi\eqe@next}%
+}
+\newcommand{\tballowAllNums}{%
+ \let\eqEXt\@gobbletwo
+ \let\endeqEXt\relax
+}
+\define@boolkey{eqe@tbopts}[is]{marginans}[true]{}
+\define@boolkey{eqe@tbopts}[is]{inlineans}[true]{}
+\define@boolkey{eqe@tbopts}[]{marginsonleft}[true]
+ {\@mparswitchfalse\reversemarginpar}
+\define@boolkey{eqe@tbopts}[show]{ssols}[true]{}
+\define@boolkey{eqe@tbopts}[show]{lsols}[true]{%
+ \ifshowlsols\let\tb@soln@choice\tb@showlsols\fi}
+\newcommand{\textbookOpts}[1]{\setkeys{eqe@tbopts}{#1}%
+ \ifisinstred\global\isstudentedfalse\else
+ \ifisstudented\global\isinstredfalse
+ \fi\fi
+ \ifdim\tbmarparboxwidth=1sp\else
+ \expandafter\tbMakeFinalCalcs\fi
+}
+\isstudentedtrue
+\isinstredfalse
+\ismarginansfalse
+\isinlineansfalse
+\@onlypreamble{\textbookOpts}
+\newcommand{\turnOffMarAnsOnAnsInline}{%
+ \global\ismarginansfalse\global\isinlineanstrue
+ \insMidMarg{\global\ismarginansfalse
+ \global\isinlineanstrue}%
+}
+\newcommand{\turnOnMarAnsOffAnsInline}{%
+ \global\ismarginanstrue\global\isinlineansfalse
+ \insMidMarg{\global\ismarginanstrue
+ \global\isinlineansfalse}%
+}
+\newcommand{\toggleInstrAns}{%
+ \ifisinstred\ifismarginans
+ \global\ismarginansfalse\global\isinlineanstrue
+ \insMidMarg{\global\ismarginansfalse
+ \global\isinlineanstrue}%
+ \else
+ \global\ismarginanstrue\global\isinlineansfalse
+ \insMidMarg{\global\ismarginanstrue
+ \global\isinlineansfalse}%
+ \fi\fi
+}
+\newif\ifWithinANSGrp\WithinANSGrpfalse
+\newif\ifftb@isANSListOpen\ftb@isANSListOpenfalse
+\newcommand{\bGrpANS}{%
+ \if\probstar*\else
+ \PackageError{eqexam}{Use of \string\bGrpANS\space
+ only applies\MessageBreak to the problem* environment}{Please
+ remove this \string\bGrpANS.}%
+ \fi
+ \ifWithinANSGrp
+ \global\WithinANSGrpfalse
+ \let\tb@next\relax
+ \PackageError{eqexam}{\string\bGrpANS\space already open}
+ {You issued an earlier \string\bGrpANS,
+ but did not close it.}%
+ \else
+ \global\WithinANSGrptrue
+ \global\ftb@isANSListOpenfalse
+ \def\tb@next{\ANS}%
+ \fi
+ \tb@next
+}
+\newcommand{\eGrpANS}{%
+ \if\probstar*\else
+ \PackageError{eqexam}{Use of \string\eGrpANS\space
+ only applies\MessageBreak to the problem* environment}{Please
+ remove this \string\eGrpANS.}%
+ \fi
+ \ifWithinANSGrp
+ \global\WithinANSGrpfalse
+ \def\tb@next{\ANS}%
+ \else
+ \let\tb@next\relax
+ \PackageError{eqexam}{\string\eGrpANS\space already closed}
+ {You've issued two consecutive \string\eGrpANS\space
+ commands,\MessageBreak either remove this one
+ or the previous one.}%
+ \fi
+ \tb@next
+}
+\newcommand{\ANS}{\@ifstar{\let\tb@istart=1\tb@ANS}
+ {\let\tb@istart=0\tb@ANS}}
+\def\ftb@defineInsSpan#1{\def\ftb@argi{#1}\ifx\ftb@argi\@empty
+ \def\ftb@InsSpan{}\else\ftb@spanPrts{#1}%
+ \def\ftb@InsSpan{\noexpand\hspace{-\labelsep}%
+ \noexpand\textcolor{MRGPARTcolor}{--}\noexpand
+ \makebox[\noexpand\tbmrgpartwdth]{\noexpand
+ \tb@mrgPartFmt{\ftb@EndSpanPrts}}\eqe@hspannerMrg}\fi
+}
+\def\ftb@spanPrts#1{{%
+ \advance\value{partno}by#1\relax
+ \xdef\ftb@EndSpanPrts{\thepartno}}%
+}
+\def\ftb@EqeListPrtsFmt{\noexpand
+ \makebox[\noexpand\tbmrgpartwdth]{\noexpand
+ \tb@mrgPartFmt{\thepartno}}\nobreak
+}
+\def\ftb@OpenEqeListPrts{\noexpand
+ \begin{eqeList}[\tb@wparts@len]{\noexpand
+ \eqedsplyOnlyFrst{\theeqquestionnoi}%
+ {\thepartno}\noexpand\eqe@hspannerMrg\ftb@EqeListPrtsFmt}%
+}
+\def\ftb@CloseEqeList#1{\expandafter\insMidMarg%
+ \expandafter{\eqe@prehold#1\end{eqeList}}%
+}
+\newcommand{\grpANSDelimiter}{\textcolor{MRGPARTcolor}{,}\space}
+\newcommand{\tb@ANS}[2][]{%
+ \ifisinstred
+ \ifisinlineans
+ \if\tb@istart0\ANSFmt{\theeqquestionnoi}{#2}\fi
+ \fi
+ \ifismarginans
+ \ftb@defineInsSpan{#1}%
+ \edef\eqe@prehold{%
+ \if\probstar*%
+ \ifftb@isANSListOpen
+ \ftb@EqeListPrtsFmt\noexpand\eqe@hspannerMrg
+ \else
+ \noexpand\par\kern0pt\noindent
+ \ftb@OpenEqeListPrts\ftb@InsSpan
+ \fi
+ \else
+ \noexpand\begin{eqeList}%
+ {\noexpand\tb@mrgDigitFmt{%
+ \theeqquestionnoi\eqe@decPointMrg}}%
+ \fi
+ }%
+ \ifWithinANSGrp\global\ftb@isANSListOpentrue\fi
+ \ifWithinANSGrp
+ \expandafter\insMidMarg\expandafter
+ {\eqe@prehold#2\grpANSDelimiter}%
+ \else
+ \expandafter\insMidMarg%
+ \expandafter{\eqe@prehold#2\end{eqeList}}%
+ \global\ftb@isANSListOpenfalse
+ \fi
+ \fi % \ifismarginans
+ \fi %\ifisinstred
+}
+\newenvironment{eqeList}[2][\tb@woparts@len]{\begin{list}{#2}{%
+ \def\argi{#1}\setlength{\labelwidth}{#1}%
+ \ifx\argi\tb@wparts@len
+ \settowidth{\labelsep}{\eqe@prtsepMrg}\else
+ \settowidth{\labelsep}{\eqe@hspannerMrg}\fi
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
+ \setlength{\parskip}{0pt}\setlength{\partopsep}{0pt}%
+ \setlength{\topsep}{1pt}\setlength{\parsep}{0pt}%
+ \setlength{\itemindent}{0pt}\setlength{\itemsep}{3pt}%
+}\item\relax}{\end{list}}
+\newcommand{\mrgDigitFmt}[1]{\def\tb@mrgDigitFmt##1{#1}}
+\mrgDigitFmt{#1}
+\definecolor{MRGPARTcolor}{named}{black}
+\newcommand{\mrgPartFmt}[1]{\def\tb@mrgPartFmt##1{#1}}
+\mrgPartFmt{\textcolor{MRGPARTcolor}{(\hfil#1\hfil)}}
+\definecolor{ANScolor}{rgb}{0,0,.8}
+\newcommand{\ANSFmt}[2]{\textcolor{ANScolor}{#2}}
+\def\eqe@decPointPrb{.} % decimal point of prob number
+\def\eqe@prtsepPrb{\ } % prob with parts, space after part
+\def\eqe@hspannerPrb{\ } % space after prob number
+\providecommand{\prbDecPt}[1]{\def\eqe@decPointPrb{#1}}
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\prbNumPrtsep}[1]{\def\eqe@hspannerPrb{#1}}
+\def\eqedecPointSoln{.} % decimal point of prob number
+\def\eqe@prtsepSoln{\ } % prob with parts, space after part
+\def\eqe@hspannerSoln{\ } % space after prob number
+\newcommand{\solDecPt}[1]{\def\eqedecPointSoln{#1}}
+\newcommand{\solPrtsep}[1]{\def\eqe@prtsepSoln{#1}}
+\providecommand{\solNumPrtsep}[1]{\def\eqe@hspannerSoln{#1}}
+\def\eqe@decPointMrg{.} % decimal point of prob number
+\def\eqe@prtsepMrg{\ } % prob with parts, space after part
+\def\eqe@hspannerMrg{\ } % space after prob number
+\newcommand{\mrgDecPt}[1]{\def\eqe@decPointMrg{#1}}
+\newcommand{\mrgPrtsep}[1]{\def\eqe@prtsepMrg{#1}}
+\newcommand{\mrgNumPrtsep}[1]{\def\eqe@hspannerMrg{#1}}
+\newcommand{\setMarIndents}[3][\normalsize\normalfont]{{%
+ \settowidth{\@tempdima}{#1#2\eqe@decPointMrg}%
+ \xdef\tb@woparts@len{\the\@tempdima}%
+ \settowidth{\@tempdima}%
+ {#1#2\eqe@decPointMrg\eqe@hspannerMrg#3}%
+ \xdef\tb@wparts@len{\the\@tempdima}%
+ \settowidth{\@tempdima}{#1#3}%
+ \xdef\tbmrgpartwdth{\the\@tempdima}%
+}}
+\setMarIndents{00}{(d)}
+\newdimen\solnGutter
+\newcommand{\setSolnIndent}[3][\normalsize\normalfont\bfseries]{%
+ {\settowidth{\@tempdima}{#1#2\eqedecPointSoln\eqe@hspannerSoln}%
+ \global\solnGutter\@tempdima
+ \settowidth{\@tempdima}{#1#3}%
+ \xdef\tbsolnpartwdth{\the\@tempdima}%
+}}
+\setSolnIndent{00}{(d)}
+\renewcommand{\setSolnMargins}[1]{%
+ \ifdim\solnGutter=0pt \setlength\eqemargin{#1}\else
+ \setlength\eqemargin{\solnGutter}\fi}
+\newcommand{\defaultSolnIndent}{\global\solnGutter=0pt}
+\defaultSolnIndent
+\renewcommand{\exlabelformat}{%
+ \tbprbNumFmt{\theeqquestionnoi\eqe@decPointPrb}}
+\newcommand{\prbNumFmt}[1]{\def\tbprbNumFmt##1{#1\eqe@hspannerPrb}}
+\prbNumFmt{\textbf{#1}}
+\renewcommand{\exsllabelformat}{\string\tbsolWoPrtsFmt{%
+ \theeqquestionnoi\string\eqedecPointSoln}}
+\renewcommand{\exsllabelformatwp}{\string\tbsolWPrtsFmt%
+ {\string\eqedsplyOnlyFrst{\theeqquestionnoi}{\thepartno}}%
+ {\thepartno}%
+}
+\newcommand{\solWoPrtsFmt}[1]{\def\tbsolWoPrtsFmt##1{%
+ \makebox[0pt][r]{#1\eqe@hspannerSoln}}}
+\solWoPrtsFmt{\textbf{#1}}
+\newcommand{\solWPrtsFmt}[2]{\def\tbsolWPrtsFmt##1##2{%
+ \makebox[0pt][r]{#1\eqe@hspannerSoln}%
+ \makebox[\tbsolnpartwdth][l]{#2}\eqe@prtsepSoln%
+}}
+\solWPrtsFmt{\textbf{#1}}{(\hfil#2\hfil)}
+\newcommand{\solWPrtsFmt@hang}[2]{%
+ \def\tbsolWPrtsFmt##1##2{%
+ \makebox[0pt][r]{#1\eqe@prtsepSoln%
+ \makebox[\tbsolnpartwdth][l]{#2}\eqe@hspannerSoln}%
+}}
+\let\bpartsmrk\relax
+\let\epartsmrk\relax
+\newcommand{\hangSolWPrtsFmt}[2]{%
+ \def\prior@parts@hook{%
+ \ifisleadin\else
+ \writeToSolnFile{^^J\protect\bpartsmrk}\fi}%
+ \def\post@parts@hook{%
+ \writeToSolnFile{\protect\epartsmrk^^J}}%
+ \def\bpartsmrk{\global\firstitemtrue\begin{eqepartsquestions}}%
+ \def\epartsmrk{\end{eqepartsquestions}\global\firstitemfalse}%
+ \let\solWPrtsFmt\solWPrtsFmt@hang
+ \solWPrtsFmt{#1}{#2}%
+}
+\newif\ifexamenv \examenvfalse
+\newif\iffirstemit \firstemittrue
+\newtoks\txtbkt@ks \txtbkt@ks={}
+\newtoks\txtbkt@ksi \txtbkt@ksi={}
+\newbox\txtbkb@xb@t
+\newbox\txtbkb@xt@p
+\newbox\txtbkb@xh@ld
+\let\tbTopMargin\relax
+\let\tbBotMargin\relax
+\long\def\tb@addtoTopMargin#1{\txtbkt@ksi={#1}%
+ \edef\eqe@tmphold{\the\txtbkt@ksi\the\txtbkt@ks}%
+ \global\txtbkt@ks=\expandafter{\eqe@tmphold}%
+}
+\newcommand{\tb@addtoMargin}[1]{%
+ \edef\eqe@tmphold{\the\txtbkt@ks}%
+ \global\txtbkt@ks=\expandafter{\eqe@tmphold#1}%
+}
+\newcommand{\tb@showlsols}{\includecomment{lsol}\excludecomment{ssol}}
+\newcommand{\tb@showssols}{\includecomment{ssol}\excludecomment{lsol}}
+\let\tb@soln@choice\tb@showssols
+\newcommand{\clearTopMargin}{\global\let\tbTopMargin\relax}
+\newcommand{\setTopMargin}[1]{%
+ \gdef\tbTopMargin{\color@begingroup\normalcolor
+ #1\color@endgroup}%
+ \gdef\tbSaveTopMargin{\color@begingroup\normalcolor
+ #1\color@endgroup}}
+\let\tbTopMargin\@empty
+\let\tbSaveTopMargin\@empty
+\newcommand{\clearBotMargin}{\global\let\tbBotMargin\relax}
+\newcommand{\setBotMargin}[1]{\gdef\tbBotMargin{#1}%
+ \gdef\tbSaveBotMargin{#1}}
+\let\tbBotMargin\@empty
+\let\tbSaveBotMargin\@empty
+\newcommand{\restoreLastTopMargin}{\expandafter\setTopMargin
+ \expandafter{\tbSaveTopMargin}}
+\newcommand{\restoreLastBotMargin}{\expandafter\setBotMargin
+ \expandafter{\tbSaveBotMargin}}
+\newcommand{\MarParBoxFmt}{\normalsfcodes
+ \normalfont\normalsize\normalbaselines\parindent0pt
+ \vbadness\@Mi \hbadness5000 \tolerance9999
+ \parskip0pt\raggedright %\spaceskip=0pt\xspaceskip=0pt
+ \setlength{\linewidth}{\tbmarparboxwidth}%
+}
+\newlength\tbmarparboxwidth
+\setlength\tbmarparboxwidth{1sp}
+\definecolor{MidMargcolor}{rgb}{0,0,.8}
+\newcommand{\midMargFmt}[1]{%
+ \def\tb@midMargFmt{\normalfont\normalsize\normalcolor#1}}
+\midMargFmt{\color{MidMargcolor}}
+\def\eqe@MarParBox#1{\lower\footskip\hbox{%
+ \leavevmode\parbox[b][\textheight+\footskip][t]%
+ {\tbmarparboxwidth}{\tb@midMargFmt#1}}} %
+\newcommand{\insMidMarg}[1]{%
+ \let\eqe@margininsert\@empty
+ \expandafter\tb@addtoMargin\expandafter{\eqe@margininsert#1}%
+}
+\newcommand{\tbPreMarginHeader}{\par\penalty0 \kern3pt}
+\newcommand{\tbPostMarginHeader}{\par\nobreak}
+\definecolor{HEADERcolor}{named}{black}
+\newcommand{\cngMargHeadColorTo}[1]{\insMidMarg{\gdef\tb@MHC{#1}}}
+\newcommand{\resetMargHeadColor}{\insMidMarg{\gdef\tb@MHC{HEADERcolor}}}
+\resetMargHeadColor
+\newcommand{\tbMarginHeaderFmt}[1]{\textcolor{\tb@MHC}{\textbf{#1}}}
+\newcommand{\insMargHead}[2][]{% dps
+ \insMidMarg{\tb@marginHeader{#1}{#2}}}
+\newcommand{\insProbHead}[2][]{%
+ \def\tb@argi{#1}\ifx\tb@argi\@empty
+ \protected@xdef\currProbHead{#2 \tbcontinued}\else
+ \protected@xdef\currProbHead{#1}\fi
+ \ifisinstred\ifismarginans
+ \insMidMarg{\tb@marginProbHeader{#1}{#2}}\fi\fi
+}
+\newcommand{\tb@marginProbHeader}[2]{%
+ \def\tb@argi{#1}\ifx\tb@argi\@empty
+ \tb@marginHeader{#2 \tbcontinued}{#2}\else
+ \tb@marginHeader{#1}{#2}\fi
+}
+\newcommand{\tb@marginHeader}[2]{\tbPreMarginHeader
+ \tbMarginHeaderFmt{#2}\def\tb@argi{#1}\ifx\tb@argi\@empty
+ \mark{#2}\else\mark{#1}\fi\tbPostMarginHeader
+}
+\newcommand{\tbcontinued}{(cont.)}
+\newcommand{\marparboxwidth}[1]{%
+ \setlength\tbmarparboxwidth{#1}%
+ \setlength{\marginparwidth}{\tbmarparboxwidth}%
+ \tbMakeFinalCalcs
+}
+\@onlypreamble\marparboxwidth
+\newcommand{\chkmarginboxwidth}{%
+ \ifdim\tbmarparboxwidth=1sp \PackageError{eqexam}%
+ {You have not set the value of\MessageBreak
+ \string\marparboxwidth}%
+ {Define the \string\marparboxwidth\space command}\fi
+}
+\newif\ifmarginsonleft \marginsonleftfalse
+\newcommand{\tbSetupForMargins}{%
+ \ifmarginsonleft
+ \setlength{\oddsidemargin}{\tbmarparboxwidth+\marginparsep}%
+ \setlength{\evensidemargin}{\oddsidemargin}%
+ \setlength{\textwidth}{\paperwidth-2in-\oddsidemargin}%
+ \else
+ \setlength{\oddsidemargin}{0pt}%
+ \setlength{\evensidemargin}{\tbmarparboxwidth+\marginparsep}%
+ \setlength{\textwidth}{%
+ \paperwidth-2in-\oddsidemargin-\evensidemargin}%
+ \fi
+}
+\newcommand{\tbplaceMargins}{{%
+ \setlength{\@tempdima}{%
+ \paperheight-1in-\topmargin-\headheight-\headsep-\textheight}%
+ \xdef\@evenlly{\strip@pt\@tempdima}%
+ \xdef\@oddlly{\@evenlly}%
+ \setlength{\@tempdima}{1in}%
+ \xdef\@evenllx{\strip@pt\@tempdima}%
+ \ifmarginsonleft\else
+ \setlength{\@tempdima}{1in+\textwidth+\marginparsep}\fi
+ \xdef\@oddllx{\strip@pt\@tempdima}%
+}}
+\newcommand{\tbMakeFinalCalcs}{%
+ \tbSetupForMargins
+ \tbplaceMargins
+}
+\newlength\tbminskipbtnlayers
+\setlength{\tbminskipbtnlayers}{6pt}
+\newif\ifiscarryover \iscarryoverfalse
+\newenvironment{carryOverFmt}[1]{#1\let\tb@carryoverFmt\@empty
+ \c@rryoverFmt{#1}}{}
+\def\c@rryoverFmt#1{%
+ \ifx\tb@carryoverFmt\@empty
+ \global\let\tb@carryoverFmt\@empty
+ \xdef\tb@co@page{\thepage}%
+ \gdef\tb@carryoverFmt{\ifnum\thepage>\tb@co@page\relax
+ #1\global\let\tb@carryoverFmt\@empty\fi}%
+ \fi
+}
+\let\tb@carryoverFmt\@empty
+\let\tb@rest@reMarginFmt\relax
+\def\tb@insertCarryOver#1{%
+ \let\tb@rest@reMarginFmt\relax
+ \ifiscarryover\ifx\tb@carryoverFmt\@empty\else
+ \let\tb@rest@reMarginFmt\tb@midMargFmt
+ \tb@carryoverFmt\fi\fi
+ #1 \tb@rest@reMarginFmt
+}
+\newif\iftb@shipoutPermitted \tb@shipoutPermittedtrue
+\newcommand{\turnOnFTBShipout}{\global\tb@shipoutPermittedtrue}
+\newcommand{\turnOffFTBShipout}{\global\tb@shipoutPermittedfalse}
+\newcommand{\eqe@tb@shipout}{\iftb@shipoutPermitted
+ \ifnum\arabic{page}=\tblastpageshipped
+ \let\tb@so@next\relax\else
+ \xdef\tblastpageshipped{\arabic{page}}%
+ \def\tb@so@next{\eqe@tb@ship@ut}\fi
+ \expandafter\tb@so@next\fi
+}
+\def\tblastpageshipped{-100}
+\newcommand{\eqe@tb@ship@ut}{%
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \global\setbox\txtbkb@xb@t=\vbox\bgroup
+ \color@begingroup
+ \hsize=\tbmarparboxwidth
+ \vsize=\textheight
+ \MarParBoxFmt
+ \csname tbTopMargin\endcsname
+ \vskip\tbminskipbtnlayers
+\set@typeset@protect
+ \the\txtbkt@ks
+ \color@endgroup\vfil
+ \egroup
+ \global\setbox\txtbkb@xt@p=\vsplit\txtbkb@xb@t to\textheight
+ \ifvoid\txtbkb@xb@t\global\iscarryoverfalse
+ \else\global\iscarryovertrue\fi
+ \ifx\tbBotMargin\relax\else
+ \bgroup\setbox2=\vbox{%
+ \color@begingroup\normalcolor
+ \hsize=\tbmarparboxwidth\kern0pt
+ \MarParBoxFmt\csname tbBotMargin\endcsname
+ \color@endgroup
+ \kern0pt
+ }%
+ \dimen0=\textheight
+ \advance\dimen0-\ht\txtbkb@xh@ld
+ \advance\dimen0-\tbminskipbtnlayers
+ \setbox0=\vsplit\txtbkb@xt@p to \dimen0
+ \global\setbox\txtbkb@xb@t=\vbox{%
+ \unvbox\txtbkb@xt@p\unvbox\txtbkb@xb@t}%
+ \global\setbox\txtbkb@xt@p=\vbox{\unvbox0
+ \vfill\vskip\tbminskipbtnlayers
+ \vfil\unvbox2\relax}\egroup
+ \fi
+ \ifodd\value{page}%
+ \put(\@oddllx,\@oddlly){%
+ \eqe@MarParBox{\unvbox\txtbkb@xt@p}}\else
+ \put(\@evenllx,\@evenlly){%
+ \eqe@MarParBox{\unvbox\txtbkb@xt@p}}\fi
+ \global\txtbkt@ks={}\ifvoid\txtbkb@xb@t\else
+ \if!\splitbotmark!\global\let\tb@sbm@exp\relax\else
+ \xdef\tb@sbm@exp{\noexpand\tbPreMarginHeader
+ \noexpand\tbMarginHeaderFmt{\splitbotmark}%
+ \noexpand\tbPostMarginHeader
+ \noexpand\par\kern3pt}%
+ \fi
+ \global\txtbkt@ks=\expandafter{\tb@sbm@exp
+ \tb@insertCarryOver{\unvbox\txtbkb@xb@t}}%
+ \fi
+}
+\newcommand{\insertpageifcarryover}[1][\null]{%
+ \newpage
+ \ifiscarryover\def\eqeifnext{\csname iftrue\endcsname}%
+ \PackageInfo{eqexam}{Carry over of content in margin
+ from page \thepage.\MessageBreak Creating a blank page}\else
+ \def\eqeifnext{\csname iffalse\endcsname}\fi\eqeifnext#1\fi}
+\newcommand{\setFullWidthHeader}{%
+ \setlength{\@tempdima}{%
+ \evensidemargin+\tbmarparboxwidth+\marginparsep}%
+ \edef\@headoffset{\the\@tempdima}%
+ \def\@evenhead{\makebox[0pt]{\makebox[0pt][l]
+ {\thepage}\hspace{\@headoffset}}\hfil\slshape\leftmark}%
+ \ifmarginsonleft
+ \def\@oddhead{\makebox[0pt]{\makebox[0pt][l]
+ {\slshape\rightmark}\hspace{\@headoffset}}\hfil\thepage}%
+ \else
+ \def\@oddhead{{\slshape\rightmark}\hfil\makebox[0pt]
+ {\hspace{\@headoffset}\makebox[0pt][r]{\thepage}}}%
+ \fi
+}
+\newif\ifchapterexercises \chapterexercisesfalse
+\let\chaptersolutions\relax
+\def\tb@EndOfChapterExercises{%
+ \let\include@solutions@chapter\include@solutions
+ \def\includeexersolutions{%
+ \include@solutions@chapter
+ \global\let\include@solutions\relax
+ }%
+ \def\chaptersolutions{%
+ \includeexersolutions
+ \immediate\closeout\ex@solns
+ \newwrite \ex@solns \global\let\quiz@solns\ex@solns
+ \immediate\openout \ex@solns \jobname.sol
+ \ifvspacewithsolns\writeAllAnsAtEnd\fi
+ }%
+}
+\def\writeallsolutions{\let\chaptersolutions\relax}
+\excludecomment{afterChapSolns}
+\def\NewCommentCutFile{\def\CommentCutFile{solnsAtEnd.cut}}
+\def\RestoreCommentCutFile{\def\CommentCutFile{comment.cut}}
+\@ifundefined{BeforeIncludedComment}{%
+\long\def\solnsAtEndcomment
+ #1{\message{Special comment '#1'}%
+ \csarg\def{#1}{\endgroup \message{Processing '#1' comment.}%
+ \NewCommentCutFile\SetUpCutFile
+ % #2 before SetUp, so we can do renaming.
+ \message{Comment '#1' writing to \CommentCutFile.}%
+ \ProcessComment{#1}}%
+ \csarg\def{After#1Comment}{\immediate\closeout\CommentStream
+ \RestoreCommentCutFile\input{solnsAtEnd.cut}\relax}%
+ \CommentEndDef{#1}}
+}{\long\def\solnsAtEndcomment
+ #1{\message{Special comment '#1'}%
+ \csarg\def{After#1Comment}{\immediate\closeout\CommentStream
+ \RestoreCommentCutFile\input{solnsAtEnd.cut}\relax}%
+ \csarg\def{#1}{\NewCommentCutFile\BeforeIncludedComment\relax
+ \ProcessComment{#1}}%
+ \CommentEndDef{#1}}
+ }
+\solnsAtEndcomment{solnsAtEnd}
+\newcommand{\exercisesAtEndOfChapter}{%
+ \ifeq@nosolutions\else
+ \typeout{^^J!!!!!Executing in chapter solutions!!!!!^^J}
+ \chapterexercisestrue\tb@EndOfChapterExercises
+ \ifchapterexercises
+ \csarg\let{solnsAtEnd}\@gobble
+ \excludecomment{solnsAtEnd}%
+ \csarg\let{AftersolnsAtEndComment}\relax
+ \includecomment{afterChapSolns}\else
+ \excludecomment{afterChapSolns}\fi
+ \fi
+}
+\@onlypreamble\exercisesAtEndOfChapter
+\newcommand{\setFullWidthLayout}{%
+ \saveBasicLayoutParams
+ \setlength{\oddsidemargin}{0in}%
+ \setlength{\evensidemargin}{\oddsidemargin}%
+ \setlength{\textwidth}{\paperwidth-2in}%
+ \setlength{\linewidth}{\paperwidth-2in}%
+ \setlength{\columnseprule}{0pt}%
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+}
+\newenvironment{fullwidthtext}{%
+\begin{list}{}{%
+ \setlength{\labelwidth}{0pt}\setlength{\labelsep}{0pt}%
+ \setlength{\itemindent}{0pt}\setlength{\itemsep}{0pt}%
+ \setlength{\topsep}{0pt}\setlength{\parsep}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\leftmargin}{0pt}\setlength{\rightmargin}{0pt}
+}\item\relax}{\end{list}}
+\newcommand{\restorePageLayout}{\newpage
+ \setlength{\oddsidemargin}{\tb@osms}
+ \setlength\evensidemargin{\tb@esms}
+ \setlength{\textwidth}{\tb@tws}
+ \setlength{\linewidth}{\tb@lws}
+ \setlength{\columnseprule}{\tb@csr}
+}
+\newcommand{\saveBasicLayoutParams}{%
+ \xdef\tb@osms{\the\oddsidemargin}%
+ \xdef\tb@esms{\the\evensidemargin}%
+ \xdef\tb@tws{\the\textwidth}%
+ \xdef\tb@lws{\the\linewidth}%
+ \xdef\tb@csr{\the\columnseprule}%
+}
+\newcommand{\initChapAfterSolns}{\newpage
+ \clearTopMargin\clearBotMargin
+ \setFullWidthLayout
+}
+\newcommand{\restoreFromChapAfterSolns}{\newpage
+ \restorePageLayout\setFullWidthHeader
+}
+\eqequestopsep{0pt}
+\eqequesparsep{0pt}
+\eqequesitemsep{0pt}
+\eqequeslistparindent{0pt}
+\renewenvironment{eqequestions}{%
+ \begin{list}{}{%
+ \ifwithsoldoc\let\solnItemMngt\eqeSolnItemMngt\fi
+ \setlength{\labelwidth}{\eqemargin}%
+ \setlength{\parsep}{\eqeques@parsep}%
+ \setlength{\itemsep}{\eqeques@itemsep}
+ \setlength{\topsep}{\eqeques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\eqeques@listparindent}%dps%
+ \ifwithsoldoc\settowidth{\labelsep}{\eqe@hspannerSoln}\else
+ \settowidth{\labelsep}{\eqe@hspannerPrb}\fi
+ \setlength{\leftmargin}{\labelwidth}%
+ }\ifwithsoldoc\global\firstitemtrue\fi\item\relax}{\end{list}}
+\newcommand{\eqepquestopsep}[1]{\def\eqepques@topsep{#1}}
+\newcommand{\eqepquesparsep}[1]{\def\eqepques@parsep{#1}}
+\newcommand{\eqepquesitemsep}[1]{\def\eqepques@itemsep{#1}}
+\eqepquestopsep{\eqeques@itemsep}
+\eqepquesparsep{\eqeques@parsep}
+\eqepquesitemsep{\eqeques@itemsep}
+\newenvironment{eqepartsquestions}{%
+ \begin{list}{}{%
+ \settowidth{\labelwidth}{\eqe@prtsepSoln\hspace{\tbsolnpartwdth}}
+ \setlength{\parsep}{\eqepques@parsep}%
+ \setlength{\itemsep}{\eqepques@itemsep}%
+ \setlength{\topsep}{\eqepques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \settowidth{\labelsep}{\eqe@hspannerSoln}
+ \setlength{\leftmargin}{\labelwidth}%
+ }\item\relax}{\end{list}}
+\long\def\gobbletoEndEXt#1\endeqEXt{\@gobbletwo}
+\def\eqExtArg{\theeqquestionnoi}
+\if\load@exerquiz\eqe@NO\DoNotFitItIn\fi
+\let\fillInFormatDefault\@empty
+\def\exerSolnsHeadnToc{}
+\renewcommand{\exerSolnInput}{%
+ \let\webnewpage\relax
+ \ifsolutionsonly\else\immediate\closeout\ex@solns\fi
+ \ifeq@nosolutions\else\newpage % 2012-03-14
+ \iftherearesolutions\eq@solutionshook\eqsolutionshook
+ \ifsolutionsonly\else\newpage\eq@solutionshook
+ \eqsolutionshook\fi
+ \ifx\webnewpage\relax
+ \def\webnewpage{\let\webnewpage\newpage}%
+ \fi
+ \priorexsectitle\exerSolnsHeadnToc\priorexslinput
+ \InputIfFileExists{\jobname.sol}{}{\PackageWarning{exerquiz}
+ {!!! Solutions to exercises not found}}%
+ \fi
+ \fi
+}
+\setcounter{partno}{1}\edef\firstPartLtr{\thepartno}
+\newif\iffrstProbNumShown\frstProbNumShownfalse
+\def\tb@insertDecPoint{\ifwithsoldoc\eqedecPointSoln\else
+ \eqe@decPointMrg\fi}
+\newcommand{\eqedsplyOnlyFrst}[2]{\def\thisPart{#2}%
+ \ifx\thisPart\firstPartLtr\global\frstProbNumShowntrue
+ \tb@mrgDigitFmt{#1}\tb@insertDecPoint\else
+ \iffrstProbNumShown\tb@GenProbNum{#1}\else
+ \global\frstProbNumShowntrue\tb@mrgDigitFmt{#1}%
+ \tb@insertDecPoint\fi\fi\global\eqeGenProbNumfalse
+}
+\newif\ifeqeGenProbNum \eqeGenProbNumfalse
+\newcommand{\displayProbNumOnce}{\global\eqeGenProbNumtrue} %
+\def\tb@GenProbNum#1{\ifeqeGenProbNum#1\tb@insertDecPoint\else
+ \phantom{#1\tb@insertDecPoint}\fi}%
+\def\sq@priorhook{\medskip}
+\def\default@fvsizeskip{.1}
+\aboveexskip{0pt}
+\belowexskip{0pt}
+\renewcommand\belowexsolnskip{{}}
+\renewcommand\exerSolnHeader[3]{%
+ \ifeqforpaper\else\webnewpage\fi%\par
+ \noindent\@ifundefined{hypertarget}
+ {#3}{\hypertarget{#2}{#3}\relax}\solnhspace
+}
+\def\nNumberOfP@rts{0}
+\renewcommand{\preExamSolnHead}{\medbreak\noindent}
+\renewcommand{\examSolnHeadFmt}[1]{\textbf{#1}}
+\renewcommand{\postExamSolnHead}{\smallskip}
+\newcommand{\wrtChapSolnHead}[1]{%
+ \writeToSolnFile{%
+ \protect\preChapSolnHead
+ \protect\chapHeadSolnFmt{\protect\ftbFmtChapter{\thechapter}#1}%
+ \protect\postChapSolnHead
+}}
+\newcommand{\preChapSolnHead}{\bigbreak\noindent}
+\newcommand{\chapHeadSolnFmt}[1]{{\large\textbf{#1}}}
+\newcommand{\postChapSolnHead}{\medbreak}
+\newcommand{\ftbFmtChapter}[1]{\chaptername\space#1.\space\ignorespaces}
+\newcommand{\convertChapHeadToChapters}{%
+ \let\preChapSolnHead\relax
+ \let\chapHeadSolnFmt\chapter
+ \let\ftbFmtChapter\@gobble
+ \let\postChapSolnHead\relax
+}
+\newcommand{\probSet}[1]{Problem Set #1}
+\newcommand{\annotPage}{\protect\annotThePage{\thepage}}
+\newcommand{\annotThePage}[1]{\space(page\protect~#1)}
+\def\noProbHeader{NPH}
+\newenvironment{probset}[2][\probSet{\thesection}]{%
+ \exam[#2]{\autoExamName}\ifx#1\noProbHeader\else
+ \protected@edef\ftb@tmp@exp{\noexpand\insProbHead{#1}}%
+ \ftb@tmp@exp\fi}{\endexam}
+\newcounter{exampleno}[section]
+\renewcommand{\theexampleno}{\arabic{section}.\arabic{exampleno}}
+\newcommand{\examplenoname}{Example}
+\newenvironment{example}{%\medskip
+ \belowexskip{\medskipamount}\aboveexskip{\medskipamount}%
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{}%
+ \renewcommand\exlabel{Example}%
+ \renewcommand\exlabelformat{\textbf{\exlabel~\theexampleno.}}%
+ \let\eq@fititin\eqfititin
+ \renewcommand\exrtnlabelformat{$\square$}%
+ \def\eqexheader@wrapper{\eqexheader}%
+ \SolutionsAfter
+ \begin{exercise}[exampleno]}{\end{exercise}}
+\newenvironment{example*}{%\medskip
+ \belowexskip{\medskipamount}\aboveexskip{\medskipamount}%
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{}%
+ \renewcommand\exlabel{Example}%
+ \renewcommand\exlabelformat{\textbf{\exlabel~\theexampleno.}}%
+ \let\eq@fititin\eqfititin
+ \renewcommand\exrtnlabelformat{$\square$}%
+ \def\eqexheader@wrapper{\eqexheader}%
+ \SolutionsAfter
+ \begin{exercise*}[exampleno]}{\end{exercise*}}
+\setDefaultfvsizeskip{.1}
+\nbaselineskip{4}
+\newcommand{\ftbInputBookAux}[1]{%
+ \filename@parse{#1}\@ifundefined{filename@ext}%
+ {\def\filename@ext{tex}}{}%
+ \xdef\tbBaseName{\filename@base}%
+ \xdef\tbSourceFile{\filename@base.\filename@ext}%
+ \let\save@writefile\@writefile
+ \let\@writefile\@gobbletwo
+ \let\save@setckpt\@setckpt
+ \let\@setckpt\@gobbletwo
+ \makeatletter
+ \InputIfFileExists{\tbBaseName.aux}{%
+ \PackageInfo{eqexam}
+ {Inputting auxiliary files of\MessageBreak\tbSourceFile}%
+ }{%
+ \PackageError{eqexam}
+ {Auxiliary files for \tbSourceFile\space were not found}
+ {Compile the source file \tbSourceFile\space
+ three times\MessageBreak%
+ to create the required auxiliary files.}%
+ }%
+ \makeatother
+ \global\let\ftblabel\label
+ \let\label\@gobble
+ \let\@writefile\save@writefile
+ \let\@setckpt\save@setckpt
+}
+\@onlypreamble\ftbInputBookAux
+\newcommand{\restorelabel}{\global\let\label\ftblabel}
+\newcommand{\gobblelabel}{\let\label\@gobble}
+\newcommand{\ftbInputSolnFiles}[1][\tbBaseName.sol]{%
+ \filename@parse{#1}\@ifundefined{filename@ext}%
+ {\def\filename@ext{sol}}{}%
+ \xdef\tbBaseName{\filename@base}%
+ \xdef\tbSourceFile{\filename@base.\filename@ext}%
+ \InputIfFileExists{\tbBaseName.sol}{%
+ \PackageInfo{eqexam}
+ {Inputting solutions file \tbBaseName.sol\MessageBreak}%
+ }{%
+ \PackageError{eqexam}
+ {Solutions file for \tbSourceFile\space was not found}%
+ {Compile the source files three times}%
+ }%
+}
+\endinput
+%%
+%% End of file `eqtextb.def'.
diff --git a/texmf-dist/tex/latex/eqexam/fortextbook.sty b/texmf-dist/tex/latex/eqexam/fortextbook.sty
new file mode 100644
index 00000000..fcd541a9
--- /dev/null
+++ b/texmf-dist/tex/latex/eqexam/fortextbook.sty
@@ -0,0 +1,31 @@
+%%
+%% This is file `fortextbook.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,ftbsty')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2017 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License 1.2 %%
+%% 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{fortextbook}
+ [2012/03/14 v1.0 A fortextbook Package (dps)]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eqexam}}
+\ProcessOptions
+\RequirePackage[%
+ ftbsolns,fortextbook,usecustomdesign,
+ forcolorpaper,noseparationrule,usexkv
+]{eqexam}
+\endinput
+%%
+%% End of file `fortextbook.sty'.
diff --git a/tlpkg/tlpsrc/eqexam.tlpsrc b/tlpkg/tlpsrc/eqexam.tlpsrc
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tlpkg/tlpsrc/eqexam.tlpsrc