perm filename PROSE.PAS[TMP,HE] blob
sn#637211 filedate 1982-01-26 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00016 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 (*[b+]----------------------------------------------------------------
C00007 00003 program prose(input, output, infile, outfile)
C00014 00004 type
C00021 00005 var
C00031 00006 (**----------------------*
C00039 00007 procedure takequal(var next: cmdindex)
C00049 00008 (* ----------------*
C00064 00009 (* -------*
C00086 00010 (* ------------------------------------------------------------------ *)
C00092 00011 (* ------------------------------------------------------------------ *)
C00139 00012 (* --------------------------------------------- *)
C00149 00013 (* --------------------------------------------- *)
C00163 00014 (* --------------------------------------------- *)
C00171 00015 (* --------------------------------------------- *)
C00189 00016 (* --------------------------------------------- *)
C00191 ENDMK
C⊗;
(*[b+]----------------------------------------------------------------
Prose - a text formatting tool.
J. P. Strait. 77/06/05.
copyright (c) 1977, 1979.
All rights reserved.
Prose is a formatting program, designed for document
preparation. It is written in pascal and is implemented in such
a way as to encourage transportation between different hardware and
different operating systems.
Prose was developed in the spring of 1977, and draws
very heavily from typeset, a formatting program written by Michael
Huck. typeset, written in compass (the CDC 6000/Cyber series
assembly language), was in turn based on edit-runoff. Thus prose
is one of the many descendants of runoff.
Complete external documentation is available, and it is
maintained in prose form. Refer to that for an overview of prose.
In striving for portability, the decision was made to
represent text internally in ascii. This means that to transport
this program, one input routine and one output routine must be
rewritten to translate between the host character set and ascii.
Other system dependant details such as the date and clock functions
must be considered for transportation of this program. All areas
which need attention when converting this program from the CDC 6000
version are marked with null comments in columns 69-72.
This version of Prose was converted to use the ascii character
set and to run on the Univac 1110 and the Perkin Elmer 32 bit series
of computers. There is no attempt to retain the CDC code for
reconversion, and changed parts of the program are not marked. The
null comments mentioned above have been removed.
ASCII version:
M. S. Ball
Code 632
Naval Ocean Systems Center
9 January 1979
Version 1.0-2, created on 05/05/81 at 16:07:48
--------------------------------------------------------------------*)
program prose(input, output, infile, outfile);
const
infinity = 1000; (* largest number + 1 *)
maintitle = true; (* title indicator *)
maxinxlength = 60; (* max length of index entries *)
maxiwidth = 132; (* maximun input width *)
maxkeep = 9; (* maximum keep value *)
maxmargin = 132; (* largest right margin *)
maxnumberwidth = 20; (* max number of digits in a number *)
maxowidth = 200; (* maximum output width *)
maxpage = 999; (* maximum page number *)
maxshift = 50; (* max output shift *)
maxskip = 100; (* maximum skip count *)
maxsplit = 20; (* maximum number of split points *)
maxstringlength = 154; (* max length of text lines *)
min = 10; (* general reasonable mimimum *)
subtitle = false; (* subtitle indicator *)
tabinterval = 8; (*tab interval in input text*)
(* certain constraints are applied to the min/max values, *)
(* to eliminate array overflow checks and other error checks:*)
(* *)
(* maxstringlength >= maxiwidth + maxnumberwidth + 2 *)
(* maxmargin <= maxstringlength - 2 *)
(* (everything) < infinity *)
(* (everything) > (reasonable) *)
(*[s=4] the ascii character set: *)
nul = 0; blank = 32; at = 64; grav = 96;
soh = 1; exclaim = 33; a = 65; smalla = 97;
stx = 2; dquote = 34; b = 66; smallb = 98;
etx = 3; hash = 35; c = 67; smallc = 99;
eot = 4; dollar = 36; d = 68; smalld = 100;
enq = 5; percent = 37; e = 69; smalle = 101;
ack = 6; ampersand = 38; f = 70; smallf = 102;
bel = 7; squote = 39; g = 71; smallg = 103;
bs = 8; lparen = 40; h = 72; smallh = 104;
ht = 9; rparen = 41; i = 73; smalli = 105;
lf = 10; star = 42; j = 74; smallj = 106;
vt = 11; plus = 43; k = 75; smallk = 107;
ff = 12; comma = 44; l = 76; smalll = 108;
cr = 13; minus = 45; m = 77; smallm = 109;
so = 14; period = 46; n = 78; smalln = 110;
si = 15; slash = 47; o = 79; smallo = 111;
dle = 16; zero = 48; p = 80; smallp = 112;
dc1 = 17; one = 49; q = 81; smallq = 113;
dc2 = 18; two = 50; r = 82; smallr = 114;
dc3 = 19; three = 51; s = 83; smalls = 115;
dc4 = 20; four = 52; t = 84; smallt = 116;
nak = 21; five = 53; u = 85; smallu = 117;
syn = 22; six = 54; v = 86; smallv = 118;
etb = 23; seven = 55; w = 87; smallw = 119;
can = 24; eight = 56; x = 88; smallx = 120;
em = 25; nine = 57; y = 89; smally = 121;
sub = 26; colon = 58; z = 90; smallz = 122;
esc = 27; semicolon = 59; lbracket = 91; lbrace = 123;
fs = 28; less = 60; backslash = 92; verticalbar = 124;
gs = 29; equal = 61; rbracket = 93; rbrace = 125;
rs = 30; greater = 62; caret = 94; tilde = 126;
us = 31; question = 63; underscore = 95; del = 127;
(*[s=1]*)
filenamelength = 60; (*max length of a file name for your system*)
rt11 = false; (*set true only if running on RT-11 system*)
rsts = false; (*set true only if running on RSTS system*)
rsx = true; (*set true only if running on RSX system*)
rsxprompt = 'PRS>'; (*prompt to use if on RSX system*)
cmdlinelength = 132; (* length of a command line *)
type
alfa = packed array [1..8] of char;
ascii = 0..127;
asciix = 0..255; (* the type ascii is extended for internal use *)
(* in the following manner: *)
(* *)
(* c + 200b indicates that c is underlined. *)
charclass =
packed record
digit: boolean; (* zero..nine *)
formchar: boolean; (* c,d,e,l,p,s,t,w,hash,lbracket,rbracket,
slash,dquote,squote,rparen,blank *)
inputchar: boolean; (* b,c,d,h,k,u,w,blank *)
letter: boolean; (* a..z,smalla..smallz *)
marginchar: boolean; (* k,l,r,blank *)
numform: boolean; (* n,smalln,l,small,r,smallr,blank *)
optionchar: boolean; (* e,f,j,k,l,m,p,r,s,u,blank *)
outputchar: boolean; (* e,p,s,u,w,blank *)
paragraphchar: boolean; (* c,i,k,n,p,u,blank *)
plusorminus: boolean; (* plus,minus *)
quote: boolean; (* dquote,squote *)
sortinxchar: boolean; (* l,m,p,r,s,blank *)
end;
ch3 = packed array [1..3] of asciix;
ch10 = packed array [1..10] of asciix;
direct = (bre, (* break *)
com, (* comment *)
cou, (* count *)
frm, (* form *)
ind, (* indent *)
inp, (* input *)
inx, (* inx *)
lit, (* literal *)
mar, (* margin *)
opt, (* option *)
out, (* output *)
pag, (* page *)
par, (* paragraph *)
res, (* reset *)
sel, (* select *)
ski, (* skip *)
sor, (* sortindex *)
sbt, (* subtitle *)
ttl, (* title *)
und, (* undent *)
weo, (* weos *)
exc, (* except (used by reset) *)
ill, (* illegal *)
(* the following are not directives, but it is convenient *)
(* to include them in this table. *)
ast, (* ascii terminal *)
lpt, (* line printer *)
vtr, (* video terminal *)
xer, (* Xerox 1650 printer *)
xep, (* Xerox 1650 with proportional spacing *)
ilt); (* illegal *)
dirset = set of direct;
inputsettings =
packed record
defined: boolean;
b, c, d, h, u: ascii;
w: 0..infinity
end;
pinxentry = ↑inxentry;
inxentry =
record
x: packed array [1..maxinxlength] of asciix;
xl: integer; (* length of entry *)
xp: integer; (* page number *)
next: pinxentry
end;
marginsettings =
packed record
defined: boolean;
l, r: 0..infinity
end;
numberform = (numeric, upperalpha, loweralpha, upperroman, lowerroman,
nonumbering);
optionsettings =
packed record
defined: boolean;
e, f, l, m, p, r, u: boolean;
j, s: 0..infinity
end;
paragraphsettings =
packed record
defined: boolean;
c: 0..infinity;
f: ascii;
i: - infinity..infinity;
n: numberform;
p: 0..infinity;
s: 0..infinity;
w: 0..infinity
end;
remember = 0..maxkeep;
splitpoint =
packed record
point: 0..infinity; (* position of split point within word *)
inpnt: 0..infinity; (* position of split point within inline *)
hypnt: boolean (* split point represents possible hyphen *)
end;
pstring = packed array [1..maxstringlength] of asciix;
string = array [1..maxstringlength] of (* str[1].c always = '' *)
packed record
c: asciix; (* character *)
nbl: 0..infinity (* if c='', number of blanks, else charwidth *)
end;
filename = packed array [1..filenamelength] of char;
cmdindex = 1..cmdlinelength; (*pointer to chars in command line*)
cmdbuffer = packed array [cmdindex] of char; (*command line buffer*)
errorname = (unknown, twofilenames, badfile, nofile, nooutputfile,
noinput, manyouts);
var
badjustify: integer; (* j option *)
blankcount: integer; (* accumulated blank output line counter *)
blankline: boolean; (* blank output line indicator *)
casech: ascii; (* c input *)
class: array [ascii] of charclass; (* character classifications *)
ch: char; (*next character on command line*)
charwidth: integer; (* char width in printer units *)
dirch: ascii; (* d input *)
directline: boolean; (* input line is a directive *)
directs: array [direct] of ch3; (* directive names *)
eject: boolean; (* e output *)
endofinput: boolean; (* internal eof indicator *)
ensure2: boolean; (* p option *)
errorn1: integer; (* error in number *)
errorn2: integer; (* error in number *)
errors: boolean; (* errors in this prose run *)
errorsmall: boolean; (* number is too small *)
error1: asciix; (* error text *)
error10: ch10; (* error text *)
eol: boolean; (* internal eoln indicator *)
explicitblank: ascii; (* b input *)
filecount: 0..63; (*input file index on command line (1110)*)
fill: boolean; (* f option *)
firsterror: boolean; (* first error on this line *)
form: pstring; (* form buffer *)
formindex: integer; (* current form position *)
formlength: integer; (* form length *)
formnext: pstring; (* form for next page *)
formnlength: integer; (* length of formnext *)
gaps: array [0..maxstringlength] of 1..maxstringlength;
(* pointers to word gaps *)
hyphen: ascii; (* h option *)
inchar: asciix; (* current input character *)
incolumn: integer; (* current input column *)
infile: text; (*input file, attached as needed*)
inlength: integer; (* length of current input line *)
inline: string; (* current input line *)
inwidth: integer; (* w input *)
inxbase: pinxentry; (* base of index entry list *)
inxlast: pinxentry; (* last index entry *)
keepinp: integer; (* current input keep buffer *)
keepmar: integer; (* current margin keep buffer *)
keepopt: integer; (* current option keep buffer *)
keeppar: integer; (* current paragraph keep buffer *)
leftjustify: boolean; (* l option *)
leftmargin: integer; (* l margin *)
linecount: integer; (* output line count (within page) *)
linenumber: integer; (* input line count (for error messes) *)
linenums: boolean; (* line numbers exist on input file *)
lockeddent: integer; (* i/u paragraph *)
lowercase: boolean; (* for upper to lower case conversion *)
lowerdir: boolean; (* lowercase flag in directives *)
months: array [1..12] of ch3; (* month names *)
moreonleft: boolean; (* indicator for justifying *)
multipleblanks: boolean; (* m option *)
nblanks: integer; (* blank count on input *)
nchars: integer; (* width of output line *)
newinline: boolean; (* begin input line indicator *)
newoutline: boolean; (* begin output line indicator *)
newparagraph: boolean; (* begin paragraph indicator *)
ngaps: integer; (* number of word gaps *)
nicedate: ch10; (* date as yy mmm dd *)
nsplits: integer; (* number of split points in word *)
nwords: integer; (* number of words in output line *)
numbering: numberform; (* n paragraph *)
numberwidth: integer; (* n paragraph *)
outfile: text; (*output file*)
outlength: integer; (* length of output line *)
outline: string; (* output line *)
outwidth: integer; (* w output *)
pagenumber: integer; (* current page number *)
parachar: ascii; (* p paragraph *)
paracount: integer; (* paragraph counter *)
parapage: integer; (* p paragraph *)
paraskip: integer; (* s paragraph *)
pause: boolean; (* p output *)
printerrors: boolean; (* e option *)
rawclock: ch10; (* clock time as hh:mm:ss *)
rawdate: ch10; (* date as yy/mm/dd *)
rightjustify: boolean; (* r option *)
rightmargin: integer; (* r margin *)
saveinp: array [remember] of inputsettings; (* input stack *)
savemar: array [remember] of marginsettings; (* margin stack *)
saveopt: array [remember] of optionsettings; (* option stack *)
savepar: array [remember] of paragraphsettings; (* paragraph stack *)
selection: packed array [0..maxpage] of boolean; (*select directive
setting*)
shift: integer; (* s output *)
shiftup: boolean; (* u option *)
space: integer; (* s option *)
splits: array [1..maxsplit] of splitpoint; (* split points within word *)
terminaltype: direct; (* output terminal type *)
texts: string; (* for building form specifications *)
textindex: integer; (* current text position *)
textlength: integer; (* length of text *)
title: array [boolean] of pstring; (* title and subtitle buffers *)
titlelength: array [boolean] of integer; (* title and subtitle lengths *)
underavail: boolean; (* u output *)
underchar: ascii; (* u input *)
underlining: boolean; (* underlining flag *)
underdir: boolean; (* underlining flag in directives *)
wallclock: ch10; (* clock time as hh:mm am *)
word: string; (* current word *)
wordlength: integer; (* length of word *)
day, month, year, hrs, mins, secs: integer; (*Dec time interface vars*)
cmdline: cmdbuffer; (*actual command line read*)
cmdlength: cmdindex; (*length of line being read in*)
fieldsfound: 0..cmdlinelength; (*number of fields found by csi*)
outspeced: boolean; (* true if an output file specified with "=" *)
firstfound: boolean; (*true if the first field was found*)
currentfile: 0..maxint; (*current input file*)
procedure timestamp(var day, month, year: integer; (*date*)
var hour, minute, second: integer (*time*) );
(*fix*)
(* external;*)
begin day:=1; month:=1;year:=82;
hour:=12;minute:=30;second:=00;
end;
procedure error(n: integer);
forward;
procedure validate(var num: integer;
min, max, err: integer);
forward;
procedure reinitialize(which: dirset);
forward;
(**----------------------*
| Dec System Interface |
*----------------------**)
(*Command String Interpreter, parses the command string
*)
procedure getline(var line: cmdbuffer; (*resulting command line*)
var length: cmdindex (*resulting command length*) );
(* RT 11 procedure to get a command line no matter what its source.
*)
(*FIX*) begin writeln('Oh no! Getline called!'); end;
procedure exitst(status: integer (*status for error on exit*) );
(* Entrance to the library to exit with a status set to "status".
*)
(*FIX*) BEGIN WRITELN('EXITST CALLED.') END;
procedure csierror(which: errorname; (*which error*)
startind: cmdindex; (*start of command to print*)
endind: cmdindex (*end of command to print*) );
(* Print an error message and exit from the program with a fatal
error status. The offending portion of the command line is printed
before the error message.
*)
var
i: integer; (*induction var*)
begin
for i := startind to endind do write(cmdline[i]);
if startind <= endind then writeln;
case which of
unknown: writeln('Unknown qualifier.');
twofilenames: writeln('Two file names in one field.');
badfile: writeln('Bad file name syntax.');
nofile: writeln('No file in field.');
nooutputfile: writeln('Output requested but no file provided.');
noinput: writeln('No input file provided.');
manyouts: writeln('More than one output file specification.');
end;
exitst(4); (*magic number for fatal error*)
end; (*error*)
procedure skipbalancedstring(startindex: cmdindex;
var next: cmdindex);
var
endchar: char; (*bracket which terminates string*)
begin (*Skip a string balanced with respect to parentheses and quoted
strings*)
if cmdline[next] in ['(', '[', '<'] then
begin
if cmdline[next] = '(' then endchar := ')'
else if cmdline[next] = '<' then endchar := '>'
else endchar := ']';
next := next + 1;
while (cmdline[next] <> endchar) and (next <> cmdlength) do
skipbalancedstring(startindex, next);
end
else if cmdline[next] = '"' then
repeat
next := next + 1
until (cmdline[next] = '"') or (next = cmdlength);
if next < cmdlength then next := next + 1
else csierror(badfile, startindex, cmdlength);
end; (*skipbalancedstring*)
procedure csi;
(* Gets a command line and parses it.
The procedure "getfilename",
below, is used to get file names after csi has been called.
The input line is assumed to be of the form:
[ [ output ] "=" ] input [* "," input *]
Qualifiers can be attached to any file, and all qualifiers are
assumed to have the same effect no matter which file it is
attached to.
*)
var
next: cmdindex; (*next char in command string*)
filefound: boolean; (*true if file found in this field*)
filestart: cmdindex; (*start of last file name found*)
manyfound: boolean; (*more than 1 field found*)
emptyfile: boolean; (*empty file name found, possibly an error*)
emptystart: cmdindex; (*start of empty file field*)
emptyend: cmdindex; (*end of empty file field*)
lastfield: cmdindex; (*end of last field scanned*)
procedure getcmdline;
(* Read the command line into core.
*)
var
i: integer; (*induction var*)
begin
if rsx then
begin
if input↑ <> ' ' then
begin
repeat
get(input)
until (input↑ = ' ');
while not eoln and (input↑ = ' ') do get(input);
end;
if input↑ = ' ' then write(rsxprompt);
if eoln then readln;
end
else if rsts then write('*');
if rt11 then
begin
getline(cmdline, cmdlength);
cmdlength := cmdlength + 1;
end
else
begin
cmdlength := 1;
while not eoln do
begin
if cmdlength < cmdlinelength - 2 then
begin
cmdline[cmdlength] := input↑;
cmdlength := cmdlength + 1;
end;
get(input);
end;
end;
for i := cmdlength to cmdlinelength do cmdline[i] := ' ';
end; (*getcmdline*)
procedure takequal(var next: cmdindex);
(* Parse and look up a qualifier, updating "next" to point to the next
character in the command line.
*)
var
startingindex: cmdindex; (*start of qualifier, for error printout*)
begin
repeat
next := next + 1;
until (cmdline[next] <> ' ') or (next = cmdlength);
startingindex := next;
while (cmdline[next]='a') or (cmdline[next]='b') or
(cmdline[next] in ['A','B']) or
(cmdline[next] in ['0'..'9']) do
next := next + 1;
csierror(unknown, startingindex, next - 1);
end; (*takequal*)
procedure takefilename(var next: cmdindex);
(* Parse a filename. The only data which is taken here is the existance of the
file. This routine makes sure that there is only one file specified
per field.
*)
var
startindex: cmdindex; (*start of this field*)
begin
startindex := next;
while (next < cmdlength) and
not (cmdline[next] in [',', '/', '=', ' ']) do
skipbalancedstring(startindex, next);
if filefound then csierror(twofilenames, filestart, next)
else
begin
filefound := true;
filestart := startindex;
end;
end; (*takefilename*)
procedure endfield(var next: cmdindex (*next character*) );
(* Terminate a field, making several checks.
*)
begin
fieldsfound := fieldsfound + 1;
if (fieldsfound = 1) and filefound then firstfound := true
else if filefound then manyfound := true;
if not filefound then
if outspeced then csierror(nofile, lastfield, next)
else if not emptyfile then
begin
emptyfile := true;
emptystart := lastfield;
emptyend := next;
end;
if cmdline[next] = '=' then
if fieldsfound > 1 then csierror(manyouts, 1, next)
else
begin
fieldsfound := 1;
outspeced := true;
end;
lastfield := next;
if next < cmdlength then next := next + 1;
filefound := false;
end;
procedure checkconsistancy;
(* Check the command line and qualifiers for consistancy.
This should also set any defaults.
*)
begin
if not ((outspeced and manyfound) or firstfound) then
csierror(noinput, 2, 1);
if not outspeced and emptyfile then
csierror(nofile, emptystart, emptyend);
end;
begin (*csi*)
getcmdline;
next := 1;
fieldsfound := 0;
lastfield := 1;
filefound := false;
outspeced := false;
emptyfile := false;
firstfound := false;
manyfound := false;
repeat
while (next < cmdlength) and (cmdline[next] = ' ') do
next := next + 1;
if cmdline[next] in ['=',',','/',' '] then
case cmdline[next] of
'=', ',': endfield(next);
'/': takequal(next);
' ': ;
end
ELSE takefilename(next);
until next = cmdlength;
endfield(next);
if not outspeced then fieldsfound := fieldsfound + 1; (*fake field*)
checkconsistancy;
end; (*csi*)
procedure getfilename(which: Integer; (*file desired*)
var Result: filename; (*resulting file name*)
var exists: Boolean (*true if file exists*) );
(* Procedure to get file names from the input command line.
The desired file name is specified by an index with the following
possible values.
1 Output file
2..n Input files
*)
var
Next: cmdindex; (*search variable*)
fieldstart: 0..cmdlinelength; (*start of the desired field*)
i: Integer; (*induction var for transfer*)
delims: set of Char; (*ending fields*)
stripdevice: boolean; (*strip off device field*)
scanning: boolean; (*used in stripping device field*)
begin
if (which <= 0) or (which > fieldsfound) or outspeced and (((which = 0) or
(which = 1)) and not firstfound) then
exists := false
else
begin (*we have a file to find*)
delims := [',', ' ', '/', '='];
stripdevice := false;
if (which = 1) and not outspeced then
begin
delims := delims + ['.'];
which := fieldsfound;
stripdevice := true;
end;
Next := 1;
if which > 1 then
begin
if outspeced then
begin
repeat
skipbalancedstring(Next, Next);
until cmdline[Next] = '=';
Next := Next + 1;
end;
which := which - 1;
end;
for i := 1 to which - 1 do
begin
while not (cmdline[Next] in [',', '=']) do
skipbalancedstring(Next, Next);
Next := Next + 1;
end;
while cmdline[Next] = ' ' do Next := Next + 1;
fieldstart := Next;
repeat
skipbalancedstring(Next, Next);
until cmdline[Next] in delims;
if stripdevice then
begin
fieldstart := next - 1;
scanning := true;
repeat
scanning := (cmdline[fieldstart] in ['A'..'Z']) or
((ord(cmdline[fieldstart]) >= ord('a')) and
(ord(cmdline[fieldstart]) <= ord('z'))) or
(cmdline[fieldstart] in ['0'..'9']) or
(cmdline[fieldstart]='$') or
(cmdline[fieldstart]='.');
if scanning then fieldstart := fieldstart - 1;
until (fieldstart = 0) or not scanning;
fieldstart := fieldstart + 1;
end;
for i := fieldstart to Next - 1 do
Result[i - fieldstart + 1] := cmdline[i];
for i := Next - fieldstart + 1 to filenamelength do Result[i] := ' ';
exists := true;
end;
end; (*getfilename*)
procedure getnextfile(var done: boolean);
var
thisfile: filename;
exists: boolean;
begin
currentfile := currentfile + 1;
getfilename(currentfile, thisfile, exists);
if exists then
if rsx then reset(infile, thisfile, 'sy:.prs')
else reset(infile, thisfile, '.prs');
done := not exists;
end; (*get_next_file*)
(* ----------------*
*$p----------------* FIX
| General Utility |
*-----------------**)
(* asciichar - convert literal host character to ascii.
*)
function asciichar(ch: char): ascii;
begin (* asciichar *)
asciichar := ord(ch);
end (* asciichar *) ;
(* upper - convert alphabetic characters to upper case.
*)
function upper(ch: asciix): asciix;
begin (* upper *)
if class[ch mod 128].letter then
if ch >= smalla then upper := ch - 32
else upper := ch
else upper := ch
end (* upper *) ;
(* lower - convert to lower case if alphabetic.
*)
function lower(ch: asciix): asciix;
begin (* lower *)
if class[ch mod 128].letter then
if ch <= z then lower := ch + 32
else lower := ch
else lower := ch
end (* lower *) ;
(* numform - determine the numeric form.
*
* param ch = n, smalln, l, smalll, r, smallr.
* err = error if bad numeric form.
*)
function numform(ch: ascii;
err: integer): numberform;
begin (* numform *)
if class[ch].numform then
case ch of
n, smalln: numform := numeric;
l: numform := upperalpha;
smalll: numform := loweralpha;
r: numform := upperroman;
smallr: numform := lowerroman;
blank: numform := nonumbering
end
else
begin
error1 := ch;
error(err);
numform := numeric
end
end (* numform *) ;
(* convertnumber - convert number from binary to text.
*
* param str - output string.
* len - length of output string.
* num - number to convert.
* fw - field width of number.
* form- form of conversion.
*)
procedure convertnumber(var str: string;
var len: integer;
num, fw: integer;
form: numberform);
var
digit: array [1..maxnumberwidth] of ascii; (* digit array *)
nextnum: integer; (* for decomposition *)
x1, x2: integer; (* loop indeces *)
(* send1 - send one digit.
*
* param dig - digit to send.
*)
procedure send1(dig: ascii);
begin (* send1 *)
if x1 < maxnumberwidth then
begin
x1 := x1 + 1;
digit[x1] := dig
end
end (* send1 *) ;
begin (* convertnumber *)
x1 := 0;
case form of
numeric:
repeat
nextnum := num div 10;
send1(num - 10 * nextnum + zero);
num := nextnum
until num = 0;
loweralpha, upperalpha:
repeat
num := num - 1;
nextnum := num div 26;
send1(num - 26 * nextnum + a);
num := nextnum
until num = 0;
lowerroman, upperroman:
begin
while num >= 1000 do
begin
send1(m);
num := num - 1000
end;
if num >= 900 then
begin
send1(d);
send1(m);
num := num - 900
end
else if num >= 500 then
begin
send1(d);
num := num - 500
end
else if num >= 400 then
begin
send1(c);
send1(d);
num := num - 400
end;
while num >= 100 do
begin
send1(c);
num := num - 100
end;
if num >= 90 then
begin
send1(x);
send1(c);
num := num - 90
end
else if num >= 50 then
begin
send1(1);
num := num - 50
end
else if num >= 40 then
begin
send1(x);
send1(1);
num := num - 40
end;
while num >= 10 do
begin
send1(x);
num := num - 10
end;
if num >= 9 then
begin
send1(i);
send1(x);
num := num - 9
end
else if num >= 5 then
begin
send1(v);
num := num - 5
end
else if num >= 4 then
begin
send1(1);
send1(v);
num := num - 4
end;
while num >= 1 do
begin
send1(i);
num := num - 1
end
end;
nonumbering:
end;
if len + fw > maxstringlength then fw := maxstringlength - len;
for x2 := x1 + 1 to fw do
begin
len := len + 1;
with str[len] do
begin
c := blank;
nbl := charwidth
end
end;
if len + x1 > maxstringlength then x1 := maxstringlength - len;
if form in [numeric, loweralpha, upperalpha] then
for x2 := x1 downto 1 do
begin
len := len + 1;
with str[len] do
begin
if form = loweralpha then c := digit[x2] + 32
else c := digit[x2];
nbl := charwidth
end
end
else
for x2 := 1 to x1 do
begin
len := len + 1;
with str[len] do
begin
if form = lowerroman then c := digit[x2] + 32
else c := digit[x2];
nbl := charwidth
end
end
end (* convertnumber *) ;
(* shiftstring - convert string to upper/lower case,
* considering stuttering and case shift.
*)
procedure shiftstring(var str: string;
var len: integer;
var lcs: boolean);
var
intch: ascii; (* internal character *)
oldch: ascii; (* previous internal character *)
oldoldch: ascii; (* previous previous character *)
x1, x2: integer; (* loop indices *)
begin (* shiftstring *)
oldch := blank;
oldoldch := blank;
x1 := 0;
x2 := 1;
if len >= 1 then
if str[1].c = parachar then
begin
x1 := 1;
x2 := 2
end;
for x2 := x2 to len do
begin
intch := lower(str[x2].c);
if intch = casech then lcs := not lcs
else if intch = oldch then
if (oldoldch = blank) and class[intch].letter then
begin
str[x1].c := upper(intch);
lcs := true
end
else
begin
x1 := x1 + 1;
if lcs then str[x1].c := intch
else str[x1].c := upper(intch)
end
else
begin
x1 := x1 + 1;
if lcs then str[x1].c := intch
else str[x1].c := upper(intch)
end;
oldoldch := oldch;
oldch := intch
end;
len := x1
end (* shiftstring *) ;
(* understring - set underlined characters in string,
* considering underline character.
* this is also done in readpstring.
*)
procedure understring(var str: string;
var len: integer;
var uln: boolean);
var
intch: ascii; (* internal character *)
x1, x2: integer; (* loop indices *)
begin (* understring *)
x1 := 0;
for x2 := 1 to len do
begin
intch := str[x2].c;
if intch = underchar then uln := not uln
else
begin
x1 := x1 + 1;
if (intch <> blank) and uln then str[x1].c := intch + 128
else str[x1].c := intch
end
end;
if x1 > 0 then while (str[x1].c = blank) and (x1 > 1) do x1 := x1 - 1;
if x1 = 1 then
if str[x1].c = blank then x1 := 0;
len := x1
end (* understring *) ;
(* justify - left justify, right justify, and/or center
* an output line.
*)
procedure justify;
const
floor = 0.0; (* makes trunc do floor *)
cieling = 0.9999; (* makes trunc do cieling *)
var
fc: real; (* to select floor or cieling *)
ib: integer; (* insert blanks *)
nb: integer; (* number blanks (total) *)
ng: integer; (* number gaps (actual) *)
begin (* justify *)
ng := ngaps - 1;
nb := (rightmargin - nchars) * charwidth;
if leftjustify then
begin
if rightjustify then
begin
if moreonleft then fc := floor
else fc := cieling;
for ng := ng downto 1 do
begin
ib := trunc(fc + nb / ng);
with outline[gaps[ng]] do nbl := nbl + ib;
nb := nb - ib
end
end
end
else
with outline[gaps[0]] do
if rightjustify then nbl := nbl + nb
else nbl := nbl + trunc(nb / 2);
moreonleft := not moreonleft
end (* justify *) ;
(* -------*
*$p------- FIX
| Output |
*--------**)
(* write1 - write one character, do conversion from ascii
* to the host character set.
*
* param ch - character to write.
*)
procedure write1(ch: asciix);
begin (* write1 *)
write(outfile, chr(ch mod 128));
end (* write1 *) ;
(* endline - terminate and count An output line.
*)
procedure endline;
begin (* endline *)
if selection[pagenumber] then
if blankline then blankcount := blankcount + 1
else writeln(outfile);
if linecount <> infinity then linecount := linecount - 1
end (* endline *) ;
(* writeblanklines - write accumulated blank lines.
*)
procedure writeblanklines;
begin (* writeblanklines *)
blankline := false;
while blankcount > 0 do
begin
blankcount := blankcount - 1;
if linecount <> infinity then linecount := linecount + 1;
endline
end
end (* writeblanklines *) ;
(* writestring - write a string to the output file.
*
* param str = string to write.
* len = length of str.
*)
procedure writestring(var str: string;
len: integer);
var
x1, x2, x3: integer; (* general index variables *)
lastunderline: integer; (*index of last underline found*)
underlining: boolean; (*underline attribute set*)
procedure startunderlining;
begin (*start underlining on a video terminal or Xerox printer*)
if terminaltype = vtr then
begin
write1(esc);
write1(lbracket);
write1(four);
write1(smallm);
end
else if terminaltype in [xer, xep] then
begin
write1(esc);
write1(e);
end;
underlining := true;
end; (*startunderlining*)
procedure stopunderlining;
begin (*stop underlining on a video terminal or Xerox printer*)
if terminaltype = vtr then
begin (*turn off underlining*)
write1(esc);
write1(lbracket);
write1(smallm);
end
else if terminaltype in [xer, xep] then
begin
write1(esc);
write1(r);
end;
underlining := false;
end; (*stopUnderlining*)
begin (* writestring *)
underlining := false;
if selection[pagenumber] then
begin
while (str[len].c = blank) and (len > 1) do len := len - 1;
if str[len].c = blank then len := 0;
blankline := len = 0;
if not blankline then
begin
writeblanklines;
lastunderline := 0;
str[1].nbl := str[1].nbl + shift;
if explicitblank <> nul then
for x1 := 1 to len do
with str[x1] do
if c mod 128 = explicitblank then
begin
c := blank + (c div 128) * 128;
nbl := charwidth
end;
if shiftup then
for x1 := l to len do str[x1].c := upper(str[x1].c);
for x1 := 1 to len do
with str[x1] do
if c = blank then
begin
if underlining then stopunderlining;
for x2 := 1 to nbl do write1(blank);
end
else
begin
if c div 128 <> 0 then
if terminaltype = ast then
begin
if underavail then
begin
write1(underscore);
write1(bs);
end
end
else if terminaltype in [vtr, xer, xep] then
begin
if underavail and not underlining then startunderlining;
end
else lastunderline := x1
else if underlining then stopunderlining;
write1(c);
end;
if underlining then stopunderlining;
if (perminaltype = lpt) and (lastunderline <> 0) and underavail then
begin
write1(cr);
for x1 := 1 to lastunderline do
with str[x1] do
if c = blank then
for x2 := 1 to nbl Do write1(blank)
else if c div 128 <> 0 then write1(underscore)
else write1(blank);
end;
str[1].nbl := qtr[1].fbl - shift;
end
end
else blankline :9 false
End (* writestring *) ;
( ∀@@@@@↓C@∪[∞s∂↔≠|ε&jαT⊗'6≥l6*εmxMT≥≠h
l>≥λ
D≤|⊂∩Xts4aXz4wwεA⊂∃
FEεEβE⊂⊂8≤7qr`$ure advancefgbm;
var~∀@@@@↓GPtA¬cGSRl@P@)∧¬6/J8
≡X8p~→y⊂∃∀CE⊂⊂⊂λ⊂⊂3'\4¬chhACgGαK'amαA)β∂-∪C↔;"β⊂⊗@|[ ⊂_t0p∩acterTR4R↓↓↓↓αβ∪@;$λ
-n→9y.≥P∀* fae@1HAoSα#S!β|∧bε∨↑.&.wDλ
.L8εP∃
F@
@QXtASαsS↔∨,ε#@4λ∧∃⊂≠4πcal title le@9KiP@(R~)α↓↓↓↓∧εvFN=∞DY{p⊗→ps∃@ (* which @QSiYJQP↔πL¬bg∨\!∩αR⊃Q"αα∧∧απC↔$εNwLXv/∪αh
¬$→y3L↑X;λ
≥Y→0≤λ∃∀FEβE∀∃⊂λ⊂⊂⊂⊂λ⊂⊂72↑ *)
procedure nexpch;
¬
begin (* nextch *)
fkrmindex := (formiNdex mod formlength) + 1;
formch := form[formi@9IKq:4∀@@@@AK]⊂@PTA9KqiG @TR@l~∀
∀ T@@@A]k[ Kd@Z↓`↔π"β¬β;.k↔I∧3K?5π##∃β4{K58hQ↓(4R↓)↓↓αβCπK∞iβ∪↔2↓uβ∪.3πW3"β;W7⊗+I84R↓↓)$hP4(4R↓↓↓β7+;∂SN{9β;.k↔IF#↔→i∧K;S↔>+I%I∧K;S↔>+Al4Ph)↓↓α↓↓β[∂⊂4)↓α↓↓↓↓αβ;W5Rβ';S.;↔ImαA)β;.k↔I∧∪↔∨'rβW'g!↓)$hP4(4R↓↓↓↓αβ↔∨Nq↓!)εsW7/⊃↓)$hQ↓↓↓α↓↓↓βN1β∂3∂≠No≠␈∪7∂"js∪'∨O!βS#.p4)↓α↓↓↓↓α↓↓β.;'84R↓↓↓↓α↓↓↓↓εsW5↓Si↓AlhQ↓↓↓α↓↓↓↓αβK↔C.P4)α↓↓↓↓α↓↓↓↓αβ;W5βQuβ;.i↓)↓↓↓-β6{K7∂B↓5βk/∪=l4R↓↓↓↓α↓↓↓↓α↓β'→εsW5↓siβ';6K;'SJβS#↔rβ;W5βQuβ'v3';''I↓5↓X4)↓α↓↓↓↓α↓↓↓↓εs↔cS≡@4)↓α↓↓↓↓α↓↓βWw#'1βv{Qβ∂fONo6{K7∂Ei;∪'>KQl4R↓↓↓↓α↓↓↓↓εsW7/⊃↓iuεsW44R↓↓↓↓α↓↓↓↓ε+;⊂4R↓↓↓↓α↓↓β↔g≠∃β;.k↔IβQuβ∪.04)↓α↓↓↓β.s⊃↓!Rβ;W7⊗+I↓)J↓l4(hQ!)↓α↓↓↓↓ε3'↔3';'∪SB↓5βK.⊃β?π#'?;∞aβ≠'.c⊃β←N#S!β∨β↔∂'6K∂πSN{984R↓(4)αQ↓↓↓α↓βCπ⊗5β∪.1↓uβ&+≠πWg!β≠'.c⊃β←N#S!8hQ↓)↓α↓↓↓↓α↓↓↓↓εk'9↓jβ7';NkW5β6K↔3⊃π;'∪SBp4)↓αQ$4(hP4)↓α↓βCK}≠↔∪W⊗)β≠'.c∪←''#!#∪.11β7Nqiβ'w#↔∨↔∩Il4(hP4)↓α↓↓↓β⊗+∨'9αA)β≠N+3∪←N#S!↓RH4)↓α↓↓↓↓αβ≠]↓Siβ∪↔3X4)↓α↓↓↓↓αβ'→β6{K7∂B↓uβ∂}c?9β&C↔84R↓↓↓↓α↓↓↓↓ε∪↔∨'ph)↓↓α↓↓↓↓α↓β;↔G#∂!lhQ↓↓↓α↓↓↓↓αβ≠]↓Siβ;Wn∪↔I#&+→$4R↓↓↓↓α↓↓↓↓ε+;⊃lhQ↓↓↓α↓↓↓βN1β≠]βaβ7'rβS#↔rβ≠]↓Siβ7'ph)↓↓α↓↓β↔v!↓!)ε3'↔3';'∪SB↓)%↓Xh(4)BQ↓↓↓α↓↓↓β≡+;⊃EαiβO↔v!β?;*β∂#π⊗∂S↔∩βS-β&C∃βS/CQβ3Ns∃84R↓(4)αQ↓↓↓α↓↓βC∂∪π5β≤A↓uβ≡CπKπ∨#↔Iβ&yβ∃π≠↔;Qph)↓↓RH4(4Ph)↓↓αβCK?≡+∪WK*βO↔;# #∂!RβπO∂LKa%lhP4(4R↓↓↓↓αβ↔∨Nq↓!)¬≠↔;⊃
↓)$4R↓↓↓↓α↓↓βS/CS';&+a↓ijβS↔c&K;∪↔B↓-↓EXh)↓↓α↓↓↓↓εK⊂∩πL←π&NlLWBα4∞6FNn@βrε\∨ε␈>≤NFBπMVph$∧ααα∧∧ααα,V>NaQ"αα∧∧ααα∧∧π&/∞M⊗v&←∧βSjε∪0hR∧∧ααα∧∧ααε↑.&␈∩∧¬Rβ
⊃Q"αα∧∧ααα∧∧ε.vG1PRα∧∧ααα∧∞F/GN;7&/∞M⊗v&←Rv~π'Rε≡π1PRα∧∧ααα∧∞F/GN;7&/∞M⊗v&←Rfv-DβSJ9ε∂↔⎇≤G&C1Q"αα∧∧ααα
≤bπ&←∞FNvL←αβR∞LWGεL]f?&∧∞FF.d∞F/GMLVv?M∧βSj∞LWGε≥lF/@Q$ααα∧∧ε.vD¬αRπ<]f#
¬%∩βXQ!PRB$∧ααα∧∧π≡∞lF∪ααT∞6.vD∞WαπMtβα=ε∂⊗≤>F/↔4∞FzπMRπ&←∞Bεf≥lR`h$¬"αα∧∧ααα∧∧ααα∧∧ε&/L↑&nNm≥f:εm_Vf"∞⎇⊗'&¬aPRα!Q"αR∧∧ααα∞↔⊗∞β(_m∧∂(&∧_z_.,8⎇→..kC"D¬Hλλ∧∧λλλ∧∧λλ→\H∂ L9X=-Nλ→Z,]→λ∃m≤≥~AQH
H∧∧λλλ∧∧λλλ∧
:;HπT≠:;M≥=; ⊂→αield width.
*)
procedure send10(ch: ch10;
def, min: integer);
var
x1: integer9 * index into ch *)
begin (* send10 *)
fieldwidth(def, min);
if fw < def then (* send rightmost fw characters *)
fkr x1 := def - fw + 1 to def do send1(ch[x1])
else (* Send leading blanks and all def characterq *)
begin
for x1 := 1to fw - def do send1(blank);
for x1 := 1 to def do send1(ch[x1])
end
end (* send⊃0 *) ;
(* writetext - write text buffer.
*)
procedure writetext;
begin (* writetext *)
writestping(texts, textlength);
endline;
textlength := 1;
texpindex := 1
end (* writetext *) ;
(* wait - wait for operator acknowledgement.
* heavily system depe@9IC]h8~∀@@(R~∀~(~∀@@Aae←
KIke∀AoCSPv~∀~(~∀@@@@AE∃OSL@ TAoC%h@TR4∀@@@@@@A%H βS/∪7'≠∞cSgC*↓uβπ≥!βS#.p4)↓α↓↓↓↓α↓↓β.;'84R↓↓↓↓α↓↓↓↓π;C'S*C?WS6K3∃1ε≠#I#⊗+1%%Xh)↓↓α↓↓↓↓α↓βK↔∞#39#NsCWQHh)↓↓α↓↓↓↓α↓β↔; h)↓↓α↓↓β↔v!↓!)π;π'QαQ%↓lhP4(4R↓↓↓β⊗+∨'→αA)βπ'3π;∂.3?K5αQ$4)α↓↓↓↓ε≠!↓ijβWCC/⊃#≠?⊗jo≠?⊗k';∪/Bu%lhQ↓↓↓α↓β'→εs?Qβ≡cπON↑≠"u;∂+?S∃π##↔9εs↔cS≡Al4)α↓↓↓↓εK→β∂dONo≡Bu;≠␈∪7∂#∂⊃βS#.p4)↓α↓↓↓↓αβ∂πO*β∂!β}04)↓α↓↓↓↓α↓↓β
RβO↔;# A#K∂;∂3?≡Y1↓ab↓A%lhQ↓↓↓α↓↓↓↓αβ⊃iβ≡+;⊃EαCKπ←&S∃1βA1↓AKX4)↓α↓↓↓↓α↓↓β∃RβO↔;# A#;N≠↔∪π&)1↓eb↓A%lhQ↓↓↓α↓↓↓↓αβ1h4R↓↓↓↓α↓↓↓↓α↓β↔>K84)α↓↓↓↓α↓↓↓↓αβ'→β&+cS3.s∨S!βq↓Eβ&C↔9β?∪'S↔&+cAlhQ↓↓↓α↓↓↓↓α↓↓β3Ns↔∂?.sQ↓ijβ;W7⊗+I!EHh)↓↓α↓↓↓↓α↓↓↓β,s⊃l4R↓↓↓↓α↓↓↓↓π↓h4)α↓↓↓↓α↓↓↓↓αβ↔∨Np4)↓α↓↓↓↓α↓↓↓↓εK⊂∩αiw⊗N=∧βjε=yF}r∀
wααhn-8zλπT_[_-mj(∃
;H_m∧∞O(
a"Hλ∧∧λλλ∧∧λλλ]≤y#!$λλλ∧∧λλλ∧∧λλλ,9z;AQHλλ∧∧λλλ∧∧λλλ∧zλ∞GT→[tM\z∞c!$λλλ∧∧λλλ∧∧λλλ
l>≥_m↓ Hλ∧∧λλλ∧∧λλλ∧∧→;Yπ1"Hλ∧∧λλλ∧∧λλλm9;→∞⎇9≥~¬εhε⊂_
]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ1ww;→y:7:[q2y∀≥2|:9K⊂:2|≥4s22↑⊗⊂80Ypw:vX2y⊗⊂→9V⊂7≥vs7y≠T1tελ⊗P~∧J]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ4s⊂*→|:4g→2|⊂∨λ82|:≠2s3z~⊂:42[⊂:2l≥42w3]4⊂≥≡H82|:~w22|βE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂"[2≥FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂≤T∧ t:
begin
which := ⊃GαA↓eβ Iβ?IαC∂!↓h∧π∞n≥IG"Kαc"D∧λλλ∧∧λλλ∧∧≥≠λπ'αP:4]4∧el@∃]OiQmoQSG!:v~∀@@@@@@@@AMSK1IoSIQPQiX0@`Rv4∀@@@@@@@@@AS_AMn@pAiXAQQKL@ TAgK9HAYCMhAMnαβ∂#πα,⊗∨&↑.2αR⊃Q"αα∧∧ααα∧∧ααα∧λf␈∩∂$πO(∃
D(⊂∪≥P⊂ 1 to Tl do q`MHβ #C'&c⊗o←FK∂"v←AFu$hQ↓↓↓α↓↓↓↓α↓↓β↔dε6*αα
H∞≤αs2 leading blancs and Alh tl characte@I`
↓%⊃PBα∧∧ααα∧∧ααα∧∧ε⊗.⎇→`hR∧∧ααα∧∧ααα∧∧αε6} λ∂ε(
O$ε(≥≠d]h$∞≠λ⊂∩≠P9r`.d1(blan`⊗Rl~∀@@@@@@@@@@AMOdαβaE↓Si↓Eβ&yβS1∧∧Fzπ<XLF*≥~.Mα2e{Z4qt.Vβx1]
e`≥H4⊂ ↓↓α↓↓↓↓α↓↓↓β,¬f#XQ$ααα∧∧ααα∧λ
g⊂9r`.d10(wallc@1←GVXpX@`$r~∧@@@@@@@AQ¬`∂!hhQ↓↓↓α↓↓↓↓α↓↓β,∧vNpβ"H∧∧λλλ∧∧λλλ∧∂(∞GT≠];,,<J_J]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ;t4`,e teXti`≥I∃p@xA`bAI↑↓c@↔l@%Xε0w~TYFEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂:2|≥4p∞dex := x1~∀@@@@@@@@AK]HβX4)↓α↓↓↓↓α↓↓β3↔∪π∂/-!` ($∧ααα∧∧ααα∧∧ε⊗.⎇≥`hR∧∧ααα∧∧ααα∧
⊗ $≥→>∞Mα2w3]4⊂∨P:42[⊂;y4]2z2l≥≥FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ4s⊂9Yv2q`4ion[pacenumber] theN
begin
if eject theN
beei`≤~(@@@@@@@@@@@@AEIC9WG←k9h@tz`v~∀@@@@@@@@@@@@↓SDAi∃eP↔'v3SG∧)↓uβgβQβSF+9βC∞;∃#?/#∪'3*H4)↓α↓↓↓↓α↓↓↓↓α↓↓↓β.cO¬β?∪'S∃λ¬ε62⊃Q"αα∧∧ααα∧∧ααα∧∧αε.lAPRα∧∧ααα∧∧ααα∧∧ε.g<TεN∩∞LW⊗N≥l⊗g'α<⊃$π∂H≠∞∞λ≥~]H≥|M≡→8[≥Z{⊂∀[2y]FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂~s⊂80]yrP:~2w⊂;XtzεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂"[2≥FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂4s⊂→4πrmnlength > 0 theN
begin
foRm := dkrmnext;
fkrmlength := Forenlength;
fo@I[SMI∃p@tz`v~∀@@@@@@@@@@Ae∃aKCh4∀@@@@@@@@@@@@A]KaiGP~(@@@@@@@@@@@AU]iSX↓MP∨Kn≠!↓uεcKπ≡[↔QlhQ↓↓↓α↓↓↓↓α↓↓↓↓εs↔cS≡Al4)α↓↓↓↓α↓↓↓↓α↓↓β≠|ε&nvL]f?&∧π#jβ↓Q"αα∧∧ααα∧∧ααα∧Vv Q$ααα∧∧ααα∧∧αε.lC0hR∧∧ααα∧∧ααπ,.&∞≡<↑CPH$∧ααα∧∧ααα∧∧ε⊗.⎇≥`hR∧∧ααα∧∧ααα∧
⊗ $≥→>∞M→;YnMλ∂@ε∀≥~→-d≥|Z.L=→>∞Gc"H∧∧λλλ∧∧λλλ∧∞_9y-n;8Y.$∞O(∞9y;N]8Y<D¬h.aQHλλ∧∧λλλ∧∧λλ≥L≥~9_.L*≤_,|;];,,<Kλε¬λ~;Lm;Z=∂∀(%D(e⊃"Hλ∧∧λλλ∧∧λλλ]Y∞c!$λλλ∧∧λλλ∧∞{_<mπC"H∧∧λλλ∧∧λλλ∧[|H∂ε(∞O$ε(≥≠d
];8L↑J*$≠h≥n-=→=←≥∞c!$λλλ∧∧λλλ∧≤=;nL+λ≤n≡;⎇→'!"Hλ∧∧λλλ∧∧λλλ∞,<→8.A"Hλ∧∧λλλ∧∧λλλ∧∧≠Y>∞Lz∞c!$λλλ∧∧λλλ∧∧λλλ∞⎇~;→$[|[,=λ∂∂Dzλ→
q"Hλ∧∧λλλ∧∧λλλ∧∧λλ_L\z;C!$λλλ∧∧λλλ∧∧λλλ∧∧≤y;LF*→[n-8z
'1"Hλ∧∧λλλ∧∧λλλ∧∧λλ≠L←≥_z↓QHλλ∧∧λλλ∧∧λλλ∧∧λ→;LGc"H∧∧λλλ∧∧λλλ∧∧λ≠Y/∞_z∞aQHλλ∧∧λλλ∧∧λλλ∧
9H→M}[8z∧π(_z∧∞~→;D∞y;Yε∃_z
!QHλλ∧∧λλλ∧∧λλ≥-n~;λm|[8m∧∂∂H=∞c"D∧λλλ∧∧λλλ-_;Zg!"Hλ∧∧λλλ∧∧λ→;LA"Hλ∧∧λλ→-Ny#"D∧λλλ∧∧λ_Y,⎇;C"D∧λλλ∧∧λ→<N-|L(π'(_zπ1"Hλ∧∧λλλ∧<\[n%λ(ε%#"H∧∧λλλ∧∧→;Y↓QHλλ∧;Y묬H_9∞l;Xy,m|[(¬%(
c!!"J
D∧λλλ∧Y9z-m~;Y$¬(_Y,⎇;H≠n↑≤≥=∧
~;Y%D_9≥L≥Xy(m|[(≡h≠Y,<<|x./+C"D¬J#"AQC"H∧∞≤[xl\≥<Y$Y9z-m~;Y'1"C"D∧λλ≥L≡C"H∧∧λλλm>∞H
≥]→9l↑Nh
¬$≠≠xl≥λ_{n∂(≠qD[|[-≥Y→>∧¬J#"D∧λλλ∧[[∞D
;]→,|<Nh¬¬H≠⊂↔Xpv⊂![necount <= 0 then (* make linecount >0 *)
begin
fix := formindex;
fnl := formnlength;
repeat
if fnl <> formlength then
begin
fix := formindex;
fnl := formnlength
end;
advanceform
until (linecount > 0) or ((fix = formindex) and (fnl = 0));
if lineCount <= 0 then (* bad form *)
begin
error( - 5);
linecount := infinity
end
end;
blankline := true
end (* beginline *) ;
(* writenull - write a null line.
*)
procedure writenull;
begin (* writenull *)
beginline;
writestring(outline, 1);
endline
end (* writenull *) ;
(* skip - skip output lines.
*)
procedure skip(n: integer);
var
x1: integer;
begin (* skip *)
if n > linecount then n := linecount;
for x1 := 1 to n do writenull
end (* skip *) ;
(* writeline - write the output line.
*)
procedure wpiteline;
begin (* writeline *)
beginline;
writestring(outline, outlength);
endline;
if space <> 0 then skip(space);
outlength := 1;
outline[1].nbl := leftmargin * charwidth;
nchars :9 lEftmarein+
nwords := 0;
ngaps := 0;
gaps[0] := 1;
newoutline := true
end(* writelIne *) ;
( ∀@@@@AACOJ@4AG←]⊃SiS←9CYYr↓ae←IUGJAB↓aCOJ↓KUKGP\~∀@(R~∀~(~∀@AAe←GK⊃keJA9KoaC≥JQ\t↓S]iK≥KdRv4∀~∧~(@@@A KOS\PTA]∃n1aC≥J@TR4∀@@@@ASL↓YS]K
←k]hxA\AQQK\~(@@@@@@Ae∃aKCh4∀@@@@@@@AoQS1JAYS9KG←k9h@|@@AI↑A]eSiK9kYXv4∀@@@@@@@AoQS1J@AM=a[7M=aSC]⊃Kq:@p|AYEICGWKPRAC]⊂@QYS9KG←k9h@xz`RAI<~∀@@@@@@@@@A¬ImC]
KMOe4~∀@@@@@@↓k]iS0AMOe57MOe5S]IKa:@zA1EeCG-Kh~∀@@@@↓KYgJ↓SLAY%]KG←U]h@z↓S]MS9SirAβ##↔→εK⊃↓Uβaβ)β&C↔9β≡['A!αU⊂hR∧∧αε.l@묬H≠Y.s≤_9lT
J(π⊃"C"@↓Dλ
∃λ⊗VVFKVVV@--)--
----4ZRZZ4ZZZZαi5%5hi5%5h¬RjJUQRjjUP%UαVV@--)--4ZP∃5h¬Rj@(
J!QHλ
¬$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ
E⊃ ¬⊂⊂
∃⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂4w8≥z⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂
∀@
( ∀@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TR~(@@@T@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)Hh!↓↓@¬"αjUQRjjUQRjjUQRjjUQRjjUQRjjUURjjUQRjjUURjjUURjjUQRjjUQRjjUQRjjUURj@(
J!Q@εE∀
⊂⊂⊂⊂λ⊂72l≥1t0yλ⊗P0r≥0s1`% to The nexpλASαsCGQ∧≠#πK∞≠S↔Ibβπ;⊂hQ↓)↓α↓↓↓↓α↓↓↓↓α↓↓↓β≤¬vw6↑.Bε7-⎇RεF}>Bε≡≡&∞∨LZ"π≡↑@π&@h_<l=:+C!∧λ
J!Q@εEεB⊂⊂8)≠qrr:\2P72↑8∧char;
( ∀@@@@AIKCIY%]J@Z↓aKCH↓C\ASαsCGQ∧c';∃bβ∂?;6+@↔"
≥g&Z≡6≡N∃APRα$∧ααα∧∧ααα∧∧ααα∧6}w=_ ↑Z;Ydx8 bH9t4c≥⊂0w2λ:w22\44w4[3WεEλ⊂∃∀FB∧EεEλ⊂⊂⊂(≤7qr`$ure ReadlIne;
var
extch: cHar0⊗@ TAKqQKe]C0AGQCICGiKH@TR~(@@@@@@ApDXApdhAS]i∃OCdvPTAO∃]KeC0AS]I∃pAmCISCEY∃`
↓ Hh(4(hQ↓↓↓α↓β↔>K9↓!RβK↔π&c';∃αQ$4)α↓↓↓↓α↓β;↔>K;3'v)↓iuπ#KW∃Xh)↓↓α↓↓↓↓πAE↓ij↓Al4R↓↓↓↓α↓↓β←FK3∃βv{Qβ↔|c9#'v3'3∃Jβπ;⊃αCaE↓bβ';←N#S!%∧∧Fxh$∧ααα∧∧ααα,V>NaQ"αα∧∧ααα∧∧π⊗.≤EεNvm≥F*b←π&≡¬↔0hR∧∧ααα∧∧ααε≤dε␈⊗EWGε=↓∩βj
∞Bπ&Y`hR∧∧ααα∧∧ααα∧∞&/ε\≡@hR∧∧ααα∧∧ααα∧∧απC∀π#jπαλ(¬4.c!$λλλ∧∧λλλ∧∧λλλ
≥[~;L[}λλnK1P≥≡H120w~]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ:s:4[⊂<_@≠wr⊂ 4abinterval = 4∀@@@@@@@AKYgα)β'→∧{@⊗"X∞∞Lz
(πg(_[≥Zh∃
;C"D∧λλλ∧∧λλλ∧∧_Y9m≥C"H∧∧λλλ∧∧λλλ∧∂(∞GT≤∧_@
P_]FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂4g≠4s2m↑_jW1H≥≡P7\αd(e@aiGPR4∀@@@@@@@@@AK9Hv~∀@@@@@@@A∃]Hv~(@@@@@@AS9YSMKmpb@Vc:]FtrAE1C]Vv4∀@@@@@@A→←dApH@tz@DAi↑A`b@F@DAI↑A%]YS]∃7pe:9]EH@hzAGQ¬eoSIQPv~∀@@@@@ASL↓S]IS9K6c:9F@zA⊃SeGPαβS#↔ph!↓↓α↓↓↓↓α↓β↔>K84 α↓↓↓↓α↓↓↓β&KC↔∂&c';∃βQuβS↔+∃l4R↓↓↓↓α↓↓↓↓∧c?←↔⊗#'I↓β'Rπ'.\PhR∧∧ααα∧∧ααε]l@hR∧∧ααα∧∧ε.g<Tε&O,X7&F≥lRβSTλFO⊗\:FfNlTε∞vD¬εNvM≥f-[≠PL4∂(≤
NαyT]CE⊂⊂⊂λ⊂⊂⊂⊂~q⊂1`!sach<8A]UXAiQ∃\~∧@@@@@@@AS_AISe∃GiYS9JAiQ∃\AgQ%IagiIS]NQ%]YS]∀XApb0AY←o∃aISd$~∀@@@@@@@AKYβ≠∃βOFK≠@'>N&Nvu
⊗vf≥lRbπε⊃Bεf}|Wε≡≤8RKXQ$ααα∧∧ααε≤dπC
¬`β
πMVph$∧ααα∧∧ααα∞⎇εNfT¬εNvM≥f-←∧∧7%Lh∂ -_;Ze∀_;Y∧¬≡λλP∂⊂_TP→7P<_H≥≡P<P∩P_NFE⊂⊂λ⊂⊂⊂⊂λ4s⊂,P≡P_H:42gλ4s⊂$[64w2V|_nW_P≡P1≠0s5@ then↓pb@tt@`v~(@@@@@@AS9YK]OQP@tz↓pb`,hQ↓↓↓α↓↓↓β⊗+π&MeεNvm≥F*K1Q"αα∧∧αααi↔.⎇→4N
|H∞GT≥≤],Wc"H∧∧λλλ]Yλ
¬$≤Y8,M~;Y$¬J(∞aQ@εEεB⊂⊂⊂⊂_2stgλ∀⊃⊂ .extcHar *)
iNcolumn := incoLumf + 13
if Incolumn >↓S]YK9OiPAQQK\~(@@@@@@AE∃KS@8hQ↓↓↓α↓↓↓βL1β↔?bβS#↔ph)↓↓α↓↓↓↓α↓β↔>K84)α↓↓↓↓α↓↓↓βL1β;∨ β↔;∪|3';C/!βS#.p4)↓α↓↓↓↓α↓↓↓↓εK⊂∩ε]xbFNlh
-L*(∃
;H→l↑≠Y>∞LX;→%;Y≠lm;\≥.E,¬FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂~s⊂77]⊂2w2≠s4w8≥z⊂:4→wαE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ12st[εA⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≤2pr6~w2]FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂4g_wv:v[⊂≥≡P]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ4s⊂&~w2w:[yP:4→wαE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂12YtsεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂4Yα cl@¬cg7S9YSMKlc:]GtYISO%hAiQ∃\~∧@@@@@@@@@@@@A KOS\4∀@@@@@@@@@@@@AYS9K]k[ Kd@Tt@`v~(@@@@@@@@@@@@AeKa∃Ch~∀@@@@@@@@@@@@@AYS9K]k[ Kd@TtAYS]∃]k[E∃d@T@D`@VA%]YS]∃7S]G=YkK]tYF@Z↓uKe↑l~∀@@@@@@@@@@@@@@↓S]G←1k[\@hzAS]
←Yk[8@V@b4∀@@@@@@@@@@@@Ak]QSXA]=hAGYαGNoNs3'≠-[';∂}cW7:h¬f≥jlM⊗.OAQ"αα∧∧ααα∧∧ααα∧∧αε.lC0hR∧∧ααα∧∧ααα∧∧αεNl9vg.β;@π'(~0↔_wv:v[⊂∃P_CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ2w2εB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂2v≤pP6 )nenumber := linenumber + 1;
eol :9 iNcolumn > inlength;
if eol Then inchar := bla`≥V4∀@@@@@@@@@AK1gBAS9GQCDα↓i`*
→ffNl[6Nv=⎇G.nkQf_h$∧ααα∧∧ααα∧∧ε.vAQ"αα∧∧ααα∧∧ε.vAQ"αα∧∧ααα]G∞λQ$ααα∧∧ααα∧&.>≥aPRα∧∧ααα∧∧αε.⎇DβS@(≥≤N\,¬FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂~w1t0\⊂≥≡@_40w5CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂2w2βE⊂⊂⊂λ⊂⊂⊂⊂→w2εEλ⊂⊂⊂⊂λ2v9bH4w1`(ar := inl@%]K7Sαs∂?3.k:u;_h!↓↓αβ↔;⊃αA)β;/CS∂#∂⊃↓)%βX4(∀Ph)! α↓↓↓↓εs↔cSdK;∃↓jβπβ[∞s∂∃β&yβ↔>K;;πv9β?→∧s↔cQ∧K;CW"β3';*p4)↓RH4(Q!PRα∞
&}≡\NW⊗*
lWG&M≥f+XQ!PPH$∧ααε,\vNr¬¬"εv←∞FfNlTαRHQ$ααα∧∧εNv=yG.ndπ#jε≥mF.v}MααZε⊂∞aQHλλ∧∧λ→;mD∞O(∞N]9.aQHλλ∧∧λ≠Y/∞α1t0\ε@
end (* Nextl@%]J@T$@v~∀4∀----------------- *)
(* *)
(* directive processing *)
(* *)
(* *)
(* -----------------------------------------------------------------) *)
¬
(* break - cause a↓EeKC,AS\A)kgiS→SGCi%←\\~(@TR~(~∀
∀Aae←
KAke∀AEeK¬Vv~∀4∀~∀@@AEK≥S\@P(AEeK¬V@DR4∀@@@@ASL↓]←hAαs↔←?/#3';*βS#↔ph)↓↓α↓↓↓↓ε∪↔∨'ph)↓↓α↓↓↓↓εK⊂∩εm}BαFL\g&W↑:FN7∀λ⊗v"∞-⊗>GM.W∨&≤o∩JπMVrε.↑7&No↔0hR∧∧ααα∧∧π?⊗≤LVfNlQPRα∧∧ααα∧λVv#1Q"αα∧∧απ.lLW⊗F≥m⊗v:π'Rε6≥N6+XQ$ααα∧∧εv/}λλ.9|X.
λ∞O$∞≤]1!QHλλ∧;Y⊂
∃⊂19→puP∃
P≥FEβE∀∃⊂λ⊂⊂⊂⊂λ⊂4w:[22w:λ⊗P9aZ2r:v→P0w indent or undent.¬
*
α
* param inun > 0 fgr↓S]IK9hX~∀T@@@@@@@@@@@@@@@p@`AM=` βWv#↔;Qph ∩R⊃Q hPQ$αππ-x6.π↑,RεNn]f&.nEεNw]`∞D
;]→,|αy∀]CE
begiN ( ∀AαK;W≠&+;Q↓RH4)↓α↓↓↓β↔∪↔π-Xh!↓↓α↓↓β;≤CπKMβQuβ3,3S .≡,vNr¬0λ
≥];@≥CE⊂⊂⊂λ⊂⊂4`& jchars < 0 then ncHars := 0 64⊂@@@@A←KQYSMKlc:]] X@tz↓]GQCI`
↓$λλm<XtY:4εEλ⊂⊂⊂ %nd (
inundeft*) 64∀∩)@¬"αα∧ ⊗wπ<≡f*αT
6∂6Tλ
-n≥=∞p¬ttings
*)
~∀Aae←
KAke∀AS]aMCmJV4∀∩∧~(@@@A KOS\PTASαsCOπ4∧RαR⊃Q"αα∧∧απ6≥H
,L=→*
≤9<∩-n λ¬D≠8>
<αrx⊗λ_XZXJ]FE⊂λ⊂⊂⊂⊂≥tz4⊂≤p{2`)np[keepinp] do
begin
defined := true;
b := explicitblank;
c := casecH;
d := dirch;
h := hyphen;
u := underchar;
w := inwidth
end
end (* inpsave *) +
(* inprestore - restore previous input settings.
*)
proceDure inprestore;
begin (* inprestore *)
validate(keepinp, 0, maxkeep, 1151);
with saveinp[keepinp] do
if defIned then
begin
explicitblank := b;
if casEch <> c then
begin
case@
P@tz↓Fv~∀@@@@@@@@AY←o∃aGCgα)↓iu∧≠πO↔≤A↓qyεsW04R↓↓↓↓α↓↓↓↓α↓β↔; π0hR∧∧ααα∧∧ααεM≡&≡Bπ'Rε#1Q"αα∧∧ααα∧∧εGO
Vrβ'TεCXQ$ααα∧∧ααα∧∞Vv&↑,6F∂$π#jπW1PBα∧∧ααα∧∧αεNn⎇⊗'&∧π#jπqQ"αα∧∧ααα∧∧ε.vAQ"αα∧∧αααYG∞
Z'ε←%α∪βU⊃PBα∧∧ε.vD¬αRε≥nπ⊗/>Mw⊗*¬%∩βXQ!PBBαHλ∧∧λ≠8..x=P∩H⊗P9p]2P6p\3tw≤p¬ttings.
*)
proceduRe marqave;
¬
λ begiN (* Marsave ")
validade(keePmar, 0, maxkee@@X@bjDRv~∀@@@@↓oSiP↓`∂π[,¬V∂∃αzy,↑≠8<KT→≠c!$λλλ∧∧λλ_L\z;C!$λλλ∧∧λλ→\Z;Y,D∞O(∞N]9.aQHλλ∧∧λλλ
D∞O(
L9]≠,≡Yz;G1"Hλ∧∧λλλ∧∞H∞O$∞X9z∞M8<Ym≥A"H∧∧λλλ∧∧→;Y↓QHλλ∧9Y⊂
∃⊂6p\9p{ % *) ;
~∀ T@@@A[CeIKgi←IJ@JAIKgi←IJAae∃mS←kβ→β7π⊗;'9β≡+S@&≥lw~pQ$αRHQ!PPH$∧ππ⊗|8V'∂,Tεn∂.,W∨&},SHh!Q hR∧∧αε⊗\⎇⊗rα¬$εn∂.,W∨&},RαR⊃Q"αα∧∧απ6≥I⊗&∂LUε↑.↑
V∂∩Dεαbε\∨ε↑9<∧ε-,"'1"Hλ∧∧λλ∃m≡~λ≤l≡Y;8.+zy9.
8<W$≠c"D∧λλλ∧∧λ~9D→9P∀[2r⊂:~2wεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂_2stwβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂62s≥6py3Zw⊂≥≡H6≥FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂≤4st:≠py3t[⊂≥≡P≤εA⊂⊂λ⊂⊂⊂⊂λ⊂⊂2w→εE⊂⊂λ⊂⊂⊂⊂λ2v9bH2y97\∀_X~JFE⊂⊂λ⊂2w2λ∀∃⊂&Xy92y]4πre *) +
(
optsAve - qave optiOn settings.
α *)
proce@⊃keJA=aigCYJv~∀4∀~∀@@AEK≥S\@P(A←aiMCmJ@(R~∀@@@@AYCYSI¬iJQW∃Ka←aPX@`X↓[CqW∃K`H@HjbRv4∀@@@@AoSQPAgCYK←aimSCKa=ai:A⊃↑~∀@@@@@AEKO%\~∀@@@@@AIKMαK;↔⊃βQuβS↔+∃l4R↓↓↓↓α↓↓β∃βQuβC⊗K;C↔↔∪?KMβ1PRα∧∧ααα∧λbβSTλfNfG1PRα∧∧ααα∧ "βST&∞&.↑7&No↔0hR∧∧ααα∧∧εbβ'Tεf.nM'/∨M_gKXQ$ααα∧∧ααεTπ#jε↑]G&O
H ,-_;Zn↔c"H∧∧λλλ∧∧≤λ∞GT→;\n↑Y,FaQHλλ∧∧λλλ∞$∞O(∞4st:~8¬stify3
s :8
AgACGJv4∀@@@@@@AT@tzAMQSMiU`~∧@@@@@AK]H4∀@@@↓K]H@ TA←aQcCmJTR@@Xh(4 @Q↓↓↓αβ?CS⊗+OS?⊗)↓5β⊗+OS?⊗)βCK/3'?W~β?CSN{9βO/#S'≠?→84 αQ$4(hP4)↓πβK?∂,∧G/⊗T
wπ',↑7&←,W0hPQ!PRα∧∧ε⊗.⎇≥bαB$ wπ',↑7&←,TαRHQ$ααα∧∧π6∞M≤F∂&U
6./
}π"bε¬Bεn∨
6.∂¬Dβ∪+∃↔0hR∧∧ααα∞⎇↔&B∞<↔6.}∞EN↑\X
}≥↔ Mc"H∧∧λλλ∧∧~9HL9Z;L\λ≥~]A"H∧∧λλλ∧∧λλ_L\z;C!$λλλ∧∧λλλ∧∞≤Z;NL<\[n.h∞O$.c"D∧λλλ∧∧λλλm;≠λπ'(→NaQHλλ∧∧λλλ∧∧_X9
.<⎇~,o(∞O$
Nc"D∧λλλ∧∧λλλ
L9]~N↑⎇~9O∀∞O(
Gc"H∧∧λλλ∧∧λλ≠.]≥~<
L8[_-m|h∞GT≠.c!$λλλ∧∧λλλ∧;\⎇.,,H∞GT≤∞c!$λλλ∧∧λλλ∧∞Z9z∞M]<⎇
≤↑(∞GT≤Nc!$λλλ∧∧λλλ∧∞|_8lT∞O(∞↔c"H∧∧λλλ∧∧λλ≤m
9]≥.∧∞O(∞Q"Hλ∧∧λλλ∧∧λ→;LA"Hλ∧∧λλλ∧;≤q$<\[n%L
%⊃"Hλ∧∧→;Y∧¬
H≠n∞≤Y<nM|Y(¬%(∞c!!"JαD∧λλλ∞<\p⊂]2P⊗P≤p{2P≤0y0s\0x4≤rz:4[3yWεB⊂∃∀FBεEεEλ⊂897Xrr:y→P80y≤p{2]CEεEεB⊂⊂⊂⊂_2stwλ∀∃⊂8_y9p{→P∃∀FB⊂⊂⊂⊂λ⊂;0v~r0z2J5rrh≤0y⊗⊂⊗⊂6p↑5rrh⊂→ZXJ]FE⊂λ⊂⊂⊂⊂≥tz4⊂≤p{2h_y)urYx80y↔P27FB⊂⊂⊂⊂λ⊂⊂⊂1→stwεB⊂⊂⊂⊂λ⊂⊂⊂2→s4w2Y⊂≥≡P≥9:r]CE⊂⊂⊂λ⊂⊂⊂⊂_P≥≡P≥P∀∃λ4z⊂+[zv2⊂≤prvP≥40z≥44yP~yP9z\2y36≥wzyP
∀BE⊂λ⊂⊂⊂⊂λ⊂3⊂≥∂P80y_qt0y∞FE⊂⊂λ⊂⊂⊂⊂λ4P≥≡H67quYr22w≥≥FE⊂λ⊂⊂⊂⊂λ⊂7⊂≥∂P7:vX2y4w→]FE⊂λ⊂⊂⊂⊂λ⊂8⊂≥∂P80y_x0srNFE⊂⊂λ⊂⊂⊂⊂λ9P≥≡H80y0\utx≥CE⊂⊂⊂λ⊂⊂⊂⊂≥P≥≡P≠:vq2\;tr:~εA⊂⊂λ⊂⊂⊂⊂λ2w2εB⊂⊂⊂⊂→w2⊂∀
⊂80y≤p{2P
∀P⊂≠
(
parbestore - restore previous paragraphsettings.
*)
procedure parrestore;
beeif (* parrestore *)
validate(keEppar0@`XA5CqWK∃`X@fTbRv~(@@@@AoSi AgCmα+CπJ↑[↔↔CεJeβ&x4)↓α↓↓↓↓αβ'→β&+∪';,∧Bπ&Y`hR∧∧ααα∧∧ααε,\vNpQ$ααα∧∧ααα∧∞ε∂⊗≤=w.wDπ#jε51PRα∧∧ααα∧∧απε≡,⊗≡F≡ βSJg0hR∧∧ααα∧∧ααεMx6N.LLVw"π'RεK1Q"αα∧∧ααα∧∧εw.\,W⊗Nlpλππ(≠FaQHλλ∧∧λλλ∧∧≤_<L≡_9y$πO(≤π1"Hλ∧∧λλλ∧∧λ≤⊂.,<zz.∧∞O(∞]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂7≥vq2y≥tr:4λ≥≡P;CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂2w2βE⊂⊂⊂λ⊂⊂⊂⊂→v9rP→y97y
→X~TCE⊂⊂⊂λ2w2
∃⊂80\92yz≠y2P∃
P≥FEβE∀∃⊂λ⊂⊂⊂⊂λ⊂24y→qz4{→P⊗P8≤5qri\P7w2H24y2Xz4{2CE⊂∃∀CEεEεB⊂⊂89≠qrr:\2P24\2qz4]2]FEβE⊂⊂⊂λ;0yεB⊂⊂⊂⊂λ⊂24y∞⊂24y→qz≥P
∃⊂1j\92w:λ24y2Xz4{2H∃∀FEλ⊂⊂⊂⊂λ3:v ,word: ch10; ⊂T↓Gkee∃]hAI%eKGi%mJAo=eH@T$~∀@@@@Ao=eHtA
Pfv@ T@fA1KiiKI`
β?2β∂WK⊗+;Qβ&KK↔∂&K[∃β>{K⊃↓RH4)↓α↓↓↓β>{K∪3.s∨S!Rβ';S.;↔IMαA)β3.s∨S!ε{⊂∩ε>↑'ε.nDε&O,\7&OlTπ>␈,DαRHQ$ααα∧∧πC
D∂βBε≥nF.>↑'2αB$λ l]Y<X-D~;Y←λ≥P.-88[↑h
J!QA"J¬$λλλ∧
Y>≥=λ(≤≥X;L<(≥≠d
Y>≥=_<@⊗λ1ww9Zr2y4[3P1w[:4w:Xz4ww≤WαE⊂
∀BEεBεA⊂⊂λ⊂897Xrr:`2e nextch;
α
begin (* nextch *)
nextchar3
if eol and (infile↑ ='+') then
begin
nexpchar;
inchar := blafk
efd
end (* Nextch *) ;
~∀ T@@@AgoSQGP@Z↓IKiKI[SMJ↓BAgo%iGPA=aiS←8XAG←αsG'∪-∪';≤hQ↓)↓α↓↓↓↓α↓↓↓↓αβS#∃ε#↔≠π.cQ8∀R↓(4 αQ↓↓↓πβπKπhβ∪↔→βiβ∪↔4∧↔.gEaPRα¬%⊂hPβ"C!∧λλλnαw1j~ww⊂9]tz1t
22s≥λ17w`,eaf): boo@1KC\V4∀∩∀~(@@@@AEKO%\@PT↓goSi
P@TR4⊂@@@@@@A%H β∂d∧↔∂≥=→f≡F≤∧W%@86:y[y2t`.us then~∀@@@@@@@A KOS\4∀@@@@@@@AgoSQGP@ttAS]GαCπI↓h∧πεg↑70hR∧∧ααα∧∧ααεl[π&≡↓Q"αα∧∧ααα∧∧ε.vAQ"αα∧∧αααX∞≤αP9`7itchp eβ&+⊂$$∧ααα∧λVv"¬
D∞⎇z5=λ
J$πc"C!∀⊂
@
QCeC
iKd@4AIKi∃aP↔πv)β¬β≤¬ε∂⊗≤:F/∩
x∞M8πwελ1ww9Zp∧ering
* the deFaudd8~∀@T4⊂@@)α↓↓↓β∧∧↔,8εP $e`@@h∧ε&.l≡Vg"βC"D∧λJ#!∧¬α
Function c@!CeCGβ#↔I#&+⊂∪R≡6≡Nα*.D<xp∀Z]FEεBα ∀@@@@A KOS\PTAGαCπKπ≥#↔I↓RH4)↓α↓↓↓↓αβ' βL¬f≡F≤∧@⊂∂≤ε blanc @QQKL~(@@@@@@@@↓EKOS8~∀@@@@@@@AGQ¬`π∂&+A↓ihβ';∂FAl4R↓↓↓↓α↓↓↓↓∧s↔cS≤@4)↓α↓↓↓↓α↓↓β↔v 4)↓α↓↓↓↓αβ↔3O*β∂#πα,⊗∨&↑ βC@(→→,@∧@
@∃]H@P(AGQCICGiKβ⊃↓)%βX4(Q%αRα∧∧αεW]\&/∩¬PλL=→<M]8π2P_P7:vYy0 c optiOn, c@=]gSI∃aSMN4⊂@D@@@@@@@@@AiQJ↓IKMCUY`AC relative form is not recognized.
* min = minimum allowed value.
* max = maximumallowed value.
* epr = error number (if out of range).
*)
function number(def, last, min, max, err: integer): integer;
var
num: integer; (* number being built *)
sign: ascii; * plus or minus sign *)
begin (* number *)
if class[inchar].plusorminus and (last >= 0) then
begin
sign := inchar;
nextch
end
else
begin
sign := plus;
last := 0
end;
if class[inchar].digit then
begin
num := 0;
repeat
num := num * 10 + inchar - zero;
if num >= infinity then num := infinity - 1;
nextch
until not class[inchar].digit
end
else num := def;
id∧AgS≥\@zAAYkfAQQK\A9kZ@ttAYCgP@VA]UZ~∀@@@@@AKYg∀A]kZtzAY¬gh@Z↓]kZV4∀@@@@@@A%HA]k4@x@`↓iQK\↓]kZ@hz@`v4∀@@@@@@AYCYSI¬iJQ]UZXA[%\XA[¬pXAKIdRv~(@@@@@@A]U[EKdtzA]UZ~∀@@@@A∃]H@P(A]k[ Kd@T$@v~∀4∀PD@@@Ae∃C@∪←␈∪⊃↓5π∪↔π⊃π##∃βv+cQβ&KK↔∂&K[∃β>{K⊃8hQ↓)$hP4(4R↓↓↓β¬∪?∂↔'+K∃β⊗+π'⎇}Q!PRα∧∧ααπl≡ hR∧∧ααα∧∧πC$
⊗w&\|W∪Z¬¬"εf⎇}αεNlLWBα%⊃PPh!Q"αα∧∧αε⊗\⎇⊗rα¬$π⊗.≤Nv␈⊗D¬"Hh$∧ααα∧∧απ>},Ff.l}FBβ'TββXQ$ααα∧∧ααπ⎇
⊗f*9F∂∨;=⊗v≡≡%jvL↑G&/$λFxh$∧ααα∧∧ααα,V>NaQ"αα∧∧ααα∧∧π>␈,MF.v}MαβST∞v␈⊗MLVv?M∧αZβ↔1PRα∧∧ααα∧∧αεNd∞v␈⊗MLVv?M∧βcjε⊗απ&]`hR∧∧ααα∧∧ααα∧&.>≥aPRα∧∧ααα∧∧αααnVfg⎇}&%←⎇}&&f]lw&ETπ#jε≥l6F∂'1PRα∧∧ααα∧∧ααα
≤bπ>},Ff.l}FBβGTβ~πMVrπ⎇}&%←⎇}&&f]lw&ETπ#jπ↑∞ε/∩
≥f≡F≡%⊂hR∧∧ααα∧∧ααα∧Vv#1Q"αα∧∧ααα∧∧εv/∞L6@h$∧ααα∧∧ααα]f#XQ$ααα∧∧ααεm}"πC∀π#jπ⎇}&&f]lw&B¬4β
πMtβαMrε7]IG>␈,K7C
Tπ#jε-L⊗v[1Q"αα∧∧αααmw∩πε∀βSj∞⎇w⊗&L]f?&∧¬2β
∞Mrβ~Mrπ>},E←C≠TβSj-F∞v1Q"αα∧∧αε.lDαBR∞,V∞'⎇}&"α%∀βXh!Q"BR∧∧ααα∞,V∞'∞>G⊗Nltαjπ,\⊗"ε∀∞π∨'-≥f:π]nFNb∀π&/-]⊗v∂M}"ε≡≡&∞∨L↑"ph$¬ hR¬$ααα∧∞ε∂⊗≥Tπ∂'$πRππ>N&Nvt∞Fzε,Tπ⊗.≤E`hR¬$ααα∧∧ααα∧∧εf.dπRεf]lw&B
|bππ,\F.6≥lV"π
}'&N⎇dε}2∞>G∩b∞↑ε&∂L\@hR¬$ααα∧∧ααα∧∧ααα∧∧απ&t
f/:
LVv?M¬`hR¬$ααα∧∧ααα∧∧ε.vL4βjπL↑&nNl≡F␈∩=ε∂⊗≤>F/∩aQ"αα%⊃PPh!Q"αα∧∞π⊗}<\G/⊗T∞&.∞N∞7'⊗≥lrG6≡$π∨''$ππ∨N-⊗v;1Q"αα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧απ6≡$εf.g$εNwL\v/∪1Q"αα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧αε.lL3Rε≡86NJ↔1PPh!Q"αα∧∧αε⊗\⎇⊗rα¬$π⊗.≤Nπ∨'-≥f:α%⊃PRα∧∧ααα∧∞Vv&↑,FO∩π'Rε6≥N6+XQ$ααα∧∧ααπ⎇
⊗f*¬
⊗v≡≡"βcdλVv&5∀ε∞vD
f␈"]vbεMqPRα∧∧ααα∧∧αε⊗\⎇⊗ph$∧ααα∧∧ααα
_bεNl8
≡H∂ ⊂≥w22i_t0q⊂≥42w undeRdir := not ufderdir
elsE if len < maxstpinglength theN
begin
lEn := len + 1;
if undeRdir @QQK\AMie'Yα+:e↓Siβ';≤¬ε∂∩¬4β∪↓Q"αα∧∧ααα∧∧ααε]HlT≤⎇≤K=→;W$πO(~-lz_<AQHλλ∧∧λλλ∧∧λλ→-l∞c"D∧λλλ∧∧λλλ
l>≥_m↓ ¬⊂⊂λ⊂⊂⊂⊂λ⊂⊂2w→εA⊂⊂λ⊂⊂⊂ %nd (
readpstring *) ;
( ∀@@@@@@AY←=Wk`@4AY←←,Ac`Aβ##∃β&KK↔∂&K[∃β>{K⊃8hQ↓(∀R↓)↓↓α↓↓↓↓πβπKπjβ⊂⊗O.8
∧π(→R.9z⊂0Xqrx:_q62P→4y2q]4{2P≥wy2↔βE⊂∃⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ4v6"Yβad = lacT+1 accaptable directive word.
*)
function l@=←Wk`!MSegPXASY1KOCXhAISe∃GhRt↓ISeK
hv~∀4∀@@@@AmCH~∀@@@@@@↓HtAI%eKGhl@PTA1←←Wk@AY←←@AS]I∃p@TR4∀~∀~(@@@@AEKO%\@PT↓Y←←WU`@TR4∀@@@@@@A⊃SeKGQc7SY1KGCYt@tzA]←eHv4∀@@@@@@A⊂@tzA→Seghl~∀@@@@@@↓oQSY∀@QISIKGigmI;6ct@x|A]←eI6E:RA←H@QISIKGigmI;6et@x|A]←eI6I:RA←H~∀@@@@@@@@@@@QISIKGigmI;6gt@x|A]←eI6M:RAI<~∀@@@@@@@AH@hzAgk
FQHRl~∀@@@@@@↓YP∨?←+A↓ijβ⊂4)α↓↓↓↓ε+;⊃↓BQβ3?}[WA↓RI↓l4Ph)!$∧ααα∧∧ααε≥nπ/"¬Pππ⊗|<W∂~
→gπ/DλFO⊗\:FO6UaPRα%⊃PPh!Q"αα∧∞π⊗↑<XG/⊗T
⊗wπ↑LCXh!Q"αα∧∧απ6≡!PRα∧∧ααα∧6CR≡6≡N↔4αBR
<WJε=↔ε∞>LW∩α%⊃PPh!Q"αα∧∧αε⊗\⎇⊗rα¬$εNw∞ZF"α%⊃PRα∧∧ααα∧
⊗ $~;Xm<H∂$
≤_<L]H≥~]A"H∧∧λλλ∧∧λλ_L\z;C!$λλλ∧∧λλλ∧
Y>≥=∞c"D∧λλλ∧∧λλλ
<αrx$[8⊂≥≡H5rr`0inp + 13
while (inchar <> rparen) and not eol do
beei`≤~(@@@@@@@@@AGPα↓aeβ/βC↔IFK;∂#∂⊃%l4R↓↓↓↓α↓↓↓↓α↓β;↔G#∂!lhQ↓↓↓α↓↓↓↓α↓↓β'2β∂3π≤ε5↑≡UfNw∞ZF≡F≤ π&F]aPRα∧∧ααα∧∧ααα∧∧ε≡∂<Tε≡B
|`hR∧∧ααα∧∧ααα∧∧ααα#"ε/∞
FN≡≡L&f∞βZ`⊂∞≤¬ cHaracTer(nul)0⊗~(@@@@@@@@@@@@AFt~(@@@@@@@@@@@@@@AE∃KSL~(@@@@@@@@@@@@@@AG @tzA
QCeC
iKdQ9kXRv4∀@@@@@@@@@@@@@@A%H β∂@∧βcR8↔≡.=∧π&F]aPRα∧∧ααα∧∧ααα∧∧ααα∧∧αε⊗\⎇⊗ph$∧ααα∧∧ααα∧∧ααα∧∧ααα<↔≡.=∧βSj9βXh$∧ααα∧∧ααα∧∧ααα∧∧ααα
Mw>/,<↔≡*π'Rε≡≡8 ,=λ∂∂D
];β!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧9Yβ!$λλλ∧∧λλλ∧∧λλλ∧∧λλ⊃-l∞c"D∧λλλ∧∧λλλ∧∧λλλ∧∞H→
≡Xzπ'(_r≡X8⎇↑J≤→.
;y
'1"Hλ∧∧λλλ∧∧λλλ∧∧λλ~π$~≡<
;H∞GT_z_.8⎇→.%≠];¬↔c"H∧∧λλλ∧∧λλλ∧∧λλλ
7H~y,↑~;\∧πO(≠N]8Y<Eε λ$ε+λ¬D≠8>
<9<∧ε,-,%↔c"H∧∧λλλ∧∧λλλ∧∧λλλ∞WH≥;LL<Xz≡H∞O$z_<L≤⎇→<E
];
'1"Hλ∧∧λλλ∧∧λλλ∧∧λλ≥g⊂4w;Zr:4⊂∞≡P7:[q2y∀ZX⊗⊂P_V⊂≠ts⊗⊂≠p|4{Zr:4⊗λ_XZZ
]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂_60w5NεA⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂"[2εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ2v9bCE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ12st[εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂2y9≠y_P≥∂P1t;
error(1101)
end
end;
if inchar 9 rparen then↓]Kqi
P~∧@@@@@@@AK1gBAKIaWdPDb`dRl~∀@@@@@@@AS]AcCmJ4∀@@@@@@@AKMH4⊂@@@@@@A∃YgJ~(@@@@@@@@↓EKOS8~∀@@@@@@@ASL↓GYCGβ~g'l9ε∂∃β+Y
≤z=∞M→;C!∧λλλ∧∧λλλ∧∧λ~y,↑~;\∧πO(≠N]8Y4Eελε⊂⊗H_V⊂_⊂6p|~p¬ep, 1151)
∀@@@@@@@AK1`∂*
<V/ε≥nαβST 6.∂
→gααTε∪Hh$∧ααα∧∧ααα
_N∞Y<p~≠y2FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂→w2εEλ⊂⊂⊂⊂λ2s2 (* i@9a`↔S ↓)%↓β1P@! ¬∀* hitep¬C@1αiβCK|∧6/∨4λ
≡→<X-D→~0→→qz4`6e*~∀TR4Ph (αHλ∧∧≤≤[l<αr:`2e li@QKeCXl~∀4R↓↓↓↓αβ[πHhQ↓↓↓α↓↓↓β≤¬β@$_8p⊃Zt|∃@
∃⊂6 )teral characte@H@TR~(@@@@@@ARhASMi∃K@↔IX∧αBR
Hm}λ~0↔→2|⊂∃
F@
litlengdh8 inte`∂KdβY↓!$λ]Y⎇~∧
βs⊂ ,itstring *)
∀@@@@@AQSIMie@'v9`∩π∞8
∞4p∞gl@P@)∧∧↔ε?]\Vwα
x D
α4z2\αa`_Aα#'K↔≤εFO6T¬"HhαC"AQHλλ∧∧λ_Y,@tp∞ (* li@QKeCXTR4R↓↓↓↓α↓↓β3LεFf.βY⎇
∧∞O(επc"H∧∧λλλ∧∧≤Y0⊂Y89z9~w3T6~z9z9~w3V⊂≠4z6 %ngth0AP≠WbI`_h$∧ααα∧∧αε6β|@⊂~P≥≡@P:7P≠4z6 %ngth↓IV~∀@@@@@@@A KGS\4⊂@@@@@@@AGP@hzAYSQ`∂SKLs⊗mFiX4)↓α↓↓↓↓α↓↓β'2β∂!↓h∧ε/G
H
,==_[≥Xh⊂~~2s⊂+\αite1(b`→C9RR
∀@@@@@@@Aα+3O∃¬;@⊗OLV∩F≡¬⊃PBα∧∧ααα∧∧αε.βY≥CE⊂⊂⊂λ⊂⊂⊂⊂≥y0p∀elh4R↓↓↓↓αβ↔;⊃αA)β3LεF/⊗≥DαRJ∧εc!↓ ¬∀* margin % Prh∂GKβ≠@~ε\≡& =8π⊂"~y2q`4ive.
λ ")
λ∧⊂∀!Q"αα∧
πε@xy0∩≥y2P&Xy3t`.9
∀~(@@@@AeC@⊂h!↓↓α↓↓↓↓∧∧6CR≡6≡N↔0αBR
<WJε=↔,8⎇→.∧λ¬∀FBαλ
∧~(@@@@AEKO%\@@!Rβ7πK>K9↓%⊃P@$λλλ∧∧λλ∩,@⊂4w1Z0y⊂≡H4∧paren then~∀@@@@@@@Aα∪↔∂'ph ∩α∧∧ααα∧∧αε@Y>≥=∞c"D∧λλλ∧∧λλλ
rrx -ar 4tAWKKββ7πIαY↓E@1Q"αα∧∧ααα∧∧π>F≥H $¬~;Xm<H∂πd≤Xλ !p¬KLR↓C]HAαs?Qβ,¬vbεMqP@$λλλ∧∧λλλ∧∧λ_Y,@tp∞
chp `*∞X∞<J~-lz_<E↔c"H∧∧λλλ∧∧λλλ∧
β2|:_t≥FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂4s⊂_v0p∪@M0∂∂"h¬fn∂,⎇⊗v≡≡"πεXAQHλλ∧∧λλλ∧∧λλλ∧x8 `% ch @=Hλ (αHλ∧∧λλλ∧∧λλλ∧∧λλ⊂∃Nα ke@∃aP↔π⊂∧β@'αP7:[q2y(0, -bP⊃↓αaβ .≥
6.<λε⊗αXT]CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂6≥λ4∧ef@Q[CeO%\@tzαβ;@.\,W%λ
L9]≠,≡Yz0↔⊂_⊗⊂~w34`.itp∩X`R`,hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓βII∧ε&N>∞MV∂⊗⎇→bβST g.n,XEεlλ∞4st:≠py3t[⊗⊂_⊗λ4p∞f@%]Sir0@`@%Xh!↓↓α↓↓↓↓α↓↓↓↓α↓↓βd;-hhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓β↔≠ h ∩α∧∧ααα∧∧αααYG<α@
validate(rightmargin, min, maxmargin, 152);
validate(leftmargin, 0, rightmargin, 153);
marsave
end
else
begin
if class[inchar].digit then
keepmar := number(0, - 1, 0, maxkeep, 151)
else keepmar := keepmar - 1;
marrestore
end;
nchars := leftmargin;
outline[1].nbl := nchars * charwidth
end (* margin *) ;
(* option - process option directive.
*)
procedure option;
var
ch: ascii; (* key character *)
begin (* option *)
if inchar = lparen then
begin
nextch;
keepopt := keepopt + 1;
while (inchar <> pparen) and not eol do
begin
ch := upper(inchar);
nextch;
if cLass[ch].optionchar Then
case ch of
e: printerrorq := switch(true);
f: Fill := switch(trqe);
j: badjustify := number(0, - 1, 3, infiniTy( 265) - 2;
k: keepopt := number(0$ - 1, 0, maxkeep, 251);
l8 leftjustify := switch(trpJRl~∀@@@@@@@@@@@@AZhA[kYQSaYK YC]WL@tzAMoSiG Qiek∀Rv~∀@@@@@@@@@@@@↓`tAK9gkeJH@tzAMoSiG Qiek∀Rv~∀@@@@@@@@@@@@↓dtAe%OQiUUgiSMd@tzAMoSiG Qiek∀Rv~∀@@@@@@@@@@@@↓ftAgACGJ@hzA]k5EKdPDX@Z@DX@bXfX@dXlR@Zbv~∀@@@@@@@@@@@@↓jtAg!SMik@@tzAMoSiG QMCYMJRv~(@@@@@@@@@@@@AEYC9Vt~∀@@@@@@@@@@@@↓K]H~(@@@@@@@@@AKYMJ~∀@@@@@@@@@@AEK≥S\~∀@@@@@@@@@@AKIe←dbtzAG v~∀@@@@@@@@@@AKeI←dPd@bR~∀@@@@@@@@@@AK9H~∀@@@@@@@@@↓K]Hv4∀@@@@@@@ASLA%]GQCH@zAeACeK\↓iQK\↓]Kqi
P~∀@@@@@@@AK1gJAKIe←dPH`dRv4∀@@@@@@@A←aiMCmJ~(@@@@@@@@↓K]H~(@@@@@@AK1gJ~∀@@@@@@@A KOS\4∀@@@@@@@ASLA
YCggmS]GQ¬e:]I%OShAQQK\~(@@@@@@@@@AWK∃a←ahtzA]U[EKd `X@ZbX@`0A[Cq-KK`XdjbR4∀@@@@@@@AKYg∀AWKKA←ah@hzAWK∃a←ahZ@bv4∀@@@@@@@A←aiIKgi←IJ~∀@@@@@@@AK9H~∀@@@@A∃]H@P(A←ai%←\@T$@v~∀4∀PT@@@@A=kiakP@ZAaI←GKgLA←kiAkhAI%eKGi%mJ\~(@TR~(~∀~∀@@AaI←GKIUeJA←Uiaki⊂v~∀~(@@@@AmCd4∀@@@@@@A
PtACMGSRvPTAW∃rAGQ¬eCGi∃d@TR4∀~∀~(@@@@AEKO%\@PT↓←kiaUiH@T$~∀@@@@@@↓SLAY%]KG←U]h@x`AiQ∃\~∀@@@@@@@AE∃OS\~(@@@@@@@@↓SLAS9GQCdzAYa¬eK\AQQK\~(@@@@@@@@@AEK≥S\~∀@@@@@@@@AeKa∃Ch~∀@@@@@@@@@@A]∃qaGP4∀@@@@@@@@@Ak9iSX@!S]GQ¬d@x|↓EYC],RA←d↓K←Xv4∀@@@@@@@@@Ae∃C@∪←␈∪⊃l4R↓↓↓↓α↓↓↓↓α↓β'→π;?K∪f+;∨SB↓qu↓~βS#↔pβS↔KnK;π3'KC∃↓Siβ3?}[WAβ∂≠Q1βNcQ$4R↓↓↓↓α↓↓↓↓α↓β↔3≡)βS↔⊗k';πg#gC∃βQuβ'g!l4)α↓↓↓↓α↓↓↓↓αβ'→β&+K7'v3SG∧)↓uβLcQβSF+84)α↓↓↓↓α↓↓↓↓α↓↓β.;'84R↓↓↓↓α↓↓↓↓α↓↓↓β/∪K?IC AAeKX4)↓α↓↓↓↓α↓↓↓↓α↓βS↔⊗k';πg#gC∃βQuβ3π 4)↓α↓↓↓↓α↓↓↓↓α↓β↔;!X4)↓α↓↓↓↓α↓↓↓↓π;#'3*↓#';≤¬ε∂∩πGbπ↔≡&.r∀⊗v"
mw"ε]yBε&qQ"αα∧∧ααα∧∧ααα∧&.>≥aPRα∧∧ααα∧∧ααα∧∧ε≡Bπ'Rπ/∞W%~;Xm<J.aQHλλ∧∧λλλ∧∧λλλ∧
Y>≥=∞c"D∧λλλ∧∧λλλ∧∧λλ~,@⊂1v !ss[cH].`∨kQakiG!CdAi!K\
∀@@@@@@@@@@@@↓GCgJ↓GPA←_~∀@@@@@@@@@@@@@@↓JtAKαS↔∂QβQuβO>KS∂!F3π3O*Id4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βAiπβπWO*↓i`*∞:vO&=
L9≤y%↔c"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧≤nH∞t4s:λ≥≡P7≥vq2i
_⊂ - 1, 0, maxpπQSMPX@b`XhRf~(@@@@@@@@@@@@@@AjhAkMI∃aCmC%X@tz↓`∂←'&≠!#S↔+∃%lhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β;Qβ?W';'∪SB↓`∪J
nVn⊗↑!εn∂
x
m≤≥~⊗λ⊗P_@, 0$ @5Cq←o%IiPXb`jHαI`_h$∧ααα∧∧ααα∧∧ααα∧∧αε⊗β_;M↔@εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂2w2βE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ2v9bCE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂12Yβi`≤~(@@@@@@@@@@@@AKee=`b@@Siβ∂!Xh)↓↓α↓↓↓↓α↓↓↓↓α↓↓β↔↔∪?I!↓AE$hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓β↔≠ h!↓↓α↓↓↓↓α↓↓↓↓αβ↔;⊃Xh!↓↓α↓↓↓↓α↓↓↓βL1β'≠≤¬ε∂∩¬Pλ∞80y2[⊂:42[⊂72l≥1tεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂2v 3e error(!002);
λ sHift := shidpλ@T↓GQCE]SAiPβX4)↓α↓↓↓↓α↓↓↓↓∧¬FNv\9w.wDπ#jβ↓Q"αα∧∧ααα∧∧ααε]l@hR∧∧ααα∧∧ααε]l@hR∧∧ααα∧∧ε.g<Tε/↔-z"C∧∩αHhαHλ∧∧λλ⊃-lλ
αD
⎇=≤∞↑→λ
E∀∞c"AQJ
H∧∧λλλ∞<X9n<~⊂P897XpyyP≤0y0s\αaph↓ISeKα≠S'[*p4)↓RH4(Q!P@$λλλ∞∞Yxp∩Y8¬re paragpaphl~∀4R↓↓↓↓αβ[πHhQ↓↓↓α↓↓↓β≤Aiβπ≤∧6NK4¬αRε<[∩ε≡≡&∞∨LZ"αR⊃Q hPQ$ααα∧∧ε⊗.⎇→bαB$λ≡X9|L≡~λ
E⊃ Hλ∧∧λλλ∧∞x=P∩\0y-uYpx80\.W1P∞≤¬ papaco@U]hv~(@@@@@@AS_AS]GαCπI↓hβ3Cπ⊗+9βSF+84)α↓↓↓↓α↓↓↓β⊗+↔'_hQ↓↓↓α↓↓↓↓αβ;↔c&≠!l4R↓↓↓↓α↓↓↓↓ε[↔/∞λ↔∩β'Tε@<9<∀≡H
`ε↔c"H∧∧λλλ∧∧λλ∀≡X8{n]]λ∞GTλ
FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ;t4`,e i@9GQC@⊂∧βc@H≤\≡Y;B$8π2 nkt @∃←XAI<~∀@@@@@@@@@A KOS\4⊂@@@@@@@@@AGαA↓iuπ+CC↔⊂C';∂FA%@1Q"αα∧∧ααα∧∧ααεl[π&≡¬1PRα∧∧ααα∧∧ααα
_bε≡L≡7
↑=R`._8X,↑X8∩=_<@⊂≥42wεB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂_pyrP_t⊂7cβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂1]λ80y0Xwzw:λ≥~P'≥vq2i
_⊂ - 1, 0, infinaty, 0);
f: paracha`$pp∃β≤¬ε∂⊗≤:F/∩
nVbKαc"D∧λλλ∧∧λλλ∧∧λλλ∧
,H⊂⊗≠qurb→2w:⊂∞≤¬ numberλ5, - 1( 0, rightiargin - mi`≤XfjjRl~∀@@@@@@@@@@@@AVhAWKKββCπIβQuβ;.k↔I@εαbαTε∩bβ¬Dεn∂
<V/αDε3+
↔1PBα∧∧ααα∧∧ααα∧∧ααεg!PRα∧∧ααα∧∧ααα∧∧ααα∧&.>≥aPRα∧∧ααα∧∧ααα∧∧ααα∧
⊗ $≠[u∧{_<n≠z;Xm<W+LM9z5∧∞~→;AQHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≠];,,<Z;Lt∞O(
n;9[n
*_r≡X8u↑J_[≥Zj+∧εl
`∀CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂→v9rP≠:vq2\4w3@ :9 numeric9
numberwidth := number(3, - 1 0, maxnumberwidth, 356)
end;
p: parapage := number(0, - 10@`XA%]MS]%irX@@Rv~∀@@@@@@@@@@@@↓ftAa¬eCgW%`@tz↓]k[E∃dP`X↓aCeCMWS`X`XA[¬qgWS@X@fj\Rv~∀@@@@@@@@@@@@↓jtAY=GWKI⊃K]h@hz@JA9k[EKHP`H@4@bX@@XAS]→S]SidX@`Rl~∀@@@@@@@@@@@@AE1C]Vt4∀@@@@@@@@@@@@AK]⊂~∀@@@@@@@@@A∃YgJ~(@@@@@@@@@@@A KOS\4∀@@@@@@@@@@@↓Kee←Hb@tz↓GPv~(@@@@@@@@@@@A∃ae←d f`bR4∀@@@@@@@@@@@↓K]H~(@@@@@@@@@AK]⊂v~∀@@@@@@@AS_AS]G!Cd@zαβKCπ⊗+9βSF+9β;/CS∂ hQ↓↓↓α↓↓↓↓αβ↔3O*β↔KK␈⊃!MA⊂¬∪Xh$∧ααα∧∧ααα∞↔↔≡≡hSXh$∧ααα∧∧ααα]f h$∧ααα∧∧αε.N<RεNd6f∂>;6Nv=↔∃jlM⊗.OD
FF.aQ"αα∧∧ααα∧∧ε⊗.⎇≥`hR∧∧ααα∧∧ααε<\Wπε≡ βSJ
nVn⊗↑%βαb¬Tβ
bε¬Bεn∨
6./¬Dβ≠+∃↔0hR∧∧ααα∧∧ααπ≡'⊗/>Mw⊗+1Q"αα∧∧ααα∧∧πε∂,≤6␈.nDβSjε↓PRα∧∧ααα∧∧αε.lAPRα∧∧ααα∧Vg≡QQ"αα∧∧ααα∧∧ε⊗.⎇≥`hR∧∧ααα∧∧ααε<\Wπε≡ βSj
<V/π≡"αjε↔0hR∧∧ααα∧∧ααπ≡'⊗/>Mw⊗(Q$ααα∧∧ααα∧Vv Q$ααα∧∧ε.vD¬αRπ≡&∞∨,≡εBα%∀βXh!Q"BR∧∧ααα∧∞&.∞Lmw⊗j¬Tπ⊗.≤Dπ&FTf␈⊗T∞7ε.=≤fN≡≡M⊗zπMtπ&FTf␈⊗T'.6l↑"ph$¬"Hh!Q hR∧∧αππ-|6.'↑,Rπ⊗\≤F6␈-W0hPQ$ααα∧∧π6∂!Q"αα∧∧ααα
mv↔⊗≤=6/#$&}}L\⊗sZ¬¬"εNd
fzεL.&∞≡<↑BεNd∞FF*mw⊗j¬%⊂hR∧∧ααα∧∧π∂.}LSRε≡<6NK4¬αRε}↑F/∩∞≡V␈&T6F∂,≤7&/$f␈∩∀π∨'-≥f:α%⊃PPh%¬"αα∧⊗&&=∧αjε≤LBε
=ε∂⊗≤>F/∩∞Mrπ&Tε6␈-U`hR¬!PRα$∧απε≡,⊗jε=∧αjε=↔⊗∞>LW∩πMtε∞&EaPRα%⊃PPh!Q"αα∧∧αππ-|6.'↑,Rε∞LL6BF=π"ε∂<=⊗JK1Q hPQ$ααα∧∧ααε,\vNr¬¬"ε∞LL6Bα%⊃PRα∧∧ααα∧∧αε6}-Vvf]lw&Bπ'Rε6}-Vvf]lw&B¬4βXQ$ααα∧∧ααα∧f␈⊗]lWG%<mw⊗nmLVv?MRβST6@h$∧ααα∧∧αε.lDαBR≤F&≡∧¬"Jβ1Q hPQ$ααα∧∧ε⊗.⎇≥bαB$∞&.∞Lmw⊗j¬%⊂hR∧∧ααα∧∧ε6␈-]ff.l}FBβ'TββXQ$ααα∧∧ααεm|'⊗∞=<W"β'Tπ'↔\W0hR∧∧ααα∧∧εN2
≥f≡F≡$βjεN↔⊗.d∞FF.aQ"αα∧∧ααα∧∧ε⊗.⎇≥`hR∧∧ααα∧∧ααεl←π&≡π1PRα∧∧ααα∧∧απ>
≥F*α
≥f≡F≡$βcr∞.ε∂⊗]e∩ε∞lDεv␈DV}bMphR∧∧ααα∧∧ααα∧&.>≥aPRα∧∧ααα∧∧ααα≤F&≡¬
⊗v≡≡"KXQ$ααα∧∧ααα∧∧αεv|.&∞≡<↑BβST
f}↔,≤6↑/D⊗v"¬
⊗v≡≡"βcd
F↔⊗≤=6/"↔1PRα∧∧ααα∧∧ααα
≤bε≡L≡7≥↑≥l6F∂+Ug∂.}LRπ&]`hR∧∧ααα∧∧ααα∧∧αε⊗\⎇⊗ph$∧ααα∧∧ααα∧∧ααπ≡]w&*π'RεNl=ε∂∪1Q"αα∧∧ααα∧∧ααα∧
f/GL=βXh$∧αααif inchar = quote then nexpch
else error(403);
addch(quote)
end
else nextch
end;
if incHar =↓eaCe∃\AiQ∃\A]KaiGP~(@@@@@@@@↓KYgJ↓Kee←HPh`d$v~∀@@@@@@@AS_AM←e5]YK]≥iP@z`AiQ∃\AYS9KG←k9h@tz↓S]MS9Sir~(@@@@@@@@↓KYgJ↓SLA]=EeCG-KhAi!K\AC⊃IGPQ1EeCG-KhRv4∀@@@@@@@AK]H4∀@@@@@@A∃YgJA1S]KG=k]h@hzAS]→S]Cid~∀@@@@AK9H@PT↓eKCI→←eJ@(R@v~(~∀PT@@Ae∃CAS]`@ZAe∃C@AC8AS]I∃pAK]Qer\~(@TR~(~∀
∀@@AaI←GKIUeJAe∃CAS]`v~∀~(@@@@AmCd4∀@@@@@@A%]IKphAagiIS]NvPTASαs∪↔aε∪W≠-⊃↓)$hQ↓↓↓α↓↓↓βNs∪↔cf+;∨SCQβ';&+∨/'4αBVL]f?&∧
v $~;Y←λ
J!QHλλ∧∧λλλ∞πH≤∩-o→;]∞/.h
¬$≤≠z-n→<H∞Mh≠Y.t~;Y←λ→;NN↑(
E⊃"Hλ∧∧λλλ∧∂.H
≥]→9l↑Nh
¬$→y;L↑X;λ
≥Y→6∧∞X<Z,≤[→(¬%#"C!!"Hλ∧∧λλ_L\z;H¬¬H≤Y,≤~;Y←λ
J!QHλλ∧∧λλλ
≥Y→>
L;Y⎇
∧∞O(επc"H∧∧λλλ∧∧≤Y8,N≤⎇≤M≥Yj~-l→>∧
;Y→/
→;YnMλ≠N]
.c!$λλλ∧∧λλ≠L↑j≤
'1"Hλ∧∧λλλ∧
9H~-l→>≠]Y⎇~∧πH≠8/
;↑≠]Y⎇~∧∞~→3D
;Y→/
α2w3]4⊂≥≡H6p|4[<62w→z4≥FB⊂⊂⊂⊂λ⊂⊂⊂;Zz4⊂8↔⊂27FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ12st[εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂<6λ≥≡P4[22|6→w3z4∞FE⊂⊂λ⊂⊂⊂⊂λ⊂⊂<8λ≥≡P8_srw:[q2y
CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂37iλ<_P≥∂P_P*≠P4w2→|62w→z4⊂2≠P<-|nP≥≡H4w22↑-|⊂nNFE⊂⊂λ⊂⊂⊂⊂λ⊂⊂3'\⊂<_P∞≤P4g→2|6"[3z4⊂
P_P*≠P6p|~w<62[3z4→7P<-↑_jP≥∂P7:vβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂2w2∞FE⊂⊂λ⊂⊂⊂⊂λ4s⊂$[<10yYP≡P7~v⊂:4→w⊂4`.xbas@∀@tzA@~∀@@@@@@↓KYgJ↓S]qY¬gi<]9Kqh@hzA`v4∀@@@@@@A%]qYCMh@tz↓`~∧@@@@A∃]H@P)`↔π&K;a↓RI↓l4Ph)!$∧ααπ,↑6/"¬Pλ∞∞[xq.yP92\p¬t Direc@QSmJ\4∀@TR4∀∩∧~(@@@AAeP∨∂,#WK∃∧ε&/≡↑C0hPβ"H∧∧λλλ∞l<C"D∧λλλ∧∧λ→εD~<Y,>∞h
¬$≤Y4l↑λ→~.,8⎇~.l(≠X-\(
J!QHλλ∧∧λλλ←_y0_≥≥⊂17[v2pw∞P⊂λ* exce@AhAWKeo←eH↓SfAaβ∪↔O↔w!↓)$hQ↓↓↓α↓↓↓β6KCOQRβ??d+π9mαA)β≠Lε'∨"M↔⊗.>M↔6*
l⊗n*¬%⊂hR∧∧ααα∧∧π>F≤=βRεM≡'≡∂G4αBR∞⎇εN≡∧λFO⊗\:FO6↑4π&@h≤Y.<αz⊂∃
FEεEβE⊂⊂⊂λ⊂⊂12Ytp∞ (* reset *)
if iNchar= l`aren Thef
begin
fi@Ich@ttAiek∀v~∀@@@@@@@AKaGKahtrAM¬YgJV4∀@@@@@@@AoQS
P@tz↓0∞ulhQ↓↓↓α↓↓↓↓αβ;↔c&≠!l4R↓↓↓↓α↓↓↓↓¬;#'3*β';∂FI↓qrβ@↔ε≡,VrεMqPRα∧∧ααα∧∧ααα
_bεNl8
≡H∂ ⊂_4∧ank theN nextch
els@∀ASLA
YCggmS]GQ¬a:]Y∃i`∪↔∩βS#↔ph)↓↓α↓↓↓↓α↓↓↓↓αβ↔∨Np4)↓α↓↓↓↓α↓↓↓↓α↓βK↔∞#←?K!X4)↓α↓↓↓↓α↓↓↓↓α↓β⊃↓Siβ3?}[WA.&*b
→FbKαc"D∧λλλ∧∧λλλ∧∧λλ~,@⊂2⊂ )n
α [cou, frm inp, inx, mar opt, out pag par0AgKX0AgEhα`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬#S2u¬##↔aQ"αα∧∧ααα∧∧ααα∧∧απ>
_6Bβ'Pπ>F≤9ααZ<EhhαHλ∧∧λλλ∧∧λλλ∧∧→;⊂→YP4s⊂→⊂≡P %xc then~∀@@@@@@@@@@@@↓SLAMαK@↔∨D
FF.dλWF≡↑λ
∧πO(⊂~≤8¬e
eds@∀AKee=`Pbdβ E$∀R↓↓↓↓α↓↓↓↓α↓↓↓β.cG∧∀R↓↓↓↓α↓↓↓↓α↓↓↓↓αβ↔∨Np4)↓α↓↓↓↓α↓↓↓↓α↓↓↓β-∪K ?&∩αβSTλg.fN⎇wε#1Q"αα∧∧ααα∧∧ααα∧∧αεNdBβJ
_
D≥~→-d→<\M}J$FεJ#"D∧λλλ∧∧λλλ∧∧λλλ∧9≤p∩H2y97\∀_Y12)¬
end;
λ d¬Segβ!↓iu∧∧f∞g<QPBα∧∧ααα∧∧ααα∧∧ε.vAQ"αα∧∧ααα∧∧ααε]HlQ ¬⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂12cZw
e@IaP∨Iλ↓`∪@(~0↔_t0p∩l~∀@@@@@@@@@@AKeE=`Pbdβ↓E%LhQ↓↓↓α↓↓↓↓α↓↓↓↓∧s↔cS≤@4)↓α↓↓↓↓α↓↓↓↓α↓β↔≠ π0hR∧∧ααα∧∧ααε≤dε/F<X∞D≥~→-d≥z~,=λ∞O$x\Y%eZ;⊂⊗↔P⊂
@]QSGP4⊂@@@@@@@AK@; h!↓↓α↓↓↓↓∧∧Vg≡T
vFN=βC@(∩xN,+KZ-Mα.]FB⊂⊂⊂⊂λ⊂⊂⊂ 7hide not @∃←XAI<AUKqQGPv~(@@@@@@AS_A7←kPXAaC≤XAMe5:@@)∧εvFN=∧βc@H⊂
nH:42wβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂12sZwαE⊂λ⊂⊂⊂⊂λ⊂⊂⊂7→{x0sYT4w3~w0z<J]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂4Yα liNecoent < Infinity then advafc@∃IP∨Khh)↓↓α↓↓↓↓α↓β↔≠ π0hR∧∧ααα∧∧π⊗.≥m↔&N≥I↔V*∞⎇εN≡¬⊃PRα∧∧ααε]lBαB$λL↑y=⊂
∀P⊂≠
α((@@@@↓gCYKα≠Q↓5¬βK/∂,ε7
π<X\⎇λ→
≡Y8p~~{2WεB⊂⊃∀FB∧EεEλ⊂⊂⊂(≤5qr`$ure selec@Pp4(hQ↓↓↓α↓βKπ⊂h!↓↓α↓↓↓↓¬AE!βA⊃`∩ε≥nF.≡↑#2αB$λ l]Y<X-D~;Y←λ≥P⊂\4pq6→yP∃∀CE
λ beGin ((AgKYα+∂Q↓RH4)↓α↓↓↓↓αβ' βL¬f≡F≤ λπT≠__.,;H⊂~~2sεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂_2stwβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂72l≥1t∃FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ33y x1 *= 0 to iaxpace do se@1KGiSα{:oaα≠RβSTλ L≥≤y.aQHλλ∧∧λλλ∧∧≥z~-L(
~-lz_<Dπ∂H⊂→≤0y2g
P0w2λ73p∀eol Do
ib c@1Cgg7%]GQCI:P≠∪L;'Qβ&C↔8Q$ααα∧∧ααα∧∧ααα,V.NβC"D∧λλλ∧∧λλλ∧∧λλ⊗ε∀∞O(
n;8Y.¬λ¬T+λε¬λ≠8/∞_9y%D
,
¬↔c"H∧∧λλλ∧∧λλλ∧∧λ~9D
;Xp∀_y⊂≡@ colon then
begif
nextch;
forx1 := x1 to number(x1(λApDXApb0A[CqACOJXj`hR↓I↑~∀@@@@@@@@@@@@@AgK1KGiS=]7pct@tzAQekJ~(@@@@@@@@@@@@AK]H4∀@@@@@@@@@@@↓KYgJ↓gKYK
iS←]mpc:@hzAieUJ~∀@@@@@@@@@@AK]⊂~∀@@@@@@@@@A∃YgJ~(@@@@@@@@@@@A KOS\4∀@@@@@@@@@@@↓SLAS9GQCdx|AE1C]VAQQK\~(@@@@@@@@@@@@AEKO%\~∀@@@@@@@@@@@@A∃ee←dD@tzA%]GQCHv~∀@@@@@@@@@@@@A∃ae←d j`bR4∀@@@@@@@@@@@@AK]⊂v~∀@@@@@@@@@@A]KaiGQCH~∀@@@@@@@@@@AK]Hl~∀@@@@@@@ASL↓S]GQ¬d@zAIaCeK8AiQK8A]KqQGP~∀@@@@@@@A∃YgJA∃ee←d j`dR4∀@@@@@@@AK]H4∀@@@@@@A∃YgJA→←dApD@tz@@Ai↑A5CqaC≥JAI↑↓gKYK
iS←]mpc:@hzAieUJ~∀@@@@A∃]H@P(AgKY∃Gh@T$@v~∀4∀PT@@@Ag=eiS]`@ZAg=ehAC9HAae%]hAS9IKpA∃]ieS∃f\~∀TR~∀4∀~∀@@Aae=GKIkIJAg←IiS]pl~∀~∀@@@@↓mCd~(@@@@@@AM%egiS9ptAa%]qK]Qerv@ TAMSIghAK9ierA→←dAg=eiS]≤@TR~(@@@@@@AY¬giS]`tAaS9qK]iIrv@P(AYCgPAK]iIrAM←HAg←eQS]N@(R~∀@@@@@AYKMQoSIi tAS]QKOKdl@PTA0AgaK
SMSG¬iS←\TR~∀@@@@@A[CIOS\t↓S]iK≥Kdv@ TAZAMaKGS→SGCi%←\@T$~∀@@@@@@↓aCOK
←XtA%]iKO∃dv@P(A`AgAKGSM%GCiS=\@TR4∀@@@@@@AISOQi]SIiPhAS]i∃OKdvPTAd↓gaKG%MSGCQS←\@(R~∀@@@@@Ag←eQG←Xt↓S]iK≥Kdv@ TAfAMaKGS→SGCi%←\@T$~∀~∀ T@@@AaCeMJ@ZAACegJ↓iQJAM←eiS9IKpA⊃SeKGQSmJ\4∀@TR4∀~∀~(@@@@Aae←
KIke∀AaCeMJv~∀4∀@@@@@@AYCd~∀@@@@@@@A
PtACMGSRvPTAW∃rAGQ¬eCGi∃d@TR4∀~∀~(@@@@@@AE∃OS\@ TAaCIgJ@T$~∀@@@@@@@AYK→ioSIQP@tzdv~∀@@@@@@@A5CeOS8@tz@@v~∀@@@@@@@Aa¬OKG←0@tz@@v~∀@@@@@@@Ae%OQio%IiP@hz@dv4∀@@@@@@@Ag←eQG←X@hz@bv4∀@@@@@@@ASLA%]GQCH@zAYACeK\↓iQK\4∀@@@@@@@@@AE∃OS\~(@@@@@@@@@A]KaiGPv4∀@@@@@@@@@Ao!SYJ@!S]GQ¬d@x|↓eaCe∃\RAC9HA]←PAK←X↓I↑~∀@@@@@@@@@@AE∃OS\~(@@@@@@@@@@@A
P@tz↓kaaKHQS]G!CdRv4∀@@@@@@@@@@@↓]Kqi
Pv~∀@@@@@@@@@@AS_AGYCMg7GQt]g←eQS]qG!CdAi!K\~∀@@@@@@@@@@@@↓GCgJ↓GPA←_~∀@@@@@@@@@@@@@@↓XtAY∃MioS⊃iP@ttA]k[ KdPd0@Z@b0@`X@L`X@lTpRv~(@@@@@@@@@@@@@@AZhA[Ce≥S\@ttA]k[ KdP`0@Z@b0@`X@L`X@lTrRv~(@@@@@@@@@@@@@@A`hAaCO∃G←X@hzA]k5EKdP@X@Z@DX@`X↓[CqS9qYK]≥iP@V↓[S\Xll`Rl~∀@@@@@@@@@@@@@@↓dtAe%OQio%IiP@hzA]k5EKdPHX@Z@DX@`Xf`X@XlbRv4∀@@@@@@@@@@@@@@ALt~∀@@@@@@@@@@@@@@@AS_@QS]
QCd@tA`RA=d@QS9GQCdzAg[¬YY`R↓iQK\4∀@@@@@@@@@@@@@@@@@AE∃OS\~(@@@@@@@@@@@@@@@@@Ag←IiG←Xtz@Zbv~∀@@@@@@@@@@@@@@@@A]KqQGP~∀@@@@@@@@@@@@@@@@AK]H4∀@@@@@@@@@@@@@@@AKYg∀~∀@@@@@@@@@@@@@@@@@AM←eiG=X@tz↓]k[E∃`PbXZ@bXbXA[¬qS]q1K]Oi @ZA[%\X@lXdRv~(@@@@@@@@@@@@@@AE1C]Vt4∀@@@@@@@@@@@@@@A∃]H~∀@@@@@@@@@@AK1gJ~∀@@@@@@@@@@@@↓EKOS8~∀@@@@@@@@@@@@AKIeWdbtzAG v~∀@@@@@@@@@@@@A∃`K?∩AYAEHh)↓↓α↓↓↓↓α↓↓↓↓α↓↓β↔v 4)↓α↓↓↓↓α↓↓↓↓α↓β↔;!X4)↓α↓↓↓↓α↓↓↓↓εK⊃β'v≠#πIβiβKC∂∪↔9β&C↔9βv+cC∂@h)↓↓α↓↓↓↓α↓↓↓β.cO∃β-∪K?IC1AI$hQ↓↓↓α↓↓↓↓α↓↓β↔v 4)↓α↓↓↓↓αβ↔;⊃αA)βC∂∪O∃↓RI↓l4Ph)! α↓↓↓β≡{KA↓jβG?K"βS#∃∧K;∪↔Bβ↔;S⊗K↔M8hQ↓)$hP4(4R↓↓↓↓αβCK?≡+∪WK*βO?K#X4(4R↓↓↓↓α↓↓β[∂⊂4)↓α↓↓↓↓α↓↓βARβC';F+;SKKY↓!)∧3?Iβ'∪π[↔↔≠';≥π##∃βLs∪↔aεc'OQαQ$4)α↓↓↓↓α↓↓↓β≠ 1βM∪QβC'wC↔;S↔Im↓↓RβS↔7π→β≠?⊂βG?K&K;≥↓RH4)↓α↓↓↓↓α↓↓βaQβ';&+∨πIZ↓!)β>+;↔K∞aβ';&+aβ[∂∪'π firstinx↑ do
begin
xl := 0+
nexp := lacTinx;
fop x1 :9 1tk maxinxlength do x[x1] :9 nul;
end≠
wiTh lastinx↑ do
begin
xl := 0+
nexpλ@ttA]CXl~∀@@@@@@@@@A→←dApD@tz@DAi↑A5CqS]aYKMOQPAI↑↓q7pct@tzA⊃KX~∀@@@@@@@@AK]HβX4)↓α↓↓↓↓α↓↓β'2βO?K&≠?1↓b↓AβSF+84$∧ααα∧∧ααα∧∧ε⊗.⎇≥`hR∧∧ααα∧∧ααα∧ ⊗ $~;↑
L<⎇πGH≠Z-D≥~→-d~;↑
L<⎇↔E@4εext := @1CgiS9pv~∀@@@@@@@@AMCeMiS]qxX 6←∞BβSTλ
-o_X<lWc"H∧∧λλλ∧∧λλλ∧
9↑_L≡y(∞GT≠Z3↓QHλλ∧∧λλλ∧∧λλ⊂∩[2εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂"[9rFEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂12`'in~∀@@@@@@@@A`@ttASMq CgJ@Xh!↓↓α↓↓↓↓α↓↓↓βL∧bεNo
F∂∨DπCrεm→Bπ&XD
8π<6_yz/.nextp `*
m⊗cXQ$ααα∧∧ααα∧∧απ>
_T≤λ∂πd≠Z0⊗λ27FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂ "egin
λ inxbaq`
@TtAa<]9Kqhv4⊂@@@@@@@@@@@↓`
I↓Siβ≠≡.7&Noπ0hR∧∧ααα∧∧ααα∧∧απ⊗↑λ ,≡β"H∧∧λλλ∧∧λλλ∧∧λλλ∞⊗(∞O$∞lNc!∧λλλ∧∧λλλ∧∧λλλ∧∧≤h@⊂∞≤¬ s1↑.ne@ahv~∀@@@@@@@@@@@@↓pb@ttAg←eQG←Xv4⊂@@@@@@@@@@@@AoQ%YJ@Q`b@xA5CqS]aYK@;?#!%β∞s⊂4 α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓#@/∞λW%≤↔CO}λλnJP≡P*\82y∧≤Y/↔<⊗|_nDJP27FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂,P≥≡P≡_P∃@FE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂:w:~v⊂:x≤2y∀8↔↔<-|nTP≡λ8x82\α(s2↑,x[x1]);
s1↑.nexp := p;
p↑.ne@ah@tz↓`
IlhQ↓↓↓α↓↓↓↓α↓↓↓↓π↓↓iu∧K;c∂≠∀4 α↓↓↓↓α↓↓↓↓α↓↓β↔v 4)↓α↓↓↓↓α↓↓↓↓∧+;⊂4R↓↓↓↓α↓↓β↔v!↓!)¬≠?KQαQ%↓lhP4)!R↓↓↓↓πβK';"↓5βC⊗K;Qβ&C∃β'v#↔aβ.sSK'/→84 αQ$4(hP4)↓α↓↓↓β¬∪?∂↔'+K∃βπ∪';QXh(4 α↓↓↓↓α↓β[π⊂h)↓↓α↓↓↓↓α↓βAi¬β';c.sSKeZ↓!)β4¬w$≥≤X.l<\p∀[3P:4→P4w2→|⊂64\z⊂∃∀CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂<_]λ4w:2Yp¬r; (* general ifdex variablE *)
(* send1 - seNd one characteR to The o@Uiakh↓YSMJ8~∀@T4∀@T@@AaCICZAG @ZAGαCπKπ∨#↔Iβ&yβO↔v!84 αQ$4(hP4)↓α↓↓↓↓αβCK?≤+∪GK*βOπ;! #∂!RβπO∂LKa%@1Q hPQ$ααα∧∧ααα∧&.>≥dαBR∞8 -l(
E⊃ Hλ∧∧λλλ∧∧λλλ
}=≠⊂∩[3z4∞α= o@UiQK]≥iP@Vbv~∀@@@@@@@@AoSi A←ki1S]K7=kiYK9OiQ:↓I↑~∀@@@@@@@@@@AE∃KSL~(@@@@@@@@@@@A@tzA
Pv~∀@@@@@@@@@@A] X@tz↓GQCE]SIiP4∀@@@@@@@@@@@↓K]H~(@@@@@@@@↓K]H@ TAgK9Hb@T$@v~∀4∀~∧@@@@@AEKO%\@PT↓aeS]P@TR~(@@@@@@@@↓`@tz↓H'K≤εFNwefv/∞G0hR∧∧ααα∧∧ααπ⎇
⊗f*∞∧βcR
L↔∨&≥oαε&qQ"αα∧∧ααα∧∧ααπ⎇~FBπdε&xQ$ααα∧∧ααα∧∧ααα,V.NaQ"αα∧∧ααα∧∧ααα∧f␈∩∂α∩βSTε∩π&t
V∂⊗⎇≥bε&t∞6.vF∃ε⊗f≥m2KXQ$ααα∧∧ααα∧∧αααmwαπε⊂βCjε⊂λ∞Mh≤_,|8{s∧≠c"D∧λλλ∧∧λλλ∧∧λλλ∧
9H≡ε∀∂H≡
D≥~→-d≤y;LF*_[≥Zj#!$λλλ∧∧λλλ∧∧λλλ∧∧→;∀lT≤y;LF*≡⊗oε5*.aQHλλ∧∧λλλ∧∧λλλ∧{{]L↑]≠]-\Y<J
}=≠~-l+λ≠n↑≠→;L}~λ∂∞λ⊂⊗→s:;tY:4⊗⊂≠:vr`2ic);
fkr x1 := 1 to rightwidth do send1(bhank);
for x1 :9 pagecol + 1 tk xl do send1(x[x1]);
writel@%]Jv~(@@@@@@@@@@@A⊃Sga←MJQMSβ∪GS'wA%l4R↓↓↓↓α↓↓↓↓α↓↓↓β6KCOSNsa↓ijβAl4R↓↓↓↓α↓↓↓↓α↓↓↓βα↓i`*m↔π∨M≥gErmlWG Q$ααα∧∧ααα∧∧ααα]f#XQ$ααα∧∧ααα∧FO∨
z6*FL≡7&No¬⊂hR∧∧ααα∧∧ε.vD¬αRπ∞-⊗w"¬%∩βXQ!PPh$∧ααα∧&.>≥dαBR∞9wπε≥oααR⊃Q"αα∧∧ααα∞λ↔↔≡U1PRα∧∧ααα∧∞6␈↔G1PRα∧∧ααα∧∞π⊗NnAPRα∧∧ααε]lBαB$
6␈↔M≥gBα%∀βXh!Q hR∧∧αε⊗\⎇⊗rα¬$ε&O,\7&OlTαRHQ$ααα∧∧π⊗/Xλ.A ¬⊂⊂λ⊂⊂⊂⊂λ72|:_t≥FEλ⊂⊂⊂⊂λ⊂⊂92Xp∧woRd;
diR := Lookup(bre, ill);
whiLe iNchar= blAnk) @¬]HA]=hAK←αaβ∪=εs↔cS≡Al4)α↓↓↓↓α↓β'→ε#'IβL¬b¬↑.,Rbεn-Rbε≥lBbε\≡"bε}∞Bbπ≤rbπ,↑2bπ==∩bπ=z"bπ]lBbπ|YujπMVph$∧ααα∧∧ααα.&.∞51PRα∧∧ααα∧6∂≡TFO∩
x`hR∧∧ααα∧∧ααε.,SRβ1Q"αα∧∧ααα∧∧ε≡}W$π>F≥HRεv}@ε.}DλFzεl[π&≡π1PRα∧∧ααα∧∧αε≡}W"πε≤|Vw.\,W∩β'Tεw.\,WαC∃Dπε∞|]g.n,Z"bβ¬Dεn∂∞⊗>*Dεs+J↔1PRα∧∧ααα∧∧αε7-W"π⊗\≤F6␈-W0hR∧∧ααα∧∧ααε≥lCRε≥nVv&]nBFW]\&/∩εUBαjε⊃BβαD
&N>∞MV∂⊗⎇≥bbβεVbJK1Q"αα∧∧ααα∧∧εNwπ$εNw∞↑F#XQ$ααα∧∧ααα∧ ⊗wC$λL\9~;Oπc"H∧∧λλλ∧∧λλ∪
≡∞H∪
≡→<X-Gc"H∧∧λλλ∧∧λλ≠,≡L¬⊂ -argin;
opt: o@AiS←\l~∀@@@@@@@A←kPpA←kQakiHl~∀@@@@@@@AaC≤tA]K]aCOJ!]k[E∃`QS]→S]CidX@Z@DX@`X↓S]MS9SibX`RRv4∀@@@@@@@AaCdβQβCπ⊗↔KπεAl4)α↓↓↓↓α↓↓↓β⊗+Eiβ⊗+O/G1PRα∧∧ααα∧∧απ≡]G"π≡]H ,>∞c"D∧λλλ∧∧λλλ∞≥z.H∞=z<
n;8Y.¬
+λ¬T+λε¬λ≠8/∞zz4¬D∞--e∃.c"D∧λλλ∧∧λλλ∞=|NH∞=|]~-o∞c"D∧λλλ∧∧λλλ∞<]∞C!$λλλ∧∧λλλ∧∧λ_Y,⎇9C"D∧λλλ∧∧λλλ∧∧≥~=
L;→;L}~⊗|n\]~5
L7(∞GT
c!$λλλ∧∧λλλ∧∧λ≤Y,≤α89z≤αing!iSiY∃0∂OW↔#'S3-i1βSO#3↔3.s∨S"←≠WSO#3⊗ubβ;W1Hh)↓↓α↓↓↓↓α↓↓↓β.s⊃l4R↓↓↓↓α↓↓↓↓¬#S1hhQ↓↓↓α↓↓↓↓α↓↓β.;'84R↓↓↓↓α↓↓↓↓α↓βS'&c↔3↔v;S"on';SM#3⊗UβQu↓Aβ1PRα∧∧ααα∧∧ααα∞,V∞≤≤⎇∞4w3@(titleXπ[CS9iSiY∃:PAi%iP∪↔d∧Vv?M6n∞≥nFO&L[Rbεn]BHh$∧ααα∧∧ααα∧∧ε.vG1PRα∧∧ααα∧∧απ.l@∞D
;];LL;]
∧¬(≠]-\Y<B
≥YZ;M≡≤∧V⊂P_V⊂⊗⊂4w→4s4`4y(λ@`$Rv~∀@@@@@@@A]K↑t@ UakiMKNA←Uiakh$TR@Vα↓!))RQ))$hQ↓↓↓α↓↓↓↓αβ↔c
bβ'31Ph)↓↓α↓↓↓↓α↓↓↓β⊗+⊂≡NβC"D∧λλλ∧∧λλλ∧∧→<\M}L,λπ'αP3 5llwo@IHv~∀@@@@@@@@AKee=`P`@XR~)α↓↓↓↓α↓↓↓↓αβ↔;⊂hQ↓↓↓α↓↓↓↓αβ↔;⊃Xh!↓↓α↓↓↓↓∧εvFNLTαFNl8
≡H∂D~<Xm¬(_;LD≠[u∧9{λMc"H∧∧λλλ∧∧λλ⊂L\z;C!∧λλλ∧∧λλλ∧
9H∩-lz_<Dπ∂H_ML8π5@ then
λ bedπS@8hQ↓↓↓α↓↓↓↓α↓↓β↔↔∪?IEβQuβ'v≠#πIXh!↓↓α↓↓↓↓α↓↓↓β-∪K ?%%⊃ Hλ∧∧λλλ∧∧λλλ]Y∞c!∧λλλ∧∧λλλ∧
Y>≥=β"H∧∧λλλ∧∧λλ⊂∩[2εE⊂λ⊂⊂⊂⊂≥w:4`, egl
λ end (* di@IKGiSYJ@@)J↓d4(hP1↓↓@¬"αjUQRjJUQRjJUQRjJUQRjJUQRjJUQRjjUQRjJUQRjJUQRjααJ#!⊂⊂∀* ∀R4⊂@@PαQ↓↓↓α↓↓↓↓α↓↓↓↓αβS↔c ∧ε -βy6p]:4w3H⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂
)
λ∧@@PαQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓%⊃PBα¬
D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ¬∀FBα ((@ZZZαi5%5h¬Rj@++#%U++ ⊗KT¬--4ZRZZαi5%5h¬RjJUP%UαVV@-- ∀R4⊂λ (αJ∃λ⊂⊂⊂⊂λ⊂72`8tp∂←E⊂@ZAe∃C@⊃β&C∃β;,ππ"ε≥nπ/"∞⎇w,λε⊂ 0p¬P∨∂,ε74→~0→→qz4`6es
* when appr`∨@∧ε&N∂LU`hR¬%⊂hPβ"C!⊂⊂8 2ocedupe nexp o←β∪⊃l4Ph ∩α∧∧π6∂!Q"αα∧∧απC↔$εNwLX l↑L¬P∀
⊂67`/p index *)
~∀4⊂ ↓↓αβ↔∨L¬bαBαH⊂↔→|:0↔op¬H@T$~∀@@@@Ao=`∪3,¬f >~λ∞GTλ
FBα ne@]S]@3L¬f*β'Pλ@0p`'α)`_hαHλ∧∧λλ⊂≠Z4pe eol @¬]HA]=hAK]⊃←@≠≥nπ/"MphR∧∧ααα∧∧ε⊗.⎇_AQHλλ∧∧λλλ
l>≥_m<Nc!⊂⊂⊂⊂λ⊂⊂⊂ )d∧AK←αaβπl@∞v@⎇λ⊂∩[27s )nput↓iQK\4⊂ ↓↓α↓↓↓↓α↓β↔>K8 (αHλ∧∧λλλ∧∧λ_\L\8¬P≠
λ∧@@@@@@@A`∨KLεF.w]H↓QHλλ∧∧λλλ∧∧→;Y↓QHλλ∧∧λλλ]≤y(
≤β⊂4`.cha`$αzAISβ∪∂!β&C↔9β&K@⊗.>M↔6(β"H∧∧λλλ∧∧→;⊂→YP4s⊂~w1t0\α = @ACeCGαCπIβ&C↔8Q$ααα∧∧ααα∧λλL\βtwεBα bre@¬P
l4R↓↓↓↓α↓↓↓↓∧¬⊗ $≤_<L≡zz0_λ≤ε ↓iQK\β`∂/'α¬πε∂,≡6@=<
.aQHλλ∧∧λλλ∧∧~9H∞<X<≤βrP∨λ_⊂:4→w⊂72]x0srJ80p∩apage)8ε~)α↓↓↓↓α↓↓↓βL¬g.vLXNE≠≠p⊃Zβ`II∃]`⊃↔1P@$λλλ∧∧λλλ∧
9H⊂↔≥vq2`2ing <> no@9k[EKβ∪';≥∧εFF.βC"D∧λλλ∧∧λλλ∧∧_Y0∪Zw
pa`%¬G←k]P@t`5∧εε∂⊗≤8n]]λ
dε,¬FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂1w`.ver`)9k[EKβ⊃#@>|∧Y¬D≥{p→→4∧ength _AββπKπ≤¬w.wEDεw8εq2\αwidth, numbering!
end8ε~)α↓↓↓↓α↓↓↓βv+c@&=↔!α@
e@9H⊂∀$∧ααα∧∧αε.βY≥CE⊂⊂⊂λ⊂⊂4`& h
@?α@λ]Y≠p∪~w8:`4 p QKαp4)↓α↓↓↓↓αβ↔∨L¬`hR∧∧ααα∧∧εv⊗β_;MyP⊂~= 0;
i@_A`∨?⊗#3↔l}FBβTεαπ~→0↔βE⊂⊂⊂λ⊂⊂⊂⊂λ⊂;t4[2P4`.cha`$α↓uβd∧⊗vZMphR∧∧ααα∧∧ααα∧λλL\z;C!⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂71≠0p∞ks :0~Aαs &≥m74λ¬P_Nβ
∀@@@@@@@@@↓]Kqi
QCd~(@@@@@@@@@AK]⊂p4$∧ααα∧∧αεNdλL↑z;[
≥Y(⊂~~2p∞
begi@8~∀@@@@@@@ASLQP≠d∧⊗v←4πbβαα(⊂↔\α no@PAM@'d¬BπεXD\Y0⊂Zβ;
@%H βWv#↔K∂F@∩βG`λ
nαp @while inc@!Cd@xxAEYC9VAI↑4∀@@@@@@@AEKO%\~∀@@@@@@@AS_AS]G!CdA[=H@bd`@zAQeaQK\↓iQK\4∀@@@@@@@@@AE∃KS\~(@@@@@@@@@ASL↓]gaY%if@x↓[CqgAYShAQQK\~(@@@@@@@@@@@A KOS\4∀@@@@@@@@@@@↓]gaY%if@ttA]ga1Sif@,@bv~(@@@@@@@@@@@A]SiPAMaYSiM7]ga1Sig:↓I↑~∀@@@@@@@@@@@@↓EKOS8~∀@@@@@@@@@@@@Aa=S]h@hzAo←IIYK]≥iPv~(@@@@@@@@@@@@ASLA%]G←YU[\@|bAiQ∃\~∧@@@@@@@@@@@@@AQsa9h@tz↓GYCgβ~o'mH
-l6z0↔_wv:v[⊂⊗P_WTεc mod 1Hq:]Yα+S@&↑$ε∞vAQ"αα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααε=Hλ.≡vz3MM9Y6m≥X{{∞];H
dε7+Xd
8πrY≤&W≠2z:2\∧¬
Else hypnt 88
AM¬YgJV4∀@@@@@@@@@@@@AS]A]h@ttASMGα{3W]aPRα∧∧ααα∧∧ααα∧∧ααε]l@hR∧∧ααα∧∧ααα∧∧αε.βYβ!$λλλ∧∧λλλ∧∧λ→3LA Hλ∧∧λλλ∧∧λ→3∞≤αBE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ12st[ε@
wordlength :5 Wordl@∃]OiPV@bv4⊂@@@@@@@@@Ao%iPAo=eI7o=eIYK9KiQ:↓I↑~∀@@@@@@@@@@AE∃H∂'aQ"αα∧∧ααα∧∧ααα∧λλdπM(∩-lz_<G⊃ Hλ∧∧λλλ∧∧λλλ∧∧≠X[∧πO(⊂⊃Z0y0↔idth
End
e`≥HβX4)↓α↓↓↓↓α↓↓β;,ππ&≡≡ hR∧∧ααα∧∧ααε]l@hR∧∧ααα∧∧ε.vAQ"αα∧λ -lλ
∃λ52|:≥wy2 *) 64⊂∩)@¬"αα∧∧πε∞=>v␈⊗D¬Rπε≤92ε
∞⎇w⊗"
→g&Z∞Mε*ε|ZGπ∂Dλ
≥Y+C!∧λJ#!↓ C"D∧≤≤[l<αr:i→P80qZβword9
var~∀@@@@↓]DdAαK;C↔>+Am↓@¬"εW]\&/∩-F∞v>4αGπ,X6.&≥lrπ>},BJααJ#!∧λλλ∧∧≠XnD
;]→,|αy≥@
∃⊂71Z0y1P≤92r4Xz2r a`
iKHACII%]NAo=eH@T$~∀4RA)↓↓α↓βπ∪';?K⊃αiβπ∪ βS#∃¬;?K⊃∧εFzπMRε←↑Nπ/"
H
-l+C"D¬J#"AQ@εE⊂λ⊂⊂8 2ocedure addword;
vab
λ X1: iNtegeR8ε@@!Rβ↔π≠-∪π1βLs∪↔aπ3πK≤≤&f*¬%⊂hPQ!PBα∧∧ααε,XvNr¬↓"ε∞LNv␈⊗D¬"Hh$∧ααα∧∧απ>≡Mαε␈↑MFNv[=w/&L]f?&Tε&z
l&bβ'Tεv⊗D¬2εv$¬"ε≡≡'>NNMβXh$∧ααα∧∧αε6} λ∂ε(∞O$ε(≥≠d∞{|Y
L9Y⎇
∧→≠c!$λλλ∧∧λλλ∧Y9z-a Hλ∧∧λλλ∧∧λ≠⎇.M→;YnMλ∞O$
⎇=≠]Y⎇~∧¬h ≥CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂7zz≠4s2m[zz6"[3z4.H≥≡P;[y2-|nBE⊂λ⊂⊂⊂⊂λ⊂⊂⊂2[2≥FEλ⊂⊂⊂⊂λ⊂⊂7j]62w3]4⊂≥≡H7zz6→w3z4λ∃P_@;
withoutlIne[oUthength] do
beeif
c :=bh C],v~∀@@@@@@@A] X@tz`~)α↓↓↓↓α↓↓↓β,s⊃l4R↓↓↓↓α↓↓β;≡CπKMβQuβ;≠X4)↓α↓↓↓↓αβ'→βv≠#πK~↓yeβf+∪S7∂∪∨'→¬##↔_hQ↓↓↓α↓↓↓↓αβ↔∨Np4)↓α↓↓↓↓α↓↓β;>CM↓Siβ+∨∂βE↓4ε∪Xh$∧ααα∧∧ααα|↔π≥=lv∂π;Pλπ'αP7j]42w3]4εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂"[2εE⊂λ⊂⊂⊂⊂λ⊂2v 3e gappπ6a:α↓`∪@(≠p~]42w3]4εE⊂λ⊂⊂⊂⊂→w2⊂∀
⊂0r2≥wy2 *) 64∀∩)@¬"αα∧∧π≡=→0_λ⊗P9r]⊂:x⊂→4πr @ACGWo=eHL~(@TR~(~∀
∀@@Aaβ∪?∂↔'+K∃β≤∧W'∂∧εc!! ¬⊂⊂λ⊂⊂⊂+_y
p!hAS]i∃O@↔IX↓!)βd¬v␈α
_LL>λ
E⊃"C"AQHλλ∧∧λ_Y,@tp∞ (* seTup *)
ib newpa`%¬KeCa AiQKαqβ+ βQuβ;⊗cπ;∂_h!↓↓α↓↓↓↓∧+3O∃∧K⊂∩εlZv␈/MI⊗v*∞Mε.r
l"βSTεhR∧∧ααα∧∧ε.g<QPBα∧∧ααα∧∧αε⊗\⎇⊗ph$∧ααα∧∧ααα
_bεV↑⎇⊗vf≥lRπ&YbεV$π#jεl-F∞v>4αZβ⊃Q"αα∧∧ααα∧∧ε.g<Tεv∩¬'Rεv-H⊗v←71P@HαHλ∧∧λλλ∧∧λ~1D;\u.,,H⊂-lλ
≠n↑≠~3L[{y=
L8π3z~⊂∩P_WTεc Mo` 1Hp@zAAKe@'|∧BJε≥l@hR∧∧ααα∧∧ααα∧∧αF@X[⊂⊂[5yP≡λ→∀P !nd (ncha`%L@t`5∧¬F.]≠8.z;B$∞~→0↔βE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂'_⊂≥≡@∧¬
eNd;
nc 88
A]
QCe@~↓-β;⊂∧αZπ⎇xLMα2w3]4≥FEλ⊂⊂⊂⊂λ⊂⊂4cλ4εc > raghtiargin then~∀@@@@@@@A%H βKL∧vG&\≡& =8π⊂⊗H51t0\9P↔ badjUqtifY * (neaps - 1) then
λ bedπS@9αA)β∨|¬⊗v:∞MrεNn<W.α⊂:7[P6pw≡P16 !nks *)
∀@@@@@@@@@↓S@→βw≠C#''→↓i↓α∧π&F]aPBα∧∧ααα∧∧ααα∧∧ε⊗.⎇_AQHλλ∧∧λλλ∧∧λλλ∧∂(∞GT≠\|
M=≤naQHλλ∧∧λλλ∧∧λλλ∧∞z~0⊗→P8λ "α↓y↓A∧#<4$∧ααα∧∧ααα∧∧ααα∧λ
m≡~λ⊂→\44z9Vβx1]↓IV~∀@@@@@@@@@@@@@AEKα;'8Q$ααα∧∧ααα∧∧ααα∧∧ααεl4β@'αP71Z0y0∪ + nbVAa←αK;A↓X∧ε␈⊗E
πOεnA∪@1 Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧
9H⊂↔_P≡≡@≤αightmargin then ∀@@@@@@@@@@@@@@@AE∃H∂'aQ"αα∧∧ααα∧∧ααα∧∧ααα∧∧πC
∧εO$ε∞h
¬$→>~.D≠≠p↔\⊂⊂
)
λ∧@@@@@@@@@@@@@@@AS@;≤¬vg8εw 8∧p∃βL¬gε@]∞`⊂
∃⊂92\β`hAαK;CW ∧π>≤Y0⊂[P⊂
)
λ∧@@@@@@@@@@@@@@@AK@?b↓`∪@(→P⊂[9rP≠
λ∧@@@@@@@@@@@@@@@AP≠↔G#∂#πα ∞aQHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≥{p→→4∧ength 4tAa←SαsQ↓4λn2⊂λhyph
hRl~∀@@@@@@@@@@@@@@@ASL↓Qsa]PA`∪#,¬bπ{x 2⊗βwo`%⊃YK@;?#"`*l4β@'αP6t[8¬s 64⊂ ↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β↔lAP@$λλ
αα∧∧ααα∧∧ααα∧λ -Ny(⊂≤P≥≡@ x1 -1;
end8ε~)α↓↓↓↓α↓↓↓↓α↓↓β↔v!`_hαHλ∧∧λλλ∧∧λλλ
≤β⊂71H≤ε ridπQi[¬`∨'p∧π&F]aP@$λλ
αα∧¬↓↓↓αβ↔∨L¬`hR∧∧ααα∧∧ααα∧∧αε/,∧[n∀_⊂⊂8);
e@9Hv~∀@@@@@@@@AK@; π0hR∧∧ααα∧∧εv/⎇x
.Mα4w2H≥_
@→CYgJl~∀@@@@@@↓]Ko@∧∧↔,9x 0\4⊂⊂~= fal@MJ~)α↓↓↓↓∧∧Vv"¬
D∞y=≥.∧λ¬∀P∞β
∀~(~∀@@AEKO%\@@!RβCπ∂←;?K⊃αQ$4$∧ααα∧λl↑≥<∞aQHλλ∧∧λ~0∪λ4εc <= ri@≥Q`∪7∂∪⊂≡NβH⊂~~2p∞ @¬IIo←β∪⊃l4R↓↓↓↓αβ'2
l2β@LεP 2ichtmargi@8AaQKαq↓!$λ
⎇K=⊂_ppl packword, th∞Aaβ∪↔[↔w!β@.βY0↔→4p∞g
λ∧@@@@@@@@@@@@@@@@@@@@@@@@@@Aβ∪↔∂W↔≠'?9∧¬⊗rααJ#!∧λλλ∧∧λ∧∃⊂λ:42P_pyrP≠q⊂0@ word↓iQC@ ∧ε&@y<sE↑λ→R.D_Y0~≥prw the @5CeOS9`
↓%⊃P@$λλλ∧∧λλ⊂⊃→stwεBα @)kgiSα3el4R↓↓↓↓α↓↓β←⊗KS↔M→f+XQ$ααα∧∧ααε≤dεv~¬`λ∞4st:≠py3t[⊂:42[∧@
bedπS@8hQ↓↓↓α↓↓↓↓αβG/L¬0_∞FA⊂⊂λ⊂⊂⊂⊂λ⊂⊂0r→9wy2∞FEεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂~pε nc 8`5∧ε&N≡∞MV∂⊗⎇→bπ&XAQHλλ∧∧λλλ∧∧λλ⊂L\z;C!∧λλλ∧∧λλλ∧∧λ~P~\z4s,NF@
wr`∪@&+3'lQP@$λλλ∧∧λλλ∧∧λ→0↔→∧¬∀@@@@@@@AKαs⊂ (αHλ∧∧λλλ∧8π2εB⊂⊂⊂⊂→w2⊂∀
⊂80qZβword *) ;
~∀_@@PαQ↓55h¬RjJUP%UαVV@--)--4ZP∃5h¬RjJUP%UαVV@--)--4ZP∃5h¬RjααJ#!⊂⊂∀* ∀R4⊂ ↓↓@¬"αα∧∧ααα∧∧ααα∧∧ε/↔-xD∞≤[p⊃Yyyt`.dε@@@@@@@@@@@@@@)Hh ∩α¬
D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ¬∀FBα ((@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)Hh!↓↓@¬"αjUP%U++#%U++#%U++#%U++#%U++#%U++#%U++#%U++#%Tλ¬∀FB∧¬∀PαQ↓↓↓α↓β↔K⊗{@∩αβ(∩.yzrP_w⊂2`2p¬P∨I∧k↔OO∞;∃(Q$αPHαH
D∧λλλ∞<X;$
β⊂⊂≥↓Kee←β⊃β+Wn∪↔I8hQ↓↓↓α↓↓↓↓α↓↓↓βpβ'Mβv+⊂≡∂M~f*εmxD<X[n∞h→→.L8⎇→,D→≥0→~w3P#≠y0
* p@I←GKgMS]NAQ↑Aae∃mK]h↓k]K]⊃S]NAIKGkeMS←\\4∀@T@@@@@@@@A→←dAa=`∂'SO3∃β9bβS#∃∧3?33⎇;';≥∧≠?;[,¬g&N⎇`εO~∞Z6.#!Q"αR∧∧ααα∧∧ααα
`ε&Odε∪βα
≥f&N<≡F/~∞⎇εN≡∧FO⊗\8
≡Y(∃
!"H¬$λλλ∧∧λλλ∧∧≤Y1L↑\h∃
uC"H¬$λλλ∧∧λλλ∧∧≠H≠-|λ$ε∧≤y3\⎇≤h∀≤_<NM8⎇3≡H→4N
|H≠,↑|x9lUA"H¬$λλλ∧∧λλλ∧∧≠H≠-|λ,ε∧~<hπg(λ
Xλ33y nume@ISFAKβ∪C/K~p4)↓R↓↓↓↓α↓↓↓↓αβ∨3?⊗1β[∂∪'πd+@~ε↑.&␈∪⊗¬Bε/,-w&+λ⊂∩\αrgrn1(errorf $0~∀@T@@@@@@@@↓C]HA∃`K∨↔≠7π∪bβπK∃¬+Gπ⊃∧3?Iβ∧ε&NwM→f*π>λ ,=9Z0⊃CE⊂∃⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≥0p`+∃`
β←FK∂!β∂∪∃β'p∧ε/↔-z"`! ¬⊂∃
FAεEβE⊂⊂(≤5qr`$ure @∃`K?⊂↓!)βp↓`∩ε≥nF.y<@¬%(λ
FB∧@
ti@AJ~)α↓↓↓↓∧¬ε␈∨FTβjπ≤6N9λ⊂.∞X>(XW↔
WP7s⊂_t0q;
hoqt10 = paci`HAα@↔⊗∨∀¬@6+KD&αP7`& char9
α @!←ghdβ↓↓`*∞λ⊗≡↑\@λ≡\X>$l+@↔_.P /d∧AGQ¬` l4Ph ∩α∧∧π6∂!Q"αα∧∧αεF]`∞D
;]→,\αy≥@
∃⊂6 %ngth↓←DAgQ` ↓ Hh!↓↓α↓↓βO'⊃aβO'∪';≥X↓!)β4¬w$≤≤Z-n~;Yd
9[⊂∀[2P∃∀CE⊂⊂⊂λ⊂⊂<1, x"hAS]i∃O@↔IX↓!)β>+;↔K∞aβ3?⎇↓β'lLWBα%⊃PPHαJ∃λ⊂⊂⊂⊂λ9y~V≥y_X⊗≥y→_⊗H;y4j→P47i]⊂1t0\αacters to str8~∀@T$~∀
∀4⊂@@@↓aeOG∃IceJ↓odjQ
btAQ=chjV4⊂@@@@@@@@@@@@@@A9FtAS9iKOKHRv~∀4⊂@@@@AmCH~∀@@@@@@↓pb`)∧¬⊗wε\|WβXQ!PPH$∧ααα∧&.>≥`αBR∞}#*α%⊃PRα∧∧ααα∧λ M}H≡∧$πO($∞≠h∪L4→≠c!$λλλ∧∧λλλ∧Y9z-a Hλ∧∧λλλ∧∧λ≠⊃-d∞O(
L9H
dεen := lenV@bv4∀@@@@@@@AoSi AgiEmYK]:↓I↑~∀@@@@@@@@AEKO%\~∀@@@@@@@@@↓F@tz↓CgGSαK∂#π⊂C∂NoC
u%LhQ↓↓↓α↓↓↓↓α↓↓β;⊗a↓iu∧≠#πK>K∪S hQ↓↓↓α↓↓↓↓α↓↓β↔v 4)↓α↓↓↓↓α↓↓β↔v 4)↓α↓↓↓β,s⊃↓!Rβ←IEα↓)%↓β1PPh!Q"αα∧∞π⊗↑<X ∞↑Y(∃n→_∀1\]⊂47\z→_≥CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ71]⊂~w:2sYy∀]FBεA⊂⊂λ⊂⊂⊂;_y
p1~ integ`dv4⊂~(hQ↓↓↓α↓β↔>K9↓!Rβ←IIα↓)$Q$ααα∧∧ααεmxD∂(∞GT(⊂~≠P71P→7FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂1→stwεB⊂⊂⊂⊂λ⊂⊂⊂⊂λ42w∞≤¬ l@∃\@V@Dv~∀@@@@@@@Ao%iPAgβ#@∃↑L]ejεMqPRα∧∧ααα∧∧ααα,V.NaQ"αα∧∧ααα∧∧ααε4π#jε≡8λm≥8z_.%_|voε4εT]CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂7_6⊂≥≡H1t0y≥tr:4βE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂ %nd
@∃]H~∀@@@@↓K]H@ TAodH`@DRr~∀~(~∀@@AEKO%\@@T↓Kee←H@TR~(@@@@ASLAAaS]i∃`K}.2π&XAQHλλ∧∧λλλ,9z0↔βE⊂⊂⊂λ⊂⊂⊂⊂→y97`2pε@tz↓iekJl~∀@@@@@@↓gie6β
u 64π#jε-H⊗v[1Q"αα∧∧ααα∞8
∞-XnG≠10 := 0 64⊂@@@@@@Aαc↔9↓Si↓E@1Q"αα∧∧ααα∞}#*BuP%UαP∪@, 5);
λ∧@@@@@@AαK⊂∩εdπBβα∞Mε.pβ"H∧∧λλλ∧∧λλ⊂⊃→stwεBα p∂ddβ↓!>mxMT→<\M}L¬⊂⊂λ⊂⊂⊂⊂λ⊂∪V⊂Y∀]FBα ca`'α)β 2
x AQHλλ∧∧λλλ∧∧λλ$ε,¬⊂ 7p∧d`Pα;3'lTπ&@{h⊂⊗≠w3P⊂λ⊂⊂⊂⊂ V⊂⊂IJ]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊗P⊃:
begin ∀@@@@@@@@@@AYKαq↓iU∧¬F.r¬0λε↔c"H∧∧λλλ∧∧λλλ∧∧λ≥z.Mλ≤p~≤α[leN] do
λ beGin~∀@@@@@@@@@@@@↓F@tz↓Kee←β⊃El4R↓↓↓↓α↓↓↓↓α↓↓↓↓αβ;Dπ#jε=↔.z9≥
↓ ¬⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂ %nd
e@9Hv~∀@@@@@@@@@Z@@≠Qβ@?&"αB|_9l]];8L↑H≥≠mt≠_<L|αSV⊂_⊂]FBα -htAoHd`@!>∪π"
nVn<Z0⊃H30∂rm ', 16)8ε~∧@@@@@@@@@Z@j@Rβ←IIαA∨;t∧$b∩hn]Yλλ∧∧λλλ∧∧βP 12)0⊗~(@@@@@@@@@AK]⊂p4$∧ααα∧∧ααα∞}&O&↑8
∞4p∞g!cidX↓YK@9KX4)↓α↓↓↓↓α↓↓β↔v#3'lQP@$λλλ∧∧λλλ∧8π2εBα @∃YgJ~(@@@@@@@@↓EKOSαp4)↓α↓↓↓↓α↓↓β'2β⊂⊗O,8
↑\[p→λ∀⊂
@→Seghαβ↔KK|ε"ε@{H⊂~~4yP ,ine *)
∀@@@@@@@@@AaQKαp4)↓α↓↓↓↓α↓↓↓↓∧∧&.z;C!⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂1`/np
KeQ]`↔\,W%≤⎇≤ED≠→0↔⊂64`.enumber, 4, nuMer`∪F$p4$∧ααα∧∧ααα∧∧π?∪U e@⊂⊂⊂⊂ T⊂⊂∩$p4$∧ααα∧∧ααα∧∧ε -βy⊂ 81 :=bAi↑↓S]@3,¬f >~λ⊂∩≠P9z9⊗v2w + p #t@t`5∧¬⊗v@~;Y+|_n@;
@1K\@TtAP∪↔p∧αZε≥mF.v|Mβ@1 ¬⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≥y0 `)∃`∂SKL¬f 5≤⎇≤ED≠→0↔
]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ2p∞dline 64⊂ ↓↓α↓↓↓↓α↓↓↓β4¬↔.⎇→0→≤αh∂d@hzAMC1`∂+αc"D∧λλλ∧∧λλλ∧∧≤⎇≤KXh
.nbhλ@tt@`v~(@@@@@@@@@AYKαq↓i@Tε`hR∧∧ααα∧∧ααα∧λ -l∞c"D∧λλλ∧∧λλλ<<y(
d→~0≠λ_X⊂⊂≠pε~∀@@@@@@@@@`t@l~∀@@@@@@@@@@Dp β←⊂ε∪αB⎇\↔,z;@⊂λ⊂⊂∪@, 6);
λ∧@@@@@@@@@@@⊂π"π|L _
⊂πo`@QS←\@@@NXh %@1Q"αα∧∧ααα∧∧ααβ4εH∞}L,
∧}_8 0Yβra`!αA↓:βλ∞%↔c"H∧∧λλλ∧∧λλλ∧ε∞H⊂≠\α5('for`~@≤X@hRl~∀@@@@@@@@@@Tp β←⊂ε∪αB|∧p∩[2qz '0@lRv4⊂ ↓↓α↓↓↓↓α↓↓↓↓3Qβ@?&⊂¬∧βyw`2ti`≥I∃p@NXrR`,hQ↓↓↓α↓↓↓↓α↓↓↓]Rβ←IU@∧v≡␈]nB:@λ *'F@
8: wr10 ⊂O%]IK]P@@@@≤X@lRl~∀@@@@@@@@@@dp β←α
%∧βyut\⊂∪V⊂
∀X
10: p∂db@P@∨?,εGπ=λλ∧∧ kλε@∀X
11hA`∨I*A∨'≠∧εW"hε⊂~J]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ_Y≥⊂≥y~T'rese@PNP@j$r~)α↓↓↓↓α↓↓↓↓αβ↔;⊃Xh ∩α∧∧ααα∧∧απ|L _
⊂π e@I` ?'$αααuDβBKαc"D∧λλλ∧∧λλλ∞}L,
∧t→<\M}L¬⊂⊂λ⊃P 8);
@8@tjA8AP↔|@λε⊗λ
FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ4s⊂ . 8 %0 the@8~∀@@@@@@@@@Aα≠πO∃∧qβ/_hQ↓↓↓α↓↓↓↓α↓↓↓↓β ` (αHλ∧∧λλλ∧∧λλλ∧∧λλ_L\z;C!∧λλλ∧∧λλλ∧∧λλλ∧∧≠→3DπLεP ,en +bv~∀@@@@@@@@@@@@↓oSiPαβ@∨'+=F.uβ(⊃
q Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧Y9z-a Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧h∞O$<\[n_X
nbl := cha`%]SAiP4⊂@@@@@@@@@@@@@@Aα+;⊂4R↓↓↓↓α↓↓↓↓α↓↓↓↓αβ↔;⊃Xh!↓↓α↓↓↓↓α↓↓↓↓α↓Iiβ?⊃EA↓>k'OOL¬f 4λ∧P∪K⊂≤T]CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ→]⊂ 7p∧d`P≥k]KCQGQKHαβGW∨&)↓↓↓α↓≥1↓ )%l4R↓↓↓↓α↓↓↓↓α↓↓↓↓ π"π?&"αB|_9l]];8L↑H≥≠mt≠_<L|αSV⊂_∀]FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂
]
begiN
wr20 ⊂OU]IKMαK;↔⊃∧[↔/∧λ'.YY)eDL
'1"Hλ∧∧λλλ∧∧λλλ∧∧λλ∃n~T∪yλ⊂⊂⊂∪K⊂_TFB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂2w2∞FE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂≠⊂~
λ be@≥S\
∀@@@@@@@@@@@@↓odd` OkMW9←o\A⊃SeKGβ#'[∃R↓↓≥Dε∪JKαc"D∧λλλ∧∧λλλ∧∧λλλ∧Y|@⊂≡_P∃≡H_P:7H_X⊂ $o
α begin α h K\α↓`∪@(≠⊂∩[⊂∃P_NFA⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ;tz4λ9z1-[2s.@ do
Begin
λ c := erbop∧ba7`c:f~(@@@@@@@@@@@@@@@@↓]E@1βQuβ∂FC←''# $$∧ααα∧∧ααα∧∧ααα∧∧αααYf H$∧ααα∧∧ααα∧∧ααα∧∧αε.lAPBα∧∧ααα∧∧ααα∧∧ααε]lCXh$∧ααα∧∧ααα∧∧ααβw$π?∪&¬α>⊗≤@λ
n990→~qP3'\4¬ # _@Dh %@1Q"αα∧∧ααα∧∧ααα∧πβ@@ Hλ∧∧λλλ∧∧λλλ∧∧λλ⊂⊃→stwεB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂;y20('hyphenatign↓]KKI∃Ht@Nαa↓IAKX4)↓α↓↓↓↓α↓↓↓↓α↓↓↓β4{@∩π∧⊂λπ≤P⊂@ th∞Ao=aIYK9OiPA⊃↑~∧@@@@@@@@@@@@@ASLAαc↔9↓bβ7πc∨#@⊗NβY{]Y⎇~∧∞~→3AQHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧_Y1m≥@εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂ ,en := henV@bv4∀@@@@@@@@@@@@@@@AgiEmYKM:α↓a`*∞⎇w⊗%?ε∃hh$∧ααα∧∧ααα∧∧ααα∧∧αααYf H$∧ααα∧∧ααα∧∧ααα∧λVv#1Q"αα∧∧ααα∧∧ααα∧π∪Rπ}"#αB|,⊗"πLZ&nNβX;∧∞≤∧x % ' 17);
10*
λ begin
wr20('must be @%\AS]%iSCX↓HN@1β⊃A%LhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓β←I∪↓!∨'⊗+∂S'6)β∨K␈+A↓↓α↓↓↓≥b↓EQ∧hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓β↔≠ π0hR∧∧ααα∧∧ααα∧∧αβ↔!PRα∧∧ααα∧∧ααα∧∧ααε,\vNpQ$ααα∧∧ααα∧∧ααα∧∧π?∪&¬α:⊗←6/πD εo/>@ε⊗*h
.∪P 20)3
wr5('st ' _@HR~∧@@@@@@@@@@@@A∃]Hv~(@@@@@@@@@@@@Ddt~∀@@@@@@@@@@@@↓EKOS8~∀@@@@@@@@@@@@AoHd`@O⊃SeKGQSmJA9←hAC1YP∨←*91↓IαIl4)α↓↓↓↓α↓↓↓↓α↓↓↓↓π;@∪*∧|CRα∧∧rbβ5↔0hR∧∧ααα∧∧ααα∧∧αααiwαπε⊂βS@(λ ⊂≥5P_Xλ27FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂12YtsεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂6"[⊂≥≡P≠2w⊂∃H_]FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂;t]4⊂9z≤α[len] do
begin
c := e@IeWdbA7pc:l~∀@@@@@@@@@@@@@@@A]E0@tzA
QCeo%IiP~(@@@@@@@@@@@@@@@@↓K]H~(@@@@@@@@@@@@@@AK9H~∀@@@@@@@@@@@@Aα+;⊃lhQ↓↓↓α↓↓↓↓α↓↓↓↓β Mh∀R↓↓↓↓α↓↓↓↓α↓↓↓↓αβ↔∨Lp4)↓α↓↓↓↓α↓↓↓↓α↓↓↓β?⊃IA↓>)βCM#∂!βo+OQβ⊗)↓EAα91↓IαIl4)α↓↓↓↓α↓↓↓↓α↓↓↓↓π;@∪*∧⎇w∩β⊗$rbβU⊃PRα∧∧ααα∧∧ααα∧∧ααε]lCXh$∧ααα∧∧ααα∧∧ααε]l@hR∧∧ααα∧∧ααε]HlQ Hλ∧∧λλλ∧∧λλλ,9z;AQHλλ∧∧λλλ∧∧λλ_l≡y(≠D
yC"D∧λλλ∧∧λλλ∧∧λλ
&↔H≥|FU zy,↑λ c∧ε
.c!$λλλ∧∧λλλ∧∧λλλεVNH⊂≠\α20('right margin ', 12);
53: wr20('ledt margin ', 11);
54: wr5('width', 5);
55: wr10('indent ', 6)3
56: wr20 ⊂O9k[EKHAoSIQP@@@@@@@≤X@bd$r~∀@@@@@@@@@@@jnβQβ←I*A∨O/M↓↓≥⊃β!%l4R↓↓↓↓α↓↓↓↓α↓↓↓↓+Aiβ←∪ A!∨f+∪Qβ>K∪S!:a↓EAKX4)↓α↓↓↓↓α↓↓↓↓α↓↓UeRβ←IEαA∨7π⊗;'9↓α↓↓≥⊃β1%l4R↓↓↓↓α↓↓↓↓α↓↓↓↓3↓iβ←∪⊃A!∨∧∧⊗>
9vg∞]`λ∧∧λλλ∧∧λ c∧ε,*.aQHλλ∧∧λλλ∧∧λλλ∧εL.H∞}LL
∧}Z9z∞D≥z9∞Mλλλ∧∧λλλ∧∧hε⊂_LT]FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂≠≥⊂;y_⊂∪y[y:⊂![v:vwλ⊂⊂⊂⊂λ⊂⊂⊂∪K⊂_X@)9
64hAgdj OgQSα3Q
DεRKXQ$ααα∧∧ααα∧∧αααεfSBπ}"#αB⎇*W∂&≤i⊗≡∂M→vrεM→VO"∧qBβα*.aQHλλ∧∧λλλ∧∧λλλ∧εMNH∞}L,
∧}|_8m≥Yhλ∧∧hε⊂≠J]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂2`.d;
sr5(' of # _@PRv~∀@@@@@@@@ASLAα+@↔⊗βx[F∀∂λ∧∞~→0↔βE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ12st[ε@
wb∃(# ~@@@NXbR`,hQ↓↓↓α↓↓↓↓α↓↓↓↓∧+@↔⊗βx 7P≥≡PP2y9≠y0∞ "4⊂@@@@@@@@@@@↓K]Hv4⊂ ↓↓α↓↓↓↓α↓↓↓β≤{;K↔↔#;G\,W%≤⎇≤ED≠→0↔⊂2y9≠y0∞ "αa↓ADλN]9<Z,5,¬FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂;q10(' @%`
βS|¬rαα∧p∧πλ.c!∧¬∀@@@@@@@@@↓S@→β,ε'-βy1`-all @QQK@9¬;@∪*∧}6n∞MDrbβU⊃P@$λλλ∧∧λλλ∧∧λ→0⊗≤p¬ wr5('l@¬eOJNαa↓U%Xh ∩α∧∧ααα∧∧ααα∞}#*BuDααα∧p∧εJ.c!⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂1`/nrertnq`≠E∃` #O'⊃1β3,¬bbε↑.&␈⊗βH , 0 _AαsW7↔⊗K
%@1Q"αα∧∧ααα∧∧ααπ|∧@~J⊂π uS
@A` ><X ∞↑Y(⊂≠_v4r0]2P∀* p
CDαβ;@.β(∞D
8π:2Yβ`dvαβ7'eH,∨λε2`2p∧@tAαK;@&\|W$λ¬∀P∞β
∀~(~∀@@AEKO%\@@!Rβ[πM_ ≡→(
E⊃ ¬⊂⊂λ⊂⊂⊂ %p¬e@?⊗qE↓ih∧εw9(
FBα errorsmalhλ@TtAP≠Wh∧βbε]_G⊃ Hλ∧∧λλ⊂∀Yα errorsmalhλAi!K\4R↓↓↓↓α↓↓β,∧vNpβ"H∧∧λλλ∧∧≠]3$πLεP -in0⊗~(@@@@@@AKβ∪@⊗@|[@→λ≥_
Num0⊗~(@@@@@@AKβ∪@⊗@|J→.9∀FEλ⊂⊂⊂⊂λ⊂⊂2`.d ∀@@@@A∃YgJA%H β;.i↓iβnaβSF+8$$∧ααα∧∧αε⊗\⎇⊗pHαHλ∧∧λλλ∧
β:v@ 8∧p∃βnal4R↓↓↓↓α↓↓β↔↔∪?Kd∧@⊂∞α8
A]UZv~∀@@@@@AKeI←dQKβ∪@∩Hβ"H∧∧λλλ∧∧→;Y↓QHλλ∧9Y⊂
∃⊂; [4r0z→P⊂
) 9
(
---
---------
------------------------------- ")
λ ((@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DR4∀@@PαQ↓↓↓α↓↓↓↓α↓βO↔≤¬vv&≡/∩εNm_
≤;~6L≡~;sD∧λλλ∧∧λλλ∧∧λ¬∀FBα ((@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DR4⊂@@PαQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓ Hh!↓↓@¬"αjUQRjjUQRjJUQRjjUQRjJUURjjUQRjJUQRjjUP%U++#%Tλ¬∀FBα ∀PαQ↓↓↓αβK↔≥m↔&N≥H
/,( ⊂≤αe-i@9SiSC1SuJAα;3 >,≥Bπ⊗≤-⊗∞⊗β→4e@∧¬∀@(R~(hP4)↓∧επε@xy0∩≥y2P 2ei`≥Sβ#'π∪Lπ&+XQ!P@$λλλ∞l<C"D∧λλλ∧∞H⊂∩~y2q`48ε@@!Rβ∪'K,∧7&OlTεf@{|λ
≥Y→0≤λ∃∀FEλ⊂⊂⊂⊂λ<_]⊂~w:2cYy_ (* lo@=`AS]⊃Kp@T$~∀4RA)↓↓α↓β'm_
@4πrmZAS]%iSCYαKk∃β&+∪πWdεBε6β|[%@∧@
*)
∀~(~∀@@Aae←α≠↔βW⊗)β'≠LεF -βy6MCE
var
ded¬CkYβ!`∩π≤6@<αr⊂ !p¬eCr↓0
E9pεC¬@(≠p∪λ1t0y∞β ⊂T↓IKMCUY`⊃β4{C *¬%⊂hR∧∧ααα∧∧πCαH⊂∀[8∧egep∧v@PαQβ#?⎇↓β'lLWBααJ#!∧@
begin * in`∪i→←e@5αQ$4$∧ααα∧∧αε&\hλ.]≥λ∞GT v`↔KβPλFLI
P≥uyC+"βkkdYYQεH⊃('
Q⊂⊗Aβ+ ≡←t@@@NβX4)↓α↓↓↓↓αβ≠ ?$λ∞ε∀∞O ε∀≥≠hεFλ→≠dXπy6Vβx1]p `*≡6≡N≤9ε∂∩LV ,=;⊂~⊗βx1]$p4$∧ααα∧∧αε6βx[-L8π3z~⊂≥≡@
_≥FEλ⊂⊂⊂⊂λ⊂⊂3 /p¬P↔mH -l⎇~⊂∞α8
@@βX4)↓α↓↓↓↓αβ⊂⊗@|[:-l→>⊂∞α8
@@λπ0hR∧∧ααα∧∧π&/∞MF.v}MαβSTε∪@1 Hλ∧∧λλλ∧∞α2|:~w22`8 :5 18ε~∧@@@@@A`∪↔G#FmFh¬f~β'Pλ-α0w5NFA⊂⊂λ⊂⊂⊂⊂λ8∧extpπ6c:αs;Dπ#jβ∧εc!∧λλλ∧∧→;Y∧¬λH⊂∀[4z3'\4¬ *) ;
λ∧P@)α↓↓↓↓∧¬⊗vOM→gααT ⊗vOM_⊗fO,TεNw∞X
∧∞y=≥
≥Y|kAQH
J!Q@εEεB⊂⊂⊂⊂≤93q`%dpeJ↓S]@'&K;AlhP4)↓α↓↓↓β4∧↔@ ¬⊂⊂λ⊂⊂⊂⊂λ<_]⊂~w:2cYy_ (* lo@=`AS]⊃Kp@T$~∀4Ph ∩α∧∧ααε,XvNr¬
D
8π4`4inp *)
∀@@@@@AY←o∃`∂πα8 $πM(∃∞8¬e+
λ @1←oKe⊃Sd@@Siβ@',XSHh$∧ααα∧∧απ∞βY→.24y∞≤¬ f@¬YgJ@Xh ∩α∧∧ααα∧
Vv&↑-FNvα;YdπM(⊂∪_v9r]CE⊂⊂⊂λ⊂⊂⊂⊂~p¬ep@%]`@tt@`v~(@@@@@@AKβCC#'≤KSL≥f@4∞O
nαv≥FB⊂⊂⊂⊂λ⊂⊂⊂!Xyrq`( :5 Nul;
dip¬GP@hzAaKβ∪'?⊃Xh!↓↓α↓↓↓↓∧¬πOεXDπM(∪N]∞c"D∧λλλ∧∧λ≥3LL<Xr≡H
O$
];∞aQHλλ∧∧λλλ
≥]z0∩≥4⊂≥≡H_ZX≥CE⊂⊂⊂λ⊂⊂⊂⊂→4πr X1 := 0 to maxkeep do saf@∃S]a7`c:]I∃H'lX ∧πLεP#_v9r]CE⊂⊂⊂λ⊂⊂⊂⊂~w89`]2BE⊂λ⊂⊂⊂⊂→w2⊂∀
⊂4w4]4s8⊂
∀P⊂≠
λ ∀PαQ↓↓↓α↓β'≠LεFNw∧¬RεNm_
≤;~6LT~;↑∧∞X<Z,≤[→4ea ¬⊂∃
FAεEβE⊂⊂⊂λ897aYp:y2H4p∞i@QS]pv4∀∩)α↓↓↓↓π3πHQ$ααα∧∧ααε≡π"πε≥oε.wN/∪Zαα
H∞MβP24\βpose ifdex entpies *)¬
α begin (* i@9SiS]`@TR~(@@@@@@Ao!SYJA%]qECMJ@x|↓]SHAα#<4)α↓↓↓↓α↓↓↓β⊗+↔'aQ"αα∧∧ααα∧∧εOαπ'RεNo&∂≡U1PRα∧∧ααα∧∧αεNo&∂≡Tπ#jε≥oε⊗∂<[bv@Y>≥π1"Hλ∧∧λλλ∧∧λ→~.x7yrJ4x∀FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ2s2;
inxlast := n`∪X4⊂@@@@AK]⊂@PDAαK;'SNsa↓%∀βXh!Q"BR∧∧ααα
→fO&\≡"αj
_M≡~8;
∨Y(∪,≡Yz3D∞y=≥
≥Y|kAQH
J!QA"C!∧λλλ∞∞Yxq,Nαy2P~w0z6Xy_
vAr α x1: integer3 (* lo@=`AS]⊃Kp@T$~∀
∀4⊂@@@@AEK≥S\@P(AS]Sβ#7πIαQ$4 α↓↓↓↓α↓β/↔,εεn∂$π#jβ∧εc!∧λλλ∧∧λλ⊂⊗→pεtmapginpp∃↓βX4)↓α↓↓↓↓αβC'∨G#7πK>K9↓ij↓P≠β1Q"αα∧∧αααhn⊂8⊂@ 88
@@↓iP≥βnc/↔,εαε&t∞6∂6]\↔¬←∧∧7%@22s )ned := falq`
f~(@@@@@@A]
QCe@~↓a`*∧∧∞aQHλλ∧∧λλλ
}=≠⊂∀[2mXnKαh
EXtp∃↓απ0hR∧∧ααα∧∧εn∂,8λ.l#"H∧∧λλλ]Yλ
¬$~;Z.Mαpy *) 64⊂∩)@¬"αα∧∧αεNβZ0~≠x:⊂⊗H⊂4w4]4pv )ze o@AiS@?p∧π<αz24[3yWεB⊂⊂
)
λ ∀~(@@@AAaP∨∂,∧G/⊗T ⊗vOM}π#XQ!PBα∧∧ααπl≡ hR∧∧ααα∧∧πCαH⊂∀[82sr\α; (
looP i`≥I∃p@DR4∀∩(hQ↓↓↓α↓β↔>K9↓!Rβ';≡Mwπ"¬%⊂hR∧∧ααα∧∧ε↑9<∪n∞λ∞O$ε∞c"D∧λλλ∧∧λ≤⊂→~w:2y≤4πrs :8
AiIkB`,hQ↓↓↓α↓↓↓β4K3 "π'Rπ'.XSHh$∧ααα∧∧αε⊗≤M'/∨M_gJβ'TβXQ$ααα∧∧ααεLXg&W↑8
≤↑(∞GT≥≤],Wc"H∧∧λλλ∧∧≠=;∞M<≠⊂∩X40w5\β := true;
ensuRe2 := pruE9
α rightjus@QSMr@hzAieUJv~∀@@@@@Aga¬GB@Tt@`v~(@@@@@@Ag!SEiKβ↓↓iuε3π3O+X4)↓α↓↓↓↓αβ≠ ?$β
β'TβαπMtεn∂
<V/αMrπ≡≡h -}≥⊗}ε≠+Y→,@4s2`$ := False;
opts@¬mJ~∀@@@@↓K]H@ TAS]%iP∨C ↓)%↓β1PPH%
D∧λλλ∧
9Z0~≠zz⊗@ initializE output s@∃iaS]≥f\4R↓)$Q!PPH$∧ααπ∞-v≡.NZ&*ε≥m↔&@⎇=∞aQ@εEεB⊂⊂⊂⊂λ⊂12sZw⊂∀¬λ4s4`4out *)
∀@@@@@AE@3∞s/∂?.sQ↓ij↓Al4R↓↓↓↓α↓↓βf;/3Ls∃↓ijβ⊂⊗∞β_p∩NFE⊂⊂λ⊂⊂⊂⊂λ64w2Xwzw:λ≥≡P⊗H_YFEλ⊂⊂⊂⊂λ⊂⊂:2\4¬analtp∪aα)↓iu∧¬Gπ#1Q"αα∧∧ααα9ε∂↔⎇_G&Bπ'Rβαc"D∧λλλ∧∧λ→0∃→qz⊂≥∂P30v≤p¬0⊗~(@@@@@@AaαWO∃βQuβ≠∞c@≡αc"D∧λλλ∧∧λ≤r
≤]λ∞GTλ
FBα @U]IKe¬mCCXtp∃β'∪W+αc"D∧λλλ∧∧λ≠p~]9tr:~⊂≥≡P≠p|7`7i` iP4⊂ ↓↓α↓↓β↔v!↓!$λ
-m=≠u.Dλ¬∀P∞FEεE
∃⊂⊂⊂λ⊂4w4]80q - initial@%uJAa¬`π∨⊗C!β≤∧W'~;YnU
*)~∀4⊂⊂∀$∧ααπ∞-v≡9→0→→P4w4]80q;
~∀@@@@↓mCd~(@@@@@@Apβ `∩ε≥nF.y<@≥H∀⊂
@1←←`AαK;∪↔@∧αRHβ"C!↓α@
@ K@∨'p∧αBR
_M≡≤_<D¬J#"D∧λλλ∧∧λ~y,↑≤_<DπLεP_∞β
∀@@@@@AaC@⊗∂?Ww!↓iUβ↓d4 α↓↓↓↓α↓βCπα,⊗≡F≤∧@⊂∞α8
A]UXv~∀@@@@@AY←α≠ ≡9→→-nλ
O$ε∞c"D∧λλλ∧∧λ≠]-\Y<Z-lh
O$
Xπw:[q2y4[3]FEλ⊂⊂⊂⊂λ⊂⊂8 !p¬CaC≥J@tz`v~∀@@@@@AaCICgWSβ↓↓i@TεβHh$∧ααα∧∧αε@];8L↑]z1∞Mλ∞O$εnc"D∧λλλ∧∧λ→P↔\α p⊂@λ∧β@'αP⊂⊂≥4π maxkee@@AI↑AMCmKaαBoaα≠R`,→9P∀[2r⊂≥∂P30v≤β`
`,hQ↓↓↓α↓↓↓β∧∧↔.x9P∩CE⊂⊂⊂λ⊂⊂2`.d * in`∪iACd@T$@v~∀4⊂⊂∀$∧ααε,X m≥H
∃λ92t`.itialize *)
∀@@@@Aα3?Iβ ∧β@'αP19→P:7P~v6⊂ $o
α if @⊂AS@9∧εvFN=λ∞M→;C!⊂⊂⊂⊂λ⊂⊂⊂⊂λ1pp∪@∀AHA←α04)↓α↓↓↓↓α↓↓↓↓∧∧',,¬⊂≥CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂ #om0∀@l~∀@@@@@@@@@Aα≠?U@$λ≤βrw:[q2y 8∧p∃↓α⊂∞aQHλλ∧∧λλλ∧∧λλ⊂∪≤αi0∀AαK;'S4¬w-αX
ind8∧@v~(@@@@@@@@@AS]@p β'vKS'nπ0hR∧∧ααα∧∧ααα∧λ
-o∞H⊂∀[4z4`.x;
hi`(βQ↓l4R↓↓↓↓α↓↓↓↓α↓β .≤∧@≥λ4p∞i@Q[Cdv4⊂ ↓↓α↓↓↓↓α↓↓↓β|επ#R
_M≡≠xλ 48ε~)α↓↓↓↓α↓↓↓↓αβ?WQRβ';≤Mw/#1Q"αα∧∧ααα∧∧ααπ≤s@$∞c"D∧λλλ∧∧λλλ∧∧≤_<G⊂4w4]80p∩l~∀@@@@@@@@@Aβ∪↔MiβX4)↓α↓↓↓↓α↓↓↓↓∧ε6.c!Q"αα∧∧ααα∧∧ααα∧λ M}H≡_H≥_
0 po @5CqaC≥JAI↑↓`∂↔LXλnM8πw-↑_h
:= t`%UJv~∀@@@@@@@@AgWRh@v~∀@@@@@@@@Ag←@⊂π"βXQ$ααα∧∧ααα∧∧απ≡,¬≥λ8∧idlelength[s@UE`∪'αMF-j∧εO$ε∞c"D∧λλλ∧∧λλλ∧∧≥_
6∞α ti@QYK@3,¬f >~⊂
vXtp∞tith Kh∧β@'αP⊂⊂;
@U]Ht@l~∀@@@@@@@@@Aβ;↔=iβX4)↓α↓↓↓↓α↓↓↓↓∧∧WF≠$π0hR∧∧ααα∧∧ααα∧λ
-Mα≥εEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂2w2βE⊂⊂⊂λ2p∞dPTAe∃S]@'&Kπ3'T∧RαR∀π0hPβ"@↓Dλ
∃λ⊗VV@--)--4ZRZZ4ZZZZαi5%5hi5%5h¬RjJUQRjJUP%U++#%Tλ¬∀FBα ((@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)Hh!↓↓@¬"ααclasS;
var
@
PtACMGSRvPTASαs∪↔aπ3πK≤≤&f*¬%⊂hR∧∧ααα∧∧ε.o∞O∪Bε=↔,{_<n]P∀¬λ0r6⊂→4rv2≤P0q2H30v9YP⊃∀FB∧AεEλ⊂⊂⊂⊂λ12st[⊂⊂∃⊂~w0z1[0yyP
∀@
wi@QPAK[AirAI<~∀@@@@@@@AEK≥S\4R↓↓↓↓α↓↓↓↓∧¬F/'LXDπO(⊃L≥≤y.aQHλλ∧∧λλλ∧∧→~9m≡λ∞O$X;⊂→Y]FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂ &or`≠GαCπI↓Siβ≠πe≠∃l4R↓↓↓↓α↓↓↓↓∧¬wπ&≥yf≡F≤∧@⊂∞≤¬ f@¬YgJ@Xh ∩α∧∧ααα∧∧αε←↑Nπ/&=↔αβ'Pε ,8ε0∪@∀p4 α↓↓↓↓α↓↓↓βn@⊗>≥l6F∂$π#jεl≥G<αYFEλ⊂⊂⊂⊂λ⊂⊂⊂⊂≤0y0s\αaphchar := falpπ@∃@1Q"αα∧∧ααα∧∧π∞␈.M⊗wF=↔αβ'Tε ,8ε0∪@∀p4 α↓↓↓↓α↓↓↓β∧¬G/≡|-VNw↑4βC@(→P⊂[9rP≠
λ∧@@@@@@@Ack←β#∃↓ijβ⊂⊗∞β_q'⊃ Hλ∧∧λλλ∧∧λ≠]-\Xπy6H≥~P#_v9r]CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂2w2∞FE⊂⊂λ⊂⊂⊂⊂λ33y ch := jul th∞AI∃XAI↑↓GYCGβ~g∂"j↓a`*X.∞≡.c!∧λλλ∧∧λλ⊂∪≠y⊂1dλ≥~P H:7P : do Class[ch].lette@H@tzAQ`@.U1PBα∧∧ααα∧λf␈∩8
∧πM(∀m\;≠⊂$∞≠h∀m\;≠⊗D≠h⊂mL<|vl=↔+[↑≥→0→λ≥~P*≤αpJv4∀@@@@@@A→←dAG @tjAiKeNAQ↑A]S9JAI↑↓GYCGβ~g∂"hs∪'∨LεBβST
Gπ9*c!$λλλ∧∧λλ⊂mL<|vl;+Y[n
αqt0\⊂≥≡P≥9:r]CE⊂⊂⊂λ⊂⊂⊂⊂_v0qiVp.W3≠y0
c@!Cd@ttAaek∀r~∀@@@@@AGYCMc7K~αs≠ ?-\6F∂$π#jπN.V+XQ$ααα∧∧ααε=Hλ.≡v{↔%L[|[,=_8 ∞≤¬ tru`
`,hQ↓↓↓α↓↓↓β≤cπON←αu+≠⎇∪7∂#∂⊃↓iU¬#C@.W1PRα∧∧ααα∧λ6f∂>;7≥jliw⊗@8z_.∧∞O(∞N]9.aQHλλ∧∧λλλ=_<p→Vz.W3≠y0
c@!Cd@TtAaek∀r~∀@@@@@AGYCMc7o:9MP∨Kn≠#πIβQuβS↔+∃l4R↓↓↓↓α↓↓β∂d∧↔>vz_.t.W3≠y0
c@!Cd@@SiβCK,∧SHh$∧ααα∧∧αε≡L≡7;{_\L≤zy0~↔Tεfo@I[GQCH@tjAQ`@.U1PBα∧∧ααα∧λλmL<|vn190qZp¬t]∞dh∂e[
QCd@hzAieUJv~∀@@@@@AGYα@∨≥>8≡z⊂∞W→5y6qZ0y⊂≥∂P:9:Y]FE⊂λ⊂⊂⊂⊂λ⊂1v !pπg7IEk←iKtYMOE5GQC@⊂∧βC@(≥≤N\αX
c@1Cgg7Mck@?&*u 6mxM\z_<DπLεP 4p¬`↔∃β1P@$λλλ∧∧λλ⊂⊃[0yymX4∧ank](
M←β∪7∂#∂⊃↓i@Tλ
∞8¬e+
λ∧@@@@@@Aα≠3πO≥[
`*m_N∞αz1`(ar 4tA`∪KαX 'F@
claspπ7Gh¬fNw∞X
=_8 8∧p∃β'∪W+αc"D∧λλλ∧∧λ_p⊗_yymr↔Tε`∪]AkiGQ¬` ↓ihβSKW+X4)↓α↓↓↓↓αβ∂3πα8kt.W4[8:z1Z0y⊂≥∂P:1:Y]FE⊂λ⊂⊂⊂⊂λ⊂1v !pπg7WtX'≠π+S∂#∂⊃↓i@Tλ
∞8¬e+
λ∧@@@@@@Aα≠3πO≥[Vu;L¬gπ=_p∀_y⊂∃≡H8∧re@∀p4 α↓↓↓↓α↓β∂3∂≠@≥←{PM≥\≥0~_t0p∩p `*∞N'.,¬FEλ⊂⊂⊂⊂λ⊂⊂1`,ass[bla`≥WtX'≠¬+S∂#∂⊃↓i@Tλ
∞8¬e+
λ @
YCggmS:][¬aOS]
QCd@hzAieUJv~∀@@@@@AGYα@∨≥=KR`-αpq3Zw1t0\α :=true;
cla`'β~`∨∃β+[,≡Yz0↔_t0p∩p `*∞N'.,¬FEλ⊂⊂⊂⊂λ⊂⊂1`,assKbla`≥WtX .≤,vNv=↔$∞O ∞N]9.aQHλλ∧∧λλλ=_8 `3Y` 5v{CC'|s∂#πα λπ≤¬ tru`
`,hQ↓↓↓α↓↓↓β≤¬F∂∨9<ej@Xπp 4ionc@!Cd@@Siβ@',¬0∩Nβ
α claspπ7U:9←aiSα{;∂#∂⊃↓iU∧εG.αrP≠
λ Class[i].oPtignchar := true;
cl@¬`∂Noei0⊗@|≥~-⎇Xz_.∧∞O(∞N]9.aQHλλ∧∧λλλ=_<p→VvnW7\:4ww_t0q :8
AiIkB`,hQ↓↓↓α↓↓↓β≤cπON←αu+}λ
≥{Xr≡H
O$∞≤]1'⊃"Hλ∧∧λλλ∧{_<n≠|W#M}≥~3mlz_<DπO(⊂~≤8¬e+
class[s].optignchar := true;
cl@¬cg7kt]P∨C&K?;∂FA↓ijβSKW+X4)↓α↓↓↓↓αβ∂3π≤ε5←=Umwπ&≥⎇f≡F≤ λππαP:9≥pX
c@1Cgg7 YC@;]i3 ?∞M⊗}v=↔αβ'Tπ'↔\W0hR∧∧ααα∧∧ε≡f≤8k≤Y_;M≠+[p_≥4sw1Z0y⊂≥∂P:9:Y]FE⊂λ⊂⊂⊂⊂λ⊂1v !pπg7KtYP∨W'βWS∂F@∩β'Tπ'↔\W0hR∧∧ααα∧∧ε≡f≤∧p→Vβp].outpuTcha`$α↓a`*∞N'.αc"D∧λλλ∧∧λ_p⊗_yymyWU0∂u@Qa`↔S≤¬ε∂∩¬'Rππ,X 'FA⊂⊂λ⊂⊂⊂⊂λ1v0y\β[uM∞outp@UiGQCH@tjAQ`@.U1PBα∧∧ααα∧λ6f∂>;7=jmzW'π↑L6F∂$π#jπL.V+XQ$ααα∧∧ααε=Hλ.ymq6_w1n@.outp@UiGQCH@tzAQa`↔∃Xh!↓↓α↓↓↓↓∧≠3πO≥[∞u;εCπ∨⊗C#∂FI↓ijβSKW+X4)↓α↓↓↓↓αβ∂3π≤ε5↑∃β+\≡X9|L≡~_p∀_y⊂≥≡H:9:bNFE⊂⊂λ⊂⊂⊂⊂λ1v0y\β[i].paragpaphchar := true;
cl@¬`∂No]i3Cπ⊗↔Kπ∧C∂#πα λππαP:9≥p¬0⊗~(@@@@@@AG1Cgg79:P≠C∂∪π?,≡εF≡≡"βST
G.αrUFB⊂⊂⊂⊂λ⊂⊂⊂![0yym\.W8 \0sy0\41t0\⊂≥≡P≥9:r]CE⊂⊂⊂λ⊂⊂⊂⊂_v0q`3Xπg:]ACeCOICaQGαCπI↓SiβSK,)d4 α↓↓↓↓α↓β∂3∂≠FoVhsCπK∞;CπCF≠#πIβQuβS↔+∃l4R↓↓↓↓α↓↓β∂d∧↔∂≥<-F∞v;PN<X9n0x41Z0y⊂≥∂P:9:Y]FE⊂λ⊂⊂⊂⊂λ⊂1v !qs[l],¬g←eQS]qG!Cd@TtAaeK∀r~∀@@@@@AGYCM`∞o6jsO?K&K;c∂F@∩β'Tπ'↔\W0hR∧∧ααα∧∧ε≡f≤8kx.W9[y:4w≡1t0yλ≥~P*≤αqe+
λ Class[pX
]g=`@&≥oε≡F≤ λππαP:9≥p¬0⊗~(@@@@@@AG1Cgg7M:Ug←IiS]q
QCd@hzAieUJv~∀@@@@@AGYαGNo⊗cπ;.h¬g≡␈.M⊗wF=↔∩β'Tπ'↔\W0hR∧∧ααα∧∧ε≡f≡8k≡≠≥<kU\≠⊂~\wy6t[:yP≥∂P:9:Y]FE⊂λ⊂⊂⊂⊂λ⊂1v !qs[minusM∞plusopianus := true;
clas@M7Ick=iK:]Ek←iJtp∃β'∪W¬@1Q"αα∧∧ααα=F∂∨;>7∂.}LUj@\9;nL(∞O$∞≤]1'⊃"Hλ∧∧λλλ∧{_<n≠{W+Mn;9Sn-αP∃≡H:9:bNβ
clasq[smalhn]∞nqmf@=aP∃↓SiβSK,)d4)α↓↓↓↓α↓β∂3∂≠Fo2js;W74¬wε@(∞O$∞≤]0∩NFE⊂⊂λ⊂⊂⊂⊂λ1v0y\β[smalhl].nqmf@=aP∃↓SiβCK,)d4)α↓↓↓↓α↓β∂3∂≠FoJhs;G↔4¬w-αP∃≡H892bNFE⊂⊂λ⊂⊂⊂⊂λ1v0y\myvp[4∧r]∞nqmf@=aP∃↓SiβCK,∧SHh$∧ααα∧∧αε≡L≡7
↑-L⊗v]Umg.nmxMT∞O(∞N]9.aQHλλ∧∧λ→0↔→⊂⊂∃⊂~w0 tclass *) 64⊂λ4%
D∧λλλ∧
8π4`4clocKpε@@5∧¬⊗vOM_λ-M>Y(∞0{q`,ock @¬]HAo¬YP∪∂d¬v≡ZβC"D¬J#"AQ@εE⊂λ⊂⊂8 2ocedupe i@9SiGYα{∂/Mβ1P@!α@
@YCd4R↓↓↓↓α↓↓β
α⊂∞D<xp∀Z]P∀* p K]LAISO%hA←L↓oC@3d∧6f@xz`⊂
∀@
c $βQβπO≤¬⊗KZ¬
D
βw2`3 digit of wa`→Yα≠3 >=0λ¬% εE⊂λ⊂⊂⊂⊂λ⊂1P∪: asc@%Rv@PαQβ¬β|ε"παhn⊂0v@ or p@4@TR~(@@@@@@AgβKGS↔n≠3 >=0∞D8ε3 !8ε@@!Rβ@∨O>LVjε=Hl=h_<d∧βt4:mm0∃@≤ε2:ααJ#!⊂⊂⊂⊂λ⊂⊂⊂ 81: i@9iKOKβ⊃`~αα
H@p¬`≥Kβ∪π1βd¬v␈α
_LL>λ
E⊃ ¬εEβE⊂⊂⊂λ⊂⊂8 2ocedupe getp S[∀Q`≠π⊂∧π#R≥F ,*.c!∧¬∀~(@@@@@@AE∃H∂'aQ"αα∧∧ααα∧∧π&Nβ90→]0p
p(day, month, qeAp, hrpεP⊃βnK;MDλl\|j.aQHλλ∧∧λλλ∧∧≥⊗`_WP≥≡@_t9∀4≤αs div 10 + ord( ∞`NαI%l4R↓↓↓↓α↓↓↓↓∧εE@6TεP≥∂P1t9
499P≠wr⊂_L⊂⊂ @=`⊃↓8εα:J↔1P@$λλλ∧∧λλλ∧∞⊗lw$πLεP∪Kα#;
t[4]p `*8
∞∀6t`.pεAISβ1↓EAαYβ ?,@
∧v j*'F@
t[5] *= chr(mi`≥f↓[←H@D`@@-∧¬w,λ `_ TT]FBα p[6] :0~@≤X ;1Q"αα∧∧ααα∧∧π%[{Pλπ≤¬ c@!` #O,∧74→~0≠λ_X⊂∃H4πrd N`NR$p4$∧ααα∧∧ααα∞K3E@(λ
≡H1t9∀≤β`Gf↓[←H@D`@@-∧¬w,λ∧∪H TT]FBα @∃]Hv@ UOKiQS[JT$~∀4Ph ∩α∧∧ααε,X m≥H
∃λ4p∞i@QGY←Gα[@~ααJ#!⊂⊂⊂⊂λ⊂⊂⊂ 'etti@5JQgsβ≠S↔\8
|zj.aQHλλ∧∧λλλ@4πr @`b@tzα↓EβSz↓aβ∪zβ@⊗∂|8
|zp
|nP⊂~= h∂eHαC@∨O>LVn≡Mxλmmxλ #tRv~∀@@@@@AeC]GY←GαZ`≠Mβ(∞GT_[⊂⊂[5]FEλ⊂⊂⊂⊂λ⊂⊂90]qv7`#hπ6bat@t`5∧∧&f∞βZ`≥CE⊂⊂⊂λ⊂⊂⊂⊂_XP⊂~= ra`/
YP∨∂]YFu@1Q"αα∧∧ααα6"βSβ(⊂→_{qv /ck[ %tp4$∧ααα∧∧αε≠4π#jε↔1P@$λλλ∧∧λλ⊂⊃XyrP #1 of
λ∧@@@@@@@AuKe<pλ (αHλ∧∧λλλ∧∧λλλ
≤β⊂1Yλ≤¬ z@∃` :∞Mε.pβ"H∧∧λλλ∧∧λλλ∧∧λ_Y,@tp∞
@b@tzαβ?;∃β1P@$λλλ∧∧λλλ∧∧λλλ6Hλ
≡H8∧wo
λ∧@@@@@@@@@@@↓K]H~(@@@@@@@@@AKYβ≠∃β
α⊂λπ≤¬ blan`⊗@Xh ∩α∧∧ααα∧∧αε@{Y.AQHλλ∧∧λλλ∧∧λλ⊂∀Yα c $α↓uβS>yβ@&XDlh∞GT≤β"D∧λλλ∧∧λλλ∧∧→;⊂→YP4s⊂_Y⊂⊂≡↓i`∨=∧εFF.βC"D∧λλλ∧∧λλλ∧∧λλ⊂⊃→pπin
λ∧@@@@@@@@@@@↓Fb@@SiβL≥f@7c"H∧∧λλλ∧∧λλλ∧∧λ_lDπLεP #2 ~@Hp4$∧ααα∧∧ααα∧∧ααε4∧hπ≤¬ p
λ∧@@@@@@@@@@@↓K]Hv4⊂ ↓↓α↓↓↓↓α↓β@'⎇w hR∧∧ααα∧∧ααα∧λλL\βtwεBα i@_AFd@pzA←]∀AaQKαp4)↓α↓↓↓↓α↓↓↓↓α↓β↔>K8$$∧ααα∧∧ααα∧∧ααε4∧ ⊂∞α8
AE1C]@-β1P@$λλλ∧∧λλλ∧∧λλλ6Hλ
≡H1Y⊂⊗H→
e@9H⊂∀$∧ααα∧∧ααα∧∧ε.g<QP@$λλλ∧∧λλλ∧∧λλλ,9z0↔βE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ1XP≥∂P7w2Nβ
∀@@@@@@@@@@AF@⊂∧β@'αP1Yλ∃P⊂∩
λ∧@@@@@@@@@@@↓K]Hv4⊂ ↓↓α↓↓↓↓α↓↓↓β≠→↓i@Tλ↓QHλλ∧∧λλλ∧∧λλ⊂∩[2εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂ %nd;
walh GYα{∂.mα≠RβSβ(⊂⊃L]FE⊂λ⊂⊂⊂⊂λ⊂;pv≠1v7`#hπ6e:α↓`∪@(_lGF@
p∂CYαc∂3?≤¬5@6w(∞GT_{p⊗≠w_
walh GYα{∂.mαKRβSβ(⊂→_{qv /ck[ )tp4 α↓↓↓↓α↓β@>≥H=≠xp∃VX¬P~@hzAeC]GY←GαZe@-U1PBα∧∧ααα∧λ
l≥≠_p⊗≠qu`≠6] :=bh C],r~∧@@@@@A`∨πd¬F≡f|95@6βnP≥∂P1Q]CE⊂⊂⊂λ⊂⊂⊂⊂≥pr6 #lh∂GWlq0∃↓β'Rεkαc"D∧λλλ∧∧λ≥x-Mα1v /ck[)] :5 Bla`≥VβX4)↓α↓↓↓↓αβ←π∪d∧6f@xzvf⊗↔(∞GT_[⊂-mnc"D∧λλλ∧9Y⊂
∃⊂4`.itcl@=GWf@(R@v~(~∀PT@@@@ dt[5] := chr(zero + month mod 10);
dt[6] := '/';
dt[7] := chr(zero + day div 10);
dt[8] := chr(zero + day mod 10);
end; (*date*)
begin (* initdates *)
date(systemdate);
for x1 := 1 to 8 do rawdate[x1] := ord(systemdate[x1]);
rawdate[9] := blank;
rawdate[10] := blank;
thismonth := months[(rawdate[4] - zero) * 10 + rawdate[5] - zero];
nicedate[1] := rawdate[7];
nicedate[2] := rawdate[8];
nicedate[3] := blank;
nicedate[4] := thismonth[1];
nicedate[5] := thismonth[2];
nicedate[6] := thismonth[3];
nicedate[7] := blank;
nicedate[8] := rawdate[1];
nicedate[9] := rawdate[2];
nicedate[10] := blank
end (* initdates *) ;
(* initdirects - initialize the directs table.
*)
procedure initdirects;
(* onedirect - initialize one direct entry.
*
* param dir = directive.
a,b,c = 3 characters of directive name.
*)
procedure onedirect(dir: direct;
a, b, c: ascii);
begin (* onedirect *)
directs[dir][1] := a;
directs[dir][2] := b;
directs[dir][3] := c
end (* onedirect *) ;
begin (* initdirects *)
onedirect(bre, b, r, e);
onedirect(com, c, o, m);
onedirect(cou, c, o, u);
onedirect(frm, f, o, r);
onedirect(ind, i, n, d);
onedirect(inp, i, n, p);
onedirect(inx, i, n, x);
onedirect(lit, L, i, t);
onedirect(mar, m, a, r);
onedirect(opt, o, p, t);
onedirect(out, o, u, t);
onedirect(pag, p, a, g);
onedirect(par, p, a, r);
onedirect(res, r e, s);
onedirect(sel, s, e, l);
onedirect(ski, s, K, i);
onedirect(sor, s, o, r);
onedirect(sbt, S, u, b);
onedirect(ttl, t, i, t);
onedirect(und, u, n, d);
onedirect(weo, w, e, o);
onedirect(exc, e, x, c);
onedirect(ast, A, s, c);
onedirect(lpt, l, p, T);
onedirect(vtr, v, t, r);
onedirect(xer, x, e, r);
end (* initdirects *) ;
(* initmonths - initialize the months table.
*)
procedure initmonths;
(* onemonth - initialize one month name.
*
* param mon : month number.
* a,b,c : three letters of month name.
*)
procedure onemonth(mgn: integer;
a, b, c: ascii);
begin (* onemonth *)
months[mon][1] := a;
months[mon][2] := b;
months[mon][3] := c
end (* onemonth *) ;
begin (* initmonths *)
onemonth(1, j, smalla, smalln);
onemonth(2, f, smalle, smallb);
onemonth(3, M, smalla, smallr);
onemonth(4, a, smallp, smallr);
onemonth(5, m, smalla, smally);
onemonth(6, j, smallu, smalln);
onemonth(7, j, smallu, smalll);
onemonth(8, a, smallu, smalle);
onemonth(9, s, smalle, smallp);
onemonth(10, o, smallc, smallt);
onemonth(11, n, smallo, smallv);
onemonth(12, d, smalle, smallc)
end (* initmonths *) ;
begin (* initialize *)
initmonths; (* before initdates *)
initclass;
initclocks; (* before initdates *)
initdates;
initdirects;
csi;
getfilename(1, outfilename, exists);
if rsx then rewrite(outfile, outfilename, 'sy:.doc/var:256')
else rewrite(outfile, outfilename, '.doc');
currentfile := 1;
getnextfile(exists);
directline := false;
endofinput := false;
filecount := 0;
eol := true;
errorq := dalse;
gaps[0] := 1;
inchar := blank;
incolumn := 150;
inlength := 0;
inxbase := nil;
inxlast := nil;
linenumber := 0;
linenums := infile↑ in ['0'..'9'];
moreonleft := false;
nblanks := 0;
nchars := 0;
newinline := true;
newoutline := true;
newparagraph := true;
ngaps := 0;
nwords := 0;
outlength := 1;
outline[1].c := blank;
outline[1].nbl := 0;
reinitialize([bre..ill]);
end (* initialize *) ;
(* --------------------------------------------- *)
(* *)
(* PROSE *)
(* Main Program *)
(* *)
(* --------------------------------------------- *)
α
begin (* prose *)
initialize;
nextword;
while not endofinput do
begif
packword;
nexpwoRd
end;
break;
if linecount < inf@%]Sir↓iQK\4∀@@@@AEK≥S\~∀@@@@↓]Koa¬OJQS9MS]SQrRv~(@@@@AgKY∃GiS←97aCO∃]k[E∃e:@ttAiek∀v~∀@@@@A¬ImC]
KMOe4~∀@@@@AK9Hv~∀@@AS_AKee=efAi!K\AoISiKYαq#/W&3'3∃b↓≥αC⊗{O*↑'⊗←.4ε&/L\7&.EdrKXQ$αε.l@묬H≤⊂→≠yrP∃
P∪εE