==== TABLE OF CONTENTS ====
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//boundary.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//capacity-three.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//conclusion.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//construction.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//descriptions.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//global-gap-filters.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//lists.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//paper.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgf.revision.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcore.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorearrows.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreexternal.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoregraphicstate.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreimage.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorelayers.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreobjects.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathconstruct.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathprocessing.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathusage.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepatterns.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepoints.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorequick.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorerdf.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorescopes.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreshade.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransformations.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransparency.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgffor.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfint.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeys.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeyslibraryfiltered.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryarrows.meta.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibrarydecorations.pathreplacing.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryplothandlers.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmath.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathcalc.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfloat.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.base.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.basic.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.comparison.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.integerarithmetics.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.misc.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.random.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.round.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.trigonometric.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathparser.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathutil.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduledecorations.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmodulematrix.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleplot.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleshapes.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfrcs.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsys.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsysprotocol.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsyssoftpath.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfutil-common.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//separators.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//shared-cutoff.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//switch-localization.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikz.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarycalc.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.pathreplacing.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarypositioning.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarytopaths.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//references.bib
===========================
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//boundary.tex ====
\section{Preserving the global boundary invariants}\label{sec:boundary}
We verify Invariants~\ref{inv:past} and~\ref{inv:swap}
for a child \(W'=(a',b')\) of \(W=(a,b)\).
All notation is in the working frame of the child edge.
In a same update this is also the parent's tag frame.
In a switch update the old list is not carried; the newly constructed
upsets are used instead.
Preparatory changes to the schedule of \(W\) preserve the parent
invariants. Its boundary triples and all earlier exterior jobs
stay fixed, so Invariant~\ref{inv:past} is unchanged.
Invariant~\ref{inv:swap} already quantifies over every feasible
reordering of \(W\).
\subsection{Excluding distant qualifiers}
\begin{lemma}\label{lem:past}
The updated child list satisfies Invariant~\ref{inv:past}.
\end{lemma}
\begin{proof}
It suffices to prove the assertion before pruning, since pruning only
removes qualifiers. Let \(z\) qualify for the pre-pruning child list and be scheduled
at or before \(a'\).
If \(a<\operatorname{time}(z)\le a'\), the job belongs to the normalized
open side \(E\) of the parent. By \Cref{lem:update-labels}, it is
high at the edge cutoff \(S\). The local separator at \(a'\) puts
it in \(P_{a'}\) when strictly earlier, and membership in the
triple puts it in \(\wP{a'}\) when its time equals \(a'\).
Now suppose \(z\) is at or before \(a\).
The new injection \(D_a\setminus P_b\) cannot contain such a job.
Nor can either switch entry, by \Cref{lem:G} and the strictness
of \(D_a\). Thus the only remaining case is a same-direction
carry qualifier.
The parent's Invariant~\ref{inv:past} supplies a job \(y\in a\)
with \(z=y\) or \(z\prec y\).
The carry is a global upset, so \(y\) also qualifies by carry.
In particular \(a\) is actual. If \(a'=a\), we are done.
Assume \(a'>a\), and write \(a'=s_i\), with edge cutoff \(S=S_i\).
Follow all the strict advances of the walk from \(a\) through
promotion \(i\), including intermediate advances not retained as marks.
Every cutoff used in this portion of the walk is contained in \(S_i\).
On \(W\), the final carry is exactly \(O\setminus S_i\).
Consequently every carry qualifier in \(E\) is high, and has worse
priority than the low exceptions, at every one of these advances.
The first advance needs the parent exchange invariant, because
\(a\) lies outside the normalized open side \(E\).
Consider that first actual advance off \(a\), with earliest exception
\(x\) at its target \(t\).
All \emph{global} predecessors of \(x\) are before \(a\).
To verify this stronger readiness assertion, every predecessor is
temporally before \(t\). If one were at \(a\), then \(x\in D_a\).
If one were strictly between \(a\) and \(t\), it would belong to
the contiguous side \(E\), be low, and descend from \(a\) by
earliestness of the exception. Again \(x\in D_a\), a contradiction.
There is no other possible predecessor at or after \(a\).
Also \(x\in X=W\setminus D_a\), so Invariant~\ref{inv:cones}
puts it among the old qualifiers, outside the starting low set.
It has already been promoted by stage \(i\), so its old key is
strictly below the least unpromoted key at \(S_i\).
By \Cref{lem:carry}, the boundary job \(y\) has old key at least
that least unpromoted key.
The parent's Invariant~\ref{inv:swap}, applied after the current
preparatory reorderings of \(W\), therefore prohibits exchanging
\(x\) and \(y\) in the complete schedule.
If \(y\) had no global successor at or before \(t\), that exchange
would be feasible. All global predecessors of \(x\) lie strictly before \(a\);
moving it earlier preserves its successor constraints, and delaying
\(y\) to \(t\) preserves its predecessor constraints and, under
the supposition, its successor constraints. Thus \(y\) must have
a strict successor by \(t\).
Such a successor is in \(E\) and is still a carry qualifier.
Any carry job strictly between \(a\) and \(t\) must likewise have
a successor by \(t\): otherwise exchange it with \(x\) within
\(E\), contradicting its lexicographic normalization.
The carry is an upset, so these successors remain in the carry.
Iterating along strictly increasing times reaches a carry job
at \(t\). It cannot be \(x\), which is low and lies outside
the final carry.
At every subsequent advance, the local readiness and exchange argument
from \Cref{lem:shared} applies inside \(E\). All carry jobs remain
high at that advance, so each carry job at its starting slot
has a carry descendant at its target. Tracing from the descendant
of \(y\) at the first target eventually gives a descendant of
\(y\) at \(a'\).
Hence \(z\in\wP{a'}\), as required.
\end{proof}
\subsection{Exchanges after future child reorderings}
\begin{lemma}\label{lem:swap}
The pruned child list satisfies Invariant~\ref{inv:swap},
with its quantifier over all feasible reorderings of \(W'\).
\end{lemma}
\begin{proof}
Take any feasible reordering of \(W'\) in its slots.
Suppose \(x\in W'\setminus D_{a'}\), that \(y\in a'\)
qualifies for the child list, and that the new key of \(x\)
is smaller than the new key of \(y\).
Invariant~\ref{inv:cones}, already proved for the child in
\Cref{lem:update-labels}, ensures that \(x\) qualifies.
By \Cref{lem:prune}, the same comparison holds in the new list
before pruning.
First let \(a'>a\). Both \(x\) and \(y\) are in the parent's
normalized side \(E\), and both are high at its edge cutoff \(S\),
by \Cref{lem:update-labels}. The pre-pruning key order agrees with
the priority order used to normalize \(E\). Thus \(x\) has
better priority than \(y\).
The child reordering changes only slots strictly after \(a'\).
A feasible exchange of \(x,y\) in the complete schedule would
therefore give a feasible full schedule of the same \(E\)
with a better prefix at \(a'\), contrary to
\Cref{lem:lex-prefix}.
Now let \(a'=a\).
In the switch case there is no new qualifier at \(a\), so no
such \(y\) exists.
In the same case neither \(x\) nor \(y\) belongs to the new
injection: \(x\notin D_a\), and no job at \(a\) is a strict
descendant of \(a\).
Their pre-pruning comparison therefore uses only carry entries.
By \Cref{lem:carry}, it implies the same old key comparison
in the parent's list.
Moreover \(x\in W\setminus D_a\).
The preparatory reorderings and the arbitrary subsequent reordering
of \(W'\) together form a feasible reordering confined to \(W\).
The parent's Invariant~\ref{inv:swap} rules out the proposed
exchange.
\end{proof}
\begin{proposition}\label{prop:construction-valid}
Starting from any feasible full schedule, the marking and list
construction is defined at every node. Its pruned lists are global
upset lists of length at most five, with fewer than \(40\) leaves
per entry, and satisfy Invariants~\ref{inv:cones}--\ref{inv:swap}.
Every branch terminates.
\end{proposition}
\begin{proof}
Proceed by depth from the root data of \Cref{sec:construction}.
Given valid ancestor and parent data, the center and the two
normalized sides exist by \Cref{cor:any-ideal,lem:reorder}.
The shared walk and \Cref{lem:edge-labels} define the children.
For a same update the new list is direct. For a switch,
\Cref{lem:old-low,lem:G} construct the needed global upset
using only earlier data, as explained at the end of
\Cref{sec:lists}.
Then \Cref{lem:update-labels,lem:list-length,lem:entry-size}
give the first invariant and the bounds.
\Cref{lem:past,lem:swap} give the other two invariants without
using a claim about any deeper child.
This completes the simultaneous induction.
Every child omits the center, so its size decreases strictly.
\end{proof}
Invariant~\ref{inv:past} will let a bounded predicate distinguish
the child from qualifiers arbitrarily far in the past.
Invariant~\ref{inv:swap} is what allows that first invariant to
continue propagating after recursive reorderings. Neither is
replaced by an assertion only about local separators.
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//boundary.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//capacity-three.tex ====
\begin{tikzpicture}[x=1cm,y=1cm,font=\small,>=stealth,
job/.style={circle,draw,fill=white,minimum size=6.8mm,inner sep=0pt}]
\draw[black!55,rounded corners=2pt] (-.15,-.25) rectangle (10.75,2.85);
\node[anchor=west] at (-.15,3.13) {Parent $W$};
\node at (4,3.13) {Child $W'$};
\node at (9.1,3.13) {$b'\subset W$, $|b'|=3$};
\fill[black!5] (8.55,-.12) rectangle (9.65,2.72);
\foreach \yy/\ii/\xx/\cc in {2.2/1/3.55/blue!65!black,1.3/2/4/teal!65!black,.4/3/4.45/violet!70!black} {
\draw[draw=\cc,fill=\cc!5,rounded corners=3pt]
(.03,\yy-.34) rectangle (10.57,\yy+.34);
\node[text=\cc] at (1.05,\yy) {$I_{\ii}\cap W$};
\node[text=\cc] at (2.5,\yy) {$\cdots$};
\node[job,draw=\cc] (x\ii) at (\xx,\yy) {$x_{\ii}$};
\node[job,draw=\cc] (z\ii) at (9.1,\yy) {$z_{\ii}$};
\draw[->,draw=\cc] (x\ii) -- node[above,font=\footnotesize] {$\prec$} (z\ii);
\node[text=\cc] at (10.05,\yy) {$\cdots$};
}
\draw[dashed,black!60,rounded corners=2pt] (3.03,-.12) rectangle (4.98,2.72);
\draw[black!60,rounded corners=2pt] (8.55,-.12) rectangle (9.65,2.72);
\node[anchor=west,font=\footnotesize] at (-.15,-.64)
{$x_i\in I_i,\ x_i\prec z_i\ \Longrightarrow\ z_i\in I_i$
};
\node[anchor=east,font=\footnotesize] at (10.75,-.64)
{$I_i\cap I_j\cap W=\varnothing\ (i\ne j)\ \Longrightarrow\ z_i\ne z_j$};
\end{tikzpicture}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//capacity-three.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//conclusion.tex ====
\section{Conclusion}\label{sec:conclusion}
The finite search succeeds because every interval in a suitable recursive
schedule decomposition has a global description of bounded size,
independent of its depth. Local separator descriptions alone do not give
that guarantee: the short upset lists, the exterior boundary invariants,
and the simplification at direction changes prevent the accumulation of
ancestor information.
The resulting algorithm constructs an exact optimum for the stated
three-machine model. The fixed leaf allowance $10000$ and the explicit
large exponent establish polynomial time for the stated model.
The proof supplies no practical performance guarantee.
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//conclusion.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//construction.tex ====
\section{The interval construction and its invariants}\label{sec:construction}
We now construct the hierarchy from a feasible full schedule of \(J\).
Each node has a \emph{tag}, one of the two frames, and a witnessing
complete schedule. Descending to a child changes only the jobs inside
that child; its boundary triples and exterior schedule remain fixed.
Branches can retain separate witnesses, as allowed in
\Cref{def:hierarchy}.
\subsection{Global lists and boundary conditions}
In the tag frame of a node \(W=(a,b)\), attach an ordered list
\(\K=(K_1,\ldots,K_\ell)\) of global upsets.
Define the global qualifier set and the local old-high set by
\[
\Qual(\K)=\bigcup_{i=1}^{\ell}K_i,
\qquad O=W\cap\Qual(\K).
\]
For every globally qualifying job \(x\), set
\begin{equation}
\key_{\K}(x)=
\left(\max\{i:x\in K_i\},\,\rk(x)\right),
\label{eq:key}
\end{equation}
with lexicographic comparison. Entries may overlap. Their largest index,
not their smallest one, is used.
Because each entry is an upset, \(x\prec y\) with \(x\) qualifying
implies that \(y\) qualifies and
\(\key_{\K}(x)<\key_{\K}(y)\).
We maintain the following three invariants in the node's tag frame.
\begin{enumerate}[label=\textup{(I\arabic*)},ref=I\arabic*]
\item\label{inv:cones}
\(O\subseteq P_b\), and \(W\setminus O\subseteq D_a\).
\item\label{inv:past}
Every global qualifier scheduled at or before \(a\) belongs to
\(\wP a\).
\item\label{inv:swap}
After \emph{any} feasible reordering of \(W\) in its existing slots,
there is no feasible direct exchange between
\(x\in W\setminus D_a\) and a qualifying job \(y\) at \(a\) when
\(\key_{\K}(x)<\key_{\K}(y)\).
\end{enumerate}
Invariant~\ref{inv:cones} controls the jobs inside the interval;
Invariant~\ref{inv:past} controls qualifiers outside its left boundary,
and Invariant~\ref{inv:swap} makes that control persist after later
reorderings.
The exchange in Invariant~\ref{inv:swap} is tested for feasibility in
the complete schedule. The hypothetical exchanged schedule need not
preserve any decomposition or any of the list invariants.
The key of \(x\) is defined because Invariant~\ref{inv:cones} implies
\(W\setminus D_a\subseteq O\). A sentinel has no boundary jobs, so
the corresponding exchange condition is vacuous.
Lexicographic minimality within an interval controls exchanges of its
interior jobs; it gives no such control over exchanges with an exterior
boundary job. Invariant~\ref{inv:swap} supplies the latter control.
Suppose a qualifying job \(x\in W\setminus D_a\) has all its
predecessors strictly before \(a\), and its key is smaller than
that of a qualifying \(y\in a\). If \(y\) had no successor at or
before the slot of \(x\), their exchange would be feasible.
Invariant~\ref{inv:swap} therefore forces such a successor.
The proof in \Cref{sec:boundary} uses this first successor to
connect exterior qualifiers to the local separator walk.
All predicates are frozen global subsets of \(J\) once constructed.
In particular, a cone used in an old predicate continues to refer to
its fixed triple of jobs; it is not redefined after later reorderings.
We shall prove, simultaneously with the three invariants, that each
pruned list has at most five entries and each entry has fewer than
40 leaves.
At the root, use the original frame, the two sentinels, and the one-entry
list \((J)\). Invariant~\ref{inv:cones} follows from the sentinel cones,
and Invariants~\ref{inv:past} and~\ref{inv:swap} are vacuous.
\subsection{A center and two open sides}
In either working frame, let \(a,b\) now mean the left and right
boundaries of \(W\) in that frame, and write
\[
X=W\setminus D_a,\qquad Y=W\setminus P_b.
\]
Invariant~\ref{inv:cones} gives
\begin{equation}
W\subseteq D_a\cup P_b,\qquad X\subseteq P_b,\qquad Y\subseteq D_a.
\label{eq:cover}
\end{equation}
This cover is unchanged by reversal: the two boundary cones exchange
roles. In either frame \(X\) is an ideal in \(W\), and \(Y\) an
upset. The list, \(O\), and the other two invariants are used in their
stated form only in the tag frame.
In the tag frame choose an actual center \(v\) separating
the ideal \(W\cap P_b\), using \Cref{cor:any-ideal} and, if needed,
reordering \(W\). Mark \(v\). At the root use the last slot as
center; it separates the ideal \(J\).
The center triple and the job sets on its two sides are now fixed.
Treat each side as an open prefix \(E=(a,v)\), in the frame that
makes it a prefix. Call that side \(\same\) if its working frame is
the node's tag and \(\switch\) otherwise. Recompute all boundary
notation in that working frame. The center is a separator at cutoff
\begin{equation}
S_*=
\begin{cases}
W\cap P_b,&\same,\\
X=W\setminus D_a,&\switch.
\end{cases}
\label{eq:center-cutoff}
\end{equation}
Indeed the second formula is the complement of the original center-low
set after reversing order and time, so
\Cref{lem:separator-description} applies.
Use the following priority orders on \(W\), and the following nested
low cutoffs.
\begin{description}[style=nextline,leftmargin=1.5em]
\item[Same direction.]
Begin with \(S_0=(W\setminus O)\cap P_b\).
Order \(S_0\) first by increasing rank, then \(O\) by increasing
\(\key_{\K}\), and then \(Y\) by increasing rank.
Promote the jobs of \(O\) in that key order.
\item[Switched direction.]
Begin with \(S_0=\varnothing\).
Order \(X\) first and \(W\cap D_a\) second, each by increasing
rank in the switched frame.
Promote the jobs of \(X\) in that order.
\end{description}
These are total orders extending precedence.
For the same case, \(S_0\) is an ideal, \(Y\) is an upset,
and the key order on the middle group extends precedence.
The groups partition \(W\) since \(O\subseteq P_b\).
For the switch case use idealness of \(X\).
Every cutoff lies in \(P_b\) on \(W\), by \eqref{eq:cover},
and the initial low set lies in \(D_a\).
Normalize the open side \(E\) using the restriction of its priority
order to \(E\). This can be done independently on the two sides
before constructing children. It preserves feasibility by
\Cref{lem:reorder} and preserves the center separator, since neither
side's job set changes.
The resulting sequence of low subsets of \(W\) is
\[
S_0,S_1,\ldots,S_q=S_* .
\]
Some promoted jobs may lie outside \(E\).
Starting at its exterior left boundary \(s_0=a\), use
\Cref{lem:shared} for every promotion, taking \(s_i\) to be the
\emph{final} position of that promotion. Thus
\begin{equation}
a=s_0\le s_1\le\cdots\le s_qd\), or \(j=d\) and its rank is at least \(r\).
Whenever selected, its largest old membership is retained.
Reindexing applies the same strictly increasing shift to these retained
largest indices, and leaves the rank tiebreak unchanged. Rank suffixes
are upsets because rank is a linear extension.
\end{proof}
\Needspace{3\baselineskip}
\begin{lemma}[The comparison preserved by pruning]\label{lem:prune}
Let a list be pruned on \(W'\). Suppose \(x\in W'\) qualifies
and \(y\) is any global qualifier of the pruned list. If the pruned
key of \(x\) is smaller than the pruned key of \(y\), the same
comparison held before pruning.
\end{lemma}
\begin{proof}
Use original indices for the retained entries; their eventual
reindexing preserves order. Let \(M(z)\) be the largest membership
index before pruning and \(R(z)\) the largest retained one.
Every entry containing \(x\) survives, so \(R(x)=M(x)\), whereas
\(R(y)\le M(y)\). If \(R(x)M(x)\) or the rank comparison remains the
tiebreak. Both cases give the asserted old key comparison.
\end{proof}
\subsection{The two updates}
For a same-direction edge, the old list is in the working frame.
If \(O\setminus S=\varnothing\), its carry is empty.
Otherwise let \((d,r)\) be the smallest key of a job of
\(O\setminus S\), and use \eqref{eq:carry}.
Append the \emph{injection}
\begin{equation}
I=D_a\cap(J\setminus P_b).
\label{eq:injection}
\end{equation}
Then prune on \(W'\).
For a switched edge, we shall construct a global upset \(G\) in the
new working frame with the following properties:
\begin{equation}
W\setminus D_a\subseteq G,
\qquad
G\cap\{x:\text{\(x\) is scheduled at or before \(a\)}\}
=\varnothing .
\label{eq:G-properties}
\end{equation}
Choose \(h\) so that the still-high part of
\(X=W\setminus D_a\) is exactly \(X\cap\{\rk\ge h\}\).
Take \(h=N+1\) if this part is empty.
Discard the old list and begin a new list with the ordered pair
\begin{equation}
G\cap\{\rk\ge h\},\qquad D_a.
\label{eq:switch-pair}
\end{equation}
Then prune on \(W'\). Notice that \eqref{eq:G-properties} covers
\emph{all} of the parent's \(X\), not only the jobs in this child.
\begin{lemma}\label{lem:update-labels}
For either update, assuming \eqref{eq:G-properties} in the switch
case, the pre-pruning qualifier union on \(W\) is exactly
\(W\setminus S\). On these high jobs the pre-pruning key order
agrees with the side's priority order. After pruning, the qualifiers
on \(W'\) are exactly \(W'\setminus S\), and
Invariant~\ref{inv:cones} holds for the child.
\end{lemma}
\begin{proof}
In the same case, \Cref{lem:carry} gives exactly \(O\setminus S\)
on \(W\), in its old key order. The injection gives exactly \(Y\):
use \(Y\subseteq D_a\) in \eqref{eq:cover}. It is disjoint from
the old qualifier union on \(W\), which is contained in \(P_b\).
Since the injection is last, the pre-pruning order is the unpromoted
part of \(O\), followed by \(Y\) in rank order, as required.
In the switch case, coverage of \(X\) makes the first entry select
exactly the unpromoted part of \(X\) there. The second entry selects
all of \(W\cap D_a\). Even if the two entries overlap, the larger
index of the second puts this whole group last. The ordering
therefore agrees with the switched priority.
Pruning changes no membership on \(W'\). Its high jobs lie in
\(P_{b'}\), and its other jobs lie in \(D_{a'}\), by
\Cref{lem:edge-labels}. These are precisely the two assertions of
Invariant~\ref{inv:cones} for the child.
\end{proof}
\subsection{Why only five entries survive}
A \emph{run} is a chain of nodes with the same tag, starting at the
root or just after a switch. Its initial entries are the root's
single entry, or the two entries in \eqref{eq:switch-pair}.
Same-direction updates only take suffixes, restrict entries by rank
suffixes, and append injections. Multiple restrictions of an entry
by rank suffixes in the same frame combine into one tightest threshold.
Figure~\ref{fig:capacity-three} isolates the use of machine capacity
in the following bound.
\Needspace{3\baselineskip}
\begin{lemma}\label{lem:list-length}
Every pruned list produced by this construction has at most five entries.
At most three of them are injections from its current run.
\end{lemma}
\begin{proof}
The root and switch updates have at most two initial entries.
Consider a same update from \(W\) to \(W'\).
Injections retained into this child are pairwise disjoint on \(W\).
To see this, consider any pair and the time the later one was
introduced. It was disjoint on its then-current parent from all
previous carried entries, by \Cref{lem:update-labels}.
That parent contains the current \(W\), and subsequent carries
only restrict the older predicates. The disjointness persists on \(W\).
Each surviving injection contains some \(x\in W'\).
It is a high job, so \(x\prec z\) for some \(z\in b'\).
Global upward closure puts \(z\) in that same injection.
The actual triple \(b'\) lies in \(W\). Pairwise disjointness on
\(W\) thus forces distinct surviving injections to contain distinct
members of \(b'\). There are only three such members.
Together with the at most two initial entries this proves the bound.
\end{proof}
The freshly formed same-update list may have six entries before
pruning. We will use the five-entry bound only for pruned lists
or for a carry taken from such a list \emph{before} appending a
new injection.
\begin{figure}[t]
\centering
\input{figures/capacity-three}
\caption{Why at most three injections survive a same-direction update.
For each surviving injection, choose a high job $x_i$ in the child
and a successor $z_i$ in its ending triple $b'$.
Upward closure puts $z_i$ in the same injection; disjointness on the
parent $W$ makes the chosen $z_i$ distinct.
The three-injection case is drawn; arrows denote precedence.
Only witness pairs are shown:
the injections may contain other jobs and may overlap outside $W$.}
\label{fig:capacity-three}
\end{figure}
\subsection{Flattening the history of a run}
Only the first entry of a switch pair can carry a complicated predicate
from an earlier run. The following lemma removes it whenever we need
to reconstruct an old cutoff on a descendant parent.
\begin{lemma}[Local flattening]\label{lem:flatten}
Suppose a run began with a switch out of a node \(Q_0\), using
left boundary \(a_0\) in the resulting run frame, and entries
\[
G_0\cap\{\rk\ge h_0\},\qquad D_{a_0},
\qquad Q_0\setminus D_{a_0}\subseteq G_0 .
\]
Let \(U\subseteq Q_0\) be a later parent in that run. If the entry derived from the first displayed entry
survives into an unpruned carry out of \(U\), write its
current form as \(G_0\cap\{\rk\ge k\}\). Then the carried portion
of this pair has the same union on \(U\) as the global upset
\begin{equation}
D_{a_0}\cup\{\rk\ge k\}.
\label{eq:flatten}
\end{equation}
\end{lemma}
\begin{proof}
Track the original entries through later reindexings.
As long as the first entry survives, a suffix operation cannot
trim or discard the second entry: a cutoff at that later index
would already discard the first, permanently.
Thus the second entry is either still carried untrimmed, or was
pruned because it was empty on some intermediate node containing
\(U\). In the latter case \(D_{a_0}\cap U=\varnothing\).
On \(U\cap D_{a_0}\), the second entry, when this set is nonempty,
therefore selects every job. Every job of
\(U\setminus D_{a_0}\) lies in \(G_0\), because \(U\subseteq Q_0\).
On that remainder the first entry selects exactly the rank suffix
\(\rk\ge k\). This proves equality of the two unions on \(U\).
Both factors in \eqref{eq:flatten} are upsets, so their union is
globally upward closed, although it need not agree with the
carried pair outside \(U\).
\end{proof}
A new switch out of a node \(W\) uses the edge \(U\to W\)
by which \(W\) was created. Let \(H_-\) be that incoming
edge's low cutoff, in its own working frame, and reserve \(S\)
for the cutoff of the new outgoing edge. We need an extension
of \(H_-\) that does not retain a complicated switch predicate
from an earlier run. Local flattening provides it using lists and
covering properties belonging to already constructed ancestors.
\begin{lemma}[A short extension of an earlier low set]\label{lem:old-low}
Consider an already constructed edge from a parent \(U\) to a child
\(W\), in its old working frame. Its low cutoff \(H_-\subseteq U\)
has a global downset extension \(H_-^*\) agreeing with it on \(U\).
This extension can be chosen with at most \(21\) leaves.
\end{lemma}
\begin{proof}
Use the boundary notation of \(U\) in that old frame for this proof.
If the edge was a switch relative to the tag of \(U\), its low
cutoff is a rank prefix of \(U\setminus D_a\). Thus
\[
(J\setminus D_a)\cap\{\rk\le r\}
\]
is the required global downset, using at most two leaves.
If the edge was same, its low cutoff on \(U\) equals \(P_b\)
minus its unpruned carry union, without the fresh injection.
The old list on \(U\) has at most five entries by
\Cref{lem:list-length}. If its run began at the root, all carry
entries are simple: the root base or injections, possibly rank-trimmed.
If it began at a switch, the only possibly complicated carry
entry is the first of that switch pair. If it is present in the carry,
replace the carried pair by \eqref{eq:flatten}; if it is absent from
the carry, every carried entry is already simple.
This gives a global upset agreeing with the carry union on \(U\).
It has at most five terms, each with at most four leaves.
Indeed an injection with a rank trim has three leaves; a root
base or a second switch base with a trim has at most two; and
the flattened pair has two. Taking \(P_b\) minus this union
gives a global downset with at most \(1+5\cdot4=21\) leaves.
An empty carry is represented by false.
\end{proof}
\subsection{Constructing the new switch upset}
Suppose a switch out of \(W\) produces a nonempty child.
By \Cref{lem:edge-labels}, \(W\) is not the root.
Let \(U\) be the parent that produced \(W\).
That preceding edge was taken in the tag frame of \(W\), which
is opposite to the current working frame.
In the current frame write \(a_-,b_-\) for the boundaries of \(U\)
and \(v_-\) for its center. The temporal arrangement is
\begin{equation}
a_-0\), Levey and Rothvoß
obtained a \((1+\varepsilon)\)-approximation using linear programming
(LP) hierarchies
\citep{LeveyRothvoss2016}; Garg improved the running time to
quasipolynomial \citep{Garg2018}. Li replaced LP conditioning by
combinatorial guesses and obtained the bound
\(n^{O((m^4/\varepsilon^3)(\log\log n)^3)}\) \citep{Li2021}.
Das and Wiese later gave a simpler combinatorial quasipolynomial-time
approximation scheme \citep{DasWiese2022}.
These works give a related perspective on the recursive structure of
nearly optimal schedules. The exact separator and global-description
statements used here are established separately.
\paragraph{Why a finite search can suffice.}
After adding isolated jobs, we may assume that every slot contains three
jobs. If selected slots are removed from a feasible schedule, the remaining
open gaps can be scheduled independently: reordering the jobs of one gap
does not change their temporal relation to any exterior job. This suggests
a recursive search whose subproblems are the sets of jobs in those gaps.
The obstacle is their number. Naming a gap by its two boundary triples
does not by itself determine its job set, and repeatedly intersecting
descriptions inherited from its ancestors can require an unbounded formula.
We prove that every feasible instance has a recursive decomposition in
which each gap is described \emph{globally}, as a subset of all jobs, by a
Boolean formula of bounded size. The permitted tests are precedence to or
from a triple of jobs, membership in that triple, and rank thresholds in
a fixed linear extension or its reverse. The bound is independent of the
depth of the decomposition. There are therefore only polynomially many
sets that the algorithm must consider. Compatible selected triples connect
smaller accepted gap sets, and their concatenation gives the schedule.
The structural proof chooses lexicographically minimal schedules only as
existence witnesses; the algorithm enumerates the descriptions instead of
computing those witnesses. Fix a priority order extending precedence,
and call its current initial segment low and the remaining jobs high.
A selected slot separates this cutoff when every earlier high job is a
precedence predecessor of a job in that slot, and every later low job is
a precedence successor of one. In a normalized interval, we promote
jobs one at a time from high to low and move a separator forward. Each pair
of successive selected slots separates one common cutoff: each low job
in the intervening gap has a predecessor in its left slot, and each high
job has a successor in its right slot.
The two sides of a center slot are treated by the same construction:
for one side we reverse both time and precedence. To describe a gap
without remembering all its ancestors, we maintain a short list of sets
closed under taking successors in the current direction. A boundary slot limits the number of new list entries that can
survive. A global boundary condition excludes distant jobs, while an
exchange condition keeps that control valid after later reorderings.
At a change of direction, a paired form of the inherited entries lets us
replace their history by a bounded formula. The distinction between
agreement inside a known interval and a description valid on all jobs is
what makes this last step necessary.
\paragraph{Organization.}
\Cref{sec:preliminaries,sec:algorithm} specify a finite description family
and the uniform algorithm. \Cref{sec:separators} supplies common cutoffs,
and \Cref{sec:construction} uses them to form smaller child intervals.
\Cref{sec:lists} bounds inherited predicate information;
\Cref{sec:boundary} proves the global boundary invariants.
\Cref{sec:descriptions} describes whole intervals and marked
splits by bounded formulas, completing the hierarchy proof.
\Cref{sec:complexity} gives the explicit running-time bound.
\section{Full schedules, frames, and descriptions}\label{sec:preliminaries}
We write \(x\prec y\) if there is a directed path of positive length
from \(x\) to \(y\). Transitive reachability can be computed in polynomial
time. All restrictions of the precedence order below mean restrictions of
this transitive order, including when a path in the original graph uses
vertices outside the restricted set.
\subsection{Padding and interval reorderings}
If \(n>3T\), reject. Otherwise add \(3T-n\) isolated jobs and let \(J\)
be the resulting set, with \(N=|J|=3T\).
A \emph{full schedule} of a set \(W\subseteq J\) is an ordered sequence
of antichain triples partitioning \(W\), respecting \(\prec\).
Its length is necessarily \(|W|/3\). The empty set has the empty full
schedule.
\begin{lemma}\label{lem:padding}
The original deadline is feasible if and only if \(J\) has a full schedule.
The padded instance has polynomial size in the stated input encoding.
\end{lemma}
\begin{proof}
A schedule of the original jobs leaves exactly \(3T-n\) vacant positions
among the three machines and \(T\) slots. Fill them with the isolated jobs.
Conversely, delete the isolated jobs from a full schedule.
Since \(T\le n\) and the vertices are explicitly listed, \(N=3T\le3n\)
is polynomially bounded.
\end{proof}
A schedule's slots will also denote their job triples. An \emph{open
interval} \((a,b)\) consists of all slots strictly between two boundary
slots; we use the same symbol \(W\) for that interval's job set.
Virtual boundaries before the first and after the last slot are allowed.
\begin{lemma}\label{lem:reorder}
Replacing the schedule inside an open interval by any full schedule of
its job set preserves feasibility of the complete schedule.
\end{lemma}
\begin{proof}
All exterior jobs are either before the entire interval or after it.
Their order relative to every interior job is unchanged. Interior
precedences hold by the assumed feasibility of the replacement.
\end{proof}
\subsection{The two frames}
Fix a linear extension of the order on \(J\), with rank
\(\rk:J\to\{1,\ldots,N\}\). A deterministic choice is obtained by
successively removing a minimal job, breaking ties by its identifier.
We also use the reversed order, reversed time, and reversed linear
extension. These are our two \emph{frames}. The two ranks of a job sum
to \(N+1\). Unless a frame is specified otherwise, all time comparisons,
precedence relations, and ranks in an argument belong to its working frame.
For an actual slot \(a\), identified with its job triple, define global cones
\[
D_a=\{x\in J:\exists y\in a,\ y\prec x\},
\qquad
P_a=\{x\in J:\exists y\in a,\ x\prec y\},
\qquad
\wD a=D_a\cup a,\quad \wP a=P_a\cup a .
\]
At the left sentinel take \(D_a=\wD a=J\) and
\(P_a=\wP a=\varnothing\). At the right sentinel use the opposite
convention. Reversal exchanges \(D\) and \(P\), and exchanges their
weak versions. In a fixed frame the \(D\)-cones and weak \(D\)-cones are
upward closed, whereas the \(P\)-cones and weak \(P\)-cones are downward
closed.
Cone membership always concerns the whole poset \(J\), even when a formula
is evaluated on an interval. A job that is temporally earlier than a block
need not be a predecessor of that block.
\subsection{A fixed finite family}
Let \(\F\) be the family of subsets of \(J\) described by Boolean formulas
with at most \(K=10000\) leaves. Leaves are the following atomic tests or
their negations:
\begin{itemize}
\item true and false;
\item rank thresholds \(\rk\le k\) and \(\rk\ge k\), with
\(0\le k\le N+1\), in either frame;
\item membership in a triple of jobs, or in any of its four cones
\(P,D,\widehat P,\widehat D\), in either frame.
\end{itemize}
Internal nodes are binary conjunctions and disjunctions. Negating a formula
does not increase its number of leaves: apply De Morgan's laws and push
negations to the leaves. Sentinel tests are constants.
We distinguish a \emph{global description} \(W=F\), with \(F\in\F\),
from a \emph{relative description} \(L=W\cap F\).
\begin{lemma}\label{lem:family}
The family \(\F\) can be generated deterministically in polynomial time
and represented by \(N\)-bit vectors.
\end{lemma}
\begin{proof}
There are \(O(N^3)\) atomic tests. The number of binary tree shapes and
connective assignments with at most \(K\) leaves is a constant depending
only on \(K\). Labelling the leaves therefore gives \(O(N^{3K})\)
formulas, with a constant implicit factor. Compute their truth sets after
precomputing reachability, then deduplicate by comparing the bit vectors
pairwise. This is a deterministic finite procedure with polynomial cost.
\end{proof}
\section{The algorithm and its structural certificate}\label{sec:algorithm}
The algorithm accepts or rejects each \(W\in\F\), in increasing order
of cardinality. Write \(\A(W)\) for its acceptance value, and regard
\(\A(U)\) as false when \(U\notin\F\).
Set \(\A(\varnothing)\) to true, and reject sets whose sizes are not
divisible by three.
For each remaining nonempty \(W\), form states
\[
(L,Z,R),\qquad W=L\dotcup Z\dotcup R,
\]
where \(Z\) is an antichain triple and \(L=W\cap F\) for some \(F\in\F\).
Keep a state only if the displayed order of its three parts is
\emph{compatible}: no job in a later part precedes a job in an earlier
part. This test uses the transitive order on \(J\).
Declare the state initial when \(\A(L)\) is true and final when
\(\A(R)\) is true. Add an edge
\[
(L,Z,R)\longrightarrow(L',Z',R')
\]
exactly when
\begin{equation}
L\cup Z\subseteq L',
\qquad
\A\bigl(L'\setminus(L\cup Z)\bigr)=\mathrm{true}.
\label{eq:transition}
\end{equation}
All acceptance values consulted concern smaller sets.
Set \(\A(W)\) to true if an initial state reaches a final state,
allowing a path consisting of a single state.
Return \(\YES\) precisely when \(\A(J)\) is true.
\begin{proposition}\label{prop:algorithm}
This is a uniform deterministic polynomial-time algorithm. Every set it
accepts has a full schedule, which the algorithm can explicitly return.
With \(K=10000\), its deadline decision and schedule construction take
\(O((L+2)^{150020})\) deterministic multitape steps.
\end{proposition}
\begin{proof}
For soundness, consider a path with triples \(Z_1,\ldots,Z_k\) and
left sets \(L_1,\ldots,L_k\). Put
\[
A_0=L_1,\qquad
A_i=L_{i+1}\setminus(L_i\cup Z_i)\ (1\le i0pt%
\pgf@arrows@inner@line@width@dep{#2}{#3}%
\else%
\advance\pgf@x by#2\pgflinewidth%
\fi%
}
\def\pgf@arrows@inner@line@width@dep#1#2{%
\pgf@xa\pgflinewidth%
\pgf@xb-.5\pgflinewidth%
\pgf@xb#2\pgf@xb%
\advance\pgf@xa by\pgf@xb%
\pgf@xb\pgfinnerlinewidth%
\pgf@xb-.5\pgf@xb
\advance\pgf@xa by#2\pgf@xb%
\advance\pgf@x by#1\pgf@xa%
}
\def\pgfarrowslengthdependent#1#2#3#4{%
#4#1%
\advance#4by#2\pgfarrowlength%
\advance#4by#3\pgflinewidth%
}
\def\pgf@arrow@fullname#1{pgf@@ar@#1@\the\pgflinewidth @\pgfinnerlinewidth @\ifpgfarrowreversed r\fi @\pgf@arrows@stroke@color @\pgf@arrows@fill@color @\csname pgf@ar@par@#1\endcsname}
\def\pgf@arrow@id@count{0}%
\def\pgfarrows@getid#1#2{%
\let\pgf@arrows@late@options\pgfutil@empty%
\csname pgf@ar@defaults@#1\endcsname%
\pgf@arrows@options@scope
#2\relax%
\pgf@arrows@nested@options%
\pgf@arrows@late@options%
\pgfarrows@scale@list%
\expandafter\global\expandafter\let\expandafter\pgf@arrow@id\csname\pgf@arrow@fullname{#1}\endcsname\relax%
\ifx\pgf@arrow@id\relax%
\pgf@arrows@instantiate{#1}
\fi%
}
\def\pgf@arrows@instantiate#1{%
\pgfutil@tempcnta\pgf@arrow@id@count\relax%
\advance\pgfutil@tempcnta by1\relax%
\xdef\pgf@arrow@id@count{\the\pgfutil@tempcnta}%
\expandafter\global\expandafter\let\csname\pgf@arrow@fullname{#1}\endcsname\pgf@arrow@id@count%
\global\let\pgf@arrow@id\pgf@arrow@id@count%
{%
\pgfclearid%
\csname pgf@ar@setup@#1\endcsname%
\ifpgfarrowreversed%
\pgf@arrows@handle@reverse%
\fi%
\expandafter\global\expandafter\let\csname pgf@ar@saves@\pgf@arrow@id\endcsname\pgf@arrows@saves%
\expandafter\global\expandafter\let\csname pgf@ar@hull@\pgf@arrow@id\endcsname\pgf@arrows@convexhull%
\expandafter\xdef\csname pgf@ar@ends@\pgf@arrow@id\endcsname{{\pgf@arrows@the@tipend}{\pgf@arrows@the@backend}{\pgf@arrows@the@lineend}}%
\expandafter\xdef\csname pgf@ar@visual@\pgf@arrow@id\endcsname{{\pgf@arrows@the@visualtipend}{\pgf@arrows@the@visualbackend}{}}%
\edef\pgf@arrow@code{%
\ifpgfarrowreversed\noexpand\pgftransformxscale{-1}\fi%
\expandafter\noexpand\csname pgf@ar@code@#1\endcsname%
}%
\expandafter\global\expandafter\let\csname pgf@ar@inst@code@\pgf@arrow@id\endcsname\pgf@arrow@code%
\expandafter\ifx\csname pgf@ar@do@cache@#1\endcsname\pgf@truetext%
\pgfsysprotocol@getcurrentprotocol\pgf@arrow@temp%
{%
\pgfinterruptpath%
\let\pgfusepath=\pgf@nousepath@here%
\pgf@relevantforpicturesizefalse%
\pgftransformreset%
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
\pgfsysprotocol@bufferedtrue%
\pgfscope%
\pgf@arrow@code%
\endpgfscope%
\pgfsysprotocol@getcurrentprotocol\pgf@@arrow@temp%
\expandafter\gdef\expandafter\pgf@arrow@code\expandafter{\expandafter\pgfsysprotocol@literal\expandafter{\pgf@@arrow@temp}}%
\endpgfinterruptpath%
}%
\pgfsysprotocol@setcurrentprotocol\pgf@arrow@temp%
\fi%
\expandafter\global\expandafter\let\csname pgf@ar@cache@\pgf@arrow@id\endcsname\pgf@arrow@code%
}%
}
\def\pgf@truetext{true}
\def\pgf@arrows@copy@tipend{\pgf@arrows@the@tipend}
\def\pgf@arrows@copy@backend{\pgf@arrows@the@backend}
\def\pgf@arrows@copy@lineend{\pgf@arrows@the@lineend}
\def\pgf@arrows@zeropt{0pt}%
\let\pgf@arrows@saves\pgfutil@empty%
\let\pgf@arrows@convexhull\pgfutil@empty%
\let\pgf@arrows@the@tipend\pgf@arrows@zeropt%
\let\pgf@arrows@the@backend\pgf@arrows@zeropt%
\let\pgf@arrows@the@lineend\pgf@arrows@zeropt%
\let\pgf@arrows@the@visualtipend\pgf@arrows@copy@tipend%
\let\pgf@arrows@the@visualbackend\pgf@arrows@copy@backend%
\def\pgf@arrows@handle@reverse{%
\pgf@x\pgf@arrows@the@visualtipend\pgf@x-\pgf@x%
\pgf@y\pgf@arrows@the@visualbackend\pgf@y-\pgf@y
\edef\pgf@arrows@the@visualtipend{\the\pgf@y}%
\edef\pgf@arrows@the@visualbackend{\the\pgf@x}%
\pgf@x\pgf@arrows@the@tipend\pgf@x-\pgf@x%
\pgf@y\pgf@arrows@the@backend\pgf@y-\pgf@y
\edef\pgf@arrows@the@tipend{\the\pgf@y}%
\edef\pgf@arrows@the@backend{\the\pgf@x}%
\pgf@x\pgf@arrows@the@lineend\pgf@x-\pgf@x\edef\pgf@arrows@the@lineend{\the\pgf@x}%
\let\pgf@temp\pgf@arrows@convexhull%
\let\pgf@arrows@convexhull\pgfutil@empty%
\let\pgf@arrow@hull@point\pgf@arrow@hull@point@reverse%
\pgf@temp%
}
\def\pgf@arrow@hull@point@reverse#1#2{%
\pgf@x#1%
\pgfarrowshullpoint{-\pgf@x}{#2}%
}
\def\pgf@nousepath@here#1{\pgferror{The definition of an arrow may not use \string\pgfusepath}}
\def\pgfarrowssavethe#1{%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\pgf@arrows@saves%
\expandafter\expandafter\expandafter{\expandafter\pgf@arrows@saves\expandafter#1\the#1\relax}
}
\def\pgfarrowssave#1{%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\pgf@arrows@saves%
\expandafter\expandafter\expandafter{\expandafter\pgf@arrows@saves\expandafter\def\expandafter#1\expandafter{#1}}
}
\def\pgfarrowshullpoint#1#2{%
\pgf@x#1\relax%
\pgf@y#2\relax%
\edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}}%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@arrows@convexhull\expandafter\expandafter\expandafter{\pgf@arrows@temp}%
}
\def\pgfarrowsupperhullpoint#1#2{%
\pgf@x#1\relax%
\pgf@y#2\relax%
\ifdim\pgf@y>0pt
\edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}\ifpgfarrowharpoon\else\noexpand\pgf@arrow@hull@point{\the\pgf@x}{-\the\pgf@y}\fi}%
\else
\edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}}%
\fi
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@arrows@convexhull\expandafter\expandafter\expandafter{\pgf@arrows@temp}%
}
\def\pgfarrowssettipend#1{\pgf@x#1\edef\pgf@arrows@the@tipend{\the\pgf@x}}
\def\pgfarrowssetbackend#1{\pgf@x#1\edef\pgf@arrows@the@backend{\the\pgf@x}}
\def\pgfarrowssetlineend#1{\pgf@x#1\edef\pgf@arrows@the@lineend{\the\pgf@x}}
\def\pgfarrowssetvisualtipend#1{\pgf@x#1\edef\pgf@arrows@the@visualtipend{\the\pgf@x}}
\def\pgfarrowssetvisualbackend#1{\pgf@x#1\edef\pgf@arrows@the@visualbackend{\the\pgf@x}}
\def\pgf@arrow@compute@shortening#1{%
\let\pgf@arrow@handle\pgf@arrow@compute@shortening@
\let\pgf@arrow@handle@dot\pgf@arrow@after@line@endtrue%
\pgf@arrow@after@line@endfalse%
\pgf@xa0pt%
\pgf@xb0pt%
#1%
}
\newif\ifpgf@arrow@after@line@end
\def\pgf@arrow@compute@shortening@#1#2{%
{\pgfarrows@getid{#1}{#2}\ifnum\pgf@arrow@flex@mode>0\relax\global\pgf@precise@shorteningtrue\fi\expandafter}\expandafter\pgf@x\the\pgfarrowsep%
\expandafter\expandafter\expandafter\pgf@arrow@cont@short\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
}
\def\pgf@dot@text{.}
\def\pgf@arrow@cont@short#1#2#3{%
\advance\pgf@xb by#1%
\pgf@xc#2%
\advance\pgf@xb by-\pgf@xc%
\advance\pgf@xb by\pgf@x%
\ifpgf@arrow@after@line@end%
\advance\pgf@xa by#1%
\advance\pgf@xa by\pgf@x%
\pgf@xc#2%
\advance\pgf@xa by-\pgf@xc%
\else%
\pgf@xa#1%
\advance\pgf@xa by\pgf@x%
\pgf@xc#3%
\advance\pgf@xa by-\pgf@xc%
\fi%
}
\def\pgf@arrow@rigid@arrow#1#2{%
{%
\pgf@xb=#2%
\pgftransformxshift{-\pgf@xb}%
\let\pgf@arrow@handle\pgf@arrow@rigid
\let\pgf@arrow@handle@dot\relax%
#1%
}%
}
\def\pgf@arrow@rigid#1#2{%
{%
\pgfarrows@getid{#1}{#2}%
\expandafter\expandafter\expandafter\pgf@arrow@drawer@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
\ifdim\pgfarrows@slant pt=0pt%
\else%
\pgftransformxslant{\pgfarrows@slant}%
\fi%
\ifpgfarrowswap%
\pgftransformyscale{-1}%
\fi%
{%
\csname pgf@ar@saves@\pgf@arrow@id\endcsname%
\pgf@arrows@rigid@hull%
}%
\expandafter}%
\expandafter\pgftransformxshift\expandafter{\the\pgf@xc}%
}
\def\pgf@arrow@draw@arrow#1#2{%
{%
\pgf@xb=#2%
\pgftransformxshift{-\pgf@xb}%
\let\pgf@arrow@handle\pgf@arrow@drawer
\let\pgf@arrow@handle@dot\relax%
#1%
}%
}
\def\pgf@arrow@drawer#1#2{%
{%
\pgfarrows@getid{#1}{#2}%
\expandafter\expandafter\expandafter\pgf@arrow@drawer@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
\ifdim\pgfarrows@slant pt=0pt%
\else%
\pgftransformxslant{\pgfarrows@slant}%
\fi%
\ifpgfarrowswap%
\pgftransformyscale{-1}%
\fi%
{%
\csname pgf@ar@saves@\pgf@arrow@id\endcsname%
\pgfscope%
\pgf@arrows@color@setup%
\pgflowlevelsynccm\csname pgf@ar@cache@\pgf@arrow@id\endcsname%
\endpgfscope%
\pgf@arrows@rigid@hull%
}%
\expandafter}%
\expandafter\pgftransformxshift\expandafter{\the\pgf@xc}%
}
\def\pgf@arrows@color@setup@restore@std@colors{%
\pgfutil@namelet{\string\color@pgfstrokecolor}{pgf@strokecolor@global}%
\pgfutil@namelet{\string\color@pgffillcolor}{pgf@fillcolor@global}%
}%
\def\pgf@arrows@color@setup{%
\ifx\pgf@arrows@stroke@color\pgfutil@empty\else\pgfsetstrokecolor{\pgf@arrows@stroke@color}\fi%
\ifx\pgf@arrows@fill@color\pgfutil@empty%
\ifx\pgf@strokecolor@global\pgf@fillcolor@global
\else
\pgf@arrows@color@setup@restore@std@colors
\pgfsetfillcolor{pgfstrokecolor}%
\fi%
\else%
\pgf@arrows@color@setup@restore@std@colors
\pgfsetfillcolor{\pgf@arrows@fill@color}%
\fi%
}
\def\pgf@arrow@drawer@shift#1#2#3{%
\pgf@xb#2\pgftransformxshift{-\pgf@xb}%
\pgf@xc#1%
\advance\pgf@xc by\pgfarrowsep%
\advance\pgf@xc by-\pgf@xb%
}
\def\pgf@arrows@rigid@hull{%
\ifpgf@relevantforpicturesize%
\expandafter\let\expandafter\pgf@temp\csname pgf@ar@hull@\pgf@arrow@id\endcsname%
\ifx\pgf@temp\pgfutil@empty\else%
\let\pgf@arrow@hull@point\pgf@arrow@hull@point@first%
\pgf@temp%
\pgf@arrow@update@bb%
\fi%
\fi
}
\def\pgf@arrow@hull@point@first#1#2{%
\pgf@x#1\pgf@y#2%
\pgf@xa\pgf@pt@aa\pgf@x%
\advance\pgf@xa by\pgf@pt@ba\pgf@y%
\pgf@ya\pgf@pt@ab\pgf@x%
\advance\pgf@ya by\pgf@pt@bb\pgf@y%
\pgf@xb\pgf@xa\pgf@yb\pgf@ya%
\let\pgf@arrow@hull@point\pgf@arrow@hull@point@other%
}
\def\pgf@arrow@hull@point@other#1#2{%
\pgfutil@tempdima#1\pgfutil@tempdimb#2%
\pgf@x\pgf@pt@aa\pgfutil@tempdima%
\advance\pgf@x by\pgf@pt@ba\pgfutil@tempdimb%
\pgf@y\pgf@pt@ab\pgfutil@tempdima%
\advance\pgf@y by\pgf@pt@bb\pgfutil@tempdimb%
\ifdim\pgf@x<\pgf@xa\pgf@xa\pgf@x\else\ifdim\pgf@x>\pgf@xb\pgf@xb\pgf@x\fi\fi%
\ifdim\pgf@y<\pgf@ya\pgf@ya\pgf@y\else\ifdim\pgf@y>\pgf@yb\pgf@yb\pgf@y\fi\fi%
}
\def\pgf@arrow@update@bb{%
\advance\pgf@xa by\pgf@pt@x%
\advance\pgf@ya by\pgf@pt@y%
\advance\pgf@xb by\pgf@pt@x%
\advance\pgf@yb by\pgf@pt@y%
\ifdim\pgf@picmaxx=-16000pt\relax%
\global\pgf@picminx\pgf@xa%
\global\pgf@picmaxx\pgf@xb%
\global\pgf@picminy\pgf@ya%
\global\pgf@picmaxy\pgf@yb%
\else%
\ifdim\pgf@xa<\pgf@picminx\global\pgf@picminx\pgf@xa\fi%
\ifdim\pgf@ya<\pgf@picminy\global\pgf@picminy\pgf@ya\fi%
\ifdim\pgf@xb>\pgf@picmaxx\global\pgf@picmaxx\pgf@xb\fi%
\ifdim\pgf@yb>\pgf@picmaxy\global\pgf@picmaxy\pgf@yb\fi%
\fi%
}
\def\pgfsetarrows#1{\pgf@arrows#1\pgf@stop}
\def\pgf@arrows{\pgfutil@ifnextchar[\pgf@arrows@test@opt\pgf@arrows@}%
\def\pgf@arrows@#1-#2\pgf@stop{%
\pgfsetarrowsstart{#1}%
\pgfsetarrowsend{#2}%
}
\def\pgf@arrows@test@opt[{%
\pgfutil@ifnextchar-{\pgf@arrows@[}%
\pgf@arrows@test@opt@%
}
\def\pgf@arrows@test@opt@#1]{%
\pgfutil@ifnextchar\pgf@stop{%
\let\pgf@arrows@options\pgf@arrows@options@scope%
\pgfkeys{/pgf/arrow keys/.cd,#1}%
\let\pgf@arrows@options@scope\pgf@arrows@options%
\pgfutil@gobble%
}{%
\pgf@arrows@[#1]%
}%
}
\let\pgf@arrows@options@scope\pgfutil@empty
\pgfdeclarearrow{
name = .,
drawing code =
}
\pgfdeclarearrow{
name = _,
defaults = {sep},
drawing code =
}
\pgfdeclarearrow{ name = To, means = } %
\pgfdeclarearrow{ name = Bar, means = } %
\pgfkeys{
<-> /.tip = {To},
>-< /.tip = {>[reversed]},
| /.tip = {Bar}
}
\pgfkeys {}
\def\pgf@arrows@direct@def#1#2{\expandafter\pgf@arrows@direct@def@\expandafter{\csname pgf@ar@means@#2\endcsname}{#1}}
\def\pgf@arrows@direct@def@#1#2{\expandafter\def\csname pgf@arrows@direct@name@#2\endcsname{\pgf@arrow@handle@shorthand@empty{#1}}}
\pgf@arrows@direct@def{start@[}{]}
\pgf@arrows@direct@def{start@]}{[}
\pgf@arrows@direct@def{start@spaced [}{spaced ]}
\pgf@arrows@direct@def{start@spaced ]}{spaced [}
\pgf@arrows@direct@def{end@[}{[}
\pgf@arrows@direct@def{end@]}{]}
\pgf@arrows@direct@def{end@spaced [}{spaced [}
\pgf@arrows@direct@def{end@spaced ]}{spaced ]}
\def\pgfsetarrowoptions#1#2{\expandafter\def\csname pgf@arrow@compat@opt@#1\endcsname{#2}}
\def\pgfgetarrowoptions#1{\csname pgf@arrow@compat@opt@#1\endcsname}
\def\pgfarrowsdeclare#1#2#3#4{%
\pgfdeclarearrow{ name ={#1}-{#2}, setup code ={#3}, drawing code={#4}, parameters/.expand once={\csname pgf@arrow@compat@opt@#2\endcsname}}%
\expandafter\def\csname pgf@arrow@compat@opt@#2\endcsname{0}}
\def\pgfarrowsleftextend#1{\pgfmathsetlength\pgf@xa{#1}\pgfarrowssetbackend{\pgf@xa}}
\def\pgfarrowsrightextend#1{\pgfmathsetlength\pgf@xb{#1}\pgfarrowssettipend{\pgf@xb}}
\def\pgfarrowsdeclarealias#1#2#3#4{\pgfdeclarearrow{ name ={#1}-{#2}, means ={#4} } }
\def\pgfarrowsdeclarereversed#1#2#3#4{\pgfdeclarearrow{ name ={#1}-{#2}, means={{#4}[reversed]}}}
\def\pgfarrowsdeclarecombine{\pgfutil@ifnextchar*{\pgfarrowsdeclarecombine@star}{\pgf@@arrowsdeclarecombine}}
\def\pgf@@arrowsdeclarecombine{\pgfutil@ifnextchar[{\pgf@arrowsdeclarecombine}{\pgf@arrowsdeclarecombine[0pt]}}
\def\pgf@arrowsdeclarecombine[#1]#2#3#4#5#6#7{\def\pgf@@temp{#1}\ifx\pgf@@temp\pgf@linewidthtext\def\pgf@@temp{+0pt 1}\fi%
\pgfdeclarearrow{name ={#2}-{#3}, means={#5[sep/.expand once=\pgf@@temp]#6}}}
\def\pgf@linewidth@text{\pgflinewidth}
\def\pgfarrowsdeclarecombine@star*{\pgfutil@ifnextchar[{\pgf@arrowsdeclarecombine@star}{\pgf@arrowsdeclarecombine@star[0pt]}}
\def\pgf@arrowsdeclarecombine@star[#1]#2#3#4#5#6#7{\def\pgf@@temp{#1}\ifx\pgf@@temp\pgf@linewidthtext\def\pgf@@temp{+0pt 1}\fi%
\pgfdeclarearrow{name ={#2}-{#3}, means={#5[sep/.expand once=\pgf@@temp].#6}}}
\def\pgfarrowsdeclaredouble{\pgfutil@ifnextchar[{\pgf@arrowsdeclaredouble}{\pgf@arrowsdeclaredouble[0pt]}}
\def\pgf@arrowsdeclaredouble[#1]#2#3#4#5{\pgfarrowsdeclarecombine[#1]{#2}{#3}{#4}{#5}{#4}{#5}}
\def\pgfarrowsdeclaretriple{\pgfutil@ifnextchar[{\pgf@arrowsdeclaretriple}{\pgf@arrowsdeclaretriple[0pt]}}
\def\pgf@arrowsdeclaretriple[#1]#2#3#4#5{ \pgfarrowsdeclarecombine[#1]{pgf@trip@#2}{pgf@trip@#3}{#4}{#5}{#4}{#5}%
\pgfarrowsdeclarecombine[#1]{#2}{#3}{pgf@trip@#2}{pgf@trip@#3}{#4}{#5}}
\def\pgf@linewidthtext{\pgflinewidth}
\pgfarrowsdeclare{stealth}{stealth}
{
\pgfutil@tempdima=0.28pt%
\pgfutil@tempdimb=\pgflinewidth%
\ifdim\pgfinnerlinewidth>0pt%
\pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
\fi%
\advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
\pgfarrowsleftextend{+-3\pgfutil@tempdima}
\pgfarrowsrightextend{+5\pgfutil@tempdima}
}
{
\pgfutil@tempdima=0.28pt%
\pgfutil@tempdimb=\pgflinewidth%
\ifdim\pgfinnerlinewidth>0pt%
\pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
\fi%
\advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
\pgfpathmoveto{\pgfqpoint{5\pgfutil@tempdima}{0pt}}
\pgfpathlineto{\pgfqpoint{-3\pgfutil@tempdima}{4\pgfutil@tempdima}}
\pgfpathlineto{\pgfpointorigin}
\pgfpathlineto{\pgfqpoint{-3\pgfutil@tempdima}{-4\pgfutil@tempdima}}
\pgfusepathqfill
}
\pgfarrowsdeclarereversed{stealth reversed}{stealth reversed}{stealth}{stealth}
\pgfarrowsdeclare{to}{to}
{
\pgfutil@tempdima=-0.84pt%
\advance\pgfutil@tempdima by-1.3\pgflinewidth%
\pgfutil@tempdimb=0.21pt%
\advance\pgfutil@tempdimb by.625\pgflinewidth%
\pgfarrowsleftextend{+\pgfutil@tempdima}
\pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
\pgfutil@tempdima=0.28pt%
\advance\pgfutil@tempdima by.3\pgflinewidth%
\pgfsetlinewidth{0.8\pgflinewidth}
\pgfsetdash{}{+0pt}
\pgfsetroundcap
\pgfsetroundjoin
\pgfpathmoveto{\pgfqpoint{-3\pgfutil@tempdima}{4\pgfutil@tempdima}}
\pgfpathcurveto
{\pgfqpoint{-2.75\pgfutil@tempdima}{2.5\pgfutil@tempdima}}
{\pgfqpoint{0pt}{0.25\pgfutil@tempdima}}
{\pgfqpoint{0.75\pgfutil@tempdima}{0pt}}
\pgfpathcurveto
{\pgfqpoint{0pt}{-0.25\pgfutil@tempdima}}
{\pgfqpoint{-2.75\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}
{\pgfqpoint{-3\pgfutil@tempdima}{-4\pgfutil@tempdima}}
\pgfusepathqstroke
}
\pgfkeys{To /.tip = to}
\pgfarrowsdeclare{to reversed}{to reversed}
{
\pgfutil@tempdima=-0.21pt%
\advance\pgfutil@tempdima by-0.475\pgflinewidth%
\pgfutil@tempdimb=0.98pt%
\advance\pgfutil@tempdimb by1.45\pgflinewidth%
\pgfarrowsleftextend{+\pgfutil@tempdima}
\pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
\pgfutil@tempdima=0.28pt%
\advance\pgfutil@tempdima by.3\pgflinewidth%
\pgfsetlinewidth{+0.8\pgflinewidth}
\pgfsetdash{}{+0pt}
\pgfsetroundcap
\pgfsetroundjoin
\pgfpathmoveto{\pgfqpoint{3.5\pgfutil@tempdima}{4\pgfutil@tempdima}}
\pgfpathcurveto
{\pgfqpoint{3.25\pgfutil@tempdima}{2.5\pgfutil@tempdima}}
{\pgfqpoint{0.5\pgfutil@tempdima}{0.25\pgfutil@tempdima}}
{\pgfqpoint{-0.25\pgfutil@tempdima}{0\pgfutil@tempdima}}
\pgfpathcurveto
{\pgfqpoint{0.5\pgfutil@tempdima}{-0.25\pgfutil@tempdima}}
{\pgfqpoint{3.25\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}
{\pgfqpoint{3.5\pgfutil@tempdima}{-4\pgfutil@tempdima}}
\pgfusepathqstroke
}
\pgfarrowsdeclare{latex}{latex}
{
\pgfutil@tempdima=0.28pt%
\pgfutil@tempdimb=\pgflinewidth%
\ifdim\pgfinnerlinewidth>0pt%
\pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
\fi%
\advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
\pgfarrowsleftextend{+-1\pgfutil@tempdima}
\pgfarrowsrightextend{+9\pgfutil@tempdima}
}
{
\pgfutil@tempdima=0.28pt%
\pgfutil@tempdimb=\pgflinewidth%
\ifdim\pgfinnerlinewidth>0pt%
\pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
\fi%
\advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
\pgfpathmoveto{\pgfqpoint{9\pgfutil@tempdima}{0pt}}
\pgfpathcurveto
{\pgfqpoint{6.3333\pgfutil@tempdima}{.5\pgfutil@tempdima}}
{\pgfqpoint{2\pgfutil@tempdima}{2\pgfutil@tempdima}}
{\pgfqpoint{-1\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
\pgfpathlineto{\pgfqpoint{-1\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
\pgfpathcurveto
{\pgfqpoint{2\pgfutil@tempdima}{-2\pgfutil@tempdima}}
{\pgfqpoint{6.3333\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
{\pgfqpoint{9\pgfutil@tempdima}{0pt}}
\pgfusepathqfill
}
\pgfarrowsdeclarereversed{latex reversed}{latex reversed}{latex}{latex}
\pgfarrowsdeclare{@bar}{@bar}
{
\pgfarrowsleftextend{+-0.25\pgflinewidth}
\pgfarrowsrightextend{+.75\pgflinewidth}
}
{
\pgfutil@tempdima=2pt%
\advance\pgfutil@tempdima by1.5\pgflinewidth%
\pgfsetdash{}{+0pt}
\pgfsetrectcap
\pgfpathmoveto{\pgfqpoint{0.25\pgflinewidth}{-\pgfutil@tempdima}}
\pgfpathlineto{\pgfqpoint{0.25\pgflinewidth}{\pgfutil@tempdima}}
\pgfusepathqstroke
}
\pgfkeys{Bar /.tip = @bar}
\pgfarrowsdeclare{space}{space}
{
\pgfutil@tempdima=0.88pt%
\advance\pgfutil@tempdima by.3\pgflinewidth%
\pgfarrowsleftextend{0pt}
\pgfarrowsrightextend{\pgfutil@tempdima}
}
{}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorearrows.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreexternal.code.tex ====
\ProvidesFileRCS{pgfcoreexternal.code.tex}
\newif\ifpgfexternal@aux@in@dpth
\newif\ifpgfexternal@info
\pgfkeys{
/pgf/images/include external/.code={\pgfimage{#1}},
/pgf/images/aux in dpth/.is if=pgfexternal@aux@in@dpth,
/pgf/images/aux in dpth/.default=true,
/pgf/images/trim external/.code n args={4}{%
\def\pgf@external@kern@left{#1}%
\def\pgf@external@kern@bottom{#2}%
\def\pgf@external@kern@right{#3}%
\def\pgf@external@kern@top{#4}%
\ifx\pgf@external@kern@left\pgfutil@empty\def\pgf@external@kern@left{0sp}\fi%
\ifx\pgf@external@kern@bottom\pgfutil@empty\def\pgf@external@kern@bottom{0sp}\fi%
\ifx\pgf@external@kern@right\pgfutil@empty\def\pgf@external@kern@right{0sp}\fi%
\ifx\pgf@external@kern@top\pgfutil@empty\def\pgf@external@kern@top{0sp}\fi%
},
/pgf/images/trim external={1truein}{1truein}{1truein}{1truein},
/pgf/images/external info/.is if=pgfexternal@info,
/pgf/images/external info/.default=true,
}
\newif\ifpgfexternalreadmainaux
\pgfexternalreadmainauxtrue
\def\pgfrealjobname#1{%
\global\let\pgfactualjobname=\jobname
\edef\pgf@tempa{\expandafter\string\csname #1\endcsname}%
\edef\pgf@tempb{\expandafter\string\csname\jobname\endcsname}%
\ifx\pgf@tempa\pgf@tempb%
\else%
\pgf@external@grabshipouttrue%
\pgfexternal@nofiles%
\ifpgfexternalreadmainaux
\gdef\jobname{#1}%
\fi
\ifpgfexternal@aux@in@dpth
\csname newwrite\endcsname\w@pgfexternal@auxout
\fi
\pgfexternal@geometry@compatibility
\fi%
\gdef\pgfrealjobname##1{}%
}
\def\pgfexternal@geometry@compatibility{%
\pgfutil@ifundefined{geometry}{%
}{%
\pgf@typeout{Package TikZ externalization: calling \string\geometry{driver=none} during externalization.^^J}%
\geometry{driver=none}%
}%
}%
\def\pgfexternal@nofiles{%
\let\pgfexternal@nofiles@=\relax
\def\relax{\relax}%
\csname nofiles\endcsname
\let\relax=\pgfexternal@nofiles@
}%
\newif\ifpgf@external@grabshipout
\newbox\pgfexternal@startupbox
\pgfutil@ifundefined{AtBeginDocument}{}{%
\AtBeginDocument{%
\ifpgf@external@grabshipout%
\global\let\pgfexternal@originalshipout=\shipout%
\global\def\shipout{\setbox\pgfpic=}%
\maxdeadcycles=10000%
{%
\output{\global\setbox\pgfexternal@startupbox=\vbox{\csname @begindvi\endcsname\unvbox255}}%
\hbox{}\eject%
}%
\fi%
}
}%
\pgfutil@ifundefined{AtEndDocument}{}{%
\AtEndDocument{%
\ifpgf@external@grabshipout
\pgfutil@ifundefined{pgfexternal@did@a@shipout}{%
\pgfexternal@error@no@shipout
}{}%
\fi
}%
}
\def\pgfexternal@error@no@shipout{%
\pgferror{Sorry, image externalization failed: the resulting image was EMPTY. I tried to externalize '\pgfactualjobname'. Perhaps there was a typo somewhere? Please check that your document contains '\string\beginpgfgraphicnamed{\pgfactualjobname} ... \string\endpgfgraphicnamed'}%
}%
\def\pgf@externalbegin#1{%
\let\pgf@next=\pgf@external@normal%
\ifpgf@external@grabshipout%
\edef\pgf@tempa{\expandafter\string\csname #1\endcsname}%
\edef\pgf@tempb{\expandafter\string\csname\pgfactualjobname\endcsname}%
\ifx\pgf@tempa\pgf@tempb%
\let\pgf@next=\pgf@external@grab%
\fi%
\fi%
\pgf@next{#1}%
}
\AtBeginDocument{
\let\beginpgfgraphicnamed=\pgf@externalbegin%
\let\endpgfgraphicnamed=\unskip
}
\def\pgf@external@normal#1{%
\let\pgf@filename=\pgfutil@empty%
\expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#1}%
\ifx\pgf@filename\pgfutil@empty%
\let\pgf@next=\relax%
\else%
\let\pgf@next=\pgf@replacepicturebygraphic%
\fi%
\pgf@next%
}
\long\def\pgf@replacepicturebygraphic#1\endpgfgraphicnamed{%
\expandafter\pgfincludeexternalgraphics\expandafter{\pgf@filename}\unskip
}
\def\pgfincludeexternalgraphics#1{%
\begingroup
\pgfexternalreaddpth{#1}%
\pgfkeysifdefined{/pgf/images/include external/#1/.@cmd}{%
\pgfkeysgetvalue{/pgf/images/include external/#1/.@cmd}\pgf@tempa
\pgfkeyslet{/pgf/images/include external/.@cmd}\pgf@tempa
}{}%
\setbox1=\hbox{\pgfkeysvalueof{/pgf/images/include external/.@cmd}{#1}\pgfeov}%
\ifdim\pgfexternaltrimleft=0sp \else \kern\pgfexternaltrimleft\relax \fi
\ifdim\pgfexternaldepth=0pt
\box1
\else
\dimen0=\pgfexternaldepth\relax
\hbox{\lower\dimen0 \box1 }%
\fi
\ifdim\pgfexternaltrimright=0sp \else \kern\pgfexternaltrimright\relax \fi
\endgroup
}
\def\pgfexternalreaddpth#1{%
\edef\pgfexternalreaddpth@restore{%
\noexpand\endlinechar=\the\endlinechar\space
\noexpand\catcode`\noexpand\@=\the\catcode`\@\space
}%
\def\pgfexternaldepth{0sp}%
\def\pgfexternaltrimleft{0sp}%
\def\pgfexternaltrimright{0sp}%
\endlinechar=-1 %
\catcode`\@=11
\openin\r@pgf@reada=#1.dpth
\pgfincludeexternalgraphics@read@dpth
\pgfexternalreaddpth@restore
}%
\def\pgfincludeexternalgraphics@read@dpth{%
\ifeof\r@pgf@reada
\closein\r@pgf@reada
\else
\read\r@pgf@reada to\pgfincludeexternalgraphics@auxline
\ifx\pgfincludeexternalgraphics@auxline\pgfutil@empty
\else
\expandafter\pgfincludeexternalgraphics@read@dpth@line\pgfincludeexternalgraphics@auxline\pgfincludeexternalgraphics@read@dpth@line@EOI
\fi
\expandafter\pgfincludeexternalgraphics@read@dpth
\fi
}%
\def\pgfexternal@restore#1{#1}%
\long\def\pgfincludeexternalgraphics@read@dpth@line@getfirst#1#2\pgfincludeexternalgraphics@read@dpth@line@EOI{%
\def\pgf@first{#1}%
}%
\long\def\pgfincludeexternalgraphics@read@dpth@line#1\pgfincludeexternalgraphics@read@dpth@line@EOI{%
\pgfincludeexternalgraphics@read@dpth@line@getfirst#1\pgfincludeexternalgraphics@read@dpth@line@EOI
\expandafter\ifcat\expandafter\noexpand\pgf@first\relax
\expandafter\ifx\pgf@first\pgfexternal@restore
#1%
\else
\pgfutil@ifundefined{if@filesw}{%
}{%
\if@filesw
{%
\toks0={#1}%
\immediate\write\@auxout{%
\noexpand\def\noexpand\dpthimport{\the\toks0}\noexpand\dpthimport}%
}%
\fi
}%
\fi
\else%
\def\pgfexternaldepth{#1}%
\fi
}%
\def\pgfexternalstorecommand#1{%
}%
\def\pgfexternalstorecommand@isexporting#1{%
\immediate\write\w@pgfexternal@auxout{\noexpand\pgfexternal@restore{#1}}%
}%
\def\pgf@external@grab#1{%
\def\pgf@filename{#1}%
\ifpgfexternal@aux@in@dpth
\begingroup
\pgf@external@init@aux@in@dpth
\let\G@refundefinedtrue=\pgf@external@grab@refundefinedtrue
\fi
\gdef\pgf@trimleft@final{0sp}%
\gdef\pgf@trimright@final{0sp}%
\setbox\pgfpic=\hbox\bgroup\bgroup%
\let\endpgfgraphicnamed=\pgf@externalend%
}
{\catcode`\^=12 \gdef\pgfexternal@hat{^}}
\expandafter\let\expandafter\pgf@external@grab@refundefinedtrue@orig\csname G@refundefinedtrue\endcsname
\def\pgf@external@grab@refundefinedtrue{%
\pgf@external@grab@refundefinedtrue@orig
\begingroup
\def\n{\pgfexternal@hat\pgfexternal@hat J}%
\pgfexternalstorecommand{%
\pgf@external@grab@refundefinedtrue@code
\noexpand\immediate\noexpand\write16{\pgf@external@grab@refundefinedtrue@warning}%
\noexpand\G@refundefinedtrue
}%
\endgroup
}%
\def\pgf@external@grab@refundefinedtrue@code{}
\def\pgf@external@grab@refundefinedtrue@warning{%
LaTeX Warning: External picture `\pgfactualjobname' contains undefined references\noexpand\on@line.\n
}%
\let\pgf@external@@protected@write@orig=\protected@write
\long\def\pgf@external@@protected@write@immediate#1#2#3{%
\begingroup
\let\pgf@write@=\write
\def\write{\noexpand\immediate\pgf@write@}%
\pgf@external@@protected@write@orig{#1}{#2}{#3}%
\endgroup
}%
\def\pgf@external@init@aux@in@dpth{%
\let\pgfexternalstorecommand=\pgfexternalstorecommand@isexporting
\csname @fileswtrue\endcsname
\immediate\openout\w@pgfexternal@auxout=\pgf@filename.dpth
\let\@auxout=\w@pgfexternal@auxout
\let\protected@write=\pgf@external@@protected@write@immediate
}%
\def\pgf@externalend@storeshifts#1{%
\immediate\write#1{\the\dp\pgfpic}%
\ifx\pgf@trimleft@final\pgfutil@empty\else
\immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternaltrimleft{\pgf@trimleft@final}}}%
\fi
\ifx\pgf@trimright@final\pgfutil@empty\else
\immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternaltrimright{\pgf@trimright@final}}}%
\fi
\ifpgfexternal@info
\immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternalwidth{\the\wd\pgfpic}}}%
\immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternalheight{\the\dimen0}}}%
\fi
}
\def\pgf@externalend{%
\unskip\egroup\egroup%
{%
\def\pgf@external@trim{0}%
\def\pgf@external@store@dpth{0}%
\ifpgf@trim@lowlevel
\gdef\pgf@trimleft@final{}%
\gdef\pgf@trimright@final{}%
\else
\ifdim\pgf@trimleft@final=0sp \gdef\pgf@trimleft@final{} \else\def\pgf@external@trim{1}\fi
\ifdim\pgf@trimright@final=0sp \gdef\pgf@trimright@final{} \else\def\pgf@external@trim{1}\fi
\if1\pgf@external@trim
\setbox\pgfpic=\hbox{%
\ifx\pgf@trimleft@final\pgfutil@empty\else\kern-\pgf@trimleft@final\fi
\box\pgfpic
\ifx\pgf@trimright@final\pgfutil@empty\else\kern-\pgf@trimright@final\fi
}%
\def\pgf@external@store@dpth{1}%
\fi
\fi
\parindent0pt %
\hoffset=0pt %
\voffset=0pt
\dimen0\ht\pgfpic%
\advance\dimen0\dp\pgfpic%
\ifdim\dp\pgfpic=0pt\relax
\else%
\def\pgf@external@store@dpth{1}%
\fi
\ifpgfexternal@info
\def\pgf@external@store@dpth{1}%
\fi
\if1\pgf@external@store@dpth
\ifpgfexternal@aux@in@dpth
\pgf@externalend@storeshifts\@auxout
\immediate\closeout\@auxout
\else
\immediate\openout\pgf@plotwrite=\pgf@filename.dpth
\pgf@externalend@storeshifts\pgf@plotwrite
\immediate\closeout\pgf@plotwrite
\fi
\fi
\pgfsys@prepare@papersize{\the\wd\pgfpic}{\the\dimen0}%
\setbox0=\vbox{%
\kern -\pgf@external@kern@top\relax%
\hbox{%
\kern -\pgf@external@kern@left\relax%
\hbox to0pt{%
\wd\pgfexternal@startupbox=0pt %
\ht\pgfexternal@startupbox=0pt %
\dp\pgfexternal@startupbox=0pt %
\box\pgfexternal@startupbox%
\pgfsys@atbegindocument\hss}%
\box\pgfpic%
\kern\pgf@external@kern@right\relax%
}%
\kern\pgf@external@kern@bottom\relax%
}%
\let\pgfexternal@nointerlineskip@orig=\nointerlineskip
\let\nointerlineskip=\pgfexternal@nointerlineskip
\pgfexternal@originalshipout\box0 %
\gdef\pgfexternal@did@a@shipout{1}%
}%
\ifpgfexternal@aux@in@dpth
\endgroup
\fi
}
\def\pgfexternal@nointerlineskip{%
\ifvmode
\pgfexternal@nointerlineskip@orig
\else
\relax%
\fi
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreexternal.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoregraphicstate.code.tex ====
\ProvidesFileRCS{pgfcoregraphicstate.code.tex}
\newdimen\pgflinewidth
\def\pgfsetlinewidth#1{%
\pgfmathsetlength\pgflinewidth{#1}%
\global\pgflinewidth=\pgflinewidth%
\pgfsys@setlinewidth{\the\pgflinewidth}%
\ignorespaces}
\def\pgfsetinnerlinewidth#1{%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgfinnerlinewidth{\the\pgf@x}%
}
\def\pgfinnerlinewidth{0pt}
\def\pgfsetinnerstrokecolor#1{\def\pgfinnerstrokecolor{#1}}
\def\pgfinnerstrokecolor{white}
\def\pgfsetmiterlimit#1{%
\ifdim#1pt<1pt\pgferror{miter limit cannot be less than 1}\fi%
\pgfsys@setmiterlimit{#1}%
\ignorespaces}
\def\pgfsetdash#1#2{%
\def\pgf@temp{}%
\def\pgf@next{\pgf@strip}%
\pgf@strip#1{pgf@stop}%
\pgfmathsetlength\pgf@x{#2}%
\pgfsys@setdash{\pgf@temp}{\the\pgf@x}%
\ignorespaces}
\def\pgf@strip#1{%
\def\pgf@@temp{#1}%
\ifx\pgf@@temp\pgf@stop%
\let\pgf@next=\relax%
\else%
\pgfmathsetlength\pgf@x{#1}%
\ifx\pgf@temp\pgfutil@empty%
\edef\pgf@temp{\the\pgf@x}%
\else%
\edef\pgf@temp{\pgf@temp,\the\pgf@x}%
\fi%
\fi\pgf@next}
\def\pgf@stop{pgf@stop}
\def\pgfsetstrokecolor#1{%
\pgfutil@colorlet{pgfstrokecolor}{#1}%
\pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfstrokecolor}}%
\expandafter\let\expandafter\pgf@temp\csname\string\color@pgfstrokecolor\endcsname
\global\let\pgf@strokecolor@global=\pgf@temp
\expandafter\pgf@setstrokecolor\pgf@temp%
}
\def\pgf@setstrokecolor#1#2#3#4#5{%
\expandafter\ifx\csname pgfsys@color@#4@stroke\endcsname\relax%
\pgferror{Unsupported color model `#4'. Sorry}%
\else%
\edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4@stroke\endcsname}%
\pgf@uncomma#5,,%
\pgf@colmarshal%
\fi}
\def\pgf@uncomma#1,{%
\def\pgf@coltest{#1}%
\ifx\pgf@coltest\pgfutil@empty%
\let\pgf@colnext=\relax%
\else%
\expandafter\def\expandafter\pgf@colmarshal\expandafter{\pgf@colmarshal{#1}}%
\let\pgf@colnext=\pgf@uncomma%
\fi%
\pgf@colnext%
}
\def\pgfsetfillcolor#1{%
\pgfutil@colorlet{pgffillcolor}{#1}%
\pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgffillcolor}}%
\expandafter\let\expandafter\pgf@temp\csname\string\color@pgffillcolor\endcsname
\global\let\pgf@fillcolor@global=\pgf@temp
\expandafter\pgf@setfillcolor\pgf@temp
}
\def\pgf@setfillcolor#1#2#3#4#5{%
\expandafter\ifx\csname pgfsys@color@#4@fill\endcsname\relax%
\pgferror{Unsupported color model `#4'. Sorry}%
\else%
\edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4@fill\endcsname}%
\pgf@uncomma#5,,%
\pgf@colmarshal%
\fi}
\def\pgfsetcolor#1{%
\pgfutil@colorlet{pgfstrokecolor}{#1}%
\pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfstrokecolor}}%
\expandafter\let\expandafter\pgf@temp\csname\string\color@pgfstrokecolor\endcsname
\global\let\pgf@strokecolor@global=\pgf@temp
\global\let\pgf@fillcolor@global=\pgf@temp
\expandafter\pgf@setcolor\pgf@temp%
}
\def\pgf@setcolor#1#2#3#4#5{%
\expandafter\ifx\csname pgfsys@color@#4\endcsname\relax%
\pgferror{Unsupported color model `#4'. Sorry}%
\else%
\edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4\endcsname}%
\pgf@uncomma#5,,%
\pgf@colmarshal%
\fi}
\def\XC@bcolor{\pgfsys@color@reset}
\def\pgfsetbuttcap{\pgfsys@buttcap\ignorespaces}
\def\pgfsetroundcap{\pgfsys@roundcap\ignorespaces}
\def\pgfsetrectcap{\pgfsys@rectcap\ignorespaces}
\def\pgfsetmiterjoin{\pgfsys@miterjoin\ignorespaces}
\def\pgfsetbeveljoin{\pgfsys@beveljoin\ignorespaces}
\def\pgfsetroundjoin{\pgfsys@roundjoin\ignorespaces}
\def\pgfseteorule{\pgfsys@eoruletrue\ignorespaces}
\def\pgfsetnonzerorule{\pgfsys@eorulefalse\ignorespaces}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoregraphicstate.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreimage.code.tex ====
\ProvidesFileRCS{pgfcoreimage.code.tex}
\def\pgfdeclareimage{\pgfutil@ifnextchar[{\pgf@declareimage}{\pgf@declareimage[]}}
\def\pgf@declareimage[#1]#2#3{%
\pgfqkeys{/pgf/images}{height=,width=,page=,interpolate=false,mask=,#1}%
\gdef\pgf@filename{}%
\ifx\pgf@imagepage\pgfutil@empty%
\else%
\expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3.page\pgf@imagepage}%
\fi%
\ifx\pgf@filename\pgfutil@empty%
\expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3}%
\else%
\pgfkeys{/pgf/images/page=}%
\fi%
\ifx\pgf@filename\pgfutil@empty%
\pgfwarning%
{File "#3" not found when defining image "#2".
Tried all extensions in "\pgfsys@imagesuffixlist"}%
\pgf@declaredraftimage{#2}{#3}%
\else%
\ifpgf@draftmode%
\pgf@declaredraftimage{#2}{#3}%
\else%
\pgfsys@defineimage%
\fi%
\fi%
\expandafter\global\expandafter\let\csname pgf@image@#2!\endcsname=\pgf@image%
}
\pgfkeys{
/pgf/images/draft/.is if=pgf@draftmode,
/pgf/images/draft/.default=true}
\pgfkeys{/pgf/images/width/.estore in=\pgf@imagewidth}
\pgfkeys{/pgf/images/height/.estore in=\pgf@imageheight}
\pgfkeys{/pgf/images/page/.estore in=\pgf@imagepage}
\pgfkeys{/pgf/images/interpolate/.cd,.code=\edef\pgf@imageinterpolate{#1},.default=true}
\let\pgf@imageinterpolate\pgfutil@empty
\pgfkeys{/pgf/images/mask/.code=%
{%
\edef\pgf@imagemask{#1}%
\ifx\pgf@imagemask\pgfutil@empty%
\else%
\pgfutil@ifundefined{pgf@mask@#1}%
{\pgferror{Undefined mask "#1".}%
\edef\pgf@imagemask{}}%
{\edef\pgf@imagemask{\csname pgf@mask@#1\endcsname}%
}%
\fi%
}}
\def\pgf@findfile#1:#2+#3{%
\pgfutil@IfFileExists{#3#1}%
{\xdef\pgf@filename{#3#1}}%
{\def\pgf@mightbeempty{#2}%
\ifx\pgf@mightbeempty\pgfutil@empty\else%
\pgf@findfile#2+{#3}%
\fi}}
\def\pgf@declaredraftimage#1#2{%
\ifx\pgf@imagewidth\pgfutil@empty%
\pgfwarning{Missing width for image "#1" ("#2") in draft mode. Using 1cm instead}%
\edef\pgf@imagewidth{1cm}%
\fi%
\ifx\pgf@imageheight\pgfutil@empty%
\pgfwarning{Missing height for image "#1" ("#2") in draft mode. Using 1cm instead}%
\edef\pgf@imageheight{1cm}%
\fi%
\ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepagetext{ page \pgf@imagepage}\fi%
\edef\pgf@image{%
\hbox to \pgf@imagewidth{%
\vrule\kern-0.4pt%
\vbox to \pgf@imageheight{%
\hrule\vfil%
\hbox to \pgf@imagewidth{\hskip-10cm\hfil\noexpand\pgfutil@font@tiny#2\pgf@imagepage\hfil\hskip-10cm}%
\vfil\hrule}%
\kern-0.4pt\vrule}%
}%
}
\def\pgfdeclaremask{\pgfutil@ifnextchar[\pgf@declaremask{\pgf@declaremask[]}}
\def\pgf@declaremask[#1]#2#3{%
\pgfqkeys{/pgf/images/mask}{matte={1 1 1},#1}%
\def\pgf@mask{}%
\gdef\pgf@filename{}%
\expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3}%
\ifx\pgf@filename\pgfutil@empty%
\pgfwarning%
{File "#3" not found when defining mask "#2".
Tried all extensions in "\pgfsys@imagesuffixlist"}%
\else%
\pgfsys@definemask%
\fi%
\expandafter\global\expandafter\let\csname pgf@mask@#2\endcsname=\pgf@mask%
}
\pgfkeys{/pgf/images/mask/matte/.cd,.estore in=\pgf@maskmatte,.value required}
\def\pgfaliasimage#1#2{%
\expandafter\global\expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@image@#2!\endcsname%
\expandafter\global\expandafter\let\csname pgf@image@#1!\endcsname=\pgf@temp%
}
\def\pgfuseimage#1{%
\def\pgf@imagename{pgf@image@#1}%
\pgf@tryextensions{\pgf@imagename}{\pgfalternateextension}%
\expandafter\pgfutil@ifundefined\expandafter{\pgf@imagename}%
{\pgferror{Undefined image "#1"}}%
{{\leavevmode\csname\pgf@imagename\endcsname}}}
\def\pgf@tryextensions#1#2{%
\edef\pgf@args{[#2!]}\expandafter\pgf@@tryextensions\pgf@args{#1}}
\def\pgf@@tryextensions[#1!#2]#3{%
\expandafter\pgfutil@ifundefined\expandafter{#3#1!#2}%
{\def\pgf@temp{#2}%
\ifx\pgf@temp\pgfutil@empty%
\edef#3{#3!}%
\else%
\pgf@@tryextensions[#2]{#3}%
\fi}%
{\edef#3{#3#1!#2}}}
\def\pgfalternateextension{}
\def\pgfimage{\pgfutil@ifnextchar[\pgf@imagecom{\pgf@imagecom[]}}
\def\pgf@imagecom[#1]#2{%
\pgfdeclareimage[#1]{pgflastimage}{#2}%
\pgfuseimage{pgflastimage}}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreimage.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorelayers.code.tex ====
\ProvidesFileRCS{pgfcorelayers.code.tex}
\def\pgfdeclarelayer#1{%
\pgfutil@ifundefined{pgf@layerbox@#1}{%
\expandafter\expandafter\csname pgf@newbox\endcsname\csname pgf@layerbox@#1\endcsname%
\expandafter\expandafter\csname pgf@newbox\endcsname\csname pgf@layerboxsaved@#1\endcsname%
}{}%
}
\let\pgf@newbox=\newbox %
\def\pgfsetlayers#1{%
\let\pgf@layerlist\pgfutil@empty%
\pgf@dosetlayer#1,,\relax%
}
\def\pgf@dosetlayer#1,#2,\relax{%
\ifx\pgf@layerlist\pgfutil@empty%
\edef\pgf@layerlist{\pgfutil@trimspaces{#1}}%
\else
\edef\pgf@layerlist{\pgf@layerlist,\pgfutil@trimspaces{#1}}%
\fi
\def\pgf@test{#2}%
\ifx\pgf@test\pgfutil@empty%
\else%
\pgf@dosetlayer#2,\relax%
\fi%
}
\pgfsetlayers{main}
\def\pgfonlayer@name{main}
\def\pgfonlayer#1{%
\pgfutil@ifundefined{pgf@layerbox@#1}{%
\pgferror{Sorry, the requested layer '#1' could not be found. Maybe you misspelled it?}%
\bgroup
\begingroup
}{%
\begingroup
\edef\pgf@temp{#1}%
\ifx\pgf@temp\pgfonlayer@name
\def\pgf@temp{%
\bgroup
\begingroup
}%
\else
\let\pgfonlayer@name=\pgf@temp
\pgfonlayer@assert@is@active
\def\pgf@temp{%
\expandafter\global\expandafter%
\setbox\csname pgf@layerbox@#1\endcsname=\hbox to 0pt%
\bgroup%
\expandafter\box\csname pgf@layerbox@#1\endcsname%
\begingroup%
}%
\fi
\pgfsetlinewidth{0.4pt}%
\pgf@temp
}%
}
\def\endpgfonlayer{%
\endgroup%
\hss
\egroup%
\endgroup
}
\let\startpgfonlayer=\pgfonlayer
\let\stoppgfonlayer=\endpgfonlayer
\def\pgfdiscardlayername{discard}
\def\pgfonlayer@assert@is@active{%
\ifx\pgfonlayer@name\pgfdiscardlayername
\else
\begingroup
\def\pgfonlayer@isactive{0}%
\expandafter\pgf@assert@layer@is@active@loop\pgf@layerlist,,\relax%
\if0\pgfonlayer@isactive
\pgfonlayer@assert@fail
\fi
\endgroup
\fi
}%
\def\pgfonlayer@assert@fail{%
\pgferror{Sorry, the requested layer '\pgfonlayer@name' is not
part of the layer list. Please verify that you provided
\string\pgfsetlayers\space and that '\pgfonlayer@name' is part of this list}%
}%
\def\pgf@assert@layer@is@active@loop#1,#2,\relax{%
\edef\pgf@test{#1}%
\ifx\pgf@test\pgfonlayer@name
\def\pgfonlayer@isactive{1}%
\else
\def\pgf@test{#2}%
\ifx\pgf@test\pgfutil@empty%
\else%
\pgf@assert@layer@is@active@loop#2,\relax%
\fi%
\fi
}
\def\pgf@insertlayers{%
\expandafter\pgf@dolayer\pgf@layerlist,,\relax%
}
\def\pgf@maintext{main}%
\def\pgf@dolayer#1,#2,\relax{%
\def\pgf@test{#1}%
\ifx\pgf@test\pgf@maintext%
\box\pgf@layerbox@main%
\else%
\pgfsys@beginscope%
\expandafter\box\csname pgf@layerbox@#1\endcsname%
\pgfsys@endscope%
\fi%
\def\pgf@test{#2}%
\ifx\pgf@test\pgfutil@empty%
\else%
\pgf@dolayer#2,\relax%
\fi%
}
\def\pgf@savelayers{%
\expandafter\pgf@dosavelayer\pgf@layerlist,,\relax%
}
\def\pgf@dosavelayer#1,#2,\relax{%
\def\pgf@test{#1}%
\ifx\pgf@test\pgf@maintext%
\else%
\setbox\csname pgf@layerboxsaved@#1\endcsname=\box\csname pgf@layerbox@#1\endcsname%
\fi%
\def\pgf@test{#2}%
\ifx\pgf@test\pgfutil@empty%
\else%
\pgf@dosavelayer#2,\relax%
\fi%
}
\def\pgf@restorelayers{%
\expandafter\pgf@dorestorelayer\pgf@layerlist,,\relax%
}
\def\pgf@dorestorelayer#1,#2,\relax{%
\def\pgf@test{#1}%
\ifx\pgf@test\pgf@maintext%
\else%
\global\setbox\csname pgf@layerbox@#1\endcsname=\box\csname pgf@layerboxsaved@#1\endcsname%
\fi%
\def\pgf@test{#2}%
\ifx\pgf@test\pgfutil@empty%
\else%
\pgf@dorestorelayer#2,\relax%
\fi%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorelayers.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreobjects.code.tex ====
\ProvidesFileRCS{pgfcoreobjects.code.tex}
\def\pgfdefobject#1#2#3#4{%
\pgfinterruptpath%
\pgf@relevantforpicturesizefalse%
\pgfsys@defobject{#1}{#2}{#3}{#4}%
\endpgfinterruptpath%
\ignorespaces%
}
\def\pgfuseobject#1{\pgfsys@beginscope\pgfsys@useobject{#1}{}\pgfsys@endscope}
\def\pgfuseobjectmagnify#1{%
\pgfsys@beginscope%
\pgfsys@useobject{#1}{\pgfsys@transformxyscale{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}}%
\pgfsys@endscope%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreobjects.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathconstruct.code.tex ====
\ProvidesFileRCS{pgfcorepathconstruct.code.tex}
\newdimen\pgf@path@lastx
\newdimen\pgf@path@lasty
\let\pgfgetpath=\pgfsyssoftpath@getcurrentpath
\let\pgfsetpath=\pgfsyssoftpath@setcurrentpath
\newif\ifpgf@arccorners
\def\pgfsetcornersarced#1{%
\pgf@process{#1}%
\edef\pgf@corner@arc{{\the\pgf@x}{\the\pgf@y}}%
\pgf@arccornerstrue%
\ifdim\pgf@x=0pt%
\ifdim\pgf@y=0pt\relax%
\pgf@arccornersfalse%
\fi%
\fi%
}
\def\pgf@roundcornerifneeded{%
\ifpgf@arccorners\expandafter\pgfsyssoftpath@specialround\pgf@corner@arc\fi%
}
\def\pgf@lt@moveto#1#2{%
\pgf@protocolsizes{#1}{#2}%
\pgfsyssoftpath@moveto{\the#1}{\the#2}%
}
\def\pgf@lt@lineto#1#2{%
\pgf@protocolsizes{#1}{#2}%
\pgfsyssoftpath@lineto{\the#1}{\the#2}%
}
\def\pgf@lt@curveto#1#2#3#4#5#6{%
\pgf@protocolsizes{#1}{#2}%
\pgf@protocolsizes{#3}{#4}%
\pgf@protocolsizes{#5}{#6}%
\pgfsyssoftpath@curveto{\the#1}{\the#2}{\the#3}{\the#4}{\the#5}{\the#6}%
}
\let\pgf@lt@closepath\pgfsyssoftpath@closepath
\let\pgf@nlt@moveto\pgf@lt@moveto
\let\pgf@nlt@lineto\pgf@lt@lineto
\let\pgf@nlt@curveto\pgf@lt@curveto
\let\pgf@nlt@closepath\pgf@lt@closepath
\let\pgf@nlt@list\pgfutil@empty %
\def\pgfpathmoveto#1{%
\pgfpointtransformed{#1}%
\pgf@nlt@moveto{\pgf@x}{\pgf@y}%
\global\pgf@path@lastx=\pgf@x%
\global\pgf@path@lasty=\pgf@y%
}
\def\pgf@protocolsizes#1#2{%
\ifpgf@relevantforpicturesize%
\ifdim#1<\pgf@picminx\global\pgf@picminx#1\fi%
\ifdim#1>\pgf@picmaxx\global\pgf@picmaxx#1\fi%
\ifdim#2<\pgf@picminy\global\pgf@picminy#2\fi%
\ifdim#2>\pgf@picmaxy\global\pgf@picmaxy#2\fi%
\ifpgf@size@hooked%
\let\pgf@size@hook@x#1\let\pgf@size@hook@y#2\pgf@path@size@hook%
\fi%
\fi%
\ifdim#1<\pgf@pathminx\global\pgf@pathminx#1\fi%
\ifdim#1>\pgf@pathmaxx\global\pgf@pathmaxx#1\fi%
\ifdim#2<\pgf@pathminy\global\pgf@pathminy#2\fi%
\ifdim#2>\pgf@pathmaxy\global\pgf@pathmaxy#2\fi%
}
\newif\ifpgf@size@hooked
\let\pgf@path@size@hook=\pgfutil@empty%
\def\pgf@resetpathsizes{%
\global\pgf@pathmaxx=-16000pt\relax%
\global\pgf@pathminx=16000pt\relax%
\global\pgf@pathmaxy=-16000pt\relax%
\global\pgf@pathminy=16000pt\relax%
}
\def\pgf@getpathsizes#1{%
\edef#1{{\the\pgf@pathmaxx}{\the\pgf@pathminx}{\the\pgf@pathmaxy}{\the\pgf@pathminy}}%
}
\def\pgf@setpathsizes#1{%
\expandafter\pgf@@setpathsizes#1%
}
\def\pgf@@setpathsizes#1#2#3#4{%
\global\pgf@pathmaxx=#1\relax%
\global\pgf@pathminx=#2\relax%
\global\pgf@pathmaxy=#3\relax%
\global\pgf@pathminy=#4\relax%
}
\def\pgfpathlineto#1{%
\pgfpointtransformed{#1}%
\pgf@roundcornerifneeded%
\pgf@nlt@lineto{\pgf@x}{\pgf@y}%
\global\pgf@path@lastx=\pgf@x%
\global\pgf@path@lasty=\pgf@y%
}
\def\pgfpathclose{%
\pgf@roundcornerifneeded%
\pgf@nlt@closepath%
}
\def\pgfpathcurveto#1#2#3{%
\pgfpointtransformed{#3}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgfpointtransformed{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgfpointtransformed{#1}%
\pgf@roundcornerifneeded%
\pgf@nlt@curveto{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}{\pgf@xb}{\pgf@yb}%
\global\pgf@path@lastx=\pgf@xb%
\global\pgf@path@lasty=\pgf@yb%
}
\def\pgfpathquadraticcurveto#1#2{%
\pgfpointtransformed{#2}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgfpointtransformed{#1}%
\pgf@xc=.6666666\pgf@x%
\pgf@yc=.6666666\pgf@y%
\pgf@xa=.33333333\pgf@xb%
\pgf@ya=.33333333\pgf@yb%
\advance\pgf@xa by\pgf@xc%
\advance\pgf@ya by\pgf@yc%
\advance\pgf@xc by.3333333\pgf@path@lastx%
\advance\pgf@yc by.3333333\pgf@path@lasty%
\pgf@roundcornerifneeded%
\pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@xa}{\pgf@ya}{\pgf@xb}{\pgf@yb}%
\global\pgf@path@lastx=\pgf@xb%
\global\pgf@path@lasty=\pgf@yb%
}
\def\pgfpatharc#1#2#3{%
{%
\pgfmathparse{#1}\let\pgf@temp@a=\pgfmathresult%
\pgfmathparse{#2}\let\pgf@temp@b=\pgfmathresult%
\pgfutil@in@{and }{#3}%
\ifpgfutil@in@%
\pgf@arc@get@radii#3\pgf@arc@stop%
\else
\pgf@arc@get@radii#3and #3\pgf@arc@stop%
\fi%
\pgf@arc@local@angle@a=\pgf@temp@a pt%
\pgf@arc@local@angle@b=\pgf@temp@b pt%
\loop%
\pgfutil@tempdima=\pgf@arc@local@angle@a%
\advance\pgfutil@tempdima by-\pgf@arc@local@angle@b\relax%
\ifdim\pgfutil@tempdima<0pt\relax%
\pgfutil@tempdima=-\pgfutil@tempdima\relax%
\fi%
\ifdim\pgfutil@tempdima>90pt\relax%
\ifdim\pgfutil@tempdima>115pt\relax%
\pgf@arc@temp=90pt%
\else%
\pgf@arc@temp=60pt%
\fi%
\ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
{%
\pgf@arc@local@angle@b=\pgf@arc@local@angle@a\relax%
\advance\pgf@arc@local@angle@b by\pgf@arc@temp\relax%
\pgf@arc%
}
\advance\pgf@arc@local@angle@a by\pgf@arc@temp\relax%
\else
{%
\pgf@arc@local@angle@b=\pgf@arc@local@angle@a\relax%
\advance\pgf@arc@local@angle@b by-\pgf@arc@temp\relax%
\pgf@arc%
}%
\advance\pgf@arc@local@angle@a by-\pgf@arc@temp\relax%
\fi%
\repeat%
\pgf@roundcornerifneeded%
\pgf@arc%
}%
}
\dimendef\pgf@arc@local@angle@a=0
\dimendef\pgf@arc@local@angle@b=1
\dimendef\pgf@arc@temp=2
\def\pgf@arc@get@radii#1and #2\pgf@arc@stop{%
\pgfmathparse{#1}\let\pgf@arc@radius@a=\pgfmathresult%
\pgfmathparse{#2}\let\pgf@arc@radius@b=\pgfmathresult%
}
\def\pgf@arc{%
{%
\pgfutil@tempdima=\pgf@arc@radius@a pt%
\pgfutil@tempdimb=\pgf@arc@radius@b pt%
\pgf@xa=\pgf@arc@local@angle@a\relax%
\pgf@xb=\pgf@arc@local@angle@b\relax%
\advance\pgf@xb by-\pgf@xa\relax%
\ifdim\pgf@xb<0pt\relax%
\pgf@xb=-\pgf@xb\relax%
\fi%
\ifdim\pgf@xb=90.0pt%
\def\pgfmathresult{0.55228475}%
\else%
\pgfmathparse{1.333333333*tan(.25*\pgf@sys@tonumber{\pgf@xb})}%
\fi%
\pgfutil@tempdima=\pgfmathresult\pgfutil@tempdima%
\pgfutil@tempdimb=\pgfmathresult\pgfutil@tempdimb%
\pgf@xa=\pgf@arc@local@angle@a\relax%
\ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
\advance\pgf@xa by 90pt\relax%
\else%
\advance\pgf@xa by -90pt\relax%
\fi%
\edef\pgf@arc@angle{\pgf@sys@tonumber{\pgf@xa}}%
\pgfpointtransformed{\pgfpointpolar{\pgf@arc@angle}{\pgfutil@tempdima and \pgfutil@tempdimb}}%
\advance\pgf@x by-\pgf@pt@x%
\advance\pgf@y by-\pgf@pt@y%
\pgf@xa=\pgf@path@lastx%
\pgf@ya=\pgf@path@lasty%
\advance\pgf@xa by \pgf@x%
\advance\pgf@ya by \pgf@y%
\pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@a}}{\pgf@arc@radius@a pt and \pgf@arc@radius@b pt}}%
\pgf@xb=\pgf@path@lastx%
\pgf@yb=\pgf@path@lasty%
\advance\pgf@xb by -\pgf@x%
\advance\pgf@yb by -\pgf@y%
\pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@b}}{\pgf@arc@radius@a pt and \pgf@arc@radius@b pt}}%
\advance\pgf@xb by \pgf@x%
\advance\pgf@yb by \pgf@y%
\ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
\advance\pgf@arc@local@angle@b by -90pt\relax%
\else%
\advance\pgf@arc@local@angle@b by 90pt\relax%
\fi%
\pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@b}}{\pgfutil@tempdima and \pgfutil@tempdimb}}%
\advance\pgf@x by-\pgf@pt@x%
\advance\pgf@y by-\pgf@pt@y%
\pgf@xc=\pgf@xb\relax%
\pgf@yc=\pgf@yb\relax%
\advance \pgf@xc by \pgf@x\relax%
\advance \pgf@yc by \pgf@y\relax%
\pgf@nlt@curveto{\pgf@xa}{\pgf@ya}{\pgf@xc}{\pgf@yc}{\pgf@xb}{\pgf@yb}%
\global\pgf@path@lastx=\pgf@xb%
\global\pgf@path@lasty=\pgf@yb%
}%
}
\def\pgfpatharcaxes#1#2#3#4{%
{%
\pgftransformtriangle{\pgfpointorigin}{#3}{#4}%
\pgfpatharc{#1}{#2}{1pt}%
}%
}
\def\pgfpatharcto#1#2#3#4#5#6{%
{%
\pgfmathsetmacro\pgf@arcto@rx{abs(#1)}%
\pgfmathsetmacro\pgf@arcto@ry{abs(#2)}%
\ifdim\pgf@arcto@rx pt=0pt%
\gdef\pgf@marshal{\pgfpathlineto{#6}}%
\else
\ifdim\pgf@arcto@ry pt=0pt%
\gdef\pgf@marshal{\pgfpathlineto{#6}}%
\else
\pgfmathsetmacro\pgf@arcto@phi{#3}%
\pgfmathsetmacro\pgf@arcto@fA{#4}%
\ifdim\pgf@arcto@fA pt=0pt
\else
\pgfmathsetmacro\pgf@arcto@fA{1.0} %
\fi
\pgfmathsetmacro\pgf@arcto@fS{#5}%
\ifdim\pgf@arcto@fS pt=0pt
\else
\pgfmathsetmacro\pgf@arcto@fS{1.0} %
\fi
\pgf@process{#6}
\edef\pgf@arcto@xb{\the\pgf@x}%
\edef\pgf@arcto@yb{\the\pgf@y}%
\pgftransforminvert%
\pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@path@lastx}{\pgf@path@lasty}}}
\edef\pgf@arcto@xa{\the\pgf@x}
\edef\pgf@arcto@ya{\the\pgf@y}
\edef\pgf@temp@a{\pgf@arcto@xa,\pgf@arcto@ya}
\edef\pgf@temp@b{\pgf@arcto@xb,\pgf@arcto@yb}
\ifx\pgf@temp@a\pgf@temp@b%
\global\let\pgf@marshal\pgfutil@empty
\else
\pgftransformreset
\pgftransformrotate{-\pgf@arcto@phi}
\pgf@process{
\pgfpointtransformed{\pgfpointscale{.5}{\pgfpointdiff
{\pgfqpoint{\pgf@arcto@xb}{\pgf@arcto@yb}}
{\pgfqpoint{\pgf@arcto@xa}{\pgf@arcto@ya}}
}
}
}
\edef\pgf@arcto@xaprime{\pgf@sys@tonumber\pgf@x}
\edef\pgf@arcto@yaprime{\pgf@sys@tonumber\pgf@y}
\pgfmathsetmacro\pgf@arcto@frac@x{\pgf@arcto@xaprime/\pgf@arcto@rx}
\pgfmathsetmacro\pgf@arcto@frac@y{\pgf@arcto@yaprime/\pgf@arcto@ry}
\pgfmathsetmacro\pgf@arcto@lambda{
\pgf@arcto@frac@x*\pgf@arcto@frac@x+\pgf@arcto@frac@y*\pgf@arcto@frac@y
}
\ifdim\pgf@arcto@lambda pt>1pt%
\pgfmathsetmacro\pgf@arcto@sqrt@lambda{sqrt(\pgf@arcto@lambda)}
\pgfmathsetmacro\pgf@arcto@rx{\pgf@arcto@sqrt@lambda*\pgf@arcto@rx}
\pgfmathsetmacro\pgf@arcto@ry{\pgf@arcto@sqrt@lambda*\pgf@arcto@ry}
\fi
\pgfmathsetmacro\pgf@arcto@xaprime@abs{abs(\pgf@arcto@xaprime)}
\pgfmathsetmacro\pgf@arcto@yaprime@abs{abs(\pgf@arcto@yaprime)}
\pgfmathmax@{\pgf@arcto@rx,\pgf@arcto@ry,\pgf@arcto@xaprime@abs,\pgf@arcto@yaprime@abs}
\pgfmathsetmacro\pgf@arcto@scaling{20/\pgfmathresult}
\pgfmathsetmacro\pgf@arcto@rx@scaled{\pgf@arcto@scaling*\pgf@arcto@rx}
\pgfmathsetmacro\pgf@arcto@ry@scaled{\pgf@arcto@scaling*\pgf@arcto@ry}
\pgfmathsetmacro\pgf@arcto@xaprime@scaled{\pgf@arcto@scaling*\pgf@arcto@xaprime}
\pgfmathsetmacro\pgf@arcto@yaprime@scaled{\pgf@arcto@scaling*\pgf@arcto@yaprime}
\ifdim\pgf@arcto@rx pt>\pgf@arcto@ry pt%
\pgfmathsetmacro\pgf@arcto@rx@over@ry{\pgf@arcto@rx/\pgf@arcto@ry}
\pgfmathsetmacro\pgf@arcto@ry@over@rx{\pgf@arcto@ry/\pgf@arcto@rx}
\pgfmathsetmacro\pgf@arcto@temp{\pgf@arcto@ry@over@rx*\pgf@arcto@xaprime@scaled}
\pgfmathsetmacro\pgf@arcto@numerator{
\pgf@arcto@ry@scaled*\pgf@arcto@ry@scaled-
\pgf@arcto@yaprime@scaled*\pgf@arcto@yaprime@scaled-
\pgf@arcto@temp*\pgf@arcto@temp
}
\pgfmathsetmacro\pgf@arcto@denominator{
\pgf@arcto@yaprime@scaled*\pgf@arcto@yaprime@scaled+
\pgf@arcto@temp*\pgf@arcto@temp
}
\else
\pgfmathsetmacro\pgf@arcto@rx@over@ry{\pgf@arcto@rx/\pgf@arcto@ry}
\pgfmathsetmacro\pgf@arcto@ry@over@rx{\pgf@arcto@ry/\pgf@arcto@rx}
\pgfmathsetmacro\pgf@arcto@temp{\pgf@arcto@rx@over@ry*\pgf@arcto@yaprime@scaled}
\pgfmathsetmacro\pgf@arcto@numerator{
\pgf@arcto@rx@scaled*\pgf@arcto@rx@scaled-
\pgf@arcto@xaprime@scaled*\pgf@arcto@xaprime@scaled-
\pgf@arcto@temp*\pgf@arcto@temp
}
\pgfmathsetmacro\pgf@arcto@denominator{
\pgf@arcto@xaprime@scaled*\pgf@arcto@xaprime@scaled+
\pgf@arcto@temp*\pgf@arcto@temp
}
\fi
\pgfmathsetmacro\pgf@arcto@frac{
\pgf@arcto@numerator/\pgf@arcto@denominator
}
\ifdim\pgf@arcto@frac pt<0pt
\pgfmathsetmacro\pgf@arcto@factor{0}
\else
\pgfmathsetmacro\pgf@arcto@factor{sqrt(\pgf@arcto@frac)}
\fi
\ifx\pgf@arcto@fA\pgf@arcto@fS
\pgfmathsetmacro\pgf@arcto@factor{-\pgf@arcto@factor}
\fi
\pgfmathsetmacro\pgf@arcto@cxprime{
\pgf@arcto@factor*\pgf@arcto@rx@over@ry*\pgf@arcto@yaprime
}
\pgfmathsetmacro\pgf@arcto@cyprime{
-\pgf@arcto@factor*\pgf@arcto@ry@over@rx*\pgf@arcto@xaprime
}
\pgftransformreset
\pgftransformrotate{\pgf@arcto@phi}
\pgf@process{
\pgfpointtransformed{\pgfqpoint{\pgf@arcto@cxprime pt}{\pgf@arcto@cyprime pt}}
}
\edef\pgf@arcto@temp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
\pgf@process{\pgfpointadd{\pgf@arcto@temp}{
\pgfpointscale{.5}{
\pgfpointadd
{\pgfqpoint{\pgf@arcto@xa}{\pgf@arcto@ya}}
{\pgfqpoint{\pgf@arcto@xb}{\pgf@arcto@yb}} }
}
}
\edef\pgf@arcto@cx{\the\pgf@x}
\edef\pgf@arcto@cy{\the\pgf@y}
\pgfmathsetmacro\pgf@arcto@vec@x{(\pgf@arcto@xaprime-\pgf@arcto@cxprime)/\pgf@arcto@rx}
\pgfmathsetmacro\pgf@arcto@vec@y{(\pgf@arcto@yaprime-\pgf@arcto@cyprime)/\pgf@arcto@ry}
\pgfmathsetmacro\pgf@arcto@denominator{veclen(\pgf@arcto@vec@x,\pgf@arcto@vec@y)}
\pgfmathsetmacro\pgf@arcto@frac{\pgf@arcto@vec@x/\pgf@arcto@denominator}
\pgfmathsetmacro\pgf@arcto@theta@start{acos(\pgf@arcto@frac)}
\ifdim\pgf@arcto@vec@y pt<0pt
\pgfmathsetmacro\pgf@arcto@theta@start{-\pgf@arcto@theta@start}
\fi
\pgfmathsetmacro\pgf@arcto@vec@x{(-\pgf@arcto@xaprime-\pgf@arcto@cxprime)/\pgf@arcto@rx}
\pgfmathsetmacro\pgf@arcto@vec@y{(-\pgf@arcto@yaprime-\pgf@arcto@cyprime)/\pgf@arcto@ry}
\pgfmathsetmacro\pgf@arcto@denominator{veclen(\pgf@arcto@vec@x,\pgf@arcto@vec@y)}
\pgfmathsetmacro\pgf@arcto@frac{\pgf@arcto@vec@x/\pgf@arcto@denominator}
\pgfmathsetmacro\pgf@arcto@theta@end{acos(\pgf@arcto@frac)}
\ifdim\pgf@arcto@vec@y pt<0pt
\pgfmathsetmacro\pgf@arcto@theta@end{-\pgf@arcto@theta@end}
\fi
\pgfmathsetmacro\pgf@arcto@delta@theta{abs(\pgf@arcto@theta@start-\pgf@arcto@theta@end)}
\ifdim\pgf@arcto@fA pt=0pt%
\ifdim\pgf@arcto@delta@theta pt>180pt%
\ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt
\pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}
\else
\pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}
\fi
\fi
\else
\ifdim\pgf@arcto@delta@theta pt<180pt%
\ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt
\pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}
\else
\pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}
\fi
\fi
\fi
\xdef\pgf@marshal{\noexpand
\pgfpatharcaxes{\pgf@arcto@theta@start}{\pgf@arcto@theta@end}
{\noexpand\pgfpointpolar{\pgf@arcto@phi}{\pgf@arcto@rx}}
{\noexpand\pgfpointpolar{\pgf@arcto@phi+90}{\pgf@arcto@ry}}
}
\fi\fi\fi
}
\pgf@marshal
}
\def\pgfpatharctomaxstepsize{45}
\def\pgfpatharctoprecomputed#1#2#3#4#5#6#7#8{%
\begingroup
\pgf@process{#1}%
\edef\pgfpath@center@x{\the\pgf@x}%
\edef\pgfpath@center@y{\the\pgf@y}%
\def\pgfpath@completearcend{#4}%
\pgf@xa=#2pt
\pgf@xb=#3pt
\edef\pgfpath@startangle{#2pt}%
\edef\pgfpath@endangle{\pgf@sys@tonumber\pgf@xb}%
\pgf@ya=\pgf@xb
\advance\pgf@ya by-\pgf@xa
\ifx\pgfpatharctomaxstepsize\pgfutil@empty
\def\pgfpath@N{1}%
\pgf@xc=\pgf@ya
\else
\pgf@xc=\pgf@ya%
\ifdim\pgf@xc<0pt
\multiply\pgf@xc by-1
\fi
\divide\pgf@xc by\pgfpatharctomaxstepsize\relax
\afterassignment\pgfutil@gobble@until@relax
\c@pgf@counta=\the\pgf@xc\relax
\advance\c@pgf@counta by1
\edef\pgfpath@N{\the\c@pgf@counta}%
\pgf@xc=\pgf@ya
\divide\pgf@xc by\c@pgf@counta
\fi
\edef\pgfpath@h{\pgf@sys@tonumber\pgf@xc}%
\pgf@xc=0.116355283466289\pgf@xc %
\divide\pgf@xc by20
\pgf@xa=#7\pgf@xc
\edef\pgfpath@scale@A{\pgf@sys@tonumber\pgf@xa}%
\pgf@xa=#8\pgf@xc
\edef\pgfpath@scale@B{\pgf@sys@tonumber\pgf@xa}%
\c@pgf@countd=1
\pgfutil@loop
\ifnum\c@pgf@countd<\pgfpath@N\relax
\pgf@xa=\pgfpath@startangle %
\pgf@xb=\pgfpath@h pt
\multiply\pgf@xb by\c@pgf@countd
\advance\pgf@xa by\pgf@xb
\edef\pgfpath@angle@i{\pgf@sys@tonumber\pgf@xa}%
\pgfpatharcofellipse@{%
\pgfpoint
{\pgfpath@center@x + #5*cos(\pgfpath@angle@i)}
{\pgfpath@center@y + #6*sin(\pgfpath@angle@i)}%
}%
\advance\c@pgf@countd by1
\pgfutil@repeat
\pgfpatharcofellipse@{\pgfpath@completearcend}%
\endgroup
}%
\def\pgfpatharcofellipse@#1{%
\begingroup
\pgf@process{#1}%
\edef\pgfpath@endpt{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
\pgfpathcurveto{
\begingroup
\global\pgf@x=\pgf@path@lastx
\global\pgf@y=\pgf@path@lasty
\pgf@xa=\pgf@x \advance\pgf@xa by-\pgfpath@center@x
\pgf@ya=\pgf@y \advance\pgf@ya by-\pgfpath@center@y
\global\advance\pgf@x by-\pgfpath@scale@A\pgf@ya
\global\advance\pgf@y by \pgfpath@scale@B\pgf@xa
\endgroup
}{%
\begingroup
\pgfpath@endpt
\pgf@xa=\pgf@x \advance\pgf@xa by-\pgfpath@center@x
\pgf@ya=\pgf@y \advance\pgf@ya by-\pgfpath@center@y
\global\advance\pgf@x by \pgfpath@scale@A\pgf@ya
\global\advance\pgf@y by-\pgfpath@scale@B\pgf@xa
\endgroup
}{%
\pgfpath@endpt
}%
\endgroup
}
\def\pgfpathellipse#1#2#3{%
\pgfpointtransformed{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgfpointtransformed{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\advance\pgf@xa by-\pgf@pt@x%
\advance\pgf@ya by-\pgf@pt@y%
\pgfpointtransformed{#3}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\advance\pgf@xb by-\pgf@pt@x%
\advance\pgf@yb by-\pgf@pt@y%
{%
\advance\pgf@xa by\pgf@xc%
\advance\pgf@ya by\pgf@yc%
\pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
}%
\pgf@x=0.55228475\pgf@xb%
\pgf@y=0.55228475\pgf@yb%
\advance\pgf@x by\pgf@xa%
\advance\pgf@y by\pgf@ya%
\advance\pgf@x by\pgf@xc%
\advance\pgf@y by\pgf@yc%
\edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
\pgf@x=0.55228475\pgf@xa%
\pgf@y=0.55228475\pgf@ya%
\advance\pgf@x by\pgf@xb%
\advance\pgf@y by\pgf@yb%
{%
\advance\pgf@x by\pgf@xc%
\advance\pgf@y by\pgf@yc%
\advance\pgf@xb by\pgf@xc%
\advance\pgf@yb by\pgf@yc%
\pgf@temp%
\pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xb}{\pgf@yb}%
}%
\pgf@xa=-\pgf@xa%
\pgf@ya=-\pgf@ya%
\pgf@x=0.55228475\pgf@xa%
\pgf@y=0.55228475\pgf@ya%
\advance\pgf@x by\pgf@xb%
\advance\pgf@y by\pgf@yb%
\advance\pgf@x by\pgf@xc%
\advance\pgf@y by\pgf@yc%
\edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
\pgf@x=0.55228475\pgf@xb%
\pgf@y=0.55228475\pgf@yb%
\advance\pgf@x by\pgf@xa%
\advance\pgf@y by\pgf@ya%
{%
\advance\pgf@x by\pgf@xc%
\advance\pgf@y by\pgf@yc%
\advance\pgf@xa by\pgf@xc%
\advance\pgf@ya by\pgf@yc%
\pgf@temp%
\pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}%
}%
\pgf@xb=-\pgf@xb%
\pgf@yb=-\pgf@yb%
\pgf@x=0.55228475\pgf@xb%
\pgf@y=0.55228475\pgf@yb%
\advance\pgf@x by\pgf@xa%
\advance\pgf@y by\pgf@ya%
\advance\pgf@x by\pgf@xc%
\advance\pgf@y by\pgf@yc%
\edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
\pgf@x=0.55228475\pgf@xa%
\pgf@y=0.55228475\pgf@ya%
\advance\pgf@x by\pgf@xb%
\advance\pgf@y by\pgf@yb%
{%
\advance\pgf@x by\pgf@xc%
\advance\pgf@y by\pgf@yc%
\advance\pgf@xb by\pgf@xc%
\advance\pgf@yb by\pgf@yc%
\pgf@temp%
\pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xb}{\pgf@yb}%
}%
\pgf@xa=-\pgf@xa%
\pgf@ya=-\pgf@ya%
\pgf@x=0.55228475\pgf@xa%
\pgf@y=0.55228475\pgf@ya%
\advance\pgf@x by\pgf@xb%
\advance\pgf@y by\pgf@yb%
\advance\pgf@x by\pgf@xc%
\advance\pgf@y by\pgf@yc%
\edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
\pgf@x=0.55228475\pgf@xb%
\pgf@y=0.55228475\pgf@yb%
\advance\pgf@x by\pgf@xa%
\advance\pgf@y by\pgf@ya%
{%
\advance\pgf@x by\pgf@xc%
\advance\pgf@y by\pgf@yc%
\advance\pgf@xa by\pgf@xc%
\advance\pgf@ya by\pgf@yc%
\pgf@temp%
\pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}%
}%
\pgf@nlt@closepath%
\pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
}
\def\pgfpathcircle#1#2{\pgfpathellipse{#1}{\pgfpoint{#2}{0pt}}{\pgfpoint{0pt}{#2}}}
\def\pgfpathrectangle{%
\let\pgfrect@next=\pgf@specialrect%
\ifpgf@pt@identity%
\ifpgf@arccorners%
\else%
\ifx\pgf@nlt@list\pgfutil@empty%
\let\pgfrect@next=\pgf@normalrect%
\fi%
\fi%
\fi%
\pgfrect@next%
}
\def\pgf@normalrect#1#2{%
\pgf@process{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgfpointtransformed{#1}%
\pgfsyssoftpath@rect{\the\pgf@x}{\the\pgf@y}{\the\pgf@xa}{\the\pgf@ya}%
\pgf@protocolsizes{\pgf@x}{\pgf@y}%
\advance\pgf@x by\pgf@xa\relax%
\advance\pgf@y by\pgf@ya\relax%
\pgf@protocolsizes{\pgf@x}{\pgf@y}%
}
\def\pgf@specialrect#1#2{%
\pgf@process{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#1}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\advance\pgf@xa by\pgf@xb%
\advance\pgf@ya by\pgf@yb%
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@ya}}%
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
\pgfpathclose%
\pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
}
\def\pgfpathrectanglecorners#1#2{%
\pgf@process{#2}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@process{#1}%
\advance\pgf@xc by-\pgf@x%
\advance\pgf@yc by-\pgf@y%
\pgfpathrectangle{#1}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}
\pgfkeys{
/pgf/stepx/.initial=1cm,
/pgf/stepy/.initial=1cm,
/pgf/step/.code={\pgf@process{#1}\pgfkeysalso{/pgf/stepx/.expanded=\the\pgf@x,/pgf/stepy/.expanded=\the\pgf@y}},
/pgf/step/.value required
}
\def\pgfpathgrid{\pgfutil@ifnextchar[{\pgf@pathgrid}{\pgf@pathgrid[]}}
\def\pgf@pathgrid[#1]#2#3{%
\pgfset{#1}%
\pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/stepx}}%
\pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/stepy}}%
\pgf@process{#3}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\ifdim\pgf@xa>\pgf@xb%
\pgf@x=\pgf@xb%
\pgf@xb=\pgf@xa%
\pgf@xa=\pgf@x%
\fi%
\ifdim\pgf@ya>\pgf@yb%
\pgf@y=\pgf@yb%
\pgf@yb=\pgf@ya%
\pgf@ya=\pgf@y%
\fi%
\ifdim \pgf@yc > .01pt\relax%
\c@pgf@counta=\pgf@ya\relax%
\c@pgf@countb=\pgf@yc\relax%
\divide\c@pgf@counta by\c@pgf@countb\relax%
\pgfutil@tempdima=\c@pgf@counta\pgf@yc\relax%
\ifdim\pgfutil@tempdima<\pgf@ya%
\advance\pgfutil@tempdima by\pgf@yc%
\fi%
\pgfutil@tempdimb\pgf@x
\pgfutil@loop%
{%
\pgf@xa=\pgfutil@tempdimb%
\pgf@ya=\pgfutil@tempdima%
\pgf@pos@transform{\pgf@xa}{\pgf@ya}
\pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
\pgf@xa=\pgf@xb%
\pgf@ya=\pgfutil@tempdima%
\pgf@pos@transform{\pgf@xa}{\pgf@ya}
\pgf@nlt@lineto{\pgf@xa}{\pgf@ya}%
}%
\advance\pgfutil@tempdima by\pgf@yc%
\ifdim\pgfutil@tempdima<\pgf@yb%
\pgfutil@repeat%
\advance\pgfutil@tempdima by-0.01pt\relax%
\ifdim\pgfutil@tempdima<\pgf@yb%
{%
\pgf@xa=\pgfutil@tempdimb%
\pgf@ya=\pgfutil@tempdima%
\pgf@pos@transform{\pgf@xa}{\pgf@ya}
\pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
\pgf@xa=\pgf@xb%
\pgf@ya=\pgfutil@tempdima%
\pgf@pos@transform{\pgf@xa}{\pgf@ya}
\pgf@nlt@lineto{\pgf@xa}{\pgf@ya}%
}%
\fi%
\fi%
\ifdim \pgf@xc > .01pt\relax%
\c@pgf@counta=\pgf@xa\relax%
\c@pgf@countb=\pgf@xc\relax%
\divide\c@pgf@counta by\c@pgf@countb\relax%
\pgfutil@tempdimb=\c@pgf@counta\pgf@xc\relax%
\ifdim\pgfutil@tempdimb<\pgf@xa%
\advance\pgfutil@tempdimb by\pgf@xc%
\fi%
\pgfutil@loop%
{%
\pgf@xc=\pgfutil@tempdimb%
\pgf@yc=\pgf@ya%
\pgf@pos@transform{\pgf@xc}{\pgf@yc}
\pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
\pgf@xc=\pgfutil@tempdimb%
\pgf@yc=\pgf@yb%
\pgf@pos@transform{\pgf@xc}{\pgf@yc}
\pgf@nlt@lineto{\pgf@xc}{\pgf@yc}%
}%
\advance\pgfutil@tempdimb by\pgf@xc%
\ifdim\pgfutil@tempdimb<\pgf@xb%
\pgfutil@repeat%
\advance\pgfutil@tempdimb by-0.01pt\relax%
\ifdim\pgfutil@tempdimb<\pgf@xb%
{%
\pgf@xc=\pgfutil@tempdimb%
\pgf@yc=\pgf@ya%
\pgf@pos@transform{\pgf@xc}{\pgf@yc}
\pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
\pgf@xc=\pgfutil@tempdimb%
\pgf@yc=\pgf@yb%
\pgf@pos@transform{\pgf@xc}{\pgf@yc}
\pgf@nlt@lineto{\pgf@xc}{\pgf@yc}%
}%
\fi%
\fi%
\pgf@process{#3}%
\pgf@pos@transform{\pgf@x}{\pgf@y}%
\pgf@nlt@moveto{\pgf@x}{\pgf@y}%
}
\def\pgfpathparabola#1#2{%
{%
\pgf@process{#2}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgfutil@tempswatrue%
\ifdim\pgf@xb=0pt\relax%
\ifdim\pgf@yb=0pt\relax%
\pgfutil@tempswafalse%
\fi%
\fi%
{%
\ifpgfutil@tempswa%
\pgf@arccornersfalse
\else%
\fi%
\pgfutil@tempswatrue%
\ifdim\pgf@xc=0pt\relax%
\ifdim\pgf@yc=0pt\relax%
\pgfutil@tempswafalse%
\fi%
\fi%
\ifpgfutil@tempswa
{%
\pgf@pt@x=\pgf@path@lastx%
\pgf@pt@y=\pgf@path@lasty%
\pgfpathcurveto%
{\pgfqpoint{.1125\pgf@xc}{.225\pgf@yc}}%
{\pgfqpoint{.5\pgf@xc}{\pgf@yc}}%
{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}%
\fi%
}%
\ifpgfutil@tempswa%
\pgf@xc=\pgf@xb%
\pgf@yc=\pgf@yb%
{%
\pgf@pt@x=\pgf@path@lastx%
\pgf@pt@y=\pgf@path@lasty%
\pgfpathcurveto%
{\pgfqpoint{.5\pgf@xc}{0\pgf@yc}}%
{\pgfqpoint{.8875\pgf@xc}{.775\pgf@yc}}%
{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}%
\fi%
}%
}
\def\pgfpathsine#1{%
{%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@pt@x=\pgf@path@lastx%
\pgf@pt@y=\pgf@path@lasty%
\pgfpathcurveto%
{\pgfqpoint{.3260\pgf@xc}{.5120\pgf@yc}}%
{\pgfqpoint{.6380\pgf@xc}{\pgf@yc}}%
{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}%
}
\def\pgfpathcosine#1{%
{%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@pt@x=\pgf@path@lastx%
\pgf@pt@y=\pgf@path@lasty%
\pgfpathcurveto%
{\pgfqpoint{.3620\pgf@xc}{0pt}}%
{\pgfqpoint{.6740\pgf@xc}{.4880\pgf@yc}}%
{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}%
}
\def\pgfpathcurvebetweentime{\pgf@ignoremovetofalse\pgf@@pathcurvebetweentime}
\def\pgfpathcurvebetweentimecontinue{\pgf@ignoremovetotrue\pgf@@pathcurvebetweentime}
\newif\ifpgf@ignoremoveto
\def\pgf@@pathcurvebetweentime#1#2#3#4#5#6{%
\pgfmathparse{#1}%
\let\pgf@time@s=\pgfmathresult%
\pgfmathparse{#2}%
\let\pgf@time@t=\pgfmathresult%
\ifdim\pgf@time@s pt>\pgf@time@t pt\relax%
\pgfmathsetmacro\pgf@time@s{1-#1}%
\pgfmathsetmacro\pgf@time@t{1-#2}%
\pgf@@@pathcurvebetweentime{\pgf@time@t}{#6}{#5}{#4}{#3}%
\else%
\pgf@@@pathcurvebetweentime{\pgf@time@t}{#3}{#4}{#5}{#6}%
\fi%
}
\def\pgf@@@pathcurvebetweentime#1#2#3#4#5{%
\pgf@process{#2}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@process{%
\pgf@process{#3}%
\pgf@xa=#1\pgf@x%
\pgf@ya=#1\pgf@y%
\pgf@process{#2}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\advance\pgf@x by-#1\pgf@xb%
\advance\pgf@y by-#1\pgf@yb%
\advance\pgf@x by\pgf@xa%
\advance\pgf@y by\pgf@ya%
}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{%
\pgf@process{#4}%
\pgf@xa=#1\pgf@x%
\pgf@ya=#1\pgf@y%
\pgf@process{#3}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\advance\pgf@xc by-#1\pgf@x%
\advance\pgf@yc by-#1\pgf@y%
\pgf@x=\pgf@xb%
\pgf@y=\pgf@yb%
\advance\pgf@x by#1\pgf@xa%
\advance\pgf@y by#1\pgf@ya%
\advance\pgf@x by-#1\pgf@xb%
\advance\pgf@y by-#1\pgf@yb%
\advance\pgf@x by#1\pgf@xc%
\advance\pgf@y by#1\pgf@yc%
}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgfpointcurveattime{#1}{#2}{#3}{#4}{#5}}%
\ifx#1\pgf@time@t%
\pgfmathdivide@{\pgf@time@s}{\pgf@time@t}%
\pgfmathadd@{-\pgfmathresult}{1}%
\let\pgf@time@s=\pgfmathresult%
\edef\pgf@marshal{%
\noexpand\pgf@@@pathcurvebetweentime{\noexpand\pgf@time@s}%
{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%
\else%
\ifpgf@ignoremoveto%
\edef\pgf@marshal{%
\noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%
\else%
\edef\pgf@marshal{%
\noexpand\pgfpathmoveto{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%
\fi%
\fi%
\pgf@marshal%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathconstruct.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathprocessing.code.tex ====
\ProvidesFileRCS{pgfcorepathprocessing.code.tex}
\def\pgfprocesssplitpath#1{%
\let\pgfprocessresultpathprefix\pgfutil@empty%
\let\pgfprocessresultpathsuffix\pgfutil@empty%
\let\pgf@next\pgf@process@split%
\expandafter\pgf@process@split#1\pgfsyssoftpath@movetotoken{}{}\pgf@stop%
}
\def\pgf@process@split#1\pgfsyssoftpath@movetotoken#2#3#4{%
\ifx#4\pgf@stop%
\expandafter\def\expandafter\pgfprocessresultpathsuffix\expandafter{\pgfprocessresultpathsuffix#1}%
\let\pgf@next\pgfutil@gobble%
\else%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\pgfprocessresultpathprefix%
\expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix#1}%
\def\pgfprocessresultpathsuffix{\pgfsyssoftpath@movetotoken{#2}{#3}}%
\fi%
\pgf@next#4%
}
\def\pgfprocesssplitsubpath#1{%
\let\pgf@tempa\pgfutil@emtpy%
\let\pgf@tempb\pgfutil@emtpy%
\let\pgf@tempc\pgfutil@emtpy%
\let\pgf@tempd\pgfutil@emtpy%
\let\pgfprocessresultsubpathprefix\pgfutil@empty%
\let\pgfprocessresultsubpathsuffix\pgfutil@empty%
\let\pgf@next\pgf@split@subpath%
\expandafter\pgf@split@subpath#1\pgf@stop%
}
\newif\ifpgf@split@move
\def\pgf@split@subpath#1#2#3#4{%
\ifx#4\pgf@stop%
\expandafter\def\expandafter\pgfprocessresultsubpathsuffix\expandafter{\pgfprocessresultsubpathsuffix#1{#2}{#3}}%
\let\pgf@next\pgfutil@gobble%
\else%
\pgf@split@movetrue%
\ifx#1\pgfsyssoftpath@curvetosupportatoken%
\pgf@split@movefalse%
\else
\ifx#1\pgfsyssoftpath@curvetosupportbtoken%
\pgf@split@movefalse%
\fi%
\fi%
\ifpgf@split@move%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\pgfprocessresultsubpathprefix%
\expandafter\expandafter\expandafter{%
\expandafter\pgfprocessresultsubpathprefix\pgfprocessresultsubpathsuffix}%
\def\pgfprocessresultsubpathsuffix{#1{#2}{#3}}%
\else%
\expandafter\def\expandafter\pgfprocessresultsubpathsuffix\expandafter{\pgfprocessresultsubpathsuffix#1{#2}{#3}}%
\fi%
\fi%
\pgf@next#4%
}
\def\pgfprocesspathextractpoints#1{%
\ifx#1\pgfutil@empty%
\let\pgfpointfirstonpath=\pgfpointorigin%
\let\pgfpointsecondonpath=\pgfpointorigin%
\let\pgfpointsecondlastonpath=\pgfpointorigin%
\let\pgfpointlastonpath=\pgfpointorigin%
\else%
\expandafter\pgf@extractprocessorfirst#1\pgf@stop%
\fi%
}
\def\pgf@extractprocessorfirst#1#2#3#4{%
\def\pgfpointfirstonpath{\pgfqpoint{#2}{#3}}%
\ifx#4\pgf@stop%
\let\pgfpointsecondonpath=\pgfpointfirstonpath%
\let\pgfpointsecondlastonpath=\pgfpointfirstonpath%
\let\pgfpointlastonpath=\pgfpointfirstonpath%
\let\next=\pgfutil@gobble%
\else
\let\next=\pgf@extractprocessorsecond%
\fi%
\next#4%
}
\def\pgf@extractprocessorsecond#1{%
\ifx#1\pgfsyssoftpath@movetotoken%
\let\pgf@next=\pgf@extractprocessorfirst%
\else%
\let\pgf@next=\pgf@@extractprocessorsecond%
\fi%
\pgf@next#1%
}
\def\pgf@@extractprocessorsecond#1#2#3#4{%
\def\pgfpointsecondonpath{\pgfqpoint{#2}{#3}}%
\let\pgfpointsecondlastonpath=\pgfpointfirstonpath%
\let\pgfpointlastonpath=\pgfpointsecondonpath%
\ifx#4\pgf@stop%
\let\next=\pgfutil@gobble%
\else
\let\next=\pgf@extractprocessorother%
\fi%
\next#4%
}
\def\pgf@extractprocessorother#1{%
\ifx#1\pgfsyssoftpath@movetotoken%
\let\pgf@next=\pgf@extractprocessorfirst%
\else%
\let\pgf@next=\pgf@@extractprocessorother%
\fi%
\pgf@next#1%
}
\def\pgf@@extractprocessorother#1#2#3#4{%
\let\pgfpointsecondlastonpath=\pgfpointlastonpath%
\def\pgfpointlastonpath{\pgfqpoint{#2}{#3}}%
\ifx#4\pgf@stop%
\let\next=\pgfutil@gobble%
\fi%
\next#4%
}
\def\pgfprocesscheckclosed#1#2{%
{%
\global\let\pgf@proc@todo=\relax%
\let\pgfsyssoftpath@movetotoken=\pgfutil@gobbletwo%
\let\pgfsyssoftpath@linetotoken=\pgfutil@gobbletwo%
\let\pgfsyssoftpath@curvetosupportatoken=\pgfutil@gobbletwo%
\let\pgfsyssoftpath@curvetosupportbtoken=\pgfutil@gobbletwo%
\let\pgfsyssoftpath@curvetotoken=\pgfutil@gobbletwo%
\def\pgfsyssoftpath@rectcornertoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
\def\pgfsyssoftpath@rectsizetoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
\def\pgfsyssoftpath@closepathtoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
#1%
}%
\pgf@proc@todo%
}
\def\pgfprocessround#1#2{%
\expandafter\pgf@processroundcheck\expandafter#1\expandafter#2#1\pgfsyssoftpath@specialroundtoken\pgf@stop%
}
\def\pgf@processroundcheck#1#2#3\pgfsyssoftpath@specialroundtoken#4\pgf@stop{%
\def\pgf@test{#4}%
\ifx\pgf@test\pgfutil@empty%
\let#2=#1%
\else%
\pgf@@processround#1#2%
\fi%
}
\def\pgf@@processround#1#2{%
\let\pgfprocess@newpath\pgfutil@empty%
\let\pgfprocess@moveto\pgfutil@empty%
\let\pgfprocess@firstto\pgfutil@empty%
\let\pgfprocess@segment\pgfutil@empty%
\pgf@xa=0pt%
\pgf@ya=0pt%
\expandafter\pgfprocess@round#1\pgf@stop{0pt}{0pt}%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@moveto}%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@segment}%
\let#2=\pgfprocess@newpath%
}
\def\pgfprocess@round#1#2#3{%
\ifx#1\pgf@stop%
\let\next=\relax%
\else%
\ifx#1\pgfsyssoftpath@specialroundtoken%
\def\pgfprocess@savex{#2}%
\def\pgfprocess@savey{#3}%
\let\next=\pgfprocess@specialround%
\ifdim#2=0pt%
\ifdim#3=0pt%
\let\next=\pgfprocess@round%
\fi%
\fi%
\else%
\ifx\pgfprocess@firstto\pgfutil@empty%
\def\pgfprocess@firstto{{#2}{#3}}%
\fi%
\pgf@xa=#2%
\pgf@ya=#3%
\ifx#1\pgfsyssoftpath@movetotoken%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@moveto}%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@segment}%
\def\pgfprocess@moveto{#1{#2}{#3}}%
\let\pgfprocess@firstto=\pgfutil@empty%
\let\pgfprocess@segment=\pgfutil@empty%
\else%
\pgfutil@g@addto@macro\pgfprocess@segment{#1{#2}{#3}}%
\fi%
\let\next=\pgfprocess@round%
\fi%
\fi%
\next%
}
\def\pgfprocess@specialround#1#2#3{%
\ifx\pgfprocess@firstto\pgfutil@empty%
\def\pgfprocess@firstto{{#2}{#3}}%
\fi%
\let\next=\pgfprocess@round%
\ifx#1\pgfsyssoftpath@linetotoken%
\let\next=\pgfprocess@specialroundcope%
\else%
\ifx#1\pgfsyssoftpath@curvetosupportatoken%
\let\next=\pgfprocess@specialroundcurveto%
\else%
\ifx#1\pgfsyssoftpath@closepathtoken%
\let\next=\pgfprocess@specialroundclose%
\fi%
\fi%
\fi%
\next#1{#2}{#3}%
}%
\def\pgfprocess@specialroundcope#1#2#3#4#5#6{%
\let\next=\pgfprocess@round%
\let\pgfprocess@continueafterrounding=\pgfprocess@round%
\ifx#4\pgfsyssoftpath@linetotoken%
\pgf@xc=#5%
\pgf@yc=#6%
\let\next=\pgfprocess@@specialround%
\else%
\ifx#4\pgfsyssoftpath@curvetosupportatoken%
\pgf@xc=#5%
\pgf@yc=#6%
\let\next=\pgfprocess@@specialround%
\else%
\ifx#4\pgfsyssoftpath@closepathtoken%
\pgf@xc=#5%
\pgf@yc=#6%
\let\next=\pgfprocess@@specialround%
\else
\ifx#4\pgfsyssoftpath@specialroundtoken%
\let\next=\pgfprocess@@findrightcoordinates%
\fi%
\fi%
\fi%
\fi%
\next#1{#2}{#3}#4{#5}{#6}%
}
\def\pgfprocess@@findrightcoordinates#1#2#3#4#5#6#7#8#9{%
\pgf@xc=#8%
\pgf@yc=#9%
\pgfprocess@@specialround#1{#2}{#3}#4{#5}{#6}#7{#8}{#9}%
}
\def\pgfprocess@@specialround#1#2#3{%
\pgfutil@g@addto@macro\pgfprocess@segment{#1}%
\pgf@xb=#2%
\pgf@yb=#3%
\edef\pgf@marshal%
{\noexpand\pgfpointlineatdistance{\pgfprocess@savex}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
\pgf@process{\pgf@marshal}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\edef\pgfprocess@addition{{\the\pgf@x}{\the\pgf@y}}%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
\edef\pgf@marshal%
{\noexpand\pgfpointlineatdistance{\pgfprocess@savey}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}%
\pgf@process{\pgf@marshal}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
{%
\pgf@x=\pgf@xb%
\pgf@y=\pgf@yb%
\advance\pgf@x by-\pgf@xa%
\advance\pgf@y by-\pgf@ya%
\advance\pgf@xa by 0.5522847\pgf@x%
\advance\pgf@ya by 0.5522847\pgf@y%
\edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetosupportatoken{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
}%
{%
\pgf@x=\pgf@xb%
\pgf@y=\pgf@yb%
\advance\pgf@x by-\pgf@xc%
\advance\pgf@y by-\pgf@yc%
\advance\pgf@xc by 0.5522847\pgf@x%
\advance\pgf@yc by 0.5522847\pgf@y%
\edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetosupportbtoken{\the\pgf@xc}{\the\pgf@yc}}%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
}%
\edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetotoken{\the\pgf@xc}{\the\pgf@yc}}%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
\pgf@xa=#2%
\pgf@ya=#3%
\pgfprocess@continueafterrounding%
}
\def\pgfprocess@specialroundcurveto#1#2#3#4#5#6{%
\pgfutil@g@addto@macro\pgfprocess@segment{#1{#2}{#3}#4{#5}{#6}}%
\pgf@xa=#5%
\pgf@ya=#6%
\pgfprocess@specialroundcope}
\def\pgfprocess@specialroundclose{%
\let\next=\pgfprocess@round%
\ifx\pgfprocess@moveto\pgfutil@empty%
\else%
\ifx\pgfprocess@firstto\pgfutil@empty%
\else%
\expandafter\pgfprocess@@specialclosetarget\pgfprocess@firstto%
\let\pgfprocess@continueafterrounding=\pgfprocess@cleanupafterclose%
\edef\next{%
\noexpand\pgfprocess@@specialround%
\expandafter\expandafter\expandafter\noexpand\expandafter\pgfprocess@@specialclosemoveto\pgfprocess@moveto%
}%
\fi%
\fi%
\next%
}
\def\pgfprocess@@specialclosetarget#1#2{%
\pgf@xc=#1%
\pgf@yc=#2%
}
\def\pgfprocess@@specialclosemoveto#1#2#3{%
\pgfsyssoftpath@linetotoken{#2}{#3}%
}
\def\pgfprocess@cleanupafterclose#1#2#3{%
\edef\pgfprocess@moveto{\noexpand\pgfsyssoftpath@movetotoken{\the\pgf@xc}{\the\pgf@yc}}%
\edef\pgf@marshal{\noexpand\pgfprocess@round\noexpand\pgfsyssoftpath@closepathtoken{\the\pgf@xc}{\the\pgf@yc}}%
\pgf@marshal%
}
\def\pgfprocesspathreplacestartandend#1#2#3{%
\ifx#1\pgfutil@empty%
\else%
{%
\pgfsyssoftpath@getcurrentpath\pgf@replace@origpath%
\let\pgf@prepath=\pgfutil@empty%
\pgf@process{#3}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#2}%
\expandafter\pgf@replaceprocessfirst#1\pgf@stop%
\pgfsyssoftpath@getcurrentpath\pgf@restpath%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter#1%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
\expandafter\expandafter\expandafter\pgf@prepath%
\expandafter\pgf@newstart\pgf@restpath}%
\pgfsyssoftpath@setcurrentpath\pgf@replace@origpath%
}%
\fi%
}
\def\pgf@replaceprocessfirst#1#2#3#4{%
\def\pgf@origstart{#1{#2}{#3}}%
\edef\pgf@newstart{\noexpand#1{\the\pgf@x}{\the\pgf@y}}%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
\ifx#4\pgf@stop%
\let\pgf@next=\pgfutil@gobble%
\else%
\let\pgf@next=\pgf@replaceprocessother%
\let\pgf@@next=\pgf@@replaceprocessother%
\fi%
\pgf@next#4%
}
\def\pgf@replaceprocessother#1{%
\ifx#1\pgfsyssoftpath@movetotoken%
\pgf@replace@handle@move%
\fi%
\pgf@@next#1%
}
\def\pgf@@replaceprocessother#1#2#3#4{%
\ifx#4\pgf@stop%
\edef\pgf@restpathaddition{{\noexpand#1{\the\pgf@xa}{\the\pgf@ya}}}%
\expandafter\pgfsyssoftpath@addtocurrentpath\pgf@restpathaddition%
\let\pgf@next=\pgfutil@gobble%
\else%
\pgfsyssoftpath@addtocurrentpath{#1{#2}{#3}}%
\fi%
\pgf@next#4%
}
\def\pgf@replace@handle@move{%
\pgfsyssoftpath@getcurrentpath\pgf@restpath%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgf@prepath%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
\expandafter\expandafter\expandafter\pgf@prepath%
\expandafter\pgf@origstart\pgf@restpath}%
\let\pgf@@next=\pgf@replaceprocessfirst%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathprocessing.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathusage.code.tex ====
\ProvidesFileRCS{pgfcorepathusage.code.tex}
\pgfkeys{
/pgf/stroke/.code=\let\pgf@up@stroke\pgf@up@stroke@text\pgf@up@path@neededtrue,
/pgf/draw/.code=\let\pgf@up@stroke\pgf@up@stroke@text\pgf@up@path@neededtrue,
/pgf/fill/.code=\let\pgf@up@fill\pgf@up@fill@text\pgf@up@path@neededtrue,
/pgf/clip/.code=\let\pgf@up@clip\pgf@up@clip@text\pgf@up@path@neededtrue,
/pgf/discard/.code=,
/pgf/use as bounding box/.code=\let\pgf@up@bb\pgf@do@up@bb,
/pgf/arrow keys/flex/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
/pgf/arrow keys/flex'/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
/pgf/arrow keys/bend/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
/pgf/arrow keys/quick/.code=\pgfarrowsaddtooptions{\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@quick},
}
\pgfkeys{
/pgf/.cd,
tips/.is choice,
tips/.default=true,
tips/proper/.code=\let\pgf@tips@mode\pgf@tips@mode@onproper,
tips/on proper draw/.code=\let\pgf@tips@mode\pgf@tips@mode@onproperdraw,
tips/true/.code=\let\pgf@tips@mode\pgf@tips@mode@true,
tips/on draw/.code=\let\pgf@tips@mode\pgf@tips@mode@ondraw,
tips/never/.code=\let\pgf@tips@mode\pgf@tips@mode@false,
tips/false/.code=\let\pgf@tips@mode\pgf@tips@mode@false,
}
\def\pgf@tips@mode@onproper{4}
\def\pgf@tips@mode@onproperdraw{3}
\def\pgf@tips@mode@true{2}
\def\pgf@tips@mode@ondraw{1}
\def\pgf@tips@mode@false{0}
\let\pgf@tips@mode\pgf@tips@mode@ondraw
\newif\ifpgf@precise@shortening
\def\pgf@arrow@mode@is@quick{0}
\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@quick
\newif\ifpgf@up@path@needed
\newif\ifpgf@up@draw@arrows
\def\pgf@up@stroke@text{stroke}
\def\pgf@up@fill@text{fill}
\def\pgf@up@clip@text{clip}
\def\pgf@do@up@bb{\pgf@relevantforpicturesizefalse}
\def\pgfusepath#1{%
\pgf@up@path@neededfalse%
\pgf@up@draw@arrowsfalse%
\let\pgf@up@stroke\pgfutil@empty%
\let\pgf@up@fill\pgfutil@empty%
\let\pgf@up@clip\pgfutil@empty%
\let\pgf@up@bb\pgfutil@empty%
\pgfset{#1}%
\expandafter\def\expandafter\pgf@up@action\expandafter{\csname pgfsys@\pgf@up@fill\pgf@up@stroke\endcsname}%
\ifnum\pgf@tips@mode=2\relax%
\pgf@up@path@neededtrue%
\fi%
\ifnum\pgf@tips@mode=4\relax%
\pgf@up@path@neededtrue%
\fi%
\ifpgf@up@path@needed%
\else%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
\fi%
\ifx\pgf@up@stroke\pgfutil@empty%
\ifx\pgf@up@fill\pgfutil@empty%
\let\pgf@up@action=\pgfutil@empty%
\ifx\pgf@up@clip\pgfutil@empty%
\else%
\let\pgf@up@action=\pgfsys@discardpath%
\fi%
\fi%
\fi%
\pgfsyssoftpath@getcurrentpath\pgf@last@processed@path
\pgfprocessround{\pgf@last@processed@path}{\pgf@last@processed@path}%
\pgfsyssoftpath@setcurrentpath\pgf@last@processed@path%
\ifpgf@relevantforpicturesize%
\ifx\pgf@up@stroke\pgfutil@empty%
\else%
\ifdim\pgf@picmaxx=-16000pt\relax%
\else%
\pgf@x=\pgf@pathminx\advance\pgf@x by-.5\pgflinewidth%
\ifdim\pgf@x<\pgf@picminx\global\pgf@picminx\pgf@x\fi%
\pgf@y=\pgf@pathminy\advance\pgf@y by-.5\pgflinewidth%
\ifdim\pgf@y<\pgf@picminy\global\pgf@picminy\pgf@y\fi%
\pgf@x=\pgf@pathmaxx\advance\pgf@x by.5\pgflinewidth%
\ifdim\pgf@x>\pgf@picmaxx\global\pgf@picmaxx\pgf@x\fi%
\pgf@y=\pgf@pathmaxy\advance\pgf@y by.5\pgflinewidth%
\ifdim\pgf@y>\pgf@picmaxy\global\pgf@picmaxy\pgf@y\fi%
\fi%
\fi%
\fi%
\ifx\pgf@up@clip\pgfutil@empty%
\ifx\pgf@up@stroke\pgfutil@empty%
\ifx\pgf@up@action\pgfutil@empty%
\ifnum\pgf@tips@mode=2\relax%
\pgf@up@draw@arrows@only%
\fi%
\ifnum\pgf@tips@mode=4\relax%
\pgf@up@draw@arrows@only%
\fi%
\else%
\pgfsyssoftpath@invokecurrentpath%
\pgf@up@action%
\fi%
\else%
\pgfgetpath\pgf@arrowpath%
\pgf@path@setup@tempswa%
\pgfprocesscheckclosed{\pgf@arrowpath}{\pgfutil@tempswafalse}%
\pgf@path@check@proper%
\ifpgfutil@tempswa%
\pgf@check@for@arrow@and@animation%
\pgf@prepare@end@of@path%
\begingroup%
\pgf@prepare@start@of@path%
\fi%
\pgfsyssoftpath@invokecurrentpath%
\pgf@up@action%
\ifdim\pgfinnerlinewidth>0pt\relax%
\pgf@stroke@inner@line%
\fi%
\ifpgfutil@tempswa%
\pgf@add@arrow@at@start%
\endgroup%
\pgf@add@arrow@at@end%
\fi%
\fi%
\else%
\pgfsyssoftpath@invokecurrentpath%
\pgfsys@clipnext%
\pgf@up@action%
\pgf@relevantforpicturesizefalse%
\fi%
\pgf@up@bb%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
\pgf@resetpathsizes%
\ignorespaces%
}
\def\pgf@path@setup@tempswa{%
\ifnum\pgf@tips@mode>0\relax
\pgfutil@tempswatrue%
\else
\pgfutil@tempswafalse%
\fi%
}
\def\pgf@up@draw@arrows@only{%
\pgfgetpath\pgf@arrowpath%
\pgfutil@tempswatrue%
\pgfprocesscheckclosed{\pgf@arrowpath}{\pgfutil@tempswafalse}%
\pgf@path@check@proper%
\ifpgfutil@tempswa%
\pgf@check@for@arrow@and@animation%
\pgf@prepare@end@of@path%
\begingroup%
\pgf@prepare@start@of@path%
\pgf@add@arrow@at@start%
\endgroup%
\pgf@add@arrow@at@end%
\fi%
}
\def\pgf@check@for@arrow@and@animation{\pgfsys@if@fresh@currentid{\pgf@check@for@arrow@and@animation@}{}}%
\def\pgf@check@for@arrow@and@animation@{%
\expandafter\ifx\csname pgfsysanim@path@is@animated@\pgf@sys@id@current@id @\pgfsys@current@type\endcsname\pgfutil@empty%
\ifx\pgf@end@tip@sequence\pgfutil@empty%
\ifx\pgf@start@tip@sequence\pgfutil@empty%
\else%
\pgf@check@for@arrow@and@animation@error%
\fi%
\else%
\pgf@check@for@arrow@and@animation@error%
\fi%
\fi%
}
\def\pgf@check@for@arrow@and@animation@error{\pgferror{Animated path may not have normal arrow tips. Use a base path with arrow tips}}
\def\pgf@path@check@proper{%
\ifpgfutil@tempswa%
\ifnum\pgf@tips@mode>2\relax%
\pgf@path@check@proper@%
\fi%
\fi%
}
\def\pgf@path@check@proper@{%
{%
\pgf@x0pt\pgf@y\pgf@x%
\pgfutil@tempswatrue%
\let\pgfsyssoftpath@movetotoken\pgf@path@proper@init%
\let\pgfsyssoftpath@linetotoken\pgf@path@proper@test%
\let\pgfsyssoftpath@curvetosupportatoken\pgf@path@proper@test%
\let\pgfsyssoftpath@curvetosupportbtoken=\pgf@path@proper@test%
\let\pgfsyssoftpath@curvetotoken\pgf@path@proper@test%
\let\pgfsyssoftpath@rectcornertoken\pgf@path@proper@test%
\let\pgfsyssoftpath@rectsizetoken\pgf@path@proper@zero@test%
\let\pgfsyssoftpath@closepathtoken\pgf@path@proper@test%
\pgf@arrowpath%
\expandafter
}%
\ifpgfutil@tempswa\pgfutil@tempswafalse\else\pgfutil@tempswatrue\fi%
}
\def\pgf@path@proper@init#1#2{\pgfutil@tempswatrue\pgf@x#1\pgf@y#2}%
\def\pgf@path@proper@test#1#2{%
\ifdim\pgf@x=#1\relax\else\pgfutil@tempswafalse\fi%
\ifdim\pgf@y=#2\relax\else\pgfutil@tempswafalse\fi}
\def\pgf@path@proper@zero@test#1#2{%
\ifdim\pgf@x=0pt\relax\else\pgfutil@tempswafalse\fi%
\ifdim\pgf@y=0pt\relax\else\pgfutil@tempswafalse\fi}
\def\pgf@stroke@inner@line{%
\let\pgf@temp@save=\pgf@strokecolor@global
\pgfsys@beginscope%
{%
\pgfsys@setlinewidth{\pgfinnerlinewidth}%
\pgfsetstrokecolor{\pgfinnerstrokecolor}%
\pgfsyssoftpath@invokecurrentpath%
\pgfsys@stroke%
}%
\pgfsys@endscope%
\global\let\pgf@strokecolor@global=\pgf@temp@save
}
\let\pgf@prepare@start@of@path\relax%
\def\pgfsetshortenstart#1{\pgfmathsetlength\pgf@shorten@start@additional{#1}}
\def\pgfsetshortenend#1{\pgfmathsetlength\pgf@shorten@end@additional{#1}}
\newdimen\pgf@shorten@end@additional
\newdimen\pgf@shorten@start@additional
\newif\ifpgf@worry
\def\pgf@prepare@end@of@path{%
\let\pgfprocessresultpathsuffix\relax%
\let\pgfprocessresultsubpathsuffix\relax%
\pgfsyssoftpath@getcurrentpath\pgf@arrowpath%
\ifx\pgf@arrowpath\pgfutil@empty\else%
\pgf@worryfalse%
\ifx\pgf@end@tip@sequence\pgfutil@empty%
\else%
\pgf@worrytrue%
\fi%
\pgf@precise@shorteningfalse%
\pgf@arrow@compute@shortening\pgf@end@tip@sequence%
\advance\pgf@xa by\pgf@shorten@end@additional%
\advance\pgf@xb by\pgf@shorten@end@additional%
\ifdim\pgf@xa=0pt\relax\else\pgf@worrytrue\fi%
\edef\pgf@path@shortening@distance{\the\pgf@xa}%
\edef\pgf@arrow@tip@total@length{\the\pgf@xb}%
\ifpgf@worry%
\pgfprocesssplitpath{\pgf@arrowpath}%
\pgfprocesssplitsubpath{\pgfprocessresultpathsuffix}%
\expandafter\pgf@parse@end\pgfprocessresultsubpathsuffix\pgf@stop\pgf@stop\pgf@stop%
\pgf@prep@end%
\ifdim\pgf@path@shortening@distance=0pt\else\pgf@do@shorten@end\fi%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\pgf@arrowpath%
\expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix}%
\pgfsyssoftpath@setcurrentpath\pgf@arrowpath%
\fi%
\fi%
}
\def\pgf@parse@end#1#2#3#4#5#6{%
\ifx#4\pgf@stop%
\def\pgfpointlastonpath{\pgfqpoint{#2}{#3}}%
\let\pgf@next\relax%
\let\pgf@do@shorten@end\relax%
\let\pgf@do@draw@end\pgf@do@draw@straightend%
\let\pgf@prep@end\pgf@prep@movetoend%
\else\ifx#4\pgfsyssoftpath@curvetosupportatoken%
\def\pgfsubpathfourthlasttoken{#1}%
\def\pgfpointfourthlastonpath{\pgfqpoint{#2}{#3}}%
\def\pgfpointthirdlastonpath{\pgfqpoint{#5}{#6}}%
\ifpgf@precise@shortening%
\let\pgf@do@shorten@end\pgf@do@shorten@curvedend%
\let\pgf@do@draw@end\pgf@do@draw@curvedend%
\let\pgf@prep@end\pgf@prep@curveend%
\else%
\def\pgfsubpathstart{\noexpand#1{#2}{#3}\noexpand#4{#5}{#6}}%
\let\pgf@do@shorten@end\pgf@do@shorten@straightend%
\let\pgf@do@draw@end\pgf@do@draw@straightend%
\let\pgf@prep@end\pgf@prep@straightend%
\fi%
\let\pgf@next\pgf@parse@end@curve@cont%
\else%
\def\pgfsubpathstart{\noexpand#1{#2}{#3}\noexpand#4}%
\def\pgfpointsecondlastonpath{\pgfqpoint{#2}{#3}}%
\def\pgfpointlastonpath{\pgfqpoint{#5}{#6}}%
\let\pgfpointfourthlastonpath\relax%
\let\pgfpointthirdlastonpath\relax%
\let\pgf@next\pgf@parse@end@gobble@three%
\let\pgf@do@shorten@end\pgf@do@shorten@straightend%
\let\pgf@do@draw@end\pgf@do@draw@straightend%
\let\pgf@prep@end\pgf@prep@straightend%
\fi\fi%
\pgf@next%
}
\def\pgf@parse@end@gobble@three#1#2#3{}%
\def\pgf@parse@end@curve@cont#1#2#3#4#5#6#7#8#9{%
\def\pgfpointsecondlastonpath{\pgfqpoint{#2}{#3}}%
\def\pgfpointlastonpath{\pgfqpoint{#5}{#6}}%
\ifpgf@precise@shortening%
\else%
\expandafter\def\expandafter\pgfsubpathstart\expandafter{\pgfsubpathstart\noexpand#1{#2}{#3}\noexpand#4}%
\fi%
}
\def\pgf@prep@movetoend{%
\pgf@process{\pgfpointlastonpath}%
\pgf@xb\pgf@x
\pgf@yb\pgf@y
\pgf@xc\pgf@x
\pgf@yc\pgf@y
}
\def\pgf@prep@straightend{%
\let\pgf@ref\pgfpointsecondlastonpath
\ifx\pgfpointlastonpath\pgfpointsecondlastonpath%
\ifx\pgfpointthirdlastonpath\relax%
\else%
\ifx\pgfpointlastonpath\pgfpointthirdlastonpath%
\let\pgf@ref\pgfpointfourthlastonpath%
\else
\let\pgf@ref\pgfpointthirdlastonpath%
\fi%
\fi%
\fi%
\pgfpointlineatdistance{\pgf@path@shortening@distance}{\pgfpointlastonpath}{\pgf@ref}%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
}
\def\pgf@do@shorten@straightend{%
\edef\pgfprocessresultsubpathsuffix{\pgfsubpathstart{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\pgfprocessresultpathsuffix%
\expandafter\expandafter\expandafter{\expandafter\pgfprocessresultsubpathprefix\pgfprocessresultsubpathsuffix}%
}
\def\pgf@add@arrow@at@end{%
\ifx\pgf@arrowpath\pgfutil@empty\else%
\ifx\pgf@end@tip@sequence\pgfutil@empty\else%
\pgf@do@draw@end%
\fi%
\fi%
}
\def\pgf@do@draw@straightend{%
{%
\pgftransformreset%
\pgftransformarrow{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
\pgf@arrow@draw@arrow\pgf@end@tip@sequence\pgf@arrow@tip@total@length%
}%
}
\def\pgf@prepare@start@of@path{%
\ifx\pgf@arrowpath\pgfutil@empty\else%
\pgf@worryfalse%
\ifx\pgf@start@tip@sequence\pgfutil@empty\else\pgf@worrytrue\fi%
\pgf@precise@shorteningfalse%
\pgf@arrow@compute@shortening\pgf@start@tip@sequence%
\advance\pgf@xa by\pgf@shorten@start@additional%
\advance\pgf@xb by\pgf@shorten@start@additional%
\ifdim\pgf@xa=0pt\relax\else\pgf@worrytrue\fi%
\edef\pgf@path@shortening@distance{\the\pgf@xa}%
\edef\pgf@arrow@tip@total@length{\the\pgf@xb}%
\ifpgf@worry%
\ifx\pgfprocessresultpathsuffix\relax%
\pgfprocesssplitpath{\pgf@arrowpath}%
\fi%
\expandafter\pgf@parse@start\pgfprocessresultpathsuffix\pgf@stop\pgf@stop\pgf@stop%
\pgf@prep@start%
\ifdim\pgf@path@shortening@distance=0pt\else\pgf@do@shorten@start\fi%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\pgf@arrowpath%
\expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix}%
\pgfsyssoftpath@setcurrentpath\pgf@arrowpath%
\fi%
\fi%
}
\def\pgf@parse@start#1#2#3#4#5#6{%
\def\pgfpointfirstonpath{\pgfqpoint{#2}{#3}}%
\def\pgfpointsecondonpath{\pgfqpoint{#5}{#6}}%
\let\pgfpointthirdonpath\relax%
\let\pgfpointfourthonpath\relax%
\def\pgfsubpathfirsttoken{\noexpand#1}%
\def\pgfsubpathsecondtoken{\noexpand#4}%
\ifx#4\pgf@stop%
\let\pgf@next\relax%
\let\pgf@do@shorten@start\relax%
\let\pgf@prep@start\pgf@prep@movetostart%
\let\pgf@do@draw@start\pgf@do@draw@straightstart%
\else\ifx#4\pgfsyssoftpath@curvetosupportatoken%
\ifpgf@precise@shortening%
\let\pgf@next\pgf@parse@start@curve@cont%
\let\pgf@do@shorten@start\pgf@do@shorten@curvedstart%
\let\pgf@do@draw@start\pgf@do@draw@curvedstart%
\let\pgf@prep@start\pgf@prep@curvedstart%
\else%
\let\pgf@next\pgf@parse@start@curve@cont@straight%
\let\pgf@do@shorten@start\pgf@do@shorten@straightstart%
\let\pgf@do@draw@start\pgf@do@draw@straightstart%
\let\pgf@prep@start\pgf@prep@straightstart%
\fi%
\else%
\let\pgf@next\pgf@parse@start@till@stop%
\let\pgf@do@shorten@start\pgf@do@shorten@straightstart%
\let\pgf@do@draw@start\pgf@do@draw@straightstart%
\let\pgf@prep@start\pgf@prep@straightstart%
\fi\fi%
\pgf@next%
}
\def\pgf@parse@start@till@stop#1\pgf@stop\pgf@stop\pgf@stop{\def\pgfsubpathend{#1}}%
\def\pgf@parse@start@curve@cont#1#2#3#4#5#6#7\pgf@stop\pgf@stop\pgf@stop{%
\def\pgfpointthirdonpath{\pgfqpoint{#2}{#3}}%
\def\pgfpointfourthonpath{\pgfqpoint{#5}{#6}}%
\def\pgfsubpathend{#7}%
}
\def\pgf@parse@start@curve@cont@straight#1#2#3#4#5#6#7\pgf@stop\pgf@stop\pgf@stop{%
\def\pgfpointthirdonpath{\pgfqpoint{#2}{#3}}%
\def\pgfpointfourthonpath{\pgfqpoint{#5}{#6}}%
\def\pgfsubpathend{#1{#2}{#3}#4{#5}{#6}#7}%
}
\def\pgf@prep@movetostart{%
\pgf@process{\pgfpointfirstonpath}%
\pgf@xb\pgf@x
\pgf@yb\pgf@y
\pgf@xc\pgf@x
\pgf@yc\pgf@y
}
\def\pgf@prep@straightstart{%
\let\pgf@ref\pgfpointsecondonpath
\ifx\pgfpointfirstonpath\pgfpointsecondonpath%
\ifx\pgfpointthirdonpath\relax%
\else%
\ifx\pgfpointfirstonpath\pgfpointthirdonpath%
\let\pgf@ref\pgfpointfourthonpath%
\else
\let\pgf@ref\pgfpointthirdonpath%
\fi%
\fi%
\fi%
\pgfpointlineatdistance{\pgf@path@shortening@distance}{\pgfpointfirstonpath}{\pgf@ref}%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
}
\def\pgf@do@shorten@straightstart{%
\edef\pgfprocessresultpathsuffix{\pgfsubpathfirsttoken{\the\pgf@xa}{\the\pgf@ya}\pgfsubpathsecondtoken{\the\pgf@xc}{\the\pgf@yc}}%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\pgfprocessresultpathsuffix%
\expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathsuffix\pgfsubpathend}%
}
\def\pgf@add@arrow@at@start{%
\ifx\pgf@arrowpath\pgfutil@empty\else%
\ifx\pgf@start@tip@sequence\pgfutil@empty\else%
\pgf@do@draw@start%
\fi%
\fi%
}
\def\pgf@do@draw@straightstart{%
{%
\pgftransformreset%
\pgftransformarrow{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
\pgf@arrow@draw@arrow\pgf@start@tip@sequence\pgf@arrow@tip@total@length%
}%
}
\let\pgf@shorten@end=\pgfutil@empty
\let\pgf@shorten@start=\pgfutil@empty
\endinput%
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathusage.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepatterns.code.tex ====
\ProvidesFileRCS{pgfcorepatterns.code.tex}
\def\pgfdeclarepatternformonly{%
\def\pgf@pattern@type{formonly}%
\pgfutil@ifnextchar[{\pgf@declarepattern@checkarg}{\pgf@declarepattern@checkarg[]}%
}
\def\pgfdeclarepatterninherentlycolored{%
\def\pgf@pattern@type{inherentlycolored}%
\pgfutil@ifnextchar[{\pgf@declarepattern@checkarg}{\pgf@declarepattern@checkarg[]}%
}
\def\pgf@declarepattern@checkarg[#1]{%
\def\pgf@pattern@tempvars{#1}%
\ifx\pgf@pattern@tempvars\pgfutil@empty%
\expandafter\let\expandafter\pgf@next\csname pgf@declarepattern\pgf@pattern@type\endcsname%
\else%
\expandafter\let\expandafter\pgf@next\csname pgf@declarepattern\pgf@pattern@type @mutable\endcsname%
\fi%
\pgf@next}
\long\def\pgf@declarepatternformonly#1#2#3#4#5{\pgf@declarepattern{#1}{#2}{#3}{#4}{#5}{0}}
\long\def\pgf@declarepatterninherentlycolored#1#2#3#4#5{\pgf@declarepattern{#1}{#2}{#3}{#4}{#5}{1}}
\long\def\pgf@declarepatternformonly@mutable#1#2#3#4#5{%
\def\pgf@marshal{\pgf@declarepatternmutable{#1}}%
\expandafter\pgf@marshal\expandafter{\pgf@pattern@tempvars}{#2}{#3}{#4}{#5}{2}%
}
\long\def\pgf@declarepatterninherentlycolored@mutable#1#2#3#4#5#6{%
\def\pgf@marshal{\pgf@declarepatternmutable{#1}}%
\expandafter\pgf@marshal\expandafter{\pgf@pattern@tempvars}{#2}{#3}{#4}{#5}{3}%
}
\def\pgfsys@patternmatrix{{1.0}{0.0}{0.0}{1.0}{0.0pt}{0.0pt}}
\def\pgf@declarepattern#1#2#3#4#5#6{%
\pgfutil@ifundefined{pgf@pattern@name@#1}{%
\pgfsysprotocol@getcurrentprotocol\pgf@pattern@temp%
{%
\pgfinterruptpath%
\pgfpicturetrue%
\pgf@relevantforpicturesizefalse%
\pgftransformreset%
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
\pgfsysprotocol@bufferedtrue%
\pgfsys@beginscope%
\pgfsetarrows{-}%
#5%
\pgfsys@endscope%
\pgfsysprotocol@getcurrentprotocol\pgf@pattern@code%
\global\let\pgf@pattern@code=\pgf@pattern@code%
\endpgfinterruptpath%
\pgf@process{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#3}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{#4}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgfutil@tempcnta=\pgf@pattern@number%
\advance\pgfutil@tempcnta by1\relax%
\xdef\pgf@pattern@number{\the\pgfutil@tempcnta}%
\expandafter\xdef\csname pgf@pattern@name@#1\endcsname{\the\pgfutil@tempcnta}%
\expandafter\gdef\csname pgf@pattern@type@#1\endcsname{#6}%
\xdef\pgf@marshal{\noexpand\pgfsys@declarepattern
{\csname pgf@pattern@name@#1\endcsname}%
{\the\pgf@xa}{\the\pgf@ya}{\the\pgf@xb}{\the\pgf@yb}%
{\the\pgf@xc}{\the\pgf@yc}%
\pgfsys@patternmatrix%
{\pgf@pattern@code}{#6}}%
}%
\pgfsysprotocol@setcurrentprotocol\pgf@pattern@temp%
\expandafter\global\expandafter\let\csname pgf@pattern@instantiate@#1\endcsname=\pgf@marshal%
}
{%
\pgferror{Pattern `#1' already defined}%
}%
}
\def\pgf@pattern@number{0}%
\def\pgf@declarepatternmutable#1#2#3#4#5#6#7{%
\pgfutil@ifundefined{pgf@pattern@name@#1}{%
\expandafter\gdef\csname pgf@pattern@name@#1\endcsname{#1}%
\expandafter\gdef\csname pgf@pattern@variables@#1\endcsname{#2}%
\expandafter\gdef\csname pgf@pattern@lowerleft@#1\endcsname{#3}%
\expandafter\gdef\csname pgf@pattern@upperright@#1\endcsname{#4}%
\expandafter\gdef\csname pgf@pattern@tilesize@#1\endcsname{#5}%
\expandafter\long\expandafter\gdef\csname pgf@pattern@code@#1\endcsname{#6}%
\expandafter\gdef\csname pgf@pattern@type@#1\endcsname{#7}%
}{\pgferror{The pattern `#1' is already defined}}%
}
\def\pgf@ifpatternisinherentlycolored#1#2#3{%
\expandafter\ifodd\csname pgf@pattern@type@#1\endcsname\relax#2\else#3\fi%
}
\def\pgf@ifpatternismutable#1#2#3{%
\expandafter\ifnum\csname pgf@pattern@type@#1\endcsname>1\relax#2\else#3\fi%
}
\def\pgfpatternreleasename#1{\expandafter\let\csname pgf@pattern@name@#1\endcsname\relax}
\def\pgfsetfillpattern#1#2{%
\pgfutil@ifundefined{pgf@pattern@name@#1}%
{%
\pgferror{Undefined pattern `#1'}%
}%
{%
\pgf@ifpatternismutable{#1}%
{%
\let\pgf@pattern@tempvars\pgfutil@empty%
\expandafter\expandafter\expandafter\pgf@pattern@check@vars%
\csname pgf@pattern@variables@#1\endcsname,\pgf@stop,%
\edef\pgf@pattern@nametemp{pgf@pattern@#1@\pgf@pattern@tempvars}%
\expandafter\pgfutil@ifundefined\expandafter{\pgf@pattern@nametemp}%
{%
\pgf@ifpatternisinherentlycolored{#1}%
{\let\pgf@set@fillpattern@declare\pgfdeclarepatterninherentlycolored}%
{\let\pgf@set@fillpattern@declare\pgfdeclarepatternformonly}%
\pgf@set@fillpattern@declare%
{\pgf@pattern@nametemp}%
{\csname pgf@pattern@lowerleft@#1\endcsname}%
{\csname pgf@pattern@upperright@#1\endcsname}%
{\csname pgf@pattern@tilesize@#1\endcsname}%
{\csname pgf@pattern@code@#1\endcsname}%
}%
{%
}%
\expandafter\pgf@set@fillpattern\expandafter{\pgf@pattern@nametemp}{#2}%
\expandafter\gdef\csname\pgf@pattern@nametemp\endcsname{#1}%
}%
{%
\pgf@set@fillpattern{#1}{#2}%
}%
}%
}
\def\pgf@set@fillpattern#1#2{%
\pgfutil@ifundefined{pgf@pattern@name@#1}{%
\pgferror{Undefined pattern `#1'}}
{%
\csname pgf@pattern@instantiate@#1\endcsname%
\expandafter\global\expandafter\let\csname pgf@pattern@instantiate@#1\endcsname=\relax%
\pgf@ifpatternisinherentlycolored{#1}{%
\pgfsys@setpatterncolored{\csname pgf@pattern@name@#1\endcsname}%
}{%
\pgfutil@colorlet{pgf@tempcolor}{#2}%
\pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgf@tempcolor}}%
\pgfutil@extractcolorspec{pgf@tempcolor}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
\expandafter\pgf@set@fill@patternuncolored\pgf@rgbcolor\relax{#1}%
}%
}%
}
\def\pgf@set@fill@patternuncolored#1,#2,#3\relax#4{%
\pgfsys@setpatternuncolored{\csname pgf@pattern@name@#4\endcsname}{#1}{#2}{#3}%
}
\def\pgf@pattern@check@vars#1,{%
\ifx#1\pgf@stop%
\let\pgf@next\relax%
\else%
\afterassignment\pgfmath@gobbletilpgfmath@%
\expandafter\let\expandafter\pgf@pattern@char#1#1\pgfmath@%
\ifx\pgf@pattern@char/%
\edef\pgf@pattern@tempvar{(\pgfkeysvalueof{#1})}%
\else%
\expandafter\ifcat\pgf@pattern@char\relax%
\edef\pgf@pattern@tempvar{(\the#1)}%
\else%
\edef\pgf@pattern@tempvar{(#1)}%
\fi%
\fi%
\edef\pgf@pattern@tempvars{\pgf@pattern@tempvars\pgf@pattern@tempvar}%
\let\pgf@next\pgf@pattern@check@vars%
\fi%
\pgf@next%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepatterns.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepoints.code.tex ====
\ProvidesFileRCS{pgfcorepoints.code.tex}
\newdimen\pgf@picminx
\newdimen\pgf@picmaxx
\newdimen\pgf@picminy
\newdimen\pgf@picmaxy
\newdimen\pgf@pathminx
\newdimen\pgf@pathmaxx
\newdimen\pgf@pathminy
\newdimen\pgf@pathmaxy
\newif\ifpgf@relevantforpicturesize
\def\pgf@process#1{{#1\global\pgf@x=\pgf@x\global\pgf@y=\pgf@y}}
\def\pgfextract@process#1#2{%
\pgf@process{#2}%
\edef#1{\noexpand\global\pgf@x=\the\pgf@x\noexpand\relax\noexpand\global\pgf@y=\the\pgf@y\noexpand\relax}%
}
\let\pgfsavepgf@process\pgfextract@process%
\def\pgfpoint#1#2{%
\pgfmathsetlength\pgf@x{#1}%
\pgfmathsetlength\pgf@y{#2}\ignorespaces}
\def\pgfqpoint#1#2{\global\pgf@x=#1\relax\global\pgf@y=#2\relax}
\def\pgfpointorigin{\global\pgf@x=0pt \global\pgf@y=\pgf@x\ignorespaces}
\def\pgfpointtransformed#1{%
\pgf@process{%
#1%
\pgf@pos@transform@glob%
}%
}
\def\pgfpointdiff#1#2{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#2}%
\global\advance\pgf@x by-\pgf@xa\relax%
\global\advance\pgf@y by-\pgf@ya\relax\ignorespaces}
\def\pgfpointadd#1#2{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#2}%
\global\advance\pgf@x by\pgf@xa%
\global\advance\pgf@y by\pgf@ya}
\def\pgfpointscale#1#2{%
\pgf@process{#2}%
\pgfmathparse{#1}%
\global\pgf@x=\pgfmathresult\pgf@x%
\global\pgf@y=\pgfmathresult\pgf@y%
}
\def\pgfqpointscale#1#2{%
\pgf@process{#2}%
\global\pgf@x=#1\pgf@x%
\global\pgf@y=#1\pgf@y%
}
\def\pgfpointintersectionoflines#1#2#3#4{%
{%
\pgf@process{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#1}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@ya=-\pgf@ya%
\c@pgf@counta=\pgf@xa%
\ifnum\c@pgf@counta<0\relax%
\c@pgf@counta=-\c@pgf@counta\relax%
\fi%
\c@pgf@countb=\pgf@ya%
\ifnum\c@pgf@countb<0\relax%
\c@pgf@countb=-\c@pgf@countb\relax%
\fi%
\advance\c@pgf@counta by\c@pgf@countb\relax%
\divide\c@pgf@counta by 65536\relax%
\ifnum\c@pgf@counta>0\relax%
\divide\pgf@xa by\c@pgf@counta\relax%
\divide\pgf@ya by\c@pgf@counta\relax%
\fi%
\pgf@xc=\pgf@sys@tonumber{\pgf@ya}\pgf@x%
\advance\pgf@xc by\pgf@sys@tonumber{\pgf@xa}\pgf@y%
\pgf@process{#4}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{#3}%
\advance\pgf@xb by-\pgf@x%
\advance\pgf@yb by-\pgf@y%
\pgf@yb=-\pgf@yb%
\c@pgf@counta=\pgf@xb%
\ifnum\c@pgf@counta<0\relax%
\c@pgf@counta=-\c@pgf@counta\relax%
\fi%
\c@pgf@countb=\pgf@yb%
\ifnum\c@pgf@countb<0\relax%
\c@pgf@countb=-\c@pgf@countb\relax%
\fi%
\advance\c@pgf@counta by\c@pgf@countb\relax%
\divide\c@pgf@counta by 65536\relax%
\ifnum\c@pgf@counta>0\relax%
\divide\pgf@xb by\c@pgf@counta\relax%
\divide\pgf@yb by\c@pgf@counta\relax%
\fi%
\pgf@yc=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
\advance\pgf@yc by\pgf@sys@tonumber{\pgf@xb}\pgf@y%
\pgfsettransform{{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@xb}{0pt}{0pt}}%
\pgftransforminvert%
\pgf@process{\pgfpointtransformed{\pgfpoint{\pgf@xc}{\pgf@yc}}}%
}%
}
\def\pgfpointintersectionofcircles#1#2#3#4#5{%
{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgfmathsetlength{\pgf@xc}{#3}%
\pgf@process{#2}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgfmathsetlength{\pgf@yc}{#4}%
\c@pgf@counta=1\relax%
\loop%
\pgf@scale@downfalse%
\ifdim\pgf@xc>50pt\relax%
\pgf@scale@downtrue%
\fi%
\ifdim\pgf@yc>50pt\relax%
\pgf@scale@downtrue%
\fi%
\ifpgf@scale@down%
\multiply\c@pgf@counta by2\relax%
\divide\pgf@xa by2\relax%
\divide\pgf@ya by2\relax%
\divide\pgf@xb by2\relax%
\divide\pgf@yb by2\relax%
\divide\pgf@xc by2\relax%
\divide\pgf@yc by2\relax%
\repeat%
\dimen0=\pgf@xb%
\advance\dimen0 by-\pgf@xa%
\dimen1=\pgf@yb%
\advance\dimen1 by-\pgf@ya%
\pgf@x=\dimen0\relax%
\pgf@x=\pgf@sys@tonumber{\pgf@x}\pgf@x%
\dimen3=\pgf@x%
\pgf@x=\dimen1\relax%
\advance\dimen3 by\pgf@sys@tonumber{\pgf@x}\pgf@x%
\pgfmathparse{sqrt(\the\dimen3)}%
\dimen2=\pgfmathresult pt%
\pgfmathreciprocal@{\pgfmathresult}%
\dimen5=\pgfmathresult pt%
\dimen4=\dimen3\relax%
\pgf@x=\pgf@xc%
\advance\dimen4 by\pgf@sys@tonumber{\pgf@x}\pgf@x\relax%
\pgf@x=\pgf@yc%
\advance\dimen4 by-\pgf@sys@tonumber{\pgf@x}\pgf@x\relax%
\dimen4=.5\dimen4%
\dimen4=\pgf@sys@tonumber{\dimen5}\dimen4%
\dimen7=\pgf@sys@tonumber{\dimen4}\dimen4\relax%
\pgfmathparse{sqrt(\pgf@sys@tonumber{\pgf@xc}\pgf@xc-\the\dimen7)}%
\dimen6=\pgfmathresult pt%
\dimen8=\pgf@sys@tonumber{\dimen4}\dimen5\relax%
\dimen9=\pgf@sys@tonumber{\dimen6}\dimen5\relax%
\ifnum#5=1\relax%
\pgf@x=\pgf@xa%
\advance\pgf@x by\pgf@sys@tonumber{\dimen0}\dimen8\relax%
\advance\pgf@x by\pgf@sys@tonumber{\dimen1}\dimen9\relax%
\pgf@y=\pgf@ya%
\advance\pgf@y by\pgf@sys@tonumber{\dimen1}\dimen8\relax%
\pgf@xb=\pgf@sys@tonumber{\dimen0}\dimen9%
\pgf@xb=-\pgf@xb%
\advance\pgf@y by\pgf@xb\relax%
\else%
\pgf@x=\pgf@xa%
\advance\pgf@x by\pgf@sys@tonumber{\dimen0}\dimen8\relax%
\pgf@xb=\pgf@sys@tonumber{\dimen1}\dimen9%
\pgf@xb=-\pgf@xb%
\advance\pgf@x by\pgf@xb\relax%
\pgf@y=\pgf@ya%
\advance\pgf@y by\pgf@sys@tonumber{\dimen1}\dimen8\relax%
\advance\pgf@y by\pgf@sys@tonumber{\dimen0}\dimen9\relax%
\fi%
\pgf@x=\c@pgf@counta\pgf@x%
\pgf@y=\c@pgf@counta\pgf@y%
\pgf@process{}%
}%
}
\newif\ifpgf@scale@down
\def\pgfpointlineattime#1#2#3{%
\pgf@process{#3}%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
\pgf@xc\pgf@x%
\pgf@yc\pgf@y%
\pgf@process{#2}%
\pgf@xb\pgf@x%
\pgf@yb\pgf@y%
\pgfmathsetmacro\pgf@temp{#1}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\global\advance\pgf@x by\pgf@temp\pgf@xa%
\global\advance\pgf@y by\pgf@temp\pgf@ya%
}
\def\pgfpointlineatdistance#1#2#3{%
\pgfmathsetlength\pgf@xa{#1}%
\pgf@process{#2}%
\pgf@xb\pgf@x%
\pgf@yb\pgf@y%
\pgf@process{#3}%
\pgf@xc\pgf@x%
\pgf@yc\pgf@y%
\global\advance\pgf@x by-\pgf@xb\relax%
\global\advance\pgf@y by-\pgf@yb\relax%
\pgf@process{\pgfpointnormalised{}}%
\pgf@ya=\pgf@xa\relax%
\pgf@xa=\pgf@sys@tonumber{\pgf@x}\pgf@xa%
\pgf@ya=\pgf@sys@tonumber{\pgf@y}\pgf@ya%
\global\pgf@x=\pgf@xb\relax%
\global\pgf@y=\pgf@yb\relax%
\global\advance\pgf@x by\pgf@xa\relax%
\global\advance\pgf@y by\pgf@ya\relax%
}
\def\pgfpointcurveattime#1#2#3#4#5{%
\pgfmathparse{#1}%
\let\pgf@time@s=\pgfmathresult%
\global\pgf@x=\pgfmathresult pt%
\global\pgf@x=-\pgf@x%
\advance\pgf@x by 1pt%
\edef\pgf@time@t{\pgf@sys@tonumber{\pgf@x}}%
\pgf@process{#5}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@process{#4}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{#3}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#2}%
\global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
\global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
\pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
\pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
\pgf@xb=\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
\pgf@yb=\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
\global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
\global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
\pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
\pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
\global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
}
\def\pgfpointarcaxesattime#1#2#3#4#5#6{%
\pgfmathsetmacro\pgf@angle@start{#5}%
\pgfmathsetmacro\pgf@angle@end{#6}%
\pgfmathparse{#1}%
\global\pgf@x=\pgfmathresult pt%
\global\pgf@x=-\pgf@x%
\advance\pgf@x by 1pt%
\pgfmathsetmacro\pgf@angle@mid{\pgf@angle@end*\pgfmathresult+\pgf@angle@start*\pgf@sys@tonumber{\pgf@x}}%
\pgfmathcos@{\pgf@angle@mid}%
\let\pgf@angle@cos\pgfmathresult%
\pgfmathsin@{\pgf@angle@mid}%
\let\pgf@angle@sin\pgfmathresult%
\pgf@process{#3}%
\edef\pgf@angle@zero@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
\pgf@process{#4}%
\edef\pgf@angle@ninety@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
\pgf@process{\pgfpointadd{\pgfpointscale{\pgf@angle@sin}{\pgf@angle@zero@axis}}%
{\pgfpointscale{-\pgf@angle@cos}{\pgf@angle@ninety@axis}}}%
\ifdim\pgf@angle@start pt>\pgf@angle@end pt%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\else%
\pgf@xa=-\pgf@x%
\pgf@ya=-\pgf@y%
\fi%
\pgf@process{\pgfpointadd{#2}{%
\pgfpointadd{\pgfpointscale{\pgf@angle@cos}{\pgf@angle@zero@axis}}%
{\pgfpointscale{\pgf@angle@sin}{\pgf@angle@ninety@axis}}}}%
}
\newdimen\pgf@xx
\newdimen\pgf@xy
\newdimen\pgf@yx
\newdimen\pgf@yy
\newdimen\pgf@zx
\newdimen\pgf@zy
\def\pgfpointpolar#1#2{%
\pgfutil@in@{and }{#2}%
\ifpgfutil@in@%
\pgf@polar@#2\@@%
\else%
\pgf@polar@#2 and #2\@@%
\fi%
\pgfmathparse{#1}%
\let\pgfpoint@angle=\pgfmathresult%
\pgfmathcos@{\pgfpoint@angle}%
\global\pgf@x=\pgfmathresult\pgf@x%
\pgfmathsin@{\pgfpoint@angle}%
\global\pgf@y=\pgfmathresult\pgf@y%
}
\def\pgf@polar@#1and #2\@@{%
\pgfmathsetlength{\pgf@y}{#2}%
\pgfmathsetlength{\pgf@x}{#1}%
}
\def\pgfqpointpolar#1#2{%
\global\pgf@x=#2%
\global\pgf@y=\pgf@x%
\pgfmathcos@{#1}%
\global\pgf@x=\pgfmathresult\pgf@x%
\pgfmathsin@{#1}%
\global\pgf@y=\pgfmathresult\pgf@y\relax%
}
\def\pgfpointpolarxy#1#2{%
\pgfutil@in@{and }{#2}%
\ifpgfutil@in@%
\pgf@polarxy@#2\@@%
\else%
\pgf@polarxy@#2and #2\@@%
\fi%
\pgfmathparse{#1}%
\let\pgfpoint@angle=\pgfmathresult%
\pgfmathcos@{\pgfpoint@angle}%
\pgf@xa=\pgfmathresult\pgf@xa%
\pgfmathsin@{\pgfpoint@angle}%
\pgf@ya=\pgfmathresult\pgf@ya%
\global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@xx%
\global\advance\pgf@x by \pgf@sys@tonumber{\pgf@ya}\pgf@yx%
\global\pgf@y=\pgf@sys@tonumber{\pgf@xa}\pgf@xy%
\global\advance\pgf@y by \pgf@sys@tonumber{\pgf@ya}\pgf@yy}
\def\pgf@polarxy@#1and #2\@@{%
\pgfmathsetlength{\pgf@xa}{#1}%
\pgfmathsetlength{\pgf@ya}{#2}%
}
\def\pgfpointcylindrical#1#2#3{%
\pgfpointpolarxy{#1}{#2}%
\pgfmathparse{#3}%
\global\advance\pgf@x by \pgfmathresult\pgf@zx%
\global\advance\pgf@y by \pgfmathresult\pgf@zy}
\def\pgfpointspherical#1#2#3{%
\pgfmathparse{#1}%
\let\pgfpoint@angle=\pgfmathresult%
\pgfmathsin@{\pgfpoint@angle}%
\pgf@xb=\pgfmathresult\pgf@xx%
\pgf@yb=\pgfmathresult\pgf@xy%
\pgfmathcos@{\pgfpoint@angle}%
\advance\pgf@xb by \pgfmathresult\pgf@yx%
\advance\pgf@yb by \pgfmathresult\pgf@yy%
\pgfmathparse{#2}%
\let\pgfpoint@angle=\pgfmathresult%
\pgfmathcos@{\pgfpoint@angle}%
\pgf@xc=\pgfmathresult\pgf@xb%
\pgf@yc=\pgfmathresult\pgf@yb%
\pgfmathsin@{\pgfpoint@angle}%
\advance\pgf@xc by \pgfmathresult\pgf@zx%
\advance\pgf@yc by \pgfmathresult\pgf@zy%
\pgfmathparse{#3}%
\global\pgf@x=\pgfmathresult\pgf@xc%
\global\pgf@y=\pgfmathresult\pgf@yc\relax%
}
\def\pgfpointxy#1#2{%
\pgfmathparse{#1}%
\let\pgftemp@x=\pgfmathresult%
\pgfmathparse{#2}%
\let\pgftemp@y=\pgfmathresult%
\global\pgf@x=\pgftemp@x\pgf@xx%
\global\advance\pgf@x by \pgftemp@y\pgf@yx%
\global\pgf@y=\pgftemp@x\pgf@xy%
\global\advance\pgf@y by \pgftemp@y\pgf@yy}
\def\pgfqpointxy#1#2{%
\global\pgf@x=#1\pgf@xx%
\global\advance\pgf@x by #2\pgf@yx%
\global\pgf@y=#1\pgf@xy%
\global\advance\pgf@y by #2\pgf@yy}
\def\pgfpointxyz#1#2#3{%
\pgfmathparse{#1}%
\let\pgftemp@x=\pgfmathresult%
\pgfmathparse{#2}%
\let\pgftemp@y=\pgfmathresult%
\pgfmathparse{#3}%
\let\pgftemp@z=\pgfmathresult%
\global\pgf@x=\pgftemp@x\pgf@xx%
\global\advance\pgf@x by \pgftemp@y\pgf@yx%
\global\advance\pgf@x by \pgftemp@z\pgf@zx%
\global\pgf@y=\pgftemp@x\pgf@xy%
\global\advance\pgf@y by \pgftemp@y\pgf@yy%
\global\advance\pgf@y by \pgftemp@z\pgf@zy}
\def\pgfqpointxyz#1#2#3{%
\global\pgf@x=#1\pgf@xx%
\global\advance\pgf@x by #2\pgf@yx%
\global\advance\pgf@x by #3\pgf@zx%
\global\pgf@y=#1\pgf@xy%
\global\advance\pgf@y by #2\pgf@yy%
\global\advance\pgf@y by #3\pgf@zy}
\def\pgfsetxvec#1{%
\pgf@process{#1}%
\pgf@xx=\pgf@x%
\pgf@xy=\pgf@y%
\ignorespaces}
\def\pgfsetyvec#1{%
\pgf@process{#1}%
\pgf@yx=\pgf@x%
\pgf@yy=\pgf@y%
\ignorespaces}
\def\pgfsetzvec#1{%
\pgf@process{#1}%
\pgf@zx=\pgf@x%
\pgf@zy=\pgf@y%
\ignorespaces}
\pgfsetxvec{\pgfpoint{1cm}{0cm}}
\pgfsetyvec{\pgfpoint{0cm}{1cm}}
\pgfsetzvec{\pgfpoint{-0.385cm}{-0.385cm}}
\def\pgfpointnormalised#1{%
\pgf@process{#1}%
\pgfmathatantwo{\the\pgf@y}{\the\pgf@x}%
\let\pgf@tmp=\pgfmathresult%
\pgfmathcos@{\pgf@tmp}%
\pgf@x=\pgfmathresult pt\relax%
\pgfmathsin@{\pgf@tmp}%
\pgf@y=\pgfmathresult pt\relax%
}
\def\pgfpointborderrectangle#1#2{%
\pgf@process{#2}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\ifnum\pgf@xa<0\relax%
\global\pgf@x=-\pgf@x%
\fi%
\ifnum\pgf@ya<0\relax%
\global\pgf@y=-\pgf@y%
\fi%
\pgf@xc=.125\pgf@x%
\pgf@yc=.125\pgf@y%
\c@pgf@counta=\pgf@xc%
\c@pgf@countb=\pgf@yc%
\ifnum\c@pgf@countb<\c@pgf@counta%
\ifnum\c@pgf@counta<255\relax%
\global\pgf@y=\pgf@yb\relax%
\global\pgf@x=0pt\relax%
\else%
\pgf@xc=8192pt%
\divide\pgf@xc by\c@pgf@counta%
\global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
\global\pgf@y=\pgf@sys@tonumber{\pgf@xb}\pgf@y%
\ifnum\pgf@y<\pgf@yb%
\global\pgf@x=\pgf@xb%
\else%
\ifnum\c@pgf@countb<255\relax%
\global\pgf@x=\pgf@xb\relax%
\global\pgf@y=0pt\relax%
\else%
\pgf@yc=8192pt%
\divide\pgf@yc by\c@pgf@countb%
\global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
\global\pgf@x=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
\global\pgf@y=\pgf@yb%
\fi%
\fi%
\fi%
\else%
\ifnum\c@pgf@countb<255\relax%
\global\pgf@x=\pgf@xb\relax%
\global\pgf@y=0pt\relax%
\else%
\pgf@yc=8192pt%
\divide\pgf@yc by\c@pgf@countb%
\global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
\global\pgf@x=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
\ifnum\pgf@x<\pgf@xb%
\global\pgf@y=\pgf@yb%
\else%
\ifnum\c@pgf@counta<255\relax%
\global\pgf@y=\pgf@yb\relax%
\global\pgf@x=0pt\relax%
\else%
\pgf@xc=8192pt%
\divide\pgf@xc by\c@pgf@counta%
\global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
\global\pgf@y=\pgf@sys@tonumber{\pgf@xb}\pgf@y%
\global\pgf@x=\pgf@xb%
\fi%
\fi%
\fi%
\fi%
\ifnum\pgf@xa<0\relax\global\pgf@x=-\pgf@x\fi%
\ifnum\pgf@ya<0\relax\global\pgf@y=-\pgf@y\fi%
}
\def\pgfpointborderellipse#1#2{%
\pgf@process{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\ifdim\pgf@xa=\pgf@ya%
\pgf@process{\pgfpointnormalised{#1}}%
\global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
\global\pgf@y=\pgf@sys@tonumber{\pgf@xa}\pgf@y%
\else%
\ifdim\pgf@xa<\pgf@ya%
\c@pgf@countb=\pgf@ya%
\divide\c@pgf@countb by65536\relax%
\global\divide\pgf@x by\c@pgf@countb%
\global\divide\pgf@y by\c@pgf@countb%
\pgf@xc=\pgf@x%
\pgf@yc=8192pt%
\global\pgf@y=.125\pgf@y%
\c@pgf@countb=\pgf@y%
\divide\pgf@yc by\c@pgf@countb%
\pgf@process{#1}%
\global\pgf@y=\pgf@sys@tonumber{\pgf@yc}\pgf@y%
\global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
\pgf@process{\pgfpointnormalised{}}%
\global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
\global\pgf@y=\pgf@sys@tonumber{\pgf@ya}\pgf@y%
\else%
\c@pgf@countb=\pgf@xa%
\divide\c@pgf@countb by65536\relax%
\global\divide\pgf@x by\c@pgf@countb%
\global\divide\pgf@y by\c@pgf@countb%
\pgf@yc=\pgf@y%
\pgf@xc=8192pt%
\global\pgf@x=.125\pgf@x%
\c@pgf@countb=\pgf@x%
\divide\pgf@xc by\c@pgf@countb%
\pgf@process{#1}%
\global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
\global\pgf@x=\pgf@sys@tonumber{\pgf@xc}\pgf@x%
\pgf@process{\pgfpointnormalised{}}%
\global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
\global\pgf@y=\pgf@sys@tonumber{\pgf@ya}\pgf@y%
\fi%
\fi%
}
\def\pgfextractx#1#2{%
\pgf@process{#2}%
#1=\pgf@x\relax}
\def\pgfextracty#1#2{%
\pgf@process{#2}%
#1=\pgf@y\relax}
\def\pgfgetlastxy#1#2{%
\edef#1{\the\pgf@x}%
\edef#2{\the\pgf@y}%
}%
\def\pgf@def#1#2#3{\expandafter\def\csname pgf@#1#2\endcsname{#3}}
\pgf@def{cosfrac}{0}{1}
\pgf@def{cosfrac}{1}{0.99995} \pgf@def{cosfrac}{2}{0.9998}
\pgf@def{cosfrac}{3}{0.99955} \pgf@def{cosfrac}{4}{0.999201}
\pgf@def{cosfrac}{5}{0.998752} \pgf@def{cosfrac}{6}{0.998205}
\pgf@def{cosfrac}{7}{0.997559} \pgf@def{cosfrac}{8}{0.996815}
\pgf@def{cosfrac}{9}{0.995974} \pgf@def{cosfrac}{10}{0.995037}
\pgf@def{cosfrac}{11}{0.994004} \pgf@def{cosfrac}{12}{0.992877}
\pgf@def{cosfrac}{13}{0.991656} \pgf@def{cosfrac}{14}{0.990342}
\pgf@def{cosfrac}{15}{0.988936} \pgf@def{cosfrac}{16}{0.987441}
\pgf@def{cosfrac}{17}{0.985856} \pgf@def{cosfrac}{18}{0.984183}
\pgf@def{cosfrac}{19}{0.982424} \pgf@def{cosfrac}{20}{0.980581}
\pgf@def{cosfrac}{21}{0.978653} \pgf@def{cosfrac}{22}{0.976644}
\pgf@def{cosfrac}{23}{0.974555} \pgf@def{cosfrac}{24}{0.972387}
\pgf@def{cosfrac}{25}{0.970143} \pgf@def{cosfrac}{26}{0.967823}
\pgf@def{cosfrac}{27}{0.965429} \pgf@def{cosfrac}{28}{0.962964}
\pgf@def{cosfrac}{29}{0.960429} \pgf@def{cosfrac}{30}{0.957826}
\pgf@def{cosfrac}{31}{0.955157} \pgf@def{cosfrac}{32}{0.952424}
\pgf@def{cosfrac}{33}{0.949629} \pgf@def{cosfrac}{34}{0.946773}
\pgf@def{cosfrac}{35}{0.943858} \pgf@def{cosfrac}{36}{0.940887}
\pgf@def{cosfrac}{37}{0.937862} \pgf@def{cosfrac}{38}{0.934784}
\pgf@def{cosfrac}{39}{0.931655} \pgf@def{cosfrac}{40}{0.928477}
\pgf@def{cosfrac}{41}{0.925252} \pgf@def{cosfrac}{42}{0.921982}
\pgf@def{cosfrac}{43}{0.918669} \pgf@def{cosfrac}{44}{0.915315}
\pgf@def{cosfrac}{45}{0.911922} \pgf@def{cosfrac}{46}{0.90849}
\pgf@def{cosfrac}{47}{0.905024} \pgf@def{cosfrac}{48}{0.901523}
\pgf@def{cosfrac}{49}{0.89799} \pgf@def{cosfrac}{50}{0.894427}
\pgf@def{cosfrac}{51}{0.890835} \pgf@def{cosfrac}{52}{0.887217}
\pgf@def{cosfrac}{53}{0.883573} \pgf@def{cosfrac}{54}{0.879905}
\pgf@def{cosfrac}{55}{0.876216} \pgf@def{cosfrac}{56}{0.872506}
\pgf@def{cosfrac}{57}{0.868777} \pgf@def{cosfrac}{58}{0.865031}
\pgf@def{cosfrac}{59}{0.861269} \pgf@def{cosfrac}{60}{0.857493}
\pgf@def{cosfrac}{61}{0.853704} \pgf@def{cosfrac}{62}{0.849903}
\pgf@def{cosfrac}{63}{0.846092} \pgf@def{cosfrac}{64}{0.842271}
\pgf@def{cosfrac}{65}{0.838444} \pgf@def{cosfrac}{66}{0.834609}
\pgf@def{cosfrac}{67}{0.83077} \pgf@def{cosfrac}{68}{0.826927}
\pgf@def{cosfrac}{69}{0.82308} \pgf@def{cosfrac}{70}{0.819232}
\pgf@def{cosfrac}{71}{0.815383} \pgf@def{cosfrac}{72}{0.811534}
\pgf@def{cosfrac}{73}{0.807687} \pgf@def{cosfrac}{74}{0.803842}
\pgf@def{cosfrac}{75}{0.8} \pgf@def{cosfrac}{76}{0.796162}
\pgf@def{cosfrac}{77}{0.792329} \pgf@def{cosfrac}{78}{0.788502}
\pgf@def{cosfrac}{79}{0.784682} \pgf@def{cosfrac}{80}{0.780869}
\pgf@def{cosfrac}{81}{0.777064} \pgf@def{cosfrac}{82}{0.773268}
\pgf@def{cosfrac}{83}{0.769481} \pgf@def{cosfrac}{84}{0.765705}
\pgf@def{cosfrac}{85}{0.761939} \pgf@def{cosfrac}{86}{0.758185}
\pgf@def{cosfrac}{87}{0.754443} \pgf@def{cosfrac}{88}{0.750714}
\pgf@def{cosfrac}{89}{0.746997} \pgf@def{cosfrac}{90}{0.743294}
\pgf@def{cosfrac}{91}{0.739605} \pgf@def{cosfrac}{92}{0.735931}
\pgf@def{cosfrac}{93}{0.732272} \pgf@def{cosfrac}{94}{0.728628}
\pgf@def{cosfrac}{95}{0.724999} \pgf@def{cosfrac}{96}{0.721387}
\pgf@def{cosfrac}{97}{0.717792} \pgf@def{cosfrac}{98}{0.714213}
\pgf@def{cosfrac}{99}{0.710651} \pgf@def{cosfrac}{100}{0.707107}
\let\pgfpointtransformednonlinear\pgfpointtransformed
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepoints.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorequick.code.tex ====
\ProvidesFileRCS{pgfcorequick.code.tex}
\def\pgfpathqmoveto#1#2{\pgfsyssoftpath@moveto{#1}{#2}}
\def\pgfpathqlineto#1#2{\pgfsyssoftpath@lineto{#1}{#2}}
\def\pgfpathqcurveto#1#2#3#4#5#6{\pgfsyssoftpath@curveto{#1}{#2}{#3}{#4}{#5}{#6}}
\def\pgfpathqcircle#1{%
{%
\pgf@x=#1%
\pgf@y=0.5522847\pgf@x%
\pgfsyssoftpath@moveto{\the\pgf@x}{0pt}%
\pgfsyssoftpath@curveto{\the\pgf@x}{\the\pgf@y}{\the\pgf@y}{\the\pgf@x}{0pt}{\the\pgf@x}%
\pgfsyssoftpath@curveto{-\the\pgf@y}{\the\pgf@x}{-\the\pgf@x}{\the\pgf@y}{-\the\pgf@x}{0pt}%
\pgfsyssoftpath@curveto{-\the\pgf@x}{-\the\pgf@y}{-\the\pgf@y}{-\the\pgf@x}{0pt}{-\the\pgf@x}%
\pgfsyssoftpath@curveto{\the\pgf@y}{-\the\pgf@x}{\the\pgf@x}{-\the\pgf@y}{\the\pgf@x}{0pt}%
\pgfsyssoftpath@closepath%
}%
}
\def\pgfusepathqstroke{%
\pgfsyssoftpath@flushcurrentpath%
\pgfsys@stroke%
\pgf@resetpathsizes%
}
\def\pgfusepathqfill{%
\pgfsyssoftpath@flushcurrentpath%
\pgfsys@fill%
\pgf@resetpathsizes%
}
\def\pgfusepathqfillstroke{%
\pgfsyssoftpath@flushcurrentpath%
\pgfsys@fillstroke%
\pgf@resetpathsizes%
}
\def\pgfusepathqclip{%
\pgfsyssoftpath@flushcurrentpath%
\pgfsys@clipnext%
\pgfsys@discardpath%
\pgf@resetpathsizes%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorequick.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorerdf.code.tex ====
\ProvidesFileRCS{pgfcorerdf.code.tex}
\def\pgfrdfabout#1{\pgfsys@rdf@about{#1}}
\def\pgfrdfcontent#1{\pgfsys@rdf@content{#1}}
\def\pgfrdfdatatype#1{\pgfsys@rdf@datatype{#1}}
\def\pgfrdfhref#1{\pgfsys@rdf@href{#1}}
\def\pgfrdfinlist{\pgfsys@rdf@inlist}
\def\pgfrdfprefix#1{\pgfsys@rdf@prefix{#1}}
\def\pgfrdfproperty#1{\pgfsys@rdf@property{#1}}
\def\pgfrdfrel#1{\pgfsys@rdf@rel{#1}}
\def\pgfrdfresource#1{\pgfsys@rdf@resource{#1}}
\def\pgfrdfrev#1{\pgfsys@rdf@rev{#1}}
\def\pgfrdfsrc#1{\pgfsys@rdf@src{#1}}
\def\pgfrdftypeof#1{\pgfsys@rdf@typeof{#1}}
\def\pgfrdfvocab#1{\pgfsys@rdf@vocab{#1}}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorerdf.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorescopes.code.tex ====
\ProvidesFileRCS{pgfcorescopes.code.tex}
\newbox\pgfpic
\newbox\pgf@hbox
\newbox\pgf@layerbox@main
\newcount\pgf@picture@serial@count
\newif\ifpgfrememberpicturepositiononpage
\def\pgfscope{%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
\pgfsys@beginscope%
\pgf@resetpathsizes%
\edef\pgfscope@linewidth{\the\pgflinewidth}%
\let\pgfscope@stroke@color=\pgf@strokecolor@global%
\let\pgfscope@fill@color=\pgf@fillcolor@global%
\begingroup}
\def\endpgfscope{%
\endgroup%
\global\pgflinewidth=\pgfscope@linewidth%
\global\let\pgf@strokecolor@global=\pgfscope@stroke@color%
\global\let\pgf@fillcolor@global=\pgfscope@fill@color%
\pgfsys@endscope}
\def\pgfqbox#1{%
\pgfsys@hbox#1%
}
\def\pgfqboxsynced#1{%
\pgfsys@hboxsynced#1%
}
\def\pgftext{\pgfutil@ifnextchar[\pgf@text{\pgf@text[]}}%
\def\pgf@text[#1]{%
\def\pgf@text@options{#1}%
\pgf@maketext\pgf@after@text}
\def\pgf@after@text{%
{%
\def\pgf@text@hshift{center}%
\def\pgf@text@vshift{center}%
\expandafter\pgf@text@setkeys\expandafter{\pgf@text@options}%
\csname pgf@halign\pgf@text@hshift\endcsname%
\csname pgf@valign\pgf@text@vshift\endcsname%
\pgfapproximatenonlineartransformation%
\pgf@process{\pgfpointtransformed{\pgfqpoint{0pt}{\dp\pgf@hbox}}}%
\pgf@protocolsizes{\pgf@x}{\pgf@y}%
\pgf@process{\pgfpointtransformed{\pgfqpoint{\wd\pgf@hbox}{\dp\pgf@hbox}}}%
\pgf@protocolsizes{\pgf@x}{\pgf@y}%
\pgf@process{\pgfpointtransformed{\pgfqpoint{0pt}{\ht\pgf@hbox}}}%
\pgf@protocolsizes{\pgf@x}{\pgf@y}%
\pgf@process{\pgfpointtransformed{\pgfqpoint{\wd\pgf@hbox}{\ht\pgf@hbox}}}%
\pgf@protocolsizes{\pgf@x}{\pgf@y}%
\pgfqboxsynced{\pgf@hbox}%
}%
}
\def\pgf@text@setkeys{\pgfqkeys{/pgf/text}}%
\pgfkeys{/pgf/text/left/.code=\def\pgf@text@hshift{left}}
\pgfkeys{/pgf/text/center/.code=}
\pgfkeys{/pgf/text/right/.code=\def\pgf@text@hshift{right}}
\pgfkeys{/pgf/text/top/.code=\def\pgf@text@vshift{top}}
\pgfkeys{/pgf/text/bottom/.code=\def\pgf@text@vshift{bottom}}
\pgfkeys{/pgf/text/base/.code=\def\pgf@text@vshift{base}}
\pgfkeys{/pgf/text/at/.cd,.code=\pgftransformshift{#1},.value required}
\pgfkeys{/pgf/text/x/.cd,.code=\pgftransformxshift{#1},.value required}
\pgfkeys{/pgf/text/y/.cd,.code=\pgftransformyshift{#1},.value required}
\pgfkeys{/pgf/text/rotate/.cd,.code=\pgftransformrotate{#1},.value required}
\def\pgf@halignleft{}%
\def\pgf@haligncenter{\pgftransformxshift{+-.5\wd\pgf@hbox}}
\def\pgf@halignright{\pgftransformxshift{+-\wd\pgf@hbox}}%
\def\pgf@valignbase{}%
\def\pgf@valignbottom{\pgftransformyshift{+\dp\pgf@hbox}}%
\def\pgf@valigncenter{\pgftransformyshift{+.5\dp\pgf@hbox}\pgftransformyshift{+-.5\ht\pgf@hbox}}%
\def\pgf@valigntop{\pgftransformyshift{+-\ht\pgf@hbox}}%
\def\pgf@maketext#1{%
\def\pgf@@maketextafter{#1}%
\setbox\pgf@hbox=\hbox\bgroup%
\pgfinterruptpicture%
\bgroup%
\aftergroup\pgf@collectresetcolor%
\let\next=%
}
\def\pgf@collectresetcolor{%
\pgfutil@ifnextchar\reset@color%
{\reset@color\afterassignment\pgf@collectresetcolor\let\pgf@temp=}%
{\pgf@textdone}%
}
\def\pgf@textdone{%
\endpgfinterruptpicture%
\egroup%
\pgf@@maketextafter%
}
\long\def\pgf@makehbox#1{%
\setbox\pgf@hbox=\hbox{{%
\pgfinterruptpicture%
#1%
\endpgfinterruptpicture%
}}}
\def\pgfresetboundingbox{%
\global\pgf@picmaxx=-16000pt\relax%
\global\pgf@picminx=16000pt\relax%
\global\pgf@picmaxy=-16000pt\relax%
\global\pgf@picminy=16000pt\relax%
}%
\def\pgfpicture{%
\begingroup%
\pgfpicturetrue%
\global\advance\pgf@picture@serial@count by1\relax%
\edef\pgfpictureid{pgfid\the\pgf@picture@serial@count}%
\let\pgf@nodecallback=\pgfutil@gobble%
\pgf@picmaxx=-16000pt\relax%
\pgf@picminx=16000pt\relax%
\pgf@picmaxy=-16000pt\relax%
\pgf@picminy=16000pt\relax%
\pgf@relevantforpicturesizetrue%
\pgf@resetpathsizes%
\pgfutil@ifnextchar\bgroup\pgf@oldpicture\pgf@picture}
\def\pgf@oldpicture#1#2#3#4{%
\pgfmathsetlength\pgf@picminx{#1}%
\pgfmathsetlength\pgf@picminy{#2}%
\pgfmathsetlength\pgf@picmaxx{#3}%
\pgfmathsetlength\pgf@picmaxy{#4}%
\pgf@relevantforpicturesizefalse%
\pgf@picture}
\def\pgf@picture{%
\setbox\pgfpic\hbox to0pt\bgroup%
\begingroup%
\pgfsys@beginpicture%
\pgfsys@beginscope%
\begingroup%
\pgfsetcolor{.}%
\pgfsetlinewidth{0.4pt}%
\pgftransformreset%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
\begingroup%
\let\pgf@setlengthorig=\setlength%
\let\pgf@addtolengthorig=\addtolength%
\let\pgf@selectfontorig=\selectfont%
\let\setlength=\pgf@setlength%
\let\addtolength=\pgf@addtolength%
\let\selectfont=\pgf@selectfont%
\nullfont\spaceskip0pt\xspaceskip0pt%
\tracinglostchars=%
\ifnum\tracinglostchars>2 2\else\tracinglostchars\fi
\setbox\pgf@layerbox@main\hbox to0pt\bgroup%
\begingroup%
}
\def\endpgfpicture{%
\ifpgfrememberpicturepositiononpage%
\hbox to0pt{\pgfsys@markposition{\pgfpictureid}}%
\fi%
\ifdim\pgf@picmaxx=-16000pt\relax%
\global\pgf@picmaxx=0pt\relax%
\global\pgf@picminx=0pt\relax%
\global\pgf@picmaxy=0pt\relax%
\global\pgf@picminy=0pt\relax%
\fi%
\pgf@relevantforpicturesizefalse%
\pgf@process{\pgf@baseline}%
\xdef\pgf@shift@baseline{\the\pgf@y}%
\pgf@process{\pgf@trimleft}%
\global\advance\pgf@x by-\pgf@picminx
\xdef\pgf@trimleft@final{-\the\pgf@x}%
\pgf@process{\pgf@trimright}%
\global\advance\pgf@x by-\pgf@picmaxx
\xdef\pgf@trimright@final{\the\pgf@x}%
\pgf@remember@layerlist@globally
\endgroup%
\hss%
\egroup%
\pgf@restore@layerlist@from@global
\pgf@insertlayers%
\endgroup%
\pgfsys@discardpath%
\endgroup%
\pgfsys@endscope%
\pgfsys@endpicture%
\endgroup%
\hss
\egroup%
\pgfsys@typesetpicturebox\pgfpic%
\endgroup%
}
\def\pgf@remember@layerlist@globally{%
\global\let\pgf@layerlist@=\pgf@layerlist
}%
\def\pgf@restore@layerlist@from@global{%
\let\pgf@layerlist=\pgf@layerlist@
}%
\def\pgf@insertlayers{%
\box\pgf@layerbox@main%
}
\def\pgf@selectfont{\pgf@selectfontorig\nullfont}
\def\pgf@setlength#1#2{%
\begingroup%
\pgfutil@selectfont%
\pgf@setlengthorig#1{#2}%
\expandafter%
\endgroup%
\expandafter#1\expandafter=\the#1\relax}
\def\pgf@addtolength#1#2{%
\begingroup%
\pgfutil@selectfont%
\pgf@addtolengthorig#1{#2}%
\expandafter%
\endgroup%
\expandafter#1\expandafter=\the#1\relax}
\def\pgfsetbaselinepointlater#1{\def\pgf@baseline{#1}}
\def\pgfsetbaselinepointnow#1{%
\pgf@process{#1}%
\edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
\pgfsetbaselinepointlater{\pgf@setter@baseline}%
}
\def\pgf@default@text{default}%
\def\pgfsetbaseline#1{%
\def\pgf@temp{#1}%
\ifx\pgf@temp\pgf@default@text
\pgfsetbaseline{\pgf@picminy}%
\else
\pgfsetbaselinepointlater{\pgfpoint{0pt}{#1}}%
\fi
}
\pgfsetbaseline{\pgf@picminy}
\newif\ifpgf@trim@lowlevel
\pgfkeys{
/pgf/trim lowlevel/.is if=pgf@trim@lowlevel,
/pgf/trim lowlevel/.default=true,
}
\def\pgfsettrimleftpointlater#1{\def\pgf@trimleft{#1}}
\def\pgfsettrimleftpointnow#1{%
\pgf@process{#1}%
\edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
\pgfsettrimleftpointlater{\pgf@setter@baseline}%
}
\def\pgfsettrimleft#1{%
\def\pgf@temp{#1}%
\ifx\pgf@temp\pgf@default@text
\pgfsettrimleft{\pgf@picminx}
\else
\pgfsettrimleftpointlater{\pgfpoint{#1}{0pt}}%
\fi
}
\pgfsettrimleft{\pgf@picminx}
\def\pgfsettrimrightpointlater#1{\def\pgf@trimright{#1}}
\def\pgfsettrimrightpointnow#1{%
\pgf@process{#1}%
\edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
\pgfsettrimrightpointlater{\pgf@setter@baseline}%
}
\def\pgfsettrimright#1{%
\def\pgf@temp{#1}%
\ifx\pgf@temp\pgf@default@text
\pgfsettrimright{\pgf@picmaxx}%
\else
\pgfsettrimrightpointlater{\pgfpoint{#1}{0pt}}%
\fi
}
\pgfsettrimright{\pgf@picmaxx}
\def\pgfinterruptpath
{%
\begingroup%
\edef\pgf@interrupt@savex{\the\pgf@path@lastx}%
\edef\pgf@interrupt@savey{\the\pgf@path@lasty}%
\pgf@getpathsizes\pgf@interrupt@pathsizes%
\pgfsyssoftpath@getcurrentpath\pgf@interrupt@path%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
\let\pgf@interrupt@lastmoveto=\pgfsyssoftpath@lastmoveto%
\begingroup%
}
\def\endpgfinterruptpath
{%
\endgroup%
\pgfsyssoftpath@setcurrentpath\pgf@interrupt@path%
\pgf@setpathsizes\pgf@interrupt@pathsizes%
\global\pgf@path@lastx\pgf@interrupt@savex%
\global\pgf@path@lasty\pgf@interrupt@savey%
\global\let\pgfsyssoftpath@lastmoveto\pgf@interrupt@lastmoveto%
\endgroup%
}
\def\pgfinterruptboundingbox
{%
\begingroup%
\edef\pgf@interrupt@savemaxx{\the\pgf@picmaxx}%
\edef\pgf@interrupt@saveminx{\the\pgf@picminx}%
\edef\pgf@interrupt@savemaxy{\the\pgf@picmaxy}%
\edef\pgf@interrupt@saveminy{\the\pgf@picminy}%
\pgf@picmaxx=-16000pt\relax%
\pgf@picminx=16000pt\relax%
\pgf@picmaxy=-16000pt\relax%
\pgf@picminy=16000pt\relax%
\pgf@size@hookedfalse%
\let\pgf@path@size@hook=\pgfutil@empty%
}
\def\endpgfinterruptboundingbox
{%
\global\pgf@picmaxx=\pgf@interrupt@savemaxx%
\global\pgf@picmaxy=\pgf@interrupt@savemaxy%
\global\pgf@picminx=\pgf@interrupt@saveminx%
\global\pgf@picminy=\pgf@interrupt@saveminy%
\endgroup%
}
\def\pgfidscope{\pgfsys@begin@idscope}
\def\endpgfidscope{\pgfsys@end@idscope}
\let\startpgfidscope\pgfidscope
\let\stoppgfidscope\pgfendidscope
\def\pgfuseid#1{%
\edef\pgf@temp{#1}%
\ifx\pgf@temp\pgfutil@empty%
\else%
\pgf@lookup@id{#1}%
\pgfsys@use@id{\pgf@next@id}%
\expandafter\xdef\csname pgf@id@names@#1\endcsname{{\pgf@next@id}{}}%
\fi%
}
\def\pgf@lookup@id#1{%
\expandafter\let\expandafter\pgf@id@name\csname pgf@id@names@#1\endcsname%
\ifx\pgf@id@name\relax%
\let\pgf@prev@id\pgfutil@empty%
\let\pgf@next@id\pgfutil@empty%
\else%
\expandafter\pgf@id@parse\pgf@id@name%
\fi%
\ifx\pgf@next@id\pgfutil@empty%
\pgfsys@new@id\pgf@next@id%
\expandafter\xdef\csname pgf@id@names@#1\endcsname{{\pgf@prev@id}{\pgf@next@id}}%
\fi%
}
\def\pgf@id@parse#1#2{%
\def\pgf@prev@id{#1}%
\def\pgf@next@id{#2}%
}
\def\pgfclearid{%
\pgfsys@clear@id%
}
\def\pgfidrefnextuse#1#2{%
\edef\pgf@temp{#2}\ifx\pgf@temp\pgfutil@empty\pgferror{Missing name reference for ``\string#1''}\fi%
\pgf@lookup@id{#2}%
\let#1\pgf@next@id%
}
\def\pgfidrefprevuse#1#2{%
\edef\pgf@temp{#2}\ifx\pgf@temp\pgfutil@empty\pgferror{Missing name reference for ``\string#1''}\fi%
\pgf@lookup@id{#2}%
\let#1\pgf@prev@id%
}
\def\pgfusetype#1{%
\edef\pgf@temp{#1}%
\expandafter\pgfutil@ifnextchar\expandafter.\expandafter\pgf@id@use@type@add\expandafter\pgf@id@use@type@replace\pgf@temp\pgf@stop
}
\def\pgf@id@use@type@add.#1\pgf@stop{\pgfsys@append@type{#1}}
\def\pgf@id@use@type@replace#1\pgf@stop{\pgfsys@use@type{#1}}
\def\pgfpushtype{\pgfsys@push@type}
\def\pgfpoptype{\pgfsys@pop@type}
\def\pgfaliasid#1#2{%
\expandafter\let\expandafter\pgf@temp\csname pgf@id@names@#2\endcsname%
\expandafter\let\csname pgf@id@names@#1\endcsname\pgf@temp%
}
\def\pgfgaliasid#1#2{%
\expandafter\let\expandafter\pgf@temp\csname pgf@id@names@#2\endcsname%
\expandafter\global\expandafter\let\csname pgf@id@names@#1\endcsname\pgf@temp%
}
\def\pgfifidreferenced#1#2#3{%
\expandafter\let\expandafter\pgf@id@name\csname pgf@id@names@#1\endcsname%
\ifx\pgf@id@name\relax%
#3%
\else
\expandafter\pgf@id@parse\pgf@id@name%
\ifx\pgf@next@id\pgfutil@empty%
#3%
\else%
#2%
\fi%
\fi%
}
\def\pgfinterruptpicture
{%
\begingroup%
\csname tikz@inside@picturefalse\endcsname%
\pgfinterruptboundingbox%
\pgftransformreset%
\pgfinterruptpath%
\ifx\pgf@selectfontorig\@undefined%
\else%
\let\setlength\pgf@setlengthorig%
\let\addtolength\pgf@addtolengthorig%
\let\selectfont\pgf@selectfontorig%
\fi%
\pgfutil@selectfont%
\pgfpicturefalse%
\let\pgf@positionnodelater@macro\relax%
\pgf@savelayers%
}
\def\endpgfinterruptpicture
{%
\pgf@restorelayers%
\endpgfinterruptpath%
\endpgfinterruptboundingbox%
\endgroup%
}
\let\pgf@savelayers=\relax
\let\pgf@restorelayers=\relax
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorescopes.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreshade.code.tex ====
\ProvidesFileRCS{pgfcoreshade.code.tex}
\newdimen\pgf@max
\newcount\pgf@sys@shading@range@num
\def\pgf@parsefunc#1{%
\edef\temp{{#1}}%
\expandafter\pgf@convertstring\temp%
\edef\temp{{\pgf@conv}}%
\expandafter\pgf@@parsefunc\temp}
\def\pgf@@parsefunc#1{%
\let\pgf@bounds=\pgfutil@empty%
\let\pgf@funcs=\pgfutil@empty%
\let\pgf@psfuncs=\pgfutil@empty%
\let\pgf@encode=\pgfutil@empty%
\let\pgf@sys@shading@ranges=\pgfutil@empty%
\pgf@sys@shading@range@num=0\relax%
\csname pgf@parsefirst\pgf@shading@model\endcsname[#1; ]%
\csname pgf@parselastdom\pgf@shading@model\endcsname[#1; ]%
\csname pgf@parsemid\pgf@shading@model\endcsname[#1; ]%
\ifx\pgf@bounds\pgfutil@empty%
\edef\pgf@pdfparseddomain{0 1}%
\edef\pgf@pdfparsedfunction{\pgf@singlefunc\space}%
\else%
\edef\pgf@pdfparseddomain{\pgf@doma\space\pgf@domb}%
\edef\pgf@pdfparsedfunction{%
<< /FunctionType 3 /Domain [\pgf@doma\space\pgf@domb] /Functions
[\pgf@funcs\space] /Bounds [\pgf@bounds] /Encode [0 1 \pgf@encode]
>> }%
\fi%
\xdef\pgf@psfuncs{\pgf@psfuncs}%
}
\def\pgf@parsefirstrgb[rgb(#1)=(#2,#3,#4)#5]{%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@start@pos{\the\pgf@x}%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
\pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
\edef\pgf@sys@shading@start@rgb{\pgf@sys@rgb}%
\let\pgf@sys@prevcolor=\pgf@sys@shading@start@rgb%
\let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
\edef\pgf@prevcolor{\pgf@rgb}%
\edef\pgf@firstcolor{\pgf@rgb}}
\def\pgf@parselastdomrgb[rgb(#1)=(#2,#3,#4); {%
\pgfutil@ifnextchar]{%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@end@pos{\the\pgf@x}%
\pgf@max=\pgf@x\relax%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
\pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
\edef\pgf@sys@shading@end@rgb{\pgf@sys@rgb}%
\pgfutil@gobble}{\pgf@parselastdomrgb[}}
\def\pgf@parsemidrgb[rgb(#1)=(#2,#3,#4); {\pgf@parserestrgb[}
\def\pgf@parserestrgb[rgb(#1)=(#2,#3,#4); {%
\advance\pgf@sys@shading@range@num by1\relax%
\pgfutil@ifnextchar]{%
\pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
\edef\pgf@singlefunc{\space%
<< /FunctionType 2 /Domain [0 1] /C0
[\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
\edef\pgf@funcs{\pgf@funcs\space%
<< /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
[\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
\edef\pgf@psfuncs{\pgf@prevx\space \pgf@rgb\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@rgb}}}%
\edef\pgf@sys@prevpos{\the\pgf@x}%
\let\pgf@sys@prevcolor=\pgf@sys@rgb%
\pgfutil@gobble}{%
\pgfmathsetlength\pgf@x{#1}%
\pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
\edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@rgb}}}%
\edef\pgf@sys@prevpos{\the\pgf@x}%
\let\pgf@sys@prevcolor=\pgf@sys@rgb%
\edef\pgf@psfuncs{\pgf@prevx\space \pgf@rgb\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@encode{\pgf@encode\space0 1}%
\edef\pgf@singlefunc{\space%
<< /FunctionType 2 /Domain [0 1] /C0
[\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
\edef\pgf@funcs{\pgf@funcs\space%
<< /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
[\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
\edef\pgf@prevcolor{\pgf@rgb}%
\pgf@parserestrgb[}}
\def\pgf@getrgbtuplewithmixin#1#2#3{%
\pgfutil@definecolor{pgfshadetemp}{rgb}{#1,#2,#3}%
\pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
\pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
\expandafter\pgf@getrgb@@\pgf@rgbcolor!}
\def\pgf@getrgb@@#1,#2,#3!{%
\def\pgf@rgb{#1 #2 #3}%
\def\pgf@sys@rgb{{#1}{#2}{#3}}%
}
\def\pgf@parsefirstcmyk[cmyk(#1)=(#2,#3,#4,#5)#6]{%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@start@pos{\the\pgf@x}%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
\pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
\edef\pgf@sys@shading@start@cmyk{\pgf@sys@cmyk}%
\let\pgf@sys@prevcolor=\pgf@sys@shading@start@cmyk%
\let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
\edef\pgf@prevcolor{\pgf@cmyk}%
\edef\pgf@firstcolor{\pgf@cmyk}}
\def\pgf@parselastdomcmyk[cmyk(#1)=(#2,#3,#4,#5); {%
\pgfutil@ifnextchar]{%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@end@pos{\the\pgf@x}%
\pgf@max=\pgf@x\relax%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
\pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
\edef\pgf@sys@shading@end@cmyk{\pgf@sys@cmyk}%
\pgfutil@gobble}{\pgf@parselastdomcmyk[}}
\def\pgf@parsemidcmyk[cmyk(#1)=(#2,#3,#4,#5); {\pgf@parserestcmyk[}
\def\pgf@parserestcmyk[cmyk(#1)=(#2,#3,#4,#5); {%
\advance\pgf@sys@shading@range@num by1\relax%
\pgfutil@ifnextchar]{%
\pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
\edef\pgf@singlefunc{\space%
<< /FunctionType 2 /Domain [0 1] /C0
[\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
\edef\pgf@funcs{\pgf@funcs\space%
<< /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
[\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
\edef\pgf@psfuncs{\pgf@prevx\space
\pgf@cmyk\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@cmyk}}}%
\edef\pgf@sys@prevpos{\the\pgf@x}%
\let\pgf@sys@prevcolor=\pgf@sys@cmyk%
\pgfutil@gobble}{%
\pgfmathsetlength\pgf@x{#1}%
\pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
\edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@cmyk}}}%
\edef\pgf@sys@prevpos{\the\pgf@x}%
\let\pgf@sys@prevcolor=\pgf@sys@cmyk%
\edef\pgf@psfuncs{\pgf@prevx\space \pgf@cmyk\space
\pgf@prevcolor\space pgfshade \pgf@psfuncs}%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@encode{\pgf@encode\space0 1}%
\edef\pgf@singlefunc{\space%
<< /FunctionType 2 /Domain [0 1] /C0
[\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
\edef\pgf@funcs{\pgf@funcs\space%
<< /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
[\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
\edef\pgf@prevcolor{\pgf@cmyk}%
\pgf@parserestcmyk[}}
\def\pgf@getcmyktuplewithmixin#1#2#3#4{%
\pgfutil@definecolor{pgfshadetemp}{cmyk}{#1,#2,#3,#4}%
\pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
\pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor{cmyk}{\pgf@cmykcolor}%
\expandafter\pgf@getcmyk@@\pgf@cmykcolor!}
\def\pgf@getcmyk@@#1,#2,#3,#4!{%
\def\pgf@cmyk{#1 #2 #3 #4}%
\def\pgf@sys@cmyk{{#1}{#2}{#3}{#4}}%
}
\def\pgf@parsefirstgray[gray(#1)=(#2)#3]{%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@start@pos{\the\pgf@x}%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
\pgf@getgraytuplewithmixin{#2}%
\edef\pgf@sys@shading@start@gray{\pgf@sys@gray}%
\let\pgf@sys@prevcolor=\pgf@sys@shading@start@gray%
\let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
\edef\pgf@prevcolor{\pgf@gray}%
\edef\pgf@firstcolor{\pgf@gray}}
\def\pgf@parselastdomgray[gray(#1)=(#2); {%
\pgfutil@ifnextchar]{%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@end@pos{\the\pgf@x}%
\pgf@max=\pgf@x\relax%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
\pgf@getgraytuplewithmixin{#2}%
\edef\pgf@sys@shading@end@gray{\pgf@sys@gray}%
\pgfutil@gobble}{\pgf@parselastdomgray[}}
\def\pgf@parsemidgray[gray(#1)=(#2); {\pgf@parserestgray[}
\def\pgf@parserestgray[gray(#1)=(#2); {%
\advance\pgf@sys@shading@range@num by1\relax%
\pgfutil@ifnextchar]{%
\pgf@getgraytuplewithmixin{#2}%
\edef\pgf@singlefunc{\space%
<< /FunctionType 2 /Domain [0 1] /C0
[\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
\edef\pgf@funcs{\pgf@funcs\space%
<< /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
[\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
\edef\pgf@psfuncs{\pgf@prevx\space \pgf@gray\space
\pgf@prevcolor\space pgfshade \pgf@psfuncs}%
\pgfmathsetlength\pgf@x{#1}%
\edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@gray}}}%
\edef\pgf@sys@prevpos{\the\pgf@x}%
\let\pgf@sys@prevcolor=\pgf@sys@gray%
\pgfutil@gobble}{%
\pgfmathsetlength\pgf@x{#1}%
\pgf@getgraytuplewithmixin{#2}%
\edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@gray}}}%
\edef\pgf@sys@prevpos{\the\pgf@x}%
\let\pgf@sys@prevcolor=\pgf@sys@gray%
\edef\pgf@psfuncs{\pgf@prevx\space \pgf@gray\space
\pgf@prevcolor\space pgfshade \pgf@psfuncs}%
\pgf@sys@bp@correct\pgf@x%
\edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
\edef\pgf@encode{\pgf@encode\space0 1}%
\edef\pgf@singlefunc{\space%
<< /FunctionType 2 /Domain [0 1] /C0
[\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
\edef\pgf@funcs{\pgf@funcs\space%
<< /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
[\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
\edef\pgf@prevcolor{\pgf@gray}%
\pgf@parserestgray[}}
\def\pgf@getgraytuplewithmixin#1{%
\pgfutil@definecolor{pgfshadetemp}{gray}{#1}%
\pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
\pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor{gray}{\pgf@graycolor}%
\expandafter\pgf@getgray@@\pgf@graycolor!}
\def\pgf@getgray@@#1!{%
\def\pgf@gray{#1}%
\def\pgf@sys@gray{{#1}}%
}
\def\pgf@convertstring#1{%
\def\pgf@conv{}%
\pgf@convert#1]%
}
\def\pgf@convert{%
\pgfutil@ifnextchar]{\pgfutil@gobble}%
{%
\pgfutil@ifnextchar;{\pgf@grabsemicolor}%
{%
\pgfutil@ifnextchar c{\pgf@gobblec}%
{%
\pgfutil@ifnextchar g{\pgf@grabgray}%
{%
\pgfutil@ifnextchar o{\pgf@grabcolor}%
{%
\pgfutil@ifnextchar m{\pgf@grabcmyk}%
{%
\pgfutil@ifnextchar r{\pgf@grabrgb}%
{\pgferror{Illformed shading
specification}\pgf@convert}%
}%
}%
}%
}%
}%
}%
}
\def\pgf@savecolor#1{%
\pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor
{\pgf@shading@model}{\pgf@color}%
\expandafter\pgf@convget@\expandafter{\pgf@color}{#1}%
}
\def\pgf@grabsemicolor;{%
\edef\pgf@conv{\pgf@conv; }\pgf@convert}
\def\pgf@gobblec c{\pgf@convert}
\def\pgf@grabrgb rgb(#1)=(#2,#3,#4){%
\pgfutil@definecolor{pgf@tempcol}{rgb}{#2,#3,#4}%
\pgf@savecolor{#1}%
}
\def\pgf@grabcmyk myk(#1)=(#2,#3,#4,#5){%
\pgfutil@definecolor{pgf@tempcol}{cmyk}{#2,#3,#4,#5}%
\pgf@savecolor{#1}%
}
\def\pgf@grabgray gray(#1)=(#2){%
\pgfutil@definecolor{pgf@tempcol}{gray}{#2}%
\pgf@savecolor{#1}%
}
\def\pgf@grabcolor olor(#1)=(#2){%
\pgfutil@colorlet{pgf@tempcol}{#2}%
\pgf@savecolor{#1}%
}
\def\pgf@convget@#1#2{%
\edef\pgf@conv{\pgf@conv \pgf@shading@model(#2)=(#1)}\pgf@convert}
\newcount\pgf@shadingcount
\pgf@shadingcount=0
{
\catcode`\/=0
\catcode`\\=12
/gdef/pgf@shadingnum{\/the/pgf@shadingcount\}
}
\newif\ifpgfshadingmodelrgb
\newif\ifpgfshadingmodelcmyk
\newif\ifpgfshadingmodelgray
\def\pgf@setup@shading@model{%
\pgfshadingmodelrgbtrue
\pgfshadingmodelcmykfalse
\pgfshadingmodelgrayfalse
\XC@sdef\pgf@mod@test{\XC@tgt@mod{natural}}%
\def\pgf@shading@device{/DeviceRGB}%
\def\pgf@shading@ps@device{setrgbcolor}%
\def\pgf@shading@functional@range{0 1 0 1 0 1}%
\def\pgf@shading@model{rgb}%
\ifx\pgf@mod@test\XC@mod@cmyk
\def\pgf@shading@device{/DeviceCMYK}%
\def\pgf@shading@ps@device{setcmykcolor}%
\def\pgf@shading@functional@range{0 1 0 1 0 1 0 1}%
\def\pgf@shading@model{cmyk}%
\pgfshadingmodelrgbfalse
\pgfshadingmodelcmyktrue
\fi
\ifx\pgf@mod@test\XC@mod@gray
\def\pgf@shading@device{/DeviceGray}%
\def\pgf@shading@ps@device{setgray}%
\def\pgf@shading@functional@range{0 1}%
\def\pgf@shading@model{gray}%
\pgfshadingmodelrgbfalse
\pgfshadingmodelgraytrue
\fi
\edef\pgf@sys@driver@dvisvgm{pgfsys-dvisvgm.def}%
\ifx\pgfsysdriver\pgf@sys@driver@dvisvgm
\def\pgf@shading@model{rgb}%
\fi
\edef\pgf@sys@driver@texforht{pgfsys-tex4ht.def}%
\ifx\pgfsysdriver\pgf@sys@driver@texforht
\def\pgf@shading@model{rgb}%
\fi
}
\def\pgfdeclarehorizontalshading{%
\pgf@setup@shading@model
\pgfutil@ifnextchar[%
\pgf@declarehorizontalshading{\pgf@declarehorizontalshading[]}}
\def\pgf@declarehorizontalshading[#1]#2#3#4{%
\expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
\expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
\global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname\pgfutil@empty
\pgfsys@horishading{#2}{#3}{#4}%
\else%
\global\advance\pgf@shadingcount 1\relax
\global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
\expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@horishading}%
\expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
\expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
\fi}
\def\pgfdeclareverticalshading{%
\pgf@setup@shading@model
\pgfutil@ifnextchar[%
\pgf@declareverticalshading{\pgf@declareverticalshading[]}}
\def\pgf@declareverticalshading[#1]#2#3#4{%
\expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
\expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
\global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
\pgfsys@vertshading{#2}{#3}{#4}%
\else%
\global\advance\pgf@shadingcount 1\relax
\global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
\expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@vertshading}%
\expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
\expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
\fi}
\def\pgfdeclareradialshading{%
\pgf@setup@shading@model
\pgfutil@ifnextchar[%
\pgf@declareradialshading{\pgf@declareradialshading[]}}
\def\pgf@declareradialshading[#1]#2#3#4{%
\expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
\expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
\global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
\pgfsys@radialshading{#2}{#3}{#4}%
\else%
\global\advance\pgf@shadingcount 1\relax
\global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
\expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@radialshading}%
\expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
\expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
\fi}
\def\pgfdeclarefunctionalshading{%
\pgf@setup@shading@model
\pgfutil@ifnextchar[%
\pgf@declarefunctionalshading{\pgf@declarefunctionalshading[]}}
\def\pgf@declarefunctionalshading[#1]#2#3#4#5#6{%
\expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
\expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
\global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
\pgfshade@functionaldo{#2}{#3}{#4}{#5}{#6}%
\else%
\global\advance\pgf@shadingcount 1\relax
\global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
\expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfshade@functionaldo}%
\expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}{#5}{#6}}%
\expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
\fi}
\def\pgfshade@functionaldo#1#2#3#4#5{%
\begingroup
#4%
\pgfsys@functionalshading{#1}{#2}{#3}{#5}%
\expandafter\pgfmath@smuggleone\csname @pgfshading#1!\endcsname
\endgroup
}
\def\pgfshadecolortorgb#1#2{%
\pgfutil@colorlet{pgf@tempcol}{#1}%
\pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
\expandafter\pgfshading@rgb\pgf@rgbcolor\relax%
\edef#2{\pgf@sys@tonumber{\pgf@xa}\space\pgf@sys@tonumber{\pgf@xb}\space\pgf@sys@tonumber{\pgf@xc}\space}%
\c@pgf@counta\escapechar%
\escapechar-1\relax%
\expandafter\edef\csname\string#2red\endcsname{\pgf@sys@tonumber{\pgf@xa}\space}%
\expandafter\edef\csname\string#2green\endcsname{\pgf@sys@tonumber{\pgf@xb}\space}%
\expandafter\edef\csname\string#2blue\endcsname{\pgf@sys@tonumber{\pgf@xc}\space}%
\escapechar\c@pgf@counta%
}
\def\pgfshading@rgb#1,#2,#3\relax{%
\pgf@xa=#1pt%
\pgf@xb=#2pt%
\pgf@xc=#3pt%
}
\def\pgfshadecolortocmyk#1#2{%
\pgfutil@colorlet{pgf@tempcol}{#1}%
\pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor{cmyk}{\pgf@cmykcolor}%
\expandafter\pgfshading@cmyk\pgf@cmykcolor\relax%
\edef#2{\pgf@sys@tonumber{\pgf@xa}\space\pgf@sys@tonumber{\pgf@xb}\space
\pgf@sys@tonumber{\pgf@xc}\space\pgf@sys@tonumber{\pgf@xd}\space}%
\c@pgf@counta\escapechar%
\escapechar-1\relax%
\expandafter\edef\csname\string#2cyan\endcsname{%
\pgf@sys@tonumber{\pgf@xa}\space}%
\expandafter\edef\csname\string#2magenta\endcsname{%
\pgf@sys@tonumber{\pgf@xb}\space}%
\expandafter\edef\csname\string#2yellow\endcsname{%
\pgf@sys@tonumber{\pgf@xc}\space}%
\expandafter\edef\csname\string#2black\endcsname{%
\pgf@sys@tonumber{\pgf@xd}\space}%
\escapechar\c@pgf@counta
}
\def\pgfshading@cmyk#1,#2,#3,#4\relax{%
\pgf@xa=#1pt%
\pgf@xb=#2pt%
\pgf@xc=#3pt%
\pgf@xd=#4pt%
}
\def\pgfshadecolortogray#1#2{%
\pgfutil@colorlet{pgf@tempcol}{#1}%
\pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor{gray}{\pgf@graycolor}%
\expandafter\pgfshading@gray\pgf@graycolor\relax
\edef#2{\pgf@sys@tonumber{\pgf@xa}\space}%
\c@pgf@counta\escapechar
\escapechar-1\relax
\expandafter\edef\csname\string#2gray\endcsname{%
\pgf@sys@tonumber{\pgf@xa}\space}%
\escapechar\c@pgf@counta
}
\def\pgfshading@gray#1\relax{%
\pgf@xa=#1pt%
}
\def\pgffuncshadingrgbtocmyk{%
1.0 exch sub 3 1 roll
1.0 exch sub 3 1 roll
1.0 exch sub 3 1 roll
3 copy
2 copy gt { exch } if pop
2 copy gt { exch } if pop
dup 3 1 roll sub
0.0 2 copy lt { exch } if pop
1.0 2 copy gt { exch } if pop
4 1 roll
dup 3 1 roll sub
0.0 2 copy lt { exch } if pop
1.0 2 copy gt { exch } if pop
4 1 roll
dup 3 1 roll sub
0.0 2 copy lt { exch } if pop
1.0 2 copy gt { exch } if pop
4 1 roll
}
\def\pgffuncshadingrgbtogray{%
0.11 mul exch 0.59 mul add exch 0.3 mul add
}
\def\pgffuncshadingcmyktorgb{%
dup 3 1 roll add
1.0 2 copy gt { exch } if pop
4 1 roll
dup 3 1 roll add
1.0 2 copy gt { exch } if pop
4 1 roll
add
1.0 2 copy gt { exch } if pop
3 1 roll
1.0 exch sub
3 1 roll
1.0 exch sub
3 1 roll
1.0 exch sub
3 1 roll
}
\def\pgffuncshadingcmyktogray{%
exch 0.11 mul add exch 0.59 mul add exch 0.3 mul add
1.0 2 copy gt { exch } if pop
1.0 exch sub
}
\def\pgffuncshadinggraytorgb{%
dup dup
}
\def\pgffuncshadinggraytocmyk{%
0.0 0.0 0.0
4 3 roll
}
\def\pgfuseshading#1{%
\edef\pgf@shadingname{@pgfshading#1}%
\pgf@tryextensions{\pgf@shadingname}{\pgfalternateextension}%
\expandafter\pgfutil@ifundefined\expandafter{\pgf@shadingname}%
{\pgferror{Undefined shading "#1"}}%
{%
\edef\pgf@shade@adds{\csname pgf@num\pgf@shadingname\endcsname}%
\pgfutil@ifundefined{pgf@deps\pgf@shadingname}%
{}%
{%
\pgf@setup@shading@model
\begingroup
\pgfutil@globalcolorsfalse
\edef\@list{\csname pgf@deps\pgf@shadingname\endcsname}%
\pgfutil@for\@temp:=\@list\do{%
\pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{\@temp}}%
\pgfutil@extractcolorspec{\@temp}{\pgf@tempcolor}%
\expandafter\pgfutil@convertcolorspec\pgf@tempcolor{\pgf@shading@model}{\pgf@color}%
\edef\pgf@shade@adds{\pgf@shade@adds,\pgf@color}%
}%
\pgfmath@smuggleone\pgf@shade@adds
\endgroup
}%
\expandafter\pgf@strip@shadename\pgf@shadingname!!%
\edef\pgf@shadingxname{@pgfshading\pgf@basename\pgf@shade@adds!}%
\pgfutil@ifundefined{\pgf@shadingxname}%
{%
\begingroup
\edef\@temp{\expandafter\noexpand\csname pgf@func\pgf@shadingname\endcsname}%
\edef\@args{{\pgf@basename\pgf@shade@adds}}%
\expandafter\expandafter\expandafter\def
\expandafter\expandafter\expandafter\@@args
\expandafter\expandafter\expandafter{\csname pgf@args\pgf@shadingname\endcsname}%
\expandafter\expandafter\expandafter\@temp\expandafter\@args\@@args
\expandafter\pgfmath@smuggleone\csname\pgf@shadingxname\endcsname
\endgroup
}%
{}%
\pgf@invokeshading{\csname\pgf@shadingxname\endcsname}%
}%
}
\def\pgf@strip@shadename @pgfshading#1!!!{\def\pgf@basename{#1}}
\def\pgf@invokeshading#1{%
\ifpgfpicture%
\pgfsys@shadinginsidepgfpicture{#1}%
\else%
\pgfsys@shadingoutsidepgfpicture{#1}%
\fi%
}
\def\pgfaliasshading#1#2{%
\expandafter\let\expandafter\pgf@temp\expandafter=\csname @pgfshading#2!\endcsname%
\expandafter\let\csname @pgfshading#1!\endcsname=\pgf@temp%
\expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@num@pgfshading#2!\endcsname%
\expandafter\let\csname pgf@num@pgfshading#1!\endcsname=\pgf@temp%
\expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@deps@pgfshading#2!\endcsname%
\expandafter\let\csname pgf@deps@pgfshading#1!\endcsname=\pgf@temp%
\expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@func@pgfshading#2!\endcsname%
\expandafter\let\csname pgf@func@pgfshading#1!\endcsname=\pgf@temp%
\expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@args@pgfshading#2!\endcsname%
\expandafter\let\csname pgf@args@pgfshading#1!\endcsname=\pgf@temp%
}
\def\pgfshadepath#1#2{%
\ifdim\pgf@pathminx=16000pt%
\pgfwarning{No path specified that can be filled}%
\else%
\begingroup%
\pgf@xb=.5\pgf@pathmaxx%
\advance\pgf@xb by.5\pgf@pathminx%
\pgf@yb=.5\pgf@pathmaxy%
\advance\pgf@yb by.5\pgf@pathminy%
\pgfmathparse{#2}%
\let\pgfshade@angle=\pgfmathresult
\pgfmathsin@\pgfshade@angle
\let\pgfshade@sin=\pgfmathresult
\pgfmathcos@\pgfshade@angle
\let\pgfshade@cos=\pgfmathresult
\pgf@xa=\pgf@pathmaxx
\advance\pgf@xa by-\pgf@pathminx
\pgf@ya=\pgf@pathmaxy
\advance\pgf@ya by-\pgf@pathminy
\pgfmathabs@\pgfshade@sin
\let\pgfshade@abssin=\pgfmathresult
\pgfmathabs@\pgfshade@cos
\let\pgfshade@abscos=\pgfmathresult
\pgf@xc=\pgfshade@abscos\pgf@xa
\advance\pgf@xc by\pgfshade@abssin\pgf@ya
\pgf@yc=\pgfshade@abssin\pgf@xa
\advance\pgf@yc by\pgfshade@abscos\pgf@ya
\pgfmathadd@\pgfshade@abscos\pgfshade@abssin
\pgfmathdivide@{.01992528}{\pgfmathresult}%
\pgf@xc=\pgfmathresult\pgf@xc
\pgf@yc=\pgfmathresult\pgf@yc
\ifdim\pgf@xc<0.0001pt
\ifdim\pgf@xc>-0.0001pt
\pgf@no@shadetrue
\fi
\fi
\ifdim\pgf@yc<0.0001pt
\ifdim\pgf@yc>-0.0001pt
\pgf@no@shadetrue
\fi
\fi
\ifpgf@no@shade\else
\pgfsys@beginscope
\pgfsyssoftpath@invokecurrentpath
\pgfsys@clipnext
\pgfsys@discardpath
\pgfsys@transformcm{1}{0}{0}{1}{\the\pgf@xb}{\the\pgf@yb}%
\pgf@x=\pgfshade@sin pt%
\pgf@xa=-\pgf@x%
\pgfsys@transformcm{\pgfshade@cos}{\pgfshade@sin}{\pgf@sys@tonumber{\pgf@xa}}{\pgfshade@cos}{0pt}{0pt}%
\pgfsys@transformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{0pt}{0pt}%
\ifx\pgf@shade@extra@transform\pgfutil@empty%
\else%
\pgflowlevel{\pgf@shade@extra@transform}%
\fi%
\pgfuseshading{#1}%
\pgfsys@endscope%
\fi%
\endgroup%
\fi%
}
\newif\ifpgf@no@shade
\def\pgfsetadditionalshadetransform#1{\def\pgf@shade@extra@transform{#1}}
\let\pgf@shade@extra@transform=\pgfutil@empty
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreshade.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransformations.code.tex ====
\ProvidesFileRCS{pgfcoretransformations.code.tex}
\newdimen\pgf@pt@x
\newdimen\pgf@pt@y
\newdimen\pgf@pt@temp
\newif\ifpgf@pt@identity
\pgf@pt@identitytrue
\def\pgf@pt@aa{1.0} \def\pgf@pt@ab{0.0}
\def\pgf@pt@ba{0.0} \def\pgf@pt@bb{1.0}
\def\pgfgettransform#1{%
\edef#1{{\pgf@pt@aa}{\pgf@pt@ab}{\pgf@pt@ba}{\pgf@pt@bb}{\the\pgf@pt@x}{\the\pgf@pt@y}}%
}
\def\pgfgettransformentries#1#2#3#4#5#6{%
\edef#1{\pgf@pt@aa}%
\edef#2{\pgf@pt@ab}%
\edef#3{\pgf@pt@ba}%
\edef#4{\pgf@pt@bb}%
\edef#5{\the\pgf@pt@x}%
\edef#6{\the\pgf@pt@y}%
}%
\def\pgfsettransformentries#1#2#3#4#5#6{%
\pgfsettransform{{#1}{#2}{#3}{#4}{#5}{#6}}%
}%
\def\pgfsettransform#1{%
\edef\pgf@temp{#1}%
\expandafter\pgf@settransform\pgf@temp%
}
\def\pgf@settransform#1#2#3#4#5#6{%
\def\pgf@pt@aa{#1}%
\def\pgf@pt@ab{#2}%
\def\pgf@pt@ba{#3}%
\def\pgf@pt@bb{#4}%
\pgf@pt@x=#5%
\pgf@pt@y=#6%
\edef\pgf@idtest{#1,#2,#3,#4}%
\ifx\pgf@idtest\pgf@idmatrixtext%
\pgf@pt@identitytrue%
\else%
\pgf@pt@identityfalse%
\fi%
}
\def\pgf@idmatrixtext{1.0,0.0,0.0,1.0}
\def\pgf@zerozerotext{0.0,0.0}
\def\pgf@one@text{1.0}
\def\pgf@zero@text{0.0}
\def\pgf@pos@transform#1#2{%
\ifpgf@pt@identity%
\else%
\pgf@pt@temp=#1%
#1=\pgf@pt@aa#1%
\advance#1 by\pgf@pt@ba#2%
#2=\pgf@pt@bb#2%
\advance#2 by\pgf@pt@ab\pgf@pt@temp%
\fi%
\advance#1 by\pgf@pt@x%
\advance#2 by\pgf@pt@y%
}
\def\pgf@pos@transform@glob{%
\ifpgf@pt@identity%
\else%
\pgf@pt@temp=\pgf@x%
\global\pgf@x=\pgf@pt@aa\pgf@x%
\global\advance\pgf@x by\pgf@pt@ba\pgf@y%
\global\pgf@y=\pgf@pt@bb\pgf@y%
\global\advance\pgf@y by\pgf@pt@ab\pgf@pt@temp%
\fi%
\global\advance\pgf@x by\pgf@pt@x%
\global\advance\pgf@y by\pgf@pt@y%
}
\def\pgftransforminvert{%
\pgf@pt@x=-\pgf@pt@x
\pgf@pt@y=-\pgf@pt@y
\ifpgf@pt@identity%
\else%
\edef\pgf@zerotest{\pgf@pt@ab,\pgf@pt@ba}%
\ifx\pgf@zerotest\pgf@zerozerotext%
\pgfmathreciprocal@{\pgf@pt@aa}%
\let\pgf@pt@aa\pgfmathresult%
\pgfmathreciprocal@{\pgf@pt@bb}%
\let\pgf@pt@bb\pgfmathresult%
\else%
{%
\pgfutil@tempdima=\pgf@pt@aa pt%
\pgfutil@tempdima=\pgf@pt@bb\pgfutil@tempdima%
\pgfutil@tempdimb=\pgf@pt@ba pt%
\pgfutil@tempdimb=\pgf@pt@ab\pgfutil@tempdimb%
\advance\pgfutil@tempdima by -\pgfutil@tempdimb%
\pgfmathreciprocal@{\pgf@sys@tonumber{\pgfutil@tempdima}}%
\pgfutil@tempdima=\pgfmathresult pt%
\pgf@x=\pgf@pt@bb\pgfutil@tempdima%
\xdef\pgf@new@pt@aa{\pgf@sys@tonumber{\pgf@x}}%
\pgf@x=\pgf@pt@aa\pgfutil@tempdima%
\xdef\pgf@new@pt@bb{\pgf@sys@tonumber{\pgf@x}}%
\pgfutil@tempdima=-\pgfutil@tempdima%
\pgf@x=\pgf@pt@ba\pgfutil@tempdima%
\xdef\pgf@new@pt@ba{\pgf@sys@tonumber{\pgf@x}}%
\pgf@x=\pgf@pt@ab\pgfutil@tempdima%
\xdef\pgf@new@pt@ab{\pgf@sys@tonumber{\pgf@x}}%
}%
\let\pgf@pt@aa\pgf@new@pt@aa%
\let\pgf@pt@ab\pgf@new@pt@ab%
\let\pgf@pt@ba\pgf@new@pt@ba%
\let\pgf@pt@bb\pgf@new@pt@bb%
\fi%
\pgf@pt@temp=\pgf@pt@x%
\pgf@pt@x=\pgf@pt@aa\pgf@pt@x%
\advance\pgf@pt@x by\pgf@pt@ba\pgf@pt@y%
\pgf@pt@y=\pgf@pt@bb\pgf@pt@y%
\advance\pgf@pt@y by\pgf@pt@ab\pgf@pt@temp%
\fi%
}
\def\pgftransformcm#1#2#3#4#5{%
\edef\pgf@marshal{\noexpand\pgf@transformcm{#1}{#2}{#3}{#4}}%
\pgf@marshal{#5}%
}
\def\pgf@transformcm#1#2#3#4#5{%
{%
\pgf@process{#5}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgfmathsetlength\pgf@x{#1}%
\pgfmathsetlength\pgf@y{#2}%
\pgf@xa=\pgf@pt@aa\pgf@x%
\advance\pgf@xa by \pgf@pt@ba\pgf@y%
\pgf@ya=\pgf@pt@ab\pgf@x%
\advance\pgf@ya by \pgf@pt@bb\pgf@y%
\pgfmathsetlength\pgf@x{#3}%
\pgfmathsetlength\pgf@y{#4}%
\pgf@xb=\pgf@pt@aa\pgf@x%
\advance\pgf@xb by \pgf@pt@ba\pgf@y%
\pgf@yb=\pgf@pt@ab\pgf@x%
\advance\pgf@yb by \pgf@pt@bb\pgf@y%
\pgf@x=\pgf@pt@aa\pgf@xc%
\advance\pgf@x by\pgf@pt@ba\pgf@yc%
\advance\pgf@x by\pgf@pt@x%
\pgf@y=\pgf@pt@ab\pgf@xc%
\advance\pgf@y by\pgf@pt@bb\pgf@yc%
\advance\pgf@y by\pgf@pt@y%
\global\pgf@x=\pgf@x%
\global\pgf@y=\pgf@y%
\xdef\pgf@tempaa{\pgf@sys@tonumber{\pgf@xa}}%
\xdef\pgf@tempab{\pgf@sys@tonumber{\pgf@ya}}%
\xdef\pgf@tempba{\pgf@sys@tonumber{\pgf@xb}}%
\xdef\pgf@tempbb{\pgf@sys@tonumber{\pgf@yb}}%
}%
\pgf@pt@x=\pgf@x%
\pgf@pt@y=\pgf@y%
\let\pgf@pt@aa=\pgf@tempaa%
\let\pgf@pt@ba=\pgf@tempba%
\let\pgf@pt@ab=\pgf@tempab%
\let\pgf@pt@bb=\pgf@tempbb%
\edef\pgf@idtest{\pgf@pt@aa,\pgf@pt@ba,\pgf@pt@ab,\pgf@pt@bb}%
\ifx\pgf@idtest\pgf@idmatrixtext%
\pgf@pt@identitytrue%
\else%
\pgf@pt@identityfalse%
\fi%
}
\def\pgftransformtriangle#1#2#3{%
\pgf@process{#2}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#3}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{#1}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\advance\pgf@xb by-\pgf@x%
\advance\pgf@yb by-\pgf@y%
\pgftransformcm%
{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}%
{\pgf@sys@tonumber\pgf@xb}{\pgf@sys@tonumber\pgf@yb}%
{\pgfpoint{\pgf@x}{\pgf@y}}%
}
\def\pgftransformreset{%
\pgf@pt@x=0pt%
\pgf@pt@y=0pt%
\let\pgf@pt@aa\pgf@one@text%
\let\pgf@pt@ba\pgf@zero@text%
\let\pgf@pt@ab\pgf@zero@text%
\let\pgf@pt@bb\pgf@one@text%
\pgf@pt@identitytrue%
}
\def\pgftransformresetnontranslations{%
\let\pgf@pt@aa\pgf@one@text%
\let\pgf@pt@ba\pgf@zero@text%
\let\pgf@pt@ab\pgf@zero@text%
\let\pgf@pt@bb\pgf@one@text%
\pgf@pt@identitytrue%
}
\def\pgftransformshift#1{\pgftransformcm{1}{0}{0}{1}{#1}}
\def\pgftransformxshift#1{\pgftransformcm{1}{0}{0}{1}{\pgfpoint{#1}{+0pt}}}
\def\pgftransformyshift#1{\pgftransformcm{1}{0}{0}{1}{\pgfpoint{+0pt}{#1}}}
\def\pgftransformscale#1{\pgftransformcm{#1}{0}{0}{#1}{\pgfpointorigin}}
\def\pgftransformxscale#1{\pgftransformcm{#1}{0}{0}{1.0}{\pgfpointorigin}}
\def\pgftransformyscale#1{\pgftransformcm{1.0}{0}{0}{#1}{\pgfpointorigin}}
\def\pgftransformxslant#1{\pgftransformcm{1.0}{0}{#1}{1.0}{\pgfpointorigin}}
\def\pgftransformyslant#1{\pgftransformcm{1.0}{#1}{0}{1.0}{\pgfpointorigin}}
\def\pgftransformrotate#1{%
\pgfmathparse{#1}%
\let\pgftransform@angle=\pgfmathresult%
\pgfmathsin@{\pgftransform@angle}%
\let\pgftransform@sin=\pgfmathresult%
\pgfmathcos@{\pgftransform@angle}%
\let\pgftransform@cos=\pgfmathresult%
\pgf@x=\pgftransform@sin pt%
\pgf@xa=-\pgf@x%
\pgftransformcm{\pgftransform@cos}{\pgftransform@sin}{\pgf@sys@tonumber{\pgf@xa}}{\pgftransform@cos}{\pgfpointorigin}%
}
\newif\ifpgfslopedattime
\newif\ifpgfallowupsidedownattime
\newif\ifpgfresetnontranslationattime
\def\pgftransformlineattime#1#2#3{%
\pgf@process{#2}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{#3}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgftransformshift{\pgfpointlineattime{#1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
\ifpgfresetnontranslationattime%
\pgftransformresetnontranslations%
\fi%
\ifpgfslopedattime%
\advance\pgf@xc by-\pgf@xb%
\advance\pgf@yc by-\pgf@yb%
\ifpgfallowupsidedownattime%
\else%
\ifdim\pgf@xc<0pt%
\pgf@xc=-\pgf@xc%
\pgf@yc=-\pgf@yc%
\fi%
\fi%
\pgf@x=\pgf@xc%
\pgf@y=\pgf@yc%
\pgfpointnormalised{}%
\pgf@ya=-\pgf@y%
\pgftransformcm%
{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
{\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
\fi%
}
\def\pgftransformarcaxesattime#1#2#3#4#5#6{%
\pgfpointarcaxesattime{#1}{#2}{#3}{#4}{#5}{#6}%
\pgftransformshift{\pgfqpoint{\pgf@x}{\pgf@y}}%
\ifpgfresetnontranslationattime%
\pgftransformresetnontranslations%
\fi%
\ifpgfslopedattime%
\pgf@x=\pgf@xa%
\pgf@y=\pgf@ya%
\pgf@process{\pgfpointnormalised{}}%
\ifpgfallowupsidedownattime%
\else%
\ifdim\pgf@x<0pt%
\pgf@x=-\pgf@x%
\pgf@y=-\pgf@y%
\fi%
\fi%
\pgf@ya=-\pgf@y%
\pgftransformcm%
{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
{\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
\fi%
}
\def\pgftransformcurveattime#1#2#3#4#5{%
\pgfpointcurveattime{#1}{#2}{#3}{#4}{#5}%
\pgftransformshift{\pgfqpoint{\pgf@x}{\pgf@y}}%
\ifpgfresetnontranslationattime%
\pgftransformresetnontranslations%
\fi%
\ifpgfslopedattime%
\pgf@x=\pgf@xa%
\pgf@y=\pgf@ya%
\advance\pgf@x by-\pgf@xb%
\advance\pgf@y by-\pgf@yb%
\ifpgfallowupsidedownattime%
\else%
\ifdim\pgf@x<0pt%
\pgf@x=-\pgf@x%
\pgf@y=-\pgf@y%
\fi%
\fi%
\pgfpointnormalised{}%
\pgf@ya=-\pgf@y%
\pgftransformcm%
{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
{\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
\fi%
}
\def\pgftransformarrow#1#2{%
\pgf@process{#2}%
\pgftransformshift{}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#1}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@x=\pgf@xa%
\pgf@y=\pgf@ya%
\pgfpointnormalised{}%
\pgf@ya=-\pgf@y%
\pgftransformcm%
{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
{\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfqpoint{0pt}{0pt}}%
}
\def\pgftransformationadjustments{%
\ifpgf@pt@identity%
\let\pgfhorizontaltransformationadjustment\pgf@one@text%
\let\pgfverticaltransformationadjustment\pgf@one@text%
\else%
{%
\pgf@pt@x0pt%
\pgf@pt@y0pt%
\pgfpointtransformed{\pgfqpoint{1pt}{0pt}}%
\pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
\pgfmathreciprocal@{\pgfmathresult}%
\global\let\pgf@temp@hori\pgfmathresult
\pgfpointtransformed{\pgfqpoint{0pt}{1pt}}%
\pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
\pgfmathreciprocal@{\pgfmathresult}%
\global\let\pgf@temp@vert\pgfmathresult
\xdef\pgf@marshal@b{\def\noexpand\pgfverticaltransformationadjustment{\pgfmathresult}}
}%
\let\pgfhorizontaltransformationadjustment\pgf@temp@hori%
\let\pgfverticaltransformationadjustment\pgf@temp@vert%
\fi%
}
\let\pgfhorizontaltransformationadjustment\pgf@one@text
\let\pgfverticaltransformationadjustment\pgf@one@text
\def\pgflowlevelsynccm{%
\pgfsys@transformcm%
{\pgf@pt@aa}{\pgf@pt@ab}%
{\pgf@pt@ba}{\pgf@pt@bb}%
{\pgf@pt@x}{\pgf@pt@y}%
\pgftransformreset%
\pgf@relevantforpicturesizefalse%
}
\def\pgflowlevel#1{%
{%
\pgftransformreset%
#1%
\pgflowlevelsynccm%
}%
\pgf@relevantforpicturesizefalse%
}
\def\pgflowlevelscope#1{\pgfscope\pgflowlevel{#1}}
\def\endpgflowlevelscope{\endpgfscope}
\long\def\pgflowlevelobj#1#2{\pgfscope{\pgflowlevel{#1}#2}\endpgfscope}
\def\pgfviewboxscope#1#2#3#4#5{%
{%
\pgf@process{#1}%
\pgf@pos@transform@glob
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#2}%
\pgf@pos@transform@glob
\ifdim\pgf@x<\pgf@xa%
\pgf@xb\pgf@x%
\pgf@xc\pgf@xa%
\else%
\pgf@xb\pgf@xa%
\pgf@xc\pgf@x%
\fi%
\ifdim\pgf@y<\pgf@ya%
\pgf@yb\pgf@y%
\pgf@yc\pgf@ya%
\else%
\pgf@yb\pgf@ya%
\pgf@yc\pgf@y%
\fi%
\pgf@process{#3}%
\pgf@pos@transform@glob
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{#4}%
\pgf@pos@transform@glob
\ifdim\pgf@x<\pgf@xa%
\else%
\pgfutil@tempdima\pgf@x
\pgf@x\pgf@xa%
\pgf@xa\pgfutil@tempdima%
\fi%
\ifdim\pgf@y<\pgf@ya%
\else%
\pgfutil@tempdima\pgf@y
\pgf@y\pgf@ya%
\pgf@ya\pgfutil@tempdima%
\fi%
\pgfusetype{.view}%
\edef\pgf@marshal{\expandafter\noexpand\csname pgfsys@viewbox#5\endcsname{\the\pgf@x}{\the\pgf@y}{\the\pgf@xa}{\the\pgf@ya}{\the\pgf@xb}{\the\pgf@yb}{\the\pgf@xc}{\the\pgf@yc}}%
\pgf@marshal%
}%
\pgf@relevantforpicturesizefalse%
}
\def\endpgfviewboxscope{\pgfsys@endviewbox}
\let\startpgfviewboxscope=\pgfviewboxscope
\let\stoppgfviewboxscope=\endpgfviewboxscope
\let\pgfapproximatenonlineartranslation\relax
\let\pgfapproximatenonlineartransformation\relax
\def\pgftransformnonlinear#1{\pgferror{You need to say
\string\usepgfmodule{nonlineartransformations} to use nonlinear transformations}}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransformations.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransparency.code.tex ====
\ProvidesFileRCS{pgfcoretransparency.code.tex}
\def\pgfsetstrokeopacity#1{%
\pgfmathparse{#1}%
\expandafter\pgfsys@stroke@opacity\expandafter{\pgfmathresult}}
\def\pgfsetfillopacity#1{%
\pgfmathparse{#1}%
\expandafter\pgfsys@fill@opacity\expandafter{\pgfmathresult}}
\def\pgfsetblendmode#1{\pgfsys@blend@mode{#1}}
\def\pgfdeclarefading#1#2{%
\setbox\pgfutil@tempboxa=\hbox{{\pgfsys@beginscope\pgfutil@color{white}\ignorespaces#2\pgfsys@endscope}}%
\pgfsys@fadingfrombox{#1}\pgfutil@tempboxa%
}
\pgfutil@colorlet{pgftransparent}{black}
\def\pgfsetfading#1#2{%
{%
\pgftransformreset%
#2%
\pgfgettransform{\pgftrans@temp}%
\edef\pgf@marshal{\noexpand\pgfsys@usefading{#1}\pgftrans@temp}%
\pgf@marshal%
}%
}
\def\pgfsetfadingforcurrentpath#1#2{%
\ifdim\pgf@pathminx=16000pt%
\pgfsetfading{#1}{#2}%
\else%
\pgfsetfading{#1}{%
\pgf@xb=.5\pgf@pathmaxx%
\advance\pgf@xb by.5\pgf@pathminx%
\pgf@yb=.5\pgf@pathmaxy%
\advance\pgf@yb by.5\pgf@pathminy%
\pgf@xc=\pgf@pathmaxx%
\advance\pgf@xc by-\pgf@pathminx%
\ifdim\pgf@xc<0.1pt\pgf@xc=0.1pt\fi%
\pgf@yc=\pgf@pathmaxy%
\advance\pgf@yc by-\pgf@pathminy%
\ifdim\pgf@yc<0.1pt\pgf@yc=0.1pt\fi%
\pgf@xc=.02\pgf@xc%
\pgf@yc=.02\pgf@yc%
\pgftransformcm{1}{0}{0}{1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
\pgftransformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{\pgfpointorigin}%
\pgfsys@clipfading%
#2%
}%
\fi%
}
\def\pgfsetfadingforcurrentpathstroked#1#2{%
\ifdim\pgf@pathminx=16000pt%
\pgfsetfading{#1}{#2}%
\else%
\pgfsetfading{#1}{%
\pgf@xb=.5\pgf@pathmaxx%
\advance\pgf@xb by.5\pgf@pathminx%
\pgf@yb=.5\pgf@pathmaxy%
\advance\pgf@yb by.5\pgf@pathminy%
\pgf@xc=\pgf@pathmaxx%
\advance\pgf@xc by-\pgf@pathminx%
\advance\pgf@xc by\pgflinewidth%
\ifdim\pgf@xc<0.1pt\pgf@xc=0.1pt\fi%
\pgf@yc=\pgf@pathmaxy%
\advance\pgf@yc by-\pgf@pathminy%
\advance\pgf@yc by\pgflinewidth%
\ifdim\pgf@yc<0.1pt\pgf@yc=0.1pt\fi%
\pgf@xc=.02\pgf@xc%
\pgf@yc=.02\pgf@yc%
\pgftransformcm{1}{0}{0}{1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
\pgftransformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{\pgfpointorigin}%
\pgfsys@clipfading%
#2%
}%
\fi%
}
\def\pgftransparencygroup{%
\pgfutil@ifnextchar[{\pgftransparencygroup@}{\pgftransparencygroup@[]}%
}
\def\pgftransparencygroup@[#1]{%
\begingroup%
\pgfkeys{/pgf/transparency group options/.cd,%
isolated=false,
knockout=false,
#1}%
\setbox\pgfutil@tempboxa=\hbox\bgroup%
}
\pgfkeys{
/pgf/transparency group options/.cd,
isolated/.is if=pgfsys@transparency@group@isolated,
knockout/.is if=pgfsys@transparency@group@knockout
}
\def\endpgftransparencygroup{%
\egroup%
\ifdim\pgf@picminx=16000pt%
\else%
\advance\pgf@picminx by-1cm%
\advance\pgf@picmaxx by1cm%
\advance\pgf@picminy by-1cm%
\advance\pgf@picmaxy by1cm%
\setbox\pgfutil@tempboxa=\hbox{%
\vrule width0pt height\pgf@picmaxy depth-\pgf@picminy%
\hskip-\pgf@picminx%
\box\pgfutil@tempboxa%
\hskip\pgf@picmaxx%
}%
\pgfsys@transparencygroupfrombox\pgfutil@tempboxa%
\wd\pgfutil@tempboxa=0pt%
\ht\pgfutil@tempboxa=0pt%
\dp\pgfutil@tempboxa=0pt%
\hskip\pgf@picminx\box\pgfutil@tempboxa\hskip-\pgf@picminx%
\fi%
\endgroup%
}
\let\startpgftransparencygroup=\pgftransparencygroup
\let\stoppgftransparencygroup=\endpgftransparencygroup
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransparency.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgffor.code.tex ====
\ProvidesPackageRCS{pgffor.code.tex}
\ifdefined\pgfmathloaded\else
\input pgfmath.code.tex
\fi
\newdimen\pgffor@iter
\newdimen\pgffor@skip
\newif\ifpgffor@continue
\def\pgffor@reset@hooks{%
\let\pgffor@beginhook=\relax%
\let\pgffor@endhook=\relax%
\let\pgffor@afterhook=\relax%
}
\pgffor@reset@hooks
\newtoks\pgffor@stack
\pgffor@stack={{}{}{}}
\def\pgffor@stackpush#1{%
\def\pgffor@stacktemp{#1}%
\expandafter\expandafter\expandafter\pgffor@stack\expandafter\expandafter\expandafter=%
\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
{\expandafter\pgffor@stacktemp\expandafter}\the\pgffor@stack}%
}
\def\pgffor@stackpop{\expandafter\pgffor@@stackpop\the\pgffor@stack\pgffor@stackstop}
\def\pgffor@@stackpop#1#2\pgffor@stackstop{\pgffor@stack{#2}#1}
\def\pgffor@emptyvalues{, \pgffor@stop,}%
\def\pgffor@foreach{%
\pgffor@atbeginforeach%
\let\pgffor@assign@before@code=\pgfutil@empty%
\let\pgffor@assign@after@code=\pgfutil@empty%
\let\pgffor@assign@once@code=\pgfutil@empty%
\let\pgffor@remember@code=\pgfutil@empty%
\let\pgffor@remember@once@code=\pgfutil@empty%
\pgffor@alphabeticsequencefalse%
\pgffor@contextfalse%
\let\pgffor@var=\pgfutil@empty
\pgffor@vars%
}
\let\foreach=\pgffor@foreach
\def\pgffor@vars{%
\pgfutil@ifnextchar i{\pgffor@@vars@end}{%
\pgfutil@ifnextchar[{\pgffor@@vars@opt}{%
\pgfutil@ifnextchar/{\pgffor@@vars@slash@gobble}{%
\pgffor@@vars}}}}%
\def\pgffor@@vars@end in{\pgfutil@ifnextchar\bgroup{\pgffor@normal@list}{\pgffor@macro@list}}
\def\pgffor@@vars@opt[#1]{\pgfkeys{/pgf/foreach/.cd,#1}\pgffor@vars}
\def\pgffor@@vars#1{\pgffor@var@add#1\pgffor@stop\pgffor@vars}
\def\pgffor@@vars@slash@gobble/{\pgffor@@vars}
\def\pgffor@var@add#1#2\pgffor@stop{%
\ifx\pgffor@var\pgfutil@empty%
\def\pgffor@var{#1}%
\def\pgffor@mainvar{#1}%
\else%
\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@var/#1}%
\fi%
}
\def\pgffor@expand@list@true{\let\pgffor@expand@list\edef}
\def\pgffor@expand@list@false{\let\pgffor@expand@list\def}
\def\pgffor@macro@list#1{%
\expandafter\pgffor@normal@list\expandafter{#1}}
\def\pgffor@normal@list#1{%
\pgffor@expand@list\pgffor@values{#1}%
\expandafter\def\expandafter\pgffor@values\expandafter{\pgffor@values, \pgffor@stop,}%
\ifx\pgffor@values\pgffor@emptyvalues
\def\pgffor@values{\pgffor@stop,}%
\fi%
\let\pgffor@body=\pgfutil@empty%
\global\pgffor@continuetrue%
\pgffor@collectbody}
\def\pgffor@collectbody{%
\pgfutil@ifnextchar\foreach{\pgffor@collectforeach}{%
\pgfutil@ifnextchar\bgroup{\pgffor@collectargument}{\pgffor@collectsemicolon}}%
}
\def\pgffor@collectforeach\foreach#1in{%
\pgfutil@ifnextchar\bgroup{\pgffor@collectforeach@normal{#1}}{\pgffor@collectforeach@macro{#1}}}
\def\pgffor@collectforeach@macro#1#2{%
\expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body\foreach#1in#2}%
\pgffor@collectbody%
}
\def\pgffor@collectforeach@normal#1#2{%
\expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body\foreach#1in{#2}}%
\pgffor@collectbody%
}
\long\def\pgffor@collectargument#1{%
\expandafter\pgfutil@in@\expandafter\foreach\expandafter{\pgffor@body}%
\ifpgfutil@in@%
\expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter%
{\pgffor@body{#1}}%
\else%
\expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter%
{\pgffor@body#1}%
\fi%
\pgffor@iterate%
}
\def\pgffor@collectsemicolon{%
\let\pgffor@next=\pgffor@collectnormalsemicolon%
\ifnum\the\catcode`\;=\active\relax%
\let\pgffor@next=\pgffor@collectactivesemicolon%
\fi%
\pgffor@next%
}
\def\pgffor@collectnormalsemicolon#1;{%
\expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body#1;}%
\pgffor@iterate%
}
{
\catcode`\;=\active
\gdef\pgffor@collectactivesemicolon#1;{%
\expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body#1;}%
\pgffor@iterate%
}
}
\def\pgffor@iterate{%
\let\pgffor@last=\pgfutil@empty%
\let\pgffor@prevlast=\pgfutil@empty%
\let\pgffor@dotsend=\pgfutil@empty%
\let\pgffor@dots@pre=\pgfutil@empty%
\let\pgffor@dots@post=\pgfutil@empty%
\expandafter\pgffor@scan\pgffor@values}
\def\pgffor@stop{\pgffor@stop}%
\def\pgffor@dots{...}%
\def\pgffor@scan{\pgfutil@ifnextchar({\pgffor@scanround}{\pgffor@scanone}}
\def\pgffor@scanround(#1)#2,{\def\pgffor@value{(#1)#2}\pgffor@scanned}
\def\pgffor@scanone#1,{\def\pgffor@value{#1}\pgffor@scanned}
\newif\ifpgffor@dots@in@
\def\pgffor@dots@in@#1...#2#3\pgffor@stop{%
\ifx\pgffor@dots@@#2%
\pgffor@dots@in@false%
\else%
\pgffor@dots@in@true%
\fi%
}
\def\pgffor@dots@@{\pgffor@dots@@}
\def\pgffor@scanned{%
\ifx\pgffor@value\pgffor@stop%
\let\pgffor@next=\pgffor@after%
\else%
\expandafter\pgffor@dots@in@\pgffor@value\pgffor@dots@...\pgffor@dots@@\pgffor@stop%
\ifpgffor@dots@in@%
\let\pgffor@next=\pgffor@handledots%
\else%
\let\pgffor@next=\pgffor@handlevalue%
\fi%
\ifpgffor@continue%
\else%
\let\pgffor@next=\pgffor@scan%
\fi%
\fi%
\pgffor@next}
\def\pgffor@after{%
\global\pgffor@continuetrue%
\pgffor@atendforeach%
\pgffor@afterhook}
\def\pgffor@handlevalue{%
\let\pgffor@prevlast=\pgffor@last%
\let\pgffor@last=\pgffor@value%
\pgffor@invokebody%
\pgffor@scan%
}
\def\pgffor@invokebody{%
\pgffor@begingroup%
\expandafter\pgfutil@in@\expandafter/\expandafter{\pgffor@var}%
\ifpgfutil@in@%
\expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@value//\relax}%
\expandafter\pgffor@multiassign\pgffor@var/\pgffor@stop/\pgffor@stop/\relax%
\else%
\expandafter\expandafter\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@value}%
\fi%
\ifx\pgffor@assign@once@code\pgfutil@empty%
\else%
\pgffor@assign@once@code%
\fi%
\ifx\pgffor@assign@before@code\pgfutil@empty%
\else%
\pgffor@assign@before@code%
\fi%
\expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook%
\ifx\pgffor@assign@after@code\pgfutil@empty%
\else%
\pgffor@assign@after@code%
\fi%
\pgffor@endgroup%
}
\def\pgffor@multiassign#1/#2/\relax{%
\def\pgffor@currentvar{#1}%
\def\pgffor@rest{#2}%
\ifx\pgffor@currentvar\pgffor@stop%
\let\pgffor@next=\relax%
\else%
\let\pgffor@next=\pgffor@multiassignrest%
\fi%
\pgffor@next%
}
\def\pgffor@multiassignrest{\expandafter\pgffor@multiassignfinal\pgffor@valuerest}
\def\pgffor@multiassignfinal#1/#2/\relax{%
\def\pgffor@temp{#1}%
\ifx\pgffor@currentvar\pgffor@mainvar%
\ifpgffor@alphabeticsequence%
\pgffor@makealphabetic\pgffor@temp%
\fi%
\fi%
\def\pgffor@test{#2}%
\ifx\pgffor@test\pgfutil@empty%
\expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@temp//\relax}%
\else%
\def\pgffor@valuerest{#2/\relax}%
\fi%
\expandafter\expandafter\expandafter\def\expandafter\pgffor@currentvar\expandafter{\pgffor@temp}%
\expandafter\pgffor@multiassign\pgffor@rest/\relax%
}
\def\pgffor@gobblespaces#1{\pgfutil@ifnextchar x{#1}{#1}}
\def\pgffor@handledots{%
\pgffor@gobblespaces{\expandafter\pgffor@@handledots\pgffor@value\pgffor@@stop}%
}
\newif\ifpgffor@context
\def\pgffor@@handledots#1...#2\pgffor@@stop{%
\def\pgffor@dots@pre{#1}%
\def\pgffor@dots@post{#2}%
\def\pgffor@dots@stripcontext#1##1#2\pgffor@@stop{\def\pgffor@dotsvalue{##1}}%
\pgffor@contexttrue%
\ifx\pgffor@dots@pre\pgfutil@empty%
\ifx\pgffor@dots@post\pgfutil@empty%
\pgffor@contextfalse%
\def\pgffor@dots@stripcontext##1\pgffor@@stop{\def\pgffor@dotsvalue{##1}}%
\fi%
\fi%
\pgffor@gobblespaces{\pgffor@dotsscanend}%
}
\def\pgffor@dots@value@process#1{%
\expandafter\pgffor@dots@stripcontext#1\pgffor@@stop%
\expandafter\pgffor@dots@charcheck\pgffor@dotsvalue\pgffor@@stop%
\ifpgffor@alphabeticsequence
\else
\ifpgffor@assign@parse
\begingroup
\pgfkeys{/pgf/fpu/false/.try}%
\pgfmathparse{\pgffor@dotsvalue}%
\pgfmath@smuggleone\pgfmathresult
\endgroup
\let\pgffor@dotsvalue=\pgfmathresult
\fi
\fi
\let#1=\pgffor@dotsvalue%
}
\def\pgffor@dotsscanend#1,{%
\pgffor@alphabeticsequencefalse%
\def\pgffor@dotsend{#1}%
\pgffor@dots@value@process{\pgffor@dotsend}%
\pgffor@dots@value@process{\pgffor@last}%
\ifx\pgffor@prevlast\pgfutil@empty%
\ifdim\pgffor@dotsend pt>\pgffor@last pt%
\pgffor@skip=1pt%
\else%
\pgffor@skip=-1pt%
\fi%
\else%
\pgffor@dots@value@process{\pgffor@prevlast}%
\pgffor@skip=\pgffor@last pt%
\pgffor@iter=\pgffor@prevlast pt%
\advance\pgffor@skip by-\pgffor@iter%
\fi%
\pgffor@iter=\pgffor@last pt%
\pgffor@loop%
}
\def\pgffor@loop{%
\advance\pgffor@iter by\pgffor@skip%
\let\pgffor@next=\pgffor@doloop%
\ifdim\pgffor@skip<0pt%
\ifdim\pgffor@iter<\pgffor@dotsend pt%
\let\pgffor@next=\pgffor@endloop%
\fi%
\else%
\ifdim\pgffor@iter>\pgffor@dotsend pt%
\let\pgffor@next=\pgffor@endloop%
\fi%
\fi%
\ifpgffor@continue%
\else%
\let\pgffor@next=\pgffor@endloop%
\fi%
\pgffor@next%
}
\def\pgffor@endloop{%
\pgffor@alphabeticsequencefalse%
\pgffor@scan%
}
{\catcode`\p=12\catcode`\t=12\gdef\Pgffor@geT#1pt{#1}}
\def\pgffor@doloop{%
\pgffor@begingroup
\edef\pgffor@temp{\expandafter\Pgffor@geT\the\pgffor@iter}%
\edef\pgffor@incheck{{.0/}{\pgffor@temp/}}%
\expandafter\pgfutil@in@\pgffor@incheck%
\ifpgfutil@in@%
\expandafter\pgffor@strip\pgffor@temp%
\fi%
\expandafter\pgfutil@in@\expandafter/\expandafter{\pgffor@var}%
\ifpgfutil@in@%
\expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@temp//\relax}%
\expandafter\pgffor@multiassign\pgffor@var/\pgffor@stop/\pgffor@stop/\relax%
\else%
\ifpgffor@alphabeticsequence%
\pgffor@makealphabetic\pgffor@temp%
\expandafter\let\pgffor@var=\pgffor@temp%
\else%
\expandafter\expandafter\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@temp}%
\fi%
\fi%
\ifpgffor@context%
\let\pgffor@temp=\pgffor@dots@pre%
\expandafter\pgfutil@append@macrotomacro\expandafter%
{\expandafter\pgffor@temp\expandafter}\expandafter{\pgffor@var}%
\expandafter\pgfutil@append@macrotomacro\expandafter%
{\expandafter\pgffor@temp\expandafter}\expandafter{\pgffor@dots@post}%
\expandafter\let\pgffor@var=\pgffor@temp%
\fi%
\ifx\pgffor@assign@before@code\pgfutil@empty%
\else%
\pgffor@assign@before@code%
\fi%
\expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook%
\ifx\pgffor@assign@after@code\pgfutil@empty%
\else%
\pgffor@assign@after@code%
\fi%
\pgffor@endgroup%
\pgffor@loop%
}
\def\pgffor@strip#1.0{\def\pgffor@temp{#1}}
\def\breakforeach{\global\pgffor@continuefalse}
\def\pgffor@gobbletil@pgffor@@stop#1\pgffor@@stop{}
\newif\ifpgffor@registeriscount
\def\pgffor@ifcsregister#1{%
\expandafter\pgffor@@ifcsregister\meaning#1\pgffor@stop}
\def\pgffor@@ifcsregister#1#2#3#4#5\pgffor@stop{%
\if#1m%
\pgffor@registeriscountfalse%
\let\pgffor@csnext=\pgfutil@secondoftwo%
\else%
\if#1u%
\let\pgffor@csnext=\pgfutil@secondoftwo%
\pgffor@registeriscountfalse%
\else%
\let\pgffor@csnext=\pgfutil@firstoftwo%
\if#4u%
\pgffor@registeriscounttrue%
\else%
\pgffor@registeriscountfalse%
\let\pgffor@csnext=\pgfutil@firstoftwo%
\fi%
\fi%
\fi%
\pgffor@csnext}
\newif\ifpgffor@alphabeticsequence
\def\pgffor@dots@charcheck#1\pgffor@@stop{%
\edef\pgffor@dots@charcheck@temp{#1}%
\expandafter\expandafter\expandafter\pgffor@@dotscharcheck\expandafter\meaning\pgffor@dots@charcheck@temp\pgffor@@stop%
}
\def\pgffor@@dotscharcheck#1#2\pgffor@@stop{%
\if#1t%
\afterassignment\pgffor@gobbletil@pgffor@@stop%
\expandafter\chardef\expandafter\pgffor@char\expandafter=\expandafter`\pgffor@dots@charcheck@temp\relax\pgffor@@stop%
\edef\pgffor@char{\the\pgffor@char}%
\ifnum\pgffor@char>64\relax%
\ifnum\pgffor@char<91\relax%
\let\pgffor@dotsvalue=\pgffor@char%
\pgffor@alphabeticsequencetrue%
\else%
\ifnum\pgffor@char>96\relax%
\ifnum\pgffor@char<123\relax%
\let\pgffor@dotsvalue=\pgffor@char%
\pgffor@alphabeticsequencetrue%
\fi%
\fi%
\fi%
\fi%
\fi%
}
\def\pgffor@makealphabetic#1{%
\pgfutil@tempcnta=#1\relax%
\ifnum\pgfutil@tempcnta>95\relax%
\advance\pgfutil@tempcnta by-96\relax%
\edef#1{\pgffor@alpha\pgfutil@tempcnta}%
\else%
\advance\pgfutil@tempcnta by-64 %
\edef#1{\pgffor@Alpha\pgfutil@tempcnta}%
\fi%
}
\def\pgffor@Alpha#1{%
\ifcase#1\relax\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M%
\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else?\fi%
}
\def\pgffor@alpha#1{%
\ifcase#1\relax\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m%
\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else?\fi%
}
\newtoks\pgffor@toks
\def\pgffor@addcstotoks#1{%
\expandafter\def\expandafter\pgffor@tokstemp\expandafter{\expandafter\def\expandafter#1\expandafter{#1}}%
\pgffor@@addcstotoks}
\def\pgffor@addregtotoks#1{%
\expandafter\def\expandafter\pgffor@tokstemp\expandafter{\expandafter#1\expandafter=\the#1}%
\pgffor@@addcstotoks}
\def\pgffor@addiftotoks#1{%
\begingroup%
\escapechar=-1\relax%
\expandafter\pgffor@@addiftotoks\string#1\pgffor@stop}
\def\pgffor@@addiftotoks#1#2#3#4\pgffor@stop{%
\endgroup
\csname if#3#4\endcsname%
\expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#3#4true\endcsname}%
\else%
\expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#3#4false\endcsname}%
\fi%
\pgffor@@addcstotoks%
}
\def\pgffor@@addcstotoks{%
\expandafter\expandafter\expandafter\pgffor@toks\expandafter\expandafter\expandafter=%
\expandafter\expandafter\expandafter{\expandafter\pgffor@tokstemp\the\pgffor@toks}%
}
\def\pgffor@atbeginforeach{%
\begingroup%
}
\def\pgffor@atendforeach{%
\global\edef\pgffor@remember@expanded{\pgffor@remember@code}%
\ifx\pgffor@remember@expanded\pgfutil@empty%
\else%
\pgffor@remember@expanded%
\global\let\pgffor@remember@expanded=\pgfutil@empty%
\fi%
\endgroup%
}
\def\pgffor@default@begingroup{%
\begingroup%
}
\let\pgffor@remember@once@expanded=\pgfutil@empty
\let\pgffor@remember@expanded=\pgfutil@empty
\def\pgffor@default@endgroup{%
\ifx\pgffor@remember@once@code\pgfutil@empty
\else
\xdef\pgffor@remember@once@expanded{\pgffor@remember@once@code}%
\fi
\ifx\pgffor@remember@code\pgfutil@empty
\else
\xdef\pgffor@remember@expanded{\pgffor@remember@code}%
\fi
\endgroup
\ifx\pgffor@remember@once@expanded\pgfutil@empty
\else
\pgffor@remember@once@expanded%
\global\let\pgffor@remember@once@expanded=\pgfutil@empty
\fi
\ifx\pgffor@assign@once@code\pgfutil@empty
\else
\global\let\pgffor@assign@once@code=\pgfutil@empty
\fi
\ifx\pgffor@remember@expanded\pgfutil@empty
\else
\pgffor@remember@expanded%
\global\let\pgffor@remember@expanded=\pgfutil@empty
\fi
}
\let\pgffor@begingroup=\pgffor@default@begingroup
\let\pgffor@endgroup=\pgffor@default@endgroup
\def\pgffor@stack@begingroup{%
\pgffor@toks={}%
\pgffor@addcstotoks{\pgffor@mainvar}%
\pgffor@addcstotoks{\pgffor@var}%
\pgffor@addcstotoks{\pgffor@body}%
\pgffor@addcstotoks{\pgffor@last}%
\pgffor@addcstotoks{\pgffor@prevlast}%
\pgffor@addcstotoks{\pgffor@dotsend}%
\pgffor@addcstotoks{\pgffor@assign@before@code}%
\pgffor@addcstotoks{\pgffor@assign@after@code}%
\pgffor@addcstotoks{\pgffor@remember@code}%
\pgffor@addcstotoks{\pgffor@remember@once@code}%
\pgffor@addcstotoks{\pgffor@dots@pre}%
\pgffor@addcstotoks{\pgffor@dots@post}%
\pgffor@addregtotoks{\pgffor@iter}%
\pgffor@addregtotoks{\pgffor@skip}%
\pgffor@addiftotoks{\ifpgffor@alphabeticsequence}%
\pgffor@addiftotoks{\ifpgffor@context}%
\expandafter\pgffor@stackpush\expandafter{\the\pgffor@toks}%
}
\def\pgffor@stack@endgroup{\pgffor@stackpop}
\newif\ifpgffor@assign@evaluate
\newif\ifpgffor@assign@once
\newif\ifpgffor@assign@parse
\pgfkeys{/pgf/foreach/.cd,
var/.code=\pgffor@var@add#1\pgffor@stop,
scope iterations/.code={
\csname if#1\endcsname%
\let\pgffor@begingroup=\pgffor@default@begingroup%
\let\pgffor@endgroup=\pgffor@default@endgroup%
\else%
\let\pgffor@begingroup=\pgffor@stack@begingroup%
\let\pgffor@endgroup=\pgffor@stack@endgroup%
\fi%
},
evaluate/.code=\pgffor@assign@evaluatetrue\pgffor@assign@oncefalse\pgffor@assign@parse{#1},%
assign/.code=\pgffor@assign@evaluatefalse\pgffor@assign@oncefalse\pgffor@assign@parse{#1},%
evaluate once/.code=\pgffor@assign@evaluatetrue\pgffor@assign@oncetrue\pgffor@assign@parse{#1},%
assign once/.code=\pgffor@assign@evaluatefalse\pgffor@assign@oncetrue\pgffor@assign@parse{#1},%
remember/.code=\pgffor@remember@parse{#1},%
count/.code=\pgffor@count@parse#1\pgffor@stop,
parse/.is if=pgffor@assign@parse,
parse/.default=false,
expand list/.is if=pgffor@expand@list@,
expand list/.default=true,
expand list=false,
}
\def\pgffor@assign@parse#1{%
\pgfutil@in@;{#1}%
\ifpgfutil@in@%
\else%
\pgfutil@in@={#1}%
\fi%
\ifpgfutil@in@%
\pgffor@assign@@parse#1;\pgffor@stop;%
\else%
\pgffor@assign@parse@old#1\pgffor@stop%
\fi%
}
\def\pgffor@stop{\pgffor@stop}
\def\pgffor@assign@@parse#1;{%
\def\pgffor@test{#1}%
\ifx\pgffor@test\pgffor@stop%
\let\pgffor@next=\relax%
\else%
\let\pgffor@next=\pgffor@assign@@parse%
\ifx\pgffor@test\pgfutil@empty%
\else%
\pgfutil@in@={#1}%
\ifpgfutil@in@%
\pgffor@assign@@@parse#1\pgffor@stop%
\else%
\pgffor@assign@@@parse#1=#1\pgffor@stop%
\fi%
\fi%
\fi%
\pgffor@next}
\def\pgffor@assign@@@parse#1=#2\pgffor@stop{%
\ifpgffor@assign@evaluate%
\ifpgffor@assign@once%
\pgfutil@append@tomacro{\pgffor@assign@once@code}{\pgfmathparse{#2}\let#1=\pgfmathresult}%
\pgfutil@append@tomacro{\pgffor@remember@once@code}{\noexpand\def\noexpand#1{#2}}%
\else
\pgfutil@append@tomacro{\pgffor@assign@before@code}{\pgfmathparse{#2}\let#1=\pgfmathresult}%
\fi%
\else%
\ifpgffor@assign@once%
\pgfutil@append@tomacro{\pgffor@assign@once@code}{\def#1{#2}}%
\pgfutil@append@tomacro{\pgffor@remember@once@code}{\noexpand\def\noexpand#1{#2}}%
\else
\pgfutil@append@tomacro{\pgffor@assign@before@code}{\def#1{#2}}%
\fi%
\fi%
}
\def\pgffor@assign@parse@old#1#2\pgffor@stop{%
\pgffor@assign@@parse@old#2\pgffor@stop as#1using #1\pgffor@@stop}
\def\pgffor@assign@@parse@old#1as#2#3\pgffor@@stop{%
\pgffor@assign@@@parse@old{#2}#1#3\pgffor@stop\pgffor@@stop}
\def\pgffor@assign@@@parse@old#1#2using #3\pgffor@stop#4\pgffor@@stop{%
\pgffor@assign@@@parse#1=#3\pgffor@stop}
\def\pgffor@remember@parse#1{%
\pgfutil@in@ a{#1}%
\ifpgfutil@in@%
\pgffor@remember@parse@old#1\pgffor@stop%
\else%
\pgffor@remember@@parse#1;\pgffor@stop;%
\fi%
}
\def\pgffor@remember@@parse#1;{%
\def\pgffor@test{#1}%
\ifx\pgffor@test\pgffor@stop%
\let\pgffor@next=\relax%
\else%
\let\pgffor@next=\pgffor@remember@@parse%
\ifx\pgffor@test\pgfutil@empty%
\else%
\pgfutil@in@={#1}%
\ifpgfutil@in@%
\pgffor@remember@@@parse#1\pgffor@stop%
\else%
\pgffor@ifcsregister{#1}{%
\pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand#1=\the#1\noexpand\relax}%
}%
{%
\pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
}%
\fi%
\fi%
\fi%
\pgffor@next%
}
\def\pgffor@remember@@@parse#1=#2\pgffor@stop{%
\pgffor@ifcsregister{#2}{%
\pgfutil@append@tomacro{\pgffor@assign@after@code}{\expandafter\def\expandafter#1\expandafter{\the#2}}%
\pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
}%
{%
\pgfutil@append@tomacro{\pgffor@assign@after@code}{\expandafter\def\expandafter#1\expandafter{#2}}%
\pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
}%
}
\def\pgffor@remember@parse@old#1#2\pgffor@stop{%
\pgffor@remember@@parse@old#1#2\pgffor@stop as#1(initially 0)\pgffor@@stop}
\def\pgffor@remember@@parse@old#1#2as#3#4\pgffor@@stop{%
\pgffor@remember@@@parse@old{#1}{#3}#2#4\pgffor@stop\pgffor@@stop}
\def\pgffor@remember@@@parse@old#1#2#3(initially #4)#5\pgffor@stop#6\pgffor@@stop{%
\pgfutil@append@tomacro{\pgffor@assign@after@code}{\edef#2{#1}}%
\pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#2{#2}}%
\pgfutil@append@tomacro{\pgffor@assign@once@code}{\def#2{#4}}%
}
\def\pgffor@count@parse#1#2\pgffor@stop{%
\pgffor@count@@parse#1#2\pgffor@stop from 1\pgffor@stop\pgffor@@stop}
\def\pgffor@count@@parse#1#2from#3\pgffor@stop#4\pgffor@@stop{%
\pgfutil@append@tomacro\pgffor@remember@code{\noexpand\def\noexpand#1{#1}}%
\pgfutil@append@tomacro\pgffor@assign@before@code{\pgfmathparse{int(#1+1)}\let#1=\pgfmathresult}%
\pgfmathparse{int(#3-1)}\let#1=\pgfmathresult%
}
\def\pgfutil@append@macrotomacro#1#2{%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
#1\expandafter\expandafter\expandafter{\expandafter#1#2}}
\def\pgfutil@append@tomacro#1#2{%
\expandafter\def\expandafter#1\expandafter{#1#2}}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgffor.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfint.code.tex ====
\ifx\pgfintloaded\pgfutil@undefined
\let\pgfintloaded=\relax
\else
\expandafter\endinput
\fi
\def\pgfinteval#1{\number\numexpr#1\relax}
\def\pgfintabs#1{\number\expandafter\pgfint@abs\number\numexpr#1\relax}
\def\pgfint@abs#1{\ifx-#1\else\expandafter#1\fi}
\def\pgfintmax#1#2{%
\number\expandafter\pgfint@minmax
\number\numexpr#1\expandafter;%
\number\numexpr#2;%
>
}
\def\pgfintmin#1#2{%
\number\expandafter\pgfint@minmax
\number\numexpr#1\expandafter;%
\number\numexpr#2;%
<
}
\def\pgfint@minmax#1;#2;#3{%
\ifnum#1#3#2
#1%
\else
#2%
\fi
}
\def\pgfintdivtruncate#1#2{%
\number\numexpr\expandafter\pgfint@divtruncate
\number\numexpr#1\expandafter;%
\number\numexpr#2;%
\relax
}
\def\pgfint@divtruncate#1#2;#3#4;{%
\ifx0#1
0%
\else
(#1#2%
\ifx-#1 +\else-\fi
(\ifx-#3 -\fi#3#4-1)/2%
)%
\fi
/#3#4%
}
\def\pgfintdivfloor#1#2{%
\number\numexpr\expandafter\pgfint@divfloor
\number\numexpr#1\expandafter;%
\number\numexpr#2;%
\relax
}
\def\pgfint@divfloor#1#2;#3#4;{%
\ifx0#1
0%
\else
\ifnum
0\ifx-#1\ifx#3-\else1\fi\fi
0\ifx-#3\ifx#1-\else1\fi\fi
>0
\pgfint@@divfloor#1#2;#3#4;-+%
\else
\pgfint@@divfloor#1#2;#3#4;+-%
\fi
\fi
/#3#4%
}
\def\pgfint@@divfloor#1#2;#3#4;#5#6{%
(#1#2%
\ifx-#1 #5\else#6\fi
(\ifx-#3 -\fi#3#4#61)/2%
)%
}
\def\pgfintdivround#1#2{\number\numexpr(#1)/(#2)\relax}
\def\pgfintmod#1#2{%
\number\numexpr\expandafter\pgfint@mod%
\number\numexpr#1\expandafter;%
\number\numexpr#2;%
\relax
}
\def\pgfint@mod#1;#2;{#1-(\pgfint@divfloor#1;#2;)*#2}
\def\pgfintset#1#2{#1 \numexpr#2\relax}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfint.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeys.code.tex ====
\ifx\pgfkeysloaded\undefined
\let\pgfkeysloaded=\relax
\else
\expandafter\endinput
\fi
\def\pgfkeys@empty{}
\long\def\pgfkeys@firstoftwo#1#2{#1}
\long\def\pgfkeys@secondoftwo#1#2{#2}
\long\def\pgfkeys@ifcsname#1{%
\ifcsname#1\endcsname
\expandafter\pgfkeys@firstoftwo
\else
\expandafter\pgfkeys@secondoftwo
\fi
}
\ifx\PackageError\undefined
\def\pgfkeys@error#1{\errmessage{Package pgfkeys Error: #1}}%
\else
\def\pgfkeys@error#1{\PackageError{pgfkeys}{#1}{}}%
\fi
\ifx\eTeXrevision\undefined%
\pgfkeys@error{PGF requires etex in extended mode}%
\csname @@end\expandafter\endcsname\expandafter\end%
\fi
\ifnum\eTeXversion<2
\pgfkeys@error{PGF requires etex version 2}%
\csname @@end\expandafter\endcsname\expandafter\end%
\fi
\ifx\contextversion\undefined
\let\pgfkeys@expanded \expanded
\let\pgfkeys@unexpanded \unexpanded
\else
\let\pgfkeys@expanded \normalexpanded
\let\pgfkeys@unexpanded \normalunexpanded
\fi
\begingroup
\edef\pgfkeys@tmpa{\string\expanded}
\edef\pgfkeys@tmpb{\meaning\pgfkeys@expanded}
\expandafter
\endgroup
\ifx\pgfkeys@tmpa\pgfkeys@tmpb
\else
\pgfkeys@error{PGF requires the \noexpand\expanded primitive}
\csname @@end\expandafter\endcsname\expandafter\end%
\fi
\long\def\pgfkeyssetvalue#1#2{%
\pgfkeys@temptoks{#2}\expandafter\edef\csname pgfk@#1\endcsname{\the\pgfkeys@temptoks}%
}
\long\def\pgfkeyssetevalue#1#2{%
\expandafter\edef\csname pgfk@#1\endcsname
{\pgfkeys@unexpanded\expandafter{\pgfkeys@expanded{#2}}}%
}
\long\def\pgfkeysaddvalue#1#2#3{%
{%
\toks0{#2}%
\pgfkeysifdefined{#1}
{\pgfkeys@temptoks\expandafter\expandafter\expandafter{\csname pgfk@#1\endcsname}}%
{\pgfkeys@temptoks{}}%
\toks1{#3}%
\xdef\pgfkeys@global@temp{\the\toks0 \the\pgfkeys@temptoks \the\toks1}%
}%
\pgfkeyslet{#1}\pgfkeys@global@temp%
}
\long\def\pgfkeyslet#1#2{%
\expandafter\let\csname pgfk@#1\endcsname#2%
}
\long\def\pgfkeysgetvalue#1#2{%
\pgfkeys@ifcsname{pgfk@#1}%
{\expandafter\let\expandafter#2\csname pgfk@#1\endcsname}%
{\let#2\relax}}
\let\pgfkeys@relax\relax
\long\def\pgfkeysvalueof#1{\csname\pgfkeys@ifcsname{pgfk@#1}{pgfk@#1}{pgfkeys@relax}\endcsname}
\long\def\pgfkeysifdefined#1{%
\ifcsname pgfk@#1\endcsname
\expandafter\pgfkeys@firstoftwo
\else
\expandafter\pgfkeys@secondoftwo
\fi
}
\long\def\pgfkeysifassignable#1#2#3{%
\pgfkeysifdefined{#1}%
{#2}
{\pgfkeysifdefined{#1/.@cmd}%
{#2}%
{#3}}%
}%
\newtoks\pgfkeys@pathtoks
\def\pgfkeyscurrentpath{\the\pgfkeys@pathtoks}
\newtoks\pgfkeys@temptoks
\def\pgfkeys@root{/}
\let\pgfkeysdefaultpath\pgfkeys@root
\def\pgfkeys{\expandafter\pgfkeys@@set\expandafter{\pgfkeysdefaultpath}}%
\long\def\pgfkeys@@set#1#2{%
\let\pgfkeysdefaultpath\pgfkeys@root%
\pgfkeys@parse#2,\pgfkeys@mainstop%
\def\pgfkeysdefaultpath{#1}}
\def\pgfkeys@parse{\futurelet\pgfkeys@possiblerelax\pgfkeys@parse@main}
\def\pgfkeys@parse@main{%
\ifx\pgfkeys@possiblerelax\pgfkeys@mainstop%
\expandafter\pgfkeys@cleanup%
\else%
\expandafter\pgfkeys@normal%
\fi%
}
\newif\ifpgfkeys@syntax@handlers
\def\pgfkeys@normal{%
\ifpgfkeys@syntax@handlers%
\expandafter\pgfkeys@syntax@handlers%
\else%
\expandafter\pgfkeys@@normal%
\fi%
}
\def\pgfkeys@syntax@handlers{\pgf@keys@utilifnextchar\relax\pgfkeys@syntax@@handlers\pgfkeys@syntax@@handlers}%
\def\pgfkeys@syntax@@handlers{\futurelet\pgfkeys@first@char\pgfkeys@syntax@handlers@test}
\def\pgfkeys@syntax@handlers@test{%
\pgfkeysgetvalue{/handlers/first char syntax/\meaning\pgfkeys@first@char}\pgfkeys@the@handler%
\ifx\pgfkeys@the@handler\relax%
\expandafter\pgfkeys@@normal%
\else%
\expandafter\pgfkeys@use@handler%
\fi%
}
\long\def\pgfkeys@use@handler#1,{%
\pgfkeys@the@handler{#1}%
\pgfkeys@parse%
}
\long\def\pgfkeys@@normal#1,{%
\pgfkeys@unpack#1=\pgfkeysnovalue=\pgfkeys@stop%
\pgfkeys@parse%
}
\def\pgfkeys@cleanup\pgfkeys@mainstop{}
\def\pgfkeys@mainstop{\pgfkeys@mainstop} %
\def\pgfkeys@novalue{}
\def\pgfkeysnovalue{\pgfkeys@novalue} %
\def\pgfkeysnovalue@text{\pgfkeysnovalue}
\def\pgfkeysvaluerequired{\pgfkeysvaluerequired} %
\long\def\pgfkeys@unpack#1=#2=#3\pgfkeys@stop{%
\pgfkeys@spdef\pgfkeyscurrentkey{#1}%
\edef\pgfkeyscurrentkey{\pgfkeyscurrentkey}%
\ifx\pgfkeyscurrentkey\pgfkeys@empty%
\else%
\pgfkeys@add@path@as@needed%
\pgfkeys@spdef\pgfkeyscurrentvalue{#2}%
\ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
\pgfkeysifdefined{\pgfkeyscurrentkey/.@def}%
{\pgfkeysgetvalue{\pgfkeyscurrentkey/.@def}{\pgfkeyscurrentvalue}}
{}%
\fi%
\ifx\pgfkeyscurrentvalue\pgfkeysvaluerequired%
\def\pgf@marshal{\pgfkeysvalueof{/errors/value required/.@cmd}}%
\expandafter\pgf@marshal\expandafter{\pgfkeyscurrentkey}{}\pgfeov%
\else%
\pgfkeys@case@one%
\fi%
\fi}
\def\pgfkeys@case@one{%
\pgfkeysifdefined{\pgfkeyscurrentkey/.@cmd}%
{\pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
\ifx\pgfkeys@code\relax\expandafter\pgfkeys@firstoftwo\else\expandafter\pgfkeys@secondoftwo\fi
{\pgfkeys@unknown}%
{\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}}
{\pgfkeys@case@two}%
}
\def\pgfkeys@case@two{%
\pgfkeysifdefined{\pgfkeyscurrentkey}%
{\pgfkeys@case@two@extern}%
{\pgfkeys@case@three}%
}
\def\pgfkeys@case@two@extern{%
\ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
\pgfkeysvalueof{\pgfkeyscurrentkey}%
\else%
\pgfkeyslet{\pgfkeyscurrentkey}\pgfkeyscurrentvalue%
\fi%
}
\def\pgfkeys@case@three{%
\pgfkeys@split@path%
\pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}%
{\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}
{\pgfkeys@unknown}%
}
\let\pgfkeys@case@three@handleall=\pgfkeys@case@three
\def\pgfkeys@case@three@handle@restricted{%
\pgfkeys@split@path%
\pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
\pgfkeys@ifexecutehandler{%
\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
}{%
\let\pgfkeys@tempa=\pgfkeyscurrentkey
\let\pgfkeys@tempb=\pgfkeyscurrentname
\edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
\pgfkeys@split@path%
\let\pgfkeyscurrentkey=\pgfkeys@tempa
\edef\pgfkeyscurrentname{\pgfkeyscurrentname/\pgfkeys@tempb}%
\pgfkeys@unknown
}%
}{%
\pgfkeys@unknown
}%
}
\def\pgfkeys@ifexecutehandler#1#2{#1}%
\let\pgfkeys@ifexecutehandler@handleall=\pgfkeys@ifexecutehandler
\def\pgfkeys@ifexecutehandler@handleonlyexisting#1#2{%
\pgfkeys@ifcsname{pgfk@excpt@\pgfkeyscurrentname}{%
#1%
}{%
\pgfkeysifdefined{\pgfkeyscurrentpath}{#1}{%
\pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}{#1}{#2}%
}{}%
}%
}%
\def\pgfkeys@ifexecutehandler@handlefullorexisting#1#2{%
\ifpgfkeysaddeddefaultpath
\pgfkeys@ifcsname{pgfk@excpt@\pgfkeyscurrentname}{%
#1%
}{%
\pgfkeysifdefined{\pgfkeyscurrentpath}{%
#1%
}{%
\pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}{%
#1%
}{%
#2%
}%
}%
}%
\else
#1%
\fi
}%
\def\pgfkeysaddhandleonlyexistingexception#1{\expandafter\def\csname pgfk@excpt@#1\endcsname{1}}%
\def\pgfkeys@unknown{%
\pgfkeysifdefined{\pgfkeyscurrentpath/.unknown/.@cmd}%
{%
\pgfkeysgetvalue{\pgfkeyscurrentpath/.unknown/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}
{%
\pgfkeysgetvalue{/handlers/.unknown/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
}%
}
\long\def\pgfkey@argumentisspace#1{%
\long\def\pgfkeys@spdef##1##2{%
\futurelet\pgfkeys@possiblespace\pgfkeys@sp@a##2\pgfkeys@stop\pgfkeys@stop#1\pgfkeys@stop\relax##1}%
\def\pgfkeys@sp@a{%
\ifx\pgfkeys@possiblespace\pgfkeys@sptoken%
\expandafter\pgfkeys@sp@b%
\else%
\expandafter\pgfkeys@sp@b\expandafter#1%
\fi}%
\long\def\pgfkeys@sp@b#1##1 \pgfkeys@stop{\pgfkeys@sp@c##1}%
}
\pgfkey@argumentisspace{ }
\long\def\pgfkeys@sp@c#1\pgfkeys@stop#2\relax#3{\pgfkeys@temptoks{#1}\edef#3{\the\pgfkeys@temptoks}}
{\def\:{\global\let\pgfkeys@sptoken= } \: }
\def\pgfkeys@add@path@as@needed{%
\expandafter\futurelet\expandafter\pgfkeys@possibleslash\expandafter\pgfkeys@check@slash\pgfkeyscurrentkey\relax%
}
\newif\ifpgfkeysaddeddefaultpath
\def\pgfkeys@check@slash{%
\ifx\pgfkeys@possibleslash/%
\expandafter\pgfkeys@nevermind%
\else%
\expandafter\pgfkeys@addpath%
\fi%
}
\def\pgfkeys@nevermind#1\relax{%
\pgfkeysaddeddefaultpathfalse
\let\pgfkeyscurrentkeyRAW\pgfkeyscurrentkey
}
\def\pgfkeys@addpath#1\relax{%
\pgfkeysaddeddefaultpathtrue
\def\pgfkeyscurrentkeyRAW{#1}%
\edef\pgfkeyscurrentkey{\pgfkeysdefaultpath#1}%
}
\def\pgfkeys@split@path{%
\pgfkeys@pathtoks{}%
\expandafter\pgfkeys@splitter\pgfkeyscurrentkey//%
}
\def\pgfkeys@splitter#1/#2/{%
\def\pgfkeys@temp{#2}%
\ifx\pgfkeys@temp\pgfkeys@empty%
\def\pgfkeyscurrentname{#1}%
\expandafter\pgfkeys@gobbletoslash%
\else%
\expandafter\pgfkeys@pathtoks\expandafter{\the\pgfkeys@pathtoks#1/}%
\fi%
\pgfkeys@splitter#2/%
}
\def\pgfkeys@gobbletoslash\pgfkeys@splitter/{%
\if\relax\detokenize\expandafter{\the\pgfkeys@pathtoks}\relax\else
\expandafter\pgfkeys@remove@slash\the\pgfkeys@pathtoks\relax
\fi
}%
\def\pgfkeys@remove@slash#1/\relax{\pgfkeys@pathtoks{#1}}
\def\pgfqkeys{\expandafter\pgfkeys@@qset\expandafter{\pgfkeysdefaultpath}}%
\long\def\pgfkeys@@qset#1#2#3{\def\pgfkeysdefaultpath{#2/}\pgfkeys@parse#3,\pgfkeys@mainstop\def\pgfkeysdefaultpath{#1}}
\long\def\pgfkeysalso#1{\pgfkeys@parse#1,\pgfkeys@mainstop}
\long\def\pgfqkeysalso#1#2{\def\pgfkeysdefaultpath{#1/}\pgfkeys@parse#2,\pgfkeys@mainstop}
\long\def\pgfkeysdef#1#2{%
\long\def\pgfkeys@temp##1\pgfeov{#2}%
\pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
\pgfkeyssetvalue{#1/.@body}{#2}%
}
\long\def\pgfkeysedef#1#2{%
\long\edef\pgfkeys@temp##1\pgfeov{#2}%
\pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
\pgfkeyssetevalue{#1/.@body}{#2}%
}
\long\def\pgfkeysdefargs#1#2#3{%
\long\def\pgfkeys@temp#2\pgfeov{#3}%
\pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
\pgfkeyssetvalue{#1/.@args}{#2\pgfeov}%
\pgfkeyssetvalue{#1/.@body}{#3}%
}
\long\def\pgfkeysedefargs#1#2#3{%
\long\edef\pgfkeys@temp#2\pgfeov{#3}%
\pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
\pgfkeyssetvalue{#1/.@args}{#2\pgfeov}%
\pgfkeyssetevalue{#1/.@body}{#3}%
}
\long\def\pgfkeysdefnargs#1#2#3{\pgfkeysdefnargs@{#1}{#2}{#3}{\def}{\pgfkeyssetvalue}}%
\long\def\pgfkeysedefnargs#1#2#3{\pgfkeysdefnargs@{#1}{#2}{#3}{\edef}{\pgfkeyssetevalue}}%
\long\def\pgfkeysdefnargs@#1#2#3#4#5{%
\ifcase#2\relax
\pgfkeyssetvalue{#1/.@args}{}%
\or
\pgfkeyssetvalue{#1/.@args}{##1}%
\or
\pgfkeyssetvalue{#1/.@args}{##1##2}%
\or
\pgfkeyssetvalue{#1/.@args}{##1##2##3}%
\or
\pgfkeyssetvalue{#1/.@args}{##1##2##3##4}%
\or
\pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5}%
\or
\pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6}%
\or
\pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7}%
\or
\pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7##8}%
\or
\pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7##8##9}%
\else
\pgfkeys@error{\string\pgfkeysdefnargs: expected <= 9 arguments, got #2}%
\fi
\pgfkeysgetvalue{#1/.@args}\pgfkeys@tempargs
\def\pgfkeys@temp{\expandafter\long\expandafter#4\csname pgfk@#1/.@@body\endcsname}%
\expandafter\pgfkeys@temp\pgfkeys@tempargs{#3}%
\edef\pgfkeys@tempargs{\noexpand\pgfkeysvalueof{#1/.@@body}}%
\def\pgfkeys@temp{\pgfkeysdef{#1}}%
\ifnum#2=1\relax
\expandafter\pgfkeys@temp\expandafter{\pgfkeys@tempargs{##1}}%
\else
\expandafter\pgfkeys@temp\expandafter{\pgfkeys@tempargs##1}%
\fi
#5{#1/.@body}{#3}%
}
\pgfkeysdef{/handlers/.code}{\pgfkeysdef{\pgfkeyscurrentpath}{#1}}
\pgfkeysdef{/handlers/.code 2 args}{\pgfkeysdefargs{\pgfkeyscurrentpath}{##1##2}{#1}}
\pgfkeysdef{/handlers/.ecode}{\pgfkeysedef{\pgfkeyscurrentpath}{#1}}
\pgfkeysdef{/handlers/.ecode 2 args}{\pgfkeysedefargs{\pgfkeyscurrentpath}{##1##2}{#1}}
\pgfkeysdefnargs{/handlers/.code args}{2}{\pgfkeysdefargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.ecode args}{2}{\pgfkeysedefargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.code n args}{2}{\pgfkeysdefnargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.ecode n args}{2}{\pgfkeysedefnargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeys{/handlers/.add code/.code 2 args=%
\pgfkeysifdefined{\pgfkeyscurrentpath/.@args}%
{%
\pgfkeysaddvalue{\pgfkeyscurrentpath/.@body}{#1}{#2}%
{%
\pgfkeysgetvalue{\pgfkeyscurrentpath/.@args}{\pgfkeys@tempargs}%
\pgfkeysgetvalue{\pgfkeyscurrentpath/.@body}{\pgfkeys@tempbody}%
\def\pgfkeys@marshal{\expandafter\long\expandafter\gdef\expandafter\pgfkeys@global@temp\pgfkeys@tempargs}%
\expandafter\pgfkeys@marshal\expandafter{\pgfkeys@tempbody}%
}%
\pgfkeysifdefined{\pgfkeyscurrentpath/.@@body}{%
\pgfkeyslet{\pgfkeyscurrentpath/.@@body}{\pgfkeys@global@temp}%
}{%
\pgfkeyslet{\pgfkeyscurrentpath/.@cmd}{\pgfkeys@global@temp}%
}%
}%
{%
\edef\pgf@expanded@path{\pgfkeyscurrentpath}%
{%
\toks0{#1}%
\pgfkeysifdefined{\pgf@expanded@path/.@cmd}%
{\expandafter\expandafter\expandafter\pgfkeys@temptoks\expandafter\expandafter\expandafter{\csname pgfk@\pgf@expanded@path/.@body\endcsname}}%
{\expandafter\pgfkeys@temptoks\expandafter{\expandafter\pgfkeyssetvalue\expandafter{\pgf@expanded@path}{##1}}}%
\toks1{#2}%
\xdef\pgfkeys@global@temp{\the\toks0 \the\pgfkeys@temptoks \the\toks1 }%
}%
\def\pgf@temp{\pgfkeyssetvalue{\pgf@expanded@path/.@body}}%
\expandafter\pgf@temp\expandafter{\pgfkeys@global@temp}%
\expandafter\long\expandafter\def\expandafter\pgfkeys@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
\pgfkeyslet{\pgf@expanded@path/.@cmd}\pgfkeys@temp%
}%
}
\pgfkeys{/handlers/.prefix code/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={#1}{}}}%
\pgfkeys{/handlers/.append code/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={}{#1}}}%
\pgfkeys{/handlers/.style/.code=\pgfkeys{\pgfkeyscurrentpath/.code=\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.estyle/.code=\pgfkeys{\pgfkeyscurrentpath/.ecode=\noexpand\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.style args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.code args={#1}{\pgfkeysalso{#2}}}}
\pgfkeys{/handlers/.estyle args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.ecode args={#1}{\noexpand\pgfkeysalso{#2}}}}
\pgfkeys{/handlers/.style 2 args/.code=\pgfkeys{\pgfkeyscurrentpath/.code 2 args=\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.style n args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.code n args={#1}{\pgfkeysalso{#2}}}}
\pgfkeys{/handlers/.add style/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.add code={\pgfkeysalso{#1}}{\pgfkeysalso{#2}}}}%
\pgfkeys{/handlers/.prefix style/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={\pgfkeysalso{#1}}{}}}%
\pgfkeys{/handlers/.append style/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={}{\pgfkeysalso{#1}}}}%
\pgfkeys{/handlers/.initial/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath}{#1}}
\pgfkeys{/handlers/.add/.code 2 args=\pgfkeysaddvalue{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeys{/handlers/.prefix/.code=\pgfkeysaddvalue{\pgfkeyscurrentpath}{#1}{}}
\pgfkeys{/handlers/.append/.code=\pgfkeysaddvalue{\pgfkeyscurrentpath}{}{#1}}
\pgfkeys{/handlers/.get/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath}{#1}}
\pgfkeys{/handlers/.link/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath}{\pgfkeysvalueof{#1}}}
\pgfkeys{/handlers/.default/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}{#1}}
\pgfkeys{/handlers/.value required/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeysvaluerequired}}
\pgfkeys{/handlers/.value forbidden/.code=\pgfkeys{\pgfkeyscurrentpath/.add code=%
{%
\ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
\else%
\def\pgf@marshal{\pgfkeysvalueof{/errors/value forbidden/.@cmd}}%
\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkey\expandafter}\expandafter{\pgfkeyscurrentvalue}\pgfeov%
\fi%
}{}}}
\pgfkeys{/handlers/.store in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\def#1{##1}}}
\pgfkeys{/handlers/.estore in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\edef#1{##1}}}
\pgfkeys{/handlers/.is if/.code=\pgfkeysalso{%
\pgfkeyscurrentpath/.code=\pgfkeys@handle@boolean{#1}{##1},
\pgfkeyscurrentpath/.default=true%
}%
}
\def\pgfkeys@handle@boolean#1#2{%
\pgfkeys@ifcsname{#1#2}{%
\csname#1#2\endcsname%
}{%
\def\pgf@marshal{\pgfkeysvalueof{/errors/boolean expected/.@cmd}}%
\expandafter\pgf@marshal\expandafter{\pgfkeyscurrentkey}{#2}\pgfeov%
}%
}
\pgfkeys{/handlers/.is choice/.code=%
\pgfkeys{%
\pgfkeyscurrentpath/.cd,%
.code=\def\pgfkeys@was@choice{##1}\expandafter\pgfkeysalso\expandafter{\pgfkeyscurrentkey/##1},
.unknown/.code={%
\def\pgf@marshal{\pgfkeysvalueof{/errors/unknown choice value/.@cmd}}%
{\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@pathtoks\expandafter}\expandafter{\pgfkeys@was@choice}\pgfeov}%
}%
}%
}
\pgfkeys{/handlers/.list/.code=%
{%
\ifx\foreach\@undefined%
\pgfkeys@error{You need to load the pgffor package to use the .list key syntax.}%
\fi%
\def\pgf@keys@temp{}%
\foreach \pgf@keys@key in{#1}%
{\expandafter\expandafter\expandafter\gdef%
\expandafter\expandafter\expandafter\pgf@keys@temp%
\expandafter\expandafter\expandafter{\expandafter\pgf@keys@temp\expandafter{\pgf@keys@key}}}%
\edef\pgf@keys@list@path{\pgfkeyscurrentpath}%
\expandafter\expandafter\expandafter\pgf@keys@do@list%
\expandafter\expandafter\expandafter{\expandafter\pgf@keys@list@path\expandafter}\pgf@keys@temp\pgf@stop%
}%
}
\def\pgf@keys@do@list#1{\pgf@keys@utilifnextchar\bgroup{\pgf@keys@do@list@item{#1}}\pgf@keys@gobble}
\def\pgf@keys@do@list@item#1#2{\pgfkeysalso{#1={#2}}\pgf@keys@do@list{#1}}
\pgfkeys{/handlers/.forward to/.code=%
\pgfkeys{\pgfkeyscurrentpath/.add code={}{\pgfkeys{#1={##1}}}}
}
\pgfkeys{/handlers/.show value/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath}{\pgfkeysshower}\show\pgfkeysshower} %
\pgfkeys{/handlers/.show code/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeysshower}\show\pgfkeysshower} %
\pgfkeys{/handlers/first char syntax/.is if=pgfkeys@syntax@handlers}
\def\pgfkeys@searchalso@prepare@unknown@handler#1{%
\global\def\pgfkeys@global@temp##1\pgfeov{}%
\pgfkeys@searchalso@parse#1,\pgfkeys@mainstop
{%
\toks0=\expandafter{\pgfkeys@global@temp##1\pgfeov}%
\toks1={%
\pgfkeysgetvalue{/handlers/.unknown/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeys@searchalso@temp@value\pgfeov
}%
\xdef\pgfkeys@global@temp{%
\noexpand\def\noexpand\pgfkeys@searchalso@temp@value{####1}%
\noexpand\ifpgfkeysaddeddefaultpath
\noexpand\expandafter\noexpand\pgfkeys@firstoftwo
\noexpand\else
\noexpand\expandafter\noexpand\pgfkeys@secondoftwo
\noexpand\fi{%
\noexpand\pgfkeyssuccessfalse
\noexpand\let\noexpand\pgfkeys@searchalso@name=\noexpand\pgfkeyscurrentkeyRAW
\the\toks0 %
}{%
\the\toks1 %
}%
}%
\expandafter\gdef\expandafter\pgfkeys@global@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
}%
}%
\def\pgfkeys@searchalso@parse{\futurelet\pgfkeys@possiblerelax\pgfkeys@searchalso@parse@main}
\def\pgfkeys@searchalso@parse@main{%
\ifx\pgfkeys@possiblerelax\pgfkeys@mainstop%
\expandafter\pgfkeys@cleanup%
\else%
\expandafter\pgfkeys@searchalso@appendentry%
\fi%
}
\def\pgfkeys@searchalso@appendentry#1,#2{%
\def\pgfkeys@searchalso@nexttok{#2}%
\pgfkeys@spdef\pgfkeys@temp{#1}%
{%
\toks0=\expandafter{\pgfkeys@global@temp##1\pgfeov}%
\toks1=\expandafter{\pgfkeys@temp}%
\xdef\pgfkeys@global@temp{%
\the\toks0 %
\noexpand\ifpgfkeyssuccess\noexpand\else
\noexpand\pgfqkeys{\the\toks1 }{\noexpand\pgfkeys@searchalso@name
\ifx\pgfkeys@searchalso@nexttok\pgfkeys@mainstop\else/.try\fi /.expand once=\noexpand\pgfkeys@searchalso@temp@value}%
\noexpand\fi}%
\expandafter\gdef\expandafter\pgfkeys@global@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
}%
\pgfkeys@searchalso@parse#2%
}
\pgfkeys{%
/handlers/.is family/.code=\pgfkeys{\pgfkeyscurrentpath/.ecode=\edef\noexpand\pgfkeysdefaultpath{\pgfkeyscurrentpath/}},%
/handlers/.cd/.code=\edef\pgfkeysdefaultpath{\pgfkeyscurrentpath/},%
/handlers/.search also/.code={%
\pgfkeys@searchalso@prepare@unknown@handler{#1}%
\pgfkeyslet{\pgfkeyscurrentpath/.unknown/.@cmd}{\pgfkeys@global@temp}%
}
}%
\pgfkeys{/handlers/.expand once/.code=\expandafter\pgfkeys@exp@call\expandafter{#1}}
\pgfkeys{/handlers/.expand twice/.code=\expandafter\expandafter\expandafter\pgfkeys@exp@call\expandafter\expandafter\expandafter{#1}}
\pgfkeys{/handlers/.expanded/.code=\edef\pgfkeys@temp{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfkeys@temp}}
\long\def\pgfkeys@exp@call#1{\pgfkeysalso{\pgfkeyscurrentpath={#1}}}
\def\pgfkeys@mathparse{%
\pgfkeys@ifcsname{pgfmathparse}{%
\pgfmathparse
}{%
\pgfkeys@error{You have to load `pgfmath' to use \string\pgfmathparse}%
\def\pgfmathresult
}%
}
\pgfkeys{/handlers/.evaluated/.code=\pgfkeys@mathparse{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfmathresult}}
\newif\ifpgfkeyssuccess
\pgfkeys{/handlers/.try/.code=\pgfkeys@try}
\pgfkeys{/handlers/.retry/.code=\ifpgfkeyssuccess\else\pgfkeys@try\fi}
\def\pgfkeys@try{%
\edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
\ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
\pgfkeysifdefined{\pgfkeyscurrentpath/.@def}%
{\pgfkeysgetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeyscurrentvalue}}
{}%
\fi%
\pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}%
{%
\pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
\pgfkeyssuccesstrue%
}%
{%
\pgfkeysifdefined{\pgfkeyscurrentpath}%
{%
\ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
\pgfkeysvalueof{\pgfkeyscurrentpath}%
\else%
\pgfkeyslet{\pgfkeyscurrentpath}\pgfkeyscurrentvalue%
\fi%
\pgfkeyssuccesstrue%
}%
{%
\pgfkeys@split@path%
\pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
\pgfkeys@ifexecutehandler{%
\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
\pgfkeyssuccesstrue%
}{%
\pgfkeyssuccessfalse
}%
}{%
\pgfkeyssuccessfalse
}%
}%
}%
}
\pgfkeys{/utils/exec/.code={#1}} %
\pgfkeys{
/errors/boolean expected/.code 2 args=%
{%
\toks1={#1}%
\toks2={#2}%
\pgfkeys@error{%
Boolean parameter of key '\the\toks1' must be 'true' or 'false', not
'\the\toks2'. I am going to ignore it%
}%
},
/errors/value required/.code 2 args=%
{%
\toks1={#1}%
\pgfkeys@error{%
The key '\the\toks1' requires a value. I am going to ignore this
key%
}%
},
/errors/value forbidden/.code 2 args=%
{%
\toks1={#1}%
\toks2={#2}%
\pgfkeys@error{%
You may not specify a value for the key '\the\toks1'. I am going to ignore
the value '\the\toks2' that you provided%
}%
},
/errors/unknown choice value/.code 2 args=%
{%
\toks1={#1}%
\toks2={#2}%
\pgfkeys@error{%
Choice '\the\toks2' unknown in choice key '\the\toks1'. I am
going to ignore this key%
}%
},
/errors/unknown key/.code 2 args=%
{%
\toks1={#1}%
\toks2={#2}%
\def\pgf@temp{#2}%
\pgfkeys@error{%
I do not know the key '\the\toks1'\ifx\pgf@temp\pgfkeysnovalue@text\space\else, to which you passed
'\the\toks2', \fi and I am going to ignore it. Perhaps you
misspelled it%
}%
}
}
\pgfkeys{/handlers/.unknown/.code=%
{%
\def\pgf@marshal{\pgfkeysvalueof{/errors/unknown key/.@cmd}}%
{\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkey\expandafter}\expandafter{\pgfkeyscurrentvalue}\pgfeov}%
}%
}
\pgfkeys{
/handler config/.is choice,
/handler config/all/.code={%
\let\pgfkeys@case@three=\pgfkeys@case@three@handleall
\let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handleall
},
/handler config/only existing/.code={%
\let\pgfkeys@case@three=\pgfkeys@case@three@handle@restricted
\let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handleonlyexisting
},
/handler config/full or existing/.code={%
\let\pgfkeys@case@three=\pgfkeys@case@three@handle@restricted
\let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handlefullorexisting
},
/handler config/only existing/add exception/.code={\pgfkeysaddhandleonlyexistingexception{#1}},
}%
\pgfkeysaddhandleonlyexistingexception{.cd}%
\pgfkeysaddhandleonlyexistingexception{.try}%
\pgfkeysaddhandleonlyexistingexception{.retry}%
\pgfkeysaddhandleonlyexistingexception{.lastretry}%
\pgfkeysaddhandleonlyexistingexception{.unknown}%
\pgfkeysaddhandleonlyexistingexception{.expand once}%
\pgfkeysaddhandleonlyexistingexception{.expand twice}%
\pgfkeysaddhandleonlyexistingexception{.expanded}%
\def\pgf@keys@gobble#1{}
\long\def\pgf@keys@utilifnextchar#1#2#3{%
\let\pgf@keys@utilreserved@d=#1%
\def\pgf@keys@utilreserved@a{#2}%
\def\pgf@keys@utilreserved@b{#3}%
\futurelet\pgf@keys@utillet@token\pgf@keys@utilifnch}
\def\pgf@keys@utilifnch{%
\ifx\pgf@keys@utillet@token\pgf@keys@utilsptoken
\let\pgf@keys@utilreserved@c\pgf@keys@utilxifnch
\else
\ifx\pgf@keys@utillet@token\pgf@keys@utilreserved@d
\let\pgf@keys@utilreserved@c\pgf@keys@utilreserved@a
\else
\let\pgf@keys@utilreserved@c\pgf@keys@utilreserved@b
\fi
\fi
\pgf@keys@utilreserved@c}
{%
\def\:{\global\let\pgf@keys@utilsptoken= } \:
\def\:{\pgf@keys@utilxifnch} \expandafter\gdef\: {\futurelet\pgf@keys@utillet@token\pgf@keys@utilifnch}
}
\chardef\pgfkeys@inputcheck0
\def\pgfkeys@IfFileExists#1{%
\openin\pgfkeys@inputcheck=#1
\ifeof\pgfkeys@inputcheck
\expandafter\closein\expandafter\pgfkeys@inputcheck
\expandafter\pgfkeys@secondoftwo
\else
\expandafter\closein\expandafter\pgfkeys@inputcheck
\expandafter\pgfkeys@firstoftwo
\fi
}
\def\usepgfkeyslibrary{\pgf@keys@utilifnextchar[{\pgfkeys@@uselibrary}{\pgfkeys@uselibrary}}
\def\pgfkeys@@uselibrary[#1]{\pgfkeys@uselibrary{#1}}
\def\pgfkeys@uselibrary#1{\pgfkeys@uselibrary@parse#1,\pgfkeys@mainstop}
\def\pgfkeys@uselibrary@parse{%
\pgf@keys@utilifnextchar\pgfkeys@mainstop{\pgfkeys@cleanup}{\pgfkeys@uselibrary@normal}%
}%
\def\pgfkeys@uselibrary@normal#1,{%
\pgfkeys@uselibrary@load{#1}%
\pgfkeys@uselibrary@parse
}
\def\pgfkeys@uselibrary@load#1{%
\expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{#1}%
\ifx\pgf@temp\pgfkeys@empty\expandafter\pgfkeys@firstoftwo\else\expandafter\pgfkeys@secondoftwo\fi{}{%
\pgfkeys@ifcsname{pgfkeys@library@\pgf@temp @loaded}{}{%
\expandafter\let\csname pgfkeys@library@\pgf@temp @loaded\endcsname=\pgfkeys@empty
\expandafter\edef\csname pgfkeys@library@#1@atcode\endcsname{\the\catcode`\@}%
\expandafter\edef\csname pgfkeys@library@#1@barcode\endcsname{\the\catcode`\|}%
\expandafter\edef\csname pgfkeys@library@#1@dollarcode\endcsname{\the\catcode`\$}%
\catcode`\@=11
\catcode`\|=12
\catcode`\$=3
\pgfkeys@IfFileExists{pgfkeyslibrary\pgf@temp.code.tex}{%
\input pgfkeyslibrary\pgf@temp.code.tex
}{%
\pgfkeys@error{I did not find the pgfkeys library '\pgf@temp'. I looked for the
file named pgfkeyslibrary\pgf@temp.code.tex, but could not find it in the
current texmf trees.}%
}%
\catcode`\@=\csname pgfkeys@library@#1@atcode\endcsname
\catcode`\|=\csname pgfkeys@library@#1@barcode\endcsname
\catcode`\$=\csname pgfkeys@library@#1@dollarcode\endcsname
}%
}%
}
\let\pgfkeys@library@filtered@loaded\pgfkeys@empty
\input pgfkeyslibraryfiltered.code.tex
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeys.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeyslibraryfiltered.code.tex ====
\let\pgfkeys@orig@case@one=\pgfkeys@case@one
\let\pgfkeys@orig@@set=\pgfkeys@@set
\let\pgfkeys@orig@@qset=\pgfkeys@@qset
\let\pgfkeys@orig@try=\pgfkeys@try
\let\pgfkeys@orig@unknown=\pgfkeys@unknown
\newif\ifpgfkeysfilteringisactive
\newif\ifpgfkeysfiltercontinue
\let\pgfkeys@key@predicate=\pgfkeys@empty
\let\pgfkeys@filtered@handler=\pgfkeys@empty
\newtoks\pgfkeys@tmptoks
\def\pgfkeysfiltered{%
\expandafter\pgfkeysfiltered@@install\expandafter{\pgfkeysdefaultpath}%
}
\long\def\pgfkeysfiltered@@install#1#2{%
\pgfkeys@install@filter@and@invoke{%
\let\pgfkeysdefaultpath\pgfkeys@root%
\pgfkeys@parse#2,\pgfkeys@mainstop%
\def\pgfkeysdefaultpath{#1}%
}%
}
\long\def\pgfkeysalsofrom#1{%
\expandafter\pgfkeysalso\expandafter{#1}%
}
\long\def\pgfkeysalsofilteredfrom#1{%
\expandafter\pgfkeysalsofiltered\expandafter{#1}%
}
\long\def\pgfkeysalsofiltered#1{%
\pgfkeys@install@filter@and@invoke{\pgfkeysalso{#1}}%
}%
\long\def\pgfqkeysfiltered#1{%
\expandafter\pgfqkeysfiltered@@install\expandafter{\pgfkeysdefaultpath}{#1}%
}
\long\def\pgfqkeysfiltered@@install#1#2#3{%
\pgfkeys@install@filter@and@invoke{%
\def\pgfkeysdefaultpath{#2/}\pgfkeys@parse#3,\pgfkeys@mainstop\def\pgfkeysdefaultpath{#1}%
}%
}
\def\pgfkeysactivatefamily#1{%
\pgfkeysiffamilydefined
{#1}%
{\csname pgfk@#1/familyactivetrue\endcsname}%
{\pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov}%
}
\def\pgfkeysdeactivatefamily#1{%
\pgfkeysiffamilydefined
{#1}%
{\csname pgfk@#1/familyactivefalse\endcsname}%
{\pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov}%
}
\def\pgfkeysactivatefamilies#1#2{%
\pgfkeyssavekeyfilterstateto\pgfkeys@cur@state
\expandafter\pgfkeysactivatefamilies@impl\expandafter{\pgfkeys@cur@state}{#1}{#2}%
}
\def\pgfkeysactivatefamilies@impl#1#2#3{%
\pgfkeysinstallkeyfilter{/pgf/key filters/false}{}%
\let#3=\pgfkeys@empty%
\def\pgfkeys@filtered@handler{\pgfkeys@family@activate@handler{#3}}%
\pgfkeysalsofiltered{#2}%
#1%
}
\def\pgfkeys@family@activate@handler#1{%
\pgfkeysactivatefamily{\pgfkeyscurrentkey}%
\pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter#1\expandafter\pgfkeysdeactivatefamily\expandafter{\pgfkeyscurrentkey}}%
\edef#1{\the\pgfkeys@tmptoks}%
}
\long\def\pgfkeysiffamilydefined#1#2#3{\ifcsname ifpgfk@#1/familyactive\endcsname#2\else#3\fi}
\def\pgfkeysisfamilyactive#1{%
\pgfkeysiffamilydefined{#1}{%
\expandafter\let\expandafter\ifpgfkeysfiltercontinue\csname ifpgfk@#1/familyactive\endcsname
}{%
\pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov%
\expandafter\expandafter\expandafter\let\csname ifpgfkeysfiltercontinue\endcsname\csname iffalse\endcsname
}%
}%
\def\pgfkeysgetfamily#1#2{%
\pgfkeysifdefined{#1/family}{\pgfkeysgetvalue{#1/family}{#2}\pgfkeyssuccesstrue}{\pgfkeyssuccessfalse}%
}
\def\pgfkeyssetfamily#1#2{%
\pgfkeysiffamilydefined{#2}{%
\pgfkeyssetvalue{#1/family}{#2}%
}{%
\pgfkeysalso{/errors/family unknown={#2}}%
}%
}%
\long\def\pgfkeys@cur@is@descendant@of@errors{%
\expandafter\pgfkeys@cur@is@descendant@of@errors@impl\pgfkeyscurrentkey/errors\pgf@@eov
}%
\long\def\pgfkeys@cur@is@descendant@of@errors@impl#1/errors#2\pgf@@eov{%
\def\pgfkeyspred@TMP{#1}%
\ifx\pgfkeyspred@TMP\pgfkeys@empty
\pgfkeysfiltercontinuetrue
\else
\pgfkeysfiltercontinuefalse
\fi
}%
\def\pgfkeysinterruptkeyfilter{%
\ifpgfkeysfilteringisactive
\let\pgfkeys@case@one=\pgfkeys@orig@case@one
\let\pgfkeys@try=\pgfkeys@orig@try
\let\pgfkeys@unknown=\pgfkeys@orig@unknown
\fi
}
\def\endpgfkeysinterruptkeyfilter{%
\ifpgfkeysfilteringisactive
\let\pgfkeys@case@one=\pgfkeys@case@one@filtered
\let\pgfkeys@try=\pgfkeys@try@filtered
\let\pgfkeys@unknown=\pgfkeys@unknown@filtered
\fi
}
\def\pgfkeysactivatefamiliesandfilteroptions#1#2{%
\pgfkeysactivatefamilies{#1}{\pgfkeys@family@deactivation}%
\pgfkeysfiltered{#2}%
\pgfkeys@family@deactivation
}
\def\pgfqkeysactivatefamiliesandfilteroptions#1#2#3{%
\pgfkeysactivatefamilies{#1}{\pgfkeys@family@deactivation}%
\pgfqkeysfiltered{#2}{#3}%
\pgfkeys@family@deactivation
}
\def\pgfkeyssplitpath{\pgfkeys@split@path}%
\def\pgfkeysactivatesinglefamilyandfilteroptions#1#2{%
\pgfkeysactivatefamily{#1}%
\pgfkeysfiltered{#2}%
\pgfkeysdeactivatefamily{#1}%
}
\def\pgfqkeysactivatesinglefamilyandfilteroptions#1#2#3{%
\pgfkeysactivatefamily{#1}%
\pgfqkeysfiltered{#2}{#3}%
\pgfkeysdeactivatefamily{#1}%
}
\def\pgfkeysinstallkeyfilter#1#2{%
\pgfkeysifdefined{#1/.@cmd}{%
\edef\pgfkeyscurrentkeyfilter{#1}%
\def\pgfkeyscurrentkeyfilterargs{#2}%
\pgfkeysgetvalue{#1/.@cmd}{\pgfkeys@key@predicate@}%
\def\pgfkeys@key@predicate{\pgfkeys@key@predicate@#2\pgfeov}%
}{%
\pgfkeysvalueof{/errors/no such key filter/.@cmd}{#1}{#2}\pgfeov%
}%
}
\def\pgfkeysinstallkeyfilterhandler#1#2{%
\pgfkeysifdefined{#1/.@cmd}{%
\edef\pgfkeyscurrentkeyfilterhandler{#1}%
\def\pgfkeyscurrentkeyfilterhandlerargs{#2}%
\pgfkeysgetvalue{#1/.@cmd}{\pgfkeys@filtered@handler@}%
\def\pgfkeys@filtered@handler{\pgfkeys@filtered@handler@#2\pgfeov}%
}{%
\pgfkeysvalueof{/errors/no such key filter handler/.@cmd}{#1}{#2}\pgfeov%
}%
}
\def\pgfkeyssavekeyfilterstateto#1{%
\pgfkeys@tmptoks={\pgfkeysinstallkeyfilter}%
\pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilter}}%
\pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterargs}\pgfkeysinstallkeyfilterhandler}%
\pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterhandler}}%
\pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterhandlerargs}}%
\edef#1{%
\the\pgfkeys@tmptoks
}%
}
\pgfkeys{%
/errors/family unknown/.code=\pgfkeys@error{%
Sorry, I do not know family '#1' and can't work with any assoicated family handling. Perhaps you misspelled it?},
/errors/no such key filter/.code 2 args=\pgfkeys@error{Sorry, there is no such key filter '#1'.},
/errors/no such key filter handler/.code 2 args=\pgfkeys@error{Sorry, there is no such key filter handler '#1'.},
/handlers/.is family/.append code={%
\edef\pgfkeyspred@TMP{pgfk@\pgfkeyscurrentpath/familyactive}%
\expandafter\pgfkeys@non@outer@newif\expandafter{\pgfkeyspred@TMP}%
\edef\pgfkeyspred@TMP{\pgfkeyscurrentpath/.belongs to family=\pgfkeyscurrentpath}%
\expandafter\pgfkeysalso\expandafter{\pgfkeyspred@TMP}%
},%
/handlers/.activate family/.code=\pgfkeysactivatefamily{\pgfkeyscurrentpath},
/handlers/.deactivate family/.code=\pgfkeysdeactivatefamily{\pgfkeyscurrentpath},
/handlers/.belongs to family/.code={\pgfkeyssetfamily{\pgfkeyscurrentpath}{#1}},%
/handlers/.lastretry/.code={%
\ifpgfkeyssuccess\else
\pgfkeys@try
\ifpgfkeyssuccess\else
\pgfkeys@split@path%
\pgfkeys@unknown
\fi
\fi
},
/handlers/.install key filter/.code={%
\pgfkeysinstallkeyfilter{\pgfkeyscurrentpath}{#1}%
},%
/handlers/.install key filter handler/.code={%
\pgfkeysinstallkeyfilterhandler{\pgfkeyscurrentpath}{#1}%
},%
/pgf/key filter handlers/append filtered to/.code={%
\pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkeyRAW\expandafter=\expandafter{\pgfkeyscurrentvalue}}%
\ifx#1\pgfkeys@empty
\else
\pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter#1\expandafter,\the\pgfkeys@tmptoks}%
\fi
\edef#1{\the\pgfkeys@tmptoks}%
},%
/pgf/key filter handlers/ignore/.code={},
/pgf/key filter handlers/ignore/.install key filter handler,
/pgf/key filter handlers/log/.code={%
\pgf@typeout{LOG: the option '\pgfkeyscurrentkey' (was originally '\pgfkeyscurrentkeyRAW') (case \pgfkeyscasenumber) has not been processed due to pgfkeysfiltered.}%
},
/pgf/key filters/active families/.code={%
\if\pgfkeyscasenumber0%
\pgfkeysfiltercontinuetrue
\else
\if\pgfkeyscasenumber3%
\pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
\else
\pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
\fi
\ifpgfkeyssuccess
\pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
\else%
\pgfkeysfiltercontinuefalse
\fi
\fi
},%
/pgf/key filters/active families or no family/.code 2 args={%
\if\pgfkeyscasenumber0%
\pgfkeysevalkeyfilterwith{#2}%
\else
\if\pgfkeyscasenumber3%
\pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
\else
\pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
\fi
\ifpgfkeyssuccess
\pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
\else%
\pgfkeysevalkeyfilterwith{#1}%
\fi
\fi
},
/pgf/key filters/active families or no family DEBUG/.code 2 args={%
\if\pgfkeyscasenumber0%
\pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) invoking unknown handler '#2']}%
\pgfkeysevalkeyfilterwith{#2}%
\else
\if\pgfkeyscasenumber3%
\pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
\else
\pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
\fi
\ifpgfkeyssuccess
\pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
\ifpgfkeysfiltercontinue
\pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) family is ACTIVE]}%
\else
\pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) family is NOT active.]}%
\fi
\else%
\pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) invoking has-no-family-handler '#1']}%
\pgfkeysevalkeyfilterwith{#1}%
\fi
\fi
},
/pgf/key filters/active families and known/.code={%
\if\pgfkeyscasenumber0%
\pgfkeysfiltercontinuefalse
\else
\if\pgfkeyscasenumber3%
\pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
\else
\pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
\fi
\ifpgfkeyssuccess
\pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
\else%
\pgfkeysfiltercontinuefalse
\fi
\fi
},
/pgf/key filters/active families or descendants of/.code={%
\if\pgfkeyscasenumber0%
\pgfkeysfiltercontinuefalse
\else
\if\pgfkeyscasenumber3%
\pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
\else
\pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
\fi
\ifpgfkeyssuccess
\pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
\else%
\def\pgfkeysisdescendantof@impl##1#1##2\pgf@@eov{%
\def\pgfkeyspred@TMP{##1}%
\ifx\pgfkeyspred@TMP\pgfkeys@empty
\pgfkeysfiltercontinuetrue
\else
\pgfkeysfiltercontinuefalse
\fi
}%
\expandafter\pgfkeysisdescendantof@impl\pgfkeyscurrentkey#1\pgf@@eov
\fi
\fi
},
/pgf/key filters/is descendant of/.code={%
\if\pgfkeyscasenumber0%
\pgfkeysfiltercontinuetrue
\else
\def\pgfkeysisdescendantof@impl##1#1##2\pgf@@eov{%
\def\pgfkeyspred@TMP{##1}%
\ifx\pgfkeyspred@TMP\pgfkeys@empty
\pgfkeysfiltercontinuetrue
\else
\pgfkeysfiltercontinuefalse
\fi
}%
\expandafter\pgfkeysisdescendantof@impl\pgfkeyscurrentkey#1\pgf@@eov
\fi
},%
/pgf/key filters/equals/.code={%
\if\pgfkeyscasenumber0%
\pgfkeysfiltercontinuetrue
\else
\def\pgfkeyspred@TMP{#1}%
\ifx\pgfkeyscurrentkey\pgfkeyspred@TMP
\pgfkeysfiltercontinuetrue
\else
\pgfkeysfiltercontinuefalse
\fi
\fi
},%
/pgf/key filters/not/.code={%
\pgfkeysevalkeyfilterwith{#1}%
\ifpgfkeysfiltercontinue
\pgfkeysfiltercontinuefalse
\else
\pgfkeysfiltercontinuetrue
\fi
},%
/pgf/key filters/and/.code 2 args={%
\pgfkeysevalkeyfilterwith{#1}%
\ifpgfkeysfiltercontinue
\pgfkeysevalkeyfilterwith{#2}%
\fi
},%
/pgf/key filters/or/.code 2 args={%
\pgfkeysevalkeyfilterwith{#1}%
\ifpgfkeysfiltercontinue
\else
\pgfkeysevalkeyfilterwith{#2}%
\fi
},%
/pgf/key filters/true/.code={\pgfkeysfiltercontinuetrue},%
/pgf/key filters/true/.install key filter,
/pgf/key filters/false/.code={%
\pgfkeysfiltercontinuefalse
},%
/pgf/key filters/defined/.code={%
\if\pgfkeyscasenumber0%
\pgfkeysfiltercontinuefalse
\else
\pgfkeysfiltercontinuetrue
\fi
},
}%
\def\pgfkeys@case@one@filtered{%
\pgfkeys@cur@is@descendant@of@errors
\ifpgfkeysfiltercontinue
\pgfkeys@orig@case@one
\else
\pgfkeysfiltercontinuetrue
\pgfkeysifdefined{\pgfkeyscurrentkey/.@cmd}{%
\def\pgfkeyscasenumber{1}%
\pgfkeys@key@predicate%
\ifpgfkeysfiltercontinue
\pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
\else
\pgfkeys@filtered@handler%
\fi
}{%
\pgfkeysifdefined{\pgfkeyscurrentkey}{%
\def\pgfkeyscasenumber{2}%
\pgfkeys@key@predicate%
\ifpgfkeysfiltercontinue
\pgfkeys@case@two@extern
\else
\pgfkeys@filtered@handler%
\fi
}{%
\pgfkeys@split@path
\pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
\pgfkeys@ifexecutehandler{%
\def\pgfkeyscasenumber{3}%
\pgfkeys@key@predicate%
\ifpgfkeysfiltercontinue
\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
\else
\pgfkeys@filtered@handler%
\fi
}{%
\pgfkeys@unknown
}%
}{%
\pgfkeys@unknown
}%
}%
}%
\fi
}%
\def\pgfkeys@unknown@filtered{%
\def\pgfkeyscasenumber{0}%
\pgfkeys@key@predicate%
\ifpgfkeysfiltercontinue
\pgfkeys@orig@unknown
\else
\pgfkeys@filtered@handler%
\fi
}
\def\pgfkeys@try@filtered{%
\ifpgfkeysfiltercontinue
\pgfkeys@orig@try
\else
\pgfkeysfiltercontinuetrue
\edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
\ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
\pgfkeysifdefined{\pgfkeyscurrentpath/.@def}%
{\pgfkeysgetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeyscurrentvalue}}
{}%
\fi%
\pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}%
{%
\def\pgfkeyscasenumber{1}%
\pgfkeys@key@predicate%
\ifpgfkeysfiltercontinue
\pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
\else
\pgfkeys@filtered@handler%
\fi
\pgfkeyssuccesstrue%
}%
{%
\pgfkeysifdefined{\pgfkeyscurrentpath}%
{%
\def\pgfkeyscasenumber{2}%
\pgfkeys@key@predicate%
\ifpgfkeysfiltercontinue
\ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
\pgfkeysvalueof{\pgfkeyscurrentpath}%
\else%
\pgfkeyslet{\pgfkeyscurrentpath}\pgfkeyscurrentvalue%
\fi%
\else
\pgfkeys@filtered@handler%
\fi
\pgfkeyssuccesstrue%
}%
{%
\pgfkeys@split@path%
\pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
\pgfkeys@ifexecutehandler{%
\def\pgfkeyscasenumber{3}%
\pgfkeys@key@predicate%
\ifpgfkeysfiltercontinue
\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
\else
\pgfkeys@filtered@handler%
\fi
\pgfkeyssuccesstrue%
}{%
\pgfkeyssuccessfalse
}%
}{%
\pgfkeyssuccessfalse
}%
}%
}%
\fi
}
\long\def\pgfkeys@install@filter@and@invoke#1{%
\ifpgfkeysfilteringisactive
\pgfkeys@error{Sorry, nested calls to key filtering routines are not allowed. (reason: It is not possible to properly restore the previous filtering state after returning from the nested call)}%
\fi
\pgfkeysfilteringisactivetrue
\let\pgfkeys@case@one=\pgfkeys@case@one@filtered
\let\pgfkeys@try=\pgfkeys@try@filtered
\let\pgfkeys@unknown=\pgfkeys@unknown@filtered
#1%
\let\pgfkeys@case@one=\pgfkeys@orig@case@one
\let\pgfkeys@try=\pgfkeys@orig@try
\let\pgfkeys@unknown=\pgfkeys@orig@unknown
\pgfkeysfilteringisactivefalse
}
\long\def\pgfkeysevalkeyfilterwith#1{%
\pgfkeys@eval@key@filter@subroutine@unpack#1=\pgfkeysnovalue=\pgfkeys@stop
}%
\long\def\pgfkeys@eval@key@filter@subroutine@unpack#1=#2=#3\pgfkeys@stop{%
\pgfkeys@spdef\pgfkeyspred@TMP{#1}%
\edef\pgfkeyspred@TMP{\pgfkeyspred@TMP}%
\pgfkeys@spdef\pgfkeyspred@TMPB{#2}%
\ifx\pgfkeyspred@TMPB\pgfkeysnovalue@text%
\pgfkeysifdefined{\pgfkeyspred@TMP/.@def}%
{\pgfkeysgetvalue{\pgfkeyspred@TMP/.@def}{\pgfkeyspred@TMPB}}
{}%
\fi%
\ifx\pgfkeyspred@TMPB\pgfkeysvaluerequired%
\pgfkeysvalueof{/errors/value required/.@cmd}\pgfkeyspred@TMP\pgfkeyspred@TMPB\pgfeov%
\else%
\pgfkeysifdefined{\pgfkeyspred@TMP/.@cmd}{%
\pgfkeysgetvalue{\pgfkeyspred@TMP/.@cmd}{\pgfkeys@code}%
\expandafter\pgfkeys@code\pgfkeyspred@TMPB\pgfeov
}{%
\pgfkeysvalueof{/errors/no such key filter/.@cmd}\pgfkeyspred@TMP\pgfkeyspred@TMPB\pgfeov%
}%
\fi%
}
\def\pgfkeys@non@outer@newif@#1#2{%
\expandafter\edef\csname #2true\endcsname{\noexpand\let\noexpand#1=\noexpand\iftrue}%
\expandafter\edef\csname #2false\endcsname{\noexpand\let\noexpand#1=\noexpand\iffalse}%
\csname #2false\endcsname
}%
\def\pgfkeys@non@outer@newif#1{%
\expandafter\pgfkeys@non@outer@newif@\csname if#1\endcsname{#1}%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeyslibraryfiltered.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryarrows.meta.code.tex ====
\ProvidesFileRCS{pgflibraryarrows.meta.code.tex}
\newdimen\pgfarrowinset
\newdimen\pgfarrowlength
\newdimen\pgfarrowwidth
\newdimen\pgfarrowlinewidth
\newif\ifpgfarrowroundcap
\newif\ifpgfarrowroundjoin
\pgfarrowsaddtolengthscalelist\pgfarrowlength
\pgfarrowsaddtolengthscalelist\pgfarrowinset
\pgfarrowsaddtowidthscalelist\pgfarrowwidth
\pgfkeys{
/pgf/arrow keys/.cd,
length/.code={%
\pgfarrowsthreeparameters{#1}%
\expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowlength\pgf@x}%
},
inset/.code={%
\pgfarrowsthreeparameters{#1}%
\expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowinset\pgf@x}%
},
inset'/.code={
\pgfarrowsthreeparameters{#1}%
\expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowinset}%
},
line width/.code={%
\pgfarrowsthreeparameters{#1}%
\expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowlinewidth\pgf@x}%
},
line width'/.code={
\pgfarrowsthreeparameters{#1}%
\expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowlinewidth}%
},
width/.code={%
\pgfarrowsthreeparameters{#1}%
\expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowwidth\pgf@x}%
},
width'/.code={%
\pgfarrowsthreeparameters{#1}%
\expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowwidth}%
},
angle/.code={%
\pgfarrowsfourparameters{#1}%
\expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\pgfarrows@angle@setup\pgfarrowstheparameters}%
},
angle'/.code={
\pgfarrowsaddtolateoptions{\pgfarrows@angle@setup@prime{#1}}%
},
line cap/.is choice,
line cap/butt/.code=\pgfarrowsaddtooptions{\pgfarrowroundcapfalse},
line cap/round/.code=\pgfarrowsaddtooptions{\pgfarrowroundcaptrue},
line join/.is choice,
line join/miter/.code=\pgfarrowsaddtooptions{\pgfarrowroundjoinfalse},
line join/round/.code=\pgfarrowsaddtooptions{\pgfarrowroundjointrue},
round/.style={line cap=round,line join=round},
sharp/.style={line cap=butt,line join=miter},
}%
\pgfdeclarearrow{
name = Straight Barb,
defaults = {
length = +1.5pt 2,
width' = +0pt 2,
line width = +0pt 1 1,
},
setup code = {
\pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
\let\pgf@temp@quot\pgfmathresult%
\pgf@x\pgfmathresult pt%
\pgf@x\pgfmathresult\pgf@x%
\pgf@x4\pgf@x%
\advance\pgf@x by1pt%
\pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
\pgf@xc\pgfmathresult\pgfarrowlinewidth%
\pgf@xc.5\pgf@xc
\pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
\ifpgfarrowroundjoin
\pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}
\else
\pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
\fi
\pgfarrowssetvisualbackend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}
\pgfarrowssetbackend{-.5\pgfarrowlinewidth}
\ifpgfarrowreversed
\pgfarrowssetlineend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by.5\pgfarrowlinewidth\fi}
\else
\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
\fi
\ifpgfarrowroundjoin
\pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
\else%
\ifpgfarrowharpoon
\pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgf@xc\advance\pgf@x by\pgf@xa}{-.5\pgfarrowlinewidth}%
\else
\pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgf@xc\advance\pgf@x by\pgf@xa}{0pt}%
\fi%
\fi
\pgfarrowsupperhullpoint{.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}%
\pgfarrowsupperhullpoint{-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}%
\ifpgfarrowharpoon
\pgfarrowshullpoint{-.5\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
\fi
\pgfarrowssavethe\pgfarrowlinewidth
\pgfarrowssavethe\pgfarrowlength
\pgfarrowssavethe\pgfarrowwidth
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
\pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth}}
\pgfpathlineto{\pgfqpoint{\pgfarrowlength}{0pt}}
\ifpgfarrowharpoon
\pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by\ifpgfarrowreversed\else-\fi\pgfarrowlinewidth}{0pt}}
\else
\pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth}}
\fi
\pgfusepathqstroke
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowroundjoin j\fi%
\ifpgfarrowroundcap c\fi%
},
}%
\pgfkeys{
/pgf/arrow keys/.cd,
arc/.code={%
\pgfmathparse{#1}%
\expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgfarrowarc\expandafter{\pgfmathresult}}
}
}%
\def\pgfarrowarc{180}%
\pgfdeclarearrow{
name = Hooks,
defaults = {
length = +0.75pt 1.25,
width' = +0pt 4 -1,
line width = +0pt 1 1,
},
setup code = {
\ifpgfarrowharpoon
\pgfarrowshullpoint{.5\pgfarrowlength}{-.5\pgfarrowlinewidth}
\pgfarrowshullpoint{\pgfarrowlength}{-.5\pgfarrowlinewidth\advance\pgf@y by.125\pgfarrowwidth}
\fi
\ifdim\pgfarrowarc pt<90.1pt
\pgfarrowsupperhullpoint{0pt}{.25\pgfarrowwidth\ifpgfarrowroundcap\else\advance\pgf@y by-.25\pgfarrowlinewidth\fi}
\pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth\ifpgfarrowroundcap\else\advance\pgf@y by-.25\pgfarrowlinewidth\fi}
\else%
\pgfarrowsupperhullpoint{\pgfarrowlength}{.375\pgfarrowwidth}
\pgfarrowsupperhullpoint{.5\pgfarrowlength}{.5\pgfarrowwidth}
\ifdim\pgfarrowarc pt>180pt
\pgfarrowsupperhullpoint{-.5\pgfarrowlength}{.5\pgfarrowwidth}
\pgfarrowsupperhullpoint{-\pgfarrowlength}{.375\pgfarrowwidth}
\pgfarrowsupperhullpoint{-\pgfarrowlength}{.25\pgfarrowwidth}
\else
\pgfarrowsupperhullpoint{\ifpgfarrowroundcap-.5\pgfarrowlinewidth\else0pt\fi}{.25\pgfarrowwidth}
\pgfarrowsupperhullpoint{\ifpgfarrowroundcap-.5\pgfarrowlinewidth\else0pt\fi}{.5\pgfarrowwidth}
\fi
\fi
\advance\pgfarrowlength by-.5\pgfarrowlinewidth
\advance\pgfarrowwidth by-\pgfarrowlinewidth
\ifpgfarrowreversed
\ifpgfarrowroundjoin
\pgfarrowssetbackend{-.5\pgfarrowlinewidth}
\fi
\fi
\ifdim\pgfarrowarc pt<90pt%
\pgfmathsin@{\pgfarrowarc}
\pgfarrowssettipend{\pgfmathresult\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
\else\ifdim\pgfarrowarc pt<180pt%
\pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
\ifpgfarrowroundcap\pgfarrowssetbackend{-.5\pgfarrowlinewidth}\fi%
\else\ifdim\pgfarrowarc pt<270pt%
\pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
\ifdim\pgfarrowarc pt>180pt
\pgfmathsin@{\pgfarrowarc}
\pgfarrowssetbackend{\pgfmathresult\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}%
\else
\ifpgfarrowroundcap\pgfarrowssetbackend{-.5\pgfarrowlinewidth}\fi%
\fi%
\else%
\pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
\pgfarrowssetbackend{-\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}%
\fi\fi\fi%
\ifpgfarrowreversed
\pgfarrowssetlineend{.5\pgfarrowlinewidth}
\else%
\ifpgfarrowharpoon
\pgfarrowssetlineend{0pt}
\else
\pgfarrowssetlineend{.25\pgfarrowlinewidth}
\fi
\fi
\pgf@x\pgfarrowarc pt%
\advance\pgf@x by-90pt%
\edef\pgfarrowarc{\pgf@sys@tonumber\pgf@x}%
\pgfarrowssavethe\pgfarrowlinewidth
\pgfarrowssavethe\pgfarrowlength
\pgfarrowssavethe\pgfarrowwidth
\pgfarrowssave\pgfarrowarc
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
{%
\pgftransformxscale{+\pgfarrowlength}
\pgftransformyscale{+.25\pgfarrowwidth}
\pgfpathmoveto{\pgfpointpolar{+\pgfarrowarc}{+1pt}\advance\pgf@y by1pt}
\pgfpatharc{\pgfarrowarc}{+-90}{+1pt}
\ifpgfarrowharpoon
\else
\pgfpatharc{+90}{+-\pgfarrowarc}{+1pt}
\fi
}
\ifpgfarrowharpoon\ifpgfarrowreversed
\pgfpathlineto{\pgfqpoint{\pgflinewidth}{0pt}}
\fi\fi
\pgfusepathqstroke
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\pgfarrowarc,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowroundjoin j\fi%
\ifpgfarrowroundcap c\fi%
},
}%
\pgfdeclarearrow{
name = Arc Barb,
defaults = {
length = +1.5pt 2,
width' = +0pt 2,
line width = +0pt 1 1,
},
setup code = {
\pgf@x\pgfarrowarc pt%
\pgf@x.5\pgf@x%
\edef\pgfarrowarc{\pgf@sys@tonumber\pgf@x}%
\pgfarrowssettipend{\pgfarrowlength}
\pgfarrowssetvisualbackend{\pgfarrowlength}
\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
\pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth}
\ifpgfarrowharpoon\pgfarrowshullpoint{\pgfarrowlength}{-.5\pgflinewidth}\fi
\pgfmathsincos@{\pgfarrowarc}%
\pgf@xa.5\pgfarrowwidth%
\pgfarrowsupperhullpoint{\pgfmathresultx\pgfarrowlength}{\pgfmathresulty\pgf@xa}
\ifdim\pgfarrowarc pt>60pt
\pgfarrowsupperhullpoint{.5\pgfarrowlength}{\ifdim\pgfarrowarc pt<90pt\pgfmathresulty\pgf@xa\else.5\pgfarrowwidth\fi}
\fi
\ifdim\pgfarrowarc pt>90pt
\ifdim\pgfarrowarc pt<120pt
\pgfarrowsupperhullpoint{\pgfmathresultx\pgfarrowlength}{.5\pgfarrowwidth}
\else
\pgfarrowsupperhullpoint{-.5\pgfarrowlength}{.5\pgfarrowwidth}
\ifdim\pgfarrowarc pt>150pt
\pgfarrowsupperhullpoint{-\pgfarrowlength}{.25\pgfarrowwidth}
\fi
\fi
\fi
\pgfutil@tempswafalse
\ifdim\pgfarrowarc pt<90pt
\pgfutil@tempswatrue
\fi
\ifpgfarrowharpoon
\pgfutil@tempswatrue
\fi
\ifpgfutil@tempswa
\pgf@xa.5\pgfarrowwidth\advance\pgf@xa by-\pgfarrowlinewidth%
\pgf@ya\pgfarrowlength\advance\pgf@ya by-\pgfarrowlinewidth%
\pgfarrowsupperhullpoint{\pgfmathresultx\pgf@ya}{\pgfmathresulty\pgf@xa}
\fi
\ifpgfarrowroundcap
\pgf@y\pgfarrowlength
\advance\pgf@y by-.5\pgfarrowlinewidth
\pgf@x\pgfmathresultx\pgf@y%
\else
\ifdim\pgfarrowarc pt<90pt
\pgf@y\pgfarrowlength
\advance\pgf@y by-\pgfarrowlinewidth
\pgf@x\pgfmathresultx\pgf@y%
\else
\pgf@x\pgfmathresultx\pgfarrowlength%
\fi
\fi
\pgfarrowssetbackend{\pgf@x\ifpgfarrowroundcap\advance\pgf@x by-.5\pgfarrowlinewidth\fi}
\advance\pgfarrowlength by-.5\pgfarrowlinewidth
\advance\pgfarrowwidth by-\pgfarrowlinewidth
\pgfarrowssavethe\pgfarrowlinewidth
\pgfarrowssavethe\pgfarrowlength
\pgfarrowssavethe\pgfarrowwidth
\pgfarrowssave\pgfarrowarc
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
{%
\pgftransformxscale{+\pgfarrowlength}
\pgftransformyscale{+.5\pgfarrowwidth}
\pgfpathmoveto{\pgfpointpolar{+\pgfarrowarc}{+1pt}}
\ifpgfarrowharpoon
\pgfpatharc{+\pgfarrowarc}{0pt}{+1pt}
\else
\pgfpatharc{+\pgfarrowarc}{+-\pgfarrowarc}{+1pt}
\fi
}
\ifpgfarrowharpoon
\pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by\ifpgfarrowreversed\else-\fi.5\pgflinewidth}{0pt}}
\fi
\pgfusepathqstroke
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\pgfarrowarc,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowroundcap c\fi%
\ifpgfarrowroundjoin j\fi%
},
}%
\pgfdeclarearrow{
name = Tee Barb,
defaults = {
length = +1.5pt 2,
width = +3pt 4,
inset' = +0pt .5,
line width = +0pt 1 1,
},
bending mode=polar,
setup code = {
\pgfutil@tempswafalse%
\pgfutil@tempswbfalse%
\pgfutil@tempdima\pgfarrowlength\advance\pgfutil@tempdima by-\pgfarrowinset\ifdim\pgfutil@tempdima<.5\pgfarrowlinewidth\pgfutil@tempdima.5\pgfarrowlinewidth\pgfutil@tempswatrue\fi%
\pgfutil@tempdimb-\pgfarrowinset\ifdim\pgfutil@tempdimb>-.5\pgfarrowlinewidth\pgfutil@tempdimb-.5\pgfarrowlinewidth\pgfutil@tempswbtrue\fi
\pgfarrowssavethe\pgfarrowwidth
\pgfarrowssavethe\pgfutil@tempdima
\pgfarrowssavethe\pgfutil@tempdimb
\pgfarrowssettipend{\pgfutil@tempdima\ifpgfarrowroundcap\ifpgfutil@tempswa\else\advance\pgf@x by.5\pgfarrowlinewidth\fi\fi}
\pgfarrowssetvisualbackend{.5\pgfarrowlinewidth}
\pgfarrowssetbackend{\pgfutil@tempdimb\ifpgfarrowroundcap\ifpgfutil@tempswb\else\advance\pgf@x by-.5\pgfarrowlinewidth\fi\fi}
\pgfarrowssetlineend{\ifpgfarrowreversed\else-\fi.25\pgfarrowlinewidth}%
\pgfarrowsupperhullpoint{\pgfutil@tempdima\ifpgfarrowroundcap\ifpgfutil@tempswa\else\advance\pgf@x by.5\pgfarrowlinewidth\fi\fi}{.5\pgfarrowwidth}%
\pgfarrowsupperhullpoint{\pgfutil@tempdimb\ifpgfarrowroundcap\ifpgfutil@tempswb\else\advance\pgf@x by-.5\pgfarrowlinewidth\fi\fi}{.5\pgfarrowwidth}%
\ifpgfarrowharpoon
\pgfarrowshullpoint{.5\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
\fi
},
drawing code = {
\pgfsetdash{}{+0pt}
\pgf@yc\pgflinewidth%
\ifdim\pgflinewidth=\pgfarrowlinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
\ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\pgf@x\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth%
\pgf@y\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth%
\ifdim\pgf@x=\pgf@y%
\pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth}}
\pgfpathlineto{\pgfqpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}}
\else
\ifdim\pgfutil@tempdima=.5\pgfarrowlinewidth%
\pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
\pgfpathlineto{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
\ifpgfarrowharpoon%
\pgfpathlineto{\pgfqpoint{0pt}{-.5\pgf@yc}}%
\else%
\pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
\pgfpathlineto{\pgfqpoint{\pgfutil@tempdimb}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
\fi
\else%
\pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
\pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
\pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
\ifpgfarrowharpoon%
\pgfpathlineto{\pgfqpoint{0pt}{-.5\pgf@yc}}%
\else%
\pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
\pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
\pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
\fi
\fi
\fi
\pgfusepathqstroke
},
parameters = {
\the\pgfarrowwidth,%
\the\pgfarrowlength,%
\the\pgfarrowinset,%
\the\pgfarrowlinewidth,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowroundjoin j\fi%
\ifpgfarrowroundcap c\fi%
},
}%
\pgfdeclarearrow{
name = Classical TikZ Rightarrow,
defaults = {
length = +1.05pt 1.925,
width' = +0pt 1.9237,
line width = 0pt 0.8 1,
round
},
setup code =
{
\ifpgfarrowharpoon\pgfarrowroundjointrue\fi
\pgfutil@tempdima\pgfarrowlength
\advance\pgfutil@tempdima by-\pgfarrowlinewidth
\pgfutil@tempdimb\pgfarrowwidth
\advance\pgfutil@tempdimb by-\pgfarrowlinewidth
\ifpgfarrowroundjoin%
\else%
\pgfmathdivide@{\pgf@sys@tonumber\pgfutil@tempdima}{\pgf@sys@tonumber\pgfutil@tempdimb}%
\let\pgf@temp@quot\pgfmathresult%
\pgf@x\pgfmathresult pt%
\pgf@x\pgfmathresult\pgf@x%
\pgf@x40.96\pgf@x%
\advance\pgf@x by1pt%
\pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
\pgf@xc\pgfmathresult\pgfarrowlinewidth%
\pgf@xc.5\pgf@xc
\fi%
\pgfarrowssavethe\pgfutil@tempdima
\pgfarrowssavethe\pgfutil@tempdimb
\pgfarrowssettipend{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}%
\pgfarrowssetvisualbackend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}%
\ifpgfarrowreversed%
\ifpgfarrowharpoon%
\pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by.5\pgflinewidth}%
\else%
\pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.25\pgflinewidth}%
\fi%
\else%
\pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.6\pgflinewidth}%
\fi%
\pgfarrowssetbackend{-.5\pgfarrowlinewidth}%
\pgfarrowshullpoint{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}{.5\pgfarrowlinewidth}%
\pgfarrowshullpoint{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}{-.5\pgfarrowlinewidth}%
\pgfarrowsupperhullpoint{.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
\pgfarrowsupperhullpoint{-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
\ifpgfarrowharpoon
\pgfarrowshullpoint{\pgfutil@tempdima\advance\pgf@x by-\pgflinewidth}{-.5\pgflinewidth}%
\pgfarrowshullpoint{-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by-.5\pgflinewidth}%
\fi
},
drawing code =
{
\pgfsetdash{}{+0pt}
\edef\pgf@orig@linewidth{\the\pgflinewidth}
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
\ifpgfarrowharpoon\pgfarrowroundjointrue\fi
\ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\pgfpathmoveto
{\pgfqpoint{0pt}{.5\pgfutil@tempdimb}}
\ifpgfarrowharpoon
\pgf@arrows@old@tikz@harpoon
\else
\pgfpathcurveto
{\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
{\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
{\pgfqpoint{\pgfutil@tempdima}{0pt}}
\pgfpathcurveto
{\pgfqpoint{.8\pgfutil@tempdima}{-.03125\pgfutil@tempdimb}}
{\pgfqpoint{0.066666\pgfutil@tempdima}{-.3125\pgfutil@tempdimb}}
{\pgfqpoint{0pt}{-.5\pgfutil@tempdimb}}
\pgfsetlinewidth{+\pgfarrowlinewidth}
\pgfusepathqstroke
\fi
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowroundjoin j\fi%
\ifpgfarrowroundcap c\fi%
},
}%
\def\pgf@arrows@old@tikz@harpoon{
\ifpgfarrowreversed
\pgf@arrows@old@tikz@harpoon@reversed
\else
\pgfpathcurveto
{\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
{\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
{\pgfqpoint{\pgfutil@tempdima}{0pt}}
\pgfpathcurveto
{\pgfqpoint{0.95\pgfutil@tempdima}{-0.125\pgflinewidth}}
{\pgfqpoint{0.933333\pgfutil@tempdima}{-0.125\pgflinewidth}}
{\pgfqpoint{0.933333\pgfutil@tempdima}{-0.125\pgflinewidth}}
\pgfpathlineto
{\pgfqpoint{0.8\pgfutil@tempdima\advance\pgf@x by-.5\pgflinewidth}{-0.125\pgflinewidth}}
\pgfusepathqstroke
\fi
}%
\def\pgf@arrows@old@tikz@harpoon@reversed{
\pgfpathcurveto
{\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
{\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
{\pgfqpoint{\pgfutil@tempdima}{0.125\pgflinewidth}}
\pgfpathmoveto
{\pgfqpoint{0pt}{.5\pgfutil@tempdimb}}
\pgfpathcurveto
{\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
{\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
{\pgfqpoint{\pgfutil@tempdima}{-0.125\pgflinewidth}}
\pgfusepathqstroke
\pgfsetlinewidth{+\pgf@orig@linewidth}
\pgfsetroundcap
\pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima\advance\pgf@x by0.6\pgflinewidth}{0pt}}
\pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{0pt}}
\pgfusepathqstroke
}%
\pgfdeclarearrow{
name = Computer Modern Rightarrow,
defaults = {
length = +1.6pt 2.2, %
width' = +0pt 2.096774,
line width = 0pt 1 1,
round
},
setup code =
{
\pgfutil@tempdima\pgfarrowlength
\advance\pgfutil@tempdima by-\pgfarrowlinewidth
\pgfutil@tempdimb\pgfarrowwidth
\advance\pgfutil@tempdimb by-\pgfarrowlinewidth
\pgfarrowssavethe\pgfutil@tempdima
\pgfarrowssavethe\pgfutil@tempdimb
\ifpgfarrowroundjoin%
\else%
\pgfmathdivide@{\pgf@sys@tonumber\pgfutil@tempdima}{\pgf@sys@tonumber\pgfutil@tempdimb}%
\let\pgf@temp@quot\pgfmathresult%
\pgf@x\pgfmathresult pt%
\pgf@x\pgfmathresult\pgf@x%
\pgf@x49.44662\pgf@x%
\advance\pgf@x by1pt%
\pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
\pgf@xc\pgfmathresult\pgfarrowlinewidth%
\pgf@xc.5\pgf@xc
\pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
\pgf@xa3.51591\pgf@xa%
\fi%
\pgfarrowssettipend{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}%
\pgfarrowssetvisualbackend{.5\pgfarrowlinewidth}%
\ifpgfarrowreversed%
\ifpgfarrowharpoon%
\pgfarrowssetlineend{.5\pgfarrowlinewidth}%
\else%
\pgfarrowssetlineend{-.5\pgfarrowlinewidth}%
\fi%
\else%
\pgfarrowssetlineend{-.5\pgfarrowlinewidth}%
\fi%
\pgfarrowssetbackend{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}%
\pgfarrowshullpoint{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{.5\pgfarrowlinewidth}%
\pgfarrowshullpoint{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{-.5\pgfarrowlinewidth}%
\pgfarrowsupperhullpoint{-\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
\pgfarrowsupperhullpoint{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
\ifpgfarrowharpoon
\pgfarrowshullpoint{-\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
\pgfarrowshullpoint{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by-.5\pgfarrowlinewidth}%
\fi
},
drawing code =
{
\pgfsetdash{}{+0pt}
\ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
\pgfpathmoveto
{\pgfqpoint{-\pgfutil@tempdima}{.5\pgfutil@tempdimb}}
\pgfpathcurveto
{\pgfqpoint{-0.81731\pgfutil@tempdima}{.2\pgfutil@tempdimb}}
{\pgfqpoint{-0.41019\pgfutil@tempdima}{0.05833333\pgfutil@tempdimb}}
{\pgfpointorigin}
\ifpgfarrowharpoon
\pgfpathlineto
{\pgfqpoint{\ifpgfarrowreversed.5\else-\fi\pgfarrowlinewidth}{0pt}}
\else
\pgfpathcurveto
{\pgfqpoint{-0.41019\pgfutil@tempdima}{-0.05833333\pgfutil@tempdimb}}
{\pgfqpoint{-0.81731\pgfutil@tempdima}{-.2\pgfutil@tempdimb}}
{\pgfqpoint{-\pgfutil@tempdima}{-.5\pgfutil@tempdimb}}
\fi
\pgfusepathqstroke
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\ifpgfarrowharpoon h\fi
\ifpgfarrowharpoon r\fi
\ifpgfarrowroundjoin j\fi%
\ifpgfarrowroundcap c\fi%
},
}%
\pgfdeclarearrow{
name = Implies,
setup code = {
\pgf@xa\pgfinnerlinewidth
\pgfutil@tempdima.25\pgflinewidth
\advance\pgfutil@tempdima by.25\pgf@xa%
\pgfutil@tempdimb.5\pgflinewidth
\advance\pgfutil@tempdimb by-.5\pgf@xa%
\pgfarrowssettipend{2.06\pgfutil@tempdima\advance\pgf@x by.5\pgfutil@tempdimb}
\pgfarrowssetbackend{-1.36\pgfutil@tempdima\advance\pgf@x by.5\pgfutil@tempdimb}
\pgfarrowsupperhullpoint{-1.4\pgfutil@tempdima}{2.8\pgfutil@tempdima}
\pgfarrowsupperhullpoint{2\pgfutil@tempdima}{.5\pgfutil@tempdimb}
\pgfarrowssavethe\pgfutil@tempdima
\pgfarrowssavethe\pgfutil@tempdimb
},
drawing code = {
\pgftransformxshift{.06\pgfutil@tempdima}
\pgfsetlinewidth{\pgfutil@tempdimb}
\pgfsetdash{}{+0pt}
\pgfsetroundcap
\pgfsetroundjoin
\pgfpathmoveto{\pgfpoint{-1.4\pgfutil@tempdima}{2.65\pgfutil@tempdima}}
\pgfpathcurveto
{\pgfpoint{-0.75\pgfutil@tempdima}{1.25\pgfutil@tempdima}}
{\pgfpoint{1\pgfutil@tempdima}{0.05\pgfutil@tempdima}}
{\pgfpoint{2\pgfutil@tempdima}{0pt}}
\pgfpathcurveto
{\pgfpoint{1\pgfutil@tempdima}{-0.05\pgfutil@tempdima}}
{\pgfpoint{-.75\pgfutil@tempdima}{-1.25\pgfutil@tempdima}}
{\pgfpoint{-1.4\pgfutil@tempdima}{-2.65\pgfutil@tempdima}}
\pgfusepathqstroke
},
parameters = {\the\pgfarrowlength}
}%
\pgfdeclarearrow{
name = Latex,
defaults = {
length = +3pt 4.5 .8,%
width' = +0pt .75,
line width = +0pt 1 1,
},
setup code = {
\pgf@x.2\pgfarrowlength
\ifdim\pgf@x<\pgfarrowlinewidth
\pgfarrowlinewidth\pgf@x
\fi
\pgfarrowssavethe\pgfarrowlinewidth%
\pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
\let\pgf@temp@quot\pgfmathresult%
\pgf@x\pgfmathresult pt%
\pgf@x\pgfmathresult\pgf@x%
\pgf@x9\pgf@x%
\advance\pgf@x by1pt%
\pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
\pgf@xc\pgfmathresult\pgfarrowlinewidth%
\pgf@xa\pgf@temp@quot\pgfarrowlinewidth
\pgfutil@tempdima\pgfarrowlength%
\advance\pgfutil@tempdima by-.5\pgf@xc%
\advance\pgfutil@tempdima by-.5\pgfarrowlinewidth%
\pgfarrowssetbackend{-.5\pgfarrowlinewidth}
\ifpgfarrowreversed
\ifdim\pgfinnerlinewidth>0pt
\pgfarrowssetlineend{0pt}
\else
\pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.5\pgflinewidth}
\fi
\else
\pgfarrowssetlineend{0pt}
\fi
\ifpgfarrowroundjoin
\pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}
\else
\pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth\ifpgfarrowharpoon\advance\pgf@x by1.5\pgf@xa\fi}
\fi
\pgfarrowssavethe\pgfutil@tempdima
\pgf@process{\pgfpointnormalised{\pgfqpoint{.3\pgfarrowlength}{.2333333\pgfarrowwidth}}}%
\advance\pgf@y by1pt%
\pgf@yc\pgf@y\pgf@xc\pgf@x%
\pgfmathdivide@{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@xc}%
\pgfutil@tempdimb\pgfmathresult\pgfarrowlinewidth%
\pgfutil@tempdimb-.5\pgfutil@tempdimb%
\advance\pgfutil@tempdimb by.5\pgfarrowwidth%
\pgfarrowssavethe\pgfutil@tempdimb%
\pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x by1.5\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
\pgfarrowshullpoint{-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\ifpgfarrowharpoon\advance\pgf@y by-.5\pgfarrowlinewidth\fi}%
\pgfarrowshullpoint{-.5\pgfarrowlinewidth}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}%
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
\pgfpathmoveto {\pgfqpoint{\pgfutil@tempdima}{0pt}}
\pgfpathcurveto {\pgfqpoint{.877192\pgfutil@tempdima}{.077922\pgfutil@tempdimb}}
{\pgfqpoint{.337381\pgfutil@tempdima}{.519480\pgfutil@tempdimb}}
{\pgfqpoint{0pt}{\pgfutil@tempdimb}}
\ifpgfarrowharpoon
\pgfpathlineto {\pgfpointorigin}
\else
\pgfpathlineto {\pgfqpoint{0pt}{-\pgfutil@tempdimb}}
\pgfpathcurveto {\pgfqpoint{.337381\pgfutil@tempdima}{-.519480\pgfutil@tempdimb}}
{\pgfqpoint{.877192\pgfutil@tempdima}{-.077922\pgfutil@tempdimb}}
{\pgfqpoint{\pgfutil@tempdima}{0pt}}
\fi
\pgfpathclose
\ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowopen o\fi%
\ifpgfarrowroundjoin j\fi%
},
}%
\pgfdeclarearrow{
name = Stealth,
defaults = {
length = +3pt 4.5 .8,
width' = +0pt .75,
inset' = +0pt 0.325,
line width = +0pt 1 1,
},
setup code = {
\pgf@x\pgfarrowlength
\advance\pgf@x by-\pgfarrowinset
\pgf@x.25\pgf@x
\ifdim\pgf@x<\pgfarrowlinewidth
\pgfarrowlinewidth\pgf@x
\fi
\pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
\let\pgf@temp@quot\pgfmathresult%
\pgf@x\pgfmathresult pt%
\pgf@x\pgfmathresult\pgf@x%
\pgf@x4\pgf@x%
\advance\pgf@x by1pt%
\pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
\pgf@xc\pgfmathresult\pgfarrowlinewidth%
\pgf@xc.5\pgf@xc
\pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
\pgf@ya.5\pgfarrowwidth%
\csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowlength}{\pgfmath@tonumber\pgf@ya}%
\pgf@yb\pgfmathresult pt%
\csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowinset}{\pgfmath@tonumber\pgf@ya}%
\pgf@ya\pgfmathresult pt%
\advance\pgf@yb by-\pgf@ya%
\pgf@yb.5\pgf@yb%
\pgfmathtan@{\pgf@sys@tonumber\pgf@yb}%
\pgfmathreciprocal@{\pgfmathresult}%
\pgf@yc\pgfmathresult\pgfarrowlinewidth%
\pgf@yc.5\pgf@yc%
\advance\pgf@ya by\pgf@yb%
\pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
\pgf@ya\pgfmathresulty\pgf@yc%
\pgf@yb\pgfmathresultx\pgf@yc%
\ifdim\pgfarrowinset=0pt%
\pgf@ya.5\pgfarrowlinewidth%
\fi
\pgfmathdivide@{\pgf@sys@tonumber\pgfarrowinset}{\pgf@sys@tonumber\pgfarrowwidth}%
\let\pgf@temp@quot\pgfmathresult%
\pgf@x\pgfmathresult pt%
\pgf@x\pgfmathresult\pgf@x%
\pgf@x4\pgf@x%
\advance\pgf@x by1pt%
\pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
\pgf@yc\pgfmathresult\pgfarrowlinewidth%
\pgf@yc.5\pgf@yc%
\pgfutil@tempdima\pgfarrowlength%
\advance\pgfutil@tempdima by-\pgf@xc%
\advance\pgfutil@tempdima by-\pgf@ya%
\pgfutil@tempdimb.5\pgfarrowwidth%
\advance\pgfutil@tempdimb by-\pgf@yb%
\ifpgfarrowroundjoin
\pgfarrowssetbackend{\pgf@ya\advance\pgf@x by-.5\pgfarrowlinewidth}
\else
\pgfarrowssetbackend{0pt}
\fi
\ifpgfarrowharpoon
\pgfarrowssetlineend{\pgfarrowinset\advance\pgf@x
by\pgf@yc\advance\pgf@x by.5\pgfarrowlinewidth}
\else
\pgfarrowssetlineend{\pgfarrowinset\advance\pgf@x by\pgf@yc\advance\pgf@x by-.25\pgfarrowlinewidth}
\ifpgfarrowreversed
\ifdim\pgfinnerlinewidth>0pt
\pgfarrowssetlineend{\pgfarrowinset}
\else
\pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by\pgf@ya\advance\pgf@x by-.25\pgfarrowlinewidth}
\fi
\fi
\fi
\ifpgfarrowroundjoin
\pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by\pgf@ya\advance\pgf@x by.5\pgfarrowlinewidth}
\else
\pgfarrowssettipend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
\fi
\pgfarrowshullpoint{\pgfarrowlength\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
\pgfarrowsupperhullpoint{0pt}{.5\pgfarrowwidth}%
\pgfarrowshullpoint{\pgfarrowinset}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else 0pt\fi}%
\pgfarrowssetvisualbackend{\pgfarrowinset}
\advance\pgfarrowinset by\pgf@yc%
\pgfarrowssavethe\pgfutil@tempdima
\pgfarrowssavethe\pgfutil@tempdimb
\pgfarrowssavethe\pgfarrowlinewidth
\pgfarrowssavethe\pgf@ya
\pgfarrowssavethe\pgfarrowinset
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
\pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima\advance\pgf@x by\pgf@ya}{0pt}}
\pgfpathlineto{\pgfqpoint{\pgf@ya}{\pgfutil@tempdimb}}
\pgfpathlineto{\pgfqpoint{\pgfarrowinset}{0pt}}
\ifpgfarrowharpoon \else
\pgfpathlineto{\pgfqpoint{\pgf@ya}{-\pgfutil@tempdimb}}
\fi
\pgfpathclose
\ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\the\pgfarrowinset,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowopen o\fi%
\ifpgfarrowroundjoin j\fi%
},
}%
\pgfdeclarearrow{
name = Kite,
defaults = {
length = +3.6pt +5.4,
width' = +0pt +0.5,
inset' = +0pt 0.25,
line width = +0pt 1 1,
},
setup code = {
\pgf@x.4\pgfarrowlength
\ifdim\pgf@x<\pgfarrowlinewidth
\pgfarrowlinewidth\pgf@x
\fi
\pgf@x.4\pgfarrowwidth
\ifdim\pgf@x<\pgfarrowlinewidth
\pgfarrowlinewidth\pgf@x
\fi
\pgf@xa\pgfarrowlength%
\advance\pgf@xa by-\pgfarrowinset%
\pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgfarrowwidth}%
\let\pgf@temp@quot\pgfmathresult%
\pgf@x\pgfmathresult pt%
\pgf@x\pgfmathresult\pgf@x%
\pgf@x4\pgf@x%
\advance\pgf@x by1pt%
\pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
\pgf@xc\pgfmathresult\pgfarrowlinewidth%
\pgf@xc.5\pgf@xc
\pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
\pgfmathdivide@{\pgf@sys@tonumber\pgfarrowinset}{\pgf@sys@tonumber\pgfarrowwidth}%
\let\pgf@temp@quot\pgfmathresult%
\pgf@x\pgfmathresult pt%
\pgf@x\pgfmathresult\pgf@x%
\pgf@x4\pgf@x%
\advance\pgf@x by1pt%
\pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
\pgf@yc\pgfmathresult\pgfarrowlinewidth%
\pgf@yc.5\pgf@yc
\pgf@ya\pgf@temp@quot\pgfarrowlinewidth%
{%
\pgfutil@tempdimb.5\pgfarrowwidth%
\pgfutil@tempdima\pgfarrowlength\advance\pgfutil@tempdima by-\pgfarrowinset%
\csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfutil@tempdima}{\pgfmath@tonumber\pgfutil@tempdimb}%
\pgf@yb\pgfmathresult pt%
\csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowinset}{\pgfmath@tonumber\pgfutil@tempdimb}%
\pgf@ya\pgfmathresult pt%
\advance\pgf@yb by\pgf@ya%
\pgf@yb.5\pgf@yb%
\ifdim\pgf@yb=45pt%
\def\pgfmathresult{1.414213}%
\else%
\pgfmathsin@{\pgf@sys@tonumber\pgf@yb}%
\pgfmathreciprocal@{\pgfmathresult}%
\fi%
\pgf@yc\pgfmathresult\pgfarrowlinewidth%
\pgf@yc.5\pgf@yc%
\pgf@ya-\pgf@ya%
\advance\pgf@ya by-90pt%
\advance\pgf@ya by\pgf@yb%
\pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
\pgf@xb\pgfmathresultx\pgf@yc%
\pgf@yb\pgfmathresulty\pgf@yc%
\expandafter\expandafter\expandafter%
}\expandafter\expandafter\expandafter\pgf@xb\expandafter\the\expandafter\pgf@xb\expandafter\pgf@yb\the\pgf@yb%
\pgfutil@tempdima\pgfarrowlength%
\advance\pgfutil@tempdima by-\pgf@xc%
\pgfutil@tempdimb.5\pgfarrowwidth%
\advance\pgfutil@tempdimb by\pgf@yb%
\ifpgfarrowroundjoin
\pgfarrowssetbackend{\pgf@ya\advance\pgf@x by-.5\pgfarrowlinewidth}
\else
\pgfarrowssetbackend{0pt}
\fi
\ifpgfarrowreversed
\pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-\pgflinewidth\advance\pgf@x by\pgfarrowlinewidth}
\else
\pgfarrowssetlineend{\pgf@yc\advance\pgf@x by\pgflinewidth\advance\pgf@x by-\pgfarrowlinewidth}
\fi
\ifpgfarrowroundjoin
\pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}
\else
\pgfarrowssettipend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
\fi
\pgfarrowshullpoint{\pgfarrowlength\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
\pgfarrowsupperhullpoint{\pgfarrowinset}{.5\pgfarrowwidth}%
\pgfarrowshullpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
\advance\pgfarrowinset by\pgf@xb%
\pgfarrowssavethe\pgfutil@tempdima
\pgfarrowssavethe\pgfutil@tempdimb
\pgfarrowssavethe\pgfarrowlinewidth
\pgfarrowssavethe\pgf@yc
\pgfarrowssavethe\pgfarrowinset
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{\pgfarrowlinewidth}\fi
\pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima}{0pt}}
\pgfpathlineto{\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdimb}}
\pgfpathlineto{\pgfqpoint{\pgf@yc}{0pt}}
\ifpgfarrowharpoon \else
\pgfpathlineto{\pgfqpoint{\pgfarrowinset}{-\pgfutil@tempdimb}}
\fi
\pgfpathclose
\ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\the\pgfarrowinset,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowopen o\fi%
\ifpgfarrowroundjoin j\fi%
},
}%
\pgfdeclarearrow{
name = Square,
defaults = {
length = +2.12132pt +2.828427,
width' = +0pt +1,
line width = +0pt +1 +1,
},
setup code = {
\pgf@x.5\pgfarrowlength
\ifdim\pgf@x<\pgfarrowlinewidth
\pgfarrowlinewidth\pgf@x
\fi
\ifpgfarrowreversed
\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
\else
\pgfarrowssetlineend{.5\pgfarrowlinewidth}
\fi
\pgfarrowssettipend{\pgfarrowlength}
\pgfarrowshullpoint{\pgfarrowlength}{.5\pgfarrowwidth}
\pgfarrowshullpoint{0pt}{.5\pgfarrowwidth}
\pgfarrowshullpoint{\pgfarrowlength}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}
\pgfarrowshullpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}
\pgfarrowssavethe\pgfarrowlinewidth
\pgfarrowssavethe\pgfarrowlength
\pgfarrowssavethe\pgfarrowwidth
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
\pgfpathmoveto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
\pgfpathlineto{\pgfqpoint{.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
\pgfpathlineto{\pgfqpoint{.5\pgfarrowlinewidth}{\ifpgfarrowharpoon0pt\else-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth\fi}}
\pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}{\ifpgfarrowharpoon0pt\else-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth\fi}}
\pgfpathclose
\ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowopen o\fi%
\ifpgfarrowroundjoin j\fi%
},
}%
\pgfdeclarearrow{
name = Circle,
defaults = {
length = +2.39365pt +3.191538,
width' = +0pt 1,
line width = +0pt 1 1,
},
setup code = {
\pgf@x.5\pgfarrowlength
\ifdim\pgf@x<\pgfarrowlinewidth
\pgfarrowlinewidth\pgf@x
\fi
\ifpgfarrowreversed
\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
\else
\pgfarrowssetlineend{.5\pgfarrowlinewidth}
\fi
\pgfarrowssettipend{\pgfarrowlength}
\pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth}
\pgfarrowsupperhullpoint{.75\pgfarrowlength}{.5\pgfarrowwidth}
\pgfarrowsupperhullpoint{.25\pgfarrowlength}{.5\pgfarrowwidth}
\pgfarrowsupperhullpoint{0pt}{.25\pgfarrowwidth}
\ifpgfarrowharpoon%
\pgfarrowshullpoint{0pt}{-.5\pgfarrowlinewidth}
\pgfarrowshullpoint{\pgfarrowlength}{-.5\pgfarrowlinewidth}
\fi%
\pgfarrowssavethe\pgfarrowlinewidth
\pgfarrowssavethe\pgfarrowlength
\pgfarrowssavethe\pgfarrowwidth
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
\ifpgfarrowharpoon
\pgfpathmoveto{\pgfqpoint{\pgfarrowlength\advance\pgf@x
by-.5\pgfarrowlinewidth}{0pt}}
{%
\pgf@xa.5\pgfarrowlength
\advance\pgf@xa by-.5\pgfarrowlinewidth
\pgftransformxscale{+\the\pgf@xa}
\pgf@xa.5\pgfarrowwidth
\advance\pgf@xa by-.5\pgfarrowlinewidth
\pgftransformyscale{+\the\pgf@xa}
\pgfpatharc{0}{180}{1pt}
}
\pgfpathclose
\else%
\pgfpathellipse{\pgfqpoint{.5\pgfarrowlength}{0pt}}{\pgfqpoint{.5\pgfarrowlength\advance\pgf@x
by-.5\pgfarrowlinewidth}{0pt}}{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y
by-.5\pgfarrowlinewidth}}
\fi
\ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowopen o\fi%
\ifpgfarrowroundjoin j\fi%
},
}%
\pgfdeclarearrow{
name = Round Cap,
defaults = {
length = +0pt .5
},
setup code = {
\ifpgfarrowreversed
\pgfarrowssettipend{\pgfarrowlength}
\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by.5\pgflinewidth}
\else
\pgfarrowssettipend{\pgfarrowlength}
\pgfarrowssetlineend{-.5\pgflinewidth}
\fi
\pgfarrowssavethe\pgfarrowlength
\pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
\pgfarrowsupperhullpoint{\pgfarrowlength}{.5\pgflinewidth}
},
drawing code = {
\ifpgfarrowreversed
\pgftransformxscale{-1}
\pgftransformxshift{-\pgfarrowlength}
\fi
\pgfutil@tempdima.5\pgflinewidth
\pgfpathmoveto {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{0pt}{\pgfutil@tempdima}}
\ifpgfarrowreversed
\pgfpathlineto {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
\begingroup
\pgftransformxshift{\pgfarrowlength}
\pgftransformxscale{-1}
\fi
\pgfpathcurveto {\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
{\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
{\pgfqpoint{\pgfarrowlength}{0pt}}
\pgfpathcurveto {\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
{\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
{\pgfqpoint{0pt}{-\pgfutil@tempdima}}
\ifpgfarrowreversed
\endgroup
\fi
\pgfpathlineto {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
\pgfpathclose
\pgfusepathqfill
},
parameters = {\the\pgfarrowlength}
}%
\pgfdeclarearrow{
name = Butt Cap,
defaults = {
length = +0pt .5
},
setup code = {
\pgfarrowssettipend{\pgfarrowlength}
\pgfarrowssetlineend{-.5\pgflinewidth}
\pgfarrowssavethe\pgfarrowlength
\pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
\pgfarrowsupperhullpoint{\pgfarrowlength}{.5\pgflinewidth}
},
drawing code = {
\pgfutil@tempdima.5\pgflinewidth
\pgfpathmoveto {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{0pt}{\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{\pgfarrowlength}{-\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
\pgfpathclose
\pgfusepathqfill
},
parameters = {\the\pgfarrowlength}
}%
\pgfkeys{
/pgf/arrow keys/.cd,
cap angle/.code={%
\pgfmathsetlength\pgf@x{#1}%
\pgf@x.5\pgf@x
\pgfmathtan@{\pgf@sys@tonumber\pgf@x}%
\pgfmathreciprocal@{\pgfmathresult}%
\pgf@x\pgfmathresult pt%
\pgf@x.5\pgf@x%
\edef\pgf@marshal{\noexpand\pgfarrowsaddtooptions{\noexpand\pgfarrowslinewidthdependent{+0pt}{\pgf@sys@tonumber\pgf@x}{0}\pgfarrowlength\pgf@x}}
\pgf@marshal
}
}%
\pgfdeclarearrow{
name = Triangle Cap,
defaults = {
length = +0pt .5
},
setup code = {
\ifpgfarrowreversed
\pgfarrowssettipend{\pgfarrowlength}
\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by.5\pgflinewidth}
\else
\pgfarrowssettipend{\pgfarrowlength}
\pgfarrowssetlineend{-.5\pgflinewidth}
\fi
\pgfarrowssavethe\pgfarrowlength
\pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
\pgfarrowshullpoint{\pgfarrowlength}{0pt}
},
drawing code = {
\ifpgfarrowreversed
\pgftransformxscale{-1}
\pgftransformxshift{-\pgfarrowlength}
\fi
\pgfutil@tempdima.5\pgflinewidth
\pgfpathmoveto {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{0pt}{\pgfutil@tempdima}}
\ifpgfarrowreversed
\pgfpathlineto {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
\begingroup
\pgftransformxshift{\pgfarrowlength}
\pgftransformxscale{-1}
\fi
\pgfpathlineto {\pgfqpoint{\pgfarrowlength}{0pt}}
\ifpgfarrowreversed
\endgroup
\pgfpathlineto {\pgfqpoint{\pgfarrowlength}{-\pgfutil@tempdima}}
\fi
\pgfpathlineto {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
\pgfpathclose
\pgfusepathqfill
},
parameters = {\the\pgfarrowlength}
}%
\pgfdeclarearrow{
name = Fast Triangle,
defaults = {
length = +0pt .5,
inset = +0pt .5,
},
setup code = {
\pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}
\ifpgfarrowreversed\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}\fi
\pgfarrowssavethe\pgfarrowlength
\pgfarrowssavethe\pgfarrowinset
\pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
\pgfarrowsupperhullpoint{\pgfarrowinset}{.5\pgflinewidth}
\pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}{0pt}
},
drawing code = {
\pgfutil@tempdima.5\pgflinewidth
\pgfpathmoveto {\pgfqpoint{0pt}{\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{\pgfarrowinset\advance\pgf@x by\pgfarrowlength}{0pt}}
\pgfpathlineto {\pgfqpoint{\pgfarrowinset}{-\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{\pgfarrowlength}{0pt}}
\pgfpathclose
\pgfusepathqfill
},
parameters = {\the\pgfarrowlength,\the\pgfarrowinset}
}%
\pgfdeclarearrow{
name = Fast Round,
defaults = {
length = +0pt .5,
inset = +0pt .5,
},
setup code = {
\pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}
\ifpgfarrowreversed\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}\fi
\pgfarrowssavethe\pgfarrowlength
\pgfarrowssavethe\pgfarrowinset
\pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
\pgfarrowsupperhullpoint{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}{.5\pgflinewidth}
},
drawing code = {
\pgfutil@tempdima.5\pgflinewidth
\pgfpathmoveto {\pgfqpoint{0pt}{\pgfutil@tempdima}}
\pgfpathlineto {\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdima}}
{
\pgftransformxshift{\pgfarrowinset}
\pgfpathcurveto{\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
{\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
{\pgfqpoint{\pgfarrowlength}{0pt}}
\pgfpathcurveto{\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
{\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
{\pgfqpoint{0pt}{-\pgfutil@tempdima}}
}
\pgfpathlineto {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
\pgfpathcurveto {\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
{\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
{\pgfqpoint{\pgfarrowlength}{0pt}}
\pgfpathcurveto {\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
{\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
{\pgfqpoint{0pt}{\pgfutil@tempdima}}
\pgfpathclose
\pgfusepathqfill
},
parameters = {\the\pgfarrowlength,\the\pgfarrowinset}
}%
\pgfkeys{
/pgf/arrow keys/.cd,
n/.code={%
\pgfmathparse{#1}%
\expandafter\pgf@lib@meta@strip@dot\pgfmathresult.\relax%
}
}%
\def\pgf@lib@meta@strip@dot#1.#2\relax{%
\pgfarrowsaddtooptions{\def\pgfarrown{#1}}%
}%
\def\pgfarrown{4}%
\pgfdeclarearrow{
name = Rays,
defaults = {
length = +3pt 4,
width' = +0pt 1,
line width = +0pt 1 1,
},
setup code = {
\pgfmathdivide@{360}{\pgfarrown}%
\let\pgfarrow@inc\pgfmathresult%
\pgf@xa\pgfarrow@inc pt%
\ifodd\pgfarrown\pgf@ya.25\pgf@xa\else\pgf@ya.5\pgf@xa\fi%
\pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
\pgf@x.5\pgfarrowlength%
\pgf@xa\pgfmathresultx\pgf@x%
\ifpgfarrowroundcap
\advance\pgf@xa by.5\pgfarrowlinewidth
\else
\pgf@process{\pgfpointnormalised{\pgfqpoint{\pgfmathresultx\pgfarrowlength}{\pgfmathresulty\pgfarrowwidth}}}%
\pgf@x.5\pgfarrowlinewidth%
\advance\pgf@xa by\pgf@sys@tonumber{\pgf@y}\pgf@x%
\fi%
\pgfarrowssettipend{\pgf@xa}
\pgfarrowssetbackend{-\pgf@xa}
\pgfarrowsupperhullpoint{\pgf@xa}{.25\pgfarrowwidth}
\pgfarrowsupperhullpoint{.25\pgfarrowlength}{.5\pgfarrowwidth\ifpgfarrowroundcap\advance\pgf@y by.5\pgfarrowlinewidth\fi}
\pgfarrowsupperhullpoint{-.25\pgfarrowlength}{.5\pgfarrowwidth\ifpgfarrowroundcap\advance\pgf@y by.5\pgfarrowlinewidth\fi}
\pgfarrowsupperhullpoint{-\pgf@xa}{.25\pgfarrowwidth}
\ifpgfarrowharpoon
\pgfarrowshullpoint{-.5\pgfarrowlength\ifpgfarrowroundcap\advance\pgf@x by-.5\pgfarrowlinewidth\fi}{-.5\pgfarrowlinewidth}
\pgfarrowshullpoint{.5\pgfarrowlength\ifpgfarrowroundcap\advance\pgf@x by.5\pgfarrowlinewidth\fi}{-.5\pgfarrowlinewidth}
\fi
\pgfarrowssavethe\pgfarrowlinewidth
\pgfarrowssavethe\pgfarrowlength
\pgfarrowssavethe\pgfarrowwidth
\pgfarrowssave\pgfarrow@inc
\pgfarrowssave\pgfarrown
},
drawing code = {
\pgfsetdash{}{+0pt}
\ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
\ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
{%
\pgfgettransform\pgf@temp@trans
\pgftransformxscale{+.5\pgfarrowlength}
\pgftransformyscale{+.5\pgfarrowwidth}
\pgf@xa\pgfarrow@inc pt%
\ifodd\pgfarrown\pgf@ya.25\pgf@xa\else\pgf@ya.5\pgf@xa\fi%
\ifpgfarrowharpoon\pgf@yb180pt\else\pgf@yb360pt\fi
\pgfutil@loop%
\ifdim\pgf@ya<\pgf@yb%
\pgfpathmoveto{\pgfpointpolar{+\pgf@ya}{+1pt}}
\pgfpathlineto{\pgfpointorigin}
\ifpgfarrowharpoon\ifdim\pgf@ya>\pgf@xa\else{\pgfsettransform\pgf@temp@trans\pgfpathlineto{\pgfqpoint{-.5\pgflinewidth}{0pt}}}\fi\fi
\advance\pgf@ya by\pgf@xa\relax%
\pgfutil@repeat%
}
\pgfusepathqstroke
},
parameters = {
\the\pgfarrowlinewidth,%
\the\pgfarrowlength,%
\the\pgfarrowwidth,%
\pgfarrown,%
\ifpgfarrowharpoon h\fi%
\ifpgfarrowroundcap c\fi%
}
}%
\pgfkeys{
LaTeX /.tip = {Latex},
Triangle /.tip = {Stealth[inset=+0pt, angle=+60:+2.7pt +3.6]},
Rectangle /.tip = {Square[length=+3pt +4.5,width'=+0pt +.5]},
Ellipse /.tip = {Circle[length=+3.3pt +4.95, width'=+0pt +0.5]},
Diamond /.tip = {Kite[inset'=+0pt .5]},
Turned Square /.tip = {Kite[length=+3pt 4,width'= +0pt 1,inset'= +0pt 0.5]},
To /.tip = {Computer Modern Rightarrow},
Bar /.tip = {Tee Barb[length=+0pt]},
Bracket /.tip = {Tee Barb[inset'=+0pt +1,length=+0.75pt +1]},
Parenthesis /.tip = {Arc Barb[arc=+120,length=+1.725pt +2.3]}
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryarrows.meta.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibrarydecorations.pathreplacing.code.tex ====
\usepgfmodule{decorations}%
\pgfdeclaredecoration{ticks}{ticks}
{%
\state{ticks}[width=+\pgfdecorationsegmentlength]
{
\pgfpathmoveto{\pgfqpoint{0pt}{\pgfdecorationsegmentamplitude}}
\pgfpathlineto{\pgfqpoint{0pt}{-\pgfdecorationsegmentamplitude}}
}%
\state{final}
{
\pgfpathmoveto{\pgfqpoint{0pt}{\pgfdecorationsegmentamplitude}}
\pgfpathlineto{\pgfqpoint{0pt}{-\pgfdecorationsegmentamplitude}}
\pgfpathmoveto{\pgfpointdecoratedpathlast}
}%
}%
\pgfdeclaredecoration{expanding waves}{initial}
{%
\state{initial}[width=+\pgfdecorationsegmentlength,next state=wave]
{}%
\state{wave}[switch if less than=+\pgfdecorationsegmentlength to last,
width=+\pgfdecorationsegmentlength]
{
\pgfpathmoveto{
\pgfpointadd
{\pgfqpoint{-\pgfdecoratedcompleteddistance}{0pt}}%
{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}}}%
\pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}%
}%
\state{last}[width=+0pt,next state=final]
{
\pgfpathmoveto{
\pgfpointadd
{\pgfqpoint{-\pgfdecoratedcompleteddistance}{0pt}}%
{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}}}%
\pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}%
}%
\state{final}
{
\pgfpathmoveto{\pgfpointdecoratedpathlast}
}%
}%
\pgfdeclaredecoration{waves}{wave}
{%
\state{wave}[width=\pgfdecorationsegmentlength]
{
\pgftransformxshift{+\pgfdecorationsegmentlength}
\pgfpathmoveto{
\pgfpointadd
{\pgfqpoint{-\pgfkeysvalueof{/pgf/decoration/start radius}}{0pt}}%
{\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}}}%
\pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}%
}%
\state{final}
{
\pgfpathmoveto{\pgfpointdecoratedpathlast}
}%
}%
\pgfdeclaredecoration{border}{tick}
{%
\state{tick}[switch if less than=+\pgfdecorationsegmentlength to last,
width=+\pgfdecorationsegmentlength]
{
\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecorationsegmentamplitude}}
}%
\state{last}[width=+\pgfdecorationsegmentamplitude,next state=final]
{
\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecorationsegmentamplitude}}
}%
\state{final}
{
\pgfpathmoveto{\pgfpointdecoratedpathlast}
}%
}%
\pgfdeclaredecoration{brace}{brace}
{%
\state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]
{
\pgf@yc=\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance
\ifdim2\pgfdecorationsegmentamplitude>\pgf@yc
\pgf@yc=0.5\pgf@yc
\else
\pgf@yc=\pgfdecorationsegmentamplitude
\fi
\pgf@xc=\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance
\advance\pgf@xc-\pgfdecoratedremainingdistance
\ifdim-2\pgfdecorationsegmentamplitude<\pgf@xc
\pgf@xc=-0.5\pgf@xc
\else
\pgf@xc=\pgfdecorationsegmentamplitude
\fi
\pgfpathmoveto{\pgfpointorigin}
\pgfpathcurveto
{\pgfqpoint{.15\pgf@yc}{.3\pgfdecorationsegmentamplitude}}
{\pgfqpoint{.5\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
{\pgfqpoint{\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
{
\pgftransformxshift{+\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance}
\pgfpathlineto{\pgfqpoint{-\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
\pgfpathcurveto
{\pgfqpoint{-.5\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
{\pgfqpoint{-.15\pgf@yc}{.7\pgfdecorationsegmentamplitude}}
{\pgfqpoint{0\pgf@yc}{1\pgfdecorationsegmentamplitude}}
\pgfpathcurveto
{\pgfqpoint{.15\pgf@xc}{.7\pgfdecorationsegmentamplitude}}
{\pgfqpoint{.5\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
{\pgfqpoint{\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
}
{
\pgftransformxshift{+\pgfdecoratedremainingdistance}
\pgfpathlineto{\pgfqpoint{-\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
\pgfpathcurveto
{\pgfqpoint{-.5\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
{\pgfqpoint{-.15\pgf@xc}{.3\pgfdecorationsegmentamplitude}}
{\pgfqpoint{0pt}{0pt}}
}
}%
\state{final}
{}%
}%
\pgfdeclaredecoration{show path construction}{check for moveto}{%
\state{check for moveto}[width=0pt, next state=segment,
persistent precomputation={%
\begingroup%
\pgf@lib@decoraions@installinputsegmentpoints%
\ifx\pgfdecorationpreviousinputsegment\pgfdecorationinputsegmentmoveto%
\pgfdecoratedinputsegmentmovetocode%
\fi%
\endgroup%
}]{}%
\state{segment}[width=\pgfdecoratedinputsegmentremainingdistance, next state=check for moveto,
persistent precomputation={%
\begingroup%
\pgf@lib@decoraions@installinputsegmentpoints%
\csname pgfdecoratedinputsegment\pgfdecorationcurrentinputsegment code\endcsname%
\endgroup%
}]{}%
\state{final}{%
\egroup%
\begingroup%
\pgf@lib@decoraions@installinputsegmentpoints%
\csname pgfdecoratedinputsegment\pgfdecorationcurrentinputsegment code\endcsname%
\endgroup%
\bgroup%
}%
}%
\pgfkeys{
/pgf/decoration/.cd,
moveto code/.code=\def\pgfdecoratedinputsegmentmovetocode{#1},
lineto code/.code=\def\pgfdecoratedinputsegmentlinetocode{#1},
curveto code/.code=\def\pgfdecoratedinputsegmentcurvetocode{#1},
closepath code/.code=\def\pgfdecoratedinputsegmentclosepathcode{#1}
}%
\let\pgfdecoratedinputsegmentmovetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentlinetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentcurvetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentclosepathcode\pgfutil@empty%
\def\pgf@lib@decoraions@installinputsegmentpoints{%
\let\pgfpointdecoratedinputsegmentfirst\pgf@decorate@inputsegment@first%
\let\pgfpointdecoratedinputsegmentlast\pgf@decorate@inputsegment@last%
\let\pgfpointdecoratedinputsegmentsupporta\pgf@decorate@inputsegment@supporta%
\let\pgfpointdecoratedinputsegmentsupportb\pgf@decorate@inputsegment@supportb%
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibrarydecorations.pathreplacing.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryplothandlers.code.tex ====
\ProvidesFileRCS{pgflibraryplothandlers.code.tex}
\pgfdeclareplothandler{\pgfplothandlercurveto}{}{%
point macro=\pgf@plot@curveto@handler@initial,
jump macro=\pgf@plot@smooth@next@moveto,
end macro=\pgf@plot@curveto@handler@finish
}%
\def\pgf@plot@smooth@next@moveto{%
\pgf@plot@curveto@handler@finish%
\global\pgf@plot@startedfalse%
\global\let\pgf@plotstreampoint\pgf@plot@curveto@handler@initial%
}%
\def\pgf@plot@curveto@handler@initial#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@plot@first@action{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\xdef\pgf@plot@curveto@first{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\global\let\pgf@plot@curveto@first@support=\pgf@plot@curveto@first%
\global\let\pgf@plotstreampoint=\pgf@plot@curveto@handler@second%
}%
\def\pgf@plot@curveto@handler@second#1{%
\pgf@process{#1}%
\xdef\pgf@plot@curveto@second{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\global\let\pgf@plotstreampoint=\pgf@plot@curveto@handler@third%
\global\pgf@plot@startedtrue%
}%
\def\pgf@plot@curveto@handler@third#1{%
\pgf@process{#1}%
\xdef\pgf@plot@curveto@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgf@plot@curveto@first}
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@xa=\pgf@plottension\pgf@xa%
\pgf@ya=\pgf@plottension\pgf@ya%
\pgf@process{\pgf@plot@curveto@second}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\advance\pgf@xb by-\pgf@xa%
\advance\pgf@yb by-\pgf@ya%
\advance\pgf@xc by\pgf@xa%
\advance\pgf@yc by\pgf@ya%
\edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@curveto@first@support}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@curveto@second}}%
{\pgf@marshal}%
\global\let\pgf@plot@curveto@first=\pgf@plot@curveto@second%
\global\let\pgf@plot@curveto@second=\pgf@plot@curveto@current%
\xdef\pgf@plot@curveto@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%
\def\pgf@plot@curveto@handler@finish{%
\ifpgf@plot@started%
\pgfpathcurveto{\pgf@plot@curveto@first@support}{\pgf@plot@curveto@second}{\pgf@plot@curveto@second}%
\fi%
}%
\def\pgfsetplottension#1{%
\pgf@x=#1pt\relax%
\pgf@x=0.2775\pgf@x\relax%
\edef\pgf@plottension{\pgf@sys@tonumber\pgf@x}}%
\pgfsetplottension{0.5}%
\pgfdeclareplothandler{\pgfplothandlerclosedcurve}{}{%
point macro=\pgf@plot@closedcurve@handler@initial,
end macro=\pgf@plot@closedcurve@handler@finish,
jump macro=\pgf@plot@closedsmooth@next@moveto
}%
\def\pgf@plot@closedsmooth@next@moveto{%
\pgf@plot@closedcurve@handler@finish%
\global\pgf@plot@startedfalse%
\global\let\pgf@plotstreampoint\pgf@plot@closedcurve@handler@initial%
}%
\def\pgf@plot@closedcurve@handler@initial#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\xdef\pgf@plot@closedcurve@initial{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@second%
\global\pgf@plot@startedfalse%
}%
\def\pgf@plot@closedcurve@handler@second#1{%
\pgf@process{#1}%
\xdef\pgf@plot@closedcurve@after@initial{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
{\pgfpathmoveto{}}%
\global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@third%
}%
\def\pgf@plot@closedcurve@handler@third#1{%
\global\pgf@plot@startedtrue%
\pgf@process{#1}%
\xdef\pgf@plot@closedcurve@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgf@plot@closedcurve@initial}
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@xa=\pgf@plottension\pgf@xa%
\pgf@ya=\pgf@plottension\pgf@ya%
\pgf@process{\pgf@plot@closedcurve@after@initial}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\advance\pgf@xb by-\pgf@xa%
\advance\pgf@yb by-\pgf@ya%
\advance\pgf@xc by\pgf@xa%
\advance\pgf@yc by\pgf@ya%
\global\let\pgf@plot@closedcurve@first=\pgf@plot@closedcurve@after@initial%
\global\let\pgf@plot@closedcurve@second=\pgf@plot@closedcurve@current%
\xdef\pgf@plot@closedcurve@after@initial@presupport{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
\xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
\global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@fourth%
}%
\def\pgf@plot@closedcurve@handler@fourth#1{%
\pgf@process{#1}%
\xdef\pgf@plot@closedcurve@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgf@plot@closedcurve@first}
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@xa=\pgf@plottension\pgf@xa%
\pgf@ya=\pgf@plottension\pgf@ya%
\pgf@process{\pgf@plot@closedcurve@second}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\advance\pgf@xb by-\pgf@xa%
\advance\pgf@yb by-\pgf@ya%
\advance\pgf@xc by\pgf@xa%
\advance\pgf@yc by\pgf@ya%
\edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@second}}%
{\pgf@marshal}%
\global\let\pgf@plot@closedcurve@first=\pgf@plot@closedcurve@second%
\global\let\pgf@plot@closedcurve@second=\pgf@plot@closedcurve@current%
\xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%
\def\pgf@plot@closedcurve@handler@finish{%
\ifpgf@plot@started
\pgf@process{\pgf@plot@closedcurve@initial}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgf@plot@closedcurve@first}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@xa=\pgf@plottension\pgf@xa%
\pgf@ya=\pgf@plottension\pgf@ya%
\pgf@process{\pgf@plot@closedcurve@second}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\advance\pgf@xb by-\pgf@xa%
\advance\pgf@yb by-\pgf@ya%
\advance\pgf@xc by\pgf@xa%
\advance\pgf@yc by\pgf@ya%
\edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@second}}%
{\pgf@marshal}%
\xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
\pgf@process{\pgf@plot@closedcurve@after@initial}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgf@plot@closedcurve@second}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@xa=\pgf@plottension\pgf@xa%
\pgf@ya=\pgf@plottension\pgf@ya%
\pgf@process{\pgf@plot@closedcurve@initial}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\advance\pgf@xb by-\pgf@xa%
\advance\pgf@yb by-\pgf@ya%
\advance\pgf@xc by\pgf@xa%
\advance\pgf@yc by\pgf@ya%
\edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@initial}}%
{\pgf@marshal}%
\edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
{\noexpand\pgf@plot@closedcurve@after@initial@presupport}{\noexpand\pgf@plot@closedcurve@after@initial}}%
{\pgf@marshal}%
\pgfpathclose%
\fi%
}%
\pgfdeclareplothandler{\pgfplothandlerxcomb}{}{%
start macro=\pgfplotxzerolevelstreamstart,
point macro=\pgf@plot@xcomb@handler,
end macro=\pgfplotxzerolevelstreamend,
}%
\def\pgf@plot@xcomb@handler#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\begingroup
\pgfplotxzerolevelstreamnext
\endgroup
\pgf@yb=\pgf@x
\pgfpathmoveto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%
\pgfdeclareplothandler{\pgfplothandlerycomb}{}{%
start macro=\pgfplotyzerolevelstreamstart,
point macro=\pgf@plot@ycomb@handler,
end macro=\pgfplotyzerolevelstreamend
}%
\def\pgf@plot@ycomb@handler#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\begingroup
\pgfplotyzerolevelstreamnext
\endgroup
\pgf@yb=\pgf@x
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%
\def\pgfplotxzerolevelstreamstart{\pgf@plotxzerolevelstreamstart}%
\def\pgfplotxzerolevelstreamend{\pgf@plotxzerolevelstreamend}%
\def\pgfplotxzerolevelstreamnext{\pgf@plotxzerolevelstreamnext}
\def\pgfplotyzerolevelstreamstart{\pgf@plotyzerolevelstreamstart}%
\def\pgfplotyzerolevelstreamend{\pgf@plotyzerolevelstreamend}%
\def\pgfplotyzerolevelstreamnext{\pgf@plotyzerolevelstreamnext}%
\def\pgfplotxzerolevelstreamconstant#1{%
\edef\pgfplotxzerolevelstreamconstant@val{#1}%
\def\pgf@plotxzerolevelstreamstart{%
\global\let\pgf@plotxzerolevelstreamend=\relax
\gdef\pgf@plotxzerolevelstreamnext{\global\pgf@x=\pgfplotxzerolevelstreamconstant@val\relax}%
}%
}%
\pgfplotxzerolevelstreamconstant{0pt}%
\def\pgfplotyzerolevelstreamconstant#1{%
\edef\pgfplotyzerolevelstreamconstant@val{#1}%
\def\pgf@plotyzerolevelstreamstart{%
\global\let\pgf@plotyzerolevelstreamend=\relax
\gdef\pgf@plotyzerolevelstreamnext{\global\pgf@x=\pgfplotyzerolevelstreamconstant@val\relax}%
}%
}%
\pgfplotyzerolevelstreamconstant{0pt}%
\def\pgfplotbarwidth{\pgfkeysvalueof{/pgf/bar width}}%
\def\pgfplotbarshift{\pgfkeysvalueof{/pgf/bar shift}}%
\pgfqkeys{/pgf}{%
bar width/.initial=10pt,
bar shift/.initial=0pt,
bar interval width/.initial=1,
bar interval shift/.initial=0.5,
at begin bar/.initial=,
at end bar/.initial=,
}%
\pgfdeclareplothandler{\pgfplothandlerybar}{}{%
start={
\pgfmathparse{\pgfplotbarwidth}%
\xdef\pgfplotbarwidth@{\pgfmathresult pt}%
\pgfmathparse{\pgfplotbarshift}%
\xdef\pgfplotbarshift@{\pgfmathresult pt}%
\pgfplotyzerolevelstreamstart
},
end macro=\pgfplotyzerolevelstreamend,
point macro=\pgf@plot@ybar@handler
}%
\def\pgf@plot@ybar@handler#1{%
\pgfkeysvalueof{/pgf/at begin bar}%
\pgf@process{#1}%
\pgf@ya=\pgf@y
\expandafter\pgf@xb\pgfplotbarwidth@\relax
\pgf@xc=\pgf@x
\advance\pgf@xc by-.5\pgf@xb
\advance\pgf@xc by\pgfplotbarshift@\relax
\begingroup
\pgfplotyzerolevelstreamnext
\endgroup
\pgf@yb=\pgf@x
\advance\pgf@ya by-\pgf@yb
\pgfpathrectangle
{\pgfqpoint{\pgf@xc}{\pgf@yb}}%
{\pgfqpoint{\pgf@xb}{\pgf@ya}}%
\pgfkeysvalueof{/pgf/at end bar}%
}%
\pgfdeclareplothandler{\pgfplothandlerxbar}{}{%
start={
\pgfmathparse{\pgfplotbarwidth}%
\xdef\pgfplotbarwidth@{\pgfmathresult pt}%
\pgfmathparse{\pgfplotbarshift}%
\xdef\pgfplotbarshift@{\pgfmathresult pt}%
\pgfplotxzerolevelstreamstart
},
end macro=\pgfplotxzerolevelstreamend,
point macro=\pgf@plot@xbar@handler
}%
\def\pgf@plot@xbar@handler#1{%
\pgfkeysvalueof{/pgf/at begin bar}%
\pgf@process{#1}%
\pgf@ya=\pgf@x
\expandafter\pgf@xb\pgfplotbarwidth@\relax
\pgf@xc=\pgf@y
\advance\pgf@xc by-.5\pgf@xb
\advance\pgf@xc by\pgfplotbarshift@\relax
\begingroup
\pgfplotxzerolevelstreamnext
\endgroup
\pgf@yb=\pgf@x
\advance\pgf@ya by-\pgf@yb
\pgfpathrectangle
{\pgfqpoint{\pgf@yb}{\pgf@xc}}%
{\pgfqpoint{\pgf@ya}{\pgf@xb}}%
\pgfkeysvalueof{/pgf/at end bar}%
}%
\pgfdeclareplothandler{\pgfplothandlerybarinterval}{}{%
start={
\pgfmathparse{\pgfkeysvalueof{/pgf/bar interval width}}%
\xdef\pgfplotbarintervalwidth@{\pgfmathresult}%
\pgfmathparse{\pgfkeysvalueof{/pgf/bar interval shift}}%
\xdef\pgfplotbarintervalshift@{\pgfmathresult}%
\pgfplotyzerolevelstreamstart
},
end macro=\pgfplotyzerolevelstreamend,
point macro=\pgf@plot@ybarinterval@handler@first
}%
\def\pgf@plot@ybarinterval@handler@first#1{%
\pgf@process{#1}%
\xdef\pgf@plot@barinterval@intervalstart{\the\pgf@x}%
\xdef\pgf@plot@barinterval@bar{\the\pgf@y}%
\global\let\pgf@plotstreampoint=\pgf@plot@ybarinterval@handler%
}%
\def\pgf@plot@ybarinterval@handler#1{%
\pgfkeysvalueof{/pgf/at begin bar}%
\pgf@process{#1}%
\pgf@ya=\pgf@plot@barinterval@bar
\xdef\pgf@plot@barinterval@bar{\the\pgf@y}%
\pgf@xc=\pgf@plot@barinterval@intervalstart\relax
\xdef\pgf@plot@barinterval@intervalstart{\the\pgf@x}%
\pgf@xb=\pgf@x
\advance\pgf@xb by-\pgf@xc
\advance\pgf@xc by\pgfplotbarintervalshift@\pgf@xb
\pgf@xb=\pgfplotbarintervalwidth@\pgf@xb
\advance\pgf@xc by-.5\pgf@xb%
\begingroup
\pgfplotyzerolevelstreamnext
\endgroup
\pgf@yb=\pgf@x
\advance\pgf@ya by-\pgf@yb
\pgfpathrectangle
{\pgfqpoint{\pgf@xc}{\pgf@yb}}%
{\pgfqpoint{\pgf@xb}{\pgf@ya}}%
\pgfkeysvalueof{/pgf/at end bar}%
}%
\pgfdeclareplothandler{\pgfplothandlerxbarinterval}{}{%
start={
\pgfmathparse{\pgfkeysvalueof{/pgf/bar interval width}}%
\xdef\pgfplotbarintervalwidth@{\pgfmathresult}%
\pgfmathparse{\pgfkeysvalueof{/pgf/bar interval shift}}%
\xdef\pgfplotbarintervalshift@{\pgfmathresult}%
\pgfplotxzerolevelstreamstart
},
end macro=\pgfplotxzerolevelstreamend,
point macro=\pgf@plot@xbarinterval@handler@first
}%
\def\pgf@plot@xbarinterval@handler@first#1{%
\pgf@process{#1}%
\xdef\pgf@plot@barinterval@intervalstart{\the\pgf@y}%
\xdef\pgf@plot@barinterval@bar{\the\pgf@x}%
\global\let\pgf@plotstreampoint=\pgf@plot@xbarinterval@handler%
}%
\def\pgf@plot@xbarinterval@handler#1{%
\pgfkeysvalueof{/pgf/at begin bar}%
\pgf@process{#1}%
\pgf@ya=\pgf@plot@barinterval@bar
\xdef\pgf@plot@barinterval@bar{\the\pgf@x}%
\pgf@xc=\pgf@plot@barinterval@intervalstart\relax
\xdef\pgf@plot@barinterval@intervalstart{\the\pgf@y}%
\pgf@xb=\pgf@y
\advance\pgf@xb by-\pgf@xc
\advance\pgf@xc by\pgfplotbarintervalshift@\pgf@xb
\pgf@xb=\pgfplotbarintervalwidth@\pgf@xb
\advance\pgf@xc by-.5\pgf@xb%
\begingroup
\pgfplotxzerolevelstreamnext
\endgroup
\pgf@yb=\pgf@x
\advance\pgf@ya by-\pgf@yb
\pgfpathrectangle
{\pgfqpoint{\pgf@yb}{\pgf@xc}}%
{\pgfqpoint{\pgf@ya}{\pgf@xb}}%
\pgfkeysvalueof{/pgf/at end bar}%
}%
\pgfdeclareplothandler{\pgfplothandlerconstantlineto}{}{%
point macro=\pgf@plot@const@line@handler
}%
\def\pgf@plot@const@line@handler#1{%
\pgf@process{#1}%
\xdef\pgf@plot@const@line@handler@last{\the\pgf@y}%
\pgf@plot@first@action{}%
\global\let\pgf@plotstreampoint=\pgf@plot@const@line@handler@@%
}%
\def\pgf@plot@const@line@handler@@#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\pgf@yb\pgf@plot@const@line@handler@last\relax
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\xdef\pgf@plot@const@line@handler@last{\the\pgf@ya}%
}%
\pgfdeclareplothandler{\pgfplothandlerconstantlinetomarkright}{}{%
point macro=\pgf@plot@const@line@mark@right@handler
}%
\def\pgf@plot@const@line@mark@right@handler#1{%
\pgf@process{#1}%
\xdef\pgf@plot@const@line@handler@last{\the\pgf@x}%
\pgf@plot@first@action{}%
\global\let\pgf@plotstreampoint=\pgf@plot@const@line@mark@right@handler@@%
}%
\def\pgf@plot@const@line@mark@right@handler@@#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\pgf@yb\pgf@plot@const@line@handler@last\relax
\pgfpathlineto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\xdef\pgf@plot@const@line@handler@last{\the\pgf@xa}%
}%
\pgfdeclareplothandler{\pgfplothandlerconstantlinetomarkmid}{}{%
point macro=\pgf@plot@const@line@mark@mid@handler
}%
\def\pgf@plot@const@line@mark@mid@handler#1{%
\pgf@process{#1}%
\xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
\pgf@plot@first@action{}%
\global\let\pgf@plotstreampoint=\pgf@plot@const@line@mark@mid@handler@@%
}%
\def\pgf@plot@const@line@mark@mid@handler@@#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\pgf@plot@const@line@handler@last
\pgf@xc=.5\pgf@xa
\advance\pgf@xc by.5\pgf@x
\pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@y}}%
\pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@ya}}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
}%
\pgfdeclareplothandler{\pgfplothandlerjumpmarkright}{}{%
point macro=\pgf@plot@jumpmarkright@handler
}%
\def\pgf@plot@jumpmarkright@handler#1{%
\pgf@process{#1}%
\xdef\pgf@plot@const@line@handler@last{\the\pgf@x}%
\pgf@plot@first@action{}%
\global\let\pgf@plotstreampoint=\pgf@plot@jumpmarkright@handler@@%
}%
\def\pgf@plot@jumpmarkright@handler@@#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\pgf@yb\pgf@plot@const@line@handler@last\relax
\pgfpathmoveto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\xdef\pgf@plot@const@line@handler@last{\the\pgf@xa}%
}%
\pgfdeclareplothandler{\pgfplothandlerjumpmarkleft}{}{%
point macro=\pgf@plot@jumpmarkleft@handler
}%
\def\pgf@plot@jumpmarkleft@handler#1{%
\pgf@process{#1}%
\xdef\pgf@plot@const@line@handler@last{\the\pgf@y}%
\pgf@plot@first@action{}%
\global\let\pgf@plotstreampoint=\pgf@plot@jumpmarkleft@handler@@%
}%
\def\pgf@plot@jumpmarkleft@handler@@#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\pgf@yb\pgf@plot@const@line@handler@last\relax
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\xdef\pgf@plot@const@line@handler@last{\the\pgf@ya}%
}%
\pgfdeclareplothandler{\pgfplothandlerjumpmarkmid}{}{%
point macro=\pgf@plot@jump@mark@mid@handler
}%
\def\pgf@plot@jump@mark@mid@handler#1{%
\pgf@process{#1}%
\xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
\pgf@plot@first@action{}%
\global\let\pgf@plotstreampoint=\pgf@plot@jump@mark@mid@handler@@%
}%
\def\pgf@plot@jump@mark@mid@handler@@#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x
\pgf@ya=\pgf@y
\pgf@plot@const@line@handler@last
\pgf@xc=.5\pgf@xa
\advance\pgf@xc by.5\pgf@x
\pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@y}}%
\pgfpathmoveto{\pgfqpoint{\pgf@xc}{\pgf@ya}}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
}%
\pgfdeclareplothandler{\pgfplothandlerpolarcomb}{}{%
point macro=\pgf@plot@polarcomb@handler
}%
\def\pgf@plot@polarcomb@handler#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgfpathmoveto{\pgfpointorigin}%
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%
\pgfdeclareplothandler{\pgfplothandlermark}{#1}{%
start={
\def\pgf@plot@mark{%
\ifnum\pgf@plot@mark@count<\pgf@plot@mark@repeat\relax%
\else%
\global\pgf@plot@mark@count=0\relax%
#1%
\fi%
}%
\global\pgf@plot@mark@count=\pgf@plot@mark@repeat\relax%
\global\advance\pgf@plot@mark@count by-\pgf@plot@mark@phase\relax%
},
point macro=\pgf@plot@mark@handler
}%
\newcount\pgf@plot@mark@count
\def\pgf@plot@mark@phase{0}%
\def\pgf@plot@mark@handler#1{%
\global\advance\pgf@plot@mark@count by1\relax%
{\pgftransformshift{#1}\pgf@plot@mark}%
}%
\def\pgfsetplotmarkrepeat#1{\def\pgf@plot@mark@repeat{#1}}%
\pgfsetplotmarkrepeat{1}%
\def\pgfsetplotmarkphase#1{\def\pgf@plot@mark@phase{#1}}%
\pgfsetplotmarkphase{1}%
\pgfdeclareplothandler{\pgfplothandlermarklisted}{#1#2}{%
start={
\let\pgf@plot@mark@list=\pgfutil@empty%
\edef\pgf@marshal{\noexpand\foreach\noexpand\pgf@temp in{#2}}
\pgf@marshal{\xdef\pgf@plot@mark@list{\pgf@plot@mark@list(\pgf@temp)}}%
\def\pgf@plot@mark{%
\edef\pgf@marshal{\noexpand\pgfutil@in@{(\the\pgf@plot@mark@count)}{\pgf@plot@mark@list}}%
\pgf@marshal%
\ifpgfutil@in@#1\fi%
}%
\global\pgf@plot@mark@count=\pgf@plot@mark@repeat\relax%
\global\advance\pgf@plot@mark@count by-\pgf@plot@mark@phase\relax%
},
point macro=\pgf@plot@mark@handler
}%
\def\pgfdeclareplotmark#1#2{\expandafter\def\csname pgf@plot@mark@#1\endcsname{#2}}%
\def\pgfsetplotmarksize#1{\pgfmathsetlength\pgfplotmarksize{#1}}%
\newdimen\pgfplotmarksize
\pgfplotmarksize=2pt
\def\pgfuseplotmark#1{\csname pgf@plot@mark@#1\endcsname}%
\pgfdeclareplotmark{*}
{%
\pgfpathellipse{\pgfpointorigin}{\pgfqpoint{\pgfplotmarksize}{0sp}}{\pgfqpoint{0sp}{\pgfplotmarksize}}%
\pgfusepathqfillstroke
}%
\pgfdeclareplotmark{+}
{%
\pgfpathmoveto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
\pgfpathlineto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
\pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
\pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
\pgfusepathqstroke
}%
\pgfdeclareplotmark{x}
{%
\pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
\pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
\pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
\pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
\pgfusepathqstroke
}%
\pgfkeys{/pgf/gap around stream point/.initial=1.5pt}%
\pgfdeclareplothandler{\pgfplothandlergaplineto}{}{%
point macro=\pgf@plot@gap@lineto@handler@initial,
jump macro=\pgf@plot@gap@next@moveto
}%
\def\pgf@plot@gap@next@moveto{%
\global\let\pgf@plotstreampoint=\pgf@plot@gap@lineto@handler@initial%
}%
\def\pgf@plot@gap@lineto@handler@initial#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\xdef\pgf@plot@gap@lineto@last{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\global\let\pgf@plotstreampoint=\pgf@plot@gap@lineto@handler%
}%
\def\pgf@plot@gap@lineto@handler#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\xdef\pgf@plot@gap@lineto@next{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgf@plot@gap@lineto@last}{\pgf@plot@gap@lineto@next}}}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgfpathmoveto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
around stream point}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgf@plot@gap@lineto@last}}%
\pgfpathlineto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
around stream point}}{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}}{\pgf@plot@gap@lineto@next}}%
\global\let\pgf@plot@gap@lineto@last=\pgf@plot@gap@lineto@next%
}%
\pgfdeclareplothandler{\pgfplothandlergapcycle}{}{%
point macro=\pgf@plot@gap@cycle@handler@initial,
jump macro=\pgf@plot@gapcycle@next@moveto,
end macro=\pgf@plot@gap@cycle@handler@finish,
start={\global\let\pgf@plot@gap@cycle@first\relax}
}%
\def\pgf@plot@gapcycle@next@moveto{%
\pgf@plot@gap@cycle@handler@finish%
\global\let\pgf@plot@gap@cycle@first=\relax%
\global\let\pgf@plotstreampoint=\pgf@plot@gap@cycle@handler@initial%
}%
\def\pgf@plot@gap@cycle@handler@initial#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\xdef\pgf@plot@gap@cycle@last{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\global\let\pgf@plot@gap@cycle@first=\pgf@plot@gap@cycle@last%
\global\let\pgf@plotstreampoint=\pgf@plot@gap@cycle@handler%
}%
\def\pgf@plot@gap@cycle@handler#1{%
\pgf@process{#1}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\xdef\pgf@plot@gap@cycle@next{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgf@plot@gap@cycle@last}{\pgf@plot@gap@cycle@next}}}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgfpathmoveto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
around stream point}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgf@plot@gap@cycle@last}}%
\pgfpathlineto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
around stream point}}{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}}{\pgf@plot@gap@cycle@next}}%
\global\let\pgf@plot@gap@cycle@last=\pgf@plot@gap@cycle@next%
}%
\def\pgf@plot@gap@cycle@handler@finish{%
\ifx\pgf@plot@gap@cycle@first\relax%
\else
\pgf@plot@gap@cycle@handler{\pgf@plot@gap@cycle@first}%
\fi
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryplothandlers.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmath.code.tex ====
\ifx\pgfmathloaded\pgfutil@undefined
\let\pgfmathloaded=\relax
\else
\expandafter\endinput
\fi
\ifx\pgfkeysloaded\pgfutil@undefined
\input pgfkeys.code.tex
\fi
\input pgfmathutil.code.tex
\input pgfmathparser.code.tex
\input pgfmathfunctions.code.tex
\input pgfmathfunctions.basic.code.tex
\input pgfmathfunctions.trigonometric.code.tex
\input pgfmathfunctions.random.code.tex
\input pgfmathfunctions.comparison.code.tex
\input pgfmathfunctions.base.code.tex
\input pgfmathfunctions.round.code.tex
\input pgfmathfunctions.misc.code.tex
\input pgfmathfunctions.integerarithmetics.code.tex
\input pgfmathcalc.code.tex
\input pgfmathfloat.code.tex
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmath.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathcalc.code.tex ====
\def\pgfmathsetlength#1#2{%
\expandafter\pgfmath@onquick#2\pgfmath@%
{%
\begingroup%
\pgfmath@selectfont%
#1#2\unskip%
\expandafter\endgroup%
\expandafter#1\the#1\relax%
}%
{%
\pgfmathparse{#2}%
\ifpgfmathmathunitsdeclared%
#1\pgfmathresult mu\relax%
\else%
#1\pgfmathresult pt\relax%
\fi%
}%
\ignorespaces%
}
\def\pgfmathaddtolength#1#2{%
\expandafter\pgfmath@onquick#2\pgfmath@%
{%
\begingroup%
\pgfmath@selectfont%
\advance#1#2\unskip%
\expandafter%
\endgroup%
\expandafter#1\the#1\relax%
}%
{%
\pgfmathparse{#2}%
\ifpgfmathmathunitsdeclared%
\advance#1\pgfmathresult mu\relax%
\else%
\advance#1\pgfmathresult pt\relax%
\fi%
}%
\ignorespaces%
}
\def\pgfmathsetcount#1#2{%
\expandafter\pgfmath@onquick#2\pgfmath@%
{%
\afterassignment\pgfmath@gobbletilpgfmath@%
#1#2\relax\pgfmath@%
}%
{%
\pgfmathparse{#2}%
\afterassignment\pgfmath@gobbletilpgfmath@%
#1\pgfmathresult\relax\pgfmath@%
}%
\ignorespaces%
}
\def\pgfmathaddtocount#1#2{%
\expandafter\pgfmath@onquick#2\pgfmath@%
{%
\edef\pgfmath@addtocounttemp{\the#1}%
\afterassignment\pgfmath@gobbletilpgfmath@%
#1#2\relax\pgfmath@%
\advance#1\pgfmath@addtocounttemp\relax%
}%
{%
\edef\pgfmath@addtocounttemp{\the#1}%
\pgfmathparse{#2}%
\afterassignment\pgfmath@gobbletilpgfmath@%
#1\pgfmathresult\relax\pgfmath@%
\advance#1\pgfmath@addtocounttemp\relax%
}%
\ignorespaces%
}
\def\pgfmathnewcounter#1{%
\expandafter\ifx\csname c@#1\endcsname\relax%
\def\pgfmath@marshal{\csname newcount\endcsname}%
\expandafter\pgfmath@marshal\csname c@#1\endcsname%
\expandafter\def\csname the#1\endcsname{\expandafter\the\csname c@#1\endcsname}%
\fi%
}
\def\pgfmathsetcounter#1#2{%
\expandafter\pgfmathsetcount\csname c@#1\endcsname{#2}%
}
\def\pgfmathaddtocounter#1#2{%
\expandafter\pgfmathaddtocount\csname c@#1\endcsname{#2}%
}
\def\pgfmath@pgftext{pgf}
\def\pgfmath@tikztext{tikz}
\def\pgfmathmakecounterglobal#1{%
\pgfmath@ifundefined{c@#1}{}{%
\expandafter\pgfmath@in@\expandafter{\pgfmath@pgftext}{#1}%
\ifpgfmath@in@%
\else%
\expandafter\pgfmath@in@\expandafter{\pgfmath@tikztext}{#1}%
\ifpgfmath@in@%
\else%
\expandafter\global\csname c@#1\endcsname\csname c@#1\endcsname\relax%
\fi%
\fi%
}%
}
\def\pgfmathsetmacro#1#2{%
\begingroup%
\pgfmathparse{#2}%
\let#1=\pgfmathresult
\pgfmath@smuggleone{#1}%
\endgroup%
}
\def\pgfmathsetlengthmacro#1#2{%
\begingroup%
\pgfmathsetlength\pgfmath@x{#2}%
\edef#1{\the\pgfmath@x}%
\pgfmath@smuggleone{#1}%
\endgroup%
}
\def\pgfmathtruncatemacro#1#2{%
\begingroup%
\pgfmathsetcount\c@pgfmath@counta{#2}%
\edef#1{\the\c@pgfmath@counta}%
\pgfmath@smuggleone{#1}%
\endgroup%
}
\def\pgfmath@onquick{%
\futurelet\pgfmath@next%
\pgfmath@@onquick}
\def\pgfmath@@onquick#1\pgfmath@{%
\ifx\pgfmath@next+%
\let\pgfmath@next=\pgfmath@firstoftwo%
\else%
\let\pgfmath@next=\pgfmath@secondoftwo%
\fi%
\pgfmath@next%
}
\def\pgfmathanglebetweenpoints#1#2{%
\begingroup%
\pgf@process{\pgfpointdiff{#1}{#2}}%
\edef\pgf@marshall{\expandafter\noexpand\csname pgfmathatan2@\endcsname{\expandafter\Pgf@geT\the\pgf@y}{\expandafter\Pgf@geT\the\pgf@x}}%
\pgf@marshall%
\ifdim\pgfmathresult pt<0pt%
\pgfmathparse{\pgfmathresult+360}%
\fi%
\expandafter%
\endgroup\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult}%
}
\def\pgfmathrotatepointaround#1#2#3{%
\pgf@process{%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@process{#2}%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
\pgf@xb\pgf@x%
\pgf@yb\pgf@y%
\pgf@x=\pgf@xc%
\pgf@y=\pgf@yc%
\advance\pgf@x-\pgf@xa%
\advance\pgf@y-\pgf@ya%
\pgfmathsetmacro\angle{#3}%
\pgfmathsin@{\angle}%
\let\sineangle\pgfmathresult%
\pgfmathcos@{\angle}%
\let\cosineangle\pgfmathresult%
\pgf@xa\cosineangle\pgf@x%
\advance\pgf@xa-\sineangle\pgf@y%
\pgf@ya\sineangle\pgf@x%
\advance\pgf@ya\cosineangle\pgf@y%
\pgf@x\pgf@xb%
\pgf@y\pgf@yb%
\advance\pgf@x\pgf@xa%
\advance\pgf@y\pgf@ya%
}%
}
\def\pgfmathanglebetweenlines#1#2#3#4{%
\begingroup%
\pgfmathanglebetweenpoints{#1}{#2}%
\let\firstangle\pgfmathresult%
\pgfmathanglebetweenpoints{#3}{#4}%
\let\secondangle\pgfmathresult%
\ifdim\firstangle pt>\secondangle pt\relax%
\pgfmathadd@{\secondangle}{360}%
\let\secondangle\pgfmathresult%
\fi%
\pgfmathsubtract@{\secondangle}{\firstangle}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\def\pgfmathreflectpointalongaxis#1#2#3{%
\pgf@process{%
\pgfmathanglebetweenpoints{#2}{#1}%
\pgfmath@tempdima\pgfmathresult pt\relax%
\pgfmathparse{#3}%
\advance\pgfmath@tempdima-\pgfmathresult pt\relax%
\pgfmath@tempdima-2.0\pgfmath@tempdima%
\pgfmathrotatepointaround{#1}{#2}{\pgfmath@tonumber{\pgfmath@tempdima}}%
}%
}
\def\pgfmathpointintersectionoflineandarc#1#2#3#4#5#6{%
\pgf@process{%
\pgfmathanglebetweenpoints{#2}{#1}%
\let\x\pgfmathresult%
\pgfmath@in@{and }{#6}%
\ifpgfmath@in@%
\pgf@polar@#6\@@%
\else%
\pgf@polar@#6 and #6\@@%
\fi%
\edef\xarcradius{\the\pgf@x}%
\edef\yarcradius{\the\pgf@y}%
\pgfmathsetmacro\s{#4}%
\pgfmathsetmacro\e{#5}%
\pgfmathmod@{\s}{360}%
\ifdim\pgfmathresult pt<0pt\relax%
\pgfmathadd@{\pgfmathresult}{360}%
\fi%
\let\ss\pgfmathresult%
\pgfmathmod@{\e}{360}%
\ifdim\pgfmathresult pt<0pt\relax%
\pgfmathadd@{\pgfmathresult}{360}%
\fi%
\let\ee\pgfmathresult%
\ifdim\ee pt<\ss pt\relax%
\pgfmathadd@{\x}{180}%
\pgfmathmod@{\pgfmathresult}{360}%
\let\x\pgfmathresult%
\fi%
\def\m{360}%
\pgfmathadd@{\s}{\e}%
\pgfmathdivide@{\pgfmathresult}{2}%
\let\n\pgfmathresult%
\pgfmathloop%
\pgfmathadd@{\s}{\e}%
\pgfmathdivide@{\pgfmathresult}{2}%
\let\p\pgfmathresult%
\ifdim\p pt=\s pt\relax%
\else%
\pgfmathanglebetweenpoints{#2}{%
\pgfpointadd{#3}{%
\pgf@x\xarcradius\relax%
\pgfmathcos@{\p}%
\pgf@x\pgfmathresult\pgf@x%
\pgf@y\yarcradius\relax%
\pgfmathsin@{\p}%
\pgf@y\pgfmathresult\pgf@y%
}%
}%
\ifdim\ee pt<\ss pt\relax%
\pgfmathadd@{\pgfmathresult}{180}%
\pgfmathmod@{\pgfmathresult}{360}%
\fi%
\let\q\pgfmathresult%
\ifdim\x pt>335pt\relax%
\ifdim\q pt<45pt\relax%
\pgfmathadd@{\q}{360}%
\let\q\pgfmathresult%
\fi%
\fi%
\ifdim\x pt=\q pt%
\pgfmathbreakloop%
\else
\ifdim\x pt<\q pt\relax%
\let\e\p%
\else%
\let\s\p%
\fi%
\fi%
\pgfmathsubtract@{\x}{\q}%
\pgfmathabs@{\pgfmathresult}%
\ifdim\pgfmathresult pt<\m pt\relax%
\let\m\pgfmathresult%
\let\n\p%
\fi%
\repeatpgfmathloop%
\pgfpointadd{#3}{\pgfpointpolar{\n}{\xarcradius and \yarcradius}}%
}%
}
\def\pgfmathangleonellipse#1#2{%
\begingroup%
\pgfmath@in@{and }{#2}%
\ifpgfmath@in@%
\pgf@polar@#2\@@%
\else%
\pgf@polar@#2 and #2\@@%
\fi%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
\pgf@process{#1}%
\ifdim\pgf@x=0pt\relax%
\pgfutil@tempdima1pt\relax%
\else%
\pgfutil@tempdima\pgf@x%
\pgfmathdivide@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgfutil@tempdima}}%
\pgfutil@tempdima\pgfmathresult pt\relax%
\fi%
\ifdim\pgf@y=0pt\relax%
\pgfutil@tempdima1pt\relax%
\else%
\pgfmathdivide@{\pgfmath@tonumber{\pgf@y}}{\pgfmath@tonumber{\pgf@ya}}%
\pgfutil@tempdima\pgfmathresult\pgfutil@tempdima%
\pgfmathatan@{\pgfmath@tonumber{\pgfutil@tempdima}}%
\fi%
\pgfutil@tempdima\pgfmathresult pt\relax%
\ifdim\pgfutil@tempdima<0pt\relax%
\advance\pgfutil@tempdima360pt\relax%
\fi%
\ifdim\pgf@x<0pt\relax%
\ifdim\pgf@y=0pt\relax%
\pgfutil@tempdima180pt\relax%
\else%
\ifdim\pgf@y<0pt\relax%
\advance\pgfutil@tempdima180pt\relax%
\else%
\advance\pgfutil@tempdima-180pt\relax%
\fi%
\fi%
\else%
\ifdim\pgf@x=0pt\relax%
\ifdim\pgf@y<0pt\relax%
\pgfutil@tempdima270pt\relax%
\else%
\pgfutil@tempdima90pt\relax%
\fi%
\else%
\ifdim\pgf@y=0pt\relax%
\pgfutil@tempdima0pt\relax%
\fi%
\fi%
\fi%
\pgfmath@returnone\pgfutil@tempdima%
\endgroup%
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathcalc.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfloat.code.tex ====
\pgfkeys{
/pgf/compat/number printer/.is choice,
/pgf/compat/number printer/2.10/.code={%
\def\pgfmathprintnumber@begingroup{\bgroup}%
\def\pgfmathprintnumber@endgroup{\egroup}%
},
/pgf/compat/number printer/next after 2.10/.code={%
\def\pgfmathprintnumber@begingroup{\begingroup}%
\def\pgfmathprintnumber@endgroup{\endgroup}%
},
/pgf/compat/number printer/next after 2.10,%
}
\newif\ifpgfmathfloatcomparison
\newif\ifpgfmathfloatroundhasperiod
\newif\ifpgfmathprintnumberskipzeroperiod
\toksdef\pgfmathfloat@tmptoks=1
\newif\ifpgfmathfloat@fixed@digits@after@period
\newif\ifpgfmathfloatroundmayneedrenormalize
\toksdef\pgfmathfloat@a@Mtok=0
\let\pgfmathfloat@a@S=\c@pgf@counta
\let\pgfmathfloat@a@M=\pgf@xa
\let\pgfmathfloat@a@E=\c@pgf@countb
\let\pgfmathfloat@b@S=\c@pgf@countc
\let\pgfmathfloat@b@M=\pgf@xb
\let\pgfmathfloat@b@E=\c@pgf@countd
\def\pgfmathfloat@round@precision{2}
\def\pgfmathfloat@round@precision@orig{\pgfmathfloat@round@precision}%
\gdef\pgfmathfloat@glob@TMP{}
\def\pgfmathfloatparsenumber#1{%
\begingroup
\edef\pgfmathresult{#1}%
\expandafter\pgfflt@impl\pgfmathresult\pgfflt@EOI
\ifpgfmathfloatparsenumberpendingperiod
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.0}%
\fi
\pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\let\pgfmathfloatqparsenumber=\pgfmathfloatparsenumber
\def\pgfmathfloattoregisters#1#2#3#4{%
\expandafter\pgfmathfloat@decompose#1\relax{#2}{#3}{#4}%
}
\def\pgfmathfloattoregisterstok#1#2#3#4{%
\expandafter\pgfmathfloat@decompose@tok#1\relax{#2}{#3}{#4}%
}
\def\pgfmathfloatgetflags#1#2{%
\expandafter\pgfmathfloat@decompose@F#1\relax{#2}%
}
\def\pgfmathfloatgetflagstomacro#1#2{%
\expandafter\pgfmathfloat@decompose@Fmacro#1\relax{#2}%
}%
\def\pgfmathfloatgetmantissa#1#2{%
\expandafter\pgfmathfloat@decompose@M#1\relax{#2}%
}
\let\pgfmathfloatgetmantisse=\pgfmathfloatgetmantissa
\def\pgfmathfloatgetmantissatok#1#2{%
\expandafter\pgfmathfloat@decompose@Mtok#1\relax{#2}%
}
\let\pgfmathfloatgetmantissetok=\pgfmathfloatgetmantissatok
\def\pgfmathfloatgetexponent#1#2{%
\expandafter\pgfmathfloat@decompose@E#1\relax{#2}%
}
\def\pgfmathfloat@to@FMeE@style#1{\expandafter\pgfmathfloat@to@FMeE@style@#1\relax\relax}%
\def\pgfmathfloat@to@FMeE@style@#1#2{%
\ifx#2Y%
\expandafter\pgfmathfloat@to@FMeE@style@@%
\else
\expandafter\pgfmathfloat@to@FMeE@style@error%
\fi
#1#2%
}%
\def\pgfmathfloat@to@FMeE@style@@#1Y#2e#3]\relax\relax{\def\pgfmathresult{#1#2e#3}}%
\def\pgfmathfloat@to@FMeE@style@error#1\relax\relax{%
\begingroup
\pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
\xdef\pgfmathfloat@decompose@TMP{%
\noexpand\pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
}%
\endgroup
\pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose#1#2{%
\ifx#2Y%
\expandafter\pgfmathfloat@decompose@%
\else
\expandafter\pgfmathfloat@decompose@error%
\fi
#1#2%
}
\def\pgfmathfloat@decompose@#1Y#2e#3]\relax#4#5#6{%
#4=#1\relax
#5=#2pt %
#6=#3\relax%
}
\def\pgfmathfloat@decompose@tok#1#2{%
\ifx#2Y%
\expandafter\pgfmathfloat@decompose@tok@%
\else
\expandafter\pgfmathfloat@decompose@tok@error%
\fi
#1#2%
}%
\def\pgfmathfloat@decompose@tok@#1Y#2e#3]\relax#4#5#6{%
#4=#1\relax
#5={#2}%
#6=#3\relax%
}
\def\pgfmathfloat@decompose@F#1#2{%
\ifx#2Y%
\expandafter\pgfmathfloat@decompose@F@%
\else
\expandafter\pgfmathfloat@decompose@F@error%
\fi
#1#2%
}%
\def\pgfmathfloat@decompose@Fmacro#1#2{%
\ifx#2Y%
\expandafter\pgfmathfloat@decompose@Fmacro@%
\else
\expandafter\pgfmathfloat@decompose@F@error%
\fi
#1#2%
}%
\def\pgfmathfloat@decompose@M#1#2{%
\ifx#2Y%
\expandafter\pgfmathfloat@decompose@M@%
\else
\expandafter\pgfmathfloat@decompose@M@error%
\fi
#1#2%
}%
\def\pgfmathfloat@decompose@E#1#2{%
\ifx#2Y%
\expandafter\pgfmathfloat@decompose@E@%
\else
\expandafter\pgfmathfloat@decompose@E@error%
\fi
#1#2%
}%
\def\pgfmathfloat@decompose@Mtok#1#2{%
\ifx#2Y%
\expandafter\pgfmathfloat@decompose@Mtok@%
\else
\expandafter\pgfmathfloat@decompose@Mtok@error%
\fi
#1#2%
}%
\def\pgfmathfloat@decompose@F@#1Y#2e#3]\relax#4{#4=#1\relax}%
\def\pgfmathfloat@decompose@Fmacro@#1Y#2e#3]\relax#4{\def#4{#1}}%
\def\pgfmathfloat@decompose@M@#1Y#2e#3]\relax#4{#4=#2pt}%
\def\pgfmathfloat@decompose@Mtok@#1Y#2e#3]\relax#4{#4={#2}}%
\def\pgfmathfloat@decompose@E@#1Y#2e#3]\relax#4{#4=#3\relax}%
\def\pgfmathfloat@decompose@error#1\relax#2#3#4{%
\begingroup
\pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
\xdef\pgfmathfloat@decompose@TMP{%
\noexpand#2=\the\pgfmathfloat@a@S\space
\noexpand#3=\the\pgfmathfloat@a@Mtok pt
\noexpand#4=\the\pgfmathfloat@a@E\space
}%
\endgroup
\pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@tok@error#1\relax#2#3#4{%
\begingroup
\pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
\xdef\pgfmathfloat@decompose@TMP{%
\noexpand#2=\the\pgfmathfloat@a@S\space
\noexpand#3={\the\pgfmathfloat@a@Mtok}%
\noexpand#4=\the\pgfmathfloat@a@E\space
}%
\endgroup
\pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@F@error#1\relax#2{%
\begingroup
\pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
\xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@S\space}%
\endgroup
\pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@M@error#1\relax#2{%
\begingroup
\pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
\xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@Mtok pt }%
\endgroup
\pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@Mtok@error#1\relax#2{%
\begingroup
\pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
\xdef\pgfmathfloat@decompose@TMP{\noexpand#2={\the\pgfmathfloat@a@Mtok}}%
\endgroup
\pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@E@error#1\relax#2{%
\begingroup
\pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
\xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@E\space}%
\endgroup
\pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloattomacro#1#2#3#4{%
\begingroup
\expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\xdef\pgfmathfloat@glob@TMP{%
\noexpand\def\noexpand#2{\the\pgfmathfloat@a@S}%
\noexpand\def\noexpand#3{\the\pgfmathfloat@a@Mtok}%
\noexpand\def\noexpand#4{\the\pgfmathfloat@a@E}%
}%
\endgroup
\pgfmathfloat@glob@TMP
}
\def\pgfmathfloatcreate#1#2#3{%
\edef\pgfmathresult{#1Y#2e#3]}%
}%
\def\pgfmathfloat@POSTFLAGSCHAR{Y}
\def\pgfmathfloattofixed@#1{%
\begingroup
\expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\ifcase\pgfmathfloat@a@S
\def\pgfmathresult{0.0}%
\or
\expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
\or
\expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
\pgfmathfloat@a@Mtok=\expandafter{\pgfmathresult}%
\edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok}%
\or\def\pgfmathresult{nan}%
\or\def\pgfmathresult{inf}%
\or\def\pgfmathresult{-inf}%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\let\pgfmathfloattofixed=\pgfmathfloattofixed@
\def\pgfmathfloattoint#1{%
\pgfmathfloattofixed{#1}%
\expandafter\pgfmathfloattoint@@\pgfmathresult\relax
}%
\def\pgfmathfloattoint@@#1.#2\relax{%
\def\pgfmathresult{#1}%
}%
\def\pgfmathfloattosci@#1{%
\begingroup
\expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\ifcase\pgfmathfloat@a@S
\def\pgfmathresult{0.0e0}%
\or
\edef\pgfmathresult{\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
\or
\edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
\or\def\pgfmathresult{nan}%
\or\def\pgfmathresult{inf}%
\or\def\pgfmathresult{-inf}%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}%
\let\pgfmathfloattosci=\pgfmathfloattosci@
\def\pgfmathfloatvalueof#1{\expandafter\pgfmathfloatvalueof@@#1@@}%
\def\pgfmathfloatvalueof@@#1#2{%
\if#2Y%
\expandafter\pgfmathfloatvalueof@@@\expandafter#1\expandafter#2%
\else
\expandafter\pgfmathfloatvalueof@abort\expandafter#1\expandafter#2%
\fi
}
\def\pgfmathfloatvalueof@@@#1Y#2e#3]@@{%
\ifcase#1 %
0.0e0%
\or
#2e#3%
\or
-#2e#3%
\or nan%
\or inf%
\or -inf%
\fi
}%
\def\pgfmathfloatvalueof@abort#1@@{#1}%
\def\pgfmathroundto#1{%
\pgfmathfloatroundhasperiodtrue
\begingroup
\pgfmathfloat@fixed@digits@after@periodfalse
\pgfmathroundto@impl{#1}%
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathroundtozerofill#1{%
\pgfmathfloatroundhasperiodtrue
\begingroup
\pgfmathfloat@fixed@digits@after@periodtrue
\pgfmathroundto@impl{#1}%
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathprintnumber@fixed@styleDEFAULT#1#2#3e#4\relax{%
\begingroup
\pgfkeysgetvalue{/pgf/number format/set decimal separator}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP
\pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
\pgfkeysgetvalue{/pgf/number format/set thousands separator}\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP
\c@pgf@counta=#4\relax %
\ifnum#2=0
\c@pgf@counta=0
\fi
\def\pgfmathresult{}%
\ifpgfmathfloatroundhasperiod
\expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1\pgfmathfloat@EOI
\else
\expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI%
\begingroup
\toks0=\expandafter{\pgfmathresult}%
\toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
\xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
\endgroup
\let\pgfmathresult=\pgfmathfloat@glob@TMP
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1.#2\pgfmathfloat@EOI{%
\ifpgfmathprintnumberskipzeroperiod
\def\pgfmathfloat@loc@TMPb{#1}%
\ifx\pgfmathfloatparsenumber@tok@ZERO\pgfmathfloat@loc@TMPb
\else
\def\pgfmathfloat@loc@TMPc{-0}%
\ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
\def\pgfmathresult{-}%
\else
\def\pgfmathfloat@loc@TMPc{+0}%
\ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
\def\pgfmathresult{+}%
\else
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
\fi
\fi
\fi
\else
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
\fi
\ifpgfmathprintnumber@thousand@sep@in@fractional
\let\pgfmathresultfractional\pgfutil@empty%
\pgfmathprintnumber@thousand@sep@in@fractional#2MMMM\@@
\else
\def\pgfmathresultfractional{#2}%
\fi
\begingroup
\toks0=\expandafter{\pgfmathresult}%
\toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
\toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}%
\toks3=\expandafter{\pgfmathresultfractional}%
\xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 \the\toks3 }%
\endgroup
\let\pgfmathresult=\pgfmathfloat@glob@TMP
}%
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod{%
\ifx\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP\pgfutil@empty
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
\else
\ifnum\c@pgf@counta<0\relax %
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
\else
\ifnum\c@pgf@counta<\pgfkeysvalueof{/pgf/number format/min exponent for 1000 sep}\relax
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
\else
\advance\c@pgf@counta by1 %
\c@pgf@countb=\c@pgf@counta
\divide\c@pgf@countb by3 %
\c@pgf@countc=\c@pgf@countb
\multiply\c@pgf@countc by3
\advance\c@pgf@counta by-\c@pgf@countc%
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign
}%
\fi
\fi
\fi
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign#1{%
\def\pgfmathfloat@loc@TMPb{#1}%
\ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
\let\pgfmathfloat@loc@TMPb=\pgfutil@empty
\else
\ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
\let\pgfmathfloat@loc@TMPb=\pgfutil@empty
\else
\ifpgfmathprintnumber@showpositive
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult +}%
\fi
\fi
\fi
\ifnum\c@pgf@counta>0 %
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits\pgfmathfloat@loc@TMPb
}%
\else
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird\pgfmathfloat@loc@TMPb
}%
\fi
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits#1#2{%
\ifcase\c@pgf@counta %
\or
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#2%
}%
\or
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2}%
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
}%
\fi
\ifnum\c@pgf@countb>0\relax %
\begingroup
\toks0=\expandafter{\pgfmathresult}%
\toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
\xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
\endgroup
\let\pgfmathresult=\pgfmathfloat@glob@TMP
\fi
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#1#2#3{%
\ifnum\c@pgf@countb>0\relax
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2#3}%
\advance\c@pgf@countb by-1
\ifnum\c@pgf@countb>0\relax
\begingroup
\toks0=\expandafter{\pgfmathresult}%
\toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
\xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
\endgroup
\let\pgfmathresult=\pgfmathfloat@glob@TMP
\fi
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
}%
\else
\let\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT=\relax
\fi
\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@thousand@sep@in@fractional#1#2#3#4{%
\if#4M%
\def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional@finish#1#2#3#4}%
\else
\begingroup
\toks0=\expandafter{\pgfmathresultfractional}%
\toks1={#1#2#3}%
\toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
\xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
\endgroup
\let\pgfmathresultfractional=\pgfmathfloat@glob@TMP
\def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional#4}%
\fi
\pgfmathprint@next
}%
\def\pgfmathprintnumber@thousand@sep@in@fractional@finish#1M{%
\expandafter\def\expandafter\pgfmathresultfractional\expandafter{\pgfmathresultfractional #1}%
\pgfmathprintnumber@thousand@sep@in@fractional@finish@
}%
\def\pgfmathprintnumber@thousand@sep@in@fractional@finish@#1\@@{}%
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall#1{%
\def\pgfmathfloat@loc@TMPb{#1}%
\let\pgfmathfloat@loc@TMPc=\pgfutil@empty
\ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
\else
\ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
\else
\ifpgfmathprintnumber@showpositive
\def\pgfmathfloat@loc@TMPc{+}%
\fi
\fi
\fi
\expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@\pgfmathfloat@loc@TMPc#1%
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI{%
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
}%
\def\pgfmathprintnumber@fixed@stylePERIOD#1#2#3e#4\relax{%
\def\pgfmathresult{#1}%
}
\def\pgfmathprintnumber@fixed@styleCOMMA#1#2#3e#4\relax{%
\ifpgfmathfloatroundhasperiod
\expandafter\pgfmathprintnumber@fixed@styleCOMMA@impl#1\pgfmathfloat@EOI
\else
\def\pgfmathresult{#1}%
\fi
}
\def\pgfmathprintnumber@fixed@styleCOMMA@impl#1.#2\pgfmathfloat@EOI{\def\pgfmathresult{#1{,}#2}}
\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT
\def\pgfmathfloatround#1{%
\pgfmathfloatroundhasperiodtrue
\begingroup
\pgfmathfloat@fixed@digits@after@periodfalse
\expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\pgfmathfloatround@impl
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathfloatroundzerofill#1{%
\pgfmathfloatroundhasperiodtrue
\begingroup
\pgfmathfloat@fixed@digits@after@periodtrue
\expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\pgfmathfloatround@impl
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\newif\ifpgfmathfloatround@allow@empty@mantissa
\def\pgfmathfloatround@mantissa@ONE{1pt }%
\def\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax#4#5#6{%
\pgfkeysgetvalue{/pgf/number format/@sci exponent mark}\pgfmathfloatrounddisplaystyle@e@mark
\ifcase#1\relax
\pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
\expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
\or
\def\pgfmathfloat@loc@TMPa{1}%
\ifpgfmathfloatround@allow@empty@mantissa
\else
\ifdim#2pt=\pgfmathfloatround@mantissa@ONE
\def\pgfmathfloat@loc@TMPa{0}%
\fi
\fi
\if1\pgfmathfloat@loc@TMPa
\pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
\expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
\else
\def\pgfmathfloat@loc@TMPa{0}%
\pgfmathfloatrounddisplaystyle@shared@impl@{#5}{#6}%
\fi
\or
\def\pgfmathfloat@loc@TMPa{1}%
\ifpgfmathfloatround@allow@empty@mantissa
\else
\ifdim#2pt=\pgfmathfloatround@mantissa@ONE
\def\pgfmathfloat@loc@TMPa{0}%
\fi
\fi
\if1\pgfmathfloat@loc@TMPa
\pgfmathprintnumber@fixed@style{-#2}#1#2e0\relax%
\expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
\else
\def\pgfmathfloat@loc@TMPa{0}%
\pgfmathfloatrounddisplaystyle@shared@impl@{-#5}{#6}%
\fi
\or
\pgfmathfloatrounddisplaystyle@shared@impl@@{\hbox{NaN}}{}%
\or
\ifpgfmathprintnumber@showpositive
\pgfmathfloatrounddisplaystyle@shared@impl@@{+\infty}{}%
\else
\pgfmathfloatrounddisplaystyle@shared@impl@@{\infty}{}%
\fi
\or
\pgfmathfloatrounddisplaystyle@shared@impl@@{-\infty}{}%
\fi
}
\def\pgfmathfloatrounddisplaystyle@shared@impl@#1#2{%
\pgfmathprintnumber@begingroup
\toks0={#1}%
\toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
\xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
\pgfmathprintnumber@endgroup
\let\pgfmathresult=\pgfmathfloat@glob@TMP
}%
\def\pgfmathfloatrounddisplaystyle@shared@impl@@#1#2{%
\pgfmathprintnumber@begingroup
\toks0={#1}%
\toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
\pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
\toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
\xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
\pgfmathprintnumber@endgroup
\let\pgfmathresult=\pgfmathfloat@glob@TMP
}
\def\pgfmathfloatrounddisplaystyle@std#1#2e#3\relax{%
\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{\cdot}{}{10^{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@subscript#1#2e#3\relax{%
\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{_{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@superscript#1#2e#3\relax{%
\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{^{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@e#1#2e#3\relax{%
\ifnum#3<0\relax
\pgfmathprintnumber@begingroup
\count0=#3\relax
\multiply\count0 by-1
\xdef\pgfmathfloat@glob@TMP{e{-}\the\count0}%
\pgfmathprintnumber@endgroup%
\let\pgfmathresult=\pgfmathfloat@glob@TMP
\else
\def\pgfmathresult{e{+}#3}%
\fi
\def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
\expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
}
\def\pgfmathfloatrounddisplaystyle@E#1#2e#3\relax{%
\ifnum#3<0\relax
\pgfmathprintnumber@begingroup
\count0=#3\relax
\multiply\count0 by-1
\xdef\pgfmathfloat@glob@TMP{E{-}\the\count0}%
\pgfmathprintnumber@endgroup%
\let\pgfmathresult=\pgfmathfloat@glob@TMP
\else
\def\pgfmathresult{E{+}#3}%
\fi
\def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
\expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
}
\def\pgfmathfloatrounddisplaystyle@generic#1#2e#3\relax{%
\begingroup
\pgfkeysvalueof {/pgf/number format/sci generic/@/.@cmd}{#3}{#1}{#2}\pgfeov
\pgfkeysgetvalue{/pgf/number format/sci generic/mantissa sep}\pgfmathdisplay@aftermantissa
\pgfkeysgetvalue{/pgf/number format/sci generic/empty mantissa sep}\pgfmathdisplay@nomantissa
\pgfkeysgetvalue{/pgf/number format/sci generic/exponent}\pgfmathdisplay@e
\toks0=\expandafter{\pgfmathdisplay@aftermantissa}%
\toks1=\expandafter{\pgfmathdisplay@nomantissa}%
\toks2=\expandafter{\pgfmathdisplay@e}%
\xdef\pgfmathfloat@glob@TMP{\noexpand\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\noexpand\relax{\the\toks0}{\the\toks1}{\the\toks2}}%
\endgroup
\pgfmathfloat@glob@TMP
}
\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std
\newif\ifpgfmathfloat@usezerofill@sci
\newif\ifpgfmathfloat@usezerofill@fixed
\newif\ifpgfmathprintnumber@assumemathmode
\newif\ifpgfmathprintnumber@showpositive
\newif\ifpgfmathprintnumber@frac@warn
\newif\ifpgfmathprintnumber@frac@whole
\newif\ifpgfmathparsenumber@comma@as@period
\long\def\pgfmathfloatfrac@verbatim#1#2{#1/#2}%
\let\pgfmathround@@orig=\pgfmathround@
\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{2}%
\newif\ifpgfmathprintnumber@thousand@sep@in@fractional
\pgfkeys{%
/pgf/number format/.is family,
/pgf/number format,
fixed/.code= \pgfmath@set@number@printer{pgfmathprintnumber@FIXED},
sci/.code= \pgfmath@set@number@printer{pgfmathprintnumber@SCI},
std/.code= {\pgfmath@set@number@printer{pgfmathprintnumber@STD}\pgfmathprintnumber@STD@setparam{#1}},
std/.default=,%
relative round mode/.is choice,
relative round mode/fixed/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{1}},
relative round mode/mantissa/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{0}},
relative round mode/compatible/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{2}},
relative/.code={%
\pgfmath@set@number@printer{pgfmathprintnumber@RELATIVE}%
\pgfmathround@@orig{#1}%
\expandafter\pgfmathfloattoint@@\pgfmathresult\relax
\let\pgfmathprintnumber@RELATIVE@param=\pgfmathresult
},%
relative/.value required,
relative*/.style={/pgf/number format/relative={#1},/pgf/number format/relative round mode=fixed},
every relative/.style=std,
relative style/.style={/pgf/number format/every relative/.append style={#1}},
fixed relative/.code= \pgfmath@set@number@printer{pgfmathprintnumber@FIXED@RELATIVE},
int detect/.code= \pgfmath@set@number@printer{pgfmathprintnumber@INT@DETECT},
int trunc/.code= \pgfmath@set@number@printer{pgfmathprintnumber@INT@TRUNC},
frac/.code= \pgfmath@set@number@printer{pgfmathprintnumber@frac},%
frac TeX/.initial=\frac,
frac whole format/.code={\def\pgfmathresult{#1}},
frac denom/.initial=,
frac whole/.is if=pgfmathprintnumber@frac@whole,
frac whole=true,
frac shift/.initial=4,
frac warning/.is if=pgfmathprintnumber@frac@warn,
frac warning=true,
assume math mode/.is if=pgfmathprintnumber@assumemathmode,
assume math mode/.default=true,
fixed zerofill/.is if= pgfmathfloat@usezerofill@fixed,
fixed zerofill/.default=true,
sci zerofill/.is if= pgfmathfloat@usezerofill@sci,
sci zerofill/.default=true,
zerofill/.style= {/pgf/number format/fixed zerofill={#1},/pgf/number format/sci zerofill={#1}},
zerofill/.default= true,
precision/.store in= \pgfmathfloat@round@precision,
sci precision/.code={%
\edef\pgfmathfloat@loc@TMPa{#1}%
\ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
\def\pgfmathprintnumber@sci@precision{\pgfmathfloat@round@precision}%
\else
\let\pgfmathprintnumber@sci@precision=\pgfmathfloat@loc@TMPa
\fi
},%
sci precision/.default=,
sci precision=,
fixed default/.code= {\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT},
set decimal separator/.initial=,
dec sep/.style={/pgf/number format/set decimal separator={#1}},
@dec sep mark/.initial=,
@sci exponent mark/.initial=,
set thousands separator/.initial=,
1000 sep in fractionals/.is if=pgfmathprintnumber@thousand@sep@in@fractional,
1000 sep in fractionals/.default=true,
1000 sep/.style={/pgf/number format/set thousands separator={#1}},
min exponent for 1000 sep/.initial=0,
use period/.style= {/pgf/number format/set decimal separator={.},/pgf/number format/set thousands separator={{{,}}}},
use comma/.style= {/pgf/number format/set decimal separator={{{,}}},/pgf/number format/set thousands separator={.}},
showpos/.is if=pgfmathprintnumber@showpositive,
showpos/.default=true,
print sign/.is if=pgfmathprintnumber@showpositive,
print sign/.default=true,
read comma as period/.is if=pgfmathparsenumber@comma@as@period,
read comma as period/.default=true,
skip 0./.is if=pgfmathprintnumberskipzeroperiod,
skip 0./.default=true,
skip 0.= false,
use period,
sci 10^e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
sci 10e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
sci e/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@e},
sci E/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@E},
sci subscript/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@subscript},
sci superscript/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@superscript},
sci generic/.code= {%
\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@generic
\pgfkeysdefargs{/pgf/number format/sci generic/@}%
{##1##2##3}%
{\pgfqkeys{/pgf/number format/sci generic}{#1}}%
},
sci generic/mantissa sep/.initial=,%
sci generic/empty mantissa sep/.initial=,%
sci generic/mantisse sep/.style={/pgf/number format/sci generic/mantissa sep={#1}},%
sci generic/empty mantisse sep/.style={/pgf/number format/sci generic/empty mantissa sep={#1}},%
sci generic/exponent/.initial=,%
sci generic/.value required,
verbatim/.code={%
\pgfqkeys{/pgf/number format}{%
sci generic={mantissa sep=,exponent={e##1}},
1000 sep=,
skip 0.=false,
print sign=false,
dec sep=.,
assume math mode,
frac TeX=\pgfmathfloatfrac@verbatim,
frac whole format/.code={\def\pgfmathresult{##1 }},
@dec sep mark=,
@sci exponent mark=,
}%
},
retain unit mantissa/.is if=pgfmathfloatround@allow@empty@mantissa,
retain unit mantissa/.default=true,
retain unit mantissa=true,
implementation/.code={\def\pgfmathprintnumber@protected{#1}},
}
\def\pgfmathprintnumber@STD#1{%
\pgfmathfloatparsenumber{#1}%
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathprintnumber@STD@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@STD@setparam#1{%
\edef\pgfmathfloat@loc@TMPb{#1}%
\ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
\def\pgfmathprintnumber@STD@getlowerbound{%
\c@pgf@counta=\pgfmathfloat@round@precision@orig\relax
\divide\c@pgf@counta by-2\relax
}%
\def\pgfmathprintnumber@STD@upperbound{4}%
\else
\expandafter\pgfutil@in@\expandafter:\expandafter{\pgfmathfloat@loc@TMPb}%
\ifpgfutil@in@
\def\pgfmathfloat@loc@TMPa##1:##2\relax{%
\edef\pgfmathprintnumber@STD@getlowerbound{%
\noexpand\c@pgf@counta=##1\space
}%
\edef\pgfmathprintnumber@STD@upperbound{##2}%
}%
\expandafter\pgfmathfloat@loc@TMPa\pgfmathfloat@loc@TMPb\relax
\else
\def\pgfmathprintnumber@STD@upperbound{4}%
\edef\pgfmathprintnumber@STD@getlowerbound{%
\noexpand\c@pgf@counta=\pgfmathfloat@loc@TMPb\space
}%
\fi
\fi
}%
\def\pgfmathprintnumber@STD@issci#1#2e#3\relax{%
\expandafter\ifnum#1<3
\expandafter\ifnum#3>\pgfmathprintnumber@STD@upperbound\relax
\pgfmathprintnumber@SCI@issci#1#2e#3\relax%
\else
\begingroup
\pgfmathprintnumber@STD@getlowerbound
\ifnum#3<\c@pgf@counta
\pgfmathprintnumber@SCI@issci#1#2e#3\relax%
\else
\pgfmathprintnumber@FIXED@issci#1#2e#3\relax%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
\fi
\else%
\pgfmathfloatrounddisplaystyle#1#2e#3\relax%
\fi
}
\def\pgfmathprintnumber@RELATIVE#1{%
\pgfmathfloatparsenumber{#1}%
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathprintnumber@RELATIVE@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn{%
\pgf@typeout{! Package pgf warning: the use of /pgf/number format/relative is discouraged (buggy). Please use 'relative*' instead or type \string\pgfkeys{/pgf/number format/relative round mode=fixed} into your preamble.}%
\global\let\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn=\relax
}
\def\pgfmathprintnumber@RELATIVE@issci#1#2e#3\relax{%
\begingroup
\c@pgf@counta=#3\relax
\advance\c@pgf@counta by-\pgfmathprintnumber@RELATIVE@param\relax
\pgfmathfloatcreate{#1}{#2}{\the\c@pgf@counta}%
\if0\pgfmathprintnumber@RELATIVE@choice@roundtofixed
\def\b@round@fixed{0}%
\else
\if1\pgfmathprintnumber@RELATIVE@choice@roundtofixed
\def\b@round@fixed{1}%
\else
\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn
\ifnum\c@pgf@counta>0
\def\b@round@fixed{0}%
\else
\def\b@round@fixed{1}%
\fi
\fi
\fi
\if1\b@round@fixed
\pgfmathfloattofixed\pgfmathresult
\expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
\pgfmathfloatparsenumber{\pgfmathresult}%
\pgfmathfloatroundhasperiodtrue%
\else
\expandafter\pgfmathfloatround\expandafter{\pgfmathresult}%
\fi
\pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\ifnum\pgfmathfloat@a@S=0
\pgfmathfloat@a@E=\pgfmathfloat@a@S %
\else
\advance\pgfmathfloat@a@E by+\pgfmathprintnumber@RELATIVE@param\relax
\fi
\edef\pgfmathresultX{%
\the\pgfmathfloat@a@S
\the\pgfmathfloat@a@Mtok
\ifpgfmathfloatroundhasperiod\else.0\fi
e\the\pgfmathfloat@a@E}%
\pgfqkeys{/pgf/number format}{/pgf/number format/every relative,
fixed zerofill=false,%
sci zerofill=false}%
\ifx\pgfmathprintnumber@issci\pgfmathprintnumber@RELATIVE@issci
\pgfmath@error{The '/pgf/number format/every relative' style should set a valid display style}{}%
\fi
\let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
\def\pgfmathfloat@round@precision{9999}%
\expandafter\pgfmathprintnumber@issci\pgfmathresultX\relax%
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathprintnumber@FIXED@RELATIVE#1{%
\pgfmathfloatparsenumber{#1}%
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathprintnumber@FIXED@RELATIVE@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@FIXED@RELATIVE@issci#1#2e#3\relax{%
\begingroup
\pgfmathfloatcreate{#1}{#2}{#3}%
\c@pgf@counta=\pgfmathfloat@round@precision\relax
\advance\c@pgf@counta by-1
\edef\pgfmathfloat@round@precision{\the\c@pgf@counta}%
\pgfmathfloatround{\pgfmathresult}%
\pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\ifnum\pgfmathfloat@a@S=0
\pgfmathfloat@a@E=\pgfmathfloat@a@S %
\fi
\edef\pgfmathresultX{%
\the\pgfmathfloat@a@S
\the\pgfmathfloat@a@Mtok
\ifpgfmathfloatroundhasperiod\else.0\fi
e\the\pgfmathfloat@a@E}%
\let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
\pgfmathfloat@usezerofill@fixedfalse
\def\pgfmathfloat@round@precision{9999}%
\expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresultX\relax%
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathprintnumber@frac#1{%
\pgfmathfloatparsenumber{#1}%
\pgfmathfloatgetfrac{\pgfmathresult}%
\expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
}
\def\pgfmathprintnumber@frac@issci#1#2e#3\relax{%
\pgfmathfloatcreate{#1}{#2}{#3}%
\pgfmathfloatgetfrac{\pgfmathresult}%
\expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
}
\def\pgfmathprintnumber@frac@formatresult#1#2#3{%
\begingroup
\pgfkeysgetvalue{/pgf/number format/frac TeX}\pgfmathresult
\toks0=\expandafter{\pgfmathresult}%
\def\pgfmathfloat@loc@TMPa{#1}%
\ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
\ifpgfmathprintnumber@showpositive
\def\pgfmathfloat@loc@TMPa{+}%
\fi
\else
\ifx\pgfmathfloat@loc@TMPa-%
\else
\ifx\pgfmathfloat@loc@TMPa+%
\else
\ifpgfmathprintnumber@showpositive
\edef\pgfmathfloat@loc@TMPa{+\pgfmathfloat@loc@TMPa}%
\fi
\def\pgfmathfloat@loc@TMPb{\pgfkeysvalueof{/pgf/number format/frac whole format/.@cmd}}%
\expandafter\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPa\pgfeov
\let\pgfmathfloat@loc@TMPa=\pgfmathresult
\fi
\fi
\fi
\toks1=\expandafter{\pgfmathfloat@loc@TMPa}%
\edef\pgfmathresult{%
\the\toks1 \ifnum#2=0 \else\the\toks0 {#2}{#3}\fi%
}%
\pgfmath@smuggleone\pgfmathresult
\endgroup
}%
\def\pgfmathfloatgetfrac#1{%
\pgfutil@ifundefined{pgfmathfloatmultiply@}{%
\pgfmath@error{Sorry, the number format 'frac' requires '\string\usetikzlibrary{fpu}' (and, optionally, \string\usepackage{fp}) in order to work correctly}{}%
\edef\pgfmathresult{{#1}{0}{1}}%
}{%
\pgfmathfloatgetfrac@{#1}%
}%
}%
\def\pgfmathfloatgetfrac@#1{%
\begingroup
\edef\pgfmathfloat@arg{#1}%
\expandafter\pgfmathfloat@decompose@tok\pgfmathfloat@arg\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\def\pgfmathfloat@loc@TMPa{0}%
\ifcase\pgfmathfloat@a@S
\def\pgfmathresult{{0}{0}{1}}%
\or%
\pgfmathfloat@a@S=1
\def\pgfmathfloat@loc@TMPa{1}%
\or%
\pgfmathfloat@a@S=-1
\def\pgfmathfloat@loc@TMPa{1}%
\or
\edef\pgfmathresult{{}{NaN}{1}}%
\or
\edef\pgfmathresult{{}{\infty}{1}}%
\or
\edef\pgfmathresult{{-}{\infty}{1}}%
\fi
\if1\pgfmathfloat@loc@TMPa
\ifnum\pgfmathfloat@a@E<0
\def\pgfmathfloat@wholenumber{}%
\else
\pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
\pgfmathfloattofixed\pgfmathresult%
\def\pgfmathfloat@loc@TMPa##1.##2\relax{%
\def\pgfmathfloat@wholenumber{##1}%
\pgfmathfloatparsenumber{0.##2}%
}%
\expandafter\pgfmathfloat@loc@TMPa\pgfmathresult\relax
\expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@b@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\fi
\def\pgfmathfloat@loc@TMPa##1.##2\relax{%
\def\pgfmathfloat@mantissa@first{##1}%
\def\pgfmathfloat@mantissa@ltone{0.##2}%
}%
\expandafter\pgfmathfloat@loc@TMPa\the\pgfmathfloat@a@Mtok\relax
\def\pgfmathfloat@loc@@to@int##1.##2\relax##3{%
##3=##1
\ifdim0.##2pt>0.5pt
\advance##3 by1
\fi
}%
\let\pgfmathresultnumerator=\pgfmathfloat@b@S
\let\pgfmathresultdenom=\pgfmathfloat@b@E
\pgfkeysgetvalue{/pgf/number format/frac denom}\pgfmath@target@denominator
\ifx\pgfmath@target@denominator\pgfutil@empty
\pgfmathfloat@a@E=-\pgfmathfloat@a@E
\ifdim\pgfmathfloat@mantissa@ltone pt=0pt
\def\pgfmathfloat@factor{1}%
\edef\pgfmathfloat@scaled@numerator{\the\pgfmathfloat@a@Mtok}%
\else
\pgfutil@ifundefined{FPdiv}{%
\pgfmathfloatparsenumber{\pgfmathfloat@mantissa@ltone}%
\pgfmathfloatreciprocal@{\pgfmathresult}%
}{%
\FPmessagesfalse%
\FPdebugfalse%
\FPdiv\pgfmathresult{1}{\pgfmathfloat@mantissa@ltone}%
\pgfmathfloatparsenumber{\pgfmathresult}%
}%
\let\pgfmathfloat@inv=\pgfmathresult
\pgfmathfloatcreate{1}{1.0}{\pgfkeysvalueof{/pgf/number format/frac shift}}%
\let\pgfmathfloat@scalebaseten=\pgfmathresult
\pgfmathfloatmultiply@{\pgfmathfloat@inv}{\pgfmathfloat@scalebaseten}%
\let\pgfmathfloat@factor=\pgfmathresult
\expandafter\pgfmathfloatparsenumber\expandafter{\the\pgfmathfloat@a@Mtok}%
\let\pgfmathfloat@loc@TMPa=\pgfmathresult
\pgfmathfloatmultiply@{\pgfmathfloat@factor}{\pgfmathfloat@loc@TMPa}%
\pgfmathfloattofixed\pgfmathresult
\let\pgfmathfloat@scaled@numerator=\pgfmathresult
\pgfmathfloattofixed\pgfmathfloat@factor
\expandafter\pgfmathfloat@loc@@to@int\pgfmathresult\relax{\pgfmathfloat@b@S}%
\edef\pgfmathfloat@factor{\the\pgfmathfloat@b@S}%
\fi
\pgfmathresultdenom=\pgfmathfloat@factor\relax
\pgfmathfloat@multiply@ten@to@the@E\pgfmathresultdenom
\expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
\pgfmathgreatestcommondivisor{\pgfmathresultnumerator}{\pgfmathresultdenom}%
\divide\pgfmathresultnumerator by\pgfmathresult\relax
\divide\pgfmathresultdenom by\pgfmathresult\relax
\ifpgfmathprintnumber@frac@warn
\ifnum\pgfmathresultdenom>1000
\pgfutil@ifundefined{FPdiv}{%
\pgfmathfloattosci@\pgfmathfloat@arg
\pgf@typeout{! Package pgf /pgf/number format/frac warning=true: /pgf/number format/frac of `\pgfmathresult' = \the\pgfmathresultnumerator\space / \the\pgfmathresultdenom\space might be large due to instabilities. Try \string\usepackage{fp} to improve accuracy.}%
}{}%
\fi
\fi
\else
\pgfmathresultdenom=\pgfmath@target@denominator\relax
\pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
\pgfmathfloattofixed\pgfmathresult
\pgf@xa=\pgfmathresult pt
\multiply\pgf@xa by\pgfmathresultdenom
\edef\pgfmathfloat@scaled@numerator{\pgfmath@tonumber\pgf@xa}%
\expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
\fi
\ifpgfmathprintnumber@frac@whole
\else
\ifx\pgfmathfloat@wholenumber\pgfutil@empty
\else
\count0=\pgfmathfloat@wholenumber\relax
\multiply\count0 by\pgfmathresultdenom
\advance\pgfmathresultnumerator by\count0
\def\pgfmathfloat@wholenumber{}%
\fi
\fi
\ifnum\pgfmathfloat@a@S<0
\edef\pgfmathresult{{-\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
\else
\edef\pgfmathresult{{\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
\fi
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}%
\def\pgfmathfloat@gobble@until@relax#1\relax{}
\def\pgfmathgreatestcommondivisor#1#2{%
\begingroup
\count0=#1\relax
\count1=#2\relax
\ifnum\count0=0
\edef\pgfmathresult{\the\count1}%
\else
\pgfmathgreatestcommondivisor@loop
\edef\pgfmathresult{\the\count0}%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathgreatestcommondivisor@loop{%
\ifnum\count1=0
\else
\ifnum\count0>\count1
\advance\count0 by-\count1
\else
\advance\count1 by-\count0
\fi
\expandafter\pgfmathgreatestcommondivisor@loop
\fi
}%
\def\pgfmathfloat@multiply@ten@to@the@E#1{%
\ifnum\pgfmathfloat@a@E>0
\multiply#1 by10
\advance\pgfmathfloat@a@E by-1
\def\pgfmathfloat@multiply@ten@to@the@E@next{\pgfmathfloat@multiply@ten@to@the@E{#1}}%
\else
\let\pgfmathfloat@multiply@ten@to@the@E@next=\relax%
\fi
\pgfmathfloat@multiply@ten@to@the@E@next
}%
\def\pgfmathprintnumber@INT@TRUNC#1{%
\pgfmathfloatparsenumber{#1}%
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathprintnumber@INT@TRUNC@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@INT@TRUNC@impl#1.#2\relax#3#4e#5\relax{%
\pgfmathfloatroundhasperiodfalse
\pgfmathprintnumber@fixed@style{#1}#3#4e#5\relax%
}
\def\pgfmathprintnumber@INT@TRUNC@issci#1#2e#3\relax{%
\ifnum#1<3\relax
\pgfmathfloatcreate{#1}{#2}{#3}%
\pgfmathfloattofixed{\pgfmathresult}%
\expandafter\pgfmathprintnumber@INT@TRUNC@impl\pgfmathresult\relax#1#2e#3\relax
\else
\pgfmathfloatrounddisplaystyle#1#2e#3\relax%
\fi
}
\def\pgfmathifisint#1#2#3{%
\gdef\pgfmathfloatisint@@{0}%
\begingroup
\pgfmathfloatparsenumber{#1}%
\let\pgfretval\pgfmathresult
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathfloatisint@\pgfmathresult\relax
\pgfmath@smuggleone\pgfretval
\endgroup
\if1\pgfmathfloatisint@@ #2\else #3\fi
}%
\def\pgfmathfloatisint@#1#2e#3\relax{%
\ifnum#1<3\relax
\pgfmathfloatcreate{#1}{#2}{#3}%
\pgfmathfloattofixed{\pgfmathresult}%
\def\pgfmathfloat@round@precision{6}%
\expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
\ifpgfmathfloatroundhasperiod
\else
\let\pgfretval\pgfmathresult%
\gdef\pgfmathfloatisint@@{1}%
\fi
\fi
}
\def\pgfmathprintnumber@INT@DETECT#1{%
\pgfmathfloatparsenumber{#1}%
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathprintnumber@INT@DETECT@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@INT@DETECT@issci#1#2e#3\relax{%
\begingroup
\ifnum#1<3\relax
\pgfmathfloatcreate{#1}{#2}{#3}%
\pgfmathfloattofixed{\pgfmathresult}%
\let\pgfmathfloat@round@precision@=\pgfmathfloat@round@precision
\def\pgfmathfloat@round@precision{6}%
\expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
\let\pgfmathfloat@round@precision=\pgfmathfloat@round@precision@
\ifpgfmathfloatroundhasperiod
\pgfmathprintnumber@SCI@issci#1#2e#3\relax
\else
\expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax
\fi
\else
\pgfmathfloatrounddisplaystyle#1#2e#3\relax%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathprintnumber@FIXED#1{%
\pgfmathfloatparsenumber{#1}%
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@FIXED@issci#1#2e#3\relax{%
\begingroup
\ifnum#1<3
\pgfmathfloatcreate{#1}{#2}{#3}%
\pgfmathfloattofixed{\pgfmathresult}%
\ifpgfmathfloat@usezerofill@fixed
\expandafter\pgfmathroundtozerofill\expandafter{\pgfmathresult}%
\else
\expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
\fi
\ifpgfmathfloatroundmayneedrenormalize
\pgfmathfloat@a@E=#3\relax
\advance\pgfmathfloat@a@E by1
\edef\pgfmathfloat@loc@TMPb{\noexpand\pgfmathprintnumber@fixed@style{\pgfmathresult}#1#2e\the\pgfmathfloat@a@E}%
\pgfmathfloat@loc@TMPb\relax%
\else
\expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax%
\fi
\else%
\pgfmathfloatrounddisplaystyle#1#2e#3\relax%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\def\pgfmathprintnumber@SCI#1{%
\pgfmathfloatparsenumber{#1}%
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathprintnumber@SCI@issci\pgfmathresult\relax
}
\def\pgfmathprintnumber@SCI@issci#1#2e#3\relax{%
\begingroup
\pgfmathfloatcreate{#1}{#2}{#3}%
\edef\pgfmathfloat@round@precision{\pgfmathprintnumber@sci@precision}%
\ifpgfmathfloat@usezerofill@sci
\pgfmathfloatroundzerofill{\pgfmathresult}%
\else
\pgfmathfloatround{\pgfmathresult}%
\fi
\pgfmathfloat@to@FMeE@style\pgfmathresult
\expandafter\pgfmathfloatrounddisplaystyle\pgfmathresult\relax
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\pgfutil@protected\def\pgfmathprintnumber{%
\pgfutil@ifnextchar[%
{\pgfmathprintnumber@OPT}%
{\pgfmathprintnumber@noopt}%
}
\def\pgfmathprintnumber@noopt#1{%
\pgfmathprintnumber@{#1}%
\ifpgfmathprintnumber@assumemathmode
\pgfmathresult
\else
\pgfutilensuremath{\pgfmathresult}%
\fi
}%
\def\pgfmathprintnumber@OPT[#1]#2{%
\begingroup
\pgfqkeys{/pgf/number format}{#1}%
\pgfmathprintnumber@{#2}%
\ifpgfmathprintnumber@assumemathmode
\pgfmathresult
\else
\pgfutilensuremath{\pgfmathresult}%
\fi
\endgroup
}%
\def\pgfmathprintnumberto{%
\pgfutil@ifnextchar[%
{\pgfmathprintnumberto@OPT}%
{\pgfmathprintnumberto@noopt}%
}
\def\pgfmathprintnumberto@noopt#1#2{%
\begingroup
\pgfmathprintnumber@{#1}%
\ifpgfmathprintnumber@assumemathmode
\global\let\pgfmathfloat@glob@TMP=\pgfmathresult
\else
\toks0=\expandafter{\pgfmathresult}%
\xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
\fi
\endgroup
\let#2=\pgfmathfloat@glob@TMP
}%
\def\pgfmathprintnumberto@OPT[#1]#2#3{%
\begingroup
\pgfqkeys{/pgf/number format}{#1}%
\pgfmathprintnumber@{#2}%
\ifpgfmathprintnumber@assumemathmode
\global\let\pgfmathfloat@glob@TMP=\pgfmathresult
\else
\toks0=\expandafter{\pgfmathresult}%
\xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
\fi
\endgroup
\let#3=\pgfmathfloat@glob@TMP
}%
\def\pgfmath@set@number@printer#1{%
\expandafter\let\expandafter\pgfmathprintnumber@\csname #1\endcsname
\expandafter\let\expandafter\pgfmathprintnumber@issci\csname #1@issci\endcsname
}
\pgfkeys{/pgf/number format/std}
\def\pgfmathfloat@EOI{\pgfmathfloat@EOI}%
\let\c@pgfmathroundto@prec=\pgfmathfloat@b@S%
\let\c@pgfmathroundto@offsetbehindperiod=\pgfmathfloat@b@E
\newcount\c@pgfmathroundto@lastzeros
\newif\ifpgfmathround@impl@PREPERIOD@is@negative@zero
\def\pgfmathroundto@impl#1{%
\edef\pgfmathround@input{#1}%
\global\pgfmathfloatroundmayneedrenormalizefalse
\pgfmathfloat@tmptoks={}%
\let\pgfmathround@next=\pgfutil@empty
\let\pgfmathround@cur=\pgfutil@empty
\let\pgfmathresult=\pgfutil@empty
\expandafter\c@pgfmathroundto@prec\pgfmathfloat@round@precision\relax
\c@pgfmathroundto@lastzeros=0
\c@pgfmathroundto@offsetbehindperiod=-1 %
\pgfmathround@impl@PREPERIOD@is@negative@zerotrue
\expandafter\pgfmathroundto@impl@ITERATE@NODOT@firstcall\pgfmathround@input\pgfmathfloat@EOI
}
\def\pgfmathroundto@impl@discard@period#1.#2\pgfmathfloat@EOI{%
\pgfmathfloatroundhasperiodfalse
\aftergroup\pgfmathfloatroundhasperiodfalse
\def\pgfmathresult{#1}%
}
\def\pgfmathroundto@impl@gobble@rest@and@start#1\pgfmathfloat@EOI{%
\pgfmathroundto@impl@start
}
\def\pgfmathroundto@impl@gobble@and@start\pgfmathfloat@EOI{%
\pgfmathroundto@impl@start
}
\def\pgfmathroundto@impl@gobble\pgfmathfloat@EOI{}%
\def\pgfmathroundto@impl@gobble@rest#1\pgfmathfloat@EOI{}%
\def\pgfmathroundto@impl@start{%
\ifx\pgfmathround@next\pgfutil@empty
\ifnum\c@pgfmathroundto@offsetbehindperiod<0
\ifpgfmathfloat@fixed@digits@after@period
\ifnum\c@pgfmathroundto@prec=0\relax
\pgfmathfloatroundhasperiodfalse
\aftergroup\pgfmathfloatroundhasperiodfalse
\edef\pgfmathresult{\pgfmathround@input}%
\else
\pgfmathfloat@tmptoks=\expandafter{\pgfmathround@input.}%
\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
\pgfmathroundto@impl@append@zeros
\edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
\fi
\else
\pgfmathfloatroundhasperiodfalse
\aftergroup\pgfmathfloatroundhasperiodfalse
\edef\pgfmathresult{\pgfmathround@input}%
\fi
\else
\pgfmathroundto@impl@finish@with@truncation
\fi
\else
\expandafter\ifnum\pgfmathround@next<5\relax
\pgfmathroundto@impl@finish@with@truncation
\else
\multiply\c@pgfmathroundto@offsetbehindperiod by-1
\expandafter\pgfmathroundto@impl@ADD@ONE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
\fi
\fi
}
\def\pgfmathroundto@impl@finish@with@truncation{%
\ifpgfmathfloat@fixed@digits@after@period
\expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
\ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
\ifpgfmathround@impl@PREPERIOD@is@negative@zero
\expandafter\pgfmathroundto@impl@discard@minus\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
\fi
\fi
\ifnum\c@pgfmathroundto@prec=0\relax
\expandafter\pgfmathroundto@impl@discard@period\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
\else
\advance\c@pgfmathroundto@prec by-\c@pgfmathroundto@offsetbehindperiod
\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
\pgfmathroundto@impl@append@zeros
\edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
\fi
\else
\pgfmathroundto@impl@discard@suffix@zeros
\fi
}
\def\pgfmathroundto@impl@discard@minus-#1\pgfmathfloat@EOI{\pgfmathfloat@tmptoks={#1}}%
\def\pgfmathroundto@impl@append@zeros{%
\ifnum\c@pgfmathroundto@offsetbehindperiod>0
\pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
\advance\c@pgfmathroundto@offsetbehindperiod by-1
\pgfmathroundto@impl@append@zeros
\fi
}
\def\pgfmathroundto@impl@ADD@ONE{%
\pgfmathfloat@tmptoks={}%
\pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@ITERATE{%
\pgfutil@ifnextchar\pgfmathfloat@EOI{%
\global\pgfmathfloatroundmayneedrenormalizetrue
\edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
\pgfmathroundto@impl@gobble
}{%
\pgfutil@ifnextchar.{%
\ifnum\c@pgfmathroundto@prec=0
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
\else
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT}%
\fi
\pgfmathround@nextcmd
}{%
\pgfutil@ifnextchar+{%
\global\pgfmathfloatroundmayneedrenormalizetrue
\edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
\pgfmathroundto@impl@gobble@rest
}{%
\pgfutil@ifnextchar-{%
\global\pgfmathfloatroundmayneedrenormalizetrue
\edef\pgfmathresult{-1\the\pgfmathfloat@tmptoks}%
\pgfmathroundto@impl@gobble@rest
}{%
\pgfmathroundto@impl@ADD@ONE@NEXT
}%
}%
}%
}%
}
\def\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot.{%
\pgfmathfloatroundhasperiodfalse
\aftergroup\pgfmathfloatroundhasperiodfalse
\pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT#1{%
\pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
\pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@NEXT#1{%
\ifnum#1=9
\ifnum\c@pgfmathroundto@offsetbehindperiod<0
\ifpgfmathfloat@fixed@digits@after@period
\pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
\else
\fi
\else
\pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
\fi
\advance\c@pgfmathroundto@offsetbehindperiod by1
\ifnum\c@pgfmathroundto@offsetbehindperiod=0
\ifpgfmathfloat@fixed@digits@after@period
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
\else
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
\fi
\else
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
\fi
\else
\c@pgfmathroundto@lastzeros=#1
\advance\c@pgfmathroundto@lastzeros by1
\edef\pgfmathresult{\the\c@pgfmathroundto@lastzeros\the\pgfmathfloat@tmptoks}%
\pgfmathfloat@tmptoks=\expandafter{\pgfmathresult}%
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE@ITERATE}%
\fi
\pgfmathround@nextcmd
}
\def\pgfmathroundto@impl@discard@suffix@zeros{%
\ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
\ifpgfmathround@impl@PREPERIOD@is@negative@zero
\pgfmathfloatroundhasperiodfalse
\aftergroup\pgfmathfloatroundhasperiodfalse
\def\pgfmathresult{0}%
\else
\expandafter\pgfmathroundto@impl@discard@period\pgfmathround@input\pgfmathfloat@EOI
\fi
\else
\ifnum\c@pgfmathroundto@lastzeros=0
\expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
\else
\expandafter\pgfmathroundto@impl@discard@suffix@zeros@ITERATE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
\fi
\fi
}
\def\pgfmathroundto@impl@discard@suffix@zeros@ITERATE#1{%
\advance\c@pgfmathroundto@lastzeros by-1
\ifnum\c@pgfmathroundto@lastzeros=0
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE}%
\else
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@discard@suffix@zeros@ITERATE}%
\fi
\pgfmathround@nextcmd
}
\def\pgfmathroundto@impl@REVERSE{%
\pgfmathfloat@tmptoks={}%
\pgfmathroundto@impl@REVERSE@ITERATE
}
\def\pgfmathroundto@impl@REVERSE@ITERATE{%
\pgfutil@ifnextchar\pgfmathfloat@EOI{%
\edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
\pgfmathroundto@impl@gobble
}{%
\pgfmathroundto@impl@REVERSE@NEXT
}%
}
\def\pgfmathroundto@impl@REVERSE@NEXT#1{%
\pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
\pgfmathroundto@impl@REVERSE@ITERATE
}
\def\pgfmathroundto@impl@BEGIN@DOT.{%
\pgfmathfloat@tmptoks=\expandafter{\expandafter.\the\pgfmathfloat@tmptoks}%
\c@pgfmathroundto@offsetbehindperiod=0
\pgfmathroundto@impl@ITERATE@DOT
}
\def\pgfmathroundto@impl@ITERATE@DOT{%
\pgfutil@ifnextchar\pgfmathfloat@EOI{%
\pgfmathroundto@impl@gobble@and@start
}{%
\pgfmathroundto@impl@NEXT@DOT
}%
}
\def\pgfmathroundto@impl@NEXT@DOT#1{%
\ifnum\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
\def\pgfmathround@next{#1}%
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@gobble@rest@and@start}%
\else
\advance\c@pgfmathroundto@offsetbehindperiod by1
\ifnum#1=0
\advance\c@pgfmathroundto@lastzeros by1
\else
\c@pgfmathroundto@lastzeros=0
\fi
\pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@DOT}%
\fi
\pgfmathround@nextcmd
}%
\def\pgfmathroundto@impl@ITERATE@NODOT@firstcall#1{%
\def\pgfmathround@cur{#1}%
\ifx\pgfmathround@cur\pgfmathfloat@EOI
\pgfmathround@impl@PREPERIOD@is@negative@zerofalse
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
\else
\ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
\pgfmathround@impl@PREPERIOD@is@negative@zerofalse
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
\else
\ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@MINUS
\else
\pgfmathround@impl@PREPERIOD@is@negative@zerofalse
\fi
\pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
\fi
\fi
\pgfmathround@nextcmd
}
\def\pgfmathroundto@impl@ITERATE@NODOT#1{%
\def\pgfmathround@cur{#1}%
\ifx\pgfmathround@cur\pgfmathfloat@EOI
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
\else
\ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
\else
\ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@ZERO
\else
\pgfmathround@impl@PREPERIOD@is@negative@zerofalse
\fi
\pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
\def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
\fi
\fi
\pgfmathround@nextcmd
}
\def\pgfmathfloatround@impl{%
\expandafter\pgfmathroundto@impl\expandafter{\the\pgfmathfloat@a@Mtok}%
\ifpgfmathfloatroundmayneedrenormalize
\ifpgfmathfloatroundhasperiod
\expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult\pgfmathfloat@EOI%
\else
\expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult.\pgfmathfloat@EOI%
\fi
\advance\pgfmathfloat@a@E by1
\fi
\pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\pgfmathresult}{\the\pgfmathfloat@a@E}%
}
\def\pgfmathfloatround@impl@renormalize#1#2.#3\pgfmathfloat@EOI{%
\pgfmathroundto@impl{#1.#2#3}%
}
\def\pgfmathfloattofixed@impl#1.#2\relax{%
\ifnum\pgfmathfloat@a@E<0
\ifcase-\pgfmathfloat@a@E
\or%
\pgfmathfloat@a@Mtok={0.}%
\or%
\pgfmathfloat@a@Mtok={0.0}%
\or%
\pgfmathfloat@a@Mtok={0.00}%
\or%
\pgfmathfloat@a@Mtok={0.000}%
\or%
\pgfmathfloat@a@Mtok={0.0000}%
\or%
\pgfmathfloat@a@Mtok={0.00000}%
\or%
\pgfmathfloat@a@Mtok={0.000000}%
\or%
\pgfmathfloat@a@Mtok={0.0000000}%
\or%
\pgfmathfloat@a@Mtok={0.00000000}%
\or%
\pgfmathfloat@a@Mtok={0.000000000}%
\else%
\pgfmathfloat@a@Mtok={0.0000000000}%
\advance\pgfmathfloat@a@E by10
\pgfutil@loop
\ifnum\pgfmathfloat@a@E<-1
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
\advance\pgfmathfloat@a@E by1
\pgfutil@repeat
\fi
\def\pgfmathfloat@loc@TMPb{#2}%
\def\pgfmathfloat@loc@TMPc{0}%
\ifx\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPc
\edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1}%
\else
\edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1#2}%
\fi
\else
\pgfmathfloat@a@Mtok{#1}%
\pgfmathfloattofixed@impl@pos#2000000000\pgfmathfloat@EOI
\edef\pgfmathresult{\the\pgfmathfloat@a@Mtok}%
\fi
}
\def\pgfmathfloattofixed@impl@pos#1#2#3#4#5#6#7#8#9\pgfmathfloat@EOI{%
\ifcase\pgfmathfloat@a@E
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok .#1#2#3#4#5#6#7#8#9}%
\or%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1.#2#3#4#5#6#7#8#9}%
\or%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2.#3#4#5#6#7#8#9}%
\or%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3.#4#5#6#7#8#9}%
\or%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4.#5#6#7#8#9}%
\or%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5.#6#7#8#9}%
\or%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6.#7#8#9}%
\or%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7.#8#9}%
\or%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8.#9}%
\else%
\pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8}%
\advance\pgfmathfloat@a@E by-8
\pgfmathfloattofixed@impl@collectmantissa#9\count\pgfmathfloat@a@E
\fi
}%
\def\pgfmathfloattofixed@impl@collectmantissa#1#2\count#3{%
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok #1}%
\advance\pgfmathfloat@a@E by-1%
\def\pgfmathfloat@loc@TMPb{#2}%
\ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
\pgfutil@loop
\ifnum\pgfmathfloat@a@E>0%
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
\advance\pgfmathfloat@a@E by-1%
\pgfutil@repeat
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .0}%
\else
\ifnum\pgfmathfloat@a@E=0
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .#2}%
\else
\pgfmathfloattofixed@impl@collectmantissa#2\count#3%
\fi
\fi
}
\def\pgfmathfloatparsenumber@tok@ZERO{0}
\def\pgfmathfloatparsenumber@tok@PLUS{+}
\def\pgfmathfloatparsenumber@tok@MINUS{-}
\def\pgfmathfloatparsenumber@tok@PERIOD{.}
\newif\ifpgfmathfloatparsenumberpendingperiod
\def\pgfflt@EOI{p@EOI}%
\def\pgfflt@EOI@unexpanded{\pgfflt@EOI}%
\def\pgfflt@impl#1{%
\pgfmathfloatparsenumberpendingperiodfalse
\pgfmathfloat@tmptoks={}%
\pgfmathfloat@a@E=0
\expandafter\ifx\csname pgfflt@#1\endcsname\relax
\pgfmathfloat@a@S=1
\expandafter\pgfflt@init\expandafter#1%
\else
\expandafter\expandafter\csname pgfflt@#1\endcsname
\fi
}
\expandafter\def\csname pgfflt@+\endcsname{%
\pgfmathfloat@a@S=1 %
\pgfflt@init}%
\expandafter\def\csname pgfflt@-\endcsname{%
\pgfmathfloat@a@S=2 %
\pgfflt@init}%
\expandafter\def\csname pgfflt@\pgfflt@EOI\endcsname{%
\pgfmathfloatparsenumber@handleerror{empty number}{}{}}%
\pgfkeys{
/pgf/fpu/handlers/empty number/.style 2 args={%
/pgf/fpu/handlers/invalid number={#1}{#2}%
},
/pgf/fpu/empty number is zero/.style={%
/pgf/fpu/handlers/empty number/.code 2 args={%
\pgfmathfloatcreate{0}{0.0}{0}%
}%
},%
/pgf/fpu/handlers/invalid separator/.code 2 args={%
\pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near the decimal separator '#2'. Do you need the option 'read comma as period'?}{}%
},
/pgf/fpu/handlers/invalid number/.code 2 args={%
\pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near '#2'.}{}%
},
/pgf/fpu/handlers/wrong lowlevel format/.code 2 args={%
\pgfmath@error{Sorry, an internal routine of the floating point unit got an ill-formatted floating point number `#1'. The unreadable part was near '#2'.}{}%
\let\pgfmathresult=\pgfutil@empty
},
}
\def\pgfmathfloatparsenumber@handleerror#1#2#3{%
\let\pgfmathresult=\pgfutil@empty
\pgfmathfloatparsenumberpendingperiodfalse
\pgfkeys{/pgf/fpu/handlers/#1={#2}{#3}}%
\ifx\pgfmathresult\pgfutil@empty
\pgfmathfloat@a@S=3
\pgfmathfloat@a@Mtok={0.0}%
\pgfmathfloat@a@E=0
\else
\expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
\fi
}
\def\pgfflt@error#1\pgfflt@EOI{%
\begingroup
\pgfmathfloat@a@Mtok={#1}%
\xdef\pgfmathfloat@glob@TMP{%
\noexpand\pgfmathfloatparsenumber@handleerror
{invalid number}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
\endgroup
\pgfmathfloat@glob@TMP
}%
\def\pgfflt@init#1{%
\expandafter\ifx\csname pgffltA@#1\endcsname\relax
\expandafter\pgfflt@error\expandafter#1%
\else
\expandafter\expandafter\csname pgffltA@#1\endcsname
\fi}
\expandafter\def\csname pgffltA@0\endcsname{\pgfflt@leadingzero}%
\expandafter\def\csname pgffltA@1\endcsname{\pgfflt@nonzerodigit1}%
\expandafter\def\csname pgffltA@2\endcsname{\pgfflt@nonzerodigit2}%
\expandafter\def\csname pgffltA@3\endcsname{\pgfflt@nonzerodigit3}%
\expandafter\def\csname pgffltA@4\endcsname{\pgfflt@nonzerodigit4}%
\expandafter\def\csname pgffltA@5\endcsname{\pgfflt@nonzerodigit5}%
\expandafter\def\csname pgffltA@6\endcsname{\pgfflt@nonzerodigit6}%
\expandafter\def\csname pgffltA@7\endcsname{\pgfflt@nonzerodigit7}%
\expandafter\def\csname pgffltA@8\endcsname{\pgfflt@nonzerodigit8}%
\expandafter\def\csname pgffltA@9\endcsname{\pgfflt@nonzerodigit9}%
\def\pgfflt@nonzerodigit#1{%
\pgfmathfloat@a@Mtok={#1}%
\pgfmathfloatparsenumberpendingperiodtrue
\pgfflt@positiveexp}%
\expandafter\def\csname pgffltA@n\endcsname{\pgfflt@readnan}%
\expandafter\def\csname pgffltA@N\endcsname{\pgfflt@readnan}%
\expandafter\def\csname pgffltA@i\endcsname{\pgfflt@readinf}%
\expandafter\def\csname pgffltA@I\endcsname{\pgfflt@readinf}%
\expandafter\def\csname pgffltA@.\endcsname{%
\pgfmathfloat@a@E=-1
\pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltA@,\endcsname{%
\pgfmathfloat@frenchinput{%
\pgfmathfloat@a@E=-1
\pgfflt@leadingzero@foundperiod
}%
}%
\def\pgfmathfloat@frenchinput#1{%
\ifpgfmathparsenumber@comma@as@period
\def\pgf@marshal{#1}%
\expandafter\pgf@marshal
\else
\expandafter\pgfflt@error@separator\expandafter,%
\fi
}%
\def\pgfflt@error@separator#1\pgfflt@EOI{%
\begingroup
\pgfmathfloat@a@Mtok={#1}%
\xdef\pgfmathfloat@glob@TMP{%
\noexpand\pgfmathfloatparsenumber@handleerror
{invalid separator}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
\endgroup
\pgfmathfloat@glob@TMP
}%
\def\pgfflt@finish#1\pgfflt@EOI{}
\def\pgfflt@readnan #1#2{%
\def\pgfflt@readnan@ok{1}%
\if#1a\else\if#1A\else\def\pgfflt@readnan@ok{0}\fi\fi
\if#2n\else\if#2N\else\def\pgfflt@readnan@ok{0}\fi\fi
\if\pgfflt@readnan@ok1%
\pgfmathfloat@a@S=3\relax%
\pgfmathfloat@a@Mtok={0.0}%
\pgfmathfloat@a@E=0%
\expandafter\pgfflt@finish
\else
\def\pgfflt@readnan@{\pgfflt@error #1#2}%
\expandafter\pgfflt@readnan@
\fi
}
\def\pgfflt@readinf #1#2{%
\def\pgfflt@readinf@ok{1}%
\if#1n\else\if#1N\else\def\pgfflt@readinf@ok{0}\fi\fi
\if#2f\else\if#2F\else\def\pgfflt@readinf@ok{0}\fi\fi
\if\pgfflt@readinf@ok1%
\ifnum\pgfmathfloat@a@S=1 %
\pgfmathfloat@a@S=4 %
\pgfmathfloat@a@Mtok={0.0}%
\else
\pgfmathfloat@a@S=5 %
\pgfmathfloat@a@Mtok={0.0}%
\fi
\pgfmathfloat@a@E=0 %
\expandafter\pgfflt@finish
\else
\def\pgfflt@readinf@{\pgfflt@error #1#2}%
\expandafter\pgfflt@readinf@
\fi
}
\def\pgfflt@leadingzero#1{%
\expandafter\ifx\csname pgffltB@#1\endcsname\relax
\expandafter\pgfflt@error\expandafter#1%
\else
\expandafter\expandafter\csname pgffltB@#1\endcsname
\fi}
\expandafter\def\csname pgffltB@0\endcsname{\pgfflt@leadingzero}%
\expandafter\def\csname pgffltB@1\endcsname{\pgfmathfloat@a@Mtok={1}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@2\endcsname{\pgfmathfloat@a@Mtok={2}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@3\endcsname{\pgfmathfloat@a@Mtok={3}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@4\endcsname{\pgfmathfloat@a@Mtok={4}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@5\endcsname{\pgfmathfloat@a@Mtok={5}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@6\endcsname{\pgfmathfloat@a@Mtok={6}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@7\endcsname{\pgfmathfloat@a@Mtok={7}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@8\endcsname{\pgfmathfloat@a@Mtok={8}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@9\endcsname{\pgfmathfloat@a@Mtok={9}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@\pgfmathfloat@POSTFLAGSCHAR\endcsname{\pgfmathfloat@a@Mtok={0}\pgfflt@readlowlevelfloat}%
\expandafter\def\csname pgffltB@.\endcsname{%
\pgfmathfloat@a@E=-1
\pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltB@,\endcsname{%
\pgfmathfloat@frenchinput{%
\pgfmathfloat@a@E=-1
\pgfflt@leadingzero@foundperiod
}%
}%
\expandafter\def\csname pgffltB@e\endcsname{%
\pgfmathfloat@a@S=0\relax%
\pgfmathfloat@a@Mtok={0.0}%
\pgfmathfloat@a@E=0%
\pgfflt@readexponent}%
\let\pgffltB@E=\pgffltB@e
\expandafter\def\csname pgffltB@\pgfflt@EOI\endcsname{%
\pgfmathfloat@a@S=0\relax%
\pgfmathfloat@a@Mtok={0.0}%
\pgfmathfloat@a@E=0}%
\def\pgfflt@leadingzero@foundperiod#1{%
\expandafter\ifx\csname pgffltC@#1\endcsname\relax
\expandafter\pgfflt@error\expandafter#1%
\else
\expandafter\expandafter\csname pgffltC@#1\endcsname
\fi}
\expandafter\def\csname pgffltC@0\endcsname{%
\advance\pgfmathfloat@a@E by-1
\pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltC@1\endcsname{\pgfmathfloat@a@Mtok={1}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@2\endcsname{\pgfmathfloat@a@Mtok={2}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@3\endcsname{\pgfmathfloat@a@Mtok={3}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@4\endcsname{\pgfmathfloat@a@Mtok={4}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@5\endcsname{\pgfmathfloat@a@Mtok={5}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@6\endcsname{\pgfmathfloat@a@Mtok={6}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@7\endcsname{\pgfmathfloat@a@Mtok={7}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@8\endcsname{\pgfmathfloat@a@Mtok={8}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@9\endcsname{\pgfmathfloat@a@Mtok={9}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@e\endcsname{%
\pgfmathfloat@a@S=0\relax%
\pgfmathfloat@a@Mtok={0.0}%
\pgfmathfloat@a@E=0%
\pgfflt@readexponent}%
\let\pgffltC@E=\pgffltC@e
\expandafter\def\csname pgffltC@\pgfflt@EOI\endcsname{%
\pgfmathfloat@a@S=0\relax%
\pgfmathfloat@a@Mtok={0.0}%
\pgfmathfloat@a@E=0}%
\def\pgfflt@positiveexp#1{%
\expandafter\ifx\csname pgffltD@#1\endcsname\relax
\expandafter\pgfflt@error\expandafter#1%
\else
\expandafter\expandafter\csname pgffltD@#1\endcsname
\fi}
\expandafter\def\csname pgffltD@0\endcsname{%
\advance\pgfmathfloat@a@E by1
\pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
\pgfflt@pendingzeros@positiveexp}%
\expandafter\def\csname pgffltD@1\endcsname{\pgffltD@nonzerodigit1}%
\expandafter\def\csname pgffltD@2\endcsname{\pgffltD@nonzerodigit2}%
\expandafter\def\csname pgffltD@3\endcsname{\pgffltD@nonzerodigit3}%
\expandafter\def\csname pgffltD@4\endcsname{\pgffltD@nonzerodigit4}%
\expandafter\def\csname pgffltD@5\endcsname{\pgffltD@nonzerodigit5}%
\expandafter\def\csname pgffltD@6\endcsname{\pgffltD@nonzerodigit6}%
\expandafter\def\csname pgffltD@7\endcsname{\pgffltD@nonzerodigit7}%
\expandafter\def\csname pgffltD@8\endcsname{\pgffltD@nonzerodigit8}%
\expandafter\def\csname pgffltD@9\endcsname{\pgffltD@nonzerodigit9}%
\expandafter\def\csname pgffltD@\pgfmathfloat@POSTFLAGSCHAR\endcsname{\pgfflt@readlowlevelfloat}%
\expandafter\def\csname pgffltD@.\endcsname{\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltD@,\endcsname{\pgfmathfloat@frenchinput{\pgfflt@finish@number@after@period}}%
\expandafter\def\csname pgffltD@e\endcsname{\pgfflt@readexponent}%
\let\pgffltD@E=\pgffltD@e
\expandafter\def\csname pgffltD@\pgfflt@EOI\endcsname{}%
\def\pgffltD@nonzerodigit#1{%
\advance\pgfmathfloat@a@E by1
\ifpgfmathfloatparsenumberpendingperiod
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
\pgfmathfloatparsenumberpendingperiodfalse
\fi
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
\pgfflt@positiveexp}%
\def\pgfflt@readlowlevelfloat#1e#2]\pgfflt@EOI{%
\pgfmathfloatparsenumberpendingperiodfalse
\pgfmathfloat@a@S=\the\pgfmathfloat@a@Mtok\relax
\pgfmathfloat@a@Mtok={#1}%
\pgfmathfloat@a@E=#2
}%
\def\pgfflt@readexponent#1\pgfflt@EOI{%
\afterassignment\pgfflt@readexponent@
\pgfmathfloat@b@E=#1 \pgfflt@EOI%
}
\def\pgfflt@readexponent@#1{%
\advance\pgfmathfloat@a@E by\pgfmathfloat@b@E\relax
\def\pgfmathfloat@loc@TMPb{#1}%
\ifx\pgfmathfloat@loc@TMPb\pgfflt@EOI@unexpanded
\else
\def\pgfmathfloat@loc@TMPb{\pgfflt@error#1}%
\expandafter\pgfmathfloat@loc@TMPb
\fi
}
\def\pgfflt@pendingzeros@positiveexp#1{%
\expandafter\ifx\csname pgffltE@#1\endcsname\relax
\expandafter\pgfflt@error\expandafter#1%
\else
\expandafter\expandafter\csname pgffltE@#1\endcsname
\fi}
\expandafter\def\csname pgffltE@0\endcsname{%
\pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
\advance\pgfmathfloat@a@E by1
\pgfflt@pendingzeros@positiveexp}%
\expandafter\def\csname pgffltE@1\endcsname{\pgffltE@nonzerodigit1}%
\expandafter\def\csname pgffltE@2\endcsname{\pgffltE@nonzerodigit2}%
\expandafter\def\csname pgffltE@3\endcsname{\pgffltE@nonzerodigit3}%
\expandafter\def\csname pgffltE@4\endcsname{\pgffltE@nonzerodigit4}%
\expandafter\def\csname pgffltE@5\endcsname{\pgffltE@nonzerodigit5}%
\expandafter\def\csname pgffltE@6\endcsname{\pgffltE@nonzerodigit6}%
\expandafter\def\csname pgffltE@7\endcsname{\pgffltE@nonzerodigit7}%
\expandafter\def\csname pgffltE@8\endcsname{\pgffltE@nonzerodigit8}%
\expandafter\def\csname pgffltE@9\endcsname{\pgffltE@nonzerodigit9}%
\expandafter\def\csname pgffltE@.\endcsname{\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltE@,\endcsname{\pgfmathfloat@frenchinput{\pgfflt@finish@number@after@period}}%
\def\pgffltE@e{\pgfflt@readexponent}%
\let\pgffltE@E=\pgffltE@e
\expandafter\def\csname pgffltE@\pgfflt@EOI\endcsname{}%
\def\pgffltE@nonzerodigit#1{%
\advance\pgfmathfloat@a@E by1
\ifpgfmathfloatparsenumberpendingperiod
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
\pgfmathfloatparsenumberpendingperiodfalse
\fi
\pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
\pgfmathfloat@tmptoks={}%
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
\pgfflt@positiveexp}%
\def\pgfflt@finish@number@after@period#1{%
\expandafter\ifx\csname pgffltF@#1\endcsname\relax
\expandafter\pgfflt@error\expandafter#1%
\else
\expandafter\expandafter\csname pgffltF@#1\endcsname
\fi}
\expandafter\def\csname pgffltF@0\endcsname{%
\pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
\pgfflt@pendingzeros}%
\expandafter\def\csname pgffltF@1\endcsname{\pgffltF@nonzerodigit1}%
\expandafter\def\csname pgffltF@2\endcsname{\pgffltF@nonzerodigit2}%
\expandafter\def\csname pgffltF@3\endcsname{\pgffltF@nonzerodigit3}%
\expandafter\def\csname pgffltF@4\endcsname{\pgffltF@nonzerodigit4}%
\expandafter\def\csname pgffltF@5\endcsname{\pgffltF@nonzerodigit5}%
\expandafter\def\csname pgffltF@6\endcsname{\pgffltF@nonzerodigit6}%
\expandafter\def\csname pgffltF@7\endcsname{\pgffltF@nonzerodigit7}%
\expandafter\def\csname pgffltF@8\endcsname{\pgffltF@nonzerodigit8}%
\expandafter\def\csname pgffltF@9\endcsname{\pgffltF@nonzerodigit9}%
\def\pgffltF@e{\pgfflt@readexponent}%
\let\pgffltF@E=\pgffltF@e
\expandafter\def\csname pgffltF@\pgfflt@EOI\endcsname{}%
\def\pgffltF@nonzerodigit#1{%
\ifpgfmathfloatparsenumberpendingperiod
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
\pgfmathfloatparsenumberpendingperiodfalse
\fi
\pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
\pgfmathfloat@tmptoks={}%
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
\pgfflt@finish@number@after@period}%
\def\pgfflt@pendingzeros#1{%
\expandafter\ifx\csname pgffltG@#1\endcsname\relax
\expandafter\pgfflt@error\expandafter#1%
\else
\expandafter\expandafter\csname pgffltG@#1\endcsname
\fi}
\expandafter\def\csname pgffltG@0\endcsname{%
\pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
\pgfflt@pendingzeros}%
\expandafter\def\csname pgffltG@1\endcsname{\pgffltG@nonzerodigit1}%
\expandafter\def\csname pgffltG@2\endcsname{\pgffltG@nonzerodigit2}%
\expandafter\def\csname pgffltG@3\endcsname{\pgffltG@nonzerodigit3}%
\expandafter\def\csname pgffltG@4\endcsname{\pgffltG@nonzerodigit4}%
\expandafter\def\csname pgffltG@5\endcsname{\pgffltG@nonzerodigit5}%
\expandafter\def\csname pgffltG@6\endcsname{\pgffltG@nonzerodigit6}%
\expandafter\def\csname pgffltG@7\endcsname{\pgffltG@nonzerodigit7}%
\expandafter\def\csname pgffltG@8\endcsname{\pgffltG@nonzerodigit8}%
\expandafter\def\csname pgffltG@9\endcsname{\pgffltG@nonzerodigit9}%
\def\pgffltG@e{\pgfflt@readexponent}%
\let\pgffltG@E=\pgffltG@e
\expandafter\def\csname pgffltG@\pgfflt@EOI\endcsname{}%
\def\pgffltG@nonzerodigit#1{%
\ifpgfmathfloatparsenumberpendingperiod
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
\pgfmathfloatparsenumberpendingperiodfalse
\fi
\pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
\pgfmathfloat@tmptoks={}%
\pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
\pgfflt@finish@number@after@period}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfloat.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.base.code.tex ====
\pgfmathdeclarefunction{bin}{1}{%
\begingroup%
\afterassignment\pgfmath@gobbletilpgfmath@%
\c@pgfmath@counta=#1\relax\pgfmath@%
\expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{2}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{hex}{1}{%
\begingroup%
\afterassignment\pgfmath@gobbletilpgfmath@%
\c@pgfmath@counta=#1\relax\pgfmath@%
\expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{16}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{Hex}{1}{%
\begingroup%
\afterassignment\pgfmath@gobbletilpgfmath@%
\c@pgfmath@counta=#1\relax\pgfmath@%
\expandafter\pgfmathbasetoBase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{16}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{oct}{1}{%
\begingroup%
\afterassignment\pgfmath@gobbletilpgfmath@%
\c@pgfmath@counta=#1\relax\pgfmath@%
\expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{8}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\def\pgfmathbasetodec#1#2#3{%
\pgfmath@checknumber{#2}%
\pgfmath@checkbase{#3}%
\def\pgfmath@base{#3}%
\def\pgfmath@base@macro{#1}%
\c@pgfmath@counta=1\relax%
\let\pgfmath@reversed=\pgfmath@empty%
\expandafter\pgfmathbasetodec@#2\pgfmath@base@stop}
\def\pgfmathbasetodec@#1{%
\ifx#1\pgfmath@base@stop%
\c@pgfmath@countb=0%
\divide\c@pgfmath@counta by\pgfmath@base\relax%
\expandafter\pgfmathbasetodec@@%
\else%
\edef\pgfmath@reversed{\pgfmath@reversed#1}%
\expandafter\multiply\expandafter\c@pgfmath@counta\pgfmath@base\relax%
\expandafter\pgfmathbasetodec@%
\fi}
\def\pgfmathbasetodec@@{\expandafter\pgfmathbasetodec@@@\pgfmath@reversed\pgfmathbasetodec}
\def\pgfmathbasetodec@@@#1{%
\ifx\pgfmathbasetodec#1\relax%
\expandafter\edef\pgfmath@base@macro{\the\c@pgfmath@countb}%
\let\pgfmath@next=\pgfmathbasetodec@@@@%
\else%
\chardef\pgfmath@charnum`#1\relax%
\c@pgfmath@countc=\pgfmath@charnum\relax%
\ifnum\c@pgfmath@countc>96\relax%
\advance\c@pgfmath@countc by-87\relax%
\else
\ifnum\c@pgfmath@countc>64\relax%
\advance\c@pgfmath@countc by-55\relax%
\else
\advance\c@pgfmath@countc by-48\relax%
\fi%
\fi%
\ifnum\c@pgfmath@countc<\pgfmath@base\relax%
\multiply\c@pgfmath@countc by\c@pgfmath@counta%
\advance\c@pgfmath@countb by\c@pgfmath@countc%
\divide\c@pgfmath@counta by\pgfmath@base\relax%
\let\pgfmath@next\pgfmathbasetodec@@@%
\else
\pgfmath@error{Digit `#1' invalid for base \pgfmath@base}{}%
\let\pgfmath@next=\relax%
\fi%
\fi%
\pgfmath@next}
\def\pgfmathbasetodec@@@@{%
\expandafter\pgfmath@ensurenumberlength\expandafter{\pgfmath@base@macro}%
}
\def\pgfmathdectobase#1#2#3{%
\pgfmath@checknumber{#2}%
\pgfmath@checkbase{#3}%
\c@pgfmath@counta=#2\relax%
\let#1=\pgfmath@empty%
\pgfmathloop
\ifnum\c@pgfmath@counta>0\relax%
\c@pgfmath@countb=\c@pgfmath@counta%
\divide\c@pgfmath@countb by#3\relax%
\multiply\c@pgfmath@countb by-#3\relax%
\advance\c@pgfmath@countb by\c@pgfmath@counta%
\edef#1{\csname pgfmath@lowercase digit@\the\c@pgfmath@countb\endcsname#1}%
\divide\c@pgfmath@counta by#3\relax%
\repeatpgfmathloop%
\pgfmath@ensurenumberlength{#1}}
\def\pgfmathdectoBase#1#2#3{%
\pgfmath@checkbase{#3}%
\pgfmath@checknumber{#2}%
\c@pgfmath@counta=#2\relax%
\let#1=\pgfmath@empty%
\pgfmathloop
\ifnum\c@pgfmath@counta>0\relax%
\c@pgfmath@countb=\c@pgfmath@counta%
\divide\c@pgfmath@countb by#3\relax%
\multiply\c@pgfmath@countb by-#3\relax%
\advance\c@pgfmath@countb by\c@pgfmath@counta%
\edef#1{\csname pgfmath@uppercase digit@\the\c@pgfmath@countb\endcsname#1}%
\divide\c@pgfmath@counta by#3\relax%
\repeatpgfmathloop%
\pgfmath@ensurenumberlength{#1}}
\def\pgfmath@base@digits@create{%
\def\pgfmath@base@digit@style{lowercase digit}%
\c@pgfmath@counta=0\relax%
\pgfmath@base@digits@create@0123456789abcdefghijklmnopqrstuvwxyz\pgfmath@base@digits@create%
\def\pgfmath@base@digit@style{uppercase digit}%
\c@pgfmath@counta=0\relax%
\pgfmath@base@digits@create@0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\pgfmath@base@digits@create}
\def\pgfmath@base@digits@create@#1{%
\ifx\pgfmath@base@digits@create#1\relax%
\else%
\expandafter\pgfmath@def\expandafter{\pgfmath@base@digit@style}{\the\c@pgfmath@counta}{#1}%
\advance\c@pgfmath@counta by1\relax%
\expandafter\pgfmath@base@digits@create@%
\fi}
\pgfmath@base@digits@create
\def\pgfmathbasetobase#1#2#3#4{%
\pgfmathbasetodec{\pgfmath@base@temp}{#2}{#3}%
\pgfmathdectobase{#1}{\pgfmath@base@temp}{#4}%
}
\def\pgfmathbasetoBase#1#2#3#4{%
\pgfmathbasetodec{\pgfmath@base@temp}{#2}{#3}%
\pgfmathdectoBase{#1}{\pgfmath@base@temp}{#4}%
}
\def\pgfmath@checkbase#1{%
\ifnum#1<2\relax%
\pgfmath@error{Cannot process numbers in base `#1'.}{}%
\else%
\ifnum#1>36\relax%
\pgfmath@error{Cannot process numbers in base `#1'.}{}%
\fi%
\fi}
\def\pgfmath@checknumber#1{%
\expandafter\pgfmath@checknumber@#1\pgfmath@}
\def\pgfmath@checknumber@#1#2\pgfmath@{%
\ifx#1-%
\pgfmath@error{Cannot process negative numbers.}{}%
\fi}
\def\pgfmath@ensurenumberlength#1{%
\def\pgfmath@base@tempa{#1}%
\expandafter\c@pgfmath@counta\pgfmath@basenumberlength\relax%
\expandafter\pgfmath@ensurenumberlength@#1\pgfmath@ensurenumberlength}
\def\pgfmath@ensurenumberlength@#1{%
\ifx\pgfmath@ensurenumberlength#1\relax%
\expandafter\pgfmath@ensurenumberlength@@%
\else%
\advance\c@pgfmath@counta by-1\relax%
\expandafter\pgfmath@ensurenumberlength@
\fi}
\def\pgfmath@ensurenumberlength@@{%
\edef\pgfmath@base@tempb{\pgfmath@base@tempa}%
\pgfmath@ensurenumberlength@@@}
\def\pgfmath@ensurenumberlength@@@{%
\ifnum\c@pgfmath@counta>0\relax%
\advance\c@pgfmath@counta by-1\relax%
\edef\pgfmath@base@tempb{0\pgfmath@base@tempb}%
\expandafter\pgfmath@ensurenumberlength@@@%
\fi%
\expandafter\edef\pgfmath@base@tempa{\pgfmath@base@tempb}}
\def\pgfmathsetbasenumberlength#1{\def\pgfmath@basenumberlength{#1}}
\pgfmathsetbasenumberlength{1}%
\def\pgfmathtodigitlist#1#2{%
\def\pgfmath@temp{#1}%
\let\pgfmath@digitlist=\pgfutil@empty%
\edef\pgfmath@@tmp{#2}%
\expandafter\pgfmath@todigitlist\pgfmath@@tmp @%
}
\def\pgfmath@base@atchar{@}
\def\pgfmath@todigitlist#1{%
\def\pgfmath@digit{#1}%
\ifx\pgfmath@digit\pgfmath@base@atchar%
\expandafter\let\pgfmath@temp=\pgfmath@digitlist%
\else%
\ifx\pgfmath@digitlist\pgfutil@empty%
\edef\pgfmath@digitlist{#1}%
\else%
\edef\pgfmath@digitlist{\pgfmath@digitlist,#1}%
\fi%
\expandafter\pgfmath@todigitlist%
\fi%
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.base.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.basic.code.tex ====
\pgfmathdeclarefunction{add}{2}{%
\begingroup%
\pgfmath@x=#1pt\relax%
\pgfmath@y=#2pt\relax%
\advance\pgfmath@x by\pgfmath@y%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{subtract}{2}{%
\begingroup%
\pgfmath@x=#1pt\relax%
\pgfmath@y=#2pt\relax%
\advance\pgfmath@x by-\pgfmath@y%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{neg}{1}{%
\begingroup%
\pgfmath@x=-#1pt\relax%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\def\pgfmath@operation@neg@precedence{500}
\pgfmathdeclarefunction{multiply}{2}{%
\begingroup%
\pgfmath@x=#1pt\relax%
\pgfmath@y=#2pt\relax%
\pgfmath@x=\pgfmath@tonumber{\pgfmath@y}\pgfmath@x%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\newif\ifpgfmath@divide@period
\pgfmathdeclarefunction{divide}{2}{%
\begingroup%
\pgfmath@x=#1pt\relax%
\pgfmath@y=#2pt\relax%
\let\pgfmath@sign=\pgfmath@empty%
\ifdim0pt=\pgfmath@y%
\pgfmath@error{You've asked me to divide `#1' by `#2', %
but I cannot divide any number by `#2'}{}%
\fi%
\afterassignment\pgfmath@xa%
\c@pgfmath@counta\the\pgfmath@y\relax%
\ifdim0pt=\pgfmath@xa%
\divide\pgfmath@x by\c@pgfmath@counta%
\else%
\ifdim0pt>\pgfmath@x%
\def\pgfmath@sign{-}%
\pgfmath@x=-\pgfmath@x%
\fi%
\ifdim0pt>\pgfmath@y%
\expandafter\def\expandafter\pgfmath@sign\expandafter{\pgfmath@sign-}%
\pgfmath@y=-\pgfmath@y%
\fi%
\ifdim1pt>\pgfmath@y%
\pgfmathreciprocal@{\pgfmath@tonumber{\pgfmath@y}}%
\pgfmath@x=\pgfmath@sign\pgfmathresult\pgfmath@x%
\else%
\def\pgfmathresult{0}%
\pgfmath@divide@periodtrue%
\c@pgfmath@counta=0\relax%
\pgfmathdivide@@%
\pgfmath@x=\pgfmath@sign\pgfmathresult pt\relax%
\fi%
\fi%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\def\pgfmath@small@number{0.00002}
\def\pgfmathdivide@@{%
\let\pgfmath@next=\relax%
\ifdim\pgfmath@small@number pt<\pgfmath@x%
\ifdim\pgfmath@small@number pt<\pgfmath@y%
\ifdim\pgfmath@y>\pgfmath@x%
\ifpgfmath@divide@period%
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult.}%
\pgfmath@divide@periodfalse%
\fi%
\pgfmathdivide@dimenbyten\pgfmath@y%
\ifdim\pgfmath@y>\pgfmath@x%
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult0}%
\fi%
\else%
\c@pgfmath@counta=\pgfmath@x%
\c@pgfmath@countb=\pgfmath@y%
\divide\c@pgfmath@counta by\c@pgfmath@countb%
\pgfmath@ya=\c@pgfmath@counta\pgfmath@y%
\advance\pgfmath@x by-\pgfmath@ya%
\def\pgfmath@next{%
\toks0=\expandafter{\pgfmathresult}%
\edef\pgfmathresult{\the\toks0 \the\c@pgfmath@counta}%
}%
\ifpgfmath@divide@period
\else
\ifnum\c@pgfmath@counta>9 %
\expandafter\pgfmathdivide@advance@last@digit\pgfmathresult CCCCC\@@
\advance\c@pgfmath@counta by-10 %
\ifnum\c@pgfmath@counta=0
\let\pgfmath@next=\relax
\fi
\fi
\fi
\pgfmath@next
\fi%
\let\pgfmath@next=\pgfmathdivide@@%
\fi%
\fi%
\pgfmath@next%
}
\def\pgfmathdivide@advance@last@digit#1.#2#3#4#5#6#7\@@{%
\pgfmath@ya=\pgfmathresult pt %
\if#2C%
\pgfmath@xa=1pt %
\else
\if#3C%
\pgfmath@xa=0.1pt %
\else
\if#4C%
\pgfmath@xa=0.01pt %
\else
\if#5C%
\pgfmath@xa=0.001pt %
\else
\if#6C%
\pgfmath@xa=0.0001pt %
\else
\pgfmath@xa=0.00001pt %
\fi
\fi
\fi
\fi
\fi
\advance\pgfmath@ya by\pgfmath@xa
\edef\pgfmathresult{\pgfmath@tonumber@notrailingzero\pgfmath@ya}%
}%
{
\catcode`\p=12
\catcode`\t=12
\gdef\Pgf@geT@NO@TRAILING@ZERO#1.#2pt{%
#1.%
\ifnum#2=0 \else #2\fi
}
}
\def\pgfmath@tonumber@notrailingzero#1{\expandafter\Pgf@geT@NO@TRAILING@ZERO\the#1}
\def\pgfmathdivide@dimenbyten#1{%
\edef\pgfmath@temp{\pgfmath@tonumber{#1}}%
\expandafter\pgfmathdivide@@dimenbyten\pgfmath@temp\@@#1\@@}
\def\pgfmathdivide@@dimenbyten#1.#2\@@#3\@@{%
\pgfmath@tempcnta=#1\relax%
\divide\pgfmath@tempcnta by10\relax%
\pgfmath@tempcntb=\pgfmath@tempcnta%
\multiply\pgfmath@tempcnta by-10\relax%
\advance\pgfmath@tempcnta by#1\relax%
#3=\the\pgfmath@tempcntb.\the\pgfmath@tempcnta#2pt\relax%
}
\pgfmathdeclarefunction{reciprocal}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\ifdim\pgfmath@x=0pt\relax%
\pgfmath@error{You asked me to calculate `1/#1', but I cannot divide any number by zero}{}%
\fi%
\edef\pgfmath@reciprocaltemp{\pgfmath@tonumber{\pgfmath@x}}%
\expandafter\pgfmathreciprocal@@\pgfmath@reciprocaltemp0000000\pgfmath@}
\def\pgfmathreciprocal@@#1.#2#3#4#5#6#7\pgfmath@{%
\c@pgfmath@counta#2#3#4#5#6\relax%
\ifnum\c@pgfmath@counta=0\relax%
\pgfmath@x1pt\relax%
\divide\pgfmath@x#1\relax%
\else%
\ifnum#1>100\relax%
\c@pgfmath@counta#1#2#3#4\relax%
\c@pgfmath@countb1000000000\relax%
\divide\c@pgfmath@countb\c@pgfmath@counta%
\c@pgfmath@counta\c@pgfmath@countb%
\divide\c@pgfmath@counta10000\relax%
\pgfmath@x\c@pgfmath@counta pt\relax%
\multiply\c@pgfmath@counta-10000\relax%
\advance\c@pgfmath@countb\c@pgfmath@counta%
\pgfmath@y\c@pgfmath@countb pt\relax%
\divide\pgfmath@y1000000\relax%
\advance\pgfmath@x\pgfmath@y%
\else%
\c@pgfmath@counta#1#2#3#4#5#6\relax%
\c@pgfmath@countb1000000000\relax%
\divide\c@pgfmath@countb\c@pgfmath@counta%
\c@pgfmath@counta\c@pgfmath@countb%
\divide\c@pgfmath@counta10000\relax%
\pgfmath@x\c@pgfmath@counta pt\relax%
\multiply\c@pgfmath@counta-10000\relax%
\advance\c@pgfmath@countb\c@pgfmath@counta%
\pgfmath@y\c@pgfmath@countb pt\relax%
\pgfmath@y.1\pgfmath@y%
\pgfmath@y.1\pgfmath@y%
\pgfmath@y.1\pgfmath@y%
\pgfmath@y.1\pgfmath@y%
\advance\pgfmath@x\pgfmath@y%
\fi%
\fi%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{div}{2}{%
\begingroup%
\pgfmathdivide@{#1}{#2}%
\ifdim\pgfmathresult pt<0pt\relax%
\pgfmathceil@{\pgfmathresult}%
\else%
\pgfmathfloor@{\pgfmathresult}%
\fi%
\afterassignment\pgfmath@gobbletilpgfmath@%
\c@pgfmath@counta=\pgfmathresult\relax\pgfmath@%
\edef\pgfmathresult{\the\c@pgfmath@counta}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{mod}{2}{%
\begingroup%
\pgfmath@xa#1pt%
\pgfmath@xb#2pt%
\pgfmath@x\pgfmath@xa%
\c@pgfmath@counta\pgfmath@xa%
\c@pgfmath@countb\pgfmath@xb%
\divide\c@pgfmath@counta\c@pgfmath@countb%
\multiply\pgfmath@xb\c@pgfmath@counta%
\advance\pgfmath@x-\pgfmath@xb%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{Mod}{2}{%
\begingroup%
\pgfmathmod@{#1}{#2}%
\pgfmath@x=\pgfmathresult pt\relax%
\ifdim\pgfmath@x<0pt\relax%
\advance\pgfmath@x by#2pt\relax%
\fi%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{abs}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\ifdim\pgfmath@x<0pt\relax%
\pgfmath@x-\pgfmath@x%
\fi%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{sign}{1}{%
\begingroup
\ifdim#1pt>0sp %
\def\pgfmathresult{1}%
\else
\ifdim#1pt=0sp %
\def\pgfmathresult{0}%
\else
\def\pgfmathresult{-1}%
\fi
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}
\pgfmathdeclarefunction{e}{0}{\def\pgfmathresult{2.718281828}}
\pgfmathdeclarefunction{ln}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\ifdim\pgfmath@x>0pt\else%
\pgfmath@error{I cannot calculate the logarithm of `#1'}{}%
\fi%
\c@pgfmath@counta=0\relax%
\ifdim\pgfmath@x>2pt\relax%
\ifdim\pgfmath@x<128pt\relax%
\ifdim\pgfmath@x<8pt\relax%
\ifdim\pgfmath@x<4pt\relax%
\divide\pgfmath@x by2\relax%
\c@pgfmath@counta=1\relax%
\else%
\divide\pgfmath@x by4\relax%
\c@pgfmath@counta=2\relax%
\fi%
\else%
\ifdim\pgfmath@x<32pt\relax%
\ifdim\pgfmath@x<16pt\relax%
\divide\pgfmath@x by8\relax%
\c@pgfmath@counta=3\relax%
\else%
\divide\pgfmath@x by16\relax%
\c@pgfmath@counta=4\relax%
\fi%
\else%
\ifdim\pgfmath@x<64pt\relax%
\divide\pgfmath@x by32\relax%
\c@pgfmath@counta=5\relax%
\else%
\divide\pgfmath@x by64\relax%
\c@pgfmath@counta=6\relax%
\fi%
\fi%
\fi%
\else%
\ifdim\pgfmath@x<2048pt\relax%
\ifdim\pgfmath@x<512pt\relax%
\ifdim\pgfmath@x<256pt\relax%
\divide\pgfmath@x by128\relax%
\c@pgfmath@counta=7\relax%
\else%
\divide\pgfmath@x by256\relax%
\c@pgfmath@counta=8\relax%
\fi%
\else%
\ifdim\pgfmath@x<1024pt\relax%
\divide\pgfmath@x by512\relax%
\c@pgfmath@counta=9\relax%
\else%
\divide\pgfmath@x by1024\relax%
\c@pgfmath@counta=10\relax%
\fi%
\fi%
\else%
\ifdim\pgfmath@x<8192pt\relax%
\ifdim\pgfmath@x<4096pt\relax%
\divide\pgfmath@x by2048\relax%
\c@pgfmath@counta=11\relax%
\else%
\divide\pgfmath@x by4096\relax%
\c@pgfmath@counta =12\relax%
\fi%
\else%
\divide\pgfmath@x by8192\relax%
\c@pgfmath@counta=13\relax%
\fi%
\fi%
\fi%
\else%
\ifdim\pgfmath@x<1pt\relax%
\ifdim\pgfmath@x>0.0078125pt\relax%
\ifdim\pgfmath@x>0.125pt\relax%
\ifdim\pgfmath@x>0.5pt\relax%
\multiply\pgfmath@x by2\relax%
\c@pgfmath@counta=-1\relax%
\else%
\multiply\pgfmath@x by4\relax%
\c@pgfmath@counta=-2\relax%
\fi%
\else%
\ifdim\pgfmath@x>0.03125pt\relax%
\ifdim\pgfmath@x>0.0625pt\relax%
\multiply\pgfmath@x by8\relax%
\c@pgfmath@counta=-3\relax%
\else%
\multiply\pgfmath@x by16\relax%
\c@pgfmath@counta=-4\relax%
\fi%
\else%
\ifdim\pgfmath@x>0.015625pt\relax%
\multiply\pgfmath@x by32\relax%
\c@pgfmath@counta=-5\relax%
\else%
\multiply\pgfmath@x by64\relax%
\c@pgfmath@counta=-6\relax%
\fi%
\fi%
\fi%
\else%
\ifdim\pgfmath@x>0.00048828125pt\relax%
\ifdim\pgfmath@x>0.001953125pt\relax%
\ifdim\pgfmath@x>0.00390625pt\relax%
\multiply\pgfmath@x by128\relax%
\c@pgfmath@counta=-7\relax%
\else%
\multiply\pgfmath@x by256\relax%
\c@pgfmath@counta=-8\relax%
\fi%
\else%
\ifdim\pgfmath@x>0.0009765625pt\relax%
\multiply\pgfmath@x by512\relax%
\c@pgfmath@counta=-9\relax%
\else%
\multiply\pgfmath@x by1024\relax%
\c@pgfmath@counta=-10\relax%
\fi%
\fi%
\else%
\ifdim\pgfmath@x>0.0001220703125pt\relax%
\ifdim\pgfmath@x>0.0002441406256pt\relax%
\multiply\pgfmath@x by2048\relax%
\c@pgfmath@counta=-11\relax%
\else%
\multiply\pgfmath@x by4096\relax%
\c@pgfmath@counta=-12\relax%
\fi%
\else%
\multiply\pgfmath@x by8192\relax%
\c@pgfmath@counta=-13\relax%
\fi%
\fi%
\fi%
\fi%
\fi%
\edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@x=0.04300521312\pgfmath@x%
\advance\pgfmath@x by-.4025153233pt\relax%
\pgfmath@x=\pgfmath@temp\pgfmath@x%
\advance\pgfmath@x by1.589480044pt\relax%
\pgfmath@x=\pgfmath@temp\pgfmath@x%
\advance\pgfmath@x by-3.489886985pt\relax%
\pgfmath@x=\pgfmath@temp\pgfmath@x%
\advance\pgfmath@x by5.047861502pt\relax%
\pgfmath@x=\pgfmath@temp\pgfmath@x%
\advance\pgfmath@x by-2.787927935pt\relax%
\advance\pgfmath@x by\c@pgfmath@counta pt\relax%
\pgfmath@x=0.6931471806\pgfmath@x%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{log2}{1}{%
\begingroup%
\pgfmathln@{#1}%
\pgfmath@x=\pgfmathresult pt\relax%
\pgfmath@x=1.442695041\pgfmath@x%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{log10}{1}{%
\begingroup%
\pgfmathln@{#1}%
\pgfmath@x=\pgfmathresult pt\relax%
\pgfmath@x=0.43429441\pgfmath@x%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\expandafter\let\expandafter\pgfmathlogtwo\csname pgfmathlog2\endcsname
\expandafter\let\expandafter\pgfmathlogtwo@\csname pgfmathlog2@\endcsname
\expandafter\let\expandafter\pgfmathlogten\csname pgfmathlog10\endcsname
\expandafter\let\expandafter\pgfmathlogten@\csname pgfmathlog10@\endcsname
\pgfmathdeclarefunction{exp}{1}{%
\begingroup
\pgfmath@xc=#1pt\relax
\pgfmath@yc=#1pt\relax
\ifdim\pgfmath@xc<-9pt
\pgfmath@x=1sp\relax
\else
\ifdim\pgfmath@xc<0pt
\pgfmath@xc=-\pgfmath@xc
\fi
\pgfmath@x=1pt\relax
\pgfmath@xa=1pt\relax
\pgfmath@xb=\pgfmath@x
\pgfmathloop%
\divide\pgfmath@xa by\pgfmathcounter
\pgfmath@xa=\pgfmath@tonumber\pgfmath@xc\pgfmath@xa%
\advance\pgfmath@x by\pgfmath@xa
\ifdim\pgfmath@x=\pgfmath@xb
\else
\pgfmath@xb=\pgfmath@x
\repeatpgfmathloop%
\ifdim\pgfmath@yc<0pt
\pgfmathreciprocal@{\pgfmath@tonumber\pgfmath@x}%
\pgfmath@x=\pgfmathresult pt\relax
\fi
\fi
\pgfmath@returnone\pgfmath@x%
\endgroup
}
\pgfmathdeclarefunction{sqrt}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\ifdim\pgfmath@x<0pt\relax%
\pgfmath@error{I cannot calculate the square-root of the negative number `#1'}{}%
\else%
\ifdim\pgfmath@x<10pt\relax%
\def\pgfmath@zeros{0}%
\def\pgfmath@targetiterations{1}%
\else%
\ifdim\pgfmath@x<100pt\relax%
\def\pgfmath@zeros{}%
\def\pgfmath@targetiterations{1}%
\else%
\ifdim\pgfmath@x<1000pt\relax%
\def\pgfmath@zeros{0}%
\def\pgfmath@targetiterations{2}%
\else%
\ifdim\pgfmath@x<10000pt\relax%
\def\pgfmath@zeros{}%
\def\pgfmath@targetiterations{2}%
\else%
\def\pgfmath@zeros{0}%
\def\pgfmath@targetiterations{3}%
\fi\fi\fi\fi\fi%
\edef\pgfmath@temp{\pgfmath@zeros\pgfmath@tonumber{\pgfmath@x}}%
\expandafter\pgfmath@sqrt@\pgfmath@temp\pgfmath@%
}
\def\pgfmath@sqrt@#1.#2\pgfmath@{\pgfmath@@sqrt@#1#2\pgfmath@empty\pgfmath@empty\pgfmath@}
\def\pgfmath@@sqrt@#1#2{%
\c@pgfmath@countb=#1#2\relax%
\ifnum\c@pgfmath@countb>35\relax%
\ifnum\c@pgfmath@countb>63\relax%
\ifnum\c@pgfmath@countb>80\relax%
\c@pgfmath@counta=9\relax%
\else%
\c@pgfmath@counta=8\relax%
\fi%
\else%
\ifnum\c@pgfmath@countb>48\relax%
\c@pgfmath@counta=7\relax%
\else%
\c@pgfmath@counta=6\relax%
\fi%
\fi%
\else%
\ifnum\c@pgfmath@countb>15\relax%
\ifnum\c@pgfmath@countb>24\relax%
\c@pgfmath@counta5\relax%
\else%
\c@pgfmath@counta=4\relax%
\fi%
\else%
\ifnum\c@pgfmath@countb>3\relax%
\ifnum\c@pgfmath@countb>8\relax%
\c@pgfmath@counta=3\relax%
\else%
\c@pgfmath@counta=2\relax%
\fi%
\else%
\ifnum\c@pgfmath@countb>0\relax%
\c@pgfmath@counta=1\relax%
\else%
\c@pgfmath@counta=0\relax%
\fi%
\fi%
\fi%
\fi%
\edef\pgfmath@root{\the\c@pgfmath@counta}%
\edef\pgfmath@rootspecial{\the\c@pgfmath@counta}%
\multiply\c@pgfmath@counta by-\c@pgfmath@counta\relax%
\advance\c@pgfmath@counta by#1#2\relax%
\edef\pgfmath@remainder{\the\c@pgfmath@counta}%
\pgfmath@@@sqrt@%
}
\def\pgfmath@@@sqrt@#1#2{%
\ifx\pgfmath@empty#1%
\edef\pgfmath@remainder{\pgfmath@remainder00}%
\def\pgfmath@tokens{\pgfmath@empty\pgfmath@empty}%
\else%
\ifx\pgfmath@empty#2%
\edef\pgfmath@remainder{\pgfmath@remainder#10}%
\def\pgfmath@tokens{\pgfmath@empty\pgfmath@empty}%
\else%
\edef\pgfmath@remainder{\pgfmath@remainder#1#2}%
\def\pgfmath@tokens{}%
\fi\fi%
\c@pgfmath@counta=\pgfmath@rootspecial\relax%
\multiply\c@pgfmath@counta by20\relax%
\c@pgfmath@countb=\c@pgfmath@counta%
\multiply\c@pgfmath@countb by6\relax%
\advance\c@pgfmath@countb by36\relax%
\c@pgfmath@countc=\c@pgfmath@counta%
\multiply\c@pgfmath@countc by2\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\advance\c@pgfmath@countb by-\c@pgfmath@countc%
\advance\c@pgfmath@countb by-20\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\advance\c@pgfmath@countb by-\c@pgfmath@countc%
\advance\c@pgfmath@countb by-12\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\advance\c@pgfmath@countb by-\c@pgfmath@counta%
\advance\c@pgfmath@countb by-3\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\def\pgfmath@digit{0}%
\else%
\def\pgfmath@digit{1}%
\fi%
\else%
\advance\c@pgfmath@countb by\c@pgfmath@counta%
\advance\c@pgfmath@countb by5\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\def\pgfmath@digit{2}%
\else%
\def\pgfmath@digit{3}%
\fi%
\fi%
\else%
\advance\c@pgfmath@countb by\c@pgfmath@counta%
\advance\c@pgfmath@countb by9\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\def\pgfmath@digit{4}%
\else%
\def\pgfmath@digit{5}%
\fi%
\fi%
\else%
\advance\c@pgfmath@countb by\c@pgfmath@countc%
\advance\c@pgfmath@countb by28\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\advance\c@pgfmath@countb by-\c@pgfmath@counta%
\advance\c@pgfmath@countb by-15\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\def\pgfmath@digit{6}%
\else%
\def\pgfmath@digit{7}%
\fi%
\else%
\advance\c@pgfmath@countb by\c@pgfmath@counta%
\advance\c@pgfmath@countb by17\relax%
\ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
\def\pgfmath@digit{8}%
\else%
\def\pgfmath@digit{9}%
\fi%
\fi%
\fi%
\edef\pgfmath@rootspecial{\pgfmath@rootspecial\pgfmath@digit}%
\advance\c@pgfmath@counta by\pgfmath@digit\relax%
\multiply\c@pgfmath@counta by-\pgfmath@digit\relax%
\advance\c@pgfmath@counta by\pgfmath@remainder\relax%
\edef\pgfmath@remainder{\the\c@pgfmath@counta}%
\c@pgfmath@counta=\pgfmath@targetiterations\relax%
\advance\c@pgfmath@counta by-1\relax%
\edef\pgfmath@targetiterations{\the\c@pgfmath@counta}%
\ifnum\c@pgfmath@counta=0\relax%
\edef\pgfmath@root{\pgfmath@root.\pgfmath@digit}%
\else%
\edef\pgfmath@root{\pgfmath@root\pgfmath@digit}%
\fi%
\ifnum\c@pgfmath@counta=-4\relax%
\let\pgfmath@next\pgfmath@sqrt@end%
\else%
\let\pgfmath@next\pgfmath@@@sqrt@%
\fi%
\expandafter\pgfmath@next\pgfmath@tokens%
}
\def\pgfmath@sqrt@end#1\pgfmath@{%
\edef\pgfmathresult{\pgfmath@root}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup}
\pgfmathdeclarefunction{pow}{2}{%
\begingroup%
\pgfmath@xa=#1pt%
\pgfmath@xb=#2pt%
\ifdim\pgfmath@xa=0pt\relax%
\ifdim\pgfmath@xb=0pt\relax%
\pgfmath@x=1pt\relax%
\else%
\pgfmath@x=0pt\relax%
\fi%
\else%
\afterassignment\pgfmath@x%
\expandafter\c@pgfmath@counta\the\pgfmath@xb\relax%
\ifnum\c@pgfmath@counta<0\relax%
\c@pgfmath@counta=-\c@pgfmath@counta%
\pgfmathreciprocal@{#1}%
\pgfmath@xa=\pgfmathresult pt\relax%
\fi
\ifdim\pgfmath@x=0pt\relax%
\pgfmath@x=1pt\relax%
\pgfmathloop%
\ifnum\c@pgfmath@counta>0\relax%
\ifodd\c@pgfmath@counta%
\pgfmath@x=\pgfmath@tonumber{\pgfmath@x}\pgfmath@xa%
\fi
\ifnum\c@pgfmath@counta>1\relax%
\pgfmath@xa=\pgfmath@tonumber{\pgfmath@xa}\pgfmath@xa%
\fi%
\divide\c@pgfmath@counta by2\relax%
\repeatpgfmathloop%
\else%
\pgfmathln@{#1}%
\pgfmath@x=\pgfmathresult pt\relax%
\pgfmath@x=\pgfmath@tonumber{\pgfmath@xb}\pgfmath@x%
\pgfmathexp@{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@x=\pgfmathresult pt\relax%
\fi%
\fi
\pgfmath@returnone\pgf@x%
\endgroup%
}
\pgfmathdeclarefunction{factorial}{1}{%
\begingroup%
\afterassignment\pgfmath@gobbletilpgfmath@%
\c@pgfmath@counta=#1\relax\pgfmath@%
\pgfmath@x=1pt\relax%
\pgfmathloop%
\ifnum\c@pgfmath@counta<2\relax%
\else%
\multiply\pgfmath@x by\c@pgfmath@counta%
\advance\c@pgfmath@counta by-1\relax%
\repeatpgfmathloop%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.basic.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.code.tex ====
\def\pgfmathdeclarefunction{\pgfmath@ifnextchar*\pgfmathdeclarefunction@force\pgfmathdeclarefunction@check}
\def\pgfmathdeclarefunction@check#1{%
\expandafter\ifx\csname pgfmath@function@#1\endcsname\relax\else%
\pgfmath@error{The function `#1' already exists}{}%
\fi%
\pgfmath@declarefunction{#1}%
}
\def\pgfmathdeclarefunction@force*{\pgfmath@declarefunction}%
\def\pgfmathredeclarefunction#1#2{%
\expandafter\ifx\csname pgfmath@function@#1\endcsname\relax%
\pgfmath@error{The function `#1' does not exist}{}%
\else%
\edef\pgf@marshal{\noexpand\pgfmathdeclarefunction*{#1}{\csname pgfmath@operation@#1@arity\endcsname}}%
\pgf@marshal{#2}%
\fi%
}
\def\pgfmath@declarefunction#1#2{%
\pgfmath@namedef{pgfmath@function@#1}{#1}%
\pgfmath@namedef{pgfmath@operation@#1@type}{function}%
\pgfmath@namedef{pgfmath@operation@#1@arity}{#2}%
\pgfmath@namedef{pgfmath@operation@#1@infix}{#1}%
\pgfmath@namedef{pgfmath@operation@#1@precedence}{1000}%
\expandafter\ifx\csname pgfmath@operation@#1@arity\endcsname\pgfmath@dots%
\pgfmath@namedef{pgfmath@operation@#1@arity}{1}%
\else%
\ifnum\csname pgfmath@operation@#1@arity\endcsname>9\relax%
\pgfmath@namedef{pgfmath@operation@#1@arity}{1}%
\fi%
\fi%
\edef\pgfmath@marshal{%
\noexpand\pgfmath@@declarefunction%
{\expandafter\noexpand\csname pgfmath#1\endcsname}%
{\expandafter\noexpand\csname pgfmath#1@\endcsname}%
{\csname pgfmath@operation@#1@arity\endcsname}%
}%
\pgfkeysvalueof{/pgf/declare function/execute at begin function}%
\pgfmath@marshal%
}
\def\pgfmath@@declarefunction#1#2#3#4{%
\pgfkeysvalueof{/pgf/declare function/execute at end function}%
\ifcase#3\relax%
\def#1{#2}%
\def\pgfmath@@head{\def#2}%
\or
\def#1##1{\pgfmathparse{##1}\expandafter#2\expandafter{\pgfmathresult}}%
\def\pgfmath@@head{\def#2####1}%
\else%
\pgfmath@toks={}%
\pgfmathloop%
\ifnum\pgfmathcounter>#3\relax%
\else%
\expandafter\pgfmath@addto@toks\expandafter{\pgfmath@char@hash}%
\expandafter\pgfmath@addto@toks\expandafter{\pgfmathcounter}%
\repeatpgfmathloop%
\edef\pgfmath@head{\noexpand\def\noexpand#1\the\pgfmath@toks}%
\edef\pgfmath@@head{\noexpand\def\noexpand#2\the\pgfmath@toks}%
\pgfmath@toks={}%
\def\pgfmath@arguments{}%
\pgfmathloop%
\ifnum\pgfmathcounter>#3\relax%
\else%
\pgfmath@addto@toks{\pgfmathparse}%
\expandafter\expandafter\expandafter\pgfmath@addto@toks%
\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
{\expandafter\pgfmath@char@hash\pgfmathcounter}}%
\pgfmath@addto@toks{\let}%
\expandafter\pgfmath@addto@toks\expandafter{%
\csname pgfmath@argument@\pgfmathcounter\endcsname=\pgfmathresult}%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
\pgfmath@arguments\expandafter\expandafter\expandafter{\expandafter%
\pgfmath@arguments\expandafter{\csname pgfmath@argument@\pgfmathcounter\endcsname}}%
\repeatpgfmathloop%
\expandafter\pgfmath@addto@toks\expandafter{\expandafter#2\pgfmath@arguments}%
\edef\pgfmath@body{{\the\pgfmath@toks}}%
\expandafter\pgfmath@head\pgfmath@body%
\fi%
\pgfmath@@head{#4}%
}
\def\pgfmath@addto@toks#1{%
\edef\pgfmath@toks@expanded{\the\pgfmath@toks}%
\expandafter\pgfmath@toks\expandafter{\pgfmath@toks@expanded#1}}
\pgfkeys{%
/pgf/declare function/.code={%
\pgfmath@local@functions#1@=@;%
},
/pgf/declare function/execute at begin function/.initial={},
/pgf/declare function/execute at end function/.initial={},
/pgf/declare function/ignore spaces/.is choice,
/pgf/declare function/ignore spaces/.default=true,
/pgf/declare function/ignore spaces/true/.style={%
/pgf/declare function/execute at begin function={%
\begingroup
\catcode`\^^I=9\relax
\catcode`\ =9\relax
\catcode`\~=10\relax
\endlinechar=`\ \relax
},
/pgf/declare function/execute at end function={%
\endgroup
},
},
/pgf/declare function/ignore spaces/false/.style={%
/pgf/declare function/execute at begin function={},
/pgf/declare function/execute at end function={},
},
}
\def\pgfmath@local@gobbleone#1{}
\def\pgfmath@local@at{@}%
\def\pgfmath@local@functions{%
\pgfutil@ifnextchar x{\pgfmath@local@@functions}{\pgfmath@local@@functions}%
}
\def\pgfmath@local@@functions#1=#2;{%
\def\pgfmath@local@temp{#1}%
\ifx\pgfmath@local@temp\pgfmath@local@at%
\let\pgfmath@local@next=\relax%
\else%
\pgfmath@local@function#1=#2;%
\let\pgfmath@local@next=\pgfmath@local@functions%
\fi%
\pgfmath@local@next%
}
\def\pgfmath@local@function{%
\let\pgfmath@local@name=\pgfutil@empty%
\let\pgfmath@local@args=\pgfutil@empty%
\let\pgfmath@local@body=\pgfutil@empty%
\pgfmath@local@@function}
\def\pgfmath@local@@function#1{%
\if#1=%
\let\pgfmath@local@next=\pgfmath@local@function@body%
\else%
\if#1(%
\let\pgfmath@local@next=\pgfmath@local@function@args%
\else%
\expandafter\def\expandafter\pgfmath@local@name\expandafter{\pgfmath@local@name#1}%
\let\pgfmath@local@next=\pgfmath@local@@function%
\fi%
\fi%
\pgfmath@local@next%
}
\def\pgfmath@local@function@args#1){%
\def\pgfmath@local@args{#1}%
\pgfmath@local@@function}
\def\pgfmath@local@function@body#1;{%
\def\pgfmath@local@body{#1}%
\begingroup%
\c@pgf@counta=0\relax%
\ifx\pgfmath@local@args\pgfmath@empty%
\expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@body}%
\else%
\pgfmath@toks={}%
\expandafter\pgfmath@local@function@@body\pgfmath@local@args,,%
\fi%
\xdef\pgfmath@local@temp{%
\noexpand\pgfmathnotifynewdeclarefunction{\pgfmath@local@name}{\the\c@pgf@counta}%
{\the\pgfmath@toks}%
}%
\endgroup%
\pgfmath@local@temp%
}
\def\pgfmathnotifynewdeclarefunction#1#2#3{%
\pgfmathdeclarefunction{#1}{#2}{\pgfmathparse{#3}}%
}%
\def\pgfmath@local@function@@body#1,{%
\def\pgfmath@local@test{#1}%
\ifx\pgfmath@local@test\pgfutil@empty%
\let\pgfmath@local@next=\relax%
\else%
\edef\pgfmath@local@var@string{@\expandafter\pgfmath@local@gobbleone\string#1}%
\advance\c@pgf@counta by1\relax%
\expandafter\expandafter\expandafter\pgfmath@toks\expandafter\expandafter\expandafter=%
\expandafter\expandafter\expandafter{\expandafter\pgfmath@char@hash\the\c@pgf@counta}%
\edef#1{\the\pgfmath@toks}%
\pgfmath@toks={}%
\expandafter\pgfmath@local@function@@@body\pgfmath@local@body @%
\edef\pgfmath@local@body{\the\pgfmath@toks}%
\let\pgfmath@local@next=\pgfmath@local@function@@body%
\fi%
\pgfmath@local@next%
}
\def\pgfmath@local@function@@@body{%
\pgfutil@ifnextchar\bgroup{\pgfmath@local@function@@@body@bgroup}%
{\pgfmath@local@function@@@body@nobgroup}}%
\def\pgfmath@local@function@@@body@bgroup#1{%
\begingroup%
\pgfmath@toks={}%
\pgfmath@local@function@@@body#1 @%
\xdef\pgfmath@local@temp{{\the\pgfmath@toks}}%
\endgroup%
\expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@temp}%
\pgfmath@local@function@@@body%
}
\def\pgfmath@local@function@@@body@nobgroup#1{%
\ifx#1@%
\let\pgfmath@local@next=\relax%
\else%
\let\pgfmath@local@next=\pgfmath@local@function@@@body%
\edef\pgfmath@local@var@@string{@\expandafter\pgfmath@local@gobbleone\string#1}%
\ifx\pgfmath@local@var@@string\pgfmath@local@var@string%
\expandafter\pgfmath@addto@toks\expandafter{#1}%
\else%
\edef\pgfmath@local@temp{\the\pgfmath@toks}%
\pgfmath@toks={#1}%
\edef\pgfmath@local@@temp{\the\pgfmath@toks}%
\expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@temp}%
\expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@@temp}%
\fi%
\fi%
\pgfmath@local@next%
}
\def\pgfmathdeclarepseudoconstant#1#2{%
\pgfmathdeclarefunction*{#1}{0}{#2}%
}%
\def\pgfmathredeclarepseudoconstant#1#2{%
\pgfmathredeclarefunction{#1}{#2}%
}%
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.comparison.code.tex ====
\pgfmathdeclarefunction{greater}{2}{%
\begingroup%
\ifdim#1pt>#2pt\relax%
\def\pgfmathresult{1}%
\else%
\def\pgfmathresult{0}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\let\pgfmathgreaterthan=\pgfmathgreater
\pgfmathdeclarefunction{less}{2}{%
\begingroup%
\ifdim#1pt<#2pt\relax%
\def\pgfmathresult{1}%
\else%
\def\pgfmathresult{0}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\let\pgfmathlessthan=\pgfmathless
\pgfmathdeclarefunction{equal}{2}{%
\begingroup%
\ifdim#1pt=#2pt\relax%
\def\pgfmathresult{1}%
\else%
\def\pgfmathresult{0}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\let\pgfmathequalto=\pgfmathequal
\newif\ifpgfmathcomparison
\pgfmathdeclarefunction{approxequalto}{2}{%
\begingroup%
\pgfmath@x=#1pt\relax%
\pgfmath@y=#2pt\relax%
\advance\pgfmath@x by-\pgfmath@y%
\ifdim\pgfmath@x<0pt\relax%
\multiply\pgfmath@x by-1\relax%
\fi
\ifdim\pgfmath@x<0.0001pt\relax%
\def\pgfmathresult{1.0}%
\global\pgfmathcomparisontrue%
\else%
\def\pgfmathresult{0.0}%
\global\pgfmathcomparisonfalse%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{ifthenelse}{3}{%
\begingroup%
\ifdim#1pt=0.0pt\relax%
\expandafter\def\expandafter\pgfmathresult\expandafter{#3}%
\else%
\expandafter\def\expandafter\pgfmathresult\expandafter{#2}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{notequal}{2}{%
\begingroup%
\ifdim#1pt=#2pt\relax%
\def\pgfmathresult{0}%
\else%
\def\pgfmathresult{1}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{notless}{2}{%
\begingroup%
\ifdim#1pt<#2pt\relax%
\def\pgfmathresult{0}%
\else%
\def\pgfmathresult{1}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{notgreater}{2}{%
\begingroup%
\ifdim#1pt>#2pt\relax%
\def\pgfmathresult{0}%
\else%
\def\pgfmathresult{1}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{and}{2}{%
\begingroup%
\def\pgfmathresult{1}%
\ifdim#1pt=0pt\relax%
\def\pgfmathresult{0}%
\else%
\ifdim#2pt=0pt\relax%
\def\pgfmathresult{0}%
\fi%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{or}{2}{%
\begingroup%
\def\pgfmathresult{0}%
\ifdim#1pt=0pt\relax%
\ifdim#2pt=0pt\relax%
\else%
\def\pgfmathresult{1}%
\fi%
\else%
\def\pgfmathresult{1}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{not}{1}{%
\begingroup%
\ifdim#1pt=0pt\relax%
\def\pgfmathresult{1}%
\else%
\def\pgfmathresult{0}%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{true}{0}{\def\pgfmathresult{1}}
\pgfmathdeclarefunction{false}{0}{\def\pgfmathresult{0}}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.comparison.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.integerarithmetics.code.tex ====
\pgfmathdeclarefunction{gcd}{2}{%
\begingroup
\pgfmathcontinuelooptrue
\pgfmath@xa=#1pt
\pgfmath@xb=#2pt
\ifdim\pgfmath@xa=0pt\relax
\pgfmathcontinueloopfalse
\pgfmath@xa=\pgfmath@xb
\fi
\ifdim\pgfmath@xb=0pt\relax
\pgfmathcontinueloopfalse
\pgfmath@xb=\pgfmath@xa
\fi
\ifdim\pgfmath@xa<0pt\relax
\pgfmath@xa=-\pgfmath@xa
\fi
\ifdim\pgfmath@xb<0pt\relax
\pgfmath@xb=-\pgfmath@xb
\fi
\loop
\ifpgfmathcontinueloop
\ifdim\pgfmath@xa=\pgfmath@xb
\pgfmathcontinueloopfalse
\else
\ifdim\pgfmath@xa>\pgfmath@xb
\advance\pgfmath@xa by-\pgfmath@xb
\else
\advance\pgfmath@xb by-\pgfmath@xa
\fi
\fi
\repeat
\pgfmathparse{int(\pgfmath@xa)}%
\pgfmath@smuggleone\pgfmathresult
\endgroup}
\newif\ifpgfmath@isprime@unknown
\newif\ifpgfmath@isprime
\pgfmathdeclarefunction{isprime}{1}{%
\begingroup
\pgfmath@isprime@unknowntrue
\pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
\ifcase\c@pgfmath@counta\relax
\pgfmath@isprimefalse
\pgfmath@isprime@unknownfalse
\or
\pgfmath@isprimefalse
\pgfmath@isprime@unknownfalse
\or
\pgfmath@isprimetrue
\pgfmath@isprime@unknownfalse
\or
\pgfmath@isprimetrue
\pgfmath@isprime@unknownfalse
\else
\ifodd\c@pgfmath@counta\relax
\else
\pgfmath@isprimefalse
\pgfmath@isprime@unknownfalse
\fi
\fi
\ifpgfmath@isprime@unknown
\c@pgfmath@countd=3
\pgfmath@isprimetrue
\pgfmathloop
\c@pgfmath@countb=\c@pgfmath@counta
\divide\c@pgfmath@countb by\c@pgfmath@countd
\ifnum\c@pgfmath@countb>\c@pgfmath@countd
\pgfmath@isprime@unknowntrue
\else
\pgfmath@isprime@unknownfalse
\fi
\multiply\c@pgfmath@countb by\c@pgfmath@countd
\ifnum\c@pgfmath@countb=\c@pgfmath@counta
\global\pgfmath@isprimefalse
\pgfmath@isprime@unknownfalse
\fi
\ifpgfmath@isprime@unknown\advance\c@pgfmath@countd by 2
\repeatpgfmathloop
\fi
\ifpgfmath@isprime
\def\pgfmathresult{1}%
\else
\def\pgfmathresult{0}%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup}
\pgfmathdeclarefunction{isodd}{1}{%
\begingroup
\pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
\ifodd\c@pgfmath@counta
\def\pgfmathresult{1}%
\else
\def\pgfmathresult{0}%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup}
\pgfmathdeclarefunction{iseven}{1}{%
\begingroup
\pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
\ifodd\c@pgfmath@counta
\def\pgfmathresult{0}%
\else
\def\pgfmathresult{1}%
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.integerarithmetics.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.misc.code.tex ====
\pgfmathdeclarefunction{veclen}{2}{%
\begingroup%
\pgfmath@x#1pt\relax%
\pgfmath@y#2pt\relax%
\ifdim\pgfmath@x<0pt\relax%
\pgfmath@x-\pgfmath@x%
\fi%
\ifdim\pgfmath@y<0pt\relax%
\pgfmath@y-\pgfmath@y%
\fi%
\ifdim\pgfmath@x=0pt\relax%
\pgfmath@x\pgfmath@y%
\else%
\ifdim\pgfmath@y=0pt\relax%
\else%
\ifdim\pgfmath@x>\pgfmath@y%
\pgfmath@xa\pgfmath@x%
\pgfmath@x\pgfmath@y%
\pgfmath@y\pgfmath@xa%
\fi%
\ifdim\pgfmath@y>10000pt\relax%
\c@pgfmath@counta1500\relax%
\else%
\ifdim\pgfmath@y>1000pt\relax%
\c@pgfmath@counta150\relax%
\else%
\ifdim\pgfmath@y>100pt\relax%
\c@pgfmath@counta50\relax%
\else%
\c@pgfmath@counta1\relax%
\fi%
\fi%
\fi%
\divide\pgfmath@x\c@pgfmath@counta\relax%
\divide\pgfmath@y\c@pgfmath@counta\relax%
\pgfmathreciprocal@{\pgfmath@tonumber{\pgfmath@y}}%
\pgfmath@x\pgfmathresult\pgfmath@x%
\pgfmath@xa\pgfmath@tonumber{\pgfmath@x}\pgfmath@x%
\edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@xa}}%
\pgfmath@x-0.01019210944\pgfmath@xa%
\advance\pgfmath@x0.04453994279pt\relax%
\pgfmath@x\pgfmath@temp\pgfmath@x%
\advance\pgfmath@x-0.1195159052pt\relax%
\pgfmath@x\pgfmath@temp\pgfmath@x%
\advance\pgfmath@x0.4993615349pt\relax%
\pgfmath@x\pgfmath@temp\pgfmath@x%
\advance\pgfmath@x1.000012594pt\relax%
\ifdim\pgfmath@y<0pt\relax%
\pgfmath@y-\pgfmath@y%
\fi%
\pgfmath@x\pgfmath@tonumber{\pgfmath@y}\pgfmath@x%
\multiply\pgfmath@x\c@pgfmath@counta\relax%
\fi%
\fi%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{cosh}{1}{%
\begingroup
\edef\pgfmath@arg{#1}%
\pgfmathexp@{\pgfmath@arg}%
\pgfmath@x=\pgfmathresult pt\relax%
\pgfmathexp@{-\pgfmath@arg}%
\advance\pgfmath@x by\pgfmathresult pt\relax%
\divide\pgfmath@x by2\relax%
\pgfmath@returnone\pgfmath@x%
\endgroup}
\pgfmathdeclarefunction{sinh}{1}{%
\begingroup
\edef\pgfmath@arg{#1}%
\pgfmathexp@{\pgfmath@arg}%
\pgfmath@x=\pgfmathresult pt\relax%
\pgfmathexp@{-\pgfmath@arg}%
\advance\pgfmath@x by-\pgfmathresult pt\relax%
\divide\pgfmath@x by2\relax%
\pgfmath@returnone\pgfmath@x%
\endgroup
}%
\pgfmathdeclarefunction{tanh}{1}{%
\begingroup
\edef\pgfmath@arg{#1}%
\pgfmathsinh@{\pgfmath@arg}%
\pgfmath@x=\pgfmathresult pt\relax%
\pgfmathcosh@{\pgfmath@arg}%
\pgfmath@y=\pgfmathresult pt\relax%
\pgfmathdivide@{\pgfmath@tonumber{\pgfmath@x}}{\pgfmath@tonumber{\pgfmath@y}}%
\pgfmath@x=\pgfmathresult pt\relax%
\pgfmath@returnone\pgfmath@x%
\endgroup
}%
\def\pgfmathscientific#1#2{%
\begingroup%
\edef\pgfmath@sci@exponent{#2}%
\pgfmath@x#1pt\relax%
\ifdim\pgfmath@x<0pt\relax%
\pgfmath@x-\pgfmath@x%
\edef\pgfmath@sci@sign{-}%
\expandafter\edef\expandafter\pgfmath@temp\expandafter{\expandafter\pgfmath@gobbleone#1}%
\else%
\edef\pgfmath@sci@sign{+}%
\edef\pgfmath@temp{#1}%
\fi%
\expandafter\pgfmath@in@\expandafter.\expandafter{#1}%
\ifpgfmath@in@%
\else%
\edef\pgfmath@temp{\pgfmath@temp.0}%
\fi%
\expandafter\pgfmath@scientific@@\pgfmath@temp00000000000\pgfmath@}
\def\pgfmath@scientific@@#1.#2#3#4#5#6{%
\edef\pgfmath@sci@int{#1}%
\edef\pgfmath@sci@mantissaA{#2#3#4#5#6}%
\pgfmath@scientific@@@}
\def\pgfmath@scientific@@@#1#2#3#4#5#6\pgfmath@{%
\edef\pgfmath@sci@mantissaB{#1#2#3#4#5}%
\c@pgfmath@counta\pgfmath@sci@exponent\relax%
\ifnum\c@pgfmath@counta<-4\relax%
\pgfmath@x0pt\relax%
\else%
\c@pgfmath@countb\c@pgfmath@counta%
\ifnum\c@pgfmath@counta<0\relax%
\c@pgfmath@counta-\c@pgfmath@counta%
\fi%
\pgfmathpow@{10}{\the\c@pgfmath@counta}%
\afterassignment\pgfmath@gobbletilpgfmath@
\c@pgfmath@countc\pgfmathresult\relax\pgfmath@
\edef\pgfmath@sci@factor{\the\c@pgfmath@countc}%
\ifnum\c@pgfmath@countb<0\relax%
\pgfmath@x\pgfmath@sci@int.\pgfmath@sci@mantissaA pt\relax%
\divide\pgfmath@x\pgfmath@sci@factor\relax%
\else%
\c@pgfmath@counta\pgfmath@sci@int%
\c@pgfmath@countb\pgfmath@sci@mantissaA%
\multiply\c@pgfmath@counta\pgfmath@sci@factor\relax%
\multiply\c@pgfmath@countb\pgfmath@sci@factor\relax%
\c@pgfmath@countc\c@pgfmath@countb%
\divide\c@pgfmath@countb100000\relax%
\advance\c@pgfmath@counta\c@pgfmath@countb%
\multiply\c@pgfmath@countb100000\relax%
\advance\c@pgfmath@countc-\c@pgfmath@countb%
\c@pgfmath@countb\pgfmath@sci@mantissaB\relax%
\multiply\c@pgfmath@countb\pgfmath@sci@factor\relax%
\divide\c@pgfmath@countb100000\relax%
\advance\c@pgfmath@countc\c@pgfmath@countb%
\advance\c@pgfmath@countc100000\relax%
\edef\pgfmath@sci@result{\pgfmath@sci@sign\the\c@pgfmath@counta.\expandafter\pgfmath@gobbleone\the\c@pgfmath@countc pt}%
\pgfmath@x\pgfmath@sci@result\relax%
\fi\fi%
\pgfmath@returnone\pgfmath@x%
\endgroup}
\pgfmathdeclarefunction{width}{1}{%
\begingroup%
\setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
\pgfmath@x=\wd\pgfmath@box%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{height}{1}{%
\begingroup%
\setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
\pgfmath@x=\ht\pgfmath@box%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{depth}{1}{%
\begingroup%
\setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
\pgfmath@x=\dp\pgfmath@box%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
\pgfmathdeclarefunction{array}{2}{%
\begingroup%
\afterassignment\pgfmath@gobbletilpgfmath@\pgfmath@count=#2\relax\pgfmath@%
\expandafter\pgfmatharray@@#1\pgfmath@stop%
}
\def\pgfmath@token@stop{\pgfmath@stop}%
\def\pgfmatharray@@#1{%
\def\pgfmath@temp{#1}%
\advance\pgfmath@count by-1\relax%
\ifx\pgfmath@temp\pgfmath@token@stop%
\pgfmath@error{Array index out of bounds.}{}%
\def\pgfmathresult{0}%
\pgfmath@smuggleone\pgfmathresult\endgroup%
\let\pgfmath@next=\relax%
\else%
\ifnum\pgfmath@count=-1\relax%
\def\pgfmathresult{#1}%
\let\pgfmath@next=\pgfmatharray@@@%
\else%
\let\pgfmath@next=\pgfmatharray@@%
\fi%
\fi%
\pgfmath@next}
\def\pgfmatharray@@@#1\pgfmath@stop{%
\pgfmath@smuggleone\pgfmathresult\endgroup%
}
\pgfmathdeclarefunction{dim}{1}{%
\begingroup
\pgfmath@count=0\relax
\expandafter\pgfmath@dim@i\pgfutil@firstofone#1{\pgfmath@token@stop}%
\edef\pgfmathresult{\the\pgfmath@count}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup}
\def\pgfmath@dim@i#1#{%
\pgfutil@ifempty{#1}{}{\advance\pgfmath@count by 1}%
\pgfmath@dim@ii{#1}}
\def\pgfmath@dim@ii#1#2{%
\ifx\pgfmath@token@stop#2%
\else
\advance\pgfmath@count by 1\relax
\expandafter\pgfmath@dim@i
\fi}
\pgfmathdeclarefunction{max}{...}{%
\begingroup%
\pgfmath@x=-16383pt\relax%
\pgfmathmax@@#1{}}
\def\pgfmathmax@@#1{%
\def\pgfmath@temp{#1}%
\ifx\pgfmath@temp\pgfmath@empty%
\let\pgfmath@next=\pgfmathmax@@@%
\else%
\ifdim#1pt>\pgfmath@x%
\pgfmath@x=#1pt\relax%
\fi%
\let\pgfmath@next=\pgfmathmax@@%
\fi%
\pgfmath@next}
\def\pgfmathmax@@@{\pgfmath@returnone\pgfmath@x\endgroup}%
\def\pgfmathmax#1#2{%
\pgfmathparse{#1,#2}%
\expandafter\pgfmathmax@\expandafter{\pgfmathresult}%
}
\pgfmathdeclarefunction{min}{...}{%
\begingroup%
\pgfmath@x=16383pt\relax%
\pgfmathmin@@#1{}}
\def\pgfmathmin@@#1{%
\def\pgfmath@temp{#1}%
\ifx\pgfmath@temp\pgfmath@empty%
\let\pgfmath@next=\pgfmathmin@@@%
\else%
\ifdim#1pt<\pgfmath@x%
\pgfmath@x=#1pt\relax%
\fi%
\let\pgfmath@next=\pgfmathmin@@%
\fi%
\pgfmath@next}
\def\pgfmathmin@@@{\pgfmath@returnone\pgfmath@x\endgroup}%
\def\pgfmathmin#1#2{%
\pgfmathparse{#1,#2}%
\expandafter\pgfmathmin@\expandafter{\pgfmathresult}%
}
\pgfmathdeclarefunction{scalar}{1}{%
\def\pgfmathresult{#1}%
\global\pgfmathunitsdeclaredfalse%
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.misc.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.random.code.tex ====
\def\pgfmath@rnd@m{2147483647}%
\begingroup
\c@pgfmath@counta=\time%
\multiply\c@pgfmath@counta by\year%
\ifnum\c@pgfmath@counta=0
\c@pgfmath@counta=1
\fi
\xdef\pgfmath@rnd@z{\the\c@pgfmath@counta}%
\endgroup
\def\pgfmathsetseed#1{%
\pgfmathparse{#1}\expandafter\pgfmath@setseed\pgfmathresult.0\pgfmath@stop
}%
\def\pgfmath@setseed#1.#2\pgfmath@stop{\def\pgfmath@rnd@z{#1}}%
\def\pgfmath@rnd@a{69621}
\def\pgfmath@rnd@r{23902}
\def\pgfmath@rnd@q{30845}
\def\pgfmathgeneratepseudorandomnumber{%
\begingroup%
\c@pgfmath@counta=\pgfmath@rnd@z%
\c@pgfmath@countb=\pgfmath@rnd@z%
\c@pgfmath@countc=\pgfmath@rnd@q%
\divide\c@pgfmath@counta by\c@pgfmath@countc%
\multiply\c@pgfmath@counta by-\c@pgfmath@countc%
\advance\c@pgfmath@counta by\c@pgfmath@countb
\c@pgfmath@countc=\pgfmath@rnd@a%
\multiply\c@pgfmath@counta by\c@pgfmath@countc%
\c@pgfmath@countc=\pgfmath@rnd@q%
\divide\c@pgfmath@countb by\c@pgfmath@countc%
\c@pgfmath@countc=\pgfmath@rnd@r%
\multiply\c@pgfmath@countb by\c@pgfmath@countc%
\advance\c@pgfmath@counta by-\c@pgfmath@countb%
\ifnum\c@pgfmath@counta<0\relax%
\c@pgfmath@countb=\pgfmath@rnd@m%
\advance\c@pgfmath@counta by\c@pgfmath@countb%
\fi%
\xdef\pgfmath@rnd@z{\the\c@pgfmath@counta}%
\endgroup%
\edef\pgfmathresult{\pgfmath@rnd@z}%
}
\pgfmathdeclarefunction{rnd}{0}{%
\begingroup%
\pgfmathgeneratepseudorandomnumber%
\c@pgfmath@counta\pgfmathresult%
\c@pgfmath@countb\c@pgfmath@counta%
\divide\c@pgfmath@countb100001\relax%
\multiply\c@pgfmath@countb-100001\relax%
\advance\c@pgfmath@countb\c@pgfmath@counta%
\advance\c@pgfmath@countb1000000\relax%
\expandafter\pgfmathrnd@@\the\c@pgfmath@countb\pgfmath@%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}%
\def\pgfmathrnd@@#1#2#3\pgfmath@{%
\edef\pgfmath@temp{#2.#3}%
\pgfmath@x=\pgfmath@temp pt\relax%
}%
\pgfmathdeclarefunction{rand}{0}{%
\begingroup%
\pgfmathgeneratepseudorandomnumber%
\c@pgfmath@counta\pgfmathresult%
\c@pgfmath@countb\c@pgfmath@counta%
\divide\c@pgfmath@countb200001\relax%
\multiply\c@pgfmath@countb-200001\relax%
\advance\c@pgfmath@countb\c@pgfmath@counta%
\advance\c@pgfmath@countb-100000\relax%
\ifnum\c@pgfmath@countb<0\relax%
\advance\c@pgfmath@countb-1000000\relax%
\else%
\advance\c@pgfmath@countb1000000\relax%
\fi%
\expandafter\pgfmathrand@@\the\c@pgfmath@countb\pgfmath@%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}%
\def\pgfmathrand@@#1#2#3#4\pgfmath@{%
\ifx#1-%
\edef\pgfmath@temp{-#3.#4}%
\else%
\edef\pgfmath@temp{#2.#3#4}%
\fi%
\pgfmath@x=\pgfmath@temp pt\relax%
}%
\pgfmathdeclarefunction{random}{...}{%
\begingroup%
\def\pgfmath@temp{#1}%
\ifx\pgfmath@temp\pgfmath@empty%
\pgfmathrnd@%
\else%
\expandafter\pgfmathrandom@@#1\pgfmath@stop%
\fi%
\pgfmath@smuggleone\pgfmathresult%
\endgroup}
\def\pgfmathrandom@@{\futurelet\pgfmath@token\pgfmathrandom@@@}
\def\pgfmathrandom@@@{%
\ifx\pgfmath@token\bgroup%
\expandafter\pgfmath@random@@@@%
\else%
\expandafter\pgfmath@random@@@@@%
\fi%
}
\def\pgfmath@random@@@@@#1\pgfmath@stop{%
\pgfmathrandominteger\pgfmathresult{1}{#1}%
}
\def\pgfmath@random@@@@#1#2\pgfmath@stop{%
\pgfmathrandominteger\pgfmathresult{#1}{#2}%
}
\def\pgfmathrandominteger#1#2#3{%
\begingroup%
\pgfmathsetcount\c@pgfmath@counta{#2}%
\pgfmathsetcount\c@pgfmath@countb{#3}%
\c@pgfmath@countc\c@pgfmath@countb%
\ifnum\c@pgfmath@counta>\c@pgfmath@countb\relax%
\c@pgfmath@countc\c@pgfmath@counta%
\c@pgfmath@counta\c@pgfmath@countb%
\c@pgfmath@countb\c@pgfmath@countc%
\fi%
\c@pgfmath@countd\c@pgfmath@counta
\advance\c@pgfmath@countc1\relax%
\advance\c@pgfmath@countc-\c@pgfmath@counta%
\pgfmathgeneratepseudorandomnumber%
\c@pgfmath@counta\pgfmathresult\relax%
\c@pgfmath@countb\c@pgfmath@counta%
\divide\c@pgfmath@countb\c@pgfmath@countc%
\multiply\c@pgfmath@countb-\c@pgfmath@countc%
\advance\c@pgfmath@counta\c@pgfmath@countb%
\advance\c@pgfmath@counta\c@pgfmath@countd
\edef\pgfmathresult{\the\c@pgfmath@counta}%
\pgfmath@smuggleone{\pgfmathresult}%
\endgroup%
\edef#1{\pgfmathresult}%
}
\def\pgfmathdeclarerandomlist#1#2{%
\def\pgfmath@randomlistname{#1}%
\begingroup%
\c@pgfmath@counta=1\relax%
\def\pgfmath@empty{pgfmath@empty}%
\expandafter\pgfmath@scanrandomlist#2{pgfmath@empty}}
\def\pgfmath@scanrandomlist#1{%
\def\pgfmath@scanneditem{#1}%
\ifx\pgfmath@scanneditem\pgfmath@empty%
\advance\c@pgfmath@counta-1\relax%
\expandafter\xdef\csname pgfmath@randomlist@\pgfmath@randomlistname\endcsname{\the\c@pgfmath@counta}%
\endgroup%
\else%
\expandafter\gdef\csname pgfmath@randomlist@\pgfmath@randomlistname @\the\c@pgfmath@counta\endcsname{#1}%
\advance\c@pgfmath@counta1\relax%
\expandafter\pgfmath@scanrandomlist%
\fi}
\def\pgfmathrandomitem#1#2{%
\pgfmath@ifundefined{pgfmath@randomlist@#2}{\pgfmath@error{Unknown random list `#2'}{}}{%
\edef\pgfmath@randomlistlength{\csname pgfmath@randomlist@#2\endcsname}%
\pgfmathrandominteger{\pgfmath@randomtemp}{1}{\pgfmath@randomlistlength}%
\expandafter\def\expandafter#1\expandafter{\csname pgfmath@randomlist@#2@\pgfmath@randomtemp\endcsname}}}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.random.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.round.code.tex ====
\pgfmathdeclarefunction{round}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\afterassignment\pgfmath@xa%
\expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
\pgfmath@xb\pgfmath@x%
\ifdim\pgfmath@xb<0pt\relax%
\ifdim\pgfmath@xa<0.5pt\relax%
\else%
\advance\c@pgfmath@counta-1\relax%
\fi%
\else%
\ifdim\pgfmath@xa<0.5pt\relax%
\else%
\advance\c@pgfmath@counta1\relax%
\fi%
\fi%
\pgfmath@returnone\the\c@pgfmath@counta pt%
\endgroup%
}%
\pgfmathdeclarefunction{floor}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\afterassignment\pgfmathfloor@collect@remainder%
\expandafter\c@pgfmath@counta\the\pgfmath@x\pgfmath@%
\expandafter\pgfmath@x#1pt\relax%
\ifdim\pgfmath@x<0pt\relax%
\ifdim\pgfmathfloor@remainder>0pt
\advance\c@pgfmath@counta by -1\relax%
\else
\fi
\fi%
\pgfmath@x\c@pgfmath@counta pt\relax%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}%
\def\pgfmathfloor@collect@remainder#1\pgfmath@{%
\def\pgfmathfloor@remainder{#1}%
\ifx\pgfmathfloor@remainder\pgfutil@empty
\def\pgfmathfloor@remainder{0}%
\fi
}%
\pgfmathdeclarefunction{ceil}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\afterassignment\pgfmath@gobbletilpgfmath@%
\expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@%
\pgfmath@y\pgfmath@x%
\advance\pgfmath@y-\c@pgfmath@counta pt\relax%
\pgfmath@x\c@pgfmath@counta pt\relax%
\ifdim\pgfmath@y>0pt\relax%
\advance\pgfmath@x1pt\relax%
\fi%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}%
\pgfmathdeclarefunction{int}{1}{%
\begingroup%
\expandafter\pgfmathint@@#1.\pgfmath@stop
\pgfmath@smuggleone\pgfmathresult%
\endgroup}
\def\pgfmathint@@#1.#2\pgfmath@stop{%
\def\pgfmath@temp{#1}%
\ifx\pgfmath@temp\pgfmath@empty%
\def\pgfmathresult{0}%
\else%
\pgfmath@in@{#1}{+-+0-0}%
\ifpgfmath@in@
\def\pgfmathresult{0}%
\else%
\def\pgfmathresult{#1}%
\fi%
\fi}
\pgfmathdeclarefunction{frac}{1}{%
\begingroup%
\expandafter\pgfmathfrac@@#1.\pgfmath@stop%
\pgfmath@smuggleone\pgfmathresult%
\endgroup}
\def\pgfmathfrac@@#1.{%
\pgfmath@ifnextchar\pgfmath@stop{\def\pgfmathresult{0.0}\pgfmath@gobbleone}{\pgfmathfrac@@@}%
}
\def\pgfmathfrac@@@#1.\pgfmath@stop{\def\pgfmathresult{0.#1}}
\pgfmathdeclarefunction{real}{1}{%
\begingroup%
\pgfmath@x=#1pt\relax%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmath@smuggleone\pgfmathresult%
\endgroup%
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.round.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.trigonometric.code.tex ====
\pgfmathdeclarefunction{pi}{0}{\def\pgfmathresult{3.141592654}}
\pgfkeys{
/pgf/trig format/.is choice,
/pgf/trig format/deg/.code={\def\pgfmath@trig@format@choice{0}},
/pgf/trig format/rad/.code={\def\pgfmath@trig@format@choice{1}},
/pgf/trig format/deg,
}
\def\pgfmathiftrigonometricusesdeg#1#2{%
\if0\pgfmath@trig@format@choice
#1%
\else
#2%
\fi
}%
\pgfmathdeclarefunction{radians}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\pgfmath@x57.29577\pgfmath@x\relax%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}%
\pgfmathdeclarefunction{deg}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\pgfmath@scale@rad@to@deg\pgfmath@x
\pgfmath@returnone\pgfmath@x%
\endgroup%
}%
\def\pgfmath@scale@rad@to@deg#1{%
#1=57.29577#1\relax%
}%
\pgfmathdeclarefunction{rad}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\pgfmath@scale@deg@to@rad\pgfmath@x
\pgfmath@returnone\pgfmath@x%
\endgroup%
}%
\def\pgfmath@scale@deg@to@rad#1{%
#1=3.14159#1%
\divide#1180\relax%
}%
\pgfmathdeclarefunction{sin}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\if1\pgfmath@trig@format@choice
\pgfmath@scale@rad@to@deg\pgfmath@x
\fi
\advance\pgfmath@x-90pt\relax%
\afterassignment\pgfmath@gobbletilpgfmath@
\expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@
\divide\c@pgfmath@counta360\relax%
\multiply\c@pgfmath@counta-360\relax%
\advance\pgfmath@x\c@pgfmath@counta pt\relax%
\ifdim\pgfmath@x<0pt\relax\pgfmath@x-\pgfmath@x\fi%
\ifdim\pgfmath@x<180pt\relax%
\else
\pgfmath@x-\pgfmath@x%
\advance\pgfmath@x360pt\relax%
\fi%
\afterassignment\pgfmath@xa%
\expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
\ifdim\pgfmath@xa=0pt%
\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname pt\relax%
\else%
\pgfmath@x-\pgfmath@xa%
\advance\pgfmath@x1pt\relax%
\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@x%
\advance\c@pgfmath@counta1\relax%
\ifnum\c@pgfmath@counta=181\relax\c@pgfmath@counta179\relax\fi%
\expandafter\advance\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@xa%
\fi%
\pgfmath@returnone\pgfmath@x%
\endgroup
}
\pgfmathdeclarefunction{cos}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\if1\pgfmath@trig@format@choice
\pgfmath@scale@rad@to@deg\pgfmath@x
\fi
\afterassignment\pgfmath@gobbletilpgfmath@%
\expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@%
\divide\c@pgfmath@counta360\relax%
\multiply\c@pgfmath@counta-360\relax%
\advance\pgfmath@x\c@pgfmath@counta pt\relax%
\ifdim\pgfmath@x<0pt\relax\pgfmath@x-\pgfmath@x\fi%
\ifdim\pgfmath@x<180pt\relax%
\else%
\pgfmath@x-\pgfmath@x%
\advance\pgfmath@x360pt\relax%
\fi%
\afterassignment\pgfmath@xa%
\expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
\ifdim\pgfmath@xa=0pt%
\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname pt%
\else%
\pgfmath@x-\pgfmath@xa%
\advance\pgfmath@x1pt\relax%
\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@x%
\advance\c@pgfmath@counta1\relax%
\ifnum\c@pgfmath@counta=181\relax\c@pgfmath@counta179\relax\fi%
\expandafter\advance\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@xa%
\fi%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\def\pgfmathsincos#1{%
\pgfmathparse{#1}%
\expandafter\pgfmathsincos@\expandafter{\pgfmathresult}}
\def\pgfmathsincos@#1{%
\edef\pgfmath@temparg{#1}%
\pgfmathsin@{\pgfmath@temparg}\edef\pgfmathresulty{\pgfmathresult}%
\pgfmathcos@{\pgfmath@temparg}\edef\pgfmathresultx{\pgfmathresult}%
}
\pgfmathdeclarefunction{tan}{1}{%
\begingroup%
\edef\pgfmath@temparg{#1}%
\pgfmathcos@{\pgfmath@temparg}%
\expandafter\pgfmathreciprocal@\expandafter{\pgfmathresult}%
\edef\pgfmath@tantemp{\pgfmathresult}%
\pgfmathsin@{\pgfmath@temparg}%
\pgfmath@x\pgfmathresult pt\relax%
\pgfmath@x\pgfmath@tantemp\pgfmath@x%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{cosec}{1}{%
\expandafter\pgfmathsin@\expandafter{#1}%
\pgfmathreciprocal@{\pgfmathresult}%
}
\pgfmathdeclarefunction{sec}{1}{%
\expandafter\pgfmathcos@\expandafter{#1}%
\pgfmathreciprocal@{\pgfmathresult}%
}
\pgfmathdeclarefunction{cot}{1}{%
\begingroup%
\edef\pgfmath@temparg{#1}%
\pgfmathsin@{\pgfmath@temparg}%
\expandafter\pgfmathreciprocal@\expandafter{\pgfmathresult}%
\edef\pgfmath@tantemp{\pgfmathresult}%
\pgfmathcos@{\pgfmath@temparg}%
\pgfmath@x\pgfmathresult pt\relax%
\pgfmath@x\pgfmath@tantemp\pgfmath@x%
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\def\pgfmath@multiply@thousand#1.#2#3#4#5\relax{%
\edef\pgfmathresult{#1#2#3#4.#5}%
}%
\pgfmathdeclarefunction{asin}{1}{%
\begingroup%
\pgfmath@x=#1pt %
\pgfmath@xa\pgfmath@x%
\edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
\expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
\pgfmath@x=\pgfmathresult pt %
\ifdim\pgfmath@x<0pt\relax%
\pgfmath@x-\pgfmath@x%
\fi%
\pgfmath@table@lookup{\pgfmath@x}{pgfmath@acos@}{1001}%
\pgfmath@x=-\pgfmath@x
\advance\pgfmath@x90pt\relax%
\ifdim\pgfmath@xa<0pt\relax%
\pgfmath@x-\pgfmath@x%
\fi%
\if1\pgfmath@trig@format@choice
\pgfmath@scale@deg@to@rad\pgfmath@x
\fi
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\def\pgfmath@table@lookup#1#2#3{%
\pgfmath@x=#1\relax
\expandafter\pgfmath@table@lookup@\the\pgfmath@x\relax{#2}{#3}%
}
\def\pgfmath@table@lookup@#1.#2\relax#3#4{%
\edef\pgf@temp{\Pgf@geT#2}%
\pgfmath@x=\csname #3#1\endcsname pt %
\c@pgfmath@countc=#1 %
\advance\c@pgfmath@countc by1 %
\ifnum\c@pgfmath@countc<#4 %
\pgfmath@ya=\csname #3\the\c@pgfmath@countc\endcsname pt %
\advance\pgfmath@ya by-\pgfmath@x %
\advance\pgfmath@x by0.\pgf@temp\pgfmath@ya
\fi
}%
\pgfmathdeclarefunction{acos}{1}{%
\begingroup%
\pgfmath@x#1pt\relax%
\pgfmath@xa\pgfmath@x%
\edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
\expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
\pgfmath@x=\pgfmathresult pt %
\ifdim\pgfmath@x<0pt\relax%
\pgfmath@x-\pgfmath@x%
\fi%
\pgfmath@table@lookup{\pgfmath@x}{pgfmath@acos@}{1001}%
\ifdim\pgfmath@xa<0pt\relax%
\pgfmath@x-\pgfmath@x%
\advance\pgfmath@x by180pt\relax%
\fi%
\if1\pgfmath@trig@format@choice
\pgfmath@scale@deg@to@rad\pgfmath@x
\fi
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{atan}{1}{%
\begingroup%
\expandafter\pgfmath@x#1pt\relax%
\pgfmath@xa\pgfmath@x%
\ifdim\pgfmath@x<0pt\relax%
\pgfmath@x-\pgfmath@x%
\fi%
\pgfmath@xb\pgfmath@x%
\ifdim\pgfmath@x>1pt\relax%
\edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
\pgfmathreciprocal@{\pgfmath@temp}%
\pgfmath@x\pgfmathresult pt\relax%
\fi%
\edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
\expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
\pgfmath@x=\pgfmathresult pt %
\pgfmath@table@lookup{\pgfmath@x}{pgfmath@atan@}{1001}%
\ifdim\pgfmath@xb>1pt\relax%
\pgfmath@x=-\pgfmath@x%
\advance\pgfmath@x90pt%
\fi%
\ifdim\pgfmath@xa<0pt\relax%
\pgfmath@x-\pgfmath@x%
\fi%
\if1\pgfmath@trig@format@choice
\pgfmath@scale@deg@to@rad\pgfmath@x
\fi
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\pgfmathdeclarefunction{atan2}{2}{%
\begingroup%
\let\pgfmath@trig@format@choice@@=\pgfmath@trig@format@choice
\def\pgfmath@trig@format@choice{0}%
\pgfmath@y=#1pt\relax%
\ifdim\pgfmath@y<0pt\relax%
\pgfmath@y=-\pgfmath@y%
\fi%
\ifdim\pgfmath@y<0.001pt\relax%
\ifdim#2pt<0pt\relax%
\pgfmath@x=+180pt\relax%
\else%
\ifdim#2pt>0pt\relax%
\pgfmath@x=0pt\relax%
\else%
\ifdim#1pt<0pt%
\pgfmath@x=-90pt\relax%
\else%
\pgfmath@x=90pt\relax%
\fi%
\fi%
\fi%
\else%
\pgfmathabs@{#1}\let\pgfmath@tempa\pgfmathresult%
\pgfmathabs@{#2}\let\pgfmath@tempb\pgfmathresult%
\ifdim\pgfmath@tempa pt>\pgfmath@tempb pt%
\pgfmathdivide@{#2}{\pgfmath@tempa}%
\expandafter\pgfmathatan@\expandafter{\pgfmathresult}%
\pgfmath@x=90pt%
\advance\pgfmath@x by-\pgfmathresult pt\relax%
\else%
\pgfmathdivide@{\pgfmath@tempa}{#2}%
\expandafter\pgfmathatan@\expandafter{\pgfmathresult}%
\pgfmath@x=\pgfmathresult pt\relax%
\ifdim#2pt<0pt%
\advance\pgfmath@x by180pt\relax%
\fi%
\fi%
\ifdim#1pt<0pt\relax%
\pgfmath@x=-\pgfmath@x%
\fi%
\fi%
\if1\pgfmath@trig@format@choice@@
\pgfmath@scale@deg@to@rad\pgfmath@x
\fi
\pgfmath@returnone\pgfmath@x%
\endgroup%
}
\expandafter\let\expandafter\pgfmathatantwo\csname pgfmathatan2\endcsname
\expandafter\let\expandafter\pgfmathatantwo@\csname pgfmathatan2@\endcsname
\def\pgfmath@def#1#2#3{\expandafter\def\csname pgfmath@#1@#2\endcsname{#3}}
\pgfmath@def{cos}{0}{1.00000} \pgfmath@def{cos}{1}{0.99985}
\pgfmath@def{cos}{2}{0.99939} \pgfmath@def{cos}{3}{0.99863}
\pgfmath@def{cos}{4}{0.99756} \pgfmath@def{cos}{5}{0.99619}
\pgfmath@def{cos}{6}{0.99452} \pgfmath@def{cos}{7}{0.99255}
\pgfmath@def{cos}{8}{0.99027} \pgfmath@def{cos}{9}{0.98769}
\pgfmath@def{cos}{10}{0.98481} \pgfmath@def{cos}{11}{0.98163}
\pgfmath@def{cos}{12}{0.97815} \pgfmath@def{cos}{13}{0.97437}
\pgfmath@def{cos}{14}{0.97030} \pgfmath@def{cos}{15}{0.96593}
\pgfmath@def{cos}{16}{0.96126} \pgfmath@def{cos}{17}{0.95630}
\pgfmath@def{cos}{18}{0.95106} \pgfmath@def{cos}{19}{0.94552}
\pgfmath@def{cos}{20}{0.93969} \pgfmath@def{cos}{21}{0.93358}
\pgfmath@def{cos}{22}{0.92718} \pgfmath@def{cos}{23}{0.92050}
\pgfmath@def{cos}{24}{0.91355} \pgfmath@def{cos}{25}{0.90631}
\pgfmath@def{cos}{26}{0.89879} \pgfmath@def{cos}{27}{0.89101}
\pgfmath@def{cos}{28}{0.88295} \pgfmath@def{cos}{29}{0.87462}
\pgfmath@def{cos}{30}{0.86603} \pgfmath@def{cos}{31}{0.85717}
\pgfmath@def{cos}{32}{0.84805} \pgfmath@def{cos}{33}{0.83867}
\pgfmath@def{cos}{34}{0.82904} \pgfmath@def{cos}{35}{0.81915}
\pgfmath@def{cos}{36}{0.80902} \pgfmath@def{cos}{37}{0.79864}
\pgfmath@def{cos}{38}{0.78801} \pgfmath@def{cos}{39}{0.77715}
\pgfmath@def{cos}{40}{0.76604} \pgfmath@def{cos}{41}{0.75471}
\pgfmath@def{cos}{42}{0.74314} \pgfmath@def{cos}{43}{0.73135}
\pgfmath@def{cos}{44}{0.71934} \pgfmath@def{cos}{45}{0.70711}
\pgfmath@def{cos}{46}{0.69466} \pgfmath@def{cos}{47}{0.68200}
\pgfmath@def{cos}{48}{0.66913} \pgfmath@def{cos}{49}{0.65606}
\pgfmath@def{cos}{50}{0.64279} \pgfmath@def{cos}{51}{0.62932}
\pgfmath@def{cos}{52}{0.61566} \pgfmath@def{cos}{53}{0.60182}
\pgfmath@def{cos}{54}{0.58779} \pgfmath@def{cos}{55}{0.57358}
\pgfmath@def{cos}{56}{0.55919} \pgfmath@def{cos}{57}{0.54464}
\pgfmath@def{cos}{58}{0.52992} \pgfmath@def{cos}{59}{0.51504}
\pgfmath@def{cos}{60}{0.50000} \pgfmath@def{cos}{61}{0.48481}
\pgfmath@def{cos}{62}{0.46947} \pgfmath@def{cos}{63}{0.45399}
\pgfmath@def{cos}{64}{0.43837} \pgfmath@def{cos}{65}{0.42262}
\pgfmath@def{cos}{66}{0.40674} \pgfmath@def{cos}{67}{0.39073}
\pgfmath@def{cos}{68}{0.37461} \pgfmath@def{cos}{69}{0.35837}
\pgfmath@def{cos}{70}{0.34202} \pgfmath@def{cos}{71}{0.32557}
\pgfmath@def{cos}{72}{0.30902} \pgfmath@def{cos}{73}{0.29237}
\pgfmath@def{cos}{74}{0.27564} \pgfmath@def{cos}{75}{0.25882}
\pgfmath@def{cos}{76}{0.24192} \pgfmath@def{cos}{77}{0.22495}
\pgfmath@def{cos}{78}{0.20791} \pgfmath@def{cos}{79}{0.19081}
\pgfmath@def{cos}{80}{0.17365} \pgfmath@def{cos}{81}{0.15643}
\pgfmath@def{cos}{82}{0.13917} \pgfmath@def{cos}{83}{0.12187}
\pgfmath@def{cos}{84}{0.10453} \pgfmath@def{cos}{85}{0.08716}
\pgfmath@def{cos}{86}{0.06976} \pgfmath@def{cos}{87}{0.05234}
\pgfmath@def{cos}{88}{0.03490} \pgfmath@def{cos}{89}{0.01745}
\pgfmath@def{cos}{90}{0.00000} \pgfmath@def{cos}{91}{-0.01745}
\pgfmath@def{cos}{92}{-0.03490} \pgfmath@def{cos}{93}{-0.05234}
\pgfmath@def{cos}{94}{-0.06976} \pgfmath@def{cos}{95}{-0.08716}
\pgfmath@def{cos}{96}{-0.10453} \pgfmath@def{cos}{97}{-0.12187}
\pgfmath@def{cos}{98}{-0.13917} \pgfmath@def{cos}{99}{-0.15643}
\pgfmath@def{cos}{100}{-0.17365} \pgfmath@def{cos}{101}{-0.19081}
\pgfmath@def{cos}{102}{-0.20791} \pgfmath@def{cos}{103}{-0.22495}
\pgfmath@def{cos}{104}{-0.24192} \pgfmath@def{cos}{105}{-0.25882}
\pgfmath@def{cos}{106}{-0.27564} \pgfmath@def{cos}{107}{-0.29237}
\pgfmath@def{cos}{108}{-0.30902} \pgfmath@def{cos}{109}{-0.32557}
\pgfmath@def{cos}{110}{-0.34202} \pgfmath@def{cos}{111}{-0.35837}
\pgfmath@def{cos}{112}{-0.37461} \pgfmath@def{cos}{113}{-0.39073}
\pgfmath@def{cos}{114}{-0.40674} \pgfmath@def{cos}{115}{-0.42262}
\pgfmath@def{cos}{116}{-0.43837} \pgfmath@def{cos}{117}{-0.45399}
\pgfmath@def{cos}{118}{-0.46947} \pgfmath@def{cos}{119}{-0.48481}
\pgfmath@def{cos}{120}{-0.50000} \pgfmath@def{cos}{121}{-0.51504}
\pgfmath@def{cos}{122}{-0.52992} \pgfmath@def{cos}{123}{-0.54464}
\pgfmath@def{cos}{124}{-0.55919} \pgfmath@def{cos}{125}{-0.57358}
\pgfmath@def{cos}{126}{-0.58779} \pgfmath@def{cos}{127}{-0.60182}
\pgfmath@def{cos}{128}{-0.61566} \pgfmath@def{cos}{129}{-0.62932}
\pgfmath@def{cos}{130}{-0.64279} \pgfmath@def{cos}{131}{-0.65606}
\pgfmath@def{cos}{132}{-0.66913} \pgfmath@def{cos}{133}{-0.68200}
\pgfmath@def{cos}{134}{-0.69466} \pgfmath@def{cos}{135}{-0.70711}
\pgfmath@def{cos}{136}{-0.71934} \pgfmath@def{cos}{137}{-0.73135}
\pgfmath@def{cos}{138}{-0.74314} \pgfmath@def{cos}{139}{-0.75471}
\pgfmath@def{cos}{140}{-0.76604} \pgfmath@def{cos}{141}{-0.77715}
\pgfmath@def{cos}{142}{-0.78801} \pgfmath@def{cos}{143}{-0.79864}
\pgfmath@def{cos}{144}{-0.80902} \pgfmath@def{cos}{145}{-0.81915}
\pgfmath@def{cos}{146}{-0.82904} \pgfmath@def{cos}{147}{-0.83867}
\pgfmath@def{cos}{148}{-0.84805} \pgfmath@def{cos}{149}{-0.85717}
\pgfmath@def{cos}{150}{-0.86603} \pgfmath@def{cos}{151}{-0.87462}
\pgfmath@def{cos}{152}{-0.88295} \pgfmath@def{cos}{153}{-0.89101}
\pgfmath@def{cos}{154}{-0.89879} \pgfmath@def{cos}{155}{-0.90631}
\pgfmath@def{cos}{156}{-0.91355} \pgfmath@def{cos}{157}{-0.92050}
\pgfmath@def{cos}{158}{-0.92718} \pgfmath@def{cos}{159}{-0.93358}
\pgfmath@def{cos}{160}{-0.93969} \pgfmath@def{cos}{161}{-0.94552}
\pgfmath@def{cos}{162}{-0.95106} \pgfmath@def{cos}{163}{-0.95630}
\pgfmath@def{cos}{164}{-0.96126} \pgfmath@def{cos}{165}{-0.96593}
\pgfmath@def{cos}{166}{-0.97030} \pgfmath@def{cos}{167}{-0.97437}
\pgfmath@def{cos}{168}{-0.97815} \pgfmath@def{cos}{169}{-0.98163}
\pgfmath@def{cos}{170}{-0.98481} \pgfmath@def{cos}{171}{-0.98769}
\pgfmath@def{cos}{172}{-0.99027} \pgfmath@def{cos}{173}{-0.99255}
\pgfmath@def{cos}{174}{-0.99452} \pgfmath@def{cos}{175}{-0.99619}
\pgfmath@def{cos}{176}{-0.99756} \pgfmath@def{cos}{177}{-0.99863}
\pgfmath@def{cos}{178}{-0.99939} \pgfmath@def{cos}{179}{-0.99985}
\pgfmath@def{cos}{180}{-1.00000} \pgfmath@def{cos}{181}{-0.99985}
\pgfmath@def{cosfrac}{0}{1.00000} \pgfmath@def{cosfrac}{1}{0.99995}
\pgfmath@def{cosfrac}{2}{0.99980} \pgfmath@def{cosfrac}{3}{0.99955}
\pgfmath@def{cosfrac}{4}{0.99920} \pgfmath@def{cosfrac}{5}{0.99875}
\pgfmath@def{cosfrac}{6}{0.99820} \pgfmath@def{cosfrac}{7}{0.99755}
\pgfmath@def{cosfrac}{8}{0.99681} \pgfmath@def{cosfrac}{9}{0.99597}
\pgfmath@def{cosfrac}{10}{0.99503} \pgfmath@def{cosfrac}{11}{0.99400}
\pgfmath@def{cosfrac}{12}{0.99287} \pgfmath@def{cosfrac}{13}{0.99165}
\pgfmath@def{cosfrac}{14}{0.99034} \pgfmath@def{cosfrac}{15}{0.98893}
\pgfmath@def{cosfrac}{16}{0.98744} \pgfmath@def{cosfrac}{17}{0.98585}
\pgfmath@def{cosfrac}{18}{0.98418} \pgfmath@def{cosfrac}{19}{0.98242}
\pgfmath@def{cosfrac}{20}{0.98058} \pgfmath@def{cosfrac}{21}{0.97865}
\pgfmath@def{cosfrac}{22}{0.97664} \pgfmath@def{cosfrac}{23}{0.97455}
\pgfmath@def{cosfrac}{24}{0.97238} \pgfmath@def{cosfrac}{25}{0.97014}
\pgfmath@def{cosfrac}{26}{0.96782} \pgfmath@def{cosfrac}{27}{0.96542}
\pgfmath@def{cosfrac}{28}{0.96296} \pgfmath@def{cosfrac}{29}{0.96042}
\pgfmath@def{cosfrac}{30}{0.95782} \pgfmath@def{cosfrac}{31}{0.95515}
\pgfmath@def{cosfrac}{32}{0.95242} \pgfmath@def{cosfrac}{33}{0.94962}
\pgfmath@def{cosfrac}{34}{0.94677} \pgfmath@def{cosfrac}{35}{0.94385}
\pgfmath@def{cosfrac}{36}{0.94088} \pgfmath@def{cosfrac}{37}{0.93786}
\pgfmath@def{cosfrac}{38}{0.93478} \pgfmath@def{cosfrac}{39}{0.93165}
\pgfmath@def{cosfrac}{40}{0.92847} \pgfmath@def{cosfrac}{41}{0.92525}
\pgfmath@def{cosfrac}{42}{0.92198} \pgfmath@def{cosfrac}{43}{0.91866}
\pgfmath@def{cosfrac}{44}{0.91531} \pgfmath@def{cosfrac}{45}{0.91192}
\pgfmath@def{cosfrac}{46}{0.90849} \pgfmath@def{cosfrac}{47}{0.90502}
\pgfmath@def{cosfrac}{48}{0.90152} \pgfmath@def{cosfrac}{49}{0.89799}
\pgfmath@def{cosfrac}{50}{0.89442} \pgfmath@def{cosfrac}{51}{0.89083}
\pgfmath@def{cosfrac}{52}{0.88721} \pgfmath@def{cosfrac}{53}{0.88357}
\pgfmath@def{cosfrac}{54}{0.87990} \pgfmath@def{cosfrac}{55}{0.87621}
\pgfmath@def{cosfrac}{56}{0.87250} \pgfmath@def{cosfrac}{57}{0.86877}
\pgfmath@def{cosfrac}{58}{0.86503} \pgfmath@def{cosfrac}{59}{0.86126}
\pgfmath@def{cosfrac}{60}{0.85749} \pgfmath@def{cosfrac}{61}{0.85370}
\pgfmath@def{cosfrac}{62}{0.84990} \pgfmath@def{cosfrac}{63}{0.84609}
\pgfmath@def{cosfrac}{64}{0.84227} \pgfmath@def{cosfrac}{65}{0.83844}
\pgfmath@def{cosfrac}{66}{0.83460} \pgfmath@def{cosfrac}{67}{0.83077}
\pgfmath@def{cosfrac}{68}{0.82692} \pgfmath@def{cosfrac}{69}{0.82308}
\pgfmath@def{cosfrac}{70}{0.81923} \pgfmath@def{cosfrac}{71}{0.81538}
\pgfmath@def{cosfrac}{72}{0.81153} \pgfmath@def{cosfrac}{73}{0.80768}
\pgfmath@def{cosfrac}{74}{0.80384} \pgfmath@def{cosfrac}{75}{0.80000}
\pgfmath@def{cosfrac}{76}{0.79616} \pgfmath@def{cosfrac}{77}{0.79232}
\pgfmath@def{cosfrac}{78}{0.78850} \pgfmath@def{cosfrac}{79}{0.78468}
\pgfmath@def{cosfrac}{80}{0.78086} \pgfmath@def{cosfrac}{81}{0.77706}
\pgfmath@def{cosfrac}{82}{0.77326} \pgfmath@def{cosfrac}{83}{0.76948}
\pgfmath@def{cosfrac}{84}{0.76570} \pgfmath@def{cosfrac}{85}{0.76193}
\pgfmath@def{cosfrac}{86}{0.75818} \pgfmath@def{cosfrac}{87}{0.75444}
\pgfmath@def{cosfrac}{88}{0.75071} \pgfmath@def{cosfrac}{89}{0.74699}
\pgfmath@def{cosfrac}{90}{0.74329} \pgfmath@def{cosfrac}{91}{0.73960}
\pgfmath@def{cosfrac}{92}{0.73593} \pgfmath@def{cosfrac}{93}{0.73227}
\pgfmath@def{cosfrac}{94}{0.72862} \pgfmath@def{cosfrac}{95}{0.72499}
\pgfmath@def{cosfrac}{96}{0.72138} \pgfmath@def{cosfrac}{97}{0.71779}
\pgfmath@def{cosfrac}{98}{0.71421} \pgfmath@def{cosfrac}{99}{0.71065}
\pgfmath@def{cosfrac}{100}{0.70710}
\pgfmath@def{atan}{0}{0.00000} \pgfmath@def{atan}{1}{0.05729}
\pgfmath@def{atan}{2}{0.11459} \pgfmath@def{atan}{3}{0.17188}
\pgfmath@def{atan}{4}{0.22918} \pgfmath@def{atan}{5}{0.28647}
\pgfmath@def{atan}{6}{0.34377} \pgfmath@def{atan}{7}{0.40106}
\pgfmath@def{atan}{8}{0.45835} \pgfmath@def{atan}{9}{0.51564}
\pgfmath@def{atan}{10}{0.57293} \pgfmath@def{atan}{11}{0.63022}
\pgfmath@def{atan}{12}{0.68751} \pgfmath@def{atan}{13}{0.74480}
\pgfmath@def{atan}{14}{0.80208} \pgfmath@def{atan}{15}{0.85937}
\pgfmath@def{atan}{16}{0.91665} \pgfmath@def{atan}{17}{0.97393}
\pgfmath@def{atan}{18}{1.03121} \pgfmath@def{atan}{19}{1.08848}
\pgfmath@def{atan}{20}{1.14576} \pgfmath@def{atan}{21}{1.20303}
\pgfmath@def{atan}{22}{1.26030} \pgfmath@def{atan}{23}{1.31757}
\pgfmath@def{atan}{24}{1.37483} \pgfmath@def{atan}{25}{1.43209}
\pgfmath@def{atan}{26}{1.48935} \pgfmath@def{atan}{27}{1.54661}
\pgfmath@def{atan}{28}{1.60386} \pgfmath@def{atan}{29}{1.66111}
\pgfmath@def{atan}{30}{1.71835} \pgfmath@def{atan}{31}{1.77560}
\pgfmath@def{atan}{32}{1.83284} \pgfmath@def{atan}{33}{1.89007}
\pgfmath@def{atan}{34}{1.94730} \pgfmath@def{atan}{35}{2.00453}
\pgfmath@def{atan}{36}{2.06175} \pgfmath@def{atan}{37}{2.11897}
\pgfmath@def{atan}{38}{2.17619} \pgfmath@def{atan}{39}{2.23340}
\pgfmath@def{atan}{40}{2.29061} \pgfmath@def{atan}{41}{2.34781}
\pgfmath@def{atan}{42}{2.40500} \pgfmath@def{atan}{43}{2.46220}
\pgfmath@def{atan}{44}{2.51938} \pgfmath@def{atan}{45}{2.57657}
\pgfmath@def{atan}{46}{2.63374} \pgfmath@def{atan}{47}{2.69092}
\pgfmath@def{atan}{48}{2.74808} \pgfmath@def{atan}{49}{2.80524}
\pgfmath@def{atan}{50}{2.86240} \pgfmath@def{atan}{51}{2.91955}
\pgfmath@def{atan}{52}{2.97669} \pgfmath@def{atan}{53}{3.03383}
\pgfmath@def{atan}{54}{3.09097} \pgfmath@def{atan}{55}{3.14809}
\pgfmath@def{atan}{56}{3.20521} \pgfmath@def{atan}{57}{3.26232}
\pgfmath@def{atan}{58}{3.31943} \pgfmath@def{atan}{59}{3.37653}
\pgfmath@def{atan}{60}{3.43363} \pgfmath@def{atan}{61}{3.49071}
\pgfmath@def{atan}{62}{3.54779} \pgfmath@def{atan}{63}{3.60487}
\pgfmath@def{atan}{64}{3.66193} \pgfmath@def{atan}{65}{3.71899}
\pgfmath@def{atan}{66}{3.77604} \pgfmath@def{atan}{67}{3.83308}
\pgfmath@def{atan}{68}{3.89012} \pgfmath@def{atan}{69}{3.94715}
\pgfmath@def{atan}{70}{4.00417} \pgfmath@def{atan}{71}{4.06118}
\pgfmath@def{atan}{72}{4.11819} \pgfmath@def{atan}{73}{4.17518}
\pgfmath@def{atan}{74}{4.23217} \pgfmath@def{atan}{75}{4.28915}
\pgfmath@def{atan}{76}{4.34612} \pgfmath@def{atan}{77}{4.40308}
\pgfmath@def{atan}{78}{4.46004} \pgfmath@def{atan}{79}{4.51698}
\pgfmath@def{atan}{80}{4.57392} \pgfmath@def{atan}{81}{4.63084}
\pgfmath@def{atan}{82}{4.68776} \pgfmath@def{atan}{83}{4.74467}
\pgfmath@def{atan}{84}{4.80157} \pgfmath@def{atan}{85}{4.85846}
\pgfmath@def{atan}{86}{4.91534} \pgfmath@def{atan}{87}{4.97221}
\pgfmath@def{atan}{88}{5.02907} \pgfmath@def{atan}{89}{5.08592}
\pgfmath@def{atan}{90}{5.14276} \pgfmath@def{atan}{91}{5.19959}
\pgfmath@def{atan}{92}{5.25641} \pgfmath@def{atan}{93}{5.31322}
\pgfmath@def{atan}{94}{5.37002} \pgfmath@def{atan}{95}{5.42681}
\pgfmath@def{atan}{96}{5.48359} \pgfmath@def{atan}{97}{5.54035}
\pgfmath@def{atan}{98}{5.59711} \pgfmath@def{atan}{99}{5.65385}
\pgfmath@def{atan}{100}{5.71059} \pgfmath@def{atan}{101}{5.76731}
\pgfmath@def{atan}{102}{5.82402} \pgfmath@def{atan}{103}{5.88072}
\pgfmath@def{atan}{104}{5.93741} \pgfmath@def{atan}{105}{5.99409}
\pgfmath@def{atan}{106}{6.05075} \pgfmath@def{atan}{107}{6.10741}
\pgfmath@def{atan}{108}{6.16405} \pgfmath@def{atan}{109}{6.22068}
\pgfmath@def{atan}{110}{6.27729} \pgfmath@def{atan}{111}{6.33390}
\pgfmath@def{atan}{112}{6.39049} \pgfmath@def{atan}{113}{6.44707}
\pgfmath@def{atan}{114}{6.50364} \pgfmath@def{atan}{115}{6.56019}
\pgfmath@def{atan}{116}{6.61673} \pgfmath@def{atan}{117}{6.67326}
\pgfmath@def{atan}{118}{6.72978} \pgfmath@def{atan}{119}{6.78628}
\pgfmath@def{atan}{120}{6.84277} \pgfmath@def{atan}{121}{6.89924}
\pgfmath@def{atan}{122}{6.95571} \pgfmath@def{atan}{123}{7.01216}
\pgfmath@def{atan}{124}{7.06859} \pgfmath@def{atan}{125}{7.12501}
\pgfmath@def{atan}{126}{7.18142} \pgfmath@def{atan}{127}{7.23781}
\pgfmath@def{atan}{128}{7.29419} \pgfmath@def{atan}{129}{7.35056}
\pgfmath@def{atan}{130}{7.40691} \pgfmath@def{atan}{131}{7.46324}
\pgfmath@def{atan}{132}{7.51957} \pgfmath@def{atan}{133}{7.57587}
\pgfmath@def{atan}{134}{7.63217} \pgfmath@def{atan}{135}{7.68844}
\pgfmath@def{atan}{136}{7.74471} \pgfmath@def{atan}{137}{7.80095}
\pgfmath@def{atan}{138}{7.85719} \pgfmath@def{atan}{139}{7.91340}
\pgfmath@def{atan}{140}{7.96961} \pgfmath@def{atan}{141}{8.02579}
\pgfmath@def{atan}{142}{8.08196} \pgfmath@def{atan}{143}{8.13812}
\pgfmath@def{atan}{144}{8.19426} \pgfmath@def{atan}{145}{8.25038}
\pgfmath@def{atan}{146}{8.30649} \pgfmath@def{atan}{147}{8.36258}
\pgfmath@def{atan}{148}{8.41866} \pgfmath@def{atan}{149}{8.47472}
\pgfmath@def{atan}{150}{8.53076} \pgfmath@def{atan}{151}{8.58679}
\pgfmath@def{atan}{152}{8.64280} \pgfmath@def{atan}{153}{8.69879}
\pgfmath@def{atan}{154}{8.75477} \pgfmath@def{atan}{155}{8.81073}
\pgfmath@def{atan}{156}{8.86667} \pgfmath@def{atan}{157}{8.92260}
\pgfmath@def{atan}{158}{8.97851} \pgfmath@def{atan}{159}{9.03440}
\pgfmath@def{atan}{160}{9.09027} \pgfmath@def{atan}{161}{9.14613}
\pgfmath@def{atan}{162}{9.20197} \pgfmath@def{atan}{163}{9.25779}
\pgfmath@def{atan}{164}{9.31359} \pgfmath@def{atan}{165}{9.36938}
\pgfmath@def{atan}{166}{9.42515} \pgfmath@def{atan}{167}{9.48090}
\pgfmath@def{atan}{168}{9.53663} \pgfmath@def{atan}{169}{9.59235}
\pgfmath@def{atan}{170}{9.64804} \pgfmath@def{atan}{171}{9.70372}
\pgfmath@def{atan}{172}{9.75938} \pgfmath@def{atan}{173}{9.81502}
\pgfmath@def{atan}{174}{9.87064} \pgfmath@def{atan}{175}{9.92624}
\pgfmath@def{atan}{176}{9.98182} \pgfmath@def{atan}{177}{10.03739}
\pgfmath@def{atan}{178}{10.09294} \pgfmath@def{atan}{179}{10.14846}
\pgfmath@def{atan}{180}{10.20397} \pgfmath@def{atan}{181}{10.25946}
\pgfmath@def{atan}{182}{10.31493} \pgfmath@def{atan}{183}{10.37037}
\pgfmath@def{atan}{184}{10.42580} \pgfmath@def{atan}{185}{10.48121}
\pgfmath@def{atan}{186}{10.53660} \pgfmath@def{atan}{187}{10.59197}
\pgfmath@def{atan}{188}{10.64732} \pgfmath@def{atan}{189}{10.70265}
\pgfmath@def{atan}{190}{10.75796} \pgfmath@def{atan}{191}{10.81325}
\pgfmath@def{atan}{192}{10.86852} \pgfmath@def{atan}{193}{10.92377}
\pgfmath@def{atan}{194}{10.97900} \pgfmath@def{atan}{195}{11.03420}
\pgfmath@def{atan}{196}{11.08939} \pgfmath@def{atan}{197}{11.14456}
\pgfmath@def{atan}{198}{11.19970} \pgfmath@def{atan}{199}{11.25483}
\pgfmath@def{atan}{200}{11.30993} \pgfmath@def{atan}{201}{11.36501}
\pgfmath@def{atan}{202}{11.42007} \pgfmath@def{atan}{203}{11.47511}
\pgfmath@def{atan}{204}{11.53013} \pgfmath@def{atan}{205}{11.58512}
\pgfmath@def{atan}{206}{11.64010} \pgfmath@def{atan}{207}{11.69505}
\pgfmath@def{atan}{208}{11.74998} \pgfmath@def{atan}{209}{11.80489}
\pgfmath@def{atan}{210}{11.85977} \pgfmath@def{atan}{211}{11.91464}
\pgfmath@def{atan}{212}{11.96948} \pgfmath@def{atan}{213}{12.02430}
\pgfmath@def{atan}{214}{12.07910} \pgfmath@def{atan}{215}{12.13388}
\pgfmath@def{atan}{216}{12.18863} \pgfmath@def{atan}{217}{12.24336}
\pgfmath@def{atan}{218}{12.29807} \pgfmath@def{atan}{219}{12.35275}
\pgfmath@def{atan}{220}{12.40741} \pgfmath@def{atan}{221}{12.46205}
\pgfmath@def{atan}{222}{12.51667} \pgfmath@def{atan}{223}{12.57126}
\pgfmath@def{atan}{224}{12.62583} \pgfmath@def{atan}{225}{12.68038}
\pgfmath@def{atan}{226}{12.73490} \pgfmath@def{atan}{227}{12.78940}
\pgfmath@def{atan}{228}{12.84388} \pgfmath@def{atan}{229}{12.89833}
\pgfmath@def{atan}{230}{12.95276} \pgfmath@def{atan}{231}{13.00717}
\pgfmath@def{atan}{232}{13.06155} \pgfmath@def{atan}{233}{13.11590}
\pgfmath@def{atan}{234}{13.17024} \pgfmath@def{atan}{235}{13.22455}
\pgfmath@def{atan}{236}{13.27883} \pgfmath@def{atan}{237}{13.33309}
\pgfmath@def{atan}{238}{13.38733} \pgfmath@def{atan}{239}{13.44154}
\pgfmath@def{atan}{240}{13.49573} \pgfmath@def{atan}{241}{13.54989}
\pgfmath@def{atan}{242}{13.60403} \pgfmath@def{atan}{243}{13.65814}
\pgfmath@def{atan}{244}{13.71223} \pgfmath@def{atan}{245}{13.76630}
\pgfmath@def{atan}{246}{13.82034} \pgfmath@def{atan}{247}{13.87435}
\pgfmath@def{atan}{248}{13.92834} \pgfmath@def{atan}{249}{13.98230}
\pgfmath@def{atan}{250}{14.03624} \pgfmath@def{atan}{251}{14.09015}
\pgfmath@def{atan}{252}{14.14404} \pgfmath@def{atan}{253}{14.19790}
\pgfmath@def{atan}{254}{14.25174} \pgfmath@def{atan}{255}{14.30555}
\pgfmath@def{atan}{256}{14.35933} \pgfmath@def{atan}{257}{14.41309}
\pgfmath@def{atan}{258}{14.46682} \pgfmath@def{atan}{259}{14.52053}
\pgfmath@def{atan}{260}{14.57421} \pgfmath@def{atan}{261}{14.62787}
\pgfmath@def{atan}{262}{14.68149} \pgfmath@def{atan}{263}{14.73510}
\pgfmath@def{atan}{264}{14.78867} \pgfmath@def{atan}{265}{14.84222}
\pgfmath@def{atan}{266}{14.89575} \pgfmath@def{atan}{267}{14.94924}
\pgfmath@def{atan}{268}{15.00271} \pgfmath@def{atan}{269}{15.05615}
\pgfmath@def{atan}{270}{15.10957} \pgfmath@def{atan}{271}{15.16296}
\pgfmath@def{atan}{272}{15.21632} \pgfmath@def{atan}{273}{15.26966}
\pgfmath@def{atan}{274}{15.32297} \pgfmath@def{atan}{275}{15.37625}
\pgfmath@def{atan}{276}{15.42950} \pgfmath@def{atan}{277}{15.48273}
\pgfmath@def{atan}{278}{15.53593} \pgfmath@def{atan}{279}{15.58910}
\pgfmath@def{atan}{280}{15.64224} \pgfmath@def{atan}{281}{15.69536}
\pgfmath@def{atan}{282}{15.74845} \pgfmath@def{atan}{283}{15.80151}
\pgfmath@def{atan}{284}{15.85454} \pgfmath@def{atan}{285}{15.90755}
\pgfmath@def{atan}{286}{15.96052} \pgfmath@def{atan}{287}{16.01347}
\pgfmath@def{atan}{288}{16.06640} \pgfmath@def{atan}{289}{16.11929}
\pgfmath@def{atan}{290}{16.17215} \pgfmath@def{atan}{291}{16.22499}
\pgfmath@def{atan}{292}{16.27780} \pgfmath@def{atan}{293}{16.33058}
\pgfmath@def{atan}{294}{16.38333} \pgfmath@def{atan}{295}{16.43605}
\pgfmath@def{atan}{296}{16.48875} \pgfmath@def{atan}{297}{16.54142}
\pgfmath@def{atan}{298}{16.59405} \pgfmath@def{atan}{299}{16.64666}
\pgfmath@def{atan}{300}{16.69924} \pgfmath@def{atan}{301}{16.75179}
\pgfmath@def{atan}{302}{16.80431} \pgfmath@def{atan}{303}{16.85680}
\pgfmath@def{atan}{304}{16.90927} \pgfmath@def{atan}{305}{16.96170}
\pgfmath@def{atan}{306}{17.01411} \pgfmath@def{atan}{307}{17.06648}
\pgfmath@def{atan}{308}{17.11883} \pgfmath@def{atan}{309}{17.17114}
\pgfmath@def{atan}{310}{17.22343} \pgfmath@def{atan}{311}{17.27569}
\pgfmath@def{atan}{312}{17.32792} \pgfmath@def{atan}{313}{17.38012}
\pgfmath@def{atan}{314}{17.43228} \pgfmath@def{atan}{315}{17.48442}
\pgfmath@def{atan}{316}{17.53653} \pgfmath@def{atan}{317}{17.58861}
\pgfmath@def{atan}{318}{17.64066} \pgfmath@def{atan}{319}{17.69268}
\pgfmath@def{atan}{320}{17.74467} \pgfmath@def{atan}{321}{17.79663}
\pgfmath@def{atan}{322}{17.84855} \pgfmath@def{atan}{323}{17.90045}
\pgfmath@def{atan}{324}{17.95232} \pgfmath@def{atan}{325}{18.00416}
\pgfmath@def{atan}{326}{18.05596} \pgfmath@def{atan}{327}{18.10774}
\pgfmath@def{atan}{328}{18.15949} \pgfmath@def{atan}{329}{18.21120}
\pgfmath@def{atan}{330}{18.26289} \pgfmath@def{atan}{331}{18.31454}
\pgfmath@def{atan}{332}{18.36616} \pgfmath@def{atan}{333}{18.41775}
\pgfmath@def{atan}{334}{18.46931} \pgfmath@def{atan}{335}{18.52084}
\pgfmath@def{atan}{336}{18.57234} \pgfmath@def{atan}{337}{18.62381}
\pgfmath@def{atan}{338}{18.67525} \pgfmath@def{atan}{339}{18.72665}
\pgfmath@def{atan}{340}{18.77803} \pgfmath@def{atan}{341}{18.82937}
\pgfmath@def{atan}{342}{18.88068} \pgfmath@def{atan}{343}{18.93196}
\pgfmath@def{atan}{344}{18.98321} \pgfmath@def{atan}{345}{19.03443}
\pgfmath@def{atan}{346}{19.08562} \pgfmath@def{atan}{347}{19.13677}
\pgfmath@def{atan}{348}{19.18789} \pgfmath@def{atan}{349}{19.23898}
\pgfmath@def{atan}{350}{19.29004} \pgfmath@def{atan}{351}{19.34107}
\pgfmath@def{atan}{352}{19.39206} \pgfmath@def{atan}{353}{19.44303}
\pgfmath@def{atan}{354}{19.49396} \pgfmath@def{atan}{355}{19.54486}
\pgfmath@def{atan}{356}{19.59572} \pgfmath@def{atan}{357}{19.64656}
\pgfmath@def{atan}{358}{19.69736} \pgfmath@def{atan}{359}{19.74813}
\pgfmath@def{atan}{360}{19.79887} \pgfmath@def{atan}{361}{19.84958}
\pgfmath@def{atan}{362}{19.90025} \pgfmath@def{atan}{363}{19.95089}
\pgfmath@def{atan}{364}{20.00150} \pgfmath@def{atan}{365}{20.05208}
\pgfmath@def{atan}{366}{20.10262} \pgfmath@def{atan}{367}{20.15313}
\pgfmath@def{atan}{368}{20.20361} \pgfmath@def{atan}{369}{20.25406}
\pgfmath@def{atan}{370}{20.30447} \pgfmath@def{atan}{371}{20.35485}
\pgfmath@def{atan}{372}{20.40520} \pgfmath@def{atan}{373}{20.45551}
\pgfmath@def{atan}{374}{20.50579} \pgfmath@def{atan}{375}{20.55604}
\pgfmath@def{atan}{376}{20.60626} \pgfmath@def{atan}{377}{20.65644}
\pgfmath@def{atan}{378}{20.70659} \pgfmath@def{atan}{379}{20.75670}
\pgfmath@def{atan}{380}{20.80679} \pgfmath@def{atan}{381}{20.85684}
\pgfmath@def{atan}{382}{20.90685} \pgfmath@def{atan}{383}{20.95684}
\pgfmath@def{atan}{384}{21.00678} \pgfmath@def{atan}{385}{21.05670}
\pgfmath@def{atan}{386}{21.10658} \pgfmath@def{atan}{387}{21.15643}
\pgfmath@def{atan}{388}{21.20625} \pgfmath@def{atan}{389}{21.25603}
\pgfmath@def{atan}{390}{21.30578} \pgfmath@def{atan}{391}{21.35549}
\pgfmath@def{atan}{392}{21.40517} \pgfmath@def{atan}{393}{21.45482}
\pgfmath@def{atan}{394}{21.50444} \pgfmath@def{atan}{395}{21.55402}
\pgfmath@def{atan}{396}{21.60356} \pgfmath@def{atan}{397}{21.65307}
\pgfmath@def{atan}{398}{21.70255} \pgfmath@def{atan}{399}{21.75200}
\pgfmath@def{atan}{400}{21.80140} \pgfmath@def{atan}{401}{21.85078}
\pgfmath@def{atan}{402}{21.90012} \pgfmath@def{atan}{403}{21.94943}
\pgfmath@def{atan}{404}{21.99870} \pgfmath@def{atan}{405}{22.04794}
\pgfmath@def{atan}{406}{22.09715} \pgfmath@def{atan}{407}{22.14632}
\pgfmath@def{atan}{408}{22.19546} \pgfmath@def{atan}{409}{22.24456}
\pgfmath@def{atan}{410}{22.29362} \pgfmath@def{atan}{411}{22.34266}
\pgfmath@def{atan}{412}{22.39166} \pgfmath@def{atan}{413}{22.44062}
\pgfmath@def{atan}{414}{22.48955} \pgfmath@def{atan}{415}{22.53845}
\pgfmath@def{atan}{416}{22.58731} \pgfmath@def{atan}{417}{22.63613}
\pgfmath@def{atan}{418}{22.68492} \pgfmath@def{atan}{419}{22.73368}
\pgfmath@def{atan}{420}{22.78240} \pgfmath@def{atan}{421}{22.83109}
\pgfmath@def{atan}{422}{22.87974} \pgfmath@def{atan}{423}{22.92836}
\pgfmath@def{atan}{424}{22.97694} \pgfmath@def{atan}{425}{23.02549}
\pgfmath@def{atan}{426}{23.07400} \pgfmath@def{atan}{427}{23.12248}
\pgfmath@def{atan}{428}{23.17092} \pgfmath@def{atan}{429}{23.21933}
\pgfmath@def{atan}{430}{23.26770} \pgfmath@def{atan}{431}{23.31604}
\pgfmath@def{atan}{432}{23.36434} \pgfmath@def{atan}{433}{23.41261}
\pgfmath@def{atan}{434}{23.46084} \pgfmath@def{atan}{435}{23.50904}
\pgfmath@def{atan}{436}{23.55720} \pgfmath@def{atan}{437}{23.60532}
\pgfmath@def{atan}{438}{23.65341} \pgfmath@def{atan}{439}{23.70147}
\pgfmath@def{atan}{440}{23.74949} \pgfmath@def{atan}{441}{23.79747}
\pgfmath@def{atan}{442}{23.84542} \pgfmath@def{atan}{443}{23.89334}
\pgfmath@def{atan}{444}{23.94122} \pgfmath@def{atan}{445}{23.98906}
\pgfmath@def{atan}{446}{24.03687} \pgfmath@def{atan}{447}{24.08464}
\pgfmath@def{atan}{448}{24.13238} \pgfmath@def{atan}{449}{24.18008}
\pgfmath@def{atan}{450}{24.22774} \pgfmath@def{atan}{451}{24.27537}
\pgfmath@def{atan}{452}{24.32296} \pgfmath@def{atan}{453}{24.37052}
\pgfmath@def{atan}{454}{24.41804} \pgfmath@def{atan}{455}{24.46553}
\pgfmath@def{atan}{456}{24.51298} \pgfmath@def{atan}{457}{24.56040}
\pgfmath@def{atan}{458}{24.60778} \pgfmath@def{atan}{459}{24.65512}
\pgfmath@def{atan}{460}{24.70243} \pgfmath@def{atan}{461}{24.74970}
\pgfmath@def{atan}{462}{24.79693} \pgfmath@def{atan}{463}{24.84413}
\pgfmath@def{atan}{464}{24.89130} \pgfmath@def{atan}{465}{24.93842}
\pgfmath@def{atan}{466}{24.98551} \pgfmath@def{atan}{467}{25.03257}
\pgfmath@def{atan}{468}{25.07959} \pgfmath@def{atan}{469}{25.12657}
\pgfmath@def{atan}{470}{25.17352} \pgfmath@def{atan}{471}{25.22043}
\pgfmath@def{atan}{472}{25.26731} \pgfmath@def{atan}{473}{25.31414}
\pgfmath@def{atan}{474}{25.36095} \pgfmath@def{atan}{475}{25.40771}
\pgfmath@def{atan}{476}{25.45444} \pgfmath@def{atan}{477}{25.50114}
\pgfmath@def{atan}{478}{25.54780} \pgfmath@def{atan}{479}{25.59442}
\pgfmath@def{atan}{480}{25.64100} \pgfmath@def{atan}{481}{25.68755}
\pgfmath@def{atan}{482}{25.73406} \pgfmath@def{atan}{483}{25.78054}
\pgfmath@def{atan}{484}{25.82698} \pgfmath@def{atan}{485}{25.87338}
\pgfmath@def{atan}{486}{25.91975} \pgfmath@def{atan}{487}{25.96608}
\pgfmath@def{atan}{488}{26.01237} \pgfmath@def{atan}{489}{26.05863}
\pgfmath@def{atan}{490}{26.10485} \pgfmath@def{atan}{491}{26.15103}
\pgfmath@def{atan}{492}{26.19718} \pgfmath@def{atan}{493}{26.24329}
\pgfmath@def{atan}{494}{26.28937} \pgfmath@def{atan}{495}{26.33541}
\pgfmath@def{atan}{496}{26.38141} \pgfmath@def{atan}{497}{26.42737}
\pgfmath@def{atan}{498}{26.47330} \pgfmath@def{atan}{499}{26.51919}
\pgfmath@def{atan}{500}{26.56505} \pgfmath@def{atan}{501}{26.61086}
\pgfmath@def{atan}{502}{26.65665} \pgfmath@def{atan}{503}{26.70239}
\pgfmath@def{atan}{504}{26.74810} \pgfmath@def{atan}{505}{26.79377}
\pgfmath@def{atan}{506}{26.83941} \pgfmath@def{atan}{507}{26.88500}
\pgfmath@def{atan}{508}{26.93057} \pgfmath@def{atan}{509}{26.97609}
\pgfmath@def{atan}{510}{27.02158} \pgfmath@def{atan}{511}{27.06703}
\pgfmath@def{atan}{512}{27.11244} \pgfmath@def{atan}{513}{27.15782}
\pgfmath@def{atan}{514}{27.20316} \pgfmath@def{atan}{515}{27.24846}
\pgfmath@def{atan}{516}{27.29373} \pgfmath@def{atan}{517}{27.33896}
\pgfmath@def{atan}{518}{27.38415} \pgfmath@def{atan}{519}{27.42931}
\pgfmath@def{atan}{520}{27.47443} \pgfmath@def{atan}{521}{27.51951}
\pgfmath@def{atan}{522}{27.56455} \pgfmath@def{atan}{523}{27.60956}
\pgfmath@def{atan}{524}{27.65453} \pgfmath@def{atan}{525}{27.69947}
\pgfmath@def{atan}{526}{27.74437} \pgfmath@def{atan}{527}{27.78923}
\pgfmath@def{atan}{528}{27.83405} \pgfmath@def{atan}{529}{27.87884}
\pgfmath@def{atan}{530}{27.92359} \pgfmath@def{atan}{531}{27.96830}
\pgfmath@def{atan}{532}{28.01297} \pgfmath@def{atan}{533}{28.05761}
\pgfmath@def{atan}{534}{28.10221} \pgfmath@def{atan}{535}{28.14678}
\pgfmath@def{atan}{536}{28.19130} \pgfmath@def{atan}{537}{28.23579}
\pgfmath@def{atan}{538}{28.28025} \pgfmath@def{atan}{539}{28.32466}
\pgfmath@def{atan}{540}{28.36904} \pgfmath@def{atan}{541}{28.41338}
\pgfmath@def{atan}{542}{28.45769} \pgfmath@def{atan}{543}{28.50196}
\pgfmath@def{atan}{544}{28.54619} \pgfmath@def{atan}{545}{28.59038}
\pgfmath@def{atan}{546}{28.63454} \pgfmath@def{atan}{547}{28.67865}
\pgfmath@def{atan}{548}{28.72274} \pgfmath@def{atan}{549}{28.76678}
\pgfmath@def{atan}{550}{28.81079} \pgfmath@def{atan}{551}{28.85476}
\pgfmath@def{atan}{552}{28.89869} \pgfmath@def{atan}{553}{28.94259}
\pgfmath@def{atan}{554}{28.98645} \pgfmath@def{atan}{555}{29.03027}
\pgfmath@def{atan}{556}{29.07405} \pgfmath@def{atan}{557}{29.11780}
\pgfmath@def{atan}{558}{29.16151} \pgfmath@def{atan}{559}{29.20519}
\pgfmath@def{atan}{560}{29.24882} \pgfmath@def{atan}{561}{29.29242}
\pgfmath@def{atan}{562}{29.33598} \pgfmath@def{atan}{563}{29.37951}
\pgfmath@def{atan}{564}{29.42299} \pgfmath@def{atan}{565}{29.46644}
\pgfmath@def{atan}{566}{29.50986} \pgfmath@def{atan}{567}{29.55323}
\pgfmath@def{atan}{568}{29.59657} \pgfmath@def{atan}{569}{29.63987}
\pgfmath@def{atan}{570}{29.68314} \pgfmath@def{atan}{571}{29.72636}
\pgfmath@def{atan}{572}{29.76955} \pgfmath@def{atan}{573}{29.81270}
\pgfmath@def{atan}{574}{29.85582} \pgfmath@def{atan}{575}{29.89890}
\pgfmath@def{atan}{576}{29.94194} \pgfmath@def{atan}{577}{29.98494}
\pgfmath@def{atan}{578}{30.02791} \pgfmath@def{atan}{579}{30.07084}
\pgfmath@def{atan}{580}{30.11373} \pgfmath@def{atan}{581}{30.15658}
\pgfmath@def{atan}{582}{30.19940} \pgfmath@def{atan}{583}{30.24218}
\pgfmath@def{atan}{584}{30.28492} \pgfmath@def{atan}{585}{30.32763}
\pgfmath@def{atan}{586}{30.37030} \pgfmath@def{atan}{587}{30.41293}
\pgfmath@def{atan}{588}{30.45552} \pgfmath@def{atan}{589}{30.49808}
\pgfmath@def{atan}{590}{30.54060} \pgfmath@def{atan}{591}{30.58308}
\pgfmath@def{atan}{592}{30.62553} \pgfmath@def{atan}{593}{30.66794}
\pgfmath@def{atan}{594}{30.71031} \pgfmath@def{atan}{595}{30.75264}
\pgfmath@def{atan}{596}{30.79494} \pgfmath@def{atan}{597}{30.83720}
\pgfmath@def{atan}{598}{30.87942} \pgfmath@def{atan}{599}{30.92160}
\pgfmath@def{atan}{600}{30.96375} \pgfmath@def{atan}{601}{31.00586}
\pgfmath@def{atan}{602}{31.04794} \pgfmath@def{atan}{603}{31.08997}
\pgfmath@def{atan}{604}{31.13197} \pgfmath@def{atan}{605}{31.17393}
\pgfmath@def{atan}{606}{31.21586} \pgfmath@def{atan}{607}{31.25775}
\pgfmath@def{atan}{608}{31.29960} \pgfmath@def{atan}{609}{31.34141}
\pgfmath@def{atan}{610}{31.38319} \pgfmath@def{atan}{611}{31.42493}
\pgfmath@def{atan}{612}{31.46663} \pgfmath@def{atan}{613}{31.50829}
\pgfmath@def{atan}{614}{31.54992} \pgfmath@def{atan}{615}{31.59151}
\pgfmath@def{atan}{616}{31.63306} \pgfmath@def{atan}{617}{31.67458}
\pgfmath@def{atan}{618}{31.71606} \pgfmath@def{atan}{619}{31.75750}
\pgfmath@def{atan}{620}{31.79891} \pgfmath@def{atan}{621}{31.84028}
\pgfmath@def{atan}{622}{31.88161} \pgfmath@def{atan}{623}{31.92290}
\pgfmath@def{atan}{624}{31.96416} \pgfmath@def{atan}{625}{32.00538}
\pgfmath@def{atan}{626}{32.04656} \pgfmath@def{atan}{627}{32.08771}
\pgfmath@def{atan}{628}{32.12882} \pgfmath@def{atan}{629}{32.16989}
\pgfmath@def{atan}{630}{32.21092} \pgfmath@def{atan}{631}{32.25192}
\pgfmath@def{atan}{632}{32.29288} \pgfmath@def{atan}{633}{32.33381}
\pgfmath@def{atan}{634}{32.37469} \pgfmath@def{atan}{635}{32.41554}
\pgfmath@def{atan}{636}{32.45636} \pgfmath@def{atan}{637}{32.49713}
\pgfmath@def{atan}{638}{32.53787} \pgfmath@def{atan}{639}{32.57857}
\pgfmath@def{atan}{640}{32.61924} \pgfmath@def{atan}{641}{32.65987}
\pgfmath@def{atan}{642}{32.70046} \pgfmath@def{atan}{643}{32.74101}
\pgfmath@def{atan}{644}{32.78153} \pgfmath@def{atan}{645}{32.82201}
\pgfmath@def{atan}{646}{32.86246} \pgfmath@def{atan}{647}{32.90286}
\pgfmath@def{atan}{648}{32.94323} \pgfmath@def{atan}{649}{32.98357}
\pgfmath@def{atan}{650}{33.02386} \pgfmath@def{atan}{651}{33.06412}
\pgfmath@def{atan}{652}{33.10435} \pgfmath@def{atan}{653}{33.14453}
\pgfmath@def{atan}{654}{33.18468} \pgfmath@def{atan}{655}{33.22479}
\pgfmath@def{atan}{656}{33.26487} \pgfmath@def{atan}{657}{33.30491}
\pgfmath@def{atan}{658}{33.34491} \pgfmath@def{atan}{659}{33.38488}
\pgfmath@def{atan}{660}{33.42481} \pgfmath@def{atan}{661}{33.46470}
\pgfmath@def{atan}{662}{33.50455} \pgfmath@def{atan}{663}{33.54437}
\pgfmath@def{atan}{664}{33.58416} \pgfmath@def{atan}{665}{33.62390}
\pgfmath@def{atan}{666}{33.66361} \pgfmath@def{atan}{667}{33.70328}
\pgfmath@def{atan}{668}{33.74292} \pgfmath@def{atan}{669}{33.78252}
\pgfmath@def{atan}{670}{33.82208} \pgfmath@def{atan}{671}{33.86161}
\pgfmath@def{atan}{672}{33.90110} \pgfmath@def{atan}{673}{33.94055}
\pgfmath@def{atan}{674}{33.97997} \pgfmath@def{atan}{675}{34.01935}
\pgfmath@def{atan}{676}{34.05869} \pgfmath@def{atan}{677}{34.09800}
\pgfmath@def{atan}{678}{34.13727} \pgfmath@def{atan}{679}{34.17650}
\pgfmath@def{atan}{680}{34.21570} \pgfmath@def{atan}{681}{34.25486}
\pgfmath@def{atan}{682}{34.29398} \pgfmath@def{atan}{683}{34.33307}
\pgfmath@def{atan}{684}{34.37212} \pgfmath@def{atan}{685}{34.41114}
\pgfmath@def{atan}{686}{34.45012} \pgfmath@def{atan}{687}{34.48906}
\pgfmath@def{atan}{688}{34.52797} \pgfmath@def{atan}{689}{34.56684}
\pgfmath@def{atan}{690}{34.60567} \pgfmath@def{atan}{691}{34.64447}
\pgfmath@def{atan}{692}{34.68323} \pgfmath@def{atan}{693}{34.72195}
\pgfmath@def{atan}{694}{34.76064} \pgfmath@def{atan}{695}{34.79930}
\pgfmath@def{atan}{696}{34.83791} \pgfmath@def{atan}{697}{34.87649}
\pgfmath@def{atan}{698}{34.91504} \pgfmath@def{atan}{699}{34.95354}
\pgfmath@def{atan}{700}{34.99202} \pgfmath@def{atan}{701}{35.03045}
\pgfmath@def{atan}{702}{35.06885} \pgfmath@def{atan}{703}{35.10721}
\pgfmath@def{atan}{704}{35.14554} \pgfmath@def{atan}{705}{35.18383}
\pgfmath@def{atan}{706}{35.22209} \pgfmath@def{atan}{707}{35.26031}
\pgfmath@def{atan}{708}{35.29849} \pgfmath@def{atan}{709}{35.33664}
\pgfmath@def{atan}{710}{35.37475} \pgfmath@def{atan}{711}{35.41282}
\pgfmath@def{atan}{712}{35.45086} \pgfmath@def{atan}{713}{35.48886}
\pgfmath@def{atan}{714}{35.52683} \pgfmath@def{atan}{715}{35.56476}
\pgfmath@def{atan}{716}{35.60266} \pgfmath@def{atan}{717}{35.64052}
\pgfmath@def{atan}{718}{35.67834} \pgfmath@def{atan}{719}{35.71613}
\pgfmath@def{atan}{720}{35.75388} \pgfmath@def{atan}{721}{35.79160}
\pgfmath@def{atan}{722}{35.82928} \pgfmath@def{atan}{723}{35.86692}
\pgfmath@def{atan}{724}{35.90453} \pgfmath@def{atan}{725}{35.94211}
\pgfmath@def{atan}{726}{35.97965} \pgfmath@def{atan}{727}{36.01715}
\pgfmath@def{atan}{728}{36.05461} \pgfmath@def{atan}{729}{36.09204}
\pgfmath@def{atan}{730}{36.12944} \pgfmath@def{atan}{731}{36.16680}
\pgfmath@def{atan}{732}{36.20412} \pgfmath@def{atan}{733}{36.24141}
\pgfmath@def{atan}{734}{36.27866} \pgfmath@def{atan}{735}{36.31588}
\pgfmath@def{atan}{736}{36.35306} \pgfmath@def{atan}{737}{36.39021}
\pgfmath@def{atan}{738}{36.42732} \pgfmath@def{atan}{739}{36.46440}
\pgfmath@def{atan}{740}{36.50144} \pgfmath@def{atan}{741}{36.53844}
\pgfmath@def{atan}{742}{36.57541} \pgfmath@def{atan}{743}{36.61234}
\pgfmath@def{atan}{744}{36.64924} \pgfmath@def{atan}{745}{36.68611}
\pgfmath@def{atan}{746}{36.72293} \pgfmath@def{atan}{747}{36.75973}
\pgfmath@def{atan}{748}{36.79648} \pgfmath@def{atan}{749}{36.83321}
\pgfmath@def{atan}{750}{36.86989} \pgfmath@def{atan}{751}{36.90654}
\pgfmath@def{atan}{752}{36.94316} \pgfmath@def{atan}{753}{36.97974}
\pgfmath@def{atan}{754}{37.01629} \pgfmath@def{atan}{755}{37.05280}
\pgfmath@def{atan}{756}{37.08928} \pgfmath@def{atan}{757}{37.12572}
\pgfmath@def{atan}{758}{37.16212} \pgfmath@def{atan}{759}{37.19849}
\pgfmath@def{atan}{760}{37.23483} \pgfmath@def{atan}{761}{37.27113}
\pgfmath@def{atan}{762}{37.30740} \pgfmath@def{atan}{763}{37.34363}
\pgfmath@def{atan}{764}{37.37982} \pgfmath@def{atan}{765}{37.41598}
\pgfmath@def{atan}{766}{37.45211} \pgfmath@def{atan}{767}{37.48820}
\pgfmath@def{atan}{768}{37.52426} \pgfmath@def{atan}{769}{37.56028}
\pgfmath@def{atan}{770}{37.59627} \pgfmath@def{atan}{771}{37.63222}
\pgfmath@def{atan}{772}{37.66814} \pgfmath@def{atan}{773}{37.70402}
\pgfmath@def{atan}{774}{37.73987} \pgfmath@def{atan}{775}{37.77568}
\pgfmath@def{atan}{776}{37.81146} \pgfmath@def{atan}{777}{37.84720}
\pgfmath@def{atan}{778}{37.88291} \pgfmath@def{atan}{779}{37.91859}
\pgfmath@def{atan}{780}{37.95423} \pgfmath@def{atan}{781}{37.98983}
\pgfmath@def{atan}{782}{38.02540} \pgfmath@def{atan}{783}{38.06094}
\pgfmath@def{atan}{784}{38.09644} \pgfmath@def{atan}{785}{38.13191}
\pgfmath@def{atan}{786}{38.16734} \pgfmath@def{atan}{787}{38.20274}
\pgfmath@def{atan}{788}{38.23811} \pgfmath@def{atan}{789}{38.27344}
\pgfmath@def{atan}{790}{38.30873} \pgfmath@def{atan}{791}{38.34399}
\pgfmath@def{atan}{792}{38.37922} \pgfmath@def{atan}{793}{38.41441}
\pgfmath@def{atan}{794}{38.44957} \pgfmath@def{atan}{795}{38.48469}
\pgfmath@def{atan}{796}{38.51979} \pgfmath@def{atan}{797}{38.55484}
\pgfmath@def{atan}{798}{38.58986} \pgfmath@def{atan}{799}{38.62485}
\pgfmath@def{atan}{800}{38.65980} \pgfmath@def{atan}{801}{38.69472}
\pgfmath@def{atan}{802}{38.72961} \pgfmath@def{atan}{803}{38.76446}
\pgfmath@def{atan}{804}{38.79928} \pgfmath@def{atan}{805}{38.83406}
\pgfmath@def{atan}{806}{38.86881} \pgfmath@def{atan}{807}{38.90353}
\pgfmath@def{atan}{808}{38.93821} \pgfmath@def{atan}{809}{38.97285}
\pgfmath@def{atan}{810}{39.00747} \pgfmath@def{atan}{811}{39.04205}
\pgfmath@def{atan}{812}{39.07659} \pgfmath@def{atan}{813}{39.11111}
\pgfmath@def{atan}{814}{39.14558} \pgfmath@def{atan}{815}{39.18003}
\pgfmath@def{atan}{816}{39.21444} \pgfmath@def{atan}{817}{39.24882}
\pgfmath@def{atan}{818}{39.28316} \pgfmath@def{atan}{819}{39.31747}
\pgfmath@def{atan}{820}{39.35175} \pgfmath@def{atan}{821}{39.38599}
\pgfmath@def{atan}{822}{39.42020} \pgfmath@def{atan}{823}{39.45438}
\pgfmath@def{atan}{824}{39.48852} \pgfmath@def{atan}{825}{39.52263}
\pgfmath@def{atan}{826}{39.55670} \pgfmath@def{atan}{827}{39.59074}
\pgfmath@def{atan}{828}{39.62475} \pgfmath@def{atan}{829}{39.65873}
\pgfmath@def{atan}{830}{39.69267} \pgfmath@def{atan}{831}{39.72658}
\pgfmath@def{atan}{832}{39.76045} \pgfmath@def{atan}{833}{39.79429}
\pgfmath@def{atan}{834}{39.82810} \pgfmath@def{atan}{835}{39.86188}
\pgfmath@def{atan}{836}{39.89562} \pgfmath@def{atan}{837}{39.92933}
\pgfmath@def{atan}{838}{39.96300} \pgfmath@def{atan}{839}{39.99665}
\pgfmath@def{atan}{840}{40.03025} \pgfmath@def{atan}{841}{40.06383}
\pgfmath@def{atan}{842}{40.09737} \pgfmath@def{atan}{843}{40.13088}
\pgfmath@def{atan}{844}{40.16436} \pgfmath@def{atan}{845}{40.19781}
\pgfmath@def{atan}{846}{40.23122} \pgfmath@def{atan}{847}{40.26459}
\pgfmath@def{atan}{848}{40.29794} \pgfmath@def{atan}{849}{40.33125}
\pgfmath@def{atan}{850}{40.36453} \pgfmath@def{atan}{851}{40.39778}
\pgfmath@def{atan}{852}{40.43099} \pgfmath@def{atan}{853}{40.46417}
\pgfmath@def{atan}{854}{40.49732} \pgfmath@def{atan}{855}{40.53044}
\pgfmath@def{atan}{856}{40.56352} \pgfmath@def{atan}{857}{40.59657}
\pgfmath@def{atan}{858}{40.62959} \pgfmath@def{atan}{859}{40.66257}
\pgfmath@def{atan}{860}{40.69553} \pgfmath@def{atan}{861}{40.72845}
\pgfmath@def{atan}{862}{40.76133} \pgfmath@def{atan}{863}{40.79419}
\pgfmath@def{atan}{864}{40.82701} \pgfmath@def{atan}{865}{40.85980}
\pgfmath@def{atan}{866}{40.89256} \pgfmath@def{atan}{867}{40.92528}
\pgfmath@def{atan}{868}{40.95798} \pgfmath@def{atan}{869}{40.99064}
\pgfmath@def{atan}{870}{41.02326} \pgfmath@def{atan}{871}{41.05586}
\pgfmath@def{atan}{872}{41.08842} \pgfmath@def{atan}{873}{41.12095}
\pgfmath@def{atan}{874}{41.15345} \pgfmath@def{atan}{875}{41.18592}
\pgfmath@def{atan}{876}{41.21836} \pgfmath@def{atan}{877}{41.25076}
\pgfmath@def{atan}{878}{41.28313} \pgfmath@def{atan}{879}{41.31547}
\pgfmath@def{atan}{880}{41.34777} \pgfmath@def{atan}{881}{41.38005}
\pgfmath@def{atan}{882}{41.41229} \pgfmath@def{atan}{883}{41.44450}
\pgfmath@def{atan}{884}{41.47668} \pgfmath@def{atan}{885}{41.50882}
\pgfmath@def{atan}{886}{41.54094} \pgfmath@def{atan}{887}{41.57302}
\pgfmath@def{atan}{888}{41.60507} \pgfmath@def{atan}{889}{41.63709}
\pgfmath@def{atan}{890}{41.66908} \pgfmath@def{atan}{891}{41.70103}
\pgfmath@def{atan}{892}{41.73296} \pgfmath@def{atan}{893}{41.76485}
\pgfmath@def{atan}{894}{41.79671} \pgfmath@def{atan}{895}{41.82854}
\pgfmath@def{atan}{896}{41.86034} \pgfmath@def{atan}{897}{41.89210}
\pgfmath@def{atan}{898}{41.92383} \pgfmath@def{atan}{899}{41.95554}
\pgfmath@def{atan}{900}{41.98721} \pgfmath@def{atan}{901}{42.01885}
\pgfmath@def{atan}{902}{42.05046} \pgfmath@def{atan}{903}{42.08203}
\pgfmath@def{atan}{904}{42.11358} \pgfmath@def{atan}{905}{42.14509}
\pgfmath@def{atan}{906}{42.17657} \pgfmath@def{atan}{907}{42.20802}
\pgfmath@def{atan}{908}{42.23944} \pgfmath@def{atan}{909}{42.27083}
\pgfmath@def{atan}{910}{42.30219} \pgfmath@def{atan}{911}{42.33352}
\pgfmath@def{atan}{912}{42.36481} \pgfmath@def{atan}{913}{42.39607}
\pgfmath@def{atan}{914}{42.42731} \pgfmath@def{atan}{915}{42.45851}
\pgfmath@def{atan}{916}{42.48968} \pgfmath@def{atan}{917}{42.52082}
\pgfmath@def{atan}{918}{42.55193} \pgfmath@def{atan}{919}{42.58300}
\pgfmath@def{atan}{920}{42.61405} \pgfmath@def{atan}{921}{42.64507}
\pgfmath@def{atan}{922}{42.67605} \pgfmath@def{atan}{923}{42.70701}
\pgfmath@def{atan}{924}{42.73793} \pgfmath@def{atan}{925}{42.76882}
\pgfmath@def{atan}{926}{42.79968} \pgfmath@def{atan}{927}{42.83051}
\pgfmath@def{atan}{928}{42.86131} \pgfmath@def{atan}{929}{42.89208}
\pgfmath@def{atan}{930}{42.92282} \pgfmath@def{atan}{931}{42.95353}
\pgfmath@def{atan}{932}{42.98421} \pgfmath@def{atan}{933}{43.01485}
\pgfmath@def{atan}{934}{43.04547} \pgfmath@def{atan}{935}{43.07605}
\pgfmath@def{atan}{936}{43.10661} \pgfmath@def{atan}{937}{43.13713}
\pgfmath@def{atan}{938}{43.16763} \pgfmath@def{atan}{939}{43.19809}
\pgfmath@def{atan}{940}{43.22853} \pgfmath@def{atan}{941}{43.25893}
\pgfmath@def{atan}{942}{43.28930} \pgfmath@def{atan}{943}{43.31964}
\pgfmath@def{atan}{944}{43.34996} \pgfmath@def{atan}{945}{43.38024}
\pgfmath@def{atan}{946}{43.41049} \pgfmath@def{atan}{947}{43.44071}
\pgfmath@def{atan}{948}{43.47090} \pgfmath@def{atan}{949}{43.50106}
\pgfmath@def{atan}{950}{43.53119} \pgfmath@def{atan}{951}{43.56130}
\pgfmath@def{atan}{952}{43.59137} \pgfmath@def{atan}{953}{43.62141}
\pgfmath@def{atan}{954}{43.65142} \pgfmath@def{atan}{955}{43.68140}
\pgfmath@def{atan}{956}{43.71135} \pgfmath@def{atan}{957}{43.74127}
\pgfmath@def{atan}{958}{43.77116} \pgfmath@def{atan}{959}{43.80102}
\pgfmath@def{atan}{960}{43.83086} \pgfmath@def{atan}{961}{43.86066}
\pgfmath@def{atan}{962}{43.89043} \pgfmath@def{atan}{963}{43.92017}
\pgfmath@def{atan}{964}{43.94988} \pgfmath@def{atan}{965}{43.97957}
\pgfmath@def{atan}{966}{44.00922} \pgfmath@def{atan}{967}{44.03884}
\pgfmath@def{atan}{968}{44.06844} \pgfmath@def{atan}{969}{44.09800}
\pgfmath@def{atan}{970}{44.12754} \pgfmath@def{atan}{971}{44.15704}
\pgfmath@def{atan}{972}{44.18652} \pgfmath@def{atan}{973}{44.21597}
\pgfmath@def{atan}{974}{44.24538} \pgfmath@def{atan}{975}{44.27477}
\pgfmath@def{atan}{976}{44.30413} \pgfmath@def{atan}{977}{44.33346}
\pgfmath@def{atan}{978}{44.36276} \pgfmath@def{atan}{979}{44.39203}
\pgfmath@def{atan}{980}{44.42127} \pgfmath@def{atan}{981}{44.45048}
\pgfmath@def{atan}{982}{44.47966} \pgfmath@def{atan}{983}{44.50882}
\pgfmath@def{atan}{984}{44.53794} \pgfmath@def{atan}{985}{44.56704}
\pgfmath@def{atan}{986}{44.59610} \pgfmath@def{atan}{987}{44.62514}
\pgfmath@def{atan}{988}{44.65415} \pgfmath@def{atan}{989}{44.68313}
\pgfmath@def{atan}{990}{44.71208} \pgfmath@def{atan}{991}{44.74100}
\pgfmath@def{atan}{992}{44.76989} \pgfmath@def{atan}{993}{44.79876}
\pgfmath@def{atan}{994}{44.82759} \pgfmath@def{atan}{995}{44.85640}
\pgfmath@def{atan}{996}{44.88517} \pgfmath@def{atan}{997}{44.91392}
\pgfmath@def{atan}{998}{44.94264} \pgfmath@def{atan}{999}{44.97133}
\pgfmath@def{atan}{1000}{45.00000}
\pgfmath@def{acos}{0}{90.00000} \pgfmath@def{acos}{1}{89.94270}
\pgfmath@def{acos}{2}{89.88540} \pgfmath@def{acos}{3}{89.82811}
\pgfmath@def{acos}{4}{89.77081} \pgfmath@def{acos}{5}{89.71352}
\pgfmath@def{acos}{6}{89.65622} \pgfmath@def{acos}{7}{89.59892}
\pgfmath@def{acos}{8}{89.54162} \pgfmath@def{acos}{9}{89.48433}
\pgfmath@def{acos}{10}{89.42703} \pgfmath@def{acos}{11}{89.36973}
\pgfmath@def{acos}{12}{89.31243} \pgfmath@def{acos}{13}{89.25513}
\pgfmath@def{acos}{14}{89.19783} \pgfmath@def{acos}{15}{89.14053}
\pgfmath@def{acos}{16}{89.08322} \pgfmath@def{acos}{17}{89.02592}
\pgfmath@def{acos}{18}{88.96862} \pgfmath@def{acos}{19}{88.91131}
\pgfmath@def{acos}{20}{88.85400} \pgfmath@def{acos}{21}{88.79670}
\pgfmath@def{acos}{22}{88.73939} \pgfmath@def{acos}{23}{88.68208}
\pgfmath@def{acos}{24}{88.62476} \pgfmath@def{acos}{25}{88.56745}
\pgfmath@def{acos}{26}{88.51014} \pgfmath@def{acos}{27}{88.45282}
\pgfmath@def{acos}{28}{88.39550} \pgfmath@def{acos}{29}{88.33818}
\pgfmath@def{acos}{30}{88.28086} \pgfmath@def{acos}{31}{88.22354}
\pgfmath@def{acos}{32}{88.16622} \pgfmath@def{acos}{33}{88.10889}
\pgfmath@def{acos}{34}{88.05156} \pgfmath@def{acos}{35}{87.99423}
\pgfmath@def{acos}{36}{87.93690} \pgfmath@def{acos}{37}{87.87957}
\pgfmath@def{acos}{38}{87.82223} \pgfmath@def{acos}{39}{87.76489}
\pgfmath@def{acos}{40}{87.70755} \pgfmath@def{acos}{41}{87.65021}
\pgfmath@def{acos}{42}{87.59286} \pgfmath@def{acos}{43}{87.53552}
\pgfmath@def{acos}{44}{87.47817} \pgfmath@def{acos}{45}{87.42081}
\pgfmath@def{acos}{46}{87.36346} \pgfmath@def{acos}{47}{87.30610}
\pgfmath@def{acos}{48}{87.24874} \pgfmath@def{acos}{49}{87.19138}
\pgfmath@def{acos}{50}{87.13401} \pgfmath@def{acos}{51}{87.07664}
\pgfmath@def{acos}{52}{87.01927} \pgfmath@def{acos}{53}{86.96190}
\pgfmath@def{acos}{54}{86.90452} \pgfmath@def{acos}{55}{86.84714}
\pgfmath@def{acos}{56}{86.78975} \pgfmath@def{acos}{57}{86.73237}
\pgfmath@def{acos}{58}{86.67497} \pgfmath@def{acos}{59}{86.61758}
\pgfmath@def{acos}{60}{86.56018} \pgfmath@def{acos}{61}{86.50278}
\pgfmath@def{acos}{62}{86.44538} \pgfmath@def{acos}{63}{86.38797}
\pgfmath@def{acos}{64}{86.33056} \pgfmath@def{acos}{65}{86.27314}
\pgfmath@def{acos}{66}{86.21572} \pgfmath@def{acos}{67}{86.15830}
\pgfmath@def{acos}{68}{86.10087} \pgfmath@def{acos}{69}{86.04344}
\pgfmath@def{acos}{70}{85.98601} \pgfmath@def{acos}{71}{85.92857}
\pgfmath@def{acos}{72}{85.87113} \pgfmath@def{acos}{73}{85.81368}
\pgfmath@def{acos}{74}{85.75623} \pgfmath@def{acos}{75}{85.69877}
\pgfmath@def{acos}{76}{85.64131} \pgfmath@def{acos}{77}{85.58385}
\pgfmath@def{acos}{78}{85.52638} \pgfmath@def{acos}{79}{85.46891}
\pgfmath@def{acos}{80}{85.41143} \pgfmath@def{acos}{81}{85.35395}
\pgfmath@def{acos}{82}{85.29646} \pgfmath@def{acos}{83}{85.23897}
\pgfmath@def{acos}{84}{85.18147} \pgfmath@def{acos}{85}{85.12397}
\pgfmath@def{acos}{86}{85.06646} \pgfmath@def{acos}{87}{85.00895}
\pgfmath@def{acos}{88}{84.95144} \pgfmath@def{acos}{89}{84.89392}
\pgfmath@def{acos}{90}{84.83639} \pgfmath@def{acos}{91}{84.77886}
\pgfmath@def{acos}{92}{84.72132} \pgfmath@def{acos}{93}{84.66378}
\pgfmath@def{acos}{94}{84.60623} \pgfmath@def{acos}{95}{84.54868}
\pgfmath@def{acos}{96}{84.49112} \pgfmath@def{acos}{97}{84.43355}
\pgfmath@def{acos}{98}{84.37598} \pgfmath@def{acos}{99}{84.31841}
\pgfmath@def{acos}{100}{84.26083} \pgfmath@def{acos}{101}{84.20324}
\pgfmath@def{acos}{102}{84.14564} \pgfmath@def{acos}{103}{84.08805}
\pgfmath@def{acos}{104}{84.03044} \pgfmath@def{acos}{105}{83.97283}
\pgfmath@def{acos}{106}{83.91521} \pgfmath@def{acos}{107}{83.85759}
\pgfmath@def{acos}{108}{83.79996} \pgfmath@def{acos}{109}{83.74232}
\pgfmath@def{acos}{110}{83.68468} \pgfmath@def{acos}{111}{83.62703}
\pgfmath@def{acos}{112}{83.56938} \pgfmath@def{acos}{113}{83.51171}
\pgfmath@def{acos}{114}{83.45405} \pgfmath@def{acos}{115}{83.39637}
\pgfmath@def{acos}{116}{83.33869} \pgfmath@def{acos}{117}{83.28100}
\pgfmath@def{acos}{118}{83.22330} \pgfmath@def{acos}{119}{83.16560}
\pgfmath@def{acos}{120}{83.10789} \pgfmath@def{acos}{121}{83.05018}
\pgfmath@def{acos}{122}{82.99245} \pgfmath@def{acos}{123}{82.93472}
\pgfmath@def{acos}{124}{82.87698} \pgfmath@def{acos}{125}{82.81924}
\pgfmath@def{acos}{126}{82.76149} \pgfmath@def{acos}{127}{82.70373}
\pgfmath@def{acos}{128}{82.64596} \pgfmath@def{acos}{129}{82.58819}
\pgfmath@def{acos}{130}{82.53040} \pgfmath@def{acos}{131}{82.47261}
\pgfmath@def{acos}{132}{82.41482} \pgfmath@def{acos}{133}{82.35701}
\pgfmath@def{acos}{134}{82.29920} \pgfmath@def{acos}{135}{82.24138}
\pgfmath@def{acos}{136}{82.18355} \pgfmath@def{acos}{137}{82.12571}
\pgfmath@def{acos}{138}{82.06786} \pgfmath@def{acos}{139}{82.01001}
\pgfmath@def{acos}{140}{81.95215} \pgfmath@def{acos}{141}{81.89428}
\pgfmath@def{acos}{142}{81.83640} \pgfmath@def{acos}{143}{81.77851}
\pgfmath@def{acos}{144}{81.72062} \pgfmath@def{acos}{145}{81.66272}
\pgfmath@def{acos}{146}{81.60480} \pgfmath@def{acos}{147}{81.54688}
\pgfmath@def{acos}{148}{81.48895} \pgfmath@def{acos}{149}{81.43102}
\pgfmath@def{acos}{150}{81.37307} \pgfmath@def{acos}{151}{81.31511}
\pgfmath@def{acos}{152}{81.25715} \pgfmath@def{acos}{153}{81.19917}
\pgfmath@def{acos}{154}{81.14119} \pgfmath@def{acos}{155}{81.08320}
\pgfmath@def{acos}{156}{81.02520} \pgfmath@def{acos}{157}{80.96719}
\pgfmath@def{acos}{158}{80.90917} \pgfmath@def{acos}{159}{80.85114}
\pgfmath@def{acos}{160}{80.79310} \pgfmath@def{acos}{161}{80.73505}
\pgfmath@def{acos}{162}{80.67699} \pgfmath@def{acos}{163}{80.61893}
\pgfmath@def{acos}{164}{80.56085} \pgfmath@def{acos}{165}{80.50276}
\pgfmath@def{acos}{166}{80.44466} \pgfmath@def{acos}{167}{80.38656}
\pgfmath@def{acos}{168}{80.32844} \pgfmath@def{acos}{169}{80.27031}
\pgfmath@def{acos}{170}{80.21218} \pgfmath@def{acos}{171}{80.15403}
\pgfmath@def{acos}{172}{80.09587} \pgfmath@def{acos}{173}{80.03770}
\pgfmath@def{acos}{174}{79.97953} \pgfmath@def{acos}{175}{79.92134}
\pgfmath@def{acos}{176}{79.86314} \pgfmath@def{acos}{177}{79.80493}
\pgfmath@def{acos}{178}{79.74671} \pgfmath@def{acos}{179}{79.68848}
\pgfmath@def{acos}{180}{79.63024} \pgfmath@def{acos}{181}{79.57198}
\pgfmath@def{acos}{182}{79.51372} \pgfmath@def{acos}{183}{79.45545}
\pgfmath@def{acos}{184}{79.39716} \pgfmath@def{acos}{185}{79.33886}
\pgfmath@def{acos}{186}{79.28056} \pgfmath@def{acos}{187}{79.22224}
\pgfmath@def{acos}{188}{79.16391} \pgfmath@def{acos}{189}{79.10556}
\pgfmath@def{acos}{190}{79.04721} \pgfmath@def{acos}{191}{78.98885}
\pgfmath@def{acos}{192}{78.93047} \pgfmath@def{acos}{193}{78.87208}
\pgfmath@def{acos}{194}{78.81368} \pgfmath@def{acos}{195}{78.75527}
\pgfmath@def{acos}{196}{78.69685} \pgfmath@def{acos}{197}{78.63841}
\pgfmath@def{acos}{198}{78.57997} \pgfmath@def{acos}{199}{78.52151}
\pgfmath@def{acos}{200}{78.46304} \pgfmath@def{acos}{201}{78.40455}
\pgfmath@def{acos}{202}{78.34606} \pgfmath@def{acos}{203}{78.28755}
\pgfmath@def{acos}{204}{78.22903} \pgfmath@def{acos}{205}{78.17050}
\pgfmath@def{acos}{206}{78.11195} \pgfmath@def{acos}{207}{78.05339}
\pgfmath@def{acos}{208}{77.99482} \pgfmath@def{acos}{209}{77.93624}
\pgfmath@def{acos}{210}{77.87764} \pgfmath@def{acos}{211}{77.81903}
\pgfmath@def{acos}{212}{77.76041} \pgfmath@def{acos}{213}{77.70178}
\pgfmath@def{acos}{214}{77.64313} \pgfmath@def{acos}{215}{77.58447}
\pgfmath@def{acos}{216}{77.52579} \pgfmath@def{acos}{217}{77.46711}
\pgfmath@def{acos}{218}{77.40841} \pgfmath@def{acos}{219}{77.34969}
\pgfmath@def{acos}{220}{77.29096} \pgfmath@def{acos}{221}{77.23222}
\pgfmath@def{acos}{222}{77.17347} \pgfmath@def{acos}{223}{77.11470}
\pgfmath@def{acos}{224}{77.05591} \pgfmath@def{acos}{225}{76.99712}
\pgfmath@def{acos}{226}{76.93831} \pgfmath@def{acos}{227}{76.87948}
\pgfmath@def{acos}{228}{76.82064} \pgfmath@def{acos}{229}{76.76179}
\pgfmath@def{acos}{230}{76.70292} \pgfmath@def{acos}{231}{76.64404}
\pgfmath@def{acos}{232}{76.58515} \pgfmath@def{acos}{233}{76.52624}
\pgfmath@def{acos}{234}{76.46731} \pgfmath@def{acos}{235}{76.40837}
\pgfmath@def{acos}{236}{76.34942} \pgfmath@def{acos}{237}{76.29045}
\pgfmath@def{acos}{238}{76.23147} \pgfmath@def{acos}{239}{76.17247}
\pgfmath@def{acos}{240}{76.11346} \pgfmath@def{acos}{241}{76.05443}
\pgfmath@def{acos}{242}{75.99538} \pgfmath@def{acos}{243}{75.93632}
\pgfmath@def{acos}{244}{75.87725} \pgfmath@def{acos}{245}{75.81816}
\pgfmath@def{acos}{246}{75.75906} \pgfmath@def{acos}{247}{75.69994}
\pgfmath@def{acos}{248}{75.64080} \pgfmath@def{acos}{249}{75.58165}
\pgfmath@def{acos}{250}{75.52248} \pgfmath@def{acos}{251}{75.46330}
\pgfmath@def{acos}{252}{75.40410} \pgfmath@def{acos}{253}{75.34489}
\pgfmath@def{acos}{254}{75.28566} \pgfmath@def{acos}{255}{75.22641}
\pgfmath@def{acos}{256}{75.16715} \pgfmath@def{acos}{257}{75.10787}
\pgfmath@def{acos}{258}{75.04857} \pgfmath@def{acos}{259}{74.98926}
\pgfmath@def{acos}{260}{74.92993} \pgfmath@def{acos}{261}{74.87059}
\pgfmath@def{acos}{262}{74.81123} \pgfmath@def{acos}{263}{74.75185}
\pgfmath@def{acos}{264}{74.69245} \pgfmath@def{acos}{265}{74.63304}
\pgfmath@def{acos}{266}{74.57361} \pgfmath@def{acos}{267}{74.51417}
\pgfmath@def{acos}{268}{74.45471} \pgfmath@def{acos}{269}{74.39523}
\pgfmath@def{acos}{270}{74.33573} \pgfmath@def{acos}{271}{74.27621}
\pgfmath@def{acos}{272}{74.21668} \pgfmath@def{acos}{273}{74.15713}
\pgfmath@def{acos}{274}{74.09757} \pgfmath@def{acos}{275}{74.03798}
\pgfmath@def{acos}{276}{73.97838} \pgfmath@def{acos}{277}{73.91876}
\pgfmath@def{acos}{278}{73.85912} \pgfmath@def{acos}{279}{73.79946}
\pgfmath@def{acos}{280}{73.73979} \pgfmath@def{acos}{281}{73.68010}
\pgfmath@def{acos}{282}{73.62039} \pgfmath@def{acos}{283}{73.56066}
\pgfmath@def{acos}{284}{73.50091} \pgfmath@def{acos}{285}{73.44115}
\pgfmath@def{acos}{286}{73.38136} \pgfmath@def{acos}{287}{73.32156}
\pgfmath@def{acos}{288}{73.26174} \pgfmath@def{acos}{289}{73.20190}
\pgfmath@def{acos}{290}{73.14204} \pgfmath@def{acos}{291}{73.08216}
\pgfmath@def{acos}{292}{73.02226} \pgfmath@def{acos}{293}{72.96235}
\pgfmath@def{acos}{294}{72.90241} \pgfmath@def{acos}{295}{72.84246}
\pgfmath@def{acos}{296}{72.78248} \pgfmath@def{acos}{297}{72.72249}
\pgfmath@def{acos}{298}{72.66248} \pgfmath@def{acos}{299}{72.60244}
\pgfmath@def{acos}{300}{72.54239} \pgfmath@def{acos}{301}{72.48232}
\pgfmath@def{acos}{302}{72.42223} \pgfmath@def{acos}{303}{72.36212}
\pgfmath@def{acos}{304}{72.30198} \pgfmath@def{acos}{305}{72.24183}
\pgfmath@def{acos}{306}{72.18166} \pgfmath@def{acos}{307}{72.12147}
\pgfmath@def{acos}{308}{72.06125} \pgfmath@def{acos}{309}{72.00102}
\pgfmath@def{acos}{310}{71.94077} \pgfmath@def{acos}{311}{71.88049}
\pgfmath@def{acos}{312}{71.82019} \pgfmath@def{acos}{313}{71.75988}
\pgfmath@def{acos}{314}{71.69954} \pgfmath@def{acos}{315}{71.63918}
\pgfmath@def{acos}{316}{71.57880} \pgfmath@def{acos}{317}{71.51840}
\pgfmath@def{acos}{318}{71.45798} \pgfmath@def{acos}{319}{71.39754}
\pgfmath@def{acos}{320}{71.33707} \pgfmath@def{acos}{321}{71.27658}
\pgfmath@def{acos}{322}{71.21608} \pgfmath@def{acos}{323}{71.15555}
\pgfmath@def{acos}{324}{71.09499} \pgfmath@def{acos}{325}{71.03442}
\pgfmath@def{acos}{326}{70.97382} \pgfmath@def{acos}{327}{70.91321}
\pgfmath@def{acos}{328}{70.85257} \pgfmath@def{acos}{329}{70.79190}
\pgfmath@def{acos}{330}{70.73122} \pgfmath@def{acos}{331}{70.67051}
\pgfmath@def{acos}{332}{70.60978} \pgfmath@def{acos}{333}{70.54903}
\pgfmath@def{acos}{334}{70.48826} \pgfmath@def{acos}{335}{70.42746}
\pgfmath@def{acos}{336}{70.36664} \pgfmath@def{acos}{337}{70.30579}
\pgfmath@def{acos}{338}{70.24493} \pgfmath@def{acos}{339}{70.18404}
\pgfmath@def{acos}{340}{70.12312} \pgfmath@def{acos}{341}{70.06218}
\pgfmath@def{acos}{342}{70.00122} \pgfmath@def{acos}{343}{69.94024}
\pgfmath@def{acos}{344}{69.87923} \pgfmath@def{acos}{345}{69.81820}
\pgfmath@def{acos}{346}{69.75714} \pgfmath@def{acos}{347}{69.69606}
\pgfmath@def{acos}{348}{69.63496} \pgfmath@def{acos}{349}{69.57383}
\pgfmath@def{acos}{350}{69.51268} \pgfmath@def{acos}{351}{69.45150}
\pgfmath@def{acos}{352}{69.39030} \pgfmath@def{acos}{353}{69.32908}
\pgfmath@def{acos}{354}{69.26783} \pgfmath@def{acos}{355}{69.20655}
\pgfmath@def{acos}{356}{69.14525} \pgfmath@def{acos}{357}{69.08393}
\pgfmath@def{acos}{358}{69.02258} \pgfmath@def{acos}{359}{68.96120}
\pgfmath@def{acos}{360}{68.89980} \pgfmath@def{acos}{361}{68.83837}
\pgfmath@def{acos}{362}{68.77692} \pgfmath@def{acos}{363}{68.71544}
\pgfmath@def{acos}{364}{68.65394} \pgfmath@def{acos}{365}{68.59241}
\pgfmath@def{acos}{366}{68.53086} \pgfmath@def{acos}{367}{68.46928}
\pgfmath@def{acos}{368}{68.40767} \pgfmath@def{acos}{369}{68.34604}
\pgfmath@def{acos}{370}{68.28438} \pgfmath@def{acos}{371}{68.22269}
\pgfmath@def{acos}{372}{68.16098} \pgfmath@def{acos}{373}{68.09924}
\pgfmath@def{acos}{374}{68.03748} \pgfmath@def{acos}{375}{67.97568}
\pgfmath@def{acos}{376}{67.91386} \pgfmath@def{acos}{377}{67.85202}
\pgfmath@def{acos}{378}{67.79014} \pgfmath@def{acos}{379}{67.72824}
\pgfmath@def{acos}{380}{67.66631} \pgfmath@def{acos}{381}{67.60436}
\pgfmath@def{acos}{382}{67.54237} \pgfmath@def{acos}{383}{67.48036}
\pgfmath@def{acos}{384}{67.41832} \pgfmath@def{acos}{385}{67.35626}
\pgfmath@def{acos}{386}{67.29416} \pgfmath@def{acos}{387}{67.23204}
\pgfmath@def{acos}{388}{67.16988} \pgfmath@def{acos}{389}{67.10770}
\pgfmath@def{acos}{390}{67.04550} \pgfmath@def{acos}{391}{66.98326}
\pgfmath@def{acos}{392}{66.92099} \pgfmath@def{acos}{393}{66.85870}
\pgfmath@def{acos}{394}{66.79637} \pgfmath@def{acos}{395}{66.73402}
\pgfmath@def{acos}{396}{66.67164} \pgfmath@def{acos}{397}{66.60923}
\pgfmath@def{acos}{398}{66.54679} \pgfmath@def{acos}{399}{66.48432}
\pgfmath@def{acos}{400}{66.42182} \pgfmath@def{acos}{401}{66.35929}
\pgfmath@def{acos}{402}{66.29673} \pgfmath@def{acos}{403}{66.23414}
\pgfmath@def{acos}{404}{66.17152} \pgfmath@def{acos}{405}{66.10887}
\pgfmath@def{acos}{406}{66.04619} \pgfmath@def{acos}{407}{65.98348}
\pgfmath@def{acos}{408}{65.92074} \pgfmath@def{acos}{409}{65.85796}
\pgfmath@def{acos}{410}{65.79516} \pgfmath@def{acos}{411}{65.73233}
\pgfmath@def{acos}{412}{65.66946} \pgfmath@def{acos}{413}{65.60657}
\pgfmath@def{acos}{414}{65.54364} \pgfmath@def{acos}{415}{65.48068}
\pgfmath@def{acos}{416}{65.41769} \pgfmath@def{acos}{417}{65.35467}
\pgfmath@def{acos}{418}{65.29161} \pgfmath@def{acos}{419}{65.22853}
\pgfmath@def{acos}{420}{65.16541} \pgfmath@def{acos}{421}{65.10226}
\pgfmath@def{acos}{422}{65.03908} \pgfmath@def{acos}{423}{64.97586}
\pgfmath@def{acos}{424}{64.91261} \pgfmath@def{acos}{425}{64.84933}
\pgfmath@def{acos}{426}{64.78602} \pgfmath@def{acos}{427}{64.72267}
\pgfmath@def{acos}{428}{64.65929} \pgfmath@def{acos}{429}{64.59588}
\pgfmath@def{acos}{430}{64.53244} \pgfmath@def{acos}{431}{64.46896}
\pgfmath@def{acos}{432}{64.40544} \pgfmath@def{acos}{433}{64.34190}
\pgfmath@def{acos}{434}{64.27832} \pgfmath@def{acos}{435}{64.21470}
\pgfmath@def{acos}{436}{64.15105} \pgfmath@def{acos}{437}{64.08737}
\pgfmath@def{acos}{438}{64.02365} \pgfmath@def{acos}{439}{63.95990}
\pgfmath@def{acos}{440}{63.89611} \pgfmath@def{acos}{441}{63.83229}
\pgfmath@def{acos}{442}{63.76844} \pgfmath@def{acos}{443}{63.70455}
\pgfmath@def{acos}{444}{63.64062} \pgfmath@def{acos}{445}{63.57666}
\pgfmath@def{acos}{446}{63.51266} \pgfmath@def{acos}{447}{63.44863}
\pgfmath@def{acos}{448}{63.38456} \pgfmath@def{acos}{449}{63.32045}
\pgfmath@def{acos}{450}{63.25631} \pgfmath@def{acos}{451}{63.19213}
\pgfmath@def{acos}{452}{63.12792} \pgfmath@def{acos}{453}{63.06367}
\pgfmath@def{acos}{454}{62.99938} \pgfmath@def{acos}{455}{62.93506}
\pgfmath@def{acos}{456}{62.87070} \pgfmath@def{acos}{457}{62.80630}
\pgfmath@def{acos}{458}{62.74187} \pgfmath@def{acos}{459}{62.67740}
\pgfmath@def{acos}{460}{62.61289} \pgfmath@def{acos}{461}{62.54834}
\pgfmath@def{acos}{462}{62.48376} \pgfmath@def{acos}{463}{62.41913}
\pgfmath@def{acos}{464}{62.35447} \pgfmath@def{acos}{465}{62.28977}
\pgfmath@def{acos}{466}{62.22504} \pgfmath@def{acos}{467}{62.16026}
\pgfmath@def{acos}{468}{62.09545} \pgfmath@def{acos}{469}{62.03059}
\pgfmath@def{acos}{470}{61.96570} \pgfmath@def{acos}{471}{61.90077}
\pgfmath@def{acos}{472}{61.83580} \pgfmath@def{acos}{473}{61.77079}
\pgfmath@def{acos}{474}{61.70574} \pgfmath@def{acos}{475}{61.64065}
\pgfmath@def{acos}{476}{61.57552} \pgfmath@def{acos}{477}{61.51035}
\pgfmath@def{acos}{478}{61.44514} \pgfmath@def{acos}{479}{61.37988}
\pgfmath@def{acos}{480}{61.31459} \pgfmath@def{acos}{481}{61.24926}
\pgfmath@def{acos}{482}{61.18389} \pgfmath@def{acos}{483}{61.11847}
\pgfmath@def{acos}{484}{61.05302} \pgfmath@def{acos}{485}{60.98752}
\pgfmath@def{acos}{486}{60.92199} \pgfmath@def{acos}{487}{60.85641}
\pgfmath@def{acos}{488}{60.79078} \pgfmath@def{acos}{489}{60.72512}
\pgfmath@def{acos}{490}{60.65941} \pgfmath@def{acos}{491}{60.59367}
\pgfmath@def{acos}{492}{60.52787} \pgfmath@def{acos}{493}{60.46204}
\pgfmath@def{acos}{494}{60.39616} \pgfmath@def{acos}{495}{60.33025}
\pgfmath@def{acos}{496}{60.26428} \pgfmath@def{acos}{497}{60.19828}
\pgfmath@def{acos}{498}{60.13223} \pgfmath@def{acos}{499}{60.06613}
\pgfmath@def{acos}{500}{60.00000} \pgfmath@def{acos}{501}{59.93381}
\pgfmath@def{acos}{502}{59.86759} \pgfmath@def{acos}{503}{59.80132}
\pgfmath@def{acos}{504}{59.73500} \pgfmath@def{acos}{505}{59.66864}
\pgfmath@def{acos}{506}{59.60224} \pgfmath@def{acos}{507}{59.53579}
\pgfmath@def{acos}{508}{59.46929} \pgfmath@def{acos}{509}{59.40275}
\pgfmath@def{acos}{510}{59.33617} \pgfmath@def{acos}{511}{59.26953}
\pgfmath@def{acos}{512}{59.20285} \pgfmath@def{acos}{513}{59.13613}
\pgfmath@def{acos}{514}{59.06936} \pgfmath@def{acos}{515}{59.00254}
\pgfmath@def{acos}{516}{58.93568} \pgfmath@def{acos}{517}{58.86876}
\pgfmath@def{acos}{518}{58.80180} \pgfmath@def{acos}{519}{58.73480}
\pgfmath@def{acos}{520}{58.66774} \pgfmath@def{acos}{521}{58.60064}
\pgfmath@def{acos}{522}{58.53349} \pgfmath@def{acos}{523}{58.46629}
\pgfmath@def{acos}{524}{58.39905} \pgfmath@def{acos}{525}{58.33175}
\pgfmath@def{acos}{526}{58.26441} \pgfmath@def{acos}{527}{58.19702}
\pgfmath@def{acos}{528}{58.12957} \pgfmath@def{acos}{529}{58.06208}
\pgfmath@def{acos}{530}{57.99454} \pgfmath@def{acos}{531}{57.92695}
\pgfmath@def{acos}{532}{57.85931} \pgfmath@def{acos}{533}{57.79162}
\pgfmath@def{acos}{534}{57.72388} \pgfmath@def{acos}{535}{57.65608}
\pgfmath@def{acos}{536}{57.58824} \pgfmath@def{acos}{537}{57.52035}
\pgfmath@def{acos}{538}{57.45240} \pgfmath@def{acos}{539}{57.38441}
\pgfmath@def{acos}{540}{57.31636} \pgfmath@def{acos}{541}{57.24826}
\pgfmath@def{acos}{542}{57.18010} \pgfmath@def{acos}{543}{57.11190}
\pgfmath@def{acos}{544}{57.04364} \pgfmath@def{acos}{545}{56.97533}
\pgfmath@def{acos}{546}{56.90697} \pgfmath@def{acos}{547}{56.83855}
\pgfmath@def{acos}{548}{56.77008} \pgfmath@def{acos}{549}{56.70156}
\pgfmath@def{acos}{550}{56.63298} \pgfmath@def{acos}{551}{56.56435}
\pgfmath@def{acos}{552}{56.49567} \pgfmath@def{acos}{553}{56.42693}
\pgfmath@def{acos}{554}{56.35813} \pgfmath@def{acos}{555}{56.28928}
\pgfmath@def{acos}{556}{56.22038} \pgfmath@def{acos}{557}{56.15141}
\pgfmath@def{acos}{558}{56.08240} \pgfmath@def{acos}{559}{56.01333}
\pgfmath@def{acos}{560}{55.94420} \pgfmath@def{acos}{561}{55.87501}
\pgfmath@def{acos}{562}{55.80577} \pgfmath@def{acos}{563}{55.73647}
\pgfmath@def{acos}{564}{55.66712} \pgfmath@def{acos}{565}{55.59770}
\pgfmath@def{acos}{566}{55.52823} \pgfmath@def{acos}{567}{55.45871}
\pgfmath@def{acos}{568}{55.38912} \pgfmath@def{acos}{569}{55.31947}
\pgfmath@def{acos}{570}{55.24977} \pgfmath@def{acos}{571}{55.18001}
\pgfmath@def{acos}{572}{55.11019} \pgfmath@def{acos}{573}{55.04030}
\pgfmath@def{acos}{574}{54.97036} \pgfmath@def{acos}{575}{54.90036}
\pgfmath@def{acos}{576}{54.83030} \pgfmath@def{acos}{577}{54.76018}
\pgfmath@def{acos}{578}{54.69000} \pgfmath@def{acos}{579}{54.61976}
\pgfmath@def{acos}{580}{54.54945} \pgfmath@def{acos}{581}{54.47909}
\pgfmath@def{acos}{582}{54.40866} \pgfmath@def{acos}{583}{54.33817}
\pgfmath@def{acos}{584}{54.26762} \pgfmath@def{acos}{585}{54.19701}
\pgfmath@def{acos}{586}{54.12633} \pgfmath@def{acos}{587}{54.05559}
\pgfmath@def{acos}{588}{53.98479} \pgfmath@def{acos}{589}{53.91392}
\pgfmath@def{acos}{590}{53.84299} \pgfmath@def{acos}{591}{53.77199}
\pgfmath@def{acos}{592}{53.70093} \pgfmath@def{acos}{593}{53.62981}
\pgfmath@def{acos}{594}{53.55862} \pgfmath@def{acos}{595}{53.48736}
\pgfmath@def{acos}{596}{53.41604} \pgfmath@def{acos}{597}{53.34466}
\pgfmath@def{acos}{598}{53.27320} \pgfmath@def{acos}{599}{53.20168}
\pgfmath@def{acos}{600}{53.13010} \pgfmath@def{acos}{601}{53.05844}
\pgfmath@def{acos}{602}{52.98672} \pgfmath@def{acos}{603}{52.91494}
\pgfmath@def{acos}{604}{52.84308} \pgfmath@def{acos}{605}{52.77115}
\pgfmath@def{acos}{606}{52.69916} \pgfmath@def{acos}{607}{52.62710}
\pgfmath@def{acos}{608}{52.55497} \pgfmath@def{acos}{609}{52.48276}
\pgfmath@def{acos}{610}{52.41049} \pgfmath@def{acos}{611}{52.33815}
\pgfmath@def{acos}{612}{52.26574} \pgfmath@def{acos}{613}{52.19326}
\pgfmath@def{acos}{614}{52.12070} \pgfmath@def{acos}{615}{52.04808}
\pgfmath@def{acos}{616}{51.97538} \pgfmath@def{acos}{617}{51.90261}
\pgfmath@def{acos}{618}{51.82976} \pgfmath@def{acos}{619}{51.75685}
\pgfmath@def{acos}{620}{51.68386} \pgfmath@def{acos}{621}{51.61080}
\pgfmath@def{acos}{622}{51.53766} \pgfmath@def{acos}{623}{51.46445}
\pgfmath@def{acos}{624}{51.39117} \pgfmath@def{acos}{625}{51.31781}
\pgfmath@def{acos}{626}{51.24437} \pgfmath@def{acos}{627}{51.17086}
\pgfmath@def{acos}{628}{51.09728} \pgfmath@def{acos}{629}{51.02361}
\pgfmath@def{acos}{630}{50.94987} \pgfmath@def{acos}{631}{50.87606}
\pgfmath@def{acos}{632}{50.80216} \pgfmath@def{acos}{633}{50.72819}
\pgfmath@def{acos}{634}{50.65414} \pgfmath@def{acos}{635}{50.58001}
\pgfmath@def{acos}{636}{50.50580} \pgfmath@def{acos}{637}{50.43152}
\pgfmath@def{acos}{638}{50.35715} \pgfmath@def{acos}{639}{50.28270}
\pgfmath@def{acos}{640}{50.20818} \pgfmath@def{acos}{641}{50.13357}
\pgfmath@def{acos}{642}{50.05888} \pgfmath@def{acos}{643}{49.98411}
\pgfmath@def{acos}{644}{49.90926} \pgfmath@def{acos}{645}{49.83432}
\pgfmath@def{acos}{646}{49.75930} \pgfmath@def{acos}{647}{49.68420}
\pgfmath@def{acos}{648}{49.60902} \pgfmath@def{acos}{649}{49.53375}
\pgfmath@def{acos}{650}{49.45839} \pgfmath@def{acos}{651}{49.38296}
\pgfmath@def{acos}{652}{49.30743} \pgfmath@def{acos}{653}{49.23182}
\pgfmath@def{acos}{654}{49.15613} \pgfmath@def{acos}{655}{49.08035}
\pgfmath@def{acos}{656}{49.00448} \pgfmath@def{acos}{657}{48.92852}
\pgfmath@def{acos}{658}{48.85248} \pgfmath@def{acos}{659}{48.77634}
\pgfmath@def{acos}{660}{48.70012} \pgfmath@def{acos}{661}{48.62381}
\pgfmath@def{acos}{662}{48.54741} \pgfmath@def{acos}{663}{48.47092}
\pgfmath@def{acos}{664}{48.39434} \pgfmath@def{acos}{665}{48.31767}
\pgfmath@def{acos}{666}{48.24091} \pgfmath@def{acos}{667}{48.16405}
\pgfmath@def{acos}{668}{48.08710} \pgfmath@def{acos}{669}{48.01006}
\pgfmath@def{acos}{670}{47.93293} \pgfmath@def{acos}{671}{47.85570}
\pgfmath@def{acos}{672}{47.77838} \pgfmath@def{acos}{673}{47.70096}
\pgfmath@def{acos}{674}{47.62345} \pgfmath@def{acos}{675}{47.54585}
\pgfmath@def{acos}{676}{47.46814} \pgfmath@def{acos}{677}{47.39034}
\pgfmath@def{acos}{678}{47.31244} \pgfmath@def{acos}{679}{47.23445}
\pgfmath@def{acos}{680}{47.15635} \pgfmath@def{acos}{681}{47.07816}
\pgfmath@def{acos}{682}{46.99987} \pgfmath@def{acos}{683}{46.92147}
\pgfmath@def{acos}{684}{46.84298} \pgfmath@def{acos}{685}{46.76439}
\pgfmath@def{acos}{686}{46.68569} \pgfmath@def{acos}{687}{46.60690}
\pgfmath@def{acos}{688}{46.52800} \pgfmath@def{acos}{689}{46.44899}
\pgfmath@def{acos}{690}{46.36989} \pgfmath@def{acos}{691}{46.29068}
\pgfmath@def{acos}{692}{46.21136} \pgfmath@def{acos}{693}{46.13194}
\pgfmath@def{acos}{694}{46.05241} \pgfmath@def{acos}{695}{45.97278}
\pgfmath@def{acos}{696}{45.89304} \pgfmath@def{acos}{697}{45.81319}
\pgfmath@def{acos}{698}{45.73323} \pgfmath@def{acos}{699}{45.65317}
\pgfmath@def{acos}{700}{45.57299} \pgfmath@def{acos}{701}{45.49271}
\pgfmath@def{acos}{702}{45.41231} \pgfmath@def{acos}{703}{45.33180}
\pgfmath@def{acos}{704}{45.25118} \pgfmath@def{acos}{705}{45.17045}
\pgfmath@def{acos}{706}{45.08961} \pgfmath@def{acos}{707}{45.00865}
\pgfmath@def{acos}{708}{44.92757} \pgfmath@def{acos}{709}{44.84638}
\pgfmath@def{acos}{710}{44.76508} \pgfmath@def{acos}{711}{44.68366}
\pgfmath@def{acos}{712}{44.60212} \pgfmath@def{acos}{713}{44.52046}
\pgfmath@def{acos}{714}{44.43869} \pgfmath@def{acos}{715}{44.35680}
\pgfmath@def{acos}{716}{44.27478} \pgfmath@def{acos}{717}{44.19265}
\pgfmath@def{acos}{718}{44.11039} \pgfmath@def{acos}{719}{44.02802}
\pgfmath@def{acos}{720}{43.94552} \pgfmath@def{acos}{721}{43.86289}
\pgfmath@def{acos}{722}{43.78014} \pgfmath@def{acos}{723}{43.69727}
\pgfmath@def{acos}{724}{43.61427} \pgfmath@def{acos}{725}{43.53115}
\pgfmath@def{acos}{726}{43.44790} \pgfmath@def{acos}{727}{43.36452}
\pgfmath@def{acos}{728}{43.28101} \pgfmath@def{acos}{729}{43.19737}
\pgfmath@def{acos}{730}{43.11360} \pgfmath@def{acos}{731}{43.02970}
\pgfmath@def{acos}{732}{42.94567} \pgfmath@def{acos}{733}{42.86151}
\pgfmath@def{acos}{734}{42.77721} \pgfmath@def{acos}{735}{42.69278}
\pgfmath@def{acos}{736}{42.60821} \pgfmath@def{acos}{737}{42.52351}
\pgfmath@def{acos}{738}{42.43867} \pgfmath@def{acos}{739}{42.35370}
\pgfmath@def{acos}{740}{42.26858} \pgfmath@def{acos}{741}{42.18333}
\pgfmath@def{acos}{742}{42.09793} \pgfmath@def{acos}{743}{42.01240}
\pgfmath@def{acos}{744}{41.92672} \pgfmath@def{acos}{745}{41.84090}
\pgfmath@def{acos}{746}{41.75493} \pgfmath@def{acos}{747}{41.66882}
\pgfmath@def{acos}{748}{41.58257} \pgfmath@def{acos}{749}{41.49617}
\pgfmath@def{acos}{750}{41.40962} \pgfmath@def{acos}{751}{41.32292}
\pgfmath@def{acos}{752}{41.23607} \pgfmath@def{acos}{753}{41.14908}
\pgfmath@def{acos}{754}{41.06193} \pgfmath@def{acos}{755}{40.97463}
\pgfmath@def{acos}{756}{40.88717} \pgfmath@def{acos}{757}{40.79956}
\pgfmath@def{acos}{758}{40.71180} \pgfmath@def{acos}{759}{40.62388}
\pgfmath@def{acos}{760}{40.53580} \pgfmath@def{acos}{761}{40.44756}
\pgfmath@def{acos}{762}{40.35916} \pgfmath@def{acos}{763}{40.27061}
\pgfmath@def{acos}{764}{40.18189} \pgfmath@def{acos}{765}{40.09300}
\pgfmath@def{acos}{766}{40.00396} \pgfmath@def{acos}{767}{39.91474}
\pgfmath@def{acos}{768}{39.82537} \pgfmath@def{acos}{769}{39.73582}
\pgfmath@def{acos}{770}{39.64611} \pgfmath@def{acos}{771}{39.55622}
\pgfmath@def{acos}{772}{39.46617} \pgfmath@def{acos}{773}{39.37594}
\pgfmath@def{acos}{774}{39.28554} \pgfmath@def{acos}{775}{39.19496}
\pgfmath@def{acos}{776}{39.10421} \pgfmath@def{acos}{777}{39.01328}
\pgfmath@def{acos}{778}{38.92218} \pgfmath@def{acos}{779}{38.83089}
\pgfmath@def{acos}{780}{38.73942} \pgfmath@def{acos}{781}{38.64777}
\pgfmath@def{acos}{782}{38.55594} \pgfmath@def{acos}{783}{38.46392}
\pgfmath@def{acos}{784}{38.37171} \pgfmath@def{acos}{785}{38.27932}
\pgfmath@def{acos}{786}{38.18673} \pgfmath@def{acos}{787}{38.09396}
\pgfmath@def{acos}{788}{38.00100} \pgfmath@def{acos}{789}{37.90784}
\pgfmath@def{acos}{790}{37.81448} \pgfmath@def{acos}{791}{37.72093}
\pgfmath@def{acos}{792}{37.62719} \pgfmath@def{acos}{793}{37.53324}
\pgfmath@def{acos}{794}{37.43909} \pgfmath@def{acos}{795}{37.34474}
\pgfmath@def{acos}{796}{37.25019} \pgfmath@def{acos}{797}{37.15542}
\pgfmath@def{acos}{798}{37.06046} \pgfmath@def{acos}{799}{36.96528}
\pgfmath@def{acos}{800}{36.86989} \pgfmath@def{acos}{801}{36.77429}
\pgfmath@def{acos}{802}{36.67848} \pgfmath@def{acos}{803}{36.58245}
\pgfmath@def{acos}{804}{36.48621} \pgfmath@def{acos}{805}{36.38974}
\pgfmath@def{acos}{806}{36.29305} \pgfmath@def{acos}{807}{36.19615}
\pgfmath@def{acos}{808}{36.09901} \pgfmath@def{acos}{809}{36.00165}
\pgfmath@def{acos}{810}{35.90406} \pgfmath@def{acos}{811}{35.80625}
\pgfmath@def{acos}{812}{35.70820} \pgfmath@def{acos}{813}{35.60991}
\pgfmath@def{acos}{814}{35.51139} \pgfmath@def{acos}{815}{35.41263}
\pgfmath@def{acos}{816}{35.31364} \pgfmath@def{acos}{817}{35.21440}
\pgfmath@def{acos}{818}{35.11491} \pgfmath@def{acos}{819}{35.01518}
\pgfmath@def{acos}{820}{34.91520} \pgfmath@def{acos}{821}{34.81497}
\pgfmath@def{acos}{822}{34.71449} \pgfmath@def{acos}{823}{34.61375}
\pgfmath@def{acos}{824}{34.51276} \pgfmath@def{acos}{825}{34.41150}
\pgfmath@def{acos}{826}{34.30999} \pgfmath@def{acos}{827}{34.20821}
\pgfmath@def{acos}{828}{34.10616} \pgfmath@def{acos}{829}{34.00385}
\pgfmath@def{acos}{830}{33.90126} \pgfmath@def{acos}{831}{33.79840}
\pgfmath@def{acos}{832}{33.69526} \pgfmath@def{acos}{833}{33.59184}
\pgfmath@def{acos}{834}{33.48814} \pgfmath@def{acos}{835}{33.38416}
\pgfmath@def{acos}{836}{33.27989} \pgfmath@def{acos}{837}{33.17533}
\pgfmath@def{acos}{838}{33.07047} \pgfmath@def{acos}{839}{32.96532}
\pgfmath@def{acos}{840}{32.85988} \pgfmath@def{acos}{841}{32.75413}
\pgfmath@def{acos}{842}{32.64807} \pgfmath@def{acos}{843}{32.54171}
\pgfmath@def{acos}{844}{32.43504} \pgfmath@def{acos}{845}{32.32806}
\pgfmath@def{acos}{846}{32.22076} \pgfmath@def{acos}{847}{32.11314}
\pgfmath@def{acos}{848}{32.00520} \pgfmath@def{acos}{849}{31.89693}
\pgfmath@def{acos}{850}{31.78833} \pgfmath@def{acos}{851}{31.67939}
\pgfmath@def{acos}{852}{31.57012} \pgfmath@def{acos}{853}{31.46051}
\pgfmath@def{acos}{854}{31.35056} \pgfmath@def{acos}{855}{31.24026}
\pgfmath@def{acos}{856}{31.12961} \pgfmath@def{acos}{857}{31.01860}
\pgfmath@def{acos}{858}{30.90724} \pgfmath@def{acos}{859}{30.79551}
\pgfmath@def{acos}{860}{30.68341} \pgfmath@def{acos}{861}{30.57095}
\pgfmath@def{acos}{862}{30.45811} \pgfmath@def{acos}{863}{30.34489}
\pgfmath@def{acos}{864}{30.23128} \pgfmath@def{acos}{865}{30.11729}
\pgfmath@def{acos}{866}{30.00291} \pgfmath@def{acos}{867}{29.88813}
\pgfmath@def{acos}{868}{29.77294} \pgfmath@def{acos}{869}{29.65736}
\pgfmath@def{acos}{870}{29.54136} \pgfmath@def{acos}{871}{29.42494}
\pgfmath@def{acos}{872}{29.30810} \pgfmath@def{acos}{873}{29.19084}
\pgfmath@def{acos}{874}{29.07315} \pgfmath@def{acos}{875}{28.95502}
\pgfmath@def{acos}{876}{28.83645} \pgfmath@def{acos}{877}{28.71743}
\pgfmath@def{acos}{878}{28.59796} \pgfmath@def{acos}{879}{28.47803}
\pgfmath@def{acos}{880}{28.35763} \pgfmath@def{acos}{881}{28.23677}
\pgfmath@def{acos}{882}{28.11542} \pgfmath@def{acos}{883}{27.99360}
\pgfmath@def{acos}{884}{27.87128} \pgfmath@def{acos}{885}{27.74847}
\pgfmath@def{acos}{886}{27.62516} \pgfmath@def{acos}{887}{27.50134}
\pgfmath@def{acos}{888}{27.37700} \pgfmath@def{acos}{889}{27.25214}
\pgfmath@def{acos}{890}{27.12675} \pgfmath@def{acos}{891}{27.00082}
\pgfmath@def{acos}{892}{26.87434} \pgfmath@def{acos}{893}{26.74731}
\pgfmath@def{acos}{894}{26.61973} \pgfmath@def{acos}{895}{26.49157}
\pgfmath@def{acos}{896}{26.36283} \pgfmath@def{acos}{897}{26.23351}
\pgfmath@def{acos}{898}{26.10359} \pgfmath@def{acos}{899}{25.97306}
\pgfmath@def{acos}{900}{25.84193} \pgfmath@def{acos}{901}{25.71017}
\pgfmath@def{acos}{902}{25.57778} \pgfmath@def{acos}{903}{25.44475}
\pgfmath@def{acos}{904}{25.31106} \pgfmath@def{acos}{905}{25.17671}
\pgfmath@def{acos}{906}{25.04169} \pgfmath@def{acos}{907}{24.90598}
\pgfmath@def{acos}{908}{24.76958} \pgfmath@def{acos}{909}{24.63247}
\pgfmath@def{acos}{910}{24.49464} \pgfmath@def{acos}{911}{24.35608}
\pgfmath@def{acos}{912}{24.21678} \pgfmath@def{acos}{913}{24.07672}
\pgfmath@def{acos}{914}{23.93588} \pgfmath@def{acos}{915}{23.79427}
\pgfmath@def{acos}{916}{23.65185} \pgfmath@def{acos}{917}{23.50863}
\pgfmath@def{acos}{918}{23.36457} \pgfmath@def{acos}{919}{23.21967}
\pgfmath@def{acos}{920}{23.07391} \pgfmath@def{acos}{921}{22.92728}
\pgfmath@def{acos}{922}{22.77975} \pgfmath@def{acos}{923}{22.63132}
\pgfmath@def{acos}{924}{22.48195} \pgfmath@def{acos}{925}{22.33164}
\pgfmath@def{acos}{926}{22.18036} \pgfmath@def{acos}{927}{22.02810}
\pgfmath@def{acos}{928}{21.87483} \pgfmath@def{acos}{929}{21.72053}
\pgfmath@def{acos}{930}{21.56518} \pgfmath@def{acos}{931}{21.40876}
\pgfmath@def{acos}{932}{21.25124} \pgfmath@def{acos}{933}{21.09260}
\pgfmath@def{acos}{934}{20.93281} \pgfmath@def{acos}{935}{20.77185}
\pgfmath@def{acos}{936}{20.60969} \pgfmath@def{acos}{937}{20.44630}
\pgfmath@def{acos}{938}{20.28165} \pgfmath@def{acos}{939}{20.11570}
\pgfmath@def{acos}{940}{19.94844} \pgfmath@def{acos}{941}{19.77982}
\pgfmath@def{acos}{942}{19.60981} \pgfmath@def{acos}{943}{19.43837}
\pgfmath@def{acos}{944}{19.26546} \pgfmath@def{acos}{945}{19.09105}
\pgfmath@def{acos}{946}{18.91509} \pgfmath@def{acos}{947}{18.73754}
\pgfmath@def{acos}{948}{18.55835} \pgfmath@def{acos}{949}{18.37748}
\pgfmath@def{acos}{950}{18.19487} \pgfmath@def{acos}{951}{18.01047}
\pgfmath@def{acos}{952}{17.82423} \pgfmath@def{acos}{953}{17.63609}
\pgfmath@def{acos}{954}{17.44598} \pgfmath@def{acos}{955}{17.25385}
\pgfmath@def{acos}{956}{17.05962} \pgfmath@def{acos}{957}{16.86322}
\pgfmath@def{acos}{958}{16.66457} \pgfmath@def{acos}{959}{16.46359}
\pgfmath@def{acos}{960}{16.26020} \pgfmath@def{acos}{961}{16.05430}
\pgfmath@def{acos}{962}{15.84580} \pgfmath@def{acos}{963}{15.63459}
\pgfmath@def{acos}{964}{15.42057} \pgfmath@def{acos}{965}{15.20360}
\pgfmath@def{acos}{966}{14.98357} \pgfmath@def{acos}{967}{14.76033}
\pgfmath@def{acos}{968}{14.53374} \pgfmath@def{acos}{969}{14.30364}
\pgfmath@def{acos}{970}{14.06986} \pgfmath@def{acos}{971}{13.83221}
\pgfmath@def{acos}{972}{13.59049} \pgfmath@def{acos}{973}{13.34447}
\pgfmath@def{acos}{974}{13.09392} \pgfmath@def{acos}{975}{12.83856}
\pgfmath@def{acos}{976}{12.57811} \pgfmath@def{acos}{977}{12.31225}
\pgfmath@def{acos}{978}{12.04060} \pgfmath@def{acos}{979}{11.76278}
\pgfmath@def{acos}{980}{11.47834} \pgfmath@def{acos}{981}{11.18676}
\pgfmath@def{acos}{982}{10.88748} \pgfmath@def{acos}{983}{10.57984}
\pgfmath@def{acos}{984}{10.26309} \pgfmath@def{acos}{985}{9.93636}
\pgfmath@def{acos}{986}{9.59863} \pgfmath@def{acos}{987}{9.24870}
\pgfmath@def{acos}{988}{8.88512} \pgfmath@def{acos}{989}{8.50614}
\pgfmath@def{acos}{990}{8.10961} \pgfmath@def{acos}{991}{7.69281}
\pgfmath@def{acos}{992}{7.25224} \pgfmath@def{acos}{993}{6.78328}
\pgfmath@def{acos}{994}{6.27958} \pgfmath@def{acos}{995}{5.73196}
\pgfmath@def{acos}{996}{5.12640} \pgfmath@def{acos}{997}{4.43922}
\pgfmath@def{acos}{998}{3.62430} \pgfmath@def{acos}{999}{2.56255}
\pgfmath@def{acos}{1000}{0.00000}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.trigonometric.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathparser.code.tex ====
\newdimen\pgfmath@dimen
\newcount\pgfmath@count
\newbox\pgfmath@box
\newtoks\pgfmath@toks
\newif\ifpgfmath@quickparse
\newif\ifpgfmathfloat
\newif\ifpgfmathunitsdeclared
\newif\ifpgfmathmathunitsdeclared
\newif\ifpgfmathignoreunitscale
\let\pgfmath@protected@edef=\edef
\ifcsname protected@edef\endcsname
\let\pgfmath@protected@edef=\protected@edef
\fi
\def\pgfmathprint#1{\pgfmathparse{#1}\pgfmathresult}
\def\pgfmathparse{%
\begingroup
\pgfmath@catcodes
\pgfmath@quickparsefalse
\ifpgfmathfloat
\let\pgfmath@parse@next=\pgfmathfloatparsenumber
\else
\let\pgfmath@parse@next=\pgfmathparse@
\fi
\pgfmath@parse@next}
\begingroup
\lccode`\~=`\"
\lowercase{\endgroup
\def\pgfmath@catcodes{%
\catcode`\==12 %
\catcode`\,=12 %
\catcode`\|=12 %
\catcode`\&=12 %
\let~\pgfmath@char@quote
}}%
\def\pgfmathqparse{%
\begingroup
\pgfmath@catcodes
\pgfmath@quickparsetrue
\pgfmathparse@}
\def\pgfmathparse@#1{%
\global\pgfmathunitsdeclaredfalse
\global\pgfmathmathunitsdeclaredfalse
\pgfmath@protected@edef\pgfmath@expression{#1}%
\expandafter\pgfmathparse@trynumber@loop\pgfmath@expression\pgfmath@parse@stop
}
\def\pgfmath@parse@stop{\pgfmath@parse@stop}%
\def\pgfmathparse@trynumber@token{numeric}
\begingroup
\def\\{\global\let\pgf@let@space@token= } \\ %
\endgroup
\def\pgfmathparse@trynumber@loop{%
\futurelet\pgfmath@token@let\pgfmathparse@trynumber@loop@
}%
\def\pgfmathparse@trynumber@loop@#1{%
\ifx\pgfmath@token@let\pgf@let@space@token
\def\pgfmath@parse@next{\pgfmathparse@@#1}%
\else
\ifx\pgfmath@token@let\bgroup%
\let\pgfmath@parse@next=\pgfmathparse@@
\else
\ifx\pgfmath@token@let\pgfmath@parse@stop
\let\pgfmath@parse@next=\pgfmathparse@expression@is@number
\else
\expandafter\ifx\csname pgfmath@token@\pgfmathparse@trynumber@token @\string#1\endcsname\relax%
\let\pgfmath@parse@next=\pgfmathparse@@
\else
\let\pgfmath@parse@next=\pgfmathparse@trynumber@loop
\fi
\fi
\fi
\fi
\pgfmath@parse@next
}%
\def\pgfmathparse@expression@is@number{%
\let\pgfmathresult=\pgfmath@expression
\pgfmath@smuggleone\pgfmathresult%
\endgroup
\ignorespaces
}%
\def\pgfmathparse@@#1\pgfmath@parse@stop{%
\let\real=\pgfmath@calc@real
\let\minof=\pgfmath@calc@minof
\let\maxof=\pgfmath@calc@maxof
\let\ratio=\pgfmath@calc@ratio
\let\widthof=\pgfmath@calc@widthof
\let\heightof=\pgfmath@calc@heightof
\let\depthof=\pgfmath@calc@depthof
\pgfmath@selectfont
\pgfmath@stack@operation={{}{}{}}%
\pgfmath@stack@operand={{}{}{}}%
\let\pgfmath@stack@operation@top=\pgfmath@stack@empty
\let\pgfmath@stack@operand@top=\pgfmath@stack@empty
\expandafter\pgfmath@bgroup@strip\expandafter{\pgfmath@expression}%
\expandafter\pgfmath@parse@@operand\pgfmath@bgroup@stripped @@@@\pgfmath@parse@stop%
}
\def\pgfmath@parse@end#1\pgfmath@parse@stop{%
\pgfmathpostparse
\pgfmath@smuggleone\pgfmathresult%
\endgroup
\ignorespaces}
\let\pgfmathpostparse=\relax
\def\pgfmathscaleresult{%
\ifpgfmathunitsdeclared
\else
\ifpgfmathignoreunitscale
\else
\afterassignment\pgfmath@gobbletilpgfmath@%
\pgfmath@x\pgfmathresultunitscale pt\relax\pgfmath@%
\expandafter\pgfmath@x\pgfmathresult\pgfmath@x%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
\fi
\fi
}
\def\pgfmathsetresultunitscale#1{\def\pgfmathresultunitscale{#1}}
\def\pgfmathresultunitscale{1}
\def\pgfmathifexpression#1#2#3{%
\pgfmathparse{#1}%
\pgfmath@iftrue{#2}{#3}%
}%
\def\pgfmath@iftrue{%
\ifdim\pgfmathresult pt=1.0pt %
\let\pgfmath@next=\pgfutil@firstoftwo
\else
\let\pgfmath@next=\pgfutil@secondoftwo
\fi
\pgfmath@next%
}%
\def\pgfmath@calc@real#1{#1}
\def\pgfmath@calc@minof#1#2{min(#1,#2)}
\def\pgfmath@calc@maxof#1#2{max(#1,#2)}
\def\pgfmath@calc@ratio#1#2{#1/#2}
\def\pgfmath@calc@widthof#1{width("#1")}
\def\pgfmath@calc@heightof#1{height("#1")}
\def\pgfmath@calc@depthof#1{depth("#1")}
\def\pgfmath@bgroup{\string\pgfmath@bgroup}
\def\pgfmath@egroup{\string\pgfmath@egroup}
\def\pgfmath@egroup@token{\pgfmath@egroup}
\def\pgfmath@text@@{@}
\def\pgfmath@text@operator{operator}
\def\pgfmath@text@function{function}
\def\pgfmath@dots{...}
\def\pgfmath@char@zero{0}
\def\pgfmath@char@quote{"}
\def\pgfmath@char@exclamation{!}
\def\pgfmath@char@plus{+}
\def\pgfmath@char@minus{-}
\def\pgfmath@char@period{.}
\def\pgfmath@char@leftangle{<}
\def\pgfmath@char@leftbracket{[}
\pgfmath@toks={#}
\edef\pgfmath@char@hash{\the\pgfmath@toks}
\def\pgfmath@tokens@make#1#2{%
\def\pgfmath@prefix{#1}%
\expandafter\pgfmath@tokens@@make#2{}}
\def\pgfmath@tokens@@make#1{%
\def\pgfmath@token{#1}%
\ifx\pgfmath@token\pgfmath@empty
\else
\pgfmath@namedef{pgfmath@token@\pgfmath@prefix @\string#1}{#1}%
\expandafter\pgfmath@tokens@@make%
\fi}
\pgfmath@tokens@make{box}{\wd\ht\dp}
\ifx\dimexpr\@undefined\else %
\pgfmath@tokens@make{dimexpr}{\dimexpr\glueexpr}
\fi
\pgfmath@tokens@make{unit}{{bp}{cc}{cm}{dd}{em}{ex}{in}{mm}{pc}{pt}{sp}}
\ifx\pdftexversion\@undefined\else %
\pgfmath@tokens@make{unit}{{nc}{nd}{px}}
\fi
\ifx\directlua\@undefined\else %
\pgfmath@tokens@make{unit}{{nc}{nd}{px}}
\fi
\ifx\kanjiskip\@undefined\else %
\pgfmath@tokens@make{unit}{{H}{Q}{zh}{zw}}
\fi
\pgfmath@tokens@make{mathunit}{{mu}}
\pgfmath@tokens@make{numeric}{.0123456789}
\pgfmath@tokens@make{number}{0123456789}
\pgfmath@tokens@make{functional}{_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ}
\pgfmath@tokens@make{exponent}{eE}
\pgfmath@tokens@make{group}{{()}{[]}{\pgfmath@bgroup\pgfmath@egroup}}
\pgfmath@tokens@make{specials}{@)]\pgfmath@egroup}
\pgfmath@tokens@make{hexadecimal}{0123456789ABCDEFabcdef}
\pgfmath@tokens@make{octal}{01234567}
\pgfmath@tokens@make{binary}{01}
\pgfmath@namedef{pgfmath@base@0x}{16}
\pgfmath@namedef{pgfmath@base@0X}{16}
\pgfmath@namedef{pgfmath@base@0b}{2}
\pgfmath@namedef{pgfmath@base@0B}{2}
\newif\ifpgfmath@dimen@
\def\pgfmath@dimen@#1{%
\begingroup
\afterassignment\pgfmath@dimen@@%
#1=0.0pt\relax\pgfmath@}
\def\pgfmath@dimen@@#1#2\pgfmath@{%
\endgroup
\ifx#1.%
\pgfmath@dimen@false
\else
\pgfmath@dimen@true
\fi}
\def\pgfmath@parse@ifbgroup#1#2{%
\let\pgfmath@parse@bgroup@after=#1%
\let\pgfmath@parse@nobgroup@after=#2%
\futurelet\pgfmath@token@let%
\pgfmath@parse@@ifbgroup}
\def\pgfmath@parse@@ifbgroup{%
\ifx\pgfmath@token@let\bgroup
\let\pgfmath@parse@next=\pgfmath@parse@@@ifbgroup
\else
\ifx\pgfmath@token@let\pgfmath@sptoken
\let\pgfmath@parse@next=\pgfmath@parse@@@@ifbgroup
\else
\let\pgfmath@parse@next=\pgfmath@parse@nobgroup@after
\fi
\fi
\pgfmath@parse@next}
\newif\ifpgfmath@octalparsing
\pgfmath@octalparsingtrue
\def\pgfmath@parse@@@ifbgroup#1{%
\pgfmath@parse@bgroup@after\pgfmath@bgroup#1\pgfmath@egroup}
{
\def\:{\pgfmath@parse@@@@ifbgroup}
\expandafter\gdef\: {\futurelet\pgfmath@token@let\pgfmath@parse@@ifbgroup}
}
\def\pgfmath@parse@operand{%
\expandafter\pgfmath@parse@@operand\pgfmath@token@next}
\def\pgfmath@parse@@operand{%
\pgfmath@parse@ifbgroup{\pgfmath@parse@@operand}{\pgfmath@parse@@operand@}}
\def\pgfmath@parse@@operand@#1{%
\def\pgfmath@token{#1}%
\ifx\pgfmath@token\pgfmath@char@plus
\let\pgfmath@parse@next=\pgfmath@parse@@operand%
\else
\ifx\pgfmath@token\pgfmath@char@minus
\pgfmath@stack@push@operation{neg}%
\let\pgfmath@parse@next=\pgfmath@parse@@operand
\else
\expandafter\ifx\csname pgfmath@operation@\expandafter\string\pgfmath@token @prefix\endcsname\pgfmath@token
\let\pgfmath@parse@next=\pgfmath@parse@prefix@operator
\else
\ifpgfmath@quickparse
\let\pgfmath@parse@next=\pgfmath@qparse@operand
\else
\let\pgfmath@number=\pgfmath@empty
\expandafter\ifx\csname pgfmath@token@functional@\string#1\endcsname\relax%
\let\pgfmath@base=\pgfmath@empty%
\let\pgfmath@token@next=\pgfmath@token%
\if#10%
\ifpgfmath@octalparsing%
\def\pgfmath@base{8}%
\fi%
\fi%
\let\pgfmath@parse@next=\pgfmath@parse@number%
\else%
\let\pgfmath@function=\pgfmath@token%
\let\pgfmath@parse@next=\pgfmath@parse@function%
\fi%
\fi%
\fi%
\fi%
\fi%
\pgfmath@parse@next%
}
\def\pgfmath@parse@prefix@operator{%
\ifx\pgfmath@token\pgfmath@char@quote%
\let\pgfmath@parse@next=\pgfmath@parse@operand@quote%
\else%
\ifx\pgfmath@token\pgfmath@char@exclamation%
\pgfmath@stack@push@operation{not}%
\let\pgfmath@parse@next=\pgfmath@parse@@operand%
\else%
\expandafter\pgfmath@stack@push@operation\expandafter{\pgfmath@token}%
\let\pgfmath@parse@next=\pgfmath@parse@@operand%
\fi%
\fi%
\pgfmath@parse@next%
}%
\def\pgfmath@parse@operand@quote#1"{%
\def\pgfmathresult{#1}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\pgfmath@parse@@operator%
}
\def\pgfmath@qparse@operand{%
\afterassignment\pgfmath@qparse@@operand%
\pgfmath@dimen\pgfmath@token}
\def\pgfmath@qparse@@operand{%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\pgfmath@parse@@operator%
}
\def\pgfmath@parse@number{\pgfmath@parse@ifbgroup{\pgfmath@parse@number}{\pgfmath@parse@number@}}
\def\pgfmath@parse@number@#1{%
\let\pgfmath@token=\pgfmath@token@next%
\def\pgfmath@token@next{#1}%
\pgfmath@parse@@number}
\def\pgfmath@parse@@number{%
\ifx\pgfmath@token\pgfmath@egroup@token%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmath@number}%
\let\pgfmath@parse@next=\pgfmath@parse@@@operator%
\else%
\expandafter\ifcat\pgfmath@token\relax%
\expandafter\ifx\csname pgfmath@token@dimexpr@\expandafter\string\pgfmath@token\endcsname\relax%
\expandafter\ifx\pgfmath@token\numexpr%
\let\pgfmath@parse@next=\pgfmath@parse@numexpr%
\else%
\expandafter\ifx\pgfmath@token\muexpr%
\let\pgfmath@parse@next=\pgfmath@parse@muexpr%
\else%
\expandafter\ifx\csname pgfmath@token@box@\expandafter\string\pgfmath@token\endcsname\relax%
\expandafter\pgfmath@dimen@\pgfmath@token%
\ifpgfmath@dimen@%
\global\pgfmathunitsdeclaredtrue%
\pgfmath@dimen=\pgfmath@number\pgfmath@token%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@operator%
\else%
\pgfmath@count=\pgfmath@token%
\expandafter\def\expandafter\pgfmath@number\expandafter{\the\pgfmath@count}%
\expandafter\ifcat\pgfmath@token@next\relax%
\let\pgfmath@parse@next=\pgfmath@parse@number%
\else%
\let\pgfmathresult=\pgfmath@number%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@operator%
\fi%
\fi%
\else%
\global\pgfmathunitsdeclaredtrue%
\pgfmath@dimen=\pgfmath@number\pgfmath@token\pgfmath@token@next%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@@operator%
\fi%
\fi%
\fi%
\else%
\global\pgfmathunitsdeclaredtrue%
\let\pgfmath@parse@next=\pgfmath@parse@dimexpr%
\fi%
\else%
\expandafter\ifx\csname pgfmath@token@numeric@\expandafter\string\pgfmath@token\endcsname\relax%
\expandafter\ifx\csname pgfmath@token@unit@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
\expandafter\ifx\csname pgfmath@token@unit@\pgfmath@token\endcsname\relax%
\expandafter\ifx\csname pgfmath@token@exponent@\pgfmath@token\endcsname\relax%
\expandafter\ifx\csname pgfmath@base@\pgfmath@number\pgfmath@token\endcsname\relax%
\expandafter\ifx\csname pgfmath@token@mathunit@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
\ifx\pgfmath@base\pgfmath@empty%
\let\pgfmathresult=\pgfmath@number%
\else%
\ifx\pgfmath@number\pgfmath@char@zero%
\let\pgfmathresult=\pgfmath@number%
\else%
\expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{8}{10}%
\fi%
\fi%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@@@operator%
\else%
\global\pgfmathunitsdeclaredtrue%
\global\pgfmathmathunitsdeclaredtrue%
\pgfmath@dimen=\pgfmath@number pt\relax%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@@operator%
\fi%
\else%
\expandafter\let\expandafter\pgfmath@base\expandafter=%
\csname pgfmath@base@\pgfmath@number\pgfmath@token\endcsname%
\let\pgfmath@parse@next=\pgfmath@parse@base%
\fi%
\else%
\let\pgfmath@parse@next=\pgfmath@parse@exponent%
\fi%
\else%
\global\pgfmathunitsdeclaredtrue%
\pgfmath@dimen=\pgfmath@number\pgfmath@token\relax%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@@operator%
\fi%
\else%
\global\pgfmathunitsdeclaredtrue%
\pgfmath@dimen=\pgfmath@number\pgfmath@token\pgfmath@token@next\relax%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@@operator%
\fi%
\else%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfmath@number%
\expandafter\expandafter\expandafter{\expandafter\pgfmath@number\pgfmath@token}%
\ifx\pgfmath@token\pgfmath@char@period%
\let\pgfmath@base=\pgfmath@empty%
\fi%
\let\pgfmath@parse@next=\pgfmath@parse@number%
\fi%
\fi%
\fi%
\pgfmath@parse@next%
}
\def\pgfmath@parse@dimexpr{%
\afterassignment\pgfmath@parse@dimexpr@%
\expandafter\expandafter\expandafter\pgfmath@dimen\expandafter\pgfmath@token\pgfmath@token@next%
}
\def\pgfmath@parse@dimexpr@{%
\edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\pgfmath@parse@@operator%
}
\def\pgfmath@parse@muexpr{%
\begingroup%
\afterassignment\pgfmath@parse@muexpr@%
\expandafter\expandafter\expandafter\muskip\expandafter\expandafter\expandafter0\expandafter\pgfmath@token\expandafter\pgfmath@token@next%
}
\def\pgfmath@parse@muexpr@{%
\expandafter\endgroup%
\expandafter\edef\expandafter\pgfmathresult\expandafter{\expandafter\pgfMATH@STRIPMU\the\muskip0}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\pgfmath@parse@@operator%
}
{
\catcode`\m=12
\catcode`\u=12
\gdef\pgfMATH@STRIPMU#1mu{#1}
}
\def\pgfmath@parse@numexpr{%
\afterassignment\pgfmath@parse@numexpr@%
\expandafter\expandafter\expandafter\pgfmath@count\expandafter\pgfmath@token\pgfmath@token@next%
}
\def\pgfmath@parse@numexpr@#1{%
\expandafter\def\expandafter\pgfmath@number\expandafter{\the\pgfmath@count}%
\def\pgfmath@token@next{#1}%
\expandafter\ifcat\pgfmath@token@next\relax%
\let\pgfmath@parse@next=\pgfmath@parse@number%
\else%
\let\pgfmathresult=\pgfmath@number%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@operator%
\fi%
\pgfmath@parse@next%
}
\def\pgfmath@parse@exponent{%
\afterassignment\pgfmath@parse@@exponent%
\pgfmath@count\pgfmath@token@next}
\def\pgfmath@parse@@exponent{%
\pgfmathscientific{\pgfmath@number}{\the\pgfmath@count}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\pgfmath@parse@@operator%
}
\def\pgfmath@parse@base{%
\ifnum\pgfmath@base=2\relax%
\let\pgfmath@parse@next=\pgfmath@parse@binary%
\else%
\ifnum\pgfmath@base=16\relax%
\let\pgfmath@parse@next=\pgfmath@parse@hexadecimal%
\else%
\pgfmath@error{Unexpected numerical base `\pgfmath@base'}{}%
\def\pgfmathresult{0}%
\let\pgfmath@parse@next=\pgfmath@parse@end%
\fi%
\fi%
\let\pgfmath@number=\pgfmath@empty%
\expandafter\pgfmath@parse@next\pgfmath@token@next%
}
\def\pgfmath@parse@binary#1{%
\expandafter\ifx\csname pgfmath@token@binary@#1\endcsname\relax%
\expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{2}{10}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\def\pgfmath@token@next{#1}%
\let\pgfmath@parse@next=\pgfmath@parse@operator%
\else%
\expandafter\def\expandafter\pgfmath@number\expandafter{\pgfmath@number#1}%
\let\pgfmath@parse@next=\pgfmath@parse@binary%
\fi%
\pgfmath@parse@next%
}
\def\pgfmath@parse@hexadecimal#1{%
\expandafter\ifx\csname pgfmath@token@hexadecimal@#1\endcsname\relax%
\expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{16}{10}%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\def\pgfmath@token@next{#1}%
\let\pgfmath@parse@next=\pgfmath@parse@operator%
\else%
\expandafter\def\expandafter\pgfmath@number\expandafter{\pgfmath@number#1}%
\let\pgfmath@parse@next=\pgfmath@parse@hexadecimal%
\fi%
\pgfmath@parse@next%
}
\def\pgfmath@parse@function{\pgfmath@parse@ifbgroup{\pgfmath@parse@function}{\pgfmath@parse@@function}}
\def\pgfmath@parse@function@{\futurelet\pgfmath@token@let\pgfmath@parse@@function}
\def\pgfmath@parse@@function{%
\ifx\pgfmath@token@let\pgfmath@sptoken%
\let\pgfmath@token=\pgfmath@empty%
\let\pgfmath@parse@next=\pgfmath@parse@@@@function%
\else%
\let\pgfmath@parse@next=\pgfmath@parse@@@function%
\fi%
\pgfmath@parse@next}
\def\pgfmath@parse@@@function#1{%
\expandafter\ifx\csname pgfmath@token@functional@\expandafter\string#1\endcsname\relax%
\expandafter\ifx\csname pgfmath@token@number@\expandafter\string#1\endcsname\relax%
\def\pgfmath@token{#1}%
\let\pgfmath@parse@next=\pgfmath@parse@@@@function%
\else%
\expandafter\def\expandafter\pgfmath@function\expandafter{\pgfmath@function#1}%
\let\pgfmath@parse@next=\pgfmath@parse@function@%
\fi%
\else%
\edef\pgfmath@function{\pgfmath@function#1}%
\let\pgfmath@parse@next=\pgfmath@parse@function@%
\fi%
\pgfmath@parse@next}
\def\pgfmath@parse@@@@function{%
\expandafter\ifx\csname pgfmath@function@\pgfmath@function\endcsname\relax%
\pgfmath@error{Unknown function `\pgfmath@function'}{}%
\def\pgfmathresult{0}%
\let\pgfmath@parse@next=\pgfmath@parse@end%
\else%
\expandafter\ifnum\csname pgfmath@operation@\pgfmath@function @arity\endcsname=0\relax%
\csname pgfmath\pgfmath@function @\endcsname%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\let\pgfmath@parse@next=\pgfmath@parse@@operator%
\else%
\expandafter\pgfmath@stack@push@operation\expandafter{\pgfmath@function}%
\let\pgfmath@parse@next=\pgfmath@parse@@operand%
\fi%
\fi%
\expandafter\pgfmath@parse@next\pgfmath@token}
\def\pgfmath@parse@operator{\pgfmath@parse@ifbgroup{\pgfmath@parse@operator}{\pgfmath@parse@operator@}}%
\def\pgfmath@parse@operator@#1{%
\let\pgfmath@token=\pgfmath@token@next%
\def\pgfmath@token@next{#1}%
\pgfmath@parse@@@operator}
\def\pgfmath@parse@@operator{\pgfmath@parse@ifbgroup{\pgfmath@parse@@operator}{\pgfmath@parse@@operator@}}%
\def\pgfmath@parse@@operator@#1{%
\def\pgfmath@token{#1}%
\pgfmath@parse@ifbgroup{\pgfmath@parse@@operator@@}{\pgfmath@parse@@operator@@}}%
\def\pgfmath@parse@@operator@@#1{%
\def\pgfmath@token@next{#1}%
\pgfmath@parse@@@operator}
\def\pgfmath@parse@@@operator{%
\expandafter\ifx\csname pgfmath@operator@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
\expandafter\ifx\csname pgfmath@operator@\pgfmath@token\endcsname\relax%
\pgfmath@error{Unknown operator `\pgfmath@token' or `\pgfmath@token\pgfmath@token@next'}{}%
\def\pgfmathresult{0}%
\let\pgfmath@parse@next=\pgfmath@parse@end%
\else%
\expandafter\pgfmath@operation@process\expandafter{\pgfmath@token}%
\ifx\pgfmath@token\pgfmath@text@@%
\let\pgfmath@parse@next=\pgfmath@parse@end%
\else%
\expandafter\ifx\csname pgfmath@operation@\pgfmath@token @postfix\endcsname\pgfmath@token%
\ifx\pgfmath@token@next\pgfmath@char@leftbracket%
\let\pgfmath@parse@next=\pgfmath@parse@operand%
\else%
\let\pgfmath@parse@next=\pgfmath@parse@operator%
\fi%
\else%
\let\pgfmath@parse@next=\pgfmath@parse@operand%
\fi%
\fi%
\fi%
\else%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
\pgfmath@token\expandafter\expandafter\expandafter%
{\expandafter\pgfmath@token\pgfmath@token@next}%
\expandafter\pgfmath@operation@process\expandafter{\pgfmath@token}%
\let\pgfmath@parse@next=\pgfmath@parse@@operand%
\fi%
\pgfmath@parse@next%
}
\def\pgfmath@operation@process#1{%
\def\pgfmath@operator{#1}%
\ifx\pgfmath@stack@operation@top\pgfmath@stack@empty%
\else%
\pgfmath@operation@@process%
\fi%
\expandafter\ifx\csname pgfmath@token@specials@#1\endcsname\relax%
\pgfmath@stack@push@operation{#1}%
\fi%
}
\def\pgfmath@operation@@process{%
\ifx\pgfmath@stack@operation@top\pgfmath@stack@empty%
\let\pgfmath@parse@next=\relax%
\else%
\ifnum\csname pgfmath@operation@\pgfmath@operator @precedence\endcsname>%
\csname pgfmath@operation@\pgfmath@stack@operation@top @precedence\endcsname\relax%
\let\pgfmath@parse@next=\relax%
\else%
\let\pgfmath@stack@operation@last=\pgfmath@stack@operation@top%
\expandafter\ifx\csname pgfmath@operator@\pgfmath@stack@operation@top\endcsname\relax%
\pgfmath@function@@@process%
\else%
\pgfmath@operator@@@process%
\fi%
\expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
\expandafter\ifx\csname pgfmath@token@group@\pgfmath@stack@operation@last\pgfmath@operator\endcsname\relax%
\let\pgfmath@parse@next=\pgfmath@operation@@process%
\else%
\let\pgfmath@parse@next=\relax%
\fi%
\fi%
\fi%
\pgfmath@parse@next%
}
\def\pgfmath@operator@@@process{%
\pgfmath@stack@pop@operation\pgfmath@@operator%
\pgfmath@stack@pop@operand\pgfmath@operand@a%
\ifcase\csname pgfmath@operation@\pgfmath@@operator @arity\endcsname\relax%
\or%
\pgfmath@operator@@@@process{\pgfmath@operand@a}%
\or%
\pgfmath@stack@pop@operand\pgfmath@operand@b%
\pgfmath@operator@@@@process{\pgfmath@operand@b}{\pgfmath@operand@a}%
\or%
\pgfmath@stack@pop@operand\pgfmath@operand@b%
\expandafter\pgfmath@operator@@@@process\expandafter%
{\expandafter\pgfmath@operand@b\expandafter}\pgfmath@operand@a%
\else%
\fi%
}
\def\pgfmath@operator@@@@process{%
\csname pgfmath%
\csname pgfmath@operation@\pgfmath@@operator @name\endcsname%
@\endcsname}
\def\pgfmath@function@@@process{%
\ifnum\csname pgfmath@operation@\pgfmath@stack@operation@top @arity\endcsname>0\relax%
\pgfmath@stack@pop@operation\pgfmath@@function%
\pgfmath@stack@pop@operand\pgfmath@@operand%
\ifnum\csname pgfmath@operation@\pgfmath@@function @arity\endcsname>1\relax%
\ifnum\csname pgfmath@operation@\pgfmath@@function @arity\endcsname>9\relax%
\csname pgfmath\pgfmath@@function @\endcsname{\pgfmath@@operand}%
\else%
\expandafter\pgfmath@function@@@@process\pgfmath@@operand%
\fi
\else%
\expandafter\pgfmath@function@@@@process\expandafter{\pgfmath@@operand}%
\fi%
\fi%
}
\def\pgfmath@function@@@@process{\csname pgfmath\pgfmath@@function @\endcsname}
\newtoks\pgfmath@stack@operand
\newtoks\pgfmath@stack@operation
\let\pgfmath@stack@empty=\pgfmath@empty
\def\pgfmath@stack@push#1#2{%
\def\pgfmath@stack@top{#2}%
\expandafter\expandafter\expandafter#1%
\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
{\expandafter\pgfmath@stack@top\expandafter}\the#1}}%
\def\pgfmath@stack@pop#1#2{\expandafter\pgfmath@stack@@pop\the#1\pgfmath@stack@stop{#1}{#2}}
\def\pgfmath@stack@@pop#1#2#3\pgfmath@stack@stop#4#5{\def#5{#1}#4={{#2}#3}\def\pgfmath@stack@top{#2}}
\def\pgfmath@stack@push@operation#1{%
\pgfmath@stack@push\pgfmath@stack@operation{#1}%
\let\pgfmath@stack@operation@top=\pgfmath@stack@top}
\def\pgfmath@stack@pop@operation#1{%
\pgfmath@stack@pop\pgfmath@stack@operation{#1}%
\let\pgfmath@stack@operation@top=\pgfmath@stack@top}
\def\pgfmath@stack@push@operand#1{%
\pgfmath@stack@push\pgfmath@stack@operand{#1}%
\let\pgfmath@stack@operand@top=\pgfmath@stack@top}
\def\pgfmath@stack@pop@operand#1{%
\pgfmath@stack@pop\pgfmath@stack@operand{#1}%
\let\pgfmath@stack@operand@top=\pgfmath@stack@top}
\def\pgfmathdeclareoperator#1#2#3#4#5{%
\ifx\pgfmath@operatorlist\pgfutil@empty
\edef\pgfmath@operatorlist{{\string#1}}%
\else
\edef\pgfmath@operatorlist{\pgfmath@operatorlist,{\string#1}}%
\fi
\pgfmath@namedef{pgfmath@operator@\string#1}{#1}%
\pgfmath@namedef{pgfmath@operation@\string#1@name}{#2}%
\pgfmath@namedef{pgfmath@operation@\string#1@arity}{#3}%
\pgfmath@namedef{pgfmath@operation@\string#1@#4}{#1}%
\pgfmath@namedef{pgfmath@operation@\string#1@precedence}{#5}%
}
\def\pgfmath@operatorlist{}
\pgfmathdeclareoperator{+}{add} {2}{infix}{500}
\pgfmathdeclareoperator{-}{subtract}{2}{infix}{500}
\pgfmathdeclareoperator{*}{multiply}{2}{infix}{700}
\pgfmathdeclareoperator{/}{divide} {2}{infix}{700}
\pgfmathdeclareoperator{^}{pow} {2}{infix}{900}
\pgfmathdeclareoperator{<} {} {1}{prefix} {1}
\pgfmathdeclareoperator{>} {greater} {2}{infix} {250}
\pgfmathdeclareoperator{<} {less} {2}{infix} {250}
\pgfmathdeclareoperator{==}{equal} {2}{infix} {250}
\pgfmathdeclareoperator{>=}{notless} {2}{infix} {250}
\pgfmathdeclareoperator{<=}{notgreater}{2}{infix} {250}
\pgfmathdeclareoperator{&&}{and} {2}{infix} {200}
\pgfmathdeclareoperator{||}{or} {2}{infix} {200}
\pgfmathdeclareoperator{!=}{notequal} {2}{infix} {250}
\pgfmathdeclareoperator{!} {not} {1}{prefix}{975}
\pgfmathdeclareoperator{?} {ifthenelse}{3}{infix} {100}
\pgfmathdeclareoperator{:} {@@collect} {2}{infix}{101}
\pgfmathdeclareoperator{!}{factorial}{1}{postfix}{800}%
\pgfmathdeclareoperator{r}{deg} {1}{postfix}{600}
\pgfmathdeclareoperator{,}{@collect} {2}{infix} {10}
\pgfmathdeclareoperator{[}{@startindex}{2}{prefix} {7}
\pgfmathdeclareoperator{]}{@endindex} {0}{postfix}{6}
\pgfmathdeclareoperator{(}{@startgroup}{1}{prefix} {5}
\pgfmathdeclareoperator{)}{@endgroup} {0}{postfix}{4}
\pgfmathdeclareoperator{\pgfmath@bgroup}{@startarray}{1}{prefix} {3}
\pgfmathdeclareoperator{\pgfmath@egroup}{@endarray} {1}{postfix}{2}%
\pgfmathdeclareoperator{"}{}{1}{prefix}{1}
\pgfmathdeclareoperator{@}{}{0}{postfix}{0}
\def\pgfmath@startgroup@#1{\pgfmath@protected@edef\pgfmathresult{#1}}
\def\pgfmath@endgroup@{}%
\def\pgfmath@startindex@#1#2{%
\expandafter\pgfmatharray@#1{#2}%
\expandafter\pgfmath@bgroup@strip\expandafter{\pgfmathresult}%
\ifx\pgfmath@token@let\bgroup%
\expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmathresult}}%
\fi}
\def\pgfmath@endindex@{}%
\def\pgfmath@startarray@#1{\expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{#1}}}
\def\pgfmath@endarray@#1{\expandafter\def\expandafter\pgfmathresult\expandafter{#1}}%
\def\pgfmath@@collect@#1#2{%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
\pgfmathresult\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
{\expandafter#1\expandafter}\expandafter{#2}}%
}
\def\pgfmath@collect@#1#2{%
\expandafter\def\expandafter\pgfmath@collect@original\expandafter{#1}%
\expandafter\pgfmath@bgroup@strip\expandafter{#1}%
\ifx\pgfmath@token@let\bgroup%
\ifx\pgfmath@collect@original\pgfmath@bgroup@stripped%
\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmath@bgroup@stripped}%
\else%
\expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmath@bgroup@stripped}}%
\fi%
\else%
\expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmath@bgroup@stripped}}%
\fi%
\expandafter\pgfmath@bgroup@strip\expandafter{#2}%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
\pgfmathresult\expandafter\expandafter\expandafter%
{\expandafter\pgfmathresult\expandafter{\pgfmath@bgroup@stripped}}%
}
\def\pgfmath@bgroup@strip#1{%
\def\pgfmath@bgroup@strip@last{#1}%
\pgfmath@bgroup@@strip{#1}\pgfmath@\pgfmath@@\pgfmath@@@}
\def\pgfmath@bgroup@strip@#1{%
\def\pgfmath@bgroup@strip@last{#1}%
\pgfmath@bgroup@@strip#1\pgfmath@\pgfmath@@\pgfmath@@@}
\def\pgfmath@bgroup@pgfmath@{\pgfmath@}
\def\pgfmath@bgroup@@strip{%
\futurelet\pgfmath@token@let\pgfmath@bgroup@@@strip}
\def\pgfmath@bgroup@@@strip#1#2#3\pgfmath@@@{%
\ifx\pgfmath@token@let\bgroup
\def\pgfmath@bgroup@test{#2}%
\ifx\pgfmath@bgroup@test\pgfmath@bgroup@pgfmath@
\def\pgfmath@next{\pgfmath@bgroup@strip@{#1}}%
\else
\let\pgfmath@bgroup@stripped=\pgfmath@bgroup@strip@last
\let\pgfmath@next=\relax
\fi
\else
\pgfmath@bgroup@@@@strip#1#2#3%
\let\pgfmath@next=\relax
\fi
\pgfmath@next}
\def\pgfmath@bgroup@@@@strip#1\pgfmath@\pgfmath@@{%
\def\pgfmath@bgroup@stripped{#1}}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathparser.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathutil.code.tex ====
\def\pgfmathincluded{}
\def\pgfmath@grabv#1#2#3#4#5#6#7\pgfmath@grabv{#2#3#4#5\ifx#6!!\fi}
\def\pgfmath@ifskip@extract#1{\expandafter\pgfmath@grabv\meaning#1!!!!!!\pgfmath@grabv}
\def\pgfmath@iftoks@extract#1{\expandafter\pgfmath@grabv\meaning#1!!!!!!\pgfmath@grabv}
\def\pgfmath@grabvi#1#2#3#4#5#6#7#8\pgfmath@grabvi{#2#3#4#5#6\ifx#7!!\fi}
\def\pgfmath@ifdimen@extract#1{\expandafter\pgfmath@grabvi\meaning#1!!!!!!\pgfmath@grabvi}
\def\pgfmath@ifcount@extract#1{\expandafter\pgfmath@grabvi\meaning#1!!!!!!\pgfmath@grabvi}
\def\pgfmath@grabvii#1#2#3#4#5#6#7#8#9\pgfmath@grabvii{#2#3#4#5#6#7\ifx#8!!\fi}
\def\pgfmath@ifmuskip@extract#1{\expandafter\pgfmath@grabvii\meaning#1!!!!!!\pgfmath@grabvii}
\def\pgfmath@ifregister@unguarded#1#2{%
\expandafter\ifx\csname\csname pgfmath@if#1@extract\endcsname{#2}\expandafter\endcsname\csname #1\endcsname
\expandafter\pgfutil@firstoftwo
\else
\expandafter\pgfutil@secondoftwo
\fi}
\def\pgfmath@ifregister#1#2{%
\pgfutil@IfUndefined{pgfmath@if#1@extract}%
{\errmessage{Package PGF Math Error: Cannot test for #1 register}}%
{\pgfutil@IfUndefined{\csname pgfmath@if#1@extract\endcsname{#2}}%
{\pgfutil@secondoftwo}}%
{\pgfmath@ifregister@unguarded{#1}{#2}}}
\def\pgfmath@ensureregister#1#2{%
\pgfmath@ifregister{#1}{#2}%
{}%
{\csname new#1\endcsname#2}%
}
\pgfmath@ensureregister{dimen}{\pgf@x}
\pgfmath@ensureregister{dimen}{\pgf@xa}
\pgfmath@ensureregister{dimen}{\pgf@xb}
\pgfmath@ensureregister{dimen}{\pgf@xc}
\pgfmath@ensureregister{dimen}{\pgf@y}
\pgfmath@ensureregister{dimen}{\pgf@ya}
\pgfmath@ensureregister{dimen}{\pgf@yb}
\pgfmath@ensureregister{dimen}{\pgf@yc}
\pgfmath@ensureregister{dimen}{\pgfutil@tempdima}
\pgfmath@ensureregister{dimen}{\pgfutil@tempdimb}
\pgfmath@ensureregister{count}{\c@pgf@counta}
\pgfmath@ensureregister{count}{\c@pgf@countb}
\pgfmath@ensureregister{count}{\c@pgf@countc}
\pgfmath@ensureregister{count}{\c@pgf@countd}
\pgfmath@ensureregister{count}{\pgfutil@tempcnta}
\pgfmath@ensureregister{count}{\pgfutil@tempcntb}
\let\pgfmath@x\pgf@x
\let\pgfmath@xa\pgf@xa
\let\pgfmath@xb\pgf@xb
\let\pgfmath@xc\pgf@xc
\let\pgfmath@y\pgf@y
\let\pgfmath@ya\pgf@ya
\let\pgfmath@yb\pgf@yb
\let\pgfmath@yc\pgf@yc
\let\pgfmath@tempdima\pgfutil@tempdima
\let\pgfmath@tempdimb\pgfutil@tempdimb
\let\c@pgfmath@counta\c@pgf@counta
\let\c@pgfmath@countb\c@pgf@countb
\let\c@pgfmath@countc\c@pgf@countc
\let\c@pgfmath@countd\c@pgf@countd
\let\pgfmath@tempcnta\pgfutil@tempcnta
\let\pgfmath@tempcntb\pgfutil@tempcntb
\ifx\pgfutil@ifnextchar\pgfmath@undefined%
\long\def\pgfmath@ifnextchar#1#2#3{%
\let\pgfmath@reserved@d#1%
\def\pgfmath@reserved@a{#2}%
\def\pgfmath@reserved@b{#3}%
\futurelet\pgfmath@let@token\pgfmath@ifnch}
\def\pgfmath@ifnch{%
\ifx\pgfmath@let@token\pgfmath@sptoken%
\let\pgfmath@reserved@c\pgfmath@xifnch%
\else%
\ifx\pgfmath@let@token\pgfmath@reserved@d%
\let\pgfmath@reserved@c\pgfmath@reserved@a%
\else%
\let\pgfmath@reserved@c\pgfmath@reserved@b%
\fi%
\fi%
\pgfmath@reserved@c}
{%
\def\:{\global\let\pgfmath@sptoken= } \:
\def\:{\pgfmath@xifnch} \expandafter\gdef\: {\futurelet\pgfmath@let@token\pgfmath@ifnch}
}%
\else%
\let\pgfmath@ifnextchar\pgfutil@ifnextchar%
{%
\def\:{\global\let\pgfmath@sptoken= } \:
}%
\fi%
\ifx\pgfutil@ifundefined\pgfmath@undefined%
\long\def\pgfmath@ifundefined#1{%
\expandafter\ifx\csname#1\endcsname\relax%
\expandafter\pgfmath@firstoftwo%
\else%
\expandafter\pgfmath@secondoftwo%
\fi}%
\else%
\let\pgfmath@ifundefined\pgfutil@ifundefined%
\fi%
\ifx\pgfutil@selectfont\pgfmath@undefined%
\ifx\selectfont\pgfmath@undefined%
\let\pgfmath@selectfont\rm%
\else%
\let\pgfmath@selectfont\selectfont%
\fi%
\else%
\let\pgfmath@selectfont\pgfutil@selectfont%
\fi%
\newif\ifpgfmath@in@
\def\pgfmath@in@#1#2{%
\def\pgfmath@in@@##1#1##2##3\pgfmath@in@@{%
\ifx\pgfmath@in@##2\pgfmath@in@false\else\pgfmath@in@true\fi}%
\pgfmath@in@@#2#1\pgfmath@in@\pgfmath@in@@}
\ifx\pgf@sys@tonumber\pgfmath@undefined%
{\catcode`\p=12\catcode`\t=12\gdef\Pgf@geT#1pt{#1}}
\def\pgfmath@tonumber#1{\expandafter\Pgf@geT\the#1}
\else%
\let\pgfmath@tonumber\pgf@sys@tonumber%
\fi%
\ifx\PackageWarning\pgfmath@undefined
\def\pgfmath@PackageWarning#1#2{\immediate\write-1{Package #1: Warning! #2.}}%
\else%
\let\pgfmath@PackageWarning\PackageWarning%
\fi%
\ifx\PackageError\pgfmath@undefined
\def\pgfmath@PackageError#1#2#3{\errmessage{Package #1 Error: #2.}}%
\else%
\let\pgfmath@PackageError\PackageError%
\fi%
\def\pgfmath@error#1#2{%
\pgfmath@PackageError{PGF Math}{%
#1%
\pgfutil@ifundefined{pgfmath@expression}{}{ (in '\pgfmath@expression')}%
}{#2}%
}
\def\pgfmath@warning#1{%
\pgfmath@PackageWarning{PGF Math}{%
#1%
\pgfutil@ifundefined{pgfmath@expression}{}{ (in '\pgfmath@expression')}%
}%
}
{\catcode`\p=12\catcode`\t=12\gdef\PgfmaTh@PT{pt}}
\edef\pgfmath@pt{\PgfmaTh@PT}%
\def\pgfmath@empty{}
\def\pgfmath@firstoftwo#1#2{#1}
\def\pgfmath@secondoftwo#1#2{#2}
\def\pgfmath@gobbletilpgfmath@#1\pgfmath@{}
\def\pgfmath@gobbleone#1{}%
\def\pgfmath@namedef#1{\expandafter\def\csname#1\endcsname}
\def\pgfmath@nameedef#1{\expandafter\edef\csname#1\endcsname}
\newif\ifpgfmathcontinueloop
\def\pgfmathloop#1\repeatpgfmathloop{%
\def\pgfmathcounter{1}%
\def\pgfmath@iterate{%
#1\relax%
{%
\c@pgfmath@counta\pgfmathcounter%
\advance\c@pgfmath@counta1\relax%
\xdef\pgfmathloop@temp{\the\c@pgfmath@counta}%
}%
\edef\pgfmathcounter{\pgfmathloop@temp}%
\expandafter\pgfmath@iterate\fi}%
\pgfmath@iterate\let\pgfmath@iterate\relax}
\let\repeatpgfmathloop\fi
\def\pgfmathbreakloop{\let\pgfmath@iterate\relax}%
\def\pgfmath@returnone#1\endgroup{%
\pgfmath@x#1%
\edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
\expandafter\endgroup\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmath@temp}%
}
\let\pgfmathreturn=\pgfmath@returnone
\def\pgfmath@smuggleone#1\endgroup{%
\expandafter\endgroup\expandafter\def\expandafter#1\expandafter{#1}}
\let\pgfmathsmuggle=\pgfmath@smuggleone
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathutil.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduledecorations.code.tex ====
\def\pgfgetpath#1{\pgfsyssoftpath@getcurrentpath{#1}}%
\def\pgfsetpath#1{\pgfsyssoftpath@setcurrentpath{#1}}%
\newdimen\pgfdecoratedcompleteddistance
\newdimen\pgfdecoratedremainingdistance
\newdimen\pgfdecoratedinputsegmentcompleteddistance
\newdimen\pgfdecoratedinputsegmentremainingdistance
\newdimen\pgf@decorate@distancetomove
\newcount\pgf@decorate@repeatstate
\newdimen\pgfdecorationsegmentamplitude
\newdimen\pgfdecorationsegmentlength
\pgfdecorationsegmentamplitude2.5pt
\pgfdecorationsegmentlength10pt
\def\pgfdecorationsegmentangle{45}%
\def\pgfdecorationsegmentaspect{0.5}%
\def\pgfmetadecorationsegmentamplitude{2.5pt}%
\def\pgfmetadecorationsegmentlength{1cm}%
\pgfkeys{%
/pgf/decoration/.code={\pgfkeys{/pgf/decoration/.cd,#1}},
/pgf/decoration/.cd,
amplitude/.code={\pgfmathsetlength\pgfdecorationsegmentamplitude{#1}},
meta-amplitude/.store in=\pgfmetadecorationsegmentamplitude,
segment length/.code={\pgfmathsetlength\pgfdecorationsegmentlength{#1}},
meta-segment length/.store in=\pgfmetadecorationsegmentlength,
angle/.code={\pgfmathparse{#1}\let\pgfdecorationsegmentangle\pgfmathresult},
aspect/.code={\pgfmathparse{#1}\let\pgfdecorationsegmentaspect\pgfmathresult},
start radius/.initial=2.5pt,
end radius/.initial=2.5pt,
radius/.style={start radius={#1},end radius={#1}},
path has corners/.is if=pgfdecoratepathhascorners,
reverse path/.is if=pgf@decorate@inputsegmentobjects@reverse,
}%
\newif\ifpgfdecoratepathhascorners
\newif\ifpgf@decorate@inputsegmentobjects@reverse
\long\def\pgfdeclaredecoration#1#2#3{%
\let\pgf@mod@dec@next=\pgf@mod@dec@firstofone%
\pgfifmetadecoration{#1}{%
\pgferror{You cannot declare a decoration of the same
name as a meta-decoration}%
\let\pgf@mod@dec@next=\pgfutil@gobble%
}{}%
\pgf@mod@dec@next
{%
\def\pgf@decorate@name{#1}%
\pgfutil@namedef{pgf@decorate@@#1@initial}{#2}%
\let\pgf@orig@state\state%
\let\state\pgf@decorate@state
#3%
\let\state\pgf@orig@state%
}%
}%
\def\pgf@decorate@state#1{\pgfutil@ifnextchar[{\pgf@decorate@@start#1}{\pgf@decorate@@start#1[]}}%
\def\pgf@decorate@@start#1[#2]#3{%
\pgfutil@namedef{pgf@decorate@@\pgf@decorate@name @#1@options}{#2}%
\pgfutil@namedef{pgf@decorate@@\pgf@decorate@name @#1@code}{#3}%
}%
\long\def\pgf@mod@dec@firstofone#1{#1}%
\def\pgfifdecoration#1#2#3{\pgfutil@ifundefined{pgf@decorate@@#1@initial}{#3}{#2}}%
\long\def\pgfdeclaremetadecoration#1#2#3{%
\let\pgf@mod@dec@next=\pgf@mod@dec@firstofone%
\pgfifdecoration{#1}{%
\pgferror{You cannot declare a meta-decoration of the
same name as a decoration}%
\let\pgf@mod@dec@next=\pgfutil@gobble%
}{}%
\pgf@mod@dec@next{%
\def\pgf@metadecoration@name{#1}%
\pgfutil@namedef{pgf@metadecoration@@#1@initial}{#2}%
\let\pgf@orig@state\state%
\let\state\pgf@metadecoration@state
#3%
\let\state\pgf@orig@state%
}%
}%
\def\pgf@metadecoration@state#1{\pgfutil@ifnextchar[{\pgf@metadecoration@@state#1}{\pgf@metadecoration@@state#1[]}}%
\def\pgf@metadecoration@@state#1[#2]#3{%
\pgfutil@namedef{pgf@metadecoration@@\pgf@metadecoration@name @#1@options}{#2}%
\pgfutil@namedef{pgf@metadecoration@@\pgf@metadecoration@name @#1@code}{#3}%
}%
\def\pgfifmetadecoration#1#2#3{\pgfutil@ifundefined{pgf@metadecoration@@#1@initial}{#3}{#2}}%
\let\pgfdecoratebeforecode\pgfutil@empty
\let\pgfdecorateaftercode\pgfutil@empty
\long\def\pgfdecoratepath#1#2{%
\pgfdecoration{{#1}{\pgfdecoratedpathlength}{\pgfdecoratebeforecode}{\pgfdecorateaftercode}}%
#2%
\endpgfdecoration}%
\def\pgfdecoratecurrentpath#1{%
\pgfgetpath\pgf@decorate@currentpath%
\pgfsetpath\pgfutil@empty%
\pgfdecoration{{#1}{\pgfdecoratedpathlength}{\pgfdecoratebeforecode}{\pgfdecorateaftercode}}%
\pgfsetpath\pgf@decorate@currentpath%
\endpgfdecoration}%
\def\pgfdecoration#1{%
\begingroup%
\def\pgf@decorate@decorationlist{#1}%
\pgf@decoration@env%
}%
\def\endpgfdecoration{%
\pgf@decoration@endenv%
\ifx\pgfdecoratedpath\pgfutil@empty%
\else%
\pgf@decorate@for\pgf@temp:=\pgf@decorate@decorationlist\do{%
\ifx\pgf@temp\pgfutil@empty%
\else%
\expandafter\pgf@decorate@invoke\expandafter{\pgf@temp}%
\fi%
}%
\fi%
\pgfgetpath\pgfdecorationpath%
\global\let\pgf@decorate@decorationpathtemp\pgfdecorationpath%
\global\let\pgf@decorate@decoratedpathtemp\pgfdecoratedpath%
\global\let\pgf@decorate@existingpathtemp\pgfdecorateexistingpath%
\global\let\pgfpoint@decorated@pathlasttemp\pgfpoint@decorated@pathlast%
\endgroup%
\pgfutil@ifnextchar\@checkend{\aftergroup\pgf@decorate@installmacrosatend}%
{\pgf@decorate@installmacrosatend}%
}%
\def\pgfmetadecoration#1{%
\begingroup%
\let\decoration\pgf@metadecoration@decoration%
\let\beforedecoration\pgf@metadecoration@beforedecoration%
\let\afterdecoration\pgf@metadecoration@afterdecoration%
\def\pgf@metadecoration@name{#1}%
\pgf@decoration@env%
}%
\def\endpgfmetadecoration{%
\pgf@decoration@endenv%
\ifx\pgfdecoratedpath\pgfutil@empty%
\else%
\let\pgfmetadecoratedpathlength\pgf@decorate@totalpathlength%
\def\pgfmetadecoratedinputsegmentremainingdistance{\pgfdecoratedremainingdistance}%
\def\pgfmetadecoratedinputsegmentcompleteddistance{\pgfdecoratedcompleteddistance}%
\expandafter\let\expandafter\pgf@metadecoration@current@state%
\csname pgf@metadecoration@@\pgf@metadecoration@name @initial\endcsname%
\pgf@metadecoration@run%
\let\pgf@decorate@tempname\pgfutil@empty%
\let\pgf@decorate@tempbefore\pgfutil@empty%
\let\pgf@decorate@tempafter\pgfutil@empty%
\csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @code\endcsname%
\ifx\pgf@decorate@tempname\pgfutil@empty%
\def\pgf@decorate@tempname{moveto}
\fi%
\pgf@decorate@invoke{%
{\pgf@decorate@tempname}{\pgfdecoratedremainingdistance}%
{\pgf@decorate@tempbefore}{\pgf@decorate@tempafter}%
}%
\fi%
\pgfgetpath\pgfdecorationpath%
\global\let\pgf@decorate@decorationpathtemp\pgfdecorationpath%
\global\let\pgf@decorate@decoratedpathtemp\pgfdecoratedpath%
\global\let\pgf@decorate@existingpathtemp\pgfdecorateexistingpath%
\global\let\pgfpoint@decorated@pathlasttemp\pgfpoint@decorated@pathlast%
\endgroup%
\pgfutil@ifnextchar\@checkend{\aftergroup\pgf@decorate@installmacrosatend}%
{\pgf@decorate@installmacrosatend}%
}%
\def\pgf@decoration@env{%
\pgfgetpath\pgfdecorateexistingpath%
\pgfsetpath\pgfutil@empty%
\let\pgfdecorationpath\pgfutil@empty%
\let\pgfdecoratedpath\pgfutil@empty%
\let\pgfpoint@decorated@pathlast\pgfpointorigin%
\edef\pgfpoint@decorate@existingpathlast{\pgf@x\the\pgf@path@lastx\pgf@y\the\pgf@path@lasty}%
\bgroup%
}%
\def\pgf@decorate@path@check@moveto#1{%
\expandafter\pgf@decorate@path@@check@moveto#1\pgf@decorate@stop\pgf@decorate@@stop}%
\def\pgf@decorate@token@stop{\pgf@decorate@stop}%
\def\pgf@decorate@path@@check@moveto#1#2#3#4\pgf@decorate@@stop#5#6{%
\def\pgf@decorate@temp{#4}%
\pgf@x=#2\relax%
\pgf@y=#3\relax%
\ifx\pgf@decorate@temp\pgf@decorate@token@stop%
#5%
\else%
#6%
\fi%
}%
\def\pgf@decoration@endenv{%
\egroup%
\pgftransformreset%
\pgfgetpath\pgfdecoratedpath%
\pgfsetpath\pgfdecorateexistingpath%
\ifx\pgfdecoratedpath\pgfutil@empty%
\pgferror{I cannot decorate an empty path}%
\else%
\pgf@decorate@path@check@moveto\pgfdecoratedpath{%
\advance\pgf@x by0.0001pt\relax%
\edef\pgfdecoratedpath{%
\expandafter\noexpand\pgfdecoratedpath%
\noexpand\pgfsyssoftpath@linetotoken{\the\pgf@x}{\the\pgf@y}%
}%
}%
{}%
\pgfprocessround{\pgfdecoratedpath}{\pgfdecoratedpath}%
\pgf@decorate@parsesoftpath{\pgfdecoratedpath}{\pgf@decorate@inputsegmentobjects}%
\pgfkeys{/pgf/every decoration/.try}%
\ifpgf@decorate@inputsegmentobjects@reverse%
\pgf@decorate@inputsegmentobjects@reverse{\pgf@decorate@inputsegmentobjects}{\pgf@decorate@inputsegmentobjects}%
\fi%
\let\pgf@decorated@remainingdistance\pgf@decorate@totalpathlength%
\let\pgfpoint@decorated@totalpathfirst\pgfpoint@decorated@firstparsed%
\let\pgfpoint@decorated@totalpathlast\pgfpoint@decorate@lastnonmovetoparsed%
\let\pgfpoint@decorated@pathfirst\pgfpoint@decorated@totalpathfirst
\let\pgfpoint@decorated@pathlast\pgfpoint@decorated@totalpathlast%
\let\pgf@decorate@currentinputsegmentobjects\pgf@decorate@inputsegmentobjects%
\let\pgf@decorate@transformtoinputsegment\pgfutil@empty%
\pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
\pgf@decorate@processnextinputsegmentobject%
\pgf@decorate@distancetomove0pt\relax%
\fi%
}%
\def\pgf@decorate@installmacrosatend{%
\let\pgfdecorationpath\pgf@decorate@decorationpathtemp%
\let\pgfdecoratedpath\pgf@decorate@decoratedpathtemp%
\let\pgfdecorateexistingpath\pgf@decorate@existingpathtemp%
\let\pgfpoint@decorated@pathlast\pgfpoint@decorated@pathlasttemp%
}%
\let\pgfdecorationpath\pgfutil@empty
\let\pgfdecoratedpath\pgfutil@empty
\let\pgfdecorateexisitingpath\pgfutil@empty
\let\pgfpoint@decorated@pathlast\pgfpointorigin
\def\pgf@decorate@for#1:=#2\do#3{%
\def\pgf@decorate@for@var{#1}%
\def\pgf@decorate@for@action{#3}%
\expandafter\pgf@decorate@@for#2,\pgf@stop,}%
\def\pgf@decorate@@for#1,{%
\ifx#1\pgf@stop%
\expandafter\let\pgf@decorate@for@var\pgfutil@empty%
\else%
\expandafter\def\pgf@decorate@for@var{#1}%
\pgf@decorate@for@action%
\expandafter\pgf@decorate@@for%
\fi%
}%
\def\pgf@decorate@invoke#1{%
\pgf@decorate@@invoke#1\pgf@decorate@invoke\pgf@decorate@invoke\pgf@decorate@invoke\pgf@stop}%
\def\pgf@decorate@@invoke#1#2#3#4#5\pgf@stop{%
\pgfutil@ifundefined{pgf@decorate@@#1@initial}%
{%
\pgferror{Unknown decoration `#1'}%
}%
{%
\def\pgf@decorate@name{#1}%
\ifx\pgf@decorate@invoke#3%
\let\pgf@decorate@beforecode\pgfutil@empty%
\else%
\def\pgf@decorate@beforecode{#3}%
\fi%
\ifx\pgf@decorate@invoke#4%
\let\pgf@decorate@aftercode\pgfutil@empty%
\else%
\def\pgf@decorate@aftercode{#4}%
\fi%
\pgfdecoratedremainingdistance\pgf@decorated@remainingdistance\relax%
\let\pgfdecoratedpathlength\pgf@decorate@totalpathlength%
\pgfmathsetlength\pgf@xa{#2}%
\ifdim\pgf@xa>\pgf@decorated@remainingdistance\relax%
\pgf@xa\pgf@decorated@remainingdistance\relax%
\fi%
\edef\pgf@decorate@currentpathlength{\the\pgf@xa}%
\pgf@xa-\pgf@decorate@currentpathlength\relax%
\advance\pgf@xa\pgf@decorated@remainingdistance\relax%
\edef\pgf@decorated@remainingdistance{\the\pgf@xa}%
\let\pgfdecoratedpathlength\pgf@decorate@currentpathlength%
\pgfdecoratedremainingdistance\pgfdecoratedpathlength\relax%
\pgfdecoratedcompleteddistance0pt\relax%
\pgf@decorate@beforecode%
\expandafter\let\expandafter\pgf@decorate@current@state%
\csname pgf@decorate@@\pgf@decorate@name @initial\endcsname%
\pgf@decorate@run%
\ifdim\pgf@decorated@remainingdistance<1pt\relax%
\let\pgfpoint@decorated@pathlast\pgfpoint@decorated@totalpathlast%
\else%
{%
\pgf@decorate@movealonginputsegment{\the\pgfdecoratedremainingdistance}%
\pgf@decorate@transformtoinputsegment%
\pgfpointorigin%
\pgf@pos@transform@glob%
\global\pgf@x\pgf@x%
\global\pgf@y\pgf@y%
}%
\edef\pgfpoint@decorated@pathlast{\pgf@x\the\pgf@x\pgf@y\the\pgf@y}%
\fi%
{%
\pgftransformreset%
\pgf@decorate@transformtoinputsegment%
\pgf@decorate@additionaltransform%
\csname pgf@decorate@@\pgf@decorate@name @final@code\endcsname%
}%
\pgf@decorate@movealonginputsegment{\the\pgfdecoratedremainingdistance}%
\pgf@decorate@aftercode%
\let\pgf@decorate@additionaltransform\pgfutil@empty%
\let\pgf@decorate@inputsegmentobjects\pgf@decorate@inputsegmentobjects@aftersplit%
\let\pgfpoint@decorated@pathfirst\pgfpoint@decorated@pathlast%
}%
}%
\let\pgf@decorate@transformtoinputsegment\pgfutil@empty%
\let\pgf@decorate@additionaltransform\pgfutil@empty%
\def\pgfpointdecoratedpathfirst{%
{%
\pgftransforminvert%
\pgfpoint@decorated@pathfirst%
\pgf@pos@transform@glob%
\global\pgf@x\pgf@x%
\global\pgf@y\pgf@y%
}%
}%
\def\pgfpointdecoratedpathlast{%
{%
\pgftransforminvert%
\pgfpoint@decorated@pathlast%
\pgf@pos@transform@glob%
\global\pgf@x\pgf@x%
\global\pgf@y\pgf@y%
}%
}%
\def\pgfpointdecoratedinputsegmentfirst{%
{%
\pgftransforminvert%
\pgf@decorate@inputsegment@first%
\pgf@pos@transform@glob%
\global\pgf@x\pgf@x%
\global\pgf@y\pgf@y%
}%
}%
\def\pgfpointdecoratedinputsegmentlast{%
{%
\pgftransforminvert%
\pgf@decorate@inputsegment@last%
\pgf@pos@transform@glob%
\global\pgf@x\pgf@x%
\global\pgf@y\pgf@y%
}%
}%
\def\pgf@final@text{final}%
\def\pgf@decorate@run{%
\let\pgf@decorate@next\pgf@decorate@do@state%
\ifx\pgf@decorate@current@state\pgf@final@text%
\let\pgf@decorate@next\relax%
\fi%
\pgf@decorate@next%
}%
\def\pgf@decorate@do@state{%
\let\pgf@decorate@next\relax%
\let\pgf@decorate@next@state\pgf@decorate@current@state%
\let\pgf@decorate@persistent@pre=\relax%
\let\pgf@decorate@persistent@post=\relax%
\expandafter\expandafter\expandafter\pgf@decorate@setter
\expandafter\expandafter\expandafter{\csname pgf@decorate@@\pgf@decorate@name @\pgf@decorate@current@state @options\endcsname}%
\ifx\pgf@decorate@next\relax%
\let\pgf@decorate@next\pgf@decorate@do@code%
\fi%
\pgf@decorate@next%
}%
\def\pgf@decorate@setter{\pgfqkeys{/pgf/decoration automaton}}%
\pgf@decorate@repeatstate-1\relax
\def\pgf@decorate@do@code{%
\pgf@decorate@persistent@pre%
{%
\pgftransformreset%
\pgf@decorate@transformtoinputsegment%
\pgf@decorate@additionaltransform%
\csname pgf@decorate@@\pgf@decorate@name @\pgf@decorate@current@state @code\endcsname%
}%
\pgf@decorate@persistent@post%
\pgf@decorate@movealongpath{\pgf@decorate@width}%
\ifnum\pgf@decorate@repeatstate>0\relax%
\advance\pgf@decorate@repeatstate-1\relax%
\else%
\pgf@decorate@repeatstate-1\relax%
\let\pgf@decorate@current@state\pgf@decorate@next@state%
\fi%
\pgf@decorate@run%
}%
\pgfkeys{
/pgf/decoration automaton/width/.code=\def\pgf@decorate@width{#1}\pgf@decorate@switch@if#1 to final\pgf@stop,%
/pgf/decoration automaton/switch if less than/.code=\pgf@decorate@switch@if#1\pgf@stop,%
/pgf/decoration automaton/switch if input segment less than/.code=\pgf@decorate@switch@ifinputsegment#1\pgf@stop,%
/pgf/decoration automaton/next state/.store in=\pgf@decorate@next@state,%
/pgf/decoration automaton/persistent precomputation/.store in=\pgf@decorate@persistent@pre,%
/pgf/decoration automaton/persistent postcomputation/.store in=\pgf@decorate@persistent@post,%
/pgf/decoration automaton/repeat state/.code={%
\ifnum\pgf@decorate@repeatstate=-1\relax%
\pgfmathsetcount\pgf@decorate@repeatstate{#1}%
\fi%
},%
/pgf/decoration automaton/if input segment is closepath/.code={%
\ifpgf@decorate@is@closepath@%
\pgfkeysalso{#1}%
\fi%
},
/pgf/decoration automaton/auto end on length/.code=\pgf@decorate@auto@end{#1},
/pgf/decoration automaton/auto corner on length/.code=\pgf@decorate@auto@corner{#1},
}%
\def\pgf@decorate@auto@end#1{%
\ifx\pgf@decorate@next\relax%
\pgfmathsetlength\pgf@x{#1}%
\ifpgf@decorate@is@closepath@%
\ifdim\pgfdecoratedremainingdistance>\pgf@x%
\ifdim\pgfdecoratedinputsegmentremainingdistance>\pgf@x%
\else%
\pgfpathclose%
\pgf@decorate@movealongpath{\pgfdecoratedinputsegmentremainingdistance}%
\pgf@decorate@repeatstate-1\relax%
\let\pgf@decorate@next\pgf@decorate@run%
\fi%
\else%
\pgfpathclose%
\def\pgf@decorate@current@state{final}%
\def\pgf@decorate@width{\pgfdecoratedremainingdistance}
\pgf@decorate@repeatstate-1\relax%
\let\pgf@decorate@next\pgf@decorate@run%
\fi%
\else%
\ifdim\pgfdecoratedremainingdistance>\pgf@x%
\else%
{%
\pgftransformreset%
\pgf@decorate@transformtoinputsegment%
\pgf@decorate@additionaltransform%
\pgfpathlineto{\pgfpoint{\pgfdecoratedremainingdistance}{0pt}}
}%
\def\pgf@decorate@current@state{final}%
\def\pgf@decorate@width{\pgfdecoratedremainingdistance}
\pgf@decorate@repeatstate-1\relax%
\let\pgf@decorate@next\pgf@decorate@run%
\fi%
\fi%
\fi%
}%
\def\pgf@decorate@auto@corner#1{%
\ifpgfdecoratepathhascorners%
\ifx\pgf@decorate@next\relax%
\pgfmathsetlength\pgf@x{#1}%
\ifdim\pgfdecoratedinputsegmentremainingdistance>\pgf@x%
\else%
{%
\pgftransformreset%
\pgf@decorate@transformtoinputsegment%
\pgf@decorate@additionaltransform%
\pgfpathlineto{\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
}%
\pgf@decorate@movealongpath{\pgfdecoratedinputsegmentremainingdistance}%
\pgf@decorate@repeatstate-1\relax%
\let\pgf@decorate@next\pgf@decorate@run%
\fi%
\fi%
\fi%
}%
\def\pgf@decorate@switch@if#1to #2\pgf@stop{%
\ifx\pgf@decorate@next\relax%
\ifdim\pgfdecoratedremainingdistance=0pt\relax%
\def\pgf@decorate@current@state{#2}%
\pgf@decorate@repeatstate-1\relax%
\let\pgf@decorate@next\pgf@decorate@run%
\else%
\pgfmathsetlength\pgf@x{#1}%
\ifdim\pgfdecoratedremainingdistance<\pgf@x%
\def\pgf@decorate@current@state{#2}%
\pgf@decorate@repeatstate-1\relax%
\let\pgf@decorate@next\pgf@decorate@run%
\fi%
\fi%
\fi%
}%
\def\pgf@decorate@switch@ifinputsegment#1to #2\pgf@stop{%
\ifx\pgf@decorate@next\relax%
\pgfmathsetlength\pgf@x{#1}%
\ifdim\pgfdecoratedinputsegmentremainingdistance<\pgf@x%
\def\pgf@decorate@current@state{#2}%
\pgf@decorate@repeatstate-1\relax%
\let\pgf@decorate@next\pgf@decorate@run%
\fi%
\fi%
}%
\def\pgfsetdecorationsegmenttransformation#1{\def\pgf@decorate@additionaltransform{#1}}%
\let\pgf@decorate@additionaltransform\pgfutil@empty%
\def\pgf@metadecoration@decoration#1{%
\edef\pgf@decorate@tempname{#1}%
}%
\def\pgf@metadecoration@beforedecoration#1{%
\def\pgf@decorate@tempbefore{#1}%
}%
\def\pgf@metadecoration@afterdecoration#1{%
\def\pgf@decorate@tempafter{#1}%
}%
\def\pgf@final@text{final}%
\def\pgf@metadecoration@run{%
\let\pgf@metadecoration@next\pgf@metadecoration@do@state%
\ifx\pgf@metadecoration@current@state\pgf@final@text%
\let\pgf@metadecoration@next\relax%
\fi%
\pgf@metadecoration@next%
}%
\def\pgf@metadecoration@do@state{%
\let\pgf@metadecoration@next\relax%
\let\pgf@metadecoration@next@state\pgf@metadecoration@current@state%
\let\pgfmetadecoratedremainingdistance\pgf@decorated@remainingdistance%
\pgf@x-\pgfmetadecoratedremainingdistance\relax%
\advance\pgf@x\pgf@decorate@totalpathlength\relax%
\edef\pgfmetadecoratedcompleteddistance{\the\pgf@x}%
\expandafter\expandafter\expandafter\pgf@metadecoration@setter
\expandafter\expandafter\expandafter{\csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @options\endcsname}%
\ifx\pgf@metadecoration@next\relax%
\let\pgf@metadecoration@next\pgf@metadecoration@do@code%
\fi%
\pgf@metadecoration@next%
}%
\def\pgf@metadecoration@do@code{%
\let\pgf@decorate@tempname\pgfutil@empty%
\let\pgf@decorate@tempbefore\pgfutil@empty%
\let\pgf@decorate@tempafter\pgfutil@empty%
\let\pgfpointmetadecoratedpathfirst\pgfpointdecoratedpathfirst%
\let\pgfpointmetadecoratedpathlast\pgfpointdecoratedpathlast%
\csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @code\endcsname%
\ifx\pgf@decorate@tempname\pgfutil@empty%
\def\pgf@decorate@tempname{moveto}
\fi%
\pgf@decorate@invoke{%
{\pgf@decorate@tempname}{\pgf@metadecoration@width}%
{\pgf@decorate@tempbefore}{\pgf@decorate@tempafter}%
}%
\let\pgf@metadecoration@current@state\pgf@metadecoration@next@state%
\pgf@metadecoration@run%
}%
\def\pgf@metadecoration@setter{\pgfqkeys{/pgf/meta-decoration automaton}}%
\pgfkeys{
/pgf/meta-decoration automaton/width/.code=\def\pgf@metadecoration@width{#1}\pgf@metadecoration@switch@if#1 to final\pgf@stop,%
/pgf/meta-decoration automaton/switch if less than/.code=\pgf@metadecoration@switch@if#1\pgf@stop,%
/pgf/meta-decoration automaton/switch if input segment less than/.code=\pgf@metadecoration@switch@ifinputsegment#1\pgf@stop,%
/pgf/meta-decoration automaton/next state/.store in=\pgf@metadecoration@next@state,%
}%
\def\pgf@metadecoration@switch@if#1to #2\pgf@stop{%
\ifx\pgf@metadecoration@next\relax%
\pgfmathsetlength\pgf@x{#1}%
\ifdim\pgf@decorated@remainingdistance<\pgf@x%
\def\pgf@metadecoration@current@state{#2}%
\let\pgf@metadecoration@next\pgf@metadecoration@run%
\fi%
\fi%
}%
\def\pgf@metadecoration@switch@ifinputsegment#1to #2\pgf@stop{%
\ifx\pgf@metadecoration@next\relax%
\pgfmathsetlength\pgf@x{#1}%
\ifdim\pgfdecoratedinputsegmentremainingdistance<\pgf@x%
\def\pgf@metadecoration@current@state{#2}%
\let\pgf@metadecoration@next\pgf@metadecoration@run%
\fi%
\fi%
}%
\def\pgf@decorate@movealongpath#1{%
\pgfmathsetlength\pgf@decorate@distancetomove{#1}%
\advance\pgfdecoratedcompleteddistance\pgf@decorate@distancetomove%
\advance\pgfdecoratedremainingdistance-\pgf@decorate@distancetomove%
\pgf@decorate@@movealongpath%
}%
\def\pgf@decorate@@movealongpath{%
\advance\pgfdecoratedinputsegmentcompleteddistance\pgf@decorate@distancetomove%
\advance\pgfdecoratedinputsegmentremainingdistance-\pgf@decorate@distancetomove%
\ifdim\pgfdecoratedinputsegmentremainingdistance>0pt\relax%
\let\pgf@next\pgf@decorate@@@movealongpath%
\else%
\pgf@decorate@distancetomove-\pgfdecoratedinputsegmentremainingdistance%
\pgf@decorate@processnextinputsegmentobject%
\ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
\pgfdecoratedremainingdistance0pt\relax%
\let\pgf@next\relax%
\else%
\let\pgf@next\pgf@decorate@@movealongpath%
\fi%
\fi%
\pgf@next%
}%
\def\pgf@decorate@@@movealongpath{%
\pgf@decorate@movealonginputsegment{\the\pgf@decorate@distancetomove}%
\pgf@decorate@distancetomove0pt\relax%
\ifdim\pgf@decorate@inputsegmenttime pt>1pt\relax%
\let\pgf@decorate@inputsegmenttimetemp\pgf@decorate@inputsegmenttime%
\pgf@decorate@processnextinputsegmentobject%
\pgf@x\pgf@decorate@inputsegmenttimetemp pt\relax%
\advance\pgf@x-1pt\relax%
\edef\pgf@decorate@inputsegmenttime{\pgfmath@tonumber{\pgf@x}}%
\ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
\pgfdecoratedremainingdistance0pt\relax%
\fi%
\fi%
}%
\def\pgf@decorate@getnextinputsegmentobject#1{%
\ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
\let\pgf@next\relax%
\else%
\def\pgf@decorate@temp{#1}%
\let\pgf@next\pgf@decorate@@getnextinputsegmentobject%
\fi%
\pgf@next%
}%
\def\pgf@decorate@@getnextinputsegmentobject{%
\expandafter\pgf@decorate@@@getnextinputsegmentobject\pgf@decorate@currentinputsegmentobjects\pgf@stop}%
\def\pgf@decorate@@@getnextinputsegmentobject#1#2\pgf@stop{%
\expandafter\def\pgf@decorate@temp{#1}%
\def\pgf@decorate@currentinputsegmentobjects{#2}}%
\def\pgf@decorate@processnextinputsegmentobject{%
\let\pgfdecorationpreviousinputsegment\pgfdecoratecurrentinputsegment%
\let\pgf@decorate@currentinputsegmentobject\pgf@decorate@nextinputsegmentobject%
\pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
\pgf@decorate@is@closepath@false%
\pgf@decorate@currentinputsegmentobject%
\ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
\pgfpathmoveto{\pgf@decorate@inputsegment@first}%
\let\pgfdecorationpreviousinputsegment\pgfdecorationcurrentinputsegment%
\let\pgf@decorate@currentinputsegmentobject\pgf@decorate@nextinputsegmentobject%
\pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
\pgf@decorate@is@closepath@false%
\pgf@decorate@currentinputsegmentobject%
\fi%
\ifdim\pgfdecoratedinputsegmentlength=0pt\relax%
\def\pgfdecoratedinputsegmentlength{0.05pt}%
\fi%
\pgfdecoratedinputsegmentremainingdistance\pgfdecoratedinputsegmentlength\relax%
\pgfdecoratedinputsegmentcompleteddistance0pt\relax%
\def\pgf@decorate@inputsegmenttime{0}%
\ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
\pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
\let\pgfdecoratedangle\pgfmathresult%
\let\pgfdecoratedinputsegmentstartangle\pgfmathresult%
\pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
\let\pgfdecoratedinputsegmentendangle\pgfmathresult%
\else%
\pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}%
\let\pgfdecoratedangle\pgfmathresult%
\let\pgfdecoratedinputsegmentstartangle\pgfmathresult%
\let\pgfdecoratedinputsegmentendangle\pgfmathresult%
\fi%
\begingroup%
\pgf@decorate@nextinputsegmentobject%
\global\let\pgf@decorate@temp\pgfdecorationcurrentinputsegment%
\ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
\expandafter\pgf@decorate@currentinputsegmentobject%
\fi%
\ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
\pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
\else%
\pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}%
\fi%
\pgf@x-\pgfdecoratedangle pt\relax%
\advance\pgf@x\pgfmathresult pt\relax%
\edef\pgfdecoratedangletonextinputsegment{\the\pgf@x}%
\pgfmath@smuggleone\pgfdecoratedangletonextinputsegment%
\endgroup%
\let\pgfdecorationnextinputsegmentobject\pgf@decorate@temp%
}%
\newif\ifpgf@decorate@is@closepath@%
\def\pgfdecorationinputsegmentmoveto{moveto}%
\def\pgfdecorationinputsegmentlineto{lineto}%
\def\pgfdecorationinputsegmentcurveto{curveto}%
\def\pgfdecorationinputsegmentclosepath{closepath}%
\def\pgfdecorationinputsegmentlast{last}%
\def\pgf@decorate@inputsegmentobject@moveto#1{%
\def\pgf@decorate@inputsegment@first{#1}%
\def\pgf@decorate@inputsegment@supporta{#1}%
\def\pgf@decorate@inputsegment@supportb{#1}%
\def\pgf@decorate@inputsegment@last{#1}%
\edef\pgf@decorate@lastmoveto{#1}%
\def\pgfdecoratedinputsegmentlength{0pt}%
\let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
}%
\def\pgf@decorate@inputsegmentobject@lineto#1#2#3{%
\def\pgfdecoratedinputsegmentlength{#1}%
\def\pgf@decorate@inputsegment@first{#2}%
\def\pgf@decorate@inputsegment@last{#3}%
\pgfpointdiff{#2}{#3}%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
\pgfextract@process\pgf@decorate@inputsegment@supporta{%
\pgf@process{#2}%
\advance\pgf@x0.333333\pgf@xa%
\advance\pgf@y0.333333\pgf@ya%
}%
\pgfextract@process\pgf@decorate@inputsegment@supportb{%
\pgf@process{#2}%
\advance\pgf@x0.666666\pgf@xa%
\advance\pgf@y0.666666\pgf@ya%
}%
\let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@line%
\let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@line%
\let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentlineto%
}%
\def\pgf@decorate@inputsegmentobject@curveto#1#2#3#4#5{%
\def\pgfdecoratedinputsegmentlength{#1}%
\def\pgf@decorate@inputsegment@first{#2}%
\def\pgf@decorate@inputsegment@supporta{#3}%
\def\pgf@decorate@inputsegment@supportb{#4}%
\def\pgf@decorate@inputsegment@last{#5}%
\let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@curve%
\let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@curve%
\let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
}%
\def\pgf@decorate@inputsegmentobject@closepath#1#2#3{%
\pgf@decorate@is@closepath@true%
\def\pgfdecoratedinputsegmentlength{#1}%
\def\pgf@decorate@inputsegment@first{#2}%
\def\pgf@decorate@inputsegment@last{#3}%
\pgfpointdiff{#2}{#3}%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
\pgfextract@process\pgf@decorate@inputsegment@supporta{%
\pgf@process{#2}%
\advance\pgf@x0.333333\pgf@xa%
\advance\pgf@y0.333333\pgf@ya%
}%
\pgfextract@process\pgf@decorate@inputsegment@supportb{%
\pgf@process{#2}%
\advance\pgf@x0.666666\pgf@xa%
\advance\pgf@y0.666666\pgf@ya%
}%
\let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@line%
\let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@line%
\let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentclosepath%
}%
\def\pgf@decorate@inputsegmentobject@endofinputsegments{%
\let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentlast%
}%
\def\pgf@decorate@movealonginputsegment@line#1{}%
\def\pgf@decorate@movealonginputsegment@curve#1{%
\ifdim#1=0pt\relax%
\else%
\pgfpointcurveattime{\pgf@decorate@inputsegmenttime}%
{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
{\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
\pgf@xb\pgf@decorate@inputsegmenttime pt\relax%
\ifdim\pgf@decorate@currentpathlength<128pt\relax%
\pgf@yb.03125pt\relax%
\else%
\ifdim\pgf@decorate@currentpathlength<512pt\relax%
\pgf@yb.015625pt\relax%
\else%
\ifdim\pgf@decorate@currentpathlength<2048pt\relax%
\pgf@yb.00390625pt\relax%
\else%
\pgf@yb.0009765625pt\relax%
\fi%
\fi%
\fi%
\c@pgf@counta1\relax%
\pgfutil@tempdima0pt\relax%
\pgfmathloop%
\advance\pgf@xb\c@pgf@counta\pgf@yb%
\edef\pgf@decorate@temp{%
\pgf@xa\the\pgf@xa%
\pgf@xb\the\pgf@xb%
\pgf@ya\the\pgf@ya%
\pgf@yb\the\pgf@yb%
}%
\pgfpoint@decorate@curveattime{\pgfmath@tonumber{\pgf@xb}}%
{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
{\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
\pgf@decorate@temp%
\pgf@xc\pgf@xa%
\pgf@yc\pgf@ya%
\pgf@xa\pgf@x%
\pgf@ya\pgf@y%
\advance\pgf@x-\pgf@xc%
\advance\pgf@y-\pgf@yc%
\pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
\pgfutil@tempdimb\pgfmathresult pt\relax%
\advance\pgfutil@tempdima\c@pgf@counta\pgfutil@tempdimb%
\ifnum\c@pgf@counta>0\relax%
\ifdim\pgfutil@tempdima>#1\relax%
\c@pgf@counta-\c@pgf@counta%
\pgf@yb.5\pgf@yb%
\fi%
\else%
\ifdim\pgfutil@tempdima<#1\relax%
\c@pgf@counta-\c@pgf@counta%
\pgf@yb.5\pgf@yb%
\fi%
\fi%
\ifdim\pgf@yb=0pt\relax%
\else%
\repeatpgfmathloop%
\edef\pgf@decorate@inputsegmenttime{\pgfmath@tonumber{\pgf@xb}}%
\pgfpointcurveattime{\pgf@decorate@inputsegmenttime}%
{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
{\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
\edef\pgf@marshal{%
\noexpand\pgfmathanglebetweenpoints%
{\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}%
{\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}%
}%
\pgf@marshal%
\let\pgfdecoratedangle\pgfmathresult%
\fi%
}%
\def\pgfpoint@decorate@curveattime#1#2#3#4#5{%
\edef\pgf@time@s{#1}%
\pgf@x-\pgf@time@s pt\relax%
\advance\pgf@x1pt\relax%
\edef\pgf@time@t{\pgf@sys@tonumber{\pgf@x}}%
#5\relax%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
#4\relax%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
#3\relax%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
#2\relax%
\pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
\pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
\pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
\pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
\pgf@xb=\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
\pgf@yb=\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
\pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
\pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
\pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
\pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
\pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
}%
\def\pgf@decorate@transformtoinputsegment@line{%
\pgftransformshift{%
\pgfpointlineatdistance{\pgfdecoratedinputsegmentcompleteddistance}{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}
}%
\pgftransformrotate{\pgfdecoratedangle}%
}%
\def\pgf@decorate@transformtoinputsegment@curve{%
\pgfslopedattimetrue%
\pgfallowupsidedownattimetrue%
\pgftransformcurveattime{\pgf@decorate@inputsegmenttime}%
{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
{\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
}%
\def\pgf@decorate@parsesoftpath#1#2{%
\def\pgf@decorate@inputsegmentobjectsmacro{#2}%
\let\pgf@decorate@inputsegmentobjects\pgfutil@empty%
\pgfutil@tempdima0pt\relax%
\let\pgfpoint@decorate@lastparsed\pgfpoint@decorate@existingpathlast%
\let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@origin%
\let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
\let\pgfpoint@decorated@firstparsed\pgfutil@empty%
\expandafter\pgf@decorate@@parsesoftpath#1\pgf@stop%
}%
\def\pgf@decorate@@parsesoftpath#1{%
\ifx#1\pgf@stop%
\let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
\pgf@decorate@addtoinputsegmentobjects{\pgf@decorate@inputsegmentobject@endofinputsegments}%
\pgf@decorate@addtoinputsegmentobjects{\pgf@decorate@inputsegmentobject@endofinputsegments}%
\expandafter\let\pgf@decorate@inputsegmentobjectsmacro\pgf@decorate@inputsegmentobjects%
\edef\pgf@decorate@totalpathlength{\the\pgfutil@tempdima}%
\let\pgf@next\relax%
\else%
\ifx#1\pgfsyssoftpath@movetotoken%
\let\pgf@next\pgf@decorate@parsemoveto%
\else%
\ifx#1\pgfsyssoftpath@linetotoken%
\let\pgf@next\pgf@decorate@parselineto%
\else%
\ifx#1\pgfsyssoftpath@curvetosupportatoken%
\let\pgf@next\pgf@decorate@parsecurveto%
\else%
\ifx#1\pgfsyssoftpath@closepathtoken%
\let\pgf@next\pgf@decorate@parseclosepath%
\else%
\ifx#1\pgfsyssoftpath@rectcornertoken%
\let\pgf@next\pgf@decorate@parserect%
\else%
\pgferror{Unrecognised soft path token `#1'}%
\fi%
\fi%
\fi%
\fi%
\fi%
\fi%
\pgf@next}%
\def\pgf@decorate@addtoinputsegmentobjects#1{%
\ifx\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
\else%
\let\pgf@decorate@temp\pgf@decorate@queueinputsegmentobject%
\let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
\expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
\fi%
\ifx\pgfpoint@decorated@firstparsed\pgfutil@empty%
#1%
\let\pgfpoint@decorated@firstparsed\pgf@decorate@inputsegment@first%
\fi%
\expandafter\def\expandafter\pgf@decorate@inputsegmentobjects\expandafter%
{\pgf@decorate@inputsegmentobjects{#1}}%
}%
\def\pgf@decorate@parsemoveto#1#2{%
\def\pgf@decorate@queueinputsegmentobject{\pgf@decorate@inputsegmentobject@moveto{\pgf@x#1\pgf@y#2}}%
\def\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
\pgf@decorate@@parsesoftpath%
}%
\def\pgf@decorate@parselineto#1#2{%
\pgf@decorate@linelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
\advance\pgfutil@tempdima\pgfmathresult pt\relax%
\edef\pgf@decorate@temp{%
\noexpand\pgf@decorate@inputsegmentobject@lineto{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
}%
\edef\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
\let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
\expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
\pgf@decorate@@parsesoftpath%
}%
\def\pgf@decorate@parsecurveto#1#2\pgfsyssoftpath@curvetosupportbtoken#3#4\pgfsyssoftpath@curvetotoken#5#6{%
\pgf@decorate@curvelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}{\pgf@x#3\pgf@y#4}{\pgf@x#5\pgf@y#6}%
\advance\pgfutil@tempdima\pgfmathresult pt\relax%
\edef\pgf@decorate@temp{%
\noexpand\pgf@decorate@inputsegmentobject@curveto{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}%
{\pgf@x#1\pgf@y#2}{\pgf@x#3\pgf@y#4}{\pgf@x#5\pgf@y#6}%
}%
\expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
\edef\pgfpoint@decorate@lastparsed{\pgf@x#5\pgf@y#6}%
\let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
\pgf@decorate@@parsesoftpath%
}%
\def\pgf@decorate@parseclosepath#1#2{%
\pgf@decorate@linelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
\advance\pgfutil@tempdima\pgfmathresult pt\relax%
\edef\pgf@decorate@temp{%
\noexpand\pgf@decorate@inputsegmentobject@closepath{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
}%
\expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
\edef\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
\let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
\pgf@decorate@@parsesoftpath%
}%
\newif\ifpgfdecoraterectangleclockwise
\def\pgf@decorate@parserect#1#2\pgfsyssoftpath@rectsizetoken#3#4{%
\let\pgf@decorate@orig@@parsesoftpath\pgf@decorate@@parsesoftpath%
\let\pgf@decorate@@parsesoftpath\relax%
\pgf@decorate@parsemoveto{#1}{#2}%
\pgf@xa#1\relax%
\pgf@ya#2\relax%
\ifpgfdecoraterectangleclockwise%
\advance\pgf@ya#4%
\pgf@yb\pgf@ya%
\edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\pgf@decorate@parselineto\pgf@temp%
\advance\pgf@xa#3%
\pgf@xb\pgf@xa%
\edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\pgf@decorate@parselineto\pgf@temp%
\advance\pgf@ya-#4%
\edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\pgf@decorate@parselineto\pgf@temp%
\advance\pgf@xa-#3%
\edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\pgf@decorate@parseclosepath\pgf@temp%
\else%
\advance\pgf@xa#3%
\edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
\pgf@xb\pgf@xa%
\expandafter\pgf@decorate@parselineto\pgf@temp%
\advance\pgf@ya#4%
\pgf@yb\pgf@ya%
\edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\pgf@decorate@parselineto\pgf@temp%
\advance\pgf@xa-#3%
\edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\pgf@decorate@parselineto\pgf@temp%
\advance\pgf@ya-#4%
\edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
\expandafter\pgf@decorate@parseclosepath\pgf@temp%
\fi%
\let\pgf@decorate@@parsesoftpath\pgf@decorate@orig@@parsesoftpath%
\edef\pgf@marshal{\noexpand\pgf@decorate@parsemoveto{\the\pgf@xb}{\the\pgf@yb}}%
\pgf@marshal%
}%
\def\pgf@decorate@linelength#1#2{%
\pgf@process{\pgfpointdiff{#1}{#2}}%
\pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
}%
\newif\ifpgf@decorate@subdivide
\def\pgf@decorate@curvelength#1#2#3#4{%
\begingroup%
\pgf@decorate@recursive@subdividecurve@left{#1}{#2}{#3}{#4}%
\pgfutil@tempdimb\pgfmathresult pt\relax%
\pgf@decorate@recursive@subdividecurve@right{#1}{#2}{#3}{#4}%
\advance\pgfutil@tempdimb\pgfmathresult pt\relax%
\pgfmath@returnone\pgfutil@tempdimb%
\endgroup%
}%
\def\pgf@decorate@@curvelength#1#2#3#4{%
\begingroup%
\pgf@decorate@curvecordlength{#1}{#2}{#3}{#4}%
\ifpgf@decorate@subdivide%
\pgf@decorate@recursive@subdividecurve@left{#1}{#2}{#3}{#4}%
\pgfutil@tempdimb\pgfmathresult pt\relax%
\pgf@decorate@recursive@subdividecurve@right{#1}{#2}{#3}{#4}%
\advance\pgfutil@tempdimb\pgfmathresult pt\relax%
\expandafter\pgfmath@returnone\expandafter\pgfutil@tempdimb%
\else%
\expandafter\pgfmath@returnone\expandafter\pgfmathresult\expandafter p\expandafter t\expandafter%
\fi%
\endgroup%
}%
\def\pgf@decorate@curvelength@tolerance{1pt}%
\def\pgf@decorate@curvecordlength#1#2#3#4{%
#4\relax%
\pgf@xa\pgf@x\pgf@ya\pgf@y%
#1\relax%
\advance\pgf@xa-\pgf@x%
\advance\pgf@ya-\pgf@y%
\ifdim\pgf@xa<0pt\relax\pgf@xa-\pgf@xa\fi%
\ifdim\pgf@ya<0pt\relax\pgf@ya-\pgf@ya\fi%
\pgf@decorate@subdividetrue%
\ifdim\pgf@xa<\pgf@decorate@curvelength@tolerance\relax%
\ifdim\pgf@ya<\pgf@decorate@curvelength@tolerance\relax%
\pgfmathveclen@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgf@ya}}%
\pgf@decorate@subdividefalse%
\fi%
\fi%
}%
\def\pgf@decorate@recursive@subdividecurve@left#1#2#3#4{%
{%
#1\relax%
\pgfutil@tempdima\pgf@x%
\pgfutil@tempdimb\pgf@y%
\pgf@xa.5\pgf@x\pgf@ya.5\pgf@y%
\pgf@xb.25\pgf@x\pgf@yb.25\pgf@y%
\pgf@xc.125\pgf@x\pgf@yc.125\pgf@y%
#2\relax%
\advance\pgf@xa.5\pgf@x\advance\pgf@ya.5\pgf@y%
\advance\pgf@xb.5\pgf@x\advance\pgf@yb.5\pgf@y%
\advance\pgf@xc.375\pgf@x\advance\pgf@yc.375\pgf@y%
#3\relax%
\advance\pgf@xb.25\pgf@x\advance\pgf@yb.25\pgf@y%
\advance\pgf@xc.375\pgf@x\advance\pgf@yc.375\pgf@y%
#4\relax%
\advance\pgf@xc.125\pgf@x\advance\pgf@yc.125\pgf@y%
\xdef\pgf@marshal{%
\noexpand\pgf@decorate@@curvelength%
{\pgf@x\the\pgfutil@tempdima\pgf@y\the\pgfutil@tempdimb}%
{\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}{\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}
{\pgf@x\the\pgf@xc\pgf@y\the\pgf@yc}%
}%
}%
\pgf@marshal%
}%
\def\pgf@decorate@recursive@subdividecurve@right#1#2#3#4{%
{%
#1\relax%
\pgfutil@tempdima.125\pgf@x\pgfutil@tempdimb.125\pgf@y%
#2\relax%
\advance\pgfutil@tempdima.375\pgf@x\advance\pgfutil@tempdimb.375\pgf@y%
\pgf@xa.25\pgf@x\pgf@ya.25\pgf@y%
#3\relax%
\advance\pgfutil@tempdima.375\pgf@x\advance\pgfutil@tempdimb.375\pgf@y%
\advance\pgf@xa.5\pgf@x\advance\pgf@ya.5\pgf@y%
\pgf@xb.5\pgf@x\pgf@yb.5\pgf@y%
#4\relax%
\advance\pgfutil@tempdima.125\pgf@x\advance\pgfutil@tempdimb.125\pgf@y%
\advance\pgf@xa.25\pgf@x\advance\pgf@ya.25\pgf@y%
\advance\pgf@xb.5\pgf@x\advance\pgf@yb.5\pgf@y%
\pgf@xc\pgf@x\pgf@yc\pgf@y%
\xdef\pgf@marshal{%
\noexpand\pgf@decorate@@curvelength%
{\pgf@x\the\pgfutil@tempdima\pgf@y\the\pgfutil@tempdimb}%
{\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}{\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}
{\pgf@x\the\pgf@xc\pgf@y\the\pgf@yc}%
}%
}%
\pgf@marshal%
}%
\def\pgf@decorate@inputsegmentobjects@reverse#1#2{%
\def\pgf@decorate@path@storein{#2}%
\def\pgf@decorate@inputsegments@@temp{}%
\expandafter\pgf@decorate@inputsegments@@reverse@pass@first#1\pgf@stop}%
\def\pgf@decorate@inputsegments@@reverse@pass@first#1#2\pgf@stop{%
\def\pgf@decorate@temp{#1}%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
\pgf@decorate@inputsegments@@temp\expandafter\expandafter\expandafter%
{\expandafter\pgf@decorate@temp\pgf@decorate@inputsegments@@temp}%
\def\pgf@decorate@test{#2}
\ifx\pgf@decorate@test\pgfutil@empty%
\def\pgf@decorate@next{%
\expandafter\pgf@decorate@inputsegmentobjects@reverse@pass@second\pgf@decorate@inputsegments@@temp\pgf@stop%
}%
\else%
\def\pgf@decorate@next{\pgf@decorate@inputsegments@@reverse@pass@first#2\pgf@stop}%
\fi%
\pgf@decorate@next%
}%
\def\pgf@decorate@inputsegmentobjects@reverse@pass@second#1#2#3\pgf@stop{%
\def\pgf@decorate@inputsegments@temp{#3}%
\def\pgf@decorate@inputsegments@@temp{}%
\let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty
\let\pgf@decorate@last@object=\pgfutil@empty
\pgf@decorate@inputsegmentobjects@reverse@moveto@waitingtrue%
\pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
\expandafter\pgf@decorate@path@@reverse@pass@second\pgf@decorate@inputsegments@temp\pgf@stop}%
\def\pgf@decorate@path@@reverse@pass@second#1{%
\ifx#1\pgf@stop%
\expandafter\def\expandafter\pgf@decorate@inputsegments@@temp\expandafter{%
\pgf@decorate@inputsegments@@temp%
{\pgf@decorate@inputsegmentobject@endofinputsegments}%
{\pgf@decorate@inputsegmentobject@endofinputsegments}
}%
\expandafter\let\pgf@decorate@path@storein=\pgf@decorate@inputsegments@@temp%
\let\pgf@decorate@next=\relax%
\else%
\ifx#1\pgf@decorate@inputsegmentobject@moveto%
\let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@moveto%
\else%
\ifx#1\pgf@decorate@inputsegmentobject@lineto%
\let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@lineto%
\else%
\ifx#1\pgf@decorate@inputsegmentobject@curveto%
\let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@curveto%
\else%
\ifx#1\pgf@decorate@inputsegmentobject@closepath%
\let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@closepath%
\else%
\fi%
\fi%
\fi%
\fi%
\fi%
\pgf@decorate@next%
}%
\newif\ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting
\def\pgf@decorate@inputsegmentobjects@reverse@moveto#1{%
\ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting%
\edef\pgf@decorate@current@inputsegmentobject{%
{\noexpand\pgf@decorate@inputsegmentobject@closepath%
{\pgf@decorate@reverse@closepath@length}%
{\pgf@decorate@last}%
{#1}%
}%
}%
\pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
\else%
\let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty%
\fi%
\pgf@decorate@inputsegmentobjects@reverse@moveto@waitingtrue%
\pgf@decorate@path@@@reverse@pass@second%
}%
\newif\ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting
\def\pgf@decorate@inputsegmentobjects@reverse@closepath#1#2#3{%
\pgf@decorate@inputsegmentobjects@reverse@closepath@waitingtrue%
\def\pgf@decorate@reverse@closepath@length{#1}%
\def\pgf@decorate@current@inputsegmentobject{}%
\pgf@decorate@inputsegmentobjects@reverse@lineto{#1}{#2}{#3}%
}%
\def\pgf@decorate@inputsegmentobjects@reverse@lineto#1#2#3#4{%
\ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting%
\def\pgf@decorate@current@inputsegmentobject{{\pgf@decorate@inputsegmentobject@moveto{#3}}}%
\pgf@decorate@inputsegmentobjects@reverse@moveto@waitingfalse%
\else%
\let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty%
\fi%
\def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@lineto{#1}{#3}{#2}}}%
\ifx#4\pgf@decorate@inputsegmentobject@moveto%
\ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting%
\def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@closepath{#1}{#3}{#2}}}%
\pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
\else%
\def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@lineto{#1}{#3}{#2}}}%
\fi%
\fi%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
\pgf@decorate@current@inputsegmentobject\expandafter\expandafter\expandafter%
{\expandafter\pgf@decorate@current@inputsegmentobject\pgf@decorate@append@inputsegmentobject}
\def\pgf@decorate@last{#2}%
\pgf@decorate@path@@@reverse@pass@second#4%
}%
\def\pgf@decorate@inputsegmentobjects@reverse@curveto#1#2#3#4#5{%
\ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting%
\def\pgf@decorate@current@inputsegmentobject{%
{\pgf@decorate@inputsegmentobject@moveto{#5}}%
{\pgf@decorate@inputsegmentobject@curveto{#1}{#5}{#4}{#3}{#2}}%
}%
\pgf@decorate@inputsegmentobjects@reverse@moveto@waitingfalse%
\else%
\def\pgf@decorate@current@inputsegmentobject{{\pgf@decorate@inputsegmentobject@curveto{#1}{#5}{#4}{#3}{#2}}}%
\fi%
\def\pgf@decorate@last{#2}%
\pgf@decorate@path@@@reverse@pass@second%
}%
\def\pgf@decorate@path@@@reverse@pass@second{%
\ifx\pgf@decorate@current@inputsegmentobject\pgfutil@empty%
\else%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
\pgf@decorate@inputsegments@@temp\expandafter\expandafter\expandafter%
{\expandafter\pgf@decorate@inputsegments@@temp\pgf@decorate@current@inputsegmentobject}%
\fi%
\pgf@decorate@path@@reverse@pass@second%
}%
\let\startpgfdecoration=\pgfdecoration
\let\stoppgfdecoration=\endpgfdecoration
\let\startpgfmetadecoration=\pgfmetadecoration
\let\stoppgfmetadecoration=\endpgfmetadecoration
\pgfdeclaredecoration{lineto}{initial}{%
\state{initial}[switch if input segment less than=\pgfdecoratedremainingdistance to input segment,
width=\pgfdecoratedremainingdistance]
{
}%
\state{input segment}[width=\pgfdecoratedinputsegmentlength,next state=initial]
{
\pgfpathlineto{\pgfpointdecoratedinputsegmentlast}
}%
\state{final}{\pgfpathlineto{\pgfpointdecoratedpathlast}}%
}%
\pgfdeclaredecoration{moveto}{initial}{%
\state{initial}[width=\pgfdecoratedremainingdistance]{}%
\state{final}{\pgfpathmoveto{\pgfpointdecoratedpathlast}}%
}%
\pgfdeclaredecoration{curveto}{initial}{%
\state{initial}[width=\pgfdecoratedinputsegmentlength/100]
{
\pgfpathlineto{\pgfpointorigin}
}%
\state{final}{\pgfpathlineto{\pgfpointdecoratedpathlast}}%
}%
\let\pgfsnakeremainingdistance=\pgfdecoratedremainingdistance
\let\pgfsnakecompleteddistance=\pgfdecoratedcompleteddistance
\def\pgfsnakeangle{\pgfdecoratedangle}%
\let\pgfdeclaresnake=\pgfdeclaredecoration
\let\pgfsetsnakesegmenttransformation=\pgfsetdecorationsegmenttransformation
\def\pgfpathsnakesto#1#2{%
\edef\pgf@temp{#1}%
\expandafter\pgfdecoration\expandafter{\pgf@temp}%
\pgfpathlineto{#2}%
\endpgfdecoration%
}%
\def\pgfpathsnaketo#1#2{\pgfpathsnakesto{{#1}{\pgfsnakeremainingdistance}}{#2}}%
\def\pgfpathsnakealongvector#1#2#3{%
\pgf@process{#3}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgfmathparse{#2}%
\pgf@xa=\pgfmathresult\pgf@xa%
\pgf@ya=\pgfmathresult\pgf@ya%
\advance\pgf@xa by\pgf@path@lastx%
\advance\pgf@ya by\pgf@path@lasty%
\edef\pgf@snake@lib@temp{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\pgfpathsnaketo{#1}{\pgf@snake@lib@temp}%
}%
\let\pgfsnakesegmentamplitude=\pgfdecorationsegmentamplitude
\let\pgfsnakesegmentlength=\pgfdecorationsegmentlength
\def\pgfsnakesegmentangle{\pgfdecorationsegmentangle}%
\def\pgfsnakesegmentobjectlength{\pgfkeysvalueof{/pgf/decoration/shape start width}}%
\def\pgfsnakesegmentaspect{\pgfdecorationsegmentaspect}%
\pgfset{%
/pgf/segment amplitude/.style={/pgf/decoration={amplitude={#1},shape height={2*(#1)}}},
/pgf/segment length/.style={/pgf/decoration={segment length={#1}}},
/pgf/segment angle/.style={/pgf/decoration={angle={#1}}},
/pgf/segment aspect/.style={/pgf/decoration={aspect={#1}}},
/pgf/segment object length/.style={/pgf/decoration={shape width={#1},radius={#1}}}}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduledecorations.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmodulematrix.code.tex ====
\ProvidesFileRCS{pgfmodulematrix.code.tex}
\usepgfmodule{shapes}%
\newif\ifpgfmatrix
\newif\ifpgf@matrix@correct@call
\newif\ifpgf@matrix@fixed
\newcount\pgfmatrixcurrentrow
\newcount\pgfmatrixcurrentcolumn
\newcount\pgf@matrix@numberofcolumns
\let\pgf@matrix@cell=\pgfnodeparttextbox %
\let\pgf@matrix@box=\pgf@matrix@cell %
\long\def\pgfmatrixbeforeassemblenode#1{%
\long\def\pgf@matrix@before@assemnble@node{#1}}
\pgfmatrixbeforeassemblenode{}
\def\pgfsetmatrixrowsep#1{\def\pgfmatrixrowsep{#1}}%
\def\pgfsetmatrixcolumnsep#1{\def\pgfmatrixcolumnsep{#1}}%
\def\pgfmatrixrowsep{0pt}%
\def\pgfmatrixcolumnsep{0pt}%
\def\pgfmatrix#1#2#3#4#5#6{%
\ifpgfmatrix%
\pgferror{You cannot nest pgfmatrix environments, yet}
\fi%
\bgroup%
\everycr{}%
#6%
\def\pgf@matrix@par@shape{#1}%
\def\pgf@matrix@par@anchor{#2}%
\def\pgf@matrix@par@name{#3}%
\def\pgf@matrix@par@usage{#4}%
\def\pgf@matrix@par@shift{#5}%
\ifx\pgf@matrix@par@name\pgfutil@empty%
\def\pgf@matrix@par@name{pgf@matrix@internal}%
\fi%
\pgfmatrixcurrentrow=0\relax%
\pgfmatrixcurrentcolumn=0\relax%
\pgf@matrix@numberofcolumns=0\relax%
\let\\=\pgfmatrixendrow%
\tabskip=0pt%
\offinterlineskip%
\pgfmatrixtrue%
\let\pgf@matrix@node@list=\pgfutil@empty%
\expandafter\let\csname pgf@matrix@column@finish@1\endcsname=\pgfutil@empty%
\let\pgf@matrix@row@finish=\pgfutil@empty%
\afterassignment\pgf@matrix@cont\let\pgf@next=%
}%
\def\pgf@matrix@cont{%
\setbox\pgf@matrix@box=\hbox\bgroup\vbox\bgroup%
\halign\bgroup%
\pgf@matrix@init@row%
\pgf@matrix@step@column%
{%
\pgf@matrix@startcell%
##%
\pgf@matrix@endcell%
}%
&%
##\pgf@matrix@padding&&%
\pgf@matrix@step@column%
{%
\pgf@matrix@startcell%
##%
\pgf@matrix@endcell%
}&%
##\pgf@matrix@padding%
\cr%
}%
\def\pgf@end@matrix{%
\egroup\egroup%
\egroup%
\pgf@matrix@before@assemnble@node
\ifx\pgf@matrix@node@list\pgfutil@empty%
\else%
\pgf@matrix@compute@origin%
\pgf@matrix@shift@nodes@initial%
\fi%
\pgftransformresetnontranslations%
\pgftransformshift{\pgf@process{\pgftransformreset\pgf@matrix@par@shift\pgf@x=-\pgf@x\pgf@y=-\pgf@y}}%
\pgfmultipartnode{\pgf@matrix@par@shape}{\pgf@matrix@par@anchor}{\pgf@matrix@par@name}{\pgf@matrix@par@usage}%
\ifx\pgf@matrix@node@list\pgfutil@empty%
\else%
{%
\pgftransformreset%
\pgf@process{\pgfpointanchor{\pgf@matrix@par@name}{text}}%
\xdef\pgf@matrix@offset{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\pgf@matrix@shift@nodes@secondary{\pgf@matrix@offset}%
}%
\fi%
}%
\def\pgfmatrixnextcell{%
\let\pgf@matrix@signal@cell@end=\pgf@matrix@signal@cell@end%
\pgfutil@ifnextchar[{\pgf@matrix@cell@cont}{\pgf@matrix@cell@cont[0pt]}}%
\def\pgf@matrix@cell@cont[#1]{%
\xdef\pgf@matrix@last@nextcell@options{#1}%
&\pgf@matrix@correct@calltrue&%
}%
\def\pgf@matrix@fixed@text{between origins}%
\def\pgf@matrix@natural@text{between borders}%
\def\pgf@matrix@addtolength#1#2{\edef\pgf@temp{#2}\expandafter\pgf@matrix@addtolength@\expandafter#1#2,\pgf@stop}%
\def\pgf@matrix@addtolength@#1#2,#3\pgf@stop{%
\pgfkeys@spdef\pgf@temp{#2}%
\ifx\pgf@temp\pgfutil@empty%
\else%
\ifx\pgf@temp\pgf@matrix@fixed@text%
\global\pgf@matrix@fixedtrue%
\else%
\ifx\pgf@temp\pgf@matrix@natural@text%
\global\pgf@matrix@fixedfalse%
\else%
\pgfmathaddtolength{#1}{#2}%
\fi%
\fi%
\fi%
\def\pgf@temp{#3}%
\ifx\pgf@temp\pgfutil@empty%
\else%
\pgf@matrix@addtolength@#1#3\pgf@stop%
\fi%
}%
\def\pgf@matrix@init@row{%
\relax%
\global\advance\pgfmatrixcurrentrow by 1\relax%
\global\pgfmatrixcurrentcolumn=0\relax%
\expandafter\gdef\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname{0pt}%
\expandafter\gdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{0pt}%
}%
\def\pgf@matrix@step@column{%
\relax%
\global\advance\pgfmatrixcurrentcolumn by1\relax%
}%
\def\pgf@matrix@startcell{%
\let\pgf@nodecallback=\pgf@matrix@nodecallback%
\pgfinterruptboundingbox%
\pgftransformreset%
\setbox\pgf@matrix@cell=\hbox\bgroup\bgroup%
\pgf@relevantforpicturesizetrue
\pgfsys@beginpicture%
\normalbaselines%
\pgfutil@ifnextchar\let%
{%
\afterassignment\pgf@matrix@empty@check\let\pgf@matrix@temp=%
}%
{%
\pgf@matrix@empty@cell@false%
\pgfmatrixbegincode%
}%
}%
\def\pgf@matrix@empty@check{\futurelet\pgf@matrix@check@token\pgf@matrix@empty@check@cont}%
\def\pgf@matrix@empty@check@cont{%
\ifx\pgf@matrix@check@token\pgf@matrix@signal@cell@end%
\pgf@matrix@empty@cell@true%
\expandafter%
\pgfmatrixemptycode%
\expandafter%
\let%
\else%
\pgf@matrix@empty@cell@false%
\expandafter%
\pgfmatrixbegincode%
\expandafter
\let%
\fi%
}%
\newif\ifpgf@matrix@empty@cell@
\def\pgf@matrix@endcell{%
\ifpgf@matrix@empty@cell@%
\else%
\expandafter\expandafter\expandafter\pgfmatrixendcode%
\expandafter\ifpgf@matrix@last@cell@in@row\expandafter\pgf@matrix@last@cell@in@rowtrue\expandafter\fi%
\fi%
\pgfsys@endpicture%
\ifnum\pgfmatrixcurrentcolumn<\pgf@matrix@numberofcolumns%
\else%
\ifpgf@matrix@last@cell@in@row\else%
{%
\global\pgf@matrix@fixedfalse%
\pgf@x=0pt%
\pgf@matrix@addtolength{\pgf@x}{\pgfmatrixcolumnsep}%
\pgf@matrix@addtolength{\pgf@x}{\pgf@matrix@last@nextcell@options}%
\ifpgf@matrix@fixed%
\expandafter\pgfutil@g@addto@macro\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname%
{\global\pgf@picmaxx=0pt}%
\fi%
\advance\pgfmatrixcurrentcolumn by1\relax %
\expandafter\xdef\csname pgf@matrix@column@sep@\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@x}%
\ifpgf@matrix@fixed%
\expandafter\gdef\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname{\global\pgf@picminx=0pt}%
\else%
\expandafter\global\expandafter\let\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname=\pgfutil@empty%
\fi%
}%
\fi\fi%
\ifdim\pgf@picmaxx=-16000pt\relax%
\global\pgf@picmaxx=0pt\relax%
\global\pgf@picminx=0pt\relax%
\global\pgf@picmaxy=0pt\relax%
\global\pgf@picminy=0pt\relax%
\fi%
\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname%
\pgf@matrix@row@finish%
\egroup\egroup%
\ifnum\pgfmatrixcurrentcolumn>1\relax%
\pgf@y=\csname pgf@matrix@column@sep@\the\pgfmatrixcurrentcolumn\endcsname\relax%
\advance\pgf@picminx by-\pgf@y%
\fi%
\ifdim\pgf@picmaxy>\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname%
\expandafter\xdef\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname{\the\pgf@picmaxy}%
\fi%
\ifdim\pgf@picminy<\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
\expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@picminy}%
\fi%
\ht\pgf@matrix@cell=\pgf@picmaxy%
\dp\pgf@matrix@cell=-\pgf@picminy%
\ifnum\pgfmatrixcurrentcolumn>\pgf@matrix@numberofcolumns\relax%
\expandafter\xdef\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picmaxx}%
\expandafter\xdef\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picminx}%
\global\pgf@matrix@numberofcolumns=\pgfmatrixcurrentcolumn\relax%
\else%
\ifdim\pgf@picmaxx>\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname%
\expandafter\xdef\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picmaxx}%
\fi%
\ifdim\pgf@picminx<\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname%
\expandafter\xdef\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picminx}%
\fi%
\fi%
\xdef\pgf@matrix@paddingskip{\the\pgf@picmaxx}%
\hfil\hskip-\pgf@picminx%
\wd\pgf@matrix@cell=0pt%
\box\pgf@matrix@cell%
\endpgfinterruptboundingbox%
}%
\let\pgfmatrixbegincode=\relax
\let\pgfmatrixendcode=\relax
\let\pgfmatrixemptycode=\relax
\def\pgf@matrix@nodecallback#1{%
\def\pgf@temp{#1}%
\ifx\pgf@temp\pgfutil@empty%
\else%
\xdef\pgf@matrix@node@list{\pgf@matrix@node@list,{#1}}%
\expandafter\xdef\csname pgf@matrix@node@location@#1\endcsname{{\the\pgfmatrixcurrentrow}{\the\pgfmatrixcurrentcolumn}}%
\fi%
}%
\def\pgf@matrix@padding{%
\ifpgf@matrix@correct@call%
\else%
\pgferror{Single ampersand used with wrong catcode}%
\fi%
\hskip\pgf@matrix@paddingskip\hfil%
}%
\def\pgf@matrix@compute@origin{%
{%
\ifnum\pgfmatrixcurrentrow>0\relax%
\expandafter\gdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{0pt}%
\fi
\c@pgf@counta=\pgfmatrixcurrentrow\relax%
\loop%
\ifnum\c@pgf@counta>1\relax%
\pgf@y=\csname pgf@matrix@miny\the\c@pgf@counta\endcsname\relax%
\advance\pgf@y by\csname pgf@matrix@maxy\the\c@pgf@counta\endcsname\relax
\advance\c@pgf@counta by-1\relax%
\pgf@ya=\csname pgf@matrix@miny\the\c@pgf@counta\endcsname\relax%
\advance\pgf@y by-\pgf@ya\relax%
\expandafter\xdef\csname pgf@matrix@miny\the\c@pgf@counta\endcsname{\the\pgf@y}%
\repeat%
}%
{%
\ifnum\pgf@matrix@numberofcolumns>0\relax%
\pgf@x=\csname pgf@matrix@minx1\endcsname\relax%
\pgf@x=-\pgf@x%
\expandafter\xdef\csname pgf@matrix@minx1\endcsname{\the\pgf@x}%
\fi
\c@pgf@counta=1\relax%
\loop%
\ifnum\c@pgf@counta<\pgf@matrix@numberofcolumns\relax%
\pgf@x=\csname pgf@matrix@minx\the\c@pgf@counta\endcsname\relax%
\advance\pgf@x by\csname pgf@matrix@maxx\the\c@pgf@counta\endcsname\relax%
\advance\c@pgf@counta by1\relax%
\pgf@xa=\csname pgf@matrix@minx\the\c@pgf@counta\endcsname\relax%
\advance\pgf@x by-\pgf@xa\relax%
\expandafter\xdef\csname pgf@matrix@minx\the\c@pgf@counta\endcsname{\the\pgf@x}%
\repeat%
}%
}%
\def\pgf@matrix@shift@nodes@initial{%
{%
\pgfutil@for\pgf@matrix@node@name:=\pgf@matrix@node@list\do{%
\ifx\pgf@matrix@node@name\pgfutil@empty%
\else%
\expandafter\ifx\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname\relax%
\pgf@shift@node{\pgf@matrix@node@name}{%
\pgf@x=\csname pgf@matrix@minx%
\expandafter\expandafter\expandafter\pgfutil@secondoftwo\csname pgf@matrix@node@location@\pgf@matrix@node@name\endcsname\endcsname%
\pgf@y=\csname pgf@matrix@miny%
\expandafter\expandafter\expandafter\pgfutil@firstoftwo\csname pgf@matrix@node@location@\pgf@matrix@node@name\endcsname\endcsname%
}%
\expandafter\let\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname=\pgfutil@empty%
\fi%
\fi%
}%
}%
}%
\def\pgf@matrix@shift@nodes@secondary#1{%
\pgfutil@for\pgf@matrix@node@name:=\pgf@matrix@node@list\do{%
\ifx\pgf@matrix@node@name\pgfutil@empty%
\else%
\expandafter\ifx\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname\relax%
\pgf@shift@node{\pgf@matrix@node@name}{#1}%
\expandafter\let\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname=\pgfutil@empty%
\fi%
\fi%
}%
}%
\def\pgfmatrixendrow{%
\let\pgf@matrix@signal@cell@end=\pgf@matrix@signal@cell@end
\pgf@matrix@last@cell@in@rowtrue%
\xdef\pgf@matrix@rowsep{\pgfmatrixrowsep}%
&\pgf@matrix@correct@calltrue%
\global\pgf@matrix@fixedfalse%
\pgf@y=0pt%
\pgf@matrix@addtolength\pgf@y{\pgf@matrix@rowsep}%
\pgfutil@ifnextchar[{\pgfmatrixendrow@skip}{\pgf@matrix@finish@line}%
}%
\newif\ifpgf@matrix@last@cell@in@row
\def\pgf@matrix@signal@cell@end{\pgf@matrix@signal@cell@end}%
\def\pgfmatrixendrow@skip[#1]{%
\pgf@matrix@addtolength\pgf@y{#1}%
\pgf@matrix@finish@line%
}%
\def\pgf@matrix@finish@line{%
\global\pgf@y=\pgf@y%
\pgf@ya=-\pgf@y%
\global\advance\pgf@ya by\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
\expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@ya}%
\pgfutil@ifnextchar\egroup{\cr\pgf@end@matrix}{\pgf@matrix@no@eom@found}%
}%
\def\pgf@matrix@eom@found{%
\cr%
\pgf@end@matrix%
}%
\def\pgf@matrix@no@eom@found{%
\cr%
\noalign{\vskip\pgf@y%
\ifpgf@matrix@fixed%
\vskip\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
\vskip\pgf@y%
\pgf@y=-\pgf@y%
\expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@y}%
\gdef\pgf@matrix@row@finish{\global\pgf@picmaxy=0pt}%
\else%
\global\let\pgf@matrix@row@finish=\pgfutil@empty%
\fi%
}%
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmodulematrix.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleplot.code.tex ====
\ProvidesFileRCS{pgfmoduleplot.code.tex}
\def\pgfplotstreamstart{\pgf@plotstreamstart}%
\def\pgfplotstreampoint#1{\gdef\pgfplotlastpoint{#1}\pgf@plotstreampoint{#1}}%
\def\pgfplotstreampointoutlier#1{\pgfplot@outliers{}{\pgf@plotstreamjump}{\pgfplotstreampoint{#1}}}%
\def\pgfplotstreampointundefined{\pgfplot@outliers{}{\pgf@plotstreamjump}{}}%
\def\pgfplotstreamnewdataset{\pgfplot@outliers{}{\pgf@plotstreamjump}{}}%
\def\pgfplotstreamspecial{\pgf@plotstreamspecial}%
\def\pgfplotstreamend{\pgf@plotstreamend}%
\def\pgfplot@ignorer#1#2#3{#1}%
\def\pgfplot@jumper#1#2#3{#2}%
\def\pgfplot@plotter#1#2#3{#3}%
\let\pgfplot@outliers\pgfplot@jumper
\let\pgfplot@undefined\pgfplot@jumper
\let\pgfplot@newdata\pgfplot@jumper
\pgfset{
handle outlier points in plots/.is choice,
handle outlier points in plots/ignore/.code=\let\pgfplot@outliers\pgfplot@ignorer,
handle outlier points in plots/jump/.code=\let\pgfplot@outliers\pgfplot@jumper,
handle outlier points in plots/plot/.code=\let\pgfplot@outliers\pgfplot@plotter,
handle undefined points in plots/.is choice,
handle undefined points in plots/ignore/.code=\let\pgfplot@undefined\pgfplot@ignorer,
handle undefined points in plots/jump/.code=\let\pgfplot@undefined\pgfplot@jumper,
handle new data sets in plots/.is choice,
handle new data sets in plots/ignore/.code=\let\pgfplot@newdata\pgfplot@ignorer,
handle new data sets in plots/jump/.code=\let\pgfplot@newdata\pgfplot@jumper,
}%
\def\pgfdeclareplothandler#1#2#3{%
\def#1#2{%
\pgfkeys{%
/pgf/plots/@handler options/.cd,
start=\relax,
end macro=\relax,
point macro=\pgfutil@gobble,
jump macro=\relax,
special macro=\pgfutil@gobble,%
#3%
}%
}%
}%
\pgfkeys{%
/pgf/plots/@handler options/.cd,
start/.code=%
\gdef\pgf@plotstreamstart{%
\global\pgf@plot@startedfalse%
\global\let\pgf@plotstreamend\pgf@plotstreamend@init%
\global\let\pgf@plotstreampoint\pgf@plotstreampoint@init%
\global\let\pgf@plotstreamjump\pgf@plotstreamjump@init%
\global\let\pgf@plotstreamspecial\pgf@plotstreamspecial@init%
#1%
},%
start macro/.code=%
\gdef\pgf@plotstreamstart{%
\global\pgf@plot@startedfalse%
\global\let\pgf@plotstreamend\pgf@plotstreamend@init%
\global\let\pgf@plotstreampoint\pgf@plotstreampoint@init%
\global\let\pgf@plotstreamjump\pgf@plotstreamjump@init%
\global\let\pgf@plotstreamspecial\pgf@plotstreamspecial@init%
#1%
},%
end/.code=\gdef\pgf@plotstreamend@init{#1},
end macro/.code=\global\let\pgf@plotstreamend@init#1,
point/.code=\gdef\pgf@plotstreampoint@init##1{#1},
point macro/.code=\global\let\pgf@plotstreampoint@init#1,
jump/.code=\gdef\pgf@plotstreamjump@init{#1},
jump macro/.code=\global\let\pgf@plotstreamjump@init#1,
special/.code=\gdef\pgf@plotstreamspecial@init##1{#1},
special macro/.code=\global\let\pgf@plotstreamspecial@init#1,
}%
\newif\ifpgf@plot@started
\def\pgfsetlinetofirstplotpoint{\let\pgf@plot@first@action=\pgfpathlineto}%
\def\pgfsetmovetofirstplotpoint{\let\pgf@plot@first@action=\pgfpathmoveto}%
\let\pgf@plot@first@action=\pgfpathmoveto
\pgfdeclareplothandler{\pgfplothandlerlineto}{}{
point macro=\pgf@plot@line@handler,
jump=\global\let\pgf@plotstreampoint\pgf@plot@line@handler@move%
}%
\def\pgf@plot@line@handler#1{%
\pgf@plot@first@action{#1}%
\global\let\pgf@plotstreampoint=\pgfpathlineto%
}%
\def\pgf@plot@line@handler@move#1{%
\pgfpathmoveto{#1}%
\global\let\pgf@plotstreampoint=\pgfpathlineto%
}%
\pgfdeclareplothandler{\pgfplothandlerpolygon}{}{%
point macro=\pgf@plot@line@handler@close,
jump macro=\pgf@plot@next@close@and@moveto,
end macro=\pgf@plot@polygon@stop
}%
\def\pgf@plot@line@handler@close#1{%
\pgfpathmoveto{#1}%
\global\pgf@plot@startedtrue%
\global\let\pgf@plotstreampoint=\pgfpathlineto%
}%
\def\pgf@plot@polygon@stop{%
\ifpgf@plot@started%
\pgfpathclose%
\fi%
\global\pgf@plot@startedfalse%
}%
\def\pgf@plot@next@close@and@moveto{%
\ifpgf@plot@started%
\pgfpathclose%
\fi%
\global\let\pgf@plotstreampoint\pgf@plot@line@handler@close%
}%
\pgfdeclareplothandler{\pgfplothandlerdiscard}{}{}%
\pgfdeclareplothandler{\pgfplothandlerrecord}{#1}{%
start=\gdef#1{\pgfplotstreamstart},
point=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreampoint{##1}},
jump=\expandafter\gdef\expandafter#1\expandafter{#1\pgf@plotstreamjump},
special=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreamspecial{##1}},
end=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreamend},
}%
\def\pgfplotxyfile#1{%
\begingroup%
\def\b@pgfplotsxyfile@scanning@for@first{1}%
\pgfplotstreamstart%
\openin\r@pgf@reada=#1
\ifeof\r@pgf@reada
\pgfwarning{Plot data file `#1' not found.}
\else
\catcode`\#=14
\catcode`\^^M=5
\pgf@readxyfile%
\fi
\pgfplotstreamend%
\endgroup%
}%
\let\pgf@savedpar=\par
\def\pgf@partext{\par}%
\def\pgf@readxyfile{%
\pgfutil@read\r@pgf@reada to \pgf@temp%
\let\par=\pgf@savedpar%
\edef\pgf@temp{\pgf@temp}%
\ifx\pgf@temp\pgfutil@empty%
\if1\b@pgfplotsxyfile@scanning@for@first
\else
\ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
\fi
\else\ifx\pgf@temp\pgf@partext%
\if1\b@pgfplotsxyfile@scanning@for@first
\else
\ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
\fi
\else%
\expandafter\pgf@parsexyline\pgf@temp\pgf@stop%
\fi\fi%
\ifeof\r@pgf@reada\else\expandafter\pgf@readxyfile\fi%
}%
\def\pgf@parsexyline#1 #2 #3\pgf@stop{%
\def\b@pgfplotsxyfile@scanning@for@first{0}%
\edef\pgf@xyline@flag@val{#3}%
\ifx\pgf@xyline@flag@val\pgf@xyline@flag@undef%
\pgfplotstreampointundefined%
\else\ifx\pgf@xyline@flag@val\pgf@xyline@flag@out%
\pgfplotstreampointoutlier{\pgfpointxy{#1}{#2}}%
\else%
\pgfplotstreampoint{\pgfpointxy{#1}{#2}}%
\fi\fi%
}%
\edef\pgf@xyline@flag@out{o\space}%
\edef\pgf@xyline@flag@undef{u\space}%
\def\pgfplotxyzfile#1{%
\begingroup%
\pgfplotstreamstart%
\openin\r@pgf@reada=#1
\ifeof\r@pgf@reada
\pgfwarning{Plot data file `#1' not found.}
\else
\catcode`\#=14
\catcode`\^^M=5
\pgf@readxyzfile%
\fi
\pgfplotstreamend%
\endgroup%
}%
\def\pgf@readxyzfile{%
\pgfutil@read\r@pgf@reada to \pgf@temp%
\ifx\pgf@temp\pgfutil@empty%
\if1\b@pgfplotsxyfile@scanning@for@first
\else
\ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
\fi
\else\ifx\pgf@temp\pgf@partext%
\if1\b@pgfplotsxyfile@scanning@for@first
\else
\ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
\fi
\else%
\expandafter\pgf@parsexyzline\pgf@temp\pgf@stop%
\fi\fi%
\ifeof\r@pgf@reada\else\expandafter\pgf@readxyzfile\fi%
}%
\def\pgf@parsexyzline#1 #2 #3 #4\pgf@stop{%
\def\b@pgfplotsxyfile@scanning@for@first{0}%
\edef\pgf@xyline@flag@val{#4}%
\ifx\pgf@xyline@flag@val\pgf@xyline@flag@undef%
\pgfplotstreampointundefined%
\else\ifx\pgf@xyline@flag@val\pgf@xyline@flag@out%
\pgfplotstreampointoutlier{\pgfpointxyz{#1}{#2}{#3}}%
\else%
\pgfplotstreampoint{\pgfpointxyz{#1}{#2}{#3}}%
\fi\fi%
}%
{%
\catcode`\%=12
\catcode`\"=12
\xdef\pgf@gnuplot@head{set table \noexpand\pgf@plottablefile@quoted; set format "%.5f"}
}%
\let\pgf@plotwrite=\w@pgf@writea
\newif\ifpgf@resample@plot
\pgfkeys{%
/pgf/plot/gnuplot call/.initial={gnuplot}}%
\def\pgfplotgnuplot{\pgfutil@ifnextchar[{\pgf@plotgnuplot}{\pgf@plotgnuplot[\jobname]}}%
\def\pgf@plotgnuplot[#1]#2{%
\pgf@resample@plottrue%
\pgfutilpreparefilename{#1.gnuplot}%
\let\pgf@plotgnuplotfile=\pgfretval
\pgfutilpreparefilename{#1.table}%
\let\pgf@plottablefile=\pgfretval
\let\pgf@plottablefile@quoted=\pgfretvalquoted
\openin\pgfutil@inputcheck=\pgf@plotgnuplotfile\relax
\ifeof\pgfutil@inputcheck%
\else%
\pgfutil@read\pgfutil@inputcheck to\pgf@temp%
\pgfutil@read\pgfutil@inputcheck to\pgf@plot@line%
\closein\pgfutil@inputcheck
\edef\pgf@plot@code{#2\space}%
\ifx\pgf@plot@code\pgf@plot@line%
\openin\pgfutil@inputcheck=\pgfretval\relax
\ifeof\pgfutil@inputcheck%
\else%
\closein\pgfutil@inputcheck
\pgf@resample@plotfalse%
\fi%
\fi%
\fi
\ifpgf@resample@plot%
\immediate\openout\pgf@plotwrite=\pgf@plotgnuplotfile\relax
\immediate\pgfutil@write\pgf@plotwrite{\pgf@gnuplot@head}%
\immediate\pgfutil@write\pgf@plotwrite{#2}%
\immediate\closeout\pgf@plotwrite%
\pgfutil@shellescape{%
\pgfkeysvalueof{/pgf/plot/gnuplot call} \pgf@plotgnuplotfile}%
\fi%
\pgfplotxyfile{\pgf@plottablefile}%
}%
\def\pgfplotfunction#1#2#3{%
\pgfplotstreamstart%
\foreach#1in{#2}%
{%
\pgf@process{#3}%
\edef\pgf@marshal{\noexpand\pgfplotstreampoint{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
\pgf@marshal%
}
\pgfplotstreamend%
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleplot.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleshapes.code.tex ====
\ProvidesFileRCS{pgfmoduleshapes.code.tex}
\newbox\pgfnodeparttextbox
\def\pgfmultipartnode#1#2#3#4{%
\pgfutil@ifundefined{pgf@sh@s@#1}%
{\pgferror{Unknown shape ``#1''}}%
{%
{%
\ifpgflatenodepositioning%
\pgfsys@beginscope%
\fi%
\pgf@outer@adjust@hook%
\let\pgf@sh@savedmacros=\pgfutil@empty%
\let\pgf@sh@savedpoints=\pgfutil@empty%
\def\pgf@sm@shape@name{#1}%
\csname pgf@sh@s@#1\endcsname%
\pgf@sh@savedpoints%
\pgf@sh@savedmacros%
\pgftransformshift{%
\pgf@sh@reanchor{#1}{#2}%
\pgf@x=-\pgf@x%
\pgf@y=-\pgf@y%
}%
\expandafter\pgfsavepgf@process\csname pgf@sh@sa@#3\endcsname{%
\pgf@sh@reanchor{#1}{#2}%
}%
\edef\pgf@node@name{#3}%
\ifpgflatenodepositioning%
\pgf@shapes@late@pos@begin%
\fi%
\ifx\pgf@node@name\pgfutil@empty%
\else%
\expandafter\xdef\csname pgf@sh@ns@\pgf@node@name\endcsname{#1}%
\edef\pgf@sh@@temp{\noexpand\gdef\expandafter\noexpand\csname pgf@sh@np@\pgf@node@name\endcsname}%
\expandafter\pgf@sh@@temp\expandafter{\pgf@sh@savedpoints}%
\edef\pgf@sh@@temp{\noexpand\gdef\expandafter\noexpand\csname pgf@sh@ma@\pgf@node@name\endcsname}%
\expandafter\pgf@sh@@temp\expandafter{\pgf@sh@savedmacros}%
\pgfgettransform\pgf@temp%
\expandafter\xdef\csname pgf@sh@nt@\pgf@node@name\endcsname{\pgf@temp}%
\expandafter\xdef\csname pgf@sh@pi@\pgf@node@name\endcsname{\pgfpictureid}%
\fi%
\pgfutil@ifundefined{pgf@sh@bbg@#1}{}
{{\pgfusetype{.behind background}\pgfidscope\pgfscope\csname pgf@sh@bbg@#1\endcsname\endpgfscope\endpgfidscope}}%
\pgfutil@ifundefined{pgf@sh@bg@#1}{%
\global\let\pgfpositionnodelaterpath\pgfutil@empty%
}%
{\pgfpushtype%
\pgfusetype{.background}\csname pgf@sh@bg@#1\endcsname%
\ifpgflatenodepositioning%
\pgfsyssoftpath@getcurrentpath\pgfpositionnodelaterpath%
\pgfprocessround{\pgfpositionnodelaterpath}{\pgfpositionnodelaterpath}%
\global\let\pgfpositionnodelaterpath\pgfpositionnodelaterpath%
\fi%
#4\pgfpoptype}%
\pgfutil@ifundefined{pgf@sh@fbg@#1}{}
{{\pgfusetype{.before background}\pgfidscope\pgfscope\csname pgf@sh@fbg@#1\endcsname\endpgfscope\endpgfidscope}}%
{%
\expandafter\pgfutil@for\expandafter\pgf@shape@com\expandafter:\expandafter=\csname pgf@sh@boxes@#1\endcsname\do{%
{%
\pgfusetype{.\pgf@shape@com}%
\pgftransformshift{\pgf@sh@reanchor{#1}{\pgf@shape@com}}%
\pgfapproximatenonlineartransformation%
\expandafter\pgfqboxsynced\expandafter{\csname pgfnodepart\pgf@shape@com box\endcsname}%
}%
}%
}%
\pgfutil@ifundefined{pgf@sh@bfg@#1}{}%
{{\pgfusetype{.behind foreground}\pgfidscope\pgfscope\csname pgf@sh@bfg@#1\endcsname\endpgfscope\endpgfidscope}}%
\pgfutil@ifundefined{pgf@sh@fg@#1}{}%
{\pgfpushtype\pgfusetype{.foreground}\csname pgf@sh@fg@#1\endcsname#4\pgfpoptype}%
\pgfutil@ifundefined{pgf@sh@ffg@#1}{}%
{{\pgfusetype{.before foreground}\pgfidscope\pgfscope\csname pgf@sh@ffg@#1\endcsname\endpgfscope\endpgfidscope}}%
\ifpgflatenodepositioning%
\pgf@shapes@late@pos@end%
\pgfsys@endscope%
\else%
\expandafter\pgf@nodecallback\expandafter{\pgf@node@name}%
\fi%
}%
}%
}%
\let\pgf@outer@adjust@hook\relax
\def\pgf@shapes@late@pos@begin{%
\edef\pgf@node@name{not yet positionedPGFINTERNAL\pgf@node@name}%
\pgfinterruptboundingbox%
\pgf@relevantforpicturesizetrue%
\setbox\pgfpositionnodelaterbox=\hbox%
\bgroup%
\pgfsys@beginscope%
}%
\def\pgf@shapes@late@pos@end{%
\pgfsys@endscope%
\egroup%
\ifdim\pgf@picminx>\pgf@picmaxx\relax%
\def\pgfpositionnodelaterminx{0.0pt}%
\let\pgfpositionnodelaterminy\pgfpositionnodelaterminx%
\let\pgfpositionnodelatermaxx\pgfpositionnodelaterminx%
\let\pgfpositionnodelatermaxy\pgfpositionnodelaterminx%
\else%
\edef\pgfpositionnodelaterminx{\the\pgf@picminx}%
\edef\pgfpositionnodelaterminy{\the\pgf@picminy}%
\edef\pgfpositionnodelatermaxx{\the\pgf@picmaxx}%
\edef\pgfpositionnodelatermaxy{\the\pgf@picmaxy}%
\fi%
\let\pgfpositionnodelatername=\pgf@node@name%
\pgf@positionnodelater@macro%
\endpgfinterruptboundingbox%
}%
\def\pgf@shift@node#1#2{%
{%
\pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
\pgf@process{#2}%
\advance\pgf@pt@x by\pgf@x%
\advance\pgf@pt@y by\pgf@y%
\pgfgettransform{\pgf@temp}%
\expandafter\xdef\csname pgf@sh@nt@#1\endcsname{\pgf@temp}%
}%
}%
\def\pgfnode#1#2#3#4#5{%
{%
\setbox\pgfnodeparttextbox=\hbox%
{%
\pgfinterruptpicture%
{#3}%
\endpgfinterruptpicture%
}%
\pgfmultipartnode{#1}{#2}{#4}{#5}%
}
}%
\def\pgfpositionnodelater#1{%
\let\pgf@positionnodelater@macro=#1%
\ifx\pgf@positionnodelater@macro\relax%
\pgflatenodepositioningfalse%
\else%
\pgflatenodepositioningtrue%
\fi%
}%
\newif\ifpgflatenodepositioning
\pgfpositionnodelater{\relax}%
\def\pgfpositionnodelaterbox{0}%
\def\pgfpositionnodenow#1{%
\pgfinterruptpath%
{%
\pgfpointtransformed{#1}%
\edef\pgf@temp@shift{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
\pgftransformreset%
\pgftransformshift{\pgf@temp@shift}%
\pgfsys@pictureboxsynced\pgfpositionnodelaterbox%
\pgf@shift@node{\pgfpositionnodelatername}{\pgf@temp@shift}%
\pgfpointtransformed{\pgfqpoint{\pgfpositionnodelaterminx}{\pgfpositionnodelaterminy}}%
\pgf@protocolsizes{\pgf@x}{\pgf@y}
\pgfpointtransformed{\pgfqpoint{\pgfpositionnodelatermaxx}{\pgfpositionnodelatermaxy}}%
\pgf@protocolsizes{\pgf@x}{\pgf@y}
\expandafter\pgfpositionnodenow@rename\pgfpositionnodelatername\relax%
}%
{%
\csname pgf@lns@\pgfpositionnodelatername\endcsname%
\expandafter\global\expandafter\let\csname pgf@lns@\pgfpositionnodelatername\endcsname\relax%
}%
\endpgfinterruptpath%
}%
\def\pgfpositionnodenow@rename not yet positionedPGFINTERNAL#1\relax{%
\pgfnoderename{#1}{not yet positionedPGFINTERNAL#1}
}%
\def\pgffakenode#1{%
\edef\pgf@temp{\ifpgflatenodepositioning not yet positionedPGFINTERNAL\fi#1}%
\expandafter\gdef\csname pgf@sh@ns@\pgf@temp\endcsname{coordinate}%
\expandafter\gdef\csname pgf@sh@np@\pgf@temp\endcsname{\def\centerpoint{\pgfpointorigin}}%
\expandafter\gdef\csname pgf@sh@nt@\pgf@temp\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\global\expandafter\let\csname pgf@sh@ma@\pgf@temp\endcsname\pgfutil@empty%
\expandafter\xdef\csname pgf@sh@pi@\pgf@temp\endcsname{\pgfpictureid}%
}%
\def\pgfnodepostsetupcode#1#2{%
\ifpgflatenodepositioning%
\expandafter\ifx\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname\relax%
\expandafter\gdef\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname{#2}%
\else%
\expandafter\pgfutil@g@addto@macro\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname{#2}%
\fi%
\fi%
}%
\def\pgfnodealias#1#2{%
\pgf@node@gnamelet{pgf@sh@ns@#1}{pgf@sh@ns@#2}%
\pgf@node@gnamelet{pgf@sh@np@#1}{pgf@sh@np@#2}%
\pgf@node@gnamelet{pgf@sh@nt@#1}{pgf@sh@nt@#2}%
\pgf@node@gnamelet{pgf@sh@pi@#1}{pgf@sh@pi@#2}%
\pgf@node@gnamelet{pgf@sh@ma@#1}{pgf@sh@ma@#2}%
\pgf@nodecallback{#1}%
}%
\def\pgf@node@gnamelet#1#2{%
\expandafter\let\expandafter\pgf@temp\csname #2\endcsname%
\expandafter\global\expandafter\let\csname #1\endcsname=\pgf@temp%
}%
\def\pgfnoderename#1#2{%
\pgfnodealias{#1}{#2}%
\expandafter\global\expandafter\let\csname pgf@sh@ns@#2\endcsname\relax
\expandafter\global\expandafter\let\csname pgf@sh@np@#2\endcsname\relax
\expandafter\global\expandafter\let\csname pgf@sh@nt@#2\endcsname\relax
\expandafter\global\expandafter\let\csname pgf@sh@pi@#2\endcsname\relax
\expandafter\global\expandafter\let\csname pgf@sh@ma@#2\endcsname\relax
}%
\def\pgfcoordinate#1#2{%
\edef\pgf@temp{#1}%
\ifx\pgf@temp\pgfutil@empty%
\else%
\ifpgflatenodepositioning%
{\pgftransformshift{#2}\pgfnode{coordinate}{center}{}{#1}{}}%
\else%
\pgf@process{\pgfpointtransformed{#2}}%
\expandafter\gdef\csname pgf@sh@ns@#1\endcsname{coordinate}%
\expandafter\xdef\csname pgf@sh@np@#1\endcsname{%
\noexpand\def\noexpand\centerpoint{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
}
\expandafter\gdef\csname pgf@sh@nt@#1\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\global\expandafter\let\csname pgf@sh@ma@#1\endcsname\pgfutil@empty%
\expandafter\xdef\csname pgf@sh@pi@#1\endcsname{\pgfpictureid}%
\fi%
\fi%
}%
\def\pgf@sh@redeferredanchor#1#2{%
\expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @#1\endcsname{#2}}%
\def\pgf@sh@resavedanchor#1#2{%
\pgf@process{#2}%
\edef\pgf@sh@marshal{%
\noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedpoints{%
\noexpand\def\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
}}%
\pgf@sh@marshal%
}%
\def\pgf@sh@resaveddimen#1#2{%
{#2\global\pgf@x=\pgf@x}%
\edef\pgf@sh@marshal{%
\noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedpoints{%
\noexpand\def\noexpand#1{\the\pgf@x}%
}}%
\pgf@sh@marshal%
}%
\def\pgf@sh@resavedmacro#1#2{%
\let#1\pgfutil@empty%
\def\addtosavedmacro##1{%
\expandafter\def\expandafter\pgf@sh@addtomacro@temp\expandafter{#1\noexpand\def\noexpand##1{##1}}%
{\expandafter\pgfutil@toks@\expandafter{\pgf@sh@addtomacro@temp}\expandafter}%
\expandafter\def\expandafter#1\expandafter{\the\pgfutil@toks@}%
}%
#2\relax%
\edef\pgf@sh@marshal{%
\noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedmacros{%
\noexpand\def\noexpand#1{#1}%
}}%
\pgf@sh@marshal%
}%
\def\pgf@sh@reanchor#1#2{%
\pgfutil@ifundefined{pgf@anchor@#1@#2}%
{%
\pgfutil@ifundefined{pgf@anchor@generic@#2}{%
\pgfmathsetcounter{pgf@counta}{#2}%
\csname pgf@anchor@#1@border\endcsname{\pgfqpointpolar{\the\c@pgf@counta}{1pt}}%
}{%
\csname pgf@anchor@generic@#2\endcsname{#1}%
}%
}%
{\csname pgf@anchor@#1@#2\endcsname}%
}%
\def\pgfdeclaregenericanchor#1#2{%
\expandafter\def\csname pgf@anchor@generic@#1\endcsname##1{#2}%
}%
\def\pgfpointanchor#1#2{%
\pgfutil@ifundefined{pgf@sh@ns@#1}
{\pgfutil@ifundefined{pgf@sh@ns@not yet positionedPGFINTERNAL#1}{%
\pgferror{No shape named `#1' is known}}{
}%
\pgfpointorigin}%
{%
\pgf@process{%
\edef\pgfreferencednodename{#1}%
\csname pgf@sh@ma@#1\endcsname%
\csname pgf@sh@np@#1\endcsname
\pgf@sh@reanchor{\csname pgf@sh@ns@#1\endcsname}{#2}%
{%
\pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
\pgf@pos@transform@glob%
}%
\pgf@shape@interpictureshift{#1}%
\pgftransforminvert%
\pgf@pos@transform@glob%
}%
}%
}%
\def\pgf@shape@interpictureshift#1{%
\expandafter\ifx\csname pgf@sh@pi@#1\endcsname\pgfpictureid%
\else%
\pgfsys@getposition{\csname pgf@sh@pi@#1\endcsname}\pgf@shape@original@pos%
\pgfsys@getposition{\pgfpictureid}\pgf@shape@current@pos%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgfpointorigin\pgf@shape@current@pos}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@process{\pgfpointorigin\pgf@shape@original@pos}%
\advance\pgf@xa by\pgf@x%
\advance\pgf@ya by\pgf@y%
\pgf@x=\pgf@xa%
\pgf@y=\pgf@ya%
\fi%
}%
\def\pgfpointshapeborder#1#2{%
\pgfutil@ifundefined{pgf@sh@ns@#1}
{\pgferror{No shape named `#1' is known}%
\pgfpointorigin}%
{%
\pgf@process{%
\edef\pgfreferencednodename{#1}%
\csname pgf@sh@ma@#1\endcsname%
\csname pgf@sh@np@#1\endcsname%
{%
\pgf@process{\pgfpointtransformed{#2}}%
\pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
\pgftransforminvert%
\pgf@pos@transform@glob%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\csname pgf@anchor@\csname pgf@sh@ns@#1\endcsname @center\endcsname}%
\pgf@process{\pgf@shape@interpictureshift{#1}}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgf@xb=10pt
\ifdim\pgf@xa<1pt\ifdim\pgf@xa>-1pt
\pgf@xb=10\pgf@xa
\fi\fi
\pgf@yb=10pt
\ifdim\pgf@ya<1pt\ifdim\pgf@ya>-1pt
\pgf@yb=10\pgf@ya
\fi\fi
\ifdim\dimexpr\expandafter\Pgf@geT\the\pgf@xb\pgf@xb
+\expandafter\Pgf@geT\the\pgf@yb\pgf@yb\relax<0.04pt
\expandafter\pgfutil@firstoftwo
\else
\expandafter\pgfutil@secondoftwo
\fi
{%
\pgfwarning
{Returning node center instead of a point on node border. Did you
specify a point identical to the center of node
``\pgfreferencednodename''?}%
\pgf@sh@reanchor{\csname pgf@sh@ns@#1\endcsname}{center}%
}
{%
\csname pgf@anchor@\csname pgf@sh@ns@#1\endcsname @border\endcsname
{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%
\pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
\pgf@pos@transform@glob%
\global\pgf@x=\pgf@x%
\global\pgf@y=\pgf@y%
}%
\pgf@shape@interpictureshift{#1}%
\pgftransforminvert%
\pgf@pos@transform@glob%
}%
}%
}%
\def\pgfgetnodeparts#1#2{%
\expandafter\let\expandafter#1\csname pgf@sh@boxes@#2\endcsname%
}%
\long\def\pgfdeclareshape#1#2{%
{%
\def\pgf@sm@shape@name{#1}%
\let\savedanchor=\pgf@sh@savedanchor
\let\saveddimen=\pgf@sh@saveddimen
\let\savedmacro=\pgf@sh@savedmacro%
\let\deferredanchor=\pgf@sh@deferredanchor%
\let\anchor=\pgf@sh@anchor
\let\anchorborder=\pgf@sh@anchorborder
\let\behindbackgroundpath=\pgf@sh@behindbgpath
\let\backgroundpath=\pgf@sh@bgpath
\let\beforebackgroundpath=\pgf@sh@beforebgpath
\let\behindforegroundpath=\pgf@sh@behindfgpath
\let\foregroundpath=\pgf@sh@fgpath
\let\beforeforegroundpath=\pgf@sh@beforefgpath
\let\nodeparts=\pgf@sh@boxes
\let\inheritsavedanchors=\pgf@sh@inheritsavedanchors
\let\inheritanchor=\pgf@sh@inheritanchor
\let\inheritanchorborder=\pgf@sh@inheritanchorborder
\let\inheritbehindbackgroundpath=\pgf@sh@inheritbehindbgpath
\let\inheritbackgroundpath=\pgf@sh@inheritbgpath
\let\inheritbeforebackgroundpath=\pgf@sh@inheritbeforebgpath
\let\inheritbehindforegroundpath=\pgf@sh@inheritbehindfgpath
\let\inheritforegroundpath=\pgf@sh@inheritfgpath
\let\inheritbeforeforegroundpath=\pgf@sh@inheritbeforefgpath
\let\inheritnodeparts=\pgf@sh@inheritboxes
\anchorborder{\csname pgf@anchor@#1@center\endcsname}%
\anchor{text}{\pgfpointorigin}%
\nodeparts{text}%
\expandafter\global\expandafter\let\csname pgf@sh@s@\pgf@sm@shape@name\endcsname=\pgfutil@empty%
#2%
}%
}%
\def\pgf@sh@savedanchor#1#2{%
\expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resavedanchor{#1}{#2}}}%
\def\pgf@sh@saveddimen#1#2{%
\expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resaveddimen{#1}{#2}}}%
\def\pgf@sh@savedmacro#1#2{%
\expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resavedmacro{#1}{#2}}}%
\def\pgf@sh@anchor#1#2{\expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @#1\endcsname{#2}}%
\def\pgf@sh@deferredanchor#1#2{%
\expandafter\pgfutil@g@addto@macro
\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@redeferredanchor{#1}{#2}}}%
\def\pgf@sh@anchorborder#1{\expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @border\endcsname##1{\pgf@process{##1}#1}}%
\long\def\pgf@sh@behindbgpath#1{\expandafter\gdef\csname pgf@sh@bbg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@bgpath#1{\expandafter\gdef\csname pgf@sh@bg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@beforebgpath#1{\expandafter\gdef\csname pgf@sh@fbg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@behindfgpath#1{\expandafter\gdef\csname pgf@sh@bfg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@fgpath#1{\expandafter\gdef\csname pgf@sh@fg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@beforefgpath#1{\expandafter\gdef\csname pgf@sh@ffg@\pgf@sm@shape@name\endcsname{#1}}%
\def\pgf@sh@boxes#1{\expandafter\gdef\csname pgf@sh@boxes@\pgf@sm@shape@name\endcsname{#1}}%
\def\pgf@sh@inheritsavedanchors[from=#1]{%
\expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\csname pgf@sh@s@#1\endcsname}}%
\def\pgf@sh@inheritanchor[from=#1]#2{%
\edef\pgf@marshal{\global\let\expandafter\noexpand\csname
pgf@anchor@\pgf@sm@shape@name @#2\endcsname=\expandafter\noexpand\csname
pgf@anchor@#1@#2\endcsname}%
\pgf@marshal%
}%
\def\pgf@sh@inheritanchorborder[from=#1]{%
\edef\pgf@marshal{\global\let\expandafter\noexpand\csname
pgf@anchor@\pgf@sm@shape@name @border\endcsname=\expandafter\noexpand\csname
pgf@anchor@#1@border\endcsname}%
\pgf@marshal%
}%
\def\pgf@sh@inheritor#1#2{%
\edef\pgf@marshal{\global\let\expandafter\noexpand\csname
pgf@sh@#1@\pgf@sm@shape@name\endcsname=\expandafter\noexpand\csname
pgf@sh@#1@#2\endcsname}%
\pgf@marshal%
}%
\def\pgf@sh@inheritbehindbgpath[from=#1]{\pgf@sh@inheritor{bbg}{#1}}%
\def\pgf@sh@inheritbgpath[from=#1]{\pgf@sh@inheritor{bg}{#1}}%
\def\pgf@sh@inheritbeforebgpath[from=#1]{\pgf@sh@inheritor{fbg}{#1}}%
\def\pgf@sh@inheritbehindfgpath[from=#1]{\pgf@sh@inheritor{bfg}{#1}}%
\def\pgf@sh@inheritfgpath[from=#1]{\pgf@sh@inheritor{fg}{#1}}%
\def\pgf@sh@inheritbeforefgpath[from=#1]{\pgf@sh@inheritor{ffg}{#1}}%
\def\pgf@sh@inheritboxes[from=#1]{\pgf@sh@inheritor{boxes}{#1}}%
\pgfdeclareshape{coordinate}
{%
\savedanchor\centerpoint{%
\pgf@x=.5\wd\pgfnodeparttextbox%
\pgf@y=.5\ht\pgfnodeparttextbox%
\advance\pgf@y by -.5\dp\pgfnodeparttextbox%
}%
\anchor{center}{\centerpoint}%
\anchor{north}{\centerpoint}%
\anchor{north west}{\centerpoint}%
\anchor{north east}{\centerpoint}%
\anchor{west}{\centerpoint}%
\anchor{east}{\centerpoint}%
\anchor{mid}{\centerpoint}%
\anchor{mid west}{\centerpoint}%
\anchor{mid east}{\centerpoint}%
\anchor{base}{\centerpoint}%
\anchor{base west}{\centerpoint}%
\anchor{base east}{\centerpoint}%
\anchor{south}{\centerpoint}%
\anchor{south west}{\centerpoint}%
\anchor{south east}{\centerpoint}%
\anchorborder{\centerpoint}%
\nodeparts{}%
}%
\pgfset{
inner xsep/.initial =.3333em,
inner ysep/.initial =.3333em,
inner sep/.style ={/pgf/inner xsep={#1},/pgf/inner ysep={#1}},
outer xsep/.initial =.5\pgflinewidth,
outer ysep/.initial =.5\pgflinewidth,
outer sep/.code =\pgf@handle@outer@sep{#1},
minimum width/.initial =1pt,
minimum height/.initial =1pt,
minimum size/.style ={/pgf/minimum width={#1},/pgf/minimum height={#1}},
}%
\def\pgf@handle@outer@sep#1{%
\def\pgf@temp{#1}%
\ifx\pgf@temp\pgf@auto@text%
\def\pgf@outer@adjust@hook{%
\pgftransformationadjustments%
\pgfkeyssetvalue{/pgf/outer xsep}{.5\pgflinewidth*\pgfhorizontaltransformationadjustment}%
\pgfkeyssetvalue{/pgf/outer ysep}{.5\pgflinewidth*\pgfverticaltransformationadjustment}%
\pgf@outer@auto@adjust@hook%
}%
\else%
\pgfkeyssetvalue{/pgf/outer xsep}{#1}%
\pgfkeyssetvalue{/pgf/outer ysep}{#1}%
\fi%
}%
\def\pgf@auto@text{auto}%
\let\pgf@outer@auto@adjust@hook\relax
\newif\ifpgfshapeborderusesincircle
\pgfkeys{/pgf/shape border uses incircle/.is if=pgfshapeborderusesincircle}%
\pgfkeys{/pgf/shape border rotate/.initial=0}%
\pgfdeclareshape{rectangle}
{%
\savedanchor\northeast{%
\pgf@x=\the\wd\pgfnodeparttextbox%
\pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
\advance\pgf@x by 2\pgf@xc%
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
\ifdim\pgf@x<\pgf@xb%
\pgf@x=\pgf@xb%
\fi%
\pgf@x=.5\pgf@x%
\advance\pgf@x by.5\wd\pgfnodeparttextbox%
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
\advance\pgf@x by\pgf@xa%
\pgf@y=\ht\pgfnodeparttextbox%
\advance\pgf@y by\dp\pgfnodeparttextbox%
\pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
\advance\pgf@y by 2\pgf@yc%
\pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
\ifdim\pgf@y<\pgf@yb%
\pgf@y=\pgf@yb%
\fi%
\pgf@y=.5\pgf@y%
\advance\pgf@y by-.5\dp\pgfnodeparttextbox%
\advance\pgf@y by.5\ht\pgfnodeparttextbox%
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
\advance\pgf@y by\pgf@ya%
}%
\savedanchor\southwest{%
\pgf@x=\wd\pgfnodeparttextbox%
\pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
\advance\pgf@x by 2\pgf@xc%
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
\ifdim\pgf@x<\pgf@xb%
\pgf@x=\pgf@xb%
\fi%
\pgf@x=-.5\pgf@x%
\advance\pgf@x by.5\wd\pgfnodeparttextbox%
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
\advance\pgf@x by-\pgf@xa%
\pgf@y=\ht\pgfnodeparttextbox%
\advance\pgf@y by\dp\pgfnodeparttextbox%
\pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
\advance\pgf@y by 2\pgf@yc%
\pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
\ifdim\pgf@y<\pgf@yb%
\pgf@y=\pgf@yb%
\fi%
\pgf@y=-.5\pgf@y%
\advance\pgf@y by-.5\dp\pgfnodeparttextbox%
\advance\pgf@y by.5\ht\pgfnodeparttextbox%
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
\advance\pgf@y by-\pgf@ya%
}%
\anchor{center}{
\pgf@process{\northeast}%
\pgf@xa=.5\pgf@x%
\pgf@ya=.5\pgf@y%
\pgf@process{\southwest}%
\pgf@x=.5\pgf@x%
\pgf@y=.5\pgf@y%
\advance\pgf@x by \pgf@xa%
\advance\pgf@y by \pgf@ya%
}%
\anchor{mid}{\pgf@anchor@rectangle@center\pgfmathsetlength\pgf@y{.5ex}}%
\anchor{base}{\pgf@anchor@rectangle@center\pgf@y=0pt}%
\anchor{north}{
\pgf@process{\southwest}%
\pgf@xa=.5\pgf@x%
\pgf@process{\northeast}%
\pgf@x=.5\pgf@x%
\advance\pgf@x by \pgf@xa%
}%
\anchor{south}{
\pgf@process{\northeast}%
\pgf@xa=.5\pgf@x%
\pgf@process{\southwest}%
\pgf@x=.5\pgf@x%
\advance\pgf@x by \pgf@xa%
}%
\anchor{west}{
\pgf@process{\northeast}%
\pgf@ya=.5\pgf@y%
\pgf@process{\southwest}%
\pgf@y=.5\pgf@y%
\advance\pgf@y by \pgf@ya%
}%
\anchor{mid west}{\southwest\pgfmathsetlength\pgf@y{.5ex}}%
\anchor{base west}{\southwest\pgf@y=0pt}%
\anchor{north west}{
\southwest
\pgf@xa=\pgf@x
\northeast
\pgf@x=\pgf@xa}%
\anchor{south west}{\southwest}%
\anchor{east}{%
\pgf@process{\southwest}%
\pgf@ya=.5\pgf@y%
\pgf@process{\northeast}%
\pgf@y=.5\pgf@y%
\advance\pgf@y by \pgf@ya%
}%
\anchor{mid east}{\northeast\pgfmathsetlength\pgf@y{.5ex}}%
\anchor{base east}{\northeast\pgf@y=0pt}%
\anchor{north east}{\northeast}%
\anchor{south east}{
\northeast
\pgf@xa=\pgf@x
\southwest
\pgf@x=\pgf@xa
}%
\anchorborder{%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\southwest%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\northeast%
\advance\pgf@x by-\pgf@xa%
\advance\pgf@y by-\pgf@ya%
\pgf@xc=.5\pgf@x%
\pgf@yc=.5\pgf@y%
\advance\pgf@xa by\pgf@xc%
\advance\pgf@ya by\pgf@yc%
\edef\pgf@marshal{%
\noexpand\pgfpointborderrectangle
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}
{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%
\pgf@process{\pgf@marshal}%
\advance\pgf@x by\pgf@xa%
\advance\pgf@y by\pgf@ya%
}%
\backgroundpath{
\pgfpathrectanglecorners
{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
}%
}%
\expandafter\def\csname pgf@sh@ns@current subpath start\endcsname{coordinate}%
\expandafter\def\csname pgf@sh@np@current subpath start\endcsname{%
\def\centerpoint{\expandafter\pgfqpoint\pgfsyssoftpath@lastmoveto}%
}%
\expandafter\def\csname pgf@sh@nt@current subpath start\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current subpath start\endcsname{\pgfpictureid}%
\expandafter\def\csname pgf@sh@ns@current bounding box\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current bounding box\endcsname{%
\def\southwest{\pgfqpoint{\pgf@picminx}{\pgf@picminy}}%
\def\northeast{\pgfqpoint{\pgf@picmaxx}{\pgf@picmaxy}}%
}%
\expandafter\def\csname pgf@sh@nt@current bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current bounding box\endcsname{\pgfpictureid}%
\expandafter\def\csname pgf@sh@ns@current path bounding box\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current path bounding box\endcsname{%
\def\southwest{\pgfqpoint{\pgf@pathminx}{\pgf@pathminy}}%
\def\northeast{\pgfqpoint{\pgf@pathmaxx}{\pgf@pathmaxy}}%
}%
\expandafter\def\csname pgf@sh@nt@current path bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current path bounding box\endcsname{\pgfpictureid}%
\expandafter\def\csname pgf@sh@ns@current page\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current page\endcsname{%
\def\southwest{\pgfpointorigin}%
\def\northeast{\pgfpoint{\pgfsys@thepagewidth}{\pgfsys@thepageheight}}%
}%
\expandafter\def\csname pgf@sh@nt@current page\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current page\endcsname{pgfpageorigin}%
\pgfkeys{/pgf/local bounding box/.code={%
\expandafter\gdef\csname pgf@sh@ns@#1\endcsname{rectangle}
\expandafter\gdef\csname pgf@sh@np@#1\endcsname{%
\def\southwest{\pgfqpoint{\csname pgf@lbb@minx@#1\endcsname}{\csname pgf@lbb@miny@#1\endcsname}}%
\def\northeast{\pgfqpoint{\csname pgf@lbb@maxx@#1\endcsname}{\csname pgf@lbb@maxy@#1\endcsname}}%
}
\expandafter\gdef\csname pgf@sh@nt@#1\endcsname{{1}{0}{0}{1}{0pt}{0pt}}
\expandafter\gdef\csname pgf@sh@pi@#1\endcsname{\pgfpictureid}
\expandafter\gdef\csname pgf@lbb@maxx@#1\endcsname{-16000pt}%
\expandafter\gdef\csname pgf@lbb@minx@#1\endcsname{16000pt}%
\expandafter\gdef\csname pgf@lbb@maxy@#1\endcsname{-16000pt}%
\expandafter\gdef\csname pgf@lbb@miny@#1\endcsname{16000pt}%
\pgf@size@hookedtrue%
\expandafter\def\expandafter\pgf@path@size@hook\expandafter{\pgf@path@size@hook\pgf@lbb@do{#1}}
},
/pgf/freeze local bounding box/.code={%
{%
\csname pgf@sh@np@#1\endcsname%
\southwest%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\northeast%
\expandafter\xdef\csname pgf@sh@np@#1\endcsname{%
\noexpand\def\noexpand\southwest{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\noexpand\def\noexpand\northeast{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
}%
}%
},
}%
\def\pgf@lbb@do#1{%
\ifdim\pgf@size@hook@x<\csname pgf@lbb@minx@#1\endcsname\expandafter\xdef\csname pgf@lbb@minx@#1\endcsname{\the\pgf@size@hook@x}\fi%
\ifdim\pgf@size@hook@x>\csname pgf@lbb@maxx@#1\endcsname\expandafter\xdef\csname pgf@lbb@maxx@#1\endcsname{\the\pgf@size@hook@x}\fi%
\ifdim\pgf@size@hook@y<\csname pgf@lbb@miny@#1\endcsname\expandafter\xdef\csname pgf@lbb@miny@#1\endcsname{\the\pgf@size@hook@y}\fi%
\ifdim\pgf@size@hook@y>\csname pgf@lbb@maxy@#1\endcsname\expandafter\xdef\csname pgf@lbb@maxy@#1\endcsname{\the\pgf@size@hook@y}\fi%
}%
\pgfdeclareshape{circle}
{%
\savedanchor\centerpoint{%
\pgf@x=.5\wd\pgfnodeparttextbox%
\pgf@y=.5\ht\pgfnodeparttextbox%
\advance\pgf@y by-.5\dp\pgfnodeparttextbox%
}%
\saveddimen\radius{%
\pgf@ya=.5\ht\pgfnodeparttextbox%
\advance\pgf@ya by.5\dp\pgfnodeparttextbox%
\pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/inner ysep}}%
\advance\pgf@ya by\pgf@yb%
\pgf@xa=.5\wd\pgfnodeparttextbox%
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/inner xsep}}%
\advance\pgf@xa by\pgf@xb%
\pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
\ifdim\pgf@x>\pgf@y%
\c@pgf@counta=\pgf@x%
\ifnum\c@pgf@counta=0\relax%
\else%
\divide\c@pgf@counta by 255\relax%
\pgf@xa=16\pgf@xa\relax%
\divide\pgf@xa by\c@pgf@counta%
\pgf@xa=16\pgf@xa\relax%
\fi%
\else%
\c@pgf@counta=\pgf@y%
\ifnum\c@pgf@counta=0\relax%
\else%
\divide\c@pgf@counta by 255\relax%
\pgf@ya=16\pgf@ya\relax%
\divide\pgf@ya by\c@pgf@counta%
\pgf@xa=16\pgf@ya\relax%
\fi%
\fi%
\pgf@x=\pgf@xa%
\pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/minimum width}}%
\pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/minimum height}}%
\ifdim\pgf@x<.5\pgf@xb%
\pgf@x=.5\pgf@xb%
\fi%
\ifdim\pgf@x<.5\pgf@yb%
\pgf@x=.5\pgf@yb%
\fi%
\pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
\pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
\ifdim\pgf@xb<\pgf@yb%
\advance\pgf@x by\pgf@yb%
\else%
\advance\pgf@x by\pgf@xb%
\fi%
}%
\anchor{center}{\centerpoint}%
\anchor{mid}{\centerpoint\pgfmathsetlength\pgf@y{.5ex}}%
\anchor{base}{\centerpoint\pgf@y=0pt}%
\anchor{north}{\centerpoint\advance\pgf@y by\radius}%
\anchor{south}{\centerpoint\advance\pgf@y by-\radius}%
\anchor{west}{\centerpoint\advance\pgf@x by-\radius}%
\anchor{east}{\centerpoint\advance\pgf@x by\radius}%
\anchor{mid west}{\centerpoint\advance\pgf@x by-\radius\pgfmathsetlength\pgf@y{.5ex}}%
\anchor{mid east}{\centerpoint\advance\pgf@x by\radius\pgfmathsetlength\pgf@y{.5ex}}%
\anchor{base west}{\centerpoint\advance\pgf@x by-\radius\pgf@y=0pt}%
\anchor{base east}{\centerpoint\advance\pgf@x by\radius\pgf@y=0pt}%
\anchor{north west}{
\centerpoint
\pgf@xa=\radius
\advance\pgf@x by-0.707107\pgf@xa
\advance\pgf@y by0.707107\pgf@xa
}%
\anchor{south west}{
\centerpoint
\pgf@xa=\radius
\advance\pgf@x by-0.707107\pgf@xa
\advance\pgf@y by-0.707107\pgf@xa
}%
\anchor{north east}{
\centerpoint
\pgf@xa=\radius
\advance\pgf@x by0.707107\pgf@xa
\advance\pgf@y by0.707107\pgf@xa
}%
\anchor{south east}{
\centerpoint
\pgf@xa=\radius
\advance\pgf@x by0.707107\pgf@xa
\advance\pgf@y by-0.707107\pgf@xa
}%
\anchorborder{%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\edef\pgf@marshal{%
\noexpand\pgfpointborderellipse
{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}
{\noexpand\pgfqpoint{\radius}{\radius}}%
}%
\pgf@marshal%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\centerpoint%
\advance\pgf@x by\pgf@xa%
\advance\pgf@y by\pgf@ya%
}%
\backgroundpath{%
\pgfutil@tempdima=\radius%
\pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
\pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
\ifdim\pgf@xb<\pgf@yb%
\advance\pgfutil@tempdima by-\pgf@yb%
\else%
\advance\pgfutil@tempdima by-\pgf@xb%
\fi%
\pgfpathcircle{\centerpoint}{\pgfutil@tempdima}%
}%
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleshapes.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfrcs.code.tex ====
\ifx\eTeXrevision\undefined%
\pgfutil@packageerror{PGF}{PGF requires etex in extended mode}{}%
\csname @@end\expandafter\endcsname\expandafter\end%
\fi
\ifnum\eTeXversion<2
\pgfutil@packageerror{PGF}{PGF requires etex version 2}{}%
\csname @@end\expandafter\endcsname\expandafter\end%
\fi
\pgfutil@IfFileExists{pgf.revision.tex}{\input pgf.revision.tex } {%
\def\pgfrevision{0.0}%
\def\pgfversion{0.0}%
\def\pgfversiondate{2014-07-01}%
\def\pgfrevisiondate{2014-07-01}%
}
\begingroup
\catcode`\"=12
\pgfutil@IfUndefined{directlua}{}{%
\directlua{pgf = {}; pgf.pgfversion = "\pgfversion"}%
}%
\endgroup
\let\pgftypesetversion=\pgfrevision
\ifx\pgfrcsloaded\undefined
\def\pgfrcsloaded{}
\edef\pgfrcsatcode{\the\catcode`\@}
\catcode`\@=11
\def\ProvidesFileRCS{%
\let\pgfrcs@final=\ProvidesFileRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesFileRCS@#1{%
\ProvidesFile{#1}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]%
}
\def\pgf@remove@ext#1.#2\relax{%
\def\pgfretval{#1}%
}%
\def\ProvidesPackageRCS{%
^I\let\pgfrcs@final=\ProvidesPackageRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesPackageRCS@#1{%
\pgf@remove@ext#1.\relax
\edef\pgfrcs@marshal{{\pgfretval}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]}%
\expandafter\ProvidesPackage\pgfrcs@marshal
}
\def\ProvidesClassRCS{%
^I\let\pgfrcs@final=\ProvidesClassRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesClassRCS@#1{%
\pgf@remove@ext#1.\relax
\edef\pgfrcs@marshal{{\pgfretval}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]}%
\expandafter\ProvidesClass\pgfrcs@marshal
}
\def\pgfrcs@parseinput@bracket{[}%
\def\pgfrcs@parseinput@dollarsign{$}%
\def\pgfrcs@parseinput#1{%
^I\def\pgfrcs@parseinput@{#1}%
^I\ifx\pgfrcs@parseinput@\pgfrcs@parseinput@bracket%
^I^I\let\next=\pgfrcs@parseinput@opt
^I\else
^I^I\ifx\pgfrcs@parseinput@\pgfrcs@parseinput@dollarsign
^I^I^I\let\next\pgfrcs@parseinput@dollar
^I^I\else
^I^I^I\def\next{\pgfrcs@final{#1}}%
^I^I\fi
^I\fi
^I\next
}
\def\pgfrcs@parseinput@opt#1] ${%
^I\pgfrcs@parseinput@dollar
}%
\def\pgfrcs@parseinput@dollar#1${%
^I\pgf@parseid $#1$%
^I\edef\pgfrcs@parseinput@{\pgf@rcsfile.\pgf@rcssuffix}%
^I\expandafter\pgfrcs@final\expandafter{\pgfrcs@parseinput@}%
}%
\def\pgf@parseid $#1: #2.#3,v #4 #5/#6/#7 #8${%
\pgf@parsercsfile$#2/$
\def\pgf@rcssuffix{#3}
\def\pgf@rcsrevision{#4}
\def\pgf@rcsdate{#5/#6/#7}
}
\def\pgf@parsercsfile$#1/#2${
\def\pgf@temp{#2}
\ifx\pgf@temp\pgfutil@empty
\def\pgf@rcsfile{#1}
\else
\pgf@parsercsfile$#2$
\fi}
\ifx\ProvidesPackage\@undefined
\def\ProvidesPackage#1[#2]{\wlog{Loading package #1 version #2.}}
\fi
\ifx\ProvidesFile\@undefined
\def\ProvidesFile#1[#2]{\wlog{Loading file #1 version #2.}}
\fi
\ProvidesPackageRCS{pgfrcs.code.tex}
\catcode`\@=\pgfrcsatcode
\fi
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfrcs.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsys.code.tex ====
\ProvidesPackageRCS{pgfsys.code.tex}
\ifdefined\pgfkeysloaded\else
\input pgfkeys.code.tex
\fi
\pgfkeys{/pgf/.is family}
\def\pgfset{\pgfqkeys{/pgf}}
\newif\ifpgfpicture
{\catcode`\p=12\catcode`\t=12\gdef\Pgf@geT#1pt{#1}}
\def\pgf@sys@tonumber#1{\expandafter\Pgf@geT\the#1}
\def\pgf@sys@bp@correct#1{#1=0.99627#1}
\def\pgf@sys@bp#1{%
{%
\pgf@x=#1\relax%
\pgf@x=0.99627\pgf@x%
\edef\temp{\expandafter\Pgf@geT\the\pgf@x\space}%
\pgfutil@toks@\expandafter\expandafter\expandafter{\expandafter\pgfsysprotocol@currentprotocol\temp}%
\xdef\pgfsysprotocol@currentprotocol{\the\pgfutil@toks@}%
}%
}
\def\pgf@sys@pt#1{%
{%
\pgf@x=#1\relax%
\edef\temp{\expandafter\Pgf@geT\the\pgf@x\space}%
\pgfutil@toks@\expandafter\expandafter\expandafter{\expandafter\pgfsysprotocol@currentprotocol\temp}%
\xdef\pgfsysprotocol@currentprotocol{\the\pgfutil@toks@}%
}%
}
\newdimen\pgf@x
\newdimen\pgf@y
\newdimen\pgf@xa
\newdimen\pgf@ya
\newdimen\pgf@xb
\newdimen\pgf@yb
\newdimen\pgf@xc
\newdimen\pgf@yc
\newdimen\pgf@xd
\newdimen\pgf@yd
\newwrite\w@pgf@writea
\newread\r@pgf@reada
\let\pgfutil@inputcheck=\r@pgf@reada
\newcount\c@pgf@counta
\newcount\c@pgf@countb
\newcount\c@pgf@countc
\newcount\c@pgf@countd
\newtoks\t@pgf@toka
\newtoks\t@pgf@tokb
\newtoks\t@pgf@tokc
\let\pgfmath@x\pgf@x
\let\pgfmath@xa\pgf@xa
\let\pgfmath@xb\pgf@xb
\let\pgfmath@xc\pgf@xc
\let\pgfmath@y\pgf@y
\let\pgfmath@ya\pgf@ya
\let\pgfmath@yb\pgf@yb
\let\pgfmath@yc\pgf@yc
\let\c@pgfmath@counta\c@pgf@counta
\let\c@pgfmath@countb\c@pgf@countb
\let\c@pgfmath@countc\c@pgf@countc
\let\c@pgfmath@countd\c@pgf@countd
\def\pgf@sys@fail#1{%
\expandafter\ifx\csname pgf@sys@fail@#1\endcsname\pgfutil@empty%
\else%
\expandafter\global\expandafter\let\csname pgf@sys@fail@#1\endcsname=\pgfutil@empty%
\pgfwarning{Your graphic driver \pgfsysdriver\space does not support #1. This warning is given only once}%
\fi%
}
\def\pgfsys@invoke{\pgf@sys@fail{invoking specials}}
\def\pgfsys@outerinvoke{\pgfsys@invoke}
\def\pgfsys@moveto#1#2{\pgf@sys@fail{path constructions}}
\def\pgfsys@lineto#1#2{\pgf@sys@fail{path constructions}}
\def\pgfsys@curveto#1#2#3#4#5#6{\pgf@sys@fail{path constructions}}
\def\pgfsys@rect#1#2#3#4{\pgf@sys@fail{path constructions}}
\def\pgfsys@closepath{\pgf@sys@fail{path constructions}}
\def\pgfsys@stroke{\pgf@sys@fail{path usage}}
\def\pgfsys@fill{\pgf@sys@fail{path usage}}
\def\pgfsys@fillstroke{\pgf@sys@fail{path usage}}
\def\pgfsys@clipnext{\pgf@sys@fail{path usage}}
\def\pgfsys@discardpath{\pgf@sys@fail{path usage}}
\def\pgfsys@closestroke{\pgfsys@closepath\pgfsys@stroke}
\newif\ifpgfsys@eorule
\def\pgfsys@setlinewidth#1{\pgf@sys@fail{setting the line width}}
\def\pgfsys@buttcap{\pgf@sys@fail{setting the line cap}}
\def\pgfsys@roundcap{\pgf@sys@fail{setting the line cap}}
\def\pgfsys@rectcap{\pgf@sys@fail{setting the line cap}}
\def\pgfsys@miterjoin{\pgf@sys@fail{setting the line join}}
\def\pgfsys@setmiterlimit#1{\pgf@sys@fail{setting the line cap}}
\def\pgfsys@roundjoin{\pgf@sys@fail{setting the line cap}}
\def\pgfsys@beveljoin{\pgf@sys@fail{setting the line cap}}
\def\pgfsys@setdash#1#2{\pgf@sys@fail{setting the dashing pattern}}
\def\pgfsys@color@rgb@stroke#1#2#3{\pgf@sys@fail{color}}
\def\pgfsys@color@rgb@fill#1#2#3{\pgf@sys@fail{color}}
\def\pgfsys@color@rgb#1#2#3{\pgfsys@color@rgb@stroke{#1}{#2}{#3}\pgfsys@color@rgb@fill{#1}{#2}{#3}}
\def\pgfsys@color@cmyk@stroke#1#2#3#4{\pgf@sys@fail{color}}
\def\pgfsys@color@cmyk@fill#1#2#3#4{\pgf@sys@fail{color}}
\def\pgfsys@color@cmyk#1#2#3#4{\pgfsys@color@cmyk@stroke{#1}{#2}{#3}{#4}\pgfsys@color@cmyk@fill{#1}{#2}{#3}{#4}}
\def\pgfsys@color@cmy@stroke#1#2#3{\pgf@sys@fail{color}}
\def\pgfsys@color@cmy@fill#1#2#3{\pgf@sys@fail{color}}
\def\pgfsys@color@cmy#1#2#3{\pgfsys@color@cmy@stroke{#1}{#2}{#3}\pgfsys@color@cmy@fill{#1}{#2}{#3}}
\def\pgfsys@color@gray@stroke#1{\pgf@sys@fail{color}}
\def\pgfsys@color@gray@fill#1{\pgf@sys@fail{color}}
\def\pgfsys@color@gray#1{\pgfsys@color@gray@stroke{#1}\pgfsys@color@gray@fill{#1}}
\newif\ifpgfsys@color@reset@inorder
\pgfsys@color@reset@inordertrue
\def\pgfsys@color@reset{}
\def\pgfsys@color@unstacked#1{}
\def\pgfsys@text@to@black@hook{}
\def\pgfsys@transformcm#1#2#3#4#5#6{\pgf@sys@fail{transformations}}
\def\pgfsys@transformshift#1#2{\pgfsys@transformcm{1}{0}{0}{1}{#1}{#2}}
\def\pgfsys@transformxyscale#1#2{\pgfsys@transformcm{#1}{0}{0}{#2}{0bp}{0bp}}
\def\pgfsys@viewboxmeet#1#2#3#4#5#6#7#8{\pgfsys@beginscope\pgf@sys@default@viewbox@impl{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{<}}
\def\pgfsys@viewboxslice#1#2#3#4#5#6#7#8{\pgfsys@beginscope\pgf@sys@default@viewbox@impl{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{>}}
\def\pgfsys@endviewbox{\pgfsys@endscope}
\def\pgf@sys@default@viewbox@impl#1#2#3#4#5#6#7#8#9{{%
\pgf@x#1%
\pgf@y#2%
\pgf@xa#3%
\pgf@ya#4%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}%
\let\aspectr\pgfmathresult%
\pgf@xb#5%
\pgf@yb#6%
\pgf@xc#7%
\pgf@yc#8%
\advance\pgf@xc by-\pgf@xb%
\advance\pgf@yc by-\pgf@yb%
\pgfmathdivide@{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}%
\let\aspects\pgfmathresult%
\ifdim\aspectr pt#9\aspects pt%
\pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@xc}%
\else%
\pgfmathdivide@{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@yc}%
\fi%
\advance\pgf@x by.5\pgf@xa%
\advance\pgf@xb by.5\pgf@xc%
\advance\pgf@y by.5\pgf@ya%
\advance\pgf@yb by.5\pgf@yc%
\pgfsys@transformcm{\pgfmathresult}{0}{0}{\pgfmathresult}{\pgf@x}{\pgf@y}%
\pgfsys@transformcm{1}{0}{0}{1}{-\pgf@xb}{-\pgf@yb}%
}%
}
\def\pgfsys@beginscope{\pgf@sys@fail{scoping}}
\def\pgfsys@endscope{\pgf@sys@fail{scoping}}
\def\pgfsys@begin@idscope{%
\begingroup%
\edef\pgf@sys@cacheref{\pgfsys@id@refcurrent}%
\expandafter\let\expandafter\pgfsys@beg@save\csname pgf@sys@att@beg@\pgf@sys@cacheref\endcsname%
\expandafter\let\expandafter\pgfsys@end@save\csname pgf@sys@att@end@\pgf@sys@cacheref\endcsname%
\ifx\pgfsys@beg@save\relax%
\ifx\pgfsys@end@save\relax%
\else%
\pgfsys@call@save%
\fi%
\else%
\pgfsys@call@save%
\fi%
\pgfsys@invalidate@currentid%
\begingroup%
}
\def\pgfsys@call@save{%
\pgfsys@beginscope%
\pgfsys@beg@save%
\expandafter\global\expandafter\let\csname pgf@sys@att@beg@\pgfsys@id@refcurrent\endcsname\relax%
\expandafter\global\expandafter\let\csname pgf@sys@att@end@\pgfsys@id@refcurrent\endcsname\relax%
}
\def\pgfsys@end@idscope{
\endgroup%
\ifx\pgfsys@beg@save\relax%
\ifx\pgfsys@end@save\relax%
\else%
\pgfsys@call@end%
\fi%
\else%
\pgfsys@call@end%
\fi%
\endgroup
}
\def\pgfsys@call@end{%
\pgfsys@end@save%
\pgfsys@endscope%
}
\def\pgfsys@begin@text{}
\def\pgfsys@end@text{}
\newcount\pgf@sys@id@count
\def\pgfsys@new@id#1{%
\edef#1{pgf\the\pgf@sys@id@count}%
\global\advance\pgf@sys@id@count by1\relax%
}
\def\pgfsys@use@id#1{%
\edef\pgf@sys@id@current@id{#1}%
\let\pgfsys@current@type\pgfutil@empty%
}
\let\pgf@sys@id@current@id\pgfutil@empty
\def\pgfsys@clear@id{%
\let\pgf@sys@id@current@id\pgfutil@empty%
}
\def\pgfsys@use@type#1{%
\edef\pgfsys@current@type{#1}%
\pgfsys@register@type\pgfsys@current@type%
}
\let\pgfsys@current@type\pgfutil@empty
\def\pgfsys@append@type#1{%
\ifx\pgfsys@current@type\pgfutil@empty%
\pgfsys@use@type{#1}%
\else%
\pgfsys@use@type{\pgfsys@current@type.#1}%
\fi%
}
\def\pgfsys@register@type#1{%
\expandafter\let\expandafter\pgf@sys@temp\csname pgf@sys@reg@type@#1\endcsname%
\ifx\pgf@sys@temp\relax%
{%
\c@pgf@counta\pgf@sys@type@count\relax%
\global\advance\c@pgf@counta by1\relax%
\edef\pgf@sys@type@count{\the\c@pgf@counta}%
\expandafter\xdef\csname pgf@sys@reg@type@#1\endcsname{y\the\c@pgf@counta}%
}%
\fi%
}
\def\pgf@sys@reg@type@{}
\def\pgf@sys@reg@type@background{b}
\def\pgf@sys@reg@type@path{p}
\def\pgf@sys@reg@type@text{t}
\expandafter\def\csname pgf@sys@reg@type@background.path\endcsname{bp}
\def\pgf@sys@type@count{0}
\def\pgfsys@push@type{%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@sys@typestack%
\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfsys@current@type%
\expandafter\expandafter\expandafter{\expandafter\pgfsys@current@type\expandafter}%
\expandafter\def\expandafter\pgf@sys@typestack\expandafter{\pgf@sys@typestack}}%
}
\let\pgf@sys@typestack\pgfutil@empty
\def\pgfsys@pop@type{\pgf@sys@typestack}
\def\pgfsys@id@ref#1#2{#1\csname pgf@sys@reg@type@#2\endcsname}
\def\pgfsys@id@refcurrent{\pgfsys@id@ref{\pgf@sys@id@current@id}{\pgfsys@current@type}}
\def\pgfsys@invalidate@currentid{%
\expandafter\global\expandafter\let\csname pgf@sys@id@keylist@\pgfsys@id@refcurrent\endcsname\pgfutil@empty%
}
\def\pgfsys@attach@to@id#1#2#3#4{%
\pgfsys@register@type{#2}%
\expandafter\def\expandafter\pgf@sys@tempbeg\expandafter{\csname pgf@sys@att@beg@\pgfsys@id@ref{#1}{#2}\endcsname}%
\expandafter\def\expandafter\pgf@sys@tempend\expandafter{\csname pgf@sys@att@end@\pgfsys@id@ref{#1}{#2}\endcsname}%
\expandafter\ifx\pgf@sys@tempbeg\relax%
\expandafter\let\pgf@sys@tempbeg\pgfutil@empty%
\fi%
\expandafter\ifx\pgf@sys@tempend\relax%
\expandafter\let\pgf@sys@tempend\pgfutil@empty%
\fi%
\expandafter\let\expandafter\pgf@sys@tempbeg@cont\pgf@sys@tempbeg%
\expandafter\let\expandafter\pgf@sys@tempend@cont\pgf@sys@tempend%
\expandafter\expandafter\expandafter\gdef\expandafter\pgf@sys@tempbeg\expandafter{\pgf@sys@tempbeg@cont#3}%
\def\pgf@sys@temp{#4}%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter\pgf@sys@tempend\expandafter\expandafter\expandafter{\expandafter\pgf@sys@temp\pgf@sys@tempend@cont}%
}
\def\pgfsys@if@fresh@id#1#2#3#4{%
\edef\pgf@sys@temp{#1}%
\ifx\pgf@sys@temp\pgfutil@empty%
#4%
\else%
\pgfsys@register@type{#2}%
\expandafter\ifx\csname pgf@sys@id@keylist@\pgfsys@id@ref{#1}{#2}\endcsname\pgfutil@empty%
#4%
\else%
#3%
\fi%
\fi%
}
\def\pgfsys@if@fresh@currentid#1#2{%
\ifx\pgf@sys@id@current@id\pgfutil@empty%
#2%
\else%
\expandafter\ifx\csname pgf@sys@id@keylist@\pgfsys@id@refcurrent\endcsname\pgfutil@empty%
#2%
\else%
#1%
\fi%
\fi%
}
\def\pgfsys@imagesuffixlist{}
\def\pgfsys@opacity#1{\pgfsys@stroke@opacity{#1}\pgfsys@fill@opacity{#1}}
\def\pgfsys@stroke@opacity#1{\pgf@sys@fail{opacity}}
\def\pgfsys@fill@opacity#1{\pgf@sys@fail{opacity}}
\def\pgfsys@transparencygroupfrombox#1{\pgf@sys@fail{transparency groups}}
\newif\ifpgfsys@transparency@group@isolated
\newif\ifpgfsys@transparency@group@knockout
\def\pgfsys@blend@mode#1{\pgf@sys@fail{blend mode}}
\def\pgfsys@definemask{\pgf@sys@fail{image masks}}
\def\pgfsys@fadingfrombox#1#2{\pgf@sys@fail{fadings}}
\def\pgfsys@usefading#1#2#3#4#5#6#7{\pgf@sys@fail{fadings}}
\def\pgfsys@clipfading{}
\def\pgfsys@horishading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}
\def\pgfsys@vertshading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}
\def\pgfsys@radialshading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}
\def\pgfsys@functionalshading#1#2#3#4{\pgf@sys@fail{shadings (functional)}\pgf@sys@noshading{#1}}
\def\pgf@sys@noshading#1{\expandafter\global\expandafter\let\csname @pgfshading#1!\endcsname=\pgfutil@empty}
\def\pgfsys@declarepattern#1#2#3#4#5#6#7#8#9{\pgf@sys@fail{patterns}}
\def\pgfsys@setpatternuncolored#1#2#3#4{\pgf@sys@fail{patterns}}
\def\pgfsys@setpatterncolored#1{\pgf@sys@fail{patterns}}
\newif\ifpgfsysanimationsupported
\def\pgfsys@animate#1{\pgf@sys@fail{animations}}
\def\pgfsys@animation@restart@always{}
\def\pgfsys@animation@restart@never{}
\def\pgfsys@animation@restart@whennotactive{}
\def\pgfsys@animation@repeat#1{}
\def\pgfsys@animation@repeat@indefinite{}
\def\pgfsys@animation@repeat@dur#1{}
\def\pgfsys@animation@freezeatend{}
\def\pgfsys@animation@removeatend{}
\def\pgfsys@animation@time#1#2#3#4#5{}
\def\pgfsys@stay@text{{stay}{0}}
\def\pgfsys@jump@text{{jump}{1}}
\def\pgfsys@animation@base{}
\def\pgfsys@animation@offset#1#2{}
\def\pgfsys@animation@syncbegin#1#2#3#4{}
\def\pgfsys@animation@syncend#1#2#3#4{}
\def\pgfsys@animation@event#1#2#3#4#5{}
\def\pgfsys@animation@repeat@event#1#2#3#4#5{}
\def\pgfsys@animation@accesskey#1#2#3{}
\def\pgf@sys@begin@text{begin}
\def\pgfsys@animation@accumulate{}
\def\pgfsys@animation@noaccumulate{}
\def\pgfsys@animation@whom#1#2{}
\def\pgfsys@animation@rotatealong{}
\def\pgfsys@animation@norotatealong{}
\def\pgfsys@animation@movealong#1{}
\def\pgfsys@animation@tip@markers#1#2{}
\def\pgfsys@animation@canvas@transform#1#2{}
\def\pgfsys@animation@val@current{}
\def\pgfsys@animation@val@text#1{}
\def\pgfsys@animation@val@scalar#1{}
\def\pgfsys@animation@val@dimension#1{}
\def\pgfsys@animation@val@color@rgb#1#2#3{}
\def\pgfsys@animation@val@color@cmyk#1#2#3#4{}
\def\pgfsys@animation@val@color@cmy#1#2#3{}
\def\pgfsys@animation@val@color@gray#1{}
\def\pgfsys@animation@val@path#1{}
\def\pgfsys@animation@val@translate#1#2{}
\def\pgfsys@animation@val@scale#1#2{}
\def\pgfsys@animation@val@viewbox#1#2#3#4{}
\def\pgfsys@animation@val@dash#1#2{}
\def\pgfsys@marker@declare#1#2{%
{%
\pgfpicturetrue%
\pgfsysprotocol@getcurrentprotocol\pgfsys@marker@temp%
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
\pgfsysprotocol@bufferedtrue%
\pgfsys@beginscope%
#2%
\pgfsys@endscope%
\xdef#1{\the\pgf@sys@id@count}%
\expandafter\expandafter\expandafter\global\expandafter\pgfsysprotocol@getcurrentprotocol\csname pgf@sys@marker@prot@#1\endcsname%
\pgfsys@marker@declare@%
\pgfsysprotocol@setcurrentprotocol\pgfsys@marker@temp%
\global\advance\pgf@sys@id@count by1\relax%
}%
}
\let\pgfsys@marker@declare@\relax
\def\pgfsys@marker@use#1{%
\pgfsysprotocol@literal{\csname pgf@sys@marker@prot@#1\endcsname}%
}
\def\pgfsys@rdf@about#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@content#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@datatype#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@href#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@inlist{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@prefix#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@property#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@rel#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@resource#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@rev#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@src#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@typeof#1{\pgf@sys@fail{rdf}}
\def\pgfsys@rdf@vocab#1{\pgf@sys@fail{rdf}}
\def\pgfsys@papersize#1#2{\pgf@sys@fail{papersize}}
\def\pgfsys@global@papersize#1#2{\pgfsys@papersize{#1}{#2}}
\def\pgfsys@prepare@papersize#1#2{\pgfsys@papersize{#1}{#2}}
\ifx\paperheight\@undefined
\def\pgfsys@thepageheight{\the\vsize} %
\def\pgfsys@thepagewidth{\the\hsize}
\else
\def\pgfsys@thepageheight{\paperheight}
\def\pgfsys@thepagewidth{\paperwidth}
\fi
\def\pgfsys@markposition#1{\pgf@sys@fail{marking the current position}}
\def\pgfsys@getposition#1#2{\let#2=\relax}
\def\pgfsys@shadingoutsidepgfpicture#1{%
#1%
}
\def\pgfsys@shadinginsidepgfpicture#1{%
\pgf@makehbox{#1}%
\setbox\pgf@hbox=\hbox{\hskip-.5\wd\pgf@hbox\lower.5\ht\pgf@hbox\hbox{\box\pgf@hbox}}%
\pgfqbox{\pgf@hbox}%
}
\def\pgfsys@hbox#1{%
\pgfsys@begin@idscope%
\pgfsys@beginscope%
\setbox#1=\hbox{\box#1}%
\wd#1=0pt%
\ht#1=0pt%
\dp#1=0pt%
\box#1%
\pgfsys@endscope%
\pgfsys@end@idscope%
}
\def\pgfsys@hboxsynced#1{%
\pgfsys@beginscope\pgflowlevelsynccm\pgfsys@hbox#1\pgfsys@endscope%
}%
\def\pgfsys@pictureboxsynced#1{%
{%
\setbox0=\hbox{\pgfsys@beginpicture\box#1\pgfsys@endpicture}%
\pgfsys@hboxsynced0%
}%
}
\def\pgfsys@beginpicture{}
\def\pgfsys@endpicture{}
\def\pgfsys@typesetpicturebox#1{%
\pgf@ya=\pgf@shift@baseline\relax%
\advance\pgf@ya by-\pgf@picminy\relax%
\advance\pgf@picmaxy by-\pgf@picminy\relax%
\advance\pgf@picmaxx by-\pgf@picminx\relax%
\setbox#1=\hbox{\hskip-\pgf@picminx\lower\pgf@picminy\box#1}%
\ht#1=\pgf@picmaxy%
\wd#1=\pgf@picmaxx%
\dp#1=0pt%
\leavevmode%
\pgf@xa=\pgf@trimleft@final\relax \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi
\raise-\pgf@ya\box#1%
\pgf@xa=\pgf@trimright@final\relax \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi
}
\def\pgfsys@beginpurepicture{\pgfsys@beginpicture}
\def\pgfsys@endpurepicture{\pgfsys@endpicture}
\def\pgfsys@defineimage{%
\ifx\pgf@imagewidth\pgfutil@empty\else\edef\pgf@imagewidth{width=\pgf@imagewidth,}\fi%
\ifx\pgf@imageheight\pgfutil@empty\else\edef\pgf@imageheight{height=\pgf@imageheight,}\fi%
\ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepage{page=\pgf@imagepage,}\fi%
\edef\pgf@image{\noexpand\includegraphics[\pgf@imageheight\pgf@imagewidth]{\pgf@filename}}%
}
\def\pgfsys@defobject#1#2#3#4{%
\pgfsysprotocol@getcurrentprotocol\pgfsys@temp%
{%
\pgfpicturetrue%
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
\pgfsysprotocol@bufferedtrue%
\pgfsys@beginscope%
#4%
\pgfsys@endscope%
\pgfsysprotocol@getcurrentprotocol\pgfsys@@temp%
\expandafter\global\expandafter\let\csname #1\endcsname=\pgfsys@@temp%
}%
\pgfsysprotocol@setcurrentprotocol\pgfsys@temp%
}
\def\pgfsys@useobject#1#2{%
\pgfsysprotocol@getcurrentprotocol\pgfsys@temp%
{%
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
\pgfsysprotocol@bufferedfalse%
#2%
\expandafter\pgfsysprotocol@setcurrentprotocol\csname #1\endcsname%
\pgfsysprotocol@invokecurrentprotocol%
}%
\pgfsysprotocol@setcurrentprotocol\pgfsys@temp%
}
\def\pgfsys@begininvisible{\pgfsys@transformcm{1}{0}{0}{1}{2000bp}{2000bp}}
\def\pgfsys@endinvisible{\pgfsys@transformcm{1}{0}{0}{1}{-2000bp}{-2000bp}}
\def\pgfsys@begininvisiblescope{\pgfsys@beginscope\pgfsys@begininvisible}
\def\pgfsys@endinvisiblescope{\pgfsys@endinvisible\pgfsys@endscope}
\def\pgfsys@atbegindocument{}
\ifdefined\pdfstrcmp
\let\pgfsys@strcmp\pdfstrcmp
\else\ifdefined\strcmp
\let\pgfsys@strcmp\strcmp
\else\ifdefined\directlua
\directlua{
local lft = lua.get_functions_table()
lft[\string#lft+1] = function()
local lhs = token.scan_string()
local rhs = token.scan_string()
if lhs < rhs then
tex.sprint(-2, "-1")
elseif lhs == rhs then
tex.sprint(-2, "0")
else
tex.sprint(-2, "1")
end
end
token.set_lua("pgfsys@strcmp", \string#lft, "global")
}
\else
\def\pgfsys@strcmp#1#2{\pgf@sys@fail{string comparison}}%
\fi\fi\fi
\ifx\pgfsysdriver\@undefined
\pgfutil@guessdriver
\fi
\input pgf.cfg
\immediate\write-1{Driver file for pgf: \pgfsysdriver}
\pgfutil@InputIfFileExists{\pgfsysdriver}{}{%
\pgferror{Driver file ``\pgfsysdriver'' not found.}}
\AtBeginDocument{
\pgfsys@atbegindocument
\let\pgfsys@atbegindocument=\pgfutil@empty
}
\pgfutil@aux@read@hook
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsys.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsysprotocol.code.tex ====
\ProvidesFileRCS{pgfsysprotocol.code.tex}
\let\pgfsysprotocol@currentprotocol=\pgfutil@empty
\newif\ifpgfsysprotocol@buffered
\def\pgfsysprotocol@literalbuffered#1{%
\edef\pgfsysprotocol@temp{{#1\space}}%
\expandafter\pgfutil@g@addto@macro\expandafter\pgfsysprotocol@currentprotocol\pgfsysprotocol@temp%
}
\def\pgfsysprotocol@literal#1{%
\pgfsysprotocol@literalbuffered{#1}%
\ifpgfsysprotocol@buffered%
\else%
\pgfsysprotocol@flushcurrentprotocol%
\fi%
}
\def\pgfsysprotocol@getcurrentprotocol#1{%
\let#1=\pgfsysprotocol@currentprotocol%
}
\def\pgfsysprotocol@setcurrentprotocol#1{%
\global\let\pgfsysprotocol@currentprotocol=#1%
}
\def\pgfsysprotocol@invokecurrentprotocol{%
\ifx\pgfsysprotocol@currentprotocol\pgfutil@empty%
\else%
\expandafter\pgfsys@invoke\expandafter{\pgfsysprotocol@currentprotocol}%
\fi%
}
\def\pgfsysprotocol@flushcurrentprotocol{%
\pgfsysprotocol@invokecurrentprotocol%
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsysprotocol.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsyssoftpath.code.tex ====
\ProvidesFileRCS{pgfsyssoftpath.code.tex}
\let\pgfsyssoftpath@thepath=\pgfutil@empty
\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
\newcount\pgfsyssoftpath@smallbuffer@items
\newcount\pgfsyssoftpath@bigbuffer@items
\def\pgfsyssoftpath@flushbuffers{%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
\expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
\expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer}%
\global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
\global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
\global\pgfsyssoftpath@bigbuffer@items0\relax%
\global\pgfsyssoftpath@smallbuffer@items0\relax%
}
\def\pgfsyssoftpath@getcurrentpath#1{%
\pgfsyssoftpath@flushbuffers%
\let#1=\pgfsyssoftpath@thepath%
}
\def\pgfsyssoftpath@setcurrentpath#1{%
\global\let\pgfsyssoftpath@thepath=#1%
\global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
\global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
\global\pgfsyssoftpath@bigbuffer@items0\relax%
\global\pgfsyssoftpath@smallbuffer@items0\relax%
}
\def\pgfsyssoftpath@invokecurrentpath{%
\pgfsyssoftpath@thepath%
\pgfsyssoftpath@bigbuffer%
\pgfsyssoftpath@smallbuffer%
}
\def\pgfsyssoftpath@flushcurrentpath{%
\pgfsyssoftpath@invokecurrentpath%
\pgfsyssoftpath@setcurrentpath\pgfutil@empty%
}
\def\pgfsyssoftpath@addtocurrentpath#1{%
\global\advance\pgfsyssoftpath@smallbuffer@items by1\relax%
\ifnum\pgfsyssoftpath@smallbuffer@items<40\relax%
\expandafter\gdef\expandafter\pgfsyssoftpath@smallbuffer\expandafter{\pgfsyssoftpath@smallbuffer#1}%
\else%
\pgfsyssoftpath@smalloverflow{#1}%
\fi%
}
\def\pgfsyssoftpath@smalloverflow#1{%
\global\advance\pgfsyssoftpath@bigbuffer@items by1\relax%
\ifnum\pgfsyssoftpath@bigbuffer@items<30\relax%
\expandafter\expandafter\expandafter\gdef%
\expandafter\expandafter\expandafter\pgfsyssoftpath@bigbuffer%
\expandafter\expandafter\expandafter{\expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer#1}%
\global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty%
\global\pgfsyssoftpath@smallbuffer@items0\relax%
\else%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
\expandafter\expandafter\expandafter\pgfsyssoftpath@thepath
\expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer#1}%
\global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
\global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
\global\pgfsyssoftpath@bigbuffer@items0\relax%
\global\pgfsyssoftpath@smallbuffer@items0\relax%
\fi%
}
\def\pgfsyssoftpath@lastmoveto{{0pt}{0pt}}
\newif\ifpgfsyssoftpathmovetorelevant
\pgfsyssoftpathmovetorelevanttrue
\def\pgfsyssoftpath@moveto#1#2{%
\edef\pgfsyssoftpath@coord{{#1}{#2}}%
\expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@movetotoken\pgfsyssoftpath@coord}%
\ifpgfsyssoftpathmovetorelevant%
\global\let\pgfsyssoftpath@lastmoveto\pgfsyssoftpath@coord%
\fi%
}
\def\pgfsyssoftpath@lineto#1#2{%
\edef\pgfsyssoftpath@coord{{#1}{#2}}%
\expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@linetotoken\pgfsyssoftpath@coord}%
}
\def\pgfsyssoftpath@curveto#1#2#3#4#5#6{%
\edef\pgfsyssoftpath@temp{{%
\noexpand\pgfsyssoftpath@curvetosupportatoken{#1}{#2}%
\noexpand\pgfsyssoftpath@curvetosupportbtoken{#3}{#4}%
\noexpand\pgfsyssoftpath@curvetotoken{#5}{#6}%
}}%
\expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp%
}
\def\pgfsyssoftpath@rect#1#2#3#4{%
\edef\pgfsyssoftpath@temp{{%
\noexpand\pgfsyssoftpath@rectcornertoken{#1}{#2}%
\noexpand\pgfsyssoftpath@rectsizetoken{#3}{#4}%
}}%
\expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp%
}
\def\pgfsyssoftpath@closepath{%
\expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@closepathtoken\pgfsyssoftpath@lastmoveto}%
}
\def\pgfsyssoftpath@specialround#1#2{%
\edef\pgfsyssoftpath@temp{{#1}{#2}}%
\expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@specialroundtoken\pgfsyssoftpath@temp}%
}
\def\pgfsyssoftpath@movetotoken#1#2{\pgfsys@moveto{#1}{#2}}
\def\pgfsyssoftpath@linetotoken#1#2{\pgfsys@lineto{#1}{#2}}
\def\pgfsyssoftpath@rectcornertoken#1#2#3#4#5{\pgfsys@rect{#1}{#2}{#4}{#5}} %
\def\pgfsyssoftpath@curvetosupportatoken#1#2#3#4#5#6#7#8{\pgfsys@curveto{#1}{#2}{#4}{#5}{#7}{#8}}
\def\pgfsyssoftpath@closepathtoken#1#2{\pgfsys@closepath}
\let\pgfsyssoftpath@specialroundtoken=\pgfutil@gobbletwo
\def\pgfsyssoftpath@curvetosupportbtoken#1#2{curvetotokenb} %
\def\pgfsyssoftpath@curvetotoken#1#2{curvetotoken}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsyssoftpath.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfutil-common.tex ====
\catcode`\@=11\relax
\newif\ifpgfutil@format@is@latex
\newif\ifpgfutil@format@is@plain
\newif\ifpgfutil@format@is@context
\let\pgfutil@exp\romannumeral
\chardef\pgfutil@exp@end=0
\catcode`\Q=3
\def\pgfutil@trimspaces#1{%
\romannumeral-`0\pgfutil@trimspaces@\noexpand#1Q Q}
\def\pgfutil@trimspaces@#1 Q{\pgfutil@trimspaces@@#1Q}
\def\pgfutil@trimspaces@@#1Q#2{#1}
\catcode`\Q=11
\long\def\pgfutil@ifx#1#2{%
\ifx#1#2%
\expandafter\pgfutil@firstoftwo
\else
\expandafter\pgfutil@secondoftwo
\fi}
\long\def\pgfutil@ifstrequal#1#2{%
\ifnum\pgfsys@strcmp{\pgfutil@unexpanded{#1}}{\pgfutil@unexpanded{#2}}=0
\expandafter\pgfutil@firstoftwo
\else
\expandafter\pgfutil@secondoftwo
\fi
}
\def\pgfutil@ifxempty{\pgfutil@ifx\pgfutil@empty}
\long\def\pgfutil@ifempty#1{%
\if\relax\detokenize{#1}\relax
\expandafter\pgfutil@firstoftwo
\else
\expandafter\pgfutil@secondoftwo
\fi}
\def\pgfutil@ifundefined#1{%
\expandafter\pgfutil@ifx\csname#1\endcsname\relax}
\def\pgfutil@IfUndefined#1{%
\ifcsname#1\endcsname
\expandafter\pgfutil@secondoftwo
\else
\expandafter\pgfutil@firstoftwo
\fi
}
\long\def\pgfutil@firstofone#1{#1}
\long\def\pgfutil@firstoftwo#1#2{#1}
\long\def\pgfutil@secondoftwo#1#2{#2}
\def\pgfutil@empty{}
\long\def\pgfutil@gobble@until@relax#1\relax{}
\long\def\pgfutil@gobble#1{}
\long\def\pgfutil@gobbletwo#1#2{}
\def\pgfutil@namedef#1{\expandafter\def\csname #1\endcsname}
\def\pgfutil@namelet#1{\expandafter\pgfutil@@namelet\csname#1\endcsname}
\def\pgfutil@@namelet#1#2{\expandafter\let\expandafter#1\csname#2\endcsname}
\long\def\pgfutil@g@addto@macro#1#2{%
\begingroup
\pgfutil@toks@\expandafter{#1#2}%
\xdef#1{\the\pgfutil@toks@}%
\endgroup}
\newif\ifpgfutil@tempswa
\newif\ifpgfutil@tempswb
\let\pgfutil@pushmacro@string\pgfutil@empty
\def\pgfutil@pushmacro#1{%
\xdef\pgfutil@pushmacro@string{\string#1}%
\ifcsname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\else
\csname newcount\expandafter\endcsname\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname
\fi
\global\advance\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname 1\relax
\global\expandafter\let\csname\the\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\pgfutil@pushmacro@string\endcsname#1%
}
\def\pgfutil@popmacro#1{%
\xdef\pgfutil@pushmacro@string{\string#1}%
\expandafter\let\expandafter#1\csname\the\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\pgfutil@pushmacro@string\endcsname
\global\advance\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname -1\relax
}
\long\def\pgfutil@ifnextchar#1#2#3{%
\let\pgfutil@reserved@d=#1%
\def\pgfutil@reserved@a{#2}%
\def\pgfutil@reserved@b{#3}%
\futurelet\pgfutil@let@token\pgfutil@ifnch}
\def\pgfutil@ifnch{%
\ifx\pgfutil@let@token\pgfutil@sptoken
\let\pgfutil@reserved@c\pgfutil@xifnch
\else
\ifx\pgfutil@let@token\pgfutil@reserved@d
\let\pgfutil@reserved@c\pgfutil@reserved@a
\else
\let\pgfutil@reserved@c\pgfutil@reserved@b
\fi
\fi
\pgfutil@reserved@c}
{%
\def\:{\global\let\pgfutil@sptoken= } \:
\def\:{\pgfutil@xifnch} \expandafter\gdef\: {\futurelet\pgfutil@let@token\pgfutil@ifnch}
}
\def\pgfutil@ignorespaces
{\ifx\pgfutil@let@token\pgfutil@sptoken
\expandafter\pgfutil@ignorespaces@helper
\else
\expandafter\pgfutil@next
\fi}
{
\def\:{\pgfutil@ignorespaces@helper}
\expandafter\gdef\: {\futurelet\pgfutil@let@token\pgfutil@ignorespaces}
}
\newif\ifpgfutil@in@
\def\pgfutil@in@#1#2{%
\def\pgfutil@in@@##1#1##2##3\pgfutil@in@@{%
\ifx\pgfutil@in@##2\pgfutil@in@false\else\pgfutil@in@true\fi}%
\pgfutil@in@@#2#1\pgfutil@in@\pgfutil@in@@}
\def\pgfutil@nnil{\pgfutil@nil}
\def\pgfutil@fornoop#1\@@#2#3{}
\long\def\pgfutil@for#1:=#2\do#3{%
\expandafter\def\expandafter\pgfutil@fortmp\expandafter{#2}%
\ifx\pgfutil@fortmp\pgfutil@empty \else
\expandafter\pgfutil@forloop#2,\pgfutil@nil,\pgfutil@nil\@@#1{#3}\fi}
\long\def\pgfutil@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\pgfutil@nnil \else
#5\def#4{#2}\ifx #4\pgfutil@nnil \else#5\pgfutil@iforloop #3\@@#4{#5}\fi\fi}
\long\def\pgfutil@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\pgfutil@nnil
\expandafter\pgfutil@fornoop \else
#4\relax\expandafter\pgfutil@iforloop\fi#2\@@#3{#4}}
\def\pgfutil@tfor#1:={\pgfutil@tf@r#1 }
\long\def\pgfutil@tf@r#1#2\do#3{\def\pgfutil@fortmp{#2}\ifx\pgfutil@fortmp\pgfutil@space\else
\pgfutil@tforloop#2\pgfutil@nil\pgfutil@nil\@@#1{#3}\fi}
\long\def\pgfutil@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\pgfutil@nnil
\expandafter\pgfutil@fornoop \else
#4\relax\expandafter\pgfutil@tforloop\fi#2\@@#3{#4}}
\def\pgfutil@space{ }
\chardef\pgfutil@inputcheck0
\def\pgfutil@IfFileExists#1#2#3{%
\openin\pgfutil@inputcheck=#1 %
\ifeof\pgfutil@inputcheck
#3\relax
\else
#2\relax
\fi
\closein\pgfutil@inputcheck}
\def\pgfutil@InputIfFileExists#1#2#3{\pgfutil@IfFileExists{#1}{\input #1\relax#2}{#3}}%
\def\pgfutil@loop#1\pgfutil@repeat{\def\pgfutil@body{#1}\pgfutil@iterate}
\def\pgfutil@iterate{\pgfutil@body \let\pgfutil@next\pgfutil@iterate \else\let\pgfutil@next\relax\fi \pgfutil@next}
\let\pgfutil@repeat=\fi %
\let\pgfutil@scan@mark\relax
\let\pgfutil@scan@stop\relax
\long\def\pgfutil@switch#1#2#3#4#5{%
\pgfutil@exp
\pgfutil@switch@@{#1}%
{#2}#3%
{#2}{}%
\pgfutil@scan@mark{#4}%
\pgfutil@scan@mark{#5}%
\pgfutil@scan@stop
}
\long\def\pgfutil@switch@@#1#2#3#4{%
#1{#2}{#3}%
{\pgfutil@switch@end{#4}}%
{\pgfutil@switch@@{#1}{#2}}%
}
\long\def\pgfutil@switch@end#1#2#3\pgfutil@scan@mark#4#5\pgfutil@scan@stop{\pgfutil@exp@end#1#4}
\let\pgfutil@aux@read@hook=\relax
\newtoks\pgfutil@everybye
\def\pgfutil@addpdfresource@extgs#1{\pgf@sys@addpdfresource@extgs@plain{#1}}
\def\pgfutil@addpdfresource@colorspaces#1{\pgf@sys@addpdfresource@colorspaces@plain{#1}}
\def\pgfutil@addpdfresource@patterns#1{\pgf@sys@addpdfresource@patterns@plain{#1}}
\def\pgfutil@setuppdfresources{\pgf@sys@setuppdfresources@plain}
\let\pgfutil@insertatbegincurrentpage=\relax
\def\pgfutil@raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
\def\pgfutil@raggedleft{\leftskip\z@ plus2em \rightskip\z@ \spaceskip.3333em \xspaceskip.5em\parfillskip0pt\relax}
\def\pgfutil@packageerror#1#2#3{\errhelp{#3}\errmessage{Package #1 Error: #2}}
\def\pgfutil@packagewarning#1#2{\immediate\write17{Package #1: Warning! #2.}}
\def\pgferror#1{\pgfutil@packageerror{pgf}{#1}{}}
\def\pgfwarning#1{\pgfutil@packagewarning{pgf}{#1}}
\def\usepgflibrary{\pgfutil@ifnextchar[{\use@pgflibrary}{\use@@pgflibrary}}%
\def\use@pgflibrary[#1]{\use@@pgflibrary{#1}}
\def\use@@pgflibrary#1{%
\edef\pgf@list{#1}%
\pgfutil@for\pgf@temp:=\pgf@list\do{%
\expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{\pgf@temp}%
\ifx\pgf@temp\pgfutil@empty
\else
\expandafter\ifx\csname pgf@library@\pgf@temp @loaded\endcsname\relax%
\expandafter\let\csname pgf@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
\expandafter\edef\csname pgf@library@#1@atcode\endcsname{\the\catcode`\@}
\expandafter\edef\csname pgf@library@#1@barcode\endcsname{\the\catcode`\|}
\expandafter\edef\csname pgf@library@#1@dollarcode\endcsname{\the\catcode`\$}
\catcode`\@=11
\catcode`\|=12
\catcode`\$=3
\pgfutil@InputIfFileExists{pgflibrary\pgf@temp.code.tex}{}{%
\pgferror{I did not find the pgf library
'\pgf@temp'. I looked for the file named
pgflibrary\pgf@temp.code.tex, but could not find it in
the current texmf trees.}
}%
\catcode`\@=\csname pgf@library@#1@atcode\endcsname
\catcode`\|=\csname pgf@library@#1@barcode\endcsname
\catcode`\$=\csname pgf@library@#1@dollarcode\endcsname
\fi%
\fi
}%
}
\def\usepgfmodule{\pgfutil@ifnextchar[{\use@pgfmodule}{\use@@pgfmodule}}%
\def\use@pgfmodule[#1]{\use@@pgfmodule{#1}}
\def\use@@pgfmodule#1{%
\edef\pgf@list{#1}%
\pgfutil@for\pgf@temp:=\pgf@list\do{%
\expandafter\ifx\csname pgf@module@\pgf@temp @loaded\endcsname\relax%
\expandafter\let\csname pgf@module@\pgf@temp @loaded\endcsname=\pgfutil@empty%
\expandafter\edef\csname pgf@module@#1@atcode\endcsname{\the\catcode`\@}
\expandafter\edef\csname pgf@module@#1@barcode\endcsname{\the\catcode`\|}
\expandafter\edef\csname pgf@module@#1@dollarcode\endcsname{\the\catcode`\$}
\catcode`\@=11
\catcode`\|=12
\catcode`\$=3
\input pgfmodule\pgf@temp.code.tex
\catcode`\@=\csname pgf@module@#1@atcode\endcsname
\catcode`\|=\csname pgf@module@#1@barcode\endcsname
\catcode`\$=\csname pgf@module@#1@dollarcode\endcsname
\fi%
}%
}
\def\pgfutilensuremath#1{%
\ifmmode#1\else$#1$\fi
}
\begingroup
\catcode`\"=12
\edef\pgf@loc@TMPa{"}%
\gdef\pgfutilpreparefilename#1{%
\begingroup
\ifnum\the\catcode`\"=13
\pgfutilconvertdcolon
\fi
\xdef\pgf@temp{#1}%
\endgroup
\expandafter\pgfutil@in@\expandafter"\expandafter{\pgf@temp}%
\ifpgfutil@in@
\def\pgf@loc@TMPa{\pgfutilstrreplace{"}{}}%
\expandafter\pgf@loc@TMPa\expandafter{\pgf@temp}%
\edef\pgfretval{"\pgfretval"}%
\let\pgfretvalquoted=\pgfretval
\else
\let\pgfretval=\pgf@temp
\edef\pgfretvalquoted{"\pgfretval"}%
\fi
}%
\catcode`\"=13
\xdef\pgfutilconvertdcolon{%
\noexpand\def\noexpand"{\pgf@loc@TMPa}%
}%
\endgroup
\def\pgfutil@command@to@string#1#2{%
\expandafter\pgfutil@command@to@string@@\meaning#1\pgfutil@EOI{#2}%
}%
\xdef\pgfutil@glob@TMPa{\meaning\pgfutil@empty}%
\expandafter\def\expandafter\pgfutil@command@to@string@@\pgfutil@glob@TMPa#1\pgfutil@EOI#2{%
\def#2{#1}%
}%
\begingroup
\catcode`\|=0
\catcode`\\=12
|gdef|pgfutil@backslash@as@other{\}%
|endgroup
\def\pgfutilifcontainsmacro#1#2#3{%
\def\pgf@marshal{#1}%
\pgfutil@command@to@string\pgf@marshal\pgf@marshal
\edef\pgf@marshal{\noexpand\pgfutil@in@{\pgfutil@backslash@as@other}{\pgf@marshal}}%
\pgf@marshal
\ifpgfutil@in@
\def\pgf@marshal{#2}%
\else
\def\pgf@marshal{#3}%
\fi
\pgf@marshal
}%
\def\pgfutilifstartswith#1#2#3#4{%
\def\pgfutilifstartswith@ ##1#1##2\pgf@EOI{%
\def\pgfutil@tmp{##1}%
\ifx\pgfutil@tmp\pgfutil@empty
\def\pgfutil@tmp#1####1\pgf@EOI{%
\def\pgfretval{####1}%
}%
\pgfutil@tmp#2\pgf@EOI%
#3\relax%
\else
#4\relax%
\fi
}%
\pgfutilifstartswith@#2--#1\pgf@EOI%
}%
\long\def\pgfutilstrreplace#1#2#3{%
\def\pgfretval{}%
\long\def\pgfutil@search@and@replace@@##1#1##2\pgf@EOI{%
\expandafter\def\expandafter\pgfretval\expandafter{\pgfretval ##1#2}%
\pgfutil@search@and@replace@loop{#1}{##2}%
}%
\pgfutil@search@and@replace@loop{#1}{#3}%
}
\long\def\pgfutil@search@and@replace@loop#1#2{%
\pgfutil@in@{#1}{#2}%
\ifpgfutil@in@
\def\pgf@loc@TMPa{\pgfutil@search@and@replace@@ #2\pgf@EOI}%
\else
\expandafter\def\expandafter\pgfretval\expandafter{\pgfretval #2}%
\let\pgf@loc@TMPa=\relax
\fi
\pgf@loc@TMPa
}%
\def\pgfutilsolvetwotwoleq#1#2{%
\begingroup
\dimendef\aa=0
\dimendef\ab=1
\dimendef\ba=2
\dimendef\bb=3
\dimendef\ra=4
\dimendef\rb=5
\dimendef\tmpa=6
\dimendef\tmpb=7
\edef\pgf@temp{#1}%
\expandafter\pgfutilsolvetwotwoleq@A\pgf@temp
\edef\pgf@temp{#2}%
\expandafter\pgfutilsolvetwotwoleq@r\pgf@temp
\pgfutilsolvetwotwoleq@ifislarger\aa\ba{%
\def\Pa{a}%
\def\Pb{b}%
}{%
\def\Pa{b}%
\def\Pb{a}%
}%
\tmpa=\csname m\Pa a\endcsname pt %
\ifdim\tmpa<0pt \tmpa=-\tmpa\fi
\ifdim\tmpa<0.0001pt
\let\pgfmathresult=\pgfutil@empty
\else
\pgfmathreciprocal@
{\csname m\Pa a\endcsname}%
\let\pivot=\pgfmathresult
\csname \Pb a\endcsname=\pivot\csname \Pb a\endcsname
\edef\factor{\expandafter\pgf@sys@tonumber\csname \Pb a\endcsname}%
\tmpa=-\factor\csname \Pa b\endcsname
\advance\csname \Pb b\endcsname by\tmpa
\tmpa=-\factor\csname r\Pa\endcsname
\advance\csname r\Pb\endcsname by\tmpa
\tmpa=\csname \Pb b\endcsname%
\ifdim\tmpa<0pt \tmpa=-\tmpa\fi
\ifdim\tmpa<0.0001pt
\let\pgfmathresult=\pgfutil@empty
\else
\pgfmathdivide@
{\expandafter\pgf@sys@tonumber\csname r\Pb\endcsname}
{\expandafter\pgf@sys@tonumber\csname \Pb b\endcsname}%
\expandafter\let\csname pgfmathresult\Pb\endcsname=\pgfmathresult
\tmpa=\csname pgfmathresult\Pb\endcsname\csname \Pa b\endcsname
\advance\csname r\Pa\endcsname by-\tmpa
\tmpa=\pivot\csname r\Pa\endcsname
\expandafter\edef\csname pgfmathresult\Pa\endcsname{\pgf@sys@tonumber\tmpa}%
\edef\pgfmathresult{%
{\csname pgfmathresult\Pa\endcsname}%
{\csname pgfmathresult\Pb\endcsname}%
}%
\fi
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}%
\def\pgfutilsolvetwotwoleq@ifislarger#1#2#3#4{%
\tmpa=#1
\ifdim\tmpa<0pt
\multiply\tmpa by-1
\fi
\tmpb=#2
\ifdim\tmpb<0pt
\multiply\tmpb by-1
\fi
\ifdim\tmpa>\tmpb
#3%
\else
#4%
\fi
}%
\def\pgfutilsolvetwotwoleqfloat@ifislarger#1#2#3#4{%
\pgfmathfloatabs@{#1}\let\tmpa=\pgfmathresult
\pgfmathfloatabs@{#2}\let\tmpb=\pgfmathresult
\pgfmathfloatlessthan@{\tmpb}{\tmpa}%
\ifpgfmathfloatcomparison
#3%
\else
#4%
\fi
}%
\def\pgfutilsolvetwotwoleq@A#1#2#3#4{%
\def\maa{#1}\def\mab{#2}%
\def\mba{#3}\def\mbb{#3}%
\aa=#1pt \ab=#2pt
\ba=#3pt \bb=#4pt
}
\def\pgfutilsolvetwotwoleq@r#1#2{%
\ra=#1pt \rb=#2pt
}%
\def\pgfutilsolvetwotwoleqfloat@A#1#2#3#4{%
\pgfmathfloatparsenumber{#1}\let\maa=\pgfmathresult
\pgfmathfloatparsenumber{#2}\let\mab=\pgfmathresult
\pgfmathfloatparsenumber{#3}\let\mba=\pgfmathresult
\pgfmathfloatparsenumber{#4}\let\mbb=\pgfmathresult
}
\def\pgfutilsolvetwotwoleqfloat@r#1#2{%
\pgfmathfloatparsenumber{#1}\let\ra=\pgfmathresult
\pgfmathfloatparsenumber{#2}\let\rb=\pgfmathresult
}%
\def\pgfutilsolvetwotwoleqfloat#1#2{%
\begingroup
\pgfmathfloatcreate{1}{1.0}{-4}%
\let\thresh=\pgfmathresult
\edef\pgf@temp{#1}%
\expandafter\pgfutilsolvetwotwoleqfloat@A\pgf@temp
\edef\pgf@temp{#2}%
\expandafter\pgfutilsolvetwotwoleqfloat@r\pgf@temp
\pgfutilsolvetwotwoleqfloat@ifislarger\maa\mba{%
\def\Pa{a}%
\def\Pb{b}%
}{%
\def\Pa{b}%
\def\Pb{a}%
}%
\expandafter\pgfmathfloatabs@\expandafter{\csname m\Pa a\endcsname}%
\let\tmpa=\pgfmathresult
\pgfmathfloatlessthan@{\tmpa}{\thresh}%
\ifpgfmathfloatcomparison
\let\pgfmathresult=\pgfutil@empty
\else
\expandafter\pgfmathfloatreciprocal@\expandafter{\csname m\Pa a\endcsname}%
\let\pivot=\pgfmathresult
\expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pb a\endcsname}{\pivot}%
\let\factor=\pgfmathresult
\expandafter\let\csname m\Pb a\endcsname=\factor
\expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pa b\endcsname}{\factor}%
\let\tmpa=\pgfmathresult
\expandafter\pgfmathfloatsubtract@\expandafter{\csname m\Pb b\endcsname}{\tmpa}%
\expandafter\let\csname m\Pb b\endcsname=\pgfmathresult
\expandafter\pgfmathfloatmultiply@\expandafter{\csname r\Pa\endcsname}{\factor}%
\let\tmpa=\pgfmathresult
\expandafter\pgfmathfloatsubtract@\expandafter{\csname r\Pb\endcsname}{\tmpa}%
\expandafter\let\csname r\Pb\endcsname=\pgfmathresult
\expandafter\pgfmathfloatabs@\expandafter{\csname m\Pb b\endcsname}%
\let\tmpa=\pgfmathresult
\pgfmathfloatlessthan@{\tmpa}{\thresh}%
\ifpgfmathfloatcomparison
\let\pgfmathresult=\pgfutil@empty
\else
\edef\pgf@marshal{%
\noexpand\pgfmathfloatdivide@
{\csname r\Pb\endcsname}
{\csname m\Pb b\endcsname}%
}%
\pgf@marshal
\expandafter\let\csname pgfmathresult\Pb\endcsname=\pgfmathresult
\let\tmpa=\pgfmathresult
\expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pa b\endcsname}{\tmpa}%
\let\tmpa=\pgfmathresult
\expandafter\pgfmathfloatsubtract@\expandafter{\csname r\Pa\endcsname}{\tmpa}%
\expandafter\let\csname r\Pa\endcsname=\pgfmathresult
\expandafter\pgfmathfloatmultiply@\expandafter{\csname r\Pa\endcsname}{\pivot}%
\expandafter\let\csname pgfmathresult\Pa\endcsname=\pgfmathresult
\edef\pgfmathresult{%
{\csname pgfmathresult\Pa\endcsname}%
{\csname pgfmathresult\Pb\endcsname}%
}%
\expandafter\pgfutilsolvetwotwoleqfloat@to@pgf@range\pgfmathresult
\fi
\fi
\pgfmath@smuggleone\pgfmathresult
\endgroup
}%
\def\pgfutilsolvetwotwoleqfloat@to@pgf@range#1#2{%
\pgfmathfloatcreate{1}{1.6}{4}\let\pgfutilsolvetwotwoleqfloat@to@pgf@range@max=\pgfmathresult
\pgfmathfloatabs@{#1}%
\expandafter\pgfmathfloatlessthan@\expandafter{\pgfmathresult}{\pgfutilsolvetwotwoleqfloat@to@pgf@range@max}%
\ifpgfmathfloatcomparison
\pgfmathfloatabs@{#2}%
\expandafter\pgfmathfloatlessthan@\expandafter{\pgfmathresult}{\pgfutilsolvetwotwoleqfloat@to@pgf@range@max}%
\ifpgfmathfloatcomparison
\pgfmathfloattofixed{#1}\let\tmpa=\pgfmathresult
\pgfmathfloattofixed{#2}%
\edef\pgfmathresult{{\tmpa}{\pgfmathresult}}%
\else
\let\pgfmathresult=\pgfutil@empty
\fi
\else
\let\pgfmathresult=\pgfutil@empty
\fi
}%
\let\pgfutil@write=\write
\let\pgfutil@read=\read
\let\pgfutil@protect\relax
\def\pgfutil@check@rerun#1#2{}
\newdimen\pgfutil@tempdima
\newdimen\pgfutil@tempdimb
\let\pgfutil@ifluatex\iffalse
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
\else
\expandafter\let\csname pgfutil@ifluatex\expandafter\endcsname
\csname iftrue\endcsname
\fi
\pgfutil@ifluatex
\let\pgfutil@directlua\directlua
\pgfutil@directlua{%
tex.enableprimitives('pgfutil@',{'luaescapestring'})}
\else
\def\pgfutil@directlua#1{}
\def\pgfutil@luaescapestring#1{}
\fi
\def\pgfutil@shellescape@lua@eightseven#1{%
\pgfutil@directlua{os.execute("\pgfutil@luaescapestring{#1}")}%
}%
\def\pgfutil@shellescape#1{%
\immediate\write18{#1}%
}%
\pgfutil@IfUndefined{directlua}{%
}{%
\pgfutil@IfUndefined{lastsavedimageresourcepages}{%
}{%
\let\pgfutil@shellescape=\pgfutil@shellescape@lua@eightseven
}%
}%
\def\pgfutil@advancestringcounter#1{%
\begingroup
\c@pgf@counta=#1\relax
\advance\c@pgf@counta by1
\edef#1{\the\c@pgf@counta}%
\pgfmath@smuggleone#1%
\endgroup
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfutil-common.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//separators.tex ====
\section{Separators with a shared cutoff}\label{sec:separators}
Decomposing a normalized schedule at selected slots is a central device
in Dolev--Warmuth \citep[Theorem~2]{DW1984} and in the proper-decomposition
construction of Nederlof, Swennenhuis, and Węgrzycki
\citep[Section~3]{NSW2025}. Here we prove the shared-cutoff form needed
for the interval construction: successive boundaries must separate the
same ideal of low-priority jobs. The global-list invariants in later
sections control these descriptions inside descendant intervals.
This section concerns one fixed frame and a domain consisting of a
contiguous interval of a feasible schedule. A set is an \emph{ideal}
in the domain if it contains every domain predecessor of each of its
members. Its complement in the domain is an upset.
\begin{definition}\label{def:separator}
Given an ideal \(S\) of low jobs in a domain, a slot \(z\) is a
\emph{separator at cutoff \(S\)} if
\begin{enumerate}[label=(\alph*)]
\item every domain job before \(z\) that is outside \(S\) belongs to \(P_z\);
\item every domain job after \(z\) that belongs to \(S\) belongs to \(D_z\).
\end{enumerate}
The other domain jobs are called high. A left boundary outside the domain
is also a separator when all low domain jobs descend from it; there are
then no domain jobs before that boundary.
\end{definition}
An actual separator has a useful description of its earlier jobs. For
a global set \(H\subseteq J\), put
\begin{equation}
B_z(H)=P_z\cup\bigl(H\setminus\wD z\bigr).
\label{eq:B-definition}
\end{equation}
\begin{lemma}\label{lem:separator-description}
If \(z\) is an actual separator for a domain \(U\) at cutoff \(S\),
and \(H\cap U=S\), then \(B_z(H)\cap U\) is exactly the set of
domain jobs strictly earlier than \(z\). Reversing order and time,
and exchanging low with high, preserves the separator property.
\end{lemma}
\begin{proof}
Every job in \(P_z\) is strictly earlier than \(z\). An earlier low
job is outside \(\wD z\). A low job at \(z\) belongs to \(\wD z\),
and a later low job belongs to \(D_z\) by separation. Finally, every
earlier high job belongs to \(P_z\). These observations give both
inclusions. Reversal exchanges the two conditions in
\Cref{def:separator}.
\end{proof}
\subsection{Lexicographic normalization}
A \emph{priority order} is a total order of the domain extending
precedence. Read a full schedule chronologically, with each triple sorted
by priority. Among the finitely many feasible full schedules of the
domain, choose one whose resulting sequence of priority indices is
lexicographically least. Call it \emph{normalized} for that priority.
This is an existence choice, not an operation of the decision algorithm.
\begin{lemma}\label{lem:lex-prefix}
In a normalized schedule, a feasible exchange that puts a better-priority
job into an earlier slot is impossible. More generally, fix a slot \(r\).
After any feasible reordering confined strictly after \(r\), a feasible
exchange of a job at \(r\) with a better-priority job at a later slot
is still impossible.
\end{lemma}
\begin{proof}
Replacing one member of a sorted triple by a better-priority job
lexicographically improves that triple. In the second assertion, the
schedule through \(r\) is unchanged by the intervening reordering.
The proposed exchange would therefore first change the normalized
sequence at \(r\), and improve it there. The resulting full schedule
would contradict minimality, regardless of what happens later.
\end{proof}
\begin{lemma}[Shared-cutoff walk]\label{lem:shared}
Fix a normalized full schedule of a domain and let \(S\) and \(S^+\)
be consecutive priority prefixes, differing by the promotion of one job
from high to low. Suppose \(s\) is a separator at cutoff \(S\),
either inside the domain or at its exterior left boundary.
Then there is a separator \(t\ge s\), found by advancing only to
domain slots on the right, that separates both \(S\) and \(S^+\).
If the priority order is specified on a larger job set and the promoted
job is outside the domain, one may take \(t=s\).
\end{lemma}
\begin{proof}
\textbf{One advance at a fixed cutoff.}
Keep the normalized schedule and its priority order fixed. Let \(L\)
be a prefix of that priority order, and suppose the current position
\(s\) satisfies the earlier-high condition for \(L\).
If a later low job does not descend from \(s\), choose the earliest
slot \(t>s\) containing such a job, and choose one of them, \(x\).
Every domain predecessor of \(x\) lies strictly before \(s\).
Indeed, that predecessor is low because \(L\) is an ideal.
A predecessor at \(s\) would force \(x\in D_s\). A predecessor
strictly between \(s\) and \(t\) would descend from \(s\), by the
earliest choice of \(t\), and again force \(x\in D_s\).
Let \(y\) be a high domain job at a slot \(r\) with \(s\le r=stealth]
\fill[blue!7] (3.15,-.25) rectangle (6.35,.62);
\draw[->,gray!75] (-.25,0) -- (10.6,0);
\node[anchor=east,font=\footnotesize] at (10.6,-.75)
{time in the working frame};
\foreach \x in {0,3,6.5,9.6}
{\draw[thick] (\x,-.18) -- (\x,.62);}
\node[above] at (0,.62) {$a=s_0$};
\node[above] at (3,.62) {$a'=s_i$};
\node[above] at (6.5,.62) {$b'=s_{i+1}$};
\node[above] at (9.6,.62) {$v=s_{q+1}$};
\node at (4.75,.22) {$W'=(a',b')$};
\node at (1.5,.22) {$\cdots$};
\node at (8.05,.22) {$\cdots$};
\draw[blue!65!black] (3,1.18) -- (3,1.4) -- (6.5,1.4) -- (6.5,1.18);
\node[above,text=blue!65!black] at (4.75,1.4)
{both endpoints separate at cutoff $S_i$};
\node[anchor=north,align=center] at (4.75,-1.05)
{$W'\cap S_i\subseteq D_{a'}$\qquad
$W'\setminus S_i\subseteq P_{b'}$};
\end{tikzpicture}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//shared-cutoff.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//switch-localization.tex ====
\begin{tikzpicture}[x=1cm,y=1cm,font=\small,>=stealth]
\fill[teal!8] (4.35,-.25) rectangle (7.25,.65);
\draw[->,gray!75] (-.25,0) -- (10.6,0);
\foreach \x in {0,2.2,4.2,7.4,9.6}
{\draw[thick] (\x,-.18) -- (\x,.65);}
\node[above] at (0,.65) {$a_-$};
\node[above] at (2.2,.65) {$v_-$};
\node[above] at (4.2,.65) {$a$};
\node[above] at (7.4,.65) {$b$};
\node[above] at (9.6,.65) {$b_-$};
\node at (5.8,.25) {$W=(a,b)$};
\draw[gray] (0,1.24) -- (0,1.43) -- (9.6,1.43) -- (9.6,1.24);
\node[above] at (4.8,1.43) {$U=(a_-,b_-)$};
\node[anchor=east,font=\footnotesize] at (10.6,-.7)
{time in the new frame};
\node[anchor=north,align=center] at (4.8,-1.05)
{$G=D_{a_-}\cap (J\setminus\widehat P_a)
\cap (J\setminus\widehat P_{v_-})\cap H_-^*$};
\node[draw=teal!60!black,fill=teal!3,rounded corners=2pt,
inner sep=8pt,align=center,font=\footnotesize] at (4.8,-2.33)
{If $z\in G$ were at or before $a$, then $z\in U$ and hence $z\in H_-$.\\[3pt]
At or before $v_-$: $z\in\widehat P_{v_-}$.
\qquad After $v_-$ through $a$: $z\in\widehat P_a$.};
\end{tikzpicture}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//switch-localization.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikz.code.tex ====
\ProvidesPackageRCS{tikz.code.tex}
\def\tikzerror#1{\pgfutil@packageerror{tikz}{#1}{}}
\usepgflibrary{plothandlers}
\newdimen\tikz@lastx
\newdimen\tikz@lasty
\newdimen\tikz@lastxsaved
\newdimen\tikz@lastysaved
\newdimen\tikz@lastmovetox
\newdimen\tikz@lastmovetoy
\newdimen\tikzleveldistance
\newdimen\tikzsiblingdistance
\newbox\tikz@figbox
\newbox\tikz@figbox@bg
\newbox\tikz@tempbox
\newbox\tikz@tempbox@bg
\newcount\tikztreelevel
\newcount\tikznumberofchildren
\newcount\tikznumberofcurrentchild
\newcount\tikz@fig@count
\newif\iftikz@node@is@a@label
\newif\iftikz@snaked
\newif\iftikz@decoratepath
\let\tikz@options\pgfutil@empty
\def\tikz@addoption#1{%
\expandafter\def\expandafter\tikz@options\expandafter{\tikz@options#1}}%
\def\tikz@addmode#1{%
\expandafter\def\expandafter\tikz@mode\expandafter{\tikz@mode#1}}%
\def\tikz@addtransform#1{%
\ifx\tikz@transform\relax
#1%
\else
\expandafter\def\expandafter\tikz@transform\expandafter{\tikz@transform#1}%
\fi
}%
\pgfkeys{/tikz/.is family}%
\def\tikzset{\pgfqkeys{/tikz}}%
\def\tikzoption#1{%
\pgfutil@ifnextchar[%
{\tikzoption@opt{#1}}{\tikzoption@noopt{#1}}}%
\def\tikzoption@opt#1[#2]#3{%
\pgfkeysdef{/tikz/#1}{#3}%
\pgfkeyssetvalue{/tikz/#1/.@def}{#2}}%
\def\tikzoption@noopt#1#2{%
\pgfkeysdef{/tikz/#1}{#2}%
\pgfkeyssetvalue{/tikz/#1/.@def}{\pgfkeysvaluerequired}}%
\tikzoption{baseline}[0pt]{%
\pgfutil@ifnextchar(%
{\tikz@baseline@coordinate}{\tikz@baseline@simple}#1\@nil}%
\def\tikz@baseline@simple#1\@nil{\pgfsetbaseline{#1}}%
\def\tikz@baseline@coordinate#1\@nil{%
\pgfsetbaselinepointlater{\tikz@scan@one@point\pgfutil@firstofone#1}}%
\tikzoption{trim left}[0pt]{\pgfutil@ifnextchar({\tikz@trim@coordinate{left}}{\tikz@trim@simple{left}}#1\@nil}%
\tikzoption{trim right}{\pgfutil@ifnextchar({\tikz@trim@coordinate{right}}{\tikz@trim@simple{right}}#1\@nil}%
\def\tikz@trim@simple#1#2\@nil{\csname pgfsettrim#1\endcsname{#2}}%
\def\tikz@trim@coordinate#1#2\@nil{\csname pgfsettrim#1pointlater\endcsname{\tikz@scan@one@point\pgfutil@firstofone#2}}%
\tikzoption{line width}{\tikz@semiaddlinewidth{#1}}%
\def\tikz@semiaddlinewidth#1{\tikz@addoption{\pgfsetlinewidth{#1}}\pgfmathsetlength\pgflinewidth{#1}}%
\tikzoption{cap}{\tikz@addoption{\csname pgfset#1cap\endcsname}}%
\tikzoption{join}{\tikz@addoption{\csname pgfset#1join\endcsname}}%
\tikzoption{line cap}{\tikz@addoption{\csname pgfset#1cap\endcsname}}%
\tikzoption{line join}{\tikz@addoption{\csname pgfset#1join\endcsname}}%
\tikzoption{miter limit}{\tikz@addoption{\pgfsetmiterlimit{#1}}}%
\tikzoption{dash pattern}{%
\def\tikz@temp{#1}%
\ifx\tikz@temp\pgfutil@empty%
\def\tikz@dashpattern{}%
\tikz@addoption{\pgfsetdash{}{0pt}}%
\else%
\def\tikz@dashpattern{}%
\expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
\edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
\expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
\fi}%
\tikzoption{dash phase}{%
\def\tikz@dashphase{#1}%
\edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
\expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
}%
\tikzoption{dash}{\tikz@parse@full@dash#1\pgf@stop}%
\def\tikz@parse@full@dash#1phase#2\pgf@stop{%
\def\tikz@dashphase{#2}%
\def\tikz@temp{#1}%
\ifx\tikz@temp\pgfutil@empty%
\def\tikz@dashpattern{}%
\tikz@addoption{\pgfsetdash{}{0pt}}%
\else%
\def\tikz@dashpattern{}%
\expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
\edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
\expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
\fi%
}%
\def\tikz@dashphase{0pt}%
\def\tikz@dashpattern{}%
\def\tikz@scandashon n#1o{%
\expandafter\def\expandafter\tikz@dashpattern\expandafter{\tikz@dashpattern{#1}}%
\pgfutil@ifnextchar\@nil{\pgfutil@gobble}{\tikz@scandashoff}}%
\def\tikz@scandashoff ff#1o{%
\expandafter\def\expandafter\tikz@dashpattern\expandafter{\tikz@dashpattern{#1}}%
\pgfutil@ifnextchar\@nil{\pgfutil@gobble}{\tikz@scandashon}}%
\tikzset{
dash expand off/.code={%
\ifcsname tikz@library@decorations@loaded\endcsname\else
\tikzerror{You need \string\usetikzlibrary{decorations} for ``dash expand off''}%
\fi
\tikz@addoption{%
\pgfgetpath\currentpath
\pgfprocessround{\currentpath}{\currentpath}%
\pgf@decorate@parsesoftpath{\currentpath}{\currentpath}%
\pgfmathsetmacro\on{\expandafter\pgfutil@firstoftwo\tikz@dashpattern}%
\pgfmathsetmacro\off{\expandafter\pgfutil@secondoftwo\tikz@dashpattern}%
\pgfmathsetmacro\tikz@dashphase{\tikz@dashphase}%
\pgfmathsubtract@{\on}{\tikz@dashphase}%
\pgfmathmax@{\pgfmathresult,0}%
\let\dashphase=\pgfmathresult
\edef\rest{\pgf@sys@tonumber\dimexpr\pgf@decorate@totalpathlength - \on pt + 2\dimexpr\dashphase pt\relax\relax}%
\edef\onoff{\pgf@sys@tonumber\dimexpr\on pt+\off pt\relax}%
\pgfmathdivide@{\rest}{\onoff}%
\pgfmathfloor@{\pgfmathresult}%
\pgfmathmax@{\pgfmathresult,1}%
\pgfmathdivide@{\rest}{\pgfmathresult}%
\pgfmathsubtract@{\pgfmathresult}{\on}%
\pgfmathmax@{\pgfmathresult,\off}%
\edef\tikz@marshal{\noexpand\pgfsetdash{{+\on pt}{+\pgfmathresult pt}}{+\dashphase pt}}%
\tikz@marshal
}%
}
}
\tikzoption{draw opacity}{\tikz@addoption{\pgfsetstrokeopacity{#1}}}%
\tikzoption{double}[]{%
\def\tikz@temp{#1}%
\ifx\tikz@temp\tikz@nonetext%
\tikz@addmode{\tikz@mode@doublefalse}%
\else%
\ifx\tikz@temp\pgfutil@empty%
\else%
\pgfsetinnerstrokecolor{#1}%
\fi%
\tikz@addmode{\tikz@mode@doubletrue}%
\tikzset{every double/.try}%
\fi}%
\tikzoption{double distance}{%
\pgfmathsetlength{\pgf@x}{#1}%
\edef\tikz@double@setup{%
\pgf@x=\the\pgf@x%
\advance\pgf@x by2\pgflinewidth%
\pgflinewidth=\pgf@x%
\noexpand\pgfsetlinewidth{\pgflinewidth}%
\noexpand\pgfsetinnerlinewidth{\the\pgf@x}%
}%
\tikzset{double}}%
\def\tikz@double@setup{%
\pgf@x=2\pgflinewidth%
\advance\pgf@x by0.6pt%
\pgflinewidth=\pgf@x%
\pgfsetlinewidth{\pgflinewidth}%
\pgfsetinnerlinewidth{0.6pt}%
}%
\tikzset{double distance between line centers/.code={
\pgfmathsetlength{\pgf@x}{#1}%
\edef\tikz@double@setup{%
\pgf@x=\pgflinewidth%
\pgf@xa=\the\pgf@x%
\advance\pgf@x by\pgf@xa%
\advance\pgf@xa by-\pgflinewidth%
\pgflinewidth=\pgf@x%
\noexpand\pgfsetlinewidth{\pgflinewidth}%
\noexpand\pgfsetinnerlinewidth{\pgf@xa}%
}%
\tikzset{double}}}%
\tikzset{double equal sign distance/.style={double distance between line centers=0.45ex}}%
\tikzoption{even odd rule}[]{\tikz@addoption{\pgfseteorule}}%
\tikzoption{nonzero rule}[]{\tikz@addoption{\pgfsetnonzerorule}}%
\tikzoption{fill opacity}{\tikz@addoption{\pgfsetfillopacity{#1}}}%
\tikzoption{opacity}{\tikz@addoption{\pgfsetstrokeopacity{#1}\pgfsetfillopacity{#1}}}%
\tikzset{blend mode/.code={\tikz@addoption{\pgfsetblendmode{#1}}}}%
\tikzoption{color}{%
\tikz@addoption{%
\ifx\tikz@fillcolor\pgfutil@empty%
\ifx\tikz@strokecolor\pgfutil@empty%
\else%
\pgfsys@color@reset@inorderfalse%
\let\tikz@strokecolor\pgfutil@empty%
\let\tikz@fillcolor\pgfutil@empty%
\fi%
\else%
\pgfsys@color@reset@inorderfalse%
\let\tikz@strokecolor\pgfutil@empty%
\let\tikz@fillcolor\pgfutil@empty%
\fi%
\pgfutil@colorlet{tikz@color}{#1}%
\pgfutil@colorlet{.}{tikz@color}%
\pgfsetcolor{.}%
\pgfsys@color@reset@inordertrue%
}%
\def\tikz@textcolor{#1}}%
\tikzoption{rounded corners}[4pt]{\pgfsetcornersarced{\pgfpoint{#1}{#1}}}%
\tikzoption{sharp corners}[]{\pgfsetcornersarced{\pgfpointorigin}}%
\tikzset{x radius/.initial=0pt}%
\tikzset{y radius/.initial=0pt}%
\tikzset{%
radius/.code={%
\pgfmathparse{#1}%
\ifpgfmathunitsdeclared
\pgfkeyssetevalue{/tikz/x radius}{\pgfmathresult pt}%
\pgfkeyssetevalue{/tikz/y radius}{\pgfmathresult pt}%
\else
\pgfkeyssetevalue{/tikz/x radius}{\pgfmathresult}%
\pgfkeyssetevalue{/tikz/y radius}{\pgfmathresult}%
\fi
}%
}%
\tikzset{start angle/.initial=}%
\tikzset{end angle/.initial=}%
\tikzset{delta angle/.initial=}%
\tikzoption{x}{\tikz@handle@vec{\pgfsetxvec}{\tikz@handle@x}#1\relax}%
\tikzoption{y}{\tikz@handle@vec{\pgfsetyvec}{\tikz@handle@y}#1\relax}%
\tikzoption{z}{\tikz@handle@vec{\pgfsetzvec}{\tikz@handle@z}#1\relax}%
\def\tikz@handle@vec#1#2{\pgfutil@ifnextchar({\tikz@handle@coordinate#1}{\tikz@handle@single#2}}%
\def\tikz@handle@coordinate#1{\tikz@scan@one@point#1}%
\def\tikz@handle@single#1#2\relax{#1{#2}}%
\def\tikz@handle@x#1{\pgfsetxvec{\pgfpoint{#1}{0pt}}}%
\def\tikz@handle@y#1{\pgfsetyvec{\pgfpoint{0pt}{#1}}}%
\def\tikz@handle@z#1{\pgfsetzvec{\pgfpoint{#1}{#1}}}%
\tikzoption{scale}{\tikz@addtransform{\pgftransformscale{#1}}}%
\tikzoption{scale around}{\tikz@addtransform{\def\tikz@aroundaction{\pgftransformscale}\tikz@doaround{#1}}}%
\tikzoption{xscale}{\tikz@addtransform{\pgftransformxscale{#1}}}%
\tikzoption{xslant}{\tikz@addtransform{\pgftransformxslant{#1}}}%
\tikzoption{yscale}{\tikz@addtransform{\pgftransformyscale{#1}}}%
\tikzoption{yslant}{\tikz@addtransform{\pgftransformyslant{#1}}}%
\tikzoption{rotate}{\tikz@addtransform{\pgftransformrotate{#1}}}%
\tikzoption{rotate around}{\tikz@addtransform{\def\tikz@aroundaction{\pgftransformrotate}\tikz@doaround{#1}}}%
\def\tikz@doaround#1{%
\edef\tikz@temp{#1}%
\expandafter\tikz@doparseA\tikz@temp%
}%
\def\tikz@doparseA#1:{%
\def\tikz@temp@rot{#1}%
\tikz@scan@one@point\tikz@doparseB%
}%
\def\tikz@doparseB#1{%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
\tikz@aroundaction{\tikz@temp@rot}%
\pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
}%
\tikzoption{shift}{\tikz@addtransform{\tikz@scan@one@point\pgftransformshift#1\relax}}%
\tikzoption{xshift}{\tikz@addtransform{\pgftransformxshift{#1}}}%
\tikzoption{yshift}{\tikz@addtransform{\pgftransformyshift{#1}}}%
\tikzoption{cm}{\tikz@addtransform{\tikz@parse@cm#1\relax}}%
\tikzoption{reset cm}[]{\tikz@addtransform{\pgftransformreset}}%
\tikzoption{shift only}[]{\tikz@addtransform{\pgftransformresetnontranslations}}%
\def\tikz@parse@cm#1,#2,#3,#4,{%
\def\tikz@p@cm{{#1}{#2}{#3}{#4}}%
\tikz@scan@one@point\tikz@parse@cmA}%
\def\tikz@parse@cmA#1{%
\expandafter\pgftransformcm\tikz@p@cm{#1}%
}%
\tikzset{transform canvas/.code=%
{%
\tikz@addoption
{%
{%
\pgftransformreset%
\let\tikz@transform=\relax%
\tikzset{#1}%
\pgflowlevelsynccm%
}%
\pgf@relevantforpicturesizefalse%
}%
}%
}%
\tikzset{turn/.code={%
\pgf@x=0pt%
\pgf@y\pgf@x%
\pgf@process{\tikz@tangent}%
\advance\pgf@x by-\tikz@lastx%
\advance\pgf@y by-\tikz@lasty%
\pgfpointnormalised{}%
\pgf@x=-\pgf@x%
\pgf@ya=-\pgf@y%
\pgftransformcm%
{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@ya}}%
{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@x}}{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
}%
}%
\def\tikz@tangent@lookup{%
\pgfgetpath\tikz@temp%
\pgfprocesspathextractpoints\tikz@temp%
\pgfpointsecondlastonpath%
}%
\def\tikz@xyz@rotate@let{%
\let\pgf@z=\pgf@yc%
\let\pgf@za=\pgf@xc%
}%
\def\tikz@xyz@rotate@xyz@xaxis#1#2#3#4{%
\tikz@xyz@rotate@let%
\pgf@x=#1\relax%
\pgf@ya=#2\relax%
\pgf@za=#3\relax%
\pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
\pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
\pgf@y=\tikz@xyz@cos\pgf@ya%
\advance\pgf@y by-\tikz@xyz@sin\pgf@za%
\pgf@z=\tikz@xyz@sin\pgf@ya%
\advance\pgf@z by\tikz@xyz@cos\pgf@za%
}%
\def\tikz@xyz@rotate@xyz@yaxis#1#2#3#4{%
\tikz@xyz@rotate@let%
\pgf@xa=#1\relax%
\pgf@y=#2\relax%
\pgf@za=#3\relax%
\pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
\pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
\pgf@x=\tikz@xyz@cos\pgf@xa%
\advance\pgf@x by\tikz@xyz@sin\pgf@za%
\pgf@z=-\tikz@xyz@sin\pgf@xa%
\advance\pgf@z by\tikz@xyz@cos\pgf@za%
}%
\def\tikz@xyz@rotate@xyz@zaxis#1#2#3#4{%
\tikz@xyz@rotate@let%
\pgf@xa=#1\relax%
\pgf@ya=#2\relax%
\pgf@z=#3\relax%
\pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
\pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
\pgf@x=\tikz@xyz@cos\pgf@xa%
\advance\pgf@x by-\tikz@xyz@sin\pgf@ya%
\pgf@y=\tikz@xyz@sin\pgf@xa%
\advance\pgf@y by\tikz@xyz@cos\pgf@ya%
}%
\tikzset{rotate around x/.code={%
\tikz@xyz@rotate@let%
\pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
\tikz@xyz@rotate@xyz@xaxis{0pt}{1pt}{0pt}{\tikz@xyz@angle}%
\pgfextract@process\tikz@xyz@rotate@yvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
\tikz@xyz@rotate@xyz@xaxis{0pt}{0pt}{1pt}{\tikz@xyz@angle}%
\pgfsetzvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
\pgfsetyvec{\tikz@xyz@rotate@yvec}%
},
rotate around y/.code={%
\tikz@xyz@rotate@let%
\pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
\tikz@xyz@rotate@xyz@yaxis{1pt}{0pt}{0pt}{\tikz@xyz@angle}%
\pgfextract@process\tikz@xyz@rotate@xvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
\tikz@xyz@rotate@xyz@yaxis{0pt}{0pt}{1pt}{\tikz@xyz@angle}%
\pgfsetzvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
\pgfsetxvec{\tikz@xyz@rotate@xvec}%
},
rotate around z/.code={%
\tikz@xyz@rotate@let%
\pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
\tikz@xyz@rotate@xyz@zaxis{1pt}{0pt}{0pt}{\tikz@xyz@angle}%
\pgfextract@process\tikz@xyz@rotate@xvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
\tikz@xyz@rotate@xyz@zaxis{0pt}{1pt}{0pt}{\tikz@xyz@angle}%
\pgfsetyvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
\pgfsetxvec{\tikz@xyz@rotate@xvec}%
},
}%
\tikzoption{xstep}{\def\tikz@grid@x{#1}}%
\tikzoption{ystep}{\def\tikz@grid@y{#1}}%
\tikzoption{step}{\tikz@handle@vec{\tikz@step@point}{\tikz@step@single}#1\relax}%
\def\tikz@step@single#1{\def\tikz@grid@x{#1}\def\tikz@grid@y{#1}}%
\def\tikz@step@point#1{\pgf@process{#1}\edef\tikz@grid@x{\the\pgf@x}\edef\tikz@grid@y{\the\pgf@y}}%
\def\tikz@grid@x{1cm}%
\def\tikz@grid@y{1cm}%
\newif\iftikz@current@point@local
\tikzset{current point is local/.is if=tikz@current@point@local}%
\newif\iftikz@mode@double
\newif\iftikz@mode@fill
\newif\iftikz@mode@draw
\newif\iftikz@mode@clip
\newif\iftikz@mode@boundary
\newif\iftikz@mode@shade
\newif\iftikz@mode@fade@path
\newif\iftikz@mode@fade@scope
\let\tikz@mode=\pgfutil@empty
\def\tikz@nonetext{none}%
\tikzoption{path only}[]{\let\tikz@mode=\pgfutil@empty}%
\tikzset{
shade/.is choice,
shade/.default=true,
shade/true/.code=\tikz@addmode{\tikz@mode@shadetrue},
shade/false/.code=\tikz@addmode{\tikz@mode@shadefalse},
shade/none/.code=\tikz@addmode{\tikz@mode@shadefalse},
}%
\tikzoption{fill}[]{%
\edef\tikz@temp{#1}%
\ifx\tikz@temp\tikz@nonetext%
\tikz@addmode{\tikz@mode@fillfalse}%
\else%
\ifx\tikz@temp\pgfutil@empty%
\else%
\tikz@addoption{\pgfsetfillcolor{#1}}%
\def\tikz@fillcolor{#1}%
\fi%
\tikz@addmode{\tikz@mode@filltrue}%
\fi%
}%
\tikzoption{draw}[]{%
\edef\tikz@temp{#1}%
\ifx\tikz@temp\tikz@nonetext%
\tikz@addmode{\tikz@mode@drawfalse}%
\else%
\ifx\tikz@temp\pgfutil@empty%
\else%
\tikz@addoption{\pgfsetstrokecolor{#1}}%
\def\tikz@strokecolor{#1}%
\fi%
\tikz@addmode{\tikz@mode@drawtrue}%
\fi%
}%
\tikzoption{clip}[]{\tikz@addmode{\tikz@mode@cliptrue}}%
\tikzoption{use as bounding box}[]{\tikz@addmode{\tikz@mode@boundarytrue}}%
\tikzoption{save path}{\tikz@addmode{\pgfsyssoftpath@getcurrentpath#1\global\let#1=#1}}%
\tikzoption{use path}{\tikz@addmode{\pgfsyssoftpath@setcurrentpath#1}}%
\let\tikz@fillcolor=\pgfutil@empty
\let\tikz@strokecolor=\pgfutil@empty
\tikzset{insert path/.code=\tikz@scan@next@command#1\pgf@stop}%
\tikzset{pattern/.code=\tikzerror{You need to say \string\usetikzlibrary{patterns}},
pattern color/.style=pattern}%
\tikzset{path picture/.code=\tikz@addmode{\def\tikz@path@picture{#1}}}%
\tikzset{path fading/.code={
\def\tikz@temp{#1}%
\ifx\tikz@temp\tikz@nonetext%
\tikz@addmode{\tikz@mode@fade@pathfalse}%
\else%
\ifx\tikz@temp\pgfutil@empty%
\else%
\def\tikz@path@fading{#1}%
\fi%
\tikz@addmode{\tikz@mode@fade@pathtrue}%
\fi%
},
path fading/.default=,
scope fading/.code={
\def\tikz@temp{#1}%
\ifx\tikz@temp\tikz@nonetext%
\tikz@addmode{\tikz@mode@fade@scopefalse}%
\else%
\ifx\tikz@temp\pgfutil@empty%
\else%
\def\tikz@scope@fading{#1}%
\fi%
\tikz@addmode{\tikz@mode@fade@scopetrue}%
\fi%
},
scope fading/.default=}%
\tikzset{fit fading/.is if=tikz@fade@adjust}%
\tikzset{fading transform/.store in=\tikz@fade@transform}%
\tikzset{fading angle/.style={fading transform={rotate={#1}}}}%
\newif\iftikz@fade@adjust%
\tikz@fade@adjusttrue%
\let\tikz@fade@transform\pgfutil@empty%
\pgfutil@colorlet{transparent}{pgftransparent}%
\def\tikz@do@fade@transform{\let\tikz@transform=\relax\expandafter\tikzset\expandafter{\tikz@fade@transform}}%
\newif\iftikz@transparency@group%
\tikzset{/tikz/transparency group/.code=\tikz@transparency@grouptrue\def\tikz@transparency@group@options{isolated=true,#1}\let\tikz@blend@group\pgfutil@empty}%
\tikzset{/tikz/blend group/.code=\tikz@transparency@grouptrue\def\tikz@transparency@group@options{isolated=true}\def\tikz@blend@group{\pgfsetblendmode{#1}}}%
\let\tikz@blend@group\pgfutil@empty
\tikzoption{shading}{\def\tikz@shading{#1}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{shading angle}{\def\tikz@shade@angle{#1}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{top color}{%
\pgfutil@colorlet{tikz@axis@top}{#1}%
\pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
\def\tikz@shading{axis}\def\tikz@shade@angle{0}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{bottom color}{%
\pgfutil@colorlet{tikz@axis@bottom}{#1}%
\pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
\def\tikz@shading{axis}\def\tikz@shade@angle{0}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{middle color}{%
\pgfutil@colorlet{tikz@axis@middle}{#1}%
\def\tikz@shading{axis}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{left color}{%
\pgfutil@colorlet{tikz@axis@top}{#1}%
\pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
\def\tikz@shading{axis}\def\tikz@shade@angle{90}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{right color}{%
\pgfutil@colorlet{tikz@axis@bottom}{#1}%
\pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
\def\tikz@shading{axis}\def\tikz@shade@angle{90}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{ball color}{\pgfutil@colorlet{tikz@ball}{#1}\def\tikz@shading{ball}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{inner color}{\pgfutil@colorlet{tikz@radial@inner}{#1}\def\tikz@shading{radial}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{outer color}{\pgfutil@colorlet{tikz@radial@outer}{#1}\def\tikz@shading{radial}\tikz@addmode{\tikz@mode@shadetrue}}%
\def\tikz@shading{axis}%
\def\tikz@shade@angle{0}%
\pgfdeclareverticalshading[tikz@axis@top,tikz@axis@middle,tikz@axis@bottom]{axis}{100bp}{%
color(0bp)=(tikz@axis@bottom);
color(25bp)=(tikz@axis@bottom);
color(50bp)=(tikz@axis@middle);
color(75bp)=(tikz@axis@top);
color(100bp)=(tikz@axis@top)}%
\pgfutil@colorlet{tikz@axis@top}{gray}%
\pgfutil@colorlet{tikz@axis@middle}{gray!50!white}%
\pgfutil@colorlet{tikz@axis@bottom}{white}%
\pgfdeclareradialshading[tikz@ball]{ball}{\pgfqpoint{-10bp}{10bp}}{%
color(0bp)=(tikz@ball!15!white);
color(9bp)=(tikz@ball!75!white);
color(18bp)=(tikz@ball!70!black);
color(25bp)=(tikz@ball!50!black);
color(50bp)=(black)}%
\pgfutil@colorlet{tikz@ball}{blue}%
\pgfdeclareradialshading[tikz@radial@inner,tikz@radial@outer]{radial}{\pgfpointorigin}{%
color(0bp)=(tikz@radial@inner);
color(25bp)=(tikz@radial@outer);
color(50bp)=(tikz@radial@outer)}%
\pgfutil@colorlet{tikz@radial@inner}{gray}%
\pgfutil@colorlet{tikz@radial@outer}{white}%
\tikzset{
pin distance/.store in=\tikz@pin@distance,
pin distance=3ex,
pin position/.store in=\tikz@pin@default@pos,
pin position=above,
pin edge/.store in=\tikz@pin@edge@style,
pin edge={},
tikz@pin@post/.code={\global\let\tikz@pin@edge@style@smuggle=\tikz@pin@edge@style},
tikz@pre@pin@edge/.code={%
\toks0=\expandafter{\tikz@pin@edge@style@smuggle}%
\edef\pgf@marshal{\noexpand\tikzset{tikz@pin@options/.style={\the\toks0}}}%
\pgf@marshal
},%
}%
\tikzset{%
pin/.code={%
\begingroup
\ifnum\the\catcode`\:=\active\relax
\def\tikz@next{%
\endgroup
\tikz@parse@pin@active@i{#1}}%
\else
\def\tikz@next{%
\endgroup
\pgfutil@ifnextchar[%
{\tikz@parse@pin@nonactive}
{\tikz@parse@pin@nonactive[]}#1:\pgf@nil}%
\fi
\tikz@next}}%
\begingroup
\catcode`\:=\active\relax
\gdef\tikz@parse@pin@active@i#1{%
\pgfutil@ifnextchar[%
{\tikz@parse@pin@active}
{\tikz@parse@pin@active[]}#1:\pgf@nil}%
\long\gdef\tikz@parse@pin@active[#1]#2:#3\pgf@nil{%
\def\tikz@temp{#3}%
\ifx\tikz@temp\pgfutil@empty
\tikz@@parse@pin@active[#1]\tikz@pin@default@pos:#2:\pgf@nil%
\else
\tikz@@parse@pin@active[#1]#2:#3\pgf@nil%
\fi}%
\long\gdef\tikz@@parse@pin@active[#1]#2:#3:\pgf@nil{%
\tikzset{%
append after command = {%
\bgroup
[current point is local = true]
\pgfextra{\let\tikz@save@last@node=\tikzlastnode\tikz@node@is@a@labelfalse}%
node [tikz@label@angle = #2,
anchor=@auto,
every pin,
#1,
append after command = {%
(\tikz@save@last@node)
edge [every pin edge,
tikz@pre@pin@edge,
tikz@pin@options]
(\tikzlastnode)},
tikz@label@post = \tikz@pin@distance,
tikz@pin@post] {#3}
\egroup}}}%
\endgroup
\long\def\tikz@parse@pin@nonactive[#1]#2:#3\pgf@nil{%
\def\tikz@temp{#3}%
\ifx\tikz@temp\pgfutil@empty
\tikz@@parse@pin@nonactive[#1]\tikz@pin@default@pos:#2:\pgf@nil%
\else
\tikz@@parse@pin@nonactive[#1]#2:#3\pgf@nil%
\fi}%
\long\def\tikz@@parse@pin@nonactive[#1]#2:#3:\pgf@nil{%
\tikzset{%
append after command = {%
\bgroup
[current point is local = true]
\pgfextra{\let\tikz@save@last@node=\tikzlastnode\tikz@node@is@a@labelfalse}%
node [tikz@label@angle = #2,
anchor=@auto,
every pin,
#1,
append after command = {%
(\tikz@save@last@node)
edge [every pin edge,
tikz@pre@pin@edge,
tikz@pin@options]
(\tikzlastnode)},
tikz@label@post = \tikz@pin@distance,
tikz@pin@post] {#3}
\egroup}}}%
\tikzset{
label distance/.store in=\tikz@label@distance,
label distance=0pt,
label position/.store in=\tikz@label@default@pos,
label position=above,
absolute/.is if=tikz@absolute,
tikz@label@angle/.store in=\tikz@label@angle
}%
\newif\iftikz@absolute
\def\tikz@on@text{center}%
\tikzset{tikz@label@post/.code 2 args={
\edef\tikz@label@angle{\tikz@label@angle}%
\expandafter\pgfkeys@spdef\expandafter\tikz@label@angle\expandafter{\tikz@label@angle}%
\csname tikz@label@angle@is@\tikz@label@angle\endcsname
\ifx\tikz@label@angle\tikz@on@text%
\def\tikz@node@at{\pgfpointanchor{\tikzlastnode}{center}}%
\def\tikz@anchor{center}%
\else%
\iftikz@absolute%
\pgftransformreset%
\pgf@process{%
\pgfpointshapeborder{\tikzlastnode}%
{\pgfpointadd{\pgfpointanchor{\tikzlastnode}{center}}{\pgfpointpolar{\tikz@label@angle}{1pt}}}}%
\edef\tikz@node@at{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\tikz@compute@direction{\tikz@label@angle}%
\tikz@addtransform{\pgftransformshift{\pgfpointpolar{\tikz@label@angle}{#1}}}%
\else%
\pgf@process{\pgfpointanchor{\tikzlastnode}{\tikz@label@angle}}%
\edef\tikz@node@at{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{\pgfpointanchor{\tikzlastnode}{center}}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\tikz@label@simplefalse%
\ifdim\pgf@xc=\pgf@xb\relax%
\ifdim\pgf@yc=\pgf@yb\relax%
\tikz@label@simpletrue%
\fi%
\fi%
\iftikz@label@simple%
\tikz@compute@direction{\tikz@label@angle}%
\tikz@addtransform{\pgftransformshift{\pgfpointpolar{\tikz@label@angle}{#1}}}%
\else%
\pgf@process{\pgfpointnormalised{%
\pgfpointdiff{\pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgfpointtransformed{\pgfqpoint{\pgf@xb}{\pgf@yb}}}}}%
\edef\pgf@marshal{%
\noexpand\tikz@addtransform{\noexpand\pgftransformshift{\noexpand\pgfpointscale{#1}{
\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}}}%
\pgf@marshal%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@x=\pgf@yc%
\pgf@y=-\pgf@xc%
\ifx\tikz@anchor\tikz@auto@text%
\tikz@auto@anchor%
\fi%
\fi%
\fi%
\fi}
}%
\newif\iftikz@label@simple%
\tikzset{%
label/.code={%
\begingroup
\ifnum\the\catcode`\:=\active\relax
\def\tikz@next{%
\endgroup
\tikz@parse@label@active@i{#1}}%
\else
\def\tikz@next{%
\endgroup
\pgfutil@ifnextchar[%
{\tikz@parse@label@nonactive}
{\tikz@parse@label@nonactive[]}#1:\pgf@nil}%
\fi
\tikz@next}}%
\begingroup
\catcode`\:=\active\relax
\gdef\tikz@parse@label@active@i#1{%
\pgfutil@ifnextchar[%
{\tikz@parse@label@active}
{\tikz@parse@label@active[]}#1:\pgf@nil}%
\gdef\tikz@parse@label@active[#1]#2:#3\pgf@nil{%
\def\tikz@temp{#3}%
\ifx\tikz@temp\pgfutil@empty
\tikz@@parse@label@active[#1]\tikz@label@default@pos:#2:\pgf@nil%
\else
\def\tikz@temp{#2}%
\ifx\tikz@temp\pgfutil@empty
\tikz@@parse@label@active[#1]\tikz@label@default@pos:#3\pgf@nil%
\else
\tikz@@parse@label@active[#1]#2:#3\pgf@nil%
\fi
\fi
}%
\gdef\tikz@@parse@label@active[#1]#2:#3:\pgf@nil{%
\tikzset{%
append after command = {%
\bgroup
[current point is local=true]
\pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse}
node [tikz@label@angle = #2,
anchor=@auto,
every label,
#1,
tikz@label@post = \tikz@label@distance] {\iftikz@handle@active@nodes\expandafter\scantokens\else\expandafter\pgfutil@firstofone\fi{#3\noexpand}}
\pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name}
\egroup}}}%
\endgroup
\def\tikz@parse@label@nonactive[#1]#2:#3\pgf@nil{%
\def\tikz@temp{#3}%
\ifx\tikz@temp\pgfutil@empty
\tikz@@parse@label@nonactive[#1]\tikz@label@default@pos:#2:\pgf@nil%
\else
\def\tikz@temp{#2}%
\ifx\tikz@temp\pgfutil@empty
\tikz@@parse@label@nonactive[#1]\tikz@label@default@pos:#3\pgf@nil%
\else
\tikz@@parse@label@nonactive[#1]#2:#3\pgf@nil%
\fi
\fi
}%
\def\tikz@@parse@label@nonactive[#1]#2:#3:\pgf@nil{%
\tikzset{%
append after command = {%
\bgroup
[current point is local=true]
\pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse}
node [tikz@label@angle = #2,
anchor=@auto,
every label,
#1,
tikz@label@post = \tikz@label@distance] {\iftikz@handle@active@nodes\expandafter\scantokens\else\expandafter\pgfutil@firstofone\fi{#3\noexpand}}
\pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name}
\egroup}}}%
\expandafter\def\csname tikz@label@angle@is@right\endcsname{\def\tikz@label@angle{0}}%
\expandafter\def\csname tikz@label@angle@is@above right\endcsname{\def\tikz@label@angle{45}}%
\expandafter\def\csname tikz@label@angle@is@above\endcsname{\def\tikz@label@angle{90}}%
\expandafter\def\csname tikz@label@angle@is@above left\endcsname{\def\tikz@label@angle{135}}%
\expandafter\def\csname tikz@label@angle@is@left\endcsname{\def\tikz@label@angle{180}}%
\expandafter\def\csname tikz@label@angle@is@below left\endcsname{\def\tikz@label@angle{225}}%
\expandafter\def\csname tikz@label@angle@is@below\endcsname{\def\tikz@label@angle{270}}%
\expandafter\def\csname tikz@label@angle@is@below right\endcsname{\def\tikz@label@angle{315}}%
\def\tikz@compute@direction#1{%
\ifx\tikz@anchor\tikz@auto@text%
\let\tikz@do@auto@anchor=\relax
\pgfmathsetcount{\c@pgf@counta}{#1}%
\ifnum\c@pgf@counta<0\relax
\advance\c@pgf@counta by 360\relax%
\fi%
\ifnum\c@pgf@counta>359\relax
\advance\c@pgf@counta by-360\relax%
\fi%
\ifnum\c@pgf@counta<4\relax%
\def\tikz@anchor{west}%
\else\ifnum\c@pgf@counta<87\relax%
\def\tikz@anchor{south west}%
\else\ifnum\c@pgf@counta<94\relax%
\def\tikz@anchor{south}%
\else\ifnum\c@pgf@counta<177\relax%
\def\tikz@anchor{south east}%
\else\ifnum\c@pgf@counta<184\relax%
\def\tikz@anchor{east}%
\else\ifnum\c@pgf@counta<267\relax%
\def\tikz@anchor{north east}%
\else\ifnum\c@pgf@counta<274\relax%
\def\tikz@anchor{north}%
\else\ifnum\c@pgf@counta<357\relax%
\def\tikz@anchor{north west}%
\else%
\def\tikz@anchor{west}%
\fi\fi\fi\fi\fi\fi\fi\fi%
\fi%
}%
\def\tikz@auto@text{@auto}%
\tikzset{
name/.code={\edef\tikz@fig@name{\tikz@pp@name{#1}}\let\tikz@id@name\tikz@fig@name},%
name prefix/.initial=,%
name suffix/.initial=,%
local bounding box/.style={/pgf/local bounding box/.expanded=\tikz@pp@name{#1}}
}%
\def\tikz@pp@name#1{\csname pgfk@/tikz/name prefix\endcsname#1\csname pgfk@/tikz/name suffix\endcsname}%
\tikzset{
node contents/.code=\def\tikz@node@content{#1},
pic type/.code=\def\tikz@node@content{#1}, %
}%
\tikzset{
behind path/.code=\def\tikz@whichbox{\tikz@figbox@bg},
in front of path/.code=\def\tikz@whichbox{\tikz@figbox}
}%
\def\tikz@whichbox{\tikz@figbox}%
\tikzoption{at}{\tikz@scan@one@point\tikz@set@at#1}%
\def\tikz@set@at#1{\def\tikz@node@at{#1}}%
\tikzoption{shape}{\edef\tikz@shape{#1}}%
\tikzoption{nodes}{\tikzset{every node/.append style={#1}}}%
\tikzset{alias/.code={%
\tikz@fig@mustbenamed
\begingroup
\toks0=\expandafter{\tikz@alias}%
\edef\pgf@temp{\noexpand\pgfnodealias{\tikz@pp@name{#1}}{\noexpand\tikz@fig@name}}%
\toks1=\expandafter{\pgf@temp}%
\xdef\pgf@marshal{%
\noexpand\def\noexpand\tikz@alias{\the\toks0 \the\toks1 }%
}%
\endgroup
\pgf@marshal
}}%
\def\tikzaddafternodepathoption#1{#1\tikzset{prefix after command={\pgfextra{#1}}}}%
\tikzset{after node path/.style={append after command={#1}}}%
\tikzset{pic text/.store in=\tikzpictext}%
\let\tikzpictext\relax
\tikzset{pic text options/.store in=\tikzpictextoptions}%
\let\tikzpictextoptions\pgfutil@empty
\tikzoption{anchor}{\def\tikz@anchor{#1}\let\tikz@do@auto@anchor=\relax}%
\tikzoption{left}[]{\def\tikz@anchor{east}\tikz@possibly@transform{x}{-}{#1}}%
\tikzoption{right}[]{\def\tikz@anchor{west}\tikz@possibly@transform{x}{}{#1}}%
\tikzoption{above}[]{\def\tikz@anchor{south}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{below}[]{\def\tikz@anchor{north}\tikz@possibly@transform{y}{-}{#1}}%
\tikzoption{above left}[]%
{\def\tikz@anchor{south east}%
\tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{above right}[]%
{\def\tikz@anchor{south west}%
\tikz@possibly@transform{x}{}{#1}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{below left}[]%
{\def\tikz@anchor{north east}%
\tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{-}{#1}}%
\tikzoption{below right}[]%
{\def\tikz@anchor{north west}%
\tikz@possibly@transform{x}{}{#1}\tikz@possibly@transform{y}{-}{#1}}%
\tikzset{centered/.code=\def\tikz@anchor{center}}%
\tikzoption{node distance}{\def\tikz@node@distance{#1}}%
\def\tikz@node@distance{1cm}%
\tikzoption{above of}{\tikz@of{#1}{90}}%
\tikzoption{below of}{\tikz@of{#1}{-90}}%
\tikzoption{left of}{\tikz@of{#1}{180}}%
\tikzoption{right of}{\tikz@of{#1}{0}}%
\tikzoption{above left of}{\tikz@of{#1}{135}}%
\tikzoption{below left of}{\tikz@of{#1}{-135}}%
\tikzoption{above right of}{\tikz@of{#1}{45}}%
\tikzoption{below right of}{\tikz@of{#1}{-45}}%
\def\tikz@of#1#2{%
\def\tikz@anchor{center}%
\let\tikz@do@auto@anchor=\relax%
\tikz@addtransform{%
\expandafter\tikz@extract@node@dist\tikz@node@distance and\pgf@stop%
\pgftransformshift{\pgfpointpolar{#2}{\tikz@extracted@node@distance}}}%
\def\tikz@node@at{\pgfpointanchor{\tikz@pp@name{#1}}{center}}}%
\def\tikz@extract@node@dist#1and#2\pgf@stop{%
\def\tikz@extracted@node@distance{#1}}%
\tikzset{
transform shape nonlinear/.is choice,
transform shape nonlinear/.default=true,
transform shape nonlinear/true/.code=\let\tikz@nlt\relax,
transform shape nonlinear/false/.code=\def\tikz@nlt{\pgfapproximatenonlineartranslation},
transform shape nonlinear=false,
}%
\tikzoption{transform shape}[true]{%
\csname tikz@fullytransformed#1\endcsname%
\iftikz@fullytransformed%
\pgfresetnontranslationattimefalse%
\else%
\pgfresetnontranslationattimetrue%
\fi%
}%
\newif\iftikz@fullytransformed
\pgfresetnontranslationattimetrue%
\def\tikz@anchor{center}%
\def\tikz@shape{rectangle}%
\def\tikz@possibly@transform#1#2#3{%
\let\tikz@do@auto@anchor=\relax%
\def\tikz@test{#3}%
\ifx\tikz@test\pgfutil@empty%
\else%
\pgfmathsetlength{\pgf@x}{#3}%
\pgf@x=#2\pgf@x\relax%
\edef\tikz@marshal{\noexpand\tikz@addtransform{%
\expandafter\noexpand\csname pgftransform#1shift\endcsname{\the\pgf@x}}}%
\tikz@marshal%
\fi%
}%
\tikzoption{remember picture}[true]{\csname pgfrememberpicturepositiononpage#1\endcsname}
\tikzset{
overlay/.is choice,
overlay/true/.code={\pgf@relevantforpicturesizefalse},
overlay/false/.code={\pgf@relevantforpicturesizetrue},
overlay/.default=true
}
\tikzoption{sloped}[true]{\csname pgfslopedattime#1\endcsname}%
\tikzoption{allow upside down}[true]{\csname pgfallowupsidedownattime#1\endcsname}%
\tikzoption{pos}{\edef\tikz@time{#1}\ifx\tikz@time\pgfutil@empty\else\pgfmathsetmacro\tikz@time{\tikz@time}\fi}%
\tikzoption{auto}[]{\csname tikz@install@auto@anchor@#1\endcsname}%
\tikzoption{swap}[]{%
\def\tikz@temp{left}%
\ifx\tikz@auto@anchor@direction\tikz@temp%
\def\tikz@auto@anchor@direction{right}%
\else%
\def\tikz@auto@anchor@direction{left}%
\fi%
}%
\tikzset{'/.style=swap}%
\def\tikz@install@auto@anchor@{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on}%
\def\tikz@install@auto@anchor@false{\let\tikz@do@auto@anchor=\relax}%
\def\tikz@install@auto@anchor@left{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on\def\tikz@auto@anchor@direction{left}}%
\def\tikz@install@auto@anchor@right{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on\def\tikz@auto@anchor@direction{right}}%
\let\tikz@do@auto@anchor=\relax%
\def\tikz@auto@anchor@on{\csname tikz@auto@anchor@\tikz@auto@anchor@direction\endcsname}
\def\tikz@auto@anchor@left{\tikz@auto@pre\tikz@auto@anchor\tikz@auto@post}%
\def\tikz@auto@anchor@right{\tikz@auto@pre\tikz@auto@anchor@prime\tikz@auto@post}%
\def\tikz@auto@anchor@direction{left}%
\tikzoption{text}{\def\tikz@textcolor{#1}}%
\tikzoption{font}{\def\tikz@textfont{#1}}%
\tikzoption{node font}{\def\tikz@node@textfont{#1}}%
\tikzoption{text opacity}{\def\tikz@textopacity{#1}}%
\tikzoption{text width}{\def\tikz@text@width{#1}}%
\tikzoption{text height}{\def\tikz@text@height{#1}}%
\tikzoption{text depth}{\def\tikz@text@depth{#1}}%
\tikzoption{text ragged}[]%
{\def\tikz@text@action{\pgfutil@raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}}%
\tikzoption{text badly ragged}[]{\def\tikz@text@action{\pgfutil@raggedright\relax}}%
\tikzoption{text ragged left}[]%
{\def\tikz@text@action{\pgfutil@raggedleft\leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}}%
\tikzoption{text badly ragged left}[]{\def\tikz@text@action{\pgfutil@raggedleft\relax}}%
\tikzoption{text justified}[]{\def\tikz@text@action{\leftskip0pt\rightskip0pt\relax}}%
\tikzoption{text centered}[]{\def\tikz@text@action{%
\leftskip0pt plus2em%
\rightskip0pt plus2em%
\spaceskip.3333em \xspaceskip.5em%
\parfillskip=0pt%
\iftikz@warn@for@narrow@centered\else\hbadness10000\fi%
\let\\=\@centercr%
\relax}}%
\tikzoption{text badly centered}[]%
{\def\tikz@text@action{%
\let\\=\@centercr%
\parfillskip=0pt%
\rightskip\pgfutil@flushglue%
\leftskip\pgfutil@flushglue\relax}}%
\tikzset{badness warnings for centered text/.is if=tikz@warn@for@narrow@centered}%
\newif\iftikz@warn@for@narrow@centered
\def\tikz@text@reset{%
\let\tikz@text@width=\pgfutil@empty
\let\tikz@text@height=\pgfutil@empty
\let\tikz@text@depth=\pgfutil@empty
\let\tikz@textcolor=\pgfutil@empty
\let\tikz@textfont=\pgfutil@empty
\let\tikz@textopacity=\pgfutil@empty
\let\tikz@node@textfont=\pgfutil@empty
\def\tikz@text@action{\pgfutil@raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}%
}
\tikz@text@reset
\tikzset{
node halign header/.initial=,
align/.is choice,
align/left/.style ={text ragged,node halign header=\tikz@align@left@header},
align/flush left/.style ={text badly ragged,node halign header=\tikz@align@left@header},
align/right/.style ={text ragged left,node halign header=\tikz@align@right@header},
align/flush right/.style ={text badly ragged left,node halign header=\tikz@align@right@header},
align/center/.style={text centered,node halign header=\tikz@align@center@header},
align/flush center/.style={text badly centered,node halign header=\tikz@align@center@header},
align/justify/.style ={text justified,node halign header=\tikz@align@left@header},
align/none/.style ={text justified,node halign header=},
}%
\def\tikz@align@left@header{##\hfil\cr}%
\def\tikz@align@right@header{\hfil##\cr}%
\def\tikz@align@center@header{\hfil##\hfil\cr}%
\tikzoption{arrows}{\tikz@processarrows{#1}}%
\tikzoption{>}{\pgfdeclarearrow{name=<->,means={#1}}}%
\pgfdeclarearrow{name=|<->|, means={>[sep=0pt].|}}%
\tikzoption{shorten <}{\pgfsetshortenstart{#1}}%
\tikzoption{shorten >}{\pgfsetshortenend{#1}}%
\def\tikz@processarrows#1{%
\def\tikz@current@arrows{#1}%
\def\tikz@temp{#1}%
\ifx\tikz@temp\pgfutil@empty%
\else%
\pgfsetarrows{#1}%
\fi%
}%
\def\tikz@current@arrows{-}%
\tikzoption{bend}{\tikz@scan@one@point\tikz@set@parabola@bend#1\relax}%
\tikzoption{bend pos}{\def\tikz@parabola@bend@factor{#1}}%
\tikzoption{parabola height}{%
\def\tikz@parabola@bend@factor{.5}%
\def\tikz@parabola@bend{\pgfpointadd{\pgfpoint{0pt}{#1}}{\tikz@last@position@saved}}}%
\def\tikz@parabola@bend{\tikz@last@position@saved}%
\def\tikz@parabola@bend@factor{0}%
\def\tikz@set@parabola@bend#1{\def\tikz@parabola@bend{#1}}%
\tikzoption{domain}{\edef\tikz@plot@domain{#1}\expandafter\tikz@plot@samples@recalc\tikz@plot@domain\relax}%
\tikzoption{range}{\def\tikz@plot@range{#1}}%
\tikzoption{yrange}{\def\tikz@plot@range{#1}}%
\let\tikz@plot@range=\pgfutil@empty
\tikzoption{xrange}{\def\tikz@plot@xrange{#1}}%
\let\tikz@plot@xrange=\pgfutil@empty
\tikzoption{smooth}[]{\let\tikz@plot@handler=\pgfplothandlercurveto}%
\tikzoption{smooth cycle}[]{\let\tikz@plot@handler=\pgfplothandlerclosedcurve}%
\tikzoption{sharp plot}[]{\let\tikz@plot@handler\pgfplothandlerlineto}%
\tikzoption{sharp cycle}[]{\let\tikz@plot@handler\pgfplothandlerpolygon}%
\tikzoption{tension}{\pgfsetplottension{#1}}%
\tikzoption{xcomb}[]{\let\tikz@plot@handler=\pgfplothandlerxcomb}%
\tikzoption{ycomb}[]{\let\tikz@plot@handler=\pgfplothandlerycomb}%
\tikzoption{polar comb}[]{\let\tikz@plot@handler=\pgfplothandlerpolarcomb}%
\tikzoption{ybar}[]{\let\tikz@plot@handler=\pgfplothandlerybar}%
\tikzoption{ybar interval}[]{\let\tikz@plot@handler=\pgfplothandlerybarinterval}%
\tikzoption{xbar interval}[]{\let\tikz@plot@handler=\pgfplothandlerxbarinterval}%
\tikzoption{xbar}[]{\let\tikz@plot@handler=\pgfplothandlerxbar}%
\tikzoption{const plot}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlineto}%
\tikzoption{const plot mark left}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlineto}%
\tikzoption{const plot mark right}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlinetomarkright}%
\tikzoption{const plot mark mid}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlinetomarkmid}%
\tikzoption{jump mark right}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkright}%
\tikzoption{jump mark mid}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkmid}%
\tikzoption{jump mark left}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkleft}%
\tikzoption{raw gnuplot}[true]{\csname tikz@plot@raw@gnuplot#1\endcsname}%
\tikzoption{prefix}{\def\tikz@plot@prefix{#1}}%
\tikzoption{id}{\def\tikz@plot@id{#1}}%
\tikzoption{samples}{\pgfmathsetmacro\tikz@plot@samples{max(2,#1)}\expandafter\tikz@plot@samples@recalc\tikz@plot@domain\relax}%
\tikzoption{samples at}{\def\tikz@plot@samplesat{#1}}%
\tikzoption{parametric}[true]{\csname tikz@plot@parametric#1\endcsname}%
\tikzoption{variable}{\def\tikz@plot@var{#1}}%
\tikzoption{only marks}[]{\let\tikz@plot@handler\pgfplothandlerdiscard}%
\tikzoption{mark}{%
\def\tikz@plot@mark{#1}%
\def\tikz@temp{none}%
\ifx\tikz@temp\tikz@plot@mark
\let\tikz@plot@mark=\pgfutil@empty
\fi
}%
\tikzset{
no marks/.style={mark=none},%
no markers/.style={mark=none},%
every mark/.style={},
mark options/.style={%
every mark/.style={#1}%
}}%
\tikzoption{mark size}{\pgfsetplotmarksize{#1}}%
\tikzoption{mark indices}{\def\tikz@mark@list{#1}}%
\tikzoption{mark phase}{\pgfsetplotmarkphase{#1}}%
\tikzoption{mark repeat}{\pgfsetplotmarkrepeat{#1}}%
\let\tikz@mark@list=\pgfutil@empty
\let\tikz@plot@handler=\pgfplothandlerlineto
\let\tikz@plot@mark=\pgfutil@empty
\def\tikz@plot@samples{25}%
\def\tikz@plot@domain{-5:5}%
\def\tikz@plot@var{\x}%
\def\tikz@plot@samplesat{-5,-4.5833333,...,5}%
\def\tikz@plot@samples@recalc#1:#2\relax{%
\begingroup
\pgfmathparse{#1}%
\let\tikz@temp@start=\pgfmathresult%
\pgfmathparse{#2}%
\let\tikz@temp@end=\pgfmathresult%
\pgfmathsetmacro\tikz@temp@diff{(\tikz@temp@end-\tikz@temp@start)/(\tikz@plot@samples-1)}%
\pgfkeys{/pgf/fpu/output format/fixed/.try}%
\pgfmathsetmacro\tikz@temp@diff@abs{abs(\tikz@temp@diff)}%
\ifdim\tikz@temp@diff@abs pt<0.0001pt\relax%
\edef\tikz@plot@samplesat{\tikz@temp@start,\tikz@temp@end}%
\else%
\pgfmathparse{\tikz@temp@start+\tikz@temp@diff}%
\edef\tikz@plot@samplesat{\tikz@temp@start,\pgfmathresult,...,\tikz@temp@end}%
\fi%
\pgfmath@smuggleone\tikz@plot@samplesat
\endgroup
}%
\def\tikz@plot@prefix{\jobname.}%
\def\tikz@plot@id{pgf-plot}%
\newif\iftikz@plot@parametric
\newif\iftikz@plot@raw@gnuplot
\tikzoption{to path}{\def\tikz@to@path{#1}}%
\def\tikz@to@path{-- (\tikztotarget) \tikztonodes}%
\tikzset{edge macro/.store in=\tikz@edge@macro}%
\let\tikz@edge@macro\pgfutil@empty
\tikzset{
edge node/.code={
\expandafter\def\expandafter\tikz@tonodes\expandafter{\tikz@tonodes #1}
},
edge label/.style={/tikz/edge node={node[auto]{#1}}},
edge label'/.style={/tikz/edge node={node[auto,swap]{#1}}},
}%
\tikzset{
append after command/.code=\expandafter\def\expandafter\tikz@after@path\expandafter{\tikz@after@path#1},
prefix after command/.code={%
\def\tikz@temp{#1}%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\tikz@after@path%
\expandafter\expandafter\expandafter{%
\expandafter\tikz@temp\tikz@after@path}%
},
}%
\let\tikz@after@path\pgfutil@empty
\newif\iftikz@child@missing
\pgfkeys{/tikz/missing/.is if=tikz@child@missing}%
\tikzset{edge from parent macro/.initial=\tikz@edge@from@parent@macro}%
\def\tikz@edge@from@parent@macro#1#2{
[style=edge from parent, #1, /utils/exec=\tikz@node@is@a@labeltrue] \tikz@edge@to@parent@path #2}%
\tikzoption{edge from parent path}{\def\tikz@edge@to@parent@path{#1}}%
\tikzoption{parent anchor}{\def\tikzparentanchor{.#1}\ifx\tikzparentanchor\tikz@border@text\let\tikzparentanchor\pgfutil@empty\fi}%
\tikzoption{child anchor}{\def\tikzchildanchor{.#1}\ifx\tikzchildanchor\tikz@border@text\let\tikzchildanchor\pgfutil@empty\fi}%
\tikzoption{level distance}{\pgfmathsetlength\tikzleveldistance{#1}}%
\tikzoption{sibling distance}{\pgfmathsetlength\tikzsiblingdistance{#1}}%
\tikzoption{growth function}{\let\tikz@grow=#1}%
\tikzset{grow siblings on line/.style={growth function=\tikz@grow@direction}}%
\tikzoption{growth parent anchor}{\def\tikz@growth@anchor{#1}}%
\tikzoption{grow}{\tikz@set@growth{#1}\edef\tikz@special@level{\the\tikztreelevel}}%
\tikzoption{grow'}{\tikz@set@growth{#1}\tikz@swap@growth\edef\tikz@special@level{\the\tikztreelevel}}%
\def\tikz@growth@anchor{center}%
\def\tikz@special@level{-1}%
\def\tikz@swap@growth{%
\let\tikz@temp=\tikz@angle@grow@right%
\let\tikz@angle@grow@right=\tikz@angle@grow@left%
\let\tikz@angle@grow@left=\tikz@temp%
}%
\def\tikz@set@growth#1{%
\let\tikz@grow=\tikz@grow@direction%
\expandafter\ifx\csname tikz@grow@direction@#1\endcsname\relax%
\c@pgf@counta=#1\relax%
\else%
\c@pgf@counta=\csname tikz@grow@direction@#1\endcsname%
\fi%
\edef\tikz@angle@grow{\the\c@pgf@counta}%
\advance\c@pgf@counta by-90\relax%
\edef\tikz@angle@grow@left{\the\c@pgf@counta}%
\advance\c@pgf@counta by180\relax%
\edef\tikz@angle@grow@right{\the\c@pgf@counta}%
}%
\def\tikz@border@text{.border}%
\let\tikzparentanchor=\pgfutil@empty
\let\tikzchildanchor=\pgfutil@empty
\def\tikz@edge@to@parent@path{(\tikzparentnode\tikzparentanchor) -- (\tikzchildnode\tikzchildanchor)}%
\tikzleveldistance=15mm%
\tikzsiblingdistance=15mm%
\def\tikz@grow@direction@down{-90}%
\def\tikz@grow@direction@up{90}%
\def\tikz@grow@direction@left{180}%
\def\tikz@grow@direction@right{0}%
\def\tikz@grow@direction@south{-90}%
\def\tikz@grow@direction@north{90}%
\def\tikz@grow@direction@west{180}%
\def\tikz@grow@direction@east{0}%
\expandafter\def\csname tikz@grow@direction@north east\endcsname{45}%
\expandafter\def\csname tikz@grow@direction@north west\endcsname{135}%
\expandafter\def\csname tikz@grow@direction@south east\endcsname{-45}%
\expandafter\def\csname tikz@grow@direction@south west\endcsname{-135}%
\def\tikz@grow@direction{%
\pgftransformshift{\pgfpointpolar{\tikz@angle@grow}{\tikzleveldistance}}%
\ifnum\tikztreelevel=\tikz@special@level%
\else%
\pgf@xc=.5\tikzsiblingdistance%
\c@pgf@counta=\tikznumberofchildren%
\advance\c@pgf@counta by1\relax%
\pgfutil@tempdima=\c@pgf@counta\pgf@xc%
\pgftransformshift{\pgfpointpolar{\tikz@angle@grow@left}{\pgfutil@tempdima}}%
\pgftransformshift{\pgfpointpolar{\tikz@angle@grow@right}{\tikznumberofcurrentchild\tikzsiblingdistance}}%
\fi%
}%
\tikzset{grow=down}%
\tikzset{snake/.code=\tikzerror{You need to say \string\usetikzlibrary{snakes}}}%
\tikzset{decorate/.code=\tikzerror{You need to load a decoration library}}%
\usepgfmodule{matrix}%
\tikzoption{matrix}[true]{\csname tikz@is@matrix#1\endcsname}%
\tikzoption{matrix anchor}{\def\tikz@matrix@anchor{#1}}%
\tikzoption{column sep}{\def\pgfmatrixcolumnsep{#1}}%
\tikzoption{row sep}{\def\pgfmatrixrowsep{#1}}%
\tikzoption{cells}{\tikzset{every cell/.append style={#1}}}%
\tikzoption{ampersand replacement}{\def\tikz@ampersand@replacement{#1}}%
\newif\iftikz@is@matrix
\let\tikz@matrix@anchor=\pgfutil@empty
\let\tikz@ampersand@replacement=\pgfutil@empty
\tikzset{%
handle active characters in code/.is if=tikz@handle@active@code,
handle active characters in nodes/.is if=tikz@handle@active@nodes,
}%
\newif\iftikz@handle@active@code
\newif\iftikz@handle@active@nodes
\tikzoption{execute at begin picture}{\expandafter\def\expandafter\tikz@atbegin@picture\expandafter{\tikz@atbegin@picture#1}}%
\tikzoption{execute at end picture}{\expandafter\def\expandafter\tikz@atend@picture\expandafter{\tikz@atend@picture#1}}%
\tikzoption{execute at begin scope}{\expandafter\def\expandafter\tikz@atbegin@scope\expandafter{\tikz@atbegin@scope#1}}%
\tikzoption{execute at end scope}{\expandafter\def\expandafter\tikz@atend@scope\expandafter{\tikz@atend@scope#1}}%
\tikzoption{execute at begin to}{\expandafter\def\expandafter\tikz@atbegin@to\expandafter{\tikz@atbegin@to#1}}%
\tikzoption{execute at end to}{\expandafter\def\expandafter\tikz@atend@to\expandafter{\tikz@atend@to#1}}%
\tikzoption{execute at begin node}{\expandafter\def\expandafter\tikz@atbegin@node\expandafter{\tikz@atbegin@node#1}}%
\tikzoption{execute at end node}{\expandafter\def\expandafter\tikz@atend@node\expandafter{\tikz@atend@node#1}}%
\tikzoption{execute at begin matrix}{\expandafter\def\expandafter\tikz@atbegin@matrix\expandafter{\tikz@atbegin@matrix#1}}%
\tikzoption{execute at end matrix}{\expandafter\def\expandafter\tikz@atend@matrix\expandafter{\tikz@atend@matrix#1}}%
\tikzoption{execute at begin cell}{\expandafter\def\expandafter\tikz@atbegin@cell\expandafter{\tikz@atbegin@cell#1}}%
\tikzoption{execute at end cell}{\expandafter\def\expandafter\tikz@atend@cell\expandafter{\tikz@atend@cell#1}}%
\tikzoption{execute at empty cell}{\expandafter\def\expandafter\tikz@at@emptycell\expandafter{\tikz@at@emptycell#1}}%
\let\tikz@atbegin@picture=\pgfutil@empty
\let\tikz@atend@picture=\pgfutil@empty
\let\tikz@atbegin@scope=\pgfutil@empty
\let\tikz@atend@scope=\pgfutil@empty
\let\tikz@atbegin@to=\pgfutil@empty
\let\tikz@atend@to=\pgfutil@empty
\let\tikz@atbegin@node=\pgfutil@empty
\let\tikz@atend@node=\pgfutil@empty
\let\tikz@atbegin@cell=\pgfutil@empty
\let\tikz@atend@cell=\pgfutil@empty
\let\tikz@at@emptycell=\pgfutil@empty
\let\tikz@atbegin@matrix=\pgfutil@empty
\let\tikz@atend@matrix=\pgfutil@empty
\tikzset{preaction/.code=\expandafter\def\expandafter\tikz@preactions\expandafter{\tikz@preactions\tikz@extra@preaction{#1}}}%
\tikzset{postaction/.code=\expandafter\def\expandafter\tikz@postactions\expandafter{\tikz@postactions\tikz@extra@postaction{#1}}}%
\let\tikz@preactions=\pgfutil@empty
\let\tikz@postactions=\pgfutil@empty
\tikzoption{set style}{\tikzstyle#1}%
\def\tikzstyle{\pgfutil@ifnextchar\bgroup\tikz@style@parseA\tikz@style@parseB}%
\def\tikz@style@parseB#1={\tikz@style@parseA{#1}=}%
\def\tikz@style@parseA#1#2=#3[#4]{%
\pgfutil@in@[{#2}%
\ifpgfutil@in@%
\tikz@style@parseC{#1}#2={#4}%
\else%
\tikz@style@parseD{#1}#2={#4}%
\fi%
}%
\def\tikz@style@parseC#1[#2]#3=#4{%
\pgfkeys{/tikz/#1/.default={#2}}%
\pgfutil@in@+{#3}%
\ifpgfutil@in@%
\pgfkeys{/tikz/#1/.append style={#4}}%
\else%
\pgfkeys{/tikz/#1/.style={#4}}%
\fi}%
\def\tikz@style@parseD#1#2=#3{%
\pgfutil@in@+{#2}%
\ifpgfutil@in@%
\pgfkeys{/tikz/#1/.append style={#3}}%
\else%
\pgfkeys{/tikz/#1/.style={#3}}%
\fi}%
\tikzset{help lines/.style= {color=gray,line width=0.2pt}}%
\tikzset{every picture/.style= {}}%
\tikzset{every path/.style= {}}%
\tikzset{every scope/.style= {}}%
\tikzset{every plot/.style= {}}%
\tikzset{every node/.style= {}}%
\tikzset{every child/.style= {}}%
\tikzset{every child node/.style= {}}%
\tikzset{every to/.style= {}}%
\tikzset{every cell/.style= {}}%
\tikzset{every matrix/.style= {}}%
\tikzset{every edge/.style= {draw}}%
\tikzset{every label/.style= {draw=none,fill=none}}%
\tikzset{every pin/.style= {draw=none,fill=none}}%
\tikzset{every pin edge/.style= {help lines}}%
\tikzset{ultra thin/.style= {line width=0.1pt}}%
\tikzset{very thin/.style= {line width=0.2pt}}%
\tikzset{thin/.style= {line width=0.4pt}}%
\tikzset{semithick/.style= {line width=0.6pt}}%
\tikzset{thick/.style= {line width=0.8pt}}%
\tikzset{very thick/.style= {line width=1.2pt}}%
\tikzset{ultra thick/.style= {line width=1.6pt}}%
\tikzset{solid/.style= {dash pattern=}}%
\tikzset{dotted/.style= {dash pattern=on \pgflinewidth off 2pt}}%
\tikzset{densely dotted/.style= {dash pattern=on \pgflinewidth off 1pt}}%
\tikzset{loosely dotted/.style= {dash pattern=on \pgflinewidth off 4pt}}%
\tikzset{dashed/.style= {dash pattern=on 3pt off 3pt}}%
\tikzset{densely dashed/.style= {dash pattern=on 3pt off 2pt}}%
\tikzset{loosely dashed/.style= {dash pattern=on 3pt off 6pt}}%
\tikzset{dashdotted/.style= {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{dash dot/.style= {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dashdotted/.style= {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{densely dash dot/.style= {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dashdotted/.style= {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{loosely dash dot/.style= {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{dashdotdotted/.style= {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dashdotdotted/.style= {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dashdotdotted/.style= {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{dash dot dot/.style= {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dash dot dot/.style= {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dash dot dot/.style= {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{transparent/.style= {opacity=0}}%
\tikzset{ultra nearly transparent/.style={opacity=0.05}}%
\tikzset{very nearly transparent/.style= {opacity=0.1}}%
\tikzset{nearly transparent/.style= {opacity=0.25}}%
\tikzset{semitransparent/.style= {opacity=0.5}}%
\tikzset{nearly opaque/.style= {opacity=0.75}}%
\tikzset{very nearly opaque/.style= {opacity=0.9}}%
\tikzset{ultra nearly opaque/.style= {opacity=0.95}}%
\tikzset{opaque/.style= {opacity=1}}%
\tikzset{at start/.style= {pos=0}}%
\tikzset{very near start/.style= {pos=0.125}}%
\tikzset{near start/.style= {pos=0.25}}%
\tikzset{midway/.style= {pos=0.5}}%
\tikzset{near end/.style= {pos=0.75}}%
\tikzset{very near end/.style= {pos=0.875}}%
\tikzset{at end/.style= {pos=1}}%
\tikzset{bend at start/.style= {bend pos=0,bend={+(0,0)}}}%
\tikzset{bend at end/.style= {bend pos=1,bend={+(0,0)}}}%
\tikzset{edge from parent/.style= {draw}}%
\tikzset{
animate/.code=\tikzerror{You need to say \string\usetikzlibrary{animations} to use animations}
}
\newif\iftikz@is@node
\let\tikz@id@name\pgfutil@empty
\let\tikz@id@hook\pgfutil@empty
\def\tikz@call@id@hook{\ifx\tikz@id@hook\pgfutil@empty\else\tikz@id@hook\pgfuseid{\tikz@id@name}\fi}%
\let\tikz@clear@rdf@options\relax
\let\tikz@do@rdf@post@options\relax
\let\tikz@do@rdf@pre@options\relax
\pgfkeys{/tikz/style/.style={#1}}%
\pgfkeys{/tikz/.unknown/.code=%
\let\tikz@key\pgfkeyscurrentname%
\pgfkeys{/pgf/\tikz@key/.try={#1}}%
\ifpgfkeyssuccess%
\else%
\expandafter\pgfutil@in@\expandafter!\expandafter{\tikz@key}%
\ifpgfutil@in@%
\expandafter\tikz@addoption\expandafter{\expandafter\tikz@compat@color@set\expandafter{\tikz@key}}%
\edef\tikz@textcolor{\tikz@key}%
\else%
\pgfutil@doifcolorelse{\tikz@key}
{%
\expandafter\tikz@addoption\expandafter{\expandafter\tikz@compat@color@set\expandafter{\tikz@key}}%
\edef\tikz@textcolor{\tikz@key}%
}%
{%
\expandafter\pgfutil@in@\expandafter-\expandafter{\tikz@key}%
\ifpgfutil@in@%
\expandafter\tikz@processarrows\expandafter{\tikz@key}%
\else%
\expandafter\ifx\csname pgf@sh@s@\tikz@key\endcsname\relax%
\pgfkeys{/errors/unknown key/.expand
once=\expandafter{\expandafter/\expandafter t\expandafter i\expandafter k\expandafter z\expandafter/\tikz@key}{#1}}%
\else%
\edef\tikz@shape{\tikz@key}%
\fi%
\fi%
}%
\fi%
\fi%
}%
\def\tikz@compat@color@set#1{%
\pgfutil@color{#1}\pgfutil@colorlet{pgffillcolor}{#1}%
\expandafter\let\expandafter\pgf@temp\csname\string\color@pgffillcolor\endcsname%
\global\let\pgf@strokecolor@global=\pgf@temp
\global\let\pgf@fillcolor@global=\pgf@temp
}%
\def\tikz@startup@env{%
\ifnum\the\catcode`\;=\active\relax\expandafter\let\expandafter\tikz@origsemi\expandafter=\tikz@activesemicolon\fi%
\ifnum\the\catcode`\:=\active\relax\expandafter\let\expandafter\tikz@origcolon\expandafter=\tikz@activecolon\fi%
\ifnum\the\catcode`\|=\active\relax\expandafter\let\expandafter\tikz@origbar\expandafter=\tikz@activebar\fi%
\tikz@deactivatthings%
\iftikz@handle@active@code%
\tikz@switchoff@shorthands%
\fi%
}%
\newif\iftikz@inside@picture
\tikz@inside@picturefalse
\def\tikz@check@inside@picture{%
\iftikz@inside@picture%
\pgfwarning{Nesting tikzpictures is NOT supported}%
\fi%
\tikz@inside@picturetrue%
}
\def\tikzpicture{%
\begingroup%
\tikz@startup@env%
\tikz@collect@scope@anims\tikz@picture}%
\def\tikz@picture[#1]{%
\pgfpicture%
\let\tikz@atbegin@picture=\pgfutil@empty%
\let\tikz@atend@picture=\pgfutil@empty%
\let\tikz@transform=\relax%
\def\tikz@time{.5}%
\tikz@installcommands%
\scope[every picture,#1]%
\iftikz@handle@active@code%
\tikz@switchoff@shorthands%
\fi%
\expandafter\tikz@atbegin@picture%
\tikz@lib@scope@check%
}%
\def\endtikzpicture{%
\tikz@atend@picture%
\global\let\pgf@shift@baseline@smuggle=\pgf@baseline%
\global\let\pgf@trimleft@final@smuggle=\pgf@trimleft%
\global\let\pgf@trimright@final@smuggle=\pgf@trimright%
\global\let\pgf@remember@smuggle=\ifpgfrememberpicturepositiononpage%
\pgf@remember@layerlist@globally
\endscope%
\let\pgf@baseline=\pgf@shift@baseline@smuggle%
\let\pgf@trimleft=\pgf@trimleft@final@smuggle%
\let\pgf@trimright=\pgf@trimright@final@smuggle%
\let\ifpgfrememberpicturepositiononpage=\pgf@remember@smuggle%
\pgf@restore@layerlist@from@global
\endpgfpicture\endgroup}%
\def\tikz{%
\begingroup%
\tikz@startup@env%
\tikz@collect@scope@anims\tikz@opt}%
\def\tikz@opt[#1]{\tikzpicture[#1]\pgfutil@ifnextchar\bgroup{\tikz@}{\tikz@@single}}%
\def\tikz@{\bgroup\tikz@auto@end@pathtrue\aftergroup\endtikzpicture\aftergroup\endgroup\let\pgf@temp=}%
\def\tikz@@single#1{%
\expandafter\ifx\csname tikz@protected@command\string#1\endcsname\relax%
\expandafter\tikz@@%
\else%
\begingroup\def\tikz@path@do@at@end{\endgroup\endtikzpicture\endgroup}%
\fi%
#1%
}%
\expandafter\let\csname tikz@protected@command\string\draw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\pattern\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\fill\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\filldraw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\shade\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\shadedraw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\clip\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\graph\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\useasboundingbox\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\node\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\coordinate\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\matrix\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\datavisualization\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\path\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\pic\endcsname\pgfutil@empty%
\def\tikz@@{%
\let\tikz@next=\tikz@collectnormalsemicolon%
\ifnum\the\catcode`\;=\active\relax%
\let\tikz@next=\tikz@collectactivesemicolon%
\fi%
\tikz@next}%
\def\tikz@collectnormalsemicolon#1;{#1;\endtikzpicture\endgroup}
{
\catcode`\;=\active
\gdef\tikz@collectactivesemicolon#1;{#1;\endtikzpicture\endgroup}
}%
\def\tikzifinpicture#1#2{%
\pgfutil@ifundefined{filldraw}{#2}{#1}%
}%
\def\tikz@collect@scope@anims#1{%
\pgfutil@ifnextchar[#1{#1[]}%
}%
\def\tikz@scope@env{%
\pgfscope%
\begingroup%
\let\tikz@atbegin@scope=\pgfutil@empty%
\let\tikz@atend@scope=\pgfutil@empty%
\let\tikz@options=\pgfutil@empty%
\tikz@clear@rdf@options%
\let\tikz@mode=\pgfutil@empty%
\let\tikz@id@name=\pgfutil@empty%
\tikz@transparency@groupfalse%
\tikzset{every scope/.try}%
\tikz@collect@scope@anims\tikz@scope@opt%
}%
\def\tikz@scope@opt[#1]{%
\tikzset{#1}%
\tikz@options%
\tikz@do@rdf@pre@options%
\iftikz@transparency@group\expandafter\pgftransparencygroup\expandafter[\tikz@transparency@group@options]\tikz@blend@group\fi%
\tikz@is@nodefalse%
\tikz@call@id@hook%
\pgfidscope%
\tikz@do@rdf@post@options%
\begingroup%
\let\tikz@id@name\pgfutil@empty%
\expandafter\tikz@atbegin@scope%
\expandafter\pgfclearid%
\tikz@lib@scope@check%
}%
\def\endtikz@scope@env{%
\tikz@atend@scope%
\endgroup%
\endpgfidscope%
\iftikz@transparency@group\endpgftransparencygroup\fi%
\endgroup%
\endpgfscope%
\tikz@lib@scope@check%
}%
\def\tikz@scoped{\tikz@collect@scope@anims\tikz@scoped@opt}%
\def\tikz@scoped@opt[#1]{\scope[#1]\pgfutil@ifnextchar\bgroup{\tikz@scoped@}{\tikz@scoped@@single}}%
\def\tikz@scoped@{\bgroup\tikz@auto@end@pathtrue\aftergroup\endscope\let\pgf@temp=}%
\def\tikz@scoped@@single#1{%
\expandafter\ifx\csname tikz@scoped@protected@command\string#1\endcsname\relax%
\expandafter\tikz@scoped@@%
\else%
\begingroup\def\tikz@scoped@path@do@at@end{\endgroup\endscope}%
\fi%
#1%
}%
\def\tikz@scoped@@{%
\let\tikz@scoped@next=\tikz@scoped@collectnormalsemicolon%
\ifnum\the\catcode`\;=\active\relax%
\let\tikz@scoped@next=\tikz@scoped@collectactivesemicolon%
\fi%
\tikz@scoped@next}%
\def\tikz@scoped@collectnormalsemicolon#1;{#1;\endscope}
{
\catcode`\;=\active
\gdef\tikz@scoped@collectactivesemicolon#1;{#1;\endscope}
}%
\def\tikzaddtikzonlycommandshortcutlet#1#2{%
\expandafter\def\expandafter\tikz@installcommands\expandafter{\tikz@installcommands
\let#1=#2%
}%
}%
\def\tikzaddtikzonlycommandshortcutdef#1#2{%
\expandafter\def\expandafter\tikz@installcommands\expandafter{\tikz@installcommands
\def#1{#2}%
}%
}%
\def\tikz@installcommands{%
\let\tikz@origscope=\scope%
\let\tikz@origscoped=\scoped%
\let\tikz@origendscope=\endscope%
\let\tikz@origstartscope=\startscope%
\let\tikz@origstopscope=\stopscope%
\let\tikz@origpath=\path%
\let\tikz@origagainpath=\againpath%
\let\tikz@origdraw=\draw%
\let\tikz@origpattern=\pattern%
\let\tikz@origfill=\fill%
\let\tikz@origfilldraw=\filldraw%
\let\tikz@origshade=\shade%
\let\tikz@origshadedraw=\shadedraw%
\let\tikz@origclip=\clip%
\let\tikz@origuseasboundingbox=\useasboundingbox%
\let\tikz@orignode=\node%
\let\tikz@origpic=\pic%
\let\tikz@origcoordinate=\coordinate%
\let\tikz@origmatrix=\matrix%
\let\tikz@origcalendar=\calendar%
\let\tikz@origdv=\datavisualization%
\let\tikz@origgraph=\graph%
\let\scope=\tikz@scope@env%
\let\scoped=\tikz@scoped%
\let\endscope=\endtikz@scope@env%
\let\startscope=\scope%
\let\stopscope=\endscope%
\let\path=\tikz@command@path%
\let\againpath=\tikz@command@againpath%
\def\draw{\path[draw]}%
\def\pattern{\path[pattern]}%
\def\fill{\path[fill]}%
\def\filldraw{\path[fill,draw]}%
\def\shade{\path[shade]}%
\def\shadedraw{\path[shade,draw]}%
\def\clip{\path[clip]}%
\def\graph{\path graph}%
\def\useasboundingbox{\path[use as bounding box]}%
\def\node{\tikz@path@overlay{node}}%
\def\pic{\tikz@path@overlay{pic}}%
\def\coordinate{\tikz@path@overlay{coordinate}}%
\def\matrix{\tikz@path@overlay{node[matrix]}}%
\def\calendar{\tikz@lib@cal@calendar}%
\def\datavisualization{\tikz@lib@datavisualization}%
}%
\ifx\tikz@lib@cal@calendar\@undefined
\def\tikz@lib@cal@calendar{\tikzerror{You need to say \string\usetikzlibrary{calendar} to use the \string\calendar{} command}}%
\fi
\ifx\tikz@lib@datavisualization\@undefined
\def\tikz@lib@datavisualization{\tikzerror{You need to say \string\usetikzlibrary{datavisualization} to use the \string\datavisualization{} command}}%
\fi
\def\tikz@path@overlay#1{%
\let\tikz@signal@path=\tikz@signal@path%
\pgfutil@ifnextchar<{\tikz@path@overlayed{#1}}{\path #1}}%
\def\tikz@path@overlayed#1<#2>{\path<#2> #1}%
\def\tikz@uninstallcommands{%
\let\scope=\tikz@origscope%
\let\scoped=\tikz@origscoped%
\let\endscope=\tikz@origendscope%
\let\startscope=\tikz@origstartscope%
\let\stopscope=\tikz@origstopscope%
\let\path=\tikz@origpath%
\let\againpath=\tikz@origagainpath%
\let\draw=\tikz@origdraw%
\let\pattern=\tikz@origpattern%
\let\fill=\tikz@origfill%
\let\filldraw=\tikz@origfilldraw%
\let\shade=\tikz@origshade%
\let\shadedraw=\tikz@origshadedraw%
\let\clip=\tikz@origclip%
\let\useasboundingbox=\tikz@origuseasboundingbox%
\let\node=\tikz@orignode%
\let\pic=\tikz@origpic%
\let\coordinate=\tikz@origcoordinate%
\let\matrix=\tikz@origmatrix%
\let\calendar=\tikz@origcalendar%
\let\datavisualization=\tikz@origdv%
\let\graph=\tikz@origgraph%
}%
{%
\catcode`\;=12
\gdef\tikz@nonactivesemicolon{;}%
\catcode`\:=12
\gdef\tikz@nonactivecolon{:}%
\catcode`\|=12
\gdef\tikz@nonactivebar{|}%
\catcode`\!=12
\gdef\tikz@nonactiveexlmark{!}%
\catcode`\;=\active
\catcode`\:=\active
\catcode`\|=\active
\catcode`\"=\active
\catcode`\!=\active
\gdef\tikz@activesemicolon{;}%
\gdef\tikz@activecolon{:}%
\gdef\tikz@activebar{|}%
\gdef\tikz@activequotes{"}%
\global\let\tikz@active@quotes@token="%
\gdef\tikz@activeexlmark{!}%
\gdef\tikz@deactivatthings{%
\def;{\tikz@nonactivesemicolon}%
\def:{\tikz@nonactivecolon}%
\def|{\tikz@nonactivebar}%
\def!{\tikz@nonactiveexlmark}%
}%
}%
\let\tikz@orig@shorthands\pgfutil@empty
\def\tikz@switchoff@shorthands{%
\ifx\tikz@orig@shorthands\pgfutil@empty%
\edef\tikz@orig@shorthands{%
\catcode\noexpand`\noexpand\;\the\catcode`\;\relax%
\catcode\noexpand`\noexpand\:\the\catcode`\:\relax%
\catcode\noexpand`\noexpand\|\the\catcode`\|\relax%
\catcode\noexpand`\noexpand\!\the\catcode`\!\relax%
\catcode\noexpand`\noexpand\,\the\catcode`\,\relax%
\catcode\noexpand`\noexpand\<\the\catcode`\<\relax%
\catcode\noexpand`\noexpand\>\the\catcode`\>\relax%
\catcode\noexpand`\noexpand\"\the\catcode`\"\relax%
\catcode\noexpand`\noexpand\'\the\catcode`\'\relax%
\catcode\noexpand`\noexpand\-\the\catcode`\-\relax%
\catcode\noexpand`\noexpand\=\the\catcode`\=\relax%
\catcode\noexpand`\noexpand\.\the\catcode`\.\relax%
\catcode\noexpand`\noexpand\$\the\catcode`\$\relax%
}%
\catcode`\;12\relax%
\catcode`\:12\relax%
\catcode`\|12\relax%
\catcode`\!12\relax%
\catcode`\,12\relax%
\catcode`\<12\relax%
\catcode`\>12\relax%
\catcode`\"12\relax%
\catcode`\'12\relax%
\catcode`\-12\relax%
\catcode`\=12\relax%
\catcode`\.12\relax%
\catcode`\$3\relax%
\fi%
}%
\def\tikz@command@path{%
\let\tikz@signal@path=\tikz@signal@path%
\pgfutil@ifnextchar[{\tikz@check@earg}%
{\pgfutil@ifnextchar<{\tikz@doopt}{\tikz@@command@path}}}%
\pgfutil@protected\def\tikz@signal@path{\tikz@signal@path}%
\def\tikz@check@earg[#1]{%
\pgfutil@ifnextchar<{\tikz@swap@args[#1]}{\tikz@@command@path[#1]}}
\def\tikz@swap@args[#1]<#2>{\tikz@command@path<#2>[#1]}%
\def\tikz@doopt{%
\let\tikz@next=\tikz@eargnormalsemicolon%
\ifnum\the\catcode`\;=\active\relax%
\let\tikz@next=\tikz@eargactivesemicolon%
\fi%
\tikz@next}%
\long\def\tikz@eargnormalsemicolon<#1>#2;{\alt<#1>{\tikz@@command@path#2;}{\tikz@path@do@at@end}}%
{
\catcode`\;=\active
\long\global\def\tikz@eargactivesemicolon<#1>#2;{\alt<#1>{\tikz@@command@path#2;}{\tikz@path@do@at@end}}%
}
\def\tikz@@command@path{%
\edef\tikzscope@linewidth{\the\pgflinewidth}%
\begingroup%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\let\tikz@path@do@at@end=\tikz@lib@scope@check%
\let\tikz@options=\pgfutil@empty%
\tikz@clear@rdf@options%
\let\tikz@mode=\pgfutil@empty%
\let\tikz@moveto@waiting=\relax%
\let\tikz@timer=\relax%
\let\tikz@tangent=\relax%
\let\tikz@collected@onpath=\pgfutil@empty%
\let\tikz@preactions=\pgfutil@empty%
\let\tikz@postactions=\pgfutil@empty%
\tikz@snakedfalse%
\tikz@decoratepathfalse%
\tikz@node@is@a@labelfalse%
\tikz@resetexpandcount
\pgf@path@lastx=0pt%
\pgf@path@lasty=0pt%
\tikz@lastx=0pt%
\tikz@lasty=0pt%
\tikz@lastxsaved=0pt%
\tikz@lastysaved=0pt%
\tikzset{every path/.try}%
\tikz@scan@next@command%
}%
\def\tikz@scan@next@command{%
\ifx\tikz@collected@onpath\pgfutil@empty%
\else%
\tikz@invoke@collected@onpath%
\fi%
\afterassignment\tikz@handle\let\pgf@let@token=%
}%
\newcount\tikz@expandcount
\def\tikz@resetexpandcount{\tikz@expandcount=100\relax}
\let\tikz@collected@onpath=\pgfutil@empty%
\edef\tikz@frozen@relax@token{\ifnum0=0\fi}
\def\tikz@handle{%
\pgfutil@switch\pgfutil@ifx\pgf@let@token{%
{(}{\let\pgfutil@next\tikz@movetoabs}%
{+}{\let\pgfutil@next\tikz@movetorel}%
{-}{\let\pgfutil@next\tikz@lineto}%
{.}{\let\pgfutil@next\tikz@dot}%
{r}{\let\pgfutil@next\tikz@rect}%
{n}{\let\pgfutil@next\tikz@fig}%
{[}{\let\pgfutil@next\tikz@parse@options}%
{c}{\let\pgfutil@next\tikz@cchar}%
{\bgroup}{\let\pgfutil@next\tikz@beginscope}%
{\egroup}{\let\pgfutil@next\tikz@endscope}%
{;}{\let\pgfutil@next\tikz@finish}%
{a}{\let\pgfutil@next\tikz@a@char}%
{e}{\let\pgfutil@next\tikz@e@char}%
{g}{\let\pgfutil@next\tikz@g@char}%
{s}{\let\pgfutil@next\tikz@schar}%
{|}{\let\pgfutil@next\tikz@vh@lineto}%
{p}{\pgfsetmovetofirstplotpoint\let\pgfutil@next\tikz@pchar}%
{t}{\let\pgfutil@next\tikz@to}%
{\pgfextra}{\let\pgfutil@next\tikz@extra}%
{\foreach}{\let\pgfutil@next\tikz@foreach}%
{f}{\let\pgfutil@next\tikz@fchar}%
{\pgf@stop}{\let\pgfutil@next\relax}%
{\par}{\let\pgfutil@next\tikz@scan@next@command}%
{d}{\let\pgfutil@next\tikz@decoration}%
{l}{\let\pgfutil@next\tikz@l@char}%
{:}{\let\pgfutil@next\tikz@colon@char}%
{\relax}{\relax\let\pgfutil@next\tikz@scan@next@command}%
}{\tikz@resetexpandcount\pgfutil@next}{\tikz@expand}%
}%
\def\tikz@l@char{%
\pgfutil@ifnextchar e{\tikz@let@command}{%
\pgfutil@ifnextchar i{\tikz@lsystem}{%
\pgfutil@ifnextchar-{\tikz@@lsystem}{\tikz@expand}%
}%
}%
}%
\def\tikz@lsystem{%
\tikzerror{You need to say \string\usetikzlibrary{lindenmayersystems} to draw Lindenmayer systems}
}%
\def\tikz@@lsystem{%
\tikzerror{You need to say \string\usetikzlibrary{lindenmayersystems} to draw L-systems}
}%
\def\tikz@pchar{\pgfutil@ifnextchar l{\tikz@plot}{\pgfutil@ifnextchar i{\tikz@subpicture}{\tikz@parabola}}}%
\def\tikz@cchar{%
\pgfutil@ifnextchar i{\tikz@circle}%
{\pgfutil@ifnextchar h{\tikz@children}{\tikz@cochar}}}%
\def\tikz@cochar o{%
\pgfutil@ifnextchar o{\tikz@coordinate}{\tikz@cosine}}%
\def\tikz@e@char{%
\pgfutil@ifnextchar l{\tikz@ellipse}{\tikz@@e@char}}%
\def\tikz@a@char{%
\pgfutil@ifnextchar r{\tikz@arcA}{\tikzerror{Arc expected}}}%
\def\tikz@@e@char dge{%
\pgfutil@ifnextchar f{\tikz@edgetoparent}{\tikz@edge@plain}}%
\def\tikz@schar{\pgfutil@ifnextchar i{\tikz@sine}{\tikz@svg@path}}%
\def\tikz@g@char r{\pgfutil@ifnextchar i{\tikz@grid}{\tikz@graph}}%
\def\tikz@svg@path{%
\tikzerror{You need to say \string\usetikzlibrary{svg.path} to use the svg path command}
}%
\def\tikz@finish{%
\box\tikz@figbox@bg%
\iftikz@decoratepath%
\tikz@lib@dec@decorate@path%
\fi%
\pgfsyssoftpath@getcurrentpath\tikz@actions@path%
\edef\tikz@restorepathsize{%
\global\pgf@pathmaxx=\the\pgf@pathmaxx%
\global\pgf@pathmaxy=\the\pgf@pathmaxy%
\global\pgf@pathminx=\the\pgf@pathminx%
\global\pgf@pathminy=\the\pgf@pathminy%
}%
\tikz@preactions%
\let\tikz@path@picture=\pgfutil@empty%
\tikz@mode@fillfalse%
\tikz@mode@drawfalse%
\tikz@mode@doublefalse%
\tikz@mode@clipfalse%
\tikz@mode@boundaryfalse%
\tikz@mode@fade@pathfalse%
\tikz@mode@fade@scopefalse%
\edef\tikz@pathextend{%
{\noexpand\pgfqpoint{\the\pgf@pathminx}{\the\pgf@pathminy}}%
{\noexpand\pgfqpoint{\the\pgf@pathmaxx}{\the\pgf@pathmaxy}}%
}%
\tikz@mode%
\iftikz@mode@fade@path%
\tikz@addoption{%
\iftikz@fade@adjust%
\iftikz@mode@draw%
\pgfsetfadingforcurrentpathstroked{\tikz@path@fading}{\tikz@do@fade@transform}%
\else%
\pgfsetfadingforcurrentpath{\tikz@path@fading}{\tikz@do@fade@transform}%
\fi%
\else%
\pgfsetfading{\tikz@path@fading}{\tikz@do@fade@transform}%
\fi%
\tikz@mode@fade@pathfalse%
}%
\fi%
\iftikz@mode@fade@scope%
\iftikz@fade@adjust%
\iftikz@mode@draw%
\pgfsetfadingforcurrentpathstroked{\tikz@scope@fading}{\tikz@do@fade@transform}%
\else%
\pgfsetfadingforcurrentpath{\tikz@scope@fading}{\tikz@do@fade@transform}%
\fi%
\else%
\pgfsetfading{\tikz@scope@fading}{\tikz@do@fade@transform}%
\fi%
\tikz@mode@fade@scopefalse%
\fi%
\ifx\tikz@options\pgfutil@empty%
\else%
\pgfsys@beginscope%
\let\pgfscope@stroke@color=\pgf@strokecolor@global%
\let\pgfscope@fill@color=\pgf@fillcolor@global%
\begingroup%
\tikz@options%
\fi%
\tikz@do@rdf@pre@options%
\tikz@is@nodefalse%
\tikz@call@id@hook%
\iftikz@mode@clip\else%
\pgfidscope%
\tikz@do@rdf@post@options%
\begingroup%
\fi%
\iftikz@mode@fill%
\iftikz@mode@shade%
\pgfsyssoftpath@getcurrentpath\tikz@temppath
\pgfprocessround{\tikz@temppath}{\tikz@temppath}%
\pgfsyssoftpath@setcurrentpath\tikz@temppath%
\pgfsyssoftpath@invokecurrentpath%
\pgfpushtype%
\pgfusetype{.path fill}%
\pgfsys@fill%
\pgfpoptype%
\tikz@mode@fillfalse%
\else%
\ifx\tikz@path@picture\pgfutil@empty%
\else%
\pgfsyssoftpath@getcurrentpath\tikz@temppath
\pgfprocessround{\tikz@temppath}{\tikz@temppath}%
\pgfsyssoftpath@setcurrentpath\tikz@temppath%
\pgfsyssoftpath@invokecurrentpath%
\pgfpushtype%
\pgfusetype{.path fill}%
\pgfsys@fill%
\pgfpoptype%
\tikz@mode@fillfalse%
\fi%
\fi%
\fi%
\iftikz@mode@shade%
\pgfsyssoftpath@getcurrentpath\tikz@temppath
\pgfprocessround{\tikz@temppath}{\tikz@temppath}%
\pgfsyssoftpath@setcurrentpath\tikz@temppath%
\pgfpushtype%
\pgfusetype{.path shade}%
\pgfshadepath{\tikz@shading}{\tikz@shade@angle}%
\pgfpoptype%
\tikz@mode@shadefalse%
\fi%
\ifx\tikz@path@picture\pgfutil@empty%
\else%
\begingroup%
\pgfusetype{.path picture}%
\pgfidscope%
\pgfsys@beginscope%
\let\tikz@id@name\pgfutil@empty%
\pgfclearid%
\pgfsyssoftpath@getcurrentpath\tikz@temppath
\pgfprocessround{\tikz@temppath}{\tikz@temppath}%
\pgfsyssoftpath@setcurrentpath\tikz@temppath%
\pgfsyssoftpath@invokecurrentpath%
\pgfsys@clipnext%
\pgfsys@discardpath%
\pgf@relevantforpicturesizefalse%
\expandafter\def\csname pgf@sh@ns@path picture bounding box\endcsname{rectangle}
\expandafter\edef\csname pgf@sh@np@path picture bounding box\endcsname{%
\def\noexpand\southwest{\noexpand\pgfqpoint{\the\pgf@pathminx}{\the\pgf@pathminy}}%
\def\noexpand\northeast{\noexpand\pgfqpoint{\the\pgf@pathmaxx}{\the\pgf@pathmaxy}}%
}
\expandafter\def\csname pgf@sh@nt@path picture bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}
\expandafter\def\csname pgf@sh@pi@path picture bounding box\endcsname{\pgfpictureid}
\pgfinterruptpath%
\tikz@path@picture%
\endpgfinterruptpath%
\pgfsys@endscope%
\endpgfidscope%
\endgroup%
\let\tikz@path@picture=\pgfutil@empty%
\fi%
\iftikz@mode@draw%
\iftikz@mode@double%
\begingroup%
\pgfsys@beginscope%
\tikz@double@setup%
\fi%
\fi%
\pgfpushtype%
\edef\tikz@temp{\noexpand\pgfusepath{%
\iftikz@mode@fill fill,\fi%
\iftikz@mode@draw draw,\fi%
\iftikz@mode@clip clip\fi%
}}%
\pgfusetype{.path}%
\tikz@temp%
\pgfpoptype%
\tikz@mode@fillfalse%
\iftikz@mode@draw%
\iftikz@mode@double%
\pgfsys@endscope%
\endgroup%
\fi%
\fi%
\tikz@mode@drawfalse%
\tikz@postactions%
\box\tikz@figbox%
\iftikz@mode@clip\else\endgroup\endpgfidscope\fi%
\ifx\tikz@options\pgfutil@empty%
\else%
\endgroup%
\global\let\pgf@strokecolor@global=\pgfscope@stroke@color%
\global\let\pgf@fillcolor@global=\pgfscope@fill@color%
\pgfsys@endscope%
\iftikz@mode@clip%
\tikzerror{Extra options not allowed for clipping path command.}%
\fi%
\fi%
\iftikz@mode@clip%
\aftergroup\pgf@relevantforpicturesizefalse%
\fi%
\iftikz@mode@boundary%
\aftergroup\pgf@relevantforpicturesizefalse%
\fi%
\endgroup%
\global\pgflinewidth=\tikzscope@linewidth%
\tikz@path@do@at@end%
}%
\let\tikz@lib@scope@check\pgfutil@empty%
\def\tikz@path@do@at@end{\tikz@lib@scope@check}%
\def\tikz@@pathtext{@path}%
\def\pgf@outer@auto@adjust@hook{%
{%
\tikz@mode@drawfalse%
\tikz@mode%
\expandafter%
}%
\iftikz@mode@draw\else%
\pgfkeyslet{/pgf/outer xsep}\pgf@zero@text
\pgfkeyslet{/pgf/outer ysep}\pgf@zero@text
\fi%
}%
\def\tikz@extra@preaction#1{%
{%
\pgfsys@beginscope%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\path[#1];%
\pgfsyssoftpath@setcurrentpath\tikz@actions@path%
\tikz@restorepathsize%
\pgfsys@endscope%
}%
}%
\def\tikz@extra@postaction#1{%
{%
\pgfsys@beginscope%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\tikz@restorepathsize%
\path[#1]\pgfextra{\pgfsyssoftpath@setcurrentpath\tikz@actions@path};%
\pgf@resetpathsizes%
\pgfsys@endscope%
}%
}%
\def\tikz@skip#1{\tikz@scan@next@command#1}%
\def\tikz@expand{%
\advance\tikz@expandcount by -1
\ifnum\tikz@expandcount<0\relax%
\expandafter\pgfutil@firstoftwo
\else
\expandafter\pgfutil@secondoftwo
\fi
{%
\tikzerror{Giving up on this path. Did you forget a semicolon?}%
\global\let\tikz@expand@last@token=\pgf@let@token
\tikz@finish%
\expandafter\let\expandafter\tikz@expand@last@token@\csname tikz@expand@last@token\endcsname
\global\let\tikz@expand@last@token=\relax
\tikz@expand@last@token@
}{%
\tikz@@expand
}%
}
\def\tikz@@expand{%
\expandafter\tikz@scan@next@command\pgf@let@token}%
\newif\iftikz@auto@end@path
\def\tikz@beginscope{\begingroup\tikz@auto@end@pathfalse\tikz@scan@next@command}%
\def\tikz@endscope{%
\iftikz@auto@end@path\expandafter\tikz@finish\expandafter\egroup\else\expandafter\tikz@@endscope\fi%
}%
\def\tikz@@endscope{%
\global\setbox\tikz@tempbox=\box\tikz@figbox%
\global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
\global\let\tikz@tangent@temp\tikz@tangent%
\edef\tikz@marshal{%
\tikz@lastx=\the\tikz@lastx%
\tikz@lasty=\the\tikz@lasty%
\iftikz@current@point@local%
\else%
\tikz@lastxsaved=\the\tikz@lastxsaved%
\tikz@lastysaved=\the\tikz@lastysaved%
\ifx\tikz@moveto@waiting\relax%
\let\tikz@moveto@waiting\relax%
\else%
\def\noexpand\tikz@moveto@waiting{\tikz@moveto@waiting}%
\fi%
\iftikz@shapeborder%
\noexpand\tikz@shapebordertrue%
\def\noexpand\tikz@shapeborder@name{\tikz@shapeborder@name}%
\else%
\noexpand\tikz@shapeborderfalse%
\fi%
\fi%
}%
\expandafter%
\endgroup\tikz@marshal%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
\let\tikz@tangent\tikz@tangent@temp%
\tikz@scan@next@command}%
\def\tikz@extra{\pgfutil@ifnextchar\bgroup\tikz@@extra\relax}%
\long\def\tikz@@extra#1{#1\tikz@scan@next@command}%
\let\endpgfextra=\tikz@scan@next@command
\def\pgfextra{pgfextra}%
\def\tikz@fchar oreach{\tikz@foreach}%
\def\tikz@foreach{%
\def\pgffor@beginhook{%
\tikz@lastx=\tikz@foreach@save@lastx%
\tikz@lasty=\tikz@foreach@save@lasty%
\tikz@lastxsaved=\tikz@foreach@save@lastxsaved%
\tikz@lastysaved=\tikz@foreach@save@lastysaved%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
\expandafter\tikz@scan@next@command\pgfutil@firstofone}%
\def\pgffor@endhook{\pgfextra{%
\xdef\tikz@foreach@save@lastx{\the\tikz@lastx}%
\xdef\tikz@foreach@save@lasty{\the\tikz@lasty}%
\xdef\tikz@foreach@save@lastxsaved{\the\tikz@lastxsaved}%
\xdef\tikz@foreach@save@lastysaved{\the\tikz@lastysaved}%
\global\setbox\tikz@tempbox=\box\tikz@figbox%
\global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
\pgfutil@gobble}}%
\def\pgffor@afterhook{%
\tikz@lastx=\tikz@foreach@save@lastx%
\tikz@lasty=\tikz@foreach@save@lasty%
\tikz@lastxsaved=\tikz@foreach@save@lastxsaved%
\tikz@lastysaved=\tikz@foreach@save@lastysaved%
\let\pgffor@beginhook\relax%
\let\pgffor@endhook\relax%
\let\pgffor@afterhook\relax%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
\tikz@scan@next@command}%
\global\setbox\tikz@tempbox=\box\tikz@figbox%
\global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
\xdef\tikz@foreach@save@lastx{\the\tikz@lastx}%
\xdef\tikz@foreach@save@lasty{\the\tikz@lasty}%
\xdef\tikz@foreach@save@lastxsaved{\the\tikz@lastxsaved}%
\xdef\tikz@foreach@save@lastysaved{\the\tikz@lastysaved}%
\foreach}%
\def\tikz@command@againpath#1{%
\pgfextra{%
\pgfsyssoftpath@getcurrentpath\tikz@temp%
\expandafter\pgfutil@g@addto@macro\expandafter\tikz@temp\expandafter{#1}%
\pgfsyssoftpath@setcurrentpath\tikz@temp%
}%
}%
\def\tikz@colon@char#1=#2{%
\tikz@scan@next@command{[animate={myself:{#1}={#2}}]}%
}%
\newif\iftikz@shapeborder
\def\tikz@movetoabs{\tikz@moveto(}%
\def\tikz@movetorel{\tikz@moveto+}%
\def\tikz@moveto{%
\tikz@scan@one@point{\tikz@@moveto}}%
\def\tikz@@moveto#1{%
\tikz@make@last@position{#1}%
\iftikz@shapeborder%
\edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
\else%
\tikz@@movetosave{\tikz@last@position}%
\let\tikz@moveto@waiting=\relax%
\fi%
\tikz@scan@next@command%
}%
\def\tikz@@movetosave#1{%
{\pgftransformreset
\pgf@process{#1}%
\xdef\tikz@marshal{%
\tikz@lastmovetox=\the\pgf@x\relax%
\tikz@lastmovetoy=\the\pgf@y\relax%
}%
}%
\tikz@marshal
\pgfpathmoveto{#1}%
}%
\let\tikz@moveto@waiting=\relax %
\def\tikz@flush@moveto{%
\ifx\tikz@moveto@waiting\relax%
\else%
\tikz@@movetosave{\tikz@last@position}%
\fi%
\let\tikz@moveto@waiting=\relax%
}%
\def\tikz@flush@moveto@toward#1#2#3{%
\ifx\tikz@moveto@waiting\relax%
\else%
\pgf@process{\pgfpointshapeborder{\tikz@moveto@waiting}{#1}}%
#2=\pgf@x%
#3=\pgf@y%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\tikz@@movetosave{\pgfqpoint{\pgf@x}{\pgf@y}}%
\fi%
\let\tikz@moveto@waiting=\relax%
}%
\def\tikz@collect@coordinate@onpath#1c{%
\pgfutil@ifnextchar y{\tikz@cycle@expander@add#1}{\tikz@collect@coordinate@onpath@{#1}}}%
\def\tikz@collect@coordinate@onpath@#1oordinate{%
\pgfutil@ifnextchar[{\tikz@@collect@coordinate@opt#1}{\tikz@@collect@coordinate@opt#1[]}}%
\def\tikz@@collect@coordinate@opt#1[#2]{%
\pgfutil@ifnextchar({\tikz@@collect@coordinate#1[#2]}{%
\tikz@collect@label@onpath#1node[shape=coordinate,#2]{}}}%
\def\tikz@@collect@coordinate#1[#2](#3){%
\tikz@collect@label@onpath#1node[shape=coordinate,#2](#3){}}%
\newif\iftikz@collect@pic
\def\tikz@collect@label@onpath#1node{%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath node}%
\let\tikz@collect@cont#1%
\tikz@collect@picfalse%
\tikz@collect@label@scan}%
\def\tikz@collect@pic@onpath#1pic{%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath pic}%
\let\tikz@collect@cont#1
\tikz@collect@pictrue%
\tikz@collect@label@scan}%
\def\tikz@collect@label@scan{%
\pgfutil@ifnextchar f{\tikz@collect@nodes}{%
\pgfutil@ifnextchar({\tikz@collect@paran}%
{\pgfutil@ifnextchar[{\tikz@collect@options}%
{\pgfutil@ifnextchar:{\tikz@collect@animation}%
{\pgfutil@ifnextchar\bgroup{\tikz@collect@arg}%
{\tikz@collect@cont}}}}}%
}%
\def\tikz@collect@nodes foreach#1in{%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath foreach#1in}%
\pgfutil@ifnextchar\bgroup\tikz@collect@nodes@group\tikz@collect@nodes@one%
}%
\def\tikz@collect@nodes@one#1{%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath #1}%
\tikz@collect@label@scan%
}%
\def\tikz@collect@nodes@group#1{%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
\tikz@collect@label@scan%
}%
\def\tikz@collect@animation#1=#2{%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1={#2}}%
\tikz@collect@label@scan%
}%
\def\tikz@collect@paran#1){%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1)}%
\tikz@collect@label@scan%
}%
\def\tikz@collect@options#1]{%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1]}%
\tikz@collect@label@scan%
}%
\def\tikz@collect@arg#1{%
\iftikz@handle@active@nodes%
\iftikz@collect@pic%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
\else%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{\scantokens{#1}}}%
\fi%
\else%
\expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
\fi%
\tikz@collect@cont%
}%
\def\tikz@invoke@collected@onpath{%
\tikz@node@is@a@labeltrue%
\let\tikz@temp=\tikz@collected@onpath%
\let\tikz@collected@onpath=\pgfutil@empty%
\expandafter\tikz@scan@next@command\tikz@temp\pgf@stop%
\tikz@node@is@a@labelfalse%
}%
\def\tikz@cycle@expander#1{\pgfutil@ifnextchar c{\tikz@cycle@expander@{#1}}{#1}}%
\def\tikz@cycle@expander@#1c{\pgfutil@ifnextchar y{\tikz@cycle@expander@add{#1}}{#1c}}%
\def\tikz@cycle@expander@add#1ycle{#1(current subpath start)--cycle}%
\def\tikz@lineto{%
\pgfutil@ifnextchar |%
{\expandafter\tikz@hv@lineto\pgfutil@gobble}%
{\expandafter\pgfutil@ifnextchar\tikz@activebar{\expandafter\tikz@hv@lineto\pgfutil@gobble}%
{\expandafter\tikz@lineto@mid\pgfutil@gobble}}}%
\def\tikz@lineto@mid{%
\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@lineto@mid}%
{%
\pgfutil@ifnextchar c{\tikz@close}{%
\pgfutil@ifnextchar p{\tikz@lineto@plot@or@pic}{\tikz@scan@one@point{\tikz@@lineto}}}}}%
\def\tikz@lineto@plot@or@pic p{%
\pgfutil@ifnextchar i{\tikz@collect@pic@onpath\tikz@lineto@mid p}{%
\pgfsetlinetofirstplotpoint\tikz@plot}%
}%
\def\tikz@@lineto#1{%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}
\iftikz@shapeborder%
\pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\tikz@last@position}}%
\tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
\tikz@flush@moveto@toward{\tikz@last@position}\pgf@x\pgf@y%
\tikz@path@lineto{\tikz@last@position}%
\edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\tikz@make@last@position{#1}%
\edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
\else%
\tikz@make@last@position{#1}%
\tikz@flush@moveto@toward{\tikz@last@position}\pgf@x\pgf@y%
\tikz@path@lineto{\tikz@last@position}%
\edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\fi%
\let\tikz@timer=\tikz@timer@line%
\let\tikz@tangent\tikz@timer@start%
\tikz@scan@next@command%
}%
\def\tikz@path@lineto#1{%
\iftikz@snaked%
{
\pgfsyssoftpathmovetorelevantfalse%
\pgfpathsnakesto{\tikz@presnake,{\tikz@snake}{\tikz@mainsnakelength}{\noexpand\tikz@snake@install@trans}{},\tikz@postsnake}{#1}%
}
\else%
\pgfpathlineto{#1}%
\fi%
}%
\def\tikz@path@close#1{%
\iftikz@snaked%
{%
\pgftransformreset%
\pgfpathsnakesto{\tikz@presnake,{\tikz@snake}{\tikz@mainsnakelength}{\noexpand\tikz@snake@install@trans}{},\tikz@postsnake}{#1}%
}%
\fi%
\pgfpathclose%
}%
\def\tikz@hv@lineto{%
\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@hv@lineto}{%
\pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@hv@lineto}%
{\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@hv@lineto}%
{\tikz@scan@one@point{\tikz@@hv@lineto}}}}}%
\def\tikz@@hv@lineto#1{%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\pgf@yc=\tikz@lasty%
\tikz@make@last@position{#1}%
\edef\tikz@tangent{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\pgf@yc}}%
\tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\pgf@yc}}\pgf@x\pgf@yc%
\iftikz@shapeborder%
{%
\pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\tikz@lastx}{\pgf@yc}}}%
\tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
\tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@yc}}%
\tikz@path@lineto{\tikz@last@position}%
\xdef\tikz@timer@end@temp{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
}%
\let\tikz@timer@end=\tikz@timer@end@temp%
\edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
\else%
\tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@yc}}%
\tikz@path@lineto{\tikz@last@position}%
\edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\fi%
\let\tikz@timer=\tikz@timer@hvline%
\tikz@scan@next@command%
}%
\def\tikz@vh@lineto-{\tikz@vh@lineto@next}%
\def\tikz@vh@lineto@next{%
\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@vh@lineto@next}{%
\pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@vh@lineto@next}%
{\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@vh@lineto@next}%
{\tikz@scan@one@point\tikz@@vh@lineto}}}}%
\def\tikz@@vh@lineto#1{%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\pgf@xc=\tikz@lastx%
\tikz@make@last@position{#1}%
\edef\tikz@tangent{\noexpand\pgfqpoint{\the\pgf@xc}{\the\tikz@lasty}}%
\tikz@flush@moveto@toward{\pgfqpoint{\pgf@xc}{\tikz@lasty}}\pgf@xc\pgf@y%
\iftikz@shapeborder%
{%
\pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@xc}{\tikz@lasty}}}%
\tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
\tikz@path@lineto{\pgfqpoint{\pgf@xc}{\tikz@lasty}}%
\tikz@path@lineto{\tikz@last@position}%
\xdef\tikz@timer@end@temp{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
}%
\let\tikz@timer@end=\tikz@timer@end@temp%
\edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
\else%
\tikz@path@lineto{\pgfqpoint{\pgf@xc}{\tikz@lasty}}%
\tikz@path@lineto{\tikz@last@position}%
\edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\fi%
\let\tikz@timer=\tikz@timer@vhline%
\tikz@scan@next@command%
}%
\def\tikz@close c{%
\pgfutil@ifnextchar o{\tikz@collect@coordinate@onpath\tikz@lineto@mid c}%
{\tikz@@close c}}%
\def\tikz@@close cycle{%
\tikz@flush@moveto%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}
\tikz@make@last@position{\expandafter\pgfpoint\pgfsyssoftpath@lastmoveto}%
\tikz@path@close{\expandafter\pgfpoint\pgfsyssoftpath@lastmoveto}%
\def\pgfstrokehook{}%
\edef\tikz@timer@end{%
\noexpand\pgfqpoint{\the\tikz@lastmovetox}{\the\tikz@lastmovetoy}}%
\let\tikz@timer=\tikz@timer@line%
\let\tikz@tangent\tikz@timer@start%
\tikz@scan@next@command%
}%
\def\tikz@parse@options#1]{%
\tikzset{#1}%
\tikz@scan@next@command%
}%
\def\tikz@edge@plain{%
\begingroup%
\ifx\tikz@to@use@whom\pgfutil@undefined\else\tikz@to@use@whom\fi
\let\tikz@to@or@edge@function=\tikz@do@edge%
\let\tikz@@to@local@options\pgfutil@empty%
\let\tikz@collected@onpath=\pgfutil@empty%
\tikz@to@or@edge}%
\def\tikz@to o{%
\tikz@to@use@last@coordinate%
\let\tikz@to@or@edge@function=\tikz@do@to%
\let\tikz@@to@local@options\pgfutil@empty%
\let\tikz@collected@onpath=\pgfutil@empty%
\tikz@to@or@edge}%
\def\tikz@to@or@edge{%
\pgfutil@ifnextchar[{\tikz@to@or@edge@option}{%
\pgfutil@ifnextchar:{\tikz@to@or@edge@animation}{%
\tikz@@to@collect}}%
}%
\def\tikz@to@or@edge@option[#1]{%
\expandafter\def\expandafter\tikz@@to@local@options\expandafter{\tikz@@to@local@options,#1}%
\tikz@to@or@edge%
}%
\def\tikz@to@or@edge@animation:#1=#2{%
\expandafter\def\expandafter\tikz@@to@local@options\expandafter{\tikz@@to@local@options,%
animate={myself:{#1}={#2}}}%
\tikz@to@or@edge%
}%
\def\tikz@@to@collect{%
\pgfutil@ifnextchar(\tikz@@to@or@edge@coordinate%
{\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@to@collect}%
{\pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@to@collect}%
{\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@@to@collect}%
{\pgfutil@ifnextchar +{\tikz@scan@one@point\tikz@@to@or@edge@math}%
{\tikzerror{(, +, coordinate, pic, or node expected}%
\tikz@@to@or@edge@coordinate()}}}}}%
}%
\def\tikz@@to@or@edge@coordinate({%
\pgfutil@ifnextchar${%
\tikz@scan@one@point\tikz@@to@or@edge@math(%
}{%
\pgfutil@ifnextchar[{%
\tikz@scan@one@point\tikz@@to@or@edge@math(%
}{%
\tikz@@to@or@edge@@coordinate(%
}%
}%
}%
\def\tikz@@to@or@edge@math#1{%
\pgf@process{#1}%
\iftikz@updatecurrent\else
\tikz@updatenextfalse
\fi
\edef\tikztotarget{\the\pgf@x,\the\pgf@y}%
\tikz@to@or@edge@function%
}%
\def\tikz@@to@or@edge@@coordinate(#1){%
\def\tikztotarget{#1}%
\tikz@to@or@edge@function%
}%
\def\tikz@do@edge{%
\ifx\tikz@edge@macro\pgfutil@empty%
\setbox\tikz@whichbox=\hbox\bgroup%
\unhbox\tikz@whichbox%
\hbox\bgroup
\bgroup%
\pgfinterruptpath%
\pgfscope%
\let\tikz@transform=\pgfutil@empty%
\let\tikz@options=\pgfutil@empty%
\tikz@clear@rdf@options%
\let\tikz@tonodes=\tikz@collected@onpath%
\def\tikztonodes{{\pgfextra{\tikz@node@is@a@labeltrue}\tikz@tonodes}}%
\let\tikz@collected@onpath=\pgfutil@empty%
\tikz@options%
\tikz@do@rdf@pre@options%
\pgfidscope%
\tikz@do@rdf@post@options%
\tikz@transform%
\let\tikz@transform=\relax%
\let\tikz@after@path\pgfutil@empty%
\tikz@atbegin@to%
\tikz@enable@edge@quotes%
\path[style=every edge]\expandafter[\tikz@@to@local@options](\tikztostart)\tikz@to@path
\pgfextra{\global\let\tikz@after@path@smuggle=\tikz@after@path};%
\tikz@atend@to%
\endpgfidscope%
\endpgfscope%
\endpgfinterruptpath%
\egroup
\egroup%
\egroup%
\global\setbox\tikz@tempbox=\box\tikz@whichbox%
\expandafter\endgroup%
\expandafter\setbox\tikz@whichbox=\box\tikz@tempbox%
\else%
\expandafter\expandafter\expandafter\tikz@edge@macro%
\expandafter\expandafter\expandafter{\expandafter\tikz@@to@local@options\expandafter}\expandafter{\tikz@collected@onpath}%
\endgroup%
\let\tikz@after@path@smuggle=\pgfutil@empty%
\fi%
\expandafter\tikz@scan@next@command\tikz@after@path@smuggle%
}%
\def\tikz@do@to{%
\let\tikz@tonodes=\tikz@collected@onpath%
\def\tikztonodes{{\pgfextra{\tikz@node@is@a@labeltrue}\tikz@tonodes}}%
\let\tikz@collected@onpath=\pgfutil@empty%
\tikz@scan@next@command%
{%
\pgfextra{\let\tikz@after@path\pgfutil@empty}%
\pgfextra{\tikz@atbegin@to}%
\pgfextra{\tikz@enable@edge@quotes}%
[style=every to]\expandafter[\tikz@@to@local@options]\tikz@to@path%
\pgfextra{\tikz@atend@to}%
\pgf@stop%
\expandafter\tikz@scan@next@command\expandafter%
}\tikz@after@path%
\pgfextra{\tikz@updatenexttrue\tikz@updatecurrenttrue}%
}%
\def\tikz@to@use@last@coordinate{%
\iftikz@shapeborder%
\edef\tikztostart{\tikz@shapeborder@name}%
\else%
\edef\tikztostart{\the\tikz@lastx,\the\tikz@lasty}%
\fi%
}%
\def\tikz@to@use@last@fig@name{%
\edef\tikztostart{\tikz@to@last@fig@name}%
}%
\def\tikz@graph aph{\tikz@lib@graph@parser}%
\def\tikz@lib@graph@parser{\pgfutil@ifnextchar[\tikz@graph@error{\tikz@graph@error[]}}%
\def\tikz@graph@error[#1]#2{%
\tikzerror{You need to say \string\usetikzlibrary{graphs} in order to use the graph syntax}%
\tikz@lib@graph@parser@done%
}%
\def\tikz@lib@graph@parser@done{%
\tikz@scan@next@command%
}%
\def\tikz@edgetoparent from parent{\pgfutil@ifnextchar[\tikz@@edgetoparent{\tikz@@edgetoparent[]}}%
\def\tikz@@edgetoparent[#1]{%
\let\tikz@edge@to@parent@needed=\pgfutil@empty%
\def\tikz@edgetoparent@options{#1}%
\begingroup%
\let\tikz@collected@onpath=\pgfutil@empty%
\tikz@edgetoparentcollect%
}%
\def\tikz@edgetoparentcollect{%
\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@edgetoparentcollect}%
{%
\expandafter%
\endgroup%
\expandafter\tikz@edgetoparent@rollout\expandafter{\tikz@collected@onpath}%
}%
}%
\def\tikz@edgetoparent@rollout#1{%
\pgfkeysgetvalue{/tikz/edge from parent macro}\tikz@etop@temp
\expandafter\tikz@scan@next@command\expandafter\tikz@etop@temp\expandafter{\tikz@edgetoparent@options}{#1}%
}%
\def\tikz@dot.{\tikz@@dot}%
\def\tikz@@dot{%
\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@dot}{%
\pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@dot}%
{\pgfutil@ifnextchar c{\tikz@curveto@double}{\tikz@curveto@auto}}}%
}%
\def\tikz@curveto@double co{%
\pgfutil@ifnextchar o{\tikz@collect@coordinate@onpath\tikz@@dot co}
{\tikz@cureveto@@double}}%
\def\tikz@cureveto@@double ntrols#1{%
\tikz@scan@one@point\tikz@curveA#1%
}%
\def\tikz@curveA#1{%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
{%
\tikz@lastxsaved=\tikz@lastx%
\tikz@lastysaved=\tikz@lasty%
\tikz@make@last@position{#1}%
\xdef\tikz@curve@first{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
}%
\pgfutil@ifnextchar a
{\tikz@curveBand}%
{\let\tikz@curve@second\tikz@curve@first\tikz@curveCdots}%
}%
\def\tikz@curveBand and{%
\tikz@scan@one@point\tikz@curveB%
}%
\def\tikz@curveB#1{%
\def\tikz@curve@second{#1}%
\tikz@curveCdots}
\def\tikz@curveCdots{%
\afterassignment\tikz@curveCdot\let\pgfutil@next=}%
\def\tikz@curveCdot.{%
\ifx\pgfutil@next.%
\else%
\tikzerror{Dot expected}%
\fi%
\iftikz@updatenext
\tikz@updatecurrenttrue%
\fi
\tikz@curveCcheck%
}%
\def\tikz@curveCcheck{%
\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@curveCcheck}{%
\pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@curveCcheck}%
{\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@curveCcheck}
{\tikz@scan@one@point\tikz@curveC}}}%
}%
\def\tikz@curveC#1{%
\tikz@make@last@position{#1}%
\edef\tikz@curve@third{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
{%
\tikz@lastxsaved=\tikz@lastx%
\tikz@lastysaved=\tikz@lasty%
\tikz@make@last@position{\tikz@curve@second}%
\xdef\tikz@curve@second{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
}%
\ifx\tikz@moveto@waiting\relax%
\else%
\pgf@process{\pgfpointshapeborder{\tikz@moveto@waiting}{\tikz@curve@first}}%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\tikz@@movetosave{\pgfqpoint{\pgf@x}{\pgf@y}}%
\fi%
\let\tikz@timer@cont@one=\tikz@curve@first%
\let\tikz@timer@cont@two=\tikz@curve@second%
\iftikz@shapeborder%
{%
\pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\tikz@curve@second}}%
\tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
\edef\tikz@curve@third{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\pgfpathcurveto{\tikz@curve@first}{\tikz@curve@second}{\tikz@curve@third}%
\global\let\tikz@timer@end@temp=\tikz@curve@third%
}%
\let\tikz@timer@end=\tikz@timer@end@temp%
\edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
\else%
\pgfpathcurveto{\tikz@curve@first}{\tikz@curve@second}{\tikz@curve@third}%
\let\tikz@timer@end=\tikz@curve@third
\let\tikz@moveto@waiting=\relax%
\fi%
\let\tikz@timer=\tikz@timer@curve%
\let\tikz@tangent=\tikz@curve@second%
\tikz@scan@next@command%
}%
\def\tikz@rect ectangle{%
\tikz@flush@moveto%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\tikz@@rect}%
\def\tikz@@rect{%
\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@rect}{%
\pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@rect}%
{\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@@rect}%
{
\pgf@xa=\tikz@lastx\relax%
\pgf@ya=\tikz@lasty\relax%
\tikz@scan@one@point\tikz@rectB}}}}%
\def\tikz@rectB#1{%
\tikz@make@last@position{#1}%
\edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\let\tikz@timer=\tikz@timer@line%
\tikz@@movetosave{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\tikz@path@lineto{\pgfqpoint{\pgf@xa}{\tikz@lasty}}%
\tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
\tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@ya}}%
\iftikz@snaked%
\tikz@path@lineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
\fi%
\pgfpathclose%
\tikz@@movetosave{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
\def\pgfstrokehook{}%
\let\tikz@tangent\relax%
\tikz@scan@next@command%
}%
\def\tikz@grid id{%
\tikz@flush@moveto%
\pgf@xa=\tikz@lastx\relax%
\pgf@ya=\tikz@lasty\relax%
\pgfutil@ifnextchar[{\tikz@gridA}{\tikz@gridA[]}}%
\def\tikz@gridA[#1]{%
\def\tikz@grid@options{#1}%
\tikz@cycle@expander{\tikz@scan@one@point\tikz@gridB}}%
\def\tikz@gridB#1{%
\tikz@make@last@position{#1}%
\let\tikz@tangent\relax%
{%
\let\tikz@after@path\pgfutil@empty%
\expandafter\tikzset\expandafter{\tikz@grid@options}
\tikz@checkunit{\tikz@grid@x}%
\iftikz@isdimension%
\pgf@process{\pgfpoint{\tikz@grid@x}{0pt}}%
\else%
\pgf@process{\pgfpointxy{\tikz@grid@x}{0}}%
\fi%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\tikz@checkunit{\tikz@grid@y}%
\iftikz@isdimension%
\pgf@process{\pgfpoint{0pt}{\tikz@grid@y}}%
\else%
\pgf@process{\pgfpointxy{0}{\tikz@grid@y}}%
\fi%
\advance\pgf@xb by\pgf@x%
\advance\pgf@yb by\pgf@y%
\pgfpathgrid[stepx=\pgf@xb,stepy=\pgf@yb]%
{\pgfqpoint{\pgf@xa}{\pgf@ya}}{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
\expandafter}%
\expandafter\tikz@scan@next@command\tikz@after@path%
}%
\def\tikz@plot lot{%
\tikz@flush@moveto%
\pgfutil@ifnextchar[{\tikz@@plot}{\tikz@@plot[]}}%
\def\tikz@@plot[#1]{%
\let\tikz@tangent\tikz@tangent@lookup%
\begingroup%
\let\tikz@after@path\pgfutil@empty%
\let\tikz@options=\pgfutil@empty%
\tikzset{every plot/.try}%
\tikzset{#1}%
\pgfutil@ifnextchar f{\tikz@plot@f}%
{\pgfutil@ifnextchar c{\tikz@plot@scan@points}%
{\pgfutil@ifnextchar ({\tikz@plot@expression}{%
\tikzerror{Cannot parse this plotting data}%
\endgroup}}}}%
\def\tikz@plot@f f{\pgfutil@ifnextchar i{\tikz@plot@file}{\tikz@plot@function}}%
\def\tikz@plot@file ile#1{\def\tikz@plot@data{\pgfplotxyfile{#1}}\tikz@@@plot}%
\def\tikz@plot@scan@points coordinates#1{%
\pgfplothandlerrecord\tikz@plot@data%
\pgfplotstreamstart%
\pgfutil@ifnextchar\pgf@stop{\pgfplotstreamend\expandafter\tikz@@@plot\pgfutil@gobble}
{\tikz@scan@one@point\tikz@plot@next@point}%
#1\pgf@stop%
}%
\def\tikz@plot@next@point#1{%
\pgfplotstreampoint{#1}%
\pgfutil@ifnextchar\pgf@stop{\pgfplotstreamend\expandafter\tikz@@@plot\pgfutil@gobble}%
{\tikz@scan@one@point\tikz@plot@next@point}%
}%
\def\tikz@plot@function unction#1{%
\def\tikz@plot@filename{\tikz@plot@prefix\tikz@plot@id}%
\iftikz@plot@raw@gnuplot%
\def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{#1}}%
\else%
\iftikz@plot@parametric%
\def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{%
set samples \tikz@plot@samples;
set parametric;
plot [t=\tikz@plot@domain]
[\tikz@plot@xrange]
[\tikz@plot@range]
#1}}%
\else%
\def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{%
set samples \tikz@plot@samples;
plot [x=\tikz@plot@domain]
\ifx\tikz@plot@range\pgfutil@empty\else[\tikz@plot@range]\fi
#1}}%
\fi%
\fi%
\tikz@@@plot%
}%
\def\tikz@plot@no@resample{%
\pgfutil@IfFileExists{\tikz@plot@filename.table}%
{\def\tikz@plot@data{\pgfplotxyfile{\tikz@plot@filename.table}}}%
{}%
}%
\def\tikz@plot@expression(#1){%
\edef\tikz@plot@data{\noexpand\pgfplotfunction{\expandafter\noexpand\tikz@plot@var}{\tikz@plot@samplesat}}%
\expandafter\def\expandafter\tikz@plot@data\expandafter{\tikz@plot@data{\tikz@scan@one@point\pgfutil@firstofone(#1)}}%
\tikz@@@plot%
}%
\def\tikz@@@plot{%
\def\pgfplotlastpoint{\pgfpointorigin}%
\tikz@plot@handler%
\tikz@plot@data%
\global\let\tikz@@@temp=\pgfplotlastpoint%
\ifx\tikz@plot@mark\pgfutil@empty%
\else%
\setbox\tikz@whichbox=\hbox{%
\unhbox\tikz@whichbox%
\hbox{{%
\pgfinterruptpath%
\pgfscope%
\let\tikz@options=\pgfutil@empty%
\let\tikz@transform=\pgfutil@empty%
\tikzset{every mark}%
\tikz@options%
\ifx\tikz@mark@list\pgfutil@empty%
\pgfplothandlermark{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}%
\else
\pgfplothandlermarklisted{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}{\tikz@mark@list}%
\fi
\tikz@plot@data%
\endpgfscope
\endpgfinterruptpath%
}}%
}%
\fi%
\global\setbox\tikz@tempbox=\box\tikz@whichbox%
\global\let\tikz@after@path@smuggle=\tikz@after@path
\expandafter\endgroup%
\expandafter\setbox\tikz@whichbox=\box\tikz@tempbox%
\tikz@make@last@position{\tikz@@@temp}%
\expandafter\tikz@scan@next@command\tikz@after@path@smuggle%
}%
\pgfdeclareplotmark{ball}
{%
\def\tikz@shading{ball}%
\shade (0pt,0pt) circle (\pgfplotmarksize);%
}%
\def\tikz@cosine s{\tikz@cycle@expander{\tikz@scan@one@point\tikz@@cosine}}
\def\tikz@@cosine#1{%
\let\tikz@tangent\tikz@tangent@lookup%
\tikz@flush@moveto%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\advance\pgf@xc by-\tikz@lastx%
\advance\pgf@yc by-\tikz@lasty%
\advance\tikz@lastx by\pgf@xc%
\advance\tikz@lasty by\pgf@yc%
\tikz@lastxsaved=\tikz@lastx%
\tikz@lastysaved=\tikz@lasty%
\tikz@updatecurrenttrue%
\pgfpathcosine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
\tikz@scan@next@command%
}%
\def\tikz@sine in{\tikz@cycle@expander{\tikz@scan@one@point\tikz@@sine}}
\def\tikz@@sine#1{%
\let\tikz@tangent\tikz@tangent@lookup%
\tikz@flush@moveto%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\advance\pgf@xc by-\tikz@lastx%
\advance\pgf@yc by-\tikz@lasty%
\advance\tikz@lastx by\pgf@xc%
\advance\tikz@lasty by\pgf@yc%
\tikz@lastxsaved=\tikz@lastx%
\tikz@lastysaved=\tikz@lasty%
\tikz@updatecurrenttrue%
\pgfpathsine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
\tikz@scan@next@command%
}%
\def\tikz@parabola arabola{%
\let\tikz@tangent\tikz@tangent@lookup%
\pgfutil@ifnextchar[{\tikz@parabola@options}{\tikz@parabola@options[]}}%
\def\tikz@parabola@options[#1]{%
\def\tikz@parabola@option{#1}%
\pgfutil@ifnextchar b{\tikz@parabola@scan@bend}{\tikz@cycle@expander{\tikz@scan@one@point\tikz@parabola@semifinal}}}%
\def\tikz@parabola@scan@bend bend{\tikz@scan@one@point\tikz@parabola@scan@bendB}%
\def\tikz@parabola@scan@bendB#1{%
\def\tikz@parabola@bend{#1}%
\tikz@cycle@expander{\tikz@scan@one@point\tikz@parabola@semifinal}%
}%
\def\tikz@parabola@semifinal#1{%
\tikz@flush@moveto%
\pgf@xb=\tikz@lastx%
\pgf@yb=\tikz@lasty%
\tikz@make@last@position{#1}%
\pgf@xc=\tikz@lastx%
\pgf@yc=\tikz@lasty%
\begingroup%
\let\tikz@after@path\pgfutil@empty%
\expandafter\tikzset\expandafter{\tikz@parabola@option}%
\tikz@lastxsaved=\tikz@parabola@bend@factor\tikz@lastx%
\tikz@lastysaved=\tikz@parabola@bend@factor\tikz@lasty%
\advance\tikz@lastxsaved by\pgf@xb%
\advance\tikz@lastysaved by\pgf@yb%
\advance\tikz@lastxsaved by-\tikz@parabola@bend@factor\pgf@xb%
\advance\tikz@lastysaved by-\tikz@parabola@bend@factor\pgf@yb%
\expandafter\tikz@make@last@position\expandafter{\tikz@parabola@bend}%
\advance\pgf@xc by-\tikz@lastx%
\advance\pgf@yc by-\tikz@lasty%
\advance\tikz@lastx by-\pgf@xb%
\advance\tikz@lasty by-\pgf@yb%
\xdef\tikz@parabola@b{{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}%
\expandafter\endgroup%
\expandafter\expandafter\expandafter\pgfpathparabola\expandafter\tikz@parabola@b%
\expandafter\tikz@scan@next@command\tikz@after@path%
}%
\def\tikz@circle ircle{\tikz@flush@moveto\tikz@@circle}%
\def\tikz@ellipse llipse{\tikz@flush@moveto\tikz@@circle}%
\def\tikz@@circle{%
\let\tikz@tangent\relax%
\pgfutil@ifnextchar(\tikz@@@circle
{\pgfutil@ifnextchar[\tikz@circle@opt{%
\advance\tikz@expandcount by -10\relax%
\ifnum\tikz@expandcount<0\relax%
\let\pgfutil@next=\tikz@@circle@normal%
\else%
\let\pgfutil@next=\tikz@@circle@scanexpand%
\fi%
\pgfutil@next%
}}%
}%
\def\tikz@@circle@scanexpand{\expandafter\tikz@@circle}%
\def\tikz@@circle@normal{\tikz@circle@opt[]}%
\def\tikz@circle@opt[#1]{%
{%
\def\tikz@node@at{\tikz@last@position}%
\let\tikz@transform=\pgfutil@empty%
\tikzset{every circle/.try,#1}%
\pgftransformshift{\tikz@node@at}%
\tikz@transform%
\tikz@do@ellipse{\pgfkeysvalueof{/tikz/x radius}}{\pgfkeysvalueof{/tikz/y radius}}
}%
\tikz@scan@next@command%
}%
\def\tikz@@@circle(#1){%
{%
\pgftransformshift{\tikz@last@position}%
\pgfutil@in@{ and }{#1}%
\ifpgfutil@in@%
\tikz@@ellipseB(#1)%
\else%
\tikz@do@circle{#1}%
\fi%
}%
\tikz@scan@next@command%
}%
\def\tikz@@ellipseB(#1 and #2){%
\tikz@do@ellipse{#1}{#2}%
}%
\def\tikz@do@circle#1{%
\pgfmathparse{#1}%
\let\tikz@ellipse@x=\pgfmathresult
\ifpgfmathunitsdeclared
\pgfpathellipse{\pgfpointorigin}%
{\pgfqpoint{\tikz@ellipse@x pt}{0pt}}%
{\pgfpoint{0pt}{\tikz@ellipse@x pt}}%
\else
\pgfpathellipse{\pgfpointorigin}%
{\pgfpointxy{\tikz@ellipse@x}{0}}%
{\pgfpointxy{0}{\tikz@ellipse@x}}%
\fi
}
\def\tikz@do@ellipse#1#2{
\pgfmathparse{#1}%
\let\tikz@ellipse@x=\pgfmathresult%
\ifpgfmathunitsdeclared%
\pgfmathparse{#2}%
\let\tikz@ellipse@y=\pgfmathresult%
\ifpgfmathunitsdeclared%
\pgfpathellipse{\pgfpointorigin}{%
\pgfqpoint{\tikz@ellipse@x pt}{0pt}}{\pgfpoint{0pt}{\tikz@ellipse@y pt}}%
\else%
\tikzerror{You cannot mix dimensions and dimensionless values in an ellipse}%
\fi%
\else%
\pgfmathparse{#2}%
\let\tikz@ellipse@y=\pgfmathresult%
\ifpgfmathunitsdeclared%
\tikzerror{You cannot mix dimensions and dimensionless values in an ellipse}%
\else%
\pgfpathellipse{\pgfpointorigin}{%
\pgfpointxy{\tikz@ellipse@x}{0}}{\pgfpointxy{0}{\tikz@ellipse@y}}%
\fi%
\fi%
}%
\def\tikz@arcA rc{\tikz@flush@moveto\tikz@arc@cont}%
\def\tikz@arc@cont{%
\pgfutil@ifnextchar(%
{\tikz@@arcto}{%
\pgfutil@ifnextchar[%
{\tikz@arc@opt}%
{%
\advance\tikz@expandcount by -10\relax%
\ifnum\tikz@expandcount<0\relax%
\let\pgfutil@next=\tikz@@arc@normal%
\else%
\let\pgfutil@next=\tikz@@arc@scanexpand%
\fi%
\pgfutil@next%
}%
}%
}%
\def\tikz@@arc@scanexpand{\expandafter\tikz@arc@cont}%
\def\tikz@@arc@normal{\tikz@arc@opt[]}%
\def\tikz@arc@opt[#1]{%
{%
\tikzset{every arc/.try,#1}%
\pgfkeysgetvalue{/tikz/start angle}\tikz@s
\pgfkeysgetvalue{/tikz/end angle}\tikz@e
\pgfkeysgetvalue{/tikz/delta angle}\tikz@d
\ifx\tikz@s\pgfutil@empty%
\pgfmathsetmacro\tikz@s{\tikz@e-\tikz@d}
\else
\ifx\tikz@e\pgfutil@empty%
\pgfmathsetmacro\tikz@e{\tikz@s+\tikz@d}
\fi%
\fi%
\xdef\pgf@marshal{\noexpand%
\tikz@do@arc{\tikz@s}{\tikz@e}
{\pgfkeysvalueof{/tikz/x radius}}
{\pgfkeysvalueof{/tikz/y radius}}}%
}%
\pgf@marshal%
\tikz@arcfinal%
}%
\def\tikz@@arcto(#1){%
\edef\tikz@temp{(#1)}%
\expandafter\tikz@@@arcto@check@slashand\tikz@temp%
}%
\def\tikz@@@arcto@check@slashand(#1:#2:#3){%
\pgfutil@in@{ and }{#3}%
\ifpgfutil@in@%
\tikz@parse@arc@and(#1:#2:#3)%
\else%
\tikz@parse@arc@and(#1:#2:{#3} and {#3})%
\fi%
\tikz@arcfinal%
}%
\def\tikz@parse@arc@and(#1:#2:#3 and #4){%
\tikz@do@arc{#1}{#2}{#3}{#4}%
}%
\def\tikz@do@arc#1#2#3#4{%
\let\tikz@tangent\tikz@tangent@lookup%
\edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\pgfmathsetmacro\tikz@timer@start@angle{#1}%
\pgfmathsetmacro\tikz@timer@end@angle{#2}%
\pgfmathparse{#3}%
\let\tikz@arc@x=\pgfmathresult%
\ifpgfmathunitsdeclared%
\pgfmathparse{#4}%
\let\tikz@arc@y=\pgfmathresult%
\ifpgfmathunitsdeclared%
\tikz@@@arcfinal{\pgfpatharc{\tikz@timer@start@angle}{\tikz@timer@end@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}
{\pgfpointpolar{\tikz@timer@start@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}
{\pgfpointpolar{\tikz@timer@end@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}%
\edef\tikz@timer@zero@axis{\noexpand\pgfqpoint{\tikz@arc@x pt}{0pt}}
\edef\tikz@timer@ninety@axis{\noexpand\pgfqpoint{0pt}{\tikz@arc@y pt}}
\else%
\tikzerror{You cannot mix dimensions and dimensionless values in an arc}%
\fi%
\else%
\pgfmathparse{#4}%
\let\tikz@arc@y=\pgfmathresult%
\ifpgfmathunitsdeclared%
\tikzerror{You cannot mix dimensions and dimensionless values in an arc}%
\else%
\tikz@@@arcfinal{\pgfpatharcaxes{\tikz@timer@start@angle}{\tikz@timer@end@angle}{\pgfpointxy{\tikz@arc@x}{0}}{\pgfpointxy{0}{\tikz@arc@y}}}
{\pgfpointpolarxy{\tikz@timer@start@angle}{\tikz@arc@x and \tikz@arc@y}}{\pgfpointpolarxy{\tikz@timer@end@angle}{\tikz@arc@x and \tikz@arc@y}}%
\pgf@process{\pgfpointxy{\tikz@arc@x}{0}}
\edef\tikz@timer@zero@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
\pgf@process{\pgfpointxy{0}{\tikz@arc@y}}
\edef\tikz@timer@ninety@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
\fi%
\fi%
}%
\def\tikz@@@arcfinal#1#2#3{%
#1%
\pgf@process{#2}
\xdef\tikz@arc@save@first{\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
\pgf@process{#3}
\xdef\tikz@arc@save@second{\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
}%
\def\tikz@arcfinal{%
\pgf@process{\tikz@arc@save@first}%
\advance\tikz@lastx by-\pgf@x%
\advance\tikz@lasty by-\pgf@y%
\pgf@process{\tikz@arc@save@second}%
\advance\tikz@lastx by\pgf@x%
\advance\tikz@lasty by\pgf@y%
\tikz@lastxsaved=\tikz@lastx%
\tikz@lastysaved=\tikz@lasty%
\let\tikz@timer=\tikz@timer@arc%
\tikz@scan@next@command%
}%
\def\tikz@coordinate ordinate{%
\pgfutil@ifnextchar[{\tikz@@coordinate@opt}{\tikz@@coordinate@opt[]}}%
\def\tikz@@coordinate@opt[#1]{%
\pgfutil@ifnextchar({\tikz@@coordinate[#1]}
{\tikz@fig ode[shape=coordinate,#1]{}}}%
\def\tikz@@coordinate[#1](#2){%
\pgfutil@ifnextchar a{\tikz@@coordinate@at[#1](#2)}
{\tikz@fig ode[shape=coordinate,#1](#2){}}}%
\def\tikz@@coordinate@at[#1](#2)a{%
\pgfutil@ifnextchar t{\tikz@@coordinate@@at[#1](#2)a}%
{\tikz@fig ode[shape=coordinate,#1](#2){}a}%
}%
\def\tikz@@coordinate@@at[#1](#2)at#3({%
\def\tikz@coordinate@caller{\tikz@fig ode[shape=coordinate,#1](#2)at}%
\tikz@scan@one@point\tikz@@coordinate@at@math(%
}%
\def\tikz@@coordinate@at@math#1{%
\pgf@process{#1}%
\edef\tikz@temp{(\the\pgf@x,\the\pgf@y)}%
\expandafter\tikz@coordinate@caller\tikz@temp{}%
}%
\def\tikz@fig ode{%
\pgfutil@ifnextchar a\tikz@test@also{%
\pgfutil@ifnextchar f{\tikz@nodes@start}\tikz@normal@fig}}%
\def\tikz@test@also a{\pgfutil@ifnextchar l\tikz@node@also{\tikz@normal@fig a}}%
\def\tikz@normal@fig{%
\edef\tikz@save@line@width{\the\pgflinewidth}%
\begingroup%
\let\tikz@fig@name=\pgfutil@empty%
\begingroup%
\tikz@is@matrixfalse%
\let\nodepart=\tikz@nodepart%
\let\tikz@atbegin@scope=\pgfutil@empty%
\let\tikz@atend@scope=\pgfutil@empty%
\let\tikz@do@after@node=\tikz@scan@next@command%
\let\tikz@options=\pgfutil@empty%
\tikz@clear@rdf@options%
\let\tikz@id@name=\pgfutil@empty%
\let\tikz@after@path=\pgfutil@empty%
\let\tikz@transform=\pgfutil@empty%
\let\tikz@mode=\pgfutil@empty%
\tikz@decoratepathfalse%
\let\tikz@preactions=\pgfutil@empty%
\let\tikz@postactions=\pgfutil@empty%
\let\tikz@alias=\pgfutil@empty%
\def\tikz@node@at{\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
\let\tikz@time@for@matrix\tikz@time%
\let\tikz@node@content\relax%
\pgfgetpath\tikzpathuptonow%
\iftikz@node@is@a@label%
\else%
\let\tikz@time\pgfutil@empty%
\fi%
\tikz@node@reset@hook%
\tikzset{every node/.try}%
\tikz@@scan@fig}%
\def\tikz@@scan@fig{%
\pgfutil@ifnextchar a{\tikz@fig@scan@at}
{\pgfutil@ifnextchar({\tikz@fig@scan@name}
{\pgfutil@ifnextchar[{\tikz@fig@scan@options}%
{\pgfutil@ifnextchar:{\tikz@fig@scan@animation}%
{\pgfutil@ifnextchar\bgroup{\tikz@fig@main}%
{\tikzerror{A node must have a (possibly empty) label text}%
\tikz@fig@main{}}}}}}}%
\def\tikz@fig@scan@at at{%
\tikz@scan@one@point\tikz@@fig@scan@at}%
\def\tikz@@fig@scan@at#1{%
\def\tikz@node@at{#1}\tikz@@scan@fig}%
\def\tikz@fig@scan@name(#1){%
\pgfkeysvalueof{/tikz/name/.@cmd}#1\pgfeov%
\tikz@@scan@fig}%
\long\def\tikz@fig@scan@options[#1]{\iftikz@node@is@pic\tikz@enable@pic@quotes\else\tikz@enable@node@quotes\fi\tikzset{#1}\ifx\tikz@node@content\relax\expandafter\tikz@@scan@fig\else\tikz@expand@node@contents\fi}%
\def\tikz@fig@scan@animation:#1=#2{\tikzset{animate={myself:{#1}={#2}}}\tikz@@scan@fig}%
\def\tikz@expand@node@contents{%
\expandafter\tikz@@scan@fig\expandafter{\tikz@node@content}%
}%
\let\tikz@node@reset@hook=\pgfutil@empty%
\let\tikz@node@begin@hook=\pgfutil@empty%
\def\tikz@fig@main{%
\iftikz@node@is@pic%
\tikz@node@is@picfalse%
\expandafter\tikz@subpicture@handle%
\else%
\afterassignment\tikz@@fig@main\expandafter\let\expandafter\next\expandafter=%
\fi}%
\def\tikz@@fig@main{%
\pgfutil@ifundefined{pgf@sh@s@\tikz@shape}%
{\tikzerror{Unknown shape ``\tikz@shape.'' Using ``rectangle'' instead}%
\def\tikz@shape{rectangle}}%
{}%
\expandafter\xdef\csname tikz@dcl@coord@\tikz@fig@name\endcsname{%
\csname tikz@scan@point@coordinate\endcsname}%
\tikzset{every \tikz@shape\space node/.try}%
\tikz@node@textfont%
\tikz@node@begin@hook%
\iftikz@is@matrix%
\let\tikz@next=\tikz@do@matrix%
\else%
\let\tikz@next=\tikz@do@fig%
\fi%
\tikz@next%
}%
\let\tikz@nodepart@list\pgfutil@empty
\def\tikz@do@fig{%
\pgfutil@for\tikz@temp:=\tikz@nodepart@list\do{%
\expandafter\setbox\csname pgfnodepart\tikz@temp box\endcsname=\box\pgfutil@voidb@x%
}%
\setbox\pgfnodeparttextbox=\hbox%
\bgroup%
\pgfinterruptpicture%
\pgfsys@begin@text%
\pgfsys@text@to@black@hook%
\tikzset{every text node part/.try}%
\ifx\tikz@textopacity\pgfutil@empty%
\else%
\pgfsetfillopacity{\tikz@textopacity}%
\pgfsetstrokeopacity{\tikz@textopacity}%
\fi%
\ifx\tikz@text@width\pgfutil@empty%
\tikz@textfont%
\else%
\begingroup%
\pgfmathsetlength{\pgf@x}{\tikz@text@width}%
\pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
\tikz@textfont%
\tikz@text@action%
\fi%
\tikz@atbegin@node%
\bgroup%
\aftergroup\unskip%
\ifx\tikz@textcolor\pgfutil@empty%
\else%
\pgfutil@colorlet{.}{\tikz@textcolor}%
\pgfutil@color{\tikz@textcolor}%
\fi%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\tikz@uninstallcommands%
\iftikz@handle@active@code%
\tikz@orig@shorthands%
\let\tikz@orig@shorthands\pgfutil@empty%
\fi%
\ifnum\the\catcode`\;=\active\relax\expandafter\let\tikz@activesemicolon=\tikz@origsemi\fi%
\ifnum\the\catcode`\:=\active\relax\expandafter\let\tikz@activecolon=\tikz@origcolon\fi%
\ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi%
\aftergroup\tikz@fig@collectresetcolor%
\tikz@signal@halign@check%
\tikz@text@reset%
\tikz@halign@check%
\ignorespaces%
}%
\def\tikz@fig@collectresetcolor{%
\pgfutil@ifnextchar\reset@color%
{\reset@color\afterassignment\tikz@fig@collectresetcolor\let\tikz@temp=}\tikz@fig@boxdone%
}%
\def\tikz@fig@boxdone{%
\tikz@atend@node%
\ifx\tikz@text@width\pgfutil@empty%
\else%
\pgfutil@endminipage%
\endgroup%
\fi%
\pgfsys@end@text%
\endpgfinterruptpicture%
\egroup%
\pgfutil@ifnextchar c{\tikz@fig@mustbenamed\tikz@fig@continue}%
{\pgfutil@ifnextchar[{\tikz@fig@mustbenamed\tikz@fig@continue}%
{\pgfutil@ifnextchar t{\tikz@fig@mustbenamed\tikz@fig@continue}
{\pgfutil@ifnextchar e{\tikz@fig@mustbenamed\tikz@fig@continue}
{\ifx\tikz@after@path\pgfutil@empty\expandafter\tikz@fig@continue\else\expandafter\tikz@fig@mustbenamed\expandafter\tikz@fig@continue\fi}}}}}%
\tikzset{
matrix/inner style/every cell/.code={%
\tikzset{every cell/.try={\the\pgfmatrixcurrentrow}{\the\pgfmatrixcurrentcolumn}}%
},
matrix/inner style/column/.code={%
\tikzset{column \the\pgfmatrixcurrentcolumn/.try}%
},
matrix/inner style/even odd column/.code={
\ifodd\pgfmatrixcurrentcolumn%
\tikzset{every odd column/.try}%
\else%
\tikzset{every even column/.try}%
\fi
},
matrix/inner style/row/.code={%
\tikzset{row \the\pgfmatrixcurrentrow/.try}%
},
matrix/inner style/even odd row/.code={%
\ifodd\pgfmatrixcurrentrow%
\tikzset{every odd row/.try}%
\else%
\tikzset{every even row/.try}%
\fi
},
matrix/inner style/cell/.code={%
\tikzset{row \the\pgfmatrixcurrentrow\space column \the\pgfmatrixcurrentcolumn/.try}%
},
matrix/inner style order/.store in=\tikz@common@matrix@code@styleorder,
matrix/inner style order={
every cell,
column,
even odd column,
row,
even odd row,
cell
},
}%
\def\tikz@do@matrix{%
\tikzset{every matrix/.try}%
\tikz@node@transformations%
\tikz@fig@mustbenamed%
\setbox\tikz@whichbox=\hbox\bgroup%
\unhbox\tikz@whichbox%
\hbox\bgroup\bgroup%
\pgfinterruptpath%
\pgfscope%
\ifx\tikz@time\pgfutil@empty\let\tikz@time\tikz@time@for@matrix\fi%
\tikz@options%
\tikz@do@rdf@pre@options%
\tikz@is@nodefalse%
\tikz@call@id@hook%
\pgfidscope%
\tikz@do@rdf@post@options%
\begingroup%
\let\tikz@id@name\pgfutil@empty%
\pgfclearid%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\let\tikzmatrixname=\tikz@fig@name%
\edef\tikz@m@anchor{\ifx\tikz@matrix@anchor\pgfutil@empty\tikz@anchor\else\tikz@matrix@anchor\fi}%
\expandafter\pgfutil@in@\expandafter{\expandafter.\expandafter}\expandafter{\tikz@m@anchor}%
\ifpgfutil@in@%
\expandafter\tikz@matrix@split\tikz@m@anchor\relax%
\else%
\def\tikz@matrix@shift{\pgfpointorigin}%
\fi%
\let\tikz@transform=\relax%
\pgfmatrixbeforeassemblenode{\tikzset{every outer matrix/.try}}%
\pgfmatrix%
{\tikz@shape}%
{\tikz@m@anchor}%
{\tikz@fig@name}%
{%
\pgfutil@tempdima=\pgflinewidth%
{\begingroup\tikz@finish}%
\global\pgflinewidth=\pgfutil@tempdima%
}%
{\tikz@matrix@shift}%
{%
\tikz@matrix@make@active@ampersand%
\def\pgfmatrixbegincode{%
\pgfsys@beginscope%
\tikz@common@matrix@code%
\tikz@atbegin@cell%
}%
\def\tikz@common@matrix@code{%
\let\tikz@options=\pgfutil@empty%
\let\tikz@mode=\pgfutil@empty%
\pgfutil@for\pgf@temp:=\tikz@common@matrix@code@styleorder\do{%
\toks0=\expandafter{\romannumeral-`0\expandafter\pgfutil@trimspaces\expandafter{\pgf@temp}}%
\def\pgf@marshal{}%
\pgfutil@ifxempty\pgf@temp{}{%
\edef\pgf@marshal{\noexpand\tikzset{matrix/inner style/.cd,\the\toks0}}%
}%
\pgf@marshal
}%
\tikz@options%
}%
\def\pgfmatrixendcode{%
\tikz@atend@cell%
\pgfsys@endscope%
}%
\def\pgfmatrixemptycode{%
\pgfsys@beginscope%
\tikz@common@matrix@code%
\tikz@at@emptycell%
\pgfsys@endscope%
}%
\tikz@atbegin@matrix%
\aftergroup\tikz@do@matrix@cont}%
\bgroup%
}%
\def\tikz@do@matrix@cont{%
\tikz@atend@matrix%
\endgroup%
\endpgfidscope%
\endpgfscope
\endpgfinterruptpath%
\egroup\egroup%
\egroup%
\tikz@node@finish%
}%
{%
\catcode`\&=13
\gdef\tikz@matrix@make@active@ampersand{%
\ifx\tikz@ampersand@replacement\pgfutil@empty%
\catcode`\&=13%
\let&=\pgfmatrixnextcell%
\else%
\expandafter\let\tikz@ampersand@replacement=\pgfmatrixnextcell%
\fi%
}%
}%
\def\tikz@matrix@split#1.#2\relax{%
\def\tikz@m@anchor{text}%
\def\tikz@matrix@shift{\pgfpointanchor{#1}{#2}}%
}%
\def\tikz@fig@continue{%
\ifx\tikz@text@width\pgfutil@empty%
\else%
\pgfmathsetlength{\pgf@x}{\tikz@text@width}%
\wd\pgfnodeparttextbox=\pgf@x%
\fi%
\ifx\tikz@text@height\pgfutil@empty%
\else%
\pgfmathsetlength{\pgf@x}{\tikz@text@height}%
\ht\pgfnodeparttextbox=\pgf@x%
\fi%
\ifx\tikz@text@depth\pgfutil@empty%
\else%
\pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
\dp\pgfnodeparttextbox=\pgf@x%
\fi%
\tikz@node@transformations%
\tikz@nlt%
\setbox\tikz@whichbox=\hbox{%
\unhbox\tikz@whichbox%
\hbox{{%
\pgfinterruptpath%
\pgfscope%
\tikz@options%
\tikz@do@rdf@pre@options%
\tikz@is@nodetrue%
\tikz@call@id@hook%
\pgfidscope%
\tikz@do@rdf@post@options%
\let\tikz@id@name\pgfutil@empty%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\setbox\pgfnodeparttextbox=\hbox{{%
\pgfsys@begin@text%
\ifx\tikz@textcolor\pgfutil@empty%
\else%
\pgfutil@colorlet{.}{\tikz@textcolor}%
\fi%
\pgfsetcolor{.}%
\pgfusetype{.text}%
\pgfidscope%
\box\pgfnodeparttextbox%
\endpgfidscope%
\pgfsys@end@text%
}}%
\pgfmultipartnode{\tikz@shape}{\tikz@anchor}{\tikz@fig@name}{%
\pgfutil@tempdima=\pgflinewidth%
{\begingroup\tikz@finish}%
\global\pgflinewidth=\pgfutil@tempdima%
}%
\endpgfidscope%
\endpgfscope%
\endpgfinterruptpath%
}}%
}%
\tikz@alias%
\tikz@node@finish%
}%
\def\tikz@fig@mustbenamed{%
\ifx\tikz@fig@name\pgfutil@empty%
\global\advance\tikz@fig@count by1\relax
\edef\tikz@fig@name{tikz@f@\the\tikz@fig@count}%
\let\tikz@id@name\tikz@fig@name%
\fi%
}%
\def\tikz@node@transformations{%
\ifx\tikz@time\pgfutil@empty%
\pgftransformshift{\tikz@node@at}%
\iftikz@fullytransformed%
\else%
\pgftransformresetnontranslations%
\fi%
\else%
\tikz@do@auto@anchor%
\tikz@timer%
\fi%
\tikz@transform%
}%
\def\tikz@node@finish{%
\global\let\tikz@last@fig@name=\tikz@fig@name%
\global\let\tikz@after@path@smuggle=\tikz@after@path%
\global\setbox\tikz@tempbox=\box\tikz@figbox%
\global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
\endgroup\endgroup%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
\global\pgflinewidth=\tikz@save@line@width%
\tikz@do@after@path@smuggle%
\tikz@node@is@picfalse
\tikz@do@after@node%
}%
\let\tikz@fig@continue@orig=\tikz@fig@continue
\def\tikz@do@after@node{\tikz@scan@next@command}%
\def\tikz@do@after@path@smuggle{%
\let\tikz@to@last@fig@name=\tikz@last@fig@name%
\let\tikz@to@use@whom=\tikz@to@use@last@fig@name%
\let\tikzlastnode=\tikz@last@fig@name%
\ifx\tikz@after@path@smuggle\pgfutil@empty%
\else%
\ifpgflatenodepositioning%
\expandafter\expandafter\expandafter\tikz@call@late%
\expandafter\expandafter\expandafter{\expandafter\tikz@last@fig@name\expandafter}\expandafter{\tikz@after@path@smuggle}%
\else%
\tikz@scan@next@command{\tikz@after@path@smuggle}\pgf@stop%
\fi%
\fi%
}%
\def\tikz@call@late#1#2{\pgfnodepostsetupcode{#1}{\path[late options={name={#1},append after command={#2}}];}}%
\newif\iftikz@do@align
\def\tikz@signal@halign@check{%
\tikz@do@alignfalse
\ifx\tikz@text@width\pgfutil@empty%
\pgfkeysgetvalue{/tikz/node halign header}\tikz@align@header%
\ifx\tikz@align@header\pgfutil@empty%
\else%
\tikz@do@aligntrue%
\fi%
\fi%
}
\def\tikz@halign@check{%
\iftikz@do@align%
\setbox\tikz@align@aligned@box=\box\pgfutil@voidb@x%
\let\\=\tikz@align@newline%
\expandafter\tikz@start@align%
\fi%
}%
\def\tikz@align@newline{\pgfutil@protect\tikz@align@newline@}%
\def\tikz@align@newline@{\unskip\pgfutil@ifnextchar[\tikz@@align@newline{\tikz@@align@newline[0pt]}}%
\def\tikz@@align@newline[#1]{\egroup\tikz@align@continue\pgfmathparse{#1}\let\tikz@align@temp=\pgfmathresult\tikz@start@align}%
\let\tikz@align@aligned@box=\pgfnodeparttextbox
\let\tikz@align@line@box=\tikz@figbox
\def\tikz@start@align{%
\setbox\tikz@align@line@box=\hbox\bgroup\bgroup%
\aftergroup\tikz@align@collectresetcolor\ignorespaces%
}%
\def\tikz@align@collectresetcolor{%
\pgfutil@ifnextchar\reset@color%
{\reset@color\afterassignment\tikz@align@collectresetcolor\let\tikz@temp=}%
{\tikz@align@end@check}%
}%
\def\tikz@align@end@check{%
\egroup%
\ifvoid\tikz@align@aligned@box%
\setbox\tikz@align@aligned@box=\box\tikz@align@line@box%
\else%
\setbox\tikz@align@aligned@box=\vbox{%
\expandafter\expandafter\expandafter\halign\expandafter\expandafter\expandafter{\tikz@align@header%
\box\tikz@align@aligned@box\cr%
\noalign{\vskip\tikz@align@temp pt}%
\unhbox\tikz@align@line@box\unskip\cr}}%
\fi%
\pgfutil@ifnextchar\tikz@align@continue{}
{%
\box\tikz@align@aligned@box%
\egroup%
}%
}%
\def\tikz@align@continue{\tikz@@align@continue}%
\let\tikz@@align@continue=\pgfutil@empty
\def\tikz@node@also lso{\pgfutil@ifnextchar[\tikz@node@also@opt{\tikz@node@also@opt[]}}%
\def\tikz@node@also@opt[#1]{
\pgfutil@ifnextchar(%
{\tikz@node@also@opt@cont[#1]}%
{\tikzerror{Syntax error in node also: ``('' expected.}%
\tikz@scan@next@command}%
}%
\def\tikz@node@also@opt@cont[#1](#2){\tikzset{late options={name=#2,#1}}\tikz@scan@next@command}%
\def\tikz@nodepart{\pgfutil@ifnextchar[\tikz@@nodepart{\tikz@@nodepart[]}}%
\def\tikz@@nodepart[#1]#2{%
\tikz@atend@node%
\unskip%
\gdef\tikz@nodepart@options{#1}%
\gdef\tikz@nodepart@name{#2}%
\global\let\tikz@fig@continue=\tikz@nodepart@continue%
\pgfutil@ifnextchar x{\egroup\relax}{\egroup\relax}%
}%
\def\tikz@nodepart@continue{%
\global\let\tikz@fig@continue=\tikz@fig@continue@orig%
\ifx\tikz@nodepart@list\pgfutil@empty%
\let\tikz@nodepart@list\tikz@nodepart@name%
\else%
\edef\tikz@nodepart@list{\tikz@nodepart@list,\tikz@nodepart@name}%
\fi%
\expandafter\setbox\csname pgfnodepart\tikz@nodepart@name box\endcsname=\hbox%
\bgroup%
\pgfinterruptpicture%
\pgfsys@begin@text%
\pgfsys@text@to@black@hook%
\tikzset{every \tikz@nodepart@name\space node part/.try}%
\expandafter\tikzset\expandafter{\tikz@nodepart@options}%
\ifx\tikz@textopacity\pgfutil@empty%
\else%
\pgfsetfillopacity{\tikz@textopacity}%
\pgfsetstrokeopacity{\tikz@textopacity}%
\fi%
\ifx\tikz@textcolor\pgfutil@empty%
\else%
\pgfutil@colorlet{.}{\tikz@textcolor}%
\fi%
\pgfsetcolor{.}%
\ifx\tikz@text@width\pgfutil@empty%
\tikz@textfont%
\else%
\begingroup%
\pgfmathsetlength{\pgf@x}{\tikz@text@width}%
\pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
\tikz@textfont%
\tikz@text@action%
\fi%
\bgroup%
\aftergroup\unskip%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\tikz@uninstallcommands%
\iftikz@handle@active@code%
\tikz@orig@shorthands%
\let\tikz@orig@shorthands\pgfutil@empty%
\fi%
\ifnum\the\catcode`\;=\active\relax\expandafter\let\tikz@activesemicolon=\tikz@origsemi\fi%
\ifnum\the\catcode`\:=\active\relax\expandafter\let\tikz@activecolon=\tikz@origcolon\fi%
\ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi%
\tikz@atbegin@node%
\aftergroup\tikz@fig@collectresetcolor%
\tikz@signal@halign@check%
\tikz@text@reset%
\tikz@halign@check%
\ignorespaces%
}%
\def\tikz@nodes@start{%
\let\tikz@nodes@list\pgfutil@empty%
\iftikz@node@is@pic%
\def\tikz@nodes@collect{pic }%
\else%
\def\tikz@nodes@collect{node }%
\fi%
\tikz@nodes%
}%
\def\tikz@nodes foreach{\pgfutil@ifnextchar x\tikz@nodes@\tikz@nodes@}%
\def\tikz@nodes@#1in{%
\expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list\foreach#1in}%
\pgfutil@ifnextchar\bgroup\tikz@nodes@group\tikz@nodes@one%
}%
\def\tikz@nodes@one#1{%
\expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list#1}%
\pgfutil@ifnextchar f\tikz@nodes\tikz@nodes@scan%
}%
\def\tikz@nodes@group#1{%
\expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list{#1}}%
\pgfutil@ifnextchar f\tikz@nodes\tikz@nodes@scan%
}%
\def\tikz@nodes@scan{%
\pgfutil@ifnextchar a{\tikz@nodes@at}%
{\pgfutil@ifnextchar({\tikz@nodes@name}%
{\pgfutil@ifnextchar[{\tikz@nodes@opt}%
{\pgfutil@ifnextchar\bgroup{\tikz@nodes@main}%
{\tikzerror{Nodes must have a (possibly empty) label text}%
\tikz@fig@main{}}}}}}%
\def\tikz@nodes@at at{\pgfutil@ifnextchar({\tikz@nodes@at@}{\tikz@nodes@at@@}}%
\def\tikz@nodes@at@#1){%
\expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect at#1)}%
\tikz@nodes@scan}%
\def\tikz@nodes@at@@#1{%
\expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect at#1}%
\tikz@nodes@scan}%
\def\tikz@nodes@name#1){%
\expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect#1)}%
\tikz@nodes@scan}%
\def\tikz@nodes@opt#1]{%
\expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect#1]}%
\tikz@nodes@scan}%
\def\tikz@nodes@main#1{%
\iftikz@handle@active@nodes%
\iftikz@node@is@pic%
\expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{#1}}%
\else%
\expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{\scantokens{#1}}}%
\fi%
\else%
\expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{#1}}%
\fi%
\global\setbox\tikz@tempbox=\box\tikz@figbox%
\global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
\tikz@nodes@list{%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
\expandafter\tikz@scan@next@command\tikz@nodes@collect\pgfextra\relax%
\global\setbox\tikz@tempbox=\box\tikz@figbox%
\global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
}%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
\tikz@scan@next@command%
}%
\tikzset{late options/.code=\tikz@late@options{#1}}%
\def\tikz@late@options#1{%
\begingroup%
\iftikz@shapeborder%
\let\tikz@fig@name=\tikz@shapeborder@name%
\else%
\let\tikz@fig@name=\pgfutil@empty%
\fi%
\tikz@is@matrixfalse%
\let\tikz@options=\pgfutil@empty%
\tikz@clear@rdf@options%
\let\tikz@after@path=\pgfutil@empty%
\let\tikz@afternodepathoptions=\pgfutil@empty%
\let\tikz@alias=\pgfutil@empty%
\let\tikz@transform=\pgfutil@empty%
\tikz@decoratepathfalse%
\tikz@node@reset@hook%
\tikz@enable@node@quotes%
\tikzset{every node/.try,#1}%
\ifx\tikz@fig@name\pgfutil@empty%
\tikzerror{Late options must reference some existing node}%
\fi%
\tikz@node@begin@hook%
\tikz@alias%
\tikzgdlatenodeoptionacallback{\tikz@fig@name}%
\global\let\tikz@last@fig@name=\tikz@fig@name%
\global\let\tikz@after@path@smuggle=\tikz@after@path%
\endgroup%
\tikz@do@after@path@smuggle%
}%
\def\tikz@auto@pre{%
\begingroup
\pgfresetnontranslationattimefalse
\ifpgfslopedattime
\pgfslopedattimefalse%
\else
\pgfslopedattimetrue%
\fi
\pgfallowupsidedownattimetrue%
\tikz@timer%
\pgf@x=\pgf@pt@aa pt%
\pgf@y=\pgf@pt@ab pt%
\pgfpointnormalised{}%
}%
\def\tikz@auto@post{%
\global\let\tikz@anchor@smuggle=\tikz@anchor%
\endgroup%
\let\tikz@anchor=\tikz@anchor@smuggle%
}%
\def\tikz@auto@anchor{%
\ifdim\pgf@x>0.05pt%
\ifdim\pgf@y>0.05pt%
\def\tikz@anchor{south east}%
\else\ifdim\pgf@y<-0.05pt%
\def\tikz@anchor{south west}%
\else
\def\tikz@anchor{south}%
\fi\fi%
\else\ifdim\pgf@x<-0.05pt%
\ifdim\pgf@y>0.05pt%
\def\tikz@anchor{north east}%
\else\ifdim\pgf@y<-0.05pt%
\def\tikz@anchor{north west}%
\else
\def\tikz@anchor{north}%
\fi\fi%
\else%
\ifdim\pgf@y>0pt%
\def\tikz@anchor{east}%
\else%
\def\tikz@anchor{west}%
\fi%
\fi\fi%
}%
\def\tikz@auto@anchor@prime{%
\ifdim\pgf@x>0.05pt%
\ifdim\pgf@y>0.05pt%
\def\tikz@anchor{north west}%
\else\ifdim\pgf@y<-0.05pt%
\def\tikz@anchor{north east}%
\else
\def\tikz@anchor{north}%
\fi\fi%
\else\ifdim\pgf@x<-0.05pt%
\ifdim\pgf@y>0.05pt%
\def\tikz@anchor{south west}%
\else\ifdim\pgf@y<-0.05pt%
\def\tikz@anchor{south east}%
\else
\def\tikz@anchor{south}%
\fi\fi%
\else%
\ifdim\pgf@y>0pt%
\def\tikz@anchor{west}%
\else%
\def\tikz@anchor{east}%
\fi%
\fi\fi%
}%
\def\tikzgdeventcallback#1#2{}%
\def\tikzgdeventgroupcallback#1{}%
\def\tikzgdlatenodeoptionacallback#1{}%
\def\tikz@children{%
\let\tikz@children@list=\pgfutil@empty%
\tikznumberofchildren=0\relax%
\tikz@collect@children c}%
\def\tikz@collect@children{\pgfutil@ifnextchar c{\tikz@collect@children@cchar}{\tikz@children@collected}}%
\def\tikz@collect@children@cchar c{\pgfutil@ifnextchar h{\tikz@collect@child}{\tikz@children@collected c}}%
\def\tikz@collect@child hild{\pgfutil@ifnextchar[{\tikz@collect@childA}{\tikz@collect@childA[]}}%
\def\tikz@collect@childA[#1]{\pgfutil@ifnextchar f{\tikz@collect@children@foreach[#1]}{\tikz@collect@childB[#1]}}%
\def\tikz@collect@childB[#1]{%
\advance\tikznumberofchildren by1\relax
\expandafter\def\expandafter\tikz@children@list\expandafter{\tikz@children@list \tikz@childnode[#1]}%
\pgfutil@ifnextchar\bgroup{\tikz@collect@child@code}{\tikz@collect@child@code{}}}%
\def\tikz@collect@child@code#1{%
\expandafter\def\expandafter\tikz@children@list\expandafter{\tikz@children@list{#1}}%
\tikz@collect@children%
}%
\def\tikz@collect@children@foreach[#1]foreach#2in#3{%
\pgfutil@ifnextchar\bgroup{\tikz@collect@children@foreachA{#1}{#2}{#3}}{\tikz@collect@children@foreachA{#1}{#2}{#3}{}}}%
\def\tikz@collect@children@foreachA#1#2#3#4{%
\expandafter\def\expandafter\tikz@children@list\expandafter
{\tikz@children@list\tikz@childrennodes[#1]{#2}{#3}{#4}}%
\c@pgf@counta=\tikznumberofchildren%
\foreach#2in{#3}%
{%
\global\advance\c@pgf@counta by1\relax%
}%
\tikznumberofchildren=\c@pgf@counta%
\tikz@collect@children%
}%
\long\def\tikz@children@collected{%
\begingroup%
\advance\tikztreelevel by 1\relax%
\tikzgdeventgroupcallback{descendants}%
\let\tikz@options=\pgfutil@empty%
\tikz@clear@rdf@options%
\let\tikz@transform=\pgfutil@empty%
\tikzset{level/.try=\the\tikztreelevel,level \the\tikztreelevel/.try}%
\tikz@transform%
\let\tikz@transform=\relax%
\let\tikzparentnode=\tikz@last@fig@name%
\ifx\tikz@grow\relax\else%
\pgftransformshift{\pgfpointanchor{\tikzparentnode}{\tikz@growth@anchor}}%
\fi%
\tikznumberofcurrentchild=0\relax%
\tikz@children@list%
\global\setbox\tikz@tempbox=\box\tikz@figbox%
\global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
\endgroup%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
\tikz@scan@next@command%
}%
\def\tikz@childrennodes[#1]#2#3#4{%
\c@pgf@counta=\tikznumberofcurrentchild\relax%
\setbox\tikz@tempbox=\box\tikz@figbox%
\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
\foreach#2in{#3}{%
\tikznumberofcurrentchild=\c@pgf@counta\relax%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
\tikz@childnode[#1]{#4}%
\global\c@pgf@counta=\tikznumberofcurrentchild\relax%
\global\setbox\tikz@tempbox=\box\tikz@figbox%
\global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
}%
\tikznumberofcurrentchild=\c@pgf@counta\relax%
\setbox\tikz@figbox=\box\tikz@tempbox%
\setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
}%
\def\tikz@childnode[#1]#2{%
\advance\tikznumberofcurrentchild by1\relax%
{\tikzset{every child/.try,#1}\expandafter}%
\iftikz@child@missing%
\tikzgdeventcallback{node}{}%
\else%
\setbox\tikz@whichbox=\hbox\bgroup%
\unhbox\tikz@whichbox%
\hbox\bgroup\bgroup%
\pgfinterruptpath%
\pgfscope%
\let\tikz@transform=\pgfutil@empty%
\tikzset{every child/.try,#1}%
\tikz@options%
\tikz@transform%
\let\tikz@transform=\relax%
\tikz@grow%
\edef\tikz@parent@node@name{[name=\tikzparentnode-\the\tikznumberofcurrentchild,style=every child node]}%
\def\tikz@child@node@text{[shape=coordinate]{}}
\tikz@parse@child@node#2\pgf@stop%
\expandafter\expandafter\expandafter\node
\expandafter\tikz@parent@node@name
\tikz@child@node@text
\pgfextra{\global\let\tikz@childnode@name=\tikz@last@fig@name};%
\let\tikzchildnode=\tikz@childnode@name%
{%
\def\tikz@edge@to@parent@needed{edge from parent}
\ifx\tikz@child@node@rest\pgfutil@empty%
\path edge from parent;%
\else%
\path \tikz@child@node@rest \tikz@edge@to@parent@needed;%
\fi%
}%
\endpgfscope%
\endpgfinterruptpath%
\egroup\egroup%
\egroup%
\fi%
}%
\def\tikz@parse@child@node{%
\pgfutil@ifnextchar n{\tikz@parse@child@node@n}%
{\pgfutil@ifnextchar c{\tikz@parse@child@node@c}%
{\pgfutil@ifnextchar\pgf@stop\tikz@parse@child@node@rest\tikz@parse@child@node@expand}}}%
\def\tikz@parse@child@node@expand{%
\advance\tikz@expandcount by-1\relax%
\ifnum\tikz@expandcount<0\relax%
\expandafter\tikz@parse@child@node@rest%
\else%
\expandafter\expandafter\expandafter\tikz@parse@child@node%
\fi%
}%
\def\tikz@parse@child@node@rest#1\pgf@stop{\tikz@resetexpandcount\def\tikz@child@node@rest{#1}}%
\def\tikz@parse@child@node@c c{\tikz@resetexpandcount\pgfutil@ifnextchar o{\tikz@parse@child@node@co}{\tikz@parse@child@node@rest c}}%
\def\tikz@parse@child@node@co o{\pgfutil@ifnextchar o{\tikz@parse@child@node@coordinate}{\tikz@parse@child@node@rest co}}%
\def\tikz@parse@child@node@coordinate ordinate{%
\pgfutil@ifnextchar ({\tikz@@parse@child@node@coordinate}{%
\def\tikz@child@node@text{[shape=coordinate]{}}%
\tikz@parse@child@node@rest}}%
\def\tikz@@parse@child@node@coordinate(#1){%
\pgfutil@ifnextchar a{\tikz@p@c@n@c@at(#1)}{%
\def\tikz@child@node@text{[shape=coordinate,name=#1]{}}%
\tikz@parse@child@node@rest}}%
\def\tikz@p@c@n@c@at(#1)at#2({%
\def\tikz@child@node@text@pre{[shape=coordinate,name=#1]at}%
\tikz@scan@one@point\tikz@p@c@n@c@at@math(%
}%
\def\tikz@p@c@n@c@at@math#1{%
\pgf@process{#1}%
\edef\tikz@marshal{(\the\pgf@x,\the\pgf@y){}}%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\tikz@child@node@text%
\expandafter\expandafter\expandafter{\expandafter\tikz@child@node@text@pre\tikz@marshal}%
\tikz@parse@child@node@rest%
}%
\def\tikz@parse@child@node@n node{\tikz@resetexpandcount%
\let\tikz@child@node@text=\pgfutil@empty%
\tikz@p@c@s}%
\def\tikz@p@c@s{%
\pgfutil@ifnextchar a{\tikz@p@c@s@at}
{\pgfutil@ifnextchar ({\tikz@p@c@s@paran}
{\pgfutil@ifnextchar [{\tikz@p@c@s@bra}
{\pgfutil@ifnextchar \bgroup{\tikz@p@c@s@group}
{\tikzerror{Cannot parse this node}}}}}}%
\def\tikz@p@c@s@at at#1({%
\tikz@scan@one@point\tikz@p@c@s@at@math(%
}%
\def\tikz@p@c@s@at@math#1{%
\pgf@process{#1}%
\edef\tikz@marshal{ at(\the\pgf@x,\the\pgf@y)}%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter\tikz@child@node@text%
\expandafter\expandafter\expandafter{\expandafter\tikz@child@node@text\tikz@marshal}
\tikz@p@c@s}%
\def\tikz@p@c@s@paran(#1){%
\expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text(#1)}
\tikz@p@c@s}%
\def\tikz@p@c@s@bra[#1]{%
\expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text[#1]}
\tikz@p@c@s}%
\def\tikz@p@c@s@group#1{%
\iftikz@handle@active@nodes%
\expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text{\scantokens{#1}}}%
\else%
\expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text{#1}}
\fi%
\tikz@parse@child@node@rest%
}%
\def\tikz@decoration ecorate{%
\pgfutil@ifnextchar[{\tikz@lib@decoration}{\tikz@lib@decoration[]}%
}%
\def\tikz@lib@decoration[#1]#2{\tikzerror{You need to load a decoration library}}%
\def\tikz@lib@dec@decorate@path{\tikzerror{You need to load a decoration library}}%
\def\tikz@let@command et#1in{%
\tikzerror{You need to say \string\usetikzlibrary{calc} to use the let command}%
\tikz@scan@next@command%
}%
\newif\iftikz@node@is@pic
\def\tikz@subpicture ic{\tikz@node@is@pictrue\tikz@scan@next@command node}%
\def\tikz@subpicture@handle#1{%
\pgfkeys@spdef\tikz@temp{#1}%
\expandafter\tikz@subpicture@handle@\expandafter{\tikz@temp}%
}%
\def\tikz@subpicture@handle@#1{
\pgfkeys{/tikz/pics/.cd,#1}%
\tikz@node@transformations%
\let\tikz@transform=\relax%
\let\tikz@picmode\tikz@mode%
\tikzset{name prefix ../.style/.expanded={/tikz/name prefix=\pgfkeysvalueof{/tikz/name prefix}}}%
\ifx\tikz@fig@name\pgfutil@empty\else%
\tikzset{name prefix/.expanded=\tikz@fig@name}%
\fi%
\pgfkeysvalueof{/tikz/pics/setup code}%
\pgfkeysgetvalue{/tikz/pics/code}{\tikz@pic@code}
\ifx\tikz@pic@code\pgfutil@empty\else%
\setbox\tikz@whichbox=\hbox\bgroup%
\unhbox\tikz@whichbox%
\hbox\bgroup
\bgroup%
\pgfinterruptpath%
\pgfscope%
\tikz@options%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\tikz@atbegin@scope%
\scope[every pic/.try]%
\tikz@pic@code%
\endscope%
\tikz@atend@scope%
\endpgfscope%
\endpgfinterruptpath%
\egroup
\egroup%
\egroup%
\fi%
\pgfkeysgetvalue{/tikz/pics/foreground code}{\tikz@pic@code}
\ifx\tikz@pic@code\pgfutil@empty\else%
\setbox\tikz@figbox=\hbox\bgroup%
\unhbox\tikz@figbox%
\hbox\bgroup
\bgroup%
\pgfinterruptpath%
\pgfscope%
\tikz@options%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\tikz@atbegin@scope%
\scope[every front pic/.try]%
\tikz@pic@code%
\endscope%
\tikz@atend@scope%
\endpgfscope%
\endpgfinterruptpath%
\egroup
\egroup%
\egroup%
\fi%
\pgfkeysgetvalue{/tikz/pics/background code}{\tikz@pic@code}
\ifx\tikz@pic@code\pgfutil@empty\else%
\setbox\tikz@figbox@bg=\hbox\bgroup%
\unhbox\tikz@figbox@bg%
\hbox\bgroup
\bgroup%
\pgfinterruptpath%
\pgfscope%
\tikz@options%
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
\setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
\tikz@atbegin@scope%
\scope[every behind pic/.try]%
\tikz@pic@code%
\endscope%
\tikz@atend@scope%
\endpgfscope%
\endpgfinterruptpath%
\egroup
\egroup%
\egroup%
\fi%
\tikz@node@finish%
}%
\tikzset{
pic actions/.code=\tikz@addmode{\tikz@picmode}
}%
\tikzset{
pics/setup code/.initial=,
pics/code/.initial=,
pics/background code/.initial=,
pics/foreground code/.initial=
}%
\def\tikzdeclarepic#1#2{\pgfkeys{/tikz/#1/.cd,#2}}%
\pgfkeysdef{/handlers/.pic}{%
\edef\pgf@temp{\pgfkeyscurrentpath}%
\edef\pgf@temp{\expandafter\tikz@smuggle@pics@in\pgf@temp\pgf@stop}%
\expandafter\pgfkeys\expandafter{\pgf@temp/.style={code={#1}}}%
}%
\def\tikz@smuggle@pics@in/tikz/#1\pgf@stop{/tikz/pics/#1}%
\def\tikz@timer@line{%
\pgftransformlineattime{\tikz@time}{\tikz@timer@start}{\tikz@timer@end}%
}%
\def\tikz@timer@vhline{%
\ifdim\tikz@time pt<0.5pt%
\pgf@process{\tikz@timer@start}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\tikz@timer@end}%
\pgf@xb=\tikz@time pt%
\pgf@xb=2\pgf@xb%
\edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}{\noexpand\tikz@timer@start}{%
\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@y}}}%
\tikz@marshal%
\else%
\pgf@process{\tikz@timer@start}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\tikz@timer@end}%
\pgf@xb=\tikz@time pt%
\pgf@xb=2\pgf@xb%
\advance\pgf@xb by-1pt%
\edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}%
{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@y}}{\noexpand\tikz@timer@end}}%
\tikz@marshal%
\fi%
}%
\def\tikz@timer@hvline{%
\ifdim\tikz@time pt<0.5pt%
\pgf@process{\tikz@timer@start}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\tikz@timer@end}%
\pgf@xb=\tikz@time pt%
\pgf@xb=2\pgf@xb%
\edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}{\noexpand\tikz@timer@start}{%
\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@ya}}}%
\tikz@marshal%
\else%
\pgf@process{\tikz@timer@start}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\tikz@timer@end}%
\pgf@xb=\tikz@time pt%
\pgf@xb=2\pgf@xb%
\advance\pgf@xb by-1pt%
\edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}%
{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@ya}}{\noexpand\tikz@timer@end}}%
\tikz@marshal%
\fi%
}%
\def\tikz@timer@curve{%
\pgftransformcurveattime{\tikz@time}{\tikz@timer@start}{\tikz@timer@cont@one}{\tikz@timer@cont@two}{\tikz@timer@end}%
}%
\def\tikz@timer@arc{%
\pgfmathcos@{\tikz@timer@start@angle}%
\let\tikz@angle@cos\pgfmathresult%
\pgfmathsin@{\tikz@timer@start@angle}%
\let\tikz@angle@sin\pgfmathresult%
\pgftransformarcaxesattime{\tikz@time}{%
\pgfpointdiff{%
\pgfpointadd{%
\pgfpointscale{\tikz@angle@cos}{\tikz@timer@zero@axis}%
}{%
\pgfpointscale{\tikz@angle@sin}{\tikz@timer@ninety@axis}%
}%
}%
{\tikz@timer@start}%
}%
{\tikz@timer@zero@axis}%
{\tikz@timer@ninety@axis}%
{\tikz@timer@start@angle}{\tikz@timer@end@angle}%
}%
\def\tikzdeclarecoordinatesystem#1#2{%
\expandafter\def\csname tikz@parse@cs@#1\endcsname(##1){%
\pgf@process{%
#2%
\global\let\tikz@smubble@b=\tikz@shapeborder@name%
}%
\let\tikz@shapeborder@name=\tikz@smubble@b%
\edef\tikz@return@coordinate{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
}%
\def\tikzaliascoordinatesystem#1#2{%
\edef\pgf@marshal{\noexpand\let\expandafter\noexpand\csname
tikz@parse@cs@#1\endcsname=\expandafter\noexpand\csname
tikz@parse@cs@#2\endcsname}%
\pgf@marshal%
}%
\tikzdeclarecoordinatesystem{canvas}
{%
\tikzset{cs/.cd,x=0pt,y=0pt,#1}%
\pgfpoint{\tikz@cs@x}{\tikz@cs@y}%
}%
\tikzdeclarecoordinatesystem{canvas polar}
{%
\tikzset{cs/.cd,angle=0,radius=0cm,#1}%
\pgfpointpolar{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
}%
\tikzdeclarecoordinatesystem{xyz}
{%
\tikzset{cs/.cd,x=0,y=0,z=0,#1}%
\pgfpointxyz{\tikz@cs@x}{\tikz@cs@y}{\tikz@cs@z}%
}%
\tikzdeclarecoordinatesystem{xyz polar}
{%
\tikzset{cs/.cd,angle=0,radius=0,#1}%
\pgfpointpolarxy{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
}%
\tikzaliascoordinatesystem{xy polar}{xyz polar}%
\tikzdeclarecoordinatesystem{node}
{%
\tikzset{cs/.cd,name=,anchor=none,angle=none,#1}%
\ifx\tikz@cs@anchor\tikz@nonetext%
\ifx\tikz@cs@angle\tikz@nonetext%
\expandafter\ifx\csname pgf@sh@ns@\tikz@cs@node\endcsname\tikz@coordinate@text%
\else
\aftergroup\tikz@shapebordertrue%
\edef\tikz@shapeborder@name{\tikz@pp@name{\tikz@cs@node}}%
\fi%
\pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{center}%
\else%
\pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{\tikz@cs@angle}%
\fi%
\else%
\pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{\tikz@cs@anchor}%
\fi%
}%
\tikzset{cs/first line/.code=\def\tikz@cs@line@a{#1}\def\tikz@cs@type@a{line}}%
\tikzset{cs/second line/.code=\def\tikz@cs@line@b{#1}\def\tikz@cs@type@b{line}}%
\tikzset{cs/first node/.code=\tikz@cs@unpack{\tikz@cs@node@a}{\tikz@cs@type@a}{#1}}%
\tikzset{cs/second node/.code=\tikz@cs@unpack{\tikz@cs@node@b}{\tikz@cs@type@b}{#1}}%
\def\tikz@cs@unpack#1#2#3{%
\expandafter\ifx\csname pgf@sh@ns@#3\endcsname\relax%
\tikzerror{Undefined node ``#3''}%
\else%
\def#1{#3}%
\edef#2{\csname pgf@sh@ns@#3\endcsname}%
\fi%
}%
\tikzset{cs/solution/.initial=1}%
\tikzset{cs/horizontal line through/.store in=\tikz@cs@hori@line}%
\tikzset{cs/vertical line through/.store in=\tikz@cs@vert@line}%
\tikzdeclarecoordinatesystem{intersection}
{%
\tikzset{cs/.cd,#1}%
\expandafter\ifx\csname tikz@intersect@\tikz@cs@type@a @and@\tikz@cs@type@b\endcsname\relax%
\tikzerror{I do not know how to compute the intersection
of a \tikz@cs@type@a and a \tikz@cs@type@b. Try saying
\string\usetikzlibrary{calc}}%
\pgfpointorigin%
\else%
\csname tikz@intersect@\tikz@cs@type@a @and@\tikz@cs@type@b\endcsname%
\fi%
}%
\def\tikz@intersect@line@and@line{%
\expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@a%
\pgf@xa=\pgf@xc%
\pgf@ya=\pgf@yc%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@b%
\edef\pgf@marshal{%
{\noexpand\pgfpointintersectionoflines%
{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}}%
\pgf@marshal%
}%
\def\tikz@parse@line#1--{%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\tikz@scan@one@point\pgf@process%
}%
\tikzdeclarecoordinatesystem{perpendicular}
{%
\tikzset{cs/.cd,#1}%
\expandafter\tikz@scan@one@point\expandafter\tikz@parse@intersection@a\tikz@cs@hori@line%
\expandafter\tikz@scan@one@point\expandafter\tikz@parse@intersection@b\tikz@cs@vert@line%
\pgfqpoint{\the\pgf@xb}{\the\pgf@ya}
}%
\tikzdeclarecoordinatesystem{barycentric}
{%
{%
\pgf@xa=0pt%
\pgf@ya=0pt%
\pgf@xb=0pt%
\tikz@bary@dolist#1,=,%
\pgfmathparse{1/\the\pgf@xb}%
\global\pgf@x=\pgfmathresult\pgf@xa%
\global\pgf@y=\pgfmathresult\pgf@ya%
}%
}%
\def\tikz@bary@dolist#1=#2,{%
\def\tikz@temp{#1}%
\ifx\tikz@temp\pgfutil@empty%
\else
\pgf@process{\pgfpointanchor{#1}{center}}%
\pgfmathparse{#2}%
\advance\pgf@xa by\pgfmathresult\pgf@x%
\advance\pgf@ya by\pgfmathresult\pgf@y%
\advance\pgf@xb by\pgfmathresult pt%
\expandafter\tikz@bary@dolist%
\fi%
}%
\tikzset{cs/x/.store in=\tikz@cs@x}%
\tikzset{cs/y/.store in=\tikz@cs@y}%
\tikzset{cs/z/.store in=\tikz@cs@z}%
\tikzset{cs/angle/.store in=\tikz@cs@angle}%
\tikzset{cs/x radius/.store in=\tikz@cs@xradius}%
\tikzset{cs/y radius/.store in=\tikz@cs@yradius}%
\tikzset{cs/radius/.style={/tikz/cs/x radius={#1},/tikz/cs/y radius={#1}}}%
\tikzset{cs/name/.store in=\tikz@cs@node}%
\tikzset{cs/anchor/.store in=\tikz@cs@anchor}%
\def\tikz@last@position{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
\def\tikz@last@position@saved{\pgfqpoint{\tikz@lastxsaved}{\tikz@lastysaved}}%
\def\tikz@make@last@position#1{%
\pgf@process{#1}%
\tikz@lastx=\pgf@x\relax%
\tikz@lasty=\pgf@y\relax%
\iftikz@updatecurrent%
\tikz@lastxsaved=\pgf@x\relax%
\tikz@lastysaved=\pgf@y\relax%
\fi%
\iftikz@updatenext
\tikz@updatecurrenttrue%
\fi
}%
\newif\iftikz@updatecurrent
\tikz@updatecurrenttrue
\newif\iftikz@updatenext
\tikz@updatenexttrue
\def\tikz@scan@one@point#1{%
\let\tikz@to@use@whom=\tikz@to@use@last@coordinate%
\tikz@shapeborderfalse%
\pgfutil@ifnextchar+{\tikz@scan@relative#1}{\tikz@scan@absolute#1}}%
\def\tikz@scan@absolute#1{%
\pgfutil@ifnextchar({\tikz@scan@@absolute#1}%
{%
\advance\tikz@expandcount by -1
\ifnum\tikz@expandcount<0\relax%
\let\pgfutil@next=\tikz@@scangiveup%
\else%
\let\pgfutil@next=\tikz@@scanexpand%
\fi%
\pgfutil@next{#1}%
}%
}%
\def\tikz@@scanexpand#1{\expandafter\tikz@scan@one@point\expandafter#1}%
\def\tikz@@scangiveup#1{\tikzerror{Cannot parse this coordinate}#1{\pgfpointorigin}}%
\def\tikz@scan@@absolute#1({%
\pgfutil@ifnextchar[%
{\def\tikz@scan@point@recall{#1}\tikz@scan@options}%
{\tikz@@@scan@@absolute#1(}%
}%
\def\tikz@scan@options[#1]#2{%
\def\tikz@scan@point@options{#1}%
\tikz@@@scan@@absolute\tikz@scan@handle@options(#2%
}%
\def\tikz@scan@handle@options#1{%
{%
\pgftransformreset%
\let\tikz@transform=\pgfutil@empty%
\expandafter\tikzset\expandafter{\tikz@scan@point@options}%
\tikz@transform%
\pgf@process{\pgfpointtransformed{#1}}%
\xdef\tikz@marshal{\expandafter\noexpand\tikz@scan@point@recall{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
}%
\tikz@marshal%
}%
\def\tikz@@@scan@@absolute#1({%
\pgfutil@ifnextchar{$}%
{\tikz@parse@calculator#1(}
{\tikz@scan@no@calculator#1(}%
}%
\def\tikz@scan@no@calculator#1(#2){%
\edef\tikz@scan@point@coordinate{(#2)}%
\expandafter\tikz@@scan@@no@calculator\expandafter#1\tikz@scan@point@coordinate%
}%
\def\tikz@@scan@@no@calculator#1(#2){%
\pgfutil@in@{cs:}{#2}%
\ifpgfutil@in@%
\let\pgfutil@next\tikz@parse@coordinatesystem%
\else%
\pgfutil@in@{intersection }{#2}%
\ifpgfutil@in@%
\let\pgfutil@next\tikz@parse@intersection%
\else%
\pgfutil@in@|{#2}%
\ifpgfutil@in@
\pgfutil@in@{-|}{#2}%
\ifpgfutil@in@
\let\pgfutil@next\tikz@parse@hv%
\else%
\let\pgfutil@next\tikz@parse@vh%
\fi%
\else%
\pgfutil@in@:{#2}%
\ifpgfutil@in@
\let\pgfutil@next\tikz@parse@polar%
\else%
\pgfutil@in@,{#2}%
\ifpgfutil@in@%
\let\pgfutil@next\tikz@parse@regular%
\else%
\let\pgfutil@next\tikz@parse@node%
\fi%
\fi%
\fi%
\fi%
\fi%
\pgfutil@next#1(#2)%
}%
\def\tikz@parse@calculator#1($#2$){%
\tikzerror{You need to say \string\usetikzlibrary{calc} for coordinate calculation}%
#1{\pgfpointorigin}%
}%
\def\tikz@parse@coordinatesystem#1(#2 cs:#3){%
\let\tikz@return@coordinate=\pgfpointorigin%
\pgfutil@ifundefined{tikz@parse@cs@#2}
{\tikzerror{Unknown coordinate system '#2'}}
{\csname tikz@parse@cs@#2\endcsname(#3)}%
\expandafter#1\expandafter{\tikz@return@coordinate}%
}%
\newif\iftikz@isdimension
\def\tikz@checkunit#1{%
\pgfmathparse{#1}%
\let\iftikz@isdimension=\ifpgfmathunitsdeclared%
}%
\def\tikz@parse@polar#1(#2:#3){%
\pgfutil@ifundefined{tikz@polar@dir@#2}
{\tikz@@parse@polar#1({#2}:{#3})}
{\tikz@@parse@polar#1(\csname tikz@polar@dir@#2\endcsname:{#3})}%
}%
\def\tikz@@parse@polar#1(#2:#3){%
\pgfutil@in@{ and }{#3}%
\ifpgfutil@in@%
\edef\tikz@args{({#2}:#3)}%
\else%
\edef\tikz@args{({#2}:{#3} and {#3})}%
\fi%
\expandafter\tikz@@@parse@polar\expandafter#1\tikz@args%
}%
\def\tikz@@@parse@polar#1(#2:#3 and #4){%
\tikz@checkunit{#3}%
\iftikz@isdimension%
\tikz@checkunit{#4}%
\iftikz@isdimension%
\def\tikz@next{#1{\pgfpointpolar{#2}{#3 and #4}}}%
\else%
\tikzerror{You cannot mix dimension and dimensionless values for polar coordinates}
\def\tikz@next{#1{\pgfpointorigin}}%
\fi%
\else%
\tikz@checkunit{#4}%
\iftikz@isdimension%
\tikzerror{You cannot mix dimension and dimensionless values for polar coordinates}
\def\tikz@next{#1{\pgfpointorigin}}%
\else%
\def\tikz@next{#1{\pgfpointpolarxy{#2}{#3 and #4}}}%
\fi%
\fi%
\tikz@next%
}%
\def\tikz@polar@dir@up{90}%
\def\tikz@polar@dir@down{-90}%
\def\tikz@polar@dir@left{180}%
\def\tikz@polar@dir@right{0}%
\def\tikz@polar@dir@north{90}%
\def\tikz@polar@dir@south{-90}%
\def\tikz@polar@dir@east{0}%
\def\tikz@polar@dir@west{180}%
\expandafter\def\csname tikz@polar@dir@north east\endcsname{45}%
\expandafter\def\csname tikz@polar@dir@north west\endcsname{135}%
\expandafter\def\csname tikz@polar@dir@south east\endcsname{-45}%
\expandafter\def\csname tikz@polar@dir@south west\endcsname{-135}%
\def\tikz@parse@regular#1(#2,{%
\pgfutil@ifnextchar\bgroup{\tikz@@parse@regular#1{#2}}{\tikz@@@parse@regular#1{#2}}%
}%
\def\tikz@@parse@regular#1#2#3{%
\pgfutil@ifnextchar[{%
\tikz@@@parse@regular#1{#2}{#3}}%
{\tikz@@@parse@regular#1{#2}{{#3}}}}%
\def\tikz@@@parse@regular#1#2#3){%
\pgfutil@in@,{#3}%
\ifpgfutil@in@%
\tikz@parse@splitxyz{#1}{#2}#3,%
\else%
\tikz@checkunit{#2}%
\iftikz@isdimension%
\tikz@checkunit{#3}%
\iftikz@isdimension%
\def\pgfutil@next{#1{\pgfpoint{#2}{#3}}}%
\else%
\def\pgfutil@next{#1{\pgfpointadd{\pgfpoint{#2}{0pt}}{\pgfpointxy{0}{#3}}}}%
\fi%
\else%
\tikz@checkunit{#3}%
\iftikz@isdimension%
\def\pgfutil@next{#1{\pgfpointadd{\pgfpoint{0pt}{#3}}{\pgfpointxy{#2}{0}}}}%
\else%
\def\pgfutil@next{#1{\pgfpointxy{#2}{#3}}}%
\fi%
\fi%
\fi%
\pgfutil@next%
}%
\def\tikz@parse@splitxyz#1#2#3,#4,{%
\def\pgfutil@next{#1{\pgfpointxyz{#2}{#3}{#4}}}%
}%
\def\tikz@coordinate@text{coordinate}%
\def\tikz@parse@node#1(#2){%
\pgfutil@in@.{#2}%
\ifpgfutil@in@
\tikz@calc@anchor#2\tikz@stop%
\else%
\tikz@calc@anchor#2.center\tikz@stop%
\ifcsname pgf@sh@ns@\tikz@pp@name{#2}\endcsname
\expandafter\ifx\csname pgf@sh@ns@\tikz@pp@name{#2}\endcsname\tikz@coordinate@text%
\else
\tikz@shapebordertrue%
\def\tikz@shapeborder@name{\tikz@pp@name{#2}}%
\fi%
\else\ifcsname pgf@sh@ns@#2\endcsname
\expandafter\ifx\csname pgf@sh@ns@#2\endcsname\tikz@coordinate@text%
\else
\tikz@shapebordertrue%
\def\tikz@shapeborder@name{#2}%
\fi%
\fi\fi
\fi%
\edef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
\tikz@marshal%
}%
\def\tikz@calc@anchor#1.#2\tikz@stop{%
\ifcsname pgf@sh@ns@\tikz@pp@name{#1}\endcsname%
\pgfpointanchor{\tikz@pp@name{#1}}{#2}%
\else
\pgfpointanchor{#1}{#2}%
\fi
}%
\def\tikz@parse@hv#1(#2){%
\pgfutil@in@{ -| }{#2}%
\ifpgfutil@in@%
\let\tikz@next=\tikz@parse@hvboth%
\else%
\pgfutil@in@{ -|}{#2}%
\ifpgfutil@in@%
\let\tikz@next=\tikz@parse@hvleft%
\else%
\pgfutil@in@{-| }{#2}%
\ifpgfutil@in@%
\let\tikz@next=\tikz@parse@hvright%
\else%
\let\tikz@next=\tikz@parse@hvdone%
\fi%
\fi%
\fi%
\tikz@next#1(#2)}%
\def\tikz@parse@hvboth#1(#2 -| #3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvleft#1(#2 -|#3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvright#1(#2-| #3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvdone#1(#2-|#3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@vh#1(#2){%
\pgfutil@in@{ |- }{#2}%
\ifpgfutil@in@%
\let\tikz@next=\tikz@parse@vhboth%
\else%
\pgfutil@in@{ |-}{#2}%
\ifpgfutil@in@%
\let\tikz@next=\tikz@parse@vhleft%
\else%
\pgfutil@in@{|- }{#2}%
\ifpgfutil@in@%
\let\tikz@next=\tikz@parse@vhright%
\else%
\let\tikz@next=\tikz@parse@vhdone%
\fi%
\fi%
\fi%
\tikz@next#1(#2)}%
\def\tikz@parse@vhboth#1(#2 |- #3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhleft#1(#2 |-#3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhright#1(#2|- #3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhdone#1(#2|-#3){%
{%
\tikz@@@scan@@absolute\tikz@parse@vh@mid(#2)%
\tikz@@@scan@@absolute\tikz@parse@vh@end(#3)%
\xdef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
}%
\tikz@marshal%
}%
\def\tikz@parse@vh@mid#1{\pgf@process{#1}\pgf@xa=\pgf@x}%
\def\tikz@parse@vh@end#1{\pgf@process{#1}\pgf@ya=\pgf@y}%
\def\tikz@parse@intersection#1(intersection{%
\pgfutil@ifnextchar o{%
\tikz@parse@main@intersection#1 1%
}{%
\tikz@parse@main@intersection#1%
}%
}%
\def\tikz@parse@main@intersection#1#2of #3 and #4){%
\tikzset{cs/solution={#2}}%
\pgfutil@in@{--}{#3}%
\ifpgfutil@in@%
\tikz@reparse@line{first}#3\pgf@stop%
\else%
\tikzset{cs/first node={#3}}%
\fi%
\pgfutil@in@{--}{#4}%
\ifpgfutil@in@%
\tikz@reparse@line{second}#4\pgf@stop%
\else%
\tikzset{cs/second node={#4}}%
\fi%
\tikz@parse@cs@intersection()%
\edef\pgf@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
\pgf@marshal%
}%
\def\tikz@reparse@line#1#2--#3\pgf@stop{%
\tikzset{cs/#1 line={(#2)--(#3)}}%
}%
\def\tikz@parse@intersection@a#1{\pgf@process{#1}\pgf@xa=\pgf@x\pgf@ya=\pgf@y}%
\def\tikz@parse@intersection@b#1{\pgf@process{#1}\pgf@xb=\pgf@x\pgf@yb=\pgf@y}%
\def\tikz@scan@relative#1+{%
\pgfutil@ifnextchar+{\tikz@scan@plusplus#1}{\tikz@scan@oneplus#1}}%
\def\tikz@scan@plusplus#1+{%
\def\tikz@doafter{#1}%
\tikz@scan@absolute\tikz@add%
}%
\def\tikz@add#1{%
\tikz@doafter{\pgfpointadd{#1}{\tikz@last@position@saved}}%
}%
\def\tikz@scan@oneplus#1{%
\def\tikz@doafter{#1}%
\tikz@updatecurrentfalse%
\tikz@scan@absolute\tikz@add%
}%
\let\tikz@enable@node@quotes\relax
\let\tikz@enable@edge@quotes\relax
\let\tikz@enable@pic@quotes\relax
\def\usetikzlibrary{\pgfutil@ifnextchar[{\use@tikzlibrary}{\use@@tikzlibrary}}%
\def\use@tikzlibrary[#1]{\use@@tikzlibrary{#1}}%
\def\use@@tikzlibrary#1{%
\edef\pgf@list{#1}%
\pgfutil@for\pgf@temp:=\pgf@list\do{%
\expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{\pgf@temp}%
\ifx\pgf@temp\pgfutil@empty
\else
\expandafter\ifx\csname tikz@library@\pgf@temp @loaded\endcsname\relax%
\expandafter\global\expandafter\let\csname tikz@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
\expandafter\edef\csname tikz@library@#1@atcode\endcsname{\the\catcode`\@}
\expandafter\edef\csname tikz@library@#1@barcode\endcsname{\the\catcode`\|}
\expandafter\edef\csname tikz@library@#1@dollarcode\endcsname{\the\catcode`\$}
\catcode`\@=11
\catcode`\|=12
\catcode`\$=3
\pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{
\pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{%
\expandafter\usepgflibrary\expandafter{\pgf@temp}%
}{%
\tikzerror{I did not find the tikz library
'\pgf@temp'. I looked for files named
tikzlibrary\pgf@temp.code.tex and
pgflibrary\pgf@temp.code.tex, but neither
could be found in the current texmf trees.}
}}%
\catcode`\@=\csname tikz@library@#1@atcode\endcsname
\catcode`\|=\csname tikz@library@#1@barcode\endcsname
\catcode`\$=\csname tikz@library@#1@dollarcode\endcsname
\fi%
\fi
}%
}%
\usetikzlibrary{topaths}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikz.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarycalc.code.tex ====
\ProvidesFileRCS{tikzlibrarycalc.code.tex}
\def\tikz@let@command et{%
\let\p=\tikz@cc@dop%
\let\x=\tikz@cc@dox%
\let\y=\tikz@cc@doy%
\let\n=\tikz@cc@don%
\pgfutil@ifnextchar i{\tikz@cc@stop@let}{\tikz@cc@handle@line}%
}%
\def\tikz@cc@handle@line{%
\pgfutil@ifnextchar\p{%
\tikz@cc@handle@coor%
}{%
\pgfutil@ifnextchar\n{%
\tikz@cc@handle@num%
}{%
\pgfutil@ifnextchar i{%
\tikz@cc@stop@let
}{%
\tikzerror{``\string\p'' or ``\string\n'' expected}%
}%
}%
}%
}%
\def\tikz@cc@handle@num\n#1#2=#3{%
\pgfmathparse{#3}%
\expandafter\edef\csname tikz@cc@n@#1\endcsname{\pgfmathresult\ifpgfmathunitsdeclared pt\fi}
\pgfutil@ifnextchar,{\tikz@cc@handle@nextline}{\tikz@cc@stop@let}%
}%
\def\tikz@cc@handle@coor\p#1#2={%
\def\tikz@cc@coord@name{#1}%
\tikz@scan@one@point\tikz@cc@dolet%
}%
\def\tikz@cc@dolet#1{%
\pgf@process{#1}%
\expandafter\edef\csname tikz@cc@p@\tikz@cc@coord@name\endcsname{\the\pgf@x,\the\pgf@y}%
\expandafter\edef\csname tikz@cc@x@\tikz@cc@coord@name\endcsname{\the\pgf@x}%
\expandafter\edef\csname tikz@cc@y@\tikz@cc@coord@name\endcsname{\the\pgf@y}%
\pgfutil@ifnextchar,{\tikz@cc@handle@nextline}{\tikz@cc@stop@let}%
}%
\def\tikz@cc@handle@nextline,{%
\tikz@cc@handle@line%
}%
\def\tikz@cc@stop@let in{%
\tikz@scan@next@command%
}%
\def\tikz@cc@dop#1{\csname tikz@cc@p@#1\endcsname}%
\def\tikz@cc@dox#1{\csname tikz@cc@x@#1\endcsname}%
\def\tikz@cc@doy#1{\csname tikz@cc@y@#1\endcsname}%
\def\tikz@cc@don#1{\csname tikz@cc@n@#1\endcsname}%
\def\tikz@parse@calculator#1(${%
\def\tikz@cc@command{#1}%
\begingroup%
\pgf@xa=0pt%
\pgf@ya=0pt%
\tikz@cc@parse+%
}%
\def\tikz@cc@parse{%
\pgfutil@ifnextchar${%
\tikz@cc@end%
}
{\pgfutil@ifnextchar+{%
\tikz@cc@add%
}{%
\pgfutil@ifnextchar-{%
\tikz@cc@sub%
}{%
\tikzerror{+ or - expected}%
\tikz@cc@end$%
}%
}%
}%
}%
\def\tikz@cc@end$#1){%
\xdef\tikz@marshal{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
\endgroup%
\expandafter\tikz@cc@command\expandafter{\tikz@marshal}%
}%
\def\tikz@cc@add+{%
\def\tikz@cc@factor{1}%
\tikz@cc@factororcoordinate%
}%
\def\tikz@cc@sub-{%
\def\tikz@cc@factor{-1}%
\tikz@cc@factororcoordinate%
}%
\def\tikz@cc@factororcoordinate{%
\pgfutil@ifnextchar({%
\tikz@cc@coordinate%
}{%
\tikz@cc@parse@factor%
}%
}%
\def\tikz@cc@parse@factor#1*({%
\pgfmathparse{#1*\tikz@cc@factor}%
\let\tikz@cc@factor=\pgfmathresult%
\tikz@cc@coordinate(%
}%
\def\tikz@cc@coordinate{%
\tikz@scan@absolute\tikz@cc@after@coordinate%
}%
\def\tikz@cc@after@coordinate#1{%
\pgf@process{#1}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\tikz@cc@mid@checks%
}%
\def\tikz@cc@mid@checks{%
\ifnum\the\catcode`\!=\active\relax
\expandafter\tikz@cc@mid@checks@active
\else
\expandafter\tikz@cc@mid@checks@nonactive
\fi
}%
\def\tikz@cc@mid@checks@nonactive{%
\pgfutil@ifnextchar!{%
\tikz@cc@mid@nonactive%
}{%
\advance\pgf@xa by\tikz@cc@factor\pgf@xb
\advance\pgf@ya by\tikz@cc@factor\pgf@yb
\tikz@cc@parse%
}%
}%
\def\tikz@cc@mid@nonactive!{%
\pgfutil@ifnextchar({%
\tikz@scan@one@point\tikz@cc@project%
}{%
\tikz@cc@mid@num@nonactive%
}%
}%
\begingroup
\catcode`\!=\active
\gdef\tikz@cc@mid@checks@active{%
\pgfutil@ifnextchar!{%
\tikz@cc@mid@active%
}{%
\advance\pgf@xa by\tikz@cc@factor\pgf@xb
\advance\pgf@ya by\tikz@cc@factor\pgf@yb
\tikz@cc@parse%
}%
}%
\gdef\tikz@cc@mid@active!{%
\pgfutil@ifnextchar({%
\tikz@scan@one@point\tikz@cc@project%
}{%
\tikz@cc@mid@num@active%
}%
}%
\endgroup
\def\tikz@cc@mid@num@nonactive#1!{\tikz@cc@mid@num{#1}}%
\begingroup
\catcode`\!=\active
\gdef\tikz@cc@mid@num@active#1!{\tikz@cc@mid@num{#1}}%
\endgroup
\def\tikz@cc@mid@num#1{%
\pgfmathparse{#1}%
\ifpgfmathunitsdeclared%
\let\tikz@cc@mid@unit=\pgfmathresult%
\expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@unit%
\else%
\let\tikz@cc@mid@factor=\pgfmathresult%
\pgfmathparse{1-\tikz@cc@mid@factor}%
\let\tikz@cc@mid@factor@one=\pgfmathresult%
\expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@num%
\fi%
}%
\def\tikz@cc@after@num#1{%
\pgf@process{#1}%
\pgf@xb=\tikz@cc@mid@factor@one\pgf@xb%
\pgf@yb=\tikz@cc@mid@factor@one\pgf@yb%
\advance\pgf@xb by\tikz@cc@mid@factor\pgf@x%
\advance\pgf@yb by\tikz@cc@mid@factor\pgf@y%
\tikz@cc@mid@checks%
}%
\def\tikz@cc@after@unit#1{%
\pgf@process{#1}%
\advance\pgf@x by-\pgf@xb%
\advance\pgf@y by-\pgf@yb%
\pgf@process{\pgfpointnormalised{}}%
\advance\pgf@xb by\tikz@cc@mid@unit\pgf@x%
\advance\pgf@yb by\tikz@cc@mid@unit\pgf@y%
\tikz@cc@mid@checks%
}%
\def\tikz@cc@project#1{%
\pgf@process{#1}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\begingroup
\ifnum\the\catcode`\!=\active
\def\tikz@next{%
\endgroup
\expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@project
\tikz@cc@scan@ex@active}%
\else
\def\tikz@next{%
\endgroup
\expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@project
\tikz@cc@scan@ex@nonactive}%
\fi
\tikz@next%
}%
\def\tikz@cc@scan@ex@nonactive!{}%
\begingroup
\catcode`\!=\active
\gdef\tikz@cc@scan@ex@active!{}%
\endgroup
\def\tikz@cc@after@project#1{%
\pgf@process{#1}%
\advance\pgf@x by-\pgf@xb%
\advance\pgf@y by-\pgf@yb%
\advance\pgf@xc by-\pgf@xb%
\advance\pgf@yc by-\pgf@yb%
\pgf@process{\pgfpointnormalised{}}%
\pgf@xc=\pgf@sys@tonumber{\pgf@xc}\pgf@x%
\advance\pgf@xc by\pgf@sys@tonumber{\pgf@yc}\pgf@y%
\advance\pgf@xb by\pgf@sys@tonumber{\pgf@xc}\pgf@x%
\advance\pgf@yb by\pgf@sys@tonumber{\pgf@xc}\pgf@y%
\tikz@cc@mid@checks%
}%
\def\tikz@cc@scan@rot#1{%
\pgfutil@ifnextchar({%
\tikz@scan@one@point#1%
}%
{%
\def\tikz@cc@scan@rot@cmd{#1}%
\ifnum\the\catcode`\:=\active\relax
\expandafter\tikz@cc@scan@one@rot@active%
\else
\expandafter\tikz@cc@scan@one@rot@nonactive%
\fi
}%
}%
\def\tikz@cc@scan@one@rot@nonactive#1:{%
\def\tikz@cc@scan@rot@angle{#1}%
\tikz@scan@one@point\tikz@cc@handle@rot%
}%
\begingroup
\catcode`\:=\active
\gdef\tikz@cc@scan@one@rot@active#1:{%
\def\tikz@cc@scan@rot@angle{#1}%
\tikz@scan@one@point\tikz@cc@handle@rot%
}%
\endgroup
\def\tikz@cc@handle@rot#1{%
\pgf@process{#1}%
{%
\pgftransformreset%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgftransformshift{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
\pgftransformrotate{\tikz@cc@scan@rot@angle}%
\pgftransformshift{\pgfqpoint{-\pgf@xb}{-\pgf@yb}}%
\pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
\expandafter
}%
\edef\tikz@marshal{\noexpand\tikz@cc@scan@rot@cmd{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
\tikz@marshal%
}%
\tikzdeclarecoordinatesystem{tangent}
{%
\tikzset{cs/.cd,#1}%
\expandafter\ifx\csname tikz@tangent@\tikz@cs@type\endcsname\relax%
\tikzerror{I do not know how to compute the tangent to
a \tikz@cs@type}%
\pgfpointorigin%
\else%
\expandafter\tikz@scan@one@point\expandafter\tikz@lib@do@tangent\tikz@cs@point%
\fi%
}%
\tikzset{cs/node/.code=\tikz@cs@unpack{\tikz@cs@node}{\tikz@cs@type}{#1}}%
\tikzset{cs/point/.store in=\tikz@cs@point}%
\def\tikz@lib@do@tangent{\csname tikz@tangent@\tikz@cs@type\endcsname}%
\def\tikz@tangent@coordinate#1{%
\pgfpointanchor{\tikz@cs@node}{center}%
}%
\def\tikz@tangent@circle#1{%
{%
\pgf@process{\pgfpointtransformed{#1}}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikz@cs@node}{center}}}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\pgftransformreset%
\pgftransformshift{\pgfpointanchor{\tikz@cs@node}{center}}%
\pgf@process{\pgfpointanchor{\tikz@cs@node}{east}}%
\pgf@xc=\pgf@x%
\pgfmathparse{veclen(\the\pgf@xa,\the\pgf@ya)}
\pgfmathparse{acos(\the\pgf@xc/\pgfmathresult)}
\ifnum\pgfkeysvalueof{/tikz/cs/solution}>1\relax%
\pgfmathparse{0-\pgfmathresult}%
\fi%
\let\tikz@lib@temp=\pgfmathresult%
\pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
\pgf@ya=-\pgf@y%
\pgftransformcm{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
\pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@lib@temp}{\the\pgf@xc}}}%
}%
{%
\pgftransforminvert%
\pgf@process{\pgfpointtransformed{}}%
}%
}%
\def\tikz@intersect@circle@and@circle{%
{%
\pgftransformreset%
\pgf@process{\pgfpointanchor{\tikz@cs@node@a}{center}}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgfpointanchor{\tikz@cs@node@a}{east}}%
\advance\pgf@x by-\pgf@xa%
\pgf@xc=\pgf@x%
\pgf@process{\pgfpointanchor{\tikz@cs@node@b}{center}}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{\pgfpointanchor{\tikz@cs@node@b}{east}}%
\advance\pgf@x by-\pgf@xb%
\pgf@yc=\pgf@x%
\pgf@process{%
\pgfpointintersectionofcircles{\pgfqpoint{\pgf@xa}{\pgf@ya}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}{\pgf@xc}{\pgf@yc}{\pgfkeysvalueof{/tikz/cs/solution}}%
}%
}%
{%
\pgftransforminvert%
\pgf@process{\pgfpointtransformed{}}%
}%
}%
\def\tikz@intersect@line@and@circle{%
{%
\expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@a%
\pgf@process{\pgfpointtransformed{}}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikz@cs@node@b}{center}}}%
\advance\pgf@xa by-\pgf@x%
\advance\pgf@ya by-\pgf@y%
\advance\pgf@xb by-\pgf@x%
\advance\pgf@yb by-\pgf@y%
\pgftransformreset%
\pgftransformshift{\pgfpointanchor{\tikz@cs@node@b}{center}}%
\pgf@process{\pgfpointanchor{\tikz@cs@node@b}{east}}%
\edef\tikz@lib@saved@radius{\pgf@sys@tonumber{\pgf@x}}%
\pgf@x=\pgf@xb%
\pgf@y=\pgf@yb%
\advance\pgf@x by-\pgf@xa%
\advance\pgf@y by-\pgf@ya%
\pgf@process{\pgfpointnormalised{}}%
\pgf@xc=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
\advance\pgf@xc by\pgf@sys@tonumber{\pgf@ya}\pgf@y%
\pgf@xc=-\pgf@xc%
\advance\pgf@xa by\pgf@sys@tonumber{\pgf@xc}\pgf@x%
\advance\pgf@ya by\pgf@sys@tonumber{\pgf@xc}\pgf@y%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@xb=\tikz@lib@saved@radius pt%
\c@pgf@counta=1\relax%
\loop%
\ifdim\pgf@xb>50pt%
\multiply\c@pgf@counta by2\relax%
\divide\pgf@xa by2\relax%
\divide\pgf@ya by2\relax%
\divide\pgf@xb by2\relax%
\repeat%
\pgf@xb=\pgf@sys@tonumber{\pgf@xb}\pgf@xb%
\pgf@yb=\pgf@sys@tonumber{\pgf@xa}\pgf@xa%
\advance\pgf@xb by-\pgf@yb%
\pgf@yb=\pgf@sys@tonumber{\pgf@ya}\pgf@ya%
\advance\pgf@xb by-\pgf@yb%
\ifdim\pgf@xb<0pt%
\pgf@xb=0pt%
\fi%
\pgfmathsqrt@{\pgf@sys@tonumber{\pgf@xb}}%
\pgfmathmultiply@{\pgfmathresult}{\the\c@pgf@counta}%
\multiply\pgf@xa by\c@pgf@counta\relax%
\multiply\pgf@ya by\c@pgf@counta\relax%
\ifnum\pgfkeysvalueof{/tikz/cs/solution}>1\relax%
\pgfmathsubtract{0}{\pgfmathresult}%
\fi%
\advance\pgf@xa by \pgfmathresult\pgf@xc%
\advance\pgf@ya by \pgfmathresult\pgf@yc%
\pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
}%
{%
\pgftransforminvert%
\pgf@process{\pgfpointtransformed{}}%
}%
}%
\def\tikz@intersect@circle@and@line{%
{%
\let\tikz@cs@node@b=\tikz@cs@node@a%
\let\tikz@cs@line@a=\tikz@cs@line@b%
\tikz@intersect@line@and@circle%
}%
}%
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarycalc.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.code.tex ====
\usepgfmodule{decorations}%
\tikzset{decorate/.is if=tikz@decoratepath,
/pgf/decoration/name/.store in=\tikz@decoration@name,
/pgf/decoration/.unknown/.code=%
\pgfifdecoration{\pgfkeyscurrentname}{\edef\tikz@decoration@name{\pgfkeyscurrentname}}
{\pgfifmetadecoration{\pgfkeyscurrentname}{\edef\tikz@decoration@name{\pgfkeyscurrentname}}
{\pgfkeys{/errors/unknown
key/.expanded={/pgf/decoration/\pgfkeyscurrentname}{\pgfutil@unexpanded{#1}}}}},%
/pgf/decoration/raise/.code={\def\tikz@dec@shift{\pgftransformyshift{#1}}\tikz@dec@trans},
/pgf/decoration/mirror/.code={%
\csname if#1\endcsname
\def\tikz@dec@mirror{\pgftransformyscale{-1}}%
\else%
\let\tikz@dec@mirror=\relax%
\fi%
\tikz@dec@trans%
},
/pgf/decoration/mirror/.default=true,
/pgf/decoration/transform/.code={%
{%
\pgftransformreset%
\def\tikz@transform{}%
\pgfkeysalso{/tikz/.cd, #1}%
\expandafter\gdef\expandafter\tikz@g@temptransform\expandafter{\tikz@transform}%
}%
\let\tikz@dec@user@transform=\tikz@g@temptransform%
\tikz@dec@trans%
},%
/pgf/decoration/pre/.initial=lineto,
/pgf/decoration/post/.initial=lineto,
/pgf/decoration/pre length/.initial=0pt,
/pgf/decoration/post length/.initial=0pt,
}%
\let\tikz@decoration@name=\tikz@nonetext
\def\tikz@dec@trans{\pgfsetdecorationsegmenttransformation{\tikz@dec@user@transform\tikz@dec@mirror\tikz@dec@shift}}%
\let\tikz@dec@user@transform=\relax
\let\tikz@dec@shift=\relax
\let\tikz@dec@mirror=\relax
\pgfdeclaremetadecoration{tikz@internal}{pre}{%
\state{pre}[width=\pgfkeysvalueof{/pgf/decoration/pre length}, next state=main]
{
\tikz@dec@trans
\decoration{\pgfkeysvalueof{/pgf/decoration/pre}}
}%
\state{main}[width=\pgfmetadecoratedremainingdistance-\pgfkeysvalueof{/pgf/decoration/post length}, next state=final]
{
\tikz@dec@trans
\decoration{\tikz@decoration@name}
}%
\state{final}
{
\tikz@dec@trans
\decoration{\pgfkeysvalueof{/pgf/decoration/post}}
}%
}%
\newif\iftikz@metadecoration
\def\tikz@lib@dec@addtomacro#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}%
\def\tikz@lib@decoration[#1]{%
\begingroup%
\tikzset{#1}%
\ifx\tikz@decoration@name\tikz@nonetext%
\else
\expandafter\tikz@lib@do@dec%
\fi%
\pgfutil@ifnextchar\bgroup{%
\begingroup%
\tikz@auto@end@pathfalse%
\aftergroup\tikz@enddecoration%
\afterassignment\tikz@scan@next@command%
\let\tikz@lib@next%
}%
{%
\tikzerror{A decoration must begin with a brace}%
\tikz@enddecoration%
}%
}%
\def\tikz@lib@do@dec{%
\pgfifmetadecoration{\tikz@decoration@name}%
{\expandafter\pgfmetadecoration\expandafter{\tikz@decoration@name}}%
{%
\pgfifdecoration{\tikz@decoration@name}%
{\tikz@lib@dec@startdecoration}%
{\tikzerror{Unknown (meta-)decoration '\tikz@decoration@name'. Perhaps you
misspelled it?}}%
}%
\ifx\pgfdecorateexistingpath\pgfutil@empty%
\pgfpathmoveto{\pgfqpoint{\the\tikz@lastxsaved}{\the\tikz@lastysaved}}%
\fi%
}%
\newbox\tikz@lib@dec@box
\def\tikz@enddecoration{%
\global\setbox\tikz@lib@dec@box=\box\tikz@tempbox%
\ifx\tikz@decoration@name\tikz@nonetext%
\else
\iftikz@metadecoration%
\endpgfmetadecoration%
\else%
\tikz@lib@dec@stopdecoration%
\fi%
\fi
\endgroup%
\setbox\tikz@tempbox=\box\tikz@lib@dec@box%
}%
\def\tikz@lib@dec@decorate@path{%
\ifx\tikz@decoration@name\tikz@nonetext%
\else%
\pgfgetpath\tikz@lib@dec@currentpath%
\pgfsetpath\pgfutil@empty%
\pgfifmetadecoration{\tikz@decoration@name}
{
\expandafter\pgfmetadecoration\expandafter{\tikz@decoration@name}%
\pgfsetpath\tikz@lib@dec@currentpath%
\endpgfmetadecoration%
}
{
\pgfifdecoration{\tikz@decoration@name}
{
\tikz@lib@dec@startdecoration%
\pgfsetpath\tikz@lib@dec@currentpath%
\tikz@lib@dec@stopdecoration%
}
{
\tikzerror{Unknown (meta-)decoration '\tikz@decoration@name'. Perhaps
you misspelled it?}
}
}
\fi%
}%
\def\tikz@lib@dec@zpttext{0pt}%
\newif\iftikz@lib@dec@temp
\def\tikz@lib@dec@startdecoration{%
\pgfkeysgetvalue{/pgf/decoration/pre length}{\tikz@lib@pre}%
\pgfkeysgetvalue{/pgf/decoration/post length}{\tikz@lib@post}%
\tikz@lib@dec@tempfalse%
\ifx\tikz@lib@pre\tikz@lib@dec@zpttext%
\ifx\tikz@lib@post\tikz@lib@dec@zpttext%
\else%
\tikz@lib@dec@temptrue%
\fi%
\else%
\tikz@lib@dec@temptrue%
\fi%
\iftikz@lib@dec@temp%
\pgfmetadecoration{tikz@internal}%
\else%
\expandafter\pgfdecoration\expandafter{\expandafter{\tikz@decoration@name}{\pgfdecoratedpathlength}{}{}}%
\fi%
}%
\def\tikz@lib@dec@stopdecoration{%
\iftikz@lib@dec@temp%
\endpgfmetadecoration%
\else%
\endpgfdecoration%
\fi%
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.pathreplacing.code.tex ====
\usetikzlibrary{decorations}%
\usepgflibrary{decorations.pathreplacing}%
\def\tikz@lib@dec@installinputsegmentpoints{%
\pgf@process{\pgf@decorate@inputsegment@first}%
\edef\tikzinputsegmentfirst{\the\pgf@x,\the\pgf@y}%
\pgf@process{\pgf@decorate@inputsegment@last}%
\edef\tikzinputsegmentlast{\the\pgf@x,\the\pgf@y}%
\pgf@process{\pgf@decorate@inputsegment@supporta}%
\edef\tikzinputsegmentsupporta{\the\pgf@x,\the\pgf@y}%
\pgf@process{\pgf@decorate@inputsegment@supportb}%
\edef\tikzinputsegmentsupportb{\the\pgf@x,\the\pgf@y}%
}%
\pgfkeys{
/pgf/decoration/.cd,
moveto code/.code=\def\pgfdecoratedinputsegmentmovetocode{\tikz@lib@dec@installinputsegmentpoints#1},
lineto code/.code=\def\pgfdecoratedinputsegmentlinetocode{\tikz@lib@dec@installinputsegmentpoints#1},
curveto code/.code=\def\pgfdecoratedinputsegmentcurvetocode{\tikz@lib@dec@installinputsegmentpoints#1},
closepath code/.code=\def\pgfdecoratedinputsegmentclosepathcode{\tikz@lib@dec@installinputsegmentpoints#1}
}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.pathreplacing.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarypositioning.code.tex ====
\ProvidesFileRCS{tikzlibrarypositioning.code.tex}
\tikzset{above/.code=\tikz@lib@place@handle@{#1}{south}{0}{1}{north}{1}}%
\tikzset{above left/.code=\tikz@lib@place@handle@{#1}{south east}{-1}{1}{north west}{0.707106781}}%
\tikzset{above right/.code=\tikz@lib@place@handle@{#1}{south west}{1}{1}{north east}{0.707106781}}%
\tikzset{base left/.code =\tikz@lib@place@handle@{#1}{base east}{-1}{0}{base west}{1}}%
\tikzset{base right/.code=\tikz@lib@place@handle@{#1}{base west}{1}{0}{base east}{1}}%
\tikzset{below/.code=\tikz@lib@place@handle@{#1}{north}{0}{-1}{south}{1}}%
\tikzset{below left/.code=\tikz@lib@place@handle@{#1}{north east}{-1}{-1}{south west}{0.707106781}}%
\tikzset{below right/.code=\tikz@lib@place@handle@{#1}{north west}{1}{-1}{south east}{0.707106781}}%
\tikzset{left/.code =\tikz@lib@place@handle@{#1}{east}{-1}{0}{west}{1}}%
\tikzset{mid left/.code =\tikz@lib@place@handle@{#1}{mid east}{-1}{0}{mid west}{1}}%
\tikzset{mid right/.code=\tikz@lib@place@handle@{#1}{mid west}{1}{0}{mid east}{1}}%
\tikzset{right/.code=\tikz@lib@place@handle@{#1}{west}{1}{0}{east}{1}}%
\newif\iftikz@lib@ignore@size
\pgfutil@g@addto@macro\tikz@node@reset@hook{\tikz@addtransform{\tikz@lib@pos@call}\let\tikz@lib@pos@call=\relax}%
\tikzset{on grid/.is if=tikz@lib@ignore@size}%
\tikzset{node distance=1cm and 1cm}%
\def\tikz@lib@place@handle@#1#2#3#4#5#6{%
\def\tikz@anchor{#2}%
\let\tikz@do@auto@anchor=\relax%
\edef\tikz@temp{#1}%
\def\tikz@lib@place@single@factor{#6}%
\expandafter\tikz@lib@place@handle@@\expandafter{\tikz@temp}{#3}{#4}{#5}%
}%
\def\tikz@lib@place@handle@@#1#2#3#4{%
\pgfutil@in@{of }{#1}%
\ifpgfutil@in@%
\tikz@lib@place@of#1\tikz@stop{#4}%
\else%
\edef\tikz@lib@place@nums{#1}%
\fi%
\ifx\tikz@lib@place@nums\pgfutil@empty%
\else%
\expandafter\tikz@lib@place@parse@nums\expandafter{\tikz@lib@place@nums}%
\pgf@x=#2\pgf@x%
\pgf@y=#3\pgf@y%
\edef\tikz@lib@pos@call{\noexpand\pgftransformshift{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
\fi%
}%
\def\tikz@lib@place@parse@nums#1{%
\pgfutil@in@{and}{#1}%
\ifpgfutil@in@%
\tikz@lib@place@parse@nums@#1\tikz@stop%
\else%
\tikz@lib@place@parse@nums@#1and#1\tikz@stop%
\pgf@x=\tikz@lib@place@single@factor\pgf@x%
\pgf@y=\tikz@lib@place@single@factor\pgf@y%
\fi
}%
\def\tikz@lib@place@parse@nums@#1and#2\tikz@stop{%
\pgfmathparse{#2}%
\ifpgfmathunitsdeclared%
\pgf@xa=\pgfmathresult pt%
\pgf@ya=0pt%
\else%
\let\tikz@lib@temp=\pgfmathresult%
\pgf@process{\pgfpointxy{\tikz@lib@temp}{0}}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\fi%
\pgfmathparse{#1}%
\ifpgfmathunitsdeclared%
\advance\pgf@ya by\pgfmathresult pt%
\else%
\let\tikz@lib@temp=\pgfmathresult%
\pgf@process{\pgfpointxy{0}{\tikz@lib@temp}}%
\advance\pgf@xa by\pgf@x%
\advance\pgf@ya by\pgf@y%
\fi%
\pgf@x=\pgf@xa%
\pgf@y=\pgf@ya%
}%
\def\tikz@lib@place@of#1of #2\tikz@stop#3{%
\def\tikz@temp{#1}%
\ifx\tikz@temp\pgfutil@empty%
\tikz@lib@place@of@{\tikz@node@distance}{#2}{#3}%
\else%
\tikz@lib@place@of@{#1}{#2}{#3}%
\fi%
}%
\def\tikz@lib@place@of@#1#2#3{%
\tikz@scan@one@point\tikz@lib@place@remember(#2)%
\iftikz@shapeborder%
\iftikz@lib@ignore@size%
\edef\tikz@node@at{\noexpand\pgfpointanchor{\tikz@shapeborder@name}{center}}%
\def\tikz@anchor{center}%
\else%
\edef\tikz@node@at{\noexpand\pgfpointanchor{\tikz@shapeborder@name}{#3}}%
\fi%
\fi%
\edef\tikz@lib@place@nums{#1}%
}%
\def\tikz@lib@place@remember#1{\def\tikz@node@at{#1}}%
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarypositioning.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarytopaths.code.tex ====
\ProvidesFileRCS{tikzlibrarytopaths.code.tex}
\tikzset{move to/.style= {to path={(\tikztotarget) \tikztonodes}}}
\tikzset{line to/.style= {to path={-- (\tikztotarget) \tikztonodes}}}
\tikzset{every curve to/.style= {}}
\tikzset{curve to/.style= {to path=\tikz@to@curve@path}}
\tikzoption{bend angle}{\pgfmathsetmacro\tikz@to@bend{#1}}
\tikzoption{bend left}[]{%
\def\pgf@temp{#1}%
\ifx\pgf@temp\pgfutil@empty%
\else%
\pgfmathsetmacro\tikz@to@bend{#1}%
\fi%
\let\tikz@to@out=\tikz@to@bend%
\pgfmathsetmacro\tikz@to@in{180-(\tikz@to@out)}%
\tikz@to@switch@on%
\tikz@to@relativetrue%
}
\tikzoption{bend right}[]{%
\def\pgf@temp{#1}%
\ifx\pgf@temp\pgfutil@empty%
\else%
\pgfmathsetmacro\tikz@to@bend{#1}%
\fi%
\pgfmathsetmacro\tikz@to@out{-(\tikz@to@bend)}
\pgfmathsetmacro\tikz@to@in{180-(\tikz@to@out)}
\tikz@to@switch@on%
\tikz@to@relativetrue%
}
\tikzoption{relative}[true]{\csname tikz@to@relative#1\endcsname}
\newif\iftikz@to@relative
\tikz@to@relativefalse
\tikzoption{in}{\def\tikz@to@in{#1}\tikz@to@switch@on}
\tikzoption{out}{\def\tikz@to@out{#1}\tikz@to@switch@on}
\tikzoption{in looseness}{\tikz@to@set@in@looseness{#1}}
\tikzoption{out looseness}{\tikz@to@set@out@looseness{#1}}
\tikzoption{looseness}{\tikz@to@set@in@looseness{#1}\tikz@to@set@out@looseness{#1}}
\tikzoption{in control}{\tikz@to@set@in@control{#1}}
\tikzoption{out control}{\tikz@to@set@out@control{#1}}
\tikzoption{controls}{\tikz@to@parse@controls#1\pgf@stop}
\tikzoption{in min distance}{\tikz@to@set@distances{#1}{}{}{}}
\tikzoption{in max distance}{\tikz@to@set@distances{}{#1}{}{}}
\tikzoption{in distance}{\tikz@to@set@distances{#1}{#1}{}{}}
\tikzoption{out min distance}{\tikz@to@set@distances{}{}{#1}{}}
\tikzoption{out max distance}{\tikz@to@set@distances{}{}{}{#1}}
\tikzoption{out distance}{\tikz@to@set@distances{}{}{#1}{#1}}
\tikzoption{min distance}{\tikz@to@set@distances{#1}{}{#1}{}}
\tikzoption{max distance}{\tikz@to@set@distances{}{#1}{}{#1}}
\tikzoption{distance}{\tikz@to@set@distances{#1}{#1}{#1}{#1}}
\def\tikz@to@set@distances#1#2#3#4{%
\tikz@to@setifnotempy{#1}{\tikz@to@in@min}{\let\tikz@to@end@compute=\tikz@to@end@compute@looseness}%
\tikz@to@setifnotempy{#2}{\tikz@to@in@max}{\let\tikz@to@end@compute=\tikz@to@end@compute@looseness}%
\tikz@to@setifnotempy{#3}{\tikz@to@out@min}{\let\tikz@to@start@compute=\tikz@to@start@compute@looseness}%
\tikz@to@setifnotempy{#4}{\tikz@to@out@max}{\let\tikz@to@start@compute=\tikz@to@start@compute@looseness}%
\tikz@to@switch@on%
}
\def\tikz@to@setifnotempy#1#2#3{%
\def\pgf@temp{#1}%
\ifx\pgf@temp\pgfutil@empty\else\def#2{#1}#3\fi%
}
\def\tikz@to@set@in@looseness#1{%
\pgfmathsetmacro\tikz@to@in@looseness{#1}%
\let\tikz@to@end@compute=\tikz@to@end@compute@looseness%
\tikz@to@switch@on%
}
\def\tikz@to@set@out@looseness#1{%
\pgfmathsetmacro\tikz@to@out@looseness{#1}%
\let\tikz@to@start@compute=\tikz@to@start@compute@looseness%
\tikz@to@switch@on%
}
\def\tikz@to@parse@controls#1and#2\pgf@stop{\tikz@to@set@in@control{#2}\tikz@to@set@out@control{#1}}
\def\tikz@to@set@in@control#1{%
\def\tikz@to@in@control{#1}%
\let\tikz@to@end@compute=\tikz@to@end@compute@control%
\tikz@to@switch@on%
}
\def\tikz@to@set@out@control#1{%
\def\tikz@to@out@control{#1}%
\let\tikz@to@start@compute=\tikz@to@start@compute@control%
\tikz@to@switch@on%
}
\def\tikz@to@bend{30}
\def\tikz@to@out{45}
\def\tikz@to@in{135}
\def\tikz@to@out@looseness{1}
\def\tikz@to@in@looseness{1}
\def\tikz@to@in@min{0pt}
\def\tikz@to@in@max{10000pt}
\def\tikz@to@out@min{0pt}
\def\tikz@to@out@max{10000pt}
\def\tikz@to@switch@on{\let\tikz@to@path=\tikz@to@curve@path}
\def\tikz@to@curve@path{%
[every curve to]
\pgfextra{\iftikz@to@relative\tikz@to@compute@relative\else\tikz@to@compute\fi}
\tikz@computed@path
\pgfextra{\tikz@updatenexttrue\tikz@updatecurrenttrue}%
\tikztonodes%
}
\def\tikz@to@modify#1#2{%
\pgfutil@ifundefined{pgf@sh@ns@#1}
{}%
{\edef#1{#1.#2}}
}%
\def\tikz@to@compute{%
\let\tikz@tofrom=\tikztostart%
\let\tikz@toto=\tikztotarget%
\tikz@to@modify\tikz@tofrom\tikz@to@out%
\tikz@to@modify\tikz@toto\tikz@to@in%
\ifx\tikz@to@start@compute\tikz@to@start@compute@looseness%
\tikz@to@compute@distance%
\else%
\ifx\tikz@from@start@compute\tikz@to@start@compute@looseness%
\tikz@to@compute@distance%
\fi%
\fi%
\tikz@to@start@compute%
\tikz@to@end@compute%
\edef\tikz@computed@path{.. controls \tikz@computed@start and \tikz@computed@end .. (\tikztotarget)}
}
\def\tikz@to@compute@distance{\tikz@scan@one@point\tikz@@to@compute@distance(\tikz@tofrom)}
\def\tikz@@to@compute@distance#1{%
\def\tikz@first@point{#1}%
\tikz@scan@one@point\tikz@@@to@compute@distance(\tikz@toto)}
\def\tikz@@@to@compute@distance#1{%
\iftikz@updatecurrent\else
\tikz@updatenextfalse
\fi
\def\tikz@second@point{#1}%
\tikz@to@compute@distance@main%
}
\def\tikz@to@compute@distance@main{%
\pgf@process{\pgfpointdiff{\tikz@first@point}{\tikz@second@point}}%
\ifdim\pgf@x<0pt\pgf@xa=-\pgf@x\else\pgf@xa=\pgf@x\fi%
\ifdim\pgf@y<0pt\pgf@ya=-\pgf@y\else\pgf@ya=\pgf@y\fi%
\pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
\ifdim\pgf@x>\pgf@y%
\c@pgf@counta=\pgf@x%
\ifnum\c@pgf@counta=0\relax%
\else%
\divide\c@pgf@counta by 255\relax%
\pgf@xa=16\pgf@xa\relax%
\divide\pgf@xa by\c@pgf@counta%
\pgf@xa=16\pgf@xa\relax%
\fi%
\else%
\c@pgf@counta=\pgf@y%
\ifnum\c@pgf@counta=0\relax%
\else%
\divide\c@pgf@counta by 255\relax%
\pgf@ya=16\pgf@ya\relax%
\divide\pgf@ya by\c@pgf@counta%
\pgf@xa=16\pgf@ya\relax%
\fi%
\fi%
\pgf@x=0.3915\pgf@xa%
\pgf@xa=\tikz@to@out@looseness\pgf@x%
\pgf@xb=\tikz@to@in@looseness\pgf@x%
\pgfmathsetlength{\pgf@ya}{\tikz@to@out@min}
\ifdim\pgf@xa<\pgf@ya%
\pgf@xa=\pgf@ya%
\fi%
\pgfmathsetlength{\pgf@ya}{\tikz@to@out@max}
\ifdim\pgf@xa>\pgf@ya%
\pgf@xa=\pgf@ya%
\fi%
\pgfmathsetlength{\pgf@ya}{\tikz@to@in@min}
\ifdim\pgf@xb<\pgf@ya%
\pgf@xb=\pgf@ya%
\fi%
\pgfmathsetlength{\pgf@ya}{\tikz@to@in@max}
\ifdim\pgf@xb>\pgf@ya%
\pgf@xb=\pgf@ya%
\fi%
}
\def\tikz@to@start@compute@looseness{%
\edef\tikz@computed@start{([shift=({\tikz@to@out}:\the\pgf@xa)]\tikz@tofrom)}%
}
\def\tikz@to@end@compute@looseness{%
\edef\tikz@computed@end{([shift=({\tikz@to@in}:\the\pgf@xb)]\tikz@toto)}%
}
\def\tikz@to@start@compute@control{%
\let\tikz@computed@start=\tikz@to@out@control%
}
\def\tikz@to@end@compute@control{%
\let\tikz@computed@end=\tikz@to@in@control%
}
\let\tikz@to@start@compute=\tikz@to@start@compute@looseness%
\let\tikz@to@end@compute=\tikz@to@end@compute@looseness%
\def\tikz@to@compute@relative{%
\tikz@scan@one@point\tikz@@to@compute@relative(\tikztostart)%
}
\def\tikz@@to@compute@relative#1{%
\def\tikz@tofrom{#1}%
\tikz@scan@one@point\tikz@@@to@compute@relative(\tikztotarget)%
}
\def\tikz@@@to@compute@relative#1{%
\def\tikz@toto{#1}%
\begingroup
\pgfutil@ifundefined{pgf@sh@ns@\tikztostart}
{%
\let\tikz@first@point=\tikz@tofrom%
\let\tikz@tostart@tikz=\pgfutil@empty
}%
{%
{%
\tikz@tofrom%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
{%
\pgftransformreset%
\pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
\pgftransformrotate{\tikz@to@out}%
\pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
\pgf@process{\pgfpointtransformed{\tikz@toto}}%
}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgfpointshapeborder{\tikztostart}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
\xdef\tikz@tofrom@smuggle{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
}%
\let\tikz@first@point=\tikz@tofrom@smuggle%
\tikz@first@point%
\edef\tikz@tostart@tikz{(\the\pgf@x,\the\pgf@y)}%
}%
\pgfutil@ifundefined{pgf@sh@ns@\tikztotarget}
{%
\let\tikz@second@point=\tikz@toto%
}%
{%
{%
\tikz@toto%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
{%
\pgftransformreset%
\pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
\pgftransformrotate{180}%
\pgftransformrotate{\tikz@to@in}%
\pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
\pgf@process{\pgfpointtransformed{\tikz@tofrom}}%
}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgfpointshapeborder{\tikztotarget}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
\xdef\tikz@toto@smuggle{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
}%
\let\tikz@second@point=\tikz@toto@smuggle%
}%
\tikz@second@point%
\edef\tikz@totarget@tikz{(\the\pgf@x,\the\pgf@y)}%
\tikz@to@compute@distance@main%
\edef\tikz@to@first@distance{\the\pgf@xa}%
\edef\tikz@to@second@distance{\the\pgf@xb}%
\pgftransformreset%
\pgf@process{\tikz@first@point}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\tikz@second@point}%
\advance\pgf@x by-\pgf@xa%
\advance\pgf@y by-\pgf@ya%
\pgfpointnormalised{}%
\pgf@xc=\pgf@x%
\pgf@yc=\pgf@y%
\pgf@xb=-\pgf@x%
\pgf@yb=-\pgf@y%
{%
\pgftransformshift{\tikz@first@point}%
\pgftransformcm{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xc}%
{\pgfpointorigin}%
\pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@to@out}{\tikz@to@first@distance}}}%
\xdef\tikz@computed@start{(\the\pgf@x,\the\pgf@y)}%
}
{%
\pgftransformshift{\tikz@second@point}%
\pgftransformcm{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xc}%
{\pgfpointorigin}%
\pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@to@in}{\tikz@to@second@distance}}}%
\xdef\tikz@computed@end{(\the\pgf@x,\the\pgf@y)}%
}
\xdef\tikz@computed@path{
\tikz@tostart@tikz
.. controls \tikz@computed@start and \tikz@computed@end ..
\tikz@totarget@tikz}%
\endgroup
}
\tikzset{loop/.style= {to path={
\pgfextra{\let\tikztotarget=\tikztostart}
[looseness=8,min distance=5mm,every loop]
\tikz@to@curve@path
}}}
\tikzset{every loop/.style= {->,shorten >=1pt}}
\tikzset{loop right/.style= {right,out=15,in=-15,loop}}
\tikzset{loop above/.style= {above,out=105,in=75,loop}}
\tikzset{loop left/.style= {left,out=195,in=165,loop}}
\tikzset{loop below/.style= {below,out=285,in=255,loop}}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarytopaths.code.tex ====
==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//references.bib ====
@article{FujiiKasamiNinomiya1969,
author = {Fujii, M. and Kasami, T. and Ninomiya, K.},
title = {Optimal Sequencing of Two Equivalent Processors},
journal = {SIAM Journal on Applied Mathematics},
volume = {17}, number = {4}, pages = {784--789}, year = {1969},
doi = {10.1137/0117070},
}
@article{FujiiKasamiNinomiya1971Erratum,
author = {Fujii, M. and Kasami, T. and Ninomiya, K.},
title = {Erratum: {Optimal Sequencing of Two Equivalent Processors}},
journal = {SIAM Journal on Applied Mathematics},
volume = {20}, number = {1}, pages = {141}, year = {1971},
doi = {10.1137/0120018},
url = {https://epubs.siam.org/doi/epdf/10.1137/0120018}
}
@article{CG1972,
author = {Coffman, Jr., Edward G. and Graham, Ronald L.},
title = {Optimal Scheduling for Two-Processor Systems},
journal = {Acta Informatica},
volume = {1},
number = {3},
pages = {200--213},
year = {1972},
doi = {10.1007/BF00288685}
}
@article{Ullman1975,
author = {Ullman, Jeffrey D.},
title = {{NP}-Complete Scheduling Problems},
journal = {Journal of Computer and System Sciences},
volume = {10},
number = {3},
pages = {384--393},
year = {1975},
doi = {10.1016/S0022-0000(75)80008-0}
}
@book{GJ1979,
author = {Garey, Michael R. and Johnson, David S.},
title = {Computers and Intractability: A Guide to the Theory of {NP}-Completeness},
publisher = {W. H. Freeman},
year = {1979}
}
@article{GrahamLawlerLenstraRinnooyKan1979,
author = {Graham, R. L. and Lawler, E. L. and Lenstra, J. K. and Rinnooy Kan, A. H. G.},
title = {Optimization and Approximation in Deterministic Sequencing and Scheduling: a Survey},
journal = {Annals of Discrete Mathematics}, volume = {5}, pages = {287--326}, year = {1979},
doi = {10.1016/S0167-5060(08)70356-X},
url = {https://ir.cwi.nl/pub/18052},
}
@article{GareyJohnsonTarjanYannakakis1983,
author = {Garey, M. R. and Johnson, D. S. and Tarjan, R. E. and Yannakakis, M.},
title = {Scheduling Opposing Forests},
journal = {SIAM Journal on Algebraic and Discrete Methods},
volume = {4}, number = {1}, pages = {72--93}, year = {1983},
doi = {10.1137/0604011},
}
@article{DW1984,
author = {Dolev, Danny and Warmuth, Manfred K.},
title = {Scheduling Precedence Graphs of Bounded Height},
journal = {Journal of Algorithms},
volume = {5},
number = {1},
pages = {48--59},
year = {1984},
doi = {10.1016/0196-6774(84)90039-7}
}
@inproceedings{NSW2025,
author = {Nederlof, Jesper and Swennenhuis, C{\'e}line M. F. and W{\k{e}}grzycki, Karol},
title = {A Subexponential Time Algorithm for Makespan Scheduling of Unit Jobs with Precedence Constraints},
booktitle = {Proceedings of the 2025 Annual ACM-SIAM Symposium on Discrete Algorithms (SODA)},
year = {2025},
pages = {535--552},
publisher = {Society for Industrial and Applied Mathematics},
doi = {10.1137/1.9781611978322.16}
}
@inproceedings{LeveyRothvoss2016,
author = {Levey, Elaine and Rothvo{\ss}, Thomas},
title = {A {$(1+\epsilon)$}-Approximation for Makespan Scheduling with Precedence Constraints Using {LP} Hierarchies},
booktitle = {Proceedings of the 48th Annual ACM SIGACT Symposium on Theory of Computing},
series = {STOC '16},
year = {2016},
pages = {168--177},
publisher = {Association for Computing Machinery},
doi = {10.1145/2897518.2897532},
url = {https://doi.org/10.1145/2897518.2897532}
}
@inproceedings{Garg2018,
author = {Garg, Shashwat},
title = {Quasi-{PTAS} for Scheduling with Precedences Using {LP} Hierarchies},
booktitle = {45th International Colloquium on Automata, Languages, and Programming (ICALP 2018)},
editor = {Chatzigiannakis, Ioannis and Kaklamanis, Christos and Marx, D{\'a}niel and Sannella, Donald},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
volume = {107},
year = {2018},
pages = {59:1--59:13},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
doi = {10.4230/LIPIcs.ICALP.2018.59},
url = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ICALP.2018.59}
}
@inproceedings{Li2021,
author = {Li, Shi},
title = {Towards {PTAS} for Precedence Constrained Scheduling via Combinatorial Algorithms},
booktitle = {Proceedings of the 2021 ACM-SIAM Symposium on Discrete Algorithms (SODA)},
editor = {Marx, D{\'a}niel},
year = {2021},
pages = {2991--3010},
publisher = {Society for Industrial and Applied Mathematics},
doi = {10.1137/1.9781611976465.178},
url = {https://doi.org/10.1137/1.9781611976465.178}
}
@inproceedings{DasWiese2022,
author = {Das, Syamantak and Wiese, Andreas},
title = {A Simpler {QPTAS} for Scheduling Jobs with Precedence Constraints},
booktitle = {30th Annual European Symposium on Algorithms (ESA 2022)},
editor = {Chechik, Shiri and Navarro, Gonzalo and Rotenberg, Eva and Herman, Grzegorz},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
volume = {244},
year = {2022},
pages = {40:1--40:11},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
doi = {10.4230/LIPIcs.ESA.2022.40},
url = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ESA.2022.40}
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//references.bib ====