\csname PSTricksAddLoaded\endcsname
\let\PSTricksAddLoaded\endinput
\ifx\PSTricksLoaded\endinput\else\def\fileversion{1.20}
\def\filedate{2008/01/01}
\csname PSTricksLoaded\endcsname
\let\PSTricksLoaded\endinput
\edef\PstAtCode{\the\catcode`\@}
\catcode`\@=11\relax
\expandafter\ifx\csname @latexerr\endcsname\relax
\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
  #1\endcsname\relax#2\else#3\fi}
\def\@namedef#1{\expandafter\def\csname #1\endcsname}
\def\@nameuse#1{\csname #1\endcsname}
\def\@eha{Your command was ignored.^^J
  Type \space I <command> <return> \space to replace
  it with another command,^^J
  or \space <return> \space to continue without it.}
\def\@spaces{\space\space\space\space}
\def\typeout#1{\immediate\write\@unused{#1}}
\alloc@7\write\chardef\sixt@@n\@unused
\def\@empty{}
\def\@gobble#1{}
\def\@nnil{\@nil}
\def\@ifnextchar#1#2#3{\let\@tempe#1\def\@tempa{#2}\def\@tempb{#3}\futurelet\@tempc\@ifnch}
\def\@ifnch{\ifx\@tempc\@sptoken \let\@tempd\@xifnch
  \else\ifx\@tempc\@tempe \let\@tempd\@tempa \else \let\@tempd\@tempb \fi
  \fi
  \@tempd}
\begingroup
\def\:{\global\let\@sptoken= } \:
\def\:{\@xifnch} \expandafter\gdef\: {\futurelet\@tempc\@ifnch}
\endgroup
\fi
\def\ps@ifnextchar#1#2#3{\let\reserved@d= #1\def\reserved@a{#2}\def\reserved@b{#3}\futurelet\@let@token\ps@ifnch}
\def\ps@ifnch{\ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi
  \reserved@b
}
\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz)}
\def\@pstrickserr#1#2{\begingroup
  \newlinechar`\^^J
  \edef\pst@tempc{#2}\expandafter\errhelp\expandafter{\pst@tempc}\typeout{PSTricks error. \space See User's Guide for further information.^^J
    \@spaces\@spaces\@spaces\@spaces
    Type \space H <return> \space for immediate help.}\errmessage{#1}\endgroup}
\def\@ehpa{Your command was ignored. Default value substituted.^^J
  Type \space <return> \space to procede.}
\def\@ehpb{Your command was ignored. Will recover best I can.^^J
  Type \space <return> \space to procede.}
\def\@ehpc{You better fix this before proceding.^^J
  See the PSTricks User's Guide or ask your system administrator for help.^^J
  Type \space X <return> \space to quit.}
\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb}
\newdimen\pst@dima
\newdimen\pst@dimb
\newdimen\pst@dimc
\newdimen\pst@dimd
\newdimen\pst@dimg
\newdimen\pst@dimh
\newbox\pst@hbox
\newbox\pst@boxg
\newcount\pst@cnta
\newcount\pst@cntb
\newcount\pst@cntc
\newcount\pst@cntd
\newcount\pst@cntg
\newcount\pst@cnth
\newif\if@pst
\newtoks\pst@toks
\newif\if@star
\def\pst@ifstar#1{\@ifnextchar*{\@startrue\def\next*{#1}\next}{\@starfalse#1}}
\def\pst@expandafter#1#2{\def\next{#1}\edef\@tempa{#2}\ifx\@tempa\@empty
    \@pstrickserr{Unexpected empty argument!}\@ehpb
    \def\@tempa{\@empty}\fi
  \expandafter\next\@tempa}
\def\pst@dimtonum#1#2{\edef#2{\pst@@dimtonum#1}}
\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1}
{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}}
\def\pst@pyth#1#2#3{\begingroup
    \pst@dima=#1\relax
    \ifnum\pst@dima<\z@\pst@dima=-\pst@dima\fi  \pst@dimb=#2\relax
    \ifnum\pst@dimb<\z@\pst@dimb=-\pst@dimb\fi  \advance\pst@dimb\pst@dima         \ifnum\pst@dimb=\z@
      \global\pst@dimg=\z@             \else
      \multiply\pst@dima 8\relax              \pst@@divide\pst@dima\pst@dimb     \advance\pst@dimg -4pt            \multiply\pst@dimg 2
      \pst@dimtonum\pst@dimg\pst@tempa
      \pst@dima=\pst@tempa\pst@dimg           \advance\pst@dima 64pt         \divide\pst@dima 2\relax                      \pst@dimd=7pt                \pst@@pyth\pst@@pyth\pst@@pyth            \pst@dimtonum\pst@dimd\pst@tempa
      \pst@dimg=\pst@tempa\pst@dimb
      \global\divide\pst@dimg 8             \fi
  \endgroup
  #3=\pst@dimg}
\def\pst@@pyth{\pst@@divide\pst@dima\pst@dimd
  \advance\pst@dimd\pst@dimg
  \divide\pst@dimd 2\relax}
\iffalse
\def\pst@pyth#1#2#3{\ifdim#1>#2\pst@@pyth#1#2#3\else\pst@@pyth#2#1#3\fi}
\def\pst@@pyth#1#2#3{\ifdim4#1>9#2#3=#1\advance#3 .2122#2\else
    #3=.8384#1\advance#3 .5758#2\fi }
\fi
\def\pst@divide#1#2#3{\pst@@divide{#1}{#2}\pst@dimtonum\pst@dimg{#3}}
\def\pst@@divide#1#2{\pst@dimg=#1\relax
  \pst@dimh=#2\relax
  \pst@cntg=\pst@dimh
  \pst@cnth=67108863
  \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide
  \divide\pst@dimg\pst@cntg }
\def\pst@@@divide{\ifnum
    \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cnth
      \multiply\pst@dimg\sixt@@n
    \else
      \divide\pst@cntg\sixt@@n
    \fi }
\def\pst@configerr#1{\@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc}
\def\pstVerb#1{\pst@configerr\pstVerb}
\def\pstverb#1{\pst@configerr\pstverb}
\def\pstverbscale{\pst@configerr\pstverbscale}
\def\pstrotate{\pst@configerr\pstrotate}
\def\pstheader#1{\pst@configerr\pstheader}
\def\pstdriver{\pst@configerr\pstdriver}
\@ifundefined{pstcustomize}{\def\pstcustomize{\endinput\let\pstcustomize\relax}}{}


\def\pstdriver{Rokicki's dvips}
{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}}  \def\pstunit{1bp}\def\pstVerb#1{\special{ps: #1}}
\def\pstverbscale{SDict begin normalscale end}
\ifx\textsuperscript\@undefined
   \def\pstheader#1{\special{header=#1}}
\else
  \ifx\Gin@PS@file@header\@undefined
    \def\pstheader#1{\AtBeginDvi{\special{header=#1}}}
  \else
    \let\pstheader\Gin@PS@file@header
  \fi
\fi
\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET}




%
 \newif\ifPSTricks
\PSTrickstrue
\def\PSTricksOff{\def\pstheader##1{}\def\pstverb##1{}\def\pstVerb##1{}\PSTricksfalse }
\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{}
\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{}
\pstheader{pstricks.pro}
\pstheader{pst-algparser.pro}
\def\pst@dict{tx@Dict begin }
\def\pst@theheaders{pstricks.pro pst-algparser.pro}
\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}}
\def\tx@Atan{Atan }
\def\tx@Div{Div }
\def\tx@NET{NET }
\def\tx@Pyth{Pyth }
\def\tx@PtoC{PtoC }
\def\tx@PathLength@{PathLength@ }
\def\tx@PathLength{PathLength }
\pst@dimg=\pstunit\relax
\ifdim\pst@dimg=1bp
\def\pst@stp{.996264 dup scale}
\else
\edef\pst@stp{1 \pst@@dimtonum\pst@dimg\space div dup scale}
\fi
\def\tx@STP{STP }
\def\tx@STV{STV }
\pst@def{UserCoor}< \pst@number\psyunit div exch \pst@number\psxunit div exch >
\pst@def{ScreenCoor}< \pst@number\psyunit mul exch \pst@number\psxunit mul exch >
\def\pst@number#1{\pst@@dimtonum#1\space}
\def\pst@checknum#1#2{\edef\next{#1}\ifx\next\@empty
    \let\pst@num\z@
  \else
    \expandafter\pst@@checknum\next..\@nil
  \fi
  \ifnum\pst@num=\z@
    \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa
    \def#2{0 }\else
    \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.\expandafter\@gobble\the\pst@cnth\space}\fi}
\def\pst@@checknum{\@ifnextchar-{\let\pst@num\tw@\expandafter\pst@@@checknum\@gobble}{\let\pst@num\@ne\pst@@@checknum}}
\def\pst@@@checknum#1.#2.#3\@nil{\afterassignment\pst@@@@checknum\pst@cntg=0#1\relax\@nil
\afterassignment\pst@@@@checknum\pst@cnth=1#2\relax\@nil}
\def\pst@@@@checknum#1\relax\@nil{\ifx\@nil#1\@nil\else\let\pst@num\z@\fi}
\def\pst@getnumii#1 #2 #3\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph}
\def\pst@getnumiii#1 #2 #3 #4\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi}
\def\pst@getnumiv#1 #2 #3 #4 #5\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi
\pst@checknum{#4}\pst@tempj}
\def\pst@getdimnum#1 #2 #3\@nil{\pssetlength\pst@dimg{#1}\pst@checknum{#2}\pst@tempg }
\def\pst@getscale#1#2{\edef\pst@tempg{#1}\ifx\pst@tempg\@none
    \def#2{}\else
    \pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil
    \ifdim\pst@tempg\p@=\z@
      \@pstrickserr{Bad scaling argument `#1'}\@ehpa
      \def#2{}\else
      \ifdim\pst@temph\p@=\z@
        \@pstrickserr{Bad scaling argument `#1'}\@ehpa
        \def#2{}\else
        \edef#2{\pst@tempg\space \pst@temph\space scale }\fi
    \fi
  \fi }
\def\pst@getint#1#2{\pst@cntg=#1\relax
  \edef#2{\the\pst@cntg\space}}
\begingroup
\catcode`\{=12
\catcode`\}=12
\catcode`\[=1
\catcode`\]=2
\gdef\pslbrace[{ ]
\gdef\psrbrace[} ]
\endgroup
\def\@newcolor#1#2{\expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}\expandafter\edef\csname\string\color@#1\endcsname{#2}\ignorespaces}
\def\pst@color#1{\def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}
\def\pst@endcolor{\pstVerb{\pst@currentcolor}}
\def\pst@currentcolor{0 setgray}
\def\altcolormode{\def\pst@color##1{\pstVerb{gsave ##1}\aftergroup\pst@endcolor}\def\pst@endcolor{\pstVerb{\pst@grestore}}}
\def\pst@grestore{currentpoint
  matrix currentmatrix
  currentfont
  grestore
  setfont
  setmatrix
  moveto
}
\def\pst@usecolor#1{\csname\string\color@#1\endcsname\space}
\def\newgray#1#2{\pst@checknum{#2}\pst@tempg
  \@newcolor{#1}{\pst@tempg setgray}}
\def\newrgbcolor#1#2{\pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}}
\def\newhsbcolor#1#2{\pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}}
\def\newcmykcolor#1#2{\pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}}
\newgray{black}{0}
\newgray{darkgray}{.25}
\newgray{gray}{.5}
\newgray{lightgray}{.75}
\newgray{white}{1}
\newrgbcolor{red}{1 0 0}
\newrgbcolor{green}{0 1 0}
\newrgbcolor{blue}{0 0 1}
\newrgbcolor{yellow}{1 1 0}
\newrgbcolor{cyan}{0 1 1}
\newrgbcolor{magenta}{1 0 1}
\def\psset#1{\@psset#1,\@nil\ignorespaces}
\def\@psset#1,{\@@psset#1==\@nil \@ifnextchar\@nil{\@gobble}{\@psset}}
\def\@@psset#1=#2=#3\@nil{\@ifundefined{psset@#1}{\@pstrickserr{Graphics parameter `#1' not defined.}\@ehpa}{\@nameuse{psset@#1}{#2}}}\def\psset@style#1{\@ifundefined{pscs@#1}{\@pstrickserr{Custom style `#1' undefined}\@ehpa}{\@nameuse{pscs@#1}}}
\def\newpsstyle#1#2{\@namedef{pscs@#1}{\def\pst@tempA{#2}\ifx\pst@tempA\@empty\else\psset{#2}\fi}}
\def\addto@psstyle#1#2{\pst@toks=\expandafter{#1#2}\edef#1{\the\pst@toks}}
\def\addtopsstyle#1#2{\def\pst@tempA{#2}\ifx\pst@tempA\@empty\else
    \@ifundefined{pscs@#1}{\newpsstyle{#1}{#2}}{\expandafter\addto@psstyle\csname pscs@#1\endcsname{\psset{#2}}}\fi}
\def\@none{none}
\def\pst@getcolor#1#2{\@ifundefined{\string\color@#1}{\@pstrickserr{Color `#1' not defined}\@eha}{\edef#2{#1}}}
\newdimen\psunit \psunit 1cm
\newdimen\psxunit \psxunit 1cm
\newdimen\psyunit \psyunit 1cm
\let\psrunit\psunit
\def\pstunit@off{\let\@psunit\ignorespaces\ignorespaces}
\def\pssetlength#1#2{\let\@psunit\psunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\psaddtolength#1#2{\let\@psunit\psunit
  \afterassignment\pstunit@off
  \advance#1 #2\@psunit }
\def\pssetxlength#1#2{\let\@psunit\psxunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\pssetylength#1#2{\let\@psunit\psyunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\psset@unit#1{\pssetlength\psunit{#1}\psxunit=\psunit
  \psyunit=\psunit }
\def\psset@runit#1{\pssetlength\psrunit{#1}}
\def\psset@xunit#1{\pssetxlength\psxunit{#1}}
\def\psset@yunit#1{\pssetylength\psyunit{#1}}
\def\psset@PstDebug#1{\pst@getint{#1}{\Pst@Debug}}\psset{PstDebug=0}
\def\pst@getlength#1#2{\pssetlength\pst@dimg{#1}\edef#2{\pst@number\pst@dimg}}
\def\pst@@getlength#1#2{\pssetlength\pst@dimg{#1}\edef#2{\number\pst@dimg sp}}
\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor}
\def\pst@coor{0 0 }
\def\pst@getcoors#1#2{\def\pst@aftercoors{\addto@pscode{#1 \pst@coors }#2}\def\pst@coors{}\pst@@getcoors }
\def\pst@@getcoors(#1){\pst@@getcoor{#1}\edef\pst@coors{\pst@coor\pst@coors}\@ifnextchar({\pst@@getcoors}{\pst@aftercoors}}
\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle}
\def\pst@angle{0 }
\def\cartesian@coor#1,#2,#3\@nil{\pssetxlength\pst@dimg{#1}\pssetylength\pst@dimh{#2}\edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}
\def\NormalCoor{\def\pst@@getcoor##1{\pst@expandafter\cartesian@coor{##1},\relax,\@nil}\def\pst@@getangle##1{\pst@checknum{##1}\pst@angle \edef\pst@angle{\pst@angle \pst@angleunit}}\def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@cartesian}}
\NormalCoor
\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}}
\def\@degrees[#1]{\pst@checknum{#1}\pst@tempg
  \edef\pst@angleunit{360 \pst@tempg div mul }\ignorespaces}
\def\radians{\def\pst@angleunit{57.2956 mul }}
\def\pst@angleunit{}
\def\SpecialCoor{\def\pst@@getcoor##1{\begingroup \pst@activecoor \xdef\pst@tempg{##1}\endgroup \expandafter\special@coor\pst@tempg||\@nil }\def\pst@@getangle##1{\begingroup \pst@activecoor \xdef\pst@tempg{##1}\endgroup \expandafter\special@angle\pst@tempg\@empty)\@nil }\def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}}
\begingroup
\catcode`\|=13
\catcode`\;=13
\catcode`\!=13
\catcode`\*=13
\gdef\pst@activecoor{\def|{\string|}\def;{\string;}\def!{\string!}\def*{\string*}}
\endgroup
\def\special@coor#1|#2|#3\@nil{\ifx#3|\relax
    \mixed@coor{#1}{#2}\else
    \special@@coor#1;;\@nil
  \fi }
\def\special@@coor#1{\ifcat#1a\relax \def\next{\node@coor#1}\else
    \ifx#1[\relax \def\next{\Node@coor[}\else
      \ifx#1!\relax \def\next{\raw@coor}\else
        \ifx#1*\relax \def\next{\alg@coor}\else
          \def\next{\special@@@coor#1}\fi
      \fi
    \fi
  \fi
  \next }
\def\special@@@coor#1;#2;#3\@nil{\ifx#3;\relax
    \polar@coor{#1}{#2}\else
    \cartesian@coor#1,\relax,\@nil
  \fi }
\def\mixed@coor#1#2{\begingroup \special@@coor#1;;\@nil \let\pst@tempa\pst@coor \special@@coor#2;;\@nil \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }\endgroup \let\pst@coor\pst@tempg }
\def\polar@coor#1#2{\pssetlength\pst@dimb{#1}\pst@@getangle{#2}\edef\pst@coor{\pst@number\pst@dimb \pst@angle \tx@PtoC}}
\def\raw@coor#1;#2\@nil{\edef\pst@coor{#1 \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
\def\alg@coor#1 #2;#3\@nil{\edef\pst@coor{/x #1 def 
    /Func (#2) AlgParser cvx def    
    x Func 
    \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
\def\node@coor#1\@nil{\@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps
  \def\pst@coor{0 0 }}
\def\Node@coor{\node@coor}
\def\special@angle#1#2)#3\@nil{\ifx!#1\relax
\edef\pst@angle{#2 \pst@angleunit}\else
\ifx(#1\relax
\pst@@getcoor{#2}\edef\pst@angle{\pst@coor exch \tx@Atan}\else
\pst@checknum{#1#2}\pst@angle
\edef\pst@angle{\pst@angle \pst@angleunit}\fi
\fi}
\def\Cartesian{\def\cartesian@coor##1,##2,##3\@nil{\pssetxlength\pst@dimg{##1}\pssetylength\pst@dimh{##2}\edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}\@ifnextchar({\Cartesian@}{}}
\def\Cartesian@(#1,#2){\pssetxlength\psxunit{#1}\pssetylength\psyunit{#2}\ignorespaces }
\def\Polar{\def\psput@cartesian{\psput@special}\def\cartesian@coor##1,##2,##3\@nil{\polar@coor{##1}{##2}}}\def\psset@origin#1{\pst@@getcoor{#1}\edef\psk@origin{\pst@coor T }}
\def\psk@origin{}
\newif\ifswapaxes
\def\psset@swapaxes#1{\@nameuse{@pst#1}\if@pst\def\psk@swapaxes{-90 rotate -1 1 scale }\else\def\psk@swapaxes{}\fi }
\psset@swapaxes{false}
\newif\ifshowpoints
\def\psset@showpoints#1{\@nameuse{showpoints#1}}
\psset@showpoints{false}
\let\pst@setrepeatarrowsflag\relax
\def\psset@border#1{\pst@getlength{#1}\psk@border
\pst@setrepeatarrowsflag}
\psset@border{0pt}
\def\psset@bordercolor#1{\pst@getcolor{#1}\psbordercolor}
\psset@bordercolor{white}
\newif\ifpsdoubleline
\def\psset@doubleline#1{\@nameuse{psdoubleline#1}\pst@setrepeatarrowsflag}
\psset@doubleline{false}
\def\psset@doublesep#1{\def\psdoublesep{#1}}
\psset@doublesep{1.25\pslinewidth}
\def\psset@doublecolor#1{\pst@getcolor{#1}\psdoublecolor}
\psset@doublecolor{white}
\newif\ifpsshadow
\def\psset@shadow#1{\@nameuse{psshadow#1}\pst@setrepeatarrowsflag}
\psset@shadow{false}
\def\psset@shadowsize#1{\pst@getlength{#1}\psk@shadowsize}
\psset@shadowsize{3pt}
\def\psset@shadowangle#1{\pst@getangle{#1}\psk@shadowangle}
\psset@shadowangle{-45}
\def\psset@shadowcolor#1{\pst@getcolor{#1}\psshadowcolor}
\psset@shadowcolor{darkgray}
\def\pst@repeatarrowsflag{\z@}
\def\pst@setrepeatarrowsflag{\edef\pst@repeatarrowsflag{\ifdim\psk@border\p@>\z@ 1\else\ifpsdoubleline 1\else
      \ifpsshadow 1\else \z@\fi\fi\fi}}
\def\psls@none{}
\newdimen\pslinewidth
\def\psset@linewidth#1{\pssetlength\pslinewidth{#1}}
\psset@linewidth{.8pt}
\def\psset@linecolor#1{\pst@getcolor{#1}\pslinecolor}
\psset@linecolor{black}
\def\psls@solid{\psk@linecap\space setlinecap stroke }
\def\psset@linecap#1{\pst@getint{#1}\psk@linecap}\psset@linecap{0}\def\psset@linejoin#1{\pst@getint{#1}\psk@linejoin}\def\tx@setlinejoin{\psk@linejoin\space setlinejoin }\psset@linejoin{0}\def\pst@missing{\z@
  \@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa}
\def\pst@empty{\z@}
\def\psset@dash#1{\pst@expandafter\psset@@dash{#1} {\pst@empty} {\pst@empty} {\pst@missing} {\pst@missing} {}\@nil
  \edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh 
                 \pst@number\pst@dimc \pst@number\pst@dimd}}
\def\psset@@dash#1 #2 #3 #4 #5\@nil{\pssetlength\pst@dimg{#1}\pssetlength\pst@dimh{#2}\pssetlength\pst@dimc{#3}\pssetlength\pst@dimd{#4}}
\psset@dash{5pt 3pt 0pt 0pt}\newif\ifpsdashadjust
\def\psset@dashadjust#1{\@nameuse{psdashadjust#1}}
\psset@dashadjust{true}
\def\tx@DashLine{DashLine }
\def\psls@dashed{\psk@linecap\space setlinecap
\ifpsdashadjust
\psk@dash \@ifundefined{pst@linetype}{2}{\pst@linetype}\space \tx@DashLine
  \else
    [ \psk@dash ] 0 setdash stroke
  \fi}
\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep}
\psset@dotsep{3pt}
\def\tx@DotLine{DotLine }
\def\psls@dotted{\ifpsdashadjust
    \psk@dotsep \pst@linetype\space \tx@DotLine
  \else
    [ 0 \psk@dotsep CLW add ] 0 setdash 1 setlinecap stroke
  \fi }
\def\psset@linestyle#1{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\edef\pslinestyle{#1}}}
\psset@linestyle{solid}
\def\psset@linecap#1{\def\psk@linecap{0}\ifnum#1>-1
    \ifnum#1<3
      \pst@getint{#1}\psk@linecap \fi\fi }
\psset{linecap=0}
\def\psset@fillcolor#1{\pst@getcolor{#1}\psfillcolor}
\psset@fillcolor{white}
\def\psset@strokeopacity#1{\pst@checknum{#1}\psk@strokeopacityalpha }\psset@strokeopacity{1}
\def\psset@opacity#1{\pst@checknum{#1}\psk@opacityalpha }\psset@opacity{1}
\def\psset@shapealpha#1{\pst@checknum{#1}\psk@shapealpha }
\psset@shapealpha{0.6}
\def\psset@blendmode#1{\pst@getint{#1}\psk@blendmode }\psset@blendmode{0}
\def\psfs@none{}
\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor \psk@opacityalpha .setopacityalpha fill }}
\def\psfs@eofill{\pst@fill{\pst@usecolor\psfillcolor \psk@opacityalpha .setopacityalpha eofill}}
\def\psfs@shape{\pst@fill{
    \pst@usecolor\psfillcolor 
    \ifcase\psk@blendmode
      /Normal \or
      /Compatible \or
      /Screen \or
      /Multiply \fi
    .setblendmode \psk@shapealpha .setshapealpha fill }}
\def\psset@hatchwidth#1{\pst@getlength{#1}\psk@hatchwidth}
\psset@hatchwidth{.8pt}
\def\psset@hatchsep#1{\pst@getlength{#1}\psk@hatchsep}
\psset@hatchsep{4pt}
\def\psset@hatchcolor#1{\pst@getcolor{#1}\pshatchcolor}
\psset@hatchcolor{black}
\def\psset@hatchangle#1{\pst@getangle{#1}\psk@hatchangle}
\psset@hatchangle{45}
\def\psset@hatchsepinc#1{\pst@getlength{#1}\psk@hatchsepinc}
\def\psset@hatchwidthinc#1{\pst@getlength{#1}\psk@hatchwidthinc}
\psset@hatchwidthinc{0pt}
\psset@hatchsepinc{0pt}
\def\pst@linefill{\psk@hatchangle rotate
  \psk@hatchwidth SLW
  \pst@usecolor\pshatchcolor
  \psk@hatchsep 
  \psk@hatchsepinc
  \psk@hatchwidthinc
  \tx@LineFill }
\def\psfs@vlines{\pst@fill\pst@linefill}
\@namedef{psfs@vlines*}{\psfs@solid \psfs@vlines}
\def\psfs@hlines{\pst@fill{90 rotate \pst@linefill}}
\@namedef{psfs@hlines*}{\psfs@solid \psfs@hlines}
\def\psfs@crosshatch{\psfs@vlines \psfs@hlines}
\@namedef{psfs@crosshatch*}{\psfs@solid \psfs@vlines \psfs@hlines}
\def\tx@LineFill{LineFill }
\def\psset@fillstyle#1{\edef\pst@tempg{#1}\def\pst@temph{none}\ifx\pst@tempg\pst@temph
     \let\psk@fillstyle\relax
  \else
    \@ifundefined{psfs@#1}{\@pstrickserr{Undefined fill style: `#1'}\@eha}{\edef\psk@fillstyle{\expandafter\noexpand\csname psfs@#1\endcsname}}\fi }
\def\psset@addfillstyle#1{\@ifundefined{psfs@#1}{\@pstrickserr{Undefined fill style: `#1'}\@eha}{\edef\psk@fillstyle{\expandafter\noexpand\psk@fillstyle
      \expandafter\noexpand\csname psfs@#1\endcsname}}}
\psset@fillstyle{none}
\def\psset@arrows#1{\begingroup
    \pst@activearrows
    \xdef\pst@tempg{#1}\endgroup
  \expandafter\psset@@arrows\pst@tempg\@empty-\@empty\@nil
  \if@pst\else
    \@pstrickserr{Bad arrows specification: #1}\@ehpa
  \fi }
\def\psset@@arrows#1-#2\@empty#3\@nil{\@psttrue
  \def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}\expandafter\next\pst@arrowtable,#1-#1,\@nil
  \@ifundefined{psas@\pst@tempg}{\@pstfalse\def\psk@arrowA{}}{\let\psk@arrowA\pst@tempg}\@ifundefined{psas@#2}{\@pstfalse\def\psk@arrowB{}}{\def\psk@arrowB{#2}}}
\def\psk@arrowA{}
\def\psk@arrowB{}
\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,<D-D>,<D<D-D>D>} \begingroup
  \catcode`\<=13
  \catcode`\>=13
  \catcode`\|=13
  \gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
\endgroup
\def\tx@BeginArrow{BeginArrow }
\def\tx@EndArrow{EndArrow }
\def\psset@arrowscale#1{\pst@@arrowscale@i#1 \@nil \pst@getscale{\pst@arrowscale}\psk@arrowscale}\def\pst@@arrowscale@i#1 #2\@nil{\edef\pst@arrowscale{#1}}\psset@arrowscale{1}
\def\psset@arrowsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
  \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}}
\psset@arrowsize{1.5pt 2}
\def\psset@arrowlength#1{\pst@checknum{#1}\psk@arrowlength}
\psset@arrowlength{1.4}
\def\psset@arrowinset#1{\pst@checknum{#1}\psk@arrowinset}\psset@arrowinset{.4}
\def\tx@Arrow{ \psk@strokeopacityalpha .setopacityalpha Arrow }\def\tx@ArrowD{ \psk@strokeopacityalpha .setopacityalpha ArrowD }\@namedef{psas@<|}{ 
    \psk@tbarsize\space \tx@Tbar
    0 CLW 2 div T
    newpath
    true 
    \psk@arrowinset 
    \psk@arrowlength 
    \psk@arrowsize 
    \tx@Arrow 
}
\def\tx@BracketOut{BracketOut }
\@namedef{psas@[}{/BracketOut {CLW mul add dup CLW sub 2 div
/x ED mul neg
  /y ED
  /z CLW 2 div def
  x neg y moveto
  x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def
  \psk@bracketlength\space \psk@tbarsize\space \tx@BracketOut
}
\def\tx@RoundBracketOut{ \psk@strokeopacityalpha .setopacityalpha RoundBracketOut }\@namedef{psas@(}{/RoundBracketOut {CLW mul add dup 2 div
/x ED mul neg
    /y ED
    /mtrx CM def
    0 CLW
    2 div T x y mul 0 ne { x y scale } if
    1 1 moveto
    .85 .5 .35 0 0 0 curveto
    -.35 0 -.85 .5 -1 1 curveto
    mtrx setmatrix stroke 0 CLW moveto } def
  \psk@rbracketlength\space \psk@tbarsize\space \tx@RoundBracketOut
}
\@namedef{psas@>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow }
\@namedef{psas@>>}{false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  0 h T gsave newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  CP grestore CP newpath moveto 2 copy L stroke moveto
}
\@namedef{psas@<}{true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
\@namedef{psas@<<}{
  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  CP newpath moveto 0 a neg L stroke 0 h neg T
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\@namedef{psas@D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD }\@namedef{psas@D>D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  0 h Inset sub T gsave newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  CP grestore moveto 
}
\@namedef{psas@<D}{ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
}
\@namedef{psas@<D<D}{ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  CP newpath moveto 0 a neg L stroke 0 h neg T
  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
}
\def\psset@tbarsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
  \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}}
\psset@tbarsize{2pt 5}
\def\tx@Tbar{Tbar }
\@namedef{psas@|}{\psk@tbarsize \tx@Tbar}
\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar}
\@namedef{psas@>|}{\psk@tbarsize \tx@Tbar
  0 CLW 2 div T
  newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\@namedef{psas@>|*}{0 CLW -2 div T
  \psk@tbarsize \tx@Tbar
  0 CLW 2 div T
  newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|}
\def\psset@bracketlength#1{\pst@checknum{#1}\psk@bracketlength}
\psset@bracketlength{.15}
\def\tx@Bracket{Bracket }
\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
\def\psset@rbracketlength#1{\pst@checknum{#1}\psk@rbracketlength}
\psset@rbracketlength{.15}
\def\tx@RoundBracket{RoundBracket }
\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket}
\def\psas@c{1 \psas@@c}
\def\psas@cc{0 CLW 2 div T 1 \psas@@c}
\def\psas@C{2 \psas@@c}
\def\psas@@c{setlinecap
  0 0 moveto
0 0.1 L stroke
  0 0 moveto
}
\def\psas@{}
\psset@arrows{-}
\def\tx@SD{ \psk@opacityalpha .setopacityalpha SD }
\def\tx@EndDot{EndDot }
\def\psas@oo{{\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot}
\def\psas@o{{\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot}
\@namedef{psas@**}{{false} true \psk@dotsize \tx@EndDot}
\@namedef{psas@*}{{false} false \psk@dotsize \tx@EndDot}
\def\pst@par{}
\def\addto@par#1{\ifx\pst@par\@empty
    \def\pst@par{#1}\else
    \expandafter\def\expandafter\pst@par\expandafter{\pst@par,#1}\fi }
\def\addbefore@par#1{\ifx\pst@par\@empty
    \def\pst@par{#1}\else
    \toks@{#1}\pst@toks\expandafter{\pst@par}\edef\pst@par{\the\toks@,\the\pst@toks}\fi }
\def\use@par{\ifx\pst@par\@empty\else
    \expandafter\@psset\pst@par,\@nil
    \def\pst@par{}\fi }
\def\pst@object#1{\pst@ifstar{\@ifnextchar[{\pst@@object{#1}}{\def\pst@par{}\@nameuse{#1@i}}}}
\def\pst@@object#1[#2]{\def\pst@par{#2}\@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}}
\def\newpsobject#1#2#3{\@ifundefined{#2@i}{\@pstrickserr{Graphics object `#2' not defined}\@eha}{\@namedef{#1}{\pst@object{#1}}\@namedef{#1@i}{\addbefore@par{#3}\@nameuse{#2@i}}}\ignorespaces}
\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
\def\pst@@getarrows#1#2{\def\pst@tempa{#2}\ifx\pst@tempa\@empty\addto@par{arrows=-}\else\addto@par{arrows=#2}\fi#1}
\def\begin@ClosedObj{\leavevmode
  \pst@killglue
  \begingroup
    \use@par
    \solid@star
    \ifpsdoubleline \pst@setdoublesep \fi
    \init@pscode }
\def\end@ClosedObj{\ifpsshadow \pst@closedshadow \fi
  \ifdim\psk@border\p@>\z@ \pst@addborder \fi
  \psk@fillstyle
  \pst@stroke
  \ifpsdoubleline \pst@doublestroke \fi
  \ifshowpoints
\pst@OpenShowPoints
\fi
  \use@pscode
  \endgroup
  \ignorespaces }
\def\begin@OpenObj{\begin@ClosedObj
  \let\pst@linetype\pst@arrowtype
  \pst@addarrowdef }
\def\begin@AltOpenObj{\begin@ClosedObj
  \def\pst@repeatarrowsflag{\z@}\def\pst@linetype{0}}
\def\end@OpenObj{\ifpsshadow \pst@openshadow \fi
  \ifdim\psk@border\p@>\z@ \pst@addborder \fi
  \psk@fillstyle
  \pst@stroke
  \ifpsdoubleline \pst@doublestroke \fi
  \ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi
  \ifshowpoints \pst@OpenShowPoints \fi
  \use@pscode
  \endgroup
  \ignorespaces}
\def\begin@SpecialObj{\leavevmode
  \pst@killglue
  \begingroup
  \use@par
  \init@pscode}
\def\end@SpecialObj{\use@pscode
  \endgroup
  \ignorespaces}
\def\pst@code{}\def\init@pscode{\addto@pscode{\pst@number\pslinewidth SLW
    \pst@usecolor\pslinecolor}}
\def\addto@pscode#1{\xdef\pst@code{\pst@code#1\space}}
\def\use@pscode{\pstverb{
    \pst@dict
    \tx@STP
    \pst@newpath
    \psk@origin
    \psk@swapaxes
    \pst@code
    end
  }\gdef\pst@code{}}
\def\pst@newpath{newpath }
\def\pst@@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@@killglue\fi}
\def\KillGlue{\let\pst@killglue\pst@@killglue}
\def\DontKillGlue{\let\pst@killglue\relax}
\DontKillGlue
\def\solid@star{\if@star
    \pslinewidth=\z@
    \psdoublelinefalse
    \def\pslinestyle{none}\def\psk@fillstyle{\psfs@solid}\let\psfillcolor\pslinecolor
  \fi}
\def\pst@setdoublesep{\pst@getlength\psdoublesep\psdoublesep
\pslinewidth=2\pslinewidth
\advance\pslinewidth\psdoublesep\p@
\let\pst@setdoublesep\relax}
\def\tx@Shadow{Shadow }
\def\pst@closedshadow{\addto@pscode{gsave
    \psk@shadowsize \psk@shadowangle \tx@PtoC
    \tx@Shadow
    \pst@usecolor\psshadowcolor
    gsave fill grestore
    stroke
    grestore
    gsave
    \pst@usecolor\psfillcolor
    gsave fill grestore
    stroke
    grestore}}
\def\pst@openshadow{\addto@pscode{gsave
    \psk@shadowsize \psk@shadowangle \tx@PtoC
    \tx@Shadow
    \pst@usecolor\psshadowcolor
    \ifx\psk@fillstyle\relax\else
      gsave fill grestore
    \fi
    stroke}\pst@repeatarrows \addto@pscode{grestore}\ifx\psk@fillstyle\relax\else
    \addto@pscode{gsave
      \pst@usecolor\psfillcolor
      gsave fill grestore
      stroke
      grestore}\fi}
\def\pst@addborder{\addto@pscode{gsave
    \psk@border 2 mul
    CLW add SLW
    \pst@usecolor\psbordercolor
    stroke
    grestore}}
\def\pst@stroke{\ifx\pslinestyle\@none\else
    \addto@pscode{gsave
      \pst@number\pslinewidth SLW
      \pst@usecolor\pslinecolor
      \psk@strokeopacityalpha .setopacityalpha \@nameuse{psls@\pslinestyle}
      grestore}\fi}
\def\pst@fill#1{\addto@pscode{gsave #1 grestore}}\def\pst@doublestroke{\addto@pscode{gsave
      \psdoublesep SLW
      \pst@usecolor\psdoublecolor
      stroke
      grestore
}}
\def\pst@arrowtype{\ifx\psk@arrowB\@empty 0 \else -2 \fi
  \ifx\psk@arrowA\@empty 0 \else -1 \fi
  add }
\def\pst@addarrowdef{\addto@pscode{/ArrowA {
      \ifx\psk@arrowA\@empty
        \pst@oplineto
      \else
        \pst@arrowdef{A}
        moveto
      \fi
    } def
    /ArrowB { \ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi } def
}}
\def\pst@arrowdef#1{\ifnum\pst@repeatarrowsflag>\z@
    /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
  \fi
  \tx@BeginArrow
  \psk@arrowscale
  \@nameuse{psas@\@nameuse{psk@arrow#1}}
  \tx@EndArrow
}
\def\pst@repeatarrows{\addto@pscode{gsave
    \ifx\psk@arrowA\@empty\else ArrowAc ArrowA pop pop \fi
    \ifx\psk@arrowB\@empty\else ArrowBc ArrowB pop pop pop pop \fi
    grestore
}}
\def\pst@OpenShowPoints{\addto@pscode{gsave
    \psk@dotsize
    \@nameuse{psds@\psk@dotstyle}
    newpath
    Points aload length 2 div 2 sub cvi /N ED
    N 0 ge
      { \ifx\psk@arrowA\@empty Dot \else pop pop \fi 
        N { Dot } repeat 
	\ifx\psk@arrowB\@empty Dot \else pop pop \fi }
      { N 2 mul { pop } repeat } ifelse
    grestore
}}
\def\pscustom{\pst@object{pscustom}}
\long\def\pscustom@i#1{\begin@SpecialObj
  \solid@star
  \let\pst@ifcustom\iftrue
  \let\begin@ClosedObj\begin@CustomObj
  \let\end@ClosedObj\endgroup
  \def\begin@OpenObj{\begin@CustomObj\pst@addarrowdef}\let\end@OpenObj\endgroup
  \let\begin@AltOpenObj\begin@CustomObj
  \def\begin@SpecialObj{\begingroup
    \pst@misplaced{special graphics object}\def\addto@pscode####1{}
    \let\end@SpecialObj\endgroup}\def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}\def\psclip##1{\pst@misplaced\psclip}\def\pst@repeatarrowsflag{\z@}\let\pst@setrepeatarrowsflag\relax
    \showpointsfalse
    \let\showpointstrue\relax
    \def\pst@linetype{\pslinetype}\let\psset@liftpen\psset@@liftpen
    \psset@liftpen{\z@}\def\pst@cp{/currentpoint load stopped pop }\def\pst@oplineto{/lineto load stopped { moveto } if }\def\pst@optcp##1##2{\ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}\let\caddto@pscode\addto@pscode
    \def\cuse@par##1{{\use@par##1}}\the\pst@customdefs
    \setbox\pst@hbox=\hbox{#1}\psk@fillstyle
    \pst@stroke
  \end@SpecialObj}
\def\begin@CustomObj{\begingroup
  \use@par
  \addto@pscode{\pst@number\pslinewidth SLW
    \pst@usecolor\pslinecolor
  }}
\def\pst@oplineto{moveto }
\def\pst@cp{}
\def\pst@optcp#1#2{}
\def\psset@liftpen#1{}
\def\psset@@liftpen#1{\ifcase#1\relax
    \def\psk@liftpen{\z@}\def\pst@cp{/currentpoint load stopped pop }\def\pst@oplineto{/lineto load stopped { moveto } if }\or
    \def\psk@liftpen{1}\def\pst@cp{}\def\pst@oplineto{/lineto load stopped { moveto } if }\or
    \def\psk@liftpen{2}\def\pst@cp{}\def\pst@oplineto{moveto }\fi }
\psset@liftpen{0}
\def\psk@liftpen{-1}
\def\psset@linetype#1{\pst@getint{#1}\pslinetype
\ifnum\pst@cntg<-3
\@pstrickserr{linetype must be greater than -3}\@ehpa
\def\pslinetype{2}\fi }
\psset@linetype{2}\def\caddto@pscode#1{\@pstrickserr{Command can only be used in \string\pscustom}\@ehpa }
\let\cuse@par\caddto@pscode
\def\tx@MSave{/msavematrx
         [ tx@Dict /msavematrx known { msavematrx aload pop } if
             CM ]
     def
msavematrx
}
\def\tx@MRestore{tx@Dict /msavematrx known { length 0 gt } { false } ifelse
         { msavematrx aload pop setmatrix } if
}
\newtoks\pst@customdefs
\pst@customdefs{\def\newpath{\addto@pscode{newpath}}\def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}\def\closepath{\addto@pscode{closepath}}\def\gsave{\begingroup\addto@pscode{gsave}}\def\grestore{\endgroup\addto@pscode{grestore}}\def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor translate}}\def\rotate#1{\pst@@getangle{#1}\addto@pscode{\pst@angle rotate}}\def\scale#1{\pst@getscale{#1}\pst@tempg\addto@pscode{\pst@tempg}}\def\msave{\addto@pscode{\tx@MSave}}\def\mrestore{\addto@pscode{\tx@MRestore}}\def\swapaxes{\addto@pscode{-90 rotate -1 1 scale}}\def\stroke{\pst@object{stroke}}\def\fill{\pst@object{fill}}\def\openshadow{\pst@object{openshadow}}\def\closedshadow{\pst@object{closedshadow}}\def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor \tx@Shadow}}\def\lineto{\pst@onecoor{lineto}}\def\rlineto{\pst@onecoor{rlineto}}\def\curveto{\pst@threecoor{curveto}}\def\rcurveto{\pst@threecoor{rcurveto}}\def\code#1{\addto@pscode{#1}}\def\coor(#1){\pst@@getcoor{#1}\addto@pscode\pst@coor\@ifnextchar({\coor}{}}\def\rcoor{\pst@getcoors{}{}}\def\dim#1{\pssetlength\pst@dimg{#1}\addto@pscode{\pst@number\pst@dimg}}\def\setcolor#1{\@ifundefined{\string\color@#1}{}{\addto@pscode{\pst@usecolor{#1}}}}\def\arrows#1{{\psset@arrows{#1}\pst@addarrowdef}}\let\file\pst@rawfile
} \def\closedshadow@i{\cuse@par\pst@closedshadow}
\def\openshadow@i{\cuse@par\pst@openshadow}
\def\stroke@i{\cuse@par\pst@stroke}\def\fill@i{\cuse@par\psk@fillstyle}\def\pst@onecoor#1(#2){\pst@@getcoor{#2}\addto@pscode{\pst@coor #1}}
\def\pst@threecoor#1(#2)#3(#4)#5(#6){\begingroup
    \pst@getcoor{#2}\pst@tempa
    \pst@getcoor{#4}\pst@tempb
\pst@getcoor{#6}\pst@tempc
\addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}\endgroup}
\def\pst@rawfile#1{\begingroup
  \def\do##1{\catcode`##1=12\relax}"
  \dospecials
  \catcode`\%=14
  \pst@@rawfile{#1}\endgroup}
\def\pst@@rawfile#1{\immediate\openin1 #1
  \ifeof1
    \@pstrickserr{File `#1' not found}\@ehpa
  \else
    \immediate\read1 to \pst@tempg
    \loop
      \ifeof1 \@pstfalse\else\@psttrue\fi
      \if@pst
      \addto@pscode\pst@tempg
      \immediate\read1 to \pst@tempg
    \repeat
  \fi
  \immediate\closein1\relax}
\def\tx@NArray{NArray }
\def\tx@NArray{NArray }
\def\tx@Line{Line }
\def\tx@Arcto{Arcto }
\def\tx@CheckClosed{CheckClosed }
\def\tx@Polygon{Polygon }
\def\psset@gangle#1{\pst@getangle{#1}\psk@gangle}
\psset@gangle{0}
\def\tx@Diamond{Diamond }
\def\psdiamond{\pst@object{psdiamond}}
\def\psdiamond@i(#1){\@ifnextchar({\psdiamond@ii(#1)}{\psdiamond@ii(0,0)(#1)}}
\def\psdiamond@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa
  \pst@getcoor{#2}\pst@tempb
  \addto@pscode{\psline@iii
    pop
    \psk@dimen
    \pst@tempb
    \psk@gangle
    \pst@tempa
    \tx@Diamond
  }\def\pst@linetype{4}\end@ClosedObj}
\def\tx@Triangle{Triangle }
\def\pstriangle{\pst@object{pstriangle}}
\def\pstriangle@i(#1){\@ifnextchar({\pstriangle@ii(#1)}{\pstriangle@ii(0,0)(#1)}}
\def\pstriangle@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa \pst@getcoor{#2}\pst@tempb \addto@pscode{\psline@iii
    pop			    \psk@dimen		    \pst@tempb
    \psk@gangle		    \pst@tempa
    \tx@Triangle
  }\def\pst@linetype{2}\end@ClosedObj}
\def\tx@CCA{CCA }
\def\tx@CCA{CCA }
\def\tx@CC{CC }
\def\tx@IC{IC }
\def\tx@BOC{BOC }
\def\tx@NC{NC }
\def\tx@EOC{EOC }
\def\tx@BAC{BAC }
\def\tx@NAC{NAC }
\def\tx@EAC{EAC }
\def\tx@OpenCurve{OpenCurve }
\def\tx@AltCurve{AltCurve }
\def\tx@ClosedCurve{ClosedCurve }
\def\psset@curvature#1{\edef\pst@tempg{#1 }\expandafter\psset@@curvature\pst@tempg * * * \@nil}
\def\psset@@curvature#1 #2 #3 #4\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi
\edef\psk@curvature{\pst@tempg \pst@temph \pst@tempi}}
\psset@curvature{1 .1 0}
\def\pscurve{\pst@object{pscurve}}
\def\pscurve@i{\pst@getarrows{\begin@OpenObj
      \pst@getcoors[\pscurve@ii }}
\def\pscurve@ii{\addto@pscode{
    \pst@cp
    \psk@curvature\space /c ED /b ED /a ED
    \ifshowpoints true \else false \fi
    \tx@OpenCurve
  }\end@OpenObj }
\def\psecurve{\pst@object{psecurve}}
\def\psecurve@i{\pst@getarrows{\begin@OpenObj
\pst@getcoors[\psecurve@ii}}
\def\psecurve@ii{\addto@pscode{\psk@curvature\space /c ED /b ED /a ED
\ifshowpoints true \else false \fi
\tx@AltCurve}\end@OpenObj}
\def\psccurve{\pst@object{psccurve}}
\def\psccurve@i{\begin@ClosedObj
\pst@getcoors[\psccurve@ii}
\def\psccurve@ii{\addto@pscode{\psk@curvature\space /c ED /b ED /a ED
\ifshowpoints true \else false \fi
\tx@ClosedCurve}\def\pst@linetype{1}\end@ClosedObj}
\def\psset@dotsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
\edef\psk@@dotsize{\pst@number\pst@dimg}\let\psk@@@dotsize\pst@tempg
\edef\psk@dotsize{/DS \psk@@dotsize \psk@@@dotsize CLW mul add 2 div def }}
\psset@dotsize{2pt 2}
\def\psset@dotscale#1{\pst@getscale{#1}\psk@dotscale
\ifx\psk@dotscale\@empty
\def\psk@xdotscale{1 }\def\psk@ydotscale{1 }\else
\let\psk@xdotscale\pst@tempg
\let\psk@ydotscale\pst@temph
\fi}
\def\pst@Getangle#1#2{\pst@getangle{#1}\pst@tempg
\def\pst@temph{0. }\ifx\pst@tempg\pst@temph
\def#2{}\else
\edef#2{\pst@tempg\space rotate }\fi}
\def\psset@dotangle#1{\pst@getangle{#1}\psk@@dotangle
\ifdim\psk@@dotangle\p@=\z@
\let\psk@dotangle\@empty
\else
\edef\psk@dotangle{\psk@@dotangle rotate }\fi}
\psset@dotangle{0}
\def\pst@getdotsize{\pst@dimg=\psk@@@dotsize\pslinewidth
\advance\pst@dimg\psk@@dotsize\p@
\pst@dimh=\psk@ydotscale\pst@dimg
\pst@dimg=\psk@xdotscale\pst@dimg
\divide\pst@dimh 2
\divide\pst@dimg 2\relax}
\psset@dotscale{1}
\def\psdot{\pst@object{psdot}}
\def\psdot@i{\@ifnextchar({\psdot@ii}{\psdot@ii(\z@,\z@)}}
\def\psdot@ii(#1){\begin@SpecialObj \solid@star \pst@@getcoor{#1}\addto@pscode{
    \psk@dotsize
    \@nameuse{psds@\psk@dotstyle}\pst@coor Dot}\end@SpecialObj}
\def\psdots{\pst@object{psdots}}
\def\psdots@i{\begin@SpecialObj \pst@getcoors[\psdots@ii}
\def\psdots@ii{\addto@pscode{false \tx@NArray \psdots@iii}\end@SpecialObj}
\def\psdots@iii{\psk@dotsize
  \@nameuse{psds@\psk@dotstyle}
  newpath
  n { transform floor .5 add exch floor .5 add exch itransform Dot } repeat}
\def\tx@SQ{SQ }
\def\tx@ST{ST }
\def\tx@SP{SP }
\def\pst@gdot#1{/Dot { gsave T \psk@dotangle \psk@dotscale #1 grestore } def }
\@namedef{psds@*}{\pst@gdot{0 0 DS \tx@SD}}
\@namedef{psds@o}{/r2 DS CLW sub def
  \pst@gdot{0 0 DS \tx@SD \pst@usecolor\psfillcolor 0 0 r2 \tx@SD}}
\@namedef{psds@square*}{/r1 DS .886 mul def
  \pst@gdot{r1 \tx@SQ}}
\@namedef{psds@square}{/r1 DS .886 mul def /r2 r1 CLW sub def
  \pst@gdot{r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ}}
\@namedef{psds@triangle*}{/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
  \pst@gdot{x1 y1 \tx@ST}}
\@namedef{psds@triangle}{/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
  /y2 y1 CLW add def /x2 y2 1.732 mul neg def
  \pst@gdot{x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST}}
\@namedef{psds@pentagon*}{/r1 DS 1.149 mul def
  \pst@gdot{r1 \tx@SP}}
\@namedef{psds@pentagon}{DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED
  \pst@gdot{r1 \tx@SP \pst@usecolor\psfillcolor r2 \tx@SP}}
\@namedef{psds@+}{/DS DS 1.253 mul def
  \pst@gdot{DS 0 moveto DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke}}
\@namedef{psds@|}{\psk@tbarsize CLW mul add 2 div /DS ED
  \pst@gdot{0 DS moveto 0 DS neg L stroke}}
\def\psset@dotstyle#1{\@ifundefined{psds@#1}{\@pstrickserr{Dot style `#1' not defined}\@eha}{\edef\psk@dotstyle{#1}}}
\psset@dotstyle{*}
\def\tx@FontDot{FontDot }
\def\newpsfontdot#1[#2]#3#4{\@namedef{psds@#1}{/#3 \psk@@dotangle [#2] \tx@FontDot
/Dot { moveto gsave \psk@dotscale #4 show grestore } bind def 
}}
\def\newpsfontdotH#1[#2]#3#4#5{\@namedef{psds@#1}{/#3 \psk@@dotangle [#2] \tx@FontDot
    /Dot {
      moveto
      \iftrue
gsave \psk@dotscale \pst@usecolor\psfillcolor #5 show grestore
      \fi
      gsave \psk@dotscale #4 show grestore
} bind def 
}}
\pstheader{pst-dots.pro}
\newpsfontdot{*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
\newpsfontdotH{o}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
\newpsfontdotH{Bo}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
\newpsfontdotH{triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
\newpsfontdotH{Btriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
\newpsfontdot{triangle*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
\newpsfontdotH{square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
\newpsfontdotH{Bsquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
\newpsfontdot{square*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
\newpsfontdotH{pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
\newpsfontdotH{Bpentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
\newpsfontdot{pentagon*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
\newpsfontdotH{diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
\newpsfontdotH{Bdiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
\newpsfontdot{diamond*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
\newpsfontdot{oplus}[1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]{Symbol}{<C5>}
\newpsfontdot{otimes}[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{Symbol}{<C4>}
\newpsfontdot{x}[1.8 0.0 0.0 1.8 -0.495 -0.4788]{Symbol}{<B4>}
\newpsfontdot{+}[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{Times-Roman}{<2B>}
\newpsfontdot{asterisk}[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{Times-Roman}{<2A>}
\newpsfontdot{B+}[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{Times-Bold}{<2B>}
\newpsfontdot{Basterisk}[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{Times-Bold}{<2A>}
\newpsfontdot{|}[1.98413 0.0 0.0 1.38 -0.258929 -0.5]{Helvetica}{(|)}
\newpsfontdot{B|}[1.98413 0.0 0.0 1.38 -0.277778 -0.5]{Helvetica-Bold}{(|)}

\iffalse
\newpsfontdot{*}[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{Symbol}{<B7>}
\newpsfontdot{o}[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{Symbol}{<B0>}
\newpsfontdot{Bo}[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{Times-Bold}{<CA>}
\fi
\newpsfontdot{Asterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(k)}
\newpsfontdot{BoldAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(K)}
\newpsfontdotH{SolidAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(J)}{(b)}
\newpsfontdotH{Hexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(h)}{(G)}
\newpsfontdotH{BoldHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(H)}{(G)}
\newpsfontdot{SolidHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(G)}
\newpsfontdot{Bullet}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
\newpsfontdotH{Circle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
\newpsfontdotH{BoldCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
\newpsfontdotH{Triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
\newpsfontdotH{BoldTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
\newpsfontdot{SolidTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
\newpsfontdotH{Square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
\newpsfontdotH{BoldSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
\newpsfontdot{SolidSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
\newpsfontdotH{Pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
\newpsfontdotH{BoldPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
\newpsfontdot{SolidPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
\newpsfontdot{Add}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(a)}
\newpsfontdot{BoldAdd}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(A)}
\newpsfontdot{Mul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(x)}
\newpsfontdot{BoldMul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(X)}
\newpsfontdotH{Oplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(m)}{(b)}
\newpsfontdotH{BoldOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(M)}{(b)}
\newpsfontdotH{SolidOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(e)}{(b)}
\newpsfontdotH{Otimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(n)}{(b)}
\newpsfontdotH{BoldOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(N)}{(b)}
\newpsfontdotH{SolidOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(E)}{(b)}
\newpsfontdot{Bar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(i)}
\newpsfontdot{BoldBar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(I)}
\newpsfontdotH{Diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
\newpsfontdotH{BoldDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
\newpsfontdot{SolidDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
\newdimen\pslinearc
\def\psset@linearc#1{\pssetlength\pslinearc{#1}}
\psset@linearc{0pt}
\def\psline{\pst@object{psline}}
\def\psline@i{\pst@getarrows{\begin@OpenObj
    \pst@getcoors[\psline@ii }}
\def\psline@ii{\addto@pscode{\pst@cp \psline@iii \tx@Line}\end@OpenObj }
\def\psline@iii{\ifdim\pslinearc>\z@
    /r \pst@number\pslinearc def
    /Lineto { \tx@Arcto } def
  \else
    /Lineto /lineto load def
  \fi
  \ifshowpoints true \else false \fi
  \tx@setlinejoin 			}
\def\qline(#1)(#2){\def\pst@par{}\begin@SpecialObj
  \def\pst@linetype{0}\pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\addto@pscode{\pst@tempa moveto \pst@coor L
    \@nameuse{psls@\pslinestyle}}\end@SpecialObj}
\def\pspolygon{\pst@object{pspolygon}}
\def\pspolygon@i{\begin@ClosedObj \def\pst@cp{}\pst@getcoors[\pspolygon@ii }
\def\pspolygon@ii{\addto@pscode{\psline@iii \tx@Polygon}\def\pst@linetype{1}\end@ClosedObj}
\def\psset@framearc#1{\pst@checknum{#1}\psk@framearc}
\psset@framearc{0}
\def\psset@cornersize#1{\pst@expandafter\psset@@cornersize{#1}\@nil}
\def\psset@@cornersize#1#2\@nil{\if #1a\relax
    \def\psk@cornersize{\pst@number\pslinearc false }\else\def\psk@cornersize{\psk@framearc true }\fi}
\psset@cornersize{relative}
\def\tx@Rect{Rect }
\def\tx@OvalFrame{OvalFrame }
\def\tx@Frame{Frame }
\def\psset@dimen#1{\pst@expandafter\psset@@dimen{#1}\@nil}
\def\psset@@dimen#1#2\@nil{\if #1o\relax \def\psk@dimen{.5 }\else
    \if #1m\relax \def\psk@dimen{0 }\else
      \if #1i\relax \def\psk@dimen{-.5 }\fi\fi\fi}
\psset@dimen{outer}
\def\psframe{\pst@object{psframe}}
\def\psframe@i(#1){\@ifnextchar({\psframe@ii(#1)}{\psframe@ii(0,0)(#1)}}
\def\psframe@ii(#1)(#2){\begin@ClosedObj
    \pst@getcoor{#1}\pst@tempa
    \pst@@getcoor{#2}\addto@pscode{\psk@cornersize \pst@tempa \pst@coor \psk@dimen \tx@Frame}\def\pst@linetype{2}\showpointsfalse
  \end@ClosedObj }
\def\psTextFrame{\pst@object{psTextFrame}}
\def\psTextFrame@i(#1)(#2)#3{\addbefore@par{ref=c}\leavevmode \pst@killglue
  \begingroup
  \use@par
  \ifx\psk@yref\relax \def\psk@yref{0}\fi \SpecialCoor
  \pst@getcoor{#1}\pst@tempA
  \pst@getcoor{#2}\pst@tempB
  \if@star\psframe*(#1)(#2)\else\psframe(#1)(#2)\fi
  \rput(! \pst@tempA \pst@tempB exch 4 -1 roll 		dup /x1 ED			sub /dx ED			exch dup /y1 ED 		sub /dy ED	
    x1 dx \psk@xref\space mul add \pst@number\psxunit div 
    y1 dy \psk@yref\space mul add \pst@number\psyunit div ){#3}
  \endgroup
  \ignorespaces}
\def\tx@BezierNArray{BezierNArray }
\def\tx@OpenBezier{OpenBezier }
\def\tx@ClosedBezier{ClosedBezier }
\def\tx@BezierShowPoints{BezierShowPoints }
\def\psbezier{\pst@object{psbezier}}
\def\psbezier@i{\pst@getarrows{\begin@OpenObj
      \pst@getcoors[\psbezier@ii }}
\def\psbezier@ii{\addto@pscode{\pst@cp
\ifshowpoints true \else false \fi
    \tx@OpenBezier
    \ifshowpoints \tx@BezierShowPoints \fi}\end@OpenObj}
\def\pscbezier{\pst@object{pscbezier}}
\def\pscbezier@i{\begin@ClosedObj
  \pst@getcoors[\pscbezier@ii}
\def\pscbezier@ii{\addto@pscode{\ifshowpoints true \else false \fi
    \tx@ClosedBezier
    \ifshowpoints \tx@BezierShowPoints \fi}\chardef\pst@linetype=1
  \end@ClosedObj}
\def\tx@Parab{Parab }
\def\psparabola{\pst@object{psparabola}}\def\psparabola@i{\pst@getarrows\psparabola@ii}
\def\psparabola@ii#1(#2)#3(#4){\begin@OpenObj
  \pst@getcoor{#2}\pst@tempa
  \pst@@getcoor{#4}\addto@pscode{\pst@tempa \pst@coor \tx@Parab}\end@OpenObj}
\let\parabola\psparabola \def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth}
\psset@gridwidth{.8pt}
\def\psset@griddots#1{\pst@cntg=#1\relax
  \edef\psk@griddots{\the\pst@cntg}}
\psset@griddots{0}
\def\psset@gridcolor#1{\pst@getcolor{#1}\psgridcolor}
\psset@gridcolor{black}
\def\psset@subgridwidth#1{\pst@getlength{#1}\psk@subgridwidth}
\psset@subgridwidth{.4pt}
\def\psset@subgridcolor#1{\pst@getcolor{#1}\pssubgridcolor}
\psset@subgridcolor{gray}
\def\psset@subgriddots#1{\pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}}
\psset@subgriddots{0}
\def\psset@subgriddiv#1{\pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}}
\psset@subgriddiv{5}
\def\psset@gridfont#1{\def\psk@gridfont{/#1 }}\psset@gridfont{Helvetica}
\def\psset@gridlabels#1{\pst@getlength{#1}\psk@gridlabels}
\psset@gridlabels{10pt}
\def\psset@gridlabelcolor#1{\pst@getcolor{#1}\psgridlabelcolor}
\psset@gridlabelcolor{black}

\def\tx@Grid{Grid }

\def\psgrid{\pst@object{psgrid}}
\def\psgrid@i{\@ifnextchar({\psgrid@ii}{\expandafter\psgrid@iv\pic@coor}}
\def\psgrid@ii(#1){\@ifnextchar({\psgrid@iii(#1)}{\psgrid@iv(0,0)(0,0)(#1)}}
\def\psgrid@iii(#1)(#2){\@ifnextchar({\psgrid@iv(#1)(#2)}{\psgrid@iv(#1)(#1)(#2)}}
\def\psgrid@iv(#1)(#2)(#3){\begin@SpecialObj
    \pst@getcoor{#1}\pst@tempA \pst@getcoor{#2}\pst@tempB \pst@@getcoor{#3}\ifnum\psk@subgriddiv>1
      \addto@pscode{
        gsave
        \psk@subgridwidth SLW \pst@usecolor\pssubgridcolor
        \pst@tempB \pst@coor \pst@tempA                 \pst@number\psxunit abs \pst@number\psyunit abs \psk@subgriddiv\space \psk@subgriddots\space
        {} 0 
        \psk@gridfont findfont 0 scalefont setfont      \tx@Grid 
	grestore
      }\fi
    \addto@pscode{
      gsave
      \psk@gridwidth SLW \pst@usecolor\psgridcolor
      \pst@tempB \pst@coor \pst@tempA                 \pst@number\psxunit abs \pst@number\psyunit abs 1 \psk@griddots\space { \pst@usecolor\psgridlabelcolor }
      \psk@gridlabels 
      \psk@gridfont findfont \psk@gridlabels scalefont setfont  \tx@Grid 
      grestore
    }\end@SpecialObj}
\newif\ifpsmathbox
\psmathboxtrue
\def\pst@mathflag{\z@}
\newtoks\everypsbox
\let\pst@thisbox\relax
\long\def\pst@makenotverbbox#1#2{\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}\setbox\pst@hbox=\hbox{\ifcase\pst@mathflag\or$\m@th\textstyle\or$\m@th\displaystyle\fi
    {\pst@thisbox\the\everypsbox#2}\ifnum\pst@mathflag>\z@$\fi }#1}
\def\pst@makeverbbox#1{\def\pst@afterbox{#1}\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi }\afterassignment\pst@beginbox
  \setbox\pst@hbox\hbox }
\def\pst@beginbox{\ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
  \bgroup\aftergroup\pst@endbox
  \pst@thisbox
  \the\everypsbox }
\def\pst@endbox{\ifnum\pst@mathflag>\z@$\fi
  \egroup
  \pst@afterbox }
\def\pst@makebox{\pst@@makebox}
\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}}
\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}}
\psverbboxfalse
\def\pst@longbox{\def\pst@makebox{\gdef\pst@makebox{\pst@@makebox}\pst@makelongbox }}
\def\pst@makelongbox#1{\def\pst@afterbox{#1}\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi }\setbox\pst@hbox\hbox\bgroup
  \aftergroup\pst@afterbox
  \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
  \begingroup
  \pst@thisbox
  \the\everypsbox }
\def\pst@endlongbox{\endgroup
  \ifnum\pst@mathflag>\z@$\fi
  \egroup }
\def\pslongbox#1#2{\@namedef{#1}{\pst@longbox#2}\@namedef{end#1}{\pst@endlongbox}}
\newdimen\psframesep
\def\psset@framesep#1{\pssetlength\psframesep{#1}}
\psset@framesep{3pt}
\newif\ifpsboxsep
\def\psset@boxsep#1{\@nameuse{psboxsep#1}}
\psset@boxsep{true}
\def\pst@useboxpar{\use@par
  \if@star
    \let\pslinecolor\psfillcolor
    \solid@star
    \let\solid@star\relax
  \fi
  \ifpsdoubleline \pst@setdoublesep \fi}
\def\psframebox{\pst@object{psframebox}}
\def\psframebox@i{\pst@makebox\psframebox@ii}
\def\psframebox@ii{\begingroup
  \pst@useboxpar
  \pst@dima=\pslinewidth
  \advance\pst@dima by \psframesep
  \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima
  \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima
  \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima
  \setbox\pst@hbox=\hbox{\ifpsboxsep\kern\pst@dima\fi
    \begin@ClosedObj
    \addto@pscode{\psk@cornersize \pst@number\pst@dima neg
      \pst@number\pst@dimb neg
      \pst@number\pst@dimc
      \pst@number\pst@dimd
      .5
      \tx@Frame }\def\pst@linetype{2}\showpointsfalse
    \end@ClosedObj
    \box\pst@hbox
    \ifpsboxsep\kern\pst@dima\fi }\ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi
  \leavevmode\box\pst@hbox
  \endgroup}
\def\psdblframebox{\pst@object{psdblframebox}}
\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i}
\def\psclip#1{\leavevmode
  \begingroup
    \begin@psclip
      \begingroup
        \def\use@pscode{\pstVerb{\pst@dict
            /mtrxc CM def
            CP CP T
            \tx@STV
            \psk@origin
            \psk@swapaxes
            newpath
            \pst@code
            clip
            newpath
            mtrxc setmatrix
            moveto
            0 setgray
            end
	  }\gdef\pst@code{}}\def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}\def\nc@object##1##2##3##4{\pst@misplaced{node connection}}\hbox to\z@{#1}\endgroup
  \def\endpsclip{\end@psclip
    \endgroup}\ignorespaces}
\def\endpsclip{\pst@misplaced\endpsclip}
\let\begin@psclip\relax
\def\end@psclip{\pstVerb{currentpoint initclip moveto}}
\def\AltClipMode{\def\end@psclip{\pstVerb{\pst@grestore}}\def\begin@psclip{\pstVerb{gsave}}}
\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}}
\def\clipbox@@#1{\pssetlength\pst@dimg{#1}\leavevmode\hbox{\begin@psclip
  \pst@Verb{CM \tx@STV CP T newpath
    /a \pst@number\pst@dimg def
    /w \pst@number{\wd\pst@hbox}a add def
    /d \pst@number{\dp\pst@hbox}a add neg def
    /h \pst@number{\ht\pst@hbox}a add def
    a neg d moveto
    a neg h L
    w h L
    w d L
    closepath
    clip
    newpath
    0 0 moveto
    setmatrix}\unhbox\pst@hbox
\end@psclip}}
\def\psshadowbox{\pst@object{psshadowbox}}
\def\psshadowbox@i{\pst@makebox\psshadowbox@ii}
\def\psshadowbox@ii{\begingroup
\pst@useboxpar
\psshadowtrue
\psboxseptrue
\def\psk@shadowangle{-45 }\setbox\pst@hbox=\hbox{\psframebox@ii}\pst@dimh=\psk@shadowsize\p@
\pst@dimh=.7071\pst@dimh
\pst@dimg=\dp\pst@hbox
\advance\pst@dimg\pst@dimh
\dp\pst@hbox=\pst@dimg
\pst@dimg=\wd\pst@hbox
\advance\pst@dimg\pst@dimh
\wd\pst@hbox=\pst@dimg
\leavevmode
\box\pst@hbox
\endgroup}
\def\pscirclebox{\pst@object{pscirclebox}}
\def\pscirclebox@i{\pst@makebox\pscirclebox@ii}
\def\pscirclebox@ii{\begingroup
\pst@useboxpar
\setbox\pst@hbox=\hbox{\pst@nodehook
\pscirclebox@iii
\box\pst@hbox}\ifpsboxsep \pscirclebox@sep \fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\pscirclebox@iii{\if@star
\pslinewidth\z@
\pstverb{\pst@dict \tx@STP \pst@usecolor\psfillcolor
newpath \pscirclebox@iv \tx@SD end}\else
\begin@ClosedObj
\def\pst@linetype{4}\showpointsfalse
\addto@pscode{\pscirclebox@iv CLW 2 div add 0 360 arc closepath}\end@ClosedObj
\fi}
\def\pscirclebox@iv{\pst@number{\wd\pst@hbox}2 div
  \pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}add 2 div
  2 copy \pst@number{\dp\pst@hbox}sub 4 2 roll
  \tx@Pyth \pst@number\psframesep add }
\def\pscirclebox@sep{\pst@dimb=\ht\pst@hbox
  \advance\pst@dimb\dp\pst@hbox
  \divide\pst@dimb 2
  \pst@dima=.5\wd\pst@hbox
  \pst@pyth\pst@dima\pst@dimb\pst@dimc
  \advance\pst@dimc\pslinewidth
  \advance\pst@dimc\psframesep
  \advance\pst@dimb-\pst@dimc
  \setbox\pst@hbox=\hbox to2\pst@dimc{\hss\vbox{\kern-\pst@dimb\box\pst@hbox}\hss}\advance\pst@dimb-\dp\pst@hbox
  \dp\pst@hbox=-\pst@dimb}
\let\pst@nodehook\relax
\def\psCirclebox{\pst@object{psCirclebox}}
\def\psCirclebox@i{\pst@makebox\psCirclebox@ii}
\def\psCirclebox@ii{\begingroup
  \pst@useboxpar
  \pst@dima=\ht\pst@hbox
  \advance\pst@dima\dp\pst@hbox
  \divide\pst@dima\tw@
  \pssetlength\pst@dimb\psk@radius
  \setbox\pst@hbox=\hbox{\pst@nodehook
    \pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}\box\pst@hbox}\ifpsboxsep \psCirclebox@sep \fi
  \leavevmode
  \box\pst@hbox
  \endgroup}
\def\psCirclebox@sep{\pst@dimc=\pst@dimb
  \advance\pst@dimb-\pst@dima
  \advance\pst@dima\pst@dimc
  \setbox\pst@hbox=\hbox to\tw@\pst@dimc{\hss\vrule width \z@ depth \pst@dimb height \pst@dima
    \box\pst@hbox\hss}}
\def\psovalbox{\pst@object{psovalbox}}
\def\psovalbox@i{\pst@makebox{\psovalbox@ii}}
\def\psovalbox@ii{\begingroup
  \pst@useboxpar
  \psovalbox@iii
  \ifpsboxsep\psovalbox@sep\fi
  \leavevmode
  \box\pst@hbox
  \endgroup}
\def\psovalbox@iii{\psovalbox@iv
  \setbox\pst@hbox=\hbox{\begin@ClosedObj
    \addto@pscode{0 360
      \pst@number\pst@dimc CLW 2 div sub
      \pst@number\pst@dimd CLW 2 div sub
      \pst@number\pst@dima
      \pst@number\pst@dimb
      \tx@Ellipse
      closepath }\def\pst@linetype{2}\end@ClosedObj
    \unhbox\pst@hbox}}
\def\psovalbox@iv{\pst@dimc=\pslinewidth\advance\pst@dimc\psframesep
  \pst@dimd=\ht\pst@hbox\advance\pst@dimd\dp\pst@hbox
  \pst@dima=.5\wd\pst@hbox
  \pst@dimb=.5\pst@dimd\advance\pst@dimb-\dp\pst@hbox
  \pst@dimd=.707\pst@dimd
  \advance\pst@dimd\pst@dimc
  \advance\pst@dimc.707\wd\pst@hbox}
\def\psovalbox@sep{\setbox\pst@hbox\hbox to 2\pst@dimc{\hss\unhbox\pst@hbox\hss}\pst@dimg=\pst@dimd
  \advance\pst@dimg-\pst@dimb
  \dp\pst@hbox=\pst@dimg
  \advance\pst@dimd\pst@dimb
  \ht\pst@hbox=\pst@dimd}
\def\psdiabox{\pst@object{psdiabox}}
\def\psdiabox@i{\pst@makebox{\psdiabox@ii}}
\def\psdiabox@ii{\begingroup
\pst@useboxpar
\psdiabox@iii
\ifpsboxsep\psdiabox@sep\fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\psdiabox@iv{\pst@dimg=.707\pslinewidth
\advance\pst@dimg.707\psframesep
\pst@dima=\wd\pst@hbox
\divide\pst@dima 2
\pst@dimc=\pst@dima
\advance\pst@dimc\pst@dimg
\pst@dimd=\ht\pst@hbox
\advance\pst@dimd\dp\pst@hbox
\divide\pst@dimd 2
\pst@dimb=\pst@dimd
\advance\pst@dimb-\dp\pst@hbox
\advance\pst@dimd\pst@dimg}
\def\psdiabox@iii{\psdiabox@iv
\setbox\pst@hbox=\hbox{\begin@ClosedObj
\addto@pscode{\psline@iii
pop
.5
\pst@number\pst@dimc 2 mul \pst@number\pst@dimd 2 mul
0
\pst@number\pst@dima \pst@number\pst@dimb
\tx@Diamond}\def\pst@linetype{4}\end@ClosedObj
\box\pst@hbox}}
\def\psdiabox@sep{\setbox\pst@hbox\hbox to 4\pst@dimc{\hss\unhbox\pst@hbox\hss}\multiply\pst@dimd 2
\advance\pst@dimd\pst@dimb
\ht\pst@hbox\pst@dimd
\advance\pst@dimd-2\pst@dimb
\dp\pst@hbox\pst@dimd}
\def\psset@trimode#1{\pst@expandafter\psset@@trimode{#1}\@empty\@empty\@nil}
\def\psset@@trimode#1#2#3\@nil{\let\pst@tempg#1\relax
\ifx\pst@tempg*\let\psk@@trimode\@empty
\let\pst@tempg#2\relax
\else
\let\psk@@trimode\relax
\fi
\edef\psk@trimode{\ifx R\pst@tempg 1 \else\ifx D\pst@tempg 2
\else\ifx L\pst@tempg 3 \else 0 \fi\fi\fi}}
\psset@trimode{U}
\def\pstribox{\pst@object{pstribox}}
\def\pstribox@i{\pst@makebox{\pstribox@ii}}
\def\pstribox@ii{\begingroup
\pst@useboxpar
\pstribox@iii
\ifpsboxsep\pstribox@sep\fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\pstribox@iii{\pstribox@iv
\setbox\pst@hbox=\hbox{\begin@ClosedObj
\addto@pscode{\psline@iii
pop
.5
\pst@number\pst@dimc \pst@number\pst@dimd
\ifodd\psk@trimode exch \fi
\psk@trimode -90 mul
\pst@number\pst@dima \pst@number\pst@dimb
\tx@Triangle}\def\pst@linetype{2}\end@ClosedObj
\box\pst@hbox}}
\def\pstribox@iv{\pst@dimh=\pslinewidth
\advance\pst@dimh\psframesep
\pst@dimg=\ht\pst@hbox
\advance\pst@dimg-\dp\pst@hbox
\divide\pst@dimg 2
\edef\pst@tempa{\number\pst@dimg sp}\ifodd\psk@trimode
\pst@dimb\pst@dimg
\else
\pst@dima=\wd\pst@hbox
\divide\pst@dima 2
\fi
\ifcase\psk@trimode
\pst@dimb=-\dp\pst@hbox
\advance\pst@dimb-\pst@dimh
\or
\pst@dima=-\pst@dimh
\or
\pst@dimb=\ht\pst@hbox
\advance\pst@dimb\pst@dimh
\or
\pst@dima=\wd\pst@hbox
\advance\pst@dima\pst@dimh
\fi
\pst@dimd=\dp\pst@hbox
\advance\pst@dimd\ht\pst@hbox
\ifx\psk@@trimode\relax
\pst@dimc=\wd\pst@hbox
\advance\pst@dimc\ifodd\psk@trimode 1.447\else 1.789\fi\pst@dimh
\multiply\pst@dimc 2
\advance\pst@dimd\ifodd\psk@trimode 1.789\else 1.447\fi\pst@dimh
\multiply\pst@dimd 2
\else
\ifodd\psk@trimode
\advance\pst@dimd 1.1547\wd\pst@hbox
\advance\pst@dimd 3.4641\pst@dimh
\pst@dimc=.866\pst@dimd
\else
\advance\pst@dimd .866\wd\pst@hbox \advance\pst@dimd 3\pst@dimh
\pst@dimc=1.1547\pst@dimd \fi
\fi}
\def\pstribox@sep{\ifodd\psk@trimode
\advance\pst@dimb.5\pst@dimd
\ht\pst@hbox=\pst@dimb
\advance\pst@dimd-\pst@dimb
\dp\pst@hbox=\pst@dimd
\else
\setbox\pst@hbox\hbox to \pst@dimc{\hss\unhbox\pst@hbox\hss}\global\pst@dimg=.5\pst@dimc
\fi
\ifcase\psk@trimode
\dp\pst@hbox-\pst@dimb
\advance\pst@dimd\pst@dimb
\ht\pst@hbox\pst@dimd
\or
\pst@dimg=.5\wd\pst@hbox
\global\advance\pst@dimg-\pst@dima
\setbox\pst@hbox\hbox to \pst@dimc{\kern-\pst@dima\box\pst@hbox\hss}\or
\ht\pst@hbox\pst@dimb
\advance\pst@dimd-\pst@dimb
\dp\pst@hbox\pst@dimd
\or
\pst@dimg=\pst@dimc
\advance\pst@dimg-\pst@dima
\global\advance\pst@dimg.5\wd\pst@hbox
\setbox\pst@hbox\hbox to \pst@dimc{\hss\box\pst@hbox\kern\psframesep\kern\pslinewidth}\fi}
\def\psset@arcsepA#1{\pst@getlength{#1}\psk@arcsepA}
\def\psset@arcsepB#1{\pst@getlength{#1}\psk@arcsepB}
\def\psset@arcsep#1{\psset@arcsepA{#1}\let\psk@arcsepB\psk@arcsepA}
\psset@arcsep{0}
\def\tx@ArcArrow{ArcArrow }
\def\psarc{\pst@object{psarc}}
\def\psarc@i{\@ifnextchar({\psarc@iii}{\psarc@ii}}
\def\psarc@ii#1{\addto@par{arrows=#1}\@ifnextchar({\psarc@iii}{\psarc@iii(0,0)}}
\def\psarc@iii(#1)#2#3#4{\begin@OpenObj
    \pst@getangle{#3}\pst@tempa
    \pst@getangle{#4}\pst@tempb
    \pst@@getcoor{#1}\pssetlength\pst@dima{#2}\addto@pscode{\psarc@iv \psarc@v}\gdef\psarc@type{0}\showpointsfalse
  \end@OpenObj }
\def\psarc@iv{\pst@coor /y ED /x ED
  /r \pst@number\pst@dima def
  /c 57.2957 r \tx@Div def
  /angleA
    \pst@tempa
    \psk@arcsepA c mul 2 div
    \ifcase \psarc@type add \or sub \fi
  def
  /angleB
    \pst@tempb
    \psk@arcsepB c mul 2 div
    \ifcase \psarc@type sub \or add \fi
  def
  \ifshowpoints\psarc@showpoints\fi
  \ifx\psk@arrowA\@empty
    \ifnum\psk@liftpen=2
      r angleA \tx@PtoC
      y add exch x add exch moveto
    \fi
  \fi}
\def\psarc@v{x y r
  angleA
  \ifx\psk@arrowA\@empty\else
    { ArrowA CP }
    r 0 gt \pslbrace
    { \ifcase\psarc@type add \or sub \fi } \psrbrace\pslbrace
    { \ifcase\psarc@type sub \or add \fi } \psrbrace ifelse
\tx@ArcArrow
  \fi
  angleB
  \ifx\psk@arrowB\@empty\else
    { ArrowB }
    r 0 gt \pslbrace
      { \ifcase\psarc@type sub \or add \fi } \psrbrace\pslbrace
      { \ifcase\psarc@type add \or sub \fi } \psrbrace ifelse
\tx@ArcArrow
  \fi
\ifcase\psarc@type arc \or arcn \fi}
\def\psarc@type{0}
\def\psarc@showpoints{gsave
  newpath
  x y moveto
  x y r \pst@tempa \pst@tempb
  \ifcase\psarc@type arc \or arcn \fi
  closepath
  CLW 2 div SLW
  [ \psk@dash\space ] 0 setdash stroke
  grestore }
\def\psarcn{\pst@object{psarcn}}
\def\psarcn@i{\def\psarc@type{1}\psarc@i}
\def\psellipticwedge{\def\pst@par{}\pst@object{psellipticwedge}}
\def\psellipticwedge@i(#1){\@ifnextchar({\psellipticwedge@ii(#1)}{\psellipticwedge@ii(0,0)(#1)}}
\def\psellipticwedge@ii(#1)(#2)#3#4{\begin@ClosedObj
    \pst@getangle{#3}\pst@tempa
    \pst@getangle{#4}\pst@tempb
    \pst@getcoor{#1}\pst@tempc
    \pst@@getcoor{#2}\def\pst@linetype{1}\addto@pscode{\pst@tempa \pst@tempb
      \pst@coor
      \pst@tempc moveto
      \ifdim\psk@dimen\p@=\z@\else
        \psk@dimen CLW mul dup 3 1 roll
        sub 3 1 roll sub exch
      \fi
      \pst@tempc
      \tx@Ellipse
      closepath}\showpointsfalse
  \end@ClosedObj }
\def\psellipticarcn{\def\pst@par{}\pst@object{psellipticarcn}}
\def\psellipticarcn@i{\let\if@psarcn\iftrue\psellipticarc@ii}
\def\psellipticarc{\def\pst@par{}\pst@object{psellipticarc}}
\def\psellipticarc@i{\let\if@psarcn\iffalse\psellipticarc@ii}
\let\if@psarcn\iffalse
\def\psellipticarc@ii{\pst@getarrows\psellipticarc@iii}
\def\psellipticarc@iii(#1){\@ifnextchar({\psellipticarc@iv(#1)}{\psellipticarc@iv(0,0)(#1)}}
\def\psellipticarc@iv(#1)(#2)#3#4{\begin@OpenObj
  \pst@getcoor{#1}\pst@tempa
  \pst@getcoor{#2}\pst@tempb
  \pst@getangle{#3}\pst@tempc
  \pst@getangle{#4}\pst@tempd
  \addto@pscode{\psellipticarc@definearg \psellipticarc@draw}\showpointsfalse
  \end@OpenObj }
\def\psellipticarc@definearg{\pst@tempa /yOrig ED /xOrig ED  \pst@tempb              \ifdim\psk@dimen\p@=\z@\else
    \psk@dimen CLW mul dup 3 1 roll
    sub 3 1 roll sub exch
  \fi
  /ry ED /rx ED
  /angleA
    /d {  \if@psarcn sub \else add \fi } def
    \pst@tempc \psk@arcsepA 2 div
    ArcAdjust
  def
  /angleB
    /d { \if@psarcn add \else sub \fi } def
    \pst@tempd \psk@arcsepB 2 div ArcAdjust
  def
  \ifshowpoints\psellipticarc@showpoints\fi
  \ifx\psk@arrowA\@empty
    \ifnum\psk@liftpen=2
      angleA cos rx mul xOrig add
      angleA sin ry mul yOrig add
      moveto
    \fi
  \fi
}
\def\psellipticarc@draw{0 0 1
  angleA
  \ifx\psk@arrowA\@empty\else
    { ArrowA CP }
    { \if@psarcn sub \else add \fi }
    EllipticArcArrow
  \fi
  angleB
  \ifx\psk@arrowB\@empty\else
    { ArrowB }
    { \if@psarcn add \else sub \fi }
    EllipticArcArrow
  \fi
  /mtrx CM def
  xOrig yOrig T
  rx ry scale
  \if@psarcn arcn \else arc \fi
  mtrx setmatrix}
\def\psellipticarc@showpoints{gsave
  /mtrx CM def
  xOrig yOrig T
  rx ry scale
  0 0 moveto
  0 0 1 \pst@tempc \pst@tempd
  \ifcase\psarc@type arc \or arcn \fi
  closepath
  mtrx setmatrix
  CLW 2 div SLW
  [ \psk@dash\space ] 0 setdash stroke
  grestore }
\def\pscircle{\pst@object{pscircle}}
\def\pscircle@i{\@ifnextchar({\pscircle@do}{\pscircle@do(0,0)}}
\def\pscircle@do(#1)#2{\if@star{\use@par\qdisk(#1){#2}}\else \begin@ClosedObj
    \pst@@getcoor{#1}\pssetlength\pst@dimc{#2}\def\pst@linetype{4}\addto@pscode{
      \pst@coor
      \pst@number\pst@dimc
      \psk@dimen CLW mul sub
      0 360 arc
      closepath }\showpointsfalse
    \end@ClosedObj
  \fi
  \ignorespaces}
\def\qdisk(#1)#2{\def\pst@par{}\begin@SpecialObj
  \pst@@getcoor{#1}\pssetlength\pst@dimg{#2}\addto@pscode{ \pst@coor \pst@number\pst@dimg \tx@SD }\end@SpecialObj}
\def\psset@radius#1{\pst@@getlength{#1}\psk@radius}
\psset@radius{.25cm}
\def\psCircle{\pst@object{psCircle}}
\def\psCircle@i{\@ifnextchar({\psCircle@ii}{\psCircle@ii(0,0)}}
\def\psCircle@ii(#1){\pscircle@do(#1){\psk@radius}}
\def\pswedge{\pst@object{pswedge}}
\def\pswedge@i{\@ifnextchar({\pswedge@ii}{\pswedge@ii(0,0)}}
\def\pswedge@ii(#1)#2#3#4{\begin@ClosedObj
  \pssetlength\pst@dimc{#2}
  \pst@getangle{#3}\pst@tempa
  \pst@getangle{#4}\pst@tempb
  \pst@@getcoor{#1}\def\pst@linetype{1}\addto@pscode{\pst@coor
    2 copy
    moveto
    \pst@number\pst@dimc \psk@dimen CLW mul sub \pst@tempa \pst@tempb
    arc
    closepath}\showpointsfalse
  \end@ClosedObj }
\def\tx@Ellipse{Ellipse }
\def\psellipse{\pst@object{psellipse}}
\def\psellipse@i(#1){\@ifnextchar({\psellipse@ii(#1)}{\psellipse@ii(0,0)(#1)}}
\def\psellipse@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\addto@pscode{0 360
    \pst@coor
    \ifdim\psk@dimen\p@=\z@\else
      \psk@dimen CLW mul
      dup 4 -1 roll sub neg 3 1 roll sub
    \fi
    \pst@tempa
    \tx@Ellipse
    closepath}\def\pst@linetype{2}\end@ClosedObj }
\def\multips{\@ifnextchar({\def\pst@par{}\multips@ii}{\multips@i}}
\def\multips@i#1{\def\pst@par{rot=#1}\multips@ii}
\def\multips@ii(#1){\@ifnextchar({\multips@iii(#1)}{\multips@iii(\z@,\z@)(#1)}}
\long\def\multips@iii(#1)(#2)#3#4{\begingroup
\pst@killglue
\use@par
  \pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\pst@cnta=#3\relax
  \init@pscode
  \addto@pscode{\pst@tempa T \the\pst@cnta\space \pslbrace
    gsave \ifx\psk@rot\@empty\else\psk@rot rotate \fi}\hbox to\z@{\def\init@pscode{\addto@pscode{gsave
        \pst@number\pslinewidth SLW
        \pst@usecolor\pslinecolor}}\def\use@pscode{\addto@pscode{grestore}}\def\psclip##1{\pst@misplaced\psclip}\def\nc@object##1##2##3##4{\pst@misplaced{node connection}}#4}\addto@pscode{grestore \pst@coor T \psrbrace repeat}\leavevmode
  \use@pscode
  \endgroup
  \ignorespaces}
\def\psscalebox#1{\pst@makebox{\ps@scalebox{#1}}}
\def\ps@scalebox#1{\begingroup \pst@getscale{#1}\pst@tempa \let\pst@tempc\pst@tempg \let\pst@tempd\pst@temph \ps@@scalebox \endgroup}
\def\ps@@scalebox{\leavevmode \hbox{\ifdim\pst@tempd\p@<\z@ \pst@dimg=\pst@tempd\ht\pst@hbox \pst@dimh=\pst@tempd\dp\pst@hbox \dp\pst@hbox=-\pst@dimg \ht\pst@hbox=-\pst@dimh \else \ht\pst@hbox=\pst@tempd\ht\pst@hbox \dp\pst@hbox=\pst@tempd\dp\pst@hbox \fi \pst@dima=\pst@tempc\wd\pst@hbox \ifdim\pst@dima<\z@\kern-\pst@dima\fi \pst@Verb{CP CP translate \pst@tempa \tx@NET}\hbox to \z@{\box\pst@hbox\hss}\pst@Verb{
      CP CP translate
      1 \pst@tempc div 1 \pst@tempd div scale
      \tx@NET}\ifdim\pst@dima>\z@\kern\pst@dima\fi }}
\pslongbox{Scalebox}{\psscalebox}
\def\psscaleboxto(#1,#2){\pst@makebox{\ps@scaleboxto(#1,#2)}}
\def\ps@scaleboxto(#1,#2){\begingroup
  \pssetlength\pst@dima{#1}\pssetlength\pst@dimb{#2}\ifdim\pst@dima=\z@\else
    \pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempc
    \edef\pst@tempc{\pst@tempc\space}\fi
  \ifdim\pst@dimb=\z@
    \ifdim\pst@dima=\z@
      \@pstrickserr{\string\psscaleboxto\space dimensions cannot both be zero}\@ehpa
      \def\pst@tempa{}\def\pst@tempc{1 }\def\pst@tempd{1 }\else
      \let\pst@tempd\pst@tempc
    \fi
  \else
    \pst@dimc=\ht\pst@hbox
    \advance\pst@dimc\dp\pst@hbox
    \pst@divide{\pst@dimb}{\pst@dimc}\pst@tempd
    \edef\pst@tempd{\pst@tempd\space}\ifdim\pst@dima=\z@ \let\pst@tempc\pst@tempd \fi
  \fi
  \edef\pst@tempa{\pst@tempc \pst@tempd scale }\ps@@scalebox
  \endgroup}
\pslongbox{Scaleboxto}{\psscaleboxto}
\def\tx@Rot{Rot }
\def\psrotateleft{\pst@makebox{\ps@rotateleft\pst@hbox}}
\def\ps@rotateleft#1{\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1\pst@Verb{90 \tx@Rot}
\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}\pst@Verb{-90 \tx@Rot}}}}
\def\psrotateright{\pst@makebox{\ps@rotateright\pst@hbox}}
\def\ps@rotateright#1{\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1\pst@Verb{-90 \tx@Rot}
  \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}\pst@Verb{90 \tx@Rot}}}}
\def\psrotatedown{\pst@makebox{\ps@rotatedown\pst@hbox}}
\def\ps@rotatedown#1{\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1\pst@Verb{180 \tx@Rot}\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}\pst@Verb{-180 \tx@Rot}}}}
\pslongbox{Rotateleft}{\psrotateleft}
\pslongbox{Rotateright}{\psrotateright}
\pslongbox{Rotatedown}{\psrotatedown}
\let\rotateleft\psrotateleft
\let\rotateright\psrotateright
\let\rotatedown\psrotatedown
\def\pst@starbox{\setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}}
\def\pst@@makesmall#1{\setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}}
\def\pst@@@makesmall#1{\pst@dimh=\psk@xref\wd#1\ifx\psk@yref\relax
\pst@dimg=\dp#1\else
\pst@dimg=\psk@yref\ht#1\advance\pst@dimg\psk@yref\dp#1\fi
\setbox#1=\hbox to\z@{\kern-\pst@dimh\vbox to\z@{\vss\box#1\kern-\pst@dimg}\hss}}
\def\psset@ref#1{\pst@expandafter\psset@@ref{#1}\@empty,,\@nil}
\def\psset@@ref#1#2,#3,#4\@nil{\def\psk@xref{.5}\def\psk@yref{.5}\let\pst@makesmall\pst@@@makesmall
  \ifx\@empty#3\@empty
    \@nameuse{getref@#1}\@nameuse{getref@#2}\else
    \pst@checknum{#1#2}\psk@xref
    \pst@checknum{#3}\psk@yref
  \fi}
\def\getref@c{\let\pst@makesmall\pst@@makesmall}
\def\getref@t{\def\psk@yref{1}}
\def\getref@b{\def\psk@yref{0}}
\def\getref@B{\let\psk@yref\relax}
\def\getref@l{\def\psk@xref{0}}
\def\getref@r{\def\psk@xref{1}}
\psset@ref{c}
\def\psset@rot#1{\pst@expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil}
\def\psset@@rot#1\@nil{\def\next##1@#1=##2@##3\@nil{\ifx\relax##2\pst@getangle{#1}\psk@rot
\else
\def\psk@rot{##2}\fi}\expandafter\next\pst@rottable @#1=\relax @\@nil}
\def\psset@@@rot#1#2\@nil{\psset@@rot#2\@nil
\edef\psk@rot{\pst@rotlist \ifx\psk@rot\@empty\else\psk@rot add \fi}}
\def\pst@rotlist{mark RAngle /a ED cleartomark a neg }
\def\pst@rottable{@0=@U=@L=90 @D=180 @R=-90 @N=\pst@rotlist
@W=\pst@rotlist 90 add @S=\pst@rotlist 180 add @E=\pst@rotlist 90 sub }
\psset@rot{0}
\def\tx@RotBegin{RotBegin }
\def\tx@RotEnd{RotEnd }
\def\pst@rotate#1#2{\ifx#1\@empty\else
  \setbox#2=\hbox{\pst@Verb{#1 \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}\fi }
\def\psput@cartesian#1{\hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}}
\def\psput@special#1{\hbox{\pst@Verb{{ \pst@coor } \tx@PutCoor \tx@PutBegin }\box#1\pst@Verb{ \tx@PutEnd }}}
\def\tx@PutCoor{PutCoor }
\def\tx@PutBegin{PutBegin }
\def\tx@PutEnd{PutEnd }
\def\rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rput@i}{\rput@ii}}}
\def\rput@i[#1]{\addto@par{ref={#1}}\rput@ii}
\def\rput@ii{\@ifnextchar({\rput@iv}{\rput@iii}}
\def\rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\rput@iv}{\rput@iv(\z@,\z@)}}
\def\rput@iv(#1){\pst@killglue\pst@makebox{\rput@v{#1}}}
\def\rput@v#1{\begingroup
    \use@par
    \if@star\pst@starbox\fi
    \pst@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces }
\def\multirput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\multirput@i}{\multirput@ii}}}
\def\multirput@i[#1]{\addto@par{ref={#1}}\multirput@ii}
\def\multirput@ii{\@ifnextchar({\multirput@iv}{\multirput@iii}}
\def\multirput@iii#1{\addto@par{rot={#1}}\multirput@iv}
\def\multirput@iv(#1){\@ifnextchar({\multirput@v(#1)}{\multirput@v(\z@,\z@)(#1)}}
\def\multirput@v(#1,#2)(#3,#4)#5{\pst@makebox{\multirput@vi(#1,#2)(#3,#4){#5}}}
\def\multirput@vi(#1,#2)(#3,#4)#5{\pst@killglue
  \begingroup
    \use@par
    \if@star\pst@starbox\fi
    \pst@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \pssetxlength\pst@dima{#1}\pssetylength\pst@dimb{#2}\pssetxlength\pst@dimc{#3}\pssetylength\pst@dimd{#4}\pst@cntg=#5\relax
    \pst@cnth=\@ne
    \leavevmode
    \loop
      \vbox to \z@{\vss
        \hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}\vskip\pst@dimb }\ifnum\pst@cntg>\pst@cnth
        \advance\pst@dima\pst@dimc
        \advance\pst@dimb\pst@dimd
        \advance\pst@cnth\@ne
    \repeat 
    \endgroup
  \ignorespaces }
\newif\if@fixedradius
\def\cput{\pst@object{cput}}
\def\cput@i{\@fixedradiusfalse\cput@ii}
\def\cput@ii{\pst@killglue\@ifnextchar({\cput@iv}{\cput@iii}}
\def\cput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\cput@iv}{\cput@iv(\z@,\z@)}}
\def\cput@iv(#1){\pst@makebox{\cput@v{#1}}}
  \def\cput@v#1{\begingroup
    \use@par
    \setbox\pst@hbox=\hbox{\psboxsepfalse
      \if@fixedradius\psCirclebox@ii\else\pscirclebox@ii\fi }\pst@@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces }
\def\Cput{\pst@object{Cput}}
\def\Cput@i{\@fixedradiustrue\cput@ii}
\newdimen\pslabelsep
\def\psset@labelsep#1{\pssetlength\pslabelsep{#1}}
\psset@labelsep{5pt}
\def\psset@refangle#1{\pst@expandafter\psset@@refangle{#1}\@nil}
\def\psset@@refangle#1\@nil{\def\next##1@#1=##2"##3@##4\@nil{\ifx\relax##2\pst@getangle{#1}\psk@refangle
\def\psk@uputref{}\else
\def\psk@refangle{##2 }\def\psk@uputref{##3}\fi}\expandafter\next\pst@refangletable @#1=\relax"@\@nil}
\def\pst@refangletable{@r=0"20@u=90"02@l=180"10@d=-90"01@ur=45"22@ul=135"12@dr=-135"21@dl=-45"11}
\psset@refangle{0}
\def\uput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\uput@ii}{\uput@i}}} 
\def\uput@i#1{\addto@par{labelsep=#1}\uput@ii}
\def\uput@ii[#1]{\addto@par{refangle={#1}}\@ifnextchar({\uput@iv}{\uput@iii}}
\def\uput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\uput@iv}{\uput@iv(\z@,\z@)}}
\def\uput@iv(#1){\pst@killglue\pst@makebox{\uput@v{#1}}}
\def\uput@v#1{\begingroup
\use@par
\if@star\pst@starbox\fi
\uput@vi
\psput@{#1}\pst@hbox
\endgroup
\ignorespaces}
\def\uput@vi{\ifx\psk@uputref\@empty
\uput@vii\tx@UUput{}\else
\ifx\psk@rot\@empty
\expandafter\uput@viii\psk@uputref
\else
\uput@vii\tx@UUput{}\fi
\fi}
\def\uput@vii#1#2{\edef\pst@coor{\pst@number\pslabelsep
    #2\pst@number{\wd\pst@hbox}\pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}\psk@refangle\space \ifx\psk@rot\@empty\else\psk@rot\space sub \fi
    \tx@Uput #1}\setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}\setbox\pst@hbox=\psput@special\pst@hbox
  \ifx\psk@rot\@empty\else\pst@rotate\psk@rot\pst@hbox\fi}
\def\uput@viii#1#2{\ifnum#1>\z@\ifnum#2>\z@\pslabelsep=.707\pslabelsep\fi\fi
  \setbox\pst@hbox=\vbox to\z@{\ifnum#2=1 \vskip\pslabelsep\else\vss\fi
    \hbox to\z@{\ifnum#1=2 \hskip\pslabelsep\else\hss\fi
      \box\pst@hbox
      \ifnum#1=1 \hskip\pslabelsep\else\hss\fi}\ifnum#2=2 \vskip\pslabelsep\else\vss\fi}}
\def\tx@Uput{Uput }
\def\tx@UUput{UUput }
\def\Rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Rput@ii}{\Rput@i}}}
\def\Rput@i#1{\addto@par{labelsep=#1}\Rput@ii}
\def\Rput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Rput@iv}{\Rput@iii}}
\def\Rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\Rput@iv}{\Rput@iv(\z@,\z@)}}
\def\Rput@iv(#1){\pst@killglue\pst@makebox{\Rput@v{#1}}}
\def\Rput@v#1{\begingroup
  \use@par
  \if@star\pst@starbox\fi
  \Rput@vi
  \pst@makesmall\pst@hbox
  \pst@rotate\psk@rot\pst@hbox
  \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces}
\def\Rput@vi{\pst@dimg=\dp\pst@hbox
  \advance\pst@dimg\pslabelsep
  \dp\pst@hbox=\pst@dimg
  \pst@dimg=\ht\pst@hbox
  \advance\pst@dimg\pslabelsep
  \ht\pst@hbox=\pst@dimg
  \setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}\def\oldpsput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\oldpsput@i}{\oldpsput@ii}}}
\def\oldpsput@i[#1]{\addto@par{ref={#1}}\oldpsput@ii}
\def\oldpsput@ii{\@ifnextchar<{\oldpsput@iii}{\oldpsput@iv}}
\def\oldpsput@iii<#1>{\rput@iii{#1}}
\def\OldPsput{\let\psput\oldpsput}
\def\NewPsput{\let\psput\rput}
\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
\newif\ifshowgrid
\def\psset@showgrid#1{\@nameuse{showgrid#1}}
\psset@showgrid{false}
\newdimen\pst@shift
\def\psset@shift#1{\pssetlength\pst@dimg{#1}\pst@shift\pst@dimg}
\psset@shift{0}
\def\pspicture{\begingroup\pst@ifstar\pst@picture}
\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
\def\pst@@picture[#1]#2(#3,#4){\@ifnextchar({\pst@@@picture[#1](#3,#4)}{\pst@@@picture[#1](0,0)(#3,#4)}}
\def\pst@@@picture[#1](#2,#3)(#4,#5){\pssetxlength\pst@dima{#2}\pssetylength\pst@dimb{#3}\pssetxlength\pst@dimc{#4}\pssetylength\pst@dimd{#5}\ifdim\pst@dima>\pst@dimc \pst@dimg=\pst@dima \pst@dima=\pst@dimc \pst@dimc=\pst@dimg \fi \ifdim\pst@dimb>\pst@dimd \pst@dimg=\pst@dimb \pst@dimb=\pst@dimd \pst@dimd=\pst@dimg \fi \setbox\pst@hbox=\hbox\bgroup \begingroup\KillGlue \@ifundefined{@latexerr}{}{\let\unitlength\psunit}\edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}\psset{showgrid=false}\def\pst@tempA{#1}\ifx\pst@tempA\@empty\else\psset{#1}\fi \ifshowgrid\psgrid[style=gridstyle]\fi }
\def\pic@coor{(0,0)(0,0)(10,10)}
\newdimen\pst@shift
\def\endpspicture{\pst@killglue
  \global\pst@shift=\pst@shift \endgroup
  \egroup
  \ifdim\wd\pst@hbox=\z@\else
\fi
  \ht\pst@hbox=\pst@dimd
  \dp\pst@hbox=-\pst@dimb
  \setbox\pst@hbox=\hbox{\kern-\pst@dima
\pst@dimd-\pst@shift
\advance\pst@dimd\pst@dimb
    \lower\pst@dimd \box\pst@hbox \kern\pst@dimc}\if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
  \leavevmode\box\pst@hbox
  \endgroup \global\pst@shift\z@ }
\@namedef{pspicture*}{\pspicture*}
\@namedef{endpspicture*}{\endpspicture}
\def\tx@BeginOL{BeginOL }
\def\tx@InitOL{InitOL }
\def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}}
\def\AltOverlayMode{\def\pst@initoverlay##1{\pst@Verb{\tx@InitOL
      /Visible { initclip } def
      /Invisible {
        CP newpath OLUnit itransform moveto clip newpath moveto
      } def
      /TheOL (##1) def}}}
\def\pst@overlay#1{\edef\curr@overlay{#1}\pst@Verb{(#1) BOL}\aftergroup\pst@endoverlay}
\def\pst@endoverlay{\pst@Verb{(\curr@overlay) BOL}}
\def\curr@overlay{all}
\newbox\theoverlaybox
\def\overlaybox{\global\setbox\theoverlaybox=\hbox\bgroup
  \begingroup
  \let\psoverlay\pst@overlay
  \def\overlaybox{\@pstrickserr{Overlays cannot be nested}\@eha}\def\putoverlaybox{\@pstrickserr{You must end the overlay box
         before using \string\putoverlaybox}}\psoverlay{main}\ignorespaces}
\def\endoverlaybox{\endgroup\egroup}
\def\putoverlaybox#1{\hbox{\pst@initoverlay{#1}\copy\theoverlaybox}}
\def\psoverlay{\@pstrickserr{\string\psoverlay\space
  can only be used after \string\overlaybox}}
\ifx\pstcustomize\relax 

\def\pstdriver{Rokicki's dvips}
{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}}  \def\pstunit{1bp}\def\pstVerb#1{\special{ps: #1}}
\def\pstverbscale{SDict begin normalscale end}
\ifx\textsuperscript\@undefined
   \def\pstheader#1{\special{header=#1}}
\else
  \ifx\Gin@PS@file@header\@undefined
    \def\pstheader#1{\AtBeginDvi{\special{header=#1}}}
  \else
    \let\pstheader\Gin@PS@file@header
  \fi
\fi
\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET}




%
 \fi
\catcode`\@=\PstAtCode\relax
%
 \fi
\ifx\PSTplotLoaded\endinput\else \csname PSTplotLoaded\endcsname
\let\PSTplotLoaded\endinput

\ifx\PSTricksLoaded\endinput\else
  \def\next{\def\fileversion{1.20}
\def\filedate{2008/01/01}
\csname PSTricksLoaded\endcsname
\let\PSTricksLoaded\endinput
\edef\PstAtCode{\the\catcode`\@}
\catcode`\@=11\relax
\expandafter\ifx\csname @latexerr\endcsname\relax
\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
  #1\endcsname\relax#2\else#3\fi}
\def\@namedef#1{\expandafter\def\csname #1\endcsname}
\def\@nameuse#1{\csname #1\endcsname}
\def\@eha{Your command was ignored.^^J
  Type \space I <command> <return> \space to replace
  it with another command,^^J
  or \space <return> \space to continue without it.}
\def\@spaces{\space\space\space\space}
\def\typeout#1{\immediate\write\@unused{#1}}
\alloc@7\write\chardef\sixt@@n\@unused
\def\@empty{}
\def\@gobble#1{}
\def\@nnil{\@nil}
\def\@ifnextchar#1#2#3{\let\@tempe#1\def\@tempa{#2}\def\@tempb{#3}\futurelet\@tempc\@ifnch}
\def\@ifnch{\ifx\@tempc\@sptoken \let\@tempd\@xifnch
  \else\ifx\@tempc\@tempe \let\@tempd\@tempa \else \let\@tempd\@tempb \fi
  \fi
  \@tempd}
\begingroup
\def\:{\global\let\@sptoken= } \:
\def\:{\@xifnch} \expandafter\gdef\: {\futurelet\@tempc\@ifnch}
\endgroup
\fi
\def\ps@ifnextchar#1#2#3{\let\reserved@d= #1\def\reserved@a{#2}\def\reserved@b{#3}\futurelet\@let@token\ps@ifnch}
\def\ps@ifnch{\ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi
  \reserved@b
}
\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz)}
\def\@pstrickserr#1#2{\begingroup
  \newlinechar`\^^J
  \edef\pst@tempc{#2}\expandafter\errhelp\expandafter{\pst@tempc}\typeout{PSTricks error. \space See User's Guide for further information.^^J
    \@spaces\@spaces\@spaces\@spaces
    Type \space H <return> \space for immediate help.}\errmessage{#1}\endgroup}
\def\@ehpa{Your command was ignored. Default value substituted.^^J
  Type \space <return> \space to procede.}
\def\@ehpb{Your command was ignored. Will recover best I can.^^J
  Type \space <return> \space to procede.}
\def\@ehpc{You better fix this before proceding.^^J
  See the PSTricks User's Guide or ask your system administrator for help.^^J
  Type \space X <return> \space to quit.}
\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb}
\newdimen\pst@dima
\newdimen\pst@dimb
\newdimen\pst@dimc
\newdimen\pst@dimd
\newdimen\pst@dimg
\newdimen\pst@dimh
\newbox\pst@hbox
\newbox\pst@boxg
\newcount\pst@cnta
\newcount\pst@cntb
\newcount\pst@cntc
\newcount\pst@cntd
\newcount\pst@cntg
\newcount\pst@cnth
\newif\if@pst
\newtoks\pst@toks
\newif\if@star
\def\pst@ifstar#1{\@ifnextchar*{\@startrue\def\next*{#1}\next}{\@starfalse#1}}
\def\pst@expandafter#1#2{\def\next{#1}\edef\@tempa{#2}\ifx\@tempa\@empty
    \@pstrickserr{Unexpected empty argument!}\@ehpb
    \def\@tempa{\@empty}\fi
  \expandafter\next\@tempa}
\def\pst@dimtonum#1#2{\edef#2{\pst@@dimtonum#1}}
\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1}
{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}}
\def\pst@pyth#1#2#3{\begingroup
    \pst@dima=#1\relax
    \ifnum\pst@dima<\z@\pst@dima=-\pst@dima\fi  \pst@dimb=#2\relax
    \ifnum\pst@dimb<\z@\pst@dimb=-\pst@dimb\fi  \advance\pst@dimb\pst@dima         \ifnum\pst@dimb=\z@
      \global\pst@dimg=\z@             \else
      \multiply\pst@dima 8\relax              \pst@@divide\pst@dima\pst@dimb     \advance\pst@dimg -4pt            \multiply\pst@dimg 2
      \pst@dimtonum\pst@dimg\pst@tempa
      \pst@dima=\pst@tempa\pst@dimg           \advance\pst@dima 64pt         \divide\pst@dima 2\relax                      \pst@dimd=7pt                \pst@@pyth\pst@@pyth\pst@@pyth            \pst@dimtonum\pst@dimd\pst@tempa
      \pst@dimg=\pst@tempa\pst@dimb
      \global\divide\pst@dimg 8             \fi
  \endgroup
  #3=\pst@dimg}
\def\pst@@pyth{\pst@@divide\pst@dima\pst@dimd
  \advance\pst@dimd\pst@dimg
  \divide\pst@dimd 2\relax}
\iffalse
\def\pst@pyth#1#2#3{\ifdim#1>#2\pst@@pyth#1#2#3\else\pst@@pyth#2#1#3\fi}
\def\pst@@pyth#1#2#3{\ifdim4#1>9#2#3=#1\advance#3 .2122#2\else
    #3=.8384#1\advance#3 .5758#2\fi }
\fi
\def\pst@divide#1#2#3{\pst@@divide{#1}{#2}\pst@dimtonum\pst@dimg{#3}}
\def\pst@@divide#1#2{\pst@dimg=#1\relax
  \pst@dimh=#2\relax
  \pst@cntg=\pst@dimh
  \pst@cnth=67108863
  \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide
  \divide\pst@dimg\pst@cntg }
\def\pst@@@divide{\ifnum
    \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cnth
      \multiply\pst@dimg\sixt@@n
    \else
      \divide\pst@cntg\sixt@@n
    \fi }
\def\pst@configerr#1{\@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc}
\def\pstVerb#1{\pst@configerr\pstVerb}
\def\pstverb#1{\pst@configerr\pstverb}
\def\pstverbscale{\pst@configerr\pstverbscale}
\def\pstrotate{\pst@configerr\pstrotate}
\def\pstheader#1{\pst@configerr\pstheader}
\def\pstdriver{\pst@configerr\pstdriver}
\@ifundefined{pstcustomize}{\def\pstcustomize{\endinput\let\pstcustomize\relax}}{}


\def\pstdriver{Rokicki's dvips}
{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}}  \def\pstunit{1bp}\def\pstVerb#1{\special{ps: #1}}
\def\pstverbscale{SDict begin normalscale end}
\ifx\textsuperscript\@undefined
   \def\pstheader#1{\special{header=#1}}
\else
  \ifx\Gin@PS@file@header\@undefined
    \def\pstheader#1{\AtBeginDvi{\special{header=#1}}}
  \else
    \let\pstheader\Gin@PS@file@header
  \fi
\fi
\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET}




%
 \newif\ifPSTricks
\PSTrickstrue
\def\PSTricksOff{\def\pstheader##1{}\def\pstverb##1{}\def\pstVerb##1{}\PSTricksfalse }
\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{}
\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{}
\pstheader{pstricks.pro}
\pstheader{pst-algparser.pro}
\def\pst@dict{tx@Dict begin }
\def\pst@theheaders{pstricks.pro pst-algparser.pro}
\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}}
\def\tx@Atan{Atan }
\def\tx@Div{Div }
\def\tx@NET{NET }
\def\tx@Pyth{Pyth }
\def\tx@PtoC{PtoC }
\def\tx@PathLength@{PathLength@ }
\def\tx@PathLength{PathLength }
\pst@dimg=\pstunit\relax
\ifdim\pst@dimg=1bp
\def\pst@stp{.996264 dup scale}
\else
\edef\pst@stp{1 \pst@@dimtonum\pst@dimg\space div dup scale}
\fi
\def\tx@STP{STP }
\def\tx@STV{STV }
\pst@def{UserCoor}< \pst@number\psyunit div exch \pst@number\psxunit div exch >
\pst@def{ScreenCoor}< \pst@number\psyunit mul exch \pst@number\psxunit mul exch >
\def\pst@number#1{\pst@@dimtonum#1\space}
\def\pst@checknum#1#2{\edef\next{#1}\ifx\next\@empty
    \let\pst@num\z@
  \else
    \expandafter\pst@@checknum\next..\@nil
  \fi
  \ifnum\pst@num=\z@
    \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa
    \def#2{0 }\else
    \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.\expandafter\@gobble\the\pst@cnth\space}\fi}
\def\pst@@checknum{\@ifnextchar-{\let\pst@num\tw@\expandafter\pst@@@checknum\@gobble}{\let\pst@num\@ne\pst@@@checknum}}
\def\pst@@@checknum#1.#2.#3\@nil{\afterassignment\pst@@@@checknum\pst@cntg=0#1\relax\@nil
\afterassignment\pst@@@@checknum\pst@cnth=1#2\relax\@nil}
\def\pst@@@@checknum#1\relax\@nil{\ifx\@nil#1\@nil\else\let\pst@num\z@\fi}
\def\pst@getnumii#1 #2 #3\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph}
\def\pst@getnumiii#1 #2 #3 #4\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi}
\def\pst@getnumiv#1 #2 #3 #4 #5\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi
\pst@checknum{#4}\pst@tempj}
\def\pst@getdimnum#1 #2 #3\@nil{\pssetlength\pst@dimg{#1}\pst@checknum{#2}\pst@tempg }
\def\pst@getscale#1#2{\edef\pst@tempg{#1}\ifx\pst@tempg\@none
    \def#2{}\else
    \pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil
    \ifdim\pst@tempg\p@=\z@
      \@pstrickserr{Bad scaling argument `#1'}\@ehpa
      \def#2{}\else
      \ifdim\pst@temph\p@=\z@
        \@pstrickserr{Bad scaling argument `#1'}\@ehpa
        \def#2{}\else
        \edef#2{\pst@tempg\space \pst@temph\space scale }\fi
    \fi
  \fi }
\def\pst@getint#1#2{\pst@cntg=#1\relax
  \edef#2{\the\pst@cntg\space}}
\begingroup
\catcode`\{=12
\catcode`\}=12
\catcode`\[=1
\catcode`\]=2
\gdef\pslbrace[{ ]
\gdef\psrbrace[} ]
\endgroup
\def\@newcolor#1#2{\expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}\expandafter\edef\csname\string\color@#1\endcsname{#2}\ignorespaces}
\def\pst@color#1{\def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}
\def\pst@endcolor{\pstVerb{\pst@currentcolor}}
\def\pst@currentcolor{0 setgray}
\def\altcolormode{\def\pst@color##1{\pstVerb{gsave ##1}\aftergroup\pst@endcolor}\def\pst@endcolor{\pstVerb{\pst@grestore}}}
\def\pst@grestore{currentpoint
  matrix currentmatrix
  currentfont
  grestore
  setfont
  setmatrix
  moveto
}
\def\pst@usecolor#1{\csname\string\color@#1\endcsname\space}
\def\newgray#1#2{\pst@checknum{#2}\pst@tempg
  \@newcolor{#1}{\pst@tempg setgray}}
\def\newrgbcolor#1#2{\pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}}
\def\newhsbcolor#1#2{\pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}}
\def\newcmykcolor#1#2{\pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}}
\newgray{black}{0}
\newgray{darkgray}{.25}
\newgray{gray}{.5}
\newgray{lightgray}{.75}
\newgray{white}{1}
\newrgbcolor{red}{1 0 0}
\newrgbcolor{green}{0 1 0}
\newrgbcolor{blue}{0 0 1}
\newrgbcolor{yellow}{1 1 0}
\newrgbcolor{cyan}{0 1 1}
\newrgbcolor{magenta}{1 0 1}
\def\psset#1{\@psset#1,\@nil\ignorespaces}
\def\@psset#1,{\@@psset#1==\@nil \@ifnextchar\@nil{\@gobble}{\@psset}}
\def\@@psset#1=#2=#3\@nil{\@ifundefined{psset@#1}{\@pstrickserr{Graphics parameter `#1' not defined.}\@ehpa}{\@nameuse{psset@#1}{#2}}}\def\psset@style#1{\@ifundefined{pscs@#1}{\@pstrickserr{Custom style `#1' undefined}\@ehpa}{\@nameuse{pscs@#1}}}
\def\newpsstyle#1#2{\@namedef{pscs@#1}{\def\pst@tempA{#2}\ifx\pst@tempA\@empty\else\psset{#2}\fi}}
\def\addto@psstyle#1#2{\pst@toks=\expandafter{#1#2}\edef#1{\the\pst@toks}}
\def\addtopsstyle#1#2{\def\pst@tempA{#2}\ifx\pst@tempA\@empty\else
    \@ifundefined{pscs@#1}{\newpsstyle{#1}{#2}}{\expandafter\addto@psstyle\csname pscs@#1\endcsname{\psset{#2}}}\fi}
\def\@none{none}
\def\pst@getcolor#1#2{\@ifundefined{\string\color@#1}{\@pstrickserr{Color `#1' not defined}\@eha}{\edef#2{#1}}}
\newdimen\psunit \psunit 1cm
\newdimen\psxunit \psxunit 1cm
\newdimen\psyunit \psyunit 1cm
\let\psrunit\psunit
\def\pstunit@off{\let\@psunit\ignorespaces\ignorespaces}
\def\pssetlength#1#2{\let\@psunit\psunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\psaddtolength#1#2{\let\@psunit\psunit
  \afterassignment\pstunit@off
  \advance#1 #2\@psunit }
\def\pssetxlength#1#2{\let\@psunit\psxunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\pssetylength#1#2{\let\@psunit\psyunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\psset@unit#1{\pssetlength\psunit{#1}\psxunit=\psunit
  \psyunit=\psunit }
\def\psset@runit#1{\pssetlength\psrunit{#1}}
\def\psset@xunit#1{\pssetxlength\psxunit{#1}}
\def\psset@yunit#1{\pssetylength\psyunit{#1}}
\def\psset@PstDebug#1{\pst@getint{#1}{\Pst@Debug}}\psset{PstDebug=0}
\def\pst@getlength#1#2{\pssetlength\pst@dimg{#1}\edef#2{\pst@number\pst@dimg}}
\def\pst@@getlength#1#2{\pssetlength\pst@dimg{#1}\edef#2{\number\pst@dimg sp}}
\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor}
\def\pst@coor{0 0 }
\def\pst@getcoors#1#2{\def\pst@aftercoors{\addto@pscode{#1 \pst@coors }#2}\def\pst@coors{}\pst@@getcoors }
\def\pst@@getcoors(#1){\pst@@getcoor{#1}\edef\pst@coors{\pst@coor\pst@coors}\@ifnextchar({\pst@@getcoors}{\pst@aftercoors}}
\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle}
\def\pst@angle{0 }
\def\cartesian@coor#1,#2,#3\@nil{\pssetxlength\pst@dimg{#1}\pssetylength\pst@dimh{#2}\edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}
\def\NormalCoor{\def\pst@@getcoor##1{\pst@expandafter\cartesian@coor{##1},\relax,\@nil}\def\pst@@getangle##1{\pst@checknum{##1}\pst@angle \edef\pst@angle{\pst@angle \pst@angleunit}}\def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@cartesian}}
\NormalCoor
\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}}
\def\@degrees[#1]{\pst@checknum{#1}\pst@tempg
  \edef\pst@angleunit{360 \pst@tempg div mul }\ignorespaces}
\def\radians{\def\pst@angleunit{57.2956 mul }}
\def\pst@angleunit{}
\def\SpecialCoor{\def\pst@@getcoor##1{\begingroup \pst@activecoor \xdef\pst@tempg{##1}\endgroup \expandafter\special@coor\pst@tempg||\@nil }\def\pst@@getangle##1{\begingroup \pst@activecoor \xdef\pst@tempg{##1}\endgroup \expandafter\special@angle\pst@tempg\@empty)\@nil }\def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}}
\begingroup
\catcode`\|=13
\catcode`\;=13
\catcode`\!=13
\catcode`\*=13
\gdef\pst@activecoor{\def|{\string|}\def;{\string;}\def!{\string!}\def*{\string*}}
\endgroup
\def\special@coor#1|#2|#3\@nil{\ifx#3|\relax
    \mixed@coor{#1}{#2}\else
    \special@@coor#1;;\@nil
  \fi }
\def\special@@coor#1{\ifcat#1a\relax \def\next{\node@coor#1}\else
    \ifx#1[\relax \def\next{\Node@coor[}\else
      \ifx#1!\relax \def\next{\raw@coor}\else
        \ifx#1*\relax \def\next{\alg@coor}\else
          \def\next{\special@@@coor#1}\fi
      \fi
    \fi
  \fi
  \next }
\def\special@@@coor#1;#2;#3\@nil{\ifx#3;\relax
    \polar@coor{#1}{#2}\else
    \cartesian@coor#1,\relax,\@nil
  \fi }
\def\mixed@coor#1#2{\begingroup \special@@coor#1;;\@nil \let\pst@tempa\pst@coor \special@@coor#2;;\@nil \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }\endgroup \let\pst@coor\pst@tempg }
\def\polar@coor#1#2{\pssetlength\pst@dimb{#1}\pst@@getangle{#2}\edef\pst@coor{\pst@number\pst@dimb \pst@angle \tx@PtoC}}
\def\raw@coor#1;#2\@nil{\edef\pst@coor{#1 \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
\def\alg@coor#1 #2;#3\@nil{\edef\pst@coor{/x #1 def 
    /Func (#2) AlgParser cvx def    
    x Func 
    \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
\def\node@coor#1\@nil{\@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps
  \def\pst@coor{0 0 }}
\def\Node@coor{\node@coor}
\def\special@angle#1#2)#3\@nil{\ifx!#1\relax
\edef\pst@angle{#2 \pst@angleunit}\else
\ifx(#1\relax
\pst@@getcoor{#2}\edef\pst@angle{\pst@coor exch \tx@Atan}\else
\pst@checknum{#1#2}\pst@angle
\edef\pst@angle{\pst@angle \pst@angleunit}\fi
\fi}
\def\Cartesian{\def\cartesian@coor##1,##2,##3\@nil{\pssetxlength\pst@dimg{##1}\pssetylength\pst@dimh{##2}\edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}\@ifnextchar({\Cartesian@}{}}
\def\Cartesian@(#1,#2){\pssetxlength\psxunit{#1}\pssetylength\psyunit{#2}\ignorespaces }
\def\Polar{\def\psput@cartesian{\psput@special}\def\cartesian@coor##1,##2,##3\@nil{\polar@coor{##1}{##2}}}\def\psset@origin#1{\pst@@getcoor{#1}\edef\psk@origin{\pst@coor T }}
\def\psk@origin{}
\newif\ifswapaxes
\def\psset@swapaxes#1{\@nameuse{@pst#1}\if@pst\def\psk@swapaxes{-90 rotate -1 1 scale }\else\def\psk@swapaxes{}\fi }
\psset@swapaxes{false}
\newif\ifshowpoints
\def\psset@showpoints#1{\@nameuse{showpoints#1}}
\psset@showpoints{false}
\let\pst@setrepeatarrowsflag\relax
\def\psset@border#1{\pst@getlength{#1}\psk@border
\pst@setrepeatarrowsflag}
\psset@border{0pt}
\def\psset@bordercolor#1{\pst@getcolor{#1}\psbordercolor}
\psset@bordercolor{white}
\newif\ifpsdoubleline
\def\psset@doubleline#1{\@nameuse{psdoubleline#1}\pst@setrepeatarrowsflag}
\psset@doubleline{false}
\def\psset@doublesep#1{\def\psdoublesep{#1}}
\psset@doublesep{1.25\pslinewidth}
\def\psset@doublecolor#1{\pst@getcolor{#1}\psdoublecolor}
\psset@doublecolor{white}
\newif\ifpsshadow
\def\psset@shadow#1{\@nameuse{psshadow#1}\pst@setrepeatarrowsflag}
\psset@shadow{false}
\def\psset@shadowsize#1{\pst@getlength{#1}\psk@shadowsize}
\psset@shadowsize{3pt}
\def\psset@shadowangle#1{\pst@getangle{#1}\psk@shadowangle}
\psset@shadowangle{-45}
\def\psset@shadowcolor#1{\pst@getcolor{#1}\psshadowcolor}
\psset@shadowcolor{darkgray}
\def\pst@repeatarrowsflag{\z@}
\def\pst@setrepeatarrowsflag{\edef\pst@repeatarrowsflag{\ifdim\psk@border\p@>\z@ 1\else\ifpsdoubleline 1\else
      \ifpsshadow 1\else \z@\fi\fi\fi}}
\def\psls@none{}
\newdimen\pslinewidth
\def\psset@linewidth#1{\pssetlength\pslinewidth{#1}}
\psset@linewidth{.8pt}
\def\psset@linecolor#1{\pst@getcolor{#1}\pslinecolor}
\psset@linecolor{black}
\def\psls@solid{\psk@linecap\space setlinecap stroke }
\def\psset@linecap#1{\pst@getint{#1}\psk@linecap}\psset@linecap{0}\def\psset@linejoin#1{\pst@getint{#1}\psk@linejoin}\def\tx@setlinejoin{\psk@linejoin\space setlinejoin }\psset@linejoin{0}\def\pst@missing{\z@
  \@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa}
\def\pst@empty{\z@}
\def\psset@dash#1{\pst@expandafter\psset@@dash{#1} {\pst@empty} {\pst@empty} {\pst@missing} {\pst@missing} {}\@nil
  \edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh 
                 \pst@number\pst@dimc \pst@number\pst@dimd}}
\def\psset@@dash#1 #2 #3 #4 #5\@nil{\pssetlength\pst@dimg{#1}\pssetlength\pst@dimh{#2}\pssetlength\pst@dimc{#3}\pssetlength\pst@dimd{#4}}
\psset@dash{5pt 3pt 0pt 0pt}\newif\ifpsdashadjust
\def\psset@dashadjust#1{\@nameuse{psdashadjust#1}}
\psset@dashadjust{true}
\def\tx@DashLine{DashLine }
\def\psls@dashed{\psk@linecap\space setlinecap
\ifpsdashadjust
\psk@dash \@ifundefined{pst@linetype}{2}{\pst@linetype}\space \tx@DashLine
  \else
    [ \psk@dash ] 0 setdash stroke
  \fi}
\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep}
\psset@dotsep{3pt}
\def\tx@DotLine{DotLine }
\def\psls@dotted{\ifpsdashadjust
    \psk@dotsep \pst@linetype\space \tx@DotLine
  \else
    [ 0 \psk@dotsep CLW add ] 0 setdash 1 setlinecap stroke
  \fi }
\def\psset@linestyle#1{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\edef\pslinestyle{#1}}}
\psset@linestyle{solid}
\def\psset@linecap#1{\def\psk@linecap{0}\ifnum#1>-1
    \ifnum#1<3
      \pst@getint{#1}\psk@linecap \fi\fi }
\psset{linecap=0}
\def\psset@fillcolor#1{\pst@getcolor{#1}\psfillcolor}
\psset@fillcolor{white}
\def\psset@strokeopacity#1{\pst@checknum{#1}\psk@strokeopacityalpha }\psset@strokeopacity{1}
\def\psset@opacity#1{\pst@checknum{#1}\psk@opacityalpha }\psset@opacity{1}
\def\psset@shapealpha#1{\pst@checknum{#1}\psk@shapealpha }
\psset@shapealpha{0.6}
\def\psset@blendmode#1{\pst@getint{#1}\psk@blendmode }\psset@blendmode{0}
\def\psfs@none{}
\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor \psk@opacityalpha .setopacityalpha fill }}
\def\psfs@eofill{\pst@fill{\pst@usecolor\psfillcolor \psk@opacityalpha .setopacityalpha eofill}}
\def\psfs@shape{\pst@fill{
    \pst@usecolor\psfillcolor 
    \ifcase\psk@blendmode
      /Normal \or
      /Compatible \or
      /Screen \or
      /Multiply \fi
    .setblendmode \psk@shapealpha .setshapealpha fill }}
\def\psset@hatchwidth#1{\pst@getlength{#1}\psk@hatchwidth}
\psset@hatchwidth{.8pt}
\def\psset@hatchsep#1{\pst@getlength{#1}\psk@hatchsep}
\psset@hatchsep{4pt}
\def\psset@hatchcolor#1{\pst@getcolor{#1}\pshatchcolor}
\psset@hatchcolor{black}
\def\psset@hatchangle#1{\pst@getangle{#1}\psk@hatchangle}
\psset@hatchangle{45}
\def\psset@hatchsepinc#1{\pst@getlength{#1}\psk@hatchsepinc}
\def\psset@hatchwidthinc#1{\pst@getlength{#1}\psk@hatchwidthinc}
\psset@hatchwidthinc{0pt}
\psset@hatchsepinc{0pt}
\def\pst@linefill{\psk@hatchangle rotate
  \psk@hatchwidth SLW
  \pst@usecolor\pshatchcolor
  \psk@hatchsep 
  \psk@hatchsepinc
  \psk@hatchwidthinc
  \tx@LineFill }
\def\psfs@vlines{\pst@fill\pst@linefill}
\@namedef{psfs@vlines*}{\psfs@solid \psfs@vlines}
\def\psfs@hlines{\pst@fill{90 rotate \pst@linefill}}
\@namedef{psfs@hlines*}{\psfs@solid \psfs@hlines}
\def\psfs@crosshatch{\psfs@vlines \psfs@hlines}
\@namedef{psfs@crosshatch*}{\psfs@solid \psfs@vlines \psfs@hlines}
\def\tx@LineFill{LineFill }
\def\psset@fillstyle#1{\edef\pst@tempg{#1}\def\pst@temph{none}\ifx\pst@tempg\pst@temph
     \let\psk@fillstyle\relax
  \else
    \@ifundefined{psfs@#1}{\@pstrickserr{Undefined fill style: `#1'}\@eha}{\edef\psk@fillstyle{\expandafter\noexpand\csname psfs@#1\endcsname}}\fi }
\def\psset@addfillstyle#1{\@ifundefined{psfs@#1}{\@pstrickserr{Undefined fill style: `#1'}\@eha}{\edef\psk@fillstyle{\expandafter\noexpand\psk@fillstyle
      \expandafter\noexpand\csname psfs@#1\endcsname}}}
\psset@fillstyle{none}
\def\psset@arrows#1{\begingroup
    \pst@activearrows
    \xdef\pst@tempg{#1}\endgroup
  \expandafter\psset@@arrows\pst@tempg\@empty-\@empty\@nil
  \if@pst\else
    \@pstrickserr{Bad arrows specification: #1}\@ehpa
  \fi }
\def\psset@@arrows#1-#2\@empty#3\@nil{\@psttrue
  \def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}\expandafter\next\pst@arrowtable,#1-#1,\@nil
  \@ifundefined{psas@\pst@tempg}{\@pstfalse\def\psk@arrowA{}}{\let\psk@arrowA\pst@tempg}\@ifundefined{psas@#2}{\@pstfalse\def\psk@arrowB{}}{\def\psk@arrowB{#2}}}
\def\psk@arrowA{}
\def\psk@arrowB{}
\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,<D-D>,<D<D-D>D>} \begingroup
  \catcode`\<=13
  \catcode`\>=13
  \catcode`\|=13
  \gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
\endgroup
\def\tx@BeginArrow{BeginArrow }
\def\tx@EndArrow{EndArrow }
\def\psset@arrowscale#1{\pst@@arrowscale@i#1 \@nil \pst@getscale{\pst@arrowscale}\psk@arrowscale}\def\pst@@arrowscale@i#1 #2\@nil{\edef\pst@arrowscale{#1}}\psset@arrowscale{1}
\def\psset@arrowsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
  \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}}
\psset@arrowsize{1.5pt 2}
\def\psset@arrowlength#1{\pst@checknum{#1}\psk@arrowlength}
\psset@arrowlength{1.4}
\def\psset@arrowinset#1{\pst@checknum{#1}\psk@arrowinset}\psset@arrowinset{.4}
\def\tx@Arrow{ \psk@strokeopacityalpha .setopacityalpha Arrow }\def\tx@ArrowD{ \psk@strokeopacityalpha .setopacityalpha ArrowD }\@namedef{psas@<|}{ 
    \psk@tbarsize\space \tx@Tbar
    0 CLW 2 div T
    newpath
    true 
    \psk@arrowinset 
    \psk@arrowlength 
    \psk@arrowsize 
    \tx@Arrow 
}
\def\tx@BracketOut{BracketOut }
\@namedef{psas@[}{/BracketOut {CLW mul add dup CLW sub 2 div
/x ED mul neg
  /y ED
  /z CLW 2 div def
  x neg y moveto
  x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def
  \psk@bracketlength\space \psk@tbarsize\space \tx@BracketOut
}
\def\tx@RoundBracketOut{ \psk@strokeopacityalpha .setopacityalpha RoundBracketOut }\@namedef{psas@(}{/RoundBracketOut {CLW mul add dup 2 div
/x ED mul neg
    /y ED
    /mtrx CM def
    0 CLW
    2 div T x y mul 0 ne { x y scale } if
    1 1 moveto
    .85 .5 .35 0 0 0 curveto
    -.35 0 -.85 .5 -1 1 curveto
    mtrx setmatrix stroke 0 CLW moveto } def
  \psk@rbracketlength\space \psk@tbarsize\space \tx@RoundBracketOut
}
\@namedef{psas@>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow }
\@namedef{psas@>>}{false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  0 h T gsave newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  CP grestore CP newpath moveto 2 copy L stroke moveto
}
\@namedef{psas@<}{true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
\@namedef{psas@<<}{
  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  CP newpath moveto 0 a neg L stroke 0 h neg T
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\@namedef{psas@D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD }\@namedef{psas@D>D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  0 h Inset sub T gsave newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  CP grestore moveto 
}
\@namedef{psas@<D}{ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
}
\@namedef{psas@<D<D}{ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  CP newpath moveto 0 a neg L stroke 0 h neg T
  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
}
\def\psset@tbarsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
  \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}}
\psset@tbarsize{2pt 5}
\def\tx@Tbar{Tbar }
\@namedef{psas@|}{\psk@tbarsize \tx@Tbar}
\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar}
\@namedef{psas@>|}{\psk@tbarsize \tx@Tbar
  0 CLW 2 div T
  newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\@namedef{psas@>|*}{0 CLW -2 div T
  \psk@tbarsize \tx@Tbar
  0 CLW 2 div T
  newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|}
\def\psset@bracketlength#1{\pst@checknum{#1}\psk@bracketlength}
\psset@bracketlength{.15}
\def\tx@Bracket{Bracket }
\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
\def\psset@rbracketlength#1{\pst@checknum{#1}\psk@rbracketlength}
\psset@rbracketlength{.15}
\def\tx@RoundBracket{RoundBracket }
\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket}
\def\psas@c{1 \psas@@c}
\def\psas@cc{0 CLW 2 div T 1 \psas@@c}
\def\psas@C{2 \psas@@c}
\def\psas@@c{setlinecap
  0 0 moveto
0 0.1 L stroke
  0 0 moveto
}
\def\psas@{}
\psset@arrows{-}
\def\tx@SD{ \psk@opacityalpha .setopacityalpha SD }
\def\tx@EndDot{EndDot }
\def\psas@oo{{\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot}
\def\psas@o{{\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot}
\@namedef{psas@**}{{false} true \psk@dotsize \tx@EndDot}
\@namedef{psas@*}{{false} false \psk@dotsize \tx@EndDot}
\def\pst@par{}
\def\addto@par#1{\ifx\pst@par\@empty
    \def\pst@par{#1}\else
    \expandafter\def\expandafter\pst@par\expandafter{\pst@par,#1}\fi }
\def\addbefore@par#1{\ifx\pst@par\@empty
    \def\pst@par{#1}\else
    \toks@{#1}\pst@toks\expandafter{\pst@par}\edef\pst@par{\the\toks@,\the\pst@toks}\fi }
\def\use@par{\ifx\pst@par\@empty\else
    \expandafter\@psset\pst@par,\@nil
    \def\pst@par{}\fi }
\def\pst@object#1{\pst@ifstar{\@ifnextchar[{\pst@@object{#1}}{\def\pst@par{}\@nameuse{#1@i}}}}
\def\pst@@object#1[#2]{\def\pst@par{#2}\@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}}
\def\newpsobject#1#2#3{\@ifundefined{#2@i}{\@pstrickserr{Graphics object `#2' not defined}\@eha}{\@namedef{#1}{\pst@object{#1}}\@namedef{#1@i}{\addbefore@par{#3}\@nameuse{#2@i}}}\ignorespaces}
\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
\def\pst@@getarrows#1#2{\def\pst@tempa{#2}\ifx\pst@tempa\@empty\addto@par{arrows=-}\else\addto@par{arrows=#2}\fi#1}
\def\begin@ClosedObj{\leavevmode
  \pst@killglue
  \begingroup
    \use@par
    \solid@star
    \ifpsdoubleline \pst@setdoublesep \fi
    \init@pscode }
\def\end@ClosedObj{\ifpsshadow \pst@closedshadow \fi
  \ifdim\psk@border\p@>\z@ \pst@addborder \fi
  \psk@fillstyle
  \pst@stroke
  \ifpsdoubleline \pst@doublestroke \fi
  \ifshowpoints
\pst@OpenShowPoints
\fi
  \use@pscode
  \endgroup
  \ignorespaces }
\def\begin@OpenObj{\begin@ClosedObj
  \let\pst@linetype\pst@arrowtype
  \pst@addarrowdef }
\def\begin@AltOpenObj{\begin@ClosedObj
  \def\pst@repeatarrowsflag{\z@}\def\pst@linetype{0}}
\def\end@OpenObj{\ifpsshadow \pst@openshadow \fi
  \ifdim\psk@border\p@>\z@ \pst@addborder \fi
  \psk@fillstyle
  \pst@stroke
  \ifpsdoubleline \pst@doublestroke \fi
  \ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi
  \ifshowpoints \pst@OpenShowPoints \fi
  \use@pscode
  \endgroup
  \ignorespaces}
\def\begin@SpecialObj{\leavevmode
  \pst@killglue
  \begingroup
  \use@par
  \init@pscode}
\def\end@SpecialObj{\use@pscode
  \endgroup
  \ignorespaces}
\def\pst@code{}\def\init@pscode{\addto@pscode{\pst@number\pslinewidth SLW
    \pst@usecolor\pslinecolor}}
\def\addto@pscode#1{\xdef\pst@code{\pst@code#1\space}}
\def\use@pscode{\pstverb{
    \pst@dict
    \tx@STP
    \pst@newpath
    \psk@origin
    \psk@swapaxes
    \pst@code
    end
  }\gdef\pst@code{}}
\def\pst@newpath{newpath }
\def\pst@@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@@killglue\fi}
\def\KillGlue{\let\pst@killglue\pst@@killglue}
\def\DontKillGlue{\let\pst@killglue\relax}
\DontKillGlue
\def\solid@star{\if@star
    \pslinewidth=\z@
    \psdoublelinefalse
    \def\pslinestyle{none}\def\psk@fillstyle{\psfs@solid}\let\psfillcolor\pslinecolor
  \fi}
\def\pst@setdoublesep{\pst@getlength\psdoublesep\psdoublesep
\pslinewidth=2\pslinewidth
\advance\pslinewidth\psdoublesep\p@
\let\pst@setdoublesep\relax}
\def\tx@Shadow{Shadow }
\def\pst@closedshadow{\addto@pscode{gsave
    \psk@shadowsize \psk@shadowangle \tx@PtoC
    \tx@Shadow
    \pst@usecolor\psshadowcolor
    gsave fill grestore
    stroke
    grestore
    gsave
    \pst@usecolor\psfillcolor
    gsave fill grestore
    stroke
    grestore}}
\def\pst@openshadow{\addto@pscode{gsave
    \psk@shadowsize \psk@shadowangle \tx@PtoC
    \tx@Shadow
    \pst@usecolor\psshadowcolor
    \ifx\psk@fillstyle\relax\else
      gsave fill grestore
    \fi
    stroke}\pst@repeatarrows \addto@pscode{grestore}\ifx\psk@fillstyle\relax\else
    \addto@pscode{gsave
      \pst@usecolor\psfillcolor
      gsave fill grestore
      stroke
      grestore}\fi}
\def\pst@addborder{\addto@pscode{gsave
    \psk@border 2 mul
    CLW add SLW
    \pst@usecolor\psbordercolor
    stroke
    grestore}}
\def\pst@stroke{\ifx\pslinestyle\@none\else
    \addto@pscode{gsave
      \pst@number\pslinewidth SLW
      \pst@usecolor\pslinecolor
      \psk@strokeopacityalpha .setopacityalpha \@nameuse{psls@\pslinestyle}
      grestore}\fi}
\def\pst@fill#1{\addto@pscode{gsave #1 grestore}}\def\pst@doublestroke{\addto@pscode{gsave
      \psdoublesep SLW
      \pst@usecolor\psdoublecolor
      stroke
      grestore
}}
\def\pst@arrowtype{\ifx\psk@arrowB\@empty 0 \else -2 \fi
  \ifx\psk@arrowA\@empty 0 \else -1 \fi
  add }
\def\pst@addarrowdef{\addto@pscode{/ArrowA {
      \ifx\psk@arrowA\@empty
        \pst@oplineto
      \else
        \pst@arrowdef{A}
        moveto
      \fi
    } def
    /ArrowB { \ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi } def
}}
\def\pst@arrowdef#1{\ifnum\pst@repeatarrowsflag>\z@
    /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
  \fi
  \tx@BeginArrow
  \psk@arrowscale
  \@nameuse{psas@\@nameuse{psk@arrow#1}}
  \tx@EndArrow
}
\def\pst@repeatarrows{\addto@pscode{gsave
    \ifx\psk@arrowA\@empty\else ArrowAc ArrowA pop pop \fi
    \ifx\psk@arrowB\@empty\else ArrowBc ArrowB pop pop pop pop \fi
    grestore
}}
\def\pst@OpenShowPoints{\addto@pscode{gsave
    \psk@dotsize
    \@nameuse{psds@\psk@dotstyle}
    newpath
    Points aload length 2 div 2 sub cvi /N ED
    N 0 ge
      { \ifx\psk@arrowA\@empty Dot \else pop pop \fi 
        N { Dot } repeat 
	\ifx\psk@arrowB\@empty Dot \else pop pop \fi }
      { N 2 mul { pop } repeat } ifelse
    grestore
}}
\def\pscustom{\pst@object{pscustom}}
\long\def\pscustom@i#1{\begin@SpecialObj
  \solid@star
  \let\pst@ifcustom\iftrue
  \let\begin@ClosedObj\begin@CustomObj
  \let\end@ClosedObj\endgroup
  \def\begin@OpenObj{\begin@CustomObj\pst@addarrowdef}\let\end@OpenObj\endgroup
  \let\begin@AltOpenObj\begin@CustomObj
  \def\begin@SpecialObj{\begingroup
    \pst@misplaced{special graphics object}\def\addto@pscode####1{}
    \let\end@SpecialObj\endgroup}\def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}\def\psclip##1{\pst@misplaced\psclip}\def\pst@repeatarrowsflag{\z@}\let\pst@setrepeatarrowsflag\relax
    \showpointsfalse
    \let\showpointstrue\relax
    \def\pst@linetype{\pslinetype}\let\psset@liftpen\psset@@liftpen
    \psset@liftpen{\z@}\def\pst@cp{/currentpoint load stopped pop }\def\pst@oplineto{/lineto load stopped { moveto } if }\def\pst@optcp##1##2{\ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}\let\caddto@pscode\addto@pscode
    \def\cuse@par##1{{\use@par##1}}\the\pst@customdefs
    \setbox\pst@hbox=\hbox{#1}\psk@fillstyle
    \pst@stroke
  \end@SpecialObj}
\def\begin@CustomObj{\begingroup
  \use@par
  \addto@pscode{\pst@number\pslinewidth SLW
    \pst@usecolor\pslinecolor
  }}
\def\pst@oplineto{moveto }
\def\pst@cp{}
\def\pst@optcp#1#2{}
\def\psset@liftpen#1{}
\def\psset@@liftpen#1{\ifcase#1\relax
    \def\psk@liftpen{\z@}\def\pst@cp{/currentpoint load stopped pop }\def\pst@oplineto{/lineto load stopped { moveto } if }\or
    \def\psk@liftpen{1}\def\pst@cp{}\def\pst@oplineto{/lineto load stopped { moveto } if }\or
    \def\psk@liftpen{2}\def\pst@cp{}\def\pst@oplineto{moveto }\fi }
\psset@liftpen{0}
\def\psk@liftpen{-1}
\def\psset@linetype#1{\pst@getint{#1}\pslinetype
\ifnum\pst@cntg<-3
\@pstrickserr{linetype must be greater than -3}\@ehpa
\def\pslinetype{2}\fi }
\psset@linetype{2}\def\caddto@pscode#1{\@pstrickserr{Command can only be used in \string\pscustom}\@ehpa }
\let\cuse@par\caddto@pscode
\def\tx@MSave{/msavematrx
         [ tx@Dict /msavematrx known { msavematrx aload pop } if
             CM ]
     def
msavematrx
}
\def\tx@MRestore{tx@Dict /msavematrx known { length 0 gt } { false } ifelse
         { msavematrx aload pop setmatrix } if
}
\newtoks\pst@customdefs
\pst@customdefs{\def\newpath{\addto@pscode{newpath}}\def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}\def\closepath{\addto@pscode{closepath}}\def\gsave{\begingroup\addto@pscode{gsave}}\def\grestore{\endgroup\addto@pscode{grestore}}\def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor translate}}\def\rotate#1{\pst@@getangle{#1}\addto@pscode{\pst@angle rotate}}\def\scale#1{\pst@getscale{#1}\pst@tempg\addto@pscode{\pst@tempg}}\def\msave{\addto@pscode{\tx@MSave}}\def\mrestore{\addto@pscode{\tx@MRestore}}\def\swapaxes{\addto@pscode{-90 rotate -1 1 scale}}\def\stroke{\pst@object{stroke}}\def\fill{\pst@object{fill}}\def\openshadow{\pst@object{openshadow}}\def\closedshadow{\pst@object{closedshadow}}\def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor \tx@Shadow}}\def\lineto{\pst@onecoor{lineto}}\def\rlineto{\pst@onecoor{rlineto}}\def\curveto{\pst@threecoor{curveto}}\def\rcurveto{\pst@threecoor{rcurveto}}\def\code#1{\addto@pscode{#1}}\def\coor(#1){\pst@@getcoor{#1}\addto@pscode\pst@coor\@ifnextchar({\coor}{}}\def\rcoor{\pst@getcoors{}{}}\def\dim#1{\pssetlength\pst@dimg{#1}\addto@pscode{\pst@number\pst@dimg}}\def\setcolor#1{\@ifundefined{\string\color@#1}{}{\addto@pscode{\pst@usecolor{#1}}}}\def\arrows#1{{\psset@arrows{#1}\pst@addarrowdef}}\let\file\pst@rawfile
} \def\closedshadow@i{\cuse@par\pst@closedshadow}
\def\openshadow@i{\cuse@par\pst@openshadow}
\def\stroke@i{\cuse@par\pst@stroke}\def\fill@i{\cuse@par\psk@fillstyle}\def\pst@onecoor#1(#2){\pst@@getcoor{#2}\addto@pscode{\pst@coor #1}}
\def\pst@threecoor#1(#2)#3(#4)#5(#6){\begingroup
    \pst@getcoor{#2}\pst@tempa
    \pst@getcoor{#4}\pst@tempb
\pst@getcoor{#6}\pst@tempc
\addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}\endgroup}
\def\pst@rawfile#1{\begingroup
  \def\do##1{\catcode`##1=12\relax}"
  \dospecials
  \catcode`\%=14
  \pst@@rawfile{#1}\endgroup}
\def\pst@@rawfile#1{\immediate\openin1 #1
  \ifeof1
    \@pstrickserr{File `#1' not found}\@ehpa
  \else
    \immediate\read1 to \pst@tempg
    \loop
      \ifeof1 \@pstfalse\else\@psttrue\fi
      \if@pst
      \addto@pscode\pst@tempg
      \immediate\read1 to \pst@tempg
    \repeat
  \fi
  \immediate\closein1\relax}
\def\tx@NArray{NArray }
\def\tx@NArray{NArray }
\def\tx@Line{Line }
\def\tx@Arcto{Arcto }
\def\tx@CheckClosed{CheckClosed }
\def\tx@Polygon{Polygon }
\def\psset@gangle#1{\pst@getangle{#1}\psk@gangle}
\psset@gangle{0}
\def\tx@Diamond{Diamond }
\def\psdiamond{\pst@object{psdiamond}}
\def\psdiamond@i(#1){\@ifnextchar({\psdiamond@ii(#1)}{\psdiamond@ii(0,0)(#1)}}
\def\psdiamond@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa
  \pst@getcoor{#2}\pst@tempb
  \addto@pscode{\psline@iii
    pop
    \psk@dimen
    \pst@tempb
    \psk@gangle
    \pst@tempa
    \tx@Diamond
  }\def\pst@linetype{4}\end@ClosedObj}
\def\tx@Triangle{Triangle }
\def\pstriangle{\pst@object{pstriangle}}
\def\pstriangle@i(#1){\@ifnextchar({\pstriangle@ii(#1)}{\pstriangle@ii(0,0)(#1)}}
\def\pstriangle@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa \pst@getcoor{#2}\pst@tempb \addto@pscode{\psline@iii
    pop			    \psk@dimen		    \pst@tempb
    \psk@gangle		    \pst@tempa
    \tx@Triangle
  }\def\pst@linetype{2}\end@ClosedObj}
\def\tx@CCA{CCA }
\def\tx@CCA{CCA }
\def\tx@CC{CC }
\def\tx@IC{IC }
\def\tx@BOC{BOC }
\def\tx@NC{NC }
\def\tx@EOC{EOC }
\def\tx@BAC{BAC }
\def\tx@NAC{NAC }
\def\tx@EAC{EAC }
\def\tx@OpenCurve{OpenCurve }
\def\tx@AltCurve{AltCurve }
\def\tx@ClosedCurve{ClosedCurve }
\def\psset@curvature#1{\edef\pst@tempg{#1 }\expandafter\psset@@curvature\pst@tempg * * * \@nil}
\def\psset@@curvature#1 #2 #3 #4\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi
\edef\psk@curvature{\pst@tempg \pst@temph \pst@tempi}}
\psset@curvature{1 .1 0}
\def\pscurve{\pst@object{pscurve}}
\def\pscurve@i{\pst@getarrows{\begin@OpenObj
      \pst@getcoors[\pscurve@ii }}
\def\pscurve@ii{\addto@pscode{
    \pst@cp
    \psk@curvature\space /c ED /b ED /a ED
    \ifshowpoints true \else false \fi
    \tx@OpenCurve
  }\end@OpenObj }
\def\psecurve{\pst@object{psecurve}}
\def\psecurve@i{\pst@getarrows{\begin@OpenObj
\pst@getcoors[\psecurve@ii}}
\def\psecurve@ii{\addto@pscode{\psk@curvature\space /c ED /b ED /a ED
\ifshowpoints true \else false \fi
\tx@AltCurve}\end@OpenObj}
\def\psccurve{\pst@object{psccurve}}
\def\psccurve@i{\begin@ClosedObj
\pst@getcoors[\psccurve@ii}
\def\psccurve@ii{\addto@pscode{\psk@curvature\space /c ED /b ED /a ED
\ifshowpoints true \else false \fi
\tx@ClosedCurve}\def\pst@linetype{1}\end@ClosedObj}
\def\psset@dotsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
\edef\psk@@dotsize{\pst@number\pst@dimg}\let\psk@@@dotsize\pst@tempg
\edef\psk@dotsize{/DS \psk@@dotsize \psk@@@dotsize CLW mul add 2 div def }}
\psset@dotsize{2pt 2}
\def\psset@dotscale#1{\pst@getscale{#1}\psk@dotscale
\ifx\psk@dotscale\@empty
\def\psk@xdotscale{1 }\def\psk@ydotscale{1 }\else
\let\psk@xdotscale\pst@tempg
\let\psk@ydotscale\pst@temph
\fi}
\def\pst@Getangle#1#2{\pst@getangle{#1}\pst@tempg
\def\pst@temph{0. }\ifx\pst@tempg\pst@temph
\def#2{}\else
\edef#2{\pst@tempg\space rotate }\fi}
\def\psset@dotangle#1{\pst@getangle{#1}\psk@@dotangle
\ifdim\psk@@dotangle\p@=\z@
\let\psk@dotangle\@empty
\else
\edef\psk@dotangle{\psk@@dotangle rotate }\fi}
\psset@dotangle{0}
\def\pst@getdotsize{\pst@dimg=\psk@@@dotsize\pslinewidth
\advance\pst@dimg\psk@@dotsize\p@
\pst@dimh=\psk@ydotscale\pst@dimg
\pst@dimg=\psk@xdotscale\pst@dimg
\divide\pst@dimh 2
\divide\pst@dimg 2\relax}
\psset@dotscale{1}
\def\psdot{\pst@object{psdot}}
\def\psdot@i{\@ifnextchar({\psdot@ii}{\psdot@ii(\z@,\z@)}}
\def\psdot@ii(#1){\begin@SpecialObj \solid@star \pst@@getcoor{#1}\addto@pscode{
    \psk@dotsize
    \@nameuse{psds@\psk@dotstyle}\pst@coor Dot}\end@SpecialObj}
\def\psdots{\pst@object{psdots}}
\def\psdots@i{\begin@SpecialObj \pst@getcoors[\psdots@ii}
\def\psdots@ii{\addto@pscode{false \tx@NArray \psdots@iii}\end@SpecialObj}
\def\psdots@iii{\psk@dotsize
  \@nameuse{psds@\psk@dotstyle}
  newpath
  n { transform floor .5 add exch floor .5 add exch itransform Dot } repeat}
\def\tx@SQ{SQ }
\def\tx@ST{ST }
\def\tx@SP{SP }
\def\pst@gdot#1{/Dot { gsave T \psk@dotangle \psk@dotscale #1 grestore } def }
\@namedef{psds@*}{\pst@gdot{0 0 DS \tx@SD}}
\@namedef{psds@o}{/r2 DS CLW sub def
  \pst@gdot{0 0 DS \tx@SD \pst@usecolor\psfillcolor 0 0 r2 \tx@SD}}
\@namedef{psds@square*}{/r1 DS .886 mul def
  \pst@gdot{r1 \tx@SQ}}
\@namedef{psds@square}{/r1 DS .886 mul def /r2 r1 CLW sub def
  \pst@gdot{r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ}}
\@namedef{psds@triangle*}{/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
  \pst@gdot{x1 y1 \tx@ST}}
\@namedef{psds@triangle}{/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
  /y2 y1 CLW add def /x2 y2 1.732 mul neg def
  \pst@gdot{x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST}}
\@namedef{psds@pentagon*}{/r1 DS 1.149 mul def
  \pst@gdot{r1 \tx@SP}}
\@namedef{psds@pentagon}{DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED
  \pst@gdot{r1 \tx@SP \pst@usecolor\psfillcolor r2 \tx@SP}}
\@namedef{psds@+}{/DS DS 1.253 mul def
  \pst@gdot{DS 0 moveto DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke}}
\@namedef{psds@|}{\psk@tbarsize CLW mul add 2 div /DS ED
  \pst@gdot{0 DS moveto 0 DS neg L stroke}}
\def\psset@dotstyle#1{\@ifundefined{psds@#1}{\@pstrickserr{Dot style `#1' not defined}\@eha}{\edef\psk@dotstyle{#1}}}
\psset@dotstyle{*}
\def\tx@FontDot{FontDot }
\def\newpsfontdot#1[#2]#3#4{\@namedef{psds@#1}{/#3 \psk@@dotangle [#2] \tx@FontDot
/Dot { moveto gsave \psk@dotscale #4 show grestore } bind def 
}}
\def\newpsfontdotH#1[#2]#3#4#5{\@namedef{psds@#1}{/#3 \psk@@dotangle [#2] \tx@FontDot
    /Dot {
      moveto
      \iftrue
gsave \psk@dotscale \pst@usecolor\psfillcolor #5 show grestore
      \fi
      gsave \psk@dotscale #4 show grestore
} bind def 
}}
\pstheader{pst-dots.pro}
\newpsfontdot{*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
\newpsfontdotH{o}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
\newpsfontdotH{Bo}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
\newpsfontdotH{triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
\newpsfontdotH{Btriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
\newpsfontdot{triangle*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
\newpsfontdotH{square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
\newpsfontdotH{Bsquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
\newpsfontdot{square*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
\newpsfontdotH{pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
\newpsfontdotH{Bpentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
\newpsfontdot{pentagon*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
\newpsfontdotH{diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
\newpsfontdotH{Bdiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
\newpsfontdot{diamond*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
\newpsfontdot{oplus}[1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]{Symbol}{<C5>}
\newpsfontdot{otimes}[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{Symbol}{<C4>}
\newpsfontdot{x}[1.8 0.0 0.0 1.8 -0.495 -0.4788]{Symbol}{<B4>}
\newpsfontdot{+}[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{Times-Roman}{<2B>}
\newpsfontdot{asterisk}[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{Times-Roman}{<2A>}
\newpsfontdot{B+}[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{Times-Bold}{<2B>}
\newpsfontdot{Basterisk}[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{Times-Bold}{<2A>}
\newpsfontdot{|}[1.98413 0.0 0.0 1.38 -0.258929 -0.5]{Helvetica}{(|)}
\newpsfontdot{B|}[1.98413 0.0 0.0 1.38 -0.277778 -0.5]{Helvetica-Bold}{(|)}

\iffalse
\newpsfontdot{*}[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{Symbol}{<B7>}
\newpsfontdot{o}[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{Symbol}{<B0>}
\newpsfontdot{Bo}[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{Times-Bold}{<CA>}
\fi
\newpsfontdot{Asterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(k)}
\newpsfontdot{BoldAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(K)}
\newpsfontdotH{SolidAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(J)}{(b)}
\newpsfontdotH{Hexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(h)}{(G)}
\newpsfontdotH{BoldHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(H)}{(G)}
\newpsfontdot{SolidHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(G)}
\newpsfontdot{Bullet}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
\newpsfontdotH{Circle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
\newpsfontdotH{BoldCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
\newpsfontdotH{Triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
\newpsfontdotH{BoldTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
\newpsfontdot{SolidTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
\newpsfontdotH{Square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
\newpsfontdotH{BoldSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
\newpsfontdot{SolidSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
\newpsfontdotH{Pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
\newpsfontdotH{BoldPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
\newpsfontdot{SolidPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
\newpsfontdot{Add}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(a)}
\newpsfontdot{BoldAdd}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(A)}
\newpsfontdot{Mul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(x)}
\newpsfontdot{BoldMul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(X)}
\newpsfontdotH{Oplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(m)}{(b)}
\newpsfontdotH{BoldOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(M)}{(b)}
\newpsfontdotH{SolidOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(e)}{(b)}
\newpsfontdotH{Otimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(n)}{(b)}
\newpsfontdotH{BoldOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(N)}{(b)}
\newpsfontdotH{SolidOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(E)}{(b)}
\newpsfontdot{Bar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(i)}
\newpsfontdot{BoldBar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(I)}
\newpsfontdotH{Diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
\newpsfontdotH{BoldDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
\newpsfontdot{SolidDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
\newdimen\pslinearc
\def\psset@linearc#1{\pssetlength\pslinearc{#1}}
\psset@linearc{0pt}
\def\psline{\pst@object{psline}}
\def\psline@i{\pst@getarrows{\begin@OpenObj
    \pst@getcoors[\psline@ii }}
\def\psline@ii{\addto@pscode{\pst@cp \psline@iii \tx@Line}\end@OpenObj }
\def\psline@iii{\ifdim\pslinearc>\z@
    /r \pst@number\pslinearc def
    /Lineto { \tx@Arcto } def
  \else
    /Lineto /lineto load def
  \fi
  \ifshowpoints true \else false \fi
  \tx@setlinejoin 			}
\def\qline(#1)(#2){\def\pst@par{}\begin@SpecialObj
  \def\pst@linetype{0}\pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\addto@pscode{\pst@tempa moveto \pst@coor L
    \@nameuse{psls@\pslinestyle}}\end@SpecialObj}
\def\pspolygon{\pst@object{pspolygon}}
\def\pspolygon@i{\begin@ClosedObj \def\pst@cp{}\pst@getcoors[\pspolygon@ii }
\def\pspolygon@ii{\addto@pscode{\psline@iii \tx@Polygon}\def\pst@linetype{1}\end@ClosedObj}
\def\psset@framearc#1{\pst@checknum{#1}\psk@framearc}
\psset@framearc{0}
\def\psset@cornersize#1{\pst@expandafter\psset@@cornersize{#1}\@nil}
\def\psset@@cornersize#1#2\@nil{\if #1a\relax
    \def\psk@cornersize{\pst@number\pslinearc false }\else\def\psk@cornersize{\psk@framearc true }\fi}
\psset@cornersize{relative}
\def\tx@Rect{Rect }
\def\tx@OvalFrame{OvalFrame }
\def\tx@Frame{Frame }
\def\psset@dimen#1{\pst@expandafter\psset@@dimen{#1}\@nil}
\def\psset@@dimen#1#2\@nil{\if #1o\relax \def\psk@dimen{.5 }\else
    \if #1m\relax \def\psk@dimen{0 }\else
      \if #1i\relax \def\psk@dimen{-.5 }\fi\fi\fi}
\psset@dimen{outer}
\def\psframe{\pst@object{psframe}}
\def\psframe@i(#1){\@ifnextchar({\psframe@ii(#1)}{\psframe@ii(0,0)(#1)}}
\def\psframe@ii(#1)(#2){\begin@ClosedObj
    \pst@getcoor{#1}\pst@tempa
    \pst@@getcoor{#2}\addto@pscode{\psk@cornersize \pst@tempa \pst@coor \psk@dimen \tx@Frame}\def\pst@linetype{2}\showpointsfalse
  \end@ClosedObj }
\def\psTextFrame{\pst@object{psTextFrame}}
\def\psTextFrame@i(#1)(#2)#3{\addbefore@par{ref=c}\leavevmode \pst@killglue
  \begingroup
  \use@par
  \ifx\psk@yref\relax \def\psk@yref{0}\fi \SpecialCoor
  \pst@getcoor{#1}\pst@tempA
  \pst@getcoor{#2}\pst@tempB
  \if@star\psframe*(#1)(#2)\else\psframe(#1)(#2)\fi
  \rput(! \pst@tempA \pst@tempB exch 4 -1 roll 		dup /x1 ED			sub /dx ED			exch dup /y1 ED 		sub /dy ED	
    x1 dx \psk@xref\space mul add \pst@number\psxunit div 
    y1 dy \psk@yref\space mul add \pst@number\psyunit div ){#3}
  \endgroup
  \ignorespaces}
\def\tx@BezierNArray{BezierNArray }
\def\tx@OpenBezier{OpenBezier }
\def\tx@ClosedBezier{ClosedBezier }
\def\tx@BezierShowPoints{BezierShowPoints }
\def\psbezier{\pst@object{psbezier}}
\def\psbezier@i{\pst@getarrows{\begin@OpenObj
      \pst@getcoors[\psbezier@ii }}
\def\psbezier@ii{\addto@pscode{\pst@cp
\ifshowpoints true \else false \fi
    \tx@OpenBezier
    \ifshowpoints \tx@BezierShowPoints \fi}\end@OpenObj}
\def\pscbezier{\pst@object{pscbezier}}
\def\pscbezier@i{\begin@ClosedObj
  \pst@getcoors[\pscbezier@ii}
\def\pscbezier@ii{\addto@pscode{\ifshowpoints true \else false \fi
    \tx@ClosedBezier
    \ifshowpoints \tx@BezierShowPoints \fi}\chardef\pst@linetype=1
  \end@ClosedObj}
\def\tx@Parab{Parab }
\def\psparabola{\pst@object{psparabola}}\def\psparabola@i{\pst@getarrows\psparabola@ii}
\def\psparabola@ii#1(#2)#3(#4){\begin@OpenObj
  \pst@getcoor{#2}\pst@tempa
  \pst@@getcoor{#4}\addto@pscode{\pst@tempa \pst@coor \tx@Parab}\end@OpenObj}
\let\parabola\psparabola \def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth}
\psset@gridwidth{.8pt}
\def\psset@griddots#1{\pst@cntg=#1\relax
  \edef\psk@griddots{\the\pst@cntg}}
\psset@griddots{0}
\def\psset@gridcolor#1{\pst@getcolor{#1}\psgridcolor}
\psset@gridcolor{black}
\def\psset@subgridwidth#1{\pst@getlength{#1}\psk@subgridwidth}
\psset@subgridwidth{.4pt}
\def\psset@subgridcolor#1{\pst@getcolor{#1}\pssubgridcolor}
\psset@subgridcolor{gray}
\def\psset@subgriddots#1{\pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}}
\psset@subgriddots{0}
\def\psset@subgriddiv#1{\pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}}
\psset@subgriddiv{5}
\def\psset@gridfont#1{\def\psk@gridfont{/#1 }}\psset@gridfont{Helvetica}
\def\psset@gridlabels#1{\pst@getlength{#1}\psk@gridlabels}
\psset@gridlabels{10pt}
\def\psset@gridlabelcolor#1{\pst@getcolor{#1}\psgridlabelcolor}
\psset@gridlabelcolor{black}

\def\tx@Grid{Grid }

\def\psgrid{\pst@object{psgrid}}
\def\psgrid@i{\@ifnextchar({\psgrid@ii}{\expandafter\psgrid@iv\pic@coor}}
\def\psgrid@ii(#1){\@ifnextchar({\psgrid@iii(#1)}{\psgrid@iv(0,0)(0,0)(#1)}}
\def\psgrid@iii(#1)(#2){\@ifnextchar({\psgrid@iv(#1)(#2)}{\psgrid@iv(#1)(#1)(#2)}}
\def\psgrid@iv(#1)(#2)(#3){\begin@SpecialObj
    \pst@getcoor{#1}\pst@tempA \pst@getcoor{#2}\pst@tempB \pst@@getcoor{#3}\ifnum\psk@subgriddiv>1
      \addto@pscode{
        gsave
        \psk@subgridwidth SLW \pst@usecolor\pssubgridcolor
        \pst@tempB \pst@coor \pst@tempA                 \pst@number\psxunit abs \pst@number\psyunit abs \psk@subgriddiv\space \psk@subgriddots\space
        {} 0 
        \psk@gridfont findfont 0 scalefont setfont      \tx@Grid 
	grestore
      }\fi
    \addto@pscode{
      gsave
      \psk@gridwidth SLW \pst@usecolor\psgridcolor
      \pst@tempB \pst@coor \pst@tempA                 \pst@number\psxunit abs \pst@number\psyunit abs 1 \psk@griddots\space { \pst@usecolor\psgridlabelcolor }
      \psk@gridlabels 
      \psk@gridfont findfont \psk@gridlabels scalefont setfont  \tx@Grid 
      grestore
    }\end@SpecialObj}
\newif\ifpsmathbox
\psmathboxtrue
\def\pst@mathflag{\z@}
\newtoks\everypsbox
\let\pst@thisbox\relax
\long\def\pst@makenotverbbox#1#2{\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}\setbox\pst@hbox=\hbox{\ifcase\pst@mathflag\or$\m@th\textstyle\or$\m@th\displaystyle\fi
    {\pst@thisbox\the\everypsbox#2}\ifnum\pst@mathflag>\z@$\fi }#1}
\def\pst@makeverbbox#1{\def\pst@afterbox{#1}\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi }\afterassignment\pst@beginbox
  \setbox\pst@hbox\hbox }
\def\pst@beginbox{\ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
  \bgroup\aftergroup\pst@endbox
  \pst@thisbox
  \the\everypsbox }
\def\pst@endbox{\ifnum\pst@mathflag>\z@$\fi
  \egroup
  \pst@afterbox }
\def\pst@makebox{\pst@@makebox}
\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}}
\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}}
\psverbboxfalse
\def\pst@longbox{\def\pst@makebox{\gdef\pst@makebox{\pst@@makebox}\pst@makelongbox }}
\def\pst@makelongbox#1{\def\pst@afterbox{#1}\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi }\setbox\pst@hbox\hbox\bgroup
  \aftergroup\pst@afterbox
  \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
  \begingroup
  \pst@thisbox
  \the\everypsbox }
\def\pst@endlongbox{\endgroup
  \ifnum\pst@mathflag>\z@$\fi
  \egroup }
\def\pslongbox#1#2{\@namedef{#1}{\pst@longbox#2}\@namedef{end#1}{\pst@endlongbox}}
\newdimen\psframesep
\def\psset@framesep#1{\pssetlength\psframesep{#1}}
\psset@framesep{3pt}
\newif\ifpsboxsep
\def\psset@boxsep#1{\@nameuse{psboxsep#1}}
\psset@boxsep{true}
\def\pst@useboxpar{\use@par
  \if@star
    \let\pslinecolor\psfillcolor
    \solid@star
    \let\solid@star\relax
  \fi
  \ifpsdoubleline \pst@setdoublesep \fi}
\def\psframebox{\pst@object{psframebox}}
\def\psframebox@i{\pst@makebox\psframebox@ii}
\def\psframebox@ii{\begingroup
  \pst@useboxpar
  \pst@dima=\pslinewidth
  \advance\pst@dima by \psframesep
  \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima
  \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima
  \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima
  \setbox\pst@hbox=\hbox{\ifpsboxsep\kern\pst@dima\fi
    \begin@ClosedObj
    \addto@pscode{\psk@cornersize \pst@number\pst@dima neg
      \pst@number\pst@dimb neg
      \pst@number\pst@dimc
      \pst@number\pst@dimd
      .5
      \tx@Frame }\def\pst@linetype{2}\showpointsfalse
    \end@ClosedObj
    \box\pst@hbox
    \ifpsboxsep\kern\pst@dima\fi }\ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi
  \leavevmode\box\pst@hbox
  \endgroup}
\def\psdblframebox{\pst@object{psdblframebox}}
\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i}
\def\psclip#1{\leavevmode
  \begingroup
    \begin@psclip
      \begingroup
        \def\use@pscode{\pstVerb{\pst@dict
            /mtrxc CM def
            CP CP T
            \tx@STV
            \psk@origin
            \psk@swapaxes
            newpath
            \pst@code
            clip
            newpath
            mtrxc setmatrix
            moveto
            0 setgray
            end
	  }\gdef\pst@code{}}\def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}\def\nc@object##1##2##3##4{\pst@misplaced{node connection}}\hbox to\z@{#1}\endgroup
  \def\endpsclip{\end@psclip
    \endgroup}\ignorespaces}
\def\endpsclip{\pst@misplaced\endpsclip}
\let\begin@psclip\relax
\def\end@psclip{\pstVerb{currentpoint initclip moveto}}
\def\AltClipMode{\def\end@psclip{\pstVerb{\pst@grestore}}\def\begin@psclip{\pstVerb{gsave}}}
\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}}
\def\clipbox@@#1{\pssetlength\pst@dimg{#1}\leavevmode\hbox{\begin@psclip
  \pst@Verb{CM \tx@STV CP T newpath
    /a \pst@number\pst@dimg def
    /w \pst@number{\wd\pst@hbox}a add def
    /d \pst@number{\dp\pst@hbox}a add neg def
    /h \pst@number{\ht\pst@hbox}a add def
    a neg d moveto
    a neg h L
    w h L
    w d L
    closepath
    clip
    newpath
    0 0 moveto
    setmatrix}\unhbox\pst@hbox
\end@psclip}}
\def\psshadowbox{\pst@object{psshadowbox}}
\def\psshadowbox@i{\pst@makebox\psshadowbox@ii}
\def\psshadowbox@ii{\begingroup
\pst@useboxpar
\psshadowtrue
\psboxseptrue
\def\psk@shadowangle{-45 }\setbox\pst@hbox=\hbox{\psframebox@ii}\pst@dimh=\psk@shadowsize\p@
\pst@dimh=.7071\pst@dimh
\pst@dimg=\dp\pst@hbox
\advance\pst@dimg\pst@dimh
\dp\pst@hbox=\pst@dimg
\pst@dimg=\wd\pst@hbox
\advance\pst@dimg\pst@dimh
\wd\pst@hbox=\pst@dimg
\leavevmode
\box\pst@hbox
\endgroup}
\def\pscirclebox{\pst@object{pscirclebox}}
\def\pscirclebox@i{\pst@makebox\pscirclebox@ii}
\def\pscirclebox@ii{\begingroup
\pst@useboxpar
\setbox\pst@hbox=\hbox{\pst@nodehook
\pscirclebox@iii
\box\pst@hbox}\ifpsboxsep \pscirclebox@sep \fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\pscirclebox@iii{\if@star
\pslinewidth\z@
\pstverb{\pst@dict \tx@STP \pst@usecolor\psfillcolor
newpath \pscirclebox@iv \tx@SD end}\else
\begin@ClosedObj
\def\pst@linetype{4}\showpointsfalse
\addto@pscode{\pscirclebox@iv CLW 2 div add 0 360 arc closepath}\end@ClosedObj
\fi}
\def\pscirclebox@iv{\pst@number{\wd\pst@hbox}2 div
  \pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}add 2 div
  2 copy \pst@number{\dp\pst@hbox}sub 4 2 roll
  \tx@Pyth \pst@number\psframesep add }
\def\pscirclebox@sep{\pst@dimb=\ht\pst@hbox
  \advance\pst@dimb\dp\pst@hbox
  \divide\pst@dimb 2
  \pst@dima=.5\wd\pst@hbox
  \pst@pyth\pst@dima\pst@dimb\pst@dimc
  \advance\pst@dimc\pslinewidth
  \advance\pst@dimc\psframesep
  \advance\pst@dimb-\pst@dimc
  \setbox\pst@hbox=\hbox to2\pst@dimc{\hss\vbox{\kern-\pst@dimb\box\pst@hbox}\hss}\advance\pst@dimb-\dp\pst@hbox
  \dp\pst@hbox=-\pst@dimb}
\let\pst@nodehook\relax
\def\psCirclebox{\pst@object{psCirclebox}}
\def\psCirclebox@i{\pst@makebox\psCirclebox@ii}
\def\psCirclebox@ii{\begingroup
  \pst@useboxpar
  \pst@dima=\ht\pst@hbox
  \advance\pst@dima\dp\pst@hbox
  \divide\pst@dima\tw@
  \pssetlength\pst@dimb\psk@radius
  \setbox\pst@hbox=\hbox{\pst@nodehook
    \pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}\box\pst@hbox}\ifpsboxsep \psCirclebox@sep \fi
  \leavevmode
  \box\pst@hbox
  \endgroup}
\def\psCirclebox@sep{\pst@dimc=\pst@dimb
  \advance\pst@dimb-\pst@dima
  \advance\pst@dima\pst@dimc
  \setbox\pst@hbox=\hbox to\tw@\pst@dimc{\hss\vrule width \z@ depth \pst@dimb height \pst@dima
    \box\pst@hbox\hss}}
\def\psovalbox{\pst@object{psovalbox}}
\def\psovalbox@i{\pst@makebox{\psovalbox@ii}}
\def\psovalbox@ii{\begingroup
  \pst@useboxpar
  \psovalbox@iii
  \ifpsboxsep\psovalbox@sep\fi
  \leavevmode
  \box\pst@hbox
  \endgroup}
\def\psovalbox@iii{\psovalbox@iv
  \setbox\pst@hbox=\hbox{\begin@ClosedObj
    \addto@pscode{0 360
      \pst@number\pst@dimc CLW 2 div sub
      \pst@number\pst@dimd CLW 2 div sub
      \pst@number\pst@dima
      \pst@number\pst@dimb
      \tx@Ellipse
      closepath }\def\pst@linetype{2}\end@ClosedObj
    \unhbox\pst@hbox}}
\def\psovalbox@iv{\pst@dimc=\pslinewidth\advance\pst@dimc\psframesep
  \pst@dimd=\ht\pst@hbox\advance\pst@dimd\dp\pst@hbox
  \pst@dima=.5\wd\pst@hbox
  \pst@dimb=.5\pst@dimd\advance\pst@dimb-\dp\pst@hbox
  \pst@dimd=.707\pst@dimd
  \advance\pst@dimd\pst@dimc
  \advance\pst@dimc.707\wd\pst@hbox}
\def\psovalbox@sep{\setbox\pst@hbox\hbox to 2\pst@dimc{\hss\unhbox\pst@hbox\hss}\pst@dimg=\pst@dimd
  \advance\pst@dimg-\pst@dimb
  \dp\pst@hbox=\pst@dimg
  \advance\pst@dimd\pst@dimb
  \ht\pst@hbox=\pst@dimd}
\def\psdiabox{\pst@object{psdiabox}}
\def\psdiabox@i{\pst@makebox{\psdiabox@ii}}
\def\psdiabox@ii{\begingroup
\pst@useboxpar
\psdiabox@iii
\ifpsboxsep\psdiabox@sep\fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\psdiabox@iv{\pst@dimg=.707\pslinewidth
\advance\pst@dimg.707\psframesep
\pst@dima=\wd\pst@hbox
\divide\pst@dima 2
\pst@dimc=\pst@dima
\advance\pst@dimc\pst@dimg
\pst@dimd=\ht\pst@hbox
\advance\pst@dimd\dp\pst@hbox
\divide\pst@dimd 2
\pst@dimb=\pst@dimd
\advance\pst@dimb-\dp\pst@hbox
\advance\pst@dimd\pst@dimg}
\def\psdiabox@iii{\psdiabox@iv
\setbox\pst@hbox=\hbox{\begin@ClosedObj
\addto@pscode{\psline@iii
pop
.5
\pst@number\pst@dimc 2 mul \pst@number\pst@dimd 2 mul
0
\pst@number\pst@dima \pst@number\pst@dimb
\tx@Diamond}\def\pst@linetype{4}\end@ClosedObj
\box\pst@hbox}}
\def\psdiabox@sep{\setbox\pst@hbox\hbox to 4\pst@dimc{\hss\unhbox\pst@hbox\hss}\multiply\pst@dimd 2
\advance\pst@dimd\pst@dimb
\ht\pst@hbox\pst@dimd
\advance\pst@dimd-2\pst@dimb
\dp\pst@hbox\pst@dimd}
\def\psset@trimode#1{\pst@expandafter\psset@@trimode{#1}\@empty\@empty\@nil}
\def\psset@@trimode#1#2#3\@nil{\let\pst@tempg#1\relax
\ifx\pst@tempg*\let\psk@@trimode\@empty
\let\pst@tempg#2\relax
\else
\let\psk@@trimode\relax
\fi
\edef\psk@trimode{\ifx R\pst@tempg 1 \else\ifx D\pst@tempg 2
\else\ifx L\pst@tempg 3 \else 0 \fi\fi\fi}}
\psset@trimode{U}
\def\pstribox{\pst@object{pstribox}}
\def\pstribox@i{\pst@makebox{\pstribox@ii}}
\def\pstribox@ii{\begingroup
\pst@useboxpar
\pstribox@iii
\ifpsboxsep\pstribox@sep\fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\pstribox@iii{\pstribox@iv
\setbox\pst@hbox=\hbox{\begin@ClosedObj
\addto@pscode{\psline@iii
pop
.5
\pst@number\pst@dimc \pst@number\pst@dimd
\ifodd\psk@trimode exch \fi
\psk@trimode -90 mul
\pst@number\pst@dima \pst@number\pst@dimb
\tx@Triangle}\def\pst@linetype{2}\end@ClosedObj
\box\pst@hbox}}
\def\pstribox@iv{\pst@dimh=\pslinewidth
\advance\pst@dimh\psframesep
\pst@dimg=\ht\pst@hbox
\advance\pst@dimg-\dp\pst@hbox
\divide\pst@dimg 2
\edef\pst@tempa{\number\pst@dimg sp}\ifodd\psk@trimode
\pst@dimb\pst@dimg
\else
\pst@dima=\wd\pst@hbox
\divide\pst@dima 2
\fi
\ifcase\psk@trimode
\pst@dimb=-\dp\pst@hbox
\advance\pst@dimb-\pst@dimh
\or
\pst@dima=-\pst@dimh
\or
\pst@dimb=\ht\pst@hbox
\advance\pst@dimb\pst@dimh
\or
\pst@dima=\wd\pst@hbox
\advance\pst@dima\pst@dimh
\fi
\pst@dimd=\dp\pst@hbox
\advance\pst@dimd\ht\pst@hbox
\ifx\psk@@trimode\relax
\pst@dimc=\wd\pst@hbox
\advance\pst@dimc\ifodd\psk@trimode 1.447\else 1.789\fi\pst@dimh
\multiply\pst@dimc 2
\advance\pst@dimd\ifodd\psk@trimode 1.789\else 1.447\fi\pst@dimh
\multiply\pst@dimd 2
\else
\ifodd\psk@trimode
\advance\pst@dimd 1.1547\wd\pst@hbox
\advance\pst@dimd 3.4641\pst@dimh
\pst@dimc=.866\pst@dimd
\else
\advance\pst@dimd .866\wd\pst@hbox \advance\pst@dimd 3\pst@dimh
\pst@dimc=1.1547\pst@dimd \fi
\fi}
\def\pstribox@sep{\ifodd\psk@trimode
\advance\pst@dimb.5\pst@dimd
\ht\pst@hbox=\pst@dimb
\advance\pst@dimd-\pst@dimb
\dp\pst@hbox=\pst@dimd
\else
\setbox\pst@hbox\hbox to \pst@dimc{\hss\unhbox\pst@hbox\hss}\global\pst@dimg=.5\pst@dimc
\fi
\ifcase\psk@trimode
\dp\pst@hbox-\pst@dimb
\advance\pst@dimd\pst@dimb
\ht\pst@hbox\pst@dimd
\or
\pst@dimg=.5\wd\pst@hbox
\global\advance\pst@dimg-\pst@dima
\setbox\pst@hbox\hbox to \pst@dimc{\kern-\pst@dima\box\pst@hbox\hss}\or
\ht\pst@hbox\pst@dimb
\advance\pst@dimd-\pst@dimb
\dp\pst@hbox\pst@dimd
\or
\pst@dimg=\pst@dimc
\advance\pst@dimg-\pst@dima
\global\advance\pst@dimg.5\wd\pst@hbox
\setbox\pst@hbox\hbox to \pst@dimc{\hss\box\pst@hbox\kern\psframesep\kern\pslinewidth}\fi}
\def\psset@arcsepA#1{\pst@getlength{#1}\psk@arcsepA}
\def\psset@arcsepB#1{\pst@getlength{#1}\psk@arcsepB}
\def\psset@arcsep#1{\psset@arcsepA{#1}\let\psk@arcsepB\psk@arcsepA}
\psset@arcsep{0}
\def\tx@ArcArrow{ArcArrow }
\def\psarc{\pst@object{psarc}}
\def\psarc@i{\@ifnextchar({\psarc@iii}{\psarc@ii}}
\def\psarc@ii#1{\addto@par{arrows=#1}\@ifnextchar({\psarc@iii}{\psarc@iii(0,0)}}
\def\psarc@iii(#1)#2#3#4{\begin@OpenObj
    \pst@getangle{#3}\pst@tempa
    \pst@getangle{#4}\pst@tempb
    \pst@@getcoor{#1}\pssetlength\pst@dima{#2}\addto@pscode{\psarc@iv \psarc@v}\gdef\psarc@type{0}\showpointsfalse
  \end@OpenObj }
\def\psarc@iv{\pst@coor /y ED /x ED
  /r \pst@number\pst@dima def
  /c 57.2957 r \tx@Div def
  /angleA
    \pst@tempa
    \psk@arcsepA c mul 2 div
    \ifcase \psarc@type add \or sub \fi
  def
  /angleB
    \pst@tempb
    \psk@arcsepB c mul 2 div
    \ifcase \psarc@type sub \or add \fi
  def
  \ifshowpoints\psarc@showpoints\fi
  \ifx\psk@arrowA\@empty
    \ifnum\psk@liftpen=2
      r angleA \tx@PtoC
      y add exch x add exch moveto
    \fi
  \fi}
\def\psarc@v{x y r
  angleA
  \ifx\psk@arrowA\@empty\else
    { ArrowA CP }
    r 0 gt \pslbrace
    { \ifcase\psarc@type add \or sub \fi } \psrbrace\pslbrace
    { \ifcase\psarc@type sub \or add \fi } \psrbrace ifelse
\tx@ArcArrow
  \fi
  angleB
  \ifx\psk@arrowB\@empty\else
    { ArrowB }
    r 0 gt \pslbrace
      { \ifcase\psarc@type sub \or add \fi } \psrbrace\pslbrace
      { \ifcase\psarc@type add \or sub \fi } \psrbrace ifelse
\tx@ArcArrow
  \fi
\ifcase\psarc@type arc \or arcn \fi}
\def\psarc@type{0}
\def\psarc@showpoints{gsave
  newpath
  x y moveto
  x y r \pst@tempa \pst@tempb
  \ifcase\psarc@type arc \or arcn \fi
  closepath
  CLW 2 div SLW
  [ \psk@dash\space ] 0 setdash stroke
  grestore }
\def\psarcn{\pst@object{psarcn}}
\def\psarcn@i{\def\psarc@type{1}\psarc@i}
\def\psellipticwedge{\def\pst@par{}\pst@object{psellipticwedge}}
\def\psellipticwedge@i(#1){\@ifnextchar({\psellipticwedge@ii(#1)}{\psellipticwedge@ii(0,0)(#1)}}
\def\psellipticwedge@ii(#1)(#2)#3#4{\begin@ClosedObj
    \pst@getangle{#3}\pst@tempa
    \pst@getangle{#4}\pst@tempb
    \pst@getcoor{#1}\pst@tempc
    \pst@@getcoor{#2}\def\pst@linetype{1}\addto@pscode{\pst@tempa \pst@tempb
      \pst@coor
      \pst@tempc moveto
      \ifdim\psk@dimen\p@=\z@\else
        \psk@dimen CLW mul dup 3 1 roll
        sub 3 1 roll sub exch
      \fi
      \pst@tempc
      \tx@Ellipse
      closepath}\showpointsfalse
  \end@ClosedObj }
\def\psellipticarcn{\def\pst@par{}\pst@object{psellipticarcn}}
\def\psellipticarcn@i{\let\if@psarcn\iftrue\psellipticarc@ii}
\def\psellipticarc{\def\pst@par{}\pst@object{psellipticarc}}
\def\psellipticarc@i{\let\if@psarcn\iffalse\psellipticarc@ii}
\let\if@psarcn\iffalse
\def\psellipticarc@ii{\pst@getarrows\psellipticarc@iii}
\def\psellipticarc@iii(#1){\@ifnextchar({\psellipticarc@iv(#1)}{\psellipticarc@iv(0,0)(#1)}}
\def\psellipticarc@iv(#1)(#2)#3#4{\begin@OpenObj
  \pst@getcoor{#1}\pst@tempa
  \pst@getcoor{#2}\pst@tempb
  \pst@getangle{#3}\pst@tempc
  \pst@getangle{#4}\pst@tempd
  \addto@pscode{\psellipticarc@definearg \psellipticarc@draw}\showpointsfalse
  \end@OpenObj }
\def\psellipticarc@definearg{\pst@tempa /yOrig ED /xOrig ED  \pst@tempb              \ifdim\psk@dimen\p@=\z@\else
    \psk@dimen CLW mul dup 3 1 roll
    sub 3 1 roll sub exch
  \fi
  /ry ED /rx ED
  /angleA
    /d {  \if@psarcn sub \else add \fi } def
    \pst@tempc \psk@arcsepA 2 div
    ArcAdjust
  def
  /angleB
    /d { \if@psarcn add \else sub \fi } def
    \pst@tempd \psk@arcsepB 2 div ArcAdjust
  def
  \ifshowpoints\psellipticarc@showpoints\fi
  \ifx\psk@arrowA\@empty
    \ifnum\psk@liftpen=2
      angleA cos rx mul xOrig add
      angleA sin ry mul yOrig add
      moveto
    \fi
  \fi
}
\def\psellipticarc@draw{0 0 1
  angleA
  \ifx\psk@arrowA\@empty\else
    { ArrowA CP }
    { \if@psarcn sub \else add \fi }
    EllipticArcArrow
  \fi
  angleB
  \ifx\psk@arrowB\@empty\else
    { ArrowB }
    { \if@psarcn add \else sub \fi }
    EllipticArcArrow
  \fi
  /mtrx CM def
  xOrig yOrig T
  rx ry scale
  \if@psarcn arcn \else arc \fi
  mtrx setmatrix}
\def\psellipticarc@showpoints{gsave
  /mtrx CM def
  xOrig yOrig T
  rx ry scale
  0 0 moveto
  0 0 1 \pst@tempc \pst@tempd
  \ifcase\psarc@type arc \or arcn \fi
  closepath
  mtrx setmatrix
  CLW 2 div SLW
  [ \psk@dash\space ] 0 setdash stroke
  grestore }
\def\pscircle{\pst@object{pscircle}}
\def\pscircle@i{\@ifnextchar({\pscircle@do}{\pscircle@do(0,0)}}
\def\pscircle@do(#1)#2{\if@star{\use@par\qdisk(#1){#2}}\else \begin@ClosedObj
    \pst@@getcoor{#1}\pssetlength\pst@dimc{#2}\def\pst@linetype{4}\addto@pscode{
      \pst@coor
      \pst@number\pst@dimc
      \psk@dimen CLW mul sub
      0 360 arc
      closepath }\showpointsfalse
    \end@ClosedObj
  \fi
  \ignorespaces}
\def\qdisk(#1)#2{\def\pst@par{}\begin@SpecialObj
  \pst@@getcoor{#1}\pssetlength\pst@dimg{#2}\addto@pscode{ \pst@coor \pst@number\pst@dimg \tx@SD }\end@SpecialObj}
\def\psset@radius#1{\pst@@getlength{#1}\psk@radius}
\psset@radius{.25cm}
\def\psCircle{\pst@object{psCircle}}
\def\psCircle@i{\@ifnextchar({\psCircle@ii}{\psCircle@ii(0,0)}}
\def\psCircle@ii(#1){\pscircle@do(#1){\psk@radius}}
\def\pswedge{\pst@object{pswedge}}
\def\pswedge@i{\@ifnextchar({\pswedge@ii}{\pswedge@ii(0,0)}}
\def\pswedge@ii(#1)#2#3#4{\begin@ClosedObj
  \pssetlength\pst@dimc{#2}
  \pst@getangle{#3}\pst@tempa
  \pst@getangle{#4}\pst@tempb
  \pst@@getcoor{#1}\def\pst@linetype{1}\addto@pscode{\pst@coor
    2 copy
    moveto
    \pst@number\pst@dimc \psk@dimen CLW mul sub \pst@tempa \pst@tempb
    arc
    closepath}\showpointsfalse
  \end@ClosedObj }
\def\tx@Ellipse{Ellipse }
\def\psellipse{\pst@object{psellipse}}
\def\psellipse@i(#1){\@ifnextchar({\psellipse@ii(#1)}{\psellipse@ii(0,0)(#1)}}
\def\psellipse@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\addto@pscode{0 360
    \pst@coor
    \ifdim\psk@dimen\p@=\z@\else
      \psk@dimen CLW mul
      dup 4 -1 roll sub neg 3 1 roll sub
    \fi
    \pst@tempa
    \tx@Ellipse
    closepath}\def\pst@linetype{2}\end@ClosedObj }
\def\multips{\@ifnextchar({\def\pst@par{}\multips@ii}{\multips@i}}
\def\multips@i#1{\def\pst@par{rot=#1}\multips@ii}
\def\multips@ii(#1){\@ifnextchar({\multips@iii(#1)}{\multips@iii(\z@,\z@)(#1)}}
\long\def\multips@iii(#1)(#2)#3#4{\begingroup
\pst@killglue
\use@par
  \pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\pst@cnta=#3\relax
  \init@pscode
  \addto@pscode{\pst@tempa T \the\pst@cnta\space \pslbrace
    gsave \ifx\psk@rot\@empty\else\psk@rot rotate \fi}\hbox to\z@{\def\init@pscode{\addto@pscode{gsave
        \pst@number\pslinewidth SLW
        \pst@usecolor\pslinecolor}}\def\use@pscode{\addto@pscode{grestore}}\def\psclip##1{\pst@misplaced\psclip}\def\nc@object##1##2##3##4{\pst@misplaced{node connection}}#4}\addto@pscode{grestore \pst@coor T \psrbrace repeat}\leavevmode
  \use@pscode
  \endgroup
  \ignorespaces}
\def\psscalebox#1{\pst@makebox{\ps@scalebox{#1}}}
\def\ps@scalebox#1{\begingroup \pst@getscale{#1}\pst@tempa \let\pst@tempc\pst@tempg \let\pst@tempd\pst@temph \ps@@scalebox \endgroup}
\def\ps@@scalebox{\leavevmode \hbox{\ifdim\pst@tempd\p@<\z@ \pst@dimg=\pst@tempd\ht\pst@hbox \pst@dimh=\pst@tempd\dp\pst@hbox \dp\pst@hbox=-\pst@dimg \ht\pst@hbox=-\pst@dimh \else \ht\pst@hbox=\pst@tempd\ht\pst@hbox \dp\pst@hbox=\pst@tempd\dp\pst@hbox \fi \pst@dima=\pst@tempc\wd\pst@hbox \ifdim\pst@dima<\z@\kern-\pst@dima\fi \pst@Verb{CP CP translate \pst@tempa \tx@NET}\hbox to \z@{\box\pst@hbox\hss}\pst@Verb{
      CP CP translate
      1 \pst@tempc div 1 \pst@tempd div scale
      \tx@NET}\ifdim\pst@dima>\z@\kern\pst@dima\fi }}
\pslongbox{Scalebox}{\psscalebox}
\def\psscaleboxto(#1,#2){\pst@makebox{\ps@scaleboxto(#1,#2)}}
\def\ps@scaleboxto(#1,#2){\begingroup
  \pssetlength\pst@dima{#1}\pssetlength\pst@dimb{#2}\ifdim\pst@dima=\z@\else
    \pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempc
    \edef\pst@tempc{\pst@tempc\space}\fi
  \ifdim\pst@dimb=\z@
    \ifdim\pst@dima=\z@
      \@pstrickserr{\string\psscaleboxto\space dimensions cannot both be zero}\@ehpa
      \def\pst@tempa{}\def\pst@tempc{1 }\def\pst@tempd{1 }\else
      \let\pst@tempd\pst@tempc
    \fi
  \else
    \pst@dimc=\ht\pst@hbox
    \advance\pst@dimc\dp\pst@hbox
    \pst@divide{\pst@dimb}{\pst@dimc}\pst@tempd
    \edef\pst@tempd{\pst@tempd\space}\ifdim\pst@dima=\z@ \let\pst@tempc\pst@tempd \fi
  \fi
  \edef\pst@tempa{\pst@tempc \pst@tempd scale }\ps@@scalebox
  \endgroup}
\pslongbox{Scaleboxto}{\psscaleboxto}
\def\tx@Rot{Rot }
\def\psrotateleft{\pst@makebox{\ps@rotateleft\pst@hbox}}
\def\ps@rotateleft#1{\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1\pst@Verb{90 \tx@Rot}
\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}\pst@Verb{-90 \tx@Rot}}}}
\def\psrotateright{\pst@makebox{\ps@rotateright\pst@hbox}}
\def\ps@rotateright#1{\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1\pst@Verb{-90 \tx@Rot}
  \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}\pst@Verb{90 \tx@Rot}}}}
\def\psrotatedown{\pst@makebox{\ps@rotatedown\pst@hbox}}
\def\ps@rotatedown#1{\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1\pst@Verb{180 \tx@Rot}\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}\pst@Verb{-180 \tx@Rot}}}}
\pslongbox{Rotateleft}{\psrotateleft}
\pslongbox{Rotateright}{\psrotateright}
\pslongbox{Rotatedown}{\psrotatedown}
\let\rotateleft\psrotateleft
\let\rotateright\psrotateright
\let\rotatedown\psrotatedown
\def\pst@starbox{\setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}}
\def\pst@@makesmall#1{\setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}}
\def\pst@@@makesmall#1{\pst@dimh=\psk@xref\wd#1\ifx\psk@yref\relax
\pst@dimg=\dp#1\else
\pst@dimg=\psk@yref\ht#1\advance\pst@dimg\psk@yref\dp#1\fi
\setbox#1=\hbox to\z@{\kern-\pst@dimh\vbox to\z@{\vss\box#1\kern-\pst@dimg}\hss}}
\def\psset@ref#1{\pst@expandafter\psset@@ref{#1}\@empty,,\@nil}
\def\psset@@ref#1#2,#3,#4\@nil{\def\psk@xref{.5}\def\psk@yref{.5}\let\pst@makesmall\pst@@@makesmall
  \ifx\@empty#3\@empty
    \@nameuse{getref@#1}\@nameuse{getref@#2}\else
    \pst@checknum{#1#2}\psk@xref
    \pst@checknum{#3}\psk@yref
  \fi}
\def\getref@c{\let\pst@makesmall\pst@@makesmall}
\def\getref@t{\def\psk@yref{1}}
\def\getref@b{\def\psk@yref{0}}
\def\getref@B{\let\psk@yref\relax}
\def\getref@l{\def\psk@xref{0}}
\def\getref@r{\def\psk@xref{1}}
\psset@ref{c}
\def\psset@rot#1{\pst@expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil}
\def\psset@@rot#1\@nil{\def\next##1@#1=##2@##3\@nil{\ifx\relax##2\pst@getangle{#1}\psk@rot
\else
\def\psk@rot{##2}\fi}\expandafter\next\pst@rottable @#1=\relax @\@nil}
\def\psset@@@rot#1#2\@nil{\psset@@rot#2\@nil
\edef\psk@rot{\pst@rotlist \ifx\psk@rot\@empty\else\psk@rot add \fi}}
\def\pst@rotlist{mark RAngle /a ED cleartomark a neg }
\def\pst@rottable{@0=@U=@L=90 @D=180 @R=-90 @N=\pst@rotlist
@W=\pst@rotlist 90 add @S=\pst@rotlist 180 add @E=\pst@rotlist 90 sub }
\psset@rot{0}
\def\tx@RotBegin{RotBegin }
\def\tx@RotEnd{RotEnd }
\def\pst@rotate#1#2{\ifx#1\@empty\else
  \setbox#2=\hbox{\pst@Verb{#1 \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}\fi }
\def\psput@cartesian#1{\hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}}
\def\psput@special#1{\hbox{\pst@Verb{{ \pst@coor } \tx@PutCoor \tx@PutBegin }\box#1\pst@Verb{ \tx@PutEnd }}}
\def\tx@PutCoor{PutCoor }
\def\tx@PutBegin{PutBegin }
\def\tx@PutEnd{PutEnd }
\def\rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rput@i}{\rput@ii}}}
\def\rput@i[#1]{\addto@par{ref={#1}}\rput@ii}
\def\rput@ii{\@ifnextchar({\rput@iv}{\rput@iii}}
\def\rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\rput@iv}{\rput@iv(\z@,\z@)}}
\def\rput@iv(#1){\pst@killglue\pst@makebox{\rput@v{#1}}}
\def\rput@v#1{\begingroup
    \use@par
    \if@star\pst@starbox\fi
    \pst@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces }
\def\multirput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\multirput@i}{\multirput@ii}}}
\def\multirput@i[#1]{\addto@par{ref={#1}}\multirput@ii}
\def\multirput@ii{\@ifnextchar({\multirput@iv}{\multirput@iii}}
\def\multirput@iii#1{\addto@par{rot={#1}}\multirput@iv}
\def\multirput@iv(#1){\@ifnextchar({\multirput@v(#1)}{\multirput@v(\z@,\z@)(#1)}}
\def\multirput@v(#1,#2)(#3,#4)#5{\pst@makebox{\multirput@vi(#1,#2)(#3,#4){#5}}}
\def\multirput@vi(#1,#2)(#3,#4)#5{\pst@killglue
  \begingroup
    \use@par
    \if@star\pst@starbox\fi
    \pst@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \pssetxlength\pst@dima{#1}\pssetylength\pst@dimb{#2}\pssetxlength\pst@dimc{#3}\pssetylength\pst@dimd{#4}\pst@cntg=#5\relax
    \pst@cnth=\@ne
    \leavevmode
    \loop
      \vbox to \z@{\vss
        \hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}\vskip\pst@dimb }\ifnum\pst@cntg>\pst@cnth
        \advance\pst@dima\pst@dimc
        \advance\pst@dimb\pst@dimd
        \advance\pst@cnth\@ne
    \repeat 
    \endgroup
  \ignorespaces }
\newif\if@fixedradius
\def\cput{\pst@object{cput}}
\def\cput@i{\@fixedradiusfalse\cput@ii}
\def\cput@ii{\pst@killglue\@ifnextchar({\cput@iv}{\cput@iii}}
\def\cput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\cput@iv}{\cput@iv(\z@,\z@)}}
\def\cput@iv(#1){\pst@makebox{\cput@v{#1}}}
  \def\cput@v#1{\begingroup
    \use@par
    \setbox\pst@hbox=\hbox{\psboxsepfalse
      \if@fixedradius\psCirclebox@ii\else\pscirclebox@ii\fi }\pst@@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces }
\def\Cput{\pst@object{Cput}}
\def\Cput@i{\@fixedradiustrue\cput@ii}
\newdimen\pslabelsep
\def\psset@labelsep#1{\pssetlength\pslabelsep{#1}}
\psset@labelsep{5pt}
\def\psset@refangle#1{\pst@expandafter\psset@@refangle{#1}\@nil}
\def\psset@@refangle#1\@nil{\def\next##1@#1=##2"##3@##4\@nil{\ifx\relax##2\pst@getangle{#1}\psk@refangle
\def\psk@uputref{}\else
\def\psk@refangle{##2 }\def\psk@uputref{##3}\fi}\expandafter\next\pst@refangletable @#1=\relax"@\@nil}
\def\pst@refangletable{@r=0"20@u=90"02@l=180"10@d=-90"01@ur=45"22@ul=135"12@dr=-135"21@dl=-45"11}
\psset@refangle{0}
\def\uput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\uput@ii}{\uput@i}}} 
\def\uput@i#1{\addto@par{labelsep=#1}\uput@ii}
\def\uput@ii[#1]{\addto@par{refangle={#1}}\@ifnextchar({\uput@iv}{\uput@iii}}
\def\uput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\uput@iv}{\uput@iv(\z@,\z@)}}
\def\uput@iv(#1){\pst@killglue\pst@makebox{\uput@v{#1}}}
\def\uput@v#1{\begingroup
\use@par
\if@star\pst@starbox\fi
\uput@vi
\psput@{#1}\pst@hbox
\endgroup
\ignorespaces}
\def\uput@vi{\ifx\psk@uputref\@empty
\uput@vii\tx@UUput{}\else
\ifx\psk@rot\@empty
\expandafter\uput@viii\psk@uputref
\else
\uput@vii\tx@UUput{}\fi
\fi}
\def\uput@vii#1#2{\edef\pst@coor{\pst@number\pslabelsep
    #2\pst@number{\wd\pst@hbox}\pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}\psk@refangle\space \ifx\psk@rot\@empty\else\psk@rot\space sub \fi
    \tx@Uput #1}\setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}\setbox\pst@hbox=\psput@special\pst@hbox
  \ifx\psk@rot\@empty\else\pst@rotate\psk@rot\pst@hbox\fi}
\def\uput@viii#1#2{\ifnum#1>\z@\ifnum#2>\z@\pslabelsep=.707\pslabelsep\fi\fi
  \setbox\pst@hbox=\vbox to\z@{\ifnum#2=1 \vskip\pslabelsep\else\vss\fi
    \hbox to\z@{\ifnum#1=2 \hskip\pslabelsep\else\hss\fi
      \box\pst@hbox
      \ifnum#1=1 \hskip\pslabelsep\else\hss\fi}\ifnum#2=2 \vskip\pslabelsep\else\vss\fi}}
\def\tx@Uput{Uput }
\def\tx@UUput{UUput }
\def\Rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Rput@ii}{\Rput@i}}}
\def\Rput@i#1{\addto@par{labelsep=#1}\Rput@ii}
\def\Rput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Rput@iv}{\Rput@iii}}
\def\Rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\Rput@iv}{\Rput@iv(\z@,\z@)}}
\def\Rput@iv(#1){\pst@killglue\pst@makebox{\Rput@v{#1}}}
\def\Rput@v#1{\begingroup
  \use@par
  \if@star\pst@starbox\fi
  \Rput@vi
  \pst@makesmall\pst@hbox
  \pst@rotate\psk@rot\pst@hbox
  \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces}
\def\Rput@vi{\pst@dimg=\dp\pst@hbox
  \advance\pst@dimg\pslabelsep
  \dp\pst@hbox=\pst@dimg
  \pst@dimg=\ht\pst@hbox
  \advance\pst@dimg\pslabelsep
  \ht\pst@hbox=\pst@dimg
  \setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}\def\oldpsput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\oldpsput@i}{\oldpsput@ii}}}
\def\oldpsput@i[#1]{\addto@par{ref={#1}}\oldpsput@ii}
\def\oldpsput@ii{\@ifnextchar<{\oldpsput@iii}{\oldpsput@iv}}
\def\oldpsput@iii<#1>{\rput@iii{#1}}
\def\OldPsput{\let\psput\oldpsput}
\def\NewPsput{\let\psput\rput}
\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
\newif\ifshowgrid
\def\psset@showgrid#1{\@nameuse{showgrid#1}}
\psset@showgrid{false}
\newdimen\pst@shift
\def\psset@shift#1{\pssetlength\pst@dimg{#1}\pst@shift\pst@dimg}
\psset@shift{0}
\def\pspicture{\begingroup\pst@ifstar\pst@picture}
\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
\def\pst@@picture[#1]#2(#3,#4){\@ifnextchar({\pst@@@picture[#1](#3,#4)}{\pst@@@picture[#1](0,0)(#3,#4)}}
\def\pst@@@picture[#1](#2,#3)(#4,#5){\pssetxlength\pst@dima{#2}\pssetylength\pst@dimb{#3}\pssetxlength\pst@dimc{#4}\pssetylength\pst@dimd{#5}\ifdim\pst@dima>\pst@dimc \pst@dimg=\pst@dima \pst@dima=\pst@dimc \pst@dimc=\pst@dimg \fi \ifdim\pst@dimb>\pst@dimd \pst@dimg=\pst@dimb \pst@dimb=\pst@dimd \pst@dimd=\pst@dimg \fi \setbox\pst@hbox=\hbox\bgroup \begingroup\KillGlue \@ifundefined{@latexerr}{}{\let\unitlength\psunit}\edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}\psset{showgrid=false}\def\pst@tempA{#1}\ifx\pst@tempA\@empty\else\psset{#1}\fi \ifshowgrid\psgrid[style=gridstyle]\fi }
\def\pic@coor{(0,0)(0,0)(10,10)}
\newdimen\pst@shift
\def\endpspicture{\pst@killglue
  \global\pst@shift=\pst@shift \endgroup
  \egroup
  \ifdim\wd\pst@hbox=\z@\else
\fi
  \ht\pst@hbox=\pst@dimd
  \dp\pst@hbox=-\pst@dimb
  \setbox\pst@hbox=\hbox{\kern-\pst@dima
\pst@dimd-\pst@shift
\advance\pst@dimd\pst@dimb
    \lower\pst@dimd \box\pst@hbox \kern\pst@dimc}\if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
  \leavevmode\box\pst@hbox
  \endgroup \global\pst@shift\z@ }
\@namedef{pspicture*}{\pspicture*}
\@namedef{endpspicture*}{\endpspicture}
\def\tx@BeginOL{BeginOL }
\def\tx@InitOL{InitOL }
\def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}}
\def\AltOverlayMode{\def\pst@initoverlay##1{\pst@Verb{\tx@InitOL
      /Visible { initclip } def
      /Invisible {
        CP newpath OLUnit itransform moveto clip newpath moveto
      } def
      /TheOL (##1) def}}}
\def\pst@overlay#1{\edef\curr@overlay{#1}\pst@Verb{(#1) BOL}\aftergroup\pst@endoverlay}
\def\pst@endoverlay{\pst@Verb{(\curr@overlay) BOL}}
\def\curr@overlay{all}
\newbox\theoverlaybox
\def\overlaybox{\global\setbox\theoverlaybox=\hbox\bgroup
  \begingroup
  \let\psoverlay\pst@overlay
  \def\overlaybox{\@pstrickserr{Overlays cannot be nested}\@eha}\def\putoverlaybox{\@pstrickserr{You must end the overlay box
         before using \string\putoverlaybox}}\psoverlay{main}\ignorespaces}
\def\endoverlaybox{\endgroup\egroup}
\def\putoverlaybox#1{\hbox{\pst@initoverlay{#1}\copy\theoverlaybox}}
\def\psoverlay{\@pstrickserr{\string\psoverlay\space
  can only be used after \string\overlaybox}}
\ifx\pstcustomize\relax 

\def\pstdriver{Rokicki's dvips}
{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}}  \def\pstunit{1bp}\def\pstVerb#1{\special{ps: #1}}
\def\pstverbscale{SDict begin normalscale end}
\ifx\textsuperscript\@undefined
   \def\pstheader#1{\special{header=#1}}
\else
  \ifx\Gin@PS@file@header\@undefined
    \def\pstheader#1{\AtBeginDvi{\special{header=#1}}}
  \else
    \let\pstheader\Gin@PS@file@header
  \fi
\fi
\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET}




%
 \fi
\catcode`\@=\PstAtCode\relax
%
 }
  \expandafter\next
\fi

\ifx\MultidoLoaded\endinput\else
  \def\next{\def\fileversion{1.42}
\def\filedate{2010/05/14}
\message{ v\fileversion, \filedate\space <tvz>}
\csname MultidoLoaded\endcsname
\let\MultidoLoaded\endinput
\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11



\def\@empty{}
\def\@nnil{\@nil}
\def\multido@dimtonum#1#2{\edef#2{\multido@@dimtonum#1}}
\def\multido@@dimtonum#1{\expandafter\multido@@@dimtonum\the#1}
\edef\next{\noexpand\def\noexpand\multido@@@dimtonum##1\string p\string t{##1}}
\next



\newcount\multido@count
\newcount\multidocount
\newtoks\multido@stuff

\def\multido{\multido@{}{\begingroup}{\endgroup}}
\def\mmultido{\multido@{\multido@stepvar}{\begingroup}{\endgroup}}
\def\Multido{\multido@{}{}{}}
\def\MMultido{\multido@{\multido@stepvar}{}{}}



\long\def\multido@#1#2#3#4#5#6{#2\multido@count=#5\relax
    \ifnum\multido@count=\z@\else\multido@@{#1}{#4}{#6}\fi
  #3\ignorespaces}
\def\multido@@#1#2#3{\def\multido@stepvar{}\def\do{\noexpand\do\noexpand}\multido@initvar#2,\@nil,\let\do\noexpand
  \edef\multido@stepvar{\multido@stepvar}\ifnum\multido@count<\z@\multido@count=-\multido@count\fi
  \multidocount=1\relax
  #1\multido@stuff{#3}\multido@loop}
\def\multido@loop{\the\multido@stuff
  \ifnum\multidocount<\multido@count
    \advance\multidocount\@ne
    \multido@stepvar
    \expandafter\multido@loop
  \fi}
\def\multidostop{\multidocount=\multido@count}
\def\multido@badvar{\multido@count=0
  \errhelp{\multido command will be skipped.}\errmessage{Bad \string\multido\space variable declaration}}
\def\multido@initvar#1,{\def\multido@temp{#1}\ifx\multido@temp\@nnil\else
    \ifx\multido@temp\@empty\else
      \multido@@initvar#1\@nil=+\@nil\relax
    \fi
    \expandafter\multido@initvar
  \fi}
\def\multido@@initvar#1=#2+#3\@nil#4\relax{\ifx\@empty#4\@empty
    \multido@badvar
  \else
    \multido@vartype#1\@empty
    \ifx\multido@temp\relax
      \multido@badvar
    \else
      \multido@temp{#2}{#3}#1\fi
  \fi}
\def\multido@vartype#1{\ifcat\noexpand\@nil\noexpand#1\expandafter\multido@@vartype\string#1\@nil
  \else
    \let\multido@temp\relax
  \fi}
\def\multido@@vartype#1#2#3\@nil{\expandafter\let\expandafter\multido@temp
    \csname multido@init@#2\endcsname}
\def\MultidoCheckNames{\let\multido@@@vartype\multido@vartype
  \def\multido@vartype##1{\ifx\undefined##1\multido@@@vartype{##1}\else
      \errhelp{\multido command will be skipped.}\errmessage{Multido variable \string##1 already defined}\let\multido@temp\relax
    \fi}}



\def\multido@addtostep#1{\edef\multido@stepvar{\multido@stepvar#1}}



\def\multido@init@d#1#2#3{\expandafter\ifx\csname pssetlength\endcsname\relax
    \dimen@=#1\relax\dimen@i=#2\relax
  \else
    \pssetlength\dimen@{#1}\pssetlength\dimen@i{#2}\fi
  \edef#3{\number\dimen@ sp}\ifnum\multido@count<\z@\dimen@i=-\dimen@i\fi
  \multido@addtostep{\do\multido@step@d{\do#3}{\number\dimen@i sp}}}
\def\multido@step@d#1#2{\dimen@=#1\advance\dimen@#2
  \edef#1{\number\dimen@ sp}}\def\multido@init@D{\multido@init@d}



\def\multido@init@i#1#2#3{\count@=#1\relax
  \edef#3{\the\count@}\count@=#2\relax
  \ifnum\multido@count<\z@\count@=-\count@\fi
  \multido@addtostep{\do\multido@step@i{\do#3}{\the\count@}}}
\def\multido@step@i#1#2{\count@=#1\advance\count@ by #2
  \edef#1{\the\count@}}
\def\multido@init@I{\multido@init@i}



\def\multido@init@r#1#2#3{\dimen@=#1pt
  \multido@dimtonum\dimen@#3\dimen@=#2pt
  \ifnum\multido@count<\z@\dimen@=-\dimen@\fi
  \multido@addtostep{\do\multido@step@r{\do#3}{\number\dimen@ sp}}}
\def\multido@step@r#1#2{\dimen@=#1pt\advance\dimen@#2
  \multido@dimtonum\dimen@#1}
\def\multido@init@R{\multido@init@r}



\def\multido@init@n#1#2#3{\edef#3{#1}\ifnum\multido@count<\z@\expandafter\fpSub\else\expandafter\fpAdd\fi
  {0}{#2}\multido@temp
  \multido@addtostep{\do\fpAdd{\do#3}{\multido@temp}{\do#3}}}
\def\multido@init@N{\multido@init@n}





\def\fpAdd#1#2#3{\edef\multido@temp{#1..\noexpand\@nil#2}\expandafter\FPadd@\multido@temp..\@nil
  \let#3\multido@temp}
\def\fpSub#1#2{\edef\multido@temp{\noexpand\FPsub@#2\noexpand\@empty}\fpAdd{#1}{\multido@temp}}
\ifx\FPadd\undefined\let\FPadd\fpAdd\let\FPsub\fpSub\fi
\def\FPsub@#1{\ifx-#1\else-#1\fi}
\def\FPadd@#1.#2.#3\@nil#4.#5.#6\@nil{\begingroup
    \def\multido@temp{\let\next\relax}\let\next\z@
    \afterassignment\multido@temp\count@=#1\next
    \dimen@i=0#2sp\relax
    \let\next\z@
    \afterassignment\multido@temp\multido@count=#4\next
    \multidocount=0#5\relax
    \dimen@=\number\count@ sp
    \count@=\@ne
    \FPadd@@@#500000000\@nil
    \ifnum#11<\z@
      \count@=-\tw@
      \dimen@=-\dimen@
    \fi
    \ifnum#41<\z@
      \count@=-\count@
      \multido@count=-\multido@count
    \fi
    \ifnum\count@>\z@
      \advance\multido@count\dimen@
      \advance\multidocount\dimen@i
      \ifnum\multidocount<\multido@temp\relax
        \advance\multidocount\multido@temp\relax
      \else
        \advance\multido@count\@ne
      \fi
      \advance\count@-3
    \else
      \advance\multido@count-\dimen@
      \advance\multidocount-\dimen@i
      \ifnum\multido@count<\z@
        \multido@count=-\multido@count
        \multidocount=-\multidocount
        \advance\count@\@ne
      \else
        \ifnum\multido@count=\z@
          \ifnum\multidocount<\z@
            \multidocount=-\multidocount
            \advance\count@\@ne
          \fi
        \fi
      \fi
      \ifnum\multidocount<\z@
        \advance\multidocount\multido@temp
        \advance\multido@count-\@ne
      \fi
      \advance\multidocount\multido@temp\relax
    \fi
    \expandafter\FPadd@@\the\multidocount\@empty\@nil
  \endgroup}
\def\FPadd@@#1#2#3\@nil{\xdef\multido@temp{\ifnum\count@=-1-\fi
  \the\multido@count\ifx#2\@empty\else.#2#3\fi}}
\def\FPadd@@@#1#2#3#4#5#6#7#8#9\@nil{\def\multido@temp{1#9}}

\catcode`\@=\TheAtCode\relax

%
 }
  \expandafter\next
\fi

\def\fileversion{1.00}
\def\filedate{2007/06/26}
\message{ v\fileversion, \filedate}


\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11

\begingroup
\catcode`\{=13
\catcode`\}=13
\catcode`\(=13
\catcode`\)=13
\catcode`\,=13
\catcode`\!=1
\catcode`\*=2
\catcode`\ =13
\catcode`\_=13
\catcode`\^^M=13
\gdef\pst@datadelimiters!\catcode`\{=13\catcode`\}=13\catcode`\(=13\catcode`\)=13\catcode`\,=13\catcode`\ =13\catcode`\^^M=13\def,##1!\ifcat\noexpand,\noexpand##1\expandafter##1\else\space D\space##1\fi*\let(,\let),\let{,\let},\let ,\let^^M,\let_\@empty*\endgroup
\begingroup
\catcode`\,=13
\catcode`\_=13
\gdef\savedata@#1[#2]{\xdef\pst@tempg{#2_}\endgroup
  \let#1\pst@tempg
  \global\let\pst@tempg\relax
  \ignorespaces}
\gdef\readdata@{\read1 to \pst@tempa
  \expandafter\readdata@@\pst@tempa_\@nil
  \ifeof1\else\expandafter\readdata@\fi}
\gdef\pst@@readfile#1#2\@nil{\addto@pscode{,#1#2}}\gdef\readdata@@#1#2\@nil{\xdef\pst@tempg{\pst@tempg,#1#2}}\endgroup

\def\readdata#1#2{\openin1=#2
  \begingroup
  \def\pst@tempg{}\ifeof1
    \@pstrickserr{Data file `#2' not found.}\@ehpa
  \else
    \pst@datadelimiters
    \catcode`\[=1
    \catcode`\]=2
    \readdata@ \fi
  \endgroup
  \let#1\pst@tempg
  \global\let\pst@tempg\relax
  \ignorespaces}

\def\pst@readfile#1{{\let\readdata@@\pst@@readfile\readdata\pst@tempg{#1}}}
\def\pst@altreadfile#1{\openin1=#1
  \ifeof1
    \@pstrickserr{Data file `#1' not found.}\@ehpa
  \else
    \catcode`\{=10
    \catcode`\}=10
    \catcode`\(=10
    \catcode`\)=10
    \catcode`\,=10
    \catcode`\^^M=10
    \catcode`\[=1
    \catcode`\]=2
    \pst@@altreadfile
  \fi}
\def\pst@@altreadfile{\read1 to \pst@tempg
  \expandafter\pst@@@altreadfile\pst@tempg\@empty\@nil
  \ifeof1\else\expandafter\pst@@@altreadfile\fi}
\def\pst@@@altreadfile#1#2\@nil{\addto@pscode{#1#2}}

\def\savedata#1{\begingroup\pst@datadelimiters\savedata@{#1}}

\def\beginplot@line{\begin@OpenObj}
\def\endplot@line{\psline@ii}
\def\beginplot@polygon{\begin@ClosedObj}
\def\endplot@polygon{\pspolygon@ii}
\def\beginplot@curve{\begin@OpenObj}
\def\endplot@curve{\pscurve@ii}
\def\beginplot@ecurve{\begin@OpenObj}
\def\endplot@ecurve{\psecurve@ii}
\def\beginplot@ccurve{\begin@ClosedObj}
\def\endplot@ccurve{\psccurve@ii}
\def\beginplot@dots{\begin@SpecialObj}
\def\endplot@dots{\psdots@ii}
\def\beginplot@bezier{\begin@OpenObj}
\def\endplot@bezier{\psbezier@ii}
\def\beginplot@cbezier{\begin@ClosedObj}
\def\endplot@cbezier{\pscbezier@ii}
\let\beginplot@LineToYAxis\beginplot@line  \def\endplot@LineToYAxis{\psLineToYAxis@ii}
\let\beginqp@LineToYAxis\beginqp@line
\let\doqp@LineToYAxis\doqp@line
\let\endqp@LineToYAxis\endqp@line
\let\testqp@LineToYAxis\testqp@line
\let\beginplot@LineToXAxis\beginplot@line
\def\endplot@LineToXAxis{\psLineToXAxis@ii}
\let\beginqp@LineToXAxis\beginqp@line
\let\doqp@LineToXAxis\doqp@line
\let\endqp@LineToXAxis\endqp@line
\let\testqp@LineToXAxis\testqp@line
\def\psset@plotstyle#1{\@ifundefined{beginplot@#1}{\@pstrickserr{Plot style `#1' not defined}\@eha}{\edef\psplotstyle{#1}}}
\psset@plotstyle{line}

\def\psset@plotpoints#1{\pst@cntg=#1\relax
  \ifnum\pst@cntg<2
    \@pstrickserr{plotpoints parameter must be at least 2}\@ehpa
  \else
    \advance\pst@cntg-1
    \edef\psk@plotpoints{\the\pst@cntg\space}\fi}
\psset@plotpoints{50}



\def\beginqp@line{\pst@oplineto}
\def\doqp@line{L }
\def\endqp@line{\end@OpenObj}\def\testqp@line{\ifdim\pslinearc>\z@\else
    \ifshowpoints\else
      \ifx\psk@arrowA\@empty
        \ifx\psk@arrowB\@empty
          \@psttrue
        \fi
      \fi
    \fi
  \fi}

\def\beginqp@polygon{moveto }
\def\doqp@polygon{L }
\def\endqp@polygon{\addto@pscode{closepath}\end@ClosedObj}
\def\testqp@polygon{\ifdim\pslinearc>\z@\else
    \ifshowpoints\else
      \@psttrue
    \fi
  \fi}

\def\beginqp@dots{\psk@dotsize
  \@nameuse{psds@\psk@dotstyle}
Dot }
\def\doqp@dots{Dot }
\def\endqp@dots{\end@SpecialObj}
\def\testqp@dots{\@psttrue}

\def\beginqp@bezier{/n 0 def \pst@oplineto}
\def\doqp@bezier{/n n 1 add def n 3 mod 0 eq { curveto } if }
\def\endqp@bezier{\addto@pscode{n 3 mod { pop pop } repeat}
  \end@OpenObj}\def\testqp@bezier{\ifshowpoints\else
    \ifx\psk@arrowA\@empty
      \ifx\psk@arrowB\@empty
        \@psttrue
      \fi
    \fi
  \fi}

\def\beginqp@cbezier{/n 0 def moveto }
\def\doqp@cbezier{\doqp@bezier}
\def\endqp@cbezier{\addto@pscode{n 3 mod { pop pop } repeat closepath}
  \end@ClosedObj}\def\testqp@cbezier{\ifshowpoints\else\@psttrue\fi}
\def\psLineToYAxis@ii{\addto@pscode{\pst@cp \psline@iii \tx@LineToYAxis}\end@OpenObj}
\def\tx@LineToYAxis{LineToYAxis }
\pst@def{LineToYAxis}<{
  NArray            n { 2 copy moveto 0 exch Lineto   pop             } repeat
}>
\def\psLineToXAxis@ii{\addto@pscode{\pst@cp \psline@iii \tx@LineToXAxis}\end@OpenObj}
\def\tx@LineToXAxis{LineToXAxis }
\pst@def{LineToXAxis}<{NArray
n 0 eq not
  { n 1 eq { 0 0 /n 2 def } if
    ArrowA
    /n n 2 sub def
    CP 2 copy moveto pop 0 Lineto
    n { 2 copy moveto pop 0 Lineto } repeat
    CP
    4 2 roll
    ArrowB
    2 copy moveto pop 0
    L
    pop pop } if}>
\def\dataplot{\def\pst@par{}\pst@object{dataplot}}
\def\dataplot@i#1{\pst@killglue
  \begingroup
    \use@par
    \@pstfalse
    \@nameuse{testqp@\psplotstyle}\if@pst
      \dataplot@ii{\addto@pscode{#1}}\else
      \listplot@ii{\addto@pscode{#1}}\fi
  \endgroup
  \ignorespaces}
\def\dataplot@ii#1{\@nameuse{beginplot@\psplotstyle}\addto@pscode{/Dx { \pst@number\psxunit mul /D { Dy } def } def
      /Dy { \pst@number\psyunit mul Do /D { Dx } def } def
      /D { /D { Dx } def } def
      /Do {
        \@nameuse{beginqp@\psplotstyle}/Do { \@nameuse{doqp@\psplotstyle}} def
      } def}#1\addto@pscode{D}\@nameuse{endqp@\psplotstyle}}

\def\fileplot{\def\pst@par{}\pst@object{fileplot}}
\def\fileplot@i#1{\pst@killglue
  \begingroup
    \use@par
    \@pstfalse
    \@nameuse{testqp@\psplotstyle}\if@pst
      \dataplot@ii{\pst@readfile{#1}}\else
      \listplot@ii{\pst@altreadfile{#1}}\fi
  \endgroup
  \ignorespaces}

\pst@def{ScalePoints}</y ED /x ED
  counttomark dup dup cvi eq not { exch pop } if
  /m exch def /n m 2 div cvi def
  n { y mul m 1 roll x mul m 1 roll /m m 2 sub def } repeat>

\def\listplot{\def\pst@par{}\pst@object{listplot}}
\def\listplot@i#1{\listplot@ii{\addto@pscode{#1}}}
\def\listplot@ii#1{\@nameuse{beginplot@\psplotstyle}\addto@pscode{/D {} def mark}#1\addto@pscode{\pst@number\psxunit \pst@number\psyunit \tx@ScalePoints}\@nameuse{endplot@\psplotstyle}}



\def\psplotinit#1{\xdef\psplot@init{#1 }}
\def\psplot@init{}

\def\psplot{\def\pst@par{}\pst@object{psplot}}
\def\psplot@i#1#2#3{\pst@killglue
  \begingroup
    \use@par
    \@nameuse{beginplot@\psplotstyle}\addto@pscode{\psplot@init
      /x #1 def
      /x1 #2 def
      /dx x1 x sub \psk@plotpoints div def
      /xy {
        x \pst@number\psxunit mul
        #3 \pst@number\psyunit mul
      } def}\gdef\psplot@init{}\@pstfalse
    \@nameuse{testqp@\psplotstyle}\if@pst
      \psplot@ii
    \else
      \psplot@iii
    \fi
  \endgroup
  \ignorespaces}
\def\psplot@ii{\addto@pscode{xy \@nameuse{beginqp@\psplotstyle}
      \psk@plotpoints 1 sub {
        /x x dx add def
        xy \@nameuse{doqp@\psplotstyle}
      } repeat
      /x x1 def
      xy \@nameuse{doqp@\psplotstyle}}\@nameuse{endqp@\psplotstyle}}
\def\psplot@iii{\addto@pscode{mark
      /n 2 def
      \psk@plotpoints {
        xy
        n 2 roll
        /n n 2 add def
        /x x dx add def
      } repeat
      /x x1 def
      xy
      n 2 roll}\@nameuse{endplot@\psplotstyle}}

\def\parametricplot{\def\pst@par{}\pst@object{parametricplot}}
\def\parametricplot@i#1#2#3{\pst@killglue
  \begingroup
    \use@par
    \@nameuse{beginplot@\psplotstyle}\addto@pscode{\psplot@init
      /t #1 def
      /t1 #2 def
      /dt t1 t sub \psk@plotpoints div def
      /xy {
        #3
        \pst@number\psyunit mul exch
        \pst@number\psxunit mul exch
      } def}\gdef\psplot@init{}\@pstfalse
    \@nameuse{testqp@\psplotstyle}\if@pst
      \parametricplot@ii
    \else
      \parametricplot@iii
    \fi
  \endgroup
  \ignorespaces}
\def\parametricplot@ii{\addto@pscode{xy \@nameuse{beginqp@\psplotstyle}
      \psk@plotpoints 1 sub {
        /t t dt add def
        xy \@nameuse{doqp@\psplotstyle}
      } repeat
      /t t1 def
      xy \@nameuse{doqp@\psplotstyle}}\@nameuse{endqp@\psplotstyle}}
\def\parametricplot@iii{\addto@pscode{mark
      /n 2 def
      \psk@plotpoints {
        xy
        n 2 roll
        /n n 2 add def
        /t t dt add def
      } repeat
      /t t1 def
      xy
      n 2 roll}\@nameuse{endplot@\psplotstyle}}



\def\pst@ticks#1#2#3#4{\begin@SpecialObj
    \addto@pscode{#1 rotate
      /n #3 def
      /dx #2 def
      n 0 lt { /dx dx neg def /n n neg def } if
      /y2 \psk@ticksize CLW 2 div add def
      /y1 y2 neg def
      \ifnum\psk@tickstyle=1
        \ifdim#4<\z@ /y2 \else /y1 \fi 0 def
      \else
        \ifnum\psk@tickstyle=-1
          \ifdim#4<\z@ /y1 \else /y2 \fi 0 def
        \fi
      \fi
      /x dx def
      n { x y1 moveto x y2 lineto stroke /x x dx add def } repeat}\end@SpecialObj}


\def\psset@ticksize#1{\pst@getlength{#1}\psk@ticksize}
\psset@ticksize{3pt}

\def\psset@tickstyle#1{\pst@expandafter\psset@@tickstyle{#1}\@nil}
\def\psset@@tickstyle#1#2\@nil{\ifx#1f\let\psk@tickstyle\z@\else
    \ifx#1t\let\psk@tickstyle\@ne\else
      \ifx#1b\let\psk@tickstyle\m@ne\else
        \@pstrickserr{Bad tick style: `#1#2'}\@ehpa
  \fi\fi\fi}
\psset@tickstyle{full}

\def\psset@ticks#1{\pst@expandafter\psset@@ticks{#1}\@nil\psk@ticks}
\def\psset@@ticks#1#2\@nil#3{\ifx#1a\let#3\z@\else
    \ifx#1x\let#3\@ne\else
      \ifx#1y\let#3\tw@\else
        \ifx#1n\let#3\thr@@\else
          \@pstrickserr{Bad argument: `#1#2'}\@ehpa
  \fi\fi\fi\fi}
\psset@ticks{all}

\def\psset@labels#1{\pst@expandafter\psset@@ticks{#1}\@nil\psk@labels}
\psset@labels{all}

\def\psset@Ox#1{\edef\psk@Ox{#1}}
\psset@Ox{0}
\def\psset@Dx#1{\edef\psk@Dx{#1}}
\psset@Dx{1}
\def\psset@dx#1{\pssetxlength\pst@dimg{#1}\edef\psk@dx{\number\pst@dimg}}
\psset@dx{0}

\def\psset@Oy#1{\edef\psk@Oy{#1}}
\psset@Oy{0}
\def\psset@Dy#1{\edef\psk@Dy{#1}}
\psset@Dy{1}
\def\psset@dy#1{\pssetylength\pst@dimg{#1}\edef\psk@dy{\number\pst@dimg}}
\psset@dy{0}

\newif\ifshoworigin
\def\psset@showorigin#1{\@nameuse{showorigin#1}}
\psset@showorigin{true}


\def\psaxes{\def\pst@par{}\pst@object{psaxes}}
\def\psaxes@i{\pst@getarrows\psaxes@ii}
\def\psaxes@ii(#1){\@ifnextchar({\psaxes@iii(#1)}{\psaxes@iv(0,0)(0,0)(#1)}}
\def\psaxes@iii(#1)(#2){\@ifnextchar({\psaxes@iv(#1)(#2)}{\psaxes@iv(#1)(#1)(#2)}}
\def\psaxes@iv(#1,#2)(#3,#4)(#5,#6){\setbox\pst@hbox=\hbox\bgroup
    \use@par
    \pssetxlength\pst@dimg{#1}\pssetylength\pst@dimh{#2}\pssetxlength\pst@dima{#3}\pssetylength\pst@dimb{#4}\pssetxlength\pst@dimc{#5}\pssetylength\pst@dimd{#6}\advance\pst@dima-\pst@dimg \advance\pst@dimb-\pst@dimh \advance\pst@dimc-\pst@dimg \advance\pst@dimd-\pst@dimh \@nameuse{psxs@\psk@axesstyle}\advance\pslabelsep.5\pslinewidth
\begingroup
      \ifdim\pst@dimb=\z@\else\showoriginfalse\fi
      \ifnum\psk@dx=\z@
        \pst@dimg=\psk@Dx\psxunit
        \edef\psk@dx{\number\pst@dimg}\fi
      \ifnum\psk@ticks<\tw@
        \ifnum\psk@tickstyle>\z@\else
          \advance\pslabelsep\psk@ticksize\p@
        \fi
      \fi
      \pst@hlabels\pst@dimc\psk@arrowB
      \pst@hlabels\pst@dima\psk@arrowA
    \endgroup
    \begingroup
      \ifdim\pst@dima=\z@\else\showoriginfalse\fi
      \ifnum\psk@dy=\z@
         \pst@dimg=\psk@Dy\psyunit
         \edef\psk@dy{\number\pst@dimg}\fi
      \ifodd\psk@ticks\else
        \ifnum\psk@tickstyle>\z@\else
          \advance\pslabelsep\psk@ticksize\p@
        \fi
      \fi
      \pst@vlabels\pst@dimd\psk@arrowB
      \pst@vlabels\pst@dimb\psk@arrowA
    \endgroup
\egroup
  \pssetxlength\pst@dimg{#1}\pssetylength\pst@dimh{#2}\leavevmode\psput@cartesian\pst@hbox
  \ignorespaces}

\def\psxs@axes{\psxs@@axes\pst@dima\pst@dimc{}\psxs@@axes\pst@dimb\pst@dimd{exch}}
\def\psxs@@axes#1#2#3{\begin@SpecialObj
    \ifdim#1=\z@
      \def\psk@arrowA{C}\else
      \ifdim#2=\z@
        \def\psk@arrowB{C}\fi
    \fi
    \let\pst@linetype\pst@arrowtype
    \pst@addarrowdef
    \addto@pscode{\pst@number#2 0 #3
      \pst@number#1 0 #3
      ArrowA
      CP 4 2 roll
      ArrowB
      L
      pop pop}\pst@stroke
  \end@SpecialObj}

\def\psxs@frame{\begin@SpecialObj
    \addto@pscode{0 0 moveto \pst@number\pst@dimc 0 L
      0 \pst@number\pst@dimd 2 copy rlineto L closepath}\pst@stroke
    \psk@fillstyle
  \end@SpecialObj
  \let\psk@arrowA\@empty
  \let\psk@arrowB\@empty}

\def\psset@axesstyle#1{\@ifundefined{psxs@#1}{\@pstrickserr{Axes style `#1' not defined}\@eha}{\edef\psk@axesstyle{#1}}}
\psset@axesstyle{axes}

\def\psxs@none{\let\psk@arrowA\@empty\let\psk@arrowB\@empty}

\def\pst@hlabels#1#2{\ifdim#1=\z@\else
    \ifx#2\empty\else
      \advance#1\ifdim#1>\z@-\fi7\pslinewidth
    \fi
    \pst@cnta=#1\relax                \divide\pst@cnta\psk@dx\relax     \ifnum\pst@cnta=\z@\else
      \pst@dimb=\psk@dx sp            \ifnum\psk@ticks<\tw@
        \pst@ticks{0}{\pst@number\pst@dimb}{\the\pst@cnta}{\pst@dimd}\fi
      \ifnum\psk@labels<\tw@ \pst@@hlabels\fi
      \showoriginfalse
    \fi
  \fi}

\def\pst@@hlabels{\vbox to\z@{\ifdim\pst@dimd>\z@\vskip\pslabelsep\else\vss\fi
    \ifnum\pst@cnta<\z@
      \pst@dimb=-\pst@dimb
    \fi
    \hbox to\z@{\ifshoworigin\hbox to \z@{\hss\pshlabel{\psk@Ox}\hss}\fi
      \mmultido
        {\n=\psk@Ox+\psk@Dx}{\pst@cnta}{\hskip\pst@dimb\hbox to \z@{\hss\pshlabel{\n}\hss}}\hss}\ifdim\pst@dimd>\z@\vss\else\vskip\pslabelsep\fi}}

\def\pshlabel#1{$#1$}

\def\pst@vlabels#1#2{\ifdim#1=\z@\else
    \ifx#2\empty\else
      \advance#1\ifdim#1>\z@-\fi7\pslinewidth
    \fi
    \pst@cnta=#1\relax                \divide\pst@cnta\psk@dy\relax     \ifnum\pst@cnta=\z@\else
      \pst@dima=\psk@dy sp            \ifodd\psk@ticks\else
        \pst@ticks{90}{\pst@number\pst@dima}{\the\pst@cnta}{-\pst@dimc}\fi
      \ifodd\psk@labels\else\pst@@vlabels\fi
      \showoriginfalse
    \fi
  \fi}

\def\pst@@vlabels{\vbox to\z@{\ifnum\pst@cnta>\z@
      \pst@dima=-\pst@dima
    \fi
    \offinterlineskip
    \ifshoworigin
      \vbox to \z@{\vss\hbox to\z@{\ifdim\pst@dimc>\z@\hss\else\hskip\pslabelsep\fi
        \psvlabel{\psk@Oy}\ifdim\pst@dimc>\z@\hskip\pslabelsep\else\hss\fi}\vss}\fi
    \mmultido
      {\n=\psk@Oy+\psk@Dy}{\pst@cnta}{\vbox to\pst@dima{\vss}\vbox to \z@{\vss\hbox to\z@{\ifdim\pst@dimc>\z@\hss\else\hskip\pslabelsep\fi
        \psvlabel{\n}\ifdim\pst@dimc>\z@\hskip\pslabelsep\else\hss\fi}\vss}}\vss}}

\def\psvlabel#1{$#1$}

\catcode`\@=\TheAtCode\relax
%
 \fi
\ifx\PSTnodesLoaded\endinput\else\def\fileversion{97 patch 11}
\def\filedate{2000/11/09}
\message{ v\fileversion, \filedate}
\csname PSTnodesLoaded\endcsname
\let\PSTnodesLoaded\endinput
\ifx\PSTricksLoaded\endinput\else\def\fileversion{1.20}
\def\filedate{2008/01/01}
\csname PSTricksLoaded\endcsname
\let\PSTricksLoaded\endinput
\edef\PstAtCode{\the\catcode`\@}
\catcode`\@=11\relax
\expandafter\ifx\csname @latexerr\endcsname\relax
\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
  #1\endcsname\relax#2\else#3\fi}
\def\@namedef#1{\expandafter\def\csname #1\endcsname}
\def\@nameuse#1{\csname #1\endcsname}
\def\@eha{Your command was ignored.^^J
  Type \space I <command> <return> \space to replace
  it with another command,^^J
  or \space <return> \space to continue without it.}
\def\@spaces{\space\space\space\space}
\def\typeout#1{\immediate\write\@unused{#1}}
\alloc@7\write\chardef\sixt@@n\@unused
\def\@empty{}
\def\@gobble#1{}
\def\@nnil{\@nil}
\def\@ifnextchar#1#2#3{\let\@tempe#1\def\@tempa{#2}\def\@tempb{#3}\futurelet\@tempc\@ifnch}
\def\@ifnch{\ifx\@tempc\@sptoken \let\@tempd\@xifnch
  \else\ifx\@tempc\@tempe \let\@tempd\@tempa \else \let\@tempd\@tempb \fi
  \fi
  \@tempd}
\begingroup
\def\:{\global\let\@sptoken= } \:
\def\:{\@xifnch} \expandafter\gdef\: {\futurelet\@tempc\@ifnch}
\endgroup
\fi
\def\ps@ifnextchar#1#2#3{\let\reserved@d= #1\def\reserved@a{#2}\def\reserved@b{#3}\futurelet\@let@token\ps@ifnch}
\def\ps@ifnch{\ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi
  \reserved@b
}
\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz)}
\def\@pstrickserr#1#2{\begingroup
  \newlinechar`\^^J
  \edef\pst@tempc{#2}\expandafter\errhelp\expandafter{\pst@tempc}\typeout{PSTricks error. \space See User's Guide for further information.^^J
    \@spaces\@spaces\@spaces\@spaces
    Type \space H <return> \space for immediate help.}\errmessage{#1}\endgroup}
\def\@ehpa{Your command was ignored. Default value substituted.^^J
  Type \space <return> \space to procede.}
\def\@ehpb{Your command was ignored. Will recover best I can.^^J
  Type \space <return> \space to procede.}
\def\@ehpc{You better fix this before proceding.^^J
  See the PSTricks User's Guide or ask your system administrator for help.^^J
  Type \space X <return> \space to quit.}
\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb}
\newdimen\pst@dima
\newdimen\pst@dimb
\newdimen\pst@dimc
\newdimen\pst@dimd
\newdimen\pst@dimg
\newdimen\pst@dimh
\newbox\pst@hbox
\newbox\pst@boxg
\newcount\pst@cnta
\newcount\pst@cntb
\newcount\pst@cntc
\newcount\pst@cntd
\newcount\pst@cntg
\newcount\pst@cnth
\newif\if@pst
\newtoks\pst@toks
\newif\if@star
\def\pst@ifstar#1{\@ifnextchar*{\@startrue\def\next*{#1}\next}{\@starfalse#1}}
\def\pst@expandafter#1#2{\def\next{#1}\edef\@tempa{#2}\ifx\@tempa\@empty
    \@pstrickserr{Unexpected empty argument!}\@ehpb
    \def\@tempa{\@empty}\fi
  \expandafter\next\@tempa}
\def\pst@dimtonum#1#2{\edef#2{\pst@@dimtonum#1}}
\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1}
{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}}
\def\pst@pyth#1#2#3{\begingroup
    \pst@dima=#1\relax
    \ifnum\pst@dima<\z@\pst@dima=-\pst@dima\fi  \pst@dimb=#2\relax
    \ifnum\pst@dimb<\z@\pst@dimb=-\pst@dimb\fi  \advance\pst@dimb\pst@dima         \ifnum\pst@dimb=\z@
      \global\pst@dimg=\z@             \else
      \multiply\pst@dima 8\relax              \pst@@divide\pst@dima\pst@dimb     \advance\pst@dimg -4pt            \multiply\pst@dimg 2
      \pst@dimtonum\pst@dimg\pst@tempa
      \pst@dima=\pst@tempa\pst@dimg           \advance\pst@dima 64pt         \divide\pst@dima 2\relax                      \pst@dimd=7pt                \pst@@pyth\pst@@pyth\pst@@pyth            \pst@dimtonum\pst@dimd\pst@tempa
      \pst@dimg=\pst@tempa\pst@dimb
      \global\divide\pst@dimg 8             \fi
  \endgroup
  #3=\pst@dimg}
\def\pst@@pyth{\pst@@divide\pst@dima\pst@dimd
  \advance\pst@dimd\pst@dimg
  \divide\pst@dimd 2\relax}
\iffalse
\def\pst@pyth#1#2#3{\ifdim#1>#2\pst@@pyth#1#2#3\else\pst@@pyth#2#1#3\fi}
\def\pst@@pyth#1#2#3{\ifdim4#1>9#2#3=#1\advance#3 .2122#2\else
    #3=.8384#1\advance#3 .5758#2\fi }
\fi
\def\pst@divide#1#2#3{\pst@@divide{#1}{#2}\pst@dimtonum\pst@dimg{#3}}
\def\pst@@divide#1#2{\pst@dimg=#1\relax
  \pst@dimh=#2\relax
  \pst@cntg=\pst@dimh
  \pst@cnth=67108863
  \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide
  \divide\pst@dimg\pst@cntg }
\def\pst@@@divide{\ifnum
    \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cnth
      \multiply\pst@dimg\sixt@@n
    \else
      \divide\pst@cntg\sixt@@n
    \fi }
\def\pst@configerr#1{\@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc}
\def\pstVerb#1{\pst@configerr\pstVerb}
\def\pstverb#1{\pst@configerr\pstverb}
\def\pstverbscale{\pst@configerr\pstverbscale}
\def\pstrotate{\pst@configerr\pstrotate}
\def\pstheader#1{\pst@configerr\pstheader}
\def\pstdriver{\pst@configerr\pstdriver}
\@ifundefined{pstcustomize}{\def\pstcustomize{\endinput\let\pstcustomize\relax}}{}


\def\pstdriver{Rokicki's dvips}
{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}}  \def\pstunit{1bp}\def\pstVerb#1{\special{ps: #1}}
\def\pstverbscale{SDict begin normalscale end}
\ifx\textsuperscript\@undefined
   \def\pstheader#1{\special{header=#1}}
\else
  \ifx\Gin@PS@file@header\@undefined
    \def\pstheader#1{\AtBeginDvi{\special{header=#1}}}
  \else
    \let\pstheader\Gin@PS@file@header
  \fi
\fi
\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET}




%
 \newif\ifPSTricks
\PSTrickstrue
\def\PSTricksOff{\def\pstheader##1{}\def\pstverb##1{}\def\pstVerb##1{}\PSTricksfalse }
\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{}
\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{}
\pstheader{pstricks.pro}
\pstheader{pst-algparser.pro}
\def\pst@dict{tx@Dict begin }
\def\pst@theheaders{pstricks.pro pst-algparser.pro}
\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}}
\def\tx@Atan{Atan }
\def\tx@Div{Div }
\def\tx@NET{NET }
\def\tx@Pyth{Pyth }
\def\tx@PtoC{PtoC }
\def\tx@PathLength@{PathLength@ }
\def\tx@PathLength{PathLength }
\pst@dimg=\pstunit\relax
\ifdim\pst@dimg=1bp
\def\pst@stp{.996264 dup scale}
\else
\edef\pst@stp{1 \pst@@dimtonum\pst@dimg\space div dup scale}
\fi
\def\tx@STP{STP }
\def\tx@STV{STV }
\pst@def{UserCoor}< \pst@number\psyunit div exch \pst@number\psxunit div exch >
\pst@def{ScreenCoor}< \pst@number\psyunit mul exch \pst@number\psxunit mul exch >
\def\pst@number#1{\pst@@dimtonum#1\space}
\def\pst@checknum#1#2{\edef\next{#1}\ifx\next\@empty
    \let\pst@num\z@
  \else
    \expandafter\pst@@checknum\next..\@nil
  \fi
  \ifnum\pst@num=\z@
    \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa
    \def#2{0 }\else
    \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.\expandafter\@gobble\the\pst@cnth\space}\fi}
\def\pst@@checknum{\@ifnextchar-{\let\pst@num\tw@\expandafter\pst@@@checknum\@gobble}{\let\pst@num\@ne\pst@@@checknum}}
\def\pst@@@checknum#1.#2.#3\@nil{\afterassignment\pst@@@@checknum\pst@cntg=0#1\relax\@nil
\afterassignment\pst@@@@checknum\pst@cnth=1#2\relax\@nil}
\def\pst@@@@checknum#1\relax\@nil{\ifx\@nil#1\@nil\else\let\pst@num\z@\fi}
\def\pst@getnumii#1 #2 #3\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph}
\def\pst@getnumiii#1 #2 #3 #4\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi}
\def\pst@getnumiv#1 #2 #3 #4 #5\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi
\pst@checknum{#4}\pst@tempj}
\def\pst@getdimnum#1 #2 #3\@nil{\pssetlength\pst@dimg{#1}\pst@checknum{#2}\pst@tempg }
\def\pst@getscale#1#2{\edef\pst@tempg{#1}\ifx\pst@tempg\@none
    \def#2{}\else
    \pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil
    \ifdim\pst@tempg\p@=\z@
      \@pstrickserr{Bad scaling argument `#1'}\@ehpa
      \def#2{}\else
      \ifdim\pst@temph\p@=\z@
        \@pstrickserr{Bad scaling argument `#1'}\@ehpa
        \def#2{}\else
        \edef#2{\pst@tempg\space \pst@temph\space scale }\fi
    \fi
  \fi }
\def\pst@getint#1#2{\pst@cntg=#1\relax
  \edef#2{\the\pst@cntg\space}}
\begingroup
\catcode`\{=12
\catcode`\}=12
\catcode`\[=1
\catcode`\]=2
\gdef\pslbrace[{ ]
\gdef\psrbrace[} ]
\endgroup
\def\@newcolor#1#2{\expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}\expandafter\edef\csname\string\color@#1\endcsname{#2}\ignorespaces}
\def\pst@color#1{\def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}
\def\pst@endcolor{\pstVerb{\pst@currentcolor}}
\def\pst@currentcolor{0 setgray}
\def\altcolormode{\def\pst@color##1{\pstVerb{gsave ##1}\aftergroup\pst@endcolor}\def\pst@endcolor{\pstVerb{\pst@grestore}}}
\def\pst@grestore{currentpoint
  matrix currentmatrix
  currentfont
  grestore
  setfont
  setmatrix
  moveto
}
\def\pst@usecolor#1{\csname\string\color@#1\endcsname\space}
\def\newgray#1#2{\pst@checknum{#2}\pst@tempg
  \@newcolor{#1}{\pst@tempg setgray}}
\def\newrgbcolor#1#2{\pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}}
\def\newhsbcolor#1#2{\pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}}
\def\newcmykcolor#1#2{\pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}}
\newgray{black}{0}
\newgray{darkgray}{.25}
\newgray{gray}{.5}
\newgray{lightgray}{.75}
\newgray{white}{1}
\newrgbcolor{red}{1 0 0}
\newrgbcolor{green}{0 1 0}
\newrgbcolor{blue}{0 0 1}
\newrgbcolor{yellow}{1 1 0}
\newrgbcolor{cyan}{0 1 1}
\newrgbcolor{magenta}{1 0 1}
\def\psset#1{\@psset#1,\@nil\ignorespaces}
\def\@psset#1,{\@@psset#1==\@nil \@ifnextchar\@nil{\@gobble}{\@psset}}
\def\@@psset#1=#2=#3\@nil{\@ifundefined{psset@#1}{\@pstrickserr{Graphics parameter `#1' not defined.}\@ehpa}{\@nameuse{psset@#1}{#2}}}\def\psset@style#1{\@ifundefined{pscs@#1}{\@pstrickserr{Custom style `#1' undefined}\@ehpa}{\@nameuse{pscs@#1}}}
\def\newpsstyle#1#2{\@namedef{pscs@#1}{\def\pst@tempA{#2}\ifx\pst@tempA\@empty\else\psset{#2}\fi}}
\def\addto@psstyle#1#2{\pst@toks=\expandafter{#1#2}\edef#1{\the\pst@toks}}
\def\addtopsstyle#1#2{\def\pst@tempA{#2}\ifx\pst@tempA\@empty\else
    \@ifundefined{pscs@#1}{\newpsstyle{#1}{#2}}{\expandafter\addto@psstyle\csname pscs@#1\endcsname{\psset{#2}}}\fi}
\def\@none{none}
\def\pst@getcolor#1#2{\@ifundefined{\string\color@#1}{\@pstrickserr{Color `#1' not defined}\@eha}{\edef#2{#1}}}
\newdimen\psunit \psunit 1cm
\newdimen\psxunit \psxunit 1cm
\newdimen\psyunit \psyunit 1cm
\let\psrunit\psunit
\def\pstunit@off{\let\@psunit\ignorespaces\ignorespaces}
\def\pssetlength#1#2{\let\@psunit\psunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\psaddtolength#1#2{\let\@psunit\psunit
  \afterassignment\pstunit@off
  \advance#1 #2\@psunit }
\def\pssetxlength#1#2{\let\@psunit\psxunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\pssetylength#1#2{\let\@psunit\psyunit
  \afterassignment\pstunit@off
  #1 #2\@psunit }
\def\psset@unit#1{\pssetlength\psunit{#1}\psxunit=\psunit
  \psyunit=\psunit }
\def\psset@runit#1{\pssetlength\psrunit{#1}}
\def\psset@xunit#1{\pssetxlength\psxunit{#1}}
\def\psset@yunit#1{\pssetylength\psyunit{#1}}
\def\psset@PstDebug#1{\pst@getint{#1}{\Pst@Debug}}\psset{PstDebug=0}
\def\pst@getlength#1#2{\pssetlength\pst@dimg{#1}\edef#2{\pst@number\pst@dimg}}
\def\pst@@getlength#1#2{\pssetlength\pst@dimg{#1}\edef#2{\number\pst@dimg sp}}
\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor}
\def\pst@coor{0 0 }
\def\pst@getcoors#1#2{\def\pst@aftercoors{\addto@pscode{#1 \pst@coors }#2}\def\pst@coors{}\pst@@getcoors }
\def\pst@@getcoors(#1){\pst@@getcoor{#1}\edef\pst@coors{\pst@coor\pst@coors}\@ifnextchar({\pst@@getcoors}{\pst@aftercoors}}
\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle}
\def\pst@angle{0 }
\def\cartesian@coor#1,#2,#3\@nil{\pssetxlength\pst@dimg{#1}\pssetylength\pst@dimh{#2}\edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}
\def\NormalCoor{\def\pst@@getcoor##1{\pst@expandafter\cartesian@coor{##1},\relax,\@nil}\def\pst@@getangle##1{\pst@checknum{##1}\pst@angle \edef\pst@angle{\pst@angle \pst@angleunit}}\def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@cartesian}}
\NormalCoor
\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}}
\def\@degrees[#1]{\pst@checknum{#1}\pst@tempg
  \edef\pst@angleunit{360 \pst@tempg div mul }\ignorespaces}
\def\radians{\def\pst@angleunit{57.2956 mul }}
\def\pst@angleunit{}
\def\SpecialCoor{\def\pst@@getcoor##1{\begingroup \pst@activecoor \xdef\pst@tempg{##1}\endgroup \expandafter\special@coor\pst@tempg||\@nil }\def\pst@@getangle##1{\begingroup \pst@activecoor \xdef\pst@tempg{##1}\endgroup \expandafter\special@angle\pst@tempg\@empty)\@nil }\def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}}
\begingroup
\catcode`\|=13
\catcode`\;=13
\catcode`\!=13
\catcode`\*=13
\gdef\pst@activecoor{\def|{\string|}\def;{\string;}\def!{\string!}\def*{\string*}}
\endgroup
\def\special@coor#1|#2|#3\@nil{\ifx#3|\relax
    \mixed@coor{#1}{#2}\else
    \special@@coor#1;;\@nil
  \fi }
\def\special@@coor#1{\ifcat#1a\relax \def\next{\node@coor#1}\else
    \ifx#1[\relax \def\next{\Node@coor[}\else
      \ifx#1!\relax \def\next{\raw@coor}\else
        \ifx#1*\relax \def\next{\alg@coor}\else
          \def\next{\special@@@coor#1}\fi
      \fi
    \fi
  \fi
  \next }
\def\special@@@coor#1;#2;#3\@nil{\ifx#3;\relax
    \polar@coor{#1}{#2}\else
    \cartesian@coor#1,\relax,\@nil
  \fi }
\def\mixed@coor#1#2{\begingroup \special@@coor#1;;\@nil \let\pst@tempa\pst@coor \special@@coor#2;;\@nil \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }\endgroup \let\pst@coor\pst@tempg }
\def\polar@coor#1#2{\pssetlength\pst@dimb{#1}\pst@@getangle{#2}\edef\pst@coor{\pst@number\pst@dimb \pst@angle \tx@PtoC}}
\def\raw@coor#1;#2\@nil{\edef\pst@coor{#1 \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
\def\alg@coor#1 #2;#3\@nil{\edef\pst@coor{/x #1 def 
    /Func (#2) AlgParser cvx def    
    x Func 
    \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
\def\node@coor#1\@nil{\@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps
  \def\pst@coor{0 0 }}
\def\Node@coor{\node@coor}
\def\special@angle#1#2)#3\@nil{\ifx!#1\relax
\edef\pst@angle{#2 \pst@angleunit}\else
\ifx(#1\relax
\pst@@getcoor{#2}\edef\pst@angle{\pst@coor exch \tx@Atan}\else
\pst@checknum{#1#2}\pst@angle
\edef\pst@angle{\pst@angle \pst@angleunit}\fi
\fi}
\def\Cartesian{\def\cartesian@coor##1,##2,##3\@nil{\pssetxlength\pst@dimg{##1}\pssetylength\pst@dimh{##2}\edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}\@ifnextchar({\Cartesian@}{}}
\def\Cartesian@(#1,#2){\pssetxlength\psxunit{#1}\pssetylength\psyunit{#2}\ignorespaces }
\def\Polar{\def\psput@cartesian{\psput@special}\def\cartesian@coor##1,##2,##3\@nil{\polar@coor{##1}{##2}}}\def\psset@origin#1{\pst@@getcoor{#1}\edef\psk@origin{\pst@coor T }}
\def\psk@origin{}
\newif\ifswapaxes
\def\psset@swapaxes#1{\@nameuse{@pst#1}\if@pst\def\psk@swapaxes{-90 rotate -1 1 scale }\else\def\psk@swapaxes{}\fi }
\psset@swapaxes{false}
\newif\ifshowpoints
\def\psset@showpoints#1{\@nameuse{showpoints#1}}
\psset@showpoints{false}
\let\pst@setrepeatarrowsflag\relax
\def\psset@border#1{\pst@getlength{#1}\psk@border
\pst@setrepeatarrowsflag}
\psset@border{0pt}
\def\psset@bordercolor#1{\pst@getcolor{#1}\psbordercolor}
\psset@bordercolor{white}
\newif\ifpsdoubleline
\def\psset@doubleline#1{\@nameuse{psdoubleline#1}\pst@setrepeatarrowsflag}
\psset@doubleline{false}
\def\psset@doublesep#1{\def\psdoublesep{#1}}
\psset@doublesep{1.25\pslinewidth}
\def\psset@doublecolor#1{\pst@getcolor{#1}\psdoublecolor}
\psset@doublecolor{white}
\newif\ifpsshadow
\def\psset@shadow#1{\@nameuse{psshadow#1}\pst@setrepeatarrowsflag}
\psset@shadow{false}
\def\psset@shadowsize#1{\pst@getlength{#1}\psk@shadowsize}
\psset@shadowsize{3pt}
\def\psset@shadowangle#1{\pst@getangle{#1}\psk@shadowangle}
\psset@shadowangle{-45}
\def\psset@shadowcolor#1{\pst@getcolor{#1}\psshadowcolor}
\psset@shadowcolor{darkgray}
\def\pst@repeatarrowsflag{\z@}
\def\pst@setrepeatarrowsflag{\edef\pst@repeatarrowsflag{\ifdim\psk@border\p@>\z@ 1\else\ifpsdoubleline 1\else
      \ifpsshadow 1\else \z@\fi\fi\fi}}
\def\psls@none{}
\newdimen\pslinewidth
\def\psset@linewidth#1{\pssetlength\pslinewidth{#1}}
\psset@linewidth{.8pt}
\def\psset@linecolor#1{\pst@getcolor{#1}\pslinecolor}
\psset@linecolor{black}
\def\psls@solid{\psk@linecap\space setlinecap stroke }
\def\psset@linecap#1{\pst@getint{#1}\psk@linecap}\psset@linecap{0}\def\psset@linejoin#1{\pst@getint{#1}\psk@linejoin}\def\tx@setlinejoin{\psk@linejoin\space setlinejoin }\psset@linejoin{0}\def\pst@missing{\z@
  \@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa}
\def\pst@empty{\z@}
\def\psset@dash#1{\pst@expandafter\psset@@dash{#1} {\pst@empty} {\pst@empty} {\pst@missing} {\pst@missing} {}\@nil
  \edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh 
                 \pst@number\pst@dimc \pst@number\pst@dimd}}
\def\psset@@dash#1 #2 #3 #4 #5\@nil{\pssetlength\pst@dimg{#1}\pssetlength\pst@dimh{#2}\pssetlength\pst@dimc{#3}\pssetlength\pst@dimd{#4}}
\psset@dash{5pt 3pt 0pt 0pt}\newif\ifpsdashadjust
\def\psset@dashadjust#1{\@nameuse{psdashadjust#1}}
\psset@dashadjust{true}
\def\tx@DashLine{DashLine }
\def\psls@dashed{\psk@linecap\space setlinecap
\ifpsdashadjust
\psk@dash \@ifundefined{pst@linetype}{2}{\pst@linetype}\space \tx@DashLine
  \else
    [ \psk@dash ] 0 setdash stroke
  \fi}
\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep}
\psset@dotsep{3pt}
\def\tx@DotLine{DotLine }
\def\psls@dotted{\ifpsdashadjust
    \psk@dotsep \pst@linetype\space \tx@DotLine
  \else
    [ 0 \psk@dotsep CLW add ] 0 setdash 1 setlinecap stroke
  \fi }
\def\psset@linestyle#1{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\edef\pslinestyle{#1}}}
\psset@linestyle{solid}
\def\psset@linecap#1{\def\psk@linecap{0}\ifnum#1>-1
    \ifnum#1<3
      \pst@getint{#1}\psk@linecap \fi\fi }
\psset{linecap=0}
\def\psset@fillcolor#1{\pst@getcolor{#1}\psfillcolor}
\psset@fillcolor{white}
\def\psset@strokeopacity#1{\pst@checknum{#1}\psk@strokeopacityalpha }\psset@strokeopacity{1}
\def\psset@opacity#1{\pst@checknum{#1}\psk@opacityalpha }\psset@opacity{1}
\def\psset@shapealpha#1{\pst@checknum{#1}\psk@shapealpha }
\psset@shapealpha{0.6}
\def\psset@blendmode#1{\pst@getint{#1}\psk@blendmode }\psset@blendmode{0}
\def\psfs@none{}
\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor \psk@opacityalpha .setopacityalpha fill }}
\def\psfs@eofill{\pst@fill{\pst@usecolor\psfillcolor \psk@opacityalpha .setopacityalpha eofill}}
\def\psfs@shape{\pst@fill{
    \pst@usecolor\psfillcolor 
    \ifcase\psk@blendmode
      /Normal \or
      /Compatible \or
      /Screen \or
      /Multiply \fi
    .setblendmode \psk@shapealpha .setshapealpha fill }}
\def\psset@hatchwidth#1{\pst@getlength{#1}\psk@hatchwidth}
\psset@hatchwidth{.8pt}
\def\psset@hatchsep#1{\pst@getlength{#1}\psk@hatchsep}
\psset@hatchsep{4pt}
\def\psset@hatchcolor#1{\pst@getcolor{#1}\pshatchcolor}
\psset@hatchcolor{black}
\def\psset@hatchangle#1{\pst@getangle{#1}\psk@hatchangle}
\psset@hatchangle{45}
\def\psset@hatchsepinc#1{\pst@getlength{#1}\psk@hatchsepinc}
\def\psset@hatchwidthinc#1{\pst@getlength{#1}\psk@hatchwidthinc}
\psset@hatchwidthinc{0pt}
\psset@hatchsepinc{0pt}
\def\pst@linefill{\psk@hatchangle rotate
  \psk@hatchwidth SLW
  \pst@usecolor\pshatchcolor
  \psk@hatchsep 
  \psk@hatchsepinc
  \psk@hatchwidthinc
  \tx@LineFill }
\def\psfs@vlines{\pst@fill\pst@linefill}
\@namedef{psfs@vlines*}{\psfs@solid \psfs@vlines}
\def\psfs@hlines{\pst@fill{90 rotate \pst@linefill}}
\@namedef{psfs@hlines*}{\psfs@solid \psfs@hlines}
\def\psfs@crosshatch{\psfs@vlines \psfs@hlines}
\@namedef{psfs@crosshatch*}{\psfs@solid \psfs@vlines \psfs@hlines}
\def\tx@LineFill{LineFill }
\def\psset@fillstyle#1{\edef\pst@tempg{#1}\def\pst@temph{none}\ifx\pst@tempg\pst@temph
     \let\psk@fillstyle\relax
  \else
    \@ifundefined{psfs@#1}{\@pstrickserr{Undefined fill style: `#1'}\@eha}{\edef\psk@fillstyle{\expandafter\noexpand\csname psfs@#1\endcsname}}\fi }
\def\psset@addfillstyle#1{\@ifundefined{psfs@#1}{\@pstrickserr{Undefined fill style: `#1'}\@eha}{\edef\psk@fillstyle{\expandafter\noexpand\psk@fillstyle
      \expandafter\noexpand\csname psfs@#1\endcsname}}}
\psset@fillstyle{none}
\def\psset@arrows#1{\begingroup
    \pst@activearrows
    \xdef\pst@tempg{#1}\endgroup
  \expandafter\psset@@arrows\pst@tempg\@empty-\@empty\@nil
  \if@pst\else
    \@pstrickserr{Bad arrows specification: #1}\@ehpa
  \fi }
\def\psset@@arrows#1-#2\@empty#3\@nil{\@psttrue
  \def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}\expandafter\next\pst@arrowtable,#1-#1,\@nil
  \@ifundefined{psas@\pst@tempg}{\@pstfalse\def\psk@arrowA{}}{\let\psk@arrowA\pst@tempg}\@ifundefined{psas@#2}{\@pstfalse\def\psk@arrowB{}}{\def\psk@arrowB{#2}}}
\def\psk@arrowA{}
\def\psk@arrowB{}
\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,<D-D>,<D<D-D>D>} \begingroup
  \catcode`\<=13
  \catcode`\>=13
  \catcode`\|=13
  \gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
\endgroup
\def\tx@BeginArrow{BeginArrow }
\def\tx@EndArrow{EndArrow }
\def\psset@arrowscale#1{\pst@@arrowscale@i#1 \@nil \pst@getscale{\pst@arrowscale}\psk@arrowscale}\def\pst@@arrowscale@i#1 #2\@nil{\edef\pst@arrowscale{#1}}\psset@arrowscale{1}
\def\psset@arrowsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
  \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}}
\psset@arrowsize{1.5pt 2}
\def\psset@arrowlength#1{\pst@checknum{#1}\psk@arrowlength}
\psset@arrowlength{1.4}
\def\psset@arrowinset#1{\pst@checknum{#1}\psk@arrowinset}\psset@arrowinset{.4}
\def\tx@Arrow{ \psk@strokeopacityalpha .setopacityalpha Arrow }\def\tx@ArrowD{ \psk@strokeopacityalpha .setopacityalpha ArrowD }\@namedef{psas@<|}{ 
    \psk@tbarsize\space \tx@Tbar
    0 CLW 2 div T
    newpath
    true 
    \psk@arrowinset 
    \psk@arrowlength 
    \psk@arrowsize 
    \tx@Arrow 
}
\def\tx@BracketOut{BracketOut }
\@namedef{psas@[}{/BracketOut {CLW mul add dup CLW sub 2 div
/x ED mul neg
  /y ED
  /z CLW 2 div def
  x neg y moveto
  x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def
  \psk@bracketlength\space \psk@tbarsize\space \tx@BracketOut
}
\def\tx@RoundBracketOut{ \psk@strokeopacityalpha .setopacityalpha RoundBracketOut }\@namedef{psas@(}{/RoundBracketOut {CLW mul add dup 2 div
/x ED mul neg
    /y ED
    /mtrx CM def
    0 CLW
    2 div T x y mul 0 ne { x y scale } if
    1 1 moveto
    .85 .5 .35 0 0 0 curveto
    -.35 0 -.85 .5 -1 1 curveto
    mtrx setmatrix stroke 0 CLW moveto } def
  \psk@rbracketlength\space \psk@tbarsize\space \tx@RoundBracketOut
}
\@namedef{psas@>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow }
\@namedef{psas@>>}{false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  0 h T gsave newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  CP grestore CP newpath moveto 2 copy L stroke moveto
}
\@namedef{psas@<}{true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
\@namedef{psas@<<}{
  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  CP newpath moveto 0 a neg L stroke 0 h neg T
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\@namedef{psas@D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD }\@namedef{psas@D>D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  0 h Inset sub T gsave newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  CP grestore moveto 
}
\@namedef{psas@<D}{ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
}
\@namedef{psas@<D<D}{ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
  CP newpath moveto 0 a neg L stroke 0 h neg T
  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
}
\def\psset@tbarsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
  \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}}
\psset@tbarsize{2pt 5}
\def\tx@Tbar{Tbar }
\@namedef{psas@|}{\psk@tbarsize \tx@Tbar}
\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar}
\@namedef{psas@>|}{\psk@tbarsize \tx@Tbar
  0 CLW 2 div T
  newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\@namedef{psas@>|*}{0 CLW -2 div T
  \psk@tbarsize \tx@Tbar
  0 CLW 2 div T
  newpath
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
}
\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|}
\def\psset@bracketlength#1{\pst@checknum{#1}\psk@bracketlength}
\psset@bracketlength{.15}
\def\tx@Bracket{Bracket }
\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
\def\psset@rbracketlength#1{\pst@checknum{#1}\psk@rbracketlength}
\psset@rbracketlength{.15}
\def\tx@RoundBracket{RoundBracket }
\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket}
\def\psas@c{1 \psas@@c}
\def\psas@cc{0 CLW 2 div T 1 \psas@@c}
\def\psas@C{2 \psas@@c}
\def\psas@@c{setlinecap
  0 0 moveto
0 0.1 L stroke
  0 0 moveto
}
\def\psas@{}
\psset@arrows{-}
\def\tx@SD{ \psk@opacityalpha .setopacityalpha SD }
\def\tx@EndDot{EndDot }
\def\psas@oo{{\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot}
\def\psas@o{{\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot}
\@namedef{psas@**}{{false} true \psk@dotsize \tx@EndDot}
\@namedef{psas@*}{{false} false \psk@dotsize \tx@EndDot}
\def\pst@par{}
\def\addto@par#1{\ifx\pst@par\@empty
    \def\pst@par{#1}\else
    \expandafter\def\expandafter\pst@par\expandafter{\pst@par,#1}\fi }
\def\addbefore@par#1{\ifx\pst@par\@empty
    \def\pst@par{#1}\else
    \toks@{#1}\pst@toks\expandafter{\pst@par}\edef\pst@par{\the\toks@,\the\pst@toks}\fi }
\def\use@par{\ifx\pst@par\@empty\else
    \expandafter\@psset\pst@par,\@nil
    \def\pst@par{}\fi }
\def\pst@object#1{\pst@ifstar{\@ifnextchar[{\pst@@object{#1}}{\def\pst@par{}\@nameuse{#1@i}}}}
\def\pst@@object#1[#2]{\def\pst@par{#2}\@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}}
\def\newpsobject#1#2#3{\@ifundefined{#2@i}{\@pstrickserr{Graphics object `#2' not defined}\@eha}{\@namedef{#1}{\pst@object{#1}}\@namedef{#1@i}{\addbefore@par{#3}\@nameuse{#2@i}}}\ignorespaces}
\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
\def\pst@@getarrows#1#2{\def\pst@tempa{#2}\ifx\pst@tempa\@empty\addto@par{arrows=-}\else\addto@par{arrows=#2}\fi#1}
\def\begin@ClosedObj{\leavevmode
  \pst@killglue
  \begingroup
    \use@par
    \solid@star
    \ifpsdoubleline \pst@setdoublesep \fi
    \init@pscode }
\def\end@ClosedObj{\ifpsshadow \pst@closedshadow \fi
  \ifdim\psk@border\p@>\z@ \pst@addborder \fi
  \psk@fillstyle
  \pst@stroke
  \ifpsdoubleline \pst@doublestroke \fi
  \ifshowpoints
\pst@OpenShowPoints
\fi
  \use@pscode
  \endgroup
  \ignorespaces }
\def\begin@OpenObj{\begin@ClosedObj
  \let\pst@linetype\pst@arrowtype
  \pst@addarrowdef }
\def\begin@AltOpenObj{\begin@ClosedObj
  \def\pst@repeatarrowsflag{\z@}\def\pst@linetype{0}}
\def\end@OpenObj{\ifpsshadow \pst@openshadow \fi
  \ifdim\psk@border\p@>\z@ \pst@addborder \fi
  \psk@fillstyle
  \pst@stroke
  \ifpsdoubleline \pst@doublestroke \fi
  \ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi
  \ifshowpoints \pst@OpenShowPoints \fi
  \use@pscode
  \endgroup
  \ignorespaces}
\def\begin@SpecialObj{\leavevmode
  \pst@killglue
  \begingroup
  \use@par
  \init@pscode}
\def\end@SpecialObj{\use@pscode
  \endgroup
  \ignorespaces}
\def\pst@code{}\def\init@pscode{\addto@pscode{\pst@number\pslinewidth SLW
    \pst@usecolor\pslinecolor}}
\def\addto@pscode#1{\xdef\pst@code{\pst@code#1\space}}
\def\use@pscode{\pstverb{
    \pst@dict
    \tx@STP
    \pst@newpath
    \psk@origin
    \psk@swapaxes
    \pst@code
    end
  }\gdef\pst@code{}}
\def\pst@newpath{newpath }
\def\pst@@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@@killglue\fi}
\def\KillGlue{\let\pst@killglue\pst@@killglue}
\def\DontKillGlue{\let\pst@killglue\relax}
\DontKillGlue
\def\solid@star{\if@star
    \pslinewidth=\z@
    \psdoublelinefalse
    \def\pslinestyle{none}\def\psk@fillstyle{\psfs@solid}\let\psfillcolor\pslinecolor
  \fi}
\def\pst@setdoublesep{\pst@getlength\psdoublesep\psdoublesep
\pslinewidth=2\pslinewidth
\advance\pslinewidth\psdoublesep\p@
\let\pst@setdoublesep\relax}
\def\tx@Shadow{Shadow }
\def\pst@closedshadow{\addto@pscode{gsave
    \psk@shadowsize \psk@shadowangle \tx@PtoC
    \tx@Shadow
    \pst@usecolor\psshadowcolor
    gsave fill grestore
    stroke
    grestore
    gsave
    \pst@usecolor\psfillcolor
    gsave fill grestore
    stroke
    grestore}}
\def\pst@openshadow{\addto@pscode{gsave
    \psk@shadowsize \psk@shadowangle \tx@PtoC
    \tx@Shadow
    \pst@usecolor\psshadowcolor
    \ifx\psk@fillstyle\relax\else
      gsave fill grestore
    \fi
    stroke}\pst@repeatarrows \addto@pscode{grestore}\ifx\psk@fillstyle\relax\else
    \addto@pscode{gsave
      \pst@usecolor\psfillcolor
      gsave fill grestore
      stroke
      grestore}\fi}
\def\pst@addborder{\addto@pscode{gsave
    \psk@border 2 mul
    CLW add SLW
    \pst@usecolor\psbordercolor
    stroke
    grestore}}
\def\pst@stroke{\ifx\pslinestyle\@none\else
    \addto@pscode{gsave
      \pst@number\pslinewidth SLW
      \pst@usecolor\pslinecolor
      \psk@strokeopacityalpha .setopacityalpha \@nameuse{psls@\pslinestyle}
      grestore}\fi}
\def\pst@fill#1{\addto@pscode{gsave #1 grestore}}\def\pst@doublestroke{\addto@pscode{gsave
      \psdoublesep SLW
      \pst@usecolor\psdoublecolor
      stroke
      grestore
}}
\def\pst@arrowtype{\ifx\psk@arrowB\@empty 0 \else -2 \fi
  \ifx\psk@arrowA\@empty 0 \else -1 \fi
  add }
\def\pst@addarrowdef{\addto@pscode{/ArrowA {
      \ifx\psk@arrowA\@empty
        \pst@oplineto
      \else
        \pst@arrowdef{A}
        moveto
      \fi
    } def
    /ArrowB { \ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi } def
}}
\def\pst@arrowdef#1{\ifnum\pst@repeatarrowsflag>\z@
    /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
  \fi
  \tx@BeginArrow
  \psk@arrowscale
  \@nameuse{psas@\@nameuse{psk@arrow#1}}
  \tx@EndArrow
}
\def\pst@repeatarrows{\addto@pscode{gsave
    \ifx\psk@arrowA\@empty\else ArrowAc ArrowA pop pop \fi
    \ifx\psk@arrowB\@empty\else ArrowBc ArrowB pop pop pop pop \fi
    grestore
}}
\def\pst@OpenShowPoints{\addto@pscode{gsave
    \psk@dotsize
    \@nameuse{psds@\psk@dotstyle}
    newpath
    Points aload length 2 div 2 sub cvi /N ED
    N 0 ge
      { \ifx\psk@arrowA\@empty Dot \else pop pop \fi 
        N { Dot } repeat 
	\ifx\psk@arrowB\@empty Dot \else pop pop \fi }
      { N 2 mul { pop } repeat } ifelse
    grestore
}}
\def\pscustom{\pst@object{pscustom}}
\long\def\pscustom@i#1{\begin@SpecialObj
  \solid@star
  \let\pst@ifcustom\iftrue
  \let\begin@ClosedObj\begin@CustomObj
  \let\end@ClosedObj\endgroup
  \def\begin@OpenObj{\begin@CustomObj\pst@addarrowdef}\let\end@OpenObj\endgroup
  \let\begin@AltOpenObj\begin@CustomObj
  \def\begin@SpecialObj{\begingroup
    \pst@misplaced{special graphics object}\def\addto@pscode####1{}
    \let\end@SpecialObj\endgroup}\def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}\def\psclip##1{\pst@misplaced\psclip}\def\pst@repeatarrowsflag{\z@}\let\pst@setrepeatarrowsflag\relax
    \showpointsfalse
    \let\showpointstrue\relax
    \def\pst@linetype{\pslinetype}\let\psset@liftpen\psset@@liftpen
    \psset@liftpen{\z@}\def\pst@cp{/currentpoint load stopped pop }\def\pst@oplineto{/lineto load stopped { moveto } if }\def\pst@optcp##1##2{\ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}\let\caddto@pscode\addto@pscode
    \def\cuse@par##1{{\use@par##1}}\the\pst@customdefs
    \setbox\pst@hbox=\hbox{#1}\psk@fillstyle
    \pst@stroke
  \end@SpecialObj}
\def\begin@CustomObj{\begingroup
  \use@par
  \addto@pscode{\pst@number\pslinewidth SLW
    \pst@usecolor\pslinecolor
  }}
\def\pst@oplineto{moveto }
\def\pst@cp{}
\def\pst@optcp#1#2{}
\def\psset@liftpen#1{}
\def\psset@@liftpen#1{\ifcase#1\relax
    \def\psk@liftpen{\z@}\def\pst@cp{/currentpoint load stopped pop }\def\pst@oplineto{/lineto load stopped { moveto } if }\or
    \def\psk@liftpen{1}\def\pst@cp{}\def\pst@oplineto{/lineto load stopped { moveto } if }\or
    \def\psk@liftpen{2}\def\pst@cp{}\def\pst@oplineto{moveto }\fi }
\psset@liftpen{0}
\def\psk@liftpen{-1}
\def\psset@linetype#1{\pst@getint{#1}\pslinetype
\ifnum\pst@cntg<-3
\@pstrickserr{linetype must be greater than -3}\@ehpa
\def\pslinetype{2}\fi }
\psset@linetype{2}\def\caddto@pscode#1{\@pstrickserr{Command can only be used in \string\pscustom}\@ehpa }
\let\cuse@par\caddto@pscode
\def\tx@MSave{/msavematrx
         [ tx@Dict /msavematrx known { msavematrx aload pop } if
             CM ]
     def
msavematrx
}
\def\tx@MRestore{tx@Dict /msavematrx known { length 0 gt } { false } ifelse
         { msavematrx aload pop setmatrix } if
}
\newtoks\pst@customdefs
\pst@customdefs{\def\newpath{\addto@pscode{newpath}}\def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}\def\closepath{\addto@pscode{closepath}}\def\gsave{\begingroup\addto@pscode{gsave}}\def\grestore{\endgroup\addto@pscode{grestore}}\def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor translate}}\def\rotate#1{\pst@@getangle{#1}\addto@pscode{\pst@angle rotate}}\def\scale#1{\pst@getscale{#1}\pst@tempg\addto@pscode{\pst@tempg}}\def\msave{\addto@pscode{\tx@MSave}}\def\mrestore{\addto@pscode{\tx@MRestore}}\def\swapaxes{\addto@pscode{-90 rotate -1 1 scale}}\def\stroke{\pst@object{stroke}}\def\fill{\pst@object{fill}}\def\openshadow{\pst@object{openshadow}}\def\closedshadow{\pst@object{closedshadow}}\def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor \tx@Shadow}}\def\lineto{\pst@onecoor{lineto}}\def\rlineto{\pst@onecoor{rlineto}}\def\curveto{\pst@threecoor{curveto}}\def\rcurveto{\pst@threecoor{rcurveto}}\def\code#1{\addto@pscode{#1}}\def\coor(#1){\pst@@getcoor{#1}\addto@pscode\pst@coor\@ifnextchar({\coor}{}}\def\rcoor{\pst@getcoors{}{}}\def\dim#1{\pssetlength\pst@dimg{#1}\addto@pscode{\pst@number\pst@dimg}}\def\setcolor#1{\@ifundefined{\string\color@#1}{}{\addto@pscode{\pst@usecolor{#1}}}}\def\arrows#1{{\psset@arrows{#1}\pst@addarrowdef}}\let\file\pst@rawfile
} \def\closedshadow@i{\cuse@par\pst@closedshadow}
\def\openshadow@i{\cuse@par\pst@openshadow}
\def\stroke@i{\cuse@par\pst@stroke}\def\fill@i{\cuse@par\psk@fillstyle}\def\pst@onecoor#1(#2){\pst@@getcoor{#2}\addto@pscode{\pst@coor #1}}
\def\pst@threecoor#1(#2)#3(#4)#5(#6){\begingroup
    \pst@getcoor{#2}\pst@tempa
    \pst@getcoor{#4}\pst@tempb
\pst@getcoor{#6}\pst@tempc
\addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}\endgroup}
\def\pst@rawfile#1{\begingroup
  \def\do##1{\catcode`##1=12\relax}"
  \dospecials
  \catcode`\%=14
  \pst@@rawfile{#1}\endgroup}
\def\pst@@rawfile#1{\immediate\openin1 #1
  \ifeof1
    \@pstrickserr{File `#1' not found}\@ehpa
  \else
    \immediate\read1 to \pst@tempg
    \loop
      \ifeof1 \@pstfalse\else\@psttrue\fi
      \if@pst
      \addto@pscode\pst@tempg
      \immediate\read1 to \pst@tempg
    \repeat
  \fi
  \immediate\closein1\relax}
\def\tx@NArray{NArray }
\def\tx@NArray{NArray }
\def\tx@Line{Line }
\def\tx@Arcto{Arcto }
\def\tx@CheckClosed{CheckClosed }
\def\tx@Polygon{Polygon }
\def\psset@gangle#1{\pst@getangle{#1}\psk@gangle}
\psset@gangle{0}
\def\tx@Diamond{Diamond }
\def\psdiamond{\pst@object{psdiamond}}
\def\psdiamond@i(#1){\@ifnextchar({\psdiamond@ii(#1)}{\psdiamond@ii(0,0)(#1)}}
\def\psdiamond@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa
  \pst@getcoor{#2}\pst@tempb
  \addto@pscode{\psline@iii
    pop
    \psk@dimen
    \pst@tempb
    \psk@gangle
    \pst@tempa
    \tx@Diamond
  }\def\pst@linetype{4}\end@ClosedObj}
\def\tx@Triangle{Triangle }
\def\pstriangle{\pst@object{pstriangle}}
\def\pstriangle@i(#1){\@ifnextchar({\pstriangle@ii(#1)}{\pstriangle@ii(0,0)(#1)}}
\def\pstriangle@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa \pst@getcoor{#2}\pst@tempb \addto@pscode{\psline@iii
    pop			    \psk@dimen		    \pst@tempb
    \psk@gangle		    \pst@tempa
    \tx@Triangle
  }\def\pst@linetype{2}\end@ClosedObj}
\def\tx@CCA{CCA }
\def\tx@CCA{CCA }
\def\tx@CC{CC }
\def\tx@IC{IC }
\def\tx@BOC{BOC }
\def\tx@NC{NC }
\def\tx@EOC{EOC }
\def\tx@BAC{BAC }
\def\tx@NAC{NAC }
\def\tx@EAC{EAC }
\def\tx@OpenCurve{OpenCurve }
\def\tx@AltCurve{AltCurve }
\def\tx@ClosedCurve{ClosedCurve }
\def\psset@curvature#1{\edef\pst@tempg{#1 }\expandafter\psset@@curvature\pst@tempg * * * \@nil}
\def\psset@@curvature#1 #2 #3 #4\@nil{\pst@checknum{#1}\pst@tempg
\pst@checknum{#2}\pst@temph
\pst@checknum{#3}\pst@tempi
\edef\psk@curvature{\pst@tempg \pst@temph \pst@tempi}}
\psset@curvature{1 .1 0}
\def\pscurve{\pst@object{pscurve}}
\def\pscurve@i{\pst@getarrows{\begin@OpenObj
      \pst@getcoors[\pscurve@ii }}
\def\pscurve@ii{\addto@pscode{
    \pst@cp
    \psk@curvature\space /c ED /b ED /a ED
    \ifshowpoints true \else false \fi
    \tx@OpenCurve
  }\end@OpenObj }
\def\psecurve{\pst@object{psecurve}}
\def\psecurve@i{\pst@getarrows{\begin@OpenObj
\pst@getcoors[\psecurve@ii}}
\def\psecurve@ii{\addto@pscode{\psk@curvature\space /c ED /b ED /a ED
\ifshowpoints true \else false \fi
\tx@AltCurve}\end@OpenObj}
\def\psccurve{\pst@object{psccurve}}
\def\psccurve@i{\begin@ClosedObj
\pst@getcoors[\psccurve@ii}
\def\psccurve@ii{\addto@pscode{\psk@curvature\space /c ED /b ED /a ED
\ifshowpoints true \else false \fi
\tx@ClosedCurve}\def\pst@linetype{1}\end@ClosedObj}
\def\psset@dotsize#1{\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
\edef\psk@@dotsize{\pst@number\pst@dimg}\let\psk@@@dotsize\pst@tempg
\edef\psk@dotsize{/DS \psk@@dotsize \psk@@@dotsize CLW mul add 2 div def }}
\psset@dotsize{2pt 2}
\def\psset@dotscale#1{\pst@getscale{#1}\psk@dotscale
\ifx\psk@dotscale\@empty
\def\psk@xdotscale{1 }\def\psk@ydotscale{1 }\else
\let\psk@xdotscale\pst@tempg
\let\psk@ydotscale\pst@temph
\fi}
\def\pst@Getangle#1#2{\pst@getangle{#1}\pst@tempg
\def\pst@temph{0. }\ifx\pst@tempg\pst@temph
\def#2{}\else
\edef#2{\pst@tempg\space rotate }\fi}
\def\psset@dotangle#1{\pst@getangle{#1}\psk@@dotangle
\ifdim\psk@@dotangle\p@=\z@
\let\psk@dotangle\@empty
\else
\edef\psk@dotangle{\psk@@dotangle rotate }\fi}
\psset@dotangle{0}
\def\pst@getdotsize{\pst@dimg=\psk@@@dotsize\pslinewidth
\advance\pst@dimg\psk@@dotsize\p@
\pst@dimh=\psk@ydotscale\pst@dimg
\pst@dimg=\psk@xdotscale\pst@dimg
\divide\pst@dimh 2
\divide\pst@dimg 2\relax}
\psset@dotscale{1}
\def\psdot{\pst@object{psdot}}
\def\psdot@i{\@ifnextchar({\psdot@ii}{\psdot@ii(\z@,\z@)}}
\def\psdot@ii(#1){\begin@SpecialObj \solid@star \pst@@getcoor{#1}\addto@pscode{
    \psk@dotsize
    \@nameuse{psds@\psk@dotstyle}\pst@coor Dot}\end@SpecialObj}
\def\psdots{\pst@object{psdots}}
\def\psdots@i{\begin@SpecialObj \pst@getcoors[\psdots@ii}
\def\psdots@ii{\addto@pscode{false \tx@NArray \psdots@iii}\end@SpecialObj}
\def\psdots@iii{\psk@dotsize
  \@nameuse{psds@\psk@dotstyle}
  newpath
  n { transform floor .5 add exch floor .5 add exch itransform Dot } repeat}
\def\tx@SQ{SQ }
\def\tx@ST{ST }
\def\tx@SP{SP }
\def\pst@gdot#1{/Dot { gsave T \psk@dotangle \psk@dotscale #1 grestore } def }
\@namedef{psds@*}{\pst@gdot{0 0 DS \tx@SD}}
\@namedef{psds@o}{/r2 DS CLW sub def
  \pst@gdot{0 0 DS \tx@SD \pst@usecolor\psfillcolor 0 0 r2 \tx@SD}}
\@namedef{psds@square*}{/r1 DS .886 mul def
  \pst@gdot{r1 \tx@SQ}}
\@namedef{psds@square}{/r1 DS .886 mul def /r2 r1 CLW sub def
  \pst@gdot{r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ}}
\@namedef{psds@triangle*}{/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
  \pst@gdot{x1 y1 \tx@ST}}
\@namedef{psds@triangle}{/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
  /y2 y1 CLW add def /x2 y2 1.732 mul neg def
  \pst@gdot{x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST}}
\@namedef{psds@pentagon*}{/r1 DS 1.149 mul def
  \pst@gdot{r1 \tx@SP}}
\@namedef{psds@pentagon}{DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED
  \pst@gdot{r1 \tx@SP \pst@usecolor\psfillcolor r2 \tx@SP}}
\@namedef{psds@+}{/DS DS 1.253 mul def
  \pst@gdot{DS 0 moveto DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke}}
\@namedef{psds@|}{\psk@tbarsize CLW mul add 2 div /DS ED
  \pst@gdot{0 DS moveto 0 DS neg L stroke}}
\def\psset@dotstyle#1{\@ifundefined{psds@#1}{\@pstrickserr{Dot style `#1' not defined}\@eha}{\edef\psk@dotstyle{#1}}}
\psset@dotstyle{*}
\def\tx@FontDot{FontDot }
\def\newpsfontdot#1[#2]#3#4{\@namedef{psds@#1}{/#3 \psk@@dotangle [#2] \tx@FontDot
/Dot { moveto gsave \psk@dotscale #4 show grestore } bind def 
}}
\def\newpsfontdotH#1[#2]#3#4#5{\@namedef{psds@#1}{/#3 \psk@@dotangle [#2] \tx@FontDot
    /Dot {
      moveto
      \iftrue
gsave \psk@dotscale \pst@usecolor\psfillcolor #5 show grestore
      \fi
      gsave \psk@dotscale #4 show grestore
} bind def 
}}
\pstheader{pst-dots.pro}
\newpsfontdot{*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
\newpsfontdotH{o}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
\newpsfontdotH{Bo}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
\newpsfontdotH{triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
\newpsfontdotH{Btriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
\newpsfontdot{triangle*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
\newpsfontdotH{square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
\newpsfontdotH{Bsquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
\newpsfontdot{square*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
\newpsfontdotH{pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
\newpsfontdotH{Bpentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
\newpsfontdot{pentagon*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
\newpsfontdotH{diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
\newpsfontdotH{Bdiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
\newpsfontdot{diamond*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
\newpsfontdot{oplus}[1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]{Symbol}{<C5>}
\newpsfontdot{otimes}[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{Symbol}{<C4>}
\newpsfontdot{x}[1.8 0.0 0.0 1.8 -0.495 -0.4788]{Symbol}{<B4>}
\newpsfontdot{+}[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{Times-Roman}{<2B>}
\newpsfontdot{asterisk}[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{Times-Roman}{<2A>}
\newpsfontdot{B+}[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{Times-Bold}{<2B>}
\newpsfontdot{Basterisk}[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{Times-Bold}{<2A>}
\newpsfontdot{|}[1.98413 0.0 0.0 1.38 -0.258929 -0.5]{Helvetica}{(|)}
\newpsfontdot{B|}[1.98413 0.0 0.0 1.38 -0.277778 -0.5]{Helvetica-Bold}{(|)}

\iffalse
\newpsfontdot{*}[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{Symbol}{<B7>}
\newpsfontdot{o}[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{Symbol}{<B0>}
\newpsfontdot{Bo}[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{Times-Bold}{<CA>}
\fi
\newpsfontdot{Asterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(k)}
\newpsfontdot{BoldAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(K)}
\newpsfontdotH{SolidAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(J)}{(b)}
\newpsfontdotH{Hexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(h)}{(G)}
\newpsfontdotH{BoldHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(H)}{(G)}
\newpsfontdot{SolidHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(G)}
\newpsfontdot{Bullet}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
\newpsfontdotH{Circle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
\newpsfontdotH{BoldCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
\newpsfontdotH{Triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
\newpsfontdotH{BoldTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
\newpsfontdot{SolidTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
\newpsfontdotH{Square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
\newpsfontdotH{BoldSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
\newpsfontdot{SolidSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
\newpsfontdotH{Pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
\newpsfontdotH{BoldPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
\newpsfontdot{SolidPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
\newpsfontdot{Add}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(a)}
\newpsfontdot{BoldAdd}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(A)}
\newpsfontdot{Mul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(x)}
\newpsfontdot{BoldMul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(X)}
\newpsfontdotH{Oplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(m)}{(b)}
\newpsfontdotH{BoldOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(M)}{(b)}
\newpsfontdotH{SolidOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(e)}{(b)}
\newpsfontdotH{Otimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(n)}{(b)}
\newpsfontdotH{BoldOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(N)}{(b)}
\newpsfontdotH{SolidOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(E)}{(b)}
\newpsfontdot{Bar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(i)}
\newpsfontdot{BoldBar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(I)}
\newpsfontdotH{Diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
\newpsfontdotH{BoldDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
\newpsfontdot{SolidDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
\newdimen\pslinearc
\def\psset@linearc#1{\pssetlength\pslinearc{#1}}
\psset@linearc{0pt}
\def\psline{\pst@object{psline}}
\def\psline@i{\pst@getarrows{\begin@OpenObj
    \pst@getcoors[\psline@ii }}
\def\psline@ii{\addto@pscode{\pst@cp \psline@iii \tx@Line}\end@OpenObj }
\def\psline@iii{\ifdim\pslinearc>\z@
    /r \pst@number\pslinearc def
    /Lineto { \tx@Arcto } def
  \else
    /Lineto /lineto load def
  \fi
  \ifshowpoints true \else false \fi
  \tx@setlinejoin 			}
\def\qline(#1)(#2){\def\pst@par{}\begin@SpecialObj
  \def\pst@linetype{0}\pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\addto@pscode{\pst@tempa moveto \pst@coor L
    \@nameuse{psls@\pslinestyle}}\end@SpecialObj}
\def\pspolygon{\pst@object{pspolygon}}
\def\pspolygon@i{\begin@ClosedObj \def\pst@cp{}\pst@getcoors[\pspolygon@ii }
\def\pspolygon@ii{\addto@pscode{\psline@iii \tx@Polygon}\def\pst@linetype{1}\end@ClosedObj}
\def\psset@framearc#1{\pst@checknum{#1}\psk@framearc}
\psset@framearc{0}
\def\psset@cornersize#1{\pst@expandafter\psset@@cornersize{#1}\@nil}
\def\psset@@cornersize#1#2\@nil{\if #1a\relax
    \def\psk@cornersize{\pst@number\pslinearc false }\else\def\psk@cornersize{\psk@framearc true }\fi}
\psset@cornersize{relative}
\def\tx@Rect{Rect }
\def\tx@OvalFrame{OvalFrame }
\def\tx@Frame{Frame }
\def\psset@dimen#1{\pst@expandafter\psset@@dimen{#1}\@nil}
\def\psset@@dimen#1#2\@nil{\if #1o\relax \def\psk@dimen{.5 }\else
    \if #1m\relax \def\psk@dimen{0 }\else
      \if #1i\relax \def\psk@dimen{-.5 }\fi\fi\fi}
\psset@dimen{outer}
\def\psframe{\pst@object{psframe}}
\def\psframe@i(#1){\@ifnextchar({\psframe@ii(#1)}{\psframe@ii(0,0)(#1)}}
\def\psframe@ii(#1)(#2){\begin@ClosedObj
    \pst@getcoor{#1}\pst@tempa
    \pst@@getcoor{#2}\addto@pscode{\psk@cornersize \pst@tempa \pst@coor \psk@dimen \tx@Frame}\def\pst@linetype{2}\showpointsfalse
  \end@ClosedObj }
\def\psTextFrame{\pst@object{psTextFrame}}
\def\psTextFrame@i(#1)(#2)#3{\addbefore@par{ref=c}\leavevmode \pst@killglue
  \begingroup
  \use@par
  \ifx\psk@yref\relax \def\psk@yref{0}\fi \SpecialCoor
  \pst@getcoor{#1}\pst@tempA
  \pst@getcoor{#2}\pst@tempB
  \if@star\psframe*(#1)(#2)\else\psframe(#1)(#2)\fi
  \rput(! \pst@tempA \pst@tempB exch 4 -1 roll 		dup /x1 ED			sub /dx ED			exch dup /y1 ED 		sub /dy ED	
    x1 dx \psk@xref\space mul add \pst@number\psxunit div 
    y1 dy \psk@yref\space mul add \pst@number\psyunit div ){#3}
  \endgroup
  \ignorespaces}
\def\tx@BezierNArray{BezierNArray }
\def\tx@OpenBezier{OpenBezier }
\def\tx@ClosedBezier{ClosedBezier }
\def\tx@BezierShowPoints{BezierShowPoints }
\def\psbezier{\pst@object{psbezier}}
\def\psbezier@i{\pst@getarrows{\begin@OpenObj
      \pst@getcoors[\psbezier@ii }}
\def\psbezier@ii{\addto@pscode{\pst@cp
\ifshowpoints true \else false \fi
    \tx@OpenBezier
    \ifshowpoints \tx@BezierShowPoints \fi}\end@OpenObj}
\def\pscbezier{\pst@object{pscbezier}}
\def\pscbezier@i{\begin@ClosedObj
  \pst@getcoors[\pscbezier@ii}
\def\pscbezier@ii{\addto@pscode{\ifshowpoints true \else false \fi
    \tx@ClosedBezier
    \ifshowpoints \tx@BezierShowPoints \fi}\chardef\pst@linetype=1
  \end@ClosedObj}
\def\tx@Parab{Parab }
\def\psparabola{\pst@object{psparabola}}\def\psparabola@i{\pst@getarrows\psparabola@ii}
\def\psparabola@ii#1(#2)#3(#4){\begin@OpenObj
  \pst@getcoor{#2}\pst@tempa
  \pst@@getcoor{#4}\addto@pscode{\pst@tempa \pst@coor \tx@Parab}\end@OpenObj}
\let\parabola\psparabola \def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth}
\psset@gridwidth{.8pt}
\def\psset@griddots#1{\pst@cntg=#1\relax
  \edef\psk@griddots{\the\pst@cntg}}
\psset@griddots{0}
\def\psset@gridcolor#1{\pst@getcolor{#1}\psgridcolor}
\psset@gridcolor{black}
\def\psset@subgridwidth#1{\pst@getlength{#1}\psk@subgridwidth}
\psset@subgridwidth{.4pt}
\def\psset@subgridcolor#1{\pst@getcolor{#1}\pssubgridcolor}
\psset@subgridcolor{gray}
\def\psset@subgriddots#1{\pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}}
\psset@subgriddots{0}
\def\psset@subgriddiv#1{\pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}}
\psset@subgriddiv{5}
\def\psset@gridfont#1{\def\psk@gridfont{/#1 }}\psset@gridfont{Helvetica}
\def\psset@gridlabels#1{\pst@getlength{#1}\psk@gridlabels}
\psset@gridlabels{10pt}
\def\psset@gridlabelcolor#1{\pst@getcolor{#1}\psgridlabelcolor}
\psset@gridlabelcolor{black}

\def\tx@Grid{Grid }

\def\psgrid{\pst@object{psgrid}}
\def\psgrid@i{\@ifnextchar({\psgrid@ii}{\expandafter\psgrid@iv\pic@coor}}
\def\psgrid@ii(#1){\@ifnextchar({\psgrid@iii(#1)}{\psgrid@iv(0,0)(0,0)(#1)}}
\def\psgrid@iii(#1)(#2){\@ifnextchar({\psgrid@iv(#1)(#2)}{\psgrid@iv(#1)(#1)(#2)}}
\def\psgrid@iv(#1)(#2)(#3){\begin@SpecialObj
    \pst@getcoor{#1}\pst@tempA \pst@getcoor{#2}\pst@tempB \pst@@getcoor{#3}\ifnum\psk@subgriddiv>1
      \addto@pscode{
        gsave
        \psk@subgridwidth SLW \pst@usecolor\pssubgridcolor
        \pst@tempB \pst@coor \pst@tempA                 \pst@number\psxunit abs \pst@number\psyunit abs \psk@subgriddiv\space \psk@subgriddots\space
        {} 0 
        \psk@gridfont findfont 0 scalefont setfont      \tx@Grid 
	grestore
      }\fi
    \addto@pscode{
      gsave
      \psk@gridwidth SLW \pst@usecolor\psgridcolor
      \pst@tempB \pst@coor \pst@tempA                 \pst@number\psxunit abs \pst@number\psyunit abs 1 \psk@griddots\space { \pst@usecolor\psgridlabelcolor }
      \psk@gridlabels 
      \psk@gridfont findfont \psk@gridlabels scalefont setfont  \tx@Grid 
      grestore
    }\end@SpecialObj}
\newif\ifpsmathbox
\psmathboxtrue
\def\pst@mathflag{\z@}
\newtoks\everypsbox
\let\pst@thisbox\relax
\long\def\pst@makenotverbbox#1#2{\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}\setbox\pst@hbox=\hbox{\ifcase\pst@mathflag\or$\m@th\textstyle\or$\m@th\displaystyle\fi
    {\pst@thisbox\the\everypsbox#2}\ifnum\pst@mathflag>\z@$\fi }#1}
\def\pst@makeverbbox#1{\def\pst@afterbox{#1}\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi }\afterassignment\pst@beginbox
  \setbox\pst@hbox\hbox }
\def\pst@beginbox{\ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
  \bgroup\aftergroup\pst@endbox
  \pst@thisbox
  \the\everypsbox }
\def\pst@endbox{\ifnum\pst@mathflag>\z@$\fi
  \egroup
  \pst@afterbox }
\def\pst@makebox{\pst@@makebox}
\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}}
\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}}
\psverbboxfalse
\def\pst@longbox{\def\pst@makebox{\gdef\pst@makebox{\pst@@makebox}\pst@makelongbox }}
\def\pst@makelongbox#1{\def\pst@afterbox{#1}\edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi }\setbox\pst@hbox\hbox\bgroup
  \aftergroup\pst@afterbox
  \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
  \begingroup
  \pst@thisbox
  \the\everypsbox }
\def\pst@endlongbox{\endgroup
  \ifnum\pst@mathflag>\z@$\fi
  \egroup }
\def\pslongbox#1#2{\@namedef{#1}{\pst@longbox#2}\@namedef{end#1}{\pst@endlongbox}}
\newdimen\psframesep
\def\psset@framesep#1{\pssetlength\psframesep{#1}}
\psset@framesep{3pt}
\newif\ifpsboxsep
\def\psset@boxsep#1{\@nameuse{psboxsep#1}}
\psset@boxsep{true}
\def\pst@useboxpar{\use@par
  \if@star
    \let\pslinecolor\psfillcolor
    \solid@star
    \let\solid@star\relax
  \fi
  \ifpsdoubleline \pst@setdoublesep \fi}
\def\psframebox{\pst@object{psframebox}}
\def\psframebox@i{\pst@makebox\psframebox@ii}
\def\psframebox@ii{\begingroup
  \pst@useboxpar
  \pst@dima=\pslinewidth
  \advance\pst@dima by \psframesep
  \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima
  \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima
  \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima
  \setbox\pst@hbox=\hbox{\ifpsboxsep\kern\pst@dima\fi
    \begin@ClosedObj
    \addto@pscode{\psk@cornersize \pst@number\pst@dima neg
      \pst@number\pst@dimb neg
      \pst@number\pst@dimc
      \pst@number\pst@dimd
      .5
      \tx@Frame }\def\pst@linetype{2}\showpointsfalse
    \end@ClosedObj
    \box\pst@hbox
    \ifpsboxsep\kern\pst@dima\fi }\ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi
  \leavevmode\box\pst@hbox
  \endgroup}
\def\psdblframebox{\pst@object{psdblframebox}}
\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i}
\def\psclip#1{\leavevmode
  \begingroup
    \begin@psclip
      \begingroup
        \def\use@pscode{\pstVerb{\pst@dict
            /mtrxc CM def
            CP CP T
            \tx@STV
            \psk@origin
            \psk@swapaxes
            newpath
            \pst@code
            clip
            newpath
            mtrxc setmatrix
            moveto
            0 setgray
            end
	  }\gdef\pst@code{}}\def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}\def\nc@object##1##2##3##4{\pst@misplaced{node connection}}\hbox to\z@{#1}\endgroup
  \def\endpsclip{\end@psclip
    \endgroup}\ignorespaces}
\def\endpsclip{\pst@misplaced\endpsclip}
\let\begin@psclip\relax
\def\end@psclip{\pstVerb{currentpoint initclip moveto}}
\def\AltClipMode{\def\end@psclip{\pstVerb{\pst@grestore}}\def\begin@psclip{\pstVerb{gsave}}}
\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}}
\def\clipbox@@#1{\pssetlength\pst@dimg{#1}\leavevmode\hbox{\begin@psclip
  \pst@Verb{CM \tx@STV CP T newpath
    /a \pst@number\pst@dimg def
    /w \pst@number{\wd\pst@hbox}a add def
    /d \pst@number{\dp\pst@hbox}a add neg def
    /h \pst@number{\ht\pst@hbox}a add def
    a neg d moveto
    a neg h L
    w h L
    w d L
    closepath
    clip
    newpath
    0 0 moveto
    setmatrix}\unhbox\pst@hbox
\end@psclip}}
\def\psshadowbox{\pst@object{psshadowbox}}
\def\psshadowbox@i{\pst@makebox\psshadowbox@ii}
\def\psshadowbox@ii{\begingroup
\pst@useboxpar
\psshadowtrue
\psboxseptrue
\def\psk@shadowangle{-45 }\setbox\pst@hbox=\hbox{\psframebox@ii}\pst@dimh=\psk@shadowsize\p@
\pst@dimh=.7071\pst@dimh
\pst@dimg=\dp\pst@hbox
\advance\pst@dimg\pst@dimh
\dp\pst@hbox=\pst@dimg
\pst@dimg=\wd\pst@hbox
\advance\pst@dimg\pst@dimh
\wd\pst@hbox=\pst@dimg
\leavevmode
\box\pst@hbox
\endgroup}
\def\pscirclebox{\pst@object{pscirclebox}}
\def\pscirclebox@i{\pst@makebox\pscirclebox@ii}
\def\pscirclebox@ii{\begingroup
\pst@useboxpar
\setbox\pst@hbox=\hbox{\pst@nodehook
\pscirclebox@iii
\box\pst@hbox}\ifpsboxsep \pscirclebox@sep \fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\pscirclebox@iii{\if@star
\pslinewidth\z@
\pstverb{\pst@dict \tx@STP \pst@usecolor\psfillcolor
newpath \pscirclebox@iv \tx@SD end}\else
\begin@ClosedObj
\def\pst@linetype{4}\showpointsfalse
\addto@pscode{\pscirclebox@iv CLW 2 div add 0 360 arc closepath}\end@ClosedObj
\fi}
\def\pscirclebox@iv{\pst@number{\wd\pst@hbox}2 div
  \pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}add 2 div
  2 copy \pst@number{\dp\pst@hbox}sub 4 2 roll
  \tx@Pyth \pst@number\psframesep add }
\def\pscirclebox@sep{\pst@dimb=\ht\pst@hbox
  \advance\pst@dimb\dp\pst@hbox
  \divide\pst@dimb 2
  \pst@dima=.5\wd\pst@hbox
  \pst@pyth\pst@dima\pst@dimb\pst@dimc
  \advance\pst@dimc\pslinewidth
  \advance\pst@dimc\psframesep
  \advance\pst@dimb-\pst@dimc
  \setbox\pst@hbox=\hbox to2\pst@dimc{\hss\vbox{\kern-\pst@dimb\box\pst@hbox}\hss}\advance\pst@dimb-\dp\pst@hbox
  \dp\pst@hbox=-\pst@dimb}
\let\pst@nodehook\relax
\def\psCirclebox{\pst@object{psCirclebox}}
\def\psCirclebox@i{\pst@makebox\psCirclebox@ii}
\def\psCirclebox@ii{\begingroup
  \pst@useboxpar
  \pst@dima=\ht\pst@hbox
  \advance\pst@dima\dp\pst@hbox
  \divide\pst@dima\tw@
  \pssetlength\pst@dimb\psk@radius
  \setbox\pst@hbox=\hbox{\pst@nodehook
    \pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}\box\pst@hbox}\ifpsboxsep \psCirclebox@sep \fi
  \leavevmode
  \box\pst@hbox
  \endgroup}
\def\psCirclebox@sep{\pst@dimc=\pst@dimb
  \advance\pst@dimb-\pst@dima
  \advance\pst@dima\pst@dimc
  \setbox\pst@hbox=\hbox to\tw@\pst@dimc{\hss\vrule width \z@ depth \pst@dimb height \pst@dima
    \box\pst@hbox\hss}}
\def\psovalbox{\pst@object{psovalbox}}
\def\psovalbox@i{\pst@makebox{\psovalbox@ii}}
\def\psovalbox@ii{\begingroup
  \pst@useboxpar
  \psovalbox@iii
  \ifpsboxsep\psovalbox@sep\fi
  \leavevmode
  \box\pst@hbox
  \endgroup}
\def\psovalbox@iii{\psovalbox@iv
  \setbox\pst@hbox=\hbox{\begin@ClosedObj
    \addto@pscode{0 360
      \pst@number\pst@dimc CLW 2 div sub
      \pst@number\pst@dimd CLW 2 div sub
      \pst@number\pst@dima
      \pst@number\pst@dimb
      \tx@Ellipse
      closepath }\def\pst@linetype{2}\end@ClosedObj
    \unhbox\pst@hbox}}
\def\psovalbox@iv{\pst@dimc=\pslinewidth\advance\pst@dimc\psframesep
  \pst@dimd=\ht\pst@hbox\advance\pst@dimd\dp\pst@hbox
  \pst@dima=.5\wd\pst@hbox
  \pst@dimb=.5\pst@dimd\advance\pst@dimb-\dp\pst@hbox
  \pst@dimd=.707\pst@dimd
  \advance\pst@dimd\pst@dimc
  \advance\pst@dimc.707\wd\pst@hbox}
\def\psovalbox@sep{\setbox\pst@hbox\hbox to 2\pst@dimc{\hss\unhbox\pst@hbox\hss}\pst@dimg=\pst@dimd
  \advance\pst@dimg-\pst@dimb
  \dp\pst@hbox=\pst@dimg
  \advance\pst@dimd\pst@dimb
  \ht\pst@hbox=\pst@dimd}
\def\psdiabox{\pst@object{psdiabox}}
\def\psdiabox@i{\pst@makebox{\psdiabox@ii}}
\def\psdiabox@ii{\begingroup
\pst@useboxpar
\psdiabox@iii
\ifpsboxsep\psdiabox@sep\fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\psdiabox@iv{\pst@dimg=.707\pslinewidth
\advance\pst@dimg.707\psframesep
\pst@dima=\wd\pst@hbox
\divide\pst@dima 2
\pst@dimc=\pst@dima
\advance\pst@dimc\pst@dimg
\pst@dimd=\ht\pst@hbox
\advance\pst@dimd\dp\pst@hbox
\divide\pst@dimd 2
\pst@dimb=\pst@dimd
\advance\pst@dimb-\dp\pst@hbox
\advance\pst@dimd\pst@dimg}
\def\psdiabox@iii{\psdiabox@iv
\setbox\pst@hbox=\hbox{\begin@ClosedObj
\addto@pscode{\psline@iii
pop
.5
\pst@number\pst@dimc 2 mul \pst@number\pst@dimd 2 mul
0
\pst@number\pst@dima \pst@number\pst@dimb
\tx@Diamond}\def\pst@linetype{4}\end@ClosedObj
\box\pst@hbox}}
\def\psdiabox@sep{\setbox\pst@hbox\hbox to 4\pst@dimc{\hss\unhbox\pst@hbox\hss}\multiply\pst@dimd 2
\advance\pst@dimd\pst@dimb
\ht\pst@hbox\pst@dimd
\advance\pst@dimd-2\pst@dimb
\dp\pst@hbox\pst@dimd}
\def\psset@trimode#1{\pst@expandafter\psset@@trimode{#1}\@empty\@empty\@nil}
\def\psset@@trimode#1#2#3\@nil{\let\pst@tempg#1\relax
\ifx\pst@tempg*\let\psk@@trimode\@empty
\let\pst@tempg#2\relax
\else
\let\psk@@trimode\relax
\fi
\edef\psk@trimode{\ifx R\pst@tempg 1 \else\ifx D\pst@tempg 2
\else\ifx L\pst@tempg 3 \else 0 \fi\fi\fi}}
\psset@trimode{U}
\def\pstribox{\pst@object{pstribox}}
\def\pstribox@i{\pst@makebox{\pstribox@ii}}
\def\pstribox@ii{\begingroup
\pst@useboxpar
\pstribox@iii
\ifpsboxsep\pstribox@sep\fi
\leavevmode
\box\pst@hbox
\endgroup}
\def\pstribox@iii{\pstribox@iv
\setbox\pst@hbox=\hbox{\begin@ClosedObj
\addto@pscode{\psline@iii
pop
.5
\pst@number\pst@dimc \pst@number\pst@dimd
\ifodd\psk@trimode exch \fi
\psk@trimode -90 mul
\pst@number\pst@dima \pst@number\pst@dimb
\tx@Triangle}\def\pst@linetype{2}\end@ClosedObj
\box\pst@hbox}}
\def\pstribox@iv{\pst@dimh=\pslinewidth
\advance\pst@dimh\psframesep
\pst@dimg=\ht\pst@hbox
\advance\pst@dimg-\dp\pst@hbox
\divide\pst@dimg 2
\edef\pst@tempa{\number\pst@dimg sp}\ifodd\psk@trimode
\pst@dimb\pst@dimg
\else
\pst@dima=\wd\pst@hbox
\divide\pst@dima 2
\fi
\ifcase\psk@trimode
\pst@dimb=-\dp\pst@hbox
\advance\pst@dimb-\pst@dimh
\or
\pst@dima=-\pst@dimh
\or
\pst@dimb=\ht\pst@hbox
\advance\pst@dimb\pst@dimh
\or
\pst@dima=\wd\pst@hbox
\advance\pst@dima\pst@dimh
\fi
\pst@dimd=\dp\pst@hbox
\advance\pst@dimd\ht\pst@hbox
\ifx\psk@@trimode\relax
\pst@dimc=\wd\pst@hbox
\advance\pst@dimc\ifodd\psk@trimode 1.447\else 1.789\fi\pst@dimh
\multiply\pst@dimc 2
\advance\pst@dimd\ifodd\psk@trimode 1.789\else 1.447\fi\pst@dimh
\multiply\pst@dimd 2
\else
\ifodd\psk@trimode
\advance\pst@dimd 1.1547\wd\pst@hbox
\advance\pst@dimd 3.4641\pst@dimh
\pst@dimc=.866\pst@dimd
\else
\advance\pst@dimd .866\wd\pst@hbox \advance\pst@dimd 3\pst@dimh
\pst@dimc=1.1547\pst@dimd \fi
\fi}
\def\pstribox@sep{\ifodd\psk@trimode
\advance\pst@dimb.5\pst@dimd
\ht\pst@hbox=\pst@dimb
\advance\pst@dimd-\pst@dimb
\dp\pst@hbox=\pst@dimd
\else
\setbox\pst@hbox\hbox to \pst@dimc{\hss\unhbox\pst@hbox\hss}\global\pst@dimg=.5\pst@dimc
\fi
\ifcase\psk@trimode
\dp\pst@hbox-\pst@dimb
\advance\pst@dimd\pst@dimb
\ht\pst@hbox\pst@dimd
\or
\pst@dimg=.5\wd\pst@hbox
\global\advance\pst@dimg-\pst@dima
\setbox\pst@hbox\hbox to \pst@dimc{\kern-\pst@dima\box\pst@hbox\hss}\or
\ht\pst@hbox\pst@dimb
\advance\pst@dimd-\pst@dimb
\dp\pst@hbox\pst@dimd
\or
\pst@dimg=\pst@dimc
\advance\pst@dimg-\pst@dima
\global\advance\pst@dimg.5\wd\pst@hbox
\setbox\pst@hbox\hbox to \pst@dimc{\hss\box\pst@hbox\kern\psframesep\kern\pslinewidth}\fi}
\def\psset@arcsepA#1{\pst@getlength{#1}\psk@arcsepA}
\def\psset@arcsepB#1{\pst@getlength{#1}\psk@arcsepB}
\def\psset@arcsep#1{\psset@arcsepA{#1}\let\psk@arcsepB\psk@arcsepA}
\psset@arcsep{0}
\def\tx@ArcArrow{ArcArrow }
\def\psarc{\pst@object{psarc}}
\def\psarc@i{\@ifnextchar({\psarc@iii}{\psarc@ii}}
\def\psarc@ii#1{\addto@par{arrows=#1}\@ifnextchar({\psarc@iii}{\psarc@iii(0,0)}}
\def\psarc@iii(#1)#2#3#4{\begin@OpenObj
    \pst@getangle{#3}\pst@tempa
    \pst@getangle{#4}\pst@tempb
    \pst@@getcoor{#1}\pssetlength\pst@dima{#2}\addto@pscode{\psarc@iv \psarc@v}\gdef\psarc@type{0}\showpointsfalse
  \end@OpenObj }
\def\psarc@iv{\pst@coor /y ED /x ED
  /r \pst@number\pst@dima def
  /c 57.2957 r \tx@Div def
  /angleA
    \pst@tempa
    \psk@arcsepA c mul 2 div
    \ifcase \psarc@type add \or sub \fi
  def
  /angleB
    \pst@tempb
    \psk@arcsepB c mul 2 div
    \ifcase \psarc@type sub \or add \fi
  def
  \ifshowpoints\psarc@showpoints\fi
  \ifx\psk@arrowA\@empty
    \ifnum\psk@liftpen=2
      r angleA \tx@PtoC
      y add exch x add exch moveto
    \fi
  \fi}
\def\psarc@v{x y r
  angleA
  \ifx\psk@arrowA\@empty\else
    { ArrowA CP }
    r 0 gt \pslbrace
    { \ifcase\psarc@type add \or sub \fi } \psrbrace\pslbrace
    { \ifcase\psarc@type sub \or add \fi } \psrbrace ifelse
\tx@ArcArrow
  \fi
  angleB
  \ifx\psk@arrowB\@empty\else
    { ArrowB }
    r 0 gt \pslbrace
      { \ifcase\psarc@type sub \or add \fi } \psrbrace\pslbrace
      { \ifcase\psarc@type add \or sub \fi } \psrbrace ifelse
\tx@ArcArrow
  \fi
\ifcase\psarc@type arc \or arcn \fi}
\def\psarc@type{0}
\def\psarc@showpoints{gsave
  newpath
  x y moveto
  x y r \pst@tempa \pst@tempb
  \ifcase\psarc@type arc \or arcn \fi
  closepath
  CLW 2 div SLW
  [ \psk@dash\space ] 0 setdash stroke
  grestore }
\def\psarcn{\pst@object{psarcn}}
\def\psarcn@i{\def\psarc@type{1}\psarc@i}
\def\psellipticwedge{\def\pst@par{}\pst@object{psellipticwedge}}
\def\psellipticwedge@i(#1){\@ifnextchar({\psellipticwedge@ii(#1)}{\psellipticwedge@ii(0,0)(#1)}}
\def\psellipticwedge@ii(#1)(#2)#3#4{\begin@ClosedObj
    \pst@getangle{#3}\pst@tempa
    \pst@getangle{#4}\pst@tempb
    \pst@getcoor{#1}\pst@tempc
    \pst@@getcoor{#2}\def\pst@linetype{1}\addto@pscode{\pst@tempa \pst@tempb
      \pst@coor
      \pst@tempc moveto
      \ifdim\psk@dimen\p@=\z@\else
        \psk@dimen CLW mul dup 3 1 roll
        sub 3 1 roll sub exch
      \fi
      \pst@tempc
      \tx@Ellipse
      closepath}\showpointsfalse
  \end@ClosedObj }
\def\psellipticarcn{\def\pst@par{}\pst@object{psellipticarcn}}
\def\psellipticarcn@i{\let\if@psarcn\iftrue\psellipticarc@ii}
\def\psellipticarc{\def\pst@par{}\pst@object{psellipticarc}}
\def\psellipticarc@i{\let\if@psarcn\iffalse\psellipticarc@ii}
\let\if@psarcn\iffalse
\def\psellipticarc@ii{\pst@getarrows\psellipticarc@iii}
\def\psellipticarc@iii(#1){\@ifnextchar({\psellipticarc@iv(#1)}{\psellipticarc@iv(0,0)(#1)}}
\def\psellipticarc@iv(#1)(#2)#3#4{\begin@OpenObj
  \pst@getcoor{#1}\pst@tempa
  \pst@getcoor{#2}\pst@tempb
  \pst@getangle{#3}\pst@tempc
  \pst@getangle{#4}\pst@tempd
  \addto@pscode{\psellipticarc@definearg \psellipticarc@draw}\showpointsfalse
  \end@OpenObj }
\def\psellipticarc@definearg{\pst@tempa /yOrig ED /xOrig ED  \pst@tempb              \ifdim\psk@dimen\p@=\z@\else
    \psk@dimen CLW mul dup 3 1 roll
    sub 3 1 roll sub exch
  \fi
  /ry ED /rx ED
  /angleA
    /d {  \if@psarcn sub \else add \fi } def
    \pst@tempc \psk@arcsepA 2 div
    ArcAdjust
  def
  /angleB
    /d { \if@psarcn add \else sub \fi } def
    \pst@tempd \psk@arcsepB 2 div ArcAdjust
  def
  \ifshowpoints\psellipticarc@showpoints\fi
  \ifx\psk@arrowA\@empty
    \ifnum\psk@liftpen=2
      angleA cos rx mul xOrig add
      angleA sin ry mul yOrig add
      moveto
    \fi
  \fi
}
\def\psellipticarc@draw{0 0 1
  angleA
  \ifx\psk@arrowA\@empty\else
    { ArrowA CP }
    { \if@psarcn sub \else add \fi }
    EllipticArcArrow
  \fi
  angleB
  \ifx\psk@arrowB\@empty\else
    { ArrowB }
    { \if@psarcn add \else sub \fi }
    EllipticArcArrow
  \fi
  /mtrx CM def
  xOrig yOrig T
  rx ry scale
  \if@psarcn arcn \else arc \fi
  mtrx setmatrix}
\def\psellipticarc@showpoints{gsave
  /mtrx CM def
  xOrig yOrig T
  rx ry scale
  0 0 moveto
  0 0 1 \pst@tempc \pst@tempd
  \ifcase\psarc@type arc \or arcn \fi
  closepath
  mtrx setmatrix
  CLW 2 div SLW
  [ \psk@dash\space ] 0 setdash stroke
  grestore }
\def\pscircle{\pst@object{pscircle}}
\def\pscircle@i{\@ifnextchar({\pscircle@do}{\pscircle@do(0,0)}}
\def\pscircle@do(#1)#2{\if@star{\use@par\qdisk(#1){#2}}\else \begin@ClosedObj
    \pst@@getcoor{#1}\pssetlength\pst@dimc{#2}\def\pst@linetype{4}\addto@pscode{
      \pst@coor
      \pst@number\pst@dimc
      \psk@dimen CLW mul sub
      0 360 arc
      closepath }\showpointsfalse
    \end@ClosedObj
  \fi
  \ignorespaces}
\def\qdisk(#1)#2{\def\pst@par{}\begin@SpecialObj
  \pst@@getcoor{#1}\pssetlength\pst@dimg{#2}\addto@pscode{ \pst@coor \pst@number\pst@dimg \tx@SD }\end@SpecialObj}
\def\psset@radius#1{\pst@@getlength{#1}\psk@radius}
\psset@radius{.25cm}
\def\psCircle{\pst@object{psCircle}}
\def\psCircle@i{\@ifnextchar({\psCircle@ii}{\psCircle@ii(0,0)}}
\def\psCircle@ii(#1){\pscircle@do(#1){\psk@radius}}
\def\pswedge{\pst@object{pswedge}}
\def\pswedge@i{\@ifnextchar({\pswedge@ii}{\pswedge@ii(0,0)}}
\def\pswedge@ii(#1)#2#3#4{\begin@ClosedObj
  \pssetlength\pst@dimc{#2}
  \pst@getangle{#3}\pst@tempa
  \pst@getangle{#4}\pst@tempb
  \pst@@getcoor{#1}\def\pst@linetype{1}\addto@pscode{\pst@coor
    2 copy
    moveto
    \pst@number\pst@dimc \psk@dimen CLW mul sub \pst@tempa \pst@tempb
    arc
    closepath}\showpointsfalse
  \end@ClosedObj }
\def\tx@Ellipse{Ellipse }
\def\psellipse{\pst@object{psellipse}}
\def\psellipse@i(#1){\@ifnextchar({\psellipse@ii(#1)}{\psellipse@ii(0,0)(#1)}}
\def\psellipse@ii(#1)(#2){\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\addto@pscode{0 360
    \pst@coor
    \ifdim\psk@dimen\p@=\z@\else
      \psk@dimen CLW mul
      dup 4 -1 roll sub neg 3 1 roll sub
    \fi
    \pst@tempa
    \tx@Ellipse
    closepath}\def\pst@linetype{2}\end@ClosedObj }
\def\multips{\@ifnextchar({\def\pst@par{}\multips@ii}{\multips@i}}
\def\multips@i#1{\def\pst@par{rot=#1}\multips@ii}
\def\multips@ii(#1){\@ifnextchar({\multips@iii(#1)}{\multips@iii(\z@,\z@)(#1)}}
\long\def\multips@iii(#1)(#2)#3#4{\begingroup
\pst@killglue
\use@par
  \pst@getcoor{#1}\pst@tempa
  \pst@@getcoor{#2}\pst@cnta=#3\relax
  \init@pscode
  \addto@pscode{\pst@tempa T \the\pst@cnta\space \pslbrace
    gsave \ifx\psk@rot\@empty\else\psk@rot rotate \fi}\hbox to\z@{\def\init@pscode{\addto@pscode{gsave
        \pst@number\pslinewidth SLW
        \pst@usecolor\pslinecolor}}\def\use@pscode{\addto@pscode{grestore}}\def\psclip##1{\pst@misplaced\psclip}\def\nc@object##1##2##3##4{\pst@misplaced{node connection}}#4}\addto@pscode{grestore \pst@coor T \psrbrace repeat}\leavevmode
  \use@pscode
  \endgroup
  \ignorespaces}
\def\psscalebox#1{\pst@makebox{\ps@scalebox{#1}}}
\def\ps@scalebox#1{\begingroup \pst@getscale{#1}\pst@tempa \let\pst@tempc\pst@tempg \let\pst@tempd\pst@temph \ps@@scalebox \endgroup}
\def\ps@@scalebox{\leavevmode \hbox{\ifdim\pst@tempd\p@<\z@ \pst@dimg=\pst@tempd\ht\pst@hbox \pst@dimh=\pst@tempd\dp\pst@hbox \dp\pst@hbox=-\pst@dimg \ht\pst@hbox=-\pst@dimh \else \ht\pst@hbox=\pst@tempd\ht\pst@hbox \dp\pst@hbox=\pst@tempd\dp\pst@hbox \fi \pst@dima=\pst@tempc\wd\pst@hbox \ifdim\pst@dima<\z@\kern-\pst@dima\fi \pst@Verb{CP CP translate \pst@tempa \tx@NET}\hbox to \z@{\box\pst@hbox\hss}\pst@Verb{
      CP CP translate
      1 \pst@tempc div 1 \pst@tempd div scale
      \tx@NET}\ifdim\pst@dima>\z@\kern\pst@dima\fi }}
\pslongbox{Scalebox}{\psscalebox}
\def\psscaleboxto(#1,#2){\pst@makebox{\ps@scaleboxto(#1,#2)}}
\def\ps@scaleboxto(#1,#2){\begingroup
  \pssetlength\pst@dima{#1}\pssetlength\pst@dimb{#2}\ifdim\pst@dima=\z@\else
    \pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempc
    \edef\pst@tempc{\pst@tempc\space}\fi
  \ifdim\pst@dimb=\z@
    \ifdim\pst@dima=\z@
      \@pstrickserr{\string\psscaleboxto\space dimensions cannot both be zero}\@ehpa
      \def\pst@tempa{}\def\pst@tempc{1 }\def\pst@tempd{1 }\else
      \let\pst@tempd\pst@tempc
    \fi
  \else
    \pst@dimc=\ht\pst@hbox
    \advance\pst@dimc\dp\pst@hbox
    \pst@divide{\pst@dimb}{\pst@dimc}\pst@tempd
    \edef\pst@tempd{\pst@tempd\space}\ifdim\pst@dima=\z@ \let\pst@tempc\pst@tempd \fi
  \fi
  \edef\pst@tempa{\pst@tempc \pst@tempd scale }\ps@@scalebox
  \endgroup}
\pslongbox{Scaleboxto}{\psscaleboxto}
\def\tx@Rot{Rot }
\def\psrotateleft{\pst@makebox{\ps@rotateleft\pst@hbox}}
\def\ps@rotateleft#1{\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1\pst@Verb{90 \tx@Rot}
\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}\pst@Verb{-90 \tx@Rot}}}}
\def\psrotateright{\pst@makebox{\ps@rotateright\pst@hbox}}
\def\ps@rotateright#1{\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1\pst@Verb{-90 \tx@Rot}
  \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}\pst@Verb{90 \tx@Rot}}}}
\def\psrotatedown{\pst@makebox{\ps@rotatedown\pst@hbox}}
\def\ps@rotatedown#1{\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1\pst@Verb{180 \tx@Rot}\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}\pst@Verb{-180 \tx@Rot}}}}
\pslongbox{Rotateleft}{\psrotateleft}
\pslongbox{Rotateright}{\psrotateright}
\pslongbox{Rotatedown}{\psrotatedown}
\let\rotateleft\psrotateleft
\let\rotateright\psrotateright
\let\rotatedown\psrotatedown
\def\pst@starbox{\setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}}
\def\pst@@makesmall#1{\setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}}
\def\pst@@@makesmall#1{\pst@dimh=\psk@xref\wd#1\ifx\psk@yref\relax
\pst@dimg=\dp#1\else
\pst@dimg=\psk@yref\ht#1\advance\pst@dimg\psk@yref\dp#1\fi
\setbox#1=\hbox to\z@{\kern-\pst@dimh\vbox to\z@{\vss\box#1\kern-\pst@dimg}\hss}}
\def\psset@ref#1{\pst@expandafter\psset@@ref{#1}\@empty,,\@nil}
\def\psset@@ref#1#2,#3,#4\@nil{\def\psk@xref{.5}\def\psk@yref{.5}\let\pst@makesmall\pst@@@makesmall
  \ifx\@empty#3\@empty
    \@nameuse{getref@#1}\@nameuse{getref@#2}\else
    \pst@checknum{#1#2}\psk@xref
    \pst@checknum{#3}\psk@yref
  \fi}
\def\getref@c{\let\pst@makesmall\pst@@makesmall}
\def\getref@t{\def\psk@yref{1}}
\def\getref@b{\def\psk@yref{0}}
\def\getref@B{\let\psk@yref\relax}
\def\getref@l{\def\psk@xref{0}}
\def\getref@r{\def\psk@xref{1}}
\psset@ref{c}
\def\psset@rot#1{\pst@expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil}
\def\psset@@rot#1\@nil{\def\next##1@#1=##2@##3\@nil{\ifx\relax##2\pst@getangle{#1}\psk@rot
\else
\def\psk@rot{##2}\fi}\expandafter\next\pst@rottable @#1=\relax @\@nil}
\def\psset@@@rot#1#2\@nil{\psset@@rot#2\@nil
\edef\psk@rot{\pst@rotlist \ifx\psk@rot\@empty\else\psk@rot add \fi}}
\def\pst@rotlist{mark RAngle /a ED cleartomark a neg }
\def\pst@rottable{@0=@U=@L=90 @D=180 @R=-90 @N=\pst@rotlist
@W=\pst@rotlist 90 add @S=\pst@rotlist 180 add @E=\pst@rotlist 90 sub }
\psset@rot{0}
\def\tx@RotBegin{RotBegin }
\def\tx@RotEnd{RotEnd }
\def\pst@rotate#1#2{\ifx#1\@empty\else
  \setbox#2=\hbox{\pst@Verb{#1 \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}\fi }
\def\psput@cartesian#1{\hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}}
\def\psput@special#1{\hbox{\pst@Verb{{ \pst@coor } \tx@PutCoor \tx@PutBegin }\box#1\pst@Verb{ \tx@PutEnd }}}
\def\tx@PutCoor{PutCoor }
\def\tx@PutBegin{PutBegin }
\def\tx@PutEnd{PutEnd }
\def\rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rput@i}{\rput@ii}}}
\def\rput@i[#1]{\addto@par{ref={#1}}\rput@ii}
\def\rput@ii{\@ifnextchar({\rput@iv}{\rput@iii}}
\def\rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\rput@iv}{\rput@iv(\z@,\z@)}}
\def\rput@iv(#1){\pst@killglue\pst@makebox{\rput@v{#1}}}
\def\rput@v#1{\begingroup
    \use@par
    \if@star\pst@starbox\fi
    \pst@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces }
\def\multirput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\multirput@i}{\multirput@ii}}}
\def\multirput@i[#1]{\addto@par{ref={#1}}\multirput@ii}
\def\multirput@ii{\@ifnextchar({\multirput@iv}{\multirput@iii}}
\def\multirput@iii#1{\addto@par{rot={#1}}\multirput@iv}
\def\multirput@iv(#1){\@ifnextchar({\multirput@v(#1)}{\multirput@v(\z@,\z@)(#1)}}
\def\multirput@v(#1,#2)(#3,#4)#5{\pst@makebox{\multirput@vi(#1,#2)(#3,#4){#5}}}
\def\multirput@vi(#1,#2)(#3,#4)#5{\pst@killglue
  \begingroup
    \use@par
    \if@star\pst@starbox\fi
    \pst@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \pssetxlength\pst@dima{#1}\pssetylength\pst@dimb{#2}\pssetxlength\pst@dimc{#3}\pssetylength\pst@dimd{#4}\pst@cntg=#5\relax
    \pst@cnth=\@ne
    \leavevmode
    \loop
      \vbox to \z@{\vss
        \hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}\vskip\pst@dimb }\ifnum\pst@cntg>\pst@cnth
        \advance\pst@dima\pst@dimc
        \advance\pst@dimb\pst@dimd
        \advance\pst@cnth\@ne
    \repeat 
    \endgroup
  \ignorespaces }
\newif\if@fixedradius
\def\cput{\pst@object{cput}}
\def\cput@i{\@fixedradiusfalse\cput@ii}
\def\cput@ii{\pst@killglue\@ifnextchar({\cput@iv}{\cput@iii}}
\def\cput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\cput@iv}{\cput@iv(\z@,\z@)}}
\def\cput@iv(#1){\pst@makebox{\cput@v{#1}}}
  \def\cput@v#1{\begingroup
    \use@par
    \setbox\pst@hbox=\hbox{\psboxsepfalse
      \if@fixedradius\psCirclebox@ii\else\pscirclebox@ii\fi }\pst@@makesmall\pst@hbox
    \pst@rotate\psk@rot\pst@hbox
    \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces }
\def\Cput{\pst@object{Cput}}
\def\Cput@i{\@fixedradiustrue\cput@ii}
\newdimen\pslabelsep
\def\psset@labelsep#1{\pssetlength\pslabelsep{#1}}
\psset@labelsep{5pt}
\def\psset@refangle#1{\pst@expandafter\psset@@refangle{#1}\@nil}
\def\psset@@refangle#1\@nil{\def\next##1@#1=##2"##3@##4\@nil{\ifx\relax##2\pst@getangle{#1}\psk@refangle
\def\psk@uputref{}\else
\def\psk@refangle{##2 }\def\psk@uputref{##3}\fi}\expandafter\next\pst@refangletable @#1=\relax"@\@nil}
\def\pst@refangletable{@r=0"20@u=90"02@l=180"10@d=-90"01@ur=45"22@ul=135"12@dr=-135"21@dl=-45"11}
\psset@refangle{0}
\def\uput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\uput@ii}{\uput@i}}} 
\def\uput@i#1{\addto@par{labelsep=#1}\uput@ii}
\def\uput@ii[#1]{\addto@par{refangle={#1}}\@ifnextchar({\uput@iv}{\uput@iii}}
\def\uput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\uput@iv}{\uput@iv(\z@,\z@)}}
\def\uput@iv(#1){\pst@killglue\pst@makebox{\uput@v{#1}}}
\def\uput@v#1{\begingroup
\use@par
\if@star\pst@starbox\fi
\uput@vi
\psput@{#1}\pst@hbox
\endgroup
\ignorespaces}
\def\uput@vi{\ifx\psk@uputref\@empty
\uput@vii\tx@UUput{}\else
\ifx\psk@rot\@empty
\expandafter\uput@viii\psk@uputref
\else
\uput@vii\tx@UUput{}\fi
\fi}
\def\uput@vii#1#2{\edef\pst@coor{\pst@number\pslabelsep
    #2\pst@number{\wd\pst@hbox}\pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}\psk@refangle\space \ifx\psk@rot\@empty\else\psk@rot\space sub \fi
    \tx@Uput #1}\setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}\setbox\pst@hbox=\psput@special\pst@hbox
  \ifx\psk@rot\@empty\else\pst@rotate\psk@rot\pst@hbox\fi}
\def\uput@viii#1#2{\ifnum#1>\z@\ifnum#2>\z@\pslabelsep=.707\pslabelsep\fi\fi
  \setbox\pst@hbox=\vbox to\z@{\ifnum#2=1 \vskip\pslabelsep\else\vss\fi
    \hbox to\z@{\ifnum#1=2 \hskip\pslabelsep\else\hss\fi
      \box\pst@hbox
      \ifnum#1=1 \hskip\pslabelsep\else\hss\fi}\ifnum#2=2 \vskip\pslabelsep\else\vss\fi}}
\def\tx@Uput{Uput }
\def\tx@UUput{UUput }
\def\Rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Rput@ii}{\Rput@i}}}
\def\Rput@i#1{\addto@par{labelsep=#1}\Rput@ii}
\def\Rput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Rput@iv}{\Rput@iii}}
\def\Rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\Rput@iv}{\Rput@iv(\z@,\z@)}}
\def\Rput@iv(#1){\pst@killglue\pst@makebox{\Rput@v{#1}}}
\def\Rput@v#1{\begingroup
  \use@par
  \if@star\pst@starbox\fi
  \Rput@vi
  \pst@makesmall\pst@hbox
  \pst@rotate\psk@rot\pst@hbox
  \psput@{#1}\pst@hbox
  \endgroup
  \ignorespaces}
\def\Rput@vi{\pst@dimg=\dp\pst@hbox
  \advance\pst@dimg\pslabelsep
  \dp\pst@hbox=\pst@dimg
  \pst@dimg=\ht\pst@hbox
  \advance\pst@dimg\pslabelsep
  \ht\pst@hbox=\pst@dimg
  \setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}\def\oldpsput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\oldpsput@i}{\oldpsput@ii}}}
\def\oldpsput@i[#1]{\addto@par{ref={#1}}\oldpsput@ii}
\def\oldpsput@ii{\@ifnextchar<{\oldpsput@iii}{\oldpsput@iv}}
\def\oldpsput@iii<#1>{\rput@iii{#1}}
\def\OldPsput{\let\psput\oldpsput}
\def\NewPsput{\let\psput\rput}
\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
\newif\ifshowgrid
\def\psset@showgrid#1{\@nameuse{showgrid#1}}
\psset@showgrid{false}
\newdimen\pst@shift
\def\psset@shift#1{\pssetlength\pst@dimg{#1}\pst@shift\pst@dimg}
\psset@shift{0}
\def\pspicture{\begingroup\pst@ifstar\pst@picture}
\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
\def\pst@@picture[#1]#2(#3,#4){\@ifnextchar({\pst@@@picture[#1](#3,#4)}{\pst@@@picture[#1](0,0)(#3,#4)}}
\def\pst@@@picture[#1](#2,#3)(#4,#5){\pssetxlength\pst@dima{#2}\pssetylength\pst@dimb{#3}\pssetxlength\pst@dimc{#4}\pssetylength\pst@dimd{#5}\ifdim\pst@dima>\pst@dimc \pst@dimg=\pst@dima \pst@dima=\pst@dimc \pst@dimc=\pst@dimg \fi \ifdim\pst@dimb>\pst@dimd \pst@dimg=\pst@dimb \pst@dimb=\pst@dimd \pst@dimd=\pst@dimg \fi \setbox\pst@hbox=\hbox\bgroup \begingroup\KillGlue \@ifundefined{@latexerr}{}{\let\unitlength\psunit}\edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}\psset{showgrid=false}\def\pst@tempA{#1}\ifx\pst@tempA\@empty\else\psset{#1}\fi \ifshowgrid\psgrid[style=gridstyle]\fi }
\def\pic@coor{(0,0)(0,0)(10,10)}
\newdimen\pst@shift
\def\endpspicture{\pst@killglue
  \global\pst@shift=\pst@shift \endgroup
  \egroup
  \ifdim\wd\pst@hbox=\z@\else
\fi
  \ht\pst@hbox=\pst@dimd
  \dp\pst@hbox=-\pst@dimb
  \setbox\pst@hbox=\hbox{\kern-\pst@dima
\pst@dimd-\pst@shift
\advance\pst@dimd\pst@dimb
    \lower\pst@dimd \box\pst@hbox \kern\pst@dimc}\if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
  \leavevmode\box\pst@hbox
  \endgroup \global\pst@shift\z@ }
\@namedef{pspicture*}{\pspicture*}
\@namedef{endpspicture*}{\endpspicture}
\def\tx@BeginOL{BeginOL }
\def\tx@InitOL{InitOL }
\def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}}
\def\AltOverlayMode{\def\pst@initoverlay##1{\pst@Verb{\tx@InitOL
      /Visible { initclip } def
      /Invisible {
        CP newpath OLUnit itransform moveto clip newpath moveto
      } def
      /TheOL (##1) def}}}
\def\pst@overlay#1{\edef\curr@overlay{#1}\pst@Verb{(#1) BOL}\aftergroup\pst@endoverlay}
\def\pst@endoverlay{\pst@Verb{(\curr@overlay) BOL}}
\def\curr@overlay{all}
\newbox\theoverlaybox
\def\overlaybox{\global\setbox\theoverlaybox=\hbox\bgroup
  \begingroup
  \let\psoverlay\pst@overlay
  \def\overlaybox{\@pstrickserr{Overlays cannot be nested}\@eha}\def\putoverlaybox{\@pstrickserr{You must end the overlay box
         before using \string\putoverlaybox}}\psoverlay{main}\ignorespaces}
\def\endoverlaybox{\endgroup\egroup}
\def\putoverlaybox#1{\hbox{\pst@initoverlay{#1}\copy\theoverlaybox}}
\def\psoverlay{\@pstrickserr{\string\psoverlay\space
  can only be used after \string\overlaybox}}
\ifx\pstcustomize\relax 

\def\pstdriver{Rokicki's dvips}
{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}}  \def\pstunit{1bp}\def\pstVerb#1{\special{ps: #1}}
\def\pstverbscale{SDict begin normalscale end}
\ifx\textsuperscript\@undefined
   \def\pstheader#1{\special{header=#1}}
\else
  \ifx\Gin@PS@file@header\@undefined
    \def\pstheader#1{\AtBeginDvi{\special{header=#1}}}
  \else
    \let\pstheader\Gin@PS@file@header
  \fi
\fi
\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET}




%
 \fi
\catcode`\@=\PstAtCode\relax
%
 \fi\relax
\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11
\pstheader{pst-node.pro}
\def\pst@nodedict{tx@NodeDict begin }
\def\pst@zapspace#1 #2{#1\ifx#2\@empty\else\expandafter\pst@zapspace\fi
#2}
\def\pst@getnode#1#2{\pst@expandafter\pst@@getnode{#1},,\@nil#2}
\def\pst@@getnode#1,#2,#3\@nil#4{\ifx\@empty#3\@empty
\edef#4{/N@\pst@zapspace#1 \@empty\space}\else
\pst@cntg=#1\relax
\pst@cnth=#2\relax
\edef#4{/N@M-\ifnum\psmatrixcnt=\z@ 1\else\the\psmatrixcnt\fi
-\the\pst@cntg-\the\pst@cnth\space}\fi}
\def\tx@NewNode{NewNode }
\def\pst@newnode#1#2#3#4{\pst@killglue
\leavevmode
\pst@getnode{#1}\pst@thenode
\pst@Verb{\pst@nodedict
{#3}
\ifx\psk@name\relax false \else \psk@name true \fi
\pst@thenode
#2
{#4}
\tx@NewNode
end}\global\let\psk@name\relax
\pstree@nodehook
\global\let\pstree@nodehook\relax}
\let\pstree@nodehook\relax
\newif\ifnodealign
\def\psset@nodealign#1{\@nameuse{nodealign#1}}
\psset@nodealign{false}
\def\pst@nodealign{\pst@dimg=\ht\pst@hbox
\advance\pst@dimg-\dp\pst@hbox
\divide\pst@dimg2
\lower\pst@dimg}
\def\tx@InitPnode{InitPnode }
\def\pnode{\@ifnextchar({\pnode@}{\pnode@(0,0)}}
\def\pnode@(#1)#2{\pst@@getcoor{#1}\pst@newnode{#2}{10}{\pst@coor}{\tx@InitPnode}\ignorespaces}
\def\tx@InitCnode{InitCnode }
\def\cnode{\pst@object{cnode}}
\def\cnode@i{\@ifnextchar({\cnode@ii}{\cnode@ii(0,0)}}
\def\cnode@ii(#1)#2#3{\leavevmode
  \hbox{\use@par
    \pst@@getcoor{#1}\pssetlength\pst@dimc{#2}\pst@dimg=\psk@dimen\pslinewidth
    \advance\pst@dimc-\pst@dimg
    \advance\pst@dimc.5\pslinewidth
    \ifnodealign
      \kern\pst@dimc
      \vrule width\z@ height \pst@dimc depth \pst@dimc
    \fi
    \pscircle@do(#1){#2}\pst@newnode{#3}{11}{\pst@coor \pst@number\pst@dimc}{\tx@InitCnode}\ifnodealign\kern\pst@dimc\fi }\ignorespaces}
\def\Cnode{\pst@object{Cnode}}
\def\Cnode@i{\@ifnextchar({\Cnode@ii}{\Cnode@ii(0,0)}}
\def\Cnode@ii(#1)#2{\cnode@ii(#1){\psk@radius}{#2}}\def\cnodeput{\pst@object{cnodeput}}
\def\cnodeput@i{\@ifnextchar({\cnodeput@iii}{\cnodeput@ii}}
\def\cnodeput@ii#1{\addto@par{rot={#1}}\@ifnextchar({\cnodeput@iii}{\cnodeput@iii(\z@,\z@)}}
\def\cnodeput@iii(#1)#2{\pst@killglue
\@fixedradiusfalse
\def\pst@nodehook{\cnodeput@iv{#2}}\pst@makebox{\cput@v{#1}}}
\def\cnodeput@iv#1{\pst@newnode{#1}{11}{\pscirclebox@iv \pst@number\pslinewidth add}{\tx@InitCnode}\global\let\pst@nodehook\relax}
\def\Cnodeput{\pst@object{Cnodeput}}
\def\Cnodeput@i{\@ifnextchar({\Cnodeput@iii}{\Cnodeput@ii}}
\def\Cnodeput@ii#1{\addto@par{rot={#1}}\@ifnextchar({\Cnodeput@iii}{\Cnodeput@iii(\z@,\z@)}}
\def\Cnodeput@iii(#1)#2{\pst@killglue
\@fixedradiustrue
\def\pst@nodehook{\Cnodeput@iv{#2}}\pst@makebox{\cput@iv{#1}}}
\def\Cnodeput@iv#1{\pst@newnode{#1}{11}{\pst@number{\wd\pst@hbox} 2 div \pst@number\pst@dima \pst@number\pst@dimb \pst@number\pslinewidth \psk@dimen .5 sub mul sub }{\tx@InitCnode}\global\let\pst@nodehook\relax}
\def\circlenode{\pst@object{circlenode}}
\def\circlenode@i#1{\pst@makebox{\circlenode@ii{#1}}}
\def\circlenode@ii#1{\begingroup
\pst@useboxpar
\setbox\pst@hbox=\hbox{\cnodeput@iv{#1}\pscirclebox@iii
\box\pst@hbox}\ifnodealign \psboxseptrue \fi
\ifpsboxsep \pscirclebox@sep \fi
\leavevmode
\ifnodealign\pst@nodealign\fi
\box\pst@hbox
\endgroup}
\def\Circlenode{\pst@object{Circlenode}}
\def\Circlenode@i#1{\pst@makebox{\Circlenode@ii{#1}}}
\def\Circlenode@ii#1{\begingroup
\pst@useboxpar
\pst@dima=\ht\pst@hbox
\advance\pst@dima\dp\pst@hbox
\divide\pst@dima\tw@
\pssetlength\pst@dimb\psk@radius
\setbox\pst@hbox=\hbox{\Cnodeput@iv{#1}\pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}\box\pst@hbox}\ifnodealign \psboxseptrue \fi
\ifpsboxsep \psCirclebox@sep \fi
\leavevmode
\ifnodealign\pst@nodealign\fi
\box\pst@hbox
\endgroup}
\def\tx@GetRnodePos{GetRnodePos }
\def\tx@InitRnode{InitRnode }
\def\rnode{\@ifnextchar[{\rnode@i}{\def\pst@par{}\rnode@ii}}
\def\rnode@i[#1]{\def\pst@par{ref=#1}\rnode@ii}
\def\rnode@ii#1{\pst@makebox{\rnode@iii\rnode@iv{#1}}}
\def\rnode@iii#1#2{\leavevmode
\begingroup
\pst@useboxpar
#1\if@star\pst@starbox\fi
\ifnodealign\lower\pst@dimb\fi
\hbox{\pst@newnode{#2}{16}{\pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}\pst@number{\wd\pst@hbox}\pst@number\pst@dima
\pst@number\pst@dimb}{\tx@InitRnode}\box\pst@hbox}\endgroup}
\def\rnode@iv{\pst@dima=\psk@xref\wd\pst@hbox
\ifx\psk@yref\relax
\pst@dimb=\z@
\else
\pst@dimb=\ht\pst@hbox
\advance\pst@dimb\dp\pst@hbox
\pst@dimb=\psk@yref\pst@dimb
\advance\pst@dimb-\dp\pst@hbox
\fi}
\def\psset@href#1{\pst@checknum{#1}\psk@href}
\psset@href{0}
\def\psset@vref#1{\def\psk@vref{#1}}
\psset@vref{.7ex}
\def\Rnode{\pst@object{Rnode}}
\def\Rnode@i#1{\pst@makebox{\rnode@iii\Rnode@ii{#1}}}
\def\Rnode@ii{\use@par
\pst@dima=\psk@href\wd\pst@hbox
\advance\pst@dima\wd\pst@hbox
\divide\pst@dima 2
\pssetlength\pst@dimb{\psk@vref}}
\def\tx@DiaNodePos{DiaNodePos }
\def\dianode{\pst@object{dianode}}
\def\dianode@i#1{\pst@makebox{\dianode@ii{#1}}}
\def\dianode@ii#1{\begingroup
\pst@useboxpar
\psdiabox@iii
\setbox\pst@hbox=\hbox{\pst@newnode{#1}{14}{}{/X \pst@number\pst@dima def
/Y \pst@number\pst@dimb def
/w \pst@number\pst@dimc 2 mul def
/h \pst@number\pst@dimd 2 mul def
/NodePos { \tx@DiaNodePos } def}\box\pst@hbox}\ifnodealign\psboxseptrue\fi
\ifpsboxsep\psdiabox@sep\fi
\leavevmode
\ifnodealign\lower\pst@dimb\fi
\box\pst@hbox
\endgroup}
\def\tx@TriNodePos{TriNodePos }
\def\tx@InitTriNode{InitTriNode }
\def\trinode{\pst@object{trinode}}
\def\trinode@i#1{\pst@makebox{\trinode@ii{#1}}}
\def\trinode@ii#1{\begingroup
\pst@useboxpar
\pstribox@iii
\setbox\pst@hbox=\hbox{\pst@newnode{#1}{14}{}{\pst@number\pst@dimc
\pst@number\pst@dimd
\ifodd\psk@trimode
exch
\pst@number\pst@dima
\else
\pst@number\pst@dimb
\fi
\psk@trimode
\pst@number{\wd\pst@hbox}\pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}\tx@InitTriNode}\box\pst@hbox}\ifnodealign\psboxseptrue\fi
\ifpsboxsep\pstribox@sep\fi
\leavevmode
\ifnodealign\lower\pst@tempa\fi
\box\pst@hbox
\endgroup}
\def\tx@OvalNodePos{OvalNodePos }
\def\ovalnode{\pst@object{ovalnode}}
\def\ovalnode@i#1{\pst@makebox{\ovalnode@ii{#1}}}
\def\ovalnode@ii#1{\begingroup
\pst@useboxpar
\psovalbox@iii
\setbox\pst@hbox=\hbox{\pst@newnode{#1}{14}{}{/X \pst@number\pst@dima def
/Y \pst@number\pst@dimb def
/w \pst@number\pst@dimc def
/h \pst@number\pst@dimd def
/NodePos { \tx@OvalNodePos } def}\unhbox\pst@hbox}\ifnodealign\psboxseptrue\fi
\ifpsboxsep\psovalbox@sep\fi
\leavevmode
\ifnodealign\lower\pst@dimb\fi
\box\pst@hbox
\endgroup}
\def\dotnode{\pst@object{dotnode}}
\def\dotnode@i{\@ifnextchar({\dotnode@ii}{\dotnode@ii(\z@,\z@)}}
\def\dotnode@ii(#1)#2{\leavevmode
\hbox{\use@par
\pst@@getcoor{#1}\pst@getdotsize
\pstree@nodehook
\ifnodealign
\pst@dima=\pst@dimg
\kern\pst@dima
\vrule width\z@ height \pst@dimh depth \pst@dimh
\fi
\pst@newnode{#2}{14}{}{\pst@coor
/Y ED /X ED
/w \pst@number\pst@dimg def
/h \pst@number\pst@dimh def
/NodePos { \tx@OvalNodePos } def}\psdot@ii(#1)\ifnodealign\kern\pst@dima\fi}\ignorespaces}
\def\psset@framesize#1{\pst@expandafter\psset@@framesize{#1} \@nil}
\def\psset@@framesize#1 #2\@nil{\pssetlength\pst@dimg{#1}\divide\pst@dimg2
\edef\psk@framewidth{\pst@number\pst@dimg}\ifx\@empty#2\@empty
\let\psk@frameheight\psk@framewidth
\else
\pssetlength\pst@dimg{#2}\divide\pst@dimg2
\edef\psk@frameheight{\pst@number\pst@dimg}\fi}
\psset@framesize{10pt}
\def\fnode{\pst@object{fnode}}
\def\fnode@i{\@ifnextchar({\fnode@ii}{\fnode@ii(\z@,\z@)}}
\def\fnode@ii(#1)#2{\leavevmode
\pst@killglue
\hbox{\use@par
\begin@ClosedObj
\ifnodealign
\kern\psk@framewidth\p@
\vrule width\z@ height \psk@frameheight\p@ depth \psk@frameheight\p@
\edef\pst@coor{0 0 }\else
\pst@@getcoor{#1}\fi
\pst@newnode{#2}{14}{}{\pst@coor
/Y ED /X ED
/d \psk@dimen .5 sub CLW mul neg def
/r \psk@framewidth d add def
/l r neg def
/u \psk@frameheight d add def
/d u neg def
/NodePos { \tx@GetRnodePos } def}\addto@pscode{/x2 \psk@framewidth CLW \psk@dimen mul sub def
/y2 \psk@frameheight CLW \psk@dimen mul sub def
\pst@coor 2 copy
y2 sub /y1 ED
x2 sub /x1 ED
y2 add /y2 ED
x2 add /x2 ED
\psk@cornersize
1 index 0 eq { pop pop \tx@Rect } { \tx@OvalFrame } ifelse}\def\pst@linetype{2}\showpointsfalse
\end@ClosedObj
\ifnodealign\kern\psk@framewidth\p@\fi}\ignorespaces}
\def\psset@nodesepA#1{\pst@getlength{#1}\psk@nodesepA
\def\psk@nodeseptypeA{0 }}
\def\psset@nodesepB#1{\pst@getlength{#1}\psk@nodesepB
\def\psk@nodeseptypeB{0 }}
\def\psset@nodesep#1{\pst@getlength{#1}\psk@nodesepA
\let\psk@nodesepB\psk@nodesepA
\def\psk@nodeseptypeA{0 }\def\psk@nodeseptypeB{0 }}
\psset@nodesep{0pt}
\def\psset@XnodesepA#1{\pst@getlength{#1}\psk@nodesepA
\def\psk@nodeseptypeA{1 }}
\def\psset@XnodesepB#1{\pst@getlength{#1}\psk@nodesepB
\def\psk@nodeseptypeB{1 }}
\def\psset@Xnodesep#1{\pst@getlength{#1}\psk@nodesepA
\let\psk@nodesepB\psk@nodesepA
\def\psk@nodeseptypeA{1 }\def\psk@nodeseptypeB{1 }}
\def\psset@YnodesepA#1{\pst@getlength{#1}\psk@nodesepA
\def\psk@nodeseptypeA{2 }}
\def\psset@YnodesepB#1{\pst@getlength{#1}\psk@nodesepB
\def\psk@nodeseptypeB{2 }}
\def\psset@Ynodesep#1{\pst@getlength{#1}\psk@nodesepA
\let\psk@nodesepB\psk@nodesepA
\def\psk@nodeseptypeA{2 }\def\psk@nodeseptypeB{2 }}
\def\psset@armA#1{\pst@getlength{#1}\psk@armA
\def\psk@armtypeA{0 }}
\def\psset@armB#1{\pst@getlength{#1}\psk@armB
\def\psk@armtypeB{0 }}
\def\psset@arm#1{\pst@getlength{#1}\psk@armA
\let\psk@armB\psk@armA
\def\psk@armtypeA{0 }\def\psk@armtypeB{0 }}
\psset@arm{10pt}
\def\psset@XarmA#1{\pst@getlength{#1}\psk@armA
\def\psk@armtypeA{1 }}
\def\psset@XarmB#1{\pst@getlength{#1}\psk@armB
\def\psk@armtypeB{1 }}
\def\psset@Xarm#1{\pst@getlength{#1}\psk@armA
\let\psk@armB\psk@armA
\def\psk@armtypeA{1 }\def\psk@armtypeB{1 }}
\def\psset@YarmA#1{\pst@getlength{#1}\psk@armA
\def\psk@armtypeA{2 }}
\def\psset@YarmB#1{\pst@getlength{#1}\psk@armB
\def\psk@armtypeB{2 }}
\def\psset@Yarm#1{\pst@getlength{#1}\psk@armA
\let\psk@armB\psk@armA
\def\psk@armtypeA{2 }\def\psk@armtypeB{2 }}
\def\psset@offsetA#1{\pst@getlength{#1}\psk@offsetA}
\def\psset@offsetB#1{\pst@getlength{#1}\psk@offsetB}
\def\psset@offset#1{\psset@offsetA{#1}\let\psk@offsetB\psk@offsetA}
\psset@offset{0pt}
\def\psset@angleA#1{\pst@getangle{#1}\psk@angleA}
\def\psset@angleB#1{\pst@getangle{#1}\psk@angleB}\def\psset@angle#1{\pst@getangle{#1}\psk@angleA
\let\psk@angleB\psk@angleA}
\psset@angle{0}
\def\psset@arcangleA#1{\pst@getangle{#1}\psk@arcangleA}
\def\psset@arcangleB#1{\pst@getangle{#1}\psk@arcangleB}\def\psset@arcangle#1{\pst@getangle{#1}\psk@arcangleA
\let\psk@arcangleB\psk@arcangleA}
\psset@arcangle{8}
\def\psset@ncurvA#1{\pst@checknum{#1}\psk@ncurvA}
\def\psset@ncurvB#1{\pst@checknum{#1}\psk@ncurvB}\def\psset@ncurv#1{\psset@ncurvA{#1}\let\psk@ncurvB\psk@ncurvA}
\psset@ncurv{.67}
\def\tx@GetCenter{GetCenter }
\def\tx@XYPos{XYPos }
\def\tx@GetEdge{GetEdge }
\def\tx@AddOffset{AddOffset }
\def\tx@GetEdgeA{GetEdgeA }
\def\tx@GetEdgeB{GetEdgeB }
\def\tx@GetArmA{GetArmA }
\def\tx@GetArmB{GetArmB }
\def\check@arrow#1#2{\check@@arrow#2-\@nil
\if@pst
\addto@par{arrows=#2}\def\next{#1}\else
\def\next{#1{#2}}\fi
\next}
\def\check@@arrow#1-#2\@nil{\ifx\@nil#2\@nil\@pstfalse\else\@psttrue\fi}
\def\tx@InitNC{InitNC }
\def\nc@object#1#2#3#4#5{\csname begin@#1Obj\endcsname
\showpointsfalse
\pst@getnode{#2}\pst@tempa
\pst@getnode{#3}\pst@tempb
\gdef\npos@default{#4 }\addto@pscode{/NCLW CLW def
\pst@nodedict
\psk@offsetA
\psk@offsetB neg
\psk@nodesepA
\psk@nodesepB
\psk@nodeseptypeA
\psk@nodeseptypeB
\pst@tempa
\pst@tempb
\tx@InitNC { #5 } if
end}\def\use@pscode{\pst@Verb{gsave \tx@STV newpath \pst@code\space grestore}\gdef\pst@code{}}\csname end@#1Obj\endcsname
\pst@shortput}
\def\npos@default{.5 }
\def\pc@object#1{\@ifnextchar({\pc@@object#1}{\pst@getarrows{\pc@@object#1}}}
\def\pc@@object#1(#2)(#3){\pnode(#2){@@A}\pnode(#3){@@B}#1{@@A}{@@B}}
\def\tx@LPutLine{LPutLine }
\def\tx@LPutLines{LPutLines }
\def\tx@BezierMidpoint{BezierMidpoint }
\def\tx@HPosBegin{HPosBegin }
\def\tx@HPosEnd{HPosEnd }
\def\tx@HPutLine{HPutLine }
\def\tx@HPutLines{HPutLines }
\def\tx@VPosBegin{VPosBegin }
\def\tx@VPosEnd{VPosEnd }
\def\tx@VPutLine{VPutLine }
\def\tx@VPutLines{VPutLines }
\def\tx@HPutCurve{HPutCurve }
\def\tx@NCCoor{NCCoor }
\def\tx@NCLine{NCLine }
\def\ncline{\pst@object{ncline}}
\def\ncline@i{\check@arrow{\ncline@ii}}
\def\ncline@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{\tx@NCLine}}
\def\pcline{\pst@object{pcline}}
\def\pcline@i{\pc@object\ncline@ii}
\def\ncLine{\pst@object{ncLine}}
\def\ncLine@i{\check@arrow{\ncLine@ii}}
\def\ncLine@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{\tx@NCLine /LPutPos { xB yB xA yA \tx@LPutLine } def}}
\def\tx@NCLines{NCLines }
\def\nclines{\pst@object{nclines}}
\def\nclines@i{\check@arrow\nclines@ii}
\def\nclines@ii#1#2{\begingroup
\use@par
\def\pst@aftercoors{\nclines@iii{#1}{#2}}\def\pst@coors{}\pst@@getcoors}
\def\nclines@iii#1#2{\nc@object{Open}{#1}{#2}{.5}{tx@Dict begin \psline@iii pop end
mark \pst@coors \tx@NCLines}\endgroup
\ignorespaces}
\def\tx@NCCurve{NCCurve }
\def\nccurve{\pst@object{nccurve}}
\def\nccurve@i{\check@arrow{\nccurve@ii}}
\def\nccurve@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{/AngleA \psk@angleA\space def /AngleB \psk@angleB\space def
\psk@ncurvB\space \psk@ncurvA\space
\tx@NCCurve}}
\def\pccurve{\pst@object{pccurve}}
\def\pccurve@i{\pc@object\nccurve@ii}
\def\ncarc{\pst@object{ncarc}}
\def\ncarc@i{\check@arrow{\ncarc@ii}}
\def\ncarc@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{yB yA sub xB xA sub \tx@Atan dup
\psk@arcangleA\space add /AngleA ED
\psk@arcangleB\space sub 180 add /AngleB ED
\psk@ncurvB\space \psk@ncurvA\space
\tx@NCCurve}}
\def\pcarc{\pst@object{pcarc}}
\def\pcarc@i{\pc@object\ncarc@ii}
\def\tx@NCAngles{NCAngles }
\def\ncangles{\pst@object{ncangles}}
\def\ncangles@i{\check@arrow{\ncangles@ii}}
\def\ncangles@ii#1#2{\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngles}}
\def\ncangles@iii{tx@Dict begin \psline@iii pop end
/AngleA \psk@angleA def
/AngleB \psk@angleB def
/ArmA \psk@armA def
/ArmB \psk@armB def
/ArmTypeA \psk@armtypeA def
/ArmTypeB \psk@armtypeB def }
\def\pcangles{\pst@object{pcangles}}
\def\pcangles@i{\pc@object\ncangles@ii}
\def\tx@NCAngle{NCAngle }
\def\ncangle{\pst@object{ncangle}}
\def\ncangle@i{\check@arrow{\ncangle@ii}}
\def\ncangle@ii#1#2{\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngle}}
\def\pcangle{\pst@object{pcangle}}
\def\pcangle@i{\pc@object\ncangle@ii}
\def\tx@NCBar{NCBar }
\def\ncbar{\pst@object{ncbar}}
\def\ncbar@i{\check@arrow{\ncbar@ii}}
\def\ncbar@ii#1#2{\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii /AngleB \psk@angleA def \tx@NCBar}}
\def\pcbar{\pst@object{pcbar}}
\def\pcbar@i{\pc@object\ncbar@ii}
\def\tx@NCDiag{NCDiag }
\def\ncdiag{\pst@object{ncdiag}}
\def\ncdiag@i{\check@arrow{\ncdiag@ii}}
\def\ncdiag@ii#1#2{\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCDiag}}
\def\pcdiag{\pst@object{pcdiag}}
\def\pcdiag@i{\pc@object\ncdiag@ii}
\def\tx@NCDiagg{NCDiagg }
\def\ncdiagg{\pst@object{ncdiagg}}
\def\ncdiagg@i{\check@arrow{\ncdiagg@ii}}
\def\ncdiagg@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{\ncangles@iii \tx@NCDiagg}}
\def\pcdiagg{\pst@object{pcdiagg}}
\def\pcdiagg@i{\pc@object\ncdiagg@ii}
\def\tx@NCLoop{NCLoop }
\def\psset@loopsize#1{\pst@getlength{#1}\psk@loopsize}
\psset@loopsize{1cm}
\def\ncloop{\pst@object{ncloop}}
\def\ncloop@i{\check@arrow{\ncloop@ii}}
\def\ncloop@ii#1#2{\nc@object{Open}{#1}{#2}{2.5}{\ncangles@iii /loopsize \psk@loopsize def \tx@NCLoop}}
\def\pcloop{\pst@object{pcloop}}
\def\pcloop@i{\pc@object\ncloop@ii}
\def\tx@NCCircle{NCCircle }
\def\nccircle{\pst@object{nccircle}}
\def\nccircle@i{\check@arrow{\nccircle@ii}}
\def\nccircle@ii#1#2{\pssetlength\pst@dima{#2}\nc@object{Open}{#1}{#1}{.5}{/AngleA \psk@angleA def
/r \pst@number\pst@dima def
\tx@NCCircle \psarc@v end}}
\def\tx@NCBox{NCBox }
\def\ncbox{\pst@object{ncbox}}
\def\ncbox@i{\check@arrow{\ncbox@ii}}
\def\ncbox@ii#1#2{\def\pst@linetype{2}\nc@object{Closed}{#1}{#2}{.5}{tx@Dict begin \psline@iii pop end
\psk@boxheight \psk@boxdepth
\tx@NCBox}}
\def\pcbox{\pst@object{pcbox}}
\def\pcbox@i{\pc@object\ncbox@ii}
\def\tx@NCArcBox{NCArcBox }
\def\psset@boxheight#1{\pst@getlength{#1}\psk@boxheight}
\def\psset@boxdepth#1{\pst@getlength{#1}\psk@boxdepth}
\def\psset@boxsize#1{\psset@boxheight{#1}\let\psk@boxdepth\psk@boxheight}
\psset@boxsize{.4cm}
\def\ncarcbox{\pst@object{ncarcbox}}
\def\ncarcbox@i{\check@arrow{\ncarcbox@ii}}
\def\ncarcbox@ii#1#2{\def\pst@linetype{1}\nc@object{Closed}{#1}{#2}{.5}{\psk@arcangleA \psk@boxheight \psk@boxdepth \pst@number\pslinearc
\tx@NCArcBox}}
\def\pcarcbox{\pst@object{pcarcbox}}
\def\pcarcbox@i{\pc@object\ncarcbox@ii}
\def\tx@Tfan{Tfan }
\begingroup
\catcode`\:=13
\gdef\pst@activerot{\def:{\string:}}
\endgroup
\def\psset@nrot#1{\begingroup
\pst@activerot
\pst@expandafter{\@ifnextchar:{\psset@@nrot}{\psset@@rot}}{#1}\@nil
\global\let\pst@tempg\psk@rot
\endgroup
\let\psk@nrot\pst@tempg}
\def\psset@@nrot:#1\@nil{\psset@@rot#1\@nil
\edef\psk@rot{NAngle \ifx\psk@rot\@empty\else\psk@rot add \fi}}
\psset@nrot{0}
\def\tx@LPutCoor{LPutCoor }
\def\tx@LPut{LPut }
\def\psset@npos#1{\def\pst@tempa{#1}\ifx\pst@tempa\@empty
\def\psk@npos{\npos@default}\else
\pst@checknum{#1}\psk@npos
\fi}
\psset@npos{}
\def\ncput{\pst@object{ncput}}
\def\ncput@i{\pst@killglue\pst@makebox{\ncput@ii}}
\def\ncput@ii{\begingroup
\use@par
\if@star\pst@starbox\fi
\pst@makesmall\pst@hbox
\pst@rotate\psk@nrot\pst@hbox
\ncput@iii
\endgroup
\pst@shortput}
\def\ncput@iii{\leavevmode
\hbox{\pst@Verb{\pst@nodedict
/t \psk@npos def
\tx@LPut
end
\tx@PutBegin}\box\pst@hbox
\pst@Verb{\tx@PutEnd}}}
\def\naput{\pst@object{naput}}
\def\naput@i{\pst@killglue\pst@makebox{\naput@ii{NAngle 90 add}}}
\def\naput@ii#1{\begingroup
\use@par
\if@star\pst@starbox\fi
\def\psk@refangle{#1 }\let\psk@rot\psk@nrot
\uput@vii
{exch pop add a \tx@PtoC h1 add exch w1 add exch }{tx@Dict /NCLW known { NCLW add } if }\ncput@iii
\endgroup
\pst@shortput}
\def\nbput{\pst@object{nbput}}
\def\nbput@i{\pst@killglue\pst@makebox{\naput@ii{NAngle 90 sub}}}
\def\psset@tpos#1{\pst@checknum{#1}\psk@tpos
\ifdim\psk@tpos \p@<\z@
\def\psk@tpos{.5}\@pstrickserr{Bad `tpos' value: `#1'. Must be 0<tpos<1}\@ehpa
\else
\ifdim\psk@tpos \p@>\p@
\def\psk@tpos{.5}\@pstrickserr{Bad `tpos' value: `#1'. Must be 0<tpos<1}\@ehpa
\fi
\fi}
\psset@tpos{.5}
\def\tvput{\pst@object{tvput}}
\def\tvput@i{\pst@makebox{\psput@tput{H}{1}}}
\def\tlput{\pst@object{tlput}}
\def\tlput@i{\pst@makebox{\psput@tput{H}{true}}}
\def\trput{\pst@object{trput}}
\def\trput@i{\pst@makebox{\psput@tput{H}{false}}}
\def\thput{\pst@object{thput}}
\def\thput@i{\pst@makebox{\psput@tput{V}{1}}}
\def\taput{\pst@object{taput}}
\def\taput@i{\pst@makebox{\psput@tput{V}{true}}}
\def\tbput{\pst@object{tbput}}
\def\tbput@i{\pst@makebox{\psput@tput{V}{false}}}
\def\tx@HPutAdjust{HPutAdjust }
\def\tx@VPutAdjust{VPutAdjust }
\def\psput@tput#1#2{\begingroup
\use@par
\pst@tputmakesmall
\leavevmode
\hbox{\pst@Verb{\pst@nodedict
/t \psk@tpos \pst@tposflip def
tx@NodeDict /HPutPos known
{ #1PutPos }
{ CP /Y ED /X ED /NAngle 0 def /NCLW 0 def }
ifelse
/Sin NAngle sin def
/Cos NAngle cos def
/s \pst@number\pslabelsep NCLW add def
/l \pst@number\pst@dima def
/r \pst@number\pst@dimb def
/h \pst@number\pst@dimc def
/d \pst@number\pst@dimd def
\ifnum1=0#2 \else
/flag #2 def
\csname tx@#1PutAdjust\endcsname
\fi
\tx@LPutCoor
end
\tx@PutBegin}\box\pst@hbox
\pst@Verb{\tx@PutEnd}}\endgroup
\pst@shortput}
\def\pst@tposflip{}
\def\pst@tputmakesmall{\pst@dima=\wd\pst@hbox
\divide\pst@dima 2
\pst@dimg=\psk@href\pst@dimg
\pst@dimb\pst@dima
\advance\pst@dima\pst@dimg \advance\pst@dimb-\pst@dimg \pst@dimd=\psk@vref\relax
\pst@dimc=\ht\pst@hbox
\advance\pst@dimc-\pst@dimd \advance\pst@dimd\dp\pst@hbox \setbox\pst@hbox=\hbox to\z@{\kern-\pst@dima\vbox to\z@{\vss\box\pst@hbox\vskip-\pst@dimd}\hss}}
\def\MakeShortNab#1#2{\def\pst@shortput@nab{\def\pst@tempg{\next}\ifx#1\next
      \let\pst@tempg\naput
    \else
      \ifx#2\next
        \let\pst@tempg\nbput
      \else
        \ifx\@sptoken\next
          \let\pst@tempg\pst@shortput
        \fi
      \fi
    \fi
    \pst@tempg}}
\MakeShortNab{^}{_}
\def\MakeShortTablr#1#2#3#4{\def\pst@shortput@tablr{\def\pst@tempg{\next}\ifx#1\next
      \let\pst@tempg\taput
    \else
      \ifx#2\next
        \let\pst@tempg\tbput
      \else
        \ifx#3\next
          \let\pst@tempg\tlput
        \else
          \ifx#4\next
            \let\pst@tempg\trput
          \else
            \ifx\@sptoken\next
              \let\pst@tempg\pst@shortput
            \fi
          \fi
        \fi
      \fi
    \fi
    \pst@tempg}}
\MakeShortTablr{^}{_}{<}{>}
\def\MakeShortTab#1#2{\def\pst@shortput@tab{\def\pst@tempg{\next}\ifx#1\next
      \def\pst@tempg{\@nameuse{t\ifodd\psk@treemode\ifpstreeflip b\else a\fi
          \else\ifpstreeflip r\else l\fi\fi put}}\else
      \ifx#2\next
        \def\pst@tempg{\@nameuse{t\ifodd\psk@treemode\ifpstreeflip a\else b\fi
            \else\ifpstreeflip l\else r\fi\fi put}}\else
        \ifx\@sptoken\next
          \let\pst@tempg\pst@shortput
        \fi
      \fi
    \fi
    \pst@tempg}}
\MakeShortTab{^}{_}
\def\psset@shortput#1{\def\pst@tempg{#1}\ifx\pst@tempg\@none
\let\pst@shortput\ignorespaces
\else
\@ifundefined{pst@shortput@#1}{\@pstrickserr{Bad short put: `#1'}\@ehpa}{\edef\pst@shortput{\noexpand\afterassignment\expandafter\noexpand
\csname pst@shortput@#1\endcsname\noexpand\let\noexpand\next}}\fi}
\psset@shortput{none}
\def\lput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\lput@i}{\lput@ii}}}
\def\lput@i[#1]{\addto@par{ref=#1}\lput@ii}
\def\lput@ii{\@ifnextchar({\lput@iv}{\lput@iii}}
\def\lput@iii#1{\addto@par{nrot=#1}\@ifnextchar({\lput@iv}{\ncput@i}}
\def\lput@iv(#1){\addto@par{npos=#1}\ncput@i}
\def\mput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\mput@i}{\ncput@i}}}
\def\mput@i[#1]{\addto@par{ref=#1}\ncput@i}
\def\Lput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Lput@ii}{\Lput@i}}}
\def\Lput@i#1{\addto@par{labelsep=#1}\Lput@ii}
\def\Lput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Lput@iv}{\Lput@iii}}
\def\Lput@iii#1{\addto@par{nrot={#1}}\@ifnextchar({\Lput@iv}{\Lput@v}}
\def\Lput@iv(#1){\addto@par{npos=#1}\Lput@v}
\def\Lput@v{\pst@killglue\pst@makebox{\Lput@vi}}
\def\Lput@vi{\begingroup
\use@par
\if@star\pst@starbox\fi
\Rput@vi
\pst@makesmall\pst@hbox
\pst@rotate\psk@nrot\pst@hbox
\ncput@iii
\endgroup
\pst@shortput}
\def\Mput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Mput@ii}{\Mput@i}}}
\def\Mput@i#1{\addto@par{labelsep=#1}\Mput@ii}
\def\Mput@ii[#1]{\addto@par{ref={#1}}\Lput@v}
\def\aput@#1{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\aput@i#1}{\aput@ii#1}}}
\def\aput@i#1[#2]{\addto@par{labelsep=#2}\aput@ii#1}
\def\aput@ii#1{\@ifnextchar({\aput@iv#1}{\aput@iii#1}}
\def\aput@iii#1#2{\addto@par{nrot=#2}\@ifnextchar({\aput@iv#1}{#1}}
\def\aput@iv#1(#2){\addto@par{npos=#2}#1}
\def\aput{\aput@\naput@i}
\def\bput{\aput@\nbput@i}
\def\Aput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Aput@i}{\naput@i}}}
\def\Aput@i[#1]{\addto@par{labelsep=#1}\naput@i}
\def\Bput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Bput@i}{\nbput@i}}}
\def\Bput@i[#1]{\addto@par{labelsep=#1}\nbput@i}
\def\node@coor#1;#2\@nil{\pst@getnode{#1}\pst@tempg
\edef\pst@coor{\pst@nodedict
tx@NodeDict \pst@tempg known
{ \pst@tempg load \tx@GetCenter }
{ 0 0 }
ifelse
end }}
\def\Node@coor[#1]#2;#3\@nil{\begingroup
\psset{#1}\@ifnextchar\bgroup{\Node@@@coor}{\Node@@coor}#2\@nil
\endgroup
\let\pst@coor\pst@tempg}
\def\Node@@coor#1\@nil{\pst@getnode{#1}\pst@tempg
\xdef\pst@tempg{\pst@nodedict
tx@NodeDict \pst@tempg known
{ \psk@nodesepA \psk@angleA
\pst@tempg load \psk@nodeseptypeA \tx@GetEdge
\psk@offsetA \psk@angleA \tx@AddOffset
\pst@tempg load \tx@GetCenter
3 -1 roll add 3 1 roll add exch }
{ CP }
ifelse
end }}\def\Node@@@coor#1{\pst@@getcoor{#1}\def\psk@angleA{\pst@tempg load \tx@GetCenter \pst@coor
3 -1 roll sub 3 1 roll sub neg \tx@Atan}\Node@@coor}
\def\nput{\pst@object{nput}}
\def\nput@i#1#2{\pst@killglue\pst@makebox{\nput@ii{#1}{#2}}}
\def\nput@ii#1#2{\begingroup
\use@par
\psset@refangle{#1}\let\psk@angleA\psk@refangle
\edef\psk@nodesepA{\pst@number\pslabelsep}\def\psk@nodeseptypeA{0 }\pslabelsep\z@
\uput@vi
\Node@@coor#2\@nil
\let\pst@coor\pst@tempg
\leavevmode
\psput@special\pst@hbox
\endgroup
\ignorespaces}
\newcount\psrow
\newcount\pscol
\newcount\psmatrixcnt
\newskip\psrowsep
\newskip\pscolsep
\def\psset@colsep#1{\pssetlength\pscolsep{#1}}
\def\psset@rowsep#1{\pssetlength\psrowsep{#1}}
\psset@colsep{1.5cm}
\psset@rowsep{1.5cm}
\newif\ifpsmatrix
\ifx\mscount\@undefined\let\mscount\@multicnt\fi
\def\psmatrix{\begingroup
{\ifnum0=`}\fi \@ifnextchar[{\psmatrix@i}{\ifnum0=`{\fi}{}\psmatrix@ii}}
\def\psmatrix@i[#1]{\ifnum0=`{\fi}{}\psset{#1}\psmatrix@ii}
\def\psmatrix@ii{\KillGlue
\edef\psm@beginmath{\ifmmode$\m@th\ifinner\textstyle\else\displaystyle\fi\fi}\edef\psm@endmath{\ifmmode$\fi}\let\\\psm@cr
\advance\psmatrixcnt 1
\def\psm@thenode{M-\the\psmatrixcnt-\the\psrow-\the\pscol}\tabskip\z@
\psrow1
\pscol\z@
\psset@shortput{tablr}\leavevmode
\vbox\bgroup\halign\bgroup&\begingroup
\global\advance\pscol 1
\csname psrowhook\romannumeral\psrow\endcsname
\csname pscolhook\romannumeral\pscol\endcsname
\psm@beginnode##\psm@endnode\endgroup
\cr}
\def\endpsmatrix{\crcr\egroup\unskip\egroup
\endgroup}
\def\psm@cr{{\ifnum0=`}\fi\@ifnextchar[{\psm@@cr}{\psm@@@cr{}}}
\def\psm@@cr[#1]{\psm@@@cr{\vskip#1\relax}}
\def\psm@@@cr#1{\ifnum0=`{\fi}{}\cr
\noalign{\global\advance\psrow 1
\global\pscol\z@
\vskip\psrowsep
#1}}
\def\psm@beginnode{\@ifnextchar\psm@endnode
{\let\psm@endnode@i\relax\setbox\pst@hbox=\hbox{}}{\pst@object{psm@beginnode}}}
\def\psm@beginnode@i{\setbox\pst@hbox=\hbox\bgroup
\psm@beginmath
\begingroup
\ignorespaces}
\def\psm@endnode@i{\unskip
\endgroup
\psm@endmath
\egroup
\use@par
\@psttrue}
\def\psm@endnode{\@pstfalse
\psm@endnode@i
\ifnum\pscol>1 \hskip\pscolsep \fi
\psk@mnodesize
\hfil
\nodealigntrue
\if@pst
\csname mnode@\psk@mnode\endcsname
\else
\csname mnode@\psk@emnode\endcsname
\fi
\psk@mcol
\psk@@mnodesize}
\def\psspan#1{\global\mscount#1\relax\pstloop\ifnum\mscount>\@ne\sp@n\repeat}
\def\pstloop#1\repeat{\gdef\pstiterate{#1\relax\expandafter\pstiterate\fi}\pstiterate
\let\pstiterate\relax}
\def\psset@name#1{\pst@getnode{#1}\psk@name}
\let\psk@name\relax
\def\psset@mcol#1{\ifx r#1\relax
\let\psk@mcol\relax
\else
\ifx l#1\relax
\let\psk@mcol\hfill
\else
\let\psk@mcol\hfil
\fi
\fi}
\psset@mcol{c}
\def\psset@mnodesize#1{\pssetlength\pst@dimg{#1}\ifdim\pst@dimg<\z@
\let\psk@mnodesize\relax
\let\psk@@mnodesize\relax
\else
\edef\psk@mnodesize{\noexpand\hbox to\number\pst@dimg sp\noexpand\bgroup}\let\psk@@mnodesize\egroup
\fi}
\psset@mnodesize{-1pt}
\def\mnode@R{\rnode@iii\Rnode@ii{\psm@thenode}}
\def\mnode@r{\rnode@iii\rnode@iv{\psm@thenode}}
\def\mnode@oval{\ovalnode@ii{\psm@thenode}}
\def\mnode@tri{\trinode@ii{\psm@thenode}}
\def\mnode@dia{\dianode@ii{\psm@thenode}}
\def\mnode@C{{\nodealigntrue\cnode@ii(\z@,\z@){\psk@radius}{\psm@thenode}}}
\def\mnode@f{{\nodealigntrue\fnode@ii(\z@,\z@){\psm@thenode}}}
\def\mnode@circle{\circlenode@ii{\psm@thenode}}
\def\mnode@p{\pnode(\z@,\z@){\psm@thenode}}
\def\mnode@dot{\dotnode@ii(\z@,\z@){\psm@thenode}}
\def\mnode@none{\box\pst@hbox}
\def\psset@mnode#1{\@ifundefined{mnode@#1}{\@pstrickserr{\string\psmatrix\space node `#1' not defined.}\@ehpa}{\edef\psk@mnode{#1}}}
\def\psset@emnode#1{\@ifundefined{mnode@#1}{\@pstrickserr{\string\psmatrix\space node `#1' not defined.}\@ehpa}{\edef\psk@emnode{#1}}}
\psset@mnode{R}
\psset@emnode{none}
\def\nccoil{\pst@object{nccoil}}
\def\nccoil@i{\check@arrow{\nccoil@ii}}
\def\nccoil@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{\tx@NCCoor
tx@Dict begin
4 2 roll
\psk@coilwidth \pscoilheight
\psk@coilarmA \psk@coilarmB
\psk@coilaspect \psk@coilinc
\pst@coildict \tx@Coil end
end}}
\def\nczigzag{\pst@object{nczigzag}}
\def\nczigzag@i{\check@arrow{\nczigzag@ii}}
\def\nczigzag@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{\tx@NCCoor
tx@Dict begin
4 2 roll
\pscoilheight
\psk@coilwidth
\psk@coilarmA
\psk@coilarmB
\pst@coildict \tx@ZigZag end
\psline@iii
\tx@Line
end}}
\catcode`\@=\TheAtCode\relax
%
 \fi
\ifx\PSTthreeDLoaded\endinput\else


\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
\ifx\PSTXKeyLoaded\endinput\else\csname PSTXKeyLoaded\endcsname
\let\PSTXKeyLoaded\endinput
\edef\PSTXKeyCatcodes{\catcode`\noexpand\@\the\catcode`\@\relax
  \let\noexpand\PSTXKeyCatcodes\relax
}
\catcode`\@=11\relax
\ifx\ProvidesFile\@undefined
  \message{2005/11/25 v1.6 PSTricks specialization of xkeyval (HA)}
  \ifx\XKeyValLoaded\endinput\else\csname XKeyValLoaded\endcsname
\let\XKeyValLoaded\endinput
\edef\XKVcatcodes{\catcode`\noexpand\@\the\catcode`\@\relax
  \catcode`\noexpand\=\the\catcode`\=\relax
  \catcode`\noexpand\,\the\catcode`\,\relax
  \catcode`\noexpand\:\the\catcode`\:\relax
  \let\noexpand\XKVcatcodes\relax
}
\catcode`\@11\relax
\catcode`\=12\relax
\catcode`\,12\relax
\catcode`\:12\relax
\newtoks\XKV@toks
\newtoks\XKV@tempa@toks
\newcount\XKV@depth
\newif\ifXKV@st
\newif\ifXKV@sg
\newif\ifXKV@pl
\newif\ifXKV@knf
\newif\ifXKV@rkv
\newif\ifXKV@inpox
\newif\ifXKV@preset
\let\XKV@rm\@empty
\ifx\ProvidesFile\@undefined
  \message{2008/08/13 v2.6a key=value parser (HA)}
  \message{2005/02/22 v1.1 xkeyval TeX header (HA)}
\def\@nnil{\@nil}
\def\@empty{}
\def\newif#1{\count@\escapechar \escapechar\m@ne
    \let#1\iffalse
    \@if#1\iftrue
    \@if#1\iffalse
  \escapechar\count@}
\def\@if#1#2{\expandafter\def\csname\expandafter\@gobbletwo\string#1\expandafter\@gobbletwo\string#2\endcsname
                       {\let#1#2}}
\long\def\@ifnextchar#1#2#3{\let\reserved@d=#1\def\reserved@a{#2}\def\reserved@b{#3}\futurelet\@let@token\@ifnch}
\def\@ifnch{\ifx\@let@token\@sptoken
    \let\reserved@c\@xifnch
  \else
    \ifx\@let@token\reserved@d
      \let\reserved@c\reserved@a
    \else
      \let\reserved@c\reserved@b
    \fi
  \fi
  \reserved@c}
\def\:{\let\@sptoken= } \:  \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch}
\let\kernel@ifnextchar\@ifnextchar
\long\def\@testopt#1#2{\kernel@ifnextchar[{#1}{#1[{#2}]}}
\long\def\@firstofone#1{#1}
\long\def \@gobble #1{}
\long\def \@gobbletwo #1#2{}
\def\@expandtwoargs#1#2#3{\edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a}
\edef\@backslashchar{\expandafter\@gobble\string\\}
\newif\ifin@
\def\in@#1#2{\def\in@@##1#1##2##3\in@@{\ifx\in@##2\in@false\else\in@true\fi}\in@@#2#1\in@\in@@}
\def\strip@prefix#1>{}
\def \@onelevel@sanitize #1{\edef #1{\expandafter\strip@prefix
           \meaning #1}}
%
 \else
  \ProvidesFile{xkeyval.tex}[2008/08/13 v2.6a key=value parser (HA)]
  \@addtofilelist{xkeyval.tex}
\fi
\long\def\@firstoftwo#1#2{#1}
\long\def\@secondoftwo#1#2{#2}
\long\def\XKV@afterfi#1\fi{\fi#1}
\long\def\XKV@afterelsefi#1\else#2\fi{\fi#1}
\ifx\ifcsname\@undefined\XKV@afterelsefi
  \def\XKV@ifundefined#1{\begingroup\expandafter\expandafter\expandafter\endgroup
      \expandafter\ifx\csname#1\endcsname\relax
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }
\else
  \def\XKV@ifundefined#1{\ifcsname#1\endcsname
      \expandafter\@secondoftwo
    \else
      \expandafter\@firstoftwo
    \fi
  }
\fi
\XKV@ifundefined{ver@keyval.sty}{
  \def\XKV@tempa#1{\long\def\KV@@sp@def##1##2{\futurelet\XKV@resa\KV@@sp@d##2\@nil\@nil#1\@nil\relax##1}\long\def\KV@@sp@d{\ifx\XKV@resa\@sptoken
    \expandafter\KV@@sp@b
  \else
    \expandafter\KV@@sp@b\expandafter#1\fi}\long\def\KV@@sp@b#1##1 \@nil{\KV@@sp@c##1}}
\XKV@tempa{ }
\long\def\KV@@sp@c#1\@nil#2\relax#3{\XKV@toks{#1}\edef#3{\the\XKV@toks}}
\long\def\KV@do#1,{\ifx\relax#1\@empty\else
  \KV@split#1==\relax
  \expandafter\KV@do\fi}
\long\def\KV@split#1=#2=#3\relax{\KV@@sp@def\XKV@tempa{#1}\ifx\XKV@tempa\@empty\else
    \expandafter\let\expandafter\XKV@tempc
      \csname\KV@prefix\XKV@tempa\endcsname
    \ifx\XKV@tempc\relax
      \XKV@err{`\XKV@tempa' undefined}\else
      \ifx\@empty#3\@empty
        \KV@default
      \else
        \KV@@sp@def\XKV@tempb{#2}\expandafter\XKV@tempc\expandafter{\XKV@tempb}\relax
      \fi
    \fi
  \fi}
\def\KV@default{\expandafter\let\expandafter\XKV@tempb
    \csname\KV@prefix\XKV@tempa @default\endcsname
  \ifx\XKV@tempb\relax
    \XKV@err{No value specified for key `\XKV@tempa'}\else
    \XKV@tempb\relax
  \fi}
\def\KV@def#1#2[#3]{\long\@namedef{KV@#1@#2@default\expandafter}\expandafter
    {\csname KV@#1@#2\endcsname{#3}}\long\@namedef{KV@#1@#2}##1}
%
   \expandafter\def\csname ver@keyval.sty\endcsname{1999/03/16}
}{}
\long\def\@ifnextcharacter#1#2#3{\@ifnextchar\bgroup
  {\@ifnextchar{#1}{#2}{#3}}{\@ifncharacter{#1}{#2}{#3}}}
\long\def\@ifncharacter#1#2#3#4{\if\string#1\string#4\expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {#2}{#3}#4}
\long\def\XKV@for@n#1#2#3{\XKV@tempa@toks{#1}\edef#2{\the\XKV@tempa@toks}\ifx#2\@empty
    \XKV@for@break
  \else
    \expandafter\XKV@f@r
  \fi
  #2{#3}#1,\@nil,}
\long\def\XKV@f@r#1#2#3,{\XKV@tempa@toks{#3}\edef#1{\the\XKV@tempa@toks}\ifx#1\@nnil
    \expandafter\@gobbletwo
  \else
    #2\expandafter\XKV@f@r
  \fi
  #1{#2}}
\long\def\XKV@for@break #1\@nil,{\fi}
\long\def\XKV@for@o#1{\expandafter\XKV@for@n\expandafter{#1}}
\long\def\XKV@for@en#1#2#3{\XKV@f@r#2{#3}#1,\@nil,}
\long\def\XKV@for@eo#1#2#3{\def#2{\XKV@f@r#2{#3}}\expandafter#2#1,\@nil,}
\long\def\XKV@whilist#1#2#3\fi#4{#3\expandafter\XKV@wh@list#1,\@nil,\@nil\@@#2#3\fi{#4}{}\fi
}
\long\def\XKV@wh@list#1,#2\@@#3#4\fi#5#6{\def#3{#1}\ifx#3\@nnil
    \def#3{#6}\expandafter\XKV@wh@l@st
  \else
    #4#5\expandafter\expandafter\expandafter\XKV@wh@list
    \else
      \def#3{#6}\expandafter\expandafter\expandafter\XKV@wh@l@st
    \fi
  \fi
  #2\@@#3#4\fi{#5}{#1}}
\long\def\XKV@wh@l@st#1\@@#2#3\fi#4#5{}
\def\XKV@addtomacro@n#1#2{\XKV@tempa@toks\expandafter{#1#2}\edef#1{\the\XKV@tempa@toks}}
\def\XKV@addtomacro@o#1#2{\expandafter\XKV@addtomacro@n\expandafter#1\expandafter{#2}}
\def\XKV@addtolist@n#1#2{\ifx#1\@empty
    \XKV@addtomacro@n#1{#2}\else
    \XKV@addtomacro@n#1{,#2}\fi
}
\def\XKV@addtolist@o#1#2{\ifx#1\@empty
    \XKV@addtomacro@o#1#2\else
    \XKV@addtomacro@o#1{\expandafter,#2}\fi
}
\def\XKV@addtolist@x#1#2{\edef#1{#1\ifx#1\@empty\else,\fi#2}}
\def\@selective@sanitize{\@testopt\@s@lective@sanitize\@M}
\def\@s@lective@sanitize[#1]#2#3{\begingroup
    \count@#1\relax\advance\count@\@ne
    \XKV@toks\expandafter{#3}\def#3{#2}\@onelevel@sanitize#3\edef#3{{#3}{\the\XKV@toks}}\expandafter\@s@l@ctive@sanitize\expandafter#3#3\expandafter\XKV@tempa@toks\expandafter{#3}\expandafter\endgroup\expandafter\toks@\expandafter{\the\XKV@tempa@toks}\edef#3{\the\toks@}}
\def\@s@l@ctive@sanitize#1#2#3{\def\@i{\futurelet\@@tok\@ii}\def\@ii{\expandafter\@iii\meaning\@@tok\relax
    \ifx\@@tok\@s@l@ctive@sanitize
      \let\@@cmd\@gobble
    \else
      \ifx\@@tok\@sptoken
        \XKV@toks\expandafter{#1}\edef#1{\the\XKV@toks\space}\def\@@cmd{\afterassignment\@i\let\@@tok= }\else
        \let\@@cmd\@iv
      \fi
    \fi
    \@@cmd
  }\def\@iii##1##2\relax{\if##1\@backslashchar\let\@@tok\relax\fi}\def\@iv##1{\toks@\expandafter{#1}\XKV@toks{##1}\ifx\@@tok\bgroup
      \advance\count@\m@ne
      \ifnum\count@>\z@
        \begingroup
          \def#1{\expandafter\@s@l@ctive@sanitize
            \csname\string#1\endcsname{#2}}\expandafter#1\expandafter{\the\XKV@toks}\XKV@toks\expandafter\expandafter\expandafter
            {\csname\string#1\endcsname}\edef#1{\noexpand\XKV@toks{\the\XKV@toks}}\expandafter\endgroup#1\fi
      \edef#1{\the\toks@{\the\XKV@toks}}\advance\count@\@ne
      \let\@@cmd\@i
    \else
      \edef#1{\expandafter\string\the\XKV@toks}\expandafter\in@\expandafter{#1}{#2}\edef#1{\the\toks@\ifin@#1\else
              \ifx\@@tok\@sptoken\space\else\the\XKV@toks\fi\fi}\edef\@@cmd{\noexpand\@i\ifx\@@tok\@sptoken\the\XKV@toks\fi}\fi
    \@@cmd
  }\let#1\@empty\@i#3\@s@l@ctive@sanitize
}
\def\XKV@checksanitizea#1#2{\XKV@ch@cksanitize{#1}#2=\ifin@\else\XKV@ch@cksanitize{#1}#2,\fi
  \ifin@\@selective@sanitize[0]{,=}#2\fi
}
\def\XKV@checksanitizeb#1#2{\XKV@ch@cksanitize{#1}#2,\ifin@\@selective@sanitize[0],#2\fi
}
\def\XKV@ch@cksanitize#1#2#3{\XKV@tempa@toks{#1}\edef#2{\the\XKV@tempa@toks}\@onelevel@sanitize#2\@expandtwoargs\in@#3{#2}\ifin@
    \def#2##1#3##2\@nil{\XKV@tempa@toks{##2}\edef#2{\the\XKV@tempa@toks}\ifx#2\@empty\else\in@false\fi
    }#2#1#3\@nil
  \fi
  \XKV@tempa@toks{#1}\edef#2{\the\XKV@tempa@toks}}
\def\XKV@sp@deflist#1#2{\let#1\@empty
  \XKV@for@n{#2}\XKV@resa{\expandafter\KV@@sp@def\expandafter\XKV@resa\expandafter{\XKV@resa}\XKV@addtomacro@o#1{\expandafter,\XKV@resa}}\ifx#1\@empty\else
    \def\XKV@resa,##1\@nil{\def#1{##1}}\expandafter\XKV@resa#1\@nil
  \fi
}
\def\XKV@merge#1#2#3{\XKV@checksanitizea{#2}\XKV@tempa
  \XKV@for@o\XKV@tempa\XKV@tempa{\XKV@pltrue
    #3\XKV@tempa\XKV@tempb
    \let\XKV@tempc#1\let#1\@empty
    \XKV@for@o\XKV@tempc\XKV@tempc{#3\XKV@tempc\XKV@tempd
      \ifx\XKV@tempb\XKV@tempd
        \XKV@plfalse
        \XKV@addtolist@o#1\XKV@tempa
      \else
        \XKV@addtolist@o#1\XKV@tempc
      \fi
    }\ifXKV@pl\XKV@addtolist@o#1\XKV@tempa\fi
  }\ifXKV@st\global\let#1#1\fi
}
\def\XKV@delete#1#2#3{\XKV@checksanitizeb{#2}\XKV@tempa
  \let\XKV@tempb#1\let#1\@empty
  \XKV@for@o\XKV@tempb\XKV@tempb{#3\XKV@tempb\XKV@tempc
    \@expandtwoargs\in@{,\XKV@tempc,}{,\XKV@tempa,}\ifin@\else\XKV@addtolist@o#1\XKV@tempb\fi
  }\ifXKV@st\global\let#1#1\fi
}
\def\XKV@warn#1{\message{xkeyval warning: #1}}
\def\XKV@err#1{\errmessage{xkeyval error: #1}}
\def\KV@errx{\XKV@err}
\let\KV@err\KV@errx
\def\XKV@ifstar#1{\@ifnextcharacter*{\@firstoftwo{#1}}}
\def\XKV@ifplus#1{\@ifnextcharacter+{\@firstoftwo{#1}}}
\def\XKV@makepf#1{\KV@@sp@def\XKV@prefix{#1}\def\XKV@resa{XKV}\ifx\XKV@prefix\XKV@resa
    \XKV@err{`XKV' prefix is not allowed}\let\XKV@prefix\@empty
  \else
    \edef\XKV@prefix{\ifx\XKV@prefix\@empty\else\XKV@prefix @\fi}\fi
}
\def\XKV@makehd#1{\expandafter\KV@@sp@def\expandafter\XKV@header\expandafter{#1}\edef\XKV@header{\XKV@prefix\ifx\XKV@header\@empty\else\XKV@header @\fi
  }}
\def\XKV@srstate#1#2{\ifx\@empty#2\@empty\advance\XKV@depth\@ne\fi
  \XKV@for@n{XKV@prefix,XKV@fams,XKV@tkey,XKV@na,ifXKV@st,ifXKV@pl,ifXKV@knf}\XKV@resa{\expandafter\let\csname\XKV@resa#1\expandafter
      \endcsname\csname\XKV@resa#2\endcsname
  }\ifx\@empty#1\@empty\advance\XKV@depth\m@ne\fi
}
\def\XKV@testopta#1{\XKV@ifstar{\XKV@sttrue\XKV@t@stopta{#1}}{\XKV@stfalse\XKV@t@stopta{#1}}}
\def\XKV@t@stopta#1{\XKV@ifplus{\XKV@pltrue#1}{\XKV@plfalse#1}}
\def\XKV@testoptb#1{\@testopt{\XKV@t@stoptb#1}{KV}}
\def\XKV@t@stoptb#1[#2]#3{\XKV@makepf{#2}\XKV@makehd{#3}\KV@@sp@def\XKV@tfam{#3}#1}
\def\XKV@testoptc#1{\@testopt{\XKV@t@stoptc#1}{KV}}
\def\XKV@t@stoptc#1[#2]#3{\XKV@makepf{#2}\XKV@checksanitizeb{#3}\XKV@fams
  \expandafter\XKV@sp@deflist\expandafter
    \XKV@fams\expandafter{\XKV@fams}\@testopt#1{}}
\def\XKV@testoptd#1#2{\XKV@testoptb{\edef\XKV@tempa{#2\XKV@header}\def\XKV@tempb{\@testopt{\XKV@t@stoptd#1}}\expandafter\XKV@tempb\expandafter{\XKV@tempa}}}
\def\XKV@t@stoptd#1[#2]#3{\@ifnextchar[{\XKV@sttrue#1{#2}{#3}}{\XKV@stfalse#1{#2}{#3}[]}}
\def\XKV@ifcmd#1#2#3{\def\XKV@@ifcmd##1#2##2##3\@nil##4{\def##4{##2}\ifx##4\@nnil
      \def##4{##1}\expandafter\@secondoftwo
    \else
      \expandafter\@firstoftwo
    \fi
  }\XKV@@ifcmd#1#2{\@nil}\@nil#3}
\def\XKV@getkeyname#1#2{\expandafter\XKV@g@tkeyname#1=\@nil#2}
\def\XKV@g@tkeyname#1=#2\@nil#3{\XKV@ifcmd{#1}\savevalue#3{\XKV@rkvtrue\XKV@sgfalse}{\XKV@ifcmd{#1}\gsavevalue#3{\XKV@rkvtrue\XKV@sgtrue}{\XKV@rkvfalse\XKV@sgfalse}}}
\def\XKV@getsg#1#2{\expandafter\XKV@ifcmd\expandafter{#1}\global#2\XKV@sgtrue\XKV@sgfalse
}
\def\XKV@define@default#1#2{\expandafter\def\csname\XKV@header#1@default\expandafter
    \endcsname\expandafter{\csname\XKV@header#1\endcsname{#2}}}
\def\define@key{\XKV@testoptb\XKV@define@key}
\def\XKV@define@key#1{\@ifnextchar[{\XKV@d@fine@k@y{#1}}{\expandafter\def\csname\XKV@header#1\endcsname####1}}
\def\XKV@d@fine@k@y#1[#2]{\XKV@define@default{#1}{#2}\expandafter\def\csname\XKV@header#1\endcsname##1}
\def\define@cmdkey{\XKV@testoptd\XKV@define@cmdkey{cmd}}
\def\XKV@define@cmdkey#1#2[#3]#4{\ifXKV@st\XKV@define@default{#2}{#3}\fi
  \def\XKV@tempa{\expandafter\def\csname\XKV@header#2\endcsname####1}\begingroup\expandafter\endgroup\expandafter\XKV@tempa\expandafter
    {\expandafter\def\csname#1#2\endcsname{##1}#4}}
\def\define@cmdkeys{\XKV@testoptd\XKV@define@cmdkeys{cmd}}
\def\XKV@define@cmdkeys#1#2[#3]{\XKV@sp@deflist\XKV@tempa{#2}\XKV@for@o\XKV@tempa\XKV@tempa{\edef\XKV@tempa{\noexpand\XKV@define@cmdkey{#1}{\XKV@tempa}}\XKV@tempa[#3]{}}}
\def\define@choicekey{\XKV@testopta{\XKV@testoptb\XKV@define@choicekey}}
\def\XKV@define@choicekey#1{\@testopt{\XKV@d@fine@choicekey{#1}}{}}
\def\XKV@d@fine@choicekey#1[#2]#3{\toks@{#2}\XKV@sp@deflist\XKV@tempa{#3}\XKV@toks\expandafter{\XKV@tempa}\@ifnextchar[{\XKV@d@fine@ch@icekey{#1}}{\XKV@d@fine@ch@ic@key{#1}}}
\def\XKV@d@fine@ch@icekey#1[#2]{\XKV@define@default{#1}{#2}\XKV@d@fine@ch@ic@key{#1}}
\def\XKV@d@fine@ch@ic@key#1{\ifXKV@pl\XKV@afterelsefi
    \expandafter\XKV@d@f@ne@ch@ic@k@y
  \else\XKV@afterfi
    \expandafter\XKV@d@f@ne@ch@ic@key
  \fi
  \csname\XKV@header#1\endcsname
}
\def\XKV@d@f@ne@ch@ic@key#1#2{\XKV@d@f@n@@ch@ic@k@y#1{{#2}}}
\def\XKV@d@f@ne@ch@ic@k@y#1#2#3{\XKV@d@f@n@@ch@ic@k@y#1{{#2}{#3}}}
\def\XKV@d@f@n@@ch@ic@k@y#1#2{\edef#1##1{\ifXKV@st\noexpand\XKV@sttrue\else\noexpand\XKV@stfalse\fi
    \ifXKV@pl\noexpand\XKV@pltrue\else\noexpand\XKV@plfalse\fi
    \noexpand\XKV@checkchoice[\the\toks@]{##1}{\the\XKV@toks}}\def\XKV@tempa{\def#1####1}\expandafter\XKV@tempa\expandafter{#1{##1}#2}}
\def\define@boolkey{\XKV@t@stopta{\XKV@testoptd\XKV@define@boolkey{}}}
\def\XKV@define@boolkey#1#2[#3]{\ifXKV@pl\XKV@afterelsefi
    \expandafter\XKV@d@f@ne@boolkey
  \else\XKV@afterfi
    \expandafter\XKV@d@fine@boolkey
  \fi
  \csname\XKV@header#2\endcsname{#2}{#1#2}{#3}}
\def\XKV@d@fine@boolkey#1#2#3#4#5{\XKV@d@f@ne@b@olkey#1{#2}{#3}{#4}{{\csname#3\XKV@resa\endcsname#5}}}
\def\XKV@d@f@ne@boolkey#1#2#3#4#5#6{\XKV@d@f@ne@b@olkey#1{#2}{#3}{#4}{{\csname#3\XKV@resa\endcsname#5}{#6}}}
\def\XKV@d@f@ne@b@olkey#1#2#3#4#5{\expandafter\newif\csname if#3\endcsname
  \ifXKV@st\XKV@define@default{#2}{#4}\fi
  \ifXKV@pl
    \def#1##1{\XKV@pltrue\XKV@sttrue
      \XKV@checkchoice[\XKV@resa]{##1}{true,false}#5}\else
    \def#1##1{\XKV@plfalse\XKV@sttrue
      \XKV@checkchoice[\XKV@resa]{##1}{true,false}#5}\fi
}
\def\define@boolkeys{\XKV@plfalse\XKV@testoptd\XKV@define@boolkeys{}}
\def\XKV@define@boolkeys#1#2[#3]{\XKV@sp@deflist\XKV@tempa{#2}\XKV@for@o\XKV@tempa\XKV@tempa{\expandafter\XKV@d@fine@boolkeys\expandafter{\XKV@tempa}{#1}{#3}}}
\def\XKV@d@fine@boolkeys#1#2#3{\expandafter\XKV@d@f@ne@b@olkey\csname\XKV@header#1\endcsname
    {#1}{#2#1}{#3}{{\csname#2#1\XKV@resa\endcsname}}}
\def\XKV@cc{\XKV@testopta{\@testopt\XKV@checkchoice{}}}
\def\XKV@checkchoice[#1]#2#3{\def\XKV@tempa{#1}\ifXKV@st\lowercase{\fi
  \ifx\XKV@tempa\@empty
    \def\XKV@tempa{\XKV@ch@ckch@ice\@nil{#2}{#3}}\else
    \def\XKV@tempa{\XKV@ch@ckchoice#1\@nil{#2}{#3}}\fi
  \ifXKV@st}\fi\XKV@tempa
}
\def\XKV@ch@ckchoice#1#2\@nil#3#4{\def\XKV@tempa{#2}\ifx\XKV@tempa\@empty\XKV@afterelsefi
    \XKV@ch@ckch@ice#1{#3}{#4}\else\XKV@afterfi
    \XKV@@ch@ckchoice#1#2{#3}{#4}\fi
}
\def\XKV@ch@ckch@ice#1#2#3{\def\XKV@tempa{#1}\ifx\XKV@tempa\@nnil\let\XKV@tempa\@empty\else
    \def\XKV@tempa{\def#1{#2}}\fi
  \in@{,#2,}{,#3,}\ifin@
    \ifXKV@pl
      \XKV@addtomacro@n\XKV@tempa\@firstoftwo
    \else
      \XKV@addtomacro@n\XKV@tempa\@firstofone
    \fi
  \else
    \ifXKV@pl
      \XKV@addtomacro@n\XKV@tempa\@secondoftwo
    \else
      \XKV@toks{#2}\XKV@err{value `\the\XKV@toks' is not allowed}\XKV@addtomacro@n\XKV@tempa\@gobble
    \fi
  \fi
  \XKV@tempa
}
\def\XKV@@ch@ckchoice#1#2#3#4{\edef\XKV@tempa{\the\count@}\count@\z@
  \def\XKV@tempb{#3}\def\XKV@tempc##1,{\def#1{##1}\ifx#1\@nnil
      \def#1{#3}\def#2{-1}\count@\XKV@tempa
      \ifXKV@pl
        \let\XKV@tempd\@secondoftwo
      \else
        \XKV@toks{#3}\XKV@err{value `\the\XKV@toks' is not allowed}\let\XKV@tempd\@gobble
      \fi
    \else
      \ifx#1\XKV@tempb
        \edef#2{\the\count@}\count@\XKV@tempa
        \ifXKV@pl
          \let\XKV@tempd\XKV@@ch@ckch@ice
        \else
          \let\XKV@tempd\XKV@@ch@ckch@ic@
        \fi
      \else
        \advance\count@\@ne
        \let\XKV@tempd\XKV@tempc
      \fi
    \fi
    \XKV@tempd
  }\XKV@tempc#4,\@nil,}
\def\XKV@@ch@ckch@ice#1\@nil,{\@firstoftwo}
\def\XKV@@ch@ckch@ic@#1\@nil,{\@firstofone}
\def\key@ifundefined{\@testopt\XKV@key@ifundefined{KV}}
\def\XKV@key@ifundefined[#1]#2{\XKV@makepf{#1}\XKV@checksanitizeb{#2}\XKV@fams
  \expandafter\XKV@sp@deflist\expandafter
    \XKV@fams\expandafter{\XKV@fams}\XKV@key@if@ndefined
}
\def\XKV@key@if@ndefined#1{\XKV@knftrue
  \KV@@sp@def\XKV@tkey{#1}\XKV@whilist\XKV@fams\XKV@tfam\ifXKV@knf\fi{\XKV@makehd\XKV@tfam
    \XKV@ifundefined{\XKV@header\XKV@tkey}{}{\XKV@knffalse}}\ifXKV@knf
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\def\disable@keys{\XKV@testoptb\XKV@disable@keys}
\def\XKV@disable@keys#1{\XKV@checksanitizeb{#1}\XKV@tempa
  \XKV@for@o\XKV@tempa\XKV@tempa{\XKV@ifundefined{\XKV@header\XKV@tempa}{\XKV@err{key `\XKV@tempa' undefined}}{\edef\XKV@tempb{\noexpand\XKV@warn{key `\XKV@tempa' has been disabled}}\XKV@ifundefined{\XKV@header\XKV@tempa @default}{\edef\XKV@tempc{\noexpand\XKV@define@key{\XKV@tempa}}}{\edef\XKV@tempc{\noexpand\XKV@define@key{\XKV@tempa}[]}}\expandafter\XKV@tempc\expandafter{\XKV@tempb}}}}
\def\presetkeys{\XKV@stfalse\XKV@testoptb\XKV@presetkeys}
\def\gpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@presetkeys}
\def\XKV@presetkeys#1#2{\XKV@pr@setkeys{#1}{preseth}\XKV@pr@setkeys{#2}{presett}}
\def\XKV@pr@setkeys#1#2{\XKV@ifundefined{XKV@\XKV@header#2}{\XKV@checksanitizea{#1}\XKV@tempa
    \ifXKV@st\expandafter\global\fi\expandafter\def\csname
      XKV@\XKV@header#2\expandafter\endcsname\expandafter{\XKV@tempa}}{\expandafter\XKV@merge\csname XKV@\XKV@header
      #2\endcsname{#1}\XKV@getkeyname
  }}
\def\delpresetkeys{\XKV@stfalse\XKV@testoptb\XKV@delpresetkeys}
\def\gdelpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@delpresetkeys}
\def\XKV@delpresetkeys#1#2{\XKV@d@lpresetkeys{#1}{preseth}\XKV@d@lpresetkeys{#2}{presett}}
\def\XKV@d@lpresetkeys#1#2{\XKV@ifundefined{XKV@\XKV@header#2}{\XKV@err{no presets defined for `\XKV@header'}}{\expandafter\XKV@delete\csname XKV@\XKV@header
      #2\endcsname{#1}\XKV@getkeyname
  }}
\def\unpresetkeys{\XKV@stfalse\XKV@testoptb\XKV@unpresetkeys}
\def\gunpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@unpresetkeys}
\def\XKV@unpresetkeys{\XKV@ifundefined{XKV@\XKV@header preseth}{\XKV@err{no presets defined for `\XKV@header'}}{\ifXKV@st\expandafter\global\fi\expandafter\let
      \csname XKV@\XKV@header preseth\endcsname\@undefined
    \ifXKV@st\expandafter\global\fi\expandafter\let
      \csname XKV@\XKV@header presett\endcsname\@undefined
  }}
\def\savekeys{\XKV@stfalse\XKV@testoptb\XKV@savekeys}
\def\gsavekeys{\XKV@sttrue\XKV@testoptb\XKV@savekeys}
\def\XKV@savekeys#1{\XKV@ifundefined{XKV@\XKV@header save}{\XKV@checksanitizeb{#1}\XKV@tempa
    \ifXKV@st\expandafter\global\fi\expandafter\def\csname XKV@\XKV@header save\expandafter\endcsname\expandafter{\XKV@tempa}}{\expandafter\XKV@merge\csname XKV@\XKV@header
      save\endcsname{#1}\XKV@getsg
  }}
\def\delsavekeys{\XKV@stfalse\XKV@testoptb\XKV@delsavekeys}
\def\gdelsavekeys{\XKV@sttrue\XKV@testoptb\XKV@delsavekeys}
\def\XKV@delsavekeys#1{\XKV@ifundefined{XKV@\XKV@header save}{\XKV@err{no save keys defined for `\XKV@header'}}{\expandafter\XKV@delete\csname XKV@\XKV@header
      save\endcsname{#1}\XKV@getsg
  }}
\def\unsavekeys{\XKV@stfalse\XKV@testoptb\XKV@unsavekeys}
\def\gunsavekeys{\XKV@sttrue\XKV@testoptb\XKV@unsavekeys}
\def\XKV@unsavekeys{\XKV@ifundefined{XKV@\XKV@header save}{\XKV@err{no save keys defined for `\XKV@header'}}{\ifXKV@st\expandafter\global\fi\expandafter\let
      \csname XKV@\XKV@header save\endcsname\@undefined
  }}
\def\setkeys{\XKV@testopta{\XKV@testoptc\XKV@setkeys}}
\def\XKV@setkeys[#1]#2{\XKV@checksanitizea{#2}\XKV@resb
  \let\XKV@naa\@empty
  \XKV@for@o\XKV@resb\XKV@tempa{\expandafter\XKV@g@tkeyname\XKV@tempa=\@nil\XKV@tempa
    \XKV@addtolist@x\XKV@naa\XKV@tempa
  }\ifnum\XKV@depth=\z@\let\XKV@rm\@empty\fi
  \XKV@usepresetkeys{#1}{preseth}\expandafter\XKV@s@tkeys\expandafter{\XKV@resb}{#1}\XKV@usepresetkeys{#1}{presett}\let\CurrentOption\@empty
}
\def\XKV@usepresetkeys#1#2{\XKV@presettrue
  \XKV@for@eo\XKV@fams\XKV@tfam{\XKV@makehd\XKV@tfam
    \XKV@ifundefined{XKV@\XKV@header#2}{}{\XKV@toks\expandafter\expandafter\expandafter
        {\csname XKV@\XKV@header#2\endcsname}\@expandtwoargs\XKV@s@tkeys{\the\XKV@toks}{\XKV@naa\ifx\XKV@naa\@empty\else,\fi#1}}}\XKV@presetfalse
}
\def\XKV@s@tkeys#1#2{\XKV@sp@deflist\XKV@na{#2}\XKV@for@n{#1}\CurrentOption{\expandafter\XKV@s@tk@ys\CurrentOption==\@nil
  }}
\def\XKV@s@tk@ys#1=#2=#3\@nil{\XKV@g@tkeyname#1=\@nil\XKV@tkey
  \expandafter\KV@@sp@def\expandafter\XKV@tkey\expandafter{\XKV@tkey}\ifx\XKV@tkey\@empty
    \XKV@toks{#2}\ifcat$\the\XKV@toks$\else
      \XKV@err{no key specified for value `\the\XKV@toks'}\fi
  \else
    \@expandtwoargs\in@{,\XKV@tkey,}{,\XKV@na,}\ifin@\else
      \XKV@knftrue
      \KV@@sp@def\XKV@tempa{#2}\ifXKV@preset\XKV@s@tk@ys@{#3}\else
        \ifXKV@pl
          \XKV@for@eo\XKV@fams\XKV@tfam{\XKV@makehd\XKV@tfam
            \XKV@s@tk@ys@{#3}}\else
          \XKV@whilist\XKV@fams\XKV@tfam\ifXKV@knf\fi{\XKV@makehd\XKV@tfam
            \XKV@s@tk@ys@{#3}}\fi
      \fi
      \ifXKV@knf
        \ifXKV@inpox
          \ifx\XKV@doxs\relax
            \ifx\@currext\@clsextension\else
              \let\CurrentOption\XKV@tkey\@unknownoptionerror
            \fi
          \else\XKV@doxs\fi
        \else
          \ifXKV@st
            \XKV@addtolist@o\XKV@rm\CurrentOption
          \else
            \XKV@err{`\XKV@tkey' undefined in families `\XKV@fams'}\fi
        \fi
      \else
        \ifXKV@inpox\ifx\XKV@testclass\XKV@documentclass
          \expandafter\XKV@useoption\expandafter{\CurrentOption}\fi\fi
      \fi
    \fi
  \fi
}
\def\XKV@s@tk@ys@#1{\XKV@ifundefined{\XKV@header\XKV@tkey}{}{\XKV@knffalse
    \XKV@ifundefined{XKV@\XKV@header save}{}{\expandafter\XKV@testsavekey\csname XKV@\XKV@header
        save\endcsname\XKV@tkey
    }\ifXKV@rkv
      \ifXKV@sg\expandafter\global\fi\expandafter\let
        \csname XKV@\XKV@header\XKV@tkey @value\endcsname\XKV@tempa
    \fi
    \expandafter\XKV@replacepointers\expandafter{\XKV@tempa}\ifx\@empty#1\@empty\XKV@afterelsefi
      \XKV@ifundefined{\XKV@header\XKV@tkey @default}{\XKV@err{no value specified for key `\XKV@tkey'}}{\expandafter\expandafter\expandafter\XKV@default
          \csname\XKV@header\XKV@tkey @default\endcsname\@nil
      }\else\XKV@afterfi
      \XKV@srstate{@\romannumeral\XKV@depth}{}\csname\XKV@header\XKV@tkey\expandafter
        \endcsname\expandafter{\XKV@tempa}\relax
      \XKV@srstate{}{@\romannumeral\XKV@depth}\fi
  }}
\def\XKV@testsavekey#1#2{\ifXKV@rkv\else
    \XKV@for@o#1\XKV@resa{\expandafter\XKV@ifcmd\expandafter{\XKV@resa}\global\XKV@resa{\ifx#2\XKV@resa
          \XKV@rkvtrue\XKV@sgtrue
        \fi
      }{\ifx#2\XKV@resa
          \XKV@rkvtrue\XKV@sgfalse
        \fi
      }}\fi
}
\def\XKV@replacepointers#1{\let\XKV@tempa\@empty
  \let\XKV@resa\@empty
  \XKV@r@placepointers#1\usevalue\@nil
}
\def\XKV@r@placepointers#1\usevalue#2{\XKV@addtomacro@n\XKV@tempa{#1}\def\XKV@tempb{#2}\ifx\XKV@tempb\@nnil\else\XKV@afterfi
    \XKV@ifundefined{XKV@\XKV@header#2@value}{\XKV@err{no value recorded for key `#2'; ignored}\XKV@r@placepointers
    }{\@expandtwoargs\in@{,#2,}{,\XKV@resa,}\ifin@\XKV@afterelsefi
        \XKV@err{back linking pointers; pointer replacement canceled}\else\XKV@afterfi
        \XKV@addtolist@x\XKV@resa{#2}\expandafter\expandafter\expandafter\XKV@r@placepointers
          \csname XKV@\XKV@header#2@value\endcsname
      \fi
    }\fi
}
\def\XKV@default#1#2\@nil{\expandafter\edef\expandafter\XKV@tempa
    \expandafter{\expandafter\@gobble\string#1}\edef\XKV@tempb{\XKV@header\XKV@tkey}\@onelevel@sanitize\XKV@tempb
  \ifx\XKV@tempa\XKV@tempb
    \begingroup
      \expandafter\def\csname\XKV@header\XKV@tkey\endcsname##1{\gdef\XKV@tempa{##1}}\csname\XKV@header\XKV@tkey @default\endcsname
    \endgroup
    \XKV@ifundefined{XKV@\XKV@header save}{}{\expandafter\XKV@testsavekey\csname XKV@\XKV@header
        save\endcsname\XKV@tkey
    }\ifXKV@rkv
      \ifXKV@sg\expandafter\global\fi\expandafter\let
        \csname XKV@\XKV@header\XKV@tkey @value\endcsname\XKV@tempa
    \fi
    \expandafter\XKV@replacepointers\expandafter
      {\XKV@tempa}\XKV@afterelsefi
    \XKV@srstate{@\romannumeral\XKV@depth}{}\expandafter#1\expandafter{\XKV@tempa}\relax
    \XKV@srstate{}{@\romannumeral\XKV@depth}\else\XKV@afterfi
    \XKV@srstate{@\romannumeral\XKV@depth}{}\csname\XKV@header\XKV@tkey @default\endcsname\relax
    \XKV@srstate{}{@\romannumeral\XKV@depth}\fi
}
\def\setrmkeys{\XKV@testopta{\XKV@testoptc\XKV@setrmkeys}}
\def\XKV@setrmkeys[#1]{\def\XKV@tempa{\XKV@setkeys[#1]}\expandafter\XKV@tempa\expandafter{\XKV@rm}}
\XKVcatcodes
%
 \fi
\else
  \ProvidesFile{pst-xkey.tex}
    [2005/11/25 v1.6 PSTricks specialization of xkeyval (HA)]
  \@addtofilelist{pst-xkey.tex}
  \RequirePackage{xkeyval}
\fi
\def\pst@famlist{}
\def\pst@addfams#1{\XKV@for@n{#1}\XKV@tempa{\@expandtwoargs\in@{,\XKV@tempa,}{,\pst@famlist,}\ifin@\else\edef\pst@famlist{\pst@famlist,\XKV@tempa}\fi
  }}
\def\psset{\expandafter\@testopt\expandafter\pss@t\expandafter{\pst@famlist}}
\def\pss@t[#1]#2{\setkeys+[psset]{#1}{#2}\ignorespaces}
\def\@psset#1,\@nil{\edef\XKV@tempa{\noexpand\setkeys+[psset]{\pst@famlist}}\XKV@tempa{#1}}
\PSTXKeyCatcodes
%
 \fi 
\edef\PstAtCode{\the\catcode`\@}
\catcode`\@=11\relax
\pst@addfams{pst-3d}
\def\fileversion{1.00}
\def\filedate{2005/09/03}
\message{`PST-3d' v\fileversion, \filedate\space (tvz)}
\csname PSTthreeDLoaded\endcsname
\let\PSTthreeDLoaded\endinput
\pst@def{SetMatrixThreeD}<dup sin /e ED cos /f ED
  /p3 ED /p2 ED /p1 ED
  p1 0 eq
  { /a 0 def /b p2 0 le { 1 } { -1 } ifelse def
    p3 p2 abs
  }
  { p2 0 eq
    { /a p1 0 lt { -1 } { 1 } ifelse def /b 0 def
      p3 p1 abs
    }
    { p1 dup mul p2 dup mul add sqrt dup
      p1 exch div /a ED
      p2 exch div neg /b ED
      p3 p1 a div
    }
    ifelse
  }
  ifelse
  atan dup sin /c ED cos /d ED
  /Matrix3D
  [
    b f mul c a mul e mul sub
    a f mul c b mul e mul add
    d e mul
    b e mul neg c a mul f mul sub
    a e mul neg c b mul f mul add
    d f mul
  ] def>
\pst@def{ProjThreeD}</z ED /y ED /x ED
  Matrix3D aload pop
  z mul exch y mul add exch x mul add
  4 1 roll
  z mul exch y mul add exch x mul add
  exch>
\pst@def{SetMatrixEmbed}<\tx@SetMatrixThreeD
  Matrix3D aload pop
  /z3 ED /z2 ED /z1 ED /x3 ED /x2 ED /x1 ED
  \tx@SetMatrixThreeD
  [
  Matrix3D aload pop
  z3 mul exch z2 mul add exch z1 mul add 4 1 roll
  z3 mul exch z2 mul add exch z1 mul add
  Matrix3D aload pop
  x3 mul exch x2 mul add exch x1 mul add 4 1 roll
  x3 mul exch x2 mul add exch x1 mul add
  3 -1 roll 3 -1 roll 4 -1 roll 8 -3 roll 3 copy
  x3 mul exch x2 mul add exch x1 mul add 4 1 roll
  z3 mul exch z2 mul add exch z1 mul add
  ]
  concat>
\let\pssetzlength\pssetylength
\define@key[psset]{pst-3d}{viewpoint}{\pst@expandafter\psset@@viewpoint#1 {} {} {} \@nil
  \let\psk@viewpoint\pst@tempg}
\def\psset@@viewpoint#1 #2 #3 #4\@nil{\begingroup
    \pssetxlength\pst@dima{#1}\pssetylength\pst@dimb{#2}\pssetzlength\pst@dimc{#3}\xdef\pst@tempg{\pst@number\pst@dima \pst@number\pst@dimb \pst@number\pst@dimc}\endgroup}
\psset[pst-3d]{viewpoint=1 -1 1}
\define@key[psset]{pst-3d}{viewangle}{\pst@getangle{#1}\psk@viewangle}
\psset[pst-3d]{viewangle=0}
\define@key[psset]{pst-3d}{normal}{\pst@expandafter\psset@@viewpoint#1 {} {} {} \@nil
  \let\psk@normal\pst@tempg}
\psset[pst-3d]{normal=0 0 1}
\define@key[psset]{pst-3d}{embedangle}{\pst@getangle{#1}\psk@embedangle}
\psset[pst-3d]{embedangle=0}
\define@key[psset]{pst-3d}{Tshadowsize}{\pst@checknum{#1}\psTshadowsize}
\psset[pst-3d]{Tshadowsize=1}
\define@key[psset]{pst-3d}{Tshadowangle}{\pst@getangle{#1}\psk@Tshadowangle}
\psset[pst-3d]{Tshadowangle=60}
\define@key[psset]{pst-3d}{Tshadowcolor}{\pst@getcolor{#1}\psTshadowcolor}
\psset[pst-3d]{Tshadowcolor=lightgray}

\pst@def{TMSave}<tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if
  /TMatrix [ TMatrix CM ] cvx def>
\pst@def{TMRestore}<CP /TMatrix [ TMatrix setmatrix ] cvx def moveto>
\pst@def{TMChange}<\tx@TMSave
  /cp [ currentpoint ] cvx def CM
  CP T \tx@STV
  CM matrix invertmatrix    matrix concatmatrix       exch exec
  concat cp moveto>
\def\ThreeDput{\def\pst@par{}\pst@object{ThreeDput}}
\def\ThreeDput@i{\@ifnextchar({\ThreeDput@ii}{\ThreeDput@ii(\z@,\z@,\z@)}}
\def\ThreeDput@ii(#1,#2,#3){\pst@killglue\pst@makebox{\ThreeDput@iii(#1,#2,#3)}}
\def\ThreeDput@iii(#1,#2,#3){\begingroup
    \use@par
    \if@star\pst@starbox\fi
    \pst@makesmall\pst@hbox
    \pssetxlength\pst@dima{#1}\pssetylength\pst@dimb{#2}\pssetzlength\pst@dimc{#3}\leavevmode
    \hbox{\pst@Verb{{ \pst@number\pst@dima
          \pst@number\pst@dimb
          \pst@number\pst@dimc
          \psk@normal
          \psk@embedangle
          \psk@viewpoint
          \psk@viewangle
          \tx@SetMatrixEmbed
        } \tx@TMChange}\box\pst@hbox
    \pst@Verb{\tx@TMRestore}}\endgroup
  \ignorespaces}
\def\pst@sinandcos#1{\begingroup
    \pst@dima=#1\relax
    \pst@dima=.366022\pst@dima     \pst@dimb=\pst@dima   \pst@dimc=32\p@       \pst@dimtonum\pst@dima\pst@tempa
    \pst@cntb=\tw@
    \pst@cntc=-\@ne
    \pst@cntg=32
    \loop
    \ifnum\pst@dima>\@cclvi \pst@dima=\pst@tempa\pst@dima
      \divide\pst@dima\pst@cntg
      \divide\pst@dima\pst@cntb
      \ifodd\pst@cntb
        \advance\pst@dimb \pst@cntc\pst@dima
        \pst@cntc=-\pst@cntc
      \else
        \advance\pst@dimc by \pst@cntc\pst@dima
      \fi
      \advance\pst@cntb\@ne
    \repeat
    \divide\pst@dimb\pst@cntg
    \divide\pst@dimc\pst@cntg
    \global\pst@dimg\pst@dimb
    \global\pst@dimh\pst@dimc
  \endgroup}
\def\pst@getsinandcos#1{\pst@dimg=100000sp
  \pst@dimg=#1\pst@dimg
  \pst@dimh=36000000sp
  \pst@cntg=0
  \loop
  \ifnum\pst@dimg<\z@
    \advance\pst@dimg\pst@dimh
  \repeat
  \loop
  \ifnum\pst@dimg>\pst@dimh
    \advance\pst@dimg-\pst@dimh
  \repeat
  \pst@dimh=9000000sp
  \def\pst@tempg{\ifnum\pst@dimg<\pst@dimh\else
      \advance\pst@dimg-\pst@dimh
      \advance\pst@cntg\@ne
      \ifnum\pst@cntg>\thr@@ \advance\pst@cntg-4 \fi
      \expandafter\pst@tempg
    \fi}\pst@tempg
  \chardef\pst@quadrant\pst@cntg
  \ifdim\pst@dimg=\z@
    \def\pst@sin{0}\def\pst@cos{1}\else
    \pst@sinandcos\pst@dimg
    \pst@dimtonum\pst@dimg\pst@sin
    \pst@dimtonum\pst@dimh\pst@cos
  \fi }
\def\pstilt#1{\pst@makebox{\pstilt@{#1}}}
\def\pstilt@#1{\begingroup
    \leavevmode
    \pst@getsinandcos{#1}\hbox{\ifcase\pst@quadrant
        \kern\pst@cos\dp\pst@hbox
        \pst@dima=\pst@cos\ht\pst@hbox
        \ht\pst@hbox=\pst@sin\ht\pst@hbox
        \dp\pst@hbox=\pst@sin\dp\pst@hbox
      \or
        \kern\pst@sin\ht\pst@hbox
        \pst@dima=\pst@sin\dp\pst@hbox
        \ht\pst@hbox=\pst@cos\ht\pst@hbox
        \dp\pst@hbox=\pst@cos\dp\pst@hbox
      \or
        \kern\pst@cos\ht\pst@hbox
        \pst@dima=\pst@sin\dp\pst@hbox
        \pst@dimg=\pst@sin\ht\pst@hbox
        \ht\pst@hbox=\pst@sin\dp\pst@hbox
        \dp\pst@hbox=\pst@dimg
      \or
        \kern\pst@sin\dp\pst@hbox
        \pst@dima=\pst@sin\ht\pst@hbox
        \pst@dimg=\pst@cos\ht\pst@hbox
        \ht\pst@hbox=\pst@cos\dp\pst@hbox
        \dp\pst@hbox=\pst@dimg
      \fi
      \pst@Verb{{ [ 1 0
            \pst@cos\space \ifnum\pst@quadrant>\@ne neg \fi
            \pst@sin\space
            \ifnum\pst@quadrant>\z@\ifnum\pst@quadrant<\thr@@ neg \fi\fi
            \ifodd\pst@quadrant exch \fi
            0 0
          ] concat
        } \tx@TMChange}\box\pst@hbox
      \pst@Verb{\tx@TMRestore}\kern\pst@dima}\endgroup}
\def\psTilt#1{\pst@makebox{\psTilt@{#1}}}
\def\psTilt@#1{\begingroup
    \leavevmode
    \pst@getsinandcos{#1}\hbox{\ifodd\pst@quadrant
        \pst@@divide{\dp\pst@hbox}{\pst@cos\p@}\ifnum\pst@quadrant=\thr@@\kern\else\pst@dima=\fi\pst@sin\pst@dimg
        \pst@@divide{\ht\pst@hbox}{\pst@cos\p@}\ifnum\pst@quadrant=\@ne\kern\else\pst@dima=\fi\pst@sin\pst@dimg
      \else
        \ifdim\pst@sin\p@=\z@
          \@pstrickserr{\string\psTilt\space angle cannot be 0 or 180}\@ehpa
          \def\pst@sin{.7071}\def\pst@cos{.7071}\fi
        \pst@@divide{\dp\pst@hbox}{\pst@sin\p@}\ifnum\pst@quadrant=\z@\kern\else\pst@dima=\fi\pst@cos\pst@dimg
        \pst@@divide{\ht\pst@hbox}{\pst@sin\p@}\ifnum\pst@quadrant=\tw@\kern\else\pst@dima=\fi\pst@cos\pst@dimg
      \fi
      \ifnum\pst@quadrant>\@ne
        \pst@dimg=\ht\pst@hbox
        \ht\pst@hbox=\dp\pst@hbox
        \dp\pst@hbox=\pst@dimg
      \fi
      \pst@Verb{{ [ 1 0
            \pst@cos\space \pst@sin\space
            \ifodd\pst@quadrant exch \fi
            \tx@Div
            \ifnum\pst@quadrant>\z@\ifnum\pst@quadrant<\thr@@ neg \fi\fi
            \ifnum\pst@quadrant>\@ne -1 \else 1 \fi
            0 0
          ] concat
        } \tx@TMChange}\box\pst@hbox
      \pst@Verb{\tx@TMRestore}\kern\pst@dima}\endgroup}
\def\psshadow{\pst@object{psshadow}}
\def\psshadow@i{\pst@makebox{\psshadow@ii}}
\def\psshadow@ii{\begingroup
    \use@par
    \leavevmode
    \pst@getsinandcos{\psk@Tshadowangle}\hbox{\lower\dp\pst@hbox\hbox{\pst@Verb{{ [ 1 0
              \pst@cos\space \psTshadowsize mul
              \ifnum\pst@quadrant>\@ne neg \fi
              \pst@sin\space \psTshadowsize mul
              \ifnum\pst@quadrant>\z@\ifnum\pst@quadrant<\thr@@ neg \fi\fi
              \ifodd\pst@quadrant exch \fi
              0 0
            ] concat
          } \tx@TMChange}}\hbox to\z@{\pst@Verb{ gsave \pst@usecolor\psTshadowcolor}\copy\pst@hbox
       \pst@Verb{ grestore}\hss}\pst@Verb{\tx@TMRestore}\box\pst@hbox}\endgroup}
\catcode`\@=\PstAtCode\relax
%
 \fi
\ifx\MultidoLoaded\endinput\else \def\fileversion{1.42}
\def\filedate{2010/05/14}
\message{ v\fileversion, \filedate\space <tvz>}
\csname MultidoLoaded\endcsname
\let\MultidoLoaded\endinput
\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11



\def\@empty{}
\def\@nnil{\@nil}
\def\multido@dimtonum#1#2{\edef#2{\multido@@dimtonum#1}}
\def\multido@@dimtonum#1{\expandafter\multido@@@dimtonum\the#1}
\edef\next{\noexpand\def\noexpand\multido@@@dimtonum##1\string p\string t{##1}}
\next



\newcount\multido@count
\newcount\multidocount
\newtoks\multido@stuff

\def\multido{\multido@{}{\begingroup}{\endgroup}}
\def\mmultido{\multido@{\multido@stepvar}{\begingroup}{\endgroup}}
\def\Multido{\multido@{}{}{}}
\def\MMultido{\multido@{\multido@stepvar}{}{}}



\long\def\multido@#1#2#3#4#5#6{#2\multido@count=#5\relax
    \ifnum\multido@count=\z@\else\multido@@{#1}{#4}{#6}\fi
  #3\ignorespaces}
\def\multido@@#1#2#3{\def\multido@stepvar{}\def\do{\noexpand\do\noexpand}\multido@initvar#2,\@nil,\let\do\noexpand
  \edef\multido@stepvar{\multido@stepvar}\ifnum\multido@count<\z@\multido@count=-\multido@count\fi
  \multidocount=1\relax
  #1\multido@stuff{#3}\multido@loop}
\def\multido@loop{\the\multido@stuff
  \ifnum\multidocount<\multido@count
    \advance\multidocount\@ne
    \multido@stepvar
    \expandafter\multido@loop
  \fi}
\def\multidostop{\multidocount=\multido@count}
\def\multido@badvar{\multido@count=0
  \errhelp{\multido command will be skipped.}\errmessage{Bad \string\multido\space variable declaration}}
\def\multido@initvar#1,{\def\multido@temp{#1}\ifx\multido@temp\@nnil\else
    \ifx\multido@temp\@empty\else
      \multido@@initvar#1\@nil=+\@nil\relax
    \fi
    \expandafter\multido@initvar
  \fi}
\def\multido@@initvar#1=#2+#3\@nil#4\relax{\ifx\@empty#4\@empty
    \multido@badvar
  \else
    \multido@vartype#1\@empty
    \ifx\multido@temp\relax
      \multido@badvar
    \else
      \multido@temp{#2}{#3}#1\fi
  \fi}
\def\multido@vartype#1{\ifcat\noexpand\@nil\noexpand#1\expandafter\multido@@vartype\string#1\@nil
  \else
    \let\multido@temp\relax
  \fi}
\def\multido@@vartype#1#2#3\@nil{\expandafter\let\expandafter\multido@temp
    \csname multido@init@#2\endcsname}
\def\MultidoCheckNames{\let\multido@@@vartype\multido@vartype
  \def\multido@vartype##1{\ifx\undefined##1\multido@@@vartype{##1}\else
      \errhelp{\multido command will be skipped.}\errmessage{Multido variable \string##1 already defined}\let\multido@temp\relax
    \fi}}



\def\multido@addtostep#1{\edef\multido@stepvar{\multido@stepvar#1}}



\def\multido@init@d#1#2#3{\expandafter\ifx\csname pssetlength\endcsname\relax
    \dimen@=#1\relax\dimen@i=#2\relax
  \else
    \pssetlength\dimen@{#1}\pssetlength\dimen@i{#2}\fi
  \edef#3{\number\dimen@ sp}\ifnum\multido@count<\z@\dimen@i=-\dimen@i\fi
  \multido@addtostep{\do\multido@step@d{\do#3}{\number\dimen@i sp}}}
\def\multido@step@d#1#2{\dimen@=#1\advance\dimen@#2
  \edef#1{\number\dimen@ sp}}\def\multido@init@D{\multido@init@d}



\def\multido@init@i#1#2#3{\count@=#1\relax
  \edef#3{\the\count@}\count@=#2\relax
  \ifnum\multido@count<\z@\count@=-\count@\fi
  \multido@addtostep{\do\multido@step@i{\do#3}{\the\count@}}}
\def\multido@step@i#1#2{\count@=#1\advance\count@ by #2
  \edef#1{\the\count@}}
\def\multido@init@I{\multido@init@i}



\def\multido@init@r#1#2#3{\dimen@=#1pt
  \multido@dimtonum\dimen@#3\dimen@=#2pt
  \ifnum\multido@count<\z@\dimen@=-\dimen@\fi
  \multido@addtostep{\do\multido@step@r{\do#3}{\number\dimen@ sp}}}
\def\multido@step@r#1#2{\dimen@=#1pt\advance\dimen@#2
  \multido@dimtonum\dimen@#1}
\def\multido@init@R{\multido@init@r}



\def\multido@init@n#1#2#3{\edef#3{#1}\ifnum\multido@count<\z@\expandafter\fpSub\else\expandafter\fpAdd\fi
  {0}{#2}\multido@temp
  \multido@addtostep{\do\fpAdd{\do#3}{\multido@temp}{\do#3}}}
\def\multido@init@N{\multido@init@n}





\def\fpAdd#1#2#3{\edef\multido@temp{#1..\noexpand\@nil#2}\expandafter\FPadd@\multido@temp..\@nil
  \let#3\multido@temp}
\def\fpSub#1#2{\edef\multido@temp{\noexpand\FPsub@#2\noexpand\@empty}\fpAdd{#1}{\multido@temp}}
\ifx\FPadd\undefined\let\FPadd\fpAdd\let\FPsub\fpSub\fi
\def\FPsub@#1{\ifx-#1\else-#1\fi}
\def\FPadd@#1.#2.#3\@nil#4.#5.#6\@nil{\begingroup
    \def\multido@temp{\let\next\relax}\let\next\z@
    \afterassignment\multido@temp\count@=#1\next
    \dimen@i=0#2sp\relax
    \let\next\z@
    \afterassignment\multido@temp\multido@count=#4\next
    \multidocount=0#5\relax
    \dimen@=\number\count@ sp
    \count@=\@ne
    \FPadd@@@#500000000\@nil
    \ifnum#11<\z@
      \count@=-\tw@
      \dimen@=-\dimen@
    \fi
    \ifnum#41<\z@
      \count@=-\count@
      \multido@count=-\multido@count
    \fi
    \ifnum\count@>\z@
      \advance\multido@count\dimen@
      \advance\multidocount\dimen@i
      \ifnum\multidocount<\multido@temp\relax
        \advance\multidocount\multido@temp\relax
      \else
        \advance\multido@count\@ne
      \fi
      \advance\count@-3
    \else
      \advance\multido@count-\dimen@
      \advance\multidocount-\dimen@i
      \ifnum\multido@count<\z@
        \multido@count=-\multido@count
        \multidocount=-\multidocount
        \advance\count@\@ne
      \else
        \ifnum\multido@count=\z@
          \ifnum\multidocount<\z@
            \multidocount=-\multidocount
            \advance\count@\@ne
          \fi
        \fi
      \fi
      \ifnum\multidocount<\z@
        \advance\multidocount\multido@temp
        \advance\multido@count-\@ne
      \fi
      \advance\multidocount\multido@temp\relax
    \fi
    \expandafter\FPadd@@\the\multidocount\@empty\@nil
  \endgroup}
\def\FPadd@@#1#2#3\@nil{\xdef\multido@temp{\ifnum\count@=-1-\fi
  \the\multido@count\ifx#2\@empty\else.#2#3\fi}}
\def\FPadd@@@#1#2#3#4#5#6#7#8#9\@nil{\def\multido@temp{1#9}}

\catcode`\@=\TheAtCode\relax

%
  \fi
\ifx\PSTXKeyLoaded\endinput\else \csname PSTXKeyLoaded\endcsname
\let\PSTXKeyLoaded\endinput
\edef\PSTXKeyCatcodes{\catcode`\noexpand\@\the\catcode`\@\relax
  \let\noexpand\PSTXKeyCatcodes\relax
}
\catcode`\@=11\relax
\ifx\ProvidesFile\@undefined
  \message{2005/11/25 v1.6 PSTricks specialization of xkeyval (HA)}
  \ifx\XKeyValLoaded\endinput\else\csname XKeyValLoaded\endcsname
\let\XKeyValLoaded\endinput
\edef\XKVcatcodes{\catcode`\noexpand\@\the\catcode`\@\relax
  \catcode`\noexpand\=\the\catcode`\=\relax
  \catcode`\noexpand\,\the\catcode`\,\relax
  \catcode`\noexpand\:\the\catcode`\:\relax
  \let\noexpand\XKVcatcodes\relax
}
\catcode`\@11\relax
\catcode`\=12\relax
\catcode`\,12\relax
\catcode`\:12\relax
\newtoks\XKV@toks
\newtoks\XKV@tempa@toks
\newcount\XKV@depth
\newif\ifXKV@st
\newif\ifXKV@sg
\newif\ifXKV@pl
\newif\ifXKV@knf
\newif\ifXKV@rkv
\newif\ifXKV@inpox
\newif\ifXKV@preset
\let\XKV@rm\@empty
\ifx\ProvidesFile\@undefined
  \message{2008/08/13 v2.6a key=value parser (HA)}
  \message{2005/02/22 v1.1 xkeyval TeX header (HA)}
\def\@nnil{\@nil}
\def\@empty{}
\def\newif#1{\count@\escapechar \escapechar\m@ne
    \let#1\iffalse
    \@if#1\iftrue
    \@if#1\iffalse
  \escapechar\count@}
\def\@if#1#2{\expandafter\def\csname\expandafter\@gobbletwo\string#1\expandafter\@gobbletwo\string#2\endcsname
                       {\let#1#2}}
\long\def\@ifnextchar#1#2#3{\let\reserved@d=#1\def\reserved@a{#2}\def\reserved@b{#3}\futurelet\@let@token\@ifnch}
\def\@ifnch{\ifx\@let@token\@sptoken
    \let\reserved@c\@xifnch
  \else
    \ifx\@let@token\reserved@d
      \let\reserved@c\reserved@a
    \else
      \let\reserved@c\reserved@b
    \fi
  \fi
  \reserved@c}
\def\:{\let\@sptoken= } \:  \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch}
\let\kernel@ifnextchar\@ifnextchar
\long\def\@testopt#1#2{\kernel@ifnextchar[{#1}{#1[{#2}]}}
\long\def\@firstofone#1{#1}
\long\def \@gobble #1{}
\long\def \@gobbletwo #1#2{}
\def\@expandtwoargs#1#2#3{\edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a}
\edef\@backslashchar{\expandafter\@gobble\string\\}
\newif\ifin@
\def\in@#1#2{\def\in@@##1#1##2##3\in@@{\ifx\in@##2\in@false\else\in@true\fi}\in@@#2#1\in@\in@@}
\def\strip@prefix#1>{}
\def \@onelevel@sanitize #1{\edef #1{\expandafter\strip@prefix
           \meaning #1}}
%
 \else
  \ProvidesFile{xkeyval.tex}[2008/08/13 v2.6a key=value parser (HA)]
  \@addtofilelist{xkeyval.tex}
\fi
\long\def\@firstoftwo#1#2{#1}
\long\def\@secondoftwo#1#2{#2}
\long\def\XKV@afterfi#1\fi{\fi#1}
\long\def\XKV@afterelsefi#1\else#2\fi{\fi#1}
\ifx\ifcsname\@undefined\XKV@afterelsefi
  \def\XKV@ifundefined#1{\begingroup\expandafter\expandafter\expandafter\endgroup
      \expandafter\ifx\csname#1\endcsname\relax
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }
\else
  \def\XKV@ifundefined#1{\ifcsname#1\endcsname
      \expandafter\@secondoftwo
    \else
      \expandafter\@firstoftwo
    \fi
  }
\fi
\XKV@ifundefined{ver@keyval.sty}{
  \def\XKV@tempa#1{\long\def\KV@@sp@def##1##2{\futurelet\XKV@resa\KV@@sp@d##2\@nil\@nil#1\@nil\relax##1}\long\def\KV@@sp@d{\ifx\XKV@resa\@sptoken
    \expandafter\KV@@sp@b
  \else
    \expandafter\KV@@sp@b\expandafter#1\fi}\long\def\KV@@sp@b#1##1 \@nil{\KV@@sp@c##1}}
\XKV@tempa{ }
\long\def\KV@@sp@c#1\@nil#2\relax#3{\XKV@toks{#1}\edef#3{\the\XKV@toks}}
\long\def\KV@do#1,{\ifx\relax#1\@empty\else
  \KV@split#1==\relax
  \expandafter\KV@do\fi}
\long\def\KV@split#1=#2=#3\relax{\KV@@sp@def\XKV@tempa{#1}\ifx\XKV@tempa\@empty\else
    \expandafter\let\expandafter\XKV@tempc
      \csname\KV@prefix\XKV@tempa\endcsname
    \ifx\XKV@tempc\relax
      \XKV@err{`\XKV@tempa' undefined}\else
      \ifx\@empty#3\@empty
        \KV@default
      \else
        \KV@@sp@def\XKV@tempb{#2}\expandafter\XKV@tempc\expandafter{\XKV@tempb}\relax
      \fi
    \fi
  \fi}
\def\KV@default{\expandafter\let\expandafter\XKV@tempb
    \csname\KV@prefix\XKV@tempa @default\endcsname
  \ifx\XKV@tempb\relax
    \XKV@err{No value specified for key `\XKV@tempa'}\else
    \XKV@tempb\relax
  \fi}
\def\KV@def#1#2[#3]{\long\@namedef{KV@#1@#2@default\expandafter}\expandafter
    {\csname KV@#1@#2\endcsname{#3}}\long\@namedef{KV@#1@#2}##1}
%
   \expandafter\def\csname ver@keyval.sty\endcsname{1999/03/16}
}{}
\long\def\@ifnextcharacter#1#2#3{\@ifnextchar\bgroup
  {\@ifnextchar{#1}{#2}{#3}}{\@ifncharacter{#1}{#2}{#3}}}
\long\def\@ifncharacter#1#2#3#4{\if\string#1\string#4\expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {#2}{#3}#4}
\long\def\XKV@for@n#1#2#3{\XKV@tempa@toks{#1}\edef#2{\the\XKV@tempa@toks}\ifx#2\@empty
    \XKV@for@break
  \else
    \expandafter\XKV@f@r
  \fi
  #2{#3}#1,\@nil,}
\long\def\XKV@f@r#1#2#3,{\XKV@tempa@toks{#3}\edef#1{\the\XKV@tempa@toks}\ifx#1\@nnil
    \expandafter\@gobbletwo
  \else
    #2\expandafter\XKV@f@r
  \fi
  #1{#2}}
\long\def\XKV@for@break #1\@nil,{\fi}
\long\def\XKV@for@o#1{\expandafter\XKV@for@n\expandafter{#1}}
\long\def\XKV@for@en#1#2#3{\XKV@f@r#2{#3}#1,\@nil,}
\long\def\XKV@for@eo#1#2#3{\def#2{\XKV@f@r#2{#3}}\expandafter#2#1,\@nil,}
\long\def\XKV@whilist#1#2#3\fi#4{#3\expandafter\XKV@wh@list#1,\@nil,\@nil\@@#2#3\fi{#4}{}\fi
}
\long\def\XKV@wh@list#1,#2\@@#3#4\fi#5#6{\def#3{#1}\ifx#3\@nnil
    \def#3{#6}\expandafter\XKV@wh@l@st
  \else
    #4#5\expandafter\expandafter\expandafter\XKV@wh@list
    \else
      \def#3{#6}\expandafter\expandafter\expandafter\XKV@wh@l@st
    \fi
  \fi
  #2\@@#3#4\fi{#5}{#1}}
\long\def\XKV@wh@l@st#1\@@#2#3\fi#4#5{}
\def\XKV@addtomacro@n#1#2{\XKV@tempa@toks\expandafter{#1#2}\edef#1{\the\XKV@tempa@toks}}
\def\XKV@addtomacro@o#1#2{\expandafter\XKV@addtomacro@n\expandafter#1\expandafter{#2}}
\def\XKV@addtolist@n#1#2{\ifx#1\@empty
    \XKV@addtomacro@n#1{#2}\else
    \XKV@addtomacro@n#1{,#2}\fi
}
\def\XKV@addtolist@o#1#2{\ifx#1\@empty
    \XKV@addtomacro@o#1#2\else
    \XKV@addtomacro@o#1{\expandafter,#2}\fi
}
\def\XKV@addtolist@x#1#2{\edef#1{#1\ifx#1\@empty\else,\fi#2}}
\def\@selective@sanitize{\@testopt\@s@lective@sanitize\@M}
\def\@s@lective@sanitize[#1]#2#3{\begingroup
    \count@#1\relax\advance\count@\@ne
    \XKV@toks\expandafter{#3}\def#3{#2}\@onelevel@sanitize#3\edef#3{{#3}{\the\XKV@toks}}\expandafter\@s@l@ctive@sanitize\expandafter#3#3\expandafter\XKV@tempa@toks\expandafter{#3}\expandafter\endgroup\expandafter\toks@\expandafter{\the\XKV@tempa@toks}\edef#3{\the\toks@}}
\def\@s@l@ctive@sanitize#1#2#3{\def\@i{\futurelet\@@tok\@ii}\def\@ii{\expandafter\@iii\meaning\@@tok\relax
    \ifx\@@tok\@s@l@ctive@sanitize
      \let\@@cmd\@gobble
    \else
      \ifx\@@tok\@sptoken
        \XKV@toks\expandafter{#1}\edef#1{\the\XKV@toks\space}\def\@@cmd{\afterassignment\@i\let\@@tok= }\else
        \let\@@cmd\@iv
      \fi
    \fi
    \@@cmd
  }\def\@iii##1##2\relax{\if##1\@backslashchar\let\@@tok\relax\fi}\def\@iv##1{\toks@\expandafter{#1}\XKV@toks{##1}\ifx\@@tok\bgroup
      \advance\count@\m@ne
      \ifnum\count@>\z@
        \begingroup
          \def#1{\expandafter\@s@l@ctive@sanitize
            \csname\string#1\endcsname{#2}}\expandafter#1\expandafter{\the\XKV@toks}\XKV@toks\expandafter\expandafter\expandafter
            {\csname\string#1\endcsname}\edef#1{\noexpand\XKV@toks{\the\XKV@toks}}\expandafter\endgroup#1\fi
      \edef#1{\the\toks@{\the\XKV@toks}}\advance\count@\@ne
      \let\@@cmd\@i
    \else
      \edef#1{\expandafter\string\the\XKV@toks}\expandafter\in@\expandafter{#1}{#2}\edef#1{\the\toks@\ifin@#1\else
              \ifx\@@tok\@sptoken\space\else\the\XKV@toks\fi\fi}\edef\@@cmd{\noexpand\@i\ifx\@@tok\@sptoken\the\XKV@toks\fi}\fi
    \@@cmd
  }\let#1\@empty\@i#3\@s@l@ctive@sanitize
}
\def\XKV@checksanitizea#1#2{\XKV@ch@cksanitize{#1}#2=\ifin@\else\XKV@ch@cksanitize{#1}#2,\fi
  \ifin@\@selective@sanitize[0]{,=}#2\fi
}
\def\XKV@checksanitizeb#1#2{\XKV@ch@cksanitize{#1}#2,\ifin@\@selective@sanitize[0],#2\fi
}
\def\XKV@ch@cksanitize#1#2#3{\XKV@tempa@toks{#1}\edef#2{\the\XKV@tempa@toks}\@onelevel@sanitize#2\@expandtwoargs\in@#3{#2}\ifin@
    \def#2##1#3##2\@nil{\XKV@tempa@toks{##2}\edef#2{\the\XKV@tempa@toks}\ifx#2\@empty\else\in@false\fi
    }#2#1#3\@nil
  \fi
  \XKV@tempa@toks{#1}\edef#2{\the\XKV@tempa@toks}}
\def\XKV@sp@deflist#1#2{\let#1\@empty
  \XKV@for@n{#2}\XKV@resa{\expandafter\KV@@sp@def\expandafter\XKV@resa\expandafter{\XKV@resa}\XKV@addtomacro@o#1{\expandafter,\XKV@resa}}\ifx#1\@empty\else
    \def\XKV@resa,##1\@nil{\def#1{##1}}\expandafter\XKV@resa#1\@nil
  \fi
}
\def\XKV@merge#1#2#3{\XKV@checksanitizea{#2}\XKV@tempa
  \XKV@for@o\XKV@tempa\XKV@tempa{\XKV@pltrue
    #3\XKV@tempa\XKV@tempb
    \let\XKV@tempc#1\let#1\@empty
    \XKV@for@o\XKV@tempc\XKV@tempc{#3\XKV@tempc\XKV@tempd
      \ifx\XKV@tempb\XKV@tempd
        \XKV@plfalse
        \XKV@addtolist@o#1\XKV@tempa
      \else
        \XKV@addtolist@o#1\XKV@tempc
      \fi
    }\ifXKV@pl\XKV@addtolist@o#1\XKV@tempa\fi
  }\ifXKV@st\global\let#1#1\fi
}
\def\XKV@delete#1#2#3{\XKV@checksanitizeb{#2}\XKV@tempa
  \let\XKV@tempb#1\let#1\@empty
  \XKV@for@o\XKV@tempb\XKV@tempb{#3\XKV@tempb\XKV@tempc
    \@expandtwoargs\in@{,\XKV@tempc,}{,\XKV@tempa,}\ifin@\else\XKV@addtolist@o#1\XKV@tempb\fi
  }\ifXKV@st\global\let#1#1\fi
}
\def\XKV@warn#1{\message{xkeyval warning: #1}}
\def\XKV@err#1{\errmessage{xkeyval error: #1}}
\def\KV@errx{\XKV@err}
\let\KV@err\KV@errx
\def\XKV@ifstar#1{\@ifnextcharacter*{\@firstoftwo{#1}}}
\def\XKV@ifplus#1{\@ifnextcharacter+{\@firstoftwo{#1}}}
\def\XKV@makepf#1{\KV@@sp@def\XKV@prefix{#1}\def\XKV@resa{XKV}\ifx\XKV@prefix\XKV@resa
    \XKV@err{`XKV' prefix is not allowed}\let\XKV@prefix\@empty
  \else
    \edef\XKV@prefix{\ifx\XKV@prefix\@empty\else\XKV@prefix @\fi}\fi
}
\def\XKV@makehd#1{\expandafter\KV@@sp@def\expandafter\XKV@header\expandafter{#1}\edef\XKV@header{\XKV@prefix\ifx\XKV@header\@empty\else\XKV@header @\fi
  }}
\def\XKV@srstate#1#2{\ifx\@empty#2\@empty\advance\XKV@depth\@ne\fi
  \XKV@for@n{XKV@prefix,XKV@fams,XKV@tkey,XKV@na,ifXKV@st,ifXKV@pl,ifXKV@knf}\XKV@resa{\expandafter\let\csname\XKV@resa#1\expandafter
      \endcsname\csname\XKV@resa#2\endcsname
  }\ifx\@empty#1\@empty\advance\XKV@depth\m@ne\fi
}
\def\XKV@testopta#1{\XKV@ifstar{\XKV@sttrue\XKV@t@stopta{#1}}{\XKV@stfalse\XKV@t@stopta{#1}}}
\def\XKV@t@stopta#1{\XKV@ifplus{\XKV@pltrue#1}{\XKV@plfalse#1}}
\def\XKV@testoptb#1{\@testopt{\XKV@t@stoptb#1}{KV}}
\def\XKV@t@stoptb#1[#2]#3{\XKV@makepf{#2}\XKV@makehd{#3}\KV@@sp@def\XKV@tfam{#3}#1}
\def\XKV@testoptc#1{\@testopt{\XKV@t@stoptc#1}{KV}}
\def\XKV@t@stoptc#1[#2]#3{\XKV@makepf{#2}\XKV@checksanitizeb{#3}\XKV@fams
  \expandafter\XKV@sp@deflist\expandafter
    \XKV@fams\expandafter{\XKV@fams}\@testopt#1{}}
\def\XKV@testoptd#1#2{\XKV@testoptb{\edef\XKV@tempa{#2\XKV@header}\def\XKV@tempb{\@testopt{\XKV@t@stoptd#1}}\expandafter\XKV@tempb\expandafter{\XKV@tempa}}}
\def\XKV@t@stoptd#1[#2]#3{\@ifnextchar[{\XKV@sttrue#1{#2}{#3}}{\XKV@stfalse#1{#2}{#3}[]}}
\def\XKV@ifcmd#1#2#3{\def\XKV@@ifcmd##1#2##2##3\@nil##4{\def##4{##2}\ifx##4\@nnil
      \def##4{##1}\expandafter\@secondoftwo
    \else
      \expandafter\@firstoftwo
    \fi
  }\XKV@@ifcmd#1#2{\@nil}\@nil#3}
\def\XKV@getkeyname#1#2{\expandafter\XKV@g@tkeyname#1=\@nil#2}
\def\XKV@g@tkeyname#1=#2\@nil#3{\XKV@ifcmd{#1}\savevalue#3{\XKV@rkvtrue\XKV@sgfalse}{\XKV@ifcmd{#1}\gsavevalue#3{\XKV@rkvtrue\XKV@sgtrue}{\XKV@rkvfalse\XKV@sgfalse}}}
\def\XKV@getsg#1#2{\expandafter\XKV@ifcmd\expandafter{#1}\global#2\XKV@sgtrue\XKV@sgfalse
}
\def\XKV@define@default#1#2{\expandafter\def\csname\XKV@header#1@default\expandafter
    \endcsname\expandafter{\csname\XKV@header#1\endcsname{#2}}}
\def\define@key{\XKV@testoptb\XKV@define@key}
\def\XKV@define@key#1{\@ifnextchar[{\XKV@d@fine@k@y{#1}}{\expandafter\def\csname\XKV@header#1\endcsname####1}}
\def\XKV@d@fine@k@y#1[#2]{\XKV@define@default{#1}{#2}\expandafter\def\csname\XKV@header#1\endcsname##1}
\def\define@cmdkey{\XKV@testoptd\XKV@define@cmdkey{cmd}}
\def\XKV@define@cmdkey#1#2[#3]#4{\ifXKV@st\XKV@define@default{#2}{#3}\fi
  \def\XKV@tempa{\expandafter\def\csname\XKV@header#2\endcsname####1}\begingroup\expandafter\endgroup\expandafter\XKV@tempa\expandafter
    {\expandafter\def\csname#1#2\endcsname{##1}#4}}
\def\define@cmdkeys{\XKV@testoptd\XKV@define@cmdkeys{cmd}}
\def\XKV@define@cmdkeys#1#2[#3]{\XKV@sp@deflist\XKV@tempa{#2}\XKV@for@o\XKV@tempa\XKV@tempa{\edef\XKV@tempa{\noexpand\XKV@define@cmdkey{#1}{\XKV@tempa}}\XKV@tempa[#3]{}}}
\def\define@choicekey{\XKV@testopta{\XKV@testoptb\XKV@define@choicekey}}
\def\XKV@define@choicekey#1{\@testopt{\XKV@d@fine@choicekey{#1}}{}}
\def\XKV@d@fine@choicekey#1[#2]#3{\toks@{#2}\XKV@sp@deflist\XKV@tempa{#3}\XKV@toks\expandafter{\XKV@tempa}\@ifnextchar[{\XKV@d@fine@ch@icekey{#1}}{\XKV@d@fine@ch@ic@key{#1}}}
\def\XKV@d@fine@ch@icekey#1[#2]{\XKV@define@default{#1}{#2}\XKV@d@fine@ch@ic@key{#1}}
\def\XKV@d@fine@ch@ic@key#1{\ifXKV@pl\XKV@afterelsefi
    \expandafter\XKV@d@f@ne@ch@ic@k@y
  \else\XKV@afterfi
    \expandafter\XKV@d@f@ne@ch@ic@key
  \fi
  \csname\XKV@header#1\endcsname
}
\def\XKV@d@f@ne@ch@ic@key#1#2{\XKV@d@f@n@@ch@ic@k@y#1{{#2}}}
\def\XKV@d@f@ne@ch@ic@k@y#1#2#3{\XKV@d@f@n@@ch@ic@k@y#1{{#2}{#3}}}
\def\XKV@d@f@n@@ch@ic@k@y#1#2{\edef#1##1{\ifXKV@st\noexpand\XKV@sttrue\else\noexpand\XKV@stfalse\fi
    \ifXKV@pl\noexpand\XKV@pltrue\else\noexpand\XKV@plfalse\fi
    \noexpand\XKV@checkchoice[\the\toks@]{##1}{\the\XKV@toks}}\def\XKV@tempa{\def#1####1}\expandafter\XKV@tempa\expandafter{#1{##1}#2}}
\def\define@boolkey{\XKV@t@stopta{\XKV@testoptd\XKV@define@boolkey{}}}
\def\XKV@define@boolkey#1#2[#3]{\ifXKV@pl\XKV@afterelsefi
    \expandafter\XKV@d@f@ne@boolkey
  \else\XKV@afterfi
    \expandafter\XKV@d@fine@boolkey
  \fi
  \csname\XKV@header#2\endcsname{#2}{#1#2}{#3}}
\def\XKV@d@fine@boolkey#1#2#3#4#5{\XKV@d@f@ne@b@olkey#1{#2}{#3}{#4}{{\csname#3\XKV@resa\endcsname#5}}}
\def\XKV@d@f@ne@boolkey#1#2#3#4#5#6{\XKV@d@f@ne@b@olkey#1{#2}{#3}{#4}{{\csname#3\XKV@resa\endcsname#5}{#6}}}
\def\XKV@d@f@ne@b@olkey#1#2#3#4#5{\expandafter\newif\csname if#3\endcsname
  \ifXKV@st\XKV@define@default{#2}{#4}\fi
  \ifXKV@pl
    \def#1##1{\XKV@pltrue\XKV@sttrue
      \XKV@checkchoice[\XKV@resa]{##1}{true,false}#5}\else
    \def#1##1{\XKV@plfalse\XKV@sttrue
      \XKV@checkchoice[\XKV@resa]{##1}{true,false}#5}\fi
}
\def\define@boolkeys{\XKV@plfalse\XKV@testoptd\XKV@define@boolkeys{}}
\def\XKV@define@boolkeys#1#2[#3]{\XKV@sp@deflist\XKV@tempa{#2}\XKV@for@o\XKV@tempa\XKV@tempa{\expandafter\XKV@d@fine@boolkeys\expandafter{\XKV@tempa}{#1}{#3}}}
\def\XKV@d@fine@boolkeys#1#2#3{\expandafter\XKV@d@f@ne@b@olkey\csname\XKV@header#1\endcsname
    {#1}{#2#1}{#3}{{\csname#2#1\XKV@resa\endcsname}}}
\def\XKV@cc{\XKV@testopta{\@testopt\XKV@checkchoice{}}}
\def\XKV@checkchoice[#1]#2#3{\def\XKV@tempa{#1}\ifXKV@st\lowercase{\fi
  \ifx\XKV@tempa\@empty
    \def\XKV@tempa{\XKV@ch@ckch@ice\@nil{#2}{#3}}\else
    \def\XKV@tempa{\XKV@ch@ckchoice#1\@nil{#2}{#3}}\fi
  \ifXKV@st}\fi\XKV@tempa
}
\def\XKV@ch@ckchoice#1#2\@nil#3#4{\def\XKV@tempa{#2}\ifx\XKV@tempa\@empty\XKV@afterelsefi
    \XKV@ch@ckch@ice#1{#3}{#4}\else\XKV@afterfi
    \XKV@@ch@ckchoice#1#2{#3}{#4}\fi
}
\def\XKV@ch@ckch@ice#1#2#3{\def\XKV@tempa{#1}\ifx\XKV@tempa\@nnil\let\XKV@tempa\@empty\else
    \def\XKV@tempa{\def#1{#2}}\fi
  \in@{,#2,}{,#3,}\ifin@
    \ifXKV@pl
      \XKV@addtomacro@n\XKV@tempa\@firstoftwo
    \else
      \XKV@addtomacro@n\XKV@tempa\@firstofone
    \fi
  \else
    \ifXKV@pl
      \XKV@addtomacro@n\XKV@tempa\@secondoftwo
    \else
      \XKV@toks{#2}\XKV@err{value `\the\XKV@toks' is not allowed}\XKV@addtomacro@n\XKV@tempa\@gobble
    \fi
  \fi
  \XKV@tempa
}
\def\XKV@@ch@ckchoice#1#2#3#4{\edef\XKV@tempa{\the\count@}\count@\z@
  \def\XKV@tempb{#3}\def\XKV@tempc##1,{\def#1{##1}\ifx#1\@nnil
      \def#1{#3}\def#2{-1}\count@\XKV@tempa
      \ifXKV@pl
        \let\XKV@tempd\@secondoftwo
      \else
        \XKV@toks{#3}\XKV@err{value `\the\XKV@toks' is not allowed}\let\XKV@tempd\@gobble
      \fi
    \else
      \ifx#1\XKV@tempb
        \edef#2{\the\count@}\count@\XKV@tempa
        \ifXKV@pl
          \let\XKV@tempd\XKV@@ch@ckch@ice
        \else
          \let\XKV@tempd\XKV@@ch@ckch@ic@
        \fi
      \else
        \advance\count@\@ne
        \let\XKV@tempd\XKV@tempc
      \fi
    \fi
    \XKV@tempd
  }\XKV@tempc#4,\@nil,}
\def\XKV@@ch@ckch@ice#1\@nil,{\@firstoftwo}
\def\XKV@@ch@ckch@ic@#1\@nil,{\@firstofone}
\def\key@ifundefined{\@testopt\XKV@key@ifundefined{KV}}
\def\XKV@key@ifundefined[#1]#2{\XKV@makepf{#1}\XKV@checksanitizeb{#2}\XKV@fams
  \expandafter\XKV@sp@deflist\expandafter
    \XKV@fams\expandafter{\XKV@fams}\XKV@key@if@ndefined
}
\def\XKV@key@if@ndefined#1{\XKV@knftrue
  \KV@@sp@def\XKV@tkey{#1}\XKV@whilist\XKV@fams\XKV@tfam\ifXKV@knf\fi{\XKV@makehd\XKV@tfam
    \XKV@ifundefined{\XKV@header\XKV@tkey}{}{\XKV@knffalse}}\ifXKV@knf
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\def\disable@keys{\XKV@testoptb\XKV@disable@keys}
\def\XKV@disable@keys#1{\XKV@checksanitizeb{#1}\XKV@tempa
  \XKV@for@o\XKV@tempa\XKV@tempa{\XKV@ifundefined{\XKV@header\XKV@tempa}{\XKV@err{key `\XKV@tempa' undefined}}{\edef\XKV@tempb{\noexpand\XKV@warn{key `\XKV@tempa' has been disabled}}\XKV@ifundefined{\XKV@header\XKV@tempa @default}{\edef\XKV@tempc{\noexpand\XKV@define@key{\XKV@tempa}}}{\edef\XKV@tempc{\noexpand\XKV@define@key{\XKV@tempa}[]}}\expandafter\XKV@tempc\expandafter{\XKV@tempb}}}}
\def\presetkeys{\XKV@stfalse\XKV@testoptb\XKV@presetkeys}
\def\gpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@presetkeys}
\def\XKV@presetkeys#1#2{\XKV@pr@setkeys{#1}{preseth}\XKV@pr@setkeys{#2}{presett}}
\def\XKV@pr@setkeys#1#2{\XKV@ifundefined{XKV@\XKV@header#2}{\XKV@checksanitizea{#1}\XKV@tempa
    \ifXKV@st\expandafter\global\fi\expandafter\def\csname
      XKV@\XKV@header#2\expandafter\endcsname\expandafter{\XKV@tempa}}{\expandafter\XKV@merge\csname XKV@\XKV@header
      #2\endcsname{#1}\XKV@getkeyname
  }}
\def\delpresetkeys{\XKV@stfalse\XKV@testoptb\XKV@delpresetkeys}
\def\gdelpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@delpresetkeys}
\def\XKV@delpresetkeys#1#2{\XKV@d@lpresetkeys{#1}{preseth}\XKV@d@lpresetkeys{#2}{presett}}
\def\XKV@d@lpresetkeys#1#2{\XKV@ifundefined{XKV@\XKV@header#2}{\XKV@err{no presets defined for `\XKV@header'}}{\expandafter\XKV@delete\csname XKV@\XKV@header
      #2\endcsname{#1}\XKV@getkeyname
  }}
\def\unpresetkeys{\XKV@stfalse\XKV@testoptb\XKV@unpresetkeys}
\def\gunpresetkeys{\XKV@sttrue\XKV@testoptb\XKV@unpresetkeys}
\def\XKV@unpresetkeys{\XKV@ifundefined{XKV@\XKV@header preseth}{\XKV@err{no presets defined for `\XKV@header'}}{\ifXKV@st\expandafter\global\fi\expandafter\let
      \csname XKV@\XKV@header preseth\endcsname\@undefined
    \ifXKV@st\expandafter\global\fi\expandafter\let
      \csname XKV@\XKV@header presett\endcsname\@undefined
  }}
\def\savekeys{\XKV@stfalse\XKV@testoptb\XKV@savekeys}
\def\gsavekeys{\XKV@sttrue\XKV@testoptb\XKV@savekeys}
\def\XKV@savekeys#1{\XKV@ifundefined{XKV@\XKV@header save}{\XKV@checksanitizeb{#1}\XKV@tempa
    \ifXKV@st\expandafter\global\fi\expandafter\def\csname XKV@\XKV@header save\expandafter\endcsname\expandafter{\XKV@tempa}}{\expandafter\XKV@merge\csname XKV@\XKV@header
      save\endcsname{#1}\XKV@getsg
  }}
\def\delsavekeys{\XKV@stfalse\XKV@testoptb\XKV@delsavekeys}
\def\gdelsavekeys{\XKV@sttrue\XKV@testoptb\XKV@delsavekeys}
\def\XKV@delsavekeys#1{\XKV@ifundefined{XKV@\XKV@header save}{\XKV@err{no save keys defined for `\XKV@header'}}{\expandafter\XKV@delete\csname XKV@\XKV@header
      save\endcsname{#1}\XKV@getsg
  }}
\def\unsavekeys{\XKV@stfalse\XKV@testoptb\XKV@unsavekeys}
\def\gunsavekeys{\XKV@sttrue\XKV@testoptb\XKV@unsavekeys}
\def\XKV@unsavekeys{\XKV@ifundefined{XKV@\XKV@header save}{\XKV@err{no save keys defined for `\XKV@header'}}{\ifXKV@st\expandafter\global\fi\expandafter\let
      \csname XKV@\XKV@header save\endcsname\@undefined
  }}
\def\setkeys{\XKV@testopta{\XKV@testoptc\XKV@setkeys}}
\def\XKV@setkeys[#1]#2{\XKV@checksanitizea{#2}\XKV@resb
  \let\XKV@naa\@empty
  \XKV@for@o\XKV@resb\XKV@tempa{\expandafter\XKV@g@tkeyname\XKV@tempa=\@nil\XKV@tempa
    \XKV@addtolist@x\XKV@naa\XKV@tempa
  }\ifnum\XKV@depth=\z@\let\XKV@rm\@empty\fi
  \XKV@usepresetkeys{#1}{preseth}\expandafter\XKV@s@tkeys\expandafter{\XKV@resb}{#1}\XKV@usepresetkeys{#1}{presett}\let\CurrentOption\@empty
}
\def\XKV@usepresetkeys#1#2{\XKV@presettrue
  \XKV@for@eo\XKV@fams\XKV@tfam{\XKV@makehd\XKV@tfam
    \XKV@ifundefined{XKV@\XKV@header#2}{}{\XKV@toks\expandafter\expandafter\expandafter
        {\csname XKV@\XKV@header#2\endcsname}\@expandtwoargs\XKV@s@tkeys{\the\XKV@toks}{\XKV@naa\ifx\XKV@naa\@empty\else,\fi#1}}}\XKV@presetfalse
}
\def\XKV@s@tkeys#1#2{\XKV@sp@deflist\XKV@na{#2}\XKV@for@n{#1}\CurrentOption{\expandafter\XKV@s@tk@ys\CurrentOption==\@nil
  }}
\def\XKV@s@tk@ys#1=#2=#3\@nil{\XKV@g@tkeyname#1=\@nil\XKV@tkey
  \expandafter\KV@@sp@def\expandafter\XKV@tkey\expandafter{\XKV@tkey}\ifx\XKV@tkey\@empty
    \XKV@toks{#2}\ifcat$\the\XKV@toks$\else
      \XKV@err{no key specified for value `\the\XKV@toks'}\fi
  \else
    \@expandtwoargs\in@{,\XKV@tkey,}{,\XKV@na,}\ifin@\else
      \XKV@knftrue
      \KV@@sp@def\XKV@tempa{#2}\ifXKV@preset\XKV@s@tk@ys@{#3}\else
        \ifXKV@pl
          \XKV@for@eo\XKV@fams\XKV@tfam{\XKV@makehd\XKV@tfam
            \XKV@s@tk@ys@{#3}}\else
          \XKV@whilist\XKV@fams\XKV@tfam\ifXKV@knf\fi{\XKV@makehd\XKV@tfam
            \XKV@s@tk@ys@{#3}}\fi
      \fi
      \ifXKV@knf
        \ifXKV@inpox
          \ifx\XKV@doxs\relax
            \ifx\@currext\@clsextension\else
              \let\CurrentOption\XKV@tkey\@unknownoptionerror
            \fi
          \else\XKV@doxs\fi
        \else
          \ifXKV@st
            \XKV@addtolist@o\XKV@rm\CurrentOption
          \else
            \XKV@err{`\XKV@tkey' undefined in families `\XKV@fams'}\fi
        \fi
      \else
        \ifXKV@inpox\ifx\XKV@testclass\XKV@documentclass
          \expandafter\XKV@useoption\expandafter{\CurrentOption}\fi\fi
      \fi
    \fi
  \fi
}
\def\XKV@s@tk@ys@#1{\XKV@ifundefined{\XKV@header\XKV@tkey}{}{\XKV@knffalse
    \XKV@ifundefined{XKV@\XKV@header save}{}{\expandafter\XKV@testsavekey\csname XKV@\XKV@header
        save\endcsname\XKV@tkey
    }\ifXKV@rkv
      \ifXKV@sg\expandafter\global\fi\expandafter\let
        \csname XKV@\XKV@header\XKV@tkey @value\endcsname\XKV@tempa
    \fi
    \expandafter\XKV@replacepointers\expandafter{\XKV@tempa}\ifx\@empty#1\@empty\XKV@afterelsefi
      \XKV@ifundefined{\XKV@header\XKV@tkey @default}{\XKV@err{no value specified for key `\XKV@tkey'}}{\expandafter\expandafter\expandafter\XKV@default
          \csname\XKV@header\XKV@tkey @default\endcsname\@nil
      }\else\XKV@afterfi
      \XKV@srstate{@\romannumeral\XKV@depth}{}\csname\XKV@header\XKV@tkey\expandafter
        \endcsname\expandafter{\XKV@tempa}\relax
      \XKV@srstate{}{@\romannumeral\XKV@depth}\fi
  }}
\def\XKV@testsavekey#1#2{\ifXKV@rkv\else
    \XKV@for@o#1\XKV@resa{\expandafter\XKV@ifcmd\expandafter{\XKV@resa}\global\XKV@resa{\ifx#2\XKV@resa
          \XKV@rkvtrue\XKV@sgtrue
        \fi
      }{\ifx#2\XKV@resa
          \XKV@rkvtrue\XKV@sgfalse
        \fi
      }}\fi
}
\def\XKV@replacepointers#1{\let\XKV@tempa\@empty
  \let\XKV@resa\@empty
  \XKV@r@placepointers#1\usevalue\@nil
}
\def\XKV@r@placepointers#1\usevalue#2{\XKV@addtomacro@n\XKV@tempa{#1}\def\XKV@tempb{#2}\ifx\XKV@tempb\@nnil\else\XKV@afterfi
    \XKV@ifundefined{XKV@\XKV@header#2@value}{\XKV@err{no value recorded for key `#2'; ignored}\XKV@r@placepointers
    }{\@expandtwoargs\in@{,#2,}{,\XKV@resa,}\ifin@\XKV@afterelsefi
        \XKV@err{back linking pointers; pointer replacement canceled}\else\XKV@afterfi
        \XKV@addtolist@x\XKV@resa{#2}\expandafter\expandafter\expandafter\XKV@r@placepointers
          \csname XKV@\XKV@header#2@value\endcsname
      \fi
    }\fi
}
\def\XKV@default#1#2\@nil{\expandafter\edef\expandafter\XKV@tempa
    \expandafter{\expandafter\@gobble\string#1}\edef\XKV@tempb{\XKV@header\XKV@tkey}\@onelevel@sanitize\XKV@tempb
  \ifx\XKV@tempa\XKV@tempb
    \begingroup
      \expandafter\def\csname\XKV@header\XKV@tkey\endcsname##1{\gdef\XKV@tempa{##1}}\csname\XKV@header\XKV@tkey @default\endcsname
    \endgroup
    \XKV@ifundefined{XKV@\XKV@header save}{}{\expandafter\XKV@testsavekey\csname XKV@\XKV@header
        save\endcsname\XKV@tkey
    }\ifXKV@rkv
      \ifXKV@sg\expandafter\global\fi\expandafter\let
        \csname XKV@\XKV@header\XKV@tkey @value\endcsname\XKV@tempa
    \fi
    \expandafter\XKV@replacepointers\expandafter
      {\XKV@tempa}\XKV@afterelsefi
    \XKV@srstate{@\romannumeral\XKV@depth}{}\expandafter#1\expandafter{\XKV@tempa}\relax
    \XKV@srstate{}{@\romannumeral\XKV@depth}\else\XKV@afterfi
    \XKV@srstate{@\romannumeral\XKV@depth}{}\csname\XKV@header\XKV@tkey @default\endcsname\relax
    \XKV@srstate{}{@\romannumeral\XKV@depth}\fi
}
\def\setrmkeys{\XKV@testopta{\XKV@testoptc\XKV@setrmkeys}}
\def\XKV@setrmkeys[#1]{\def\XKV@tempa{\XKV@setkeys[#1]}\expandafter\XKV@tempa\expandafter{\XKV@rm}}
\XKVcatcodes
%
 \fi
\else
  \ProvidesFile{pst-xkey.tex}
    [2005/11/25 v1.6 PSTricks specialization of xkeyval (HA)]
  \@addtofilelist{pst-xkey.tex}
  \RequirePackage{xkeyval}
\fi
\def\pst@famlist{}
\def\pst@addfams#1{\XKV@for@n{#1}\XKV@tempa{\@expandtwoargs\in@{,\XKV@tempa,}{,\pst@famlist,}\ifin@\else\edef\pst@famlist{\pst@famlist,\XKV@tempa}\fi
  }}
\def\psset{\expandafter\@testopt\expandafter\pss@t\expandafter{\pst@famlist}}
\def\pss@t[#1]#2{\setkeys+[psset]{#1}{#2}\ignorespaces}
\def\@psset#1,\@nil{\edef\XKV@tempa{\noexpand\setkeys+[psset]{\pst@famlist}}\XKV@tempa{#1}}
\PSTXKeyCatcodes
%
 \fi
\def\fileversion{3.00}
\def\filedate{2008/01/01}
\message{`pstricks-add' v\fileversion, \filedate\space (dr,hv)}
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
\SpecialCoor
\pst@addfams{pstricks-add}
\pstheader{pstricks-add.pro}\newdimen\pst@dimm \newdimen\pst@dimn \newdimen\pst@dimo \newdimen\pst@dimp \newcount\pst@cntm \newcount\pst@cntn \newcount\pst@cnto \newcount\pst@cntp \newcount\@zero\@zero=0\relax
\chardef\f@ur=4
\def\psPiFour{12.566371}
\def\psPiTwo{6.283185}
\def\psPi{3.14159265}
\def\psPiH{1.570796327}
\newdimen\pstRadUnit
\newdimen\pstRadUnitInv
\pstRadUnit=1.047198cm \pstRadUnitInv=0.95493cm \def\pst@getdimdim#1 #2 #3\@nil{\def\pst@tempA{#2}\ifx\pst@tempA\@empty
    \pssetlength\pst@dimn{#1}\pst@dimm=\z@ \else \pssetlength\pst@dimm{#1}\pssetlength\pst@dimn{#2}\fi }
\def\pst@getxdimdim#1 #2 #3\@nil{\def\pst@tempA{#2}\ifx\pst@tempA\@empty
    \pssetxlength\pst@dimn{#1}\pst@dimm=\z@
  \else \pssetxlength\pst@dimm{#1}\pssetxlength\pst@dimn{#2}\fi }
\def\pst@getydimdim#1 #2 #3\@nil{\def\pst@tempA{#2}
  \ifx\pst@tempA\@empty
    \pssetylength\pst@dimn{#1}
    \pst@dimm=\z@
  \else
    \pssetylength\pst@dimm{#1}\pssetylength\pst@dimn{#2}\fi }
\def\@fornoop#1\@@#2#3{}
\long\def\@for#1:=#2\do#3{\expandafter\def\expandafter\@fortmp\expandafter{#2}\ifx\@fortmp\@empty \else
    \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}
\long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else
       #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi}
\long\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
       \expandafter\@fornoop \else
      #4\relax\expandafter\@iforloop\fi#2\@@#3{#4}}
\def\psforeach#1#2#3{\begingroup
    \edef\reserved@a{#2}\@for#1:=\reserved@a\do{#3}\endgroup }
\def\pst@mod#1#2#3{\begingroup \pst@cntm=#1\pst@cntn=#2\relax \pst@cnto=\pst@cntm \divide\pst@cntm by \pst@cntn \multiply\pst@cntn by \pst@cntm \advance\pst@cnto by -\pst@cntn \edef\value{\endgroup\def\noexpand#3{\number\pst@cnto}}\value }
\def\pst@max#1#2#3{\begingroup \pst@cntm=#1\pst@cntn=#2\relax \ifnum\pst@cntm<\pst@cntn\pst@cntm=\pst@cntn\fi
  \global#3=\the\pst@cntm \endgroup }
\def\pst@maxdim#1#2#3{\begingroup \pst@dimm=#1\pst@dimn=#2\relax \ifdim\pst@dimm<\pst@dimn\pst@dimm=\pst@dimn\fi
  \global#3=\the\pst@dimm \endgroup }
\def\pst@abs#1#2{\begingroup \pst@cntm=#1\relax \ifnum\pst@cntm<\z@\pst@cntm=-\pst@cntm\fi \global#2=\the\pst@cntm
  \endgroup }
\def\pst@absdim#1#2{\begingroup \pst@dimm=#1\relax \ifdim\pst@dimm<\z@\pst@dimm=-\pst@dimm\fi \global#2=\the\pst@dimm \endgroup }
\define@boolkey[psset]{pstricks-add}[Pst@]{CMYK}[true]{}
\psset[pstricks-add]{CMYK=true}
\def\defineTColor{\@ifnextchar[{\defineTColor@i}{\defineTColor@i[]}}
\def\defineTColor@i[#1]#2#3{\def\pst@tempA{#1}\newpsstyle{#2}{fillstyle=vlines,hatchwidth=0.1\pslinewidth,
     hatchsep=1\pslinewidth,hatchcolor=#3}\ifx\pst@tempA\@empty\else\psset{#1}\fi }
\defineTColor{TRed}{red}
\defineTColor{TGreen}{green}
\defineTColor{TBlue}{blue}
\define@key[psset]{pstricks-add}{fsAngle}{\pst@getangle{#1}\pst@fsAngle }
\define@key[psset]{pstricks-add}{fsOrigin}{\pst@@getcoor{#1}\edef\pst@fsOrigin{\pst@coor T }}
\psset[pstricks-add]{fsOrigin={0,0},fsAngle=137.50775}
\def\psfs@spiral{\pst@fill{\pst@fsOrigin \pst@usecolor\psfillcolor clip newpath
0 .1 500 { dup dup sqrt 4 div 0 360 arc fill \pst@fsAngle rotate } for }}
\def\rmultiput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rmultiput@i}{\rmultiput@i[]}}}
\def\rmultiput@i[#1]{\begingroup\psset{#1}\rmultiput@ii}
\def\rmultiput@ii#1{\def\@rmultiputArg{#1}\@ifnextchar({\rmultiput@iii}{\rmultiput@iii(\z@,\z@)}}
\def\rmultiput@iii(#1){\pst@killglue \if@star\rput*(#1){\@rmultiputArg}
  \else\rput(#1){\@rmultiputArg}\fi
  \@ifnextchar({\rmultiput@iii}{\endgroup}}

\def\psrotate{\pst@object{psrotate}}
\def\psrotate@i(#1)#2{\pst@killglue
  \begingroup \use@par\pst@makebox{\psrotate@ii(#1){#2}}}
\def\psrotate@ii(#1)#2{\pst@getcoor{#1}\pst@tempA \pst@getangle{#2}\pst@tempB \leavevmode \pst@Verb{{ \pst@tempA /yRot ED /xRot ED 
       \pst@tempB dup cos /cosA ED sin /sinA ED
       /ax cosA def
       /by sinA def
       /cx sinA neg def
       /dy cosA def
       /ex xRot cosA mul neg xRot add yRot sinA mul add def
       /fy xRot sinA mul neg yRot add yRot cosA mul sub def
       [ax by cx dy ex fy] concat } \tx@TMChange }\box\pst@hbox \pst@Verb{ \tx@TMRestore }\endgroup}
\def\psHomothetie{\pst@object{psHomothetie}}
\def\psHomothetie@i(#1)#2{\begin@SpecialObj \pst@getcoor{#1}\pst@tempA \pst@makebox{\psHomothetie@ii{#2}}}\def\psHomothetie@ii#1{\pst@Verb{{ \pst@tempA  /yH ED /xH ED  
      [#1 0 0 #1 #1 xH mul neg xH add #1 yH mul neg yH add] concat }
      \tx@TMChange }\box\pst@hbox \pst@Verb{\tx@TMRestore}\end@SpecialObj}
\define@key[psset]{}{dash}{\pst@expandafter\psset@@dash{#1}\@nil }
\define@key[psset]{pstricks-add}{maxdashes}{\def\psk@maxdashes{#1}}
\def\psset@@dash#1\@nil{\def\psk@dash{}\pst@cntm0
 \def\next##1 ##2\relax{\expandafter\ifnum\psk@maxdashes>\pst@cntm\relax  \edef\@tempa{##1}\ifx\@tempa\@empty\else \pssetlength\pst@dimc{##1}\advance\pst@cntm by 1
       \edef\psk@dash{\psk@dash\space\pst@number\pst@dimc}\fi \edef\@tempa{##2}\ifx\@tempa\@empty\else \ifx\@tempa\space\else \next##2\relax \fi\fi \else \@pstrickserr{Number of dashes > \psk@maxdashes. Increasing 
        'maxdashes' might work.}\@ehpa \fi }\expandafter\next#1 \relax}
\def\psls@dashed{\ifpsdashadjust
    [ \psk@dash ] \pst@linetype\space \tx@DashLine
  \else
    [ \psk@dash ] 0 setdash stroke
  \fi}
\pst@def{DashLine}<
    dup 0 gt
    { /a .5 def PathLength exch div }
    { pop /a 1 def PathLength } ifelse
    /b ED dup /X ED 0 get /y ED /z 0 X {add} forall def b a .5 sub 2 mul y mul sub z Div round
    z mul a .5 sub 2 mul y mul add b exch Div
/z ED false X { z mul } forall X astore {0 gt or} forall
    { X 1 a sub y mul }
    { [ 1 0 ] 0 }
    ifelse
    setdash stroke >
\define@key[psset]{pstricks-add}{intSeparator}{\def\psk@intSeparator{#1}}
\def\psFormatInt{\def\pst@par{}\pst@object{psFormatInt}}
\def\psFormatInt@i#1{{\pst@killglue
  \use@par
  \count1=#1\count2=\count1
  \ifnum\count1=0 0\else
    \ifnum\count1>999999
    \count3=\count1
    \divide\count3 by 1000000
    \the\count3\psk@intSeparator\relax
    \multiply\count3 by 1000000
    \advance\count1 by -\count3 \fi \ifnum\count2>999
    \count3=\count1
    \divide\count3 by 1000
    \ifnum\count2>99999
	\ifnum\count3<100 0\fi
	\ifnum\count3<10 0\fi
    \fi \the\count3\psk@intSeparator\relax
    \multiply\count3 by 1000
    \advance\count1 by -\count3 \fi \ifnum\count2>999
    \ifnum\count1<100 0\fi
    \ifnum\count1<10 0\fi
  \fi \the\count1
  \fi }\ignorespaces}
\define@key[psset]{pstricks-add}{braceWidth}{\pst@getlength{#1}\psk@braceWidth}
\define@key[psset]{pstricks-add}{bracePos}{\pst@checknum{#1}\psk@bracePos}
\define@key[psset]{pstricks-add}{braceWidthInner}{\pst@getlength{#1}\psk@braceWidthInner}
\define@key[psset]{pstricks-add}{braceWidthOuter}{\pst@getlength{#1}\psk@braceWidthOuter}
\def\psbrace{\pst@object{psbrace}}
\def\psbrace@i(#1)(#2)#3{\addbefore@par{ref=lb,linewidth=0.01pt,fillstyle=solid,fillcolor=black}
  \begin@SpecialObj
  \if@star\def\pst@tempC{true }\else\def\pst@tempC{false }\fi
  \ifx\psk@rot\empty\def\psk@@rot{0}\else\let\psk@@rot\psk@rot\fi
  \def\psk@rot{Alpha \psk@@rot\space add 90 sub}\pst@getcoor{#1}\pst@tempA
  \pst@getcoor{#2}\pst@tempB
  \rput(!
    /ifStar \pst@tempC def
    /radius1 \psk@braceWidthOuter def
    /radius2 \psk@braceWidthInner def
    /Alpha \pst@tempA \pst@tempB 3 -1 roll sub 3 1 roll exch sub atan def 
    /Length \pst@tempA \pst@tempB Pyth2 def
    /Left { Length \psk@bracePos\space mul } bind def
    /Right { Length Left sub } bind def
    /Width \psk@braceWidth def
    /pop4 { pop pop pop pop } def
    gsave
    [ Alpha cos Alpha sin Alpha sin neg Alpha cos \pst@tempA ] concat 
    0 0 moveto
    0 radius2 neg radius2 radius2 neg radius2 arcto pop4
    Left radius2 sub radius1 sub 0 rlineto 
    Left radius2 neg Left radius2 radius1 add neg radius1 arcto pop4
    currentpoint /y@Label ED /x@Label ED
    Left radius2 neg Left radius1 add radius2 neg radius1 arcto pop4
    Right radius2 sub radius1 sub 0 rlineto
    Length radius2 neg Length 0 radius2 arcto pop4
Length radius2 Width add neg Length radius2 sub radius2 Width add neg radius2 arcto pop4
    Right radius2 sub radius1 sub neg 0 rlineto
    Left radius1 add Width radius1 add radius2 add neg radius1 90 180 arc
    Left radius1 sub Width radius1 add radius2 add neg radius1 0 90 arc
    Left radius2 sub radius1 sub neg 0 rlineto 
    radius2 Width neg radius2 270 180 arcn
    0 0 lineto 
    gsave
    ifStar { \pst@usecolor\pslinecolor }{ \pst@usecolor\psfillcolor } ifelse fill 
    grestore
    0.01 setlinewidth \pst@usecolor\pslinecolor stroke
    0 0 moveto
    grestore
/Dh radius1 radius2 add Width add def
    \pst@tempA \pst@tempB 3 -1 roll sub 3 1 roll exch sub \psk@bracePos\space mul exch \psk@bracePos\space mul  \pst@tempA 3 -1 roll add Dh Alpha cos mul sub	  \psk@nodesepB sub					  3 1 roll add Dh Alpha sin mul add \psk@nodesepA add 
    exch \tx@UserCoor ){#3}
  \end@SpecialObj}
\edef\pst@arrowtable{\pst@arrowtable,v-v,V-V,f-f,F-F,t-t,T-T}

\define@key[psset]{pstricks-add}{veearrowlength}{\pst@getlength{#1}\psk@veearrowlength}
\psset[pstricks-add]{veearrowlength=3mm} \define@key[psset]{pstricks-add}{veearrowangle}{\pst@getangle{#1}\psk@veearrowangle}
\psset[pstricks-add]{veearrowangle=30} \define@key[psset]{pstricks-add}{veearrowlinewidth}{\pst@getlength{#1}\psk@veearrowlinewidth}
\psset[pstricks-add]{veearrowlinewidth=.35mm} 

\define@key[psset]{pstricks-add}{filledveearrowlength}{\pst@getlength{#1}\psk@filledveearrowlength}
\psset[pstricks-add]{filledveearrowlength=3mm} \define@key[psset]{pstricks-add}{filledveearrowangle}{\pst@getangle{#1}\psk@filledveearrowangle}
\psset[pstricks-add]{filledveearrowangle=15} \define@key[psset]{pstricks-add}{filledveearrowlinewidth}{\pst@getlength{#1}\psk@filledveearrowlinewidth}
\psset[pstricks-add]{filledveearrowlinewidth=.35mm} \define@key[psset]{pstricks-add}{arrowLW}{\pst@getlength{#1}\psk@arrowLW}
\def\psas@o{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
  {\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot }
\@namedef{psas@*}{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
  {\pst@usecolor\psfillcolor false} false \psk@dotsize \tx@EndDot}

\pst@def{VeeArrow}<1 setlinecap            1 setlinejoin            setlinewidth            /y ED                2 div /a ED                /t ED                a sin a cos div y mul /x ED        t { 1 -1 scale } if            x neg y moveto            0 0 L                x y L                {closepath gsave fill grestore} if    stroke                0 t {y 2 mul} {0} ifelse moveto>    



\@namedef{psas@v}{false false \psk@veearrowangle \psk@veearrowlength \psk@veearrowlinewidth \tx@VeeArrow}
\@namedef{psas@V}{false true \psk@veearrowangle \psk@veearrowlength \psk@veearrowlinewidth \tx@VeeArrow}
\@namedef{psas@f}{true false \psk@filledveearrowangle \psk@filledveearrowlength \psk@filledveearrowlinewidth \tx@VeeArrow}
\@namedef{psas@F}{true true \psk@filledveearrowangle \psk@filledveearrowlength \psk@filledveearrowlinewidth \tx@VeeArrow}



\define@key[psset]{pstricks-add}{tickarrowlength}{\pst@getlength{#1}\psk@tickarrowlength}
\psset[pstricks-add]{tickarrowlength=1.5mm} \define@key[psset]{pstricks-add}{tickarrowlinewidth}{\pst@getlength{#1}\psk@tickarrowlinewidth}
\psset[pstricks-add]{tickarrowlinewidth=.35mm} 

\pst@def{TickArrow}<1 setlinecap            1 setlinejoin            setlinewidth            /y ED                /t ED                t { 1 -1 scale } if            y neg y moveto            y y neg L                stroke                0 0 moveto>                

\@namedef{psas@t}{ false \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow }
\@namedef{psas@T}{ true \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow }
\newdimen\pshooklength
\newdimen\pshookwidth
\define@key[psset]{pstricks-add}{hooklength}{\pssetlength\pshooklength{#1}}
\define@key[psset]{pstricks-add}{hookwidth}{\pssetlength\pshookwidth{#1}}
\edef\pst@arrowtable{\pst@arrowtable,H-H,h-h} \def\tx@RHook{RHook }         \def\tx@Rhook{Rhook }         \@namedef{psas@H}{/RHook {
    /x ED                     /y ED                     /z CLW 2 div def          x y moveto                x 0 0 0 0 y 
    curveto                   stroke 
    0 y moveto                } def
  \pst@number\pshooklength
  \pst@number\pshookwidth
  \tx@RHook 
}
\@namedef{psas@h}{/Rhook {
    CLW mul 			add dup 			2 div /w ED	 		mul dup /h ED mul 		/a ED  
    w neg h abs moveto 0 0 L 
    gsave 
    stroke grestore 
  } def
  0 \psk@arrowlength \psk@arrowsize \tx@Rhook 
}
\define@boolkey[psset]{pstricks-add}[ps]{ArrowFill}[true]{}
\pst@def{Arrow}<{CLW mul add dup 2 div
    /w ED mul dup
    /h ED mul
    /a ED { 0 h T 1 -1 scale } if
    gsave
    \ifpsArrowFill\else\pst@number\pslinewidth \pst@arrowscale\space div SLW \fi
    w neg h moveto
    0 0 L w h L w neg a neg rlineto
    \ifpsArrowFill gsave fill grestore \else gsave closepath stroke grestore \fi
    grestore
    0 h a sub moveto
}>
\define@key[psset]{pstricks-add}{nArrowsA}{\def\psk@nArrowsA{#1}}
\define@key[psset]{pstricks-add}{nArrowsB}{\def\psk@nArrowsB{#1}}
\define@key[psset]{pstricks-add}{nArrows}{\def\psk@nArrowsA{#1}\def\psk@nArrowsB{#1}}
\@namedef{psas@>>}{\psk@nArrowsA\space 1 sub {
      false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
      0 h a sub T
    } repeat
    gsave
    newpath
    false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
    CP
    grestore
    moveto
}
\@namedef{psas@<<}{true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
    0 h neg a add T
  \psk@nArrowsB\space 2 sub {
    false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
    0 h neg a add T
  } repeat
  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
  0 h a 5 mul 2 div sub moveto
}
\define@key[psset]{pstricks-add}{ArrowInside}{\def\pst@tempArrow{#1}\ifx\pst@tempArrow\@empty \def\psk@ArrowInside{} \else \begingroup \pst@activearrows \xdef\pst@tempg{<#1}\endgroup \expandafter\psset@@ArrowInside\pst@tempg\@empty-\@empty\@nil \if@pst\else\@pstrickserr{Bad intermediate arrow specification: #1}\@ehpa\fi \fi }
\def\psset@@ArrowInside#1-#2\@empty#3\@nil{\@psttrue
  \def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}\expandafter\next\pst@arrowtable,#1-#1,\@nil
  \@ifundefined{psas@#2}{\@pstfalse\def\psk@ArrowInside{}}{\def\psk@ArrowInside{#2}}}
\psset{ArrowInside={}}
\def\pst@addarrowdef{\addto@pscode{/ArrowA {
      \ifx\psk@arrowA\@empty
        \pst@oplineto
      \else
	\pst@arrowdef{A}
	moveto
      \fi
    } def
    /ArrowB { 
      \ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi 
    } def
/ArrowInside { 
      \ifx\psk@ArrowInside\@empty \else \pst@arrowdefA{Inside} \fi 
    } def
  }}
\def\pst@arrowdefA#1{\ifnum\pst@repeatarrowsflag>\z@ 
    /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c 
  \fi   
  \tx@BeginArrow
  \psk@arrowscale
  \@nameuse{psas@\@nameuse{psk@Arrow#1}}
  \tx@EndArrow }
\define@key[psset]{pstricks-add}{ArrowInsidePos}{\pst@checknum{#1}\psk@ArrowInsidePos}\def\begin@ClosedObj{\leavevmode \pst@killglue \begingroup \use@par \solid@star \ifpsdoubleline\pst@setdoublesep\fi \pst@addarrowdef \init@pscode}
\define@key[psset]{pstricks-add}{ArrowInsideNo}{\pst@checknum{#1}\psk@ArrowInsideNo}\define@key[psset]{pstricks-add}{ArrowInsideOffset}{\pst@checknum{#1}\psk@ArrowInsideOffset}\def\arrowType@H{H}
\pst@def{Line}<
  NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if
  (\psk@ArrowInside) length 0 gt { 
    \ifx\psk@arrowA\arrowType@H   \pst@number\pshooklength  \else
      \psk@arrowsize\space CLW mul add dup \psk@arrowlength\space mul exch \psk@arrowinset mul neg add  
    \fi
    /arrowlength exch def 
    4 copy 				/y1 ED /x1 ED /y2 ED /x2 ED 	/Alpha y2 y1 sub x2 x1 sub Atan def ArrowA 				x1 Alpha cos arrowlength mul add	y1 Alpha sin arrowlength mul add	/n n 1 sub def
    n {
      4 copy
      /y1 ED /x1 ED /y2 ED /x2 ED
      x1 y1
      \psk@ArrowInsidePos\space 1 gt {
        /Alpha y2 y1 sub x2 x1 sub Atan def
        /ArrowPos \psk@ArrowInsideOffset\space def
        /Length x2 x1 sub y2 y1 sub Pyth def
        /dArrowPos \psk@ArrowInsidePos\space abs def
        {
          /ArrowPos ArrowPos dArrowPos add def
          ArrowPos Length gt { exit } if
          x1 Alpha cos ArrowPos mul add
          y1 Alpha sin ArrowPos mul add
          ArrowInside
          pop pop
        } loop
      }{
        /ArrowPos \psk@ArrowInsideOffset\space def
        /dArrowPos \psk@ArrowInsideNo 1 gt {1.0 \psk@ArrowInsideNo 1.0 add div
        }{\psk@ArrowInsidePos } ifelse def
          \psk@ArrowInsideNo\space cvi {
            /ArrowPos ArrowPos dArrowPos add def
            x2 x1 sub ArrowPos mul x1 add
            y2 y1 sub ArrowPos mul y1 add
            ArrowInside
            pop pop
          } repeat
      } ifelse
      pop pop Lineto
    } repeat
  }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse
  CP 4 2 roll ArrowB L pop pop } if >
\pst@def{Polygon}<{NArray n 2 eq { 0 0 /n 3 def } if
    n 3 lt {
	n { pop pop } repeat
    }{
	n 3 gt { CheckClosed } if
	n 2 mul	-2 roll
	/y0 ED
	/x0 ED
    	/y1 ED
    	/x1 ED
    	/xx1 x1 def
    	/yy1 y1 def
    	x1 y1
    	/x1 x0 x1 add 2 div def
    	/y1 y0 y1 add 2 div def
    	x1 y1 moveto
    	/n n 2 sub def
	/drawArrows {
	    x11 y11
	    \psk@ArrowInsidePos\space 1 gt {
		/Alpha y12 y11 sub x12 x11 sub atan def
		/ArrowPos \psk@ArrowInsideOffset\space def
		/Length x12 x11 sub y12 y11 sub Pyth def
		/dArrowPos \psk@ArrowInsidePos\space abs def
		{
		    /ArrowPos ArrowPos dArrowPos add def
		    ArrowPos Length gt { exit } if
		    x11 Alpha cos ArrowPos mul add
		    y11 Alpha sin ArrowPos mul add
		    currentdict /ArrowInside known { ArrowInside } if
		    pop pop
		} loop
	    }{
		/ArrowPos \psk@ArrowInsideOffset\space def
		/dArrowPos \psk@ArrowInsideNo\space 1 gt {1.0 \psk@ArrowInsideNo\space 1.0 add div
		}{ \psk@ArrowInsidePos } ifelse def
		\psk@ArrowInsideNo\space cvi {
		    /ArrowPos ArrowPos dArrowPos add def
		    x12 x11 sub ArrowPos mul x11 add
		    y12 y11 sub ArrowPos mul y11 add
		    currentdict /ArrowInside known { ArrowInside } if
		    pop pop
		} repeat
	    } ifelse
	    pop pop Lineto
	} def
	n {
	    4 copy
	    /y11 ED /x11 ED /y12 ED /x12 ED
	    drawArrows
	} repeat
	x1 y1 x0 y0
	6 4 roll
	2 copy
	/y11 ED /x11 ED /y12 y0 def /x12 x0 def
	drawArrows
	/y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def
	drawArrows
	pop pop
    	closepath
    } ifelse }>
\pst@def{OpenBezier}<{/dArrowPos \psk@ArrowInsideNo 1 gt {1.0 \psk@ArrowInsideNo 1.0 add div
    }{ \psk@ArrowInsidePos } ifelse def
      BezierNArray
      n 1 eq { pop pop
      }{ 2 copy
        /y0 ED /x0 ED
        ArrowA
        n 4 sub 3 idiv { 6 2 roll 4 2 roll curveto } repeat
        6 2 roll
        4 2 roll
        ArrowB
        /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED
        /cx x1 x0 sub 3 mul def
        /cy y1 y0 sub 3 mul def
        /bx x2 x1 sub 3 mul cx sub def
        /by y2 y1 sub 3 mul cy sub def
        /ax x3 x0 sub cx sub bx sub def
        /ay y3 y0 sub cy sub by sub def
        /getValues {
          ax t0 3 exp mul bx t0 t0 mul mul add cx t0 mul add x0 add
          ay t0 3 exp mul by t0 t0 mul mul add cy t0 mul add y0 add
          ax t 3 exp mul bx t t mul mul add cx t mul add x0 add
          ay t 3 exp mul by t t mul mul add cy t mul add y0 add
        } def
        /getdL {
          getValues
          3 -1 roll sub 3 1 roll sub Pyth
        } def
        /CurveLength {
          /u 0 def
          /du 0.01 def
          0 100 {
            /t0 u def
            /u u du add def
            /t u def
            getdL add
          } repeat } def
          /GetArrowPos {
            /ende \psk@ArrowInsidePos\space 1 gt
              {ArrowPos}
              {ArrowPos CurveLength mul} ifelse def
            /u 0 def
            /du 0.01 def
            /sum 0 def
            { /t0 u def
              /u u du add def
              /t u def
              /sum getdL sum add def
              sum ende gt {exit} if
            } loop u
          } def
          /ArrowPos \psk@ArrowInsideOffset\space def
          /loopNo \psk@ArrowInsidePos\space 1 gt {CurveLength \psk@ArrowInsidePos\space div cvi
          }{ \psk@ArrowInsideNo } ifelse def
            loopNo cvi {
              /ArrowPos ArrowPos dArrowPos add def
              /t GetArrowPos def
              /t0 t 0.95 mul def
              getValues
              ArrowInside pop pop pop pop
            } repeat
            x1 y1 x2 y2 x3 y3 curveto
  } ifelse
}>
\pst@def{NCLine}<{NCCoor
	tx@Dict begin
	ArrowA CP 4 2 roll ArrowB
	4 copy
	/y2 ED /x2 ED /y1 ED /x1 ED
	x1 y1
	\psk@ArrowInsidePos\space 1 gt {
		/Alpha y2 y1 sub x2 x1 sub atan def
		/ArrowPos \psk@ArrowInsideOffset\space def
		/Length x2 x1 sub y2 y1 sub Pyth def
		/dArrowPos \psk@ArrowInsidePos\space abs def
		{/ArrowPos ArrowPos dArrowPos add def
			ArrowPos Length gt { exit } if
			x1 Alpha cos ArrowPos mul add
			y1 Alpha sin ArrowPos mul add
			ArrowInside
			pop pop
		} loop
	}{/ArrowPos \psk@ArrowInsideOffset\space def
		/dArrowPos \psk@ArrowInsideNo 1 gt {1.0 \psk@ArrowInsideNo 1.0 add div
		}{ \psk@ArrowInsidePos } ifelse def
		\psk@ArrowInsideNo\space cvi {
			/ArrowPos ArrowPos dArrowPos add def
			x2 x1 sub ArrowPos mul x1 add
			y2 y1 sub ArrowPos mul y1 add
			ArrowInside
			pop pop
		} repeat
	} ifelse
	pop pop lineto pop pop
	end}>
\pst@def{NCCurve}<{GetEdgeA GetEdgeB
	xA1 xB1 sub yA1 yB1 sub
	Pyth 2 div dup 3 -1 roll mul
	/ArmA ED
	mul
	/ArmB ED
	/ArmTypeA 0 def
	/ArmTypeB 0 def
	GetArmA GetArmB
	xA2 yA2 xA1 yA1
	2 copy
	/y0 ED /x0 ED
	tx@Dict begin
		ArrowA
	end
	xB2 yB2 xB1 yB1
	tx@Dict begin
		ArrowB
	end
	/y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED
	/cx x1 x0 sub 3 mul def
	/cy y1 y0 sub 3 mul def
	/bx x2 x1 sub 3 mul cx sub def
	/by y2 y1 sub 3 mul cy sub def
	/ax x3 x0 sub cx sub bx sub def
	/ay y3 y0 sub cy sub by sub def
	/getValues {
		ax t0 3 exp mul bx t0 t0 mul mul add cx t0 mul add x0 add
		ay t0 3 exp mul by t0 t0 mul mul add cy t0 mul add y0 add
		ax t 3 exp mul bx t t mul mul add cx t mul add x0 add
	ay t 3 exp mul by t t mul mul add cy t mul add y0 add
	} def
	/getdL {
		getValues
		3 -1 roll sub 3 1 roll sub Pyth
	} def
	/CurveLength {
		/u 0 def
		/du 0.01 def
		0 100 {
			/t0 u def
			/u u du add def
			/t u def
			getdL add
		} repeat } def
	/GetArrowPos {
		/ende \psk@ArrowInsidePos\space 1 gt {ArrowPos}{ArrowPos CurveLength mul} ifelse def
		/u 0 def
		/du 0.01 def
		/sum 0 def
		{
			/t0 u def
			/u u du add def
			/t u def
			/sum getdL sum add def
			sum ende gt {exit} if
		} loop u
	} def
	/dArrowPos \psk@ArrowInsideNo 1 gt {1.0 \psk@ArrowInsideNo 1.0 add div
	}{ \psk@ArrowInsidePos } ifelse def
	/ArrowPos \psk@ArrowInsideOffset\space def
	/loopNo \psk@ArrowInsidePos\space 1 gt {CurveLength \psk@ArrowInsidePos\space div cvi
		}{ \psk@ArrowInsideNo } ifelse def
	loopNo cvi {
		/ArrowPos ArrowPos dArrowPos add def
		/t GetArrowPos def
		/t0 t 0.95 mul def
		getValues
		ArrowInside pop pop pop pop
	} repeat
	x1 y1 x2 y2 x3 y3 curveto
	/LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] cvx def
	/LPutPos { t LPutVar BezierMidpoint } def
	/HPutPos { { HPutLines } HPutCurve } def
	/VPutPos { { VPutLines } HPutCurve } def
}>
\define@key[psset]{pstricks-add}{dashNo}{\def\psk@dashNo{#1}}
\define@key[psset]{pstricks-add}{linecap}{\def\psk@linecap{#1}}
\define@key[psset]{pstricks-add}{randomPoints}{\def\psk@randomPoints{#1}}
\define@boolkey[psset]{pstricks-add}[Pst@]{color}[true]{}
\def\psRandom{\pst@object{psRandom}}\def\psRandom@i{\@ifnextchar({\psRandom@ii}{\psRandom@iii(0,0)(1,1)}}
\def\psRandom@ii(#1){\@ifnextchar({\psRandom@iii(#1)}{\psRandom@iii(0,0)(#1)}}
\def\psRandom@iii(#1)(#2)#3{\def\pst@tempA{#3}\ifx\pst@tempA\pst@empty\psclip{\psframe(#2)}\else\psclip{#3}\fi
  \pst@getcoor{#1}\pst@tempA 
  \pst@getcoor{#2}\pst@tempB 
  \begin@SpecialObj
  \addto@pscode{
    \pst@tempA\space /yMin exch def 
    /xMin exch def
    \pst@tempB\space /yMax exch def 
    /xMax exch def 
    /dy yMax yMin sub def
    /dx xMax xMin sub def
    rrand srand                 /getRandReal { rand 2147483647 div } def
    \psk@dotsize \@nameuse{psds@\psk@dotstyle}
    \psk@randomPoints {
     \ifPst@color getRandReal getRandReal getRandReal setrgbcolor \fi
     getRandReal dx mul xMin add
     getRandReal dy mul yMin add
     Dot
     \ifx\psk@fillstyle\psfs@solid fill \fi stroke
    } repeat
  }\end@SpecialObj
  \endpsclip
  \ignorespaces
}
\define@key[psset]{}{XnodesepA}{\pst@getlength{#1}\psk@nodesepA
    \def\psk@nodeseptypeA{2 }}
\define@key[psset]{}{XnodesepB}{\pst@getlength{#1}\psk@nodesepB
    \def\psk@nodeseptypeB{2 }}
\define@key[psset]{}{Xnodesep}{\pst@getlength{#1}\psk@nodesepA
    \let\psk@nodesepB\psk@nodesepA
    \def\psk@nodeseptypeA{2 }\def\psk@nodeseptypeB{2 }}
\define@key[psset]{}{YnodesepA}{\pst@getlength{#1}\psk@nodesepA
    \def\psk@nodeseptypeA{1 }}
\define@key[psset]{}{YnodesepB}{\pst@getlength{#1}\psk@nodesepB
    \def\psk@nodeseptypeB{1 }}
\define@key[psset]{}{Ynodesep}{\pst@getlength{#1}\psk@nodesepA
    \let\psk@nodesepB\psk@nodesepA
    \def\psk@nodeseptypeA{1 }\def\psk@nodeseptypeB{1 }}
\def\psGetNodeCenter#1{ tx@NodeDict begin /N@#1 load GetCenter end \pst@number\psyunit div /#1.y ED 	\pst@number\psxunit div /#1.x ED }	\pst@def{NCLineII}<{
  NCCoor
  /y1 ED /x1 ED x1 y1 ArrowA x1 y1 moveto
  /y2 ED /x2 ED
  /y0 y1 def /x0 x1 def
  /linelength x2 x1 sub y2 y1 sub Pyth def
  \psk@dashNo\space 1.0 lt
     {/cntMax 1.0 \psk@dashNo\space div .49 add cvi def}
     {/cntMax linelength \psk@dashNo\space div .49 add cvi def} ifelse
  x2 x1 sub cntMax div /dx ED
  y2 y1 sub cntMax div /dy ED
  /cnt 0 def
  cntMax {
    gsave
    /x1 x1 dx add def
    /y1 y1 dy add def
    x1 y1
    cnt 2 mod 0 eq
      { \pst@usecolor\psDashColorI }
      { \pst@usecolor\psDashColorII } ifelse
    lineto stroke
    /cnt cnt 1 add def
    grestore
    x1 y1 moveto
  } repeat
  x0 y0 x2 y2 ArrowB L pop pop}>
\def\nclineII{\pst@object{nclineII}}\def\nclineII@i{\check@arrow{\nclineII@ii}}\def\nclineII@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{\tx@NCLineII /LPutPos { xB yB xA yA \tx@LPutLine } def}}\def\pclineII{\pst@object{pclineII}}\def\pclineII@i{\pc@object\nclineII@ii}\define@key[psset]{pstricks-add}{lineAngle}{\psset{armB=0.5}\def\psk@lineAngle{#1}}\pst@def{NCDiag}<{
  GetEdgeA GetEdgeB GetArmA GetArmB mark
  \psk@lineAngle\space abs 0 gt {
    /xTemp xA2 10 add def
    /yTemp yA2 \psk@lineAngle\space dup sin exch cos div 10 mul add def
    /dY1 yTemp yA2 sub def
    /dX1 xTemp xA2 sub def
    /dY2 yB2 yB1 sub def
    /dX2 xB2 xB1 sub def
    dX1 abs 0.01 lt {
      /m2 dY2 dX2 div def
      /xB2 xA2 def
      /yB2 xA2 xB1 sub m2 mul yB1 add def
    }{
      dX2 abs 0.01 lt {
        /m1 dY1 dX1 div def
        /xB2 xB1 def
        /yB2 xB1 xA2 sub m1 mul yA2 add def
      }{/m1 dY1 dX1 div def
        /m2 dY2 dX2 div def
        /xB2 m1 xA2 mul m2 xB1 mul sub yA2 sub yB1 add m1 m2 sub div def
        /yB2 xB2 xA2 sub m1 mul yA2 add def
      } ifelse
    } ifelse
  } if
  ArmB 0 ne { xB1 yB1 } if
  xB2 yB2
  xA2 yA2
  ArmA 0 ne { xA1 yA1 } if
  tx@Dict begin false Line end
  /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def
  /LPutPos { LPutLines } def
  /HPutPos { HPutLines } def
  /VPutPos { VPutLines } def
}>
\pst@def{NCDiagg}<{
  GetEdgeA GetArmA \psk@lineAngle\space abs 0 gt { \psk@lineAngle\space }
    { yB yA2 sub xB xA2 sub Atan 180 add } ifelse /AngleB ED
  GetEdgeB mark
  \psk@lineAngle\space abs 0 gt {
    /dY2 yA2 yA1 sub def
    /dX2 xA2 xA1 sub def
    \psk@lineAngle\space abs 90 eq {
      /m2 dY2 dX2 div def
      /yA2 xB xA2 sub m2 mul yA2 add def
      /xA2 xB def
    }{
      /m1 \psk@lineAngle\space dup sin exch cos div def dX2 abs 0.01 lt {
        /yA2 xA1 xB sub m1 mul yB add def
        /xA2 xA1 def
      }{/m2 dY2 dX2 div def
        /xA2 m1 xB mul m2 xA2 mul sub yA2 add yB sub m1 m2 sub div def
        /yA2 xA2 xB sub m1 mul yB add def
      } ifelse
    } ifelse
  } if
  xB1 yB1 xA2 yA2
  ArmA 0 ne { xA1 yA1 } if
  tx@Dict begin false Line end
  /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def
  /LPutPos { LPutLines } def
  /HPutPos { HPutLines } def
  /VPutPos { VPutLines } def
}>
\def\ncbarr{\pst@object{ncbarr}}
\def\ncbarr@i#1#2{
  \begingroup
  \use@par \psLNode(#1)(#2){0.5}{barr@tempNode}\pst@dimm=\psk@angleA pt
  \pst@dimn=180pt
\ifdim\pst@dimm=\z@\else\ifdim\pst@dimm=\pst@dimn\else\psset{angleA=0}\fi\fi
  \ncbar[arrows=-]{#1}{barr@tempNode}
  \ifdim\psk@angleA pt=\z@\relax
    \ncbar[angleA=180,angleB=180]{barr@tempNode}{#2}
  \else\ncbar[angleA=0,angleB=0]{barr@tempNode}{#2}\fi \endgroup
}
\def\psLNode(#1)(#2)#3#4{\pst@getcoor{#1}\pst@tempA \pst@getcoor{#2}\pst@tempB \pnode(!\pst@tempA /YA exch \pst@number\psyunit div def
    /XA exch \pst@number\psxunit div def
    \pst@tempB /YB exch \pst@number\psyunit div def
    /XB exch \pst@number\psxunit div def
    /dx XB XA sub def
    /dy YB YA sub def
    XA dx #3\space mul add YA dy #3\space mul add){#4}
}
\def\psLCNode(#1)#2(#3)#4#5{\pst@getcoor{#1}\pst@tempA \pst@getcoor{#3}\pst@tempB \pnode(!\pst@tempA /YA exch \pst@number\psyunit div def
    /XA exch \pst@number\psxunit div def
    \pst@tempB /YB exch \pst@number\psyunit div def
    /XB exch \pst@number\psxunit div def
    XA #2\space mul XB #4\space mul add
    YA #2\space mul YB #4\space mul add){#5}}
\define@boolkey[psset]{pstricks-add}[Pst@]{trueAngle}[true]{}
\def\psRelNode{\pst@object{psRelNode}}
\def\psRelNode@i(#1)(#2)#3#4{{\use@par
  \pst@getcoor{#1}\pst@tempA \pst@getcoor{#2}\pst@tempB \pnode(!
    \pst@tempA /YA exch \pst@number\psyunit div def
    /XA exch \pst@number\psxunit div def
    \pst@tempB /YB exch \pst@number\psyunit div def
    /XB exch \pst@number\psxunit div def
    /AlphaStrich \psk@angleA\space def
    /unit \pst@number\psyunit \pst@number\psxunit div def /dx XB XA sub  def
    /dy YB YA sub \ifPst@trueAngle\space unit mul \fi\space def
    /laenge dy dup mul dx dup mul add sqrt #3 mul def
    /Alpha dy dx atan def 
    /beta Alpha AlphaStrich add def
    laenge beta cos mul XA add
    laenge beta sin mul \ifPst@trueAngle\space unit div \fi\space YA add ){#4}}}
\def\psRelLine{\pst@object{psRelLine}}
\def\psRelLine@i{\@ifnextchar({\psRelLine@iii}{\psRelLine@ii}}
\def\psRelLine@ii#1{\addto@par{arrows=#1}\psRelLine@iii }
\def\psRelLine@iii(#1)(#2)#3#4{{
  \pst@killglue
  \use@par
  \psRelNode(#1)(#2){#3}{#4}
  \psline(#1)(#4)}\ignorespaces}
\def\psParallelLine{\pst@object{psParallelLine}}
\def\psParallelLine@i{\@ifnextchar({\psParallelLine@iii}{\psParallelLine@ii}}
\def\psParallelLine@ii#1{\addto@par{arrows=#1}\psParallelLine@iii }
\def\psParallelLine@iii(#1)(#2)(#3)#4#5{{
  \pst@killglue
  \use@par
  \pst@getcoor{#1}\pst@tempA
  \pst@getcoor{#2}\pst@tempB
  \pst@getcoor{#3}\pst@tempC
\pnode(!\pst@tempA /YA exch \pst@number\psyunit div def
     /XA exch \pst@number\psxunit div def
     \pst@tempB /YB exch \pst@number\psyunit div def
     /XB exch \pst@number\psxunit div def
     \pst@tempC /YC exch \pst@number\psyunit div def
     /XC exch \pst@number\psxunit div def
/dx XB XA sub  def
    /dy YB YA sub  def
    /laenge dy dup mul dx dup mul add sqrt #4 mul def
    /Alpha dy dx atan def 
    laenge Alpha cos mul XC add
    laenge Alpha sin mul YC add ){#5}\psline(#3)(#5)
}\ignorespaces}
\def\psIntersectionPoint(#1)(#2)(#3)(#4)#5{\pst@getcoor{#1}\pst@tempA
    \pst@getcoor{#2}\pst@tempB
    \pst@getcoor{#3}\pst@tempC
    \pst@getcoor{#4}\pst@tempd
\pnode(!\pst@tempA /YA exch \pst@number\psyunit div def
     /XA exch \pst@number\psxunit div def
     \pst@tempB /YB exch \pst@number\psyunit div def
     /XB exch \pst@number\psxunit div def
     \pst@tempC /YC exch \pst@number\psyunit div def
     /XC exch \pst@number\psxunit div def
     \pst@tempd /YD exch \pst@number\psyunit div def
     /XD exch \pst@number\psxunit div def
    /dY1 YB YA sub def
    /dX1 XB XA sub def
    /dY2 YD YC sub def
    /dX2 XD XC sub def
    dX1 abs 0.01 lt {
        /m2 dY2 dX2 div def
        XA dup XC sub m2 mul YC add
    }{
        dX2 abs 0.01 lt {
            /m1 dY1 dX1 div def
            XC dup XA sub m1 mul YA add
        }{/m1 dY1 dX1 div def
            /m2 dY2 dX2 div def
            m1 XA mul m2 XC mul sub YA sub YC add m1 m2 sub div dup
            XA sub m1 mul YA add
        } ifelse
    } ifelse ){#5}}
\def\psLDNode(#1)(#2)#3#4{\pst@getcoor{#1}\pst@tempA \pst@getcoor{#2}\pst@tempB \pssetlength\pst@dimp{#3}\pnode(!\pst@tempA /YA exch \pst@number\psyunit div def
    /XA exch \pst@number\psxunit div def
    \pst@tempB /YB exch \pst@number\psyunit div def
    /XB exch \pst@number\psxunit div def
    /dx XB XA sub def
    /dy YB YA sub def
    /angle dy dx Atan def
    /linelength \pst@number\pst@dimp \pst@number\psunit div def
    XA linelength angle cos mul add YA linelength angle sin mul add ){#4}}
\def\nlput{\pst@object{nlput}}
\def\nlput@i(#1)(#2)#3#4{\begin@SpecialObj
  \psLDNode(#1)(#2){#3}{temp@lnput}
  \pcline[linestyle=none](#1)(temp@lnput)\ncput[npos=1]{#4}\end@SpecialObj
}\define@cmdkeys[psset]{pstricks-add}[PSTPSPNk@]{blName,bcName,brName,
  clName,ccName,crName,
  tlName,tcName,trName}[]{}\psset[pstricks-add]{blName=PSPbl,bcName=PSPbc,brName=PSPbr,
  clName=PSPcl,ccName=PSPcc,crName=PSPcr,
  tlName=PSPtl,tcName=PSPtc,trName=PSPtr}
\def\psDefPSPNodes{\pst@object{psDefPSPNodes}}
\def\psDefPSPNodes@i{\pst@killglue
  \begingroup
  \use@par
  \expandafter\psDefPSPNodes@ii\pic@coor}
\def\psDefPSPNodes@ii(#1)(#2)(#3){\pnode(#1){PSPN@temp}\pnode([angle=45]PSPN@temp){\PSTPSPNk@blName}
    \pnode(#3){PSPN@temp}\pnode([angle=-135]PSPN@temp){\PSTPSPNk@trName}
    \pnode(\PSTPSPNk@blName|\PSTPSPNk@trName){\PSTPSPNk@tlName}
    \pnode(\PSTPSPNk@trName|\PSTPSPNk@blName){\PSTPSPNk@brName}
    \ncline[linestyle=none]{\PSTPSPNk@blName}{\PSTPSPNk@tlName}
    \ncput[npos=.5]{\pnode{\PSTPSPNk@clName}}
    \ncline[linestyle=none]{\PSTPSPNk@blName}{\PSTPSPNk@brName}
    \ncput[npos=.5]{\pnode{\PSTPSPNk@bcName}}
    \pnode(\PSTPSPNk@brName|\PSTPSPNk@clName){\PSTPSPNk@crName}
    \pnode(\PSTPSPNk@bcName|\PSTPSPNk@trName){\PSTPSPNk@tcName}
    \pnode(\PSTPSPNk@bcName|\PSTPSPNk@clName){\PSTPSPNk@ccName}
  \endgroup
  \ignorespaces}
\define@key[psset]{pstricks-add}{labelFontSize}{\def\psk@labelFontSize{#1}}\psset{labelFontSize={}}
\def\pshlabel#1{\psk@labelFontSize#1}\def\psvlabel#1{\psk@labelFontSize#1}
\define@boolkey[psset]{pstricks-add}[Pst@]{comma}[true]{}
\define@boolkey[psset]{pstricks-add}[Pst@]{xAxis}[true]{}
\define@boolkey[psset]{pstricks-add}[Pst@]{yAxis}[true]{}
\define@boolkey[psset]{pstricks-add}[Pst@]{xyAxes}[true]{\@nameuse{Pst@xAxis#1}\@nameuse{Pst@yAxis#1}}\define@key[psset]{pstricks-add}{xyDecimals}{\def\psk@xDecimals{#1}\def\psk@yDecimals{#1}}
\define@key[psset]{pstricks-add}{xDecimals}{\def\psk@xDecimals{#1}}
\define@key[psset]{pstricks-add}{yDecimals}{\def\psk@yDecimals{#1}}
\define@key[psset]{pstricks-add}{xlogBase}{\def\psk@xlogBase{#1}}
\define@key[psset]{pstricks-add}{ylogBase}{\def\psk@ylogBase{#1}}
\define@key[psset]{pstricks-add}{xylogBase}{\def\psk@xlogBase{#1}\def\psk@ylogBase{#1}}\define@key[psset]{pstricks-add}{trigLabelBase}{\pst@getint{#1}{\psk@trigLabelBase}}
\psset{trigLabelBase=0}

\define@boolkey[psset]{pstricks-add}[Pst@]{trigLabels}[true]{\ifPst@trigLabels
    \def\pst@@@hlabel##1{\pshlabel{##1}}
    \def\pshlabel##1{\ifnum\psk@trigLabelBase<2
        \def\de@nominator{\@ne}\else\def\de@nominator{\psk@trigLabelBase}\fi
      \def\pst@tempA{##1} 
      \pst@abs{\pst@tempA}\pst@cntm 
      \pst@mod{\pst@cntm}{\de@nominator}\pst@cntp \ifnum\@ne>\pst@cntp                  \pst@cnto=\pst@cntm \divide\pst@cnto by \de@nominator  
        \psk@labelFontSize
	\ifnum\pst@tempA<0 $-$\fi \ifnum\pst@cnto=\@ne                $\pi$                             \else
          $\the\pst@cnto\pi$                \fi   
      \else
        \psk@labelFontSize
        \ifnum\pst@cntp=\@ne                \if\pst@cntm=\@ne
            $\frac{\pi}{\de@nominator}$   \else\ifnum\pst@tempA=-1 $\frac{-\pi}{\de@nominator}$
             \else \ifnum\pst@tempA=1 $\frac{\pi}{\de@nominator}$
                 \else$\frac{\pst@tempA\pi}{\de@nominator}$  \fi\fi\fi
        \else
          \ifnum\pst@tempA=1 $\frac{\pi}{\de@nominator}$
          \else\ifnum\pst@tempA=\de@nominator $\pi$
            \else$\frac{\pst@tempA\pi}{\de@nominator}$ 
      \fi\fi\fi\fi }\else
    \def\pst@@@hlabel##1{\edef\@xyDecimals{\psk@xDecimals}\ifnum\psk@ticks<\tw@ \ifx\psk@xlogBase\@empty
          \pshlabel{\psk@labelFontSize\expandafter\@LabelComma##1..\@nil\psk@xlabelFactor}\else \pshlabel{\psk@labelFontSize\psk@xlogBase\textsuperscript{\expandafter\@stripDecimals##1..\@nil }}
        \fi \fi }
    \def\pshlabel##1{\psk@labelFontSize##1}\fi
}
\psset{trigLabels=false}
\define@key[psset]{pstricks-add}{logLines}{\pst@expandafter\psset@@logLines{#1}\@nil\psk@logLines}
\def\psset@@logLines#1#2\@nil#3{\ifx#1a\let#3\z@\else
    \ifx#1x\let#3\@ne\else
      \ifx#1y\let#3\tw@\else
        \ifx#1n\let#3\thr@@\else
          \@pstrickserr{Bad argument: `#1#2'}\@ehpa
  \fi\fi\fi\fi}
\define@key[psset]{pstricks-add}{ylabelFactor}{\def\psk@ylabelFactor{#1}}
\define@key[psset]{pstricks-add}{xlabelFactor}{\def\psk@xlabelFactor{#1}}


\def\psxTick{\pst@object{psxTick}}\def\psxTick@i(#1)#2{{
  \pst@killglue
  \addbefore@par{arrows=-}
  \use@par
  \psline(#1,\pst@xticksizeB)(#1,\pst@xticksizeA)
  \rput[t](! #1 \pst@number\pslabelsep \pst@number\pst@xticksizeB add
           \pst@number\psyunit div neg ){\vphantom{1}#2}}\ignorespaces}
\def\psyTick{\pst@object{psyTick}}\def\psyTick@i(#1)#2{{
  \pst@killglue
  \addbefore@par{arrows=-}
  \use@par
  \psline(\pst@yticksizeB,#1)(\pst@yticksizeA,#1)
  \rput[r]{0}(!\pst@number\pst@yticksizeB \pst@number\pslabelsep add
              \pst@number\psxunit div neg #1){#2}}\ignorespaces}
\def\@stripDecimals#1.#2.#3\@nil{\def\dummy{#1}\ifx\dummy\@empty\the\@zero\else#1\fi }
\def\pst@@@vlabel#1{\edef\@xyDecimals{\psk@yDecimals}\ifodd\psk@ticks  \else
    \ifx\psk@ylogBase\@empty
\psvlabel{\expandafter\@LabelComma#1..\@nil\psk@ylabelFactor}\else \psvlabel{\psk@ylogBase\textsuperscript{\expandafter\@stripDecimals#1..\@nil }}
    \fi \fi }
\newcount\@digitcounter\@digitcounter=0\relax
\def\@inc@digitcounter{\global\advance\@digitcounter by 1\relax}
\def\@get@digitcounter{\the\@digitcounter\relax}
\def\@Reset@digitcounter{\global\@digitcounter=0\relax}
\def\@zeroFill{\ifnum \@xyDecimals>\@get@digitcounter
    \bgroup
      0\@inc@digitcounter\@zeroFill
    \egroup \fi }
\def\@process@digits#1#2;{\ifx *#1\@zeroFill\else#1\@inc@digitcounter\@process@digits#2;\fi }
\def\@writeDecimals#1{\ifx\@xyDecimals\@empty \def\@tempa{#1}\ifx\@tempa\@empty \else
      \ifPst@comma{,}\else.\fi #1\fi \else \ifnum\@xyDecimals>\@zero
      \ifPst@comma{,}\else.\fi
        \@Reset@digitcounter
        \@process@digits#1*;
      \fi \fi }
\def\@LabelComma#1.#2.#3\@nil{\def\pst@tempA{#1}\ifx\pst@tempA\@empty\the\@zero\else#1\fi \def\pst@tempA{#2}\ifx\pst@tempA\@empty\@writeDecimals{}\else\@writeDecimals{#2}\fi }
\def\psxs@none{\let\psk@arrowA\@empty \let\psk@arrowB\@empty \psxs@axes }


\def\psxs@axes{{\ifPst@xAxis\psxs@@axes\pst@dima\pst@dimb\pst@dimc\pst@dimd{}\fi \ifPst@yAxis\psxs@@axes\pst@dima\pst@dimb\pst@dimc\pst@dimd{exch}\fi }}
\def\psaxes{\pst@object{psaxes}}
\def\psaxes@i{\pst@getarrows\psaxes@ii}
\def\psaxes@ii(#1){\@ifnextchar({\psaxes@iii(#1)}{\psaxes@iv(0,0)(0,0)(#1)}}
\def\psaxes@iii(#1)(#2){\@ifnextchar({\psaxes@iv(#1)(#2)}{\psaxes@iv(#1)(#1)(#2)}}
\def\psaxes@iv(#1)(#2)(#3){\@ifnextchar[{\psaxes@v(#1)(#2)(#3)}{\psaxes@vii(#1)(#2)(#3)}}\def\psaxes@v(#1)(#2)(#3)[#4]{\@ifnextchar[{\psaxes@vi(#1)(#2)(#3)[#4]}{\psaxes@vi(#1)(#2)(#3)[#4][]}}\def\psaxes@v(#1)(#2)(#3)[#4,#5][#6,#7]{\psaxes@vii(#1)(#2)(#3)\uput[#5](#3|0,0){#4}\uput[#7](0,0|#3){#6}}
\def\psaxes@vii(#1,#2)(#3,#4)(#5,#6){\pst@killglue \begingroup \setbox\pst@hbox=\hbox\bgroup \use@par \pssetxlength\pst@dimg{#1}\pssetylength\pst@dimh{#2}\pssetxlength\pst@dima{#3}\pssetylength\pst@dimb{#4}\pssetxlength\pst@dimc{#5}\pssetylength\pst@dimd{#6}\advance\pst@dima-\pst@dimg \advance\pst@dimb-\pst@dimh \advance\pst@dimc-\pst@dimg \advance\pst@dimd-\pst@dimh \@nameuse{psxs@\psk@axesstyle}\ifPst@yAxis \begingroup \ifdim\pst@dima=\z@\else\showoriginfalse\fi \ifnum\psk@dy=\z@ \pst@dimg=\psk@Dy\psyunit \edef\psk@dy{\number\pst@dimg}\fi \ifPst@xAxis\else\showorigintrue\fi \pst@vlabels{\pst@dimd}{\psk@arrowB}{#3}{#5}\ifPst@xAxis\showoriginfalse\fi \pst@vlabels{\pst@dimb}{\psk@arrowA}{#3}{#5}\endgroup \fi \ifPst@xAxis \begingroup \ifdim\pst@dimb=\z@\else\showoriginfalse\fi \ifnum\psk@dx=\z@ \pst@dimg=\psk@Dx\psxunit \edef\psk@dx{\number\pst@dimg}\fi \ifPst@yAxis\else\showorigintrue\fi \pst@hlabels{\pst@dimc}{\psk@arrowB}{#4}{#6}\ifPst@yAxis\showoriginfalse\fi \pst@hlabels{\pst@dima}{\psk@arrowA}{#4}{#6}\endgroup \fi \egroup \pssetxlength\pst@dimg{#1}\pssetylength\pst@dimh{#2}\leavevmode\psput@cartesian\pst@hbox \endgroup
  \ignorespaces }
\newdimen\psk@subticksize\psk@subticksize=\z@
\newdimen\pst@xticksizeA
\newdimen\pst@xticksizeB
\newdimen\pst@xticksizeC
\newdimen\pst@yticksizeA
\newdimen\pst@yticksizeB
\newdimen\pst@yticksizeC
\def\set@xticksize#1{\pst@expandafter\pst@getydimdim{#1} {} {}\@nil \pst@xticksizeA=\the\pst@dimm \pst@xticksizeB=\the\pst@dimn \edef\psk@xticksize{\pst@number\pst@xticksizeA \pst@number\pst@xticksizeB}\ifdim\pst@dimm=\z@\relax
    \pst@xticksizeC=\z@
  \else \pst@absdim{\pst@xticksizeA}\pst@dimm \pst@absdim{\pst@xticksizeB}\pst@dimn \pst@maxdim{\pst@dimm}{\pst@dimn}\pst@dimo \pst@xticksizeC=\pst@dimo \fi }
\def\set@yticksize#1{\pst@expandafter\pst@getxdimdim{#1} {} {}\@nil \pst@yticksizeA=\the\pst@dimm \pst@yticksizeB=\the\pst@dimn \edef\psk@yticksize{\pst@number\pst@yticksizeA \pst@number\pst@yticksizeB}\ifdim\pst@dimm=\z@\relax
    \pst@yticksizeC=\z@
  \else \pst@absdim{\pst@yticksizeA}\pst@dimm \pst@absdim{\pst@yticksizeB}\pst@dimn \pst@maxdim{\pst@dimm}{\pst@dimn}\pst@dimo \pst@yticksizeC=\pst@dimo \fi }
\define@key[psset]{}{ticksize}{\set@xticksize{#1}\set@yticksize{#1}}
\define@key[psset]{pstricks-add}{xticksize}{\set@xticksize{#1}}
\define@key[psset]{pstricks-add}{yticksize}{\set@yticksize{#1}}\define@key[psset]{}{tickstyle}{\pst@expandafter\psset@@tickstyle{#1}\@nil \pst@cnta=\psk@tickstyle
  \advance\pst@cnta by 1
  \ifcase\pst@cnta \pst@xticksizeB=\z@
    \pst@yticksizeB=\z@
  \or \or \pst@xticksizeA=\z@
    \pst@yticksizeA=\z@
  \fi
}
\define@key[psset]{pstricks-add}{subticks}{\def\psk@xsubticks{#1}\def\psk@ysubticks{#1}}
\define@key[psset]{pstricks-add}{xsubticks}{\def\psk@xsubticks{#1}}
\define@key[psset]{pstricks-add}{ysubticks}{\def\psk@ysubticks{#1}}
\define@key[psset]{pstricks-add}{subticksize}{\def\psk@xsubticksize{#1}\def\psk@ysubticksize{#1}}
\define@key[psset]{pstricks-add}{xsubticksize}{\def\psk@xsubticksize{#1}}
\define@key[psset]{pstricks-add}{ysubticksize}{\def\psk@ysubticksize{#1}}
\define@key[psset]{pstricks-add}{tickwidth}{\pst@getlength{#1}\psk@xtickwidth \pst@getlength{#1}\psk@ytickwidth}
\define@key[psset]{pstricks-add}{xtickwidth}{\pst@getlength{#1}\psk@xtickwidth}
\define@key[psset]{pstricks-add}{ytickwidth}{\pst@getlength{#1}\psk@ytickwidth}
\define@key[psset]{pstricks-add}{subtickwidth}{\pst@getlength{#1}\psk@xsubtickwidth \pst@getlength{#1}\psk@ysubtickwidth}
\define@key[psset]{pstricks-add}{xsubtickwidth}{\pst@getlength{#1}\psk@xsubtickwidth}
\define@key[psset]{pstricks-add}{ysubtickwidth}{\pst@getlength{#1}\psk@ysubtickwidth}
\define@key[psset]{pstricks-add}{tickcolor}{\pst@getcolor{#1}\psk@xtickcolor \pst@getcolor{#1}\psk@ytickcolor}
\define@key[psset]{pstricks-add}{xtickcolor}{\pst@getcolor{#1}\psk@xtickcolor}
\define@key[psset]{pstricks-add}{ytickcolor}{\pst@getcolor{#1}\psk@ytickcolor}
\define@key[psset]{pstricks-add}{subtickcolor}{\pst@getcolor{#1}\psk@xsubtickcolor \pst@getcolor{#1}\psk@ysubtickcolor}
\define@key[psset]{pstricks-add}{xsubtickcolor}{\pst@getcolor{#1}\psk@xsubtickcolor}
\define@key[psset]{pstricks-add}{ysubtickcolor}{\pst@getcolor{#1}\psk@ysubtickcolor}
\define@key[psset]{pstricks-add}{xticklinestyle}{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\def\psxticklinestyle{#1}}}
\define@key[psset]{pstricks-add}{xsubticklinestyle}{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\def\psxsubticklinestyle{#1}}}
\define@key[psset]{pstricks-add}{yticklinestyle}{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\def\psyticklinestyle{#1}}}
\define@key[psset]{pstricks-add}{ysubticklinestyle}{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\def\psysubticklinestyle{#1}}}
\define@key[psset]{pstricks-add}{ticklinestyle}{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\def\psxticklinestyle{#1}\def\psyticklinestyle{#1}}}
\define@key[psset]{pstricks-add}{subticklinestyle}{\@ifundefined{psls@#1}{\@pstrickserr{Line style `#1' not defined}\@eha}{\def\psxsubticklinestyle{#1}\def\psysubticklinestyle{#1}}}
\newif\ifis@yAxis \def\psxs@@axes#1#2#3#4#5{\pst@killglue \begin@SpecialObj \def\pst@tempA{#5}\ifx\pst@tempA\@empty\relax \is@yAxisfalse \ifnum\psk@dx=\z@ \pst@dimg=\psk@Dx\psxunit \def\psk@dx{\number\pst@dimg}\fi \else \is@yAxistrue \ifnum\psk@dy=\z@ \pst@dimg=\psk@Dy\psyunit \def\psk@dy{\number\pst@dimg}\fi \fi \let\pst@linetype\pst@arrowtype \def\pst@tempA{none}\pst@addarrowdef \addto@pscode{
      \ifis@yAxis 0 \pst@number#4 \else \pst@number#3 0 \fi
      \ifis@yAxis 0 \pst@number#2 \else \pst@number#1 0 \fi
      ArrowA
      CP 4 2 roll
      ArrowB 
      /yEnd exch def /xEnd exch def
      xEnd yEnd 
      \ifx\psk@axesstyle\pst@tempA
        pop pop \else
        L                                  \fi
      /yStart exch def
      /xStart exch def
      \@nameuse{psls@\pslinestyle}                 stroke                                       \number\psk@ticks\space dup 2 mod 0 eq \ifis@yAxis true \else false \fi and 
      exch 2 lt \ifis@yAxis false \else true \fi and or {
      /viceversa 
        \ifis@yAxis\pst@number#2 \pst@number#4 \else\pst@number#1 \pst@number#3 \fi
         gt { true }{ false } ifelse def           /epsilon 0.01 def                            /minTickline \ifis@yAxis \pst@number#1 \else \pst@number#2 \fi def
      /maxTickline \ifis@yAxis \pst@number#3 \else \pst@number#4 \fi def
      /dT \ifis@yAxis \psk@dy \else \psk@dx \fi\space abs  65536 div viceversa { neg } if def                 /subTNo \ifis@yAxis\psk@ysubticks\else\psk@xsubticks\fi \space def
      subTNo 0 gt { /dsubT dT subTNo div def}{ /dsubT 0 def } ifelse  \ifis@yAxis \psk@yticksize \else \psk@xticksize \fi
      /tickend exch def /tickstart exch def
      /Twidth \ifis@yAxis \psk@ytickwidth \else \psk@xtickwidth \fi\space def
      /subTwidth \ifis@yAxis \psk@ysubtickwidth \else \psk@xsubtickwidth \fi\space def
      /STsize \ifis@yAxis \psk@ysubticksize \else \psk@xsubticksize \fi\space def
      /TColor {
        \ifis@yAxis\pst@usecolor\psk@ytickcolor
        \else\pst@usecolor\psk@xtickcolor\fi\space } def
      /subTColor {
        \ifis@yAxis\pst@usecolor\psk@ysubtickcolor
        \else\pst@usecolor\psk@xsubtickcolor\fi\space } def
      /MinValue { \ifis@yAxis yStart \else xStart \fi
        \ifx\psk@arrowA\@empty\else 
          \psk@arrowsize\space CLW mul add \psk@arrowlength\space mul 
           viceversa { sub epsilon add } { add epsilon sub } ifelse \fi } def
      /MaxValue { \ifis@yAxis yEnd \else xEnd \fi
        \ifx\psk@arrowB\@empty\else
          \psk@arrowsize\space CLW mul add \psk@arrowlength\space mul 
           viceversa { add epsilon sub } { sub epsilon add } ifelse \fi } def
      /logLines {
        \ifnum\psk@logLines=\z@ true \else         \ifnum\psk@logLines<\tw@                 \ifis@yAxis false \else true \fi       \else
            \ifnum\psk@logLines<\thr@@             \ifis@yAxis true \else false \fi     \else 
              false                                \fi
          \fi
        \fi
      } def
      /LSstroke {                                  \ifis@yAxis\@nameuse{psls@\psyticklinestyle}
        \else\@nameuse{psls@\psxticklinestyle}\fi stroke} def
      /subLSstroke {                               \ifis@yAxis\@nameuse{psls@\psysubticklinestyle}
        \else\@nameuse{psls@\psxsubticklinestyle}\fi stroke} def
0 dT MaxValue {                              /cntTick exch def                          logLines {                                 gsave
          1 10 subTNo div 9.99 {                   /dx exch def                           /x cntTick dT dx log mul add def       x abs MaxValue abs le {                x minTickline #5\space moveto
              x maxTickline #5\space lineto
            } if
          } for
          subTwidth SLW subTColor                  subLSstroke
          grestore                                 stroke
          /dsubT 0 def                             } if
        dsubT abs 0 gt {                           gsave                                    /cntsubTick cntTick dsubT add def
            subTNo 1 sub {
            cntsubTick abs MaxValue abs le {       cntsubTick tickstart STsize mul #5\space moveto
              cntsubTick tickend STsize mul #5\space lineto
            }{ exit }  ifelse
            /cntsubTick cntsubTick dsubT add def
          } repeat 
          subTwidth SLW subTColor                  subLSstroke
grestore                                 } if
        gsave
        cntTick tickstart #5\space moveto          cntTick tickend #5\space lineto            Twidth SLW TColor                          LSstroke
        grestore
      } for
/dT dT neg def                               /dsubT dsubT neg def
0 dT MinValue epsilon viceversa { add }{ sub } ifelse {
        /cntTick exch def
        logLines {                                 gsave
          1 10 subTNo div 9.99 {                   /dx exch def                           /x cntTick dT dx log mul add def       x abs MinValue abs le {                x minTickline #5\space moveto
              x maxTickline #5\space lineto
            } if
          } for
          /dsubT 0 def 
          subTwidth SLW subTColor                  subLSstroke
          grestore
        }
        dsubT abs 0 gt {                           gsave                                    /cntsubTick cntTick dsubT add def
          subTNo 1 sub {
            cntsubTick abs MinValue abs le {       cntsubTick tickstart STsize mul #5\space moveto
              cntsubTick tickend STsize mul #5\space lineto
            }{ exit } ifelse
            /cntsubTick cntsubTick dsubT add def
          } repeat subTwidth SLW subTColor                  subLSstroke
          grestore                                 } if
        gsave
        cntTick tickstart #5\space moveto         cntTick tickend #5\space lineto           Twidth SLW TColor                         LSstroke
        grestore
      } for
} if}\end@SpecialObj \ignorespaces }\def\psxs@frame{\begin@SpecialObj \addto@pscode{\pst@number\pst@dima \pst@number\pst@dimb moveto \pst@number\pst@dimc \pst@number\pst@dimb L
      \pst@number\pst@dimc \pst@number\pst@dimd L \pst@number\pst@dima \pst@number\pst@dimd L 
      closepath}\pst@stroke \psk@fillstyle \end@SpecialObj \let\psk@arrowA\@empty \let\psk@arrowB\@empty \pst@xticksizeC=\z@\pst@yticksizeC=\z@ \psxs@@axes\pst@dima\pst@dimb\pst@dimc\pst@dimd{}\psxs@@axes\pst@dima\pst@dimb\pst@dimc\pst@dimd{exch}}
\def\pst@hlabels#1#2#3#4{\ifdim#1=\z@\else \ifx#2\empty\else\advance#1\ifdim#1>\z@-\fi7\pslinewidth\fi \pst@cnta=#1\relax \divide\pst@cnta\psk@dx\relax \ifnum\pst@cnta=\z@\else \pst@dimb=\psk@dx sp\ifnum\psk@labels<\tw@ \ifPst@xAxis\pst@@hlabels\fi\fi \showoriginfalse \fi \fi }
\def\pst@@hlabels{\pst@dimm=\pst@xticksizeC\advance\pst@dimm by \pslabelsep \vbox to\z@{\ifdim\pst@dimd>\z@\vskip\pst@dimm\else\vss\fi \ifnum\pst@cnta<\z@\pst@dimb=-\pst@dimb\fi \hbox to\z@{\ifshoworigin\hbox to \z@{\hss\pst@@@hlabel{\psk@Ox}\hss}\fi \mmultido{\n=\psk@Ox+\psk@Dx}{\pst@cnta}{\hskip\pst@dimb\hbox to \z@{\hss\pst@@@hlabel{\n}\hss}}\hss }\ifdim\pst@dimd>\z@\vss\else\vskip\pst@dimm\fi }}

\def\pst@vlabels#1#2#3#4{\ifdim#1=\z@\else \ifx#2\empty\else\advance#1\ifdim#1>\z@-\fi7\pslinewidth\fi \pst@cnta=#1\relax          \divide\pst@cnta\psk@dy\relax  \ifnum\pst@cnta=\z@\else \pst@dima=\psk@dy sp\ifodd\number\psk@labels\else\ifPst@yAxis\pst@@vlabels\fi\fi \showoriginfalse \fi \fi }
\def\pst@@vlabels{\pst@dimm=\pst@yticksizeC \advance\pst@dimm by \pslabelsep \vbox to\z@{\ifnum\pst@cnta>\z@\pst@dima=-\pst@dima\fi \offinterlineskip \ifshoworigin
      \vbox to \z@{\vss\hbox to\z@{\ifdim\pst@dimc>\z@\hss\else\hskip\pst@dimm\fi
        \pst@@@vlabel{\psk@Oy}\ifdim\pst@dimc>\z@\hskip\pst@dimm\else\hss\fi}\vss}\fi \mmultido{\n=\psk@Oy+\psk@Dy}{\pst@cnta}{\vbox to\pst@dima{\vss}
      \vbox to \z@{\vss\hbox to\z@{\ifdim\pst@dimc>\z@ \hss\pst@@@vlabel{\n}\hskip\pst@dimm \else \hskip\pst@dimm\pst@@@vlabel{\n}\hss \fi
        }\vss }}\vss }}
\define@key[psset]{pstricks-add}{nStep}{\def\psk@nStep{#1}}
\define@key[psset]{pstricks-add}{nStart}{\def\psk@nStart{#1}}
\define@key[psset]{pstricks-add}{nEnd}{\def\psk@nEnd{#1}}
\define@key[psset]{pstricks-add}{xStep}{\def\psk@xStep{#1}}
\define@key[psset]{pstricks-add}{yStep}{\def\psk@yStep{#1}}
\define@key[psset]{pstricks-add}{xStart}{\def\psk@xStart{#1}}
\define@key[psset]{pstricks-add}{xEnd}{\def\psk@xEnd{#1}}
\define@key[psset]{pstricks-add}{yStart}{\def\psk@yStart{#1}}
\define@key[psset]{pstricks-add}{yEnd}{\def\psk@yEnd{#1}}
\define@key[psset]{pstricks-add}{plotNo}{\def\psk@plotNo{#1}}
\define@key[psset]{pstricks-add}{plotNoMax}{\def\psk@plotNoMax{#1}}
\def\pstScalePoints(#1,#2)#3#4{\pst@def{ScalePoints}</y ED /x ED
    counttomark dup dup cvi eq not { exch pop } if
    /m exch def /n m 2 div cvi def
    n {
      #4\space y mul #2\space mul m 1 roll
      #3\space x mul #1\space mul m 1 roll
      /m m 2 sub
      def } repeat>}
\def\listplot@ii#1{\@nameuse{beginplot@\psplotstyle}\addto@pscode{/D {} def mark}#1\addto@pscode{\tx@PreparePoints
    \pst@number\psxunit
    \pst@number\psyunit
    \tx@ScalePoints }\@nameuse{endplot@\psplotstyle}}
\define@boolkey[psset]{pstricks-add}[Pst@]{ChangeOrder}[true]{}
\pst@def{PreparePoints}<{counttomark /m exch def
  \ifPst@ChangeOrder
    /m0 m def
    m \psk@plotNoMax\space 1 add div 1 sub cvi {
      m0 \psk@plotNoMax\space 1 add roll /m0 m0 \psk@plotNoMax\space 1 add sub def
    } repeat
  \fi
  /n m \psk@plotNoMax\space 1 add div cvi def
  \psk@plotNoMax\space 1 gt {n {
      \psk@plotNoMax\space \psk@plotNo\space 1 sub neg roll \psk@plotNoMax\space 1 sub { pop } repeat /m m \psk@plotNoMax\space 1 sub sub def
      m 2 roll
    } repeat
  } if /xMax -99999 def /yMax -99999 def
  /xP 0 def /yP 0 def
  m copy
  n {
    /y exch def /x exch def
    xMax x lt { /xMax x def } if
    yMax y lt {/yMax y def } if
    xP x gt { /xP x def } if
    yP y gt { /yP y def } if
  } repeat
\psk@xStep\space 0 gt \psk@yStep\space 0 gt or (\psk@xStart) length 0 gt or
  (\psk@yStart) length 0 gt or (\psk@xEnd) length 0 gt or (\psk@yEnd) length 0 gt or {
(\psk@xStart) length 0 gt {\psk@xStart\space }{ xP } ifelse /xStart exch def
    (\psk@yStart) length 0 gt {\psk@yStart\space }{ yP } ifelse /yStart exch def
    (\psk@xEnd) length 0 gt { \psk@xEnd\space }{ xMax } ifelse /xEnd exch def
    (\psk@yEnd) length 0 gt { \psk@yEnd\space }{ yMax } ifelse /yEnd exch def
    n {
      m -2 roll
      2 copy /yVal exch def /xVal exch def
      xVal xP ge
      yVal yP ge and
      xVal xEnd le and
      yVal yEnd le and
      xVal xStart ge and
      yVal yStart ge and {
        /xP xP \psk@xStep\space add def
        /yP yP \psk@yStep\space add def
      }{pop pop
        /m m 2 sub def
      } ifelse
    } repeat
  }{/ncount 0 def
    (\psk@nEnd) length 0 gt { \psk@nEnd\space }{ m } ifelse 
    /nEnd exch def
    n {
      m -2 roll
      \psk@nStep\space 1 gt {
        ncount \psk@nStart\space sub \psk@nStep\space mod 0 eq }{ true } ifelse
        ncount nEnd le and
        ncount \psk@nStart\space ge and not {
          pop pop
          /m m 2 sub def
        } if
        /ncount ncount 1 add def
      } repeat
  } ifelse
}>
\define@key[psset]{pstricks-add}{xAxisLabel}{\def\psk@xAxisLabel{#1}}
\define@key[psset]{pstricks-add}{yAxisLabel}{\def\psk@yAxisLabel{#1}}
\define@key[psset]{pstricks-add}{xAxisLabelPos}{\def\psk@xAxisLabelPos{#1}}
\define@key[psset]{pstricks-add}{yAxisLabelPos}{\def\psk@yAxisLabelPos{#1}}
\newdimen\psk@llx
\newdimen\psk@lly
\newdimen\psk@urx
\newdimen\psk@ury
\define@key[psset]{pstricks-add}{llx}{\pssetxlength\psk@llx{#1}}
\define@key[psset]{pstricks-add}{lly}{\pssetylength\psk@lly{#1}}
\define@key[psset]{pstricks-add}{urx}{\pssetxlength\psk@urx{#1}}
\define@key[psset]{pstricks-add}{ury}{\pssetylength\psk@ury{#1}}
\newif\ifPst@plot@box
\define@key[psset]{pstricks-add}{box}[true]{\@nameuse{Pst@plot@box#1}}
\newdimen\pst@xunit
\newdimen\pst@yunit
\def\psgraph{\pst@object{psgraph}}
\def\psgraph@i{\pst@getarrows\psgraph@ii}
\def\psgraph@ii(#1,#2){\catcode`\!=12\@ifnextchar({\psgraph@iii(#1,#2)}{\psgraph@iv(0,0)(#1,#2)}}
\def\psgraph@iii(#1,#2)(#3,#4){\@ifnextchar({\psgraph@v(#1,#2)(#3,#4)}{\psgraph@iv(#1,#2)(#3,#4)}}
\def\psgraph@iv(#1,#2)(#3,#4)#5#6{\pst@killglue \begingroup \pst@dimo=#3\p@\advance\pst@dimo by -#1\p@ \pst@divide{#5}{\pst@dimo}\pst@tempA \pst@xunit=\pst@tempA\p@ \pst@dimo=#4\p@\advance\pst@dimo by -#2\p@ \ifx!#6 \pst@dima=\pst@tempA\pst@dimo\else\pst@dima=#6\fi
  \pst@divide\pst@dima{\pst@dimo}\pst@tempA \pst@yunit=\pst@tempA\p@ \pst@dima=#1\pst@xunit \advance\pst@dima by \psk@llx \pst@dimb=#2\pst@yunit \advance\pst@dimb by \psk@lly \pst@dimc=#3\pst@xunit \advance\pst@dimc by \psk@urx \pst@dimd=#4\pst@yunit \advance\pst@dimd by \psk@ury \if@star\pspicture*(\pst@dima,\pst@dimb)(\pst@dimc,\pst@dimd)\else \pspicture(\pst@dima,\pst@dimb)(\pst@dimc,\pst@dimd)\fi \psset{xunit=\pst@xunit,yunit=\pst@yunit}\bgroup \use@par \psaxes(#1,#2)(#3,#4)\egroup \psgraph@vi(#1,#2)(#3,#4)}
\def\psgraph@v(#1,#2)(#3,#4)(#5,#6)#7#8{\pst@killglue \begingroup \pst@dimo=#5\p@\advance\pst@dimo by -#3\p@ \pst@divide{#7}{\pst@dimo}\pst@tempA \pst@xunit=\pst@tempA\p@ \pst@dimo=#6\p@\advance\pst@dimo by -#4\p@ \ifx!#8 \pst@dima=\pst@tempA\pst@dimo\else\pst@dima=#8\fi
  \pst@divide\pst@dima{\pst@dimo}\pst@tempA \pst@yunit=\pst@tempA\p@ \pst@dima=#3\pst@xunit \advance\pst@dima by \psk@llx \pst@dimb=#4\pst@yunit \advance\pst@dimb by \psk@lly \pst@dimc=#5\pst@xunit \advance\pst@dimc by \psk@urx \pst@dimd=#6\pst@yunit \advance\pst@dimd by \psk@ury \if@star\pspicture*(\pst@dima,\pst@dimb)(\pst@dimc,\pst@dimd)\else \pspicture(\pst@dima,\pst@dimb)(\pst@dimc,\pst@dimd)\fi \psset{xunit=\pst@xunit,yunit=\pst@yunit}\bgroup \use@par \psaxes(#1,#2)(#3,#4)(#5,#6)\egroup \psgraph@vi(#1,#2)(#5,#6)}
\def\psgraph@vi(#1,#2)(#3,#4){\ifx\psk@xAxisLabel\@empty\else \ifx\psk@xAxisLabelPos\@empty\uput[0](#3,#2){\psk@xAxisLabel}\else\rput(\psk@xAxisLabelPos){\psk@xAxisLabel}\fi \fi \ifx\psk@yAxisLabel\@empty\else \ifx\psk@yAxisLabelPos\@empty\uput[90](#1,#4){\psk@yAxisLabel}\else\rput{90}(\psk@yAxisLabelPos){\psk@yAxisLabel}\fi \fi \ignorespaces }
\def\endpsgraph{\pst@killglue \endpspicture \endgroup }
\@namedef{psgraph*}{\psgraph*}
\@namedef{endpsgraph*}{\endpsgraph}
\define@key[psset]{pstricks-add}{ignoreLines}{\def\psk@ignoreLines{#1}}

\newcount\linecnt
\begingroup
\catcode`\,=13
\catcode`\_=13
\gdef\savedata@#1[#2]{\xdef\pst@tempg{#2_}\endgroup
  \let#1\pst@tempg
  \global\let\pst@tempg\relax
  \ignorespaces}
\gdef\readdata@{\read1 to \pst@tempA
  \ifnum\linecnt=\psk@nStep
    \global\linecnt=0
    \expandafter\readdata@@\pst@tempA_\@nil
  \fi
  \global\advance\linecnt by 1
  \ifeof1\else\expandafter\readdata@\fi}
\gdef\pst@@readfile#1#2\@nil{\addto@pscode{,#1#2}}\gdef\readdata@@#1#2\@nil{\xdef\pst@tempg{\pst@tempg,#1#2}}\endgroup

\def\readdata{\@ifnextchar[{\readdata@i}{\readdata@i[]}}
\def\readdata@i[#1]#2#3{\def\pst@tempA{#1}\ifx\pst@tempA\@empty\else\psset{#1}\fi
  \openin1=#3
  \begingroup
  \def\pst@tempg{}\ifeof1
    \@pstrickserr{Data file `#3' not found.}\@ehpa
  \else
    \pst@datadelimiters
    \catcode`\[=1
    \catcode`\]=2
    \pst@cnta=0
    \loop \ifnum\the\pst@cnta<\psk@ignoreLines
      \advance\pst@cnta by 1\relax
      \read1 to \pst@tempA
    \repeat
    \ifnum\Pst@Debug>0 \typeout{>>> ignored \the\pst@cnta\space data lines}\fi \global\linecnt=\psk@nStep \readdata@ \fi \endgroup \global\let#2\pst@tempg \global\let\pst@tempg\relax \ignorespaces}
\define@boolkey[psset]{pstricks-add}[Pst@]{polarplot}[true]{}
\define@boolkey[psset]{pstricks-add}[Pst@]{algebraic}[true]{}
\psset[pstricks-add]{polarplot=false,algebraic=false}\define@key[psset]{pstricks-add}{method}{\def\psk@method{#1}}\define@key[psset]{pstricks-add}{whichabs}{\def\psk@whichabs{#1}}\define@key[psset]{pstricks-add}{whichord}{\def\psk@whichord{#1}}\define@key[psset]{pstricks-add}{plotfuncx}{\def\psk@plotfuncx{#1}}\define@key[psset]{pstricks-add}{plotfuncy}{\def\psk@plotfuncy{#1}}\define@key[psset]{pstricks-add}{expression}{\def\psk@expression{#1}}\define@boolkey[psset]{pstricks-add}[Pst@]{buildvector}[true]{}\def\@rkiv{rk4}\def\@adams{adams}\def\@default{default}\define@boolkey[psset]{pstricks-add}[Pst@]{VarStep}[true]{}
\define@key[psset]{pstricks-add}{PlotDerivative}{\def\psk@PlotDerivative{#1}}\define@key[psset]{pstricks-add}{VarStepEpsilon}{\def\psk@VarStepEpsilon{#1}}\define@key[psset]{pstricks-add}{varsteptol}{\def\psk@varsteptol{#1}}\define@key[psset]{pstricks-add}{adamsorder}{\def\psk@adamsorder{#1}}\def\psplot@i#1#2#3{\pst@killglue
  \begingroup
    \use@par
    \@nameuse{beginplot@\psplotstyle}\ifPst@polarplot
      \addto@pscode{\psplot@init
        /x #1 def
        /x1 #2 def
        /dx x1 x sub \psk@plotpoints div def
        /F@pstplot \ifPst@algebraic (#3)
                    \ifx\psk@PlotDerivative\@none\else
                      \psk@PlotDerivative\space { (x) tx@Derive begin Derive end } repeat
                    \fi\space
                    tx@AlgToPs begin AlgToPs end cvx
                 \else { #3 } \fi  def
        \ifPst@VarStep
          /StillZero 0 def /LastNonZeroStep dx def
          /F2@pstplot tx@Derive begin (#3) (x) Derive (x) Derive end
                     \ifx\psk@PlotDerivative\@none\else
                       \psk@PlotDerivative\space { (x) tx@Derive begin Derive end } repeat
                     \fi\space
                    tx@AlgToPs begin AlgToPs end cvx def
/epsilon12 \ifx\psk@VarStepEpsilon\@default tx@Derive begin F2@pstplot end dx 3 exp abs mul abs
                    \else\psk@VarStepEpsilon\space 12 mul \fi def
          /ComputeStep {
            dup 1e-4 lt
            { pop StillZero 2 ge { LastNonZeroStep 2 mul } { LastNonZeroStep } ifelse /StillZero StillZero 1 add def }
            { epsilon12 exch div 1 3 div exp /StillZero 0 def }
            ifelse } bind def
        \fi
        /xy {F@pstplot x \ifPst@algebraic RadtoDeg \fi PtoC
\pst@number\psyunit mul exch
          \pst@number\psxunit mul exch
        } def}\else
\addto@pscode{\psplot@init
      /x #1 def
      /x1 #2 def
      /dx x1 x sub \psk@plotpoints div def
      /F@pstplot \ifPst@algebraic (#3)
                    \ifx\psk@PlotDerivative\@none\else
                      \psk@PlotDerivative\space { (x) tx@Derive begin Derive end } repeat
                    \fi\space
                    tx@AlgToPs begin AlgToPs end cvx
                 \else { #3 } \fi  def
      \ifPst@VarStep
         /StillZero 0 def /LastNonZeroStep dx def
         /F2@pstplot tx@Derive begin (#3) (x) Derive (x) Derive end
                     \ifx\psk@PlotDerivative\@none\else
                       \psk@PlotDerivative\space { (x) tx@Derive begin Derive end } repeat
                     \fi\space
                    tx@AlgToPs begin AlgToPs end cvx def
/epsilon12 \ifx\psk@VarStepEpsilon\@default tx@Derive begin F2@pstplot end dx 3 exp abs mul abs
                    \else\psk@VarStepEpsilon\space 12 mul \fi def
         /ComputeStep {
           dup 1e-4 lt
           { pop StillZero 2 ge { LastNonZeroStep 2 mul } { LastNonZeroStep } ifelse /StillZero StillZero 1 add def }
           { epsilon12 exch div 1 3 div exp /StillZero 0 def }
           ifelse } bind def
      \fi
      /xy {
        x \pst@number\psxunit mul F@pstplot \pst@number\psyunit mul
} def}\fi
    \gdef\psplot@init{}\@pstfalse
    \@nameuse{testqp@\psplotstyle}\if@pst
      \psplot@ii
    \else
      \psplot@iii
    \fi
  \endgroup
  \ignorespaces}
\def\psplot@ii{\ifPst@VarStep
    \addto@pscode{mark xy \@nameuse{beginqp@\psplotstyle}
      { F2@pstplot abs ComputeStep
        x 2 copy add dup x1 gt {pop x1} if /x exch def F2@pstplot abs ComputeStep
        /x 3 -1 roll def 2 copy gt { exch } if pop
        /x x 3 -1 roll add dup x1 gt {pop x1} if def
        xy \@nameuse{doqp@\psplotstyle}
        x x1 eq { exit } if} loop}\else\pst@killglue \addto@pscode{xy \@nameuse{beginqp@\psplotstyle}
      \ifx\psk@method\@varrkiv\else\psk@plotpoints 1 sub \fi {
        /x x dx add \ifx\psk@method\@varrkiv  dup x1 gt { pop x1 } if \fi def
        xy \@nameuse{doqp@\psplotstyle}
        \ifx\psk@method\@varrkiv  x x1 eq { exit } if \fi
      } \ifx\psk@method\@varrkiv loop\else repeat\fi
      /x x1 def
      xy \@nameuse{doqp@\psplotstyle}}\fi \@nameuse{endqp@\psplotstyle}}
\def\psplot@iii{\ifPst@VarStep
    \addto@pscode{/n 2 def
      mark
      { xy n 2 roll F2@pstplot abs
        ComputeStep x 2 copy add dup x1 gt {pop x1} if
        /x exch def F2@pstplot abs ComputeStep
        /x 3 -1 roll def 2 copy gt { exch } if pop
        /x x 3 -1 roll dup /LastNonZeroStep exch def add dup x1 gt {pop x1} if def /n n 2 add def
        x x1 eq { exit } if } loop
      xy n 2 roll}\else\pst@killglue \addto@pscode{mark
      /n 2 def
      \ifx\psk@method\@varrkiv\else\psk@plotpoints\fi {
        xy
        n 2 roll
        /n n 2 add def
        /x x dx add \ifx\psk@method\@varrkiv  dup x1 gt { pop x1 } if \fi def
        \ifx\psk@method\@varrkiv  x x1 eq { exit } if \fi
      } \ifx\psk@method\@varrkiv loop\else repeat\fi
      /x x1 def
      xy
      n 2 roll}\fi \@nameuse{endplot@\psplotstyle}}
\def\parametricplot@i#1#2#3{\pst@killglue \begingroup
    \use@par
    \@nameuse{beginplot@\psplotstyle}\addto@pscode{\psplot@init
      /t #1 def
      /t1 #2 def
      /dt t1 t sub \psk@plotpoints div def
      /F@pstplot \ifPst@algebraic (#3)
                    \ifx\psk@PlotDerivative\@none\else
                      \psk@PlotDerivative\space { (t) tx@Derive begin Derive end } repeat
                    \fi\space
                    tx@AlgToPs begin AlgToPs end cvx
                 \else { #3 } \fi  def
      \ifPst@VarStep
         /StillZero 0 def /LastNonZeroStep dt def
         /F2@pstplot tx@Derive begin (#3) (t) Derive (t) Derive end
                     \ifx\psk@PlotDerivative\@none\else
                       \psk@PlotDerivative\space { (t) tx@Derive begin Derive end } repeat
                     \fi\space
                    tx@AlgToPs begin AlgToPs end cvx def
/epsilon12 \ifx\psk@VarStepEpsilon\@default
                       tx@Derive begin F2@pstplot end Pyth
                       dt 3 exp abs mul
                    \else\psk@VarStepEpsilon\space 12 mul \fi def
         /ComputeStep {
           dup 1e-4 lt
           { pop StillZero 2 ge { LastNonZeroStep 2 mul } { LastNonZeroStep } ifelse /StillZero StillZero 1 add def }
           { epsilon12 exch div 1 3 div exp /StillZero 0 def }
           ifelse } bind def
      \fi
      /xy {
        \ifPst@algebraic F@pstplot \else #3 \fi
        \pst@number\psyunit mul exch
        \pst@number\psxunit mul exch
      } def}\gdef\psplot@init{}\@pstfalse
    \@nameuse{testqp@\psplotstyle}\if@pst
      \parametricplot@ii
    \else
      \parametricplot@iii
    \fi
  \endgroup
  \ignorespaces}
\def\parametricplot@ii{\ifPst@VarStep
    \addto@pscode{mark xy \@nameuse{beginqp@\psplotstyle}
      { F2@pstplot Pyth ComputeStep
        t 2 copy add dup t1 gt {pop t1} if /t exch def F2@pstplot Pyth ComputeStep
        /t 3 -1 roll def 2 copy gt { exch } if pop
        /t t 3 -1 roll add dup t1 gt {pop t1} if def
        xy \@nameuse{doqp@\psplotstyle}
        t t1 eq { exit } if } loop}\else\pst@killglue \addto@pscode{xy \@nameuse{beginqp@\psplotstyle}
      \psk@plotpoints 1 sub {
        /t t dt add def
        xy \@nameuse{doqp@\psplotstyle}
      } repeat
      /t t1 def
      xy \@nameuse{doqp@\psplotstyle}}\fi \@nameuse{endqp@\psplotstyle}}
\def\parametricplot@iii{\ifPst@VarStep
    \addto@pscode{/n 2 def
      mark
      { xy n 2 roll F2@pstplot Pyth
        ComputeStep t 2 copy add dup t1 gt {pop t1} if
        /t exch def F2@pstplot Pyth ComputeStep
        /t 3 -1 roll def 2 copy gt { exch } if pop
        /t t 3 -1 roll dup /LastNonZeroStep exch def add dup t1 gt {pop t1} if def /n n 2 add def
        t t1 eq { exit } if } loop
      xy n 2 roll}\else\pst@killglue \addto@pscode{mark
      /n 2 def
      \psk@plotpoints {
        xy
        n 2 roll
        /n n 2 add def
        /t t dt add def
      } repeat
      /t t1 def
      xy
      n 2 roll}\fi \@nameuse{endplot@\psplotstyle}}
\define@key[psset]{pstricks-add}{barwidth}{\pst@getlength{#1}\Add@barwidth}
\psset[pstricks-add]{barwidth=0.25cm}
\def\psbar@ii{\addto@pscode{false \tx@NArray \psbar@iii}}
\def\psbar@iii{newpath
  n { 
    /Yval exch def /Xval exch def 
    Xval \number\Add@barwidth 0.5 mul sub 0 moveto 
    0 Yval rlineto \number\Add@barwidth 0 rlineto 
    0 Yval neg rlineto \number\Add@barwidth neg 0 rlineto
  } repeat
}\def\beginplot@bar{\begin@SpecialObj}
\def\endplot@bar{\psbar@ii\psk@fillstyle\ifpsshadow\pst@closedshadow\fi \pst@stroke
  \end@SpecialObj }
\def\psLSM@ii{\addto@pscode{false \tx@NArray \psLSM@iii}}
\def\psLSM@iii{/xiSquare 0 def				/xi 0 def					/fi 0 def					/xifi 0 def					exch dup dup /xEnd ED /xStart ED exch
  n { 						/Yval ED /Xval ED 				/xi xi Xval add def				/xiSquare xiSquare Xval dup mul add def	/xifi xifi Xval Yval mul add def		/fi fi Yval add def				Xval xStart lt { /xStart Xval def } if	Xval xEnd gt { /xEnd Xval def } if		} repeat
  /u xiSquare fi mul xi xifi mul sub n xiSquare mul xi dup mul sub div def
  /v n xifi mul xi fi mul sub n xiSquare mul xi dup mul sub div def
  \Pst@Debug\space 0 gt { 			/Helvetica findfont 12 scalefont setfont	
    0 -50 moveto (y=)show 			v 20 string cvs show ( x+) show		u \pst@number\psyunit div 20 string cvs show } if
  newpath
  (\psk@xStart) length 0 gt 			{ \psk@xStart\space \pst@number\psxunit mul }
    { xStart } ifelse  
  dup v mul u add 				moveto		 			(\psk@xEnd) length 0 gt 			{ \psk@xEnd\space \pst@number\psxunit mul }
    { xEnd } ifelse 
  dup v mul u add 				lineto					}\def\beginplot@LSM{\begin@SpecialObj}
\def\endplot@LSM{\psLSM@ii\psk@fillstyle\ifpsshadow\pst@closedshadow\fi \pst@stroke
  \end@SpecialObj }
\define@key[psset]{pstricks-add}{StepType}{\pst@expandafter\psset@@StepType{#1}\@nil}\def\psset@@StepType#1#2\@nil{\ifx#1u\let\psk@StepType\@ne
  \else\ifx#1l\let\psk@StepType\z@
  \else\ifx#1i\let\psk@StepType\thr@@
  \else\ifx#1s\let\psk@StepType\f@ur
  \else\let\psk@StepType\tw@\fi\fi\fi\fi}
\psset{StepType=lower} \def\psStep{\pst@object{psStep}}
\def\psStep@i(#1,#2)#3#4{\begin@ClosedObj \addto@pscode{
    \ifPst@algebraic /Func (#4) tx@addDict begin AlgParser end cvx def \fi 
    /x #1  def
    /dx #2 #1 sub #3 div def
    /scx { \pst@number\psxunit mul } def 
    /scy { \pst@number\psyunit mul } def
    \ifcase\psk@StepType x scx 0 moveto 
      #3 {
        \ifPst@algebraic Func \else #4 \fi scy dup x scx exch lineto 
        /x x dx add def
        x scx exch lineto x scx 0 lineto
      } repeat
    \or x scx 0 moveto 
      #3 {
        /x x dx add def
        \ifPst@algebraic Func \else #4 \fi scy dup x dx sub scx exch lineto 
        x scx exch lineto x scx 0 lineto
      } repeat
    \or /eps3 100 def
      /xMinMax [] def
      /AMax [] def
      /AMin [] def
      /dt dx eps3 div def
      #3 {
        /Max \ifPst@algebraic Func \else #4 \fi def 
        /Min Max def 
	/t x def eps3 {
	  \ifPst@algebraic Func \else #4 \fi 
	  dup
	  Max lt { /Max exch def } { dup Min gt { /Min exch def }{ pop } ifelse } ifelse
	  /x x dt add def
	} repeat 
	/x t def  x scx Min scy Max scy xMinMax aload length 3 add array astore /xMinMax exch def
        /x x dx add def
      } repeat
      /dx dx scx def
      xMinMax aload length 3 div cvi { 
        /yMax ED /yMin ED /x ED 
	x yMin moveto dx 0 rlineto x dx add yMax lineto 
	dx neg 0 rlineto x yMin lineto } repeat
    \or x scx 0 moveto 
      #3 {
        \ifPst@algebraic Func \else #4 \fi /y0 ED /xOld x def
        /x x dx add def
        \ifPst@algebraic Func \else #4 \fi /y1 ED y0 y1 lt { y0 }{ y1 } ifelse 		  scy dup xOld scx exch lineto 
        x scx exch lineto x scx 0 lineto
      } repeat
    \or x scx 0 moveto 
      #3 {
        \ifPst@algebraic Func \else #4 \fi /y0 ED /x x dx add def
        \ifPst@algebraic Func \else #4 \fi /y1 ED y0 y1 gt { y0 }{ y1 } ifelse 		  scy dup x dx sub scx exch lineto 
        x scx exch lineto x scx 0 lineto
      } repeat
    \fi
  }\psk@fillstyle
  \pst@stroke
  \end@ClosedObj }
\define@key[psset]{pstricks-add}{Derive}{\def\psk@Derive{#1}}\define@boolkey[psset]{pstricks-add}[PST@]{Tnormal}[true]{}

\psset[pstricks-add]{CMYK=true}
\def\@NOTEMPTY{NOT@EMPTY}\def\psplotTangent{\pst@object{psplotTangent}}\def\psplotTangent@i#1#2#3{\begin@OpenObj \ifx\psk@Derive\@empty\ifPst@algebraic\psset{Derive=NOT@EMPTY}\fi\fi \addto@pscode{
    gsave /F@pstplot \ifPst@algebraic (#3) tx@addDict begin AlgParser end cvx \else { #3 } \fi def \ifx\psk@Derive\@empty\else
    \ifx\psk@Derive\@NOTEMPTY\else /FDer@pstplot \ifPst@algebraic (\psk@Derive) tx@addDict begin AlgParser end cvx \else { \psk@Derive } \fi def \fi \fi
    /@parametric false def #1 dup /x ED /t ED tx@addDict begin mark F@pstplot end counttomark 1 gt { /y ED /x ED /@parametric true def } { \ifPst@polarplot x \ifPst@algebraic RadtoDeg \fi PtoC /y ED /x ED \else /y ED \fi } ifelse 
    cleartomark 
    \ifx\psk@Derive\@NOTEMPTY /FDer@pstplot (#3) @parametric { (t) } { (x) } ifelse
        tx@Derive begin Derive end tx@addDict begin AlgParser end cvx def
    \fi x \pst@number\psxunit mul y \pst@number\psyunit mul 
    translate \ifx\psk@Derive\@empty #1 abs 1.0e-6 lt { #1 0.0005 add dup /x ED /t ED tx@addDict begin mark F@pstplot end counttomark 1 gt { /y2 ED /x2 ED }  { \ifPst@polarplot dup x \ifPst@algebraic RadtoDeg \fi 
	  cos mul /x2 ED x \ifPst@algebraic RadtoDeg \fi sin mul \else /x2 x def \fi /y2 ED } ifelse
        cleartomark #1 0.0005 sub dup /x ED /t ED tx@addDict begin mark F@pstplot end counttomark 1 gt { /y1 ED /x1 ED }
	  { \ifPst@polarplot dup x \ifPst@algebraic RadtoDeg \fi 
	    cos mul /x1 ED x \ifPst@algebraic RadtoDeg \fi sin mul \else /x1 x def \fi /y1 ED } ifelse
         cleartomark 
        y2 y1 sub x2 x1 sub } {  #1 1.0005 mul dup /x ED /t ED tx@addDict begin mark F@pstplot end counttomark 1 gt { /y2 ED /x2 ED } { \ifPst@polarplot dup x \ifPst@algebraic RadtoDeg \fi 
	    cos mul /x2 ED x \ifPst@algebraic RadtoDeg \fi sin mul \else /x2 x def \fi /y2 ED } ifelse
	cleartomark 
        #1 .9995 mul dup /x ED /t ED tx@addDict begin mark F@pstplot end counttomark 1 gt { /y1 ED /x1 ED } { \ifPst@polarplot dup x \ifPst@algebraic RadtoDeg \fi 
	    cos mul /x1 ED x \ifPst@algebraic RadtoDeg \fi sin mul \else /x1 x def \fi /y1 ED } ifelse
	cleartomark 
        y2 y1 sub \pst@number\psyunit mul x2 x1 sub \pst@number\psxunit mul } ifelse 
      atan \else #1 dup /x ED /t ED tx@addDict begin mark FDer@pstplot end counttomark 1 gt { /y ED /x ED }
      { \ifPst@polarplot /Fphi ED tx@addDict begin F@pstplot end x \ifPst@algebraic RadtoDeg \fi PtoC /y0 ED /x0 ED x \ifPst@algebraic RadtoDeg \fi sin Fphi mul x0 add /y ED 
           x \ifPst@algebraic RadtoDeg \fi cos Fphi mul y0 sub /x ED 
      \else /y ED /x 1 def \fi } ifelse
    cleartomark 
    y \pst@number\psyunit mul x \pst@number\psxunit mul Atan \ifPST@Tnormal 90 add \fi
\fi
    rotate 					/Lineto /lineto load def
    [
    \ifPST@Tnormal
      0 0 #2 
      y \pst@number\psyunit mul x \pst@number\psxunit mul Atan 90 add cos div \pst@number\psxunit mul 0  \else    
      -#2 \pst@number\psxunit mul 0 		#2 \pst@number\psxunit mul 0 		\fi
    \pst@cp					false					\tx@Line
stroke					\ifshowpoints 				\psk@dotsize
      \@nameuse{psds@\psk@dotstyle}0 0 Dot
    \fi
    grestore					}\use@pscode					\endgroup \ignorespaces }\def\@varrkiv{varrkiv}\define@key[psset]{pstricks-add}{filename}{\def\psk@filename{#1}}\define@boolkey[psset]{pstricks-add}[Pst@]{saveData}[true]{} \psset[pstricks-add]{saveData=false,filename=PSTdata}
\def\psplotDiffEqn{\pst@object{psplotDiffEqn}}\def\psplotDiffEqn@i#1#2#3#4{\pst@killglue \begingroup \use@par \@nameuse{beginplot@\psplotstyle}\addto@pscode{\ifPst@saveData /Pst@data (\psk@filename) (w) file def \fi
    /x #1 def				/x1 #2 def				/y [ #3 ] def			/ylength y length def		/addvect {
      1 1 ylength {
        /i exch def
	ylength i sub 2 add -1 roll add ylength 2 mul i sub 1 roll
      } for
    } def
    /dx x1 x sub \psk@plotpoints\space div def
    /mulvect {
      ylength exch
      1 index {
        dup 4 -1 roll mul 2 index 2 add 1 roll
      } repeat
      pop pop } def
    /divvect { ylength exch 1 index { dup 4 -1 roll exch div 2 index 2 add 1 roll } repeat pop pop } def
    /k0 0 def /k1 0 def /k2 0 def /k3 0 def
    \ifPst@algebraic /F@pstplot (#4) tx@addDict begin AlgParser end cvx def \fi
    /Func {
      \ifPst@algebraic F@pstplot ylength array astore
      \else
        \ifPst@buildvector\else y aload pop \fi #4
        \ifPst@buildvector\else ylength array astore \fi
      \fi
    } def
    \ifx\psk@method\@adams /F1 0 def /F2 0 def /F3 0 def /F4 0 def /F5 0 def /F6 0 def /INIT 1 def \fi
    \ifx\psk@method\@empty\else
      \ifx\psk@method\@varrkiv	/VarStep false def /VarStepRatio 1 def
        /RK {
           /k0 Func { dx mul } forall ylength array astore def 				dup aload pop k0 { 2 div } forall addvect ylength array astore /y exch def x dup dx 2 div add /x exch def 						/k1 Func { dx mul } forall ylength array astore def 				exch dup aload pop k1 { 2 div } forall addvect y astore pop 			/k2 Func { dx mul } forall ylength array astore def 				dup aload pop k2 aload pop addvect y astore pop exch dup dx add /x exch def 	/k3 Func { dx mul } forall ylength array astore def /x exch def 									dup aload pop k0 aload pop k1 aload pop k2 aload pop addvect
           2 mulvect addvect k3 aload pop addvect
           6 divvect addvect y astore
        } def
        /VARRK {
          VarStep
{ /dx dx VarStepRatio mul def /VarStep false def } if
          x dx add x1 gt { /dx x1 x sub def } if
RK exch /y exch def /dx dx 2 div def
          { y RK /y exch def y RK dup aload pop 4 ylength add -1 roll
            { -1 mul } forall addvect 0 ylength { exch abs 2 copy lt { exch } if pop } repeat
            0 3 -1 roll {abs 2 copy lt { exch } if pop } forall
            dup 1e-6 lt { pop } { div } ifelse
            /dx dx 2 mul def
            dup \psk@varsteptol\space lt
{ .001 div dup .1 lt
              { dup 1e-6 lt { pop 3 } { log neg } ifelse /VarStepRatio exch def /VarStep true def }
              { pop } ifelse pop exit } if
            pop /dx dx 4 div def exch /y exch def } loop
        } def
      \else			/RK {
           /k0 Func { dx mul } forall ylength array astore def 				dup aload pop k0 { 2 div } forall addvect ylength array astore /y exch def x dup dx 2 div add /x exch def 						/k1 Func { dx mul } forall ylength array astore def 				exch dup aload pop k1 { 2 div } forall addvect y astore pop 			/k2 Func { dx mul } forall ylength array astore def 				dup aload pop k2 aload pop addvect y astore pop exch dup dx add /x exch def 	/k3 Func { dx mul } forall ylength array astore def /x exch def 									dup aload pop k0 aload pop k1 aload pop k2 aload pop addvect
           2 mulvect addvect k3 aload pop addvect
           6 divvect addvect y astore pop
        } def
        \ifx\psk@method\@adams
           /ADAMS {
             \ifcase\psk@adamsorder
                \errmessage{pstricks-add error: no order 0th for adams method (see user's manual)}
             \or\errmessage{pstricks-add error: no order 1st for adams method (see user's manual)}
             \or\errmessage{pstricks-add error: no order 2nd for adams method (see user's manual)}
             \or\errmessage{pstricks-add error: no order 3rd for adams method (see user's manual)}
             \or
F4 aload pop  55 mulvect
               F3 aload pop -59 mulvect addvect
               F2 aload pop  37 mulvect addvect
               F1 aload pop  -9 mulvect addvect
               dx mulvect 24 divvect
             \or
F5 aload pop  1901 mulvect
               F4 aload pop -2774 mulvect addvect
               F3 aload pop  2616 mulvect addvect
               F2 aload pop -1274 mulvect addvect
               F1 aload pop   251 mulvect addvect
               dx mulvect 720 divvect
             \or
F6 aload pop  4277 mulvect
               F5 aload pop -7923 mulvect addvect
               F4 aload pop  9982 mulvect addvect
               F3 aload pop -7298 mulvect addvect
               F2 aload pop  2877 mulvect addvect
               F1 aload pop  -475 mulvect addvect
               dx mulvect 1440 divvect
             \fi
             y aload pop addvect ylength array astore /y exch def } def
        \fi
      \fi
    \fi
    /xy {
      \ifx\psk@plotfuncx\@empty
        \ifx\psk@whichabs\@empty x \else y \psk@whichabs\space get \fi
      \else \psk@plotfuncx\space \fi
      \pst@number\psxunit mul y 
      \ifx\psk@method\@empty							/y Func { dx mul } forall y aload pop addvect ylength array astore def
      \else \ifx\psk@method\@varrkiv						VARRK
        \else\ifx\psk@method\@rkiv						RK
        \else
          /F1 F2 def /F2 F3 def /F3 F4 def /F4 				        \ifcase\psk@adamsorder\or\or\or\or
Func def
           \or
F5 def /F5 Func def
           \or
F5 def /F5 F6 def /F6 Func def
          \fi
           INIT \psk@adamsorder\space lt
           { RK /INIT INIT 1 add def }
           { ADAMS } ifelse
        \fi\fi
      \fi
      \ifx\psk@plotfuncy\@empty
        \ifx\psk@whichord\@empty 0 \else \psk@whichord\space \fi  get \else \psk@plotfuncy\space \fi
      \pst@number\psyunit mul  
      \ifPst@saveData 
        2 copy \pst@number\psyunit div exch  \pst@number\psxunit div
        20 string cvs Pst@data exch writestring 
        Pst@data (\space) writestring 
        20 string cvs Pst@data exch writestring 
        Pst@data (\string\n) writestring 
      \fi
    } def
  }\gdef\psplot@init{}\@pstfalse
  \@nameuse{testqp@\psplotstyle}\if@pst\psplot@ii\else\psplot@iii\fi
  \addto@pscode{\ifPst@saveData Pst@data closefile \fi}
  \endgroup \ignorespaces }
\def\psGTriangle{\pst@object{psGTriangle}}
\def\psGTriangle@i(#1)(#2)(#3)#4#5#6{{\def\solid@star{}\begin@ClosedObj
  \pst@getcoor{#1}\pst@tempA \pst@getcoor{#2}\pst@tempB \pst@getcoor{#3}\pst@tempC \pst@getcolor{#4}\pst@colorA
  \pst@getcolor{#5}\pst@colorB
  \pst@getcolor{#6}\pst@colorC
  \addto@pscode{\pst@tempC		    \pst@tempB		    \psk@gangle             \pst@tempA 		    /rgb {} def
    /gray {} def
    [ \pst@colorC ] aload length 1 eq { dup dup } if 3 array astore [ \pst@colorB ] aload length 1 eq { dup dup } if 3 array astore
    [ \pst@colorA ] aload length 1 eq { dup dup } if 3 array astore
    tx@addDict begin GTriangle end }\if@star\pspolygon(#1)(#2)(#3)\fi \def\pst@linetype{2}\end@ClosedObj }}
\define@key[psset]{pstricks-add}{dicescale}{\def\psk@dicescale{#1}}
\def\psdice{\pst@object{psdice}}
\def\psdice@i#1{{\pst@killglue
  \psset{framearc=0.3,linewidth=1pt,dicescale=1.0}\use@par \psscalebox{\psk@dicescale}{\psframe(-0.5,-0.5)(0.5,0.5)\ifcase#1\or\qdisk(0,0){3pt}\or\qdisk(-0.3,-0.3){3pt}\qdisk(0.3,0.3){3pt}\or\psdice@i{1}\psdice@i{2}\or\qdisk(-0.3,0.3){3pt}\qdisk(-0.3,-0.3){3pt}\qdisk(0.3,0.3){3pt}\qdisk(0.3,-0.3){3pt}\or\psdice@i{1}\psdice@i{4}\or\psdice@i{4}\qdisk(-0.3,0){3pt}\qdisk(0.3,0){3pt}\fi}\ignorespaces }}
\def\psMatrixPlot{\pst@object{psMatrixPlot}}
\def\psMatrixPlot@i#1#2#3{\pst@killglue
  \begingroup
  \begin@SpecialObj \addto@pscode{
    (#3) run   		\psk@dotsize
    \@nameuse{psds@\psk@dotstyle} /n 0 def   		1 1 #1 {		/y exch def	1 1 #2 {		/x exch def	dotmatrix n get dup 0 gt { 	x \pst@number\psxunit mul 
	  \ifPst@ChangeOrder #1 y sub 1 add \else y \fi \pst@number\psyunit mul Dot} { pop } ifelse
	/n n 1 add def
      } for 
    } for
  }\end@SpecialObj \endgroup \ignorespaces }
\def\resetOptions{\@zero=0\def\pst@linetype{0}\psset[pstricks-add]{hooklength=3mm, hookwidth=1mm,
    ArrowFill=true,
    ArrowInside={}, ArrowInsidePos=0.5,
    ArrowInsideNo=1, ArrowInsideOffset=0,
    arrowLW=0,
    dashNo=0.2,linecap=0,
    xyAxes=true,
    trigLabels=false,trigLabelBase=0,
    xDecimals={},yDecimals={},
    xlogBase={},ylogBase={},
    logLines=none,
    ignoreLines=0,
    nStep=1,nStart=0,nEnd={},
    xStep=0,yStep=0,xStart={},xEnd={},yStart={},yEnd={},comma=false,
    plotNo=1,plotNoMax=1,
    xAxisLabel=x,yAxisLabel=y,
    yAxisLabelPos={},xAxisLabelPos={},
    llx=\z@, lly=\z@, urx=\z@, ury=\z@,randomPoints=1000,color=false,
    method={},whichabs={},whichord={},
    plotfuncx={},plotfuncy={},buildvector=false,
Derive={},adamsorder=4,
    VarStep=false, PlotDerivative=none, VarStepEpsilon=default,
    varsteptol=.001,
    Tnormal=false,
    braceWidth=2\pslinewidth,
    bracePos=0.5,
    braceWidthInner=10\pslinewidth,
    braceWidthOuter=10\pslinewidth
  }
  \psset{unit=1cm,swapaxes=false,showpoints=false,border=0pt, bordercolor=white,doubleline=false, doublesep=1.25\pslinewidth,doublecolor=white,shadow=false, shadowsize=3pt, shadowangle=-45, shadowcolor=darkgray,linewidth=.8pt,linecolor=black,maxdashes=11, dash=5pt 3pt, dashadjust=true, dotsep=3pt,linestyle=solid,fillcolor=white,hatchwidth=.8pt, hatchsep=4pt, hatchcolor=black, hatchangle=45,hatchsepinc=0pt,hatchwidthinc=0pt,fillstyle=none,nArrows=2,arrows=-, arrowscale=1, arrowsize=1.5pt 2, arrowlength=1.4, arrowinset=.4,tbarsize=2pt 5,bracketlength=.15, rbracketlength=.15,liftpen=0, linetype=0,gangle=0,curvature=1 .1 0,dotsize=2pt 2,dotangle=0, dotscale=1, dotstyle=*,linearc=0pt,framearc=0,cornersize=relative,dimen=middle,gridwidth=.8pt, griddots=0, gridcolor=black,subgridwidth=.4pt, subgridcolor=gray, subgriddots=0, subgriddiv=5,gridlabels=10pt, gridlabelcolor=black,framesep=3pt, boxsep=true,trimode=U,arcsep=0,radius=.25cm,ref=c,rot=0,labelsep=5pt,refangle=0,intSeparator={,},dicescale=1.0,labelFontSize={},StepType=lower, plotstyle=line,plotpoints=50,ticksize=-4pt 4pt, 
  tickstyle=full, ticks=all,subticksize=0.75,subticks=1,tickcolor=black,ticklinestyle=solid,subticklinestyle=solid,subtickcolor=gray,tickwidth=0.5\pslinewidth,subtickwidth=0.25\pslinewidth,labels=all,Ox=0,Dx=1,dx=0,Oy=0,Dy=1,dy=0,xlabelFactor=\relax,ylabelFactor=\relax,showorigin=true,axesstyle=axes,ChangeOrder=false,arrowscale=1,lineAngle=0,
  nodealign=false,
  href=0,
  vref=.7ex,
  framesize=10pt,
  nodesep=0pt,
  arm=10pt,
  offset=0pt,
  angle=0,
  arcangle=8,
  ncurv=.67,
  loopsize=1cm,
  boxsize=.4cm,
  nrot=0,
  npos=,
  tpos=0.5,
  shortput=none,
  colsep=1.5cm,
  rowsep=1.5cm,
  mcol=c,
  mnode=R,
  emnode=none}}
\resetOptions
\catcode`\@=\PstAtCode\relax
%