<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>books/ps/v104quaternioncategoryfunctions2.ps</filename>
    </added>
    <added>
      <filename>books/ps/v71july2009.eps</filename>
    </added>
    <added>
      <filename>src/input/spline.input.pamphlet</filename>
    </added>
    <added>
      <filename>src/input/tpiezas001.input.pamphlet</filename>
    </added>
    <added>
      <filename>src/input/tpiezas002.input.pamphlet</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -8,7 +8,7 @@
 \end{abstract}
 \eject
 \tableofcontents
-\eject
+\newpage
 \section{General Makefile Structure}
 
 Makefiles are responsible for four things. First, they have to set up
@@ -23,8 +23,75 @@ The clean stanza has been modified to be more effective. Previously
 it walked the Makefile hierarchy trying to clean subdirectories. This
 method often fails for various reasons (e.g. permissions, incomplete
 builds, etc). Now we simply remove the created files directly.
-\eject
+\newpage
+
 \subsection{The Top Level Makefile}
+We have added a stanza to separate the build of documents from the build
+of source files. As much as possible we would like to do the document
+builds in parallel with the source builds. We kick off a make for the
+documents in the background and then kick off a make in the foreground
+for the source code. This is independent of using make in parallel and
+instead uses the shell to fork the processes. We have not had much luck
+getting make to build in parallel reliably.
+
+&lt;&lt;parallel&gt;&gt;=
+parallel: noweb ${MNT}/${SYS}/bin/document
+	@ echo p1 making a parallel system build
+	@ echo 1 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART}
+	@ echo 2 Environment ${ENV}
+	@ ${TANGLE} -t8 -RMakefile.${SYS} Makefile.pamphlet &gt;Makefile.${SYS}
+	@ ${DOCUMENT} Makefile
+	@ mkdir -p ${MNT}/${SYS}/doc/src
+	@ cp Makefile.dvi ${MNT}/${SYS}/doc/src/root.Makefile.dvi
+	@ echo p2 starting parallel make of books
+	@ echo p3 ${SPD}/books/Makefile from ${SPD}/books/Makefile.pamphlet
+	@ ( cd ${SPD}/books ; \
+           ${DOCUMENT} ${NOISE} Makefile ; \
+           cp Makefile.dvi ${MNT}/${SYS}/doc/src/books.Makefile.dvi ; \
+	   ${ENV} ${MAKE} &amp; )
+	@ echo p4 starting parallel make of input documents
+	@ ${ENV} ${MAKE} parallelinput ${NOISE} &amp;
+	@ echo p5 starting parallel make of xhtml documents
+	@ ${ENV} ${MAKE} parallelxhtml ${NOISE} &amp;
+	@ echo p6 starting parallel make of help
+	@ ${ENV} $(MAKE) parallelhelp ${NOISE} &amp;
+	@ echo p7 starting parallel make of src
+	@ ${ENV} $(MAKE) -f Makefile.${SYS} 
+	@ echo 3 finished system build on `date` | tee &gt;lastBuildDate
+
+parallelhelp:
+	@ echo p8 parallel making of help files
+	@ ( mkdir -p ${MNT}/${SYS}/doc/spadhelp ; \
+	    mkdir -p ${INT}/input ; \
+	    cd ${SRC}/algebra ; \
+	    ${TANGLE} -t8 Makefile.pamphlet &gt;Makefile.help ; \
+	    ${ENV} $(MAKE) -f Makefile.help parallelhelp )
+
+parallelinput:
+	@ echo p9 parallel making input documents
+	@ ( mkdir -p ${MNT}/${SYS}/doc/src/input ; \
+            cd ${MNT}/${SYS}/doc/src/input ; \
+	    cp ${SRC}/scripts/tex/axiom.sty . ; \
+	    for i in `ls ${SRC}/input/*.input.pamphlet` ; \
+              do latex $$i ; \
+              done ; \
+	     rm -f *~ ; \
+	     rm -f *.pamphlet~ ; \
+	     rm -f *.log ; \
+	     rm -f *.tex ; \
+	     rm -f *.toc ; \
+	     rm -f *.aux )
+
+parallelxhtml:
+	@ echo p10 parallel making xhtml pages
+	@mkdir -p ${MNT}/${SYS}/doc/hypertex/bitmaps
+	@(cd ${MNT}/${SYS}/doc/hypertex ; \
+	  ${TANGLE} -t8 ${SPD}/books/bookvol11.pamphlet &gt;Makefile11 ; \
+	  ${ENV} ${MAKE} -j 10 -f Makefile11 ; \
+	  rm -f Makefile11 )
+
+@
+
 &lt;&lt;*&gt;&gt;=
 &lt;&lt;environment&gt;&gt;
 all: noweb ${MNT}/${SYS}/bin/document
@@ -39,6 +106,7 @@ all: noweb ${MNT}/${SYS}/bin/document
 
 start: noweb ${MNT}/${SYS}/bin/document
 
+&lt;&lt;parallel&gt;&gt;
 &lt;&lt;book&gt;&gt;
 &lt;&lt;noweb&gt;&gt;
 &lt;&lt;literate commands&gt;&gt;
@@ -292,7 +360,7 @@ The DOCUMENT variable is now set to replace the direct call
 to the document command. This will allow it to be
 changed on the command line.
 &lt;&lt;environment&gt;&gt;=
-VERSION=&quot;Axiom (May 2009)&quot;
+VERSION=&quot;Axiom (July 2009)&quot;
 SPD=$(shell pwd)
 SYS=$(notdir $(AXIOM))
 SPAD=${SPD}/mnt/${SYS}
@@ -2961,7 +3029,7 @@ all: rootdirs noweb srcsetup lspdir srcdir
 &lt;&lt;clean&gt;&gt;
 
 @
-\eject
+\newpage
 \begin{thebibliography}{99}
 \bibitem{1} CMUCL {\bf http://www.cons.org/cmucl}
 \bibitem{2} GCL {\bf http://savannah.gnu.org/projects/gcl}</diff>
      <filename>Makefile.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -31,6 +31,12 @@
 \newcommand{\pagefrom}[2]{% e.g. \pagefrom{name}{abb}
 \ \\${\bf\Leftarrow{}}${``#1''} (#2) \ref{#1} on page~\pageref{#1}}
 %%
+%% We need to use a dagger to mark footnotes because numbers can be
+%% mistaken as superscripts
+\renewcommand{\thefootnote}{\fnsymbol{footnote}}
+%% Before each footnote we explicitly set the counter to 1 so that
+%% when it increments it prints a dagger
+\setcounter{footnote}{1}
 % special meanings for math characters
 \providecommand{\N}{\mbox{\bbold N}}
 \providecommand{\Natural}{\mbox{\bbold N}}
@@ -2408,6 +2414,5168 @@ Analysis or LSA. Although the domain is different, the concepts
 are the same. We are trying to predict patterns of how words occur 
 in documents instead of trying to predict patterns of how players 
 score on holes.
+\chapter{Quaternions}
+\begin{center}
+\bigskip
+\large Peter Guthrie Tait, Robert S. Sutor, Timothy Daly
+
+\end{center}
+\section*{Preface}
+\addcontentsline{toc}{section}{Preface}
+The Theory of Quaternions is due to Sir William Rowan Hamilton,
+Royal Astronomer of Ireland, who presented his first paper on the
+subject to the Royal Irish Academy in 1843. His Lectures on
+Quaternions were published in 1853, and his Elements, in 1866,
+shortly after his death. The Elements of Quaternions by Tait\cite{33} is
+the accepted text-book for advanced students.
+
+Large portions of this file are derived from a public domain version
+of Tait's book combined with the algebra available in Axiom.
+The purpose is to develop a tutorial introduction to the Axiom
+domain and its uses.
+\newpage
+
+\section{Quaternions}
+
+\section{Vectors, and their Composition}
+
+{\bf 1}. For at least two centuries the geometrical representation 
+of the negative and imaginary algebraic quantities, $-1$ and $\sqrt{-1}$
+has been a favourite subject of speculation with mathematicians. 
+The essence of almost all of the proposed processes consists in 
+employing such expressions to indicate the DIRECTION, not the 
+{\sl length}, of lines. 
+
+{\bf 2}. Thus it was long ago seen that if positive quantities were 
+measured off in one direction along a fixed line, a useful and lawful 
+convention enabled us to express negative quantities of the same 
+kind by simply laying them off on the same line in the opposite 
+direction. This convention is an essential part of the Cartesian 
+method, and is constantly employed in Analytical Geometry and 
+Applied Mathematics. 
+
+{\bf 3}. Wallis, towards the end of the seventeenth century, proposed 
+to represent the impossible roots of a quadratic equation by going 
+{\sl out} of the line on which, if real, they would have been laid off. 
+This construction is equivalent to the consideration of $\sqrt{-1}$ as a 
+directed unit-line perpendicular to that on which real quantities 
+are measured. 
+
+{\bf 4}. In the usual notation of Analytical Geometry of two 
+dimensions, when rectangular axes are employed, this amounts 
+to reckoning each unit of length along $Oy$ as $+\sqrt{-1}$, and on 
+$Oy^{'}$ as $-\sqrt{-1}$ ; while on $Ox$ each unit is $+1$, and on 
+$Ox$ it is $-1$. 
+
+If we look at these four lines in circular order, i.e. in the order of 
+positive rotation (that of the northern hemisphere of the earth 
+about its axis, or {\sl opposite} to that of the hands of a watch), they 
+give 
+$$ 1, \sqrt{-1}, -1, -\sqrt{-1}$$
+
+\boxed{4.6in}{
+\vskip 0.1cm
+In Axiom the same elements would be written as complex numbers
+which are constructed using the function {\bf complex}:
+\spadcommand{complex(1,0)}
+$$1$$
+\returnType{Type: Complex Integer}
+}
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{complex(0,1)}
+$$\%i$$
+\returnType{Type: Complex Integer}
+}
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{complex(-1,0)}
+$$-1$$
+\returnType{Type: Complex Integer}
+}
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{complex(0,-1)}
+$$-i$$
+\returnType{Type: Complex Integer}
+}
+\boxed{4.6in}{
+\vskip 0.1cm
+Note that \%i is of type Complex(Integer), that is, the imaginary
+part of a complex number. The apparently equivalent expression
+\spadcommand{sqrt(-1)}
+$$\sqrt{-1}$$
+\returnType{Type: AlgebraicNumber}
+has the type AlgebraicNumber which means that it is the root of
+a polynomial with rational coefficients.\\
+}
+
+In this series each expression is derived from that which precedes 
+it by multiplication by the factor $\sqrt{-1}$. Hence we may consider 
+$\sqrt{-1}$ as an operator, analogous to a handle perpendicular to the 
+plane of $xy$, whose effect on any line in that plane is to make it 
+rotate (positively) about the origin through an angle of $90^{\circ}$. 
+
+\boxed{4.6in}{
+\vskip 0.1cm
+In Axiom 
+\spadcommand{\%i*\%i}
+$$-1$$
+\returnType{Type: Complex Integer}
+}
+
+{\bf 5}. In such a system, (which seems to have been first developed, 
+in 1805, by Bu\'ee) a point in the plane of reference is defined by a 
+single imaginary expression. Thus $a + b\sqrt{-1}$ may be considered 
+as a single quantity, denoting the point, $P$, whose coordinates are 
+$a$ and $b$. Or, it may be used as an expression for the line $OP$ 
+joining that point with the origin. In the latter sense, the expression 
+$a + b\sqrt{-1}$ implicitly contains the {\sl direction}, as well as the 
+{\sl length}, of this line ; since, as we see at once, the direction is 
+inclined at an angle $\tan^{-1}(b/a)$ to the axis of $x$, 
+and the length is $\sqrt{a^2+b^2}$. Thus, say we have 
+$$OP = a + b\sqrt{-1}$$
+the line $OP$ considered as that by which we pass from one 
+extremity, $O$, to the other, $P$. In this sense it is called a VECTOR. 
+Considering, in the plane, any other vector, 
+$$OQ = a^{'}+b^{'}\sqrt{-1}$$
+
+\boxed{4.6in}{
+\vskip 0.1cm
+In order to created superscripted variables we use the superscript
+function from the SYMBOL domain. So we can create $a^{'}$ as ``ap''
+(that is, ``a-prime'') and $b^{'}$ as ``bp'' (``b-prime'') thus
+(also note that the underscore character is Axiom's escape character
+which removes any special meaning of the next character, in this case,
+the quote character):
+\spadcommand{ap:=superscript(a,[\_'])}
+$$a^{'}$$
+\returnType{Type: Symbol}
+}
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{bp:=superscript(b,[\_'])}
+$$b^{'}$$
+\returnType{Type: Symbol}
+}
+\boxed{4.6in}{
+\vskip 0.1cm
+at this point we can type
+\spadcommand{ap+bp*\%i}
+$$a^{'}+b^{'}\ \%i$$
+\returnType{Type: Complex Polynomial Integer}
+}
+
+the addition of these two lines obviously gives 
+$$OR = a + a^{'} + (b + b^{'})\sqrt{-1}$$
+
+\boxed{4.6in}{
+\vskip 0.1cm
+In Axiom the computation looks like:
+\spadcommand{op:=complex(a,b)}
+$$a + b\ \%i$$
+\returnType{Type: Complex Polynomial Integer}
+}
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{oq:=complex(ap,bp)}
+$$a^{'} + b^{'}\ \%i$$
+\returnType{Type: Complex Polynomial Integer}
+}
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{op + oq}
+$$a + a^{'} + (b + b^{'})\%i$$
+\returnType{Type: Complex Polynomial Integer}
+}
+
+and we see that the sum is the diagonal of the parallelogram on 
+$OP$, $OQ$. This is the law of the composition of simultaneous 
+velocities; and it contains, of course, the law of subtraction of one 
+directed line from another. 
+
+{\bf 6}. Operating on the first of these symbols by the factor $\sqrt{-1}$,
+it becomes $- b + a\sqrt{-1}$; and now, of course, denotes the point 
+whose $x$ and $y$ coordinates are $- b$ and $a$; or the line joining this 
+point with the origin. The length is still $\sqrt{a^2+b^2}$, but the angle 
+the line makes with the axis of $x$ is $\tan^{-1}(- a/b)$; which is 
+evidently greater by $\pi/2$ than before the operation. 
+
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{op*complex(0,1)}
+$$-b+a\ i$$
+\returnType{Type: Complex Polynomial Integer}
+}
+
+{\bf 7}. De Moivre's Theorem tends to lead us still further in the 
+same direction. In fact, it is easy to see that if we use, instead 
+of $\sqrt{-1}$, the more general factor $\cos \alpha + \sqrt{-1} \sin \alpha$, 
+its effect on 
+any line is to turn it through the (positive) angle $\alpha$. in the plane 
+of $x$, $y$. [Of course the former factor, $\sqrt{-1}$, is merely the 
+particular case of this, when $\alpha=\frac{\pi}{2}$].
+
+Thus 
+$$
+\begin{array}{ll}
+  &amp;(\cos \alpha + \sqrt{-1} \sin \alpha) (a + b \sqrt{-1})\\
+= &amp; a \cos \alpha - b \sin \alpha + \sqrt{-1} (a \sin \alpha + b \cos \alpha)
+\end{array}
+$$
+
+by direct multiplication. The reader will at once see that the new 
+form indicates that a rotation through an angle $\alpha$ has taken place, 
+if he compares it with the common formulae for turning the coordinate 
+axes through a given angle. Or, in a less simple manner, thus 
+
+$$
+\begin{array}{rcl}
+Length &amp; = &amp; \sqrt{(a \cos \alpha - b \sin \alpha)^2 +
+                   (a \sin \alpha + b \cos \alpha)^2} \\
+       &amp; = &amp; \sqrt{a^2 + b^2}
+\end{array}
+$$
+as before. 
+
+Inclination to axis of $x$
+$$
+\begin{array}{cl}
+= &amp; \tan^{-1}{\frac{a \sin \alpha + b \cos \alpha}
+                   {a \cos \alpha - b \sin \alpha}}\\
+= &amp; \tan^{-1}{\frac{\tan \alpha + \frac{b}{a}}
+                   {1 - \frac{b}{a} \tan \alpha}}\\
+= &amp; \alpha + \tan^{-1}{\frac{b}{a}}
+\end{array}
+$$
+
+{\bf 8}. We see now, as it were, why it happens that 
+
+$$(\cos \alpha + \sqrt{-1} \sin \alpha)^m = 
+\cos m\alpha + \sqrt{-1} \sin m\alpha
+$$ 
+
+In fact, the first operator produces $m$ successive rotations in the 
+same direction, each through the angle $\alpha$ ; the second, a single 
+rotation through the angle $m\alpha$. 
+
+{\bf 9}. It may be interesting, at this stage, to anticipate so far as to 
+remark that in the theory of Quaternions the analogue of 
+
+$$
+\begin{array}{lclr}
+               &amp; \textrm{     } &amp; \cos \theta + \sqrt{-1} \sin \theta &amp;\\
+\textrm{is}    &amp; \textrm{     } &amp; \cos \theta + \omega \sin \theta   &amp;\\
+\textrm{where} &amp; \textrm{     } &amp; \omega^2 = -1                      &amp; \\
+\end{array}
+$$
+
+Here, however, $\omega$ is not the algebraic $\sqrt{-1}$, but is 
+{\sl any directed unit-line} whatever in space. 
+
+{\bf 10}. In the present century Argand, Warren, Mourey, and 
+others, extended the results of Wallis and Bu\'ee. They attempted 
+to express as a line the product of two lines each represented by a 
+symbol such $a+b\sqrt{-1}$. To a certain extent they succeeded, 
+but all their results remained confined to two dimensions. 
+
+The product, $\prod$, of two such lines was defined as the fourth 
+proportional to unity and the two lines, thus 
+
+$$
+\begin{array}{lclr}
+               &amp; \textrm{     } &amp; 
+1 : a+b\sqrt{-1} :: a^{'}+b^{'}\sqrt{-1} : \prod\\
+\textrm{or}    &amp; \textrm{     } &amp; 
+\prod = (aa^{'} - bb^{'})+(a^{'}b+b^{'}a)\sqrt{-1}
+\end{array}
+$$
+
+The length of $\prod$ is obviously the product of the lengths of the 
+factor lines; and its direction makes an angle with the axis of $x$ 
+which is the sum of those made by the factor lines. From this 
+result the quotient of two such lines follows immediately. 
+
+{\bf 11}. A very curious speculation, due to Servois and published 
+in 1813 in Gergonne's {\sl Annales}, is one of the very few, so far as has 
+been discovered, in which a well-founded guess at a possible mode 
+of extension to three dimensions is contained. Endeavouring to 
+extend to {\sl space} the form $a+b\sqrt{-1}$ for the plane, he is guided by 
+analogy to write for a directed unit-line in space the form 
+
+$$p \cos \alpha + q \cos \beta + r \cos \gamma$$
+
+where $\alpha$, $\beta$, $\gamma$ 
+are its inclinations to the three axes. He perceives 
+easily that $p$, $q$, $r$ must be {\sl non-reals}: 
+but, he asks, ``seraient-elles 
+{\sl imaginaires} r\'eductibles \`a la forme g\'en\'erale $A+B\sqrt{-1}$?'' 
+The $i$,$j$, $k$ of the Quaternion Calculus furnish an answer to this 
+question. (See Chap. II.) But it may be remarked that, in applying the 
+idea to lines in a plane, a vector $OP$ will no longer be represented 
+(as in \S 5) by 
+$$
+\begin{array}{lclr}
+                            &amp; \textrm{   OP} &amp; = &amp; a + b\sqrt{-1}\\
+\textrm{but by}             &amp; \textrm{   OP} &amp; = &amp; pa + qb\\
+\textrm{And if, similarly,} &amp; \textrm{   OQ} &amp; = &amp; pa^{'} + qb^{'}\\
+\end{array}
+$$
+
+the addition of these two lines gives for $OR$ (which retains its 
+previous signification) 
+$$OR = p(a+a^{'} + q(b+b^{'})$$
+
+{\bf 12}. Beyond this, few attempts were made, or at least recorded, 
+in earlier times, to extend the principle to space of three dimensions; 
+and, though many such had been made before 1843, none, 
+with the single exception of Hamilton's, have resulted in simple, 
+practical methods; all, however ingenious, seeming to lead almost 
+at once to processes and results of fearful complexity. 
+
+For a lucid, complete, and most impartial statement of the 
+claims of his predecessors in this field we refer to the Preface to 
+Hamilton's {\sl Lectures on Quaternions}. He there shows how his long 
+protracted investigations of Sets culminated in this unique system 
+of tridimensional-space geometry. 
+
+{\bf 13}. It was reserved for Hamilton to discover the use and 
+properties of a class of symbols which, though all in a certain sense 
+square roots of -1, may be considered as {\sl real} unit lines, tied down 
+to no particular direction in space ; the expression for a vector is, 
+or may be taken to be, 
+$$ \rho = ix + jy + kz$$
+
+but such vector is considered in connection with an {\sl extraspatial}
+magnitude $w$, and we have thus the notion of a QUATERNION 
+
+$$w + \rho$$
+
+This is the fundamental notion in the singularly elegant, and 
+enormously powerful, Calculus of Quaternions. 
+
+While the schemes for using the algebraic $\sqrt{-1}$ to indicate 
+direction make one direction in space expressible by real numbers, 
+the remainder being imaginaries of some kind, and thus lead to 
+expressions which are heterogeneous ; Hamilton s system makes all 
+directions in space equally imaginary, or rather equally real, thereby 
+ensuring to his Calculus the power of dealing with space 
+indifferently in all directions. 
+
+In fact, as we shall see, the Quaternion method is independent 
+of axes or any supposed directions in space, and takes its reference 
+lines solely from the problem it is applied to. 
+
+{\bf 14}. But, for the purpose of elementary exposition, it is best 
+to begin by assimilating it as closely as we can to the ordinary 
+Cartesian methods of Geometry of Three Dimensions, with which 
+the student is supposed to be, to some extent at least, acquainted. 
+Such assistance, it will be found, can (as a rule) soon be dispensed 
+with; and Hamilton regarded any apparent necessity for an oc 
+casional recurrence to it, in higher applications, as an indication 
+of imperfect development in the proper methods of the new 
+Calculus. 
+
+We commence, therefore, with some very elementary geometrical 
+ideas, relating to the theory of vectors in space. It will subsequently 
+appear how we are thus led to the notion of a Quaternion. 
+
+{\bf 15}. Suppose we have two points $A$ and $B$ in {\sl space}, and suppose 
+$A$ given, on how many numbers does $B$'s relative position depend ? 
+
+If we refer to Cartesian coordinates (rectangular or not) we find 
+that the data required are the excesses of $B$'s three coordinates 
+over those of $A$. Hence three numbers are required. 
+
+Or we may take polar coordinates. To define the moon's 
+position with respect to the earth we must have its Geocentric 
+Latitude and Longitude, or its Right Ascension and Declination, 
+and, in addition, its distance or radius-vector. {\sl Three} again. 
+
+{\bf 16}. Here it is to be carefully noticed that nothing has been 
+said of the {\sl actual} coordinates of either A or B, or of the earth 
+and moon, in space; it is only the {\sl relative} coordinates that are 
+contemplated. 
+
+Hence any expression, as $\overline{AB}$, denoting a line considered with 
+reference to direction and currency as well as length, (whatever 
+may be its actual position in space) contains implicitly {\sl three}
+numbers, and all lines parallel and equal to $AB$, and concurrent 
+with it, depend in the same way upon the same three. Hence, {\sl all 
+lines which are equal, parallel, and concurrent, may be represented 
+by a common symbol, and that symbol contains three distinct numbers}. 
+In this sense a line is called a VECTOR, since by it we pass from 
+the one extremity, $A$, to the other, $B$, and it may thus be 
+considered as an instrument which {\sl carries} $A$ to $B$: so that a 
+vector may be employed to indicate a definite {\sl translation} in space. 
+
+[The term &quot; currency &quot; has been suggested by Cayley for use 
+instead of the somewhat vague suggestion sometimes taken to 
+be involved in the word &quot;direction.&quot; Thus parallel lines have 
+the same direction, though they may have similar or opposite 
+currencies. The definition of a vector essentially includes its 
+currency.] 
+
+{\bf 17}. We may here remark, once for all, that in establishing a 
+new Calculus, we are at liberty to give any definitions whatever 
+of our symbols, provided that no two of these interfere with, or 
+contradict, each other, and in doing so in Quaternions {sl simplicity}
+and (so to speak) {\sl naturalness} were the inventor's aim. 
+
+{\bf 18}. Let $\overline{AB}$ be represented by $\alpha$, we know that 
+$\alpha$ involves 
+{\sl three} separate numbers, and that these depend solely upon the 
+position of $B$ {\sl relatively} to $A$. 
+Now if $CD$ be equal in length to $AB$ 
+and if these lines be parallel, and have the same currency, we may 
+evidently write 
+$$\overline{CD} = \overline{AB} = \alpha$$
+where it will be seen that the sign of equality between vectors 
+contains implicitly {\sl equality in length}, {\sl parallelism in direction}, 
+and {\sl concurrency}. So far we have {\sl extended} the meaning of an 
+algebraical symbol. And it is to be noticed that an equation 
+between vectors, as 
+$$\alpha = \beta$$
+contains {\sl three} distinct equations between mere numbers. 
+
+{\bf 19}. We must now define $+$ (and the meaning of $-$ will follow) 
+in the new Calculus. Let $A$, $B$, $C$ be any three points, and (with 
+the above meaning of $=$ ) let 
+$$\overline{AB} = \alpha, \overline{BC} = \beta, \overline{AC} = \gamma$$
+If we define $+$ (in accordance with the idea (\S 16) that a vector 
+represents a {\sl translation}) by the equation 
+$$
+\begin{array}{lcl}
+            &amp; \textrm{     } &amp; \alpha + \beta = \gamma\\
+            &amp;                &amp; \\
+\textrm{or} &amp; \textrm{     } &amp; 
+\overline{AB} + \overline{BC} = \overline{AC}
+\end{array}
+$$
+we contradict nothing that precedes, but we at once introduce the 
+idea that {\sl vectors are to be compounded}, 
+{\sl in direction and magnitude},
+{\sl like simultaneous velocities}. A reason for this may be seen in 
+another way if we remember that by {\sl adding} the (algebraic) differences 
+of the Cartesian coordinates of $B$ and $A$, to those of the 
+coordinates of $C$ and $B$, we get those of the coordinates of $C$ and 
+$A$. Hence these coordinates enter {\sl linearly} into the expression for 
+a vector. (See, again, \S 5.) 
+
+{\bf 20}. But we also see that if $C$ and $A$ coincide (and $C$ may be 
+{\sl any} point) 
+$$\overline{AC} = 0$$
+for no vector is then required to carry $A$ to $C$. Hence the above 
+relation may be written, in this case, 
+$$\overline{AB}+\overline{BA} = 0$$
+or, introducing, and by the same act defining, the symbol $-$, 
+$$\overline{AB} = -\overline{BA}$$
+
+Hence, {\sl the symbol $-$, applied to a vector, simply shows that its 
+currency is to be reversed}. 
+And this is consistent with all that precedes; for instance, 
+$$
+\begin{array}{lcrcl}
+             &amp; \textrm{     } &amp; \overline{AB} + \overline{BC}  &amp;=&amp; \overline{AC}\\
+\textrm{and} &amp; \textrm{     } &amp; \overline{AB} = \overline{AC} &amp;-&amp; \overline{BC} \\
+\textrm{or}  &amp; \textrm{     } &amp; = \overline{AC} &amp;+&amp; \overline{CB} \\
+\end{array}
+$$
+are evidently but different expressions of the same truth. 
+
+{\bf 21}. In any triangle, $ABC$, we have, of course, 
+$$\overline{AB} + \overline{BC} + \overline{CA} = 0$$
+and, in any closed polygon, whether plane or gauche, 
+$$\overline{AB}+\overline{BC}+\ldots+\overline{YZ}+\overline{ZA} = 0$$ 
+
+In the case of the polygon we have also 
+$$\overline{AB}+\overline{BC}+\ldots+\overline{YZ} = \overline{AZ}$$
+
+These are the well-known propositions regarding composition 
+of velocities, which, by Newton's second law of motion, give us 
+the geometrical laws of composition of forces acting at one point. 
+
+{\bf 22}. If we compound any number of {\bf parallel} vectors, the result
+is obviously a numerical multiple of any one of them. 
+Thus, if $A$, $B$, $C$ are in one straight line, 
+$$\overline{BC} = x\overline{AB}$$
+where $x$ is a number, positive when $B$ lies between $A$ and $C$, 
+otherwise negative; but such that its numerical value, independent 
+of sign, is the ratio of the length of $BC$ to that of $AB$. This is 
+at once evident if $AB$ and $BC$ be commensurable; and is easily 
+extended to incommensurables by the usual {\sl reductio ad absurdum}. 
+
+{\bf 23}. An important, but almost obvious, proposition is that {\sl any 
+vector may be resolved, and in one way only, into three components 
+parallel respectively to any three given vectors, no two of which are 
+parallel, and which are not parallel to one plane}.
+
+\includegraphics{ps/quat1.ps}
+
+Let $OA$, $OB$, $OC$ be the three fixed 
+vectors, $OP$ any other vector. From $P$ draw 
+$PQ$ parallel to $CO$, meeting the plane $BOA$ 
+in $Q$. [There must be a definite point $Q$, 
+else $PQ$, and therefore $CO$, would be parallel 
+to $BOA$, a case specially excepted.] From $Q$ 
+draw $QR$ parallel to $BO$, meeting $OA$ in $R$. 
+
+Then we have $\overline{OP}=\overline{OR} + \overline{RQ} + \overline{QP}$
+(\S 21), 
+and these components are respectively parallel to the three given 
+vectors. By \S 22 we may express $\overline{OR}$ as a numerical multiple 
+of $\overline{OA}$, $\overline{RQ}$ of $\overline{OB}$, and 
+$\overline{QP}$ of $\overline{OC}$. Hence we have, generally, for 
+any vector in terms of three fixed non-coplanar vectors, $\alpha$,
+$\beta$, $\gamma$
+$$\overline{OP} = \rho = x\alpha + y\beta + z\gamma$$
+which exhibits, in one form, the {\sl three} numbers on which a vector 
+depends (\S 16). Here $x$, $y$, $z$ are perfectly definite, and can have 
+but single values. 
+
+{\bf 24}. Similarly any vector, as $\overline{OQ}$, in the same plane with 
+$\overline{OA}$ and $\overline{OB}$, 
+can be resolved (in one way only) into components $\overline{OR}$, 
+$\overline{RQ}$, 
+parallel respectively to $\overline{OA}$ and 
+$\overline{OB}$; so long, at least, as these 
+two vectors are not parallel to each other. 
+
+{\bf 25}. There is particular advantage, in certain cases, in employing 
+a series of {\sl three mutually perpendicular unit-vectors} as 
+lines of reference. This system Hamilton denotes by $i$,$j$, $k$. 
+
+Any other vector is then expressible as 
+$$\rho= xi + yj + zk$$
+Since $i$, $j$, $k$ are unit-vectors, $x$, $y$, $z$ are here the lengths of 
+conterminous edges of a rectangular parallelepiped of which $\rho$
+is the vector-diagonal; so that the length of $\rho$ is, in this case, 
+$$\sqrt{x^2+y^2+z^2}$$
+Let \hbox{\hskip 4cm}$\omega = \xi i + \eta j + \zeta k$\\
+be any other vector, then (by the proposition of \S 23) the vector 
+$$
+\begin{array}{lcr}
+\textrm{equation} &amp; \textrm{     } &amp; \rho = \omega
+\end{array}
+$$
+obviously involves the following three equations among numbers, 
+$$x=\xi, y=\eta, z=\zeta$$
+Suppose $i$ to be drawn eastwards, $j$ northwards, and $k$ upwards, 
+this is equivalent merely to saying that {\sl if two points coincide, they 
+are equally to the east (or west) of any third point, equally to the 
+north (or south) of it, and equally elevated above (or depressed below) 
+its level.} 
+
+{\bf 26}. It is to be carefully noticed that it is only when 
+$\alpha$, $\beta$, $\gamma$
+are not coplanar that a vector equation such as 
+$$\rho = \omega$$
+or\hbox{\hskip 3cm}
+$x\alpha + y\beta + z\gamma = \xi \alpha + \eta \beta + \zeta \gamma$\\
+necessitates the three numerical equations 
+$$x = \xi, y = \eta, z = \zeta$$
+For, if $\alpha$, $\beta$, $\gamma$ be coplanar (\S 24), 
+a condition of the following form must hold 
+$$\gamma = a\alpha + b\beta$$
+Hence,\hbox{\hskip 3cm}$\rho=(x+za)\alpha+(y+zb)\beta$\\
+\hbox{\hskip 4cm}$\omega=(\xi+\zeta a)\alpha + (\eta+\zeta b)\beta$\\
+and the equation\hbox{\hskip 3cm}$\rho=\omega$\\
+now requires only the two numerical conditions 
+$$x+za=\xi+\zeta a\hbox{\hskip 1cm}y+zb = \eta+\zeta b$$
+
+{\bf 27}. {\sl The Commutative and Associative Laws hold in the combination 
+of vectors by the signs $+$ and $-$}. It is obvious that, if we 
+prove this for the sign $+$, it will be equally proved for $-$, because 
+$-$ before a vector (\S 20) merely indicates that it is to be reversed 
+before being considered positive. 
+
+Let $A$, $B$, $C$, $D$ be, in order, the corners of a parallelogram ; we 
+have, obviously, 
+$$\overline{AB} = \overline{DC}\hbox{\hskip 1cm}\overline{AD}=\overline{BC}$$
+And \hbox{\hskip 2cm}$\overline{AB}+\overline{BC}=
+\overline{AC}=
+\overline{AD}+\overline{DC}=
+\overline{BC}+\overline{AB}$
+
+Hence the commutative law is true for the addition of any two 
+vectors, and is therefore generally true. 
+
+Again, whatever four points are represented by $A$, $B$, $C$, $D$, we 
+$$\overline{AD}=\overline{AB}+\overline{BD}=\overline{AC}+\overline{CD}$$
+or substituting their values for $\overline{AD}$, $\overline{BD}$, 
+$\overline{AC}$ respectively, in these three expressions, 
+$$\overline{AB}+\overline{BC}+\overline{CD}=
+\overline{AB}+(\overline{BC}+\overline{CD})=
+(\overline{AB}+\overline{BC})+\overline{CD}$$
+And thus the truth of the associative law is evident. 
+
+{\bf 28}. The equation 
+$$\rho = x\beta$$
+where $\rho$ is the vector connecting a variable point with the origin, 
+$\beta$ a definite vector, and $x$ an indefinite number, represents the 
+straight line drawn from the origin parallel to $\beta$ (\S 22). 
+
+The straight line drawn from $A$, where $\overline{OA} = \alpha$, 
+and parallel to $\beta$, has the equation 
+$$\rho = \alpha + x\beta\eqno(1)$$
+In words, we may pass directly from $O$ to $P$ by the vector $\overline{OP}$ 
+or $\rho$; or we may pass first to $A$, by means of $\overline{OA}$ or 
+$\alpha$, and then to $P$ along a vector parallel to $\beta$ (\S 16). 
+
+Equation (1) is one of the many useful forms into which 
+Quaternions enable us to throw the general equation of a straight 
+line in space. As we have seen (\S 25) it is equivalent to three 
+numerical equations; but, as these involve the indefinite quantity 
+$x$, they are virtually equivalent to but {\sl two}, as in ordinary Geometry 
+of Three Dimensions. 
+
+{\bf 29}. A good illustration of this remark is furnished by the fact 
+that the equation 
+$$\rho = y\alpha + x\beta$$
+which contains two indefinite quantities, is virtually equivalent to
+only one numerical equation. And it is easy to see that it represents 
+the plane in which the lines $\alpha$ and $\beta$ lie; or the surface 
+which is formed by drawing, through every point of $OA$, a line 
+parallel to $OB$. In fact, the equation, as written, is simply \S 24 
+in symbols. 
+
+And it is evident that the equation 
+$$\rho = \gamma + y\alpha + x\beta$$
+is the equation of the plane passing through the extremity of $\gamma$, 
+and parallel to $\alpha$ and $\beta$.
+
+It will now be obvious to the reader that the equation 
+$$\rho = p_1\alpha_1+p_2\alpha_2+\ldots=\sum{p\alpha}$$
+where $\alpha_1$, $\alpha_2$ , \&amp;c. are given vectors, 
+and $p_1$, $p_2$, \&amp;c. numerical quantities, 
+{\sl represents a straight line} 
+if $p_1$, $p_2$, \&amp;c. be linear functions of 
+{\sl one} indeterminate number; and a {\sl plane}, if they be linear 
+expressions containing two indeterminate numbers. Later (\S 31 (l)), 
+this theorem will be much extended. 
+
+Again, the equation 
+$$\rho = x\alpha + y\beta +z\gamma$$
+refers to {\sl any} point whatever in space, provided 
+$\alpha$, $\beta$, $\gamma$ are not coplanar. (Ante, \S 23) 
+
+{\bf 30}. The equation of the line joining any two points $A$ and $B$, 
+where $\overline{OA} = \alpha$ and $\overline{OB} = \beta$, is obviously 
+$$\rho = \alpha + x(\beta-\alpha)$$
+or \hbox{\hskip 4.2cm}$\rho=\beta+y(\alpha-\beta)$\\
+These equations are of course identical, as may be seen by putting 
+$1-y$ for $x$.
+
+The first may be written 
+$$\rho+(x-1)\alpha-x\beta = 0$$
+or\hbox{\hskip 4cm}$p\rho+q\alpha+r\beta=0$\\
+subject to the condition $p + q + r = 0$ identically. That is -- 
+A homogeneous linear function of three vectors, equated to zero, 
+expresses that the extremities of these vectors are in one straight 
+line, {\sl if the sum of the coefficients be identically zero}.
+
+Similarly, the equation of the plane containing the extremities 
+$A$, $B$, $C$ of the three non-coplanar vectors 
+$\alpha$, $\beta$, $\gamma$ is
+$$\rho=\alpha+x(\beta-\alpha)+y(\gamma-\beta)$$
+where $x$ and $y$ are each indeterminate. 
+
+This may be written 
+$$p\rho + q\alpha + r\beta +s\gamma = 0$$
+with the identical relation 
+$$p+q+r+x=0$$
+which is one form of the condition that four points may lie in one plane. 
+
+{\bf 31}. We have already the means of proving, in a very simple 
+manner, numerous classes of propositions in plane and solid 
+geometry. A very few examples, however, must suffice at this 
+stage; since we have hardly, as yet, crossed the threshold of the 
+subject, and are dealing with mere linear equations connecting two 
+or more vectors, and even with them {\sl we are restricted as yet to 
+operations of mere addition}. We will give these examples with a 
+painful minuteness of detail, which the reader will soon find to be 
+necessary only for a short time, if at all. 
+
+(a) {\sl The diagonals of a parallelogram bisect each other}.
+
+Let $ABCD$ be the parallelogram, $O$ the point of intersection of 
+its diagonals. Then 
+$$\overline{AO}+\overline{OB}=\overline{AB}=\overline{DC}=
+\overline{DO}+\overline{OC}$$
+which gives\hbox{\hskip 2cm}$\overline{AO}-\overline{OC}=
+\overline{DO}-\overline{OB}$\\
+The two vectors here equated are parallel to the diagonals respectively. 
+Such an equation is, of course, absurd unless 
+\begin{enumerate}
+\item The diagonals are parallel, in which case the figure 
+is not a parallelogram; 
+\item $\overline{AO} = \overline{OC}$, and 
+$\overline{DO} = \overline{OB}$, the proposition. 
+\end{enumerate}
+
+(b) {\sl To shew that a triangle can be constructed, whose sides 
+are parallel, and equal, to the bisectors of the sides of any 
+triangle}. 
+
+Let $ABC$ be any triangle, $Aa$, $Bb$, $Cc$ the bisectors of the 
+sides. 
+
+Then 
+$$
+\begin{array}{ccc}
+\overline{Aa} &amp; =\overline{AB}+\overline{Ba} 
+                       &amp; =\overline{AB}+\frac{1}{2}\overline{BC}\\
+\overline{Bb} &amp; \ldots &amp; = \overline{BC} + \frac{1}{2}\overline{CA}\\
+\overline{Cc} &amp; \ldots &amp; = \overline{CA} + \frac{1}{2}\overline{AB}
+\end{array}
+$$
+Hence \hbox{\hskip 2cm}$\overline{Aa}+\overline{Bb}+\overline{Cc}=
+\frac{3}{2}(\overline{AB}+\overline{BC}+\overline{CA})=0$\\
+which (\S 21) proves the proposition. 
+
+Also 
+$$
+\begin{array}{rcl}
+\overline{Aa} &amp; = &amp; \overline{AB}+\frac{1}{2}\overline{BC}\\
+              &amp; = &amp; \overline{AB}-\frac{1}{2}(\overline{CA}+\overline{AB})\\
+              &amp; = &amp; \frac{1}{2}(\overline{AB}-\overline{CA})\\
+              &amp; = &amp; \frac{1}{2}(\overline{AB}+\overline{AC})
+\end{array}
+$$
+results which are sometimes useful. They may be easily verified 
+by producing $\overline{Aa}$ to twice its length and joining the extremity 
+with $B$. 
+
+($b^{'}$) {\sl The bisectors of the sides of a triangle meet in a point, 
+which trisects each of them}.
+
+Taking $A$ as origin, and putting $\alpha$, $\beta$, $\gamma$
+for vectors parallel, and 
+equal, to the sides taken in order $BC$, $CA$, $AB$; the equation of 
+$Bb$ is (\S 28 (1)) 
+$$\rho=\gamma+x(\gamma+\frac{\beta}{2})=(1+x)\gamma+\frac{x}{2}\beta$$
+That of $Cc$ is, in the same way, 
+$$\rho=-(1+y)\beta-\frac{y}{2}\gamma$$
+At the point $O$, where $Bb$ and $Cc$ intersect, 
+$$\rho=(1+x)\gamma+\frac{x}{2}\beta=-(1+y)\beta-\frac{y}{2}\gamma$$
+Since $\gamma$ and $\beta$ are not parallel, this equation gives 
+$$1+x=-\frac{y}{2}\textrm{\ \ and\ \ }\frac{x}{2}=-(1+y)$$
+From these\hbox{\hskip 3cm}$x=y=-\frac{2}{3}$
+
+Hence\hbox{\hskip 1cm}$\overline{AO}=\frac{1}{3}(\gamma-\beta)=
+\frac{2}{3}\overline{Aa}$ (See Ex. (b))\\
+
+This equation shows, being a vector one, that $\overline{Aa}$ passes 
+through $O$, and that $AO$ : $Oa$ :: 2:1. 
+
+(c) If 
+$$\overline{OA}=\alpha$$
+$$\overline{OB}=\beta$$
+$$\overline{OC}=l\alpha+m\beta$$
+{\sl be three given co-planar vectors, $c$ the intersection of $AB$, $OC$, and 
+if the lines indicated in the figure be drawn, the points 
+$a_1$,$b_1$,$c_1$ lie in a straight line. }
+\includegraphics{ps/quat2.ps}
+
+We see at once, by the process indicated in \S 30, that 
+$$\overline{Oc}=\frac{l\alpha+m\beta}{l+m},\hbox{\hskip 1cm}
+\overline{Ob}=\frac{l\alpha}{1-m},\hbox{\hskip 1cm}
+\overline{Oa}=\frac{m\beta}{1-l}$$
+Hence we easily find 
+$$\overline{Oa_1}=-\frac{m\beta}{1-l-2m},\hbox{\hskip 0.5cm}
+\overline{Ob_1}=-\frac{l\alpha}{1-2l-m},\hbox{\hskip 0.5cm}
+\overline{Oc_1}=\frac{-l\alpha+m\beta}{m-l}$$
+These give 
+$$-(1-l-2m)\overline{Oa_1}+(1-2l-m)\overline{Ob_1}-(m-l)\overline{Oc_1}=0$$
+But\hbox{\hskip 1cm}$-(1-l-2m)+(1-2l-m)-(m - l)=0$ identically. 
+
+This, by \S 30, proves the proposition. 
+
+(d) Let $\overline{OA} = \alpha$, 
+$\overline{OB} = \beta$, be any two vectors. If $MP$ be a 
+given line parallel to $OB$; and $OQ$, $BQ$, be drawn parallel to $AP$, 
+$OP$ respectively ; the locus of $Q$ is a straight line parallel to $OA$. 
+
+\noindent
+\includegraphics{ps/quat3.ps}
+
+\noindent
+Let \hbox{\hskip 4cm}$\overline{OM}=e\alpha$\\
+Then \hbox{\hskip 3cm}$\overline{AP}=\overline{e-1}\alpha+x\beta$
+
+Hence the equation of $OQ$ is 
+$$\rho=y(\overline{e-1}\alpha+x\beta)$$
+and that of $BQ$ is\hbox{\hskip 1cm}$\rho=\beta+z(e\alpha+x\beta)$\\
+At Q we have, therefore, 
+$$
+\left.
+\begin{array}{c}
+xy=1+zx\\
+y(e-1)=ze
+\end{array}
+\right\}
+$$
+These give $xy = e$, and the equation of the locus of $Q$ is 
+$$\rho = e\beta+y^{'}\alpha$$
+i.e. a straight line parallel to $OA$, drawn through $N$ in $OB$ 
+produced, so that 
+$$ON : OB :: OM : OA$$
+
+COR. If $BQ$ meet $MP$ in $q$, $\overline{Pq} = \beta$; 
+and if $AP$ meet $NQ$ in $p$, $\overline{Qp} = \alpha$. 
+
+Also, for the point $R$ we have $\overline{pR} = \overline{AP}$, 
+$\overline{QR} = \overline{Bq}$. 
+
+Further, the locus of $R$ is a hyperbola, of which $MP$ and $NQ$ 
+are the asymptotes. See, in this connection, \S 31 (k) below. 
+
+Hence, {\sl if from any two points, $A$ and $B$, lines be drawn intercepting 
+a given length $Pq$ on a given line $Mq$ ; and if, from $R$ their 
+point of intersection, $Rp$ be laid off $= PA$, and $RQ = qB$ ; $Q$ and $p$ 
+lie on a fixed straight line, and the length of $Qp$ is constant}. 
+
+(e) {\sl To find the centre of inertia of any system of masses.}
+ 
+If $\overline{OA} = \alpha$, $\overline{OB} = \alpha_1$, 
+be the vector sides of any triangle, the 
+vector from the vertex dividing the base $AB$ in $C$ so that 
+$$BC : CA :: m : m_1$$
+is \hbox{\hskip 4cm}$\frac{m\alpha+m_1\alpha_1}{m+m_1}$\\
+
+For $AB$ is $\alpha_1-\alpha$, and therefore $\overline{AC}$ is 
+$$\frac{m_1}{m+m_1}(\alpha_1-\alpha)$$
+
+Hence\hbox{\hskip 3cm}$\overline{OC}=\overline{OA}+\overline{AC}$
+$$=\alpha+\frac{m_1}{m+m_1}(\alpha_1-\alpha)$$
+$$=\frac{m\alpha +m_1\alpha_1}{m+m_1}$$
+This expression shows how to find the centre of inertia of two 
+masses ; $m$ at the extremity of $\alpha$, $m_1$ at that of $\alpha_1$. 
+Introduce $m_2$ at the extremity of $a_2$, 
+then the vector of the centre of inertia of the 
+three is, by a second application of the formula, 
+$$\frac{(m+m_1)(\frac{m\alpha+m_1\alpha_1}{m+m_1})+m_2\alpha_2}
+{(m+m_1)+m_2}=\frac{m\alpha+m_1\alpha_1+m_2\alpha_2}{m+m_1+m_2}$$
+From this it is clear that, for any number of masses, expressed 
+generally by $m$ at the extremity of the vector $\alpha$, the vector of the 
+centre of inertia is 
+$$\beta=\frac{\sum(m\alpha)}{\sum(m)}$$
+This may be written\hbox{\hskip 1cm}$\sum m(\alpha-\beta)=0$\\
+Now a $\alpha_1-\beta$ 
+is the vector of $m_1$ with respect to the centre of inertia. 
+Hence the theorem, {\sl If the vector of each element of a mass, drawn 
+from the centre of inertia, be increased in length in proportion to the 
+mass of the element, the sum of all these vectors is zero.}
+
+(f) We see at once that the equation 
+
+\noindent
+\includegraphics{ps/quat4.ps}
+
+$$\rho=\alpha t +\frac{\beta t^2}{2}$$
+where $t$ is an indeterminate 
+number, and $\alpha$, $\beta$ given vectors, 
+represents a parabola. 
+The origin, $O$, is a point on 
+the curve, $\beta$ is parallel to 
+the axis, i.e. is the diameter 
+$OB$ drawn from the origin, 
+and $\alpha$ is $OA$ the tangent at the origin. In the figure 
+$$\overline{QP}=\alpha t,\hbox{\hskip 1cm}\overline{OQ}=\frac{\beta t^2}{2}$$
+
+The secant joining the points where $t$ has the values $t$ and $t^{'}$ is 
+represented by the equation 
+$$
+\begin{array}{rcl}
+\rho&amp;=&amp;\alpha t +\frac{\beta t^2}{2}+x\left(\alpha t^{'}+\frac{\beta t^{'2}}{2}
+-\alpha t-\frac{\beta t^2}{2}\right)\hbox{\hskip 1cm}(\S 30)\\
+&amp;=&amp;\alpha t+\frac{\beta t^2}{2}+x(t^{'}-t)\left\{\alpha+\beta\frac{t^{'}-t}{2}
+\right\}
+\end{array}
+$$
+Write $x$ for $x(t^{'}-t)$ [which may have any value], then put 
+$t^{'}=t$, and the equation of the tangent at the point ($t$) is 
+$$\rho=\alpha t + \frac{\beta t^2}{2}+x(\alpha+\beta t)$$
+In this put $x = -t$, and we have 
+$$\rho=-\frac{\beta t^2}{2}$$
+or the intercept of the tangent on the diameter is equal in length 
+to the abscissa of the point of contact, but has the opposite 
+currency. 
+
+Otherwise: the tangent is parallel to the vector $\alpha+\beta t$ or 
+$\alpha t + \beta t^2$ or $\frac{\beta t^2}{2}+\alpha t+\frac{\beta t^2}{2}$
+or $\overline{OQ}+\overline{OP}$. 
+But $\overline{TP}=\overline{TO}+\overline{OP}$,
+hence $\overline{TO} = \overline{OQ}$. 
+
+(g) Since the equation of any tangent to the parabola is 
+$$\rho=\alpha t + \frac{\beta t^2}{2} + x(\alpha+\beta t)$$
+let us find the tangents which can be drawn from a given point. 
+Let the vector of the point be 
+$$\rho=p\alpha + q\beta\hbox{\hskip 0.5cm}(\S 24)$$
+Since the tangent is to pass through this point, we have, as con 
+ditions to determine $t$ and $x$, 
+$$t+x=p$$
+$$\frac{t^2}{2}+xt=q$$
+by equating respectively the coefficients of $\alpha$ and $\beta$.
+
+Hence\hbox{\hskip 3.5cm}$t=p \pm \sqrt{p^2-2q}$
+
+Thus, in general, {\sl two} tangents can be drawn from a given point. 
+These coincide if $$p^2=2q$$
+that is, if the vector of the point from which they are to be drawn 
+is $$\rho=p\alpha+q\beta=p\alpha+\frac{p^2}{2}\beta$$
+i.e. if the point lies on the parabola. They are imaginary if 
+$2q &gt; p^2$, that is, if the point be 
+$$\rho=p\alpha+\left(\frac{p^2}{2}+r\right)\beta$$
+$r$ being {\sl positive}. Such a point is evidently {\sl within} the curve, 
+as at $R$, where $\overline{OQ}=\frac{p^2}{2}\beta$, 
+$\overline{QP}=p\alpha$, $\overline{PR} = r\beta$. 
+
+(h) Calling the values of $t$ for the two tangents found in (g) 
+$t_1$ and $t_2$ respectively, it is obvious that the vector joining the 
+points of contact is 
+$$\alpha t_1+\frac{\beta t_1^2}{2}-\alpha t_2 - \frac{\beta t_2^2}{2}$$
+which is parallel to\hbox{\hskip 2cm}
+$\alpha+\beta\frac{t_1+t_2}{2}$
+or, by the values of $t_1$ and $t_2$ in (g), 
+$$\alpha+p\beta$$
+Its direction, therefore, does not depend on $q$. In words, {\sl If pairs of 
+tangents be drawn to a parabola from points of a diameter produced, 
+the chords of contact are parallel to the tangent at the vertex of the 
+diameter.} This is also proved by a former result, for we must have 
+$\overline{OT}$ for each tangent equal to $\overline{QO}$. 
+
+(i) The equation of the chord of contact, for the point whose vector is 
+$$\rho=p\alpha+q\beta$$
+is thus\hbox{\hskip 3cm}
+$\rho=\alpha t_1+\frac{\beta t_1^2}{2}+y(\alpha+p\beta)$
+
+Suppose this to pass always through the point whose vector is 
+$$\rho=a\alpha+b\beta$$
+Then we must have
+$$
+\left.
+\begin{array}{rcl}
+t_1+y &amp; = &amp; a\\
+\frac{t_1^2}{2}+py &amp; = &amp; b
+\end{array}
+\right\}
+$$
+or\hbox{\hskip 4cm}$t_1=p\pm\sqrt{p^2-2p\alpha+2\beta}$
+
+Comparing this with the expression in (g), we have 
+$$
+q = pa - b 
+$$
+that is, the point from which the tangents are drawn has the vector 
+a straight line (\S 28 (1)).
+
+The mere form of this expression contains the proof of the usual 
+properties of the pole and polar in the parabola ; but, for the sake 
+of the beginner, we adopt a simpler, though equally general, process. 
+
+Suppose $\alpha = 0$. This merely restricts the pole to the particular 
+diameter to which we have referred the parabola. Then the pole 
+is $Q$, where $$\rho = b\beta$$
+and the polar is the line $TU$, for which 
+$$\rho=-b\beta+p\alpha$$
+{\sl Hence the polar of any point is parallel to the tangent at the 
+extremity of the diameter on which the point lies, and its intersection 
+with that diameter is as far beyond the vertex as the pole 
+is within, and vice versa. }
+
+(j) As another example let us prove the following theorem. 
+{\sl If a triangle be inscribed in a parabola, the three points in which 
+the sides are met by tangents at the angles lie in a straight line. }
+
+Since $O$ is any point of the curve, we may take it as one corner 
+of the triangle. Let $t$ and $t_1$ determine the others. Then, if 
+$\omega_1$,$\omega_2$,$\omega_3$
+represent the vectors of the points of intersection of the 
+tangents with the sides, we easily find 
+$$
+\begin{array}{rcl}
+\omega_1 &amp; = &amp; \frac{t_1^2}{2t_1-t}
+\left(\alpha+\frac{t}{2}\beta\right)\\
+&amp;&amp;\\
+\omega_2 &amp; = &amp; \frac{t^2}{2t-t_1}
+\left(\alpha+\frac{t_1}{2}\beta\right)\\
+&amp;&amp;\\
+\omega_3 &amp; = &amp; \frac{tt_1}{t_1+t}\alpha
+\end{array}
+$$
+These values give 
+$$\frac{2t_1-t}{t_1}\omega_1 -
+\frac{2t-t_1}{t}\omega_2 -
+\frac{t_1^2-t^2}{tt_1}\omega_3 = 0$$
+Also
+$$\frac{2t_1-t}{t_1} -
+\frac{2t-t_1}{t} -
+\frac{t_1^2-t^2}{tt_1} = 0$$
+identically. 
+
+Hence, by \S 30, the proposition is proved. 
+
+(k) Other interesting examples of this method of treating 
+curves will, of course, suggest themselves to the student. Thus 
+$$\rho = \alpha\cos t + \beta\sin t$$
+or
+$$\rho=\alpha x + \beta\sqrt{1-x^2}$$
+represents an ellipse, of which the given vectors $\alpha$ and $\beta$ 
+are semiconjugate diameters. If $t$ represent time, the radius-vector of this 
+ellipse traces out equal areas in equal times. [We may anticipate 
+so far as to write the following : 
+$$2 \textrm{Area} = T\int V \rho d\rho = TV\alpha\beta.\int dt$$
+which will be easily understood later.] 
+
+Again, 
+$$\rho=\alpha t+\frac{\beta}{t}\textrm{  or  }
+\rho=\alpha\tan x + \beta\cot x$$
+evidently represents a hyperbola referred to its asymptotes. [If 
+$t$ represent time, the sectorial area traced out is proportional to 
+$\log t$, taken between proper limits.] 
+Thus, also, the equation 
+$$\rho = \alpha(t + \sin t)+\beta\cos t$$
+in which $\alpha$ and $\beta$ are of equal lengths, and at right angles to one 
+another, represents a cycloid. The origin is at the middle point of 
+the axis ($2\beta$) of the curve. [It may be added that, if t represent 
+{\sl time}, this equation shows the motion of the tracing point, provided 
+the generating circle rolls uniformly, revolving at the rate of a 
+radian per second.] 
+
+When the lengths of $\alpha$, $\beta$ are not equal, this equation gives the 
+cycloid distorted by elongation of its ordinates or abscissae : {\sl not} a 
+trochoid. The equation of a trochoid may be written 
+$$\rho = \alpha(et + \sin t)+\beta\cos t$$
+$e$ being greater or less than 1 as the curve is prolate or curtate. 
+The lengths of $\alpha$ and $\beta$ are still taken as equal. 
+
+But, so far as we have yet gone with the explanation of the 
+calculus, as we are not prepared to determine the lengths or 
+inclinations of vectors, we can investigate only a very limited class of 
+the properties of curves, represented by such equations as those 
+above written. 
+
+(l) We may now, in extension of the statement in \S 29, make 
+the obvious remark that 
+$$\rho = \sum p\alpha$$
+(where, as in \S 23, the number of vectors, $\alpha$, can always be reduced 
+to {\sl three}, at most) is the equation of a curve in space, if the 
+numbers $p_1$, $p_2$, \&amp;c.  are functions of one indeterminate. In such 
+a case the equation is sometimes written 
+$$\rho=\phi(t)$$
+But, if $p_1$, $p_2$, \&amp;c. be functions of {\sl two} indeterminates, 
+the locus of the extremity of $\rho$ is a {\sl surface}; 
+whose equation is sometimes written 
+$$\rho = \phi(t,u)$$
+
+[It may not be superfluous to call the reader's attention to the 
+fact that, in these equations, $\phi(t)$ or $\phi(t, u)$ 
+is necessarily a vector expression, since it is equated to a vector, $\rho$.] 
+
+(m) Thus the equation 
+$$\rho = \alpha\cos t+\beta\sin t + \gamma t\eqno(1)$$
+belongs to a helix, 
+\boxed{4.6in}{
+\vskip 0.1cm
+In Axiom we can draw this with the commands:
+\spadcommand{draw(a*cos(t)+b*sin(t)+c*u,[t=0..1,u=0..1]}
+tpdhere
+}
+while 
+$$\rho = \alpha\cos t+\beta\sin t + \gamma u\eqno(2)$$
+represents a cylinder whose generating lines are parallel to $\gamma$,
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{draw(a*cos(t)+b*sin(t)+c*u,[t=0..1,u=0..1]}
+tpdhere
+}
+and 
+whose base is the ellipse 
+$$\rho=\alpha\cos t + \beta\sin t$$
+The helix above lies wholly on this cylinder. 
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{draw(a*cos(t)+b*sin(t)+c*u,[t=0..1,u=0..1]}
+tpdhere
+}
+
+Contrast with (2) the equation 
+$$\rho = u(\alpha\cos t + \beta\sin t + \gamma)\eqno(3)$$
+which represents a cone of the second degree
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{draw(a*cos(t)+b*sin(t)+c*u,[t=0..1,u=0..1]}
+tpdhere
+}
+made up, in fact, 
+of all lines drawn from the origin to the ellipse 
+$$\rho=\alpha\cos t + \beta\sin t + \gamma$$
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{draw(a*cos(t)+b*sin(t)+c*u,[t=0..1,u=0..1]}
+tpdhere
+}
+
+If, however, we write 
+$$\rho = u(\alpha\cos t + \beta\sin t + \gamma t)$$
+we form the equation of the transcendental cone whose vertex is 
+at the origin, and on which lies the helix (1). 
+\boxed{4.6in}{
+\vskip 0.1cm
+\spadcommand{draw(a*cos(t)+b*sin(t)+c*u,[t=0..1,u=0..1]}
+tpdhere
+}
+
+In general 
+$$\rho=u\phi(t)$$
+is the cone whose vertex is the origin, and on which lies the curve 
+$$\rho=\phi(t)$$
+while\hbox{\hskip 4cm}$\rho=\phi(t)+u\alpha$\\
+is a cylinder, with generating lines parallel to $\alpha$, standing on the 
+same curve as base. 
+
+Again,\hbox{\hskip 3cm}$\rho=p\alpha+q\beta+r\gamma$\\
+with a condition of the form 
+$$ap^2+bq^2+cr^2=1$$
+belongs to a central surface of the second order, of which 
+$\alpha$, $\beta$, $\gamma$
+are the directions of conjugate diameters. If $a$, $b$, $c$ be all positive, 
+the surface is an ellipsoid. 
+
+{\bf 32}. In Example ($f$) above we performed an operation equivalent 
+to the differentiation of a vector with reference to a single 
+{\sl numerical} variable of which it was given as an explicit function. 
+As this process is of very great use, especially in quaternion 
+investigations connected with the motion of a particle or point; and as it 
+will afford us an opportunity of making a preliminary step towards 
+overcoming the novel difficulties which arise in quaternion differentiation; 
+we will devote a few sections to a more careful, though 
+very elementary, exposition of it. 
+
+{\bf 33}. It is a striking circumstance, when we consider the way 
+in which Newton's original methods in the Differential Calculus 
+have been decried, to find that Hamilton was {\sl obliged} to employ 
+them, and not the more modern forms, in order to overcome the 
+characteristic difficulties of quaternion differentiation. Such a thing 
+as {\sl a differential coefficient has absolutely no meaning in quaternions}, 
+except in those special cases in which we are dealing with degraded 
+quaternions, such as numbers, Cartesian coordinates, \&amp;c. But a 
+quaternion expression has always a {\sl differential}, which is, simply, 
+what Newton called a {\sl fluxion}. 
+
+As with the Laws of Motion, the basis of Dynamics, so with the 
+foundations of the Differential Calculus ; we are gradually coming 
+to the conclusion that Newton s system is the best after all. 
+
+{\bf 34}. Suppose $\rho$ to be the vector of a curve in space. Then, 
+generally, $\rho$ may be expressed as the sum of a number of terms, 
+each of which is a multiple of a constant vector by a function of some 
+{\sl one} indeterminate; or, as in \S 31 ($l$), 
+if $P$ be a point on the curve, 
+$$\overline{OP}=\rho=\phi(t)$$
+
+And, similarly, if $Q$ be {\sl any other} point on the curve, 
+$$\overline{OQ}=\rho_1=\rho+\delta\rho=\phi(t_1)=\phi(t+\delta t)$$
+where $\delta t$ is {\sl any number whatever}. 
+
+The vector-chord $\overline{PQ}$ is therefore, rigorously, 
+$$\delta p = \rho_1-\rho = \phi(t+\delta t)-\phi t$$
+
+{\bf 35}. It is obvious that, in the present case, {\sl because the vectors 
+involved in $\phi$ are constant, and their numerical multipliers alone vary}, 
+the expression $\phi(t+\delta t)$ is, by Taylor's Theorem, equivalent to 
+$$\phi(t)+\frac{d\phi(t)}{dt}\delta t+
+\frac{d^2\phi(t)}{dt^2}\frac{(\delta t)^2}{1\textrm{ . }2}+\ldots$$
+
+Hence, 
+$$\delta \rho=\frac{d\phi(t)}{dt}\delta t+
+\frac{d^2\phi(t)}{dt^2}\frac{(\delta t)^2}{1\textrm{ . }2}+\textrm{\&amp;c.}$$
+And we are thus entitled to write, when $\delta t$ has been made 
+indefinitely small, 
+$$\textrm{Limit}\left(
+\begin{array}{c}
+\delta p\\
+\delta t
+\end{array}
+\right)_{\delta t=0}
+=\frac{d\rho}{dt}
+=\frac{d\phi(t)}{dt}
+=\phi^{'}(t)$$
+
+In such a case as this, then, we are permitted to differentiate, 
+or to form the differential coefficient of, a vector, according to the 
+ordinary rules of the Differential Calculus. But great additional 
+insight into the process is gained by applying Newton's method. 
+
+{\bf 36}. Let $\overline{OP}$ be 
+$$\rho=\phi(t)$$
+and $overline{OQ}_1$
+$$\rho_1=\phi(t+dt)$$
+where $dt$ is any number whatever. 
+
+\includegraphics{ps/quat5.ps}
+
+The number $t$ may here be taken 
+as representing {\sl time}, i.e. we may 
+suppose a point to move along the 
+curve in such a way that the value 
+of $t$ for the vector of the point $P$ of 
+the curve denotes the interval which 
+has elapsed (since a fixed epoch) when the moving point has 
+reached the extremity of that vector. If, then, $dt$ represent any 
+interval, finite or not, we see that 
+$$\overline{OQ}_1=\phi(t+dt)$$
+will be the vector of the point after the additional interval $dt$. 
+
+But this, in general, gives us little or no information as to the 
+velocity of the point at $P$. We shall get a better approximation 
+by halving the interval $dt$, and finding $Q_2$ , 
+where $\overline{OQ}_2 = \phi(t + \frac{1}{2}dt)$,
+as the position of the moving point at that time. Here the vector 
+virtually described in $\frac{1}{2}dt$ is 
+$\overline{PQ}_2$ . To find, on this supposition, 
+the vector described in $dt$, we must double 
+$\overline{PQ}_2$ , and we find, as a 
+second approximation to the vector which the moving point would 
+have described in time $dt$, if it had moved for that period in the 
+direction and with the velocity it had at $P$, 
+$$
+\begin{array}{rcl}
+\overline{Pq}_2=2\overline{PQ}_2 &amp; = &amp; 2(\overline{OQ}_2-\overline{OP})\\
+&amp; = &amp; 2\{\phi(t+\frac{1}{2}dt)-\phi(t)\}
+\end{array}
+$$
+The next approximation gives 
+$$
+\begin{array}{rcl}
+\overline{Pq}_3=3\overline{PQ}_3 &amp; = &amp; 3(\overline{OQ}_3-\overline{OP})\\
+&amp; = &amp; 3\{\phi(t+\frac{1}{3}dt)-\phi(t)\}
+\end{array}
+$$
+And so on, each step evidently leading us nearer the sought truth. 
+Hence, to find the vector which would have been described in time 
+$dt$ had the circumstances of the motion at $P$ remained undisturbed, 
+we must find the value of 
+$$d\rho=\overline{Pq}=L_{x=\infty}x\left\{\phi\left(t+\frac{1}{x}dt\right)
+-\phi(t)\right\}$$
+
+We have seen that in this particular case we may use Taylor's 
+Theorem. We have, therefore, 
+$$
+\begin{array}{rcl}
+d\rho &amp; = &amp; L_{x=\infty}x
+\left\{
+\phi^{'}(t)\frac{1}{x}dt+
+\phi^{''}(t)\frac{1}{x^2}\frac{(dt)^2}{1\textrm{ . }2}+
+\textrm{\&amp;c}
+\right\}\\
+&amp;&amp;\\
+&amp; = &amp; \phi^{'}(t)dt
+\end{array}
+$$
+And, if we choose, we may now write 
+$$\frac{d\rho}{dt}=\phi^{'}(t)$$
+
+{\bf 37}. But it is to be most particularly remarked that in the 
+whole of this investigation no regard whatever has been paid to 
+the magnitude of $dt$. The question which we have now answered 
+may be put in the form -- {\sl A point describes a given curve in a given 
+manner. At any point of its path its motion suddenly ceases to be 
+accelerated. What space will it describe in a definite interval?} As 
+Hamilton well observes, this is, for a planet or comet, the case 
+of a 'celestial Atwood's machine'. 
+
+{\bf 38}. If we suppose the variable, in terms of which $\rho$ is expressed, 
+to be the arc, $s$, of the curve measured from some fixed point, we 
+find as before 
+$$d\rho = \phi^{'}(x)ds$$
+From the very nature of the question it is obvious that the length 
+of $dp$ must in this case be $ds$, so that $\phi^{'}(s)$ 
+is necessarily a unit-vector. 
+This remark is of importance, as we shall see later; and 
+it may therefore be useful to obtain afresh the above result without 
+any reference to time or velocity. 
+
+{\bf 39}. Following strictly the process of Newton s VIIth Lemma, 
+let us describe on $Pq_2$ an arc similar to $PQ_2$, and so on. Then 
+obviously, as the subdivision of $ds$ is carried farther, the new arc 
+(whose length is always $ds$) more and more nearly (and without 
+limit) coincides with the line which expresses the corresponding 
+approximation to $dp$. 
+
+{\bf 40}. As additional examples let us take some well-known 
+{\sl plane} curves; and first the hyperbola (\S 31 ($k$))
+$$\rho=\alpha t + \frac{\beta}{t}$$
+Here
+$$d\rho=\left(\alpha-\frac{\beta}{t^2}\right)dt$$
+This shows that the tangent is parallel to the vector 
+$$\alpha t - \frac{\beta}{t}$$
+In words, {\sl if the vector (from the centre) of a point in a hyperbola 
+be one diagonal of a parallelogram, two of whose sides coincide with 
+the asymptotes, the other diagonal is parallel to the tangent at the 
+point, and cuts off a constant area from the space between the 
+asymptotes}. (For the sides of this triangular area are $t$ times the 
+length of $\alpha$, and $1/t$
+times the length of $\beta$, respectively; the angle 
+between them being constant.) 
+
+Next, take the cycloid, as in \S 31 ($k$), 
+$$\rho=\alpha(t+\sin t)+\beta\cos t$$
+We have 
+$$d\rho=\{\alpha(1+\cos t)-\beta\sin t\}dt$$
+At the vertex 
+$$t=0,\hbox{\hskip 0.5cm}
+\cos t=1,\hbox{\hskip 0.5cm}
+\sin t=0,\hbox{\hskip 0.5cm}
+\textrm{ and }d\rho=2\alpha dt$$
+At a cusp 
+$$t=\pi,\hbox{\hskip 0.5cm}
+\cos t=-1,\hbox{\hskip 0.5cm}
+\sin t=0,\hbox{\hskip 0.5cm}
+\textrm{ and }d\rho = 0$$
+
+This indicates that, at the cusp, the tracing point is (
+instantaneously) at rest. To find the direction of the tangent, and the 
+form of the curve in the vicinity of the cusp, put $t=\pi+\tau$,
+where powers of $\tau$ above the second are omitted. We have 
+$$d\rho=\beta\tau dt + \frac{\alpha\tau^2}{2}dt$$
+so that, at the cusp, the tangent is parallel to $\beta$. By making the 
+same substitution in the expression for $\rho$, we find that the part of 
+the curve near the cusp is a semicubical parabola, 
+$$\rho=\alpha(\pi+\tau^3/6)-\beta(1-\tau^2/2)$$
+or, if the origin be shifted to the cusp ($\rho=\pi\alpha-\beta$),
+$$\rho=\alpha\tau^3/6+\beta\tau^2/2$$
+
+{\bf 41}. Let us reverse the first of these questions, and {\sl seek the 
+envelope of a line which cuts off from two fixed axes a triangle of 
+constant area}. 
+
+If the axes be in the directions of $\alpha$ and $\beta$, the intercepts may 
+evidently be written $\alpha t$ and $\frac{\beta}{t}$.
+Hence the equation of the line is (\S 30) 
+$$\rho=\alpha t + x\left(\frac{\beta}{t}-\alpha t\right)$$
+
+The condition of envelopment is, obviously, (see Chap. IX.) 
+$$d\rho = 0$$
+This gives 
+$0 = \left\{\alpha-x\left(\frac{\beta}{t^2}+\alpha\right)\right\}dt+
+\left(\frac{\beta}{t}-\alpha t\right)dx$
+%tpdhere -- this should use an asterisk, a number looks like a superscript
+\setcounter{footnote}{1}%% use a dagger because number looks like superscript
+\footnote{
+Here we have opportunity for a remark (very simple indeed, but) 
+of the utmost importance. {\sl We are not to equate separately to zero the 
+coefficients of dt and dx}; for we must remember that this equation is 
+of the form 
+$$0=p\alpha + q\beta$$
+where $p$ and $q$ are numbers; and that, so long as $\alpha$ and $\beta$ 
+are actual and non-parallel vectors, the existence of such an equation 
+requires (\S 24)}
+
+%tpdhere this is a cheesy use of \leqno. figure out how to do it right.
+\noindent
+$$\leqno{\textrm{Hence}}\hbox{\hskip 4cm}(1-x)dt-tdx=0$$
+%tpdhere -- this text comes out little. 
+$$\leqno{\textrm{and}}\hbox{\hskip 4cm}-\frac{x}{t^2}dt+\frac{dx}{t}=0$$
+From these, at once, $x = \frac{1}{2}$, since $dx$ and $dt$ are indeterminate. 
+Thus the equation of the envelope is 
+$$\begin{array}{rcl}
+\rho &amp; = &amp; \alpha t + \frac{1}{2}\left(\frac{\beta}{t}-\alpha t\right)\\
+     &amp; = &amp; \frac{1}{2}\left(\alpha t + \frac{\beta}{t}\right)
+\end{array}$$
+the hyperbola as before; $\alpha$, $\beta$ being portions of its asymptotes. 
+
+{\bf 42}. It may assist the student to a thorough comprehension 
+of the above process, if we put it in a slightly different form. 
+Thus the equation of the enveloping line may be written 
+$$\rho=\alpha t(1-x)+\beta\frac{x}{t}$$
+which gives 
+$$d\rho = 0 = \alpha d\{t(1-x)\}+\beta d\left(\frac{x}{t}\right)$$
+Hence, as $\alpha$ is not parallel to $\beta$, we must have 
+$$d\{t(1-x)\}=0,\hbox{\hskip 1cm}d\left(\frac{x}{t}\right)=0$$
+and these are, when expanded, the equations we obtained in the 
+preceding section. 
+
+{\bf 43}. For farther illustration we give a solution not directly 
+employing the differential calculus. The equations of any two of 
+the enveloping lines are 
+$$\rho=\alpha t + x\left(\frac{\beta}{t}-\alpha t\right)$$
+$$\rho=\alpha t_1 + x_1\left(\frac{\beta}{t_1}-\alpha t_1\right)$$
+$t$ and $t_1$ being given, while $x$ and $x_1$ are indeterminate. 
+
+At the point of intersection of these lines we have (\S 26), 
+$$
+\left.
+\begin{array}{rcl}
+t(1-x) &amp; = &amp; t_1(1-x_1)\\
+\frac{x}{t} &amp; = &amp; \frac{x_1}{t_1}
+\end{array}
+\right\}$$
+These give, by eliminating $x_1$
+$$t(1-x)=t_1\left(1-\frac{t_1}{t}x\right)$$
+$$\leqno{\textrm{or}}\hbox{\hskip 4cm}x=\frac{t}{t_1+t}$$
+Hence the vector of the point of intersection is 
+$$\rho=\frac{\alpha tt_1+\beta}{t_1+t}$$
+and thus, for the ultimate intersections, where $L\frac{t_1}{t}=1$,
+$$\rho=\frac{1}{2}\left(\alpha t+\frac{\beta}{t}\right)
+\textrm{ as before }$$
+COR. If. instead of the {\sl ultimate} intersections, we consider 
+the intersections of pairs of these lines related by some law, we 
+obtain useful results. Thus let 
+$$tt_1 = 1$$
+$$\rho=\frac{\alpha+\beta}{t+\frac{1}{t}}$$
+or the intersection lies in the diagonal of the parallelogram on 
+$\alpha$, $\beta$.
+
+If $t_1=mt$, where $m$ is constant, 
+$$\rho=\frac{mt\alpha+\frac{\beta}{t}}{m+1}$$
+But we have also $x=\frac{1}{m+1}$
+
+Hence {\sl the locus of a point which divides in a given ratio a line 
+cutting off a given area from two fixed axes, is a hyperbola of which 
+these axes are the asymptotes}. 
+
+If we take either 
+$$tt_1(t+t_1)=\textrm{constant, or }
+\frac{t^2t_1^2}{t+t_1}=\textrm{constant}$$
+the locus is a parabola; and so on. 
+
+It will be excellent practice for the student, at this stage, to 
+work out in detail a number of similar questions relating to the 
+envelope of, or the locus of the intersection of selected pairs from, a 
+series of lines drawn according to a given law. And the process 
+may easily be extended to planes. Thus, for instance, we may 
+form the general equation of planes which cut off constant tetrahedra 
+from the axes of coordinates. Their envelope is a surface of 
+the third degree whose equation may be written 
+$$\rho=x\alpha+y\beta+z\gamma$$
+$$\leqno{\textrm{where}}\hbox{\hskip 4cm}xyz=\alpha^3$$
+
+Again, find the locus of the point of intersection of three of 
+this group of planes, such that 
+the first intercepts on $\beta$ and $\gamma$, 
+the second on $\gamma$ and $\alpha$, 
+the third on $\alpha$ and $\beta$, lengths all equal to one 
+another, \&amp;c. But we must not loiter with such simple matters as 
+these. 
+
+{\bf 44}. The reader who is fond of Anharmonic Ratios and Trans 
+versals will find in the early chapters of Hamilton's {\sl Elements of 
+Quaternions} an admirable application of the composition of vectors 
+to these subjects. The Theory of Geometrical Nets, in a plane, 
+and in space, is there very fully developed; and the method is 
+shown to include, as particular cases, the corresponding processes of 
+Grassmann's {\sl Ausdehnungslehre} and M\&quot;obius' {\sl Barycentrische Calcul}. 
+Some very curious investigations connected with curves and surfaces 
+of the second and third degrees are also there founded upon the 
+composition of vectors. 
+
+\section{Examples To Chapter 1.}
+
+1. The lines which join, towards the same parts, the extremities 
+of two equal and parallel lines are themselves equal and parallel. 
+({\sl Euclid}, I. xxxiii.) 
+
+2. Find the vector of the middle point of the line which joins 
+the middle points of the diagonals of any quadrilateral, plane or 
+gauche, the vectors of the corners being given; and so prove that 
+this point is the mean point of the quadrilateral. 
+
+If two opposite sides be divided proportionally, and two new 
+quadrilaterals be formed by joining the points of division, the mean 
+points of the three quadrilaterals lie in a straight line. 
+
+Show that the mean point may also be found by bisecting the 
+line joining the middle points of a pair of opposite sides. 
+
+3. Verify that the property of the coefficients of three vectors 
+whose extremities are in a line (\S 30) is not interfered with by 
+altering the origin. 
+
+4. If two triangles $ABC$, $abc$, be so situated in space that $Aa$, 
+$Bb$, $Cc$ meet in a point, the intersections of $AB$, $ab$, of $BC$, $bc$, 
+and of $CA$, $ca$, lie in a straight line. 
+
+5. Prove the converse of 4, i.e. if lines be drawn, one in each 
+of two planes, from any three points in the straight line in which 
+these planes meet, the two triangles thus formed are sections of a 
+common pyramid. 
+
+6. If five quadrilaterals be formed by omitting in succession 
+each of the sides of any pentagon, the lines bisecting the diagonals 
+of these quadrilaterals meet in a point. (H. Fox Talbot.) 
+
+7. Assuming, as in \S 7, that the operator 
+$$\cos\theta + \sqrt{-1}\sin\theta$$
+turns any radius of a given circle through an angle $\theta$ in the 
+positive direction of rotation, without altering its length, deduce 
+the ordinary formulae for $\cos(A+B)$, $\cos(A-B)$, $\sin(A+B)$, and 
+$\sin(A-B)$, in terms of sines and cosines of $A$ and $B$. 
+
+8. If two tangents be drawn to a hyperbola, the line joining 
+the centre with their point of intersection bisects the lines join 
+ing the points where the tangents meet the asymptotes : and the 
+secant through the points of contact bisects the intercepts on 
+the asymptotes. 
+
+9. Any two tangents, limited by the asymptotes, divide each 
+other proportionally. 
+
+10. If a chord of a hyperbola be one diagonal of a parallelogram 
+whose sides are parallel to the asymptotes, the other diagonal passes 
+through the centre. 
+
+11. Given two points $A$ and $B$, and a plane, $C$. Find the 
+locus of $P$, such that if $AP$ cut $C$ in $Q$, and $BP$ cut $C$ in $R$, 
+$\overline{QR}$ may be a given vector. 
+
+12. Show that\hbox{\hskip 1cm} $\rho = x^2\alpha+y^2\beta+(x+y)^2\gamma$\\
+is the equation of a cone of the second degree, and that its section 
+by the plane 
+$$\rho=\frac{p\alpha+q\beta+r\gamma}{p+q+r}$$
+is an ellipse which touches, at their middle points, the sides of the 
+triangle of whose corners $\alpha$, $\beta$, $\gamma$ 
+are the vectors. (Hamilton, {\sl Elements}, p. 96.) 
+
+13. The lines which divide, proportionally, the pairs of opposite 
+sides of a gauche quadrilateral, are the generating lines of a 
+hyperbolic paraboloid. ({\sl Ibid}. p. 97.) 
+
+14. Show that\hbox{\hskip 2cm} $\rho=x^3\alpha+y^3\beta+z^3\gamma$\\
+where\hbox{\hskip 4cm} $x+y+z=0$\\
+represents a cone of the third order, and that its section by the plane 
+$$\rho=\frac{p\alpha+q\beta+r\gamma}{p+q+r}$$
+is a cubic curve, of which the lines 
+$$\rho=\frac{p\alpha+q\beta}{p+q},\textrm{ \&amp;c}$$
+are the asymptotes and the three (real) tangents of inflection. Also 
+that the mean point of the triangle formed by these lines is a 
+conjugate point of the curve. Hence that the vector $\alpha+\beta+\gamma$
+is a conjugate ray of the cone. ({\sl Ibid}. p. 96.) 
+
+\section{Products And Quotients of Vectors}
+
+{\bf 45}. We now come to the consideration of questions in which 
+the Calculus of Quaternions differs entirely from any previous 
+mathematical method; and here we shall get an idea of what a 
+Quaternion is, and whence it derives its name. These questions 
+are fundamentally involved in the novel use of the symbols of 
+multiplication and division. And the simplest introduction to 
+the subject seems to be the consideration of the quotient, or ratio, 
+of two vectors. 
+
+{\bf 46}. If the given vectors be parallel to each other, we have 
+already seen (\S 22) that either may be expressed as a numerical 
+multiple of the other; the multiplier being simply the ratio of 
+their lengths, taken positively if they have similar currency, 
+negatively if they run opposite ways. 
+
+{\bf 47}. If they be not parallel, let $\overline{OA}$ and 
+$\overline{OB}$ be drawn parallel 
+and equal to them from any point $O$; and the question is reduced 
+to finding the value of the ratio of two vectors drawn from the 
+same point. Let us first find {\sl upon how many distinct numbers this 
+ratio depends}.
+
+We may suppose $\overline{OA}$ to be changed into 
+$\overline{OB}$ by the following successive processes. 
+
+1st. Increase or diminish the length of $\overline{OA}$ till it becomes 
+equal to that of $\overline{OB}$. For this only one number is required, viz. 
+the ratio of the lengths of the two vectors. As Hamilton remarks, 
+this is a positive, or rather a {\sl signless}, number. 
+
+2nd. Turn $\overline{OA}$ about $O$, in the common plane of the two 
+vectors, until its direction coincides with that of $\overline{OB}$, and 
+(remembering the effect of the first operation) we see that the two vectors 
+now coincide or become identical. To specify this operation three 
+numbers are required, viz. two angles (such as node and inclination 
+in the case of a planet's orbit) to fix the plane in which the rotation 
+takes place, and {\sl one} angle for the amount of this rotation. 
+
+Thus it appears that the ratio of two vectors, or the multiplier 
+required to change one vector into another, in general depends upon 
+{\sl four} distinct numbers, whence the name QUATERNION. 
+
+A quaternion q is thus {\sl defined} as expressing a relation 
+$$\beta=q\alpha$$
+between two vectors $\alpha$, $\beta$. 
+By what precedes, the vectors $\alpha$, $\beta$, 
+which serve for the definition of a given quaternion, must be in a 
+given plane, at a given inclination to each other, and with their 
+lengths in a given ratio ; but it is to be noticed that they may be 
+{\sl any} two such vectors. [{\sl Inclination} is understood to include sense, 
+or currency, of rotation from $\alpha$ to $\beta$.] 
+
+The particular case of perpendicularity of the two vectors, where 
+their quotient is a vector perpendicular to their plane, is fully 
+considered below; \S\S 64, 65, 72, \&amp;c. 
+
+{\bf 48}. It is obvious that the operations just described may be 
+performed, with the same result, in the opposite order, being perfectly 
+independent of each other. Thus it appears that a quaternion, 
+considered as the factor or agent which changes one definite vector 
+into another, may itself be decomposed into two factors of which 
+the order is immaterial. 
+
+The {\sl stretching} factor, or that which performs the first operation 
+in \S 47, is called the TENSOR, and is denoted by prefixing $T$ to the 
+quaternion considered. 
+
+The {\sl turning factor}, or that corresponding to the second operation 
+in \S 47, is called the VERSOR, and is denoted by the letter $U$ prefixed 
+to the quaternion. 
+
+{\bf 49}. Thus, if $\overline{OA} = \alpha$, 
+$\overline{OB} = \beta$, and if $q$ be the quaternion 
+which changes $\alpha$ to $\beta$, we have 
+$$\beta = q\alpha$$
+which we may write in the form 
+$$\frac{\beta}{\alpha} = q\textrm{,  or  }\beta\alpha^{-1}=q$$
+if we agree to {\sl define} that 
+$$\frac{\beta}{\alpha}\alpha = \beta\alpha^{-1}\alpha = \beta$$
+Here it is to be particularly noticed that we write $q$ 
+{\sl before} $\alpha$ to 
+signify that $\alpha$ is multiplied by (or operated on by) $q$, not $q$ 
+multiplied by $\alpha$.
+
+This remark is of extreme importance in quaternions, for, as we 
+shall soon see, the Commutative Law does not generally apply to 
+the factors of a product. 
+
+We have also, by \S\S 47, 48, 
+$$q=TqUq=UqTq$$
+where, as before, $Tq$ depends merely on the relative lengths of 
+$\alpha$ and $\beta$, and $Uq$ depends solely on their directions. 
+
+Thus, if $\alpha_1$ and $\beta_1$ 
+be vectors of unit length parallel to $\alpha$ and $\beta$
+respectively, 
+$$T\frac{\beta_1}{\alpha_1} = T\beta_1/T\alpha_1 = 1\textrm{,     }
+U\frac{\beta_1}{\alpha_1} = U\beta_1/U\alpha_1 = U\frac{\beta}{\alpha}$$
+As will soon be shown, when $\alpha$ is perpendicular to $\beta$, 
+i.e. when the versor of the quotient is quadrantal, it is a unit-vector. 
+
+{\bf 50}. We must now carefully notice that the quaternion which 
+is the quotient when $\beta$ is divided by $\alpha$ in no way depends upon 
+the {\sl absolute} lengths, or directions, of these vectors. Its value 
+will remain unchanged if we substitute for them any other pair 
+of vectors which 
+
+\noindent
+\hbox{\hskip 2cm}(1) have their lengths in the same ratio,
+
+\noindent
+\hbox{\hskip 2cm}(2) have their common plane the same or parallel,
+
+\noindent
+and\hbox{\hskip 1.32cm} (3) make the same angle with each other. 
+
+Thus in the annexed figure 
+
+\includegraphics{ps/quat6.ps}
+
+$$\frac{O_1B_1}{O_1A_1} = \frac{\overline{OB}}{\overline{OA}}$$
+if, and only if, 
+
+\noindent
+\hbox{\hskip 2cm}$(1)\textrm{     }\frac{O_1B_1}{O_1A_1} = \frac{OB}{OA}$
+
+\noindent
+\hbox{\hskip 2cm}$(2)\textrm{     plane }AOB\textrm{ parallel to plane }
+A_1O_1B_1$
+
+\noindent
+\hbox{\hskip 2cm}$(3)\textrm{     }\angle{}AOB = \angle A_1O_1B_1$
+
+[Equality of angles is understood to include 
+concurrency of rotation. Thus in the annexed 
+figure the rotation about an axis drawn upwards 
+from the plane is negative (or clock- wise) from 
+$OA$ to $OB$, and also from $O_1A_1$ to $O_1B_1$.] 
+
+It thus appears that if 
+$$\beta = q\alpha\textrm{,  }\delta = q\gamma$$
+the vectors $\alpha$, $\beta$, $\gamma$, $\delta$
+are parallel to one plane, and may be repre 
+sented (in a highly extended sense) as {\sl proportional} to one another, 
+thus: --
+$$\beta : \alpha = \delta : \gamma$$
+
+And it is clear from the previous part of this section that this 
+may be written not only in the form 
+$$\alpha : \beta = \gamma : \delta$$
+but also in either of the following forms: --
+$$\gamma : \alpha = \delta : \beta$$
+$$\alpha : \gamma = \beta : \delta$$
+
+While these proportions are true as equalities of ratios, they 
+do not usually imply equalities of products. 
+
+Thus, as the first of these was equivalent to the equation 
+$$\frac{\beta}{\alpha}=\frac{\delta}{\gamma}=q\textrm{,  or  }
+\beta\alpha^{-1}=\delta\gamma^{-1}=q$$
+the following three imply separately, (see next section) 
+$$\frac{\alpha}{\beta}=\frac{\gamma}{\delta}=q^{-1}\textrm{,   }
+\frac{\gamma}{\alpha}=\frac{\delta}{\beta}=r\textrm{,   }
+\frac{\alpha}{\gamma}=\frac{\beta}{\delta}=r^{-1}$$
+or, if we please, 
+$$\alpha\beta^{-1}=\gamma\delta^{-1}=q^{-1}\textrm{,   }
+\gamma\alpha^{-1}=\delta\beta^{-1}=r\textrm{,   }
+\alpha\gamma^{-1}=\beta\delta^{-1}=r^{-1}$$
+where $r$ is a {\sl new} quaternion, which has not necessarily anything 
+(except its plane), in common with $q$. 
+
+But here great caution is requisite, for we are {\sl not} entitled to 
+conclude from these that 
+$$\alpha\delta=\beta\gamma\textrm{, \&amp;c.}$$
+
+This point will be fully discussed at a later stage. Meanwhile 
+we may merely {\sl state} that from 
+$$\frac{\alpha}{\beta}=\frac{\gamma}{\delta}\textrm{,  or  }
+\frac{\beta}{\alpha} = \frac{\delta}{\gamma}$$
+we are entitled to deduce a number of equivalents such as 
+$$\alpha\beta^{-1}\delta=\gamma\textrm{, or  }
+\alpha=\gamma\delta^{-1}\beta\textrm{, or  }
+\beta^{-1}\delta=\alpha^{-1}\gamma\textrm{, \&amp;c}$$
+
+{\bf 51}. The {\sl Reciprocal} of a quaternion $q$ is defined by the 
+equation 
+$$\frac{1}{q}q=q^{-1}=1=q\frac{1}{q}=qqe^{-1}$$
+Hence if
+$$\frac{\beta}{\alpha}=q\textrm{,  or}$$
+$$\beta=q\alpha$$
+we must have
+$$\frac{\alpha}{\beta}=\frac{1}{q}=q^{-1}$$
+For this gives
+$$\frac{\alpha}{\beta}\beta=q^{-1}q\alpha$$
+and each member of the equation is evidently equal to $\alpha$.
+Or thus: --
+$$\beta=q\alpha$$
+Operate {\sl by} $q^{-1}$
+$$q^{-1}\beta = \alpha$$
+Operate {\sl on} $\beta^{-1}$
+$$q^{-1} = \alpha\beta^{-1} = \frac{\alpha}{\beta}$$
+
+Or, we may reason thus: -- since $q$ changes $\overline{OA}$ to 
+$\overline{OA}$, $q^{-1}$ must
+change $\overline{OB}$ to $\overline{OA}$, 
+and is therefore expressed by $\frac{\alpha}{\beta}$ (\S 49). 
+
+The tensor of the reciprocal of a quaternion is therefore the 
+reciprocal of the tensor; and the versor differs merely by the 
+{\sl reversal} of its representative angle. The versor, it must be 
+remembered, gives the plane and angle of the turning -- it has 
+nothing to do with the extension. 
+
+[{\sl Remark}. In \S\S 49--51, above, we had such expressions as 
+$\frac{\beta}{\alpha}=\beta\alpha^{-1}$. 
+We have also met with $\alpha^{-1}\beta$. Cayley suggests that this 
+also may be written in the ordinary fractional form by employing 
+the following distinctive notation: --
+$$\frac{\beta}{\alpha}=\beta\alpha^{-1}=\frac{\beta|}{|\alpha}\textrm{,   }
+\alpha^{-1}\beta=\frac{|\beta}{\alpha|}$$
+
+(It might, perhaps, be even simpler to use the {\sl solidus} as 
+recommended by Stokes, along with an obviously correlative 
+type:-- thus, 
+$$\frac{\beta}{\alpha}=\beta\alpha^{-1}=\beta/\alpha\textrm{,   }
+\alpha^{-1}\beta=\alpha\\ \beta$$
+
+I have found such notations occasionally convenient for private 
+work, but I hesitate to introduce changes unless they are abso 
+lutely required. See remarks on this point towards the end of the 
+{\sl Preface to the Second Edition} reprinted above.] 
+
+{\bf 52}. The {\sl Conjugate} of a quaternion $q$, written $Kq$, has the 
+same tensor, plane, and angle, only the angle is taken the reverse 
+way; or the versor of the conjugate is the reciprocal of the versor 
+of the quaternion, or (what comes to the same thing) the versor of 
+the reciprocal. 
+
+\includegraphics{ps/quat7.ps}
+
+Thus, if $OA$, $OB$, $OA^{'}$ , lie in one plane, and if 
+$OA^{'} = OA$, and $\angle A^{'}OB = \angle BOA$, we have 
+$$\frac{\overline{OB}}{\overline{OA}}=q$$, 
+and 
+$$\frac{\overline{OB}}{\overline{OA^{'}}}=\textrm{  congugate of }q=Kq$$
+
+By last section we see that 
+$$Kq=(Tq)^2q^{-1}$$
+Hence\hbox{\hskip 4cm}$qKq=Kqq=(Tq)^2$
+
+This proposition is obvious, if we recollect that 
+the tensors of $q$ and $Kq$ are equal, and that the 
+versors are such that either {\sl annuls} the effect of the other; while 
+the order of their application is indifferent. The joint effect of 
+these factors is therefore merely to multiply twice over by the 
+common tensor. 
+
+{\bf 53}. It is evident from the results of \S 50 that, if $\alpha$ and $\beta$
+be of equal length, they may be treated as of unit-length so far as 
+their quaternion quotient is concerned. This quotient is therefore 
+a versor (the tensor being unity) and may be represented indifferently 
+by any one of an infinite number of concurrent arcs of 
+given length lying on the circumference of a circle, of which the 
+two vectors are radii. This is of considerable importance in the 
+proofs which follow. 
+
+\includegraphics{ps/quat8.ps}
+
+Thus the versor 
+${\displaystyle \frac{\overline{OB}}{\overline{OA}}}$ may be represented 
+in magnitude, plane, and currency of rotation (\S 50) 
+by the arc $AB$, which may in this extended sense be written 
+${\stackrel{\frown}{AB}}$. 
+
+And, similarly, the versor 
+${\displaystyle \frac{\overline{OB_1}}{\overline{OA_1}}}$ 
+may be represented by 
+${\stackrel{\frown}{A_1B_1}}$
+which is equal to (and concurrent with) 
+${\stackrel{\frown}{AB}}$ if
+$$\angle A_1OB_1 = \angle AOB$$
+i.e. if the versors are {\sl equal}, in the quaternion meaning of the 
+word. 
+
+{\bf 54}. By the aid of this process, when a versor is represented as 
+an arc of a great circle on the unit-sphere, we can easily prove 
+that {\sl quaternion multiplication is not generally commutative}.
+
+\includegraphics{ps/quat9.ps}
+
+Thus let $q$ be the versor ${\stackrel{\frown}{AB}}$ or
+${\displaystyle \frac{\overline{OB}}{\overline{OA}}}$,
+where $O$ is the centre of the sphere. 
+
+Take ${\stackrel{\frown}{BC}} = {\stackrel{\frown}{AB}}$, 
+(which, it must be remembered, makes the points $A$, $B$, $C$, lie 
+in one great circle), then $q$ may also be 
+represented by ${\displaystyle \frac{\overline{OC}}{\overline{OB}}}$.
+
+In the same way any other versor $r$ may be represented by 
+${\stackrel{\frown}{DB}}$ or ${\stackrel{\frown}{BE}}$ and by 
+${\displaystyle \frac{\overline{OB}}{\overline{OD}}}$ or
+${\displaystyle \frac{\overline{OE}}{\overline{OB}}}$.
+
+[The line $OB$ in the figure is definite, and is given by the 
+intersection of the planes of the two versors.] 
+
+Now $r\overline{OD} = \overline{OB}$, and $q\overline{OB}=\overline{OC}$. 
+
+Hence $qr\overline{OD} = \overline{OC}$, 
+
+or $qr = {\displaystyle \frac{\overline{OC}}{\overline{OD}}}$, 
+and may therefore be represented by the arc ${\stackrel{\frown}{DC}}$ of 
+a great circle. 
+
+But $rq$ is easily seen to be represented by the arc 
+${\stackrel{\frown}{AE}}$. 
+
+For $q\overline{OA}=\overline{OB}$, and $r\overline{OB}=\overline{OE}$, 
+
+whence $rq\overline{OA} = \overline{OE}$. and 
+$rq = {\displaystyle \frac{\overline{OE}}{\overline{OA}}}$.
+
+Thus the versors $rq$ and $qr$, though represented by arcs of equal 
+length, are not generally in the same plane and are therefore 
+unequal: unless the planes of $q$ and $r$ coincide. 
+
+Remark. We see that we have assumed, or defined, in the 
+above proof, that $q . r\alpha = qr . \alpha$. 
+and $r.q\alpha = rq.\alpha$ in the special case 
+when $q\alpha$, $r\alpha$, $q.r\alpha$ and $r.q\alpha$ are all {\sl vectors}. 
+
+{\bf 55}. Obviously ${\stackrel{\frown}{CB}}$ is $Kq$, 
+${\stackrel{\frown}{BD}}$ is $Kr$, and 
+${\stackrel{\frown}{CD}}$ is $K (qr)$. But 
+${\stackrel{\frown}{CD}} = {\stackrel{\frown}{BD}}.{\stackrel{\frown}{CB}}$
+as we see by applying both to OC. This gives us 
+the very important theorem 
+$$K (qr) = Kr . Kq$$
+i.e. {\sl the conjugate of the product of two versors is the product of their 
+conjugates in inverted order}. This will, of course, be extended to 
+any number of factors as soon as we have proved the associative 
+property of multiplication. (\S 58 below.) 
+
+{\bf 56}. The propositions just proved are, of course, true of quater 
+nions as well as of versors; for the former involve only an additional 
+numerical factor which has reference to the length merely, and not 
+the direction, of a vector (\S 48), and is therefore commutative with 
+all other factors. 
+
+{\bf 57}. Seeing thus that the commutative law does not in general 
+hold in the multiplication of quaternions, let us enquire whether 
+the Associative Law holds generally. That is if $p$, $q$, $r$ be three 
+quaternions, have we 
+$$p.qr = pq.r?$$
+
+This is, of course, obviously true if $p$, $q$, $r$ be numerical quantities, 
+or even any of the imaginaries of algebra. But it cannot be con 
+sidered as a truism for symbols which do not in general give 
+
+$$pq = qp$$
+
+We have assumed it, in definition, for the special case when $r$, 
+$qr$, and $pqr$ are all vectors. (\S 54.) But we are not entitled to 
+assume any more than is absolutely required to make our 
+definitions complete. 
+
+{\bf 58}. In the first place we remark that $p$, $q$, and $r$ may be 
+considered as versors only, and therefore represented by arcs of  
+great circles on the unit sphere, for their tensors may obviously 
+(\S 48) be divided out from both sides, being commutative with the 
+versors. 
+
+Let ${\stackrel{\frown}{AB}}=p$,
+${\stackrel{\frown}{ED}} = {\stackrel{\frown}{CA}} = q$, and 
+${\stackrel{\frown}{FE}} = r$. 
+
+Join $BC$ and produce the great circle till it meets $EF$ in $H$, and 
+make ${\stackrel{\frown}{KH}}={\stackrel{\frown}{FE}} = r$, 
+and ${\stackrel{\frown}{HG}} = {\stackrel{\frown}{CB}} =pq$ (\S 54).
+ 
+\includegraphics{ps/quat10.ps}
+
+Join $GK$. Then 
+${\stackrel{\frown}{KG}} = 
+{\stackrel{\frown}{HG}} . {\stackrel{\frown}{KH}} = pq . r$. 
+
+Join $FD$ and produce it to meet $AB$ in $M$. Make 
+$${\stackrel{\frown}{LM}} = {\stackrel{\frown}{FD}}
+\textrm{,  and  }{\stackrel{\frown}{MN}} = {\stackrel{\frown}{AB}}$$ 
+
+and join $NL$. Then 
+$${\stackrel{\frown}{LN}}= {\stackrel{\frown}{MN}} .
+{\stackrel{\frown}{LM}}=p.qr$$. 
+
+Hence to show that $p . qr = pq . r$ 
+
+all that is requisite is to prove that $LN$, and $KG$, described as 
+above, are {\sl equal arcs of the same great circle}, since, by the figure, 
+they have evidently similar currency. This is perhaps most easily 
+effected by the help of the fundamental properties of the curves 
+known as {\sl Spherical Conics}. As they are not usually familiar to 
+students, we make a slight digression for the purpose of proving 
+these fundamental properties ; after Chasles, by whom and Magnus 
+they were discovered. An independent proof of the associative 
+principle will presently be indicated, and in Chapter VIII. we shall 
+employ quaternions to give an independent proof of the theorems 
+now to be established. 
+
+{\bf 59}.* DEF. {\sl A spherical conic is the curve of intersection of a 
+cone of the second degree with a sphere, the vertex of the cone being 
+the centre of the sphere}. 
+
+LEMMA. If a cone have one series of circular sections, it has 
+another series, and any two circles belonging to different series lie 
+on a sphere. This is easily proved as follows. 
+
+Describe a sphere, $A$, cutting the cone in one circular section, 
+$C$, and in any other point whatever, and let the side $OpP$ of the 
+cone meet $A$ in $p$, $P$ ; $P$ being a point in $C$. Then $PO.Op$ is 
+constant, and, therefore, since $P$ lies in a plane, $p$ lies on a sphere, 
+$a$, passing through $0$. Hence the locus, $c$, of $p$ is a circle, being 
+the intersection of the two spheres $A$ and $a$. 
+
+Let $OqQ$ be any other side of the cone, $q$ and $Q$ being points in 
+$c$, $C$ respectively. Then the quadrilateral $qQPp$ is inscribed in a 
+circle (that in which its plane cuts the sphere $A$) and the exterior
+ 
+\includegraphics{ps/quat11.ps}
+
+angle at $p$ is equal to the interior angle at $Q$. If $OL$, $OM$ be the 
+lines in which the plane $POQ$ cuts the {\sl cyclic planes} (planes through 
+$O$ parallel to the two series of circular sections) they are obviously 
+parallel to $pq$, $QP$, respectively; and therefore 
+
+$$\angle LOp = \angle Opq = \angle OQP = \angle MOQ$$ 
+
+Let any third side, $OrR$, of the cone be drawn, and let the 
+plane $OPR$ cut the cyclic planes in $0l$, $Om$ respectively. Then, 
+evidently, 
+$$\angle lOL = \angle qpr$$
+$$\angle MOm = \angle QPR$$
+
+and these angles are independent of the position of the points $p$ 
+and $P$, if $Q$ and $R$ be fixed points. 
+
+\includegraphics{ps/quat12.ps}
+
+In the annexed section of the above space-diagram by a sphere 
+whose centre is $O$, $lL$, $Mm$ are the great circles which represent 
+the cyclic planes, $PQR$ is the spherical conic which represents the 
+cone. The point $P$ represents the line $OpP$, and so with the 
+others. The propositions above may now be stated thus, 
+
+$$\textrm{Arc  } PL = \textrm{arc } MQ$$ 
+
+and, if $Q$ and $R$ be fixed, $Mm$ and $lL$ are constant arcs whatever be 
+the position of $P$. 
+
+{\bf 60}. The application to \S 58 is now obvious. In the figure of 
+that article we have 
+$$
+{\stackrel{\frown}{FE}}={\stackrel{\frown}{KH}}\textrm{,  }
+{\stackrel{\frown}{ED}}={\stackrel{\frown}{CA}}\textrm{,  }
+{\stackrel{\frown}{HG}}={\stackrel{\frown}{CB}}\textrm{,  }
+{\stackrel{\frown}{LM}}={\stackrel{\frown}{FD}}
+$$
+
+Hence $L$, $C$, $G$, $D$ are points of a spherical conic whose cyclic 
+planes are those of $AB$, $FE$. Hence also $KG$ passes through $L$, 
+and with $LM$ intercepts on $AB$ an arc equal to 
+${\stackrel{\frown}{AB}}$. That is, it 
+passes through $N$, or $KG$ and $LN$ are arcs of the same great circle : 
+and they are equal, for $G$ and $L$ are points in the spherical 
+conic. 
+
+Also, the associative principle holds for any number of 
+quaternion factors. For, obviously, 
+
+$$qr . st = qrs . t = \textrm{\&amp;c., \&amp;c.,}$$ 
+
+since we may consider $qr$ as a single quaternion, and the above 
+proof applies directly. 
+
+{\bf 61}. That quaternion addition, and therefore also subtraction, 
+is commutative, it is easy to show. 
+
+\includegraphics{ps/quat13.ps}
+
+For if the planes of two quaternions, 
+$q$ and $r$, intersect in the line $OA$, we 
+may take any vector $\overline{OA}$ in that line, 
+and at once find two others, $\overline{OB}$ and 
+$\overline{OC}$, such that 
+
+$$\overline{OB} = q\overline{OA}$$ 
+and\hbox{\hskip 4cm}$\overline{CO} = r\overline{OA}$ 
+
+And\hbox{\hskip 2cm}$(q + r)\overline{OA}
+\overline{OB}+\overline{OC}=\overline{OC}+\overline{OB}=
+(r + q) \overline{OA}$ 
+
+since vector addition is commutative (\S 27). 
+
+Here it is obvious that $(q + r) \overline{OA}$, being the diagonal of the 
+parallelogram on $\overline{OB}$, $\overline{OC}$, 
+divides the angle between $OB$ and $OC$ 
+in a ratio depending solely on the ratio of the lengths of these 
+lines, i.e. on the ratio of the tensors of $q$ and $r$. This will be useful 
+to us in the proof of the distributive law, to which we proceed. 
+
+{\bf 62}. Quaternion multiplication, and therefore division, is 
+distributive. One simple proof of this depends on the possibility, 
+shortly to be proved, of representing {\sl any} quaternion as a linear 
+function of three given rectangular unit- vectors. And when the 
+proposition is thus established, the associative principle may readily 
+be deduced from it. 
+
+[But Hamilton seems not to have noticed that we may employ 
+for its proof the properties of Spherical Conies already employed 
+
+\includegraphics{ps/quat14.ps}
+
+in demonstrating the truth of the associative principle. &quot;For 
+continuity we give an outline of the proof by this process. 
+
+Let ${\stackrel{\frown}{BA}}$, 
+${\stackrel{\frown}{CA}}$ 
+represent the versors of $q$ and $r$, and be the great 
+circle whose plane is that of $p$. 
+
+Then, if we take as operand the vector $\overline{OA}$, it is obvious that 
+$U (q + r)$ will be represented by some such arc as 
+${\stackrel{\frown}{DA}}$ where 
+$B$, $D$, $C$ are in one great circle; 
+for $(q + r) \overline{OA}$ is in the same plane 
+as $q\overline{OA}$ and $r\overline{OA}$, 
+and the relative magnitude of the arcs $BD$ and 
+$DC$ depends solely on the tensors of $q$ and $r$. Produce $BA$, $DA$, 
+$CA$ to meet be in $b$, $d$, $c$ respectively, and make 
+
+$${\stackrel{\frown}{Eb}} = {\stackrel{\frown}{BA}}, 
+{\stackrel{\frown}{Fd}} = {\stackrel{\frown}{DA}}, 
+{\stackrel{\frown}{Gc}} = {\stackrel{\frown}{CA}}$$ 
+
+Also make 
+${\stackrel{\frown}{b\beta}} = 
+{\stackrel{\frown}{d\delta}} = 
+{\stackrel{\frown}{c\gamma}}=p$. Then $E$, $F$, $G$, $A$ lie on a spherical 
+conic of which $BC$ and $bc$ are the cyclic arcs. And, because 
+${\stackrel{\frown}{b\beta}} = 
+{\stackrel{\frown}{d\delta}} = 
+{\stackrel{\frown}{c\gamma}}$, 
+${\stackrel{\frown}{\beta E}}$, 
+${\stackrel{\frown}{\delta F}}$, 
+${\stackrel{\frown}{\gamma G}}$, when produced, meet in a point $H$ 
+which is also on the spherical conic (\S 59*). Let these arcs meet $BC$
+in $J$, $L$, $K$ respectively. Then we have 
+$${\stackrel{\frown}{JH}}={\stackrel{\frown}{E\beta}}=pUq$$
+$${\stackrel{\frown}{LH}}={\stackrel{\frown}{F\delta}}=pU(q+r)$$
+$${\stackrel{\frown}{KH}}={\stackrel{\frown}{G\gamma}}=pUr$$
+Also\hbox{\hskip 4cm}${\stackrel{\frown}{LJ}}={\stackrel{\frown}{DB}}$\\
+and\hbox{\hskip 4cm}${\stackrel{\frown}{KL}}={\stackrel{\frown}{CD}}$
+
+And, on comparing the portions of the figure bounded respectively 
+by $HKJ$ and by $ACB$ we see that (when considered with reference 
+to their effects as factors multiplying 
+$\overline{OH}$ and $\overline{OA}$ respectively) 
+
+\hbox{\hskip 2cm}$pU(q4+r)$ bears the same relation to $pUq$ and $pUr$\\ 
+that\hbox{\hskip 1cm}$U(q+r)$ bears to $Uq$ and $Ur$.\\
+But\hbox{\hskip 1cm}$T(q+r)U(q+r)=q+r=TqUq+TrUr$. \\
+Hence\hbox{\hskip 1cm}$T(q+r).pU(q+r)=Tq .pUq+Tr.pUr$;\\
+or, since the tensors are mere numbers and commutative with all 
+other factors, 
+$$p(q+r)=pq+pr$$
+In a similar manner it may be proved that 
+$$(q+ )p=qp+rp$$
+And then it follows at once that 
+$$(p + q) (r + s) = pr + ps + qr + qs$$ 
+where, by \S 61, the order of the partial products is immaterial.] 
+
+{\bf 63}. By similar processes to those of \S 53 we see that versors, 
+and therefore also quaternions, are subject to the index-law 
+$$q^m.q^n=q^{m+n}$$
+at least so long as $m$ and $n$ are positive integers. 
+
+The extension of this property to negative and fractional 
+exponents must be deferred until we have defined a negative or 
+fractional power of a quaternion. 
+
+{\bf 64}. We now proceed to the special case of {\sl quadrantal} versors, 
+from whose properties it is easy to deduce all the foregoing 
+results of this chapter. It was, in fact, these properties whose 
+invention by Hamilton in 1843 led almost intuitively to the 
+establishment of the Quaternion Calculus. We shall content 
+ourselves at present with an assumption, which will be shown 
+to lead to consistent results ; but at the end of the chapter we 
+shall show that no other assumption is possible, following for this 
+purpose a very curious quasi-metaphysical speculation of Hamilton. 
+
+{\bf 65}. Suppose we have a system of three mutually perpendicular 
+unit-vectors, drawn from one point, which we may call for shortness 
+{\bf i}, {\bf j}, {\bf k}. 
+Suppose also that these are so situated that a positive 
+(i.e. {\sl left-handed}) rotation through a right angle about {\bf i} 
+as an axis 
+brings {\bf j} to coincide with {\bf k}. Then it is obvious that positive 
+quadrantal rotation about {\bf j} will make {\bf k} coincide with {\bf i}; 
+and, about {\bf k}, will make {\bf i} coincide with {\bf j}. 
+
+For defniteness we may suppose {\bf i} to be drawn {\sl eastwards}, {\bf j} 
+{\sl northwards}, and {\bf k} {\sl upwards}. 
+Then it is obvious that a positive 
+(left-handed) rotation about the eastward line ({\bf i}) brings the northward
+line ({\bf j}) into a vertically upward position ({\bf k}) ; and so of the 
+others. 
+
+{\bf 66}. Now the operator which turns {\bf j} into {\bf k} is a quadrantal 
+versor (\S 53) ; and, as its axis is the vector {\bf i}, 
+we may call it {\sl i}. 
+
+Thus $$\frac{{\rm {\bf k}}}{{\rm {\bf j}}}=
+i\textrm{, or }{\rm {\bf k}}=i{\rm {\bf j}}\eqno{(1)}$$
+
+Similary we may put$$\frac{{\rm {\bf i}}}{{\rm {\bf k}}}=
+j\textrm{, or }{\rm {\bf i}}=j{\rm {\bf k}}\eqno{(2)}$$
+
+and $$\frac{{\rm {\bf j}}}{{\rm {\bf i}}}=
+k\textrm{, or }{\rm {\bf j}}=k{\rm {\bf i}}\eqno{(3)}$$
+
+[It may be here noticed, merely to show the symmetry of the 
+system we arc explaining, that if the three mutually perpendicular 
+vectors {\bf i}, {\bf j}, {\bf k} 
+be made to revolve about a line equally inclined to 
+all, so that {\bf i} is brought to coincide with {\bf j}, 
+{\bf j} will then coincide 
+with {\bf k}, and {\bf k} with {\bf i}: 
+and the above equations will still hold good, 
+only (1) will become (2), (2) will become (3), and (3) will become (1).] 
+
+{\bf 67}. By the results of \S 50 we see that 
+$$\frac{-{\rm {\bf j}}}{\rm {\bf k}}=\frac{{\rm {\bf k}}}{\rm {\bf j}}$$
+i.e. a southward unit- vector bears the same ratio to an upward 
+unit-vector that the latter does to a northward one; and therefore 
+we have 
+
+Thus $$\frac{-{\rm {\bf j}}}{{\rm {\bf k}}}=
+i\textrm{, or }-{\rm {\bf j}}=i{\rm {\bf k}}\eqno{(4)}$$
+
+Similary t$$\frac{-{\rm {\bf k}}}{{\rm {\bf i}}}=
+j\textrm{, or }-{\rm {\bf k}}=j{\rm {\bf i}}\eqno{(5)}$$
+
+and $$\frac{-{\rm {\bf i}}}{{\rm {\bf j}}}=
+k\textrm{, or }-{\rm {\bf i}}=k{\rm {\bf j}}\eqno{(6)}$$
+
+{\bf 68}. By (4) and (1) we have 
+
+$$-j = ik = i(ij)\textrm{  (by the assumption in \S 54) }= i^2j$$
+
+Hence 
+$$i^2 = - 1\eqno{(7)}$$
+
+Arid in the same way, (5) and (2) give 
+$$j^2=-1\eqno{(8)}$$
+and (6) and (3)
+$$k^2=-1\eqno{(9)}$$
+
+Thus, as the directions of {\bf i}, {\bf j}, {\bf k} 
+are perfectly arbitrary, we see that 
+{\sl the square of every quadrantal versor is negative unity}. 
+
+[Though the following proof is in principle exactly the same as 
+the foregoing, it may perhaps be of use to the student, in showing 
+him precisely the nature as well as the simplicity of the step we 
+have taken. 
+
+\includegraphics{ps/quat15.ps}
+
+Let $ABA^{'}$ be a semicircle, whose centre 
+is $0$, and let $OB$ be perpendicular to $AOA^{'}$. 
+
+Then ${\displaystyle\frac{\overline{OB}}{\overline{OA^{'}}}}=q$ 
+suppose, is a quadrantal versor, and is evidently equal to 
+${\displaystyle\frac{\overline{OA^{'}}}{\overline{OB}}}$ ;
+
+\S\S 50, 53. Hence 
+
+$$q^2=\frac{\overline{OA^{'}}}{\overline{OB}}.
+\frac{\overline{OB}}{\overline{OA}}=
+\frac{\overline{OA^{'}}}{\overline{OA}}=-1]$$
+
+{\bf 69}. 
+Having thus found that the squares of {\sl i}, {\sl j}, {\sl k} are each 
+equal to negative unity ; it only remains that we find the values of 
+their products two and two. For, as we shall see, the result is such 
+as to show that the value of any other combination whatever of 
+{\sl i},{\sl j}, {\sl k} 
+(as factors of a product) may be deduced from the values of 
+these squares and products. 
+
+Now it is obvious that 
+$$\frac{{\rm {\bf k}}}{\rm {\bf -i}}=
+\frac{{\rm {\bf i}}}{\rm {\bf k}}=j$$
+(i.e. the versor which turns a westward unit-vector into an upward 
+one will turn the upward into an eastward unit) ; or 
+$${\rm {\bf k}}=j({\rm {\bf -i}}) = -j{\rm {\bf i}}\eqno{(10)}$$
+
+Now let us operate on the two equal vectors in (10) by the 
+same versor, {\sl i}, and we have 
+$$i{\rm {\bf k}} = i(-j{\rm {\bf i}}) = -j{\rm {\bf i}}$$ 
+But by (4) and (3) 
+$$i{\rm {\bf k}}={\rm {\bf -j}}=-k{\rm {\bf i}}$$
+
+Comparing these equations, we have 
+$$-ij{\rm {\bf i}}=-k{\rm {\bf i}}$$
+$$
+\left.
+\begin{array}{lr}
+\textrm{or, \S 54 (end), } &amp;ij=k\\
+\textrm{and symmetry gives}&amp;jk=i\\
+                           &amp;ki=j\\
+\end{array}
+\right\}\eqno{(11)}
+$$
+
+The meaning of these important equations is very simple ; and 
+is, in fact, obvious from our construction in \S 54 for the multiplication 
+of versors ; as we see by the annexed figure, where we must 
+remember that {\sl i}, {\sl j}, {\sl k} 
+are quadrantal versors whose planes are at 
+right angles, so that the figure represents 
+a hemisphere divided into quadrantal 
+triangles. [The arrow-heads indicate the 
+direction of each vector arc.] 
+
+\includegraphics{ps/quat16.ps}
+
+Thus, to show that $ij = k$, we have, 
+$O$ being the centre of the sphere, $N$, $E$, 
+$S$, $W$ the north, east, south, and west, 
+and $Z$ the zenith (as in \S 65) ; 
+
+$$j\overline{OW}=\overline{OZ}$$
+whence\hbox{\hskip 2cm}$ij\overline{OW}=i\overline{OZ}=
+\overline{OS} = k\overline{OW}$ 
+
+* The negative sign, being a mere numerical factor, is evidently commutative 
+with $j$  indeed we may, if necessary, easily assure ourselves of the fact 
+that to turn the negative (or reverse) of a vector through a right 
+(or indeed any) angle, is the same thing as to turn the vector through 
+that angle and then reverse it. 
+
+{\bf 70}. But, by the same figure, 
+$$i\overline{ON}=\overline{OZ}$$
+whence\hbox{\hskip 1cm}$ji\overline{ON} =j\overline{OZ}
+= \overline{OE} = -\overline{OW} = - k\overline{ON}$. 
+
+{\bf 71}. From this it appears that 
+$$
+\left.
+\begin{array}{c}
+ji = -k\\
+kj = -i\\
+ik = -j\\
+\end{array}   
+\right\}\eqno{(12)}
+$$
+and thus, by comparing (11), 
+$$
+\left.
+\begin{array}{c}
+ij=-ji=k\\
+jk=-kj=i\\
+ki=-ik=j\\
+\end{array}
+\right\}\eqno{(11),(12)}
+$$
+
+These equations, along with 
+$$i^2=j^2=k^2=-1\eqno{((7),(8),(9))}$$
+contain essentially the whole of Quaternions. But it is easy to see 
+that, for the first group, we may substitute the single equation 
+$$ijk=-1\eqno{(13)}$$
+since from it, by the help of the values of the squares of 
+{\sl i}, {\sl j}, {\sl k}, all 
+the other expressions may be deduced. We may consider it proved 
+in this way, or deduce it afresh from the figure above, thus 
+$$k\overline{ON}=\overline{OW}$$
+$$jk\overline{ON}=j\overline{OW}=\overline{OZ}$$
+$$ijk\overline{ON}=ij\overline{OW}=i\overline{OZ}=
+\overline{OS}=-\overline{ON}$$
+
+{\bf 72}. One most important step remains to be made, to wit the 
+assumption referred to in \S 64. We have treated 
+{\sl i}, {\sl j}, {\sl k} simply as 
+quadrantal versors ; and 
+{\bf i}, {\bf j}, {\bf k} as unit-vectors at right angles to 
+each other, and coinciding with the axes of rotation of these versors. 
+But if we collate and compare the equations just proved we have 
+
+\hbox{\hskip 4cm {\Huge \{}
+\vbox{
+\hbox{$i^2=-1$\hbox{\hskip 5cm}(7)}
+\hbox{${\rm {\bf i}}^2=-1$\hbox{\hskip 5cm}(\S 9)}}}
+
+\hbox{\hskip 4cm {\Huge \{}
+\vbox{
+\hbox{$ij=k$\hbox{\hskip 5.3cm}(11)}
+\hbox{$i{\rm {\bf j}}={\rm {\bf k}}$\hbox{\hskip 5.3cm}(1)}}}
+
+\hbox{\hskip 4cm {\Huge \{}
+\vbox{
+\hbox{$ji=-k$\hbox{\hskip 5cm}(11)}
+\hbox{$j{\rm {\bf i}}=-{\rm {\bf k}}$\hbox{\hskip 5cm}(1)}}}
+
+with the other similar groups symmetrically derived from them. 
+
+Now the meanings we have assigned to {\sl i}, {\sl j}, {\sl k} are quite 
+independent of, and not inconsistent with, those assigned to 
+{\rm {\bf i}}, {\rm {\bf j}}, {\rm {\bf k}}. 
+And it is superfluous to use two sets of characters when one will 
+suffice. Hence it appears that {\sl i}, {\sl j}, {\sl k} 
+may be substituted for {\rm {\bf i}}, {\rm {\bf j}}, {\rm {\bf k}}; 
+in other words, {\sl a unit-vector when employed as a factor may be 
+considered as a quadrantal versor whose plane is perpendicular to the 
+vector}. (Of course it follows that every vector can be treated as the 
+product of a number and a quadrantal versor.) This is one of the 
+main elements of the singular simplicity of the quaternion calculus. 
+
+{\bf 73}. Thus {\sl the product, and therefore the quotient, of two 
+perpendicular vectors is a third vector perpendicular to both}.
+
+Hence the reciprocal (\S 51) of a vector is a vector which has 
+the {\sl opposite} direction to that of the vector, arid its length is the 
+reciprocal of the length of the vector. 
+
+The conjugate (\S 52) of a vector is simply the vector reversed. 
+
+Hence, by \S 52, if $\alpha$ be a vector 
+$$(Ta)^2 = \alpha K\alpha = \alpha ( - \alpha) = -\alpha{}^2$$
+
+{\bf 74}. We may now see that {\sl every versor may be represented by 
+a power of a unit-vector}.
+
+For, if $\alpha$ be any vector perpendicular to $i$ (which is 
+{\sl any} definite unit-vector), 
+$i\alpha = \beta$ is a vector equal in length to $\alpha$,
+but perpendicular to both $i$ and $\alpha$
+$$
+\begin{array}{ccl}
+i^2\alpha  &amp; = &amp; -\alpha\\
+\i^3\alpha &amp; = &amp; -i\alpha = -\beta\\
+\i^4\alpha &amp; = &amp; -i\beta = -i^2\alpha = \alpha
+\end{array}
+$$
+Thus, by successive applications of $i$, $\alpha$. 
+is turned round $i$ as an axis 
+through successive right angles. Hence it is natural to {\sl define} 
+$i^m$ {\sl as 
+a versor which turns any vector perpendicular to i through m right 
+angles in the positive direction of rotation about i as an axis}. Here 
+$m$ may have any real value whatever, whole or fractional, for it is 
+easily seen that analogy leads us to interpret a negative value of $m$ 
+as corresponding to rotation in the negative direction. 
+
+{\bf 75}. From this again it follows that {\sl any quaternion may be 
+expressed as a power of a vector}. For the tensor and versor 
+elements of the vector may be so chosen that, when raised to the 
+same power, the one may be the tensor and the other the versor 
+of the given quaternion. The vector must be, of course, perpen 
+dicular to the plane of the quaternion. 
+
+{\bf 76}. And we now see, as an immediate result of the last two 
+sections, that the index-law holds with regard to powers of a 
+quaternion (\S 63). 
+
+{\bf 77}. So far as we have yet considered it, a quaternion has been 
+regarded as the {\sl product} of a tensor and a versor: we are now to 
+consider it as a {\sl sum}. The easiest method of so analysing it seems 
+to be the following. 
+
+\includegraphics{ps/quat17.ps}
+
+Let ${\displaystyle\frac{\overline{OB}}{\overline{OA}}}$
+represent any quaternion. Draw $BC$ perpendicular to $OA$, 
+produced if necessary. 
+
+Then, \S 19, $\overline{OB} = \overline{OC} + \overline{CB}$\\ 
+
+But, \S 22, $\overline{OC}=x\overline{OA}$\\ 
+where $x$ is a number, whose sign is the same 
+as that of the cosine of $\angle AOB$. 
+
+Also, \S 73, since $CB$ is perpendicular to $OA$, 
+$$\overline{CB}=\gamma\overline{OA}$$
+where $\gamma$ is a vector perpendicular to $OA$ and $CB$, i.e. to the plane 
+of the quaternion; and, as the figure is drawn, directed {\sl towards} the 
+reader. 
+
+Hence 
+$$\frac{\overline{OB}}{\overline{OA}}=
+\frac{x\overline{OA}+\gamma\overline{OA}}{\overline{OA}}=
+x+\gamma$$
+
+Thus a quaternion, in general, may be decomposed into the sum 
+of two parts, one numerical, the other a vector. Hamilton calls 
+them the SCALAR, and the VECTOR, and denotes them respectively 
+by the letters $S$ and $V$ prefixed to the expression for the 
+quaternion. 
+
+{\bf 78}. Hence $q = Sq+ Vq$, and if in the above example 
+$$\frac{\overline{OB}}{\overline{OA}}=q$$
+then
+$$\overline{OB}=\overline{OC}+\overline{CB}=
+Sq.\overline{OA}+Vq.\overline{OA}
+\setcounter{footnote}{1}%% use a dagger because number looks like superscript
+\footnote{
+The points are inserted to show that $S$ and $V$ 
+apply only to $q$, and not to $q\overline{OA}$.} 
+$$
+
+The equation above gives 
+$$\overline{OC}=Sq.\overline{OA}$$
+$$\overline{CB}=Vq.\overline{OA}$$
+
+{\bf 79}. If, in the last figure, we produce $BC$ to $D$, so as to double 
+its length, and join $OD$, we have, by \S 52, 
+$$\frac{\overline{OD}}{\overline{OA}}=Kq=SKq+VKq$$
+so that\hbox{\hskip 1cm}
+$\overline{OD}=\overline{OC}+\overline{CD}=
+SKq.\overline{OA}+VKq.\overline{OA}$\\
+Hence\hbox{\hskip 3.6cm}$\overline{OC}=SKq.\overline{OA}$\\
+and\hbox{\hskip 4cm}$\overline{CD}=VKq.\overline{OA}$\\ 
+Comparing this value of $\overline{OC}$ with that in last section, we find 
+$$SKq=Sq\eqno{(1)}$$
+or {\sl the scalar of the conjugate of a quaternion is equal to the scalar of 
+the quaternion}. 
+
+Again, $\overline{CD} = -\overline{CB}$ 
+by the figure, and the substitution of their values gives 
+$$VKq=-Vq\eqno{(2)}$$
+or {\sl the vector of the conjugate of a quaternion is the vector of the 
+quaternion reversed}. 
+
+We may remark that the results of this section are simple con 
+sequences of the fact that the symbols $S$, $V$, $K$ are commutative
+\setcounter{footnote}{1}%% use a dagger because number looks like superscript
+\footnote{
+It is curious to compare the properties of these quaternion symbols with those 
+of the Elective Symbols of Logic, as given in BOOLE'S 
+wonderful treatise on the {\sl Laws of Thought}; and to think that the 
+same grand science of mathematical analysis, by processes remarkably 
+similar to each other, reveals to us truths in the science of position 
+far beyond the powers of the geometer, and truths of deductive 
+reasoning to which unaided thought could never have led the logician. }. 
+
+Thus\hbox{\hskip 3cm}$SKq = KSq = Sq$, \\
+since the conjugate of a number is the number itself; and 
+$$VKq=KVq=-Vq (\S 73)$$
+
+Again, it is obvious that, 
+$$\sum{Sq}=S\sum{q},\;\;\;\;\sum{Vq}=V\sum{q}$$
+and thence\hbox{\hskip 3cm}$\sum{Kq}=K\sum{q}$
+
+{\bf 80}. Since any vector whatever may be represented by 
+$$xi+yj+zk$$
+where $x$, $y$, $z$ are numbers (or Scalars), 
+and $i$, $j$, $k$ may be any three 
+non-coplanar vectors, \S\S 23, 25 though they are usually understood 
+as representing a rectangular system of unit-vectors and 
+since any scalar may be denoted by $w$; we may write, for any 
+quaternion $q$, the expression 
+$$q=w+xi+yj+zk (\S 78)$$
+
+Here we have the essential dependence on four distinct numbers, 
+from which the quaternion derives its name, exhibited in the most 
+simple form. 
+
+And now we see at once that an equation such as 
+$$q^{'}=q$$
+where\hbox{\hskip 3cm}$q^{'}=w^{'}+x^{'}i+y^{'}j+z^{'}k$\\
+involves, of course, the {\sl four} equations 
+$$
+w^{'}=w\textrm{,  }
+x^{'}=x\textrm{,  }
+y^{'}=y\textrm{,  }
+z^{'}=z
+$$
+
+{\bf 81}. We proceed to indicate another mode of proof of the distributive 
+law of multiplication. 
+
+We have already defined, or assumed (\S 61), that 
+$$\frac{\beta}{\alpha}+\frac{\gamma}{\alpha}=\frac{\beta+\gamma}{\alpha}$$
+or\hbox{\hskip 3cm}$\beta\alpha^{-1}+\gamma\alpha^{-1}=
+(\beta+\gamma)\alpha^{-1}$\\
+and have thus been able to understand what is meant by adding 
+two quaternions. 
+
+But, writing $\alpha$ for $\alpha^{-1}$, 
+we see that this involves the equality 
+$$(\beta+\gamma)\alpha = \beta\alpha+\gamma\alpha$$
+from which, by taking the conjugates of both sides, we derive 
+$$\alpha^{'}(\beta^{'}+\gamma^{'})=\alpha^{'}\beta^{'}+\alpha^{'}\gamma^{'}
+(\S 55)$$
+And a combination of these results (putting 
+$\beta+\gamma$ for $\alpha^{'}$ in the latter, for instance) gives 
+$$
+\begin{array}{lcr}
+(\beta+\gamma)(\beta^{'}+\gamma^{'}) &amp; = &amp;
+(\beta+\gamma)\beta^{'}+(\beta+\gamma)\gamma^{'}\\
+&amp; = &amp; \beta\beta^{'}+\gamma\beta^{'}+\beta\gamma^{'}+\gamma\gamma^{'}
+\end{array}
+$$
+by the former.
+
+Hence the {\sl distributive principle is true in the multiplication of 
+vectors}.
+
+It only remains to show that it is true as to the scalar and 
+vector parts of a quaternion, and then we shall easily attain the 
+general proof. 
+
+Now, if $a$ be any scalar, $\alpha$ any vector, and $q$ any quaternion, 
+$$(a+\alpha)q=aq+\alpha q$$
+
+For, if $\beta$ be the vector in which the plane of $q$ is intersected by 
+a plane perpendicular to $\alpha$, we can find other two vectors, 
+$\gamma$ and $\delta$ one in each of these planes such that 
+$$\alpha=\frac{\gamma}{\beta},\;\;\;\;\;q=\frac{\beta}{\delta}$$
+And, of course, $a$ may be written 
+${\displaystyle\frac{a\beta}{\beta}}$; so that 
+$$
+\begin{array}{ccl}
+(a+\alpha)q &amp; = &amp; \frac{a\beta+\gamma}{\beta}.\frac{\beta}{\delta}
+=\frac{a\beta+\gamma}{\delta}\\
+&amp; &amp; \\
+&amp; = &amp; a\frac{\beta}{\delta}+\frac{\gamma}{\delta}=
+a\frac{\beta}{\delta}+\frac{\gamma}{\beta}.\frac{\beta}{\delta}\\
+&amp; &amp; \\
+&amp; = &amp; aq + \alpha q
+\end{array}
+$$
+And the conjugate may be written 
+$$q^{'}(a^{'}+\alpha^{'})=q^{'}a^{'}+q^{'}\alpha^{'} (\S 55)$$
+Hence, generally, 
+$$(a+\alpha)(b+\beta)=ab+a\beta+b\alpha+\alpha\beta$$
+or, breaking up $a$ and $b$ each into the sum of two scalars, and 
+$\alpha$, $\beta$ each into the sum of two vectors, \\
+$(a_1+a_2+\alpha_1+\alpha_2)(b_1+b_2+\beta_1+\beta_2)$
+$$=(a_1+a_2)(b_1+b_2)
++(a_1+a_2)(\beta_1+\beta_2)
++(b_1+b_2)(\alpha_1+\alpha_2)
++(\alpha_1+\alpha_2)(\beta_1+\beta_2)
+$$
+(by what precedes, all the factors on the right are distributive, so 
+that we may easily put it in the form) 
+$$=(a_1+\alpha_1)(b_1+\beta_1)
++(a_1+\alpha_1)(b_2+\beta_2)
++(a_2+\alpha_2)(b_1+\beta_1)
++(a_2+\alpha_2)(b_2+\beta_2)
+$$
+
+Putting $a_1+\alpha_1=p,\;\;\;$ 
+$a_2+\alpha_2=q,\;\;\;$ 
+$b_1+\beta_1=r,\;\;\;$ $b_2+\beta_2=s$,\\
+we have $(p+q)(r+s)=pr+ps+qr+qs$
+
+{\bf 82}. Cayley suggests that the laws of quaternion multiplication 
+may be derived more directly from those of vector multiplication, 
+supposed to be already established. Thus, let $\alpha$ be the unit vector 
+perpendicular to the vector parts of $q$ and of $q^{'}$. Then let 
+$$\rho=q.\alpha,\;\;\;\sigma=-\alpha .q^{'}$$
+as is evidently permissible, and we have 
+$$p\alpha=q.\alpha\alpha=-q;\;\;\;\alpha\sigma=-\alpha\alpha.q^{'}=q^{'}$$
+so that\hbox{\hskip 4cm}$-q.q^{'}=\rho\alpha.\alpha\sigma=-\rho.\sigma$
+
+The student may easily extend this process. 
+
+For variety, we shall now for a time forsake the geometrical 
+mode of proof we have hitherto adopted, and deduce some of our 
+next steps from the analytical expression for a quaternion given in 
+\S 80, and the properties of a rectangular system of unit-vectors as 
+in \S 71. 
+
+We will commence by proving the result of \S 77 anew. 
+
+{\bf 83}. Let 
+$$\alpha=xi+yj+zk$$
+$$\beta=x^{'}i+y^{'}j+z^{'}k$$
+Then, because by \S 71 every product or quotient of $i$, $j$, $k$ is reducible 
+to one of them or to a number, we are entitled to assume 
+$$q=\frac{\beta}{\alpha}=\omega+\xi i+\eta j +\zeta k$$
+where $\omega$, $\xi$, $\eta$, $\zeta$ are numbers. 
+This is the proposition of \S 80. 
+
+[Of course, with this expression for a quaternion, there is no 
+necessity for a formal proof of such equations as 
+$$p + (q+r) = (p + q) + r$$
+where the various sums are to be interpreted as in \S 61. 
+
+All such things become obvious in view of the properties of $i$, $j$ ,$k$.] 
+
+{\bf 84}. But it may be interesting to find $\omega$, $\xi$, $\eta$, $\zeta$ 
+in terms of $x$, $y$, $z$, $x^{'}$, $y^{'}$ , $z^{'}$ . 
+
+We have 
+$$\beta=q\alpha$$
+or 
+$$x^{'}i+y^{'}j+z^{'}k=(\omega+\xi i+\eta j+\zeta k)(xi+yj+zk)$$
+$$=-(\xi x+\eta y+\zeta z)
++(\omega x+\eta z-\zeta y)i
++(\omega y+\zeta x-\xi z)j
++(\omega z+\xi y-\eta x)k
+$$
+as we easily see by the expressions for the powers and products of 
+$i$, $j$, $k$ given in \S 71. But the student must pay particular attention 
+to the {\sl order} of the factors, else he is certain to make mistakes. 
+
+This (\S 80) resolves itself into the four equations 
+$$
+\begin{array}{lllllllll}
+0      &amp; = &amp;          &amp;   &amp; \xi x &amp; + &amp; \eta y &amp; + &amp; \zeta z\\
+x^{'}  &amp; = &amp; \omega x &amp;   &amp;       &amp; + &amp; \eta z &amp; - &amp; \zeta y\\
+y^{'}  &amp; = &amp; \omega y &amp; - &amp; \xi z &amp;   &amp;        &amp; + &amp; \zeta x\\
+z^{'}  &amp; = &amp; \omega z &amp; + &amp; \xi y &amp; - &amp; \eta x\\
+\end{array}
+$$
+The three last equations give 
+$$xx^{'}+yy^{'}+zz^{'}=\omega(x^2+y^2+z^2)$$
+which determines $\omega$. 
+
+Also we have, from the same three, by the help of the first, 
+$$\xi x^{'}+\eta y^{'}+\zeta z^{'} = 0$$
+which, combined with the first, gives
+$$\frac{\xi}{yz^{'}-zy^{'}}
+=\frac{\eta}{zx^{'}-xz^{'}}
+=\frac{\zeta}{xy^{'}-yx^{'}}
+$$
+and the common value of these three fractions is then easily seen 
+to be 
+$$\frac{1}{x^2+y^2+z^2}$$
+
+It is easy enough to interpret these expressions by means of 
+ordinary coordinate geometry : but a much simpler process will 
+be furnished by quaternions themselves in the next chapter, and, in 
+giving it, we shall refer back to this section. 
+
+{\bf 85}. The associative law of multiplication is now to be proved 
+by means of the distributive (\S 81). We leave the proof to the 
+student. He has merely to multiply together the factors 
+$$w+xi+yj+zk,\;\;\;\; 
+w+x^{'}i+y^{'}j+z^{'}k,\;\;\;\;\textrm{ and }
+w^{''} + x^{''}i + y^{''}j + z^{''}k$$
+
+as follows : 
+
+First, multiply the third factor by the second, and then multiply 
+the product by the first; next, multiply the second factor by the 
+first and employ the product to multiply the third: always remembering 
+that the multiplier in any product is placed {\sl before} the 
+multiplicand. He will find the scalar parts and the coefficients of 
+$i$, $j$, $k$, in these products, respectively equal, each to each. 
+
+{\bf 86}. 
+With the same expressions for $\alpha$, $\beta$, as in section 83, we 
+have 
+$$\alpha\beta=(xi+yj+zk)(x^{'}i+y^{'}j+z^{'}k)$$
+$$\;\;=-(xx^{'}+yy^{'}+zz^{'})
++(yz^{'}-zy^{'})i
++(zx^{'}-xz^{'})j
++(xy^{'}-yx^{'})k
+$$
+
+But we have also 
+$$\beta\alpha=
+-(xx^{'}+yy^{'}+zz^{'})
+-(yz^{'}-zy^{'})i
+-(zx^{'}-xz^{'})j
+-(xy^{'}-yx^{'})k
+$$
+
+The only difference is in the sign of the vector parts. Hence 
+$$S\alpha\beta=S\beta\alpha\eqno{(1)}$$
+$$V\alpha\beta=-V\beta\alpha\eqno{(2)}$$
+$$\alpha\beta+\beta\alpha=2S\alpha\beta\eqno{(3)}$$
+$$\alpha\beta-\beta\alpha=2V\alpha\beta\eqno{(4)}$$
+$$\alpha\beta=K.\beta\alpha\eqno{(5)}$$
+
+{\bf 87}. If $\alpha=\beta$ we have of course (\S 25) 
+$$x=x^{'},\;\;\;\;y=y^{'},\;\;\;\;z=z^{'}$$
+and the formulae of last section become 
+$$\alpha\beta=\beta\alpha=\alpha^2=-(x^2+y^2+z^2)$$
+which was anticipated in \S 73, where we proved the formula 
+$$(T\alpha)^2=-\alpha^2$$
+and also, to a certain extent, in \S 25. 
+
+{\bf 88}. Now let $q$ and $r$ be any quaternions, then 
+$$
+\begin{array}{rcl}
+S.qr &amp; = &amp; S.(Sq+Vq)(Sr+Vr)\\
+ &amp; = &amp; S.(SqSr+Sr.Vq+Sq.Vr+VqVr)\\
+ &amp; = &amp; SqSr+S.VqVr
+\end{array}
+$$
+since the two middle terms are vectors. 
+Similarly,
+$$S.rq=SrSq+S.VrVq$$
+Hence, since by (1) of \S 86 we have 
+$$S.VqVr=S.VrVq$$
+we see that
+$$S.qr=S.rq\eqno{(1)}$$
+a formula of considerable importance. 
+
+It may easily be extended to any number of quaternions, 
+because, $r$ being arbitrary, we may put for it $rs$. Thus we have 
+$$
+\begin{array}{rcl}
+S.qrs &amp; = &amp; S.rsq\\
+&amp; = &amp; S.sqr
+\end{array}
+$$
+by a second application of the process. In words, we have the 
+theorem {\sl the scalar of the product of any number of given 
+quaternions depends only upon the cyclical order in which they are 
+arranged}.
+
+{\bf 89}. An important case is that of three factors, each a vector. 
+The formula then becomes 
+$$S.\alpha\beta\gamma=S.\beta\gamma\alpha=S.\gamma\alpha\beta$$
+But 
+$$\begin{array}{rcll}
+S.\alpha\beta\gamma &amp; = &amp; S\alpha(S\beta\gamma+V\beta\gamma) &amp;\\
+ &amp; = &amp; S\alpha V\beta\gamma &amp; \textrm{since }\alpha S\beta\gamma
+\textrm{ is a vector}\\
+ &amp; = &amp; -S\alpha V\gamma\beta &amp; \textrm{by (2) of \S 86}\\
+ &amp; = &amp; -S\alpha(S\gamma\beta+V\gamma\beta) &amp;\\
+ &amp; = &amp; -S.\alpha\gamma\beta
+\end{array}
+$$
+Hence {\sl the scalar of the product of three vectors changes sign when 
+the cyclical order is altered.}
+
+By the results of \S\S 55, 73, 79 we see that, for any number 
+of vectors, we have 
+$$K.\alpha\beta\gamma\ldots\phi\chi=
+\pm\chi\phi\ldots\gamma\beta\alpha$$
+(the positive sign belonging to the product of an even number of 
+vectors) so that 
+$$S.\alpha\beta\ldots\phi\chi=\pm S.\chi\phi\ldots\beta\alpha$$
+
+Similarly 
+$$V.\alpha\beta\ldots\phi\chi=\mp V.\chi\phi\ldots\beta\alpha$$
+Thus we may generalize (3) and (4) of \S 86 into 
+$$2S.\alpha\beta\ldots\phi\chi=
+\alpha\beta\ldots\chi\phi\pm\phi\chi\ldots\beta\alpha$$
+$$2V.\alpha\beta\ldots\phi\chi=
+\alpha\beta\ldots\chi\phi\mp\phi\chi\ldots\beta\alpha$$
+the upper sign still being used when the -number of factors is 
+even. 
+
+Other curious propositions connected with this will be given 
+later (some, indeed, will be found in the Examples appended to 
+this chapter), as we wish to develop the really fundamental 
+formulae in as compact a form as possible. 
+
+{\bf 90}. By (4) of \S 86, 
+$$2V\beta\gamma=\beta\gamma-\gamma\beta$$
+Hence
+$$2V.\alpha V\beta\gamma=V.\alpha(\beta\gamma-\gamma\beta)$$
+(by multiplying both by $\alpha$, and taking the vector parts of each side) 
+$$=V(\alpha\beta\gamma+\beta\alpha\gamma-\beta\alpha\gamma-\alpha\gamma\beta)$$
+(by introducing the null term $\beta\alpha\gamma-\beta\alpha\gamma$).
+
+\noindent
+That is 
+$$2V.\alpha V\beta\gamma=V.(\alpha\beta+\beta\alpha)\gamma
+-V(\beta S\alpha\gamma+\beta V\alpha\gamma+S\alpha\gamma .\beta+
+V\alpha\gamma .\beta$$
+$$=V.(2S\alpha\beta)\gamma-2V\beta S\alpha\gamma$$
+(if we notice that $V(V\alpha\gamma .\beta)=-V.\beta V\alpha\gamma$
+by (2) of \S 86). 
+Hence 
+$$V.\alpha V\beta\gamma=\gamma S\alpha\beta-\beta S\gamma\alpha\eqno{(1)}$$
+a formula of constant occurrence. 
+
+Adding $\alpha S\beta\gamma$ to both sides, we get another most valuable 
+formula 
+$$V.\alpha\beta\gamma
+=\alpha S\beta\gamma
+-\beta S\gamma\alpha
++\gamma S\alpha\beta\eqno{(2)}
+$$
+and the form of this shows that we may interchange $\gamma$ and $\alpha$
+without altering the right-hand member. This gives 
+$$V.\alpha\beta\gamma = V.\gamma\beta\alpha$$
+a formula which may be greatly extended. (See \S89, above.) 
+
+Another simple mode of establishing (2) is as follows : 
+$$
+\begin{array}{rcl}
+K.\alpha\beta\gamma &amp; = &amp; -\gamma\beta\alpha\\
+\therefore 2V.\alpha\beta\gamma &amp; = &amp; 
+\alpha\beta\gamma-K.\alpha\beta\gamma\textrm{ (by \S 79(2))}\\
+&amp; = &amp; \alpha\beta\gamma + \gamma\beta\alpha\\
+&amp; = &amp; \alpha(\beta\gamma+\gamma\beta)
+-(\alpha\gamma+\gamma\alpha)\beta
++\gamma(\alpha\beta+\beta\alpha)\\
+&amp; = &amp; 2\alpha S\beta\gamma-2\beta S\alpha\gamma+2\gamma S\alpha\beta
+\end{array}
+$$
+
+{\bf 91}. We have also 
+$$VV\alpha\beta V\gamma\delta = -VV\gamma\delta V\alpha\beta\;\;\;\;
+\textrm{ by (2) of \S 86}$$
+$$=\delta S\gamma V\alpha\beta-\gamma S\delta V\alpha\beta
+=\delta S.\alpha\beta\gamma-\gamma S.\alpha\beta\delta$$
+$$=-\beta S\alpha V\gamma\delta+\alpha S\beta V\gamma\delta
+=-\beta S.\alpha\gamma\delta+\alpha S.\beta\gamma\delta$$
+all of these being arrived at by the help of \S 90 (1) and of \S 89; 
+and by treating alternately $V\alpha\beta$ and 
+$V\gamma\delta$ as {\sl simple} vectors. 
+
+Equating two of these values, we have 
+$$\delta S.\alpha\beta\gamma
+=\alpha S.\beta\gamma\delta
++\beta S.\gamma\alpha\delta 
++\gamma S.\alpha\beta\delta\eqno{(3}
+$$
+a very useful formula, expressing any vector whatever in terms 
+of three given vectors. [This, of course, presupposes that
+$\alpha$, $\beta$, $\gamma$
+are not coplanar, \S 23. In fact, if they be coplanar, the factor 
+$S.\alpha\beta\gamma$ vanishes, 
+and thus (3) does not give an expression for $\delta$.
+This will be shown in \S 101 below.] 
+
+{\bf 92}. That such an expression as (3) is possible we knew already 
+by \S 23. For variety we may seek another expression of a similar 
+character, by a process which differs entirely from that employed 
+in last section. 
+
+$\alpha$, $\beta$, $\gamma$
+being any three non-coplanar vectors, we may derive 
+from them three others $V\alpha\beta$, $V\beta\gamma$, $V\gamma\alpha$
+and, as these will not be 
+coplanar, any other vector $\delta$ may be expressed as the sum of the 
+three, each multiplied by some scalar. It is required to find this 
+expression for $\delta$.
+
+Let 
+$$\delta=xV\alpha\beta+yV\beta\gamma+zV\gamma\alpha$$
+Then
+$$S\gamma\delta=xS.\gamma\alpha\beta =xS.\alpha\beta\gamma$$
+the terms in y and z going out, because 
+$$S\gamma V\beta\gamma = S.\gamma\beta\gamma=S\beta\gamma^2
+=\gamma^2 S\beta=0$$
+for $\gamma^2$ is (\S 73) a number. 
+
+Similarly 
+$$S\beta\delta=zS.\beta\gamma\alpha=zS.\alpha\beta\gamma$$
+and 
+$$S\alpha\delta=qS.\alpha\beta\gamma$$
+Thus 
+$$\delta S.\alpha\beta\gamma=V\alpha\beta S\gamma\delta
++V\beta\gamma S\alpha\delta
++V\gamma\alpha S\beta\delta\eqno{(4)}
+$$
+
+{\bf 93}. We conclude the chapter by showing (as promised in \S 64) 
+that the assumption that the product of two parallel vectors is 
+a number, and the product of two perpendicular vectors a third 
+vector perpendicular to both, is not only useful and convenient, 
+but absolutely inevitable, if our system is to deal indifferently with 
+all directions in space. We abridge Hamilton s reasoning. 
+
+Suppose that there is no direction in space pre-eminent, and 
+that the product of two vectors is something which has quantity, 
+so as to vary in amount if the factors are changed, and to have its 
+sign changed if that of one of them is reversed ; if the vectors be 
+parallel, their product cannot be, in whole or in part, a vector 
+{\sl inclined} to them, for there is nothing to determine the direction in 
+which it must lie. It cannot be a vector {\sl parallel} to them; for by 
+changing the signs of both factors the product is unchanged, 
+whereas, as the whole system has been reversed, the product 
+vector ought to have been reversed. Hence it must be a number. 
+Again, the product of two perpendicular vectors cannot be wholly 
+or partly a number, because on inverting one of them the sign of 
+that number ought to change; but inverting one of them is simply 
+equivalent to a rotation through two right angles about the other, 
+and (from the symmetry of space) ought to leave the number 
+unchanged. Hence the product of two perpendicular vectors must 
+be a vector, and a simple extension of the same reasoning shows 
+that it must be perpendicular to each of the factors. It is easy to 
+carry this farther, but enough has been said to show the character 
+of the reasoning. 
+
+\section{Examples To Chapter 2.}
+
+{\bf 1}. It is obvious from the properties of polar triangles that any 
+mode of representing versors by the {\sl sides} of a spherical triangle 
+must have an equivalent statement in which they are represented 
+by {\sl angles} in the polar triangle. 
+
+Show directly that the product of two versors represented 
+by two angles of a spherical triangle is a third versor represented 
+by the {\sl supplement} of the remaining angle of the triangle ; and 
+determine the rule which connects the {\sl directions} in which these 
+angles are to be measured. 
+
+{\bf 2}. Hence derive another proof that we have not generally 
+$$pq=qp$$
+
+{\bf 3}. Hence show that the proof of the associative principle, 
+\S 57, may be made to depend upon the fact that if from any point 
+of the sphere tangent arcs be drawn to a spherical conic, and also 
+arcs to the foci, the inclination of either tangent arc to one of the 
+focal arcs is equal to that of the other tangent arc to the other 
+focal arc. 
+
+{\bf 4}. Prove the formulae 
+$$2S.\alpha\beta\gamma = \alpha\beta\gamma-\gamma\beta\alpha$$
+$$2V.\alpha\beta\gamma = \alpha\beta\gamma+\gamma\beta\alpha$$
+
+{\bf 5}. Show that, whatever odd number of vectors be represented 
+by $\alpha$, $\beta$, $\gamma$ \&amp;c., we have always 
+$$
+V.\alpha\beta\gamma\delta\epsilon=V.\epsilon\delta\gamma\beta\alpha
+$$
+$$
+V.\alpha\beta\gamma\delta\epsilon\zeta\eta
+=V.\eta\zeta\epsilon\delta\gamma\beta\alpha,\textrm{ \&amp;c.}
+$$
+
+{\bf 6}. Show that 
+$$
+S.V\alpha\beta V\beta\gamma V\gamma\alpha=-(S.\alpha\beta\gamma)^2
+$$
+$$
+V.V\alpha\beta V\beta\gamma V\gamma\alpha=
+V\alpha\beta(\gamma^2S\alpha\beta-S\beta\gamma S\gamma\alpha)+\ldots
+$$
+and
+$$
+V(V\alpha\beta V.V\beta\gamma V\gamma\alpha)
+=(\beta S\alpha\gamma-\alpha S\beta\gamma)S.\alpha\beta\gamma
+$$
+
+{\bf 7}. If $\alpha$, $\beta$, $\gamma$
+be any vectors at right angles to each other, show that 
+$$
+(\alpha^3+\beta^3+\gamma^3)S.\alpha\beta\gamma
+=\alpha^4V\beta\gamma
++\beta^4V\gamma\alpha
++\gamma^4V\alpha\beta
+$$
+$$
+(\alpha^{2n-1}+\beta^{2n-1}+\gamma^{2n-1})S.\alpha\beta\gamma
+=\alpha^{2n}V\beta\gamma
++\beta^{2n}V\gamma\alpha
++\gamma^{2n}V\alpha\beta
+$$
+
+{\bf 8}. If $\alpha$, $\beta$, $\gamma$
+be non-coplanar vectors, find the relations among 
+the six scalars, $x$, $y$, $z$ and $\xi$, $\eta$, $\zeta$
+which are implied in the 
+equation 
+$$
+x\alpha+y\beta+z\gamma
+=\xi V\beta\gamma+\eta V\gamma\alpha+\zeta V\alpha\beta
+$$
+
+{\bf 9}. If $\alpha$, $\beta$, $\gamma$
+be any three non-coplanar vectors, express any 
+fourth vector, $\delta$, as a linear function of each of the following sets of 
+three derived vectors. 
+$$
+V.\gamma\alpha\beta,\;\;\;\;V.\alpha\beta\gamma,\;\;\;\;
+V.\beta\gamma\alpha
+$$
+and
+$$
+V.V\alpha\beta V\beta\gamma V\gamma\alpha,\;\;\;\;
+V.V\beta\gamma V\gamma\alpha V\alpha\beta,\;\;\;\;
+V.V\gamma\alpha V\alpha\beta V\beta\gamma
+$$
+
+{\bf 10}. Eliminate $\rho$ from the equations 
+$$
+S\alpha\rho=a,\;\;\;\;
+S\beta\rho=b,\;\;\;\;
+S\gamma\rho=c,\;\;\;\;
+S\delta\rho=d
+$$
+where $\alpha$, $\beta$, $\gamma$, $\delta$
+are vectors, and $a$, $b$, $c$, $d$ scalars. 
+
+{\bf 11}. In any quadrilateral, plane or gauche, the sum of the 
+squares of the diagonals is double the sum of the squares of the 
+lines joining the middle points of opposite sides. 
+
+\section{Interpretations And Transformations} 
+
+{\bf 94}. Among the most useful characteristics of the Calculus of 
+Quaternions, the ease of interpreting its formulae geometrically, 
+and the extraordinary variety of transformations of which the 
+simplest expressions are susceptible, deserve a prominent place. 
+We devote this Chapter to some of the more simple of these, 
+together with a few of somewhat more complex character but of 
+constant occurrence in geometrical and physical investigations. 
+Others will appear in every succeeding Chapter. It is here, 
+perhaps, that the student is likely to feel most strongly the 
+peculiar difficulties of the new Calculus. But on that very account 
+he should endeavour to master them, for the variety of forms 
+which any one formula may assume, though puzzling to the 
+beginner, is of the utmost advantage to the advanced student, not 
+alone as aiding him in the solution of complex questions, but 
+as affording an invaluable mental discipline. 
+
+{\bf 95}. If we refer again to the figure of \S 77 we see that 
+$$OC=OB\cos AOB$$
+$$CB=OB \sin AOB$$
+Hence if 
+$$\overline{AB}=\alpha,\;\;\;\;
+\overline{OB}=\beta,\;\;\;\;\textrm{ and }
+\angle AOB=\theta
+$$
+we have
+$$OB=T\beta,\;\;\;\;OA=T\alpha$$
+$$OC=T\beta\cos\theta,\;\;\;\;CB=T\beta\sin\theta
+$$
+Hence
+$$S\frac{\beta}{\alpha}=
+\frac{OC}{OA}=
+\frac{T\beta}{T\alpha}\cos\theta
+$$
+Similarly,
+$$
+TV\frac{\beta}{\alpha}=\frac{CB}{OA}=\frac{T\beta}{T\alpha}\sin\theta
+$$
+
+Hence, if $\eta$ be a unit-vector perpendicular to 
+$\alpha$ and $\beta$, and such 
+that positive rotation about it, through the angle $\theta$, turns $\alpha$
+towards $\beta$ or 
+$$
+\eta=
+\frac{U\overline{CB}}{U\overline{OA}}=
+U\frac{\overline{CB}}{\overline{OA}}=
+UV\frac{\beta}{\alpha}
+$$
+we have
+$$
+V\frac{\beta}{\alpha}=
+\frac{T\beta}{T\alpha}\sin\theta .\eta\;\;\;\;\;\textrm{ (See, again, \S 84)}
+$$
+
+{\bf 96}. In the same way, or by putting 
+$$
+\begin{array}{rcl}
+\alpha\beta &amp; = &amp; S\alpha\beta+V\alpha\beta\\
+ &amp; = &amp; S\beta\alpha - V\beta\alpha\\
+ &amp; = &amp; \alpha^2\left(S\frac{\beta}{\alpha}-V\frac{\beta}{\alpha}\right)\\
+ &amp; = &amp; T\alpha^2\left(-S\frac{\beta}{\alpha}+V\frac{\beta}{\alpha}\right)
+\end{array}
+$$
+we may show that 
+$$S\alpha\beta=-T\alpha T\beta\cos\theta$$
+$$TV\alpha\beta = T\alpha T\beta\sin\theta$$
+and
+$$V\alpha\beta=T\alpha T\beta\sin\theta . \eta$$
+where
+$$\eta=UV\alpha\beta = U(-V\beta\alpha)=UV\frac{\beta}{\alpha}$$
+
+Thus {\sl the scalar of the product of two vectors is the continued 
+product of their tensors and of the cosine of the supplement of the 
+contained angle}. 
+
+{\sl The tensor of the vector of the product of two vectors is the con 
+tinued product of their tensors and the sine of the contained angle ; 
+and the versor of the same is a unit-vector perpendicular to both, 
+and such that the rotation about it from the first vector (i. e. the 
+multiplier) to the second is left-handed or positive}. 
+
+{\sl Hence also $TV\alpha\beta$ 
+is double the area of the triangle two of whose 
+sides are $\alpha$, $\beta$.}
+
+{\bf 97}. (a) In any plane triangle $ABC$ we have 
+$$\overline{AC}=\overline{AB}+\overline{BC}$$
+Hence,
+$$
+\overline{AC}^2=S.\overline{AC}\overline{AC}=
+S.\overline{AC}(\overline{AB}+\overline{BC})
+$$
+
+With the usual notation for a plane triangle the interpretation 
+of this formula is 
+$$b^2 = -bc\cos A-ab\cos C$$
+or
+$$b=c\cos C+c\cos A$$
+
+(b) Again we have, obviously, 
+$$
+\begin{array}{rcl}
+V.\overline{AB}\;\overline{AC}&amp;=&amp;V.\overline{AB}(\overline{AB}+\overline{BC})\\
+&amp;=&amp;V.\overline{AB}\;\overline{BC}
+\end{array}
+$$
+or
+$$cb\sin A = ca\sin B$$
+whence
+$$\frac{\sin A}{a}=\frac{\sin B}{b}=\frac{\sin C}{c}$$
+
+These are truths, but not truisms, as we might have been led 
+to fancy from the excessive simplicity of the process employed. 
+
+{\bf 98}. 
+From \S 96 it follows that, if $\alpha$ and $\beta$ be both actual (i. e. 
+real and non-evanescent) vectors, the equation 
+$$S\alpha\beta = 0$$
+
+
+shows that $\cos\theta=0$, or that 
+$\alpha$ is {\sl perpendicular} to $\beta$. And, in fact, 
+we know already that the product of two perpendicular vectors is 
+a vector. 
+
+Again if 
+$$V\alpha\beta=0$$
+we must have $\sin\theta=0$, or 
+$\alpha$ is {\sl parallel} to $\beta$. We know already 
+that the product of two parallel vectors is a scalar. 
+
+Hence we see that 
+$$S\alpha\beta=0$$
+is equivalent to
+$$\alpha=V\gamma\beta$$
+where $\gamma$ is an undetermined vector; and that 
+$$V\alpha\beta=0$$
+is equivalent to
+$$\alpha=x\beta$$
+where $x$ is an undetermined scalar. 
+
+{\bf 99}. If we write, as in \S\S 83, 84, 
+$$\alpha=ix+jy+kz$$
+$$\beta=ix^{'}+jy^{'}+kz^{'}$$
+we have, at once, by \S 86, 
+$$\begin{array}{rcl}
+S\alpha\beta&amp;=&amp;-xx^{'}-yy^{'}-zz^{'}\\
+&amp;=&amp;-rr^{'}\left(
+\frac{x}{r}\frac{x^{'}}{r^{'}}+
+\frac{y}{r}\frac{y^{'}}{r^{'}}+
+\frac{z}{r}\frac{z^{'}}{r^{'}}
+\right)
+\end{array}
+$$
+where
+$$
+r=\sqrt{x^2+y^2+z^2},\;\;\;\;
+r^{'}=\sqrt{x^{'2}+y^{'2}+z^{'2}}
+$$
+Also
+$$
+V\alpha\beta=rr^{'}\left\{
+\frac{yz^{'}-zy^{'}}{rr^{'}}i+
+\frac{zx^{'}-xz^{'}}{rr^{'}}j+
+\frac{xy^{'}=yx^{'}}{rr^{'}}k
+\right\}
+$$
+
+These express in Cartesian coordinates the propositions we have 
+just proved. In commencing the subject it may perhaps assist 
+the student to see these more familiar forms for the quaternion 
+expressions ; and he will doubtless be induced by their appearance 
+to prosecute the subject, since he cannot fail even at this stage to 
+see how much more simple the quaternion expressions are than 
+those to which he has been accustomed. 
+
+{\bf 100}. The expression
+$$S.\alpha\beta\gamma$$
+may be written 
+$$SV(\alpha\beta)\gamma$$
+because the quaternion $\alpha\beta\gamma$ may be broken up into 
+$$S(\alpha\beta)\gamma+V(\alpha\beta)\gamma$$
+of which the first term is a vector. 
+
+But, by \S 96, 
+$$SV(\alpha\beta)\gamma=T\alpha T\beta\sin\theta S\eta\gamma$$
+Here $T\eta=1$, let $\phi$ be the angle between $\eta$ and $\gamma$, 
+then finally 
+$$S.\alpha\beta\gamma = -T\alpha T\beta T\gamma\sin\theta\cos\phi$$
+
+But as $\eta$ is perpendicular to $\alpha$ and $\beta$, 
+$T\gamma\cos\phi$ is the length of the 
+perpendicular from the extremity of $\gamma$ 
+upon the plane of $\alpha$, $\beta$. And 
+as the product of the other three factors is (\S 96) the area of the 
+parallelogram two of whose sides are $\alpha$, $\beta$, we see that the 
+magnitude of $S.\alpha\beta\gamma$, 
+independent of its sign, is {\sl the volume of the 
+parallelepiped of which three coordinate edges 
+are $\alpha$, $\beta$, $\gamma$};
+or six times the volume of the pyramid which has 
+$\alpha$, $\beta$, $\gamma$ for edges. 
+
+{\bf 101}. Hence the equation 
+$$S.\alpha\beta\gamma=0$$
+if we suppose $\alpha\beta\gamma$ to be actual vectors, shows either that 
+$$\sin\theta=0$$
+or
+$$\cos\phi=0$$
+i. e. {\sl two of the three vectors are parallel}, 
+or {\sl all three are parallel to one plane}. 
+
+This is consistent with previous results, for if $\gamma=p\beta$ we have 
+$$S.\alpha\beta\gamma=pS.\alpha\beta^2=0$$
+and, if $\gamma$ be coplanar with $\alpha$,$\beta$, we have 
+$\gamma=p\alpha+q\beta$ and
+$$S.\alpha\beta\gamma=S.\alpha\beta(p\alpha+q\beta)=0$$
+
+{\bf 102}. 
+This property of the expression $S.\alpha\beta\gamma$ prepares us to 
+find that it is a determinant. And, in fact, if we take $\alpha$,$\beta$ as in 
+\S 83, and in addition 
+$$\gamma=ix^{''}+jy^{''}+kz^{''}$$
+we have at once 
+$$S.\alpha\beta\gamma=-x^{''}(yz^{'}-zy^{'})-
+y^{''}(zx^{'}-xz^{'})-
+z^{''}(xy^{'}-yx^{'})$$
+$$
+=-\left\vert
+\begin{array}{ccc}
+x &amp; y &amp; z\\
+x^{'} &amp; y^{'} &amp; z^{'}\\
+x^{''}&amp;y^{''}&amp;z^{''}
+\end{array}
+\right\vert
+$$
+The determinant changes sign if we make any two rows change 
+places. This is the proposition we met with before (\S 89) in the 
+form 
+$$S.\alpha\beta\gamma=-S.\beta\alpha\gamma=S.\beta\gamma\alpha
+\textrm{, \&amp;c}$$
+
+If we take three new vectors 
+$$\alpha_1=ix+jx^{'}+kx^{''}$$
+$$\beta_1 =iy+jy^{'}+ky^{''}$$
+$$\gamma_1=iz+jz^{'}+kz^{''}$$
+we thus see that they are coplanar if $\alpha$, $\beta$, $\gamma$ are so. 
+That is, if 
+$$S.\alpha\beta\gamma=0$$
+then
+$$S.\alpha_1\beta_1\gamma_1=0$$
+
+{\bf 103}. We have, by \S 52, 
+$$
+\begin{array}{rcl}
+(Tq)^2 &amp;=&amp;qKq = (Sq+Vq)(Sq-Vq)\;\;\;\;\textrm{(\S 79)}\\
+&amp;=&amp;(Sq)^2-(Vq)^2\;\;\;\;\;\textrm{by algebra}\\
+&amp;=&amp;(Sq)^2+(TVq)^2\;\;\;\;\textrm{(\S 73)}\\
+\end{array}
+$$
+If $q=\alpha\beta$, we have $Kq = \beta\alpha$, and the formula becomes 
+$$\alpha\beta . \beta\alpha = \alpha^2\beta^2=
+(S\alpha\beta)^2-(V\alpha\beta)^2
+$$
+
+In Cartesian coordinates this is\\
+\vskip 0.1cm
+$(x^2+y^2+z^z)(x^{'2}+y^{'2}+z^{'2})$
+$$
+=(xx^{'}+yy^{'}+zz^{'})^2+(yz^{'}-zy^{'})^2+
+(zx^{'}-xz^{'})^2+(xy^{'}-yx^{'})^2
+$$
+More generally we have 
+$$
+\begin{array}{rcl}
+(T(qr))^2&amp;=&amp;(Tq)^2(Tr)^2\\
+&amp;=&amp;(S.qr)^2-(V.qr)^2
+\end{array}
+$$
+If we write 
+$$q=w+\alpha=w+ix+jy+kz$$
+$$r=w^{'}+\beta=w^{'}+ix^{'}+jy^{'}+kz^{'}$$
+this becomes 
+$$(w^2+x^2+y^2+z^2)(w^{'2}+x^{'2}+y^{'2}+z^{'2})$$
+$$=(ww^{'}-xx^{'}-yy^{'}-zz^{'})^2+(wx^{'}+w^{'}x+yz^{'}-zy^{'})^2$$
+$$=(xy^{'}+w^{'}y+zx^{'}-xz^{'})^2+(wz^{'}+w^{'}z+xy^{'}-yx^{'})^2$$
+a formula of algebra due to Euler. 
+
+{\bf 104}. We have, of course, by multiplication, 
+$$
+(\alpha+\beta)^2=
+\alpha^2+\alpha\beta+\beta\alpha+\beta^2=
+\alpha^2+2S\alpha\beta+\beta^2\;\;\;\;\;\textrm{(\S 86 (3))}
+$$
+Translating into the usual notation of plane trigonometry, this 
+becomes 
+$$c^2=a^2-2ab\cos C+b^2$$
+the common formula. 
+
+Again,
+$$
+V.(\alpha+\beta)(\alpha-\beta)=
+-V\alpha\beta+V\beta\alpha=
+-2V\alpha\beta\;\;\;\;\;\textrm{(\S 86 (2)}
+$$
+Taking tensors of both sides we have the theorem, {\sl the parallelogram 
+whose sides are parallel and equal to the diagonals of a 
+given parallelogram, has double its area} (\S 96). 
+
+Also 
+$$S(\alpha+\beta)(\alpha-\beta)=\alpha^2-\beta^2$$
+and vanishes only when $\alpha^2=\beta^2$, 
+or $T\alpha=T\beta$; that is, {\sl the diagonals 
+of a parallelogram are at right angles to one another, when, and 
+only when, it is a rhombus}. 
+
+Later it will be shown that this contains a proof that the angle 
+in a semicircle is a right angle. 
+
+{\bf 105}. The expression\hbox{\hskip 1cm}$\rho=\alpha\beta\alpha^{-1}$\\
+obviously denotes a vector whose tensor is equal to that of $\beta$. 
+
+But we have\hbox{\hskip 2cm}$S.\beta\alpha\rho=0$\\
+so that $\rho$ is in the plane of $\alpha$, $\beta$
+
+Also we have\hbox{\hskip 2cm}$S\alpha\rho=S\alpha\beta$\\
+so that $\beta$ and $\rho$ make equal angles with $\alpha$, 
+evidently on opposite 
+sides of it. Thus if $\alpha$ be the perpendicular to a reflecting surface 
+and $\beta$ the path of an incident ray, $-\rho$ will be the path of the 
+reflected ray. 
+
+Another mode of obtaining these results is to expand the above 
+expression, thus, \S 90 (2), 
+$$
+\begin{array}{rcl}
+\rho&amp;=&amp;2\alpha^{-1}S\alpha\beta-\beta\\
+&amp;=&amp;2\alpha^{-1}S\alpha\beta-\alpha^{-1}(S\alpha\beta+V\alpha\beta)\\
+&amp;=&amp;\alpha^{-1}(S\alpha\beta-V\alpha\beta)
+\end{array}
+$$
+so that in the figure of \S 77 we see that if $\overline{OA}=\alpha$,
+and $\overline{OB}=\beta$, we
+have $\overline{OD} = \rho = \alpha\beta\alpha^{-1}$
+
+Or, again, we may get the result at once by transforming the 
+equation to $\frac{\rho}{\alpha}=K(\alpha^{-1}\rho)=K\frac{\beta}{\alpha}$
+
+{\bf 106}. For any three coplanar vectors the expression 
+$$\rho=\alpha\beta\gamma$$
+is (\S 101) a vector. It is interesting to determine what this vector 
+is. The reader will easily see that if a circle be described about 
+the triangle, two of whose sides are (in order) $\alpha$ and $\beta$, 
+and if from 
+the extremity of $\beta$ a line parallel to $\gamma$ be drawn, 
+again cutting the 
+circle, the vector joining the point of intersection with the origin 
+of $\alpha$ is the direction of the vector $\alpha\beta\gamma$. 
+For we may write it in the form 
+$$
+\rho=\alpha\beta^2\beta^{-1}\gamma=
+-(T\beta)^2\alpha\beta^{-1}\gamma=
+-(T\beta)^2\frac{\alpha}{\beta}\gamma
+$$
+which shows that the versor $\displaystyle\left(\frac{\alpha}{\beta}\right)$
+which turns $\beta$ into a direction 
+parallel to $\alpha$, turns $\gamma$ into a direction parallel to $\rho$. 
+And this expresses the long-known property of opposite angles of a 
+quadrilateral inscribed in a circle. 
+
+Hence if $\alpha$, $\beta$, $\gamma$ 
+be the sides of a triangle taken in order, the 
+tangents to the circumscribing circle at the angles of the triangle 
+are parallel respectively to 
+$$
+\alpha\beta\gamma,\;\;\;\;
+\beta\gamma\alpha,\;\;\;\;\textrm{ and }
+\gamma\alpha\beta
+$$
+
+Suppose two of these to be parallel, i. e. let 
+$$\alpha\beta\gamma=x\beta\gamma\alpha=x\alpha\gamma\beta\;\;\;\;(\S 90)$$
+since the expression is a vector. Hence 
+$$\beta\gamma=x\gamma\beta$$
+which requires either 
+$$x=1,\;\;\;\;V\gamma\beta=0\;\;\;\;\textrm{ or }\gamma \vert\vert \beta$$
+a case not contemplated in the problem; or 
+$$x=-1,\;\;\;\;S\beta\gamma=0$$
+i. e. the triangle is right-angled. And geometry shows us at once 
+that this is correct. 
+
+Again, if the triangle be isosceles, the tangent at the vertex is 
+parallel to the base. Here we have 
+$$x\beta=\alpha\beta\gamma$$
+or
+$$x(\alpha+\gamma)=\alpha(\alpha+\gamma)\gamma$$
+whence $x=\gamma^2=\alpha^2$, or $T\gamma=T\alpha$, as required. 
+
+As an elegant extension of this proposition the reader may 
+prove that the vector of the continued product $\alpha\beta\gamma\delta$ 
+of the vectorsides of any quadrilateral inscribed in a sphere 
+is parallel to the radius drawn to the corner ($\alpha$, $\delta$). 
+[For, if $\epsilon$ be the vector from $\delta$,
+$\alpha$ to $\beta$, $\gamma$, $\alpha\beta\epsilon$ and 
+$\epsilon\gamma\delta$ are (by what precedes) vectors {\sl touching} the 
+sphere at $\alpha$, $\delta$. And their product (whose vector part must be 
+parallel to the radius at $\alpha$, $\delta$) is 
+$$\alpha\beta\epsilon . \epsilon\gamma\delta=\epsilon^2 . 
+\alpha\beta\gamma\delta]$$
+
+{\bf 107}. To exemplify the variety of possible transformations 
+even of simple expressions, we will take cases which are of 
+frequent occurrence in applications to geometry. 
+
+Thus $$T(\rho+\alpha)=T(\rho-\alpha)$$
+[which expresses that if 
+$$
+\overline{OA}=\alpha\;\;\;\;
+\overline{OA^{'}}=-\alpha\;\;\;\;\textrm{ and }\;\;\;\;
+\overline{OP}=\rho
+$$
+we have\hbox{\hskip 4cm}$AP=A^{'}P$\\
+and thus that $P$ is any point equidistant from two fixed points,] 
+may be written $$(\rho+\alpha)^2=(\rho-\alpha)^2$$
+or\hbox{\hskip 3cm}$\rho^2+2S\alpha\rho+\alpha^2=
+\rho^2-2S\alpha\rho+\alpha^2\;\;\;\;\textrm{(\S 104)}$\\
+whence\hbox{\hskip 4cm}$S\alpha\rho=0$\\
+This may be changed to 
+$$\alpha\rho+\rho\alpha=0$$
+or
+$$\alpha\rho+K\alpha\rho=0$$
+$$SU\frac{\rho}{\alpha}=0$$
+or finally,
+$$TVU\frac{\rho}{\alpha}=1$$
+all of which express properties of a plane. 
+
+Again,\hbox{\hskip 4cm}$T\rho=T\alpha$\\
+may be written\hbox{\hskip 3.2cm}$\displaystyle T\frac{\rho}{\alpha}=1$
+$$\left(S\frac{\rho}{\alpha}\right)^2-\left(V\frac{\rho}{\alpha}\right)^2=1$$
+$$(\rho+\alpha)^2-2S\alpha(\rho+\alpha)=0$$
+$$\rho=(\rho+\alpha)^{-1}\alpha(\rho+\alpha)$$
+$$S(\rho+\alpha)(\rho-\alpha)=0$$
+or finally,
+$$T.(\rho+\alpha)(\rho-\alpha)=2TV\alpha\rho$$
+
+All of these express properties of a sphere. They will be 
+interpreted when we come to geometrical applications. 
+
+{\bf 108}. {\sl To find the space relation among five points.}
+
+A system of five points, so far as its internal relations are 
+concerned, is fully given by the vectors from one to the other four. 
+If three of these be called $\alpha$, $\beta$, $\gamma$, the fourth, 
+$\delta$, is necessarily expressible as 
+$x\alpha+y\beta+z\gamma$. Hence the relation required must be 
+independent of x, y, z. 
+
+But 
+$$
+\left.
+\begin{array}{rlll}
+S\alpha\delta &amp;=\;x\alpha^2     &amp;+\;yS\alpha\beta &amp;+\;zS\alpha\gamma\\
+S\beta\delta  &amp;=\;xS\beta\alpha &amp;+\;y\beta^2      &amp;+\;zS\beta\gamma\\
+S\gamma\delta &amp;=\;xS\gamma\alpha &amp;+\;yS\gamma\beta &amp;+\;z\gamma^2\\
+S\delta\delta=\delta^2 &amp;=\;xS\delta\alpha &amp;+\;yS\delta\beta &amp;+\;zS\delta\gamma
+\end{array}
+\right\}\eqno{(1)}
+$$
+The elimination of $x$, $y$, $z$ gives a determinant of the fourth order, 
+which may be written 
+$$
+\left\vert
+\begin{array}{cccc}
+S\alpha\alpha &amp; S\alpha\beta &amp; S\alpha\gamma &amp; S\alpha\delta\\
+S\beta\alpha  &amp; S\beta\beta  &amp; S\beta\gamma  &amp; S\beta\delta\\
+S\gamma\alpha &amp; S\gamma\beta &amp; S\gamma\gamma &amp; S\gamma\delta\\
+S\delta\alpha &amp; S\delta\beta &amp; S\delta\gamma &amp; S\delta\delta
+\end{array}
+\right\vert=0
+$$
+Now each term may be put in either of two forms, thus 
+$$S\beta\gamma=\frac{1}{2}\left\{\beta^2+\gamma^2-(\beta-\gamma)^2\right\}=
+-T\beta T\gamma\cos\widehat{\beta\gamma}$$
+
+
+If the former be taken we have the expression connecting the 
+distances, two and two, of five points in the form given by Muir 
+(Proc. R. S. E. 1889) ; if we use the latter, the tensors divide out 
+(some in rows, some in columns), and we have the relation among 
+the cosines of the sides and diagonals of a spherical quadrilateral. 
+
+We may easily show (as an exercise in quaternion manipulation 
+merely) that this is the {\sl only} condition, by showing that from it 
+we can get the condition when any other of the points is taken as 
+origin. Thus, let the origin be at $\alpha$, the vectors are 
+$\alpha$, $\beta-\alpha$, $\gamma-\alpha$, $\delta-\alpha$.
+But, by changing the signs of the first row, and first 
+column, of the determinant above, and then adding their values 
+term by term to the other rows and columns, it becomes 
+$$
+\left\vert
+\begin{array}{cccc}
+S(\;\;\;-\alpha)(-\alpha) &amp; S(\;\;\;-\alpha)(\beta-\alpha) 
+&amp; S(\;\;\;-\alpha)(\gamma-\alpha) &amp; S(\;\;\;-\alpha)(\delta-\alpha)\\
+S(\beta-\alpha)(-\alpha)  &amp; S(\beta-\alpha)(\beta-\alpha)  
+&amp; S(\beta-\alpha)(\gamma-\alpha)  &amp; S(\beta-\alpha)(\delta-\alpha)\\
+S(\gamma-\alpha)(-\alpha) &amp; S(\gamma-\alpha)(\beta-\alpha) 
+&amp; S(\gamma-\alpha)(\gamma-\alpha) &amp; S(\gamma-\alpha)(\delta-\alpha)\\
+S(\delta-\alpha)(-\alpha) &amp; S(\delta-\alpha)(\beta-\alpha) 
+&amp; S(\delta-\alpha)(\gamma-\alpha) &amp; S(\delta-\alpha)(\delta-\alpha)
+\end{array}
+\right\vert
+$$
+which, when equated to zero, gives the same relation as before. 
+[See Ex. 10 at the end of this Chapter.] 
+
+An additional point, with $\epsilon=x^{'}\alpha+y^{'}\beta+z^{'}\gamma$
+gives six additional equations like (1) ; i. e. 
+$$
+\begin{array}{rlll}
+S\alpha\epsilon&amp;=x^{'}\alpha^2&amp;+y^{'}S\alpha\beta&amp;+z^{'}S\alpha\gamma\\
+S\beta\epsilon&amp;=x^{'}S\beta\alpha&amp;+y^{'}\beta^2&amp;+z^{'}S\beta\gamma\\
+S\gamma\epsilon&amp;=x^{'}S\gamma\alpha&amp;+y^{'}S\gamma\beta&amp;+z^{'}\gamma^2\\
+S\delta\epsilon&amp;=x^{'}S\delta\alpha&amp;+y^{'}S\delta\beta&amp;+z^{'}S\delta\gamma\\
+&amp;=xS\epsilon\alpha&amp;+yS\epsilon\beta&amp;+zS\epsilon\gamma\\
+\epsilon^2&amp;=x^{'}S\alpha\epsilon&amp;+y^{'}S\beta\epsilon&amp;+z^{'}S\gamma\epsilon
+\end{array}
+$$
+from which corresponding conclusions may be drawn. 
+
+Another mode of solving the problem at the head of this 
+section is to write the {\sl identity}
+$$
+\sum m(\alpha-\theta)^2=\sum m\alpha^2-sS.\theta\sum m\alpha+\theta^2\sum m
+$$
+where the $m$s are undetermined scalars, and the $\alpha$s are given 
+vectors, while $\theta$ is any vector whatever. 
+
+Now, {\sl provided that the number of given vectors exceeds four}, we 
+do not completely determine the ms by imposing the conditions 
+$$\sum m=0,\;\;\;\;\sum m\alpha=0$$
+Thus we may write the above identity, for each of five vectors 
+successively, as 
+$$
+\begin{array}{rcl}
+\sum m(\alpha-\alpha_1)^2 &amp;=&amp; \sum m\alpha^2\\
+\sum m(\alpha-\alpha_2)^2 &amp;=&amp; \sum m\alpha^2\\
+\ldots\ldots &amp;=&amp; \ldots\\
+\sum m(\alpha-\alpha_n)^2 &amp;=&amp; \sum m\alpha^2\\
+\end{array}
+$$
+Take, with these,\hbox{\hskip 3cm}$\sum m = 0$\\
+and we have six linear equations from which to eliminate the $m$s. 
+The resulting determinant is 
+$$
+\left\vert
+\begin{array}{cccccc}
+\overline{\alpha_1-\alpha_1^2} &amp; \overline{\alpha_1-\alpha_s^2} &amp;
+\overline{\alpha_1-\alpha_3^2} &amp; . &amp; 
+\overline{\alpha_1-\alpha_5^2} &amp; 1\\
+\overline{\alpha_2-\alpha_1^2} &amp; \overline{\alpha_2-\alpha_s^2} &amp;
+\overline{\alpha_2-\alpha_3^2} &amp; . &amp; 
+\overline{\alpha_2-\alpha_5^2} &amp; 1\\
+. &amp; . &amp; . &amp; &amp; . &amp; \\
+. &amp; . &amp; . &amp; &amp; . &amp; \\
+\overline{\alpha_5-\alpha_1^2} &amp; \overline{\alpha_5-\alpha_s^2} &amp;
+\overline{\alpha_5-\alpha_3^2} &amp; . &amp; 
+\overline{\alpha_5-\alpha_5^2} &amp; 1\\
+1 &amp; 1 &amp; . &amp; . &amp; 1 &amp; 0\\
+\end{array}
+\right\vert
+\sum m\alpha^2=0
+$$
+
+This is equivalent to the form in which Cayley gave the 
+relation among the mutual distances of five points. (Camb. Math. 
+Journ. 1841.) 
+
+{\bf 109}. We have seen in \S 95 that a quaternion may be divided 
+into its scalar and vector parts as follows: 
+$$
+\frac{\beta}{\alpha}=S\frac{\beta}{\alpha}+V\frac{\beta}{\alpha}=
+\frac{T\beta}{T\alpha}(\cos\theta+\epsilon\sin\theta)
+$$
+where $\theta$ is the angle between the directions of 
+$\alpha$ and $\beta$ and $\displaystyle \epsilon=UV\frac{\beta}{\alpha}$
+is the unit-vector perpendicular to the plane of $\alpha$ 
+and $\beta$ so situated 
+that positive (i.e. left-handed) rotation about it turns 
+$\alpha$ towards $\beta$
+
+Similarly we have (\S 96) 
+$$
+\begin{array}{rl}
+\alpha\beta&amp;=S\alpha\beta + V\alpha\beta\\
+&amp;=T\alpha T\beta(-\cos\theta +\epsilon\sin\theta)
+\end{array}
+$$
+$\theta$ and $\epsilon$ having the same signification as before. 
+
+{\bf 110}. Hence, considering the versor parts alone, we have 
+$$U\frac{\beta}{\alpha}=\cos\theta+\epsilon\sin\theta$$
+Similarly
+$$U\frac{\gamma}{\beta}=\cos\phi+\epsilon\sin\phi$$
+$\phi$ being the positive angle between the directions of 
+$\gamma$ and $\beta$, and $\epsilon$
+the same vector as before, if $\alpha$, $\beta$, $\gamma$ be coplanar. 
+
+Also we have 
+$$U\frac{\gamma}{\alpha}=\cos(\theta+\phi)+\epsilon\sin(\theta+\phi)$$
+But we have always 
+$$\frac{\gamma}{\beta}.\frac{\beta}{\alpha}=\frac{\gamma}{\alpha}$$
+and therefore
+$$U\frac{\gamma}{\beta}.U\frac{\beta}{\alpha}=U\frac{\gamma}{\alpha}$$
+or
+$$
+\cos(\phi+\theta)+\epsilon\sin(\phi+\theta)=
+(\cos\phi+\epsilon\sin\phi)(\cos\theta+\epsilon\sin\theta)
+$$
+$$
+=\cos\phi\cos\theta-\sin\phi\sin\theta+
+\epsilon(\sin\phi\cos\theta+\cos\phi\sin\theta)
+$$
+from which we have at once the fundamental formulae for the 
+cosine and sine of the sum of two arcs, by equating separately the 
+scalar and vector parts of these quaternions. 
+
+And we see, as an immediate consequence of the expressions 
+above, that 
+$$\cos m\theta+\epsilon\sin m\theta=(\cos\theta+\epsilon\sin\theta)^m$$
+if $m$ be a positive whole number. For the left-hand side is a versor 
+which turns through the angle $m\theta$ at once, while the right-hand 
+side is a versor which effects the same object by $m$ successive turn 
+ings each through an angle $\theta$. See \S\S 8, 9. 
+
+{\bf 111}. To extend this proposition to fractional indices we have 
+only to write $\displaystyle \frac{\theta}{n}$ for $\theta$,
+when we obtain the results as in ordinary trigonometry. 
+
+From De Moivre's Theorem, thus proved, we may of course 
+deduce the rest of Analytical Trigonometry. And as we have 
+already deduced, as interpretations of self-evident quaternion 
+transformations (\S\S 97, 104), the fundamental formulae for the solution 
+of plane triangles, we will now pass to the consideration of spherical 
+trigonometry, a subject specially adapted for treatment by qua 
+ternions; but to which we cannot afford more than a very few 
+sections. (More on this subject will be found in Chap. XI in 
+connexion with the Kinematics of rotation.) The reader is referred to 
+Hamilton s works for the treatment of this subject by quaternion 
+exponentials. 
+
+{\bf 112}. Let $\alpha$, $\beta$, $\gamma$
+be unit-vectors drawn from the centr to the 
+corners $A$, $B$, $C$ of a triangle on the unit-sphere. Then it is evident 
+that, with the usual notation, we have (\S 96), 
+$$
+S\alpha\beta=-\cos c,\;\;\;\;
+S\beta\gamma=-\cos a,\;\;\;\;
+S\gamma\alpha=-\cos b
+$$
+$$
+TV\alpha\beta=\sin c,\;\;\;\;
+TV\beta\gamma=\sin a,\;\;\;\;
+TV\gamma\alpha=\sin b
+$$
+Also $UV\alpha\beta$, $UV\beta\gamma$, $UV\gamma\alpha$
+are evidently the vectors of the corners of the polar triangle. 
+
+Hence 
+$$S.UV\alpha\beta UV\beta\gamma=\cos B\textrm{, \&amp;c.}$$
+$$TV.UV\alpha\beta UV\beta\gamma=\sin B\textrm{, \&amp;c.}$$
+
+Now (\S 90 (1)) we have 
+$$
+\begin{array}{rcl}
+SV\alpha\beta V\beta\gamma&amp;=&amp;S.\alpha V(\beta V\beta\gamma)\\
+&amp;=&amp;-S\alpha\beta S\beta\gamma + \beta^2S\alpha\gamma
+\end{array}
+$$
+Remembering that we have 
+$$
+SV\alpha\beta V\beta\gamma=
+TV\alpha\beta TV\beta\gamma S.UV\alpha\beta UV\beta\gamma
+$$
+we see that the formula just written is equivalent to 
+$$\sin a \sin c \cos B = -\cos a \cos c + \cos b$$
+or
+$$\cos b = \cos a \cos c + \sin a \sin c \cos B$$
+
+{\bf 113}. Again,
+$$V.V\alpha\beta V\beta\gamma=-\beta S\alpha\beta\gamma$$
+which gives 
+$$
+TV.V\alpha\beta V\beta\gamma=
+TS.\alpha\beta\gamma=
+TS.\alpha V\beta\gamma=
+TS.\beta V\gamma\alpha=
+TS.\gamma V\alpha\beta
+$$
+or
+$$\sin a \sin c \sin B = \sin a \sin p_a = \sin b \sin p_b = \sin c \sin p_c$$
+where $p_a$ is the arc drawn from $A$ perpendicular to $BC$, \&amp;c. 
+Hence
+$$\sin p_a = \sin c \sin B$$
+$$\sin p_b = \frac{\sin a \sin c}{\sin b} \sin B$$
+$$\sin p_c = \sin a \sin B$$
+
+{\bf 114}. Combining the results of the last two sections, we have 
+$$V\alpha\beta .V\beta\gamma=\sin a \sin c \cos B-\beta \sin a \sin c \sin B$$
+$$= \sin a \sin c (\cos B - \beta \sin B)$$
+$$
+\left.
+\begin{array}{lcl}
+\textrm{Hence} &amp; \hbox{\hskip 1cm} 
+&amp; U.V\alpha\beta V\beta\gamma=(\cos B-\beta\sin B)\\
+\textrm{and} &amp; \hbox{\hskip 1.1cm} 
+&amp; U.V\gamma\beta V\beta\alpha=(\cos B+\beta\sin B)
+\end{array}
+\right\}
+$$
+These are therefore versors which turn all vectors perpendicular to 
+$OB$ negatively or positively about $OB$ through the angle $B$. 
+
+[It will be shown later (\S 119) that, in the combination 
+$$(\cos B+\beta\sin B)(\;\;\;\;)(\cos B -\beta\sin B)$$
+the system operated on is made to rotate, as if rigid, round the 
+vector axis $\beta$ through an angle $2B$.] 
+
+As another instance, we have 
+$$
+\begin{array}{rl}
+\tan B &amp;=\displaystyle \frac{\sin B}{\cos B}\\
+&amp;\\
+&amp;=\displaystyle 
+\frac{TV.V\alpha\beta V\beta\gamma}{S.V\alpha\beta V\beta\gamma}\\
+&amp;\\
+&amp;=\displaystyle 
+-\beta^{-1}\frac{V.V\alpha\beta V\beta\gamma}{S.V\alpha\beta V\beta\gamma}\\
+&amp;\\
+&amp;=\displaystyle 
+-\frac{S.\alpha\beta\gamma}{S\alpha\gamma+S\alpha\beta S\beta\gamma}
+=\textrm{ \&amp;c}
+\end{array}
+\eqno{(1)}
+$$
+
+The interpretation of each of these forms gives a different theorem 
+in spherical trigonometry. 
+
+{\bf 115}. Again, let us square the equal quantities 
+$$
+V.\alpha\beta\gamma\;\;\;\;\textrm{   and   }\;\;\;\;
+\alpha S\beta\gamma-\beta S\alpha\gamma+\gamma S\alpha\beta$$
+supposing $\alpha$, $\beta$, $\gamma$ to be any unit-vectors whatever. We have 
+$$
+-(V.\alpha\beta\gamma)^2=
+S^2\beta\gamma + S^2\gamma\alpha + 
+S^2\alpha\beta + 2S\beta\gamma S\gamma\alpha S\alpha\beta
+$$
+But the left-hand member may be written as 
+$$T^2.\alpha\beta\gamma-S^2.\alpha\beta\gamma$$
+whence
+$$
+1-S^2.\alpha\beta\gamma=S^2\beta\gamma +S^2\gamma\alpha +
+S^2\alpha\beta+2S\beta\gamma S\gamma\alpha S\alpha\beta
+$$
+or
+$$
+1-\cos^2 a - \cos^2 b - \cos^2 c + 2 \cos a \cos b \cos c$$
+$$= \sin^2 a \sin^2 p_a = \textrm{ \&amp;c.}$$
+$$= \sin^2 a \sin^2 b \sin^2 C  = \textrm{ \&amp;c.}$$
+all of which are well-known formulae. 
+
+{\bf 116}. Again, for any quaternion, 
+$$q=Sq+Vq$$
+so that, if $n$ be a positive integer, 
+$$q^n=(Sq)^n+n(Sq)^{n-1}Vq+
+\frac{n.\overline{n-1}}{1.2}(Sq)^{n-2}(Vq)^2+\ldots$$
+From this at once 
+$$S.q^n=(Sq)^n-\frac{n.\overline{n-1}}{1.2}(Sq)^{n-2}T^2Vq$$
+$$+\frac{n.\overline{n-1}.\overline{n-2}.\overline{n-3}}{1.2.3.4}
+(Sq)^{n-4}T^4(Vq)-\textrm{\&amp;c.,}$$
+$$V.q^n=Vq\left[n(Sq)^{n-1}-
+\frac{n.\overline{n-1}.\overline{n-2}}{1.2.3}
+(Sq)^{n-3}T^2Vq+\textrm{\&amp;c.,}\right]$$
+If $q$ be a versor we have 
+$$q=\cos u +\theta\sin u$$
+so that 
+$$
+\begin{array}{rl}
+S.q^n &amp; =\displaystyle
+(\cos u)^n-\frac{n.\overline{n-1}}{1.2}(\cos u)^{n-2}(\sin u)^2+\ldots\\
+&amp;\\
+&amp;=\displaystyle\cos nu;\\
+&amp;\\
+V.q^n &amp; =\displaystyle
+\theta\sin u\left[n(\cos u)^{n-1}-
+\frac{n.\overline{n-1}.\overline{n-2}}{1.2.3}
+(\cos u)^{n-3}(\sin u)^2+\ldots\right]\\
+&amp;\\
+&amp;=\displaystyle\theta\sin nu;
+\end{array}
+$$
+as we might at once have concluded from \S 110. 
+
+Such results may be multiplied indefinitely by any one who has 
+mastered the elements of quaternions. 
+
+{\bf 117}. A curious proposition, due to Hamilton, gives us a 
+quaternion expression for the {\sl spherical excess} in any triangle. 
+The following proof, which is very nearly the same as one of his, 
+though by no means the simplest that can be given, is chosen here 
+because it incidentally gives a good deal of other information. 
+We leave the quaternion proof as an exercise. 
+
+Let the unit-vectors drawn from the centre of the sphere to 
+$A$, $B$, $C$, respectively, be $\alpha$, $\beta$, $\gamma$.
+It is required to express, as an 
+arc and as an angle on the sphere, the quaternion 
+$$\beta\alpha^{-1}\gamma$$
+
+\includegraphics{ps/quat18.ps}
+
+The figure represents an orthographic projection made on a 
+plane perpendicular to $\gamma$. Hence $C$ is the centre of the circle $DEe$. 
+Let the great circle through $A$, $B$ meet $DEe$ in $E$, $e$, and let $DE$ be 
+a quadrant. Thus 
+${\stackrel{\frown}{DE}}$ represents $\gamma$ (\S 72). Also make 
+${\stackrel{\frown}{EF}} = {\stackrel{\frown}{AB}}$
+$=\beta\alpha^{-1}$ Then, evidently, 
+$${\stackrel{\frown}{DF}}=\beta\alpha^{-1}\gamma$$
+which gives the arcual representation required. 
+
+Let $DF$ cut $Ee$ in $G$. Make $Ca = EG$, and join $D$, $a$, and $a$, $F$. 
+Obviously, as $D$ is the pole of $Ee$, $Da$ is a quadrant ; and since 
+$EG = Ca$, $Ga = EG$, a quadrant also. Hence $a$ is the pole of $DG$, 
+and therefore the quaternion may be represented by the angle 
+$DaF$. 
+
+Make $Cb = Ca$, and draw the arcs $Pa\beta$, $Pb\alpha$ from $P$, the pole of 
+$AB$. Comparing the triangles $Eb\alpha$ and $ea\beta$, 
+we see that $E\alpha = e\beta$.
+But, since $P$ is the pole of $AB$, $F\beta a$ is a right angle: and therefore 
+as $Fa$ is a quadrant, so is $F\beta$. Thus $AB$ is the complement of $E\alpha$
+or $\beta e$, and therefore 
+$$\alpha\beta=2AB$$
+
+Join $bA$. and produce it to $c$ so that $Ac = bA$; join $c$, $P$, cutting 
+$AB$ in $o$. Also join $c$, $B$, and $B$, $a$. 
+
+Since $P$ is the pole of $AB$, the angles at $o$ are right angles; 
+and therefore, by the equal triangles $b\alpha A$, $coA$, we have 
+$$\alpha A = Ao$$
+But
+$$\alpha\beta = 2AB$$
+whence
+$$oB=B\beta$$
+and therefore the triangles $coB$ and $Ba\beta$ are equal, and $c$, $B$, $a$ 
+lie on the same great circle. 
+
+Produce $cA$ and $cB$ to meet in $H$ (on the opposite side of the 
+sphere). $H$ and $c$ are diametrically opposite, and therefore $cP$, 
+produced, passes through $H$. 
+
+Now $Pa = Pb = PH$, for they differ from quadrants by the 
+equal arcs $a\beta$, $b\alpha$, $oc$. Hence these arcs divide the 
+triangle $Hab$ into three isosceles triangles. 
+
+But
+$$\angle PHb + \angle PHA = \angle aHb = \angle bca$$
+Also
+$$\angle Pab = \pi - \angle cab - \angle PaH$$
+$$\angle Pba = \angle Pab = \pi - \angle cba - \angle PbH$$
+Adding,
+$$2\angle Pab = 2\pi - \angle cab - \angle cba - \angle bca$$
+$$= \pi - (\textrm{spherical excess of }abc)$$
+But, as $\angle Fa\beta$ and $\angle Dae$ are right angles, we have
+$$
+\textrm{angle of }\beta\alpha^{-1}\gamma =
+\angle FaD = \beta ae = \angle Pab
+$$
+$$=\frac{\pi}{2} - \frac{1}{2}(\textrm{spherical excess of }abc)$$
+
+[Numerous singular geometrical theorems, easily proved {\sl ab 
+initio} by quaternions, follow from this: e.g. The arc $AB$, which 
+bisects two sides of a spherical triangle $abc$, intersects the base at 
+the distance of a quadrant from its middle point. All spherical 
+triangles, with a common side, and having their other sides 
+bisected by the same great circle (i.e. having their vertices in a 
+small circle parallel to this great circle) have equal areas, \&amp;c. ]
+
+{\bf 118}. Let $\overline{Oa}=\alpha^{'}$, $\overline{Ob}=\beta^{'}$,
+$\overline{Oc}=\gamma^{'}$, and we have 
+$$
+\begin{array}{rcl}
+\left(\frac{\alpha^{'}}{\beta^{'}}\right)^{\frac{1}{2}}
+\left(\frac{\beta^{'}}{\gamma^{'}}\right)^{\frac{1}{2}}
+\left(\frac{\gamma^{'}}{\alpha^{'}}\right)^{\frac{1}{2}}&amp;=&amp;
+{\stackrel{\frown}{Ca}}.{\stackrel{\frown}{cA}}.{\stackrel{\frown}{Bc}}\\
+&amp;=&amp;{\stackrel{\frown}{Ca}}.{\stackrel{\frown}{BA}}\\
+&amp;=&amp;{\stackrel{\frown}{EG}}.{\stackrel{\frown}{FE}}=
+{\stackrel{\frown}{FG}}
+\end{array}
+$$
+
+But $FG$ is the complement of $DF$. Hence the {\sl angle of the 
+quaternion}
+$$
+\left(\frac{\alpha^{'}}{\beta^{'}}\right)^{\frac{1}{2}}
+\left(\frac{\beta^{'}}{\gamma^{'}}\right)^{\frac{1}{2}}
+\left(\frac{\gamma^{'}}{\alpha^{'}}\right)^{\frac{1}{2}}
+$$
+{\sl is half the spherical excess of the triangle whose angular points are 
+at the extremities of the unit-vectors} $\alpha^{'}$, $\beta^{'}$, and
+$\gamma^{'}$.
+
+[In seeking a purely quaternion proof of the preceding proposi 
+tions, the student may commence by showing that for any three 
+unit-vectors we have 
+$$
+\frac{\beta}{\alpha}\frac{\gamma}{\beta}\frac{\alpha}{\gamma}=
+-(\beta\alpha^{-1}\gamma)^2
+$$
+
+The angle of the first of these quaternions can be easily assigned; 
+and the equation shows how to find that of $\beta\alpha^{-1}\gamma$. 
+
+Another easy method is to commence afresh by forming from 
+the vectors of the corners of a spherical triangle three new vectors 
+thus: 
+$$
+\alpha^{'}=\left(\frac{\beta+\gamma}{\alpha}^{2}\right)^2 .\;\alpha,\;\;\;\;\;
+\textrm{\&amp;c.}
+$$
+
+Then the angle between the planes of $\alpha$, $\beta^{'}$ and
+$\gamma^{'}$, $\alpha$; or of $\beta$, $\gamma^{'}$ and $\alpha^{'}$,
+$\beta$; or of $\gamma$, $\alpha^{'}$ and $\beta^{'}$, $\gamma$
+is obviously the spherical excess. 
+
+But a still simpler method of proof is easily derived from the 
+composition of rotations.] 
+
+{\bf 119}. It may be well to introduce here, though it belongs 
+rather to Kinematics than to Geometry, the interpretation of the 
+operator 
+$$q(\;\;\;)q^{-1}$$
+
+By a rotation, about the axis of $q$, through double the angle of $q$, 
+the quaternion $r$ becomes the quaternion $qrq^{-1}$ . Its tensor and 
+angle remain unchanged, its plane or axis alone varies. 
+
+\includegraphics{ps/quat19.ps}
+
+A glance at the figure is sufficient for 
+the proof, if we note that of course 
+$T . qrq^{-1} = Tr$, and therefore that we need 
+consider the {\sl versor} parts only. Let $Q$ 
+be the pole of $q$. 
+$$
+{\stackrel{\frown}{AB}}=q,\;\;\;\;
+{\stackrel{\frown}{AB^{-1}}}=q^{-1},\;\;\;\;
+{\stackrel{\frown}{B^{'}C^{'}}}=r
+$$
+Join $C^{'}A$, and make 
+${\stackrel{\frown}{AC}}={\stackrel{\frown}{C^{'}A}}$. Join $CB$.
+
+Then ${\stackrel{\frown}{CB}}$ is $qrq^{-1}$, 
+its arc $CB$ is evidently equal in length to that 
+of $r$, $B^{'}C^{'}$; and its plane (making the same angle with 
+$B^{'}B$ that that of 
+$B^{'}C^{'}$ does) has evidently been made to revolve about $Q$, the 
+pole of $q$, through double the angle of $q$. 
+
+It is obvious, from the nature of the above proof, that this 
+operation is distributive; i.e. that 
+$$q(r+s)q^{-1}=qrq^{-1}+qsq^{-1}$$
+
+If $r$ be a vector, $=\rho$, then $q\rho q^{-1}$ 
+(which is also a vector) is the 
+result of a rotation through double the angle of $q$ about the axis 
+of $q$. Hence, as Hamilton has expressed it, if $B$ represent a rigid 
+system, or assemblage of vectors, 
+$$qBq^{-1}$$
+is its new position after rotating through double the angle of $q$ 
+about the axis of $q$. 
+
+{\bf 120}. To compound such rotations, we have 
+$$r . qBq^{-1} . r^{-1} = rq . B . (rq)^{-1}$$
+
+To cause rotation through an angle $t$-fold the double of the angle 
+of $q$ we write 
+$$q^{t}Bq^{-t}$$
+
+To reverse the direction of this rotation write
+$$q^{-t}Bq^{t}$$
+
+To {\sl translate} the body $B$ without rotation, each point of it moving 
+through the vector $\alpha$, we write $\alpha + B$. 
+
+To produce rotation of the translated body about the same axis, 
+and through the same angle, as before, 
+$$q(\alpha+B)q^{-1}$$
+
+Had we rotated first, and then translated, we should have had 
+$$\alpha+qBq^{-1}$$
+
+From the point of view of those who do not believe in the 
+Moon s rotation, the former of these expressions ought to be 
+$$q\alpha q^{-1}+B$$
+instead of 
+$$q\alpha q^{-1}+qBq^{-1}$$
+But to such men quaternions are unintelligible. 
+
+{\bf 121}. The operator above explained finds, of course, some 
+of its most direct applications in the ordinary questions of 
+Astronomy, connected with the apparent diurnal rotation of the 
+stars. If $\lambda$ be a unit-vector parallel to the polar axis, and $h$ the 
+hour angle from the meridian, the operator is 
+$$
+\left(\cos\frac{h}{2}-\lambda\sin\frac{h}{2}\right)
+\left(\;\;\;\;\right)
+\left(\cos\frac{h}{2}+\lambda\sin\frac{h}{2}\right)
+$$
+or
+$$L^{-1}\left(\;\;\;\;\right)L$$
+
+the inverse going first, because the {\sl apparent} rotation is negative 
+(clockwise). 
+
+If the upward line be $i$, and the southward $j$, we have 
+$$\lambda = i\sin l-j\cos l$$
+where $l$ is the latitude of the observer. The meridian equatorial 
+unit vector is 
+$$\mu = i\cos l+j\sin l$$
+and $\lambda$, $\mu$, $k$ of course form a rectangular unit system. 
+
+The meridian unit-vector of a heavenly body is 
+$$\delta=i\cos(l-d)+j\sin(l-d)$$
+$$=\lambda\sin d+\mu\cos d$$
+where $d$ is its declination. 
+
+Hence when its hour-angle is $h$, its vector is 
+$$\delta^{'}=L^{-1}\delta L$$
+
+The vertical plane containing it intersects the horizon in 
+$$iVi\delta^{'}=jSj\delta^{'}+kSk\delta^{'}$$
+so that 
+$$\tan(azimuth)=\frac{Sk\delta^{'}}{Sj\delta^{'}}\eqno{(1)}$$
+
+[This may also be obtained directly from the last formula (1) 
+of \S 114.] 
+
+To find its Amplitude, i.e. its azimuth at rising or setting, 
+the hour-angle must be obtained from the condition 
+$$Si\delta^{'}=0\eqno{(2)}$$
+
+These relations, with others immediately deducible from them, 
+enable us (at once and for ever) to dispense with the hideous 
+formulae of Spherical Trigonometry. 
+
+{\bf 122}. To show how readily they can be applied, let us 
+translate the expressions above into the ordinary notation. This 
+is effected at once by means of the expressions for $\lambda$, $\mu$, $L$,
+and $\delta$ above, which give by inspection 
+$$\delta^{'}=\lambda\sin d+(\mu\cos h-k\sin h)\cos d$$
+= x sin d + (fjb cos h k sin h) cos d, 
+and we have from (1) and (2) of last section respectively 
+$$
+\tan(azimuth)=
+\frac{\sin h\cos d}{\cos l\sin d-\sin l\cos d\cos h}\eqno{(1)}
+$$
+$$
+\cos h+\tan l \tan d=0\eqno{(2)}
+$$
+
+In Capt. Weir s ingenious {\sl Azimuth Diagram}, these equations 
+are represented graphically by the rectangular coordinates of a 
+system of confocal conics: viz. 
+$$
+\left.
+\begin{array}{c}
+x = \sin h \sec l \\
+y = \cos h \tan l
+\end{array}
+\right\}\eqno{(3)}
+$$
+
+The ellipses of this system depend upon $l$ alone, the hyperbolas 
+upon $h$. Since (1) can, by means of (3), be written as 
+$$\tan(azimuth)=\frac{x}{\tan d-y}$$
+we see that the azimuth can be constructed at once by joining 
+with the point $0$, $-\tan d$, the intersection of the proper ellipse and 
+hyperbola. 
+
+Equation (2) puts these expressions for the coordinates in the 
+form 
+$$
+\left.
+\begin{array}{c}
+x=\sec l\sqrt{1-\tan^{2} l\tan^{2} d}\\
+y=-\tan^{2} l \tan d
+\end{array}
+\right\}
+$$
+
+The elimination of $d$ gives the ellipse as before, but that of $l$
+gives, instead of the hyperbolas, the circles 
+$$x^{2}+y^{2}-y(\tan d-\cot d)=1$$
+
+The radius is 
+$$\frac{1}{2}(\tan d+ \cot d)$$
+and the coordinates of the centre are 
+$$0,\;\;\;\frac{1}{2}(\tan d- \cot d)$$
+
+123. A scalar equation in $\rho$, the vector of an undetermined 
+point, is generally the equation of a {\sl surface}; since we may use 
+in it the expression 
+$$\rho=x\alpha$$
+where $x$ is an unknown scalar, and $\alpha$ any assumed unit-vector. 
+The result is an equation to determine $x$. Thus one or more 
+points are found on the vector $x\alpha$, whose coordinates satisfy the 
+equation; and the locus is a surface whose degree is determined 
+by that of the equation which gives the values of $x$. 
+
+But a {\sl vector} equation in $\rho$, as we have seen, generally leads to 
+three scalar equations, from which the three rectangular or other 
+components of the sought vector are to be derived. Such a vector 
+equation, then, usually belongs to a definite number of {\sl points} in 
+space. But in certain cases these may form a {\sl line}, and even a 
+{\sl surface}, the vector equation losing as it were one or two of the 
+three scalar equations to which it is usually equivalent. 
+
+Thus while the equation 
+$$\alpha\rho=\beta$$
+gives at once 
+$$\rho=\alpha^{-1}\beta$$
+which is the vector of a definite point, since by making $\rho$ a {\sl vector}
+we have evidently assumed 
+$$S\alpha\beta=0$$
+the closely allied equation
+$$V\alpha\rho=\beta$$
+is easily seen to involve
+$$S\alpha\beta=0$$
+and to be satisfied by
+$$\rho=\alpha^{-1}\beta+x\alpha$$
+whatever be $x$. Hence the vector of any point whatever in the 
+line drawn parallel to $\alpha$ from the extremity of $\alpha^{-1}\beta$
+satisfies the given equation. [The difference between the results depends 
+upon the fact that $S\alpha\rho$ is indeterminate in the second form, but 
+definite (= 0) in the first.] 
+
+{\bf 124}. Again,
+$$V\alpha\rho . V\rho\beta=(V\alpha\beta)^{2}$$
+is equivalent to but two scalar equations. For it shows that $V\alpha\rho$
+and $V\beta\rho$ are parallel, i.e. $\rho$ 
+lies in the same plane as $\alpha$ and $\beta$, and 
+can therefore be written (\S 24) 
+$$\rho=x\alpha+y\beta$$
+where $x$ and $y$ are scalars as yet undetermined. 
+
+We have now 
+$$V\alpha\rho=yV\alpha\beta$$
+$$V\rho\beta=xV\alpha\beta$$
+which, by the given equation, lead to 
+$$xy=1,\;\;\;\textrm{or}\;\;\;y=\frac{1}{x}$$
+or finally
+$$\rho=x\alpha+\frac{1}{x}\beta$$
+which (\S 40) is the equation of a hyperbola whose asymptotes are 
+in the directions of $\alpha$ and $\beta$.
+
+{\bf 125}. Again, the equation 
+$$V . V\alpha\beta V\alpha\rho=0$$
+though apparently equivalent to three scalar equations, is really 
+equivalent to one only. In fact we see by \S 91 that it may be 
+written 
+$$-\alpha S.\alpha\beta\rho=0$$
+whence, if $\alpha$ be not zero, we have 
+$$S . \alpha\beta\rho=0$$
+and thus (\S 101) the only condition is that $\rho$ is coplanar with 
+$\alpha$, $\beta$.
+Hence the equation represents the plane in which 
+$\alpha$ and $\beta$ lie. 
+
+{\bf 126}. Some very curious results are obtained when we extend 
+these processes of interpretation to functions of a {\sl quaternion}
+$$q=w+\rho$$
+instead of functions of a mere {\sl vector} $\rho$. 
+
+A scalar equation containing such a quaternion, along with 
+quaternion constants, gives, as in last section, the equation of a 
+surface, if we assign a definite value to $w$. Hence for successive 
+values of $w$, we have successive surfaces belonging to a system ; 
+and thus when $w$ is indeterminate the equation represents not a 
+{\sl surface}, as before, but a {\sl volume}, 
+in the sense that the vector of any 
+point within that volume satisfies the equation. 
+
+Thus the equation 
+$$(Tq)^2=a^2$$
+or
+$$w^2-\rho^2=a^2$$
+or
+$$(TP)^2=a^2-w^2$$
+represents, for any assigned value of $w$, not greater than $a$, a sphere 
+whose radius is $\sqrt{a^2-w^2}$. Hence the equation is satisfied by the 
+vector of any point whatever in the {\sl volume} of a sphere of radius $a$, 
+whose centre is origin. 
+
+Again, by the same kind of investigation, 
+$$(T (q-\beta))^2=a^2$$
+where $q=w+\rho$, is easily seen to represent the volume of a sphere 
+of radius $a$ described about the extremity of $\beta$ as centre. 
+
+Also $S(q^2) = -a^2$ is the equation of infinite space less the space 
+contained in a sphere of radius $a$ about the origin. 
+
+Similar consequences as to the interpretation of vector 
+equations in quaternions may be readily deduced by the reader. 
+
+{\bf 127}. The following transformation is enuntiated without proof 
+by Hamilton ({\sl Lectures}, p. 587, and {\sl Elements}, p. 299). 
+$$r^{-1}(r^2q^2)^{\frac{1}{2}}q^{-1}=U(rq+KrKq)$$
+To prove it, let
+$$r^{-1}(r^2q^2)^{\frac{1}{2}}q^{-1}=t$$
+then 
+$$Tt=1$$
+and therefore
+$$Kt=t^{-1}$$
+But
+$$(r^2q^2)^{\frac{1}{2}}=rtq$$
+or
+$$r^2q^2=rtqrtq$$
+or
+$$rq=tqrt$$
+Hence
+$$KqKr=t^{-1}KrKqt^{-1}$$
+or
+$$KrKq=tKqKrt$$
+Thus we have
+$$U(rq\pm KrKq)=tU(qr\pm KqKr)t$$
+or, if we put
+$$s=U(qr\pm KqKr)$$
+$$Ks=\pm tst$$
+Hence
+$$sKs=(Ts)^2=1=\pm stst$$
+which, if we take the positive sign, requires 
+$$st=\pm 1$$
+or
+$$t=\pm s^{-1}=\pm UKs$$
+which is the required transformation. 
+
+[It is to be noticed that there are other results which might 
+have been arrived at by using the negative sign above ; some 
+involving an arbitrary unit-vector, others involving the imaginary 
+of ordinary algebra.] 
+
+{\bf 128}. As a final example, we take a transformation of Hamilton's, 
+of great importance in the theory of surfaces of the second order. 
+
+Transform the expression 
+$$(S\alpha\rho)^2+(S\beta\rho)^2+(S\gamma\rho)^2$$
+in which $\alpha$, $\beta$, $\gamma$ 
+are any three mutually rectangular vectors, into the form
+$$\left(\frac{T(\iota\rho+\rho\kappa)}{\kappa^2-\iota^2}\right)^2$$
+which involves only two vector-constants, $\iota$, $\kappa$.
+
+[The student should remark here that $\iota$, $\kappa$, two undetermined 
+vectors, involve six disposable constants : and that $\alpha$, $\beta$,
+$\gamma$, being a {\sl rectangular} system, involve also only six constants.] 
+$$
+\begin{array}{rcl}
+\{T(\iota\rho+\rho\kappa)\}^2 
+&amp;=&amp; (\iota\rho+\rho\kappa)(\rho\iota+\kappa\rho)\;\;\;\;(\S\S 52,55)\\
+&amp;=&amp; (\iota^2+\kappa^2)\rho^2+(\iota\rho\kappa\rho+\rho\kappa\rho\iota)\\
+&amp;=&amp; (\iota^2+\kappa^2)\rho^2+2S.\iota\rho\kappa\rho\\
+&amp;=&amp; (\iota-\kappa)^2\rho^2+4S\iota\rho S\kappa\rho
+\end{array}
+$$
+Hence
+$$
+(S\alpha\rho)^2+(S\beta\rho)^2+(S\gamma\rho)^2=
+\frac{(\iota-\kappa)^2}{(\kappa^2-\iota^2)^2}\rho^2+
+4\frac{S\iota\rho S\kappa\rho}{(\kappa^2-\iota^2)^2}
+$$
+But
+$$
+\alpha^{-2}(S\alpha\rho)^2+
+\beta^{-2}(S\beta\rho)^2+
+\gamma^{-2}(S\gamma\rho)^2=
+\rho^2\;\;\;\;(\S\S 25,73).
+$$
+Multiply by $\beta^2$ and subtract, we get 
+$$
+\left(1-\frac{\beta^2}{\alpha^2}\right)(S\alpha\rho)^2-
+\left(\frac{\beta^2}{\gamma^2}-1\right)(S\gamma\rho)^2=
+\left\{\frac{(\iota-\kappa)^2}{(\kappa^2-\iota^2)^2}-\beta^2\right\}\rho^2+
+4\frac{S\iota\rho S\kappa\rho}{(\kappa^2-\iota^2)^2}
+$$
+
+The left side breaks up into two real factors if $\beta^2$ be intermediate 
+in value to $\alpha^2$ and $\gamma^2$: 
+and that the right side may do so the term 
+in $\rho^2$ must vanish. This condition gives 
+$$\beta^2=\frac{(\iota-\kappa)^2}{(\kappa^2-\iota^2)^2}$$
+and the identity becomes 
+$$
+S\left\{
+\alpha\sqrt{\left(1-\frac{\beta^2}{\alpha^2}\right)}+
+\gamma\sqrt{\left(\frac{\beta^2}{\gamma^2}-1\right)}
+\right\}
+\rho S\left\{
+\alpha\sqrt{\left(1-\frac{\beta^2}{\alpha^2}\right)}-
+\gamma\sqrt{\left(\frac{\beta^2}{\gamma^2}-1\right)}
+\right\}\rho=
+4\frac{S\iota\rho S\kappa\rho}{(\kappa^2-\iota^2)^2}
+$$
+Hence we must have 
+$$
+\frac{2\iota}{\kappa^2-\iota^2}=
+p\left\{
+\alpha\sqrt{\left(1-\frac{\beta^2}{\alpha^2}\right)}+
+\gamma\sqrt{\left(\frac{\beta^2}{\gamma^2}-1\right)}
+\right\}
+$$
+$$
+\frac{2\kappa}{\kappa^2-\iota^2}=
+\frac{1}{p}\left\{
+\alpha\sqrt{\left(1-\frac{\beta^2}{\alpha^2}\right)}-
+\gamma\sqrt{\left(\frac{\beta^2}{\gamma^2}-1\right)}
+\right\}
+$$
+where $\rho$ is an undetermined scalar. 
+
+To determine $\rho$, substitute in the expression for $\beta^2$, and we find 
+$$
+\begin{array}{rcl}
+4\beta^2=\frac{4(\iota-\kappa)^2}{(\kappa^2-\iota^2)^2}
+&amp;=&amp;\left(p-\frac{1}{p}\right)^2(\alpha^2-\beta^2)+
+\left(p+\frac{1}{p}\right)^2(\beta^2-\gamma^2)\\
+&amp;=&amp;\left(p^2+\frac{1}{p^2}\right)(\alpha^2-\gamma^2)-
+2(\alpha^2+\gamma^2)+4\beta^2
+\end{array}
+$$
+
+Thus the transformation succeeds if 
+$$p^2+\frac{1}{p^2}=\frac{2(\alpha^2+\gamma^2)}{\alpha^2-\gamma^2}$$
+which gives
+$$p+\frac{1}{p}=\pm 2\sqrt{\frac{\alpha^2}{\alpha^2-\gamma^2}}$$
+$$p-\frac{1}{p}=\pm 2\sqrt{\frac{\gamma^2}{\alpha^2-\gamma^2}}$$
+Hence 
+$$
+\frac{4(\kappa^2-\iota^2)}{(\kappa^2-\iota^2)^2}=
+\left(\frac{1}{p^2}-p^2\right)(\alpha^2-\gamma^2)=
+\pm 4\sqrt{\alpha^2\gamma^2}
+$$
+$$
+(\kappa^2-\iota^2)^{-1}=\pm T\alpha T\gamma$$
+
+Again
+$$
+p=\frac{T\alpha +T\gamma}{\sqrt{\gamma^2-\alpha^2}},\;\;\;\;
+\frac{1}{p}=\frac{T\alpha -T\gamma}{\sqrt{\gamma^2-\alpha^2}}
+$$
+and therefore 
+$$
+2\iota=\frac{T\alpha +T\gamma}{T\alpha T\gamma}
+\left(
+\sqrt{\frac{\beta^2-\alpha^2}{\gamma^2-\alpha^2}}U\alpha+
+\sqrt{\frac{\gamma^2-\beta^2}{\gamma^2-\alpha^2}}U\gamma
+\right)
+$$
+$$
+2\kappa=\frac{T\alpha -T\gamma}{T\alpha T\gamma}
+\left(
+\sqrt{\frac{\beta^2-\alpha^2}{\gamma^2-\alpha^2}}U\alpha-
+\sqrt{\frac{\gamma^2-\beta^2}{\gamma^2-\alpha^2}}U\gamma
+\right)
+$$
+Thus we have proved the possibility of the transformation, and 
+determined the transforming vectors $\iota$, $\kappa$.
+
+{\bf 129}. By differentiating the equation 
+$$
+(S\alpha\rho)^2+(S\beta\rho)^2+(S\gamma\rho)^2=
+\left(\frac{T(\iota\rho+\rho\kappa)}{(\kappa^2-\iota^2)}\right)^2
+$$
+we obtain, as will be seen in Chapter IV, the following, 
+$$
+S\alpha\rho S\alpha\rho^{'}+
+S\beta\rho S\beta\rho^{'}+
+S\gamma\rho S\gamma\rho^{'}=
+\frac{S.(\iota\rho+\rho\kappa)(\kappa\rho^{'}+\rho^{'}\iota)}
+{(\kappa^2-\iota^2)^2}
+$$
+where $\rho$ also may be any vector whatever. 
+
+This is another very important formula of transformation ; and 
+it will be a good exercise for the student to prove its truth by 
+processes analogous to those in last section. We may merely 
+observe, what indeed is obvious, that by putting $\rho^{'}=\rho$ it becomes 
+the formula of last section. And we see that we may write, with 
+the recent values of $\iota$ and $\kappa$ in terms of 
+$\alpha$, $\beta$, $\gamma$, the identity 
+$$
+\begin{array}{rcl}
+\alpha S\alpha\rho+\beta S\beta\rho+\gamma S\gamma\rho
+&amp;=&amp;\displaystyle 
+\frac{(\iota^2+\kappa^2)\rho+2V.\iota\rho\kappa}{(\kappa^2-\iota^2)^2}\\
+&amp;&amp;\\
+&amp;=&amp;\displaystyle 
+\frac{(\iota-\kappa)^2\rho+2(\iota S\kappa\rho+\kappa S\iota\rho)}
+{(\kappa^2-\iota^2)^2}
+\end{array}
+$$
+
+{\bf 130}. In various quaternion investigations, especially in such 
+as involve {\sl imaginary} intersections of curves and surfaces, the old 
+imaginary of algebra of course appears. But it is to be particularly 
+noticed that this expression is analogous to a scalar and not to a 
+vector, and that like real scalars it is commutative in 
+multiplication with all other factors. Thus it appears, by the same proof 
+as in algebra, that any quaternion expression which contains this 
+imaginary can always be broken up into the sum of two parts, one 
+real, the other multiplied by the first power of $\sqrt{-1}$. Such an 
+expression, viz. 
+$$q=q^{'}+\sqrt{-1}q^{''}$$
+where $q^{'}$ and $q^{''}$ are real quaternions, is called by Hamilton a 
+BIQUATERNION. [The student should be warned that the term 
+Biquaternion has since been employed by other writers in the 
+sense sometimes of a ``set'' of 8 elements, analogous to the 
+Quaternion 4 ; sometimes for an expression $q^{'} + \theta q^{''}$ 
+where $\theta$ is not 
+the algebraic imaginary. By them Hamilton s Biquaternion is 
+called simply a quaternion with non-real constituents.] Some 
+little care is requisite in the management of these expressions, but 
+there is no new difficulty. The points to be observed are: first, 
+that any biquaternion can be divided into a real and an imaginary 
+part, the latter being the product of $\sqrt{-1}$ by a real quaternion; 
+second, that this $\sqrt{-1}$ is commutative with all other quantities in 
+multiplication; third, that if two biquaternions be equal, as 
+$$q^{'}+\sqrt{-1}\;q^{''}=r^{'}+\sqrt{-1}\;r^{''}$$
+we have, as in algebra, 
+$$q^{'}=r^{'},\;\;\;\;q^{''}=r^{''}$$
+so that an equation between biquaternions involves in general 
+{\sl eight} equations between scalars. Compare \S 80. 
+
+{\bf 131}. We have obviously, since $\sqrt{-1}$ is a scalar, 
+$$S(q^{'}+\sqrt{-1}\;q^{''})=Sq^{'}+\sqrt{-1}\;Sq^{''}$$
+$$V(q^{'}+\sqrt{-1}\;q^{''})=Vq^{'}+\sqrt{-1}\;Vq^{''}$$
+Hence (\S 103) 
+$$\{T(q^{'}+\sqrt{-1}\;q^{''})\}^2$$
+$$
+=(Sq^{'}+\sqrt{-1}\;Sq^{''}+Vq^{'}+\sqrt{-1}\;Vq^{''})
+(Sq^{'}+\sqrt{-1}\;Sq^{''}-Vq^{'}-\sqrt{-1}\;Vq^{''})
+$$
+$$=(Sq^{'}+\sqrt{-1}\;Sq^{''})^2-(Vq^{'}+\sqrt{-1}\;Vq^{''})^2$$
+$$=(Tq^{'})^2-(Tq^{''})^2+2\sqrt{-1}\;S.q^{'}Kq^{''}$$
+
+The only remark which need be made on such formulae is this, that 
+{\sl the tensor of a biquaternion may vanish while both of the component 
+quaternions are finite}. 
+
+Thus, if 
+$$Tq^{'}=Tq^{''}$$
+and
+$$S.q^{'}Kq^{''}=0$$
+the above formula gives 
+$$T(q^{'}+\sqrt{-1}\;q^{''})=0$$
+The condition 
+$$S.q^{'}Kq^{''}=0$$
+may be written 
+$$
+Kq^{''}=q^{'-1}\alpha,\;\;\;\textrm{ or }\;\;\;
+q^{''}=-\alpha Kq^{'-1}=-\frac{\alpha q^{'}}{(Tq^{'})^2}
+$$
+where $\alpha$ is any vector whatever. 
+
+Hence 
+$$Tq^{'}=Tq^{''}=TKq^{''}=\frac{T\alpha}{Tq^{''}}$$
+and therefore 
+$$
+Tq^{'}(Uq^{'}-\sqrt{-1}\;U\alpha . Uq^{'})=
+(1-\sqrt{-1}\;U\alpha)q^{'}
+$$
+is the general form of a biquaternion whose tensor is zero. 
+
+{\bf 132}. More generally we have, $q$, $r$, $q^{'}$, $r^{'}$ 
+being any four real and non-evanescent quaternions, 
+$$
+(q+\sqrt{-1}\;q^{'})(r+\sqrt{-1}\;r^{'})=
+qr-q^{'}r^{'}+\sqrt{-1}\;(qr^{'}+q^{'}r)
+$$
+That this product may vanish we must have 
+$$qr=q^{'}r^{'}$$
+and
+$$qr^{'}=-q^{'}r$$
+Eliminating $r^{'}$ we have
+$$qq^{'-1}qr=-q^{'}r$$
+which gives 
+$$(q^{'-1}q)^2=-1$$
+i.e.
+$$q=q^{'}\alpha$$
+where $\alpha$ is some unit-vector. 
+
+And the two equations now agree in giving 
+$$-r=\alpha r^{'}$$
+so that we have the biquaternion factors in the form 
+$$q^{'}(\alpha +\sqrt{-1})\;\;\;\textrm{ and }\;\;\;-(\alpha-\sqrt{-1})r^{'}$$
+and their product is 
+$$-q^{'}(\alpha +\sqrt{-1})(\alpha -\sqrt{-1})r^{'}$$
+which, of course, vanishes. 
+
+[A somewhat simpler investigation of the same proposition 
+may be obtained by writing the biquaternions as 
+$$
+q^{'}(q^{'-1}q+\sqrt{-1})\;\;\;\textrm{ and }\;\;\;
+(rr^{'-1}+\sqrt{-1})r^{'}
+$$
+or
+$$ 
+q^{'}(q^{''}+\sqrt{-1})\;\;\;\textrm{ and }\;\;\;
+(r^{''}+\sqrt{-1})r^{'}
+$$
+and showing that 
+$$q^{''}=-r^{''}=\alpha \;\;\;\textrm{ where }\;T\alpha=1]$$
+
+From this it appears that if the product of two {\sl bivectors}
+$$
+\rho+\sigma\sqrt{-1}\;\;\;\textrm{ and }\;\;\;
+\rho^{'}+\sigma^{'}\sqrt{-1}
+$$
+is zero, we must have 
+$$\sigma^{-1}\rho=-\rho^{'}\sigma^{'-1}=U\alpha$$
+where $\alpha$ may be any vector whatever. But this result is still more 
+easily obtained by means of a direct process. 
+
+{\bf 133}. It may be well to observe here (as we intend to avail our 
+selves of them in the succeeding Chapters) that certain abbreviated 
+forms of expression may be used when they are not liable to confuse, 
+or lead to error. Thus we may write 
+$$T^2q\;\;\;\textrm{for}\;\;\;(Tq)^2$$
+just as we write
+$$\cos^2\theta\;\;\;\textrm{for}\;\;\;(\cos\theta)^2$$
+although the true meanings of these expressions are 
+$$T(Tq)\;\;\;\textrm{and}\;\;\;\cos(\cos\theta)$$
+
+The former is justifiable, as $T(Tq) = Tq$, and therefore $T^2q$ is not 
+required to signify the second tensor (or tensor of the tensor) of $q$. 
+But the trigonometrical usage is defensible only on the score of 
+convenience, and is habitually violated by the employment of 
+$cos^{-1}x$ in its natural and proper sense. 
+Similarly we may write 
+$$S^2q\;\;\;\textrm{for}\;\;\;(Sq)^2,\;\;\;\textrm{\&amp;c.}$$
+but it may be advisable not to use 
+$$Sq^2$$
+as the equivalent of either of those just written; inasmuch as it 
+might be confounded with the (generally) different quantity 
+$$S.q^2\;\;\;\textrm{or}\;\;\;S(q^2)$$
+although this is rarely written without the point or the brackets. 
+
+The question of the use of points or brackets is one on which 
+no very definite rules can be laid down. A beginner ought to use 
+them freely, and he will soon learn by trial which of them are 
+absolutely necessary to prevent ambiguity. 
+
+In the present work this course has been adopted:-- the 
+earlier examples in each part of the subject being treated with 
+a free use of points and brackets, while in the later examples 
+superfluous marks of the kind are gradually got rid of. 
+
+It may be well to indicate some general principles which 
+regulate the omission of these marks. Thus in $S.\alpha\beta$ or
+$V.\alpha\beta$
+the point is obviously unnecessary:-- because $S\alpha=0$, and 
+$V\alpha=\alpha$
+so that the $S$ would annihilate the term if it applied to $\alpha$ alone, 
+while in the same case the $V$ would be superfluous. But in $S.qr$
+and $V.qr$, the point (or an equivalent) is indispensable, for $Sq.r$, 
+and $Vq.r$ are usually quite different from the first written 
+quantities. In the case of $K$, and of $d$ (used for scalar differentiation),
+the {\sl omission} of the point indicates that the operator acts 
+{\sl only} on the nearest factor:-- thus 
+$$Kqr=(Kq)r=Kq.r,\;\;\;dqr=(dq)r=dq.r$$
+Kqr = (Kq) r = Kq . r, dqr = (dq) r=dq.r; 
+while, if its action extend farther, we write 
+$$K.qr=K(qr),\;\;\;d.qr=d(qr)\;\;\;\textrm{\&amp;c.}$$
+
+In more complex cases we must be ruled by the general 
+principle of dropping nothing which is essential. Thus, for 
+instance 
+$$V(pK(dq)V(Vq.r))$$
+may be written without ambiguity as 
+$$V(pK(dq)V(Vq.r))$$
+but nothing more can be dropped without altering its value. 
+
+Another peculiarity of notation, which will occasionally be 
+required, shows {\sl which portions} of a complex product are affected 
+by an operator. Thus we write 
+$$\nabla S\sigma\tau$$
+if $\nabla$ operates on $\sigma$ and also on $\tau$, but 
+$$\nabla_1S\sigma\tau_1$$
+if it operates on $\tau$ alone. See, in this connection, the last Example 
+at the end of Chap. IV. below. 
+
+{\bf 134}. The beginner may expect to be at first a little puzzled 
+with this aspect of the notation; but, as he learns more of the 
+subject, he will soon see clearly the distinction between such an 
+expression as 
+$$S.V\alpha\beta V\beta\gamma$$
+where we may omit at pleasure either the point or the first V 
+without altering the value, and the very different one 
+$$S\alpha\beta .V\beta\gamma$$
+which admits of no such changes, without alteration of its value. 
+
+All these simplifications of notation are, in fact, merely examples 
+of the transformations of quaternion expressions to which part of 
+this Chapter has been devoted. Thus, to take a very simple ex 
+ample, we easily see that 
+$$
+\begin{array}{rcl}
+S.V\alpha\beta V\beta\gamma
+&amp;=&amp;SV\alpha\beta V\beta\gamma
+=S.\alpha\beta V\beta\gamma
+=S\alpha V.\beta V\beta\gamma
+=-S\alpha V.(V\beta\gamma)\beta\\
+&amp;=&amp;S\alpha V.(V\gamma\beta)\beta
+=S.\alpha V(\gamma\beta)\beta
+=S.V(\gamma\beta)\beta\alpha
+=SV\gamma\beta V\beta\alpha\\
+&amp;=&amp;S.\gamma\beta V\beta\alpha
+=S.K(\beta\gamma)V\beta\alpha
+=S.\beta\gamma KV\beta\alpha
+=-S.\beta\gamma V\beta\alpha\\
+&amp;=&amp;S.V\gamma\beta V\beta\alpha,\textrm{\&amp;c., \&amp;c.}
+\end{array}
+$$
+
+The above group does not nearly exhaust the list of even the simpler 
+ways of expressing the given quantity. We recommend it to the 
+careful study of the reader. He will find it advisable, at first, to 
+use stops and brackets pretty freely; but will gradually learn to 
+dispense with those which are not absolutely necessary to prevent 
+ambiguity. 
+
+There is, however, one additional point of notation to which 
+the reader s attention should be most carefully directed. A very 
+simple instance will suffice. Take the expressions 
+$$
+\frac{\beta}{\gamma}.\frac{\gamma}{\alpha}\;\;\;\;\textrm{and}\;\;\;\;
+\frac{\beta\gamma}{\gamma\alpha}
+$$
+
+The first of these is 
+$$\beta\gamma^{-1}.\gamma\alpha^{-1}=\beta\alpha^{-1}$$
+and presents no difficulty. But the second, though at first sight 
+it closely resembles the first, is in general totally different in 
+value, being in fact equal to 
+$$\beta\gamma\alpha^{-1}\gamma^{-1}$$
+
+For the denominator must be treated as {\sl one quaternion}. If, 
+then, we write 
+$$\frac{\beta\gamma}{\gamma\alpha}=q$$
+we have 
+$$\beta\gamma=q\gamma\alpha$$
+so that, as stated above, 
+$$q=\beta\gamma\alpha^{-1}\gamma^{-1}$$
+We see therefore that 
+$$
+\frac{\beta}{\gamma}.\frac{\gamma}{\alpha}=
+\frac{\beta}{\alpha}=
+\frac{\beta\gamma}{\alpha\gamma};\;\;\;\textrm{but {\sl not}}\;\;=
+\frac{\beta\gamma}{\gamma\alpha}
+$$
+
+\section{Examples to Chapter 3}
+
+{\bf 1}. Investigate, by quaternions, the requisite formulae for 
+changing from any one set of coordinate axes to another ; and 
+derive from your general result, and also from special investiga 
+tions, the usual expressions for the following cases: 
+
+\begin{itemize}
+\item[(a)] Rectangular axes turned about z through any angle. 
+
+\item[(b)] Rectangular axes turned into any new position by rota 
+tion about a line equally inclined to the three. 
+
+\item[(c)] Rectangular turned to oblique, one of the new axes 
+lying in each of the former coordinate planes. 
+\end{itemize}
+
+{\bf 2}. Point out the distinction between 
+$$
+\left(\frac{\alpha+\beta}{\alpha}\right)^2\;\;\;\textrm{and}\;\;\;
+\frac{(\alpha+\beta)^2}{\alpha^2}
+$$
+and find the value of their difference. 
+
+If
+$$
+T\beta/\alpha=1\;\;\;\textrm{and}\;\;\;
+U\frac{\alpha+\beta}{\alpha}=\left(\frac{\beta}{\alpha}\right)^{\frac{1}{2}}
+$$
+
+Show also that 
+$$
+\frac{\alpha+\beta}{\alpha-\beta}=
+\frac{V\alpha\beta}{1+S\alpha\beta^{'}}
+$$
+and 
+$$
+\frac{\alpha-\beta}{\alpha+\beta}=
+-\frac{V\alpha\beta}{1-S\alpha\beta^{'}}
+$$
+provided $\alpha$ and $\beta$ be unit-vectors. If these conditions are not 
+fulfilled, what are the true values ? 
+
+{\bf 3}. Show that, whatever quaternion $r$ may be, the expression 
+$$\alpha r+r\beta$$
+in which $\alpha$ and $\beta$ are any two unit- vectors, is reducible to the 
+form 
+$$l(\alpha+\beta)+m(\alpha\beta-1)$$
+where $l$ and $m$ are scalars. 
+
+{\bf 4}. If $Tp=T\alpha=T\beta=1$, and $S.\alpha\beta\rho=0$
+show by direct transformations that 
+$$S.U(\rho-\alpha)U(\rho-\beta)=\pm\sqrt{\frac{1}{2}(1-S\alpha\beta)}$$
+Interpret this theorem geometrically. 
+
+{\bf 5}. If $S\alpha\beta=0$, $T\alpha=T\beta=1$, show that
+$$
+(1+\alpha^{m})\beta=
+2\cos\frac{m\pi}{4}\alpha^{\frac{m}{2}}\beta=
+2S\alpha^{\frac{m}{2}}.\alpha^{\frac{m}{2}}\beta
+$$
+
+{\bf 6}. Put in its simplest form the equation 
+$$
+\rho S.V\alpha\beta V\beta\gamma V\gamma\alpha=
+aV.V\gamma\alpha V\alpha\beta+
+bV.V\alpha\beta V\beta\gamma+
+cV.V\beta\gamma V\gamma\alpha
+$$
+and show that 
+$$a=S.\beta\gamma\rho,\;\;\;\textrm{\&amp;c.}$$
+
+{\bf 7}. Show that any quaternion may in general, in one way only, 
+be expressed as a homogeneous linear function of four given 
+quaternions. Point out the nature of the exceptional cases. Also 
+find the simplest form in which any quaternion may generally be 
+expressed in terms of two given quaternions. 
+
+{\bf 8}. Prove the following theorems, and exhibit them as properties 
+of determinants : 
+
+\begin{itemize}
+\item[(a)] $S.(\alpha+\beta)(\beta+\gamma)(\gamma+\alpha)=
+2S.\alpha\beta\gamma$
+\item[(b)]$S.V\alpha\beta V\beta\gamma V\gamma\alpha=
+-(S.\alpha\beta\gamma)^2$
+\item[(c)]$S.V(\alpha+\beta)(\beta+\gamma)V(\beta+\gamma)(\gamma+\alpha)
+V(\gamma+\alpha)(\alpha+\beta)=-4(S.\alpha\beta\gamma)^2$
+\item[(d)]$S.V(V\alpha\beta V\beta\gamma)V(V\beta\gamma V\gamma\alpha)
+V(V\gamma\alpha V\alpha\beta)=-(S.\alpha\beta\gamma)^4$
+\item[(e)]$S.\delta\epsilon\zeta=-16(S.\alpha\beta\gamma)^4$\\
+where 
+$$\delta=V(V(\alpha+\beta)(\beta+\gamma)V(\beta+\gamma)(\gamma+\alpha))$$
+$$\epsilon=V(V(\beta+\gamma)(\gamma+\alpha)V(\gamma+\alpha)(\alpha+\beta))$$
+$$\zeta=V(V(\gamma+\alpha)(\alpha+\beta)V(\alpha+\beta)(\beta+\gamma))$$
+\end{itemize}
+
+{\bf 9}. Prove the common formula for the product of two determinants 
+of the third order in the form 
+$$
+S.\alpha\beta\gamma S.\alpha_1\beta_1\gamma_1=
+\left|
+\begin{array}{ccc}
+S\alpha\alpha_1 &amp; S\beta\alpha_1 &amp; S\gamma\alpha_1\\
+S\alpha\beta_1  &amp; S\beta\beta_1  &amp; S\gamma\beta_1\\
+S\alpha\gamma_1 &amp; S\beta\gamma_1 &amp; S\gamma\gamma_1
+\end{array}
+\right|
+$$
+
+{\bf 10}. Show that, whatever be the eight vectors involved, 
+$$
+\left|
+\begin{array}{cccc}
+S\alpha\alpha_1 &amp; S\alpha\beta_1 &amp; S\alpha\gamma_1 &amp; S\alpha\delta_1\\
+S\beta\alpha_1  &amp; S\beta\beta_1  &amp; S\beta\gamma_1  &amp; S\beta\delta_1\\
+S\gamma\alpha_1 &amp; S\gamma\beta_1 &amp; S\gamma\gamma_1 &amp; S\gamma\delta_1\\
+S\delta\alpha_1 &amp; S\delta\beta_1 &amp; S\delta\gamma_1 &amp; S\delta\delta_1
+\end{array}
+\right|
+=S.\alpha\beta\gamma S. \beta_1\gamma_1\delta_1S\alpha_1(\delta-\delta)=0
+$$
+
+If the single term $S\alpha\alpha_1$, be changed to $S\alpha_0\alpha_1$,
+the value of the determinant is 
+$$S.\beta\gamma\delta S.\beta_1\gamma_1\delta_1 S\alpha_1(\alpha_0-\alpha)$$
+
+State these as propositions in spherical trigonometry. 
+
+Form the corresponding null determinant for any two groups 
+of five quaternions : and give its geometrical interpretation. 
+
+{\bf 11}. If, in \S 102, $\alpha$, $\beta$, $\gamma$ be three mutually
+perpendicular vectors, can anything be predicated as to $\alpha_1$,
+$\beta_1$, $\gamma_1$?  If $\alpha$, $\beta$, $\gamma$ be rectangular
+unit-vectors, what of $\alpha_1$, $\beta_1$, $\gamma_1$?
+
+{\bf 12}. If $\alpha$, $\beta$, $\gamma$, $\alpha^{'}$, $\beta^{'}$,
+$\gamma^{'}$ be two sets of rectangular unit-vectors, show that 
+$$
+S\alpha\alpha^{'}=
+S\gamma\beta^{'}S\beta\gamma^{'}=
+S\beta\beta^{'}S\gamma\gamma^{'}\;\;\;\textrm{\&amp;c. \&amp;c.}
+$$
+
+{\bf 13}. The lines bisecting pairs of opposite sides of a quadrilateral 
+(plane or gauche) are perpendicular to each other when the 
+diagonals of the quadrilateral are equal. 
+
+{\bf 14}. Show that 
+\begin{itemize}
+\item [(a)]$S.q^2=2S^2q-T^2q$
+\item [(b)]$S.q^3=S^3q-3SqT^2Vq$
+\item [(c)]$\alpha^2\beta^2\gamma^2+S^2.\alpha\beta\gamma=
+V^2.\alpha\beta\gamma$
+\item [(d)]$S(V.\alpha\beta\gamma V.\beta\gamma\alpha V.\gamma\alpha\beta)=
+4S\alpha\beta S\beta\gamma S\gamma\alpha S.\alpha\beta\gamma$
+\item [(e)]$V.q^3=(2S^2q-T^2Vq)Vq$
+\item [(f)]$qUVq^{-1}=-Sq.UVq+TVq$
+\end{itemize}
+
+and interpret each as a formula in plane or spherical trigonometry. 
+
+{\bf 15}. If $q$ be an undetermined quaternion, what loci are represented by 
+\begin{itemize}
+\item[(a)]$(q\alpha^{-1})^2=-a^2$
+\item[(b)]$(q\alpha^{-1})^4=a^4$
+\item[(c)]$S.(q-\alpha)^2=a^2$
+\end{itemize}
+where $a$ is any given scalar and $\alpha$ any given vector ? 
+
+{\bf 16}. If $q$ be any quaternion, show that the equation 
+$$Q^2=q^2$$
+is satisfied, not alone by $Q = \pm q$, but also by 
+$$Q=\pm \sqrt{-1}(Sq.UVq-TVq)$$
+
+\begin{flushright}
+(Hamilton, {\sl Lectures}, p. 673.)
+\end{flushright}
+
+{\bf 17}. Wherein consists the difference between the two equations 
+$$
+T^2\frac{\rho}{\alpha}=1\;\;\;\textrm{and}\;\;\;
+\left(\frac{\rho}{\alpha}\right)^2=-1
+$$
+
+What is the full interpretation of each, $\alpha$ being a given, and p an 
+undetermined, vector? 
+
+{\bf 18}. Find the {\sl full} consequences of each of the following 
+groups of equations, as regards both the unknown vector $\rho$ and 
+the given vectors $\alpha$, $\beta$, $\gamma$:
+$$
+\begin{array}{crcrcr}
+ &amp; S.\alpha\beta\rho=0 &amp; &amp; S\alpha\rho=0 &amp; &amp; S\alpha\rho=0\\
+(a) &amp;  &amp; (b) &amp; S.\alpha\beta\rho=0 &amp; (c) &amp; S.\alpha\beta\rho=0\\
+  &amp; S.\beta\gamma\rho=0 &amp; &amp; S\beta\rho=0 &amp; &amp; S.\alpha\beta\gamma\rho=0
+\end{array}
+$$
+
+{\bf 19}. From \S\S 74, 110, show that, if $\epsilon$ 
+be any unit-vector, and $m$ any scalar, 
+$$\epsilon^{m}=\cos\frac{m\pi}{2}+\epsilon\sin\frac{m\pi}{2}$$
+Hence show that if $\alpha$, $\beta$, $\gamma$ 
+be radii drawn to the corners of a triangle on the unit-sphere, 
+whose spherical excess is $m$ right angles, 
+$$
+\frac{\alpha+\beta}{\beta+\gamma}.
+\frac{\gamma+\alpha}{\alpha+\beta}.
+\frac{\beta+\gamma}{\gamma+\alpha}=
+\alpha^m
+$$
+Also that, if $A$, $B$, $C$ be the angles of the triangle, we have 
+$$
+\gamma^{\frac{2C}{\pi}}
+\beta^{\frac{2B}{\pi}}
+\alpha^{\frac{2A}{\pi}}
+=-1
+$$
+
+{\bf 20}. Show that for any three vectors $\alpha$, $\beta$, $\gamma$ we have
+$$
+(U\alpha\beta)^2+(U\beta\gamma)^2+(U\alpha\gamma)^2+(U.\alpha\beta\gamma)^2+
+4U\alpha\gamma .SU\alpha\beta SU\beta\gamma=-2
+$$
+
+\begin{flushright}
+(Hamilton, {\sl Elements}, p. 388.)
+\end{flushright}
+
+{\bf 21}. If $a_1$, $a_2$, $a_3$, $x$ be any four scalars, 
+and $\rho_1$, $\rho_2$, $\rho_3$ any three vectors, show that 
+$$
+(S.\rho_1\rho_2\rho_3)^2+
+(\sum.a_1V\rho_2\rho_3)^2+
+x^2(\sum V\rho_1\rho_2)^2-
+$$
+$$
+x^2(\sum.a_1(\rho_2-\rho_3))^2
++2\prod(x^2+S\rho_1\rho_2+a_1a_2)
+$$
+$$
+=2\prod(x^2+\rho^2)+
+2\prod a^2+
+$$
+$$
+\sum\{(x^2+a_1^2+\rho_1^2)((V\rho_2\rho_3)^2+
+2a_2a_3(x^2+S\rho_2\rho_3)-x^2(\rho_2-\rho_3)^2)\}
+$$
+where $\displaystyle \prod a^2=a_1^2a_2^2a_3^2$
+
+Verify this formula by a simple process in the particular case 
+$$a_1=a_2=a_3=x=0$$
+
+\begin{flushright}
+({\sl Ibid})
+\end{flushright}
+
+{\bf 22}. Eliminate $p$ from the equations 
+$$V.\beta\rho\alpha\rho=0,\;\;\;S\gamma\rho=0$$
+and state the problem and its solution in a geometrical form. 
+
+{\bf 23}. If $p$, $q$, $r$, $s$ be four versors, such that 
+$$qp=-sr=\alpha$$
+$$rq=-ps=\beta$$
+where $\alpha$ and $\beta$ are unit-vectors; show that 
+$$S(V.VsVqV.VrVp)=0$$
+Interpret this as a property of a spherical quadrilateral. 
+
+{\bf 24}. Show that, if $pq$, $rs$, $pr$, and $qs$ be vectors, we have 
+$$S(V.VpVsV.VqVr)=0$$
+
+{\bf 25}. If $\alpha$, $\beta$, $\gamma$ be unit-vectors, 
+$$
+V\beta\gamma S.\alpha\beta\gamma=
+-\alpha(1-S^2\beta\gamma)-
+\beta(S\alpha\gamma S\beta r + S\alpha\beta)-
+\gamma(S\alpha\beta S\beta\gamma+S\alpha\gamma)
+$$
+
+{\bf 26}. If $i$, $j$, $k$, $i^{'}$, $j^{'}$, $k^{'}$,
+be two sets of rectangular unit-vectors, show that 
+$$
+\begin{array}{rcl}
+S.Vii^{'}Vjj^{'}Vkk^{'}&amp;=&amp;(Sij^{'})^2-(Sji^{'})^2\\
+                       &amp;=&amp;(Sjk^{'})^2-(Skj^{'})^2=\textrm{\&amp;c.}
+\end{array}
+$$
+and find the values of the vector of the same product. 
+
+{\bf 27}. If $\alpha$, $\beta$, $\gamma$
+be a rectangular unit-vector system, show that, 
+whatever be $\lambda$, $\mu$, $\nu$
+$$\lambda S^2i\alpha +\mu S^2j\gamma +\nu S^2k\beta$$
+$$\lambda S^2k\gamma +\mu S^2i\beta  +\nu S^2j\alpha$$
+and
+$$\lambda S^2j\beta  +\mu S^2k\alpha +\nu S^2i\gamma$$
+are coplanar vectors. What is the connection between this and 
+the result of the preceding example ? 
+
+\vfill
+\newpage
+\section{Axiom Examples}
+The basic operation for creating quaternions is {\bf quatern}.
+This is a quaternion over the rational numbers.
+\spadcommand{q:=quatern(2/11,-8,3/4,1)}
+$$
+{2 \over {11}} -{8 \  i}+{{3 \over 4} \  j}+k 
+$$
+\returnType{Type: Quaternion Fraction Integer}
+
+This is a quaternion over the integers.
+\spadcommand{r:=quatern(1,2,3,4)}
+$$
+1+{2 \  i}+{3 \  j}+{4 \  k} 
+$$
+\returnType{Type: Quaternion Integer}
+
+We can also construct quaternions with complex components.
+First we construct a complex number.
+\spadcommand{b:=complex(3,4)}
+$$
+3+{4 \  i} 
+$$
+\returnType{Type: Complex Integer}
+and then we use it as a component in a quaternion.
+\spadcommand{s:=quatern(3,1/7,b,2)}
+$$
+3+{{1 \over 7} \  i}+{{\left( 3+{4 \  i} \right)}\  j}+{2 \  k} 
+$$
+\returnType{Type: Quaternion Complex Fraction Integer}
+Notice that the $i$ component of the complex number has no
+relation to the $i$ component of the quaternion even though
+they use the same symbol by convention.
+
+The four parts of a quaternion are the real part, the $i$ imaginary 
+part, the $j$ imaginary part, and the $k$ imaginary part. The
+{\bf real} function returns the real part.
+\spadcommand{real q}
+$$
+2 \over {11} 
+$$
+\returnType{Type: Fraction Integer}
+
+The {\bf imagI} function returns the $i$ imaginary part.
+\spadcommand{imagI q}
+$$
+-8 
+$$
+\returnType{Type: Fraction Integer}
+
+The {\bf imagJ} function returns the $j$ imaginary part.
+\spadcommand{imagJ q}
+$$
+3 \over 4 
+$$
+\returnType{Type: Fraction Integer}
+
+The {\bf imagK} function returns the $k$ imaginary part.
+\spadcommand{imagK q}
+$$
+1
+$$
+\returnType{Type: Fraction Integer}
+
+Quaternions satisfy a very fundamental relationship between the parts, 
+namely that
+$$i^2 = j^2 = k^2 = ijk = -1$$. This is similar to the requirement
+in complex numbers of the form $a+bi$ that $i^2 = -1$.
+
+The set of quaternions is denoted by $\mathbb{H}$, whereas the integers
+are denoted by $\mathbb{Z}$ and the complex numbers by $\mathbb{C}$.
+
+Quaternions are not commutative which means that in general
+$$AB \ne BA$$
+for any two quaternions, A and B. So, for instance,
+\spadcommand{q*r}
+$$
+{{437} \over {44}} -{{{84} \over {11}} \  i}+{{{1553} \over {44}} \  j} 
+-{{{523} \over {22}} \  k} 
+$$
+\returnType{Type: Quaternion Fraction Integer}
+\spadcommand{r*q}
+$$
+{{437} \over {44}} -{{{84} \over {11}} \  i} -{{{1439} \over {44}} \  
+j}+{{{599} \over {22}} \  k} 
+$$
+\returnType{Type: Quaternion Fraction Integer}
+and these are clearly not equal.
+
+Complex $2\times2$ matrices form an alternate, equivalent 
+representation of quaternions. These matrices have the form:
+$$
+\left[
+\begin{array}{cc}
+u &amp; v \\ 
+-\overline{v} &amp; \overline{u} 
+\end{array}
+\right]
+$$
+=
+$$
+\left[
+\begin{array}{cc}
+a+bi &amp; c+di \\ 
+-c+di &amp; a-bi
+\end{array}
+\right]
+$$
+where $u$ and $v$ are complex, $\overline{u}$ is complex conjugate
+of $u$, $\overline{z}$ is the complex conjugate of $z$, and a,b,c,
+and d are real.
+
+Within the quaternion each component operator represents a basis
+element in $\mathbb{R}^4$ thus:
+$$
+1 =
+\left[
+\begin{array}{cccc}
+1 &amp; 0 &amp; 0 &amp; 0\\
+0 &amp; 1 &amp; 0 &amp; 1\\
+0 &amp; 0 &amp; 1 &amp; 0\\
+0 &amp; 0 &amp; 0 &amp; 1
+\end{array}
+\right]
+$$
+
+$$
+i =
+\left[
+\begin{array}{cccc}
+0 &amp; 1 &amp; 0 &amp; 0\\
+-1 &amp; 0 &amp; 0 &amp; 1\\
+0 &amp; 0 &amp; 0 &amp; 1\\
+0 &amp; 0 &amp; -1 &amp; 0
+\end{array}
+\right]
+$$
+
+
 \chapter{Groebner Basis}
 Groebner Basis
 \chapter{Greatest Common Divisor}
@@ -2514,6 +7682,21 @@ Literate Programming''\\
 \bibitem{31} Daly, Timothy, &quot;The Axiom Literate Documentation&quot;\\
 {\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \bibitem{32} {\bf http://www.puffinwarellc.com/p3a.htm}
+\bibitem{33} Tait, P.G.,
+{\it An Elementary Treatise on Quaternions} \\
+C.J. Clay and Sons, Cambridge University Press Warehouse,
+Ave Maria Lane 1890
+\bibitem{34} Knuth, Donald, {\it The \TeX{}book} \\
+Reading, Massachusetts, 
+Addison-Wesley Publishing Company, Inc., 
+1984. ISBN 0-201-13448-9
+\bibitem{35} Hathway, Arthur S., &quot;A Primer Of Quaternions&quot;  (1896)
+\bibitem{36} Conway, John H. and Smith, Derek, A., 
+&quot;On Quaternions and Octonions&quot;, A.K Peters, Natick, MA. (2003)
+ISBN 1-56881-134-9
+\bibitem{37} http://mathworld.wolfram.com/Quaternion.html
 \end{thebibliography}
+\end{document}
+
 \printindex
 \end{document}</diff>
      <filename>books/bookvol10.1.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -1487,6 +1487,250 @@ AntiSymm(R:Ring, lVar:List Symbol): Export == Implement where
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain ANY Any}
+&lt;&lt;Any.input&gt;&gt;=
+)set break resume
+)sys rm -f Any.output
+)spool Any.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 18
+a:Any := [1,2]
+--R 
+--R
+--R   (1)  [1,2]
+--R                                                   Type: List PositiveInteger
+--E 1
+
+--S 2 of 18
+b:Any := [1,2]
+--R 
+--R
+--R   (2)  [1,2]
+--R                                                   Type: List PositiveInteger
+--E 2
+
+--S 3 of 18
+(a = b)@Boolean
+--R 
+--R
+--R   (3)  true
+--R                                                                Type: Boolean
+--E 3
+
+--S 4 of 18
+c := [1,2]
+--R 
+--R
+--R   (4)  [1,2]
+--R                                                   Type: List PositiveInteger
+--E 4
+
+--S 5 of 18
+typeOf a
+--R 
+--R
+--R   (5)  Any
+--R                                                                 Type: Domain
+--E 5
+
+--S 6 of 18
+typeOf c
+--R 
+--R
+--R   (6)  List PositiveInteger
+--R                                                                 Type: Domain
+--E 6
+
+--S 7 of 18
+(a = c)@Boolean
+--R 
+--R
+--R   (7)  true
+--R                                                                Type: Boolean
+--E 7
+
+--S 8 of 18
+b := [1,3]
+--R 
+--R
+--R   (8)  [1,3]
+--R                                                   Type: List PositiveInteger
+--E 8
+
+--S 9 of 18
+(a = b)@Boolean
+--R 
+--R
+--R   (9)  false
+--R                                                                Type: Boolean
+--E 9
+
+--S 10 of 18
+a := &quot;A&quot;
+--R 
+--R
+--R   (10)  &quot;A&quot;
+--R                                                                 Type: String
+--E 10
+
+--S 11 of 18
+(a = b)@Boolean
+--R 
+--R
+--R   (11)  false
+--R                                                                Type: Boolean
+--E 11
+
+--S 12 of 18
+b := &quot;A&quot;
+--R 
+--R
+--R   (12)  &quot;A&quot;
+--R                                                                 Type: String
+--E 12
+
+--S 13 of 18
+(a = b)@Boolean
+--R 
+--R
+--R   (13)  true
+--R                                                                Type: Boolean
+--E 13
+
+--S 14 of 18
+Sae := SAE(FRAC INT, UP(x, FRAC INT), x^2-3)
+--R 
+--R
+--R   (14)
+--R  SimpleAlgebraicExtension(Fraction Integer,UnivariatePolynomial(x,Fraction Int
+--R  eger),x*x-3)
+--R                                                                 Type: Domain
+--E 14
+
+--S 15 of 18
+a := generator()$Sae
+--R 
+--R
+--R   (15)  x
+--RType: SimpleAlgebraicExtension(Fraction Integer,UnivariatePolynomial(x,Fraction Integer),x*x-3)
+--E 15
+
+--S 16 of 18
+b := generator()$Sae
+--R 
+--R
+--R   (16)  x
+--RType: SimpleAlgebraicExtension(Fraction Integer,UnivariatePolynomial(x,Fraction Integer),x*x-3)
+--E 16
+
+--S 17 of 18
+(a = b)@Boolean
+--R 
+--R
+--R   (17)  true
+--R                                                                Type: Boolean
+--E 17
+
+--S 18 of 18
+)show Any
+--R 
+--R Any  is a domain constructor
+--R Abbreviation for Any is ANY 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.spad.pamphlet to see algebra source code for ANY 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -&gt; Boolean                any : (SExpression,None) -&gt; %
+--R coerce : % -&gt; OutputForm              dom : % -&gt; SExpression
+--R domainOf : % -&gt; OutputForm            hash : % -&gt; SingleInteger
+--R latex : % -&gt; String                   obj : % -&gt; None
+--R objectOf : % -&gt; OutputForm            ?~=? : (%,%) -&gt; Boolean
+--R showTypeInOutput : Boolean -&gt; String
+--R
+--E 18
+
+)spool
+)lisp (bye)
+@
+&lt;&lt;Any.help&gt;&gt;=
+====================================================================
+Any examples
+====================================================================
+
+Any implements a type that packages up objects and their types in
+objects of Any. Roughly speaking that means that if s : S then when
+converted to Any, the new object will include both the original object
+and its type. This is a way of converting arbitrary objects into a
+single type without losing any of the original information. Any object
+can be converted to one of Any.
+ 
+So we can convert a list to type Any
+
+a:Any := [1,2]
+   [1,2]
+
+and another list to type Any
+
+b:Any := [1,2]
+   [1,2]
+
+Equality works
+
+(a = b)@Boolean
+   true
+
+We can compare the Any type with other types:
+
+c := [1,2]
+
+typeOf a
+
+typeOf c
+
+(a = c)@Boolean
+
+
+If the values are differennt than we see the difference:
+
+b := [1,3]
+   [1,3]
+
+(a = b)@Boolean
+    false
+
+The Any type works with many types:
+
+a := &quot;A&quot;
+    &quot;A&quot;
+
+(a = b)@Boolean
+    false
+
+b := &quot;A&quot;
+    &quot;A&quot;
+
+(a = b)@Boolean
+   true
+
+This is true for more complex types:
+
+Sae := SAE(FRAC INT, UP(x, FRAC INT), x^2-3)
+
+a := generator()$Sae
+   x
+
+b := generator()$Sae
+   x
+
+(a = b)@Boolean
+   true
+
+See Also:
+o )show Any
+
+@
 \pagehead{Any}{ANY}
 \pagepic{ps/v103any.ps}{ANY}{1.00}
 {\bf See}\\
@@ -1560,6 +1804,8 @@ Any(): SetCategory with
      dom x      == x.dm
      domainOf x == x.dm pretend OutputForm
      x = y      == (x.dm = y.dm) and EQ(x.ob, y.ob)$Lisp
+     x = y      == 
+      (x.dm = y.dm) and EQUAL(x.ob, y.ob)$Lisp
 
      objectOf(x : %) : OutputForm ==
        spad2BootCoerce(x.ob, x.dm,
@@ -58281,6 +58527,1600 @@ MakeCachableSet(S:SetCategory): Exports == Implementation where
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{domain MMLFORM MathMLFormat}
+
+Both this code and documentation are still under development and
+I don't pretend they are anywhere close to perfect or even finished.
+However the code does work and I hope it might be useful to somebody
+both for it's ability to output MathML from Axiom and as an example
+of how to write a new output form.
+
+\subsection{Introduction to Mathematical Markup Language}
+
+MathML exists in two forms: presentation and content.
+At this time (2007-02-11) the package only has a presentation
+package.  A content package is in the
+works however it is more difficult.  Unfortunately Axiom does
+not make its semantics easily available.  The \spadtype{OutputForm}
+domain mediates between the individual Axiom domains and the
+user visible output but \spadtype{OutputForm} does not provide full
+semantic information.  From my currently incomplete understanding
+of Axiom it appears that remedying this would entail going back
+to the individual domains and rewriting a lot of code.
+However some semantics are conveyed directly by \spadtype{OutputForm} and other
+things can be deduced from \spadtype{OutputForm} or from the original
+user command.
+
+\subsection{Displaying MathML}
+
+The MathML string produced by &quot;)set output mathml on&quot; can be pasted
+directly into an appropriate xhtml page and then viewed in Firefox
+or some other MathML aware browser. The boiler plate code needed for
+a test page, testmathml.xml, is:
+
+\begin{verbatim}
+&lt;?xml version=&quot;1.0&quot; ?&gt;
+
+&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN&quot;
+                      &quot;http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd&quot; [
+&lt;!ENTITY mathml &quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
+]&gt;
+
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
+      xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; &gt;
+
+
+  &lt;head&gt;
+    &lt;title&gt;MathML Test &lt;/title&gt;
+  &lt;/head&gt;
+
+  &lt;body&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
+\end{verbatim}
+
+
+Paste the MathML string into the body element and it should display
+nicely in Firefox.
+
+\subsection{Test Cases}
+
+Here's a list of test cases that currently format correctly:
+
+1. (x+y)**2
+
+2. integrate(x**x,x)
+
+3. integral(x**x,x)
+
+4. (5 + sqrt 63 + sqrt 847)**(1/3)
+
+5. set $[$1,2,3$]$
+
+6. multiset $[$x rem 5 for x in primes(2,1000)$]$
+
+7. series(sin(a*x),x=0)
+
+8. matrix $[$ $[$x**i + y**j for i in 1..10$]$ for j in 1..10$]$
+
+9. y := operator 'y
+   a. D(y(x,z),$[$x,x,z,x$]$)
+   b. D(y x,x,2)
+
+10. x := series 'x
+    a. sin(1+x)
+
+11. series(1/log(y),y=1)
+
+12. y:UTS(FLOAT,'z,0) := exp(z)
+
+13. a. c := continuedFraction(314159/100000)
+    b. c := continuedFraction(314159/100000)
+
+The \spadtype{TexFormat} domain has the capability to format an object with
+subscripts, superscripts, presubscripts and presuperscripts however
+I don't know of any Axiom command that produces such an object. In
+fact at present I see the case of &quot;SUPERSUB&quot; being used for putting
+primes in the superscript position to denote ordinary differentiation.
+I also only see the &quot;SUB&quot; case being used to denote partial
+derivatives.
+
+\subsection{)set output mathml on}
+
+
+Making mathml appear as output during a normal Axiom session
+by invoking &quot;)set output mathml on&quot; proved to be a bit tedious
+and seems to be undocumented.  I document my experience here
+in case it proves useful to somebody else trying to get a new
+output format from Axiom.
+
+In \spadtype{MathMLFormat} the functions 
+\spadfun{coerce(expr : OutputForm) : String} and
+\spadfun{display(s : String) : Void} provide the desired mathml output.
+Note that this package was constructed by close examination of
+Robert Sutor's \spadtype{TexFormat} domain and much remains from that source.
+To have mathml displayed as output we need to get Axiom to 
+call display(coerce(expr)) at the appropriate place.  Here's what
+I did to get that to happen. Note that my starting point here was
+an attempt by Andrey Grozin to do the same.  To figure things out
+I searched through files for &quot;tex&quot; to see what was done for the
+\spadtype{TexFormat} domain, and used grep to find which files had mention of
+\spadtype{TexFormat}.
+
+\subsection{File src/interp/setvars.boot.pamphlet}
+
+
+  Create an output mathml section by analogy to the tex section.
+Remember to add the code chunk &quot;outputmathmlCode&quot; at the end.
+
+setvars.boot is a bootstrap file which means that it has to be
+precompiled into lisp code and then that code has to be inserted
+back into setvars.boot. To do this extract the boot code by running
+&quot;notangle&quot; on it.  I did this from the &quot;tmp&quot; directory.
+From inside axiom run &quot;)lisp (boottran::boottocl &quot;tmp/setvars.boot&quot;)
+which put &quot;setvars.clisp&quot; into &quot;int/interp/setvars.clisp&quot;.  Then
+replace the lisp in &quot;setvars.boot.pamphlet&quot; with that in the newly
+generated &quot;setvars.clisp&quot;.
+
+The relevant code chunks appearing in &quot;setvars.boot.pamphlet&quot; are:
+\begin{verbatim}
+    outputmathmlCode
+    setOutputMathml
+    describeSetOutputMathml
+\end{verbatim}
+and the relevant variables are:
+\begin{verbatim}
+    setOutputMathml
+    $mathmlOutputStream
+    $mathmlOutputFile
+    $mathmlFormat
+    describeSetOutputMathml
+\end{verbatim}
+
+\subsection{File setvart.boot.pamphlet}
+
+
+Create an output mathml section in &quot;setvart.boot.pamphlet&quot; again
+patterned after the tex section.  I changed the default file 
+extension from &quot;.stex&quot; to &quot;.smml&quot;.
+
+To the &quot;section{output}&quot; table I added the line
+\begin{verbatim}
+   mathml		   created output in MathML style	Off:CONSOLE
+\end{verbatim}
+Added the code chunk &quot;outputmathml&quot; to the code chunk &quot;output&quot;
+in &quot;section{output}&quot;.
+
+Relevant code chunks:
+\begin{verbatim}
+	 outputmathml
+\end{verbatim}
+Relevant variables:
+\begin{verbatim}
+	 setOutputMathml
+	 $mathmlFormat
+	 $mathmlOutputFile
+\end{verbatim}
+
+Note when copying the tex stuff I changed occurrences of &quot;tex&quot;
+to &quot;mathml&quot;, &quot;Tex&quot; to &quot;Mathml&quot; and &quot;TeX&quot; to &quot;MathML&quot;.
+
+\subsection{File src/algebra/Makefile.pamphlet}
+
+
+The file &quot;src/algebra/tex.spad.pamphlet&quot; contains
+the domain \spadtype{TexFormat} (TEX) and the package 
+\spadtype{TexFormat1} (TEX1).
+However the sole function of \spadtype{TexFormat1} is to \spadfun{coerce}
+objects from a domain into \spadtype{OutputForm} and then apply 
+\spadtype{TexFormat}
+to them.  It is to save programmers the trouble of doing
+the coercion themselves from inside spad code.  It does
+not appear to be used for the main purpose of delivering
+Axiom output in TeX format.  In order to keep the mathml
+package as simple as possible, and because I didn't see much
+use for this, I didn't copy the \spadtype{TexFormat1} package.  So
+no analog of the TEX1 entries in &quot;Makefile.pamphlet&quot; were
+needed.  One curiosity I don't understand is why TEX1
+appears in layer 4 when it seems to depend on TEX which
+appears in layer 14.
+
+Initially I added &quot;\${OUT}/MMLFORM.o&quot; to layer 14 and
+&quot;mathml.spad.pamphlet&quot; to completed spad files in layer 14.
+When trying to compile the build failed at MMLFORM.  It left
+&quot;MMLFORM.erlib&quot; in &quot;int/algebra&quot; instead of &quot;MMLFORM.NRLIB&quot;
+which confused me at first because mathml.spad compiled
+under a running axiom.  By examining the file &quot;obj/tmp/trace&quot;
+I saw that a new dependency had been introduced, compared
+to TexFormat, with the function eltName depending on the
+domain FSAGG in layer 16.  So the lines had to be moved 
+from layer 14 to layer 17.
+
+Added appropriate lines to &quot;SPADFILES&quot; and &quot;DOCFILES&quot;.
+
+\subsection{File src/algebra/exposed.lsp.pamphlet}
+
+Add the line &quot;($\vert{}$MathMLFormat$\vert$ . MMLFORM)&quot;
+
+\subsection{File src/algebra/Lattice.pamphlet}
+
+I don't see that this file is used anywhere but I made
+the appropriate changes anyway by searching for &quot;TEX&quot; and
+mimicing everything for MMLFORM.
+
+\subsection{File src/doc/axiom.bib.pamphlet}
+
+Added mathml.spad subsection to &quot;src/doc/axiom.bib.pamphlet&quot;.
+
+\subsection{File interp/i-output.boot.pamphlet}
+
+
+This is where the \spadfun{coerce} and \spadfun{display} functions 
+from MathMLFormat
+actually get called.  The following was added:
+
+\begin{verbatim}
+mathmlFormat expr ==
+  mml := '(MathMLFormat)
+  mmlrep := '(String)
+  formatFn := getFunctionFromDomain(&quot;coerce&quot;,mml,[$OutputForm])
+  displayFn := getFunctionFromDomain(&quot;display&quot;,mml,[mmlrep])
+  SPADCALL(SPADCALL(expr,formatFn),displayFn)
+  TERPRI $mathmlOutputStream
+  FORCE_-OUTPUT $mathmlOutputStream
+  NIL
+\end{verbatim}
+
+Note that compared to the texFormat function there are a couple
+of differences.  Since \spadtype{MathMLFormat} is currently a package rather
+than a domain there is the &quot;mmlrep&quot; variable whereas in texFormat
+the argument of the &quot;display&quot; function is an instance of the 
+domain.  Also the \spadfun{coerce} function here only has one argument,
+namely &quot;\$OutputForm&quot;.
+
+Also for the function &quot;output(expr,domain)&quot; add lines for mathml,
+e.g. &quot;if \$mathmlFormat then mathmlFormat expr&quot;.
+
+After these changes Axiom compiled with mathml enabled under
+)set output.
+
+\subsection{Public Declarations}
+
+The declarations
+\begin{verbatim}
+  E      ==&gt; OutputForm
+  I      ==&gt; Integer
+  L      ==&gt; List
+  S      ==&gt; String
+  US     ==&gt; UniversalSegment(Integer)
+\end{verbatim}
+provide abbreviations for domains used heavily in the code.
+The publicly exposed functions are:
+
+    \spadfun{coerce: E -$&gt;$ S}  This function is the main one for converting
+an expression in domain OutputForm into a MathML string.
+
+    \spadfun{coerceS: E -$&gt;$ S} This function is for use from the command line.
+It converts an OutputForm expression into a MathML string and does
+some formatting so that the output is not one long line.  If you take
+the output from this function, stick it in an emacs buffer in
+nxml-mode and then indent according to mode, you'll get something that's
+nicer to look at than what comes from coerce. Note that coerceS returns
+the same value as coerce but invokes a display function as well so that
+the result will be printed twice in different formats.  The need for this
+is that the output from coerce is automatically formatted with line breaks
+by Axiom's output routine that are not in the right place.
+
+    \spadfun{coerceL: E -$&gt;$ S}  Similar to coerceS except that the displayed result
+is the MathML string in one long line.  These functions can be used,
+for instance, to get the MathML for the previous result by typing
+coerceL(%)\$MMLFORM.
+
+    \spadfun{exprex: E -$&gt;$ S}  Converts \spadtype{OutputForm} to 
+\spadtype{String} with
+the structure preserved with braces.  This is useful in developing this
+package. Actually this is not quite accurate.  The function
+\spadfun{precondition} is first applied to the \spadtype{OutputForm}
+expression before \spadfun{exprex}.   Raw \spadtype{OutputForm} and the nature
+of the \spadfun{precondition} function is still obscure to me at the time of
+this writing (2007-02-14), however I probably need to understand it to make
+sure I'm not missing any semantics.  The spad function \spadfun{precondition}
+is just a wrapper for the lisp function outputTran\$Lisp, which I guess is
+compiled from boot.
+
+    \spadfun{display: S -$&gt;$ Void}  This one prints the string returned by coerce as one
+long line, adding &quot;math&quot; tags: $&lt;$math ...$&gt;$ ... $&lt;$/math$&gt;$.  Thus the output
+from this can be stuck directly into an appropriate html/xhtml page and will
+be displayed nicely by a MathML aware browser.
+
+    \spadfun{displayF: S -$&gt;$ Void}  This function doesn't exist 
+yet but it would be nice
+to have a humanly readable formatted output as well.  The basics do exist in
+the coerceS function however the formatting still needs some work to be 
+really good.
+
+&lt;&lt;public declarations&gt;&gt;=
+)abbrev domain MMLFORM MathMLFormat
+++ Author: Arthur C. Ralfs
+++ Date: January 2007
+++ This package is based on the TeXFormat domain by Robert S. Sutor
+++ without which I wouldn't have known where to start.
+++ Basic Operations: coerce, coerceS, coerceL, exprex, display
+++ Description:
+++    \spadtype{MathMLFormat} provides a coercion from \spadtype{OutputForm}
+++    to MathML format.
+
+MathMLFormat(): public == private where
+  E      ==&gt; OutputForm
+  I      ==&gt; Integer
+  L      ==&gt; List
+  S      ==&gt; String
+  US     ==&gt; UniversalSegment(Integer)
+
+  public == SetCategory with
+    coerce:    E -&gt; S
+      ++ coerceS(o) changes o in the standard output format to MathML
+      ++ format.
+    coerceS:   E -&gt; S
+      ++ coerceS(o) changes o in the standard output format to MathML
+      ++ format and displays formatted result.
+    coerceL:   E -&gt; S
+      ++ coerceS(o) changes o in the standard output format to MathML
+      ++ format and displays result as one long string.
+    exprex:    E -&gt; S
+      ++ coverts \spadtype{OutputForm} to \spadtype{String} with the
+      ++ structure preserved with braces.  Actually this is not quite
+      ++ accurate.  The function \spadfun{precondition} is first 
+      ++ applied to the
+      ++ \spadtype{OutputForm} expression before \spadfun{exprex}.  
+      ++ The raw \spadtype{OutputForm} and
+      ++ the nature of the \spadfun{precondition} function is 
+      ++ still obscure to me
+      ++ at the time of this writing (2007-02-14).
+    display:   S -&gt; Void
+      ++ prints the string returned by coerce, adding &lt;math ...&gt; tags.
+
+@
+\subsection{Private Constant Declarations}
+&lt;&lt;private constant declarations&gt;&gt;=
+  private == add
+    import OutputForm
+    import Character
+    import Integer
+    import List OutputForm
+    import List String
+
+    -- local variable declarations and definitions
+
+    expr: E
+    prec,opPrec: I
+    str:  S
+    blank         : S := &quot; \  &quot;
+
+    maxPrec       : I   := 1000000
+    minPrec       : I   := 0
+
+    unaryOps      : L S := [&quot;-&quot;,&quot;^&quot;]$(L S)
+    unaryPrecs    : L I := [700,260]$(L I)
+
+    -- the precedence of / in the following is relatively low because
+    -- the bar obviates the need for parentheses.
+    binaryOps     : L S := [&quot;+-&gt;&quot;,&quot;|&quot;,&quot;**&quot;,&quot;/&quot;,&quot;&lt;&quot;,&quot;&gt;&quot;,&quot;=&quot;,&quot;OVER&quot;]$(L S)
+    binaryPrecs   : L I := [0,0,900, 700,400,400,400,   700]$(L I)
+
+    naryOps       : L S := [&quot;-&quot;,&quot;+&quot;,&quot;*&quot;,blank,&quot;,&quot;,&quot;;&quot;,&quot; &quot;,&quot;ROW&quot;,&quot;&quot;,
+       &quot; \cr &quot;,&quot;&amp;&quot;,&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;]$(L S)
+    naryPrecs     : L I := [700,700,800,  800,110,110,  0,    0, 0,
+             0,  0,   0]$(L I)
+    naryNGOps     : L S := [&quot;ROW&quot;,&quot;&amp;&quot;]$(L S)
+
+    plexOps       : L S := [&quot;SIGMA&quot;,&quot;SIGMA2&quot;,&quot;PI&quot;,&quot;PI2&quot;,&quot;INTSIGN&quot;,&quot;INDEFINTEGRAL&quot;]$(L S)
+    plexPrecs     : L I := [    700, 800,     700, 800 , 700,      700]$(L I)
+
+    specialOps    : L S := [&quot;MATRIX&quot;,&quot;BRACKET&quot;,&quot;BRACE&quot;,&quot;CONCATB&quot;,&quot;VCONCAT&quot;,  _
+                            &quot;AGGLST&quot;,&quot;CONCAT&quot;,&quot;OVERBAR&quot;,&quot;ROOT&quot;,&quot;SUB&quot;,&quot;TAG&quot;, _
+                            &quot;SUPERSUB&quot;,&quot;ZAG&quot;,&quot;AGGSET&quot;,&quot;SC&quot;,&quot;PAREN&quot;, _
+                            &quot;SEGMENT&quot;,&quot;QUOTE&quot;,&quot;theMap&quot;,&quot;SLASH&quot; ]
+
+    -- the next two lists provide translations for some strings for
+    -- which MML provides special macros.
+
+    specialStrings : L S :=
+      [&quot;cos&quot;, &quot;cot&quot;, &quot;csc&quot;, &quot;log&quot;, &quot;sec&quot;, &quot;sin&quot;, &quot;tan&quot;,
+        &quot;cosh&quot;, &quot;coth&quot;, &quot;csch&quot;, &quot;sech&quot;, &quot;sinh&quot;, &quot;tanh&quot;,
+          &quot;acos&quot;,&quot;asin&quot;,&quot;atan&quot;,&quot;erf&quot;,&quot;...&quot;,&quot;$&quot;,&quot;infinity&quot;]
+    specialStringsInMML : L S :=
+      [&quot;&lt;mo&gt;cos&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;cot&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;csc&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;log&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;sec&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;sin&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;tan&lt;/mo&gt;&quot;,
+        &quot;&lt;mo&gt;cosh&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;coth&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;csch&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;sech&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;sinh&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;tanh&lt;/mo&gt;&quot;,
+          &quot;&lt;mo&gt;arccos&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;arcsin&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;arctan&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;erf&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;&amp;#x2026;&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;$&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;&amp;#x221E;&lt;/mo&gt;&quot;]
+
+@
+\subsection{Private Function Declarations}
+
+These are the local functions:
+
+    addBraces:S -$&gt;$ S
+
+    addBrackets:S -$&gt;$ S
+
+    atomize:E -$&gt;$ L E
+
+    displayElt:S -$&gt;$ Void
+      function for recursively displaying mathml nicely formatted
+
+    eltLimit:(S,I,S) -$&gt;$ I
+      demarcates end postion of mathml element with name:S starting at
+      position i:I in mathml string s:S and returns end of end tag as
+      i:I position in mathml string, i.e. find start and end of
+      substring:  $&lt;$name ...$&gt;$...$&lt;$/name$&gt;$
+
+    eltName:(I,S) -$&gt;$ S
+      find name of mathml element starting at position i:I in string s:S
+
+    group:S -$&gt;$ S
+
+    formatBinary:(S,L E, I) -$&gt;$ S
+
+    formatFunction:(S,L E, I) -$&gt;$ S
+
+    formatMatrix:L E -$&gt;$ S
+
+    formatNary:(S,L E, I) -$&gt;$ S
+
+    formatNaryNoGroup:(S,L E, I) -$&gt;$ S
+
+    formatNullary:S -$&gt;$ S
+
+    formatPlex:(S,L E, I) -$&gt;$ S
+
+    formatSpecial:(S,L E, I) -$&gt;$ S
+
+    formatUnary:(S,  E, I) -$&gt;$ S
+
+    formatMml:(E,I) -$&gt;$ S
+
+    newWithNum:I -$&gt;$ \$
+      this is a relic from tex.spad and is not used here so far.  I'll
+      probably remove it.
+
+    parenthesize:S -$&gt;$ S
+
+    precondition:E -$&gt;$ E
+      this function is applied to the OutputForm expression before
+      doing anything else.
+
+    postcondition:S -$&gt;$ S
+      this function is applied after all other OutputForm -$&gt;$ MathML
+      transformations.  In the TexFormat domain the ungroup function
+      first peels off the outermost set of braces however I have 
+      replaced braces with $&lt;$mrow$&gt;$s here and sometimes the outermost set
+      of $&lt;$mrow$&gt;$s is necessary to get proper display in Firefox.  
+      For instance with getting the correct size of brackets on a matrix 
+      the whole expression needs to be enclosed in a mrow element.  
+      It also checks for $+-$ and removes the $+$.
+
+    stringify:E -$&gt;$ S
+
+    tagEnd:(S,I,S) -$&gt;$ I
+      finds closing &quot;$&gt;$&quot; of start or end tag for mathML element for formatting
+      MathML string for human readability.  No analog in TexFormat.
+
+    ungroup:S -$&gt;$ S
+
+&lt;&lt;private function declarations&gt;&gt;=
+    -- local function signatures
+
+    addBraces:      S -&gt; S
+    addBrackets:    S -&gt; S
+    atomize:        E -&gt; L E
+    displayElt:     S -&gt; Void
+      ++ function for recursively displaying mathml nicely formatted
+    eltLimit:       (S,I,S) -&gt; I
+      ++ demarcates end postion of mathml element with name:S starting at
+      ++ position i:I in mathml string s:S and returns end of end tag as
+      ++  i:I position in mathml string, i.e. find start and end of
+      ++  substring:  &lt;name ...&gt;...&lt;/name&gt;
+    eltName:        (I,S) -&gt; S
+      ++ find name of mathml element starting at position i:I in string s:S
+    group:          S -&gt; S
+    formatBinary:   (S,L E, I) -&gt; S
+    formatFunction: (S,L E, I) -&gt; S
+    formatIntSign:  (L E, I) -&gt; S
+    formatMatrix:   L E -&gt; S
+    formatNary:     (S,L E, I) -&gt; S
+    formatNaryNoGroup: (S,L E, I) -&gt; S
+    formatNullary:  S -&gt; S
+    formatPlex:     (S,L E, I) -&gt; S
+    formatSpecial:  (S,L E, I) -&gt; S
+    formatSub:      (E, L E, I) -&gt; S
+    formatSuperSub: (E, L E, I) -&gt; S
+    formatSuperSub1: (E, L E, I) -&gt; S
+    formatUnary:    (S,  E, I) -&gt; S
+    formatMml:      (E,I) -&gt; S
+    formatZag:      L E -&gt; S
+    formatZag1:     L E -&gt; S
+    newWithNum:     I -&gt; $
+    parenthesize:   S -&gt; S
+    precondition:   E -&gt; E
+    postcondition:  S -&gt; S
+    stringify:      E -&gt; S
+    tagEnd:         (S,I,S) -&gt; I
+      ++  finds closing &quot;&gt;&quot; of start or end tag for mathML element
+    ungroup:        S -&gt; S
+
+@
+\subsection{Public Function Definitions}
+
+Note that I use the function sayTeX\$Lisp much as I would printf in a
+C program.  I've noticed in grepping the code that there are other &quot;say&quot;
+functions, sayBrightly and sayMessage for instance, but I have no idea
+what the difference is between them at this point.  sayTeX\$Lisp does the
+job so for the time being I'll use that until I learn more.
+
+The functions coerceS and coerceL should probably be changed to display
+functions, {\it i.e.}\/ \spadfun{displayS} and \spadfun{display L}, 
+returning Void.  I really only need the one coerce function.
+
+&lt;&lt;public function definitions&gt;&gt;=
+    -- public function definitions
+
+    coerce(expr : E): S ==
+      s : S := postcondition formatMml(precondition expr, minPrec)
+      s
+
+    coerceS(expr : E): S ==
+      s : S := postcondition formatMml(precondition expr, minPrec)
+      sayTeX$Lisp &quot;&lt;math xmlns=_&quot;http://www.w3.org/1998/Math/MathML_&quot; mathsize=_&quot;big_&quot; display=_&quot;block_&quot;&gt;&quot;
+      displayElt(s)
+      sayTeX$Lisp &quot;&lt;/math&gt;&quot;
+      s
+
+    coerceL(expr : E): S ==
+      s : S := postcondition formatMml(precondition expr, minPrec)
+      sayTeX$Lisp &quot;&lt;math xmlns=_&quot;http://www.w3.org/1998/Math/MathML_&quot; mathsize=_&quot;big_&quot; display=_&quot;block_&quot;&gt;&quot;
+      sayTeX$Lisp s
+      sayTeX$Lisp &quot;&lt;/math&gt;&quot;
+      s
+
+    display(mathml : S): Void ==
+      sayTeX$Lisp &quot;&lt;math xmlns=_&quot;http://www.w3.org/1998/Math/MathML_&quot; mathsize=_&quot;big_&quot; display=_&quot;block_&quot;&gt;&quot;
+      sayTeX$Lisp mathml
+      sayTeX$Lisp &quot;&lt;/math&gt;&quot;
+      void()$Void
+
+      
+
+    exprex(expr : E): S ==
+      -- This breaks down an expression into atoms and returns it as
+      -- a string.  It's for developmental purposes to help understand
+      -- the expressions.
+      a : E
+      expr := precondition expr
+--      sayTeX$Lisp &quot;0: &quot;stringify expr
+      (ATOM(expr)$Lisp@Boolean) or (stringify expr = &quot;NOTHING&quot;) =&gt; 
+        concat [&quot;{&quot;,stringify expr,&quot;}&quot;]      
+      le : L E := (expr pretend L E)
+      op := first le
+      sop : S := exprex op
+      args : L E := rest le
+      nargs : I := #args
+--      sayTeX$Lisp concat [&quot;1: &quot;,stringify first le,&quot; : &quot;,string(nargs)$S]
+      s : S := concat [&quot;{&quot;,sop]
+      if nargs &gt; 0  then
+        for a in args repeat
+--	  sayTeX$Lisp concat [&quot;2: &quot;,stringify a]
+	  s1 : S := exprex a
+	  s := concat [s,s1]
+      s := concat [s,&quot;}&quot;]
+
+@
+\subsection{Private Function Definitions}
+
+\subsubsection{Display Functions}
+
+    displayElt(mathml:S):Void
+
+    eltName(pos:I,mathml:S):S
+
+    eltLimit(name:S,pos:I,mathml:S):I
+
+    tagEnd(name:S,pos:I,mathml:S):I
+
+&lt;&lt;display functions&gt;&gt;=
+
+    displayElt(mathML:S): Void ==
+      -- Takes a string of syntactically complete mathML
+      -- and formats it for display.
+--      sayTeX$Lisp &quot;****displayElt1****&quot;
+--      sayTeX$Lisp mathML
+      enT:I -- marks end of tag, e.g. &quot;&lt;name&gt;&quot;
+      enE:I -- marks end of element, e.g. &quot;&lt;name&gt; ... &lt;/name&gt;&quot;
+      end:I -- marks end of mathML string
+      u:US
+      end := #mathML
+      length:I := 60
+--      sayTeX$Lisp &quot;****displayElt1.1****&quot;
+      name:S := eltName(1,mathML)
+--      sayTeX$Lisp name
+--      sayTeX$Lisp concat(&quot;****displayElt1.2****&quot;,name)
+      enE := eltLimit(name,2+#name,mathML)
+--      sayTeX$Lisp &quot;****displayElt2****&quot;
+      if enE &lt; length then
+--        sayTeX$Lisp &quot;****displayElt3****&quot;
+        u := segment(1,enE)$US
+	sayTeX$Lisp mathML.u
+      else
+--        sayTeX$Lisp &quot;****displayElt4****&quot;
+        enT := tagEnd(name,1,mathML)
+	u := segment(1,enT)$US
+	sayTeX$Lisp mathML.u
+	u := segment(enT+1,enE-#name-3)$US
+	displayElt(mathML.u)
+	u := segment(enE-#name-2,enE)$US
+	sayTeX$Lisp mathML.u
+      if end &gt; enE then
+--        sayTeX$Lisp &quot;****displayElt5****&quot;
+        u := segment(enE+1,end)$US
+        displayElt(mathML.u)
+
+      void()$Void
+
+    eltName(pos:I,mathML:S): S ==
+      -- Assuming pos is the position of &quot;&lt;&quot; for a start tag of a mathML
+      -- element finds and returns the element's name.
+      i:I := pos+1
+      --sayTeX$Lisp &quot;eltName:mathmML string: &quot;mathML
+      while member?(mathML.i,lowerCase()$CharacterClass)$CharacterClass repeat
+         i := i+1
+      u:US := segment(pos+1,i-1)
+      name:S := mathML.u
+
+    eltLimit(name:S,pos:I,mathML:S): I ==
+      -- Finds the end of a mathML element like &quot;&lt;name ...&gt; ... &lt;/name&gt;&quot;
+      -- where pos is the position of the space after name in the start tag
+      -- although it could point to the closing &quot;&gt;&quot;.  Returns the position
+      -- of the &quot;&gt;&quot; in the end tag.
+      pI:I := pos
+      startI:I
+      endI:I
+      startS:S := concat [&quot;&lt;&quot;,name]
+      endS:S := concat [&quot;&lt;/&quot;,name,&quot;&gt;&quot;]
+      level:I := 1
+      --sayTeX$Lisp &quot;eltLimit: element name: &quot;name
+      while (level &gt; 0) repeat
+        startI := position(startS,mathML,pI)$String
+
+	endI := position(endS,mathML,pI)$String
+
+	if (startI = 0) then
+	  level := level-1
+          --sayTeX$Lisp &quot;****eltLimit 1******&quot;
+	  pI := tagEnd(name,endI,mathML)
+	else
+	  if (startI &lt; endI) then
+	    level := level+1
+	    pI := tagEnd(name,startI,mathML)
+	  else
+	    level := level-1
+	    pI := tagEnd(name,endI,mathML)
+      pI
+
+
+    tagEnd(name:S,pos:I,mathML:S):I ==
+      -- Finds the closing &quot;&gt;&quot; for either a start or end tag of a mathML
+      -- element, so the return value is the position of &quot;&gt;&quot; in mathML.
+      pI:I := pos
+      while  (mathML.pI ^= char &quot;&gt;&quot;) repeat
+        pI := pI+1
+      u:US := segment(pos,pI)$US
+      --sayTeX$Lisp &quot;tagEnd: &quot;mathML.u
+      pI
+
+@
+\subsubsection{Formatting Functions}
+
+Still need to format \verb+\zag+ in formatSpecial!
+
+In formatPlex the case op = &quot;INTSIGN&quot; is now passed off to
+formatIntSign which is a change from the TexFormat domain.
+This is done here for presentation mark up to replace the
+ugly bound variable that Axiom delivers.  For content mark up
+this has to be done anyway.  
+
+The formatPlex function also allows for op = &quot;INDEFINTEGRAL&quot;.
+However I don't know what Axiom command gives rise to this case.
+The INTSIGN case already allows for both definite and indefinite
+integrals.
+
+In the function formatSpecial various cases are handled including
+SUB and SUPERSUB.  These cases are now caught in formatMml and so
+the code in formatSpecial doesn't get executed.  The only cases
+I know of using these are partial derivatives for SUB and ordinary
+derivatives or SUPERSUB however in TexFormat the capability is there
+to handle multiscripts, i.e. an object with subscripts, superscripts,
+pre-subscripts and pre-superscripts but I am so far unaware of any
+Axiom command that produces such a multiscripted object.
+
+Another question is how to represent derivatives.  At present I have
+differential notation for partials and prime notation for ordinary 
+derivatives, 
+but it would be nice to allow for different derivative notations in 
+different circumstances, maybe some options to )set output mathml on.
+
+Ordinary derivatives are formatted in formatSuperSub and there are
+2 versions, formatSuperSub and formatSuperSub1, which at this point
+have to be switched by swapping names.
+
+&lt;&lt;formatting functions&gt;&gt;=
+
+    atomize(expr : E): L E ==
+      -- This breaks down an expression into a flat list of atomic expressions.
+      -- expr should be preconditioned.
+      le : L E := nil()
+      a : E
+      letmp : L E
+      (ATOM(expr)$Lisp@Boolean) or (stringify expr = &quot;NOTHING&quot;) =&gt; 
+        le := append(le,list(expr))
+      letmp := expr pretend L E
+      for a in letmp repeat
+        le := append(le,atomize a)
+      le
+      	
+
+    ungroup(str: S): S ==
+      len : I := #str
+      len &lt; 14 =&gt; str
+      lrow : S :=  &quot;&lt;mrow&gt;&quot;
+      rrow : S :=  &quot;&lt;/mrow&gt;&quot;
+      -- drop leading and trailing mrows
+      u1 : US := segment(1,6)$US
+      u2 : US := segment(len-6,len)$US
+      if (str.u1 =$S lrow) and (str.u2 =$S rrow) then
+        u : US := segment(7,len-7)$US
+        str := str.u
+      str
+
+    postcondition(str: S): S ==
+--      str := ungroup str
+      len : I := #str
+      plusminus : S := &quot;&lt;mo&gt;+&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&quot;
+      pos : I := position(plusminus,str,1)
+      if pos &gt; 0 then
+        ustart:US := segment(1,pos-1)$US
+	uend:US := segment(pos+20,len)$US
+        str := concat [str.ustart,&quot;&lt;mo&gt;-&lt;/mo&gt;&quot;,str.uend]
+	if pos &lt; len-18 then
+	  str := postcondition(str)
+      str
+
+    stringify expr == (mathObject2String$Lisp expr)@S
+
+    group str ==
+      concat [&quot;&lt;mrow&gt;&quot;,str,&quot;&lt;/mrow&gt;&quot;]
+
+    addBraces str ==
+      concat [&quot;&lt;mo&gt;{&lt;/mo&gt;&quot;,str,&quot;&lt;mo&gt;}&lt;/mo&gt;&quot;]
+
+    addBrackets str ==
+      concat [&quot;&lt;mo&gt;[&lt;/mo&gt;&quot;,str,&quot;&lt;mo&gt;]&lt;/mo&gt;&quot;]
+
+    parenthesize str ==
+      concat [&quot;&lt;mo&gt;(&lt;/mo&gt;&quot;,str,&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;]
+
+    precondition expr ==
+      outputTran$Lisp expr
+
+    formatSpecial(op : S, args : L E, prec : I) : S ==
+      arg : E
+      prescript : Boolean := false
+      op = &quot;theMap&quot; =&gt; &quot;&lt;mtext&gt;theMap(...)&lt;/mtext&gt;&quot;
+      op = &quot;AGGLST&quot; =&gt;
+        formatNary(&quot;,&quot;,args,prec)
+      op = &quot;AGGSET&quot; =&gt;
+        formatNary(&quot;;&quot;,args,prec)
+      op = &quot;TAG&quot; =&gt;
+        group concat [formatMml(first args,prec),
+                      &quot;&lt;mo&gt;&amp;#x02192;&lt;/mo&gt;&quot;,
+                        formatMml(second args,prec)]
+			 --RightArrow
+      op = &quot;SLASH&quot; =&gt;
+        group concat [formatMml(first args,prec),
+          &quot;&lt;mo&gt;/&lt;/mo&gt;&quot;,formatMml(second args,prec)]
+      op = &quot;VCONCAT&quot; =&gt;
+        group concat(&quot;&lt;mtable&gt;&lt;mtr&gt;&quot;,
+                     concat(concat([concat(&quot;&lt;mtd&gt;&quot;,concat(formatMml(u, minPrec),&quot;&lt;/mtd&gt;&quot;))
+                                    for u in args]::L S),
+                            &quot;&lt;/mtr&gt;&lt;/mtable&gt;&quot;))
+      op = &quot;CONCATB&quot; =&gt;
+        formatNary(&quot; &quot;,args,prec)
+      op = &quot;CONCAT&quot; =&gt;
+        formatNary(&quot;&quot;,args,minPrec)
+      op = &quot;QUOTE&quot; =&gt;
+        group concat(&quot;&lt;mo&gt;'&lt;/mo&gt;&quot;,formatMml(first args, minPrec))
+      op = &quot;BRACKET&quot; =&gt;
+        group addBrackets ungroup formatMml(first args, minPrec)
+      op = &quot;BRACE&quot; =&gt;
+        group addBraces ungroup formatMml(first args, minPrec)
+      op = &quot;PAREN&quot; =&gt;
+        group parenthesize ungroup formatMml(first args, minPrec)
+      op = &quot;OVERBAR&quot; =&gt;
+        null args =&gt; &quot;&quot;
+        group concat [&quot;&lt;mover accent='true'&gt;&lt;mrow&gt;&quot;,formatMml(first args,minPrec),&quot;&lt;/mrow&gt;&lt;mo stretchy='true'&gt;&amp;#x000AF;&lt;/mo&gt;&lt;/mover&gt;&quot;]
+	 --OverBar
+      op = &quot;ROOT&quot; =&gt;
+        null args =&gt; &quot;&quot;
+        tmp : S := group formatMml(first args, minPrec)
+        null rest args =&gt; concat [&quot;&lt;msqrt&gt;&quot;,tmp,&quot;&lt;/msqrt&gt;&quot;]
+        group concat
+	  [&quot;&lt;mroot&gt;&lt;mrow&gt;&quot;,tmp,&quot;&lt;/mrow&gt;&quot;,formatMml(first rest args, minPrec),&quot;&lt;/mroot&gt;&quot;]
+      op = &quot;SEGMENT&quot; =&gt;
+        tmp : S := concat [formatMml(first args, minPrec),&quot;&lt;mo&gt;..&lt;/mo&gt;&quot;]
+        group
+          null rest args =&gt;  tmp
+          concat [tmp,formatMml(first rest args, minPrec)]
+      -- SUB should now be diverted in formatMml although I'll leave
+      -- the code here for now.
+      op = &quot;SUB&quot; =&gt;
+        group concat [&quot;&lt;msub&gt;&quot;,formatMml(first args, minPrec),
+          formatSpecial(&quot;AGGLST&quot;,rest args,minPrec),&quot;&lt;/msub&gt;&quot;]
+      -- SUPERSUB should now be diverted in formatMml although I'll leave
+      -- the code here for now.
+      op = &quot;SUPERSUB&quot; =&gt;
+        base:S := formatMml(first args, minPrec)
+	args := rest args
+	if #args = 1 then
+	  &quot;&lt;msub&gt;&lt;mrow&gt;&quot;base&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first args, minPrec)&quot;&lt;/mrow&gt;&lt;/msub&gt;&quot;
+	else if #args = 2 then
+	-- it would be nice to substitue &amp;#x2032; for , in the case of
+	-- an ordinary derivative, it looks a lot better.
+	  &quot;&lt;msubsup&gt;&lt;mrow&gt;&quot;base&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first rest args, minPrec)&quot;&lt;/mrow&gt;&lt;/msubsup&gt;&quot;
+	else if #args = 3 then
+	  &quot;&lt;mmultiscripts&gt;&lt;mrow&gt;&quot;base&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first rest args,minPrec)&quot;&lt;/mrow&gt;&lt;mprescripts/&gt;&lt;mrow&gt;&quot;formatMml(first rest rest args,minPrec)&quot;&lt;/mrow&gt;&lt;none/&gt;&lt;/mmultiscripts&gt;&quot;
+	else if #args = 4 then
+	  &quot;&lt;mmultiscripts&gt;&lt;mrow&gt;&quot;base&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first rest args,minPrec)&quot;&lt;/mrow&gt;&lt;mprescripts/&gt;&lt;mrow&gt;&quot;formatMml(first rest rest args,minPrec)&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first rest rest rest args,minPrec)&quot;&lt;/mrow&gt;&lt;/mmultiscripts&gt;&quot;
+	else
+	  &quot;&lt;mtext&gt;Problem with multiscript object&lt;/mtext&gt;&quot;
+      op = &quot;SC&quot; =&gt;
+        -- need to handle indentation someday
+        null args =&gt; &quot;&quot;
+        tmp := formatNaryNoGroup(&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;, args, minPrec)
+        group concat [&quot;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;,tmp,&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&quot;]
+      op = &quot;MATRIX&quot; =&gt; formatMatrix rest args
+      op = &quot;ZAG&quot; =&gt;
+-- {{+}{3}{{ZAG}{1}{7}}{{ZAG}{1}{15}}{{ZAG}{1}{1}}{{ZAG}{1}{25}}{{ZAG}{1}{1}}{{ZAG}{1}{7}}{{ZAG}{1}{4}}}
+-- to format continued fraction traditionally need to intercept it at the
+-- formatNary of the &quot;+&quot;
+        concat [&quot; \zag{&quot;,formatMml(first args, minPrec),&quot;}{&quot;,
+          formatMml(first rest args,minPrec),&quot;}&quot;]
+      concat [&quot;&lt;mtext&gt;not done yet for: &quot;,op,&quot;&lt;/mtext&gt;&quot;]
+
+    formatSub(expr : E, args : L E, opPrec : I) : S ==
+      -- This one produces differential notation partial derivatives.
+      -- It doesn't work in all cases and may not be workable, use
+      -- formatSub1 below for now.
+      -- At this time this is only to handle partial derivatives.
+      -- If the SUB case handles anything else I'm not aware of it.
+      -- This an example of the 4th partial of y(x,z) w.r.t. x,x,z,x
+      -- {{{SUB}{y}{{CONCAT}{{CONCAT}{{CONCAT}{{CONCAT}{,}{1}}{{CONCAT}{,}{1}}}{{CONCAT}{,}{2}}}{{CONCAT}{,}{1}}}}{x}{z}}
+      atomE : L E := atomize(expr)      
+      op : S := stringify first atomE
+      op ^= &quot;SUB&quot; =&gt; &quot;&lt;mtext&gt;Mistake in formatSub: no SUB&lt;/mtext&gt;&quot;
+      stringify first rest rest atomE ^= &quot;CONCAT&quot; =&gt; &quot;&lt;mtext&gt;Mistake in formatSub: no CONCAT&lt;/mtext&gt;&quot;
+      -- expecting form for atomE like
+      --[{SUB}{func}{CONCAT}...{CONCAT}{,}{n}{CONCAT}{,}{n}...{CONCAT}{,}{n}],
+      --counting the first CONCATs before the comma gives the number of
+      --derivatives
+      ndiffs : I := 0
+      tmpLE : L E := rest rest atomE
+      while stringify first tmpLE = &quot;CONCAT&quot; repeat
+        ndiffs := ndiffs+1
+	tmpLE := rest tmpLE
+      numLS : L S := nil
+      i : I := 1
+      while i &lt; ndiffs repeat
+        numLS := append(numLS,list(stringify first rest tmpLE))
+	tmpLE := rest rest rest tmpLE
+	i := i+1
+      numLS := append(numLS,list(stringify first rest tmpLE))
+      -- numLS contains the numbers of the bound variables as strings
+      -- for the differentiations, thus for the differentiation [x,x,z,x]
+      -- for y(x,z) numLS = [&quot;1&quot;,&quot;1&quot;,&quot;2&quot;,&quot;1&quot;]
+      posLS : L S := nil
+      i := 0
+ --     sayTeX$Lisp &quot;formatSub: nargs = &quot;string(#args)
+      while i &lt; #args repeat
+        posLS := append(posLS,list(string(i+1)))
+	i := i+1
+      -- posLS contains the positions of the bound variables in args
+      -- as a list of strings, e.g. for the above example [&quot;1&quot;,&quot;2&quot;]
+      tmpS: S := stringify atomE.2
+      if ndiffs = 1 then
+        s : S := &quot;&lt;mfrac&gt;&lt;mo&gt;&amp;#x02202;&lt;/mo&gt;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&lt;mrow&gt;&quot;
+      else        
+        s : S := &quot;&lt;mfrac&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;&amp;#x02202;&lt;/mo&gt;&lt;mn&gt;&quot;string(ndiffs)&quot;&lt;/mn&gt;&lt;/msup&gt;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&quot;
+      -- need to find the order of the differentiation w.r.t. the i-th
+      -- variable
+      i := 1
+      j : I
+      k : I
+      tmpS: S
+      while i &lt; #posLS+1 repeat
+	j := 0
+	k := 1
+	while k &lt; #numLS + 1 repeat
+	  if numLS.k = string i then j := j + 1
+	  k := k+1
+        if j &gt; 0 then
+	  tmpS := stringify args.i
+	  if j = 1 then
+	    s := s&quot;&lt;mo&gt;&amp;#x02202;&lt;/mo&gt;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&quot;
+	  else
+	    s := s&quot;&lt;mo&gt;&amp;#x02202;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&lt;mn&gt;&quot;string(j)&quot;&lt;/mn&gt;&lt;/msup&gt;&quot;
+        i := i + 1
+      s := s&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;(&lt;/mo&gt;&quot;
+      i := 1
+      while i &lt; #posLS+1 repeat
+        tmpS := stringify args.i
+	s := s&quot;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&quot;
+	if i &lt; #posLS then s := s&quot;&lt;mo&gt;,&lt;/mo&gt;&quot;
+	i := i+1
+      s := s&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;
+
+    formatSub1(expr : E, args : L E, opPrec : I) : S ==
+      -- This one produces partial derivatives notated by &quot;,n&quot; as
+      -- subscripts.
+      -- At this time this is only to handle partial derivatives.
+      -- If the SUB case handles anything else I'm not aware of it.
+      -- This an example of the 4th partial of y(x,z) w.r.t. x,x,z,x
+      -- {{{SUB}{y}{{CONCAT}{{CONCAT}{{CONCAT}{{CONCAT}{,}{1}}
+      -- {{CONCAT}{,}{1}}}{{CONCAT}{,}{2}}}{{CONCAT}{,}{1}}}}{x}{z}},
+      -- here expr is everything in the first set of braces and 
+      -- args is {{x}{z}}
+      atomE : L E := atomize(expr)      
+      op : S := stringify first atomE
+      op ^= &quot;SUB&quot; =&gt; &quot;&lt;mtext&gt;Mistake in formatSub: no SUB&lt;/mtext&gt;&quot;
+      stringify first rest rest atomE ^= &quot;CONCAT&quot; =&gt; &quot;&lt;mtext&gt;Mistake in formatSub: no CONCAT&lt;/mtext&gt;&quot;
+      -- expecting form for atomE like
+      --[{SUB}{func}{CONCAT}...{CONCAT}{,}{n}{CONCAT}{,}{n}...{CONCAT}{,}{n}],
+      --counting the first CONCATs before the comma gives the number of
+      --derivatives
+      ndiffs : I := 0
+      tmpLE : L E := rest rest atomE
+      while stringify first tmpLE = &quot;CONCAT&quot; repeat
+        ndiffs := ndiffs+1
+	tmpLE := rest tmpLE
+      numLS : L S := nil
+      i : I := 1
+      while i &lt; ndiffs repeat
+        numLS := append(numLS,list(stringify first rest tmpLE))
+	tmpLE := rest rest rest tmpLE
+	i := i+1
+      numLS := append(numLS,list(stringify first rest tmpLE))
+      -- numLS contains the numbers of the bound variables as strings
+      -- for the differentiations, thus for the differentiation [x,x,z,x]
+      -- for y(x,z) numLS = [&quot;1&quot;,&quot;1&quot;,&quot;2&quot;,&quot;1&quot;]
+      posLS : L S := nil
+      i := 0
+ --     sayTeX$Lisp &quot;formatSub: nargs = &quot;string(#args)
+      while i &lt; #args repeat
+        posLS := append(posLS,list(string(i+1)))
+	i := i+1
+      -- posLS contains the positions of the bound variables in args
+      -- as a list of strings, e.g. for the above example [&quot;1&quot;,&quot;2&quot;]
+      funcS: S := stringify atomE.2
+      s : S := &quot;&lt;msub&gt;&lt;mi&gt;&quot;funcS&quot;&lt;/mi&gt;&lt;mrow&gt;&quot;
+      i := 1
+      while i &lt; #numLS+1 repeat
+        s := s&quot;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;&quot;numLS.i&quot;&lt;/mn&gt;&quot;
+	i := i + 1
+      s := s&quot;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;(&lt;/mo&gt;&quot;
+      i := 1
+      while i &lt; #posLS+1 repeat
+--        tmpS := stringify args.i
+	tmpS := formatMml(first args,minPrec)
+	args := rest args
+	s := s&quot;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&quot;
+	if i &lt; #posLS then s := s&quot;&lt;mo&gt;,&lt;/mo&gt;&quot;
+	i := i+1
+      s := s&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;
+
+    formatSuperSub(expr : E, args : L E, opPrec : I) : S ==
+      -- this produces prime notation ordinary derivatives.
+      -- first have to divine the semantics, add cases as needed
+--      WriteLine$Lisp &quot;SuperSub1 begin&quot;
+      atomE : L E := atomize(expr)      
+      op : S := stringify first atomE
+--      WriteLine$Lisp &quot;op: &quot;op
+      op ^= &quot;SUPERSUB&quot; =&gt; _
+          &quot;&lt;mtext&gt;Mistake in formatSuperSub: no SUPERSUB1&lt;/mtext&gt;&quot;
+      #args ^= 1 =&gt; &quot;&lt;mtext&gt;Mistake in SuperSub1: #args &lt;&gt; 1&lt;/mtext&gt;&quot;
+      var : E := first args
+      -- should be looking at something like {{SUPERSUB}{var}{ }{,,...,}} for
+      -- example here's the second derivative of y w.r.t. x
+      -- {{{SUPERSUB}{y}{ }{,,}}{x}}, expr is the first {} and args is the
+      -- {x}
+      funcS : S := stringify first rest atomE
+--      WriteLine$Lisp &quot;funcS: &quot;funcS
+      bvarS : S := stringify first args
+--      WriteLine$Lisp &quot;bvarS: &quot;bvarS
+      -- count the number of commas
+      commaS : S := stringify first rest rest rest atomE
+      commaTest : S := &quot;,&quot;
+      i : I := 0
+      while position(commaTest,commaS,1) &gt; 0 repeat
+        i := i+1
+	commaTest := commaTest&quot;,&quot;
+      s : S := &quot;&lt;msup&gt;&lt;mi&gt;&quot;funcS&quot;&lt;/mi&gt;&lt;mrow&gt;&quot;
+--      WriteLine$Lisp &quot;s: &quot;s
+      j : I := 0
+      while j &lt; i repeat
+        s := s&quot;&lt;mo&gt;&amp;#x02032;&lt;/mo&gt;&quot;
+	j := j + 1
+      s := s&quot;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;&amp;#x02061;&lt;/mo&gt;&lt;mo&gt;(&lt;/mo&gt;&quot;formatMml(first args,minPrec)&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;
+
+    formatSuperSub1(expr : E, args : L E, opPrec : I) : S ==
+      -- This one produces ordinary derivatives with differential notation,
+      -- it needs a little more work yet.
+      -- first have to divine the semantics, add cases as needed
+--      WriteLine$Lisp &quot;SuperSub begin&quot;
+      atomE : L E := atomize(expr)      
+      op : S := stringify first atomE
+      op ^= &quot;SUPERSUB&quot; =&gt; _
+         &quot;&lt;mtext&gt;Mistake in formatSuperSub: no SUPERSUB&lt;/mtext&gt;&quot;
+      #args ^= 1 =&gt; &quot;&lt;mtext&gt;Mistake in SuperSub: #args &lt;&gt; 1&lt;/mtext&gt;&quot;
+      var : E := first args
+      -- should be looking at something like {{SUPERSUB}{var}{ }{,,...,}} for
+      -- example here's the second derivative of y w.r.t. x
+      -- {{{SUPERSUB}{y}{ }{,,}}{x}}, expr is the first {} and args is the
+      -- {x}
+      funcS : S := stringify first rest atomE
+      bvarS : S := stringify first args
+      -- count the number of commas
+      commaS : S := stringify first rest rest rest atomE
+      commaTest : S := &quot;,&quot;
+      ndiffs : I := 0
+      while position(commaTest,commaS,1) &gt; 0 repeat
+        ndiffs := ndiffs+1
+	commaTest := commaTest&quot;,&quot;
+      s : S := &quot;&lt;mfrac&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;&amp;#x02146;&lt;/mo&gt;&lt;mn&gt;&quot;string(ndiffs)&quot;&lt;/mn&gt;&lt;/msup&gt;&lt;mi&gt;&quot;funcS&quot;&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;&amp;#x02146;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mi&gt;&lt;mn&gt;&quot;string(ndiffs)&quot;&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;&amp;#x02061;&lt;/mo&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&quot;
+
+    formatPlex(op : S, args : L E, prec : I) : S ==
+      checkarg:Boolean := false
+      hold : S
+      p : I := position(op,plexOps)
+      p &lt; 1 =&gt; error &quot;unknown plex op&quot;
+      op = &quot;INTSIGN&quot; =&gt; formatIntSign(args,minPrec)
+      opPrec := plexPrecs.p
+      n : I := #args
+      (n ^= 2) and (n ^= 3) =&gt; error &quot;wrong number of arguments for plex&quot;
+      s : S :=
+        op = &quot;SIGMA&quot;   =&gt; 
+         checkarg := true
+         &quot;&lt;mo&gt;&amp;#x02211;&lt;/mo&gt;&quot;
+	-- Sum
+        op = &quot;SIGMA2&quot;   =&gt; 
+         checkarg := true
+         &quot;&lt;mo&gt;&amp;#x02211;&lt;/mo&gt;&quot;
+	-- Sum
+        op = &quot;PI&quot;      =&gt; 
+         checkarg := true
+         &quot;&lt;mo&gt;&amp;#x0220F;&lt;/mo&gt;&quot;
+	-- Product
+        op = &quot;PI2&quot;     =&gt; 
+         checkarg := true
+         &quot;&lt;mo&gt;&amp;#x0220F;&lt;/mo&gt;&quot;
+	-- Product
+--        op = &quot;INTSIGN&quot; =&gt; &quot;&lt;mo&gt;&amp;#x0222B;&lt;/mo&gt;&quot;
+	-- Integral, int
+        op = &quot;INDEFINTEGRAL&quot; =&gt; &quot;&lt;mo&gt;&amp;#x0222B;&lt;/mo&gt;&quot;
+	-- Integral, int
+        &quot;????&quot;
+      hold := formatMml(first args,minPrec)
+      args := rest args
+      if op ^= &quot;INDEFINTEGRAL&quot; then
+        if hold ^= &quot;&quot; then
+          s := concat [&quot;&lt;munderover&gt;&quot;,s,group hold]
+	else
+	  s := concat [&quot;&lt;munderover&gt;&quot;,s,group &quot; &quot;]
+        if not null rest args then
+          hold := formatMml(first args,minPrec)
+	  if hold ^= &quot;&quot; then
+            s := concat [s,group hold,&quot;&lt;/munderover&gt;&quot;]
+	  else
+	    s := concat [s,group &quot; &quot;,&quot;&lt;/munderover&gt;&quot;]
+          args := rest args
+	-- if checkarg true need to test op arg for &quot;+&quot; at least
+	-- and wrap parentheses if so
+	if checkarg then
+          la : L E := (first args pretend L E)
+          opa : S := stringify first la
+	  if opa = &quot;+&quot; then
+            s := concat [s,&quot;&lt;mo&gt;(&lt;/mo&gt;&quot;,formatMml(first args,minPrec),&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;]
+          else s := concat [s,formatMml(first args,minPrec)]
+        else s := concat [s,formatMml(first args,minPrec)]
+      else
+        hold := group concat [hold,formatMml(first args,minPrec)]
+        s := concat [s,hold]
+--      if opPrec &lt; prec then s := parenthesize s
+-- getting ugly parentheses on fractions
+      group s
+
+    formatIntSign(args : L E, opPrec : I) : S ==
+      -- the original OutputForm expression looks something like this:
+      -- {{INTSIGN}{NOTHING or lower limit?}
+      -- {bvar or upper limit?}{{*}{integrand}{{CONCAT}{d}{axiom var}}}}
+      -- the args list passed here consists of the rest of this list, i.e.
+      -- starting at the NOTHING or ...
+      (stringify first args) = &quot;NOTHING&quot; =&gt;
+        -- the bound variable is the second one in the argument list
+	bvar : E := first rest args
+	bvarS : S := stringify bvar
+	tmpS : S
+	i : I := 0
+	u1 : US
+	u2 : US
+	-- this next one atomizes the integrand plus differential
+	atomE : L E := atomize(first rest rest args)
+	-- pick out the bound variable used by axiom
+	varRS : S := stringify last(atomE)
+	tmpLE : L E := ((first rest rest args) pretend L E)
+        integrand : S := formatMml(first rest tmpLE,minPrec)
+	-- replace the bound variable, i.e. axiom uses someting of the form
+	-- %A for the bound variable and puts the original variable used
+	-- in the input command as a superscript on the integral sign.
+	-- I'm assuming that the axiom variable is 2 characters.
+	while (i := position(varRS,integrand,i+1)) &gt; 0 repeat
+	  u1 := segment(1,i-1)$US
+	  u2 := segment(i+2,#integrand)$US
+	  integrand := concat [integrand.u1,bvarS,integrand.u2]
+	concat [&quot;&lt;mrow&gt;&lt;mo&gt;&amp;#x0222B;&lt;/mo&gt;&quot; integrand &quot;&lt;mo&gt;&amp;#x02146;&lt;/mo&gt;&lt;mi&gt;&quot; bvarS &quot;&lt;/mi&gt;&lt;/mrow&gt;&quot;]
+
+      lowlim : S := stringify first args
+      highlim : S := stringify first rest args
+      bvar : E := last atomize(first rest rest args)
+      bvarS : S := stringify bvar
+      tmpLE : L E := ((first rest rest args) pretend L E)
+      integrand : S := formatMml(first rest tmpLE,minPrec)
+      concat [&quot;&lt;mrow&gt;&lt;munderover&gt;&lt;mo&gt;&amp;#x0222B;&lt;/mo&gt;&lt;mi&gt;&quot; lowlim &quot;&lt;/mi&gt;&lt;mi&gt;&quot; highlim &quot;&lt;/mi&gt;&lt;/munderover&gt;&quot; integrand &quot;&lt;mo&gt;&amp;#x02146;&lt;/mo&gt;&lt;mi&gt;&quot; bvarS &quot;&lt;/mi&gt;&lt;/mrow&gt;&quot;] 
+
+
+    formatMatrix(args : L E) : S ==
+      -- format for args is [[ROW ...],[ROW ...],[ROW ...]]
+      -- generate string for formatting columns (centered)
+      group addBrackets concat
+        [&quot;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;,formatNaryNoGroup(&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;,args,minPrec),
+          &quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&quot;]
+
+    formatFunction(op : S, args : L E, prec : I) : S ==
+      group concat [&quot;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&quot;,parenthesize formatNary(&quot;,&quot;,args,minPrec)]
+
+    formatNullary(op : S) ==
+      op = &quot;NOTHING&quot; =&gt; &quot;&quot;
+      group concat [&quot;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mo&gt;)&lt;/mo&gt;&quot;]
+
+    formatUnary(op : S, arg : E, prec : I) ==
+      p : I := position(op,unaryOps)
+      p &lt; 1 =&gt; error &quot;unknown unary op&quot;
+      opPrec := unaryPrecs.p
+      s : S := concat [&quot;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&quot;,formatMml(arg,opPrec)]
+      opPrec &lt; prec =&gt; group parenthesize s
+      op = &quot;-&quot; =&gt; s
+      group s
+
+    formatBinary(op : S, args : L E, prec : I) : S ==
+      p : I := position(op,binaryOps)
+      p &lt; 1 =&gt; error &quot;unknown binary op&quot;
+      opPrec := binaryPrecs.p
+      -- if base op is product or sum need to add parentheses
+      if ATOM(first args)$Lisp@Boolean then
+        opa:S := stringify first args
+      else
+        la : L E := (first args pretend L E)
+        opa : S := stringify first la
+      if (opa = &quot;SIGMA&quot; or opa = &quot;SIGMA2&quot; or opa = &quot;PI&quot; or opa = &quot;PI2&quot;) _
+         and op = &quot;**&quot; then
+        s1:S:=concat [&quot;&lt;mo&gt;(&lt;/mo&gt;&quot;,formatMml(first args, opPrec),&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;]
+      else
+       s1 : S := formatMml(first args, opPrec)
+      s2 : S := formatMml(first rest args, opPrec)
+      op :=
+        op = &quot;|&quot;     =&gt;  s := concat [&quot;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&quot;]
+        op = &quot;**&quot;    =&gt;  s := concat [&quot;&lt;msup&gt;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&lt;/msup&gt;&quot;]
+        op = &quot;/&quot;     =&gt;  s := concat [&quot;&lt;mfrac&gt;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&quot;]
+        op = &quot;OVER&quot;  =&gt;  s := concat [&quot;&lt;mfrac&gt;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&quot;]
+        op = &quot;+-&gt;&quot;   =&gt;  s := concat [&quot;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&quot;]
+        s := concat [&quot;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&quot;]
+      group
+        op = &quot;OVER&quot; =&gt; s
+--        opPrec &lt; prec =&gt; parenthesize s
+-- ugly parentheses?
+        s
+
+    formatNary(op : S, args : L E, prec : I) : S ==
+      group formatNaryNoGroup(op, args, prec)
+
+    formatNaryNoGroup(op : S, args : L E, prec : I) : S ==
+      checkargs:Boolean := false
+      null args =&gt; &quot;&quot;
+      p : I := position(op,naryOps)
+      p &lt; 1 =&gt; error &quot;unknown nary op&quot;
+      -- need to test for &quot;ZAG&quot; case and divert it here
+      -- ex 1. continuedFraction(314159/100000)
+      -- {{+}{3}{{ZAG}{1}{7}}{{ZAG}{1}{15}}{{ZAG}{1}{1}}{{ZAG}{1}{25}}
+      -- {{ZAG}{1}{1}}{{ZAG}{1}{7}}{{ZAG}{1}{4}}}
+      -- this is the preconditioned output form
+      -- including &quot;op&quot;, the args list would be the rest of this
+      -- i.e op = '+' and args = {{3}{{ZAG}{1}{7}}{{ZAG}{1}{15}}
+      -- {{ZAG}{1}{1}}{{ZAG}{1}{25}}{{ZAG}{1}{1}}{{ZAG}{1}{7}}{{ZAG}{1}{4}}}
+      -- ex 2. continuedFraction(14159/100000)
+      -- this one doesn't have the leading integer
+      -- {{+}{{ZAG}{1}{7}}{{ZAG}{1}{15}}{{ZAG}{1}{1}}{{ZAG}{1}{25}}
+      -- {{ZAG}{1}{1}}{{ZAG}{1}{7}}{{ZAG}{1}{4}}}
+      --
+      -- ex 3. continuedFraction(3,repeating [1], repeating [3,6])
+      -- {{+}{3}{{ZAG}{1}{3}}{{ZAG}{1}{6}}{{ZAG}{1}{3}}{{ZAG}{1}{6}}
+      -- {{ZAG}{1}{3}}{{ZAG}{1}{6}}{{ZAG}{1}{3}}{{ZAG}{1}{6}}
+      -- {{ZAG}{1}{3}}{{ZAG}{1}{6}}{...}}
+      -- In each of these examples the args list consists of the terms
+      -- following the '+' op
+      -- so the first arg could be a &quot;ZAG&quot; or something
+      -- else, but the second arg looks like it has to be &quot;ZAG&quot;, so maybe
+      -- test for #args &gt; 1 and args.2 contains &quot;ZAG&quot;.
+      -- Note that since the resulting MathML &lt;mfrac&gt;s are nested we need
+      -- to handle the whole continued fraction at once, i.e. we can't
+      -- just look for, e.g., {{ZAG}{1}{6}}
+      (#args &gt; 1) and (position(&quot;ZAG&quot;,stringify first rest args,1) &gt; 0) =&gt;
+	   tmpS : S := stringify first args
+	   position(&quot;ZAG&quot;,tmpS,1) &gt; 0 =&gt; formatZag(args)
+--	   position(&quot;ZAG&quot;,tmpS,1) &gt; 0 =&gt; formatZag1(args)
+	   concat [formatMml(first args,minPrec) &quot;&lt;mo&gt;+&lt;/mo&gt;&quot; formatZag(rest args)]
+      -- At least for the ops &quot;*&quot;,&quot;+&quot;,&quot;-&quot; we need to test to see if a sigma
+      -- or pi is one of their arguments because we might need parentheses
+      -- as indicated by the problem with 
+      -- summation(operator(f)(i),i=1..n)+1 versus
+      -- summation(operator(f)(i)+1,i=1..n) having identical displays as 
+      -- of 2007-21-21
+      op :=
+        op = &quot;,&quot;     =&gt; &quot;&lt;mo&gt;,&lt;/mo&gt;&quot; --originally , \:
+        op = &quot;;&quot;     =&gt; &quot;&lt;mo&gt;;&lt;/mo&gt;&quot; --originally ; \: should figure these out
+        op = &quot;*&quot;     =&gt; &quot;&lt;mspace width='0.3em'/&gt;&quot;
+	-- InvisibleTimes
+        op = &quot; &quot;     =&gt; &quot;&lt;mspace width='0.5em'/&gt;&quot;
+        op = &quot;ROW&quot;   =&gt; &quot;&lt;/mtd&gt;&lt;mtd&gt;&quot;
+	op = &quot;+&quot;     =&gt; 
+            checkargs := true
+            &quot;&lt;mo&gt;+&lt;/mo&gt;&quot;
+	op = &quot;-&quot;     =&gt; 
+            checkargs := true
+            &quot;&lt;mo&gt;-&lt;/mo&gt;&quot;
+        op
+      l : L S := nil
+      opPrec := naryPrecs.p
+      -- if checkargs is true check each arg except last one to see if it's
+      -- a sigma or pi and if so add parentheses. Other op's may have to be
+      -- checked for in future
+      count:I := 1
+      for a in args repeat
+--        WriteLine$Lisp &quot;checking args&quot;
+        if checkargs then
+	  if count &lt; #args then
+	    -- check here for sum or product
+	    if ATOM(a)$Lisp@Boolean then
+	      opa:S := stringify a
+	    else
+	      la : L E := (a pretend L E)
+	      opa : S := stringify first la
+	    if opa = &quot;SIGMA&quot; or opa = &quot;SIGMA2&quot; or _
+               opa = &quot;PI&quot; or opa = &quot;PI2&quot; then
+	      l := concat(op,concat(_
+                    concat [&quot;&lt;mo&gt;(&lt;/mo&gt;&quot;,formatMml(a,opPrec),_
+                            &quot;&lt;mo&gt;)&lt;/mo&gt;&quot;],l)$L(S))$L(S)
+	    else l := concat(op,concat(formatMml(a,opPrec),l)$L(S))$L(S)
+	  else l := concat(op,concat(formatMml(a,opPrec),l)$L(S))$L(S)
+	else l := concat(op,concat(formatMml(a,opPrec),l)$L(S))$L(S)
+	count := count + 1
+      s : S := concat reverse rest l
+      opPrec &lt; prec =&gt; parenthesize s
+      s
+
+    formatZag(args : L E) : S ==
+    -- args will be a list of things like this {{ZAG}{1}{7}}, the ZAG
+    -- must be there, the '1' and '7' could conceivably be more complex
+    -- expressions
+      tmpZag : L E := first args pretend L E
+      -- may want to test that tmpZag contains 'ZAG'
+      #args &gt; 1 =&gt; &quot;&lt;mfrac&gt;&quot;formatMml(first rest tmpZag,minPrec)&quot;&lt;mrow&gt;&lt;mn&gt;&quot;formatMml(first rest rest tmpZag,minPrec)&quot;&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&quot;formatZag(rest args)&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&quot;
+      -- EQUAL(tmpZag, &quot;...&quot;)$Lisp =&gt; &quot;&lt;mo&gt;&amp;#x2026;&lt;/mo&gt;&quot;
+      (first args = &quot;...&quot;::E)@Boolean =&gt; &quot;&lt;mo&gt;&amp;#x2026;&lt;/mo&gt;&quot;
+      position(&quot;ZAG&quot;,stringify first args,1) &gt; 0 =&gt;
+          &quot;&lt;mfrac&gt;&quot;formatMml(first rest tmpZag,minPrec)formatMml(first rest rest tmpZag,minPrec)&quot;&lt;/mfrac&gt;&quot;      
+      &quot;&lt;mtext&gt;formatZag: Unexpected kind of ZAG&lt;/mtext&gt;&quot;
+
+      
+    formatZag1(args : L E) : S ==
+    -- make alternative ZAG format without diminishing fonts, maybe
+    -- use a table
+    -- {{ZAG}{1}{7}}
+      tmpZag : L E := first args pretend L E
+      #args &gt; 1 =&gt; &quot;&lt;mfrac&gt;&quot;formatMml(first rest tmpZag,minPrec)&quot;&lt;mrow&gt;&lt;mn&gt;&quot;formatMml(first rest rest tmpZag,minPrec)&quot;&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&quot;formatZag(rest args)&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&quot;
+      (first args = &quot;...&quot;:: E)@Boolean =&gt; &quot;&lt;mo&gt;&amp;#x2026;&lt;/mo&gt;&quot;
+      error &quot;formatZag1: Unexpected kind of ZAG&quot;
+
+
+    formatMml(expr : E,prec : I) ==
+      i,len : Integer
+      intSplitLen : Integer := 20
+      ATOM(expr)$Lisp@Boolean =&gt;
+        str := stringify expr
+        len := #str
+	-- this bit seems to deal with integers
+        FIXP$Lisp expr =&gt;
+          i := expr pretend Integer
+          if (i &lt; 0) or (i &gt; 9)
+            then
+              group
+                 nstr : String := &quot;&quot;
+                 -- insert some blanks into the string, if too long
+                 while ((len := #str) &gt; intSplitLen) repeat
+                   nstr := concat [nstr,&quot; &quot;,
+                     elt(str,segment(1,intSplitLen)$US)]
+                   str := elt(str,segment(intSplitLen+1)$US)
+                 empty? nstr =&gt; concat [&quot;&lt;mn&gt;&quot;,str,&quot;&lt;/mn&gt;&quot;]
+                 nstr :=
+                   empty? str =&gt; nstr
+                   concat [nstr,&quot; &quot;,str]
+                 concat [&quot;&lt;mn&gt;&quot;,elt(nstr,segment(2)$US),&quot;&lt;/mn&gt;&quot;]
+            else str := concat [&quot;&lt;mn&gt;&quot;,str,&quot;&lt;/mn&gt;&quot;]
+        str = &quot;%pi&quot; =&gt; &quot;&lt;mi&gt;&amp;#x003C0;&lt;/mi&gt;&quot;
+	-- pi
+        str = &quot;%e&quot;  =&gt; &quot;&lt;mi&gt;&amp;#x02147;&lt;/mi&gt;&quot;
+	-- ExponentialE
+        str = &quot;%i&quot;  =&gt; &quot;&lt;mi&gt;&amp;#x02148;&lt;/mi&gt;&quot;
+	-- ImaginaryI
+        len &gt; 0 and str.1 = char &quot;%&quot; =&gt; concat(concat(&quot;&lt;mi&gt;&quot;,str),&quot;&lt;/mi&gt;&quot;)
+         -- should handle floats
+        len &gt; 1 and digit? str.1 =&gt; concat [&quot;&lt;mn&gt;&quot;,str,&quot;&lt;/mn&gt;&quot;]
+	-- presumably this is a literal string
+        len &gt; 0 and str.1 = char &quot;_&quot;&quot; =&gt;
+          concat(concat(&quot;&lt;mtext&gt;&quot;,str),&quot;&lt;/mtext&gt;&quot;)
+        len = 1 and str.1 = char &quot; &quot; =&gt; &quot; &quot;
+        (i := position(str,specialStrings)) &gt; 0 =&gt;
+          specialStringsInMML.i
+        (i := position(char &quot; &quot;,str)) &gt; 0 =&gt;
+          -- We want to preserve spacing, so use a roman font.
+	  -- What's this for?  Leave the \rm in for now so I can see
+	  -- where it arises.  Removed 2007-02-14
+          concat(concat(&quot;&lt;mtext&gt;&quot;,str),&quot;&lt;/mtext&gt;&quot;)
+	-- if we get to here does that mean it's a variable?
+        concat [&quot;&lt;mi&gt;&quot;,str,&quot;&lt;/mi&gt;&quot;]
+      l : L E := (expr pretend L E)
+      null l =&gt; blank
+      op : S := stringify first l
+      args : L E := rest l
+      nargs : I := #args
+      -- need to test here in case first l is SUPERSUB case and then
+      -- pass first l and args to formatSuperSub.
+      position(&quot;SUPERSUB&quot;,op,1) &gt; 0 =&gt;
+        formatSuperSub(first l,args,minPrec)
+      -- now test for SUB
+      position(&quot;SUB&quot;,op,1) &gt; 0 =&gt;
+        formatSub1(first l,args,minPrec)
+
+      -- special cases
+      member?(op, specialOps) =&gt; formatSpecial(op,args,prec)
+      member?(op, plexOps)    =&gt; formatPlex(op,args,prec)
+
+      -- nullary case
+      0 = nargs =&gt; formatNullary op
+
+      -- unary case
+      (1 = nargs) and member?(op, unaryOps) =&gt;
+        formatUnary(op, first args, prec)
+
+      -- binary case
+      (2 = nargs) and member?(op, binaryOps) =&gt;
+        formatBinary(op, args, prec)
+
+      -- nary case
+      member?(op,naryNGOps) =&gt; formatNaryNoGroup(op,args, prec)
+      member?(op,naryOps) =&gt; formatNary(op,args, prec)
+
+      op := formatMml(first l,minPrec)
+      formatFunction(op,args,prec)
+
+@
+\subsection{Mathematical Markup Language Form}
+&lt;&lt;MathMLFormat.input&gt;&gt;=
+)set break resume
+)spool MathMLFormat.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 5
+)set output mathml on
+ 
+--R 
+--E 1 
+ 
+--S 2 of 5
+1/2
+--R 
+--R
+--R        1
+--R   (1)  -
+--R        2
+--R&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; display=&quot;block&quot;&gt;
+--R&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mrow&gt;
+--R&lt;/math&gt;
+--R
+--R                                                       Type: Fraction Integer
+--E 2
+
+--S 3 of 5
+1/(x+5)
+--R 
+--R
+--R          1
+--R   (2)  -----
+--R        x + 5
+--R&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; display=&quot;block&quot;&gt;
+--R&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mrow&gt;
+--R&lt;/math&gt;
+--R
+--R                                            Type: Fraction Polynomial Integer
+--E 3
+
+--S 4 of 5
+(x+3)/(y-5)
+--R 
+--R
+--R        x + 3
+--R   (3)  -----
+--R        y - 5
+--R&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; display=&quot;block&quot;&gt;
+--R&lt;mrow&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mrow&gt;
+--R&lt;/math&gt;
+--R
+--R                                            Type: Fraction Polynomial Integer
+--E 4
+
+--S 5 of 5
+)show MathMLFormat
+--R MathMLFormat  is a domain constructor
+--R Abbreviation for MathMLFormat is MMLFORM 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.spad.pamphlet to see algebra source code for MMLFORM 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -&gt; Boolean                coerce : OutputForm -&gt; String
+--R coerce : % -&gt; OutputForm              coerceL : OutputForm -&gt; String
+--R coerceS : OutputForm -&gt; String        display : String -&gt; Void
+--R exprex : OutputForm -&gt; String         hash : % -&gt; SingleInteger
+--R latex : % -&gt; String                   ?~=? : (%,%) -&gt; Boolean
+--R
+--E 5
+
+)spool 
+)lisp (bye)
+ 
+@
+&lt;&lt;MathMLFormat.help&gt;&gt;=
+====================================================================
+MathMLFormat examples
+====================================================================
+
+MathML is an HTML-like markup language for mathematics. It uses the
+&quot;knuckle&quot; syntax of HTML such as &quot;&lt;mo&gt;&quot; to introduce a math operator
+and &quot;&lt;/mo&gt;&quot; to mark the end of the operator. Axiom can generate 
+MathML output and does so when it communicates to the browser front end.
+
+This output is enabled by 
+
+  )set output mathml on
+
+after which you'll see the MathML markup as well as the algebra.
+Note that you can turn off the algebra output with
+  
+  )set output algebra off
+
+but we don't do that here so you can compare the output.
+
+  1/2
+
+    1/2
+
+  &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; 
+        display=&quot;block&quot;&gt;
+   &lt;mrow&gt;
+    &lt;mn&gt;1&lt;/mn&gt;
+    &lt;mo&gt;/&lt;/mo&gt;
+    &lt;mn&gt;2&lt;/mn&gt;
+   &lt;/mrow&gt;
+  &lt;/math&gt;
+
+
+  1/(x+5)
+
+    1/(x + 5)
+
+  &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; 
+        display=&quot;block&quot;&gt;
+   &lt;mrow&gt;
+    &lt;mn&gt;1&lt;/mn&gt;
+    &lt;mo&gt;/&lt;/mo&gt;
+    &lt;mrow&gt;
+     &lt;mo&gt;(&lt;/mo&gt;
+     &lt;mi&gt;x&lt;/mi&gt;
+     &lt;mo&gt;+&lt;/mo&gt;
+     &lt;mn&gt;5&lt;/mn&gt;
+     &lt;mo&gt;)&lt;/mo&gt;
+    &lt;/mrow&gt;
+   &lt;/mrow&gt;
+  &lt;/math&gt;
+
+  (x+3)/(y-5)
+     
+     (x + 3)/(y - 5)
+
+  &lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; 
+        display=&quot;block&quot;&gt;
+   &lt;mrow&gt;
+    &lt;mrow&gt;
+     &lt;mo&gt;(&lt;/mo&gt;
+     &lt;mi&gt;x&lt;/mi&gt;
+     &lt;mo&gt;+&lt;/mo&gt;
+     &lt;mn&gt;3&lt;/mn&gt;
+     &lt;mo&gt;)&lt;/mo&gt;
+    &lt;/mrow&gt;
+    &lt;mo&gt;/&lt;/mo&gt;
+    &lt;mrow&gt;
+     &lt;mo&gt;(&lt;/mo&gt;
+     &lt;mi&gt;y&lt;/mi&gt;
+     &lt;mo&gt;-&lt;/mo&gt;
+     &lt;mn&gt;5&lt;/mn&gt;
+     &lt;mo&gt;)&lt;/mo&gt;
+    &lt;/mrow&gt;
+   &lt;/mrow&gt;
+  R&lt;/math&gt;
+
+See Also:
+o )show MathMLFormat
+
+@
+\pagehead{MathMLForm}{MMLFORM}
+\pagepic{ps/v104mathmlform.ps}{MMLFORM}{1.00}
+
+{\bf Exports:}\\
+\begin{tabular}{lllll}
+\cross{MMLFORM}{coerce} &amp;
+\cross{MMLFORM}{coerceL} &amp;
+\cross{MMLFORM}{coerceS} &amp;
+\cross{MMLFORM}{display} &amp;
+\cross{MMLFORM}{exprex} \\
+\cross{MMLFORM}{hash} &amp;
+\cross{MMLFORM}{latex} &amp;
+\cross{MMLFORM}{?=?} &amp;
+\cross{MMLFORM}{?\~{}=?} &amp;
+\end{tabular}
+
+&lt;&lt;domain MMLFORM MathMLFormat&gt;&gt;=
+&lt;&lt;public declarations&gt;&gt;
+&lt;&lt;private constant declarations&gt;&gt;
+&lt;&lt;private function declarations&gt;&gt;
+&lt;&lt;public function definitions&gt;&gt;
+&lt;&lt;display functions&gt;&gt;
+&lt;&lt;formatting functions&gt;&gt;
+
+@
+&lt;&lt;MMLFORM.dotabb&gt;&gt;=
+&quot;MMLFORM&quot; [color=&quot;#FF4488&quot;,href=&quot;bookvol10.4.pdf#nameddest=MMLFORM&quot;]
+&quot;FSAGG&quot; [color=&quot;#4488FF&quot;,href=&quot;bookvol10.2.pdf#nameddest=FSAGG&quot;]
+&quot;MMLFORM&quot; -&gt; &quot;FSAGG&quot;
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain MATRIX Matrix}
 &lt;&lt;Matrix.input&gt;&gt;=
 )set break resume
@@ -99187,6 +101027,169 @@ in addition we need to add a line defining [[PI2]] in [[formatPlex]]:
 &lt;&lt;define PI2&gt;&gt;=
         op = &quot;PI2&quot;     =&gt; &quot;\prod&quot;
 @
+&lt;&lt;TexFormat.input&gt;&gt;=
+)set break resume
+)sys rm -f TexFormat.output
+)spool TexFormat.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 11
+(1/2)::TEX
+--R 
+--R
+--R   (1)  [&quot;$$&quot;,&quot;\frac{1}{2} &quot;,&quot;$$&quot;]
+--R                                                              Type: TexFormat
+--E 1
+
+--S 2 of 11
+(1/(x+5))::TEX
+--R 
+--R
+--R   (2)  [&quot;$$&quot;,&quot;\frac{1}{{x+5}} &quot;,&quot;$$&quot;]
+--R                                                              Type: TexFormat
+--E 2
+
+--S 3 of 11
+((x+3)/(y-5))::TEX
+--R 
+--R
+--R   (3)  [&quot;$$&quot;,&quot;\frac{{x+3}}{{y -5}} &quot;,&quot;$$&quot;]
+--R                                                              Type: TexFormat
+--E 3
+
+--S 4 of 11
+)set output fraction horizontal
+--R 
+--E 4
+
+--S 5 of 11
+(1/2)::TEX
+--R 
+--R
+--R   (4)  [&quot;$$&quot;,&quot;SLASH &quot;,&quot;\left(&quot;,&quot;{1, \: 2} &quot;,&quot;\right)&quot;,&quot;$$&quot;]
+--R                                                              Type: TexFormat
+--E 5
+
+--S 6 of 11
+(1/(x+5))::TEX
+--R 
+--R
+--R   (5)
+--R   [&quot;$$&quot;,&quot;SLASH &quot;,&quot;\left(&quot;,&quot;{1, \: {\left( x+5 &quot;,&quot;\right)}}&quot;,&quot;\right)&quot;,&quot;$$&quot;]
+--R                                                              Type: TexFormat
+--E 6
+
+--S 7 of 11
+)set output mathml on
+--R 
+--E 7
+
+--S 8 of 11
+1/2
+--R 
+--R
+--R   (6)  1/2
+--R&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; display=&quot;block&quot;&gt;
+--R&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mrow&gt;
+--R&lt;/math&gt;
+--R
+--R                                                       Type: Fraction Integer
+--E 8
+
+--S 9 of 11
+1/(x+5)
+--R 
+--R
+--R   (7)  1/(x + 5)
+--R&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; display=&quot;block&quot;&gt;
+--R&lt;mrow&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;
+--R&lt;/math&gt;
+--R
+--R                                            Type: Fraction Polynomial Integer
+--E 9
+
+--S 10 of 11
+(x+3)/(y-5)
+--R 
+--R
+--R   (8)  (x + 3)/(y - 5)
+--R&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; mathsize=&quot;big&quot; display=&quot;block&quot;&gt;
+--R&lt;mrow&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;/&lt;/mo&gt;&lt;mrow&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;mo&gt;-&lt;/mo&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;
+--R&lt;/math&gt;
+--R
+--R                                            Type: Fraction Polynomial Integer
+--E 10
+
+--S 11 of 11
+)show TexFormat
+--R 
+--R TexFormat  is a domain constructor
+--R Abbreviation for TexFormat is TEX 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.spad.pamphlet to see algebra source code for TEX 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -&gt; Boolean                coerce : OutputForm -&gt; %
+--R coerce : % -&gt; OutputForm              display : % -&gt; Void
+--R display : (%,Integer) -&gt; Void         epilogue : % -&gt; List String
+--R hash : % -&gt; SingleInteger             latex : % -&gt; String
+--R new : () -&gt; %                         prologue : % -&gt; List String
+--R tex : % -&gt; List String                ?~=? : (%,%) -&gt; Boolean
+--R convert : (OutputForm,Integer,OutputForm) -&gt; %
+--R convert : (OutputForm,Integer) -&gt; %
+--R setEpilogue! : (%,List String) -&gt; List String
+--R setPrologue! : (%,List String) -&gt; List String
+--R setTex! : (%,List String) -&gt; List String
+--R
+--E 11
+
+)spool
+)lisp (bye)
+@
+&lt;&lt;TexFormat.help&gt;&gt;=
+====================================================================
+TexFormat examples
+====================================================================
+
+You can ask Axiom to show latex output. In particular, this can be
+used for complex output. 
+
+(1/2)::TEX
+
+     [&quot;$$&quot;,&quot;\frac{1}{2} &quot;,&quot;$$&quot;]
+
+(1/(x+5))::TEX
+ 
+     [&quot;$$&quot;,&quot;\frac{1}{{x+5}} &quot;,&quot;$$&quot;]
+
+((x+3)/(y-5))::TEX
+
+     [&quot;$$&quot;,&quot;\frac{{x+3}}{{y -5}} &quot;,&quot;$$&quot;]
+
+
+We can change the fraction display so it is horizontal:
+
+)set output fraction horizontal
+ 
+(1/2)::TEX
+
+     [&quot;$$&quot;,&quot;SLASH &quot;,&quot;\left(&quot;,&quot;{1, \: 2} &quot;,&quot;\right)&quot;,&quot;$$&quot;]
+
+(1/(x+5))::TEX
+
+     [&quot;$$&quot;,&quot;SLASH &quot;,&quot;\left(&quot;,&quot;{1, \: {x+5}} &quot;,&quot;\right)&quot;,&quot;$$&quot;]
+
+((x+3)/(y-5))::TEX
+
+     [&quot;$$&quot;,&quot;SLASH &quot;,&quot;\left(&quot;,&quot;{{x+3}, \: {y -5}} &quot;,&quot;\right)&quot;,&quot;$$&quot;]
+
+
+See Also:
+o )show TexFormat
+
+@
 \pagehead{TexFormat}{TEX}
 \pagepic{ps/v103texformat.ps}{TEX}{1.00}
 
@@ -99286,11 +101289,13 @@ TexFormat(): public == private where
     prologue: $ -&gt; L S
       ++ prologue(t) extracts the prologue section of a TeX form t.
     setEpilogue!: ($, L S) -&gt; L S
-      ++ setEpilogue!(t,strings) sets the epilogue section of a TeX form t to strings.
+      ++ setEpilogue!(t,strings) sets the epilogue section of a TeX form t 
+      ++ to strings.
     setTex!:  ($, L S) -&gt; L S
       ++ setTex!(t,strings) sets the TeX section of a TeX form t to strings.
     setPrologue!: ($, L S) -&gt; L S
-      ++ setPrologue!(t,strings) sets the prologue section of a TeX form t to strings.
+      ++ setPrologue!(t,strings) sets the prologue section of a TeX form t 
+      ++ to strings.
 
   private == add
     import OutputForm
@@ -117310,6 +119315,7 @@ Note that this code is not included in the generated catdef.spad file.
 &lt;&lt;domain MINT MachineInteger&gt;&gt;
 &lt;&lt;domain MAGMA Magma&gt;&gt;
 &lt;&lt;domain MKCHSET MakeCachableSet&gt;&gt;
+&lt;&lt;domain MMLFORM MathMLFormat&gt;&gt;
 &lt;&lt;domain MATRIX Matrix&gt;&gt;
 &lt;&lt;domain MODMON ModMonic&gt;&gt;
 &lt;&lt;domain MODMONOM ModuleMonomial&gt;&gt;</diff>
      <filename>books/bookvol10.3.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -17,8 +17,8 @@
 %%
 %% pagepic adds an image and an index entry
 %%
-\newcommand{\pagepic}[2]{% e.g. \pagepic{pathandfile}{abb}
-\includegraphics{#1}%
+\newcommand{\pagepic}[3]{% e.g. \pagepic{pathandfile}{abb}{scale}
+\includegraphics[scale=#3]{#1}\\%
 \index{images!#2}}
 %%
 %% pageto is a forward link to a referenced page
@@ -53884,8 +53884,8 @@ LinearPolynomialEquationByFractions(R:PolynomialFactorizationExplicit): with
     r case &quot;failed&quot; =&gt; &quot;failed&quot;
     monomial(c,degree pF) + r
   solveLinearPolynomialEquationByFractions(lp,pp) ==
-    lpF:List SupF:=[map(#1@R::F,u) for u in lp]
-    pF:SupF:=map(#1@R::F,pp)
+    lpF:List SupF:=[map((x:R):F +-&gt; x@R::F,u) for u in lp]
+    pF:SupF:=map((x:R):F +-&gt; x::F,pp)
     ans:= solveLinearPolynomialEquation(lpF,pF)$F
     ans case &quot;failed&quot; =&gt; &quot;failed&quot;
     [(vv:= pullback v;
@@ -54673,19 +54673,19 @@ LiouvillianFunction(R, F): Exports == Implementation where
       is?(op, &quot;dilog&quot;::Symbol)      =&gt; opli2
       error &quot;Not a Liouvillian operator&quot;
 
-    evaluate(opei,   iei)$BasicOperatorFunctions1(F)
-    evaluate(opli,   ili)
-    evaluate(opsi,   isi)
-    evaluate(opci,   ici)
-    evaluate(operf,  ierf)
-    evaluate(opli2,  ili2)
-    evaluate(opint,  iint)
-    derivative(opsi, sin(#1) / #1)
-    derivative(opci, cos(#1) / #1)
-    derivative(opei, exp(#1) / #1)
-    derivative(opli, inv log(#1))
-    derivative(operf, 2 * exp(-(#1**2)) / sqrt(pi()))
-    derivative(opli2, log(#1) / (1 - #1))
+    evaluate(opei,    iei)$BasicOperatorFunctions1(F)
+    evaluate(opli,    ili)
+    evaluate(opsi,    isi)
+    evaluate(opci,    ici)
+    evaluate(operf,   ierf)
+    evaluate(opli2,   ili2)
+    evaluate(opint,   iint)
+    derivative(opsi,  (z1:F):F +-&gt; sin(z1) / z1)
+    derivative(opci,  (z1:F):F +-&gt; cos(z1) / z1)
+    derivative(opei,  (z1:F):F +-&gt; exp(z1) / z1)
+    derivative(opli,  (z1:F):F +-&gt; inv log(z1))
+    derivative(operf, (z1:F):F +-&gt; 2 * exp(-(z1**2)) / sqrt(pi()))
+    derivative(opli2, (z1:F):F +-&gt; log(z1) / (1 - z1))
     setProperty(opint,SPECIALEQUAL,eqint@((K,K) -&gt; Boolean) pretend None)
     setProperty(opint,SPECIALDIFF,dvint@((List F,SE) -&gt; F) pretend None)
     setProperty(opdint,SPECIALDIFF,dvdint@((List F,SE)-&gt;F) pretend None)
@@ -54699,7 +54699,10 @@ LiouvillianFunction(R, F): Exports == Implementation where
 
       pint l  == convert concat(convert(&quot;integral&quot;::SE)@INP, l)
       inint l == 
-        r2:= convert([convert(&quot;::&quot;::SE)@INP,convert(third l)@INP,convert(&quot;Symbol&quot;::SE)@INP]@List INP)@INP
+        r2:= convert(
+              [convert(&quot;::&quot;::SE)@INP,
+               convert(third l)@INP,
+               convert(&quot;Symbol&quot;::SE)@INP]@List INP)@INP
         pint [convert(integrand l)@INP, r2]
 
       indint l ==
@@ -54707,8 +54710,8 @@ LiouvillianFunction(R, F): Exports == Implementation where
               convert concat(convert(&quot;=&quot;::SE)@INP,
                             [convert(third l)@INP,
                              convert concat(convert(&quot;SEGMENT&quot;::SE)@INP,
-                                            [convert(third rest l)@INP,
-                                             convert(third rest rest l)@INP])])]
+                                           [convert(third rest l)@INP,
+                                            convert(third rest rest l)@INP])])]
 
       setProperty(opint, SPECIALINPUT, inint@(List F -&gt; INP) pretend None)
       setProperty(opdint, SPECIALINPUT, indint@(List F -&gt; INP) pretend None)
@@ -54917,10 +54920,10 @@ ListToMap(A:SetCategory, B:Type): Exports == Implementation where
       ++ The value returned is then obtained by applying f to argument a.
 
   Implementation ==&gt; add
-    match(la, lb)             == match(la, lb, #1)
+    match(la, lb)             == (z1:A):B +-&gt; match(la, lb, z1)
     match(la:LA, lb:LB, a:A)  == lb.position(a, la)
-    match(la:LA, lb:LB, b:B)  == match(la, lb, #1, b)
-    match(la:LA, lb:LB, f:AB) == match(la, lb, #1, f)
+    match(la:LA, lb:LB, b:B)  == (z1:A):B +-&gt; match(la, lb, z1, b)
+    match(la:LA, lb:LB, f:AB) == (z1:A):B +-&gt; match(la, lb, z1, f)
 
     match(la:LA, lb:LB, a:A, b:B) ==
       (p := position(a, la)) &lt; minIndex(la) =&gt; b
@@ -54979,7 +54982,7 @@ MakeBinaryCompiledFunction(S, D1, D2, I):Exports == Implementation where
     func: (SY, D1, D2) -&gt; I
 
     func(name, x, y)   == FUNCALL(name, x, y, NIL$Lisp)$Lisp
-    binaryFunction name == func(name, #1, #2)
+    binaryFunction name == (d1:D1,d2:D2):I +-&gt; func(name, d1, d2)
 
     compiledFunction(e, x, y) ==
       t := [devaluate(D1)$Lisp, devaluate(D2)$Lisp]$List(InputForm)
@@ -55455,7 +55458,7 @@ MakeUnaryCompiledFunction(S, D, I): Exports == Implementation where
     func: (SY, D) -&gt; I
 
     func(name, x)       == FUNCALL(name, x, NIL$Lisp)$Lisp
-    unaryFunction name  == func(name, #1)
+    unaryFunction name  == (d1:D):I +-&gt; func(name, d1)
 
     compiledFunction(e:S, x:SY) ==
       t := [convert([devaluate(D)$Lisp]$List(InputForm))
@@ -56091,9 +56094,9 @@ MappingPackage1(A:SetCategory): MPcat == MPdef where
  
         -- Composition and recursion.
         id a        == a
-        g**n        == iter(g, n, #1)
+        g**n        == (a1:A):A +-&gt; iter(g, n, a1)
  
-        recur fnaa  == recur(fnaa, #1, #2)
+        recur fnaa  == (n1:NNI,a2:A):A +-&gt; recur(fnaa, n1, a2)
 
 @
 &lt;&lt;MAPPKG1.dotabb&gt;&gt;=
@@ -56566,11 +56569,10 @@ MappingPackage2(A:SetCategory, C:SetCategory): MPcat == MPdef where
         fac:  A -&gt; C
         faac: (A,A)-&gt;C
  
-        const c     == arg2(#1, c)
-        curry(fac, a)  == fac a
-        constant f0c      == arg2(#1, f0c())
- 
-        diag  faac  == faac(#1, #1)
+        const c       == (a1:A):C +-&gt; arg2(a1, c)
+        curry(fac, a) == fac a
+        constant f0c  == (a1:A):C +-&gt; arg2(a1, f0c())
+        diag  faac    == (a1:A):C +-&gt; faac(a1, a1)
 
 @
 &lt;&lt;MAPPKG2.dotabb&gt;&gt;=
@@ -57058,17 +57060,18 @@ MappingPackage3(A:SetCategory, B:SetCategory, C:SetCategory):_
         faac: (A,A)-&gt;C
  
         -- Fix left and right arguments as constants.
-        curryRight(fabc,b) == fabc(#1,b)
-        curryLeft(fabc,a) == fabc(a, #1)
+        curryRight(fabc,b) == (a:A):C +-&gt; fabc(a,b)
+        curryLeft(fabc,a)  == (b:B):C +-&gt; fabc(a,b)
  
         -- Add left and right arguments which are ignored.
-        constantRight fac     == fac #1
-        constantLeft fbc     == fbc #2
+        constantRight fac == (a:A, b:B):C +-&gt; fac a
+        constantLeft fbc  == (a:A, b:B):C +-&gt; fbc b
  
         -- Combinators to rearrange arguments.
-        twist fabc  == fabc(#2, #1)
+        twist fabc == (b:B, a:A):C +-&gt; fabc(a,b)
+
         -- Functional composition
-        fbc*fab == comp(fbc,fab,#1)
+        fbc*fab == (a:A):C +-&gt; comp(fbc,fab,a)
 
 @
 &lt;&lt;MAPPKG3.dotabb&gt;&gt;=
@@ -57380,20 +57383,20 @@ MappingPackage4(A:SetCategory, B:Ring):
 
     funcAdd(g:fab,h:fab,x:A):B == ((g x) + (h x))$B
 
-    (a:fab)+(b:fab) == funcAdd(a,b,#1)
+    (a:fab)+(b:fab) == c +-&gt; funcAdd(a,b,c)
 
     funcSub(g:fab,h:fab,x:A):B == ((g x) - (h x))$B
 
-    (a:fab)-(b:fab) == funcSub(a,b,#1)
+    (a:fab)-(b:fab) == c +-&gt; funcSub(a,b,c)
 
     funcMul(g:fab,h:fab,x:A):B == ((g x) * (h x))$B
 
-    (a:fab)*(b:fab) == funcMul(a,b,#1)
+    (a:fab)*(b:fab) == c +-&gt; funcMul(a,b,c)
 
     funcDiv(g:faei,h:faei,x:A):Expression(Integer)
            == ((g x) / (h x))$Expression(Integer)
 
-    (a:faei)/(b:faei) == funcDiv(a,b,#1)
+    (a:faei)/(b:faei) == c +-&gt; funcDiv(a,b,c)
 
 @
 &lt;&lt;MAPPKG4.dotabb&gt;&gt;=
@@ -57405,1438 +57408,6 @@ MappingPackage4(A:SetCategory, B:Ring):
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{package MMLFORM MathMLFormat}
-
-Both this code and documentation are still under development and
-I don't pretend they are anywhere close to perfect or even finished.
-However the code does work and I hope it might be useful to somebody
-both for it's ability to output MathML from Axiom and as an example
-of how to write a new output form.
-
-\subsection{Introduction to Mathematical Markup Language}
-
-MathML exists in two forms: presentation and content.
-At this time (2007-02-11) the package only has a presentation
-package.  A content package is in the
-works however it is more difficult.  Unfortunately Axiom does
-not make its semantics easily available.  The \spadtype{OutputForm}
-domain mediates between the individual Axiom domains and the
-user visible output but \spadtype{OutputForm} does not provide full
-semantic information.  From my currently incomplete understanding
-of Axiom it appears that remedying this would entail going back
-to the individual domains and rewriting a lot of code.
-However some semantics are conveyed directly by \spadtype{OutputForm} and other
-things can be deduced from \spadtype{OutputForm} or from the original
-user command.
-
-\subsection{Displaying MathML}
-
-The MathML string produced by &quot;)set output mathml on&quot; can be pasted
-directly into an appropriate xhtml page and then viewed in Firefox
-or some other MathML aware browser. The boiler plate code needed for
-a test page, testmathml.xml, is:
-
-\begin{verbatim}
-&lt;?xml version=&quot;1.0&quot; ?&gt;
-
-&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN&quot;
-                      &quot;http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd&quot; [
-&lt;!ENTITY mathml &quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
-]&gt;
-
-&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
-      xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; &gt;
-
-
-  &lt;head&gt;
-    &lt;title&gt;MathML Test &lt;/title&gt;
-  &lt;/head&gt;
-
-  &lt;body&gt;
-
-  &lt;/body&gt;
-&lt;/html&gt;
-\end{verbatim}
-
-
-Paste the MathML string into the body element and it should display
-nicely in Firefox.
-
-\subsection{Test Cases}
-
-Here's a list of test cases that currently format correctly:
-
-1. (x+y)**2
-
-2. integrate(x**x,x)
-
-3. integral(x**x,x)
-
-4. (5 + sqrt 63 + sqrt 847)**(1/3)
-
-5. set $[$1,2,3$]$
-
-6. multiset $[$x rem 5 for x in primes(2,1000)$]$
-
-7. series(sin(a*x),x=0)
-
-8. matrix $[$ $[$x**i + y**j for i in 1..10$]$ for j in 1..10$]$
-
-9. y := operator 'y
-   a. D(y(x,z),$[$x,x,z,x$]$)
-   b. D(y x,x,2)
-
-10. x := series 'x
-    a. sin(1+x)
-
-11. series(1/log(y),y=1)
-
-12. y:UTS(FLOAT,'z,0) := exp(z)
-
-13. a. c := continuedFraction(314159/100000)
-    b. c := continuedFraction(314159/100000)
-
-The \spadtype{TexFormat} domain has the capability to format an object with
-subscripts, superscripts, presubscripts and presuperscripts however
-I don't know of any Axiom command that produces such an object. In
-fact at present I see the case of &quot;SUPERSUB&quot; being used for putting
-primes in the superscript position to denote ordinary differentiation.
-I also only see the &quot;SUB&quot; case being used to denote partial
-derivatives.
-
-\subsection{)set output mathml on}
-
-
-Making mathml appear as output during a normal Axiom session
-by invoking &quot;)set output mathml on&quot; proved to be a bit tedious
-and seems to be undocumented.  I document my experience here
-in case it proves useful to somebody else trying to get a new
-output format from Axiom.
-
-In \spadtype{MathMLFormat} the functions 
-\spadfun{coerce(expr : OutputForm) : String} and
-\spadfun{display(s : String) : Void} provide the desired mathml output.
-Note that this package was constructed by close examination of
-Robert Sutor's \spadtype{TexFormat} domain and much remains from that source.
-To have mathml displayed as output we need to get Axiom to 
-call display(coerce(expr)) at the appropriate place.  Here's what
-I did to get that to happen. Note that my starting point here was
-an attempt by Andrey Grozin to do the same.  To figure things out
-I searched through files for &quot;tex&quot; to see what was done for the
-\spadtype{TexFormat} domain, and used grep to find which files had mention of
-\spadtype{TexFormat}.
-
-\subsection{File src/interp/setvars.boot.pamphlet}
-
-
-  Create an output mathml section by analogy to the tex section.
-Remember to add the code chunk &quot;outputmathmlCode&quot; at the end.
-
-setvars.boot is a bootstrap file which means that it has to be
-precompiled into lisp code and then that code has to be inserted
-back into setvars.boot. To do this extract the boot code by running
-&quot;notangle&quot; on it.  I did this from the &quot;tmp&quot; directory.
-From inside axiom run &quot;)lisp (boottran::boottocl &quot;tmp/setvars.boot&quot;)
-which put &quot;setvars.clisp&quot; into &quot;int/interp/setvars.clisp&quot;.  Then
-replace the lisp in &quot;setvars.boot.pamphlet&quot; with that in the newly
-generated &quot;setvars.clisp&quot;.
-
-The relevant code chunks appearing in &quot;setvars.boot.pamphlet&quot; are:
-\begin{verbatim}
-    outputmathmlCode
-    setOutputMathml
-    describeSetOutputMathml
-\end{verbatim}
-and the relevant variables are:
-\begin{verbatim}
-    setOutputMathml
-    $mathmlOutputStream
-    $mathmlOutputFile
-    $mathmlFormat
-    describeSetOutputMathml
-\end{verbatim}
-
-\subsection{File setvart.boot.pamphlet}
-
-
-Create an output mathml section in &quot;setvart.boot.pamphlet&quot; again
-patterned after the tex section.  I changed the default file 
-extension from &quot;.stex&quot; to &quot;.smml&quot;.
-
-To the &quot;section{output}&quot; table I added the line
-\begin{verbatim}
-   mathml		   created output in MathML style	Off:CONSOLE
-\end{verbatim}
-Added the code chunk &quot;outputmathml&quot; to the code chunk &quot;output&quot;
-in &quot;section{output}&quot;.
-
-Relevant code chunks:
-\begin{verbatim}
-	 outputmathml
-\end{verbatim}
-Relevant variables:
-\begin{verbatim}
-	 setOutputMathml
-	 $mathmlFormat
-	 $mathmlOutputFile
-\end{verbatim}
-
-Note when copying the tex stuff I changed occurrences of &quot;tex&quot;
-to &quot;mathml&quot;, &quot;Tex&quot; to &quot;Mathml&quot; and &quot;TeX&quot; to &quot;MathML&quot;.
-
-\subsection{File src/algebra/Makefile.pamphlet}
-
-
-The file &quot;src/algebra/tex.spad.pamphlet&quot; contains
-the domain \spadtype{TexFormat} (TEX) and the package 
-\spadtype{TexFormat1} (TEX1).
-However the sole function of \spadtype{TexFormat1} is to \spadfun{coerce}
-objects from a domain into \spadtype{OutputForm} and then apply 
-\spadtype{TexFormat}
-to them.  It is to save programmers the trouble of doing
-the coercion themselves from inside spad code.  It does
-not appear to be used for the main purpose of delivering
-Axiom output in TeX format.  In order to keep the mathml
-package as simple as possible, and because I didn't see much
-use for this, I didn't copy the \spadtype{TexFormat1} package.  So
-no analog of the TEX1 entries in &quot;Makefile.pamphlet&quot; were
-needed.  One curiosity I don't understand is why TEX1
-appears in layer 4 when it seems to depend on TEX which
-appears in layer 14.
-
-Initially I added &quot;\${OUT}/MMLFORM.o&quot; to layer 14 and
-&quot;mathml.spad.pamphlet&quot; to completed spad files in layer 14.
-When trying to compile the build failed at MMLFORM.  It left
-&quot;MMLFORM.erlib&quot; in &quot;int/algebra&quot; instead of &quot;MMLFORM.NRLIB&quot;
-which confused me at first because mathml.spad compiled
-under a running axiom.  By examining the file &quot;obj/tmp/trace&quot;
-I saw that a new dependency had been introduced, compared
-to TexFormat, with the function eltName depending on the
-domain FSAGG in layer 16.  So the lines had to be moved 
-from layer 14 to layer 17.
-
-Added appropriate lines to &quot;SPADFILES&quot; and &quot;DOCFILES&quot;.
-
-\subsection{File src/algebra/exposed.lsp.pamphlet}
-
-Add the line &quot;($\vert{}$MathMLFormat$\vert$ . MMLFORM)&quot;
-
-\subsection{File src/algebra/Lattice.pamphlet}
-
-I don't see that this file is used anywhere but I made
-the appropriate changes anyway by searching for &quot;TEX&quot; and
-mimicing everything for MMLFORM.
-
-\subsection{File src/doc/axiom.bib.pamphlet}
-
-Added mathml.spad subsection to &quot;src/doc/axiom.bib.pamphlet&quot;.
-
-\subsection{File interp/i-output.boot.pamphlet}
-
-
-This is where the \spadfun{coerce} and \spadfun{display} functions 
-from MathMLFormat
-actually get called.  The following was added:
-
-\begin{verbatim}
-mathmlFormat expr ==
-  mml := '(MathMLFormat)
-  mmlrep := '(String)
-  formatFn := getFunctionFromDomain(&quot;coerce&quot;,mml,[$OutputForm])
-  displayFn := getFunctionFromDomain(&quot;display&quot;,mml,[mmlrep])
-  SPADCALL(SPADCALL(expr,formatFn),displayFn)
-  TERPRI $mathmlOutputStream
-  FORCE_-OUTPUT $mathmlOutputStream
-  NIL
-\end{verbatim}
-
-Note that compared to the texFormat function there are a couple
-of differences.  Since \spadtype{MathMLFormat} is currently a package rather
-than a domain there is the &quot;mmlrep&quot; variable whereas in texFormat
-the argument of the &quot;display&quot; function is an instance of the 
-domain.  Also the \spadfun{coerce} function here only has one argument,
-namely &quot;\$OutputForm&quot;.
-
-Also for the function &quot;output(expr,domain)&quot; add lines for mathml,
-e.g. &quot;if \$mathmlFormat then mathmlFormat expr&quot;.
-
-After these changes Axiom compiled with mathml enabled under
-)set output.
-
-\subsection{Public Declarations}
-
-The declarations
-\begin{verbatim}
-  E      ==&gt; OutputForm
-  I      ==&gt; Integer
-  L      ==&gt; List
-  S      ==&gt; String
-  US     ==&gt; UniversalSegment(Integer)
-\end{verbatim}
-provide abbreviations for domains used heavily in the code.
-The publicly exposed functions are:
-
-    \spadfun{coerce: E -$&gt;$ S}  This function is the main one for converting
-an expression in domain OutputForm into a MathML string.
-
-    \spadfun{coerceS: E -$&gt;$ S} This function is for use from the command line.
-It converts an OutputForm expression into a MathML string and does
-some formatting so that the output is not one long line.  If you take
-the output from this function, stick it in an emacs buffer in
-nxml-mode and then indent according to mode, you'll get something that's
-nicer to look at than what comes from coerce. Note that coerceS returns
-the same value as coerce but invokes a display function as well so that
-the result will be printed twice in different formats.  The need for this
-is that the output from coerce is automatically formatted with line breaks
-by Axiom's output routine that are not in the right place.
-
-    \spadfun{coerceL: E -$&gt;$ S}  Similar to coerceS except that the displayed result
-is the MathML string in one long line.  These functions can be used,
-for instance, to get the MathML for the previous result by typing
-coerceL(%)\$MMLFORM.
-
-    \spadfun{exprex: E -$&gt;$ S}  Converts \spadtype{OutputForm} to 
-\spadtype{String} with
-the structure preserved with braces.  This is useful in developing this
-package. Actually this is not quite accurate.  The function
-\spadfun{precondition} is first applied to the \spadtype{OutputForm}
-expression before \spadfun{exprex}.   Raw \spadtype{OutputForm} and the nature
-of the \spadfun{precondition} function is still obscure to me at the time of
-this writing (2007-02-14), however I probably need to understand it to make
-sure I'm not missing any semantics.  The spad function \spadfun{precondition}
-is just a wrapper for the lisp function outputTran\$Lisp, which I guess is
-compiled from boot.
-
-    \spadfun{display: S -$&gt;$ Void}  This one prints the string returned by coerce as one
-long line, adding &quot;math&quot; tags: $&lt;$math ...$&gt;$ ... $&lt;$/math$&gt;$.  Thus the output
-from this can be stuck directly into an appropriate html/xhtml page and will
-be displayed nicely by a MathML aware browser.
-
-    \spadfun{displayF: S -$&gt;$ Void}  This function doesn't exist 
-yet but it would be nice
-to have a humanly readable formatted output as well.  The basics do exist in
-the coerceS function however the formatting still needs some work to be 
-really good.
-
-&lt;&lt;public declarations&gt;&gt;=
-)abbrev domain MMLFORM MathMLFormat
-++ Author: Arthur C. Ralfs
-++ Date: January 2007
-++ This package is based on the TeXFormat domain by Robert S. Sutor
-++ without which I wouldn't have known where to start.
-++ Basic Operations: coerce, coerceS, coerceL, exprex, display
-++ Description:
-++    \spadtype{MathMLFormat} provides a coercion from \spadtype{OutputForm}
-++    to MathML format.
-
-MathMLFormat(): public == private where
-  E      ==&gt; OutputForm
-  I      ==&gt; Integer
-  L      ==&gt; List
-  S      ==&gt; String
-  US     ==&gt; UniversalSegment(Integer)
-
-  public == SetCategory with
-    coerce:    E -&gt; S
-      ++ coerceS(o) changes o in the standard output format to MathML
-      ++ format.
-    coerceS:   E -&gt; S
-      ++ coerceS(o) changes o in the standard output format to MathML
-      ++ format and displays formatted result.
-    coerceL:   E -&gt; S
-      ++ coerceS(o) changes o in the standard output format to MathML
-      ++ format and displays result as one long string.
-    exprex:    E -&gt; S
-      ++ coverts \spadtype{OutputForm} to \spadtype{String} with the
-      ++ structure preserved with braces.  Actually this is not quite
-      ++ accurate.  The function \spadfun{precondition} is first 
-      ++ applied to the
-      ++ \spadtype{OutputForm} expression before \spadfun{exprex}.  
-      ++ The raw \spadtype{OutputForm} and
-      ++ the nature of the \spadfun{precondition} function is 
-      ++ still obscure to me
-      ++ at the time of this writing (2007-02-14).
-    display:   S -&gt; Void
-      ++ prints the string returned by coerce, adding &lt;math ...&gt; tags.
-
-@
-\subsection{Private Constant Declarations}
-&lt;&lt;private constant declarations&gt;&gt;=
-  private == add
-    import OutputForm
-    import Character
-    import Integer
-    import List OutputForm
-    import List String
-
-    -- local variable declarations and definitions
-
-    expr: E
-    prec,opPrec: I
-    str:  S
-    blank         : S := &quot; \  &quot;
-
-    maxPrec       : I   := 1000000
-    minPrec       : I   := 0
-
-    unaryOps      : L S := [&quot;-&quot;,&quot;^&quot;]$(L S)
-    unaryPrecs    : L I := [700,260]$(L I)
-
-    -- the precedence of / in the following is relatively low because
-    -- the bar obviates the need for parentheses.
-    binaryOps     : L S := [&quot;+-&gt;&quot;,&quot;|&quot;,&quot;**&quot;,&quot;/&quot;,&quot;&lt;&quot;,&quot;&gt;&quot;,&quot;=&quot;,&quot;OVER&quot;]$(L S)
-    binaryPrecs   : L I := [0,0,900, 700,400,400,400,   700]$(L I)
-
-    naryOps       : L S := [&quot;-&quot;,&quot;+&quot;,&quot;*&quot;,blank,&quot;,&quot;,&quot;;&quot;,&quot; &quot;,&quot;ROW&quot;,&quot;&quot;,
-       &quot; \cr &quot;,&quot;&amp;&quot;,&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;]$(L S)
-    naryPrecs     : L I := [700,700,800,  800,110,110,  0,    0, 0,
-             0,  0,   0]$(L I)
-    naryNGOps     : L S := [&quot;ROW&quot;,&quot;&amp;&quot;]$(L S)
-
-    plexOps       : L S := [&quot;SIGMA&quot;,&quot;SIGMA2&quot;,&quot;PI&quot;,&quot;PI2&quot;,&quot;INTSIGN&quot;,&quot;INDEFINTEGRAL&quot;]$(L S)
-    plexPrecs     : L I := [    700, 800,     700, 800 , 700,      700]$(L I)
-
-    specialOps    : L S := [&quot;MATRIX&quot;,&quot;BRACKET&quot;,&quot;BRACE&quot;,&quot;CONCATB&quot;,&quot;VCONCAT&quot;,  _
-                            &quot;AGGLST&quot;,&quot;CONCAT&quot;,&quot;OVERBAR&quot;,&quot;ROOT&quot;,&quot;SUB&quot;,&quot;TAG&quot;, _
-                            &quot;SUPERSUB&quot;,&quot;ZAG&quot;,&quot;AGGSET&quot;,&quot;SC&quot;,&quot;PAREN&quot;, _
-                            &quot;SEGMENT&quot;,&quot;QUOTE&quot;,&quot;theMap&quot; ]
-
-    -- the next two lists provide translations for some strings for
-    -- which MML provides special macros.
-
-    specialStrings : L S :=
-      [&quot;cos&quot;, &quot;cot&quot;, &quot;csc&quot;, &quot;log&quot;, &quot;sec&quot;, &quot;sin&quot;, &quot;tan&quot;,
-        &quot;cosh&quot;, &quot;coth&quot;, &quot;csch&quot;, &quot;sech&quot;, &quot;sinh&quot;, &quot;tanh&quot;,
-          &quot;acos&quot;,&quot;asin&quot;,&quot;atan&quot;,&quot;erf&quot;,&quot;...&quot;,&quot;$&quot;,&quot;infinity&quot;]
-    specialStringsInMML : L S :=
-      [&quot;&lt;mo&gt;cos&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;cot&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;csc&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;log&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;sec&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;sin&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;tan&lt;/mo&gt;&quot;,
-        &quot;&lt;mo&gt;cosh&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;coth&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;csch&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;sech&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;sinh&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;tanh&lt;/mo&gt;&quot;,
-          &quot;&lt;mo&gt;arccos&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;arcsin&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;arctan&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;erf&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;&amp;#x2026;&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;$&lt;/mo&gt;&quot;,&quot;&lt;mo&gt;&amp;#x221E;&lt;/mo&gt;&quot;]
-
-@
-\subsection{Private Function Declarations}
-
-These are the local functions:
-
-    addBraces:S -$&gt;$ S
-
-    addBrackets:S -$&gt;$ S
-
-    atomize:E -$&gt;$ L E
-
-    displayElt:S -$&gt;$ Void
-      function for recursively displaying mathml nicely formatted
-
-    eltLimit:(S,I,S) -$&gt;$ I
-      demarcates end postion of mathml element with name:S starting at
-      position i:I in mathml string s:S and returns end of end tag as
-      i:I position in mathml string, i.e. find start and end of
-      substring:  $&lt;$name ...$&gt;$...$&lt;$/name$&gt;$
-
-    eltName:(I,S) -$&gt;$ S
-      find name of mathml element starting at position i:I in string s:S
-
-    group:S -$&gt;$ S
-
-    formatBinary:(S,L E, I) -$&gt;$ S
-
-    formatFunction:(S,L E, I) -$&gt;$ S
-
-    formatMatrix:L E -$&gt;$ S
-
-    formatNary:(S,L E, I) -$&gt;$ S
-
-    formatNaryNoGroup:(S,L E, I) -$&gt;$ S
-
-    formatNullary:S -$&gt;$ S
-
-    formatPlex:(S,L E, I) -$&gt;$ S
-
-    formatSpecial:(S,L E, I) -$&gt;$ S
-
-    formatUnary:(S,  E, I) -$&gt;$ S
-
-    formatMml:(E,I) -$&gt;$ S
-
-    newWithNum:I -$&gt;$ \$
-      this is a relic from tex.spad and is not used here so far.  I'll
-      probably remove it.
-
-    parenthesize:S -$&gt;$ S
-
-    precondition:E -$&gt;$ E
-      this function is applied to the OutputForm expression before
-      doing anything else.
-
-    postcondition:S -$&gt;$ S
-      this function is applied after all other OutputForm -$&gt;$ MathML
-      transformations.  In the TexFormat domain the ungroup function
-      first peels off the outermost set of braces however I have 
-      replaced braces with $&lt;$mrow$&gt;$s here and sometimes the outermost set
-      of $&lt;$mrow$&gt;$s is necessary to get proper display in Firefox.  
-      For instance with getting the correct size of brackets on a matrix 
-      the whole expression needs to be enclosed in a mrow element.  
-      It also checks for $+-$ and removes the $+$.
-
-    stringify:E -$&gt;$ S
-
-    tagEnd:(S,I,S) -$&gt;$ I
-      finds closing &quot;$&gt;$&quot; of start or end tag for mathML element for formatting
-      MathML string for human readability.  No analog in TexFormat.
-
-    ungroup:S -$&gt;$ S
-
-&lt;&lt;private function declarations&gt;&gt;=
-    -- local function signatures
-
-    addBraces:      S -&gt; S
-    addBrackets:    S -&gt; S
-    atomize:        E -&gt; L E
-    displayElt:     S -&gt; Void
-      ++ function for recursively displaying mathml nicely formatted
-    eltLimit:       (S,I,S) -&gt; I
-      ++ demarcates end postion of mathml element with name:S starting at
-      ++ position i:I in mathml string s:S and returns end of end tag as
-      ++  i:I position in mathml string, i.e. find start and end of
-      ++  substring:  &lt;name ...&gt;...&lt;/name&gt;
-    eltName:        (I,S) -&gt; S
-      ++ find name of mathml element starting at position i:I in string s:S
-    group:          S -&gt; S
-    formatBinary:   (S,L E, I) -&gt; S
-    formatFunction: (S,L E, I) -&gt; S
-    formatIntSign:  (L E, I) -&gt; S
-    formatMatrix:   L E -&gt; S
-    formatNary:     (S,L E, I) -&gt; S
-    formatNaryNoGroup: (S,L E, I) -&gt; S
-    formatNullary:  S -&gt; S
-    formatPlex:     (S,L E, I) -&gt; S
-    formatSpecial:  (S,L E, I) -&gt; S
-    formatSub:      (E, L E, I) -&gt; S
-    formatSuperSub: (E, L E, I) -&gt; S
-    formatSuperSub1: (E, L E, I) -&gt; S
-    formatUnary:    (S,  E, I) -&gt; S
-    formatMml:      (E,I) -&gt; S
-    formatZag:      L E -&gt; S
-    formatZag1:     L E -&gt; S
-    newWithNum:     I -&gt; $
-    parenthesize:   S -&gt; S
-    precondition:   E -&gt; E
-    postcondition:  S -&gt; S
-    stringify:      E -&gt; S
-    tagEnd:         (S,I,S) -&gt; I
-      ++  finds closing &quot;&gt;&quot; of start or end tag for mathML element
-    ungroup:        S -&gt; S
-
-@
-\subsection{Public Function Definitions}
-
-Note that I use the function sayTeX\$Lisp much as I would printf in a
-C program.  I've noticed in grepping the code that there are other &quot;say&quot;
-functions, sayBrightly and sayMessage for instance, but I have no idea
-what the difference is between them at this point.  sayTeX\$Lisp does the
-job so for the time being I'll use that until I learn more.
-
-The functions coerceS and coerceL should probably be changed to display
-functions, {\it i.e.}\/ \spadfun{displayS} and \spadfun{display L}, 
-returning Void.  I really only need the one coerce function.
-
-&lt;&lt;public function definitions&gt;&gt;=
-    -- public function definitions
-
-    coerce(expr : E): S ==
-      s : S := postcondition formatMml(precondition expr, minPrec)
-      s
-
-    coerceS(expr : E): S ==
-      s : S := postcondition formatMml(precondition expr, minPrec)
-      sayTeX$Lisp &quot;&lt;math xmlns=_&quot;http://www.w3.org/1998/Math/MathML_&quot; mathsize=_&quot;big_&quot; display=_&quot;block_&quot;&gt;&quot;
-      displayElt(s)
-      sayTeX$Lisp &quot;&lt;/math&gt;&quot;
-      s
-
-    coerceL(expr : E): S ==
-      s : S := postcondition formatMml(precondition expr, minPrec)
-      sayTeX$Lisp &quot;&lt;math xmlns=_&quot;http://www.w3.org/1998/Math/MathML_&quot; mathsize=_&quot;big_&quot; display=_&quot;block_&quot;&gt;&quot;
-      sayTeX$Lisp s
-      sayTeX$Lisp &quot;&lt;/math&gt;&quot;
-      s
-
-    display(mathml : S): Void ==
-      sayTeX$Lisp &quot;&lt;math xmlns=_&quot;http://www.w3.org/1998/Math/MathML_&quot; mathsize=_&quot;big_&quot; display=_&quot;block_&quot;&gt;&quot;
-      sayTeX$Lisp mathml
-      sayTeX$Lisp &quot;&lt;/math&gt;&quot;
-      void()$Void
-
-      
-
-    exprex(expr : E): S ==
-      -- This breaks down an expression into atoms and returns it as
-      -- a string.  It's for developmental purposes to help understand
-      -- the expressions.
-      a : E
-      expr := precondition expr
---      sayTeX$Lisp &quot;0: &quot;stringify expr
-      (ATOM(expr)$Lisp@Boolean) or (stringify expr = &quot;NOTHING&quot;) =&gt; 
-        concat [&quot;{&quot;,stringify expr,&quot;}&quot;]      
-      le : L E := (expr pretend L E)
-      op := first le
-      sop : S := exprex op
-      args : L E := rest le
-      nargs : I := #args
---      sayTeX$Lisp concat [&quot;1: &quot;,stringify first le,&quot; : &quot;,string(nargs)$S]
-      s : S := concat [&quot;{&quot;,sop]
-      if nargs &gt; 0  then
-        for a in args repeat
---	  sayTeX$Lisp concat [&quot;2: &quot;,stringify a]
-	  s1 : S := exprex a
-	  s := concat [s,s1]
-      s := concat [s,&quot;}&quot;]
-
-@
-\subsection{Private Function Definitions}
-
-\subsubsection{Display Functions}
-
-    displayElt(mathml:S):Void
-
-    eltName(pos:I,mathml:S):S
-
-    eltLimit(name:S,pos:I,mathml:S):I
-
-    tagEnd(name:S,pos:I,mathml:S):I
-
-&lt;&lt;display functions&gt;&gt;=
-
-    displayElt(mathML:S): Void ==
-      -- Takes a string of syntactically complete mathML
-      -- and formats it for display.
---      sayTeX$Lisp &quot;****displayElt1****&quot;
---      sayTeX$Lisp mathML
-      enT:I -- marks end of tag, e.g. &quot;&lt;name&gt;&quot;
-      enE:I -- marks end of element, e.g. &quot;&lt;name&gt; ... &lt;/name&gt;&quot;
-      end:I -- marks end of mathML string
-      u:US
-      end := #mathML
-      length:I := 60
---      sayTeX$Lisp &quot;****displayElt1.1****&quot;
-      name:S := eltName(1,mathML)
---      sayTeX$Lisp name
---      sayTeX$Lisp concat(&quot;****displayElt1.2****&quot;,name)
-      enE := eltLimit(name,2+#name,mathML)
---      sayTeX$Lisp &quot;****displayElt2****&quot;
-      if enE &lt; length then
---        sayTeX$Lisp &quot;****displayElt3****&quot;
-        u := segment(1,enE)$US
-	sayTeX$Lisp mathML.u
-      else
---        sayTeX$Lisp &quot;****displayElt4****&quot;
-        enT := tagEnd(name,1,mathML)
-	u := segment(1,enT)$US
-	sayTeX$Lisp mathML.u
-	u := segment(enT+1,enE-#name-3)$US
-	displayElt(mathML.u)
-	u := segment(enE-#name-2,enE)$US
-	sayTeX$Lisp mathML.u
-      if end &gt; enE then
---        sayTeX$Lisp &quot;****displayElt5****&quot;
-        u := segment(enE+1,end)$US
-        displayElt(mathML.u)
-
-      void()$Void
-
-    eltName(pos:I,mathML:S): S ==
-      -- Assuming pos is the position of &quot;&lt;&quot; for a start tag of a mathML
-      -- element finds and returns the element's name.
-      i:I := pos+1
-      --sayTeX$Lisp &quot;eltName:mathmML string: &quot;mathML
-      while member?(mathML.i,lowerCase()$CharacterClass)$CharacterClass repeat
-         i := i+1
-      u:US := segment(pos+1,i-1)
-      name:S := mathML.u
-
-    eltLimit(name:S,pos:I,mathML:S): I ==
-      -- Finds the end of a mathML element like &quot;&lt;name ...&gt; ... &lt;/name&gt;&quot;
-      -- where pos is the position of the space after name in the start tag
-      -- although it could point to the closing &quot;&gt;&quot;.  Returns the position
-      -- of the &quot;&gt;&quot; in the end tag.
-      pI:I := pos
-      startI:I
-      endI:I
-      startS:S := concat [&quot;&lt;&quot;,name]
-      endS:S := concat [&quot;&lt;/&quot;,name,&quot;&gt;&quot;]
-      level:I := 1
-      --sayTeX$Lisp &quot;eltLimit: element name: &quot;name
-      while (level &gt; 0) repeat
-        startI := position(startS,mathML,pI)$String
-
-	endI := position(endS,mathML,pI)$String
-
-	if (startI = 0) then
-	  level := level-1
-          --sayTeX$Lisp &quot;****eltLimit 1******&quot;
-	  pI := tagEnd(name,endI,mathML)
-	else
-	  if (startI &lt; endI) then
-	    level := level+1
-	    pI := tagEnd(name,startI,mathML)
-	  else
-	    level := level-1
-	    pI := tagEnd(name,endI,mathML)
-      pI
-
-
-    tagEnd(name:S,pos:I,mathML:S):I ==
-      -- Finds the closing &quot;&gt;&quot; for either a start or end tag of a mathML
-      -- element, so the return value is the position of &quot;&gt;&quot; in mathML.
-      pI:I := pos
-      while  (mathML.pI ^= char &quot;&gt;&quot;) repeat
-        pI := pI+1
-      u:US := segment(pos,pI)$US
-      --sayTeX$Lisp &quot;tagEnd: &quot;mathML.u
-      pI
-
-@
-\subsubsection{Formatting Functions}
-
-Still need to format \verb+\zag+ in formatSpecial!
-
-In formatPlex the case op = &quot;INTSIGN&quot; is now passed off to
-formatIntSign which is a change from the TexFormat domain.
-This is done here for presentation mark up to replace the
-ugly bound variable that Axiom delivers.  For content mark up
-this has to be done anyway.  
-
-The formatPlex function also allows for op = &quot;INDEFINTEGRAL&quot;.
-However I don't know what Axiom command gives rise to this case.
-The INTSIGN case already allows for both definite and indefinite
-integrals.
-
-In the function formatSpecial various cases are handled including
-SUB and SUPERSUB.  These cases are now caught in formatMml and so
-the code in formatSpecial doesn't get executed.  The only cases
-I know of using these are partial derivatives for SUB and ordinary
-derivatives or SUPERSUB however in TexFormat the capability is there
-to handle multiscripts, i.e. an object with subscripts, superscripts,
-pre-subscripts and pre-superscripts but I am so far unaware of any
-Axiom command that produces such a multiscripted object.
-
-Another question is how to represent derivatives.  At present I have
-differential notation for partials and prime notation for ordinary 
-derivatives, 
-but it would be nice to allow for different derivative notations in 
-different circumstances, maybe some options to )set output mathml on.
-
-Ordinary derivatives are formatted in formatSuperSub and there are
-2 versions, formatSuperSub and formatSuperSub1, which at this point
-have to be switched by swapping names.
-
-&lt;&lt;formatting functions&gt;&gt;=
-
-    atomize(expr : E): L E ==
-      -- This breaks down an expression into a flat list of atomic expressions.
-      -- expr should be preconditioned.
-      le : L E := nil()
-      a : E
-      letmp : L E
-      (ATOM(expr)$Lisp@Boolean) or (stringify expr = &quot;NOTHING&quot;) =&gt; 
-        le := append(le,list(expr))
-      letmp := expr pretend L E
-      for a in letmp repeat
-        le := append(le,atomize a)
-      le
-      	
-
-    ungroup(str: S): S ==
-      len : I := #str
-      len &lt; 14 =&gt; str
-      lrow : S :=  &quot;&lt;mrow&gt;&quot;
-      rrow : S :=  &quot;&lt;/mrow&gt;&quot;
-      -- drop leading and trailing mrows
-      u1 : US := segment(1,6)$US
-      u2 : US := segment(len-6,len)$US
-      if (str.u1 =$S lrow) and (str.u2 =$S rrow) then
-        u : US := segment(7,len-7)$US
-        str := str.u
-      str
-
-    postcondition(str: S): S ==
---      str := ungroup str
-      len : I := #str
-      plusminus : S := &quot;&lt;mo&gt;+&lt;/mo&gt;&lt;mo&gt;-&lt;/mo&gt;&quot;
-      pos : I := position(plusminus,str,1)
-      if pos &gt; 0 then
-        ustart:US := segment(1,pos-1)$US
-	uend:US := segment(pos+20,len)$US
-        str := concat [str.ustart,&quot;&lt;mo&gt;-&lt;/mo&gt;&quot;,str.uend]
-	if pos &lt; len-18 then
-	  str := postcondition(str)
-      str
-
-    stringify expr == (mathObject2String$Lisp expr)@S
-
-    group str ==
-      concat [&quot;&lt;mrow&gt;&quot;,str,&quot;&lt;/mrow&gt;&quot;]
-
-    addBraces str ==
-      concat [&quot;&lt;mo&gt;{&lt;/mo&gt;&quot;,str,&quot;&lt;mo&gt;}&lt;/mo&gt;&quot;]
-
-    addBrackets str ==
-      concat [&quot;&lt;mo&gt;[&lt;/mo&gt;&quot;,str,&quot;&lt;mo&gt;]&lt;/mo&gt;&quot;]
-
-    parenthesize str ==
-      concat [&quot;&lt;mo&gt;(&lt;/mo&gt;&quot;,str,&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;]
-
-    precondition expr ==
-      outputTran$Lisp expr
-
-    formatSpecial(op : S, args : L E, prec : I) : S ==
-      arg : E
-      prescript : Boolean := false
-      op = &quot;theMap&quot; =&gt; &quot;&lt;mtext&gt;theMap(...)&lt;/mtext&gt;&quot;
-      op = &quot;AGGLST&quot; =&gt;
-        formatNary(&quot;,&quot;,args,prec)
-      op = &quot;AGGSET&quot; =&gt;
-        formatNary(&quot;;&quot;,args,prec)
-      op = &quot;TAG&quot; =&gt;
-        group concat [formatMml(first args,prec),
-                      &quot;&lt;mo&gt;&amp;#x02192;&lt;/mo&gt;&quot;,
-                        formatMml(second args,prec)]
-			 --RightArrow
-      op = &quot;VCONCAT&quot; =&gt;
-        group concat(&quot;&lt;mtable&gt;&lt;mtr&gt;&quot;,
-                     concat(concat([concat(&quot;&lt;mtd&gt;&quot;,concat(formatMml(u, minPrec),&quot;&lt;/mtd&gt;&quot;))
-                                    for u in args]::L S),
-                            &quot;&lt;/mtr&gt;&lt;/mtable&gt;&quot;))
-      op = &quot;CONCATB&quot; =&gt;
-        formatNary(&quot; &quot;,args,prec)
-      op = &quot;CONCAT&quot; =&gt;
-        formatNary(&quot;&quot;,args,minPrec)
-      op = &quot;QUOTE&quot; =&gt;
-        group concat(&quot;&lt;mo&gt;'&lt;/mo&gt;&quot;,formatMml(first args, minPrec))
-      op = &quot;BRACKET&quot; =&gt;
-        group addBrackets ungroup formatMml(first args, minPrec)
-      op = &quot;BRACE&quot; =&gt;
-        group addBraces ungroup formatMml(first args, minPrec)
-      op = &quot;PAREN&quot; =&gt;
-        group parenthesize ungroup formatMml(first args, minPrec)
-      op = &quot;OVERBAR&quot; =&gt;
-        null args =&gt; &quot;&quot;
-        group concat [&quot;&lt;mover accent='true'&gt;&lt;mrow&gt;&quot;,formatMml(first args,minPrec),&quot;&lt;/mrow&gt;&lt;mo stretchy='true'&gt;&amp;#x000AF;&lt;/mo&gt;&lt;/mover&gt;&quot;]
-	 --OverBar
-      op = &quot;ROOT&quot; =&gt;
-        null args =&gt; &quot;&quot;
-        tmp : S := group formatMml(first args, minPrec)
-        null rest args =&gt; concat [&quot;&lt;msqrt&gt;&quot;,tmp,&quot;&lt;/msqrt&gt;&quot;]
-        group concat
-	  [&quot;&lt;mroot&gt;&lt;mrow&gt;&quot;,tmp,&quot;&lt;/mrow&gt;&quot;,formatMml(first rest args, minPrec),&quot;&lt;/mroot&gt;&quot;]
-      op = &quot;SEGMENT&quot; =&gt;
-        tmp : S := concat [formatMml(first args, minPrec),&quot;&lt;mo&gt;..&lt;/mo&gt;&quot;]
-        group
-          null rest args =&gt;  tmp
-          concat [tmp,formatMml(first rest args, minPrec)]
-      -- SUB should now be diverted in formatMml although I'll leave
-      -- the code here for now.
-      op = &quot;SUB&quot; =&gt;
-        group concat [&quot;&lt;msub&gt;&quot;,formatMml(first args, minPrec),
-          formatSpecial(&quot;AGGLST&quot;,rest args,minPrec),&quot;&lt;/msub&gt;&quot;]
-      -- SUPERSUB should now be diverted in formatMml although I'll leave
-      -- the code here for now.
-      op = &quot;SUPERSUB&quot; =&gt;
-        base:S := formatMml(first args, minPrec)
-	args := rest args
-	if #args = 1 then
-	  &quot;&lt;msub&gt;&lt;mrow&gt;&quot;base&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first args, minPrec)&quot;&lt;/mrow&gt;&lt;/msub&gt;&quot;
-	else if #args = 2 then
-	-- it would be nice to substitue &amp;#x2032; for , in the case of
-	-- an ordinary derivative, it looks a lot better.
-	  &quot;&lt;msubsup&gt;&lt;mrow&gt;&quot;base&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first rest args, minPrec)&quot;&lt;/mrow&gt;&lt;/msubsup&gt;&quot;
-	else if #args = 3 then
-	  &quot;&lt;mmultiscripts&gt;&lt;mrow&gt;&quot;base&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first rest args,minPrec)&quot;&lt;/mrow&gt;&lt;mprescripts/&gt;&lt;mrow&gt;&quot;formatMml(first rest rest args,minPrec)&quot;&lt;/mrow&gt;&lt;none/&gt;&lt;/mmultiscripts&gt;&quot;
-	else if #args = 4 then
-	  &quot;&lt;mmultiscripts&gt;&lt;mrow&gt;&quot;base&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first rest args,minPrec)&quot;&lt;/mrow&gt;&lt;mprescripts/&gt;&lt;mrow&gt;&quot;formatMml(first rest rest args,minPrec)&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;formatMml(first rest rest rest args,minPrec)&quot;&lt;/mrow&gt;&lt;/mmultiscripts&gt;&quot;
-	else
-	  &quot;&lt;mtext&gt;Problem with multiscript object&lt;/mtext&gt;&quot;
-      op = &quot;SC&quot; =&gt;
-        -- need to handle indentation someday
-        null args =&gt; &quot;&quot;
-        tmp := formatNaryNoGroup(&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;, args, minPrec)
-        group concat [&quot;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;,tmp,&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&quot;]
-      op = &quot;MATRIX&quot; =&gt; formatMatrix rest args
-      op = &quot;ZAG&quot; =&gt;
--- {{+}{3}{{ZAG}{1}{7}}{{ZAG}{1}{15}}{{ZAG}{1}{1}}{{ZAG}{1}{25}}{{ZAG}{1}{1}}{{ZAG}{1}{7}}{{ZAG}{1}{4}}}
--- to format continued fraction traditionally need to intercept it at the
--- formatNary of the &quot;+&quot;
-        concat [&quot; \zag{&quot;,formatMml(first args, minPrec),&quot;}{&quot;,
-          formatMml(first rest args,minPrec),&quot;}&quot;]
-      concat [&quot;&lt;mtext&gt;not done yet for: &quot;,op,&quot;&lt;/mtext&gt;&quot;]
-
-    formatSub(expr : E, args : L E, opPrec : I) : S ==
-      -- This one produces differential notation partial derivatives.
-      -- It doesn't work in all cases and may not be workable, use
-      -- formatSub1 below for now.
-      -- At this time this is only to handle partial derivatives.
-      -- If the SUB case handles anything else I'm not aware of it.
-      -- This an example of the 4th partial of y(x,z) w.r.t. x,x,z,x
-      -- {{{SUB}{y}{{CONCAT}{{CONCAT}{{CONCAT}{{CONCAT}{,}{1}}{{CONCAT}{,}{1}}}{{CONCAT}{,}{2}}}{{CONCAT}{,}{1}}}}{x}{z}}
-      atomE : L E := atomize(expr)      
-      op : S := stringify first atomE
-      op ^= &quot;SUB&quot; =&gt; &quot;&lt;mtext&gt;Mistake in formatSub: no SUB&lt;/mtext&gt;&quot;
-      stringify first rest rest atomE ^= &quot;CONCAT&quot; =&gt; &quot;&lt;mtext&gt;Mistake in formatSub: no CONCAT&lt;/mtext&gt;&quot;
-      -- expecting form for atomE like
-      --[{SUB}{func}{CONCAT}...{CONCAT}{,}{n}{CONCAT}{,}{n}...{CONCAT}{,}{n}],
-      --counting the first CONCATs before the comma gives the number of
-      --derivatives
-      ndiffs : I := 0
-      tmpLE : L E := rest rest atomE
-      while stringify first tmpLE = &quot;CONCAT&quot; repeat
-        ndiffs := ndiffs+1
-	tmpLE := rest tmpLE
-      numLS : L S := nil
-      i : I := 1
-      while i &lt; ndiffs repeat
-        numLS := append(numLS,list(stringify first rest tmpLE))
-	tmpLE := rest rest rest tmpLE
-	i := i+1
-      numLS := append(numLS,list(stringify first rest tmpLE))
-      -- numLS contains the numbers of the bound variables as strings
-      -- for the differentiations, thus for the differentiation [x,x,z,x]
-      -- for y(x,z) numLS = [&quot;1&quot;,&quot;1&quot;,&quot;2&quot;,&quot;1&quot;]
-      posLS : L S := nil
-      i := 0
- --     sayTeX$Lisp &quot;formatSub: nargs = &quot;string(#args)
-      while i &lt; #args repeat
-        posLS := append(posLS,list(string(i+1)))
-	i := i+1
-      -- posLS contains the positions of the bound variables in args
-      -- as a list of strings, e.g. for the above example [&quot;1&quot;,&quot;2&quot;]
-      tmpS: S := stringify atomE.2
-      if ndiffs = 1 then
-        s : S := &quot;&lt;mfrac&gt;&lt;mo&gt;&amp;#x02202;&lt;/mo&gt;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&lt;mrow&gt;&quot;
-      else        
-        s : S := &quot;&lt;mfrac&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;&amp;#x02202;&lt;/mo&gt;&lt;mn&gt;&quot;string(ndiffs)&quot;&lt;/mn&gt;&lt;/msup&gt;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&quot;
-      -- need to find the order of the differentiation w.r.t. the i-th
-      -- variable
-      i := 1
-      j : I
-      k : I
-      tmpS: S
-      while i &lt; #posLS+1 repeat
-	j := 0
-	k := 1
-	while k &lt; #numLS + 1 repeat
-	  if numLS.k = string i then j := j + 1
-	  k := k+1
-        if j &gt; 0 then
-	  tmpS := stringify args.i
-	  if j = 1 then
-	    s := s&quot;&lt;mo&gt;&amp;#x02202;&lt;/mo&gt;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&quot;
-	  else
-	    s := s&quot;&lt;mo&gt;&amp;#x02202;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&lt;mn&gt;&quot;string(j)&quot;&lt;/mn&gt;&lt;/msup&gt;&quot;
-        i := i + 1
-      s := s&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;(&lt;/mo&gt;&quot;
-      i := 1
-      while i &lt; #posLS+1 repeat
-        tmpS := stringify args.i
-	s := s&quot;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&quot;
-	if i &lt; #posLS then s := s&quot;&lt;mo&gt;,&lt;/mo&gt;&quot;
-	i := i+1
-      s := s&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;
-
-    formatSub1(expr : E, args : L E, opPrec : I) : S ==
-      -- This one produces partial derivatives notated by &quot;,n&quot; as
-      -- subscripts.
-      -- At this time this is only to handle partial derivatives.
-      -- If the SUB case handles anything else I'm not aware of it.
-      -- This an example of the 4th partial of y(x,z) w.r.t. x,x,z,x
-      -- {{{SUB}{y}{{CONCAT}{{CONCAT}{{CONCAT}{{CONCAT}{,}{1}}
-      -- {{CONCAT}{,}{1}}}{{CONCAT}{,}{2}}}{{CONCAT}{,}{1}}}}{x}{z}},
-      -- here expr is everything in the first set of braces and 
-      -- args is {{x}{z}}
-      atomE : L E := atomize(expr)      
-      op : S := stringify first atomE
-      op ^= &quot;SUB&quot; =&gt; &quot;&lt;mtext&gt;Mistake in formatSub: no SUB&lt;/mtext&gt;&quot;
-      stringify first rest rest atomE ^= &quot;CONCAT&quot; =&gt; &quot;&lt;mtext&gt;Mistake in formatSub: no CONCAT&lt;/mtext&gt;&quot;
-      -- expecting form for atomE like
-      --[{SUB}{func}{CONCAT}...{CONCAT}{,}{n}{CONCAT}{,}{n}...{CONCAT}{,}{n}],
-      --counting the first CONCATs before the comma gives the number of
-      --derivatives
-      ndiffs : I := 0
-      tmpLE : L E := rest rest atomE
-      while stringify first tmpLE = &quot;CONCAT&quot; repeat
-        ndiffs := ndiffs+1
-	tmpLE := rest tmpLE
-      numLS : L S := nil
-      i : I := 1
-      while i &lt; ndiffs repeat
-        numLS := append(numLS,list(stringify first rest tmpLE))
-	tmpLE := rest rest rest tmpLE
-	i := i+1
-      numLS := append(numLS,list(stringify first rest tmpLE))
-      -- numLS contains the numbers of the bound variables as strings
-      -- for the differentiations, thus for the differentiation [x,x,z,x]
-      -- for y(x,z) numLS = [&quot;1&quot;,&quot;1&quot;,&quot;2&quot;,&quot;1&quot;]
-      posLS : L S := nil
-      i := 0
- --     sayTeX$Lisp &quot;formatSub: nargs = &quot;string(#args)
-      while i &lt; #args repeat
-        posLS := append(posLS,list(string(i+1)))
-	i := i+1
-      -- posLS contains the positions of the bound variables in args
-      -- as a list of strings, e.g. for the above example [&quot;1&quot;,&quot;2&quot;]
-      funcS: S := stringify atomE.2
-      s : S := &quot;&lt;msub&gt;&lt;mi&gt;&quot;funcS&quot;&lt;/mi&gt;&lt;mrow&gt;&quot;
-      i := 1
-      while i &lt; #numLS+1 repeat
-        s := s&quot;&lt;mo&gt;,&lt;/mo&gt;&lt;mn&gt;&quot;numLS.i&quot;&lt;/mn&gt;&quot;
-	i := i + 1
-      s := s&quot;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;(&lt;/mo&gt;&quot;
-      i := 1
-      while i &lt; #posLS+1 repeat
---        tmpS := stringify args.i
-	tmpS := formatMml(first args,minPrec)
-	args := rest args
-	s := s&quot;&lt;mi&gt;&quot;tmpS&quot;&lt;/mi&gt;&quot;
-	if i &lt; #posLS then s := s&quot;&lt;mo&gt;,&lt;/mo&gt;&quot;
-	i := i+1
-      s := s&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;
-
-    formatSuperSub(expr : E, args : L E, opPrec : I) : S ==
-      -- this produces prime notation ordinary derivatives.
-      -- first have to divine the semantics, add cases as needed
---      WriteLine$Lisp &quot;SuperSub1 begin&quot;
-      atomE : L E := atomize(expr)      
-      op : S := stringify first atomE
---      WriteLine$Lisp &quot;op: &quot;op
-      op ^= &quot;SUPERSUB&quot; =&gt; _
-          &quot;&lt;mtext&gt;Mistake in formatSuperSub: no SUPERSUB1&lt;/mtext&gt;&quot;
-      #args ^= 1 =&gt; &quot;&lt;mtext&gt;Mistake in SuperSub1: #args &lt;&gt; 1&lt;/mtext&gt;&quot;
-      var : E := first args
-      -- should be looking at something like {{SUPERSUB}{var}{ }{,,...,}} for
-      -- example here's the second derivative of y w.r.t. x
-      -- {{{SUPERSUB}{y}{ }{,,}}{x}}, expr is the first {} and args is the
-      -- {x}
-      funcS : S := stringify first rest atomE
---      WriteLine$Lisp &quot;funcS: &quot;funcS
-      bvarS : S := stringify first args
---      WriteLine$Lisp &quot;bvarS: &quot;bvarS
-      -- count the number of commas
-      commaS : S := stringify first rest rest rest atomE
-      commaTest : S := &quot;,&quot;
-      i : I := 0
-      while position(commaTest,commaS,1) &gt; 0 repeat
-        i := i+1
-	commaTest := commaTest&quot;,&quot;
-      s : S := &quot;&lt;msup&gt;&lt;mi&gt;&quot;funcS&quot;&lt;/mi&gt;&lt;mrow&gt;&quot;
---      WriteLine$Lisp &quot;s: &quot;s
-      j : I := 0
-      while j &lt; i repeat
-        s := s&quot;&lt;mo&gt;&amp;#x02032;&lt;/mo&gt;&quot;
-	j := j + 1
-      s := s&quot;&lt;/mrow&gt;&lt;/msup&gt;&lt;mo&gt;&amp;#x02061;&lt;/mo&gt;&lt;mo&gt;(&lt;/mo&gt;&quot;formatMml(first args,minPrec)&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;
-
-    formatSuperSub1(expr : E, args : L E, opPrec : I) : S ==
-      -- This one produces ordinary derivatives with differential notation,
-      -- it needs a little more work yet.
-      -- first have to divine the semantics, add cases as needed
---      WriteLine$Lisp &quot;SuperSub begin&quot;
-      atomE : L E := atomize(expr)      
-      op : S := stringify first atomE
-      op ^= &quot;SUPERSUB&quot; =&gt; _
-         &quot;&lt;mtext&gt;Mistake in formatSuperSub: no SUPERSUB&lt;/mtext&gt;&quot;
-      #args ^= 1 =&gt; &quot;&lt;mtext&gt;Mistake in SuperSub: #args &lt;&gt; 1&lt;/mtext&gt;&quot;
-      var : E := first args
-      -- should be looking at something like {{SUPERSUB}{var}{ }{,,...,}} for
-      -- example here's the second derivative of y w.r.t. x
-      -- {{{SUPERSUB}{y}{ }{,,}}{x}}, expr is the first {} and args is the
-      -- {x}
-      funcS : S := stringify first rest atomE
-      bvarS : S := stringify first args
-      -- count the number of commas
-      commaS : S := stringify first rest rest rest atomE
-      commaTest : S := &quot;,&quot;
-      ndiffs : I := 0
-      while position(commaTest,commaS,1) &gt; 0 repeat
-        ndiffs := ndiffs+1
-	commaTest := commaTest&quot;,&quot;
-      s : S := &quot;&lt;mfrac&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mo&gt;&amp;#x02146;&lt;/mo&gt;&lt;mn&gt;&quot;string(ndiffs)&quot;&lt;/mn&gt;&lt;/msup&gt;&lt;mi&gt;&quot;funcS&quot;&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo&gt;&amp;#x02146;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mi&gt;&lt;mn&gt;&quot;string(ndiffs)&quot;&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;&amp;#x02061;&lt;/mo&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mi&gt;&quot;formatMml(first args,minPrec)&quot;&lt;/mi&gt;&lt;mo&gt;)&lt;/mo&gt;&quot;
-
-    formatPlex(op : S, args : L E, prec : I) : S ==
-      checkarg:Boolean := false
-      hold : S
-      p : I := position(op,plexOps)
-      p &lt; 1 =&gt; error &quot;unknown plex op&quot;
-      op = &quot;INTSIGN&quot; =&gt; formatIntSign(args,minPrec)
-      opPrec := plexPrecs.p
-      n : I := #args
-      (n ^= 2) and (n ^= 3) =&gt; error &quot;wrong number of arguments for plex&quot;
-      s : S :=
-        op = &quot;SIGMA&quot;   =&gt; 
-         checkarg := true
-         &quot;&lt;mo&gt;&amp;#x02211;&lt;/mo&gt;&quot;
-	-- Sum
-        op = &quot;SIGMA2&quot;   =&gt; 
-         checkarg := true
-         &quot;&lt;mo&gt;&amp;#x02211;&lt;/mo&gt;&quot;
-	-- Sum
-        op = &quot;PI&quot;      =&gt; 
-         checkarg := true
-         &quot;&lt;mo&gt;&amp;#x0220F;&lt;/mo&gt;&quot;
-	-- Product
-        op = &quot;PI2&quot;     =&gt; 
-         checkarg := true
-         &quot;&lt;mo&gt;&amp;#x0220F;&lt;/mo&gt;&quot;
-	-- Product
---        op = &quot;INTSIGN&quot; =&gt; &quot;&lt;mo&gt;&amp;#x0222B;&lt;/mo&gt;&quot;
-	-- Integral, int
-        op = &quot;INDEFINTEGRAL&quot; =&gt; &quot;&lt;mo&gt;&amp;#x0222B;&lt;/mo&gt;&quot;
-	-- Integral, int
-        &quot;????&quot;
-      hold := formatMml(first args,minPrec)
-      args := rest args
-      if op ^= &quot;INDEFINTEGRAL&quot; then
-        if hold ^= &quot;&quot; then
-          s := concat [&quot;&lt;munderover&gt;&quot;,s,group hold]
-	else
-	  s := concat [&quot;&lt;munderover&gt;&quot;,s,group &quot; &quot;]
-        if not null rest args then
-          hold := formatMml(first args,minPrec)
-	  if hold ^= &quot;&quot; then
-            s := concat [s,group hold,&quot;&lt;/munderover&gt;&quot;]
-	  else
-	    s := concat [s,group &quot; &quot;,&quot;&lt;/munderover&gt;&quot;]
-          args := rest args
-	-- if checkarg true need to test op arg for &quot;+&quot; at least
-	-- and wrap parentheses if so
-	if checkarg then
-          la : L E := (first args pretend L E)
-          opa : S := stringify first la
-	  if opa = &quot;+&quot; then
-            s := concat [s,&quot;&lt;mo&gt;(&lt;/mo&gt;&quot;,formatMml(first args,minPrec),&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;]
-          else s := concat [s,formatMml(first args,minPrec)]
-        else s := concat [s,formatMml(first args,minPrec)]
-      else
-        hold := group concat [hold,formatMml(first args,minPrec)]
-        s := concat [s,hold]
---      if opPrec &lt; prec then s := parenthesize s
--- getting ugly parentheses on fractions
-      group s
-
-    formatIntSign(args : L E, opPrec : I) : S ==
-      -- the original OutputForm expression looks something like this:
-      -- {{INTSIGN}{NOTHING or lower limit?}
-      -- {bvar or upper limit?}{{*}{integrand}{{CONCAT}{d}{axiom var}}}}
-      -- the args list passed here consists of the rest of this list, i.e.
-      -- starting at the NOTHING or ...
-      (stringify first args) = &quot;NOTHING&quot; =&gt;
-        -- the bound variable is the second one in the argument list
-	bvar : E := first rest args
-	bvarS : S := stringify bvar
-	tmpS : S
-	i : I := 0
-	u1 : US
-	u2 : US
-	-- this next one atomizes the integrand plus differential
-	atomE : L E := atomize(first rest rest args)
-	-- pick out the bound variable used by axiom
-	varRS : S := stringify last(atomE)
-	tmpLE : L E := ((first rest rest args) pretend L E)
-        integrand : S := formatMml(first rest tmpLE,minPrec)
-	-- replace the bound variable, i.e. axiom uses someting of the form
-	-- %A for the bound variable and puts the original variable used
-	-- in the input command as a superscript on the integral sign.
-	-- I'm assuming that the axiom variable is 2 characters.
-	while (i := position(varRS,integrand,i+1)) &gt; 0 repeat
-	  u1 := segment(1,i-1)$US
-	  u2 := segment(i+2,#integrand)$US
-	  integrand := concat [integrand.u1,bvarS,integrand.u2]
-	concat [&quot;&lt;mrow&gt;&lt;mo&gt;&amp;#x0222B;&lt;/mo&gt;&quot; integrand &quot;&lt;mo&gt;&amp;#x02146;&lt;/mo&gt;&lt;mi&gt;&quot; bvarS &quot;&lt;/mi&gt;&lt;/mrow&gt;&quot;]
-
-      lowlim : S := stringify first args
-      highlim : S := stringify first rest args
-      bvar : E := last atomize(first rest rest args)
-      bvarS : S := stringify bvar
-      tmpLE : L E := ((first rest rest args) pretend L E)
-      integrand : S := formatMml(first rest tmpLE,minPrec)
-      concat [&quot;&lt;mrow&gt;&lt;munderover&gt;&lt;mo&gt;&amp;#x0222B;&lt;/mo&gt;&lt;mi&gt;&quot; lowlim &quot;&lt;/mi&gt;&lt;mi&gt;&quot; highlim &quot;&lt;/mi&gt;&lt;/munderover&gt;&quot; integrand &quot;&lt;mo&gt;&amp;#x02146;&lt;/mo&gt;&lt;mi&gt;&quot; bvarS &quot;&lt;/mi&gt;&lt;/mrow&gt;&quot;] 
-
-
-    formatMatrix(args : L E) : S ==
-      -- format for args is [[ROW ...],[ROW ...],[ROW ...]]
-      -- generate string for formatting columns (centered)
-      group addBrackets concat
-        [&quot;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;,formatNaryNoGroup(&quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&quot;,args,minPrec),
-          &quot;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&quot;]
-
-    formatFunction(op : S, args : L E, prec : I) : S ==
-      group concat [&quot;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&quot;,parenthesize formatNary(&quot;,&quot;,args,minPrec)]
-
-    formatNullary(op : S) ==
-      op = &quot;NOTHING&quot; =&gt; &quot;&quot;
-      group concat [&quot;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;mo&gt;)&lt;/mo&gt;&quot;]
-
-    formatUnary(op : S, arg : E, prec : I) ==
-      p : I := position(op,unaryOps)
-      p &lt; 1 =&gt; error &quot;unknown unary op&quot;
-      opPrec := unaryPrecs.p
-      s : S := concat [&quot;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&quot;,formatMml(arg,opPrec)]
-      opPrec &lt; prec =&gt; group parenthesize s
-      op = &quot;-&quot; =&gt; s
-      group s
-
-    formatBinary(op : S, args : L E, prec : I) : S ==
-      p : I := position(op,binaryOps)
-      p &lt; 1 =&gt; error &quot;unknown binary op&quot;
-      opPrec := binaryPrecs.p
-      -- if base op is product or sum need to add parentheses
-      if ATOM(first args)$Lisp@Boolean then
-        opa:S := stringify first args
-      else
-        la : L E := (first args pretend L E)
-        opa : S := stringify first la
-      if (opa = &quot;SIGMA&quot; or opa = &quot;SIGMA2&quot; or opa = &quot;PI&quot; or opa = &quot;PI2&quot;) _
-         and op = &quot;**&quot; then
-        s1:S:=concat [&quot;&lt;mo&gt;(&lt;/mo&gt;&quot;,formatMml(first args, opPrec),&quot;&lt;mo&gt;)&lt;/mo&gt;&quot;]
-      else
-       s1 : S := formatMml(first args, opPrec)
-      s2 : S := formatMml(first rest args, opPrec)
-      op :=
-        op = &quot;|&quot;     =&gt;  s := concat [&quot;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&quot;]
-        op = &quot;**&quot;    =&gt;  s := concat [&quot;&lt;msup&gt;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&lt;/msup&gt;&quot;]
-        op = &quot;/&quot;     =&gt;  s := concat [&quot;&lt;mfrac&gt;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&quot;]
-        op = &quot;OVER&quot;  =&gt;  s := concat [&quot;&lt;mfrac&gt;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&quot;]
-        op = &quot;+-&gt;&quot;   =&gt;  s := concat [&quot;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&quot;]
-        s := concat [&quot;&lt;mrow&gt;&quot;,s1,&quot;&lt;/mrow&gt;&lt;mo&gt;&quot;,op,&quot;&lt;/mo&gt;&lt;mrow&gt;&quot;,s2,&quot;&lt;/mrow&gt;&quot;]
-      group
-        op = &quot;OVER&quot; =&gt; s
---        opPrec &lt; prec =&gt; parenthesize s
--- ugly parentheses?
-        s
-
-    formatNary(op : S, args : L E, prec : I) : S ==
-      group formatNaryNoGroup(op, args, prec)
-
-    formatNaryNoGroup(op : S, args : L E, prec : I) : S ==
-      checkargs:Boolean := false
-      null args =&gt; &quot;&quot;
-      p : I := position(op,naryOps)
-      p &lt; 1 =&gt; error &quot;unknown nary op&quot;
-      -- need to test for &quot;ZAG&quot; case and divert it here
-      -- ex 1. continuedFraction(314159/100000)
-      -- {{+}{3}{{ZAG}{1}{7}}{{ZAG}{1}{15}}{{ZAG}{1}{1}}{{ZAG}{1}{25}}
-      -- {{ZAG}{1}{1}}{{ZAG}{1}{7}}{{ZAG}{1}{4}}}
-      -- this is the preconditioned output form
-      -- including &quot;op&quot;, the args list would be the rest of this
-      -- i.e op = '+' and args = {{3}{{ZAG}{1}{7}}{{ZAG}{1}{15}}
-      -- {{ZAG}{1}{1}}{{ZAG}{1}{25}}{{ZAG}{1}{1}}{{ZAG}{1}{7}}{{ZAG}{1}{4}}}
-      -- ex 2. continuedFraction(14159/100000)
-      -- this one doesn't have the leading integer
-      -- {{+}{{ZAG}{1}{7}}{{ZAG}{1}{15}}{{ZAG}{1}{1}}{{ZAG}{1}{25}}
-      -- {{ZAG}{1}{1}}{{ZAG}{1}{7}}{{ZAG}{1}{4}}}
-      --
-      -- ex 3. continuedFraction(3,repeating [1], repeating [3,6])
-      -- {{+}{3}{{ZAG}{1}{3}}{{ZAG}{1}{6}}{{ZAG}{1}{3}}{{ZAG}{1}{6}}
-      -- {{ZAG}{1}{3}}{{ZAG}{1}{6}}{{ZAG}{1}{3}}{{ZAG}{1}{6}}
-      -- {{ZAG}{1}{3}}{{ZAG}{1}{6}}{...}}
-      -- In each of these examples the args list consists of the terms
-      -- following the '+' op
-      -- so the first arg could be a &quot;ZAG&quot; or something
-      -- else, but the second arg looks like it has to be &quot;ZAG&quot;, so maybe
-      -- test for #args &gt; 1 and args.2 contains &quot;ZAG&quot;.
-      -- Note that since the resulting MathML &lt;mfrac&gt;s are nested we need
-      -- to handle the whole continued fraction at once, i.e. we can't
-      -- just look for, e.g., {{ZAG}{1}{6}}
-      (#args &gt; 1) and (position(&quot;ZAG&quot;,stringify first rest args,1) &gt; 0) =&gt;
-	   tmpS : S := stringify first args
-	   position(&quot;ZAG&quot;,tmpS,1) &gt; 0 =&gt; formatZag(args)
---	   position(&quot;ZAG&quot;,tmpS,1) &gt; 0 =&gt; formatZag1(args)
-	   concat [formatMml(first args,minPrec) &quot;&lt;mo&gt;+&lt;/mo&gt;&quot; formatZag(rest args)]
-      -- At least for the ops &quot;*&quot;,&quot;+&quot;,&quot;-&quot; we need to test to see if a sigma
-      -- or pi is one of their arguments because we might need parentheses
-      -- as indicated by the problem with 
-      -- summation(operator(f)(i),i=1..n)+1 versus
-      -- summation(operator(f)(i)+1,i=1..n) having identical displays as 
-      -- of 2007-21-21
-      op :=
-        op = &quot;,&quot;     =&gt; &quot;&lt;mo&gt;,&lt;/mo&gt;&quot; --originally , \:
-        op = &quot;;&quot;     =&gt; &quot;&lt;mo&gt;;&lt;/mo&gt;&quot; --originally ; \: should figure these out
-        op = &quot;*&quot;     =&gt; &quot;&lt;mspace width='0.3em'/&gt;&quot;
-	-- InvisibleTimes
-        op = &quot; &quot;     =&gt; &quot;&lt;mspace width='0.5em'/&gt;&quot;
-        op = &quot;ROW&quot;   =&gt; &quot;&lt;/mtd&gt;&lt;mtd&gt;&quot;
-	op = &quot;+&quot;     =&gt; 
-            checkargs := true
-            &quot;&lt;mo&gt;+&lt;/mo&gt;&quot;
-	op = &quot;-&quot;     =&gt; 
-            checkargs := true
-            &quot;&lt;mo&gt;-&lt;/mo&gt;&quot;
-        op
-      l : L S := nil
-      opPrec := naryPrecs.p
-      -- if checkargs is true check each arg except last one to see if it's
-      -- a sigma or pi and if so add parentheses. Other op's may have to be
-      -- checked for in future
-      count:I := 1
-      for a in args repeat
---        WriteLine$Lisp &quot;checking args&quot;
-        if checkargs then
-	  if count &lt; #args then
-	    -- check here for sum or product
-	    if ATOM(a)$Lisp@Boolean then
-	      opa:S := stringify a
-	    else
-	      la : L E := (a pretend L E)
-	      opa : S := stringify first la
-	    if opa = &quot;SIGMA&quot; or opa = &quot;SIGMA2&quot; or _
-               opa = &quot;PI&quot; or opa = &quot;PI2&quot; then
-	      l := concat(op,concat(_
-                    concat [&quot;&lt;mo&gt;(&lt;/mo&gt;&quot;,formatMml(a,opPrec),_
-                            &quot;&lt;mo&gt;)&lt;/mo&gt;&quot;],l)$L(S))$L(S)
-	    else l := concat(op,concat(formatMml(a,opPrec),l)$L(S))$L(S)
-	  else l := concat(op,concat(formatMml(a,opPrec),l)$L(S))$L(S)
-	else l := concat(op,concat(formatMml(a,opPrec),l)$L(S))$L(S)
-	count := count + 1
-      s : S := concat reverse rest l
-      opPrec &lt; prec =&gt; parenthesize s
-      s
-
-    formatZag(args : L E) : S ==
-    -- args will be a list of things like this {{ZAG}{1}{7}}, the ZAG
-    -- must be there, the '1' and '7' could conceivably be more complex
-    -- expressions
-      tmpZag : L E := first args pretend L E
-      -- may want to test that tmpZag contains 'ZAG'
-      #args &gt; 1 =&gt; &quot;&lt;mfrac&gt;&quot;formatMml(first rest tmpZag,minPrec)&quot;&lt;mrow&gt;&lt;mn&gt;&quot;formatMml(first rest rest tmpZag,minPrec)&quot;&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&quot;formatZag(rest args)&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&quot;
-      -- EQUAL(tmpZag, &quot;...&quot;)$Lisp =&gt; &quot;&lt;mo&gt;&amp;#x2026;&lt;/mo&gt;&quot;
-      (first args = &quot;...&quot;::E)@Boolean =&gt; &quot;&lt;mo&gt;&amp;#x2026;&lt;/mo&gt;&quot;
-      position(&quot;ZAG&quot;,stringify first args,1) &gt; 0 =&gt;
-          &quot;&lt;mfrac&gt;&quot;formatMml(first rest tmpZag,minPrec)formatMml(first rest rest tmpZag,minPrec)&quot;&lt;/mfrac&gt;&quot;      
-      &quot;&lt;mtext&gt;formatZag: Unexpected kind of ZAG&lt;/mtext&gt;&quot;
-
-      
-    formatZag1(args : L E) : S ==
-    -- make alternative ZAG format without diminishing fonts, maybe
-    -- use a table
-    -- {{ZAG}{1}{7}}
-      tmpZag : L E := first args pretend L E
-      #args &gt; 1 =&gt; &quot;&lt;mfrac&gt;&quot;formatMml(first rest tmpZag,minPrec)&quot;&lt;mrow&gt;&lt;mn&gt;&quot;formatMml(first rest rest tmpZag,minPrec)&quot;&lt;/mn&gt;&lt;mo&gt;+&lt;/mo&gt;&quot;formatZag(rest args)&quot;&lt;/mrow&gt;&lt;/mfrac&gt;&quot;
-      (first args = &quot;...&quot;:: E)@Boolean =&gt; &quot;&lt;mo&gt;&amp;#x2026;&lt;/mo&gt;&quot;
-      error &quot;formatZag1: Unexpected kind of ZAG&quot;
-
-
-    formatMml(expr : E,prec : I) ==
-      i,len : Integer
-      intSplitLen : Integer := 20
-      ATOM(expr)$Lisp@Boolean =&gt;
-        str := stringify expr
-        len := #str
-	-- this bit seems to deal with integers
-        FIXP$Lisp expr =&gt;
-          i := expr pretend Integer
-          if (i &lt; 0) or (i &gt; 9)
-            then
-              group
-                 nstr : String := &quot;&quot;
-                 -- insert some blanks into the string, if too long
-                 while ((len := #str) &gt; intSplitLen) repeat
-                   nstr := concat [nstr,&quot; &quot;,
-                     elt(str,segment(1,intSplitLen)$US)]
-                   str := elt(str,segment(intSplitLen+1)$US)
-                 empty? nstr =&gt; concat [&quot;&lt;mn&gt;&quot;,str,&quot;&lt;/mn&gt;&quot;]
-                 nstr :=
-                   empty? str =&gt; nstr
-                   concat [nstr,&quot; &quot;,str]
-                 concat [&quot;&lt;mn&gt;&quot;,elt(nstr,segment(2)$US),&quot;&lt;/mn&gt;&quot;]
-            else str := concat [&quot;&lt;mn&gt;&quot;,str,&quot;&lt;/mn&gt;&quot;]
-        str = &quot;%pi&quot; =&gt; &quot;&lt;mi&gt;&amp;#x003C0;&lt;/mi&gt;&quot;
-	-- pi
-        str = &quot;%e&quot;  =&gt; &quot;&lt;mi&gt;&amp;#x02147;&lt;/mi&gt;&quot;
-	-- ExponentialE
-        str = &quot;%i&quot;  =&gt; &quot;&lt;mi&gt;&amp;#x02148;&lt;/mi&gt;&quot;
-	-- ImaginaryI
-        len &gt; 0 and str.1 = char &quot;%&quot; =&gt; concat(concat(&quot;&lt;mi&gt;&quot;,str),&quot;&lt;/mi&gt;&quot;)
-        len &gt; 1 and digit? str.1 =&gt; concat [&quot;&lt;mn&gt;&quot;,str,&quot;&lt;/mn&gt;&quot;] -- should handle floats
-	-- presumably this is a literal string
-        len &gt; 0 and str.1 = char &quot;_&quot;&quot; =&gt;
-          concat(concat(&quot;&lt;mtext&gt;&quot;,str),&quot;&lt;/mtext&gt;&quot;)
-        len = 1 and str.1 = char &quot; &quot; =&gt; &quot; &quot;
-        (i := position(str,specialStrings)) &gt; 0 =&gt;
-          specialStringsInMML.i
-        (i := position(char &quot; &quot;,str)) &gt; 0 =&gt;
-          -- We want to preserve spacing, so use a roman font.
-	  -- What's this for?  Leave the \rm in for now so I can see
-	  -- where it arises.  Removed 2007-02-14
-          concat(concat(&quot;&lt;mtext&gt;&quot;,str),&quot;&lt;/mtext&gt;&quot;)
-	-- if we get to here does that mean it's a variable?
-        concat [&quot;&lt;mi&gt;&quot;,str,&quot;&lt;/mi&gt;&quot;]
-      l : L E := (expr pretend L E)
-      null l =&gt; blank
-      op : S := stringify first l
-      args : L E := rest l
-      nargs : I := #args
-      -- need to test here in case first l is SUPERSUB case and then
-      -- pass first l and args to formatSuperSub.
-      position(&quot;SUPERSUB&quot;,op,1) &gt; 0 =&gt;
-        formatSuperSub(first l,args,minPrec)
-      -- now test for SUB
-      position(&quot;SUB&quot;,op,1) &gt; 0 =&gt;
-        formatSub1(first l,args,minPrec)
-
-      -- special cases
-      member?(op, specialOps) =&gt; formatSpecial(op,args,prec)
-      member?(op, plexOps)    =&gt; formatPlex(op,args,prec)
-
-      -- nullary case
-      0 = nargs =&gt; formatNullary op
-
-      -- unary case
-      (1 = nargs) and member?(op, unaryOps) =&gt;
-        formatUnary(op, first args, prec)
-
-      -- binary case
-      (2 = nargs) and member?(op, binaryOps) =&gt;
-        formatBinary(op, args, prec)
-
-      -- nary case
-      member?(op,naryNGOps) =&gt; formatNaryNoGroup(op,args, prec)
-      member?(op,naryOps) =&gt; formatNary(op,args, prec)
-
-      op := formatMml(first l,minPrec)
-      formatFunction(op,args,prec)
-
-@
-\subsection{Mathematical Markup Language Form}
-\pagehead{MathMLForm}{MMLFORM}
-\pagepic{ps/v104mathmlform.ps}{MMLFORM}{1.00}
-
-{\bf Exports:}\\
-\begin{tabular}{lllll}
-\cross{MMLFORM}{coerce} &amp;
-\cross{MMLFORM}{coerceL} &amp;
-\cross{MMLFORM}{coerceS} &amp;
-\cross{MMLFORM}{display} &amp;
-\cross{MMLFORM}{exprex} \\
-\cross{MMLFORM}{hash} &amp;
-\cross{MMLFORM}{latex} &amp;
-\cross{MMLFORM}{?=?} &amp;
-\cross{MMLFORM}{?\~{}=?} &amp;
-\end{tabular}
-
-&lt;&lt;package MMLFORM MathMLForm&gt;&gt;=
-&lt;&lt;public declarations&gt;&gt;
-&lt;&lt;private constant declarations&gt;&gt;
-&lt;&lt;private function declarations&gt;&gt;
-&lt;&lt;public function definitions&gt;&gt;
-&lt;&lt;display functions&gt;&gt;
-&lt;&lt;formatting functions&gt;&gt;
-
-@
-&lt;&lt;MMLFORM.dotabb&gt;&gt;=
-&quot;MMLFORM&quot; [color=&quot;#FF4488&quot;,href=&quot;bookvol10.4.pdf#nameddest=MMLFORM&quot;]
-&quot;FSAGG&quot; [color=&quot;#4488FF&quot;,href=&quot;bookvol10.2.pdf#nameddest=FSAGG&quot;]
-&quot;MMLFORM&quot; -&gt; &quot;FSAGG&quot;
-
-@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{package MATCAT2 MatrixCategoryFunctions2}
 \pagehead{MatrixCategoryFunctions2}{MATCAT2}
 \pagepic{ps/v104MatrixCategoryFunctions2.ps}{MATCAT2}{1.00}
@@ -58965,11 +57536,11 @@ MatrixCommonDenominator(R, Q): Exports == Implementation where
  
     clearDenominator m ==
       d := commonDenominator m
-      map(numer(d * #1), m)
+      map(x +-&gt; numer(d*x), m)
  
     splitDenominator m ==
       d := commonDenominator m
-      [map(numer(d * #1), m), d]
+      [map(x +-&gt; numer(d*x), m), d]
  
     if R has GcdDomain then
       commonDenominator m == lcm map(denom, parts m)
@@ -59140,14 +57711,14 @@ MatrixLinearAlgebraFunctions(R,Row,Col,M):Exports == Implementation where
              -- elementary operation of second kind: add to row i--
                          -- a*row j  (i^=j) --
     elRow2!(m : M,a:R,i:I,j:I) : M ==
-      vec:= map(a*#1,row(m,j))
+      vec:= map((r1:R):R +-&gt; a*r1,row(m,j))
       vec:=map(&quot;+&quot;,row(m,i),vec)
       setRow!(m,i,vec)
       m
              -- elementary operation of second kind: add to column i --
                            -- a*column j (i^=j) --
     elColumn2!(m : M,a:R,i:I,j:I) : M ==
-      vec:= map(a*#1,column(m,j))
+      vec:= map((r1:R):R +-&gt; a*r1,column(m,j))
       vec:=map(&quot;+&quot;,column(m,i),vec)
       setColumn!(m,i,vec)
       m
@@ -59241,14 +57812,15 @@ MatrixLinearAlgebraFunctions(R,Row,Col,M):Exports == Implementation where
         nullSpace y == nullSpace(y)$IMATLIN
       else
         nullSpace y ==
-          [map(#1, v)$FLA2 for v in nullSpace(map(#1, y)$MAT2)$MMATLIN]
+          [map((r1:R):R +-&gt; r1, v)$FLA2
+            for v in nullSpace(map((r2:R):R +-&gt; r2, y)$MAT2)$MMATLIN]
 
     else if R has IntegralDomain then
-      QF      ==&gt; Fraction R
-      Row2    ==&gt; Vector QF
-      Col2    ==&gt; Vector QF
-      M2      ==&gt; Matrix QF
-      IMATQF  ==&gt; InnerMatrixQuotientFieldFunctions(R,Row,Col,M,QF,Row2,Col2,M2)
+      QF     ==&gt; Fraction R
+      Row2   ==&gt; Vector QF
+      Col2   ==&gt; Vector QF
+      M2     ==&gt; Matrix QF
+      IMATQF ==&gt; InnerMatrixQuotientFieldFunctions(R,Row,Col,M,QF,Row2,Col2,M2)
 
       nullSpace m == nullSpace(m)$IMATQF
 
@@ -59468,7 +58040,8 @@ MeshCreationRoutinesForThreeDimensions():Exports == Implementation where
     makePt:(SF,SF,SF,SF) -&gt; POINT
     makePt(x,y,z,c) == point(l : List SF := [x,y,z,c])
     ptFunc(f,g,h,c) ==
-      x := f(#1,#2); y := g(#1,#2); z := h(#1,#2)
+     (z1:SF,z2:SF):POINT +-&gt;
+      x := f(z1,z2); y := g(z1,z2); z := h(z1,z2)
       makePt(x,y,z,c(x,y,z))
 
     -- parameterized equations of two variables
@@ -59532,7 +58105,8 @@ MeshCreationRoutinesForThreeDimensions():Exports == Implementation where
     -- explicit equations of two variables
     meshFun2Var(zFun,colorFun,xSeg,ySeg,opts) ==
       -- here, we construct the data for a function of two variables
-      meshPar2Var(#1,#2,zFun,colorFun,xSeg,ySeg,opts)
+      meshPar2Var((z1:SF,z2:SF):SF +-&gt; z1,
+                  (x1:SF,x2:SF):SF +-&gt; x2,zFun,colorFun,xSeg,ySeg,opts)
 
 @
 &lt;&lt;MESH.dotabb&gt;&gt;=
@@ -59616,7 +58190,7 @@ ModularDistinctDegreeFactorizer(U):C == T where
   T == add
     reduction(u:U,p:I):U ==
        zero? p =&gt; u
-       map(positiveRemainder(#1,p),u)
+       map((i1:I):I +-&gt; positiveRemainder(i1,p),u)
     merge(p:I,q:I):Union(I,&quot;failed&quot;) ==
        p = q =&gt; p
        p = 0 =&gt; q
@@ -59857,7 +58431,7 @@ ModularHermitianRowReduction(R): Exports == Implementation where
     determinantOfMinor: M -&gt; R
     enumerateBinomial: (List Z, Z, Z) -&gt; List Z
 
-    nonzero? v == any?(#1 ^= 0, v)
+    nonzero? v == any?(s +-&gt; s ^= 0, v)
 
 -- returns [a, i, rown] if v = [0,...,0,a,0,...,0]
 -- where a &lt;&gt; 0 and i is the index of a, &quot;failed&quot; otherwise.
@@ -59928,7 +58502,7 @@ ModularHermitianRowReduction(R): Exports == Implementation where
       rowEchelon(u.mat, u.val)
 
     vconc(y, m) ==
-      vertConcat(diagonalMatrix new(ncols y, m)$V, map(#1 rem m, y))
+      vertConcat(diagonalMatrix new(ncols y, m)$V, map(s +-&gt; s rem m, y))
 
     order(m, p) ==
       zero? m =&gt; -1
@@ -60449,7 +59023,7 @@ MPolyCatRationalFunctionFactorizer(E,OV,R,PRF) : C == T
        ground? f =&gt; pushuconst(retract f,x)
        v:=mainVariable(f)::OV
        g:=univariate(f,v)
-       multivariate(map(pushup(#1,x),g),v)
+       multivariate(map((y:PRF):PRF +-&gt; pushup(y,x),g),v)
 
       ----  push x back from the coefficient domain ----
      pushuconst(r:F,x:OV):PRF ==
@@ -60767,9 +59341,11 @@ MultFiniteFactorize(OV,E,F,PG) : C == T
             [lfg.contp,append(factorlist,lfg.factors)]
 
 
-        om:=map(pushup(#1,basicVar),um)$UPCF2(P,SUP P,PG,SUP PG)
+        om:=map((p1:P):PG+-&gt;pushup(p1,basicVar),um)$UPCF2(P,SUP P,PG,SUP PG)
         sqfacs:=squareFree(om)
-        lcont:=map(pushdown(#1,basicVar),unit sqfacs)$UPCF2(PG,SUP PG,P,SUP P)
+        lcont:=
+          map((p1:PG):P+-&gt;pushdown(p1,basicVar),unit sqfacs)_
+            $UPCF2(PG,SUP PG,P,SUP P)
 
                                    ----   Factorize the content  ----
         if ground? lcont then
@@ -60780,7 +59356,7 @@ MultFiniteFactorize(OV,E,F,PG) : C == T
         factorlist:=flead.factors
 
                                  ----  Make the polynomial square-free  ----
-        sqqfact:=[[map(pushdown(#1,basicVar),ff.factor),ff.exponent]
+        sqqfact:=[[map((p:PG):P+-&gt;pushdown(p,basicVar),ff.factor),ff.exponent]
                       for ff in factors sqfacs]
 
                         ---  Factorize the primitive square-free terms ---
@@ -60795,7 +59371,8 @@ MultFiniteFactorize(OV,E,F,PG) : C == T
           else lf:=mfpol(ffactor,dx,lvar,ldeg)
           auxfl:=[[lfp,ffexp]$SUParFact  for lfp in lf]
           factorlist:=append(factorlist,auxfl)
-        lcfacs := */[leadingCoefficient leadingCoefficient(f.irr)**((f.pow)::NNI)
+        lcfacs := 
+           */[leadingCoefficient leadingCoefficient(f.irr)**((f.pow)::NNI)
                              for f in factorlist]
         [(leadingCoefficient leadingCoefficient(um) exquo lcfacs)::R,
                        factorlist]$SUPFinalFact
@@ -60805,14 +59382,13 @@ MultFiniteFactorize(OV,E,F,PG) : C == T
         ld:=degree(um,lv)
         dx:=&quot;min&quot;/ld
         basicVar:=lv.position(dx,ld)
-        cm:=map(pushdown(#1,basicVar),um)$UPCF2(PG,SUP PG,P,SUP P)
+        cm:=map((p1:PG):P+-&gt;pushdown(p1,basicVar),um)$UPCF2(PG,SUP PG,P,SUP P)
         flist := supFactor(cm,dx)
         pushupconst(flist.contp,basicVar)::SUP(PG) *
-          (*/[primeFactor(map(pushup(#1,basicVar),u.irr)$UPCF2(P,SUP P,PG,SUP PG),
+         (*/[primeFactor(
+           map((p1:P):PG+-&gt;pushup(p1,basicVar),u.irr)$UPCF2(P,SUP P,PG,SUP PG),
                  u.pow) for u in flist.factors])
 
-
-
     mFactor(m:P,dx:Z) : MFinalFact ==
       ground?(m) =&gt; constantCase(m,empty())
       lvar:L OV:= variables m
@@ -60904,7 +59480,7 @@ MultFiniteFactorize(OV,E,F,PG) : C == T
 
       ----  push x in the coefficient domain for a term ----
     pushdcoef(t:PG):P ==
-       map(coerce(#1)$R,t)$MPolyCatFunctions2(OV,E,
+       map((f1:F):R+-&gt;coerce(f1)$R,t)$MPolyCatFunctions2(OV,E,
                                            IndexedExponents OV,F,R,PG,P)
 
 
@@ -61195,7 +59771,7 @@ MultipleMap(R1,UP1,UPUP1,R2,UP2,UPUP2): Exports == Implementation where
     rfmap(f, q) == map(f, numer q) / map(f, denom q)
 
     map(f, p) ==
-      map(rfmap(f, #1),
+      map(x +-&gt; rfmap(f,x),
           p)$UnivariatePolynomialCategoryFunctions2(Q1, UPUP1, Q2, UPUP2)
 
 @
@@ -61530,8 +60106,8 @@ MultivariateLifting(E,OV,R,P) : C == T
       a:P:= fval.first ::P
       y:OV:=lvar.first
       lvar:=lvar.rest
-      listpolv:L SUP := [map(eval(#1,y,a),f1) for f1 in flist]
-      um:=map(eval(#1,y,a),m)
+      listpolv:L SUP := [map((p1:P):P +-&gt; eval(p1,y,a),f1) for f1 in flist]
+      um:=map((p1:P):P +-&gt; eval(p1,y,a),m)
       flcoef:=corrPoly(um,lvar,fval.rest,ld.rest,listpolv,table,pmod)
       if flcoef case &quot;failed&quot; then return &quot;failed&quot;
       else lcoef:=flcoef :: L SUP
@@ -61542,16 +60118,15 @@ MultivariateLifting(E,OV,R,P) : C == T
       for l in 1..deg1 repeat
         if diff=0 then return lcoef
         pol := pol*polc
-        (ddiff:= map(eval(normalDerivM(#1,l,y),y,a),diff)) = 0 =&gt; &quot;next l&quot;
+        (ddiff:=map((p:P):P+-&gt;eval(normalDerivM(p,l,y),y,a),diff)) = 0
+              =&gt; &quot;next l&quot;
         fbeta := corrPoly(ddiff,lvar,fval.rest,ld.rest,listpolv,table,pmod)
         if fbeta case &quot;failed&quot; then return &quot;failed&quot;
         else beta:=fbeta :: L SUP
         lcoef := [lcoef.i+beta.i*pol  for i in 1..np]
         diff:=diff- +/[listcong.i*beta.i for i in 1..np]*pol
       lcoef
- 
- 
- 
+  
     lifting1(m:SUP,lvar:L OV,plist:L SUP,vlist:L R,tlist:L P,_
       coeflist:L VTerm,listdeg:L NNI,table:Table,pmod:R) :Union(L SUP,&quot;failed&quot;) ==
     -- The factors of m (multivariate) are determined ,
@@ -61592,7 +60167,7 @@ MultivariateLifting(E,OV,R,P) : C == T
           if not(empty? coeflist) then
             plist:=[subscoef(tpol,clist)
                    for tpol in plist for clist in clv]
-        mj := map(eval(#1,li,vlist),m)  --m(x1,..,xj,aj+1,..,an
+        mj := map((p1:P):P+-&gt;eval(p1,li,vlist),m)  --m(x1,..,xj,aj+1,..,an
         polc := x::P - v::P  --(xj-aj)
         pol:= 1$P
       --Construction of Rik, k in 1..right degree for xj+1
@@ -61601,8 +60176,8 @@ MultivariateLifting(E,OV,R,P) : C == T
          mc := */[term for term in plist]-mj
          if mc=0 then leave &quot;next var&quot;
          --Modulus Dk
-         mc:=map(normalDerivM(#1,k,x),mc)
-         (mc := map(eval(#1,[x],[v]),mc))=0 =&gt; &quot;next k&quot;
+         mc:=map((p1:P):P +-&gt; normalDerivM(p1,k,x),mc)
+         (mc := map((p1:P):P +-&gt; eval(p1,[x],[v]),mc))=0 =&gt; &quot;next k&quot;
          flalpha:=corrPoly(mc,subsvar.rest,subsval.rest,
                           ldeg.rest,conglist,table,pmod)
          if flalpha case &quot;failed&quot; then return &quot;failed&quot;
@@ -61821,7 +60396,7 @@ MultivariateSquareFree (E,OV,R,P) : C == T where
        sqlc:=squareFree lcf
        unitsq:=unitsq*(unit sqlc)
        sqlead:= factors sqlc
-     lfact:=sort(#1.exponent &gt; #2.exponent,lfact)
+     lfact:=sort((z1:FFE,z2:FFE):Boolean +-&gt; z1.exponent &gt; z2.exponent,lfact)
      while lfact^=[] repeat
        pfact:=lfact.first
        (g0,exp0):=(pfact.factor,pfact.exponent)
@@ -114974,7 +113549,7 @@ NormInMonogenicAlgebra(R, PolR, E, PolE): Exports == Implementation where
     import UnivariatePolynomialCategoryFunctions2(R, PolR, PolR, SUP PolR)
 
     PolR2SUP: PolR -&gt; SUP PolR
-    PolR2SUP q == map(#1::PolR, q)
+    PolR2SUP q == map(x +-&gt; x::PolR, q)
 
     defpol := PolR2SUP(definingPolynomial()$E)
 
@@ -115156,7 +113731,7 @@ NPCoef(BP,E,OV,R,P) : C == T where
        [empty(),ldtcf,factlist,leadlist]$DetCoef
      else  detufact:=cons(uu::USP,detufact)
     else
-      ltodel:=sort(#1&gt;#2,ltodel)
+      ltodel:=sort((n1:NNI,n2:NNI):Boolean +-&gt; n1&gt;n2,ltodel)
       for i in ltodel repeat
         detcoef:=delete(detcoef,i)
         factlist:=delete(factlist,i)
@@ -115220,7 +113795,7 @@ NPCoef(BP,E,OV,R,P) : C == T where
             lterase:=cons(k,lterase)
             cterm.coefu:=(cterm.coefu - */[cc.pcoef for cc in celt])
       if not empty? lterase then
-        lterase:=sort(#1&gt;#2,lterase)
+        lterase:=sort((n1:NNI,n2:NNI):Boolean +-&gt; n1&gt;n2,lterase)
         for i in lterase repeat ctdet:=delete(ctdet,i)
         cterm.detfacts:=ctdet
         lterase:=empty()
@@ -115558,7 +114133,8 @@ NumberFormats(): NFexports == NFimplementation where
            -- if there is an &quot;E&quot; then there must be a &quot;.&quot;
            -- this is not caught by code above
            -- also if the exponent is v.big the above returns false
-           not (any?(#1=char &quot;E&quot;,s) and not any?(#1=char &quot;.&quot;,s) )
+           not (any?((c1:C):Boolean +-&gt; c1=char &quot;E&quot;,s) 
+             and not any?((c2:C):Boolean +-&gt; c2=char &quot;.&quot;,s) )
 
 --        Original interpreter function:
 --        )lis (defun scanstr(x) (spadcomp::|parseFromString| x))
@@ -117655,7 +116231,7 @@ ODEIntegration(R, F): Exports == Implementation where
     isQlog: F -&gt; Union(REC, &quot;failed&quot;)
     mkprod: List REC -&gt; F
 
-    diff x == differentiate(#1, x)
+    diff x == (f1:F):F +-&gt; differentiate(f1, x)
 
 -- This is the integration function to be used for quadratures
     int(f, x) ==
@@ -117668,7 +116244,7 @@ ODEIntegration(R, F): Exports == Implementation where
       empty? l =&gt; 1
       rec := first l
       d := denom(rec.coef)
-      ll := select(denom(#1.coef) = d, l)
+      ll := select((z1:REC):Boolean +-&gt; denom(z1.coef) = d, l)
       nthRoot(*/[r.logand ** numer(r.coef) for r in ll], d) *
         mkprod setDifference(l, ll)
 
@@ -117775,7 +116351,7 @@ ODETools(F, LODO): Exports == Implementation where
       m:M := zero(q, #v)
       for i in minRowIndex m .. maxRowIndex m repeat
         setRow_!(m, i, v)
-        v := map_!(diff #1, v)
+        v := map_!((f1:F):F +-&gt; diff f1, v)
       m
 
     variationOfParameters(op, g, b) ==
@@ -118782,7 +117358,7 @@ PAdicWildFunctionFieldIntegralBasis(K,R,UP,F): Exports == Implementation where
     import TriangularMatrixOperations(R, Vector R, Vector R, Matrix R)
 
     reducedDiscriminant f ==
-      ff : SUP Q := mapUnivariate(#1 :: Q,f)$IBPTOOLS(R,UP,SUP UP,Q)
+      ff : SUP Q := mapUnivariate((r1:R):Q+-&gt;r1 :: Q,f)$IBPTOOLS(R,UP,SUP UP,Q)
       ee := extendedEuclidean(ff,differentiate ff)
       cc := concat(coefficients(ee.coef1),coefficients(ee.coef2))
       cden := splitDenominator(cc)$CDEN(R,Q,L Q)
@@ -118811,14 +117387,14 @@ PAdicWildFunctionFieldIntegralBasis(K,R,UP,F): Exports == Implementation where
       -- construct extension of degree r over K
       E := SAE(K,SUP K,irrPoly)
       -- lift coefficients to elements of E
-      poly := mapBivariate(#1 :: E,poly0)$IBPTOOLS(K,R,UP,E)
+      poly := mapBivariate((k1:K):E +-&gt; k1::E,poly0)$IBPTOOLS(K,R,UP,E)
       redDisc0 := reducedDiscriminant poly0
-      redDisc := mapUnivariate(#1 :: E,redDisc0)$IBPTOOLS(K,R,UP,E)
-      prime := mapUnivariate(#1 :: E,prime0)$IBPTOOLS(K,R,UP,E)
+      redDisc := mapUnivariate((k1:K):E +-&gt; k1::E,redDisc0)$IBPTOOLS(K,R,UP,E)
+      prime := mapUnivariate((k1:K):E +-&gt; k1::E,prime0)$IBPTOOLS(K,R,UP,E)
       sae := SAE(E,SUP E,prime)
       -- reduction (mod prime) of polynomial of which poly is the kth power
       redIrrPoly :=
-        pp := mapBivariate(#1 :: E,irrPoly0)$IBPTOOLS(K,R,UP,E)
+        pp := mapBivariate((k1:K):E +-&gt; k1::E,irrPoly0)$IBPTOOLS(K,R,UP,E)
         mapUnivariate(reduce,pp)$IBPTOOLS(SUP E,SUP SUP E,SUP SUP SUP E,sae)
       -- factor the reduction
       factorListSAE := factors factor(redIrrPoly)$DDFACT(sae,SUP sae)
@@ -119597,7 +118173,8 @@ ParametricLinearEquations(R,Var,Expon,GR):
       count
 
     dmp2rfi (p:GR):GF ==
-      map$plift ((convert #1)@Symbol::GF, #1::PR::GF, p)
+      map$plift ((v1:Var):GF +-&gt; (convert v1)@Symbol::GF, 
+                 (r1:R):GF +-&gt; r1::PR::GF, p)
 
 
     rdregime inname ==
@@ -119644,7 +118221,7 @@ ParametricLinearEquations(R,Var,Expon,GR):
             neweqn:Rec:=construct(detmat,rss,nss)
             DetEqn:=cons(neweqn, DetEqn)
       found =&gt; [first DetEqn]$Eqns
-      sort(degree #1.det &lt; degree #2.det, DetEqn)
+      sort((z1:Rec,z2:Rec):Boolean +-&gt; degree z1.det &lt; degree z2.det, DetEqn)
 
 
 
@@ -119787,7 +118364,8 @@ PartialFractionPackage(R): Cat == Capsule where
       partialFraction: (PR, Factored PR, Symbol) -&gt; Any
          ++ partialFraction(num, facdenom, var) returns the partial fraction
          ++ decomposition of the rational function whose numerator is num and
-         ++ whose factored denominator is facdenom with respect to the variable var.
+         ++ whose factored denominator is facdenom with respect to the 
+         ++ variable var.
    Capsule == add
       partialFraction(rf, v) ==
          df := factor(denom rf)$MultivariateFactorize(Symbol, INDE,R,PR)
@@ -119795,7 +118373,8 @@ PartialFractionPackage(R): Cat == Capsule where
 
       makeSup(p:Polynomial R, v:Symbol) : SparseUnivariatePolynomial FPR ==
          up := univariate(p,v)
-         map(#1::FPR,up)$UnivariatePolynomialCategoryFunctions2(PR, SUP PR, FPR, SUP FPR)
+         map((z1:PR):FPR +-&gt; z1::FPR,up)_
+           $UnivariatePolynomialCategoryFunctions2(PR, SUP PR, FPR, SUP FPR)
 
       partialFraction(p, facq, v) ==
          up := UnivariatePolynomial(v, Fraction Polynomial R)
@@ -119897,7 +118476,7 @@ PartitionsAndPermutations: Exports == Implementation where
     partitions(M,N,n) ==
       zero? n =&gt; concat(empty()$L(I),empty()$(ST L I))
       zero? M or zero? N or n &lt; 0 =&gt; empty()
-      c := map(concat(N,#1),partitions(M - 1,N,n - N))
+      c := map((l1:List(I)):List(I)+-&gt;concat(N,l1),partitions(M - 1,N,n - N))
       concat(c,partitions(M,N - 1,n))
  
     partitions n == partitions(n,n,n)
@@ -119920,11 +118499,12 @@ PartitionsAndPermutations: Exports == Implementation where
     shuffle(x,y)==
       empty? x =&gt; concat(y,empty())$(ST L I)
       empty? y =&gt; concat(x,empty())$(ST L I)
-      concat(map(concat(first x,#1),shuffle(rest x,y)),_
-             map(concat(first y,#1),shuffle(x,rest y)))
+      concat(map((l1:List(I)):List(I)+-&gt;concat(first x,l1),shuffle(rest x,y)),_
+             map((l2:List(I)):List(I)+-&gt;concat(first y,l2),shuffle(x,rest y)))
  
     shufflein(x,yy) ==
-      concat(map(shuffle(x,#1),yy)$ST2(L I,ST L I))$ST1(L I)
+      concat(map((l1:List(I)):ST(L I)+-&gt;shuffle(x,l1),yy)_
+        $ST2(L I,ST L I))$ST1(L I)
  
     -- rpt(n,m) is the list of n m's
     rpt: (I,I) -&gt; L I
@@ -120007,7 +118587,7 @@ PatternFunctions1(R:SetCategory, D:Type): with
     st      : (Pattern R, List Any) -&gt; Pattern R
  
     st(p, l)          == withPredicates(p, concat(predicates p, l))
-    predicate p       == applyAll(predicates p, #1)
+    predicate p       == (d1:D):Boolean +-&gt; applyAll(predicates p, d1)
     addBadValue(p, v) == addBadValue(p, coerce(v)$A1D)
     badValues p       == [retract(v)$A1D for v in getBadValues p]
     suchThat(p, l, f) == setTopPredicate(copy p, l, coerce(f)$A1L)
@@ -120294,7 +118874,7 @@ PatternMatchFunctionSpace(S, R, F): Exports== Implementation where
         patternMatch(denom(x)::F, uq.den, l)
       (u := isPlus p) case List(PAT) =&gt;
         (lx := isPlus x) case List(F) =&gt;
-          patternMatch(lx::List(F), u::List(PAT), +/#1, l, patternMatch)
+          patternMatch(lx::List(F), u::List(PAT), l1 +-&gt; +/l1, l, patternMatch)
         (u := optpair(u::List(PAT))) case List(PAT) =&gt;
           failed?(l := addMatch(first(u::List(PAT)), 0, l)) =&gt; failed()
           patternMatch(x, second(u::List(PAT)), l)
@@ -120398,9 +118978,11 @@ PatternMatchIntegerNumberSystem(I:IntegerNumberSystem): with
                                          uur.exponent, l,1)) =&gt; failed()
        patternMatchRestricted(pr.base, uur.val, l, 1)
      (w := isTimes p) case List(PAT) =&gt;
-       patternMatchSumProd(x, w::List(PAT), l, #1 exquo #2, 1)
+       patternMatchSumProd(x, w::List(PAT), l,
+        (i1:I,i2:I):Union(I,&quot;failed&quot;) +-&gt; i1 exquo i2, 1)
      (w := isPlus p) case List(PAT) =&gt;
-      patternMatchSumProd(x,w::List(PAT),l,(#1-#2)::Union(I,&quot;failed&quot;),0)
+      patternMatchSumProd(x,w::List(PAT),l,
+        (i1:I,i2:I):Union(I,&quot;failed&quot;) +-&gt; (i1-i2)::Union(I,&quot;failed&quot;),0)
      (uv := isQuotient p) case Record(num:PAT, den:PAT) =&gt;
        uvr := uv::Record(num:PAT, den:PAT)
        (r := retractIfCan(uvr.num)@Union(Integer,&quot;failed&quot;)) case Integer
@@ -120507,10 +119089,12 @@ PatternMatchIntegration(R, F): Exports == Implementation where
     pmb := new pm
 
     c := optional(pmc::F)
-    w := suchThat(optional(pmw::F), empty? variables #1)
-    s := suchThat(optional(pms::F), empty? variables #1 and real? #1)
+    w := suchThat(optional(pmw::F), 
+      (x1:F):Boolean +-&gt; empty? variables x1)
+    s := suchThat(optional(pms::F), 
+      (x1:F):Boolean +-&gt; empty? variables x1 and real? x1)
     m := suchThat(optional(pmm::F),
-                    (retractIfCan(#1)@Union(Z,&quot;failed&quot;) case Z) and #1 &gt;= 0)
+      (x1:F):Boolean+-&gt;(retractIfCan(x1)@Union(Z,&quot;failed&quot;) case Z) and x1 &gt;= 0)
 
     spi := sqrt(pi()$F)
 
@@ -120605,8 +119189,9 @@ PatternMatchIntegration(R, F): Exports == Implementation where
            matchdilog(f, x) ==
              n := numer f
              df := (d := denom f)::F
-             for k in select_!(gooddilog?(#1, n, d), variables n)$List(K) repeat
-               not empty?(l := matchdilog0(f, k, x, n, df)) =&gt; return l
+             for k in select_!(
+              (x1:K):Boolean +-&gt; gooddilog?(x1,n,d),variables n)$List(K) repeat
+                 not empty?(l := matchdilog0(f, k, x, n, df)) =&gt; return l
              empty()
 
 -- matches the integral to a result of the form d * dilog(a) + int(v)
@@ -120623,8 +119208,9 @@ PatternMatchIntegration(R, F): Exports == Implementation where
 -- returns [u,d,v] or []
            matchli(f, x) ==
              d := denom f
-             for k in select_!(goodlilog?(#1, d), variables d)$List(K) repeat
-               not empty?(l := matchli0(f, k, x)) =&gt; return l
+             for k in select_!(
+               (x1:K):Boolean+-&gt;goodlilog?(x1,d), variables d)$List(K) repeat
+                 not empty?(l := matchli0(f, k, x)) =&gt; return l
              empty()
 
 -- matches the integral to a result of the form d * li(a) + int(v)
@@ -120745,7 +119331,8 @@ PatternMatchIntegration(R, F): Exports == Implementation where
            pmintegrate(f, x, a, b) ==
 --             zero? a and one? whatInfinity b =&gt;
              zero? a and ((whatInfinity b) = 1) =&gt;
-               formula1(f, x, constant(x::F), suchThat(c, freeOf?(#1, x)))
+               formula1(f, x, constant(x::F), 
+                 suchThat(c, (x1:F):Boolean +-&gt; freeOf?(x1, x)))
              &quot;failed&quot;
 
 @
@@ -120986,8 +119573,9 @@ PatternMatchPolynomialCategory(S,E,V,R,P):Exports== Implementation where
         vmatch(v::V, p, l)
       (u := isPlus p) case List(PAT) =&gt;
         (lx := isPlus x) case List(P) =&gt;
-          patternMatch(lx::List(P), u::List(PAT), +/#1, l,
-                                       patternMatch(#1, #2, #3, vmatch))
+          patternMatch(lx::List(P), u::List(PAT), 
+            (l1:List(P)):P +-&gt; +/l1, l, 
+              (p1:P,p2:PAT,p3:PRS):PRS +-&gt; patternMatch(p1, p2, p3, vmatch))
         (u := optpair(u::List(PAT))) case List(PAT) =&gt;
           failed?(l := addMatch(first(u::List(PAT)), 0, l)) =&gt; failed()
           patternMatch(x, second(u::List(PAT)), l, vmatch)
@@ -120995,7 +119583,7 @@ PatternMatchPolynomialCategory(S,E,V,R,P):Exports== Implementation where
       (u := isTimes p) case List(PAT) =&gt;
         (lx := isTimes x) case List(P) =&gt;
           patternMatchTimes(lx::List(P), u::List(PAT), l,
-                                       patternMatch(#1, #2, #3, vmatch))
+            (p1:P,p2:PAT,p3:PRS):PRS +-&gt; patternMatch(p1, p2, p3, vmatch))
         (u := optpair(u::List(PAT))) case List(PAT) =&gt;
           failed?(l := addMatch(first(u::List(PAT)), 1, l)) =&gt; failed()
           patternMatch(x, second(u::List(PAT)), l, vmatch)
@@ -121071,11 +119659,12 @@ PatternMatchPushDown(S, A, B): Exports == Implementation where
     fixPredicates: (PAT, PRB, PRA) -&gt; Union(REC, &quot;failed&quot;)
     fixList:(List PAT -&gt; PAT, List PAT, PRB, PRA) -&gt; Union(REC,&quot;failed&quot;)
 
-    fixPredicate f == f(#1::B)
+    fixPredicate f == (a1:A):Boolean +-&gt; f(a1::B)
 
     patternMatch(a, p, l) ==
       (u := fixPredicates(p, l, new())) case &quot;failed&quot; =&gt; failed()
-      union(l, map(#1::B, patternMatch(a, (u::REC).pat, (u::REC).res)))
+      union(l, map((a1:A):B +-&gt;a1::B, 
+                patternMatch(a, (u::REC).pat, (u::REC).res)))
 
     inA(p, l) ==
       (u := getMatch(p, l)) case &quot;failed&quot; =&gt; empty()
@@ -121100,11 +119689,11 @@ PatternMatchPushDown(S, A, B): Exports == Implementation where
       (r:=retractIfCan(p)@Union(S,&quot;failed&quot;)) case S or quoted? p =&gt;[p,la]
       (u := isOp p) case Record(op:BasicOperator, arg:List PAT) =&gt;
         ur := u::Record(op:BasicOperator, arg:List PAT)
-        fixList((ur.op) #1, ur.arg, lb, la)
+        fixList((l1:List(PAT)):PAT+-&gt; (ur.op) l1, ur.arg, lb, la)
       (us := isPlus p) case List(PAT) =&gt;
-        fixList(reduce(&quot;+&quot;, #1), us::List(PAT), lb, la)
+        fixList((l1:List(PAT)):PAT +-&gt; reduce(&quot;+&quot;, l1), us::List(PAT), lb, la)
       (us := isTimes p) case List(PAT) =&gt;
-        fixList(reduce(&quot;*&quot;, #1), us::List(PAT), lb, la)
+        fixList((l1:List(PAT)):PAT+-&gt;reduce(&quot;*&quot;, l1), us::List(PAT), lb, la)
       (v := isQuotient p) case Record(num:PAT, den:PAT) =&gt;
         vr := v::Record(num:PAT, den:PAT)
         (fn := fixPredicates(vr.num, lb, la)) case &quot;failed&quot; =&gt; &quot;failed&quot;
@@ -121351,8 +119940,9 @@ PatternMatchTools(S, R, P): Exports == Implementation where
       member?(mn1, lp) =&gt;
         (u := negConstant ls) case &quot;failed&quot; =&gt; failed()
         if (u::P ^= -1::P) then ls := concat(-u::P, ls)
-        patternMatch(remove(u::P,ls), remove(mn1,lp), */#1, l, pmatch)
-      patternMatch(ls, lp, */#1, l, pmatch)
+        patternMatch(remove(u::P,ls), remove(mn1,lp), 
+          (l1:List(P)):P +-&gt; */l1, l, pmatch)
+      patternMatch(ls, lp, (l1:List(P)):P +-&gt; */l1, l, pmatch)
 
 -- finds a match for p in ls, try not to match to a &quot;bad&quot; value
     findMatch(p, ls, l, ident, pmatch) ==
@@ -121417,13 +120007,14 @@ PatternMatchTools(S, R, P): Exports == Implementation where
       -- l1 = constant patterns (i.e. 'x, or sin('x))
       l1 := select(constant?, lp)
       -- l2 = patterns with a predicate attached to them
-      l2 := select(hasPredicate? #1 and not constant? #1, lp)
+      l2 := select((p1:PAT):Boolean+-&gt;hasPredicate? p1 and not constant? p1,lp)
       -- l3 = non-generic patterns without predicates
-      l3 := sort_!(depth(#1) &gt; depth(#2),
-        select(not(hasPredicate? #1 or generic? #1 or constant? #1),lp))
+      l3 := sort_!((z1:PAT,z2:PAT):Boolean+-&gt;depth(z1) &gt; depth(z2),
+        select((p2:PAT):Boolean+-&gt;not(hasPredicate? p2
+                  or generic? p2 or constant? p2),lp))
       -- l4 = generic patterns with predicates
-      l4 := select(generic? #1 and
-                              not(hasPredicate? #1 or constant? #1), lp)
+      l4 := select((p1:PAT):Boolean +-&gt; generic? p1 and
+                              not(hasPredicate? p1 or constant? p1), lp)
       rec:REC := [l, ls]
       (u := tryToMatch(l1, rec, ident, pmatch)) case &quot;failed&quot; =&gt;
         failed()
@@ -122156,8 +120747,9 @@ PiCoercions(R:Join(OrderedSet, IntegralDomain)): with
     p2e(numer f) / p2e(denom f)
 
   p2e p ==
-    map(#1::Expression(R), p)$SparseUnivariatePolynomialFunctions2(
-        Integer, Expression R) (pi()$Expression(R))
+    map((x1:Integer):Expression(R) +-&gt; x1::Expression(R), p)_
+      $SparseUnivariatePolynomialFunctions2(Integer, Expression R)_
+       (pi()$Expression(R))
 
 @
 &lt;&lt;PICOERCE.dotabb&gt;&gt;=
@@ -122291,10 +120883,12 @@ PlotTools(): Exports == Implementation where
       m
  
     xRange(list:L L Pt) ==
-      select2(list,lo(xRange0(#1)),min) .. select2(list,hi(xRange0(#1)),max)
+      select2(list,(u1:L(Pt)):SF +-&gt; lo(xRange0(u1)),min) _
+         .. select2(list,(v1:L(Pt)):SF +-&gt; hi(xRange0(v1)),max)
  
     yRange(list:L L Pt) ==
-      select2(list,lo(yRange0(#1)),min) .. select2(list,hi(yRange0(#1)),max)
+      select2(list,(u1:L(Pt)):SF +-&gt; lo(yRange0(u1)),min) _
+         .. select2(list,(v1:L(Pt)):SF +-&gt; hi(yRange0(v1)),max)
 
   --%Exported Functions
     calcRanges(llp) ==
@@ -122570,11 +121164,12 @@ PointsOfFiniteOrder(R0, F, UP, UPUP, R): Exports == Implementation where
       map(Q2F, p)$UnivariatePolynomialCategoryFunctions2(Q, UPQ, F, UP) (k::F)
 
     UP22UP(p:UP2, k:K):UP ==
-      map(UPQ2F(#1, k), p)$UnivariatePolynomialCategoryFunctions2(UPQ,UP2,F,UP)
+      map((p1:UPQ):F +-&gt; UPQ2F(p1, k), p)_
+        $UnivariatePolynomialCategoryFunctions2(UPQ,UP2,F,UP)
 
     UP32UPUP(p:UP3, k:K):UPUP ==
-      map(UP22UP(#1,k)::QF,
-          p)$UnivariatePolynomialCategoryFunctions2(UP2, UP3, QF, UPUP)
+      map((p1:UP2):QF +-&gt; UP22UP(p1,k)::QF,p)_
+        $UnivariatePolynomialCategoryFunctions2(UP2, UP3, QF, UPUP)
 
     if R0 has GcdDomain then
        cmult(l:List SMP):SMP == lcm l
@@ -122603,12 +121198,12 @@ PointsOfFiniteOrder(R0, F, UP, UPUP, R): Exports == Implementation where
 
     alglist d ==
       n := numer(i := ideal d)
-      select_!(has?(operator #1, ALGOP),
-               setUnion(klist denom i,
-                 &quot;setUnion&quot;/[aklist qelt(n,i) for i in minIndex n..maxIndex n]))
+      select_!((k1:K):Boolean +-&gt; has?(operator k1, ALGOP),
+          setUnion(klist denom i,
+            &quot;setUnion&quot;/[aklist qelt(n,i) for i in minIndex n..maxIndex n]))
 
     krmod(p,k) ==
-       map(kqmod(#1, k),
+       map(z1 +-&gt; kqmod(z1, k),
            p)$UnivariatePolynomialCategoryFunctions2(F, UP, UPQ, UP2)
 
     rmod p ==
@@ -122618,7 +121213,7 @@ PointsOfFiniteOrder(R0, F, UP, UPUP, R): Exports == Implementation where
       (map(Q2F, p)$SparseUnivariatePolynomialFunctions2(Q, F)) (k::F)
 
     raise2(p, k) ==
-      map(raise(#1, k),
+      map(z1 +-&gt; raise(z1, k),
           p)$UnivariatePolynomialCategoryFunctions2(UPQ, UP2, F, UP)
 
     algcurve(d, rc, k) ==
@@ -122633,22 +121228,22 @@ PointsOfFiniteOrder(R0, F, UP, UPUP, R): Exports == Implementation where
       pp := UP32UPUP(rc.ncurve, k)
       mm := pr.poly
       gf := InnerPrimeField p
-      m  := map(retract(#1)@Z :: gf,
-                         mm)$SparseUnivariatePolynomialFunctions2(Q, gf)
+      m  := map((z1:Q):gf +-&gt; retract(z1)@Z :: gf,mm)_
+              $SparseUnivariatePolynomialFunctions2(Q, gf)
 --      one? degree m =&gt;
       (degree m = 1) =&gt;
         alpha := - coefficient(m, 0) / leadingCoefficient m
         order(d, pp,
-           (map(numer(#1)::gf / denom(#1)::gf,
-            kqmod(#1,k))$SparseUnivariatePolynomialFunctions2(Q,gf))(alpha)
+           (z1:F):gf +-&gt; (map((q1:Q):gf +-&gt; numer(q1)::gf / denom(q1)::gf,
+            kqmod(z1,k))$SparseUnivariatePolynomialFunctions2(Q,gf))(alpha)
                                    )$ReducedDivisor(F, UP, UPUP, R, gf)
         -- d1 := toQ1(dd, mm)
         -- rat(pp, divisor ideal([(toQ1(b, mm) / d1)::QF::R,
                                        -- inv(d1::QF) * toQ2(h,mm)])$ID, p)
       sae:= SimpleAlgebraicExtension(gf,SparseUnivariatePolynomial gf,m)
       order(d, pp,
-           reduce(map(numer(#1)::gf / denom(#1)::gf,
-            kqmod(#1,k))$SparseUnivariatePolynomialFunctions2(Q,gf))$sae
+        (z1:F):sae +-&gt; reduce(map((q1:Q):gf +-&gt; numer(q1)::gf / denom(q1)::gf,
+            kqmod(z1,k))$SparseUnivariatePolynomialFunctions2(Q,gf))$sae
                                    )$ReducedDivisor(F, UP, UPUP, R, sae)
 
 -- returns the potential order of d, 0 if d is of infinite order
@@ -122673,7 +121268,8 @@ PointsOfFiniteOrder(R0, F, UP, UPUP, R): Exports == Implementation where
 -- returns the order of d mod p
     rat(pp, d, p) ==
       gf := InnerPrimeField p
-      order(d, pp, (qq := qmod #1;numer(qq)::gf / denom(qq)::gf)
+      order(d, pp, 
+        (q1:F):gf +-&gt; (qq := qmod q1;numer(qq)::gf / denom(qq)::gf)
                                     )$ReducedDivisor(F, UP, UPUP, R, gf)
 
 -- returns the potential order of d, 0 if d is of infinite order
@@ -122698,15 +121294,15 @@ PointsOfFiniteOrder(R0, F, UP, UPUP, R): Exports == Implementation where
       [r, d, splitDenominator(fmod p).num]
 
     toQ1(p, d) ==
-      map(Q2F(retract(#1 rem d)@Q),
+      map((p1:UPQ):F +-&gt; Q2F(retract(p1 rem d)@Q),
           p)$UnivariatePolynomialCategoryFunctions2(UPQ, UP2, F, UP)
 
     toQ2(p, d) ==
-      reduce map(toQ1(#1, d)::QF,
+      reduce map((p1:UP2):QF +-&gt; toQ1(p1, d)::QF,
         p)$UnivariatePolynomialCategoryFunctions2(UP2, UP3, QF, UPUP)
 
     kpmod(p, k) ==
-      map(krmod(retract(#1)@UP, k),
+      map((p1:QF):UP2 +-&gt; krmod(retract(p1)@UP, k),
         p)$UnivariatePolynomialCategoryFunctions2(QF, UPUP, UP2, UP3)
 
     order d ==
@@ -122723,7 +121319,8 @@ PointsOfFiniteOrder(R0, F, UP, UPUP, R): Exports == Implementation where
     goodRed(rec, res, h, b, d, p) ==
       zero?(rec.disc rem p) =&gt; &quot;failed&quot;
       gf := InnerPrimeField p
-      l  := [f.factor for f in factors factor(map(retract(#1)@Z :: gf,
+      l  := [f.factor for f in factors 
+             factor(map((z1:Q):gf +-&gt; retract(z1)@Z :: gf,
                rec.dfpoly)$SparseUnivariatePolynomialFunctions2(Q,
                  gf))$DistinctDegreeFactorize(gf,
 --                   SparseUnivariatePolynomial gf) | one?(f.exponent)]
@@ -122732,7 +121329,7 @@ PointsOfFiniteOrder(R0, F, UP, UPUP, R): Exports == Implementation where
       mdg := first l
       for ff in rest l repeat
         if degree(ff) &lt; degree(mdg) then mdg := ff
-      md := map(convert(#1)@Z :: Q,
+      md := map((z1:gf):Q +-&gt; convert(z1)@Z :: Q,
                  mdg)$SparseUnivariatePolynomialFunctions2(gf, Q)
       good?(res, h, b, d, p, md) =&gt; md
       &quot;failed&quot;
@@ -122824,7 +121421,8 @@ PointsOfFiniteOrderRational(UP, UPUP, R): Exports == Implementation where
     rat(pp, d, p) ==
       gf := InnerPrimeField p
       order(d, pp,
-        numer(#1)::gf / denom(#1)::gf)$ReducedDivisor(Q, UP, UPUP, R, gf)
+       (z1:Q):gf +-&gt; 
+        numer(z1)::gf / denom(z1)::gf)$ReducedDivisor(Q, UP, UPUP, R, gf)
 
 -- returns the potential order of d, 0 if d is of infinite order
     possibleOrder d ==
@@ -123128,7 +121726,7 @@ PolynomialAN2Expression():Target == Implementation where
         ++ algebraic number coefficients to \spadtype{Expression Integer}.
   Implementation ==&gt; add
     coerce(p:PAN):EXPR ==
-        map(#1::EXPR, #1::EXPR, p)$PolynomialCategoryLifting(
+        map(x+-&gt;x::EXPR, y+-&gt;y::EXPR, p)$PolynomialCategoryLifting(
                                   IndexedExponents SY, SY, AN, PAN, EXPR)
     coerce(rf:Fraction PAN):EXPR ==
         numer(rf)::EXPR / denom(rf)::EXPR
@@ -123348,7 +121946,7 @@ PolynomialCategoryQuotientFunctions(E, V, R, P, F):
       max(a::V, b::V)
 
     P2UP(p, x) ==
-      map(#1::F,
+      map(z +-&gt; z::F,
           univariate(p, x))$SparseUnivariatePolynomialFunctions2(P, F)
 
 @
@@ -123588,7 +122186,7 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
              -- then we have all the factors
              return [append(foundFactors, factors)]
           step:=solveLinearPolynomialEquation(origFactors,
-                                              map(eval(#1,vv,r),
+                                              map(z1 +-&gt; eval(z1,vv,r),
                                                   Ecart))
           step case &quot;failed&quot; =&gt; return &quot;failed&quot; -- must be a false split
           factors:=[a+b*pn for a in factors for b in step]
@@ -123614,12 +122212,12 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
       -- pp is square-free as a Sup, and its coefficients have precisely
       -- the variables of lvpp. Furthermore, its LC is a unit
       -- returns &quot;failed&quot; if the substitution is bad, else a factorization
-      ppR:=map(eval(#1,first lvpp,r),pp)
+      ppR:=map(z1 +-&gt; eval(z1,first lvpp,r),pp)
       degree ppR &lt; degree pp =&gt; &quot;failed&quot;
       degree gcd(ppR,differentiate ppR) &gt;0 =&gt; &quot;failed&quot;
       factors:=
          empty? rest lvpp =&gt;
-            fDown:=factorSquareFreePolynomial map(retract(#1)::R,ppR)
+            fDown:=factorSquareFreePolynomial map(z1 +-&gt; retract(z1)::R,ppR)
             [raise (unit fDown * factorList(fDown).first.fctr),
              :[raise u.fctr for u in factorList(fDown).rest]]
          fSame:=factorSFBRlcUnit(rest lvpp,ppR)
@@ -123655,7 +122253,7 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
        ppR: SupSupR:=map(univariate,pp)
        ans:=solveLinearPolynomialEquation(lpolysR,ppR)$SupR
        ans case &quot;failed&quot; =&gt; &quot;failed&quot;
-       [map(multivariate(#1,v),w) for w in ans]
+       [map(z1 +-&gt; multivariate(z1,v),w) for w in ans]
    else
      bivariateSLPEBR(lpolys,pp,v) ==
        solveLinearPolynomialEquationByFractions(lpolys,pp)$LPEBFS
@@ -123665,7 +122263,7 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
      while true repeat
         substns:= [randomR() for v in lvpp]
         zero? eval(leadingCoefficient pp,lvpp,substns ) =&gt; &quot;next&quot;
-        ppR:=map((retract eval(#1,lvpp,substns))::R,pp)
+        ppR:=map(z1 +-&gt;(retract eval(z1,lvpp,substns))::R,pp)
         degree gcd(ppR,differentiate ppR)&gt;0 =&gt; &quot;next&quot;
         leave
      [substns,ppR]
@@ -123678,7 +122276,7 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
         zero? eval(leadingCoefficient pp,lvpolys,substns ) =&gt; &quot;next&quot;
         &quot;or&quot;/[zero? eval(leadingCoefficient u,lvpolys,substns)
                     for u in lpolys] =&gt; &quot;next&quot;
-        lpolysR:=[map((retract eval(#1,lvpolys,substns))::R,u)
+        lpolysR:=[map(z1 +-&gt; (retract eval(z1,lvpolys,substns))::R,u)
                   for u in lpolys]
         uu:=lpolysR
         while not empty? uu repeat
@@ -123686,15 +122284,15 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
           uu:=rest uu
         not empty? uu =&gt; &quot;next&quot;
         leave
-     ppR:=map((retract eval(#1,lvpolys,substns))::R,pp)
+     ppR:=map(z1 +-&gt; (retract eval(z1,lvpolys,substns))::R,pp)
      [substns,lpolysR,ppR]
-   raise(supR) == map(#1:R::S,supR)
-   lower(pp) == map(retract(#1)::R,pp)
+   raise(supR) == map(z1 +-&gt; z1:R::S,supR)
+   lower(pp) == map(z1 +-&gt; retract(z1)::R,pp)
    SLPEBR(lpolys,lvpolys,pp,lvpp) ==
      not empty? (m:=setDifference(lvpp,lvpolys)) =&gt;
          v:=first m
          lvpp:=remove(v,lvpp)
-         pp1:SupSupS :=swap map(univariate(#1,v),pp)
+         pp1:SupSupS :=swap map(z1 +-&gt; univariate(z1,v),pp)
          -- pp1 is mathematically equal to pp, but is in S[z][v]
          -- so we wish to operate on all of its coefficients
          ans:List SupSupS:= [0 for u in lpolys]
@@ -123703,7 +122301,7 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
              ans1 case &quot;failed&quot; =&gt; return &quot;failed&quot;
              d:=degree m
              ans:=[monomial(a1,d)+a for a in ans for a1 in ans1]
-         [map(multivariate(#1,v),swap pp1) for pp1 in ans]
+         [map(z1 +-&gt; multivariate(z1,v),swap pp1) for pp1 in ans]
      empty? lvpolys =&gt;
          lpolysR:List SupR
          ppR:SupR
@@ -123711,7 +122309,7 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
          ppR:=map(retract,pp)
          ansR:=solveLinearPolynomialEquation(lpolysR,ppR)
          ansR case &quot;failed&quot; =&gt; return &quot;failed&quot;
-         [map(#1::S,uu) for uu in ansR]
+         [map(z1 +-&gt; z1::S,uu) for uu in ansR]
      cVS:=chooseSLPEViableSubstitutions(lvpolys,lpolys,pp)
      ansR:=solveLinearPolynomialEquation(cVS.lpolysRField,cVS.ppRField)
      ansR case &quot;failed&quot; =&gt; &quot;failed&quot;
@@ -123735,7 +122333,7 @@ PolynomialFactorizationByRecursion(R,E, VarSet:OrderedSet, S): public ==
      unit? c =&gt; refine(squareFree pp,factorSquareFreeByRecursion)
      pp:=(pp exquo c)::SupS
      mergeFactors(refine(squareFree pp,factorSquareFreeByRecursion),
-                  map(#1:S::SupS,factor(c)$S))
+                  map(z1 +-&gt; z1:S::SupS,factor(c)$S))
    factorSquareFreeByRecursion pp ==
      lv:List(VarSet) := removeDuplicates_!
                            concat [variables z for z in coefficients pp]
@@ -123878,7 +122476,7 @@ PolynomialFactorizationByRecursionUnivariate(R, S): public == private where
        lpolysLower:=[lower u for u in lpolys]
        answer:List SupS := [0 for u in lpolys]
        for i in 0..rhsdeg repeat
-         ppx:=map(coefficient(#1,i),pp)
+         ppx:=map((z1:S):R +-&gt; coefficient(z1,i),pp)
          zero? ppx =&gt; &quot;next&quot;
          recAns:= solveLinearPolynomialEquation(lpolysLower,ppx)
          recAns case &quot;failed&quot; =&gt; return &quot;failed&quot;
@@ -123907,7 +122505,7 @@ PolynomialFactorizationByRecursionUnivariate(R, S): public == private where
              -- then we have all the factors
              return [append(foundFactors, factors)]
           step:=solveLinearPolynomialEquation(origFactors,
-                                              map(elt(#1,r::S),
+                                              map(z1 +-&gt; elt(z1,r::S),
                                                   Ecart))
           step case &quot;failed&quot; =&gt; return &quot;failed&quot; -- must be a false split
           factors:=[a+b*pn for a in factors for b in step]
@@ -123935,17 +122533,17 @@ PolynomialFactorizationByRecursionUnivariate(R, S): public == private where
      while true repeat
         substns:= randomR()
         zero? elt(leadingCoefficient pp,substns ) =&gt; &quot;next&quot;
-        ppR:=map( elt(#1,substns),pp)
+        ppR:=map(z1 +-&gt; elt(z1,substns),pp)
         degree gcd(ppR,differentiate ppR)&gt;0 =&gt; &quot;next&quot;
         leave
      [substns,ppR]
-   raise(supR) == map(#1:R::S,supR)
-   lower(pp) == map(retract(#1)::R,pp)
+   raise(supR) == map(z1 +-&gt; z1:R::S,supR)
+   lower(pp) == map(z1 +-&gt; retract(z1)::R,pp)
    factorSFBRlcUnitInner(pp,r) ==
       -- pp is square-free as a Sup, but the Up  variable occurs.
       -- Furthermore, its LC is a unit
       -- returns &quot;failed&quot; if the substitution is bad, else a factorization
-      ppR:=map(elt(#1,r),pp)
+      ppR:=map(z1 +-&gt; elt(z1,r),pp)
       degree ppR &lt; degree pp =&gt; &quot;failed&quot;
       degree gcd(ppR,differentiate ppR) &gt;0 =&gt; &quot;failed&quot;
       factors:=
@@ -123994,7 +122592,7 @@ PolynomialFactorizationByRecursionUnivariate(R, S): public == private where
      unit? c =&gt; refine(squareFree pp,factorSquareFreeByRecursion)
      pp:=(pp exquo c)::SupS
      mergeFactors(refine(squareFree pp,factorSquareFreeByRecursion),
-                  map(#1:S::SupS,factor(c)$S))
+                  map(z1 +-&gt; z1:S::SupS,factor(c)$S))
    factorSquareFreeByRecursion pp ==
      and/[zero? degree u for u in coefficients pp] =&gt;
         map(raise,factorSquareFreePolynomial lower pp)
@@ -124071,7 +122669,7 @@ PolynomialFunctions2(R:Ring, S:Ring): with
     ++ map(f, p) produces a new polynomial as a result of applying
     ++ the function f to every coefficient of the polynomial p.
  == add
-  map(f, p) == map(#1::Polynomial(S), f(#1)::Polynomial(S),
+  map(f, p) == map(x1 +-&gt; x1::Polynomial(S), x2 +-&gt; f(x2)::Polynomial(S),
                    p)$PolynomialCategoryLifting(IndexedExponents Symbol,
                                    Symbol, R, Polynomial R, Polynomial S)
 
@@ -124283,7 +122881,8 @@ PolynomialGcdPackage(E,OV,R,P):C == T where
         degree p1 = 0 =&gt;
             p1 = 0 =&gt; unitCanonical p2
             unitCanonical p1
-        lvar:List OV:=sort(#1&gt;#2,setUnion(variables p1,variables p2))
+        lvar:List OV:=
+          sort((a:OV,b:OV):Boolean+-&gt;a&gt;b,setUnion(variables p1,variables p2))
         empty? lvar =&gt;
            raisePolynomial(gcd(lowerPolynomial p1,lowerPolynomial p2))
         (p2 exquo p1) case SUPP =&gt; unitCanonical p1
@@ -124441,7 +123040,7 @@ PolynomialGcdPackage(E,OV,R,P):C == T where
         f
 
       gcd(listp:List SUPP) : SUPP ==
-        lf:=sort(degree(#1)&lt;degree(#2),listp)
+        lf:=sort((z1:SUPP,z2:SUPP):Boolean +-&gt; degree(z1)&lt;degree(z2),listp)
         f:=lf.first
         for g in lf.rest repeat
           f:=gcd(f,g)
@@ -125903,12 +124502,12 @@ PolynomialSolveByFormulas(UP, F): PSFcat == PSFdef where
 
         mapSolve(p, fn) ==
             -- map := fn #1   replaced with line below
-            locmap: F -&gt; F := fn #1; map := id locmap
+            locmap: F -&gt; F := x +-&gt; fn x; map := id locmap
             mapSolving? := true;  maplist := []
             slist := solve p
             mapSolving? := false;
             -- map := id #1   replaced with line below
-            locmap := id #1; map := id locmap
+            locmap := x +-&gt; id x; map := id locmap
             [slist, maplist]
 
         part(s: F): F ==
@@ -126286,7 +124885,7 @@ PolynomialToUnivariatePolynomial(x:Symbol, R:Ring): with
  == add
   univariate(p, y) ==
     q:SparseUnivariatePolynomial(Polynomial R) := univariate(p, x)
-    map(#1, q)$UnivariatePolynomialCategoryFunctions2(Polynomial R,
+    map(x1+-&gt;x1, q)$UnivariatePolynomialCategoryFunctions2(Polynomial R,
                   SparseUnivariatePolynomial Polynomial R, Polynomial R,
                       UnivariatePolynomial(x, Polynomial R))
 
@@ -127077,9 +125676,9 @@ PrimitiveElement(F): Exports == Implementation where
     triangularLinearIfCan:(List P,List SY,SY) -&gt; Union(List UP,&quot;failed&quot;)
     innerPrimitiveElement: (List P, List SY, SY) -&gt; REC
 
-    multi(p, v)            == multivariate(map(#1, p), v)
+    multi(p, v)            == multivariate(map((f1:F):F +-&gt; f1, p), v)
     randomInts(n, m)       == [symmetricRemainder(random()$Integer, m) for i in 1..n]
-    incl?(a, b)            == every?(member?(#1, b), a)
+    incl?(a, b)            == every?((s1:SY):Boolean +-&gt; member?(s1, b), a)
     primitiveElement(l, v) == primitiveElement(l, v, new()$SY)
 
     primitiveElement(p1, a1, p2, a2) ==
@@ -127107,9 +125706,9 @@ PrimitiveElement(F): Exports == Implementation where
           (degree(p := univariate(u::P, v)) ^= 1) =&gt; return &quot;failed&quot;
         (bc := extendedEuclidean(univariate leadingCoefficient p, pw,1))
            case &quot;failed&quot; =&gt; error &quot;Should not happen&quot;
-        ll := concat(map(#1,
+        ll := concat(map((z1:F):F +-&gt; z1,
                 (- univariate(coefficient(p,0)) * bc.coef1) rem pw), ll)
-      concat(map(#1, pw), reverse_! ll)
+      concat(map((f1:F):F +-&gt; f1, pw), reverse_! ll)
 
     primitiveElement(l, vars, uu) ==
       u    := uu::P
@@ -127224,7 +125823,7 @@ PrimitiveRatDE(F, UP, L, LQ): Exports == Implementation where
 
     diff := D()$L
 
-    UP2UP2 p                    == map(#1::UP, p)
+    UP2UP2 p                    == map((f1:F):UP +-&gt;f1::UP, p)
     indicialEquations(op:L)     == indicialEquations(op, leadingCoefficient op)
     indicialEquation(op:L, a:F) == indeq(monomial(1, 1) - a::UP, op)
 
@@ -127440,15 +126039,15 @@ PrimitiveRatRicDE(F, UP, L, LQ): Exports == Implementation where
     diff  := D()$L
     diffq := D()$LQ
 
-    lambda(c, l)        == innerlb(l, order(#1, c)::Z)
-    infLambda l         == innerlb(l, -(degree(#1)::Z))
-    infmax(rec, l)      == innermax(rec, l, degree(#1)::Z)
-    dmax(rec, c, l)     == innermax(rec, l, - order(#1, c)::Z)
-    tau0(p, q)          == ((q exquo (p ** order(q, p)))::UP) rem p
-    poly1(c, cp, i)     == */[monomial(1,1)$UP2 - (j * cp)::UP2 for j in 0..i-1]
-    getIndices(n, l)    == removeDuplicates_! concat [r.ij for r in l | r.deg=n]
-    denomRicDE l        == */[c ** bound(c, l) for c in factoredDenomRicDE l]
-    polyRicDE(l, zeros) == concat([0, l], polysol(l, 0, false, zeros))
+    lambda(c, l)       == innerlb(l, z +-&gt; order(z, c)::Z)
+    infLambda l        == innerlb(l, z +-&gt; -(degree(z)::Z))
+    infmax(rec,l)      == innermax(rec, l, z +-&gt; degree(z)::Z)
+    dmax(rec, c,l)     == innermax(rec, l, z +-&gt; - order(z, c)::Z)
+    tau0(p, q)         == ((q exquo (p ** order(q, p)))::UP) rem p
+    poly1(c, cp,i)     == */[monomial(1,1)$UP2 - (j * cp)::UP2 for j in 0..i-1]
+    getIndices(n,l)    == removeDuplicates_! concat [r.ij for r in l | r.deg=n]
+    denomRicDE l       == */[c ** bound(c, l) for c in factoredDenomRicDE l]
+    polyRicDE(l,zeros) == concat([0, l], polysol(l, 0, false, zeros))
 
 -- refine([p1,...,pn], foo) refines the list of factors using foo
     refine(l, ezfactor) ==
@@ -127459,7 +126058,7 @@ PrimitiveRatRicDE(F, UP, L, LQ): Exports == Implementation where
       ans:List(FRC) := empty()
       finite? and zero? b =&gt; ans
       lc := leadingDenomRicDE(c, op)
-      if finite? then lc := select_!(#1.deg &lt;= b, lc)
+      if finite? then lc := select_!(z +-&gt; z.deg &lt;= b, lc)
       for rec in lc repeat
         for r in zeros(c, rec.eq) | r ^= 0 repeat
           rcn := r /$RF (c ** rec.deg)
@@ -127479,7 +126078,7 @@ PrimitiveRatRicDE(F, UP, L, LQ): Exports == Implementation where
         not(empty?(ind := dmax(rec, c, l))) repeat
           ans := concat([rec.deg, getPol(rec, c, l, ind)], ans)
           done := concat(rec.deg, done)
-      sort_!(#1.deg &gt; #2.deg, ans)
+      sort_!((z1,z2) +-&gt; z1.deg &gt; z2.deg, ans)
 
     getPol(rec, c, l, ind) ==
 --      one?(rec.deg) =&gt; getPol1(ind, c, l)
@@ -127526,7 +126125,7 @@ PrimitiveRatRicDE(F, UP, L, LQ): Exports == Implementation where
         not(empty?(ind := infmax(rec, l))) repeat
           ans := concat([rec.deg, getPoly(rec, l, ind)], ans)
           done := concat(rec.deg, done)
-      sort_!(#1.deg &gt; #2.deg, ans)
+      sort_!((z1,z2) +-&gt; z1.deg &gt; z2.deg, ans)
 
     factoredDenomRicDE l ==
       bd := factors balancedFactorisation(leadingCoefficient l, coefficients l)
@@ -127588,7 +126187,7 @@ PrimitiveRatRicDE(F, UP, L, LQ): Exports == Implementation where
       ans:List(POL) := empty()
       finite? and zero? b =&gt; ans
       lc := leadingCoefficientRicDE l
-      if finite? then lc := select_!(#1.deg &lt;= b, lc)
+      if finite? then lc := select_!(z +-&gt; z.deg &lt;= b, lc)
       for rec in lc repeat
         for a in zeros(rec.eq) | a ^= 0 repeat
           atn:UP := monomial(a, rec.deg)
@@ -127703,7 +126302,8 @@ PseudoLinearNormalForm(K:Field): Exports == Implementation where
       -- avoids possible type conflicts
 
     inv m                      == inverse(m) :: Matrix K
-    changeBase(M, A, sig, der) == inv(A) * (M * map(sig #1, A) + map(der, A))
+    changeBase(M, A, sig, der) == 
+      inv(A) * (M * map((k1:K):K +-&gt; sig k1, A) + map(der, A))
     normalForm(M, sig, der)    == normalForm0(M, sig, inv sig, der)
 
     companionBlocks(R, w) ==
@@ -128087,7 +126687,8 @@ PseudoRemainderSequence(R, polR) : Specification == Implementation where
     r : R * v : Vector(polR) == r::polR * v
               -- the instruction  map(r * #1, v) is slower !?
 
-    v : Vector(polR) exquo r : R == map((#1 exquo r)::polR, v)
+    v : Vector(polR) exquo r : R == 
+      map((p1:polR):polR +-&gt; (p1 exquo r)::polR, v)
 
     pseudoDivide(P : polR, Q : polR) : 
                                  Record(coef:R,quotient:polR,remainder:polR) ==
@@ -128916,9 +127517,9 @@ PureAlgebraicIntegration(R, F, L): Exports == Implementation where
     chv(f, n, a, b)          == univariate(chv0(f, n, a, b), dumk)
 
     RF2UPUP(f, modulus) ==
-      bc := extendedEuclidean(map(#1::UP::RF, denom f), modulus,
+      bc := extendedEuclidean(map((z1:F):RF+-&gt;z1::UP::RF, denom f), modulus,
                                       1)::Record(coef1:UPUP, coef2:UPUP)
-      (map(#1::UP::RF, numer f) * bc.coef1) rem modulus
+      (map((x1:F):RF+-&gt;x1::UP::RF, numer f) * bc.coef1) rem modulus
 
 -- returns &quot;failed&quot;, or (xx, c) such that f(x, y)dx = f(xx, y) c dy
 -- if p(x, y) = 0 is linear in x
@@ -128940,7 +127541,7 @@ PureAlgebraicIntegration(R, F, L): Exports == Implementation where
       ((r := retractIfCan(rf)@Union(RF,&quot;failed&quot;)) case RF) and rf ^= 0 =&gt;
             -- in this case, ff := lc(ff) y^i + r so we integrate both terms
             -- separately to gain time
-            map(#1(x::F), integrate(r::RF)) +
+            map(f1+-&gt;f1(x::F), integrate(r::RF)) +
                  prootintegrate1(leadingMonomial ff, x, y, modulus)
       prootintegrate1(ff, x, y, modulus)
 
@@ -128954,17 +127555,17 @@ PureAlgebraicIntegration(R, F, L): Exports == Implementation where
         newf := multivariate(chv.int, ku := dumk, newalg)
         vu := (chv.right)(x::F)
         vz := (chv.den)(x::F) * (y::F) * denom(newalg)::F
-        map(eval(#1, [ku, kz], [vu, vz]), palgint(newf, ku, kz))
+        map(x1+-&gt;eval(x1, [ku, kz], [vu, vz]), palgint(newf, ku, kz))
       cv     := chvar(ff, modulus)
       r      := radPoly(cv.poly)::Record(radicand:RF, deg:N)
       qprime := differentiate(q := retract(r.radicand)@UP)::RF
       not zero? qprime and
        ((u := chvarIfCan(cv.func, 1, q, inv qprime)) case UPUP) =&gt;
          m := monomial(1, r.deg)$UPUP - q::RF::UPUP
-         map(UPUP2F1(RF2UPUP(#1, m), cv.c1, cv.c2, x, y),
+         map(x1+-&gt;UPUP2F1(RF2UPUP(x1, m), cv.c1, cv.c2, x, y),
             rationalInt(u::UPUP, r.deg, monomial(1, 1)))
       curve  := RadicalFunctionField(F, UP, UPUP, q::RF, r.deg)
-      algaddx(map(UPUP2F1(lift #1, cv.c1, cv.c2, x, y),
+      algaddx(map(x1+-&gt;UPUP2F1(lift x1, cv.c1, cv.c2, x, y),
         palgintegrate(reduce(cv.func), differentiate$UP)$ALG)$IR2, x::F)
 
 -- Do the rationalizing change of variable
@@ -129055,14 +127656,14 @@ PureAlgebraicIntegration(R, F, L): Exports == Implementation where
       r       := radPoly(modulus)::Record(radicand:RF, deg:N)
       rec     := rootPoly(r.radicand, r.deg)
       dqdx    := inv(differentiate(q := rec.radicand)::RF)
-      (uf := chvarIfCan(ff := univariate(f,x,k,p),rec.coef,q,dqdx)) case UPUP =&gt;
+      (uf:=chvarIfCan(ff := univariate(f,x,k,p),rec.coef,q,dqdx)) case UPUP =&gt;
         l := empty()$List(RF)
         n := rec.exponent * monomial(1, (rec.exponent - 1)::N)$UP
         for u in lu repeat
-          if ((v:=chvarIfCan(uu:=univariate(u,x,k,p),rec.coef,q,dqdx))case UPUP)
+         if ((v:=chvarIfCan(uu:=univariate(u,x,k,p),rec.coef,q,dqdx))case UPUP)
             then l := concat(n * chv(v::UPUP,rec.exponent, 1, 0), l) else FAIL
         m := monomial(1, rec.exponent)$UPUP - q::RF::UPUP
-        map(UPUP2F0(RF2UPUP(#1,m), x, k),
+        map(x1+-&gt;UPUP2F0(RF2UPUP(x1,m), x, k),
             limitedint(n * chv(uf::UPUP, rec.exponent, 1, 0), reverse_! l))
       cv     := chvar(ff, modulus)
       r      := radPoly(cv.poly)::Record(radicand:RF, deg:N)
@@ -129078,10 +127679,10 @@ PureAlgebraicIntegration(R, F, L): Exports == Implementation where
       rec     := rootPoly(r.radicand, r.deg)
       dqdx    := inv(differentiate(q := rec.radicand)::RF)
       ((uf:=chvarIfCan(ff:=univariate(f,x,k,p),rec.coef,q,dqdx)) case UPUP) and
-        ((ug:=chvarIfCan(gg:=univariate(g,x,k,p),rec.coef,q,dqdx)) case UPUP) =&gt;
+       ((ug:=chvarIfCan(gg:=univariate(g,x,k,p),rec.coef,q,dqdx)) case UPUP) =&gt;
           m := monomial(1, rec.exponent)$UPUP - q::RF::UPUP
           n := rec.exponent * monomial(1, (rec.exponent - 1)::N)$UP
-          map(UPUP2F0(RF2UPUP(#1,m), x, k),
+          map(x1+-&gt;UPUP2F0(RF2UPUP(x1,m), x, k),
               extendedint(n * chv(uf::UPUP, rec.exponent, 1, 0),
                           n * chv(ug::UPUP, rec.exponent, 1, 0)))
       cv     := chvar(ff, modulus)
@@ -129114,7 +127715,7 @@ PureAlgebraicIntegration(R, F, L): Exports == Implementation where
       cv     := chvar(univariate(f, x, k, p), modulus)
       curve  := AlgebraicFunctionField(F, UP, UPUP, cv.poly)
       knownInfBasis(cv.deg)
-      algaddx(map(UPUP2F1(lift #1, cv.c1, cv.c2, x, k),
+      algaddx(map(x1+-&gt;UPUP2F1(lift x1, cv.c1, cv.c2, x, k),
         palgintegrate(reduce(cv.func), differentiate$UP)$ALG)$IR2, x::F)
 
     palglim(f, x, k, lu) ==
@@ -129299,7 +127900,7 @@ PushVariables(R,E,OV,PPR):C == T where
      map(f:(PR -&gt; PPR), p: PPR) : PPR ==
        ground? p =&gt; f(retract p)
        v:=mainVariable(p)::OV
-       multivariate(map(map(f,#1),univariate(p,v)),v)
+       multivariate(map((x:PPR):PPR+-&gt;map(f,x),univariate(p,v)),v)
 
                ----  push back the variable  ----
      pushupCoef(c:PR, lv:List OV): PPR ==
@@ -129321,10 +127922,10 @@ PushVariables(R,E,OV,PPR):C == T where
        ppr
 
      pushup(f:PPR,x:OV) :PPR ==
-       map(pushupCoef(#1,[x]), f)
+       map(y +-&gt; pushupCoef(y,[x]), f)
 
      pushup(g:PPR, lv:List OV) : PPR ==
-       map(pushupCoef(#1, lv), g)
+       map(y +-&gt; pushupCoef(y, lv), g)
 
 @
 &lt;&lt;PUSHVAR.dotabb&gt;&gt;=
@@ -129428,12 +128029,12 @@ QuasiAlgebraicSet2(vl,nv) : C == T where
        v = tv =&gt; 0
        variable((convert v)@Symbol)@Union(Var,&quot;failed&quot;)::Var::Dpoly
  
-     npoly(p:Dpoly) : newPoly ==  map(f #1, #1::newPoly, p)
+     npoly(p:Dpoly) : newPoly ==  map(z1 +-&gt; f z1, z2 +-&gt; z2::newPoly, p)
  
      oldpoly(q:newPoly) : Union(Dpoly,&quot;failed&quot;) ==
        (x:=mainVariable q) case &quot;failed&quot; =&gt; (leadingCoefficient q)::Dpoly
        (x::newVar = tv) =&gt; &quot;failed&quot;
-       map(g #1,#1::Dpoly, q)
+       map(z1 +-&gt; g z1, z2 +-&gt; z2::Dpoly, q)
  
      radicalSimplify x ==
        status(x)$QALG = true =&gt; x     -- x is empty
@@ -129563,7 +128164,8 @@ QuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
      internalSubPolSet?: (LP, LP) -&gt; Boolean
          ++ \axiom{internalSubPolSet?(lp1,lp2)} returns true iff \axiom{lp1} is
          ++ a sub-set of \axiom{lp2} assuming that these lists are sorted
-         ++ increasingly w.r.t. \axiomOpFrom{infRittWu?}{RecursivePolynomialCategory}.
+         ++ increasingly w.r.t. 
+         ++ \axiomOpFrom{infRittWu?}{RecursivePolynomialCategory}.
      internalInfRittWu?: (LP, LP) -&gt; Boolean
          ++ \axiom{internalInfRittWu?(lp1,lp2)}
          ++ is an internal subroutine, exported only for developement.
@@ -129571,8 +128173,9 @@ QuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
          ++ \axiom{infRittWu?(lp1,lp2)}
          ++ is an internal subroutine, exported only for developement.
      internalSubQuasiComponent?: (TS,TS) -&gt; Union(Boolean,&quot;failed&quot;)
-         ++ \axiom{internalSubQuasiComponent?(ts,us)} returns a boolean \spad{b} value
-         ++ if the fact that the regular zero set of \axiom{us} contains that of
+         ++ \axiom{internalSubQuasiComponent?(ts,us)} returns a 
+         ++ boolean \spad{b} value if the fact that the regular 
+         ++ zero set of \axiom{us} contains that of
          ++ \axiom{ts} can be decided (and in that case \axiom{b} gives this 
          ++ inclusion) otherwise returns \axiom{&quot;failed&quot;}.
      subQuasiComponent?: (TS,TS) -&gt; Boolean
@@ -129581,10 +128184,12 @@ QuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
          ++ returs true.
      subQuasiComponent?: (TS,Split) -&gt; Boolean
          ++ \axiom{subQuasiComponent?(ts,lus)} returns true iff
-         ++ \axiom{subQuasiComponent?(ts,us)} holds for one \spad{us} in \spad{lus}.
+         ++ \axiom{subQuasiComponent?(ts,us)} holds for one \spad{us} 
+         ++ in \spad{lus}.
      removeSuperfluousQuasiComponents: Split -&gt; Split
-         ++ \axiom{removeSuperfluousQuasiComponents(lts)} removes from \axiom{lts}
-         ++ any \spad{ts} such that \axiom{subQuasiComponent?(ts,us)} holds for 
+         ++ \axiom{removeSuperfluousQuasiComponents(lts)} removes 
+         ++ from \axiom{lts} any \spad{ts} such that 
+         ++ \axiom{subQuasiComponent?(ts,us)} holds for 
          ++ another \spad{us} in \axiom{lts}.
      subCase?: (LpWT,LpWT) -&gt; Boolean
          ++ \axiom{subCase?(lpwt1,lpwt2)}
@@ -129623,7 +128228,8 @@ QuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
        #ts &gt; #us =&gt; false
        lp1 :LP := members(ts)
        lp2 :LP := members(us)
-       while (not empty? lp1) and (not infRittWu?(first(lp2),first(lp1))) repeat
+       while (not empty? lp1) 
+        and (not infRittWu?(first(lp2),first(lp1))) repeat
          lp1 := rest lp1
          lp2 := rest lp2
        not empty? lp1
@@ -129710,7 +128316,9 @@ QuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
 
      removeSuperfluousCases (cases:List LpWT) ==
        #cases &lt; 2 =&gt; cases
-       toSee := sort(supDimElseRittWu?(#1.tower,#2.tower),cases)
+       toSee := 
+         sort((x:LpWT,y:LpWT):Boolean +-&gt; 
+               supDimElseRittWu?(x.tower,y.tower),cases)
        lpwt1,lpwt2 : LpWT
        toSave,headmaxcases,maxcases,copymaxcases : List LpWT
        while not empty? toSee repeat
@@ -129849,15 +128457,18 @@ QuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
              lineq : LP := branch.ineq
              ubf1: UBF := branchIfCan(leq,ts,lq,false,false,true,true,true)@UBF
              ubf1 case &quot;failed&quot; =&gt; &quot;leave&quot;
-             ubf2: UBF := branchIfCan([f],ts,lineq,false,false,true,true,true)@UBF
+             ubf2: UBF := 
+               branchIfCan([f],ts,lineq,false,false,true,true,true)@UBF
              ubf2 case &quot;failed&quot; =&gt; &quot;leave&quot;
              leq := sort(infRittWu?,removeDuplicates concat(ubf1.eq,ubf2.eq))
-             lineq := sort(infRittWu?,removeDuplicates concat(ubf1.ineq,ubf2.ineq))
-             newBranch := branchIfCan(leq,ts,lineq,false,false,false,false,false)
+             lineq := 
+               sort(infRittWu?,removeDuplicates concat(ubf1.ineq,ubf2.ineq))
+             newBranch := 
+               branchIfCan(leq,ts,lineq,false,false,false,false,false)
              branches:= cons(newBranch::Branch,branches)
            lq := cons(f,lq)
          toSee := branches
-       sort(supDimElseRittWu?(#1.tower,#2.tower),toSee)
+       sort((x,y) +-&gt; supDimElseRittWu?(x.tower,y.tower),toSee)
 
 @
 &lt;&lt;QCMPACK.dotabb&gt;&gt;=
@@ -129909,6 +128520,145 @@ QuotientFieldCategoryFunctions2(A, B, R, S): Exports == Impl where
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{package QUATCT2 QuaternionCategoryFunctions2}
+&lt;&lt;QuaternionCategoryFunctions2.input&gt;&gt;=
+)set break resume
+)spool QuaternionCategoryFunctions2.output
+)set message test on
+)set message auto off
+)clear all
+
+(1) -&gt; )read af
+--S 1 of 4
+q := quatern(2/11,-8,3/4,1)
+--R 
+--R
+--R         2        3
+--R   (1)  -- - 8i + - j + k
+--R        11        4
+--R                                            Type: Quaternion Fraction Integer
+--E 1
+
+--S 2 of 4
+f(a:Fraction Integer):Complex Fraction Integer == a::Complex Fraction Integer
+--R 
+--R   Function declaration f : Fraction Integer -&gt; Complex Fraction 
+--R      Integer has been added to workspace.
+--R                                                                   Type: Void
+--E 3
+
+--S 3 of 4
+map(f,q)
+--R 
+--R   Compiling function f with type Fraction Integer -&gt; Complex Fraction 
+--R      Integer 
+--R
+--R         2        3
+--R   (3)  -- - 8i + - j + k
+--R        11        4
+--R                                    Type: Quaternion Complex Fraction Integer
+--E 3
+
+--S 4 of 4
+)show QuaternionCategoryFunctions2
+--R 
+--R QuaternionCategoryFunctions2(QR: QuaternionCategory R,R: CommutativeRing,QS: QuaternionCategory S,S: CommutativeRing)  is a package constructor
+--R Abbreviation for QuaternionCategoryFunctions2 is QUATCT2 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.4.spad.pamphlet to see algebra source code for QUATCT2 
+--R
+--R------------------------------- Operations --------------------------------
+--R map : ((R -&gt; S),QR) -&gt; QS            
+--R
+--E 4
+
+)spool
+)lisp (bye)
+@
+&lt;&lt;QuaternionCategoryFunctions2.help&gt;&gt;=
+====================================================================
+QuaternionCategoryFunctions2 examples
+====================================================================
+
+The package QuaternionCategoryFunctions2 provides a function map
+to convert an expression in Quaternion(R) to an expression in
+Quaternion(S) using the function f.
+
+q := quatern(2/11,-8,3/4,1)
+
+         2        3
+        -- - 8i + - j + k
+        11        4
+                                      Type: Quaternion Fraction Integer
+
+f(a:Fraction Integer):Complex Fraction Integer == a::Complex Fraction Integer
+   Function declaration f : Fraction Integer -&gt; Complex Fraction 
+      Integer has been added to workspace.
+                                                                   Type: Void
+
+map(f,q)
+   Compiling function f with type Fraction Integer -&gt; Complex Fraction 
+      Integer 
+
+         2        3
+        -- - 8i + - j + k
+        11        4
+                                    Type: Quaternion Complex Fraction Integer
+
+
+See Also:
+o )show QuaternionCategoryFunctions2
+
+@
+\pagehead{QuaternionCategoryFunctions2}{QUATCT2}
+\pagepic{ps/v104quaternioncategoryfunctions2.ps}{QUATCT2}{1.00}
+
+{\bf Exports:}\\
+\cross{QUATCT2}{map}
+
+&lt;&lt;package QUATCT2 QuaternionCategoryFunctions2&gt;&gt;=
+)abbrev package QUATCT2 QuaternionCategoryFunctions2
+++ Author: Robert S. Sutor
+++ Date Created: 23 May 1990
+++ Change History:
+++   23 May 1990
+++ Basic Operations: map
+++ Related Constructors: QuaternionCategory, Quaternion
+++ Also See:
+++ AMS Classifications: 11R52
+++ Keywords: quaternions, division ring, map
+++ Description:
+++    \spadtype{QuaternionCategoryFunctions2} implements functions between
+++    two quaternion domains.  The function \spadfun{map} is used by
+++    the system interpreter to coerce between quaternion types.
+ 
+QuaternionCategoryFunctions2(QR,R,QS,S) : Exports ==
+  Implementation where
+    R  : CommutativeRing
+    S  : CommutativeRing
+    QR : QuaternionCategory R
+    QS : QuaternionCategory S
+    Exports == with
+      map:     (R -&gt; S, QR) -&gt; QS
+        ++ map(f,u) maps f onto the component parts of the quaternion u.
+        ++ to convert an expression in Quaterion(R) to Quaternion(S)
+        ++
+        ++X f(a:FRAC(INT)):COMPLEX(FRAC(INT)) == a::COMPLEX(FRAC(INT))
+        ++X q:=quatern(2/11,-8,3/4,1)
+        ++X map(f,q)
+
+    Implementation == add
+      map(fn : R -&gt; S, u : QR): QS ==
+        quatern(fn real u, fn imagI u, fn imagJ u, fn imagK u)$QS
+
+@
+&lt;&lt;QUATCT2.dotabb&gt;&gt;=
+&quot;QUATCT2&quot; [color=&quot;#FF4488&quot;,href=&quot;bookvol10.4.pdf#nameddest=QUATCT2&quot;]
+&quot;ACFS&quot; [color=&quot;#4488FF&quot;,href=&quot;bookvol10.2.pdf#nameddest=QUATCAT&quot;]
+&quot;QUATCT2&quot; -&gt; &quot;QUATCAT&quot;
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \chapter{Chapter R}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{package REP RadicalEigenPackage}
@@ -130933,8 +129683,8 @@ RationalFunction(R:IntegralDomain): Exports == Implementation where
       peval(numer x, ls, lv) / peval(denom x, ls, lv)
 
     peval(p, ls, lv) ==
-      map(foo(ls, lv, #1), #1::Q,
-          p)$PolynomialCategoryLifting(IndexedExponents V,V,R,P,Q)
+      map(z1 +-&gt; foo(ls, lv, z1), z2 +-&gt; z2::Q,p)
+       $PolynomialCategoryLifting(IndexedExponents V,V,R,P,Q)
 
 @
 &lt;&lt;RF.dotabb&gt;&gt;=
@@ -131024,12 +129774,12 @@ RationalFunctionDefiniteIntegration(R): Exports == Implementation where
       [ans]
 
     integrate(f:RF, s:SegmentBinding ORF) ==
-      int(f, variable s, map(#1::FE, lo segment s),
-                         map(#1::FE, hi segment s), false)
+      int(f, variable s, map(x +-&gt; x::FE, lo segment s),
+                         map(x +-&gt; x::FE, hi segment s), false)
 
     integrate(f:RF, s:SegmentBinding ORF, str:String) ==
-      int(f, variable s, map(#1::FE, lo segment s),
-                         map(#1::FE, hi segment s), ignore? str)
+      int(f, variable s, map(x +-&gt; x::FE, lo segment s),
+                         map(x +-&gt; x::FE, hi segment s), ignore? str)
 
     integrate(f:RF, s:SegmentBinding OFE, str:String) ==
       int(f, variable s, lo segment s, hi segment s, ignore? str)
@@ -131085,12 +129835,12 @@ RationalFunctionFactor(UP): Exports == Implementation where
     dummy := new()$SE
  
     likuniv(p, x, d) ==
-      map(#1 / d, univariate(p, x))$UPCF2(P,SparseUnivariatePolynomial P,
+      map(y +-&gt; y/d, univariate(p, x))$UPCF2(P,SparseUnivariatePolynomial P,
                                           RF, UP)
  
     factor p ==
       d  := denom(q := elt(p,dummy::P :: RF))
-      map(likuniv(#1,dummy,d),
+      map(x +-&gt; likuniv(x,dummy,d),
           factor(numer q)$MultivariateFactorize(SE,
                IndexedExponents SE,Integer,P))$FactoredFunctions2(P, UP)
 
@@ -131222,17 +129972,17 @@ RationalFunctionIntegration(F): Exports == Implementation where
                                                        SE, F, P, Q)
 
     infieldIntegrate(f, x) ==
-      map(multivariate(#1, x), infieldint univariate(f, x))
+      map(x1 +-&gt; multivariate(x1, x), infieldint univariate(f, x))
 
     internalIntegrate(f, x) ==
-      map(multivariate(#1, x), integrate univariate(f, x))
+      map(x1 +-&gt; multivariate(x1, x), integrate univariate(f, x))
 
     extendedIntegrate(f, x, g) ==
-      map(multivariate(#1, x),
+      map(x1 +-&gt; multivariate(x1, x),
           extendedint(univariate(f, x), univariate(g, x)))
 
     limitedIntegrate(f, x, lu) ==
-      map(multivariate(#1, x),
+      map(x1 +-&gt; multivariate(x1, x),
           limitedint(univariate(f, x), [univariate(u, x) for u in lu]))
 
 @
@@ -131337,7 +130087,7 @@ RationalFunctionLimitPackage(R:GcdDomain):Exports==Implementation where
       (xx := retractIfCan(p)@Union(SE,&quot;failed&quot;)) case &quot;failed&quot; =&gt;
         error &quot;limit: left hand side must be a variable&quot;
       x := xx :: SE
-      a := map(#1::RF,rhs eq)$OrderedCompletionFunctions2(P,RF)
+      a := map(y +-&gt; y::RF,rhs eq)$OrderedCompletionFunctions2(P,RF)
       locallimit(f,x,a)
  
     complexLimit(f:RF,eq:EQ OnePointCompletion P) ==
@@ -131346,7 +130096,7 @@ RationalFunctionLimitPackage(R:GcdDomain):Exports==Implementation where
       (xx := retractIfCan(p)@Union(SE,&quot;failed&quot;)) case &quot;failed&quot; =&gt;
         error &quot;limit: left hand side must be a variable&quot;
       x := xx :: SE
-      a := map(#1::RF,rhs eq)$OnePointCompletionFunctions2(P,RF)
+      a := map(y +-&gt; y::RF,rhs eq)$OnePointCompletionFunctions2(P,RF)
       locallimitcomplex(f,x,a)
  
     fLimit(n, d, a, dir) ==
@@ -131556,7 +130306,8 @@ RationalFunctionSum(R): Exports == Impl where
 
       sum(f:RF, s:SegmentBinding RF) ==
         (indef := innersum(f, v := variable s)) case &quot;failed&quot; =&gt;
-          summation(f::FE,map(#1::FE,s)$SegmentBindingFunctions2(RF,FE))
+          summation(f::FE,map((z:RF):FE +-&gt;z::FE,s)
+            $SegmentBindingFunctions2(RF,FE))
         eval(indef::RF, v, 1 + hi segment s)
           - eval(indef::RF, v,lo segment s)
 
@@ -131972,7 +130723,10 @@ RationalLODE(F, UP): Exports == Implementation where
       hom := [UTS2UP(dd * ode(f, unitlist(i, q))$solver, n)$tools /$RF d
                    for i in 1..q]$List(RF)
       a1 := inv(leadingCoefficient(op)::RF)
-      part := [UTS2UP(dd * ode(RF2UTS(a1 * g)$tools + f #1, e)$solver, n)$tools
+      part := 
+       [UTS2UP(dd * 
+         ode((l1:List(uts)):uts +-&gt; 
+              RF2UTS(a1 * g)$tools + f l1, e)$solver, n)$tools
                 /$RF d for g in lg | g ^= 0]$List(RF)
       [hom, part]
 
@@ -132161,7 +130915,7 @@ RationalRicDE(F, UP): Exports == Implementation where
       ++ Argument \spad{ezfactor} is a factorisation in \spad{UP},
       ++ not necessarily into irreducibles.
     polyRicDE: (L, UP -&gt; List F) -&gt; List POL
-      ++ polyRicDE(op, zeros) returns \spad{[[p1, L1], [p2, L2], ... , [pk,Lk]]}
+      ++ polyRicDE(op, zeros) returns \spad{[[p1,L1], [p2,L2], ... , [pk,Lk]]}
       ++ such that the polynomial part of any rational solution of the
       ++ associated Riccati equation of \spad{op y = 0} must be one of the pi's
       ++ (up to the constant coefficient), in which case the equation for
@@ -132213,7 +130967,8 @@ RationalRicDE(F, UP): Exports == Implementation where
 
     dummy := new()$SY
 
-    UP2SUP p == map(#1::P,p)$UnivariatePolynomialCategoryFunctions2(F,UP,P,SUP)
+    UP2SUP p == map(z +-&gt; z::P,p)
+                           $UnivariatePolynomialCategoryFunctions2(F,UP,P,SUP)
     logDerOnly l == [differentiate(s) / s for s in ratDsolve(l, 0).basis]
     ricDsolve(l:LQ, zeros:UP -&gt; List F) == ricDsolve(l, zeros, squareFree)
     ricDsolve(l:L,  zeros:UP -&gt; List F) == ricDsolve(l, zeros, squareFree)
@@ -132223,8 +130978,8 @@ RationalRicDE(F, UP): Exports == Implementation where
       ricDsolve(splitDenominator(l, empty()).eq, zeros, ezfactor)
 
     mapeval(p, ls, lv) ==
-      map(ground eval(#1, ls, lv),
-          p)$UnivariatePolynomialCategoryFunctions2(P, SUP, F, UP)
+      map(z +-&gt; ground eval(z, ls, lv),p)
+                        $UnivariatePolynomialCategoryFunctions2(P, SUP, F, UP)
 
     FifCan f ==
       ((n := retractIfCan(numer f))@Union(F, &quot;failed&quot;) case F) and
@@ -132346,7 +131101,7 @@ RationalRicDE(F, UP): Exports == Implementation where
 -- stop when the number of solutions reaches the order of the equation
     nopoly(n, p, l, zeros) ==
       ans:List(QF) := empty()
-      for rec in constantCoefficientRicDE(l, constantRic(#1, zeros)) repeat
+      for rec in constantCoefficientRicDE(l,z+-&gt;constantRic(z, zeros)) repeat
         ans := removeDuplicates_! concat_!(ans,
                   [(rec.constant::UP + p)::QF + f for f in logDerOnly(rec.eq)])
         #ans = n =&gt; return ans
@@ -132371,17 +131126,18 @@ RationalRicDE(F, UP): Exports == Implementation where
       ricDsolve(l:LQ) == ricDsolve(l, squareFree)
 
       ricDsolve(l:L, ezfactor:UP -&gt; Factored UP) ==
-        ricDsolve(l, zro(#1, ezfactor), ezfactor)
+        ricDsolve(l, z +-&gt; zro(z, ezfactor), ezfactor)
 
       ricDsolve(l:LQ, ezfactor:UP -&gt; Factored UP) ==
-        ricDsolve(l, zro(#1, ezfactor), ezfactor)
+        ricDsolve(l, z +-&gt; zro(z, ezfactor), ezfactor)
 
       zro(p, ezfactor) ==
         concat [zro1(r.factor) for r in factors ezfactor p]
 
       zro1 p ==
-        [zeroOf(map(#1, p)$UnivariatePolynomialCategoryFunctions2(F, UP,
-                                              F, SparseUnivariatePolynomial F))]
+        [zeroOf(map((z:F):F +-&gt; z, p)
+          $UnivariatePolynomialCategoryFunctions2(F, UP, F, 
+              SparseUnivariatePolynomial F))]
 
 @
 &lt;&lt;ODERTRIC.dotabb&gt;&gt;=
@@ -133593,7 +132349,7 @@ how many initial values are necessary.
       getShiftRec(op: BasicOperator, f: Kernel F, n: Symbol)
                  : Union(Integer, &quot;failed&quot;) ==
           a := argument f
-          if every?(freeOf?(#1, n::F), a) then return 0
+          if every?(z +-&gt; freeOf?(z, n::F), a) then return 0
 
           if #a ~= 1 then error &quot;RECOP: operator should have only one argument&quot;
 
@@ -133603,7 +132359,7 @@ how many initial values are necessary.
           num := numer p
 
           if degree num = 1 and coefficient(num, 1) = 1
-             and every?(freeOf?(#1, n::F), coefficients num)
+             and every?(z +-&gt; freeOf?(z, n::F), coefficients num)
           then return retractIfCan(coefficient(num, 0))
           else return &quot;failed&quot;
 
@@ -133695,7 +132451,7 @@ how many initial values are necessary.
                 nextval := eval(next, argsym::F, 
                                 (len-(shiftInfo.max)::Integer)::F)
                 newval := eval(nextval, op, 
-                               evalRec(op, argsym, argdisp, #1, eq, values))
+                           z+-&gt;evalRec(op, argsym, argdisp, z, eq, values))
                 evalRec(op, argsym, argdisp, arg, eq, cons(newval, values))
               else
                 kernel(oprecur, 
@@ -133706,7 +132462,8 @@ how many initial values are necessary.
                      append([eq, argsym::F, argdisp, op(arg)], values))
 
       numberOfValuesNeeded(numberOfValues: Integer, 
-                           op: BasicOperator, argsym: Symbol, eq: F): Integer ==
+                            op: BasicOperator, 
+                             argsym: Symbol, eq: F): Integer ==
         order := shiftInfoRec(op, argsym, eq).ord
         if order case Integer
         then min(numberOfValues, retract(order)@Integer)
@@ -134031,7 +132788,7 @@ ReduceLODE(F, L, UP, A, LO): Exports == Implementation where
 
 -- coerces a matrix of elements of F into a matrix of (order 0) L.O.D.O's
     matF2L m ==
-      map(#1::L, m)$MatrixCategoryFunctions2(F, V, V, Matrix F,
+      map((f1:F):L+-&gt;f1::L, m)$MatrixCategoryFunctions2(F, V, V, Matrix F,
                                                 L, Vector L, Vector L, M)
 
 -- This follows the algorithm and notation of
@@ -134040,7 +132797,7 @@ ReduceLODE(F, L, UP, A, LO): Exports == Implementation where
     reduceLODE(l, g) ==
       n := rank()$A
 -- md is the basic differential matrix (D x I + Dy)
-      md := matF2L transpose derivationCoordinates(basis(), diff #1)
+      md := matF2L transpose derivationCoordinates(basis(), (f1:F):F+-&gt;diff f1)
       for i in minRowIndex md .. maxRowIndex md
         for j in minColIndex md .. maxColIndex md repeat
           md(i, j) := diff + md(i, j)
@@ -134540,8 +133297,8 @@ RegularTriangularSetGcdPackage(R,E,V,P,TS): Exports == Implementation where
          ++ \axiom{integralLastSubResultant(p1,p2,ts)} 
          ++ is an internal subroutine, exported only for developement.
      toseLastSubResultant: (P,P,TS) -&gt; List PWT 
-         ++ \axiom{toseLastSubResultant(p1,p2,ts)} has the same specifications as
-         ++ \axiomOpFrom{lastSubResultant}{RegularTriangularSetCategory}.
+         ++ \axiom{toseLastSubResultant(p1,p2,ts)} has the same specifications
+         ++ as \axiomOpFrom{lastSubResultant}{RegularTriangularSetCategory}.
      toseInvertible?: (P,TS) -&gt; B
          ++ \axiom{toseInvertible?(p1,p2,ts)} has the same specifications as
          ++ \axiomOpFrom{invertible?}{RegularTriangularSetCategory}.
@@ -134635,7 +133392,7 @@ RegularTriangularSetGcdPackage(R,E,V,P,TS): Exports == Implementation where
          -- CAN BE OPTIMIZED if the input tower is separable
          inv := toseInvertible?(q,ts_h)@(List BWT)
          lbwt := concat([bwt for bwt in inv | bwt.val],lbwt)
-       sort(#1.val &lt; #2.val,lbwt)
+       sort((x,y) +-&gt; x.val &lt; y.val,lbwt)
 
      toseInvertibleSet(p:P,ts:TS): Split ==
        k: KeyInvSet := [p,ts]
@@ -136148,7 +134905,7 @@ RetractSolvePackage(Q, R): Exports == Implementation where
     QIfCan : List P -&gt; Union(List FQ, &quot;failed&quot;)
     PQIfCan: P -&gt; Union(FQ, &quot;failed&quot;)
 
-    PQ2P p   == map(#1::R, p)$PolynomialFunctions2(Q, R)
+    PQ2P p   == map((q1:Q):R +-&gt; q1::R, p)$PolynomialFunctions2(Q, R)
     FQ2F f   == PQ2P numer f / PQ2P denom f
     LEQQ2F l == [equation(FQ2F lhs eq, FQ2F rhs eq) for eq in l]
 
@@ -136560,14 +135317,14 @@ SmithNormalForm(R,Row,Col,M) : Exports == Implementation where
              -- elementary operation of second kind: add to row i--
                          -- a*row j  (i^=j) --
     elRow2(m : M,a:R,i:I,j:I) : M ==
-      vec:= map(a*#1,row(m,j))
+      vec:= map(x +-&gt; a*x,row(m,j))
       vec:=map(&quot;+&quot;,row(m,i),vec)
       setRow!(m,i,vec)
       m
              -- elementary operation of second kind: add to column i --
                            -- a*column j (i^=j) --
     elColumn2(m : M,a:R,i:I,j:I) : M ==
-      vec:= map(a*#1,column(m,j))
+      vec:= map(x +-&gt; a*x,column(m,j))
       vec:=map(&quot;+&quot;,column(m,i),vec)
       setColumn!(m,i,vec)
       m
@@ -136596,7 +135353,7 @@ SmithNormalForm(R,Row,Col,M) : Exports == Implementation where
       -- add to column j -mjj*column i --
       rMat:=elColumn2(rMat,-mjj,j,i)
       -- multiply by -1 column j --
-      setColumn!(rMat,j,map(-1 * #1,column(rMat,j)))
+      setColumn!(rMat,j,map(x +-&gt; -1*x,column(rMat,j)))
       [m,lMat,rMat]
                
 
@@ -136635,9 +135392,9 @@ SmithNormalForm(R,Row,Col,M) : Exports == Implementation where
         for j in 2..m1 repeat
           j0:=j
           while zero?(tjj:=t1(j,j0)) repeat j0:=j0+1
-          u(i,j) :=((mm(i,j0) - (&quot;+&quot;/[u(i,k) * t1(k,j0) for k in 1..(j-1)])) exquo
-                    tjj) :: R
-      u1:M2:= map(#1 :: QF,u)$MATCAT1
+          u(i,j) :=
+           ((mm(i,j0)-(&quot;+&quot;/[u(i,k)*t1(k,j0) for k in 1..(j-1)])) exquo tjj)::R
+      u1:M2:= map(x +-&gt; x::QF,u)$MATCAT1
       [t,map(retract$QF,(inverse u1)::M2)$MATCAT2]
 
                 --- Hermite normal form of m ---
@@ -137084,67 +135841,70 @@ SquareFreeQuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
 
   Exports ==  with
      startTable!: (S,S,S) -&gt; Void
-         ++ \axiom{startTableGcd!(s1,s2,s3)} 
-         ++ is an internal subroutine, exported only for developement.
+      ++ \axiom{startTableGcd!(s1,s2,s3)} 
+      ++ is an internal subroutine, exported only for developement.
      stopTable!: () -&gt; Void
-         ++ \axiom{stopTableGcd!()} 
-         ++ is an internal subroutine, exported only for developement.
+      ++ \axiom{stopTableGcd!()} 
+      ++ is an internal subroutine, exported only for developement.
      supDimElseRittWu?: (TS,TS) -&gt; Boolean
-         ++ \axiom{supDimElseRittWu(ts,us)} returns true iff \axiom{ts}
-         ++ has less elements than \axiom{us} otherwise if \axiom{ts}
-         ++ has higher rank than \axiom{us} w.r.t. Riit and Wu ordering.
+      ++ \axiom{supDimElseRittWu(ts,us)} returns true iff \axiom{ts}
+      ++ has less elements than \axiom{us} otherwise if \axiom{ts}
+      ++ has higher rank than \axiom{us} w.r.t. Riit and Wu ordering.
      algebraicSort: Split -&gt; Split
-         ++ \axiom{algebraicSort(lts)} sorts \axiom{lts} w.r.t 
-         ++ \axiomOpFrom{supDimElseRittWu}{QuasiComponentPackage}.
+      ++ \axiom{algebraicSort(lts)} sorts \axiom{lts} w.r.t 
+      ++ \axiomOpFrom{supDimElseRittWu}{QuasiComponentPackage}.
      moreAlgebraic?: (TS,TS) -&gt; Boolean
-         ++ \axiom{moreAlgebraic?(ts,us)} returns false iff \axiom{ts}
-         ++ and \axiom{us} are both empty, or \axiom{ts}
-         ++ has less elements than \axiom{us}, or some variable is
-         ++ algebraic w.r.t. \axiom{us} and is not w.r.t. \axiom{ts}.
+      ++ \axiom{moreAlgebraic?(ts,us)} returns false iff \axiom{ts}
+      ++ and \axiom{us} are both empty, or \axiom{ts}
+      ++ has less elements than \axiom{us}, or some variable is
+      ++ algebraic w.r.t. \axiom{us} and is not w.r.t. \axiom{ts}.
      subTriSet?: (TS,TS) -&gt; Boolean
-         ++ \axiom{subTriSet?(ts,us)} returns true iff \axiom{ts} is
-         ++ a sub-set of \axiom{us}.
+      ++ \axiom{subTriSet?(ts,us)} returns true iff \axiom{ts} is
+      ++ a sub-set of \axiom{us}.
      subPolSet?: (LP, LP) -&gt; Boolean
-         ++ \axiom{subPolSet?(lp1,lp2)} returns true iff \axiom{lp1} is
-         ++ a sub-set of \axiom{lp2}.
+      ++ \axiom{subPolSet?(lp1,lp2)} returns true iff \axiom{lp1} is
+      ++ a sub-set of \axiom{lp2}.
      internalSubPolSet?: (LP, LP) -&gt; Boolean
-         ++ \axiom{internalSubPolSet?(lp1,lp2)} returns true iff \axiom{lp1} is
-         ++ a sub-set of \axiom{lp2} assuming that these lists are sorted
-         ++ increasingly w.r.t. \axiomOpFrom{infRittWu?}{RecursivePolynomialCategory}.
+      ++ \axiom{internalSubPolSet?(lp1,lp2)} returns true iff \axiom{lp1} is
+      ++ a sub-set of \axiom{lp2} assuming that these lists are sorted
+      ++ increasingly w.r.t. 
+      ++ \axiomOpFrom{infRittWu?}{RecursivePolynomialCategory}.
      internalInfRittWu?: (LP, LP) -&gt; Boolean
-         ++ \axiom{internalInfRittWu?(lp1,lp2)}
-         ++ is an internal subroutine, exported only for developement.
+      ++ \axiom{internalInfRittWu?(lp1,lp2)}
+      ++ is an internal subroutine, exported only for developement.
      infRittWu?: (LP, LP) -&gt; Boolean
-         ++ \axiom{infRittWu?(lp1,lp2)}
-         ++ is an internal subroutine, exported only for developement.
+      ++ \axiom{infRittWu?(lp1,lp2)}
+      ++ is an internal subroutine, exported only for developement.
      internalSubQuasiComponent?: (TS,TS) -&gt; Union(Boolean,&quot;failed&quot;)
-         ++ \axiom{internalSubQuasiComponent?(ts,us)} returns a boolean \spad{b} value
-         ++ if the fact the regular zero set of \axiom{us} contains that of
-         ++ \axiom{ts} can be decided (and in that case \axiom{b} gives this 
-         ++ inclusion) otherwise returns \axiom{&quot;failed&quot;}.
+      ++ \axiom{internalSubQuasiComponent?(ts,us)} returns a boolean 
+      ++ \spad{b} value if the fact the regular zero set of \axiom{us} 
+      ++ contains that of \axiom{ts} can be decided (and in that case 
+      ++ \axiom{b} gives this inclusion) otherwise returns \axiom{&quot;failed&quot;}.
      subQuasiComponent?: (TS,TS) -&gt; Boolean
-         ++ \axiom{subQuasiComponent?(ts,us)} returns true iff 
-         ++ \axiomOpFrom{internalSubQuasiComponent?(ts,us)}{QuasiComponentPackage}
-         ++ returs true.
+      ++ \axiom{subQuasiComponent?(ts,us)} returns true iff 
+      ++ \axiomOpFrom{internalSubQuasiComponent?(ts,us)}{QuasiComponentPackage}
+      ++ returns true.
      subQuasiComponent?: (TS,Split) -&gt; Boolean
-         ++ \axiom{subQuasiComponent?(ts,lus)} returns true iff
-         ++ \axiom{subQuasiComponent?(ts,us)} holds for one \spad{us} in \spad{lus}.
+      ++ \axiom{subQuasiComponent?(ts,lus)} returns true iff
+      ++ \axiom{subQuasiComponent?(ts,us)} holds for one 
+      ++ \spad{us} in \spad{lus}.
      removeSuperfluousQuasiComponents: Split -&gt; Split
-         ++ \axiom{removeSuperfluousQuasiComponents(lts)} removes from \axiom{lts}
-         ++ any \spad{ts} such that \axiom{subQuasiComponent?(ts,us)} holds for 
-         ++ another \spad{us} in \axiom{lts}.
+      ++ \axiom{removeSuperfluousQuasiComponents(lts)} removes from 
+      ++ \axiom{lts} any \spad{ts} such that 
+      ++ \axiom{subQuasiComponent?(ts,us)} holds for 
+      ++ another \spad{us} in \axiom{lts}.
      subCase?: (LpWT,LpWT) -&gt; Boolean
-         ++ \axiom{subCase?(lpwt1,lpwt2)}
-         ++ is an internal subroutine, exported only for developement.
+      ++ \axiom{subCase?(lpwt1,lpwt2)}
+      ++ is an internal subroutine, exported only for developement.
      removeSuperfluousCases: List LpWT -&gt; List LpWT
-         ++ \axiom{removeSuperfluousCases(llpwt)}
-         ++ is an internal subroutine, exported only for developement.
+      ++ \axiom{removeSuperfluousCases(llpwt)}
+      ++ is an internal subroutine, exported only for developement.
      prepareDecompose: (LP, List(TS),B,B) -&gt; List Branch
-         ++ \axiom{prepareDecompose(lp,lts,b1,b2)}
-         ++ is an internal subroutine, exported only for developement.
+      ++ \axiom{prepareDecompose(lp,lts,b1,b2)}
+      ++ is an internal subroutine, exported only for developement.
      branchIfCan: (LP,TS,LP,B,B,B,B,B) -&gt; Union(Branch,&quot;failed&quot;)
-         ++ \axiom{branchIfCan(leq,ts,lineq,b1,b2,b3,b4,b5)}
-         ++ is an internal subroutine, exported only for developement.
+      ++ \axiom{branchIfCan(leq,ts,lineq,b1,b2,b3,b4,b5)}
+      ++ is an internal subroutine, exported only for developement.
 
   Implementation == add
 
@@ -137170,7 +135930,8 @@ SquareFreeQuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
        #ts &gt; #us =&gt; false
        lp1 :LP := members(ts)
        lp2 :LP := members(us)
-       while (not empty? lp1) and (not infRittWu?(first(lp2),first(lp1))) repeat
+       while (not empty? lp1) and (not infRittWu?(first(lp2),first(lp1)))
+        repeat
          lp1 := rest lp1
          lp2 := rest lp2
        not empty? lp1
@@ -137273,7 +136034,9 @@ SquareFreeQuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
 
      removeSuperfluousCases (cases:List LpWT) ==
        #cases &lt; 2 =&gt; cases
-       toSee := sort(supDimElseRittWu?(#1.tower,#2.tower),cases)
+       toSee := 
+         sort((x:LpWT,y:LpWT):Boolean +-&gt; supDimElseRittWu?(x.tower,y.tower),
+              cases)
        lpwt1,lpwt2 : LpWT
        toSave,headmaxcases,maxcases,copymaxcases : List LpWT
        while not empty? toSee repeat
@@ -137412,15 +136175,18 @@ SquareFreeQuasiComponentPackage(R,E,V,P,TS): Exports == Implementation where
              lineq : LP := branch.ineq
              ubf1: UBF := branchIfCan(leq,ts,lq,false,false,true,true,true)@UBF
              ubf1 case &quot;failed&quot; =&gt; &quot;leave&quot;
-             ubf2: UBF := branchIfCan([f],ts,lineq,false,false,true,true,true)@UBF
+             ubf2: UBF := 
+               branchIfCan([f],ts,lineq,false,false,true,true,true)@UBF
              ubf2 case &quot;failed&quot; =&gt; &quot;leave&quot;
              leq := sort(infRittWu?,removeDuplicates concat(ubf1.eq,ubf2.eq))
-             lineq := sort(infRittWu?,removeDuplicates concat(ubf1.ineq,ubf2.ineq))
-             newBranch := branchIfCan(leq,ts,lineq,false,false,false,false,false)
+             lineq := 
+               sort(infRittWu?,removeDuplicates concat(ubf1.ineq,ubf2.ineq))
+             newBranch := 
+               branchIfCan(leq,ts,lineq,false,false,false,false,false)
              branches:= cons(newBranch::Branch,branches)
            lq := cons(f,lq)
          toSee := branches
-       sort(supDimElseRittWu?(#1.tower,#2.tower),toSee)
+       sort((x,y) +-&gt; supDimElseRittWu?(x.tower,y.tower),toSee)
 
 @
 &lt;&lt;SFQCMPK.dotabb&gt;&gt;=
@@ -137940,7 +136706,10 @@ SquareFreeRegularTriangularSetGcdPackage(R,E,V,P,TS): Exports == Implementation
          toSee := llpwt; llpwt := []
          -- CONSIDER FIRST the vanishing current last subresultant
          for lpwt in toSee repeat 
-           p1 := lpwt.val.1; p2 := lpwt.val.2; s := lpwt.val.3; ts := lpwt.tower
+           p1 := lpwt.val.1; 
+           p2 := lpwt.val.2; 
+           s := lpwt.val.3; 
+           ts := lpwt.tower
            lbwt := stoseInvertible?(leadingCoefficient(p2,v),ts)@(List BWT)
            for bwt in lbwt repeat
              bwt.val = false =&gt; 
@@ -138008,7 +136777,7 @@ SquareFreeRegularTriangularSetGcdPackage(R,E,V,P,TS): Exports == Implementation
 
      stoseSquareFreePart_base(p:P, ts: TS): List PWT == [[p,ts]$PWT]
 
-     stoseSquareFreePart(p:P, ts: TS): List PWT == stoseSquareFreePart_wip(p,ts)
+     stoseSquareFreePart(p:P, ts:TS): List PWT == stoseSquareFreePart_wip(p,ts)
        
      stoseInvertible?_sqfreg(p:P,ts:TS): List BWT ==
        --iprint(&quot;+&quot;)$iprintpack
@@ -138023,7 +136792,8 @@ SquareFreeRegularTriangularSetGcdPackage(R,E,V,P,TS): Exports == Implementation
            bwt.val =&gt; lbwt := cons(bwt,lbwt)
            newq := removeZero(q,bwt.tower)
            zero? newq =&gt; lbwt := cons(bwt,lbwt)
-           lbwt := concat(stoseInvertible?_sqfreg(newq,bwt.tower)@(List BWT), lbwt)
+           lbwt := 
+            concat(stoseInvertible?_sqfreg(newq,bwt.tower)@(List BWT), lbwt)
          return lbwt
        ts_v := select(ts,v)::P
        ts_v_- := collectUnder(ts,v)
@@ -138052,7 +136822,7 @@ SquareFreeRegularTriangularSetGcdPackage(R,E,V,P,TS): Exports == Implementation
          -- USE stoseInternalAugment with parameters ??
          for ts_h in lts_h repeat
            lbwt := cons([true, ts_h]$BWT,lbwt)
-       sort(#1.val &lt; #2.val,lbwt)
+       sort((x,y) +-&gt; x.val &lt; y.val,lbwt)
 
      stoseInvertibleSet_sqfreg(p:P,ts:TS): Split ==
        --iprint(&quot;*&quot;)$iprintpack
@@ -138108,7 +136878,8 @@ SquareFreeRegularTriangularSetGcdPackage(R,E,V,P,TS): Exports == Implementation
            bwt.val =&gt; lbwt := cons(bwt,lbwt)
            newq := removeZero(q,bwt.tower)
            zero? newq =&gt; lbwt := cons(bwt,lbwt)
-           lbwt := concat(stoseInvertible?_reg(newq,bwt.tower)@(List BWT), lbwt)
+           lbwt := 
+            concat(stoseInvertible?_reg(newq,bwt.tower)@(List BWT), lbwt)
          return lbwt
        ts_v := select(ts,v)::P
        ts_v_- := collectUnder(ts,v)
@@ -138138,7 +136909,7 @@ SquareFreeRegularTriangularSetGcdPackage(R,E,V,P,TS): Exports == Implementation
          for ts_h in lts_h repeat
            inv := stoseInvertible?_reg(q,ts_h)@(List BWT)
            lbwt := concat([bwt for bwt in inv | bwt.val],lbwt)
-       sort(#1.val &lt; #2.val,lbwt)
+       sort((x,y) +-&gt; x.val &lt; y.val,lbwt)
 
      stoseInvertibleSet_reg(p:P,ts:TS): Split ==
        --iprint(&quot;/&quot;)$iprintpack
@@ -138592,9 +137363,9 @@ StreamFunctions3(A,B,C): Exports == Implementation where
 
     map(g,x,y) ==
       explicitlyEmpty? x =&gt; empty()
-      eq?(x,rst x) =&gt; map(g(frst x,#1),y)$StreamFunctions2(B,C)
+      eq?(x,rst x) =&gt; map(z +-&gt; g(frst x,z),y)$StreamFunctions2(B,C)
       explicitlyEmpty? y =&gt; empty()
-      eq?(y,rst y) =&gt; map(g(#1,frst y),x)$StreamFunctions2(A,C)
+      eq?(y,rst y) =&gt; map(z +-&gt; g(z,frst y),x)$StreamFunctions2(A,C)
       mapp(g,x,y)
 
 @
@@ -138675,14 +137446,14 @@ StreamInfiniteProduct(Coef): Exports == Implementation where
  
       applyOverQF:(ST QF Coef -&gt; ST QF Coef,ST Coef) -&gt; ST Coef
       applyOverQF(f,st) ==
-        stQF := map(#1 :: QF(Coef),st)$StreamFunctions2(Coef,QF Coef)
-        map(retract(#1)@Coef,f stQF)$StreamFunctions2(QF Coef,Coef)
+        stQF := map(z1 +-&gt; z1::QF(Coef),st)$StreamFunctions2(Coef,QF Coef)
+        map(z1 +-&gt; retract(z1)@Coef,f stQF)$StreamFunctions2(QF Coef,Coef)
  
-      infiniteProduct st     == applyOverQF(exp lambert log #1,st)
-      evenInfiniteProduct st == applyOverQF(exp evenlambert log #1,st)
-      oddInfiniteProduct st  == applyOverQF(exp oddlambert log #1,st)
+      infiniteProduct st     == applyOverQF(z1 +-&gt; exp lambert log z1,st)
+      evenInfiniteProduct st == applyOverQF(z1 +-&gt; exp evenlambert log z1,st)
+      oddInfiniteProduct st  == applyOverQF(z1 +-&gt; exp oddlambert log z1,st)
       generalInfiniteProduct(st,a,d) ==
-        applyOverQF(exp generalLambert(log #1,a,d),st)
+        applyOverQF(z1 +-&gt; exp generalLambert(log z1,a,d),st)
 
 @
 &lt;&lt;STINPROD.dotabb&gt;&gt;=
@@ -138884,7 +137655,7 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
         ++ first order non-linear differential equation described by u of the
         ++ form \spad{[[b&lt;0,0&gt;,b&lt;0,1&gt;,...],[b&lt;1,0&gt;,b&lt;1,1&gt;,.],...]}.
         ++ the differential equation has the form
-        ++ \spad{y' = sum(i=0 to infinity,j=0 to infinity,b&lt;i,j&gt;*(x**i)*(y**j))}.
+        ++ \spad{y'=sum(i=0 to infinity,j=0 to infinity,b&lt;i,j&gt;*(x**i)*(y**j))}.
       powern : (RN,ST A) -&gt; ST A
         ++ powern(r,f) raises power series f to the power r.
     if A has Field then
@@ -138909,18 +137680,18 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
     x + y == delay
       empty? y =&gt; x
       empty? x =&gt; y
-      eq?(x,rst x) =&gt; map(frst x + #1,y)
-      eq?(y,rst y) =&gt; map(frst y + #1,x)
+      eq?(x,rst x) =&gt; map(z +-&gt; frst x+z, y)
+      eq?(y,rst y) =&gt; map(z +-&gt; frst y+z, x)
       concat(frst x + frst y,rst x + rst y)
 
     x - y == delay
       empty? y =&gt; x
       empty? x =&gt; -y
-      eq?(x,rst x) =&gt; map(frst x - #1,y)
-      eq?(y,rst y) =&gt; map(#1 - frst y,x)
+      eq?(x,rst x) =&gt; map(z +-&gt; frst x-z, y)
+      eq?(y,rst y) =&gt; map(z +-&gt; z-frst y, x)
       concat(frst x - frst y,rst x - rst y)
 
-    -y == map(_-#1,y)
+    -y == map(z +-&gt; -z, y)
 
     (x:ST A) * (y:ST A) == delay
       empty? y =&gt; zro()
@@ -138929,11 +137700,11 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
 
     (s:A) * (x:ST A) ==
       zero? s =&gt; zro()
-      map(s * #1,x)
+      map(z +-&gt; s*z, x)
 
     (x:ST A) * (s:A) ==
       zero? s =&gt; zro()
-      map(#1 * s,x)
+      map(z +-&gt; z*s, x)
 
     iDiv: (ST A,ST A,A) -&gt; ST A
     iDiv(x,y,ry0) == delay
@@ -138951,7 +137722,7 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
           return &quot;failed&quot;
         leave &quot;first entry in y is non-zero&quot;
       (ry0 := recip frst y) case &quot;failed&quot; =&gt; &quot;failed&quot;
-      empty? rst y =&gt; map(#1 * (ry0 :: A),x)
+      empty? rst y =&gt; map(z +-&gt; z*(ry0 :: A), x)
       iDiv(x,y,ry0 :: A)
 
     (x:ST A) / (y:ST A) == delay
@@ -138959,7 +137730,7 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
       empty? x =&gt; empty()
       (ry0 := recip frst y) case &quot;failed&quot; =&gt;
         error &quot;/: second argument is not invertible&quot;
-      empty? rst y =&gt; map(#1 * (ry0 :: A),x)
+      empty? rst y =&gt; map(z +-&gt; z*(ry0::A),x)
       iDiv(x,y,ry0 :: A)
 
     recip x ==
@@ -138990,10 +137761,10 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
 
 --% some streams of integers
     nnintegers: NNI -&gt; ST NNI
-    nnintegers zz == generate(#1 + 1,zz)
-    integers z == generate(#1 + 1,z)
-    oddintegers z == generate(#1 + 2,z)
-    int s == generate(#1 + 1,s)
+    nnintegers zz == generate(y +-&gt; y+1, zz)
+    integers z    == generate(y +-&gt; y+1, z)
+    oddintegers z == generate(y +-&gt; y+2, z)
+    int s         == generate(y +-&gt; y+1, s)
 
 --% derivatives
 
@@ -139018,7 +137789,8 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
 
 --% evaluations and compositions
 
-    eval(x,at) == scan(0,#1 + #2,mapmult(x,generate(at * #1,1)))$SP2(A,A)
+    eval(x,at) == 
+      scan(0,(y,z) +-&gt; y+z,mapmult(x,generate(y +-&gt; at*y,1)))$SP2(A,A)
 
     compose(x,y) == delay
       empty? y =&gt; concat(frst x,zro())
@@ -139031,7 +137803,7 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
 
     lagrangere:(ST A,ST A) -&gt; ST A
     lagrangere(x,c) == delay(concat(0,compose(x,c)))
-    lagrange x == YS(lagrangere(x,#1))
+    lagrange x == YS(y +-&gt; lagrangere(x,y))
 
     revert x ==
       empty? x =&gt; error &quot;revert should start 0,1,...&quot;
@@ -139091,7 +137863,7 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
         error &quot;generalLambert: both integer arguments must be positive&quot;
       empty? st =&gt; zro()
       zero? frst st =&gt;
-        concat(0,addiag(map(rptg3(a,d,#1,#2),_
+        concat(0,addiag(map((x,y) +-&gt; rptg3(a,d,x,y),
                  integers 1,rst st)$SP3(I,A,ST A)))
       error &quot;generalLambert: constant coefficient should be zero&quot;
 
@@ -139122,7 +137894,7 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
     comps(ststa,x) == delay$(ST ST A)
        empty? ststa =&gt; empty()$(ST ST A)
        empty? x =&gt; cssa(frst ststa,empty()$(ST ST A))
-       cssa(frst ststa,mapsa((rst x) * #1,comps(rst ststa,x)))
+       cssa(frst ststa,mapsa(y +-&gt; (rst x)*y,comps(rst ststa,x)))
 
     if A has Algebra RN then
       integre: (ST A,I) -&gt; ST A
@@ -139138,12 +137910,12 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
 
       nldere:(ST ST A,ST A) -&gt; ST A
       nldere(lslsa,c) == lazyIntegrate(0,addiag(comps(lslsa,c)))
-      nlde lslsa == YS(nldere(lslsa,#1))
+      nlde lslsa == YS(y +-&gt; nldere(lslsa,y))
 
       RATPOWERS : Boolean := A has &quot;**&quot;: (A,RN) -&gt; A
 
       smult: (RN,ST A) -&gt; ST A
-      smult(rn,x) == map(rn * #1,x)
+      smult(rn,x) == map(y +-&gt; rn*y, x)
       powerrn:(RN,ST A,ST A) -&gt; ST A
       powerrn(rn,x,c) == delay
         concat(1,integ(smult(rn + 1,c * deriv x)) - rst x * c)
@@ -139162,15 +137934,15 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
            error &quot;** rational power of coefficient undefined&quot;
 -- This error message is misleading, isn't it? see sups.spad/cRationalPower
         power :=
---          one? co =&gt; YS(powerrn(rn,x,#1))
-          (co = 1) =&gt; YS(powerrn(rn,x,#1))
+--          one? co =&gt; YS(y +-&gt; powerrn(rn,x,y))
+          (co = 1) =&gt; YS(y +-&gt; powerrn(rn,x,y))
           (denom rn) = 1 =&gt;
             not negative?(num := numer rn) =&gt; 
 -- It seems that this cannot happen, but I don't know why
-              (co**num::NNI) * YS(powerrn(rn,(invCo :: A) * x,#1))
-            (invCo :: A)**((-num)::NNI) * YS(powerrn(rn,(invCo :: A) * x,#1))
+              (co**num::NNI) * YS(y +-&gt; powerrn(rn,(invCo :: A) * x, y))
+            (invCo::A)**((-num)::NNI) * YS(y +-&gt; powerrn(rn,(invCo :: A)*x, y))
 
-          RATPOWERS =&gt; co**rn * YS(powerrn(rn,(invCo :: A) * x,#1))
+          RATPOWERS =&gt; co**rn * YS(y +-&gt; powerrn(rn,(invCo :: A)*x, y))
           error &quot;** rational power of coefficient undefined&quot;
 
     if A has Field then
@@ -139191,7 +137963,7 @@ StreamTaylorSeriesOperations(A): Exports == Implementation where
         empty? x =&gt; zro()
         frst x^=1 =&gt; error &quot;**:constant coefficient should be 1&quot;
         concat(frst x,finteg((s+1)*(c*deriv x))-rst x * c)
-      power(s,x) == YS(powerre(s,x,#1))
+      power(s,x) == YS(y +-&gt; powerre(s,x,y))
 
 @
 &lt;&lt;STTAYLOR.dotabb&gt;&gt;=
@@ -139350,8 +138122,8 @@ StreamTranscendentalFunctions(Coef): Exports == Implementation where
 
     exp z ==
       empty? z =&gt; 1 :: ST
-      (coef := frst z) = 0 =&gt; YS expre(1,#1,deriv z)
-      TRANSFCN =&gt; YS expre(exp coef,#1,deriv z)
+      (coef := frst z) = 0 =&gt; YS(y +-&gt; expre(1,y,deriv z))
+      TRANSFCN =&gt; YS(y +-&gt; expre(exp coef,y,deriv z))
       error concat(&quot;exp: &quot;,TRCONST)
 
     log z ==
@@ -139382,8 +138154,8 @@ StreamTranscendentalFunctions(Coef): Exports == Implementation where
     sincos z ==
       empty? z =&gt; [0 :: ST,1 :: ST]
       l :=
-        (coef := frst z) = 0 =&gt; YS(sincosre(0,1,#1,deriv z,-1),2)
-        TRANSFCN =&gt; YS(sincosre(sin coef,cos coef,#1,deriv z,-1),2)
+        (coef := frst z) = 0 =&gt; YS(y +-&gt; sincosre(0,1,y,deriv z,-1),2)
+        TRANSFCN =&gt; YS(y +-&gt; sincosre(sin coef,cos coef,y,deriv z,-1),2)
         error concat(&quot;sincos: &quot;,TRCONST)
       [first l,second l]
 
@@ -139407,8 +138179,8 @@ StreamTranscendentalFunctions(Coef): Exports == Implementation where
 
     tan z ==
       empty? z =&gt; 0 :: ST
-      (coef := frst z) = 0 =&gt; YS tanre(0,#1,deriv z,1)
-      TRANSFCN =&gt; YS tanre(tan coef,#1,deriv z,1)
+      (coef := frst z) = 0 =&gt; YS(y +-&gt; tanre(0,y,deriv z,1))
+      TRANSFCN =&gt; YS(y +-&gt; tanre(tan coef,y,deriv z,1))
       error concat(&quot;tan: &quot;,TRCONST)
 
     cotre:(Coef,ST,ST) -&gt; ST
@@ -139429,7 +138201,7 @@ StreamTranscendentalFunctions(Coef): Exports == Implementation where
     cot z ==
       empty? z =&gt; error &quot;cot: cot(0) is undefined&quot;
       (coef := frst z) = 0 =&gt; error concat(&quot;cot: &quot;,NPOWERS)
-      TRANSFCN =&gt; YS cotre(cot coef,#1,deriv z)
+      TRANSFCN =&gt; YS(y +-&gt; cotre(cot coef,y,deriv z))
       error concat(&quot;cot: &quot;,TRCONST)
 
     sec z ==
@@ -139565,8 +138337,8 @@ StreamTranscendentalFunctions(Coef): Exports == Implementation where
     sinhcosh z ==
       empty? z =&gt; [0 :: ST,1 :: ST]
       l :=
-        (coef := frst z) = 0 =&gt; YS(sincosre(0,1,#1,deriv z,1),2)
-        TRANSFCN =&gt; YS(sincosre(sinh coef,cosh coef,#1,deriv z,1),2)
+        (coef := frst z) = 0 =&gt; YS(y +-&gt; sincosre(0,1,y,deriv z,1),2)
+        TRANSFCN =&gt; YS(y +-&gt; sincosre(sinh coef,cosh coef,y,deriv z,1),2)
         error concat(&quot;sinhcosh: &quot;,TRCONST)
       [first l,second l]
 
@@ -139575,8 +138347,8 @@ StreamTranscendentalFunctions(Coef): Exports == Implementation where
 
     tanh z ==
       empty? z =&gt; 0 :: ST
-      (coef := frst z) = 0 =&gt; YS tanre(0,#1,deriv z,-1)
-      TRANSFCN =&gt; YS tanre(tanh coef,#1,deriv z,-1)
+      (coef := frst z) = 0 =&gt; YS(y +-&gt; tanre(0,y,deriv z,-1))
+      TRANSFCN =&gt; YS(y +-&gt; tanre(tanh coef,y,deriv z,-1))
       error concat(&quot;tanh: &quot;,TRCONST)
 
     coth z ==
@@ -140538,7 +139310,7 @@ SubResultantPackage(R, UP): Exports == Implementation where
       primitivePart(p, q) ==
          rec := extendedEuclidean(leadingCoefficient p, q,
                                   1)::Record(coef1:R, coef2:R)
-         unitCanonical primitivePart map((rec.coef1 * #1) rem q, p)
+         unitCanonical primitivePart map(x1 +-&gt; (rec.coef1 * x1) rem q, p)
  
     subresultantVector(p1, p2) ==
        F : UP -- auxiliary stuff !
@@ -140810,7 +139582,8 @@ SystemODESolver(F, LO): Exports == Implementation where
       m:N := 0             -- number of Solutions
       part:V := new(n, 0)
       -- count first the different solutions
-      for sol in sols repeat m := m + count(#1 ^= 0, sol.basis)$List(F)
+      for sol in sols repeat 
+        m := m + count((f1:F):Boolean +-&gt; f1 ^= 0, sol.basis)$List(F)
       SolMatrix:MF := new(n, m, 0)
       m := 0
       for sol in reverse_! sols repeat
@@ -140833,7 +139606,7 @@ SystemODESolver(F, LO): Exports == Implementation where
 
     triangulate(m:MF, v:V) ==
       k:N := 0       -- sum of companion-dimensions
-      rat := normalForm(m, 1, - diff #1)
+      rat := normalForm(m, 1, (f1:F):F +-&gt; - diff f1)
       l   := companionBlocks(rat.R, rat.Ainv * v)
       ler:List(ER) := empty()
       for er in l repeat
@@ -140887,7 +139660,8 @@ SystemODESolver(F, LO): Exports == Implementation where
     solveInField(m, v, solve) ==
       ((n := nrows m) = ncols m) and
          ((u := M2F(diagonalMatrix [diff for i in 1..n] - m)) case MF) =&gt;
-             (uu := solve(u::MF, v, FSL2USL solve(#1, #2))) case &quot;failed&quot; =&gt;
+             (uu := solve(u::MF, v, 
+               (l1:LO,f2:F):USL +-&gt; FSL2USL solve(l1, f2))) case &quot;failed&quot; =&gt;
                   [&quot;failed&quot;, empty()]
              rc := uu::Record(particular:V, basis:MF)
              [rc.particular, [column(rc.basis, i) for i in 1..ncols(rc.basis)]]
@@ -141882,7 +140656,7 @@ TableauxBumpers(S:OrderedSet):T==C where
                  then cons(rw.td, bumptab(cf,rw.sd,rest llls))
                  else cons(rw.td,rest llls))
 
-       bumptab1(x,llls)==bumptab(#1&lt;#2,x,llls)
+       bumptab1(x,llls)==bumptab((s1,s2) +-&gt; s1&lt;s2, x, llls)
 
        rd==&gt; reduce$StreamFunctions2(PAIR,L L PAIR)
        tab1(lls:(L PAIR))== rd([],bumptab1,lls::(ST PAIR))
@@ -141890,10 +140664,11 @@ TableauxBumpers(S:OrderedSet):T==C where
        srt==&gt;sort$(PAIR)
        lexorder:(PAIR,PAIR)-&gt;B
        lexorder(p1,p2)==if p1.1=p2.1 then p1.2&lt;p2.2 else p1.1&lt;p2.1
-       lex lp==(sort$(L PAIR))(lexorder(#1,#2),lp)
-       slex ls==lex([[i,j] for i in srt(#1&lt;#2,ls) for j in ls])
+       lex lp==(sort$(L PAIR))((s1,s2) +-&gt; lexorder(s1,s2), lp)
+       slex ls==lex([[i,j] for i in srt((s1, s2) +-&gt; s1&lt;s2, ls) for j in ls])
        inverse ls==[lss.2 for lss in
-                    lex([[j,i] for i in srt(#1&lt;#2,ls) for j in ls])]
+                    lex([[j,i] for i in srt((s1,s2) +-&gt; s1&lt;s2, ls) 
+                               for j in ls])]
 
        tab(ls:(PAIR))==(tableau tab1 slex ls )
 
@@ -141912,7 +140687,7 @@ TableauxBumpers(S:OrderedSet):T==C where
          if null llls
          then lp
          else (rc:RC:=mr llls;
-               rv:=reverse (bumptab(#2&lt;#1,rc.f1,rc.f2));
+               rv:=reverse (bumptab((s1:S,s2:S):B +-&gt; s2&lt;s1, rc. f1, rc. f2));
                untab(cons(first first rv,lp)
                      ,append(rest rv,
                                          if null rc.f3
@@ -142205,7 +140980,9 @@ TaylorSolve(F, UTSF, UTSSUPF): Exports == Implementation where
 
 &lt;&lt;implementation: UTSSOL TaylorSolve&gt;&gt;=
         seriesSolve(f, l) ==
-            c1 := map(#1::(SUP F), l)$ListFunctions2(F, SUP F)::(Stream SUP F)
+            c1 := 
+             map((x:F):SUP F +-&gt; x::(SUP F), l)
+                  $ListFunctions2(F, SUP F)::(Stream SUP F)
             coeffs: Stream SUP F := concat(c1, generate(monomial(1$F,1$NNI)))
 --            coeffs: Stream SUP F := concat(c1, monomial(1$F,1$NNI))
 @
@@ -142930,8 +141707,8 @@ TopLevelDrawFunctionsForAlgebraicCurves(R,Ex): Exports == Implementation where
         ranges := retract(ratRange :: Any)$ANY1(L SEG RN)
         not size?(ranges,2) =&gt; error &quot;draw: you must specify two ranges&quot;
         xRange := first ranges; yRange := second ranges
-        xRangeFloat := map(convert(#1)@Float,xRange)@(SEG F)
-        yRangeFloat := map(convert(#1)@Float,yRange)@(SEG F)
+        xRangeFloat := map((s:RN):F+-&gt;convert(s)@Float,xRange)@(SEG F)
+        yRangeFloat := map((s:RN):F+-&gt;convert(s)@Float,yRange)@(SEG F)
         floatRanges := [xRangeFloat,yRangeFloat]
       else
         floatRanges := retract(floatRange :: Any)$ANY1(L SEG F)
@@ -142939,8 +141716,8 @@ TopLevelDrawFunctionsForAlgebraicCurves(R,Ex): Exports == Implementation where
           error &quot;draw: you must specify two ranges&quot;
         xRangeFloat := first floatRanges
         yRangeFloat := second floatRanges
-        xRange := map(retract(#1)@RN,xRangeFloat)@(SEG RN)
-        yRange := map(retract(#1)@RN,yRangeFloat)@(SEG RN)
+        xRange := map((s:F):RN+-&gt;retract(s)@RN,xRangeFloat)@(SEG RN)
+        yRange := map((s:F):RN+-&gt;retract(s)@RN,yRangeFloat)@(SEG RN)
         ranges := [xRange,yRange]
       -- create curve plot
       acplot := makeSketch(p,x,y,xRange,yRange)
@@ -143226,8 +142003,8 @@ of points will always dominate the computation time.\\
       xDiff := xHi - xLo; yDiff := yHi - yLo
       pad := abs(yDiff - xDiff)/2
       yDiff &gt; xDiff =&gt;
-        [segment(xLo - pad,xHi + pad),map(convert(#1)@Float,yVals)]
-      [map(convert(#1)@Float,xVals),segment(yLo - pad,yHi + pad)]
+        [segment(xLo - pad,xHi + pad),map(x +-&gt; convert(x)@Float,yVals)]
+      [map(x +-&gt; convert(x)@Float,xVals),segment(yLo - pad,yHi + pad)]
 
     drawPlot: (PLOT,L DROP) -&gt; VIEW2
     drawPlot(plot,l) ==
@@ -143268,8 +142045,8 @@ of points will always dominate the computation time.\\
         -- add scaled ranges to list of options
         l := concat(ranges scaledRanges,l)
       else
-        xRangeFloat : SEG := map(convert(#1)@Float,xRange)
-        yRangeFloat : SEG := map(convert(#1)@Float,yRange)
+        xRangeFloat : SEG := map(x +-&gt; convert(x)@Float,xRange)
+        yRangeFloat : SEG := map(x +-&gt; convert(x)@Float,yRange)
         -- add ranges to list of options
         l := concat(ranges(ll : L SEG := [xRangeFloat,yRangeFloat]),l)
       -- process color information
@@ -143316,14 +142093,14 @@ SingleFloat value.
       oldAdaptive := adaptive?()$PLOT
       setAdaptive(adaptive(l,oldAdaptive))$PLOT
       -- create function SF -&gt; Point SF
-      ff : L(SF -&gt; Point SF) := [makePt2(myTrap1(f,#1),#1)]
+      ff : L(SF -&gt; Point SF) := [x +-&gt; makePt2(myTrap1(f,x),x)]
       -- process change of coordinates
       if (c := option(l,&quot;coordinates&quot; :: Symbol)) case &quot;failed&quot; then
         -- default coordinate transformation
-        ff := [makePt2(#1,myTrap1(f,#1))]
+        ff := [x +-&gt; makePt2(x,myTrap1(f,x))]
       else
         cc : L(Pt -&gt; Pt) := [retract(c :: Any)$ANY1(Pt -&gt; Pt)]
-        ff := [(first cc)((first ff)(#1))]
+        ff := [x +-&gt; (first cc)((first ff)(x))]
       -- create PLOT
       pl := pointPlot(first ff,normalize seg)
       -- reset adaptive plotting
@@ -143341,11 +142118,11 @@ SingleFloat value.
       setAdaptive(adaptive(l,oldAdaptive))$PLOT
       -- create function SF -&gt; Point SF
       f := coordinate(ppc,1); g := coordinate(ppc,2)
-      fcn : L(SF -&gt; Pt) := [makePt2(myTrap1(f,#1),myTrap1(g,#1))]
+      fcn : L(SF -&gt; Pt) := [x +-&gt; makePt2(myTrap1(f,x),myTrap1(g,x))]
       -- process change of coordinates
       if not (c := option(l,&quot;coordinates&quot; :: Symbol)) case &quot;failed&quot; then
         cc : L(Pt -&gt; Pt) := [retract(c :: Any)$ANY1(Pt -&gt; Pt)]
-        fcn := [(first cc)((first fcn)(#1))]
+        fcn := [x +-&gt; (first cc)((first fcn)(x))]
       -- create PLOT
       pl := pointPlot(first fcn,normalize seg)
       -- reset adaptive plotting
@@ -143384,17 +142161,17 @@ SingleFloat value.
       f := coordinate(psc,1); g := coordinate(psc,2); h := coordinate(psc,3)
       -- create function SF -&gt; Point SF with default or user-specified
       -- color function
-      fcn : L(SF -&gt; Pt) := [makePt4(myTrap1(f,#1),myTrap1(g,#1),myTrap1(h,#1),_
-                            myTrap1(id,#1))]
+      fcn : L(SF -&gt; Pt) := [x +-&gt; makePt4(myTrap1(f,x),myTrap1(g,x),
+                            myTrap1(h,x), myTrap1(id,x))]
       pointsColored? : Boolean := false
       if not (c1 := option(l,&quot;colorFunction1&quot; :: Symbol)) case &quot;failed&quot; then
         pointsColored? := true
-        fcn := [makePt4(myTrap1(f,#1),myTrap1(g,#1),myTrap1(h,#1),_
-                retract(c1 :: Any)$ANY1(SF -&gt; SF)(#1))]
+        fcn := [x +-&gt; makePt4(myTrap1(f,x),myTrap1(g,x),myTrap1(h,x),
+                retract(c1 :: Any)$ANY1(SF -&gt; SF)(x))]
       -- process change of coordinates
       if not (c := option(l,&quot;coordinates&quot; :: Symbol)) case &quot;failed&quot; then
         cc : L(Pt -&gt; Pt) := [retract(c :: Any)$ANY1(Pt -&gt; Pt)]
-        fcn := [(first cc)((first fcn)(#1))]
+        fcn := [x +-&gt; (first cc)((first fcn)(x))]
       -- create PLOT
       pl := pointPlot(first fcn,normalize seg)$Plot3D
       -- create ThreeSpace
@@ -143426,11 +142203,11 @@ SingleFloat value.
       pointsColored? : Boolean := false
       if not (c1 := option(l,&quot;colorFunction1&quot; :: Symbol)) case &quot;failed&quot; then
         pointsColored? := true
-        fcn := [concat(psc(#1), retract(c1 :: Any)$ANY1(SF -&gt; SF)(#1))]
+        fcn := [x +-&gt; concat(psc(x), retract(c1 :: Any)$ANY1(SF -&gt; SF)(x))]
       -- process change of coordinates
       if not (c := option(l,&quot;coordinates&quot; :: Symbol)) case &quot;failed&quot; then
         cc : L(Pt -&gt; Pt) := [retract(c :: Any)$ANY1(Pt -&gt; Pt)]
-        fcn := [(first cc)((first fcn)(#1))]
+        fcn := [x +-&gt; (first cc)((first fcn)(x))]
       -- create PLOT
       pl := pointPlot(first fcn,normalize seg)$Plot3D
       -- create ThreeSpace
@@ -143493,9 +142270,10 @@ SingleFloat value.
       r
 
     recolor(ptFunc,colFunc) ==
-      pt := ptFunc(#1,#2)
-      pt.4 := colFunc(pt.1,pt.2,pt.3)
-      pt
+     (f1,f2) +-&gt;
+       pt := ptFunc(f1,f2)
+       pt.4 := colFunc(pt.1,pt.2,pt.3)
+       pt
 
     xCoord: (SF,SF) -&gt; SF
     xCoord(x,y) == x
@@ -143511,14 +142289,14 @@ SingleFloat value.
         pointsColored? := true
         col2 := [retract(c2 :: Any)$ANY1((SF,SF) -&gt; SF)]
       fcn : L((SF,SF) -&gt; Pt) :=
-        [makePt4(myTrap2(f,#1,#2),#1,#2,(first col2)(#1,#2))]
+        [(x,y) +-&gt; makePt4(myTrap2(f,x,y),x,y,(first col2)(x,y))]
       -- process change of coordinates
       if (c := option(l,&quot;coordinates&quot; :: Symbol)) case &quot;failed&quot; then
         -- default coordinate transformation
-        fcn := [makePt4(#1,#2,myTrap2(f,#1,#2),(first col2)(#1,#2))]
+        fcn := [(x,y) +-&gt; makePt4(x,y,myTrap2(f,x,y),(first col2)(x,y))]
       else
         cc : L(Pt -&gt; Pt) := [retract(c :: Any)$ANY1(Pt -&gt; Pt)]
-        fcn := [(first cc)((first fcn)(#1,#2))]
+        fcn := [(x,y) +-&gt; (first cc)((first fcn)(x,y))]
       -- process color function of three variables, if there was no
       -- color function of two variables
       if not pointsColored? then
@@ -143555,12 +142333,12 @@ SingleFloat value.
         pointsColored? := true
         col2 := [retract(c2 :: Any)$ANY1((SF,SF) -&gt; SF)]
       fcn : L((SF,SF) -&gt; Pt) := 
-        [makePt4(myTrap2((first f),#1,#2),myTrap2((first g),#1,#2),myTrap2((first h),#1,#2),_
-                 myTrap2((first col2),#1,#2))]
+        [(x,y)+-&gt;makePt4(myTrap2((first f),x,y),myTrap2((first g),x,y),
+                  myTrap2((first h),x,y), myTrap2((first col2),x,y))]
       -- process change of coordinates
       if not (c := option(l,&quot;coordinates&quot; :: Symbol)) case &quot;failed&quot; then
         cc : L(Pt -&gt; Pt) := [retract(c :: Any)$ANY1(Pt -&gt; Pt)]
-        fcn := [(first cc)((first fcn)(#1,#2))]
+        fcn := [(x,y) +-&gt; (first cc)((first fcn)(x,y))]
       -- process color function of three variables, if there was no
       -- color function of two variables
       if not pointsColored? then
@@ -143581,12 +142359,12 @@ SingleFloat value.
         pointsColored? := true
         col2 := [retract(c2 :: Any)$ANY1((SF,SF) -&gt; SF)]
       fcn : L((SF,SF) -&gt; Pt) := 
-        pointsColored? =&gt; [concat(s(#1, #2), (first col2)(#1, #2))]
+        pointsColored? =&gt; [(x,y) +-&gt; concat(s(x, y), (first col2)(x, y))]
         [s]
       -- process change of coordinates
       if not (c := option(l,&quot;coordinates&quot; :: Symbol)) case &quot;failed&quot; then
         cc : L(Pt -&gt; Pt) := [retract(c :: Any)$ANY1(Pt -&gt; Pt)]
-        fcn := [(first cc)((first fcn)(#1,#2))]
+        fcn := [(x,y) +-&gt; (first cc)((first fcn)(x,y))]
       -- create mesh
       mesh := meshPar2Var(sp,first fcn,normalize uSeg,normalize vSeg,l)
       mesh
@@ -143979,12 +142757,13 @@ TranscendentalIntegration(F, UP): Exports == Implementation where
     logprmderiv(f, derivation) == differentiate(f, derivation) / f
 
     UP2UP2 p ==
-      map(#1::UP, p)$UnivariatePolynomialCategoryFunctions2(F, UP, UP, UP2)
+      map(x+-&gt;x::UP, p)$UnivariatePolynomialCategoryFunctions2(F, UP, UP, UP2)
 
     UP2UPR p ==
-      map(#1::UP::RF, p)$UnivariatePolynomialCategoryFunctions2(F, UP, RF, UPR)
+      map(x+-&gt;x::UP::RF,p)$UnivariatePolynomialCategoryFunctions2(F,UP,RF,UPR)
 
-    UP22UPR p == map(#1::RF, p)$SparseUnivariatePolynomialFunctions2(UP, RF)
+    UP22UPR p == 
+      map(x+-&gt;x::RF, p)$SparseUnivariatePolynomialFunctions2(UP, RF)
 
 -- given p in k[z] and a derivation on k[t] returns the coefficient lifting
 -- in k[z] of the restriction of D to k.
@@ -144003,18 +142782,18 @@ TranscendentalIntegration(F, UP): Exports == Implementation where
       iden  := denom(r.logpart)
       x := monomial(1, 1)$UP
       resultvec := subresultantVector(UP2UP2 inum -
-                                 (x::UP2) * UP2UP2 derivation iden, UP2UP2 iden)
+                               (x::UP2) * UP2UP2 derivation iden, UP2UP2 iden)
       respoly := primitivePart leadingCoefficient resultvec 0
-      rec := splitSquarefree(respoly, kappa(#1, derivation))
+      rec := splitSquarefree(respoly, x1 +-&gt; kappa(x1, derivation))
       logs:List(LOG) := [
-              [1, UP2UPR(term.factor),
-               UP22UPR swap primitivePart(resultvec(term.exponent),term.factor)]
+            [1, UP2UPR(term.factor),
+             UP22UPR swap primitivePart(resultvec(term.exponent),term.factor)]
                      for term in factors(rec.special)]
       dlog :=
 --           one? derivation x =&gt; r.logpart
            ((derivation x) = 1) =&gt; r.logpart
            differentiate(mkAnswer(0, logs, empty()),
-                         differentiate(#1, derivation))
+                         (x1:RF):RF +-&gt; differentiate(x1, derivation))
       (u := retractIfCan(p := r.logpart - dlog)@Union(UP, &quot;failed&quot;)) case UP =&gt;
         [mkAnswer(r.answer, logs, empty), r.specpart, r.polypart + u::UP]
       [mkAnswer(r.answer, logs, [[p, dummy]]), r.specpart, r.polypart]
@@ -144158,7 +142937,7 @@ TranscendentalIntegration(F, UP): Exports == Implementation where
       degree numer f &gt;= degree denom f =&gt; error &quot;Not a proper fraction&quot;
       r := HermiteIntegrate(f, derivation)
       zero?(r.logpart) =&gt; [r.answer, empty()]
-      (u := limitedLogs(r.logpart, logprmderiv(#1, derivation), lu))
+      (u := limitedLogs(r.logpart, x1 +-&gt; logprmderiv(x1, derivation), lu))
         case &quot;failed&quot; =&gt; &quot;failed&quot;
       [r.answer, u::LLG]
 
@@ -144172,7 +142951,7 @@ TranscendentalIntegration(F, UP): Exports == Implementation where
       r  := HermiteIntegrate(f, derivation)
       zero?(r.logpart) =&gt; [r.answer, empty()]
       eta' := coefficient(derivation monomial(1, 1), 1)
-      (u := limitedLogs(r.logpart, logexpderiv(#1,derivation,eta'), lu))
+      (u := limitedLogs(r.logpart, x1 +-&gt; logexpderiv(x1,derivation,eta'), lu))
         case &quot;failed&quot; =&gt; &quot;failed&quot;
       [r.answer - eta'::UP *
         +/[((degree numer(v.logand))::Z - (degree denom(v.logand))::Z) *
@@ -144221,12 +143000,12 @@ TranscendentalIntegration(F, UP): Exports == Implementation where
         [i1 + mkAnswer(r.answer::RF, empty(),
                        [[r.polypart::RF + rec.specpart, dummy]$NE]), 0]
       logs:List(LOG) :=
-         zero? c =&gt; empty()
-         [[1, monomial(1,1)$UPR - (c/(2::F))::UP::RF::UPR, (1 + t**2)::RF::UPR]]
+        zero? c =&gt; empty()
+        [[1, monomial(1,1)$UPR - (c/(2::F))::UP::RF::UPR, (1 + t**2)::RF::UPR]]
       c0 := coefficient(r.polypart, 0)
-      (u := tanintegratespecial(rec.specpart, differentiate(#1, derivation),
+      (u := tanintegratespecial(rec.specpart, x+-&gt;differentiate(x, derivation),
        FRDE)) case RFRF =&gt;
-        [i1 + mkAnswer(r.answer::RF + u.elem, logs, [[u.notelem,dummy]$NE]), c0]
+        [i1+mkAnswer(r.answer::RF + u.elem, logs, [[u.notelem,dummy]$NE]), c0]
       [i1 + mkAnswer(r.answer::RF + u.answer, logs, empty()), u.a0 + c0]
 
 -- returns either (v in RF, c in RF) s.t. f = v' + cg, and c' = 0
@@ -144463,7 +143242,8 @@ TranscendentalManipulations(R, F): Exports == Implementation where
       ++ removeSinhSq(f) converts every \spad{sinh(u)**2} appearing in f into
       ++ \spad{1 - cosh(x)**2}, and also reduces higher powers
       ++ of \spad{sinh(u)} with that formula.
-    if R has PatternMatchable(R) and R has ConvertibleTo(Pattern(R)) and F has ConvertibleTo(Pattern(R)) and F has PatternMatchable R then
+    if R has PatternMatchable(R) and R has ConvertibleTo(Pattern(R))
+     and F has ConvertibleTo(Pattern(R)) and F has PatternMatchable R then
       expandTrigProducts : F -&gt; F
         ++ expandTrigProducts(e) replaces \axiom{sin(x)*sin(y)} by
         ++ \spad{(cos(x-y)-cos(x+y))/2}, \axiom{cos(x)*cos(y)} by
@@ -144510,7 +143290,8 @@ TranscendentalManipulations(R, F): Exports == Implementation where
     import F
     import List F
 
-    if R has PatternMatchable R and R has ConvertibleTo Pattern R and F has ConvertibleTo(Pattern(R)) and F has PatternMatchable R then
+    if R has PatternMatchable R and R has ConvertibleTo Pattern R 
+     and F has ConvertibleTo(Pattern(R)) and F has PatternMatchable R then
       XX : F := coerce new()$Symbol
       YY : F := coerce new()$Symbol
       sinCosRule : RewriteRule(R,R,F) :=
@@ -144609,7 +143390,7 @@ TranscendentalManipulations(R, F): Exports == Implementation where
     termexp p ==
       exponent:F := 0
       coef := (leadingCoefficient p)::P
-      lpow := select(is?(#1, POWER)$K, lk := variables p)$List(K)
+      lpow := select((z:K):Boolean+-&gt;is?(z,POWER)$K, lk := variables p)$List(K)
       for k in lk repeat
         d := degree(p, k)
         if is?(k, &quot;exp&quot;::Symbol) then
@@ -144617,11 +143398,14 @@ TranscendentalManipulations(R, F): Exports == Implementation where
         else if not is?(k, POWER) then
           -- Expand arguments to functions as well ... MCD 23/1/97
           --coef := coef * monomial(1, k, d)
-          coef := coef * monomial(1, kernel(operator k,[simplifyExp u for u in argument k], height k), d)
+          coef := coef * 
+           monomial(1, 
+             kernel(operator k,
+               [simplifyExp u for u in argument k], height k), d)
       coef::F * exp exponent * powersimp(p, lpow)
 
     expandPower f ==
-      l := select(is?(#1, POWER)$K, kernels f)$List(K)
+      l := select((z:K):Boolean +-&gt; is?(z, POWER)$K, kernels f)$List(K)
       eval(f, l, [expandpow k for k in l])
 
 -- l is a list of pure powers appearing as kernels in p
@@ -144630,7 +143414,7 @@ TranscendentalManipulations(R, F): Exports == Implementation where
       k := first l                           -- k = a**b
       a := first(arg := argument k)
       exponent := degree(p, k) * second arg
-      empty?(lk := select(a = first argument #1, rest l)) =&gt;
+      empty?(lk := select((z:K):Boolean +-&gt; a = first argument z, rest l)) =&gt;
         (a ** exponent) * powersimp(p, rest l)
       for k0 in lk repeat
         exponent := exponent + degree(p, k0) * second argument k0
@@ -144648,32 +143432,32 @@ TranscendentalManipulations(R, F): Exports == Implementation where
     sh2ch2 x      == cosh(x)**2 - 1
     ueval(x, s,f) == eval(x, s::Symbol, f)
     ueval2(x,s,f) == eval(x, s::Symbol, 2, f)
-    cos2sec x     == ueval(x, &quot;cos&quot;, inv sec #1)
-    sin2csc x     == ueval(x, &quot;sin&quot;, inv csc #1)
+    cos2sec x     == ueval(x, &quot;cos&quot;, (z1:F):F +-&gt; inv sec z1)
+    sin2csc x     == ueval(x, &quot;sin&quot;, (z1:F):F +-&gt; inv csc z1)
     csc2sin x     == ueval(x, &quot;csc&quot;, c2s)
     sec2cos x     == ueval(x, &quot;sec&quot;, s2c)
-    tan2cot x     == ueval(x, &quot;tan&quot;, inv cot #1)
-    cot2tan x     == ueval(x, &quot;cot&quot;, inv tan #1)
+    tan2cot x     == ueval(x, &quot;tan&quot;, (z1:F):F +-&gt; inv cot z1)
+    cot2tan x     == ueval(x, &quot;cot&quot;, (z1:F):F +-&gt; inv tan z1)
     tan2trig x    == ueval(x, &quot;tan&quot;, t2t)
     cot2trig x    == ueval(x, &quot;cot&quot;, c2t)
-    cosh2sech x   == ueval(x, &quot;cosh&quot;, inv sech #1)
-    sinh2csch x   == ueval(x, &quot;sinh&quot;, inv csch #1)
+    cosh2sech x   == ueval(x, &quot;cosh&quot;, (z1:F):F +-&gt; inv sech z1)
+    sinh2csch x   == ueval(x, &quot;sinh&quot;, (z1:F):F +-&gt; inv csch z1)
     csch2sinh x   == ueval(x, &quot;csch&quot;, ch2sh)
     sech2cosh x   == ueval(x, &quot;sech&quot;, sh2ch)
-    tanh2coth x   == ueval(x, &quot;tanh&quot;, inv coth #1)
-    coth2tanh x   == ueval(x, &quot;coth&quot;, inv tanh #1)
+    tanh2coth x   == ueval(x, &quot;tanh&quot;, (z1:F):F +-&gt; inv coth z1)
+    coth2tanh x   == ueval(x, &quot;coth&quot;, (z1:F):F +-&gt; inv tanh z1)
     tanh2trigh x  == ueval(x, &quot;tanh&quot;, th2th)
     coth2trigh x  == ueval(x, &quot;coth&quot;, ch2th)
-    removeCosSq x == ueval2(x, &quot;cos&quot;, 1 - (sin #1)**2)
+    removeCosSq x == ueval2(x, &quot;cos&quot;, (z1:F):F +-&gt; 1 - (sin z1)**2)
     removeSinSq x == ueval2(x, &quot;sin&quot;, s2c2)
-    removeCoshSq x== ueval2(x, &quot;cosh&quot;, 1 + (sinh #1)**2)
+    removeCoshSq x== ueval2(x, &quot;cosh&quot;, (z1:F):F +-&gt; 1 + (sinh z1)**2)
     removeSinhSq x== ueval2(x, &quot;sinh&quot;, sh2ch2)
     expandLog x   == smplog(numer x) / smplog(denom x)
     simplifyExp x == (smpexp numer x) / (smpexp denom x)
     expand x      == (smpexpand numer x) / (smpexpand denom x)
-    smpexpand p   == map(kerexpand, #1::F, p)
-    smplog p      == map(logexpand, #1::F, p)
-    smp2htrigs p  == map(htrigs(#1::F), #1::F, p)
+    smpexpand p   == map(kerexpand, (r1:R):F +-&gt; r1::F, p)
+    smplog p      == map(logexpand, (r1:R):F +-&gt; r1::F, p)
+    smp2htrigs p  == map((k1:K):F +-&gt; htrigs(k1::F), (r1:R):F +-&gt; r1::F, p)
 
     htrigs f ==
       (m := mainKernel f) case &quot;failed&quot; =&gt; f
@@ -144975,7 +143759,7 @@ TranscendentalRischDESystem(F, UP): Exports == Implementation where
  
   Exports ==&gt; with
     monomRDEsys: (RF, RF, RF, UP -&gt; UP) -&gt; _
-                    Union(Record(a:UP, b:RF, h:UP, c1:RF, c2:RF, t:UP),&quot;failed&quot;)
+                   Union(Record(a:UP, b:RF, h:UP, c1:RF, c2:RF, t:UP),&quot;failed&quot;)
       ++ monomRDEsys(f,g1,g2,D) returns \spad{[A, B, H, C1, C2, T]} such that
       ++ \spad{(y1', y2') + ((0, -f), (f, 0)) (y1,y2) = (g1,g2)} has a solution
       ++ if and only if \spad{y1 = Q1 / T, y2 = Q2 / T},
@@ -145021,7 +143805,8 @@ TranscendentalRischDESystem(F, UP): Exports == Implementation where
       n := getBound(u.a, bb := retract(u.b), u.h,
                     cc1 := retract(u.c1), cc2 := retract(u.c2))
       (v := SPDEsys(u.a, bb, u.h, cc1, cc2, n, differentiate,
-                    DSPDEsys(#1, #2::UP, #3::UP, #4, #5, #6, differentiate)))
+                   (z1,z2,z3,z4,z5,z6) +-&gt;
+                    DSPDEsys(z1, z2::UP, z3::UP, z4, z5, z6, differentiate)))
                           case &quot;failed&quot; =&gt; &quot;failed&quot;
       l := v::List(UP)
       [first(l) / u.t, second(l) / u.t]
@@ -145084,11 +143869,14 @@ TranscendentalRischDESystem(F, UP): Exports == Implementation where
       lb := leadingCoefficient b
       lh := leadingCoefficient h
       bb &lt; hh =&gt;
-        DSPDEsys0(a,b,h,c1,c2,lb,lh,n,derivation,DSPDEhdom(#1,#2,#3,#4,#5,hh))
+        DSPDEsys0(a,b,h,c1,c2,lb,lh,n,derivation,
+                  (z1,z2,z3,z4,z5) +-&gt; DSPDEhdom(z1,z2,z3,z4,z5,hh))
       bb &gt; hh =&gt;
-        DSPDEsys0(a,b,h,c1,c2,lb,lh,n,derivation,DSPDEbdom(#1,#2,#3,#4,#5,bb))
+        DSPDEsys0(a,b,h,c1,c2,lb,lh,n,derivation,
+                  (z1,z2,z3,z4,z5) +-&gt; DSPDEbdom(z1,z2,z3,z4,z5,bb))
       det := lb * lb + lh * lh
-      DSPDEsys0(a,b,h,c1,c2,lb,lh,n,derivation,DSPDEmix(#1,#2,#3,#4,#5,bb,det))
+      DSPDEsys0(a,b,h,c1,c2,lb,lh,n,derivation,
+                (z1,z2,z3,z4,z5) +-&gt; DSPDEmix(z1,z2,z3,z4,z5,bb,det))
  
     DSPDEsys0(a, b, h, c1, c2, lb, lh, n, derivation, getlc) ==
       ans1 := ans2 := 0::UP
@@ -145177,6 +143965,268 @@ TranscendentalRischDESystem(F, UP): Exports == Implementation where
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{package SOLVETRA TransSolvePackage}
+&lt;&lt;TransSolvePackage.input&gt;&gt;=
+)set break resume
+)sys rm -f TransSolvePackage.output
+)spool TransSolvePackage.output
+)set message test on
+)set message auto off
+)clear all
+--S 1 of 4
+solve(1/2*v*v*cos(theta+phi)*cos(theta+phi)+g*l*cos(phi)=g*l,phi)
+--R 
+--R
+--R   (1)
+--R   [phi= 2atan(%phi0) - theta, phi= 2atan(%phi1) - theta,
+--R
+--R     phi =
+--R           2
+--R        *
+--R           atan
+--R                  ROOT
+--R                               4    theta 4        4          2     theta 2
+--R                           - 3v tan(-----)  + (- 6v  + 24g l v )tan(-----)
+--R                                      2                               2
+--R                         + 
+--R                               4          2      2 2
+--R                           - 3v  + 24g l v  - 48g l
+--R                      *
+--R                              2
+--R                         %phi1
+--R                     + 
+--R                                   4    theta 4        4          2     theta 2
+--R                               - 2v tan(-----)  + (- 4v  + 16g l v )tan(-----)
+--R                                          2                               2
+--R                             + 
+--R                                   4          2      2 2
+--R                               - 2v  + 16g l v  - 32g l
+--R                          *
+--R                             %phi0
+--R                         + 
+--R                                  2    theta 3             2      2 2     theta
+--R                         - 16g l v tan(-----)  + (- 16g l v  + 64g l )tan(-----)
+--R                                         2                                  2
+--R                      *
+--R                         %phi1
+--R                     + 
+--R                               4    theta 4        4          2     theta 2
+--R                           - 3v tan(-----)  + (- 6v  + 24g l v )tan(-----)
+--R                                      2                               2
+--R                         + 
+--R                               4          2      2 2
+--R                           - 3v  + 24g l v  - 48g l
+--R                      *
+--R                              2
+--R                         %phi0
+--R                     + 
+--R                                      2    theta 3
+--R                             - 16g l v tan(-----)
+--R                                             2
+--R                           + 
+--R                                       2      2 2     theta
+--R                             (- 16g l v  + 64g l )tan(-----)
+--R                                                        2
+--R                      *
+--R                         %phi0
+--R                     + 
+--R                          4          2     theta 4      4    theta 2     4
+--R                       (8v  + 16g l v )tan(-----)  + 16v tan(-----)  + 8v
+--R                                             2                 2
+--R                     + 
+--R                                2      2 2
+--R                       - 16g l v  - 64g l
+--R                + 
+--R                      2    theta 2    2
+--R                  (- v tan(-----)  - v  + 4g l)%phi1
+--R                             2
+--R                + 
+--R                      2    theta 2    2                         theta
+--R                  (- v tan(-----)  - v  + 4g l)%phi0 - 8g l tan(-----)
+--R                             2                                    2
+--R             /
+--R                  2    theta 2     2
+--R                2v tan(-----)  + 2v  - 8g l
+--R                         2
+--R       + 
+--R         - theta
+--R     ,
+--R
+--R     phi =
+--R         -
+--R              2
+--R           *
+--R              atan
+--R                     ROOT
+--R                                  4    theta 4        4          2     theta 2
+--R                              - 3v tan(-----)  + (- 6v  + 24g l v )tan(-----)
+--R                                         2                               2
+--R                            + 
+--R                                  4          2      2 2
+--R                              - 3v  + 24g l v  - 48g l
+--R                         *
+--R                                 2
+--R                            %phi1
+--R                        + 
+--R                                      4    theta 4
+--R                                  - 2v tan(-----)
+--R                                             2
+--R                                + 
+--R                                       4          2     theta 2     4          2
+--R                                  (- 4v  + 16g l v )tan(-----)  - 2v  + 16g l v
+--R                                                          2
+--R                                + 
+--R                                       2 2
+--R                                  - 32g l
+--R                             *
+--R                                %phi0
+--R                            + 
+--R                                       2    theta 3
+--R                              - 16g l v tan(-----)
+--R                                              2
+--R                            + 
+--R                                        2      2 2     theta
+--R                              (- 16g l v  + 64g l )tan(-----)
+--R                                                         2
+--R                         *
+--R                            %phi1
+--R                        + 
+--R                                  4    theta 4        4          2     theta 2
+--R                              - 3v tan(-----)  + (- 6v  + 24g l v )tan(-----)
+--R                                         2                               2
+--R                            + 
+--R                                  4          2      2 2
+--R                              - 3v  + 24g l v  - 48g l
+--R                         *
+--R                                 2
+--R                            %phi0
+--R                        + 
+--R                                       2    theta 3
+--R                              - 16g l v tan(-----)
+--R                                              2
+--R                            + 
+--R                                        2      2 2     theta
+--R                              (- 16g l v  + 64g l )tan(-----)
+--R                                                         2
+--R                         *
+--R                            %phi0
+--R                        + 
+--R                             4          2     theta 4      4    theta 2     4
+--R                          (8v  + 16g l v )tan(-----)  + 16v tan(-----)  + 8v
+--R                                                2                 2
+--R                        + 
+--R                                   2      2 2
+--R                          - 16g l v  - 64g l
+--R                   + 
+--R                       2    theta 2    2
+--R                     (v tan(-----)  + v  - 4g l)%phi1
+--R                              2
+--R                   + 
+--R                       2    theta 2    2                         theta
+--R                     (v tan(-----)  + v  - 4g l)%phi0 + 8g l tan(-----)
+--R                              2                                    2
+--R                /
+--R                     2    theta 2     2
+--R                   2v tan(-----)  + 2v  - 8g l
+--R                            2
+--R       + 
+--R         - theta
+--R     ]
+--R                                       Type: List Equation Expression Integer
+--E 1
+
+--S 2 of 4
+definingPolynomial %phi0
+--R 
+--R
+--R   (2)
+--R              4         2      2            2             theta 2
+--R       ((%phi0  - 2%phi0  + 1)v  + (- 4%phi0  - 4)g l)tan(-----)
+--R                                                            2
+--R     + 
+--R              3                  theta          4         2      2
+--R       (8%phi0  + 8%phi0)g l tan(-----) + (%phi0  - 2%phi0  + 1)v
+--R                                   2
+--R     + 
+--R                4         2
+--R       (- 4%phi0  - 4%phi0 )g l
+--R  /
+--R      2    theta 2    2
+--R     v tan(-----)  + v  - 4g l
+--R             2
+--R                                                     Type: Expression Integer
+--E 2
+
+--S 3 of 4
+definingPolynomial %phi1
+--R 
+--R
+--R   (3)
+--R         2    theta 2    2             3
+--R       (v tan(-----)  + v  - 4g l)%phi0
+--R                2
+--R     + 
+--R               2    theta 2            theta           2                   2
+--R       (%phi1 v tan(-----)  + 8g l tan(-----) + %phi1 v  - 4%phi1 g l)%phi0
+--R                      2                  2
+--R     + 
+--R                  2      2            theta 2                  theta
+--R           ((%phi1  - 2)v  - 4g l)tan(-----)  + 8%phi1 g l tan(-----)
+--R                                        2                        2
+--R         + 
+--R                 2      2            2
+--R           (%phi1  - 2)v  + (- 4%phi1  - 4)g l
+--R      *
+--R         %phi0
+--R     + 
+--R              3           2                  theta 2
+--R       ((%phi1  - 2%phi1)v  - 4%phi1 g l)tan(-----)
+--R                                               2
+--R     + 
+--R            2             theta          3           2            3
+--R     (8%phi1  + 8)g l tan(-----) + (%phi1  - 2%phi1)v  + (- 4%phi1  - 4%phi1)g l
+--R                            2
+--R  /
+--R      2    theta 2    2
+--R     v tan(-----)  + v  - 4g l
+--R             2
+--R                                                     Type: Expression Integer
+--E 3
+
+--S 4 of 4
+)show TransSolvePackage
+--R 
+--R TransSolvePackage R: Join(OrderedSet,EuclideanDomain,RetractableTo Integer,LinearlyExplicitRingOver Integer,CharacteristicZero)  is a package constructor
+--R Abbreviation for TransSolvePackage is SOLVETRA 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.4.spad.pamphlet to see algebra source code for SOLVETRA 
+--R
+--R------------------------------- Operations --------------------------------
+--R solve : Expression R -&gt; List Equation Expression R
+--R solve : Equation Expression R -&gt; List Equation Expression R
+--R solve : (Equation Expression R,Symbol) -&gt; List Equation Expression R
+--R solve : (Expression R,Symbol) -&gt; List Equation Expression R
+--R solve : (List Equation Expression R,List Symbol) -&gt; List List Equation Expression R
+--R
+--E 4
+
+)spool
+
+@
+&lt;&lt;TransSolvePackage.help&gt;&gt;=
+====================================================================
+TransSolvePackage examples
+====================================================================
+
+solve(1/2*v*v*cos(theta+phi)*cos(theta+phi)+g*l*cos(phi)=g*l,phi)
+
+definingPolynomial %phi0
+
+definingPolynomial %phi1
+
+See Also:
+o )show TransSolvePackage
+
+@
 \pagehead{TransSolvePackage}{SOLVETRA}
 \pagepic{ps/v104transsolvepackage.ps}{SOLVETRA}{1.00}
 
@@ -145245,6 +144295,11 @@ TransSolvePackage(R) : Exports == Implementation where
        ++ solve(expr,x) finds the solutions of the equation expr = 0
        ++ with respect to the symbol x where expr is a function
        ++ of type Expression(R).
+       ++
+       ++X solve(1/2*v*v*cos(theta+phi)*cos(theta+phi)+g*l*cos(phi)=g*l,phi)
+       ++X definingPolynomial %phi0
+       ++X definingPolynomial %phi1
+
      solve :  (L EQ RE, L S) -&gt; L L EQ RE
        ++ solve(leqs, lvar) returns a list of solutions to the list of 
        ++ equations leqs with respect to the list of symbols lvar.
@@ -145649,8 +144704,8 @@ TransSolvePackage(R) : Exports == Implementation where
         k :: RE :: Polynomial RE
 
      smp2Poly(pol:SMP(R,Kernel RE), lvar:L S):Polynomial RE ==
-        map(ker2Poly(#1, lvar),
-           #1::RE::Polynomial RE, pol)$PolynomialCategoryLifting(
+        map(x +-&gt; ker2Poly(x, lvar),
+            y +-&gt; y::RE::Polynomial RE, pol)$PolynomialCategoryLifting(
               IndexedExponents Kernel RE, Kernel RE, R, SMP(R, Kernel RE), 
                       Polynomial RE)
 
@@ -146042,13 +145097,13 @@ TrigonometricManipulations(R, F): Exports == Implementation where
       explogs2trigs locexplogs eval(f, l.ker, l.val)
 
     locexplogs f ==
-      any?(has?(#1, &quot;rtrig&quot;),
+      any?(x +-&gt; has?(x, &quot;rtrig&quot;),
            operators(g := realElementary f))$List(BasicOperator) =&gt;
               localexplogs(f, g, variables g)
       F2FG g
 
     complexNormalize(f, x) ==
-      any?(has?(operator #1, &quot;rtrig&quot;),
+      any?(y +-&gt; has?(operator y, &quot;rtrig&quot;),
        [k for k in tower(g := realElementary(f, x))
                | member?(x, variables(k::F))]$List(K))$List(K) =&gt;
                    FG2F(rischNormalize(localexplogs(f, g, [x]), x).func)
@@ -146056,7 +145111,7 @@ TrigonometricManipulations(R, F): Exports == Implementation where
 
     complexNormalize f ==
       l := variables(g := realElementary f)
-      any?(has?(#1, &quot;rtrig&quot;), operators g)$List(BasicOperator) =&gt;
+      any?(x +-&gt; has?(x, &quot;rtrig&quot;), operators g)$List(BasicOperator) =&gt;
         h := localexplogs(f, g, l)
         for x in l repeat h := rischNormalize(h, x).func
         FG2F h
@@ -146064,14 +145119,14 @@ TrigonometricManipulations(R, F): Exports == Implementation where
       g
 
     complexElementary(f, x) ==
-      any?(has?(operator #1, &quot;rtrig&quot;),
+      any?(y +-&gt; has?(operator y, &quot;rtrig&quot;),
        [k for k in tower(g := realElementary(f, x))
                  | member?(x, variables(k::F))]$List(K))$List(K) =&gt;
                      FG2F localexplogs(f, g, [x])
       g
 
     complexElementary f ==
-      any?(has?(#1, &quot;rtrig&quot;),
+      any?(x +-&gt; has?(x, &quot;rtrig&quot;),
         operators(g := realElementary f))$List(BasicOperator) =&gt;
           FG2F localexplogs(f, g, variables g)
       g
@@ -146341,7 +145396,8 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
         error &quot;clipDraw: fraction should be between 0 and 1&quot;
       empty? pointLists =&gt; [nil(),segment(0,0),segment(0,0)]
       -- put all points together , sort them according to norm
-      sortedList := sort(norm(#1) &lt; norm(#2),select(not Pnan? #1,concat pointLists))
+      sortedList := sort((x:Pt,y:Pt):Boolean +-&gt; norm(x) &lt; norm(y),
+                     select((z:Pt):Boolean +-&gt; not Pnan? z,concat pointLists))
       empty? sortedList =&gt; [nil(),segment(0,0),segment(0,0)]
       n := # sortedList 
       num := numer fraction
@@ -146456,7 +145512,7 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
         error &quot;clipDraw: plot has more than one branch&quot;
       empty?(pointList := first pointLists) =&gt;
         [nil(),xVals,segment(0,0)]
-      sortedList := sort(yCoord(#1) &lt; yCoord(#2),pointList)
+      sortedList := sort((x,y)+-&gt;yCoord(x) &lt; yCoord(y),pointList)
       n := # sortedList; num := numer fraction; den := denom fraction
       clipNum := (n * num) quo den
       -- throw out points with large and small y-coordinates
@@ -146471,7 +145527,8 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
       yMin := yMin - (numm :: SF) * yDiff / (denn :: SF)
       yMax := yMax + (numm :: SF) * yDiff / (denn :: SF)
       lists := discardAndSplit(pointList,_
-         (yCoord(#1) &lt; yMax) and (yCoord(#1) &gt; yMin),xMin,xMax,yMin,yMax)
+         x +-&gt; (yCoord(x) &lt; yMax) and (yCoord(x) &gt; yMin),
+           xMin,xMax,yMin,yMax)
       yMin := yCoord(sortedList.clipNum)
       yMax := yCoord(sortedList.(n - 1 - clipNum))
       if Fnan? yMin then yMin : SF := 0
@@ -146509,10 +145566,10 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
     clipWithRanges(pointLists,xMin,xMax,yMin,yMax) ==
       lists : L L Pt := nil()
       for pointList in pointLists repeat
-        lists := concat(lists,discardAndSplit(pointList,_
-           (xCoord(#1) &lt;= xMax) and (xCoord(#1) &gt;= xMin) and _
-           (yCoord(#1) &lt;= yMax) and (yCoord(#1) &gt;= yMin), _
-           xMin,xMax,yMin,yMax))
+        lists := concat(lists,discardAndSplit(pointList,
+          (x:Pt):Boolean +-&gt; (xCoord(x) &lt;= xMax) and (xCoord(x) &gt;= xMin) and 
+            (yCoord(x) &lt;= yMax) and (yCoord(x) &gt;= yMin), 
+             xMin,xMax,yMin,yMax))
       (pt := findPt lists) case &quot;failed&quot; =&gt;
         [nil(),segment(0,0),segment(0,0)]
       firstPt := pt :: Pt
@@ -146622,7 +145679,7 @@ TwoFactorize(F) : C == T
           exchangeVarTerm(reductum c, e)
 
     pthRoot(poly:R,p:NonNegativeInteger,PthRootPow:NonNegativeInteger):R ==
-       tmp:=divideExponents(map((#1::F)**PthRootPow,poly),p)
+       tmp:=divideExponents(map((x:F):F+-&gt;(x::F)**PthRootPow,poly),p)
        tmp case &quot;failed&quot; =&gt; error &quot;consistency error in TwoFactor&quot;
        tmp
  
@@ -146686,14 +145743,16 @@ TwoFactorize(F) : C == T
               map(differentiate,fac) = 0 =&gt;
                 p:=characteristic$F
                 PthRootPow:=(size$F exquo p)::NonNegativeInteger
-                m1:=divideExponents(map(pthRoot(#1,p,PthRootPow),fac),p)
+                m1:=divideExponents(map(x+-&gt;pthRoot(x,p,PthRootPow),fac),p)
                 m1 case &quot;failed&quot; =&gt; error &quot;consistency error in TwoFactor&quot;
                 res:=generalTwoFactor m1
                 unitPart:=unitPart*unit(res)**((p*expon)::NNI)
-                ll:=[:[[v.flg,v.fctr,expon *p*v.xpnt] for v in factorList res],:ll]
+                ll:=
+                 [:[[v.flg,v.fctr,expon*p*v.xpnt] for v in factorList res],:ll]
               m2:=generalTwoFactor swap fac
               unitPart:=unitPart*unit(m2)**(expon::NNI)
-              ll:=[:[[v.flg,swap v.fctr,expon*v.xpnt] for v in factorList m2],:ll]
+              ll:=
+               [:[[v.flg,swap v.fctr,expon*v.xpnt] for v in factorList m2],:ll]
            ydeg:=&quot;max&quot;/[degree w for w in coefficients fac]
            twoF:=twoFactor(fac,ydeg)
            unitPart:=unitPart*unit(twoF)**expon
@@ -146717,7 +145776,7 @@ TwoFactorize(F) : C == T
           vval := random()$F
           i:=i+1
           zero? elt(lcm, vval) =&gt; &quot;next value&quot;
-          umv := map(elt(#1,vval), m)$UPCF2(R, P, F, R)
+          umv := map(x +-&gt; elt(x,vval), m)$UPCF2(R, P, F, R)
           degree(gcd(umv,differentiate umv))^=0 =&gt; &quot;next val&quot;
           n := 1
           look := false
@@ -146740,7 +145799,7 @@ TwoFactorize(F) : C == T
          val:=random()$extField
          i:=i+1
          elt(lcmm,val)=0 =&gt; &quot;next value&quot;
-         umex := map(elt(#1,val), mm)$UPCF2(SUEx, TP, extField, SUEx)
+         umex := map(x +-&gt; elt(x,val), mm)$UPCF2(SUEx, TP, extField, SUEx)
          degree(gcd(umex,differentiate umex))^=0 =&gt; &quot;next val&quot;
          look:=false
        prime:SUEx:=monomial(1,1)-monomial(val,0)
@@ -146910,7 +145969,7 @@ UnivariateFactorize(ZP) : public == private where
        n
 
      negShiftp(pp: ZP,Modulus:PI): ZP ==
-       map(negShiftz(#1,Modulus),pp)
+       map(x +-&gt; negShiftz(x,Modulus),pp)
 
      -- Choose the bound for the coefficients of factors
      bound(m: ZP):PI ==
@@ -147136,8 +146195,9 @@ UnivariateFormalPowerSeriesFunctions(Coef: Ring): Exports == Implementation
     Implementation == add
 
       hadamard(f, g) ==
-        series map(#1*#2, coefficients f, coefficients g)
-                  $StreamFunctions3(Coef, Coef, Coef) 
+        series map((z1:Coef,z2:Coef):Coef +-&gt; z1*z2, 
+                    coefficients f, coefficients g)
+                     $StreamFunctions3(Coef, Coef, Coef) 
 
 @
 &lt;&lt;UFPS1.dotabb&gt;&gt;=
@@ -147298,11 +146358,11 @@ UnivariatePolynomialCommonDenominator(R, Q, UP): Exports == Impl where
  
     clearDenominator p ==
       d := commonDenominator p
-      map(numer(d * #1)::Q, p)
+      map(x +-&gt; numer(d*x)::Q, p)
  
     splitDenominator p ==
       d := commonDenominator p
-      [map(numer(d * #1)::Q, p), d]
+      [map(x +-&gt; numer(d*x)::Q, p), d]
 
 @
 &lt;&lt;UPCDEN.dotabb&gt;&gt;=
@@ -147502,7 +146562,7 @@ UnivariatePolynomialDivisionPackage(R,UP): Exports == Implementation where
         c case &quot;failed&quot; =&gt; return &quot;failed&quot;
         ee := e::N
         q := q+monomial(c::R,ee)
-        p1 := p1-c*mapExponents(#1+ee,p2)
+        p1 := p1-c*mapExponents(x +-&gt; x+ee, p2)
       [q,p1]
 
 @
@@ -148118,15 +147178,15 @@ UnivariateTaylorSeriesODESolver(Coef,UTS):_
 
   Implementation ==&gt; add
 
-    stFunc1 f == coefficients f series(#1)
-    stFunc2 f == coefficients f(series(#1),series(#2))
-    stFuncN f == coefficients f map(series,#1)$ListFunctions2(ST,UTS)
+    stFunc1 f == s +-&gt; coefficients f series(s)
+    stFunc2 f == (s1,s2) +-&gt; coefficients f(series(s1),series(s2))
+    stFuncN f == ls +-&gt; coefficients f map(series,ls)$ListFunctions2(ST,UTS)
 
     import StreamTaylorSeriesOperations(Coef)
     divloopre:(Coef,ST,Coef,ST,ST) -&gt; ST
     divloopre(hx,tx,hy,ty,c) == delay(concat(hx*hy,hy*(tx-(ty*c))))
     divloop: (Coef,ST,Coef,ST) -&gt; ST
-    divloop(hx,tx,hy,ty) == YS(divloopre(hx,tx,hy,ty,#1))
+    divloop(hx,tx,hy,ty) == YS(s +-&gt; divloopre(hx,tx,hy,ty,s))
 
     sdiv:(ST,ST) -&gt; ST
     sdiv(x,y) == delay
@@ -148149,7 +147209,7 @@ UnivariateTaylorSeriesODESolver(Coef,UTS):_
     ode1re(f,c,y) == lazyIntegrate(c,f y)$STT
 
     iOde1: ((ST -&gt; ST),Coef) -&gt; ST
-    iOde1(f,c) == YS ode1re(f,c,#1)
+    iOde1(f,c) == YS(s +-&gt; ode1re(f,c,s))
 
     ode1(f,c) == series iOde1(stFunc1 f,c)
 
@@ -148161,7 +147221,7 @@ UnivariateTaylorSeriesODESolver(Coef,UTS):_
       lazyIntegrate(c0,yi)$STT
 
     iOde2: ((ST,ST) -&gt; ST,Coef,Coef) -&gt; ST
-    iOde2(f,c0,c1) == YS ode2re(f,c0,c1,#1)
+    iOde2(f,c0,c1) == YS(s +-&gt; ode2re(f,c0,c1,s))
 
     ode2(f,c0,c1) == series iOde2(stFunc2 f,c0,c1)
 
@@ -148176,7 +147236,7 @@ UnivariateTaylorSeriesODESolver(Coef,UTS):_
       concat(yil,[f yil])
 
     iOde: ((L ST) -&gt; ST,List Coef) -&gt; ST
-    iOde(f,cl) == first YS(odeNre(f,cl,#1),#cl + 1)
+    iOde(f,cl) == first YS(ls +-&gt; odeNre(f,cl,ls),#cl + 1)
 
     ode(f,cl) == series iOde(stFuncN f,cl)
 
@@ -148185,7 +147245,7 @@ UnivariateTaylorSeriesODESolver(Coef,UTS):_
       [lazyIntegrate(csti,lsfi concat(monom(1,1)$STT,c))_
           for csti in cst for lsfi in lsf]
     iMpsode:(L Coef,L ((L ST) -&gt; ST)) -&gt; L ST
-    iMpsode(cs,lsts) == YS(simulre(cs,lsts,#1),# cs)
+    iMpsode(cs,lsts) == YS(ls +-&gt; simulre(cs,lsts,ls),# cs)
     mpsode(cs,lsts) ==
 --       stSol := iMpsode(cs,map(stFuncN,lsts)$L2(FN,(L ST) -&gt; ST))
       stSol := iMpsode(cs,[stFuncN(lst) for lst in lsts])
@@ -148351,8 +147411,8 @@ UserDefinedPartialOrdering(S:SetCategory): with
     &quot;failed&quot;
  
   if S has OrderedSet then
-    more?(a, b) == not less?(a, b, #1 &lt;$S #2)
-    largest x   == largest(x, #1 &lt;$S #2)
+    more?(a, b) == not less?(a, b, (y,z) +-&gt; y &lt;$S z)
+    largest x   == largest(x, (y,z) +-&gt; y &lt;$S z)
 
 @
 &lt;&lt;UDPO.dotabb&gt;&gt;=
@@ -148477,7 +147537,8 @@ UTSodetools(F, UP, L, UTS): Exports == Implementation where
           a := recip(UP2UTS(- leadingCoefficient op))::UTS
           n := (degree(op) - 1)::NonNegativeInteger
           v := [a * UP2UTS coefficient(op, i) for i in 0..n]$Vector(UTS)
-          fun(v, #1)
+          r := (l1: List UTS): UTS +-&gt; fun(v, l1)
+          r
 
       fun(v, l) ==
           ans:UTS := 0
@@ -149028,7 +148089,7 @@ WeierstrassPreparation(R): Defn == Impl where
                    transback(map3(rest,smps:ST StS):(ST SMPS)))$(L SMPS)
  
  
-        clikeUniv(var)==likeUniv(#1,var)
+        clikeUniv(var)==p +-&gt; likeUniv(p,var)
         mind:(NNI,StS)-&gt;NNI
         mind(n, sts)==
            if null sts
@@ -149054,7 +148115,7 @@ WeierstrassPreparation(R): Defn == Impl where
         zp==&gt;map$StreamFunctions3(SUP,NNI,StS)
  
         sts2stst(var, sts)==
-           zp(streamlikeUniv(#1,#2),
+           zp((x,y) +-&gt; streamlikeUniv(x,y),
              map1(clikeUniv var, sts),(integers 0):(ST NNI))
  
         tp:(VarSet,StS)-&gt;ST StS
@@ -149084,12 +148145,12 @@ WeierstrassPreparation(R): Defn == Impl where
                q:=(YSS qqq(a,f:SMPS,rest p))
                maptake(a,(p*q) pretend ST StS)
  
-        cfirst n== first(#1,n)$StS
-        crest n== rest(#1,n)$StS
+        cfirst n == s +-&gt; first(s,n)$StS
+        crest n  == s +-&gt; rest(s,n)$StS
         qq:(NNI,SMPS,ST SMPS,ST SMPS)-&gt;ST SMPS
         qq(a,e,p,c)==
             cons(e,(-e)*mapdrop(a,(p*c)pretend(ST StS)))
-        qqq(a,e,p)==  qq(a,e,p,#1)
+        qqq(a,e,p)==  s +-&gt; qq(a,e,p,s)
         wei:(VarSet,SMPS)-&gt;ST SMPS
         wei(v:VarSet,s:SMPS)==weier(v,s:StS)
         weierstrass(v,smps)== transback wei (v,smps)
@@ -153263,7 +152324,6 @@ ZeroDimensionalSolvePackage(R,ls,ls2): Exports == Implementation where
 &lt;&lt;package MAPPKG2 MappingPackage2&gt;&gt;
 &lt;&lt;package MAPPKG3 MappingPackage3&gt;&gt;
 &lt;&lt;package MAPPKG4 MappingPackage4&gt;&gt;
-&lt;&lt;package MMLFORM MathMLForm&gt;&gt;
 &lt;&lt;package MATCAT2 MatrixCategoryFunctions2&gt;&gt;
 &lt;&lt;package MCDEN MatrixCommonDenominator&gt;&gt;
 &lt;&lt;package MATLIN MatrixLinearAlgebraFunctions&gt;&gt;</diff>
      <filename>books/bookvol10.4.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -432,7 +432,7 @@ related to the current frame, which includes things like the last value,
 the value of all of the variables, etc.
 
 The \varref{printLoadMsgs} variable controls whether load messages will
-be output as library routines are loaded. We enable this by default.
+be output as library routines are loaded. We disnable this by default.
 It can be changed by using \verb|)set message autoload|.
 
 The \varref{current-directory} variable is set to the current directory.
@@ -469,7 +469,7 @@ information is initialized.
     (setq |$SpadServer| t))
   (setq |$IOindex| 1)
   (setq |$InteractiveFrame| (|makeInitialModemapFrame|))
-  (setq |$printLoadMsgs| t)
+  (setq |$printLoadMsgs| nil)
   (setq $current-directory (get-current-directory))
   (setq *default-pathname-defaults* (pathname $current-directory))
   (|loadExposureGroupData|)
@@ -10150,7 +10150,7 @@ naglink      show NAGLink messages                      on
 \end{verbatim}
 \defdollar{printLoadMsgs}
 &lt;&lt;initvars&gt;&gt;=
-(defvar |$printLoadMsgs| t &quot;print file auto-load messages&quot;)
+(defvar |$printLoadMsgs| nil &quot;print file auto-load messages&quot;)
 
 @
 &lt;&lt;messagesautoload&gt;&gt;=
@@ -17678,7 +17678,6 @@ curoutstream                 &amp; ncIntLoop           &amp; \\
 \$previousBindings           &amp; initvars            &amp; \\
                              &amp; clearFrame          &amp; \\
                              &amp; recordFrame         &amp; recordFrame \\
-\$printLoadMsgs              &amp; restart             &amp; \\
 \$PrintCompilerMessageIfTrue &amp; spad                &amp; \\
 \$relative-directory-list    &amp;                     &amp; reroot \\
 \$relative-library-directory-list &amp;                &amp; reroot \\
@@ -17947,9 +17946,6 @@ The \verb|$previousBindings| is a copy of the
 compute the delta(i)s stored in \verb|$frameRecord|.
 This is part of the undo mechanism.
 
-\pagehead{printLoadMsgs}{printLoadMsgs}
-The \verb|$printLoadMsgs| variable is set to T in restart.
-
 \subsection{\$PrintCompilerMessageIfTrue}
 The \verb|$PrintCompilerMessageIfTrue| variable is set to NIL in spad.
 </diff>
      <filename>books/bookvol5.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -233,6 +233,7 @@ November 10, 2003 ((iHy))
 \pagepic{ps/v71releasenotes.eps}{releasenotes}{0.50}
 \pagefrom{Root Page}{RootPage}
 \pageto{Online information}{onlineInformation}
+\pageto{July 2009}{july2009}
 \pageto{May 2009}{may2009}
 \pageto{March 2009}{mar2009}
 \pageto{January 2009}{jan2009}
@@ -249,6 +250,7 @@ November 10, 2003 ((iHy))
 \beginscroll
 \beginmenu
     \menudownlink{Online information}{onlineInformation}
+    \menudownlink{July 2009}{july2009}
     \menudownlink{May 2009}{may2009}
     \menudownlink{March 2009}{mar2009}
     \menudownlink{January 2009}{jan2009}
@@ -281,6 +283,75 @@ Axiom information can be found online at
 \end{page}
 
 @
+\pagehead{july2009}{releasenotes.ht}{July 2009 Release Notes}
+\pagepic{ps/v71july2009.eps}{july2009}{0.50}
+\pagefrom{What's New in Axiom}{releaseNotes}
+&lt;&lt;releasenotes.ht&gt;&gt;=
+\begin{page}{july2009}{July 2009 Release Notes}
+\beginscroll
+\begin{verbatim}
+July 2009 Release Notes
+
+The syntactic conversion from the prior #1 form to the +-&gt; form
+is complete except for the GUESS package. Both forms still work
+but the #1 form is discouraged.
+
+All algebra files from src/algebra are now in books.
+
+Work has concentrated on the hyperdoc browser. 
+  * The browser files which get autoloaded into the interpreter were
+    merged and removed in preparation for being rewritten into book form.
+  * Glossary files were missing from the build and were added.
+
+Work has started on a new CATS collection of verified algebraic identities,
+the tpiezas set. See http://sites.google.com/site/tpiezas
+
+Volume 5: Axiom Interpreter
+  * set message autoload now defaults to off
+
+Volume 7 Axiom Hyperdoc
+  * htsearch moved to $AXIOM/bin
+
+Volume 10.1 Axiom Algebra Theory
+  * add chapter on quaternions
+
+Volume 10.3 Domains
+  * Any now has regression and help files
+  * MathMLFormat domain moved from Volume 10.4
+  * TexFormat has regression and help files
+  * TexFormat fix for horizontal fractions
+  * Quaternion was added from src/algebra
+
+Volume 10.4 Packages
+   * IntegerNumberTheoryFunctions fix divisors regression
+   * Waldek's QUATCT2 algebra was added, including a help file, 
+     regression tests and command examples.
+
+Makefile 
+  * make help files in parallel
+  * make xhtml pages in parallel
+  * make books documentation in parallel
+
+interpreter
+  * src/interp/i-output.boot fix horizontal fractions
+
+axiom-website
+  * download.html add mandriva
+  * download.html add may2009 binaries
+
+input files
+  * ffdemo.input fix steps 27, 57 due to divisors change
+  * numbers.input fix random zero failure
+  * spline.input explain how to compute 2D splines
+  * tpiezas001.input CATS tests of algebraic identities
+  * tpiezas002.input CATS tests of algebraic identities
+
+\end{verbatim}
+\endscroll
+\autobuttons
+\end{page}
+
+@
 \pagehead{may2009}{releasenotes.ht}{May 2009 Release Notes}
 \pagepic{ps/v71may2009.eps}{may2009}{0.50}
 \pagefrom{What's New in Axiom}{releaseNotes}</diff>
      <filename>books/bookvol7.1.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -20623,7 +20623,7 @@ SPADBUF_LIBS=${LIBS} ${LIB}/wct.o ${LIB}/edin.o ${LIB}/prt.o \
 HYPER_LIBS=${LIBS} ${LIB}/pixmap.o ${LIB}/spadcolors.o ${LIB}/util.o 
 
 all: ${OUTLIB}/spadbuf ${OUTLIB}/ex2ht ${OUTBIN}/htadd ${OUTLIB}/hthits \
-     ${OUTLIB}/htsearch ${OUTLIB}/presea ${OUTBIN}/hypertex \
+     ${OUTBIN}/htsearch ${OUTLIB}/presea ${OUTBIN}/hypertex \
      ${HYPER}/axbook ${HYPER}/bigbayou.png ${HYPER}/doctitle.png
 	@cp -pr ${IN}/bitmaps ${HYPER}
 	@ echo 0 finished ${BOOK}
@@ -20652,10 +20652,10 @@ ${OUTLIB}/hthits: ${BOOK}
           ${TANGLE} -R&quot;hthits&quot; ${BOOK} &gt;hthits.c ; \
           ${CC} -I${INC} ${CFLAGS} hthits.c -o ${OUTLIB}/hthits ${LDFLAGS} )
 
-${OUTLIB}/htsearch: ${BOOK}
-	@echo 5 making ${OUTLIB}/htsearch from ${BOOK}
-	@${TANGLE} -R&quot;htsearch&quot; ${BOOK} &gt;${OUTLIB}/htsearch
-	@chmod a+x ${OUTLIB}/htsearch
+${OUTBIN}/htsearch: ${BOOK}
+	@echo 5 making ${OUTBIN}/htsearch from ${BOOK}
+	@${TANGLE} -R&quot;htsearch&quot; ${BOOK} &gt;${OUTBIN}/htsearch
+	@chmod a+x ${OUTBIN}/htsearch
 
 ${OUTLIB}/presea: ${BOOK}
 	@echo 6 making ${OUTLIB}/presea from ${BOOK}</diff>
      <filename>books/bookvol7.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
 %!PS-Adobe-3.0 EPSF-3.0
 %%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
 %%Title: v71releasenotes.eps
-%%CreationDate: Sat May 30 23:14:50 2009
+%%CreationDate: Sat Jul 25 23:44:38 2009
 %%DocumentData: Clean7Bit
 %%LanguageLevel: 2
 %%Pages: 1
-%%BoundingBox: 0 0 533 360
+%%BoundingBox: 14 14 547 374
 %%EndComments
 %%BeginProlog
 % Use own dictionary to avoid conflicts
@@ -13,7 +13,7 @@
 %%EndProlog
 %%Page: 1 1
 % Translate for offset
-0 0 translate
+14.173228346456694 14.173228346456694 translate
 % Translate to begin of first scanline
 0 359.24203171786627 translate
 532.48818897637796 -359.24203171786627 scale
@@ -29,2278 +29,2309 @@
 {currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
 {currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
 true 3
-%%BeginData:       115472 ASCII Bytes
+%%BeginData:       117908 ASCII Bytes
 colorimage
-r;V=MJQRJ*JQRJ*`E&lt;'&lt;J,~&gt;
-r;V=8JO=uUJO=uU`C'S'J,~&gt;
-r;V=&quot;JLuF)JLuF)`@_#fJ,~&gt;
-rr3(0=QJq%n:C([n:C([nB(/%n)RS[rr7K~&gt;
-rr3'l6a+&quot;N]7ISF]7ISF]?.Ye\?A7krr7K~&gt;
-rr3'R/U2_qK7SZ+K7SZ+K?8`JIX!Ftrr7K~&gt;
-s8N4(h!F:gJ`MCCJ`MCCJ`Or6#3G%4fi\:SJ,~&gt;
-s8N3hWj]%*JXh:]JXh:]JXjiP#,%coPsbTOJ,~&gt;
-s8N3RF*hb1JPUhmJPUhmJPXB`#$,&amp;I9.g2DJ,~&gt;
-&quot;TMThkN%3QJ`21=J`2^Ll[8Zil[8Zil[8`k&quot;6I^.s*t~&gt;
-&quot;TLirX.k05JXM(WJXMUflW*nOlW*nOlW*tQ&quot;/^rCs*t~&gt;
-&quot;TL'!C0Q6_JP:VgJP;/!lRMj,lRMj,lRMp.&quot;(ObOs*t~&gt;
-&quot;92-Zi.9^8h1=C5h2pFnHGf.B&quot;iGZBh0R!+oEE-Yh;*CpmIUV#HJRE,:B,h~&gt;
-&quot;91NhT7N;ZQ@Y?QQB7C5;k`U#&quot;eek\Q;aLEaT\A:QBkICmE#R+;jN`24o^$~&gt;
-&quot;90iq=b01r8qBTc8ruXG.=LTR&quot;aqgl8h#2US-=&lt;i8kLO\m@4B/.8!3&amp;.fY#~&gt;
-!^#N&amp;rRq8P!V6;Bg4@t/g4@tQg&amp;ZKfmGnH&gt;H.pttn*T0&gt;ms3X@H11.]#4Hikg&lt;n8/J,~&gt;
-!\ggTrK@6^!V6;BPC\pKPC\pmP6&quot;P&quot;m@OR$;3R2@`U09$`DMh_;8qpp#/sH'PDtMTJ,~&gt;
-![W#%rC6kg!V6;B7tF0]7tF1*7fb!*m8X=X-V$ZSRI*uXR3tKp-^j@%#+6i/7mo`kJ,~&gt;
-!^#DorRM(j;oC9\!.i^Pf(7H!l2Ue&lt;f%/dZs5Deb!9sI^!rMQGJ_#D'kLKZWlg&lt;L3lZUk1G3ePO
-&quot;m^?_eopBHh#Zhbrmh+o4+I~&gt;
-!\gaArK%-$;oC9\!.g5_OS&quot;VAP3r;6OcY[Us8&amp;&amp;&lt;O9(O3rr3*&quot;n'.;POF`MVO9&amp;1pm?n-p:lpc8
-_X3`p_GH&gt;U:r;Uf!Q%\4O9(1lJ,~&gt;
-![Vq^rBpb-;oC9\!.dOh7.`kR?iU.e6ps`?s2!MZ!+5^)&quot;8CE-8:a0[7-?r=-C4$q&quot;dUK'6me5e
-:^*.36prAfm8*hL-N6C65p_$~&gt;
-!A&lt;=.dguI`qQ+s_PA6:)B9P$56BcuLJ^a5&gt;$KqHh;8Uf=s8Qu&lt;i6qbWe*$T-!7HGIJ^`i3!HmPl
-eck2Ye'iI%r7:Umr72&amp;6Fjnf^k5&lt;d3X+5a!f)L7#X8LNLk&amp;p[P!QcsE~&gt;
-!@OrGN=Z%oqQ+s_PA6:)B9P$56Bct[JW9;]$]jZSejPIVec5;,Lu=6oOcSl+rrMe\JW55?k`#U&lt;
-^?q*f^.sZI:;6XipK7?W&quot;hm`kND@4cP6,o0=T+H`=9*OBP6&amp;Bmrf$r5-\)~&gt;
-!?Z@[64a*$qQ+s_PA6:)B9P$56BcseJO8uq$=3]3HoFAao)H-Oi'IK57:#ci!QRc_6@hJe63/?q
-m7RVH,XOgCPPe)J/c86FP9`I],a8.!!^&amp;%drCd/B!'L0P!L&quot;f.630:mJ,~&gt;
-!A&lt;7,ck$/arRn3jg&quot;`aZgP!Sqn*,DMJ^F#8)s72#;/jP0s8Qu(s8LNpd.IA,d-L`,l2CYNe,I]:
-htR0No@VF:li6bCrVFe$s8Q.mII[@;R*a4=p](9dh#&gt;Y(htI*Mq:^DHJ^F8?!H[8fcNW&lt;Ld*Qjn
-r6G@jq&gt;UGBr6GQ+F3r9Tir%+/I/j4ocd.&quot;=s*Xaj!TJ2&quot;ciM-=J,~&gt;
-!@OlEM@]`prRn3jg&quot;`aZgP!Sqn*,C\JVs)W8W&lt;!8ei@)oeGo2)bl?UZMO&quot;2@X,loQbhW6o]o.c*
-Nl^nnq9=tXO7`Iog],NTli5Qu9:Gn\gj4j=b4bl3eWbrKNlUels5B#iMLgZ]M?-D_m&gt;V:]9T&quot;^$
-]DRWg&lt;VcXp&lt;W%g[]1e*&gt;9Y:4^$!%$*&lt;K2u&lt;s8Q*sN&lt;-Xbre^`/-\)~&gt;
-!?Z:Y57de%rRn3jg&quot;`aZgP!Sqn*,BfJNrck)dE@BHn@BLo)H-[p]#h05DB.08ne8)OQ6AuB)Y&quot;D
-&gt;/gC=jFoi`B`J*ijSrgrs8RU';oJ_9OZl!9aSl/'Q9mf#=i1%8oV-n$JNrrp!@*]n7Knku5&lt;gBS
-r'gZ9q&gt;UFEr'gjO,&lt;nC;OShQS.f]Mu7Rem-s!mq9!K\Q*563kgJ,~&gt;
-!A&lt;.)bRa_7q.'&lt;BQCt)Sm;m`rDZt^9J^!`0-fk=-=*2F8s8QtUp]$&amp;ad/O&amp;^D&lt;h0$n_F0Ecc&quot;&amp;b
-s8Um7s7j:OlMgf)p#Js-s8Pr6F,'_pTp=R9s75pas1?M4s8W)Zs+me.b^n&quot;8bQ2_?mDoIfEQlXH
-hYbFpGkq@&gt;Gl5VdhJpc`ESgW7!-nMCs*4PC!-nF_!T%hqbQ5R5J,~&gt;
-!@OfCLCaDGq.'&lt;BQCt)Sm;m`rDZt]IJVWlQ.#I9if0El(ec5;)JH,ROL9U^I4*:)os4uK1s-/7p
-g].8tq#AZoN:[&amp;K*qH+.lMoEq;c'[ts''s/s8V9^s5o&amp;mg].&lt;Bl2=S6JVSf3qhG2F\*\qS[nDL3
-9=OhS!)`Rl!)`ZL&quot;h.-[LJ,,SLB(3Ns8Psqrr&gt;poLB4kWreCN*-\)~&gt;
-!?Z4W4:hHQq.'&lt;BQCt)Sm;m`rDZt\SJNWQe'NkD8J2BG_oDc6K[/\B/50X&amp;1-Y35V&amp;'&quot;)&lt;nk)#B
-o`+1#s8RX4B)_fOq!q&lt;_s8RHu0feItj&quot;j[/s8M6^s.__To`+sOp&lt;,.@4FoWk496Ubm6Lo8+Zqk1
-NVl'B-i*cB-i?76N?LDH+cZCc!%7dGs!RgG!%7\1!KA9%497GaJ,~&gt;
-!A&lt;('aUb%;Sg;Z[PNqO4eC2_7]E!N)J][N*!93hS6#LAbs4:c2s6`6fdf9;G5a_TOCW6,LUcV9/
-s/2s_s8RI.6q&quot;Tcs&amp;!aFYkS1??24HC5&gt;(2?bF\P0hFB\(:2.1gaaqS3aT6&gt;6mD/t[Dop+&gt;gAJbf
-FT;5[!WR9&gt;_$/P2aiSJTqnW8Squ6Y&lt;qnW&lt;eDuRiZ^b1-~&gt;
-!@O`AKFa_KSg;Z[PNqO4eC2_7]E!M9JV&lt;ZK!J]n9s$HB@&gt;O;BF?/5I^1KsALdPF#:s4(DFs8Q:W
-=o\M4L@bH77kcnjk5X!m?@A&quot;:s)3,]s*ue7s8RM4s8STE1K$,:Jq8T+K`$K(8[If8&quot;g^dRKLrNJ
-JH8LFqb7+k:&amp;KPGZUoh'8[J;F!)&lt;@j!)&lt;?A!OGAsKE6NLJ,~&gt;
-!?Z1V3Y.lVSg;Z[PNqO4eC2_7]E!LDJNEEa!*B!r6+/7Ks8PGUqYsYH?N:%T,t7k6IQ&quot;)'j&quot;;[=
-s5c.Ls8TJU-Rhgjs*QCW3P,7g1T(3I5:3*(q`h%Zs&amp;UKq9dhoN3e9?h3WU@\m5tQ0+?DP+MYoR;
-,ld`e!WOGC49^Tb3]\C@q`Fj(qu6XAq`Fn:+T=D&amp;2]mP~&gt;
-!A;t$`VoiGR)/p$U':T##6Y89!.i+?`Uh%Ki;*BeDJ6W]s'k$gX?^pcs5Q@_PQ1YuP5&gt;2)dTGQ0
-lp&gt;3+GeF(V;/j1hqu=fEs8R[CG/sXLA,lR`7&lt;E`rEN=Z0J]7Q+!H$ET\cpZ%`Pl]Fr42rKs)@qJ
-!c\0Yr43'_D8jJ2f(urXE;fe:E;I-HentE*!PC%8~&gt;
-!@OZ?Jc5WXR)/p$U':T##6Y89!.f]PJb4KoKBi=5(%j[h[f&gt;)_qYshc?h45b3*!3_n3ErKs!;nr
-oDb^D;,pc]s402:J&gt;3)DDiXkt6Uk&gt;Ms/;([s$]7R&lt;_ubEJUrB'r.+l=YjHc@YXa7q8$Mo&lt;!_WJb
-rHeT&lt;s%&lt;39&quot;gCLJJOcs@HN6\:rr&gt;[fHNC?@rdb)s-\)~&gt;
-!?Z+T2uWdcR)/p$U':T##6Y89!.d([2tT$/&lt;;HP/[OO8ns+kUnkq4Vss8P_C39:+C0@]ju,WT94
-s&amp;1@%1/IrMHn@37])V[be,R`A0OXq\&lt;n75u-SI510Je8=JN*Hb!?R$`2[+sX2`De5r&amp;4[#ruq&gt;&quot;
-![7Rer&amp;4e7*]H#!L\`q0+oVE@+o4+uLE?FR!AkmK~&gt;
-!A;Xp\GcI2/K&quot;OJ,l%Fk\:M0]\00K)s%tj&gt;C]FEPBW1(nW;-C$&lt;.3^)k&quot;9j4s8QkYs8U(:W[3Ws
-e,S;oFecFus8Pr8Z,ltFU0[g!JmsPos6Ntis+Xp4Za?pAJ[g9@r3uc&gt;b3c&amp;0b%A/nB$1%K!bD=A
-rMBX,s()&amp;)&quot;j1Ge\7Wn[V&gt;t0*rr?U+V?+hOrjW!4/q&lt;~&gt;
-!@OE8GQ%RF/K&quot;OJ,l%FkGCau1G9M:rs4/qZ0XLfP4B7+7s,d9D2GIlUs.2P^_&gt;j!eR/d2erM:fD
-:\&quot;II5Zi)Rkl93o&gt;^+3fs&amp;P0[s$KY&amp;oDbbGs8PMbATr38G(FjgGPlXc6E'9h&quot;fOb3G=&amp;8+D?&lt;0)
-6N(d'6N9CMD?Zt*GBZBPqJH:&quot;rVljaqJH&gt;46N200E@68~&gt;
-!?YtP1B%7V/K&quot;OJ,l%Fk14_4Q1*BEns*Q+=0(AnL.Pc_XhnK,\-8Aj,s%P.+kl7h:e,S_3THK[X
-?2spo0/&gt;:Zs8RHu1-Fk%j&quot;8a[c7(MVs8Q-Ls3W9H14_4S1'&amp;AKm5&quot;p&quot;*&amp;98hL&amp;&lt;_.+9*G]1BJZu
-+8dnuKcDj'*/45F!$D1&gt;!$D%n!JMNm1'''NJ,~&gt;
-!A;^r])Ma4#V@VJpAfcUJ\(Ha%,1a];/g`Hs8QtMW65,&gt;39&lt;DAPiD`CBn,&quot;&gt;s&amp;3e,s0b[&amp;&lt;H`Ij
-bl?QlI(-]@s8Q/Ic2.J?&gt;[?n&quot;b@@FDs3&quot;&quot;'s4h=^^;,&lt;2J\(]h!GBRQVtXa&quot;VZk4U]&quot;2Osr20U,
-s())+!bD=Ar20_@B=bZeb58(:AGcB,AG`8*b%L^b!O48-~&gt;
-!@OE8GlIaG#V@VJpAfbhJU$g3%=@@&gt;ei?`1_#O'i&lt;Hlpks#?K)&lt;-Ij4i(@kQs4&amp;uNs8Qk!5X^#m
-&lt;Up*O6tCOhl2T@#EP;DPh)99Qs*mn2s8R:Us8SNcFc1TtG_(,9GQC.0r,26qr,)\:6?m`AW;LN7
-6N9CND?&lt;0)6Mt^)W'Y`R6E'd!!(-S_!(-R#!N8?aGQDh4J,~&gt;
-!?YtP1B.=V#V@VJpAfb&quot;JMQjQ%8d*)Hn@*8nc-$I1.:p:s#3V%11(&quot;\Q8)\Fs*lJms6V`q.m.i'
-?2spn0JYC[s8RU/?-*'GO=$e'pd$^5s8+dOs8Q.U1ff/_JMR$V!??gk1\W!h1BiIP1,9i'r%eBr
-ru_1q![%Far%eM1*&amp;98hL&amp;3Y++8c'&lt;+8[hpKcL(I!AGUG~&gt;
-!A;as]`.s7*9u5B&quot;o&amp;(K]Rd`e]G0-#s&amp;!aBbl@]\BWAi@s8SNTG-9m)rtb5+s1pj;`rH)!h!k?D
-I+SDU8V&quot;Cbg\Up`O?7&lt;ms8VTcs8Q_(XT/&gt;!nc-k&lt;J\6QHqn)rCbP\:=Abl?+Ac/J1b@nQ$BZp=P
-!G2&lt;.AHDgBr29eBBY:ukbP\:=AcD`0AcD]0Ac/J-b@pmf!OFD/~&gt;
-!@OH9H2djI*9u5B&quot;o&amp;(KH%C85Gn#/cs4028H-ZH_4B6Torr4$:6&lt;Sa-s8Vlis8R1&quot;&gt;1*BMe(4?p
-?tJm.O[Ef-I-LP.'_50\=47-KkPtS@4&amp;!p!s6oFTH$=gbJU.-&lt;!CNjaDZE0#rr&gt;FaD[!+-H$McV
-r,2U's8,.as$Q^&amp;&quot;fXk7GseS/DZE0(s8PIcrr&gt;FaDZQh)rcnNc-\)~&gt;
-!?YtP1B.=W*9u5B&quot;o&amp;(K14_4Q1)*Rbs*QCR47W?Z.P`fhs8Uq*0JZu6rtb#%s786%9(i5T`n17&gt;
-04+\Y756PQ;#:2*__*H4pAb*Ss8SW:8b;u^j7LSMJMMd3qD&amp;'kL&amp;&lt;_,+8Pp:+8dnuKcDj'*/4;H
-!?_@=*s)B`r%eM1*&amp;98hL&amp;&lt;_,+9)&lt;?+9)9?+8dnqKcL(I!AGUG~&gt;
-!A;dt^A\*=`gQi;/L:B8*$kL`J\H]Lo=cj4s8Pr8[a+pQDJ6)bf`1tQ&gt;(F9Hs5B.4s1UuuGI*go
-s8VW+=b#?/har@2^&gt;/\e(\#:T4'd'7TAT\KendE^M4E?#s6+!P[t28E^AP\GC!?LT!+u',!+u//
-&quot;jC\p^1kghWW6Z,rr?[/WWgU\^:n=*r2L'8s8Q]2Wb2;2B)JY0b\@'j!OXP1~&gt;
-!@OK:HN!mN`gQi;/L:B8*$kL`JU2lnoQi0=l2T&lt;p&gt;^F]qofQ6!J+!?k1f%b6o)G8hs7M@,8R6S9
-m/R+FT/UZYs,fZ_H@&gt;&amp;Vrtj^j68D&gt;@Gc:-3ppEFG;f/8qs8U&gt;(Dg?n[JU76?!CNjaDu`9$rr&gt;Fa
-E!&lt;4.H?qrXr,;X'q&gt;UF^r,;h=6[F&amp;GWVg]A6i[0RE,\2Es$Q^'!NAHcH3&amp;+8J,~&gt;
-!?YtP1B%7[`gQi;/L:B8*$kL`JMMd3oJ/$qs8RHu1-&gt;%+[OO$f?iU._-SdG`s8R&amp;ks4pU#0JZG9
-qZ$B8F!tAps$\Xt1/RrL(AH7)-n-l+;8N21kD:T;1/&gt;LZs7;O)JMMd3qD&amp;'kL&amp;&lt;_,+8Pp:+8dnu
-KcDj'*/4;H!$D%:!$D+p&quot;bdpO1)u#G1C50'ruX$Q+92?_r%eA-*&lt;%\o0HYf~&gt;
-!A;k!_&gt;XE@`gZq,[EWpW`6nPaJ\coRo&quot;cr&quot;4$.Dl_3I)DBW],%s4BMRS\aFfhah!:4&amp;9sY^o1p9
-4$,`)DP^i)7=i4i_/oQ:(-bQ.GG2jOB14mD88*4PWG&quot;a_4%!b]J\coRr4rDLc2=X:BDee6c&quot;k/3
-CX)dXpLjE)&quot;jLi!_/%&lt;nWre,jBDnn2B)medWr^I\rkSWF/q&lt;~&gt;
-!@ON;I/X*P`gZq,[EWpW`6nPaJUE#ro6`3&lt;3&amp;!9sI!e=910&amp;XLhuAKk&lt;-Ei`s,fT10JZ$qDgPq[
-1b^UA6&lt;&amp;%`0LKT&amp;I![jO0GZN3;HJ!f@R;h(0g/E=H&quot;02u0JGOdH%C?oI/J?m7B69*pI+q!&quot;fb&quot;=
-Hpt(5EVDm!E&lt;W@2I!eA_r,DdA6q$uns$Qijr,Db;7K.Z8Fshe~&gt;
-!?Z&quot;Q1]@@\`gZq,[EWpW`6nPaJMVj5o.pJ',pb/B1DqMc.P`eOs8PA91,E;;s$\Of,pt?$1G^a7
-rZqn&quot;/M]&quot;+,r%/21GShS(+(C\1,:XA0dn@p-7go-1GL=),pk,tJMVj5q_J6mL&amp;&lt;b$+8dnuKcDm)
-*/4;HpE0;h&quot;bdpP1E;,H1BK!I+8n&quot;q*rmbf1BE1Lr\FR0++O~&gt;
-!A;q#_u9WB`gQl,3g9Tn&quot;BYR&amp;J]!&amp;Vo#!,WI&lt;TnI_mFo;GJEPFs*I7Z\ARJ/har9HG^#4__o&amp;R2
-H$=IYNOPI+GD!`L_khe[G63)JZMq`PX+bhCGD*3&lt;_l\]&gt;GB\SDJ]!&amp;Vr5/POcL%_;c&gt;:D9CsMFM
-&quot;jUr%_edWcXT?^`rkecJ/q&lt;~&gt;
-!@OQ&lt;IJs3Q`gQl,3g9Tn&quot;BYR&amp;JUN)tnpMWi&lt;`NFRI:u__=1dDjpHh&gt;SI=h%iO[EGV&lt;E&lt;m`I=,g6
-r`'/*B7!rc&lt;GVS^!Ff+.&lt;=i8DH$t*gC0=S;&lt;b$E'Htuma&lt;&lt;6HSJUN)tr-\T7WpOd0W^V&gt;a7B5`p
-&quot;fb&quot;&gt;I7:1'E&lt;3(.rd=fk-\)~&gt;
-!?Z&quot;Q1]@@\`gQl,3g9Tn&quot;BYR&amp;JMVj5nMC2#rA4I/%6Cu\s1B^61G`D&lt;s$\[@1As!01,Jkar\OO/
-rA4@,q(r%+qD8++JMVj5qD/-lL$^Z&quot;KcDm)*/3c9&quot;bdpP1E;,91BE1Lr\FR0++O~&gt;
-!A;t$`W#oF&amp;_t2%fn@#Go66o-!.i+?`TY8NfDklM4_'5b`TR9Y8V4j2`IZ&quot;O`;si$mB-W&lt;D8jJ2
-cL%b&lt;c&gt;CP&gt;D9hOO!R&gt;Q]`&lt;!V(J,~&gt;
-!@OT=IfBBT&amp;_t2%fn@#Go66o-!.fTMIcu4ihuE1_1/_q;KC]&amp;)6Yh7%JUYaj!Cj*VEWrI4IXXbd
-m;`B17XfeUWpOg-W^cu:!I,uB~&gt;
-!?Z&quot;Q1]IF^&amp;_t2%fn@#Go66o-!.cqW1[-\*5l^l03[lg&gt;1LL1^756QK1P%@)1BAJLm5&quot;p&quot;*&amp;BAj
-L$^Z&quot;KcDm)*/3c9!JMNm1BB3PJ,~&gt;
-!A&lt;%&amp;aSu5I'5_SV(2[7W6#A@U!.i4BaQLVJOZPX*GHUqd&quot;CsS_K#WA_J]Q$U!H4k&amp;cip:baN/:s
-mEc$6Dog&quot;&lt;VX;_2VJlIT!P^7;~&gt;
-!@OW&gt;JH#TV'5_SV(2[7W6#A@U!.fZOJEMFk5;4lc&lt;d]FJHo*NECk7+fJBEBC7u?W6&quot;c5a&quot;J4GI`
-Ws+&gt;MJ:L.HmAg8E8,e#&gt;H7+4~&gt;
-!?Z&quot;Q2#dO_'5_SV(2[7W6#A@U!.ctX2!?b&quot;1F4=q0Ji\b&quot;&gt;M2K0f+A;JMbM+!?GqBK`u331c-4f
-m=b^Y*AfSnC@-]UC*!:1!AYaI~&gt;
-!A&lt;+(b4,I_b(7^uap#,$GB]S!rlPA:I!:7bJ]`Pdb0'$ZrQ=G8rQ=G8rQ5/V/q&lt;~&gt;
-!@OZ?Jai_kJUrC8JHTOc&lt;EF;AJHUL0&lt;`O!fJUrBoJa5T&quot;Ja5T&quot;Ja5T&quot;JH:*FJ,~&gt;
-!?Z&quot;Q2&quot;:Qs1k@LH1]oNh1,Jhb&quot;#D\f1P%B61s%T?*;q_[*;q_[*;q\p1*;#~&gt;
-!A&lt;,Xb^muhb^muhbeM@&amp;_Cg?~&gt;
-!@OXnJq8N)Jq8N)K&quot;lm&lt;HmaF~&gt;
-!?Z!+1k@K71k@K71qtjJ1*;#~&gt;
-!A;WJ\:M/@\:M/@\A#HQ/q&lt;~&gt;
-!@OCgGCashGCashGJ88$-\)~&gt;
-!?Ys*14_3314_331;5LD++O~&gt;
-!%rhHJTlZhJTlZh]lsH/J,~&gt;
-!%3=tJQ78$JQ78$]i&gt;%[J,~&gt;
-!$?bIJMMd3JMMd3]eTR0J,~&gt;
-!BpJ^mlUOLrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+r;V=%JM;X/JM;X/`A%5iJ,~&gt;
+r;V=.JN89AJN89A`B!krJ,~&gt;
+r;V=6JO+iQJO+iQ`BjG%J,~&gt;
+rr3'V0Q;2dH%C6lH%C6lH-(=6G&amp;T,krr7K~&gt;
+rr3'a3L?=gTRibeTRibeTZNi/SsMH$rr7K~&gt;
+rr3'k6+Oj``.&gt;jX`.&gt;jX`6#q&quot;_RVs'rr7K~&gt;
+s8N3UCijH%JQ[P,JQ[P,JQ^)t#$k\R&lt;A=IQJ,~&gt;
+s8N3^P+7esJVJ`1JVJ`1JVM:$#)S&gt;)J3!Z0J,~&gt;
+s8N3fZG3rVJZXL*JZXL*JZ[%r#-bGEV*Y.]J,~&gt;
+&quot;TL/sC12ZqJQRJ*JQS&quot;9lS8??lS8??lS8EA&quot;(k=_s*t~&gt;
+&quot;TLKNP)FmDJV/N+JV0&amp;:lU^u,lU^u,lU_&amp;.&quot;-.Obs*t~&gt;
+&quot;TLd#[]b7]JZ44&quot;JZ4a1lWsIglWsIglWsOi&quot;1+@\s*t~&gt;
+&quot;90on@&quot;DC1=+OG(=--Ja0S&amp;P`&quot;b8:.=&quot;o0lTETj&quot;='%)+m@XZ60NV=T/H:5~&gt;
+&quot;913GM1L5/JUrB'JWPE`8!`PS&quot;dVZ0JOc$n]*4KjJUp=WmCNRg7tH5=2#i(~&gt;
+&quot;91EmXF[4!V1GIoV3%MS&gt;H.#=&quot;fY_&amp;V-Bqddfl^TV57CqmF)9=&gt;G\0g3ra^~&gt;
+![Mc!rD`ju!V6;B&lt;In/$&lt;In/F&lt;&lt;4bEm9Kme03)&quot;*T']eeShF)D0:qQ:#+dJJ&lt;Dl[&gt;J,~&gt;
+!\'FqrI+bI!V6;BIXus!IXusCIK;pJm&gt;(qU7XfeU\F#(U\41pr7_%iA#.R-OIX-/eJ,~&gt;
+!\LjarLj5l!V6;BTn/ngTn/o4T`J&lt;AmB-W&lt;=eVNlcL%b&lt;c&lt;6j7=jHE;#0pAFTpqH%J,~&gt;
+![MbgrDWm=;oC9\!.e+#&lt;:a&amp;qU]:@,&lt;)e&gt;Hs+0!*!2KMm!q=&lt;ZJQ.2&quot;k&gt;VI7SF'J`S1[c?/tD&lt;4
+&quot;e72E&lt;%a^.=ok-Gr_rnp,_,~&gt;
+!\'@`rHeXd;oC9\!.fKJHh;XlId-moI=$=ds7q9'HNAT[rr3*&quot;m)+U0H\$P,HN?OBm=PSM7!j8K
+[I&amp;SM[7#@g7()E7!OY&gt;pHNA7&lt;J,~&gt;
+!\LdQrLF&amp;1;oC9\!.g\lSb/HZX8i4&lt;SXlJLs5)S&amp;!3?(u&quot;8hB%T7NPaS`cOE=3Bp.&quot;j0o;SQEu$
+VZk4ESXij)mAC!-=8n`kQ7[U~&gt;
+!?Q4X;\/n5qQ+s_PA6:)B9P$56Bct!JQ)/=$D[Y$4AJh's8QCpi)9\Z;ks3h!1/78JQ(c2!A9i.
+&lt;s&gt;$F;c&gt;&lt;;r)`VLr)X&amp;j/lP\$Rf$4g7Plt#=8t)W7f6&lt;gRP+S&lt;!Dabe~&gt;
+!?m[)Gn9p[qQ+s_PA6:)B9P$56BctGJU-m5$[h4=e2qo#cN!PsFl7NHIXLDWrrMbLJU)flk]m1r
+ZL*)EZ9rn_6aHW=pItL6&quot;gUL@Gsen8IKF(S9`9G?9E8Z%IK?`ArcnNc+b0~&gt;
+!@+oJRLfF'qQ+s_PA6:)B9P$56BcthJXZ5&quot;$E=(*JSppJq#@m%i0j_:S&gt;lAb!S&lt;imRXppkRK6F-
+m@OR$&lt;LT@V`VcA&amp;?i6N&quot;`Dr@q&lt;Q4m.!e4QarLa*s!.Xp=!QA(&lt;RK8TsJ,~&gt;
+!?Q1W;%N]7rRn3jg&quot;`aZgP!Sqn*,C#JPl#98&gt;?.a4?-)_s8QDIs86;&amp;;Utfc;7HSfXS;b5&gt;&gt;\6q
+MW&quot;O7d;DfY\,YQfq!D(Us8PGDDXd]+&gt;&gt;\:YirB&amp;3I8Nj&gt;M;J:4k]VMSJPl8@!A0]+&lt;!AX@;,Jp4
+r)&lt;YOq&gt;UFMr)&lt;ie/Q#@sR/Bni1B7A0&lt;)bXQs&quot;aLO!LPJ&lt;;#sB4J,~&gt;
+!?mU'Fq=V\rRn3jg&quot;`aZgP!Sqn*,CHJTg[/8U9P&quot;e1smEbl@&gt;oaT(&quot;=G(]bnS9si,_q+k_Z?LJ8
+Hb]1PpV_H&amp;Hh.3Pec3R2kl93j7@4&amp;SgM1nZ_=dj)c@U4_HbK&quot;MrnMmPG(Fi5Foan4m&lt;Jl=6$@E;
+YP`YG8brAd8c3i;Y&lt;d&gt;T6*L33#tb0s8U5SQs8P[gGlb*7rcS&lt;]+b0~&gt;
+!@+fGQ4O#'rRn3jg&quot;`aZgP!Sqn*,ChJX5qo)l&lt;T7JOY$Vq#@lsq&gt;\'mQG!7nS?;hk_XRTnX8\D6
+V;M7On@Y'QXoJF9nGfPbs8Rd4=iULASs#D;iVrlK`gE'XUu)%Lq94DUJX6+t!E6i%Qj(&lt;)QBkIc
+r0RIgq&gt;UG!r0RZ(;jN_J_&gt;KZ,&gt;Q=_-R$_+Xs',Dg!Pq_6Q3!$kJ,~&gt;
+!?Q.V:_3Req.'&lt;BQCt)Sm;m`rDZt\gJPbr7-_^S?6U&quot;Fus8QCinc*l-?i9q/1Ud&gt;`m`GM/]h_Id
+s8UU+s7Tbq[f6:JnDH!ms8P2?3+;jeQ9^Z6s6fU\s)1_rs8W&amp;Vs):JZ:k;I?:]W,6m84%R/5T.o
+Qi'\\1&amp;:hL1&amp;OlPQRks0/=693!&amp;=KQs&quot;XNQ!&amp;=CK!LGA::]X62J,~&gt;
+!?mO%EtA:3q.'&lt;BQCt)Sm;m`rDZt]5JTLI).!FhSei?`ScN!PpGQ7V=Ehi[(1h?1Ws4c6,s,(i&gt;
+ec5Wlp]&amp;HXGk1k6*q&gt;ptkl9-e7n'KYs&amp;Emfs8V6]s5\9Eec5[&lt;kl&quot;+mJTHB`qf;d'X6js3X$C`I
+5cag(!(H_`!(Hg,&quot;fjn0F$Qf(Er\Z.s8POerr&gt;LcEri=,rc8*X+b0~&gt;
+!@+]DOq7RRq.'&lt;BQCt)Sm;m`rDZt]TJWfYg'VbX-KhQraq#@lda8aG)PN)VJ1St*N&amp;(U1LoSJa&amp;
+q&gt;]g.s8SpXWrE#&gt;qXdpNs8RX=&lt;*&amp;;ajA;EDs8M9_s1+8`q&gt;^KUp&lt;HuqP(AemOo\Fnm?%Rc;3I)&gt;
+^&amp;3um=8Djr=8\0a]hsrU;8)mi!*B1&quot;s&amp;]4&quot;!*B)\!PMA0Oo^IcJ,~&gt;
+!?Q+U:Cj*kSg;Z[PNqO4eC2_7]E!LYJPYl5!20/f6!cCLs3`cZs6M&lt;oYlF\e-A2?u7T8UPRNsN@
+s-uTfs8Qp].OUP^s#`86;=sn,2XCC^-o:#c`C]Frg+jp23Aa?Z:Ou=&gt;:B&lt;#3m7mhM/5K%mQ2FAX
+0E:o&amp;!WOhN:'Hn6:JWO,qb@,Equ6XLqb@0W/H/EG9-/T~&gt;
+!?mI#E=\^8Sg;Z[PNqO4eC2_7]E!M&amp;JT:=%!HdN$s$HB9:[A%5:tGZH.o,U6cn%$'s3jf(s8Q(J
+;ZHc&amp;FRfD&quot;5UeHMjT!^b:MPXas(ZENs*H2%s8R:us8SK;/5.]nDh2nZEVseW5,djd&quot;fOV)EB^?!
+D?3*(qa(&gt;`6Mt^)W'53@5,e?r!(-S_!(-R#!N83]E&lt;0l!J,~&gt;
+!@+TANXqdUSg;Z[PNqO4eC2_7]E!MCJWBA_!1s#d6+K(3s8PoKr;U(cIK0&gt;&quot;/Q;]LKR:rCj&gt;J`Y
+s5maes8TP_0/7,&gt;s+*X^J]e#j5/@3o7kUY&lt;qcqAFs'@96&lt;B&quot;oKNe*5fNWDqcm&gt;2&quot;V:QCH2\GV0a
+;ZHVl!WQ'qM$:CbNfHoFqhY;Nqu6XoqhY?`:]?@TLEh&lt;~&gt;
+!?Q(T:&amp;Y,$R)/p$U':T##6Y89!.djq:%M'ZTDAL$?8Q3ms%130U*_n,s55@d?N:%.:\t);bV-@'
+l7=_P3g]mH4?,u6pA`&amp;qs8R0j3j8SK8,rU6-oa:J3(JNoJPH&amp;:!@sB$9*LM09hd.%r(@)Cs&quot;41B
+!\OF(r(@3W.nr_gPPRoP/cG\L/c&amp;*@P:QW,!D+&gt;_~&gt;
+!?mC!DZ0VER)/p$U':T##6Y89!.f$=DY.fIETd2u(%jFUXoI*Lq&gt;XMS;t9mQ0M/;En2[$8s!;bb
+nc,C87S-A8s3rf&quot;DNt2$C5;ih4?ZO0s.tVQs$&amp;J68OQ*bJSp$Vr,)NuV&lt;qt#V*/^64f/'j!^H]L
+rFl&lt;ts$-Eq&quot;f4A&quot;DEXimB`LBrrr&gt;:[B`Y%nrb_aN+b0~&gt;
+!@+K&gt;MZ*SaR)/p$U':T##6Y89!.g#YMY)c+S,*(!\N=Ths,E$&lt;l8;:ms8Pqc&gt;Nu0n8EK^J,X[ap
+s&amp;hE`&lt;cS0&gt;JOXd&gt;f)PY0h#GbU;1/ED?/Yb302,DJ:1Ad3JVs&gt;^!DKlfJd&amp;MTMMb*7r.4uFs%`NE
+!`&amp;bjr.5*Z9T&quot;^$[/,@S:At1m:ATPCZqUIV!J;VI~&gt;
+!?PtQ8cA\m/K&quot;OJ,l%Fk8V'J)8KaT(s#_PP=o\M.1e?0sT(W+Z/j$E&gt;j=WH.s8Q4ns8Tk4TI#+&lt;
+YlEK.3CHH0s8P2@7s&quot;_1QTtNMF##qes6&lt;#Ps*-:]84Z6AJOtDar(-o;OR5L@O=3[l.$4?r!\44&quot;
+rC-i&lt;s!mq9&quot;ct-(8LT\s7K=q:rr=PF7KJT!r^d,[*e4~&gt;
+!?m3qB)Vc5/K&quot;OJ,l%FkAq=RdAg(mNs3rSK.BrjF2+`#ks,@!?0LB&quot;5s-brD\c;.UOoPH[rLtQ;
+7e$G&lt;2bRXojo&lt;gc9kM0?s%nLNs#`bZnc,G=s8P;Q=(YrOJS'IFqdojgT']hfSiC=o31g%S!]^3&gt;
+rE]Obs#Bp_&quot;eI\cAiQCY?2ut`rr&gt;%T?3-WWral1&gt;+b0~&gt;
+!@+36If9&lt;M/K&quot;OJ,l%FkIXut?INXdQs+)aR2Y$gX4(GDmiPkhh0iaD:s&amp;;d7nGfdXi;`-AUa;Tm
+HiO+?:1Sg9s8RX&gt;DM@Z]j&gt;&gt;Tjco5$ms8Q?Xs3ir-FaeRZJUW0!qgJQ8X6js3X%%Pe7]ZH.!_*,X
+rGr$/s$cj,&quot;fk+AIR^C7Er\Z-rr&gt;LaEri=2rdFlm,Cf~&gt;
+!?PtQ8cJbm#V@VJpAfb9JP#H)%%[Fu4?,B:s8QC^7&gt;CgA38uDG5dULj;EUrYs$&amp;U0s/dh(/QPh*
+YQ*B.4%Mr6s8PGWL%&gt;9D8N,i5`ALBTs2?YUs4BJ%;d+`DJP#]0!@X'-7e\D17Knl%8P(=lr'g`;
+s!mt:!\44&quot;r'gjO-qQuYOS_KI.f95G.f2[9O=:*&quot;!Ce,\~&gt;
+!?m3qBE%r6#V@VJpAfbWJS4Uf%;P&amp;*e1sQd]`7X^8S?BKs#?At88%Glha(Z8s3iQ;s8Q[h2`l4L
+8al\=3`]m.k5X!nA[VR&lt;gb3CAs*@.ks8R.Js8SBT@si'CB7X^lB)t#ar*K+Wr*BPu3G2tbT);mr
+3&lt;(u:?33+d3;d(dSiLFr3M-+S!''lU!''j^!M2=NB)uHbJ,~&gt;
+!@+67J,]KN#V@VJpAfboJUd&lt;A%?gbkJOW[Go`)H`@u:$\s#3kA&gt;+,EjRST4Ks+&lt;GFs6`-95#$Mm
+GlRe;:j.&gt;Os8RdKNSXX7PVTWGpeG5;s8,$cs8QM5J&lt;kb9JUdKF!Cj-fF8&amp;-$Es8U6It'qgr,Vp.
+s$cm-!_*,Xr,W%B7XonWX8?r&lt;7Jm)b7Jh-,X%*)&lt;!I5o?~&gt;
+!?Q&quot;R9)eko*9u5B&quot;o&amp;(K8qBV+8edlss#`83G5qSK1e(L9s8S*,3C^CTrtb&amp;&amp;s1'L9MZ&lt;_4alrbW
+3jJ_?.m6KsT)/I#Jg&lt;72s8VK[s8Q(KKE(uLjSsm&amp;JP(Jcqapl&lt;OShQJ.f')E.f;a&gt;O=&lt;do.?OHs
+!@n-H.KTQ!r'gjO.8!2]OShQJ.fTJJ.fTGJ.f;a:O=C0$!Cn2]~&gt;
+!?m6rB`A&amp;8*9u5B&quot;o&amp;(KBRsjhBFSb&gt;s3rf!BZL/G2+_G@rr4$43)&quot;2Zs8Vlis8R!k:!N_&lt;dF7pk
+&lt;E\hkNB13UCZbNo'_4sN9@!S;k5YJ&gt;1dT4_s6o@RCM/33JS=po!BQkN?N&lt;+^rr&gt;(W?Nm&amp;_BP9H!
+r*KIbs8+eWs#L!a&quot;eRhhBKDd`?N&lt;+cs8P+Yrr&gt;(W?NHc[rb)=B+b0~&gt;
+!@+98Jc&gt;]Q*9u5B&quot;o&amp;(KJUrCEJJ==Js+*XXLA(YX4(Nods8Ut3:26&lt;urtb)'s78KFGkV1/cf&quot;iY
+:l55P9Mg%dPPY:m`AKu#p](3Ys8S`FBD)&lt;)kkO(VJUrB'qLJZ;XSd/?7f!&amp;a7f7?3X@Ihm8$)W1
+!Cm+d7KNNYr,`+D7tH4]XSd/?7fNGf7fNDf7f7?/X@N8@!IH&amp;A~&gt;
+!?Q&quot;R9)\es`gQi;/L:B8*$kL`JP(Jco1CX,s8P2@89Y%5?8P,DYlF_k00Dk6s5&amp;J#s0ja63D&quot;JI
+s8VJq76%XRgabN[8tQ&quot;]([en:,V_&gt;NI,+c%cs%bQ5BbZYs5R!&gt;8:aBa9)M9^.?OHs!%RgE!%Rn9
+&quot;ct0*8h#l&quot;7K=q6rr=PH7Knl&amp;8kLOor'guBs8OQ&lt;7OnH&lt;.f;a:O=C0$!Cn2]~&gt;
+!?m9sC&amp;S)=`gQi;/L:B8*$kL`JSB[LoP#spk5Wpd:2.fLoef&lt;SDs[MX/OW`[nc,#`s7M4!5&gt;Q!c
+m/R+DSM=OBs,B'CBl)r1rtaUe4&quot;E]oBr(4tpp3%77pqqTs8U4t@=`-DC&amp;;TF3hQ=W!'0lT!'0sa
+&quot;eRhiBf_ma?N&lt;+^rr&gt;(W?Nm&amp;_Bk]W#r*Kajs8P)d?TJ/d3W*4bT/usc!G!@(~&gt;
+!@+&lt;9KDkiW`gQi;/L:B8*$kL`JV/N+oRec]s8RX&gt;EJX&gt;g\N=ATSH&amp;VK1KAdns8R5qs5$m4;K.'!
+qZ$E&gt;GW_)fs%H7:K9cE8(\lI10KE-MJ&amp;D6bl&amp;@A^=*hXYs7DgHH\$g#KDU9%8?D`3!(Qea!(Qm/
+&quot;ft7IK1N*AFT=o,rr&gt;OdFTnj;K7c^rr,i&lt;8s8PQ2F[lE27f7B0X@W&gt;C!IZ2C~&gt;
+!?Q&quot;R9E&quot;nt`gZq,[EWpW`6nPaJP1Penk1Gj,U&gt;?@90X[I1e(-!s3i&gt;S6VFfdgab'),V(i&gt;91C`d
+,U=]f2aoGH-U%H%!&amp;jd$(+(Oh3^cV01aaOo.5X(U75QD&lt;,UYK=JP1Per(@&amp;&gt;OShTB.f;a&gt;O=&lt;gq
+.?OHspF?)1&quot;ct0+9.&gt;u#7KPP!.fDj:.KDI+7KJT&quot;r_!8^*e4~&gt;
+!?m9sCAn2&gt;`gZq,[EWpW`6nPaJSKaNo4fpm0.ASMC2,dY.S4&gt;jg])p[8S)l2s,B#r.4RAL?YNM#
+/1E#$3(IL2.6:[JC2#@&quot;.2FNp7nR&lt;+&lt;&amp;lHX.l9ajBN7#C.4I#CBRsoLCA_fI4.uLZpH&amp;4[&quot;e[ql
+C-/*d@.u_[?j32bC2,i'r*TS#3]d4Is#L-Sr*TPu48rsqAKcR~&gt;
+!@+B;L&amp;M&amp;Y`gZq,[EWpW`6nPaJVAZ/o7\f=/M0G4Kmtd.4(X,.s8PVX?%ejMs%Gs?/Mg.(JUgf_
+/hJ\77pp*a/PpnMKlm8F(+qL7&lt;ap]3&lt;B2W_1.5/YJ6+ca/MKJ!JVAZ/qh5&amp;CXo*A:8,RN6X\+;$
+9!/#7pIG.)&quot;g(CNKhAKFFoku?8,[W27fZlnFoe^;re1B&amp;,Cf~&gt;
+!?Q&quot;R9E&quot;nt`gQl,3g9Tn&quot;BYR&amp;JP1Penk1)n4?&gt;Mp91V0+3c)t&lt;s(a&amp;E85$&gt;igabKL4$#Su91q`&lt;
+r]16F5=n4(3^*I8!CT'J3WVE7r_!Sg4Zb\c4@`%;7m?o5!BWf&amp;97]b69*$K(m7.&gt;B.8*;_OmPXB
+OXWpr.?X!f!Kei19*%O(J,~&gt;
+!?m&lt;tC]4;?`gQl,3g9Tn&quot;BYR&amp;JSTgPnnT@G8kDfoCKO5$9=!@Qp,bB3C2reDNB0m/8P36'CMI$I
+r^d;f=D:W(8R)10!E)Pg8J&quot;NsBPVBt&gt;&quot;hO[8Q9A=C0XL48HD\&amp;JSTgPr+c&lt;pT^?.kTK?q)4.ttL
+&quot;e[qmCHJ3V@0*#_rbDOH+b0~&gt;
+!@+B;LAh/Z`gQl,3g9Tn&quot;BYR&amp;JVJ`1o7eoK&gt;ZOmGL4ir8&lt;c$:Ts1^3aE/(%cs%H6s=&amp;rUSL5(4k
+=B8I(?$1R#&lt;`X^)L4EP-&lt;Y\\@EeT7&amp;Iq;__&lt;a'EqL4Eo=&lt;`W:&gt;JVJ`1qh&gt;,DXmL&lt;9X\+&gt;&amp;9!.K)
+&quot;g(COL.\T8G6+g&lt;re:H(,Cf~&gt;
+!?Q%S9`G)&quot;&amp;_t2%fn@#Go66o-!.dgp9^#.ZL&amp;_1E-SmnZ9XXoU.m8GWJP=3[!@j6!7g5#)9M?pu
+m7.&gt;B.SNMcOmPX&gt;OXg?(!D&quot;8^~&gt;
+!?m?uD#XJB&amp;_t2%fn@#Go66o-!.es;D!5[Eg]-_U.S!c\Eq00h3a@5PJS`JF!Bd%B@0N;dChu5,
+m9p0k4D\grT^?.gTKN3i!G&lt;R+~&gt;
+!@+H=M#RG^&amp;_t2%fn@#Go66o-!.frWM!9^*O8o7/5rhqrLnaqL9Mg:kLk1B)L]L/Om&lt;Af;98JBs
+Y3gH;Y&quot;OS,9&lt;RZ,!No)pL]N)PJ,~&gt;
+!?Q%S9`G)&quot;'5_SV(2[7W6#A@U!.dgp9]o(Q4X;:*3Ca!A&quot;#2&amp;K4b6:X9Zg$0.Wk'?&quot;`u4f9Ib/O
+OTfhV9M?pXm?%Ek.fN*B8039~&gt;
+!?mC!DZ9\D'5_SV(2[7W6#A@U!.f$=DWbmG2CU1B95AE_CFptr?%HmEDTZht4b&lt;!o&quot;bAgSDEWR&lt;
+T`p!1DJhUgm@aQ34oT=&quot;Bd&amp;!~&gt;
+!@+K&gt;MZ3Y`'5_SV(2[7W6#A@U!.g#YMWfp$K.SZ5;J,oc&quot;E#eC:kF7UJVqU-!DJI&gt;Y6BkYMMb)d
+mB6\P9T&quot;^$N:!eLN(j5.!J;VI~&gt;
+!?Q(T:%8479n?%%9a&quot;!L3]]V+9a!jG3^$/f9n?$]:$X2*:$X2*:$X2*9`[g,J,~&gt;
+!?mF&quot;Dt*gYDh2iiDZj*58P&lt;RmDZjrT8P*3=Dh2iKDsK@\DsK@\DsK@\DZOSrJ,~&gt;
+!@+Q@N:?n!N.HrON!5&amp;C&lt;`WXarepu3&gt;ZOmYJW,/=ac,OQrJ^&amp;0rJ^&amp;0rJUc2,Cf~&gt;
+!?Q'.9n?#i9n?#i9tsC'8KNB~&gt;
+!?mGRE.MtZE.MtZE5-&gt;mCE\3~&gt;
+!@+OoNId(?NId(?NPCGRL*M3~&gt;
+!?Ps+8V'Ha8V'Ha8\Rar*e4~&gt;
+!?m2KAq=QFAq=QFB&quot;hjW+b0~&gt;
+!@+1eIXus!IXus!I_L72,Cf~&gt;
+!$6\PJNA?CJNA?C]fH-7J,~&gt;
+!$QnbJOtDaJOtDa]h&amp;2IJ,~&gt;
+!$d%qJQ@&gt;&amp;JQ@&gt;&amp;]iG+XJ,~&gt;
+!B:&amp;XgcPN9rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE&amp;u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!JcC&lt;$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rr5&quot;ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE&amp;e!SBPc~&gt;
-!BU8[lT&gt;+HrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&amp;R!Q6pI~&gt;
+!B0uWg,o&lt;7rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE&amp;u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!JcC&lt;$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rr5&quot;ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE&amp;a!REfW~&gt;
-!BC,Yk&lt;&amp;\DrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE&amp;P!Pp[E~&gt;
+!B'oVeN&lt;d2rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE&amp;u3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!JcC&lt;$JcE7[3WT0[rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rr5&quot;ZrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE&amp;]!QR0M~&gt;
-!BpJ^mlCIK!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!rrE'!rrE'!rrE&amp;K!P1.=~&gt;
+!B:&amp;Xgc&gt;H8!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE&amp;u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!s8MHffKF`~&gt;
-!BU8[lT,%G!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!rrE'!rrE'!s8LdS`&amp;E2~&gt;
+!B0uWg,]66!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE&amp;u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!s8M&lt;bcT6R~&gt;
-!BC,Yk;iVC!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!rrE'!rrE'!s8L^Q_)?f~&gt;
+!B'oVeN*^1!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnSirrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE&amp;u3ro9\rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!s8M0^a#JS~&gt;
-!BpJ^n&amp;PJ.!&lt;2uu!6P9@!.k0$s+13[rr&lt;&amp;@s8N)urr&lt;&amp;@s8N)umfD'(J,~&gt;
-!BU8[lc9&amp;*!&lt;2uu!6P9@!.k0$s+13[rr&lt;&amp;@s8N)urr&lt;&amp;@s8N)ulN,&lt;mJ,~&gt;
-!BC,YkK!W&amp;!&lt;2uu!6P9@!.k0$s+13[rr&lt;&amp;@s8N)urr&lt;&amp;@s8N)uk5iU_J,~&gt;
-!BpJ^mf3@es&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!rrE'!rrE'!s8LOL\i#!~&gt;
+!B:&amp;XgrKHp!&lt;2uu!6P9@!.k0$s+13[rr&lt;&amp;@s8N)urr&lt;&amp;@s8N)ug]&gt;&gt;PJ,~&gt;
+!B0uWg;j6n!&lt;2uu!6P9@!.k0$s+13[rr&lt;&amp;@s8N)urr&lt;&amp;@s8N)ug&amp;]#JJ,~&gt;
+!B'oVe]7^i!&lt;2uu!6P9@!.k0$s+13[rr&lt;&amp;@s8N)urr&lt;&amp;@s8N)ueH*6=J,~&gt;
+!B:&amp;Xg].?Rs&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE)u!!*&amp;umfD'(J,~&gt;
-!BU8[lMpqas&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!rrE)u!!*&amp;ug]&gt;&gt;PJ,~&gt;
+!B0uWg&amp;M-Ps&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE)u!!*&amp;ulN,&lt;mJ,~&gt;
-!BC,Yk5YM]s&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!rrE)u!!*&amp;ug&amp;]#JJ,~&gt;
+!B'oVeGoUKs&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE)u!!*&amp;uk5iU_J,~&gt;
-!BpJ^ml:=IrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&amp;ueH*6=J,~&gt;
+!B:&amp;Xgc5&lt;6rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)rd!SBPc~&gt;
-!BU8[lT&quot;nErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rQ!Q6pI~&gt;
+!B0uWg,T*4rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)r`!REfW~&gt;
-!BC,Yk;`JArrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rO!Pp[E~&gt;
+!B'oVeN!R/rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)r\!QR0M~&gt;
-!BpJ^mf3@es&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rJ!P1.=~&gt;
+!B:&amp;Xg].?Rs&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE)u!!*&amp;umfD'(J,~&gt;
-!BU8[lMpqas&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!rrE)u!!*&amp;ug]&gt;&gt;PJ,~&gt;
+!B0uWg&amp;M-Ps&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE)u!!*&amp;ulN,&lt;mJ,~&gt;
-!BC,Yk5YM]s&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!rrE)u!!*&amp;ug&amp;]#JJ,~&gt;
+!B'oVeGoUKs&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE)u!!*&amp;uk5iU_J,~&gt;
-!BpJ^ml:=IrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE)u!!*&amp;ueH*6=J,~&gt;
+!B:&amp;Xgc5&lt;6rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)rd!SBPc~&gt;
-!BU8[lT&quot;nErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rQ!Q6pI~&gt;
+!B0uWg,T*4rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)r`!REfW~&gt;
-!BC,Yk;`JArrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rO!Pp[E~&gt;
+!B'oVeN!R/rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)r\!QR0M~&gt;
-!BpJ^mf3@errE-&quot;p&amp;G[(!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW!T2!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rJ!P1.=~&gt;
+!B:&amp;Xg].?RrrE-&quot;p&amp;G[(!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW!T2!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
 rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E&quot;Rs8E#Rs8N)V
 s8N(Ms+11NrrE&amp;u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!s8E#trr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;&lt;#u!&lt;&lt;&amp;e!SBPc~&gt;
-!BU8[lMpqarrE-&quot;p&amp;G[(!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW!T2!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
+!&lt;3'!!&lt;&lt;#u!&lt;&lt;&amp;R!Q6pI~&gt;
+!B0uWg&amp;M-PrrE-&quot;p&amp;G[(!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW!T2!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
 rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E&quot;Rs8E#Rs8N)V
 s8N(Ms+11NrrE&amp;u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!s8E#trr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;&lt;#u!&lt;&lt;&amp;a!REfW~&gt;
-!BC,Yk5YM]rrE-&quot;p&amp;G[(!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW!T2!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
+!&lt;3'!!&lt;&lt;#u!&lt;&lt;&amp;P!Pp[E~&gt;
+!B'oVeGoUKrrE-&quot;p&amp;G[(!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW!T2!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
 rr3!!s82iss82j,rrE'!rrE'!rrE'!rrE)s!##;3rrE'!rrE'!rrE'!rrE'!s8E&quot;Rs8E#Rs8N)V
 s8N(Ms+11NrrE&amp;u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!s8E#trr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;&lt;#u!&lt;&lt;&amp;]!QR0M~&gt;
-!BpJ^mfrdlrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!%
+!&lt;3'!!&lt;&lt;#u!&lt;&lt;&amp;K!P1.=~&gt;
+!B:&amp;Xg]mcYrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!%
 !&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#uM&gt;mPU
 rr2rul2U\^rr;oss8N'!lMghap](6nli6qas8W#ti;WcWlMpe_m/I%cJcG9?2ZWjXrrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urpKm?4b*~&gt;
-!BU8[lN[@hrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!%
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urnIOm2h1~&gt;
+!B0uWg'7QWrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!%
 !&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#uM&gt;mPU
 rr2rul2U\^rr;oss8N'!lMghap](6nli6qas8W#ti;WcWlMpe_m/I%cJcG9?2ZWjXrrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urp'U23e.~&gt;
-!BC,Yk6CqdrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!%
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urn7Ch2Lk~&gt;
+!B'oVeHZ$RrrE'!s7cR*rrE'!rrE'!rrE'!rrE'!s82j0rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!%
 !&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#uM&gt;mPU
 rr2rul2U\^rr;oss8N'!lMghap](6nli6qas8W#ti;WcWlMpe_m/I%cJcG9?2ZWjXrrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#uroX=&amp;3.L~&gt;
-!BpJ^mf3@errE-&quot;qu?fu!&lt;&lt;#u%fZP/!&lt;3'!!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;&lt;#u
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urm_%\21P~&gt;
+!B:&amp;Xg].?RrrE-&quot;qu?fu!&lt;&lt;#u%fZP/!&lt;3'!!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;&lt;#u
 rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U
 !;uis!9sL`!;c]q!&lt;2uu!:'Ra!;HNn!:'Ua!&lt;)ot!8meV!9a@^!:9^c!.k1@rr&lt;&amp;us&quot;aZT!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;umfD'(J,~&gt;
-!BU8[lMpqarrE-&quot;qu?fu!&lt;&lt;#u%fZP/!&lt;3'!!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;&lt;#u
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ug]&gt;&gt;PJ,~&gt;
+!B0uWg&amp;M-PrrE-&quot;qu?fu!&lt;&lt;#u%fZP/!&lt;3'!!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;&lt;#u
 rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U
 !;uis!9sL`!;c]q!&lt;2uu!:'Ra!;HNn!:'Ua!&lt;)ot!8meV!9a@^!:9^c!.k1@rr&lt;&amp;us&quot;aZT!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ulN,&lt;mJ,~&gt;
-!BC,Yk5YM]rrE-&quot;qu?fu!&lt;&lt;#u%fZP/!&lt;3'!!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;&lt;#u
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ug&amp;]#JJ,~&gt;
+!B'oVeGoUKrrE-&quot;qu?fu!&lt;&lt;#u%fZP/!&lt;3'!!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;&lt;#u
 rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U
 !;uis!9sL`!;c]q!&lt;2uu!:'Ra!;HNn!:'Ua!&lt;)ot!8meV!9a@^!:9^c!.k1@rr&lt;&amp;us&quot;aZT!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;uk5iU_J,~&gt;
-!BpJ^mfrdlrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ueH*6=J,~&gt;
+!B:&amp;Xg]mcYrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
 rrE)u!&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#uMZ3YVr;Q`sl2L_`rr2rurr2rurr2rulMghapAY*mlMgncrrE&amp;u!!(&quot;&lt;!W`6#JcFO*2ZWjX
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urpKm?
-4b*~&gt;
-!BU8[lN[@hrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urnIOm
+2h1~&gt;
+!B0uWg'7QWrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
 rrE)u!&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#uMZ3YVr;Q`sl2L_`rr2rurr2rurr2rulMghapAY*mlMgncrrE&amp;u!!(&quot;&lt;!W`6#JcFO*2ZWjX
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urp'U2
-3e.~&gt;
-!BC,Yk6CqdrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urn7Ch
+2Lk~&gt;
+!B'oVeHZ$RrrE'!s8E!6rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!rrE)u!!rT)rrE'!
 rrE)u!&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#uMZ3YVr;Q`sl2L_`rr2rurr2rurr2rulMghapAY*mlMgncrrE&amp;u!!(&quot;&lt;!W`6#JcFO*2ZWjX
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#uroX=&amp;
-3.L~&gt;
-!BpJ^mf3@errE-&quot;qu@l&gt;!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu?s$!&lt;3'!!&lt;&lt;#u
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urm_%\
+21P~&gt;
+!B:&amp;Xg].?RrrE-&quot;qu@l&gt;!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu?s$!&lt;3'!!&lt;&lt;#u
 rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U
 !;uis!9sL`!&lt;2uu!&lt;2uu!&lt;3!!!&lt;;utqu?Tpqu?KmqYpNqq&gt;^Bn!WN/prrN3#!&lt;2uu!;ulq!;ulr
 !&lt;3#t!;QTn!;lfr!!*&amp;t!;6?n!&lt;3&amp;ss8E#us8E#rs8E#os8;rrs8N''rr&lt;'!rr&lt;%Wrr&lt;&amp;us&quot;aZT
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bS
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;umfD'(
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ug]&gt;&gt;P
 J,~&gt;
-!BU8[lMpqarrE-&quot;qu@l&gt;!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu?s$!&lt;3'!!&lt;&lt;#u
+!B0uWg&amp;M-PrrE-&quot;qu@l&gt;!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu?s$!&lt;3'!!&lt;&lt;#u
 rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U
 !;uis!9sL`!&lt;2uu!&lt;2uu!&lt;3!!!&lt;;utqu?Tpqu?KmqYpNqq&gt;^Bn!WN/prrN3#!&lt;2uu!;ulq!;ulr
 !&lt;3#t!;QTn!;lfr!!*&amp;t!;6?n!&lt;3&amp;ss8E#us8E#rs8E#os8;rrs8N''rr&lt;'!rr&lt;%Wrr&lt;&amp;us&quot;aZT
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bS
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ulN,&lt;m
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ug&amp;]#J
 J,~&gt;
-!BC,Yk5YM]rrE-&quot;qu@l&gt;!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu?s$!&lt;3'!!&lt;&lt;#u
+!B'oVeGoUKrrE-&quot;qu@l&gt;!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu?s$!&lt;3'!!&lt;&lt;#u
 rr2rurr3!!s82iss82j.rrE'!rrE'!rrE'!rrE'!s8E!2rrE'!rrE'!rrE'!rrE'!rrE)u!/^^U
 !;uis!9sL`!&lt;2uu!&lt;2uu!&lt;3!!!&lt;;utqu?Tpqu?KmqYpNqq&gt;^Bn!WN/prrN3#!&lt;2uu!;ulq!;ulr
 !&lt;3#t!;QTn!;lfr!!*&amp;t!;6?n!&lt;3&amp;ss8E#us8E#rs8E#os8;rrs8N''rr&lt;'!rr&lt;%Wrr&lt;&amp;us&quot;aZT
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bS
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;uk5iU_
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ueH*6=
 J,~&gt;
-!BpJ^mfrdlrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+!B:&amp;Xg]mcYrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
 rrE)u!&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#uMZ3YVr;Q`sl2L_`rr2rurr2rurr;uurVlitrVlitrVlitqYpNqmf*7erVultq#:Nus8N*!
 rrE#t!!)ut!!)rs!!)rs!!)]l!!)lqrrE#t!!)cn!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)ut
 rrE*!rrE*!!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;&lt;#urpKm?4b*~&gt;
-!BU8[lN[@hrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+!&lt;3'!!&lt;3'!!&lt;&lt;#urnIOm2h1~&gt;
+!B0uWg'7QWrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
 rrE)u!&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#uMZ3YVr;Q`sl2L_`rr2rurr2rurr;uurVlitrVlitrVlitqYpNqmf*7erVultq#:Nus8N*!
 rrE#t!!)ut!!)rs!!)rs!!)]l!!)lqrrE#t!!)cn!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)ut
 rrE*!rrE*!!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;&lt;#urp'U23e.~&gt;
-!BC,Yk6CqdrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
+!&lt;3'!!&lt;3'!!&lt;&lt;#urn7Ch2Lk~&gt;
+!B'oVeHZ$RrrE'!s8E!BrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!rT)rrE'!
 rrE)u!&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rW!N0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!qu@B0!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#uMZ3YVr;Q`sl2L_`rr2rurr2rurr;uurVlitrVlitrVlitqYpNqmf*7erVultq#:Nus8N*!
 rrE#t!!)ut!!)rs!!)rs!!)]l!!)lqrrE#t!!)cn!!*#u!!)rs!!)ut!!)ip!!)lq!!)ut!!)ut
 rrE*!rrE*!!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;&lt;#uroX=&amp;3.L~&gt;
-!BpJ^mf3@errE-&quot;qu?`srW!$&quot;!&lt;;rs!&lt;;rs!ri9#qu?m&quot;!&lt;3'!p&amp;G0o!&lt;&lt;#urr2rurr3!!s82is
+!&lt;3'!!&lt;3'!!&lt;&lt;#urm_%\21P~&gt;
+!B:&amp;Xg].?RrrE-&quot;qu?`srW!$&quot;!&lt;;rs!&lt;;rs!ri9#qu?m&quot;!&lt;3'!p&amp;G0o!&lt;&lt;#urr2rurr3!!s82is
 s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j&quot;rrE'!s8E&quot;Trr&lt;&amp;srr&lt;&amp;_rrrK'!&lt;3'!!&lt;)ot
 !;uis!;QQo!;c]q!:Kje!;uis!;QQu!&lt;&lt;'!s8N)urr&lt;&amp;rrr&lt;&amp;trrrK'rrE*!!;6?l!;c]q!;uis
 !;HKn!&lt;2uu!;lcu!&lt;&lt;'!q#:&lt;oqu6Wrqu6Wrrr2rurr2rurr2ruN;ikXrr4bSrrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;2uu!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rVururpKm?4b*~&gt;
-!BU8[lMpqarrE-&quot;qu?`srW!$&quot;!&lt;;rs!&lt;;rs!ri9#qu?m&quot;!&lt;3'!p&amp;G0o!&lt;&lt;#urr2rurr3!!s82is
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rVururnIOm2h1~&gt;
+!B0uWg&amp;M-PrrE-&quot;qu?`srW!$&quot;!&lt;;rs!&lt;;rs!ri9#qu?m&quot;!&lt;3'!p&amp;G0o!&lt;&lt;#urr2rurr3!!s82is
 s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j&quot;rrE'!s8E&quot;Trr&lt;&amp;srr&lt;&amp;_rrrK'!&lt;3'!!&lt;)ot
 !;uis!;QQo!;c]q!:Kje!;uis!;QQu!&lt;&lt;'!s8N)urr&lt;&amp;rrr&lt;&amp;trrrK'rrE*!!;6?l!;c]q!;uis
 !;HKn!&lt;2uu!;lcu!&lt;&lt;'!q#:&lt;oqu6Wrqu6Wrrr2rurr2rurr2ruN;ikXrr4bSrrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;2uu!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rVururp'U23e.~&gt;
-!BC,Yk5YM]rrE-&quot;qu?`srW!$&quot;!&lt;;rs!&lt;;rs!ri9#qu?m&quot;!&lt;3'!p&amp;G0o!&lt;&lt;#urr2rurr3!!s82is
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rVururn7Ch2Lk~&gt;
+!B'oVeGoUKrrE-&quot;qu?`srW!$&quot;!&lt;;rs!&lt;;rs!ri9#qu?m&quot;!&lt;3'!p&amp;G0o!&lt;&lt;#urr2rurr3!!s82is
 s82iurrE)q!!`H'rrE'!s8E!$rrE'!s8Duus82j&quot;rrE'!s8E&quot;Trr&lt;&amp;srr&lt;&amp;_rrrK'!&lt;3'!!&lt;)ot
 !;uis!;QQo!;c]q!:Kje!;uis!;QQu!&lt;&lt;'!s8N)urr&lt;&amp;rrr&lt;&amp;trrrK'rrE*!!;6?l!;c]q!;uis
 !;HKn!&lt;2uu!;lcu!&lt;&lt;'!q#:&lt;oqu6Wrqu6Wrrr2rurr2rurr2ruN;ikXrr4bSrrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;2uu!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rVururoX=&amp;3.L~&gt;
-!BpJ^mfrdlrrE'!s7u]srrE)s!!&lt;0#s8E!$rrE'!s82j&quot;rrE'!s7cQsrrE'!s8E#trriE&amp;!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rVururm_%\21P~&gt;
+!B:&amp;Xg]mcYrrE'!s7u]srrE)s!!&lt;0#s8E!$rrE'!s82j&quot;rrE'!s7cQsrrE'!s8E#trriE&amp;!&lt;3'!
 p](Bq!&lt;;fo&quot;TJK%!&lt;;rs&quot;TJK%!&lt;;fo&quot;TJK%!&lt;&lt;#uMZ3YVr;Q`skl1herrE'!rrE#t!!)rs!!)ut
 qZ-Km!!)EdrW)Wk!!*#u!W`6#rr;corVm'%s8N*!rrD`l!!)lq!!)rs!!)fo!!)rs!!)orrrDfn
 !!)or!!)or!!*#u!!*#u!!*#u!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urpKm?4b*~&gt;
-!BU8[lN[@hrrE'!s7u]srrE)s!!&lt;0#s8E!$rrE'!s82j&quot;rrE'!s7cQsrrE'!s8E#trriE&amp;!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urnIOm2h1~&gt;
+!B0uWg'7QWrrE'!s7u]srrE)s!!&lt;0#s8E!$rrE'!s82j&quot;rrE'!s7cQsrrE'!s8E#trriE&amp;!&lt;3'!
 p](Bq!&lt;;fo&quot;TJK%!&lt;;rs&quot;TJK%!&lt;;fo&quot;TJK%!&lt;&lt;#uMZ3YVr;Q`skl1herrE'!rrE#t!!)rs!!)ut
 qZ-Km!!)EdrW)Wk!!*#u!W`6#rr;corVm'%s8N*!rrD`l!!)lq!!)rs!!)fo!!)rs!!)orrrDfn
 !!)or!!)or!!*#u!!*#u!!*#u!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urp'U23e.~&gt;
-!BC,Yk6CqdrrE'!s7u]srrE)s!!&lt;0#s8E!$rrE'!s82j&quot;rrE'!s7cQsrrE'!s8E#trriE&amp;!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urn7Ch2Lk~&gt;
+!B'oVeHZ$RrrE'!s7u]srrE)s!!&lt;0#s8E!$rrE'!s82j&quot;rrE'!s7cQsrrE'!s8E#trriE&amp;!&lt;3'!
 p](Bq!&lt;;fo&quot;TJK%!&lt;;rs&quot;TJK%!&lt;;fo&quot;TJK%!&lt;&lt;#uMZ3YVr;Q`skl1herrE'!rrE#t!!)rs!!)ut
 qZ-Km!!)EdrW)Wk!!*#u!W`6#rr;corVm'%s8N*!rrD`l!!)lq!!)rs!!)fo!!)rs!!)orrrDfn
 !!)or!!)or!!*#u!!*#u!!*#u!!%rW2ZWjXrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!s8E#ts#0rX!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#uroX=&amp;3.L~&gt;
-!BpJ^mf3@errE-&quot;p](Bq!&lt;;rs!&lt;&lt;#u#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt!!*#u
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urm_%\21P~&gt;
+!B:&amp;Xg].?RrrE-&quot;p](Bq!&lt;;rs!&lt;&lt;#u#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt!!*#u
 !&lt;E/n!!*&amp;s!!*&amp;s!!N&lt;%rrE)u!!N&lt;%rrE)s!!*&amp;s!!&lt;0#s8E&quot;Trr&lt;&amp;srr&lt;&amp;_rrrK'!&lt;3'!!&lt;)ot
 !;uis!&lt;2uu!;uis!;c]q!:'Ua!;HKn!&lt;3!&quot;!&lt;3&amp;urr&lt;&amp;mrrrK'!&lt;3'!!;6?l!;c]q!;uis!;QTj
 !;lfr!;HKn!;lcr!;lcr!&lt;2uu!&lt;2uu!&lt;2uu!0$pX!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MHffKF`~&gt;
-!BU8[lMpqarrE-&quot;p](Bq!&lt;;rs!&lt;&lt;#u#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt!!*#u
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8LdS`&amp;E2~&gt;
+!B0uWg&amp;M-PrrE-&quot;p](Bq!&lt;;rs!&lt;&lt;#u#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt!!*#u
 !&lt;E/n!!*&amp;s!!*&amp;s!!N&lt;%rrE)u!!N&lt;%rrE)s!!*&amp;s!!&lt;0#s8E&quot;Trr&lt;&amp;srr&lt;&amp;_rrrK'!&lt;3'!!&lt;)ot
 !;uis!&lt;2uu!;uis!;c]q!:'Ua!;HKn!&lt;3!&quot;!&lt;3&amp;urr&lt;&amp;mrrrK'!&lt;3'!!;6?l!;c]q!;uis!;QTj
 !;lfr!;HKn!;lcr!;lcr!&lt;2uu!&lt;2uu!&lt;2uu!0$pX!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M&lt;bcT6R~&gt;
-!BC,Yk5YM]rrE-&quot;p](Bq!&lt;;rs!&lt;&lt;#u#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt!!*#u
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8L^Q_)?f~&gt;
+!B'oVeGoUKrrE-&quot;p](Bq!&lt;;rs!&lt;&lt;#u#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt!!*#u
 !&lt;E/n!!*&amp;s!!*&amp;s!!N&lt;%rrE)u!!N&lt;%rrE)s!!*&amp;s!!&lt;0#s8E&quot;Trr&lt;&amp;srr&lt;&amp;_rrrK'!&lt;3'!!&lt;)ot
 !;uis!&lt;2uu!;uis!;c]q!:'Ua!;HKn!&lt;3!&quot;!&lt;3&amp;urr&lt;&amp;mrrrK'!&lt;3'!!;6?l!;c]q!;uis!;QTj
 !;lfr!;HKn!;lcr!;lcr!&lt;2uu!&lt;2uu!&lt;2uu!0$pX!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M0^a#JS~&gt;
-!BpJ^mfrdlrrE'!s8E!(rrE'!rrE'!s7u^&quot;rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8LOL\i#!~&gt;
+!B:&amp;Xg]mcYrrE'!s8E!(rrE'!rrE'!s7u^&quot;rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
 rriE&amp;!&lt;3'!rW!$&quot;!&lt;&lt;#u!&lt;;rs!ri9#rW!*$!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%iU!!)rs
 !!)6_&quot;p&quot;Z'rrE'!rVlitr;Q`srr2rur;Q`sqYpNqmf*7er;Q`sq#:&lt;orVultrr2rupAY&lt;srrE'!
 rrD`l!!)lq!!)rs!!)ip!!)lq!!)ut!s&amp;B$!;QQo!;lcr!;lcr!&lt;2uu!&lt;2uu!&lt;2uu!/pk9!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt2ZWjX
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tmfD'(
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tg]&gt;&gt;P
 J,~&gt;
-!BU8[lN[@hrrE'!s8E!(rrE'!rrE'!s7u^&quot;rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+!B0uWg'7QWrrE'!s8E!(rrE'!rrE'!s7u^&quot;rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
 rriE&amp;!&lt;3'!rW!$&quot;!&lt;&lt;#u!&lt;;rs!ri9#rW!*$!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%iU!!)rs
 !!)6_&quot;p&quot;Z'rrE'!rVlitr;Q`srr2rur;Q`sqYpNqmf*7er;Q`sq#:&lt;orVultrr2rupAY&lt;srrE'!
 rrD`l!!)lq!!)rs!!)ip!!)lq!!)ut!s&amp;B$!;QQo!;lcr!;lcr!&lt;2uu!&lt;2uu!&lt;2uu!/pk9!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt2ZWjX
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tlN,&lt;m
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tg&amp;]#J
 J,~&gt;
-!BC,Yk6CqdrrE'!s8E!(rrE'!rrE'!s7u^&quot;rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+!B'oVeHZ$RrrE'!s8E!(rrE'!rrE'!s7u^&quot;rrE'!rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
 rriE&amp;!&lt;3'!rW!$&quot;!&lt;&lt;#u!&lt;;rs!ri9#rW!*$!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%iU!!)rs
 !!)6_&quot;p&quot;Z'rrE'!rVlitr;Q`srr2rur;Q`sqYpNqmf*7er;Q`sq#:&lt;orVultrr2rupAY&lt;srrE'!
 rrD`l!!)lq!!)rs!!)ip!!)lq!!)ut!s&amp;B$!;QQo!;lcr!;lcr!&lt;2uu!&lt;2uu!&lt;2uu!/pk9!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt2ZWjX
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tk5iU_
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#teH*6=
 J,~&gt;
-!BpJ^mf3@errE-&quot;qu@$&amp;!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+!B:&amp;Xg].?RrrE-&quot;qu@$&amp;!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;m!!N&lt;%rrE)u!!N&lt;%rrE)s!!&lt;0#s8E!&quot;rrE)u!/UXT!&lt;2uu!;c`q!:Tpf
 !&lt;2uu!;uis!;uis!&lt;2uu!&lt;)rt!;c]q!&lt;)ot!;$6j!&lt;)ot!;QQo!&lt;)rt!&lt;)ot!&lt;)rt!;uis!&lt;2uu
 !;-9k!;c]q!;uis!;ZWp!;c]q!&lt;2uu!&lt;)ot!;ZWp!;c]q!&lt;)ot!&lt;)ot!&lt;2uu!&lt;2uu!0$pX!&lt;3!S
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt!!*#u
-1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8MHf
-fKF`~&gt;
-!BU8[lMpqarrE-&quot;qu@$&amp;!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8LdS
+`&amp;E2~&gt;
+!B0uWg&amp;M-PrrE-&quot;qu@$&amp;!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;m!!N&lt;%rrE)u!!N&lt;%rrE)s!!&lt;0#s8E!&quot;rrE)u!/UXT!&lt;2uu!;c`q!:Tpf
 !&lt;2uu!;uis!;uis!&lt;2uu!&lt;)rt!;c]q!&lt;)ot!;$6j!&lt;)ot!;QQo!&lt;)rt!&lt;)ot!&lt;)rt!;uis!&lt;2uu
 !;-9k!;c]q!;uis!;ZWp!;c]q!&lt;2uu!&lt;)ot!;ZWp!;c]q!&lt;)ot!&lt;)ot!&lt;2uu!&lt;2uu!0$pX!&lt;3!S
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt!!*#u
-1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M&lt;b
-cT6R~&gt;
-!BC,Yk5YM]rrE-&quot;qu@$&amp;!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8L^Q
+_)?f~&gt;
+!B'oVeGoUKrrE-&quot;qu@$&amp;!&lt;3'!!&lt;3'!qu@$&amp;!&lt;3'!!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;m!!N&lt;%rrE)u!!N&lt;%rrE)s!!&lt;0#s8E!&quot;rrE)u!/UXT!&lt;2uu!;c`q!:Tpf
 !&lt;2uu!;uis!;uis!&lt;2uu!&lt;)rt!;c]q!&lt;)ot!;$6j!&lt;)ot!;QQo!&lt;)rt!&lt;)ot!&lt;)rt!;uis!&lt;2uu
 !;-9k!;c]q!;uis!;ZWp!;c]q!&lt;2uu!&lt;)ot!;ZWp!;c]q!&lt;)ot!&lt;)ot!&lt;2uu!&lt;2uu!0$pX!&lt;3!S
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt!!*#u
-1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8M0^
-a#JS~&gt;
-!BpJ^mfrdlrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8Duus8LOL
+\i#!~&gt;
+!B:&amp;Xg]mcYrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
 !&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rVurup&amp;G6q!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%cSrW)corrDNf
 !!*#u!!)utrW)rtrW)rtr;ZitrW)iqr;cEg!&lt;E/u!;QTm!&lt;2uu!;ulq!;c]q!&lt;2uu!;HNi!&lt;3#t
 !&lt;3#t!;lfp!&lt;3#s!!*&amp;u!&lt;&lt;)u!&lt;)ro!;ulq!&lt;)rs!&lt;&lt;*!!&lt;&lt;*!!0$q:!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt2ZWjXrrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tmfD'(J,~&gt;
-!BU8[lN[@hrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tg]&gt;&gt;PJ,~&gt;
+!B0uWg'7QWrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
 !&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rVurup&amp;G6q!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%cSrW)corrDNf
 !!*#u!!)utrW)rtrW)rtr;ZitrW)iqr;cEg!&lt;E/u!;QTm!&lt;2uu!;ulq!;c]q!&lt;2uu!;HNi!&lt;3#t
 !&lt;3#t!;lfp!&lt;3#s!!*&amp;u!&lt;&lt;)u!&lt;)ro!;ulq!&lt;)rs!&lt;&lt;*!!&lt;&lt;*!!0$q:!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt2ZWjXrrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tlN,&lt;mJ,~&gt;
-!BC,Yk6CqdrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tg&amp;]#JJ,~&gt;
+!B'oVeHZ$RrrE'!s8E!*rrE'!rrE'!rrE)s!!`H'rrE'!s82j$rrE'!rrE)u!!rT)rrE'!rrE)u
 !&lt;3!%!&lt;3'!!&lt;&lt;#u!ri9#rVurup&amp;G6q!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%cSrW)corrDNf
 !!*#u!!)utrW)rtrW)rtr;ZitrW)iqr;cEg!&lt;E/u!;QTm!&lt;2uu!;ulq!;c]q!&lt;2uu!;HNi!&lt;3#t
 !&lt;3#t!;lfp!&lt;3#s!!*&amp;u!&lt;&lt;)u!&lt;)ro!;ulq!&lt;)rs!&lt;&lt;*!!&lt;&lt;*!!0$q:!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rt2ZWjXrrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#tk5iU_J,~&gt;
-!BpJ^mf3@errE-&quot;qu@*(!&lt;3'!!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s8E#teH*6=J,~&gt;
+!B:&amp;Xg].?RrrE-&quot;qu@*(!&lt;3'!!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;u!&quot;Al-rrE'!rrE'!rrE)u!!N&lt;%rrE)s!!&lt;0#s8E!&quot;rrE)u!.k0$s+13[
 rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u
 rr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
-!!*&amp;umfD'(J,~&gt;
-!BU8[lMpqarrE-&quot;qu@*(!&lt;3'!!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+!!*&amp;ug]&gt;&gt;PJ,~&gt;
+!B0uWg&amp;M-PrrE-&quot;qu@*(!&lt;3'!!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;u!&quot;Al-rrE'!rrE'!rrE)u!!N&lt;%rrE)s!!&lt;0#s8E!&quot;rrE)u!.k0$s+13[
 rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u
 rr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
-!!*&amp;ulN,&lt;mJ,~&gt;
-!BC,Yk5YM]rrE-&quot;qu@*(!&lt;3'!!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+!!*&amp;ug&amp;]#JJ,~&gt;
+!B'oVeGoUKrrE-&quot;qu@*(!&lt;3'!!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;u!&quot;Al-rrE'!rrE'!rrE)u!!N&lt;%rrE)s!!&lt;0#s8E!&quot;rrE)u!.k0$s+13[
 rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u
 rr2rurr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
-!!*&amp;uk5iU_J,~&gt;
-!BpJ^mfrdlrrE'!s8E!*rrE'!rrE'!rrE)q!!N&lt;%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+!!*&amp;ueH*6=J,~&gt;
+!B:&amp;Xg]mcYrrE'!s8E!*rrE'!rrE'!rrE)q!!N&lt;%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
 rriE&amp;!&lt;3'!rW!$&quot;!&lt;&lt;#u!&lt;;rs$NC,+!&lt;3'!!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%NLJcC&lt;$
 \GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
 !&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-rW)rd!SBPc~&gt;
-!BU8[lN[@hrrE'!s8E!*rrE'!rrE'!rrE)q!!N&lt;%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rW)rQ!Q6pI~&gt;
+!B0uWg'7QWrrE'!s8E!*rrE'!rrE'!rrE)q!!N&lt;%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
 rriE&amp;!&lt;3'!rW!$&quot;!&lt;&lt;#u!&lt;;rs$NC,+!&lt;3'!!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%NLJcC&lt;$
 \GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
 !&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-rW)r`!REfW~&gt;
-!BC,Yk6CqdrrE'!s8E!*rrE'!rrE'!rrE)q!!N&lt;%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
+rW)rO!Pp[E~&gt;
+!B'oVeHZ$RrrE'!s8E!*rrE'!rrE'!rrE)q!!N&lt;%rrE)s!!`H'rrE'!s8E!(rrE'!rrE'!s8E#t
 rriE&amp;!&lt;3'!rW!$&quot;!&lt;&lt;#u!&lt;;rs$NC,+!&lt;3'!!&lt;3'!qu?m&quot;!&lt;3'!rW!$&quot;!&lt;;rs!ri9#rW%NLJcC&lt;$
 \GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u
 !&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-rW)r\!QR0M~&gt;
-!BpJ^mf3@errE-&quot;qu?fu!&lt;&lt;#u!ri9#rVuruqu?m&quot;!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+rW)rJ!P1.=~&gt;
+!B:&amp;Xg].?RrrE-&quot;qu?fu!&lt;&lt;#u!ri9#rVuruqu?m&quot;!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;s!!&lt;0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13[rr&lt;&amp;u
 s&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
 rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;u
-mfD'(J,~&gt;
-!BU8[lMpqarrE-&quot;qu?fu!&lt;&lt;#u!ri9#rVuruqu?m&quot;!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+g]&gt;&gt;PJ,~&gt;
+!B0uWg&amp;M-PrrE-&quot;qu?fu!&lt;&lt;#u!ri9#rVuruqu?m&quot;!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;s!!&lt;0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13[rr&lt;&amp;u
 s&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
 rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;u
-lN,&lt;mJ,~&gt;
-!BC,Yk5YM]rrE-&quot;qu?fu!&lt;&lt;#u!ri9#rVuruqu?m&quot;!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
+g&amp;]#JJ,~&gt;
+!B'oVeGoUKrrE-&quot;qu?fu!&lt;&lt;#u!ri9#rVuruqu?m&quot;!&lt;3'!rW!0&amp;!&lt;3'!!&lt;;rs#6+]'!&lt;3'!rW)rt
 !!*#u!&lt;E/t!!*&amp;s!!*&amp;s!!&lt;0#s8E!$rrE'!s8E!$rrE'!s82iss82iurrE)u!.k0$s+13[rr&lt;&amp;u
 s&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2ru
 rr4bSrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;u
-k5iU_J,~&gt;
-!BpJ^mfrdlrrE'!s7cQqrrE)u!!&lt;0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&amp;!&lt;3'!
+eH*6=J,~&gt;
+!B:&amp;Xg]mcYrrE'!s7cQqrrE)u!!&lt;0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&amp;!&lt;3'!
 rW!$&quot;!&lt;&lt;#u!ri9#p](Hs!&lt;3'!qu?m&quot;!&lt;3'!p](Hs!&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rd!SBPc~&gt;
-!BU8[lN[@hrrE'!s7cQqrrE)u!!&lt;0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&amp;!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rQ!Q6pI~&gt;
+!B0uWg'7QWrrE'!s7cQqrrE)u!!&lt;0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&amp;!&lt;3'!
 rW!$&quot;!&lt;&lt;#u!ri9#p](Hs!&lt;3'!qu?m&quot;!&lt;3'!p](Hs!&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)r`!REfW~&gt;
-!BC,Yk6CqdrrE'!s7cQqrrE)u!!&lt;0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&amp;!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rO!Pp[E~&gt;
+!B'oVeHZ$RrrE'!s7cQqrrE)u!!&lt;0#s82iurrE)s!!`H'rrE'!s7u]urrE'!s8E#trriE&amp;!&lt;3'!
 rW!$&quot;!&lt;&lt;#u!ri9#p](Hs!&lt;3'!qu?m&quot;!&lt;3'!p](Hs!&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!
 rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)r\!QR0M~&gt;
-!BpJ^mf3@errE-&quot;p&amp;G*mqu?`squ?fu!&lt;;lq#6+]'!&lt;3'!qu?m&quot;!&lt;3'!rW)rt!!*#u!&lt;E/t!!*&amp;s
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!rW)rJ!P1.=~&gt;
+!B:&amp;Xg].?RrrE-&quot;p&amp;G*mqu?`squ?fu!&lt;;lq#6+]'!&lt;3'!qu?m&quot;!&lt;3'!rW)rt!!*#u!&lt;E/t!!*&amp;s
 !!&lt;0#s7u]urrE'!s7u]srrE)o!!N&lt;%rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;umfD'(J,~&gt;
-!BU8[lMpqarrE-&quot;p&amp;G*mqu?`squ?fu!&lt;;lq#6+]'!&lt;3'!qu?m&quot;!&lt;3'!rW)rt!!*#u!&lt;E/t!!*&amp;s
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ug]&gt;&gt;PJ,~&gt;
+!B0uWg&amp;M-PrrE-&quot;p&amp;G*mqu?`squ?fu!&lt;;lq#6+]'!&lt;3'!qu?m&quot;!&lt;3'!rW)rt!!*#u!&lt;E/t!!*&amp;s
 !!&lt;0#s7u]urrE'!s7u]srrE)o!!N&lt;%rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ulN,&lt;mJ,~&gt;
-!BC,Yk5YM]rrE-&quot;p&amp;G*mqu?`squ?fu!&lt;;lq#6+]'!&lt;3'!qu?m&quot;!&lt;3'!rW)rt!!*#u!&lt;E/t!!*&amp;s
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ug&amp;]#JJ,~&gt;
+!B'oVeGoUKrrE-&quot;p&amp;G*mqu?`squ?fu!&lt;;lq#6+]'!&lt;3'!qu?m&quot;!&lt;3'!rW)rt!!*#u!&lt;E/t!!*&amp;s
 !!&lt;0#s7u]urrE'!s7u]srrE)o!!N&lt;%rrE)u!.k0$s+13[rr&lt;&amp;us&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#urr2rurr4bSrrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;uk5iU_J,~&gt;
-!BpJ^ml:=IrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE)u!!*&amp;ueH*6=J,~&gt;
+!B:&amp;Xgc5&lt;6rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!I!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u$NC,+!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)rd!SBPc~&gt;
-!BU8[lT&quot;nErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rQ!Q6pI~&gt;
+!B0uWg,T*4rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!I!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u$NC,+!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)r`!REfW~&gt;
-!BC,Yk;`JArrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rO!Pp[E~&gt;
+!B'oVeN!R/rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!I!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u$NC,+!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)r\!QR0M~&gt;
-!BpJ^mf3@es&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rJ!P1.=~&gt;
+!B:&amp;Xg].?Rs&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&amp;rrE'!rrE'!
 s8E&quot;Ls+13$s1&amp;(/!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!s8Duus8MHffKF`~&gt;
-!BU8[lMpqas&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!s8Duus8LdS`&amp;E2~&gt;
+!B0uWg&amp;M-Ps&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&amp;rrE'!rrE'!
 s8E&quot;Ls+13$s1&amp;(/!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!s8Duus8M&lt;bcT6R~&gt;
-!BC,Yk5YM]s&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+rrE'!rrE'!s8Duus8L^Q_)?f~&gt;
+!B'oVeGoUKs&quot;aZT!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;&lt;#urr2rurr48ErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!s82j&amp;rrE'!rrE'!
 s8E&quot;Ls+13$s1&amp;(/!&lt;3!S!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!rW)rt!!*#u1B@FTrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
-rrE'!rrE'!s8Duus8M0^a#JS~&gt;
-!BpJ^ml:=IrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+rrE'!rrE'!s8Duus8LOL\i#!~&gt;
+!B:&amp;Xgc5&lt;6rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!I!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u$NC,+!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)rd!SBPc~&gt;
-!BU8[lT&quot;nErrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rQ!Q6pI~&gt;
+!B0uWg,T*4rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!I!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u$NC,+!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)r`!REfW~&gt;
-!BC,Yk;`JArrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rO!Pp[E~&gt;
+!B'oVeN!R/rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE)u!&lt;3!I!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;#u$NC,+!&lt;3'!
 !&lt;3'!rW%NLJcC&lt;$\GnJfrrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!rrE'!
 rrE'!rrE'!rrE)u!&lt;3!W!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!rW)r\!QR0M~&gt;
-!BpJ^mf&lt;Fga8l5&gt;!W`9#aT-nlJcC&lt;$\GlU1s8U1@rr3$&quot;s8U1@!&lt;&lt;&amp;e!SBPc~&gt;
-!BU8[lN%&quot;ca8l5&gt;!W`9#aT-nlJcC&lt;$\GlU1s8U1@rr3$&quot;s8U1@!&lt;&lt;&amp;a!REfW~&gt;
-!BC,Yk5bS_a8l5&gt;!W`9#aT-nlJcC&lt;$\GlU1s8U1@rr3$&quot;s8U1@!&lt;&lt;&amp;]!QR0M~&gt;
-!BpJ^mf&lt;C-!&lt;&lt;)&lt;!.k0$s+13[s2G'&lt;s2G'&lt;mfD'(J,~&gt;
-!BU8[lN$t)!&lt;&lt;)&lt;!.k0$s+13[s2G'&lt;s2G'&lt;lN,&lt;mJ,~&gt;
-!BC,Yk5bP%!&lt;&lt;)&lt;!.k0$s+13[s2G'&lt;s2G'&lt;k5iU_J,~&gt;
-!BpJ^mlCIK!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!rW)rJ!P1.=~&gt;
+!B:&amp;Xg]7ETa8l5&gt;!W`9#aT-nlJcC&lt;$\GlU1s8U1@rr3$&quot;s8U1@!&lt;&lt;&amp;R!Q6pI~&gt;
+!B0uWg&amp;V3Ra8l5&gt;!W`9#aT-nlJcC&lt;$\GlU1s8U1@rr3$&quot;s8U1@!&lt;&lt;&amp;P!Pp[E~&gt;
+!B'oVeH#[Ma8l5&gt;!W`9#aT-nlJcC&lt;$\GlU1s8U1@rr3$&quot;s8U1@!&lt;&lt;&amp;K!P1.=~&gt;
+!B:&amp;Xg]7Ao!&lt;&lt;)&lt;!.k0$s+13[s2G'&lt;s2G'&lt;g]&gt;&gt;PJ,~&gt;
+!B0uWg&amp;V/m!&lt;&lt;)&lt;!.k0$s+13[s2G'&lt;s2G'&lt;g&amp;]#JJ,~&gt;
+!B'oVeH#Wh!&lt;&lt;)&lt;!.k0$s+13[s2G'&lt;s2G'&lt;eH*6=J,~&gt;
+!B:&amp;Xgc&gt;H8!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3!Z!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3%Ms+13$s1&amp;(i!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3&amp;us#U5\!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;&amp;e!SBPc~&gt;
-!BU8[lT,%G!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;&amp;R!Q6pI~&gt;
+!B0uWg,]66!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3!Z!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3%Ms+13$s1&amp;(i!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3&amp;us#U5\!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;&amp;a!REfW~&gt;
-!BC,Yk;iVC!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;&amp;P!Pp[E~&gt;
+!B'oVeN*^1!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3!Z!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3%Ms+13$s1&amp;(i!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
 !&lt;3'!!&lt;3'!!&lt;3'!!&lt;3&amp;us#U5\!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!
-!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;&amp;]!QR0M~&gt;
-!BpJ^mstIi!.b-$!.b-h!&lt;2EffKF`~&gt;
-!BU8[l[]%e!.b-$!.b-h!&lt;29bcT6R~&gt;
-!BC,YkCEVa!.b-$!.b-h!&lt;2-^a#JS~&gt;
-!BpJ^mstIi!.b-$!.b-h!&lt;2EffKF`~&gt;
-!BU8[l[]%e!.b-$!.b-h!&lt;29bcT6R~&gt;
-!BC,YkCEVa!.b-$!.b-h!&lt;2-^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n&amp;GD*!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8MHffKF`~&gt;
-!BU8[lc/u&amp;!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8M&lt;bcT6R~&gt;
-!BC,YkJmQ&quot;!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8M0^a#JS~&gt;
-!BpJ^n(Rg?!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8MHffKF`~&gt;
-!BU8[le;C;!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8M&lt;bcT6R~&gt;
-!BC,YkM#t7!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8M0^a#JS~&gt;
-!BpJ^n*U/J!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8MHffKF`~&gt;
-!BU8[lg=`F!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8M0^a#JS~&gt;
-!BpJ^n*U/J!;uls!&lt;)rt!&lt;&lt;)u!!*&amp;t!;c`q!;lfo!;ulr!!*&amp;t!;lfp!;HNk!;ulr!!*&amp;t!&lt;)rn
-!;ulq!&lt;)rr!&lt;&lt;)u!!*&amp;u!!E6$!&lt;&lt;#urVu`prr;corVucqq&gt;^BnrVuis!&lt;;utJcC&lt;$JcDVIrpKm?
-4b*~&gt;
-!BU8[lg=`F!;uls!&lt;)rt!&lt;&lt;)u!!*&amp;t!;c`q!;lfo!;ulr!!*&amp;t!;lfp!;HNk!;ulr!!*&amp;t!&lt;)rn
-!;ulq!&lt;)rr!&lt;&lt;)u!!*&amp;u!!E6$!&lt;&lt;#urVu`prr;corVucqq&gt;^BnrVuis!&lt;;utJcC&lt;$JcDVIrp'U2
-3e.~&gt;
-!BC,YkO&amp;&lt;B!;uls!&lt;)rt!&lt;&lt;)u!!*&amp;t!;c`q!;lfo!;ulr!!*&amp;t!;lfp!;HNk!;ulr!!*&amp;t!&lt;)rn
-!;ulq!&lt;)rr!&lt;&lt;)u!!*&amp;u!!E6$!&lt;&lt;#urVu`prr;corVucqq&gt;^BnrVuis!&lt;;utJcC&lt;$JcDVIroX=&amp;
-3.L~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo
-s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nrmfD'(J,~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo
-s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nrlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo
-s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nrk5iU_J,~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m
+!&lt;3'!!&lt;3'!!&lt;3'!!&lt;3'!!&lt;&lt;&amp;K!P1.=~&gt;
+!B:&amp;XgjoHV!.b-$!.b-h!&lt;1aS`&amp;E2~&gt;
+!B0uWg496T!.b-$!.b-h!&lt;1[Q_)?f~&gt;
+!B'oVeU[^O!.b-$!.b-h!&lt;1LL\i#!~&gt;
+!B:&amp;XgjoHV!.b-$!.b-h!&lt;1aS`&amp;E2~&gt;
+!B0uWg496T!.b-$!.b-h!&lt;1[Q_)?f~&gt;
+!B'oVeU[^O!.b-$!.b-h!&lt;1LL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;XgrBBl!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8LdS`&amp;E2~&gt;
+!B0uWg;a0j!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8L^Q_)?f~&gt;
+!B'oVe].Xe!;QTo!8[\T!:Bg`!7LoI!;?Hm!.k0$s+131s8LOL\i#!~&gt;
+!B:&amp;XgtMf,!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8LdS`&amp;E2~&gt;
+!B0uWg=lT*!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8L^Q_)?f~&gt;
+!B'oVe_:'%!:g*e!;QTo!8[\T!:Km`!7LoI!;?Hm!.k0$s+131s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!;ulm!:^$g!58F4!6tQD!.k0$s+13$s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!;uls!&lt;)rt!&lt;&lt;)u!!*&amp;t!;c`q!;lfo!;ulr!!*&amp;t!;lfp!;HNk!;ulr!!*&amp;t!&lt;)rn
+!;ulq!&lt;)rr!&lt;&lt;)u!!*&amp;u!!E6$!&lt;&lt;#urVu`prr;corVucqq&gt;^BnrVuis!&lt;;utJcC&lt;$JcDVIrnIOm
+2h1~&gt;
+!B0uWg?nq5!;uls!&lt;)rt!&lt;&lt;)u!!*&amp;t!;c`q!;lfo!;ulr!!*&amp;t!;lfp!;HNk!;ulr!!*&amp;t!&lt;)rn
+!;ulq!&lt;)rr!&lt;&lt;)u!!*&amp;u!!E6$!&lt;&lt;#urVu`prr;corVucqq&gt;^BnrVuis!&lt;;utJcC&lt;$JcDVIrn7Ch
+2Lk~&gt;
+!B'oVea&lt;D0!;uls!&lt;)rt!&lt;&lt;)u!!*&amp;t!;c`q!;lfo!;ulr!!*&amp;t!;lfp!;HNk!;ulr!!*&amp;t!&lt;)rn
+!;ulq!&lt;)rr!&lt;&lt;)u!!*&amp;u!!E6$!&lt;&lt;#urVu`prr;corVucqq&gt;^BnrVuis!&lt;;utJcC&lt;$JcDVIrm_%\
+21P~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo
+s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nrg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo
+s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nrg&amp;]#JJ,~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss8N)rs8N'!s7cTks8N)rs82lps7cTns7lZjs82lps7cTns7lZo
+s7lZps6Kacs7lZps7lZns82los7lZps7cSFs+13$s/5nreH*6=J,~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m
 s8N)rs8E#ts8N)ss8N)rs8E#ss8E#ts8;rts8N'!s8Duus8E!&amp;rr&lt;'!rr&lt;&amp;ts8N)ts8N)ms8N)s
-s8E#ss8E#us8E#ts8N(Ms+13$s/5nrmfD'(J,~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m
+s8E#ss8E#us8E#ts8N(Ms+13$s/5nrg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m
 s8N)rs8E#ts8N)ss8N)rs8E#ss8E#ts8;rts8N'!s8Duus8E!&amp;rr&lt;'!rr&lt;&amp;ts8N)ts8N)ms8N)s
-s8E#ss8E#us8E#ts8N(Ms+13$s/5nrlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m
+s8E#ss8E#us8E#ts8N(Ms+13$s/5nrg&amp;]#JJ,~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8E#ts8N)rs8N)os8N)rs8E#ts8N*!s8E#ss8E#m
 s8N)rs8E#ts8N)ss8N)rs8E#ss8E#ts8;rts8N'!s8Duus8E!&amp;rr&lt;'!rr&lt;&amp;ts8N)ts8N)ms8N)s
-s8E#ss8E#us8E#ts8N(Ms+13$s/5nrk5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n
+s8E#ss8E#us8E#ts8N(Ms+13$s/5nreH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n
 s8N)rs8N)ts8N)ss8N)rs8N)rs8N)us8E#qs8N*!s8N*!s8N)ps8N)ts8N)ms8N)ss8N)rs8N*!
-s8N)ts8N(Ms+13$s/5nrmfD'(J,~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n
+s8N)ts8N(Ms+13$s/5nrg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n
 s8N)rs8N)ts8N)ss8N)rs8N)rs8N)us8E#qs8N*!s8N*!s8N)ps8N)ts8N)ms8N)ss8N)rs8N*!
-s8N)ts8N(Ms+13$s/5nrlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n
+s8N)ts8N(Ms+13$s/5nrg&amp;]#JJ,~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8N)rs8N)n
 s8N)rs8N)ts8N)ss8N)rs8N)rs8N)us8E#qs8N*!s8N*!s8N)ps8N)ts8N)ms8N)ss8N)rs8N*!
-s8N)ts8N(Ms+13$s/5nrk5iU_J,~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
+s8N)ts8N(Ms+13$s/5nreH*6=J,~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
 s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N*!s7lZns8N)ms8N)ss8N)rs8N*!s8N)t
-s8N(Ms+13$s/5nrmfD'(J,~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
+s8N(Ms+13$s/5nrg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
 s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N*!s7lZns8N)ms8N)ss8N)rs8N*!s8N)t
-s8N(Ms+13$s/5nrlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
+s8N(Ms+13$s/5nrg&amp;]#JJ,~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
 s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N*!s7lZns8N)ms8N)ss8N)rs8N*!s8N)t
-s8N(Ms+13$s/5nrk5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
+s8N(Ms+13$s/5nreH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
 s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N'!s7cTms8N)ms8N)ss8N)rs8N*!s8N)t
-s8N(Ms+13$s/5nrmfD'(J,~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
+s8N(Ms+13$s/5nrg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
 s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N'!s7cTms8N)ms8N)ss8N)rs8N*!s8N)t
-s8N(Ms+13$s/5nrlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
+s8N(Ms+13$s/5nrg&amp;]#JJ,~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss8N)rs8N*!s8N)ts8N)rs8N)os8N)rs8N)ts8N*!s7ZNfs8N)r
 s8N)ts8N)ss8N)rs8N)rs8N)us8N)qs8N*!s8N*!s8N'!s7cTms8N)ms8N)ss8N)rs8N*!s8N)t
-s8N(Ms+13$s/5nrk5iU_J,~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r
+s8N(Ms+13$s/5nreH*6=J,~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r
 s8N)ts8N)ss8N)rs8E#ss8E#ts8N)qs8N*!s8N*!s8N'#rr&lt;&amp;ss8N)ts8N)ts8N)ss8N)ss8E#s
-s8E#us8N)ts8N(Ms+13$s/5nrmfD'(J,~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r
+s8E#us8N)ts8N(Ms+13$s/5nrg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r
 s8N)ts8N)ss8N)rs8E#ss8E#ts8N)qs8N*!s8N*!s8N'#rr&lt;&amp;ss8N)ts8N)ts8N)ss8N)ss8E#s
-s8E#us8N)ts8N(Ms+13$s/5nrlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r
+s8E#us8N)ts8N(Ms+13$s/5nrg&amp;]#JJ,~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N)ts8N)us8N)ts8N)rs8N)os8N)rs8N)ts8N*!s8E#fs8N)r
 s8N)ts8N)ss8N)rs8E#ss8E#ts8N)qs8N*!s8N*!s8N'#rr&lt;&amp;ss8N)ts8N)ts8N)ss8N)ss8E#s
-s8E#us8N)ts8N(Ms+13$s/5nrk5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt
-s8;rts7lZos7lZps7lZps8;ots8Duus7?&lt;js7lZps7lZos7lZps8;rts8;qKs+13$s/&gt;tsmfD'(
+s8E#us8N)ts8N(Ms+13$s/5nreH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt
+s8;rts7lZos7lZps7lZps8;ots8Duus7?&lt;js7lZps7lZos7lZps8;rts8;qKs+13$s/&gt;tsg]&gt;&gt;P
 J,~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt
-s8;rts7lZos7lZps7lZps8;ots8Duus7?&lt;js7lZps7lZos7lZps8;rts8;qKs+13$s/&gt;tslN,&lt;m
+!B0uWg?nq?!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt
+s8;rts7lZos7lZps7lZps8;ots8Duus7?&lt;js7lZps7lZos7lZps8;rts8;qKs+13$s/&gt;tsg&amp;]#J
 J,~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt
-s8;rts7lZos7lZps7lZps8;ots8Duus7?&lt;js7lZps7lZos7lZps8;rts8;qKs+13$s/&gt;tsk5iU_
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs7lZps8;rts8;rts7lZos7lZps8;rts8;rts7lZjs7lZps8;rt
+s8;rts7lZos7lZps7lZps8;ots8Duus7?&lt;js7lZps7lZos7lZps8;rts8;qKs+13$s/&gt;tseH*6=
 J,~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt
 s8;rts7lZms8;rrs7lZps8;ots8Duus8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$
-s/&gt;tsmfD'(J,~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt
+s/&gt;tsg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt
 s8;rts7lZms8;rrs7lZps8;ots8Duus8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$
-s/&gt;tslN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt
+s/&gt;tsg&amp;]#JJ,~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;qs8;rrs8;rts8;rts7lZos7lZps8;rts8;rrs8)fls7lZps8;rt
 s8;rts7lZms8;rrs7lZps8;ots8Duus8Duus82iss8E#ss82lqs7lZms8;rrs8;rts8;qKs+13$
-s/&gt;tsk5iU_J,~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n$N,n!;c`o!;c`o!;c`o!.k0$s+13$s0r%-mfD'(J,~&gt;
-!BU8[la6]j!;c`o!;c`o!;c`o!.k0$s+13$s0r%-lN,&lt;mJ,~&gt;
-!BC,YkHt9f!;c`o!;c`o!;c`o!.k0$s+13$s0r%-k5iU_J,~&gt;
-!BpJ^n(n$C!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.mfD'(J,~&gt;
-!BU8[leVU?!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.lN,&lt;mJ,~&gt;
-!BC,YkM?1;!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.k5iU_J,~&gt;
-!BpJ^n*U/J!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
-mfD'(J,~&gt;
-!BU8[lg=`F!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
-lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
-k5iU_J,~&gt;
-!BpJ^n*U/J!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
-!.k0$s+13$s1/1/mfD'(J,~&gt;
-!BU8[lg=`F!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
-!.k0$s+13$s1/1/lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
-!.k0$s+13$s1/1/k5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)u
-s8N)ts8N(Ms+13$s+13\s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)u
-s8N)ts8N(Ms+13$s+13\s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)u
-s8N)ts8N(Ms+13$s+13\s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)us8N)us8E&quot;Ls+13$s+13\s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)us8N)us8E&quot;Ls+13$s+13\s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)us8N)us8E&quot;Ls+13$s+13\s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts7u_H
-s+13$s+13\s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts7u_H
-s+13$s+13\s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts7u_H
-s+13$s+13\s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
-s8N)ss8E!&quot;rr&lt;%Ms+13$s+13\s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
-s8N)ss8E!&quot;rr&lt;%Ms+13$s+13\s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
-s8N)ss8E!&quot;rr&lt;%Ms+13$s+13\s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
-rrDiorr@WMJcC&lt;$JcE:\rpKm?4b*~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
-rrDiorr@WMJcC&lt;$JcE:\rp'U23e.~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
-rrDiorr@WMJcC&lt;$JcE:\roX=&amp;3.L~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)o
-s8N(Ms+13$s+13[s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)o
-s8N(Ms+13$s+13[s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)o
-s8N(Ms+13$s+13[s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fps7u_Hs+13$s+13[s8MHf
-fKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fps7u_Hs+13$s+13[s8M&lt;b
-cT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fps7u_Hs+13$s+13[s8M0^
-a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;rqs82kJs+13$
-s+13Ys8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;rqs82kJs+13$
-s+13Ys8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;rqs82kJs+13$
-s+13Ys8M0^a#JS~&gt;
-!BpJ^n*U/J!9F1[!.k0$s+13$s+LFOmfD'(J,~&gt;
-!BU8[lg=`F!9F1[!.k0$s+13$s+LFOlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!9F1[!.k0$s+13$s+LFOk5iU_J,~&gt;
-!BpJ^n*U/J!9O7\!.k0$s+13$s+C@NmfD'(J,~&gt;
-!BU8[lg=`F!9O7\!.k0$s+13$s+C@NlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!9O7\!.k0$s+13$s+C@Nk5iU_J,~&gt;
-!BpJ^n&amp;PJ*!.k0$s+13$s+ULPmfD'(J,~&gt;
-!BU8[lc9&amp;&amp;!.k0$s+13$s+ULPlN,&lt;mJ,~&gt;
-!BC,YkK!W&quot;!.k0$s+13$s+ULPk5iU_J,~&gt;
-!BpJ^n&amp;PJ*!.k0$s+13$s+ULPmfD'(J,~&gt;
-!BU8[lc9&amp;&amp;!.k0$s+13$s+ULPlN,&lt;mJ,~&gt;
-!BC,YkK!W&quot;!.k0$s+13$s+ULPk5iU_J,~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n$2ol!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCmfD'(J,~&gt;
-!BU8[l`pKh!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TClN,&lt;mJ,~&gt;
-!BC,YkHY'd!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCk5iU_J,~&gt;
-!BpJ^n(n$C!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDmfD'(J,~&gt;
-!BU8[leVU?!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDlN,&lt;mJ,~&gt;
-!BC,YkM?1;!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDk5iU_J,~&gt;
-!BpJ^n*U/J!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s3L`EmfD'(J,~&gt;
-!BU8[lg=`F!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s3L`ElN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s3L`Ek5iU_J,~&gt;
-!BpJ^n*U/J!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`EmfD'(J,~&gt;
-!BU8[lg=`F!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`ElN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`Ek5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
-s8N)us8N)ts8N(Ms+13$s+13rs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
-s8N)us8N)ts8N(Ms+13$s+13rs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
-s8N)us8N)ts8N(Ms+13$s+13rs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
-s8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+13rs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
-s8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+13rs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
-s8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+13rs8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
-s8N)ts8N)ts7u_Hs+13$s+13rs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
-s8N)ts8N)ts7u_Hs+13$s+13rs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
-s8N)ts8N)ts7u_Hs+13$s+13rs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
-s8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13rs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
-s8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13rs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
-s8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13rs8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
-rrE&amp;urrE#trrDiorr@WMJcC&lt;$JcF'rrpKm?4b*~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
-rrE&amp;urrE#trrDiorr@WMJcC&lt;$JcF'rrp'U23e.~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
-rrE&amp;urrE#trrDiorr@WMJcC&lt;$JcF'rroX=&amp;3.L~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
-s8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+13qs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
-s8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+13qs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
-s8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+13qs8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fps7u_H
-s+13$s+13qs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fps7u_H
-s+13$s+13qs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fps7u_H
-s+13$s+13qs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
-s8;rqs82kJs+13$s+13os8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
-s8;rqs82kJs+13$s+13os8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
-s8;rqs82kJs+13$s+13os8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mth#B!;c`o!;c`o!;c`o!.k0$s+13$s5X.YmfD'(J,~&gt;
-!BU8[l\PT&gt;!;c`o!;c`o!;c`o!.k0$s+13$s5X.YlN,&lt;mJ,~&gt;
-!BC,YkD90:!;c`o!;c`o!;c`o!.k0$s+13$s5X.Yk5iU_J,~&gt;
-!BpJ^n(Rg&lt;!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4ZmfD'(J,~&gt;
-!BU8[le;C8!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4ZlN,&lt;mJ,~&gt;
-!BC,YkM#t4!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4Zk5iU_J,~&gt;
-!BpJ^n*U/J!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[mfD'(
+s/&gt;tseH*6=J,~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;XgrBBl!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8g]&gt;&gt;PJ,~&gt;
+!B0uWg;a0j!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8g&amp;]#JJ,~&gt;
+!B'oVe].Xe!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8eH*6=J,~&gt;
+!B:&amp;XgtMf)!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9g]&gt;&gt;PJ,~&gt;
+!B0uWg=lT'!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9g&amp;]#JJ,~&gt;
+!B'oVe_:'&quot;!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9eH*6=J,~&gt;
+!B:&amp;Xh!P.7!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
+g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
+g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
+eH*6=J,~&gt;
+!B:&amp;Xh!P.7!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
+!&lt;)rt!.k0$s+13$s2=s:g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
+!&lt;)rt!.k0$s+13$s2=s:g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
+!&lt;)rt!.k0$s+13$s2=s:eH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13gs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13gs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)us8N)us8E&quot;Ls+13$s+13gs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)us8N)us8E&quot;Ls+13$s+13gs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)us8N)us8E&quot;Ls+13$s+13gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts7u_Hs+13$s+13gs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts7u_Hs+13$s+13gs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts7u_Hs+13$s+13gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13gs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13gs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
+s8N)ts8N)os8N(Ms+13$s+13gs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
+s8N)ts8N)os8N(Ms+13$s+13gs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
+s8N)ts8N)os8N(Ms+13$s+13gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)os8N(Ms+13$s+13fs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)os8N(Ms+13$s+13fs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)os8N(Ms+13$s+13fs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fps7u_Hs+13$s+13f
+s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fps7u_Hs+13$s+13f
+s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fps7u_Hs+13$s+13f
+s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;rqs82kJs+13$
+s+13ds8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;rqs82kJs+13$
+s+13ds8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;rqs82kJs+13$
+s+13ds8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!87DP!.k0$s+13$s,[3Zg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!87DP!.k0$s+13$s,[3Zg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!87DP!.k0$s+13$s,[3ZeH*6=J,~&gt;
+!B:&amp;Xh!P.7!8@JQ!.k0$s+13$s,R-Yg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!8@JQ!.k0$s+13$s,R-Yg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!8@JQ!.k0$s+13$s,R-YeH*6=J,~&gt;
+!B:&amp;Xgq&lt;[a!.k0$s+13$s,d9[g]&gt;&gt;PJ,~&gt;
+!B0uWg:[I_!.k0$s+13$s,d9[g&amp;]#JJ,~&gt;
+!B'oVe\(qZ!.k0$s+13$s,d9[eH*6=J,~&gt;
+!B:&amp;Xgq&lt;[a!.k0$s+13$s,d9[g]&gt;&gt;PJ,~&gt;
+!B0uWg:[I_!.k0$s+13$s,d9[g&amp;]#JJ,~&gt;
+!B'oVe\(qZ!.k0$s+13$s,d9[eH*6=J,~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;XgpI+[!;c`o!;c`o!;c`o!.k0$s+13$s0r%-g]&gt;&gt;PJ,~&gt;
+!B0uWg9gnY!;c`o!;c`o!;c`o!.k0$s+13$s0r%-g&amp;]#JJ,~&gt;
+!B'oVe[5AT!;c`o!;c`o!;c`o!.k0$s+13$s0r%-eH*6=J,~&gt;
+!B:&amp;Xgti#0!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.g]&gt;&gt;PJ,~&gt;
+!B0uWg&gt;2f.!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.g&amp;]#JJ,~&gt;
+!B'oVe_U9)!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.eH*6=J,~&gt;
+!B:&amp;Xh!P.7!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
+g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
+g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
+eH*6=J,~&gt;
+!B:&amp;Xh!P.7!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
+!.k0$s+13$s1/1/g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
+!.k0$s+13$s1/1/g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
+!.k0$s+13$s1/1/eH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)u
+s8N)ts8N(Ms+13$s+13\s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)u
+s8N)ts8N(Ms+13$s+13\s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)u
+s8N)ts8N(Ms+13$s+13\s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)us8N)us8E&quot;Ls+13$s+13\s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)us8N)us8E&quot;Ls+13$s+13\s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)us8N)us8E&quot;Ls+13$s+13\s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts7u_H
+s+13$s+13\s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts7u_H
+s+13$s+13\s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts7u_H
+s+13$s+13\s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
+s8N)ss8E!&quot;rr&lt;%Ms+13$s+13\s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
+s8N)ss8E!&quot;rr&lt;%Ms+13$s+13\s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
+s8N)ss8E!&quot;rr&lt;%Ms+13$s+13\s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
+rrDiorr@WMJcC&lt;$JcE:\rnIOm2h1~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
+rrDiorr@WMJcC&lt;$JcE:\rn7Ch2Lk~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
+rrDiorr@WMJcC&lt;$JcE:\rm_%\21P~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)o
+s8N(Ms+13$s+13[s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)o
+s8N(Ms+13$s+13[s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)o
+s8N(Ms+13$s+13[s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fps7u_Hs+13$s+13[s8LdS
+`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fps7u_Hs+13$s+13[s8L^Q
+_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fps7u_Hs+13$s+13[s8LOL
+\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;rqs82kJs+13$
+s+13Ys8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;rqs82kJs+13$
+s+13Ys8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;rqs82kJs+13$
+s+13Ys8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!9F1[!.k0$s+13$s+LFOg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!9F1[!.k0$s+13$s+LFOg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!9F1[!.k0$s+13$s+LFOeH*6=J,~&gt;
+!B:&amp;Xh!P.7!9O7\!.k0$s+13$s+C@Ng]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!9O7\!.k0$s+13$s+C@Ng&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!9O7\!.k0$s+13$s+C@NeH*6=J,~&gt;
+!B:&amp;XgrKHl!.k0$s+13$s+ULPg]&gt;&gt;PJ,~&gt;
+!B0uWg;j6j!.k0$s+13$s+ULPg&amp;]#JJ,~&gt;
+!B'oVe]7^e!.k0$s+13$s+ULPeH*6=J,~&gt;
+!B:&amp;XgrKHl!.k0$s+13$s+ULPg]&gt;&gt;PJ,~&gt;
+!B0uWg;j6j!.k0$s+13$s+ULPg&amp;]#JJ,~&gt;
+!B'oVe]7^e!.k0$s+13$s+ULPeH*6=J,~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgp-nY!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCg]&gt;&gt;PJ,~&gt;
+!B0uWg9L\W!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCg&amp;]#JJ,~&gt;
+!B'oVeZo/R!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCeH*6=J,~&gt;
+!B:&amp;Xgti#0!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDg]&gt;&gt;PJ,~&gt;
+!B0uWg&gt;2f.!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDg&amp;]#JJ,~&gt;
+!B'oVe_U9)!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDeH*6=J,~&gt;
+!B:&amp;Xh!P.7!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s3L`Eg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s3L`Eg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s3L`EeH*6=J,~&gt;
+!B:&amp;Xh!P.7!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`Eg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`Eg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`EeH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13rs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13rs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13rs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
+s8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+13rs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
+s8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+13rs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
+s8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+13rs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
+s8N)ts8N)ts7u_Hs+13$s+13rs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
+s8N)ts8N)ts7u_Hs+13$s+13rs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
+s8N)ts8N)ts7u_Hs+13$s+13rs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
+s8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13rs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
+s8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13rs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
+s8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+13rs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
+rrE&amp;urrE#trrDiorr@WMJcC&lt;$JcF'rrnIOm2h1~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
+rrE&amp;urrE#trrDiorr@WMJcC&lt;$JcF'rrn7Ch2Lk~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
+rrE&amp;urrE#trrDiorr@WMJcC&lt;$JcF'rrm_%\21P~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
+s8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+13qs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
+s8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+13qs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
+s8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+13qs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fps7u_H
+s+13$s+13qs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fps7u_H
+s+13$s+13qs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fps7u_H
+s+13$s+13qs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
+s8;rqs82kJs+13$s+13os8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
+s8;rqs82kJs+13$s+13os8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
+s8;rqs82kJs+13$s+13os8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgkc&quot;/!;c`o!;c`o!;c`o!.k0$s+13$s5X.Yg]&gt;&gt;PJ,~&gt;
+!B0uWg5,e-!;c`o!;c`o!;c`o!.k0$s+13$s5X.Yg&amp;]#JJ,~&gt;
+!B'oVeVO8(!;c`o!;c`o!;c`o!.k0$s+13$s5X.YeH*6=J,~&gt;
+!B:&amp;XgtMf)!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4Zg]&gt;&gt;PJ,~&gt;
+!B0uWg=lT'!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4Zg&amp;]#JJ,~&gt;
+!B'oVe_:'&quot;!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4ZeH*6=J,~&gt;
+!B:&amp;Xh!P.7!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[g]&gt;&gt;P
 J,~&gt;
-!BU8[lg=`F!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[lN,&lt;m
+!B0uWg?nq5!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[g&amp;]#J
 J,~&gt;
-!BC,YkO&amp;&lt;B!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[k5iU_
+!B'oVea&lt;D0!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[eH*6=
 J,~&gt;
-!BpJ^n*U/J!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[mfD'(J,~&gt;
-!BU8[lg=`F!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[k5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
-s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
-s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
-s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
-s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
-s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
-s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
-s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
-s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
-s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
-s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
-s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
-s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
-s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+142s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
-s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+142s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
-s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+142s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fps7u_Hs+13$s+142s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fps7u_Hs+13$s+142s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fps7u_Hs+13$s+142s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;rqs82kJs+13$s+140s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;rqs82kJs+13$s+140s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;rqs82kJs+13$s+140s8M0^a#JS~&gt;
-!BpJ^n*U/J!4`(/!.k0$s+13$s02P&amp;mfD'(J,~&gt;
-!BU8[lg=`F!4`(/!.k0$s+13$s02P&amp;lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!4`(/!.k0$s+13$s02P&amp;k5iU_J,~&gt;
-!BpJ^n*U/J!4i.0!.k0$s+13$s0)J%mfD'(J,~&gt;
-!BU8[lg=`F!4i.0!.k0$s+13$s0)J%lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!4i.0!.k0$s+13$s0)J%k5iU_J,~&gt;
-!BpJ^n!j@S!.k0$s+13$s0;V'mfD'(J,~&gt;
-!BU8[l^RqO!.k0$s+13$s0;V'lN,&lt;mJ,~&gt;
-!BC,YkF;MK!.k0$s+13$s0;V'k5iU_J,~&gt;
-!BpJ^n!j@S!.k0$s+13$s0;V'mfD'(J,~&gt;
-!BU8[l^RqO!.k0$s+13$s0;V'lN,&lt;mJ,~&gt;
-!BC,YkF;MK!.k0$s+13$s0;V'k5iU_J,~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n#$-a!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s6fpdmfD'(J,~&gt;
-!BU8[l_a^]!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s6fpdlN,&lt;mJ,~&gt;
-!BC,YkGJ:Y!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s6fpdk5iU_J,~&gt;
-!BpJ^n(n$C!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s6p!emfD'(J,~&gt;
-!BU8[leVU?!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s6p!elN,&lt;mJ,~&gt;
-!BC,YkM?1;!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s6p!ek5iU_J,~&gt;
-!BpJ^n*U/J!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s7$'fmfD'(J,~&gt;
-!BU8[lg=`F!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s7$'flN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s7$'fk5iU_J,~&gt;
-!BpJ^n*U/J!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
-s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$nGiLV!SBPc~&gt;
-!BU8[lg=`F!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
-s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$nGiLR!REfW~&gt;
-!BC,YkO&amp;&lt;B!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
-s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$nGiLN!QR0M~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14=s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14=s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14=s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
+!B:&amp;Xh!P.7!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[eH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
+s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
+s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
+s8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
+s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
+s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
+s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)us8N)us8E&quot;Ls+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
+s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
+s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
+s8E#ss8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
+s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
+s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
+s8N)ls8E#rs8N)ts8N)us8N)ts8N)ss8E!&quot;rr&lt;%Ms+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
+s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+142s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
+s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+142s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
+s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)os8N(Ms+13$s+142s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fps7u_Hs+13$s+142s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fps7u_Hs+13$s+142s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fps7u_Hs+13$s+142s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;rqs82kJs+13$s+140s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;rqs82kJs+13$s+140s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;rqs82kJs+13$s+140s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!4`(/!.k0$s+13$s02P&amp;g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!4`(/!.k0$s+13$s02P&amp;g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!4`(/!.k0$s+13$s02P&amp;eH*6=J,~&gt;
+!B:&amp;Xh!P.7!4i.0!.k0$s+13$s0)J%g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!4i.0!.k0$s+13$s0)J%g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!4i.0!.k0$s+13$s0)J%eH*6=J,~&gt;
+!B:&amp;Xgme?@!.k0$s+13$s0;V'g]&gt;&gt;PJ,~&gt;
+!B0uWg7/-&gt;!.k0$s+13$s0;V'g&amp;]#JJ,~&gt;
+!B'oVeXQU9!.k0$s+13$s0;V'eH*6=J,~&gt;
+!B:&amp;Xgme?@!.k0$s+13$s0;V'g]&gt;&gt;PJ,~&gt;
+!B0uWg7/-&gt;!.k0$s+13$s0;V'g&amp;]#JJ,~&gt;
+!B'oVeXQU9!.k0$s+13$s0;V'eH*6=J,~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgnt,N!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s6fpdg]&gt;&gt;PJ,~&gt;
+!B0uWg8=oL!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s6fpdg&amp;]#JJ,~&gt;
+!B'oVeY`BG!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s6fpdeH*6=J,~&gt;
+!B:&amp;Xgti#0!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s6p!eg]&gt;&gt;PJ,~&gt;
+!B0uWg&gt;2f.!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s6p!eg&amp;]#JJ,~&gt;
+!B'oVe_U9)!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s6p!eeH*6=J,~&gt;
+!B:&amp;Xh!P.7!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s7$'fg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s7$'fg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s7$'feH*6=J,~&gt;
+!B:&amp;Xh!P.7!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
+s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$nGiLC!Q6pI~&gt;
+!B0uWg?nq5!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
+s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$nGiLA!Pp[E~&gt;
+!B'oVea&lt;D0!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
+s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$nGiL&lt;!P1.=~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14=s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14=s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14=s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
 rW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrD`lrW)rtrrE#trrE&amp;urrE#trrDusr;_EKJcC&lt;$
-JcG0&lt;rpKm?4b*~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
+JcG0&lt;rnIOm2h1~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
 rW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrD`lrW)rtrrE#trrE&amp;urrE#trrDusr;_EKJcC&lt;$
-JcG0&lt;rp'U23e.~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
+JcG0&lt;rn7Ch2Lk~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
 rW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrD`lrW)rtrrE#trrE&amp;urrE#trrDusr;_EKJcC&lt;$
-JcG0&lt;roX=&amp;3.L~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
+JcG0&lt;rm_%\21P~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
 !!*'!!!*'!!!)rsrr&lt;-#!!)orrrE&amp;urW)KgrW)osrrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=
-rpKm?4b*~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
+rnIOm2h1~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
 !!*'!!!*'!!!)rsrr&lt;-#!!)orrrE&amp;urW)KgrW)osrrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=
-rp'U23e.~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
+rn7Ch2Lk~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
 !!*'!!!*'!!!)rsrr&lt;-#!!)orrrE&amp;urW)KgrW)osrrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=
-roX=&amp;3.L~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
-!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcG6&gt;rpKm?
-4b*~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
-!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcG6&gt;rp'U2
-3e.~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
-!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcG6&gt;roX=&amp;
-3.L~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14&gt;s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14&gt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14&gt;s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
-s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14&gt;s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
-s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14&gt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
-s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14&gt;s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fos8)eIs+13$s+14=s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fos8)eIs+13$s+14=s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fos8)eIs+13$s+14=s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
-s7lZis7lZms8;ros8;ros8;qKs+13$s+14&lt;s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
-s7lZis7lZms8;ros8;ros8;qKs+13$s+14&lt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
-s7lZis7lZms8;ros8;ros8;qKs+13$s+14&lt;s8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n%/Q!!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]omfD'(J,~&gt;
-!BU8[lam,r!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]olN,&lt;mJ,~&gt;
-!BC,YkIU]n!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]ok5iU_J,~&gt;
-!BpJ^n(Rg?!!&lt;0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cpmfD'(J,~&gt;
-!BU8[le;C;!!&lt;0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cplN,&lt;mJ,~&gt;
-!BC,YkM#t7!!&lt;0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cpk5iU_J,~&gt;
-!BpJ^n*U/J!;ull!9jI_!9=+Z!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s82iqmfD'(J,~&gt;
-!BU8[lg=`F!;ull!9jI_!9=+Z!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s82iqlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;ull!9jI_!9=+Z!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s82iqk5iU_J,~&gt;
-!BpJ^n*U/J!;uls!&lt;)rs!&lt;)rr!&lt;)rs!!*&amp;t!&lt;3#o!;lfp!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?Tp
-rVufrs8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$qu?Za!SBPc~&gt;
-!BU8[lg=`F!;uls!&lt;)rs!&lt;)rr!&lt;)rs!!*&amp;t!&lt;3#o!;lfp!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?Tp
-rVufrs8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$qu?Z]!REfW~&gt;
-!BC,YkO&amp;&lt;B!;uls!&lt;)rs!&lt;)rr!&lt;)rs!!*&amp;t!&lt;3#o!;lfp!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?Tp
-rVufrs8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$qu?ZY!QR0M~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
+rm_%\21P~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
+!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcG6&gt;rnIOm
+2h1~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
+!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcG6&gt;rn7Ch
+2Lk~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
+!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcG6&gt;rm_%\
+21P~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14&gt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14&gt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14&gt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
+s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14&gt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
+s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14&gt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
+s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14&gt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14=s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14=s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14=s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
+s7lZis7lZms8;ros8;ros8;qKs+13$s+14&lt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
+s7lZis7lZms8;ros8;ros8;qKs+13$s+14&lt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
+s7lZis7lZms8;ros8;ros8;qKs+13$s+14&lt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgq*Oc!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]og]&gt;&gt;PJ,~&gt;
+!B0uWg:I=a!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]og&amp;]#JJ,~&gt;
+!B'oVe[ke\!9F1Z!8IPP!;c`o!;c`o!;c`o!.k0$s+13$s7u]oeH*6=J,~&gt;
+!B:&amp;XgtMf,!!&lt;0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cpg]&gt;&gt;PJ,~&gt;
+!B0uWg=lT*!!&lt;0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cpg&amp;]#JJ,~&gt;
+!B'oVe_:'%!!&lt;0#!9jI_!9F1Z!8RVO!;ulo!;ulo!;ulo!.k0$s+13$s8)cpeH*6=J,~&gt;
+!B:&amp;Xh!P.7!;ull!9jI_!9=+Z!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s82iqg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;ull!9jI_!9=+Z!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s82iqg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;ull!9jI_!9=+Z!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s82iqeH*6=J,~&gt;
+!B:&amp;Xh!P.7!;uls!&lt;)rs!&lt;)rr!&lt;)rs!!*&amp;t!&lt;3#o!;lfp!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?Tp
+rVufrs8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$qu?ZN!Q6pI~&gt;
+!B0uWg?nq5!;uls!&lt;)rs!&lt;)rr!&lt;)rs!!*&amp;t!&lt;3#o!;lfp!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?Tp
+rVufrs8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$qu?ZL!Pp[E~&gt;
+!B'oVea&lt;D0!;uls!&lt;)rs!&lt;)rr!&lt;)rs!!*&amp;t!&lt;3#o!;lfp!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?Tp
+rVufrs8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultrr;uurVultJcC&lt;$JcC&lt;$qu?ZG!P1.=~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N)ss8N*!s7lZps7cTos7lZns7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+14Hs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
 rr&lt;'!s8E#ts8Duus8E#ss8E#ts8;rts8N)ls8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+14G
-s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
+s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
 rr&lt;'!s8E#ts8Duus8E#ss8E#ts8;rts8N)ls8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+14G
-s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
+s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss82lps8E#ss8E#us8E#ts8E#ts8N)qs8E#ss8Duus8Duus8E!$
 rr&lt;'!s8E#ts8Duus8E#ss8E#ts8;rts8N)ls8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+14G
-s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr&lt;'!rr&lt;'!
-rr&lt;'!rr&lt;&amp;ss8N'#rr&lt;&amp;rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8MHf
-fKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr&lt;'!rr&lt;'!
-rr&lt;'!rr&lt;&amp;ss8N'#rr&lt;&amp;rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8M&lt;b
-cT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr&lt;'!rr&lt;'!
-rr&lt;'!rr&lt;&amp;ss8N'#rr&lt;&amp;rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8M0^
-a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!rr&lt;&amp;s
-s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!rr&lt;&amp;s
-s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!rr&lt;&amp;s
-s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
-s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8MHf
-fKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
-s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8M&lt;b
-cT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
-s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8M0^
-a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fos8)eIs+13$s+14Hs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fos8)eIs+13$s+14Hs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fos8)eIs+13$s+14Hs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
-s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
-s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
-s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8M0^a#JS~&gt;
-!BpJ^n*U/J!9X=]!.k0$s+13$s+::MmfD'(J,~&gt;
-!BU8[lg=`F!9X=]!.k0$s+13$s+::MlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!9X=]!.k0$s+13$s+::Mk5iU_J,~&gt;
-!BpJ^n*U/J!9X=]!.k0$s+13$s+::MmfD'(J,~&gt;
-!BU8[lg=`F!9X=]!.k0$s+13$s+::MlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!9X=]!.k0$s+13$s+::Mk5iU_J,~&gt;
-!BpJ^n&amp;PJ+!.k0$s+13$s+LFOmfD'(J,~&gt;
-!BU8[lc9&amp;'!.k0$s+13$s+LFOlN,&lt;mJ,~&gt;
-!BC,YkK!W#!.k0$s+13$s+LFOk5iU_J,~&gt;
-!BpJ^n&amp;PJ+!.k0$s+13$s+LFOmfD'(J,~&gt;
-!BU8[lc9&amp;'!.k0$s+13$s+LFOlN,&lt;mJ,~&gt;
-!BC,YkK!W#!.k0$s+13$s+LFOk5iU_J,~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n&amp;GD*!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8mfD'(J,~&gt;
-!BU8[lc/u&amp;!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8lN,&lt;mJ,~&gt;
-!BC,YkJmQ&quot;!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8k5iU_J,~&gt;
-!BpJ^n(Rg&lt;!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9mfD'(J,~&gt;
-!BU8[le;C8!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9lN,&lt;mJ,~&gt;
-!BC,YkM#t4!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9k5iU_J,~&gt;
-!BpJ^n*U/J!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
-mfD'(J,~&gt;
-!BU8[lg=`F!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
-lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
-k5iU_J,~&gt;
-!BpJ^n*U/J!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
-!&lt;)rt!.k0$s+13$s2=s:mfD'(J,~&gt;
-!BU8[lg=`F!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
-!&lt;)rt!.k0$s+13$s2=s:lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
-!&lt;)rt!.k0$s+13$s2=s:k5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
-s8N)ts8N*!s8N(Ms+13$s+13fs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
-s8N)ts8N*!s8N(Ms+13$s+13fs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
-s8N)ts8N*!s8N(Ms+13$s+13fs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)ss8;qKs+13$s+13es8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)ss8;qKs+13$s+13es8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)ss8;qKs+13$s+13es8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
-s8N)ts8)eIs+13$s+13fs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
-s8N)ts8)eIs+13$s+13fs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
-s8N)ts8)eIs+13$s+13fs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
-s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
-s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
-s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
-s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
-s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
-s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
-s8N)ts8N)ts8N(Ms+13$s+13gs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
-s8N)ts8N)ts8N(Ms+13$s+13gs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
-s8N)ts8N)ts8N(Ms+13$s+13gs8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
-s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
-s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
-s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
-s+13es8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
-s+13es8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
-s+13es8M0^a#JS~&gt;
-!BpJ^n*U/J!87DP!.k0$s+13$s,[3ZmfD'(J,~&gt;
-!BU8[lg=`F!87DP!.k0$s+13$s,[3ZlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!87DP!.k0$s+13$s,[3Zk5iU_J,~&gt;
-!BpJ^n*U/J!8@JQ!.k0$s+13$s,R-YmfD'(J,~&gt;
-!BU8[lg=`F!8@JQ!.k0$s+13$s,R-YlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!8@JQ!.k0$s+13$s,R-Yk5iU_J,~&gt;
-!BpJ^n%A\t!.k0$s+13$s,d9[mfD'(J,~&gt;
-!BU8[lb*8p!.k0$s+13$s,d9[lN,&lt;mJ,~&gt;
-!BC,YkIgil!.k0$s+13$s,d9[k5iU_J,~&gt;
-!BpJ^n%A\t!.k0$s+13$s,d9[mfD'(J,~&gt;
-!BU8[lb*8p!.k0$s+13$s,d9[lN,&lt;mJ,~&gt;
-!BC,YkIgil!.k0$s+13$s,d9[k5iU_J,~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n$N,n!;c`o!;c`o!;c`o!.k0$s+13$s0r%-mfD'(J,~&gt;
-!BU8[la6]j!;c`o!;c`o!;c`o!.k0$s+13$s0r%-lN,&lt;mJ,~&gt;
-!BC,YkHt9f!;c`o!;c`o!;c`o!.k0$s+13$s0r%-k5iU_J,~&gt;
-!BpJ^n(n$C!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.mfD'(J,~&gt;
-!BU8[leVU?!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.lN,&lt;mJ,~&gt;
-!BC,YkM?1;!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.k5iU_J,~&gt;
-!BpJ^n*U/J!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
-mfD'(J,~&gt;
-!BU8[lg=`F!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
-lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
-k5iU_J,~&gt;
-!BpJ^n*U/J!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
-!.k0$s+13$s1/1/mfD'(J,~&gt;
-!BU8[lg=`F!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
-!.k0$s+13$s1/1/lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
-!.k0$s+13$s1/1/k5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)t
-s8N*!s8N(Ms+13$s+13[s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)t
-s8N*!s8N(Ms+13$s+13[s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)t
-s8N*!s8N(Ms+13$s+13[s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)ss8;qKs+13$s+13Zs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)ss8;qKs+13$s+13Zs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
-s8N)ss8;qKs+13$s+13Zs8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8)eI
-s+13$s+13[s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8)eI
-s+13$s+13[s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8)eI
-s+13$s+13[s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
-s8N)us8N)ts8N(Ms+13$s+13\s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
-s8N)us8N)ts8N(Ms+13$s+13\s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
-s8N)us8N)ts8N(Ms+13$s+13\s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
-rrE&amp;urrE#trr@WMJcC&lt;$JcE:\rpKm?4b*~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
-rrE&amp;urrE#trr@WMJcC&lt;$JcE:\rp'U23e.~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
-rrE&amp;urrE#trr@WMJcC&lt;$JcE:\roX=&amp;3.L~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)t
-s8N)ts8N(Ms+13$s+13\s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)t
-s8N)ts8N(Ms+13$s+13\s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)t
-s8N)ts8N(Ms+13$s+13\s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fos8)eIs+13$s+13[s8MHf
-fKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fos8)eIs+13$s+13[s8M&lt;b
-cT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fos8)eIs+13$s+13[s8M0^
-a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;ros8;qKs+13$
-s+13Zs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;ros8;qKs+13$
-s+13Zs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;ros8;qKs+13$
-s+13Zs8M0^a#JS~&gt;
-!BpJ^n*U/J!9F1[!.k0$s+13$s+LFOmfD'(J,~&gt;
-!BU8[lg=`F!9F1[!.k0$s+13$s+LFOlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!9F1[!.k0$s+13$s+LFOk5iU_J,~&gt;
-!BpJ^n*U/J!9O7\!.k0$s+13$s+C@NmfD'(J,~&gt;
-!BU8[lg=`F!9O7\!.k0$s+13$s+C@NlN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!9O7\!.k0$s+13$s+C@Nk5iU_J,~&gt;
-!BpJ^n&amp;PJ*!.k0$s+13$s+ULPmfD'(J,~&gt;
-!BU8[lc9&amp;&amp;!.k0$s+13$s+ULPlN,&lt;mJ,~&gt;
-!BC,YkK!W&quot;!.k0$s+13$s+ULPk5iU_J,~&gt;
-!BpJ^n&amp;PJ*!.k0$s+13$s+ULPmfD'(J,~&gt;
-!BU8[lc9&amp;&amp;!.k0$s+13$s+ULPlN,&lt;mJ,~&gt;
-!BC,YkK!W&quot;!.k0$s+13$s+ULPk5iU_J,~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n$2ol!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCmfD'(J,~&gt;
-!BU8[l`pKh!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TClN,&lt;mJ,~&gt;
-!BC,YkHY'd!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCk5iU_J,~&gt;
-!BpJ^n(n$C!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDmfD'(J,~&gt;
-!BU8[leVU?!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDlN,&lt;mJ,~&gt;
-!BC,YkM?1;!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDk5iU_J,~&gt;
-!BpJ^n*U/J!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s3L`EmfD'(J,~&gt;
-!BU8[lg=`F!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s3L`ElN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s3L`Ek5iU_J,~&gt;
-!BpJ^n*U/J!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`EmfD'(J,~&gt;
-!BU8[lg=`F!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`ElN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`Ek5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
-s8N)ts8N*!s8N(Ms+13$s+13qs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
-s8N)ts8N*!s8N(Ms+13$s+13qs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
-s8N)ts8N*!s8N(Ms+13$s+13qs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
-s8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+13ps8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
-s8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+13ps8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
-s8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+13ps8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
-s8N)ts8N)ts8)eIs+13$s+13qs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
-s8N)ts8N)ts8)eIs+13$s+13qs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
-s8N)ts8N)ts8)eIs+13$s+13qs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
-s8N)us8N)ts8N)us8N)ts8N(Ms+13$s+13rs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
-s8N)us8N)ts8N)us8N)ts8N(Ms+13$s+13rs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
-s8N)us8N)ts8N)us8N)ts8N(Ms+13$s+13rs8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
-rrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcF'rrpKm?4b*~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
-rrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcF'rrp'U23e.~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
-rrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcF'rroX=&amp;3.L~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
-s8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+13rs8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
-s8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+13rs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
-s8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+13rs8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fos8)eI
-s+13$s+13qs8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fos8)eI
-s+13$s+13qs8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fos8)eI
-s+13$s+13qs8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
-s8;ros8;qKs+13$s+13ps8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
-s8;ros8;qKs+13$s+13ps8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
-s8;ros8;qKs+13$s+13ps8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mth#B!;c`o!;c`o!;c`o!.k0$s+13$s5X.YmfD'(J,~&gt;
-!BU8[l\PT&gt;!;c`o!;c`o!;c`o!.k0$s+13$s5X.YlN,&lt;mJ,~&gt;
-!BC,YkD90:!;c`o!;c`o!;c`o!.k0$s+13$s5X.Yk5iU_J,~&gt;
-!BpJ^n(Rg&lt;!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4ZmfD'(J,~&gt;
-!BU8[le;C8!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4ZlN,&lt;mJ,~&gt;
-!BC,YkM#t4!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4Zk5iU_J,~&gt;
-!BpJ^n*U/J!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[mfD'(
+s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr&lt;'!rr&lt;'!
+rr&lt;'!rr&lt;&amp;ss8N'#rr&lt;&amp;rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8LdS
+`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr&lt;'!rr&lt;'!
+rr&lt;'!rr&lt;&amp;ss8N'#rr&lt;&amp;rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8L^Q
+_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#qs7u`qs8N)rs8N*!s8N)ss8N)us8N)qs8N)rs8N'/rr&lt;'!rr&lt;'!
+rr&lt;'!rr&lt;&amp;ss8N'#rr&lt;&amp;rs8N)us8E#gs8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+14Hs8LOL
+\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!rr&lt;&amp;s
+s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!rr&lt;&amp;s
+s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;os82iss7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!rr&lt;&amp;s
+s8N'!s7ZNms8N)hs8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N)ss8N'!s7ZNns8N)ss8N)us8N)qs7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+14Is8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
+s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8LdS
+`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
+s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8L^Q
+_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8;rss8N'!s8E#ns8E#ts8E#ts8N)ts8N'!s8E#os8N*!s8N*!
+s8N*!s8E#ts8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+14Is8LOL
+\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14Hs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14Hs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs7lZos7lZos7lZns7lZps7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fos8)eIs+13$s+14Hs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
+s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
+s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N'!s8;rps8)fqs8N'!s8;rps82los8)crs8;ots8Duus8)cr
+s8;rps8)frs7lZis7lZms8;ros8;ros8;qKs+13$s+14Gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!9X=]!.k0$s+13$s+::Mg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!9X=]!.k0$s+13$s+::Mg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!9X=]!.k0$s+13$s+::MeH*6=J,~&gt;
+!B:&amp;Xh!P.7!9X=]!.k0$s+13$s+::Mg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!9X=]!.k0$s+13$s+::Mg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!9X=]!.k0$s+13$s+::MeH*6=J,~&gt;
+!B:&amp;XgrKHm!.k0$s+13$s+LFOg]&gt;&gt;PJ,~&gt;
+!B0uWg;j6k!.k0$s+13$s+LFOg&amp;]#JJ,~&gt;
+!B'oVe]7^f!.k0$s+13$s+LFOeH*6=J,~&gt;
+!B:&amp;XgrKHm!.k0$s+13$s+LFOg]&gt;&gt;PJ,~&gt;
+!B0uWg;j6k!.k0$s+13$s+LFOg&amp;]#JJ,~&gt;
+!B'oVe]7^f!.k0$s+13$s+LFOeH*6=J,~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;XgrBBl!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8g]&gt;&gt;PJ,~&gt;
+!B0uWg;a0j!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8g&amp;]#JJ,~&gt;
+!B'oVe].Xe!9sO^!;c`o!;c`o!;c`o!.k0$s+13$s2+g8eH*6=J,~&gt;
+!B:&amp;XgtMf)!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9g]&gt;&gt;PJ,~&gt;
+!B0uWg=lT'!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9g&amp;]#JJ,~&gt;
+!B'oVe_:'&quot;!;-&lt;h!:'U]!;ulo!;ulo!;ulo!.k0$s+13$s24m9eH*6=J,~&gt;
+!B:&amp;Xh!P.7!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
+g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
+g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;c`l!:g*h!:0[b!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s2=s:
+eH*6=J,~&gt;
+!B:&amp;Xh!P.7!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
+!&lt;)rt!.k0$s+13$s2=s:g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
+!&lt;)rt!.k0$s+13$s2=s:g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;HNn!&lt;3#t!&lt;&lt;)t!;lfr!;ulq!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u
+!&lt;)rt!.k0$s+13$s2=s:eH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13fs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13fs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ms8N)us8E#us8;rps8N)ss8;rts8;ris8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13fs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13es8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13es8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)rs8N)rs8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13es8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts8)eIs+13$s+13fs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts8)eIs+13$s+13fs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ms8N)ts8N)ts8N)rs8N)rs8N)ts8N)ls8E#ss8N)ts8N)us8N)t
+s8N)ts8)eIs+13$s+13fs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)ts8N)rs8N)qs8N*!s8N)ls8E#rs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss8N)ts8N)ts8N)ts8N)rs8N)qs8N'#rr&lt;&amp;ls8E#qs8N)ts8N)u
+s8N)ts8N)us8N)ts8N(Ms+13$s+13gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)ts8N)ts8N(Ms+13$s+13gs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)ts8N)ts8N(Ms+13$s+13gs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts8N)us8E#qs8N)ps8;rks8E#os8N*!s8N)ss8N*!
+s8N)ts8N)ts8N(Ms+13$s+13gs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
+s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
+s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss7u`ns7cTos7lZms8E#ls7lZns8)fos8)fos8)eIs+13$s+13f
+s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13es8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13es8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;rs8;ros8;ots8E#us7lZms8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13es8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!87DP!.k0$s+13$s,[3Zg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!87DP!.k0$s+13$s,[3Zg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!87DP!.k0$s+13$s,[3ZeH*6=J,~&gt;
+!B:&amp;Xh!P.7!8@JQ!.k0$s+13$s,R-Yg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!8@JQ!.k0$s+13$s,R-Yg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!8@JQ!.k0$s+13$s,R-YeH*6=J,~&gt;
+!B:&amp;Xgq&lt;[a!.k0$s+13$s,d9[g]&gt;&gt;PJ,~&gt;
+!B0uWg:[I_!.k0$s+13$s,d9[g&amp;]#JJ,~&gt;
+!B'oVe\(qZ!.k0$s+13$s,d9[eH*6=J,~&gt;
+!B:&amp;Xgq&lt;[a!.k0$s+13$s,d9[g]&gt;&gt;PJ,~&gt;
+!B0uWg:[I_!.k0$s+13$s,d9[g&amp;]#JJ,~&gt;
+!B'oVe\(qZ!.k0$s+13$s,d9[eH*6=J,~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;XgpI+[!;c`o!;c`o!;c`o!.k0$s+13$s0r%-g]&gt;&gt;PJ,~&gt;
+!B0uWg9gnY!;c`o!;c`o!;c`o!.k0$s+13$s0r%-g&amp;]#JJ,~&gt;
+!B'oVe[5AT!;c`o!;c`o!;c`o!.k0$s+13$s0r%-eH*6=J,~&gt;
+!B:&amp;Xgti#0!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.g]&gt;&gt;PJ,~&gt;
+!B0uWg&gt;2f.!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.g&amp;]#JJ,~&gt;
+!B'oVe_U9)!;ulr!9F1W!;ulo!;ulo!;ulo!.k0$s+13$s1&amp;+.eH*6=J,~&gt;
+!B:&amp;Xh!P.7!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
+g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
+g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!&lt;)rs!;ulr!9O7\!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s1/1/
+eH*6=J,~&gt;
+!B:&amp;Xh!P.7!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
+!.k0$s+13$s1/1/g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
+!.k0$s+13$s1/1/g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt
+!.k0$s+13$s1/1/eH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)t
+s8N*!s8N(Ms+13$s+13[s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)t
+s8N*!s8N(Ms+13$s+13[s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8E#ts8E#us7lZps8;rts8;ris8N)us8N)ts8N)us8N)ts8N)t
+s8N*!s8N(Ms+13$s+13[s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13Zs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13Zs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)us8N)ts8N)ks8E#ts8N)ts8N)us8N)t
+s8N)ss8;qKs+13$s+13Zs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8)eI
+s+13$s+13[s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8)eI
+s+13$s+13[s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs7cTis8N)us8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8)eI
+s+13$s+13[s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13\s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13\s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N*!s8N)ls8E#rs8N)ts8N)us8N)t
+s8N)us8N)ts8N(Ms+13$s+13\s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
+rrE&amp;urrE#trr@WMJcC&lt;$JcE:\rnIOm2h1~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
+rrE&amp;urrE#trr@WMJcC&lt;$JcE:\rn7Ch2Lk~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrr&lt;-#!!)]lrW)iqrrE#trrE&amp;urrE#t
+rrE&amp;urrE#trr@WMJcC&lt;$JcE:\rm_%\21P~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)t
+s8N)ts8N(Ms+13$s+13\s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)t
+s8N)ts8N(Ms+13$s+13\s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ss8;rks8E#os8N*!s8N)ss8N*!s8N)t
+s8N)ts8N(Ms+13$s+13\s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fos8)eIs+13$s+13[s8LdS
+`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fos8)eIs+13$s+13[s8L^Q
+_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss82iss7-0gs8E#ls7lZns8)fos8)fos8)eIs+13$s+13[s8LOL
+\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13Zs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13Zs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8E#ss8N)ls7lZms8;ros8;ros8;qKs+13$
+s+13Zs8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!9F1[!.k0$s+13$s+LFOg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!9F1[!.k0$s+13$s+LFOg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!9F1[!.k0$s+13$s+LFOeH*6=J,~&gt;
+!B:&amp;Xh!P.7!9O7\!.k0$s+13$s+C@Ng]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!9O7\!.k0$s+13$s+C@Ng&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!9O7\!.k0$s+13$s+C@NeH*6=J,~&gt;
+!B:&amp;XgrKHl!.k0$s+13$s+ULPg]&gt;&gt;PJ,~&gt;
+!B0uWg;j6j!.k0$s+13$s+ULPg&amp;]#JJ,~&gt;
+!B'oVe]7^e!.k0$s+13$s+ULPeH*6=J,~&gt;
+!B:&amp;XgrKHl!.k0$s+13$s+ULPg]&gt;&gt;PJ,~&gt;
+!B0uWg;j6j!.k0$s+13$s+ULPg&amp;]#JJ,~&gt;
+!B'oVe]7^e!.k0$s+13$s+ULPeH*6=J,~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgp-nY!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCg]&gt;&gt;PJ,~&gt;
+!B0uWg9L\W!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCg&amp;]#JJ,~&gt;
+!B'oVeZo/R!:g*f!;c`o!;c`o!;c`o!.k0$s+13$s3:TCeH*6=J,~&gt;
+!B:&amp;Xgti#0!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDg]&gt;&gt;PJ,~&gt;
+!B0uWg&gt;2f.!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDg&amp;]#JJ,~&gt;
+!B'oVe_U9)!;ulr!9!nV!:p0e!;ulo!;ulo!;ulo!.k0$s+13$s3CZDeH*6=J,~&gt;
+!B:&amp;Xh!P.7!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s3L`Eg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s3L`Eg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!&lt;)rs!;ulr!8mhV!;$6j!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s3L`EeH*6=J,~&gt;
+!B:&amp;Xh!P.7!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`Eg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`Eg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;ulr!&lt;3#t!&lt;3#q!&lt;3#s!&lt;&lt;)u!&lt;)rr!!&lt;0#!&lt;3#u!!*&amp;t!;QTo!&lt;)rt!&lt;3#u!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s3L`EeH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13qs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13qs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8E#ts8E#us7lZps7ZNns7lZos7lZds8N)us8N)ts8N)us8N)t
+s8N)ts8N*!s8N(Ms+13$s+13qs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
+s8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+13ps8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
+s8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+13ps8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8;ots8;rts8N)ts8N)ts8;rts8N'!s8E#ts8E#ts8E#ts8N)k
+s8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+13ps8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
+s8N)ts8N)ts8)eIs+13$s+13qs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
+s8N)ts8N)ts8)eIs+13$s+13qs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs7cTis8N)ts8E#qs8N)ss8N)us8N)ts8N)ls8E#ss8N)ts8N)u
+s8N)ts8N)ts8)eIs+13$s+13qs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
+s8N)us8N)ts8N)us8N)ts8N(Ms+13$s+13rs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
+s8N)us8N)ts8N)us8N)ts8N(Ms+13$s+13rs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N'!s8E!$rr&lt;'!s7lZns8N)qs8N)ns8N)ts8N)ms8E#rs8N)t
+s8N)us8N)ts8N)us8N)ts8N(Ms+13$s+13rs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
+rrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcF'rrnIOm2h1~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
+rrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcF'rrn7Ch2Lk~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N*!rriE&amp;rr&lt;'!p]19mrrDoqrrDfnrrE#trrDfnrW)iqrrE#t
+rrE&amp;urrE#trrE&amp;urrE#trr@WMJcC&lt;$JcF'rrm_%\21P~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
+s8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+13rs8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
+s8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+13rs8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N)ss8N'#rr&lt;&amp;ss8N)ts8N)qs8E#ss8E#us8N)ts8N)os8E#o
+s8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+13rs8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fos8)eI
+s+13$s+13qs8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fos8)eI
+s+13$s+13qs8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss82iss7--is7lZns7cQos8;rts8;ros7lZns8)fos8)fos8)eI
+s+13$s+13qs8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
+s8;ros8;qKs+13$s+13ps8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
+s8;ros8;qKs+13$s+13ps8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts82iss82iss82iss8Duus7lZms8)fqs8;rts8;ros7lZms8;ro
+s8;ros8;qKs+13$s+13ps8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgkc&quot;/!;c`o!;c`o!;c`o!.k0$s+13$s5X.Yg]&gt;&gt;PJ,~&gt;
+!B0uWg5,e-!;c`o!;c`o!;c`o!.k0$s+13$s5X.Yg&amp;]#JJ,~&gt;
+!B'oVeVO8(!;c`o!;c`o!;c`o!.k0$s+13$s5X.YeH*6=J,~&gt;
+!B:&amp;XgtMf)!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4Zg]&gt;&gt;PJ,~&gt;
+!B0uWg=lT'!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4Zg&amp;]#JJ,~&gt;
+!B'oVe_:'&quot;!4W&quot;*!;ulo!;ulo!;ulo!.k0$s+13$s5a4ZeH*6=J,~&gt;
+!B:&amp;Xh!P.7!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[g]&gt;&gt;P
 J,~&gt;
-!BU8[lg=`F!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[lN,&lt;m
+!B0uWg?nq5!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[g&amp;]#J
 J,~&gt;
-!BC,YkO&amp;&lt;B!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[k5iU_
+!B'oVea&lt;D0!;c`l!4`(/!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$s5j:[eH*6=
 J,~&gt;
-!BpJ^n*U/J!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[mfD'(J,~&gt;
-!BU8[lg=`F!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
-!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[k5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
-s8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+142s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
-s8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+142s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
-s8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+142s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
-s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+141s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
-s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+141s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
-s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+141s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
-s8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+142s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
-s8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+142s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
-s8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+142s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
-s8N)ls8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
-s8N)ls8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
-s8N)ls8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
-s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
-s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
-s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fos8)eIs+13$s+142s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fos8)eIs+13$s+142s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fos8)eIs+13$s+142s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;ros8;qKs+13$s+141s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;ros8;qKs+13$s+141s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;ros8;qKs+13$s+141s8M0^a#JS~&gt;
-!BpJ^n*U/J!4`(/!.k0$s+13$s02P&amp;mfD'(J,~&gt;
-!BU8[lg=`F!4`(/!.k0$s+13$s02P&amp;lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!4`(/!.k0$s+13$s02P&amp;k5iU_J,~&gt;
-!BpJ^n*U/J!4i.0!.k0$s+13$s0)J%mfD'(J,~&gt;
-!BU8[lg=`F!4i.0!.k0$s+13$s0)J%lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!4i.0!.k0$s+13$s0)J%k5iU_J,~&gt;
-!BpJ^n!j@S!.k0$s+13$s0;V'mfD'(J,~&gt;
-!BU8[l^RqO!.k0$s+13$s0;V'lN,&lt;mJ,~&gt;
-!BC,YkF;MK!.k0$s+13$s0;V'k5iU_J,~&gt;
-!BpJ^n!j@S!.k0$s+13$s0;V'mfD'(J,~&gt;
-!BU8[l^RqO!.k0$s+13$s0;V'lN,&lt;mJ,~&gt;
-!BC,YkF;MK!.k0$s+13$s0;V'k5iU_J,~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n#$-a!8IPP!;c`o!;c`o!;ulm!.k0$s+13$s7$'fmfD'(J,~&gt;
-!BU8[l_a^]!8IPP!;c`o!;c`o!;ulm!.k0$s+13$s7$'flN,&lt;mJ,~&gt;
-!BC,YkGJ:Y!8IPP!;c`o!;c`o!;ulm!.k0$s+13$s7$'fk5iU_J,~&gt;
-!BpJ^n(n$C!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!&lt;)rn!.k0$s+13$s7$'fmfD'(J,~&gt;
-!BU8[leVU?!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!&lt;)rn!.k0$s+13$s7$'flN,&lt;mJ,~&gt;
-!BC,YkM?1;!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!&lt;)rn!.k0$s+13$s7$'fk5iU_J,~&gt;
-!BpJ^n*U/J!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s7$'fmfD'(J,~&gt;
-!BU8[lg=`F!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s7$'flN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
-s7$'fk5iU_J,~&gt;
-!BpJ^n*U/J!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
-s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultq&gt;^HpJcC&lt;$JcC&lt;$n,NCU!SBPc~&gt;
-!BU8[lg=`F!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
-s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultq&gt;^HpJcC&lt;$JcC&lt;$n,NCQ!REfW~&gt;
-!BC,YkO&amp;&lt;B!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
-s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultq&gt;^HpJcC&lt;$JcC&lt;$n,NCM!QR0M~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ps8N(Ms+13$s+14=s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ps8N(Ms+13$s+14=s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
-s8N)us8N)ts8N)us8N)ts8N)ps8N(Ms+13$s+14=s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
+!B:&amp;Xh!P.7!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;HNn!;ulo!&lt;3#t!!*&amp;t!&lt;3#t!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t!&lt;&lt;)t!;c`q!&lt;)rt
+!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!.k0$s+13$s5j:[eH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
+s8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+142s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
+s8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+142s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ms8N)ts7lZps7cTos8E#us8;rss7lZps7ZKns8;rts8;ris8N)u
+s8N)ts8N)us8N)ts8N)ts8N*!s8N(Ms+13$s+142s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
+s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+141s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
+s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+141s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ns8N)ts8N)ts8N)us8E#ts8N)us8N)ts8N)us8N)ts8N)ts8;rt
+s8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ss8;qKs+13$s+141s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
+s8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+142s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
+s8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+142s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ms8N)ns8N)us8N)ts8N)us8N)ts8N)os8N)ts8E#ps8N)ts8N)l
+s8E#ss8N)ts8N)us8N)ts8N)ts8)eIs+13$s+142s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
+s8N)ls8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
+s8N)ls8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)ts7lZos8N)ts8N)us8N)ts8N)us7lZns8N)os8N*!
+s8N)ls8E#rs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss8N)ts8N)us7cTns8N)ts8N)us8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)us8N)ts8N(Ms+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
+s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
+s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts8N)ts8N)us8N)ss8N)us8N)ts8N)us8N)us8E#us8N)ss8N)t
+s8N)ns8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)ts8N(Ms+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fos8)eIs+13$s+142s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fos8)eIs+13$s+142s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss7u`os7ZKns8;rts8;rts7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fos8)eIs+13$s+142s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;ros8;qKs+13$s+141s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;ros8;qKs+13$s+141s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;rs8;rps82iss8Duus8;rts8;rss8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;ros8;qKs+13$s+141s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!4`(/!.k0$s+13$s02P&amp;g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!4`(/!.k0$s+13$s02P&amp;g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!4`(/!.k0$s+13$s02P&amp;eH*6=J,~&gt;
+!B:&amp;Xh!P.7!4i.0!.k0$s+13$s0)J%g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!4i.0!.k0$s+13$s0)J%g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!4i.0!.k0$s+13$s0)J%eH*6=J,~&gt;
+!B:&amp;Xgme?@!.k0$s+13$s0;V'g]&gt;&gt;PJ,~&gt;
+!B0uWg7/-&gt;!.k0$s+13$s0;V'g&amp;]#JJ,~&gt;
+!B'oVeXQU9!.k0$s+13$s0;V'eH*6=J,~&gt;
+!B:&amp;Xgme?@!.k0$s+13$s0;V'g]&gt;&gt;PJ,~&gt;
+!B0uWg7/-&gt;!.k0$s+13$s0;V'g&amp;]#JJ,~&gt;
+!B'oVeXQU9!.k0$s+13$s0;V'eH*6=J,~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgnt,N!8IPP!;c`o!;c`o!;ulm!.k0$s+13$s7$'fg]&gt;&gt;PJ,~&gt;
+!B0uWg8=oL!8IPP!;c`o!;c`o!;ulm!.k0$s+13$s7$'fg&amp;]#JJ,~&gt;
+!B'oVeY`BG!8IPP!;c`o!;c`o!;ulm!.k0$s+13$s7$'feH*6=J,~&gt;
+!B:&amp;Xgti#0!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!&lt;)rn!.k0$s+13$s7$'fg]&gt;&gt;PJ,~&gt;
+!B0uWg&gt;2f.!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!&lt;)rn!.k0$s+13$s7$'fg&amp;]#JJ,~&gt;
+!B'oVe_U9)!&lt;&lt;)s!7_&amp;J!8RVO!;ulo!;ulo!&lt;)rn!.k0$s+13$s7$'feH*6=J,~&gt;
+!B:&amp;Xh!P.7!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s7$'fg]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s7$'fg&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!&lt;)rr!!*&amp;s!7UuJ!8[\T!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!&lt;)rt!&lt;)rt!.k0$s+13$
+s7$'feH*6=J,~&gt;
+!B:&amp;Xh!P.7!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
+s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultq&gt;^HpJcC&lt;$JcC&lt;$n,NCB!Q6pI~&gt;
+!B0uWg?nq5!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
+s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultq&gt;^HpJcC&lt;$JcC&lt;$n,NC@!Pp[E~&gt;
+!B'oVea&lt;D0!;ulr!&lt;3#u!;ulq!&lt;)rr!&lt;&lt;)t!&lt;)rr!&lt;3#t!!E6$!&lt;&lt;#urr;uu!&lt;;utqu?TprVufr
+s8W&amp;uq&gt;^HprVultrr;uurVultrr;uurVultq&gt;^HpJcC&lt;$JcC&lt;$n,NC;!P1.=~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ps8N(Ms+13$s+14=s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ps8N(Ms+13$s+14=s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8;rts8N)us7lZps8;rts8;rts7lWps7QHms7lZos7lZps7ZNc
+s8N)us8N)ts8N)us8N)ts8N)ps8N(Ms+13$s+14=s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
 rW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrD`lrW)rtrrE#trrE&amp;urrE#trrDlprr@WMJcC&lt;$
-JcG3=rpKm?4b*~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
+JcG3=rnIOm2h1~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
 rW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrD`lrW)rtrrE#trrE&amp;urrE#trrDlprr@WMJcC&lt;$
-JcG3=rp'U23e.~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
+JcG3=rn7Ch2Lk~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N'(rrE*!!!*'!rW)osrW)uurrE#trrE*!rW)osrVururVuru
 rW!*$!!*'!rW)rtrVururW)osrW)rtr;cltrrD`lrW)rtrrE#trrE&amp;urrE#trrDlprr@WMJcC&lt;$
-JcG3=roX=&amp;3.L~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
+JcG3=rm_%\21P~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
 !!*'!!!*'!!!)rsrr&lt;-#!!)orrrE&amp;urW)KgrW)osrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;
-rpKm?4b*~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
+rnIOm2h1~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
 !!*'!!!*'!!!)rsrr&lt;-#!!)orrrE&amp;urW)KgrW)osrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;
-rp'U23e.~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
+rn7Ch2Lk~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N'*rr&lt;'!!!*'!!!)orrrE*!rrE#trrE*!rrDrrrr&lt;Q/!!*'!
 !!*'!!!*'!!!)rsrr&lt;-#!!)orrrE&amp;urW)KgrW)osrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;
-roX=&amp;3.L~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
-!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;rpKm?4b*~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
-!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;rp'U23e.~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
-!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;roX=&amp;3.L~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)qs8N(Ms+13$s+14&lt;s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)qs8N(Ms+13$s+14&lt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
-rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)qs8N(Ms+13$s+14&lt;s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
-s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)qs8N(Ms+13$s+14;s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
-s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)qs8N(Ms+13$s+14;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
-s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)qs8N(Ms+13$s+14;s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fms8N(Ms+13$s+14;s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fms8N(Ms+13$s+14;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
-s7lZns8)fos8)fms8N(Ms+13$s+14;s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
-s7lZis7lZms8;ros8;rns8N(Ms+13$s+14;s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
-s7lZis7lZms8;ros8;rns8N(Ms+13$s+14;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
-s7lZis7lZms8;ros8;rns8N(Ms+13$s+14;s8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^n*U/J!.k0$s+13$s+143s8MHffKF`~&gt;
-!BU8[lg=`F!.k0$s+13$s+143s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;B!.k0$s+13$s+143s8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^n&amp;PJ-!4r4/!;c`o!;c`o!;lfm!.k0$s+13$s7$'fmfD'(J,~&gt;
-!BU8[lc9&amp;)!4r4/!;c`o!;c`o!;lfm!.k0$s+13$s7$'flN,&lt;mJ,~&gt;
-!BC,YkK!W%!4r4/!;c`o!;c`o!;lfm!.k0$s+13$s7$'fk5iU_J,~&gt;
-!BpJ^n(n$&lt;!;6Bk!5&amp;:.!;ulo!;ulo!;uln!.k0$s+13$s7$'fmfD'(J,~&gt;
-!BU8[leVU8!;6Bk!5&amp;:.!;ulo!;ulo!;uln!.k0$s+13$s7$'flN,&lt;mJ,~&gt;
-!BC,YkM?14!;6Bk!5&amp;:.!;ulo!;ulo!;uln!.k0$s+13$s7$'fk5iU_J,~&gt;
-!BpJ^n*U/J!&lt;)rl!;-&lt;k!5/@3!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!;uls!.k0$s+13$s6K^amfD'(
+rm_%\21P~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
+!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;rnIOm2h1~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
+!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;rn7Ch2Lk~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N*!rs&amp;Q(!!*'!!!)orrrE&amp;urrE*!rrE&amp;upAb^'!!*'!!!*'!
+!!*'!!!)rsrr&lt;'!pAk3mrrDThrW)lrrrE#trrE&amp;urrE#trrDoqrr@WMJcC&lt;$JcG0&lt;rm_%\21P~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)qs8N(Ms+13$s+14&lt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)qs8N(Ms+13$s+14&lt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#rs8N*!s8;rts8N)rs8N)us8N*!s8N)us7ZL'rr&lt;'!rr&lt;'!rr&lt;'!
+rr&lt;&amp;ss8N'!s7ZNms8N)is8E#qs8N)ts8N)us8N)ts8N)qs8N(Ms+13$s+14&lt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
+s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)qs8N(Ms+13$s+14;s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
+s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)qs8N(Ms+13$s+14;s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ss8N)us8E#us8E#ss8E#ss8;rrs8E#os8N*!s8N*!s8N*!s8E#t
+s8Duus8E#ms8N)js8E#os8N*!s8N)ss8N*!s8N)qs8N(Ms+13$s+14;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fms8N(Ms+13$s+14;s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fms8N(Ms+13$s+14;s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss82iss8E#ts7lZms8;rqs7lWps8;ots8Duus7HBks7lZps7lZi
+s7lZns8)fos8)fms8N(Ms+13$s+14;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
+s7lZis7lZms8;ros8;rns8N(Ms+13$s+14;s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
+s7lZis7lZms8;ros8;rns8N(Ms+13$s+14;s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts82lss8N)ss8;rns8N)ps8)crs8;ots8Duus8)crs8;rps8)fr
+s7lZis7lZms8;ros8;rns8N(Ms+13$s+14;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!.k0$s+13$s+143s8LdS`&amp;E2~&gt;
+!B0uWg?nq5!.k0$s+13$s+143s8L^Q_)?f~&gt;
+!B'oVea&lt;D0!.k0$s+13$s+143s8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;XgrKHo!4r4/!;c`o!;c`o!;lfm!.k0$s+13$s7$'fg]&gt;&gt;PJ,~&gt;
+!B0uWg;j6m!4r4/!;c`o!;c`o!;lfm!.k0$s+13$s7$'fg&amp;]#JJ,~&gt;
+!B'oVe]7^h!4r4/!;c`o!;c`o!;lfm!.k0$s+13$s7$'feH*6=J,~&gt;
+!B:&amp;Xgti#)!;6Bk!5&amp;:.!;ulo!;ulo!;uln!.k0$s+13$s7$'fg]&gt;&gt;PJ,~&gt;
+!B0uWg&gt;2f'!;6Bk!5&amp;:.!;ulo!;ulo!;uln!.k0$s+13$s7$'fg&amp;]#JJ,~&gt;
+!B'oVe_U9&quot;!;6Bk!5&amp;:.!;ulo!;ulo!;uln!.k0$s+13$s7$'feH*6=J,~&gt;
+!B:&amp;Xh!P.7!&lt;)rl!;-&lt;k!5/@3!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!;uls!.k0$s+13$s6K^ag]&gt;&gt;P
 J,~&gt;
-!BU8[lg=`F!&lt;)rl!;-&lt;k!5/@3!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!;uls!.k0$s+13$s6K^alN,&lt;m
+!B0uWg?nq5!&lt;)rl!;-&lt;k!5/@3!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!;uls!.k0$s+13$s6K^ag&amp;]#J
 J,~&gt;
-!BC,YkO&amp;&lt;B!&lt;)rl!;-&lt;k!5/@3!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!;uls!.k0$s+13$s6K^ak5iU_
+!B'oVea&lt;D0!&lt;)rl!;-&lt;k!5/@3!&lt;3#t!&lt;)rt!&lt;&lt;*!!;uls!&lt;&lt;*!!;uls!.k0$s+13$s6K^aeH*6=
 J,~&gt;
-!BpJ^n*U/J!;lfr!&lt;)rt!&lt;)rr!;uls!!*&amp;t!&lt;3#s!&lt;&lt;)u!&lt;&lt;)u!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t
-!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;)rt!.k0$s+13$s6K^amfD'(J,~&gt;
-!BU8[lg=`F!;lfr!&lt;)rt!&lt;)rr!;uls!!*&amp;t!&lt;3#s!&lt;&lt;)u!&lt;&lt;)u!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t
-!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;)rt!.k0$s+13$s6K^alN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!;lfr!&lt;)rt!&lt;)rr!;uls!!*&amp;t!&lt;3#s!&lt;&lt;)u!&lt;&lt;)u!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t
-!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;)rt!.k0$s+13$s6K^ak5iU_J,~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#qs8N*!rriE&amp;!!*'!q#LEoq#LHppAb3nrW)uur;cisq#LHppAb3n
-r;cltr;cKirrE&amp;urrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=rpKm?4b*~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#qs8N*!rriE&amp;!!*'!q#LEoq#LHppAb3nrW)uur;cisq#LHppAb3n
-r;cltr;cKirrE&amp;urrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=rp'U23e.~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#qs8N*!rriE&amp;!!*'!q#LEoq#LHppAb3nrW)uur;cisq#LHppAb3n
-r;cltr;cKirrE&amp;urrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=roX=&amp;3.L~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;rs82lqs8E#ss8E#us8E#ts8E#ts8;rts8N*!s8N)ts8N)us8N)t
-s8N)ts8;rts8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+14&gt;s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;rs82lqs8E#ss8E#us8E#ts8E#ts8;rts8N*!s8N)ts8N)us8N)t
-s8N)ts8;rts8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+14&gt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;rs82lqs8E#ss8E#us8E#ts8E#ts8;rts8N*!s8N)ts8N)us8N)t
-s8N)ts8;rts8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+14&gt;s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#qs82lqs8N)rs8N*!s8N)ss8N)us8E#ps8N)ts8N)os8N)ts8E#p
-s8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8N)us8N(Ms+13$s+14&gt;s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#qs82lqs8N)rs8N*!s8N)ss8N)us8E#ps8N)ts8N)os8N)ts8E#p
-s8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8N)us8N(Ms+13$s+14&gt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#qs82lqs8N)rs8N*!s8N)ss8N)us8E#ps8N)ts8N)os8N)ts8E#p
-s8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8N)us8N(Ms+13$s+14&gt;s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;rs8N*!rr&lt;&amp;ts7ZNns8N)ss8N)us8N)ps8N)ts8N)us7lZns8N)o
-s8N*!s8N)ls8E#rs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;rs8N*!rr&lt;&amp;ts7ZNns8N)ss8N)us8N)ps8N)ts8N)us7lZns8N)o
-s8N*!s8N)ls8E#rs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;rs8N*!rr&lt;&amp;ts7ZNns8N)ss8N)us8N)ps8N)ts8N)us7lZns8N)o
-s8N*!s8N)ls8E#rs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#qs8N)qs7ZNns8N)ss8N)us8N)ps8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#qs8N)qs7ZNns8N)ss8N)us8N)ps8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#qs8N)qs7ZNns8N)ss8N)us8N)ps8N)ts8N*!s7cTms8N)os8N'#
-rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;rs8N)qs8E#ns8E#ts8E#ts8N)ps8N)us8E#us8N)ss8N)ts8N)n
-s8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)us8E&quot;Ls+13$s+14&gt;s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;rs8N)qs8E#ns8E#ts8E#ts8N)ps8N)us8E#us8N)ss8N)ts8N)n
-s8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)us8E&quot;Ls+13$s+14&gt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;rs8N)qs8E#ns8E#ts8E#ts8N)ps8N)us8E#us8N)ss8N)ts8N)n
-s8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)us8E&quot;Ls+13$s+14&gt;s8M0^a#JS~&gt;
-!BpJ^n*U/T!!`H'rrE'!s8E#ss7u`ns7lZps7cTos7lZns7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fps7u_Hs+13$s+14=s8MHffKF`~&gt;
-!BU8[lg=`P!!`H'rrE'!s8E#ss7u`ns7lZps7cTos7lZns7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fps7u_Hs+13$s+14=s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;L!!`H'rrE'!s8E#ss7u`ns7lZps7cTos7lZns7cQos7ZKns7lZls8E#ls7lZns8)fo
-s8)fps7u_Hs+13$s+14=s8M0^a#JS~&gt;
-!BpJ^n*U/S!!rT)rrE'!rr&lt;&amp;ts7u`ls8)frs8Duus8;rss7lZms8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;rps82kJs+13$s+14&lt;s8MHffKF`~&gt;
-!BU8[lg=`O!!rT)rrE'!rr&lt;&amp;ts7u`ls8)frs8Duus8;rss7lZms8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;rps82kJs+13$s+14&lt;s8M&lt;bcT6R~&gt;
-!BC,YkO&amp;&lt;K!!rT)rrE'!rr&lt;&amp;ts7u`ls8)frs8Duus8;rss7lZms8;ots8E#us82iss8Duus7lZl
-s8N)ls7lZms8;ros8;rps82kJs+13$s+14&lt;s8M0^a#JS~&gt;
-!BpJ^n*U/J!3Q;$!.k0$s+13$s1A=1mfD'(J,~&gt;
-!BU8[lg=`F!3Q;$!.k0$s+13$s1A=1lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!3Q;$!.k0$s+13$s1A=1k5iU_J,~&gt;
-!BpJ^n*U/J!3ZA%!.k0$s+13$s1870mfD'(J,~&gt;
-!BU8[lg=`F!3ZA%!.k0$s+13$s1870lN,&lt;mJ,~&gt;
-!BC,YkO&amp;&lt;B!3ZA%!.k0$s+13$s1870k5iU_J,~&gt;
-!BpJ^mu[SH!.k0$s+13$s1JC2mfD'(J,~&gt;
-!BU8[l]D/D!.k0$s+13$s1JC2lN,&lt;mJ,~&gt;
-!BC,YkE,`@!.k0$s+13$s1JC2k5iU_J,~&gt;
-!BpJ^mu[SH!.k0$s+13$s1JC2mfD'(J,~&gt;
-!BU8[l]D/D!.k0$s+13$s1JC2lN,&lt;mJ,~&gt;
-!BC,YkE,`@!.k0$s+13$s1JC2k5iU_J,~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!BpJ^mt(Lis+13$s+13hs8MHffKF`~&gt;
-!BU8[l[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BC,YkCNYas+13$s+13hs8M0^a#JS~&gt;
-!Bp8Xmt(Lis+13$s+13hs8MHffKF`~&gt;
-!BTuSl[f(es+13$s+13hs8M&lt;bcT6R~&gt;
-!BBcOkCNYas+13$s+13hs8M0^a#JS~&gt;
-!rk^bJa\0YJa\0YJa^GD!o-6EJ,~&gt;
-!rkU]Ja7mQJa7mQJa:/&lt;!n9R:J,~&gt;
-!rkIWJ`hUIJ`hUIJ`jl4!mEk.J,~&gt;
-!rk^^Ja\0YJa\0YJa^JE&quot;7&quot;Z1s*t~&gt;
-!rkUXJa7mQJa7mQJa:2=&quot;6@rus*t~&gt;
-!rkIRJ`hUIJ`hUIJ`jo5&quot;5h&lt;ds*t~&gt;
-s8N-nioYg\Ja\0YJa\0Y`UEi^!_`RnJ,~&gt;
-s8N-igYdYKJa7mQJa7mQ`U!QR!_34iJ,~&gt;
-s8N-eeCoK:J`hUIJ`hUI`TR9F!^cqeJ,~&gt;
-rr&lt;!e!R9#CfR_\+fR_\+fZ2YE7K3=;~&gt;
-rr&lt;!b!Q3!0c[jDnc[jDncc=B36N7&quot;8~&gt;
-rr&lt;!^!P,sra+;9^a+;9^a2c7#55tS4~&gt;
-r;V=2JN\QIJN\QI`BF/!J,~&gt;
-r;V=/JNA?CJNA?C`B*qsJ,~&gt;
-r;V=-JN/3?JN/3?`AmeqJ,~&gt;
+!B:&amp;Xh!P.7!;lfr!&lt;)rt!&lt;)rr!;uls!!*&amp;t!&lt;3#s!&lt;&lt;)u!&lt;&lt;)u!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t
+!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;)rt!.k0$s+13$s6K^ag]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!;lfr!&lt;)rt!&lt;)rr!;uls!!*&amp;t!&lt;3#s!&lt;&lt;)u!&lt;&lt;)u!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t
+!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;)rt!.k0$s+13$s6K^ag&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!;lfr!&lt;)rt!&lt;)rr!;uls!!*&amp;t!&lt;3#s!&lt;&lt;)u!&lt;&lt;)u!&lt;&lt;)t!&lt;)rp!&lt;3#s!&lt;&lt;)u!&lt;&lt;)t
+!&lt;&lt;)t!;c`q!&lt;)rt!&lt;3#u!&lt;)rt!&lt;3#u!&lt;)rt!&lt;)rt!.k0$s+13$s6K^aeH*6=J,~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#qs8N*!rriE&amp;!!*'!q#LEoq#LHppAb3nrW)uur;cisq#LHppAb3n
+r;cltr;cKirrE&amp;urrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=rnIOm2h1~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#qs8N*!rriE&amp;!!*'!q#LEoq#LHppAb3nrW)uur;cisq#LHppAb3n
+r;cltr;cKirrE&amp;urrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=rn7Ch2Lk~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#qs8N*!rriE&amp;!!*'!q#LEoq#LHppAb3nrW)uur;cisq#LHppAb3n
+r;cltr;cKirrE&amp;urrE#trrE&amp;urrE#trrE#tqZ)3IJcC&lt;$JcG3=rm_%\21P~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;rs82lqs8E#ss8E#us8E#ts8E#ts8;rts8N*!s8N)ts8N)us8N)t
+s8N)ts8;rts8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+14&gt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;rs82lqs8E#ss8E#us8E#ts8E#ts8;rts8N*!s8N)ts8N)us8N)t
+s8N)ts8;rts8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+14&gt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;rs82lqs8E#ss8E#us8E#ts8E#ts8;rts8N*!s8N)ts8N)us8N)t
+s8N)ts8;rts8N*!s8N)ts8N)ks8E#ts8N)ts8N)us8N)ts8N)ts7u_Hs+13$s+14&gt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#qs82lqs8N)rs8N*!s8N)ss8N)us8E#ps8N)ts8N)os8N)ts8E#p
+s8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8N)us8N(Ms+13$s+14&gt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#qs82lqs8N)rs8N*!s8N)ss8N)us8E#ps8N)ts8N)os8N)ts8E#p
+s8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8N)us8N(Ms+13$s+14&gt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#qs82lqs8N)rs8N*!s8N)ss8N)us8E#ps8N)ts8N)os8N)ts8E#p
+s8N)ts8N)ls8E#ss8N)ts8N)us8N)ts8N)ts8N)us8N(Ms+13$s+14&gt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;rs8N*!rr&lt;&amp;ts7ZNns8N)ss8N)us8N)ps8N)ts8N)us7lZns8N)o
+s8N*!s8N)ls8E#rs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;rs8N*!rr&lt;&amp;ts7ZNns8N)ss8N)us8N)ps8N)ts8N)us7lZns8N)o
+s8N*!s8N)ls8E#rs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;rs8N*!rr&lt;&amp;ts7ZNns8N)ss8N)us8N)ps8N)ts8N)us7lZns8N)o
+s8N*!s8N)ls8E#rs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#qs8N)qs7ZNns8N)ss8N)us8N)ps8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#qs8N)qs7ZNns8N)ss8N)us8N)ps8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#qs8N)qs7ZNns8N)ss8N)us8N)ps8N)ts8N*!s7cTms8N)os8N'#
+rr&lt;&amp;ls8E#qs8N)ts8N)us8N)ts8N)os8N(Ms+13$s+14&gt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;rs8N)qs8E#ns8E#ts8E#ts8N)ps8N)us8E#us8N)ss8N)ts8N)n
+s8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)us8E&quot;Ls+13$s+14&gt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;rs8N)qs8E#ns8E#ts8E#ts8N)ps8N)us8E#us8N)ss8N)ts8N)n
+s8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)us8E&quot;Ls+13$s+14&gt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;rs8N)qs8E#ns8E#ts8E#ts8N)ps8N)us8E#us8N)ss8N)ts8N)n
+s8;rks8E#os8N*!s8N)ss8N*!s8N)ts8N)us8E&quot;Ls+13$s+14&gt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.A!!`H'rrE'!s8E#ss7u`ns7lZps7cTos7lZns7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fps7u_Hs+13$s+14=s8LdS`&amp;E2~&gt;
+!B0uWg?nq?!!`H'rrE'!s8E#ss7u`ns7lZps7cTos7lZns7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fps7u_Hs+13$s+14=s8L^Q_)?f~&gt;
+!B'oVea&lt;D:!!`H'rrE'!s8E#ss7u`ns7lZps7cTos7lZns7cQos7ZKns7lZls8E#ls7lZns8)fo
+s8)fps7u_Hs+13$s+14=s8LOL\i#!~&gt;
+!B:&amp;Xh!P.@!!rT)rrE'!rr&lt;&amp;ts7u`ls8)frs8Duus8;rss7lZms8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;rps82kJs+13$s+14&lt;s8LdS`&amp;E2~&gt;
+!B0uWg?nq&gt;!!rT)rrE'!rr&lt;&amp;ts7u`ls8)frs8Duus8;rss7lZms8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;rps82kJs+13$s+14&lt;s8L^Q_)?f~&gt;
+!B'oVea&lt;D9!!rT)rrE'!rr&lt;&amp;ts7u`ls8)frs8Duus8;rss7lZms8;ots8E#us82iss8Duus7lZl
+s8N)ls7lZms8;ros8;rps82kJs+13$s+14&lt;s8LOL\i#!~&gt;
+!B:&amp;Xh!P.7!3Q;$!.k0$s+13$s1A=1g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!3Q;$!.k0$s+13$s1A=1g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!3Q;$!.k0$s+13$s1A=1eH*6=J,~&gt;
+!B:&amp;Xh!P.7!3ZA%!.k0$s+13$s1870g]&gt;&gt;PJ,~&gt;
+!B0uWg?nq5!3ZA%!.k0$s+13$s1870g&amp;]#JJ,~&gt;
+!B'oVea&lt;D0!3ZA%!.k0$s+13$s1870eH*6=J,~&gt;
+!B:&amp;XglVR5!.k0$s+13$s1JC2g]&gt;&gt;PJ,~&gt;
+!B0uWg5u@3!.k0$s+13$s1JC2g&amp;]#JJ,~&gt;
+!B'oVeWBh.!.k0$s+13$s1JC2eH*6=J,~&gt;
+!B:&amp;XglVR5!.k0$s+13$s1JC2g]&gt;&gt;PJ,~&gt;
+!B0uWg5u@3!.k0$s+13$s1JC2g&amp;]#JJ,~&gt;
+!B'oVeWBh.!.k0$s+13$s1JC2eH*6=J,~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B:&amp;Xgk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0uWg4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B'oVeUdaOs+13$s+13hs8LOL\i#!~&gt;
+!B90?gk#KVs+13$s+13hs8LdS`&amp;E2~&gt;
+!B0'=g4B9Ts+13$s+13hs8L^Q_)?f~&gt;
+!B&amp;j8eUdaOs+13$s+13hs8LOL\i#!~&gt;
+!rkIHJ_Yh3J_Yh3J_\)s!m!S*J,~&gt;
+!rkFFJ_G\/J_G\/J_Iro!l[&gt;&amp;J,~&gt;
+!rk@@J^o&gt;%J^o&gt;%J^qTe!kpbrJ,~&gt;
+!rkIDJ_Yh3J_Yh3J_\,t&quot;4kOWs*t~&gt;
+!rkFBJ_G\/J_G\/J_Iup&quot;4Y:Qs*t~&gt;
+!rk@;J^o&gt;%J^o&gt;%J^qWf&quot;4&quot;VBs*t~&gt;
+s8N-ecI.:!J_Yh3J_Yh3`SCL7!^cqeJ,~&gt;
+s8N-dbg:ppJ_G\/J_G\/`S1@2!^ZkdJ,~&gt;
+s8N-b`QEb^J^o&gt;%J^o&gt;%`RY&quot;&amp;!^H_bJ,~&gt;
+rr&lt;!^!P6!r`.&gt;jX`.&gt;jX`5fgr55tS4~&gt;
+rr&lt;!]!OfUk_1BFR_1BFR_8jCl4oYJ3~&gt;
+rr&lt;![!Nrb[\q.GD\q.GD]#VD^49#81~&gt;
+r;V=,JN&amp;-=JN&amp;-=`Ad_pJ,~&gt;
+r;V=+JMr';JMr';`A[YoJ,~&gt;
+r;V=*JMi!9JMi!9`ARSnJ,~&gt;
 %%EndData
 showpage
 %%Trailer</diff>
      <filename>books/ps/v71releasenotes.eps</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,315 @@
+20090726 tpd books/ps/v71releasenotes.eps updated for july 2009
+20090726 tpd books/ps/v71july2009.eps added
+20090726 tpd books/bookvol7.1 add july2009 what's new page
+20090726 tpd src/axiom-website/patches.html add July 2009 notes
+20090726 tpd src/axiom-website/releasenotes.html add July 2009 notes
+20090726 tpd Makefile VERSION July 2009
+20090726 tpd Makefile.pamphlet VERSION July 2009
+20090726 tpd July 2009 release
+20090716 tpd src/axiom-website/patches.html 20090716.01.tpd.patch
+20090716 tpd src/algebra/Makefile add SOLVTRA help, regress
+20090716 tpd books/bookvol10.4 add SOLVTRA regress, help, examples
+20090712 tpd src/axiom-website/patches.html 20090712.07.tpd.patch
+20090712 tpd src/interp/Makefile remove br-saturn
+20090712 tpd src/interp/br-con.boot merge br-saturn.boot
+20090712 tpd src/interp/br-saturn.boot removed, merge with br-con
+20090712 tpd src/axiom-website/patches.html 20090712.06.tpd.patch
+20090712 tpd src/interp/Makefile remove br-prof
+20090712 tpd src/interp/br-con.boot merge br-prof.boot
+20090712 tpd src/interp/br-prof.boot removed, merge with br-con
+20090712 tpd src/axiom-website/patches.html 20090712.05.tpd.patch
+20090712 tpd src/interp/Makefile remove br-util
+20090712 tpd src/interp/br-con.boot merge br-util.boot
+20090712 tpd src/interp/br-util.boot removed, merge with br-con
+20090712 tpd src/axiom-website/patches.html 20090712.04.tpd.patch
+20090712 tpd src/interp/Makefile remove br-search
+20090712 tpd src/interp/br-con.boot merge br-search.boot
+20090712 tpd src/interp/br-search.boot removed, merge with br-con
+20090712 tpd src/axiom-website/patches.html 20090712.03.tpd.patch
+20090712 tpd src/interp/Makefile remove br-op2
+20090712 tpd src/interp/br-con.boot merge br-op2.boot
+20090712 tpd src/interp/br-op2.boot removed, merge with br-con
+20090712 tpd src/axiom-website/patches.html 20090712.02.tpd.patch
+20090712 tpd src/interp/Makefile remove br-op1
+20090712 tpd src/interp/br-con.boot merge br-op1.boot
+20090712 tpd src/interp/br-op1.boot removed, merge with br-con
+20090712 tpd src/axiom-website/patches.html 20090712.01.tpd.patch
+20090712 tpd src/interp/Makefile remove showimp.boot
+20090712 tpd src/interp/br-con.boot merge showimp
+20090712 tpd src/interp/showimp.boot removed. merge with br-con
+20090711 tpd src/axiom-website/patches.html 20090711.07.tpd.patch
+20090711 tpd src/inter/Makefile remove br-data
+20090711 tpd src/interp/br-con.boot merge br-data
+20090711 tpd src/interp/br-data.boot removed, merge with br-con
+20090711 tpd src/axiom-website/patches.html 20090711.06.tpd.patch
+20090711 tpd src/interp/Makefile remove ht-root.boot
+20090711 tpd src/interp/ht-util.boot merge ht-root
+20090711 tpd src/interp/ht-root.boot removed, merge with ht-util
+20090711 tpd src/axiom-website/patches.html 20090711.05.tpd.patch
+20090711 tpd src/interp/Makefile remove ht-util.boot
+20090711 tpd src/interp/ht-util.boot merge ht-util
+20090711 tpd src/interp/htsetvar.boot removed, merge with ht-util
+20090711 tpd src/axiom-website/patches.html 20090711.04.tpd.patch
+20090711 tpd src/interp/Makefile remove bc-util
+20090711 tpd src/interp/bc-matrix.boot merge bc-util
+20090711 tpd src/interp/bc-util.boot removed, merge with bc-matrix
+20090711 tpd src/axiom-website/patches.html 20090711.03.tpd.patch
+20090711 tpd books/bookvol7 htsearch moved to $AXIOM/bin
+20090711 tpd src/axiom-website/patches.html 20090711.02.tpd.patch
+20090711 tpd books/bookvol10.4 fix )show QUATCT2 path to file
+20090711 tpd src/axiom-website/patches.html 20090711.01.tpd.patch
+20090711 tpd src/interp/bc-matrix.boot merge bc-solve
+20090711 tpd src/interp/bc-solve.boot removed, merge with bc-matrix
+20090711 tpd src/interp/Makefile remove bc-solve
+20090710 tpd src/axiom-website/patches.html 20090710.01.tpd.patch
+20090710 tpd src/interp/bc-matrix.boot merge bc-misc
+20090710 tpd src/interp/bc-misc.boot removed, merge with bc-matrix
+20090710 tpd src/interp/Makefile remove bc-misc
+20090709 tpd src/axiom-website/patches.html 20090709.01.tpd.patch
+20090709 tpd src/algebra/Makefile move QUATCT2 to bookvol10.4
+20090709 tpd src/algebra/quat.spad deleted
+20090709 tpd books/ps/v104quaternioncategoryfunctions2.ps added
+20090709 tpd books/bookvol10.4 add QUATCT2, help, regress, example
+20090709 tpd books/bookvol10.1 add chapter on quaternions
+20090706 tpd src/axiom-website/patches.html 20090706.02.tpd.patch
+20090706 tpd src/axiom-website/patches.html fixup patch order
+20090706 tpd src/axiom-website/patches.html 20090706.01.tpd.patch
+20090706 tpd src/algebra/Makefile parallel make help files
+20090706 tpd Makefile parallel make help files
+20090702 tpd src/axiom-website/patches.html 20090702.01.tpd.patch
+20090702 tpd src/algebra/Makefile add Any.regress, Any.help
+20090702 tpd books/bookvol10.3 fix = in Any, add regression and help files
+20090628 tpd src/axiom-website/patches.html 20090628.01.tpd.patch
+20090628 tpd src/algebra/Makefile add MathML regress, help
+20090628 tpd src/algebra/Makefile add TexFormat regress, help
+20090628 tpd books/bookvol10.3 fix horizontal fractions
+20090628 wxh src/interp/i-output.boot fix horizontal fractions
+20090628 tpd books/bookvol10.3 move MathMLFormat domain
+20090628 tpd books/bookvol10.4 move MathMLFormat domain
+20090627 tpd src/axiom-website/patches.html 20090627.01.tpd.patch
+20090627 tpd books/bookvol5 default set message autoload off
+20090627 tpd src/Makefile fix typo
+20090625 tpd src/axiom-website/patches.html 20090625.06.tpd.patch
+20090625 tpd books/bookvol10.4 WEIER +-&gt; conversion
+20090625 tpd src/axiom-website/patches.html 20090625.05.tpd.patch
+20090625 tpd books/bookvol10.4 UTSODETL +-&gt; conversion
+20090625 tpd src/axiom-website/patches.html 20090625.04.tpd.patch
+20090625 tpd books/bookvol10.4 UDPO +-&gt; conversion
+20090625 tpd src/axiom-website/patches.html 20090625.03.tpd.patch
+20090625 tpd books/bookvol10.4 UTSODE +-&gt; conversion
+20090625 tpd src/axiom-website/patches.html 20090625.02.tpd.patch
+20090625 tpd books/bookvol10.4 UPDIVP +-&gt; conversion
+20090625 tpd src/axiom-website/patches.html 20090625.01.tpd.patch
+20090625 tpd books/bookvol10.4 UPCDEN +-&gt; conversion
+20090624 tpd src/axiom-website/patches.html 20090624.07.tpd.patch
+20090624 tpd books/bookvol10.4 UFPS1 +-&gt; conversion
+20090624 tpd src/axiom-website/patches.html 20090624.06.tpd.patch
+20090624 tpd books/bookvol10.4 UNIFACT +-&gt; conversion
+20090624 tpd src/axiom-website/patches.html 20090624.05.tpd.patch
+20090624 tpd books/bookvol10.4 TWOFACT +-&gt; conversion
+20090624 tpd src/axiom-website/patches.html 20090624.04.tpd.patch
+20090624 tpd books/bookvol10.4 CLIP +-&gt; conversion
+20090624 tpd src/axiom-website/patches.html 20090624.03.tpd.patch
+20090624 tpd books/bookvol10.4 TRIGMNIP +-&gt; conversion
+20090624 tpd src/axiom-website/patches.html 20090624.02.tpd.patch
+20090624 tpd books/bookvol10.4 SOLVETRA +-&gt; conversion
+20090624 tpd src/axiom-website/patches.html 20090624.01.tpd.patch
+20090624 tpd books/bookvol10.4 RDETRS +-&gt; conversion
+20090623 tpd src/axiom-website/patches.html 20090623.03.tpd.patch
+20090623 tpd books/bookvol10.4 TRMANIP +-&gt; conversion
+20090623 tpd src/axiom-website/patches.html 20090623.02.tpd.patch
+20090623 tpd books/bookvol10.4 INTTR +-&gt; conversion
+20090623 tpd src/axiom-website/patches.html 20090623.01.tpd.patch
+20090623 tpd books/bookvol10.4 DRAWCFUN +-&gt; conversion
+20090622 tpd src/axiom-website/patches.html 20090622.05.tpd.patch
+20090622 tpd books/bookvol10.4 DRAWCURV +-&gt; conversion
+20090622 tpd src/axiom-website/patches.html 20090622.04.tpd.patch
+20090622 tpd books/bookvol10.4 UTSSOL +-&gt; conversion
+20090622 tpd books/bookvol10.4 TABLBUMP +-&gt; conversion
+20090622 tpd src/axiom-website/patches.html 20090622.03.tpd.patch
+20090622 tpd src/axiom-website/download.html add mandriva
+20090622 tpd src/axiom-website/patches.html 20090622.02.tpd.patch
+20090622 tpd src/Makefile make xhtml pages in parallel
+20090622 tpd Makefile make xhtml pages in parallel
+20090622 tpd src/axiom-website/patches.html 20090622.01.tpd.patch
+20090622 tpd books/bookvol10.4 ODESYS +-&gt; conversion
+20090621 tpd src/axiom-website/patches.html 20090621.09.tpd.patch
+20090621 tpd books/bookvol10.4 SUBRESP +-&gt; conversion
+20090621 tpd src/axiom-website/patches.html 20090621.08.tpd.patch
+20090621 tpd src/input/Makefile.pamphlet add spline.input
+20090621 tpd src/input/spline.input explain how to compute 2D splines
+20090621 tpd src/axiom-website/patches.html 20090621.07.tpd.patch
+20090621 tpd books/bookvol10.4 STTF +-&gt; conversion
+20090621 tpd src/axiom-website/patches.html 20090621.06.tpd.patch
+20090621 tpd books/bookvol10.4 STTAYLOR +-&gt; conversion
+20090621 tpd src/axiom-website/patches.html 20090621.05.tpd.patch
+20090621 tpd books/bookvol10.4 STINPROD +-&gt; conversion
+20090621 tpd src/axiom-website/patches.html 20090621.04.tpd.patch
+20090621 tpd books/bookvol10.4 STREAM3 +-&gt; conversion
+20090621 tpd src/axiom-website/patches.html 20090621.03.tpd.patch
+20090621 tpd books/bookvol10.4 SFRGCD +-&gt; conversion
+20090621 tpd src/axiom-website/patches.html 20090621.02.tpd.patch
+20090621 tpd books/bookvol10.4 SFQCMPK +-&gt; conversion
+20090621 tpd src/axiom-website/patches.html 20090621.01.tpd.patch
+20090621 tpd books/bookvol10.4 SMITH +-&gt; conversion
+20090620 tpd src/axiom-website/patches.html 20090620.11.tpd.patch
+20090620 tpd Makefile build input.dvi in parallel with src
+20090620 tpd src/axiom-website/patches.html 20090620.10.tpd.patch
+20090620 tpd books/bookvol10.4 RETSOL +-&gt; conversion
+20090620 tpd src/axiom-website/patches.html 20090620.09.tpd.patch
+20090620 tpd books/bookvol10.4 INTPAF +-&gt; conversion
+20090620 tpd src/axiom-website/patches.html 20090620.08.tpd.patch
+20090620 tpd src/Makefile build books in parallel with src
+20090620 tpd Makefile build books in parallel with src
+20090620 tpd src/axiom-website/patches.html 20090620.07.tpd.patch
+20090620 tpd src/input/numbers.input fix random zero failure
+20090620 tpd src/axiom-website/patches.html 20090620.06.tpd.patch
+20090620 tpd books/bookvol10.4 RSETGCD +-&gt; conversion
+20090620 tpd src/axiom-website/patches.html 20090620.05.tpd.patch
+20090620 tpd books/bookvol10.4 ODERED +-&gt; conversion
+20090620 tpd src/axiom-website/patches.html 20090620.04.tpd.patch
+20090620 tpd books/bookvol10.4 RECOP +-&gt; conversion
+20090620 tpd src/axiom-website/patches.html 20090620.03.tpd.patch
+20090620 tpd books/bookvol10.4 ODERTRIC +-&gt; conversion
+20090620 tpd src/axiom-website/patches.html 20090620.02.tpd.patch
+20090620 tpd books/bookvol10.4 ODERAT +-&gt; conversion
+20090620 tpd src/axiom-website/patches.html 20090620.01.tpd.patch
+20090620 tpd books/bookvol10.4 SUMRF +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.10.tpd.patch
+20090619 tpd books/bookvol10.4 LIMITRF +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.09.tpd.patch
+20090619 tpd books/bookvol10.4 INTRF +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.08.tpd.patch
+20090619 tpd books/bookvol10.4 RFFACT +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.07.tpd.patch
+20090619 tpd books/bookvol10.4 DEFINTRF +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.06.tpd.patch
+20090619 tpd books/bookvol10.4 RF +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.05.tpd.patch
+20090619 tpd books/bookvol10.4 QCMPACK +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.04.tpd.patch
+20090619 tpd books/bookvol10.4 QALGSET2 +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.03.tpd.patch
+20090619 tpd src/axiom-website/download.html add may2009 binaries
+20090619 tpd src/axiom-website/patches.html 20090619.02.tpd.patch
+20090619 tpd books/bookvol10.4 PUSHVAR +-&gt; conversion
+20090619 tpd src/axiom-website/patches.html 20090619.01.tpd.patch
+20090619 tpd books/bookvol10.4 INTPAF +-&gt; conversion
+20090616 tpd src/axiom-website/patches.html 20090616.02.tpd.patch
+20090616 tpd src/algebra/Makefile add gloss* files to 'all' stanza
+20090616 tpd src/axiom-website/patches.html 20090616.01.tpd.patch
+20090616 tpd src/algebra/Makefile add gloss* files
+20090614 tpd src/axiom-website/patches.html 20090614.05.tpd.patch
+20090614 tpd books/bookvol10.4 PRS +-&gt; conversion
+20090614 tpd src/axiom-website/patches.html 20090614.04.tpd.patch
+20090614 tpd books/bookvol10.4 PSEUDLIN +-&gt; conversion
+20090614 tpd src/axiom-website/patches.html 20090614.03.tpd.patch
+20090614 tpd books/bookvol10.4 ODPRRIC +-&gt; conversion
+20090614 tpd src/axiom-website/patches.html 20090614.02.tpd.patch
+20090614 tpd books/bookvol10.4 ODEPRIM +-&gt; conversion
+20090614 tpd src/axiom-website/patches.html 20090614.01.tpd.patch
+20090614 tpd books/bookvol10.4 PRIMELT +-&gt; conversion
+20090613 tpd src/axiom-website/patches.html 20090613.03.tpd.patch
+20090613 tpd books/bookvol10.4 POLY2UP +-&gt; conversion
+20090613 tpd src/axiom-website/patches.html 20090613.02.tpd.patch
+20090613 tpd books/bookvol10.4 SOLVEFOR +-&gt; conversion
+20090613 tpd src/axiom-website/patches.html 20090613.01.tpd.patch
+20090613 tpd books/bookvol10.4 PGCD +-&gt; conversion
+20090612 tpd src/axiom-website/patches.html 20090612.06.tpd.patch
+20090612 tpd books/bookvol10.4 POLY2 +-&gt; conversion
+20090612 tpd src/axiom-website/patches.html 20090612.05.tpd.patch
+20090612 tpd books/bookvol10.4 PFBRU +-&gt; conversion
+20090612 tpd src/axiom-website/patches.html 20090612.04.tpd.patch
+20090612 tpd books/bookvol10.4 PFBR +-&gt; conversion
+20090612 tpd src/axiom-website/patches.html 20090612.03.tpd.patch
+20090612 tpd books/bookvol10.4 POLYCATQ +-&gt; conversion
+20090612 tpd src/axiom-website/patches.html 20090612.02.tpd.patch
+20090612 tpd books/bookvol10.4 PAN2EXPR+-&gt; conversion
+20090612 tpd src/axiom-website/patches.html 20090612.01.tpd.patch
+20090612 tpd books/bookvol10.4 PFOQ+-&gt; conversion
+20090611 tpd src/axiom-website/patches.html 20090611.05.tpd.patch
+20090611 tpd books/bookvol10.4 PFO +-&gt; conversion
+20090611 tpd src/axiom-website/patches.html 20090611.04.tpd.patch
+20090611 tpd books/bookvol10.4 PLOTTOOL +-&gt; conversion
+20090611 tpd src/axiom-website/patches.html 20090611.03.tpd.patch
+20090611 tpd books/bookvol10.4 PICOERCE +-&gt; conversion
+20090611 tpd books/bookvol10.4 PMDOWN +-&gt; conversion
+20090611 tpd src/axiom-website/patches.html 20090611.02.tpd.patch
+20090611 tpd books/bookvol10.4 PMTOOLS +-&gt; conversion
+20090611 tpd src/axiom-website/patches.html 20090611.01.tpd.patch
+20090611 tpd books/bookvol10.4 PMPLCAT +-&gt; conversion
+20090610 tpd src/axiom-website/patches.html 20090610.03.tpd.patch
+20090610 tpd books/bookvol10.4 INTPM +-&gt; conversion
+20090610 tpd src/axiom-website/patches.html 20090610.02.tpd.patch
+20090610 tpd books/bookvol10.4 PMINS +-&gt; conversion
+20090610 tpd src/axiom-website/patches.html 20090610.01.tpd.patch
+20090610 tpd books/bookvol10.4 PMFS +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.09.tpd.patch
+20090609 tpd books/bookvol10.4 PATTERN1 +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.08.tpd.patch
+20090609 tpd books/bookvol10.4 PARTPERM +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.07.tpd.patch
+20090609 tpd books/bookvol10.4 PFRPAC +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.06.tpd.patch
+20090609 tpd books/bookvol10.4 PLEQN +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.05.tpd.patch
+20090609 tpd books/bookvol10.4 PWFFINTB +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.04.tpd.patch
+20090609 tpd books/bookvol10.4 ODETOOLS +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.03.tpd.patch
+20090609 tpd books/bookvol10.4 ODEINT +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.02.tpd.patch
+20090609 tpd books/bookvol10.4 NUMFMT +-&gt; conversion
+20090609 tpd src/axiom-website/patches.html 20090609.01.tpd.patch
+20090609 tpd books/bookvol10.4 NPCOEF +-&gt; conversion
+20090608 tpd src/axiom-website/patches.html 20090608.09.tpd.patch
+20090608 tpd books/bookvol10.4 NORMMA +-&gt; conversion
+20090608 tpd src/axiom-website/patches.html 20090608.08.tpd.patch
+20090608 tpd books/bookvol10.4 MULTSQFR +-&gt; conversion
+20090608 tpd src/axiom-website/patches.html 20090608.07.tpd.patch
+20090608 tpd books/bookvol10.4 MFINFACT +-&gt; conversion
+20090608 tpd src/axiom-website/patches.html 20090608.06.tpd.patch
+20090608 tpd books/bookvol10.4 MPRFF +-&gt; conversion
+20090608 tpd src/axiom-website/patches.html 20090608.05.tpd.patch
+20090608 tpd books/bookvol10.4 MHROWRED +-&gt; conversion
+20090608 tpd src/axiom-website/patches.html 20090608.04.tpd.patch
+20090608 tpd books/bookvol10.4 MDDFACT +-&gt; conversion
+20090608 tpd src/axiom-website/patches.html 20090608.03.tpd.patch
+20090608 tpd src/input/Makefile tpieazas002 CATS test added
+20090608 tpd src/input/tpieazas002.input added
+20090608 tpd src/axiom-website/patches.html 20090608.02.tpd.patch
+20090608 tpd books/bookvol10.4 MESH +-&gt; conversion
+20090608 tpd src/axiom-website/patches.html 20090608.01.tpd.patch
+20090608 tpd books/bookvol10.4 MATLIN +-&gt; conversion
+20090607 tpd src/axiom-website/patches.html 20090607.09.tpd.patch
+20090607 tpd src/input/tpieazas001.input add rm of output file
+20090607 tpd src/axiom-website/patches.html 20090607.08.tpd.patch
+20090607 tpd books/bookvol10.4 MCDEN +-&gt; conversion
+20090607 tpd src/axiom-website/patches.html 20090607.07.tpd.patch
+20090607 tpd src/input/tpieazas001.input fix name of output file
+20090607 tpd src/axiom-website/patches.html 20090607.06.tpd.patch
+20090607 tpd books/bookvol10.4 MAPPKG4 +-&gt; conversion
+20090607 tpd src/axiom-website/patches.html 20090607.05.tpd.patch
+20090607 tpd src/input/tpieazas001.input (rename) complete page 001
+20090607 tpd src/axiom-website/patches.html 20090607.04.tpd.patch
+20090607 tpd books/bookvol10.4 MAPPKG3 +-&gt; conversion
+20090607 tpd src/axiom-website/patches.html 20090607.03.tpd.patch
+20090607 tpd src/input/Makefile add tpiezas.input algebraic identities
+20090607 tpd src/input/tpiezas.input CATS tests of algebraic identities
+20090607 tpd src/axiom-website/patches.html 20090607.02.tpd.patch
+20090607 tpd books/bookvol10.4 MAPPKG2 +-&gt; conversion
+20090607 tpd src/axiom-website/patches.html 20090607.01.tpd.patch
+20090607 tpd books/bookvol10.4 MAPPGK1 +-&gt; conversion
+20090606 tpd src/axiom-website/patches.html 20090606.07.tpd.patch
+20090606 tpd books/bookvol10.4 MKUCFUNC +-&gt; conversion
+20090606 tpd src/axiom-website/patches.html 20090606.06.tpd.patch
+20090606 tpd books/bookvol10.4 MKBCFUNC +-&gt; conversion
+20090606 tpd src/axiom-website/patches.html 20090606.05.tpd.patch
+20090606 tpd books/bookvol10.4 LIST2MAP +-&gt; conversion
+20090606 tpd src/axiom-website/patches.html 20090606.04.tpd.patch
+20090606 tpd books/bookvol10.4 LF +-&gt; conversion
+20090606 tpd src/axiom-website/patches.html 20090606.03.tpd.patch
+20090606 tpd books/bookvol10.4 LPEFRAC +-&gt; conversion
 20090606 tpd src/axiom-website/patches.html 20090606.02.tpd.patch
 20090606 tpd books/bookvol10.4 LODOOPS +-&gt; conversion
 20090606 tpd src/axiom-website/patches.html 20090606.01.tpd.patch</diff>
      <filename>changelog</filename>
    </modified>
    <modified>
      <diff>@@ -373,19 +373,12 @@ This takes all of the Axiom volumes and creates .pdf copies in the
 final doc directory.
 
 &lt;&lt;docdir&gt;&gt;=
-docdir: ${SPD}/books/Makefile ${SRC}/doc/Makefile
+docdir: ${SRC}/doc/Makefile
 	@echo 41 making ${SRC}/doc
 	@mkdir -p ${INT}/doc
 	@mkdir -p ${MNT}/${SYS}/bin
-	@(cd ../books ; ${ENV} ${MAKE} )
 	@(cd doc ; ${ENV} ${MAKE} )
 
-${SPD}/books/Makefile: ${SPD}/books/Makefile.pamphlet
-	@echo 52 ${SPD}/books/Makefile from ${SPD}/books/Makefile.pamphlet
-	@( cd ${SPD}/books ; \
-           ${DOCUMENT} ${NOISE} Makefile ; \
-           cp Makefile.dvi ${MNT}/${SYS}/doc/src/books.Makefile.dvi )
-
 ${SRC}/doc/Makefile: ${SRC}/doc/Makefile.pamphlet
 	@echo 42 making ${SRC}/doc/Makefile from ${SRC}/doc/Makefile.pamphlet
 	@( cd doc ; \
@@ -537,19 +530,18 @@ post processing. Thus the &quot;-j 10&quot; argument to make. We use
 &lt;&lt;browserdir&gt;&gt;=
 browserdir: ${SPD}/books/bookvol11.pamphlet
 	@echo 11 making browser from bookvol11
-	@mkdir -p ${MNT}/${SYS}/doc/hypertex/bitmaps
-	@(cd ${MNT}/${SYS}/doc/hypertex ; \
-	  ${TANGLE} -t8 ${SPD}/books/bookvol11.pamphlet &gt;Makefile11 ; \
-	  ${ENV} ${MAKE} -j 10 -f Makefile11 ; \
-	  rm -f Makefile11 )
-
-@
-\section{The Makefile}
-This Makefile gets called twice during the system build. The first
-call is to the {\bf setup} stanza which will execute the {\bf scriptsdir}
-stanza to copy the system scripts to the [[mnt/${SYS}/bin]] directory. And
-the {\bf libdir} stanza is executed to build {\bf libspad.a} which contains
-code needed by the underlying lisp.
+#	@mkdir -p ${MNT}/${SYS}/doc/hypertex/bitmaps
+#	@(cd ${MNT}/${SYS}/doc/hypertex ; \
+#	  ${TANGLE} -t8 ${SPD}/books/bookvol11.pamphlet &gt;Makefile11 ; \
+#	  ${ENV} ${MAKE} -j 10 -f Makefile11 ; \
+#	  rm -f Makefile11 )
+
+@ \section{The Makefile} This Makefile gets called twice during the
+system build. The first call is to the {\bf setup} stanza which will
+execute the {\bf scriptsdir} stanza to copy the system scripts to the
+[[mnt/${SYS}/bin]] directory. And the {\bf libdir} stanza is executed
+to build {\bf libspad.a} which contains code needed by the underlying
+lisp.
 
 The second call will execute the {\bf all} stanza. This stanza walks 
 all of the lower level directories.</diff>
      <filename>src/Makefile.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -15790,16 +15790,6 @@ it to interpret special characters, in our case newlines.
 SHELL=bash
 
 @
-\subsection{The SPADFILES list}
-Note that we have excluded {\bf mlift.spad.jhd} from this list.
-We need to figure out which mlift.spad to keep.
-
-&lt;&lt;environment&gt;&gt;=
-
-SPADFILES= \
- ${OUTSRC}/quat.spad 
-
-@
 \subsection{The ALDORFILES list}
 &lt;&lt;environment&gt;&gt;=
 
@@ -15830,8 +15820,7 @@ DOCFILES= \
  ${DOC}/ndftip.as.dvi \
  ${DOC}/nepip.as.dvi  \
  ${DOC}/noptip.as.dvi ${DOC}/nqip.as.dvi \
- ${DOC}/nrc.as.dvi  ${DOC}/nsfip.as.dvi \
- ${DOC}/quat.spad.dvi 
+ ${DOC}/nrc.as.dvi  ${DOC}/nsfip.as.dvi 
 
 @
 \section{The Makefile Stanzas}
@@ -16437,6 +16426,7 @@ This keeps the regression test list in the algebra Makefile.
 HELPFILE=${HELP}/help.help
 
 SPADHELP=\
+ ${HELP}/Any.help \
  ${HELP}/ApplicationProgramInterface.help \
  ${HELP}/ArrayStack.help \
  ${HELP}/AssociationList.help        ${HELP}/BalancedBinaryTree.help \
@@ -16476,7 +16466,9 @@ SPADHELP=\
  ${HELP}/LinearOrdinaryDifferentialOperator1.help \
  ${HELP}/LinearOrdinaryDifferentialOperator2.help ${HELP}/List.help \
  ${HELP}/LyndonWord.help             ${HELP}/Magma.help \
- ${HELP}/MakeFunction.help           ${HELP}/MappingPackage1.help \
+ ${HELP}/MakeFunction.help \
+ ${HELP}/MathMLFormat.help \
+ ${HELP}/MappingPackage1.help \
  ${HELP}/MappingPackage2.help        ${HELP}/MappingPackage3.help \
  ${HELP}/Matrix.help                 ${HELP}/MatrixCategory.help \
  ${HELP}/Multiset.help \
@@ -16504,6 +16496,7 @@ SPADHELP=\
  ${HELP}/PartialFraction.help \
  ${HELP}/Permanent.help              ${HELP}/Permutation.help \
  ${HELP}/Polynomial.help             ${HELP}/Quaternion.help \
+ ${HELP}/QuaternionCategoryFunctions2.help \
  ${HELP}/Queue.help \
  ${HELP}/RadixExpansion.help         ${HELP}/RealClosure.help \
  ${HELP}/RealSolvePackage.help       ${HELP}/RegularTriangularSet.help \
@@ -16516,7 +16509,9 @@ SPADHELP=\
  ${HELP}/SquareFreeRegularTriangularSet.help ${HELP}/Stack.help \
  ${HELP}/Stream.help                 ${HELP}/String.help \
  ${HELP}/StringTable.help            ${HELP}/Symbol.help \
+ ${HELP}/TexFormat.help              \
  ${HELP}/Table.help                  ${HELP}/TextFile.help \
+ ${HELP}/TransSolvePackage.help \
  ${HELP}/TwoDimensionalArray.help    ${HELP}/TwoDimensionalViewport.help \
  ${HELP}/UnivariateSkewPolynomial.help \
  ${HELP}/UnivariatePolynomial.help   ${HELP}/UniversalSegment.help \
@@ -16533,7 +16528,7 @@ is put into a int/Makefile.algebra and then executed by make.
 &lt;&lt;algebra.regress&gt;&gt;=
 TESTSYS=  ${OBJ}/${SYS}/bin/interpsys
 
-REGRESS=\
+REGRESS= Any.regress \
  ApplicationProgramInterface.regress \
  ArrayStack.regress \
  AssociationList.regress        BalancedBinaryTree.regress \
@@ -16571,6 +16566,7 @@ REGRESS=\
  LinearOrdinaryDifferentialOperator1.regress \
  LinearOrdinaryDifferentialOperator2.regress List.regress \
  LyndonWord.regress             Magma.regress \
+ MathMLFormat.regress \
  MakeFunction.regress           MappingPackage1.regress \
  MappingPackage2.regress        MappingPackage3.regress \
  Matrix.regress                 MatrixCategory.regress \
@@ -16584,6 +16580,7 @@ REGRESS=\
  Permanent.regress              Permutation.regress \
  PlaneAlgebraicCurvePlot.regress Plot.regress \
  Polynomial.regress             Quaternion.regress \
+ QuaternionCategoryFunctions2.regress \
  Queue.regress \
  RadixExpansion.regress         RealClosure.regress \
  RealSolvePackage.regress       RegularTriangularSet.regress \
@@ -16594,7 +16591,8 @@ REGRESS=\
  SquareFreeRegularTriangularSet.regress Stack.regress \
  Stream.regress                 String.regress \
  StringTable.regress            Symbol.regress \
- Table.regress                  TextFile.regress \
+ Table.regress                  TexFormat.regress \
+ TextFile.regress               TransSolvePackage.regress \
  TwoDimensionalArray.regress    UnivariateSkewPolynomial.regress \
  UnivariatePolynomial.regress   UniversalSegment.regress \
  Vector.regress                 Void.regress \
@@ -16626,8 +16624,16 @@ all: ${REGRESS}
 	@echo algebra test cases complete.
 @
 &lt;&lt;spadhelp&gt;&gt;=
+${HELP}/Any.help: ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7000 create Any.help from ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} -R&quot;Any.help&quot; ${BOOKS}/bookvol10.3.pamphlet &gt;${HELP}/Any.help
+	@cp ${HELP}/Any.help ${HELP}/ANY.help
+	@${TANGLE} -R&quot;Any.input&quot; ${BOOKS}/bookvol10.3.pamphlet \
+            &gt;${INPUT}/Any.input
+	@echo &quot;Any (ANY)&quot; &gt;&gt;${HELPFILE}
+
 ${HELP}/ApplicationProgramInterface.help: ${BOOKS}/bookvol10.4.pamphlet
-	@echo 7000 create ApplicationProgramInterface.help from \
+	@echo 7005 create ApplicationProgramInterface.help from \
            ${BOOKS}/bookvol10.4.pamphlet
 	@${TANGLE} -R&quot;ApplicationProgramInterface.help&quot; \
            ${BOOKS}/bookvol10.4.pamphlet \
@@ -17253,6 +17259,15 @@ ${HELP}/MakeFunction.help: ${BOOKS}/bookvol10.4.pamphlet
             &gt;${INPUT}/MakeFunction.input
 	@echo &quot;MakeFunction (MKFUNC)&quot; &gt;&gt;${HELPFILE}
 
+${HELP}/MathMLFormat.help: ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7595 create MathMLFormat.help from ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} -R&quot;MathMLFormat.help&quot; ${BOOKS}/bookvol10.3.pamphlet \
+           &gt;${HELP}/MathMLFormat.help
+	@cp ${HELP}/MathMLFormat.help ${HELP}/MMLFORM.help
+	@${TANGLE} -R&quot;MathMLFormat.input&quot; ${BOOKS}/bookvol10.3.pamphlet \
+            &gt;${INPUT}/MathMLFormat.input
+	@echo &quot;MathMLFormat (MMLFORM)&quot; &gt;&gt;${HELPFILE}
+
 ${HELP}/MappingPackage1.help: ${BOOKS}/bookvol10.4.pamphlet
 	@echo 7600 create MappingPackage1.help from \
            ${BOOKS}/bookvol10.4.pamphlet
@@ -17589,6 +17604,18 @@ ${HELP}/Quaternion.help: ${BOOKS}/bookvol10.3.pamphlet
             &gt;${INPUT}/Quaternion.input
 	@echo &quot;Quaternion (QUAT)&quot; &gt;&gt;${HELPFILE}
 
+${HELP}/QuaternionCategoryFunctions2.help: ${BOOKS}/bookvol10.4.pamphlet
+	@echo 7945 create QuaternionCategoryFunctions2.help from \
+           ${BOOKS}/bookvol10.4.pamphlet
+	@${TANGLE} -R&quot;QuaternionCategoryFunctions2.help&quot; \
+           ${BOOKS}/bookvol10.4.pamphlet \
+           &gt;${HELP}/QuaternionCategoryFunctions2.help
+	@cp ${HELP}/QuaternionCategoryFunctions2.help ${HELP}/QUATCT2.help
+	@${TANGLE} -R&quot;QuaternionCategoryFunctions2.input&quot; \
+            ${BOOKS}/bookvol10.4.pamphlet \
+            &gt;${INPUT}/QuaternionCategoryFunctions2.input
+	@echo &quot;QuaternionCategoryFunctions2 (QUATCT2)&quot; &gt;&gt;${HELPFILE}
+
 ${HELP}/Queue.help: ${BOOKS}/bookvol10.3.pamphlet
 	@echo 7950 create Queue.help from ${BOOKS}/bookvol10.3.pamphlet
 	@${TANGLE} -R&quot;Queue.help&quot; ${BOOKS}/bookvol10.3.pamphlet \
@@ -17781,6 +17808,15 @@ ${HELP}/Table.help: ${BOOKS}/bookvol10.3.pamphlet
             &gt;${INPUT}/Table.input
 	@echo &quot;Table (TABLE)&quot; &gt;&gt;${HELPFILE}
 
+${HELP}/TexFormat.help: ${BOOKS}/bookvol10.3.pamphlet
+	@echo 8145 create TexFormat.help from ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} -R&quot;TexFormat.help&quot; ${BOOKS}/bookvol10.3.pamphlet \
+           &gt;${HELP}/TexFormat.help
+	@cp ${HELP}/TexFormat.help ${HELP}/TEX.help
+	@${TANGLE} -R&quot;TexFormat.input&quot; ${BOOKS}/bookvol10.3.pamphlet \
+            &gt;${INPUT}/TexFormat.input
+	@echo &quot;TexFormat (TEX)&quot; &gt;&gt;${HELPFILE}
+
 ${HELP}/TextFile.help: ${BOOKS}/bookvol10.3.pamphlet
 	@echo 8150 create TextFile.help from ${BOOKS}/bookvol10.3.pamphlet
 	@${TANGLE} -R&quot;TextFile.help&quot; ${BOOKS}/bookvol10.3.pamphlet \
@@ -17790,6 +17826,16 @@ ${HELP}/TextFile.help: ${BOOKS}/bookvol10.3.pamphlet
             &gt;${INPUT}/TextFile.input
 	@echo &quot;TextFile (TEXTFILE)&quot; &gt;&gt;${HELPFILE}
 
+${HELP}/TransSolvePackage.help: ${BOOKS}/bookvol10.4.pamphlet
+	@echo 8155 create TransSolvePackage.help from \
+           ${BOOKS}/bookvol10.4.pamphlet
+	@${TANGLE} -R&quot;TransSolvePackage.help&quot; ${BOOKS}/bookvol10.4.pamphlet \
+           &gt;${HELP}/TransSolvePackage.help
+	@cp ${HELP}/TransSolvePackage.help ${HELP}/SOLVETRA.help
+	@${TANGLE} -R&quot;TransSolvePackage.input&quot; ${BOOKS}/bookvol10.4.pamphlet \
+            &gt;${INPUT}/TransSolvePackage.input
+	@echo &quot;TransSolvePackage (SOLVETRA)&quot; &gt;&gt;${HELPFILE}
+
 ${HELP}/TwoDimensionalArray.help: ${BOOKS}/bookvol10.3.pamphlet
 	@echo 8160 create TwoDimensionalArray.help from \
            ${BOOKS}/bookvol10.3.pamphlet
@@ -17958,10 +18004,11 @@ ${HELP}/ZeroDimensionalSolvePackage.help: ${BOOKS}/bookvol10.4.pamphlet
 &lt;&lt;layer22&gt;&gt;
 &lt;&lt;order&gt;&gt;
 
-all: src ${OUT}/libdb.text ${DOCFILES} ${SPADBIN}/index.html \
-        ${SPADHELP}
+all: src ${OUT}/libdb.text ${DOCFILES} ${SPADBIN}/index.html gloss
 	@ echo 4302 finished ${IN}
 
+parallelhelp: ${SPADHELP}
+
 &lt;&lt;newcode&gt;&gt;
 
 ${SPADBIN}/index.html:
@@ -17975,6 +18022,12 @@ ${SPADBIN}/index.html:
 
 #all:	${SUBPART}
 
+gloss:
+	@ echo 5000 copying glossary files
+	@ cp ${SRC}/share/algebra/gloss.text ${MNT}/${SYS}/algebra
+	@ cp ${SRC}/share/algebra/glossdef.text ${MNT}/${SYS}/algebra
+	@ cp ${SRC}/share/algebra/glosskey.text ${MNT}/${SYS}/algebra
+
 everything: check lib db cmd gloss
 	@ echo 4303 invoking make in `pwd` with parms:
 	@ echo SYS= ${SYS} LSP= ${LSP} PART= ${PART} SUBPART= ${SUBPART}
@@ -17982,7 +18035,7 @@ everything: check lib db cmd gloss
 	@ echo OBJ= ${OBJ} MNT= ${MNT} O=${O} LISP=${LISP} BYE=${BYE}
 
 #src:	${AS}
-src:	${SPADFILES} ${ORDER}
+src:	${ORDER}
 	@ echo 4304 Building nrlibS from spad sources
 
 #	@ (cd ${MID} ; \</diff>
      <filename>src/algebra/Makefile.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -131,11 +131,11 @@
        Nov 2007
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
        Jan 2008
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
        Mar 2008
@@ -171,6 +171,11 @@
        Mar 2009
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+       May 2009
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -183,12 +188,12 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-debian-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -227,6 +232,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -239,12 +248,12 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-doyen-jan2008.iso&quot;&gt;iso&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -274,6 +283,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -286,6 +299,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
@@ -296,11 +313,11 @@
      &lt;/td&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/doyenthumb-ubuntu-july2008-bin.zip&quot;&gt;zip&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
-      &lt;a href=&quot;downloads/doyenthumb-ubuntu-july2008-bin.zip&quot;&gt;zip&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
      &lt;td align=&quot;center&quot;&gt;
@@ -329,11 +346,11 @@
       &lt;a href=&quot;downloads/silver-fedora5-nov182007-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-fedora5-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
-      &lt;/font&gt;
+      &lt;/font--&gt;
      &lt;/td&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
@@ -369,6 +386,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -383,12 +404,12 @@
       &lt;a href=&quot;downloads/silver-fedora6-nov182007-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-fedora6-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -429,6 +450,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -441,12 +466,12 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-fedora7-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -489,6 +514,12 @@
       &lt;a href=&quot;downloads/axiom-fedora7-mar2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-fedora7-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -503,12 +534,12 @@
       &lt;a href=&quot;downloads/silver-fedora8-nov182007-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-fedora8-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -551,6 +582,12 @@
       &lt;a href=&quot;downloads/axiom-fedora8-mar2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-fedora8-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -563,10 +600,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-fedora8-64-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -596,6 +633,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -608,10 +649,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
@@ -650,9 +691,14 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-fedora9-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
-
     &lt;tr&gt;
      &lt;td align=&quot;left&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
@@ -663,10 +709,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
@@ -699,24 +745,80 @@
       &lt;a href=&quot;downloads/axiom-fedora10-mar2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-fedora10-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
      &lt;td align=&quot;left&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
-       macosxppc
+       fedora11
       &lt;/font&gt;
      &lt;/td&gt;
      &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td--&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-fedora11-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-fedora11-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+    &lt;/tr&gt;
+
+    &lt;tr&gt;
+     &lt;td align=&quot;left&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+       macosxppc
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td--&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-macosxppc-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -743,6 +845,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -755,12 +861,12 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-opensuse-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -800,6 +906,12 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-opensuse-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -812,12 +924,12 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-redhat72-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -858,6 +970,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -870,12 +986,12 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-redhat9-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -916,6 +1032,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -928,12 +1048,12 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/silver-jan2008-src.tgz&quot;&gt;src&lt;/a&gt;
       &lt;a href=&quot;downloads/silver-ubuntu-jan2008-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;a href=&quot;downloads/axiom-mar2008-src.tgz&quot;&gt;src&lt;/a&gt;
@@ -976,6 +1096,12 @@
       &lt;a href=&quot;downloads/axiom-ubuntu-mar2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-ubuntu-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -988,10 +1114,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
@@ -1026,6 +1152,10 @@
       &lt;a href=&quot;downloads/axiom-ubuntu64-mar2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -1038,10 +1168,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
@@ -1075,6 +1205,12 @@
       &lt;a href=&quot;downloads/axiom-vector-mar2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-vector-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
 
     &lt;tr&gt;
@@ -1087,10 +1223,10 @@
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
      &lt;/td--&gt;
-     &lt;td align=&quot;center&quot;&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
-     &lt;/td&gt;
+     &lt;/td--&gt;
      &lt;td align=&quot;center&quot;&gt;
       &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
       &lt;/font&gt;
@@ -1121,6 +1257,60 @@
       &lt;a href=&quot;downloads/axiom-slackware-mar2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
       &lt;/font&gt;
      &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+    &lt;/tr&gt;
+
+    &lt;tr&gt;
+     &lt;td align=&quot;left&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+       mandriva
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td--&gt;
+     &lt;!--td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td--&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
+     &lt;td align=&quot;center&quot;&gt;
+      &lt;font face=&quot;Helvetica, Arial, sans-serif&quot; size=&quot;+1&quot;&gt;
+      &lt;a href=&quot;downloads/axiom-mandriva-may2009-src.tgz&quot;&gt;src&lt;/a&gt;
+      &lt;a href=&quot;downloads/axiom-mandriva-may2009-bin.tgz&quot;&gt;bin&lt;/a&gt;
+      &lt;/font&gt;
+     &lt;/td&gt;
     &lt;/tr&gt;
    &lt;/tbody&gt;
   &lt;/table&gt;
@@ -1194,6 +1384,8 @@ make
 
 
 &lt;h2&gt;CVS&lt;/h2&gt;
+  Note: As of May 2009, CVS is no longer supported. Use Git.
+
   You can also download the source tree from CVS and compile it. To
   download the code from sourceforge, do:
 
@@ -1236,10 +1428,10 @@ make
       around or, worse yet, don't install needed files. These notes
       show particular details for known systems
    &lt;/p&gt;
-  &lt;h3&gt;Fedora 10&lt;/h3&gt;
+  &lt;h3&gt;Fedora &lt;/h3&gt;
    &lt;pre&gt;
 yum install xterm emacs git-core patch texlive texlive-latex xorg-x11-proto-devel
-yum install libXt-devel libXpm-devel
+yum install libXt-devel libXpm-devel gcc
 download the latest axiom-(date)-src.tgz
 tar -zxf axiom-(date)-src.tgz
 cd axiom
@@ -1249,6 +1441,18 @@ make
 
    &lt;/pre&gt;
 
+  &lt;h3&gt;Mandriva &lt;/h3&gt;
+   &lt;pre&gt;
+urpmi xterm emacs git-core texlive texlive-latex libXpm-devel make gcc
+download the latest axiom-(date)-src.tgz
+tar -zxf axiom-(date)-src.tgz
+cd axiom
+export AXIOM=`pwd`/mnt/mandriva
+export PATH=$AXIOM/bin:$PATH
+make
+
+   &lt;/pre&gt;
+
   &lt;h3&gt;Ubuntu&lt;/h3&gt;
    &lt;pre&gt;
 echo 0 &gt;/proc/sys/kernel/randomize_va_space</diff>
      <filename>src/axiom-website/download.html</filename>
    </modified>
    <modified>
      <diff>@@ -94,6 +94,7 @@
 RELEASES
 &lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#latest&quot;&gt;Latest&lt;/li&gt;
+ &lt;li&gt;&lt;a href=&quot;#20090726&quot;&gt;July 26, 2009&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#20090530&quot;&gt;May 30, 2009&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#20090324&quot;&gt;March 24, 2009&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#20090122&quot;&gt;January 22, 2009&lt;/li&gt;
@@ -1398,10 +1399,12 @@ bug 7197 fix hyperdoc/graphics failure&lt;br/&gt;
 &lt;a href=&quot;patches/20090530.02.tpd.patch&quot;&gt;20090530.02.tpd.patch&lt;/a&gt;
 May 2009 release changes&lt;br/&gt;
 
+
   &lt;hr&gt;
-   &lt;h3&gt;July 2009 Release&lt;/h3&gt;
-&lt;a name=&quot;latest&quot;/&gt;
-In process, not yet released&lt;br/&gt;&lt;br/&gt;
+  &lt;h3&gt;July 2009 release&lt;/h3&gt;
+&lt;a name=&quot;20090726&quot;/&gt;
+&lt;a href=&quot;releasenotes.html#20090726&quot;&gt;July 2009 Release Notes
+&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;
   &lt;hr&gt;
 &lt;a href=&quot;patches/20090601.01.tpd.patch&quot;&gt;20090601.01.tpd.patch&lt;/a&gt;
 bookvol10.4 FSPRMELT +-&gt; conversion&lt;br/&gt;
@@ -1467,5 +1470,270 @@ bookvol10.4 LINDEP +-&gt; conversion&lt;br/&gt;
 bookvol10.4 LODOF +-&gt; conversion&lt;br/&gt;
 &lt;a href=&quot;patches/20090606.02.tpd.patch&quot;&gt;20090606.02.tpd.patch&lt;/a&gt;
 bookvol10.4 LODOOPS +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090606.03.tpd.patch&quot;&gt;20090606.03.tpd.patch&lt;/a&gt;
+bookvol10.4 LPEFRAC +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090606.04.tpd.patch&quot;&gt;20090606.04.tpd.patch&lt;/a&gt;
+bookvol10.4 LF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090606.05.tpd.patch&quot;&gt;20090606.05.tpd.patch&lt;/a&gt;
+bookvol10.4 LIST2MAP +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090606.06.tpd.patch&quot;&gt;20090606.06.tpd.patch&lt;/a&gt;
+bookvol10.4 MKBCFUNC +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090606.07.tpd.patch&quot;&gt;20090606.07.tpd.patch&lt;/a&gt;
+bookvol10.4 MKUCFUNC +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.01.tpd.patch&quot;&gt;20090607.01.tpd.patch&lt;/a&gt;
+bookvol10.4 MAPPGK1 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.02.tpd.patch&quot;&gt;20090607.02.tpd.patch&lt;/a&gt;
+bookvol10.4 MAPPGK2 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.03.tpd.patch&quot;&gt;20090607.03.tpd.patch&lt;/a&gt;
+tpieazas.input CATS tests of algebraic identites&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.04.tpd.patch&quot;&gt;20090607.04.tpd.patch&lt;/a&gt;
+bookvol10.4 MAPPGK3 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.05.tpd.patch&quot;&gt;20090607.05.tpd.patch&lt;/a&gt;
+tpieazas001.input complete page 001&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.06.tpd.patch&quot;&gt;20090607.06.tpd.patch&lt;/a&gt;
+bookvol10.4 MAPPGK4 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.07.tpd.patch&quot;&gt;20090607.07.tpd.patch&lt;/a&gt;
+tpieazas001.input fix name of output file&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.08.tpd.patch&quot;&gt;20090607.08.tpd.patch&lt;/a&gt;
+bookvol10.4 MCDEN +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090607.09.tpd.patch&quot;&gt;20090607.09.tpd.patch&lt;/a&gt;
+tpieazas001.input add rm of output file&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.01.tpd.patch&quot;&gt;20090608.01.tpd.patch&lt;/a&gt;
+bookvol10.4 MATLIN +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.02.tpd.patch&quot;&gt;20090608.02.tpd.patch&lt;/a&gt;
+bookvol10.4 MESH +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.03.tpd.patch&quot;&gt;20090608.03.tpd.patch&lt;/a&gt;
+tpieazas002.input CATS test added&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.04.tpd.patch&quot;&gt;20090608.04.tpd.patch&lt;/a&gt;
+bookvol10.4 MDDFACT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.05.tpd.patch&quot;&gt;20090608.05.tpd.patch&lt;/a&gt;
+bookvol10.4 MHROWRED +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.06.tpd.patch&quot;&gt;20090608.06.tpd.patch&lt;/a&gt;
+bookvol10.4 MPRFF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.07.tpd.patch&quot;&gt;20090608.07.tpd.patch&lt;/a&gt;
+bookvol10.4 MFINFACT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.08.tpd.patch&quot;&gt;20090608.08.tpd.patch&lt;/a&gt;
+bookvol10.4 MULTSQFR +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090608.09.tpd.patch&quot;&gt;20090608.09.tpd.patch&lt;/a&gt;
+bookvol10.4 NORMMA +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.01.tpd.patch&quot;&gt;20090609.01.tpd.patch&lt;/a&gt;
+bookvol10.4 NPCOEF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.02.tpd.patch&quot;&gt;20090609.02.tpd.patch&lt;/a&gt;
+bookvol10.4 NUMFMT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.03.tpd.patch&quot;&gt;20090609.03.tpd.patch&lt;/a&gt;
+bookvol10.4 ODEINT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.04.tpd.patch&quot;&gt;20090609.04.tpd.patch&lt;/a&gt;
+bookvol10.4 ODETOOLS +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.05.tpd.patch&quot;&gt;20090609.05.tpd.patch&lt;/a&gt;
+bookvol10.4 PWFFINTB +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.06.tpd.patch&quot;&gt;20090609.06.tpd.patch&lt;/a&gt;
+bookvol10.4 PLEQN +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.07.tpd.patch&quot;&gt;20090609.07.tpd.patch&lt;/a&gt;
+bookvol10.4 PFRPAC +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.08.tpd.patch&quot;&gt;20090609.08.tpd.patch&lt;/a&gt;
+bookvol10.4 PARTPERM +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090609.09.tpd.patch&quot;&gt;20090609.09.tpd.patch&lt;/a&gt;
+bookvol10.4 PATTERN1 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090610.01.tpd.patch&quot;&gt;20090610.01.tpd.patch&lt;/a&gt;
+bookvol10.4 PMFS +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090610.02.tpd.patch&quot;&gt;20090610.02.tpd.patch&lt;/a&gt;
+bookvol10.4 PMINS +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090610.03.tpd.patch&quot;&gt;20090610.03.tpd.patch&lt;/a&gt;
+bookvol10.4 INTPM +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090611.01.tpd.patch&quot;&gt;20090611.01.tpd.patch&lt;/a&gt;
+bookvol10.4 PMPLCAT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090611.02.tpd.patch&quot;&gt;20090611.02.tpd.patch&lt;/a&gt;
+bookvol10.4 PMTOOLS +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090611.03.tpd.patch&quot;&gt;20090611.03.tpd.patch&lt;/a&gt;
+bookvol10.4 PMDOWN, PICOERCE +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090611.04.tpd.patch&quot;&gt;20090611.04.tpd.patch&lt;/a&gt;
+bookvol10.4 PLOTTOOL +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090611.05.tpd.patch&quot;&gt;20090611.05.tpd.patch&lt;/a&gt;
+bookvol10.4 PFO +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090612.01.tpd.patch&quot;&gt;20090612.01.tpd.patch&lt;/a&gt;
+bookvol10.4 PFOQ +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090612.02.tpd.patch&quot;&gt;20090612.02.tpd.patch&lt;/a&gt;
+bookvol10.4 PAN2EXPR +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090612.03.tpd.patch&quot;&gt;20090612.03.tpd.patch&lt;/a&gt;
+bookvol10.4 POLYCATQ +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090612.04.tpd.patch&quot;&gt;20090612.04.tpd.patch&lt;/a&gt;
+bookvol10.4 PFBR +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090612.05.tpd.patch&quot;&gt;20090612.05.tpd.patch&lt;/a&gt;
+bookvol10.4 PFBRU +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090612.06.tpd.patch&quot;&gt;20090612.06.tpd.patch&lt;/a&gt;
+bookvol10.4 POLY2 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090613.01.tpd.patch&quot;&gt;20090613.01.tpd.patch&lt;/a&gt;
+bookvol10.4 PGCD +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090613.02.tpd.patch&quot;&gt;20090613.02.tpd.patch&lt;/a&gt;
+bookvol10.4 SOLVEFOR +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090613.03.tpd.patch&quot;&gt;20090613.03.tpd.patch&lt;/a&gt;
+bookvol10.4 POLY2UP +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090614.01.tpd.patch&quot;&gt;20090614.01.tpd.patch&lt;/a&gt;
+bookvol10.4 PRIMELT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090614.02.tpd.patch&quot;&gt;20090614.02.tpd.patch&lt;/a&gt;
+bookvol10.4 ODEPRIM +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090614.03.tpd.patch&quot;&gt;20090614.03.tpd.patch&lt;/a&gt;
+bookvol10.4 ODPRRIC +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090614.04.tpd.patch&quot;&gt;20090614.04.tpd.patch&lt;/a&gt;
+bookvol10.4 PSEUDLIN +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090614.05.tpd.patch&quot;&gt;20090614.05.tpd.patch&lt;/a&gt;
+bookvol10.4 PRS +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090616.01.tpd.patch&quot;&gt;20090616.01.tpd.patch&lt;/a&gt;
+src/algebra/Makefile add gloss* files&lt;br/&gt;
+&lt;a href=&quot;patches/20090616.02.tpd.patch&quot;&gt;20090616.02.tpd.patch&lt;/a&gt;
+src/algebra/Makefile add gloss* files to 'all' stanza&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.01.tpd.patch&quot;&gt;20090619.01.tpd.patch&lt;/a&gt;
+bookvol10.4 INTPAF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.02.tpd.patch&quot;&gt;20090619.02.tpd.patch&lt;/a&gt;
+bookvol10.4 PUSHVAR +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.03.tpd.patch&quot;&gt;20090619.03.tpd.patch&lt;/a&gt;
+src/axiom-website/download.html add may2009 binaries&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.04.tpd.patch&quot;&gt;20090619.04.tpd.patch&lt;/a&gt;
+bookvol10.4 QALGSET2 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.05.tpd.patch&quot;&gt;20090619.05.tpd.patch&lt;/a&gt;
+bookvol10.4 QCMPACK +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.06.tpd.patch&quot;&gt;20090619.06.tpd.patch&lt;/a&gt;
+bookvol10.4 RF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.07.tpd.patch&quot;&gt;20090619.07.tpd.patch&lt;/a&gt;
+bookvol10.4 DEFINTRF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.08.tpd.patch&quot;&gt;20090619.08.tpd.patch&lt;/a&gt;
+bookvol10.4 RFFACT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.09.tpd.patch&quot;&gt;20090619.09.tpd.patch&lt;/a&gt;
+bookvol10.4 INTRF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090619.10.tpd.patch&quot;&gt;20090619.10.tpd.patch&lt;/a&gt;
+bookvol10.4 LIMITRF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.01.tpd.patch&quot;&gt;20090620.01.tpd.patch&lt;/a&gt;
+bookvol10.4 SUMRF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.02.tpd.patch&quot;&gt;20090620.02.tpd.patch&lt;/a&gt;
+bookvol10.4 ODERAT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.03.tpd.patch&quot;&gt;20090620.03.tpd.patch&lt;/a&gt;
+bookvol10.4 ODERTRIC +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.04.tpd.patch&quot;&gt;20090620.04.tpd.patch&lt;/a&gt;
+bookvol10.4 RECOP +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.05.tpd.patch&quot;&gt;20090620.05.tpd.patch&lt;/a&gt;
+bookvol10.4 ODERED +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.06.tpd.patch&quot;&gt;20090620.06.tpd.patch&lt;/a&gt;
+bookvol10.4 RSETGCD +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.07.tpd.patch&quot;&gt;20090620.07.tpd.patch&lt;/a&gt;
+src/input/numbers.input fix random zero failure&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.08.tpd.patch&quot;&gt;20090620.08.tpd.patch&lt;/a&gt;
+Makefile build books in parallel with src&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.09.tpd.patch&quot;&gt;20090620.09.tpd.patch&lt;/a&gt;
+bookvol10.4 INTPAF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.10.tpd.patch&quot;&gt;20090620.10.tpd.patch&lt;/a&gt;
+bookvol10.4 RETSOL +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090620.11.tpd.patch&quot;&gt;20090620.11.tpd.patch&lt;/a&gt;
+Makefile build input.dvi in parallel with src&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.01.tpd.patch&quot;&gt;20090621.01.tpd.patch&lt;/a&gt;
+bookvol10.4 SMITH +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.02.tpd.patch&quot;&gt;20090621.02.tpd.patch&lt;/a&gt;
+bookvol10.4 SFQCMPK +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.03.tpd.patch&quot;&gt;20090621.03.tpd.patch&lt;/a&gt;
+bookvol10.4 SFRGCD +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.04.tpd.patch&quot;&gt;20090621.04.tpd.patch&lt;/a&gt;
+bookvol10.4 STREAM3 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.05.tpd.patch&quot;&gt;20090621.05.tpd.patch&lt;/a&gt;
+bookvol10.4 STINPROD +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.06.tpd.patch&quot;&gt;20090621.06.tpd.patch&lt;/a&gt;
+bookvol10.4 STTAYLOR +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.07.tpd.patch&quot;&gt;20090621.07.tpd.patch&lt;/a&gt;
+bookvol10.4 STTF +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.08.tpd.patch&quot;&gt;20090621.08.tpd.patch&lt;/a&gt;
+spline.input explain how to compute 2D splines&lt;br/&gt;
+&lt;a href=&quot;patches/20090621.09.tpd.patch&quot;&gt;20090621.09.tpd.patch&lt;/a&gt;
+bookvol10.4 SUBRESP +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090622.01.tpd.patch&quot;&gt;20090622.01.tpd.patch&lt;/a&gt;
+bookvol10.4 ODESYS +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090622.02.tpd.patch&quot;&gt;20090622.02.tpd.patch&lt;/a&gt;
+Makefile make xhtml pages in parallel&lt;br/&gt;
+&lt;a href=&quot;patches/20090622.03.tpd.patch&quot;&gt;20090622.03.tpd.patch&lt;/a&gt;
+src/axiom-website/download.html add mandriva&lt;br/&gt;
+&lt;a href=&quot;patches/20090622.04.tpd.patch&quot;&gt;20090622.04.tpd.patch&lt;/a&gt;
+bookvol10.4 TABLBUMP, UTSSOL +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090622.05.tpd.patch&quot;&gt;20090622.05.tpd.patch&lt;/a&gt;
+bookvol10.4 DRAWCURV +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090623.01.tpd.patch&quot;&gt;20090623.01.tpd.patch&lt;/a&gt;
+bookvol10.4 DRAWCFUN +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090623.02.tpd.patch&quot;&gt;20090623.02.tpd.patch&lt;/a&gt;
+bookvol10.4 INTTR +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090623.03.tpd.patch&quot;&gt;20090623.03.tpd.patch&lt;/a&gt;
+bookvol10.4 TRMANIP +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090624.01.tpd.patch&quot;&gt;20090624.01.tpd.patch&lt;/a&gt;
+bookvol10.4 RDETRS +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090624.02.tpd.patch&quot;&gt;20090624.02.tpd.patch&lt;/a&gt;
+bookvol10.4 SOLVETRA +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090624.03.tpd.patch&quot;&gt;20090624.03.tpd.patch&lt;/a&gt;
+bookvol10.4 TRIGMNIP +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090624.04.tpd.patch&quot;&gt;20090624.04.tpd.patch&lt;/a&gt;
+bookvol10.4 CLIP +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090624.05.tpd.patch&quot;&gt;20090624.05.tpd.patch&lt;/a&gt;
+bookvol10.4 TWOFACT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090624.06.tpd.patch&quot;&gt;20090624.06.tpd.patch&lt;/a&gt;
+bookvol10.4 UNIFACT +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090624.07.tpd.patch&quot;&gt;20090624.07.tpd.patch&lt;/a&gt;
+bookvol10.4 UFPS1 +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090625.01.tpd.patch&quot;&gt;20090625.01.tpd.patch&lt;/a&gt;
+bookvol10.4 UPCDEN +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090625.02.tpd.patch&quot;&gt;20090625.02.tpd.patch&lt;/a&gt;
+bookvol10.4 UPDIVP +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090625.03.tpd.patch&quot;&gt;20090625.03.tpd.patch&lt;/a&gt;
+bookvol10.4 UTSODE +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090625.04.tpd.patch&quot;&gt;20090625.04.tpd.patch&lt;/a&gt;
+bookvol10.4 UDPO +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090625.05.tpd.patch&quot;&gt;20090625.05.tpd.patch&lt;/a&gt;
+bookvol10.4 UTSODETL +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090625.06.tpd.patch&quot;&gt;20090625.06.tpd.patch&lt;/a&gt;
+bookvol10.4 WEIER +-&gt; conversion&lt;br/&gt;
+&lt;a href=&quot;patches/20090627.01.tpd.patch&quot;&gt;20090627.01.tpd.patch&lt;/a&gt;
+bookvol5 default set message autoload off&lt;br/&gt;
+&lt;a href=&quot;patches/20090628.01.tpd.patch&quot;&gt;20090628.01.tpd.patch&lt;/a&gt;
+bookvol10.3 TexFormat fix horizontal fractions&lt;br/&gt;
+&lt;a href=&quot;patches/20090702.01.tpd.patch&quot;&gt;20090702.01.tpd.patch&lt;/a&gt;
+bookvol10.3 fix = in Any, add regression and help files&lt;br/&gt;
+&lt;a href=&quot;patches/20090706.01.tpd.patch&quot;&gt;20090706.01.tpd.patch&lt;/a&gt;
+Makefile, src/algebra/Makefile parallel make help files&lt;br/&gt;
+&lt;a href=&quot;patches/20090706.02.tpd.patch&quot;&gt;20090706.02.tpd.patch&lt;/a&gt;
+src/axiom-website/patches.html fixup patch order&lt;br/&gt;
+&lt;a href=&quot;patches/20090709.01.tpd.patch&quot;&gt;20090709.01.tpd.patch&lt;/a&gt;
+quat.spad move QUATCT2 to bookvol10.4&lt;br/&gt;
+&lt;a href=&quot;patches/20090710.01.tpd.patch&quot;&gt;20090710.01.tpd.patch&lt;/a&gt;
+merge bc-matrix and bc-misc&lt;br/&gt;
+&lt;a href=&quot;patches/20090711.01.tpd.patch&quot;&gt;20090711.01.tpd.patch&lt;/a&gt;
+merge bc-matrix and bc-solve&lt;br/&gt;
+&lt;a href=&quot;patches/20090711.02.tpd.patch&quot;&gt;20090711.02.tpd.patch&lt;/a&gt;
+bookvol10.4 fix )show QUATCT2 path to file&lt;br/&gt;
+&lt;a href=&quot;patches/20090711.03.tpd.patch&quot;&gt;20090711.03.tpd.patch&lt;/a&gt;
+books/bookvol7 htsearch moved to $AXIOM/bin&lt;br/&gt;
+&lt;a href=&quot;patches/20090711.04.tpd.patch&quot;&gt;20090711.04.tpd.patch&lt;/a&gt;
+merge bc-matrix and bc-util&lt;br/&gt;
+&lt;a href=&quot;patches/20090711.05.tpd.patch&quot;&gt;20090711.05.tpd.patch&lt;/a&gt;
+merge ht-util and htsetvar&lt;br/&gt;
+&lt;a href=&quot;patches/20090711.06.tpd.patch&quot;&gt;20090711.06.tpd.patch&lt;/a&gt;
+merge ht-util and ht-root&lt;br/&gt;
+&lt;a href=&quot;patches/20090711.07.tpd.patch&quot;&gt;20090711.07.tpd.patch&lt;/a&gt;
+merge br-con and br-data&lt;br/&gt;
+&lt;a href=&quot;patches/20090712.01.tpd.patch&quot;&gt;20090712.01.tpd.patch&lt;/a&gt;
+merge br-con and showimp&lt;br/&gt;
+&lt;a href=&quot;patches/20090712.02.tpd.patch&quot;&gt;20090712.02.tpd.patch&lt;/a&gt;
+merge br-con and br-op1&lt;br/&gt;
+&lt;a href=&quot;patches/20090712.03.tpd.patch&quot;&gt;20090712.03.tpd.patch&lt;/a&gt;
+merge br-con and br-op2&lt;br/&gt;
+&lt;a href=&quot;patches/20090712.04.tpd.patch&quot;&gt;20090712.04.tpd.patch&lt;/a&gt;
+merge br-con and br-search&lt;br/&gt;
+&lt;a href=&quot;patches/20090712.05.tpd.patch&quot;&gt;20090712.05.tpd.patch&lt;/a&gt;
+merge br-con and br-util&lt;br/&gt;
+&lt;a href=&quot;patches/20090712.06.tpd.patch&quot;&gt;20090712.06.tpd.patch&lt;/a&gt;
+merge br-con and br-prof&lt;br/&gt;
+&lt;a href=&quot;patches/20090712.07.tpd.patch&quot;&gt;20090712.07.tpd.patch&lt;/a&gt;
+merge br-con and br-saturn&lt;br/&gt;
+&lt;a href=&quot;patches/20090716.01.tpd.patch&quot;&gt;20090716.01.tpd.patch&lt;/a&gt;
+books/bookvol10.4 add SOLVTRA regress, help, examples&lt;br/&gt;
+
+  &lt;hr&gt;
+   &lt;h3&gt;September 2009 Release&lt;/h3&gt;
+&lt;a name=&quot;latest&quot;/&gt;
+In process, not yet released&lt;br/&gt;&lt;br/&gt;
+  &lt;hr&gt;
+
  &lt;/body&gt;
 &lt;/html&gt;</diff>
      <filename>src/axiom-website/patches.html</filename>
    </modified>
    <modified>
      <diff>@@ -93,6 +93,7 @@
 
 RELEASES
 &lt;ul&gt;
+ &lt;li&gt;&lt;a href=&quot;#20090726&quot;&gt;July 26, 2009&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#20090530&quot;&gt;May 30, 2009&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#20090324&quot;&gt;March 24, 2009&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#20090122&quot;&gt;January 22, 2009&lt;/li&gt;
@@ -105,6 +106,81 @@ RELEASES
  &lt;li&gt;&lt;a href=&quot;#20071123&quot;&gt;November 23, 2007&lt;/li&gt;
 &lt;/ul&gt;
 
+&lt;a name=&quot;20090726&quot;/&gt;
+&lt;h3&gt;July 26, 2009 Release Notes &lt;/h3&gt;
+&lt;a href=&quot;patches.html#20090726&quot;&gt;patch list&lt;/a&gt;
+&lt;pre&gt;
+July 26, 2009 Release Notes
+
+
+The syntactic conversion from the prior #1 form to the +-&gt; form
+is complete except for the GUESS package. Both forms still work
+but the #1 form is discouraged.
+
+
+All algebra files from src/algebra are now in books.
+
+
+Work has concentrated on the hyperdoc browser. 
+  * The browser files which get autoloaded into the interpreter were
+    merged and removed in preparation for being rewritten into book form.
+  * Glossary files were missing from the build and were added.
+
+
+Work has started on a new CATS collection of verified algebraic identities,
+the tpiezas set. See http://sites.google.com/site/tpiezas
+
+
+Volume 5: Axiom Interpreter
+  * set message autoload now defaults to off
+
+
+Volume 7 Axiom Hyperdoc
+  * htsearch moved to $AXIOM/bin
+
+
+Volume 10.1 Axiom Algebra Theory
+  * add chapter on quaternions
+
+
+Volume 10.3 Domains
+  * Any now has regression and help files
+  * MathMLFormat domain moved from Volume 10.4
+  * TexFormat has regression and help files
+  * TexFormat fix for horizontal fractions
+  * Quaternion was added from src/algebra
+
+
+Volume 10.4 Packages
+   * IntegerNumberTheoryFunctions fix divisors regression
+   * Waldek's QUATCT2 algebra was added, including a help file, 
+     regression tests and command examples.
+
+
+Makefile 
+  * make help files in parallel
+  * make xhtml pages in parallel
+  * make books documentation in parallel
+
+
+interpreter
+  * src/interp/i-output.boot fix horizontal fractions
+
+
+axiom-website
+  * download.html add mandriva
+  * download.html add may2009 binaries
+
+
+input files
+  * ffdemo.input fix steps 27, 57 due to divisors change
+  * numbers.input fix random zero failure
+  * spline.input explain how to compute 2D splines
+  * tpiezas001.input CATS tests of algebraic identities
+  * tpiezas002.input CATS tests of algebraic identities
+
+&lt;/pre&gt;
+
 &lt;a name=&quot;20090530&quot;/&gt;
 &lt;h3&gt;May 30, 2009 Release Notes &lt;/h3&gt;
 &lt;a href=&quot;patches.html#20090530&quot;&gt;patch list&lt;/a&gt;</diff>
      <filename>src/axiom-website/releasenotes.html</filename>
    </modified>
    <modified>
      <diff>@@ -362,7 +362,7 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress alist.regress  \
     realclos.regress  reclos.regress   reclos2.regress  regset.regress \
     repa6.regress     robidoux.regress \
     roman.regress     roots.regress    ruleset.regress  rules.regress \
-    sae.regress \
+    sae.regress       spline.regress \
     schaum1.regress   schaum2.regress  schaum3.regress  schaum4.regress \
     schaum5.regress   schaum6.regress  schaum7.regress  schaum8.regress \
     schaum9.regress   schaum10.regress schaum11.regress schaum12.regress \
@@ -384,6 +384,8 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress alist.regress  \
     symbol.regress    t111293.regress  table.regress    tancot.regress \
     tanhcoth.regress  tanatan.regress  tbagg.regress    test.regress \
     textfile.regress  torus.regress \
+    tpiezas001.regress \
+    tpiezas002.regress \
     triglim.regress   tsetcatvermeer.regress            tutchap1.regress \
     typetower.regress void.regress      uniseg.regress \
     unittest1.regress unittest2.regress unittest3.regress unittest4.regress
@@ -662,7 +664,7 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    ${OUT}/algfacob.input \
        ${OUT}/reclos.input   ${OUT}/reclos2.input    ${OUT}/regset.input     \
        ${OUT}/robidoux.input ${OUT}/roman.input      ${OUT}/roots.input \
        ${OUT}/ruleset.input  ${OUT}/rules.input      ${OUT}/sae.input \
-       ${OUT}/schaum1.input \
+       ${OUT}/spline.input   ${OUT}/schaum1.input \
        ${OUT}/schaum2.input  ${OUT}/schaum3.input    ${OUT}/schaum4.input \
        ${OUT}/schaum5.input  ${OUT}/schaum6.input    ${OUT}/schaum7.input \
        ${OUT}/schaum8.input  ${OUT}/schaum9.input    ${OUT}/schaum10.input \
@@ -692,6 +694,8 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    ${OUT}/algfacob.input \
        ${OUT}/table.input    ${OUT}/tancot.input     ${OUT}/tanhcoth.input \
        ${OUT}/tanatan.input  ${OUT}/tbagg.input      ${OUT}/test.input \
        ${OUT}/tetra.input    ${OUT}/textfile.input   ${OUT}/tknot.input \
+       ${OUT}/tpiezas001.input \
+       ${OUT}/tpiezas002.input \
        ${OUT}/tree.input \
        ${OUT}/triglim.input  ${OUT}/tschirn.input ${OUT}/tsetcatbutcher.input \
        ${OUT}/tsetcatchemical.input ${OUT}/tsetcatvermeer.input \
@@ -986,7 +990,7 @@ DOCFILES= \
   ${DOC}/robidoux.input.dvi    ${DOC}/roman.input.dvi      \
   ${DOC}/romnum.as.dvi         ${DOC}/roots.input.dvi      \
   ${DOC}/ruleset.input.dvi     ${DOC}/rules.input.dvi      \
-  ${DOC}/sae.input.dvi \
+  ${DOC}/spline.input.dvi      ${DOC}/sae.input.dvi \
   ${DOC}/schaum1.input.dvi     ${DOC}/schaum2.input.dvi \
   ${DOC}/schaum3.input.dvi     ${DOC}/schaum4.input.dvi \
   ${DOC}/schaum5.input.dvi     ${DOC}/schaum6.input.dvi \
@@ -1049,7 +1053,10 @@ DOCFILES= \
   ${DOC}/tbagg.input.dvi       \
   ${DOC}/test.input.dvi        ${DOC}/tetra.input.dvi      \
   ${DOC}/textfile.input.dvi    ${DOC}/tknot.input.dvi      \
-  ${DOC}/torus.input.dvi       ${DOC}/tree.input.dvi       \
+  ${DOC}/torus.input.dvi \
+  ${DOC}/tpiezas001.input.dvi \
+  ${DOC}/tpiezas002.input.dvi \
+  ${DOC}/tree.input.dvi       \
   ${DOC}/triglim.input.dvi     ${DOC}/tschirn.input.dvi    \
   ${DOC}/tsetcatbutcher.input.dvi    \
   ${DOC}/tsetcatchemical.input.dvi   \</diff>
      <filename>src/input/Makefile.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -262,7 +262,7 @@ definingPolynomial()$F49
 --E 22
 
 --S 23 of 76
-e := random()$F49
+e := random()$F49 ; while e = 0 repeat e := random()$F49 ; e
 --R 
 --R
 --I   (4)  4%A + 3</diff>
      <filename>src/input/numbers.input.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -284,16 +284,9 @@ The {\bf BROBJS} list contains files only used by the hypertex
 browser. These files should probably be autoloaded.
 &lt;&lt;environment&gt;&gt;=
 BROBJS=	${AUTO}/bc-matrix.${O}				\
-	${AUTO}/bc-misc.${O}	${AUTO}/bc-solve.${O}	\
-	${AUTO}/bc-util.${O}				\
-	${AUTO}/ht-util.${O}	${AUTO}/htsetvar.${O}	\
-	${AUTO}/ht-root.${O}	\
+	${AUTO}/ht-util.${O}	\
 	${AUTO}/br-con.${O}	\
-	${AUTO}/br-data.${O}	${AUTO}/showimp.${O}    \
-	${AUTO}/br-op1.${O}	${AUTO}/br-op2.${O}	\
-	${AUTO}/br-search.${O}	${AUTO}/br-util.${O}	\
-	${AUTO}/topics.${O}     ${AUTO}/br-prof.${O}    \
-	${AUTO}/br-saturn.${O}
+	${AUTO}/topics.${O}     
 
 @
 The {\bf TRANOBJS} list contains files only used by the {\bf boot}
@@ -431,14 +424,10 @@ DOCFILES=${DOC}/alql.boot.dvi \
 	 ${DOC}/as.boot.dvi \
 	 ${DOC}/astr.boot.dvi ${DOC}/ax.boot.dvi \
 	 ${DOC}/axext_l.lisp.dvi \
-	 ${DOC}/bc-matrix.boot.dvi ${DOC}/bc-misc.boot.dvi \
-	 ${DOC}/bc-solve.boot.dvi ${DOC}/bc-util.boot.dvi \
+	 ${DOC}/bc-matrix.boot.dvi \
 	 ${DOC}/bits.lisp.dvi ${DOC}/bootfuns.lisp.dvi \
 	 ${DOC}/br-con.boot.dvi \
-	 ${DOC}/br-data.boot.dvi ${DOC}/br-op1.boot.dvi \
-	 ${DOC}/br-op2.boot.dvi ${DOC}/br-prof.boot.dvi \
-	 ${DOC}/br-saturn.boot.dvi ${DOC}/br-search.boot.dvi \
-	 ${DOC}/br-util.boot.dvi ${DOC}/buildom.boot.dvi \
+	 ${DOC}/buildom.boot.dvi \
 	 ${DOC}/category.boot.dvi ${DOC}/cattable.boot.dvi \
 	 ${DOC}/c-doc.boot.dvi ${DOC}/cformat.boot.dvi \
 	 ${DOC}/cfuns.lisp.dvi ${DOC}/clam.boot.dvi \
@@ -459,7 +448,6 @@ DOCFILES=${DOC}/alql.boot.dvi \
 	 ${DOC}/g-timer.boot.dvi \
 	 ${DOC}/g-util.boot.dvi ${DOC}/hashcode.boot.dvi \
 	 ${DOC}/hash.lisp.dvi ${DOC}/htcheck.boot.dvi \
-	 ${DOC}/ht-root.boot.dvi ${DOC}/htsetvar.boot.dvi \
 	 ${DOC}/ht-util.boot.dvi \
 	 ${DOC}/i-analy.boot.dvi ${DOC}/i-code.boot.dvi \
 	 ${DOC}/i-coerce.boot.dvi ${DOC}/i-coerfn.boot.dvi \
@@ -509,7 +497,7 @@ DOCFILES=${DOC}/alql.boot.dvi \
 	 ${DOC}/setq.lisp.dvi \
 	 ${DOC}/sfsfun.boot.dvi \
 	 ${DOC}/sfsfun-l.lisp.dvi \
-	 ${DOC}/showimp.boot.dvi ${DOC}/simpbool.boot.dvi \
+	 ${DOC}/simpbool.boot.dvi \
 	 ${DOC}/slam.boot.dvi ${DOC}/sockio.lisp.dvi \
 	 ${DOC}/spaderror.lisp.dvi ${DOC}/spad.lisp.dvi \
 	 ${DOC}/sys-pkg.lisp.dvi ${DOC}/template.boot.dvi \
@@ -5607,154 +5595,6 @@ ${DOC}/bc-matrix.boot.dvi: ${IN}/bc-matrix.boot.pamphlet
 
 @
 
-\subsection{bc-misc.boot}
-&lt;&lt;bc-misc.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/bc-misc.${O}: ${OUT}/bc-misc.${O}
-	@ echo 426 making ${AUTO}/bc-misc.${O} from ${OUT}/bc-misc.${O}
-	@ cp ${OUT}/bc-misc.${O} ${AUTO}
-
-@
-&lt;&lt;bc-misc.o (OUT from MID)&gt;&gt;=
-${OUT}/bc-misc.${O}: ${MID}/bc-misc.clisp 
-	@ echo 427 making ${OUT}/bc-misc.${O} from ${MID}/bc-misc.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/bc-misc.clisp&quot;' \
-             ':output-file &quot;${OUT}/bc-misc.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/bc-misc.clisp&quot;' \
-             ':output-file &quot;${OUT}/bc-misc.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;bc-misc.clisp (MID from IN)&gt;&gt;=
-${MID}/bc-misc.clisp: ${IN}/bc-misc.boot.pamphlet
-	@ echo 428 making ${MID}/bc-misc.clisp from ${IN}/bc-misc.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/bc-misc.boot.pamphlet &gt;bc-misc.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;bc-misc.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;bc-misc.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm bc-misc.boot )
-
-@
-&lt;&lt;bc-misc.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/bc-misc.boot.dvi: ${IN}/bc-misc.boot.pamphlet 
-	@echo 429 making ${DOC}/bc-misc.boot.dvi \
-                  from ${IN}/bc-misc.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/bc-misc.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} bc-misc.boot ; \
-	rm -f ${DOC}/bc-misc.boot.pamphlet ; \
-	rm -f ${DOC}/bc-misc.boot.tex ; \
-	rm -f ${DOC}/bc-misc.boot )
-
-@
-
-\subsection{bc-solve.boot}
-&lt;&lt;bc-solve.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/bc-solve.${O}: ${OUT}/bc-solve.${O}
-	@ echo 430 making ${AUTO}/bc-solve.${O} from ${OUT}/bc-solve.${O}
-	@ cp ${OUT}/bc-solve.${O} ${AUTO}
-
-@
-&lt;&lt;bc-solve.o (OUT from MID)&gt;&gt;=
-${OUT}/bc-solve.${O}: ${MID}/bc-solve.clisp 
-	@ echo 431 making ${OUT}/bc-solve.${O} from ${MID}/bc-solve.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/bc-solve.clisp&quot;' \
-             ':output-file &quot;${OUT}/bc-solve.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/bc-solve.clisp&quot;' \
-             ':output-file &quot;${OUT}/bc-solve.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;bc-solve.clisp (MID from IN)&gt;&gt;=
-${MID}/bc-solve.clisp: ${IN}/bc-solve.boot.pamphlet
-	@ echo 432 making ${MID}/bc-solve.clisp \
-                   from ${IN}/bc-solve.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/bc-solve.boot.pamphlet &gt;bc-solve.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;bc-solve.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;bc-solve.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm bc-solve.boot )
-
-@
-&lt;&lt;bc-solve.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/bc-solve.boot.dvi: ${IN}/bc-solve.boot.pamphlet 
-	@echo 433 making ${DOC}/bc-solve.boot.dvi \
-                  from ${IN}/bc-solve.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/bc-solve.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} bc-solve.boot ; \
-	rm -f ${DOC}/bc-solve.boot.pamphlet ; \
-	rm -f ${DOC}/bc-solve.boot.tex ; \
-	rm -f ${DOC}/bc-solve.boot )
-
-@
-
-\subsection{bc-util.boot}
-&lt;&lt;bc-util.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/bc-util.${O}: ${OUT}/bc-util.${O}
-	@ echo 434 making ${AUTO}/bc-util.${O} from ${OUT}/bc-util.${O}
-	@ cp ${OUT}/bc-util.${O} ${AUTO}
-
-@
-&lt;&lt;bc-util.o (OUT from MID)&gt;&gt;=
-${OUT}/bc-util.${O}: ${MID}/bc-util.clisp 
-	@ echo 435 making ${OUT}/bc-util.${O} from ${MID}/bc-util.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/bc-util.clisp&quot;' \
-             ':output-file &quot;${OUT}/bc-util.${O}&quot;) (${BYE}))' | ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/bc-util.clisp&quot;' \
-             ':output-file &quot;${OUT}/bc-util.${O}&quot;) (${BYE}))' | ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;bc-util.clisp (MID from IN)&gt;&gt;=
-${MID}/bc-util.clisp: ${IN}/bc-util.boot.pamphlet
-	@ echo 436 making ${MID}/bc-util.clisp from ${IN}/bc-util.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/bc-util.boot.pamphlet &gt;bc-util.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;bc-util.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;bc-util.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm bc-util.boot )
-
-@
-&lt;&lt;bc-util.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/bc-util.boot.dvi: ${IN}/bc-util.boot.pamphlet 
-	@echo 437 making ${DOC}/bc-util.boot.dvi \
-                  from ${IN}/bc-util.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/bc-util.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} bc-util.boot ; \
-	rm -f ${DOC}/bc-util.boot.pamphlet ; \
-	rm -f ${DOC}/bc-util.boot.tex ; \
-	rm -f ${DOC}/bc-util.boot )
-
-@
-
 \subsection{ht-util.boot}
 &lt;&lt;ht-util.o (AUTO from OUT)&gt;&gt;=
 ${AUTO}/ht-util.${O}: ${OUT}/ht-util.${O}
@@ -5804,56 +5644,6 @@ ${DOC}/ht-util.boot.dvi: ${IN}/ht-util.boot.pamphlet
 
 @
 
-\subsection{htsetvar.boot}
-&lt;&lt;htsetvar.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/htsetvar.${O}: ${OUT}/htsetvar.${O}
-	@ echo 442 making ${AUTO}/htsetvar.${O} from ${OUT}/htsetvar.${O}
-	@ cp ${OUT}/htsetvar.${O} ${AUTO}
-
-@
-&lt;&lt;htsetvar.o (OUT from MID)&gt;&gt;=
-${OUT}/htsetvar.${O}: ${MID}/htsetvar.clisp 
-	@ echo 443 making ${OUT}/htsetvar.${O} from ${MID}/htsetvar.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/htsetvar.clisp&quot;' \
-            ':output-file &quot;${OUT}/htsetvar.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/htsetvar.clisp&quot;' \
-            ':output-file &quot;${OUT}/htsetvar.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-            &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;htsetvar.clisp (MID from IN)&gt;&gt;=
-${MID}/htsetvar.clisp: ${IN}/htsetvar.boot.pamphlet
-	@ echo 444 making ${MID}/htsetvar.clisp \
-                   from ${IN}/htsetvar.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/htsetvar.boot.pamphlet &gt;htsetvar.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;htsetvar.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;htsetvar.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm htsetvar.boot )
-
-@
-&lt;&lt;htsetvar.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/htsetvar.boot.dvi: ${IN}/htsetvar.boot.pamphlet 
-	@echo 445 making ${DOC}/htsetvar.boot.dvi \
-                  from ${IN}/htsetvar.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/htsetvar.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} htsetvar.boot ; \
-	rm -f ${DOC}/htsetvar.boot.pamphlet ; \
-	rm -f ${DOC}/htsetvar.boot.tex ; \
-	rm -f ${DOC}/htsetvar.boot )
-
-@
-
 \subsection{record.boot}
 &lt;&lt;record.o (OUT from MID)&gt;&gt;=
 ${OUT}/record.${O}: ${MID}/record.clisp 
@@ -5897,55 +5687,6 @@ ${DOC}/record.boot.dvi: ${IN}/record.boot.pamphlet
 
 @
 
-\subsection{ht-root.boot}
-&lt;&lt;ht-root.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/ht-root.${O}: ${OUT}/ht-root.${O}
-	@ echo 449 making ${AUTO}/ht-root.${O} from ${OUT}/ht-root.${O}
-	@ cp ${OUT}/ht-root.${O} ${AUTO}
-
-@
-&lt;&lt;ht-root.o (OUT from MID)&gt;&gt;=
-${OUT}/ht-root.${O}: ${MID}/ht-root.clisp 
-	@ echo 450 making ${OUT}/ht-root.${O} from ${MID}/ht-root.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/ht-root.clisp&quot;' \
-             ':output-file &quot;${OUT}/ht-root.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/ht-root.clisp&quot;' \
-             ':output-file &quot;${OUT}/ht-root.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;ht-root.clisp (MID from IN)&gt;&gt;=
-${MID}/ht-root.clisp: ${IN}/ht-root.boot.pamphlet
-	@ echo 451 making ${MID}/ht-root.clisp from ${IN}/ht-root.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/ht-root.boot.pamphlet &gt;ht-root.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;ht-root.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;ht-root.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm ht-root.boot )
-
-@
-&lt;&lt;ht-root.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/ht-root.boot.dvi: ${IN}/ht-root.boot.pamphlet 
-	@echo 452 making ${DOC}/ht-root.boot.dvi \
-                  from ${IN}/ht-root.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/ht-root.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} ht-root.boot ; \
-	rm -f ${DOC}/ht-root.boot.pamphlet ; \
-	rm -f ${DOC}/ht-root.boot.tex ; \
-	rm -f ${DOC}/ht-root.boot )
-
-@
-
 \subsection{htcheck.boot}
 &lt;&lt;htcheck.o (AUTO from OUT)&gt;&gt;=
 ${AUTO}/htcheck.${O}: ${OUT}/htcheck.${O}
@@ -6092,299 +5833,6 @@ ${DOC}/br-con.boot.dvi: ${IN}/br-con.boot.pamphlet
 
 @
 
-\subsection{br-search.boot}
-&lt;&lt;br-search.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/br-search.${O}: ${OUT}/br-search.${O}
-	@ echo 469 making ${AUTO}/br-search.${O} from ${OUT}/br-search.${O}
-	@ cp ${OUT}/br-search.${O} ${AUTO}
-
-@
-&lt;&lt;br-search.o (OUT from MID)&gt;&gt;=
-${OUT}/br-search.${O}: ${MID}/br-search.clisp 
-	@ echo 470 making ${OUT}/br-search.${O} from ${MID}/br-search.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/br-search.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-search.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/br-search.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-search.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;br-search.clisp (MID from IN)&gt;&gt;=
-${MID}/br-search.clisp: ${IN}/br-search.boot.pamphlet
-	@ echo 471 making ${MID}/br-search.clisp \
-                   from ${IN}/br-search.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/br-search.boot.pamphlet &gt;br-search.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;br-search.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;br-search.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm br-search.boot )
-
-@
-&lt;&lt;br-search.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/br-search.boot.dvi: ${IN}/br-search.boot.pamphlet 
-	@echo 472 making ${DOC}/br-search.boot.dvi \
-                  from ${IN}/br-search.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/br-search.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} br-search.boot ; \
-	rm -f ${DOC}/br-search.boot.pamphlet ; \
-	rm -f ${DOC}/br-search.boot.tex ; \
-	rm -f ${DOC}/br-search.boot )
-
-@
-
-\subsection{br-op1.boot}
-&lt;&lt;br-op1.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/br-op1.${O}: ${OUT}/br-op1.${O}
-	@ echo 473 making ${AUTO}/br-op1.${O} from ${OUT}/br-op1.${O}
-	@ cp ${OUT}/br-op1.${O} ${AUTO}
-
-@
-&lt;&lt;br-op1.o (OUT from MID)&gt;&gt;=
-${OUT}/br-op1.${O}: ${MID}/br-op1.clisp 
-	@ echo 474 making ${OUT}/br-op1.${O} from ${MID}/br-op1.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/br-op1.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-op1.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/br-op1.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-op1.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;br-op1.clisp (MID from IN)&gt;&gt;=
-${MID}/br-op1.clisp: ${IN}/br-op1.boot.pamphlet
-	@ echo 475 making ${MID}/br-op1.clisp from ${IN}/br-op1.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/br-op1.boot.pamphlet &gt;br-op1.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;br-op1.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;br-op1.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm br-op1.boot )
-
-@
-&lt;&lt;br-op1.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/br-op1.boot.dvi: ${IN}/br-op1.boot.pamphlet 
-	@echo 476 making ${DOC}/br-op1.boot.dvi from ${IN}/br-op1.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/br-op1.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} br-op1.boot ; \
-	rm -f ${DOC}/br-op1.boot.pamphlet ; \
-	rm -f ${DOC}/br-op1.boot.tex ; \
-	rm -f ${DOC}/br-op1.boot )
-
-@
-
-\subsection{br-op2.boot}
-&lt;&lt;br-op2.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/br-op2.${O}: ${OUT}/br-op2.${O}
-	@ echo 477 making ${AUTO}/br-op2.${O} from ${OUT}/br-op2.${O}
-	@ cp ${OUT}/br-op2.${O} ${AUTO}
-
-@
-&lt;&lt;br-op2.o (OUT from MID)&gt;&gt;=
-${OUT}/br-op2.${O}: ${MID}/br-op2.clisp 
-	@ echo 478 making ${OUT}/br-op2.${O} from ${MID}/br-op2.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/br-op2.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-op2.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/br-op2.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-op2.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;br-op2.clisp (MID from IN)&gt;&gt;=
-${MID}/br-op2.clisp: ${IN}/br-op2.boot.pamphlet
-	@ echo 479 making ${MID}/br-op2.clisp from ${IN}/br-op2.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/br-op2.boot.pamphlet &gt;br-op2.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;br-op2.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;br-op2.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm br-op2.boot )
-
-@
-&lt;&lt;br-op2.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/br-op2.boot.dvi: ${IN}/br-op2.boot.pamphlet 
-	@echo 480 making ${DOC}/br-op2.boot.dvi from ${IN}/br-op2.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/br-op2.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} br-op2.boot ; \
-	rm -f ${DOC}/br-op2.boot.pamphlet ; \
-	rm -f ${DOC}/br-op2.boot.tex ; \
-	rm -f ${DOC}/br-op2.boot )
-
-@
-
-\subsection{br-data.boot}
-&lt;&lt;br-data.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/br-data.${O}: ${OUT}/br-data.${O}
-	@ echo 481 making ${AUTO}/br-data.${O} from ${OUT}/br-data.${O}
-	@ cp ${OUT}/br-data.${O} ${AUTO}
-
-@
-&lt;&lt;br-data.o (OUT from MID)&gt;&gt;=
-${OUT}/br-data.${O}: ${MID}/br-data.clisp 
-	@ echo 482 making ${OUT}/br-data.${O} from ${MID}/br-data.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/br-data.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-data.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/br-data.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-data.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;br-data.clisp (MID from IN)&gt;&gt;=
-${MID}/br-data.clisp: ${IN}/br-data.boot.pamphlet
-	@ echo 483 making ${MID}/br-data.clisp from ${IN}/br-data.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/br-data.boot.pamphlet &gt;br-data.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;br-data.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;br-data.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm br-data.boot )
-
-@
-&lt;&lt;br-data.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/br-data.boot.dvi: ${IN}/br-data.boot.pamphlet 
-	@echo 484 making ${DOC}/br-data.boot.dvi \
-                  from ${IN}/br-data.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/br-data.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} br-data.boot ; \
-	rm -f ${DOC}/br-data.boot.pamphlet ; \
-	rm -f ${DOC}/br-data.boot.tex ; \
-	rm -f ${DOC}/br-data.boot )
-
-@
-
-\subsection{br-util.boot}
-&lt;&lt;br-util.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/br-util.${O}: ${OUT}/br-util.${O}
-	@ echo 485 making ${AUTO}/br-util.${O} from ${OUT}/br-util.${O}
-	@ cp ${OUT}/br-util.${O} ${AUTO}
-
-@
-&lt;&lt;br-util.o (OUT from MID)&gt;&gt;=
-${OUT}/br-util.${O}: ${MID}/br-util.clisp 
-	@ echo 486 making ${OUT}/br-util.${O} from ${MID}/br-util.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/br-util.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-util.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/br-util.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-util.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;br-util.clisp (MID from IN)&gt;&gt;=
-${MID}/br-util.clisp: ${IN}/br-util.boot.pamphlet
-	@ echo 487 making ${MID}/br-util.clisp from ${IN}/br-util.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/br-util.boot.pamphlet &gt;br-util.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;br-util.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;br-util.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm br-util.boot )
-
-@
-&lt;&lt;br-util.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/br-util.boot.dvi: ${IN}/br-util.boot.pamphlet 
-	@echo 488 making ${DOC}/br-util.boot.dvi \
-                  from ${IN}/br-util.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/br-util.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} br-util.boot ; \
-	rm -f ${DOC}/br-util.boot.pamphlet ; \
-	rm -f ${DOC}/br-util.boot.tex ; \
-	rm -f ${DOC}/br-util.boot )
-
-@
-
-\subsection{br-saturn.boot}
-&lt;&lt;br-saturn.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/br-saturn.${O}: ${OUT}/br-saturn.${O}
-	@ echo 489 making ${AUTO}/br-saturn.${O} from ${OUT}/br-saturn.${O}
-	@ cp ${OUT}/br-saturn.${O} ${AUTO}
-
-@
-&lt;&lt;br-saturn.o (OUT from MID)&gt;&gt;=
-${OUT}/br-saturn.${O}: ${MID}/br-saturn.clisp 
-	@ echo 490 making ${OUT}/br-saturn.${O} from ${MID}/br-saturn.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/br-saturn.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-saturn.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/br-saturn.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-saturn.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;br-saturn.clisp (MID from IN)&gt;&gt;=
-${MID}/br-saturn.clisp: ${IN}/br-saturn.boot.pamphlet
-	@ echo 491 making ${MID}/br-saturn.clisp from ${IN}/br-saturn.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/br-saturn.boot.pamphlet &gt;br-saturn.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;br-saturn.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;br-saturn.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm br-saturn.boot )
-
-@
-&lt;&lt;br-saturn.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/br-saturn.boot.dvi: ${IN}/br-saturn.boot.pamphlet 
-	@echo 492 making ${DOC}/br-saturn.boot.dvi \
-                  from ${IN}/br-saturn.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/br-saturn.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} br-saturn.boot ; \
-	rm -f ${DOC}/br-saturn.boot.pamphlet ; \
-	rm -f ${DOC}/br-saturn.boot.tex ; \
-	rm -f ${DOC}/br-saturn.boot )
-
-@
-
 \subsection{topics.boot}
 &lt;&lt;topics.o (AUTO from OUT)&gt;&gt;=
 ${AUTO}/topics.${O}: ${OUT}/topics.${O}
@@ -6433,55 +5881,6 @@ ${DOC}/topics.boot.dvi: ${IN}/topics.boot.pamphlet
 
 @
 
-\subsection{br-prof.boot}
-&lt;&lt;br-prof.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/br-prof.${O}: ${OUT}/br-prof.${O}
-	@ echo 497 making ${AUTO}/br-prof.${O} from ${OUT}/br-prof.${O}
-	@ cp ${OUT}/br-prof.${O} ${AUTO}
-
-@
-&lt;&lt;br-prof.o (OUT from MID)&gt;&gt;=
-${OUT}/br-prof.${O}: ${MID}/br-prof.clisp 
-	@ echo 498 making ${OUT}/br-prof.${O} from ${MID}/br-prof.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/br-prof.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-prof.${O}&quot;) (${BYE}))' |  ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/br-prof.clisp&quot;' \
-             ':output-file &quot;${OUT}/br-prof.${O}&quot;) (${BYE}))' |  ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;br-prof.clisp (MID from IN)&gt;&gt;=
-${MID}/br-prof.clisp: ${IN}/br-prof.boot.pamphlet
-	@ echo 499 making ${MID}/br-prof.clisp from ${IN}/br-prof.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/br-prof.boot.pamphlet &gt;br-prof.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;br-prof.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;br-prof.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm br-prof.boot )
-
-@
-&lt;&lt;br-prof.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/br-prof.boot.dvi: ${IN}/br-prof.boot.pamphlet 
-	@echo 500 making ${DOC}/br-prof.boot.dvi \
-                  from ${IN}/br-prof.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/br-prof.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} br-prof.boot ; \
-	rm -f ${DOC}/br-prof.boot.pamphlet ; \
-	rm -f ${DOC}/br-prof.boot.tex ; \
-	rm -f ${DOC}/br-prof.boot )
-
-@
-
 \subsection{unlisp.lisp}
  the new parser files are maintained here
 &lt;&lt;unlisp.o (OUT from MID)&gt;&gt;=
@@ -7527,56 +6926,6 @@ ${DOC}/sfsfun.boot.dvi: ${IN}/sfsfun.boot.pamphlet
 
 @
 
-\subsection{showimp.boot}
-system level hacking files
-&lt;&lt;showimp.o (AUTO from OUT)&gt;&gt;=
-${AUTO}/showimp.${O}: ${OUT}/showimp.${O}
-	@ echo 579 making ${AUTO}/showimp.${O} from ${OUT}/showimp.${O}
-	@ cp ${OUT}/showimp.${O} ${AUTO}
-
-@
-&lt;&lt;showimp.o (OUT from MID)&gt;&gt;=
-${OUT}/showimp.${O}: ${MID}/showimp.clisp 
-	@ echo 580 making ${OUT}/showimp.${O} from ${MID}/showimp.clisp
-	@ (cd ${MID} ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn  (compile-file &quot;${MID}/showimp.clisp&quot;' \
-             ':output-file &quot;${OUT}/showimp.${O}&quot;) (${BYE}))' | ${DEPSYS} ; \
-	  else \
-	   echo '(progn  (compile-file &quot;${MID}/showimp.clisp&quot;' \
-             ':output-file &quot;${OUT}/showimp.${O}&quot;) (${BYE}))' | ${DEPSYS} \
-             &gt;${TMP}/trace ; \
-	  fi )
-
-@
-&lt;&lt;showimp.clisp (MID from IN)&gt;&gt;=
-${MID}/showimp.clisp: ${IN}/showimp.boot.pamphlet
-	@ echo 581 making ${MID}/showimp.lisp from ${IN}/showimp.boot.pamphlet
-	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/showimp.boot.pamphlet &gt;showimp.boot ; \
-	  if [ -z &quot;${NOISE}&quot; ] ; then \
-	   echo '(progn (boottran::boottocl &quot;showimp.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl &quot;showimp.boot&quot;) (${BYE}))' \
-                | ${DEPSYS} &gt;${TMP}/trace ; \
-	  fi ; \
-	  rm showimp.boot )
-
-@
-&lt;&lt;showimp.boot.dvi (DOC from IN)&gt;&gt;=
-${DOC}/showimp.boot.dvi: ${IN}/showimp.boot.pamphlet 
-	@echo 582 making ${DOC}/showimp.boot.dvi \
-                  from ${IN}/showimp.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/showimp.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} showimp.boot ; \
-	rm -f ${DOC}/showimp.boot.pamphlet ; \
-	rm -f ${DOC}/showimp.boot.tex ; \
-	rm -f ${DOC}/showimp.boot )
-
-@
-
 \subsection{hashcode.boot}
 files for the new compiler
 &lt;&lt;hashcode.o (OUT from MID)&gt;&gt;=
@@ -8054,21 +7403,6 @@ clean:
 &lt;&lt;bc-matrix.clisp (MID from IN)&gt;&gt;
 &lt;&lt;bc-matrix.boot.dvi (DOC from IN)&gt;&gt;
 
-&lt;&lt;bc-misc.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;bc-misc.o (OUT from MID)&gt;&gt;
-&lt;&lt;bc-misc.clisp (MID from IN)&gt;&gt;
-&lt;&lt;bc-misc.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;bc-solve.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;bc-solve.o (OUT from MID)&gt;&gt;
-&lt;&lt;bc-solve.clisp (MID from IN)&gt;&gt;
-&lt;&lt;bc-solve.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;bc-util.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;bc-util.o (OUT from MID)&gt;&gt;
-&lt;&lt;bc-util.clisp (MID from IN)&gt;&gt;
-&lt;&lt;bc-util.boot.dvi (DOC from IN)&gt;&gt;
-
 &lt;&lt;bits.o (OUT from MID)&gt;&gt;
 &lt;&lt;bits.lisp (MID from IN)&gt;&gt;
 &lt;&lt;bits.lisp.dvi (DOC from IN)&gt;&gt;
@@ -8082,41 +7416,6 @@ clean:
 &lt;&lt;br-con.clisp (MID from IN)&gt;&gt;
 &lt;&lt;br-con.boot.dvi (DOC from IN)&gt;&gt;
 
-&lt;&lt;br-data.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;br-data.o (OUT from MID)&gt;&gt;
-&lt;&lt;br-data.clisp (MID from IN)&gt;&gt;
-&lt;&lt;br-data.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;br-op1.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;br-op1.o (OUT from MID)&gt;&gt;
-&lt;&lt;br-op1.clisp (MID from IN)&gt;&gt;
-&lt;&lt;br-op1.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;br-op2.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;br-op2.o (OUT from MID)&gt;&gt;
-&lt;&lt;br-op2.clisp (MID from IN)&gt;&gt;
-&lt;&lt;br-op2.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;br-prof.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;br-prof.o (OUT from MID)&gt;&gt;
-&lt;&lt;br-prof.clisp (MID from IN)&gt;&gt;
-&lt;&lt;br-prof.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;br-saturn.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;br-saturn.o (OUT from MID)&gt;&gt;
-&lt;&lt;br-saturn.clisp (MID from IN)&gt;&gt;
-&lt;&lt;br-saturn.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;br-search.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;br-search.o (OUT from MID)&gt;&gt;
-&lt;&lt;br-search.clisp (MID from IN)&gt;&gt;
-&lt;&lt;br-search.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;br-util.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;br-util.o (OUT from MID)&gt;&gt;
-&lt;&lt;br-util.clisp (MID from IN)&gt;&gt;
-&lt;&lt;br-util.boot.dvi (DOC from IN)&gt;&gt;
-
 &lt;&lt;buildom.o (OUT from MID)&gt;&gt;
 &lt;&lt;buildom.clisp (MID from IN)&gt;&gt;
 &lt;&lt;buildom.boot.dvi (DOC from IN)&gt;&gt;
@@ -8284,16 +7583,6 @@ clean:
 &lt;&lt;htcheck.clisp (MID from IN)&gt;&gt;
 &lt;&lt;htcheck.boot.dvi (DOC from IN)&gt;&gt;
 
-&lt;&lt;ht-root.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;ht-root.o (OUT from MID)&gt;&gt;
-&lt;&lt;ht-root.clisp (MID from IN)&gt;&gt;
-&lt;&lt;ht-root.boot.dvi (DOC from IN)&gt;&gt;
-
-&lt;&lt;htsetvar.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;htsetvar.o (OUT from MID)&gt;&gt;
-&lt;&lt;htsetvar.clisp (MID from IN)&gt;&gt;
-&lt;&lt;htsetvar.boot.dvi (DOC from IN)&gt;&gt;
-
 &lt;&lt;ht-util.o (AUTO from OUT)&gt;&gt;
 &lt;&lt;ht-util.o (OUT from MID)&gt;&gt;
 &lt;&lt;ht-util.clisp (MID from IN)&gt;&gt;
@@ -8671,11 +7960,6 @@ clean:
 &lt;&lt;sfsfun-l.lisp (MID from IN)&gt;&gt;
 &lt;&lt;sfsfun-l.lisp.dvi (DOC from IN)&gt;&gt;
 
-&lt;&lt;showimp.o (AUTO from OUT)&gt;&gt;
-&lt;&lt;showimp.o (OUT from MID)&gt;&gt;
-&lt;&lt;showimp.clisp (MID from IN)&gt;&gt;
-&lt;&lt;showimp.boot.dvi (DOC from IN)&gt;&gt;
-
 &lt;&lt;simpbool.o (OUT from MID)&gt;&gt;
 &lt;&lt;simpbool.clisp (MID from IN)&gt;&gt;
 &lt;&lt;simpbool.boot.dvi (DOC from IN)&gt;&gt;</diff>
      <filename>src/interp/Makefile.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -167,9 +167,1316 @@ bcMatrixGen htPage ==
     STRCONC('&quot;matrix(&quot;,matstring,'&quot;)&quot;)
   systemError nil
   
+--Hypertex commands other than solve and matrix
+
+bcDrawIt2(ind,a,b) == STRCONC('&quot;{}&quot;,ind,'&quot;=&quot;,a,'&quot;{}..&quot;,b,'&quot;{}&quot;)
+
+bcIndefiniteIntegrate() ==
+  htInitPage(&quot;Indefinite Integration Basic Command&quot;,nil)
+  htMakePage '(
+     (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+     (text . &quot;\newline &quot;)
+     (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+     (text . &quot;Enter the {\em function} you would like to integrate:&quot;)
+     (text . &quot;\newline\tab{2} &quot;)
+     (bcStrings (45 &quot;1/(x**2 + 6)&quot; integrand EM))
+     (text . &quot;\blankline&quot;)
+     (text . &quot;\newline &quot;)
+     (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+     (text . &quot;Enter the {\em variable of integration}:&quot;)
+     (text . &quot;\tab{37}&quot;)
+     (bcStrings (10 x symbol SY))
+     (doneButton &quot;Continue&quot; bcIndefiniteIntegrateGen))
+  htShowPage()
+
+bcIndefiniteIntegrateGen htPage ==
+  integrand := htpLabelInputString(htPage,'integrand)
+  var := htpLabelInputString(htPage,'symbol)
+  bcGen STRCONC('&quot;integrate(&quot;,integrand,'&quot;,&quot;,var,&quot;)&quot;)
+
+
+bcDefiniteIntegrate() ==
+  htInitPage(&quot;Definite Integration Basic Command&quot;,nil)
+  htMakePage '(
+     (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+     (text . &quot;\newline &quot;)
+     (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+     (text . &quot;Enter the {\em function} you would like to integrate:&quot;)
+     (text . &quot;\newline\tab{2} &quot;)
+     (bcStrings (45 &quot;1/(x**2 + 6)&quot; integrand EM))
+     (text . &quot;\blankline&quot;)
+     (text . &quot;\newline &quot;)
+     (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+     (text . &quot;Enter the {\em variable of integration}:&quot;)
+     (text . &quot;\tab{37}&quot;)
+     (bcStrings (10 x symbol SY))
+     (text . &quot;\blankline&quot;)
+     (text . &quot;\newline &quot;)
+     (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+     (text . &quot;\newline Enter {\em lower limit}:&quot;)
+     (radioButtons fromButton
+       (&quot;&quot; &quot;Minus infinity&quot; minusInfinity)
+       (&quot;&quot;  (
+         (text . &quot;A finite point:\tab{15}&quot;)
+         (bcStrings (10 0 from EM . bcOptional))) fromPoint))
+     (text . &quot;\blankline&quot;)
+     (text . &quot;\newline &quot;)
+     (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+     (text . &quot;\indent{2}\newline Enter {\em upper limit}:&quot;)
+     (radioButtons toButton
+       (&quot;&quot; &quot;Plus infinity&quot; plusInfinity)
+       (&quot;&quot; (
+         (text &quot;A finite point:\tab{15}&quot;)
+         (bcStrings (10 y to EM . bcOptional))) toPoint))
+     (doneButton &quot;Continue&quot; bcDefiniteIntegrateGen))
+  htShowPage()
+
+bcDefiniteIntegrateGen htPage ==
+  integrand := htpLabelInputString(htPage,'integrand)
+  var := htpLabelInputString(htPage,'symbol)
+  lowerLimit :=
+    htpButtonValue(htPage,'fromButton) = 'fromPoint =&gt;
+      htpLabelInputString(htPage,'from)
+    '&quot;%minusInfinity&quot;
+  upperLimit :=
+    htpButtonValue(htPage,'toButton) = 'toPoint =&gt;
+      htpLabelInputString(htPage,'to)
+    '&quot;%plusInfinity&quot;
+  varpart := STRCONC(var,'&quot; = &quot;,lowerLimit,'&quot;..&quot;,upperLimit)
+  bcGen
+   STRCONC('&quot;integrate(&quot;,integrand,'&quot;,&quot;,varpart,'&quot;)&quot;)
+
+bcSum() ==
+  htInitPage(&quot;Sum Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em function} you would like to sum:&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (44 &quot;i**3&quot; summand EM))
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em summation index}:&quot;)
+    (text . &quot;\tab{36}&quot;)
+    (bcStrings (10 i index SY))
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the limits of the sum:&quot;)
+    (text . &quot;\newline\tab{10}{\em From:}&quot;)
+    (bcStrings (10 1 first S))
+    (text . &quot;\tab{32}{\em To:}&quot;)
+    (text . &quot;\tab{36}&quot;)
+    (bcStrings (10  n  last S))
+    (doneButton &quot;Continue&quot; bcSumGen))
+  htShowPage()
+
+bcSumGen htPage ==
+  mand := htpLabelInputString(htPage,'summand)
+  index := htpLabelInputString(htPage,'index)
+  first := htpLabelInputString(htPage,'first)
+  last := htpLabelInputString(htPage,'last)
+  bcGen STRCONC('&quot;sum(&quot;,mand,'&quot;,&quot;,index,'&quot; = &quot;,first,'&quot;..&quot;,last,'&quot;)&quot;)
+
+bcProduct() ==
+  htInitPage(&quot;Product Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+    (text . &quot;Enter the {\em function} you would like to compute the product of:&quot;)
+    (inputStrings (&quot;&quot; &quot;&quot; 45 &quot;i**2&quot; mand EM))
+    (text . &quot;\vspace{1}\newline&quot;)
+    (inputStrings (&quot;Enter the {\em index of the product}:&quot; &quot;&quot; 5 i index SY))
+    (text . &quot;\vspace{1}\newline Enter the limits of the index:&quot;)
+    (inputStrings
+      (&quot;\newline{\em From:}&quot; &quot;&quot; 10 &quot;1&quot; first  EM)
+      (&quot;{\em To:}\space{2}&quot; &quot;&quot; 10  &quot;n&quot; last   EM))
+    (doneButton &quot;Continue&quot; bcProductGen))
+  htShowPage()
+
+bcProductGen htPage ==
+  mand := htpLabelInputString(htPage,'mand)
+  index := htpLabelInputString(htPage,'index)
+  first := htpLabelInputString(htPage,'first)
+  last := htpLabelInputString(htPage,'last)
+  bcGen STRCONC('&quot;product(&quot;,mand,'&quot;,&quot;,index,'&quot;,&quot;,first,'&quot;,&quot;,last,'&quot;)&quot;)
+
+bcDifferentiate() ==
+  htInitPage(&quot;Differentiate Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em function} you want to differentiate:&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (55 &quot;sin(x*y)&quot; diffand EM))
+    (text . &quot;\blankline&quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;\newline List the {\em variables} you want to differentiate with respect to?&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (55 &quot;x y&quot; variables S . quoteString))
+    (text . &quot;\blankline&quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;\newline List the number of {\em times} you want to differentiate with respect to each variable (leave blank if once for each)&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (55 &quot;1 2&quot; times S . quoteString)))
+  htMakeDoneButton('&quot;Continue&quot;, 'bcDifferentiateGen)
+  htShowPage()
+
+bcDifferentiateGen htPage ==
+  mand := htpLabelInputString(htPage,'diffand)
+  varlist := bcString2WordList htpLabelInputString(htPage,'variables)
+  indexList := bcString2WordList htpLabelInputString(htPage,'times)
+  varpart :=
+    #varlist &gt; 1 =&gt; bcwords2liststring varlist
+    first varlist
+  indexpart :=
+    null indexList =&gt; nil
+    null rest indexList =&gt; first indexList
+    #indexList = #varlist =&gt; bcwords2liststring indexList
+    bcError '&quot;You must say how many times you want to differentiate with respect to each variable---or leave that entry blank&quot;
+  lastPart :=
+    indexpart =&gt; STRCONC('&quot;,&quot;,indexpart,'&quot;)&quot;)
+    '&quot;)&quot;
+  bcGen STRCONC('&quot;differentiate(&quot;,mand,'&quot;,&quot;,varpart,lastPart)
+
+bcDraw() ==
+  htInitPage('&quot;Draw Basic Command&quot;,nil)
+  bcHt '&quot;What would you like to draw?&quot;
+  bcHt '&quot;\newline\centerline{{\em Two Dimensional Plots}}\newline&quot;
+  bcHt '&quot;\lispdownlink{A function of one variable}{(|bcDraw2Dfun|)}&quot;
+  bcHt '&quot;\space{2}y = f(x)\newline&quot;
+  bcHt '&quot;\lispdownlink{A parametrically defined curve}{(|bcDraw2Dpar|)}&quot;
+  bcHt '&quot;\space{2}(x(t), y(t))\newline&quot;
+  bcHt '&quot;\lispdownlink{A solution to a polynomial equation}{(|bcDraw2DSolve|)}&quot;
+  bcHt '&quot;\space{2} p(x,y) = 0\newline&quot;
+  bcHt '&quot;\vspace{1}\newline &quot;
+  bcHt '&quot;\centerline{{\em Three Dimensional Surfaces}}\newline\newline&quot;
+  bcHt '&quot;\lispdownlink{A function of two variables}{(|bcDraw3Dfun|)}&quot;
+  bcHt '&quot;\space{2} z = f(x,y)\newline&quot;
+  bcHt '&quot;\lispdownlink{A parametrically defined tube}{(|bcDraw3Dpar|)}&quot;
+  bcHt '&quot;\space{2}(x(t), y(t), z(t))\newline&quot;
+  bcHt '&quot;\lispdownlink{A parameterically defined surface}{(|bcDraw3Dpar1|)}&quot;
+  bcHt '&quot;\space{2}(x(u,v), y(u,v), z(u,v))\newline&quot;
+  htShowPage()
+
+
+bcDraw2Dfun() ==
+  htInitPage('&quot;Draw Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain F (Float))
+       (isDomain SY (Symbol)))
+    (text
+      &quot;\centerline{Drawing {\em y = f(x)}}\newline &quot;
+      &quot;\centerline{where {\em y} is the dependent variable and}\newline &quot;
+      &quot;\centerline{where {\em x} is the independent variable}\vspace{1}\newline &quot;
+      &quot;\menuitemstyle{}\tab{2}What {\em function} f would you like to draw?\newline\tab{2}&quot;)
+    (bcStrings (55 &quot;x*cos(x)&quot; function EM))
+    (text . &quot;\vspace{1}\newline\menuitemstyle{}\tab{2}Enter {\em dependent} variable:&quot;)
+    (bcStrings (6 y dependent SY))
+    (text . &quot;\newline\vspace{1}\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}Enter {\em independent} variable and {\em range}:\newline\tab{2} &quot;)
+    (text . &quot;{\em Variable:}&quot;)
+    (bcStrings (6 x ind SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 0 from1 F))
+    (text . &quot;{\em to:}&quot;)
+    (bcStrings (9 30 to1 F))
+    (text
+      &quot;\indent{0}\vspace{1}\newline\menuitemstyle{}\tab{2} &quot;
+      &quot;Optionally enter a {\em title} for your curve:&quot;
+      )
+    (bcStrings (15 &quot;y = x*cos(x)&quot; title S))
+    (text . &quot;\indent{0}&quot;)
+    (doneButton &quot;Continue&quot; bcDraw2DfunGen)
+    (text . &quot;{}&quot;))
+  htShowPage()
+
+bcDraw2DfunGen htPage ==
+  fun := htpLabelInputString(htPage,'function)
+  dep := htpLabelInputString(htPage,'dependent)
+  ind := htpLabelInputString(htPage,'ind)
+  from1 := htpLabelInputString(htPage,'from1)
+  to1 := htpLabelInputString(htPage,'to1)
+  title := htpLabelInputString(htPage,'title)
+  if (title ^= '&quot;&quot;) then
+    titlePart := STRCONC('&quot;{}&quot;,'&quot;title ==_&quot;&quot;,title,'&quot;_&quot;&quot;)
+    bcFinish('&quot;draw&quot;,fun,bcDrawIt2(ind,from1,to1),titlePart)
+  else
+    bcFinish('&quot;draw&quot;,fun,bcDrawIt2(ind,from1,to1))
+
+
+bcDraw2Dpar() ==
+  htInitPage('&quot;Draw Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain F (Float))
+       (isDomain SY (Symbol)))
+    (text
+      &quot;\centerline{Drawing a parametrically defined curve:}\newline &quot;
+      &quot;\centerline{{\em ( f1(t), f2(t) )}}\newline &quot;
+      &quot;\centerline{in terms of two functions {\em f1} and {\em f2}}&quot;
+      &quot;\centerline{and an independent variable {\em t}}\vspace{1}\newline&quot;
+      &quot;\menuitemstyle{}\tab{2}Enter the two {\em functions:}&quot;)
+    (text . &quot;\newline\tab{2}{\em Function 1:}&quot;)
+    (bcStrings (44 &quot;-9*sin(4*t/5)&quot; function1 EM))
+    (text . &quot;\newline\tab{2}{\em Function 2:}&quot;)
+    (bcStrings (44 &quot;8*sin(t)&quot; function2 EM))
+    (text .&quot;\vspace{1}\newline\menuitemstyle{}\tab{2}Enter {\em independent} variable and range:\newline\tab{2} &quot;)
+    (text . &quot;{\em Variable:}&quot;)
+    (bcStrings (6 t ind SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 &quot;-5*\%pi&quot; from1 F))
+    (text . &quot;{\em to:}&quot;)
+    (bcStrings (9 &quot;5*\%pi&quot; to1 F))
+    (text
+      &quot;\vspace{1}\newline\menuitemstyle{}\tab{2}&quot;
+      &quot;Optionally enter a {\em title} for your curve:&quot;)
+    (bcStrings (15 &quot;Lissajous&quot; title S))
+    (text . &quot;\indent{0}&quot;)
+    (doneButton &quot;Continue&quot; bcDraw2DparGen))
+  htShowPage()
+
+bcDraw2DparGen htPage ==
+  fun1 := htpLabelInputString(htPage,'function1)
+  fun2 := htpLabelInputString(htPage,'function2)
+  ind := htpLabelInputString(htPage,'ind)
+  from1 := htpLabelInputString(htPage,'from1)
+  to1 := htpLabelInputString(htPage,'to1)
+  title := htpLabelInputString(htPage,'title)
+  curvePart := STRCONC('&quot;curve(&quot;,'&quot;{}&quot;,fun1,'&quot;,{}&quot;,fun2,'&quot;)&quot;)
+  if (title ^= '&quot;&quot;) then
+    titlePart := (title = '&quot;&quot; =&gt; nil; STRCONC('&quot;{}&quot;,'&quot;title ==_&quot;&quot;,title,'&quot;_&quot;&quot;))
+    bcFinish('&quot;draw&quot;,curvePart,bcDrawIt2(ind,from1,to1),titlePart)
+  else
+    bcFinish('&quot;draw&quot;,curvePart,bcDrawIt2(ind,from1,to1))
+
+bcDraw2DSolve() ==
+  htInitPage('&quot;Draw Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain F (Float))
+       (isDomain SY (Symbol)))
+    (text
+      &quot;\centerline{Plotting the solution to {\em p(x,y) = 0}, where} &quot;
+      &quot;\centerline{{\em p} is a polynomial in two variables {\em x} and {\em y}}&quot;
+      &quot;\vspace{1}\newline\menuitemstyle{}\tab{2}Enter the {\em polynomial} p:&quot;
+      &quot;\newline\tab{2}&quot;)
+    (bcStrings (40 &quot;y**2+7*x*y-(x**3+16*x)&quot; function EM))
+    (text . &quot;\vspace{1}\newline\menuitemstyle{}\tab{2}Enter the {\em variables}:&quot;)
+    (text . &quot;\newline\tab{2}{\em Variable 1:} &quot;)
+    (bcStrings (4 x independent1 SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 -15 from1 F))
+    (text . &quot;{\em to:}&quot;)
+    (bcStrings (9 10 to1 F))
+    (text . &quot;\newline\tab{2}{\em Variable 2:} &quot;)
+    (bcStrings (4 y independent2 SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 -10 from2 F))
+    (text . &quot;{\em to:}&quot;)
+    (bcStrings (9 50 to2 F))
+    (text
+      &quot;\indent{0}\vspace{1}\newline\menuitemstyle{}\tab{2} &quot;
+      &quot;Optionally enter a {\em title} for your curve:&quot;)
+    (bcStrings (15 &quot;&quot; title S))
+    (text . &quot;\indent{0}&quot;))
+  htMakeDoneButton('&quot;Continue&quot;,'bcDraw2DSolveGen)
+  htShowPage()
+
+bcDraw2DSolveGen htPage ==
+  fun := htpLabelInputString(htPage,'function)
+  ind1 := htpLabelInputString(htPage,'independent1)
+  from1 := htpLabelInputString(htPage,'from1)
+  to1 := htpLabelInputString(htPage,'to1)
+  ind2 := htpLabelInputString(htPage,'independent2)
+  from2 := htpLabelInputString(htPage,'from2)
+  to2 := htpLabelInputString(htPage,'to2)
+  title := htpLabelInputString(htPage,'title)
+  clipPart := STRCONC('&quot;{}&quot;,'&quot;range==[{}&quot;,from1,'&quot;..&quot;,to1,&quot;,{}&quot;,from2,'&quot;..&quot;,to2,'&quot;]&quot;)
+  if (title ^= '&quot;&quot;) then
+    titlePart := (title = '&quot;&quot; =&gt; nil; STRCONC('&quot;{}&quot;,'&quot;title ==_&quot;&quot;,title,'&quot;_&quot;&quot;))
+    bcFinish('&quot;draw&quot;,STRCONC(fun,'&quot; = 0 &quot;),ind1,ind2,clipPart,titlePart)
+  else
+    bcFinish('&quot;draw&quot;,STRCONC(fun,'&quot; = 0 &quot;),ind1,ind2,clipPart)
+
+bcDraw3Dfun() ==
+  htInitPage('&quot;Three Dimensional Draw Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain F (Float))
+       (isDomain SY (Symbol)))
+    (text
+      &quot;\centerline{Drawing {\em z = f(x,y)}}\newline &quot;
+      &quot;\centerline{where {\em z} is the dependent variable and}\newline &quot;
+      &quot;\centerline{where {\em x, y} are the independent variables}\vspace{1}\newline\menuitemstyle{}\tab{2} &quot;
+      &quot;What {\em function} f which you like to draw?\newline\tab{2}&quot;)
+    (bcStrings (55 &quot;exp(cos(x-y)-sin(x*y))-2&quot; function EM))
+    (text . &quot;\newline\menuitemstyle{}\tab{2}Enter {\em dependent} variable:&quot;)
+    (bcStrings (6 z dependent SY))
+    (text
+      &quot;\vspace{1}\newline\menuitemstyle{}\tab{2}&quot;
+      &quot;Enter {\em independent} variables and ranges:\newline\tab{2} &quot;
+      &quot;{\em Variable:}&quot;)
+    (bcStrings (6 x independent1 SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 -5 from1 F))
+    (text . &quot;{\em to:}&quot;)
+    (bcStrings (9 5 to1 F))
+    (text . &quot;\newline\tab{2}{\em Variable:}&quot;)
+    (bcStrings (6 y independent2 SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 -5 from2 F))
+    (text . &quot;{\em to:}&quot;)
+    (bcStrings (9 5 to2 F))
+    (text
+      &quot;\indent{0}\vspace{1}\newline\menuitemstyle{}\tab{2} &quot;
+      &quot;Optionally enter a {\em title} for your surface:&quot;)
+    (bcStrings (15 &quot;&quot; title S))
+    (text . &quot;\indent{0}&quot;)
+    (doneButton &quot;Continue&quot; bcDraw3DfunGen))
+  htShowPage()
+
+bcDraw3DfunGen htPage ==
+  fun := htpLabelInputString(htPage,'function)
+  dep := htpLabelInputString(htPage,'dependent)
+  ind1 := htpLabelInputString(htPage,'independent1)
+  from1 := htpLabelInputString(htPage,'from1)
+  to1 := htpLabelInputString(htPage,'to1)
+  ind2 := htpLabelInputString(htPage,'independent2)
+  from2 := htpLabelInputString(htPage,'from2)
+  to2 := htpLabelInputString(htPage,'to2)
+  title := htpLabelInputString(htPage,'title)
+  if (title ^= '&quot;&quot;) then
+    titlePart := (title = '&quot;&quot; =&gt; nil;STRCONC('&quot;{}&quot;,'&quot;title ==_&quot;&quot;,title,'&quot;_&quot;&quot;))
+    bcFinish('&quot;draw&quot;,fun,bcDrawIt2(ind1,from1,to1),bcDrawIt2(ind2,from2,to2),titlePart)
+  else
+    bcFinish('&quot;draw&quot;,fun,bcDrawIt2(ind1,from1,to1),bcDrawIt2(ind2,from2,to2))
+
+bcDraw3Dpar() ==
+  htInitPage('&quot;Draw Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain F (Float))
+       (isDomain SY (Symbol)))
+    (text
+      &quot;\centerline{Drawing a parametrically defined curve:&quot;
+      &quot;{\em ( f1(t), f2(t), f3(t) )}}\newline &quot;
+      &quot;\centerline{in terms of three functions {\em f1}, {\em f2}, and {\em f3}}\newline &quot;
+      &quot;\centerline{and an independent variable {\em t}}\vspace{1}\newline\menuitemstyle{}\tab{2} &quot;
+      &quot;Enter the three {\em functions} of the independent variable:&quot;)
+    (text . &quot;\newline\tab{2}{\em Function f1:}&quot;)
+    (bcStrings (42 &quot;1.3*cos(2*t)*cos(4*t) + sin(4*t)*cos(t)&quot; function1 EM))
+    (text . &quot;\newline\tab{2}{\em Function f2:}&quot;)
+    (bcStrings  (42 &quot;1.3*sin(2*t)*cos(4*t) - sin(4*t)*sin(t)&quot; function2 EM))
+    (text . &quot;\newline\tab{2}{\em Function f3:}&quot;)
+    (bcStrings  (42 &quot;2.5*cos(4*t)&quot; function3 EM))
+    (text .&quot;\vspace{1}\newline\menuitemstyle{}\tab{2}Enter {\em independent} variable and range:\newline\tab{2} &quot;)
+    (text .&quot;{\em Variable:}&quot;)
+    (bcStrings (6 t ind SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 0 from1 F))
+    (text &quot;{\em to:}&quot;)
+    (bcStrings (9 &quot;4*\%pi&quot; to1 F))
+    (text
+      &quot;\indent{0}\vspace{1}\newline\menuitemstyle{}\tab{2} &quot;
+      &quot;Optionally enter a {\em title} for your surface:&quot;)
+    (bcStrings (15 &quot;knot&quot; title S))
+    (text . &quot;\indent{0}&quot;)
+    (doneButton &quot;Continue&quot; bcDraw3DparGen))
+  htShowPage()
+
+bcDraw3DparGen htPage ==
+  fun1 := htpLabelInputString(htPage,'function1)
+  fun2 := htpLabelInputString(htPage,'function2)
+  fun3 := htpLabelInputString(htPage,'function3)
+  ind := htpLabelInputString(htPage,'ind)
+  from1 := htpLabelInputString(htPage,'from1)
+  to1 := htpLabelInputString(htPage,'to1)
+  title := htpLabelInputString(htPage,'title)
+  curvePart := STRCONC('&quot;curve(&quot;,'&quot;{}&quot;,fun1,'&quot;,{}&quot;,fun2,'&quot;,{}&quot;,fun3,'&quot;)&quot;)
+  tubePart := '&quot;{}tubeRadius==.25,{}tubePoints==16&quot;
+  if (title ^= '&quot;&quot;) then
+    titlePart := (title = '&quot;&quot; =&gt; nil; STRCONC('&quot;{}&quot;,'&quot;title ==_&quot;&quot;,title,'&quot;_&quot;&quot;))
+    bcFinish('&quot;draw&quot;,curvePart,bcDrawIt2(ind,from1,to1),tubePart,titlePart)
+  else
+    bcFinish('&quot;draw&quot;,curvePart,bcDrawIt2(ind,from1,to1),tubePart)
+
+bcDraw3Dpar1() ==
+  htInitPage('&quot;Draw Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain F (Float))
+       (isDomain SY (Symbol)))
+    (text
+      &quot;\centerline{Drawing a parametrically defined surface:}\newline &quot;
+      &quot;\centerline{{\em ( f1(u,v), f2(u,v), f3(u,v) )}}\newline &quot;
+      &quot;\centerline{in terms of three functions {\em f1}, {\em f2}, and {\em f3}}\newline &quot;
+      &quot;\centerline{and two independent variables {\em u} and {\em v}}\vspace{1}\newline\menuitemstyle{}\tab{2}&quot;
+      &quot;Enter the three {\em functions} of the independent variables:&quot;)
+    (text . &quot;\newline\tab{2}&quot;)
+    (text . &quot;{\em Function f1:}&quot;)
+    (bcStrings (43 &quot;u*sin(v)&quot; function1 EM))
+    (text . &quot;\newline\tab{2}&quot;)
+    (text . &quot;{\em Function f2:}&quot;)
+    (bcStrings (43 &quot;v*cos(u)&quot; function2 EM))
+    (text . &quot;\newline\tab{2}&quot;)
+    (text . &quot;{\em Function f3:}&quot;)
+    (bcStrings (43 &quot;u*cos(v)&quot; function3 EM))
+    (text . &quot;\newline\menuitemstyle{}\tab{2}Enter independent {\em variables} and ranges:&quot;)
+    (text . &quot;\newline\tab{2}&quot;)
+    (text . &quot;{\em Variable 1:}&quot;)
+    (bcStrings (5 u ind1 SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 &quot;-\%pi&quot; from1 F))
+    (text . &quot;{\em to:}&quot;)
+    (bcStrings (9 &quot;\%pi&quot; to1 F))
+    (text . &quot;\newline\tab{2}&quot;)
+    (text . &quot;{\em Variable 2:}&quot;)
+    (bcStrings (5 v ind2 SY))
+    (text . &quot;ranges {\em from:}&quot;)
+    (bcStrings (9 &quot;-\%pi/2&quot; from2 F))
+    (text . &quot;{\em to:}&quot;)
+    (bcStrings (9 &quot;\%pi/2&quot; to2 F))
+    (text
+      &quot;\indent{0}\newline\menuitemstyle{}\tab{2} &quot;
+      &quot;Optionally enter a {\em title} for your surface:&quot;)
+    (bcStrings (15 &quot;surface&quot; title S))
+    (text . &quot;\indent{0}&quot;))
+  htMakeDoneButton ('&quot;Continue&quot;,'bcDraw3Dpar1Gen)
+  htShowPage()
+
+bcDraw3Dpar1Gen htPage ==
+  fun1 := htpLabelInputString(htPage,'function1)
+  fun2 := htpLabelInputString(htPage,'function2)
+  fun3 := htpLabelInputString(htPage,'function3)
+  ind1 := htpLabelInputString(htPage,'ind1)
+  from1 := htpLabelInputString(htPage,'from1)
+  to1 := htpLabelInputString(htPage,'to1)
+  ind2 := htpLabelInputString(htPage,'ind2)
+  from2 := htpLabelInputString(htPage,'from2)
+  to2 := htpLabelInputString(htPage,'to2)
+  title := htpLabelInputString(htPage,'title)
+  r1 := bcDrawIt2(ind1,from1,to1)
+  r2 := bcDrawIt2(ind2,from2,to2)
+  surfacePart := STRCONC('&quot;surface(&quot;,'&quot;{}&quot;,fun1,'&quot;,{}&quot;,fun2,'&quot;,{}&quot;,fun3,'&quot;)&quot;)
+  if (title ^= '&quot;&quot;) then
+    titlePart := (title = '&quot;&quot; =&gt; nil; STRCONC('&quot;{}&quot;,'&quot;title ==_&quot;&quot;,title,'&quot;_&quot;&quot;))
+    bcFinish('&quot;draw&quot;,surfacePart,r1,r2,titlePart)
+  else
+    bcFinish('&quot;draw&quot;,surfacePart,r1,r2)
+
+bcSeries() ==
+  htInitPage('&quot;Series Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+   (text .  &quot;Create a series by: &quot;)
+   (text . &quot;\beginmenu&quot;)
+   (text . &quot;\item &quot;)
+   (bcLinks (&quot;\menuitemstyle{Expansion}&quot; &quot;&quot; bcSeriesExpansion NILl))
+   (text . &quot;\tab{11}Expand a function in a series around a point&quot;)
+   (text . &quot;\item &quot;)
+   (bcLinks (&quot;\menuitemstyle{Formula}&quot;  &quot;&quot; bcSeriesByFormula NIL))
+   (text . &quot;\tab{11}Give a formula for the {\em i}'th coefficient&quot;)
+   (text . &quot;\endmenu&quot;))
+  htShowPage()
+
+bcSeriesExpansion(a,b) ==
+  htInitPage('&quot;Series Expansion Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain EEM (Expression $EmptyMode))
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em function} you want to expand in a power series&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (55 &quot;log(cot(x))&quot; function EM))
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em power series variable}&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 x variable SY))
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em point} about which you want to expand&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 &quot;\%pi/2&quot; point EM)))
+  htMakeDoneButton('&quot;Continue&quot;,'bcSeriesExpansionGen)
+  htShowPage()
+
+bcSeriesExpansionGen htPage ==
+  fun := htpLabelInputString(htPage,'function)
+  var := htpLabelInputString(htPage,'variable)
+  point := htpLabelInputString(htPage,'point)
+  terms := htpLabelInputString(htPage,'numberOfTerms)
+  bcFinish(&quot;series&quot;,fun,STRCONC(var,'&quot; = &quot;,point))
+
+bcSeriesByFormula(a,b) ==
+  htInitPage('&quot;Power Series Basic Command&quot;,nil)
+  htMakePage '(
+    (text . &quot;Select the kind of power series you want to create:&quot;)
+    (text . &quot;\beginmenu&quot;)
+    (text . &quot;\item &quot;)
+    (bcLinks (&quot;\menuitemstyle{Taylor Series}&quot; &quot;&quot; bcTaylorSeries taylor))
+    (text . &quot;\newline Series where the exponent ranges over the integers from a {\em non-negative integer} value to plus infinity by an arbitrary {\em positive integer} step size&quot;)
+    (text . &quot;\item &quot;)
+    (bcLinks (&quot;\menuitemstyle{Laurent Series}&quot; &quot;&quot; bcLaurentSeries laurent))
+    (text . &quot;\newline Series where the exponent ranges from an arbitrary {\em integer} value to plus infinity by an arbitrary {\em positive integer} step size&quot;)
+    (text . &quot;\item &quot;)
+    (bcLinks (&quot;\menuitemstyle{Puiseux Series}&quot; &quot;&quot; bcPuiseuxSeries puiseux))
+    (text . &quot;\newline Series where the exponent ranges from an arbitrary {\em rational value} to plus infinity by an arbitrary {\em positive rational number} step size&quot;)
+    (text . &quot;\endmenu&quot;))
+  htShowPage()
+
+bcTaylorSeries(a,b) ==
+  htInitPage('&quot;Taylor Series Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain EEM (Expression $EmptyMode))
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the formula for the general coefficient of the series&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (55 &quot;1/factorial(i)&quot; formula EM))
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em index variable} for your formula&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 i index SY))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em power series variable}&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 x variable SY))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em point} about which you want to expand&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 0 point EM))
+    (text . &quot;\blankline &quot;)
+    (text .&quot;For Taylor Series, the exponent of the power series variable ranges  from an {\em initial value}, an arbitrary non-negative integer, to plus infinity; the {\em step size} is any positive integer.&quot;)
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em initial value} of the index (an integer)&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 &quot;0&quot; min I))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em step size} (a positive integer)&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 &quot;1&quot; step PI))
+    (doneButton &quot;Continue&quot; bcTaylorSeriesGen))
+  htShowPage()
+
+bcSeriesByFormulaGen htPage == bcNotReady()
+
+bcLaurentSeries(a,b) ==
+  htInitPage('&quot;Laurent Series Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain EEM (Expression $EmptyMode))
+       (isDomain S (String))
+       (isDomain I (Integer))
+       (isDomain PI (PositiveInteger))
+       (isDomain SY (Symbol)))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the formula for the general coefficient of the series&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (55 &quot;(-1)**(n - 1)/(n + 2)&quot; formula EM))
+    (text . &quot;\vspace{1}\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em index variable} for your formula&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 n index SY))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em power series variable}&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 x variable SY))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em point} about which you want to expand&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 0 point F))
+    (text . &quot;\blankline&quot;)
+    (text . &quot;\newline For Laurent Series, the exponent of the power series variable ranges from an {\em initial value}, an arbitrary integer value, to plus infinity; the {\em step size} is any positive integer.&quot;)
+    (text . &quot;\blankline&quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em initial value} of the index (an integer)&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 &quot;-1&quot; min I))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em step size} (a positive integer)&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 &quot;1&quot; step PI))
+    (doneButton &quot;Continue&quot; bcLaurentSeriesGen))
+  htShowPage()
+
+bcPuiseuxSeries(a,b) ==
+  htInitPage('&quot;Puiseux Series Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain EEM (Expression $EmptyMode))
+       (isDomain S (String))
+       (isDomain I (Integer))
+       (isDomain PI (PositiveInteger))
+       (isDOmain RN (Fraction (Integer)))
+       (isDomain SY (Symbol)))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text .&quot;Enter the {\em formula} for the general coefficient of the series&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings(55 &quot;(-1)**((3*n - 4)/6)/factorial(n - 1/3)&quot; formula EM))
+    (text . &quot;\vspace{1}\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em index variable} for your formula&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 n index SY))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em power series variable}&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 x variable SY))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em point} about which you want to expand&quot;)
+    (text . &quot;\tab{49}&quot;)
+    (bcStrings (8 0 point F))
+    (text . &quot;\blankline &quot;)
+    (text . &quot;For Puiseux Series, the exponent of the power series variable ranges from an {\em initial value}, an arbitary rational number, to plus infinity; the {\em step size} is an any positive rational number.&quot;)
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em initial value} of index (a rational number)&quot;)
+    (text . &quot;\tab{51}&quot;)
+    (bcStrings (6 &quot;4/3&quot; min RN))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em step size} (a positive rational number)&quot;)
+    (text . &quot;\tab{51}&quot;)
+    (bcStrings (6 &quot;2&quot; step RN))
+    (doneButton &quot;Continue&quot; bcPuiseuxSeriesGen))
+  htShowPage()
+
+bcTaylorSeriesGen htPage == bcSeriesGen(htPage)
+
+bcLaurentSeriesGen htPage ==
+  bcSeriesGen(htPage)
+
+bcPuiseuxSeriesGen htPage ==
+  bcSeriesGen(htPage)
+
+bcSeriesGen(htPage) ==
+  step:= htpLabelInputString(htPage,'step)
+  min := htpLabelInputString(htPage,'min)
+  formula := htpLabelInputString(htPage,'formula)
+  index   := htpLabelInputString(htPage,'index)
+  var := htpLabelInputString(htPage,'variable)
+  point := htpLabelInputString(htPage,'point)
+  varPart := STRCONC(var,'&quot; = &quot;,point)
+  minPart := STRCONC(min,'&quot;..&quot;)
+  bcFinish('&quot;series&quot;,STRCONC(index,'&quot; +-&gt; &quot;,formula),varPart,minPart,step)
+
+bcLimit() ==
+  htInitPage('&quot;Limit Basic Command&quot;,nil)
+  htMakePage '(
+   (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain SY (Symbol)))
+   (text . &quot;What kind of limit do you want to compute? &quot;)
+   (text . &quot;\blankline &quot;)
+   (text . &quot;\beginmenu&quot;)
+   (text . &quot;\item &quot;)
+   (bcLinks (&quot;\menuitemstyle{A real limit?}&quot; &quot;&quot; bcRealLimit real))
+   (text . &quot;\indentrel{17}\tab{0}&quot;)
+   (text . &quot;The limit as the variable approaches a {\em real} value along the real axis&quot;)
+   (text . &quot;\indentrel{-17}&quot;)
+   (text . &quot;\item &quot;)
+   (text . &quot;\blankline &quot;)
+   (bcLinks (&quot;\menuitemstyle{A complex limit?}&quot; &quot;&quot; bcComplexLimit complex))
+   (text . &quot;\indentrel{17}\tab{0}&quot;)
+   (text . &quot;The limit as the variable approaches a {\em complex} value along any path in the complex plane&quot;)
+   (text . &quot;\indentrel{-17}&quot;)
+   (text . &quot;\endmenu&quot;)
+    )
+  htShowPage()
+
+bcRealLimit(a,b) ==
+  htInitPage('&quot;Real Limit Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+       (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain F (Float))
+       (isDomain SY (Symbol)))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em function} you want to compute the limit of:&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (45 &quot;x*sin(1/x)&quot; expression EM))
+    (text . &quot;\blankline&quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the name of the {\em variable}: &quot;)
+    (text . &quot;\tab{41}&quot;)
+    (bcStrings (6 x variable SY))
+    (text . &quot;\blankline&quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Compute the limit at&quot;)
+    (radioButtons location
+      (&quot;A finite point:&quot; (
+        (text . &quot;\tab{33}&quot;)
+        (bcStrings (6 0 point F))) finitePoint)
+      (&quot;Plus infinity&quot; &quot;&quot; plusInfinity)
+      (&quot;Minus infinity&quot; &quot;&quot; minusInfinity))
+    (doneButton &quot;Continue&quot; bcRealLimitGen))
+  htShowPage()
+
+bcRealLimitGen htPage ==
+  (p := htpButtonValue(htPage,'location)) ^= 'finitePoint =&gt;
+    fun := htpLabelInputString(htPage,'expression)
+    var := htpLabelInputString(htPage,'variable)
+    loc :=
+      p = 'plusInfinity =&gt; '&quot;%plusInfinity&quot;
+      '&quot;%minusInfinity&quot;
+    bcFinish('&quot;limit&quot;,fun,STRCONC(var,'&quot; = &quot;,loc))
+  page := htInitPage('&quot;Real Limit Basic Command&quot;,nil)
+  htMakePage '(
+    (text . &quot;Compute the limit&quot;)
+    (lispLinks
+       (&quot;\menuitemstyle{From both directions}&quot; &quot;&quot; bcRealLimitGen1 both)
+       (&quot;\menuitemstyle{From the right}&quot; &quot;&quot; bcRealLimitGen1 right)
+       (&quot;\menuitemstyle{From the left}&quot; &quot;&quot; bcRealLimitGen1 left)))
+  htpSetProperty(page,'fun,htpLabelInputString(htPage,'expression))
+  htpSetProperty(page,'var,htpLabelInputString(htPage,'variable))
+  htpSetProperty(page,'loc,htpLabelInputString(htPage,'point))
+  htShowPage()
+
+bcRealLimitGen1(htPage,key) ==
+  direction :=
+    key = 'right =&gt; '&quot;_&quot;right_&quot;&quot;
+    key = 'left =&gt; '&quot;_&quot;left_&quot;&quot;
+    nil
+  fun := htpProperty(htPage,'fun)
+  var := htpProperty(htPage,'var)
+  loc := htpProperty(htPage,'loc)
+  varPart := STRCONC(var,'&quot; = &quot;,loc)
+  bcFinish('&quot;limit&quot;,fun,varPart,direction)
+
+bcComplexLimit(a,b) ==
+  htInitPage('&quot;Complex Limit Basic Command&quot;,nil)
+  htMakePage '(
+    (domainConditions
+        (isDomain EM $EmptyMode)
+       (isDomain S (String))
+       (isDomain F (Float))
+       (isDomain SY (Symbol)))
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the {\em function} you want to compute the limit of:&quot;)
+    (text . &quot;\newline\tab{2} &quot;)
+    (bcStrings (40 &quot;sin(a*x)/tan(b*x)&quot; expression EM))
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Enter the name of the {\em variable}: &quot;)
+    (text . &quot;\tab{37}&quot;)
+    (bcStrings (5 x variable SY))
+    (text . &quot;\blankline &quot;)
+    (text . &quot;\newline &quot;)
+    (text . &quot;\menuitemstyle{}\tab{2}&quot;)
+    (text . &quot;Compute the limit at&quot;)
+    (radioButtons location
+      (&quot;A finite point:&quot; (
+       (text . &quot;\newline\space{0}Real part:\space{3}&quot;)
+       (bcStrings (20 0 real F))
+       (text . &quot;\newline Complex part:&quot;)
+       (bcStrings (20 0 complex F))) finitePoint)
+      (&quot;Complex infinity&quot; &quot;&quot; complexInfinity))
+     (doneButton &quot;Continue&quot; bcComplexLimitGen))
+  htShowPage()
+
+bcComplexLimitGen htPage ==
+  fun := htpLabelInputString(htPage,'expression)
+  var := htpLabelInputString(htPage,'variable)
+  loc :=
+    (p := htpButtonValue(htPage,'location)) = 'finitePoint =&gt;
+      real := htpLabelInputString(htPage,'real)
+      comp := htpLabelInputString(htPage,'complex)
+      complexPart :=
+        comp = '&quot;0&quot; =&gt; '&quot;&quot;
+        comp = '&quot;1&quot; =&gt; '&quot;%i&quot;
+        STRCONC(comp,'&quot;*%i&quot;)
+      real = '&quot;0&quot; =&gt;
+        complexPart = '&quot;&quot; =&gt; &quot;0&quot;
+        complexPart
+      complexPart = '&quot;&quot; =&gt; real
+      STRCONC(real,'&quot; + &quot;,complexPart)
+    '&quot;%infinity&quot;
+  varPart := STRCONC(var,'&quot; = &quot;,loc)
+  bcFinish('&quot;complexLimit&quot;,fun,varPart)
+
+
+  -- HyperTeX basic Solve Command
+$systemType := nil
+$numberOfEquations := 0
+$solutionMethod := nil 
+
+bcSolve() ==
+  htInitPage('&quot;Solve Basic Command&quot;, nil)
+  htMakePage '(
+   (text . &quot;What do you want to solve? &quot;) 
+   (text . &quot;\beginmenu&quot;)
+   (text . &quot;\item &quot;)
+   (bcLinks (&quot;\menuitemstyle{A System Of Linear Equations}&quot; &quot;&quot; bcLinearSolve linear)) 
+   (text . &quot;\item &quot;)
+   (bcLinks (&quot;\menuitemstyle{A System of Polynomial Equations}&quot; &quot;&quot; bcSystemSolve  polynomial))
+   (text . &quot;\item &quot;)
+   (bcLinks (&quot;\menuitemstyle{A Single Polynomial Equation}&quot; &quot;&quot; bcSolveSingle onePolynomial))
+   (text . &quot;\endmenu&quot;))
+  htShowPage()
+
+bcLinearSolve(p,nn) ==
+  htInitPage('&quot;Basic Solve Command&quot;, nil)
+  htMakePage '(
+    (text . &quot;How do you want to enter the equations?&quot;)    
+    (text . &quot;\beginmenu&quot;)
+    (text . &quot;\item &quot;)
+    (text . &quot;\newline &quot;)
+    (bcLinks (&quot;\menuitemstyle{Directly as equations}&quot; &quot;&quot; bcLinearSolveEqns equations))
+    (text . &quot;\item &quot;)
+    (text . &quot;\newline &quot;)
+    (bcLinks (&quot;\menuitemstyle{In matrix form}&quot; &quot;&quot; bcLinearSolveMatrix matrix))
+    (text . &quot;\indentrel{16}\tab{0}&quot;)
+    (text . &quot; \spad{AX = B}, where \spad{A} is a matrix of coefficients and \spad{B} is a vector&quot; )
+    (text . &quot;\indentrel{-16}\item &quot;)
+    (text . &quot;\endmenu&quot;))
+  htShowPage()
+
+bcLinearSolveEqns(htPage, p) ==
+  htInitPage('&quot;Basic Solve Command&quot;, nil)
+  htMakePage '(
+    (domainConditions (isDomain PI (PositiveInteger)))
+    (inputStrings  
+      (&quot;Enter the {\em number} of equations:&quot; &quot;&quot; 5 2 numberOfEquations PI)))
+  htMakeDoneButton('&quot;Continue&quot;, 'bcLinearSolveEqns1)
+  htShowPage()
+
+bcSystemSolve(htPage, p) ==
+  htInitPage('&quot;Basic Solve Command&quot;, nil)
+  htMakePage '(
+    (domainConditions (isDomain PI (PositiveInteger)))
+    (inputStrings  
+      (&quot;Enter the {\em number} of equations:&quot; &quot;&quot; 5 2 numberOfEquations PI)))
+  htMakeDoneButton('&quot;Continue&quot;, 'bcSystemSolveEqns1)
+  htShowPage()
+
+bcSolveSingle(htPage,p) ==
+  htpSetProperty(htPage,'systemType, 'onePolynomial)
+  htpSetProperty(htPage,'exitFunction,'bcInputSolveInfo)
+  bcInputEquations(htPage,'exact)
+
+bcSystemSolveEqns1 htPage ==
+  htpSetProperty(htPage,'systemType,'polynomial)
+  htpSetProperty(htPage,'exitFunction,'bcInputSolveInfo)
+  bcInputEquations(htPage,'exact)
+ 
+bcLinearSolveEqns1 htPage ==
+  htpSetProperty(htPage,'systemType,'linear)
+  htpSetProperty(htPage,'exitFunction,'bcLinearSolveEqnsGen)
+  bcInputEquations(htPage,'exact)
+ 
+bcInputSolveInfo htPage ==
+  page := htInitPage('&quot;Solve Basic Command&quot;, htpPropertyList htPage)
+  htpSetProperty(page,'numberOfEquations,htpProperty(htPage,'numberOfEquations))
+  htpSetProperty(page,'inputArea,htpInputAreaAlist htPage)
+  htMakePage '(
+   (domainConditions (isDomain PI (PositiveInteger)))
+   (text . &quot;What would you like?&quot;)  
+   (text . &quot;\beginmenu&quot;)
+   (text . &quot;\item &quot;)
+   (bcLinks (&quot;\menuitemstyle{Exact Solutions}&quot; &quot;&quot; bcSolveEquations exact))
+   (text . &quot;\indentrel{18}\tab{0} &quot;)
+   (text . &quot;Solutions expressed in terms of {\em roots} of irreducible polynomials&quot;)  
+   (text . &quot;\indentrel{-18}&quot;)
+   (text . &quot;\item &quot;)
+   (bcLinks (&quot;\menuitemstyle{Numeric Solutions}&quot; &quot;&quot; bcSolveEquationsNumerically numeric))
+   (text . &quot;\indentrel{18}\tab{0} &quot;)
+   (text . &quot;Solutions expressed in terms of approximate real or complex {\em numbers}&quot;) 
+   (text . &quot;\indentrel{-18}&quot;)
+   (text . &quot;\item &quot;)  
+   (bcLinks (&quot;\menuitemstyle{Radical Solutions}&quot; &quot;&quot; bcSolveEquations radical))
+   (text . &quot;\indentrel{18}\tab{0} &quot;)
+   (text . &quot;Solutions expressed in terms of {\em radicals} if it is possible&quot;)
+   (text . &quot;\indentrel{-18}&quot;)
+   (text . &quot;\endmenu&quot;))
+  htShowPage()
+
+bcInputEquations(htPage,solutionMethod) ==
+  numEqs := 
+    htpProperty(htPage, 'systemType) = 'onePolynomial =&gt; 1
+    $bcParseOnly =&gt; PARSE_-INTEGER htpLabelInputString(htPage,'numberOfEquations)
+    objValUnwrap htpLabelSpadValue(htPage, 'numberOfEquations)
+  linearPred := htpProperty(htPage,'systemType) = 'linear
+  labelList := 
+    numEqs = 1 =&gt; '(
+      (bcStrings (42 &quot;x^2+1&quot; l1 P))
+      (text . &quot; = &quot;)
+      (bcStrings (6 0 r1 P)))
+    &quot;append&quot;/[f(i,numEqs,linearPred) for i in 1..numEqs] where f(i,n,linearp) ==
+      spacer := (i &gt; 99 =&gt; 0; i &gt; 9 =&gt; 1; 2)
+      prefix := STRCONC('&quot;\newline\tab{2}{\em Equation &quot;,STRINGIMAGE i,'&quot;:}&quot;)
+      prefix := STRCONC(prefix,'&quot;\space{&quot;,STRINGIMAGE spacer,'&quot;}&quot;)
+      lnam := INTERN STRCONC('&quot;l&quot;,STRINGIMAGE i)
+      rnam := INTERN STRCONC('&quot;r&quot;,STRINGIMAGE i)
+      var:= 
+	linearp =&gt; bcMakeLinearEquations(i,n)
+	bcMakeEquations(i,n)
+      [['text,:prefix],['bcStrings,[30,var,lnam,'P]],'(text . &quot; = &quot;),['bcStrings,[5,&quot;0&quot;,rnam,'P]]]
+  equationPart := [
+     '(domainConditions 
+        (isDomain P (Polynomial $EmptyMode))
+         (isDomain S (String))
+          (isDomain PI (PositiveInteger))),
+            :labelList]
+  page := htInitPage('&quot;Solve Basic Command&quot;, htpPropertyList htPage)
+  htpSetProperty(page, 'numberOfEquations, numEqs)
+  htpSetProperty(page, 'solutionMethod,solutionMethod)
+  htSay '&quot;\newline\menuitemstyle{}\tab{2}&quot;
+  htSay
+    numEqs = 1 =&gt; '&quot;Enter the {\em Equation}:&quot;
+    '&quot;Enter the {\em Equations}:&quot;
+  htSay '&quot;\newline\tab{2}&quot;
+  htMakePage equationPart
+  bcHt '&quot;\blankline &quot;
+  htSay '&quot;\newline\menuitemstyle{}\tab{2}&quot;
+  htMakePage 
+    numEqs = 1 =&gt;  '(
+      (text .&quot;Enter the {\em unknown} (leave blank if implied): &quot;)
+      (text . &quot;\tab{48}&quot;)
+      (bcStrings (6 &quot;x&quot; unknowns S . quoteString)))
+    ['(text . &quot;Enter the unknowns (leave blank if implied):&quot;),
+     '(text . &quot;\tab{44}&quot;),
+      ['bcStrings, [10,bcMakeUnknowns(numEqs),'unknowns,'P]]]
+  htMakeDoneButton('&quot;Continue&quot;, 'bcInputEquationsEnd)
+  htShowPage()
+
+bcCreateVariableString(i) == 
+   STRCONC('&quot;x&quot;,STRINGIMAGE i)
+
+bcMakeUnknowns(number)==
+   APPLY('CONCAT,[STRCONC(bcCreateVariableString(i),&quot; &quot;) for i in 1..number])
+   
+bcMakeEquations(i,number)==
+   number =1 =&gt; STRCONC(bcCreateVariableString(1),&quot;^2+1&quot;)
+   bcCreateVariableString(i)
+   STRCONC(
+     STRCONC(
+      APPLY('CONCAT,[STRCONC(bcCreateVariableString(j),&quot;+&quot;) for j in 1..number]),&quot;1&quot;),
+	STRCONC(&quot;-2*&quot;,STRCONC(bcCreateVariableString(i),&quot;^2&quot;)))
+
+
+bcMakeLinearEquations(i,number)==
+   number = 1 =&gt; bcCreateVariableString(1)
+   number = 2 =&gt; 
+	i=1 =&gt; STRCONC(bcCreateVariableString(1),STRCONC(&quot;+&quot;,bcCreateVariableString(2)))
+	STRCONC(bcCreateVariableString(1),STRCONC(&quot;-&quot;,bcCreateVariableString(2)))
+   STRCONC(
+     STRCONC(
+      APPLY('CONCAT,[STRCONC(bcCreateVariableString(j),&quot;+&quot;) for j in 1..number]),&quot;1&quot;),
+	STRCONC(&quot;-2*&quot;,bcCreateVariableString(i)))
+      
+
+bcInputEquationsEnd htPage ==
+  fun := htpProperty(htPage, 'exitFunction) =&gt; FUNCALL(fun,htPage)
+  systemError nil
+
+bcSolveEquationsNumerically(htPage,p) ==
+  page := htInitPage('&quot;Solve Basic Command&quot;, htpPropertyList htPage)
+  htMakePage '(
+    (text . &quot;What would you like?&quot;)
+    (radioButtons choice
+      (&quot;Real roots expressed as rational numbers&quot; &quot;&quot; rr)
+      (&quot;Real roots expressed as floats&quot; &quot;&quot; rf)
+      (&quot;Complex roots expressed as rational numbers&quot; &quot;&quot; cr)
+      (&quot;Complex roots expressed as floats&quot; &quot;&quot; cf))
+      (text . &quot;\vspace{1}\newline&quot;)
+      (inputStrings
+        (&quot;Enter the number of desired {\em digits} of accuracy&quot; &quot;&quot; 5 20 acc PI)))
+  htMakeDoneButton('&quot;Continue&quot;, 'bcSolveNumerically1)
+  htShowPage()
+
+bcSolveNumerically1(htPage) ==
+ bcSolveEquations(htPage,'numeric)
+
+--bcSolveNumerically1(htPage,kind) ==
+-- htpSetProperty(htPage,'kind,kind)
+-- bcSolveEquations(htPage,'numeric)
+    
+bcSolveEquations(htPage,solutionMethod) ==
+  if solutionMethod = 'numeric then
+    digits := htpLabelInputString(htPage,'acc)
+    kind := htpButtonValue(htPage,'choice)
+    accString :=
+      kind in '(rf cf) =&gt; STRCONC('&quot;1.e-&quot;,digits)
+      STRCONC('&quot;1/10**&quot;,digits)
+  alist := htpProperty(htPage,'inputArea)
+  [[.,varpart,:.],:r] := alist
+  varlist := bcString2WordList varpart
+  varString := (rest varlist =&gt; bcwords2liststring varlist; first varlist)
+  eqnString := bcGenEquations r
+  solutionMethod = 'numeric =&gt;
+    name :=
+      kind in '(rf rr) =&gt; '&quot;solve&quot;
+      '&quot;complexSolve&quot;
+    bcFinish(name,eqnString,accString)
+  name :=
+    solutionMethod = 'radical =&gt; '&quot;radicalSolve&quot;
+    '&quot;solve&quot;
+  bcFinish(name,eqnString,varString,accString)
+
+bcLinearSolveMatrix(htPage,junk) ==
+  bcReadMatrix 'bcLinearSolveMatrix1
+
+bcLinearSolveMatrix1 htPage ==
+  page := htInitPage('&quot;Linear Solve Basic Command&quot;,htpPropertyList htPage)
+  htpSetProperty(page,'matrix,bcLinearExtractMatrix htPage)
+  htMakePage '(
+    (text . &quot;The right side vector B is:&quot;)
+    (lispLinks
+      (&quot;Zero:&quot; &quot;the system is homogeneous&quot; bcLinearSolveMatrixHomo homo)
+      (&quot;Not zero:&quot; &quot;the system is not homogeneous&quot; bcLinearSolveMatrixInhomo nothomo)))
+  htShowPage()
+
+bcLinearExtractMatrix htPage == REVERSE htpInputAreaAlist htPage
+ 
+bcLinearSolveMatrixInhomo(htPage,junk) ==
+  nrows := htpProperty(htPage,'nrows)
+  ncols := htpProperty(htPage,'ncols)
+  labelList := 
+    [f(i) for i in 1..ncols] where f(i) ==
+      spacer := (i &gt; 99 =&gt; 0; i &gt; 9 =&gt; 1; 2)
+      prefix := STRCONC('&quot;{\em Coefficient &quot;,STRINGIMAGE i,'&quot;:}&quot;)
+      if spacer ^= 0 then
+        prefix := STRCONC(prefix,'&quot;\space{&quot;,STRINGIMAGE spacer,'&quot;}&quot;)
+      name := INTERN STRCONC('&quot;c&quot;,STRINGIMAGE i)
+      [prefix,&quot;&quot;,30, 0,name, 'P]
+  page := htInitPage('&quot;Linear Solve Basic Command&quot;,htpPropertyList htPage)
+  htpSetProperty(page,'matrix,htpProperty(htPage,'matrix))
+  htpSetProperty(page,'nrows,nrows)
+  htpSetProperty(page,'ncols,ncols)
+  htMakePage [
+   '(domainConditions (isDomain P (Polynomial $EmptyMode))),
+    '(text . &quot;Enter the right side vector B:&quot;),
+        ['inputStrings, :labelList],
+          '(text . &quot;\vspace{1}\newline Do you want:&quot; ),
+             '(lispLinks
+                 (&quot;All the solutions?&quot; &quot;&quot; bcLinearSolveMatrixInhomoGen all)
+                  (&quot;A particular solution?&quot; &quot;&quot; bcLinearSolveMatrixInhomoGen particular))]
+  htShowPage()
+
+bcLinearSolveMatrixInhomoGen(htPage,key) ==  bcLinearMatrixGen(htPage,key)
+
+bcLinearSolveMatrixHomo(htPage,key) == bcLinearMatrixGen(htPage,'homo)
+
+bcLinearMatrixGen(htPage,key) == 
+  matform := bcMatrixGen htPage
+  key = 'homo =&gt; bcFinish('&quot;nullSpace&quot;,matform)
+  vector := [x.1 for x in REVERSE htpInputAreaAlist htPage]
+  vecform := bcVectorGen vector 
+  form := bcMkFunction('&quot;solve&quot;,matform,[vecform])
+  bcGen
+    key = 'particular =&gt; STRCONC(form,'&quot;.particular&quot;)
+    form
+  
+linearFinalRequest(nhh,mat,vect) ==     
+  sayBrightly '&quot;Do you want more information on the meaning of the output&quot;
+  sayBrightly '&quot;   (1) no &quot;
+  sayBrightly '&quot;   (2) yes &quot;
+  tt := bcQueryInteger(1,2,true)
+  tt=1 =&gt; sayBrightly '&quot;Bye Bye&quot;
+  tt=2 =&gt; explainLinear(nhh)
+ 
+explainLinear(flag) ==
+  flag=&quot;notHomogeneous&quot; =&gt;
+   '(&quot;solve returns a particular solution and a basis for&quot;
+     &quot;the vector space of solutions for the homogeneous part.&quot;
+     &quot;The particular solution is _&quot;failed_&quot; if one cannot be found.&quot;)
+  flag= &quot;homogeneous&quot; =&gt;
+    '(&quot;solve returns a basis for&quot;
+      &quot;the vector space of solutions for the homogeneous part&quot;)
+  systemError nil
+ 
+finalExactRequest(equations,unknowns) ==
+  sayBrightly '&quot;Do you like:&quot;
+  sayBrightly '&quot;   (1) the solutions how they are displayed&quot;
+  sayBrightly '&quot;   (2) to get ????&quot;
+  sayBrightly '&quot;   (3) more information on the meaning of the output&quot;
+  tt := bcQueryInteger(1,3,true)
+  tt=1 =&gt; sayBrightly '&quot;Bye Bye&quot;
+  tt=2 =&gt; moreExactSolution(equations,unknowns,flag)
+  tt=3 =&gt; explainExact(equations,unknowns)
+
+bcLinearSolveEqnsGen htPage == 
+  alist := htpInputAreaAlist htPage
+  if vars := htpLabelInputString(htPage,'unknowns) then 
+    varlist := bcString2WordList vars
+    varString := (rest varlist =&gt; bcwords2liststring varlist; first varlist)
+    alist := rest alist  --know these are first on the list
+  eqnString := bcGenEquations alist
+  bcFinish('&quot;solve&quot;,eqnString,varString)
+
+bcGenEquations alist ==
+  y := alist
+  while y repeat
+    right := (first y).1
+    y := rest y
+    left := (first y).1
+    y := rest y
+    eqnlist := [STRCONC(left,'&quot; = &quot;,right),:eqnlist]
+  rest eqnlist =&gt; bcwords2liststring eqnlist
+  first eqnlist
+  
+
+bcFinish(name,arg,:args) == bcGen bcMkFunction(name,arg,args)
+
+bcMkFunction(name,arg,args) ==
+  args := [x for x in args | x]
+  STRCONC(name,'&quot;(&quot;,arg,&quot;STRCONC&quot;/[STRCONC('&quot;,&quot;, x) for x in args],'&quot;)&quot;)
+
+bcString2HyString2 s ==
+  (STRINGP s) and (s.0 = char '_&quot;)  =&gt;
+    len := #s
+    STRCONC('&quot;\_&quot;&quot;, SUBSTRING(s, 1, len-2), '&quot;\_&quot;&quot;)
+  s
+
+bcString2HyString s == s
+
+bcFindString(s,i,n,char) ==  or/[j for j in i..n | s.j = char]
+
+bcGen command ==
+  htInitPage('&quot;Basic Command&quot;,nil)
+  string :=
+    #command &lt; 50 =&gt; STRCONC('&quot;{\centerline{\tt &quot;,command,'&quot; }}&quot;)
+    STRCONC('&quot;{\tt &quot;,command,'&quot; }&quot;)
+  htMakePage [
+     '(text
+        &quot;{Here is the AXIOM command you could have issued to compute this result:}&quot;
+            &quot;\vspace{2}\newline &quot;),
+      ['text,:string]]
+  htMakeDoitButton('&quot;Do It&quot;, command)
+  htShowPage()
+
+-- bcGen for axiom - nag link
+linkGen command ==
+  htInitPage('&quot;AXIOM-Nag Link Command&quot;,nil)
+  string := 
+    #command &lt; 50 =&gt; STRCONC('&quot;{\centerline{ &quot;,command,'&quot; }}&quot;)
+    command
+  htMakePage [
+     '(text 
+        &quot;\centerline{{\em Here is the AXIOM command}}&quot;
+          &quot;\centerline{{\em you could have issued to compute this result:}}&quot;
+            &quot;\vspace{2}\newline &quot;),
+      ['text,:string]]
+  htMakeDoitButton('&quot;Do It&quot;, command)
+  htShowPage()
+
+bcOptional s ==
+  s = '&quot;&quot; =&gt; '&quot;2&quot;
+  s
+
+bcvspace() == bcHt '&quot;\vspace{1}\newline &quot;
+
+bcString2WordList s == fn(s,0,MAXINDEX s) where
+  fn(s,i,n) ==
+    i &gt; n =&gt; nil
+    k := or/[j for j in i..n | s.j ^= char '_  ]
+    null INTEGERP k =&gt; nil
+    l := bcFindString(s,k + 1,n,char '_  )
+    null INTEGERP l =&gt; [SUBSTRING(s,k,nil)]
+    [SUBSTRING(s,k,l-k),:fn(s,l + 1,n)]
+
+
+bcwords2liststring u ==
+  null u =&gt; nil
+  STRCONC('&quot;[&quot;,first u,fn rest u) where
+    fn(u) ==
+      null u =&gt; '&quot;]&quot;
+      STRCONC('&quot;, &quot;,first u,fn rest u)
+
+bcVectorGen vec == bcwords2liststring vec
+
+bcError string ==
+  sayBrightlyNT '&quot;NOTE: &quot;
+  sayBrightly string
+
+bcDrawIt(ind,a,b) == STRCONC(ind,'&quot;=&quot;,a,'&quot;..&quot;,b)
+
+bcNotReady htPage ==
+  htInitPage('&quot;Basic Command&quot;,nil)
+  htMakePage '(
+     (text .
+        &quot;{\centerline{\em This facility will soon be available}}&quot;))
+  htShowPage()
+
+htStringPad(n,w) ==
+  s := STRINGIMAGE n
+  ws := #s
+  STRCONC('&quot;\space{&quot;,STRINGIMAGE (w - ws + 1),'&quot;}&quot;,s)
+
+stringList2String x ==
+  null x =&gt; '&quot;()&quot;
+  STRCONC('&quot;(&quot;,first x,&quot;STRCONC&quot;/[STRCONC('&quot;,&quot;,y) for y in rest x],'&quot;)&quot;)
+
+htMkName(s,n) == STRCONC(s,STRINGIMAGE n)
+
 @
 \eject
 \begin{thebibliography}{99}
 \bibitem{1} nothing
 \end{thebibliography}
 \end{document}
+</diff>
      <filename>src/interp/bc-matrix.boot.pamphlet</filename>
    </modified>
    <modified>
      <diff>@@ -1395,9 +1395,6605 @@ digits2Names s ==
       c
     CONCAT(str, segment)
   str
+
+lefts u ==
+   [x for x in HKEYS  _*HASCATEGORY_-HASH_* | CDR x = u]
+
+
+
+--====================&gt; WAS b-data.boot &lt;================================
+
+--============================================================================
+--              Build Library Database (libdb.text,...)
+--============================================================================
+--Formal for libdb.text:
+--  constructors    Cname\#\I\sig \args   \abb \comments (C is C, D, P, X)
+--  operations      Op  \#\E\sig \conname\pred\comments (E is one of U/E)
+--  attributes      Aname\#\E\args\conname\pred\comments
+--  I = &lt;x if exposed&gt;&lt;d if category with a default package&gt;
+buildLibdb(:options) ==  --called by make-databases (daase.lisp.pamphlet)
+  domainList := IFCAR options  --build local libdb if list of domains is given
+  $OpLst: local := nil
+  $AttrLst: local := nil
+  $DomLst : local := nil
+  $CatLst : local := nil
+  $PakLst : local := nil
+  $DefLst : local := nil
+  deleteFile '&quot;temp.text&quot;
+  $outStream: local := MAKE_-OUTSTREAM '&quot;temp.text&quot;
+  if null domainList then
+    comments :=
+      '&quot;\spad{Union(A,B,...,C)} is a primitive type in AXIOM used to represent objects of type \spad{A} or of type \spad{B} or...or of type \spad{C}.&quot;
+    writedb
+      buildLibdbString ['&quot;dUnion&quot;,1,'&quot;x&quot;,'&quot;special&quot;,'&quot;(A,B,...,C)&quot;,'UNION,comments]
+    comments :=
+      '&quot;\spad{Record(a:A,b:B,...,c:C)} is a primitive type in AXIOM used to represent composite objects made up of objects of type \spad{A}, \spad{B},..., \spad{C} which are indexed by _&quot;keys_&quot; (identifiers) \spad{a},\spad{b},...,\spad{c}.&quot;
+    writedb
+      buildLibdbString ['&quot;dRecord&quot;,1,'&quot;x&quot;,'&quot;special&quot;,'&quot;(a:A,b:B,...,c:C)&quot;,'RECORD,comments]
+    comments :=
+      '&quot;\spad{Mapping(T,S)} is a primitive type in AXIOM used to represent mappings from source type \spad{S} to target type \spad{T}. Similarly, \spad{Mapping(T,A,B)} denotes a mapping from source type \spad{(A,B)} to target type \spad{T}.&quot;
+    writedb
+      buildLibdbString ['&quot;dMapping&quot;,1,'&quot;x&quot;,'&quot;special&quot;,'&quot;(T,S)&quot;,'MAPPING,comments]
+    comments :=
+      '&quot;\spad{Enumeration(a,b,...,c)} is a primitive type in AXIOM used to represent the object composed of the symbols \spad{a},\spad{b},..., and \spad{c}.&quot;
+    writedb
+      buildLibdbString ['&quot;dEnumeration&quot;,1,'&quot;x&quot;,'&quot;special&quot;,'&quot;(a,b,...,c)&quot;,'ENUM,comments]
+  $conname: local := nil
+  $conform: local := nil
+  $exposed?:local := nil
+  $doc:     local := nil
+  $kind:    local := nil
+  constructorList := domainList or allConstructors()
+  for con in constructorList repeat
+    writedb buildLibdbConEntry con
+    [attrlist,:oplist] := getConstructorExports $conform
+    buildLibOps oplist
+    buildLibAttrs attrlist
+  SHUT $outStream
+  domainList =&gt; 'done         --leave new database in temp.text
+  OBEY
+    $machineType = 'RIOS =&gt; '&quot;sort -f -T /tmp -y200 _&quot;temp.text_&quot;  &gt; _&quot;libdb.text_&quot;&quot;
+    $machineType = 'SPARC =&gt; '&quot;sort -f  _&quot;temp.text_&quot;  &gt; _&quot;libdb.text_&quot;&quot;
+    '&quot;sort  _&quot;temp.text_&quot;  &gt; _&quot;libdb.text_&quot;&quot;
+  --OBEY '&quot;mv libdb.text olibdb.text&quot;
+  RENAME_-FILE('&quot;libdb.text&quot;, '&quot;olibdb.text&quot;)
+  deleteFile '&quot;temp.text&quot;
+
+buildLibdbConEntry conname ==
+    NULL GETDATABASE(conname, 'CONSTRUCTORMODEMAP) =&gt; nil
+    abb:=GETDATABASE(conname,'ABBREVIATION)
+    $conname := conname
+    conform := GETDATABASE(conname,'CONSTRUCTORFORM) or [conname] --hack for Category,..
+    $conform := dbMkForm SUBST('T,&quot;T$&quot;,conform)
+    null $conform =&gt; nil
+    $exposed? := (isExposedConstructor conname =&gt; '&quot;x&quot;; '&quot;n&quot;)
+    $doc      := GETDATABASE(conname, 'DOCUMENTATION)
+    pname := PNAME conname
+    kind  := GETDATABASE(conname,'CONSTRUCTORKIND)
+    if kind = 'domain
+      and GETDATABASE(conname,'CONSTRUCTORMODEMAP) is [[.,t,:.],:.]
+       and t is ['CATEGORY,'package,:.] then kind := 'package
+    $kind :=
+      pname.(MAXINDEX pname) = char '_&amp; =&gt; 'x
+      DOWNCASE (PNAME kind).0
+    argl := rest $conform
+    conComments :=
+      LASSOC('constructor,$doc) is [[=nil,:r]] =&gt; libdbTrim concatWithBlanks r
+      '&quot;&quot;
+    argpart:= SUBSTRING(form2HtString ['f,:argl],1,nil)
+    sigpart:= libConstructorSig $conform
+    header := STRCONC($kind,PNAME conname)
+    buildLibdbString [header,#argl,$exposed?,sigpart,argpart,abb,conComments]
+
+dbMkForm x == atom x and [x] or x
+
+buildLibdbString [x,:u] ==
+  STRCONC(STRINGIMAGE x,&quot;STRCONC&quot;/[STRCONC('&quot;`&quot;,STRINGIMAGE y) for y in u])
+
+libConstructorSig [conname,:argl] ==
+  [[.,:sig],:.] := GETDATABASE(conname,'CONSTRUCTORMODEMAP)
+  formals := TAKE(#argl,$FormalMapVariableList)
+  sig := SUBLISLIS(formals,$TriangleVariableList,sig)
+  keys := [g(f,sig,i) for f in formals for i in 1..] where
+    g(x,u,i) ==  --does x appear in any but i-th element of u?
+      or/[CONTAINED(x,y) for y in u for j in 1.. | j ^= i]
+  sig := fn SUBLISLIS(argl,$FormalMapVariableList,sig) where
+    fn x ==
+      atom x =&gt; x
+      x is ['Join,a,:r] =&gt; ['Join,fn a,'etc]
+      x is ['CATEGORY,:.] =&gt; 'etc
+      [fn y for y in x]
+  sig := [first sig,:[(k =&gt; [&quot;:&quot;,a,s]; s)
+            for a in argl for s in rest sig for k in keys]]
+  sigpart:= form2LispString ['Mapping,:sig]
+  if null ncParseFromString sigpart then
+    sayBrightly ['&quot;Won't parse: &quot;,sigpart]
+  sigpart
+
+concatWithBlanks r ==
+  r is [head,:tail] =&gt;
+    tail =&gt; STRCONC(head,'&quot; &quot;,concatWithBlanks tail)
+    head
+  '&quot;&quot;
+
+writedb(u) ==
+  not STRINGP u =&gt; nil        --skip if not a string
+  PRINTEXP(addPatchesToLongLines(u,500),$outStream)
+  --positions for tick(1), dashes(2), and address(9), i.e. 12
+  TERPRI $outStream
+
+addPatchesToLongLines(s,n) ==
+  #s &gt; n =&gt; STRCONC(SUBSTRING(s,0,n),
+              addPatchesToLongLines(STRCONC('&quot;--&quot;,SUBSTRING(s,n,nil)),n))
+  s
+
+buildLibOps oplist == for [op,sig,:pred] in oplist repeat buildLibOp(op,sig,pred)
+
+buildLibOp(op,sig,pred) ==
+--operations      OKop  \#\sig \conname\pred\comments (K is U or C)
+  nsig := SUBLISLIS(rest $conform,$FormalMapVariableList,sig)
+  pred := SUBLISLIS(rest $conform,$FormalMapVariableList,pred)
+  nsig := SUBST('T,&quot;T$&quot;,nsig)   --this ancient artifact causes troubles!
+  pred := SUBST('T,&quot;T$&quot;,pred)
+  sigpart:= form2LispString ['Mapping,:nsig]
+  predString := (pred = 'T =&gt; '&quot;&quot;; form2LispString pred)
+  sop :=
+    (s := STRINGIMAGE op) = '&quot;One&quot; =&gt; '&quot;1&quot;
+    s = '&quot;Zero&quot; =&gt; '&quot;0&quot;
+    s
+  header := STRCONC('&quot;o&quot;,sop)
+  conform:= STRCONC($kind,form2LispString $conform)
+  comments:= libdbTrim concatWithBlanks LASSOC(sig,LASSOC(op,$doc))
+  checkCommentsForBraces('operation,sop,sigpart,comments)
+  writedb
+    buildLibdbString [header,# rest sig,$exposed?,sigpart,conform,predString,comments]
+
+libdbTrim s ==
+  k := MAXINDEX s
+  k &lt; 0 =&gt; s
+  for i in 0..k repeat
+    s.i = $Newline =&gt; SETELT(s,i,char '_ )
+  trimString s
+
+checkCommentsForBraces(kind,sop,sigpart,comments) ==
+  count := 0
+  for i in 0..MAXINDEX comments repeat
+    c := comments.i
+    c = char '_{ =&gt; count := count + 1
+    c = char '_} =&gt;
+      count := count - 1
+      count &lt; 0 =&gt; missingLeft := true
+  if count &lt; 0 or missingLeft then
+    tail :=
+      kind = 'attribute =&gt; [sop,'&quot;(&quot;,sigpart,'&quot;)&quot;]
+      [sop,'&quot;: &quot;,sigpart]
+    sayBrightly ['&quot;(&quot;,$conname,'&quot; documentation) missing left brace--&gt; &quot;,:tail]
+  if count &gt; 0 then
+    sayBrightly ['&quot;(&quot;,$conname,'&quot; documentation) missing right brace--&gt; &quot;,:tail]
+  if count ^= 0 or missingLeft then pp comments
+
+buildLibAttrs attrlist ==
+  for [name,argl,:pred] in attrlist repeat buildLibAttr(name,argl,pred)
+
+buildLibAttr(name,argl,pred) ==
+--attributes      AKname\#\args\conname\pred\comments (K is U or C)
+  header := STRCONC('&quot;a&quot;,STRINGIMAGE name)
+  argPart:= SUBSTRING(form2LispString ['f,:argl],1,nil)
+  pred := SUBLISLIS(rest $conform,$FormalMapVariableList,pred)
+  predString := (pred = 'T =&gt; '&quot;&quot;; form2LispString pred)
+  header := STRCONC('&quot;a&quot;,STRINGIMAGE name)
+  conname := STRCONC($kind,form2LispString $conname)
+  comments:= concatWithBlanks LASSOC(['attribute,:argl],LASSOC(name,$doc))
+  checkCommentsForBraces('attribute,STRINGIMAGE name,argl,comments)
+  writedb
+    buildLibdbString [header,# argl,$exposed?,argPart,conname,predString,comments]
+
+dbAugmentConstructorDataTable() ==
+  instream := MAKE_-INSTREAM '&quot;libdb.text&quot;
+  while not EOFP instream repeat
+    fp   := FILE_-POSITION instream
+    line := READLINE instream
+    cname := INTERN dbName line
+    entry := getCDTEntry(cname,true) =&gt;  --skip over Mapping, Union, Record
+       [name,abb,:.] := entry
+       RPLACD(CDR entry,PUTALIST(CDDR entry,'dbLineNumber,fp))
+--     if xname := constructorHasExamplePage entry then
+--       RPLACD(CDR entry,PUTALIST(CDDR entry,'dbExampleFile,xname))
+       args := IFCDR GETDATABASE(name,'CONSTRUCTORFORM)
+       if args then RPLACD(CDR entry,PUTALIST(CDDR entry,'constructorArgs,args))
+  'done
+
+dbHasExamplePage conname ==
+  sname    := STRINGIMAGE conname
+  abb      := constructor? conname
+  ucname   := UPCASE STRINGIMAGE abb
+  pathname :=STRCONC(getEnv '&quot;AXIOM&quot;,'&quot;/doc/hypertex/pages/&quot;,ucname,'&quot;.ht&quot;)
+  isExistingFile pathname =&gt; INTERN STRCONC(sname,'&quot;XmpPage&quot;)
+  nil
+
+dbRead(n) ==
+  instream := MAKE_-INSTREAM STRCONC(getEnv('&quot;AXIOM&quot;), '&quot;/algebra/libdb.text&quot;)
+  FILE_-POSITION(instream,n)
+  line := READLINE instream
+  SHUT instream
+  line
+
+dbReadComments(n) ==
+  n = 0 =&gt; '&quot;&quot;
+  instream := MAKE_-INSTREAM STRCONC(getEnv('&quot;AXIOM&quot;),'&quot;/algebra/comdb.text&quot;)
+  FILE_-POSITION(instream,n)
+  line := READLINE instream
+  k := dbTickIndex(line,1,1)
+  line := SUBSTRING(line,k + 1,nil)
+  while not EOFP instream and (x := READLINE instream) and
+    (k := MAXINDEX x) and (j := dbTickIndex(x,1,1)) and (j &lt; k) and
+      x.(j := j + 1) = char '_- and x.(j := j + 1) = char '_- repeat
+        xtralines := [SUBSTRING(x,j + 1,nil),:xtralines]
+  SHUT instream
+  STRCONC(line, &quot;STRCONC&quot;/NREVERSE xtralines)
+
+dbSplitLibdb() ==
+  instream := MAKE_-INSTREAM  '&quot;olibdb.text&quot;
+  outstream:= MAKE_-OUTSTREAM '&quot;libdb.text&quot;
+  comstream:= MAKE_-OUTSTREAM '&quot;comdb.text&quot;
+  PRINTEXP(0,    comstream)
+  PRINTEXP($tick,comstream)
+  PRINTEXP('&quot;&quot;,  comstream)
+  TERPRI(comstream)
+  while not EOFP instream repeat
+    line := READLINE instream
+    outP := FILE_-POSITION outstream
+    comP := FILE_-POSITION comstream
+    [prefix,:comments] := dbSplit(line,6,1)
+    PRINTEXP(prefix,outstream)
+    PRINTEXP($tick ,outstream)
+    null comments =&gt;
+      PRINTEXP(0,outstream)
+      TERPRI(outstream)
+    PRINTEXP(comP,outstream)
+    TERPRI(outstream)
+    PRINTEXP(outP  ,comstream)
+    PRINTEXP($tick ,comstream)
+    PRINTEXP(first comments,comstream)
+    TERPRI(comstream)
+    for c in rest comments repeat
+      PRINTEXP(outP  ,comstream)
+      PRINTEXP($tick ,comstream)
+      PRINTEXP(c, comstream)
+      TERPRI(comstream)
+  SHUT instream
+  SHUT outstream
+  SHUT comstream
+  OBEY '&quot;rm olibdb.text&quot;
+
+dbSplit(line,n,k) ==
+  k := charPosition($tick,line,k + 1)
+  n = 1 =&gt; [SUBSTRING(line,0,k),:dbSpreadComments(SUBSTRING(line,k + 1,nil),0)]
+  dbSplit(line,n - 1,k)
+
+dbSpreadComments(line,n) ==
+  line = '&quot;&quot; =&gt; nil
+  k := charPosition(char '_-,line,n + 2)
+  k &gt;= MAXINDEX line =&gt; [SUBSTRING(line,n,nil)]
+  line.(k + 1) ^= char '_- =&gt;
+    u := dbSpreadComments(line,k)
+    [STRCONC(SUBSTRING(line,n,k - n),first u),:rest u]
+  [SUBSTRING(line,n,k - n),:dbSpreadComments(SUBSTRING(line,k,nil),0)]
+
+--============================================================================
+--                  Build Glossary
+--============================================================================
+buildGloss() ==  --called by buildDatabase (database.boot)
+--starting with gloss.text, build glosskey.text and glossdef.text
+  $constructorName : local := nil
+  $exposeFlag : local := true
+  $outStream: local := MAKE_-OUTSTREAM '&quot;temp.text&quot;
+  $x : local := nil
+  $attribute? : local := true     --do not surround first word
+  pathname := STRCONC(getEnv '&quot;AXIOM&quot;,'&quot;/algebra/gloss.text&quot;)
+  instream := MAKE_-INSTREAM pathname
+  keypath  := '&quot;glosskey.text&quot;
+  OBEY STRCONC('&quot;rm -f &quot;,keypath)
+  outstream:= MAKE_-OUTSTREAM keypath
+  htpath   := '&quot;gloss.ht&quot;
+  OBEY STRCONC('&quot;rm -f &quot;,htpath)
+  htstream:= MAKE_-OUTSTREAM htpath
+  defpath  := '&quot;glossdef.text&quot;
+  defstream:= MAKE_-OUTSTREAM defpath
+  pairs := getGlossLines instream
+  PRINTEXP('&quot;\begin{page}{GlossaryPage}{G l o s s a r y}\beginscroll\beginmenu&quot;,htstream)
+  for [name,:line] in pairs repeat
+    outP  := FILE_-POSITION outstream
+    defP  := FILE_-POSITION defstream
+    lines := spreadGlossText transformAndRecheckComments(name,[line])
+    PRINTEXP(name, outstream)
+    PRINTEXP($tick,outstream)
+    PRINTEXP(defP, outstream)
+    TERPRI(outstream)
+--  PRINTEXP('&quot;\item\newline{\em \menuitemstyle{}}\tab{0}{\em &quot;,htstream)
+    PRINTEXP('&quot;\item\newline{\em \menuitemstyle{}}{\em &quot;,htstream)
+    PRINTEXP(name,        htstream)
+    PRINTEXP('&quot;}\space{}&quot;,htstream)
+    TERPRI(htstream)
+    for x in lines repeat
+      PRINTEXP(outP, defstream)
+      PRINTEXP($tick,defstream)
+      PRINTEXP(x,    defstream)
+      TERPRI defstream
+    PRINTEXP(&quot;STRCONC&quot;/lines,htstream)
+    TERPRI htstream
+  PRINTEXP('&quot;\endmenu\endscroll&quot;,htstream)
+  PRINTEXP('&quot;\lispdownlink{Search}{(|htGloss| _&quot;\stringvalue{pattern}_&quot;)} for glossary entry matching \inputstring{pattern}{24}{*}&quot;,htstream)
+  PRINTEXP('&quot;\end{page}&quot;,htstream)
+  SHUT instream
+  SHUT outstream
+  SHUT defstream
+  SHUT htstream
+  SHUT $outStream
+
+spreadGlossText(line) ==
+--this function breaks up a line into chunks
+--eventually long line is put into gloss.text as several chunks as follows:
+----- key1`this is the first chunk
+----- XXX`and this is the second
+----- XXX`and this is the third
+----- key2`and this is the fourth
+--where XXX is the file position of key1
+--this is because grepping will only pick up the first 512 characters
+  line = '&quot;&quot; =&gt; nil
+  MAXINDEX line &gt; 500 =&gt; [SUBSTRING(line,0,500),:spreadGlossText(SUBSTRING(line,500,nil))]
+  [line]
+
+getGlossLines instream ==
+--instream has text of the form:
+----- key1`this is the first line
+----- and this is the second
+----- key2'and this is the third
+--result is
+----- key1'this is the first line and this is the second
+----- key2'and this is the third
+  keys := nil
+  text := nil
+  lastLineHadTick := false
+  while not EOFP instream repeat
+    line := READLINE instream
+    #line = 0 =&gt; 'skip
+    n := charPosition($tick,line,0)
+    last := IFCAR text
+    n &gt; MAXINDEX line =&gt;  --this line is continuation of previous line; concat it
+      fill :=
+        #last = 0 =&gt;
+          lastLineHadTick =&gt; '&quot;&quot;
+          '&quot;\blankline &quot;
+        #last &gt; 0 and last.(MAXINDEX last) ^= $charBlank =&gt; $charBlank
+        '&quot;&quot;
+      lastLineHadTick := false
+      text := [STRCONC(last,fill,line),:rest text]
+    lastLineHadTick := true
+    keys := [SUBSTRING(line,0,n),:keys]
+    text := [SUBSTRING(line,n + 1,nil),:text]
+  ASSOCRIGHT listSort(function GLESSEQP,[[DOWNCASE key,key,:def] for key in keys for def in text])
+  --this complication sorts them after lower casing the keys
+
+--============================================================================
+--                  Build Users HashTable
+-- This database is written out as users.database (database.boot) 
+-- and read using function getUsersOfConstructor. See functions 
+-- whoUses and kcuPage in browser.
+--============================================================================
+mkUsersHashTable() ==  --called by make-databases (daase.lisp.pamphlet)
+  $usersTb := MAKE_-HASH_-TABLE()
+  for x in allConstructors() repeat
+    for conform in getImports x repeat
+      name := opOf conform
+      if not MEMQ(name,'(QUOTE)) then
+        HPUT($usersTb,name,insert(x,HGET($usersTb,name)))
+  for k in HKEYS $usersTb repeat
+    HPUT($usersTb,k,listSort(function GLESSEQP,HGET($usersTb,k)))
+  for x in allConstructors() | isDefaultPackageName x repeat
+    HPUT($usersTb,x,getDefaultPackageClients x)
+  $usersTb
+
+getDefaultPackageClients con ==  --called by mkUsersHashTable
+  catname := INTERN SUBSTRING(s := PNAME con,0,MAXINDEX s)
+  for [catAncestor,:.] in childrenOf([catname]) repeat
+    pakname := INTERN STRCONC(PNAME catAncestor,'&quot;&amp;&quot;)
+    if getCDTEntry(pakname,true) then acc := [pakname,:acc]
+    acc := UNION([CAAR x for x in domainsOf([catAncestor],nil)],acc)
+  listSort(function GLESSEQP,acc)
+
+--============================================================================
+--               Build Dependents Hashtable
+-- This hashtable is written out by database.boot as dependents.DATABASE
+-- and read back in by getDependentsOfConstructor (see daase.lisp)
+-- This information is used by function kcdePage when a user asks for the
+-- dependents of a constructor.
+--============================================================================
+mkDependentsHashTable() == --called by make-databases (daase.lisp.pamphlet)
+  $depTb := MAKE_-HASH_-TABLE()
+  for nam in allConstructors() repeat
+    for con in getArgumentConstructors nam repeat
+      HPUT($depTb,con,[nam,:HGET($depTb,con)])
+  for k in HKEYS $depTb repeat
+    HPUT($depTb,k,listSort(function GLESSEQP,HGET($depTb,k)))
+  $depTb
+
+getArgumentConstructors con == --called by mkDependentsHashTable
+  argtypes := IFCDR IFCAR getConstructorModemap con or return nil
+  fn argtypes where
+    fn(u) == &quot;UNION&quot;/[gn x for x in u]
+    gn(x) ==
+      atom x =&gt; nil
+      x is ['Join,:r] =&gt; fn(r)
+      x is ['CATEGORY,:.] =&gt; nil
+      constructor? first x =&gt; [first x,:fn rest x]
+      fn rest x
+
+getImports conname == --called by mkUsersHashTable
+  conform := GETDATABASE(conname,'CONSTRUCTORFORM)
+  infovec := dbInfovec conname or return nil
+  template := infovec.0
+  u := [import(i,template)
+          for i in 5..(MAXINDEX template) | test]  where
+    test == template.i is [op,:.] and IDENTP op
+              and not MEMQ(op,'(Mapping Union Record Enumeration CONS QUOTE local))
+    import(x,template) ==
+      x is [op,:args] =&gt;
+        op = 'QUOTE or op = 'NRTEVAL =&gt; CAR args
+        op = 'local =&gt; first args
+        op = 'Record =&gt;
+          ['Record,:[[&quot;:&quot;,CADR y,import(CADDR y,template)] for y in args]]
+
+--TTT next three lines: handles some tagged/untagged Union case.
+        op = 'Union=&gt;
+          args is [['_:,:x1],:x2] =&gt;
+--          CAAR args = '_: =&gt; -- tagged!
+               ['Union,:[[&quot;:&quot;,CADR y,import(CADDR y,template)] for y in args]]
+          [op,:[import(y,template) for y in args]]
+
+        [op,:[import(y,template) for y in args]]
+      INTEGERP x =&gt; import(template.x,template)
+      x = '$ =&gt; '$
+      x = &quot;$$&quot; =&gt; &quot;$$&quot;
+      STRINGP x =&gt; x
+      systemError '&quot;bad argument in template&quot;
+  listSort(function GLESSEQP,SUBLISLIS(rest conform,$FormalMapVariableList,u))
+
+
+--============================================================================
+--                 Get Hierarchical Information
+--============================================================================
+getParentsFor(cname,formalParams,constructorCategory) ==
+--called by compDefineFunctor1
+  acc := nil
+  formals := TAKE(#formalParams,$TriangleVariableList)
+  constructorForm := GETDATABASE(cname, 'CONSTRUCTORFORM)
+  for x in folks constructorCategory repeat
+    x := SUBLISLIS(formalParams,formals,x)
+    x := SUBLISLIS(IFCDR constructorForm,formalParams,x)
+    x := SUBST('Type,'Object,x)
+    acc := [:explodeIfs x,:acc]
+  NREVERSE acc
+
+parentsOf con == --called by kcpPage, ancestorsRecur
+  if null BOUNDP '$parentsCache then SETQ($parentsCache,MAKE_-HASHTABLE 'ID)
+  HGET($parentsCache,con) or
+    parents := getParentsForDomain con
+    HPUT($parentsCache,con,parents)
+    parents
+
+parentsOfForm [op,:argl] ==
+  parents := parentsOf op
+  null argl or argl = (newArgl := rest GETDATABASE(op,'CONSTRUCTORFORM)) =&gt;
+    parents
+  SUBLISLIS(argl, newArgl, parents)
+
+getParentsForDomain domname  == --called by parentsOf
+  acc := nil
+  for x in folks GETDATABASE(domname,'CONSTRUCTORCATEGORY) repeat
+    x :=
+      GETDATABASE(domname,'CONSTRUCTORKIND) = 'category =&gt;
+        sublisFormal(IFCDR getConstructorForm domname,x,$TriangleVariableList)
+      sublisFormal(IFCDR getConstructorForm domname,x)
+    acc := [:explodeIfs x,:acc]
+  NREVERSE acc
+
+explodeIfs x == main where  --called by getParents, getParentsForDomain
+  main ==
+    x is ['IF,p,a,b] =&gt; fn(p,a,b)
+    [[x,:true]]
+  fn(p,a,b) ==
+    [:&quot;append&quot;/[gn(p,y) for y in a],:&quot;append&quot;/[gn(['NOT,p],y) for y in b]]
+  gn(p,a) ==
+    a is ['IF,q,b,:.] =&gt; fn(MKPF([p,q],'AND),b,nil)
+    [[a,:p]]
+
+folks u == --called by getParents and getParentsForDomain
+  atom u =&gt; nil
+  u is [op,:v] and MEMQ(op,'(Join PROGN))
+    or u is ['CATEGORY,a,:v] =&gt; &quot;append&quot;/[folks x for x in v]
+  u is ['SIGNATURE,:.] =&gt; nil
+  u is ['TYPE,:.] =&gt; nil
+  u is ['ATTRIBUTE,a] =&gt;
+    PAIRP a and constructor? opOf a =&gt; folks a
+    nil
+  u is ['IF,p,q,r] =&gt;
+    q1 := folks q
+    r1 := folks r
+    q1 or r1 =&gt; [['IF,p,q1,r1]]
+    nil
+  [u]
+
+descendantsOf(conform,domform) ==  --called by kcdPage
+  'category = GETDATABASE((conname := opOf conform),'CONSTRUCTORKIND) =&gt;
+    cats := catsOf(conform,domform)
+    [op,:argl] := conform
+    null argl or argl = (newArgl := rest (GETDATABASE(op,'CONSTRUCTORFORM)))
+        =&gt; cats
+    SUBLISLIS(argl, newArgl, cats)
+  'notAvailable
+
+childrenOf conform ==
+  [pair for pair in descendantsOf(conform,nil) |
+    childAssoc(conform,parentsOfForm first pair)]
+
+childAssoc(form,alist) ==
+  null (argl := CDR form) =&gt; ASSOC(form,alist)
+  u := assocCar(opOf form, alist) =&gt; childArgCheck(argl,rest CAR u) and u
+  nil
+
+assocCar(x, al) == or/[pair for pair in al | x = CAAR pair]
+
+childArgCheck(argl, nargl) ==
+  and/[fn for x in argl for y in nargl for i in 0..] where
+    fn ==
+      x = y or constructor? opOf y =&gt; true
+      isSharpVar y =&gt; i = POSN1(y, $FormalMapVariableList)
+      false
+
+--computeDescendantsOf cat ==
+--dynamically generates descendants
+--  hash := MAKE_-HASHTABLE 'UEQUAL
+--  for [child,:pred] in childrenOf cat repeat
+--    childForm := getConstructorForm child
+--    HPUT(hash,childForm,pred)
+--    for [form,:pred] in descendantsOf(childForm,nil) repeat
+--      newPred :=
+--        oldPred := HGET(hash,form) =&gt; quickOr(oldPred,pred)
+--        pred
+--      HPUT(hash,form,newPred)
+--  mySort [[key,:HGET(hash,key)] for key in HKEYS hash]
+
+ancestorsOf(conform,domform) ==  --called by kcaPage, originsInOrder,...
+  'category = GETDATABASE((conname := opOf conform),'CONSTRUCTORKIND) =&gt;
+       alist := GETDATABASE(conname,'ANCESTORS)
+       argl := IFCDR domform or IFCDR conform
+       [pair for [a,:b] in alist | pair] where pair ==
+         left :=  sublisFormal(argl,a)
+         right := sublisFormal(argl,b)
+         if domform then right := simpHasPred right
+         null right =&gt; false
+         [left,:right]
+  computeAncestorsOf(conform,domform)
+
+computeAncestorsOf(conform,domform) ==
+  $done: local := MAKE_-HASHTABLE 'UEQUAL
+  $if:   local := MAKE_-HASHTABLE 'ID
+  ancestorsRecur(conform,domform,true,true)
+  acc := nil
+  for op in listSort(function GLESSEQP,HKEYS $if) repeat
+    for pair in HGET($if,op) repeat acc := [pair,:acc]
+  NREVERSE acc
+
+ancestorsRecur(conform,domform,pred,firstTime?) == --called by ancestorsOf
+  op      := opOf conform
+  pred = HGET($done,conform) =&gt; nil   --skip if already processed
+  parents :=
+    firstTime? and ($insideCategoryIfTrue or $insideFunctorIfTrue) =&gt;
+      $lisplibParents
+    parentsOf op
+  originalConform :=
+    firstTime? and ($insideCategoryIfTrue or $insideFunctorIfTrue) =&gt; $form
+    getConstructorForm op
+  if conform ^= originalConform then
+    parents := SUBLISLIS(IFCDR conform,IFCDR originalConform,parents)
+  for [newform,:p] in parents repeat
+    if domform and rest domform then
+      newdomform := SUBLISLIS(rest domform,rest conform,newform)
+      p          := SUBLISLIS(rest domform,rest conform,p)
+    newPred := quickAnd(pred,p)
+    ancestorsAdd(simpHasPred newPred,newdomform or newform)
+    ancestorsRecur(newform,newdomform,newPred,false)
+  HPUT($done,conform,pred)                  --mark as already processed
+
+ancestorsAdd(pred,form) == --called by ancestorsRecur
+  null pred =&gt; nil
+  op := IFCAR form or form
+  alist := HGET($if,op)
+  existingNode := ASSOC(form,alist) =&gt;
+    RPLACD(existingNode,quickOr(CDR existingNode,pred))
+  HPUT($if,op,[[form,:pred],:alist])
+
+domainsOf(conform,domname,:options) ==
+  $hasArgList := IFCAR options
+  conname := opOf conform
+  u := [key for key in HKEYS _*HASCATEGORY_-HASH_*
+    | key is [anc,: =conname]]
+  --u is list of pairs (a . b) where b = conname
+  --we sort u then replace each b by the predicate for which this is true
+  s := listSort(function GLESSEQP,COPY u)
+  s := [[CAR pair,:GETDATABASE(pair,'HASCATEGORY)] for pair in s]
+  transKCatAlist(conform,domname,listSort(function GLESSEQP,s))
+
+catsOf(conform,domname,:options) ==
+  $hasArgList := IFCAR options
+  conname := opOf conform
+  alist := nil
+  for key in allConstructors() repeat
+    for item in GETDATABASE(key,'ANCESTORS) | conname = CAAR item repeat
+      [[op,:args],:pred] := item
+      newItem :=
+        args =&gt; [[args,:pred],:LASSOC(key,alist)]
+        pred
+      alist := insertShortAlist(key,newItem,alist)
+  transKCatAlist(conform,domname,listSort(function GLESSEQP,alist))
+
+transKCatAlist(conform,domname,s) == main where
+  main ==
+    domname =&gt; --accept only exact matches after substitution
+      domargs := rest domname
+      acc := nil
+      rest conform =&gt;
+        for pair in s repeat --pair has form [con,[conargs,:pred],...]]
+          leftForm := getConstructorForm CAR pair
+          for (ap := [args,:pred]) in CDR pair repeat
+            match? :=
+              domargs = args =&gt; true
+              HAS__SHARP__VAR args =&gt; domargs = sublisFormal(KDR domname,args)
+              nil
+            null match? =&gt; 'skip
+            npred := sublisFormal(KDR leftForm,pred)
+            acc := [[leftForm,:npred],:acc]
+        NREVERSE acc
+      --conform has no arguments so each pair has form [con,:pred]
+      for pair in s repeat
+        leftForm := getConstructorForm CAR pair or systemError nil
+        RPLACA(pair,leftForm)
+        RPLACD(pair,sublisFormal(KDR leftForm,CDR pair))
+      s
+    --no domname, so look for special argument combinations
+    acc := nil
+    KDR conform =&gt;
+      farglist := TAKE(#rest conform,$FormalMapVariableList)
+      for pair in s repeat --pair has form [con,[conargs,:pred],...]]
+        leftForm := getConstructorForm CAR pair
+        for (ap := [args,:pred]) in CDR pair repeat
+          hasArgsForm? := args ^= farglist
+          npred := sublisFormal(KDR leftForm,pred)
+          if hasArgsForm? then
+            subargs := sublisFormal(KDR leftForm,args)
+            hpred :=
+--            $hasArgsList =&gt; mkHasArgsPred subargs
+              ['hasArgs,:subargs]
+            npred := quickAnd(hpred,npred)
+          acc := [[leftForm,:npred],:acc]
+      NREVERSE acc
+    for pair in s repeat --pair has form [con,:pred]
+      leftForm := getConstructorForm CAR pair
+      RPLACA(pair,leftForm)
+      RPLACD(pair,sublisFormal(KDR leftForm,CDR pair))
+    s
+
+mkHasArgsPred subargs ==
+--$hasArgsList gives arguments of original constructor,e.g. LODO(A,M)
+--M is required to be Join(B,...); in looking for the domains of B
+--  we can find that if B has special value C, it can
+  systemError subargs
+
+sublisFormal(args,exp,:options) == main where
+  main ==  --use only on LIST structures; see also sublisFormalAlist
+    $formals: local := IFCAR options or $FormalMapVariableList
+    null args =&gt; exp
+    sublisFormal1(args,exp,#args - 1)
+  sublisFormal1(args,x,n) ==    --[sublisFormal1(args,y) for y in x]
+    x is [.,:.] =&gt;
+      acc := nil
+      y := x
+      while null atom y repeat
+        acc := [sublisFormal1(args,QCAR y,n),:acc]
+        y := QCDR y
+      r := NREVERSE acc
+      if y then
+        nd := LASTNODE r
+        RPLACD(nd,sublisFormal1(args,y,n))
+      r
+    IDENTP x =&gt;
+      j := or/[i for f in $formals for i in 0..n | EQ(f,x)] =&gt;
+          args.j
+      x
+    x
+
+--=======================================================================
+--            Build Table of Lower Case Constructor Names
+--=======================================================================
+
+buildDefaultPackageNamesHT() ==
+  $defaultPackageNamesHT := MAKE_-HASH_-TABLE()
+  for nam in allConstructors() | isDefaultPackageName nam repeat
+    HPUT($defaultPackageNamesHT,nam,true)
+  $defaultPackageNamesHT
+
+$defaultPackageNamesHT := buildDefaultPackageNamesHT()
+
+--=======================================================================
+--            Code for Private Libdbs
+--=======================================================================
+-- $createLocalLibDb := false
+
+extendLocalLibdb conlist ==   --  called by astran
+  not $createLocalLibDb =&gt; nil
+  null conlist =&gt; nil
+  buildLibdb conlist          --&gt; puts datafile into temp.text
+  $newConstructorList := UNION(conlist, $newConstructorList)
+  localLibdb := '&quot;libdb.text&quot;
+  not PROBE_-FILE '&quot;libdb.text&quot; =&gt;
+    RENAME_-FILE('&quot;temp.text&quot;,'&quot;libdb.text&quot;)
+  oldlines := purgeNewConstructorLines(dbReadLines localLibdb, conlist)
+  newlines := dbReadLines '&quot;temp.text&quot;
+  dbWriteLines(MSORT UNION(oldlines,newlines), '&quot;libdb.text&quot;)
+  deleteFile '&quot;temp.text&quot;
+
+purgeLocalLibdb() ==   --used for debugging purposes only
+  $newConstructorList := nil
+  obey '&quot;rm libdb.text&quot;
+
+
+$returnNowhereFromGoGet := false
+
+showSummary dom ==
+  showPredicates dom
+  showAttributes dom
+  showFrom dom
+  showImp dom
+
+--=======================================================================
+--          Show Where Functions in Domain are Implemented
+--=======================================================================
+showImp(dom,:options) ==
+  sayBrightly '&quot;-------------Operation summary-----------------&quot;
+  missingOnlyFlag := KAR options
+  domainForm := devaluate dom
+  [nam,:$domainArgs] := domainForm
+  $predicateList: local := GETDATABASE(nam,'PREDICATES)
+  predVector := dom.3
+  u := getDomainOpTable(dom,true)
+  --sort into 4 groups: domain exports, unexports, default exports, others
+  for (x := [.,.,:key]) in u repeat
+    key = domainForm =&gt; domexports := [x,:domexports]
+    FIXP key =&gt; unexports := [x,:unexports]
+    isDefaultPackageForm? key =&gt; defexports := [x,:defexports]
+    key = 'nowhere =&gt; nowheres := [x,:nowheres]
+    key = 'constant =&gt; constants := [x,:constants]
+    others := [x,:others]   --add chain domains go here
+  sayBrightly
+    nowheres =&gt; ['&quot;Functions exported but not implemented by&quot;,
+      :bright form2String domainForm,'&quot;:&quot;] 
+    [:bright form2String domainForm,'&quot;implements all exported operations&quot;]  
+  showDomainsOp1(nowheres,'nowhere)
+  missingOnlyFlag =&gt; 'done
+
+  --first display those exported by the domain, then add chain guys
+  u := [:domexports,:constants,:SORTBY('CDDR,others)]
+  while u repeat
+    [.,.,:key] := CAR u
+    sayBrightly
+      key = 'constant =&gt; 
+        [&quot;Constants implemented by&quot;,:bright form2String key,'&quot;:&quot;]
+      [&quot;Functions implemented by&quot;,:bright form2String key,'&quot;:&quot;]
+    u := showDomainsOp1(u,key)
+  u := SORTBY('CDDR,defexports)
+  while u repeat
+    [.,.,:key] := CAR u
+    defop := INTERN(SUBSTRING((s := PNAME CAR key),0,MAXINDEX s))
+    domainForm := [defop,:CDDR key]
+    sayBrightly [&quot;Default functions from&quot;,:bright form2String domainForm,'&quot;:&quot;]
+    u := showDomainsOp1(u,key)
+  u := SORTBY('CDDR,unexports)
+  while u repeat
+    [.,.,:key] := CAR u
+    sayBrightly [&quot;Not exported: &quot;]
+    u := showDomainsOp1(u,key)
+
+--=======================================================================
+--          Show Information Directly From Domains
+--=======================================================================
+showFrom(D,:option) ==
+  ops := KAR option
+  alist := nil
+  domainForm := devaluate D
+  [nam,:.] := domainForm
+  $predicateList: local := GETDATABASE(nam,'PREDICATES)
+  for (opSig := [op,sig]) in getDomainSigs1(D,ops) repeat
+    u := from?(D,op,sig)
+    x := ASSOC(u,alist) =&gt; RPLACD(x,[opSig,:rest x])
+    alist := [[u,opSig],:alist]
+  for [conform,:l] in alist repeat
+    sayBrightly concat('&quot;From &quot;,form2String conform,'&quot;:&quot;)
+    for [op,sig] in l repeat sayBrightly ['&quot;   &quot;,:formatOpSignature(op,sig)]
+ 
+--=======================================================================
+--               Functions implementing showFrom
+--=======================================================================
+getDomainOps D ==
+  domname := D.0
+  conname := CAR domname
+  $predicateList: local := GETDATABASE(conname,'PREDICATES)
+  REMDUP listSort(function GLESSEQP,ASSOCLEFT getDomainOpTable(D,nil))
+ 
+getDomainSigs(D,:option) ==
+  domname := D.0
+  conname := CAR domname
+  $predicateList: local := GETDATABASE(conname,'PREDICATES)
+  getDomainSigs1(D,first option)
+  
+getDomainSigs1(D,ops) == listSort(function GLESSEQP,u) where
+  u == [x for x in getDomainOpTable(D,nil) | null ops or MEMQ(CAR x,ops)]
+ 
+getDomainDocs(D,:option) ==
+  domname := D.0
+  conname := CAR domname
+  $predicateList: local := GETDATABASE(conname,'PREDICATES)
+  ops := KAR option
+  [[op,sig,:getInheritanceByDoc(D,op,sig)] for [op,sig] in getDomainSigs1(D,ops)]
+ 
+--=======================================================================
+--          Getting Inheritance Info from Documentation in Lisplib
+--=======================================================================
+from?(D,op,sig) == KAR KDR getInheritanceByDoc(D,op,sig)
+
+getExtensionsOfDomain domain ==
+  u := getDomainExtensionsOfDomain domain
+  cats := getCategoriesOfDomain domain
+  for x in u repeat
+    cats := UNION(cats,getCategoriesOfDomain EVAL x)
+  [:u,:cats]
+
+getDomainExtensionsOfDomain domain ==
+  acc := nil
+  d := domain
+  while (u := devaluateSlotDomain(5,d)) repeat
+    acc := [u,:acc]
+    d := EVAL u
+  acc
+
+devaluateSlotDomain(u,dollar) ==
+  u = '$ =&gt; devaluate dollar
+  FIXP u and VECP (y := dollar.u) =&gt; devaluate y
+  u is ['NRTEVAL,y] =&gt; MKQ eval y
+  u is ['QUOTE,y] =&gt; u
+  u is [op,:argl] =&gt; [op,:[devaluateSlotDomain(x,dollar) for x in argl]]
+  devaluate evalSlotDomain(u,dollar)
+ 
+getCategoriesOfDomain domain ==
+  predkeyVec := domain.4.0
+  catforms := CADR domain.4
+  [fn for i in 0..MAXINDEX predkeyVec | test] where 
+     test == predkeyVec.i and 
+       (x := catforms . i) isnt ['DomainSubstitutionMacro,:.]
+     fn ==
+       VECP x =&gt; devaluate x
+       devaluateSlotDomain(x,domain)
+
+getInheritanceByDoc(D,op,sig,:options) ==
+--gets inheritance and documentation information by looking in the LISPLIB 	
+--for each ancestor of the domain
+  catList := KAR options or getExtensionsOfDomain D
+  getDocDomainForOpSig(op,sig,devaluate D,D) or
+    or/[fn for x in catList] or '(NIL NIL)
+      where fn == getDocDomainForOpSig(op,sig,substDomainArgs(D,x),D)
+ 
+getDocDomainForOpSig(op,sig,dollar,D) ==
+  (u := LASSOC(op,GETDATABASE(CAR dollar,'DOCUMENTATION)))
+    and (doc := or/[[d,dollar] for [s,:d] in u | compareSig(sig,s,D,dollar)])
+ 
+--=======================================================================
+--               Functions implementing showImp
+--=======================================================================
+showDomainsOp1(u,key) ==
+  while u and CAR u is [op,sig,: =key] repeat
+    sayBrightly ['&quot;   &quot;,:formatOpSignature(op,sig)]
+    u := rest u
+  u
+
+getDomainRefName(dom,nam) ==
+  PAIRP nam =&gt; [getDomainRefName(dom,x) for x in nam]
+  not FIXP nam =&gt; nam
+  slot := dom.nam
+  VECP slot =&gt; slot.0
+  slot is ['SETELT,:.] =&gt; getDomainRefName(dom,getDomainSeteltForm slot)
+  slot
+
+getDomainSeteltForm ['SETELT,.,.,form] ==
+  form is ['evalSlotDomain,u,d] =&gt; devaluateSlotDomain(u,d)
+  VECP form =&gt; systemError()
+  form
+ 
+showPredicates dom ==
+  sayBrightly '&quot;--------------------Predicate summary-------------------&quot;
+  conname := CAR dom.0
+  predvector := dom.3
+  predicateList := GETDATABASE(conname,'PREDICATES)
+  for i in 1.. for p in predicateList repeat
+    prefix := 
+      testBitVector(predvector,i) =&gt; '&quot;true : &quot;
+      '&quot;false: &quot;
+    sayBrightly [prefix,:pred2English p]
+ 
+showAttributes dom ==
+  sayBrightly '&quot;--------------------Attribute summary-------------------&quot;
+  conname := CAR dom.0
+  abb := getConstructorAbbreviation conname
+  predvector := dom.3
+  for [a,:p] in dom.2 repeat
+    prefix :=
+      testBitVector(predvector,p) =&gt; '&quot;true : &quot;
+      '&quot;false: &quot;
+    sayBrightly concat(prefix,form2String a)
+
+showGoGet dom ==
+  numvec := CDDR dom.4
+  for i in 6..MAXINDEX dom | (slot := dom.i) is ['newGoGet,dol,index,:op] repeat
+    numOfArgs := numvec.index
+    whereNumber := numvec.(index := index + 1)
+    signumList := 
+      [formatLazyDomainForm(dom,numvec.(index + i)) for i in 0..numOfArgs]
+    index := index + numOfArgs + 1
+    namePart := 
+      concat(bright &quot;from&quot;,form2String formatLazyDomainForm(dom,whereNumber))
+    sayBrightly [i,'&quot;: &quot;,:formatOpSignature(op,signumList),:namePart]
+
+formatLazyDomain(dom,x) ==
+  VECP x =&gt; devaluate x
+  x is [dollar,slotNumber,:form] =&gt; formatLazyDomainForm(dom,form)
+  systemError nil
+ 
+formatLazyDomainForm(dom,x) ==
+  x = 0 =&gt; [&quot;$&quot;]
+  FIXP x =&gt; formatLazyDomain(dom,dom.x)
+  atom x =&gt; x
+  x is ['NRTEVAL,y] =&gt; (atom y =&gt; [y]; y)
+  [first x,:[formatLazyDomainForm(dom,y) for y in rest x]]
+ 
+
+--====================&gt; WAS b-op1.boot &lt;================================
+
+--=======================================================================
+--                   Operation Page Menu
+--=======================================================================
+--opAlist has form [[op,:alist],:.]  where each alist
+--        has form [sig,pred,origin,exposeFlag,comments]
+
+dbFromConstructor?(htPage) == htpProperty(htPage,'conform)
+
+dbPresentOps(htPage,which,:exclusions) ==
+  true =&gt; dbPresentOpsSaturn(htPage,which,exclusions)
+--Flags:
+--  fromConPage?:    came (originally) from a constructor page
+--  usage?:          display usage?
+--  star?:           display exposed/*=unexposed
+--  implementation?: display implementation?
+  htSay('&quot;{\em Views:}&quot;)
+  asharp? := htpProperty(htPage,'isAsharpConstructor)
+  fromConPage? := (conname := opOf htpProperty(htPage,'conform))
+  usage? := $UserLevel = 'development and fromConPage? and which = '&quot;operation&quot;
+    and not (GETDATABASE(conname,'CONSTRUCTORKIND) = 'category)
+      and not asharp?
+  star? := not fromConPage? or which = '&quot;package operation&quot;
+  implementation? := not asharp? and
+    $UserLevel = 'development and $conformsAreDomains 
+          --and not $includeUnexposed?
+  rightmost? := star? or (implementation? and not $includeUnexposed?)
+  tabs :=
+    which = '&quot;attribute&quot; =&gt; '(&quot;12&quot; &quot;12&quot; &quot;25&quot; &quot;40&quot; 13)
+    star? =&gt; '(&quot;12&quot; &quot;19&quot; &quot;31&quot; &quot;43&quot; 10)
+    implementation? =&gt; '(&quot;9&quot; &quot;16&quot; &quot;28&quot; &quot;44&quot; 9)
+    '(&quot;9&quot; &quot;16&quot; &quot;28&quot; &quot;41&quot; 12)
+  if INTEGERP first exclusions then exclusions := ['documentation]
+  htpSetProperty(htPage,'exclusion,first exclusions)
+  opAlist :=
+    which = '&quot;operation&quot; =&gt; htpProperty(htPage,'opAlist)
+    htpProperty(htPage,'attrAlist)
+  empty? := null opAlist
+  htTab
+   which = '&quot;attribute&quot; =&gt; tabs.1
+   tabs.0
+  if empty? or MEMBER('names,exclusions) or null KDR opAlist
+    then htSay '&quot;{\em names}&quot;
+    else htMakePage [['bcLispLinks,['&quot;names&quot;,'&quot;&quot;,'dbShowOps,which,'names]]]
+  if which ^= '&quot;attribute&quot; then
+    htTab tabs.1
+    if empty? or MEMBER('signatures,exclusions)
+      then htSay '&quot;{\em signatures}&quot;
+      else htMakePage _
+         [['bcLispLinks,['&quot;signatures&quot;,'&quot;&quot;,'dbShowOps,which,'signatures]]]
+  htTab tabs.2
+  if empty? or MEMBER('parameters,exclusions) --also test for some parameter
+      or not dbDoesOneOpHaveParameters? opAlist
+    then htSay '&quot;{\em parameters}&quot;
+    else htMakePage _
+       [['bcLispLinks,['&quot;parameters&quot;,'&quot;&quot;,'dbShowOps,which,'parameters]]]
+  htTab tabs.3
+  if not empty? and null IFCDR opAlist and not htpProperty(htPage,'noUsage)
+    then
+      if htpProperty(htPage,'conform)
+      then htMakePage
+             [['bcLinks,['&quot;generalise&quot;,'&quot;&quot;,'dbShowOps,which,'generalise]]]
+      else htMakePage
+             [['bcLinks,['&quot;all domains&quot;,'&quot;&quot;,'dbShowOps,which,'allDomains]]]
+    else
+      if empty? or MEMQ('usage,exclusions) or _
+             htpProperty(htPage,'noUsage) then htSay '&quot;{\em filter}&quot; else
+        htMakePage [['bcLinks,['&quot;filter&quot;,'&quot;&quot;,'dbShowOps,which,'filter]]]
+      htMakePage [['bcStrings, [tabs.4,'&quot;&quot;,'filter,'EM]]]
+  htSay('&quot;\newline &quot;)
+  if star?
+  then
+    if $exposedOnlyIfTrue
+    then htMakePage
+        [['bcLinks,['&quot;exposed&quot;,'&quot; {\em only}&quot;,'dbShowOps,which,'exposureOff]]]
+    else
+      htSay('&quot;*{\em =}&quot;)
+      htMakePage [['bcLinks,['&quot;unexposed&quot;,'&quot;&quot;,'dbShowOps,which,'exposureOn]]]
+--  else if (updown := dbCompositeWithMap htPage)
+--       then htMakePage [['bcLispLinks,[updown,'&quot;&quot;,'dbShowUpDown,updown]]]
+  htTab tabs.0
+  if usage? then
+      if empty? or MEMBER('usage,exclusions) _
+                or GETDATABASE(conname,'CONSTRUCTORKIND) = 'category _
+                or HGET($defaultPackageNamesHT,conname) _
+                or htpProperty(htPage,'noUsage)
+      then htSay '&quot;{\em usage}&quot;
+      else htMakePage _
+            [['bcLispLinks,['&quot;usage&quot;,'&quot;&quot;,'whoUsesOperation,which,nil]]]
+  htTab tabs.1
+  if empty? or MEMBER('origins,exclusions)
+    then htSay '&quot;{\em origins}&quot;
+    else htMakePage [['bcLispLinks,['&quot;origins&quot;,'&quot;&quot;,'dbShowOps,which,'origins]]]
+  htTab tabs.2
+  if implementation? then
+    if MEMBER('implementation,exclusions) or which = '&quot;attribute&quot; or
+      ((conname := opOf htpProperty(htPage,'conform)) _
+           and GETDATABASE(conname,'CONSTRUCTORKIND) = 'category)
+    then htSay '&quot;{\em implementation}&quot;
+    else htMakePage _
+     [['bcLispLinks,['&quot;implementation&quot;,'&quot;&quot;,'dbShowOps,which,'implementation]]]
+  else if empty? or MEMBER('conditions,exclusions) _
+                 or (htpProperty(htPage,'condition?) = 'no)
+      then htSay '&quot;{\em conditions}&quot;
+      else htMakePage _
+        [['bcLispLinks,['&quot;conditions&quot;,'&quot;&quot;,'dbShowOps,which,'conditions]]]
+  htTab tabs.3
+  if empty? or MEMBER('documentation,exclusions)
+    then htSay '&quot;{\em description}&quot;
+    else htMakePage _
+      [['bcLispLinks,['&quot;description&quot;,'&quot;&quot;,'dbShowOps,which,'documentation]]]
+  htShowPageNoScroll()
+
+htTab s == htSay('&quot;\tab{&quot;,s,'&quot;}&quot;)
+
+dbDoesOneOpHaveParameters? opAlist ==
+  or/[(or/[fn for x in items]) for [op,:items] in opAlist] where fn ==
+    STRINGP x =&gt; dbPart(x,2,1) ^= '&quot;0&quot;
+    KAR x
+--============================================================================
+--               Master Switch Functions for Operation Views
+--============================================================================
+
+dbShowOps(htPage,which,key,:options) ==
+  --NEXT LINE SHOULD BE REMOVED if we are sure that which is a string
+  which := STRINGIMAGE which
+  if MEMQ(key,'(extended basic all)) then
+    $groupChoice := key
+    key := htpProperty(htPage,'key) or 'names
+  opAlist  :=
+    which = '&quot;operation&quot; =&gt; htpProperty(htPage,'opAlist)
+--      al := reduceByGroup(htPage,htpProperty(htPage,'principalOpAlist))
+--      htpSetProperty(htPage,'opAlist,al)
+--      al
+    htpProperty(htPage,'attrAlist)
+  key = 'generalise =&gt;
+    arg  := STRINGIMAGE CAAR opAlist
+    which = '&quot;attribute&quot; =&gt; aPage arg
+    oPage arg
+  key = 'allDomains =&gt; dbShowOpAllDomains(htPage,opAlist,which)
+  key = 'filter =&gt;
+    --if $saturn, IFCAR options contains filter string
+    filter := IFCAR options or pmTransFilter(dbGetInputString htPage)
+    filter is ['error,:.] =&gt; bcErrorPage filter
+    opAlist:= _
+      [x for x in opAlist | superMatch?(filter,DOWNCASE STRINGIMAGE opOf x)]
+    null opAlist =&gt; emptySearchPage(which,filter)
+    htPage := htInitPageNoScroll(htCopyProplist htPage)
+    if which = '&quot;operation&quot;
+      then htpSetProperty(htPage,'opAlist,opAlist)
+      else htpSetProperty(htPage,'attrAlist,opAlist)
+    if not htpProperty(htPage,'condition?) = 'no then
+      dbResetOpAlistCondition(htPage,which,opAlist)
+    dbShowOps(htPage,which,htpProperty(htPage,'exclusion))
+  htpSetProperty(htPage,'key,key)
+  if MEMQ(key,'(exposureOn exposureOff)) then
+    $exposedOnlyIfTrue :=
+       key = 'exposureOn =&gt; 'T
+       nil
+    key := htpProperty(htPage,'exclusion)
+  dbShowOp1(htPage,opAlist,which,key)
+
+reduceByGroup(htPage,opAlist) ==
+  not dbFromConstructor?(htPage) or null $groupChoice =&gt; opAlist
+  dbExpandOpAlistIfNecessary(htPage,opAlist,'&quot;operation&quot;,true,false)
+  bitNumber := HGET($topicHash,$groupChoice)
+  res := [[op,:newItems] for [op,:items] in opAlist | newItems] where
+    newItems ==
+      null bitNumber =&gt; items
+      [x for x in items | FIXP (code := myLastAtom x) _
+                          and LOGBITP(bitNumber,code)]
+  res
+
+
+dbShowOp1(htPage,opAlist,which,key) ==
+  --set up for filtering below in dbGatherData
+  $which: local := which
+  if INTEGERP key then
+    opAlist := dbSelectData(htPage,opAlist,key)
+    ------&gt; Jump out for constructor names in file &lt;--------
+  INTEGERP key and opAlist is [[con,:.]] and htpProperty(htPage,'isFile)
+      and constructor? con =&gt; return conPageChoose con
+  if INTEGERP key then
+    htPage := htInitPageNoScroll(htCopyProplist htPage)
+    if which = '&quot;operation&quot;
+      then htpSetProperty(htPage,'opAlist,opAlist)
+      else htpSetProperty(htPage,'attrAlist,opAlist)
+    if not htpProperty(htPage,'condition?) = 'no then
+      dbResetOpAlistCondition(htPage,which,opAlist)
+  dbExpandOpAlistIfNecessary(htPage,opAlist,which,true,false)
+  if $exposedOnlyIfTrue and not dbFromConstructor?(htPage) then
+  --opAlist is expanded to form 
+  -- [[op,[sig,pred,origin,exposed,comments],...],...]
+    opAlist:=[item for [op,:items] in opAlist | item] where
+      item ==
+        acc := nil
+        for x in items | x.3 repeat acc:= [x,:acc]
+        null acc =&gt; nil
+        [op,:NREVERSE acc]
+  $conformsAreDomains : local := htpProperty(htPage,'domname)
+  opCount := opAlistCount(opAlist, which)
+  branch :=
+    INTEGERP key =&gt;
+      opCount &lt;= $opDescriptionThreshold =&gt; 'documentation
+      'names
+    key = 'names and null rest opAlist =&gt;      --means a single op
+      opCount &lt;= $opDescriptionThreshold =&gt; 'documentation
+      'names
+    key
+  [what,whats,fn] := LASSOC(branch,$OpViewTable)
+  data := dbGatherData(htPage,opAlist,which,branch)
+  dataCount := +/[1 for x in data | (what = '&quot;Name&quot; and _
+                                     $exposedOnlyIfTrue =&gt; atom x; true)]
+  namedPart :=
+    null rest opAlist =&gt;
+      ops := escapeSpecialChars STRINGIMAGE CAAR opAlist
+      ['&quot; {\em &quot;,ops,'&quot;}&quot;]
+    nil
+  if what = '&quot;Condition&quot; and null KAR KAR data then dataCount := dataCount - 1
+  exposurePart :=
+    $exposedOnlyIfTrue =&gt; '(&quot; Exposed &quot;)
+    nil
+  firstPart :=
+    opCount = 0 =&gt; ['&quot;No &quot;,:exposurePart, pluralize capitalize which]
+    dataCount = 1 or dataCount = opCount =&gt;
+      opCount = 1 =&gt; [:exposurePart, capitalize which,:namedPart]
+      [STRINGIMAGE opCount,'&quot; &quot;,:exposurePart,
+         pluralize capitalize which,:namedPart]
+    prefix := pluralSay(dataCount,what,whats)
+    [:prefix,'&quot; for &quot;,STRINGIMAGE opCount,'&quot; &quot;,_
+                                    pluralize capitalize which,:namedPart]
+  page := htInitPageNoScroll(htCopyProplist htPage)
+  ------------&gt;above line used to call htInitPageHoHeading&lt;----------
+  htAddHeading dbShowOpHeading([:firstPart,:fromHeading page], branch)
+  htpSetProperty(page,'data,data)
+  htpSetProperty(page,'branch,branch)
+  -- only place where specialMessage property is set seems to be commented. out
+  if u := htpProperty(page,'specialMessage) then APPLY(first u,rest u)
+  htSayStandard('&quot;\beginscroll &quot;)
+  FUNCALL(fn,page,opAlist,which,data) --apply branch function
+  dbOpsExposureMessage()
+  htSayStandard(&quot;\endscroll &quot;)
+  dbPresentOps(page,which,branch)
+  htShowPageNoScroll()
+
+opAlistCount(opAlist, which) == +/[foo for [op,:items] in opAlist] where foo ==
+  null $exposedOnlyIfTrue or which = '&quot;attribute&quot; =&gt; #items
+  --count if unexpanded---CDDR(w) = nil---or if w.3 = true
+  +/[1 for w in items | null (p := CDDR w) or p . 1]
+
+dbShowOpHeading(heading, branch) ==
+  suffix :=
+--  branch = 'signatures =&gt; '&quot; viewed as signatures&quot;
+    branch = 'parameters =&gt; '&quot; viewed with parameters&quot;
+    branch = 'origins    =&gt; '&quot; organized by origins&quot;
+    branch = 'conditions =&gt; '&quot; organized by conditions&quot;
+    '&quot;&quot;
+  [:heading, suffix]
+
+dbOpsExposureMessage() ==
+  $atLeastOneUnexposed =&gt; htSay '&quot;{\em *} = unexposed&quot;
+
+fromHeading htPage ==
+  null htPage =&gt; '&quot;&quot;
+  $pn := [htPage.0,'&quot;}{&quot;]
+  updomain := htpProperty(htPage,'updomain) =&gt;
+    dnForm  := dbExtractUnderlyingDomain updomain
+    dnString:= form2StringList dnForm
+    dnFence := form2Fence  dnForm
+--  upString:= form2StringList updomain
+    upFence := form2Fence  updomain
+    upOp    := PNAME opOf  updomain
+    ['&quot; {\em from} &quot;,:dbConformGen dnForm,'&quot; {\em under} _
+                                     \ops{&quot;,upOp,'&quot;}{&quot;,:$pn,:upFence,'&quot;}&quot;]
+  domname  := htpProperty(htPage,'domname)
+  numberOfUnderlyingDomains := #[x for x in rest _
+                                     GETDATABASE(opOf domname,'COSIG) | x]
+--  numberOfUnderlyingDomains = 1 and
+--    KDR domname and (dn := dbExtractUnderlyingDomain domname) =&gt;
+--      ['&quot; {\em from} &quot;,:pickitForm(domname,dn)]
+  KDR domname =&gt; ['&quot; {\em from} &quot;,:dbConformGen domname]
+  htpProperty(htPage,'fromHeading)
+
+pickitForm(form,uarg) ==
+  conform2StringList(form,FUNCTION dbConform,FUNCTION conformString,uarg)
+
+conformString(form) ==
+  KDR form =&gt;
+    conform2StringList(form,FUNCTION conname2StringList,_
+                                                 FUNCTION conformString,nil)
+  form2StringList form
+
+conform2StringList(form,opFn,argFn,exception) ==
+  exception := exception or '&quot;%%%nothing%%%&quot;
+  [op1,:args] := form
+  op := IFCAR HGET($lowerCaseConTb,op1) or op1
+  null args =&gt; APPLY(opFn,[op])
+  special := MEMQ(op,'(Union Record Mapping))
+  cosig :=
+    special =&gt; ['T for x in args]
+    rest GETDATABASE(op,'COSIG)
+  atypes :=
+    special =&gt; cosig
+    rest CDAR GETDATABASE(op,'CONSTRUCTORMODEMAP)
+  sargl := [fn for x in args for atype in atypes for pred in cosig] where fn ==
+    keyword :=
+      x is [&quot;:&quot;,y,t] =&gt;
+        x := t
+        y
+      nil
+    res :=
+      x = exception =&gt; dbOpsForm exception
+      pred =&gt;
+        STRINGP x =&gt; [x]
+        u := APPLY(argFn,[x])
+        atom u and [u] or u
+      typ := sublisFormal(args,atype)
+      if x is ['QUOTE,a] then x := a
+      u := mathform2HtString algCoerceInteractive(x,typ,'(OutputForm)) =&gt; [u]
+      NUMBERP x or STRINGP x =&gt; [x]
+      systemError()
+    keyword =&gt; [keyword,'&quot;: &quot;,:res]
+    res
+  op = 'Mapping =&gt; dbMapping2StringList sargl
+  head :=
+    special =&gt; [op]
+    APPLY(opFn,[form])
+  [:head,'&quot;(&quot;,:first sargl,:&quot;append&quot;/[[&quot;,&quot;,:y] for y in rest sargl],'&quot;)&quot;]
+
+
+dbMapping2StringList [target,:sl] ==
+  null sl =&gt; target
+  restPart :=
+    null rest sl =&gt; nil
+    &quot;append&quot;/[[&quot;,&quot;,:y] for y in rest sl]
+  sourcePart :=
+    restPart =&gt; ['&quot;(&quot;,:first sl,:restPart,'&quot;)&quot;]
+    first sl
+  [:sourcePart,'&quot; -&gt; &quot;,:target]
+
+dbOuttran form ==
+  if LISTP form then
+    [op,:args] := form
+  else
+    op := form
+    args := nil
+  cosig := rest GETDATABASE(op,'COSIG)
+  atypes := rest CDAR GETDATABASE(op,'CONSTRUCTORMODEMAP)
+  argl := [fn for x in args for atype in atypes for pred in cosig] where fn ==
+    pred =&gt; x
+    typ := sublisFormal(args,atype)
+    arg :=
+      x is ['QUOTE,a] =&gt; a
+      x
+    res := mathform2HtString algCoerceInteractive(arg,typ,'(OutputForm))
+    NUMBERP res or STRINGP res =&gt; res
+    ['QUOTE,res]
+  [op,:argl]
+
+dbOpsForm form ==
+--one button for the operations of a type
+--1st arg: like &quot;Matrix(Integer)&quot; or &quot;UP('x,Integer)&quot; &lt;---all highlighted
+--2nd arg: like (|Matrix| (|Integer|)) and (|U..P..| (QUOTE |x|) (|Integer|))
+  [&quot;\ops{&quot;,:conform2StringList(form,FUNCTION conname2StringList,_
+                FUNCTION conformString,nil),'&quot;}{&quot;,:$pn,:form2Fence form,'&quot;}&quot;]
+
+dbConform form ==
+--------------------&gt; OBSELETE &lt;--------------------------
+--one button for the main constructor page of a type
+--NOTE: Next line should be as follows---but form2Fence form will
+--      put, e.g. '((2 1 . 0) (0 1 . 0)) instead of x**2 + 1
+  $saturn =&gt; [&quot;\conf{&quot;,:form2StringList opOf form,
+     '&quot;}{\lispLink{\verb!{(|conForm| '&quot;,:form2Fence dbOuttran form,'&quot;)!}}}&quot;]
+  [&quot;\conf{&quot;,:form2StringList opOf form,'&quot;}{&quot;,:form2Fence dbOuttran form,'&quot;}&quot;]
+--[&quot;\conf{&quot;,:form2StringList opOf form,'&quot;}{&quot;,:form2Fence opOf form,'&quot;}&quot;]
+
+
+dbConformGen form == dbConformGen1(form,true)
+--many buttons: one for the type and one for each inner type
+--NOTE: must only be called on types KNOWN to be correct
+
+dbConformGenUnder form == dbConformGen1(form,false)
+--same as above, except buttons only for the inner types
+
+dbConformGen1(form,opButton?) ==
+  opFunction :=
+    opButton? =&gt; FUNCTION dbConform
+    FUNCTION conname2StringList
+  originalOp := opOf form
+  op := unAbbreviateIfNecessary opOf form
+  args := IFCDR form
+  form :=
+    originalOp=op =&gt; form
+    [op, :args]
+  args =&gt; conform2StringList(form, opFunction,FUNCTION dbConformGen,nil)
+  APPLY(opFunction,[form])
+
+unAbbreviateIfNecessary op == IFCAR HGET($lowerCaseConTb, op) or op
+
+conname2StringList form == [PNAME unAbbreviateIfNecessary opOf form]
+
+--===========================================================================
+--               Data Gathering Code
+--============================================================================
+dbGatherData(htPage,opAlist,which,key) ==
+  key = 'implementation =&gt; dbGatherDataImplementation(htPage,opAlist)
+  dataFunction := LASSOC(key,table) where
+    table ==
+      $dbDataFunctionAlist or
+        ($dbDataFunctionAlist := [
+          ['signatures,:function dbMakeSignature],
+            ['parameters,:function dbContrivedForm],
+              ['origins,:function dbGetOrigin],
+                ['domains,:function dbGetOrigin],
+                  ['conditions,:function dbGetCondition]])
+  null dataFunction =&gt;
+    --key= names or filter or documentation; do not expand
+    if $exposedOnlyIfTrue and not dbFromConstructor?(htPage) then
+      opAlist := --to get indexing correct
+         which = '&quot;operation&quot; =&gt; htpProperty(htPage,'opAlist)
+         htpProperty(htPage,'attrAlist)
+    acc := nil
+    initialExposure :=
+      htPage and htpProperty(htPage,'conform) and which ^= '&quot;package operation&quot;
+        =&gt; true
+      --never star ops from a constructor
+      nil
+    for [op,:alist] in opAlist repeat
+      exposureFlag := initialExposure
+      while alist repeat
+        item := first alist
+        isExposed? :=
+          STRINGP item =&gt; dbExposed?(item,char 'o)   --unexpanded case
+          null (r := rest rest item) =&gt; true      --assume true if unexpanded
+          r . 1                                   --expanded case
+        if isExposed? then return (exposureFlag := true)
+        alist := rest alist
+      node :=
+        exposureFlag =&gt; op
+        [op,nil]
+      acc := [node,:acc]
+    NREVERSE acc
+  data := nil
+  dbExpandOpAlistIfNecessary(htPage,opAlist,which,key in _
+                                              '(origins documentation),false)
+  --create data, a list of the form ((entry,exposeFlag,:entries)...)
+  for [op,:alist] in opAlist repeat
+    for item in alist repeat
+      entry := FUNCALL(dataFunction,op,item)--get key item
+      exposeFlag :=                         --is the current op-sig exposed?
+        null (r := rest rest item) =&gt; true  --not given, assume yes
+        r . 1                               --is  given, use value
+      tail :=
+        item is [.,'ASCONST,:.] =&gt; 'ASCONST
+        nil
+      newEntry :=
+        u := ASSOC(entry,data) =&gt;           --key seen before? look on DATA
+          RPLACA(CDR u,CADR u or exposeFlag)--yes, expose if any 1 is exposed
+          u
+        data := [y := [entry,exposeFlag,:tail],:data]
+        y                                   --no, create new entry in DATA
+      if MEMBER(key,'(origins conditions)) then
+        r := CDDR newEntry
+        if atom r then r := nil             --clear out possible 'ASCONST
+        RPLACD(CDR newEntry,                --store op/sigs under key if needed
+          insert([dbMakeSignature(op,item),exposeFlag,:tail],r))
+  if MEMBER(key,'(origins conditions)) then
+    for entry in data repeat   --sort list of entries (after the 2nd)
+      tail := CDDR entry
+      tail :=
+        atom tail =&gt; tail
+        listSort(function LEXLESSEQP,tail)
+      RPLACD(CDR entry,tail)
+  data := listSort(function LEXLESSEQP,data)
+  data
+
+dbGatherDataImplementation(htPage,opAlist) ==
+--returns data, of form ((implementor exposed? entry entry...)...
+--  where entry has form ((op sig . implementor) . stuff)
+  conform := htpProperty(htPage,'conform)
+  domainForm  := htpProperty(htPage,'domname)
+  dom     := EVAL domainForm
+  which   := '&quot;operation&quot;
+  [nam,:$domainArgs] := domainForm
+  $predicateList: local := GETDATABASE(nam,'PREDICATES)
+  predVector := dom.3
+  u := getDomainOpTable(dom,true,ASSOCLEFT opAlist)
+  --u has form ((op,sig,:implementor)...)
+  --sort into 4 groups: domain exports, unexports, default exports, others
+
+  for (x := [.,.,:key]) in u for i in 0.. repeat
+    key = domainForm =&gt; domexports := [x,:domexports]
+    INTEGERP key =&gt; unexports := [x,:unexports]
+    isDefaultPackageForm? key =&gt; defexports := [x,:defexports]
+    key = 'nowhere =&gt; nowheres := [x,:nowheres]
+    key = 'constant =&gt;constants := [x,:constants]
+    others := [x,:others]   --add chain domains go here
+  fn [nowheres,constants,domexports,SORTBY('CDDR,NREVERSE others),SORTBY('CDDR,
+               NREVERSE defexports),SORTBY('CDDR,NREVERSE unexports)] where
+    fn l ==
+      alist := nil
+      for u in l repeat
+        while u repeat
+          key := CDDAR u  --implementor
+          entries :=
+           [[CAR u,true],:[u and [CAR u,true] while key = CDDAR (u := rest u)]]
+          alist := [[key,gn key,:entries],:alist]
+      NREVERSE alist
+    gn key ==
+      atom key =&gt; true
+      isExposedConstructor CAR key
+
+dbSelectData(htPage,opAlist,key) ==
+  branch := htpProperty(htPage,'branch)
+  data   := htpProperty(htPage,'data)
+  MEMQ(branch,'(signatures parameters)) =&gt;
+    dbReduceOpAlist(opAlist,data.key,branch)
+  MEMQ(branch,'(origins conditions implementation)) =&gt;
+    key &lt; 8192 =&gt; dbReduceOpAlist(opAlist,data.key,branch)
+    [newkey,binkey] := DIVIDE(key,8192)  --newkey is 1 too large
+    innerData := CDDR data.(newkey - 1)
+    dbReduceOpAlist(opAlist,innerData.binkey,'signatures)
+  [opAlist . key]
+
+dbReduceOpAlist(opAlist,data,branch) ==
+  branch = 'signatures =&gt; dbReduceBySignature(opAlist,CAAR data,CADAR data)
+  branch = 'origins =&gt; dbReduceBySelection(opAlist,CAR data,function CADDR)
+  branch = 'conditions =&gt; dbReduceBySelection(opAlist,CAR data,function CADR)
+  branch = 'implementation =&gt; dbReduceByOpSignature(opAlist,CDDR data)
+  branch = 'parameters =&gt; dbReduceByForm(opAlist,CAR data)
+  systemError ['&quot;Unexpected branch: &quot;,branch]
+
+dbReduceByOpSignature(opAlist,datalist) ==
+--reduces opAlist by implementation datalist, one of the form
+--    (((op,sig,:implementor),:stuff),...)
+  ops := [CAAR x for x in datalist] --x is [[op,sig,:implementor],:.]
+  acc := nil
+  for [op,:alist] in opAlist | MEMQ(op,ops) repeat
+    entryList := [entry for (entry := [sig,:.]) in alist | test] where test ==
+      or/[x for x in datalist | x is [[=op,=sig,:.],:.]]
+    entryList =&gt; acc := [[op,:NREVERSE entryList],:acc]
+  NREVERSE acc
+
+dbReduceBySignature(opAlist,op,sig) ==
+--reduces opAlist to one with a fixed op and sig
+  [[op,:[x for x in LASSOC(op,opAlist) | x is [=sig,:.]]]]
+
+dbReduceByForm(opAlist,form) ==
+  acc := nil
+  for [op,:alist] in opAlist repeat
+    items := [x for x in alist | dbContrivedForm(op,x) = form] =&gt;
+      acc := [[op,:items],:acc]
+  NREVERSE acc
+
+dbReduceBySelection(opAlist,key,fn) ==
+  acc := nil
+  for [op,:alist] in opAlist repeat
+    items := [x for x in alist | FUNCALL(fn,x) = key] =&gt;
+      acc := [[op,:items],:acc]
+  NREVERSE acc
+
+dbContrivedForm(op,[sig,:.]) ==
+  $which = '&quot;attribute&quot; =&gt; [op,sig]
+  dbMakeContrivedForm(op,sig)
+
+dbMakeSignature(op,[sig,:.]) == [op,sig]  --getDomainOpTable format
+
+dbGetOrigin(op,[.,.,origin,:.]) == origin
+
+dbGetCondition(op,[.,pred,:.]) == pred
+
+--dbInsertOpAlist(op,item,opAlist) ==
+--  insertAlist(op,[item,:LASSOC(op,opAlist)],opAlist)
+
+--dbSortOpAlist opAlist ==
+--  [[op,:listSort(function LEXLESSEQP,alist)]
+--    for [op,:alist] in listSort(function LEXLESSEQP,opAlist)]
+
+--============================================================================
+--               Branches of Views
+--============================================================================
+dbShowOpNames(htPage,opAlist,which,data) ==
+  single? := opAlist and null rest data
+  single? =&gt;
+    ops := escapeSpecialChars STRINGIMAGE CAAR opAlist
+    htSayStandard('&quot;Select a view below&quot;)
+    htSaySaturn '&quot;Select a view with the right mouse button&quot;
+  exposedOnly? := $exposedOnlyIfTrue and not dbFromConstructor?(htPage)
+  dbShowOpItems(which,data,exposedOnly?)
+
+dbShowOpItems(which,data,exposedOnly?) ==
+  htBeginTable()
+  firstTime := true
+  for i in 0.. for item in data repeat
+    if firstTime then firstTime := false
+    else htSaySaturn '&quot;&amp;&quot;
+    if atom item then
+      op := item
+      exposeFlag := true
+    else
+      [op,exposeFlag] := item
+    ops := escapeSpecialChars STRINGIMAGE op
+    exposeFlag or not exposedOnly? =&gt;
+      htSay('&quot;{&quot;)
+      bcStarSpaceOp(ops,exposeFlag)
+      htMakePage [['bcLinks,[ops,'&quot;&quot;,'dbShowOps,which,i]]]
+      htSay('&quot;}&quot;)
+  htEndTable()
+
+dbShowOpAllDomains(htPage,opAlist,which) ==
+  dbExpandOpAlistIfNecessary(htPage,opAlist,which,true,false)
+  catOriginAlist := nil --list of category origins
+  domOriginAlist := nil --list of domain origins
+  for [op,:items] in opAlist repeat
+    for [.,predicate,origin,:.] in items repeat
+      conname := CAR origin
+      GETDATABASE(conname,'CONSTRUCTORKIND) = 'category =&gt;
+        pred := simpOrDumb(predicate,LASSQ(conname,catOriginAlist) or true)
+        catOriginAlist := insertAlist(conname,pred,catOriginAlist)
+      pred := simpOrDumb(predicate,LASSQ(conname,domOriginAlist) or true)
+      domOriginAlist := insertAlist(conname,pred,domOriginAlist)
+  --the following is similar to &quot;domainsOf&quot; but do not sort immediately
+  u := [COPY key for key in HKEYS _*HASCATEGORY_-HASH_*
+          | LASSQ(CDR key,catOriginAlist)]
+  for pair in u repeat
+    [dom,:cat] := pair
+    LASSQ(cat,catOriginAlist) = 'etc =&gt; RPLACD(pair,'etc)
+    RPLACD(pair,simpOrDumb(GETDATABASE(pair,'HASCATEGORY),true))
+  --now add all of the domains
+  for [dom,:pred] in domOriginAlist repeat
+    u := insertAlist(dom,simpOrDumb(pred,LASSQ(dom,u) or true),u)
+  cAlist := listSort(function GLESSEQP,u)
+  for pair in cAlist repeat RPLACA(pair,getConstructorForm first pair)
+  htpSetProperty(htPage,'cAlist,cAlist)
+  htpSetProperty(htPage,'thing,'&quot;constructor&quot;)
+  htpSetProperty(htPage,'specialHeading,'&quot;hoho&quot;)
+  dbShowCons(htPage,'names)
+
+simpOrDumb(new,old) ==
+  new = 'etc =&gt; 'etc
+  atom new =&gt; old
+  'etc
+
+dbShowOpOrigins(htPage,opAlist,which,data) ==
+  dbGatherThenShow(htPage,opAlist,which,data,true,_
+                   '&quot;from&quot;,function bcStarConform)
+
+dbShowOpImplementations(htPage,opAlist,which,data) ==
+  dbGatherThenShow(htPage,opAlist,which,data,true,'&quot;by&quot;,function bcStarConform)
+
+dbShowOpConditions(htPage,opAlist,which,data) ==
+  dbGatherThenShow(htPage,opAlist,which,data,nil,nil,function bcPred)
+
+dbGatherThenShow(htPage,opAlist,which,data,constructorIfTrue,word,fn) ==
+-----------------&gt; OBSELETE
+  single? := null rest data
+  htSay('&quot;\beginmenu &quot;)
+  bincount := 0
+  for [thing,exposeFlag,:items] in data repeat
+    htSay('&quot;\item &quot;)
+    if single? then htSay(menuButton())
+    else htMakePage [['bcLinks,[menuButton(),'&quot;&quot;,'dbShowOps,which,bincount]]]
+    htSay '&quot;{\em &quot;
+    htSay
+      thing = 'nowhere =&gt; '&quot;implemented nowhere&quot;
+      thing = 'constant =&gt; '&quot;constant&quot;
+      thing = '_$ =&gt; '&quot;by the domain&quot;
+      INTEGERP thing =&gt; '&quot;unexported&quot;
+      constructorIfTrue =&gt;
+        htSay word
+        atom thing =&gt; '&quot; an unknown constructor&quot;
+        '&quot;&quot;
+      atom thing =&gt; '&quot;unconditional&quot;
+      '&quot;&quot;
+    htSay '&quot;}&quot;
+    if null atom thing then
+      if constructorIfTrue then htSay('&quot; {\em &quot;,dbShowKind thing,'&quot;}&quot;)
+      htSay '&quot; &quot;
+      FUNCALL(fn,thing)
+    htSay('&quot;:\newline &quot;)
+    dbShowOpSigList(which,items,(1 + bincount) * 8192)
+    bincount := bincount + 1
+  htSay '&quot;\endmenu &quot;
+
+dbShowKind conform ==
+  conname := CAR conform
+  kind := GETDATABASE(conname,'CONSTRUCTORKIND)
+  kind = 'domain =&gt;
+    (s := PNAME conname).(MAXINDEX s) = '_&amp; =&gt; '&quot;default package&quot;
+    '&quot;domain&quot;
+  PNAME kind
+
+dbShowOpSignatures(htPage,opAlist,which,data) == dbShowOpSigList(which,data,0)
+
+dbShowOpSigList(which,dataItems,count) ==
+--dataItems is (((op,sig,:.),exposureFlag,...)
+  single? := null rest dataItems
+  htBeginTable()
+  firstTime := true
+  for [[op,sig,:.],exposureFlag,:tail] in dataItems repeat
+    if firstTime then firstTime := false
+    else htSaySaturn '&quot;&amp;&quot;;
+    ops := escapeSpecialChars STRINGIMAGE op
+    htSay '&quot;{&quot;
+--  if single? then htSay('&quot;{\em &quot;,ops,'&quot;}&quot;) else.....
+    htSayExpose(ops,exposureFlag)
+    htMakePage [['bcLinks,[ops,'&quot;&quot;,'dbShowOps,which,count]]]
+    if which = '&quot;attribute&quot; then htSay args2HtString (sig and [sig]) else
+      htSay '&quot;: &quot;
+      tail = 'ASCONST =&gt; bcConform first sig
+      bcConform ['Mapping,:sig]
+    htSay '&quot;}&quot;
+    count := count + 1
+  htEndTable()
+  count
+
+dbShowOpParameters(htPage,opAlist,which,data) ==
+  single? := null rest data
+  count := 0
+  htBeginTable()
+  firstTime := true
+  for item in data repeat
+    if firstTime then firstTime := false
+    else htSaySaturn '&quot;&amp;&quot;
+    [opform,exposeFlag,:tail] := item
+    op := intern IFCAR opform
+    args := IFCDR opform
+    ops := escapeSpecialChars STRINGIMAGE op
+    htSay '&quot;{&quot;
+    htSayExpose(ops,exposeFlag)
+    n := #opform
+    do
+      n = 2 and LASSOC('Nud,PROPLIST op) =&gt;
+        dbShowOpParameterJump(ops,which,count,single?)
+        htSay('&quot; {\em &quot;,KAR args,'&quot;}&quot;)
+      n = 3 and LASSOC('Led,PROPLIST op) =&gt;
+        htSay('&quot;{\em &quot;,KAR args,'&quot;} &quot;)
+        dbShowOpParameterJump(ops,which,count,single?)
+        htSay('&quot; {\em &quot;,KAR KDR args,'&quot;}&quot;)
+      dbShowOpParameterJump(ops,which,count,single?)
+      tail = 'ASCONST or MEMBER(op,'(0 1)) or _
+                            which = '&quot;attribute&quot; and null IFCAR args =&gt; 'skip
+      htSay('&quot;(&quot;)
+      if IFCAR args then htSay('&quot;{\em &quot;,IFCAR args,'&quot;}&quot;)
+      for x in IFCDR args repeat
+        htSay('&quot;,{\em &quot;,x,'&quot;}&quot;)
+      htSay('&quot;)&quot;)
+    htSay '&quot;}&quot;
+    count := count + 1
+  htEndTable()
+
+dbShowOpParameterJump(ops,which,count,single?) ==
+  single? =&gt; htSay('&quot;{\em &quot;,ops,'&quot;}&quot;)
+  htMakePage [['bcLinks,[ops,'&quot;&quot;,'dbShowOps,which,count]]]
+
+dbShowOpDocumentation(htPage,opAlist,which,data) ==
+  if $exposedOnlyIfTrue and not dbFromConstructor?(htPage) then
+    opAlist :=
+      which = '&quot;operation&quot; =&gt; htpProperty(htPage,'opAlist)
+      htpProperty(htPage,'attrAlist)
+    --NOTE: this line is necessary to get indexing right.
+    --The test below for $exposedOnlyIfTrue causes unexposed items
+    --to be skipped.
+  newWhich :=
+    conform := htpProperty(htPage,'domname) or htpProperty(htPage,'conform)
+    which = '&quot;package operation&quot; =&gt; '&quot;operation&quot;
+    which
+  expand := dbExpandOpAlistIfNecessary(htPage,opAlist,which,true,false)
+  if expand then
+    condata := dbGatherData(htPage,opAlist,which,'conditions)
+    htpSetProperty(htPage,'conditionData,condata)
+  base := -8192
+  exactlyOneOpSig := opAlist is [[.,.]] --checked by displayDomainOp
+  htSaySaturn '&quot;\begin{description}&quot;
+  for [op,:alist] in opAlist repeat
+    base := 8192 + base
+    for item in alist for j in 0.. repeat
+      [sig,predicate,origin,exposeFlag,comments] := item
+      exposeFlag or not $exposedOnlyIfTrue =&gt;
+        if comments ^= '&quot;&quot; and STRINGP comments _
+                           and (k := string2Integer comments) then
+          comments :=
+            MEMQ(k,'(0 1)) =&gt; '&quot;&quot;
+            dbReadComments k
+          tail := CDDDDR item
+          RPLACA(tail,comments)
+        doc := (STRINGP comments and comments ^= '&quot;&quot; =&gt; comments; nil)
+        pred := predicate or true
+        index := (exactlyOneOpSig =&gt; nil; base + j)
+        if which = '&quot;package operation&quot; then
+          sig    := SUBST(conform,'_$,sig)
+          origin := SUBST(conform,'_$,origin)
+        displayDomainOp(htPage,newWhich,origin,op,sig,pred,doc,_
+                        index,'dbChooseDomainOp,null exposeFlag,true)
+  htSaySaturn '&quot;\end{description}&quot;
+
+dbChooseDomainOp(htPage,which,index) ==
+  [opKey,entryKey] := DIVIDE(index,8192)
+  opAlist :=
+    which = '&quot;operation&quot; =&gt; htpProperty(htPage,'opAlist)
+    htpProperty(htPage,'attrAlist)
+  [op,:entries] := opAlist . opKey
+  entry := entries . entryKey
+  htPage := htInitPageNoScroll(htCopyProplist htPage)
+  if which = '&quot;operation&quot;
+    then htpSetProperty(htPage,'opAlist,[[op,entry]])
+    else htpSetProperty(htPage,'attrAlist,[[op,entry]])
+  if not htpProperty(htPage,'condition?) = 'no then
+    dbResetOpAlistCondition(htPage,which,opAlist)
+  dbShowOps(htPage,which,'documentation)
+
+htSayExpose(op,flag) ==
+  $includeUnexposed? =&gt;
+    flag =&gt; htBlank()
+    op.0 = char '_* =&gt; htSay '&quot;{\em *} &quot;
+    htSayUnexposed()
+  htSay '&quot;&quot;
+--============================================================================
+--               Branch-in From Other Places
+--============================================================================
+dbShowOperationsFromConform(htPage,which,opAlist) ==  --branch in with lists
+  $groupChoice := nil
+  conform := htpProperty(htPage,'conform)
+  --prepare opAlist for possible filtering of groups
+  if null BOUNDP '$topicHash then
+    $topicHash := MAKE_-HASHTABLE 'ID
+    for [x,:c] in '((extended . 0) (basic . 1) (hidden . 2)) repeat
+      HPUT($topicHash,x,c)
+  if domform := htpProperty(htPage,'domname) then
+    $conformsAreDomains : local := true
+    reduceOpAlistForDomain(opAlist,domform,conform)
+  conform := domform or conform
+  kind := capitalize htpProperty(htPage,'kind)
+  exposePart :=
+    isExposedConstructor opOf conform =&gt; '&quot;&quot;
+    '&quot; Unexposed &quot;
+  fromPart :=
+    domform =&gt; evalableConstructor2HtString domform
+    form2HtString conform
+  heading :=
+    ['&quot; from &quot;,exposePart,kind,'&quot; {\em &quot;,fromPart,'&quot;}&quot;]
+  expandProperty :=
+    which = '&quot;operation&quot; =&gt; 'expandOperations
+    'expandAttributes
+  htpSetProperty(htPage,expandProperty,'lists)
+  htpSetProperty(htPage,'fromHeading,heading)
+  reducedOpAlist :=
+    which = '&quot;operation&quot; =&gt;  reduceByGroup(htPage,opAlist)
+    opAlist
+  if which = '&quot;operation&quot;
+    then
+      htpSetProperty(htPage,'principalOpAlist,opAlist)
+      htpSetProperty(htPage,'opAlist,reducedOpAlist)
+    else htpSetProperty(htPage,'attrAlist,opAlist)
+  if domform
+   then htpSetProperty(htPage,'condition?,'no)
+   else dbResetOpAlistCondition(htPage,which,opAlist)
+  dbShowOp1(htPage,reducedOpAlist,which,'names)
+
+reduceOpAlistForDomain(opAlist,domform,conform) ==
+--destructively simplify all predicates; filter out any that fail
+  form1 := [domform,:rest domform]
+  form2 := ['$,:rest conform]
+  for pair in opAlist repeat
+    RPLACD(pair,[test for item in rest pair | test]) where test ==
+      [head,:tail] := item
+      CAR tail = true =&gt; item
+      pred := simpHasPred SUBLISLIS(form1,form2,QCAR tail)
+      null pred =&gt; false
+      RPLACD(item,[pred])
+      item
+  opAlist
+
+dbShowOperationLines(which,linelist) ==  --branch in with lines
+  htPage := htInitPage(nil,nil)  --create empty page
+  opAlist := nil
+  lines := linelist
+  while lines repeat
+    name := dbName (x := first lines)
+    pile := [x]
+    while (lines := rest lines) and name = dbName (x := first lines) repeat
+      pile := [x,:pile]
+    opAlist := [[name,:NREVERSE pile],:opAlist]
+  opAlist := listSort(function LEXLESSEQP,NREVERSE opAlist)
+  if which = '&quot;operation&quot;
+    then htpSetProperty(htPage,'opAlist,opAlist)
+    else htpSetProperty(htPage,'attrAlist,opAlist)
+  expandProperty :=
+    which = '&quot;operation&quot; =&gt; 'expandOperations
+    'expandAttributes
+  htpSetProperty(htPage,expandProperty,'strings)
+  dbResetOpAlistCondition(htPage,which,opAlist)
+  if which = '&quot;attribute&quot; and BOUNDP '$attributeArgs and $attributeArgs then
+    --code needed to handle commutative(&quot;*&quot;); called from aPage
+    --must completely expand the opAlist then check for those with
+    --arguments equal to $attributeArgs
+    --here: opAlist is [[op,:itemlist]]
+    dbExpandOpAlistIfNecessary(htPage,opAlist,which,false,false)
+    opAlist := [[CAAR opAlist,:[item for item in CDAR opAlist | _
+                                              first item = $attributeArgs]]]
+  dbShowOp1(htPage,opAlist,which,'names)
+
+--============================================================================
+--                Code to Expand opAlist
+--============================================================================
+dbResetOpAlistCondition(htPage,which,opAlist) ==
+  value := dbExpandOpAlistIfNecessary(htPage,opAlist,which,false,true)
+  htpSetProperty(htPage,'condition?,(value =&gt; 'yes; 'no))
+  value
+
+dbSetOpAlistCondition(htPage,opAlist,which) ==
+--called whenever a new opAlist is needed
+--property can only be inherited if 'no (a subset says NO if whole says NO)
+  condition := htpProperty(htPage,'condition?)
+  MEMQ(condition,'(yes no)) =&gt; condition = 'yes
+  value := dbExpandOpAlistIfNecessary(htPage,opAlist,which,false,true)
+  htpSetProperty(htPage,'condition?,(value =&gt; 'yes; 'no))
+  value
+
+dbExpandOpAlistIfNecessary(htPage,opAlist,which,needOrigins?,condition?) ==
+--if condition? = true, stop when you find a non-trivial predicate
+--otherwise, expand in full
+--RETURNS:
+--  non-trivial predicate, if condition? = true and it finds one
+--  nil,                   otherwise
+--SIDE-EFFECT: this function references the &quot;expand&quot; property (set elsewhere):
+--  'strings, if not fully expanded and it contains strings
+--            i.e. opAlist is ((op . (string ...))...) if unexpanded
+--  'lists,   if not fully expanded and it contains lists
+--            i.e. opAlist is ((op . ((sig pred) ...))...) if unexpanded
+    condition? := condition? and not $exposedOnlyIfTrue
+    value      := nil  --return value
+    expandProperty :=
+      which = '&quot;operation&quot; =&gt; 'expandOperations
+      'expandAttributes
+    expandFlag := htpProperty(htPage,expandProperty)
+    expandFlag = 'fullyExpanded =&gt; nil
+    expandFlag = 'strings =&gt; --strings are partially expanded
+      for pair in opAlist repeat
+        [op,:lines] := pair
+        acc := nil
+        for line in lines repeat
+        --NOTE: we must expand all lines here for a given op
+        --      since below we will change opAlist
+        --Case 1: Already expanded; just cons it onto ACC
+          null STRINGP line =&gt; --already expanded
+            if condition? then --this could have been expanded at a lower level
+              if null atom (pred := CADR line) then value := pred
+            acc := [line,:acc] --this one is already expanded; record it anyway
+        --Case 2: unexpanded; expand it then cons it onto ACC
+          [name,nargs,xflag,sigs,conname,pred,comments] := dbParts(line,7,1)
+          predicate := ncParseFromString pred
+          if condition? and null atom predicate then value := predicate
+          sig := ncParseFromString sigs --is (Mapping,:.)
+          if which = '&quot;operation&quot; then
+            if sig isnt ['Mapping,:.]
+            then sayBrightly ['&quot;Unexpected signature for &quot;,name,'&quot;: &quot;,sigs]
+            else sig := rest sig
+          conname := intern dbNewConname line
+          origin := [conname,:getConstructorArgs conname]
+          exposeFlag := dbExposed?(line,char 'o)
+          acc := [[sig,predicate,origin,exposeFlag,comments],:acc]
+        --always store the fruits of our labor:
+        RPLACD(pair,NREVERSE acc)             --at least partially expand it
+        condition? and value =&gt; return value  --early exit
+      value =&gt; value
+      condition? =&gt; nil
+      htpSetProperty(htPage,expandProperty,'fullyExpanded)
+    expandFlag = 'lists =&gt; --lists are partially expanded
+      -- entry is [sig, predicate, origin, exposeFlag, comments]
+      $value: local := nil
+      $docTableHash := MAKE_-HASHTABLE 'EQUAL
+      packageSymbol := false
+      domform := htpProperty(htPage,'domname) or htpProperty(htPage,'conform)
+      if isDefaultPackageName opOf domform then
+         catname := intern SUBSTRING(s := PNAME opOf domform,0,MAXINDEX s)
+         packageSymbol := first rest domform
+         domform := [catname,:rest rest domform]  --skip first argument ($)
+      docTable:= dbDocTable domform
+      for [op,:alist] in opAlist repeat
+        for [sig,:tail] in alist repeat
+          condition? =&gt; --the only purpose here is to find a non-trivial pred
+            null atom (pred := CAR tail) =&gt; return ($value := pred)
+            'skip
+          u :=
+            tail is [.,origin,:.] and origin =&gt;
+--  must change any % into $ otherwise we will not pick up comments properly
+--  delete the SUBLISLIS when we fix on % or $ 
+              dbGetDocTable(op,SUBLISLIS(['$],['%],sig),dbDocTable origin,_
+                            which,nil)
+            if packageSymbol then sig := SUBST('_$,packageSymbol,sig)
+            dbGetDocTable(op,sig,docTable,which,nil)
+          origin := IFCAR u or origin
+          docCode := IFCDR u   --&gt; (doc . code)
+--        if null FIXP CDR docCode then harhar(op) --&gt;
+          if null doc and which = '&quot;attribute&quot; then doc := getRegistry(op,sig)
+          RPLACD(tail,[origin,isExposedConstructor opOf origin,:docCode])
+        $value =&gt; return $value
+      $value =&gt; $value
+      condition? =&gt; nil
+      htpSetProperty(htPage,expandProperty,'fullyExpanded)
+    'done
+
+getRegistry(op,sig) ==
+  u := GETDATABASE('AttributeRegistry,'DOCUMENTATION)
+  v := LASSOC(op,u)
+  match := or/[y for y in v | y is [['attribute,: =sig],:.]] =&gt; CADR match
+  '&quot;&quot;
+
+evalableConstructor2HtString domform ==
+  if VECP domform then domform := devaluate domform
+  conname := first domform
+  coSig   := rest GETDATABASE(conname,'COSIG)
+  --entries are T for args which are domains; NIL for computational objects
+  and/[x for x in coSig] =&gt; form2HtString(domform,nil,true)
+  arglist := [unquote x for x in rest domform] where
+    unquote arg  ==
+      arg is [f,:args] =&gt;
+        f = 'QUOTE =&gt; first args
+        [f,:[unquote x for x in args]]
+      arg
+  fargtypes:=CDDAR GETDATABASE(conname,'CONSTRUCTORMODEMAP)
+--argtypes:= sublisFormal(arglist,fargtypes)
+  form2HtString([conname,:[fn for arg in arglist for x in coSig
+                   for ftype in fargtypes]],nil,true) where
+    fn ==
+      x =&gt; arg
+      typ := sublisFormal(arglist,ftype)
+      mathform2HtString algCoerceInteractive(arg,typ,'(OutputForm))
+
+mathform2HtString form == escapeString
+  $fortInts2Floats: local := false
+  form := niladicHack form
+  form is ['QUOTE,a] =&gt; STRCONC('&quot;'&quot;,&quot;STRCONC&quot;/fortexp0 a)
+  form is ['BRACKET,['AGGLST,:arg]] =&gt;
+    if arg is ['construct,:r] then arg := r
+    arg :=
+      atom arg =&gt; [arg]
+      [y for x in arg | y := (x is ['QUOTE,a] =&gt; a; x)]
+    tailPart := &quot;STRCONC&quot;/[STRCONC('&quot;,&quot;,STRINGIMAGE x) for x in rest arg]
+    STRCONC('&quot;[&quot;,STRINGIMAGE first arg,tailPart,'&quot;]&quot;)
+  form is ['BRACKET,['AGGLST,'QUOTE,arg]] =&gt;
+    if atom arg then arg := [arg]
+    tailPart := &quot;STRCONC&quot;/[STRCONC('&quot;,&quot;,x) for x in rest arg]
+    STRCONC('&quot;[&quot;,first arg,tailPart,'&quot;]&quot;)
+  atom form =&gt; form
+  &quot;STRCONC&quot;/fortexp0 form
+
+niladicHack form ==
+  atom form =&gt; form
+  form is [x] and GET(x,'NILADIC) =&gt; x
+  [niladicHack x for x in form]
+
+--============================================================================
+--                Getting Operations from Domain
+--============================================================================
+
+getDomainOpTable(dom,fromIfTrue,:options) ==
+  ops := KAR options
+  $predEvalAlist : local := nil
+  $returnNowhereFromGoGet: local := true
+  domname := dom.0
+  conname := CAR domname
+  abb := getConstructorAbbreviation conname
+  opAlist := getOperationAlistFromLisplib conname
+  &quot;append&quot;/[REMDUP [[op1,:fn] for [sig,slot,pred,key,:.] in u
+              | key ^= 'Subsumed and ((null ops and (op1 := op)) _
+                                 or (op1 := memq(op,ops)))]
+                 for [op,:u] in opAlist] where
+    memq(op,ops) ==   --dirty trick to get 0 and 1 instead of Zero and One
+      MEMQ(op,ops) =&gt; op
+      EQ(op,'One)  =&gt; MEMQ(1,ops) and 1
+      EQ(op,'Zero) =&gt; MEMQ(0,ops) and 0
+      false
+    fn ==
+      sig1 := sublisFormal(rest domname,sig)
+      predValue := evalDomainOpPred(dom,pred)
+      info :=
+        null predValue =&gt;
+          1   -- signifies not exported
+        null fromIfTrue =&gt; nil
+        cell := compiledLookup(op,sig1,dom) =&gt;
+          [f,:r] := cell
+          f = 'nowhere =&gt; 'nowhere           --see replaceGoGetSlot
+          f = 'makeSpadConstant =&gt; 'constant
+          f = function IDENTITY =&gt; 'constant
+          f = 'newGoGet =&gt; SUBST('_$,domname,devaluate CAR r)
+          null VECP r =&gt; systemError devaluateList r
+          SUBST('_$,domname,devaluate r)
+        'nowhere
+      [sig1,:info]
+
+evalDomainOpPred(dom,pred) == process(dom,pred) where
+  process(dom,pred) ==
+    u := convert(dom,pred)
+    u = 'T =&gt; true
+    evpred(dom,u)
+  convert(dom,pred) ==
+    pred is [op,:argl] =&gt;
+      MEMQ(op,'(AND and)) =&gt; ['AND,:[convert(dom,x) for x in argl]]
+      MEMQ(op,'(OR or))   =&gt; ['OR,:[convert(dom,x) for x in argl]]
+      MEMQ(op,'(NOT not)) =&gt; ['NOT,convert(dom,first argl)]
+      op = 'has =&gt;
+        [arg,p] := argl
+        p is ['ATTRIBUTE,a] =&gt; ['HasAttribute,arg,MKQ a]
+        ['HasCategory,arg,convertCatArg p]
+      systemError '&quot;unknown predicate form&quot;
+    pred = 'T =&gt; true
+    systemError nil
+  convertCatArg p ==
+    atom p or #p = 1 =&gt; MKQ p
+    ['LIST,MKQ first p,:[convertCatArg x for x in rest p]]
+  evpred(dom,pred) ==
+    k := POSN1(pred,$predicateList) =&gt; testBitVector(dom.3,k + 1)
+    evpred1(dom,pred)
+  evpred1(dom,pred) ==
+    pred is [op,:argl] =&gt;
+      MEMQ(op,'(AND and)) =&gt; &quot;and&quot;/[evpred1(dom,x) for x in argl]
+      MEMQ(op,'(OR or))   =&gt;  &quot;or&quot;/[evpred1(dom,x) for x in argl]
+      op = 'NOT =&gt; not evpred1(dom,first argl)
+      k := POSN1(pred,$predicateList) =&gt; testBitVector(dom.3,k + 1)
+      op = 'HasAttribute =&gt;
+        [arg,[.,a]] := argl
+        attPredIndex := LASSOC(a,dom.2)
+        null attPredIndex  =&gt; nil
+        attPredIndex = 0 =&gt; true
+        testBitVector(dom.3,attPredIndex)
+      nil
+    pred = 'T =&gt; true
+    systemError '&quot;unknown atomic predicate form&quot;
+
+--====================&gt; WAS br-op2.boot &lt;================================
+
+--=======================================================================
+--		     Operation Description
+--=======================================================================
+
+displayDomainOp(htPage,which,origin,op,sig,predicate,
+		doc,index,chooseFn,unexposed?,$generalSearch?) ==
+-----------------------&gt; OBSELETE
+  $saturn =&gt;
+    displayDomainOp1(htPage,which,origin,op,sig,predicate,
+		doc,index,chooseFn,unexposed?,$generalSearch?)
+  $chooseDownCaseOfType : local := true	  --see dbGetContrivedForm
+  $whereList  : local := nil
+  $NumberList : local := '(i j k l m n i1 j1 k1 l1 m1 n1 i2 j2 k2 l2 m2 n2 _
+                           i3 j3 k3 l3 m3 n3 i4 j4 k4 l4 m4 n4 )
+  $ElementList: local := '(x y z u v w x1 y1 z1 u1 v1 w1 x2 y2 z2 u2 v2 w2 _
+                           x3 y3 z3 u3 v3 w3 x4 y4 z4 u4 v4 w4 )
+  $FunctionList:local := '(f g h d e F G H)
+  $DomainList:	local := '(D R S E T A B C M N P Q U V W)
+  exactlyOneOpSig     := null index
+  conform   := htpProperty(htPage,'domname) or htpProperty(htPage,'conform)
+		 or origin
+  if $generalSearch? then $DomainList := rest $DomainList
+  opform :=
+    which = '&quot;attribute&quot; =&gt;
+      null sig =&gt; [op]
+      [op,sig]
+    which = '&quot;constructor&quot; =&gt; origin
+    dbGetDisplayFormForOp(op,sig,doc)
+  htSay('&quot;\newline&quot;)
+  if exactlyOneOpSig then htSay('&quot;\menuitemstyle{}&quot;)
+  else htMakePage [['bcLinks,['&quot;\menuitemstyle{}&quot;,'&quot;&quot;,chooseFn,which,index]]]
+  htSay('&quot;\tab{2}&quot;)
+  op   := IFCAR opform
+  args := IFCDR opform
+  ops := escapeSpecialChars STRINGIMAGE op
+  n := #sig
+  do
+    n = 2 and LASSOC('Nud,PROPLIST op) =&gt; _
+                         htSay(ops,'&quot; {\em &quot;,quickForm2HtString KAR args,'&quot;}&quot;)
+    n = 3 and LASSOC('Led,PROPLIST op) =&gt; _
+       htSay('&quot;{\em &quot;,quickForm2HtString KAR args,'&quot;} &quot;,ops,_
+             '&quot; {\em &quot;,quickForm2HtString KAR KDR args,'&quot;}&quot;)
+    if unexposed? and $includeUnexposed? then
+      htSayUnexposed()
+      htSaySaturn '&quot;\unexposed{{\em &quot;
+      htSaySaturn ops
+      htSaySaturn '&quot;}&quot;
+    htSayStandard(ops)
+    predicate='ASCONST or GETDATABASE(op,'NILADIC) _
+                       or MEMBER(op,'(0 1)) =&gt; 'skip
+    which = '&quot;attribute&quot; and null args =&gt; 'skip
+    htSay('&quot;(&quot;)
+    if IFCAR args then htSay('&quot;{\em &quot;,quickForm2HtString IFCAR args,'&quot;}&quot;)
+    for x in IFCDR args repeat
+      htSay('&quot;,{\em &quot;,quickForm2HtString x,'&quot;}&quot;)
+    htSay('&quot;)&quot;)
+  constring := form2HtString conform
+  conname   := first conform
+  $conkind   : local := htpProperty(htPage,'kind) -- a string e.g. &quot;category&quot;
+			  or STRINGIMAGE GETDATABASE(conname,'CONSTRUCTORKIND)
+  $conlength : local := #constring
+  $conform   : local := conform
+  $conargs   : local := rest conform
+  if which = '&quot;operation&quot; then
+    $signature : local :=
+      MEMQ(conname,$Primitives) =&gt; nil
+      CDAR getConstructorModemap conname
+    --RDJ: this next line is necessary until compiler bug is fixed
+    --that forgets to substitute #variables for t#variables;
+    --check the signature for SegmentExpansionCategory, e.g.
+    tvarlist := TAKE(# $conargs,$TriangleVariableList)
+    $signature := SUBLISLIS($FormalMapVariableList,tvarlist,$signature)
+  $sig :=
+    which = '&quot;attribute&quot; or which = '&quot;constructor&quot; =&gt; sig
+    $conkind ^= '&quot;package&quot; =&gt; sig
+    symbolsUsed := [x for x in rest conform | IDENTP x]
+    $DomainList := SETDIFFERENCE($DomainList,symbolsUsed)
+    getSubstSigIfPossible sig
+  if MEMBER(which,'(&quot;operation&quot; &quot;constructor&quot;)) then
+    $displayReturnValue: local := nil
+    if args then
+      htSay('&quot;\newline&quot;)
+      htSayStandard '&quot;\tab{2}&quot;
+      htSay '&quot;{\em Arguments:}&quot;
+      for a in args for t in rest $sig repeat
+	htSayIndentRel(15,true)
+	htSay('&quot;{\em &quot;,form2HtString(a),'&quot;}, &quot;)
+	htSayValue t
+	htSayIndentRel(-15,true)
+	htSay('&quot;\newline &quot;)
+    if first $sig then
+      $displayReturnValue := true
+      htSay('&quot;\newline\