ucblogo-6.1/ 0000775 0001750 0001750 00000000000 13601427050 011110 5 ustar jjc jjc ucblogo-6.1/logolib/ 0000775 0001750 0001750 00000000000 13601420003 012526 5 ustar jjc jjc ucblogo-6.1/logolib/ycor 0000664 0001750 0001750 00000000072 13563251612 013443 0 ustar jjc jjc ;;; -*- logo -*-
to ycor
output last pos
end
bury "ycor
ucblogo-6.1/logolib/xcor 0000664 0001750 0001750 00000000073 13563251612 013443 0 ustar jjc jjc ;;; -*- logo -*-
to xcor
output first pos
end
bury "xcor
ucblogo-6.1/logolib/while 0000664 0001750 0001750 00000000242 13563251612 013576 0 ustar jjc jjc ;;; -*- logo -*-
.macro while :while.cond :while.instr
if not run :while.cond [op []]
op se :while.instr (list "while :while.cond :while.instr)
end
bury "while
ucblogo-6.1/logolib/until 0000664 0001750 0001750 00000000236 13563251612 013624 0 ustar jjc jjc ;;; -*- logo -*-
.macro until :until.cond :until.instr
if run :until.cond [op []]
op se :until.instr (list "until :until.cond :until.instr)
end
bury "until
ucblogo-6.1/logolib/unburyname 0000664 0001750 0001750 00000000124 13563251612 014652 0 ustar jjc jjc ;;; -*- logo -*-
to unburyname :names
unbury namelist :names
end
bury "unburyname
ucblogo-6.1/logolib/unburyall 0000664 0001750 0001750 00000000061 13563251612 014502 0 ustar jjc jjc ;;; -*- logo -*-
to unburyall
unbury buried
end
ucblogo-6.1/logolib/transfer 0000664 0001750 0001750 00000001015 13563251612 014311 0 ustar jjc jjc ;;; -*- logo -*-
to transfer :transfer.limit :transfer.template :transfer.init
output cascade.2 (ifelse emptyp :transfer.limit ~
[[emptyp ?2]] ~
[list "transfer.end.test :transfer.limit]) ~
:transfer.template [] [butfirst ?2] :transfer.init
end
to transfer.end.test :the.condition.expression
if emptyp ?2 [output "true]
output run :the.condition.expression
end
to ?in
output first ?2
end
to ?out
output ?1
end
bury [transfer transfer.end.test ?in ?out]
ucblogo-6.1/logolib/setpen 0000664 0001750 0001750 00000000613 13563251612 013766 0 ustar jjc jjc ;;; -*- logo -*-
to setpen :pen_data
ifelse equalp first bf :pen_data "reverse ~
[penreverse] ~
[ifelse equalp first bf :pen_data "erase ~
[penerase] ~
[penpaint]]
ifelse equalp first :pen_data "penup [penup] [pendown]
setpensize first bf bf :pen_data
setpencolor first bf bf bf :pen_data
setpenpattern first bf bf bf bf :pen_data
end
bury [setpen]
ucblogo-6.1/logolib/savel 0000664 0001750 0001750 00000000214 13563251612 013577 0 ustar jjc jjc ;;; -*- logo -*-
to savel :cont :file [:oldwr writer]
openwrite :file
setwrite :file
po :cont
setwrite :oldwr
close :file
end
bury "savel
ucblogo-6.1/logolib/rseq 0000664 0001750 0001750 00000000161 13563251612 013440 0 ustar jjc jjc ;;; -*- logo -*-
to rseq :a :b :n
output map [[x] :a + :x * (:b - :a) / (:n - 1)] iseq 0 :n - 1
end
bury "rseq
ucblogo-6.1/logolib/reverse 0000664 0001750 0001750 00000000240 13563251612 014137 0 ustar jjc jjc ;;; -*- logo -*-
to reverse :in [:out ifelse listp :in [[]] ["]]
if emptyp :in [output :out]
output (reverse bf :in combine first :in :out)
end
bury "reverse
ucblogo-6.1/logolib/remove 0000664 0001750 0001750 00000000145 13563251612 013765 0 ustar jjc jjc ;;; -*- logo -*-
to remove :thing :list
output filter [not equalp ? :thing] :list
end
bury "remove
ucblogo-6.1/logolib/remdup 0000664 0001750 0001750 00000000136 13563251612 013764 0 ustar jjc jjc ;;; -*- logo -*-
to remdup :list
output filter [not memberp ? ?rest] :list
end
bury "remdup
ucblogo-6.1/logolib/reduce 0000664 0001750 0001750 00000000400 13563251612 013731 0 ustar jjc jjc ;;; -*- logo -*-
to reduce :reduce.function :reduce.list
if emptyp bf :reduce.list [op first :reduce.list]
op apply :reduce.function (list (first :reduce.list) ~
(reduce :reduce.function bf :reduce.list))
end
bury "reduce
ucblogo-6.1/logolib/quoted 0000664 0001750 0001750 00000000143 13563251612 013767 0 ustar jjc jjc ;;; -*- logo -*-
to quoted :stuff
if wordp :stuff [op word "" :stuff]
op :stuff
end
bury "quoted
ucblogo-6.1/logolib/queue 0000664 0001750 0001750 00000000214 13563251612 013611 0 ustar jjc jjc ;;; -*- logo -*-
to queue :the.queue.name :the.item.value
make :the.queue.name lput :the.item.value thing :the.queue.name
end
bury "queue
ucblogo-6.1/logolib/push 0000664 0001750 0001750 00000000212 13563251612 013442 0 ustar jjc jjc ;;; -*- logo -*-
to push :the.stack.name :the.item.value
make :the.stack.name fput :the.item.value thing :the.stack.name
end
bury "push
ucblogo-6.1/logolib/pots 0000664 0001750 0001750 00000000071 13563251612 013453 0 ustar jjc jjc ;;; -*- logo -*-
to pots
pot procedures
end
bury "pots
ucblogo-6.1/logolib/pops 0000664 0001750 0001750 00000000070 13563251612 013446 0 ustar jjc jjc ;;; -*- logo -*-
to pops
po procedures
end
bury "pops
ucblogo-6.1/logolib/popls 0000664 0001750 0001750 00000000066 13563251612 013627 0 ustar jjc jjc ;;; -*- logo -*-
to popls
po plists
end
bury "popls
ucblogo-6.1/logolib/popl 0000664 0001750 0001750 00000000253 13563251612 013442 0 ustar jjc jjc ;;; -*- logo -*-
to popl :names
ignore error
catch "error [po pllist :names]
local "err
make "err error
if not emptyp :err [(throw "error first bf :err)]
end
bury "popl
ucblogo-6.1/logolib/pop 0000664 0001750 0001750 00000000262 13563251612 013266 0 ustar jjc jjc ;;; -*- logo -*-
to pop :the.stack.name
local "result
make "result first thing :the.stack.name
make :the.stack.name butfirst thing :the.stack.name
output :result
end
bury "pop
ucblogo-6.1/logolib/pons 0000664 0001750 0001750 00000000063 13563251612 013446 0 ustar jjc jjc ;;; -*- logo -*-
to pons
po names
end
bury "pons
ucblogo-6.1/logolib/pon 0000664 0001750 0001750 00000000253 13563251612 013264 0 ustar jjc jjc ;;; -*- logo -*-
to pon :names
ignore error
catch "error [po namelist :names]
local "err
make "err error
if not emptyp :err [(throw "error first bf :err)]
end
bury "pon
ucblogo-6.1/logolib/poall 0000664 0001750 0001750 00000000070 13563251612 013574 0 ustar jjc jjc ;;; -*- logo -*-
to poall
po contents
end
bury "poall
ucblogo-6.1/logolib/pllist 0000664 0001750 0001750 00000000204 13563251612 013773 0 ustar jjc jjc ;;; -*- logo -*-
to pllist :names
if wordp :names [output (list [] [] (list :names))]
output (list [] [] :names)
end
bury "pllist
ucblogo-6.1/logolib/pick 0000664 0001750 0001750 00000000131 13563251612 013411 0 ustar jjc jjc ;;; -*- logo -*-
to pick :list
output item (1+random count :list) :list
end
bury "pick
ucblogo-6.1/logolib/pen 0000664 0001750 0001750 00000000210 13563251612 013243 0 ustar jjc jjc ;;; -*- logo -*-
to pen
op (list (ifelse pendownp ["pendown] ["penup]) ~
penmode pensize pencolor penpattern)
end
bury [pen]
ucblogo-6.1/logolib/namelist 0000664 0001750 0001750 00000000176 13563251612 014310 0 ustar jjc jjc ;;; -*- logo -*-
to namelist :names
if wordp :names [output list [] (list :names)]
output list [] :names
end
bury "namelist
ucblogo-6.1/logolib/name 0000664 0001750 0001750 00000000175 13563251612 013413 0 ustar jjc jjc ;;; -*- logo -*-
to name :name.value.input :name.variable.input
make :name.variable.input :name.value.input
end
bury "name
ucblogo-6.1/logolib/mdsetitem 0000664 0001750 0001750 00000000172 13563251612 014463 0 ustar jjc jjc ;;; -*- logo -*-
to mdsetitem :index :array :val
setitem last :index (mditem bl :index :array) :val
end
bury "mdsetitem
ucblogo-6.1/logolib/mditem 0000664 0001750 0001750 00000000206 13563251612 013745 0 ustar jjc jjc ;;; -*- logo -*-
to mditem :index :array
if emptyp :index [op :array]
op mditem bf :index item first :index :array
end
bury "mditem
ucblogo-6.1/logolib/mdarray 0000664 0001750 0001750 00000000417 13563251612 014131 0 ustar jjc jjc ;;; -*- logo -*-
to mdarray :sizes [:origin 1]
local "array
make "array (array first :sizes :origin)
if not emptyp bf :sizes ~
[for [i :origin [:origin + (first :sizes) - 1]] ~
[setitem :i :array (mdarray bf :sizes :origin)]]
output :array
end
bury "mdarray
ucblogo-6.1/logolib/map.se 0000664 0001750 0001750 00000000636 13563251612 013660 0 ustar jjc jjc ;;; -*- logo -*-
to map.se :map.se.template [:template.lists] 2
op map.se1 :template.lists 1
end
to map.se1 :template.lists :template.number
if emptyp first :template.lists [output []]
output sentence (apply :map.se.template firsts :template.lists) ~
(map.se1 bfs :template.lists :template.number+1)
end
to ?rest [:which 1]
output bf item :which :template.lists
end
bury [map.se map.se1 ?rest]
ucblogo-6.1/logolib/map 0000664 0001750 0001750 00000000627 13563251612 013252 0 ustar jjc jjc ;;; -*- logo -*-
to map :map.template [:template.lists] 2
op map1 :template.lists 1
end
to map1 :template.lists :template.number
if emptyp first :template.lists [output first :template.lists]
output combine (apply :map.template firsts :template.lists) ~
(map1 bfs :template.lists :template.number+1)
end
to ?rest [:which 1]
output bf item :which :template.lists
end
bury [map map1 ?rest]
ucblogo-6.1/logolib/macroexpand 0000664 0001750 0001750 00000000546 13563251612 014776 0 ustar jjc jjc ;;; -*- logo -*-
to macroexpand :expr
local [name inputlist macro.result]
make "name first :expr
make "inputlist bf :expr
if not macrop :name [(throw "error (se :name [is not a macro.]))]
define "%%%$%macro.procedure text :name
make "macro.result run fput "%%%$%macro.procedure :inputlist
erase "%%%$%macro.procedure
op :macro.result
end
bury "macroexpand
ucblogo-6.1/logolib/localmake 0000664 0001750 0001750 00000000214 13563251612 014415 0 ustar jjc jjc ;;; -*- logo -*-
.macro localmake :name :value
output (list "local (word "" :name) "apply ""make (list :name :value))
end
bury "localmake
ucblogo-6.1/logolib/iseq 0000664 0001750 0001750 00000000332 13563251612 013427 0 ustar jjc jjc ;;; -*- logo -*-
to iseq :a :b
if not (:a > :b) [output iseq1 :a :b]
output map [[x] -1 * :x] iseq1 (-1 * :a) (-1 * :b)
end
to iseq1 :a :b
if :a > :b [output []]
output fput :a iseq1 :a + 1 :b
end
bury [iseq iseq1]
ucblogo-6.1/logolib/invoke 0000664 0001750 0001750 00000000207 13563251612 013762 0 ustar jjc jjc ;;; -*- logo -*-
to invoke :invoked.function [:invoke.inputs] 2
.maybeoutput apply :invoked.function :invoke.inputs
end
bury "invoke
ucblogo-6.1/logolib/ignore 0000664 0001750 0001750 00000000065 13563251612 013754 0 ustar jjc jjc ;;; -*- logo -*-
to ignore :stuff
end
bury "ignore
ucblogo-6.1/logolib/gensym 0000664 0001750 0001750 00000000272 13563251612 013773 0 ustar jjc jjc ;;; -*- logo -*-
to gensym
if not namep "gensym.number [make "gensym.number 0]
make "gensym.number :gensym.number + 1
output word "g :gensym.number
end
bury [[gensym] [gensym.number]]
ucblogo-6.1/logolib/foreach 0000664 0001750 0001750 00000001237 13563251612 014102 0 ustar jjc jjc ;;; -*- logo -*-
.macro foreach [:foreach.inputs] 2
catch "foreach.catchtag ~
[op foreach.done runresult ~
[foreach1 bl :foreach.inputs last :foreach.inputs 1]]
op []
end
to foreach1 :template.lists :foreach.template :template.number
if emptyp first :template.lists [throw "foreach.catchtag]
apply :foreach.template firsts :template.lists
.maybeoutput foreach1 bfs :template.lists :foreach.template :template.number+1
end
to foreach.done :foreach.result
if emptyp :foreach.result [op [stop]]
op (list "output "first (list first :foreach.result))
end
to ?rest [:which 1]
output bf item :which :template.lists
end
bury [foreach foreach1 foreach.done ?rest]
ucblogo-6.1/logolib/for 0000664 0001750 0001750 00000001553 13563251612 013262 0 ustar jjc jjc ;;; -*- logo -*-
.macro for :for.values :for.instr ~
[:for.var first :for.values] ~
[:for.initial run first bf :for.values] ~
[:for.final run first bf bf :for.values] ~
[:for.step forstep] ~
[:for.tester (ifelse :for.step < 0 ~
[[:for.initial < :for.final]] ~
[[:for.initial > :for.final]])]
local :for.var
catch "for.catchtag [op for.done runresult [forloop :for.initial]]
op []
end
to forloop :for.initial
make :for.var :for.initial
if run :for.tester [throw "for.catchtag]
run :for.instr
.maybeoutput forloop (:for.initial + :for.step)
end
to for.done :for.result
if emptyp :for.result [op [stop]]
op (list "output "first (list first :for.result))
end
to forstep
if equalp count :for.values 4 [op run last :for.values]
op ifelse :for.initial > :for.final [-1] [1]
end
bury [for forstep forloop for.done]
ucblogo-6.1/logolib/find 0000664 0001750 0001750 00000000602 13563251612 013406 0 ustar jjc jjc ;;; -*- logo -*-
to find :find.template :template.list [:template.number 1] ~
[:template.lists (list :template.list)]
if emptyp :template.list [op []]
if apply :find.template (list first :template.list) [op first :template.list]
op (find :find.template bf :template.list :template.number+1)
end
to ?rest [:which 1]
output bf item :which :template.lists
end
bury [find ?rest]
ucblogo-6.1/logolib/filter 0000664 0001750 0001750 00000000773 13563251612 013764 0 ustar jjc jjc ;;; -*- logo -*-
to filter :filter.template :template.list [:template.number 1] ~
[:template.lists (list :template.list)]
if emptyp :template.list [op :template.list]
if apply :filter.template (list first :template.list) ~
[op combine (first :template.list) ~
(filter :filter.template bf :template.list :template.number+1)]
op (filter :filter.template bf :template.list :template.number+1)
end
to ?rest [:which 1]
output bf item :which :template.lists
end
bury [filter ?rest]
ucblogo-6.1/logolib/filep 0000664 0001750 0001750 00000000211 13563251612 013561 0 ustar jjc jjc ;;; -*- logo -*-
to filep :filename
ignore error
catch "error [openread :filename close :filename]
output emptyp error
end
bury "filep
ucblogo-6.1/logolib/fileQ 0000664 0001750 0001750 00000000211 13557147341 013530 0 ustar jjc jjc ;;; -*- logo -*-
to file? :filename
ignore error
catch "error [openread :filename close :filename]
output emptyp error
end
bury "file?
ucblogo-6.1/logolib/erpl 0000664 0001750 0001750 00000000105 13563251612 013426 0 ustar jjc jjc ;;; -*- logo -*-
to erpl :names
erase pllist :names
end
bury "erpl
ucblogo-6.1/logolib/ern 0000664 0001750 0001750 00000000105 13563251612 013250 0 ustar jjc jjc ;;; -*- logo -*-
to ern :names
erase namelist :names
end
bury "ern
ucblogo-6.1/logolib/emacs.debug 0000664 0001750 0001750 00000001626 13563251612 014652 0 ustar jjc jjc ;;; -*- logo -*-
to emacs.debug :file_elisp_code :trace_or_step
localmake "wr_elisp_code writer
if namep "printwidthlimit [
localmake "pw_elisp_code :printwidthlimit
ern "printwidthlimit]
openwrite :file_elisp_code
setwrite :file_elisp_code
bury [[] [wr_elisp_code pw_elisp_code file_elisp_code trace_or_step] []]
(foreach contents run (list :trace_or_step)
[PROCEDURES: VARIABLES: PROPERTIES:]
[[names debugged title]
[pr :title pr []
pr map [[name]
[op ifelse memberp :name :debugged
[(word "\( :name "\))]
[:name]]] :names
pr []]])
close :file_elisp_code
setwrite :wr_elisp_code
if namep "pw_elisp_code [make "printwidthlimit :pw_elisp_code]
end
bury "emacs.debug
ucblogo-6.1/logolib/edps 0000664 0001750 0001750 00000000072 13563251612 013422 0 ustar jjc jjc ;;; -*- logo -*-
to edps
edit procedures
end
bury "edps
ucblogo-6.1/logolib/edpls 0000664 0001750 0001750 00000000070 13563251612 013574 0 ustar jjc jjc ;;; -*- logo -*-
to edpls
edit plists
end
bury "edpls
ucblogo-6.1/logolib/edpl 0000664 0001750 0001750 00000000104 13563251612 013407 0 ustar jjc jjc ;;; -*- logo -*-
to edpl :names
edit pllist :names
end
bury "edpl
ucblogo-6.1/logolib/edns 0000664 0001750 0001750 00000000065 13563251612 013422 0 ustar jjc jjc ;;; -*- logo -*-
to edns
edit names
end
bury "edns
ucblogo-6.1/logolib/edn 0000664 0001750 0001750 00000000104 13563251612 013231 0 ustar jjc jjc ;;; -*- logo -*-
to edn :names
edit namelist :names
end
bury "edn
ucblogo-6.1/logolib/edall 0000664 0001750 0001750 00000000072 13563251612 013550 0 ustar jjc jjc ;;; -*- logo -*-
to edall
edit contents
end
bury "edall
ucblogo-6.1/logolib/do.while 0000664 0001750 0001750 00000000211 13563251612 014173 0 ustar jjc jjc ;;; -*- logo -*-
.macro do.while :while.instr :while.cond
op se :while.instr (list "while :while.cond :while.instr)
end
bury "do.while
ucblogo-6.1/logolib/do.until 0000664 0001750 0001750 00000000211 13563251612 014216 0 ustar jjc jjc ;;; -*- logo -*-
.macro do.until :until.instr :until.cond
op se :until.instr (list "until :until.cond :until.instr)
end
bury "do.until
ucblogo-6.1/logolib/dequeue 0000664 0001750 0001750 00000000272 13563251612 014126 0 ustar jjc jjc ;;; -*- logo -*-
to dequeue :the.queue.name
local "result
make "result first thing :the.queue.name
make :the.queue.name butfirst thing :the.queue.name
output :result
end
bury "dequeue
ucblogo-6.1/logolib/crossmap 0000664 0001750 0001750 00000000775 13563251612 014330 0 ustar jjc jjc ;;; -*- logo -*-
to crossmap :cm.template [:cm.lists] 2
if emptyp bf :cm.lists [op cm1 first :cm.lists 1 []]
op cm1 :cm.lists 1 []
end
to cm1 :cm.lists :cm.level :template.vars
if emptyp :cm.lists [op (list apply :cm.template :template.vars)]
op cm2 first :cm.lists
end
to cm2 :cm.thislist
if emptyp :cm.thislist [op []]
local :cm.level
make :cm.level first :cm.thislist
op se (cm1 bf :cm.lists :cm.level+1 lput first :cm.thislist :template.vars) ~
(cm2 bf :cm.thislist)
end
bury [crossmap cm1 cm2]
ucblogo-6.1/logolib/cond 0000664 0001750 0001750 00000001505 13563251612 013414 0 ustar jjc jjc ;;; -*- logo -*-
.macro cond :cond.clauses
localmake "cond.result cond.helper :cond.clauses
if equalp first :cond.result "error [(throw "error last :cond.result)]
output last :cond.result
end
to cond.helper :cond.clauses
if emptyp :cond.clauses [output [[] []]]
if emptyp first :cond.clauses [output [error [Empty COND clause]]]
if equalp first first :cond.clauses "else ~
[output list [] butfirst first :cond.clauses]
ignore error
catch "error [localmake "cond.result run first first :cond.clauses]
localmake "cond.error error
if not emptyp :cond.error [output list "error item 2 :cond.error]
if not memberp :cond.result [true false] ~
[output list "error fput :cond.result [not TRUE or FALSE]]
if :cond.result [output list [] butfirst first :cond.clauses]
output cond.helper butfirst :cond.clauses
end
bury [cond cond.helper]
ucblogo-6.1/logolib/combine 0000664 0001750 0001750 00000000201 13563251612 014075 0 ustar jjc jjc ;;; -*- logo -*-
to combine :this :those
if wordp :those [output word :this :those]
output fput :this :those
end
bury "combine
ucblogo-6.1/logolib/closeall 0000664 0001750 0001750 00000000114 13563251612 014262 0 ustar jjc jjc ;;; -*- logo -*-
to closeall
foreach allopen [close ?]
end
bury "closeall
ucblogo-6.1/logolib/case 0000664 0001750 0001750 00000001027 13563251612 013403 0 ustar jjc jjc ;;; -*- logo -*-
.macro case :case.value :case.clauses [:caseignoredp "true]
catch "case.error [output case.helper :case.value :case.clauses]
(throw "error [Empty CASE clause])
end
to case.helper :case.value :case.clauses
if emptyp :case.clauses [output []]
if emptyp first :case.clauses [throw "case.error]
if or equalp first first :case.clauses "else ~
memberp :case.value first first :case.clauses ~
[output butfirst first :case.clauses]
output case.helper :case.value butfirst :case.clauses
end
bury [case case.helper]
ucblogo-6.1/logolib/cascade.2 0000664 0001750 0001750 00000000154 13563251612 014213 0 ustar jjc jjc ;;; -*- logo -*-
to cascade.2 [:cascade2.inputs] 5
op apply "cascade :cascade2.inputs
end
bury "cascade.2
ucblogo-6.1/logolib/cascade 0000664 0001750 0001750 00000002214 13563251612 014052 0 ustar jjc jjc ;;; -*- logo -*-
to cascade :cascade.limit [:cascade.inputs] 3
if numberp :cascade.limit ~
[if lessp :cascade.limit 0 ~
[(throw "error (se [cascade doesn't like] :cascade.limit [as input]))] ~
make "cascade.limit `[greaterp :template.number ,[int :cascade.limit]]]
local [cascade.templates template.vars cascade.final]
make "cascade.templates []
make "template.vars []
make "cascade.final [?1]
cascade.setup :cascade.inputs
op cascade1 1 :template.vars
end
to cascade.setup :inputs
if emptyp :inputs [stop]
if emptyp bf :inputs [make "cascade.final first :inputs stop]
make "cascade.templates lput first :inputs :cascade.templates
make "template.vars lput first bf :inputs :template.vars
cascade.setup bf bf :inputs
end
to cascade1 :template.number :template.vars
if apply :cascade.limit :template.vars [op apply :cascade.final :template.vars]
op cascade1 (:template.number+1) (cascade.eval :cascade.templates)
end
to cascade.eval :cascade.templates
if emptyp :cascade.templates [op []]
op fput (apply first :cascade.templates :template.vars) ~
(cascade.eval bf :cascade.templates)
end
bury [cascade cascade.setup cascade1 cascade.eval]
ucblogo-6.1/logolib/buryname 0000664 0001750 0001750 00000000116 13563251612 014310 0 ustar jjc jjc ;;; -*- logo -*-
to buryname :names
bury namelist :names
end
bury "buryname
ucblogo-6.1/logolib/buryall 0000664 0001750 0001750 00000000076 13563251612 014145 0 ustar jjc jjc ;;; -*- logo -*-
to buryall
bury contents
end
bury "buryall
ucblogo-6.1/logolib/backslashedp 0000664 0001750 0001750 00000000122 13563251612 015107 0 ustar jjc jjc ;;; -*- logo -*-
to backslashedp :char
op vbarredp :char
end
bury "backslashedp
ucblogo-6.1/logolib/backslashedQ 0000664 0001750 0001750 00000000122 13557147341 015056 0 ustar jjc jjc ;;; -*- logo -*-
to backslashed? :char
op vbarredp :char
end
bury "backslashed?
ucblogo-6.1/logolib/` 0000664 0001750 0001750 00000005340 13563251612 012711 0 ustar jjc jjc ;;; -*- logo -*-
to ` :backq.list [:backq.depth 0]
if emptyp :backq.list [op []]
if equalp first :backq.list "` ~
[op fput "`
fput (` first bf :backq.list :backq.depth+1)
(` bf bf :backq.list :backq.depth)]
if and wordp first :backq.list equalp first first :backq.list ", ~
[op backq.unquote (bf first :backq.list) (bf :backq.list) :backq.depth]
if and wordp first :backq.list memberp first first :backq.list [" :] ~
[op backq.word (first first :backq.list) (bf first :backq.list)
(bf :backq.list) :backq.depth]
if wordp first :backq.list ~
[op fput first :backq.list (` bf :backq.list :backq.depth)]
op fput (` first :backq.list :backq.depth) (` bf :backq.list :backq.depth)
end
to backq.word :backq.symbol :backq.word :backq.rest :backq.depth
if emptyp :backq.word ~
[output fput :backq.symbol (` :backq.rest :backq.depth)]
if not equalp first :backq.word ", ~
[output fput (word :backq.symbol :backq.word)
(` :backq.rest :backq.depth)]
localmake "result backq.unquote (bf :backq.word) :backq.rest :backq.depth
if wordp :result [output word :backq.symbol :result]
output fput (word :backq.symbol first :result) bf :result
end
to backq.unquote :unquote.symbol :unquote.rest :unquote.depth
localmake "unquote.splicing "false
if not emptyp :unquote.symbol [
if equalp first :unquote.symbol "@ [
make "unquote.splicing "true
make "unquote.symbol butfirst :unquote.symbol
]]
if :unquote.depth=0 [
if emptyp :unquote.symbol
[output backq.combine run first :unquote.rest
(` bf :unquote.rest :unquote.depth)]
output backq.combine run :unquote.symbol (` :unquote.rest :unquote.depth)
]
if emptyp :unquote.symbol ~
[output fput (ifelse :unquote.splicing [",@] [",])
fput (` first :unquote.rest :unquote.depth-1)
(` bf :unquote.rest :unquote.depth)]
if backq.all.commas :unquote.symbol ~
[output fput (ifelse :unquote.splicing [",@] [",])
fput (` (list :unquote.symbol first :unquote.rest)
:unquote.depth-1)
(` bf :unquote.rest :unquote.depth)]
output fput (ifelse :unquote.splicing [",@] [",]) ~
fput (` (list :unquote.symbol) :unquote.depth-1) ~
(` :unquote.rest :unquote.depth)
end
to backq.combine :this :those
output ifelse :unquote.splicing [se :this :those] [fput :this :those]
end
to backq.all.commas :word
if emptyp :word [output "true]
if equalp first :word ", ~
[if emptyp butfirst :word [output "true]
if equalp first butfirst :word "@ [output backq.all.commas bf bf :word]
output backq.all.commas butfirst :word]
output "false
end
bury [` backq.word backq.unquote backq.combine backq.all.commas]
ucblogo-6.1/logolib/Qrest 0000664 0001750 0001750 00000000135 13557147341 013573 0 ustar jjc jjc ;;; -*- logo -*-
to ?rest [:which 1]
output bf item :which :template.lists
end
bury "?rest
ucblogo-6.1/logolib/# 0000664 0001750 0001750 00000000144 13563251612 012611 0 ustar jjc jjc ;;; -*- logo -*-
to #
if not namep "template.number [op repcount]
op :template.number
end
bury "#
ucblogo-6.1/logolib/Messages.zh_TW 0000664 0001750 0001750 00000005501 13601420003 015253 0 ustar jjc jjc ; UCBLogo message file version 6.1
; Error messages -- position in this file corresponds to error number
; Lines starting with semicolon don't count in the line numbering
; and may be added at will.
Logo: 嚴重的內部錯誤。
超出容量
堆疊溢出
海龜超出邊界
%p 不喜歡用 %s 做為輸入
%p 並沒有輸出到 %p
給 %p 的輸入不足
%p 不喜歡用 %s 做為輸入
給 %p 的輸入太多
你沒說要如何做 %s
太多的 '('
%s 沒有任何值
預料之外的 ')'
我不知道要如何 %p
找不到 %p 的抓取標記
%p 已經定義過
停止中…
已經滴落
檔案系統錯誤: %p
假設你的意思是 IFELSE,而不是 IF
%p 被本地的程序呼叫所掩蔽
擲出 "Error
%p 是一個基本詞
無法在程序之中使用 TO
我不知道如何去 %p
%p 而沒有 TEST
預料之外的 ']'
預料之外的 '}'
無法啟始圖形
巨集程式傳回 %s 而不是一個串列
你沒有說用 %s 做什麼
可以在程序之中只使用 %p
APPLY 不喜歡用 %s 做為輸入
END 於 %p 中在多列指令之內
Logo: 耗盡記憶體。
%p
END 在多列指令之內
不當的可選輸入預設表示式: %s
無法在 RUNRESULT 之內使用 OUTPUT 或 STOP
假設你的意思是 '%p',而不是 %p
我無法開啟檔案 %p
檔案 %p 已經開啟
檔案 %p 沒有開啟
Runlist %s has more than one expression
Variable name %s is defined both dynamically and in current object
; Non-error messages (no numeric error code for these)
謝謝你使用 Logo。
祝你今天愉快。
對不起,Mac 上沒有 shell。
輸入 EXIT 來回到 Logo。
位於 %s\n%s
抽出迴圈
暫停中…
停止
輸出
找不到檔案: %t\n
無法 KEYP,在這個系統上沒有 FIONREAD
沒有足夠的記憶體
我無法開啟那個檔案
檔案已經開啟
檔案沒有開啟
Pprop
歡迎使用 Berkeley Logo 版本 %t
你必須在一個程序中使用 OUTPUT 或 STOP。
警告: 記憶體不足以執行垃圾資訊收集器。
GC 已停用 - 儲存重要資料並離開!
%s 已定義\n
Make %s %s
to %p\nend\n\n
Plist %s = %s\n
沒有可用的說明。\n
在 %p 上沒有可用的說明。\n
--更多--
; Logo special words, used mostly in Logo-generated messages
; TRUE and FALSE are generated by predicates and accepted by IF etc.
真
假
; End of a procedure
end
; Some names of primitives treated specially in the evaluator
; (You still have to COPYDEF them to match any changes here.)
輸出
停止
跳到
標記
如果
若非
定
.巨集
; Special CATCH tags
頂層
系統
錯誤
; How no-value prints in error messages
沒事
; Outputs from SCREENMODE
文字螢幕
分割螢幕
全螢幕
; Outputs from PENMODE
繪圖
抹除
反相
; Outputs from TURTLEMODE
迴轉
圍牆
視窗
; HELP turns infix operators +-*/=<> into these
和
差
積
商
等於
小於
大於
不大於
不小於
不等於
; Object stuff
名稱
類別
自身
授權證
起始清單
存在
ucblogo-6.1/logolib/Messages.sp 0000664 0001750 0001750 00000005336 13601420003 014650 0 ustar jjc jjc ; Spanish version of Berkeley Logo messages file 6.1
; Error messages -- position in this file corresponds to error number
; Lines starting with semicolon don't count in the line numbering
; and may be added at will.
Logo: Error Interno Fatal.
no hay espacio
desborde de pila
tortuga fuera de los lmites
a %p no le gust recibir %s
%p no entreg nada a %p
%p necesita recibir ms cosas
a %p no le gust recibir %s
demasiadas cosas entre parntesis ()
No dices qu debo hacer con %s
demasiados parntesis '('
%s no tiene un valor todava
parntesis ')' inesperado
no s cmo realizar %p
no puedo encontrar la etiqueta LANZA para %p
%p ya est definida
Parando...
DRIBBLE est activado
Error del sistema de archivos: %p
Asumo que queras decir SIOTRO, no SI
%p cubierta por local en llamada a procedimiento
ATRAPA "Error
%p es una primitiva
No puedes usar PARA dentro de un procedimiento
no se cmo realizar %p
%p sin PRUEBA
corchete ']' inesperado
llave '}' inesperada
no pude inicializar grficas
Macro entreg %s en lugar de una lista
No dices qu debo hacer con %s
Solo puedes usar %p dentro de un procedimiento
a APLICA no le gust recibir %s
FIN dentro de una instruccin multi-lnea en %p
Logo: Falta de Memoria.
%p
FIN dentro de una instruccin multi-lnea
Mala expresin por defecto para parmetro opcional: %s
No puedes usar RESPUESTA o ALTO dentro de ACTIVARESULTADO
Asumo que queras decir '%p', no %p
No puedo abrir archivo %p
Archivo %p ya est abierto
Archivo %p no est abierto
Runlist %s has more than one expression
Variable name %s is defined both dynamically and in current object
; Non-error messages (no numeric error code for these)
Gracias por usar Logo.
Que tengas un buen da.
Lo lamento, no hay 'shell' en la Mac.
Escribe EXIT para retornar a Logo.
en %s\n%s
Lazo ERRACT
Pausando...
se detuvo
responde
Archivo no encontrado: %t\n
No se puede usar TECLAP, no hay FIONREAD en este sistema
No hay suficiente memoria
No puedo abrir ese archivo
Archivo ya est abierto
Archivo no est abierto
Pprop
Bienvenido a Berkeley Logo versin %t
Debes estar dentro de un procedimiento para usar REPUESTA o ALTO.
Advertencia: No hay suficiente memoria para ejecutar el recolector de basura.
GC deshabilitado - Guarda informacin importante a disco y sal!
%s definido\n
DA %s %s
PARA %p\nFIN\n\n
Plista %s = %s\n
No hay ayuda disponible.\n
No hay ayuda disponible para %p.\n
--ms--
cierto
falso
fin
respuesta
alto
saltoa
etiqueta
si
siotro
para
.macro
toplevel
sistema
error
nada
; Outputs from SCREENMODE
textscreen
splitscreen
fullscreen
; Outputs from PENMODE
paint
erase
reverse
; Outputs from TURTLEMODE
wrap
fence
window
; HELP turns infix operators +-*/=<> into these
sum
difference
product
quotient
equalp
lessp
greaterp
lessequalp
greaterequalp
notequalp
ucblogo-6.1/logolib/Messages.fr 0000664 0001750 0001750 00000005340 13601420003 014630 0 ustar jjc jjc ; French version of Berkeley Logo messages file 6.1
; Error messages -- position in this file corresponds to error number
; Lines starting with semicolon don't count in the line numbering
; and may be added at will.
Logo : erreur interne fatale
Plus assez de mmoire
Dbordement de pile
Tortue en dehors des limites
%p n'aime pas l'argument %s
%p ne donne pas de valeur %p
Pas assez d'arguments pour %p
%p n'aime pas l'argument %s
Trop de choses entre les ( )
Vous ne dites pas ce qu'il faut faire de %s
Trop de '('
%s n'a pas de valeur
')' inattendue
Je ne connais pas la procdure %p
Pas de CATCH correspondant l'tiquette (tag) %p
%p est dj dfinie
Arrt...
Dj en train d'appliquer DRIBBLE
Erreur systme de fichiers: %p
Supposant que vous voulez dire SINON (IFELSE) et non SI (IF)
%p masque dans un appel de procdure
Throw "Error
%p est une primitive
Impossible d'utiliser POUR (TO) dans une procdure
Je ne connais pas la procdure %p
%p sans TEST
']' inattendu
'}' inattendu
Impossible d'initialiser le graphisme
La macro retourne %s au lieu d'une liste
Vous ne dites pas ce qu'il faut faire de %s
Ne peux utiliser %p que dans une procdure
APPLY n'accepte pas l'argument %s
FIN (END) dans une instruction multi-ligne dans %p
Plus de mmoire (fatal)
%p
FIN (END) dans une instruction multi-ligne
Expression par dfaut de l'argument optionnel errone: %S
Ne peux utiliser RETOURNE (OUTPUT) ou STOPPE (STOP) dans RUNRESULT
Supposant que vous voulez dire '%p' et non %p
Impossible d'ouvrir fichier %p
Fichier %p dj ouvert
Fichier %p non ouvert
Runlist %s a plus qu'une expression
Variable name %s is defined both dynamically and in current object
; Non-error messages (no numeric error code for these)
Merci d'utiliser Logo.
Bonne journe!
Dsol, pas de shell sur le Mac.
Tapez EXIT pour revenir Logo
dans %s\n%s
ERRACT boucle
Pause...
arrte
sort
Fichier non trouv: %t\n
KEYP impossible, pas de FIONREAD sur ce systme
Mmoire insuffisante
Impossible d'ouvrir ce fichier
Fichier dj ouvert
Fichier non ouvert
Pprop
Bienvenue dans Berkeley Logo version %t
Vous devez tre dans une procdure pour utiliser RETOURNE (OUTPUT) ou STOPPE (STOP)
Attention: mmoire insuffisante pour lancer le ramasse-miette
Ramasse-miette dsactiv - Enregistrez vos donnes et quittez!
%s dfinie\n
Faire %s %s
pour %p\nfin\n\n
Plist %s = %s\n
Aide indisponible.\n
Pas d'aide disponible pour %p.\n
--plus--
vrai
faux
fin
retourne
stoppe
goto
tiquette
si
sinon
pour
.macro
toplevel
system
error
rien
; Outputs from SCREENMODE
textscreen
splitscreen
fullscreen
; Outputs from PENMODE
paint
erase
reverse
; Outputs from TURTLEMODE
wrap
fence
window
; HELP turns infix operators +-*/=<> into these
sum
difference
product
quotient
equalp
lessp
greaterp
lessequalp
greaterequalp
notequalp
ucblogo-6.1/logolib/Messages 0000664 0001750 0001750 00000005311 13601420003 014220 0 ustar jjc jjc ; UCBLogo message file version 6.1
; Error messages -- position in this file corresponds to error number
; Lines starting with semicolon don't count in the line numbering
; and may be added at will.
Logo: Fatal Internal Error.
out of space
stack overflow
turtle out of bounds
%p doesn't like %s as input
%p didn't output to %p
not enough inputs to %p
%p doesn't like %s as input
too many inputs to %p
You don't say what to do with %s
too many ('s
%s has no value
unexpected ')'
I don't know how to %p
Can't find catch tag for %p
%p is already defined
Stopping...
Already dribbling
File system error: %p
Assuming you mean IFELSE, not IF
%p shadowed by local in procedure call
Throw "Error
%p is a primitive
Can't use TO inside a procedure
I don't know how to %p
%p without TEST
unexpected ']'
unexpected '}'
couldn't initialize graphics
Macro returned %s instead of a list
You don't say what to do with %s
Can only use %p inside a procedure
APPLY doesn't like %s as input
END inside multi-line instruction in %p
Logo: Out of Memory.
%p
END inside multi-line instruction
Bad default expression for optional input: %s
Can't use OUTPUT or STOP inside RUNRESULT
Assuming you meant '%p', not %p
I can't open file %p
File %p already open
File %p not open
Runlist %s has more than one expression
Variable name %s is defined both dynamically and in current object
; Non-error messages (no numeric error code for these)
Thank you for using Logo.
Have a nice day.
Sorry, no shell on the Mac.
Type EXIT to return to Logo.
in %s\n%s
Erract loop
Pausing...
stops
outputs
File not found: %t\n
Can't KEYP, no FIONREAD on this system
Not enough memory
I can't open that file
File already open
File not open
Pprop
Welcome to Berkeley Logo version %t
You must be in a procedure to use OUTPUT or STOP.
Warning: Not enough memory to run garbage collector.
GC disabled - Save important data and exit!
%s defined\n
Make %s %s
to %p\nend\n\n
Plist %s = %s\n
No help available.\n
No help available on %p.\n
--more--
; Logo special words, used mostly in Logo-generated messages
; TRUE and FALSE are generated by predicates and accepted by IF etc.
true
false
; End of a procedure
end
; Some names of primitives treated specially in the evaluator
; (You still have to COPYDEF them to match any changes here.)
output
stop
goto
tag
if
ifelse
to
.macro
; Special CATCH tags
toplevel
system
error
; How no-value prints in error messages
nothing
; Outputs from SCREENMODE
textscreen
splitscreen
fullscreen
; Outputs from PENMODE
paint
erase
reverse
; Outputs from TURTLEMODE
wrap
fence
window
; HELP turns infix operators +-*/=<> into these
sum
difference
product
quotient
equalp
lessp
greaterp
lessequalp
greaterequalp
notequalp
; Object stuff
name
class
self
licenseplate
initlist
exist
ucblogo-6.1/helpfiles/ 0000775 0001750 0001750 00000000000 13601420024 013055 5 ustar jjc jjc ucblogo-6.1/helpfiles/ycor 0000664 0001750 0001750 00000000117 13600031207 013753 0 ustar jjc jjc YCOR (library procedure)
outputs a number, the turtle's Y coordinate.
ucblogo-6.1/helpfiles/xcor 0000664 0001750 0001750 00000000117 13600031207 013752 0 ustar jjc jjc XCOR (library procedure)
outputs a number, the turtle's X coordinate.
ucblogo-6.1/helpfiles/writer 0000664 0001750 0001750 00000000163 13600031207 014314 0 ustar jjc jjc WRITER
outputs the name of the current write stream file, or the empty list
if the write stream is the screen.
ucblogo-6.1/helpfiles/writepos 0000664 0001750 0001750 00000000110 13600031207 014644 0 ustar jjc jjc WRITEPOS
outputs the file position of the current write stream file.
ucblogo-6.1/helpfiles/wrap 0000664 0001750 0001750 00000000635 13600031207 013755 0 ustar jjc jjc WRAP
tells the turtle to enter wrap mode: From now on, if the turtle
is asked to move past the boundary of the graphics window, it
will "wrap around" and reappear at the opposite edge of the
window. The top edge wraps to the bottom edge, while the left
edge wraps to the right edge. (So the window is topologically
equivalent to a torus.) This is the turtle's initial mode.
Compare WINDOW and FENCE.
ucblogo-6.1/helpfiles/wordp 0000664 0001750 0001750 00000000121 13600031207 014125 0 ustar jjc jjc WORDP thing
WORD? thing
outputs TRUE if the input is a word, FALSE otherwise.
ucblogo-6.1/helpfiles/word 0000664 0001750 0001750 00000000144 13600031207 013752 0 ustar jjc jjc WORD word1 word2
(WORD word1 word2 word3 ...)
outputs a word formed by concatenating its inputs.
ucblogo-6.1/helpfiles/window 0000664 0001750 0001750 00000000616 13600031207 014312 0 ustar jjc jjc WINDOW
tells the turtle to enter window mode: From now on, if the turtle
is asked to move past the boundary of the graphics window, it
will move offscreen. The visible graphics window is considered
as just part of an infinite graphics plane; the turtle can be
anywhere on the plane. (If you lose the turtle, HOME will bring
it back to the center of the window.) Compare WRAP and FENCE.
ucblogo-6.1/helpfiles/while 0000664 0001750 0001750 00000000532 13600031207 014110 0 ustar jjc jjc WHILE tfexpression instructionlist (library procedure)
command. Repeatedly evaluates the "instructionlist" as long as the
evaluated "tfexpression" remains TRUE. Evaluates the first input
first, so the "instructionlist" may never be run at all. The
"tfexpression" must be an expressionlist whose value when evaluated
is TRUE or FALSE.
ucblogo-6.1/helpfiles/wait 0000664 0001750 0001750 00000000370 13600031207 013744 0 ustar jjc jjc WAIT time
command. Delays further execution for "time" 60ths of a second.
Also causes any buffered characters destined for the terminal to
be printed immediately. WAIT 0 can be used to achieve this
buffer flushing without actually waiting.
ucblogo-6.1/helpfiles/vbarredp 0000664 0001750 0001750 00000001341 13600031207 014604 0 ustar jjc jjc VBARREDP char
VBARRED? char
BACKSLASHEDP char (library procedure)
BACKSLASHEDP char (library procedure)
BACKSLASHED? char (library procedure)
outputs TRUE if the input character was originally entered into Logo
within vertical bars (|) to prevent its usual special syntactic
meaning, FALSE otherwise. (Outputs TRUE only if the character is a
backslashed space, tab, newline, or one of ()[]+-*/=<>":;\~?| )
The names BACKSLASHEDP and BACKSLASHED? are included in the Logo
library for backward compatibility with the former names of this
primitive, although it does *not* output TRUE for characters
originally entered with backslashes.
ucblogo-6.1/helpfiles/usealternatenames 0000664 0001750 0001750 00000000224 13600031207 016516 0 ustar jjc jjc USEALTERNATENAMES (variable)
if TRUE, causes Logo to generate non-English words (from the
Messages file) instead of TRUE, FALSE, END, etc.
ucblogo-6.1/helpfiles/uppercase 0000664 0001750 0001750 00000000203 13600031207 014762 0 ustar jjc jjc UPPERCASE word
outputs a copy of the input word, but with all lowercase letters
changed to the corresponding uppercase letter.
ucblogo-6.1/helpfiles/untrace 0000664 0001750 0001750 00000000111 13600031207 014432 0 ustar jjc jjc UNTRACE contentslist
command. Turns off tracing for the named items.
ucblogo-6.1/helpfiles/until 0000664 0001750 0001750 00000000533 13600031207 014134 0 ustar jjc jjc UNTIL tfexpression instructionlist (library procedure)
command. Repeatedly evaluates the "instructionlist" as long as the
evaluated "tfexpression" remains FALSE. Evaluates the first input
first, so the "instructionlist" may never be run at all. The
"tfexpression" must be an expressionlist whose value when evaluated
is TRUE or FALSE.
ucblogo-6.1/helpfiles/unstep 0000664 0001750 0001750 00000000111 13600031207 014307 0 ustar jjc jjc UNSTEP contentslist
command. Turns off stepping for the named items.
ucblogo-6.1/helpfiles/unburyonedit 0000664 0001750 0001750 00000000337 13600031207 015532 0 ustar jjc jjc UNBURYONEDIT (variable)
if TRUE, causes any procedure defined during EDIT or LOAD to be
unburied, so that it will be saved by a later SAVE. Files that
want to define and bury procedures must do it in that order.
ucblogo-6.1/helpfiles/unburyname 0000664 0001750 0001750 00000000172 13600031207 015165 0 ustar jjc jjc UNBURYNAME varname (library procedure)
UNBURYNAME varnamelist
command. Abbreviates UNBURY NAMELIST varname(list).
ucblogo-6.1/helpfiles/unburyall 0000664 0001750 0001750 00000000113 13600031207 015010 0 ustar jjc jjc UNBURYALL (library procedure)
command. Abbreviates UNBURY BURIED.
ucblogo-6.1/helpfiles/unbury 0000664 0001750 0001750 00000000263 13600031207 014325 0 ustar jjc jjc UNBURY contentslist
command. Unburies the procedures, variables, and property lists
named in the input. That is, the named items will be returned to
view in CONTENTS, etc.
ucblogo-6.1/helpfiles/type 0000664 0001750 0001750 00000002054 13600031207 013762 0 ustar jjc jjc TYPE thing
(TYPE thing1 thing2 ...)
command. Prints the input or inputs like PRINT, except that no
newline character is printed at the end and multiple inputs are not
separated by spaces. Note: printing to the terminal is ordinarily
"line buffered"; that is, the characters you print using TYPE will
not actually appear on the screen until either a newline character
is printed (for example, by PRINT or SHOW) or Logo tries to read
from the keyboard (either at the request of your program or after an
instruction prompt). This buffering makes the program much faster
than it would be if each character appeared immediately, and in most
cases the effect is not disconcerting. To accommodate programs that
do a lot of positioned text display using TYPE, Logo will force
printing whenever SETCURSOR is invoked. This solves most buffering
problems. Still, on occasion you may find it necessary to force the
buffered characters to be printed explicitly; this can be done using
the WAIT command. WAIT 0 will force printing without actually
waiting.
ucblogo-6.1/helpfiles/turtlemode 0000664 0001750 0001750 00000000135 13600031207 015163 0 ustar jjc jjc TURTLEMODE
outputs the word WRAP, FENCE, or WINDOW depending on the current
turtle mode.
ucblogo-6.1/helpfiles/ts 0000664 0001750 0001750 00000000350 13600031207 013424 0 ustar jjc jjc TEXTSCREEN
TS
rearranges the size and position of windows to maximize the
space available in the text window (the window used for
interaction with Logo). The details differ among machines.
Compare SPLITSCREEN and FULLSCREEN.
ucblogo-6.1/helpfiles/transfer 0000664 0001750 0001750 00000001454 13600031207 014630 0 ustar jjc jjc TRANSFER endtest template inbasket (library procedure)
outputs the result of repeated evaluation of the template.
The template is evaluated once for each member of the list
"inbasket." TRANSFER maintains an "outbasket" that is
initially the empty list. After each evaluation of the
template, the resulting value becomes the new outbasket.
In the template, the symbol ?IN represents the current member
from the inbasket; the symbol ?OUT represents the entire
current outbasket. Other slot symbols should not be used.
If the first (endtest) input is an empty list, evaluation
continues until all inbasket members have been used. If not,
the first input must be a predicate expression template, and
evaluation continues until either that template's value is TRUE
or the inbasket is used up.
ucblogo-6.1/helpfiles/tracedp 0000664 0001750 0001750 00000000576 13600031207 014432 0 ustar jjc jjc TRACEDP contentslist
TRACED? contentslist
outputs TRUE if the first procedure, variable, or property list named
in the contents list is traced, FALSE if not. Only the first thing in
the list is tested; the most common use will be with a word as input,
naming a procedure, but a contents list is allowed so that you can
TRACEDP [[] [VARIABLE]] or TRACEDP [[] [] [PROPLIST]].
ucblogo-6.1/helpfiles/traced 0000664 0001750 0001750 00000000126 13600031207 014241 0 ustar jjc jjc TRACED
outputs a contents list including all traced named items in
the workspace.
ucblogo-6.1/helpfiles/trace 0000664 0001750 0001750 00000000616 13600031207 014101 0 ustar jjc jjc TRACE contentslist
command. Marks the named items for tracing. A message is printed
whenever a traced procedure is invoked, giving the actual input
values, and whenever a traced procedure STOPs or OUTPUTs. A
message is printed whenever a new value is assigned to a traced
variable using MAKE. A message is printed whenever a new property
is given to a traced property list using PPROP.
ucblogo-6.1/helpfiles/towards 0000664 0001750 0001750 00000000251 13600031207 014461 0 ustar jjc jjc TOWARDS pos
outputs a number, the heading at which the turtle should be
facing so that it would point from its current position to
the position given as the input.
ucblogo-6.1/helpfiles/to 0000664 0001750 0001750 00000007262 13600031207 013431 0 ustar jjc jjc TO procname :input1 :input2 ... (special form)
command. Prepares Logo to accept a procedure definition. The
procedure will be named "procname" and there must not already
be a procedure by that name. The inputs will be called "input1"
etc. Any number of inputs are allowed, including none. Names
of procedures and inputs are case-insensitive.
Unlike every other Logo procedure, TO takes as its inputs the
actual words typed in the instruction line, as if they were
all quoted, rather than the results of evaluating expressions
to provide the inputs. (That's what "special form" means.)
This version of Logo allows variable numbers of inputs to a
procedure. After the procedure name come four kinds of
things, *in this order*:
1. 0 or more REQUIRED inputs :FOO :FROBOZZ
2. 0 or more OPTIONAL inputs [:BAZ 87] [:THINGO 5+9]
3. 0 or 1 REST input [:GARPLY]
4. 0 or 1 DEFAULT number 5
Every procedure has a MINIMUM, DEFAULT, and MAXIMUM
number of inputs. (The latter can be infinite.)
The MINIMUM number of inputs is the number of required inputs,
which must come first. A required input is indicated by the
:inputname
notation.
After all the required inputs can be zero or more optional inputs,
each of which is represented by the following notation:
[:inputname default.value.expression]
When the procedure is invoked, if actual inputs are not supplied
for these optional inputs, the default value expressions are
evaluated to set values for the corresponding input names. The
inputs are processed from left to right, so a default value
expression can be based on earlier inputs. Example:
to proc :inlist [:startvalue first :inlist]
If the procedure is invoked by saying
proc [a b c]
then the variable INLIST will have the value [A B C] and the
variable STARTVALUE will have the value A. If the procedure
is invoked by saying
(proc [a b c] "x)
then INLIST will have the value [A B C] and STARTVALUE will
have the value X.
After all the required and optional input can come a single "rest"
input, represented by the following notation:
[:inputname]
This is a rest input rather than an optional input because there
is no default value expression. There can be at most one rest
input. When the procedure is invoked, the value of this inputname
will be a list containing all of the actual inputs provided that
were not used for required or optional inputs. Example:
to proc :in1 [:in2 "foo] [:in3 "baz] [:in4]
If this procedure is invoked by saying
proc "x
then IN1 has the value X, IN2 has the value FOO, IN3 has the value
BAZ, and IN4 has the value [] (the empty list). If it's invoked
by saying
(proc "a "b "c "d "e)
then IN1 has the value A, IN2 has the value B, IN3 has the value C,
and IN4 has the value [D E].
The MAXIMUM number of inputs for a procedure is infinite if a
rest input is given; otherwise, it is the number of required
inputs plus the number of optional inputs.
The DEFAULT number of inputs for a procedure, which is the number
of inputs that it will accept if its invocation is not enclosed
in parentheses, is ordinarily equal to the minimum number. If
you want a different default number you can indicate that by
putting the desired default number as the last thing on the
TO line. example:
to proc :in1 [:in2 "foo] [:in3] 3
This procedure has a minimum of one input, a default of three
inputs, and an infinite maximum.
Logo responds to the TO command by entering procedure definition
mode. The prompt character changes from "?" to ">" and whatever
instructions you type become part of the definition until you
type a line containing only the word END.
ucblogo-6.1/helpfiles/throw 0000664 0001750 0001750 00000003060 13600031207 014142 0 ustar jjc jjc THROW tag
(THROW tag value)
command. Must be used within the scope of a CATCH with an equal
tag. Ends the running of the instructionlist of the CATCH. If
THROW is used with only one input, the corresponding CATCH does
not output a value. If THROW is used with two inputs, the second
provides an output for the CATCH.
THROW "TOPLEVEL can be used to terminate all running procedures and
interactive pauses, and return to the toplevel instruction prompt.
Typing the system interrupt character (alt-S for wxWidgets; otherwise
normally control-C for Unix, control-Q for DOS, or command-period for
Mac) has the same effect.
THROW "ERROR can be used to generate an error condition. If the
error is not caught, it prints a message (THROW "ERROR) with the
usual indication of where the error (in this case the THROW)
occurred. If a second input is used along with a tag of ERROR,
that second input is used as the text of the error message
instead of the standard message. Also, in this case, the location
indicated for the error will be, not the location of the THROW,
but the location where the procedure containing the THROW was
invoked. This allows user-defined procedures to generate error
messages as if they were primitives. Note: in this case the
corresponding CATCH "ERROR, if any, does not output, since the second
input to THROW is not considered a return value.
THROW "SYSTEM immediately leaves Logo, returning to the operating
system, without printing the usual parting message and without
deleting any editor temporary file written by EDIT.
ucblogo-6.1/helpfiles/thing 0000664 0001750 0001750 00000000470 13600031207 014112 0 ustar jjc jjc THING varname
:quoted.varname
outputs the value of the variable whose name is the input.
If there is more than one such variable, the innermost local
variable of that name is chosen. The colon notation is an
abbreviation not for THING but for the combination
thing "
so that :FOO means THING "FOO.
ucblogo-6.1/helpfiles/textsize 0000664 0001750 0001750 00000000336 13600031207 014661 0 ustar jjc jjc TEXTSIZE
(wxWidgets only) outputs the "point size" of the font used in the text
and edit windows. See SETTEXTSIZE for a discussion of font sizing.
See LABELSIZE for a different approach used for the graphics window.
ucblogo-6.1/helpfiles/textscreen 0000664 0001750 0001750 00000000350 13600031207 015162 0 ustar jjc jjc TEXTSCREEN
TS
rearranges the size and position of windows to maximize the
space available in the text window (the window used for
interaction with Logo). The details differ among machines.
Compare SPLITSCREEN and FULLSCREEN.
ucblogo-6.1/helpfiles/text 0000664 0001750 0001750 00000000550 13600031207 013764 0 ustar jjc jjc TEXT procname
outputs the text of the procedure named "procname" in the form
expected by DEFINE: a list of lists, the first of which describes
the inputs to the procedure and the rest of which are the lines of
its body. The text does not reflect formatting information used
when the procedure was defined, such as continuation lines and
extra spaces.
ucblogo-6.1/helpfiles/test 0000664 0001750 0001750 00000000423 13600031207 013756 0 ustar jjc jjc TEST tf
command. Remembers its input, which must be TRUE or FALSE, for use
by later IFTRUE or IFFALSE instructions. The effect of TEST is local
to the procedure in which it is used; any corresponding IFTRUE or
IFFALSE must be in the same procedure or a subprocedure.
ucblogo-6.1/helpfiles/tag 0000664 0001750 0001750 00000000264 13600031207 013555 0 ustar jjc jjc TAG quoted.word
command. Does nothing. The input must be a literal word following
a quotation mark ("), not the result of a computation. Tags are
used by the GOTO command.
ucblogo-6.1/helpfiles/sum 0000664 0001750 0001750 00000000125 13600031207 013602 0 ustar jjc jjc SUM num1 num2
(SUM num1 num2 num3 ...)
num1 + num2
outputs the sum of its inputs.
ucblogo-6.1/helpfiles/substringp 0000664 0001750 0001750 00000000335 13600031207 015201 0 ustar jjc jjc SUBSTRINGP thing1 thing2
SUBSTRING? thing1 thing2
if "thing1" or "thing2" is a list or an array, outputs FALSE. If
"thing2" is a word, outputs TRUE if "thing1" is EQUALP to a
substring of "thing2", FALSE otherwise.
ucblogo-6.1/helpfiles/stop 0000664 0001750 0001750 00000000303 13600031207 013761 0 ustar jjc jjc STOP
command. Ends the running of the procedure in which it appears.
Control is returned to the context in which that procedure was
invoked. The stopped procedure does not output a value.
ucblogo-6.1/helpfiles/steppedp 0000664 0001750 0001750 00000000603 13600031207 014623 0 ustar jjc jjc STEPPEDP contentslist
STEPPED? contentslist
outputs TRUE if the first procedure, variable, or property list named
in the contents list is stepped, FALSE if not. Only the first thing
in the list is tested; the most common use will be with a word as
input, naming a procedure, but a contents list is allowed so that you
can STEPPEDP [[] [VARIABLE]] or STEPPEDP [[] [] [PROPLIST]].
ucblogo-6.1/helpfiles/stepped 0000664 0001750 0001750 00000000130 13600031207 014436 0 ustar jjc jjc STEPPED
outputs a contents list including all stepped named items in
the workspace.
ucblogo-6.1/helpfiles/step 0000664 0001750 0001750 00000000657 13600031207 013763 0 ustar jjc jjc STEP contentslist
command. Marks the named items for stepping. Whenever a stepped
procedure is invoked, each instruction line in the procedure body
is printed before being executed, and Logo waits for the user to
type a newline at the terminal. A message is printed whenever a
stepped variable name is "shadowed" because a local variable of
the same name is created either as a procedure input or by the
LOCAL command.
ucblogo-6.1/helpfiles/startup 0000664 0001750 0001750 00000000213 13600031207 014476 0 ustar jjc jjc STARTUP (variable)
if assigned a list value in a file loaded by LOAD, that value is
run as an instructionlist after the loading.
ucblogo-6.1/helpfiles/standout 0000664 0001750 0001750 00000002046 13600031207 014643 0 ustar jjc jjc STANDOUT thing
outputs a word that, when printed, will appear like the input but
displayed in standout mode (boldface, reverse video, or whatever your
version does for standout). The word contains machine-specific
magic characters at the beginning and end; in between is the printed
form (as if displayed using TYPE) of the input. The output is always
a word, even if the input is of some other type, but it may include
spaces and other formatting characters. Note: a word output by
STANDOUT while Logo is running on one machine will probably not have
the desired effect if printed on another type of machine.
In the Macintosh classic version, the way that standout works is
incompatible with the use of characters whose ASCII code is greater
than 127. Therefore, you have a choice to make: The instruction
CANINVERSE 0
disables standout, but enables the display of ASCII codes above 127,
and the instruction
CANINVERSE 1
restores the default situation in which standout is enabled and the
extra graphic characters cannot be printed.
ucblogo-6.1/helpfiles/st 0000664 0001750 0001750 00000000053 13600031207 013424 0 ustar jjc jjc SHOWTURTLE
ST
makes the turtle visible.
ucblogo-6.1/helpfiles/ss 0000664 0001750 0001750 00000000351 13600031207 013424 0 ustar jjc jjc SPLITSCREEN
SS
rearranges the size and position of windows to allow some room for
text interaction while also keeping most of the graphics window
visible. The details differ among machines. Compare TEXTSCREEN
and FULLSCREEN.
ucblogo-6.1/helpfiles/sqrt 0000664 0001750 0001750 00000000115 13600031207 013766 0 ustar jjc jjc SQRT num
outputs the square root of the input, which must be nonnegative.
ucblogo-6.1/helpfiles/splitscreen 0000664 0001750 0001750 00000000351 13600031207 015332 0 ustar jjc jjc SPLITSCREEN
SS
rearranges the size and position of windows to allow some room for
text interaction while also keeping most of the graphics window
visible. The details differ among machines. Compare TEXTSCREEN
and FULLSCREEN.
ucblogo-6.1/helpfiles/sin 0000664 0001750 0001750 00000000111 13600031207 013562 0 ustar jjc jjc SIN degrees
outputs the sine of its input, which is taken in degrees.
ucblogo-6.1/helpfiles/showturtle 0000664 0001750 0001750 00000000053 13600031207 015216 0 ustar jjc jjc SHOWTURTLE
ST
makes the turtle visible.
ucblogo-6.1/helpfiles/shownp 0000664 0001750 0001750 00000000200 13600031207 014306 0 ustar jjc jjc SHOWNP
SHOWN?
outputs TRUE if the turtle is shown (visible), FALSE if the
turtle is hidden. See SHOWTURTLE and HIDETURTLE.
ucblogo-6.1/helpfiles/show 0000664 0001750 0001750 00000000242 13600031207 013756 0 ustar jjc jjc SHOW thing
(SHOW thing1 thing2 ...)
command. Prints the input or inputs like PRINT, except that
if an input is a list it is printed inside square brackets.
ucblogo-6.1/helpfiles/shell 0000664 0001750 0001750 00000002473 13600031207 014115 0 ustar jjc jjc SHELL command
(SHELL command wordflag)
Under Unix, outputs the result of running "command" as a shell
command. (The command is sent to /bin/sh, not csh or other
alternatives.) If the command is a literal list in the instruction
line, and if you want a backslash character sent to the shell, you
must use \\ to get the backslash through Logo's reader intact. The
output is a list containing one member for each line generated by
the shell command. Ordinarily each such line is represented by a
list in the output, as though the line were read using READLIST. If
a second input is given, regardless of the value of the input, each
line is represented by a word in the output as though it were read
with READWORD. Example:
to dayofweek
output first first shell [date]
end
This is "first first" to extract the first word of the first (and
only) line of the shell output.
Under MacOS X, SHELL works as under Unix. SHELL is not available
under Mac Classic.
Under DOS, SHELL is a command, not an operation; it sends its
input to a DOS command processor but does not collect the result
of the command.
Under Windows, the wxWidgets version of Logo behaves as under Unix (except
that DOS-style commands are understood; use "dir" rather than "ls").
The non-wxWidgets version behaves like the DOS version.
ucblogo-6.1/helpfiles/sety 0000664 0001750 0001750 00000000214 13600031207 013761 0 ustar jjc jjc SETY ycor
moves the turtle vertically from its old position to a new
absolute vertical coordinate. The input is the new Y
coordinate.
ucblogo-6.1/helpfiles/setxy 0000664 0001750 0001750 00000000213 13600031207 014150 0 ustar jjc jjc SETXY xcor ycor
moves the turtle to an absolute position in the graphics window. The
two inputs are numbers, the X and Y coordinates.
ucblogo-6.1/helpfiles/setx 0000664 0001750 0001750 00000000220 13600031207 013755 0 ustar jjc jjc SETX xcor
moves the turtle horizontally from its old position to a new
absolute horizontal coordinate. The input is the new X
coordinate.
ucblogo-6.1/helpfiles/setwritepos 0000664 0001750 0001750 00000000475 13600031207 015376 0 ustar jjc jjc SETWRITEPOS charpos
command. Sets the file pointer of the write stream file so that the
next PRINT, etc., will begin writing at the "charpos"th character
in the file, counting from 0. (That is, SETWRITEPOS 0 will start
writing from the beginning of the file.) Meaningless if the write
stream is the screen.
ucblogo-6.1/helpfiles/setwrite 0000664 0001750 0001750 00000002417 13600031207 014652 0 ustar jjc jjc SETWRITE filename
command. Makes the named file the write stream, used for PRINT,
etc. The file must already be open with OPENWRITE, OPENAPPEND, or
OPENUPDATE. If the input is the empty list, then the write stream
becomes the screen, as usual. Changing the write stream does
not close the file that was previously the write stream, so it is
possible to alternate between files.
If the input is a list, then its first element must be a variable
name, and its second and last element must be a positive integer; a
buffer of that many characters will be allocated, and will become the
writestream. If the same list (same in the .EQ sense, not a copy)
has been used as input to OPENWRITE, then the already-allocated
buffer will be used, and the writer can be changed to and from this
buffer, with all the characters accumulated as in a file. When the
same list is used as input to CLOSE, the contents of the buffer
(as an unparsed word, which may contain newline characters) will
become the value of the named variable. For compatibility with
earlier versions, if the list has not been opened when the SETWRITE
is done, it will be opened implicitly, but the first SETWRITE after
this one will implicitly close it, setting the variable and freeing
the allocated buffer.
ucblogo-6.1/helpfiles/settextsize 0000664 0001750 0001750 00000001024 13600031207 015370 0 ustar jjc jjc SETTEXTSIZE height
command (wxWidgets only). Set the "point size" of the font used in
the text and edit windows to the given integer input. The desired
size may not be available, in which case the nearest available size
will be used. Note: There is only a slight correlation between these
integers and pixel sizes. Our rough estimate is that the number of
pixels of height is about 1.5 times the point size, but it varies for
different fonts. See SETLABELHEIGHT for a different approach used for
the graphics window.
ucblogo-6.1/helpfiles/settextfont 0000664 0001750 0001750 00000000520 13557147341 015406 0 ustar jjc jjc SETTEXTFONT fontname
command (wxWidgets only). Set the font family used in the text window
to the one named by the input. Try 'Courier' or 'Monospace' as likely
possibilities. Not all computers have the same fonts installed. It's
a good idea to stick with monospace fonts (ones in which all
characters have the same width).
ucblogo-6.1/helpfiles/settextcolor 0000664 0001750 0001750 00000002063 13600031207 015540 0 ustar jjc jjc SETTEXTCOLOR foreground background
SETTC foreground background
command (wxWidgets only). The inputs are color numbers, or RGB color
lists, as for turtle graphics. The foreground and background colors
for the textscreen/splitscreen text window are changed to the given
values. The change affects text already printed as well as future
text printing; there is only one text color for the entire window.
command (non-wxWidgets Windows and DOS extended only). The inputs are
color numbers, as for turtle graphics. Future printing to the text
window will use the specified colors for foreground (the characters
printed) and background (the space under those characters). Using
STANDOUT will revert to the default text window colors. In the DOS
extended (ucblogo.exe) version, colors in textscreen mode are limited
to numbers 0-7, and the coloring applies only to text printed by the
program, not to the echoing of text typed by the user. Neither
limitation applies to the text portion of splitscreen mode, which is
actually drawn as graphics internally.
ucblogo-6.1/helpfiles/settemploc 0000664 0001750 0001750 00000000370 13600031207 015157 0 ustar jjc jjc SETTEMPLOC path
command. Tells Logo to write editor temporary files in the specified
directory rather than in the default directory. You must have write
permission for this directory. The format of a path depends on your
operating system.
ucblogo-6.1/helpfiles/settc 0000664 0001750 0001750 00000002063 13600031207 014123 0 ustar jjc jjc SETTEXTCOLOR foreground background
SETTC foreground background
command (wxWidgets only). The inputs are color numbers, or RGB color
lists, as for turtle graphics. The foreground and background colors
for the textscreen/splitscreen text window are changed to the given
values. The change affects text already printed as well as future
text printing; there is only one text color for the entire window.
command (non-wxWidgets Windows and DOS extended only). The inputs are
color numbers, as for turtle graphics. Future printing to the text
window will use the specified colors for foreground (the characters
printed) and background (the space under those characters). Using
STANDOUT will revert to the default text window colors. In the DOS
extended (ucblogo.exe) version, colors in textscreen mode are limited
to numbers 0-7, and the coloring applies only to text printed by the
program, not to the echoing of text typed by the user. Neither
limitation applies to the text portion of splitscreen mode, which is
actually drawn as graphics internally.
ucblogo-6.1/helpfiles/setscrunch 0000664 0001750 0001750 00000002034 13600031207 015160 0 ustar jjc jjc SETSCRUNCH xscale yscale
adjusts the aspect ratio and scaling of the graphics display.
After this command is used, all further turtle motion will be
adjusted by multiplying the horizontal and vertical extent of
the motion by the two numbers given as inputs. For example,
after the instruction "SETSCRUNCH 2 1" motion at a heading of
45 degrees will move twice as far horizontally as vertically.
If your squares don't come out square, try this. (Alternatively,
you can deliberately misadjust the aspect ratio to draw an ellipse.)
In wxWidgets only, SETSCRUNCH also changes the size of the text font
used for the LABEL command to try to keep the height of characters
scaled with the vertical turtle step size.
For all modern computers For DOS machines, the scale factors are
initially set according to what the hardware claims the aspect ratio
is, but the hardware sometimes lies. For DOS, the values set by
SETSCRUNCH are remembered in a file (called SCRUNCH.DAT) and are
automatically put into effect when a Logo session begins.
ucblogo-6.1/helpfiles/setreadpos 0000664 0001750 0001750 00000000474 13600031207 015156 0 ustar jjc jjc SETREADPOS charpos
command. Sets the file pointer of the read stream file so that the
next READLIST, etc., will begin reading at the "charpos"th character
in the file, counting from 0. (That is, SETREADPOS 0 will start
reading from the beginning of the file.) Meaningless if the read
stream is the screen.
ucblogo-6.1/helpfiles/setread 0000664 0001750 0001750 00000000570 13600031207 014431 0 ustar jjc jjc SETREAD filename
command. Makes the named file the read stream, used for READLIST,
etc. The file must already be open with OPENREAD or OPENUPDATE. If
the input is the empty list, then the read stream becomes the
keyboard, as usual. Changing the read stream does not close the
file that was previously the read stream, so it is possible to
alternate between files.
ucblogo-6.1/helpfiles/setprefix 0000664 0001750 0001750 00000000725 13600031207 015015 0 ustar jjc jjc SETPREFIX string
command. Sets a prefix that will be used as the implicit beginning
of filenames in OPENREAD, OPENWRITE, OPENAPPEND, OPENUPDATE, LOAD,
and SAVE commands. Logo will put the appropriate separator
character (slash for Unix, backslash for DOS/Windows, colon for
MacOS Classic) between the prefix and the filename entered by the user.
The input to SETPREFIX must be a word, unless it is the empty list,
to indicate that there should be no prefix.
ucblogo-6.1/helpfiles/setpos 0000664 0001750 0001750 00000000216 13600031207 014314 0 ustar jjc jjc SETPOS pos
moves the turtle to an absolute position in the graphics window. The
input is a list of two numbers, the X and Y coordinates.
ucblogo-6.1/helpfiles/setpensize 0000664 0001750 0001750 00000000404 13600031207 015167 0 ustar jjc jjc SETPENSIZE size
sets the thickness of the pen. The input is either a single positive
integer or a list of two positive integers (for horizontal and
vertical thickness). Some versions pay no attention to the second
number, but always have a square pen.
ucblogo-6.1/helpfiles/setpenpattern 0000664 0001750 0001750 00000000242 13600031207 015672 0 ustar jjc jjc SETPENPATTERN pattern
sets hardware-dependent pen characteristics. This command is
not guaranteed compatible between implementations on different
machines.
ucblogo-6.1/helpfiles/setpencolor 0000664 0001750 0001750 00000001165 13600031207 015340 0 ustar jjc jjc SETPENCOLOR colornumber.or.rgblist
SETPC colornumber.or.rgblist
sets the pen color to the given number, which must be a nonnegative
integer. There are initial assignments for the first 16 colors:
0 black 1 blue 2 green 3 cyan
4 red 5 magenta 6 yellow 7 white
8 brown 9 tan 10 forest 11 aqua
12 salmon 13 purple 14 orange 15 grey
but other colors can be assigned to numbers by the PALETTE command.
Alternatively, sets the pen color to the given RGB values (a list of
three nonnegative numbers less than 100 specifying the percent
saturation of red, green, and blue in the desired color).
ucblogo-6.1/helpfiles/setpen 0000664 0001750 0001750 00000000344 13600031207 014277 0 ustar jjc jjc SETPEN list (library procedure)
sets the pen's position, mode, thickness, and hardware-dependent
characteristics according to the information in the input list, which
should be taken from an earlier invocation of PEN.
ucblogo-6.1/helpfiles/setpc 0000664 0001750 0001750 00000001165 13600031207 014121 0 ustar jjc jjc SETPENCOLOR colornumber.or.rgblist
SETPC colornumber.or.rgblist
sets the pen color to the given number, which must be a nonnegative
integer. There are initial assignments for the first 16 colors:
0 black 1 blue 2 green 3 cyan
4 red 5 magenta 6 yellow 7 white
8 brown 9 tan 10 forest 11 aqua
12 salmon 13 purple 14 orange 15 grey
but other colors can be assigned to numbers by the PALETTE command.
Alternatively, sets the pen color to the given RGB values (a list of
three nonnegative numbers less than 100 specifying the percent
saturation of red, green, and blue in the desired color).
ucblogo-6.1/helpfiles/setpalette 0000664 0001750 0001750 00000000625 13600031207 015155 0 ustar jjc jjc SETPALETTE colornumber rgblist
sets the actual color corresponding to a given number, if allowed by
the hardware and operating system. Colornumber must be an integer
greater than or equal to 8. (Logo tries to keep the first 8 colors
constant.) The second input is a list of three nonnegative numbers
less than 100 specifying the percent saturation of red, green, and
blue in the desired color.
ucblogo-6.1/helpfiles/setmargins 0000664 0001750 0001750 00000001365 13600031207 015161 0 ustar jjc jjc SETMARGINS vector
command. The input must be a list of two numbers, as for
SETCURSOR. The effect is to clear the screen and then arrange for
all further printing to be shifted down and to the right according
to the indicated margins. Specifically, every time a newline
character is printed (explicitly or implicitly) Logo will type
x_margin spaces, and on every invocation of SETCURSOR the margins
will be added to the input x and y coordinates. (CURSOR will report
the cursor position relative to the margins, so that this shift will
be invisible to Logo programs.) The purpose of this command is to
accommodate the display of terminal screens in lecture halls with
inadequate TV monitors that miss the top and left edges of the
screen.
ucblogo-6.1/helpfiles/setlibloc 0000664 0001750 0001750 00000000504 13600031207 014757 0 ustar jjc jjc SETLIBLOC path
command. Tells Logo to use the specified directory as its library
instead of the default. (Note that many Logo "primitive" procedures
are actually found in the library, so they may become unavailable if
your new library does not include them!) The format of a path depends
on your operating system.
ucblogo-6.1/helpfiles/setlabelheight 0000664 0001750 0001750 00000001067 13600031207 015770 0 ustar jjc jjc SETLABELHEIGHT height
command (wxWidgets only). Takes a positive integer argument and tries
to set the font size so that the character height (including
descenders) is that many turtle steps. This will be different from
the number of screen pixels if SETSCRUNCH has been used. Also, note
that SETSCRUNCH changes the font size to try to preserve this height
in turtle steps. Note that the query operation corresponding to this
command is LABELSIZE, not LABELHEIGHT, because it tells you the width
as well as the height of characters in the current font.
ucblogo-6.1/helpfiles/setitem 0000664 0001750 0001750 00000000333 13600031207 014451 0 ustar jjc jjc SETITEM index array value
command. Replaces the "index"th member of "array" with the new
"value". Ensures that the resulting array is not circular, i.e.,
"value" may not be a list or array that contains "array".
ucblogo-6.1/helpfiles/sethelploc 0000664 0001750 0001750 00000000331 13600031207 015137 0 ustar jjc jjc SETHELPLOC path
command. Tells Logo to look in the specified directory for the
information provided by the HELP command, instead of the default
directory. The format of a path depends on your operating system.
ucblogo-6.1/helpfiles/setheading 0000664 0001750 0001750 00000000244 13600031207 015113 0 ustar jjc jjc SETHEADING degrees
SETH degrees
turns the turtle to a new absolute heading. The input is
a number, the heading in degrees clockwise from the positive
Y axis.
ucblogo-6.1/helpfiles/seth 0000664 0001750 0001750 00000000244 13600031207 013743 0 ustar jjc jjc SETHEADING degrees
SETH degrees
turns the turtle to a new absolute heading. The input is
a number, the heading in degrees clockwise from the positive
Y axis.
ucblogo-6.1/helpfiles/setfont 0000664 0001750 0001750 00000000507 13600031207 014464 0 ustar jjc jjc SETFONT fontname
command (wxWidgets only). Set the font family used in all windows
to the one named by the input. Try 'Courier' or 'Monospace' as likely
possibilities. Not all computers have the same fonts installed. It's
a good idea to stick with monospace fonts (ones in which all
characters have the same width).
ucblogo-6.1/helpfiles/seteditor 0000664 0001750 0001750 00000000253 13600031207 015002 0 ustar jjc jjc SETEDITOR path
command. Tells Logo to use the specified program as its editor
instead of the default editor. The format of a path depends on your
operating system.
ucblogo-6.1/helpfiles/setcursor 0000664 0001750 0001750 00000000476 13600031207 015040 0 ustar jjc jjc SETCURSOR vector
command. The input is a list of two numbers, the x and y
coordinates of a text window position (origin in the upper left
corner, positive direction is southeast). The text cursor
is moved to the requested position. This command also forces
the immediate printing of any buffered characters.
ucblogo-6.1/helpfiles/setcslsloc 0000664 0001750 0001750 00000000275 13600031207 015162 0 ustar jjc jjc SETCSLSLOC path
command. Tells Logo to use the specified directory for the CSLSLOAD
command, instead of the default directory. The format of a path
depends on your operating system.
ucblogo-6.1/helpfiles/setbg 0000664 0001750 0001750 00000000242 13600031207 014102 0 ustar jjc jjc SETBACKGROUND colornumber.or.rgblist
SETBG colornumber.or.rgblist
set the screen background color by slot number or RGB values.
See SETPENCOLOR for details.
ucblogo-6.1/helpfiles/setbackground 0000664 0001750 0001750 00000000242 13600031207 015631 0 ustar jjc jjc SETBACKGROUND colornumber.or.rgblist
SETBG colornumber.or.rgblist
set the screen background color by slot number or RGB values.
See SETPENCOLOR for details.
ucblogo-6.1/helpfiles/sentence 0000664 0001750 0001750 00000000363 13600031207 014606 0 ustar jjc jjc SENTENCE thing1 thing2
SE thing1 thing2
(SENTENCE thing1 thing2 thing3 ...)
(SE thing1 thing2 thing3 ...)
outputs a list whose members are its inputs, if those inputs are
not lists, or the members of its inputs, if those inputs are lists.
ucblogo-6.1/helpfiles/se 0000664 0001750 0001750 00000000363 13600031207 013411 0 ustar jjc jjc SENTENCE thing1 thing2
SE thing1 thing2
(SENTENCE thing1 thing2 thing3 ...)
(SE thing1 thing2 thing3 ...)
outputs a list whose members are its inputs, if those inputs are
not lists, or the members of its inputs, if those inputs are lists.
ucblogo-6.1/helpfiles/scrunch 0000664 0001750 0001750 00000000273 13600031207 014447 0 ustar jjc jjc SCRUNCH
outputs a list containing two numbers, the X and Y scrunch
factors, as used by SETSCRUNCH. (But note that SETSCRUNCH
takes two numbers as inputs, not one list of numbers.)
ucblogo-6.1/helpfiles/screenmode 0000664 0001750 0001750 00000000155 13600031207 015125 0 ustar jjc jjc SCREENMODE
outputs the word TEXTSCREEN, SPLITSCREEN, or FULLSCREEN depending
on the current screen mode.
ucblogo-6.1/helpfiles/savepict 0000664 0001750 0001750 00000000615 13600031207 014620 0 ustar jjc jjc SAVEPICT filename
command. Writes a file with the specified name containing the
state of the graphics window, including any nonstandard color
palette settings, in Logo's internal format. This picture can
be restored to the screen using LOADPICT. The format is not
portable between platforms, nor is it readable by other programs.
See EPSPICT to export Logo graphics for other programs.
ucblogo-6.1/helpfiles/savel 0000664 0001750 0001750 00000000303 13600031207 014106 0 ustar jjc jjc SAVEL contentslist filename (library procedure)
command. Saves the definitions of the procedures, variables, and
property lists specified by "contentslist" to the file named
"filename".
ucblogo-6.1/helpfiles/save 0000664 0001750 0001750 00000001114 13600031207 013733 0 ustar jjc jjc SAVE filename
command. Saves the definitions of all unburied procedures,
variables, and nonempty property lists in the named file.
Equivalent to
to save :filename
local "oldwriter
make "oldwriter writer
openwrite :filename
setwrite :filename
poall
setwrite :oldwriter
close :filename
end
Exceptionally, SAVE can be used with no input and without parentheses
if it is the last thing on the command line. In this case, the
filename from the most recent LOAD or SAVE command will be used. (It
is an error if there has been no previous LOAD or SAVE.)
ucblogo-6.1/helpfiles/rw 0000664 0001750 0001750 00000001234 13600031207 013430 0 ustar jjc jjc READWORD
RW
reads a line from the read stream and outputs that line as a word.
The output is a single word even if the line contains spaces,
brackets, etc. If the read stream is a file, and the end of file is
reached, READWORD outputs the empty list (not the empty word).
READWORD processes backslash, vertical bar, and tilde characters in
the read stream. In the case of a tilde used for line continuation,
the output word DOES include the tilde and the newline characters, so
that the user program can tell exactly what the user entered.
Vertical bars in the line are also preserved in the output.
Backslash characters are not preserved in the output.
ucblogo-6.1/helpfiles/runresult 0000664 0001750 0001750 00000000573 13600031207 015050 0 ustar jjc jjc RUNRESULT instructionlist
runs the instructions in the input; outputs an empty list if
those instructions produce no output, or a list whose only
member is the output from running the input instructionlist.
Useful for inventing command-or-operation control structures:
local "result
make "result runresult [something]
if emptyp :result [stop]
output first :result
ucblogo-6.1/helpfiles/runparse 0000664 0001750 0001750 00000000432 13600031207 014636 0 ustar jjc jjc RUNPARSE wordorlist
outputs the list that would result if the input word or list were
entered as an instruction line; characters such as infix operators
and parentheses are separate members of the output. Note that
sublists of a runparsed list are not themselves runparsed.
ucblogo-6.1/helpfiles/run 0000664 0001750 0001750 00000000226 13600031207 013604 0 ustar jjc jjc RUN instructionlist
command or operation. Runs the Logo instructions in the input
list; outputs if the list contains an expression that outputs.
ucblogo-6.1/helpfiles/rt 0000664 0001750 0001750 00000000171 13600031207 013424 0 ustar jjc jjc RIGHT degrees
RT degrees
turns the turtle clockwise by the specified angle, measured in
degrees (1/360 of a circle).
ucblogo-6.1/helpfiles/rseq 0000664 0001750 0001750 00000000351 13600031207 013751 0 ustar jjc jjc RSEQ from to count (library procedure)
outputs a list of COUNT equally spaced rational numbers
between FROM and TO, inclusive.
? show rseq 3 5 9
[3 3.25 3.5 3.75 4 4.25 4.5 4.75 5]
? show rseq 3 5 5
[3 3.5 4 4.5 5]
ucblogo-6.1/helpfiles/round 0000664 0001750 0001750 00000000067 13600031207 014132 0 ustar jjc jjc ROUND num
outputs the nearest integer to the input.
ucblogo-6.1/helpfiles/rl 0000664 0001750 0001750 00000001102 13600031207 013407 0 ustar jjc jjc READLIST
RL
reads a line from the read stream (initially the keyboard) and
outputs that line as a list. The line is separated into members as
though it were typed in square brackets in an instruction. If the
read stream is a file, and the end of file is reached, READLIST
outputs the empty word (not the empty list). READLIST processes
backslash, vertical bar, and tilde characters in the read stream;
the output list will not contain these characters but they will have
had their usual effect. READLIST does not, however, treat semicolon
as a comment character.
ucblogo-6.1/helpfiles/right 0000664 0001750 0001750 00000000171 13600031207 014114 0 ustar jjc jjc RIGHT degrees
RT degrees
turns the turtle clockwise by the specified angle, measured in
degrees (1/360 of a circle).
ucblogo-6.1/helpfiles/reverse 0000664 0001750 0001750 00000000174 13600031207 014455 0 ustar jjc jjc REVERSE list (library procedure)
outputs a list whose members are the members of the input list, in
reverse order.
ucblogo-6.1/helpfiles/rerandom 0000664 0001750 0001750 00000000712 13600031207 014607 0 ustar jjc jjc RERANDOM
(RERANDOM seed)
command. Makes the results of RANDOM reproducible. Ordinarily
the sequence of random numbers is different each time Logo is
used. If you need the same sequence of pseudo-random numbers
repeatedly, e.g. to debug a program, say RERANDOM before the
first invocation of RANDOM. If you need more than one repeatable
sequence, you can give RERANDOM an integer input; each possible
input selects a unique sequence of numbers.
ucblogo-6.1/helpfiles/repeat 0000664 0001750 0001750 00000000134 13600031207 014256 0 ustar jjc jjc REPEAT num instructionlist
command. Runs the "instructionlist" repeatedly, "num" times.
ucblogo-6.1/helpfiles/repcount 0000664 0001750 0001750 00000000515 13600031207 014640 0 ustar jjc jjc REPCOUNT
outputs the repetition count of the innermost current REPEAT or
FOREVER, starting from 1. If no REPEAT or FOREVER is active,
outputs -1.
The abbreviation # can be used for REPCOUNT unless the REPEAT is
inside the template input to a higher order procedure such as
FOREACH, in which case # has a different meaning.
ucblogo-6.1/helpfiles/remprop 0000664 0001750 0001750 00000000171 13600031207 014463 0 ustar jjc jjc REMPROP plistname propname
command. Removes the property named "propname" from the
property list named "plistname".
ucblogo-6.1/helpfiles/remove 0000664 0001750 0001750 00000000162 13600031207 014274 0 ustar jjc jjc REMOVE thing list (library procedure)
outputs a copy of "list" with every member equal to "thing" removed.
ucblogo-6.1/helpfiles/remdup 0000664 0001750 0001750 00000000331 13600031207 014271 0 ustar jjc jjc REMDUP list (library procedure)
outputs a copy of "list" with duplicate members removed. If two or
more members of the input are equal, the rightmost of those members
is the one that remains in the output.
ucblogo-6.1/helpfiles/remainder 0000664 0001750 0001750 00000000233 13600031207 014744 0 ustar jjc jjc REMAINDER num1 num2
outputs the remainder on dividing "num1" by "num2"; both must be
integers and the result is an integer with the same sign as num1.
ucblogo-6.1/helpfiles/refresh 0000664 0001750 0001750 00000000365 13600031207 014442 0 ustar jjc jjc REFRESH
(command) tells Logo to remember the turtle's motions so that they
can be used for high-resolution printing (wxWidgets) or to refresh
the graphics window if it is moved, resized, or overlayed
(non-wxWidgets). This is the default.
ucblogo-6.1/helpfiles/reduce 0000664 0001750 0001750 00000002533 13600031207 014252 0 ustar jjc jjc REDUCE template data (library procedure)
outputs the result of applying the template to accumulate the
members of the data input. The template must be a two-slot
function. Typically it is an associative function name like SUM.
If the data input has only one constituent (member in a list or
character in a word), the output is that consituent. Otherwise,
the template is first applied with ?1 filled with the next-to-last
consitient and ?2 with the last constituent. Then, if there are
more constituents, the template is applied with ?1 filled with the
next constituent to the left and ?2 with the result from the
previous evaluation. This process continues until all constituents
have been used. The data input may not be empty.
Note: If the template is, like SUM, the name of a procedure that is
capable of accepting arbitrarily many inputs, it is more efficient
to use APPLY instead of REDUCE. The latter is good for associative
procedures that have been written to accept exactly two inputs:
to max :a :b
output ifelse :a > :b [:a] [:b]
end
print reduce "max [...]
Alternatively, REDUCE can be used to write MAX as a procedure
that accepts any number of inputs, as SUM does:
to max [:inputs] 2
if emptyp :inputs ~
[(throw "error [not enough inputs to max])]
output reduce [ifelse ?1 > ?2 [?1] [?2]] :inputs
end
ucblogo-6.1/helpfiles/redefp 0000664 0001750 0001750 00000000143 13600031207 014243 0 ustar jjc jjc REDEFP (variable)
if TRUE, allows primitives to be erased (ERASE) or redefined (COPYDEF).
ucblogo-6.1/helpfiles/readword 0000664 0001750 0001750 00000001234 13600031207 014607 0 ustar jjc jjc READWORD
RW
reads a line from the read stream and outputs that line as a word.
The output is a single word even if the line contains spaces,
brackets, etc. If the read stream is a file, and the end of file is
reached, READWORD outputs the empty list (not the empty word).
READWORD processes backslash, vertical bar, and tilde characters in
the read stream. In the case of a tilde used for line continuation,
the output word DOES include the tilde and the newline characters, so
that the user program can tell exactly what the user entered.
Vertical bars in the line are also preserved in the output.
Backslash characters are not preserved in the output.
ucblogo-6.1/helpfiles/readrawline 0000664 0001750 0001750 00000000714 13600031207 015277 0 ustar jjc jjc READRAWLINE
reads a line from the read stream and outputs that line as a word.
The output is a single word even if the line contains spaces,
brackets, etc. If the read stream is a file, and the end of file is
reached, READRAWLINE outputs the empty list (not the empty word).
READRAWLINE outputs the exact string of characters as they appear
in the line, with no special meaning for backslash, vertical bar,
tilde, or any other formatting characters.
ucblogo-6.1/helpfiles/readpos 0000664 0001750 0001750 00000000106 13600031207 014432 0 ustar jjc jjc READPOS
outputs the file position of the current read stream file.
ucblogo-6.1/helpfiles/readlist 0000664 0001750 0001750 00000001102 13600031207 014601 0 ustar jjc jjc READLIST
RL
reads a line from the read stream (initially the keyboard) and
outputs that line as a list. The line is separated into members as
though it were typed in square brackets in an instruction. If the
read stream is a file, and the end of file is reached, READLIST
outputs the empty word (not the empty list). READLIST processes
backslash, vertical bar, and tilde characters in the read stream;
the output list will not contain these characters but they will have
had their usual effect. READLIST does not, however, treat semicolon
as a comment character.
ucblogo-6.1/helpfiles/reader 0000664 0001750 0001750 00000000163 13600031207 014242 0 ustar jjc jjc READER
outputs the name of the current read stream file, or the empty list
if the read stream is the terminal.
ucblogo-6.1/helpfiles/readchars 0000664 0001750 0001750 00000000750 13600031207 014736 0 ustar jjc jjc READCHARS num
RCS num
reads "num" characters from the read stream and outputs those
characters as a word. If the read stream is a file, and the end of
file is reached, READCHARS outputs the empty list (not the empty
word). If the read stream is a terminal, echoing is turned off
when READCHARS is invoked, and remains off until READLIST or READWORD
is invoked or a Logo prompt is printed. Backslash, vertical bar,
and tilde characters have no special meaning in this context.
ucblogo-6.1/helpfiles/readchar 0000664 0001750 0001750 00000000736 13600031207 014557 0 ustar jjc jjc READCHAR
RC
reads a single character from the read stream and outputs that
character as a word. If the read stream is a file, and the end of
file is reached, READCHAR outputs the empty list (not the empty
word). If the read stream is the keyboard, echoing is turned off
when READCHAR is invoked, and remains off until READLIST or READWORD
is invoked or a Logo prompt is printed. Backslash, vertical bar,
and tilde characters have no special meaning in this context.
ucblogo-6.1/helpfiles/rcs 0000664 0001750 0001750 00000000750 13600031207 013571 0 ustar jjc jjc READCHARS num
RCS num
reads "num" characters from the read stream and outputs those
characters as a word. If the read stream is a file, and the end of
file is reached, READCHARS outputs the empty list (not the empty
word). If the read stream is a terminal, echoing is turned off
when READCHARS is invoked, and remains off until READLIST or READWORD
is invoked or a Logo prompt is printed. Backslash, vertical bar,
and tilde characters have no special meaning in this context.
ucblogo-6.1/helpfiles/rc 0000664 0001750 0001750 00000000736 13600031207 013412 0 ustar jjc jjc READCHAR
RC
reads a single character from the read stream and outputs that
character as a word. If the read stream is a file, and the end of
file is reached, READCHAR outputs the empty list (not the empty
word). If the read stream is the keyboard, echoing is turned off
when READCHAR is invoked, and remains off until READLIST or READWORD
is invoked or a Logo prompt is printed. Backslash, vertical bar,
and tilde characters have no special meaning in this context.
ucblogo-6.1/helpfiles/rawascii 0000664 0001750 0001750 00000000366 13600031207 014607 0 ustar jjc jjc RAWASCII char
outputs the integer (between 0 and 255) that represents the input
character in the ASCII code. Interprets control characters as
representing themselves. To find out the ASCII code of an arbitrary
keystroke, use RAWASCII RC.
ucblogo-6.1/helpfiles/random 0000664 0001750 0001750 00000000674 13600031207 014267 0 ustar jjc jjc RANDOM num
(RANDOM start end)
with one input, outputs a random nonnegative integer less than its
input, which must be a positive integer.
With two inputs, RANDOM outputs a random integer greater than or
equal to the first input, and less than or equal to the second
input. Both inputs must be integers, and the first must be less
than the second. (RANDOM 0 9) is equivalent to RANDOM 10;
(RANDOM 3 8) is equivalent to (RANDOM 6)+3.
ucblogo-6.1/helpfiles/radsin 0000664 0001750 0001750 00000000114 13600031207 014254 0 ustar jjc jjc RADSIN radians
outputs the sine of its input, which is taken in radians.
ucblogo-6.1/helpfiles/radcos 0000664 0001750 0001750 00000000116 13600031207 014251 0 ustar jjc jjc RADCOS radians
outputs the cosine of its input, which is taken in radians.
ucblogo-6.1/helpfiles/radarctan 0000664 0001750 0001750 00000000432 13600031207 014736 0 ustar jjc jjc RADARCTAN num
(RADARCTAN x y)
outputs the arctangent, in radians, of its input. With two
inputs, outputs the arctangent of y/x, if x is nonzero, or
pi/2 or -pi/2 depending on the sign of y, if x is zero.
The expression 2*(RADARCTAN 0 1) can be used to get the
value of pi.
ucblogo-6.1/helpfiles/quotient 0000664 0001750 0001750 00000000554 13600031207 014654 0 ustar jjc jjc QUOTIENT num1 num2
(QUOTIENT num)
num1 / num2
outputs the quotient of its inputs. The quotient of two integers
is an integer if and only if the dividend is a multiple of the divisor.
(In other words, QUOTIENT 5 2 is 2.5, not 2, but QUOTIENT 4 2 is
2, not 2.0 -- it does the right thing.) With a single input,
QUOTIENT outputs the reciprocal of the input.
ucblogo-6.1/helpfiles/quoted 0000664 0001750 0001750 00000000207 13600031207 014300 0 ustar jjc jjc QUOTED thing (library procedure)
outputs its input, if a list; outputs its input with a quotation
mark prepended, if a word.
ucblogo-6.1/helpfiles/queue 0000664 0001750 0001750 00000000443 13600031207 014125 0 ustar jjc jjc QUEUE queuename thing (library procedure)
command. Adds the "thing" to the queue that is the value of the
variable whose name is "queuename". This variable must have a list
as its value; the initial value should be the empty list. New
members are added at the back of the list.
ucblogo-6.1/helpfiles/px 0000664 0001750 0001750 00000000207 13600031207 013426 0 ustar jjc jjc PENREVERSE
PX
sets the pen's position to DOWN and mode to REVERSE.
(This may interact in system-dependent ways with use of color.)
ucblogo-6.1/helpfiles/push 0000664 0001750 0001750 00000000443 13600031207 013760 0 ustar jjc jjc PUSH stackname thing (library procedure)
command. Adds the "thing" to the stack that is the value of the
variable whose name is "stackname". This variable must have a list
as its value; the initial value should be the empty list. New
members are added at the front of the list.
ucblogo-6.1/helpfiles/pu 0000664 0001750 0001750 00000000106 13600031207 013421 0 ustar jjc jjc PENUP
PU
sets the pen's position to UP, without changing its mode.
ucblogo-6.1/helpfiles/product 0000664 0001750 0001750 00000000141 13600031207 014454 0 ustar jjc jjc PRODUCT num1 num2
(PRODUCT num1 num2 num3 ...)
num1 * num2
outputs the product of its inputs.
ucblogo-6.1/helpfiles/procedures 0000664 0001750 0001750 00000000364 13600031207 015156 0 ustar jjc jjc PROCEDURES
outputs a list of the names of all unburied user-defined procedures
in the workspace. Note that this is a list of names, not a
contents list. (However, procedures that require a contents list
as input will accept this list.)
ucblogo-6.1/helpfiles/procedurep 0000664 0001750 0001750 00000000131 13600031207 015143 0 ustar jjc jjc PROCEDUREP name
PROCEDURE? name
outputs TRUE if the input is the name of a procedure.
ucblogo-6.1/helpfiles/printwidthlimit 0000664 0001750 0001750 00000000232 13600031207 016230 0 ustar jjc jjc PRINTWIDTHLIMIT (variable)
if a nonnegative integer, indicates the maximum number of members
in any one list that will be printed by PRINT, etc.
ucblogo-6.1/helpfiles/printout 0000664 0001750 0001750 00000000263 13600031207 014665 0 ustar jjc jjc PRINTOUT contentslist
PO contentslist
command. Prints to the write stream the definitions of all
procedures, variables, and property lists named in the input
contents list.
ucblogo-6.1/helpfiles/printdepthlimit 0000664 0001750 0001750 00000000223 13600031207 016215 0 ustar jjc jjc PRINTDEPTHLIMIT (variable)
if a nonnegative integer, indicates the maximum depth of sublist
structure that will be printed by PRINT, etc.
ucblogo-6.1/helpfiles/print 0000664 0001750 0001750 00000000627 13600031207 014141 0 ustar jjc jjc PRINT thing
PR thing
(PRINT thing1 thing2 ...)
(PR thing1 thing2 ...)
command. Prints the input or inputs to the current write stream
(initially the screen). All the inputs are printed on a single
line, separated by spaces, ending with a newline. If an input is a
list, square brackets are not printed around it, but brackets are
printed around sublists. Braces are always printed around arrays.
ucblogo-6.1/helpfiles/primitives 0000664 0001750 0001750 00000000350 13600031207 015171 0 ustar jjc jjc PRIMITIVES
outputs a list of the names of all primitive procedures
in the workspace. Note that this is a list of names, not a
contents list. (However, procedures that require a contents list
as input will accept this list.)
ucblogo-6.1/helpfiles/primitivep 0000664 0001750 0001750 00000000340 13600031207 015165 0 ustar jjc jjc PRIMITIVEP name
PRIMITIVE? name
outputs TRUE if the input is the name of a primitive procedure
(one built into Logo). Note that some of the procedures
described in this document are library procedures, not primitives.
ucblogo-6.1/helpfiles/prefix 0000664 0001750 0001750 00000000130 13600031207 014267 0 ustar jjc jjc PREFIX
outputs the current file prefix, or [] if there is no prefix.
See SETPREFIX.
ucblogo-6.1/helpfiles/pr 0000664 0001750 0001750 00000000627 13600031207 013426 0 ustar jjc jjc PRINT thing
PR thing
(PRINT thing1 thing2 ...)
(PR thing1 thing2 ...)
command. Prints the input or inputs to the current write stream
(initially the screen). All the inputs are printed on a single
line, separated by spaces, ending with a newline. If an input is a
list, square brackets are not printed around it, but brackets are
printed around sublists. Braces are always printed around arrays.
ucblogo-6.1/helpfiles/ppt 0000664 0001750 0001750 00000000103 13600031207 013575 0 ustar jjc jjc PENPAINT
PPT
sets the pen's position to DOWN and mode to PAINT.
ucblogo-6.1/helpfiles/pprop 0000664 0001750 0001750 00000000206 13600031207 014136 0 ustar jjc jjc PPROP plistname propname value
command. Adds a property to the "plistname" property list
with name "propname" and value "value".
ucblogo-6.1/helpfiles/power 0000664 0001750 0001750 00000000154 13600031207 014134 0 ustar jjc jjc POWER num1 num2
outputs "num1" to the "num2" power. If num1 is negative, then
num2 must be an integer.
ucblogo-6.1/helpfiles/pots 0000664 0001750 0001750 00000000217 13600031207 013765 0 ustar jjc jjc POTS (library procedure)
command. Prints the title lines of all unburied procedures
in the workspace. Abbreviates POT PROCEDURES.
ucblogo-6.1/helpfiles/pot 0000664 0001750 0001750 00000000377 13600031207 013611 0 ustar jjc jjc POT contentslist
command. Prints the title lines of the named procedures and
the definitions of the named variables and property lists.
For property lists, the entire list is shown on one line
instead of as a series of PPROP instructions as in PO.
ucblogo-6.1/helpfiles/pos 0000664 0001750 0001750 00000000142 13600031207 013576 0 ustar jjc jjc POS
outputs the turtle's current position, as a list of two
numbers, the X and Y coordinates.
ucblogo-6.1/helpfiles/pops 0000664 0001750 0001750 00000000215 13600031207 013757 0 ustar jjc jjc POPS (library procedure)
command. Prints the definitions of all unburied procedures in
the workspace. Abbreviates PO PROCEDURES.
ucblogo-6.1/helpfiles/popls 0000664 0001750 0001750 00000000224 13600031207 014133 0 ustar jjc jjc POPLS (library procedure)
command. Prints the contents of all unburied nonempty property
lists in the workspace. Abbreviates PO PLISTS.
ucblogo-6.1/helpfiles/popl 0000664 0001750 0001750 00000000235 13600031207 013752 0 ustar jjc jjc POPL plname (library procedure)
POPL plnamelist
command. Prints the definitions of the named property list(s).
Abbreviates PO PLLIST plname(list).
ucblogo-6.1/helpfiles/pop 0000664 0001750 0001750 00000000305 13600031207 013574 0 ustar jjc jjc POP stackname (library procedure)
outputs the most recently PUSHed member of the stack that is the
value of the variable whose name is "stackname" and removes that
member from the stack.
ucblogo-6.1/helpfiles/pons 0000664 0001750 0001750 00000000207 13600031207 013756 0 ustar jjc jjc PONS (library procedure)
command. Prints the definitions of all unburied variables in
the workspace. Abbreviates PO NAMES.
ucblogo-6.1/helpfiles/pon 0000664 0001750 0001750 00000000233 13600031207 013572 0 ustar jjc jjc PON varname (library procedure)
PON varnamelist
command. Prints the definitions of the named variable(s).
Abbreviates PO NAMELIST varname(list).
ucblogo-6.1/helpfiles/poall 0000664 0001750 0001750 00000000171 13600031207 014106 0 ustar jjc jjc POALL (library procedure)
command. Prints all unburied definitions in the workspace.
Abbreviates PO CONTENTS.
ucblogo-6.1/helpfiles/po 0000664 0001750 0001750 00000000263 13600031207 013417 0 ustar jjc jjc PRINTOUT contentslist
PO contentslist
command. Prints to the write stream the definitions of all
procedures, variables, and property lists named in the input
contents list.
ucblogo-6.1/helpfiles/pllist 0000664 0001750 0001750 00000000425 13600031207 014310 0 ustar jjc jjc PLLIST plname (library procedure)
PLLIST plnamelist
outputs a contents list consisting of two empty lists followed by
a list of the name or names given as input. This is useful in
conjunction with workspace control procedures that require a contents
list as input.
ucblogo-6.1/helpfiles/plists 0000664 0001750 0001750 00000000267 13600031207 014323 0 ustar jjc jjc PLISTS
outputs a contents list consisting of two empty lists (indicating
no procedures or variables) followed by a list of all unburied
nonempty property lists in the workspace.
ucblogo-6.1/helpfiles/plistp 0000664 0001750 0001750 00000000426 13600031207 014315 0 ustar jjc jjc PLISTP name
PLIST? name
outputs TRUE if the input is the name of a *nonempty* property list.
(In principle every word is the name of a property list; if you haven't
put any properties in it, PLIST of that name outputs an empty list,
rather than giving an error message.)
ucblogo-6.1/helpfiles/plist 0000664 0001750 0001750 00000000502 13600031207 014130 0 ustar jjc jjc PLIST plistname
outputs a list whose odd-numbered members are the names, and
whose even-numbered members are the values, of the properties
in the property list named "plistname". The output is a copy
of the actual property list; changing properties later will not
magically change a list output earlier by PLIST.
ucblogo-6.1/helpfiles/pick 0000664 0001750 0001750 00000000132 13600031207 013722 0 ustar jjc jjc PICK list (library procedure)
outputs a randomly chosen member of the input list.
ucblogo-6.1/helpfiles/penup 0000664 0001750 0001750 00000000106 13600031207 014124 0 ustar jjc jjc PENUP
PU
sets the pen's position to UP, without changing its mode.
ucblogo-6.1/helpfiles/pensize 0000664 0001750 0001750 00000000316 13600031207 014455 0 ustar jjc jjc PENSIZE
outputs a list of two positive integers, specifying the horizontal
and vertical thickness of the turtle pen. (In some implementations,
including wxWidgets, the two numbers are always equal.)
ucblogo-6.1/helpfiles/penreverse 0000664 0001750 0001750 00000000207 13600031207 015155 0 ustar jjc jjc PENREVERSE
PX
sets the pen's position to DOWN and mode to REVERSE.
(This may interact in system-dependent ways with use of color.)
ucblogo-6.1/helpfiles/penpattern 0000664 0001750 0001750 00000000067 13600031207 015163 0 ustar jjc jjc PENPATTERN
outputs system-specific pen information.
ucblogo-6.1/helpfiles/penpaint 0000664 0001750 0001750 00000000103 13600031207 014610 0 ustar jjc jjc PENPAINT
PPT
sets the pen's position to DOWN and mode to PAINT.
ucblogo-6.1/helpfiles/penmode 0000664 0001750 0001750 00000000141 13600031207 014423 0 ustar jjc jjc PENMODE
outputs one of the words PAINT, ERASE, or REVERSE according to
the current pen mode.
ucblogo-6.1/helpfiles/penerase 0000664 0001750 0001750 00000000102 13600031207 014573 0 ustar jjc jjc PENERASE
PE
sets the pen's position to DOWN and mode to ERASE.
ucblogo-6.1/helpfiles/pendownp 0000664 0001750 0001750 00000000110 13600031207 014622 0 ustar jjc jjc PENDOWNP
PENDOWN?
outputs TRUE if the pen is down, FALSE if it's up.
ucblogo-6.1/helpfiles/pendown 0000664 0001750 0001750 00000000112 13600031207 014444 0 ustar jjc jjc PENDOWN
PD
sets the pen's position to DOWN, without changing its mode.
ucblogo-6.1/helpfiles/pencolor 0000664 0001750 0001750 00000000750 13600031207 014623 0 ustar jjc jjc PENCOLOR
PC
outputs a color number, a nonnegative integer that is associated with
a particular color, or a list of RGB values if such a list was used as
the most recent input to SETPENCOLOR. There are initial assignments
for the first 16 colors:
0 black 1 blue 2 green 3 cyan
4 red 5 magenta 6 yellow 7 white
8 brown 9 tan 10 forest 11 aqua
12 salmon 13 purple 14 orange 15 grey
but other colors can be assigned to numbers by the PALETTE command.
ucblogo-6.1/helpfiles/pen 0000664 0001750 0001750 00000000233 13600031207 013560 0 ustar jjc jjc PEN (library procedure)
outputs a list containing the pen's position, mode, thickness, and
hardware-specific characteristics, for use by SETPEN.
ucblogo-6.1/helpfiles/pe 0000664 0001750 0001750 00000000102 13600031207 013375 0 ustar jjc jjc PENERASE
PE
sets the pen's position to DOWN and mode to ERASE.
ucblogo-6.1/helpfiles/pd 0000664 0001750 0001750 00000000112 13600031207 013375 0 ustar jjc jjc PENDOWN
PD
sets the pen's position to DOWN, without changing its mode.
ucblogo-6.1/helpfiles/pc 0000664 0001750 0001750 00000000750 13600031207 013404 0 ustar jjc jjc PENCOLOR
PC
outputs a color number, a nonnegative integer that is associated with
a particular color, or a list of RGB values if such a list was used as
the most recent input to SETPENCOLOR. There are initial assignments
for the first 16 colors:
0 black 1 blue 2 green 3 cyan
4 red 5 magenta 6 yellow 7 white
8 brown 9 tan 10 forest 11 aqua
12 salmon 13 purple 14 orange 15 grey
but other colors can be assigned to numbers by the PALETTE command.
ucblogo-6.1/helpfiles/pause 0000664 0001750 0001750 00000001502 13600031207 014113 0 ustar jjc jjc PAUSE
command or operation. Enters an interactive pause. The user is
prompted for instructions, as at toplevel, but with a prompt that
includes the name of the procedure in which PAUSE was invoked.
Local variables of that procedure are available during the pause.
PAUSE outputs if the pause is ended by a CONTINUE with an input.
If the variable ERRACT exists, and an error condition occurs, the
contents of that variable are run as an instructionlist. Typically
ERRACT is given the value [PAUSE] so that an interactive pause will
be entered in the event of an error. This allows the user to check
values of local variables at the time of the error.
Typing the system quit character (alt-S for wxWidgets; otherwise
normally control-\ for Unix, control-W for DOS, or command-comma for
Mac) will also enter a pause.
ucblogo-6.1/helpfiles/parse 0000664 0001750 0001750 00000000315 13600031207 014111 0 ustar jjc jjc PARSE word
outputs the list that would result if the input word were entered
in response to a READLIST operation. That is, PARSE READWORD has
the same value as READLIST for the same characters read.
ucblogo-6.1/helpfiles/palette 0000664 0001750 0001750 00000000274 13600031207 014441 0 ustar jjc jjc PALETTE colornumber
outputs a list of three nonnegative numbers less than 100 specifying
the percent saturation of red, green, and blue in the color associated
with the given number.
ucblogo-6.1/helpfiles/output 0000664 0001750 0001750 00000000425 13600031207 014341 0 ustar jjc jjc OUTPUT value
OP value
command. Ends the running of the procedure in which it appears.
That procedure outputs the value "value" to the context in which
it was invoked. Don't be confused: OUTPUT itself is a command,
but the procedure that invokes OUTPUT is an operation.
ucblogo-6.1/helpfiles/or 0000664 0001750 0001750 00000001163 13600031207 013421 0 ustar jjc jjc OR tf1 tf2
(OR tf1 tf2 tf3 ...)
outputs TRUE if any input is TRUE, otherwise FALSE. All inputs
must be TRUE or FALSE. (Comparison is case-insensitive regardless
of the value of CASEIGNOREDP. That is, "true" or "True" or "TRUE"
are all the same.) An input can be a list, in which case it is
taken as an expression to run; that expression must produce a TRUE
or FALSE value. List expressions are evaluated from left to right;
as soon as a TRUE value is found, the remaining inputs are not
examined. Example:
IF OR :X=0 [some.long.computation] [...]
to avoid the long computation if the first condition is met.
ucblogo-6.1/helpfiles/openwrite 0000664 0001750 0001750 00000001626 13600031207 015021 0 ustar jjc jjc OPENWRITE filename
command. Opens the named file for writing. If the file already
existed, the old version is deleted and a new, empty file created.
OPENWRITE, but not the other OPEN variants, will accept as input
a two-element list, in which the first element must be a variable
name, and the second must be a positive integer. A character
buffer of the specified size will be created. When a SETWRITE is
done with this same list (in the sense of .EQ, not a copy, so
you must do something like
? make "buf [foo 100]
? openwrite :buf
? setwrite :buf
[...]
? close :buf
and not just
? openwrite [foo 100]
? setwrite [foo 100]
and so on), the printed characters are stored in the buffer;
when a CLOSE is done with the same list as input, the characters
from the buffer (treated as one long word, even if spaces and
newlines are included) become the value of the specified variable.
ucblogo-6.1/helpfiles/openupdate 0000664 0001750 0001750 00000001014 13600031207 015140 0 ustar jjc jjc OPENUPDATE filename
command. Opens the named file for reading and writing. The read and
write position is initially set to the end of the old file, if any.
Note: each open file has only one position, for both reading and
writing. If a file opened for update is both READER and WRITER at
the same time, then SETREADPOS will also affect WRITEPOS and vice
versa. Also, if you alternate reading and writing the same file,
you must SETREADPOS between a write and a read, and SETWRITEPOS
between a read and a write.
ucblogo-6.1/helpfiles/openread 0000664 0001750 0001750 00000000200 13600031207 014565 0 ustar jjc jjc OPENREAD filename
command. Opens the named file for reading. The read position is
initially at the beginning of the file.
ucblogo-6.1/helpfiles/openappend 0000664 0001750 0001750 00000000325 13600031207 015131 0 ustar jjc jjc OPENAPPEND filename
command. Opens the named file for writing. If the file already
exists, the write position is initially set to the end of the old
file, so that newly written data will be appended to it.
ucblogo-6.1/helpfiles/op 0000664 0001750 0001750 00000000425 13600031207 013417 0 ustar jjc jjc OUTPUT value
OP value
command. Ends the running of the procedure in which it appears.
That procedure outputs the value "value" to the context in which
it was invoked. Don't be confused: OUTPUT itself is a command,
but the procedure that invokes OUTPUT is an operation.
ucblogo-6.1/helpfiles/numberp 0000664 0001750 0001750 00000000127 13600031207 014450 0 ustar jjc jjc NUMBERP thing
NUMBER? thing
outputs TRUE if the input is a number, FALSE otherwise.
ucblogo-6.1/helpfiles/notequalp 0000664 0001750 0001750 00000000276 13600031207 015015 0 ustar jjc jjc NOTEQUALP thing1 thing2
NOTEQUAL? thing1 thing2
thing1 <> thing2
outputs FALSE if the inputs are equal, TRUE otherwise. See EQUALP
for the meaning of equality for different data types.
ucblogo-6.1/helpfiles/not 0000664 0001750 0001750 00000000302 13600031207 013573 0 ustar jjc jjc NOT tf
outputs TRUE if the input is FALSE, and vice versa. The input can be
a list, in which case it is taken as an expression to run; that
expression must produce a TRUE or FALSE value.
ucblogo-6.1/helpfiles/norefresh 0000664 0001750 0001750 00000000604 13600031207 014773 0 ustar jjc jjc NOREFRESH
(command) tells Logo not to remember the turtle's motions, which may
be useful to save time and memory if your program is interactive or
animated, rather than drawing a static picture you'll want to print
later (wxWidgets). In non-wxWidgets versions, using NOREFRESH may
prevent Logo from restoring the graphics image after the window is
moved, resized, or overlayed.
ucblogo-6.1/helpfiles/nodribble 0000664 0001750 0001750 00000000136 13600031207 014740 0 ustar jjc jjc NODRIBBLE
command. Stops copying information into the dribble file, and
closes the file.
ucblogo-6.1/helpfiles/nodes 0000664 0001750 0001750 00000001463 13600031207 014114 0 ustar jjc jjc NODES
outputs a list of two numbers. The first represents the number of
nodes of memory currently in use. The second shows the maximum
number of nodes that have been in use at any time since the last
invocation of NODES. (A node is a small block of computer memory
as used by Logo. Each number uses one node. Each non-numeric
word uses one node, plus some non-node memory for the characters
in the word. Each array takes one node, plus some non-node
memory, as well as the memory required by its elements. Each
list requires one node per element, as well as the memory within
the elements.) If you want to track the memory use of an
algorithm, it is best if you invoke GC at the beginning of each
iteration, since otherwise the maximum will include storage that
is unused but not yet collected.
ucblogo-6.1/helpfiles/names 0000664 0001750 0001750 00000000243 13600031207 014102 0 ustar jjc jjc NAMES
outputs a contents list consisting of an empty list (indicating
no procedure names) followed by a list of all unburied variable
names in the workspace.
ucblogo-6.1/helpfiles/namep 0000664 0001750 0001750 00000000116 13600031207 014076 0 ustar jjc jjc NAMEP name
NAME? name
outputs TRUE if the input is the name of a variable.
ucblogo-6.1/helpfiles/namelist 0000664 0001750 0001750 00000000430 13600031207 014611 0 ustar jjc jjc NAMELIST varname (library procedure)
NAMELIST varnamelist
outputs a contents list consisting of an empty list followed by
a list of the name or names given as input. This is useful in
conjunction with workspace control procedures that require a contents
list as input.
ucblogo-6.1/helpfiles/name 0000664 0001750 0001750 00000000153 13600031207 013717 0 ustar jjc jjc NAME value varname (library procedure)
command. Same as MAKE but with the inputs in reverse order.
ucblogo-6.1/helpfiles/mousepos 0000664 0001750 0001750 00000000656 13600031207 014661 0 ustar jjc jjc MOUSEPOS
outputs the coordinates of the mouse, provided that it's within the
graphics window, in turtle coordinates. If the mouse is outside the
graphics window, then the last position within the window is returned.
Exception: If a mouse button is pressed within the graphics window
and held while the mouse is dragged outside the window, the mouse's
position is returned as if the window were big enough to include it.
ucblogo-6.1/helpfiles/modulo 0000664 0001750 0001750 00000000230 13600031207 014272 0 ustar jjc jjc MODULO num1 num2
outputs the remainder on dividing "num1" by "num2"; both must be
integers and the result is an integer with the same sign as num2.
ucblogo-6.1/helpfiles/minus 0000664 0001750 0001750 00000000506 13600031207 014134 0 ustar jjc jjc MINUS num
- num
outputs the negative of its input. Minus sign means unary minus if
the previous token is an infix operator or open parenthesis, or it is
preceded by a space and followed by a nonspace. There is a difference
in binding strength between the two forms:
MINUS 3 + 4 means -(3+4)
- 3 + 4 means (-3)+4
ucblogo-6.1/helpfiles/memberp 0000664 0001750 0001750 00000000437 13600031207 014433 0 ustar jjc jjc MEMBERP thing1 thing2
MEMBER? thing1 thing2
if "thing2" is a list or an array, outputs TRUE if "thing1" is EQUALP
to a member of "thing2", FALSE otherwise. If "thing2" is
a word, outputs TRUE if "thing1" is a one-character word EQUALP to a
character of "thing2", FALSE otherwise.
ucblogo-6.1/helpfiles/member 0000664 0001750 0001750 00000000515 13600031207 014250 0 ustar jjc jjc MEMBER thing1 thing2
if "thing2" is a word or list and if MEMBERP with these inputs would
output TRUE, outputs the portion of "thing2" from the first instance
of "thing1" to the end. If MEMBERP would output FALSE, outputs the
empty word or list according to the type of "thing2". It is an error
for "thing2" to be an array.
ucblogo-6.1/helpfiles/mdsetitem 0000664 0001750 0001750 00000000220 13600031207 014765 0 ustar jjc jjc MDSETITEM indexlist array value (library procedure)
command. Replaces the member of "array" chosen by "indexlist"
with the new "value".
ucblogo-6.1/helpfiles/mditem 0000664 0001750 0001750 00000000223 13600031207 014254 0 ustar jjc jjc MDITEM indexlist array (library procedure)
outputs the member of the multidimensional "array" selected by
the list of numbers "indexlist".
ucblogo-6.1/helpfiles/mdarray 0000664 0001750 0001750 00000000564 13600031207 014444 0 ustar jjc jjc MDARRAY sizelist (library procedure)
(MDARRAY sizelist origin)
outputs a multi-dimensional array. The first input must be a list
of one or more positive integers. The second input, if present,
must be a single integer that applies to every dimension of the array.
Ex: (MDARRAY [3 5] 0) outputs a two-dimensional array whose members
range from [0 0] to [2 4].
ucblogo-6.1/helpfiles/mapdse 0000664 0001750 0001750 00000002167 13600031207 014257 0 ustar jjc jjc MAP.SE template data (library procedure)
(MAP.SE template data1 data2 ...)
outputs a list formed by evaluating the template list repeatedly
and concatenating the results using SENTENCE. That is, the
members of the output are the members of the results of the
evaluations. The output list might, therefore, be of a different
length from that of the data input(s). (If the result of an
evaluation is the empty list, it contributes nothing to the final
output.) The data inputs may be words or lists.
In a template, the symbol ?REST represents the portion of the
data input to the right of the member currently being used as
the ? slot-filler. That is, if the data input is [A B C D E]
and the template is being evaluated with ? replaced by B, then
?REST would be replaced by [C D E]. If multiple parallel slots
are used, then (?REST 1) goes with ?1, etc.
In a template, the symbol # represents the position in the data
input of the member currently being used as the ? slot-filler.
That is, if the data input is [A B C D E] and the template is
being evaluated with ? replaced by B, then # would be replaced
by 2.
ucblogo-6.1/helpfiles/map 0000664 0001750 0001750 00000002273 13600031207 013561 0 ustar jjc jjc MAP template data (library procedure)
(MAP template data1 data2 ...)
outputs a word or list, depending on the type of the data input,
of the same length as that data input. (If more than one data
input are given, the output is of the same type as data1.) Each
member of the output is the result of evaluating the template
list, filling the slots with the corresponding member(s) of the
data input(s). (All data inputs must be the same length.) In the
case of a word output, the results of the template evaluation must
be words, and they are concatenated with WORD.
In a template, the symbol ?REST represents the portion of the
data input to the right of the member currently being used as
the ? slot-filler. That is, if the data input is [A B C D E]
and the template is being evaluated with ? replaced by B, then
?REST would be replaced by [C D E]. If multiple parallel slots
are used, then (?REST 1) goes with ?1, etc.
In a template, the symbol # represents the position in the data
input of the member currently being used as the ? slot-filler.
That is, if the data input is [A B C D E] and the template is
being evaluated with ? replaced by B, then # would be replaced
by 2.
ucblogo-6.1/helpfiles/make 0000664 0001750 0001750 00000000436 13600031207 013720 0 ustar jjc jjc MAKE varname value
command. Assigns the value "value" to the variable named "varname",
which must be a word. Variable names are case-insensitive. If a
variable with the same name already exists, the value of that
variable is changed. If not, a new global variable is created.
ucblogo-6.1/helpfiles/macrop 0000664 0001750 0001750 00000000115 13600031207 014256 0 ustar jjc jjc MACROP name
MACRO? name
outputs TRUE if its input is the name of a macro.
ucblogo-6.1/helpfiles/macroexpand 0000664 0001750 0001750 00000000671 13600031207 015305 0 ustar jjc jjc MACROEXPAND expr (library procedure)
takes as its input a Logo expression that invokes a macro (that is,
one that begins with the name of a macro) and outputs the the Logo
expression into which the macro would translate the input expression.
.macro localmake :name :value
op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
end
? show macroexpand [localmake "pi 3.14159]
[local "pi apply "make [pi 3.14159]]
ucblogo-6.1/helpfiles/lt 0000664 0001750 0001750 00000000177 13600031207 013424 0 ustar jjc jjc LEFT degrees
LT degrees
turns the turtle counterclockwise by the specified angle, measured
in degrees (1/360 of a circle).
ucblogo-6.1/helpfiles/lshift 0000664 0001750 0001750 00000000256 13600031207 014274 0 ustar jjc jjc LSHIFT num1 num2
outputs "num1" logical-shifted to the left by "num2" bits.
If num2 is negative, the shift is to the right with zero fill.
The inputs must be integers.
ucblogo-6.1/helpfiles/lput 0000664 0001750 0001750 00000000406 13600031207 013764 0 ustar jjc jjc LPUT thing list
outputs a list equal to its second input with one extra member,
the first input, at the end. If the second input is a word,
then the first input must be a one-letter word, and LPUT is
equivalent to WORD with its inputs in the other order.
ucblogo-6.1/helpfiles/lowercase 0000664 0001750 0001750 00000000203 13600031207 014757 0 ustar jjc jjc LOWERCASE word
outputs a copy of the input word, but with all uppercase letters
changed to the corresponding lowercase letter.
ucblogo-6.1/helpfiles/logoversion 0000664 0001750 0001750 00000000133 13600031207 015343 0 ustar jjc jjc LOGOVERSION (variable)
a real number indicating the Logo version number, e.g., 5.5
ucblogo-6.1/helpfiles/logoplatform 0000664 0001750 0001750 00000000154 13600031207 015505 0 ustar jjc jjc LOGOPLATFORM (variable)
one of the following words: wxWidgets, X11, Windows, or
Unix-Nographics.
ucblogo-6.1/helpfiles/log10 0000664 0001750 0001750 00000000070 13600031207 013717 0 ustar jjc jjc LOG10 num
outputs the common logarithm of the input.
ucblogo-6.1/helpfiles/localmake 0000664 0001750 0001750 00000000224 13600031207 014726 0 ustar jjc jjc LOCALMAKE varname value (library procedure)
command. Makes the named variable local, like LOCAL, and
assigns it the given value, like MAKE.
ucblogo-6.1/helpfiles/local 0000664 0001750 0001750 00000001076 13600031207 014076 0 ustar jjc jjc LOCAL varname
LOCAL varnamelist
(LOCAL varname1 varname2 ...)
command. Accepts as inputs one or more words, or a list of
words. A variable is created for each of these words, with
that word as its name. The variables are local to the
currently running procedure. Logo variables follow dynamic
scope rules; a variable that is local to a procedure is
available to any subprocedure invoked by that procedure.
The variables created by LOCAL have no initial value; they
must be assigned a value (e.g., with MAKE) before the procedure
attempts to read their value.
ucblogo-6.1/helpfiles/loadpict 0000664 0001750 0001750 00000000400 13600031207 014571 0 ustar jjc jjc LOADPICT filename
command. Reads the specified file, which must have been
written by a SAVEPICT command, and restores the graphics
window and color palette settings to the values stored in
the file. Any drawing previously on the screen is cleared.
ucblogo-6.1/helpfiles/loadnoisily 0000664 0001750 0001750 00000000226 13600031207 015326 0 ustar jjc jjc LOADNOISILY (variable)
if TRUE, prints the names of procedures defined when loading
from a file (including the temporary file made by EDIT).
ucblogo-6.1/helpfiles/load 0000664 0001750 0001750 00000001150 13600031207 013714 0 ustar jjc jjc LOAD filename
command. Reads instructions from the named file and executes
them. The file can include procedure definitions with TO, and
these are accepted even if a procedure by the same name already
exists. If the file assigns a list value to a variable named
STARTUP, then that list is run as an instructionlist after the
file is loaded. If there is a variable LOADNOISILY whose value
is TRUE, then TO commands in the file print "PROCNAME defined"
(where PROCNAME is the name of the procedure being defined); if
LOADNOISILY is FALSE or undefined, TO commands in the file are
carried out silently.
ucblogo-6.1/helpfiles/ln 0000664 0001750 0001750 00000000066 13600031207 013413 0 ustar jjc jjc LN num
outputs the natural logarithm of the input.
ucblogo-6.1/helpfiles/listtoarray 0000664 0001750 0001750 00000000225 13600031207 015354 0 ustar jjc jjc LISTTOARRAY list
(LISTTOARRAY list origin)
outputs an array of the same size as the input list, whose members
are the members of the input list.
ucblogo-6.1/helpfiles/listp 0000664 0001750 0001750 00000000121 13600031207 014125 0 ustar jjc jjc LISTP thing
LIST? thing
outputs TRUE if the input is a list, FALSE otherwise.
ucblogo-6.1/helpfiles/list 0000664 0001750 0001750 00000000230 13600031207 013746 0 ustar jjc jjc LIST thing1 thing2
(LIST thing1 thing2 thing3 ...)
outputs a list whose members are its inputs, which can be any
Logo datum (word, list, or array).
ucblogo-6.1/helpfiles/lessp 0000664 0001750 0001750 00000000161 13600031207 014124 0 ustar jjc jjc LESSP num1 num2
LESS? num1 num2
num1 < num2
outputs TRUE if its first input is strictly less than its second.
ucblogo-6.1/helpfiles/lessequalp 0000664 0001750 0001750 00000000177 13600031207 015163 0 ustar jjc jjc LESSEQUALP num1 num2
LESSEQUAL? num1 num2
num1 <= num2
outputs TRUE if its first input is less than or equal to its second.
ucblogo-6.1/helpfiles/left 0000664 0001750 0001750 00000000177 13600031207 013737 0 ustar jjc jjc LEFT degrees
LT degrees
turns the turtle counterclockwise by the specified angle, measured
in degrees (1/360 of a circle).
ucblogo-6.1/helpfiles/last 0000664 0001750 0001750 00000000221 13600031207 013736 0 ustar jjc jjc LAST wordorlist
if the input is a word, outputs the last character of the word.
If the input is a list, outputs the last member of the list.
ucblogo-6.1/helpfiles/labelsize 0000664 0001750 0001750 00000000660 13600031207 014754 0 ustar jjc jjc LABELSIZE
(wxWidgets only) outputs a list of two positive integers, the width
and height of characters displayed by LABEL measured in turtle steps
(which will be different from screen pixels if SETSCRUNCH has been
used). There is no SETLABELSIZE because the width and height of a
font are not separately controllable, so the inverse of this operation
is SETLABELHEIGHT, which takes just one number for the desired height.
ucblogo-6.1/helpfiles/label 0000664 0001750 0001750 00000000176 13600031207 014063 0 ustar jjc jjc LABEL text
takes a word or list as input, and prints the input on the
graphics window, starting at the turtle's position.
ucblogo-6.1/helpfiles/keyp 0000664 0001750 0001750 00000001051 13600031207 013745 0 ustar jjc jjc KEYP
KEY?
predicate, outputs TRUE if there are characters waiting to be
read from the read stream. If the read stream is a file, this
is equivalent to NOT EOFP. If the read stream is the terminal,
then echoing is turned off and the terminal is set to CBREAK
(character at a time instead of line at a time) mode. It
remains in this mode until some line-mode reading is requested
(e.g., READLIST). The Unix operating system forgets about any
pending characters when it switches modes, so the first KEYP
invocation will always output FALSE.
ucblogo-6.1/helpfiles/keyact 0000664 0001750 0001750 00000001257 13600031207 014265 0 ustar jjc jjc KEYACT (variable)
if nonempty, should be an instruction list that will be evaluated
whenever a key is pressed on the keyboard. The instruction list
can use READCHAR to find out what key was pressed. Note that only
keys that produce characters qualify; pressing SHIFT or CONTROL
alone will not cause KEYACT to be evaluated.
Note that it's possible for the user to press a key during the
evaluation of the instruction list. If this would confuse your
program, prevent it by temporarily setting KEYACT to the empty
list. One easy way to do that is the following:
make "keyact [key.action]
to key.action [:keyact []]
... ; whatever you want the key to do
end
ucblogo-6.1/helpfiles/item 0000664 0001750 0001750 00000000536 13600031207 013742 0 ustar jjc jjc ITEM index thing
if the "thing" is a word, outputs the "index"th character of the
word. If the "thing" is a list, outputs the "index"th member of
the list. If the "thing" is an array, outputs the "index"th
member of the array. "Index" starts at 1 for words and lists;
the starting index of an array is specified when the array is
created.
ucblogo-6.1/helpfiles/iseq 0000664 0001750 0001750 00000000245 13600031207 013742 0 ustar jjc jjc ISEQ from to (library procedure)
outputs a list of the integers from FROM to TO, inclusive.
? show iseq 3 7
[3 4 5 6 7]
? show iseq 7 3
[7 6 5 4 3]
ucblogo-6.1/helpfiles/invoke 0000664 0001750 0001750 00000000323 13600031207 014271 0 ustar jjc jjc INVOKE template input (library procedure)
(INVOKE template input1 input2 ...)
command or operation. Exactly like APPLY except that the inputs
are provided as separate expressions rather than in a list.
ucblogo-6.1/helpfiles/int 0000664 0001750 0001750 00000000323 13600031207 013570 0 ustar jjc jjc INT num
outputs its input with fractional part removed, i.e., an integer
with the same sign as the input, whose absolute value is the
largest integer less than or equal to the absolute value of
the input.
ucblogo-6.1/helpfiles/increasefont 0000664 0001750 0001750 00000000264 13600031207 015462 0 ustar jjc jjc INCREASEFONT
DECREASEFONT
command (wxWidgets only). Increase or decrease the size of the font
used in the text and edit windows to the next larger or smaller
available size.
ucblogo-6.1/helpfiles/ignore 0000664 0001750 0001750 00000000237 13600031207 014265 0 ustar jjc jjc IGNORE value (library procedure)
command. Does nothing. Used when an expression is evaluated for
a side effect and its actual value is unimportant.
ucblogo-6.1/helpfiles/iftrue 0000664 0001750 0001750 00000000303 13600031207 014272 0 ustar jjc jjc IFTRUE instructionlist
IFT instructionlist
command. Runs its input if the most recent TEST instruction had
a TRUE input. The TEST must have been in the same procedure or a
superprocedure.
ucblogo-6.1/helpfiles/ift 0000664 0001750 0001750 00000000303 13600031207 013556 0 ustar jjc jjc IFTRUE instructionlist
IFT instructionlist
command. Runs its input if the most recent TEST instruction had
a TRUE input. The TEST must have been in the same procedure or a
superprocedure.
ucblogo-6.1/helpfiles/iffalse 0000664 0001750 0001750 00000000305 13600031207 014407 0 ustar jjc jjc IFFALSE instructionlist
IFF instructionlist
command. Runs its input if the most recent TEST instruction had
a FALSE input. The TEST must have been in the same procedure or a
superprocedure.
ucblogo-6.1/helpfiles/iff 0000664 0001750 0001750 00000000305 13600031207 013542 0 ustar jjc jjc IFFALSE instructionlist
IFF instructionlist
command. Runs its input if the most recent TEST instruction had
a FALSE input. The TEST must have been in the same procedure or a
superprocedure.
ucblogo-6.1/helpfiles/ifelse 0000664 0001750 0001750 00000000472 13600031207 014252 0 ustar jjc jjc IFELSE tf instructionlist1 instructionlist2
command or operation. If the first input has the value TRUE, then
IFELSE runs the second input. If the first input has the value FALSE,
then IFELSE runs the third input. IFELSE outputs a value if the
instructionlist contains an expression that outputs a value.
ucblogo-6.1/helpfiles/if 0000664 0001750 0001750 00000001435 13600031207 013401 0 ustar jjc jjc IF tf instructionlist
(IF tf instructionlist1 instructionlist2)
command. If the first input has the value TRUE, then IF runs
the second input. If the first input has the value FALSE, then
IF does nothing. (If given a third input, IF acts like IFELSE,
as described below.) It is an error if the first input is not
either TRUE or FALSE.
For compatibility with earlier versions of Logo, if an IF
instruction is not enclosed in parentheses, but the first thing
on the instruction line after the second input expression is a
literal list (i.e., a list in square brackets), the IF is
treated as if it were IFELSE, but a warning message is given.
If this aberrant IF appears in a procedure body, the warning is
given only the first time the procedure is invoked in each Logo
session.
ucblogo-6.1/helpfiles/ht 0000664 0001750 0001750 00000000300 13600031207 013404 0 ustar jjc jjc HIDETURTLE
HT
makes the turtle invisible. It's a good idea to do this while
you're in the middle of a complicated drawing, because hiding
the turtle speeds up the drawing substantially.
ucblogo-6.1/helpfiles/home 0000664 0001750 0001750 00000000141 13600031207 013724 0 ustar jjc jjc HOME
moves the turtle to the center of the screen. Equivalent to
SETPOS [0 0] SETHEADING 0.
ucblogo-6.1/helpfiles/hideturtle 0000664 0001750 0001750 00000000300 13600031207 015142 0 ustar jjc jjc HIDETURTLE
HT
makes the turtle invisible. It's a good idea to do this while
you're in the middle of a complicated drawing, because hiding
the turtle speeds up the drawing substantially.
ucblogo-6.1/helpfiles/help 0000664 0001750 0001750 00000001401 13600031207 013724 0 ustar jjc jjc HELP name
(HELP)
command. Prints information from the reference manual about
the primitive procedure named by the input. With no input,
lists all the primitives about which help is available.
If there is an environment variable LOGOHELP, then its value
is taken as the directory in which to look for help files,
instead of the default help directory.
If HELP is called with the name of a defined procedure for which there
is no help file, it will print the title line of the procedure
followed by lines from the procedure body that start with semicolon,
stopping when a non-semicolon line is seen.
Exceptionally, the HELP command can be used without its default
input and without parentheses provided that nothing follows it on
the instruction line.
ucblogo-6.1/helpfiles/heading 0000664 0001750 0001750 00000000076 13600031207 014402 0 ustar jjc jjc HEADING
outputs a number, the turtle's heading in degrees.
ucblogo-6.1/helpfiles/greaterp 0000664 0001750 0001750 00000000172 13600031207 014611 0 ustar jjc jjc GREATERP num1 num2
GREATER? num1 num2
num1 > num2
outputs TRUE if its first input is strictly greater than its second.
ucblogo-6.1/helpfiles/greaterequalp 0000664 0001750 0001750 00000000211 13600031207 015633 0 ustar jjc jjc GREATEREQUALP num1 num2
GREATEREQUAL? num1 num2
num1 >= num2
outputs TRUE if its first input is greater than or equal to its second.
ucblogo-6.1/helpfiles/gprop 0000664 0001750 0001750 00000000234 13600031207 014126 0 ustar jjc jjc GPROP plistname propname
outputs the value of the "propname" property in the "plistname"
property list, or the empty list if there is no such property.
ucblogo-6.1/helpfiles/goto 0000664 0001750 0001750 00000000326 13600031207 013751 0 ustar jjc jjc GOTO word
command. Looks for a TAG command with the same input in the same
procedure, and continues running the procedure from the location of
that TAG. It is meaningless to use GOTO outside of a procedure.
ucblogo-6.1/helpfiles/global 0000664 0001750 0001750 00000001045 13600031207 014240 0 ustar jjc jjc GLOBAL varname
GLOBAL varnamelist
(GLOBAL varname1 varname2 ...)
command. Accepts as inputs one or more words, or a list of
words. A global variable is created for each of these words, with
that word as its name. The only reason this is necessary is that
you might want to use the "setter" notation SETXYZ for a variable
XYZ that does not already have a value; GLOBAL "XYZ makes that legal.
Note: If there is currently a local variable of the same name, this
command does *not* make Logo use the global value instead of the
local one.
ucblogo-6.1/helpfiles/gensym 0000664 0001750 0001750 00000000174 13600031207 014304 0 ustar jjc jjc GENSYM (library procedure)
outputs a unique word each time it's invoked. The words are of the
form G1, G2, etc.
ucblogo-6.1/helpfiles/gc 0000664 0001750 0001750 00000001646 13600031207 013400 0 ustar jjc jjc GC
(GC anything)
command. Runs the garbage collector, reclaiming unused nodes. Logo
does this when necessary anyway, but you may want to use this
command to control exactly when Logo does it. In particular, the
numbers output by the NODES operation will not be very meaningful
unless garbage has been collected. Another reason to use GC is that
a garbage collection takes a noticeable fraction of a second, and you
may want to schedule collections for times before or after some
time-critical animation. If invoked with an input (of any value),
GC runs a full garbage collection, including GCTWA (Garbage Collect
Truly Worthless Atoms, which means that it removes from Logo's
memory words that used to be procedure or variable names but aren't
any more); without an input, GC does a generational garbage
collection, which means that only recently created nodes are
examined. (The latter is usually good enough.)
ucblogo-6.1/helpfiles/fulltext 0000664 0001750 0001750 00000001220 13600031207 014642 0 ustar jjc jjc FULLTEXT procname
outputs a representation of the procedure "procname" in which
formatting information is preserved. If the procedure was defined
with TO, EDIT, or LOAD, then the output is a list of words. Each
word represents one entire line of the definition in the form
output by READWORD, including extra spaces and continuation lines.
The last member of the output represents the END line. If the
procedure was defined with DEFINE, then the output is a list of
lists. If these lists are printed, one per line, the result will
look like a definition using TO. Note: the output from FULLTEXT
is not suitable for use as input to DEFINE!
ucblogo-6.1/helpfiles/fullscreen 0000664 0001750 0001750 00000001225 13600031207 015142 0 ustar jjc jjc FULLSCREEN
FS
rearranges the size and position of windows to maximize the space
available in the graphics window. The details differ among machines.
Compare SPLITSCREEN and TEXTSCREEN.
Since there must be a text window to allow printing (including the
printing of the Logo prompt), Logo automatically switches from
fullscreen to splitscreen whenever anything is printed.
In the DOS version, switching from fullscreen to splitscreen loses the
part of the picture that's hidden by the text window. [This design
decision follows from the scarcity of memory, so that the extra memory
to remember an invisible part of a drawing seems too expensive.]
ucblogo-6.1/helpfiles/fullprintp 0000664 0001750 0001750 00000000673 13600031207 015205 0 ustar jjc jjc FULLPRINTP (variable)
if TRUE, then words that were created using backslash or vertical bar
(to include characters that would otherwise not be treated as part of
a word) are printed with the backslashes or vertical bars shown, so
that the printed result could be re-read by Logo to produce the same
value. If FULLPRINTP is TRUE then the empty word (however it was
created) prints as ||. (Otherwise it prints as nothing at all.)
ucblogo-6.1/helpfiles/fs 0000664 0001750 0001750 00000001225 13600031207 013410 0 ustar jjc jjc FULLSCREEN
FS
rearranges the size and position of windows to maximize the space
available in the graphics window. The details differ among machines.
Compare SPLITSCREEN and TEXTSCREEN.
Since there must be a text window to allow printing (including the
printing of the Logo prompt), Logo automatically switches from
fullscreen to splitscreen whenever anything is printed.
In the DOS version, switching from fullscreen to splitscreen loses the
part of the picture that's hidden by the text window. [This design
decision follows from the scarcity of memory, so that the extra memory
to remember an invisible part of a drawing seems too expensive.]
ucblogo-6.1/helpfiles/fput 0000664 0001750 0001750 00000000351 13600031207 013755 0 ustar jjc jjc FPUT thing list
outputs a list equal to its second input with one extra member,
the first input, at the beginning. If the second input is a word,
then the first input must be a one-letter word, and FPUT is
equivalent to WORD.
ucblogo-6.1/helpfiles/forward 0000664 0001750 0001750 00000000214 13600031207 014441 0 ustar jjc jjc FORWARD dist
FD dist
moves the turtle forward, in the direction that it's facing, by
the specified distance (measured in turtle steps).
ucblogo-6.1/helpfiles/form 0000664 0001750 0001750 00000001246 13600031207 013746 0 ustar jjc jjc FORM num width precision
outputs a word containing a printable representation of "num",
possibly preceded by spaces (and therefore not a number for
purposes of performing arithmetic operations), with at least
"width" characters, including exactly "precision" digits after
the decimal point. (If "precision" is 0 then there will be no
decimal point in the output.)
As a debugging feature, (FORM num -1 format) will print the
floating point "num" according to the C printf "format", to allow
to hex :num
op form :num -1 "|%08X %08X|
end
to allow finding out the exact result of floating point operations.
The precise format needed may be machine-dependent.
ucblogo-6.1/helpfiles/forever 0000664 0001750 0001750 00000000237 13600031207 014452 0 ustar jjc jjc FOREVER instructionlist
command. Runs the "instructionlist" repeatedly, until something
inside the instructionlist (such as STOP or THROW) makes it stop.
ucblogo-6.1/helpfiles/foreach 0000664 0001750 0001750 00000001724 13600031207 014413 0 ustar jjc jjc FOREACH data template (library procedure)
(FOREACH data1 data2 ... template)
command. Evaluates the template list repeatedly, once for each
member of the data list. If more than one data list are given,
each of them must be the same length. (The data inputs can be
words, in which case the template is evaluated once for each
character.)
In a template, the symbol ?REST represents the portion of the
data input to the right of the member currently being used as
the ? slot-filler. That is, if the data input is [A B C D E]
and the template is being evaluated with ? replaced by B, then
?REST would be replaced by [C D E]. If multiple parallel slots
are used, then (?REST 1) goes with ?1, etc.
In a template, the symbol # represents the position in the data
input of the member currently being used as the ? slot-filler.
That is, if the data input is [A B C D E] and the template is
being evaluated with ? replaced by B, then # would be replaced
by 2.
ucblogo-6.1/helpfiles/for 0000664 0001750 0001750 00000002666 13600031207 013600 0 ustar jjc jjc FOR forcontrol instructionlist (library procedure)
command. The first input must be a list containing three or four
members: (1) a word, which will be used as the name of a local
variable; (2) a word or list that will be evaluated as by RUN to
determine a number, the starting value of the variable; (3) a word
or list that will be evaluated to determine a number, the limit value
of the variable; (4) an optional word or list that will be evaluated
to determine the step size. If the fourth member is missing, the
step size will be 1 or -1 depending on whether the limit value is
greater than or less than the starting value, respectively.
The second input is an instructionlist. The effect of FOR is to run
that instructionlist repeatedly, assigning a new value to the control
variable (the one named by the first member of the forcontrol list)
each time. First the starting value is assigned to the control
variable. Then the value is compared to the limit value. FOR is
complete when the sign of (current - limit) is the same as the sign
of the step size. (If no explicit step size is provided, the
instructionlist is always run at least once. An explicit step size
can lead to a zero-trip FOR, e.g., FOR [I 1 0 1] ...) Otherwise, the
instructionlist is run, then the step is added to the current value
of the control variable and FOR returns to the comparison step.
? for [i 2 7 1.5] [print :i]
2
3.5
5
6.5
?
ucblogo-6.1/helpfiles/font 0000664 0001750 0001750 00000000124 13600031207 013743 0 ustar jjc jjc FONT
(wxWidgets only) outputs the name of the font family used in all
windows.
ucblogo-6.1/helpfiles/firsts 0000664 0001750 0001750 00000000614 13600031207 014313 0 ustar jjc jjc FIRSTS list
outputs a list containing the FIRST of each member of the input
list. It is an error if any member of the input list is empty.
(The input itself may be empty, in which case the output is also
empty.) This could be written as
to firsts :list
output map "first :list
end
but is provided as a primitive in order to speed up the iteration
tools MAP, MAP.SE, and FOREACH.
ucblogo-6.1/helpfiles/first 0000664 0001750 0001750 00000000402 13600031207 014123 0 ustar jjc jjc FIRST thing
if the input is a word, outputs the first character of the word.
If the input is a list, outputs the first member of the list.
If the input is an array, outputs the origin of the array (that
is, the INDEX OF the first member of the array).
ucblogo-6.1/helpfiles/find 0000664 0001750 0001750 00000001554 13600031207 013725 0 ustar jjc jjc FIND tftemplate data (library procedure)
outputs the first constituent of the data input (the first member
of a list, or the first character of a word) for which the value
produced by evaluating the template with that consituent in its
slot is TRUE. If there is no such constituent, the empty list
is output.
In a template, the symbol ?REST represents the portion of the
data input to the right of the member currently being used as
the ? slot-filler. That is, if the data input is [A B C D E]
and the template is being evaluated with ? replaced by B, then
?REST would be replaced by [C D E].
In a template, the symbol # represents the position in the data
input of the member currently being used as the ? slot-filler.
That is, if the data input is [A B C D E] and the template is
being evaluated with ? replaced by B, then # would be replaced
by 2.
ucblogo-6.1/helpfiles/filter 0000664 0001750 0001750 00000001772 13600031207 014274 0 ustar jjc jjc FILTER tftemplate data (library procedure)
outputs a word or list, depending on the type of the data input,
containing a subset of the members (for a list) or characters (for
a word) of the input. The template is evaluated once for each
member or character of the data, and it must produce a TRUE or
FALSE value. If the value is TRUE, then the corresponding input
constituent is included in the output.
? print filter "vowelp "elephant
eea
?
In a template, the symbol ?REST represents the portion of the
data input to the right of the member currently being used as
the ? slot-filler. That is, if the data input is [A B C D E]
and the template is being evaluated with ? replaced by B, then
?REST would be replaced by [C D E].
In a template, the symbol # represents the position in the data
input of the member currently being used as the ? slot-filler.
That is, if the data input is [A B C D E] and the template is
being evaluated with ? replaced by B, then # would be replaced
by 2.
ucblogo-6.1/helpfiles/filled 0000664 0001750 0001750 00000000623 13600031207 014240 0 ustar jjc jjc FILLED color instructions
runs the instructions, remembering all points visited by turtle
motion commands, starting *and ending* with the turtle's initial
position. Then draws (ignoring penmode) the resulting polygon,
in the current pen color, filling the polygon with the given color,
which can be a color number or an RGB list. The instruction list
cannot include another FILLED invocation.
ucblogo-6.1/helpfiles/fill 0000664 0001750 0001750 00000000363 13600031207 013730 0 ustar jjc jjc FILL
fills in a region of the graphics window containing the turtle
and bounded by lines that have been drawn earlier. This is not
portable; it doesn't work for all machines, and may not work
exactly the same way on different machines.
ucblogo-6.1/helpfiles/filep 0000664 0001750 0001750 00000000235 13600031207 014077 0 ustar jjc jjc FILEP filename
FILE? filename (library procedure)
predicate, outputs TRUE if a file of the specified name exists
and can be read, FALSE otherwise.
ucblogo-6.1/helpfiles/fence 0000664 0001750 0001750 00000000402 13600031207 014054 0 ustar jjc jjc FENCE
tells the turtle to enter fence mode: From now on, if the turtle
is asked to move past the boundary of the graphics window, it
will move as far as it can and then stop at the edge with an
"out of bounds" error message. Compare WRAP and WINDOW.
ucblogo-6.1/helpfiles/fd 0000664 0001750 0001750 00000000214 13600031207 013366 0 ustar jjc jjc FORWARD dist
FD dist
moves the turtle forward, in the direction that it's facing, by
the specified distance (measured in turtle steps).
ucblogo-6.1/helpfiles/exp 0000664 0001750 0001750 00000000070 13600031207 013571 0 ustar jjc jjc EXP num
outputs e (2.718281828+) to the input power.
ucblogo-6.1/helpfiles/error 0000664 0001750 0001750 00000000661 13600031207 014134 0 ustar jjc jjc ERROR
outputs a list describing the error just caught, if any. If there was
not an error caught since the last use of ERROR, the empty list will
be output. The error list contains four members: an integer code
corresponding to the type of error, the text of the error message (as
a single word including spaces), the name of the procedure in which
the error occurred, and the instruction line on which the error
occurred.
ucblogo-6.1/helpfiles/erract 0000664 0001750 0001750 00000000232 13600031207 014255 0 ustar jjc jjc ERRACT (variable)
an instructionlist that will be run in the event of an error.
Typically has the value [PAUSE] to allow interactive debugging.
ucblogo-6.1/helpfiles/erps 0000664 0001750 0001750 00000000144 13600031207 013750 0 ustar jjc jjc ERPS
command. Erases all unburied procedures from the workspace.
Abbreviates ERASE PROCEDURES.
ucblogo-6.1/helpfiles/erpls 0000664 0001750 0001750 00000000145 13600031207 014125 0 ustar jjc jjc ERPLS
command. Erases all unburied property lists from the workspace.
Abbreviates ERASE PLISTS.
ucblogo-6.1/helpfiles/erpl 0000664 0001750 0001750 00000000256 13600031207 013745 0 ustar jjc jjc ERPL plname (library procedure)
ERPL plnamelist
command. Erases from the workspace the property list(s) named in the
input. Abbreviates ERASE PLLIST plname(list).
ucblogo-6.1/helpfiles/erns 0000664 0001750 0001750 00000000136 13600031207 013747 0 ustar jjc jjc ERNS
command. Erases all unburied variables from the workspace.
Abbreviates ERASE NAMES.
ucblogo-6.1/helpfiles/ern 0000664 0001750 0001750 00000000254 13600031207 013565 0 ustar jjc jjc ERN varname (library procedure)
ERN varnamelist
command. Erases from the workspace the variable(s) named in the
input. Abbreviates ERASE NAMELIST varname(list).
ucblogo-6.1/helpfiles/erf 0000664 0001750 0001750 00000000174 13600031207 013556 0 ustar jjc jjc ERASEFILE filename
ERF filename
command. Erases (deletes, removes) the named file, which should not
currently be open.
ucblogo-6.1/helpfiles/erasefile 0000664 0001750 0001750 00000000174 13600031207 014741 0 ustar jjc jjc ERASEFILE filename
ERF filename
command. Erases (deletes, removes) the named file, which should not
currently be open.
ucblogo-6.1/helpfiles/erase 0000664 0001750 0001750 00000000345 13600031207 014101 0 ustar jjc jjc ERASE contentslist
ER contentslist
command. Erases from the workspace the procedures, variables,
and property lists named in the input. Primitive procedures may
not be erased unless the variable REDEFP has the value TRUE.
ucblogo-6.1/helpfiles/erall 0000664 0001750 0001750 00000000203 13600031207 014072 0 ustar jjc jjc ERALL
command. Erases all unburied procedures, variables, and property
lists from the workspace. Abbreviates ERASE CONTENTS.
ucblogo-6.1/helpfiles/er 0000664 0001750 0001750 00000000345 13600031207 013410 0 ustar jjc jjc ERASE contentslist
ER contentslist
command. Erases from the workspace the procedures, variables,
and property lists named in the input. Primitive procedures may
not be erased unless the variable REDEFP has the value TRUE.
ucblogo-6.1/helpfiles/equalp 0000664 0001750 0001750 00000001555 13600031207 014275 0 ustar jjc jjc EQUALP thing1 thing2
EQUAL? thing1 thing2
thing1 = thing2
outputs TRUE if the inputs are equal, FALSE otherwise. Two numbers
are equal if they have the same numeric value. Two non-numeric words
are equal if they contain the same characters in the same order. If
there is a variable named CASEIGNOREDP whose value is TRUE, then an
upper case letter is considered the same as the corresponding lower
case letter. (This is the case by default.) Two lists are equal if
their members are equal. An array is only equal to itself; two
separately created arrays are never equal even if their members are
equal. (It is important to be able to know if two expressions have
the same array as their value because arrays are mutable; if, for
example, two variables have the same array as their values then
performing SETITEM on one of them will also change the other.)
ucblogo-6.1/helpfiles/epspict 0000664 0001750 0001750 00000000611 13600031207 014445 0 ustar jjc jjc EPSPICT filename
command. Writes a file with the specified name, containing
an Encapsulated Postscript (EPS) representation of the state
of the graphics window. This file can be imported into other
programs that understand EPS format. Restrictions: the
drawing cannot use FILL, PENERASE, or PENREVERSE; any
such instructions will be ignored in the translation to
Postscript form.
ucblogo-6.1/helpfiles/eofp 0000664 0001750 0001750 00000000173 13600031207 013732 0 ustar jjc jjc EOFP
EOF?
predicate, outputs TRUE if there are no more characters to be
read in the read stream file, FALSE otherwise.
ucblogo-6.1/helpfiles/emptyp 0000664 0001750 0001750 00000000156 13600031207 014320 0 ustar jjc jjc EMPTYP thing
EMPTY? thing
outputs TRUE if the input is the empty word or the empty list,
FALSE otherwise.
ucblogo-6.1/helpfiles/edps 0000664 0001750 0001750 00000000111 13600031207 013724 0 ustar jjc jjc EDPS (library procedure)
command. Abbreviates EDIT PROCEDURES.
ucblogo-6.1/helpfiles/edpls 0000664 0001750 0001750 00000000106 13600031207 014104 0 ustar jjc jjc EDPLS (library procedure)
command. Abbreviates EDIT PLISTS.
ucblogo-6.1/helpfiles/edpl 0000664 0001750 0001750 00000000150 13600031207 013720 0 ustar jjc jjc EDPL plname (library procedure)
EDPL plnamelist
command. Abbreviates EDIT PLLIST plname(list).
ucblogo-6.1/helpfiles/edns 0000664 0001750 0001750 00000000104 13600031207 013724 0 ustar jjc jjc EDNS (library procedure)
command. Abbreviates EDIT NAMES.
ucblogo-6.1/helpfiles/edn 0000664 0001750 0001750 00000000153 13600031207 013545 0 ustar jjc jjc EDN varname (library procedure)
EDN varnamelist
command. Abbreviates EDIT NAMELIST varname(list).
ucblogo-6.1/helpfiles/editfile 0000664 0001750 0001750 00000001032 13600031207 014561 0 ustar jjc jjc EDITFILE filename
command. Starts the Logo editor, like EDIT, but instead of editing
a temporary file it edits the file specified by the input. When you
leave the editor, Logo reads the revised file, as for EDIT.
EDITFILE also remembers the filename, so that a subsequent EDIT
command with no input will re-edit the same file.
EDITFILE is intended as an alternative to LOAD and SAVE. You can
maintain a workspace file yourself, controlling the order in which
definitions appear, maintaining comments in the file, and so on.
ucblogo-6.1/helpfiles/edit 0000664 0001750 0001750 00000002667 13600031207 013740 0 ustar jjc jjc EDIT contentslist
ED contentslist
(EDIT)
(ED)
command. If invoked with an input, EDIT writes the definitions
of the named items into a temporary file and edits that file, using
an editor that depends on the platform you're using. In wxWidgets,
and in the MacOS Classic version, there is an editor built into Logo.
In the non-wxWidgets versions for Unix, MacOS X, Windows, and DOS,
Logo uses your favorite editor as determined by the EDITOR environment
variable. If you don't have an EDITOR variable, edits the
definitions using jove. If invoked without an input, EDIT edits
the same file left over from a previous EDIT or EDITFILE instruction.
When you leave the editor, Logo reads the revised definitions and
modifies the workspace accordingly. It is not an error if the
input includes names for which there is no previous definition.
If there is a variable LOADNOISILY whose value is TRUE, then, after
leaving the editor, TO commands in the temporary file print "PROCNAME
defined" (where PROCNAME is the name of the procedure being defined);
if LOADNOISILY is FALSE or undefined, TO commands in the file are
carried out silently.
If there is an environment variable called TEMP, then Logo uses
its value as the directory in which to write the temporary file
used for editing.
Exceptionally, the EDIT command can be used without its default
input and without parentheses provided that nothing follows it on
the instruction line.
ucblogo-6.1/helpfiles/edall 0000664 0001750 0001750 00000000110 13600031207 014051 0 ustar jjc jjc EDALL (library procedure)
command. Abbreviates EDIT CONTENTS.
ucblogo-6.1/helpfiles/ed 0000664 0001750 0001750 00000002667 13600031207 013403 0 ustar jjc jjc EDIT contentslist
ED contentslist
(EDIT)
(ED)
command. If invoked with an input, EDIT writes the definitions
of the named items into a temporary file and edits that file, using
an editor that depends on the platform you're using. In wxWidgets,
and in the MacOS Classic version, there is an editor built into Logo.
In the non-wxWidgets versions for Unix, MacOS X, Windows, and DOS,
Logo uses your favorite editor as determined by the EDITOR environment
variable. If you don't have an EDITOR variable, edits the
definitions using jove. If invoked without an input, EDIT edits
the same file left over from a previous EDIT or EDITFILE instruction.
When you leave the editor, Logo reads the revised definitions and
modifies the workspace accordingly. It is not an error if the
input includes names for which there is no previous definition.
If there is a variable LOADNOISILY whose value is TRUE, then, after
leaving the editor, TO commands in the temporary file print "PROCNAME
defined" (where PROCNAME is the name of the procedure being defined);
if LOADNOISILY is FALSE or undefined, TO commands in the file are
carried out silently.
If there is an environment variable called TEMP, then Logo uses
its value as the directory in which to write the temporary file
used for editing.
Exceptionally, the EDIT command can be used without its default
input and without parentheses provided that nothing follows it on
the instruction line.
ucblogo-6.1/helpfiles/dsetsegmentsize 0000664 0001750 0001750 00000001000 13600031207 016204 0 ustar jjc jjc .SETSEGMENTSIZE num
command. Sets the number of nodes that Logo allocates from the
operating system at once to num, which must be a positive integer.
The name is dotted because bad things will happen if you use a
number that's too small or too large for your computer. The
initial value is 16,000 for most systems, but is smaller for
68000-based Macs. Making it larger will speed up computations
(by reducing the number of garbage collections) at the cost of
allocating more memory than necessary.
ucblogo-6.1/helpfiles/dsetitem 0000664 0001750 0001750 00000000564 13600031207 014623 0 ustar jjc jjc .SETITEM index array value
command. Changes the "index"th member of "array" to be "value",
like SETITEM, but without checking for circularity.
WARNING: Primitives whose names start with a period are DANGEROUS.
Their use by non-experts is not recommended. The use of .SETITEM
can lead to circular arrays, which will get some Logo primitives into
infinite loops.
ucblogo-6.1/helpfiles/dsetfirst 0000664 0001750 0001750 00000000644 13600031207 015013 0 ustar jjc jjc .SETFIRST list value
command. Changes the first member of "list" to be "value".
WARNING: Primitives whose names start with a period are DANGEROUS.
Their use by non-experts is not recommended. The use of .SETFIRST can
lead to circular list structures, which will get some Logo primitives
into infinite loops, and to unexpected changes to other data
structures that share storage with the list being modified.
ucblogo-6.1/helpfiles/dsetbf 0000664 0001750 0001750 00000000744 13600031207 014254 0 ustar jjc jjc .SETBF list value
command. Changes the butfirst of "list" to be "value".
WARNING: Primitives whose names start with a period are DANGEROUS.
Their use by non-experts is not recommended. The use of .SETBF can
lead to circular list structures, which will get some Logo primitives
into infinite loops; unexpected changes to other data structures that
share storage with the list being modified; or to Logo crashes and
coredumps if the butfirst of a list is not itself a list.
ucblogo-6.1/helpfiles/dribble 0000664 0001750 0001750 00000000572 13600031207 014407 0 ustar jjc jjc DRIBBLE filename
command. Creates a new file whose name is the input, like OPENWRITE,
and begins recording in that file everything that is read from the
keyboard or written to the terminal. That is, this writing is in
addition to the writing to WRITER. The intent is to create a
transcript of a Logo session, including things like prompt
characters and interactions.
ucblogo-6.1/helpfiles/dodwhile 0000664 0001750 0001750 00000000541 13600031207 014577 0 ustar jjc jjc DO.WHILE instructionlist tfexpression (library procedure)
command. Repeatedly evaluates the "instructionlist" as long as the
evaluated "tfexpression" remains TRUE. Evaluates the first input
first, so the "instructionlist" is always run at least once. The
"tfexpression" must be an expressionlist whose value when evaluated
is TRUE or FALSE.
ucblogo-6.1/helpfiles/doduntil 0000664 0001750 0001750 00000000542 13600031207 014623 0 ustar jjc jjc DO.UNTIL instructionlist tfexpression (library procedure)
command. Repeatedly evaluates the "instructionlist" as long as the
evaluated "tfexpression" remains FALSE. Evaluates the first input
first, so the "instructionlist" is always run at least once. The
"tfexpression" must be an expressionlist whose value when evaluated
is TRUE or FALSE.
ucblogo-6.1/helpfiles/dmaybeoutput 0000664 0001750 0001750 00000001373 13600031207 015526 0 ustar jjc jjc .MAYBEOUTPUT value (special form)
works like OUTPUT except that the expression that provides the
input value might not, in fact, output a value, in which case
the effect is like STOP. This is intended for use in control
structure definitions, for cases in which you don't know whether
or not some expression produces a value. Example:
to invoke :function [:inputs] 2
.maybeoutput apply :function :inputs
end
? (invoke "print "a "b "c)
a b c
? print (invoke "word "a "b "c)
abc
This is an alternative to RUNRESULT. It's fast and easy to use,
at the cost of being an exception to Logo's evaluation rules.
(Ordinarily, it should be an error if the expression that's
supposed to provide an input to something doesn't have a value.)
ucblogo-6.1/helpfiles/dmacro 0000664 0001750 0001750 00000011067 13600031207 014252 0 ustar jjc jjc .MACRO procname :input1 :input2 ... (special form)
.DEFMACRO procname text
A macro is a special kind of procedure whose output is evaluated
as Logo instructions in the context of the macro's caller.
.MACRO is exactly like TO except that the new procedure becomes
a macro; .DEFMACRO is exactly like DEFINE with the same exception.
Macros are useful for inventing new control structures comparable
to REPEAT, IF, and so on. Such control structures can almost, but
not quite, be duplicated by ordinary Logo procedures. For example,
here is an ordinary procedure version of REPEAT:
to my.repeat :num :instructions
if :num=0 [stop]
run :instructions
my.repeat :num-1 :instructions
end
This version works fine for most purposes, e.g.,
my.repeat 5 [print "hello]
But it doesn't work if the instructions to be carried out include
OUTPUT, STOP, or LOCAL. For example, consider this procedure:
to example
print [Guess my secret word. You get three guesses.]
repeat 3 [type "|?? | ~
if readword = "secret [pr "Right! stop]]
print [Sorry, the word was "secret"!]
end
This procedure works as written, but if MY.REPEAT is used instead
of REPEAT, it won't work because the STOP will stop MY.REPEAT
instead of stopping EXAMPLE as desired.
The solution is to make MY.REPEAT a macro. Instead of actually
carrying out the computation, a macro must return a list containing
Logo instructions. The contents of that list are evaluated as if
they appeared in place of the call to the macro. Here's a macro
version of REPEAT:
.macro my.repeat :num :instructions
if :num=0 [output []]
output sentence :instructions ~
(list "my.repeat :num-1 :instructions)
end
Every macro is an operation -- it must always output something.
Even in the base case, MY.REPEAT outputs an empty instruction
list. To show how MY.REPEAT works, let's take the example
my.repeat 5 [print "hello]
For this example, MY.REPEAT will output the instruction list
[print "hello my.repeat 4 [print "hello]]
Logo then executes these instructions in place of the original
invocation of MY.REPEAT; this prints "hello" once and invokes
another repetition.
The technique just shown, although fairly easy to understand,
has the defect of slowness because each repetition has to
construct an instruction list for evaluation. Another approach
is to make MY.REPEAT a macro that works just like the non-macro
version unless the instructions to be repeated include OUTPUT
or STOP:
.macro my.repeat :num :instructions
catch "repeat.catchtag ~
[op repeat.done runresult [repeat1 :num :instructions]]
op []
end
to repeat1 :num :instructions
if :num=0 [throw "repeat.catchtag]
run :instructions
.maybeoutput repeat1 :num-1 :instructions
end
to repeat.done :repeat.result
if emptyp :repeat.result [op [stop]]
op list "output quoted first :repeat.result
end
If the instructions do not include STOP or OUTPUT, then REPEAT1 will
reach its base case and invoke THROW. As a result, MY.REPEAT's last
instruction line will output an empty list, so the evaluation of the
macro result by the caller will do nothing. But if a STOP or OUTPUT
happens, then REPEAT.DONE will output a STOP or OUTPUT instruction
that will be executed in the caller's context.
The macro-defining commands have names starting with a dot because
macros are an advanced feature of Logo; it's easy to get in trouble
by defining a macro that doesn't terminate, or by failing to
construct the instruction list properly.
Lisp users should note that Logo macros are NOT special forms.
That is, the inputs to the macro are evaluated normally, as they
would be for any other Logo procedure. It's only the output from
the macro that's handled unusually.
Here's another example:
.macro localmake :name :value
output (list "local ~
word "" :name ~
"apply ~
""make ~
(list :name :value))
end
It's used this way:
to try
localmake "garply "hello
print :garply
end
LOCALMAKE outputs the list
[local "garply apply "make [garply hello]]
The reason for the use of APPLY is to avoid having to decide
whether or not the second input to MAKE requires a quotation
mark before it. (In this case it would -- MAKE "GARPLY "HELLO --
but the quotation mark would be wrong if the value were a list.)
It's often convenient to use the ` function to construct the
instruction list:
.macro localmake :name :value
op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
end
On the other hand, ` is pretty slow, since it's tree recursive and
written in Logo.
ucblogo-6.1/helpfiles/difference 0000664 0001750 0001750 00000000400 13600031207 015064 0 ustar jjc jjc DIFFERENCE num1 num2
num1 - num2
outputs the difference of its inputs. Minus sign means infix
difference in ambiguous contexts (when preceded by a complete
expression), unless it is preceded by a space and followed
by a nonspace. (See also MINUS.)
ucblogo-6.1/helpfiles/dequeue 0000664 0001750 0001750 00000000312 13600031207 014431 0 ustar jjc jjc DEQUEUE queuename (library procedure)
outputs the least recently QUEUEd member of the queue that is the
value of the variable whose name is "queuename" and removes that
member from the queue.
ucblogo-6.1/helpfiles/deq 0000664 0001750 0001750 00000000633 13600031207 013553 0 ustar jjc jjc .EQ thing1 thing2
outputs TRUE if its two inputs are the same datum, so that applying a
mutator to one will change the other as well. Outputs FALSE otherwise,
even if the inputs are equal in value.
WARNING: Primitives whose names start with a period are DANGEROUS.
Their use by non-experts is not recommended. The use of mutators
can lead to circular data structures, infinite loops, or Logo crashes.
ucblogo-6.1/helpfiles/definedp 0000664 0001750 0001750 00000000202 13600031207 014550 0 ustar jjc jjc DEFINEDP name
DEFINED? name
outputs TRUE if the input is the name of a user-defined procedure,
including a library procedure.
ucblogo-6.1/helpfiles/define 0000664 0001750 0001750 00000001476 13600031207 014242 0 ustar jjc jjc DEFINE procname text
command. Defines a procedure with name "procname" and text "text".
If there is already a procedure with the same name, the new
definition replaces the old one. The text input must be a list
whose members are lists. The first member is a list of inputs;
it looks like a TO line but without the word TO, without the
procedure name, and without the colons before input names. In
other words, the members of this first sublist are words for
the names of required inputs and lists for the names of optional
or rest inputs. The remaining sublists of the text input make
up the body of the procedure, with one sublist for each instruction
line of the body. (There is no END line in the text input.)
It is an error to redefine a primitive procedure unless the variable
REDEFP has the value TRUE.
ucblogo-6.1/helpfiles/decreasefont 0000664 0001750 0001750 00000000264 13600031207 015444 0 ustar jjc jjc INCREASEFONT
DECREASEFONT
command (wxWidgets only). Increase or decrease the size of the font
used in the text and edit windows to the next larger or smaller
available size.
ucblogo-6.1/helpfiles/ddefmacro 0000664 0001750 0001750 00000011067 13600031207 014731 0 ustar jjc jjc .MACRO procname :input1 :input2 ... (special form)
.DEFMACRO procname text
A macro is a special kind of procedure whose output is evaluated
as Logo instructions in the context of the macro's caller.
.MACRO is exactly like TO except that the new procedure becomes
a macro; .DEFMACRO is exactly like DEFINE with the same exception.
Macros are useful for inventing new control structures comparable
to REPEAT, IF, and so on. Such control structures can almost, but
not quite, be duplicated by ordinary Logo procedures. For example,
here is an ordinary procedure version of REPEAT:
to my.repeat :num :instructions
if :num=0 [stop]
run :instructions
my.repeat :num-1 :instructions
end
This version works fine for most purposes, e.g.,
my.repeat 5 [print "hello]
But it doesn't work if the instructions to be carried out include
OUTPUT, STOP, or LOCAL. For example, consider this procedure:
to example
print [Guess my secret word. You get three guesses.]
repeat 3 [type "|?? | ~
if readword = "secret [pr "Right! stop]]
print [Sorry, the word was "secret"!]
end
This procedure works as written, but if MY.REPEAT is used instead
of REPEAT, it won't work because the STOP will stop MY.REPEAT
instead of stopping EXAMPLE as desired.
The solution is to make MY.REPEAT a macro. Instead of actually
carrying out the computation, a macro must return a list containing
Logo instructions. The contents of that list are evaluated as if
they appeared in place of the call to the macro. Here's a macro
version of REPEAT:
.macro my.repeat :num :instructions
if :num=0 [output []]
output sentence :instructions ~
(list "my.repeat :num-1 :instructions)
end
Every macro is an operation -- it must always output something.
Even in the base case, MY.REPEAT outputs an empty instruction
list. To show how MY.REPEAT works, let's take the example
my.repeat 5 [print "hello]
For this example, MY.REPEAT will output the instruction list
[print "hello my.repeat 4 [print "hello]]
Logo then executes these instructions in place of the original
invocation of MY.REPEAT; this prints "hello" once and invokes
another repetition.
The technique just shown, although fairly easy to understand,
has the defect of slowness because each repetition has to
construct an instruction list for evaluation. Another approach
is to make MY.REPEAT a macro that works just like the non-macro
version unless the instructions to be repeated include OUTPUT
or STOP:
.macro my.repeat :num :instructions
catch "repeat.catchtag ~
[op repeat.done runresult [repeat1 :num :instructions]]
op []
end
to repeat1 :num :instructions
if :num=0 [throw "repeat.catchtag]
run :instructions
.maybeoutput repeat1 :num-1 :instructions
end
to repeat.done :repeat.result
if emptyp :repeat.result [op [stop]]
op list "output quoted first :repeat.result
end
If the instructions do not include STOP or OUTPUT, then REPEAT1 will
reach its base case and invoke THROW. As a result, MY.REPEAT's last
instruction line will output an empty list, so the evaluation of the
macro result by the caller will do nothing. But if a STOP or OUTPUT
happens, then REPEAT.DONE will output a STOP or OUTPUT instruction
that will be executed in the caller's context.
The macro-defining commands have names starting with a dot because
macros are an advanced feature of Logo; it's easy to get in trouble
by defining a macro that doesn't terminate, or by failing to
construct the instruction list properly.
Lisp users should note that Logo macros are NOT special forms.
That is, the inputs to the macro are evaluated normally, as they
would be for any other Logo procedure. It's only the output from
the macro that's handled unusually.
Here's another example:
.macro localmake :name :value
output (list "local ~
word "" :name ~
"apply ~
""make ~
(list :name :value))
end
It's used this way:
to try
localmake "garply "hello
print :garply
end
LOCALMAKE outputs the list
[local "garply apply "make [garply hello]]
The reason for the use of APPLY is to avoid having to decide
whether or not the second input to MAKE requires a quotation
mark before it. (In this case it would -- MAKE "GARPLY "HELLO --
but the quotation mark would be wrong if the value were a list.)
It's often convenient to use the ` function to construct the
instruction list:
.macro localmake :name :value
op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
end
On the other hand, ` is pretty slow, since it's tree recursive and
written in Logo.
ucblogo-6.1/helpfiles/cursor 0000664 0001750 0001750 00000000417 13600031207 014317 0 ustar jjc jjc CURSOR
outputs a list containing the current x and y coordinates of
the text cursor. Logo may get confused about the current
cursor position if, e.g., you type in a long line that wraps
around or your program prints escape codes that affect the
screen strangely.
ucblogo-6.1/helpfiles/ct 0000664 0001750 0001750 00000000062 13600031207 013404 0 ustar jjc jjc CLEARTEXT
CT
command. Clears the text window.
ucblogo-6.1/helpfiles/cslsload 0000664 0001750 0001750 00000000262 13600031207 014604 0 ustar jjc jjc CSLSLOAD name
command. Loads the named file, like LOAD, but from the directory
containing the Computer Science Logo Style programs instead of the
current user's directory.
ucblogo-6.1/helpfiles/cs 0000664 0001750 0001750 00000000207 13600031207 013404 0 ustar jjc jjc CLEARSCREEN
CS
erases the graphics window and sends the turtle to its initial
position and heading. Like HOME and CLEAN together.
ucblogo-6.1/helpfiles/crossmap 0000664 0001750 0001750 00000001543 13600031207 014632 0 ustar jjc jjc CROSSMAP template listlist (library procedure)
(CROSSMAP template data1 data2 ...)
outputs a list containing the results of template evaluations.
Each data list contributes to a slot in the template; the number
of slots is equal to the number of data list inputs. As a special
case, if only one data list input is given, that list is taken as
a list of data lists, and each of its members contributes values
to a slot. CROSSMAP differs from MAP in that instead of taking
members from the data inputs in parallel, it takes all possible
combinations of members of data inputs, which need not be the same
length.
? show (crossmap [word ?1 ?2] [a b c] [1 2 3 4])
[a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4]
?
For compatibility with the version in the first edition of CSLS,
CROSSMAP templates may use the notation :1 instead of ?1 to indicate
slots.
ucblogo-6.1/helpfiles/count 0000664 0001750 0001750 00000000411 13600031207 014124 0 ustar jjc jjc COUNT thing
outputs the number of characters in the input, if the input is a word;
outputs the number of members in the input, if it is a list
or an array. (For an array, this may or may not be the index of the
last member, depending on the array's origin.)
ucblogo-6.1/helpfiles/cos 0000664 0001750 0001750 00000000113 13600031207 013557 0 ustar jjc jjc COS degrees
outputs the cosine of its input, which is taken in degrees.
ucblogo-6.1/helpfiles/copydef 0000664 0001750 0001750 00000000662 13600031207 014435 0 ustar jjc jjc COPYDEF newname oldname
command. Makes "newname" a procedure identical to "oldname".
The latter may be a primitive. If "newname" was already defined,
its previous definition is lost. If "newname" was already a
primitive, the redefinition is not permitted unless the variable
REDEFP has the value TRUE.
Note: dialects of Logo differ as to the order of inputs to COPYDEF.
This dialect uses "MAKE order," not "NAME order."
ucblogo-6.1/helpfiles/continue 0000664 0001750 0001750 00000000660 13600031207 014626 0 ustar jjc jjc CONTINUE value
CO value
(CONTINUE)
(CO)
command. Ends the current interactive pause, returning to the
context of the PAUSE invocation that began it. If CONTINUE is
given an input, that value is used as the output from the PAUSE.
If not, the PAUSE does not output.
Exceptionally, the CONTINUE command can be used without its default
input and without parentheses provided that nothing follows it on
the instruction line.
ucblogo-6.1/helpfiles/contents 0000664 0001750 0001750 00000000331 13600031207 014632 0 ustar jjc jjc CONTENTS
outputs a "contents list," i.e., a list of three lists containing
names of defined procedures, variables, and property lists
respectively. This list includes all unburied named items in
the workspace.
ucblogo-6.1/helpfiles/cond 0000664 0001750 0001750 00000002027 13600031207 013724 0 ustar jjc jjc COND clauses (library procedure)
command or operation. The input is a list of lists (clauses); each
clause is a list whose first element is either an expression whose
value is TRUE or FALSE, or the word ELSE, and whose butfirst is a Logo
expression or instruction. COND examines the clauses in order. If a
clause begins with the word ELSE (upper or lower case), then the
butfirst of that clause is evaluated and CASE outputs its value, if
any. Otherwise, the first element of the clause is evaluated; the
resulting value must be TRUE or FALSE. If it's TRUE, then the
butfirst of that clause is evaluated and COND outputs its value, if
any. If the value is FALSE, then COND goes on to the next clause. If
no clause is satisfied, COND does nothing. Example:
to evens :numbers ; select even numbers from a list
op cond [ [[emptyp :numbers] []]
[[evenp first :numbers] ; assuming EVENP is defined
fput first :numbers evens butfirst :numbers]
[else evens butfirst :numbers] ]
end
ucblogo-6.1/helpfiles/commandline 0000664 0001750 0001750 00000000163 13600031207 015266 0 ustar jjc jjc COMMANDLINE (variable)
contains any text appearing after a hyphen on the command line
used to start Logo.
ucblogo-6.1/helpfiles/combine 0000664 0001750 0001750 00000000225 13600031207 014413 0 ustar jjc jjc COMBINE thing1 thing2 (library procedure)
if thing2 is a word, outputs WORD thing1 thing2. If thing2 is a list,
outputs FPUT thing1 thing2.
ucblogo-6.1/helpfiles/co 0000664 0001750 0001750 00000000660 13600031207 013403 0 ustar jjc jjc CONTINUE value
CO value
(CONTINUE)
(CO)
command. Ends the current interactive pause, returning to the
context of the PAUSE invocation that began it. If CONTINUE is
given an input, that value is used as the output from the PAUSE.
If not, the PAUSE does not output.
Exceptionally, the CONTINUE command can be used without its default
input and without parentheses provided that nothing follows it on
the instruction line.
ucblogo-6.1/helpfiles/closeall 0000664 0001750 0001750 00000000156 13600031207 014600 0 ustar jjc jjc CLOSEALL (library procedure)
command. Closes all open files. Abbreviates
FOREACH ALLOPEN [CLOSE ?]
ucblogo-6.1/helpfiles/close 0000664 0001750 0001750 00000000325 13600031207 014105 0 ustar jjc jjc CLOSE filename
command. Closes the named file. If the file was currently the
reader or writer, then the reader or writer is changed to the
keyboard or screen, as if SETREAD [] or SETWRITE [] had been done.
ucblogo-6.1/helpfiles/clickpos 0000664 0001750 0001750 00000000317 13600031207 014610 0 ustar jjc jjc CLICKPOS
outputs the coordinates that the mouse was at when a mouse button
was most recently pushed, provided that that position was within the
graphics window, in turtle coordinates. (wxWidgets only)
ucblogo-6.1/helpfiles/cleartext 0000664 0001750 0001750 00000000062 13600031207 014771 0 ustar jjc jjc CLEARTEXT
CT
command. Clears the text window.
ucblogo-6.1/helpfiles/clearscreen 0000664 0001750 0001750 00000000207 13600031207 015265 0 ustar jjc jjc CLEARSCREEN
CS
erases the graphics window and sends the turtle to its initial
position and heading. Like HOME and CLEAN together.
ucblogo-6.1/helpfiles/clean 0000664 0001750 0001750 00000000225 13600031207 014061 0 ustar jjc jjc CLEAN
erases all lines that the turtle has drawn on the graphics window.
The turtle's state (position, heading, pen mode, etc.) is not
changed.
ucblogo-6.1/helpfiles/char 0000664 0001750 0001750 00000000173 13600031207 013716 0 ustar jjc jjc CHAR int
outputs the character represented in the ASCII code by the input,
which must be an integer between 0 and 255.
ucblogo-6.1/helpfiles/catch 0000664 0001750 0001750 00000001720 13600031207 014062 0 ustar jjc jjc CATCH tag instructionlist
command or operation. Runs its second input. Outputs if that
instructionlist outputs. If, while running the instructionlist,
a THROW instruction is executed with a tag equal to the first
input (case-insensitive comparison), then the running of the
instructionlist is terminated immediately. In this case the CATCH
outputs if a value input is given to THROW. The tag must be a word.
If the tag is the word ERROR, then any error condition that arises
during the running of the instructionlist has the effect of THROW
"ERROR instead of printing an error message and returning to
toplevel. The CATCH does not output if an error is caught. Also,
during the running of the instructionlist, the variable ERRACT is
temporarily unbound. (If there is an error while ERRACT has a
value, that value is taken as an instructionlist to be run after
printing the error message. Typically the value of ERRACT, if any,
is the list [PAUSE].)
ucblogo-6.1/helpfiles/caseignoredp 0000664 0001750 0001750 00000000322 13600031207 015440 0 ustar jjc jjc CASEIGNOREDP (variable)
if TRUE, indicates that lower case and upper case letters should be
considered equal by EQUALP, BEFOREP, MEMBERP, etc. Logo initially
makes this variable TRUE, and buries it.
ucblogo-6.1/helpfiles/case 0000664 0001750 0001750 00000001472 13600031207 013717 0 ustar jjc jjc CASE value clauses (library procedure)
command or operation. The second input is a list of lists (clauses);
each clause is a list whose first element is either a list of values
or the word ELSE and whose butfirst is a Logo expression or
instruction. CASE examines the clauses in order. If a clause begins
with the word ELSE (upper or lower case), then the butfirst of that
clause is evaluated and CASE outputs its value, if any. If the first
input to CASE is a member of the first element of a clause, then the
butfirst of that clause is evaluated and CASE outputs its value, if
any. If neither of these conditions is met, then CASE goes on to the
next clause. If no clause is satisfied, CASE does nothing. Example:
to vowelp :letter
output case :letter [ [[a e i o u] "true] [else "false] ]
end
ucblogo-6.1/helpfiles/cascade 0000664 0001750 0001750 00000005122 13600031207 014363 0 ustar jjc jjc CASCADE endtest template startvalue (library procedure)
(CASCADE endtest tmp1 sv1 tmp2 sv2 ...)
(CASCADE endtest tmp1 sv1 tmp2 sv2 ... finaltemplate)
outputs the result of applying a template (or several templates,
as explained below) repeatedly, with a given value filling the
slot the first time, and the result of each application filling
the slot for the following application.
In the simplest case, CASCADE has three inputs. The second input
is a one-slot expression template. That template is evaluated
some number of times (perhaps zero). On the first evaluation,
the slot is filled with the third input; on subsequent evaluations,
the slot is filled with the result of the previous evaluation.
The number of evaluations is determined by the first input. This
can be either a nonnegative integer, in which case the template is
evaluated that many times, or a predicate expression template, in
which case it is evaluated (with the same slot filler that will be
used for the evaluation of the second input) repeatedly, and the
CASCADE evaluation continues as long as the predicate value is
FALSE. (In other words, the predicate template indicates the
condition for stopping.)
If the template is evaluated zero times, the output from CASCADE
is the third (startvalue) input. Otherwise, the output is the
value produced by the last template evaluation.
CASCADE templates may include the symbol # to represent the number
of times the template has been evaluated. This slot is filled with
1 for the first evaluation, 2 for the second, and so on.
? show cascade 5 [lput # ?] []
[1 2 3 4 5]
? show cascade [vowelp first ?] [bf ?] "spring
ing
? show cascade 5 [# * ?] 1
120
?
Several cascaded results can be computed in parallel by providing
additional template-startvalue pairs as inputs to CASCADE. In this
case, all templates (including the endtest template, if used) are
multi-slot, with the number of slots equal to the number of pairs of
inputs. In each round of evaluations, ?2, for example, represents the
result of evaluating the second template in the previous round. If
the total number of inputs (including the first endtest input) is odd,
then the output from CASCADE is the final value of the first template.
If the total number of inputs is even, then the last input is a
template that is evaluated once, after the end test is satisfied, to
determine the output from CASCADE.
to fibonacci :n
output (cascade :n [?1 + ?2] 1 [?1] 0)
end
to piglatin :word
output (cascade [vowelp first ?] ~
[word bf ? first ?] ~
:word ~
[word ? "ay])
end
ucblogo-6.1/helpfiles/bye 0000664 0001750 0001750 00000000103 13600031207 013551 0 ustar jjc jjc BYE
command. Exits from Logo; returns to the operating system.
ucblogo-6.1/helpfiles/buttonp 0000664 0001750 0001750 00000000356 13600031207 014477 0 ustar jjc jjc BUTTONP
BUTTON?
outputs TRUE if a mouse button is down and the mouse is over the
graphics window. Once the button is down, BUTTONP remains true until
the button is released, even if the mouse is dragged out of the
graphics window.
ucblogo-6.1/helpfiles/buttonact 0000664 0001750 0001750 00000001502 13600031207 015001 0 ustar jjc jjc BUTTONACT (variable)
if nonempty, should be an instruction list that will be evaluated
whenever a mouse button is pressed. Note that the user may have
released the button before the instructions are evaluated. BUTTON
will still output which button was most recently pressed. CLICKPOS
will output the position of the mouse cursor at the moment the
button was pressed; this may be different from MOUSEPOS if the
user moves the mouse after clicking.
Note that it's possible for the user to press a button during the
evaluation of the instruction list. If this would confuse your
program, prevent it by temporarily setting BUTTONACT to the empty
list. One easy way to do that is the following:
make "buttonact [button.action]
to button.action [:buttonact []]
... ; whatever you want the button to do
end
ucblogo-6.1/helpfiles/button 0000664 0001750 0001750 00000000501 13600031207 014307 0 ustar jjc jjc BUTTON
outputs 0 if no mouse button has been pushed inside the Logo window
since the last call to BUTTON. Otherwise, it outputs an integer
between 1 and 3 indicating which button was most recently pressed.
Ordinarily 1 means left, 2 means right, and 3 means center, but
operating systems may reconfigure these.
ucblogo-6.1/helpfiles/butlast 0000664 0001750 0001750 00000000332 13600031207 014454 0 ustar jjc jjc BUTLAST wordorlist
BL wordorlist
if the input is a word, outputs a word containing all but the last
character of the input. If the input is a list, outputs a list
containing all but the last member of the input.
ucblogo-6.1/helpfiles/butfirsts 0000664 0001750 0001750 00000000657 13600031207 015035 0 ustar jjc jjc BUTFIRSTS list
BFS list
outputs a list containing the BUTFIRST of each member of the input
list. It is an error if any member of the input list is empty or an
array. (The input itself may be empty, in which case the output is
also empty.) This could be written as
to butfirsts :list
output map "butfirst :list
end
but is provided as a primitive in order to speed up the iteration
tools MAP, MAP.SE, and FOREACH.
ucblogo-6.1/helpfiles/butfirst 0000664 0001750 0001750 00000000335 13600031207 014643 0 ustar jjc jjc BUTFIRST wordorlist
BF wordorlist
if the input is a word, outputs a word containing all but the first
character of the input. If the input is a list, outputs a list
containing all but the first member of the input.
ucblogo-6.1/helpfiles/buryname 0000664 0001750 0001750 00000000164 13600031207 014623 0 ustar jjc jjc BURYNAME varname (library procedure)
BURYNAME varnamelist
command. Abbreviates BURY NAMELIST varname(list).
ucblogo-6.1/helpfiles/buryall 0000664 0001750 0001750 00000000112 13600031207 014444 0 ustar jjc jjc BURYALL (library procedure)
command. Abbreviates BURY CONTENTS.
ucblogo-6.1/helpfiles/bury 0000664 0001750 0001750 00000000507 13600031207 013763 0 ustar jjc jjc BURY contentslist
command. Buries the procedures, variables, and property lists
named in the input. A buried item is not included in the lists
output by CONTENTS, PROCEDURES, VARIABLES, and PLISTS, but is
included in the list output by BURIED. By implication, buried
things are not printed by POALL or saved by SAVE.
ucblogo-6.1/helpfiles/buriedp 0000664 0001750 0001750 00000000576 13600031207 014442 0 ustar jjc jjc BURIEDP contentslist
BURIED? contentslist
outputs TRUE if the first procedure, variable, or property list named
in the contents list is buried, FALSE if not. Only the first thing in
the list is tested; the most common use will be with a word as input,
naming a procedure, but a contents list is allowed so that you can
BURIEDP [[] [VARIABLE]] or BURIEDP [[] [] [PROPLIST]].
ucblogo-6.1/helpfiles/buried 0000664 0001750 0001750 00000000126 13600031207 014251 0 ustar jjc jjc BURIED
outputs a contents list including all buried named items in
the workspace.
ucblogo-6.1/helpfiles/bl 0000664 0001750 0001750 00000000332 13600031207 013373 0 ustar jjc jjc BUTLAST wordorlist
BL wordorlist
if the input is a word, outputs a word containing all but the last
character of the input. If the input is a list, outputs a list
containing all but the last member of the input.
ucblogo-6.1/helpfiles/bk 0000664 0001750 0001750 00000000265 13600031207 013377 0 ustar jjc jjc BACK dist
BK dist
moves the turtle backward, i.e., exactly opposite to the direction
that it's facing, by the specified distance. (The heading of the
turtle does not change.)
ucblogo-6.1/helpfiles/bitxor 0000664 0001750 0001750 00000000171 13600031207 014306 0 ustar jjc jjc BITXOR num1 num2
(BITXOR num1 num2 num3 ...)
outputs the bitwise EXCLUSIVE OR of its inputs, which must be
integers.
ucblogo-6.1/helpfiles/bitor 0000664 0001750 0001750 00000000154 13600031207 014117 0 ustar jjc jjc BITOR num1 num2
(BITOR num1 num2 num3 ...)
outputs the bitwise OR of its inputs, which must be integers.
ucblogo-6.1/helpfiles/bitnot 0000664 0001750 0001750 00000000116 13600031207 014275 0 ustar jjc jjc BITNOT num
outputs the bitwise NOT of its input, which must be an integer.
ucblogo-6.1/helpfiles/bitand 0000664 0001750 0001750 00000000157 13600031207 014244 0 ustar jjc jjc BITAND num1 num2
(BITAND num1 num2 num3 ...)
outputs the bitwise AND of its inputs, which must be integers.
ucblogo-6.1/helpfiles/bg 0000664 0001750 0001750 00000000220 13600031207 013362 0 ustar jjc jjc BACKGROUND
BG
outputs the graphics background color, either as a slot number or
as an RGB list, whichever way it was set. (See PENCOLOR.)
ucblogo-6.1/helpfiles/bfs 0000664 0001750 0001750 00000000657 13600031207 013562 0 ustar jjc jjc BUTFIRSTS list
BFS list
outputs a list containing the BUTFIRST of each member of the input
list. It is an error if any member of the input list is empty or an
array. (The input itself may be empty, in which case the output is
also empty.) This could be written as
to butfirsts :list
output map "butfirst :list
end
but is provided as a primitive in order to speed up the iteration
tools MAP, MAP.SE, and FOREACH.
ucblogo-6.1/helpfiles/bf 0000664 0001750 0001750 00000000335 13600031207 013370 0 ustar jjc jjc BUTFIRST wordorlist
BF wordorlist
if the input is a word, outputs a word containing all but the first
character of the input. If the input is a list, outputs a list
containing all but the first member of the input.
ucblogo-6.1/helpfiles/beforep 0000664 0001750 0001750 00000000564 13600031207 014427 0 ustar jjc jjc BEFOREP word1 word2
BEFORE? word1 word2
outputs TRUE if word1 comes before word2 in ASCII collating sequence
(for words of letters, in alphabetical order). Case-sensitivity is
determined by the value of CASEIGNOREDP. Note that if the inputs are
numbers, the result may not be the same as with LESSP; for example,
BEFOREP 3 12 is false because 3 collates after 1.
ucblogo-6.1/helpfiles/backslashedp 0000664 0001750 0001750 00000001131 13600031207 015420 0 ustar jjc jjc VBARREDP char
VBARRED? char
BACKSLASHED? char (library procedure)
outputs TRUE if the input character was originally entered into Logo
within vertical bars (|) to prevent its usual special syntactic
meaning, FALSE otherwise. (Outputs TRUE only if the character is a
backslashed space, tab, newline, or one of ()[]+-*/=<>":;\~?| )
The names BACKSLASHEDP and BACKSLASHED? are included in the Logo
library for backward compatibility with the former names of this
primitive, although it does *not* output TRUE for characters
originally entered with backslashes.
ucblogo-6.1/helpfiles/background 0000664 0001750 0001750 00000000220 13600031207 015111 0 ustar jjc jjc BACKGROUND
BG
outputs the graphics background color, either as a slot number or
as an RGB list, whichever way it was set. (See PENCOLOR.)
ucblogo-6.1/helpfiles/back 0000664 0001750 0001750 00000000265 13600031207 013703 0 ustar jjc jjc BACK dist
BK dist
moves the turtle backward, i.e., exactly opposite to the direction
that it's facing, by the specified distance. (The heading of the
turtle does not change.)
ucblogo-6.1/helpfiles/ashift 0000664 0001750 0001750 00000000266 13600031207 014262 0 ustar jjc jjc ASHIFT num1 num2
outputs "num1" arithmetic-shifted to the left by "num2" bits.
If num2 is negative, the shift is to the right with sign
extension. The inputs must be integers.
ucblogo-6.1/helpfiles/ascii 0000664 0001750 0001750 00000000453 13600031207 014072 0 ustar jjc jjc ASCII char
outputs the integer (between 0 and 255) that represents the input
character in the ASCII code. Interprets control characters as
representing vbarred punctuation, and returns the character code
for the corresponding punctuation character without vertical bars.
(Compare RAWASCII.)
ucblogo-6.1/helpfiles/arraytolist 0000664 0001750 0001750 00000000273 13600031207 015357 0 ustar jjc jjc ARRAYTOLIST array
outputs a list whose members are the members of the input array.
The first member of the output is the first member of the array,
regardless of the array's origin.
ucblogo-6.1/helpfiles/arrayp 0000664 0001750 0001750 00000000125 13600031207 014274 0 ustar jjc jjc ARRAYP thing
ARRAY? thing
outputs TRUE if the input is an array, FALSE otherwise.
ucblogo-6.1/helpfiles/array 0000664 0001750 0001750 00000001064 13600031207 014117 0 ustar jjc jjc ARRAY size
(ARRAY size origin)
outputs an array of "size" members (must be a positive integer),
each of which initially is an empty list. Array members can be
selected with ITEM and changed with SETITEM. The first member of
the array is member number 1 unless an "origin" input (must be an
integer) is given, in which case the first member of the array has
that number as its index. (Typically 0 is used as the origin if
anything.) Arrays are printed by PRINT and friends, and can be
typed in, inside curly braces; indicate an origin with {a b c}@0.
ucblogo-6.1/helpfiles/arity 0000664 0001750 0001750 00000000407 13600031207 014131 0 ustar jjc jjc ARITY procedurename
outputs a list of three numbers: the minimum, default, and maximum
number of inputs for the procedure whose name is the input. It is an
error if there is no such procedure. A maximum of -1 means that the
number of inputs is unlimited.
ucblogo-6.1/helpfiles/arctan 0000664 0001750 0001750 00000000310 13600031207 014242 0 ustar jjc jjc ARCTAN num
(ARCTAN x y)
outputs the arctangent, in degrees, of its input. With two
inputs, outputs the arctangent of y/x, if x is nonzero, or
90 or -90 depending on the sign of y, if x is zero.
ucblogo-6.1/helpfiles/arc 0000664 0001750 0001750 00000000333 13600031207 013544 0 ustar jjc jjc ARC angle radius
draws an arc of a circle, with the turtle at the center, with the
specified radius, starting at the turtle's heading and extending
clockwise through the specified angle. The turtle does not move.
ucblogo-6.1/helpfiles/apply 0000664 0001750 0001750 00000000543 13600031207 014127 0 ustar jjc jjc APPLY template inputlist
command or operation. Runs the "template," filling its slots with
the members of "inputlist." The number of members in "inputlist"
must be an acceptable number of slots for "template." It is
illegal to apply the primitive TO as a template, but anything else
is okay. APPLY outputs what "template" outputs, if anything.
ucblogo-6.1/helpfiles/and 0000664 0001750 0001750 00000001174 13600031207 013545 0 ustar jjc jjc AND tf1 tf2
(AND tf1 tf2 tf3 ...)
outputs TRUE if all inputs are TRUE, otherwise FALSE. All inputs
must be TRUE or FALSE. (Comparison is case-insensitive regardless
of the value of CASEIGNOREDP. That is, "true" or "True" or "TRUE"
are all the same.) An input can be a list, in which case it is
taken as an expression to run; that expression must produce a TRUE
or FALSE value. List expressions are evaluated from left to right;
as soon as a FALSE value is found, the remaining inputs are not
examined. Example:
MAKE "RESULT AND [NOT (:X = 0)] [(1 / :X) > .5]
to avoid the division by zero if the first part is false.
ucblogo-6.1/helpfiles/allowgetset 0000664 0001750 0001750 00000000437 13600031207 015336 0 ustar jjc jjc ALLOWGETSET (variable)
if TRUE, indicates that an attempt to use a procedure that doesn't
exist should be taken as an implicit getter or setter procedure
(setter if the first three letters of the name are SET) for a variable
of the same name (without the SET if appropriate).
ucblogo-6.1/helpfiles/allopen 0000664 0001750 0001750 00000000211 13600031207 014424 0 ustar jjc jjc ALLOPEN
outputs a list whose members are the names of all files currently open.
This list does not include the dribble file, if any.
ucblogo-6.1/helpfiles/` 0000664 0001750 0001750 00000002445 13600031207 013224 0 ustar jjc jjc ` list (library procedure)
outputs a list equal to its input but with certain substitutions.
If a member of the input list is the word "," (comma) then the
following member should be an instructionlist that produces an
output when run. That output value replaces the comma and the
instructionlist. If a member of the input list is the word ",@"
(comma atsign) then the following member should be an instructionlist
that outputs a list when run. The members of that list replace the
,@ and the instructionlist. Example:
show `[foo baz ,[bf [a b c]] garply ,@[bf [a b c]]]
will print
[foo baz [b c] garply b c]
A word starting with , or ,@ is treated as if the rest of the word
were a one-word list, e.g., ,:FOO is equivalent to ,[:FOO].
A word starting with ", (quote comma) or :, (colon comma) becomes a
word starting with " or : but with the result of running the
substitution (or its first word, if the result is a list) replacing
what comes after the comma.
Backquotes can be nested. Substitution is done only for commas at
the same depth as the backquote in which they are found:
? show `[a `[b ,[1+2] ,[foo ,[1+3] d] e] f]
[a ` [b , [1+2] , [foo 4 d] e] f]
?make "name1 "x
?make "name2 "y
? show `[a `[b ,:,:name1 ,",:name2 d] e]
[a ` [b , [:x] , ["y] d] e]
ucblogo-6.1/helpfiles/ALL_NAMES 0000664 0001750 0001750 00000005751 13600031207 014343 0 ustar jjc jjc word
list
sentence
se
fput
lput
array
mdarray
listtoarray
arraytolist
combine
reverse
gensym
first
firsts
last
butfirst
bf
butfirsts
bfs
butlast
bl
item
mditem
pick
remove
remdup
quoted
setitem
mdsetitem
.setfirst
.setbf
.setitem
push
pop
queue
dequeue
wordp
word?
listp
list?
arrayp
array?
emptyp
empty?
equalp
equal?
notequalp
notequal?
beforep
before?
.eq
memberp
member?
substringp
substring?
numberp
number?
vbarredp
vbarred?
vbarredp
count
ascii
rawascii
char
member
lowercase
uppercase
standout
parse
runparse
print
pr
type
show
readlist
rl
readword
rw
readrawline
readchar
rc
readchars
rcs
shell
setprefix
prefix
openread
openwrite
openappend
openupdate
close
allopen
closeall
erasefile
erf
dribble
nodribble
setread
setwrite
reader
writer
setreadpos
setwritepos
readpos
writepos
eofp
eof?
filep
file?
keyp
key?
cleartext
ct
setcursor
cursor
setmargins
settextcolor
settc
increasefont
decreasefont
settextsize
textsize
setfont
font
sum
difference
minus
product
quotient
remainder
modulo
int
round
sqrt
power
exp
log10
ln
sin
radsin
cos
radcos
arctan
radarctan
iseq
rseq
lessp
less?
greaterp
greater?
lessequalp
lessequal?
greaterequalp
greaterequal?
random
rerandom
form
bitand
bitor
bitxor
bitnot
ashift
lshift
and
or
not
forward
fd
back
bk
left
lt
right
rt
setpos
setxy
setx
sety
setheading
seth
home
arc
pos
xcor
ycor
heading
towards
scrunch
showturtle
st
hideturtle
ht
clean
clearscreen
cs
wrap
window
fence
fill
filled
label
setlabelheight
textscreen
ts
fullscreen
fs
splitscreen
ss
setscrunch
refresh
norefresh
shownp
shown?
screenmode
turtlemode
labelsize
pendown
pd
penup
pu
penpaint
ppt
penerase
pe
penreverse
px
setpencolor
setpc
setpalette
setpensize
setpenpattern
setpen
setbackground
setbg
pendownp
pendown?
penmode
pencolor
pc
palette
pensize
penpattern
pen
background
bg
savepict
loadpict
epspict
mousepos
clickpos
buttonp
button?
button
to
define
text
fulltext
copydef
make
name
local
localmake
thing
global
pprop
gprop
remprop
plist
procedurep
procedure?
primitivep
primitive?
definedp
defined?
namep
name?
plistp
plist?
contents
buried
traced
stepped
procedures
primitives
names
plists
namelist
pllist
arity
nodes
printout
po
poall
pops
pons
popls
pon
popl
pot
pots
erase
er
erall
erps
erns
erpls
ern
erpl
bury
buryall
buryname
unbury
unburyall
unburyname
buriedp
buried?
trace
untrace
tracedp
traced?
step
unstep
steppedp
stepped?
edit
ed
editfile
edall
edps
edns
edpls
edn
edpl
save
savel
load
cslsload
help
seteditor
setlibloc
sethelploc
setcslsloc
settemploc
gc
.setsegmentsize
run
runresult
repeat
forever
repcount
if
ifelse
test
iftrue
ift
iffalse
iff
stop
output
op
catch
throw
error
pause
continue
co
wait
bye
.maybeoutput
goto
tag
ignore
`
for
do.while
while
do.until
until
case
cond
apply
invoke
foreach
map
map.se
filter
find
reduce
crossmap
cascade
transfer
.macro
.defmacro
macrop
macro?
macroexpand
allowgetset
buttonact
caseignoredp
commandline
erract
fullprintp
keyact
loadnoisily
printdepthlimit
printwidthlimit
redefp
startup
unburyonedit
usealternatenames
logoversion
logoplatform
+
-
*
/
=
<
>
<=
>=
<>
ucblogo-6.1/docs/ 0000775 0001750 0001750 00000000000 13601427074 012046 5 ustar jjc jjc ucblogo-6.1/docs/ucblogo.info 0000664 0001750 0001750 00000756230 13601426472 014373 0 ustar jjc jjc This is ucblogo.info, produced by makeinfo version 6.6 from
usermanual.texi.
File: ucblogo.info, Node: Top, Next: INTRODUCTION, Prev: (dir), Up: (dir)
This is a TeXinfo version of Berkeley Logo User Manual
Original written by: Brian Harvey
* Menu:
* INTRODUCTION::
* DATA STRUCTURE PRIMITIVES::
* COMMUNICATION::
* ARITHMETIC::
* LOGICAL OPERATIONS::
* GRAPHICS::
* WORKSPACE MANAGEMENT::
* CONTROL STRUCTURES::
* MACROS::
* ERROR PROCESSING::
* SPECIAL VARIABLES::
* INTERNATIONALIZATION::
* INDEX::
File: ucblogo.info, Node: INTRODUCTION, Next: DATA STRUCTURE PRIMITIVES, Prev: Top, Up: Top
1 Introduction
**************
* Menu:
* OVERVIEW::
* GETTER/SETTER VARIBLE SYNTAX::
* ENTERING AND LEAVING LOGO::
* TOKENIZATION::
File: ucblogo.info, Node: OVERVIEW, Next: GETTER/SETTER VARIBLE SYNTAX, Prev: INTRODUCTION, Up: INTRODUCTION
1.1 Overview
============
Copyright (C) 1993 by the Regents of the University of California
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see .
This is a program that is still being written. Many things are missing,
including adequate documentation. This manual assumes that you already
know how to program in Logo, and merely presents the details of this new
implementation.
Read 'Computer Science Logo Style, Volume 1: Symbolic Computing' by
Brian Harvey (MIT Press, 1997) for a tutorial on Logo programming with
emphasis on symbolic computation.
Here are the special features of this dialect of Logo:
Source file compatible among Unix, DOS, Windows, and Mac platforms.
Random-access arrays.
Variable number of inputs to user-defined procedures.
Mutators for list structure (dangerous).
Pause on error, and other improvements to error handling.
Comments and continuation lines; formatting is preserved when
procedure definitions are saved or edited.
Terrapin-style tokenization (e.g., [2+3] is a list with one member)
but LCSI-style syntax (no special forms except TO). The best of
both worlds.
First-class instruction and expression templates (see APPLY).
Macros.
Features *not* found in Berkeley Logo include robotics, music,
animation, parallelism, and multimedia. For those, buy a commercial
version.
File: ucblogo.info, Node: GETTER/SETTER VARIBLE SYNTAX, Next: ENTERING AND LEAVING LOGO, Prev: OVERVIEW, Up: INTRODUCTION
1.2 Getter/Setter Variable Syntax
=================================
Logo distinguishes PROCEDURES from VARIABLES. A procedure is a set of
instructions to carry out some computation; a variable is a named
container that holds a data value such as a number, word, list, or
array.
In traditional Logo syntax, a non-numeric word typed without punctuation
represents a request to invoke the procedure named by that word. A word
typed with a preceding quotation mark represents the word itself. For
example, in the instruction
PRINT FIRST "WORD
the procedures named 'FIRST' and 'PRINT' are invoked, but the procedure
named WORD is not invoked; the word W-O-R-D is the input to FIRST.
What about variables? There are two things one can do with a variable:
give it a value, and find out its value. To give a variable a value,
Logo provides the primitive procedure 'MAKE', which requires two inputs:
the name of the variable and the new value to be assigned. The first
input, the name of the variable, is just a word, and if (as is almost
always the case) the programmer wants to assign a value to a specific
variable whose name is known in advance, that input is quoted, just as
any known specific word would be:
MAKE "MY.VAR FIRST "WORD
gives the variable named 'MY.VAR' the value 'W' (the first letter of
'WORD').
To find the value of a variable, Logo provides the primitive procedure
'THING', which takes a variable name as its input, and outputs the value
of the accessible variable with that name. Thus
PRINT THING "MY.VAR
will print 'W' (supposing the 'MAKE' above has been done). Since
finding the value of a specific, known variable name is such a common
operation, Logo also provides an abbreviated notation that combines
'THING' with quote:
PRINT :MY.VAR
The colon (which Logo old-timers pronounce "dots") replaces 'THING' and
'"' in the earlier version of the instruction.
Newcomers to Logo often complain about the need for all this
punctuation. In particular, Logo programmers who learned about dots and
quotes without also learning about 'THING' wonder why an instruction
such as
MAKE "NEW.VAR :OLD.VAR
uses two different punctuation marks to identify the two variables.
(Having read the paragraphs above, you will understand that actually
both variable names are quoted, but the procedure 'THING' is invoked to
find the value of 'OLD.VAR', since it's that value, not 'OLD.VAR''s
name, that 'MAKE' needs to know. It wouldn't make sense to ask for
'THING' of 'NEW.VAR', since we haven't given 'NEW.VAR' a value yet.)
Although Logo's punctuation rules make sense once understood, they do
form a barrier to entry for the Logo beginner. Why, then, couldn't Logo
be designed so that an unpunctuated word would represent a procedure if
there is a procedure by that name, or a variable if there is a variable
by that name? Then we could say
PRINT MY.VAR
and Logo would realize that 'MY.VAR' is the name of a variable, not of a
procedure. The traditional reason not to use this convention is that
Logo allows the same word to name a procedure and a variable at the same
time. This is most often important for words that name data types, as
in the following procedure:
TO PLURAL :WORD
OUTPUT WORD :WORD "S
END
Here the name 'WORD' is a natural choice for the input to 'PLURAL',
since it describes the kind of input that 'PLURAL' expects. Within the
procedure, we use 'WORD' to represent Logo's primitive procedure that
combines two input words to form a new, longer word; we use ':WORD' to
represent the variable containing the input, whatever actual word is
given when 'PLURAL' is invoked.
? PRINT PLURAL "COMPUTER
COMPUTERS
However, if a Logo instruction includes an unquoted word that is *not*
the name of a procedure, Logo could look for a variable of that name
instead. This would allow a "punctuationless" Logo, *provided that
users who want to work without colons for variables choose variable
names that are not also procedure names.*
What about assigning a value to a variable? Could we do without the
quotation mark on 'MAKE''s first input? Alas, no. Although the first
input to 'MAKE' is *usually* a constant, known variable name, sometimes
it isn't, as in this example:
TO INCREMENT :VAR
MAKE :VAR (THING :VAR)+1 ; Note: it's not "VAR here!
END
? MAKE "X 5
? INCREMENT "X
? PRINT :X
6
The procedure 'INCREMENT' takes a variable name as its input and changes
the value of that variable. In this example there are two variables;
the variable whose name is 'VAR', and whose value is the word 'X'; and
the variable whose name is 'X' and whose value changes from 5 to 6.
Suppose we changed the behavior of 'MAKE' so that it took the word after
'MAKE' as the name of the variable to change; we would be unable to
write 'INCREMENT':
TO INCREMENT :VAR ; nonworking!
MAKE VAR (THING VAR)+1
END
This would assign a new value to 'VAR', not to 'X'.
What we can do is to allow an *alternative* to 'MAKE', a "setter"
procedure for a particular variable. The notation will be
? SETFOO 7
? PRINT FOO
7
'SETFOO' is a "setter procedure" that takes one input (in this case the
input 7) and assigns its value to the variable named 'FOO'.
Berkeley Logo allows users to choose either the traditional notation, in
which case the same name can be used both for a procedure and for a
variable, or the getter/setter notation, in which variable 'FOO' is set
with 'SETFOO' and examined with 'FOO', but the same name can't be used
for procedure and variable.
Here is how this choice is allowed: Berkeley Logo uses traditional
notation, with procedures distinct from variables. However, if there is
a variable named 'AllowGetSet' whose value is TRUE (which there is, by
default, when Logo starts up), then if a Logo instruction refers to a
*nonexistent* procedure (so that the error message "I don't know how to
..." would result), Logo tries the following two steps:
1. If the name is at least four characters long, and the first three
characters are the letters 'SET' (upper or lower case), and if the name
is followed in the instruction by another value, and if the name
without the 'SET' is the name of a variable that already exists, then
Logo will invoke 'MAKE' with its first input being the name without the
'SET', and its second input being the following value.
2. If step 1's conditions are not met, but the name is
the name of an accessible variable, then Logo will invoke
'THING' with that name as input, to find the variable's value.
Step 1 requires that the variable already exist so that misspellings of
names of 'SETxxx' primitives (e.g., 'SETHEADING') will still be caught,
instead of silently creating a new variable. The command 'GLOBAL' can
be used to create a variable without giving it a value.
One final point: The 'TO' command in Logo has always been a special
case; the rest of the line starting with 'TO' is not evaluated as
ordinary Logo expressions are. In particular, the colons used to mark
the names of inputs to the procedure do not cause 'THING' to be invoked.
They are merely mnemonic aids, reminding the Logo user that these words
are names of variables. (Arguably, this nonstantard behavior of 'TO'
adds to Logo beginners' confusion about colons.) To a programmer using
colonless variable references, the colons in the 'TO' line are
unnecessary and meaningless. Berkeley Logo therefore makes the colons
optional:
TO FOO :IN1 :IN2
and
TO FOO IN1 IN2
are both allowed.
File: ucblogo.info, Node: ENTERING AND LEAVING LOGO, Next: TOKENIZATION, Prev: GETTER/SETTER VARIBLE SYNTAX, Up: INTRODUCTION
1.3 Entering and Leaving Logo
=============================
The process to start Logo depends on your operating system:
Unix:
Type the word logo to the shell. (The directory in which you've
installed Logo must be in your path.)
DOS:
Change directories to the one containing Logo (probably
'C:\UCBLOGO'). Then type UCBLOGO for the large memory version, or
BL for the 640K version.
Mac:
Double-click on the 'LOGO' icon within the "UCB Logo" folder.
Windows:
Double-click on the 'UCBWLOGO' icon in the 'UCBLOGO' folder.
To leave Logo, enter the command 'bye'.
On startup, Logo looks for a file named 'startup.lg' in the system Logo
library and, if found, loads it. Then it looks for 'startup.lg' in the
user's home directory, or the current directory, depending on the
operating system, and loads that. These startup files can be used to
predefine procedures, e.g., to provide non-English names for primitive
procedures.
Under Unix, DOS, or Windows, if you include one or more filenames on the
command line when starting Logo, those files will be loaded before the
interpreter starts reading commands from your terminal. If you load a
file that executes some program that includes a 'bye' command, Logo will
run that program and exit. You can therefore write standalone programs
in Logo and run them with shell/batch scripts. To support this
technique, Logo does not print its usual welcoming and parting messages
if you give file arguments to the logo command.
If a command line argument is just a hyphen, then all command line
arguments after the hyphen are not taken as filenames, but are instead
collected in a list, one word per argument; the buried variable
'COMMAND.LINE' contains that list of arguments, or the empty list if
there are none. On my Linux system, if the first line of an executable
shell script is #!/usr/local/bin/logo - (note the hyphen) then the
script can be given command line arguments and they all end up in
':COMMAND.LINE' along with the script's path. Experiment.
If you type your interrupt character (see table below) Logo will stop
what it's doing and return to top-level, as if you did THROW "TOPLEVEL.
If you type your quit character Logo will pause as if you did 'PAUSE'.
wxWidgets Unix DOS/Windows Mac Classic
toplevel alt-S usually ctrl-C ctrl-Q command-. (period)
pause alt-P usually ctrl-\ ctrl-W command-, (comma)
If you have an environment variable called 'LOGOLIB' whose value is the
name of a directory, then Logo will use that directory instead of the
default library. If you invoke a procedure that has not been defined,
Logo first looks for a file in the current directory named 'PROC.lg'
where PROC is the procedure name in lower case letters. If such a file
exists, Logo loads that file. If the missing procedure is still
undefined, or if there is no such file, Logo then looks in the library
directory for a file named 'PROC' (no '.lg') and, if it exists, loads
it. If neither file contains a definition for the procedure, then Logo
signals an error. Several procedures that are primitive in most
versions of Logo are included in the default library, so if you use a
different library you may want to include some or all of the default
library in it.
File: ucblogo.info, Node: TOKENIZATION, Prev: ENTERING AND LEAVING LOGO, Up: INTRODUCTION
1.4 Tokenization
================
Names of procedures, variables, and property lists are case-insensitive.
So are the special words 'END', 'TRUE', and 'FALSE'. Case of letters is
preserved in everything you type, however.
Within square brackets, words are delimited only by spaces and square
brackets. '[2+3]' is a list containing one word. Note, however, that
the Logo primitives that interpret such a list as a Logo instruction or
expression ('RUN', 'IF', etc.) reparse the list as if it had not been
typed inside brackets.
After a quotation mark outside square brackets, a word is delimited by a
space, a square bracket, or a parenthesis.
A word not after a quotation mark or inside square brackets is delimited
by a space, a bracket, a parenthesis, or an infix operator '+-*/=<>'.
Note that words following colons are in this category. Note that quote
and colon are not delimiters. Each infix operator character is a word
in itself, except that the two-character sequences '<=', '>=', and '<>'
(the latter meaning not-equal) with no intervening space are recognized
as a single word.
A word consisting of a question mark followed by a number (e.g., '?37'),
when runparsed (i.e., where a procedure name is expected), is treated as
if it were the sequence
( ? 37 )
making the number an input to the ? procedure. (See the discussion of
templates, below.) This special treatment does not apply to words read
as data, to words with a non-number following the question mark, or if
the question mark is backslashed.
A line (an instruction line or one read by 'READLIST' or 'READWORD') can
be continued onto the following line if its last character is a tilde
('~'). 'READWORD' preserves the tilde and the newline; 'READLIST' does
not.
Lines read with 'READRAWLINE' are never continued.
An instruction line or a line read by 'READLIST' (but not by 'READWORD')
is automatically continued to the next line, as if ended with a tilde,
if there are unmatched brackets, parentheses, braces, or vertical bars
pending. However, it's an error if the continuation line contains only
the word 'END'; this is to prevent runaway procedure definitions. Lines
explicitly continued with a tilde avoid this restriction.
If a line being typed interactively on the keyboard is continued, either
with a tilde or automatically, Logo will display a tilde as a prompt
character for the continuation line.
A semicolon begins a comment in an instruction line. Logo ignores
characters from the semicolon to the end of the line. A tilde as the
last character still indicates a continuation line, but not a
continuation of the comment. For example, typing the instruction
print "abc;comment ~
def
will print the word 'abcdef'. Semicolon has no special meaning in data
lines read by 'READWORD' or 'READLIST', but such a line can later be
reparsed using 'RUNPARSE' and then comments will be recognized.
The two-character sequence '#!' at the beginning of a line also starts a
comment. Unix users can therefore write a file containing Logo
commands, starting with the line
#! /usr/local/bin/logo
(or wherever your Logo executable lives) and the file will be executable
directly from the shell.
To include an otherwise delimiting character (including semicolon or
tilde) in a word, precede it with backslash ('\'). If the last
character of a line is a backslash, then the newline character following
the backslash will be part of the last word on the line, and the line
continues onto the following line. To include a backslash in a word,
use '\\'. If the combination backslash-newline is entered at the
terminal, Logo will issue a backslash as a prompt character for the
continuation line. All of this applies to data lines read with
'READWORD' or 'READLIST' as well as to instruction lines.
A line read with 'READRAWLINE' has no special quoting mechanism; both
backslash and vertical bar (described below) are just ordinary
characters.
An alternative notation to include otherwise delimiting characters in
words is to enclose a group of characters in vertical bars. All
characters between vertical bars are treated as if they were letters.
In data read with 'READWORD' the vertical bars are preserved in the
resulting word. In data read with 'READLIST' (or resulting from a
'PARSE' or 'RUNPARSE' of a word) the vertical bars do not appear
explicitly; all potentially delimiting characters (including spaces,
brackets, parentheses, and infix operators) appear unmarked, but
tokenized as though they were letters. Within vertical bars, backslash
may still be used; the only characters that must be backslashed in this
context are backslash and vertical bar themselves.
Characters entered between vertical bars are forever special, even if
the word or list containing them is later reparsed with 'PARSE' or
'RUNPARSE'. Characters typed after a backslash are treated somewhat
differently: When a quoted word containing a backslashed character is
runparsed, the backslashed character loses its special quality and acts
thereafter as if typed normally. This distinction is important only if
you are building a Logo expression out of parts, to be 'RUN' later, and
want to use parentheses. For example,
PRINT RUN (SE "\( 2 "+ 3 "\))
will print 5, but
RUN (SE "MAKE ""|(| 2)
will create a variable whose name is open-parenthesis. (Each example
would fail if vertical bars and backslashes were interchanged.)
A normally delimiting character entered within vertical bars is 'EQUALP'
to the same character without the vertical bars, but can be
distinguished by the 'VBARREDP' predicate. (However, 'VBARREDP' returns
'TRUE' only for characters for which special treatment is necessary:
whitespace, parentheses, brackets, infix operators, backslash, vertical
bar, tilde, quote, question mark, colon, and semicolon.)
File: ucblogo.info, Node: DATA STRUCTURE PRIMITIVES, Next: COMMUNICATION, Prev: INTRODUCTION, Up: Top
2 Data Structure Primitives
***************************
* Menu:
* CONSTRUCTORS::
* SELECTORS::
* MUTATORS::
* PREDICATES::
* QUERIES::
File: ucblogo.info, Node: CONSTRUCTORS, Next: SELECTORS, Prev: DATA STRUCTURE PRIMITIVES, Up: DATA STRUCTURE PRIMITIVES
2.1 Constructors
================
* Menu:
* WORD::
* LIST::
* SENTENCE::
* FPUT::
* LPUT::
* ARRAY::
* MDARRAY::
* LISTTOARRAY::
* ARRAYTOLIST::
* COMBINE::
* REVERSE::
* GENSYM::
File: ucblogo.info, Node: WORD, Next: LIST, Prev: CONSTRUCTORS, Up: CONSTRUCTORS
word
----
WORD word1 word2
(WORD word1 word2 word3 ...)
outputs a word formed by concatenating its inputs.
File: ucblogo.info, Node: LIST, Next: SENTENCE, Prev: WORD, Up: CONSTRUCTORS
list
----
LIST thing1 thing2
(LIST thing1 thing2 thing3 ...)
outputs a list whose members are its inputs, which can be any Logo datum
(word, list, or array).
File: ucblogo.info, Node: SENTENCE, Next: FPUT, Prev: LIST, Up: CONSTRUCTORS
sentence
--------
SENTENCE thing1 thing2
SE thing1 thing2
(SENTENCE thing1 thing2 thing3 ...)
(SE thing1 thing2 thing3 ...)
outputs a list whose members are its inputs, if those inputs are not
lists, or the members of its inputs, if those inputs are lists.
File: ucblogo.info, Node: FPUT, Next: LPUT, Prev: SENTENCE, Up: CONSTRUCTORS
fput
----
FPUT thing list
outputs a list equal to its second input with one extra member, the
first input, at the beginning. If the second input is a word, then the
first input must be a one-letter word, and FPUT is equivalent to WORD.
File: ucblogo.info, Node: LPUT, Next: ARRAY, Prev: FPUT, Up: CONSTRUCTORS
lput
----
LPUT thing list
outputs a list equal to its second input with one extra member, the
first input, at the end. If the second input is a word, then the first
input must be a one-letter word, and LPUT is equivalent to WORD with its
inputs in the other order.
File: ucblogo.info, Node: ARRAY, Next: MDARRAY, Prev: LPUT, Up: CONSTRUCTORS
array
-----
ARRAY size
(ARRAY size origin)
outputs an array of SIZE members (must be a positive integer), each of
which initially is an empty list. Array members can be selected with
'ITEM' and changed with 'SETITEM'. The first member of the array is
member number 1 unless an ORIGIN input (must be an integer) is given, in
which case the first member of the array has that number as its index.
(Typically 0 is used as the origin if anything.) Arrays are printed by
'PRINT' and friends, and can be typed in, inside curly braces; indicate
an origin with {a b c}@0.
*Note ITEM:: , *note SETITEM:: , *note PRINT:: .
File: ucblogo.info, Node: MDARRAY, Next: LISTTOARRAY, Prev: ARRAY, Up: CONSTRUCTORS
mdarray
-------
MDARRAY sizelist (library procedure)
(MDARRAY sizelist origin)
outputs a multi-dimensional array. The first input must be a list of
one or more positive integers. The second input, if present, must be a
single integer that applies to every dimension of the array.
Ex: (MDARRAY [3 5] 0) outputs a two-dimensional array whose members
range from [0 0] to [2 4].
File: ucblogo.info, Node: LISTTOARRAY, Next: ARRAYTOLIST, Prev: MDARRAY, Up: CONSTRUCTORS
listtoarray
-----------
LISTTOARRAY list
(LISTTOARRAY list origin)
outputs an array of the same size as the input list, whose members are
the members of the input list.
File: ucblogo.info, Node: ARRAYTOLIST, Next: COMBINE, Prev: LISTTOARRAY, Up: CONSTRUCTORS
arraytolist
-----------
ARRAYTOLIST array
outputs a list whose members are the members of the input array. The
first member of the output is the first member of the array, regardless
of the array's origin.
File: ucblogo.info, Node: COMBINE, Next: REVERSE, Prev: ARRAYTOLIST, Up: CONSTRUCTORS
combine
-------
COMBINE thing1 thing2 (library procedure)
if THING2 is a word, outputs WORD thing1 thing2. If THING2 is a list,
outputs FPUT thing1 thing2.
*Note WORD:: , *note FPUT::
File: ucblogo.info, Node: REVERSE, Next: GENSYM, Prev: COMBINE, Up: CONSTRUCTORS
reverse
-------
REVERSE list (library procedure)
outputs a list whose members are the members of the input list, in
reverse order.
File: ucblogo.info, Node: GENSYM, Prev: REVERSE, Up: CONSTRUCTORS
gensym
------
GENSYM (library procedure)
outputs a unique word each time it's invoked. The words are of the form
'G1', 'G2', etc.
File: ucblogo.info, Node: SELECTORS, Next: MUTATORS, Prev: CONSTRUCTORS, Up: DATA STRUCTURE PRIMITIVES
2.2 Data Selectors
==================
* Menu:
* FIRST::
* FIRSTS::
* LAST::
* BUTFIRST::
* BUTFIRSTS::
* BUTLAST::
* ITEM::
* MDITEM::
* PICK::
* REMOVE::
* REMDUP::
* QUOTED::
File: ucblogo.info, Node: FIRST, Next: FIRSTS, Prev: SELECTORS, Up: SELECTORS
first
-----
FIRST thing
if the input is a word, outputs the first character of the word. If the
input is a list, outputs the first member of the list. If the input is
an array, outputs the origin of the array (that is, the _index of_ the
first member of the array).
File: ucblogo.info, Node: FIRSTS, Next: LAST, Prev: FIRST, Up: SELECTORS
firsts
------
FIRSTS list
outputs a list containing the 'FIRST' of each member of the input list.
It is an error if any member of the input list is empty. (The input
itself may be empty, in which case the output is also empty.) This
could be written as
to firsts :list
output map "first :list
end
but is provided as a primitive in order to speed up the iteration tools
'MAP', 'MAP.SE', and 'FOREACH'.
to transpose :matrix
if emptyp first :matrix [op []]
op fput firsts :matrix transpose bfs :matrix
end
*Note MAP:: , *note MAPdSE:: , *note FOREACH::
File: ucblogo.info, Node: LAST, Next: BUTFIRST, Prev: FIRSTS, Up: SELECTORS
last
----
LAST wordorlist
if the input is a word, outputs the last character of the word. If the
input is a list, outputs the last member of the list.
File: ucblogo.info, Node: BUTFIRST, Next: BUTFIRSTS, Prev: LAST, Up: SELECTORS
butfirst
--------
BUTFIRST wordorlist
BF wordorlist
if the input is a word, outputs a word containing all but the first
character of the input. If the input is a list, outputs a list
containing all but the first member of the input.
File: ucblogo.info, Node: BUTFIRSTS, Next: BUTLAST, Prev: BUTFIRST, Up: SELECTORS
butfirsts
---------
BUTFIRSTS list
BFS list
outputs a list containing the 'BUTFIRST' of each member of the input
list. It is an error if any member of the input list is empty or an
array. (The input itself may be empty, in which case the output is also
empty.) This could be written as
to butfirsts :list
output map "butfirst :list
end
but is provided as a primitive in order to speed up the iteration tools
'MAP', 'MAP.SE', and 'FOREACH'.
*Note MAP:: , *note MAPdSE:: , *note FOREACH::
File: ucblogo.info, Node: BUTLAST, Next: ITEM, Prev: BUTFIRSTS, Up: SELECTORS
butlast
-------
BUTLAST wordorlist
BL wordorlist
if the input is a word, outputs a word containing all but the last
character of the input. If the input is a list, outputs a list
containing all but the last member of the input.
File: ucblogo.info, Node: ITEM, Next: MDITEM, Prev: BUTLAST, Up: SELECTORS
item
----
ITEM index thing
if the THING is a word, outputs the INDEXth character of the word. If
the THING is a list, outputs the INDEXth member of the list. If the
THING is an array, outputs the INDEXth member of the array. INDEX
starts at 1 for words and lists; the starting index of an array is
specified when the array is created.
File: ucblogo.info, Node: MDITEM, Next: PICK, Prev: ITEM, Up: SELECTORS
mditem
------
MDITEM indexlist array (library procedure)
outputs the member of the multidimensional ARRAY selected by the list of
numbers INDEXLIST.
File: ucblogo.info, Node: PICK, Next: REMOVE, Prev: MDITEM, Up: SELECTORS
pick
----
PICK list (library procedure)
outputs a randomly chosen member of the input list.
File: ucblogo.info, Node: REMOVE, Next: REMDUP, Prev: PICK, Up: SELECTORS
remove
------
REMOVE thing list (library procedure)
outputs a copy of LIST with every member equal to THING removed.
File: ucblogo.info, Node: REMDUP, Next: QUOTED, Prev: REMOVE, Up: SELECTORS
remdup
------
REMDUP list (library procedure)
outputs a copy of LIST with duplicate members removed. If two or more
members of the input are equal, the rightmost of those members is the
one that remains in the output.
File: ucblogo.info, Node: QUOTED, Prev: REMDUP, Up: SELECTORS
quoted
------
QUOTED thing (library procedure)
outputs its input, if a list; outputs its input with a quotation mark
prepended, if a word.
File: ucblogo.info, Node: MUTATORS, Next: PREDICATES, Prev: SELECTORS, Up: DATA STRUCTURE PRIMITIVES
2.3 Data Mutators
=================
* Menu:
* SETITEM::
* MDSETITEM::
* dSETFIRST:: SETFIRST
* dSETBF:: SETBF
* dSETITEM:: SETITEM
* PUSH::
* POP::
* QUEUE::
* DEQUEUE::
File: ucblogo.info, Node: SETITEM, Next: MDSETITEM, Prev: MUTATORS, Up: MUTATORS
setitem
-------
SETITEM index array value
command. Replaces the INDEXth member of ARRAY with the new VALUE.
Ensures that the resulting array is not circular, i.e., VALUE may not be
a list or array that contains ARRAY.
File: ucblogo.info, Node: MDSETITEM, Next: dSETFIRST, Prev: SETITEM, Up: MUTATORS
mdsetitem
---------
MDSETITEM indexlist array value (library procedure)
command. Replaces the member of ARRAY chosen by INDEXLIST with the new
VALUE.
File: ucblogo.info, Node: dSETFIRST, Next: dSETBF, Prev: MDSETITEM, Up: MUTATORS
.setfirst
---------
.SETFIRST list value
command. Changes the first member of LIST to be VALUE.
WARNING: Primitives whose names start with a period are *dangerous*.
Their use by non-experts is not recommended. The use of '.SETFIRST' can
lead to circular list structures, which will get some Logo primitives
into infinite loops, and to unexpected changes to other data structures
that share storage with the list being modified.
File: ucblogo.info, Node: dSETBF, Next: dSETITEM, Prev: dSETFIRST, Up: MUTATORS
.setbf
------
.SETBF list value
command. Changes the butfirst of LIST to be VALUE.
WARNING: Primitives whose names start with a period are *dangerous*.
Their use by non-experts is not recommended. The use of '.SETBF' can
lead to circular list structures, which will get some Logo primitives
into infinite loops; unexpected changes to other data structures that
share storage with the list being modified; or to Logo crashes and
coredumps if the butfirst of a list is not itself a list.
File: ucblogo.info, Node: dSETITEM, Next: PUSH, Prev: dSETBF, Up: MUTATORS
.setitem
--------
.SETITEM index array value
command. Changes the INDEXth member of ARRAY to be VALUE, like
'SETITEM', but without checking for circularity.
WARNING: Primitives whose names start with a period are dangerous.
Their use by non-experts is not recommended. The use of '.SETITEM' can
lead to circular arrays, which will get some Logo primitives into
infinite loops.
*Note SETITEM::.
File: ucblogo.info, Node: PUSH, Next: POP, Prev: dSETITEM, Up: MUTATORS
push
----
PUSH stackname thing (library procedure)
command. Adds the THING to the stack that is the value of the variable
whose name is STACKNAME. This variable must have a list as its value;
the initial value should be the empty list. New members are added at
the front of the list.
File: ucblogo.info, Node: POP, Next: QUEUE, Prev: PUSH, Up: MUTATORS
pop
---
POP stackname (library procedure)
outputs the most recently 'PUSH'ed member of the stack that is the value
of the variable whose name is STACKNAME and removes that member from the
stack.
File: ucblogo.info, Node: QUEUE, Next: DEQUEUE, Prev: POP, Up: MUTATORS
queue
-----
QUEUE queuename thing (library procedure)
command. Adds the THING to the queue that is the value of the variable
whose name is QUEUENAME. This variable must have a list as its value;
the initial value should be the empty list. New members are added at
the back of the list.
File: ucblogo.info, Node: DEQUEUE, Prev: QUEUE, Up: MUTATORS
dequeue
-------
DEQUEUE queuename (library procedure)
outputs the least recently 'QUEUE'd member of the queue that is the
value of the variable whose name is QUEUENAME and removes that member
from the queue.
File: ucblogo.info, Node: PREDICATES, Next: QUERIES, Prev: MUTATORS, Up: DATA STRUCTURE PRIMITIVES
2.4 Predicates
==============
* Menu:
* WORDP::
* LISTP::
* ARRAYP::
* EMPTYP::
* EQUALP::
* NOTEQUALP::
* BEFOREP::
* dEQ:: EQ
* MEMBERP::
* SUBSTRINGP::
* NUMBERP::
* VBARREDP::
File: ucblogo.info, Node: WORDP, Next: LISTP, Prev: PREDICATES, Up: PREDICATES
wordp
-----
WORDP thing
WORD? thing
outputs 'TRUE' if the input is a word, 'FALSE' otherwise.
File: ucblogo.info, Node: LISTP, Next: ARRAYP, Prev: WORDP, Up: PREDICATES
listp
-----
LISTP thing
LIST? thing
outputs 'TRUE' if the input is a list, 'FALSE' otherwise.
File: ucblogo.info, Node: ARRAYP, Next: EMPTYP, Prev: LISTP, Up: PREDICATES
arrayp
------
ARRAYP thing
ARRAY? thing
outputs 'TRUE' if the input is an array, 'FALSE' otherwise.
File: ucblogo.info, Node: EMPTYP, Next: EQUALP, Prev: ARRAYP, Up: PREDICATES
emptyp
------
EMPTYP thing
EMPTY? thing
outputs 'TRUE' if the input is the empty word or the empty list, 'FALSE'
otherwise.
File: ucblogo.info, Node: EQUALP, Next: NOTEQUALP, Prev: EMPTYP, Up: PREDICATES
equalp
------
EQUALP thing1 thing2
EQUAL? thing1 thing2
thing1 = thing2
outputs 'TRUE' if the inputs are equal, 'FALSE' otherwise. Two numbers
are equal if they have the same numeric value. Two non-numeric words
are equal if they contain the same characters in the same order. If
there is a variable named 'CASEIGNOREDP' whose value is 'TRUE', then an
upper case letter is considered the same as the corresponding lower case
letter. (This is the case by default.) Two lists are equal if their
members are equal. An array is only equal to itself; two separately
created arrays are never equal even if their members are equal. (It is
important to be able to know if two expressions have the same array as
their value because arrays are mutable; if, for example, two variables
have the same array as their values then performing 'SETITEM' on one of
them will also change the other.)
*Note CASEIGNOREDP:: , *note SETITEM::
File: ucblogo.info, Node: NOTEQUALP, Next: BEFOREP, Prev: EQUALP, Up: PREDICATES
notequalp
---------
NOTEQUALP thing1 thing2
NOTEQUAL? thing1 thing2
thing1 <> thing2
outputs 'FALSE' if the inputs are equal, 'TRUE' otherwise. See 'EQUALP'
for the meaning of equality for different data types.
File: ucblogo.info, Node: BEFOREP, Next: dEQ, Prev: NOTEQUALP, Up: PREDICATES
beforep
-------
BEFOREP word1 word2
BEFORE? word1 word2
outputs 'TRUE' if WORD1 comes before WORD2 in ASCII collating sequence
(for words of letters, in alphabetical order). Case-sensitivity is
determined by the value of 'CASEIGNOREDP'. Note that if the inputs are
numbers, the result may not be the same as with 'LESSP'; for example,
BEFOREP 3 12 is false because 3 collates after 1.
*Note CASEIGNOREDP:: , *note LESSP::
File: ucblogo.info, Node: dEQ, Next: MEMBERP, Prev: BEFOREP, Up: PREDICATES
.eq
---
.EQ thing1 thing2
outputs 'TRUE' if its two inputs are the same datum, so that applying a
mutator to one will change the other as well. Outputs 'FALSE'
otherwise, even if the inputs are equal in value.
WARNING: Primitives whose names start with a period are *dangerous*.
Their use by non-experts is not recommended. The use of mutators can
lead to circular data structures, infinite loops, or Logo crashes.
File: ucblogo.info, Node: MEMBERP, Next: SUBSTRINGP, Prev: dEQ, Up: PREDICATES
memberp
-------
MEMBERP thing1 thing2
MEMBER? thing1 thing2
if THING2 is a list or an array, outputs 'TRUE' if THING1 is 'EQUALP' to
a member of THING2, 'FALSE' otherwise. If THING2 is a word, outputs
'TRUE' if THING1 is a one-character word 'EQUALP' to a character of
THING2, 'FALSE' otherwise.
*Note EQUALP:: .
File: ucblogo.info, Node: SUBSTRINGP, Next: NUMBERP, Prev: MEMBERP, Up: PREDICATES
substringp
----------
SUBSTRINGP thing1 thing2
SUBSTRING? thing1 thing2
if THING1 or THING2 is a list or an array, outputs 'FALSE'. If THING2
is a word, outputs 'TRUE' if THING1 is 'EQUALP' to a substring of
THING2, 'FALSE' otherwise.
*Note EQUALP:: .
File: ucblogo.info, Node: NUMBERP, Next: VBARREDP, Prev: SUBSTRINGP, Up: PREDICATES
numberp
-------
NUMBERP thing
NUMBER? thing
outputs 'TRUE' if the input is a number, 'FALSE' otherwise.
File: ucblogo.info, Node: VBARREDP, Prev: NUMBERP, Up: PREDICATES
vbarredp
--------
VBARREDP char
VBARRED? char
BACKSLASHEDP char (library procedure)
BACKSLASHED? char (library procedure)
outputs 'TRUE' if the input character was originally entered into Logo
within vertical bars (|) to prevent its usual special syntactic meaning,
'FALSE' otherwise. (Outputs 'TRUE' only if the character is a
backslashed space, tab, newline, or one of '()[]+-*/=<>":;\~?|' )
The names 'BACKSLASHEDP' and 'BACKSLASHED?' are included in the Logo
library for backward compatibility with the former names of this
primitive, although it does _not_ output 'TRUE' for characters
originally entered with backslashes.
File: ucblogo.info, Node: QUERIES, Prev: PREDICATES, Up: DATA STRUCTURE PRIMITIVES
2.5 Queries
===========
* Menu:
* COUNT::
* ASCII::
* RAWASCII::
* CHAR::
* MEMBER::
* LOWERCASE::
* UPPERCASE::
* STANDOUT::
* PARSE::
* RUNPARSE::
File: ucblogo.info, Node: COUNT, Next: ASCII, Prev: QUERIES, Up: QUERIES
count
-----
COUNT thing
outputs the number of characters in the input, if the input is a word;
outputs the number of members in the input, if it is a list or an array.
(For an array, this may or may not be the index of the last member,
depending on the array's origin.)
File: ucblogo.info, Node: ASCII, Next: RAWASCII, Prev: COUNT, Up: QUERIES
ascii
-----
ASCII char
outputs the integer (between 0 and 255) that represents the input
character in the ASCII code. Interprets control characters as
representing vbarred punctuation, and returns the character code for the
corresponding punctuation character without vertical bars. (Compare
'RAWASCII'.)
File: ucblogo.info, Node: RAWASCII, Next: CHAR, Prev: ASCII, Up: QUERIES
rawascii
--------
RAWASCII char
outputs the integer (between 0 and 255) that represents the input
character in the ASCII code. Interprets control characters as
representing themselves. To find out the ASCII code of an arbitrary
keystroke, use RAWASCII RC.
File: ucblogo.info, Node: CHAR, Next: MEMBER, Prev: RAWASCII, Up: QUERIES
char
----
CHAR int
outputs the character represented in the ASCII code by the input, which
must be an integer between 0 and 255.
*Note ASCII:: .
File: ucblogo.info, Node: MEMBER, Next: LOWERCASE, Prev: CHAR, Up: QUERIES
member
------
MEMBER thing1 thing2
if THING2 is a word or list and if 'MEMBERP' with these inputs would
output 'TRUE', outputs the portion of THING2 from the first instance of
THING1 to the end. If 'MEMBERP' would output 'FALSE', outputs the empty
word or list according to the type of THING2. It is an error for THING2
to be an array.
*Note MEMBERP:: .
File: ucblogo.info, Node: LOWERCASE, Next: UPPERCASE, Prev: MEMBER, Up: QUERIES
lowercase
---------
LOWERCASE word
outputs a copy of the input word, but with all uppercase letters changed
to the corresponding lowercase letter.
File: ucblogo.info, Node: UPPERCASE, Next: STANDOUT, Prev: LOWERCASE, Up: QUERIES
uppercase
---------
UPPERCASE word
outputs a copy of the input word, but with all lowercase letters changed
to the corresponding uppercase letter.
File: ucblogo.info, Node: STANDOUT, Next: PARSE, Prev: UPPERCASE, Up: QUERIES
standout
--------
STANDOUT thing
outputs a word that, when printed, will appear like the input but
displayed in standout mode (boldface, reverse video, or whatever your
version does for standout). The word contains machine-specific magic
characters at the beginning and end; in between is the printed form (as
if displayed using 'TYPE') of the input. The output is always a word,
even if the input is of some other type, but it may include spaces and
other formatting characters. Note: a word output by 'STANDOUT' while
Logo is running on one machine will probably not have the desired effect
if printed on another type of machine.
In the Macintosh classic version, the way that standout works is
incompatible with the use of characters whose ASCII code is greater than
127. Therefore, you have a choice to make: The instruction
CANINVERSE 0
disables standout, but enables the display of ASCII codes above 127, and
the instruction
CANINVERSE 1
restores the default situation in which standout is enabled and the
extra graphic characters cannot be printed.
File: ucblogo.info, Node: PARSE, Next: RUNPARSE, Prev: STANDOUT, Up: QUERIES
parse
-----
PARSE word
outputs the list that would result if the input word were entered in
response to a 'READLIST' operation. That is, PARSE READWORD has the
same value as 'READLIST' for the same characters read.
*Note READLIST:: , *note READWORD::
File: ucblogo.info, Node: RUNPARSE, Prev: PARSE, Up: QUERIES
runparse
--------
RUNPARSE wordorlist
outputs the list that would result if the input word or list were
entered as an instruction line; characters such as infix operators and
parentheses are separate members of the output. Note that sublists of a
runparsed list are not themselves runparsed.
File: ucblogo.info, Node: COMMUNICATION, Next: ARITHMETIC, Prev: DATA STRUCTURE PRIMITIVES, Up: Top
3 Communication
***************
* Menu:
* TRANSMITTERS::
* RECEIVERS::
* FILE ACCESS::
* TERMINAL ACCESS::
File: ucblogo.info, Node: TRANSMITTERS, Next: RECEIVERS, Prev: COMMUNICATION, Up: COMMUNICATION
3.1 Transmitters
================
* Menu:
* PRINT::
* TYPE::
* SHOW::
Note: If there is a variable named 'PRINTDEPTHLIMIT' with a nonnegative
integer value, then complex list and array structures will be printed
only to the allowed depth. That is, members of members of... of
members will be allowed only so far. The members omitted because they
are just past the depth limit are indicated by an ellipsis for each one,
so a too-deep list of two members will print as [... ...].
If there is a variable named 'PRINTWIDTHLIMIT' with a nonnegative
integer value, then only the first so many members of any array or list
will be printed. A single ellipsis replaces all missing data within the
structure. The width limit also applies to the number of characters
printed in a word, except that a 'PRINTWIDTHLIMIT' between 0 and 9 will
be treated as if it were 10 when applied to words. This limit applies
not only to the top-level printed datum but to any substructures within
it.
*Note PRINTDEPTHLIMIT:: , *note PRINTWIDTHLIMIT::
If there is a variable named 'FULLPRINTP' whose value is 'TRUE', then
words that were created using backslash or vertical bar (to include
characters that would otherwise not be treated as part of a word) are
printed with the backslashes or vertical bars shown, so that the printed
result could be re-read by Logo to produce the same value. If
'FULLPRINTP' is 'TRUE' then the empty word (however it was created)
prints as '||'. (Otherwise it prints as nothing at all.)
*Note FULLPRINTP:: .
File: ucblogo.info, Node: PRINT, Next: TYPE, Prev: TRANSMITTERS, Up: TRANSMITTERS
print
-----
PRINT thing
PR thing
(PRINT thing1 thing2 ...)
(PR thing1 thing2 ...)
command. Prints the input or inputs to the current write stream
(initially the screen). All the inputs are printed on a single line,
separated by spaces, ending with a newline. If an input is a list,
square brackets are not printed around it, but brackets are printed
around sublists. Braces are always printed around arrays.
File: ucblogo.info, Node: TYPE, Next: SHOW, Prev: PRINT, Up: TRANSMITTERS
type
----
TYPE thing
(TYPE thing1 thing2 ...)
command. Prints the input or inputs like 'PRINT', except that no
newline character is printed at the end and multiple inputs are not
separated by spaces. Note: printing to the screen is ordinarily "line
buffered"; that is, the characters you print using 'TYPE' will not
actually appear on the screen until either a newline character is
printed (for example, by 'PRINT' or 'SHOW') or Logo tries to read from
the keyboard (either at the request of your program or after an
instruction prompt). This buffering makes the program much faster than
it would be if each character appeared immediately, and in most cases
the effect is not disconcerting. To accommodate programs that do a lot
of positioned text display using 'TYPE', Logo will force printing
whenever 'SETCURSOR' is invoked. This solves most buffering problems.
Still, on occasion you may find it necessary to force the buffered
characters to be printed explicitly; this can be done using the 'WAIT'
command. WAIT 0 will force printing without actually waiting.
*Note SETCURSOR:: , *note WAIT::
File: ucblogo.info, Node: SHOW, Prev: TYPE, Up: TRANSMITTERS
show
----
SHOW thing
(SHOW thing1 thing2 ...)
command. Prints the input or inputs like 'PRINT', except that if an
input is a list it is printed inside square brackets.
*Note PRINT:: .
File: ucblogo.info, Node: RECEIVERS, Next: FILE ACCESS, Prev: TRANSMITTERS, Up: COMMUNICATION
3.2 Receivers
=============
* Menu:
* READLIST::
* READWORD::
* READRAWLINE::
* READCHAR::
* READCHARS::
* SHELL::
File: ucblogo.info, Node: READLIST, Next: READWORD, Prev: RECEIVERS, Up: RECEIVERS
readlist
--------
READLIST
RL
reads a line from the read stream (initially the keyboard) and outputs
that line as a list. The line is separated into members as though it
were typed in square brackets in an instruction. If the read stream is
a file, and the end of file is reached, 'READLIST' outputs the empty
word (not the empty list). 'READLIST' processes backslash, vertical
bar, and tilde characters in the read stream; the output list will not
contain these characters but they will have had their usual effect.
'READLIST' does not, however, treat semicolon as a comment character.
File: ucblogo.info, Node: READWORD, Next: READRAWLINE, Prev: READLIST, Up: RECEIVERS
readword
--------
READWORD
RW
reads a line from the read stream and outputs that line as a word. The
output is a single word even if the line contains spaces, brackets, etc.
If the read stream is a file, and the end of file is reached, 'READWORD'
outputs the empty list (not the empty word). 'READWORD' processes
backslash, vertical bar, and tilde characters in the read stream. In
the case of a tilde used for line continuation, the output word _does_
include the tilde and the newline characters, so that the user program
can tell exactly what the user entered. Vertical bars in the line are
also preserved in the output. Backslash characters are not preserved in
the output.
File: ucblogo.info, Node: READRAWLINE, Next: READCHAR, Prev: READWORD, Up: RECEIVERS
readrawline
-----------
READRAWLINE
reads a line from the read stream and outputs that line as a word. The
output is a single word even if the line contains spaces, brackets, etc.
If the read stream is a file, and the end of file is reached,
'READRAWLINE' outputs the empty list (not the empty word).
'READRAWLINE' outputs the exact string of characters as they appear in
the line, with no special meaning for backslash, vertical bar, tilde, or
any other formatting characters.
*Note READWORD:: .
File: ucblogo.info, Node: READCHAR, Next: READCHARS, Prev: READRAWLINE, Up: RECEIVERS
readchar
--------
READCHAR
RC
reads a single character from the read stream and outputs that character
as a word. If the read stream is a file, and the end of file is
reached, 'READCHAR' outputs the empty list (not the empty word). If the
read stream is the keyboard, echoing is turned off when 'READCHAR' is
invoked, and remains off until 'READLIST' or 'READWORD' is invoked or a
Logo prompt is printed. Backslash, vertical bar, and tilde characters
have no special meaning in this context.
*Note READLIST:: .
File: ucblogo.info, Node: READCHARS, Next: SHELL, Prev: READCHAR, Up: RECEIVERS
readchars
---------
READCHARS num
RCS num
reads NUM characters from the read stream and outputs those characters
as a word. If the read stream is a file, and the end of file is
reached, 'READCHARS' outputs the empty list (not the empty word). If
the read stream is the keyboard, echoing is turned off when 'READCHARS'
is invoked, and remains off until 'READLIST' or 'READWORD' is invoked or
a Logo prompt is printed. Backslash, vertical bar, and tilde characters
have no special meaning in this context.
*Note READLIST:: , *note READWORD::
File: ucblogo.info, Node: SHELL, Prev: READCHARS, Up: RECEIVERS
shell
-----
SHELL command
(SHELL command wordflag)
Under Unix, outputs the result of running COMMAND as a shell command.
(The command is sent to '/bin/sh', not 'csh' or other alternatives.) If
the command is a literal list in the instruction line, and if you want a
backslash character sent to the shell, you must use '\\' to get the
backslash through Logo's reader intact. The output is a list containing
one member for each line generated by the shell command. Ordinarily
each such line is represented by a list in the output, as though the
line were read using 'READLIST'. If a second input is given, regardless
of the value of the input, each line is represented by a word in the
output as though it were read with 'READWORD'. Example:
to dayofweek
output first first shell [date]
end
This is 'first first' to extract the first word of the first (and only)
line of the shell output.
Under MacOS X, 'SHELL' works as under Unix. 'SHELL' is not available
under Mac Classic.
Under DOS, 'SHELL' is a command, not an operation; it sends its input to
a DOS command processor but does not collect the result of the command.
Under Windows, the wxWidgets version of Logo behaves as under Unix
(except that DOS-style commands are understood; use 'dir' rather than
'ls'). The non-wxWidgets version behaves like the DOS version.
File: ucblogo.info, Node: FILE ACCESS, Next: TERMINAL ACCESS, Prev: RECEIVERS, Up: COMMUNICATION
3.3 File Access
===============
* Menu:
* SETPREFIX::
* PREFIX::
* OPENREAD::
* OPENWRITE::
* OPENAPPEND::
* OPENUPDATE::
* CLOSE::
* ALLOPEN::
* CLOSEALL::
* ERASEFILE::
* DRIBBLE::
* NODRIBBLE::
* SETREAD::
* SETWRITE::
* READER::
* WRITER::
* SETREADPOS::
* SETWRITEPOS::
* READPOS::
* WRITEPOS::
* EOFP::
* FILEP::
File: ucblogo.info, Node: SETPREFIX, Next: PREFIX, Prev: FILE ACCESS, Up: FILE ACCESS
setprefix
---------
SETPREFIX string
command. Sets a prefix that will be used as the implicit beginning of
filenames in 'OPENREAD', 'OPENWRITE', 'OPENAPPEND', 'OPENUPDATE',
'LOAD', and 'SAVE' commands. Logo will put the appropriate separator
character (slash for Unix, backslash for DOS/Windows, colon for MacOS
Classic) between the prefix and the filename entered by the user. The
input to 'SETPREFIX' must be a word, unless it is the empty list, to
indicate that there should be no prefix.
*Note OPENREAD:: , *Note OPENWRITE:: , *Note OPENAPPEND:: , *Note
OPENUPDATE:: , *Note LOAD:: , *Note SAVE:: .
File: ucblogo.info, Node: PREFIX, Next: OPENREAD, Prev: SETPREFIX, Up: FILE ACCESS
prefix
------
PREFIX
outputs the current file prefix, or [] if there is no prefix.
*Note SETPREFIX:: .
File: ucblogo.info, Node: OPENREAD, Next: OPENWRITE, Prev: PREFIX, Up: FILE ACCESS
openread
--------
OPENREAD filename
command. Opens the named file for reading. The read position is
initially at the beginning of the file.
File: ucblogo.info, Node: OPENWRITE, Next: OPENAPPEND, Prev: OPENREAD, Up: FILE ACCESS
openwrite
---------
OPENWRITE filename
command. Opens the named file for writing. If the file already
existed, the old version is deleted and a new, empty file created.
'OPENWRITE', but not the other 'OPEN' variants, will accept as input a
two-element list, in which the first element must be a variable name,
and the second must be a positive integer. A character buffer of the
specified size will be created. When a 'SETWRITE' is done with this
same list (in the sense of .EQ, not a copy, so you must do something
like
? make "buf [foo 100]
? openwrite :buf
? setwrite :buf
[...]
? close :buf
and not just
? openwrite [foo 100]
? setwrite [foo 100]
and so on), the printed characters are stored in the buffer; when a
'CLOSE' is done with the same list as input, the characters from the
buffer (treated as one long word, even if spaces and newlines are
included) become the value of the specified variable.
File: ucblogo.info, Node: OPENAPPEND, Next: OPENUPDATE, Prev: OPENWRITE, Up: FILE ACCESS
openappend
----------
OPENAPPEND filename
command. Opens the named file for writing. If the file already exists,
the write position is initially set to the end of the old file, so that
newly written data will be appended to it.
File: ucblogo.info, Node: OPENUPDATE, Next: CLOSE, Prev: OPENAPPEND, Up: FILE ACCESS
openupdate
----------
OPENUPDATE filename
command. Opens the named file for reading and writing. The read and
write position is initially set to the end of the old file, if any.
Note: each open file has only one position, for both reading and
writing. If a file opened for update is both 'READER' and 'WRITER' at
the same time, then 'SETREADPOS' will also affect 'WRITEPOS' and vice
versa. Also, if you alternate reading and writing the same file, you
must 'SETREADPOS' between a write and a read, and 'SETWRITEPOS' between
a read and a write.
*Note READER:: , *note WRITER:: , *note SETREADPOS:: , *note
SETWRITEPOS::
File: ucblogo.info, Node: CLOSE, Next: ALLOPEN, Prev: OPENUPDATE, Up: FILE ACCESS
close
-----
CLOSE filename
command. Closes the named file. If the file was currently the reader
or writer, then the reader or writer is changed to the keyboard or
screen, as if SETREAD [] or SETWRITE [] had been done.
File: ucblogo.info, Node: ALLOPEN, Next: CLOSEALL, Prev: CLOSE, Up: FILE ACCESS
allopen
-------
ALLOPEN
outputs a list whose members are the names of all files currently open.
This list does not include the dribble file, if any.
File: ucblogo.info, Node: CLOSEALL, Next: ERASEFILE, Prev: ALLOPEN, Up: FILE ACCESS
closeall
--------
CLOSEALL (library procedure)
command. Closes all open files. Abbreviates FOREACH ALLOPEN [CLOSE ?]
*Note FOREACH:: , *note CLOSE::
File: ucblogo.info, Node: ERASEFILE, Next: DRIBBLE, Prev: CLOSEALL, Up: FILE ACCESS
erasefile
---------
ERASEFILE filename
ERF filename
command. Erases (deletes, removes) the named file, which should not
currently be open.
File: ucblogo.info, Node: DRIBBLE, Next: NODRIBBLE, Prev: ERASEFILE, Up: FILE ACCESS
dribble
-------
DRIBBLE filename
command. Creates a new file whose name is the input, like 'OPENWRITE',
and begins recording in that file everything that is read from the
keyboard or written to the terminal. That is, this writing is in
addition to the writing to 'WRITER'. The intent is to create a
transcript of a Logo session, including things like prompt characters
and interactions.
*Note OPENWRITE:: , *note WRITER::
File: ucblogo.info, Node: NODRIBBLE, Next: SETREAD, Prev: DRIBBLE, Up: FILE ACCESS
nodribble
---------
NODRIBBLE
command. Stops copying information into the dribble file, and closes
the file.
File: ucblogo.info, Node: SETREAD, Next: SETWRITE, Prev: NODRIBBLE, Up: FILE ACCESS
setread
-------
SETREAD filename
command. Makes the named file the read stream, used for 'READLIST',
etc. The file must already be open with 'OPENREAD' or 'OPENUPDATE'. If
the input is the empty list, then the read stream becomes the keyboard,
as usual. Changing the read stream does not close the file that was
previously the read stream, so it is possible to alternate between
files.
*Note READLIST:: , *note OPENREAD:: , *note OPENUPDATE::
File: ucblogo.info, Node: SETWRITE, Next: READER, Prev: SETREAD, Up: FILE ACCESS
setwrite
--------
SETWRITE filename
command. Makes the named file the write stream, used for 'PRINT', etc.
The file must already be open with 'OPENWRITE', 'OPENAPPEND', or
'OPENUPDATE'. If the input is the empty list, then the write stream
becomes the screen, as usual. Changing the write stream does not close
the file that was previously the write stream, so it is possible to
alternate between files.
If the input is a list, then its first element must be a variable name,
and its second and last element must be a positive integer; a buffer of
that many characters will be allocated, and will become the writestream.
If the same list (same in the '.EQ' sense, not a copy) has been used as
input to 'OPENWRITE', then the already-allocated buffer will be used,
and the writer can be changed to and from this buffer, with all the
characters accumulated as in a file. When the same list is used as
input to 'CLOSE', the contents of the buffer (as an unparsed word, which
may contain newline characters) will become the value of the named
variable. For compatibility with earlier versions, if the list has not
been opened when the 'SETWRITE' is done, it will be opened implicitly,
but the first 'SETWRITE' after this one will implicitly close it,
setting the variable and freeing the allocated buffer.
*Note PRINT:: , *note OPENWRITE:: ; *note OPENAPPEND:: ; *note
OPENUPDATE::
File: ucblogo.info, Node: READER, Next: WRITER, Prev: SETWRITE, Up: FILE ACCESS
reader
------
READER
outputs the name of the current read stream file, or the empty list if
the read stream is the terminal.
File: ucblogo.info, Node: WRITER, Next: SETREADPOS, Prev: READER, Up: FILE ACCESS
writer
------
WRITER
outputs the name of the current write stream file, or the empty list if
the write stream is the screen.
File: ucblogo.info, Node: SETREADPOS, Next: SETWRITEPOS, Prev: WRITER, Up: FILE ACCESS
setreadpos
----------
SETREADPOS charpos
command. Sets the file pointer of the read stream file so that the next
'READLIST', etc., will begin reading at the CHARPOSth character in the
file, counting from 0. (That is, SETREADPOS 0 will start reading from
the beginning of the file.) Meaningless if the read stream is the
keyboard.
*Note READLIST:: .
File: ucblogo.info, Node: SETWRITEPOS, Next: READPOS, Prev: SETREADPOS, Up: FILE ACCESS
setwritepos
-----------
SETWRITEPOS charpos
command. Sets the file pointer of the write stream file so that the
next 'PRINT', etc., will begin writing at the CHARPOSth character in the
file, counting from 0. (That is, SETWRITEPOS 0 will start writing from
the beginning of the file.) Meaningless if the write stream is the
screen.
*Note PRINT:: .
File: ucblogo.info, Node: READPOS, Next: WRITEPOS, Prev: SETWRITEPOS, Up: FILE ACCESS
readpos
-------
READPOS
outputs the file position of the current read stream file.
File: ucblogo.info, Node: WRITEPOS, Next: EOFP, Prev: READPOS, Up: FILE ACCESS
writepos
--------
WRITEPOS
outputs the file position of the current write stream file.
File: ucblogo.info, Node: EOFP, Next: FILEP, Prev: WRITEPOS, Up: FILE ACCESS
eofp
----
EOFP
EOF?
predicate, outputs 'TRUE' if there are no more characters to be read in
the read stream file, 'FALSE' otherwise.
File: ucblogo.info, Node: FILEP, Prev: EOFP, Up: FILE ACCESS
filep
-----
FILEP filename
FILE? filename (library procedure)
predicate, outputs 'TRUE' if a file of the specified name exists and can
be read, 'FALSE' otherwise.
File: ucblogo.info, Node: TERMINAL ACCESS, Prev: FILE ACCESS, Up: COMMUNICATION
3.4 Terminal Access
===================
* Menu:
* KEYP::
* CLEARTEXT::
* SETCURSOR::
* CURSOR::
* SETMARGINS::
* SETTEXTCOLOR::
* INCREASEFONT::
* SETTEXTSIZE::
* TEXTSIZE::
* SETFONT::
* FONT::
File: ucblogo.info, Node: KEYP, Next: CLEARTEXT, Prev: TERMINAL ACCESS, Up: TERMINAL ACCESS
keyp
----
KEYP
KEY?
predicate, outputs 'TRUE' if there are characters waiting to be read
from the read stream. If the read stream is a file, this is equivalent
to NOT EOFP. If the read stream is the terminal, then echoing is turned
off and the terminal is set to 'cbreak' (character at a time instead of
line at a time) mode. It remains in this mode until some line-mode
reading is requested (e.g., 'READLIST'). The Unix operating system
forgets about any pending characters when it switches modes, so the
first 'KEYP' invocation will always output 'FALSE'.
*Note EOFP:: , *note READLIST::
File: ucblogo.info, Node: CLEARTEXT, Next: SETCURSOR, Prev: KEYP, Up: TERMINAL ACCESS
cleartext
---------
CLEARTEXT
CT
command. Clears the text window.
File: ucblogo.info, Node: SETCURSOR, Next: CURSOR, Prev: CLEARTEXT, Up: TERMINAL ACCESS
setcursor
---------
SETCURSOR vector
command. The input is a list of two numbers, the x and y coordinates of
a text window position (origin in the upper left corner, positive
direction is southeast). The text cursor is moved to the requested
position. This command also forces the immediate printing of any
buffered characters.
File: ucblogo.info, Node: CURSOR, Next: SETMARGINS, Prev: SETCURSOR, Up: TERMINAL ACCESS
cursor
------
CURSOR
outputs a list containing the current x and y coordinates of the text
cursor. Logo may get confused about the current cursor position if,
e.g., you type in a long line that wraps around or your program prints
escape codes that affect the screen strangely.
File: ucblogo.info, Node: SETMARGINS, Next: SETTEXTCOLOR, Prev: CURSOR, Up: TERMINAL ACCESS
setmargins
----------
SETMARGINS vector
command. The input must be a list of two numbers, as for 'SETCURSOR'.
The effect is to clear the screen and then arrange for all further
printing to be shifted down and to the right according to the indicated
margins. Specifically, every time a newline character is printed
(explicitly or implicitly) Logo will type X_MARGIN spaces, and on every
invocation of 'SETCURSOR' the margins will be added to the input x and y
coordinates. ('CURSOR' will report the cursor position relative to the
margins, so that this shift will be invisible to Logo programs.) The
purpose of this command is to accommodate the display of terminal
screens in lecture halls with inadequate TV monitors that miss the top
and left edges of the screen.
*Note SETCURSOR:: .
File: ucblogo.info, Node: SETTEXTCOLOR, Next: INCREASEFONT, Prev: SETMARGINS, Up: TERMINAL ACCESS
settextcolor
------------
SETTEXTCOLOR foreground background
SETTC foreground background
command (wxWidgets only). The inputs are color numbers, or RGB color
lists, as for turtle graphics. The foreground and background colors for
the textscreen/splitscreen text window are changed to the given values.
The change affects text already printed as well as future text printing;
there is only one text color for the entire window.
Command (non-wxWidgets Windows and DOS extended only). The inputs are
color numbers, as for turtle graphics. Future printing to the text
window will use the specified colors for foreground (the characters
printed) and background (the space under those characters). Using
'STANDOUT' will revert to the default text window colors. In the DOS
extended ('ucblogo.exe') version, colors in textscreen mode are limited
to numbers 0-7, and the coloring applies only to text printed by the
program, not to the echoing of text typed by the user. Neither
limitation applies to the text portion of splitscreen mode, which is
actually drawn as graphics internally.
*Note STANDOUT:: .
File: ucblogo.info, Node: INCREASEFONT, Next: SETTEXTSIZE, Prev: SETTEXTCOLOR, Up: TERMINAL ACCESS
increasefont
------------
INCREASEFONT
DECREASEFONT
command (wxWidgets only). Increase or decrease the size of the font
used in the text and edit windows to the next larger or smaller
available size.
File: ucblogo.info, Node: SETTEXTSIZE, Next: TEXTSIZE, Prev: INCREASEFONT, Up: TERMINAL ACCESS
settextsize
-----------
SETTEXTSIZE height
command (wxWidgets only). Set the "point size" of the font used in the
text and edit windows to the given integer input. The desired size may
not be available, in which case the nearest available size will be used.
Note: There is only a slight correlation between these integers and
pixel sizes. Our rough estimate is that the number of pixels of height
is about 1.5 times the point size, but it varies for different fonts.
See 'SETLABELHEIGHT' for a different approach used for the graphics
window.
File: ucblogo.info, Node: TEXTSIZE, Next: SETFONT, Prev: SETTEXTSIZE, Up: TERMINAL ACCESS
textsize
--------
TEXTSIZE
(wxWidgets only) outputs the "point size" of the font used in the text
and edit windows. See 'SETTEXTSIZE' for a discussion of font sizing.
See 'LABELSIZE' for a different approach used for the graphics window.
File: ucblogo.info, Node: SETFONT, Next: FONT, Prev: TEXTSIZE, Up: TERMINAL ACCESS
setfont
-------
SETFONT fontname
command (wxWidgets only). Set the font family used in all windows to
the one named by the input. Try 'Courier' or 'Monospace' as likely
possibilities. Not all computers have the same fonts installed. It's a
good idea to stick with monospace fonts (ones in which all characters
have the same width).
File: ucblogo.info, Node: FONT, Prev: SETFONT, Up: TERMINAL ACCESS
font
----
FONT
(wxWidgets only) outputs the name of the font family used in all
windows.
File: ucblogo.info, Node: ARITHMETIC, Next: LOGICAL OPERATIONS, Prev: COMMUNICATION, Up: Top
4 Arithmetic
************
* Menu:
* NUMERIC OPERATIONS::
* NUMERIC PREDICATES::
* RANDOM NUMBERS::
* PRINT FORMATTING::
* BITWISE OPERATIONS::
File: ucblogo.info, Node: NUMERIC OPERATIONS, Next: NUMERIC PREDICATES, Prev: ARITHMETIC, Up: ARITHMETIC
4.1 Numeric Operations
======================
* Menu:
* SUM::
* DIFFERENCE::
* MINUS::
* PRODUCT::
* QUOTIENT::
* REMAINDER::
* MODULO::
* INT::
* ROUND::
* SQRT::
* POWER::
* EXP::
* LOG10::
* LN::
* SIN::
* RADSIN::
* COS::
* RADCOS::
* ARCTAN::
* RADARCTAN::
* ISEQ::
* RSEQ::
File: ucblogo.info, Node: SUM, Next: DIFFERENCE, Prev: NUMERIC OPERATIONS, Up: NUMERIC OPERATIONS
sum
---
SUM num1 num2
(SUM num1 num2 num3 ...)
num1 + num2
outputs the sum of its inputs.
File: ucblogo.info, Node: DIFFERENCE, Next: MINUS, Prev: SUM, Up: NUMERIC OPERATIONS
difference
----------
DIFFERENCE num1 num2
num1 - num2
outputs the difference of its inputs. Minus sign means infix difference
in ambiguous contexts (when preceded by a complete expression), unless
it is preceded by a space and followed by a nonspace. (See also
'MINUS'.)
File: ucblogo.info, Node: MINUS, Next: PRODUCT, Prev: DIFFERENCE, Up: NUMERIC OPERATIONS
minus
-----
MINUS num
- num
outputs the negative of its input. Minus sign means unary minus if the
previous token is an infix operator or open parenthesis, or it is
preceded by a space and followed by a nonspace. There is a difference
in binding strength between the two forms:
MINUS 3 + 4 means -(3+4)
- 3 + 4 means (-3)+4
File: ucblogo.info, Node: PRODUCT, Next: QUOTIENT, Prev: MINUS, Up: NUMERIC OPERATIONS
product
-------
PRODUCT num1 num2
(PRODUCT num1 num2 num3 ...)
num1 * num2
outputs the product of its inputs.
File: ucblogo.info, Node: QUOTIENT, Next: REMAINDER, Prev: PRODUCT, Up: NUMERIC OPERATIONS
quotient
--------
QUOTIENT num1 num2
(QUOTIENT num)
num1 / num2
outputs the quotient of its inputs. The quotient of two integers is an
integer if and only if the dividend is a multiple of the divisor. (In
other words, QUOTIENT 5 2 is 2.5, not 2, but QUOTIENT 4 2 is 2, not 2.0
-- it does the right thing.) With a single input, 'QUOTIENT' outputs
the reciprocal of the input.
File: ucblogo.info, Node: REMAINDER, Next: MODULO, Prev: QUOTIENT, Up: NUMERIC OPERATIONS
remainder
---------
REMAINDER num1 num2
outputs the remainder on dividing NUM1 by NUM2; both must be integers
and the result is an integer with the same sign as NUM1.
File: ucblogo.info, Node: MODULO, Next: INT, Prev: REMAINDER, Up: NUMERIC OPERATIONS
modulo
------
MODULO num1 num2
outputs the remainder on dividing NUM1 by NUM2; both must be integers
and the result is an integer with the same sign as NUM2.
File: ucblogo.info, Node: INT, Next: ROUND, Prev: MODULO, Up: NUMERIC OPERATIONS
int
---
INT num
outputs its input with fractional part removed, i.e., an integer with
the same sign as the input, whose absolute value is the largest integer
less than or equal to the absolute value of the input.
File: ucblogo.info, Node: ROUND, Next: SQRT, Prev: INT, Up: NUMERIC OPERATIONS
round
-----
ROUND num
outputs the nearest integer to the input.
File: ucblogo.info, Node: SQRT, Next: POWER, Prev: ROUND, Up: NUMERIC OPERATIONS
sqrt
----
SQRT num
outputs the square root of the input, which must be nonnegative.
File: ucblogo.info, Node: POWER, Next: EXP, Prev: SQRT, Up: NUMERIC OPERATIONS
power
-----
POWER num1 num2
outputs NUM1 to the NUM2 power. If NUM1 is negative, then NUM2 must be
an integer.
File: ucblogo.info, Node: EXP, Next: LOG10, Prev: POWER, Up: NUMERIC OPERATIONS
exp
---
EXP num
outputs e (2.718281828+) to the input power.
File: ucblogo.info, Node: LOG10, Next: LN, Prev: EXP, Up: NUMERIC OPERATIONS
log10
-----
LOG10 num
outputs the common logarithm of the input.
File: ucblogo.info, Node: LN, Next: SIN, Prev: LOG10, Up: NUMERIC OPERATIONS
ln
--
LN num
outputs the natural logarithm of the input.
File: ucblogo.info, Node: SIN, Next: RADSIN, Prev: LN, Up: NUMERIC OPERATIONS
sin
---
SIN degrees
outputs the sine of its input, which is taken in degrees.
File: ucblogo.info, Node: RADSIN, Next: COS, Prev: SIN, Up: NUMERIC OPERATIONS
radsin
------
RADSIN radians
outputs the sine of its input, which is taken in radians.
File: ucblogo.info, Node: COS, Next: RADCOS, Prev: RADSIN, Up: NUMERIC OPERATIONS
cos
---
COS degrees
outputs the cosine of its input, which is taken in degrees.
File: ucblogo.info, Node: RADCOS, Next: ARCTAN, Prev: COS, Up: NUMERIC OPERATIONS
radcos
------
RADCOS radians
outputs the cosine of its input, which is taken in radians.
File: ucblogo.info, Node: ARCTAN, Next: RADARCTAN, Prev: RADCOS, Up: NUMERIC OPERATIONS
arctan
------
ARCTAN num
(ARCTAN x y)
outputs the arctangent, in degrees, of its input. With two inputs,
outputs the arctangent of y/x, if x is nonzero, or 90 or -90 depending
on the sign of y, if x is zero.
File: ucblogo.info, Node: RADARCTAN, Next: ISEQ, Prev: ARCTAN, Up: NUMERIC OPERATIONS
radarctan
---------
RADARCTAN num
(RADARCTAN x y)
outputs the arctangent, in radians, of its input. With two inputs,
outputs the arctangent of y/x, if x is nonzero, or pi/2 or -pi/2
depending on the sign of y, if x is zero.
The expression 2*(RADARCTAN 0 1) can be used to get the value of pi.
File: ucblogo.info, Node: ISEQ, Next: RSEQ, Prev: RADARCTAN, Up: NUMERIC OPERATIONS
iseq
----
ISEQ from to (library procedure)
outputs a list of the integers from FROM to TO, inclusive.
? show iseq 3 7
[3 4 5 6 7]
? show iseq 7 3
[7 6 5 4 3]
File: ucblogo.info, Node: RSEQ, Prev: ISEQ, Up: NUMERIC OPERATIONS
rseq
----
RSEQ from to count (library procedure)
outputs a list of COUNT equally spaced rational numbers between FROM and
TO, inclusive.
? show rseq 3 5 9
[3 3.25 3.5 3.75 4 4.25 4.5 4.75 5]
? show rseq 3 5 5
[3 3.5 4 4.5 5]
File: ucblogo.info, Node: NUMERIC PREDICATES, Next: RANDOM NUMBERS, Prev: NUMERIC OPERATIONS, Up: ARITHMETIC
4.2 Numeric Predicates
======================
* Menu:
* LESSP::
* GREATERP::
* LESSEQUALP::
* GREATEREQUALP::
File: ucblogo.info, Node: LESSP, Next: GREATERP, Prev: NUMERIC PREDICATES, Up: NUMERIC PREDICATES
lessp
-----
LESSP num1 num2
LESS? num1 num2
num1 < num2
outputs 'TRUE' if its first input is strictly less than its second.
File: ucblogo.info, Node: GREATERP, Next: LESSEQUALP, Prev: LESSP, Up: NUMERIC PREDICATES
greaterp
--------
GREATERP num1 num2
GREATER? num1 num2
num1 > num2
outputs 'TRUE' if its first input is strictly greater than its second.
File: ucblogo.info, Node: LESSEQUALP, Next: GREATEREQUALP, Prev: GREATERP, Up: NUMERIC PREDICATES
lessequalp
----------
LESSEQUALP num1 num2
LESSEQUAL? num1 num2
num1 <= num2
outputs 'TRUE' if its first input is less than or equal to its second.
File: ucblogo.info, Node: GREATEREQUALP, Prev: LESSEQUALP, Up: NUMERIC PREDICATES
greaterequalp
-------------
GREATEREQUALP num1 num2
GREATEREQUAL? num1 num2
num1 >= num2
outputs 'TRUE' if its first input is greater than or equal to its
second.
File: ucblogo.info, Node: RANDOM NUMBERS, Next: PRINT FORMATTING, Prev: NUMERIC PREDICATES, Up: ARITHMETIC
4.3 Random Numbers
==================
* Menu:
* RANDOM::
* RERANDOM::
File: ucblogo.info, Node: RANDOM, Next: RERANDOM, Prev: RANDOM NUMBERS, Up: RANDOM NUMBERS
random
------
RANDOM num
(RANDOM start end)
with one input, outputs a random nonnegative integer less than its
input, which must be a positive integer.
With two inputs, 'RANDOM' outputs a random integer greater than or equal
to the first input, and less than or equal to the second input. Both
inputs must be integers, and the first must be less than the second.
(RANDOM 0 9) is equivalent to RANDOM 10; (RANDOM 3 8) is equivalent to
(RANDOM 6)+3.
File: ucblogo.info, Node: RERANDOM, Prev: RANDOM, Up: RANDOM NUMBERS
rerandom
--------
RERANDOM
(RERANDOM seed)
command. Makes the results of 'RANDOM' reproducible. Ordinarily the
sequence of random numbers is different each time Logo is used. If you
need the same sequence of pseudo-random numbers repeatedly, e.g. to
debug a program, say 'RERANDOM' before the first invocation of 'RANDOM'.
If you need more than one repeatable sequence, you can give 'RERANDOM'
an integer input; each possible input selects a unique sequence of
numbers.
File: ucblogo.info, Node: PRINT FORMATTING, Next: BITWISE OPERATIONS, Prev: RANDOM NUMBERS, Up: ARITHMETIC
4.4 Print Formatting
====================
* Menu:
* FORM::
File: ucblogo.info, Node: FORM, Prev: PRINT FORMATTING, Up: PRINT FORMATTING
form
----
FORM num width precision
outputs a word containing a printable representation of NUM, possibly
preceded by spaces (and therefore not a number for purposes of
performing arithmetic operations), with at least WIDTH characters,
including exactly PRECISION digits after the decimal point. (If
PRECISION is 0 then there will be no decimal point in the output.)
As a debugging feature, (FORM num -1 format) will print the floating
point NUM according to the C printf FORMAT, to allow
to hex :num
op form :num -1 "|%08X %08X|
end
to allow finding out the exact result of floating point operations. The
precise format needed may be machine-dependent.
File: ucblogo.info, Node: BITWISE OPERATIONS, Prev: PRINT FORMATTING, Up: ARITHMETIC
4.5 Bitwise Operations
======================
* Menu:
* BITAND::
* BITOR::
* BITXOR::
* BITNOT::
* ASHIFT::
* LSHIFT::
File: ucblogo.info, Node: BITAND, Next: BITOR, Prev: BITWISE OPERATIONS, Up: BITWISE OPERATIONS
bitand
------
BITAND num1 num2
(BITAND num1 num2 num3 ...)
outputs the bitwise AND of its inputs, which must be integers.
*Note AND:: .
File: ucblogo.info, Node: BITOR, Next: BITXOR, Prev: BITAND, Up: BITWISE OPERATIONS
bitor
-----
BITOR num1 num2
(BITOR num1 num2 num3 ...)
outputs the bitwise OR of its inputs, which must be integers.
*Note OR:: .
File: ucblogo.info, Node: BITXOR, Next: BITNOT, Prev: BITOR, Up: BITWISE OPERATIONS
bitxor
------
BITXOR num1 num2
(BITXOR num1 num2 num3 ...)
outputs the bitwise EXCLUSIVE OR of its inputs, which must be integers.
*Note OR:: .
File: ucblogo.info, Node: BITNOT, Next: ASHIFT, Prev: BITXOR, Up: BITWISE OPERATIONS
bitnot
------
BITNOT num
outputs the bitwise NOT of its input, which must be an integer.
*Note NOT:: .
File: ucblogo.info, Node: ASHIFT, Next: LSHIFT, Prev: BITNOT, Up: BITWISE OPERATIONS
ashift
------
ASHIFT num1 num2
outputs NUM1 arithmetic-shifted to the left by NUM2 bits. If NUM2 is
negative, the shift is to the right with sign extension. The inputs
must be integers.
File: ucblogo.info, Node: LSHIFT, Prev: ASHIFT, Up: BITWISE OPERATIONS
lshift
------
LSHIFT num1 num2
outputs NUM1 logical-shifted to the left by NUM2 bits. If NUM2 is
negative, the shift is to the right with zero fill. The inputs must be
integers.
File: ucblogo.info, Node: LOGICAL OPERATIONS, Next: GRAPHICS, Prev: ARITHMETIC, Up: Top
5 Logical Operations
********************
* Menu:
* AND::
* OR::
* NOT::
File: ucblogo.info, Node: AND, Next: OR, Prev: LOGICAL OPERATIONS, Up: LOGICAL OPERATIONS
and
===
AND tf1 tf2
(AND tf1 tf2 tf3 ...)
outputs 'TRUE' if all inputs are 'TRUE', otherwise 'FALSE'. All inputs
must be 'TRUE' or 'FALSE'. (Comparison is case-insensitive regardless
of the value of 'CASEIGNOREDP'. That is, 'true' or 'True' or 'TRUE' are
all the same.) An input can be a list, in which case it is taken as an
expression to run; that expression must produce a 'TRUE' or 'FALSE'
value. List expressions are evaluated from left to right; as soon as a
'FALSE' value is found, the remaining inputs are not examined. Example:
MAKE "RESULT AND [NOT (:X = 0)] [(1 / :X) > .5]
to avoid the division by zero if the first part is false.
*Note CASEIGNOREDP:: .
* Menu:
* OR::
* NOT::
File: ucblogo.info, Node: OR, Next: NOT, Prev: AND, Up: LOGICAL OPERATIONS
or
--
OR tf1 tf2
(OR tf1 tf2 tf3 ...)
outputs 'TRUE' if any input is 'TRUE', otherwise 'FALSE'. All inputs
must be 'TRUE' or 'FALSE'. (Comparison is case-insensitive regardless
of the value of 'CASEIGNOREDP'. That is, 'true' or 'True' or 'TRUE' are
all the same.) An input can be a list, in which case it is taken as an
expression to run; that expression must produce a 'TRUE' or 'FALSE'
value. List expressions are evaluated from left to right; as soon as a
'TRUE' value is found, the remaining inputs are not examined. Example:
IF OR :X=0 [some.long.computation] [...]
to avoid the long computation if the first condition is met.
*Note CASEIGNOREDP:: .
File: ucblogo.info, Node: NOT, Prev: OR, Up: LOGICAL OPERATIONS
not
---
NOT tf
outputs 'TRUE' if the input is 'FALSE', and vice versa. The input can
be a list, in which case it is taken as an expression to run; that
expression must produce a 'TRUE' or 'FALSE' value.
File: ucblogo.info, Node: GRAPHICS, Next: WORKSPACE MANAGEMENT, Prev: LOGICAL OPERATIONS, Up: Top
6 Graphics
**********
Berkeley Logo provides traditional Logo turtle graphics with one turtle.
Multiple turtles, dynamic turtles, and collision detection are not
supported. This is the most hardware-dependent part of Logo; some
features may exist on some machines but not others. Nevertheless, the
goal has been to make Logo programs as portable as possible, rather than
to take fullest advantage of the capabilities of each machine. In
particular, Logo attempts to scale the screen so that turtle coordinates
[-100 -100] and [100 100] fit on the graphics window, and so that the
aspect ratio is 1:1.
The center of the graphics window (which may or may not be the entire
screen, depending on the machine used) is turtle location [0 0].
Positive X is to the right; positive Y is up. Headings (angles) are
measured in degrees clockwise from the positive Y axis. (This differs
from the common mathematical convention of measuring angles
counterclockwise from the positive X axis.) The turtle is represented
as an isoceles triangle; the actual turtle position is at the midpoint
of the base (the short side). However, the turtle is drawn one step
behind its actual position, so that the display of the base of the
turtle's triangle does not obscure a line drawn perpendicular to it (as
would happen after drawing a square).
Colors are, of course, hardware-dependent. However, Logo provides
partial hardware independence by interpreting color numbers 0 through 7
uniformly on all computers:
0 black 1 blue 2 green 3 cyan
4 red 5 magenta 6 yellow 7 white
Where possible, Logo provides additional user-settable colors; how many
are available depends on the hardware and operating system environment.
If at least 16 colors are available, Logo tries to provide uniform
initial settings for the colors 8-15:
8 brown 9 tan 10 forest 11 aqua
12 salmon 13 purple 14 orange 15 grey
Logo begins with a black background and white pen.
* Menu:
* TURTLE MOTION::
* TURTLE MOTION QUERIES::
* TURTLE AND WINDOW CONTROL::
* TURTLE AND WINDOW QUERIES::
* PEN AND BACKGROUND CONTROL::
* PEN QUERIES::
* SAVING AND LOADING PICTURES::
* MOUSE QUERIES::
File: ucblogo.info, Node: TURTLE MOTION, Next: TURTLE MOTION QUERIES, Prev: GRAPHICS, Up: GRAPHICS
6.1 Turtle Motion
=================
* Menu:
* FORWARD::
* BACK::
* LEFT::
* RIGHT::
* SETPOS::
* SETXY::
* SETX::
* SETY::
* SETHEADING::
* HOME::
* ARC::
File: ucblogo.info, Node: FORWARD, Next: BACK, Prev: TURTLE MOTION, Up: TURTLE MOTION
forward
-------
FORWARD dist
FD dist
moves the turtle forward, in the direction that it's facing, by the
specified distance (measured in turtle steps).
File: ucblogo.info, Node: BACK, Next: LEFT, Prev: FORWARD, Up: TURTLE MOTION
back
----
BACK dist
BK dist
moves the turtle backward, i.e., exactly opposite to the direction that
it's facing, by the specified distance. (The heading of the turtle does
not change.)
File: ucblogo.info, Node: LEFT, Next: RIGHT, Prev: BACK, Up: TURTLE MOTION
left
----
LEFT degrees
LT degrees
turns the turtle counterclockwise by the specified angle, measured in
degrees (1/360 of a circle).
File: ucblogo.info, Node: RIGHT, Next: SETPOS, Prev: LEFT, Up: TURTLE MOTION
right
-----
RIGHT degrees
RT degrees
turns the turtle clockwise by the specified angle, measured in degrees
(1/360 of a circle).
File: ucblogo.info, Node: SETPOS, Next: SETXY, Prev: RIGHT, Up: TURTLE MOTION
setpos
------
SETPOS pos
moves the turtle to an absolute position in the graphics window. The
input is a list of two numbers, the X and Y coordinates.
File: ucblogo.info, Node: SETXY, Next: SETX, Prev: SETPOS, Up: TURTLE MOTION
setxy
-----
SETXY xcor ycor
moves the turtle to an absolute position in the graphics window. The
two inputs are numbers, the X and Y coordinates.
File: ucblogo.info, Node: SETX, Next: SETY, Prev: SETXY, Up: TURTLE MOTION
setx
----
SETX xcor
moves the turtle horizontally from its old position to a new absolute
horizontal coordinate. The input is the new X coordinate.
File: ucblogo.info, Node: SETY, Next: SETHEADING, Prev: SETX, Up: TURTLE MOTION
sety
----
SETY ycor
moves the turtle vertically from its old position to a new absolute
vertical coordinate. The input is the new Y coordinate.
File: ucblogo.info, Node: SETHEADING, Next: HOME, Prev: SETY, Up: TURTLE MOTION
setheading
----------
SETHEADING degrees
SETH degrees
turns the turtle to a new absolute heading. The input is a number, the
heading in degrees clockwise from the positive Y axis.
File: ucblogo.info, Node: HOME, Next: ARC, Prev: SETHEADING, Up: TURTLE MOTION
home
----
HOME
moves the turtle to the center of the screen. Equivalent to
SETPOS [0 0] SETHEADING 0.
*Note SETPOS:: , *Note SETHEADING:: .
File: ucblogo.info, Node: ARC, Prev: HOME, Up: TURTLE MOTION
arc
---
ARC angle radius
draws an arc of a circle, with the turtle at the center, with the
specified radius, starting at the turtle's heading and extending
clockwise through the specified angle. The turtle does not move.
File: ucblogo.info, Node: TURTLE MOTION QUERIES, Next: TURTLE AND WINDOW CONTROL, Prev: TURTLE MOTION, Up: GRAPHICS
6.2 Turtle Motion Queries
=========================
* Menu:
* POS::
* XCOR::
* YCOR::
* HEADING::
* TOWARDS::
* SCRUNCH::
File: ucblogo.info, Node: POS, Next: XCOR, Prev: TURTLE MOTION QUERIES, Up: TURTLE MOTION QUERIES
pos
---
POS
outputs the turtle's current position, as a list of two numbers, the X
and Y coordinates.
File: ucblogo.info, Node: XCOR, Next: YCOR, Prev: POS, Up: TURTLE MOTION QUERIES
xcor
----
XCOR (library procedure)
outputs a number, the turtle's X coordinate.
File: ucblogo.info, Node: YCOR, Next: HEADING, Prev: XCOR, Up: TURTLE MOTION QUERIES
ycor
----
YCOR (library procedure)
outputs a number, the turtle's Y coordinate.
File: ucblogo.info, Node: HEADING, Next: TOWARDS, Prev: YCOR, Up: TURTLE MOTION QUERIES
heading
-------
HEADING
outputs a number, the turtle's heading in degrees.
File: ucblogo.info, Node: TOWARDS, Next: SCRUNCH, Prev: HEADING, Up: TURTLE MOTION QUERIES
towards
-------
TOWARDS pos
outputs a number, the heading at which the turtle should be facing so
that it would point from its current position to the position given as
the input.
File: ucblogo.info, Node: SCRUNCH, Prev: TOWARDS, Up: TURTLE MOTION QUERIES
scrunch
-------
SCRUNCH
outputs a list containing two numbers, the X and Y scrunch factors, as
used by 'SETSCRUNCH'. (But note that 'SETSCRUNCH' takes two numbers as
inputs, not one list of numbers.)
*Note SETSCRUNCH:: .
File: ucblogo.info, Node: TURTLE AND WINDOW CONTROL, Next: TURTLE AND WINDOW QUERIES, Prev: TURTLE MOTION QUERIES, Up: GRAPHICS
6.3 Turtle and Window Control
=============================
* Menu:
* SHOWTURTLE::
* HIDETURTLE::
* CLEAN::
* CLEARSCREEN::
* WRAP::
* WINDOW::
* FENCE::
* FILL::
* FILLED::
* LABEL::
* SETLABELHEIGHT::
* TEXTSCREEN::
* FULLSCREEN::
* SPLITSCREEN::
* SETSCRUNCH::
* REFRESH::
* NOREFRESH::
File: ucblogo.info, Node: SHOWTURTLE, Next: HIDETURTLE, Prev: TURTLE AND WINDOW CONTROL, Up: TURTLE AND WINDOW CONTROL
showturtle
----------
SHOWTURTLE
ST
makes the turtle visible.
File: ucblogo.info, Node: HIDETURTLE, Next: CLEAN, Prev: SHOWTURTLE, Up: TURTLE AND WINDOW CONTROL
hideturtle
----------
HIDETURTLE
HT
makes the turtle invisible. It's a good idea to do this while you're in
the middle of a complicated drawing, because hiding the turtle speeds up
the drawing substantially.
File: ucblogo.info, Node: CLEAN, Next: CLEARSCREEN, Prev: HIDETURTLE, Up: TURTLE AND WINDOW CONTROL
clean
-----
CLEAN
erases all lines that the turtle has drawn on the graphics window. The
turtle's state (position, heading, pen mode, etc.) is not changed.
File: ucblogo.info, Node: CLEARSCREEN, Next: WRAP, Prev: CLEAN, Up: TURTLE AND WINDOW CONTROL
clearscreen
-----------
CLEARSCREEN
CS
erases the graphics window and sends the turtle to its initial position
and heading. Like 'HOME' and 'CLEAN' together.
*Note HOME:: .
File: ucblogo.info, Node: WRAP, Next: WINDOW, Prev: CLEARSCREEN, Up: TURTLE AND WINDOW CONTROL
wrap
----
WRAP
tells the turtle to enter wrap mode: From now on, if the turtle is asked
to move past the boundary of the graphics window, it will "wrap around"
and reappear at the opposite edge of the window. The top edge wraps to
the bottom edge, while the left edge wraps to the right edge. (So the
window is topologically equivalent to a torus.) This is the turtle's
initial mode. Compare 'WINDOW' and 'FENCE'.
*Note FENCE:: .
File: ucblogo.info, Node: WINDOW, Next: FENCE, Prev: WRAP, Up: TURTLE AND WINDOW CONTROL
window
------
WINDOW
tells the turtle to enter window mode: From now on, if the turtle is
asked to move past the boundary of the graphics window, it will move
offscreen. The visible graphics window is considered as just part of an
infinite graphics plane; the turtle can be anywhere on the plane. (If
you lose the turtle, 'HOME' will bring it back to the center of the
window.) Compare 'WRAP' and 'FENCE'.
*Note HOME:: .
File: ucblogo.info, Node: FENCE, Next: FILL, Prev: WINDOW, Up: TURTLE AND WINDOW CONTROL
fence
-----
FENCE
tells the turtle to enter fence mode: From now on, if the turtle is
asked to move past the boundary of the graphics window, it will move as
far as it can and then stop at the edge with an "out of bounds" error
message. Compare 'WRAP' and 'WINDOW'.
*Note WRAP:: .
File: ucblogo.info, Node: FILL, Next: FILLED, Prev: FENCE, Up: TURTLE AND WINDOW CONTROL
fill
----
FILL
fills in a region of the graphics window containing the turtle and
bounded by lines that have been drawn earlier. This is not portable; it
doesn't work for all machines, and may not work exactly the same way on
different machines.
File: ucblogo.info, Node: FILLED, Next: LABEL, Prev: FILL, Up: TURTLE AND WINDOW CONTROL
filled
------
FILLED color instructions
runs the instructions, remembering all points visited by turtle motion
commands, starting _and ending_ with the turtle's initial position.
Then draws (ignoring penmode) the resulting polygon, in the current pen
color, filling the polygon with the given color, which can be a color
number or an RGB list. The instruction list cannot include another
FILLED invocation. (wxWidgets only)
File: ucblogo.info, Node: LABEL, Next: SETLABELHEIGHT, Prev: FILLED, Up: TURTLE AND WINDOW CONTROL
label
-----
LABEL text
takes a word or list as input, and prints the input on the graphics
window, starting at the turtle's position.
File: ucblogo.info, Node: SETLABELHEIGHT, Next: TEXTSCREEN, Prev: LABEL, Up: TURTLE AND WINDOW CONTROL
setlabelheight
--------------
SETLABELHEIGHT height
command (wxWidgets only). Takes a positive integer argument and tries
to set the font size so that the character height (including descenders)
is that many turtle steps. This will be different from the number of
screen pixels if 'SETSCRUNCH' has been used. Also, note that
'SETSCRUNCH' changes the font size to try to preserve this height in
turtle steps. Note that the query operation corresponding to this
command is 'LABELSIZE', not 'LABELHEIGHT', because it tells you the
width as well as the height of characters in the current font.
File: ucblogo.info, Node: TEXTSCREEN, Next: FULLSCREEN, Prev: SETLABELHEIGHT, Up: TURTLE AND WINDOW CONTROL
textscreen
----------
TEXTSCREEN
TS
rearranges the size and position of windows to maximize the space
available in the text window (the window used for interaction with
Logo). The details differ among machines. Compare 'SPLITSCREEN' and
'FULLSCREEN'.
*Note SPLITSCREEN:: .
File: ucblogo.info, Node: FULLSCREEN, Next: SPLITSCREEN, Prev: TEXTSCREEN, Up: TURTLE AND WINDOW CONTROL
fullscreen
----------
FULLSCREEN
FS
rearranges the size and position of windows to maximize the space
available in the graphics window. The details differ among machines.
Compare 'SPLITSCREEN' and 'TEXTSCREEN'.
Since there must be a text window to allow printing (including the
printing of the Logo prompt), Logo automatically switches from
fullscreen to splitscreen whenever anything is printed.
In the DOS version, switching from fullscreen to splitscreen loses the
part of the picture that's hidden by the text window. [This design
decision follows from the scarcity of memory, so that the extra memory
to remember an invisible part of a drawing seems too expensive.]
File: ucblogo.info, Node: SPLITSCREEN, Next: SETSCRUNCH, Prev: FULLSCREEN, Up: TURTLE AND WINDOW CONTROL
splitscreen
-----------
SPLITSCREEN
SS
rearranges the size and position of windows to allow some room for text
interaction while also keeping most of the graphics window visible. The
details differ among machines. Compare 'TEXTSCREEN' and 'FULLSCREEN'.
*Note TEXTSCREEN:: .
File: ucblogo.info, Node: SETSCRUNCH, Next: REFRESH, Prev: SPLITSCREEN, Up: TURTLE AND WINDOW CONTROL
setscrunch
----------
SETSCRUNCH xscale yscale
adjusts the aspect ratio and scaling of the graphics display. After
this command is used, all further turtle motion will be adjusted by
multiplying the horizontal and vertical extent of the motion by the two
numbers given as inputs. For example, after the instruction
SETSCRUNCH 2 1 motion at a heading of 45 degrees will move twice as far
horizontally as vertically. If your squares don't come out square, try
this. (Alternatively, you can deliberately misadjust the aspect ratio
to draw an ellipse.)
For all modern computers, both scale factors are initially 1. For DOS
machines, the scale factors are initially set according to what the
hardware claims the aspect ratio is, but the hardware sometimes lies.
For DOS, the values set by 'SETSCRUNCH' are remembered in a file (called
'scrunch.dat') and are automatically put into effect when a Logo session
begins.
File: ucblogo.info, Node: REFRESH, Next: NOREFRESH, Prev: SETSCRUNCH, Up: TURTLE AND WINDOW CONTROL
refresh
-------
REFRESH
(command) tells Logo to remember the turtle's motions so that they can
be used for high-resolution printing (wxWidgets) or to refresh the
graphics window if it is moved, resized, or overlayed (non-wxWidgets).
This is the default.
File: ucblogo.info, Node: NOREFRESH, Prev: REFRESH, Up: TURTLE AND WINDOW CONTROL
norefresh
---------
NOREFRESH
(command) tells Logo not to remember the turtle's motions, which may be
useful to save time and memory if your program is interactive or
animated, rather than drawing a static picture you'll want to print
later (wxWidgets). In non-wxWidgets versions, using NOREFRESH may
prevent Logo from restoring the graphics image after the window is
moved, resized, or overlayed.
File: ucblogo.info, Node: TURTLE AND WINDOW QUERIES, Next: PEN AND BACKGROUND CONTROL, Prev: TURTLE AND WINDOW CONTROL, Up: GRAPHICS
6.4 Turtle and Window Queries
=============================
* Menu:
* SHOWNP::
* SCREENMODE::
* TURTLEMODE::
* LABELSIZE::
File: ucblogo.info, Node: SHOWNP, Next: SCREENMODE, Prev: TURTLE AND WINDOW QUERIES, Up: TURTLE AND WINDOW QUERIES
shownp
------
SHOWNP
SHOWN?
outputs 'TRUE' if the turtle is shown (visible), 'FALSE' if the turtle
is hidden. See 'SHOWTURTLE' and 'HIDETURTLE'.
*Note SHOWTURTLE:: , *note HIDETURTLE:: .
File: ucblogo.info, Node: SCREENMODE, Next: TURTLEMODE, Prev: SHOWNP, Up: TURTLE AND WINDOW QUERIES
screenmode
----------
SCREENMODE
outputs the word 'TEXTSCREEN', 'SPLITSCREEN', or 'FULLSCREEN' depending
on the current screen mode.
File: ucblogo.info, Node: TURTLEMODE, Next: LABELSIZE, Prev: SCREENMODE, Up: TURTLE AND WINDOW QUERIES
turtlemode
----------
TURTLEMODE
outputs the word 'WRAP', 'FENCE', or 'WINDOW' depending on the current
turtle mode.
File: ucblogo.info, Node: LABELSIZE, Prev: TURTLEMODE, Up: TURTLE AND WINDOW QUERIES
labelsize
---------
LABELSIZE
(wxWidgets only) outputs a list of two positive integers, the width and
height of characters displayed by 'LABEL' measured in turtle steps
(which will be different from screen pixels if 'SETSCRUNCH' has been
used). There is no 'SETLABELSIZE' because the width and height of a
font are not separately controllable, so the inverse of this operation
is 'SETLABELHEIGHT', which takes just one number for the desired height.
File: ucblogo.info, Node: PEN AND BACKGROUND CONTROL, Next: PEN QUERIES, Prev: TURTLE AND WINDOW QUERIES, Up: GRAPHICS
6.5 Pen and Background Control
==============================
The turtle carries a pen that can draw pictures. At any time the pen
can be UP (in which case moving the turtle does not change what's on the
graphics screen) or DOWN (in which case the turtle leaves a trace). If
the pen is down, it can operate in one of three modes: PAINT (so that it
draws lines when the turtle moves), ERASE (so that it erases any lines
that might have been drawn on or through that path earlier), or REVERSE
(so that it inverts the status of each point along the turtle's path).
* Menu:
* PENDOWN::
* PENUP::
* PENPAINT::
* PENERASE::
* PENREVERSE::
* SETPENCOLOR::
* SETPALETTE::
* SETPENSIZE::
* SETPENPATTERN::
* SETPEN::
* SETBACKGROUND::
File: ucblogo.info, Node: PENDOWN, Next: PENUP, Prev: PEN AND BACKGROUND CONTROL, Up: PEN AND BACKGROUND CONTROL
pendown
-------
PENDOWN
PD
sets the pen's position to 'DOWN', without changing its mode.
File: ucblogo.info, Node: PENUP, Next: PENPAINT, Prev: PENDOWN, Up: PEN AND BACKGROUND CONTROL
penup
-----
PENUP
PU
sets the pen's position to 'UP', without changing its mode.
File: ucblogo.info, Node: PENPAINT, Next: PENERASE, Prev: PENUP, Up: PEN AND BACKGROUND CONTROL
penpaint
--------
PENPAINT
PPT
sets the pen's position to 'DOWN' and mode to 'PAINT'.
File: ucblogo.info, Node: PENERASE, Next: PENREVERSE, Prev: PENPAINT, Up: PEN AND BACKGROUND CONTROL
penerase
--------
PENERASE
PE
sets the pen's position to 'DOWN' and mode to 'ERASE'.
*Note ERASE:: .
File: ucblogo.info, Node: PENREVERSE, Next: SETPENCOLOR, Prev: PENERASE, Up: PEN AND BACKGROUND CONTROL
penreverse
----------
PENREVERSE
PX
sets the pen's position to 'DOWN' and mode to 'REVERSE'. (This may
interact in system-dependent ways with use of color.)
*Note REVERSE:: .
File: ucblogo.info, Node: SETPENCOLOR, Next: SETPALETTE, Prev: PENREVERSE, Up: PEN AND BACKGROUND CONTROL
setpencolor
-----------
SETPENCOLOR colornumber.or.rgblist
SETPC colornumber.or.rgblist
sets the pen color to the given number, which must be a nonnegative
integer. There are initial assignments for the first 16 colors:
0 black 1 blue 2 green 3 cyan
4 red 5 magenta 6 yellow 7 white
8 brown 9 tan 10 forest 11 aqua
12 salmon 13 purple 14 orange 15 grey
but other colors can be assigned to numbers by the 'PALETTE' command.
Alternatively, sets the pen color to the given RGB values (a list of
three nonnegative numbers less than 100 specifying the percent
saturation of red, green, and blue in the desired color).
File: ucblogo.info, Node: SETPALETTE, Next: SETPENSIZE, Prev: SETPENCOLOR, Up: PEN AND BACKGROUND CONTROL
setpalette
----------
SETPALETTE colornumber rgblist
sets the actual color corresponding to a given number, if allowed by the
hardware and operating system. Colornumber must be an integer greater
than or equal to 8. (Logo tries to keep the first 8 colors constant.)
The second input is a list of three nonnegative numbers less than 100
specifying the percent saturation of red, green, and blue in the desired
color.
File: ucblogo.info, Node: SETPENSIZE, Next: SETPENPATTERN, Prev: SETPALETTE, Up: PEN AND BACKGROUND CONTROL
setpensize
----------
SETPENSIZE size
sets the thickness of the pen. The input is either a single positive
integer or a list of two positive integers (for horizontal and vertical
thickness). Some versions pay no attention to the second number, but
always have a square pen.
File: ucblogo.info, Node: SETPENPATTERN, Next: SETPEN, Prev: SETPENSIZE, Up: PEN AND BACKGROUND CONTROL
setpenpattern
-------------
SETPENPATTERN pattern
sets hardware-dependent pen characteristics. This command is not
guaranteed compatible between implementations on different machines.
File: ucblogo.info, Node: SETPEN, Next: SETBACKGROUND, Prev: SETPENPATTERN, Up: PEN AND BACKGROUND CONTROL
setpen
------
SETPEN list (library procedure)
sets the pen's position, mode, thickness, and hardware-dependent
characteristics according to the information in the input list, which
should be taken from an earlier invocation of 'PEN'.
*Note PEN:: .
File: ucblogo.info, Node: SETBACKGROUND, Prev: SETPEN, Up: PEN AND BACKGROUND CONTROL
setbackground
-------------
SETBACKGROUND colornumber.or.rgblist
SETBG colornumber.or.rgblist
set the screen background color by slot number or RGB values. See
'SETPENCOLOR' for details.
*Note SETPENCOLOR:: .
File: ucblogo.info, Node: PEN QUERIES, Next: SAVING AND LOADING PICTURES, Prev: PEN AND BACKGROUND CONTROL, Up: GRAPHICS
6.6 Pen Queries
===============
* Menu:
* PENDOWNP::
* PENMODE::
* PENCOLOR::
* PALETTE::
* PENSIZE::
* PEN::
* BACKGROUND::
File: ucblogo.info, Node: PENDOWNP, Next: PENMODE, Prev: PEN QUERIES, Up: PEN QUERIES
pendownp
--------
PENDOWNP
PENDOWN?
outputs 'TRUE' if the pen is down, 'FALSE' if it's up.
File: ucblogo.info, Node: PENMODE, Next: PENCOLOR, Prev: PENDOWNP, Up: PEN QUERIES
penmode
-------
PENMODE
outputs one of the words 'PAINT', 'ERASE', or 'REVERSE' according to the
current pen mode.
*Note ERASE:: , *note REVERSE:: .
File: ucblogo.info, Node: PENCOLOR, Next: PALETTE, Prev: PENMODE, Up: PEN QUERIES
pencolor
--------
PENCOLOR
PC
outputs a color number, a nonnegative integer that is associated with a
particular color, or a list of RGB values if such a list was used as the
most recent input to 'SETPENCOLOR'. There are initial assignments for
the first 16 colors:
0 black 1 blue 2 green 3 cyan
4 red 5 magenta 6 yellow 7 white
8 brown 9 tan 10 forest 11 aqua
12 salmon 13 purple 14 orange 15 grey
but other colors can be assigned to numbers by the 'PALETTE' command.
File: ucblogo.info, Node: PALETTE, Next: PENSIZE, Prev: PENCOLOR, Up: PEN QUERIES
palette
-------
PALETTE colornumber
outputs a list of three nonnegative numbers less than 100 specifying the
percent saturation of red, green, and blue in the color associated with
the given number.
File: ucblogo.info, Node: PENSIZE, Next: PEN, Prev: PALETTE, Up: PEN QUERIES
pensize
-------
PENSIZE
outputs a list of two positive integers, specifying the horizontal and
vertical thickness of the turtle pen. (In some implementations,
including wxWidgets, the two numbers are always equal.)
PENPATTERN
outputs system-specific pen information.
File: ucblogo.info, Node: PEN, Next: BACKGROUND, Prev: PENSIZE, Up: PEN QUERIES
pen
---
PEN (library procedure)
outputs a list containing the pen's position, mode, thickness, and
hardware-specific characteristics, for use by 'SETPEN'.
*Note SETPEN:: .
File: ucblogo.info, Node: BACKGROUND, Prev: PEN, Up: PEN QUERIES
background
----------
BACKGROUND
BG
outputs the graphics background color, either as a slot number or as an
RGB list, whichever way it was set. (See 'PENCOLOR'.)
File: ucblogo.info, Node: SAVING AND LOADING PICTURES, Next: MOUSE QUERIES, Prev: PEN QUERIES, Up: GRAPHICS
6.7 Saving and Loading Pictures
===============================
* Menu:
* SAVEPICT::
* LOADPICT::
* EPSPICT::
File: ucblogo.info, Node: SAVEPICT, Next: LOADPICT, Prev: SAVING AND LOADING PICTURES, Up: SAVING AND LOADING PICTURES
savepict
--------
SAVEPICT filename
command. Writes a file with the specified name containing the state of
the graphics window, including any nonstandard color palette settings,
in Logo's internal format. This picture can be restored to the screen
using 'LOADPICT'. The format is not portable between platforms, nor is
it readable by other programs. *note EPSPICT:: to export Logo graphics
for other programs.
File: ucblogo.info, Node: LOADPICT, Next: EPSPICT, Prev: SAVEPICT, Up: SAVING AND LOADING PICTURES
loadpict
--------
LOADPICT filename
command. Reads the specified file, which must have been written by a
'SAVEPICT' command, and restores the graphics window and color palette
settings to the values stored in the file. Any drawing previously on
the screen is cleared.
*Note SAVEPICT:: .
File: ucblogo.info, Node: EPSPICT, Prev: LOADPICT, Up: SAVING AND LOADING PICTURES
epspict
-------
EPSPICT filename
command. Writes a file with the specified name, containing an
Encapsulated Postscript (EPS) representation of the state of the
graphics window. This file can be imported into other programs that
understand EPS format. Restrictions: the drawing cannot use 'FILL',
'PENERASE', or 'PENREVERSE'; any such instructions will be ignored in
the translation to Postscript form.
*Note FILL:: , *Note PENERASE:: , *Note PENREVERSE:: .
File: ucblogo.info, Node: MOUSE QUERIES, Prev: SAVING AND LOADING PICTURES, Up: GRAPHICS
6.8 Mouse Queries
=================
* Menu:
* MOUSEPOS::
* CLICKPOS::
* BUTTONP::
* BUTTON::
File: ucblogo.info, Node: MOUSEPOS, Next: CLICKPOS, Prev: MOUSE QUERIES, Up: MOUSE QUERIES
mousepos
--------
MOUSEPOS
outputs the coordinates of the mouse, provided that it's within the
graphics window, in turtle coordinates. If the mouse is outside the
graphics window, then the last position within the window is returned.
Exception: If a mouse button is pressed within the graphics window and
held while the mouse is dragged outside the window, the mouse's position
is returned as if the window were big enough to include it.
File: ucblogo.info, Node: CLICKPOS, Next: BUTTONP, Prev: MOUSEPOS, Up: MOUSE QUERIES
clickpos
--------
CLICKPOS
outputs the coordinates that the mouse was at when a mouse button was
most recently pushed, provided that that position was within the
graphics window, in turtle coordinates. (wxWidgets only)
File: ucblogo.info, Node: BUTTONP, Next: BUTTON, Prev: CLICKPOS, Up: MOUSE QUERIES
buttonp
-------
BUTTONP
BUTTON?
outputs 'TRUE' if a mouse button is down and the mouse is over the
graphics window. Once the button is down, 'BUTTONP' remains true until
the button is released, even if the mouse is dragged out of the graphics
window.
File: ucblogo.info, Node: BUTTON, Prev: BUTTONP, Up: MOUSE QUERIES
button
------
BUTTON
outputs 0 if no mouse button has been pushed inside the Logo window
since the last call to 'BUTTON'. Otherwise, it outputs an integer
between 1 and 3 indicating which button was most recently pressed.
Ordinarily 1 means left, 2 means right, and 3 means center, but
operating systems may reconfigure these.
File: ucblogo.info, Node: WORKSPACE MANAGEMENT, Next: CONTROL STRUCTURES, Prev: GRAPHICS, Up: Top
7 Workspace Management
**********************
* Menu:
* PROCEDURE DEFINITION::
* VARIABLE DEFINITION::
* PROPERTY LISTS::
* WORKSPACE PREDICATES::
* WORKSPACE QUERIES::
* WORKSPACE INSPECTION::
* WORKSPACE CONTROL::
File: ucblogo.info, Node: PROCEDURE DEFINITION, Next: VARIABLE DEFINITION, Prev: WORKSPACE MANAGEMENT, Up: WORKSPACE MANAGEMENT
7.1 Procedure Definition
========================
* Menu:
* TO::
* DEFINE::
* TEXT::
* FULLTEXT::
* COPYDEF::
File: ucblogo.info, Node: TO, Next: DEFINE, Prev: PROCEDURE DEFINITION, Up: PROCEDURE DEFINITION
to
--
TO procname :input1 :input2 ... (special form)
command. Prepares Logo to accept a procedure definition. The procedure
will be named PROCNAME and there must not already be a procedure by that
name. The inputs will be called INPUT1 etc. Any number of inputs are
allowed, including none. Names of procedures and inputs are
case-insensitive.
Unlike every other Logo procedure, TO takes as its inputs the actual
words typed in the instruction line, as if they were all quoted, rather
than the results of evaluating expressions to provide the inputs.
(That's what "special form" means.)
This version of Logo allows variable numbers of inputs to a procedure.
After the procedure name come four kinds of things, _in this order_:
1. 0 or more REQUIRED inputs :FOO :FROBOZZ
2. 0 or more OPTIONAL inputs [:BAZ 87] [:THINGO 5+9]
3. 0 or 1 REST input [:GARPLY]
4. 0 or 1 DEFAULT number 5
Every procedure has a MINIMUM, DEFAULT, and MAXIMUM number of inputs.
(The latter can be infinite.)
The MINIMUM number of inputs is the number of required inputs, which
must come first. A required input is indicated by the
:inputname
notation.
After all the required inputs can be zero or more optional inputs, each
of which is represented by the following notation:
[:inputname default.value.expression]
When the procedure is invoked, if actual inputs are not supplied for
these optional inputs, the DEFAULT VALUE EXPRESSIONs are evaluated to
set values for the corresponding input names. The inputs are processed
from left to right, so a default value expression can be based on
earlier inputs. Example:
to proc :inlist [:startvalue first :inlist]
If the procedure is invoked by saying
proc [a b c]
then the variable 'inlist' will have the value [A B C] and the variable
'startvalue' will have the value A. If the procedure is invoked by
saying
(proc [a b c] "x)
then 'inlist' will have the value [A B C] and 'startvalue' will have the
value X.
After all the required and optional input can come a single "rest"
input, represented by the following notation:
[:inputname]
This is a rest input rather than an optional input because there is no
default value expression. There can be at most one rest input. When
the procedure is invoked, the value of this INPUTNAME will be a list
containing all of the actual inputs provided that were not used for
required or optional inputs. Example:
to proc :in1 [:in2 "foo] [:in3 "baz] [:in4]
If this procedure is invoked by saying
proc "x
then 'in1' has the value X, 'in2' has the value FOO, 'in3' has the value
BAZ, and 'in4' has the value [] (the empty list). If it's invoked by
saying
(proc "a "b "c "d "e)
then 'in1' has the value A, 'in2' has the value B, 'in3' has the value
C, and 'in4' has the value [D E].
The _maximum_ number of inputs for a procedure is infinite if a rest
input is given; otherwise, it is the number of required inputs plus the
number of optional inputs.
The _default_ number of inputs for a procedure, which is the number of
inputs that it will accept if its invocation is not enclosed in
parentheses, is ordinarily equal to the minimum number. If you want a
different default number you can indicate that by putting the desired
default number as the last thing on the 'TO' line. example:
to proc :in1 [:in2 "foo] [:in3] 3
This procedure has a minimum of one input, a default of three inputs,
and an infinite maximum.
Logo responds to the 'TO' command by entering procedure definition mode.
The prompt character changes from '?' to '>' and whatever instructions
you type become part of the definition until you type a line containing
only the word 'END'.
File: ucblogo.info, Node: DEFINE, Next: TEXT, Prev: TO, Up: PROCEDURE DEFINITION
define
------
DEFINE procname text
command. Defines a procedure with name PROCNAME and text TEXT. If
there is already a procedure with the same name, the new definition
replaces the old one. The TEXT input must be a list whose members are
lists. The first member is a list of inputs; it looks like a 'TO' line
but without the word 'TO', without the procedure name, and without the
colons before input names. In other words, the members of this first
sublist are words for the names of required inputs and lists for the
names of optional or rest inputs. The remaining sublists of the TEXT
input make up the body of the procedure, with one sublist for each
instruction line of the body. (There is no 'END' line in the text
input.) It is an error to redefine a primitive procedure unless the
variable 'REDEFP' has the value 'TRUE'.
*Note REDEFP:: .
File: ucblogo.info, Node: TEXT, Next: FULLTEXT, Prev: DEFINE, Up: PROCEDURE DEFINITION
text
----
TEXT procname
outputs the text of the procedure named PROCNAME in the form expected by
'DEFINE': a list of lists, the first of which describes the inputs to
the procedure and the rest of which are the lines of its body. The text
does not reflect formatting information used when the procedure was
defined, such as continuation lines and extra spaces.
File: ucblogo.info, Node: FULLTEXT, Next: COPYDEF, Prev: TEXT, Up: PROCEDURE DEFINITION
fulltext
--------
FULLTEXT procname
outputs a representation of the procedure PROCNAME in which formatting
information is preserved. If the procedure was defined with 'TO',
'EDIT', or 'LOAD', then the output is a list of words. Each word
represents one entire line of the definition in the form output by
'READWORD', including extra spaces and continuation lines. The last
member of the output represents the 'END' line. If the procedure was
defined with 'DEFINE', then the output is a list of lists. If these
lists are printed, one per line, the result will look like a definition
using 'TO'. Note: the output from 'FULLTEXT' is not suitable for use as
input to 'DEFINE'!
*Note TO:: , *note EDIT:: , *note LOAD:: , *note DEFINE:: .
File: ucblogo.info, Node: COPYDEF, Prev: FULLTEXT, Up: PROCEDURE DEFINITION
copydef
-------
COPYDEF newname oldname
command. Makes NEWNAME a procedure identical to OLDNAME. The latter
may be a primitive. If NEWNAME was already defined, its previous
definition is lost. If NEWNAME was already a primitive, the
redefinition is not permitted unless the variable 'REDEFP' has the value
'TRUE'.
Note: dialects of Logo differ as to the order of inputs to 'COPYDEF'.
This dialect uses "'MAKE' order," not "'NAME' order."
*Note REDEFP:: , *note SAVE:: , *note PO:: , *note POT:: .
File: ucblogo.info, Node: VARIABLE DEFINITION, Next: PROPERTY LISTS, Prev: PROCEDURE DEFINITION, Up: WORKSPACE MANAGEMENT
7.2 Variable Definition
=======================
* Menu:
* MAKE::
* NAME::
* LOCAL::
* LOCALMAKE::
* THING::
* GLOBAL::
File: ucblogo.info, Node: MAKE, Next: NAME, Prev: VARIABLE DEFINITION, Up: VARIABLE DEFINITION
make
----
MAKE varname value
command. Assigns the value VALUE to the variable named VARNAME, which
must be a word. Variable names are case-insensitive. If a variable
with the same name already exists, the value of that variable is
changed. If not, a new global variable is created.
File: ucblogo.info, Node: NAME, Next: LOCAL, Prev: MAKE, Up: VARIABLE DEFINITION
name
----
NAME value varname (library procedure)
command. Same as 'MAKE' but with the inputs in reverse order.
File: ucblogo.info, Node: LOCAL, Next: LOCALMAKE, Prev: NAME, Up: VARIABLE DEFINITION
local
-----
LOCAL varname
LOCAL varnamelist
(LOCAL varname1 varname2 ...)
command. Accepts as inputs one or more words, or a list of words. A
variable is created for each of these words, with that word as its name.
The variables are local to the currently running procedure. Logo
variables follow dynamic scope rules; a variable that is local to a
procedure is available to any subprocedure invoked by that procedure.
The variables created by 'LOCAL' have no initial value; they must be
assigned a value (e.g., with 'MAKE') before the procedure attempts to
read their value.
*Note MAKE:: .
File: ucblogo.info, Node: LOCALMAKE, Next: THING, Prev: LOCAL, Up: VARIABLE DEFINITION
localmake
---------
LOCALMAKE varname value (library procedure)
command. Makes the named variable local, like 'LOCAL', and assigns it
the given value, like 'MAKE'.
*Note LOCAL:: , *Note MAKE:: .
File: ucblogo.info, Node: THING, Next: GLOBAL, Prev: LOCALMAKE, Up: VARIABLE DEFINITION
thing
-----
THING varname
:quoted.varname
outputs the value of the variable whose name is the input. If there is
more than one such variable, the innermost local variable of that name
is chosen. The colon notation is an abbreviation not for 'THING' but
for the combination
thing "
so that :FOO means THING "FOO.
File: ucblogo.info, Node: GLOBAL, Prev: THING, Up: VARIABLE DEFINITION
global
------
GLOBAL varname
GLOBAL varnamelist
(GLOBAL varname1 varname2 ...)
command. Accepts as inputs one or more words, or a list of words. A
global variable is created for each of these words, with that word as
its name. The only reason this is necessary is that you might want to
use the "setter" notation 'SETXYZ' for a variable 'XYZ' that does not
already have a value; GLOBAL "XYZ makes that legal. Note: If there is
currently a local variable of the same name, this command does *not*
make Logo use the global value instead of the local one.
File: ucblogo.info, Node: PROPERTY LISTS, Next: WORKSPACE PREDICATES, Prev: VARIABLE DEFINITION, Up: WORKSPACE MANAGEMENT
7.3 Property Lists
==================
Note: Names of property lists are always case-insensitive. Names of
individual properties are case-sensitive or case-insensitive depending
on the value of 'CASEIGNOREDP', which is 'TRUE' by default.
*Note CASEIGNOREDP:: .
In principle, every possible name is the name of a property list, which
is initially empty. So Logo never gives a "no such property list"
error, as it would for undefined procedure or variable names. But the
primitive procedures that deal with "all" property lists ('CONTENTS',
'PLISTS', etc.) list only nonempty ones. To "erase" a property list
*note ERASE:: means to make it empty, removing all properties from it.
* Menu:
* PPROP::
* GPROP::
* REMPROP::
* PLIST::
File: ucblogo.info, Node: PPROP, Next: GPROP, Prev: PROPERTY LISTS, Up: PROPERTY LISTS
pprop
-----
PPROP plistname propname value
command. Adds a property to the PLISTNAME property list with name
PROPNAME and value VALUE.
File: ucblogo.info, Node: GPROP, Next: REMPROP, Prev: PPROP, Up: PROPERTY LISTS
gprop
-----
GPROP plistname propname
outputs the value of the PROPNAME property in the PLISTNAME property
list, or the empty list if there is no such property.
File: ucblogo.info, Node: REMPROP, Next: PLIST, Prev: GPROP, Up: PROPERTY LISTS
remprop
-------
REMPROP plistname propname
command. Removes the property named PROPNAME from the property list
named PLISTNAME.
File: ucblogo.info, Node: PLIST, Prev: REMPROP, Up: PROPERTY LISTS
plist
-----
PLIST plistname
outputs a list whose odd-numbered members are the names, and whose
even-numbered members are the values, of the properties in the property
list named PLISTNAME. The output is a copy of the actual property list;
changing properties later will not magically change a list output
earlier by 'PLIST'.
File: ucblogo.info, Node: WORKSPACE PREDICATES, Next: WORKSPACE QUERIES, Prev: PROPERTY LISTS, Up: WORKSPACE MANAGEMENT
7.4 Workspace Predicates
========================
* Menu:
* PROCEDUREP::
* PRIMITIVEP::
* DEFINEDP::
* NAMEP::
* PLISTP::
File: ucblogo.info, Node: PROCEDUREP, Next: PRIMITIVEP, Prev: WORKSPACE PREDICATES, Up: WORKSPACE PREDICATES
procedurep
----------
PROCEDUREP name
PROCEDURE? name
outputs 'TRUE' if the input is the name of a procedure.
File: ucblogo.info, Node: PRIMITIVEP, Next: DEFINEDP, Prev: PROCEDUREP, Up: WORKSPACE PREDICATES
primitivep
----------
PRIMITIVEP name
PRIMITIVE? name
outputs 'TRUE' if the input is the name of a primitive procedure (one
built into Logo). Note that some of the procedures described in this
document are library procedures, not primitives.
File: ucblogo.info, Node: DEFINEDP, Next: NAMEP, Prev: PRIMITIVEP, Up: WORKSPACE PREDICATES
definedp
--------
DEFINEDP name
DEFINED? name
outputs 'TRUE' if the input is the name of a user-defined procedure,
including a library procedure.
File: ucblogo.info, Node: NAMEP, Next: PLISTP, Prev: DEFINEDP, Up: WORKSPACE PREDICATES
namep
-----
NAMEP name
NAME? name
outputs 'TRUE' if the input is the name of a variable.
File: ucblogo.info, Node: PLISTP, Prev: NAMEP, Up: WORKSPACE PREDICATES
plistp
------
PLISTP name
PLIST? name
outputs 'TRUE' if the input is the name of a _nonempty_ property list.
(In principle every word is the name of a property list; if you haven't
put any properties in it, 'PLIST' of that name outputs an empty list,
rather than giving an error message.)
File: ucblogo.info, Node: WORKSPACE QUERIES, Next: WORKSPACE INSPECTION, Prev: WORKSPACE PREDICATES, Up: WORKSPACE MANAGEMENT
7.5 Workspace Queries
=====================
* Menu:
* CONTENTS::
* BURIED::
* TRACED::
* STEPPED::
* PROCEDURES::
* PRIMITIVES::
* NAMES::
* PLISTS::
* NAMELIST::
* PLLIST::
* ARITY::
* NODES::
Note: All procedures whose input is indicated as CONTENTSLIST will
accept a single word (taken as a procedure name), a list of words (taken
as names of procedures), or a list of three lists as described under the
'CONTENTS' command above.
File: ucblogo.info, Node: CONTENTS, Next: BURIED, Prev: WORKSPACE QUERIES, Up: WORKSPACE QUERIES
contents
--------
CONTENTS
outputs a "contents list," i.e., a list of three lists containing names
of defined procedures, variables, and property lists respectively. This
list includes all unburied named items in the workspace.
File: ucblogo.info, Node: BURIED, Next: TRACED, Prev: CONTENTS, Up: WORKSPACE QUERIES
buried
------
BURIED
outputs a contents list including all buried named items in the
workspace.
File: ucblogo.info, Node: TRACED, Next: STEPPED, Prev: BURIED, Up: WORKSPACE QUERIES
traced
------
TRACED
outputs a contents list including all traced named items in the
workspace.
File: ucblogo.info, Node: STEPPED, Next: PROCEDURES, Prev: TRACED, Up: WORKSPACE QUERIES
stepped
-------
STEPPED
outputs a contents list including all stepped named items in the
workspace.
File: ucblogo.info, Node: PROCEDURES, Next: PRIMITIVES, Prev: STEPPED, Up: WORKSPACE QUERIES
procedures
----------
PROCEDURES
outputs a list of the names of all unburied user-defined procedures in
the workspace. Note that this is a list of names, not a contents list.
(However, procedures that require a contents list as input will accept
this list.)
File: ucblogo.info, Node: PRIMITIVES, Next: NAMES, Prev: PROCEDURES, Up: WORKSPACE QUERIES
primitives
----------
PRIMITIVES
outputs a list of the names of all primitive procedures in the
workspace. Note that this is a list of names, not a contents list.
(However, procedures that require a contents list as input will accept
this list.)
File: ucblogo.info, Node: NAMES, Next: PLISTS, Prev: PRIMITIVES, Up: WORKSPACE QUERIES
names
-----
NAMES
outputs a contents list consisting of an empty list (indicating no
procedure names) followed by a list of all unburied variable names in
the workspace.
File: ucblogo.info, Node: PLISTS, Next: NAMELIST, Prev: NAMES, Up: WORKSPACE QUERIES
plists
------
PLISTS
outputs a contents list consisting of two empty lists (indicating no
procedures or variables) followed by a list of all unburied nonempty
property lists in the workspace.
File: ucblogo.info, Node: NAMELIST, Next: PLLIST, Prev: PLISTS, Up: WORKSPACE QUERIES
namelist
--------
NAMELIST varname (library procedure)
NAMELIST varnamelist
outputs a contents list consisting of an empty list followed by a list
of the name or names given as input. This is useful in conjunction with
workspace control procedures that require a contents list as input.
File: ucblogo.info, Node: PLLIST, Next: ARITY, Prev: NAMELIST, Up: WORKSPACE QUERIES
pllist
------
PLLIST plname (library procedure)
PLLIST plnamelist
outputs a contents list consisting of two empty lists followed by a list
of the name or names given as input. This is useful in conjunction with
workspace control procedures that require a contents list as input.
*Note CONTENTS:: .
File: ucblogo.info, Node: ARITY, Next: NODES, Prev: PLLIST, Up: WORKSPACE QUERIES
arity
-----
ARITY procedurename
outputs a list of three numbers: the minimum, default, and maximum
number of inputs for the procedure whose name is the input. It is an
error if there is no such procedure. A maximum of -1 means that the
number of inputs is unlimited.
File: ucblogo.info, Node: NODES, Prev: ARITY, Up: WORKSPACE QUERIES
nodes
-----
NODES
outputs a list of two numbers. The first represents the number of nodes
of memory currently in use. The second shows the maximum number of
nodes that have been in use at any time since the last invocation of
'NODES'. (A node is a small block of computer memory as used by Logo.
Each number uses one node. Each non-numeric word uses one node, plus
some non-node memory for the characters in the word. Each array takes
one node, plus some non-node memory, as well as the memory required by
its elements. Each list requires one node per element, as well as the
memory within the elements.) If you want to track the memory use of an
algorithm, it is best if you invoke 'GC' at the beginning of each
iteration, since otherwise the maximum will include storage that is
unused but not yet collected.
File: ucblogo.info, Node: WORKSPACE INSPECTION, Next: WORKSPACE CONTROL, Prev: WORKSPACE QUERIES, Up: WORKSPACE MANAGEMENT
7.6 Workspace Inspection
========================
* Menu:
* PO::
* POALL::
* POPS::
* PONS::
* POPLS::
* PON::
* POPL::
* POT::
* POTS::
File: ucblogo.info, Node: PO, Next: POALL, Prev: WORKSPACE INSPECTION, Up: WORKSPACE INSPECTION
po
--
PRINTOUT contentslist
PO contentslist
command. Prints to the write stream the definitions of all procedures,
variables, and property lists named in the input contents list.
File: ucblogo.info, Node: POALL, Next: POPS, Prev: PO, Up: WORKSPACE INSPECTION
poall
-----
POALL (library procedure)
command. Prints all unburied definitions in the workspace. Abbreviates
PO CONTENTS.
*Note CONTENTS:: .
File: ucblogo.info, Node: POPS, Next: PONS, Prev: POALL, Up: WORKSPACE INSPECTION
pops
----
POPS (library procedure)
command. Prints the definitions of all unburied procedures in the
workspace. Abbreviates PO PROCEDURES.
*Note PO:: , *note PROCEDURES:: .
File: ucblogo.info, Node: PONS, Next: POPLS, Prev: POPS, Up: WORKSPACE INSPECTION
pons
----
PONS (library procedure)
command. Prints the definitions of all unburied variables in the
workspace. Abbreviates PO NAMES.
*Note PO:: , *note NAMES:: .
File: ucblogo.info, Node: POPLS, Next: PON, Prev: PONS, Up: WORKSPACE INSPECTION
popls
-----
POPLS (library procedure)
command. Prints the contents of all unburied nonempty property lists in
the workspace. Abbreviates PO PLISTS.
*Note PO:: , *note PLISTS:: .
File: ucblogo.info, Node: PON, Next: POPL, Prev: POPLS, Up: WORKSPACE INSPECTION
pon
---
PON varname (library procedure)
PON varnamelist
command. Prints the definitions of the named variable(s).
Abbreviates PO NAMELIST varname(list).
*Note PO:: , *note NAMELIST:: .
File: ucblogo.info, Node: POPL, Next: POT, Prev: PON, Up: WORKSPACE INSPECTION
popl
----
POPL plname (library procedure)
POPL plnamelist
command. Prints the definitions of the named property list(s).
Abbreviates PO PLLIST plname(list).
*Note PO:: , *note PLLIST:: .
File: ucblogo.info, Node: POT, Next: POTS, Prev: POPL, Up: WORKSPACE INSPECTION
pot
---
POT contentslist
command. Prints the title lines of the named procedures and the
definitions of the named variables and property lists. For property
lists, the entire list is shown on one line instead of as a series of
'PPROP' instructions as in 'PO'.
*Note PPROP:: , *note PO:: .
File: ucblogo.info, Node: POTS, Prev: POT, Up: WORKSPACE INSPECTION
pots
----
POTS (library procedure)
command. Prints the title lines of all unburied procedures in the
workspace. Abbreviates POT PROCEDURES.
*Note PROCEDURES:: .
File: ucblogo.info, Node: WORKSPACE CONTROL, Prev: WORKSPACE INSPECTION, Up: WORKSPACE MANAGEMENT
7.7 Workspace Control
=====================
* Menu:
* ERASE::
* ERALL::
* ERPS::
* ERNS::
* ERPLS::
* ERN::
* ERPL::
* BURY::
* BURYALL::
* BURYNAME::
* UNBURY::
* UNBURYALL::
* UNBURYNAME::
* BURIEDP::
* TRACE::
* UNTRACE::
* TRACEDP::
* STEP::
* UNSTEP::
* STEPPEDP::
* EDIT::
* EDITFILE::
* EDALL::
* EDPS::
* EDNS::
* EDPLS::
* EDN::
* EDPL::
* SAVE::
* SAVEL::
* LOAD::
* CSLSLOAD::
* HELP::
* SETEDITOR::
* SETLIBLOC::
* SETHELPLOC::
* SETCSLSLOC::
* SETTEMPLOC::
* GC::
* .SETSEGMENTSIZE::
File: ucblogo.info, Node: ERASE, Next: ERALL, Prev: WORKSPACE CONTROL, Up: WORKSPACE CONTROL
erase
-----
ERASE contentslist
ER contentslist
command. Erases from the workspace the procedures, variables, and
property lists named in the input. Primitive procedures may not be
erased unless the variable 'REDEFP' has the value 'TRUE'.
*Note REDEFP:: .
File: ucblogo.info, Node: ERALL, Next: ERPS, Prev: ERASE, Up: WORKSPACE CONTROL
erall
-----
ERALL
command. Erases all unburied procedures, variables, and property lists
from the workspace. Abbreviates ERASE CONTENTS.
*Note CONTENTS:: .
File: ucblogo.info, Node: ERPS, Next: ERNS, Prev: ERALL, Up: WORKSPACE CONTROL
erps
----
ERPS
command. Erases all unburied procedures from the workspace.
Abbreviates ERASE PROCEDURES.
*Note ERASE:: , *note PROCEDURES:: .
File: ucblogo.info, Node: ERNS, Next: ERPLS, Prev: ERPS, Up: WORKSPACE CONTROL
erns
----
ERNS
command. Erases all unburied variables from the workspace. Abbreviates
ERASE NAMES.
*Note ERASE:: , *note NAMES:: .
File: ucblogo.info, Node: ERPLS, Next: ERN, Prev: ERNS, Up: WORKSPACE CONTROL
erpls
-----
ERPLS
command. Erases all unburied property lists from the workspace.
Abbreviates ERASE PLISTS.
*Note ERASE:: , *note PLISTS:: .
File: ucblogo.info, Node: ERN, Next: ERPL, Prev: ERPLS, Up: WORKSPACE CONTROL
ern
---
ERN varname (library procedure)
ERN varnamelist
command. Erases from the workspace the variable(s) named in the input.
Abbreviates ERASE NAMELIST VARNAME(LIST).
*Note ERASE:: , *note NAMELIST:: .
File: ucblogo.info, Node: ERPL, Next: BURY, Prev: ERN, Up: WORKSPACE CONTROL
erpl
----
ERPL plname (library procedure)
ERPL plnamelist
command. Erases from the workspace the property list(s) named in the
input. Abbreviates ERASE PLLIST PLNAME(LIST).
*Note ERASE:: , *note PLLIST:: .
File: ucblogo.info, Node: BURY, Next: BURYALL, Prev: ERPL, Up: WORKSPACE CONTROL
bury
----
BURY contentslist
command. Buries the procedures, variables, and property lists named in
the input. A buried item is not included in the lists output by
'CONTENTS', 'PROCEDURES', 'VARIABLES', and 'PLISTS', but is included in
the list output by 'BURIED'. By implication, buried things are not
printed by 'POALL' or saved by 'SAVE'.
*Note CONTENTS:: , *note PROCEDURES:: , *note PONS:: , *note PLISTS:: ,
*note POALL:: , *note SAVE:: .
File: ucblogo.info, Node: BURYALL, Next: BURYNAME, Prev: BURY, Up: WORKSPACE CONTROL
buryall
-------
BURYALL (library procedure)
command. Abbreviates BURY CONTENTS.
*Note CONTENTS:: .
File: ucblogo.info, Node: BURYNAME, Next: UNBURY, Prev: BURYALL, Up: WORKSPACE CONTROL
buryname
--------
BURYNAME varname (library procedure)
BURYNAME varnamelist
command. Abbreviates BURY NAMELIST 'varname(list)'.
*Note BURY:: , *note NAMELIST:: .
File: ucblogo.info, Node: UNBURY, Next: UNBURYALL, Prev: BURYNAME, Up: WORKSPACE CONTROL
unbury
------
UNBURY contentslist
command. Unburies the procedures, variables, and property lists named
in the input. That is, the named items will be returned to view in
'CONTENTS', etc.
*Note CONTENTS:: .
File: ucblogo.info, Node: UNBURYALL, Next: UNBURYNAME, Prev: UNBURY, Up: WORKSPACE CONTROL
unburyall
---------
UNBURYALL (library procedure)
command. Abbreviates UNBURY BURIED.
*Note BURIED:: .
File: ucblogo.info, Node: UNBURYNAME, Next: BURIEDP, Prev: UNBURYALL, Up: WORKSPACE CONTROL
unburyname
----------
UNBURYNAME varname (library procedure)
UNBURYNAME varnamelist
command. Abbreviates UNBURY NAMELIST VARNAME(LIST).
*Note UNBURY:: , *note NAMELIST:: .
File: ucblogo.info, Node: BURIEDP, Next: TRACE, Prev: UNBURYNAME, Up: WORKSPACE CONTROL
buriedp
-------
BURIEDP contentslist
BURIED? contentslist
outputs 'TRUE' if the first procedure, variable, or property list named
in the contents list is buried, 'FALSE' if not. Only the first thing in
the list is tested; the most common use will be with a word as input,
naming a procedure, but a contents list is allowed so that you can
'BURIEDP [[] [VARIABLE]]' or 'BURIEDP [[] [] [PROPLIST]]'.
File: ucblogo.info, Node: TRACE, Next: UNTRACE, Prev: BURIEDP, Up: WORKSPACE CONTROL
trace
-----
TRACE contentslist
command. Marks the named items for tracing. A message is printed
whenever a traced procedure is invoked, giving the actual input values,
and whenever a traced procedure 'STOP's or 'OUTPUT's. A message is
printed whenever a new value is assigned to a traced variable using
'MAKE'. A message is printed whenever a new property is given to a
traced property list using 'PPROP'.
*Note STOP:: , *note OUTPUT:: , *note MAKE:: , *note PPROP:: .
File: ucblogo.info, Node: UNTRACE, Next: TRACEDP, Prev: TRACE, Up: WORKSPACE CONTROL
untrace
-------
UNTRACE contentslist
command. Turns off tracing for the named items.
File: ucblogo.info, Node: TRACEDP, Next: STEP, Prev: UNTRACE, Up: WORKSPACE CONTROL
tracedp
-------
TRACEDP contentslist
TRACED? contentslist
outputs 'TRUE' if the first procedure, variable, or property list named
in the contents list is traced, 'FALSE' if not. Only the first thing in
the list is tested; the most common use will be with a word as input,
naming a procedure, but a contents list is allowed so that you can
'TRACEDP [[] [VARIABLE]]' or 'TRACEDP [[] [] [PROPLIST]]'.
File: ucblogo.info, Node: STEP, Next: UNSTEP, Prev: TRACEDP, Up: WORKSPACE CONTROL
step
----
STEP contentslist
command. Marks the named items for stepping. Whenever a stepped
procedure is invoked, each instruction line in the procedure body is
printed before being executed, and Logo waits for the user to type a
newline at the terminal. A message is printed whenever a stepped
variable name is "shadowed" because a local variable of the same name is
created either as a procedure input or by the 'LOCAL' command.
*Note LOCAL:: .
File: ucblogo.info, Node: UNSTEP, Next: STEPPEDP, Prev: STEP, Up: WORKSPACE CONTROL
unstep
------
UNSTEP contentslist
command. Turns off stepping for the named items.
File: ucblogo.info, Node: STEPPEDP, Next: EDIT, Prev: UNSTEP, Up: WORKSPACE CONTROL
steppedp
--------
STEPPEDP contentslist
STEPPED? contentslist
outputs 'TRUE' if the first procedure, variable, or property list named
in the contents list is stepped, 'FALSE' if not. Only the first thing
in the list is tested; the most common use will be with a word as input,
naming a procedure, but a contents list is allowed so that you can
'STEPPEDP [[] [VARIABLE]]' or 'STEPPEDP [[] [] [PROPLIST]]'.
File: ucblogo.info, Node: EDIT, Next: EDITFILE, Prev: STEPPEDP, Up: WORKSPACE CONTROL
edit
----
EDIT contentslist
ED contentslist
(EDIT)
(ED)
command. If invoked with an input, 'EDIT' writes the definitions of the
named items into a temporary file and edits that file, using an editor
that depends on the platform you're using. In wxWidgets, and in the
MacOS Classic version, there is an editor built into Logo. In the
non-wxWidgets versions for Unix, MacOS X, Windows, and DOS, Logo uses
your favorite editor as determined by the 'EDITOR' environment variable.
If you don't have an 'EDITOR' variable, edits the definitions using
'jove'. If invoked without an input, 'EDIT' edits the same file left
over from a previous 'EDIT' or 'EDITFILE' instruction. When you leave
the editor, Logo reads the revised definitions and modifies the
workspace accordingly. It is not an error if the input includes names
for which there is no previous definition.
If there is a variable 'LOADNOISILY' whose value is 'TRUE', then, after
leaving the editor, 'TO' commands in the temporary file print 'PROCNAME
defined' (where PROCNAME is the name of the procedure being defined); if
'LOADNOISILY' is 'FALSE' or undefined, 'TO' commands in the file are
carried out silently.
If there is an environment variable called 'TEMP', then Logo uses its
value as the directory in which to write the temporary file used for
editing.
Exceptionally, the 'EDIT' command can be used without its default input
and without parentheses provided that nothing follows it on the
instruction line.
*Note LOADNOISILY:: , *Note EDITFILE:: .
File: ucblogo.info, Node: EDITFILE, Next: EDALL, Prev: EDIT, Up: WORKSPACE CONTROL
editfile
--------
EDITFILE filename
command. Starts the Logo editor, like 'EDIT', but instead of editing a
temporary file it edits the file specified by the input. When you leave
the editor, Logo reads the revised file, as for 'EDIT'. 'EDITFILE' also
remembers the filename, so that a subsequent 'EDIT' command with no
input will re-edit the same file.
'EDITFILE' is intended as an alternative to 'LOAD' and 'SAVE'. You can
maintain a workspace file yourself, controlling the order in which
definitions appear, maintaining comments in the file, and so on.
In the wxWidgets version, 'EDITFILE' asks whether or not you want to
load the file into Logo when you finish editing. This allows you to use
'EDITFILE' to edit data files without leaving Logo.
File: ucblogo.info, Node: EDALL, Next: EDPS, Prev: EDITFILE, Up: WORKSPACE CONTROL
edall
-----
EDALL (library procedure)
command. Abbreviates EDIT CONTENTS.
*Note CONTENTS:: .
File: ucblogo.info, Node: EDPS, Next: EDNS, Prev: EDALL, Up: WORKSPACE CONTROL
edps
----
EDPS (library procedure)
command. Abbreviates EDIT PROCEDURES.
*Note EDIT:: , *note PROCEDURES:: .
File: ucblogo.info, Node: EDNS, Next: EDPLS, Prev: EDPS, Up: WORKSPACE CONTROL
edns
----
EDNS (library procedure)
command. Abbreviates EDIT NAMES.
*Note EDIT:: , *note NAMES:: .
File: ucblogo.info, Node: EDPLS, Next: EDN, Prev: EDNS, Up: WORKSPACE CONTROL
edpls
-----
EDPLS (library procedure)
command. Abbreviates EDIT PLISTS.
*Note EDIT:: , *note PLISTS:: .
File: ucblogo.info, Node: EDN, Next: EDPL, Prev: EDPLS, Up: WORKSPACE CONTROL
edn
---
EDN varname (library procedure)
EDN varnamelist
command. Abbreviates EDIT NAMELIST VARNAME(LIST).
*Note EDIT:: , *note NAMELIST:: .
File: ucblogo.info, Node: EDPL, Next: SAVE, Prev: EDN, Up: WORKSPACE CONTROL
edpl
----
EDPL plname (library procedure)
EDPL plnamelist
command. Abbreviates EDIT PLLIST PLNAME(LIST).
*Note EDIT:: , *note PLLIST:: .
File: ucblogo.info, Node: SAVE, Next: SAVEL, Prev: EDPL, Up: WORKSPACE CONTROL
save
----
SAVE filename
command. Saves the definitions of all unburied procedures, variables,
and nonempty property lists in the named file. Equivalent to
to save :filename
local "oldwriter
make "oldwriter writer
openwrite :filename
setwrite :filename
poall
setwrite :oldwriter
close :filename
end
Exceptionally, 'SAVE' can be used with no input and without parentheses
if it is the last thing on the command line. In this case, the filename
from the most recent 'LOAD' or 'SAVE' command will be used. (It is an
error if there has been no previous 'LOAD' or 'SAVE'.)
File: ucblogo.info, Node: SAVEL, Next: LOAD, Prev: SAVE, Up: WORKSPACE CONTROL
savel
-----
SAVEL contentslist filename (library procedure)
command. Saves the definitions of the procedures, variables, and
property lists specified by CONTENTSLIST to the file named FILENAME.
File: ucblogo.info, Node: LOAD, Next: CSLSLOAD, Prev: SAVEL, Up: WORKSPACE CONTROL
load
----
LOAD filename
command. Reads instructions from the named file and executes them. The
file can include procedure definitions with 'TO', and these are accepted
even if a procedure by the same name already exists. If the file
assigns a list value to a variable named 'STARTUP', then that list is
run as an instructionlist after the file is loaded. If there is a
variable 'LOADNOISILY' whose value is 'TRUE', then 'TO' commands in the
file print 'PROCNAME defined' (where PROCNAME is the name of the
procedure being defined); if 'LOADNOISILY' is 'FALSE' or undefined, 'TO'
commands in the file are carried out silently.
*Note STARTUP:: , *Note LOADNOISILY:: .
File: ucblogo.info, Node: CSLSLOAD, Next: HELP, Prev: LOAD, Up: WORKSPACE CONTROL
cslsload
--------
CSLSLOAD name
command. Loads the named file, like 'LOAD', but from the directory
containing the Computer Science Logo Style programs instead of the
current user's directory.
*Note LOAD:: .
File: ucblogo.info, Node: HELP, Next: SETEDITOR, Prev: CSLSLOAD, Up: WORKSPACE CONTROL
help
----
HELP name
(HELP)
command. Prints information from the reference manual about the
primitive procedure named by the input. With no input, lists all the
primitives about which help is available. If there is an environment
variable 'LOGOHELP', then its value is taken as the directory in which
to look for help files, instead of the default help directory.
If 'HELP' is called with the name of a defined procedure for which there
is no help file, it will print the title line of the procedure followed
by lines from the procedure body that start with semicolon, stopping
when a non-semicolon line is seen.
Exceptionally, the 'HELP' command can be used without its default input
and without parentheses provided that nothing follows it on the
instruction line.
File: ucblogo.info, Node: SETEDITOR, Next: SETLIBLOC, Prev: HELP, Up: WORKSPACE CONTROL
seteditor
---------
SETEDITOR path
command. Tells Logo to use the specified program as its editor instead
of the default editor. The format of a path depends on your operating
system.
File: ucblogo.info, Node: SETLIBLOC, Next: SETCSLSLOC, Prev: SETEDITOR, Up: WORKSPACE CONTROL
setlibloc
---------
SETLIBLOC path
command. Tells Logo to use the specified directory as its library
instead of the default. (Note that many Logo "primitive" procedures are
actually found in the library, so they may become unavailable if your
new library does not include them!) The format of a path depends on
your operating system.
File: ucblogo.info, Node: SETCSLSLOC, Next: SETHELPLOC, Prev: SETLIBLOC, Up: WORKSPACE CONTROL
setcslsloc
----------
SETCSLSLOC path
command. Tells Logo to use the specified directory for the 'CSLSLOAD'
command, instead of the default directory. The format of a path depends
on your operating system.
*Note CSLSLOAD:: .
File: ucblogo.info, Node: SETHELPLOC, Next: SETTEMPLOC, Prev: SETCSLSLOC, Up: WORKSPACE CONTROL
sethelploc
----------
SETHELPLOC path
command. Tells Logo to look in the specified directory for the
information provided by the HELP command, instead of the default
directory. The format of a path depends on your operating system.
File: ucblogo.info, Node: SETTEMPLOC, Next: GC, Prev: SETHELPLOC, Up: WORKSPACE CONTROL
settemploc
----------
SETTEMPLOC path
command. Tells Logo to write editor temporary files in the specified
directory rather than in the default directory. You must have write
permission for this directory. The format of a path depends on your
operating system.
File: ucblogo.info, Node: GC, Next: .SETSEGMENTSIZE, Prev: SETTEMPLOC, Up: WORKSPACE CONTROL
gc
--
GC
(GC anything)
command. Runs the garbage collector, reclaiming unused nodes. Logo
does this when necessary anyway, but you may want to use this command to
control exactly when Logo does it. In particular, the numbers output by
the 'NODES' operation will not be very meaningful unless garbage has
been collected. Another reason to use 'GC' is that a garbage collection
takes a noticeable fraction of a second, and you may want to schedule
collections for times before or after some time-critical animation. If
invoked with an argument (of any value), 'GC' runs a full garbage
collection, including GCTWA (Garbage Collect Truly Worthless Atoms,
which means that it removes from Logo's memory words that used to be
procedure or variable names but aren't any more); without an argument,
'GC' does a generational garbage collection, which means that only
recently created nodes are examined. (The latter is usually good
enough.)
File: ucblogo.info, Node: .SETSEGMENTSIZE, Prev: GC, Up: WORKSPACE CONTROL
.setsegmentsize
---------------
.SETSEGMENTSIZE num
command. Sets the number of nodes that Logo allocates from the
operating system at once to NUM, which must be a positive integer. The
name is dotted because bad things will happen if you use a number that's
too small or too large for your computer. The initial value is 16,000
for most systems, but is smaller for 68000-based Macs. Making it larger
will speed up computations (by reducing the number of garbage
collections) at the cost of allocating more memory than necessary.
File: ucblogo.info, Node: CONTROL STRUCTURES, Next: MACROS, Prev: WORKSPACE MANAGEMENT, Up: Top
8 Control Structures
********************
* Menu:
* CONTROL::
* TEMPLATE-BASED ITERATION::
File: ucblogo.info, Node: CONTROL, Next: TEMPLATE-BASED ITERATION, Prev: CONTROL STRUCTURES, Up: CONTROL STRUCTURES
8.1 Control
===========
Note: in the following descriptions, an "instructionlist" can be a list
or a word. In the latter case, the word is parsed into list form before
it is run. Thus, RUN READWORD or RUN READLIST will work. The former is
slightly preferable because it allows for a continued line (with '~')
that includes a comment (with ';') on the first line.
A TF input must be the word 'TRUE', the word 'FALSE', or a list. If
it's a list, then it must be a Logo expression, which will be evaluated
to produce a value that must be 'TRUE' or 'FALSE'. The comparisons with
'TRUE' and 'FALSE' are always case-insensitive.
A runlist can consist of either a single expression (that produces a
value) or zero or more instructions (that do something, rather than
output a value), depending on the context:
PRINT IFELSE :X<0 ["NEGATIVE] ["POSITIVE] ; one value in each case
REPEAT 4 [PRINT "A PRINT "B] ; two instructions
* Menu:
* RUN::
* RUNRESULT::
* REPEAT::
* FOREVER::
* REPCOUNT::
* IF::
* IFELSE::
* TEST::
* IFTRUE::
* IFFALSE::
* STOP::
* OUTPUT::
* CATCH::
* THROW::
* ERROR::
* PAUSE::
* CONTINUE::
* WAIT::
* BYE::
* dMAYBEOUTPUT:: MAYBEOUTPUT
* GOTO::
* TAG::
* IGNORE::
* back-quote::
* FOR::
* DOdWHILE:: DO.WHILE
* WHILE::
* DOdUNTIL:: DO.UNTIL
* UNTIL::
* CASE::
* COND::
File: ucblogo.info, Node: RUN, Next: RUNRESULT, Prev: CONTROL, Up: CONTROL
run
---
RUN instructionlist
command or operation. Runs the Logo instructions in the input list;
outputs if the list contains an expression that outputs.
*Note READWORD:: , *note READLIST:: .
File: ucblogo.info, Node: RUNRESULT, Next: REPEAT, Prev: RUN, Up: CONTROL
runresult
---------
RUNRESULT instructionlist
runs the instructions in the input; outputs an empty list if those
instructions produce no output, or a list whose only member is the
output from running the input instructionlist. Useful for inventing
command-or-operation control structures:
local "result
make "result runresult [something]
if emptyp :result [stop]
output first :result
File: ucblogo.info, Node: REPEAT, Next: FOREVER, Prev: RUNRESULT, Up: CONTROL
repeat
------
REPEAT num instructionlist
command. Runs the INSTRUCTIONLIST repeatedly, NUM times.
File: ucblogo.info, Node: FOREVER, Next: REPCOUNT, Prev: REPEAT, Up: CONTROL
forever
-------
FOREVER instructionlist
command. Runs the "instructionlist" repeatedly, until something inside
the instructionlist (such as 'STOP' or 'THROW') makes it stop.
*Note STOP:: , *Note THROW:: .
File: ucblogo.info, Node: REPCOUNT, Next: IF, Prev: FOREVER, Up: CONTROL
repcount
--------
REPCOUNT
outputs the repetition count of the innermost current 'REPEAT' or
'FOREVER', starting from 1. If no 'REPEAT' or 'FOREVER' is active,
outputs -1.
The abbreviation '#' can be used for 'REPCOUNT' unless the 'REPEAT' is
inside the template input to a higher order procedure such as 'FOREACH',
in which case '#' has a different meaning.
File: ucblogo.info, Node: IF, Next: IFELSE, Prev: REPCOUNT, Up: CONTROL
if
--
IF tf instructionlist
(IF tf instructionlist1 instructionlist2)
command. If the first input has the value 'TRUE', then 'IF' runs the
second input. If the first input has the value 'FALSE', then 'IF' does
nothing. (If given a third input, IF acts like 'IFELSE', as described
below.) It is an error if the first input is not either 'TRUE' or
'FALSE'.
For compatibility with earlier versions of Logo, if an 'IF' instruction
is not enclosed in parentheses, but the first thing on the instruction
line after the second input expression is a literal list (i.e., a list
in square brackets), the 'IF' is treated as if it were 'IFELSE', but a
warning message is given. If this aberrant 'IF' appears in a procedure
body, the warning is given only the first time the procedure is invoked
in each Logo session.
File: ucblogo.info, Node: IFELSE, Next: TEST, Prev: IF, Up: CONTROL
ifelse
------
IFELSE tf instructionlist1 instructionlist2
command or operation. If the first input has the value 'TRUE', then
'IFELSE' runs the second input. If the first input has the value
'FALSE', then 'IFELSE' runs the third input. 'IFELSE' outputs a value
if the INSTRUCTIONLIST contains an expression that outputs a value.
File: ucblogo.info, Node: TEST, Next: IFTRUE, Prev: IFELSE, Up: CONTROL
test
----
TEST tf
command. Remembers its input, which must be 'TRUE' or 'FALSE', for use
by later 'IFTRUE' or 'IFFALSE' instructions. The effect of 'TEST' is
local to the procedure in which it is used; any corresponding 'IFTRUE'
or 'IFFALSE' must be in the same procedure or a subprocedure.
*Note IFFALSE:: .
File: ucblogo.info, Node: IFTRUE, Next: IFFALSE, Prev: TEST, Up: CONTROL
iftrue
------
IFTRUE instructionlist
IFT instructionlist
command. Runs its input if the most recent 'TEST' instruction had a
'TRUE' input. The 'TEST' must have been in the same procedure or a
superprocedure.
File: ucblogo.info, Node: IFFALSE, Next: STOP, Prev: IFTRUE, Up: CONTROL
iffalse
-------
IFFALSE instructionlist
IFF instructionlist
command. Runs its input if the most recent 'TEST' instruction had a
'FALSE' input. The 'TEST' must have been in the same procedure or a
superprocedure.
*Note TEST:: .
File: ucblogo.info, Node: STOP, Next: OUTPUT, Prev: IFFALSE, Up: CONTROL
stop
----
STOP
command. Ends the running of the procedure in which it appears.
Control is returned to the context in which that procedure was invoked.
The stopped procedure does not output a value.
File: ucblogo.info, Node: OUTPUT, Next: CATCH, Prev: STOP, Up: CONTROL
output
------
OUTPUT value
OP value
command. Ends the running of the procedure in which it appears. That
procedure outputs the value VALUE to the context in which it was
invoked. Don't be confused: 'OUTPUT' itself is a command, but the
procedure that invokes 'OUTPUT' is an operation.
File: ucblogo.info, Node: CATCH, Next: THROW, Prev: OUTPUT, Up: CONTROL
catch
-----
CATCH tag instructionlist
command or operation. Runs its second input. Outputs if that
INSTRUCTIONLIST outputs. If, while running the instructionlist, a
'THROW' instruction is executed with a tag equal to the first input
(case-insensitive comparison), then the running of the INSTRUCTIONLIST
is terminated immediately. In this case the 'CATCH' outputs if a value
input is given to 'THROW'. The TAG must be a word.
If the tag is the word 'ERROR', then any error condition that arises
during the running of the instructionlist has the effect of THROW "ERROR
instead of printing an error message and returning to toplevel. The
'CATCH' does not output if an error is caught. Also, during the running
of the instructionlist, the variable 'ERRACT' is temporarily unbound.
(If there is an error while 'ERRACT' has a value, that value is taken as
an instructionlist to be run after printing the error message.
Typically the value of 'ERRACT', if any, is the list '[PAUSE]'.)
*Note ERROR:: , *note ERRACT:: , *note PAUSE:: .
File: ucblogo.info, Node: THROW, Next: ERROR, Prev: CATCH, Up: CONTROL
throw
-----
THROW tag
(THROW tag value)
command. Must be used within the scope of a 'CATCH' with an equal tag.
Ends the running of the instructionlist of the 'CATCH'. If 'THROW' is
used with only one input, the corresponding 'CATCH' does not output a
value. If 'THROW' is used with two inputs, the second provides an
output for the 'CATCH'.
THROW "TOPLEVEL can be used to terminate all running procedures and
interactive pauses, and return to the toplevel instruction prompt.
Typing the system interrupt character ( for wxWidgets; otherwise
normally for Unix, for DOS, or
for Mac) has the same effect.
THROW "ERROR can be used to generate an error condition. If the error
is not caught, it prints a message ('THROW "ERROR') with the usual
indication of where the error (in this case the 'THROW') occurred. If a
second input is used along with a tag of 'ERROR', that second input is
used as the text of the error message instead of the standard message.
Also, in this case, the location indicated for the error will be, not
the location of the 'THROW', but the location where the procedure
containing the 'THROW' was invoked. This allows user-defined procedures
to generate error messages as if they were primitives. Note: in this
case the corresponding CATCH "ERROR, if any, does not output, since the
second input to 'THROW' is not considered a return value.
THROW "SYSTEM immediately leaves Logo, returning to the operating
system, without printing the usual parting message and without deleting
any editor temporary file written by EDIT.
*Note EDIT:: .
File: ucblogo.info, Node: ERROR, Next: PAUSE, Prev: THROW, Up: CONTROL
error
-----
ERROR
outputs a list describing the error just caught, if any. If there was
not an error caught since the last use of 'ERROR', the empty list will
be output. The error list contains four members: an integer code
corresponding to the type of error, the text of the error message (as a
single word including spaces), the name of the procedure in which the
error occurred, and the instruction line on which the error occurred.
File: ucblogo.info, Node: PAUSE, Next: CONTINUE, Prev: ERROR, Up: CONTROL
pause
-----
PAUSE
command or operation. Enters an interactive pause. The user is
prompted for instructions, as at toplevel, but with a prompt that
includes the name of the procedure in which 'PAUSE' was invoked. Local
variables of that procedure are available during the pause. 'PAUSE'
outputs if the pause is ended by a 'CONTINUE' with an input.
If the variable 'ERRACT' exists, and an error condition occurs, the
contents of that variable are run as an instructionlist. Typically
'ERRACT' is given the value '[PAUSE]' so that an interactive pause will
be entered in the event of an error. This allows the user to check
values of local variables at the time of the error.
Typing the system quit character ( for wxWidgets; otherwise
normally for Unix, for DOS, or
for Mac) will also enter a pause.
*Note ERRACT:: .
File: ucblogo.info, Node: CONTINUE, Next: WAIT, Prev: PAUSE, Up: CONTROL
continue
--------
CONTINUE value
CO value
(CONTINUE)
(CO)
command. Ends the current interactive pause, returning to the context
of the 'PAUSE' invocation that began it. If 'CONTINUE' is given an
input, that value is used as the output from the 'PAUSE'. If not, the
'PAUSE' does not output.
Exceptionally, the 'CONTINUE' command can be used without its default
input and without parentheses provided that nothing follows it on the
instruction line.
File: ucblogo.info, Node: WAIT, Next: BYE, Prev: CONTINUE, Up: CONTROL
wait
----
WAIT time
command. Delays further execution for TIME 60ths of a second. Also
causes any buffered characters destined for the terminal to be printed
immediately. WAIT 0 can be used to achieve this buffer flushing without
actually waiting.
File: ucblogo.info, Node: BYE, Next: dMAYBEOUTPUT, Prev: WAIT, Up: CONTROL
bye
---
BYE
command. Exits from Logo; returns to the operating system.
File: ucblogo.info, Node: dMAYBEOUTPUT, Next: GOTO, Prev: BYE, Up: CONTROL
.maybeoutput
------------
.MAYBEOUTPUT value (special form)
works like 'OUTPUT' except that the expression that provides the input
value might not, in fact, output a value, in which case the effect is
like 'STOP'. This is intended for use in control structure definitions,
for cases in which you don't know whether or not some expression
produces a value. Example:
to invoke :function [:inputs] 2
.maybeoutput apply :function :inputs
end
? (invoke "print "a "b "c)
a b c
? print (invoke "word "a "b "c)
abc
This is an alternative to 'RUNRESULT'. It's fast and easy to use, at
the cost of being an exception to Logo's evaluation rules. (Ordinarily,
it should be an error if the expression that's supposed to provide an
input to something doesn't have a value.)
*Note OUTPUT:: , *note STOP:: , *note RUNRESULT:: .
File: ucblogo.info, Node: GOTO, Next: TAG, Prev: dMAYBEOUTPUT, Up: CONTROL
goto
----
GOTO word
command. Looks for a 'TAG' command with the same input in the same
procedure, and continues running the procedure from the location of that
'TAG'. It is meaningless to use 'GOTO' outside of a procedure.
File: ucblogo.info, Node: TAG, Next: IGNORE, Prev: GOTO, Up: CONTROL
tag
---
TAG quoted.word
command. Does nothing. The input must be a literal word following a
quotation mark ('"'), not the result of a computation. Tags are used by
the 'GOTO' command.
File: ucblogo.info, Node: IGNORE, Next: back-quote, Prev: TAG, Up: CONTROL
ignore
------
IGNORE value (library procedure)
command. Does nothing. Used when an expression is evaluated for a side
effect and its actual value is unimportant.
File: ucblogo.info, Node: back-quote, Next: FOR, Prev: IGNORE, Up: CONTROL
'
-
` list (library procedure)
outputs a list equal to its input but with certain substitutions. If a
member of the input list is the word ',' (comma) then the following
member should be an instructionlist that produces an output when run.
That output value replaces the comma and the instructionlist. If a
member of the input list is the word ',@' (comma atsign) then the
following member should be an instructionlist that outputs a list when
run. The members of that list replace the ',@' and the instructionlist.
Example:
show `[foo baz ,[bf [a b c]] garply ,@[bf [a b c]]]
will print
[foo baz [b c] garply b c]
A word starting with ',' or ',@' is treated as if the rest of the word
were a one-word list, e.g., ',:foo' is equivalent to ',[:Foo]'.
A word starting with '",' (quote comma) or ':,' (colon comma) becomes a
word starting with '"' or ':' but with the result of running the
substitution (or its first word, if the result is a list) replacing what
comes after the comma.
Backquotes can be nested. Substitution is done only for commas at the
same depth as the backquote in which they are found:
? show `[a `[b ,[1+2] ,[foo ,[1+3] d] e] f]
[a ` [b , [1+2] , [foo 4 d] e] f]
?make "name1 "x
?make "name2 "y
? show `[a `[b ,:,:name1 ,",:name2 d] e]
[a ` [b , [:x] , ["y] d] e]
File: ucblogo.info, Node: FOR, Next: DOdWHILE, Prev: back-quote, Up: CONTROL
for
---
FOR forcontrol instructionlist (library procedure)
command. The first input must be a list containing three or four
members: (1) a word, which will be used as the name of a local variable;
(2) a word or list that will be evaluated as by 'RUN' to determine a
number, the starting value of the variable; (3) a word or list that will
be evaluated to determine a number, the limit value of the variable; (4)
an optional word or list that will be evaluated to determine the step
size. If the fourth member is missing, the step size will be 1 or -1
depending on whether the limit value is greater than or less than the
starting value, respectively.
The second input is an instructionlist. The effect of 'FOR' is to run
that instructionlist repeatedly, assigning a new value to the control
variable (the one named by the first member of the FORCONTROL list) each
time. First the starting value is assigned to the control variable.
Then the value is compared to the limit value. 'FOR' is complete when
the sign of '(current - limit)' is the same as the sign of the step
size. (If no explicit step size is provided, the instructionlist is
always run at least once. An explicit step size can lead to a zero-trip
'FOR', e.g., FOR [I 1 0 1] ...). Otherwise, the instructionlist is run,
then the step is added to the current value of the control variable and
FOR returns to the comparison step.
? for [i 2 7 1.5] [print :i]
2
3.5
5
6.5
?
*Note RUN:: .
File: ucblogo.info, Node: DOdWHILE, Next: WHILE, Prev: FOR, Up: CONTROL
do.while
--------
DO.WHILE instructionlist tfexpression (library procedure)
command. Repeatedly evaluates the INSTRUCTIONLIST as long as the
evaluated TFEXPRESSION remains 'TRUE'. Evaluates the first input first,
so the INSTRUCTIONLIST is always run at least once. The TFEXPRESSION
must be an expressionlist whose value when evaluated is 'TRUE' or
'FALSE'.
File: ucblogo.info, Node: WHILE, Next: DOdUNTIL, Prev: DOdWHILE, Up: CONTROL
while
-----
WHILE tfexpression instructionlist (library procedure)
command. Repeatedly evaluates the INSTRUCTIONLIST as long as the
evaluated TFEXPRESSION remains 'TRUE'. Evaluates the first input first,
so the INSTRUCTIONLIST may never be run at all. The TFEXPRESSION must
be an expressionlist whose value when evaluated is 'TRUE' or 'FALSE'.
File: ucblogo.info, Node: DOdUNTIL, Next: UNTIL, Prev: WHILE, Up: CONTROL
do.until
--------
DO.UNTIL instructionlist tfexpression (library procedure)
command. Repeatedly evaluates the INSTRUCTIONLIST as long as the
evaluated TFEXPRESSION remains 'FALSE'. Evaluates the first input
first, so the INSTRUCTIONLIST is always run at least once. The
TFEXPRESSION must be an expressionlist whose value when evaluated is
'TRUE' or 'FALSE'.
File: ucblogo.info, Node: UNTIL, Next: CASE, Prev: DOdUNTIL, Up: CONTROL
until
-----
UNTIL tfexpression instructionlist (library procedure)
command. Repeatedly evaluates the INSTRUCTIONLIST as long as the
evaluated TFEXPRESSION remains 'FALSE'. Evaluates the first input
first, so the INSTRUCTIONLIST may never be run at all. The TFEXPRESSION
must be an expressionlist whose value when evaluated is 'TRUE' or
'FALSE'.
File: ucblogo.info, Node: CASE, Next: COND, Prev: UNTIL, Up: CONTROL
case
----
CASE value clauses (library procedure)
command or operation. The second input is a list of lists (clauses);
each clause is a list whose first element is either a list of values or
the word 'ELSE' and whose butfirst is a Logo expression or instruction.
'CASE' examines the clauses in order. If a clause begins with the word
'ELSE' (upper or lower case), then the butfirst of that clause is
evaluated and 'CASE' outputs its value, if any. If the first input to
CASE is a member of the first element of a clause, then the butfirst of
that clause is evaluated and 'CASE' outputs its value, if any. If
neither of these conditions is met, then 'CASE' goes on to the next
clause. If no clause is satisfied, 'CASE' does nothing. Example:
to vowelp :letter
output case :letter [ [[a e i o u] "true] [else "false] ]
end
File: ucblogo.info, Node: COND, Prev: CASE, Up: CONTROL
cond
----
COND clauses (library procedure)
command or operation. The input is a list of lists (clauses); each
clause is a list whose first element is either an expression whose value
is 'TRUE' or 'FALSE', or the word 'ELSE', and whose butfirst is a Logo
expression or instruction. 'COND' examines the clauses in order. If a
clause begins with the word 'ELSE' (upper or lower case), then the
butfirst of that clause is evaluated and 'CASE' outputs its value, if
any. Otherwise, the first element of the clause is evaluated; the
resulting value must be 'TRUE' or 'FALSE'. If it's 'TRUE', then the
butfirst of that clause is evaluated and 'COND' outputs its value, if
any. If the value is 'FALSE', then 'COND' goes on to the next clause.
If no clause is satisfied, 'COND' does nothing. Example:
to evens :numbers ; select even numbers from a list
op cond [ [[emptyp :numbers] []]
[[evenp first :numbers] ; assuming EVENP is defined
fput first :numbers evens butfirst :numbers]
[else evens butfirst :numbers] ]
end
File: ucblogo.info, Node: TEMPLATE-BASED ITERATION, Prev: CONTROL, Up: CONTROL STRUCTURES
8.2 Template-based Iteration
============================
The procedures in this section are iteration tools based on the idea of
a "template." This is a generalization of an instruction list or an
expression list in which "slots" are provided for the tool to insert
varying data. Four different forms of template can be used.
The most commonly used form for a template is 'explicit-slot' form, or
'question mark' form. Example:
? show map [? * ?] [2 3 4 5]
[4 9 16 25]
?
In this example, the 'MAP' tool evaluated the template '[? * ?]'
repeatedly, with each of the members of the data list '[2 3 4 5]'
substituted in turn for the question marks. The same value was used for
every question mark in a given evaluation. Some tools allow for more
than one datum to be substituted in parallel; in these cases the slots
are indicated by '?1' for the first datum, '?2' for the second, and so
on:
? show (map [(word ?1 ?2 ?1)] [a b c] [d e f])
[ada beb cfc]
?
If the template wishes to compute the datum number, the form '(? 1)' is
equivalent to '?1', so '(? ?1)' means the datum whose number is given in
datum number 1. Some tools allow additional slot designations, as shown
in the individual descriptions.
The second form of template is the 'named-procedure' form. If the
template is a word rather than a list, it is taken as the name of a
procedure. That procedure must accept a number of inputs equal to the
number of parallel data slots provided by the tool; the procedure is
applied to all of the available data in order. That is, if data '?1'
through '?3' are available, the template '"PROC' is equivalent to
[PROC ?1 ?2 ?3].
? show (map "word [a b c] [d e f])
[ad be cf]
?
to dotprod :a :b ; vector dot product
op apply "sum (map "product :a :b)
end
The third form of template is 'named-slot' or 'lambda' form. This form
is indicated by a template list containing more than one member, whose
first member is itself a list. The first member is taken as a list of
names; local variables are created with those names and given the
available data in order as their values. The number of names must equal
the number of available data. This form is needed primarily when one
iteration tool must be used within the template list of another, and the
'?' notation would be ambiguous in the inner template. Example:
to matmul :m1 :m2 [:tm2 transpose :m2] ; multiply two matrices
output map [[row] map [[col] dotprod :row :col] :tm2] :m1
end
The fourth form is 'procedure text' form, a variant of lambda form. In
this form, the template list contains at least two members, all of which
are lists. This is the form used by the 'DEFINE' and 'TEXT' primitives,
and 'APPLY' accepts it so that the text of a defined procedure can be
used as a template.
Note: The fourth form of template is interpreted differently from the
others, in that Logo considers it to be an independent defined procedure
for the purposes of 'OUTPUT' and 'STOP'. For example, the following two
instructions are identical:
? print apply [[x] :x+3] [5]
8
? print apply [[x] [output :x+3]] [5]
8
although the first instruction is in named-slot form and the second is
in procedure-text form. The named-slot form can be understood as
telling Logo to evaluate the expression :x+3 in place of the entire
invocation of apply, with the variable 'x' temporarily given the value
'5'. The procedure-text form can be understood as invoking the
procedure
to foo :x
output :x+3
end
with input '5', but without actually giving the procedure a name. If
the use of 'OUTPUT' were interchanged in these two examples, we'd get
errors:
? print apply [[x] output :x+3] [5]
Can only use output inside a procedure
? print apply [[x] [:x+3]] [5]
You don't say what to do with 8
The named-slot form can be used with 'STOP' or 'OUTPUT' inside a
procedure, to stop the enclosing procedure.
The following iteration tools are extended versions of the ones in
Appendix B of the book 'Computer Science Logo Style, Volume 3: Advanced
Topics' by Brian Harvey [MIT Press, 1987]. The extensions are primarily
to allow for variable numbers of inputs.
* Menu:
* APPLY::
* INVOKE::
* FOREACH::
* MAP::
* MAPdSE:: MAP.SE
* FILTER::
* FIND::
* REDUCE::
* CROSSMAP::
* CASCADE::
* CASCADEd2:: CASCADE.2
* TRANSFER::
File: ucblogo.info, Node: APPLY, Next: INVOKE, Prev: TEMPLATE-BASED ITERATION, Up: TEMPLATE-BASED ITERATION
apply
-----
APPLY template inputlist
command or operation. Runs the TEMPLATE, filling its slots with the
members of INPUTLIST. The number of members in INPUTLIST must be an
acceptable number of slots for TEMPLATE. It is illegal to apply the
primitive 'TO' as a template, but anything else is okay. 'APPLY'
outputs what TEMPLATE outputs, if anything.
*Note TO:: .
File: ucblogo.info, Node: INVOKE, Next: FOREACH, Prev: APPLY, Up: TEMPLATE-BASED ITERATION
invoke
------
INVOKE template input (library procedure)
(INVOKE template input1 input2 ...)
command or operation. Exactly like 'APPLY' except that the inputs are
provided as separate expressions rather than in a list.
File: ucblogo.info, Node: FOREACH, Next: MAP, Prev: INVOKE, Up: TEMPLATE-BASED ITERATION
foreach
-------
FOREACH data template (library procedure)
(FOREACH data1 data2 ... template)
command. Evaluates the TEMPLATE list repeatedly, once for each member
of the DATA list. If more than one DATA list are given, each of them
must be the same length. (The DATA inputs can be words, in which case
the template is evaluated once for each character.)
In a template, the symbol '?REST' represents the portion of the DATA
input to the right of the member currently being used as the '?'
slot-filler. That is, if the DATA input is '[A B C D E]' and the
template is being evaluated with '?' replaced by 'B', then '?REST' would
be replaced by '[C D E]'. If multiple parallel slots are used, then
(?REST 1) goes with ?1, etc.
In a template, the symbol '#' represents the position in the DATA input
of the member currently being used as the '?' slot-filler. That is, if
the data input is '[A B C D E]' and the template is being evaluated with
'?' replaced by 'B', then '#' would be replaced by '2'.
File: ucblogo.info, Node: MAP, Next: MAPdSE, Prev: FOREACH, Up: TEMPLATE-BASED ITERATION
map
---
MAP template data (library procedure)
(MAP template data1 data2 ...)
outputs a word or list, depending on the type of the DATA input, of the
same length as that DATA input. (If more than one DATA input are given,
the output is of the same type as DATA1.) Each member of the output is
the result of evaluating the TEMPLATE list, filling the slots with the
corresponding member(s) of the DATA input(s). (All DATA inputs must be
the same length.) In the case of a word output, the results of the
template evaluation must be words, and they are concatenated with
'WORD'.
In a template, the symbol '?REST' represents the portion of the data
input to the right of the member currently being used as the '?'
slot-filler. That is, if the DATA input is '[A B C D E]' and the
TEMPLATE is being evaluated with '?' replaced by 'B', then '?REST' would
be replaced by '[C D E]'. If multiple parallel slots are used, then
(?REST 1) goes with '?1', etc.
In a template, the symbol '#' represents the position in the DATA input
of the member currently being used as the '?' slot-filler. That is, if
the data input is '[A B C D E]' and the template is being evaluated with
'?' replaced by 'B', then '#' would be replaced by '2'.
*Note WORD:: .
File: ucblogo.info, Node: MAPdSE, Next: FILTER, Prev: MAP, Up: TEMPLATE-BASED ITERATION
map.se
------
MAP.SE template data (library procedure)
(MAP.SE template data1 data2 ...)
outputs a list formed by evaluating the TEMPLATE list repeatedly and
concatenating the results using 'SENTENCE'. That is, the members of the
output are the members of the results of the evaluations. The output
list might, therefore, be of a different length from that of the DATA
input(s). (If the result of an evaluation is the empty list, it
contributes nothing to the final output.) The DATA inputs may be words
or lists.
In a template, the symbol '?REST' represents the portion of the data
input to the right of the member currently being used as the '?'
slot-filler. That is, if the data input is '[A B C D E]' and the
template is being evaluated with '?' replaced by 'B', then '?REST' would
be replaced by '[C D E]'. If multiple parallel slots are used, then
(?REST 1) goes with '?1', etc.
In a template, the symbol '#' represents the position in the DATA input
of the member currently being used as the '?' slot-filler. That is, if
the data input is '[A B C D E]' and the template is being evaluated with
'?' replaced by 'B', then '#' would be replaced by '2'.
*Note SENTENCE:: .
File: ucblogo.info, Node: FILTER, Next: FIND, Prev: MAPdSE, Up: TEMPLATE-BASED ITERATION
filter
------
FILTER tftemplate data (library procedure)
outputs a word or list, depending on the type of the DATA input,
containing a subset of the members (for a list) or characters (for a
word) of the input. The template is evaluated once for each member or
character of the data, and it must produce a 'TRUE' or 'FALSE' value.
If the value is 'TRUE', then the corresponding input constituent is
included in the output.
? print filter "vowelp "elephant
eea
?
In a template, the symbol '?REST' represents the portion of the DATA
input to the right of the member currently being used as the '?'
slot-filler. That is, if the data input is '[A B C D E]' and the
template is being evaluated with '?' replaced by 'B', then '?REST' would
be replaced by '[C D E]'.
In a template, the symbol '#' represents the position in the DATA input
of the member currently being used as the '?' slot-filler. That is, if
the data input is '[A B C D E]' and the template is being evaluated with
'?' replaced by 'B', then '#' would be replaced by '2'.
File: ucblogo.info, Node: FIND, Next: REDUCE, Prev: FILTER, Up: TEMPLATE-BASED ITERATION
find
----
FIND tftemplate data (library procedure)
outputs the first constituent of the DATA input (the first member of a
list, or the first character of a word) for which the value produced by
evaluating the TEMPLATE with that consituent in its slot is 'TRUE'. If
there is no such constituent, the empty list is output.
In a template, the symbol '?REST' represents the portion of the DATA
input to the right of the member currently being used as the '?'
slot-filler. That is, if the data input is '[A B C D E]' and the
template is being evaluated with '?' replaced by 'B', then '?REST' would
be replaced by '[C D E]'.
In a template, the symbol '#' represents the position in the DATA input
of the member currently being used as the '?' slot-filler. That is, if
the data input is '[A B C D E]' and the template is being evaluated with
'?' replaced by 'B', then '#' would be replaced by '2'.
File: ucblogo.info, Node: REDUCE, Next: CROSSMAP, Prev: FIND, Up: TEMPLATE-BASED ITERATION
reduce
------
REDUCE template data (library procedure)
outputs the result of applying the TEMPLATE to accumulate the members of
the DATA input. The template must be a two-slot function. Typically it
is an associative function name like 'SUM'. If the DATA input has only
one constituent (member in a list or character in a word), the output is
that consituent. Otherwise, the template is first applied with '?1'
filled with the next-to-last consitient and '?2' with the last
constituent. Then, if there are more constituents, the template is
applied with '?1' filled with the next constituent to the left and '?2'
with the result from the previous evaluation. This process continues
until all constituents have been used. The data input may not be empty.
Note: If the template is, like 'SUM', the name of a procedure that is
capable of accepting arbitrarily many inputs, it is more efficient to
use 'APPLY' instead of 'REDUCE'. The latter is good for associative
procedures that have been written to accept exactly two inputs:
to max :a :b
output ifelse :a > :b [:a] [:b]
end
print reduce "max [...]
Alternatively, 'REDUCE' can be used to write 'MAX' as a procedure that
accepts any number of inputs, as 'SUM' does:
to max [:inputs] 2
if emptyp :inputs ~
[(throw "error [not enough inputs to max])]
output reduce [ifelse ?1 > ?2 [?1] [?2]] :inputs
end
*Note SUM:: , *note APPLY:: .
File: ucblogo.info, Node: CROSSMAP, Next: CASCADE, Prev: REDUCE, Up: TEMPLATE-BASED ITERATION
crossmap
--------
CROSSMAP template listlist (library procedure)
(CROSSMAP template data1 data2 ...)
outputs a list containing the results of template evaluations. Each
DATA list contributes to a slot in the template; the number of slots is
equal to the number of DATA list inputs. As a special case, if only one
DATA list input is given, that list is taken as a list of data lists,
and each of its members contributes values to a slot. 'CROSSMAP'
differs from 'MAP' in that instead of taking members from the data
inputs in parallel, it takes all possible combinations of members of
data inputs, which need not be the same length.
? show (crossmap [word ?1 ?2] [a b c] [1 2 3 4])
[a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4]
?
For compatibility with the version in the first edition of CSLS (1),
'CROSSMAP' templates may use the notation ':1' instead of '?1' to
indicate slots.
*Note MAP:: .
---------- Footnotes ----------
(1) 'Computer Science Logo Style'
File: ucblogo.info, Node: CASCADE, Next: CASCADEd2, Prev: CROSSMAP, Up: TEMPLATE-BASED ITERATION
cascade
-------
CASCADE endtest template startvalue (library procedure)
(CASCADE endtest tmp1 sv1 tmp2 sv2 ...)
(CASCADE endtest tmp1 sv1 tmp2 sv2 ... finaltemplate)
outputs the result of applying a template (or several templates, as
explained below) repeatedly, with a given value filling the slot the
first time, and the result of each application filling the slot for the
following application.
In the simplest case, 'CASCADE' has three inputs. The second input is a
one-slot expression template. That template is evaluated some number of
times (perhaps zero). On the first evaluation, the slot is filled with
the third input; on subsequent evaluations, the slot is filled with the
result of the previous evaluation. The number of evaluations is
determined by the first input. This can be either a nonnegative
integer, in which case the template is evaluated that many times, or a
predicate expression template, in which case it is evaluated (with the
same slot filler that will be used for the evaluation of the second
input) repeatedly, and the 'CASCADE' evaluation continues as long as the
predicate value is 'FALSE'. (In other words, the predicate template
indicates the condition for stopping.)
If the template is evaluated zero times, the output from 'CASCADE' is
the third (STARTVALUE) input. Otherwise, the output is the value
produced by the last template evaluation.
'CASCADE' templates may include the symbol '#' to represent the number
of times the template has been evaluated. This slot is filled with 1
for the first evaluation, 2 for the second, and so on.
? show cascade 5 [lput # ?] []
[1 2 3 4 5]
? show cascade [vowelp first ?] [bf ?] "spring
ing
? show cascade 5 [# * ?] 1
120
?
Several cascaded results can be computed in parallel by providing
additional template-startvalue pairs as inputs to 'CASCADE'. In this
case, all templates (including the endtest template, if used) are
multi-slot, with the number of slots equal to the number of pairs of
inputs. In each round of evaluations, '?2', for example, represents the
result of evaluating the second template in the previous round. If the
total number of inputs (including the first endtest input) is odd, then
the output from CASCADE is the final value of the first template. If
the total number of inputs is even, then the last input is a template
that is evaluated once, after the end test is satisfied, to determine
the output from 'CASCADE'.
to fibonacci :n
output (cascade :n [?1 + ?2] 1 [?1] 0)
end
to piglatin :word
output (cascade [vowelp first ?] ~
[word bf ? first ?] ~
:word ~
[word ? "ay])
end
File: ucblogo.info, Node: CASCADEd2, Next: TRANSFER, Prev: CASCADE, Up: TEMPLATE-BASED ITERATION
cascade.2
---------
CASCADE.2 endtest temp1 startval1 temp2 startval2 (library procedure)
outputs the result of invoking 'CASCADE' with the same inputs. The only
difference is that the default number of inputs is five instead of
three.
File: ucblogo.info, Node: TRANSFER, Prev: CASCADEd2, Up: TEMPLATE-BASED ITERATION
transfer
--------
TRANSFER endtest template inbasket (library procedure)
outputs the result of repeated evaluation of the TEMPLATE. The template
is evaluated once for each member of the list INBASKET. 'TRANSFER'
maintains an "outbasket" that is initially the empty list. After each
evaluation of the template, the resulting value becomes the new
outbasket.
In the template, the symbol '?IN' represents the current member from the
inbasket; the symbol '?OUT' represents the entire current outbasket.
Other slot symbols should not be used.
If the first (ENDTEST) input is an empty list, evaluation continues
until all inbasket members have been used. If not, the first input must
be a predicate expression template, and evaluation continues until
either that template's value is 'TRUE' or the inbasket is used up.
File: ucblogo.info, Node: MACROS, Next: ERROR PROCESSING, Prev: CONTROL STRUCTURES, Up: Top
9 Macros
********
* Menu:
* dMACRO::
* dDEFMACRO::
* MACROP::
* MACROEXPAND::
File: ucblogo.info, Node: dMACRO, Next: dDEFMACRO, Prev: MACROS, Up: MACROS
.macro
======
.MACRO procname :input1 :input2 ... (special form)
.DEFMACRO procname text
A macro is a special kind of procedure whose output is evaluated as Logo
instructions in the context of the macro's caller. '.MACRO' is exactly
like 'TO' except that the new procedure becomes a macro; '.DEFMACRO' is
exactly like 'DEFINE' with the same exception.
Macros are useful for inventing new control structures comparable to
'REPEAT', 'IF', and so on. Such control structures can almost, but not
quite, be duplicated by ordinary Logo procedures. For example, here is
an ordinary procedure version of 'REPEAT':
to my.repeat :num :instructions
if :num=0 [stop]
run :instructions
my.repeat :num-1 :instructions
end
This version works fine for most purposes, e.g.,
my.repeat 5 [print "hello]
But it doesn't work if the instructions to be carried out include
'OUTPUT', 'STOP', or 'LOCAL'. For example, consider this procedure:
to example
print [Guess my secret word. You get three guesses.]
repeat 3 [type "|?? | ~
if readword = "secret [pr "Right! stop]]
print [Sorry, the word was "secret"!]
end
This procedure works as written, but if 'MY.REPEAT' is used instead of
'REPEAT', it won't work because the 'STOP' will stop 'MY.REPEAT' instead
of stopping 'EXAMPLE' as desired.
The solution is to make 'MY.REPEAT' a macro. Instead of actually
carrying out the computation, a macro must return a list containing Logo
instructions. The contents of that list are evaluated as if they
appeared in place of the call to the macro. Here's a macro version of
'REPEAT':
.macro my.repeat :num :instructions
if :num=0 [output []]
output sentence :instructions ~
(list "my.repeat :num-1 :instructions)
end
Every macro is an operation -- it must always output something. Even in
the base case, 'MY.REPEAT' outputs an empty instruction list. To show
how 'MY.REPEAT' works, let's take the example
my.repeat 5 [print "hello]
For this example, 'MY.REPEAT' will output the instruction list
[print "hello my.repeat 4 [print "hello]]
Logo then executes these instructions in place of the original
invocation of 'MY.REPEAT'; this prints 'hello' once and invokes another
repetition.
The technique just shown, although fairly easy to understand, has the
defect of slowness because each repetition has to construct an
instruction list for evaluation. Another approach is to make
'MY.REPEAT' a macro that works just like the non-macro version unless
the instructions to be repeated include 'OUTPUT' or 'STOP':
.macro my.repeat :num :instructions
catch "repeat.catchtag ~
[op repeat.done runresult [repeat1 :num :instructions]]
op []
end
to repeat1 :num :instructions
if :num=0 [throw "repeat.catchtag]
run :instructions
.maybeoutput repeat1 :num-1 :instructions
end
to repeat.done :repeat.result
if emptyp :repeat.result [op [stop]]
op list "output quoted first :repeat.result
end
If the instructions do not include 'STOP' or 'OUTPUT', then 'REPEAT1'
will reach its base case and invoke 'THROW'. As a result, 'MY.REPEAT''s
last instruction line will output an empty list, so the evaluation of
the macro result by the caller will do nothing. But if a 'STOP' or
'OUTPUT' happens, then 'REPEAT.DONE' will output a 'STOP' or 'OUTPUT'
instruction that will be executed in the caller's context.
The macro-defining commands have names starting with a dot because
macros are an advanced feature of Logo; it's easy to get in trouble by
defining a macro that doesn't terminate, or by failing to construct the
instruction list properly.
Lisp users should note that Logo macros are _not_ special forms. That
is, the inputs to the macro are evaluated normally, as they would be for
any other Logo procedure. It's only the output from the macro that's
handled unusually.
Here's another example:
.macro localmake :name :value
output (list "local ~
word "" :name ~
"apply ~
""make ~
(list :name :value))
end
It's used this way:
to try
localmake "garply "hello
print :garply
end
'LOCALMAKE' outputs the list
[local "garply apply "make [garply hello]]
The reason for the use of 'APPLY' is to avoid having to decide whether
or not the second input to 'MAKE' requires a quotation mark before it.
(In this case it would -- 'MAKE "GARPLY "HELLO' -- but the quotation
mark would be wrong if the value were a list.)
It's often convenient to use the ` function to construct the instruction
list:
.macro localmake :name :value
op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
end
On the other hand, ` is pretty slow, since it's tree recursive and
written in Logo.
*Note TO:: , *note DEFINE:: , *note APPLY:: , *note STOP:: , *note
OUTPUT:: .
* Menu:
* dDEFMACRO::
* MACROP::
* MACROEXPAND::
File: ucblogo.info, Node: dDEFMACRO, Next: MACROP, Prev: dMACRO, Up: MACROS
.defmacro
---------
*Note dMACRO:: .
File: ucblogo.info, Node: MACROP, Next: MACROEXPAND, Prev: dDEFMACRO, Up: MACROS
macrop
------
MACROP name
MACRO? name
outputs 'TRUE' if its input is the name of a macro.
File: ucblogo.info, Node: MACROEXPAND, Prev: MACROP, Up: MACROS
macroexpand
-----------
MACROEXPAND expr (library procedure)
takes as its input a Logo expression that invokes a macro (that is, one
that begins with the name of a macro) and outputs the the Logo
expression into which the macro would translate the input expression.
.macro localmake :name :value
op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
end
? show macroexpand [localmake "pi 3.14159]
[local "pi apply "make [pi 3.14159]]
File: ucblogo.info, Node: ERROR PROCESSING, Next: SPECIAL VARIABLES, Prev: MACROS, Up: Top
10 Error Processing
*******************
* Menu:
* ERROR CODES::
If an error occurs, Logo takes the following steps. First, if there is
an available variable named 'ERRACT', Logo takes its value as an
instructionlist and runs the instructions. The operation 'ERROR' may be
used within the instructions (once) to examine the error condition. If
the instructionlist invokes 'PAUSE', the error message is printed before
the pause happens. Certain errors are "recoverable"; for one of those
errors, if the instructionlist outputs a value, that value is used in
place of the expression that caused the error. (If 'ERRACT' invokes
'PAUSE' and the user then invokes 'CONTINUE' with an input, that input
becomes the output from 'PAUSE' and therefore the output from the
'ERRACT' instructionlist.)
It is possible for an 'ERRACT' instructionlist to produce an
inappropriate value or no value where one is needed. As a result, the
same error condition could recur forever because of this mechanism. To
avoid that danger, if the same error condition occurs twice in a row
from an 'ERRACT' instructionlist without user interaction, the message
'Erract loop' is printed and control returns to toplevel. "Without user
interaction" means that if 'ERRACT' invokes 'PAUSE' and the user
provides an incorrect value, this loop prevention mechanism does not
take effect and the user gets to try again.
During the running of the 'ERRACT' instructionlist, 'ERRACT' is locally
unbound, so an error in the 'ERRACT' instructions themselves will not
cause a loop. In particular, an error during a pause will not cause a
pause-within-a-pause unless the user reassigns the value '[PAUSE]' to
'ERRACT' during the pause. But such an error will not return to
toplevel; it will remain within the original pause loop.
If there is no available 'ERRACT' value, Logo handles the error by
generating an internal THROW "ERROR. (A user program can also generate
an error condition deliberately by invoking 'THROW'.) If this throw is
not caught by a CATCH "ERROR in the user program, it is eventually
caught either by the toplevel instruction loop or by a pause loop, which
prints the error message. An invocation of CATCH "ERROR in a user
program locally unbinds 'ERRACT', so the effect is that whichever of
'ERRACT' and CATCH "ERROR is more local will take precedence.
If a floating point overflow occurs during an arithmetic operation, or a
two-input mathematical function (like 'POWER') is invoked with an
illegal combination of inputs, the 'doesn't like' message refers to the
second operand, but should be taken as meaning the combination.
*Note ERRACT:: , *note THROW:: , *note ERROR:: , *note CATCH:: , *note
PAUSE:: , *note CONTINUE:: .
File: ucblogo.info, Node: ERROR CODES, Prev: ERROR PROCESSING, Up: ERROR PROCESSING
10.1 Error Codes
================
Here are the numeric codes that appear as the first member of the list
output by 'ERROR' when an error is caught, with the corresponding
messages. Some messages may have two different codes depending on
whether or not the error is recoverable (that is, a substitute value can
be provided through the 'ERRACT' mechanism) in the specific context.
Some messages are warnings rather than errors; these will not be caught.
Errors 0 and 32 are so bad that Logo exits immediately.
0 Fatal internal error (can't be caught)
1 Out of memory
2 Stack overflow
3 Turtle out of bounds
4 PROC doesn't like DATUM as input (not recoverable)
5 PROC didn't output to PROC
6 Not enough inputs to PROC
7 proc doesn't like datum as input (recoverable)
8 Too much inside ()'s
9 You don't say what to do with DATUM
10 ')' not found
11 VAR has no value
12 Unexpected ')'
13 I don't know how to PROC (recoverable)
14 Can't find catch tag for THROWTAG
15 PROC is already defined
16 Stopped
17 Already dribbling
18 File system error
19 Assuming you mean IFELSE, not IF (warning only)
20 VAR shadowed by local in procedure call (warning only)
21 Throw "Error
22 PROC is a primitive
23 Can't use TO inside a procedure
24 I don't know how to PROC (not recoverable)
25 IFTRUE/IFFALSE without TEST
26 Unexpected ']'
27 Unexpected '}'
28 Couldn't initialize graphics
29 Macro returned VALUE instead of a list
30 You don't say what to do with VALUE
31 Can only use STOP or OUTPUT inside a procedure
32 APPLY doesn't like BADTHING as input
33 END inside multi-line instruction
34 Really out of memory (can't be caught)
35 user-generated error message (THROW "ERROR MESSAGE)
36 END inside multi-line instruction
37 Bad default expression for optional input: EXPR
38 Can't use OUTPUT or STOP inside RUNRESULT
39 Assuming you meant 'FD 100', not FD100 (or similar)
40 I can't open file FILENAME
41 File FILENAME already open
42 File FILENAME not open
43 Runlist [EXPR EXPR] has more than one expression.
File: ucblogo.info, Node: SPECIAL VARIABLES, Next: INTERNATIONALIZATION, Prev: ERROR PROCESSING, Up: Top
11 Special Variables
********************
Logo takes special action if any of the following variable names exists.
They follow the normal scoping rules, so a procedure can locally set one
of them to limit the scope of its effect. Initially, no variables exist
except for 'ALLOWGETSET', 'CASEIGNOREDP', and 'UNBURYONEDIT', which are
'TRUE' and buried.
* Menu:
* ALLOWGETSET::
* BUTTONACT::
* CASEIGNOREDP::
* COMMANDLINE::
* ERRACT::
* FULLPRINTP::
* KEYACT::
* LOADNOISILY::
* PRINTDEPTHLIMIT::
* PRINTWIDTHLIMIT::
* REDEFP::
* STARTUP::
* UNBURYONEDIT::
* USEALTERNATENAMES::
* LOGOVERSION::
* LOGOPLATFORM::
File: ucblogo.info, Node: ALLOWGETSET, Next: BUTTONACT, Prev: SPECIAL VARIABLES, Up: SPECIAL VARIABLES
allowgetset
===========
ALLOWGETSET (variable)
if 'TRUE', indicates that an attempt to use a procedure that doesn't
exist should be taken as an implicit getter or setter procedure (setter
if the first three letters of the name are 'SET') for a variable of the
same name (without the 'SET' if appropriate).
* Menu:
* BUTTONACT::
* CASEIGNOREDP::
* COMMANDLINE::
* ERRACT::
* FULLPRINTP::
* KEYACT::
* LOADNOISILY::
* PRINTDEPTHLIMIT::
* PRINTWIDTHLIMIT::
* REDEFP::
* STARTUP::
* UNBURYONEDIT::
* USEALTERNATENAMES::
* LOGOVERSION::
* LOGOPLATFORM::
File: ucblogo.info, Node: BUTTONACT, Next: CASEIGNOREDP, Prev: ALLOWGETSET, Up: SPECIAL VARIABLES
buttonact
---------
BUTTONACT (variable)
if nonempty, should be an instruction list that will be evaluated
whenever a mouse button is pressed. Note that the user may have
released the button before the instructions are evaluated. 'BUTTON'
will still output which button was most recently pressed. 'CLICKPOS'
will output the position of the mouse cursor at the moment the button
was pressed; this may be different from 'MOUSEPOS' if the user moves the
mouse after clicking.
Note that it's possible for the user to press a button during the
evaluation of the instruction list. If this would confuse your program,
prevent it by temporarily setting 'BUTTONACT' to the empty list. One
easy way to do that is the following:
make "buttonact [button.action]
to button.action [:buttonact []]
... ; whatever you want the button to do
end
File: ucblogo.info, Node: CASEIGNOREDP, Next: COMMANDLINE, Prev: BUTTONACT, Up: SPECIAL VARIABLES
caseignoredp
------------
CASEIGNOREDP (variable)
if 'TRUE', indicates that lower case and upper case letters should be
considered equal by 'EQUALP', 'BEFOREP', 'MEMBERP', etc. Logo initially
makes this variable 'TRUE', and buries it.
*Note EQUALP:: , *note BEFOREP:: , *note MEMBERP:: .
File: ucblogo.info, Node: COMMANDLINE, Next: ERRACT, Prev: CASEIGNOREDP, Up: SPECIAL VARIABLES
commandline
-----------
COMMANDLINE (variable)
contains any text appearing after a hyphen on the command line used to
start Logo.
File: ucblogo.info, Node: ERRACT, Next: FULLPRINTP, Prev: COMMANDLINE, Up: SPECIAL VARIABLES
erract
------
ERRACT (variable)
an instructionlist that will be run in the event of an error. Typically
has the value '[PAUSE]' to allow interactive debugging.
*Note PAUSE:: .
File: ucblogo.info, Node: FULLPRINTP, Next: KEYACT, Prev: ERRACT, Up: SPECIAL VARIABLES
fullprintp
----------
FULLPRINTP (variable)
if 'TRUE', then words that were created using backslash or vertical bar
(to include characters that would otherwise not be treated as part of a
word) are printed with the backslashes or vertical bars shown, so that
the printed result could be re-read by Logo to produce the same value.
If FULLPRINTP is 'TRUE' then the empty word (however it was created)
prints as '||'. (Otherwise it prints as nothing at all.)
File: ucblogo.info, Node: KEYACT, Next: LOADNOISILY, Prev: FULLPRINTP, Up: SPECIAL VARIABLES
keyact
------
KEYACT (variable)
if nonempty, should be an instruction list that will be evaluated
whenever a key is pressed on the keyboard. The instruction list can use
'READCHAR' to find out what key was pressed. Note that only keys that
produce characters qualify; pressing 'SHIFT' or 'CONTROL' alone will not
cause 'KEYACT' to be evaluated.
Note that it's possible for the user to press a key during the
evaluation of the instruction list. If this would confuse your program,
prevent it by temporarily setting 'KEYACT' to the empty list. One easy
way to do that is the following:
make "keyact [key.action]
to key.action [:keyact []]
... ; whatever you want the key to do
end
File: ucblogo.info, Node: LOADNOISILY, Next: PRINTDEPTHLIMIT, Prev: KEYACT, Up: SPECIAL VARIABLES
loadnoisily
-----------
LOADNOISILY (variable)
if 'TRUE', prints the names of procedures defined when loading from a
file (including the temporary file made by 'EDIT').
*Note EDIT:: .
File: ucblogo.info, Node: PRINTDEPTHLIMIT, Next: PRINTWIDTHLIMIT, Prev: LOADNOISILY, Up: SPECIAL VARIABLES
printdepthlimit
---------------
PRINTDEPTHLIMIT (variable)
if a nonnegative integer, indicates the maximum depth of sublist
structure that will be printed by 'PRINT', etc.
*Note PRINT:: .
File: ucblogo.info, Node: PRINTWIDTHLIMIT, Next: REDEFP, Prev: PRINTDEPTHLIMIT, Up: SPECIAL VARIABLES
printwidthlimit
---------------
PRINTWIDTHLIMIT (variable)
if a nonnegative integer, indicates the maximum number of members in any
one list that will be printed by 'PRINT', etc.
*Note PRINT:: .
File: ucblogo.info, Node: REDEFP, Next: STARTUP, Prev: PRINTWIDTHLIMIT, Up: SPECIAL VARIABLES
redefp
------
REDEFP (variable)
if 'TRUE', allows primitives to be erased ('ERASE') or redefined
('COPYDEF').
*Note ERASE:: , *note COPYDEF:: .
File: ucblogo.info, Node: STARTUP, Next: UNBURYONEDIT, Prev: REDEFP, Up: SPECIAL VARIABLES
startup
-------
STARTUP (variable)
if assigned a list value in a file loaded by 'LOAD', that value is run
as an instructionlist after the loading.
*Note LOAD:: .
File: ucblogo.info, Node: UNBURYONEDIT, Next: USEALTERNATENAMES, Prev: STARTUP, Up: SPECIAL VARIABLES
unburyonedit
------------
UNBURYONEDIT (variable)
if 'TRUE', causes any procedure defined during 'EDIT' or 'LOAD' to be
unburied, so that it will be saved by a later 'SAVE'. Files that want
to define and bury procedures must do it in that order.
*Note EDIT:: , *Note LOAD:: , *Note SAVE:: .
File: ucblogo.info, Node: USEALTERNATENAMES, Next: LOGOVERSION, Prev: UNBURYONEDIT, Up: SPECIAL VARIABLES
usealternatenames
-----------------
USEALTERNATENAMES (variable)
if 'TRUE', causes Logo to generate non-English words (from the
'Messages' file) instead of 'TRUE', 'FALSE', 'END', etc.
Logo provides the following buried variables that can be used by
programs:
File: ucblogo.info, Node: LOGOVERSION, Next: LOGOPLATFORM, Prev: USEALTERNATENAMES, Up: SPECIAL VARIABLES
logoversion
-----------
LOGOVERSION (variable)
a real number indicating the Logo version number, e.g., 5.5
File: ucblogo.info, Node: LOGOPLATFORM, Prev: LOGOVERSION, Up: SPECIAL VARIABLES
logoplatform
------------
LOGOPLATFORM (variable)
one of the following words: 'wxWidgets', 'X11', 'Windows', or
'Unix-nographics'.
File: ucblogo.info, Node: INTERNATIONALIZATION, Next: INDEX, Prev: SPECIAL VARIABLES, Up: Top
12 Internationalization
***********************
Berkeley Logo has limited support for non-English-speaking users. Alas,
there is no Unicode support, and high-bit-on ASCII codes work in some
contexts but not others.
If you want to translate Berkeley Logo for use with another language,
there are three main things you have to do:
1. Primitive names
2. Error (and other) messages
3. Documentation
For primitive names, the easiest thing is to provide a startup file that
defines aliases for the English primitive names, using 'COPYDEF':
COPYDEF "AVANT "FORWARD
This should take care of it, unless your language's name for one
primitive is spelled like the English name of a different primitive. In
that case you have to turn 'REDEFP' on and be sure to copy the
non-conflicting name before overwriting the conflicting one!
"Primitives" that are actually in the Logo library, of course, can just
be replaced or augmented with native-language-named Logo procedures and
filenames.
Of course Logo programs will still not look like your native language if
the word order is dramatically different, especially if you don't put
verbs before their objects.
For error messages, there is a file named 'Messages' in the 'logolib'
directory with texts of messages, one per line. You can replace this
with a file for your own language. Do not add, delete, or reorder
lines; Logo finds messages by line number. The sequences '%p', '%s',
and '%t' in these messages represent variable parts of the message and
should not be translated. (%p 'PRINT's the variable part, while %s
'SHOW's it - that is, the difference is about whether or not brackets
are shown surrounding a list. %t means that the variable part is a C
text string rather than a Logo object.) If you want to change the order
of two variable parts (no reorderable message has more than two), you
would for example replace the line
%p doesn't like %s as input
with
%+s is a lousy input to %p
The plus sign tells the message printer to reverse the order; you must
reverse the order of %p and %s, if both are used, to match. The plus
sign goes just after the first percent sign in the message, which might
not be at the beginning of the line. The sequence '\n' in a message
represents a newline; don't be fooled into thinking that the 'n' is part
of the following word.
Some messages appear twice in the file; this isn't a mistake. The two
spaces before 'to' in 'I don't know how\ \ to' aren't a mistake either.
The message containing just '%p' is for user-provided error messages in
'THROW "ERROR'. The message "'\ \ in %s\n%s'" is the part of all error
messages that indicates where the error occurred if it was inside a
procedure; you might want to change the word 'in' to your language.
'%s defined\n' is what 'LOAD' prints for each procedure defined if the
variable 'LOADNOISILY' is 'TRUE'. "'to %p\nend\n\n'" is what 'EDIT'
puts in the temporary file if you ask to edit a procedure that isn't
already defined.
Also in the 'Messages' file are lines containing only one word each; the
first of these is the word 'true'. Some of these words are recognized
by Logo in user input; some are generated by Logo; some are both. For
example, the words 'TRUE' and 'FALSE' are recognized as Boolean values
by 'IF' and 'IFELSE', and are also generated by Logo as outputs from the
primitive predicates such as 'EQUALP'. The word 'END' is recognized as
the end of a procedure definition, and may be generated when Logo
reconstructs a procedure body for 'PO' or 'EDIT'. I've used capital
letters in this paragraph for easier reading, but the words in the
'Messages' file should be in lower case.
If you replace these with non-English words, Logo will _recognize_ both
the English names and your alternate names. For example, if you replace
the word 'true' with 'vrai' then Logo will understand both of these:
IF "TRUE [PRINT "YES]
IF "VRAI [PRINT "YES]
The variable 'UseAlternateNames' determines whether Logo will _generate_
other-language names - for example, whether predicate functions return
the other-language alternates for 'TRUE' and 'FALSE'. This variable is
'FALSE' by default, meaning that the English words will be generated.
You might wish to have English-named predicate functions generate
English 'TRUE' and 'FALSE', while other-language-named predicates
generate the alternate words. This can be done by leaving
'UseAlternateNames' false, and instead of defining the other-language
predicates with 'COPYDEF', do it this way:
to french.boolean :bool
if equalp :bool "true [output "vrai]
if equalp :bool "false [output "faux]
output :bool ; shouldn't happen
end
to make.french.predicate :french :english :arity
define :french `[[[inputs] ,[:arity]]
[output french.boolean
apply ,[word "" :english] :inputs]]
end
? make.french.predicate "egal? "equal? 2
? pr egal? 3 4
faux
? pr egal? 4 4
vrai
? pr equal? 3 4
false
? pr equal? 4 4
true
The third input to 'make.french.predicate' is the number of inputs that
the predicate expects. This solution isn't quite perfect because the
infix predicates ('=', '<', '>') will still output in English. If you
want them to generate alternate-language words, set 'UseAlternateNames'
to 'TRUE' instead.
Some of the words in this section of the 'Messages' file are names of
Logo primitives ('OUTPUT', 'STOP', 'GOTO', 'TAG', 'IF', 'IFELSE', 'TO',
'.MACRO'). To translate these names, you must use 'COPYDEF' as
described earlier, in addition to changing the names in 'Messages'. You
should be consistent in these two steps. Don't forget the period in
'.macro'!
For documentation, there are two kinds: this manual and the help files.
The latter are generated automatically from this manual if you have a
Unix system, so in that case you need only translate this manual,
maintaining the format. (The automatic helpfile generator notices
things like capital letters, tabs, hyphens, and equal signs at the
beginnings of lines.) The program 'makefile.c' may require modification
because a few of the primitive names are special cases (e.g., 'LOG10' is
the only name with digits included).
If you don't have Unix tools, you can just translate each helpfile
individually. A period in a primitive name is represented as a 'D' in
the filename; there are no files for question marks because the 'HELP'
command looks for the file named after the corresponding primitive that
ends in 'P'.
File: ucblogo.info, Node: INDEX, Prev: INTERNATIONALIZATION, Up: Top
INDEX
*****
[index ]
* Menu:
* *: PRODUCT. (line 6)
* +: SUM. (line 6)
* -: DIFFERENCE. (line 6)
* .defmacro: dMACRO. (line 6)
* .eq: dEQ. (line 6)
* .macro: dMACRO. (line 6)
* .maybeoutput: dMAYBEOUTPUT. (line 6)
* .setbf: dSETBF. (line 6)
* .setfirst: dSETFIRST. (line 6)
* .setitem: dSETITEM. (line 6)
* .setsegmentsize: .SETSEGMENTSIZE. (line 6)
* /: QUOTIENT. (line 6)
* <: LESSP. (line 6)
* <=: LESSEQUALP. (line 6)
* <>: NOTEQUALP. (line 6)
* =: EQUALP. (line 6)
* >: GREATERP. (line 6)
* >=: GREATEREQUALP. (line 6)
* ': back-quote. (line 6)
* allopen: ALLOPEN. (line 6)
* AllowGetSet: GETTER/SETTER VARIBLE SYNTAX.
(line 127)
* allowgetset: ALLOWGETSET. (line 6)
* and: AND. (line 6)
* apply: APPLY. (line 6)
* arc: ARC. (line 6)
* arctan: ARCTAN. (line 6)
* arity: ARITY. (line 6)
* array: ARRAY. (line 6)
* array?: ARRAYP. (line 6)
* arrayp: ARRAYP. (line 6)
* arraytolist: ARRAYTOLIST. (line 6)
* ascii: ASCII. (line 6)
* ashift: ASHIFT. (line 6)
* back: BACK. (line 6)
* background: BACKGROUND. (line 6)
* before?: BEFOREP. (line 6)
* beforep: BEFOREP. (line 6)
* bf: BUTFIRST. (line 6)
* bfs: BUTFIRSTS. (line 6)
* bg: BACKGROUND. (line 6)
* bitand: BITAND. (line 6)
* bitnot: BITNOT. (line 6)
* bitor: BITOR. (line 6)
* bitxor: BITXOR. (line 6)
* bk: BACK. (line 6)
* bl: BUTLAST. (line 6)
* buried: BURIED. (line 6)
* buried?: BURIEDP. (line 6)
* buriedp: BURIEDP. (line 6)
* bury: BURY. (line 6)
* buryall: BURYALL. (line 6)
* buryname: BURYNAME. (line 6)
* butfirst: BUTFIRST. (line 6)
* butfirsts: BUTFIRSTS. (line 6)
* butlast: BUTLAST. (line 6)
* button: BUTTON. (line 6)
* button?: BUTTONP. (line 6)
* buttonact: BUTTONACT. (line 6)
* buttonp: BUTTONP. (line 6)
* bye: BYE. (line 6)
* cascade: CASCADE. (line 6)
* cascade.2: CASCADEd2. (line 6)
* case: CASE. (line 6)
* case-insensitive: TOKENIZATION. (line 10)
* caseignoredp: CASEIGNOREDP. (line 6)
* catch: CATCH. (line 6)
* char: CHAR. (line 6)
* clean: CLEAN. (line 6)
* clearscreen: CLEARSCREEN. (line 6)
* cleartext: CLEARTEXT. (line 6)
* clickpos: CLICKPOS. (line 6)
* close: CLOSE. (line 6)
* closeall: CLOSEALL. (line 6)
* co: CONTINUE. (line 6)
* combine: COMBINE. (line 6)
* commandline: COMMANDLINE. (line 6)
* comments: TOKENIZATION. (line 10)
* Computer_Science_Logo_Style: OVERVIEW. (line 6)
* cond: COND. (line 6)
* contents: CONTENTS. (line 6)
* continue: CONTINUE. (line 6)
* copydef: COPYDEF. (line 6)
* Copyright: OVERVIEW. (line 6)
* cos: COS. (line 6)
* count: COUNT. (line 6)
* crossmap: CROSSMAP. (line 6)
* cs: CLEARSCREEN. (line 6)
* cslsload: CSLSLOAD. (line 6)
* ct: CLEARTEXT. (line 6)
* cursor: CURSOR. (line 6)
* decreasefont: INCREASEFONT. (line 6)
* define: DEFINE. (line 6)
* defined?: DEFINEDP. (line 6)
* definedp: DEFINEDP. (line 6)
* delimiters: TOKENIZATION. (line 10)
* dequeue: DEQUEUE. (line 6)
* difference: DIFFERENCE. (line 6)
* do.until: DOdUNTIL. (line 6)
* do.while: DOdWHILE. (line 6)
* dribble: DRIBBLE. (line 6)
* ed: EDIT. (line 6)
* edall: EDALL. (line 6)
* edit: EDIT. (line 6)
* editfile: EDITFILE. (line 6)
* editor: EDIT. (line 6)
* edn: EDN. (line 6)
* edns: EDNS. (line 6)
* edpl: EDPL. (line 6)
* edpls: EDPLS. (line 6)
* edps: EDPS. (line 6)
* empty?: EMPTYP. (line 6)
* emptyp: EMPTYP. (line 6)
* eof?: EOFP. (line 6)
* eofp: EOFP. (line 6)
* epspict: EPSPICT. (line 6)
* equal?: EQUALP. (line 6)
* equalp: EQUALP. (line 6)
* er: ERASE. (line 6)
* erall: ERALL. (line 6)
* erase: ERASE. (line 6)
* erasefile: ERASEFILE. (line 6)
* erf: ERASEFILE. (line 6)
* ern: ERN. (line 6)
* erns: ERNS. (line 6)
* erpl: ERPL. (line 6)
* erpls: ERPLS. (line 6)
* erps: ERPS. (line 6)
* erract: ERRACT. (line 6)
* error: ERROR. (line 6)
* errors: ERROR CODES. (line 6)
* exp: EXP. (line 6)
* fd: FORWARD. (line 6)
* fence: FENCE. (line 6)
* file?: FILEP. (line 6)
* filep: FILEP. (line 6)
* fill: FILL. (line 6)
* filled: FILLED. (line 6)
* filter: FILTER. (line 6)
* find: FIND. (line 6)
* first: FIRST. (line 6)
* firsts: FIRSTS. (line 6)
* font: FONT. (line 6)
* for: FOR. (line 6)
* foreach: FOREACH. (line 6)
* forever: FOREVER. (line 6)
* form: FORM. (line 6)
* forward: FORWARD. (line 6)
* fput: FPUT. (line 6)
* fs: FULLSCREEN. (line 6)
* fullprintp: FULLPRINTP. (line 6)
* fullscreen: FULLSCREEN. (line 6)
* fulltext: FULLTEXT. (line 6)
* gc: GC. (line 6)
* gensym: GENSYM. (line 6)
* getter: GETTER/SETTER VARIBLE SYNTAX.
(line 6)
* global: GLOBAL. (line 6)
* goto: GOTO. (line 6)
* gprop: GPROP. (line 6)
* greater?: GREATERP. (line 6)
* greaterequal?: GREATEREQUALP. (line 6)
* greaterequalp: GREATEREQUALP. (line 6)
* greaterp: GREATERP. (line 6)
* heading: HEADING. (line 6)
* help: HELP. (line 6)
* hideturtle: HIDETURTLE. (line 6)
* home: HOME. (line 6)
* ht: HIDETURTLE. (line 6)
* if: IF. (line 6)
* ifelse: IFELSE. (line 6)
* iff: IFFALSE. (line 6)
* iffalse: IFFALSE. (line 6)
* ift: IFTRUE. (line 6)
* iftrue: IFTRUE. (line 6)
* ignore: IGNORE. (line 6)
* increasefont: INCREASEFONT. (line 6)
* int: INT. (line 6)
* invoke: INVOKE. (line 6)
* iseq: ISEQ. (line 6)
* item: ITEM. (line 6)
* key?: KEYP. (line 6)
* keyact: KEYACT. (line 6)
* keyp: KEYP. (line 6)
* label: LABEL. (line 6)
* labelsize: LABELSIZE. (line 6)
* last: LAST. (line 6)
* leaving ucblogo: ENTERING AND LEAVING LOGO.
(line 6)
* left: LEFT. (line 6)
* less?: LESSP. (line 6)
* lessequal?: LESSEQUALP. (line 6)
* lessequalp: LESSEQUALP. (line 6)
* lessp: LESSP. (line 6)
* line-continuation: TOKENIZATION. (line 10)
* list: LIST. (line 6)
* list?: LISTP. (line 6)
* listp: LISTP. (line 6)
* listtoarray: LISTTOARRAY. (line 6)
* ln: LN. (line 6)
* load: LOAD. (line 6)
* loadnoisily: LOADNOISILY. (line 6)
* loadpict: LOADPICT. (line 6)
* local: LOCAL. (line 6)
* localmake: LOCALMAKE. (line 6)
* log10: LOG10. (line 6)
* logohelp: HELP. (line 6)
* logoplatform: LOGOPLATFORM. (line 6)
* logoversion: LOGOVERSION. (line 6)
* lowercase: LOWERCASE. (line 6)
* lput: LPUT. (line 6)
* lshift: LSHIFT. (line 6)
* lt: LEFT. (line 6)
* macro?: MACROP. (line 6)
* macroexpand: MACROEXPAND. (line 6)
* macrop: MACROP. (line 6)
* make: MAKE. (line 6)
* map: MAP. (line 6)
* map.se: MAPdSE. (line 6)
* mdarray: MDARRAY. (line 6)
* mditem: MDITEM. (line 6)
* mdsetitem: MDSETITEM. (line 6)
* member: MEMBER. (line 6)
* member?: MEMBERP. (line 6)
* memberp: MEMBERP. (line 6)
* minus: MINUS. (line 6)
* modulo: MODULO. (line 6)
* mousepos: MOUSEPOS. (line 6)
* name: NAME. (line 6)
* name?: NAMEP. (line 6)
* namelist: NAMELIST. (line 6)
* namep: NAMEP. (line 6)
* names: NAMES. (line 6)
* nodes: NODES. (line 6)
* nodribble: NODRIBBLE. (line 6)
* norefresh: NOREFRESH. (line 6)
* not: NOT. (line 6)
* notequal?: NOTEQUALP. (line 6)
* notequalp: NOTEQUALP. (line 6)
* number?: NUMBERP. (line 6)
* numberp: NUMBERP. (line 6)
* op: OUTPUT. (line 6)
* openappend: OPENAPPEND. (line 6)
* openread: OPENREAD. (line 6)
* openupdate: OPENUPDATE. (line 6)
* openwrite: OPENWRITE. (line 6)
* or: OR. (line 6)
* output: OUTPUT. (line 6)
* palette: PALETTE. (line 6)
* parse: PARSE. (line 6)
* pause: PAUSE. (line 6)
* pc: PENCOLOR. (line 6)
* pd: PENDOWN. (line 6)
* pe: PENERASE. (line 6)
* pen: PEN. (line 6)
* pencolor: PENCOLOR. (line 6)
* pendown: PENDOWN. (line 6)
* pendown?: PENDOWNP. (line 6)
* pendownp: PENDOWNP. (line 6)
* penerase: PENERASE. (line 6)
* penmode: PENMODE. (line 6)
* penpaint: PENPAINT. (line 6)
* penpattern: PENSIZE. (line 6)
* penreverse: PENREVERSE. (line 6)
* pensize: PENSIZE. (line 6)
* penup: PENUP. (line 6)
* pick: PICK. (line 6)
* plist: PLIST. (line 6)
* plist?: PLISTP. (line 6)
* plistp: PLISTP. (line 6)
* plists: PLISTS. (line 6)
* pllist: PLLIST. (line 6)
* po: PO. (line 6)
* poall: POALL. (line 6)
* pon: PON. (line 6)
* pons: PONS. (line 6)
* pop: POP. (line 6)
* popl: POPL. (line 6)
* popls: POPLS. (line 6)
* pops: POPS. (line 6)
* pos: POS. (line 6)
* pot: POT. (line 6)
* pots: POTS. (line 6)
* power: POWER. (line 6)
* pprop: PPROP. (line 6)
* ppt: PENPAINT. (line 6)
* pr: PRINT. (line 6)
* prefix: PREFIX. (line 6)
* primitive?: PRIMITIVEP. (line 6)
* primitivep: PRIMITIVEP. (line 6)
* primitives: PRIMITIVES. (line 6)
* print: PRINT. (line 6)
* printdepthlimit: PRINTDEPTHLIMIT. (line 6)
* printout: PO. (line 6)
* printwidthlimit: PRINTWIDTHLIMIT. (line 6)
* procedure?: PROCEDUREP. (line 6)
* procedurep: PROCEDUREP. (line 6)
* procedures: PROCEDURES. (line 6)
* product: PRODUCT. (line 6)
* pu: PENUP. (line 6)
* push: PUSH. (line 6)
* px: PENREVERSE. (line 6)
* queue: QUEUE. (line 6)
* quoted: QUOTED. (line 6)
* quotient: QUOTIENT. (line 6)
* radarctan: RADARCTAN. (line 6)
* radcos: RADCOS. (line 6)
* radsin: RADSIN. (line 6)
* random: RANDOM. (line 6)
* rawascii: RAWASCII. (line 6)
* rc: READCHAR. (line 6)
* rcs: READCHARS. (line 6)
* readchar: READCHAR. (line 6)
* readchars: READCHARS. (line 6)
* reader: READER. (line 6)
* readlist: READLIST. (line 6)
* readpos: READPOS. (line 6)
* readrawline: READRAWLINE. (line 6)
* readword: READWORD. (line 6)
* redefp: REDEFP. (line 6)
* reduce: REDUCE. (line 6)
* refresh: REFRESH. (line 6)
* remainder: REMAINDER. (line 6)
* remdup: REMDUP. (line 6)
* remove: REMOVE. (line 6)
* remprop: REMPROP. (line 6)
* repcount: REPCOUNT. (line 6)
* repeat: REPEAT. (line 6)
* rerandom: RERANDOM. (line 6)
* reverse: REVERSE. (line 6)
* right: RIGHT. (line 6)
* rl: READLIST. (line 6)
* round: ROUND. (line 6)
* rseq: RSEQ. (line 6)
* rt: RIGHT. (line 6)
* run: RUN. (line 6)
* runparse: RUNPARSE. (line 6)
* runparsing: TOKENIZATION. (line 10)
* runresult: RUNRESULT. (line 6)
* rw: READWORD. (line 6)
* save: SAVE. (line 6)
* savel: SAVEL. (line 6)
* savepict: SAVEPICT. (line 6)
* screenmode: SCREENMODE. (line 6)
* scrunch: SCRUNCH. (line 6)
* scrunch.dat: SETSCRUNCH. (line 6)
* se: SENTENCE. (line 6)
* sentence: SENTENCE. (line 6)
* setbackground: SETBACKGROUND. (line 6)
* setbg: SETBACKGROUND. (line 6)
* setcslsloc: SETCSLSLOC. (line 6)
* setcursor: SETCURSOR. (line 6)
* seteditor: SETEDITOR. (line 6)
* setfont: SETFONT. (line 6)
* seth: SETHEADING. (line 6)
* setheading: SETHEADING. (line 6)
* sethelploc: SETHELPLOC. (line 6)
* setitem: SETITEM. (line 6)
* setlabelheight: SETLABELHEIGHT. (line 6)
* setlibloc: SETLIBLOC. (line 6)
* setmargins: SETMARGINS. (line 6)
* setpalette: SETPALETTE. (line 6)
* setpc: SETPENCOLOR. (line 6)
* setpen: SETPEN. (line 6)
* setpencolor: SETPENCOLOR. (line 6)
* setpenpattern: SETPENPATTERN. (line 6)
* setpensize: SETPENSIZE. (line 6)
* setpos: SETPOS. (line 6)
* setprefix: SETPREFIX. (line 6)
* setread: SETREAD. (line 6)
* setreadpos: SETREADPOS. (line 6)
* setscrunch: SETSCRUNCH. (line 6)
* settc: SETTEXTCOLOR. (line 6)
* settemploc: SETTEMPLOC. (line 6)
* setter: GETTER/SETTER VARIBLE SYNTAX.
(line 6)
* settextcolor: SETTEXTCOLOR. (line 6)
* settextsize: SETTEXTSIZE. (line 6)
* setwrite: SETWRITE. (line 6)
* setwritepos: SETWRITEPOS. (line 6)
* setx: SETX. (line 6)
* setxy: SETXY. (line 6)
* sety: SETY. (line 6)
* shell: SHELL. (line 6)
* show: SHOW. (line 6)
* shown?: SHOWNP. (line 6)
* shownp: SHOWNP. (line 6)
* showturtle: SHOWTURTLE. (line 6)
* sin: SIN. (line 6)
* splitscreen: SPLITSCREEN. (line 6)
* sqrt: SQRT. (line 6)
* ss: SPLITSCREEN. (line 6)
* st: SHOWTURTLE. (line 6)
* standout: STANDOUT. (line 6)
* starting ucblogo: ENTERING AND LEAVING LOGO.
(line 6)
* startup: STARTUP. (line 6)
* step: STEP. (line 6)
* stepped: STEPPED. (line 6)
* stepped?: STEPPEDP. (line 6)
* steppedp: STEPPEDP. (line 6)
* stop: STOP. (line 6)
* substring?: SUBSTRINGP. (line 6)
* substringp: SUBSTRINGP. (line 6)
* sum: SUM. (line 6)
* tag: TAG. (line 6)
* temp: EDIT. (line 6)
* template: TEMPLATE-BASED ITERATION.
(line 6)
* test: TEST. (line 6)
* text: TEXT. (line 6)
* textscreen: TEXTSCREEN. (line 6)
* textsize: TEXTSIZE. (line 6)
* thing: THING. (line 6)
* throw: THROW. (line 6)
* to: TO. (line 6)
* towards: TOWARDS. (line 6)
* trace: TRACE. (line 6)
* traced: TRACED. (line 6)
* traced?: TRACEDP. (line 6)
* tracedp: TRACEDP. (line 6)
* transfer: TRANSFER. (line 6)
* turtlemode: TURTLEMODE. (line 6)
* type: TYPE. (line 6)
* unbury: UNBURY. (line 6)
* unburyall: UNBURYALL. (line 6)
* unburyname: UNBURYNAME. (line 6)
* unburyonedit: UNBURYONEDIT. (line 6)
* unstep: UNSTEP. (line 6)
* until: UNTIL. (line 6)
* untrace: UNTRACE. (line 6)
* uppercase: UPPERCASE. (line 6)
* usealternatenames: USEALTERNATENAMES. (line 6)
* vbarred?: VBARREDP. (line 6)
* vbarredp: VBARREDP. (line 6)
* wait: WAIT. (line 6)
* while: WHILE. (line 6)
* window: WINDOW. (line 6)
* word: WORD. (line 6)
* wordp: WORDP. (line 6)
* wrap: WRAP. (line 6)
* writepos: WRITEPOS. (line 6)
* writer: WRITER. (line 6)
* xcor: XCOR. (line 6)
* ycor: YCOR. (line 6)
Tag Table:
Node: Top78
Node: INTRODUCTION513
Node: OVERVIEW746
Node: GETTER/SETTER VARIBLE SYNTAX2811
Node: ENTERING AND LEAVING LOGO10580
Node: TOKENIZATION14048
Node: DATA STRUCTURE PRIMITIVES19996
Node: CONSTRUCTORS20243
Node: WORD20553
Node: LIST20761
Node: SENTENCE21016
Node: FPUT21380
Node: LPUT21709
Node: ARRAY22064
Node: MDARRAY22778
Node: LISTTOARRAY23263
Node: ARRAYTOLIST23542
Node: COMBINE23854
Node: REVERSE24144
Node: GENSYM24375
Node: SELECTORS24591
Node: FIRST24881
Node: FIRSTS25242
Node: LAST25921
Node: BUTFIRST26164
Node: BUTFIRSTS26497
Node: BUTLAST27107
Node: ITEM27434
Node: MDITEM27862
Node: PICK28101
Node: REMOVE28286
Node: REMDUP28495
Node: QUOTED28809
Node: MUTATORS29028
Node: SETITEM29367
Node: MDSETITEM29682
Node: dSETFIRST29932
Node: dSETBF30459
Node: dSETITEM31043
Node: PUSH31531
Node: POP31908
Node: QUEUE32191
Node: DEQUEUE32570
Node: PREDICATES32856
Node: WORDP33169
Node: LISTP33362
Node: ARRAYP33551
Node: EMPTYP33747
Node: EQUALP33968
Node: NOTEQUALP35000
Node: BEFOREP35318
Node: dEQ35841
Node: MEMBERP36350
Node: SUBSTRINGP36764
Node: NUMBERP37121
Node: VBARREDP37329
Node: QUERIES38114
Node: COUNT38355
Node: ASCII38713
Node: RAWASCII39109
Node: CHAR39455
Node: MEMBER39690
Node: LOWERCASE40137
Node: UPPERCASE40379
Node: STANDOUT40623
Node: PARSE41787
Node: RUNPARSE42132
Node: COMMUNICATION42500
Node: TRANSMITTERS42717
Node: PRINT44349
Node: TYPE44873
Node: SHOW46072
Node: RECEIVERS46338
Node: READLIST46557
Node: READWORD47250
Node: READRAWLINE48038
Node: READCHAR48637
Node: READCHARS49258
Node: SHELL49902
Node: FILE ACCESS51332
Node: SETPREFIX51758
Node: PREFIX52466
Node: OPENREAD52668
Node: OPENWRITE52908
Node: OPENAPPEND53966
Node: OPENUPDATE54300
Node: CLOSE55024
Node: ALLOPEN55341
Node: CLOSEALL55585
Node: ERASEFILE55840
Node: DRIBBLE56084
Node: NODRIBBLE56610
Node: SETREAD56818
Node: SETWRITE57365
Node: READER58845
Node: WRITER59065
Node: SETREADPOS59287
Node: SETWRITEPOS59742
Node: READPOS60196
Node: WRITEPOS60380
Node: EOFP60561
Node: FILEP60791
Node: TERMINAL ACCESS61038
Node: KEYP61322
Node: CLEARTEXT62029
Node: SETCURSOR62202
Node: CURSOR62636
Node: SETMARGINS63018
Node: SETTEXTCOLOR63916
Node: INCREASEFONT65141
Node: SETTEXTSIZE65461
Node: TEXTSIZE66117
Node: SETFONT66461
Node: FONT66895
Node: ARITHMETIC67065
Node: NUMERIC OPERATIONS67311
Node: SUM67706
Node: DIFFERENCE67919
Node: MINUS68298
Node: PRODUCT68760
Node: QUOTIENT68982
Node: REMAINDER69476
Node: MODULO69748
Node: INT70006
Node: ROUND70315
Node: SQRT70473
Node: POWER70653
Node: EXP70859
Node: LOG1071015
Node: LN71172
Node: SIN71321
Node: RADSIN71492
Node: COS71673
Node: RADCOS71850
Node: ARCTAN72036
Node: RADARCTAN72353
Node: ISEQ72754
Node: RSEQ73036
Node: NUMERIC PREDICATES73366
Node: LESSP73595
Node: GREATERP73842
Node: LESSEQUALP74096
Node: GREATEREQUALP74367
Node: RANDOM NUMBERS74636
Node: RANDOM74823
Node: RERANDOM75384
Node: PRINT FORMATTING75946
Node: FORM76122
Node: BITWISE OPERATIONS76886
Node: BITAND77099
Node: BITOR77352
Node: BITXOR77587
Node: BITNOT77836
Node: ASHIFT78040
Node: LSHIFT78328
Node: LOGICAL OPERATIONS78593
Node: AND78764
Node: OR79579
Node: NOT80343
Node: GRAPHICS80625
Node: TURTLE MOTION82989
Node: FORWARD83253
Node: BACK83511
Node: LEFT83794
Node: RIGHT84022
Node: SETPOS84248
Node: SETXY84493
Node: SETX84732
Node: SETY84971
Node: SETHEADING85211
Node: HOME85492
Node: ARC85728
Node: TURTLE MOTION QUERIES86025
Node: POS86273
Node: XCOR86488
Node: YCOR86669
Node: HEADING86854
Node: TOWARDS87032
Node: SCRUNCH87318
Node: TURTLE AND WINDOW CONTROL87631
Node: SHOWTURTLE88059
Node: HIDETURTLE88260
Node: CLEAN88588
Node: CLEARSCREEN88861
Node: WRAP89150
Node: WINDOW89695
Node: FENCE90224
Node: FILL90611
Node: FILLED90962
Node: LABEL91492
Node: SETLABELHEIGHT91740
Node: TEXTSCREEN92453
Node: FULLSCREEN92857
Node: SPLITSCREEN93657
Node: SETSCRUNCH94059
Node: REFRESH95093
Node: NOREFRESH95462
Node: TURTLE AND WINDOW QUERIES95957
Node: SHOWNP96223
Node: SCREENMODE96547
Node: TURTLEMODE96795
Node: LABELSIZE97030
Node: PEN AND BACKGROUND CONTROL97580
Node: PENDOWN98438
Node: PENUP98660
Node: PENPAINT98856
Node: PENERASE99058
Node: PENREVERSE99281
Node: SETPENCOLOR99582
Node: SETPALETTE100371
Node: SETPENSIZE100910
Node: SETPENPATTERN101309
Node: SETPEN101613
Node: SETBACKGROUND101988
Node: PEN QUERIES102304
Node: PENDOWNP102560
Node: PENMODE102757
Node: PENCOLOR103005
Node: PALETTE103694
Node: PENSIZE103990
Node: PEN104357
Node: BACKGROUND104630
Node: SAVING AND LOADING PICTURES104877
Node: SAVEPICT105105
Node: LOADPICT105653
Node: EPSPICT106057
Node: MOUSE QUERIES106615
Node: MOUSEPOS106806
Node: CLICKPOS107351
Node: BUTTONP107671
Node: BUTTON108026
Node: WORKSPACE MANAGEMENT108435
Node: PROCEDURE DEFINITION108759
Node: TO109007
Node: DEFINE112888
Node: TEXT113839
Node: FULLTEXT114303
Node: COPYDEF115146
Node: VARIABLE DEFINITION115739
Node: MAKE115990
Node: NAME116386
Node: LOCAL116597
Node: LOCALMAKE117302
Node: THING117604
Node: GLOBAL118033
Node: PROPERTY LISTS118685
Node: PPROP119552
Node: GPROP119790
Node: REMPROP120045
Node: PLIST120269
Node: WORKSPACE PREDICATES120676
Node: PROCEDUREP120928
Node: PRIMITIVEP121167
Node: DEFINEDP121527
Node: NAMEP121785
Node: PLISTP121982
Node: WORKSPACE QUERIES122362
Node: CONTENTS122932
Node: BURIED123273
Node: TRACED123470
Node: STEPPED123666
Node: PROCEDURES123870
Node: PRIMITIVES124237
Node: NAMES124590
Node: PLISTS124862
Node: NAMELIST125154
Node: PLLIST125551
Node: ARITY125960
Node: NODES126326
Node: WORKSPACE INSPECTION127226
Node: PO127496
Node: POALL127792
Node: POPS128036
Node: PONS128314
Node: POPLS128581
Node: PON128863
Node: POPL129155
Node: POT129447
Node: POTS129834
Node: WORKSPACE CONTROL130085
Node: ERASE130689
Node: ERALL131060
Node: ERPS131314
Node: ERNS131552
Node: ERPLS131780
Node: ERN132016
Node: ERPL132324
Node: BURY132634
Node: BURYALL133178
Node: BURYNAME133419
Node: UNBURY133693
Node: UNBURYALL134007
Node: UNBURYNAME134222
Node: BURIEDP134511
Node: TRACE135018
Node: UNTRACE135592
Node: TRACEDP135778
Node: STEP136281
Node: UNSTEP136830
Node: STEPPEDP137013
Node: EDIT137523
Node: EDITFILE139160
Node: EDALL140014
Node: EDPS140212
Node: EDNS140422
Node: EDPLS140622
Node: EDN140826
Node: EDPL141070
Node: SAVE141310
Node: SAVEL142022
Node: LOAD142313
Node: CSLSLOAD143082
Node: HELP143388
Node: SETEDITOR144266
Node: SETLIBLOC144555
Node: SETCSLSLOC145001
Node: SETHELPLOC145339
Node: SETTEMPLOC145684
Node: GC146051
Node: .SETSEGMENTSIZE147102
Node: CONTROL STRUCTURES147725
Node: CONTROL147922
Node: RUN149408
Node: RUNRESULT149691
Node: REPEAT150186
Node: FOREVER150378
Node: REPCOUNT150677
Node: IF151126
Node: IFELSE152029
Node: TEST152444
Node: IFTRUE152843
Node: IFFALSE153146
Node: STOP153469
Node: OUTPUT153756
Node: CATCH154135
Node: THROW155259
Node: ERROR156965
Node: PAUSE157489
Node: CONTINUE158449
Node: WAIT159004
Node: BYE159341
Node: dMAYBEOUTPUT159503
Node: GOTO160451
Node: TAG160766
Node: IGNORE161037
Node: back-quote161295
Node: FOR162727
Node: DOdWHILE164309
Node: WHILE164757
Node: DOdUNTIL165197
Node: UNTIL165648
Node: CASE166085
Node: COND167015
Node: TEMPLATE-BASED ITERATION168170
Node: APPLY172712
Node: INVOKE173202
Node: FOREACH173535
Node: MAP174650
Node: MAPdSE176005
Node: FILTER177302
Node: FIND178462
Node: REDUCE179465
Node: CROSSMAP181017
Ref: CROSSMAP-Footnote-1182076
Node: CASCADE182114
Node: CASCADEd2184967
Node: TRANSFER185317
Node: MACROS186232
Node: dMACRO186412
Node: dDEFMACRO191554
Node: MACROP191676
Node: MACROEXPAND191867
Node: ERROR PROCESSING192417
Node: ERROR CODES195241
Node: SPECIAL VARIABLES197619
Node: ALLOWGETSET198346
Node: BUTTONACT199041
Node: CASEIGNOREDP200036
Node: COMMANDLINE200470
Node: ERRACT200741
Node: FULLPRINTP201064
Node: KEYACT201654
Node: LOADNOISILY202498
Node: PRINTDEPTHLIMIT202828
Node: PRINTWIDTHLIMIT203167
Node: REDEFP203508
Node: STARTUP203799
Node: UNBURYONEDIT204104
Node: USEALTERNATENAMES204541
Node: LOGOVERSION204927
Node: LOGOPLATFORM205189
Node: INTERNATIONALIZATION205449
Node: INDEX212116
End Tag Table
ucblogo-6.1/docs/usermanual.ps 0000664 0001750 0001750 00003415442 13601426467 014610 0 ustar jjc jjc %!PS-Adobe-2.0
%%Creator: dvips(k) 5.999 Copyright 2019 Radical Eye Software
%%Title: usermanual.dvi
%%CreationDate: Fri Dec 27 16:11:35 2019
%%Pages: 115
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: CMBX12 CMR10 CMR12 CMMI12 CMMI10 CMSY10 CMSL10 CMTT10
%%+ CMB10 CMSLTT10 CMTI10 CMR7 CMSL9 CMR9 CMMI9 CMTT9
%%DocumentPaperSizes: Letter
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -t letter -o usermanual.ps usermanual.dvi
%DVIPSParameters: dpi=600
%DVIPSSource: TeX output 2019.12.27:0911
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: texps.pro 0 0
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end
%%EndProcSet
%%BeginFont: CMTT9
%!PS-AdobeFont-1.0: CMTT9 003.002
%%Title: CMTT9
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMTT9.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMTT9 def
/FontBBox {-6 -233 542 698 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def
/FullName (CMTT9) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 43 /plus put
dup 60 /less put
dup 62 /greater put
dup 98 /b put
dup 99 /c put
dup 103 /g put
dup 108 /l put
dup 111 /o put
dup 117 /u put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
097C4995B60BF4D8B3AFD0A002B3A6E4FA114131410D5658999B86DFDD3005F3
AED1FA8F077AD1F27EA249221585703F20FB70E37A26C6C3F2E101693C94612B
65BF89F37AA3C10A40EE8E49915F1A1B95D2193D8003DECEF9D76FDAA33B1AA9
CEDCB21C2A3B05747FB3ABDBD904B66EEC60CED2867442F5FE445587EB8BAC34
2210D5B0ED5550C4B54109A1B5D3696111A1457BE695A3CF1A5C16878D44BE38
107E327EC40A072AD969B0353ACDECB582C109585F829065A21C707F25D57644
5C5771F654CF59FB94240B438B67BF12069B6B063B65B26A95C303BCF8989ED9
DCB3811DC9FC88ECB05B7F242C7967523F4E4CF388F7FD97FD9C3E748326E043
DB30B8626F521129838A88FCC0B568A662516CF7768DDE321B4A1404AD2D82F3
5A9C76632524E10B9B8390F72AB65858B8D950BE71C11CF910DBFC410EB93102
9F830D6E1DD28E26476D6CDDDDD8EBC7EDA8813D1F6877E8C3FCDE9A87AEFF93
8F1585CE08A335C78209EB9E1FDD6F24DDE1B93E15F0C048B3B82124C17D03A2
CB0C622F1010138DDF4B00C68121CEFE9C3B78054031CFCC48E9CA3297D009A0
14365E96559B6BBFB5B95B278A956D013FB0402EF23E5CBAB8C8E2EDEB93A3C9
C22B1AA5893120EA0A3D50695150D9A6EF272147AD1239CD0AE4755F85F73190
CD9051FB1788F3A64774A5557CDFAA2C458E4193B1ED1F1B193702C91F8D54CB
A6BB0D352F43A51F77174A2D513AB0AD5D98FA69DB8A0FC1C4981B8A622BF268
D53A04DFC941386ACFD9964BADD9B063AF92ADF9EFA24BD00538BFBA9053DA6D
0B9BADA1CB0959C55126C6D6D23DBBBE9BC79149B669D65CDA66BD47E8760EA5
528F180FFD8CD36D4F8F2B9D9934118D99D3662E2B6095D68100549B7AD0E0CA
002AD074821B07F48A56ABD3413647050F2BF20692904961CBFDC6A54607B10B
859012C7D9D5F69CCBDCFEF7350B57B40492AB591C0FC47B1D40345732AA8077
D5590065F4E85078CF54BDE4E6E97DCC0ECD38A8DBAC8FAE031AEFF80AF69D18
C3161F6AB96C71CE7CE759D6CB582825C69082C5125937F5662F97BDC23F79A0
DF017FA1C37C1DF476F519873F9D89D5017BBBAAE1919F37E3D3A08F9F359C70
AE82C86CDB9D11C76D67C18ECACE07E04F58D4EEBF5647C1C594814694CB758F
7A5D85D20287E5C02E9EFF76E63BCBDA2E1337054628E59888AC5533E92C7365
1E42F6101B5EC48CB15C642A32CE3E3A13996EFED98F0D54D93AB30D8C5FF72F
04980B4BB0B5039E85EA4FBCB984296CE16732A9573D63C7A34DBDD73B5BD6CB
4C31E2E134442B83AC6AC766D367B40C3ED40C5269E12333B277BFDE0C1999A2
AFE89EEC651ED7C8B230B8D1FD5EC0F46288FE5392F646D96A9EE512A08B7D89
087E0749B630145979848BC10EAA3EA115A4675883DB16F8AF3BBD3AED582B65
B59509DBB77237A31B170380031A3B1A5CD0753A5164F46878CDDF4854B7A778
4DADC81320EC69505C03FB315C87B1F1A776E1292D64967F8DCF791F0AE33819
0C4805EB88F88024A7D648A4E2A1943472B4BFE9D55C7BDBC36CBBFF215EE6BB
F0728C19B50DB45966A9F6C2FDA05851E3BB008CE9172C12E483B5F8E2CBD84A
8BA22214FBA6F5F1A3BA3C5D3D413E1A1B9D15CE9E65C27D8E4C30DA8E4B7826
812D486796624B2E8465D9934CFB9DCD2C6042060FAF6D1D838788FB703B542C
89E503135E00AE34388264E105E8DFB7D09C3DBA0C5ED7FF1B2BB8C5F1273FBE
F073AF1149BECA1C82E27BC1386B98A6A72BE86EFCD9F29DCA362FB14D72CC6D
506D60EA52A269718C90DD4E8AE6D420332A757F95BEA13478EBEAC439ECC46F
DC03815FD28E46480B0DD907FBDD83AB72558BAFDBF5D5D5D4CC9C31054B7A1C
3DAB4B11FFB91C7D1869B5068BB6624907B272F97C4C07AA902032BDA74CD7B4
16A5FFF5C1E7E514EB445A0C445E036E0122DC24CC9E8B36A776F8F032BF38BF
ADFD97A3F8888745D656CEF0F53E29BAEEEDDAFFF66151A9CDE4D1937762C4B6
BCD0B783F77B0C9503F69F59CE95F945AFAD4E0C300074C8FC709274C1929537
725749609D06F9521F77703F5130EC073F6788CA053DD0D52D8E6888B43DAD48
6432C71A2B352116FD4FB624140BA1506DEE4CBF91C020E3C05F75
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMMI9
%!PS-AdobeFont-1.0: CMMI9 003.002
%%Title: CMMI9
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMMI9.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup
/UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMMI9 def
/FontBBox {-29 -250 1075 750 }readonly def
/PaintType 0 def
/FontInfo 10 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI9.) readonly def
/FullName (CMMI9) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
/ascent 750 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 58 /period put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB
7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67
7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8
BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365
82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC
E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74
91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E
540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112
7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8
93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D
EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756
972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A
6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149
796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94
DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B
D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80
E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D
0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83
F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9
ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97
72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F
F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9
4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1
692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C
BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109
4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1
CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59
41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A
9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20
5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292
2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5
8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B
33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28
03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1
749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE
CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE
3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F
64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F
90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05
DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8
F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D
4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF
49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4
E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117
58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE
88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3
B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE
7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776
01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46
19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41
194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55
53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3
F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4
412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6
C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC
C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108
4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831
E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81
AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF
00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A
E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91
C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC
B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8
2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980
F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50
0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023
28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4
E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A
C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42
20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B
7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE
5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4
74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4
90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55
3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621
98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066
54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7
93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC
19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A
9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD
E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84
A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB
107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA
5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08
22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95
B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D
403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789
D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6
20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6
943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33
AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F
A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70
B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA
2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84
2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F
E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D
E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F
8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642
87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4
2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842
D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC
512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4
4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559
6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9
9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A
0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040
9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B
FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1
430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8
56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE
718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3
F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE
95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B
EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE
6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7
6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867
630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111
6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA
89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475
3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2
90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47
38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34
EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9
B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376
9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9
1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF
1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C
62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5
84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2
AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618
D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196
BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6
4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6
531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24
FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2
43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256
D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6
0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4
E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53
DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358
99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD
8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1
8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73
A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5
362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3
C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79
E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2
07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F
0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6
190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4
5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D
F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50
005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8
6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C
D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9
F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087
F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE
2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752
F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0
0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD
73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2
62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79
5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98
F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F
6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7
DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109
EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222
E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107
536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18
36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF
B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3
F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0
431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900
5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C
074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78
E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77
2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600
324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F
FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMR9
%!PS-AdobeFont-1.0: CMR9 003.002
%%Title: CMR9
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMR9.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup
/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR9 def
/FontBBox {-39 -250 1036 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR9.) readonly def
/FullName (CMR9) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 42 /asterisk put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 61 /equal put
dup 63 /question put
dup 65 /A put
dup 67 /C put
dup 71 /G put
dup 76 /L put
dup 83 /S put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340
15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E
ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4
B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029
85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C
DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955
F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D
2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5
B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7
78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7
E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3
41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277
B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072
55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA
700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9
8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A
F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4
FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4
3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15
B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2
AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013
461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC
CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85
CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C
4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F
291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223
D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181
C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115
D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9
9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405
2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380
A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB
2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E
2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6
AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577
9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB
B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67
0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D
9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B
42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0
C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35
623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6
B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4
E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97
CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D
07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7
53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350
EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9
52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88
F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC
D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3
81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D
B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6
B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A
31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF
E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293
846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733
46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E
44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08
A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A
BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5
1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4
D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344
6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A
E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E
24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E
75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D
EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51
C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0
5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034
099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281
7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE
53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84
7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F
7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C
D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933
CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD
866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B
B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826
ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B
B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64
FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B
40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643
D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8
2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787
39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2
1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4
F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9
253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B
14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085
6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E
E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B
9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E
EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339
FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F
289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3
A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5
5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46
5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652
152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE
67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3
BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59
3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88
713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF
2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5
D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143
6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB
A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9
F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95
26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A
C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970
350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700
70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5
F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95
F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8
9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2
DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473
F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D
064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF
1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325
A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E
E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF
01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C
40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C
72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645
24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1
EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775
D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311
83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483
5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448
1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69
AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC
4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3
7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9
65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063
B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6
FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6
4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490
8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6
1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3
10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B
C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4
8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A
C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0
7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F
852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C
3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997
648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD
855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE
1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C
1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0
B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7
D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99
24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C
552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733
6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0
800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8
6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659
E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4
5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2
00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F
E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4
82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7
6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3
128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D
744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507
84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF
AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86
5D22CE175F9E50FA2301ADBCFAAB2B89B8917307766C4D228198F718DBA1B2E4
BBB59748043483206B2C87D3A6A95880E47C868308F390EBB8A2F7925D14E782
6F40A532E02978A494F370A732947755C8CC6FDD9F7092778849B9887820EF5F
67871FAD992447F76CF16F85D0A04140B7A29CE125D733D197D58FD4186D335B
DBD88456EC1A698AFBEE2418D715F0A4CFADC0E9D88F83AF8B6CA0AF8A510C59
E63798EB43CAD793E287BF3CAD7E8CAE1E9BB5F52171A78D4463B995CF637964
5825941C8B7E1B1408619FCA686B5792D720974ED9249ECE9FE8FCC567D66582
903C00361D3E72B158C3AD92707D0FA8D6ACE4E66AFD3916267CE37DAD4D1373
D818CE3F6952EAB0E1C9F7328D9A2C4EC787117853336A14E258D14211E2100A
636C28C34EF07F0E59BABCD25E48D57FC896D57DFFCF445C5F8015B05CBC1E06
3BBCEB0ED5F63317937B6E3D5ED2A177CAAC366A85E33B1D60649626A1EAC051
CAF959945AC0B31D21C930C20A2C4EB6B7D7B2A078E2140075279B962D6D0A0E
E253AC638B9D0E758FCD57D9685EE33312C1A0A5CF1762F57C0C7236EF014B54
7DB1B8C3CE37A262AD69A31F5A1E4C2BCF7C4310523B30CCA645B8DA15419438
C2D541657DC32658E7F14C18F6048F3DFBBE365542B2411B2B72CF35172C6264
534AC64D3DEB13D303AF97D51A071EC797D611DC571CD4A5E4B308CFF0F78CF2
8A475ED04DCCE94CB6A54B5D27A8719A0B094E42D3B5FA1D967E96405E690437
6F9F1F155B7FA0873D8AF3D270825B0EF286176436B0B820176667500E587821
56ED77373459669911695E73E63BF4D510C4E7701979B23EF39FD99184A9408D
68E3D41F7F57F05CEF384408644F205FF751E5D6FBE61E3F311D919EECDB4F31
F756461AD5DA5910521533282982BFCF345E03E778E246B3B724F052F2CA575F
D9D3E3D30AC17A26B475E05C704BD74D1D01F18E577035FF3493BD3612697568
EA0D83DDD7E1D83FAE2FDECFF5AFC8ADB38BEDA28D35D73282D4F1F9A15C4403
B7C69C7DD0C608DE99FEE68796482566340746AE5C0A6C9F3D11C444DB6BEC4C
F3670414C2A7245444DD74DFBBA2160A55193E29D6D60714F18E68A97DBD6005
F4BDAE5FDE71C4B9090C87F63042A37E8F77BEB36A2E98DD78E2EC22A2130727
C28079F6A3B511988F94FCA110EC6C53602434BF4C310532D16EAA27D6698E8B
721D263A0B11C7D838FBEAA161792D77986A9D6CC09F8424A127C4A31F098233
4E7A923E67C7B4AE7B8AEDDC17BD74D054CBDAE8152EDC442E9ADA41D438ABBB
26B25B523D8694507F2248F649117CA18CA40F45FAA766E2FA55FBEF47F851BD
9183426FAC81E5336F5D8D9742DCC1369B201B4DA7CEAB1DDDDE85C4E0C47FC8
30F224182D3C59603B9AED05B97DD06C993D12D566927F29AB2440EB92A6A824
1D7FAD7672DA246C481A75226FC30DE2682CCEB4FDE1275728AF9156CBD1433A
4AB019CCD756FC47DEAE51534A8DB46016B0548AF522549852EFA94867E63CC0
3ED3A5C17C70BBC9515DBB6667A5D2F37229EEC652612CE1B974CA7BE2405309
6A1DCF2D6B62DFBC35987EC5FCFCE134936AC7C49676D3326F01080F241EA8BD
1E7D62E428A3895B80C589BF9525E6588D3D2FA727910ABAF5108036BAE35A09
6057B47F7788095820D3C9EF826C2CABEFDC3B5E213AE7C4ADD622E4C0AC7BC4
A507719FBFD066BEBF80A5D81CC2AE21BE2B99735B8D97F7A25142F698F4B47A
CEC34F01DE7F278B4BFC7BA7ACE348CE799D3BFF11CD94CFFC8AF0A6EC543FB7
5D1649D0A7A3AE2DDCA9D8DFCC07E2FBB9C4A68DC3887E0A00795C37141E2C35
22DC637479D3849AF17E0D79D0F6E08CB53D454000CB7A404F8786EC7357E67F
692A507E9D9856B6E5B9BF421E82C137E1F28BD5C658D024E6575D804D542B9E
1FDD366E1A6DF13E9D0DD75DBBECE3D63C883D519A826B246A0A2F8510DBCDD2
B76FC45D40CFEC0BABA78B91B5C01229AF428F3F75B7A3095E862E1E5DC6F39C
3E36157A223C06F87F30465B40B3FE91A166DE2DD3774D903024217DA6C56E25
1D40D59342EACF7F0F039C12D8CCF516AA58ED351621C368BA40F4B9E6455261
765317BD77C0842991601FA203AE3415AEEA37E86909CDFD42FEB80EE19EBFF0
D3BDE9B4FB0A540610BDB59FC4EFF8586BC529911DFFB6FA3628B1EB9E085C90
1D9F3B89CE8CA2F28C335202490169EBA332D051E15344DE683298529202F18C
584BF5F2330AFCE8FF92E2DF9B35F469AC8E15247FADD310C58FC911D294EE7E
91E866841763FCCB8CF7909488B3C1295FB343D52859CE320C6B0B3E6E3EA6EF
0DE68E1B1121A3693BBEE1AFA053BFC357952138D5AE6D9A725012689A9AEFAE
AD65E7F5D1FC332C16C8D21C2640DC6BE3179B50B077DFD0DD1901FB57909918
D07EA763A0BF731B73836E6207CAABEED9DA54E2E47F4AA44281D48EF2B51849
E9DE6485CD320984F6AB0F628E6B995EB81344A5E312766C0B33052E169F1309
E56D6F9F6A8B4E34F9BAD50E1C9875B73F1C4845B171784E274122AB056C8263
2A309D4E49F37A7E46F76221C76058EEC75AC30A07E898452AE1EA4DFFEDE5C3
BB23007D06E2AD2EAEC84A3320379E4617257DB42AD345D26AFB16A8B78CF2FF
ECC694D26DF8E1BF01A9449A0575448924C19DB2E80E179662AC7B986B4B41AE
303D7F47D3352C5B67BF906EF4C27E9A892221DA44DACAA262C73A0257B98EE2
8D390F3F22044C5B843B6CFD084CC92CA7343C7BB6AD93B953F7F57E5E59EE02
AAB8F3961B0B0E5F2DB3B4AFD3E23F2C1AF5CA9FF85C1F32681F61A1E123C36F
61CAD763BE8CD0CB7716D6AF6E1A71D16FB180584CB2DE91604E47D78706C0B4
995021060EF03AA03F1D6B27D11AE246058999849FB4BC68BE034E8FB6733B03
5BD042D0E5D3B585946474143A2FD98E1E99CBAEBD8D89692DCB088C97B2F73C
50E85D9F06B5A77EC3D07B2FCC0EA0A36D0F0DE1E33F5EF3BC0A123A43B3E0F7
FF7E18CFA7C1D643F777E936D8EC9413AF96A27F0746ADD7AFB243AFE878B12D
A6296EA3D611A35876961EB8AD8A29161B825CC6F4F07C4CC838EFA3CA2888B2
42AD01BE691BC90F8D8B202B06FFB4B0C84E1E772F704E8D66BBDCDC8E568F5E
38B3132CD91BBF6AD81898EE92E7E8B632B0D940859ECE2B16859B7A9EB5C17F
DCCE331D9A35DB1FE9ECCA7AC696EFA22DFD59A9F69834C7F2E3F702783B9E9A
4CE27289A1D2B25A5BDE466FD2A82BFE3FD02463ED1E34AE9BD94DCA24C86739
4240477AAC467412C6A48414E0444D17175C2AC443E7A2CE4797535171FF0DE2
D62CC2DC88CF096461E1A77F54F9FB92456202A456326374B044F382E4ECE78E
F9B765C32C5472DD088CDEBED85D05C3F1DFF4A610607C1CB11E7150A05C0330
263370B333587FD49F9BA75EF9454D781854D461B2681AAC16ACDE52AD043E3D
BA420E0226F933754D5C04F9E865B717FE5176BB73C0DA6476DA9D20F340B21D
5EEC463FC122F799DB3829D9EFB19CE237570AD52B9285CB496CD0A05E56E704
1BCC3590E981C86230DFA113634153D0B8D900D860EAE1442BB94C81E9A5098F
B1BA065CAB9859B53682D50E48E25FD08D3531157C3752D28836CFE45EEFC71A
B4A6056F2CD233FBA5D57BEC2E9782DEBE7F1C6277C4939D8595AAE5B24C7D60
8EF7AFB8C434D6EEE36095F1483A343F7151F4E37271016EEACAFAE4B8CD685D
56E8DA0CA59B596CD431460FF025B716B7C2E52A3E457F8F6F13BC6F762AFBE3
5307847599B02E5AFAC09E43C3913675BF7D7299BC7F3730E9B8C369A2359A62
52EB56D06253248491D4A463094635F4BA237A0B4D74566E8A3461546FCAE5D8
97C6C07D083CC30B6B4E982275486D807BE4F93FBD867F6450A14A0CB7B47854
90AC19703529D7818DB9C230C73B74C434FDEDF1533E67926C208BAE6108B9A4
61462F841C697CAD64DADCC8647BF4EC0ADBB33C7A0EEBEC27CF641C2F05595B
5DD4A0D98B5D1B079A62E8EBD91B97605F4FB8D0AF595B424F58F203135B358B
325347B39037DC654967D55ABBBFD1DFDCFB8508833D6C8C230069291C19AE37
C73182DFF94E764249CDBCABF5403FD25CF9DDD089436C5FED1BC62458BC3F3A
7F1765CBF1F6FF004D037459C5A95040F06BA80192BACBBC497DCBC23ABFEA08
878C96AE215BE167083176AA5E0CD4A1030E4DB93709FFA1FCEEE53FECFD5544
304783D571450F7FE5E47861CF9C7A8DF2888F8ED12FF9921EF174A1024982C5
0DF05D4C2FECB74802BE2032721BD823A776679888E45C5AC2A1424DE222BADA
8050DEEA928A8E7977678E247A9413093258E2250EDE4DCE7032BE3FE592EC4C
4D527FFF68F5AB4E365F99A4641DC84303331B5256A5504DBA6B65E3D76B2077
EA99F57D0B4640C0F5E0FE47D7D23007AE4FB148C2223854B74AB097E568DFC5
4AA7FAF03D6C47F4AA203C35E4FB58C5BA1C4F674EF7F1E8F14229A637DD7D3C
31F6EAD24B5240F36A044A9EF731E464904DAECD8C7BC97889565DEC55D62D9E
422827DA4A006BD99EAF4C3A66A541DFA748986C94A3509B36C32F13B22B86AE
5DA40DB760684294DEFCF9ACFE18EC04CBF2DE60CEC18CC7FCFA5019C0A9C1A6
B6C63E19B0285AE8378878B8C08B957165C3011775E98EE72B525F30DCAC46ED
F35C8246B2B4D1A301E7278AFE22FB06061AE48AFF2E1C3DF99DF428C6383ABA
92D910DFDBD9A4991AD228A10EE174C4943C531F089644681ADBE03E1637A6FB
6053ADB5F082D7C684D5878DF2C8A326B049BAF9F0DEE2CA37562D52A6ABE618
E68F353F17B7CFFAA60A01DC92EF20C4D928513B44BCB66D98A23C9B63A2AE0E
61F20296524B7D1B5B090B4B43841DF1C4E7903E25861D107060E22A267AE180
DD286FECDAEAE17699CC86669259677A648AB1C0F18A2D802690F8BA1296AEEA
4E9638AC9C30DDE73F38BEB21A0076B12322EC98B39FE602978591CDEE11BFB7
F299B5369F2292FDEE2EFC9E96A6739CD30962885295470934B2500881C0CD30
C40A5084AFA8A975DB06DB081CB51F96F84E342606389EFF2626C684911A1F15
7315F7F0792561C97980857A03E60F3FBE538ACBE0953EEB54A8A514CF0FFEC9
4ECDAA1DCAC6355EB45A5E211170396ABBF4BA4BCEB33CA807836361DB4ADB8C
CA177D68BD6F326C24A776A19EE67574DD1BC7155BC690A42C69FCD6E2D1BC41
1C2CB7ECF4F42688F43EBB03298F8D9BE1F86894C94CF52088F5883886B8861D
3E8065FACF4DD72E0DDFD8FEF4CCC1023A53FDECD4997A9ADE5E232C9EE20156
1F7093DD7916E4CADCF2F157EB1662963564B1A7B4B302311EC2454E723F21F0
5E21A663ACB5D4A4023D1D180CB41D37431D40CE27A90F6D1B95B282BDB8880B
1E41059B0FE4937B0E337AE9556C3DA967DB1DD77AEF8D321EE3C35F24530470
23C2ED5757BBF99DED4260327C46458721C371A6CAFE5EB75C879AE2404C65C5
85352351438EE9A0369D9D425DEC1A19958CBD921949AB9B848A1AC7F57C7CDC
2CCA8E76782334080EB10D95217E1C733B4F34B13D99E42A652159E372DF28BB
7DB8ACE2FAF02F9EC8259248DF2DEC362A207AC9958C871189F90F92F535891A
BAECE0C5BF4FE6AAB3C3ED5F129822F8936EDB6E34570F8DFB05A4CC6D2D8A22
E030752FC63E65DD947AD71CAD4076DD5FB801EB61C32DC5FEC584C18FB104B9
75CD26C2A6214FA4AFAC55075074DD7896BC92D30D57949D3234D19B99359591
A1F97B11CAE04C49E21AEC0F48BC7E27925D094EF342274BE8BF5ED1A7ED8287
CE82FE0A8AB4ED4565B530C2683C32A61BD7EE32D5366069FC68CDE6EF866486
37D9362BC73CF628390FE6E360B7166DE96868009112FEF99D87D4BB7339BDB0
0691FF29E8EDE4EE96F7932B15FA39CAC1B617858F923C99CE7A87D42665D0FD
5FFE9EC17CF65934B6382500E12B5C35FC29AE031ABFB34B1FFF88AE0EDF8066
0A26092BCBE4F1426A1E8AE7F80170BD31A8F12DF2559B023B8453BF2F94ACDB
D90AC685CD5DEEB27B3BAF5595AB7C2686C6D83CF422235C6A2E45EE48E711E7
76D8638CB2E6BE585A23B0AED5740858A67432D9EE0B47435337C550CA93A28E
43D769816E791A1AF6626711181A3CFB306741B038B6DEC3B02A231ABCC93362
AF10691ED995ADE83237741AFB803C367E1A2455A00CDE3F4FBDA821EE68DB7C
6953534FA33EA29CBE2AB98C1F877AD361463310B63756F6AC6AD4A5B049CEA8
60126C239A676687B580B23B56D6DCEBC8E892F642884631D77EF9ED302A15B2
1E6F44AD1A3AE19BD656440F2A8B4188B5D3EA8A0F5F793AEE0ADEECFC9147AB
B12C3B6FA8F9F13B21899D8C72270A9A8C0C8B45D8054019604336FC43B313B1
52AC7FFF33C798DF4B4AE5FD8A3CFE761BBCEC62F2451729F4218C5270CA7B1D
32DFFF684B63E7C614B9D76A3D836CC798C2AEC29A61DE50908984ABF886DE99
2599FAAB885371A0C8F67D5C10E6155EC19052E239025111F464A77B7A3D9FB2
5948E2EF71614A3A93D43F24CE28B949E64DC21695A948391ECCA87808F043F5
074A4EC055D3D8768DA28293609D7B55FC8D7DDA1AD21F66C8BE1F88A757EC9B
8FDB08C994CFF4084769BBB927DAAFC971DE8C3BFFB0ADF93B7ADE98EBA1B743
D60A6E6BBFF8BED00162B65A41701CD213D747E753FDB45D2758B21652B17FE0
85009A99020F895FB1DC543715112BFCCF66B40C1450C7E8F75C477F1C06A6BC
B4B6EA39DC0C8D2EC13F4CD5FABB394CEEAC4A96E29FFD980B20AD0E1D5557F4
6356219DE1FE81830D956622BAC320206D92B627C0EBD0C06931B0DBA2CF1BB5
EBF04712F72CB5255DE6200FED72DAA66599B2E8D82E4425A5A6827E27BB63F5
9EF06F5DD146DB9DD8C39FE87899A06172AC6E542433119BB52796F356C872D9
3CF4A080BCA50D68F00ED66EEE9E011B7D5CA43A1FB87548B3D7960786B7C2C8
15C91E0A81384344C7F44789CC04F4D39CE769664A71EE34ABE6036511E93BF6
DABE7C1DD7841A8AECBDA22818B77E7FF5832CEEF775B710119768A161379210
C3B9118289943D8F5965D02E77BD8ACE985EDF38C4EE4C1D6E80F5CDDD79D29A
423E4A8CFD3CCB7EB1B37863A3C1DF818D9B66A8EE2D404286305139BEC2803F
10005084E3BAA010F2F99192987ADB30E59C63A630E0F46B90CB0A68BEBE3BB9
A0BB87774A7B5CA6D43C1CAAFF6290836F21D6FC24F8DB2D16C72CADF17BD524
5A121F453426FDDBBF5BB8BD9E8D148AAEDFFBD334A461C5CF21CED54A756D6C
E17CD95AA1666518D5201DB3E856971047BE2B31183F3B15F8565FE93CCFC440
439800EC2B56D0C814ABF234C5C1E6AB8541E8E65CE2648EA09BAC1D0948A11E
75B54422ACAF3F2EA72AE19526E7E84BAFC7B766F5E0AD64A8A3D9103C2CAD9C
0E3C33BD2AE8ED1A015BCE37E35DE5593B7AE5BCB5C214173FB07E8785D4A4C6
7EFB4ED128F3B200CC4718B969CA59863FFFDB70CE4AAC29AD0609797B0695EB
C6E95791868A325535B60D4EDB97A23CF748890E58CC3455C16C7ADA4B3A9326
5D55C427383DCEB92B1A026DC129C9EBCA7958B63B7D0326EBEA0C52194A829C
B64C3BE8149B359B4D08E5428184583E6FDB06125A8EB5D2B850DCF8ADA49C2F
A21D04020A3D9925F33FD8DDA2B4EB90A29639B4A414139CAE64D0B89CBFAB45
30702408BF13D1EE651E2C31EDD838EBF73691D1C753CA8B9ECB423E668294A2
A2D5586EC14C324761336EA2772E7264A8383D92BC645E528DA69BC8DAAD6197
CB67137E49D6010F255754AE094F5CE636B6836BD079857DE7F7B1544CB87284
140A292FB646DEFBE4A75984993DC52E321A477C3BA40AFE69B70251CD8E2244
C79C6D964B38AE3721095BE9ADAFD38A8FFF003B269C3BCEDA588142C2CB6F9F
2841845CB62FDFE501095876615F4949D3A6A5FD3709CD54322C7A89D11A4CCB
41D5462A17ED85CB5BA4FBC96F212281D50B4AA65669DAE30F0D433DC210A4C8
9BB56A2C3B2CBDAC14BB656CA62F13C22450011A4C5CE149D5D8DC35A2B7DD4C
82768B951AB0A5284A62E66EB0494BC967620AB8B612216AE8A88D733AF4A5F1
16D6A150A5FB347D6F14B65FD457C4AA08AC156968B2CC69626BA3CF6E6C50B3
C139FE73E1C58A786564AB5378513C31CB70AAC674A78342F7D3FBFD48B96B12
C50609E00F7FE01F2C757F532B670F2BD36D54C5B72FAB15AE08EFF7F881A89F
31C8EB0C5538FD38250DE778AE4E3083B132AB509CAB926460F13D315F9F359E
C1A0450A8880E3798F55B98E23B7AD448FDCC3BB55836A5C980F2B9EF2FE3A97
75B5FF571A64B422044572CB04DFF19CD95DF02D7378466CDB23BA00BB20EFD9
C5A910CDA62F28F79D92151601632EE6CDA851C6AAB20A54520E86517D6CD7A0
FAAADF88E8A428003F5A7900984F084AAB5F3D6C039766D67C8C1E9D6C0FD50C
9419B378DD73BDB303C647BFB0C89CD211D3B88BFFDB5D6F0D8C0851C091EE6A
2D4D81F8EBC8FA0DFA507CCEE5926E0AE259D6E2B18C0BF172C1E26DC1660075
6E1722297755097991F3B493F95A78AB96E9EB815F7BF8713B887075C6593399
691AE3D691E90359585A05C7F7249F6965FC230D6A9E8D0CDD79E9D7B542D424
B5C6EB36FFEBBD1DB07D3545AAF8EC2B1DF80EDA533331377533ABA307E49258
348057E9A7D7E209B29277B9C487B60FD25E2EA429B7E1B315CDA539580432E6
75E414DBFA0E21649456474606B11420597D2F40BA5E8EC02A40A0EDAD22B83C
D4BB54DD637AFD2372B53D8069B94B0894C62B71B35CDA184A1DE9A8A0EDDFEC
340EC75D2F544A808A85CC8B5A20D8B523A34449E514689A53A95C83F56D8234
0007808A36602148BE62BC3573919A80A804611785ACA46B1F73DD2E97C7507A
559C8EC03E3978C9AB2F54BB28DBF2D3D90393A06B74122D0ABCA664CA4FF21B
B23CBA831CA64D75586E0C0DD25299BF63401FAAD6286836F7EB228AF2C3C4F0
56B67ED406011DAFEA9E2A2F793F67F6FBE65CBDFC6E0B5CB07D0202A9604D81
503262D1EF2EB0FAA46EA8A60E9B576EBACBDF746FD9ED96299CB1F01760C098
6F31B08221A3F315C215CAC9D57E1053DA25CEC54D235E72229CD146F572C01E
8260B164CEA0CF9C0538AE28FC65618C36AAF14262B1CEBCE890D0386657F098
9EF0301FE23E272FD43D9092421D9FF00D5CC9C85A2A129ACD5474A52CB848AE
ACEC9FAD1B72FFE722E17B32C561AEAD79F4878A3A3A907D4687B167513B0299
73AF8E76E1C321423596A749D87ACF1557D978ABB7A21647AF85E983BCBF573B
8E6602F32B23F174852E4E11613D35D0652888FB4F4936BF6FAEA43166758B90
60C1849E16DE5FD3597D76CC3430D2FC7BF579A538D83E52DE9D9D4EB88D5F9B
A57E3227665750F831E54144A73EA91EFE52B16DE2D8679C5BE332E9D8D20C6A
0B62FF6898CFA6D553B0273869FB2EFA3474EB88B7B1D731CD9F2FED700CE240
AF757A17E181193DAF8A05006BF914F5CE48907DABD5226932DB9AAE21047A73
7338FB3CEE9F499E338CAAADF4901B9AD4B4AC8F01EAF249E2D00B9FBCF1D4E1
41D8613957F26EC53D39CB4211EEBEFB842F2C6D1CD05A55CC0CF08A6AD977CF
4C477C9A21DF2D86AE78BAF04EDA6F132923A29822986A1C68A2D396FF312D4F
70B9DE50303A9B1DFB532DC330EB84C12F96DBE1A790C3A499EE738ABCA2205D
5BF03BDDD9298E4741A57AC86E9B81847AEC4D6B6B2FAD501453CB0CD79B448C
E42EABAE26CC94EE3FCDFCFA84B163C81EB6124C8E847F4A8A3B37BE1524418D
18F970179E758296EBEFDF6BE72BB9BD84771199CB163783E3580AD6943F91AC
5F3822A16E1D495AAAACFBA1E4365EC08CD521596C706CE7D1136224688BC5BB
109154A78C0396EA010B6827328C153504926AA52FEC6F684105F459862E7DDD
ACEA2F4FCDFDEEDE74F077299545B6C7E5BA9FE3F55DD9A2DBCFC092AAAB81CA
EA5D6C6ABE667AD5052F9EC5B021CF164CB3397C539C91F3FD1AFB8E976D161C
ADEC402B77BE69D008A2C126E98B10AC8D7814D1495F4900A6F96D4A390AED7A
453D0A031FEF9FD44CAC2FBD25CBC2F740E3671F30928BCD9B574F1B4387E41C
51B50D38D6B39F3C0B387B74D18AAAF3E14CAEACF98AC83EE560EB65B51FEB90
F487F3B42C2F2D8341B9493EE0CBC712877C4381634F610ACCB0F12229541A09
02AAC38012A35A0D46DF8ECD7CECBE5326DDCDF6382C43B08C569E326D2EAEC5
D3579A09DD98CF344F70299873E3693017848878E250D844CD759BA8492DF710
9BE0F1764A0C11EF72A64BE353AF058FFD4B738E2F56C48F5EF4DC935262D1C3
0CB2C9FCB0690900ED333F530EF1117A0065CC87EFB75994D2A52848630F9B80
9C71C946EB77EDF17D1C3352544B781BDA5CE3B951B00E7FEB4572AFBEF56F25
9B5B8BD2FFD8F645B0F4DBC60B7935F867C7C75F8113A72D96D144947BBCD721
9CC4B8A5D4BEB119EFF6AF6C0E79982836B969ED562FCCC833442E447DBAAD1F
507291CE09F5073D3E6A5E485F32A01F8487932A162C699B706EB439AB6105A4
B270FFD580F203B277CD2A96750FF5129201F8673B57E0F64346574827B1A96F
AE97A18AAA5AEE5A2A17C7CC7ABD33DE297B18374134672947FBE770D2E0EACF
065BBEAD4A9C8E5BCA380365FC3E1B28526DDE6E70598F9B2B5A4CD3C7B3165C
F1D3F8919B9939F98A7DC1CA3EC1322782A4A68A2C7F5371E97E5D8A091E71BE
54E37E90FA02DA599A1F42B8FF3CDB6A3F26F2ADDCE5C70C376B1BB4D62F4087
BB4B573E612239CD67654F0B753FB2DE3C9578CB618727E4F1C34124BE86FBFA
1AA14508BFBA93DF1DB3956833A7734B997CA9CE44BEC6A4FF9E6D4BA6F85907
013C3666129655AA54C7136BB4039EC7452CB6B0129547CE1A11D344DE05502B
4AE58E7D255A41500045B4E8111A6116B899C4C69118A06F4AC6D819088D50C6
C5823DF9225C1EAD06568170AEA6CBCD5BD77B328D1D1187D9726E4EE5CD1E24
214C01E87D8BAFD3A869E3A8E8C9EF9080678B740EBCB649CD3BE25D624CB615
95C6570CE1C58B0F9FB28A3F8A80114932D85162C10DC19F5A964EE38BCF49BF
76C752C6A62EA227DBD6139431C1218CF49884B47271DFA6A8868DCA70C98E50
68D4CF47BC98FE627A89875DBB93664887D1A2329332D6DFDD03A08591599C74
A4673641B23260E82ECFEEDDF1292BC29BAAF0E11FCEF4DB2F577A214CDACE15
D99C4790B47BF42F60D53A6C2EB0393A82D0F40CB2AB5999373B816AC43F2DD7
5D9A23A54768C6FD9C1BE3FE834A3412C3E8DA389992F0D608624CBDFE533616
329BC1F83F4AB9E4495A52B3A6A5CA400197E003CF1FE9242447CFCBC85E1282
24966482B3FD5FC8A46DC37114CEDE5E4FD0B5F1265A3884AF083922C490B3F0
0ABF1E7F2985C05F1C023BEC3CE2BC3E02750BA9A5686944CD08CF32D0ABB37E
882ABE579B32DFEABD76946211DD0113B49B8C3CF494B2A34FF1E267F5AE95E3
5379329665C6D4E69F0096C07BBEEC5AEC2BBAEBE174F2F5F1BDE92E0E573B4E
BD2627EAF77B9F2592BF374E3ECA98FC0541A4B608CF2B60EFEBCF9905274D70
00889FC4854032F89D970FAA56E50F0814A0F165EF3D441DA13412B2B7C3F6A5
CFD71D3290810EDCFA1DC6F6128EECA561A89E4CFC448DB195DC67E5C4FEE96C
8D4DF87F56860B2BF511CF16A81A86CF4FD58FA15DE127003CDC98D60FA2526F
E6B19C2B3A942F6AEA8BAC163D6A2F4077633E55E7835B3F243321CBE7D54AAB
6510F4F5DAD47F4C08C89D530A4C208F1903721CEEA92AED07A2943395F092B2
307C6543F15F070D776E5A51A69342029EDDFFA3A758B620A7D8038D79FF6584
655BB33168A78A70F051333E389F3F3B739D941FC6AF5A5DF5F95A76FB21D6F8
C415D4B5A449079E9FDBF158523A4FD60F4A12976872F5393A0FAE984B071D5C
2DCF85AF530820B7D60B34C5A416B37353F6F6106BE4C0EBCD6F3F1082E2E211
8384C504DB8AC14D42C78CFC4FDC6F0ED07729789760F061BF6066D9A88FAE6A
8B0BEABC39B31E2D566D89BEA2D307965B48FE774D35EFB7F7903BFCDCA5929C
8AFCA1DF612681BF917519B83CEA20120F249FAC32132BEBE9FB89A70F5E9EDD
4E2A01A5DEFA3C815F4EF44DD5BA5E8D84CE5054DAB66874BD67598214066B89
CC52BC795964D20C76343A5A0D2CA6044CF00392FF2CB07BADF65126D444B350
5661CA9E519C6105711007F73F456415D72F3896E090E339FE5C2B36F0EE59AE
224746F3F7BE85935B7FFE957B930DC6FA7B70E7A6723C015F58D49AE0317B3C
B70E5831969AEC18F08724CBA2132049A2D72D2F0BB9018BC9A5E732D92929E4
66683D1DA2DD80683B5B1B60B134AF26B3B9078106D3B3BB6B2FE5966C224CD5
CF9D1BAFFCAD0B4AFBBF88D08CE01C59112E61875F9CD4C8CDC57A0BBC9081B8
DC747944395CBCC7D5D8E03A069F4D50D46AC6F98C3773872C3A9212BEEF7154
66395D45E1A135E448BAB6F027BE02DC41F323519251D7D3DCBA6C92531ED68B
09E5AD04E9C4D658751B9DCB7CB7713788FE3701589F5E4D6B5ADBE9C5032A6D
6E1EA1EB1943367CC7365E7AFEFB34C30F7F77B0D8E0C8EFEECDA5137EF51E50
F0150EF243362DE37240524665371064FAFC473ED29949351A94891B392FB523
1A401F51EE19A006E6A3102C777194EAE7C1FBC46A2D851D8089A5DF7BF3E848
331292F87E0D31EEF9F6B017AB3F7C800A15CBA34DF50BAFAFEA5DCB51B82ACA
C2598293EC06774B7B506BF3A266DFFAB2F5FC0D193F766E3AF47515643E1A53
612997253B4740A9E15B1B9DB88E7074E9C2A06420449456EF2EE9960071A735
463D769A1529DA8FE6400A113B2C011B98B86BF78D202BE34BDE99459602C272
4758ED8EDCF869892B13FB673E51F3479C0926075E9523899A6A9274E034063C
E15BE966F3E688612BFF1A69BD8E137328BEDE5587D611C890968614A23D536D
0C8BB6C7A7B675A9713520E34C23728ED3B261E47A91E5EA33991B1A04DD6F7B
87DE1D47A2D2096E3FB4DD6310CD106F8702C8A84CD16C2A9EAEBE38F67A5028
874EBC19AF2094BEC68FDC25E68C9E2EF7770EBD6C69D2C1A452EC4EC0F49F34
6CCD9B4023332181505F194E1F1333C063F714895D1EDA793AB71D0D566BF352
7A65630B0E8F2353FBBB2676F6FAC0F372E90FDD6E480386BDABB2145DB695BE
5769E2A3CC667FBA352C9278B03520CF30BD1D84AE91BC84942821B4035FB4B7
377B1B4B71D4AD9A00903100F160F6647C7F74D79C5A8175758F61A296E1B1A6
8CFF11CD1C0D79AF89198FA9F29ECE0D4FB0962550238976852BBA20AAEB7C1A
0B12C5D83D157D176D78A1DC8A5647B07ABD669D59A7C53EF95B888B1982C405
FDB4E0AB18F33DFBB128F01F89D8D0B76A5E8C5171654C7401941D003317F5C2
56156E482C3ADEE87D61E02F45CFBB98D291292FB3BBDD811062372E20C3ECF0
0136A85A14C5790289021012EAA1ED7BF6BA71D177CFCDA1BB22E2E6EBFD768F
6AA641C8B1356CDBD7C2AE8F21F29DBCD546341F860CC9E36FF51AB09472A25C
87ABEA9744F1BBD80BEB8F45906F62AFAEFEA8E3E3FE6EB1A3A98A30996A6B65
F240B2ADB7C95DFA477B37B48D64D24C109664E2E630A2FA577054F07C70698A
4FA02A77FAC43D63A45CB60AB620244453807B6390DA4DD2F3E3D47A691545BC
208C2836AB794C059ECCEC7F2A9BD04A21562F025AC6948005DCA269F2C926C5
40B7E252AA7F7C707B8293866468E51F5213ADED3680D08627E7201B6076CB97
1BFA7B7B4098AF63AC2A84800089B04FAF2088200AF13EE125E79AF702341AAE
559D60B7C4A04E6670BC98BD77C42D64EDFE41A627152A7DD2003505DE4C76D7
B8C81A3026E997E813DFF174DE463D25BD6E0B16AA31925ADD94C833D97840E6
769F89A78C17ACEE219A53E43178C0DE73E2E788ABEE172D57263E82F3D410B0
C8379CFCB8C8B9221112FD0105D71BDF413E9BFDCD9663D25EFABC209F08D3CF
23F02E5A5A59DEC8CA302DC74EC2EB8E0BFCEF3ED01F780BC0014EADB19082BE
83A0950764B2FBE500ADD51CADFE1CE5841B7B50ADF05395066BEC82ADD6BC01
1F6A6307212D32B34E6B18C777B80E69B1E080A0CD32BEC890506FFB3EC595E5
CA6998459702E6D63583D2C19BD5014BB715322469B59BC9CB4401B99D3CBB92
E68702A96130575FEFADF62F4D5AD8C72A46DDAD10095F11559DC2A57A959BD8
FF401A02178431C47EF1A7AB7C01ABFE023D54E3AB9B5F70337A4EDE49966F11
2015149114134BFB10D16E065F61F5392B90D1FD76B52A5B5B6A285DA39E233B
D42A5513E9B7A5E598CCA172253399E56D52B3954F0F377CB7732285239E91E9
7CD4B28E3C5836FC9514F50E859BE72325E42531B8751ED54E39FD40054C8CE0
264F469D1B37C74FEA9CC89B6D0A1AEEBE18F040F59A076C2884CADB8A6D51CD
184583A257A5E86A17AB9760D6219CFEA0B0F38A8FB1BF339187ED5E3048CD9E
2BF3AB681954CC9C479F8F304C365EE4E9281B615D749784EA16A04CF83AFFCB
2B1F90BEF2C4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMSL9
%!PS-AdobeFont-1.0: CMSL9 003.002
%%Title: CMSL9
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMSL9.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMSL9 known{/CMSL9 findfont dup/UniqueID known{dup
/UniqueID get 5000797 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMSL9 def
/FontBBox {-61 -250 1150 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL9.) readonly def
/FullName (CMSL9) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -9.46 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 67 /C put
dup 76 /L put
dup 83 /S put
dup 99 /c put
dup 101 /e put
dup 103 /g put
dup 105 /i put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 116 /t put
dup 117 /u put
dup 121 /y put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC706FFBAD8F64C4B
4198909DF28702E889F2DFA1FB9AA175E65D5B8FD3EC28297FC91D644E95B337
039276A8EF44BBF9AE8C27910AC03F70F9022CCBACD01DF6D2A5247F8050414D
20008C564BD55A841F12DDF816DBFC3D5CA2AAC9A64235CACF7F17A81AB28785
F6C95B135A2B9A4B15795B114AFC7FBDEA4B5A49E61ABF7CF1CE129C2F4882A5
4DECB2F07A9C7EEB2D3B896F5C5C77290881B0C903969A059671DBE2BBC2B72C
6ED6DF41413AD37609C430EA2BCB630D41BCA9439CBBAC12FECD18D1A7C7A123
D7613A87CD73488E2EE66DBD78440949A0919E0EED78EBA35409DFF589EA71E4
CB9C7669FBD96E7DEA501605AA8868B98243F09DF73C4DD85720F14DB4FF402C
B689D1131CAA96A50D26ED450D7D1E9D2D05885B63872B0906AB8429EE94B494
DBD181BF2A622D5193FE630D1427270C6B456D2EF8A9C4045A90B4584BC95F58
0FA668DE006C18595C16BD20CE73928B39A8CFCB9C58B38EB2E72BD69E2326E8
951C60E3E55537FBB804363D3D608A3D7FD71A5CA0B37F2E7FD34C2524BD3A92
8686BBEDBC07D7AE6D4ECC940EDB5ED234445D98A6BF7F92B23AB7B501D79148
BDB9DE83AC86873C061F07A012168DC92B1C7C52AE2041696895D7200DB28B90
2A6396CF1CD6B827E309CF79F68DCC92A12F4C0762671E025D60AE1F591C57C0
580F521B41B8187F057C40C03EF9AB27DC90A3CA0434E7A4ECED9F83A32A37E9
ECE1016828B54008F73DB0C48B407095D800DDFEBD044EE8AC9535B9092C3EBF
37135F79983DB2F3AF9509D57A11092EE30FDF9FD10599C4D18C926D2DB941F5
E19D1B4CAFECE138CF9991DA0B109AA841106C89DC7E2872AF52937AB85DC1B7
06BCFC4705747CAE32E061EDE0C1EDB35E7ED8A307C241F6E11EC14DCCF04745
693C30DECFEC4087B692D0495AB3870D0D5F001CC29F0CE5C0FFEF417D3F89EA
3D4BF5398AB7DDBFF6AA1DA49B856654F9D529C29E67884A48119148CCDCFAD4
09C7B4CD263DEB25029A0D2EF53EC59675A76DF70757D71BC30E82E94327DC96
828162ADCC70CCF0FE0CA9DC088B0C1FAF498DEE93C7038403B742D393F882F7
8F2C37565E266274E4033F4DD024DEA90D24B0E5FA96A0B6FCCCA0DB9F268E10
646C4507F1BBE75F5D014C264AD9F50CE4892C9189F6A60C26012F5EC8B4839B
57BEE5B2F0F79AA8873BF61D8017AB3CEDA5006F838B436212C115DCCC1BD581
EB86C4C67F97934C9B0BB46DF9A2BA09C06429F74490BBC6DE00898CDB1C83A4
3EFF3810104D7B96E70F0BC9DAEB019BD56DC293CCB28EFE9FCD1E571B5D85C6
55D79A0F4F26FF98AE764742D28B64DF642A9BEC15EE85929EEC9E662F74C8D3
ED995C8BC3CEF54656E4E3CBD3E91C3323A4AE755C0A56DE2FDEB64FF2F8F5C5
6600C9A94E6E8348E7E47181565B47180E8010A29F962A609C15689E75D53934
44FFA7BB0763642336FDFBF8C45704A6BA10AE06C7CB62CF4FA17D50A99F180D
A936DABA5F2E625A45BFB670DC5D54045D83CF071531537896D2AF608FC6BC85
70484384898B04B5E9F40F731468FF4FAC27206984BF54177F19BB899C758A66
E8CC1B6324C99E5CAD172B3FCC901312307AF69D3D933A5041DA93BC8F65A816
73073444397A754A4C6D1768B4F9BE952FC835E60D9412DFB62B0891943F00AB
002038C0E22D22599A13AECE302C3A5EEA58DC8B781B1E558B49948EBC949C06
71D5C102B91B352CC3CD453A76742F8A9E244279E71838CD79E556AADC6D4A56
A66FBA05A2C284F74B053F79445F1A9C0ADA5261942C15B0C20D8F9A9899999B
70620939956A7A011E9A9A53F7FDF15BA0174FA85221383B6EB2AB94AA55DC86
637A0871674885F5F937AB1ECBF5149F3C469B9A454DE86E0949396DF314E6A8
9E4044B3F11425647AF7D1EB89E42D8BDA43A1E6A7B991E9B6D5776B2A6BBE1C
573A4780B1486ADE26A9B12CCBB73DBC87A1F171AB0F013A5409A4945406C1AB
92C082211B597EC3AB4A56DEB6851336AC9E65F84C79E2466170EF9360A210DC
5D71686D5B88A0B3B789240D722438315E667DB5425554C9B2BED3C3FB5A6AEA
07DE5132A1732AA95FB309BB86A87003524F9FE1072307B2EE046921520699C8
61DB4364F342F5A7D29F4B1D0EB04F86B259BC2ED0FA22F8E5A54A7E876A6327
E01E22A5B40897CBB71F36F02BA648AA1D06662637C1CA48C469C80A6168EC23
966863583673A6B291A18A56941AD768683B85FE2BA65EA4D0EDDAA2833443C5
337C537671D74C30BD343EAFAA0A4F0B8DBB62E35E926782EAEBEE313F92538C
99E3E620CE7832FCFAFE3B051975E7E76BFB1085A9CD2194FC119E2AC91DD517
5E17AB570B33A27CE5E2FEF0356A6B0E32D7584AE7B9041A452EC64CACB10799
E694FEDB87CCB82C288FE809B0F4997FA9A6C1683B29CA03E15C017F3A301543
5581AC58C6A9A0E34FF5E77A091A7ADB44B597A1EA5768B34F869521006A10D7
67E462E70A2C20021683FBABC1DAEB1CE1DD7FAE43721306492770BEEFC96FD5
8F69C60D81082136FD9F9A7FC0910E9D36E483131E95B1587F1725E2E80031C4
730FD118482964289E153B9B91B91FF190C86B020AAA97CB7DE843C54827D4DB
365741D530D33F46CA483DD183480CB148E24C0039E44EAE0CD7433BBA81C8D0
766EDBB15B4DE1A5AE8000881CF01BCC835FC20D1F8250E66BE78265D3B437F1
FB7CB10A2CEDB6A6814AD48C365F51C1C55ACBFE2BF4BEAD06C6E86FD2FF4DB7
CB7DCCC01CA2DEEAC1E8AE4D6546CE8B6D704A38E895C32CF7B644A04E1D2AE1
A5C759FF1CA4A832A93060DC5570245A5D769988A86731B3137A5AB0688B2E7E
58189EC3A60C138DF4277831397B4EBE4F1B390182F2EAF332200C7F6A9FF312
02D1A0451EA9DDA7B5BB217441ED2A88B2B63C7D27F2EE65EB4E6FD20348CA54
75D79E0207093C987CB79C04708CA8500DA58A27F21FD95E2C9E02926710D013
BC2F118CF2A43B2820C29758EFEB5DB30BAFB0E087D0BC0C42F36AFDF491B640
4D01F38F9218CF25BEB38AB91D7E943E8EC9A9A9277F02EF057B51AB3989AEE6
7945CA22634DB32DECC1E18D9901A37A05B3395F9E28E2BD394C86CE470CF465
D9FAFCB4747C5E168C9EA017D8F1901989F076173D61AAB8D0ECA85ED04E2012
DFA4B89525947FCB6B4A17FD9805E5EAA888326C3281B34CF76152D047ADA492
1E1ABC03289F49D682133D46D304A02905E397F0678A469DCDC8CC516263AF58
913BC2874DC4407E53FFE8CEE90056387A32B169ADEB0F7ABFA9AA5A6229C998
5644C47AF6930AA016CAA265C7B05691604F04FBDFD43BA3D2F3FD36CA761BA2
5BC7445B4F6380C06A40EFCB4A6A9D501B1ECA0AAD0CBA97C6D726F6DA2E076F
6CEBD3EB8096C9AFAAC641A3F87066A882064C2B0C21DA8926CEE57C9AEAF611
31C99FE3E6D3B691BD55AB8D488CDAAA0E8C2A72B057CFF65C1EEF0EA031A2C9
D9E38DF696C11600B8D9EE07DF6CFF3CB112342020771F124BED5059D8D97E56
7E1A057552227D80D3CC51C011D736F8A19622D3E72E232CEACDDDB126E2CA6D
96A143BC63A0066505D5BCC353E086279229E01CD8F69EEF69E26823E4B7FFEF
589476CED8547DC0C3F7F1702A169FCAFA3D88EAC3ED08DF8043324B6D6BB481
4FC534FF50FFEA0D3F8A93D9D40929FAD7202AB500C047B2F013BB351040B8E6
BC513403629AF692145E59A5E518DE768B5210BED9D72CA2B8A36DEEF730C755
5332F126F59EA348E5366FCCCB88E7AD4E1E2EC21F240F12867716FCE6907AFE
5F3F6EC4E155096E6418CB525E1BB0C61E23553A1AEF9268D81A76BE23A2D85D
8C72FCB6662EAFADE3C325A39BFA1A1EE05A1B8075AB66047A293976A626B5C9
09F95D42CF9357E3522EEB028AD48174D14938C5E11E5B808FDF747B41C2D5BA
11FAF9F65E4F82EE60CACFC23CA860BB47FBEF3463B622BA9DB82CAF75640993
F6339111A1303156DEBA684B5940BB59DDE383BF01CF444028F9FB60AEF34959
38176F1EB5353F1CE8248098FC760ACC07B2139DDECA158DA9D69FE374E63E14
418A2FB18595442E81D18CF85321316601DB24DE54DBBCE0E8CEF81F3A4EC5B7
9D05894A70BDC5117AFA0B642974B4A826FA64D8334CD2D19D16DF9E617384FA
E42A517F62C0A5B34EAA7AB7772716E31261598E3BB2DC426E52EA2AC31B74C3
39C33EBA019EC687B7FF694AF4E7DC3018B122C6B01985FBF7317B9C29E340D2
EBAE10F30F8A0840753F4A73FE5917DF79EFB4A9DDEBDBF5A309472E5FC89571
E0BF21A3CF13CD2FE84CC0A3313A6A2AFA92E750EA8E11DFE6EFB4BCD50B5FCF
EBDBCCAD8010D14C36C91F0629DFEFBD7EF7AA277BEA1170302E60C4FDECFACB
979C35A026B703DBBEAFDB89A50243A657ECCF9A16D0491EF3453F946AE188F1
CD7AD2FCAC0A2ED2A868974D5D51371395D509B71925AAF535F3246AA9EE6899
52A7C6CACAFEB437C5B31AA73F58CA48766DF6C4D806641CF424AEA5160998CB
C73E1D4869A5D7BB4662F4A73743BBFD8EFFB371A8DC5606B1A0C7F70C025FF4
7E8B362860D6864E7B7F85D215C547543D7B039AA07F8135BD4441D393A86D21
A73E30D863F36CF991BB022A8D74BEF4C88A19AF37BF8241E6C6827C328E13CE
410F2105A94702F1B5F575A2710A271BA244D1787DC15FFCCCD7D666E900E8F9
1F5EDE7531043AA339CCF97481BE36E53409E4EE454F72B42C8DA78E6B241850
060CE2C0933EFA45E4901952B819BF14C9ED7D15797506FF81065E7D46789EDA
34005123FF1CEDF111B2E3145E502612930E8E26408F6A8E2409BF62650FEBB1
A15C98097CE83852D3782249D763092DE94C6C05A6912970B3A809578A69D8D0
792BD8107C1ECA0954BB1709C73F2879EAE3994927EAC8BFA1BFF11AFB382F3F
8680EBE0DA5F5143C37C9EE4DF21A8EC23BB3D1ABACC474568FEC8E229641B9B
CC19408FC1CA59F56B1AA815C3AF151514045BB4E2634B60543CFF6AB61AAA9F
175C9630D68F336CE178ABA458EF07937EE412AC56EB8EAD8DEACEB5D5FCA45E
58A297DF1E7E9AB7105DDCA38557A7508416A159A10864809C853F0FEB49D79C
CA26EAE48112337D5F62A60A3EB9C86444A9DF4FFBE9F3763E683683CB429E14
896C43487C3B9EFBC14CB09540F13B6140834F87027F5A31F166BD26DCF19BCA
C3EF4B6BD6A610C9D38C2ADEA1F63D5C9AB59A146FCD9473B2FEF9A0F37BF9C2
C9A9176CF23425B2ADEF0399F608CC71FAAEBFA07185EE94EF4A7E3F8D43A31B
855C4ED42ABF17F10C5744F64FFE51D0784DA589EC2942CA9506128F5F951667
CFDBF28184F69C38FD418D02F5E1F546E74A74549CE962F00423A86AC4BCCA5A
2383D83000B802CE258BC8BE22881518B4A485D8EE33C632F38041B8CA5D469A
75104DD5B7E7375023F6F8FDF4E348EFB00B1A55C10B394DCAAB87BE84D3142F
D172E17115A09F29319329E22E652967C67C621145C510B7617103DFF2970DCB
CF2EFC9B820F2C78FB902021E93E19E48A09F24C71D8E5181AE8C654D72F513B
A0452A4B5232F15926FCDFDCD8D8CF64F9BF15A5533033986E3C326A5C5504CA
560D50EF0EC5CC5409E928EC541EE0A931CC159C55C03ACDA7C177C05D72F0F2
DAECFDD9476118467C0689C7F55AF0312F3F8680B6332B017194B74FE9034D35
F2B42CFAB4497533786EBA218D3BA699DEEC1D3600822826BC34DC5002EC67E3
6C5EA3AE332D4D4E995E1216D755B07417CCE2F0E0A8C50870CFA33A95A050EC
8A230B446E9C46DCC4FD1185500AD432AC3F41C61133A366AD8F23260136B72F
0AD4AC80AB5AE776A81D2D57E0C3AD28CD8A38065134E3A416FC75A3CA4BFC7F
1ED5DD3E0F890042FA257E06F3073E832475FF9D42FD462E1394961ADA8B71B8
2E0BD527786511AF2A9F3058A619E78C01317DD19DD7D3B3D8D3F6E39CBD39F2
5F60F1A5C6DB389EA554ED283B8C8AEF1013C917AF69950C5D1FFAD294DFEC71
001ACB3870E1B541E2D892EF72F7E726E029973283E6218AE2660379B977014E
FD1B97E4D4341F9831D4F399DBDD11F6E717803BCA06C842EB23D668C89765BC
4F89F7C2C0919D983174D1DA69D4AA27AF05C43F513B856C15DE6B199F093EBF
2A46A47422A444FEEF7384ACC9CC0161582E336CCB0762CD88B7A21386C797CA
E6CF26EDF6133C0E4D6A3972556721AB5DCBE1F2EC8CB180A557601A8B86BDE5
45A50319A3621DE010389CBD16A32C6F2BFE2F107F0FE17AF448D49DDF247E9E
C130F3D414B5F046AAC808607530239BCFB5C871899C24FAE159506652DAFA4C
F2F2B61CB88E9E320D85838E8343213CFED5A5354DF5CF0756908C5676A8C919
74D26319709A29BB17C7590C405817EFD042D75A95BA4504C99161A4CDBF7AC2
D1DDE99FDA9C04BA88D54B0741705BAE7EFA68EF7AF6B99F31AD9FC16B60E685
79EE02CCEE2B5702DADE3EEE8A81C3EBF75D9D909621A2EE707EA0E2855F64C4
B251718FDA71EDAF082C65647AAE6E7E5835CD5BEB23418066783DF21F9CEAB2
A0BC38217D5BEE9F31AF8206693ECC93B3879D12A067A92CDFEA59A190ECA4F1
039D4AB46180D368A71F1DCAF637E51EA61EDF0CD2D4378427258422A8F3B770
33D6C0FDD0434525E105EB38284F189FAB7AE3C546379E200264E1711EE50B04
B21CB5CF0DA936E5816392BE2A89A4D15F0F4A39DE5232BE9E00BC2B24B1BC2C
C355DACA7371CBA346313DD7C5655314AB9A098321B406208CAFD741E8833C49
8328588853B1F2E38498DD13E948689B0FEEC5DDBEF9576C29DB283E22AE9376
66D6B4B443AFBFE40E6F01D2699F28A28EFE45B108562244C2DE591147882E0C
2B776020075A39CDC9CA5D353D7DE2CAD3BFE5E76D7D81BAE3A7954A7E7096ED
8C92D4A787E0403D8469511A39E8AB2BAC7F9D098FE2D4E79416E0F3EBC990E9
9B9C27467FE13DCEE8999D4430730A053AF37FB0988B9F02981C0666C336F163
D4C810E2C19CBB865A1F18E5E1FF007825A7DCC19B445300AD85D72A15D58C14
ECF0B0475EA6B10BA5073D0CF7511E072DC938B969D4196B1A94CD8E5F09B49D
94A4BE1C06A910D35A724596E0F862468FEE5373F69F7C9C4418F0B487393E01
9CCA7B80E94FAA33F5100209C10240F00D9C2DC3035008AFFA5150A269CBECA4
04CC805A1D6D590CC4FDFF6EAC2E81F770407A354C7B4AF0B07EA45B15F23EE7
9B4B0F8C84156170A3B688A3E45B4F21E7B35B96BD6C371EF75F5D07408D5C37
0225DBBB43DE22AE5D0A5FCEB5684FEB86C566FE98E712D2692B82A49F30059F
0463647E0C8FBEF6EE2C2DF00BC5D44086CB8BF2C8C06235659D485187975B49
4E4179A596BD5A43F8408D849C05AD1B5FDAF83B330E9871F06C6A970F56CF5D
180F38F2D30C06AF91EE5FADB3952CDC2C512818687629130EE49177B25855D6
3D888ED4F0EA504279AF45B4232877F40E32014DA3D8CAED305B081ABC08CC4D
BB16719F966E48CA12609401CE98EA9E96EAE15514C346482612685E241C5927
0331DB08A5D8B5A8FB8D1D54A5B5F6FA72DABD6F0BE35D3BB7C8F2A54DFDE784
B13C19BBBA2F94973EE4F7F6CB902A72B9B93CBF9D29631E96E2DAC881903407
023C9720B78295A435E9CE18B233FFC1BB425B1D5F4CACEEA1762D3819379399
929BD5F4B48C7D2832A3448D52AB976D3FF702EB90048E65ACBE0D326788ABAA
74A26601B9C1AD466E2B1D07496159EDB2A537B6B339B4AF889342876BBAADC9
11327D6B165ABE46CA6D905ACACD7F03541375829455F352FA371D74EC2BBB6E
F575A45F3F5D785DA27182ABFACF08274845D9BB216E5967423C9CD023FDD9E4
0EB993C1AA1177FEDFC5174511EC37889D7BD5EB3AB4F92F169408E55B709FE1
C29A83B7D7F048B21776309B23409AD65438C515EC957D96F56D4B697F04457E
7C06D4330591531D064CF2AAF7A31DE24FA89D39F18DB60752A5B150BE2E146E
CBDD161B377B233B86667561DF1B19ECB15C31DA77BBFE053DB660D6731411FD
9D91BA4F014DA9B56FDB01C4F4A90B2CAB98ADEA3202BC31C580B282DED0E1A4
63D327C7FB9858F73D4430FE7135E32A91D61396CC390E162704825C4D4EA226
CB89806C6B230D8011A24122CF18F9B50E89A3C7E19FE4DD72DB70185DE2A7D0
4A682B108276979B242057DB75BF688690E71E9491F4C45EC85B663CDEC51C3B
A43B5342F4A0C6AC4E4EDC213A4D40A711531DCE09AAE61995815C97A46BF370
E0541DA22B04C24BF3197DC595B49C4EDC67E501599159B5B5410B2AA3F7A487
F9E34CBE3BE73739C983AD2DCC173EBF44F9EA4CC8433F55B34DA837564B16B2
0480BBDDEF18F0DD8044EABBFDAF3AC05A70C04975D1B0EECF25321BF18EEB74
895C48241C026F95A55139E2CD912E33E3C02A5DB6B79992DC55E1D3CAA5F674
D0165EB58C3E3DCEF64B9726E2154221DDD2C0C269D20593201D23879B5D2926
82D6FD5C40468D86E2E1C3990BD2DC5757A29FF26D58AECA3AE8A6CF1998A649
FB1965031F021E4D789FD52E782CD54D8EE552660E3CAB7039E9CF0FECB3CFE7
073599708AEF7B6BB07689F5234AE8F2E45AD71403A1D1BEBF35A10C2FCB7CAB
E8BD2B6B6E83C9604D363E03529773C2D51467532A9924C9D5E5682E35D31E69
A0D3CAACECC38EEA98B5CAFA8C8E28E9847EB1AE63337702FEA1B7AC29DF7768
844930ECCF6DA3E0C310D4934710441F84C59F567B89423E09F0E513E102AB52
02E758D9A04D9609EE72E37CD5E3DA51AF19253A3E48599A40522345CDD2D045
974E926FE20FC076ACBDC0B4C1CA91F4128F19F55BD59FD86F2C21DE87C25869
6617A04613819FE076ABAE7FE05A9047FA14D012F8BC2C2F0640BDEFB6393568
F1E2D4A66D00D61E1752446A7C9DE540926594AD9E1914F0EE45540CEF931EC4
F673917F67C9B05C7D64EAC7F1BC01F96F426FB388D2714FBF1C9243F03F6472
BD9F87FFFB84F53FD6BBC1B445066A1DF51BDA991A19E93A712F2A36093175D0
0EB23DA43ABAB3CFDE4877E44CD55777726777B354C04904BCBC2C064F425657
B6F8AE1C70FB742697AF3009CE00DA0172244CA1E16EA9752EB3281C70E51BD7
BBFE6D854BE2A9B43AFA08D92E6AFBD6CD80E3FEFDC42D695F109BA098B51735
F0811C3A1D8648747160225EA08BDE011BECDEEA109DF615F2D1EBD8D6A67240
07BC022EC136FE712ACB778EC7598DCA338C9DD8DB9C677DC6D80243E5915633
A56DC0825CBB7442BD6C77F2EDE3BC233A2A4C75181104C4672280C1ED087FF8
F8BC92AF26B35A554E970B5D8B9C780A3D127DF5EAD89000A8912A6418C4EE65
C701C5EF0A2998388C4E41558F8301C0C3B320E51B6A55F28F9B14008107E0C5
2D3E213A3BFA5B630E2D2D2F18273DE8AD88F2BF61A2D1BC1A3F9FE253192E00
7190B273C438898B2C1028A32DD6E54F3E36515DB7229B12ABB42701BA6B7BB7
5B8F25CC15EC5DA2669D130260EE46D6A3832AF97D91C88B2FBAA632825543D0
F601C0AC1EF15DE2A6DAC6200BD945AD98D4F0FA3D09D029409CBCC83B6B0EA6
FCC3C0AB439606B39D21D3D7E26394824BEC041410C496FCE30C0215A6C5CD14
A39D71AD201A24EC90247BF6FE571664597DCDE6DB740C3CF2FD9C140E017CDA
A7E3004E6633354753D0ECEF9E650EA9A8CA7DE2B73531532A22755875F113C0
E56464719934B4342C23CEAEB613F1670DD293F8536557AAA0370E782521FB85
4E96473A24F4CF2D77D172573A1374AF16547E994ABA07077B3DF4167D29EBB4
3FD9A3F359BC79F11ED2D5367EB44FCAE9AF711937665446A98DD8B84C1CC9DE
2AC35C7C0787BC4E1E584FBBEB11EB8FBBFE0A46F56E47BDD75581A07F3D6C73
04E5C0C88AD5FFCA0C25AB0438EE312648E87723E1DEACC55F917138B5174ED7
81961B693198C5F07EF40326664DBE21BCF7C28047F28853548FB6A3056F0A73
3FA52822CF2095D8BB008ADFF7B271C7C7ABF095A36B5D0C6A7FB71C5A4CCAAC
40274160225E0B31680535785A73B5025DDDE924C799225C9FB9BA0822DC0E75
18BF1A22E96747E9F159DBBDFEED8DC3CE7648116AB3F8CF2C1B3BB74A7DA7EC
64DFE226C33748B5B1201A3CA1258C3E433F9E37CEABAA17A1E246FEA43B1EF7
377E06E6696E4CD2C6A8DEB3A2CBE12C6A311FEE63DFFCA866496383EF30F510
DA3B603629329FE1A5C35E7E6925D11C9BA9DF415D7118496211DC013BBB0693
B4EC86011CB010CBE95584C1E3C1D91E2D8F91578CFD8F9637BCD8B441C4DFA1
7633177DD32ABE03E06C8098FF1F0CA2155B59A82B418CB757E452920378572E
0A145641A097D06BD3A79EAA620007D166B28962406F301EDD703F4640E3601A
04B829F2DE5362C9AE8201D45EAE788A3CB2A7076F4155C8C9FFB017F4C2F8FE
14E6EAE57CEB1E073B8076FA20440DFA3D33FBB555DBEEE31D8D9358F531F79C
81883E8EE651E9F455E4DC2A7C8E50B17D80AADE21C9B58674E6A8A7E52BCB1F
AE3F60145090071D717D6AA16AC61BB1FD12CE7018B2D85CD33B387A5AA98575
32E69F83C874561D725EBF676CC1B05592D1CFF99D65EB55FED760C92BE227CD
CCA4E827B7C5510654F806D6F297DCD3779B48612ACF5BB4ED5546D187F9BD39
3E139096A6CCBF8F76F9C3CCD6EAC68D63990F4C13AD29DE20946AAA0ACFB218
01610AE37B317F452ADBA125617EC27CA524FDFFC594D8DB3FDB720C1174E5FB
39E149D700CE692494D22EC758D446B54E365E93843F7D04537C96DDC80FAAA5
526258B0972F7208572B6ED7E8CAF674CF878C040B549F2DA592AF920FD0310A
A448FCDFA378C72B9417ACDADCD4A1A05F2B6B697C816F4EB662A7385C972AAD
A642E82C83037B658D4A23B228BEDBEEA6CFE918DAB5E49C80CEAF42AF56C61B
CC701C67CF7FBFB4B3378AD8AD70BC7617382E1E770941670827822C71DDCC5A
BA9E3DE027000BEAE27E93D7D902F04E19A7DEC57E06804C0B4745DFCEED73E8
CA54E2A9C489E221513E05992FB412B732F24F35A7EC83E2F170F19B61AF4E52
CBCFBAD3E11CAB7FC6F9CB95458590E7F687758CB5E40FAD2BD0461A02444515
29A35554DFE508BE8E6F10D41E46A2F32B9DAE4D8C2CDC620958C1D1BD7825D0
D830E8A70D745773FAE7D855CA532BA7C3335460C0D4F75A658FE96267484D02
5142D2B092C7DA9B6BBCBBB3D7E1EA42CFA5EDD1C772396CECEBF4C69675132C
0CD6E24C1421E7BF38E1BB3887540285B90B3B431B0B74560517826918B8628C
64D3D7C1D5B03199F3D6283EAB88938BACCE2EEF7F48B71087DF3E3863FC1A52
E0B7AE69DFC9B95B2342CF40363FC5AFEDE3506909EDE8ADC816B7435A7A245E
D943593EEA300B1C122B62E54A55D4F18B5A25EE9A83A01FC7D2E83740787A4C
D3263044F8E5EA051316CC59A612BE700415430825660AC6773D96B6686A927F
2FF553567481A950338022D8E3BCAD9D5236ECBC7C27994EEECDCE22D46F05EC
699994576F8D3B59305ED12CD4BCB4EC00D49AECEE47BE4421A95E6BF8D7A4A8
A69E7E3F04AE9C10452E7E11548EF8AF37A918F79966D08B552BED3B77A674D1
5A75DBC7B31CBEECBE348E8A671B243ACD43A5D2BAD3E7285BFDF2F96B3595C6
FC73E1E7F4820F342AEF676881BA7FC96A0FDFDEC901E8F6876984EF311CA6FD
5A1B62D3EB0F30D4B6842FF7DA20B724E3A53F1D010A38E2BD141FC2C035DE8D
F38179E7A7284D4C5B008BB03DEBD5471DE274B748DF3E2F2937B9CBD79CCE1E
B56FB4A9572D8CD6A0EE374EE5F5CE1831DF2997553A0F5171C236DFB653B9C2
695A2C4E1FB0881E93B39CCB5853A0621F01E0C905B17C73ADA37E572AE22114
C21F56F0BFBD231AA1A0298DEBE62E813BFC2B38D7271617430284D42817C587
A095985DBA9769BA6DA12012842E392B0B5B2277BC28EAA94814DF9423C8D606
29F919998D773CD24A09BE879604F5DC731664250CFDFA51A75579D72FDB4C1E
9C73133D0F2137AADC64C41B6100FC65240356EE32E55BD67301151C642D9B5D
ADF3F9124BC28F9A15EF192AF3E911FECCAA1A8217F2D2AE91278D9441AE0B37
221A7CDF501627D432AEBFC0B2E352A4DE43BD2772725937DC10F6F4FA64A205
7AF0C482668EB7E6EF72960D88984A16C006E9087D992F7C717BBC46181DA1D7
04112AD658D9A27FD25323A35846D9EB2A835D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMR7
%!PS-AdobeFont-1.0: CMR7 003.002
%%Title: CMR7
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMR7.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR7 known{/CMR7 findfont dup/UniqueID known{dup
/UniqueID get 5000790 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR7 def
/FontBBox {-27 -250 1122 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR7.) readonly def
/FullName (CMR7) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 49 /one put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB981ABA2ACC9A23A5
3E152596AF52983541F86D859FC064A0E3D5FC6647C3CAB83AD4F31DDA35019C
CDB9E3DD3FEBD4C2B36BA3CF6E6C7DA85E25D8A31A9BAD39BDF31FD0D1790707
9DE6A078E8A409D8295F642DF492AC4F86AC84383B0F4C6BAA7C22AD5A898A71
D6CB34D2CD12266C486B75E75A69C14819DD9BB8159088E04D4717E576B8482D
BDA52110AC8B8A80E4E9D58F470EEBD3CF44A1E1EE8DA318FFF3611B02534FC9
F4018C7C57E80570D2F634D98BE5D5EC6D95051157F0EA94A3D12BE0B4B79939
F82F8D73136D3337C44E314B0B16CB030D9A12E01FB667105F334C3EE965E5A3
D410D2F1531547A4497C355AEEB295CD3C5334BEE5232992960B757594B89F3E
52095042DBE6B4DA3C3AD50CA95EA9EBADA10630B500CF1FCCA7D60306743681
7E428D33B7F7C40B425CD58E4CD8AB474BCE6A307BC6C6EBC15A8A96E0E2977E
A33389154536F5C5D8CF036D07F24094E779E5ACBE5502C92892F10F4C6DB627
C7EC4C7BF20B39418A8A85D7FD9B0EAAFD871DDD41F93BDE5FE619AFB8711824
DE890E62C1969A6FE28DD3578AF43D58A728FAFF0B9FAA640962C8F35A26F76C
67F3548D6DB54A25CEB368B47F97EA2B0C4D7C0E7894A4F0C823C6C1922CF9DC
10E05600556F1C7C9AFB33A2DB6F8730F70D6BF94B1FB0887451F2FFEEF3584F
DFADCFA9A2D4846B8F0E51620E1327D994CDF973B837D10C90FF76DE22B47CD5
EE3183898D156861AB4DFAD34A1E3FA260B8164E6680BF58413A553E88F6100B
C4F4E8E972C81A5F88A7DBCDC308B4C3581BCDE13877B976B1F84330839FE5CF
C78551620EB803DF94A5C921F8EE24F7EF8FC4C3E1653514212631F54F90E3DC
E9EAF96E998F340C4F729ECF7AB430FDB7C0BE3DF2C0D23015820E28B743CAD7
7F0AE95413C3EEABBC69E852F53EE1DC260D7F1E712BECEF2F18437DB23D8E74
2902AAFBC733AC5BAA452DD6F3671859AD836C8564E99CDC4183D8495AFD99D6
1F0D65B6588CE7546717911E25BDCA6C2649E3A7466A3E2DA7C7994A30AB4449
672EFD00632EFA8629C1AFB7D53D801028F77C864869FE636213A69173003EA6
BE1ABA95EB07B13D1594BEFCC95ECB0A9CFA9892EE0677D6B6C250855762B7A7
8E4E022640F93169DFA0303A0D5E73BF3E0F4D4AAD10FD7E4EB20532BA30371F
E9F480F9513432946F9828AFB5D4AEAFA5829B2CB544E5EB634C4537EF7DF08A
A1CFD94A52DCF0E7CE4C5EFFB01E6D50558B75DB4C8D5512B06080F27BE62E01
2EEA6A0357441401458C842D3DD4C35B8F561D816B336216CE0C14BF77648AF5
E33912CF95872A1E1AB9A18980A0B29A881D13397C15E1CBA5D3E0B27943EBE2
F3003D15EB446BCFC1C231832475D5B7AA19E4CFDE119D6CD62D053C6D29C333
5F729791D17B3F7108074EEF4D1BD101CB33E01004532CB0D716D2E54D169C6E
80163E70C0E9081F31A1ECBAE079D2A518B790B0CB2CD03DFD034A0F4788E800
B0CD2DC1FAFDD487C2F381EBAB2A2F3F3AF82021B211DC9CD2FBA6A1BB3D4AEA
4C7F3D9A5C21DFF284CCB827D205A69638E98D5DD8E36AFC1A4481B5CB2A2E8F
D6C838DA6F81990F5ED928DC7457501B5C979FF4CD20A830896A460C5DB13D56
A3B2B5D9B292374A9BF392894DD99FCD6A1E655AB395E839F074D1596488700C
4E2891C8AEEF66568E82A8B826F9A28FF84D4D9BDA21F638EAF96880B4EBE0D8
081982F34831A03BEE81FC177700C2360D2A48915EC40D5FE85B400E175D5AF1
067FA0097904FB647757BB44B4042D30D1557BD0F7922D731142FD682139CEB7
58CA4C8C240A0B86B1888CACC507E24E04020BF1882BD9B4CAECFA97DB24D7F5
AD64C69454027F198BA35881B94EE9159A2D73E450C3BDAED66B886D6DEBC84B
653E165176228F88993F12A170775A8D7038BDF2FE8DC1F7B98BDC02D1E6686E
9B834F6C0AD90780B17DFE25F0A4E470CBA84E73F2D22BEE09A040F14CFA2C14
0FDA5A5149B5FAFFE49F55EEFC43831BC43A8326FEE9C7F469C0FC3B000884FA
41DA7318EB57262CB96FC4EC7F16CA07FE1C3BE8C2DBC8A8135953D6DDF20BDF
75A2B6D26074FCE752BD32FB9F5CA797775E8DB9BB9786B469A3CD65A0D9DDDA
C2A166E454A94860EEF5B5C12172DDFC576A03F6E6F8A735FF21A3E9CCB4CAA1
3064893487697986A42CB5888B2B0A79FA3C74E8187BDDF7BEAB884B70B8D4AA
AC6615745AEB906E08BF831CFDE222F58D02B428D55E9D5A3CDE74E42D8A2CB7
E1A3A9439B678AD438793ABBEB72B21C58981DAF3EDCE4BB93D95F4A1E943BBC
B3A012DE92FED4F232A3A7D60CE60B605151F9C7C18A5C653E5D6D15E5B49A63
73E7A339504D0ACC74B8B116EA88C3EBA2CC631AAB29F761E5F062966AD2FD28
7FFE52FA8A115DBE23E471094FFB3CBAFBDF11B7E9058313F2D069B2CE98A962
64645738F02A31E2F2AC11628724034ADBCEE012721EBF0A567893411F950410
B20754A7510D041FFA6144AC9CC46D846B82581F20BBD001D34D9764010824BE
61C30D05E5C5D100A24F1917F01799CF5BC4E50FCECFEA732CB50196825F0E08
8A1EC868C6D4357857EE2957E081A0E4372E31A8ABEF23C3F2EA0FEE57DE4D08
61C570175C41AA0C7A3A579ADF593F18B4AE3782D2552E4E0759C32E059EE741
2D8191E381731769F6648B3581CAF11DAE46471896666F18F02918B0860BDA3C
BD5DE777672447C23C62ACFC2611ED5239D6A266FDA6031EBC5A530C1A2FF7A6
B4380B9A4C877267854AD1F1677CB5433F28894ADF93D39EAB94541A8D232E08
22D082D0951A60F62B87DC028714EC74133A4D65F7D0D1296C0E189C4A42AA98
28E8AE7ECBB9FC8DFABCC6EEB1E9FB06227F90808EF31331CCC5D4C9A6182181
047902DC9FD0444FB94B60FC74F3B677758088CE6A159D940C5CF682335E756A
8BACF06AD7225D49B0002392C889B0FE2C71311D2596F4903D12FA20BA2FFE25
A0804B4BC282929BE31E0F46B34532CB5795A65218CFAE21F390792DA67775C7
B91A2BF4C16DE4F6551DAE3A5827F616BE9040EE6B1008DA2F99A01EF66D697A
6CD1A44E0A15D1F39EA8025E886A68A1E9C334327C7703EE721E497CA924AC90
7723106D913C5ED4BA4FC743CEA8D0F5172526107DA65775C0B1B77179D336C2
9B09B608D80B1A1E87CA1A84A833A00D980D919BFF56F6390E9D5B45E9935CF5
E69D003564462F750F7DCE02DC23CC215A0696B74D8BD3156A392A94F557655E
00BFAA035647568ED66157FACC585E411F7F428569C147DC43F6E4FDE693D0F3
9917BEFEDF61FB980B85515FF6424824E2D995B05CA1E5D3E8BD8D3281DB7CE4
E54923E84058FFC0A8A2C491327D0F87CE4C352B724167CEE224DABA3B95757E
4A419594BE4F92E78BA6D35D4C93D31ECC3134B24A45DC32445725BB044F09A3
AA8C31EFC0A2944ACE2F2CE054CF24DB350FB3C71115518C24BDC0F7E54250AF
9D3378D38480E1CB9029F31570C619A28F065CA4FED5665EDB96712ABEB33B9B
4232C00C1B0215F08D53F7E430887035AC25BEAF06942FD1B6C442253C887AB7
D694C1A6115C8990B4CAF1E81DD1FDDD6B03C00055BE956BE7FD8A4E1049AE69
EDA8593CBA8C4A41E046C689FBBF9F1B64E5856A7FB1C61EC815A56DE2A8ED33
41F370B8203D4E5B19C63AE9E6E0D26F4F3814B5AF48AD30EC9B8402C941FDD9
722FCAFC638FBB835F83DC77F93D367266FA7DFFFCB567EF82B1695AB4D94D09
B18AC041811027229DF431F5CB2BBF6ACCE9D500C8F075A74590641C1A607C56
D2B8624797BCD9C91C3177818691FBB4744EDB6056464A0B95B8D63F7C22309B
82D6126E2057BCC9FE5566D96B7A9B201A09B0D3252A5494C8CA2C8BA8A13C29
37EF2A882D61DA708C279F663D88A8E2999A0F3B6F98C49901A7631BF7708B67
54D0B4C52BF4BE0DA0439E6763A7C9D639AD4092E77B13D3510DAE1475C978AC
796F9B2AAD3BFF35C5A3E19B5E2BF704B3BBDF68CE48BA4FA2496D60E58888EA
28AE12D00E9F0816FAC190590A865BB58569A91BF0345D01230ABA361442006D
BA2C90EC2036BBAB79EBAFC3F217DBD5854C519235F9627A1C3C71D21ED38AEF
0BB40F3B86BB9F09A3F309473D8757AB7E638DC1C59A7F9BCD49DE4107A2E54F
422767FB94048987847205584309397F554744690ACFFDF5902FE5DB355930B8
71863217830DD7A563B0B3A4025ACE75B0E777B4414B62A13B50C54E0E6D47E9
D43BF769B9411B74E1069BF71BA873B4B8973EC9BA492A5DEA58D267872BB246
10AA67B143D0E2223FFB4991E583E629413CC894C3FA4869B72D19CE1A0CEC8C
0FF5E5A3EC1FCB7D3C4289813F0D249A11B55104BD60B2A89BEF44CC77CCDA9A
065B8B83B4F4253AA1D535290DCFAA4773452D110D2B3370F9E2FE5432B54A9E
644EB3BA9BFF62347F376839024CD5EF3C5DFD30F412DD5474B7933E6A1AB63B
4B12F2417C72D0543C26A263AEA53E5BAEBD67E23553A72E949DEC556BEB5D09
C4D7A89B14FE4EC68D0E3E9D65A64B285E53590F418EDA8175113CA375A29930
DDCF4C71ABB26CEB800C2C2B253AC1F53651C88A56ABE5A74F3B54CB4FFDDB92
60AD7272BA25EC2F6FB759AA6E1E7964FB55AD09F4EB25DE45FD01833947BD05
6266AA8ABB7DD792941C7A070FCF3A4636FBF8921C70298D42FE92F079DBA2AD
6149D9CF9EF7264DE6DFCD4429949B15EA90B596340713BD61926DDB2BB23BE8
F9DE38A31620A817420A245946E551463960A8C5C7295E3B3D6A59BCDF5E472A
40B7A2CDDAA43CD8AAFC411D037142579D11054A903E102DF0D0C7B5BB854DBA
F3F086AF991F7F5D5C730F8F9AF213F25786F3EC0E54530FF912F4876FDE16B6
A07D0DC4FC46EC6363BCB68B83ACC448B801EC43FDD2F8BE0E93D809FF81E38E
176AE17C67C85FEA58EC95435434C49A950AA955D8B20989C550AB1F1C31B7FF
99422E1F48FB7D6F327C6DBC4695A03903DB275B94CB39386E46579271870A25
21823E75C377E9D5B46655E8CD8F986372CF8BA846423E26582315A9D19E0BF5
305C32B2A0EAC3ECB275B1D8BE11A37ADF524944219D94EA2C5DBDA768828B6D
775DA8CDB09E0570E4ADDF462EFD8D3FA3F86B1DEECDFFB699AF6507257C1879
16FC615868C2D51F03CD57BA38D42995D9164B257441210084DC409B6EE4C119
0B2E17B0A8D5326DD0010E4A325D5F77BF935693BC90A00A28C7B5F74817DA39
F47A41E32F4F92AA04D30D810F7B1484EB53AD8CFC8CE8928B570314E0F713F8
AF127227190F9C16BB73D2A217FF801C391A29095DA5E4974D137A0CAA7DE702
E20DD4755B1D78739756A5E7EC3542B96AD6844199FFA2F5F2E9C64E2DA4FB2A
ED79869F745C59D235438251BC2E6D26112AAED20E06021D1AB896EE1F1DD2EB
437FBD4A25E42245C5A647493FCC9922E6DD7AF57D5D482921D1CBD6F0F02949
C27777144751C1E72F4EE2BC343D4AE7A8A8758123B54FB1A026144C643651EF
0907A376945E19A8FC7F98A034832A5820A481B0823F980F59623E0511593FEA
BDE6EFBCC0383242CBD4954027B075B21F10472059A480D6E5ED01C3B07461CE
9810251A5C5643EC7403130C2246E8616CEA25EAC7A0076731FEA8CC43BCE3BE
933FCE61067F5FD402E67E2B9DAD954AA77C5BC86BC5E4BCE2ED676D8D8EC7D0
ABC5C86D82180B9D5D7451C71B5149B6B67883578DE9909317928C0A92E3205E
F23015400A1763A6FBF67FDE3318AD2696685A1832FC31CF38589EBC7CA1C818
60D2B2211E04EFCCEA88D9A9082E82951EEB123924A267CB03C48889032F2892
4227E217FA28F87E01CBF27BF1EA60641A4238258CB7AA355908FE36D90F5CAD
FE992D03A33E47CA9AEBEFDA57793F39DC6A9E85D5B289F6B862B35DBCF82E43
5CD6A862F6FFAC36478C384C3BDB0148CB1FEDF55969C776E77917635B5A65EB
F2AD351D21CD3822D43289FE8EB0FED58182997097C7E9F4373553AE1CA92083
EDE3BBE6C3BC7009D15AB5FEC6A59E9FD1BCC7B2099CA15FEF083B9CBF7B890E
CDDDE6BA0AFF306C76500C945DC91BD533FF9A585CEEDEF79238C54E6168001E
26FEB29E523EE501BFA4F60B782B1499B07084C35A2434B4D29D3D8E2C8F945F
A9922443B68D07DF7EAA1F4CDEFFC438B597D8943E231B5216808A85F30EDC81
9DF5DD22F54A45335B4C2203887475F39D247F0E7347BACFEAF220ED82F9263A
6488E73C1910023E505FDEB143006C1A351D441AC57F9D52D2C6D63D78C75605
999885676BBBAD56074298E0BFDACBA1830BA58E87F436CC670EE8EB1870154D
72DDBBF3794F8CAAA3F1E11DE29752DD99EAC695838A19BB67A1FA3829B6E0BC
5301610A0351AAA749F456AE31ADD87D6ABADCDD1FB3CE81C3713F48780DF407
530CB284B2AC709F52EE7AD647DEF9FA4D2A867CCEF728F3D40CF34C28D21527
10160B3DAFB5FE16AFC9D36C6EC4021FC189005862082BEA60AC72B63AD27D72
FAF3C2D89DA2648FC4C65104A069212D87144E8533CD86A6D73DC7CD9DBA25CE
7DA53B000266F3871B24663C77723703315C5E4A89DFCDBAB384AE7EB2F455AE
AB191FED406F7F6EC9E5B8276EF5C4CBA041AC7E8BCEC7CAE840154BDCA3232F
15711ABD1E867A434E9787CA0A6D1F197597DA27ED2402CB2D84ED082E8D3A39
81E6EB270DCA4E7A90E2BEBD3CBB3A2BE3CAB926192D7292CC16845B6399A543
BCFD224BB52F21352732DB5154FA3442733066CDC3E186D8AA97CD801DFBE43A
116C86889BE198DA88CA978B8C40ACB67E8F7BA499DE68A6FF0DC72C3D00BA1A
B378B39610F15CA026F95ED8155CE3FFFFA2E2FEB352DBE14CEE1669F2387B70
55B91185FBBED764266215D518716EDA3DFC9E5DB6B148A553E75AE5E38E1CFC
6EF47B314D54CF24BC13856F4F7C976BB91D143DE32FF49BFFC87E17885A1893
BA1B8E441B08EFC04F7D103C1FFBB665194B3D0920473740C55FB1C50EBCF717
A2359B687FCEAD65616EE89A68F8D91AFACAA0B238EE4AF0279AF5BE5294C3DE
A7E1F5E6248C0210E7D40683F04B12A933C746ECB517CF94BBCC6E4CF49AC715
D8005AFECBDFB7A6B417DB8A28F8E9EAF39CEC1CA64DF37A5E66A76C26F721F8
A63B003A040A62F87DCF61B298F960D510BEFA453F118E59E7DE8CA3DD002EF0
127EAF733D5C61B5132348D280F84D159809CC71A3C6F7373BBFD8D6EF715D34
0016DEFF14AA5F960BF1BB9AC304A1823722843547BB4CA5EA4C41C6C2701C8F
7BDC810443F9DF34BA469A3260009B799871BAF8523C8763544DCD0B382D44C5
F75046AFF85F0B5A3188C2EE786CEEE5496A5AF4BCB0B429CAFC403FB983EFE3
61FD9F52ADFC38E07A0FD7BACBA530D2E4DAB2592AA9564843E7E2305047F060
C5FE4243FA8FDF1B5D4F61ACA7850A604FBC6D6970959752695C90F78961B4E2
C8CFA41082B1A37405AABCEE5BA3DC2B9EA76F486117B84728EC6D8AE6379CCB
402C2AA89078EC992C00D53151E9D82C65643F549A572A20F05107A41BE5AC57
8EDE92AE20B05E2D0C98151CC92D5389A675DFE39DF546A33A84A4C534337ADE
B17C34E09145B37CE1EB1D10D42CC8D6E6B127A3809F7202381FDB88D42084CD
0AEAEB8A8288CB56870EA2BE9D0B9DC8291021CA561E2BA388DA3494E433E0EE
5E69DA51D0AC505C9F71562D3E9750F23CF14D2C8ECF0692FBBCB4A92B48B4B0
AA2163A447D5FBE86D961AE4D4251149F11C4BC269E10B48E8C42DC2484EDE87
6540CB8A5EA2494148D09CC9D5014EB73C29368A3945AAA1BA4C17BF640D2A0D
414293480FD600A77D37471828C4645C5A4AC4729F4EA76FC946810B4968EB0A
719D8F3E61D2B740AE9A33E9F02982A13ED4B6ED0C6C4A93A9E9EC045D0CDADF
DC01ABAD0BD95692907C04F06F06F1BF6259C8E71099FB64B4FE263D06C5854B
070C8B864D8ACA6EBF440DE14DA34A2A548C9F1557C70A4D718F4F881707851A
6DCC39BD8791D806F5DE551CDF8612C7EE6707D554CD826CF352CA634FCFAFC7
232F32B3F0EE3D2577915BEB212005E06625FFC9F49383C9C64F51B6541F6AC6
12D2359547103898D05E52CE54B46835
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMR10
%!PS-AdobeFont-1.0: CMR10 003.002
%%Title: CMR10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMR10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR10 def
/FontBBox {-40 -250 1009 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def
/FullName (CMR10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 13 /fl put
dup 14 /ffi put
dup 33 /exclam put
dup 37 /percent put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 63 /question put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 89 /Y put
dup 91 /bracketleft put
dup 93 /bracketright put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 123 /endash put
dup 124 /emdash put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3
9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B
B889CF6B19B051C243541591BA42B0738C360E479BF8D58E5318CD72CC4BB057
439C03CB5C9E7751731A4A86351C8B082E81EE08E8D3D565E42987DDAD250347
45F7B23B1DDA74A819B97ACC0587E3EC7907B15F83B2FE2DEBC3EC9499DCC6EF
390F64979D77A4C7CF94230D61E627529201F1A70E2887098E096AA5851D8B0E
229CCB625FD1336C8286D6411916911E0AB125CACB618E58B0206B8ECADB5439
AB712A9101FE2D8C879D563E0DB257BC36012C409E168D5E173BAF353164E7EB
30E8B709068CE066960AC2C49A0F464678859A030787464AC057A37CD992F0C4
8AA6FC3293D5D156BDB3A3D59D187984CE5032346BEA635B0822CA65809E1C8D
9500FEA9C21627AA0EE4E0A0302B131977468FEA4EA466656C57B03FF9B78E1B
6E1C682B9371B0E052C34963D94F33D2DE0FDE4F3607034AFA89C4E33CF45E8F
2351E839ABB8FE5B53054F863C7D984B3A18E6756521B384E131521A2D3C45FF
7F17198F6477BB26F006F989FDBEF6EE6B8290123A8B67E6AE0A93F92F34EFC3
5F225CC49082B1E571E0D872B58F17B9099DCD36CE1EF108F582E00D0BC6A657
C2EADEBEDE78F569345254A24CC597B395DFF1E6E181D854EE5B492BB36224BA
5CC66BA12954746992009BA80F4AF54C461140EA0A2558B74D749818C4EF9BD3
377E8CAE6C4E59330F9906C6732A1BAFD4B9C9EE0CC4F25889CCCD84E33191C2
27B269CAE6BC5F117865D1A0249B1623133EE28F654F40ABCF794C19DB379D67
01D997DD370BE73E380D857FEE3B047213AEDC309C0EB1D7F4B8C68B999BEB87
D4DD2A5B0203EA36BE785AD589B451B5B6F03994AE6C121CC80F1E1B7F5A7A12
69E21DB5A18C616A4F5CEBA8228BCAE6DC89F652D5C6424C6D08B436FA24FE21
EA8A6CD551D99EE3FB77B449F439CCE7D614F4858AC86F20192952329577BC07
041B903BF7E365C038FF8C8003F82A76F834D2E4E93E18318251B7C0149C9A18
3791320CB5EE247EAA68EC3C5832338F7E40BFD80D1C98764EF3528561AC7B97
23F2030B76D00312B88EB47470118E6D7588C7500011FCBCD1B1310C75AC850F
442368417A464E02AA7FCDE07FF213B5F8FCF7156859F14F2F59994DAEC9A3D2
8BD9809FEE07FD469D98961541EBE06FA21B47A2C431ED3DEFC7267AD9DE87E2
3C22BB9FE903A205E1854AD4364CB8A30547FBF908AE01D336DE209D7EFDECC8
DD734D1B603806116DD724CC6E5CCECDB7A7F6BFA1CCA0C93C9789159A49FEDE
F296CE3177297B6935C9C444D049E9EDA646059ACB312861AAF8B74926921453
DE8DF32965E05BCD2E05A00C46F28D9F6293E8614966D592377BAEFD8E3EE8BF
B0B49AAA80337080E6B8A614DDB8D22DA94EFC15B94DFC1DE2085C84C59389AC
A7E9F90140A3918609C50C6302709B3E80DC852B57327ACA35C0B7C20B224874
5501CFAA4364CF4FBA590AF5C42C194788D20A0F3158339B30839EE1330B772B
45312FAFA673968722570335B137D3CF2C960CC7D5E2185366ED89C6ACC6BFCE
546D522706D88C86E9D2025950BAC6904F07CC14331792901E33FAB70C500F52
51C675944D912D9E83FB04D869E7BD5905A58D195FFA880074DE4D9DAB467129
8B2512C9CD68EAD718912A34D5936819DD96AEE121BD19ADF4936D2D0C1BD29C
D34D59DCF7E38BF93A153BF09FE8B66BA041C93BE6E1413C60408C67F7721480
078B472415DD3C77E804646C4EBC7B0BE56149531BECD859C9885E7F6A0CAD31
2745BE043E9D7814ADDB4F11958EAE8CDD61CDE8805FE28B9ADBBFBF46CC1C06
0E5E26BE8A2FD3FFAB6BDB3005D8EBA6244D7FC742F2469DADBB6B1DD7A53027
18DC0832719C5CF5A966F3C351EFC43325645A713451A9078D16C83F84BCA13F
8FA438CD0BA8072F77A9DD12C1E6BA2744484B29AA9F4207B309B40FACF815D5
7DCC4E9459BE76B471D10BD5C1D8B506F44466627797B15FBC27F7BB331AD06A
BEBE440B9B422E64C4098278B09BFF9FEF74CEE16D20985BFEE25F4498D3409F
B5326B24C471AD74BB3D3F527348574CCF9343ADDA08156FB1E6117FB21C28F5
A7D8FA473DD7934595BD996F6023A64DBFDC1A5FD40718656FDD7147856CA466
C9A8EBCD6C3AD71A1949F049CA5E9CC4B52E9708971E3D5449F4B83337F89036
4233928D394014B590502491310ED1EFBDE13544B856AD10C73FF2BCBC1A77C1
9C9BDB4426791F3F1AFB3DA7D5102726376DB1B59C3C5C29787ECF7D6F16559B
6F53829103F9CA4A8E886635E3C15ECA68CDDBDEB160D881C5399AF150512C77
25EACDC016EAE6ED423CAD02879BE4835313E327FC396053909C6A7377787ADD
A3BACA9E0323984E651B1BEE0D66BBA9B2EE9650552271020C3EA3AE33607DB3
2A00177997B674DB8BB3B4F180DAA1225A5FD10426E41BEB159CCB26A5AE326C
F8ABC225B0E400BEF294AD0BE5A53330133C6A49079FD6CBD1448CF3CF858250
964F7992A0A0FCD1A7DAC82D9AC0DE5B6E8F976AE892F309B8C321B1C0DC2573
2D1D32A81B1F3940FB445134A9805F40B3D58F5379462C08C8815468D510CF0A
7D1C3FB6DEF5F9EC63842E755189F121BB394F9D38159C8472F52061DD6BBF5B
9EB427971B66A395B1A0E706142F8CBDD8B9B7D49A543784C643439EFCCB1509
810F54EF1C711F25E4FBAEBDE4472FE62256225EB95052B0AE924C28A2573457
E8A6007303A2EF4488692E726C0552827DA03147024D5F05F3BBCF3B6A8C0682
8A5BA823D60EC8238F998B1B1A5993F4CACEFCE5A95981BF8F7854D840AD4869
1C2A47DF050682758E63D76466BFD474A1072E5118DAAEAA603F431B2BCB28A7
373F882024097E79F7F36CA5654039F3BF5AF7B3AA3A23F60FFDCD875289AD49
1783F252E49C557477B38A59E24E7B14727B086F276472546502151433C7C0C9
A772CFAB8FC2983315F8958917FF69818184661E8D470C8FCE3F0BA030F6FD91
E9E6D45D26EE8ED5416A5920E7B96226EDF5FA4B9CF430BC88CB98E48400E200
BFCEADE1C3F1D6CAA60E567EBAA85F039D55905E4B79231DA61A01A62FB03473
A98E06CFB9BFA5C78ECDD2D12DC0BC5D72B748B35F2A2E1C3A14A4D70E8AAEB2
9BADA2F4CB29BE8BCB7082E6A6B298930DE5E32CBC4CDB2F96BC83B299026182
81E6114425A53ADCD64C3CF94A981A4F8D672068803A05DECD9D47E4669BA5F9
5D63AFDEF1F0A9EDB0A4EDBC3BEF219FD72CE493015040707B90C41AFF770000
1FC8B865D2B412DA43EB1E3294D0592B54D919E311B6ADE903B29FA533B77E32
09DF9F815677B7721C9975CBA346DF160E6EC54CB82CA6C64DCE305DE7C1B59D
C216EC7BB0A046CA1EEDC05579758BF0B155C120793D45A042BEDA99274FED76
37768AFD7C810A26976D58B5075762D53910DE1DA605903AF95F141F936A12E7
B8F14ECE0CB00DACB0D7046F1E7824AD6323EAC3C38E7D508BCF6743C3635285
99618210AE1EEA6234DD65C073356906B917BE7D4DCC8E5F7C5C9D170AF11674
F3535DAB490E0F75FF3C27952DC2E1C41060B26D517EFE0990B7BB874D2CF298
0D9F4CB6065F164A5242790F04BB0C6B188309F9D6D536E9E73129FBC6B353DA
579452BB18A9DE8C69ED7F226EBF70304BE2152EB0CA2128E1708C396CEAFC22
C750752A6B8411994A37C56480C6961D4C4CC460B35AC4D1CDD791A3F0084111
BBC8F14FBB57279B0CE70B4E7DDC5D0E3F9E07539C802EFADF8215647C83B8B4
4042F08D696EE8F2F9A7D5DF58FC76BEF1996FC06001C3EF1704C19C8475FBF1
66585A792DFEF401B8D0CD24F900DAC40CEAED9290A078C85A84003435A91198
648A941C64D121703FC4C9FC601FEA3FC202C8BBF25F14A83128F3DAB193E6D0
FF39BA1FC881AE331C0DD1774CFC5FCECEFE203EAF10EFF73FB2764C83F7FDA2
17D78AAA03C4FCB684F78E2D55679A84199E0DE0F4CBD156EF33E97194898E79
8EBD917EC50BAB143CC336AD03A59D54180A4873C309956ED97338A37788730D
6AE8D68D1DAB3574F6F89C5D822800B7A981377FA71F5F1CD1D76C771CE96E5F
B5DCA941912954205BD370F381F41A160000450B7E7133F12D3815AA654F23FE
F0BA6874525EBC4520ECC4E4931D2FCA7F3925001E64CFD87C5AECC839B5A799
005E94BDEF8EF4B9C11030E9978842E561295F51E894B910C7A1F2D63398A761
555A356CE58C01C9258CC71C2E0CAB82CF10882D3DB8A684222B6C3C2D5E4402
2CCB56D2D8AA7450D22A8FF7418B1748B2B229488CF16B26821428DDB621513C
D600F05283B9AA073BE1ABA1EADF87CEDAED33938759F5E4E7C446BB08D42023
B94C5E028ACF5D50D74D647D3426CED4E7C95929334C5531FBCFA817E4A6455E
7BDE5043CC675A1A6CD75D3F1CC2B9579E4850B92B50B55E2297CA36425BFFFF
CCEE6AFA0276E2611B64E03C632FAFA673968722570EDB2E12DDBD84D00D951D
4CF9596CF11351DB63BD8D127DBE714883A2C2ADF1F00F45FDB144BEF35888E8
7E3AF5D52D9B9454A951BB4ECDA998E7BAB4626F68D056E73FBDF15640CB97B6
668B44516E314EDF4F4361872DFA822171A97298789FF51B3C937571D05F2C9A
D80582F27BA5BBF83AD7F94E4D2A33221CC91F75DD1A3FF147BA0044564E9823
AD5EFFD56982FEFC64E0CE5669C3216F7ACA6101C99FBF7D9B552475FE671E64
A0F7EDC4467F8F7D6682BAE783836252925949EE6541FE6ACFCD485E3264D233
04392EC1A7FF189B34CD3C5FD0740304486FA047441F0C93B173559B52850A36
07E3A4F53DBE3356BE4305F8CD2F03BDFD3E6E19171F40ACAF3EAB362D65C77F
144AE81EDB3E91C3296FD7A7FD486C351962654ECC12890FFA2021DF3D07B1D8
5966F499A59E3F8F3C1C9CB26730CC1CA91F2C0336DBE026B577A8DD48AC6296
9C74440792BC6CC210B85FFECAF3486A148DEDCE12C650BCE860BEAE63306DD3
E85379630741E9AA38E6D681775574A9C47C809A6A2300B20C5BDFCF8A06F58E
34BEE5BD7316A7691308674C31C01D072596D490DC5E4C9DA73CBDFAB0AD9DF8
B7E284EA0E0E24702BDACA920D8417EF0704F5B135A55991A6D6A1EA41DDD4F6
224A453BB6D2AC630043F135D3A87CB949BF09C3E3961992B0B814AB033802BA
3687C6484E22C0DA6DCA0EAB6F57922F908B8DF9AC87F07014E2D1960E8FBA72
C6874B0257506A2ACA18ED34D89677F225399649B74825524E664CA8249F8D4A
0D030D6EA5A4E3622BF9ABA9ABF1ADE79C0098A1E137C778E34C5370277EDD79
4F5D2A2B62F1744AF6B4928FAD544869BAFE10CB653839DAF80F186BE2D54C98
86CE37E89F7690D4274F61436D0FE52083485A2279FFBEAB7DE8C6C2F01C172A
1CAF8F21A6B6BBCC0574A458CBD93483D0872524DDB7210AAA0C8B3E53672E5F
3BC7CECDC503A758CD74E8C0D04F5934BCE704CBC4A59A013FAB5C230B07188A
593895A7F9D5477343D819C289525C70014E16322BF76B5853B9FC5A55CD3336
1F8544A93935613E3BA61CB8B1879039BE5D54DC2C72D349A5809436B857B7E8
D102CF0D60FB8CF0E6C9E98E1EB82DC081A372A5AB7CB1CF1B6B45E880D414E2
3FD2ABC318DFD74EBE2704CDCD7685875C86B61D0CEA2802E54152BF928A3EE3
ABAE82DCC81805F3FA3EE36FCD230DC3B9BA6E11AC2FD21DCBCBAFDF18324AB3
7E68874FC5775550B20C2E601D880DB82AFF44590412E692AFFAB3E58F7C38E5
925730B3F0778B8E4C7A1491CF58C1A3F476525875AC3DB2F0AEDDFFDC26AB78
88FCAB6BE27A1D7BDD4BFEAE7B5AD6767912152AF32493A2789018DB4E91F332
6A24D7D82B5F64B4D488B4250F493665A00C1201FB3C89786B12CCDBE862C750
E8383F78EEE2DA335090B59D663C6F38308BA53C84B370860106D6EEEAE4A8F5
0CF21AFE4CCD772D05046AB1710650B3E046586BBB7FD4028A3FACE9191B2BEE
4EF7101FD01202DE534C513CD96427AD7D0129D64D94BDEF1B44A694BC4C55A9
65AFA1DF87CCE415E7354D9B2D8AAE8EC6A48509A9B4A9A015BA1C9995FD819B
139A091E3872855E3E4E74236AAEFF3E12FEF04D54EEB9ED998DFF7C0A2C1C61
7D894C03E96AB62F0E91764E85E048D9CB61AF4271C6FC00B5BA86C48A9BA096
64019B612AADF0333876B949E9A454594FBD70BECE9C8979CD4192A33D6BE91C
D33BBE98FBD04AF336C50DFA70F1206F2D372285D244A26757B6A1D52506754E
36095CF62022AE27112A695B2006AE919672675D9DB400844A5E02C8816D59E4
A29C13ADA719E5815A1BA85C8520FC2DDE9614DD117AB3D25813A8FF37669A07
1B34B46A922EF5EE121ECBC4A8218904FB441EDFA0CFBEF818FEF7223554473F
DB90649AD0E2806ABCF7E2D30656F3549BC033F6D1A5B6E1D8A2493E2F649142
77A8F663A2C3A792016C587A97A3DB262E3F7E550E6415CA165ECA95E9775202
164B8DE872A37A322B05D4F1E0F7507F1DFD6B79BF9E068A6EB4329582329E2C
DA61D7589EE41C21C07B153393C87A3F0579876EAF01B3E555DB9D6F8A1EF5C3
6A5B37A01A2D02266BAE8AB55828273DD32EF93D5F7C1C443D043BA35509C398
73E29BA3BCC12B217935E6EC831FD2BF0EE7C3172D8A544242ABCD6D7C90A62C
ADC6A77A9D14972BCFDEB8257546730FF67BC3451D056B6A92A1B4544E2829AB
354AD6F077BC812A2A2491E92E8C22F971D36C681D694F0F66655F6ABEE8D780
9E7743FFA2D4506D1321F566D32C2EBF5AF9FB80055346287A6AF330C22C9DC4
D8241D8CFF5C536843AC49FF433BE402B5E4EFF908AF81788E960E7D6EB6EEA0
CA74671E2D5E4CB5BADDB3221710CFFBBB59139E2D26EF44E56CA680138D97D2
64D86208081585CD9A31CE5251EE1D3A55395AE938B51380EF1B6C7880625028
E95B9AC2AC1AB7ACF58776E95FD084EBFD02DCE0E067966AED6E96395D399EB2
968D0360FF6ED5C66164E88E2E7A8E19C275AFCBE8902F51F58226AAA56DB14E
95A6EB9F0245269A62DF36568745EE767A8A1905F38C8F9D4F95DE5F9A92E73F
8724590D81873D531DF4FB4C9BBE77D75CC68B6493BF2B6483298CDD53190AB3
4F923CE0750A61C5D0F26829E5364CE9DE8935AFE17D8D6D3ECF81D2C670DBE3
34ADB99F56D8944B8BDC3CD6FA7E4B8604E5BBD0548E64010A46460B177C0190
58C8B5D4E441FA05297E00AB84D48E4F22267588C0F4A5BB27B11367DD2E6EAF
050A90CC422043B8EA488EA2957165B6AFD42B7C1C48977C5DAB396A2485FEFB
E3D25FC76CA2DF3FD6CBA230386281B0716D361064E06E6A586F2F2C75636831
9691E490A23B0C4CCAF9CF30161550607362D7C30FB43371B986D9F1D55C7E30
2B836B700D0A23B122EC00AAF3FE16624136201CDE6D4D3EC8A07D6AB6F5A52A
B5B7E04AADCE5D79141D9E6DD0EF9183B9E686E6AC1262E38F32C09D99662E4E
D7CD8DDA5C28423FB00795B7D33815AD0F6EAF49C650A834FCC33D67A75F8043
F7E8476CC6CC841791195C9D41F935D6C2B1E89A8792288E6B3890D998B7EB6B
4A02A5C98104F8D3B0BECD94110CA1F0CD0BCD50F73792B8FE0775D632FFC535
DAA2F69994670F712EA7FA244712B1E9D80F98EAF5063E373A08D1838F2EF6AE
513C65DBD62C3D4DB499AA5B70C388FE84C209D37E2E4F28401CBFD04DEFFA91
23A8DC03CADED084F601AD5F9464C70670F41EF9FCDA7D070526C96481E0B4E7
AEDF070745A4FA25CDA050C64AB38ACE589201579BF45031623F15C474FF9827
D070065083557D47356D321931C6BF5DB02D3B25E205F4197D2F510412651D48
999980E676384958D73FA51DF67198A045C5D624B425B143874B160F4127D197
E625AE14F496FE491E7860252C57F0548D2FABC6A2F9181AF803312712BAF167
F7E588FDDFEB1171C139ED53876D39F27A0B4E285AC37BF483BD197AB2C1E6BB
276FD0C64CE25F78AE5674F33F53CE5D7B8E4B698CA39FC7771C7D99C9A99B0A
ABDF4313A8031445DB5EC1CE57566D996A14CA459D3B9B4637A92F3A703AFA39
B7C23B2C24BCD94CE91F4D0C670A6912C9F046EBD58FBEC204CF9B71AAE4A475
2F9BDE24EBEB609E7E33869D640EE96C91A5AAF1547B42806D5E65874DA42E4E
728BA8261BC9D191ECA5E108A7338E212327737F486BDFBF184E3B93ED2721E9
25782B029050903F85BCBA4AB8EC682632E5B4F072D8979AC3F6034DC16E5CA9
53B8DA63D095D0E955A8E0639861B9792C92F4059F87530C3AC4F2B9FFC3E67D
DA40497193F4E4EB75FAD0B7862839484EE51712B0129E5CAE050FBD1DDD53B4
347BDAB6E7584F67558194EC0F9892886B5530CE817B56867B32DAD6CCB38D9A
9EDE0F98A9BEA0BAF254FFA2FAAC4A1CACCB6C2DC49AD044A93ED62AC448635A
43F78FEDB5D64561268A4E014C450FA73A447CF042ED7B82687056B1BBFF5140
C2BE6C22AB13F93ECB0AEC3B46B2150DE67F61D1874DF74FF72B8FD2D17EF3C1
9A19B24EBD5CD2970881C215788D94C8C45AD1FAD10A5177BDCF5CCB8DBC068B
82FF2DD1251BF3EE5842E485EEAF1A4153107D176839AC351C1A8B2075C14CC6
44F8DF394DA12BC8B71F0185337B10C7CC40AEDFF6949E3F7AC9EAFA461FBDC3
4E53E9AC3CBC490F002173F64D06CBFC01F0EA13D43B6FBE9AF4357F28357071
A6C4FA83F885FAFF6444DB885C0054C4DB2747C1999177236718608AC5D90D8A
BF20CF381C271ED9ACF84A5CCF3F8779FABCEA3FC4A9D8BD2E4577B6049AAC65
0191BB9B24EED5879A770C751E3DED90F740E596100160A0428FD3ECA0DECFB5
2B3776DB05B5C60C9357B5EC08DFE7D4613BE616DC0F43B1E54F2BED31C9E5A1
8150DF6E8C105C5C9A4D68C5632FAA424D403BAF0E0B1A6C03300D77A79B557D
B0CA610BA2EDABA4D5AC84F45130C1C8379566C21FA581E86060A0BB8CF05C6E
56D50A3FBE6D956C3213A431D383B500E1D4CBEA4663B86DACA0172A7D58A69B
B63A589C233A98C7D58DDCE11A5169E545C97B52E999B50E529A285B0FA36373
9B3B410F65665013CD331B6046F6DEC02DA94358A50663A816A445E471619330
C166A1AF0859F1ED753CB78387468BBAB37C8EC8FC6B42DD14F22BD3DBBC2631
22187EDA894DC54FF817C15B208F76758BA19F58F7ABD7F2996C2448800DD163
91C471F61B8312B598638337E276F4D8D3DA6093302F4CD206DB7BA2137AD9E2
DE4CA012373ECC61DB093F6B26E33A7950A6239F408D2B6C7ADE207154E316C6
F7FBF8D6024F7C9E734893FC1419157DD1E89F9B35B99172B2AD0BCC85342EB8
9762235165062D5C4C846FF65C947290BE56E2DEAED44045CCBC2795AD0FDB5F
47BDFC2FDD333FA4D703215059D2BC6A786A0407A35C9605DCD6DABD9687B454
35E449761C9B7BE7ED5F6E2740D188A930121D50156B98AFCC50D0D7598A965E
C9FAE438A579EBA81C049E77CC224F49177ED483C9C4CB04F060CC329145F1AA
0BB3D89779711311B76F33391EA29545FA902872338B73428180B82EB7B3B98B
C9177661E329C59E746AC8A9A69D236591DABA9890814C0F6868671F423455C6
2C35E36C2FD620185D6558696AE1EE2DC93FF5B59BCA5D9A3A925B2736DE206E
A0E1EFECE2BE6E857EF419616A0D2E8391958775C0E203886C69CFFF5729FA04
706500599F7D6C85F4AEE6240E978692391EB30540E6F053D2CB18CD4656D798
6D81EA86764045302FD39B466A1D0A5FDD3FD3CA99E0022D44649BE2CDE251B5
0F2ED532775DC6F30ED37C3C85847E28D48F545D88FE3F65AD79AAEC52884A2F
13A48CA1D8F47345C9F037494922A8652ACC7DD93EF61ABC90479BFBD28E6116
8775EDC63197D6B5A78173F07E3FD7A1CA1A284FCBCE6E04C721AE9EB9475762
8C50313F073D169266BB3987DC061D4A46A251070D67D108BAEC6C9D6EA71BDF
5509AAAE94DF75006F4112A07167A55AFDC0C731EE3157C1A84E0D0AE50C1FE5
ED9B9589D0DBD3DE8BB0B69EF50322064E7A15A70FB590D88C960D15113BD945
B560818C6621EBE1986A654B517EEE2447D4442F11C067D219565BE656D17486
6CEF11B58A04C1B2C480A183A377566365686138C6F19B4DAE1DDF8E6C62238D
56C01032132601CD7EDC543747B3A51EF4BBBA4B3531855AD86ACDFA182BD0E8
11807A71FF011801D1487F4031379D5F88663ECEEFEC33FB709EDBE34C105E9D
0DAFD5214CE401B6B74936CF756916176ADC58458DF8C341CDAF22C2E56ACDB2
A38970E1D95A50CA4671A0D83078E9BCF6AA1964D3CB0CCFB20CAC3823DB7F88
9DFBA28864C8F70E23B53ED1465D3A003CEB00A0BAB6083DE3B3E28BD267DE9E
E27E2E166BA0248DBA29D27EFABB95A488067B59A899091699D3AE86E103B997
E2470F1D4A3BEB77C234D10193FADFF2EFD7DCFD06B05F6A4AD4136085B7B7F9
13F84BBC797DAC7D91E95F652C37135BB67D1E0DDB8E72A8B9068DC7D8E23529
EAE0AC524B2AD0F9478322215E9FF951AA9A38B53051A2A795603FD2E05A1A7B
E470BFE07D58ED2B4D240A62FD0A3FD2A3EA1EEB600172BFC34B97D8A9DFCBD0
BCF7FA7E8A1C9EE38DFD24A3F938E504580D5A4846DC234C6771038B2A9109D0
0337F20A65EB0B1F645541518D21E00C51F7DCD35B5455CE177C3D2C94A42430
90E29321C345C7F3F049CE1710065A2F7612305EE2989C9BCFD6A7D250A25A0A
F011B225DCFC1045A2BE79CDC0C20FE4AE6B02432B932A42C850E1BF62D1ECB2
3872A976133A0C1BE5A2802BFDD27DF28E04A27AE8060AF69DD42B77865E17E1
7F9D6407D9E7398DD99A002C512AE6EDF8545F842C527B64D5F4A2FB801168A7
2CD96EA6070F102B5AA62BFFDBE4CEB2962341816AC4C883EE616582C8843692
529B587C04E3BF2C3354149153847503D20FB7DE5BFB6F8E9D6D847A9B543258
74AA75296FBA3F4D437EA8650CAC1FB7553B07FC08BCF64BDA2A9312BE31E478
8002D54DEA52E029E7AE20A695B8DFB8A4B9A904A9DBAF3ED443E932F28CD722
7C8DF6340EB47754AFB097BAC127D28E1692B62813C97D803F7CE308E51B0DCF
2D6DB2163AFCB14B3A3DF9D8ADEF240E6DB48BC5D0E7E248F6265A6C61898786
2D7916F88CD73AA77324B20EACF9431901E07CF2AA2315DE07A4C045C39CF793
D68DCE8C2C179F980EBE23231E190806B98071E2A48FDD4CB6246EE8C67EC198
DA52181D69AE83DE11FFF1D03CABAA22C512941E34D15BEC65F166439EE99C47
ADA658DE0321798B25B1B56FCE9856EBC2BFD45B12543C13CAA3614816E57C55
9A79C99E3B7012136FC790CD70C4F1B8CFD47C98B3DE6114DA73A0CCE130AF05
C882ACC3DF46ECE961277DE46D17FBC00D20D2F3763F0215A353A2B08BDC9F12
8A5B23D8225B07268864828D60CC8C0C179269FB9D0E2368E84EEC059E270B7F
3BA17868A6E988CB0439B54340BC9FD770D9D4104696886D655D61705CEB32B7
5260F478AC37C157BE334A3E139230AB21EF19F21EE37E3E6E39A22AA003071B
030A4A09CB2F51F7D0BBE83470254428E3FD3798348C7B8465C94D852476DFFD
B831E552620AACFC9C3C36C33F838E48A30BA4768F4C0C515F8C8E4662563330
D27AFAA023B97C36DBF9475F865D351D6734F444572D4451C13EC55C615A15BD
498A2EC2F733E5139383C9EFA4FE5E43AAB873E05564F41DE73ED7B2A6AFCDC1
92D0BAC0331EA939EA307D8BF146879C2F65EF38562104B881F91A64291D250C
00C6FF4C6FF99BAD53463AD4150DF9ED3AB9A1DF8B8BE723BA2B56A72AD797DF
286765E677E51A24ED812F3C988BF3ABA93C096CCA7C54627C02033177FAB50E
0AB9FFC291999D9F3CF8DEB3F04D4266BC16EC17989C109A3F6B0F03E412E1A1
B94F0EC606E11A9FC051F3FADD2D5D5F50FC8B3C7E53C4B8A0749A1DDF1F3C05
19C54E4CEBF106F66CC433CE2B0E5FC5D0F445A64301B0DF34D08122EAF74CE5
D5E07A6FF513ABDE6F6AB44056373F68C5FDC645680904CF1FBB29216B3BD13F
2638478ABE06C108A864D4915E77FADB354D61A3A16F63869B1E3EEE97EEA001
AA385BEC5924085692E9770DFD45BC655122851E97CB0A5AA548FB9A5DB64AE8
BC281BE87273E77754C21EF783AED640E24878A8EA27B4E30D7008032B1E44ED
F3C8E24B6C9C4B1BD6F94FFF9FDA73B73A7A2274D249E64A28C53A8C23D94A59
5B38E6326C87774B16C71E387F99A421BE011E9FF673D571B8FE5BB8BD96290D
5209364542B5367E982E0E370B3D8166241370D04365C8A7E9BE0F679BC9331D
B380BF9C5C63318FB924F06D1B500C1BEE9EB8387896E62BA6B3F00F82DA5530
0CFC6635DB2E383FB899FA832F682E6973E61868B1E4B59C6865D659EF661680
57405F1EE16A0B5BCACA764A8F8B53FC5429205AD3B6C1D86CED07C9A1C6E3AF
A1DA999B089947B27A52E7D4D0F0A4D13061D19AB65B955C72AC09A5803568B9
797FC404BE2C668AD29CF194ADA282B0D904BC4673666498661D5A67413A1275
1E333DC5ACFC8A010C5BA31318404D76A7C31A434AF3B4CA4CD6591832F67EDA
290E1E98E145A3854EB3102A28A9455550A85E8286BCB3960DB00A35A01384E7
425D02E35C8F96973F356EAE0EB226D38FF9B105A9409306E80202664B6E07CD
4E3BCB5A728D2E23C856FA4A31C6208BA9C941F0567A65339E2BC7C0685A7FD9
A0470899ECB983E1708A2E2598D1B17EF577B9DEC01DFB9777F4BBB6DC4069F8
13711253D038610592776D52B2943508BD5676F14B62EE02DB1CDFE295442E51
49B8A2097F82A9890ACEF4D2496C30467F89E0118FA9A85401FC5781CD3BB8FF
4940005F809A9AB9084BBC0CB1E5DE32096DC7EFD8B2B25A3AD235845B2CF464
E05954038DA72ADA6BDF3087A0236449115E170812A3A9DCBADABDB4D7EC7D81
99B68214DE4CC6CCF81BD8523E93888BDC786C815E74242A3F001710672BBF10
FE81A5702BD62151EAAC930FDD6AAFCD353638F7AB0D66D4BC10F7F3D2FEF6D9
73E783C4D6C5190B8341612DA99F94F9D5435A3AEA557C8821EF785B0AA30887
77D10AC58117F87ACB5D049C0E033214C852B2D3C4066C4F3FC6D119E78FF1FB
15980C38C62D210A142ADEA167FB4EC37BFA1E828E71C4C491C9A94622E4AF8C
8ACED241953DB58ED2E20625DF53868E08320643D5FFC4EBE93758271AE35B4E
803E4A972DB1E00759042B5432A8BA7DC9B877F0D82B343502273A308F50C461
1AA5215CDE0F6310025BB5B3ED04ECADE81A3D497873D27AD5B1E0B4C3954650
2E64267290CDA82AE1C05B47BE70E8C5BB8F2E5CA9866BEE012434BABBEAD38C
C98FDE2862FA6AA8C5D0997E32D19E719A1F53F71ACAF88F705C3046DF880687
8474C2DA7C73A5C662B009EED071B1173C1ED59EA94E21B888750AD5B753EBD3
3D68495F4F75E4986676E25F82A746D714D79B63DF3B685F7F2CFFCEC07E9C31
01FA7CA4A52C538A966FAE8578E42D2B956A10A6EB4D56CAD4FF92E99B178A34
7E865554A18BF0292CD25EAE2188138CC33D270E4884AAE86CB7AD92A47C842A
ACE87CA1B4CAF2DE07645264DE1F0218A451062EBBCEB92CDBB80C7C53C80346
F24B8481F3B8494FA454BB1AAC3943F9E53ACDC6BDD7693AAF3273AA7FAA9402
186417D573C68F3C370520D6C35784543785540C815C789F534025DB338B1D0D
85A26A6291B7AF87D168EB28CC1010B66E059F4E2B68244FF35C1B53FADF2C8E
6DF11CE6A8555E6865353B7FBEC43D9C615790C684E841CE6472CE1344CA2017
F7BAAB95DE30E6BECA8442CB623A8F0E5FF04F906F23EFB6806C8D68601E496E
32367CC9D254043FF2BB1B1F800502F2BDDCC5FE4CE7349AD95C16E65AB744B6
FD253B221E082B3236BFE8AF883BC6AED36B4DD932E43D3573A13283DA12A198
6EC6B54A28AC46088A5695DE78F25EA6ABB436A400DC53AC216C01DA8B4A3831
564DDCF17B955CDCC37CA05EAD97D4AB9E5B9B4ED20BD09D33D75A7126AE7C7B
2B8EFB44B911DD98D2705CE5DBE80029E85F1505D735B9A7DF3664216C5276D2
21E303414328D31F08842BD582C305D0922162AF9DB17587C5FC55A7789E527E
EB43313A3841CAA3744C732B0A64176D9D9EE5D5978C12F6019A8EFB0B58BCCB
B1798A87AD789D7A1A0355C13BC219C426A4F884EE955F031521B2FCB9A96154
DDB591672927AC2413DE4F15D6FBCAA7FC72D3B1A94A79F63FD17EDE4234981D
514E1514CAAA39F2624E4A6D4B9F6FA1ACCAFEA036348AAB13481AB4FCF7D08E
61C393A58BDA7E1E27CB13D8DFAD0E803A24A45696CFB1D0CB97B43F144061EE
53A6C8805FDA2799139A82B2A4C83F8BC11392D1E775929B91E44417338C31C1
344E2F7C985C03BC36ADDAA327EE1C2C39165468003C997D0215D94F4A4B4C0B
128E14ACBD957E3C2C36B8065DC578CCB2E436E7A8619CF3F48A3FE5F4CF84D0
212F812931AD6252A8FCCA33797C9642AB1F8FBB8A4F0B498D44964C45290423
163A7340E9423F8942DDEDEE6E1FD5EE9C00BB1712A05D625B3B75D63C449EAF
96438DE3D56905879B39C338D51801E834A438361ECAD75D85579CACA00C83DD
D8F53A587DA9463BA3DB07052A539DACB330560FA30AE77E239ADC1E1ADE16FF
555AA32195EA2DC865D1173A7234EBE565B08C25E6D2E012DEE128ECD369410A
D22F2354DDDBA62461C0B25DAA28A61F7CA33A5D405253921E83916C01E5ECC9
BDCCDE9A8E9F83028F47F61154549ED5E9211CA29E46553BFBC1A066BDAA0F69
88F420764C3A102D1CF352A4E54A649EBDD587D56FB89FD9BECD7F1DA1FE2A0E
5FDCC9F741B624B0C641B6F17414B0F0E9791E794C4FD628577F55F7F4806403
62A61280CF59699EFDC74B618330C720457BD73038C8514DBD4B479A7AE28317
348C5016A2FB5795CC7D0EE46646BFBD0FABC8D9D20BBF133A4C2456A51BD68A
4696A528534AF2ABE6A503DC76D2C6633BD227A02ACC62A5313B9DA70B4BE5BA
D8BFEFF3DD4224A6C6D96BD2322217DB0450A68C788EAA618404CB7AEF9CB75B
AD39F59092A13C9EFF7FEDDD5F1C872B80000949C6FF418F40838CC3371AD625
BF2A51F46EA2F451F29381AE8C719E96B544772E43DC60DBE33575ED357C59BF
146469C50880EFCEB8D91A76A942A52C5E20BA7213ED6D12580D4E12F8D5C8D0
E731ADCB6DA94D1C498A1C8CA3B88F5DC29063E043CB1610ED9CC0EFEA122B3F
9DEBD2FAF31FA8C16D39B41049D5586DBAE9F3BB680CCE74A053416241090D01
79929A5D17047641E9E01145EF04C59DCA92C99C72A6E450FDD462AA97CD724F
91E452A6C7BAF10F9663F370BD82F1DF6821808F3EE971F8AD22F10129B55D3C
69E43F8EFD8DCFE64D191BDCEB6F3813ECFEC667021FE72EBAA04083F8773490
ED73F110C094FD55BED46748C22BFD936C952ADFAEFDD97BD87B20D791780AD6
CDAA8652BE4F068EB14040FA01CAF3F15246AD0487A2728432B37CDE9ADE14DC
6D8AC1DD9CD3A5333C5F1A0ACDCC181A050655CFDB8596083A64E819D17C5E5A
DD32462B04B346523B1D2FE542BB3267C06C3A45F451BF28E32A8930D145CD4B
394119EC00A4502DEE350BA643EFB74F01F32A7015975DBC98B448530A6779E6
638E42999F51636FDABD6B58F8E3995339F7FF3A9F52241F9917E32A3F610B66
C711882BE72751B7B73886C167C626D934DDA1387E89D9A13B88628935C5E699
1032DB69EE9D00EE530D2BB5F5B45053FED98719EEE851E1A36DDBD83FF86B80
F5FC12216105DCECF8C4AF41A96E412E0C2F1866F53139131638AE35A73911B1
D96C8B8FA40C246CA8E92795271F99EF9285EFDA72715F52300D473FBBE977F5
C5DAFE04BDA286BCEA940E3FA2BD7FAAF157480021D1211C2096AB1974A154D0
091121E018EA0399880B21A26081670B26887BF14959D4A21FD139836F412654
4A51084977F044FEB4810393F8418C32E0A2A0C03302D333D1EC32C188F311A1
924CF48A2FDE0700430AEAD23F3FA4B230472208A940EBBDB7826237F4B6F730
71268A49C220DFA4B9FC0144CDFBAA4602E33EF7541AFC3D5472F4525FE4F74E
D4CE53389021E711C9AA8F0FAFB674A8F62C2D317FD8091258DF35B0D69A0ACF
64C2BC79342811FD4D8A04E08A5D6DE5B96C1900E69370B6D0321A2A8D315D78
5F761E5BDD3343A66D5CD0C809827F0265C6FDB14EEFBB75A907967AF5ED715E
149A91F8213D915C6C60FD33FE48C36645F4F476A130319A1AE332F73DD76EDE
FE02F7E97ABB3D11F2E850435699C0747A3CBDDF002C25C051E1C7DB92E01147
0F9E309FDCE30E6ED8D78F1583F5F8F74A2BC4355B6D9DD29AA0D57D9A8652C8
6F9F33766FF16CDABD7799ED6BD399950C2C728EE95AD880B1A4EA0042E5B198
BF647F5BAB61CB57F8F2450E265BFEE67F5BDC4A8C97779F64B6959AB1E23A2B
F752CEDEAE0834ADDAAF780986A11687EC66FE8FA4610D606713788A0C34EE60
3E3A9538B618AC2EFFCF16E5BB18DFDC3EBB84602E03743E72E7D0CC314FB595
54929DA6924DCCBE64045721CE6A9A5116A3F2B7D78B8E7FBE7B79FC55EC1645
1655C9087A602D1CC33010CD8C369E7DC96FA6FCDAC2EC05ABBF5DB82E1718D0
5AF629101D5D7635E1E2D378EEA123456E311F4237F4A165CFAE5F2E2F83A0F3
9A0BFAF5C7B6AA4CF14E40590D3DC9A7C67395092377734DE58E150427CC6BDE
166ACE44227ECB056AFC5A11BDF44260CEEF1C53B8935978197789967A92B1F3
575B41613D87E926B9B1AF03E68648392B7CB2BEA66D0D7619BA23B47EBC5DB0
7DC2A8997B30BB7F63F98E9D70DD2F945777A74D7B36F8BC00571C96CCDC1397
CC4E531507B135C71F263AB868F87E02A47C7D8A95E4638E7E3BF14180DA09BD
EF281A8ABFA5DFEA3F412C87E5B45F24D87418C1E397824D73C2D785650ED15D
868B011E1AEE36AFB32DAB82F28AC23958148447CBD2E57283AF4742299D8B86
5FAB70AF4ACBD8FE6C00CD62922FF0A88E9B3B95EEEF82A31322E79D8E3548F5
82899214A4A862FABBD1937E4E3FE6CCFFAEDA522E9EF53E33BEDF7EFFC992CB
8CEA8DABE083475DB864376158931D93B618F8D98CDED544817DCDB2345C9F76
9B307736432DEFE14FB16735AD7B87C42EA7844A47AEF6DAD0CADFC78780E5B9
80D00C2BAA6BC12F94AAF87C2F863D3392D9F92AA698BB6DF8D6B8F18D87BCEA
4C7EE1686F079F72EE734640428B001491E8EACADA1CEF26D90A007E056D8549
A0BBC0E350FD74B4253FA84608F6AA0823472BE190F6A7B948F68D5369103BBD
85C3510CEE91926FE5F96A8907C6AB5B3D7A8B6EA04F03F3113B3A06A01D7D7A
EA934D5B664727CB5552E26336426D31BD1191A1F9BD3CAC8AF1B63087F0280C
0F3AA2D139E58912BDDD402938BDCB9FCF874D286E2945C8E90EAF47335277AD
275B6E0BCB59EEE72E6D8CDDEC3974294C1422C0961AAE2812AB1C43EC9F4AC1
B3E81D1FC06DACF6FF4F17693FAD1662AD2462B44B4157A687038C0913FB7DE2
E25559696F3F2AF579ABB9E4D33E41D238E64A2C1A9C21E2118846B3C8E48F3B
F1CCE7C305E1A30B4C111985CCB81208B37C2903F6FF365BC13F2D019C9C37D2
30EE003AD8965C39C14F3AED85C9613F7B4E5BC7ED87B6BDFF41E555CB1D8AB8
885273D918594A9EE3CE4CE6657AE5B9D1C9458178B028CA1BC3EE5171A3B469
9AF79D4DA51588FB9C44F39AFD47EDA2D7EB4F428D3035558BBA0B4A59C9D2E6
F185EEB6E5AE26B2FF74373905334F0BAF7D741B8631A37DBFF50E1E1FAEA402
2C6A959C879A580D812CA95035AA131227A82CC3BADD2EE20443E015713E7DCB
6A3081D8CBAE7851494015A45228722B41C9BB55ED390FF7770D7035D7FB95AE
5D47CB35C2272F160205D45BE690844C19A3F51405036248D6D22E78BC00889C
D844262C896F702C95FA32B3655741CFB6B8009B9F0AC1779086BF12CCE3FBF6
3B1742ADB061693F435FA9C7C1D3CECF190E8209996E5CF77BF2ABEE806E6CB4
E52C2FF68E0BA2CE1FF476B79D331CAEAA6A7882B6C8BD29303A14CFF0B1BC59
192EBC1F5285CD33EF9C2741B7007E8739207B277C56B9F16401DF3C47A63F54
1F756BA350D118B614F80E597374DF58C3FB2CBEC0E6B64FCB43E8F1837294D7
1C62192C21A1B13AA3D99EEE9BDA3C1260BD8294CD57A3CA28A7C95F455AADBE
F0F3188B03C0B37642A194DCC713BA71DE2D8F4C0222D6DAAD080E281827A6DA
B9D69AF02BDFB7676745C789A1F554FE455E18D7C452E76340E2EDC4CC1FEA9B
CCF9E5BA381E7CD5D724A9ED5D67D4CB05B84D93D4F992685D805F8AA2E14AB6
FC24CD4BC55BCF5167F04EEF8984B89525B86DAB0BACCFE8E2087835F97D723E
395B146FBBD0204B434D03C11A8DB623999DA546C6D59602A64EF3100CAF29FC
90DE84CA9247EDF0B86E217AF81AB66CE1CCC33F1B16293CE7B944ADDA61D21F
88DE7D88CDCB64D07F5DB3D224B0FDF0249F7994404D0D841CF9D1D195A806B9
01240ADAA122DA3D71358F97523D50613DFF6A1ADCCDDE00364E5EC8EAB91EBB
3FE2B21231EE2BB5282FF32FDFBEBCC4AFCEB01DBFA77CA4945A682DC36FC571
9E1F040D2234E66892AB639D732AA96ABAC67D7D2FDF9F04C143866E0692968E
9C9F2A99250D63A71179A1F1AADFC6BEA07E93C31D65C8145E568CF0DCEF6B10
AE1D59B44BA81DCDE76BE16C64A700F56CF617A19972249155776C8A644EC2D4
AB53475CF5BADE6E81A5ECD1A1046737171883CFE039338AD5CE6471DFBB0155
45E9261A77E1E65B2242673BD1BA9E06EEAB9DADF4747A891BD71D790B1BA056
E8187E798A396DB3F793D4ECDF9B170B065ECFF82E8D0D02C08AB3A55F9C3905
2227EC2D3F83FE25C558B230C99F2F4629BBD1C2E828632CC28ED15800DD301C
E08863112329C1343E6303395A5DAC0F42B539828FCE80816EAAFF49975FD10F
3C11EF15F18D8D4DDD45406753B56AA6523B0DDE9BF9C10B114AD1322FDFBC08
35B00E31C82E25F2E8FE53C7685B54C96EC543684A16AF61AEF71E5E7CF777F5
D53851499E5726D6C1CBF14C55DB9A6514528C446DAFB6C4040E64089B67C506
879570E8B7B456D3721863F51222E598771611E4DC399D654733A481D12ACB1B
B8763CBA5D136D44A90FCFB132E1FC73D4FC8E4FE4422C75625219CFE8D19DAE
6BEF53F775C3F0C98DF1D38D01951ED18E6FF1FE715BC62E88975B06E1A824FE
3C9B06860B2E2027D2FB7C234246E76A341EA2A08135E0A5FBE858F733620C01
2D1A5E0B51E6A453CA3AC534B531AE6E7BBB45C4E3A9FCD844D1AF73D6E0FB8E
763F3437E3E10211276D7EBFED351AE39762421B8FD068AAC3497698DC06295F
DDDBDD0C69C170F72522355B31BCCFFED407B29DF77BBF6BA345FBF521B2A162
F14F6F2B3C2C59F94EE65551DF9DB2C360B524270BD2B1F6F9AD92CDAEAB8D6D
D88DBB2A5AD5CA819DC231576EBDD027A409A9F84266FE231B1E28D13B260441
D80F3B209053DA646AB67B2A09D1968D9A487C68B23E2A60042E386E78E49FB3
C494B06DFF795FC8E32F99019CD9949F1D22C528EC95EC31D544BA1C24EB6C7E
1AAC7645FDFEC4B5405E2D87ED96D4B83EA553AAA4B8F18B1A910A7E2606EDD5
F62E89A85E86335396F0B92A77E052E6D0E338AFBDC22986F7B815713D56F9CC
16130DB86BC7C4E364CA177ADDA52C703C00AC5DC8D067CD01A558B54F1A8D08
DF8FF7E3524621449EA31DDB0306CFB576E4C96F747E4971C58EC10CE5F99593
F07773084A4469C25DB78190ECA208F8726104C93CE942337A8FD375E0EB1063
29C4B1E209DAA51B9E3FDF778C9B9E07A0A9D194276D751C6453F61F525575BC
3F455DC6324D325D5DEA338117B15E1819130E7BF552E25EFA72743F22CB39BF
A1C80BEE5B88A82831C09C2E169B8E9DF020424DA030884EF479893253E9AEAA
AF844A248E61A2478A80392912A0F9B51041980A0FE474E5998CE21F39638327
88012E94736F0E7EA79CD7AABEB9DB789AFAB18489E02D5F24012CEEF1782699
E44331E974B3EB94874EA520D67FFFC83E07F7378F10E0A02E40ADA24B0DE0DB
8572F987290B0266FD525F886CD5E98F98BD228776436F1B26AA3BA413651322
497AB64CBDD53075BEB674EA626F64E058D487FA6D2F37BBD5FB2B3E751CA2A8
2AFD96B44ABADBFE1F693A90AC5BDE2BD28D1F512C5B8EEADFA9DD4708310249
57A5F67E8550F58B64A3D1CF11188448543A5B516966B086C68CDACB47983ADE
0B326023EEE941C506C8AF4739A2E2EF3864E5CA7FDA79E02E713897F001E7AB
1CCF83662A1A7F6146EEED7A55EA85B7310B770DAABC52A9EAE899CE527E3C86
83FAC398C5AA348FA0EF5811BA8157F77871BFFB182C6E22168FF258D72DA626
A1D2884546110832E8A3378B06CE7C0DAE688A6989D4D7D6D8FC0230D2875A42
545953351AD3762E137B901E378A1616DED4561873E14C430645A32AD0D5B3C2
31CC3362D23C435FC49BAF1E84590BB9AD937294F1C955BAE96F8B24C7131F03
0525CA6822CD9953B80163BC13442CDD102F0847038CF99F3EEA2C11BA93AB10
0A4E0BE49F8769A9EEBBD96C649894888F458F381C6D831F81C1F39DDC7034CE
0D1AE41026FCA99B5094F7438CBCE27D17A6B5D2D5C3C44E2A06BB61D9194D17
E8F149F322EF3BF002419953A3082BA5AFEB9EC6FAE3EF5527641231133DDC2A
BDDC6B90914B5D550DBE1D5A23799A76CC6E815A169ABFC7CBDA88ABBECE480D
67CE309E0F82FBF23AC36BD4EF0E8C07BC553D23F7E0F557C991D2ADFA9C25F5
EC7F22D79E26E5CB7D2D21AF4AF18111A5F5F3B2A128F763176F47559E5C9C74
39AECB928F464306C3BC8F33326FEB4D1FFAE472F8ECFA883BC8317D565A7B93
D31E8B4B9D722C354D93937FC79A04C63F17035791E8EF5A66BF12F0F49F382D
8768828BA0E7830848B90A6115B708D23B48500B891D82AB2D9BEF0273A1342C
5A61A7230B906C747CF0ACD329EFF0C2C9F5D5B49FC77144EE2AFF285AE6AF06
50799013049271ACFEFDD2661335DF203AB8BC85FB6E36526FF27DACE7044821
E088F49CCED3399BFDB5AFE86CC877FB334E5F81A6FA5AA7B8E49BDFD40DA4B2
CCA2197E60FEF37684558677A7ADFFCA036010D83893152773699303816FF929
F291D0FDE4D80928BE34C250A47026386A44230A9C3D9E321E504DC14FED9405
2F6FCE73B6AAB578B5C41AD33CBB7FD4D846CC90DAE455166BDEFB0A66DBF1C5
A4723EEB5DC0EE0B860C93012CF2F90B575BECA88889C66ECC7B3AE21263B307
E26DE9EE9FE42C98B1DFE765817FBCD92436047E9CFDFCB48AA0497F27276752
3F19E4246994209EECBC54673710093ECB28C13ACF4635AEC058B28053FC8E8E
8F1CA9085DCEA4047415474060FF08555690B01C10D0C513FA052D36F52B05EA
BC7896B500EAE1F683D473275DE1019CEC4096C28BDAB4EF252358A4F9A0C081
90FC788B994A543C4F4923FB98A7FA56E21D7BD1225F478C1005E9665205B385
6D53C84B030E763482206FCB76E498CB61187CBABF1CBA89E7F2999F56F7FE2A
E2888082A755B970373F60824D13F7965217CD119B66A47A76247A455D8EDF0B
8A1347CD21B798183B09FA0BD132B7A12C68A694A15112A89C06ED098AAF398E
245B15B6BB1403637A9F2D5113383D53E8790DE8BE78FEC1E53A6F666794321A
797A0095BFA3A7698E807E6F1855F10B43A98CA6159DA511E96275A31DFF0BEE
19CFC8CAB286A1AD9ED32E7CE4FDF1149D1A807EE0472A2B28EE3CA7B85FF89B
948FB8E0BF5550C2914089B185F285C1F1609CC455E9C8BC904083F4BF0F876C
17FDFA738E033533A3E756939A1E6CC9B9A3FE546F3690A43724D224C019BE91
77FD8748E0D56237296DA1F0661BC9B825325AA0F0A035E5F45E6AB2C7810291
4AA19AF68D9C89D74FE1FFD601C14C2F7F753F6D3BBF0E6DD367EBD15898D988
60E30E7D03C9D65B49C4BEBFF1A1D49F773D8A89816C4B8B4189B9C06D3CE371
44A7C82407FB910971AFE489F41468D1D35CD032268AF1FE17EA91AD0A11C9D0
87D891D9BE8B95509BAE42DA7DDD5282560E071E44C1369FA2288ED8430E09B0
3A7AC05B30286B58833FE33564325A077814029EED0788AB184235F4D1CC5E4A
366697C2F6201013439D8589DA64CAA99F0E4A54BF80258A6DD25C0D7EDDF43A
2684CA7D3C3088D6F3FE3C95A01883F494BE83B72CBB61F14333902057AFFAE4
2891F487D84CCF43697B1E25A615FC219532362A4F5803AF1BD57FE65BD9081B
5B79805AA5D31E7F4ACFFB08E14476ABC95877446E0BE00E49092F3476FC2357
E9D9D66CD9A7118BBF649D8304EA6ED85FF7CC46EA4CFECE849D6C8A260F4B45
4E41FED01D36D5B01062122BC8B964A6B0F385EDF27328003151B08DCC19980C
0C63238EA0C4A14210F5453CB872FF7CD1887D5830660A920F5040B57F690877
15454E54AA899ECE4676D8AF34F05939049C03D35BE51459690B9C5A5BE00159
8FE59B742D1EEE6AF3839F1E18390CCF0AFB5103EC4D37CCA6781345DBB10464
98F41065B0385505341A337AC1C178E75A34F3D4FFE4866C44EC8A7C4D71AC38
5E0B86B1DAC722EE9498E5BB7C288ACA80286C639DB86761CADEE8095925F119
2555E0307F5996011A3A8105F3E53D6D0474F964C49D30F04CB9F5255D3C48A5
266282747E787B07627987D4262D1BF650A4CC3F114D36297FBE5557F48C05B6
BE1EB91EE148D9EAA3C990FFF7DCE9D6BF5138F6B00401D5B1DF64149AF91050
73D96AE4C527714ADDEE067F9AD85BCE0E481CEE0CEDFF986E2474CA13ADC01A
F032959D084B7FFCC447F2A4C1D9EBD5A19C754DCC60836CEFCA4CE01389C3C7
49F1BB4A3C6281652F1A5BA9A5E4E275E937398DF086FD93F26B2C38B8BF73E8
5DA1794E7A0EBDE69437A7DA3EDB0656D0AF19C3F97566DBDEC4FEE34F705C4A
133170D941D5CAF36A78BCD7E7556357E2CAE27BF4780ABFB891D2E6416BD302
9D8A2B8DCA879FDC07A36F77549B474187F655BB6A4693AEE8325D8401E912D8
4290C59BAB46BC97157D98C3451AE5EAF52AFAD02B8081AD39C79D1FFA78970B
C086CE62F721D301564723C0578A4AED45293CC8E04F5BB83D7D0B9FECDE4903
21C2F7E3B4C44C69EAE5134CF2A5FC71EDBE8B15E3D984CD6ABD4ACFF37A9DCF
8F857AE04AA16C323F003695D9C5BD6C034DA015D6E1322264845E295796A90A
2F79A703232A09840B3C80870367F27A7E26AA4766297D9672CB2D0CE3593F76
4BBB3355B88EF5958732B4E7DC338B4855023BD1CB595212900B1999F24EB072
C9983415950CCF6E2FAA220B7FACB989416E6AA9FA9B2D800FE5CCF9CCCD6B15
73A5314636CE719475C77931D249EF75D29CE0A985F5F4F0BDDA7709BCCD526F
A9F364E6C97DB81D2D65562043996B59E09748124D89F156D7C5C79F534135DF
EBBA0263AA5E31A5B0A9A057C344A08AADBDA8A6607AD89E838E71EEABB9A5B1
0368A841C071F92C24E096E77E0A4D4B09779A1AAFB4171C93F747849B46449C
38805CB3857F9391D1D9B5490D7E8295D5EB42A145165E1D934FE3C7E90057BE
86CF7B9025A743925E342F9C942AE3AB4F0DEF49DC8A2D500F882145D4E2425D
5059C79A637385978B26CA799538293325566E1ACA022DD856155E4100712140
1E86145BA9AD4EADBFFD7884293FB5D834307214064698D889B8407FD066A001
B4B320E6F44032DED09FAAE2F1FCC2E17683A8AD719D8C1260A53456BEF8783D
DB8204046370451C04C4F09EE933A61E9B5E48ED356E8EB30A4D7150DC090F2B
7074356E75788B2A5C2EEBB69F5EC91CDD5144B5372CF5516C0A142941C9A7D2
113CD352CC4DBB03BF1007C5C6FBE3F53A599942EB961CF9C652836FAD861589
0BF19EF2F5C78924756847CC7770FE5D6B772DBB69E0F3C2E6F1E18F50BEA2B8
C9ADE7B3A410F3A7FE116BB0E0F75FC3825ED52CEB32A0B0281E2F8A02DA7941
36C5F05BC6EAF564C163AF1C56DE91FA504BC24388E5CD07FE5AAFF2FA89EB2B
EDF7BF86776F44F4A01EA9C14BF552CCD414D4CE08175A90667C7FC035F1EFC0
200F8FB343F86E14723967A55ECCBD7977F2D50809F7D1B862C5D376E08C267A
FBC093D975972787E0A8B9AF3FEB0A566831DB30F9FE2F3B9316FCEDD9B57D65
C7FEAEBB388988016A723C3B64C7806B4FC62176DECEE2D9C6AB0EDF0E3D0B9F
856BC4743AB94F3F64BED14EBD6344FA5BD9B7CCB261BD9363400A384D84395C
FB1C0E9DA0FD3FE1A89C37DEC36D34BBA96097A8CBFDC189DA1CDAB759EF5F43
CBF4C08DF24519DB36CAD6DBFECEDFEF17DBBA7E18C1175C1861418169FF8698
B62CC132FDF59DD648E0FEA537C272E7862ADBC26DFE2508AE9A91044DD21403
9F3563529708798000AAF5D2A8A00DC0926FCD03421FB3BCF4673389ED01522F
DE532EFAE22F338246B3F502E1D383005579056409C7E755FF98640A19816A75
66CAC12A2D3EA67E130AD4E4B22DF1F523BFF730BC02EDFDAE5FD4E9B9B03E52
664DD10B3DB81E7A26AEB31ED8F00E810B7E9CC13E9756
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMTI10
%!PS-AdobeFont-1.0: CMTI10 003.002
%%Title: CMTI10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMTI10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup
/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMTI10 def
/FontBBox {-35 -250 1124 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI10.) readonly def
/FullName (CMTI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 97 /a put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 120 /x put
dup 121 /y put
dup 122 /z put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E
2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A
EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD
8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF
CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2
7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC
32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09
482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF
118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381
1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC
C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA
8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4
61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20
C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504
3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70
9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A
D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0
125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8
34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A
30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9
39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49
9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184
2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF
0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348
3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D
9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757
802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28
FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0
98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9
5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF
AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD
A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93
5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815
DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37
4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC
8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B
A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362
E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F
42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96
3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59
A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F
7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4
49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428
D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C
0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955
CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485
1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB
8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388
6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468
83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29
60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284
42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2
1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A
21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA
206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9
D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7
7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B
55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4
6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762
4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392
871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E
9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645
DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5
41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8
2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F
220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001
A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D
981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F
337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8
139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B
1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC
100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A
1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905
F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB
72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7
A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D
310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928
7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989
1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2
8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33
80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610
3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C
C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996
4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB
865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B
301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48
3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9
1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B
E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29
0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0
30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E
2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0
C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89
14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A
44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC
CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654
DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34
9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87
4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3
2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676
21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26
47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4
F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9
D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F
03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5
886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8
352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD
9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0
9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3
92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F
821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93
3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0
47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0
F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B
9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1
AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71
C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978
B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED
D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD
F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E
81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038
970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C
6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7
97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668
A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE
AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594
971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96
514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7
8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C
392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170
3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F
464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE
C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E
F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053
911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6
261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED
D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA
147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D
C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516
C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB
61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD
FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3
F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C
2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C
7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193
11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C
9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66
C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3
1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692
5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5
6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0
EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E
F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23
AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D
8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94
376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6
B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B
02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56
4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF
9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD
751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198
3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A
40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962
2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360
D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A
0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E
8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946
AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510
6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B
CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E
DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D
098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337
900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B
41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149
7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA
2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC
A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD
EA43428C6F79C332342E15F75B08A1ED360B3511F823E75AD49BA7AE63B19238
2AFE8FAC2715E2FDC895E95036D23127557837506A3B542B0E4651CE2B89C252
31EE8ADC26E2C04E8E30A9CA12F066CE01953BE7867171FF6C7E834742C36C3B
58E74E4B482CB85FD4D24DB03D753F260A585D552CDC9E1941446F2F5B45FF24
2DA4932B973139F328E7E92828B900BFD398B6F41DAA0D6861C66AA7F5E3299C
87A5925CE0E0F9E09AAE0792954A1F2C0AAA8288DEEFFE579E38A3CE8A943EB4
55322A87C1634074EBEC25F724DC1BCC1BC10458CA6C4395659B0DB6B612C151
557CC669D8DC37769E59A5AC6BF061C79FEE265DBB59520EB8FFEA273601D1E8
2984B8AE31AE343F37D03E2BF97DC48AFE50BB6138C7B9F9B5E28672A37BD8F5
8F8C98DC43DB22C6537028798198E2D3B0453ED72487267D653DD50F1BBBDA92
833A987A95FC1F275B90B581B4BB62B6863A4CFAE37F715EDF3EA5A33679FEB6
4847ABB4B3D170C275B9F1AC3156D731198DACE0B051674E85B758500AC9FBEE
ECC75EBBD85F8D62AAA328FB09C6526F853077AEF7EFBFC2B6A29D6D508B1E19
EAFA4C67EEE44045B9F15B9762B3DDF5CE5C18B23A5C2F73A1F6DF7F8679AB78
843AA41FD2A7DC02B45B729EB76C66A89F5F76E5C4A0C0563B1EC5E75D72EE35
A7F1FC89216B60D82F6F2B8DBE85E4FF4D63712C689E696F60B52AB622C2A4F9
37C380775EDB72638D3F81F61D8D74C76D813DDFFF35ABD9A502F2BC7FF65754
2A8660A5A53E0CDC2E8A95B6E33CA153EB711DC796D313C8183D707D3F0E3EE8
BA65E0FCE3F1C07F3D93F77056688B5496AE35A6BA0B59619DE78640A8C3F7D9
7DC5E94894E1E63A7D80600B945B1CCA50F1B85F57673C6CE09EFC4E229D4635
48AB466118D273BAF7C1B52A067A88C00EBFA7FCB378F1575BC0145F294E6F7F
8007602C6560476FA20BDB91831B22404DB1C4C167594B1216C25226D262FEC6
F5D0DBAC4B8D743C669CFF2068CB9BCD2DAE8CD6EE1B33BBF7514C4941AFCDD6
89B75F67339B25AB6E267BCCC5E2118879AACCECB5CC2865802BDB4D7581F5A0
E81AB0F7AA143FDBE743E16D028E46BDA94AC2CBA77DBEFBFA32E462EBCDBDC5
B86B63333A0C05C65D4B351948D03668F7A86A8A1388C4604675EA7384F3398E
49404AFCE19832C975A668FBDC29D06268085022982F01A2DA1DA8B8DD5F4584
75F98D7606BD6A45A403CC026A4BD1AFA63E1BC1034C1F617E14A1EE9543BF7E
1ADB8019F7AFE089150EBFC613C414955363C43E0D82ACBB01251C070E7F1040
602A58B2BF55094DF2BCD2689320899F987472681D0933A4BE78C2ED69D76E60
2C437D4D3EA9C8D25588F1689224D92CDC65AC636325718AF7EA47946CFF07C2
DC0FF0BE3642ABB0CC38BEB60E00B41D45DCEE44A71F11B99CC4CC22C5A0C62C
074F3C2FB093560B7FE9B3AAEAF3B563D1D646046174516991A196A915CE6918
CEBF16946487E546C6E433A5C5B9FB7D5B97F2B4B202F892CF5121199EB48642
4448B45EDB617EDB931969D53B9C200E954B4A6DA6617E3A56D72EF332FB941F
4694BAF21CAF8473EE2767CB5434E955C5A08DB04F67508AA1F5CFAE25FBC9B3
9FA855CBF2DFBD04C656532230B8A2A0B33C7EC74BF3EB2877DA369035C976C2
F3227355AE2E740152A344AC5E0CB3D04A1D4273A54A35BF8B1F247973158C4E
2ADCC0E93E456A8F099F28C99EE6497EDBAD4A0E7937FAD55FF114586FF56F02
D7DE3994628E4816B2D61DEAB7427A15A585A40D5265580554C3B7A1FAE1B645
D618BA8F51C8572A3C959ED2A13F5B62DD9A812D1FD8ADA501CCEE4F58152542
43EDBDC9EC1B6FD2AC479A302F73DB2E2F3CF2CEC0B0AFBA06C1EB69A4A076D7
06D32210E65F67ED3D0E2784B8FDA6FEEA00BDFB8C6CEDEE7AF8E2CC30A8BE5F
B643B6375D2037FBD62ADC2B10D8EA7C133B2DE94B5A751458EAEF80010BF3DD
54B72E9650B1EE08DFA9B45720A75868222391FA43CF73739A779AC730156445
0BC9E8C78E5B289CFFF04C1FF3126BAE530989C4BD241064D9A4B0048CDB19C2
6E20AE063A9780D60F15F3DA61BD984A2ADD49D9825AEE01A4EC28CE7455481D
B7D866DCFE0979D53E5DDD44FDF55DA9BC2D323523A13BD6822E7CB4266CF536
33BD0768CA779BA49F179BFE52D6347CB8AC96D2BC4E16B7BDAB90D8363EA44D
D8733E3662FCBC9205C8EB145A9D704126521D91B95D756569BBE07A4A479C1F
4DCB535FE60231C628FCE3585EE0E1D9408F17C4A1F19997FBE548B283B0BA6B
16BD0E076A281EA00AB715EBE4DBD260A661AB7DA7E7C55C1857D0E8AB19D848
99172B98BBCEED958BEFF355024A0B0B2E730B3679C77B68E454AF56C5DF0025
BE3EE9B580D4984F51E7FB383A3207DE76DE8894610FCC853A4DC9767F628C39
C1615F316E3BFE70DA735E2394B96CDCA5138CC8360DE3D112E3490006DE8BCD
4C8E81E55D20B1665FA8B720F2447A53D1A5E4897691F3A55C802E60A1A6AC45
A832871BC8CEC7C963D447951CB702459D2B796F37D722417848C96DB1A13A29
6C8820EDD58ADF3E3BE02E8C169EB9BE8DB10DFD813649018C459D88A1BE8D1F
6FDC2E893B188C5B90AC7179FCC80D88E6ABF41A29B064AACB63DAE6AE009EB6
7BAC15BCE8C902708181173DF337FDE7EBCC44DFB92AE722C326065E316ABFD3
5DA03E988591C12F125410982D1001BE5DA550C757A00B58D718EC687EF68D81
4D21AFD9D5A2856BECC7F67B1C6B889127A6F7120F04A222B79D434E5AA1EB50
007B631E822C2E247B08D7EAA2F2B846212435A5D3933AF3BE62BC4C4D9B7D3A
5728E936A7FA9330E7C9E1EFA3137553D29558948D3912DE643A62C30FFB6015
B6AD73086A81EE38C7D9B4F0BE057C733CDC54FAE47097BED2AFCFF5663136CF
705756339C11DA308AAE546C55018FB4B3A11C2AB4595385DEC0F3EC7AA88E00
EF58B0B23C7846E34E979F78D58C9C7BA5DDC954CD15ED03998CA0B1B4CD6A0D
519F0277617C98BDEE6AA998512D023FA82434AD2FE30184670F3402FD01D12B
59455492F4EE25404FA4EB0C60AF179A0EFA6C0E0CF3B4204839BF787AD72463
C6675702F5C3C7F95EA7342E759FB680091FFCE92FF9BD9EAF8E988236BA6609
38DEE0BDD8E23AD9B5E64CE96D629134FB5F1B65BBD24434070F6D31730221B1
53E0EF522DC1214E044C151A7EDCBD10FDD37B53D298544B51FD1702401528E5
C9B16C362F2E972B57850531C7A22A0DA77D93D1DBC2B587FA95160E4C129753
27DE7EDCC3D19687263A77845A8C17CF0D8591EEE2E7617B83A51FDEA9A2FF09
1E2BC377338D35927703DC93E2A5889D4D9B3C5DA5A6C6B9D020BA92C1661387
9E9C052DA27216C4665F1C486062B958328608A2D173F517C2211A8CFD745F8C
3B346F19A8537CBBAB4EE9972E3E1A6B3167D4C9D2617F79FCDEB09101E8DA01
8762E351ECC7C22B6FB12FAB781163DB77595C0335CA966A0051724B329F83CA
9A1F64FD140FA2123E541FCBF0C69D3E44DB6AC8045322CC1A42113498B7CAEF
40AE5E4B38118DC8542AFFE926E2EB1E0D9E0586DB562414094CDE778B9D1070
E55EB5E96E653377FB543D8FE9BC3EF2C1C6DB56FDEFA32596A68D112833565B
F55F6FDF597E097C0A70D8E839DDD62D14AB15CC0652691A7319D9D879C931D1
037ED199C7A03CD5C1B02AA188C4BA637D3E77243F884AE90424495FCA4E51B1
672D2C7C4353874BC805D7CAFF2237F7DB5F2D21FA67FB1861FC566049BB8DFF
34D056759DF8426DBD87420D808D9EC7F4F2149D79B7F7DFC6926101F8A47E82
A6040FAA8F151CA288979D90A4C61A3401F36E39ABC0D07C5F42290BAE9EF538
40B0DD22B8611B3B86C9B12660340FDC2A28331A5EF7085943DC5D5D3BE21378
AEA7A727E99B5417951B561EAB124D09EAA238E75FE6C3612A64E1A9839C43F1
FA5A95A5BE119B66A07A569923568D8D104811E38EF84230851911E14264905A
4A772D094E592E7BF81877A38933D39DDE5FE98F81774CB5B993DDDB4C965293
83A05E7BE4FCE1E87739653CF865A2255B0CBA3EC503744637B56387D04C379D
F78DDC7CF0AEEE6D5CD287E4B4C50AA529CA3230A6028251F7D24658AEA31DDC
DC88517A3ECF174C6B0E802B6F69F9FC26DA11AD6DB7311B06A5073781FE13E8
502B39641ED843AE0D813CB10846F3FFBAE9792E536B51139B3552F059438E6D
049C54F2089C7ADB3986796FA6A3D74165603D03DFDEF92CEF618D21075215D5
36688ACAD1DB685E8433502603D8E82B16BCA294D4C7E19C0F4B2ADDA3305FFF
6FD982F9D8272C9E228AEF5DC87FBC0CD4E5F532A3F0BC61F7AEF0FA2228EF5B
5BB1E4488F9CE66BF63808181D7C51F5E79E1FF3FD4721B188F3190BD1B9F366
1A4A00FCFBAB24685B83D3C5DE9FEAAB3ED18E46B78440E1E0663A4C4625D989
D32899B54F8A4FAD8F300D282A52B0FB78EDD4F43E56E8B38A5F5297AE9A9A2B
E68BB7664FC396278083814C47A122B2CD07A4B7B42E0F5376EF0C7E68839A39
1BEF06940F8D5DD66AC761E4BAE2A54487A84A1FE08291C3EDEECE11D8E6C4AA
AB05B0E4AFC16753DBD3FE8D85249109D71361ED8923137AD58D2C4226620C77
3ED75E93070770398AFD91A2ECEB48DAB6DAFC01F3DF70D9E885FC027688D8FA
FA623BC35F1CB166C946545E9A8FDE477F837005EEC76A459687628AE3538C5E
FCDA039F95D584C11CF6B2BA1CEFD7D94D31D75F91AAE8A30B1453E5B3C532BC
16E96BB12EF0AC5599D08DB46DA273A78D76D9D161779312D527AFB92B1BDA5D
45E272130C6A3BCAC1FB45F76ABC3D432A4FBE9733FC66E517502F49DB2C4A05
A5C7EAE971AC96547CAEC331E40C1C8D3BF7B63DAE97E033164D8FA69FF8A6AB
E7F9A8EABBFC04C591821C78C90332B8ADFFB818BF709D2BCFF786DF5B37C0BB
C2518844E0E317DF468C98A99EFE2FDF288ADD095C9C58010AEC94E6F0234E82
F0B7A3C47CA8362C4828675563054C664DEF08962DC0D4852858D57EA7F6B205
9331AF5D5E3E1BBCB0ED6294A5AC291B8087C55739F0ED009375DB5E8B8EE86C
20D4EDBF4044F0E2929271BA7AF2CB6D1BAFD31B1347B069314A14A135E704F1
634779B816C958FEA5BAEDB48E17C97BB38E6D156722CBD7F2A0F19241429FB3
7FC731A33275079D44B06F747C28FDE92A85B313855413F499CEB0067C8B4930
6B6611ED9D2CB24F5D7A45AAE0BC19187383290467E1FFBA733CB130BAF97FB4
CF696EE6612B34AB9B7ABEE927F1A8BEC23C44A8F922E1F116F78CCC68FAC360
598D65D1D64604617451694D212A1A098941D1D37A5B6961174AA6A0F8B7B705
C68AC4597AD0E2C63A175E635FD18D84D051B4387621426CDFAD0DEB314215E8
446CD10573FE1F98B2CD143E0FE90EF843B88F9D64C458BA0E2D435F50B16628
45744D86C264A430E7862079828E4E501F6929B7D92E9EB7442A47268F9CCE0C
A16419FBB716F269FDD046F0C574682E9EBA5395B2CB68FB3FF4848C380C66AA
CC168AAD75DC3993AF58B35069BD035A9C3B56FCF60D8AD6AA5FD6562BE1532E
34B3124CDA46FA95C8FBE19BECE40305ACD0D9CBC243038BC5197FF74C3C42AA
F95DA6536774A1597850258504BC28246B578720CEB96B92A2089EE13B063A22
25D44E32729DE85DAAD8660D880AB4D9F685624CC2D3CC276601AD1291F29A36
5E79C1264A599AA709C176D429DF8003A95DA1371EFBF0996B397A822CBE8844
D9321725AA45F935861EB5965E990EB17049A9F346E8C3B9C82C77D9D790E0C9
54DF7224471779577C7FDE786F380C558CBFF19EF3FA8BEF015FF18F6AC7A3AE
6A8611AE64A0AD57B40FAEC485C195120731A1CB7D8536F82C89CF433F86EB39
E8068871A263187C1951E05F475B818EC35E5305D2B444DC6AEA40B927809B8A
D5EE398D401299C0B9EF1AF30B77D2A7D9A63B65B6D3E70DFB65C48E3DFB713A
406D0D5BBE9D1350BB27D1021D1AADD67C5692FFC06E61AF4314478C385DE2BF
6B27DC8A782878684EB49E9A37502B40FD80F4796CAD7259D95E36FAFC15F8D6
4AC5CD57CF42F497081BA4160750066AD3E151C59242D4DAEFFBEFD915EE9F48
A11F660DAD310F690205F376C4FC11C9D0A1B495515CCE69DB6A4434EE170162
B6A4CEA256CFB945559952EAFA6DC838DEB9C503C9F8D0897E3105A13F65E2EA
DF2A3AC3FDC0E3BD04D91BEA499D5A426CAC850B8290B59490A0713B90F2E150
357313BBA2FCAB5F8F7BC25C6A1F17B6AE9F76DD151BFE67181775E7A19C48E6
2FD0BB1E3D1B0A1EA62D52764687661F16073DE0803A319EC39B59FFC4B90E99
ABC0A4B6B0A86488B9976D688331C86B1A9EB6DD1A51C43A246945445A283B8A
5C8D00137574577A80293BC1E7ECB281F454EED7E436C3D611933D1763017317
1F24EA08110FF007B742994198F9B4FFEB9478538CBA86ABC11CCB948C00E563
D09F2662456FADD44127A30FF6C23F9692B78F94F0E9542B45E2D8D06BC10AB8
4369B661048BF3B379B7B477D9400EF6CEA6BF1F4B551C01DB882F61929DE464
B6D6A47DA001EB74A18B47630B026987943193449C6971BF10D8EDDAF19F1198
1E63FD3A6D3C4C139FB4B16A4B3C287F3B85319F130634A962DCF0CEEC7F6569
A64343D61A397BE317EFC0C52154B3B8C5CC719D353EDA252E286E0433C6EC8A
2F9BFF490ABD285D14FF43D1E3C53AF0D14AC0286C2ED5FA3043236EEA53EA21
B7656BB88D8CF8FA7E22FAD2160743E1D7370DAA882B71A46C09884A2B82A338
7F3987A8D178E9CA3C829AE37294FB0961397840F9951613B52C5BFC2D85D927
2828A1E88F0ADA15E7E78594A433C23C9C0139E9BD42037D2DCC0FEE51C02DC6
F2DD536908300B1E3E3C7DD43557F57C38957546E34499B741CBE5233AC1D4CC
48024FFCFDBD81A74A8CBD90C7447D5E70CBDD12BE7503A4C83544902B800F50
7826BE0BEB6409A1F699EA102F5FDAA33397219C6A8302D61B934C8AC8784615
E7EEC84C9A33C338335929FAA72ED0DEC04E6177F6102E0777D170A2FEFFF509
C34D853BA5D054BA22D1F3583BDB1F1F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMBX12
%!PS-AdobeFont-1.0: CMBX12 003.002
%%Title: CMBX12
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMBX12.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMBX12 def
/FontBBox {-53 -251 1139 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def
/FullName (CMBX12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Bold) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 42 /asterisk put
dup 43 /plus put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 61 /equal put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 89 /Y put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 123 /endash put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
0693AFFF8191C1AD2A5129C8A8DDDD492F8EC8B7B93CCD6D4F240785E515C128
D7AC38F14C1FF204DB89A8805F8D737644DED6E8EC6A58365DFAC56200AA22A9
8F20DE1C232DE4E818CB9D2D3330ADFD72C1B5146849142B447900FDB1DA01E5
C1BD63FB69472D782C659F7862671FEDEEAED3617266DBD34AC593EF6F483D5D
AE56A502F9E66041D58C14FD6E83DEDA7DBA041726D78EFCF51152DE72B51F2B
B65060004FC8F67755EBA2F10A2D3E496FA3BC3B664ED03F496AC074B7425C21
18FE971025F8553EDFEFBDA53A475B36DBAB73D08985749FD3B0F0C32108EF87
BE0C8DA94598691F774407E4D36D336BC9883D0FBB46C8D8F786780BC5EACB9A
0875E368521C0D91FEFF43DFA0932B65C1FF7776FC2AD3CC8496259C1C31048A
EDBD06FD79BAEAB05CCF5B81D99CD34D142C6895FA79F354B447141CD77CD1AD
6B8D17AFDDDF80DB7020402FF8E0B391AF827DAB714D59E44C0E2851E6FE82CD
6AA69212F7C45DD001CDD50B275589987D84CDB8C3DC2E76D6E4580021DC664A
6C84E6C046E5AF8FDCC119B80A5EC7C64969039A12A564240DBB49F9DDDB3245
0E92DFC065FA0E060B74861EE6FE2775768A1FF5880FC66196E14BEDB1F65004
B5D058DAB819A8F97D7AE7B96D405B313732214E7CB3433EE62822AD7C122016
14CF0CA416DD0C8CC52AAF5F0DC7D2774A596576CFC3FA1AC6540F965925CD73
D646A46AC3CA67C187FEF721EA82F4E33003E19047E7F16EEDF0F899CF8026C4
E42BBBCAA4BA883ACD7E634EE5ABB43710DB33F0AF5071B7D55081B05E93E84B
391C7A2CC8F14A25909155C60AD3A7D89E93F775514599426D4D87FC524EE365
53B25CCB2D35985FB66BE3F1BCA4D43697890568FB0917ED3D18130252C944E3
D0ABC82041D7DB7B94A58002D8ABF46AA859FC6C0345E8724DA8265BAA869940
AA0CBDB222205A15F9B31BC73AA509F257BECC4B8793FF1CAD79BA6AD39B420B
5F0B432C85F081570881A67DEEDAA9FA5E64676643A126470CB76C57774B8E22
EAB865029028F7278671154819D8FF3925C8B96D8A2063E9E41109630900DE21
0CFACB6601648A0B0F4279389DC957546B353AF941416700BBAAD52C1177EF5A
D958F44E227DD89154BA88BAFF663E5C7A38321B88D3FC0EDE4ED5F09C76DB2E
D34957E6CABF0CB1B8E2FD2A9705FD839D9C9EA07397853ABC6D4AC871FBD967
CE62F33F0C59263F0301CB2A2CA008F5CB611AF37564EEA16D705686D0246643
8A4215A77338C540C626F29E0F220E483E98E9D91CBB39783738A14DDB491CF3
28E8260DA2C420D2D3782BB4FA0A53B60E515E2BD1D50ECEFDFBBDDAE79B378B
0EFFD133945F20C738ECCDA45856C618771E454B187813317F141DD9C3811E52
9C7D6836D39278F6FC1920EA5E05AAB5E47C81B59BB906B3474D305738E6D082
03173510B0E67094DEA3CDB858DD35F928A50DB13A65DC74D8FB45A631D6D0C9
8EDAFB1014157F0047468DF5678A9F060BAAA83A79291FE0434E4BD09280E010
FA54EA4E5B06924DED18D39E95AEA3B090C6980216CF5F7DAA4462008D3352FC
1FA5EC3319050E59301D74321132449495A51A8710D0262FD777FEA85CD03F61
E69AFBC6D9AA8CA27939FEC1424A70547336BD954A37B81F707E8F17C803CECE
C051439850DDD815A71B8880C61831E5452CBDBAA40BAA49D38C648276CD24A3
6D4B177FDE10D1C09DD0105DA01C37A05C01F8E30F2868FA062A5AA60C64BFE2
2C6C0824021B8057D38AC1ACB02BA580A17E2932FC05585AB9CA8DB88A0200CA
B1C9A89C8F28584A4A7715DCE5138CCD2C6C9166BE9B75F0CC7067BEFE5EFD71
67A9051264F0AC54D70F8EFCA15C3BF3D7F5970E2DB5D9D3E84699C0CE6C07A0
E70691A3BF3E11298177FF1913379C6FB571F522E006E8EE8FFD8CC4623DF5E4
04A28B7E1CF0A147D62E4C4F64C265879D331F7BF669A0513F31B98BF5BE4378
1191BD99F3BA11A2E81C906B4D942DBCECF68FF9D34A41EA24E73E1E507391BF
4B21ACEF1D2A95839991C4178C160BA391DD9EC604377B418C0BF7F936B049CC
836C9758A492E8BBED76CEEB360DB64163C8691EBCF50E27266A6482A23C7FEA
32CDF2360B2FEA765B68E59E9F71E42222435BC627AA2822DE34DED1F4236E43
2A32FB66F503C386B3E0EDD69D9E5A63D5B32CBD9934CACC792CEEC8A7EC09A8
60156E73E4A4B3CFF5B4ED81B1AD13E0696481351DB352646B2D472B07E613C4
798B2B0E0730954D479A4318AB0CCD1E4801757E9685BD1DBCE1C4CE1880D438
0FB208BE5D40C944282110D9199E1F7936079B903A26A2F2367DC43414D4B4EA
5338F9CAE3D54B8ED8BE537C49AB61437B0E66428B64A4029AB054FC4C1642CE
6BDFE68ACC14A51B4324D55FAE529C2655619561D71FB556B952CFB7FB830E4E
822564682B893EAC86362504A872BAA165D41821F5328D58224055BA314EC939
52F2ACFE5EFF0A35A8980C6B2C5E7E973B10F39859DA6F8B3ED3E801EC6B0945
20E652C0247D253B3C5743D182FCE4A585CA386730D3F80AC9787B09DD91B5B4
CEDCAA96061851DCC1FB5FBCE349629AF9CFE62B400AE0ABC1C8AA569A4EF6D7
C6E19840D7A7A3B295630C430315D82C6B041701A8F9D902703EA9157E9A1F08
39FFCF683587E4B1DB503C5524C744CFAC96E510EDCB09D5F31303715382D1FB
AA8B7D60220582720365C79AFA39A12A1FEF794E0BFA0F53FBC2292ABF8B6544
EA0F6502F5C33A29434390F08711B1850369B95BA8D14F3B8169419FFD11A6AB
8625BCAB6FA3E7C5C381142367633C6504E073C1C57D47E31ED2D99F9A87E307
CB0D50FC65A55CA2CE35711BBD6888A332C1635C9E09247A5262E8FB20D28B1B
E4CFD41588A8E70A16F6C3B0B303DEDA9D5414EF5AD239D9062BD33B8ADFFC14
71E41B8546A2BFB756E8DBB87C1EFFE8C378C7EF8E35304B7C83F126FCE4E21D
441C427EA1809079EACC46F86B01D39ED1F02A6ACD6C73FFF7A236608CDFC815
E7BC688E6001FC4917FEA25A7DE53163F61560C55F424B1C16AB8A99643BB315
709B06F7E6D20476801708095DEBF008B75512161C34252729D71B492413C410
B7A144991C62F142AC0FF513155727DD54F4F6921A654DA54ADEC09595821AA6
F19B74747472B3B612BA7AFEB545E338CA91C6D1902CF1A6FD530C8C3A7F15C6
B96503B95FABA843515D5284DED6F1EB1709108C43D2E153A8EED888D8A35151
E9460907C5D04D0E6916F7A095088F82AB92ACA2515A7D46152B1974A5AD8151
0BE3CEB4ACCDAD9B744D5B43FB8BE26BAB05F39A01695C9CE609F32CD1F2F4AE
EF704A5E8F6E523AD7DC0F40B2B6F4478BDBEB25DF6DB5A92D97C4BBA4E620AC
A17B6D51060F589153C33203CA82BDA5B7A8CE3974ADED22FC9981C20C2B6F79
206780C7D03E6808D7001D1C951A99CD1F6DCD4D04B4590962DE18B7DA23AFB7
6456295820B734A1D3931AE8E6111F5F415533D80D0F2EDDC36DC19A265067E7
3F41123B686E52AD4F98C3315007A37AC2044AF7520B8BBC9B5D58312B625E21
D70C8033B0563B6478FB97A3008764FB7DDB737B5993D27834DA23A3DD24A32A
B05A35681AFB8A49609DCCF8441D5A9DB3B21D2E50F1349741132AABA2C0EF21
506A7CB5F8DC3B6D5B9B02F65F449C6DC5B35B096DD08D40112D27A2FF373E45
0261F069765CFB339C897B8A5574206E319E43DD22591B188A74469A1710F1D7
94DE643F802D386A313E5B020CBAE9E32C7FF16829508E553BBF1C513E1D6977
23808EBE8AD6FFBBC0A5E3B678D06B75AC5671821C2C0F7A5CFBAB4F80DF4F28
3EB73E29420136C71B30DA7024A49684B9D004E56E1B3097B046485C729EB833
AB56EFCB5155996CCDE1668C2F7EBDA1E81CC5B06C6B16D9EDE7998CB3F0E3EB
D870C6360225CBD0B0522C7530BBAABD5E9023DADA7CCC10EA4D93FE6A1757C6
57BC57E540E9AE01B9BA81851F128F5AD26E3A9B786CE30CCE56931A09980286
83F76849EBF89803AAAE21F4468799CABC40926BF53AB6FCE504ABBA2F3865EF
DC6CB8099E35FA38C2095DDCC874A92CDF75E96A16FECA626F8CEA924DCCAE4F
5AD678289B0377E2A1A1009805978AAAF2CDD8FB9D08ED50AFC5F85B3E82A2A9
0BF782B72FD9DCA6979F4668275F3C7C6EB9BA57ABE40A85DEF52A40F98B91BA
0CE05BFCBFEB7620C95D2BB11173374770B834B847A9B2E94E51C58330B9516A
3A5BD6F718FF9E29D68CA4BB61DF064C9A08D24907A26DA16CBF861A9087C8DE
36916648AA47D1CB96CF2171FDE3F5AC6CF51D517D939B3BDCE9DA8D616BD7A7
D1F73EB18ED5668F20FE55D781915E4180D563A78A31BA3F43436519A8518546
DFBDDF8EB29E4B461CF057565C167371FCA62E6F61BB3E5D9C7E7B020DD8FE18
B373003707BE7F2781DFF5AB4DD448794537FAB497830A1477BBC91BB9CDD5EA
032069FA12107CC729CC32853F761949F20B1430FA09420CBC06B10001FF883A
B31A0F3E250C4CECC05D8A313AB9EB6E49113EFACD03ACF645B7D6A9B6B369B0
110E3875320A74A8CCC0D24589499C9CC32069D43D69043C875A16B4508AE9E6
0D27CEA5E258F42DCEBDAD88C7EC324A26D0744A894A4E29F819282AA5464CB1
CA8C48C1F95AC8BE1BFF77D38346075A65E4E73E02CAB3606E3C0299485A6DA9
92E98E79CCC112B271FF66AD4940BE919D7236F5703D6A57FE5215FC48C1D29E
57F1CDF3980C4DE523F48169E540C02E3A5389B17DD113990BBC6D24C2F5C780
069C273BAF9C96061BB02AF5E619871EEE6996C859349FE11641F13D09D3C152
8F07810995F78A71780377F827BFFB2110C0C565E25AA92164E3E7C5E8568D2A
E352394108DBFEEFD8C03629FF477AC6D727B61FD32843164A77FDA669078BDB
56E04A2836F73878B44E108E38D4DE0D6609634A22CE23AABF7724BA4CFECB58
38CC4F288F75EF43018A9ECC1E75FDB5659F8FCD5ABBD733898FD1C4C8C39EF1
AC1EBCA312EA44CD7A357A2B3219B5C0FB14B2716728D5E575059689CEFDEDEC
93273CF09CF14706B9044D3540E29F781F1CDF133C341E927F2AA3B7ADE81E51
4FCC4D537D6ECBB4488A1DEC8C15915804E003EE91A32EDBF37103AD0FB845BB
11C5F3DF9EB549BA3A77260179470E4CA75EA5B866CFF25775E88B76F23F093E
C2B37C510C641E03A5542A977C85337C3929423D01FAF1A888CB5C628487E8C2
2590911270CF6C765F5A16CD88886D6CD3CA95DD4BB916B283F670D895D0CD49
48CBEC34BBECC56E95099BA8BAC34C81645A7EAF046A55F1458C9E9EA5D63BC0
C45FD00554128515BDD5D645980A52C5806F3E143C9B669747B0B0C4E33CC76F
6228082A0A12B57816643297816E90A4E899E0B7174214D1B944D4B488C4F368
856AA99F918596E4F63BE3F8F39BC6320670391FE62B06D36B94863676B532FE
7C6724D435CD63404225F7997A672AE9CF5353C673C5455BC7281B7122AECEAA
E0E3627F82F76F27966B0D8B11B91DF24C6295779A721C3865F328EAE433EEE8
E752BAE9299E709FD297A7E5AEE9F7B30FCC9AA1CB1FEED2BDCA434C63D8B365
99353392BD6233545718FB18B0446F838352F9A2BBC85AEC46F4AEA9A1493AFC
7A008638885D7CF99B5886E1F71255584F0BA2538EEE815D8812AE4319D59D40
82B2CF3EB5AC183B11C7D19AE25A5C5A1EFF7DFBC80C44F8E49A3DBA23CD0F25
4CD8A11ED7C78D56077A3DDDE960B93751A902181BD3E8F69BD53DF22798BFF7
BBE500C832858EB426D2E07862CA3B6B8596689E3133DE43533EAF36261BCE94
279AA8E693A47395F78F984F1D9619CC9B9CCEB3FF958160F638279E1FAFC5BE
8D575659123872C83A75AA40A67CE775C342007D8F9FDD0AEF44A875E9605B86
5C38CD3B3D6EA61ABF5BC6E17DAD431562871D7A73A1D119D0E8EEA22F43C5B0
6DA9FAF38278AE4C85692C5FC63309A8A59D1B0E583364B4744B413BBCDAE507
CC8D9854830FC381C771D2CAD42A081C5474194FD0DFADB68AF832133CD2337D
6CF68E9C06C67379E81C321DC8FBC6C4814CDC54957A443522D2B2BF3D466B4E
6937825C8CF0E345B02F822E854554D855B1CE696EAAA5CB7991A1C6A426D79F
C619C0F022CDAE2DB5A8191C68328DCB6A3395A81A787271BE5DDEDE693FC22E
23A07893C805F33273E17801D9C3DF3702F77D313A0703B273A97195761A73B2
AF4FA57C264FFFDBFB8103DCB4D4B975752B21FB7B2D108734522F89E6B7EACE
7810B15CB3A24C28F43FCEA13BDD1CAA4FE3EFDF7D290EF55A72972638722333
015766275C9D8087B6DE0351E142B8C7D76EE170710EEDD9E9ECF2D96D0DF27A
6B1E97BE7D30E1379F54636D2EF190D9BFA6E78E0C1C9CB7E2710B223077AF8F
1A4F6A86BFBC8673C436132339689F2F092E49A41902C411115D754E4BEA6B77
F33B76035548AC054D6BF36D5617070155B56500FEF46B486F5FFCF756442F44
EAE6EA59261A4A8DEF08794D3DA7299F6AC05C2C4F5F38686EFCADA6BA92E9FF
6EAFDC36828EC54ACE96FF29006DC14EB646BEA5DB4F2E0D64506FF55D854973
EC4A39FA25F16D25FFD98A5EB111E83440251F1A53808F394684619B645E679F
78FBE2345F269EADCBADCD1710682B18BD72642F0879B86426F79413272D4576
D00EEEB161B67044756C494094019D62B81BCA6608FAF4879C2F1C21873F0628
B03656FF2568E7C13AEA1575E4510039CC6207936B3BF8484D4B38201A44D9CD
9736B66A96F9E2671D258CDE28AC40E61A52E61B3D4E2B8C85D2751E9294D33B
A9C1FF99CD4BAA4706EA8DC96C0864BD3E7B5651F441A96DC2E5607600AD85E6
390AC0F358BE1CD227A41AECC66EBC444ECDA998E7CE33DD24F1B809B8F1FD44
C96D8ADB268E9BAEA57B3AC6B5FAC63F5B6DF4E529B79375FC3B5726D6F2CD8A
568BD287D3D8D76A9F5E0F04490CD4ADB13D419C49781B2C65AAD679BF24981E
BA3EAC85C874D63B20FA777487A0FD514740101F753A44B890C51000D718344D
66496F21134D84CE17CBDD364CD2E7E5595DCEC32950F3BF8331D3AEAF2ABA92
EA27ED48956E43AB5D6FB9A6CA5232ADF9A8734471BD9552E990388D5F9E8F56
84AEC1E22DD5C7CF1D7F3A1BB3EC43782E52A8B9123AE975EA6B45AE81725180
EEBD194DBEFDDFEBE4DFE065AB293EE9A40BE0B61CE640D413723B1744A02125
90FBA48793F26B91D5891EF67E7650669BECE1785CCCBBB7DF01D2D5D556B40A
FDDE30243C0787BCB019C68C00BB1ACAF585961859039BA34D45FD9688680A07
021F0B0AD971DDAA8C05DF8D9D57DFAF4D73C3FB70EF583DB8E01F1B69298383
0E4FE35AD965A16C61D03DC79A2990237BE994CA857A90EC7AD0E933CE541C47
7CB9D5F4D17A98047760D79DE62DEF08F5ECF461D4216149C80AA38C5C420404
F3373AEDD35C7002F4F305C3641AFFB293F353DC0508A4521165EBDA0325A786
42313643F5CB797AB28CB88942C82B91585C13207141B29C34C4EEA501C0437F
1E819892DCBC1ED7C5EFB9DF00D6F39956E306ABA2F28E862662D3577BABF3DD
DBB8D014DB8F15A203FC651FE6EF2FBA87759733081699186C266F63CCF14338
7A0A0C6FB0677B0A9AD02A23D8683BDE40E08745E6F4CB4F10EFC43BAE8D0E1D
AE62D73656657DDCAAE0F8B5E0387AA1CE60300C3BCFB534FA3BA000FF6441EF
C75D09985C24CD249B45F2988477189BF02F6339CB6EE878DF3A2C93F3942D0D
F112E81721C48B2DB55C16E1E35E11EC907C413DB96684115CF1FFBA9C9ED873
0556CEB062EFD308CF77BB0CC6995180AA791508B37C2903F6FF361D31F69AE7
D958D3863D0D3141E65D850459476DB0BD2D965DF687456FC74505EB7ACF36CA
1E48E40BEB049577D81B5E2C057A81358FFB649BFCC375A73600F634DAF2CF28
691FD266BEE7F1A2BDA8B86F3D5310439A335C5F827C81FD49090FA6020CCFB6
4C44F67A871686226E000538960AC4B78F7BC946E26671F3C19B4481621BA399
DBA2C104A338F9C3FEC3353ADD61CC00DD9FD19A6166662FDEDBCFA4E16D6813
37A15D0E9BA012DB596CAEA690DD3CB5CE40BC07392DD6F63F295CEB50D7839C
12ADA2B662EA90EB530EBCEE5622646A606507AF5F81BF6B7D52143B1B29756F
7B3C0AC839EF4C04A487B20B7662677D7CAB60769F812B913E1970788AFAE1F1
E23EDD92B14F85D284D48909EE074A792189B3D8D6E20E6DEDB8E493FFD73A43
C73710D04D716F123F1C2FD5DABC769E38F7578119B83F163F7E4493AE19DEB0
C255F8883AE3832361E195771739F9975F2A8E73D8F860FA685995A85D72D1C8
689286CA858CB728FD81FA9EE17091CCDAD004E30BAAF0F59265118904A06FD3
AD8078E63DE189BCF831A9AEBEA67742361F8A614378B4017041DC012ADFF137
C4052C69319F1E74CAF425136C8A4B9E63DCD87E35F28F6497C5C98717614774
53C16DA73097D5E3B892D946FE43FF461325E252B2665D9AD3C59233AC124451
268443F95C86D197228D4E4E0DFC04EB9DA75B958A412850F1D0B456EA90B7E5
76639596394E75835745303E5406C141B3A955FFBE9EBF4BDA07B8D9C1F6E3B5
33CDA073F14923D7FED740BF990900602B31A02EE6A544A0B905C8A0086AC490
4BC743CF9D16FADBBF6D869CF78D2DC396C8543576F6A28512EB1C7398340AFD
8A0C8496562AAF277CB8A4EBA4BF16D225AAC63822B118F024FD40A0B4344B43
50F11DBB5C4F0C4956C004AD67EE88514C9DD8FF4AA41B6C1F8F99B39D7D951E
89AA8AD441AEBAE370338FCEC0965F4766264D80F20F37AD837F73E36F2923B2
978F3104B9EC3095B8EBA377DD71DEC0E365724D39B939E2A618D356AD834286
178B1EE80C8B1BE28EE6335E610C98902FBAA8B68C5B473479911AE08D2B0357
580FA35C2F36D58A5B38AE9020E45A5609BE469A3C68D7A88515B1F1EE3B43E7
929593347BADF77B1E2E03D6AA4603422BA012828D6078E6E8EC84F1E8451E51
BBA8B100FA0B3FC1695C88E2EB41942B282FBC43111FD929F48FCE72E3A7218C
D4408B8C2C81C67B732B4F8270ECC03990FF9FB0A8F3DDAD862056CC4FE5BD5E
AA69491C641990B948E1C633D08D0876D4B56F3BDB323F39D41E5B142B352FC8
2D5E960657C7F58CDD253CEDBD8BC2775BA6BC0948C8182ED0C54E85A65856C0
FF51D207F791F3DB07C0CC18F7BA41C54AA717673E2E5D48969ECA35BE60A23B
056B223CBA20D123F0604088B609D12BA650679EBEB6FEAA63B508BF28A12DD7
920CFA95964AE1C1A21500C265EA7395546FA168CC0CC692FB95D2C88355BD54
EBC912E04B7090C563EF0A39DB72EFEE679418F0327B22B00BB217EF076BD7BA
E9DB1F9381E32618E2366DCE90832A98A9D597BD88230C4FA049F907755D5C50
0B7E9FB8AD9C1F9AE23DF09368210E3B9F07C99082EDDB8F6AF87C4701BC75C4
A1B3C25F84423DF62A072C36FEDD996A94B1113906663D85BE52F5184CB04369
2B52802C7EC50271156B4EC388865C175514B165DB3EF42B847766C2622D6602
A56440454F2827387BDED69681E6105C11E7FAAF09C96588885635A9783F1E14
C7CBF9C15CA00C36D8C5C29FB1A6386F081EE664D399B1B5AA9450F3C277F206
B6F35776C4153F67FEA3CB07AD9BD79592C665CC0F8BF95CC4D17F1A670A465F
1050F4D7BE25BB11FEF6A9267A28E44BBB273DFA3372F73AD6E2C6A8E39FB012
B87863AF7BA2DA438EDA16A052479B107E61F3D74F816DB08941727902D2BDC9
2618B875A70F4627756644C3ACDC4581370E952135140FCA6E8EDB54B2530C2F
3E1343F16132456527D409F7469994A89342E86CBCBAE3281DE70CA02AC80E06
92482DFD8C6BC276CA89F092D6702EFD245D9AAA9FB11EDCCB57C45DF747FC0F
C76A0FF0078E8AA4034A541EDD6B21E342873069529A62EE455A66B0979E4CC3
E0E2AEF76EE4EB5216FED9BEEB488715BB1497534A3A125E96E49383181EB26B
704BCC2179C428025E953E22EDA68750BEF7D488498F0A99C9625C87D8CBC064
090781FBA578BD1AB4F9E72D0056AF33EAB64A3C605AF9D78C2F48A661DEC7C4
770AF1A17B1B8E9415DDFA30BCA34661A3A286EF3EB5093CE9244D6CF9C490FA
D677E759225C76DFA0073268BB20A1D2C85DB07BBD62A140FAD381BF4B9B3D58
5DD791F33D8E2680135843FC85EF7D5D9FD782623E79EC244C623F604074D7EB
8FC831F9437E40F1C73A1E7A8AC2C6E1C9E00BC9A32D127C5D7591C3E4AA6B6E
33A3AA245A6C81A32FCE315D63C3EC2DB2CEF5323CFC86B24FBC10A0A0C6951F
83F63193B4CFA8E89FC6413346F8473ECD76A785B6BA34D05558E63630039292
1127D865F6FF87A1D917A67289F9800C43152DFB8106D995A5A79F34B86832A1
00B4EECD64D1A661153D34C1B9D68F86AAD4724AC31216DB601B5EC8A3659AAE
D1250059AD25E0FC50B01C7207081BFB3E10B2A7EA80892167DB28C45558EC3C
8D0A268E8ABD63491D79CA4CC62CC5B3CE6EE785E3839F0737F08F1897097E04
FDF08D4BE560F61C74ADFDA0E994AC8EA0DEE28772BB7149CC97305C1131D45C
A3A14CAABA744D248024AF8714A922D349302EB2091DBCD97289E605351755B9
62D76337937010DF6AEA670483F1F1176D139DD96EA0EF27878C1B92C19C7E0C
8D2D97913D7C12054B70B7E3D2AA33DD5E853D3F3A5327F4F8DBD466188650D3
151009C7FEA778B2CFCE8BC7D7F3043B9FB9DF9A15D997A0D0D9369A986B349B
8C946899F3EB2D2D47F7518EFFA18F72CB63014A94E6E927B53EB91F48FA1629
8F27753269DC43667BD80592228216E3CB1C60064AE7A6D7ED9FF8C3B6CE21CD
2A75C836F63DBACAC5C0E41AB672D809DDF0DCD13EB72575B00737ED1A2C0919
988E59E79DF69D65A692466D30E154235891120B8A80F3C5CE68023B2C433552
72E629D7247B15F19FBD2B464DE3051A2B468ACB319AE77B0B45B6459D4C6800
48CF171A2E1694A7355F6B65F4D8530E7BAB3AF7C410167F2FC51DC028304E41
B51651448C8CA0F68E283AF9A086DCD463B788FC0C4CBC1A0D2B13E9FFFD0874
12F1AABF993C2D0378E063FC05C6441627FE8380188A5D1A5EB1BE2642229718
1DF766C7EA15C77059389DC208A69A01374C6AF61D449F8DF5B3025AAE60D238
50F98EAD4F6EC247FB8B5822CAB4AE23CD1BC0FEFB933880B37B09FD9B7FB5CA
007FC49152B5E11C244167FE132B1A15D38EF5C57AEB0B1A9A965962880ECAF9
070459139AC8CF1B5F525DBE6E62F7810EF377A396F1EA81A70158B4663B36AD
EC562233319284FC782BE40F103C13D6E53DCB11DF0D59C8602D3C18761A7D1E
241FAF65C715CE84DC3970507600A08B04AF41D2AEA00538F35241187DB6A4BC
46F6BB6B32ADAD5A097625287035B8600722FA2120DE920599D53EA36F1D5839
9B07AD7D75CB5090B0B540267FAAE6B6C251733A193F6BD068197ADA9149A32D
1BD1BF3E86CCC237F63D031C8948C0143919CD49A48335CFAFB9E1AB388B1B9D
ADCE55DADD8EC3FD83798CAA9559E9A9B378196B988FBAF2A8ACC073D0D68180
B3E584F59B06ABE3A3B44101FE7B59CDC08139CF0F587D1DF5014411B7FE7645
ECAC2A1A59A4EC15C572C6B1FD3532DFC1B82E33381DC40D1AD31275F56CE791
38AFC925C3FFF5F658C73FAB99152819DF376A1166D2EC61B2EF7108D7B39B24
466AAB4718612029CA3CB119FF54AB1982E5D04B928C018477D107652B707A63
5C6D755D8043E8ACC6FA79F45CDF39CD935C716FCC2845675ED7AC740F09B8FC
FECA8B787A587C18DAF7ABF900DA579C36971FD0A4A0D709792C1211AC0BEC3A
9BC7CEF59EF6CF7FEA023327B2234DBD5DBD3014B00DDFE0F65AF4AB7AF1837B
F58CAB907ED3D6EB3353BB9B40A18BD99405C83FF10F0C2A4B74D3DD1ADA51F1
6906620F8591776C6BC7C521EEFA6FE61E9ED0DC5822FB55DF74A772A6F0CB73
9E36F44181E2BDF3DCEE8627AF3BF0148D82182D2542025A0A7A9A15FB8917FC
970841709C65CC5F56CC5A2DFE6CCF5B9C673F5475F8B6792011A72A10291265
CE1DFC13AE64D23C249B4176ECF8C05DB6C8903CCFEA9BE58DF99816A0896C6A
4817040D4721409FDD3819C98C39E76159D5ABBCAF6C2A1ABE2D31AD843D1CCB
6D719FB471C9ABD415ACEF640E2369938CD4B469CA2E091F28388A87247137C9
22BF1A7988B114227F272B488EE4087EB7B8980851C4E95B900369124106F079
13169F7EC69680E4B7C31AFC9236D41B56D409B7F8B79E47376C5D66B68EE662
6B74BEF826DAD28F0FE6B50A42539A76A68A98AE71C36A6302FE9286735843F3
0D81B0F14F6DD7F78F1CBD34572AE4562879BB8EA1BF9463F6E3355A66C2327D
D70F39356D1D4F3CBA39F7476FF40202DA281661E687D9B631FF573BE78C0EA7
2B4FE9D9187A3135BB1ABA7E1E41EA2A9D51BECBF7378A51598E46CF94176F37
CAE7885F1216C10A12F917845EC9DB9C8EE5030112192253FFFF135E6B37FBD7
CB20AB6BFCBDD95D8B02CC2B628F3D4B17D67950DB422B9991D9B0F514204E89
1F9862EA39AFE6985574FE3D10CF8F148A9AB02FD8650C1423D8E5521F2A0B85
71BC8D7BCABA246D21C00D13A550B7BCBDF427241627984E3A342497E7F3B52F
E06187848D2EA987E32FD1B86973ACD2D7254AB17E16E35A07D371B61E603E65
894EB234CE31E4E1EDBB3D43B58125E3366BCA54A438FED5D8581B503C61CE29
D9E6B4B81BD89C82D81A4D936FFF620E3BB1423F8788A42210226DE1644C9BAD
7239A2BF758CA4B8F4344C4BE254136B4788C69F6406DF653C413D21937CD152
86D83183B9DD8C9B884E41F00D60039B13D3294B0B8B551B158E7BE5B0C37466
2ACDDE57EC9BE7B468826CA85E6929017793AAAD6E5FE2F78C12CEA22D718CE0
1FF6BC4061E462A031D1B352091D665E4DEC21A7D8C37D28DE53B8F9266BE5A9
744E98A6031571587CB21665000BF75E24911F5C2EBCCE7E3FA5B5D5DCC62A3F
0AA508C86BE4A46D42971149127ED195BA7BEEFE3CD1F16767580AFCA5007F00
21CD90533EA8D9256871E65A72F0B0C5281E359F475C37750FBEA4A3FD8FA77A
D87AA1C8A41D79607C221C7D567175FC38EFA1C0FB3C144FEEF7519CF9BF5247
445DEF9307E19B4D461BE69B5C4B308C68EEDE3EA718815D0EF875975DC48F82
4AC78517BCC82B3175FDBFE5601572EF0B6293A5B89349C04BF6057168E9819B
DE1918268525017C1938D74B1A629F0B7BE164F33A2978D8E3E03A74D004406F
6657F8D958772240A23882856B3A7717EDF6B1FA5F907E9600C85CF64986B5FA
3055B0C94A5D78128BE06FED37D59F4BDF72B45F63529B37449C07CA9705E561
A6FC0BCE1672BC8C48F3EA9A6048DD2F3CC3F075B0B7E50DB361361FE8E73BA3
0275AD21C7A2980B7246224F5A2D3C89333E56CE76C522311FD375FC7AD2033F
2D9285202F821B68C8F362DAA73E95EE43B3C22A667ADB116066DD94CDB1098B
07E447909D05D145EB75E415892A6EBF8436E670627AAE1C114B8FD651C1CAC1
17D530C152D80402BAF2E18EBA5F3C7795791EC9AF0ECB0963B1F153C6C02A42
7722049FA470788598A4D255BDACE3283A2F0EFD2B9C3CD409612ABB68195084
4A2D7EFEF09E8BFF84975C42B70C9FBDCA46EF05D63ABC8E5D852F592B861691
E8233102AE3D36DDF37C0CE7E1BE83E85C4C6A162DA2E33481854F834B6B59A0
B173835F520CEFA14EBBEEF8D9B23133AE1DEC52C853CDCC32D2E46A3626C906
866351426C2C878C8E53B7D179F0B5BC6FDF61799ED6923CFEC478A105BECC5F
2B2B27499F3A9D74359208DAD44DB572C5584ED8F522D97EB86CFE2A7C85EF56
9E59A1644A3BAAD0E309994828BB7AE6FFEA9A224AF7E84A584D4E92B366DDBF
1BC80D772A54E8A574723CF7BC0309FF2559A8CF0CE17DB1C69DAA582A0B3DE9
3EBBE1ACEE7E3F02C710DEBE7846BBE68F768CCA1CA2955ACB920AC2148D6508
8240A0D359249AC736DDA8CBE99E464DDC900D8C6834CA46CE6245CAA48F706E
F5E0CE23FADAE34F77D5C97BB8B12E1A19B84C731744CCCE075CDBDB1B83136F
694D1D3E9B9E4FA997CEBF4133E260320CB320BA1BBF92179FD9297AF6DD84F2
242E5799386F87F3CC7775D8C3F04CB4409F601194989E1BB476461E1E60BBC7
BA9EA06507227AED0D06A82963093BCA4C1B429673995D674C26EF07DC262EB0
F7F43A192BF67ACAEEBE8ACC22F8141C25283941CF5E84892C98E9BB533415CD
B8510A811DCA2F62DBCDAB9DAC829031A958993D8B50E90DE4F8F7747039545F
CAD20C1011CDE9BF50C04E85BBFB2BDEFA95F9A6D1992F646F8704713CC1DDEB
E1B41B23F57484E2BFBB25875476CAE6CA114133657BF783E6371A60C581B59D
4FF71DA8CA45B9FB636799C51A61AF20439F7D504F1064DD207DB85CAAB14CD1
DC69C65FEA29E50049F03169BE05DE53990644932A3AC40C2E506A43B0CC29B3
1D47B69F942F11B279F0F086050DD5ED85D6C22AD506B0489D14E9F222650D3C
B0E7278935442352EFF8CB6932DE5E5CF7E96EEC71739BD7EF5A037F07699339
4126BCE565F5D0FFA88D668C77B91E8DB3C4DEAC72A67C0AF91B70F6E284DD79
8F68EABF99400E7033797501C5D6C090BE545FE5AE0E085B9108CD31E51C76B4
F0660F00E9C85F460EF961F34BD48A1C9C0B880E14D8255C5A351A373F2AC4D3
B7E71799C96EDC42227C9AC70A77F05B5B542D87123ECD18F96BB6320F795DBC
818A64F480272B30BB0B8B4BEB76F99070AD3FCD952DCFA16F0A61A576875668
BCBE9F5FB0B562AA82C6A593E397BEAE8669DDECFEDFCB810F8A58EC96D18FEA
739A40C94D88EA4371FDCE0A56DC01B13D727EBDBFB590BF0C13C6E82244710E
5BC13A6F93833B6986029EEB068ADD9855B57AD6EC1257D6290858DF66F03172
D17C58D8112DDB96A25ED403ABCA9AAB3801FCD4071AC7BBEEDF334D4202C893
4F6702BA9CB59DC038B1030C8627458145EF9192BAB50C260652464074C00D89
97F6495915C84E4F1FAB2DFA6FC964D835311F9B2CFBB584C4640BC2D82ABB44
3263E66ACC2D3267F04971FFD5D3A388D9CA0020D1D561318B869042A2F1F39A
FD3416E76200CC183074518DCF6CE18AE3A12FC670D18D95EFDCD4C3E3F4C875
4080D8657A576CBF20007BB97DC92E27B31CD018A33F3012A4424E00738F4D30
E65272B5AFD4743CE337175872947517DC6FC3E13B71F9CC4D5DAF555AB7B304
3010582D4E985B887BB5236CAF91E96FC59E4FF38E75A333DD0A628A807B2A81
C2A3835B976FC84ECD4F48A2AB3538B192FD54A8EA6379A5CC1075BAD0A2870A
EEBE7DCBF494C0243965C300C31E8A5106238A783F5A881B423A2D4ADE5CAF42
9D1A7FCB274E4042B0672C2D0D1B3D647CF108084178BC6AF966DF3B3387F55E
42189D550A9F98A2C7CD199AFB668BAA82DCB81D368ECF45AF14D956C2F649A1
2689DE896236BAF20C47D5A8A8AE61847E04813B1E05B55F077AB6B255332E03
3F7710489664B88E9968D98E6ED0A517703D1812DC303EF830607C40591A1478
3766D56B34B2E3EFF7436828BE40A4903F79D2BBB113AFE2997D5312A050A011
680056FC2D709D1410C3D7A9C8572FBB64FFF7BF62C0BBF97AE7C6C4425839D7
8C6661D75DE9B9A06FE94562AAE8E1155FFD89A3979A18F9B735BD39CF6C8A51
B5B9591FD89AAF3970AD59395EB8B93F94FCA54C368F279D7B80503BE96282F8
F37ADCAD9776B1C452C6A48B267C55D6FD5CC993139296FB0F6F546C0728B93E
E55841EEB6B4C0F6DDD3989E34B7167B7BDAFC3BBDC4BEB4824E4013519DA4BE
5E2B4CEB7E3C79FDEC749F5185B6507083A1BF03481A6AB419299DE2B624D67E
D06D712EA4C9DD4E94FEC24D13590D49240C164A3E76AA2E6CB1408D3E586AF1
689FE77C7CDC3BFF58901BA55072982D0A9BF2B3A4C9DC7735097AA3F9AEBC36
A5E4BD0EF0CE56E44417199BFAAD73789D5046CF8120E78C3D9678FE7CD4CB5A
73AACA7FB0E6BCF99A39B95E5A7E4216CE77375AA2EC91B36CD40ED75DB6B348
5592D5BFDC37A921D19D1D2EA9AAA5A4228A5A685B7FA8A819D939156C717030
0F5B687CA6D2520935709696DF0697B3DBFBE485AE12D9D6F532F01DC89E12A6
06986AABE9CB6B62D93856334041F6CBE9BCB646242DF01887C4684940B05422
C8755ACB088820F6A557F5A1FB754881CF572232EB422CFDAB64DD664C0A3A33
A0A637DD401D22216C04644E4ED2AE11617AE7C912039281BDE1A7257D4C46D0
A7E236B601CFFEEEEA281DB322634FFDC1DB71EDF6EE1AC0426ED25F8B2BBC85
804150A29896E91746108960F795D629A608CD3CA2727402918722E5A9ABFFDB
D8A9F87C8B38619F9DB7C19CFAA1650A640BE2D178BAE106E2FD595EE046816B
B3B949C2EA8BFA4C6A15EC9F33F4BECC30B8C369BCC7E9F128DF6BCAE65394EE
8E99E45A901210A2FCA804BD47C3D4933E9253163A8F59BDCAC8CD5382FF29A5
2B684F2C0DE413FD2F6BE988403C5C250C4FEBD4AACDF7AD5EE6EF9294D6E526
DD281D03D3E0D0C641240A6C74D9BA33DC0D48427924A528DD88955B39DE0D16
C3265D29A6730B72C9BD9C55C0852444FA8A0C8998A0D65735748B33488DF27C
6E31FE4AD02278250A13368CC9A0B32E513BB053133FC74E99CE9938A071C7E0
C5258AC054475982BD7D6B37DB9FCEA4CCF12BFB073000B49D7A7718F8E03EA6
F3B4CBCDA3EA92548E74C08B96BC3CBA181F9180E9366374EFFF32158B35D548
8A759A6A64BA560E0506F7488AF43713820C4201D8B420A7437F6310AC2F71B9
015863E426EC3007B25AC0ABB8D19302A0F625231544F70BABF24444E6290532
483DC8E9D798D77A647E1CA933E7FF893EA475A40358003722E0ACCD583FF154
13EA1394E200E18C9FCF2AC725670B69DBF580FC7EE0FA17A3A95A4837017712
CA56AE3AAAFFA809474877CB74E5703B93021FAEC250138BFEEDDD52B200F809
3B2CA29EEE8AEB52EE344F2BF99C271C49EB6E52857C50B50BE0F9592551D121
13BBB87DE978BEBACA05C55D04A134D64C1923A47EC5D15B5B67BAED131DCA3D
E7E368509FA4C00EF172505CF83282D850E89A40D42CB13EE9E91FE208CA7FE3
A1EA4CBBAF99694EC756A509BFF5BB68FA4AFBDBE7F8072794D6CDDFBB3333ED
C153274B671CF5C1FF02D65B2818408E6847B4D511EFD51E2FC67A220C1DE247
09C7851851F53B9275A7E7E09879173045E4BEE56BBEC390669451E92F36D076
BB8261608FF56AC94E99FA1DC0829B22B2BCDD4A9713DE4DE7200CD9B5E64328
E0197B1311F314AC5DA464D8043BC75821F822EE9CC9DA9CB54E3C68E16DBB3C
083D3DED6B4AEE93D8B3859D5DAB5C35B9495C56BD21CC02464D310832E13810
B31917D6015253E21967D6838656BEF164C7450FEBE5B1725B46147BF777FF59
D185B6529B310C69D21A8BF8C75A2A50F6841E523C8086BD8BF55601185D82DB
98442DEF79508F6D9966BD545C3A186DA760245200F2BA8FAAEB10DFEEF674B7
09450FDBD2F581BED13227C1495232987F811CBBD7280CDF4B9720343B57F7EC
BFF59960C7219B9F6F31D4EB8AE7C0B00B1C24523A282235062FF10632B01D06
AB5C530F1B8BAAD69198B55A64B65089A1A9BA899676E9958A6D5B53006B93FC
7F92EF0EA33D31E6FE624124953E9D82FBE6604CD465E088D37370ED26D3C63C
C52E7B8F476C68C526C47191B97857807B0A04879AD01191C778EDF12182BD4F
E7F75ACFFBA4BFCA1D179AC05D5E50D2C41AFD9A8CBCC948779F13003838E47B
7FE2D7A726551BD7CD41E3EC91B501007CE9CD807668DA29F8614799DF092A4B
6B5599EF8F77642F10D6077FB3AD1A7C113AACC65297D7B30828BE2E66E82AF0
3252B24262EF8861EB1772FE5156F8549A8FE9C3BD4967C000B264511F5837BE
186F49929D4789
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMSLTT10
%!PS-AdobeFont-1.0: CMSLTT10 003.002
%%Title: CMSLTT10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMSLTT10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMSLTT10 def
/FontBBox {-20 -233 617 696 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def
/FullName (CMSLTT10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -9.46 def
/isFixedPitch true def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 40 /parenleft put
dup 41 /parenright put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B
DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339
F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6291
4663BAB0C9AF29F46951712C354B1EB67CF3FFF6DB1FD83F056774CC7F2283B2
49B075479604C9B3041E12DE774C78A0BAF5E980BB2F48FACC5C5887AB343376
2E25129FC0592682151714AFE84107E4D3E2C5A25B70D5D07B4E19220921EE7D
2A520E12F9780A7F601BDCF84562F771F0A7E180A21EE514C8EEABCADB02719E
2C02FCAD1C7215079C80E34AF3EA0D87E37A9AA16CD1BBD2CDBA09846F9CE4D4
62A486FFC090BDD0858DE33DA0674FC370E766B0B33871B0F16C864650F2DBFF
5B71E1041E49348F91E20FD314A7896E9BB0279B7448F931EF9CAE9B51592A14
3E8D5A1561AA72918BAC98346426AEECE163C1ABCAF9EE0F3A0187E5FBAF0647
74D1FEEA16C776858282538BEDD421404F60E5837988EBD3318CA33C66A359FE
71686AE812AA5E44E49C62D17965C82E73B743B6838392F629F419BB3E10009E
A85A34BB943118C52BFAA7660096EAB8417CE8AB8CD2AAB549A0A7DF3E9E987D
B0831FFFF5778B4F449A6B7814B4A07C65F457289DE2B8BB0BBF430BFC23B0AB
176908CCFF613C92E86038726F75673A8D00D12E4DA6AECD4A849017F07E0E17
C61358AA583C4713E3863E58FF82366B8C01C988FD13E33323F9691C01824002
68051C46AAA52E1616B8C711600D78AFA99EA878B748F94D5A6B1CFA4269195F
B2C7423A5ACF04A3986138D6B7D7314DB54AFCA00E030EBD0D0D989F81D95255
E5904E11B9192ECAE7EFAD77B22691E50542ED4BEF14093682C891840F56869E
D3C72D24D2A083035A9164203FBB017C8E14AEF625BBE5FFE812C8BC170ED15B
D79534EBBAAD031765A5E6E94C523CBBCC5B553C7D61372851EE7FE6EBAA51E7
FDC0660330EB81BF9A5D3287488BEE9497C405A2622C0197D23D0783B50139A5
CE481AF237B115B3F976D9B912F3445D61EAADB027A5C0D6B6E96B9AF5408DB9
F22DF80258309A0E1A1D5A3EE694DE6890B7A1AF779892BFA076AACB4DA18EFA
6258C89FEED941DE1873B05BACE2F48A170C82B29DCB0BE3B497473473E7C8C0
C08438EC3B5FEDE6A23BB1C17A38DD8EC0936C886B35703A915273152A124491
BBB2FC3D9B59C27C7D5DD6761D2B49A02851125098928AAF3B65BD4892EFD98A
DE592FD0CD02D62032640B756EEE5E7D6588DF90E233EDD635DC771C8F2D6E35
10427E7911804920DFC6ACEC050E8E2E409FD1491EACC62B2975722E12EC904F
07D13A2974F9E739C9D464E7CBC91CBAAA3C4B530D33DCC631E528CD5FC8C5C5
1E6FD0558E77F3B33F5B42E4DBFD0C294C52CD44538D35406153A72117E42A63
8E653501FA32BEB4EFFD872DF5CF580C7C25A93727426B69036A37E9E0164CF4
906D496D8BDD273D7FFB63EF4BF7E57C56802D8CE42A0144A6097FF479585B0C
37198DAF97A58B4B67AD441ADC84B195B7E0F280A2FBAED1F4B9389BC1F7D749
B9202B0558C20A4E83E11A9AE75603B5A6F7D6A6F6F592177B7C92082A2E20B8
503BFD8296CC3AC5D7AB5C1712CF0E88137A066E99F930D696000092E6211B5C
5F6C24D1D94CE6298742D0CB13AABFDE03DEB274D4F77ECC9D88DFC3250ACCC1
3525A05C05E508503B8401A15F0D20444A9B94338BC81261311760979ADF7A7A
C384AB22B4C3B86FD8B9EB028B6E93256D758B4F9BFE59AE043531A549F62B8F
7662A1EF17E57F47CA429EC5D3134CA7A6F2AA2FF61E799FA059B619BB19682E
0AE7705026F05F4E6CA42CCF96F6C12FB545CC42B181B027F786D77AC9F255C6
05D46A7BA00FD80AE9126BF80E1E3063C821FF37E3183A0ECC0D5E6C732D37FA
414C402C3CF3ADC3A1BF066358533EC14931A229BD7B81E501AA08E66EAA2AF8
5F8EF4CA7FE478CC9F5DD643137870C774CFFF91551B1EB48073D3144B634BC1
B973AD51B8F382E8A9B0CD99A7DAD7FD2206EDB5561CF2C33402CCF4A74F9F51
029F1BCB221B3D4931AF93E66B4A33232E92A565F16975F3036BDBE2DAAAED3C
32E59C074684BB340FC413E6389DF4B5FBEC6AC7F6F02A25ED8022F6311EC2C5
34AA5CA6E436AE468754CE4B475AB270DA9119BBDC2AD70D98E879CDCCD96E41
FD6722AA207A5394BCEAD598A26DD15DFECEAA15ADF5DED652E673FF9FCC1CE6
2D8AD0C88BD87ED2F662860502EC2D742A47ADB049DEB714141A10B4A424C31A
FC91F766DAC0662C82CA7EF65D96C09F6CD6386ED8470387B8307D41BAC7D604
11A4058DDB8A859664FE08854BC75F6E30CEA3F19125A9B3FD677AE95A24F31B
69D00DB0BCD6F997312DE90862533CC11C8E0E19DA68890362C7F1A0B83F9B90
2C9D0C19A6BF64878AE98E05AAACCA125702C82BE9262156F6ED7727C705AA9C
52DC4D5491E424D4F1F9A13ECB72FC1EBF998533231FECAC66F998AB8183CB50
F01CAF47ADA5AABA636DDFB86A6693CC2CB628186A74F2C4D8C145D6B8030251
E9C13E04524FAD32571737B844BCD9DD8ED0292BEAF2D6CC70CBFC3E8A2B4492
10218BCFA0C0F4B1EAC0F1B1D30322CD8A2BD43C490AE3AFD35FA6FECB5B06F2
F904ACDE8BD6D97A67F4C025C9AB39D9EC45F00310CFE84DBDDEC4F8825BC54E
A5B18471ACB93D20CCDF07FEA76DD1580F307A688179C08887311188B38D71B1
0F60F81EF9A2626E4BEDF23BF393BEF89AB9A7184191D0AE11C63D05A35C63BA
03E2B6A7B71B176F8CED2DF4386961CB087E9E5C01682586A31AA32C49688252
0611165AAFB00329557BEEC400B00AD07EF04BC71EB4330EF66E2D37DC0511F1
800B44AB01187EDE19C3B6A6191ECB1A52EA8DFD7FF3E1EE73D27E826107CCED
79726BC08471F9134DB60FEAB01AE14D83B9CAC23FFE8C57A8161FD245CEA44E
F2EF7FA3E27DE92201ABA25E300D700167D992168D3A5C1E31B037F45CBA4764
A02A8475FBB8CD06BE17255F439C05582E54481BBABE7D64F00AFC61F5DC3F2E
D1A0307EF7838E5FF1933D342978B46FFF1CBEA88B3233AC36555DDF80AD82BD
3AFA30A393521ADB30064563AD48421D04FF148533671989C8C1D503510BB918
81A2E9134E43358A1B71FF2A443F9FFA003E8339027D9B2B6357759929964D0D
17B4588264A56BA25EC9F36130C62FB8ACC8EA6123C0C4634286BADBEF2EE6EF
93CB7C21E5210825732E78A6B2332E7694933125B5BBF7317486CAD235B08356
D58CB54B962C93BFB237E3C235DB0C3371A4DFE21F0C27F91F6AA63A452E49C8
173DA61E87DDDB9BE4D3FD7BC6DEB5AABB14350213C795B3AC7BA4388362D3B7
E946719B75C763CDF9F4CAE68117BB1D0B81B6B95A1E0AD09C0FCA9D5517C995
ECC749C85F3CBDB012B09034D778ABB671718D5B134B3A255C4298315F79EEC9
865CF5415E39B5118FCF7182903CAF98DD9AC41858ED8DF6104D82149CB4D7CF
F8C154CBC1971768F96CB0BD183C04475BFB798D8EC283BA742771D8A0E3443E
82C742F0FEB08C2B914C782C94BBBB63F8FC4CEB1E6692EA93C6A157B942D7D4
299D29E81E11A6C7A5DC756D8775479E0D0CB3E39C2BF9AE1F9738DD8C17AB15
A23BFDCC86873EE3179028A4570CB59F5C6CF5452A239BA63B838E113EE75357
7DA848EC08EFE3166A844EEE7C83A1329D35930AAA74A477AF4695E5CFD2FEBE
B5AD12FBF6CCA169E6F802084FE74F8F90632627265547DBEED60B5225389366
8EAABB36D27819A1EAA9539A45B7A8524277FF23AE763FDB9A1558D62F806BBB
678DA9331060C5709110BB5818CC2182047E5593D1EEEF80F2A5CA977018A32D
2CB62DDA2B1637180BD2648252DE53675BF15540DD278DF093BD63C603A41F4A
772F81340013C069C035B333F6026DF1C92A63A2019A8C2856E43FE6E50B8CC1
B7818C5E3E1B30FE57A5C818B33711296A24180EE392D4AF1BBB1467E58B4140
0F244F1C151973EB4A1FD1AED6FD8DBBB228AC1DF16CEA30979563540CC2DE84
CF1FF63FDA296162143BF74C7A33CF80058E710FDDB60679CF276DDEC28197F7
6228C3C469CE1FF71799BE49809D434287E8542A527AFBD761711ABDFBBE445A
B42C5D79346C808DB4F1ED74605554DE554501C6D1E325C4F1739B46C286738A
9C55426D37A1F5B809127EBBD1FC2AE924E798DBF59BC02EDDD1860C40F453EB
DE2E785815105A03FD23C3DB2DDD7989D5EC50E677DECE6D88930A83ED601551
9DF45E1A532BFF946D215600B890886B522C01440C59FA25C92E812AAC1475A7
5FBD2B973EAE58773D11C6D2F0061185DB715BF581BA9141457DB63BA3E1F1E2
38A338EDF19705E7089BDD9C1EAE6D72382DB213D33005A5C931F70558479FD5
C6BCE1FD085A24B3CCBE619DB51AA73442AEAD2D068CA51DEE0B004FA521BDEA
3F99F65AAEE9A2A75EAFFAF6283A59F68B924FEB9B1A5F4E6A04484002BA620F
87C1CB22CFABB044C51759F4720388DDD17EE42F9B0F29500C3F1213D07494EF
2EFE0CC7B5D4FE2721615F87CE994A8D338D2BB3A8509A4B7F170A66517DEBE5
788AB2BA6A6F9CCDDB6E214055BEAC804920F8DB32E64D40BBEAAC3063B008A2
D0EBDEA498D534F3622D13F1CFE37B99C663C9F7B80A95F78069E0592B6D7099
EA1A2596566365F2FE9CFCA54934F663AE3CE5BF9060B5BEB0C21A4694A3100D
E525529F35332D9A06DCEBF2C9372D34C02006FBE71CA80B0B1E6E39556D32C8
1C309C72BFD7F5356D485A5C3BD36DBE762F32986495E58EFBBA1BBC1819AD50
A5F542E67A2FE7497849077D8249CB81D3E1A1CFDBF0809350606633E4F9BC6C
3ECDCE5662D75AAD25F028260DAE6732A23918FBD1A23E9340E954BC78F46710
22A7B62FBC3AC143DCACDB8FD64E2A3C16FD8DD31928CA63DCF949F1952BBF3E
BD7D414BF011B4D6350ED78591A059B9D1F7ABB5D74E4DCE808144CEB9FBD47C
E38417D829CFCDBF1C38286F71699F548DA1F69856171F703F62AA289FEB3BFD
FF6FBBDAD0D164B01B9D29A5369AAA674400752E6C30D3712B5D13DE2833CDBD
D2371EA136A5EFD1F6F3733BFE459345EBA25D61FA727907DE4A92D0A8166127
D4DEF02080AA107B30883AF1FCD7CE50A2C2BBF53E99DF0CB9C7A55EA5873B72
08201B751A6F7D22C6B928E2A123E4B5BF7264F91DEBB1A8D156DF602DD4F8E1
B48A32DAD90312E76BC8341B99BDE127392D51DF3825A2BB2819A043D2AB5F01
8FD0F7124B3955A77C1346083A05C277E7F25978DFC11DB3335F78E01810CB95
6DE4D804205E569B2DE75424423486CE9F48A43A877149C76734FAA33109C3E1
6C444978E252A5B28973C494C1B4AC0FF652204B8431EAE62A4C01BB6E76219F
47A58785503068DA3437E97B22C0449982FC8379CA70EEB395CDF05687529723
666C697BB0F6F4056AFD
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMB10
%!PS-AdobeFont-1.0: CMB10 003.002
%%Title: CMB10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMB10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMB10 known{/CMB10 findfont dup/UniqueID known{dup
/UniqueID get 5000761 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMB10 def
/FontBBox {-62 -250 1011 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMB10.) readonly def
/FullName (CMB10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Bold) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 46 /period put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2D432E1428FB6D5BDAF
3F02C975AA4E0072BE5F8CC7D3D59BA3FD04709FC9E52189F55C7747056EDBF5
F85CCBDB1DDE9F9163AC7158EE8DBFBE8D94A46510118ECE6A280C4872F448F2
E6A6B36AE3224FA448DAF204D1C998D010C6BF52DDCC45831DF1EC22528B00C7
70525CAC9F6BAD892E7D5C81295A2AEFA8A5E4B6BA2C4EF61FD3FECFA2A8551B
DC84DAC597222341E762620D3D3C1A4AFF2F6D68C4813004318FDBBDE23AE224
617F7BC1F3846943E915624D6BBFC555E2EDD013F190492F03CB64E5F2403723
7A2D4652BFFAD1FAA1DBA4538F2C3E608367BF95E09B853A2BBF9930D9B3BE46
0BFBEF05DA75DF3D8E11A09D472A9E45C626428A1A599C111ADDEC7A4E70407A
014F792395A2A12303EF51698D487854EA15000AB08BCCA8B2E35A5018F5460C
9B223315D7B838BFEB224E8D1DC9A0C1077DA31F5FCE0D9D499EB0507B90E9A0
1F92FB5FBB8D40568C1E8B8CD6E1DD27CAE6E107AEAC5696CFEB19091B40FD77
7A4B4F0F261702BFF5E2320C62EB5C6E9DDE142E9FC7DEAB99D90297AE0F15A7
04C0E3B39FBC85CB6B92BDA7917698230B5374D9159807ED1D07947D95802693
A856C84812ABD3EBA336B88CC8F37288CAB59790B0882A4ED6815FF6D7A1BB35
5C7B7437D2ED76E806813478007886ED1009A1E73CCE210FFA69A20D6E05A713
F6EFAB133D146B0EBD547CD29FFE7870973C1E71854C1C643BADC69974BE360A
4CF84FAB098EA3DCD2DD8B2FAAD19429B0ACC7C312B03E6446F1C1D51E6AB45F
72F11FFA078DF3196EA970B24B1BE607571795A2FDC2EE7194E9422C483799EE
23E16A737951BB935EE2C2BF008B6190E0138D551E75C9E6D0EA48E64E9750C4
BAAE32B894BE25D092CFAE894230430E43C585D0F06636C8D56BB80A4597A0AA
547FBCF12821C20F0E62369E1A9CD2343B8A8647B2FBB1F4C86CAB1F7A14669B
69DC857F9BC7538A864E523C2DF7C830315E0907CB17C8FB6E412A2A9E88317C
0026A6A402B36BDC433015AEBAD775835E5ADB4EE75FD8CA06C199E000CEDF93
00692F29C5394DEE45DFF2D42872B1370C8D4A14E144FF36163C849F9339AB97
EA87BD445733162A34E609BA1E92DC92F9AC892E7A0B39AB0FFE517856491695
56155FF0C2B231EF1314CD4A146EDB1CA9AF7DD546CACDE1E6B49BF0D4ACBC09
55C85E2D38DF84E0B779642F7E9C26CE19EDBF328104B9E803D1B03F3FC24C4C
9EF0D27C8E5AFA420A63981C000A0C1F0B3D3F853FF300EEC524C586376AF998
DF4ED5AA16D8E298C159C2A3E33048D4EF192A11287F69B11BE24D49A033B334
83CB8783383F92EFB9E3BE84CEF37796BA4211E534B0360970B9C57EA7CB54FB
F582789A83113ADD2415B3F84AC4ECA15DC70878A32559198DAE67B083B0EE6D
68A92511FA8FD6BA88A42769E3FBBBBDFDAD61F99A6C274B48CB044D16FD5953
44F1503D8D1D6DBAC41C1246A71EBCEE5B1F0DCE3EE7E3A99792DD8FFBD94DD4
3A5ED347A62D301B6739AD2BCCC7C57378C29FA5A83759E7AC6F1505DF6C0E16
71587914F698608AD93ABEC43611DE709ABC3F1C0A1343CBED5F09DDB4FACE0A
8BBA9DE5B85FE9B4365358DFE877BBFD9AF08BC60BAD7C41433BBDBA17EA9A7B
92F76358612FE44F43A85588DAACCF7846ECF5C58B22F18120F895317609AFA1
06E88CA1D73C4CD5098CF44093207C31F46977B6D22665AACAD5A169906640F6
3DFFEB3937BD6CE1501C52783743F8F6110DF43ECF512D49A55379432CAB1C33
7C38B7A38DDB91F0683A052378CBED8BDE4E6DC32FFF6D723A4D1469D32AEDA9
FBF89B9604656DD0D44ADFAC39BA893808676E1E08444CE56F6CAFF3E93D8D41
F164049193BA11AF94B43515BC79D6A538C00B08FB518EB67C27E73380A651DC
4B244E8A2E4ED405EA5C7EEDDB09D44C458A883C839B98D9D6A2209516E0310C
AD777536190ED06F47EB2ED61C53A2E0AD0CA4E4035324DE75F272B1CA6BC1FB
B912807B7331D932DADA30F1975A1C9A8B55604EEE8A0CB514C6CAEECAF9C46B
5D5563E8934B421EA1CCE3B96412D78DBEEABA59FC603CC6ECF65BDB5B66EAF9
14B852CC04286EBEDD560713090BC417A10BB834944E007F45B61AD6E6150B9C
10A6FBA56C1B45EA5F9A5379B1A0788513DD4100B82BD61D89E6841A26B362B1
D4762EAF4FF3BEABD882700BE9832115405728C5292BE942F871661EB0E6B29D
430CB271A090B6F5399184F21ED6728171B1783C982E61DB7C0BF90CBC1482CE
C6982B4F0AA39076B64CCA5A71BE73CA65F2CB60B89AFACA957EF8E6429F2182
CA36220F80EEC5D01AD7061DF45CC5109D9F0B7E2B6DB9D6C6326A45DC6C05D1
E81B636A82592D99C7B7ADA0E958A0D7570BFF1830017A6241AD62C53D4CB36C
583672FBA265142DCE545F4855CA3D9E528143AAC66EBC9527B76EE43B4F4E2B
B209BD265D6AEF18D168CA7BA2CEC40DF86FF352029597A5A3B2941D467DF229
50C788D4276C5B400F360AB596E35983262A215047C9714912B2E69CABC0DBDF
BF6925E19EDF3A6638CF5794722C8B92C6DCF5853DF288B9DA52A2152F98227C
FC04D3C318E7D942E9D33582A490888F0C1CC1A8C4474091B4956222DE467632
33CF5DB7DA165B59A648AC6945687B0ADB83EF5B286CC469B2C9E4AE92ACAE8E
86E4C62A092B8F6C05EB2ED346DAA7C573A03760ADB3CD55B6C794FF4463BAC4
2F4A738F9C4237107C503A7EBF4F4BB4380DBB64F5F5C9B268111752FD2204CF
F25085683D071FB4149A64426859D407936A3D1E2C627652C126D8F9264E2919
960ACB9DD61BDF973492CDB1FD20EA81E06BECF5E164A8ABAC12926DE1CBC0FC
6693737B4875F465B5623C899FE129B3A52A2BDF104F8B8429890AC870580C7D
B078A9E26C322D1A8AC1C6B2BF340813D989EE8D054882B965905D33EC3F4278
DC41BE055E0E5F73B5A1F45E9E69718F5E155B4EA30B28BD28C52C6C322F2E84
674CE600D699CEE1D2CFB7212BD8168B45824890273A0AAE4757D112980DF2DC
C3026300B4BBC9B081817AC7F4D48B309E66CC7455708C772A08EF6FAC829363
E27AEBC3E7D0A91984C05935B16E102E81D6AAAC347E38EBA40125543263BCA6
9C6F4AD6BF8C3A90279FCA4A99D9290C3B8E0DEBB4B2DF932F66FD47AAC3094B
7582FF8265CFF8BBC7F79C8C74B1FF94B26F3817A39B5FFC6BB562BF6DBF9CEC
31CC3BE4D7E431D41D55D96C4F020486F993781828E9E8850192F9F6BA350AAA
5E292210B0EFA4061EC8BD6EE15E3FAA4AB2F54110D17D29BA32C0D28559FF32
D164DCC98EAC78822D6D6AC6F4871D47290A11C83670374F072A9DC723096C89
EA584D43BBB13584D9B8B1820C415DA2E0DCA1B50655E81B47B9AC8343DD8FAF
95F4771ABF81361EBFA9259EE8901F31C21E95DD22FE04BDB77D23DA561FFCE5
A7708647AAF65FBA2FD95E843D839E5734D4C08A215180C7244924E002A965D8
AB29470A1B86065B4133A9A6EBA05EF1AC67DFB5ED8DD8C11450233D2624EFEF
3E6D3DCA7E23ADF174BC83AF25A1D7529E52D39C27DA86A2DF4BE4F8A96361CE
7025BC1954C75A765ABC95B4AFE0AF5474653E6808F85893BE6ECA1A37F8B666
05A9E9FBAADB0DD86848D6FC48A1000FAB396F756513798E09D29ED6DBCC8466
40181BB71C92CAAF8E240E16304DB9F4B0FB6880004A0F9AF6228E60646647D1
669577DA709B4FDB8721B95B07B4599652A303FFCEBF858A41F08BF3B83EBD31
74EFA947A8ABFC7467D6CC544B655A7BD4B6A4F5EA9BF11CFC9CDCE14FEEDEC5
9116A3FEF962932F8B105BC4C51744916E8976815AC286B1E682D83091E9C533
839223A68B9D977C41107F597E05C3D8C1C3E79542A990B0E8E22F34BBDD8E47
B6C2CAF54B72E8F0E8A41DB343934FD2C33B6D77AF2E9061C4E76BF258CFD615
30AEAECE9D04569D358541C346C922A01D017BCE85D4F083AA9B6939D85EEF29
335D1BDCC9E6D5F7F58EC2BA2D8CE50CCB38AE6A2DE2F695B76831F8F591BEC4
EC6391563D18E4169151F552B5E1601B1DDA6F93E5C8B5F4FE63F5E002AA3C15
E0C8DE2C735EE00E9A2A01530FF37B7FEB0FB182A4E381CF1BBC80D743209814
F99002980CEBCBE3E677005766CE1D0AF4DCC9F103499D1961771FFBF01B833F
1701EF6EB1A381A287F73E519C01084241335905661B2E8B86B398C88F39BBC5
09FACC1344E15CC7685708BCB3F43EAD4E24A84AA0687FCE0A2178D9BA84EBB9
68E8A727DAF9A0B28A7CA3B119798603F9BBC6728C5A6B4BFC84C95DC4F36839
C2649E364CEA39A4EDBBA4C0E27C61648D38CA46B64E8CE797CA3464C80214EE
28A1E58B387AE0A663A39F04F57899ED62FB0E542EA108AC32490B4B2BC068F6
2087BE9C9C3CBFDD80F2E632BC4C971A79A0A3C3A5607B997223A9F6373EE51F
C58EBEE7756A391C91758A1F6567F532A5EB762A2927F57CF9F0E845E4F66B3D
8100D1795B706FD32944CEF24A054650EC911A54A22F4F35E3034AC70F07C98B
8DD43BE9F7D68C50D6449791F5331A189706D9CD18417348B9F296D8D01368E3
2523FCC0EF33B998FE925B4CC7BE329B32D6AF791BFFACB60E4874412C8C8676
34914A453A592C7614AEE5001DF3E5E8D9335A155C65174B940E1AE61ACBCBD8
A41D7E1C6FC0680E094ECF65C60CE714E6EB2A1897D8A3F39FF58D64EF7E9A41
4CD8E55BE32CE8CA29239A9BE3FD6B1DD5CA5A035AB1FE57CAFACB8A39B6A877
C853BE6BAAEF5714982FBFA414EC128B61326B60D83076E690FDCBE3D2AD256B
FA7A15B804402826684AAD933E94853CD0CDEA3CCA7DC833E486F431EC4764DB
F3FB244DB99FA0CA2FA14DFA75A326385B3AF92AF8E4C6D437DC3DCC07FAF25B
6C0F270333ED377B08E498BC3004C25C7A991DAC9A3E0D1FC43E2EB6996C7269
7A864CEF35FE312DD8F87E37AC69490299CEF9B059EC7E7492D1D6E5640E0AC6
35B97F7A629B6B7CDF3BF86D2B518EA807B03E4F79DEA59C84D98E4C94102EE3
71A29649ED75F5ED02EFEED8064E2D54E8F9CA0C4284B987B81B7F41FD7DCAC4
FB9C3ED70774F9FD09F3321CE1D0319C1129F5868DABBD183045984748C8A3E4
53E085818729A1353B13C78E63E837DE483E9E2ABFDAD16534420BE4D7976D35
F56B86EEB90F663E9778A6E0CD698E6324EC2D19901972B74EDAB8F4073E4F37
89082F08735E8345BA167B2B76C77703C586CA5DAF41C0DD0E231184DECD8A9C
DE8FD239B6CC636507A5BE6EE5283C06A1D8D59E98A31AA76F4D358DBC641DE2
ECE3D9F2D262FE2E878E909A950A7642A3F59995519D541B96D459F24F12682A
9AE61FC08CF436D9DF060DAAA90884A1281B370A2F824704B5347FEC65E14E7E
3D212E29723427BBB12C1CB91B28CA47D6FA8259A875EDAE4B49C33B2F73938A
784C1E7A7F21873CAD55A868A1451B070A3F259A983293289B131E07C903D7A6
3CC66CEF8C4D2B6736282896A2683EEB944B67240CAC5FBD8A1392A875245A9E
2611B511909A041846063E465473D41958104E92519C0F86706AD640FC6CEA10
620C9718C4589D9D562D8810CF6F461B776D5A1B040F8272D43C029C2A695D2E
86CF508C4AB11104E575E13C2EF56914E241279BE0558CD3D59D25BF13CE8212
3D7AD1F25FA5A9155AA06306C7CD0F49E3498856318B0ADF279731E1769839EF
98657EE73CF07B0585EECB67F5FF609E0E3DA1B78F6A8FBE2F2E0C051237AB4B
1587DD72BBFD962E865EAE0CAF1A5C592F5019C7533BAF297C0F78F3287838D6
CEBFC8B5969486A5134DA76B4961C8056E1EF1F2AD17F19D7998175D66B3149A
2CF21CCABA281EA0345EF50C1EBE7004ED495C6D03963B639A66638A43C049C6
DCD311B5F86EBC814BE42D432EEC87B861FCBA9C8729FA5AE87E20C5B30B8E5A
BB41189A42B9853CA408BA01A559CAB722AAC3DA28E70AD79E1BBC8B6FCC937C
180B5C2E20B03D3FBAC60C83F765CDCDB3146FE5C0B02911F6E120D63EDFB0B0
86CCF83C2AB62922450206D3701588B54A8B232126BE120432E6BB2E25C50B13
708D742A44E20176C54FF89F4589B10D5396C94625AEA1914AC168899FE7AE9A
7D90DA67A5EF3DDA25CCBB18DBAC3AF4AB889528A381542185821B96CCFB4302
987611DD5B5B8514FDD7F5148D1BAC9C34567F75EDAB317E0B8A7A76604A42F3
1D46332C4791006DD1AB657308CDBBC7314592707EB163326E345C2C5EA05B33
01FEA5B7A346E6B1B6EF58B692150C6116B149B6A26B493674337A9C1CB4F42B
A7A80AC587F9BBD7A487F407EBBF9978840A01B5E7E772DF7EF28481E7AD14F2
424816AAA958320A0E6F318C757A474F7B05AC0F570094372CDE877B479AE3F4
90C257A2B3F443DE43D8A58594BE8D4B5C7E5E075ACFB1AFAD4C06415266E168
FB38C1CA256287953EDAB1D40537A3633CB52FECF3D35BEB8C2C6CBEECB54BBA
CD6E043EEF68A21D7639FAB8D1006B1119CF92350D9773502F7554B4B3036EA3
D747596506FC674DC01ADEA9B45ADC43B9E6947235E9BA30FF462252038D91D1
D908E9132A946FD03B86A08885AC44CEE72F0E27AA63A901F2DCCB86D87702D9
A66F35F06D6640115B075B0260FB116E24E795E24DAE988CD48A95FFD3116E92
63D02221D272531186E2AAB74496FB78A4064C9C9772608C49D46E40FE28088E
B5109171E7AF69599BD8BC1186C196EB11FB4132F5C9FC1395220392E17B66E2
32215E54E9483196341D6DC691FCCEFBD00DFF4C095FA8AB36A374BD5E1F5082
730A698AAB7B57A5399196ABCF7B7963E2970CCAC5E9A5EC552CDBE1E2EE1968
B81CF5BDDFF9D385C9C1FFD726A0C52A4CB0C8121E77AEA16157C1EDCD1AEFF5
5607E8F5C44072DC54332B95AF28417E2D45B4685F270821EB6C455AC147F938
50CC9F7F2006D933D0664AADBF5D7E3E6DAD57527AB59DDD13BCA392B059FAD2
E7833AD00F62EB89CD7BECA9DD479F7CD7C981859EF43CBB1EC1681081B58A39
2CEC9FEC039082771E1BF48968431F72817C8156D0D6B65DD33D472BCC49496D
1F5FB1796892C6A45BCC65BECF41D8604B811824739647D87A7B28FDB3574478
9807DA2557F411E0BA7479F31B9E3BBE6F3CAAA653883A9D2BEF2073F47F057A
CFD20BE1371F17F5B6F0A9520F2EFCC3C04A24EC272C43E1F587ACDAFEAD7076
6139D04FD9A50F67301D7765109C76D6270D2DECC94017A877EF386AC7F625C0
ABCA9A6D15D71AF7A5889403DDB83EDE87EF5A69EEA97995CC1601160B296750
32AD8D65A456F5471AD4536F1AF41A4D370203F897686CAE7C89577D3A843E90
9C08CF3E3D489625256DA5E0984BF971E0D8D251AE5B09C17883CE07750051DF
770B920AABB2E80A4944EF613891B4EC3F9E214339AEDFDD5DD15240933DC82C
D878BCB743ACBB562A41BBD86191E1129718826681FD12981D4159C7432DC3D9
AD4C6C478EEEA0A34030BDD0B9122E8AE5F0B473AC5A48346D56C2DE42815D19
FE378D252960D3F56654B31C58CBBBE0D634FF6EB81295809AF12222C58345C0
4595590B2DAEF5F3CCACE8AD4CE8585DF4099665B05B32FC49160ED307573D18
6C4D88C07CCD1BD4A0179BDDE6524D8CC9A70318578646EE6F4DE040C56C90C3
C5C5827A77DB584E95F55F083D07AF133B31DB611D1831D93180F66A13E86AAD
573C57B42DA521764563F69E7D4E26057622C17A17BEFFE96B9154CF9B9E70BE
65FBCF5161148906B811C05B6AF2EBF80DD90786B4C19754DFBE0653F3D80F49
365D5006829FED63CB9571B219B38753D90DA82647B305ABCBD6C49ED9DEE464
62D60676F891DC1CBC2613C7770AFF963ADCA396EB26D886FADD7D7ABF910EE4
798D537E8542C599D4E6BDF99D27BD64EDF7574B612B85EAAB846B6EC144DE2F
325FAAA3E3C33421B8006C3C64A5D62DDAFF65940AB969F230D73427A7ADE48C
3B1DF3C1C46E700BC54CCAB03493FA821ADC072B7248417EA0A93D1D2A093EE9
CEDDF8E223B73B8A2E27EDB47BF7C8E0D56EA5BD1C6BA2B25457BA5AF39B237C
53D3A144BEAEB0143DFD3F101FD403EB5F1A285297E4042CED3C6454DF867088
F91626D3F3F8F8A3B85B962FB53987C26F1FA074AC3A7790BF5C7ABF3F1E973E
8B4F9198A41BB4AF09672D4A6BEE934D4D7AA08F73669697FFD19E8EFE5EB5B0
91B0CB9B6C926AE14394A3AFB53017F95E626B314CFA98699815D901214BC133
9CA09DA8137B75BD8C0ADBAA011672F9A9A210C2C383693E2965049768ED3383
153CE37E6E1433416C5AC2E1D9211DA84A1FEB1E0E83021C9EFDC5DABA4D1FC9
A1BE6BBF23B4CB5A92035C798B392151649A05E6F64C2F48D791B4F7050A732B
877EA2DED692DBDAC4EA574650C168D56DC90509611412DB6C32B058D8E98F6D
61CFE1EEB20D4900AD7B5E80FDA1C75A2B7229FAF75F60647C5853D443345D4C
21A39B04B1A6DD43610011CA2B3335283016049958FBAD1E4DD788D61E4204D2
9C90EAE850686B98BDA64011CB520CB4121B98ED40B3ECFD3F3A8CB93F01AE9A
3E637812762D2E90AB3C94B33FEE92536D6EAC8ED08BBBE2D227DAE1B2BE04DA
1175ADE3924D3E600FCC07476E31DF9A6CF114FF0A8AC3060F322C7F0F454C5B
7AEFAA0F633E990F2B17715AC9B8ADAB6AE180CACF6394E08D0FD32E768017ED
FE94E7B51D37DD5FBE126CA72A4ABFF2095695EA9C81A2DE3819998AA72B36FC
08269B565D331BD12FEA970B92E33134AF510D721956F7200E0931E7EA2A228C
0BB2F0CB65CC706C55BA98D7A44EA94CE8A66AB626F98167FC520222CF74BB7C
6757A3C80D91B332A45A33A9585FD096798F5650B58AFAE41BA4E68B7F48B0E3
AC4F0ECD905E82C163E098B54F6C36CEF2DF0ADC369A6183443550BA0E4C0C96
7DCEBC1E7B5C9A8B407A41D47F3622E662703FCA529E713271A12E2ABE261E5D
D86A00846DF67B1B5CAF404032DF21CB087D752BD06F1D34E04A9F4C040F27C3
5886B900E46CB8010FE26797F5003D3FF96A54DEFF591470BF62A15BF82446C8
7047C1FDC3D175D700F9E093A3099E03085DE0B74DDF97285A6B0B5E6BCC51E7
5E701892A1381F91A6AA6CF11E5B00B92450B92202F5B34494B43811C43E5101
EEB76CD56E0810AE5994B92CAEA55877B99C5467986DF645FD74F1DEA11B9A87
5F5429F9D7816AF6C4CF1B8785F7A060AB07D4FDBD2C7F48B8CE022CD275D9D8
0FCB00A8F9BE46275E9868BA12EB21024A6BEB219A0F146BC9853A39DADFBEF7
0B53971F86AA0543D1743C03D5D29EA154A73A964FBECFBBA046F05A523B333D
AF32E893AF5AA7477CCAD01006CE00FBCF3E1702B0B0D9AAC4A415FF1B338E8E
FF1953F984B007BCCE2E60761DFA04DAD42019B3394473779CA309AF2D38E183
808CD6B3F7BDD33AF34224C90D61B10E164C863CC94400E1BB7E500F9B2CA1BD
94E62B31BE3B162DAFE838BE8AB2696715437292B081798C39E033E0E5101A7D
010A02D0C18AAC594ADD59E6EFAB5AC2BC64E2362D492E8749C57F1DA579B4C9
EC38A60B42E13DC1FAC7F33405967C8C0DF9E3A77B44679063F18352C6586258
1DC60026E8373DB8AC59D26761DED98C804A76FEE28B8741ECAABFD263D27311
77D1E331D24E092F86B88F362AF2874B8C72189C8A499992D0DA85D67C496BB7
A87D310FC3F01D640D81F3BA4EE66E1D478AA9DDC5FCF31096C1B01A3C8D0FA2
84DEF5666D6C6AB2A620A0BB0C8F0120CE480ED1CE940AEECACAD9A8CF645E2A
41C7B1A59181674D2CADA6C97D13F6F3059FCA1A3CEAF752656DB632A97FE071
EE90F287F45B5D4AC0729F4924F582EA2B29AFF55657B462B1BD32EF9A2C24E4
68FCFF05BB4350A863C07A5ABD8A8F0EFDDD9AFBFA33FB9B126C523A151DC195
D5CA53FFE49A27797FF885CBD3F2B220A2A907DEED744C2CA8BDDBDA45DBE401
1D1AF9CB3C186C72E6FD42F7C0239BA70C49686FB916E8B9CD0EE418F27414FC
58CC65D05A02C274CC905577A83266C3C2267C9B92F1010D7E48696316782D8E
C4CDE9B6E41CE823684603945270F6D20C6F014BBF06E8199FF93E1AE495525D
EA8807B8E93C5B7225B59C9AF64651795A36E0EA382C2E624D817D421FBC27E0
ED1DFF7FB7112C05C92A32A6AF52443CDC694FCF3E227691A54E1EF15059D47C
3240B0D4A30AA8ECE2E8F994FD3480B905D570909BCF72057C71EAC51D80970D
9DB2ED6E8E1496B750BDE4261C8C6DC568DDD7394443414937A78B3CE5D16FC7
43B4C21F9934BF05A7F66A4C89B88D47EA450DB06A3B656720FB2DFADEE43DB9
9829B74C4E99E611A83A470E8E78B25B56BA61FBB55AB152B4B2BD7B7C4B9D2D
DE5418F59B90B30A635410D6DFF96392FA013941CE3FE236F36E17DF66E431A6
7EB141FFCD75D858B6F2E2E2B6A2A0411ACD013E3F2920B3B7351BE0BB90485A
04951D059D3847AFD7E78ABDB5F4474AEAB3AD301A23326255C96B85D50B7F35
BAF4A52F2E1BAA77E8FCFF43887C97FCDC98F3E22AEAAF5958EF303E5DC75FEC
639F8E71356A1049D8F58E6DD3CAF0134F9EB757AE973DAEEF1559BEB858C8AB
F3D984ADD23663E554A2ECF89F1A158242FD59D0A6CA35CAA7D0BDEF9DC2AFA6
87C6D78DEBAA40BE7B09D1A38CD8181CE1F016B45A830CD0ADE074FB640DF7AD
21A8FC8C961AB0B60B8303D345C947328CD8B4AC44920C2BE36820C363750D2D
10AF360B1C0DBDE0DE6EF35D367E8E75287AE16245679BFFD2BAA25DC78EA1D0
5643A9624C2824384AF3E3B4A9AB9A40792335E1BDE6A40F6381B99EC130A788
2EC7EFF054B23833450BFB5DD46400C653254DD552AB44FA2D98EF4CCC46E585
4B64D7F73CA41729B374937634B24837D53C3A27E7DAEA1C574643FFEEC76A03
7D9FF16D2B3E42E4C87008C3F201745A3AAF247051ACE238C6B6B1A4116F902C
278BFFDFFABB73495EC7CC8B72C984E3BDAE77D4C2C140E6749B450CBAD5C04F
6726A2BA90080440783FB11F971D1F066BF206FD3B2DE3A6C8F62BADEAD81EC6
B399D50FF326D73D7EFBF33914852D909DC7F8C55A74D5C063E69D488BD435F0
60BE57AA99957B0BAC5A2492F818C65620B390317A8F1B09D9D3E84912CCE3B6
0E65EC5EA2950D0177E0334B031EEACAE0ED9C2E5923DE53B98F692240CFDED7
F7309B8E1EADDD10E6165590BDD9DB6A16135B6928B8E66331B1E25CC4886BF0
7E65B4FBA586EE65A27CCE1660608AAAC634FC4A36ADD91AF25A410A03A83118
E976C66C142230974C5B9DBDB4756064C71AFB16FAA66AC04BA370A0DC986C21
F2CB3DB2A04E0A2A922DCF7600E6B652D9A6273BB2EFA8075EE0732316A033F2
9DC886C7704EA215AB9146CCBC1BAF95DAC2100149A33831938E9392DE5B7F2A
64F61784CCD9F755935727722DE8F0DF4E74242B573AB5BAA58DB14BAFC500E9
E9F5A92609D2052F97F9054E7F1FD2115485B36D7D9838D9C480FB38604DFEE8
DD52391B2B2B1A25A0832A798EF4645583F20C27E7D7719ED6B55886D53FF31A
0CFD99BC53C8A7F22A87E79D243A9EB44326A2E4BE42287612E8AAEBA99FB82D
4F24883115C2958E930AD4765A75519077E19124573178D956A08901984089FF
1EF4D0E8B9E6C267B4DF07D919576AE6557E72FD8C26AD55C2A5D863D0855630
178B49E1A3D115C2DB2C0E31FD17866D9AE0F8A0F9918B21CD24FC8F1748B016
B4BADAD49C377C414376EC297E273A8AF1A4064B01B4FC9D7FABE43449BFE2B6
2B143C626EF988557C954AC052AFC10B0EB95146A84D0DCDEDC9A6D429E5CB3C
5AEC09B6BFA9ED92AE14D7A738F09BA6490E779A1F89EA62523A5788C3B548C1
70028665F320F5CA3D0892365690D051977413CBEA3BBACAF90D9BDD253A1472
9E112F672FC62B7CD430FE7206E6AAE04648D1F42B5B9B4CFD65E7E59E941614
F4B6D61A8E322FE3711AC7519A59D20618802B1733D4687339899E998F4D034E
2FE75F3D436EB1EAFEC00D95739E315B04CF325FCC9E91C582B00E95A994850B
E05798D3444E2ED2BB1D04B30CE5F48DDC07E52E85A0200216C3D6E1B34D5A46
7888A4467A18D414E0F1C1709D05FE1DF304F993EA10117799FE4824940D0742
187276798C9A1BA59C74066E88967CACDB72444056E3CE8E12EEC45859DFA602
8B587D9516B389A974272FA8941740F400DF1401B03DF768CE29D03055125F99
0A595205DFD2E3D669D3D8A9FE11A0BEA40C303E25C72080F1CDEBB5F490EF0B
B6753763F2C512507CA2FB722DAD7F817B68F383D23C1A6A7550B4B22C757C63
AB81E1590BE4AA618FA9BBB7A463F3F2DC46DD4CEDF3542C0E0D796639C372FA
D500F5A2BA3C351434CC25132BECA471BB588230923D97D0F0103673A9BBD22E
A390FB6F34B436DEE54F03D609F5C94F9D02E639BF387E295B48BAC23D776293
9B9566DB85932E1E038F5CCCEFC45B623B7D33EAE1B4C1F083274F2033FC5447
CCC4EF9C7BFCEE57084591B55F20D0DBB0FA211818385949DE88F58B90CE314C
1B5A97CB72FC2917F4E8DA6E2355781BDB86818F76DF7443578640483800671E
ACCD36B1080EA38036B40B98E51AB07EE806FE6FB9039EE1E90E92D6CD76CBCF
74A29EE81713D82CC4A183ED86D2D2BF962B383F751D2D209644ECB4AA27FFEC
142E04D4F3296A34C730D44AD435BA7E2D972A75CE10C38C1274685BE231DFE1
D90C8B8AC0E7AC2888810BD6A2AF05E6F655EB4248B2578D533FCD37B4509EEF
B3D6DF37391E54C0336CB97BF90F30169DE940552B354911C5CB386766338358
2C5C7EC2B6D5A19327B32399CC1061394E110E5D5D8BD6BFD67B494A515A2FDC
503ACCA44740E4569787BF400066D01300DB840030D50F6E97AB8B1CBB383A67
77EEE66C66C2E389D72403C3513FE40086D969185A9841AAE7A2214A6B524822
96BFAC3CD02131906A8A5E2AAA99BC19C3515E22C47D33D650480C567E159390
4DE2189ADBF0D76A205C3F4FB98A75C1A4BE5CF904B3BF89421EAEFF4190561B
79C7BC74C750459642D64018A4B17D3350245AF98357305BCBB5D4368D9F93D6
F6AFBB6C5D60E354925CBBF87B2CDDBDC05DE872F4B808AE47C57635261A6108
6BDB1B14E023F5F376AD17F9FBBAEE5C1F155458FB53FEE818DFF8D64D8D64E7
4BA5806409E71089C309BAA2A0C263C15E88A651946D30BF09B330924EA444E0
48849753868661FF237ACE0B6F9FB54EA8F0C8FBF65A75185CD3EDCF51F554B8
7D8EA7A1332316F0F6F0594D36C10657F79CA9090C11E7FB96EF92639E1B9AC8
B5BE8EB8DC85F54D7BECF17616FDAF220DBCB9A02E3FAD395BE6590C6EC9BF81
D959176E5E2FED7B99BEA411CE1C6FA3CC17CC938C39D62D00678F71387F764E
A23B4A5FB9F8E41091CC44E81E8F282CA943845BD0B6EE96080EC5F7D00BA5D6
24589300826705E6FDEACFDBD4EFBD4AAF5032A97216D3D1ACA0A5C00ED28FDC
E63F1F269410770500C9BDC17B7C06EBB180A4D42FCB74B109C961298E05AE5D
D632E95DF45FEB1C77185C5287AFB8A2768E29A9A0B0810ECF127EBAF328AC0E
70F24DAED98E712D2BF7B171A595FD37397F1F4555BAAEE212B23AD8359FCB09
108A8D92509E193B47B96999C06A33D42BBE9D4552D5DB137810359BCA4ABCF3
90D01B5CA17744F35695B5037226C12A1A5AEF2C0F1382E9F2913A74C7F1B8FD
C2AD02DFE9480EFC56C06633F834A6F3F14BB4D78C1707442932644761496F6E
6B96CE6F69B92F23FE88229569ABF178F08C56678DA57FC082628E8DA7C655EF
5B644EBAB03C17F8AC6003C743A06C8830479469A5115F8CB101084B83FC665E
A9663932A50BDFC8F8155CF47097148CF450D5F6185469235E5B9F94BC99DB9B
63FAC208E69FCEB2805D85BB7D44DCE3FF8DFE5A913C3A9D09586A0EA52F5D82
D3888B556B08824313A3285410C650127A7D1943F4FB3885E467550FF92E28EC
4CF113555EC4D53F853558CCDB3BC95A899AC515294569680E19F913CF926F7D
6A24A6683C3898A3DF0E2C83610EB37B6E8BF54CD8A4C020F06702F018760AAC
906A1BEE78D556200F71719AAB0BE71F7EBF90124EB8C07D069FA980A6C392B5
DB882D82A0FE052B9DFA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMTT10
%!PS-AdobeFont-1.0: CMTT10 003.002
%%Title: CMTT10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMTT10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMTT10 def
/FontBBox {-4 -233 537 696 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def
/FullName (CMTT10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 33 /exclam put
dup 34 /quotedbl put
dup 35 /numbersign put
dup 37 /percent put
dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
dup 43 /plus put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 60 /less put
dup 61 /equal put
dup 62 /greater put
dup 63 /question put
dup 64 /at put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 72 /H put
dup 73 /I put
dup 75 /K put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 81 /Q put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 89 /Y put
dup 90 /Z put
dup 91 /bracketleft put
dup 92 /backslash put
dup 93 /bracketright put
dup 96 /quoteleft put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 106 /j put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 123 /braceleft put
dup 124 /bar put
dup 125 /braceright put
dup 126 /asciitilde put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
7329622828B2785C1A8B26351BC7448C1719C88FE99BCB73F7DEA427FBFCDF4F
00EE079B0C712F7D2C8DF98D4830A9D8C8B70A8C5D54BC1DF433517EE593A104
F3E083BFE49E9CFC4269A86B58AAAC141930A2B4193F74FACC1EFAFD38D3EDD8
A6672E3068F4E5FDC99AAA254345C99C06076420E55715665046450EF164C524
F4DCCDE02254E23815458E7F703D2377C26B73B78B9ED3E42F346F6CD79F7F36
55235A7018C0F600C8828A06AA35100F143FF18F738D2A61D1555F907D04E5F6
3A71729A13D3193A46D67488EEF8E05B5BEF2538E8633B7DD321E56DF4B1C765
0630C432BAC0E607C1EE5D3872008F9AC757992A6A028625EC7A119C50104A35
4F85E83600D55508E00BB0FE0C1257769C8BEA7D15C90C0727C76CC3E25AF16A
8C64BB2C7917D7CF37BA170E3CFBF0C0DE305E7AD2C9148073A860D205AE370E
3B7357956F55F7CAC4E40CE6E055A2B64148A3F5692642D746ECEC4B91C16CA8
E4C21AC96F55B9C7706EA87C2A4C5D8707C8787892EA867529EA500AB8CF86E6
483031F98EF3E46056FE085A0BBE449DC1472CEC5F128205B3E22EBC6C5F7B0E
49916539D897D900C10EB6B5399326C9020D50349BA90A6860DC939EE6B00CD2
FE2D40ACC785B67F1972701CCAA045ADE5245DD627628FF3A08324C85357222E
5B02DFC74B3341F7EC24A9DEACAA1A235FDEEFE33E1D796B6FBB910B766B0D3E
E1B26D92F5308780C78C427E05EEA52DBCDED5DB9F8CE9060A239E33E812D091
5CAD9206027739C3F200C7062691B4826035454E3297E848B6696E20AA6E58AB
8635FAA52222D538660039D6EAD9A628CD40469B06D33486429269E1DAA5CA44
BF4AACCDFAE5EBCE215C6633C7A4E65E59BB4D23F82F28E3F465A4055EBD6EFC
0CDF28B330A74B096A7ADE50764CAE7D47740ED9B146CD7B88AB50F1B3EC9BD7
C452BC22248C030713661580D7C1B148BA84A004E1E3CEA5B87990117B137E0E
1D1E3FD028AEB7212D5697830BE0986BD86BA865BB91CDE9EE3A8E6519606AB0
D9971CAE4E1AAAD52E4279CEDF3F73B7850D6155E5208D976A95E1F5DE279F75
A02F0A5C2744AE025D648188A4A72D8DC565D4EC246FB2DE029A1BAB6E8626E7
E9F37654A16ED76B03429AAC5AB56708D357E427319C2A9DA7AEE1F42E318D22
EEA07C674BCA1DA029B62D2421EFF607FF661A2BCDCDB921F0330F79285EF2C6
9ABA2961683B8417500045C04D9AA5FDB4685C29D7AB457A0B8FFED9CA8AB09F
1B12C92102878CA490490A92C46057B1351BF5739DB1E84021C79C5F01E1821D
EB5196B001ACC2FC58200531F4F543625B48E6E7069C71BD328D00718C343010
FAFDE4E42652F1B85F57673C6CE01527AC776BCAB381A6D5F3E19897849080A4
C07A44D9EF09309A682485948E71DD8192E20B3AF17AA50A1DA43BD429CD5A3C
3C5BA184988B79E6516A5A79F8546B054E6C593569B06CBB27085F3E9FAA661B
9545DD9E83CFC95B422DC004C06CEB92442AA9CECE35C2864AF8460726FADC19
D1336FE20AA87127CABCB55C8B1FF97107BD3B363954DA70EC09FA20CEA73FE7
6A18ED8E23A4D524A0D895531C1710AE6D5E859D222005B5C1BD8684BC375EE1
7294BC39F53DD1E246A8A0268271A1A6C794D2BF5104A698EE46D52565FBCE8B
FE5BBD601FF304C7352F57C70ED2E4636596B9AAAD9C980FC6F26BBCCB7E5F91
8B5FEF8FB94AC13C96808920ABE02E1CC984E555FDC1F94DA32C17391B3849E1
959EBF03C244FC755990D6B1A595675B46E868390360B3EA5B3B6A7B7D0ACED1
1B683A175252D468CCF773F355664D08C3FEEA566C58B9A12595C5AF84FCC2ED
E05DF412F5D3AF86B7EECB1ABD6D78E210D30567F54154E1515374FE8CA0090D
EF9D4C2A02E416EE1EBFBDBE5AEE9EFFB5252EA74E92E3925484E3FAB5FD5725
A4AFA6359A7EFDF53A501C5F1AA8ACAFCFC45E6AE23615DCB016E5CA27652359
E23A78FBA971992FF0ACEF2A9FF066B0E556B72CE4DB6D530564D016C4A42A35
AAA3DFAC1F8A92E3B0D8C1A90D72D46BE8DE9BC9FAFD2392C817B8F77AF78208
3BE9955D6BA949093D4FA511C1FE61719E1D3195F35171694A6F7CAD4242AE6C
6350C9D9DEB639F7CAC3AF8745E362DA62B47B6B47F3619442969BCB65AB49C4
DE54A05AFB1A56FD61DE0F7B8736BEC21596E7BE9162F7021770007759CDB6B3
F043ABF38627F8E3F28096A95B9ACED41A69510258B3B0EC215D3B97D732628F
8268DBDA125579AC4A1AB0AD237FADD310C58FC91152867BF478C3B1EEDF31FD
465E0DC3FAA0B00ABB648ECF22AE7B01B5A403A9C5E8546E530DD792041F5563
C747B981FE4D6A8F705D21634B1043B885806930D7FB643C75937C01DB7CB38F
2ED4560B462F8F8823BA37A8156C28A9BA46C2B6A928553E7F0FD020E638964C
C3BF7B295FB8E3118D6B48AFADFBE51ABFD87188E74C6DF68D995036387E96CE
B9141126E41351E349B6168CFEF0A15D36F518F77427F93E41B13D8D3488037D
23055702D827919E507FFD79F31A554D8BF98B73AEFB2DE8450D5DAE2B051741
92BA300399DC7C9D39B41E36C19D3F971643C30882E920EB1C184D20519BA04C
30D6D272C54B540EFC74B8D8FDBE6424EE94CA9DEA379AA87B4A5BF316058A0D
0E44B7792BD911A57DFB222D928E7ACD9AC312637F18CE4FBB8564E3BC81D7E7
8C44DEAEF089F110F63D0AEFBC21FB9A01CBD40AE0A6F25531307FA0CC1BA819
8E219104B22197EA0490DBA6CD2973828B6A2F5F7C21508CB8481ECD5FA685C5
4DEFD60094B86D044E5A7B06FFCD91A63A1E16885DB58C63E995857D2195D6EA
0CF0B00E37CC7576229A6A644510454A0ACF25E184D17B31533BB8231F68C420
FD60883C426CB8F850262C7E4143A2BFEC536592EA74BA9B988DFC26674F020B
FEC74F60D2CDA8FFCE3D416E9130DE565100A33E0287C97F6D09DFC2072A1532
D0C6F578F44321E7598836361184802F7A7FD0AD7CC66FF7FA7D349FBD703955
63ACA757F1244C6B5E42383A78B3E79FFA352B84D6311D458FF8C66E8D8D0D1D
441FC2ACFEE9D6D55AAB05E26731AEE49A7DA8ECD985A8142D0327F2E408AA7C
E37C552E31ED846ABF5A19F4E6235F4D57B09AE9016F59D98ACFED6CCF8FBC76
535D2555402589E731B07DE8B126E37F9B68DC215246FBCA7F60AAFA4E615C23
6795611C82BB195B1CD17A3E866B59B442B5D8B56994A975D3415B6398620F37
DD48892641C06B5A86065AB94A8C01CBF57487CEA8099E0A772286A6B9B2A4B4
19AA2A1B591A4E9824FAB3007D9FC4885699E4BB7666E0572359645CE99CB2DC
8231B147804275753E881CCEFFAB17B751A9B260725660ADB4395678A6A90D5B
0DD85EACAE2FDDCE250F72D210C4404A5C224AEE1BE964673656C91E5197B236
C2D4C1B5828458DE7827F3C333028689F2CBAA5F39269A9DBE9A16913B667C08
1595235F72C7CCFCF5C3E0BABD5E9AE4AA18FEA427CDFF3ACB71DBA51C7D154B
28A83E2D1D18142B0F204A9C56914F6F35C4463AC9E56D3B2AEE45814E0D891C
389C65CF38D9C4FE3B45535F8FABC1DA1B2950E26BD5DD99FD599854B612400E
E755532E2FC631F591C1E2B384B19816CB9D2D3330ADFD72BD01EE1673E5F511
61F29853E4ACFC83B46ED3AECC0C2E4B9C27067E7FF176BEDEC69B2064389D89
F5DBDE7AA6207968FC3F4ED1C38422777E62DF906458B1F08F51DA52156F3175
92CBE989E5188A14121B682152E4368330257EDEC35B04F69D869A7CB26F9A83
AF7B4CAB03710F68F14F80D542C311584722CF7EF34ECF35CBE550F888D5F35C
4793C5BAE8AC57802AE37F4D29265D6742891D2A998BAC0F6DD8A632905D64C9
9236D52857A23FA98FAE253590E159C5DC0128FC37D13BBF10FEB8BF2D3B4450
4EA7498B4827F79D3225F1B69670F09B34502E8B3BEFC7380576F15571581B70
DD694C9B57AD31A6A352F0D71F3AF6C0D0D62AB8325331E4B5D90AED4A91ED7F
915E793C672D5C4619A1A45F697FC6FBB17D2783CA175588AB3BEA337ADC3BF2
93E429D53D9C1E4D8AFD47ADF1ECEFE91BB430BB82C126551D160E1E0209D15A
416882B3112465C34069418D5A7CD2A3E7407ADE0CEB473EA894BBB2C61B435D
224BF6807EF558B4B6BFA015498A0AA8E20650FF8B223B05A75EF90F00B3DAD0
BF6744A4F7393C18B2E5AC2D1B98ECC6895AD845865ADAF40D37DDC9BC1E8F6A
3A71B6BF9089D5ABFDF58D8E1AB4074D34E8D3DD699BA97BFFF9D271B841D0B5
F9D45F3CBDF39C8DC00C1B7EB7E4905E0857898F0EF8A25C0F65BA70DA9600E0
21B1B97BEE78691E0DF8A2A187200E40AC0DF5C0367D76BAF5E6557C22C81E83
B75069832E3636D0B323C19798D6BD282FE778252B8B10E129BCD420D239254A
768346826C43E0B06AE9CB77878FD9C693952D622009D111754FB755284433A6
872D9A71920EBBFEFAF82E3C0B7DE08C8775752C0C0CBCCB4E8949D644D08038
DA242706D86FB07E8530A716D14D3DFD209DEEF8C57131E786A3ABBB70D4D2CB
2A2D325174FCDC2C95FEDC414B732A6443A5EBEB73A05FA36F40BFE1B179AA5F
2D755A6BCBC11358F443307185515A06940230DCD7ED97F0606B53E3C34B9FB1
C8F39CC8B55D8005BCB873C5904E6E5C329BC2A930F8C523434E74B8EE9CE143
B329CF719C1048ED4AA3DCEC97AC428C7D346EC3B91095F286F308F5EC59F4CD
C7C2D3870E9440294AA2EA9064806DDAF3F89CCA7D963A27DC2231EFF4C17D6F
60F07C6E49ABE459A6A179E497DAAA4134C3BBAE240AB84C3F66DEF1ABE981D6
4510AC402A9713996A4374BD437316A0803E32A91D75D56958C9F540DD8B14D7
ABFA2B87DE40DFBAAC58427A62159267ACDE7C43E99B22C0DE5509C76F2C5ECA
70B682A5496833E7ED9926BDD69742D3966AE9DC82EAAA01950A49F7114B8F66
8B99EFDC8F5FDB2299F4CBDDB056290347008D74A248D0042F3C61E135D08E42
18CB93207B2CE81D94C2676913DE5861C37BC7171D252C23E8C24FF05094DF84
1F9B45509E54F173DCC14F9FE29DF01299ECB634D59566569E080E3AD650CC2F
840FF8AB13412121294EB7CB9900845E3CCEB420AC27E7E1519A6A69DE1F8112
8BF3F1C0E924202D59B69F329689053EF05F3059624C7A4C8F8564CD2BBD1A6B
9CF2F83684804BAFCE3DD2B1B8A93DB9937722FB88F028D4D172666DB7B2CC1B
EA2D7A7B0B4D53F1DA00F8D05C7B2C285A4E84993D337B3229DDD991B3F3EA3F
A7639721120EE39336F9651C2F9144665198091F6AD5A2453D014CF7349E9A8C
95A28191EA3B8E27C354AFB8F6F0B0A4E6744EA1B72C6FC4C10EEE1F983BD904
81796D0DBDA3A50D399A216A7DDBC5E16784912C3664AFFE019241A8583B44FF
E90A5DC6A734F1A8138B5452517922DB7032C48EF30F9276906EAAFB84BC0C60
EFF0EE67AF4F8A7B6449A558A8458A88CD4A620386D2DBFEAFE17239680D39A7
66194AA4158DDE3945E5E88CBF3987F4F22FA5546410F5ABCD9808CD94C678F8
92BDD49F06AC145AECE04CD13F1467AFF74C42A9A9BBDC2D9D8FA49A6B1525AD
E300EDDD7FC5FDB5C1F8130CED470E04EA8EC29E6585138777544270BCC9660A
58A6C9E7AEB2DD334C81CAE743006D5BC9E8B18DA640010BB9D2E3DB280A9FF4
3A3530FB6AB8F7ACD4C38C38C355C27BFC8CE84999425C61150086B32CE61E19
2D2FEE441D0859F92E515CE61865701FFA7C800D7E288E0C9019C14CEBB1892C
169D39294216C73E19D9990F5242D3FF20375761DF756CD4C0622C54C6CF9209
F00D060487B7A420A2F74F49198A001921B23E4385D9AEA7D7FA51827C5774CF
4586E54ADBAA0333EBF55134511C33E3A0E1689B771551040E966DC85D2DA2A4
B6D35D7B9A5D4C12674D39472792E5F60279AE5AAEBECD2050C5F35A6AD54D55
F1460A95B6C280FB97B284598ADA5D0F6A21704BFA2AC68DDCB388E398137897
B9F1D60A5BF172B150E87C8FD26CD774574D56EF2FA880EAC6E509E5C6E65709
F997FF0C88B88A98255D590A783205F091854C6497DB64F71D6DDDC97A1CBE92
47449B181835E64FF2ACA03C6CF02D4780A49FF6365E9ADA231A04CBFA9288DD
7D9F2CBBFEBD4047D0DF1624FDECB54B34B145DADAD9696304056DE89B386169
A64F5178C3BEBDCC00F5B8A9E21C053A12537F0DB71F3D1B1565339512905730
14593ACFD2762C6D5A32DBCEC9477341CB72E5AB2263BB088ACA6E0FE6164DA7
FF01007C8852E1A56911E3756D2474BFF5D4A7E566FCEAC95F1511E0C1072E43
51C871DB35D073DDE60A22498537E6E0C36F897FF853E6677B99F866796353B0
77A7D197478713F67F1CA46FB341953601706352B2ACB891F3C8A38916D9A5A3
909F8A3F1678EAEA21ACEACE1754C6E6696796C1AE1215F7FE96E438E676EC3A
504D9FA5BB8BF813CB9DB27C171885A6AD33A3431FA98FF364AEE6062CBFF6CD
42FFCA8B2F9623A7582EE20474F8D8413E1829BA175BE41F15C5334D96666702
06D992F765B2A106DE02AD28A5F2254070307F58FDB19AD4ECEE93ED21A3B3C4
29DE954FE84131365211E66B83ECB97431E51AB6F64B9E99DB2BBB08A5586E20
D9CC68EAAB1B8949EF4DE724B1C2E437C9AA79C1DBFA2B4E1876AAE7CB339DC8
B6ED4BFEE7D764C81BF0F59949ED252D4EA0FFD272CE91D68A8519A8C3CDC487
1AB1C9F582D8340B42384EC7946F7A0A5EBDF1D983899D7E9DD4668243496821
922F896FE87A4AC3503ADF012B1C1C99DFD17BD225B932905889DDCB81AA786B
B4E6A04405E05B5FB1C28E623FCF5DF99F9BB175AF9CB4B2419607FAC26495D8
F92FA50A6C736077F129F89912762C566B4401F530FAE35D32D21AECAB4FBABE
F3B26B162ADA99F7532B5F9F2E2A15F1EFC5E09307E82022F1B6378B4CDC76D9
6E6DF79EEB8D942A85EAF5F4E2A6916A93D3BA87BB8079448993BFDEFEB67CFB
F3D205F0C385DA6AF211FA4ACFB34A5A6449E301A06F90423257669F94619666
80E79F0B5042DCEE36AAEF0213EF6065A068E4CD15F55352855EE99C36E69A4C
DE32F5933BC0E3FBB54ECDF1445EB9A5EDADAC9E6ADCF53D16B507DEA27AB281
20100F8FDA316664508E801F247D7E76DFCF5AA3DEC71D15E1B0ADF19EEA2E15
8C9E4C269FBFCEC4F4A302E33F79BF93917E6291EB8313401AF67628ADFB40B9
A69AB35EA87C0A54172B6AB53099FDAB1E9606C399B647DD997877F3987D2C8B
F15078D6C9BECAE5BE63232F1B7EC2923D4126FE2A71C75649FB64968A81CFE0
83D4C5CCDF5BDEC342C701E43A20B40764CEAEA0F15870AAC8383C84EC537108
B427BEA75301DEC9A6CE3E0E2C4AAD727B396001FB7CE25B3E64B1376E2E38CE
4EE8387931EB437F3A429A1A57F8B289D4FF1372570241A3FBEBA82AF5EB3996
89F8E49FF564921263612813D4E75E9A51A5101F95AC0A1A3EB71351FE34126B
98AA093FA911E3C123DF14FDE4E931E8A25EB1EC7CCBBF342D37D9661FAF14E8
75EA0F3B6AE79BAA46E2F86816163568C48DBE6219FA4E797D300E246ADC29D5
56FE46FBA176F188433531BE887377F87E60BD00FD87F9E971C8E48862E37EA7
466F89691F806D02440633FFEE14A68AAB05E06314CA496A54B7DB6B0CD7370B
94503D3F7F6AADBE08F6DBF159C404D0F422B116F9DA97C19CBC38E74DEF11C9
A37FFE569B2A790A3C3EE7B1BAD0A35CACF3296865532E056B9629989809E76E
9926E0F8C546288354898009400F972C9783E0E926BDFEFF6AB88EB0A1164989
6C6198C7433BEDBBC5E3F2FCD8562ACC21572D82913A2F952DF1A482B5796740
C4E29390297226F6D1B2FE6EF2388193E21D45C113E659BDA97137D653CD2C02
103C80A034C94170A3E3FB88804CC62326AFD2578394E460017461B19124A9E4
7F4F5A8ADDE5DD4EF2B3450BECC0DFA2F5C905D6DC5933E22C995B5870C582A0
2C67C43CB6907AE90351366D72EB7E9E4A84718989B3C0A65D0D9E220D4247F6
6F4E9772289820D022DD9C2BC1C24BB8F8B27483F85C9760451F60FDFF3E3379
465434458C4EC5BBA34D7C9C3A47B945865DF8F6E5202A7738ACBA182DCCC220
CDD03BE5D9D1B2E0DC2094ADEFE093C4304BE0874C7A874DCC749584FBC86080
E04D34DEBDCD099CE69EE0E2A1CA8FD1C8210940543D29F42B29A90B160EC3F9
8E1E07FF4AC12924FC7A69DD6D77D6124D75B84C50CCF4FADCFFBDAE8EA946F5
81B1A52C748687433A569DFFFD088950578397A2548CF7A4CCE4D6B7F6485476
B3151F93C85A108647C7CBE6C4220FAF016660F4D7A105B6C0BF9A2CDDEC900F
9BF122A2A58BEC808B1A19D81AE5958DB7260F0D5F024E678FB2A0DBBD4B369E
211375B1DCB6C9E3C9FB34F62E53BB4E74A54003A162BFE6B4A39C579CEB11CF
D3AAEDA2345AF5753FFA4A987B4FE2B105078151DC8C408F438AF082C9D149AA
4A69BBDB9B01D3C7AC2306C44CB9EC872F28C801467E26A0BBEC23F47CBE20C1
C07B0A46F9B8B86DD1BF084798E9A1F5ECFE5F136E881CFEE14AB4461A17AB11
FFA8505DF80EE1B6314FD7E3E1215B5840C65015CD28970F2668E1A919092C64
6FE3E9A2C160BB32C12595C6631CF765C7EEED4F2A2FD2BE5793F3B7BD20FF97
9689C5C3B54B26DD62150563E244A52443BA8047CCA86A6F6FDD62862F9601F8
93381A75F388B257E6DCC83696DBA8013EB84DFDAA2A5C00AABC64FDC0A2BDBF
A143FFB6D1681770FEE43EF764BBF2DAA12E70E00989A1ACC6747481D44763E4
F3044913F3218C4D4CD7BEBA74BE789E1E7F029A0A265398278AD6C46F81A932
CCB421953B78469C68127EB07900A4EF7E402D8B4EFCC35A6438F998B9566C2C
A1CA582810A4487E31F094DA115104E115E8BC232180A6C5041BB1FB4CEE3FAB
DFC7789CE83C71F7AAED92B2E346DB204E103BCE050983EB7DBA4720E3C63CF1
FE5E436D502AB8BC3E26F082B9DFAFDA9FF8BC430DFA7FB845AB66F783F02E71
20312408D5B00EBC511E2078863E18BB8733C4A8F3002BA213A243DA3BC0D717
09A0E1FA513B91970D78E023084FD3740D783B0C4385E0286ADF9AFD50E6BC7E
1F605CA1D36EA085664B6CE5193CEDA77EAD0B2C9C19810DF4EC618080630947
685C72F51875C00EECD315B36A6551AA701F612AB41263C27809BDDC07FB95E6
861D063AF0D23AB28D932EEFF2E3D726F7793A1A83A0C3E917263667D667BD21
516A42BF85024D7ABB19E0F902B8F2787EFF3B7033B8641FAEADA88A251F28E6
A9B33CC69A797E4C6AFFBE12CEB1E47606671914754FC5E7460CDCD9CB5668EC
72F11BF946130FA48FC18D7D378B164C4FBD6CE8FC7E0458A4F1C2DFAFB8C565
0F6DC2FF6444ED77AF327FA3A057EC5064C685F7BD83B2EB3BCB16D6D77615D2
E131FA81E6619F8D354BD9AE921D208363CB3C98C4B71E3D310EB91AB7E60BBE
66A56E4EFF52CBA724F208857748A35A471E875381B8AC21F13E82BAD3B80B69
B0E15F74632924DBD753CAF012654BD5640A2693305D3A4246D2212B994DE0AF
78CA1A0D46FC0CB4EB2331FB631B7158685B110371715915CD3B0BDC8B036B8F
32DD5D7835EE4CA1943008D5AB70B6AE0F860241248069E5B9530BA85B0AC99F
1A05445D311E553C1D7AAB85015841E31525D69C511BD4CC8A73286521398196
D5C58B51340FC91A7A7BC09C68AABE4D55D60227EEF56F85F37660DB805EAB44
9AD43057EEBE7A8B6FBD558FC14581DF91B10DB5B60A5055543FB599EDFFC8FF
951C1C30285141FA9402977674F6B7314C1CE92E0653507C813C15EAB47372F0
091C521472B2DE9553613AE83C701C9BD7DB856673018F04586BAB0B40D4B5F8
C4551690D8FA50DFDAB8C83C8F51006D24E0E1811127D1A31A152C5B5D489F3E
99251E6F6E0A2D805939F15B608A79BA351501369313BBF232322F6869008840
7EAB6476B8F929B02E50FEF3F5C561402C8C4970C754E9DCF2F46CFA88DA513D
BD5F71AF01B84DE211D3130C0028722E9412526DE349B087E7B852742ADB2A83
7D7FD4D3F7DEC56FF9479F352ED7CDD4160A7A8DB18841875D25E8EC1433CF7A
000812E8482EDF538BF4BB6C4A88793EC13D6AEC8BE77E519EB5E07434004FC1
14019CD0C168AF2E3C9EC7FC56FAC4127592C37C61463DED1A13D735E6633FA3
F025B4270B86F2999A198B066B2019C7B1AF189101F0249883B53DDB43E82BE6
C2D95E816986D5B454E073AA4D51072F367C81BED4AD0F4578F24214BC6E8954
88ADE27AEE124715C8040326A27F3E679182090CA931C4C041CB94913493D5A2
B1DCB3142BD23501B071C5BDA9A7E7F49CFF0805791E5F9C4F44F5F70FF016F8
34BC23D1370C26EE9C526439692F2D535BBF25BCB387A23883862220766C7006
3C3234A96DA45AE48F88DB17BC561B245AA7F9D4CF47B0F95C1FFCD2F0B65DD6
E11FD00743FEDE47A66D6D115979A304596AACFE91BDF0C366DE828F3082CD90
6A2E96A573696315A204B2199E1B07D6D52804F0564A19FBF1A7037D8E0289F5
1D1D899A14F660DE468E8783B201D543BA87C8DACCB29E60889C3FD4AE413D94
67E7C41802C9134BA366936C717B565B5AA40A5D93B77368FB3FA1232F8D266A
83CA12BC5AE89E0C52B0D4C095035B1CC2847C9C167B566C92E7C1E98061C77C
97443C4DDDF7FE0A2D0D708BE6C76AE37B552E1F37CF24EDD1224A959FBDDC0E
6818C8812021EF40A35F01EBB9A29945142368FB7BD60CFDCADB5A0C0BE412EF
0B19213719AEB11AD11A2D6CD0AEFE661D3C966F7848B3ECBF38219A7B2B6706
F033D3CA580689DEB2D052414B2B50F8B7224BC9D6027988B0ADCDC228CEB89F
6A0FD4EB7C2E36914BFBA82B0AA5E27D662EA1F3523EE02B5A25A10861B3C1BD
D9F4EC0C64968D6E5D36C2CCB59602947C31F97C7B6544DCB2A24E55122D9CE1
A8943904D9F3655D5C6C5CDD4C0EDF0C469BE6FF73AD92566038D7561D55C9E0
3EBB58EC9BDE5BD8CF9F2949F005015BBF1EFA6CE58C556C0050A3358F4F91A4
9C5A3EE29E58ACEFCD76D4150CF801B4687452FE0A55227554AD7806C2CA9FED
F117D7F0866966582A79AA324963DF6F8027F879EA899F602F099571A8D5DE0E
4602A8E42DCB677005B290051AA27F4FB4D940665344EE4643E51D2D2C68A956
CEF8362E62E4382EC0DB179E5A3529B8A073205B4F6BF51CC73543DD28E834DE
B00B3C06F412D71F084588C21F815FBBFCC257A53669F7F6E4268639014D7265
BB18985C6DB6F33842F7F9E2F9D2B712E489F7890BE1712FFBB514E5CAD0B32B
CC316511AB0DA252A799FFBA0CD102EB00B9B4E9D379112423F8D3D2506A2E91
7FCB37061116DD7181AD5D71A390D6D9D8BB2CC51EF3A71EF49BE5BBC68B446C
3D550E22110F07001C1C5FDE95073B2FD0D1009483E322D8680CC39A75D46C1F
358089CDC645C81AB187EA00D26138D4C8AE88862CE3F8417201F0D2CDFC67A4
294CD95FA86B01871F6DA392D1314CF4FC8B4C43ED043871D75F83B5B1E0FC1E
CB325159E6D3C6130CC56F66D85A29EE83FDC4106486D1DA9475246BC780AB0E
4B6EFECCCF5E9F98ED9F5BFD84D317A4CA82482C3305D1CD37F2A00E9CEB194F
EAB6227878AB0014DC322F5FBFD543DC27A17E9566F2BA1A136613ED20E9A537
41A2921C1A6FD9D4C3C327DB607FBE07AEB867DEEE3323364E4FEA4ACF98359B
8659A369750972524C4D395BB7B484353D0F928D4061B2E4071E8EEDC6575535
D2BEC084521F443A263C375E264D9CC5E1E0C2049E07859ECD40359A409B4B19
F3D15F6C72DD33DBCBD85B7B18618522B37EB08FAD5E497A431C378B57067330
A70A4F898936C4A3E3DEC2AA6EABCEC836E7C786E5FC8D4FD9620A2712D4DE93
36A85503F6CAC67F579F425F31F743393D4F7A22691C76EA06FE5A0C8E7A942E
03C4DF71BE48C7484595CC46C21982B6DEF162EABBD09412C92F74DA41A52930
8C74148D242286F6D58B92A4308C22A8749615F89290B17E709A93E053C6DD5E
79CB5A247D852EBE915BD695FB6D3C7EBFF9914D157B64A87F8910156B66E65D
44990D5EF500705FA6F0B2E33B166BDF7E00141FEE758EDDE3FB2B5604367902
DDF13E952614FFFCE8372BF782C632CD2D0500239F1E979A05B7A7FFF12B9883
E8C52B0D49A836C488E56E71BCE37E9C1B30E4BF11A876F48D5868873B1B19EC
11E85DFD85CA77814F27FD1A99A7A6CFB599C662825A2F0E1FE74D1398E80DAE
E13D55B0C1BEBBF080906487873BDB326368290ACBE173A3B3F280918CA7FB98
47F6A9E44827D1F033AAA4BCB735524A5A9399218C3F356720A8DF0317592B9D
CC1851B19ECB89B9DA9A9364BF74EC580CED0D01513FDADCAE4B612E454970E9
01DB786B79D82E32325E5575224243545947247948A9932BF9B5ECEAA526706A
28503DA9D9143DB3F0D413E37E238C74AD7046731C87F7AA2EA26329B56822A2
05CD4A1FBE8D5A3A8B283D39D4C31BFA116009AAD34A8407ACA6BD02EA23E8D2
A2E310373C20A2A221F72CC4B61D85523BFA440F1F70C4290D5402D233824134
777BE7D88DF334C4DF9C2F04AABFA8F192FBF037AA3A6EF93B6E35C85E068D81
E4E3383FD868785EFFBBFEBE58A0AAFC421086FA5FC2C2C93019AC34B88E5870
7C1A5E83B30E4F1A03163BBC732EED39705CA3C6BE7ECBDD1632715AB5E27041
A077769E8C78AD41B07F2323877FB3398D6F108D8E089E897AF205EA57BB23EB
3D18BDFDCDDC1F506481561C26591DA62202CB2B2D29919B18980E2467327448
6F94E0C35803774283429AB4A8ADD14BDBED4658CBDD2CD9A8978E26C723FC2B
9FAA66D6F2B4BF09EE037B2D9F097F61529F5BA4FBEA0462CC6A157D5852245C
D747C311E21BCF86AC07C6F4C8F4454CFEB308EEF69E64E8F9427306725A1A0B
2D98BF75ADA81FB5DE7E142712F2EFFB12A6AB11A90CA144D3FEB86D2A41867A
757388C01B84BAC1F853DEE84F4657634E46C8D0EBC779198741230640558B5C
A93E8EB7F3E8C8E08CE667C9CA3ECFF4718D8C95993F09EAC527AC2A0BF43C33
45B6EAF4FC0BD2B989C435133E5FA328CBB5B9828E1DC5CAEAB4822E8582E5A1
0203795764393268E23084096E799376AA5F3FD66802AE2DCF9B5FFAB2CF4ED4
171BAF725B98274C801C42A09822243BF34FEE1E6D5AF0C965B4DC022B7C75E2
2BED93E46335BDEFD9C0887BD2F4B9DDFAA8A611D08D2B4DFC7231664151CDDC
9AB3979FFCF5CCF3547BE3CF7ACD7B3F7FB4EAEE8E7A5A96C5AE44D5C2847DB6
B94C8DF1A1975843022AFD5867B7B7AFEFBAF75735D55EC54C51C9BC359AA764
BDB22E1669B08BCAE58F05591D065603C9E99C6AD9B0A35937B09F55C14D1F94
CCFE26E47562CA305C9D52A4CE2322C46D65B974ACE0FCD1D32328DC871D004A
936FEB1844AAF6A173A0D9E6CE4B031789314B4B269A63D263C9C299AF634203
F7773341E22C0A111CCE1E45D67B4EDC4DED78A43210AFBFF31A798F6A8868CC
77B30B36F91F6D8812743AE393E02E013C9319A79D1AF5C23E9DC4E473FB5E77
D45DB39C1C671FE821DCDC2AA15FC33A39DE31EABBB6314EF0D10857670EEFCA
D5A1A08DF17F0CFB155C65D190CC5B78D2E11B539C385E6696E8FDD86BA4EF21
1676115FF8852E6ACB51CC3869B4AA7FD13E263C254924E8B89DE60CF6E1E7A1
7B1A47F383F95F02951B2720237E203834D5B29A2A9936AFA8A1B9A3182818C4
56CE2AB942A0A6241D1668C40AAAE14679EAC68329375FAF2C926A10D9DE1C1E
64CC3A09ED9F19E65A98EA7CEB5D108734021CF12A5ADA363596A32F5AC12D36
52C2CA7AB258076FC61C0342E94A0D65EB50861608BC0B5965C4B15D651FA8B7
206C355DF63F30A930EA014D7FF519FF2C2380E21AD1124B005D2424670F2064
48867711236493BC955D8FA9E7B8ADFD0BE3FB86A91E16C693FB8BC4F9CB56AB
37B0D8EF0E8FA0200D94A6DB6563F1DD64AD4A3A7176DD95E8E3BE1F7726E40D
C426003955001D21EC5AEE357333AF6499C5CD36B9584350647F378FF548D0B7
DECC04E11BB6EB5DD234D8ABDBC457DF8451001154E69A0286A44FD12D1EF639
A65696C4027CCA82376038679ABD510D703605E9E7AFE4F0C89AE54D920347CD
0AA402618616C4D65B3BE19E6D1C3639571F1B011B292832C874E4C934D42A91
471B4A6A15CCCA34DF7BA3D416004990046A130BC26394FE05B2BDA091B64D71
0AE81574E54A011CC505351161D00AC755FED2884426986DE25498F3A7357ED8
46892A1DBB9A3DD617ED28C4FA760346C34C090D5BBA1D59795A532870050922
211886F945A8DBC5E628A810FD736179BD7F8BB737251DFC41DD5119781E1013
823074E22C00D6AB77820D123CB1E654D0A86E5699601ED2B85F3E4ADCBDE858
960857BB621D26AE19E2454CD5EE31E165A75E27349DDAEA9DCC2B130B0D6EAE
DBA0C0CCFD9EABAC9B0FABE48690961ADC4A3D8913989062664DC3DD23E27C8E
74FC0A811786E119021CE134DD7148FF51872FB0AAC98535C9EB33F68ECF09C0
0F951626DB88E06E1ED02B277A79FD9B3239DCBB78D70C9C9AC5353B38D25DC7
F686D934D4B46B63B3A6CCB2403A907EDE9658AACC3D02D64BCC9810B909FBBF
96D1C8EF7BBC67C5AF2B494F085FFD5F47204E485456F40C539375537B77BCF5
BA50EFFE576E8019CF156599D111C0CE46C678C987677891CF6D8ACCE0AB0E43
6534F134252F1E3B9021515BD905B22F05B441395ECD808A658A415EC0F881D1
04A1AAA048417CD33ABDA7E803F7E8F0685AEA4A0F3CB8AA0E13D5777EDA5F2E
4B7E6F0D1124B7FC2B9164F46146A3F038A9CD4433BC7BCD17E5B771FA22C636
4D42DB9F6A514960D46701C97885943B917E126A3087EE9D89D1A0B320A3D5A5
6B91677D25C9A4C8F86B3CB708BD78274C1CA4DD81B8FE049FAC670A30394A02
C1711EF0811306D168A9E62F99183A7AB1DEC61AF543D17CF34FE54EAD645C48
27ED944872EC8DF8D3507211BD6B7B4FC1282E10EEE47887BF0FDA99F42F18CC
04DEEEF17FB3F659EB88D58A84FF4AEE918AB78D0DCD393BD0A54811C058F7FE
F55C3F169AF4A861561AEE7DD6B0B608C3A0FBFC585C34FB9A22D7934595BD99
38133B34A1F3AD250DEAAF88E7DD106498ED2F1CA1E669282D24F7200A5A86B3
328E6F3E5074BF8BB71771B4815A8BCFCB25BA22AE9A0D1ED29AD6B8801A326C
12C9090D8DB8935F576B68976C129801DB742E179692B0A50859DE885BC08FEA
99AF1185EC33C8AD627FF56878677CC3C2B472E5015010FA689ACFB8DF7BA213
7AD9E2DE4CA06555C71C3EAC161500887C23A0AF5B0CC922461C08D92A5FB00B
0E2D57C7D882C02673EFF49B9CAA88A1F1B1EB956EB291A4C19A0D27BF0DDDC0
F50F78D14BFEF781EB50469E9D27661FF42D24DEECF3BE0EA937997626FB4143
6906F4775A9EF59C6186C4DF71646646EE22E7471296C00D7F033C4AAC3E18B0
2EA7D99030953987DF4B01179653C6151B497E98C7EFBD12D80EE0C8FD2F4571
26CBF6F95ED949A049903E3A19911FFCE9F261E93B4F7110BE110C373802A80A
7D862B2758A811884AD50F4F7ACE9D7B0CA1AE944C76FCB8283637E3D7AB3C4C
DED6932F1D69900AE1A6148ADAE58DDC20CBD0A79896E6AE5669D746DEC75829
42E6972D6BC1206AE1445E983F57F2329E85BC937806E6285DAAAFF5CE02F061
E4EB342BC0F3C0A591E24A9158A02F950FEE8A1D3B9A5E2F9EC4ADC96DB1E033
8B88043DD65596AA48FE813249631C8D09798119877C60C3C337170ED106FB8D
FA318D5A9AB80DD136BF6003A8CA0D2363714402D6C97F9AFAF598193287343F
08B5E7EC2B4F1DB9D81C20802E60C5626F7E436B7BA230D6125B9C10FBE8E001
E5C7A1D4B2FC9947B128A6BB72A7954A944F4D2832632E8ABE0A4737659FF2D0
9E648FC78156340E42E81B0EFC6911CF2CADD591F7EA8809DA22BD9E9A51FEB3
168B28B0A5378CF2A16E947021B5FE4F181A4F341419C793F0EEE573F362A3DC
FE5F7CD8D114713BBF4880B64ECF1E5F1D4173AD935C013EDBEC55F8CBE91E71
07E62F4C93192C734B06CCD95C4D3EFCD076415520A0C3F167A9DAFFFA285BED
8B4F57889620F29BA77D82D0197EFF87CC94602BDBCF3D3080D4C461943896A9
85BD1A8DAE3044F707D8EF6AAFDB1EC2FD606C6F5D1E4D1E52E5A6B36CD05F0A
8FBDE9D1CD1C50B0AC2DB3093F9F3749B84F646344D3775C14635BE400DC8564
85667C7E502E31DD20C5087D67034AD86C7EC9A40997B3DC348356F9164DD511
E8790CB693E72B1DF8837EEF7203EFEDD6224A735839DFA7D4AF01DE361B7133
01CE6707376858E523A914D47AE931545CC0959A50740A388728F524A69DEF1A
3A5979CD3BAB1C759D3127BFF24755B52622706BD7F2BC2882EEFAB1E67B7ED5
DD2607D8354C00FCCA0586E8AA1EAFDDD2C5E756A6ECCBC0081A874D2137A487
20D901C63755971A87C1426A926E1E8C3BA2B39554D0A598F93D8D9AA476C5F9
95E21D135088841EDCCD5A3DC4C2DD8B2F648C278EC1B7BFA855C16771B24BE6
5283E6C56C2062C0AAB9FCCC5676FE27C73AFCAB5784960D054832931FEF5F0F
0DF98379806A2A163467278FF81AE9E04F53781C10554C7033B87DDF6F87A8AC
247951BBCA2B926E7532A9FF56BA52425C3270FD5D78D0B43130B6FAC6D29C05
4A1B2BED399E78812E92503F7582EC52FF00C50A05FB43DC17FB51A8855BF46A
B97E6416F1B3C4EF515C47769AA51D8E3F7C91499933A205FDAA5C4D28D810A3
9608AAE16DEDF452510C4FDF80B4B2DE19070C7CF6217AC7ABD1A9C7041F4165
B7129EDE403246E0EF6FE5F48569170E7E82D871B4E7F5A435CC4E63EE61649C
FC8FF64FE55DC7A1FB9DD1F30C0C34904BBB300BA250EEC78377345EF8AD7279
F18D66A5BB7B29A131CB32A4DFE546B959C84827EA2D4EC801B78F8B12C2B28A
050B50216CD2BC31D93EF817E50EAAC983E8760422F76397E18568A3E7DD9CF4
B500F5770F1D83F2F3049791BC78E3F61850475C28B616F8777DE7BDC83B4F55
7BC54D6CDA8BB5D2366BE8DA1E241E14AC266D11F7A63A550B45786074316F61
045794EA6CDEE9A2A514B3B03DE76A00ED15505063D8C805D9AD48B565A01E37
F726F4F58F3423010407E04A92B3AB194DA6FAC9EEBD60C27620263E5D935B36
24C7A81FC0E30AAE78DF1E1767072C3C2B4706C13A6BA0C9E8267553365CCFE9
0676788B1E1F157A476EB616659C92C1345F56E45A4C5D70C6123F1061C20CF5
A960F3F621D19432B6DDFC58E08F99D3CC6FC47279329B96749EFF7BD3FCCE4B
1C3D7705F02F0036D2E70511084E057D39507F7DD34B957334163AC09174CBE1
A536435BB70269E0652448B7D762AFDFCF938410FF90004C5EED290EB5E23D03
D82CF3FA29090D4876ECAE404AF566A2BC9E7EF59D9A3404C8D9486529D7D207
934FDBE807EDAC900046004370534172592BFC68CBFA6B9E855DBBB09250F4C5
F49216AFCA75E6FF040269A9055044DD5F8A06150ADECCFE38DFC01537B94B96
C991B0F6A631AD72B230AB6CE381BA86774C295D810B1628C93E0582AD995C93
B4E471887F7FD40BCA8EC4AB9C04BCC67661174181EC748308411FBAC8C28F84
9BC5D0F3077E3648934F6415E83BA0CC31E3C3A9A5D2ED47FCA8BCDB9AF70A11
2F18F889050AEFDC36A7FA9EE6DCD66D90B5C89A6926C04BA7CF8CCA48BEC58D
395269D51C3FC3D31E7AB8DD4201052BE1E040FCA7EC9FD05AAC576CA300F8FE
5B8E5057CB84D99800A65FF9252A9F87F4E2396C61216855C9E608662AA8C857
36D9AACB593DBB098CFD30D764DC2B03D8F61B3377A860D205AE370E3B20E46C
8716275FC8D087CE46CC8CD57914064BACD8EE6BE71236EA7F202402253F6D0E
3D94C17FD58BBF962DC888FCAEE733DC389B50EAAFD0278C05ACE5013D38831E
0D56143445386B5F0057CE493A1E43F5E183AF28A9957B0D1EFBDEC09DB23C02
28C0A0F6ED3983DB02E90A6AC614B57EC9015A15E875CD57BFB0EDF6866A6D50
7288234AFA8760F4A0C6965673F7B9E7A808A8452DC26CD864B10EE4A84C33F2
5FF5D9FC2D769850D291C9D92C2C11B632BE7DBD9251B9C2DF1E832031D9D844
2FB422C342F0B09E999DFABF2769638B8A4714DFA0B4D5FE265C76F88CE456AB
81EA3C5A5E8188ECE15037DE8F90DE2979EF222F33CBFA71DB743E53792A82EF
705273BB8AA0C18C07713D570EE3B28FF28F2A05CE912376B33134C3F22276DF
AF516CEDCE54FBC7B5A887C3DBF21BB249BDA63D8DF8FCD28857B34679FAA530
DAEFD79637B9B32AE86A36BF68CD240C8ED729EAB51818092750AE51C937CA2C
34FD00D8E46C0FA296C3945EDBBC15D5219C42A9A4531C0E22297937DE7BD837
12DA74F0CF5E179AE8C508E6359DAF087120461D356ED61CC39BAFB7395C8919
66C7638BB4E15199C717C8C05CC4220DFEE45400330B0CAAB3BB65EF612725A3
E92859B716CF343B2F4CC97ED2B00B43F2B07F5B892035FA59071C9C33EAB6AB
3E97EDBA2F69C89769BD689697E58910922CF54DB9A819AA9D8E9A43F49EE395
E6B2FC8FD4E8CBB9B67BEA205471F959748221C60D486C2D084547F51B50D38D
CE2CA4B5EDA26186571202B5600A9C08BE263D687B56086603F6DEDFE7AECE18
CE98F11163951F5C1DCB4989FDC9008A9555B70C24ADE31A27D9A7B2A07D6325
36606CAE8434E07A996BD009C67AA670B94658FFB0C87F36006C2CE52ADC3E49
636815548512E452D88EAF7972E829BED5CB96D26335445D58FB8AD9E697E4D7
4386DD1CD14D53E2B9250AEB769F5364CF73DA67D1C1E10F897970D5C88BBCD2
0D98CB35D74ABF98BCEBEC87FB92FF198F8C90B0A38EA9ED42EF5F146D57D028
7DCF7709B15DD7C624737305FB10E16669B6B52A0E66B66667CE1FF0A984E7AB
DC26ADE1C860F00AA525550C2C90B0DC6E1B6BB2B0657F0565328BCF58BB10C8
DDFF66F1364D78F3E75DACB5008B13F2A6557192F5C88148DE47D617E9020C37
83052F3597ED4D5D954990DFD7817CC7F5FAE42D1EA81FA95AF407A889C15889
B98F65AA30ECB2C0177706AB78A555F981C5140594B7B3674A02FDDAF982B559
B5A3F07C4B1B09F3761E14D7355489AE19F175D8AEB2B58391C2DB8292DB93CA
6511709A729159ABD86C54588C3E02DAA21DEEC6B5BFAA6800403E753250EA75
9DC615185F5F11BFCDBB8A71B8009A4FD3D12EFBE9BFF9397C1B7F0C5F743D77
4465FACE6E3C170F69B588F885D0BD236CF8B09CBFA7347F062F98FF48A38E08
2F8FE3BFC199336AB66FA95CE2C14BDAC1AC4F5637F6EA645DCA1A10DEA04FC6
0F8D9E8F947A675C69D67E7846261889B2FBD751726395EE676E91406183DE14
D9D650ABD88AC3F4381E4B6E032FD269607A0AC256B073D32DE4EFFC4388C276
86A7EB16D5CCBB1678A77B9F900850A3185A86F9DBDDF8BD71A85D22F7A2ECED
4CFFF7180DB94F4CAF0FBC92E973E7A84BFBFDF8158A5B4712635A3D5120BE2F
5DBB638F3051A88D57FEF0888CDEFB05E64F9D16C6F87FBB050C630422B5860C
AFF9F5F1725923C223CC45D77EEBD0FC5ECE4BDEEBE3F775BDE2F48F3B0DD3D6
5AEA814987C6BC85DC9F8912A7A378EA92776D8AF9FC16C81C97251A02336ADA
68D81A34F4946723576547B21349D4E2DC5A7CB581CFB6A875293A3256214A85
F00CDAB2C30BE98C741208BA561E7B9D5CEA8F2078B93F12D20F3890A40CF434
9395A7BAF3F8E896EF257EFC68A90375D9B5B43E86EB6FF32CE4418B32E511B0
E3121D976749E3CDDADC76438D6ECB69FB3AEA014262BEDCF080398D41F8BE22
A29858574A8EDA035E7E980FD6D6C2F6FA750225184FF579C1CA0828151CE013
476368CF6CE7D45C6B832124854F819F4FCBE35516BB9B158EDA42EF72C3EEB6
E75F13C0B8A918A8072BF87FC4CA2917DAD7B6C8446BBDB044AC85492281ED6F
D51779A8CA5B26DBAD4B298A359C26BCB7C51EA2AB41B27A4A601809F4607FF8
42D30828188BAAF90D50ED50AEC902CEE7A5A4DD1A5C81A28EF735D9E207FB9E
EDCB509F3B1C94D17047B08110075BA648C251DC09DF50D0582EF2C620F9C763
70C39E3722FBEC5430A09968A5942280BC552ECD04E22AC67DBD809C1A05A2E5
68AF158DFF3B70C25A1DE0364D627B3D03CA9390D2E4F31D1C48BE3BB7CA56AE
38EE5D04A039E7396A22314A03BFE0CF4955681227AF37FE7E07C53C1CFFACC3
46E122A8141E60812180067C5624718EA63FAFE0754DE3E6F781EE2F53896665
9729D0DF217CAE4CBC5A3A428288A5A1704DA95D5FE7E90E493E2A8B850F31C1
FF149DFFE3AC494FD181C38B5056786DB98BE2AFEC50649440FAB4AAC626D80A
9D6F6B762861E6F1E79F9C3D29858D6087DB8C98C627D85FFC29B9B3D91922
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMSL10
%!PS-AdobeFont-1.0: CMSL10 003.002
%%Title: CMSL10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMSL10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMSL10 def
/FontBBox {-62 -250 1123 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def
/FullName (CMSL10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -9.46 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 11 /ff put
dup 12 /fi put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 58 /colon put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 72 /H put
dup 73 /I put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 82 /R put
dup 83 /S put
dup 84 /T put
dup 85 /U put
dup 86 /V put
dup 87 /W put
dup 89 /Y put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 113 /q put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B
A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B
DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F
988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200
5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660
7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C
46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C
8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9
71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923
656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E
848C586A3C6883B9E80168018E04A8BA99621D80DC7A610C3D0373172253EFC7
39D756DF796BEBCF86194A56E68366D6B183B9D280D500A2507D68D4F087873C
9696261BA4B1504F28F2E2081983545DB432BC23B3E4DE6BD05255B88DBA72E3
B7790CA90ECEA5CD733A8B4DFB8275386B0DC0984C1383635675696AECECD71E
9E1C957D9C75A7C96112FD17B1A06CF01C44CAEDC78C8BABDBB6D19CD7625622
334FA99C36F2E006B6BC5E2CECD68B99019393E16B7B906386BD41314D044FE0
62508D026B7772AC9EDD047D2967BD9846FC4043B6698F02B70A2652BF2F137D
84AA78D072E4B968FFA0B2CF7BFD807EC89FE33D86E8CC0D9E064EB1915E3D98
FF72969C3B7B489111702EBA80E9B9159B9ED14C09E78462829A5AA528580DE8
A1D7D829C91D8BB18DDE9CB58C26E9EAFFED25C3F6FCCA04C5B8C14A5CA5BEAE
3CB1AFF33E37F67479F8EF80A3A42C4F99C634C7928A96ECD45037EB2C615439
75E59C5AD602F8E4B4D0DD4DACD409DD84038ACE999C340F2C3E25859EE5568E
E8FC05CC34E2DBAA7E12879B250EE4167B002F447BFD9F04E0AB6FC261321479
0EE541F3EDB08F2EF7A78E6E3117B847F6BE016942F970C48B1E268529A1966B
07F225E9316403E25F6EB285A30FC3B458CF677CDEEDBCB9444B0C1C4DF74147
DB4D3C03CFAABC2668AD8B6766D9136992C16465C537BF6F389BADA2E113AEC4
7CAC0B2EC47A707B59BC1057EFC24157BE07F3AE76618A39871F61F40EBB75EE
9CCB06D5B1C6EA58170CE73190B9252F6B32168F3DF4E2B864A572351F4F90D6
0A809879697EF76079F4B270D0DD59A33127186A2C97D8DC487C32DC00D12B09
2735FD215C5B2AF6302B8AD8354C733184690BBA948518C31CD2F9F774181C15
F41559823B91029F3DD0611BAAC314BBC5DF2013AD97D5443E09FD9AE4785206
26CDFFC2C44D66268EC1055CC860D6556FBC9DDC3DB6F0A809D3394159CF75B6
5FB6D4482504D95ABE756F7125673EB0250477C6BF5AB75B87D38EBACEC4ECB0
74F22D8CF8432A0F731CAEB885FBF3FD2624CDCEE3DC38EEEBB6A0355E301B71
8AAC1B36759B4F720B7EBD274CAA04908F8E04B5D7DC0464B82809C3B63BAD6A
196ABF77C0B25FA3595786043A1E7EDE37F7BDC6F002041E60272037E7EB77DA
3B0B2859F670B0AAC17CCAD6353FDFDB59DC1122CE5BD1D295694B9F64616282
5A6705C890402099EDBEE2F991BE0B2C192FEFA2971D6DB9DFB5912F8BA0EE0C
20776F06E61A31AD75817800B9D39CFAF29670B21599C52E2F1A6E98E40B7DBF
D7D92DDE4B0DA61C030106FFC3E6CA7D8C6B4C477805261767E15D92BFD9B964
F31D7DC6EAFFE2E89727149100E539C2382994098C36944CBFF6305C11194740
776C523E39B378A0B99A5D43B505DFDE03CCC5709F6D808D7A7B30FB2F30031E
37B334EF2461FC64C6AE34F0689DCDC25BF04417F8961B9F7057F02C05CC9D9E
ABF0A641F994893D033509BD02A6CD1BE2E607C2D4D71B58DF12E33A7A46F188
74211F9300167194E5B4FA268E63F547B486173A2F853AC326B8A61CAC51A162
D9B181EFDFA6CB37C7E4B756266FA018964AF695E2C6606D7DE79C7EB7347FBF
1378FDA7AB648DD9B822F23F5174A9EED545EE1C04CB2CB5A78AEBC5E627D1A0
D02A6BD2764D6184720129B116594A771A46BA773DC6C5FACB1101F9EC3C3868
16098C9816A259778701B8DD9E2C5BDCB070D59017A1853C7B6BD34BDDF23D01
35F7DFCA8B3370C27C03D47A93500A9E662F859355107C5C612723892FD5751A
7830207308C1E232B777E871904196D5033EEC97DCD1D2939F66C36110D1D7E1
C961E4B7C088AA0BBE7CD364C96B146D7A4AD35ECAD2A1D8712BC2B1F24A5B32
99293181EE74C1CD9C60C194E66697EEEB90B1DB8CB71D553C6329F30BA63391
1C353F03D8E1C467DEDED81BEB7C36198CF188D2912931A06E06BDE383D4ACC6
2AB677732135164A9A4F3A84B8BBF8AE06C4749BCACA0C0085206F7AED6C7A91
8D65C783CC2BC7499F6FC01FF679579555E38A91FD1091D84C3B430FBE9C878B
2E877CD7734D3874C474455095B4C88E0FABF311B2CA0BDC257E949102B7AE2C
BB3836440D73915B658995F4A3E1763CA5153B5ED8F73AF9DE880E5422182B0B
AC8AB381656F33683417A3C605302FC833C42075C80049D94056D61FF0E45937
7C45700BC551B371EFFA3E6FE0F152908B4D4EB47F522DF949B2B8C5F4EFD536
056ACF5A3085E09841FC381F9487C27840E0CDA2223D0CD8576571D9FA115E34
B5EC89D37AF45A25C9339BB05457DD1ADB2CF2F0E1898F19275395FD56B6A363
3E5D2E31F050BA43E4772D2F1D9E515B498D037517E9EE632C8AB242F9971247
07023AF7ED66EBACDB2DFA4A5B6C51E703D3FCB18582A78B0811A8900A28B57F
D84A279AAF475D548240685F65262F8AEBE1AAEB00F0C6E59619C0D8D6C5D62A
8A5C1B479F5F565101A287B5644F876141DAF7652BE40E11EF2F4544740B3F7F
C4B4E8AA84B52F44BEE6A6E14A13D0EE8CB34AA45AA36869F284B6A86EB878D1
2E4DA9E19DD6DE91F4599FE3DCDDA922A15AE2B6E4B8DF04244F58A74A11A3C3
570BE49A0789996AC4AFFE22886386FFF321B6C9575DBEE6670FE4670DE0F852
07352FFB53F32C1A5658720330CD804F69854C47184C17B8D1987B8C67526A88
FA33EF980D2722FB6593C1DBBF11549C51BF00F6D3D6338DCA737D7AA6A6F4C1
69121629983EB6DEF32CCA29C8B240318919CD17973713B9BD09270C5D043103
CF00AB9A097EECEC8A838D75714966530EE6A63A94BC9376C95C2F8D3C3EF43D
6EDBEEC52315F2F01E57B5DF8267B546838B5698AE1D6A58C74AE99888770848
FBC19653F161B6AB4AA022B883088E76616743CEE823ECAE7CAD7BD711845459
9986619A68AACB5D06AA5508E21578072E0A2FE33DCF30BF115B93E9304497C4
80F09DACADECC3A4E043F2954BE782A4A47B1E6E592BD692E0631D8C1C40CF4C
A11EBFB47F5037F6AF3101B3091D1CFD2C340F64FDBA900CE5B6598C5C536EDA
3C6D7EDF4EFB9FE35B31D0368A01D62372E8C42BC6F00D2ED27C335C645F76D0
22CE7CD5B44FED1FD2D3CB4764D32854BDE0234B54D188D51C6D3FE9B789BD16
72084C525F40A91E83357893AA5211EAEDEDB035F4FA8DD715332FDBF2A5007E
ACEC49C4BA72CB4A23F21B3ACF6F22F2DCC456CF156B0AEE2B4C4EC7CF28552D
253E17C73021F1C771784610B3D0538CA799C584DC86A90FDA1BA3D283416B15
0137A7BB913080946AB256345B75B2E73FC40AE79806808157F9D8FADA44E95D
1D54777F3EE01EA6238C822D66D1F456213FEED4E3E6DE9265BCC493684CA540
16A35D7364D7802EF9792A95259CFA1EB3E86E684C897F5B93F8682754E37CB4
AEA75411BB15B3B132B1119E1C0E79F9B1217218E21F15079CE3BCADA5819A57
AD11736D6D5B3D07DAE0FD014D04F6B87B07A83D1FFD7566584A42919E125BF3
14677F840C0AD5A1C4523ECD2AA3CF97B613989716D98C89C6C444A8556D50F9
26F6DF4AEA28F43BE8B6F1A3C9DA8C4C7CCB6A9EB48B90797C1FB1A9472D219B
CD86D3273D25AD686F61B79089667A83057AD83F4B64867BCFCF5A3F6453B41E
31EB41F6ED391857C14784BF1411EFDE42C92A8FF48AF28081410FDB0E3C2044
0A21DB74092AF9FFD68244D866B04BDA8B912D812D9AC3979E11C5F5196E1CEE
C35417728F3DE5D6AB0F40A41ED756CD8886607DCF7CA51E69F43D0E264CCA89
ED16688C3183A78C6347ECDB7A98FE4A3444AC357C39E99644EDD2A437AED0E4
E668338328DB73F302A217DD5AA4732D596DC44269284501E140EF3ED7A11E75
3212238D4C1C5AD807931E4320951740A3D6EAC82CAB38E86C21BE47D7EA2F75
80F0C3B900E16EE0B7E7B2D75620AEC25C80ACCA0E12C0D1636FAF87C37FD628
26729DFB0FCAC30F26268AB820B42F998289B8AA810BDB74FF4141C37CB3BA01
02B453368A944D31CA819FEEDAA611D658DBD78CB23E3B870F3EE433814690F8
F267ECC3F84890AD1721FB19E9233EA2349D3A872C6C7347048907E0E3C103B4
06D9AF4AD03087281F5199F6F9D9DD1E82E0E4AD08C7092BB27F0E3B3669C363
6F94285DDEF54443E2AA00DAB98ED5E8E75267F509DD44FAD1B716A7B4F9BABD
D2CE270B65888B06E63FC1B434C9C06C8488BCF511CEB13A2EF1DBA22259CF47
E092A76F1EEBE7B683826C60FD5936A99F0ECCE5568B710F1A566C5D7840EC85
7FAD5C66C43C4947B9AE64063F0EBFD7ACE6B33F1B14016C0841E7D209F2AFB5
23DD2A14801F31C2A9D38E9D5B8AB3A27F02136764B0FD87FFD72D3E974282EE
E3D5F73D3D8A5FA892D77F681ED14100A0F052016F2EFAE1111C8E0CE934878B
F3D0F6D53A435B192BD3EDB29DBACAB7965F9B1201FF820C8DBEE7930FBDBD8E
FB9B92ADAAC8C87390E831A2ACFF606C6E6E6665ED5DCB97047C08FCF9BC2CEF
68349BEE89FA4CF40D78A21F34589B86603DC82E7FEDCC3D920E6C92ABBEDE59
812DFE1E0B7AB964CCD623B7A654A6B90B4B9BCF550F8D867CEE19C2FF29A5A6
F5C7E4CBC1E1A6672B852CCBE2FE12A7658C3B4528EEC90AA840BB177A184CFF
5252747FEB6BE425A11E5F549C2CCE60C5628E9EB4DEA5331A42BCBEAD0CA405
E88E03863FA67D9CBC381C27BF6DC9B9D0186A6AF0231A2D893C4A9EFAB09F0A
46306A823C1597486A1B1E51C78A5A5AA7A7963926355667B0D4B44A0F049AAA
C777FED482D04AD723965826065F786ACEF0E189A08036FD583E2C847DC626C0
FAA6E85A1BE50AFA97D8A109F667A92A7B4B45BC559C972144E61E57C465A87B
E65AF2B13D8D83675155F934712478DFD234B2D2B9F58AD1514C54D6F61EFE57
F8DBC7F62552AEFCEED31B8B4192782402D4F737A2725FC02EAEBDE1146A4FC2
44D0D16B12F9B9D181C0A853E4FF1E61767189E78B920A02FB968356A93D064A
8E7DBCFB3EB302AF9F91A5730B7275B47CAD0F8B7382CEF9799E179E1A3E2D6E
417743C8079BEBC86CDB6620B0E7BA1C2F665A34BC2DCFCE4FA0E9268D7A4A57
14BE2EA2B0B3F8456A954D2AA8C639075968CF49812AF44C27A6F0DADA2517BE
42AA9BFFCB2FE1E817CF642528F97818D1E2E31E4DF83753AE4E71969AC87690
0DAF22E7184F784F84554B684AB741642C85EE960AA2572D9A630B49218B5363
42880BB92CD0E42ECF3752FB8E40BBB3D60683D599D4F225A9A39889ED857951
9B721005315D86102583555140BE869846819368B9CAF76590B14AA04B30D190
D09EF84377FC2EF9050894E9AC3D50AA7E3A80D753836031F5036B6653BB3813
78FC9B0A50B27CD53E837E77D044AD69A10B2DB184C57562ED933372CD0ABDDA
98A2DD12BA0EBB65C40F080B50070EFD0B9A3FA4BC6BC1BA18B690609C1B3E41
B2B73020280014B498B093FCE67436FE1FB286FBB292F8251C6D63DFCC0FD0E2
73F16DC299E307A15D540EB0CE80683EF679A353816FA0F9C9E4C12A74E602C3
59CC87E09B987040CF2A3D19E3FF1C878AA4CBBA5E26429DC743C40F6DD0A06F
010CBCA2D3F0D3052C23F61FB4BADA2EC81CD65404D4E34B87562ABDA1D3A444
38D80E5EB8B5FD3FCB09DAC2B0B14A7D05F558A80FEB0BB2FDEBC9880CFC7EE3
39BFE6F1CCDF04FE0643B5DD29CF46BC063A338F2BA04A7FEEE77EFF23778AE0
450C0880D22C83F4844E6B5B70217C0FC9C3E2B762C26D2AA578BF350E56E441
C001917B00B797A8B181EDB476D678115F4FBD7B0E68DB673446843A3D4060F5
5E28E1EF4CA56404B66C3760BB3AD181EAF6D931408A4642F83E74347307CB41
C24871501A09E7034D24846816013C63622C2B3988C7BD537E8B606EFE38C54F
3E79BDF8699F2AA4D442EDBC4CD77E22B0713E6E91321EF2B562B112080C5853
4AC61A1A1A9E7427C53DDA5FA3C6D6C673DCF6D8806DA63353E959ABB5F5252B
4700FB68AB5B760A40CB9CFA57A34E2797B9573F35330844FBA50829A6BC9733
E2BFA19CE0FCE16C1753841F941C8C0D8F04CAEBDD03C81DB87961B40E206879
726AAFD5671F2ECC4171FE8420E0DBC0C3A37264D6AC158960353B0A8872D8C6
3C2AA0A855516B189FDF6254B79C7DEFC5E7D996C9CB4AB6CA3607507CD09A9A
6F69135921712F33F79FB7F9B25E07792BC2448A5429448D95000550D703A380
9738F3C6D96A080004CEE63E312DE9144462ED6A6937AC05C45C43D3594930EB
4987200452E7B545FC08BE7780FE43AC969B2E526FD85200608E8045730A5100
EEEA7DF27E7DDE1EA5DAF4014EAA62F99A4C0DB70DE22408DEDDEE9CC72B5898
C4AACF3DF1247AFAE1D084673C615FF175987BA8D330F48B0E5FF7C6D35A40F7
D9DD91FB136FCBBAE98903C966A790512B68E3FF81C29DEAE761FDBC0968C5AA
B0AB1A379DA59C87324B6FDE73F49FEA51C5DCCF18B02400EC9EF1089E329DE0
00A5EDBAE2521FD26EF268BBB3301CA9B795626F827BDC36A65D65CF1CB46C41
6FF7E189874F799DD98CE43562639B493F5AF82658ACA3C04373864BC6D55D32
17FCB7BB39D43D965A21250814A4B66743443C7269E67820821E5D8734B879CB
BA42D56291741117C96E0A6184945BB666141D19710F7352A6F812BCFAE7C08F
6D8B66A6EF0D12D9C24E010870327A8D6581E73DD3F495530E7B9CDAED36856F
767DF09A22079197B489BE15977A6FA73E75D13C57FFEAF1336FAB9F3B249492
6484450DE0AFB8DBF96DF34D3D8B14A793849E46C038FD7472DC9FF42D793FDD
4E17286FC47044F069C320E87A5266F3E4E931E8A25EB1EC4BE4E7244BB14335
C17CF0D201C6852748F4DE22E4CB24FE79B477140E94C8C6CF7F53388AEE3681
098F28E1EB9E69DE94EC99CF9EC7DBEAE159A686F1B5F46152764F77D1772460
39698047DAEB0D326FF041C2CB27D13E7B5D0A25C8B719F6B28AAE6A3F7BF76F
35D47C474B1531F52A4E629F5465001A80EAC11C19A5C10FF2A66C667861F0FD
265D37F9B8C1057B627E86E6F17BD77760A627A755F8B481993158F8EC26513A
AB956B6F48EAB3474DE5979C45382867983AEA46D9768EBF70222AF86CE5BEEA
1F4BFFA0930EBE58C1B501B64B8EC8CFB1DE7A6E8143C45428A049D73311419B
3019BD3B173852E1D6AD5072D9E61280935156743BDCDD9F2DC5347EB740D73E
6E7211841BF5C9FE5F54347134FD2A2922FC8BB2BB65B9E7BD9875A393C38E49
A047FD642883BEA60BC0713BA27942A58F91421447596D817FA380E31736EFEE
2056436720CCD7B12D622E7A25B7960B5BBF0B883C5951C5C94A25D6FDD745C7
9ABC8FE7E1D3344F6AF62C5D12B160FC204DB2CAACBC9349E7A31CCB9C06911C
14331E485BF4BFF2ED8F5C1E7FE952C244D78B37B01C68A920121FBD4CE22928
FC90C050A35703F8239278DD20436AD0453F39615D2B0FA40080E6254CDA2E6A
446C30736E7B04F1B25C34E5FAD63918D006C2663528FFB9C01E4C43A7A14A88
352461FF3BDD2EA58C8B26E1FFF72FC68CBE2C3023ABAD67AD1393F865C3FBD1
FD27029473F4561893D38A06E7309EDFCCA3C3DA080A5448A57AAAA1CE0589CF
F7D37D9EE422B6650087D6A40AC99F35BD6B817B6FD64AEEECB5047C2B2B7DA2
112DD9A861B10B602B94E210B6ED964BD4E6B2DDB5A1223B6E5B365EAC014D4F
B55480AECB3D7E303BD9F06665623774FD0D8BE92AE9205FD97D19AA4EF8D79C
C73747FFE96D322BB13C29DE7E3451BD29A88BAFAE1FAA3800A66C4B23F8C2C9
413EC105B8C1E37B6F0E24E2881655106C24FB2948D80E693C96960AEBDBBF72
6802AF92EB4210EA486996BD96ED56E2E3775643B215579A5FACC833F8165F12
FDD1CF96D9AA8A8824BB43CCE6A4F7B35A321C3901FB3A4704951EBDF065200D
C60F0724B90C111CD165D09701EB04079F8E9A0A2A9E5B453F4DB2401D128E56
2FB20024A02512AF433C491ECB141D1869154B83836B429542FA11F42462C943
54238F1CBB82ECFB9C3197584BB11B3798137279A73BFE9CE9089C141E6BABED
0FF686DCCA423C3950EBB34FBCC56B2B9C5AAE14156D5DD6A82E1788ABFB70FC
47EB604B7277588F93FF573E3859E18DD39ABBD10B1F7028697E1747A35B8E0D
E09870CCBF0CCA39D777AA5D09E1AD302771F4FC5796E281B0649DCFCEFD6AEA
24006A5834E98ED57E0459C1F7AF210A002E4E220B39FF671BA9739335C7F8AD
45F81F7455362F6A7B90D311C563EAC012C5E37E446B01C8BEC8A299C49D571B
ABD1094CCF2FBE7064D0CC0F20C2F3AA56384300F918D26CD935A270D21B7CE9
8E858D42559BC7ECE6E7DE94272EFD727F8A66D1B9051618C62582D3778EB86D
B7EB01B5066E697C2246B3D0DFB6701D3CA8799ABCA098EDB67185A494450C2F
E181118238987A11170CA17640C8AABA8C1A30144BC6CB7038193E43E3849A69
C00A216B7FFE53276B6614E96CB98EFC9203D2E42670B62A0FF93618CEC8793A
66250F4EABCBAF2E092FA31A961F7DEF81A88EB1FCF1235F098E9C180E46C9D1
250ACDAB09F4C0564A0139F545A1F54767ADD4C3A535314B9E4B184A84DBE481
1F7AADFE0622452DFD1E50A4C814AC8A7898A2837A589069AD2D06ED121402AF
67B6637676146A2DE12BAAE3AF6F4F4890AFBB51F84353A37165050B2CFD5146
43C7DA37C461C67CB403303D21850FEFA9F6374900AFD038589771C2FA82F15D
335AE7E77B669C7B0175E1458423D9C5212CA0ED0736F091BBDFD18E3ADB4F0A
92F3B5648B4FC8CB033AA0DEBAD27791CA122AC7A565EEC24753D00086EE9829
6D8CD612546EEA5DB930DF880B98FB18B525139A57425309E16B9D8DAE5F85FB
7D755DCBB68F1127D0D8FF7133539317395087E274076013A2D23640AB5B8D4D
8F0FFACF5D4302E9FCAE52B52A3D6AB89F75C6EF073389056A4BCE656D9CD34B
77A7BEC1DE06E1BABE7B2877E5BC0255C0B061814850AA4E40F543161F069F9B
90E37C774D60EB58CB06E9CEC991963D8C681292CE27BBC664C2AC5DD2FD96F6
DF9FFF0BE8F2304E58FD0FB6B72C315A7A328D6B91B65F6A7FD54CDFC8579F35
D9A4A558400472F1F78BDF9828FA47B8F2B81AE0B9BD7AE769A85C80F24C941E
3808F97EDA28B59E15330593E3092483397C77AFDB09B1829DAC3447415FFF1F
F8299A02C713A05BC2C5AF517EFB73EFF2F8EA67B953F74094A36A00E2E9AA10
6E37A0B88E346034F2930E2729957ECA1C68B124F64D7A3F5C75B9B22E52C049
3ED559B8126891BEE1BAC6631F53748E97F5142345439BEB39CC633A8334C9F6
1D7E38BF88BF6B6F6CFB72E0718812AFF71180DF31F6C430434DBC62DD8304B7
8E7DDC28C377AAA8E9290010DB66EDA36C601E31728296ED9FCE378C74A5DB52
6F1FA85BD8AA34F3D109D5E7A41C0A8F008B91E44CBF555FF74A74D828954F05
139D802F6AE04A85730C79D816BA61AF326D5C44DB6E2F54759958A9C94E4E05
1A59266160BF9FF1A57FDFC046C7ED3780C73C897C3D97BA657C20578B29D199
CA857E13A6E827EDB070D54AF9E30E3BC9DEFCF6B67A066C2035A8C9AD1EA1B2
78F57063004DE62A97D4AB86A2581435566031AAFF0904EE0D92CDA93A2E7263
FE19EF30EB7F9A18372DD91C1BFA06129BCDC35229F2085D780ED607201F4CB7
5B639F48C7C15A292984E88199D9D21FC2C3377F7B12A0CE48E1DF0413FA2DE3
EA1D90AAB878E6EA21A1B3E163E7C11EABCE081B28952F2C52AEB813C01E4CE3
A3D27162CFEF07F93366094B50612A312A874A1E4DC97359228E9E57FE4D1391
7DB6D9C7DC0F0A3647349A0BBF35397E1C201633BF6F70A5AC61E2428275BBBD
0A2C736D5CA8F63070D8FE9BF523DC0050FEDA34CA19D805C80C9F9D67BB0B7A
3EFE7F72419A401C2A5BE285BFF637D78FF0AA62E25D68531B855C4D8BD7C5C2
480BCE497BA7869FE522837DD4E2D82F34203D19B0364DE03458C91E8D9045F0
78BEA566B35E4D997AC3192665879EB46719B704DC9D13FB7BFFF465F4453B7C
31F305EEBE91E4750D6DB706A912941A52336F85D3FFAB24E513B8FB13D633A7
0E9FD89C5C52D7107587BE8472C885C8D34E6A53C9092C5E2CEBD093C8BF1CDC
E99259FDE6C32FD2F94865F73D997317789C7AE9A3519C515FC92632FD9F9251
959475A557BC3D84C3541F044CBB41A0DF238B70C65AC86BED9A2E3905F6E935
5FFCAB2D0A8694F762EB8B579F5E10EAB7D9DC2BCB0AFE50C0629458663CDCE0
DCBCCA2FDA7E4B47FD10F8BB66F717C1431EEEA9E2F7612BDCB9BF6D23AB68CC
A16A2210601FC6214C55A99C06E3AE450F1DD4BE8F5B7FDA83BCC53AE74BDA3A
F494E088B1EBC025151AE00E4A605F49D13940F2720C88BBC9456C9918361945
E8156B28DB320DF3569AA1F20CA391E24749F2A32DBCB1FD83F4E6FB7C7698B9
CE4B1F2107EDD654DABD39DB889014F9B5F2082BCF5B11DC821CA742E0AC7B0B
E87E71871A8E059001DF60A7B73E4E2B0CC7517B254D86BEECFCBEAE1AE8D737
E3633A9B4F77815ACD56745742C282464D23EB3EF79E50155A59795068642953
4ACD59365DAF0696D2F7D927045C093B078AC77F842A80602A653E1329123724
1CD816451AF64648F3876F71A15A36F8F222B552ABC90219E679B47B1EE8F63A
73A50B817166434676A20E19184A6F3974102508CDB10D98ECE5D0ED9EDA5E1D
EF274A12DC31A61B04A24FA82E22F9FD63BD12524A660871743309D67510F6F1
127D9EBBCC45A75DB13613A939BE94D4D9E9E03C67CD2C785C575E7D009D6DE9
B41CC6103EDD44987BE676E230E568090168EB0BD821F8B995A7B153557EC97E
2F26B93566BE3E704F024FCF557462E89947CF3EDE42845233D0BB4B458D0AF5
83598840B9A5D09E22D7B19D768C2D9DE826E9B7B426F5A275204BE4B15FB2DC
E19B19D1A5ACDD112DBDD52A13D595A4FC5CA923820B1A2C7463A9519F7112EB
A274D49D9DA6636D48337107E425C463D54B630DA2847EC1484E8379B9CFDF55
A6F65F855EA63CF8025AE452D6DC73922B4A2993C33DF3A8F5334865849F96C0
45CC50FE6111CCB443B343C018F034AC1985204489C46AF77069A62D148AC49A
8BE359FBCEB2A93929B92F90FE9FDE88B72606B3F1889FCB079D9A14B438F0F2
0C0496674B9BC3C412AFAE97291470830026AB3163F66F4AE030D1B10B0EDBB7
EF47B7741FDE8468DBAEEE257A3560E90DB916EB799245B60C28F6BE0DC77BC7
F7CE33138D82FC4F8A923A27DBE29D769D3F6197CE1C473161E5883D234676AC
55F1FEED186566F6B21815E1D8B5ED66E6170E4AB1D80B7533E66E8882355F35
FE636CD3A8516E6937F64B3690F877012355F09C1FEB31C80044B4F156FAE3A1
4704B6A66267491C9F36C01A83F2ACAB608D02AD1C332BAB677F1039D5E81F87
F735C9F7835D03C3F4069EFA89A254D69AE7953325ECAE58C7E31EE977DCD427
A78ADB28062C251A40E51A49DC7B10A8CCDFE3BFA60416B3B1857264C047C9EC
1757543978CCBCD31FAC3FCA0061A8210733382CCA5D3ADFD7B1E0F4CC468A2F
B2062095C1D28C7A3E511C98C0B104E8D23FAFA8396AE7294AE78DB4C72F470D
6128135DBA895FC900FAC32DC769E5F0EC90BB801D91E541FF5AB245A2CE5C45
4BCBC624FA6E1E37A1698FB4EF7AC2A9D5B5B647E179E61BEC74700EB8AD2B2C
B725DBED07F9061113F6BDC8D2875E913F93BEBF07575429162F52BD9D0EF5C1
A8E769A12D8ECACFF530B61D9D60BE2DCE297D0862D85C487A5BC18EFFEEA50A
49D8A6A95926E29CAFB9CF2BDCA44F1B95F4ECBA331CC4CD38C55398E896E522
8BDFC99DFF9545559949ECFBE38AA75741712E422BEF58B19EBBB118FF59951E
13E3852935ADD691993E963C7F5BAF3317BBDAAC8EE3DB0FD83821E66B7A802F
49511B3A1A5D98B345B85EA3F9A28E9CEAF24C9717C0EFCE732018052EDCAC52
DEF68B77DE42407F61860FA3F1EBFAA68DD2259D56C2CD8768EC48A78F439F87
72D2B4EEF7740FF74AD424D090892385DC1465CB07D1E82D1EA7ED3ACD2534C6
575ECADAEDEE6F1B7E1F4E41E8CA5DBBCDD2C561FF874DD7193FCC2C73ADF6EE
C0B1EA5BB5FF8196FDD11158D32E837802CAD6557A0F20714741A3FDCB22362E
5E8FFE7E62994CF72B7E5C73E4EFF135567CB897BE673537C6DB2AD66E314553
00EE61DC228462911E9E3C4FE36EDA857690C9513AD841CCE5568F9F08DCB89F
97BECC281172459C0FC06490FFD4A89FF5388AE804C51B6A2BAF3A72599FEB7D
DD5BB072E876DBD743B6FB09F6484D55B1363B8B257ABCEF4F4CF07F6E28FCF9
08716E8D1228FC0A39F6797DE1E5B41D71D64E94259CF70D4556E1CFDDC532E7
7B53D22B6732BD9642A519CF7F1DED94634C0BFB1938FB8A187FF5806ACE9E87
E65336E65EAFBE57982E22E781BCD8FD231A70421C4F9D3743A88D7E59D06982
670258BF42255EE38E32096666B0CA87217B09054B401E804C8B70056FD4DB21
F24F3536D093C162C63A7323161A79F8E99498CBFC064DB4850D7D9B2A6B31DC
B1822802CBCCCFB0A52B7A5479672C424ADA2DF7E9CFCA05B6A4F7A90426A532
67D899B51DAA5265975C3CF76F9411A0BF254B02A55DAA0270D762CD7B8F6A60
8CB1F0049F3B2D23FC158ADADB906D7B046B3C16626D686FEDF679220EF2E1BC
91843E21D04C9697595B4A5E4845BF4F267CABAAD17A112C080AC4EE278FAB7A
1398E645636546AB9A19D5C32171DCE8B62CEC9AE673888F421EDBBA9DB4B2DD
391C0DB01990AF99C3AF93F933DEEB1130A92781E767E7B12C78A17AD73CD338
5827B0B9D9F7E31EA89A855F2069FBDB053E845E9664B22A07D71DB036B7D132
326D9F920839BD204AEFD90FF6662BBD2C0D69ED02A365E7FFE93F5631E1A5E3
78D8546EDE7E12274FAB3C910432711A72E6B77A02A2844D1EAA20BA5017C000
D2AE8A8800AFB2F61F767CD2C6CB2A1072C4EF6196C3B283A33E31F119728B2B
486D11181FF9F9E4A127D59FAC0651758064D0E7A55A1DCB843180EED5ADECE3
CCAFAE1C2C09EA82DF6ED8F41F0AC63C57097080828987907EBF17350E804151
D20C9873C47647FD395E12CF6F42243C234413B027E98FBED0F149D513DF380B
8E178DF46C8D0A1B21C5FD4C6C779563877EF1962DF0DEC85EA1FADA15F63216
2AE87C7061DAE0C6496801639118DBABCAE5256A81143DF991F7E1FAAD69760D
4060957197CA0B132137F444A879EE2874A483F475DFBD8C23C207F9DC5913CD
BC0CADACAA01ABD4520D24DFEE3E1EE1C2630DE7FA30424BEDAC5D407AD4C431
6936808A64F246AB3290FBD915337A562DC62B31D745C3B4361384A4913AE91B
C0277F2B3B25884E8A9D14CA90EBF7295656B0B4873EB27709723ABE4411FE8B
D63007DA70EC6C445301560B46653974EF4821E130C4C518BAE8AEF320956C84
4AE1BD9A9090D45D91BBA00CE7454D6D68C382AE11208030A145EBF97A0A58B9
7007E108C0DD58E0B56F7331AC0B620E9A802D4CB08FD4B78E9DDC73AB6CE370
40CBA5DF2EAFCF6FEAA79DF4F5A2A485231E7556E6444AE3530A9796086C5CC8
E3500A782D3138D232F8117CC07BA5C793B04A61150F0069DA07411916F86A9E
7A70E106C9CD4EA1D524A0CDC9575A300742C10B3342A4BE00357ABCFA06F62F
63735D9FDBB769014EB7D026C3F25A0DE547315A92E195B8017D12692A37E6BF
739BF6CEC107ADFBC029A15689726DDF8927A11A7955D403C928A64AA853EBE8
4D40CBDD6B3A635F8D42B3D822CE51B9A0C791B99782DB650951D2D6F8C0EAB1
C79BE20AA1E94C977A17446EDBFE88E63E5BF372B951EF247BEDEEF5D7D07A28
9539EA5B8997B4BBCD505C70F244719C7DA0DD49E0461C973DD40C6DC898D3D5
EF24D73B280E29ED4F35B75D6BB8310DFA527F8D77186021D0A5C354EF28836B
7F372F57E15F81639914D6BC1D20DDDB805DF9A25662A0BC856C05DBE92CAFD6
9A835B900B8591E0336EDD73DD5AF329B41A428F9D62E11DCEE0D128AD916E59
AA2C90E2975141CD7E2CDB20651E43A9A42428740FCC3839BF8C0E7F051EC15A
2F61B87DA2615433C1D40D0594A6A4AAB045DE1A7E37360E0850132104859146
987F5984D321AC929E33D7C10E29952E525FA6477D3E8A1DC65A04AB545BECB3
65CEF3D4A6F613DBD74DE4AB848DB96260CC57475AD1B1AAC1AA77A72097C8E1
E7152AC7F88985E4CA64E7BF1C9886603EB500A057799F1A158D98C5D40C2D85
C6F40314E3561731FC43680930D4186265B3EC9EDD1039B29F691C9A539DCDCD
6F52D1A34CB75B2CE57AFCDDA93345FED35A982F6978705EA84ABE4459742709
34972E8BAEA062B75872542781457B0EEB5F3DFAE3447715A49680099CBF5F96
ED1E241DBF4CDC8FB0DF2857C247074D4FCFEAEA535835D8643E1CF15A66695B
D35FBC76CABBBF03C6D46DBFE525098DF0512DE8953BA493D1C2F5F3E2EE8551
E9A2D716D8E2EC90D269B5A47FB89765AAB623537F3B21D4C63145D70C5BFA50
EA822EB1FB47C6E2A264D85D5B6BD2B60956449AAB8484AE8C066AF02C6A0D7D
7B09DC741C521747B85A1C0C9527CA36A58AA56167404558E9BE6F1A226CDED8
C9EFDF29A02CE006A3882E3D98EE73F13FE946BCC151C4A915DE06BB4A29C994
B6A4F5CF22E4B24C20950543D0A4E90E367979743ACB585C705E5F4FB004EB88
A9A0D044F8B1806A28C1CC6070FB835E7C5B5307A6F1F8523E200FA5ADE5A55E
B6466565715160144543081619E9AF3E969F27B78AC0896ED5B37516D2D428C3
2459710E1FDFD0492DCE46C805FB042F51E7823924C592D2044D4BE09C391642
AC99C56CD92E17D725BE1D387C1B78729C0256BC44B156354D0CDD354FFE526E
4007D823F44C07A11C8CE7986BD87A36AB0BFE5B4AD3104C31AD4E2B088A2231
77E25D841467424D05398CAE32A07196059A8ECC5871AC47F104D5CA793F3E56
0C6CB116A9C39C70550666C2F3B60F96A51F8D6F388F8E78D6529EDDCC75FA96
E47318DD866D1B5FB0916262B3445D0BB5686F399C14FA30969EA1E944E404C7
45BBB253FEA8ECBFF31249E2C2C24C4F6C3DCB07EF17BD5689483C6AF6AFE0FE
F05F1D5D3F416158A7E6689809398E3EAA65605388A308661B39D1065E73F1FE
66536ABDDB44F045771314AEF2F2440A3DFC68915D6C2B2EA7868E32BBF7816D
311CA89BE96039B0BDB71F836E075828F188FC9E540DB7B66BB48EABE4D4EBBC
955B290196B67980359F47D2A6DF199CBB26398F68D23C54CE7153AB9E60531B
3FCA0B4D5C701996F9AE8BBDE40706156424827C23C63E2ACC5FBB305ED75280
71DDE98E22556C54E7529E94D45C02539651B566519A3270770A4643B0A9054D
FC56AE943565A1338DD352AD3D1DB4203B8089D572BD7FDE0C0A416E9EF113AE
C495AF7DFC580E2660FD4782FE723C8A19992231198DA855192E75B46B78BCBB
9AEB1B2DCEA01608C283C403C4119C38A4C9A814F6D3E2CA26A27B13D84CC184
5049B092707789A918CD538A9DEBD1D9BBDFAE3795E2352CB20104EBBB64D434
5D69E8E06D27E100C7E3FB6AD33AE22BA712F9F8B6291DED9DD6A681ACA54208
6E8FF8F59EA221EA5B79B3AD4509582651FD02FFC40D3EF34098102A33E106D1
78330C63286232E171403EC83A558D77A9FBF5E1DFA11337DE9E8BB8CC4C47BA
13D666AD34D2EAA145842334478970008338075D4CC919ACE44690B2F34A09DA
8A4B418D62D7D6E7F006306D527D4F3D68ADFEC19044945CBB31DE9272C4800C
AD3B25EDC80EA92AE5AB0D5F53934D00009A286CB3B54343A4CC4A8CFDC01CFA
FE8FD9767FDB2F2D487D51DEF410A94501930A33DDE87ABADD7DA900BC28BE17
02A3132AE28155A3A492837489F15F0F19A1A6FA2FCC888F677DC2000C94BD77
38D2F907093A83BC85EA022FA9ABF6CF8D43FD415D2C07C172887340B992BB8A
9295AF7576C7AABAA5DB47E1B4A0A290B044FF0638472E0361DD5880DFEE32D2
EAC4874F5FB274EA1461FAAAC67811CC5AB69704027F31A7C07C768647BCA60B
77DD5D5ED9E6BEEB314A75066B52D17FA7017754C7B19C331DC6D3C520F964A5
A062AA030B26EA56EA692093A74FBDF8316D6927181DE60D9BE8100BC13A1FBD
375F5D3D060B0155C158A6739F53E41A4C974D2DAA6397DE97019E9B75D66459
E4A93630443DBDAEE7A73270E9A563189E3ABD503919E7BCE4334C9900A6ACE7
A27F8FE87F5901A57240DD522C244155898A4123307F561FB19B5A7F38B02734
57A13E87CCBF69177F25BA91B761F6CD59AFD0A3974206F46C90207D83E18FD7
5F51BE61BA8F8AE7A83AFD69A767D1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMSY10
%!PS-AdobeFont-1.0: CMSY10 003.002
%%Title: CMSY10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMSY10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMSY10 def
/FontBBox {-29 -960 1116 775 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def
/FullName (CMSY10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 13 /circlecopyrt put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
AE5400775223E684BFCB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMMI10
%!PS-AdobeFont-1.0: CMMI10 003.002
%%Title: CMMI10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMMI10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMMI10 def
/FontBBox {-32 -250 1048 750 }readonly def
/PaintType 0 def
/FontInfo 10 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def
/FullName (CMMI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
/ascent 750 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 58 /period put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7
88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D
2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF
AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66
B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22
CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744
3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8
404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84
262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953
084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341
E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMMI12
%!PS-AdobeFont-1.0: CMMI12 003.002
%%Title: CMMI12
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMMI12.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup
/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMMI12 def
/FontBBox {-31 -250 1026 750 }readonly def
/PaintType 0 def
/FontInfo 10 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI12.) readonly def
/FullName (CMMI12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
/ascent 750 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 58 /period put
dup 60 /less put
dup 62 /greater put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE
882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3
2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A
7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541
0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69
987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7
609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC
182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A
CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A
1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE
C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D
3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6
D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E
E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200
761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24
8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F
68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D
10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4
262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6
922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16
56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26
32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA
7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460
7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A
46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD
754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF
88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F
CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A
7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760
8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0
BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B
CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25
8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B
D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300
135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A
C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812
1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86
07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39
14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D
7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D
2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D
639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3
D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F
90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948
10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E
1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E
8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC
D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9
1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33
9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875
EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE
DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3
60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8
FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D
203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608
FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09
DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F
2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D
244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077
31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B
724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8
F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7
D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA
AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907
CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF
01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D
CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA
287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605
8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9
9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1
6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5
7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C
192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA
AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4
A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9
50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67
A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912
3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF
CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6
5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96
8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE
084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7
92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2
AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27
97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF
92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5
7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824
5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199
13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76
6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1
5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5
6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83
F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E
A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4
7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A
9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817
E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962
AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD
F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8
0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003
1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31
7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E
38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8
5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F
3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B
B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85
15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B
AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674
6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6
CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322
EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82
A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D
806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4
461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1
4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361
9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C
172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6
69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E
ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690
356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0
E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78
7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C
B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A
31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF
EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7
98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30
C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61
AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208
E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900
76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40
8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573
CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7
761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A
2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138
89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60
D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF
C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485
D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8
B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39
AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F
D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3
866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD
207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73
756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7
60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD
A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A
1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4
A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048
C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3
03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321
1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B
97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE
D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8
4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF
94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97
201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7
9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000
CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7
29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939
4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED
66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31
14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53
84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74
6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12
49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C
224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5
5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4
A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498
1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D
5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6
40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C
E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B
C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FAF3BC331F0A7186D
4053C7A7BB3253326E1E84A4EA2D9659CAA229C3AC407FB24F4ABE9482030869
A9668917642B1ACA4C6EC2153BA085CB745676F8783325BC6F017E28C8C2085A
26E6C61199CC03DA8E100A0E0E26CC256310A0E1BCB6B0FD1EB01BDC8E5035D2
94A4351DC0867B4BAB0208DB3C8B712354804CADB0F70BD9C8B3544733F97167
41B1B66B512C1290E6D6A79DE9ED4E8F44339CAF9B7E1F8C6839954F077F234A
65B832BBAFB59E4A8EF37ED43D387BC98A93F940531F3EBD005D9B4F745AC182
A2E12B21F30E771B9EF9ACB2D669D062302F200D8F6A269544DE0EDDA5D745BE
63445CCFFA78EE5647577A0ED19C0B629D9175E737A7598B9AFBFD3C6A3554AC
FBA256AA5B50E52DE919A353184DBF6EBBF3A0AE508638342E0F2BB1F3D88BC8
848E84BB55C5C4C6D026F8E0BCC38F95145B38106811DC6EFD6528C95B38F06F
97E8F3B15D4AE350894D705ECDBED3AD63F1C20DE216BC0756BBF4B6B69E4165
DC45495346A27EDEAA502D459F517BDE4BF61EA8959607F82AD0A10CADDCC9E1
FF5B7E24572114B4346F38B9F781E8AEC4CBB2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMR12
%!PS-AdobeFont-1.0: CMR12 003.002
%%Title: CMR12
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMR12.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup
/UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR12 def
/FontBBox {-34 -251 988 750 }readonly def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR12.) readonly def
/FullName (CMR12) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 65 /A put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 71 /G put
dup 73 /I put
dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
dup 80 /P put
dup 83 /S put
dup 86 /V put
dup 87 /W put
dup 88 /X put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 118 /v put
dup 122 /z put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9C535A5E57376651
F6823308463DC4E0339C78699AC82C769542FD3B410E236AF8AF68CF124D9224
FD6EE92A38075CAAF82447C7AF41EF96F3ADF62F76FB425BEDE4C4124E7B1E0B
8BF254D91912D3A99557F5427907A56514C5A3EB961B94112077FE9417B70DA0
B2E1C1FA3E1D6F01D11F640CF848E45BE3E205258E64FE36AFBD4DF4E93F6B1A
966C8E7FBE2CC8FF43C1F67BF6C361678B5E90F4BA524FE8A4CAD6AB28183E6E
CA6C9636E884845105595A2E40CDBE8D4807A81AF4DB77B31873FEB221BCADD4
2C4669459704CB58A7BC230FC59F867EEADE660E49AEEDEEB042BA9A7DD8193E
56C3A36A1F639F7EA512EE4BC6992F52C2FC82A890EFDA730105B0AF7B819295
EE00B48F64C2B5BCB275B1DD62F289CDAD4AD9B7EF057684642FA6FA6322C277
E779CAC36D78F7779CB6DE12638B3C65B70C6B5F8A8C6421A379719B8DD44973
5F52856A4A29B2ED37F2B1FBE6EF4B79B7C0CD6395C756A00FACD763C235914F
847D1D99831023CE1FD89EFEC83AA7E313131C0C197248605EF5BA773D0A4000
72F607551A8EA6F0FF19441ACA179177D1FF7B423FEBDF58B0C19CAE3C10EEF6
3538D8FC4762B77C5AA023A8186C40D0365A4487DC3564265B3DF908572DEAA2
57E29EC669DD72974F806EFF5ECAFA9ADF1F9D2A63087FB7BBD100F0F81C6FFB
B1EA1C9DD46548AEDD147EE64B1B4894972DAE1DC3E8569D6A3CEF9F9E46DEB7
547E10BB2959D374A33E47C58F1B20419920AB485F166062FCCC08EB5CC9AC88
F388F0C0155027B727729488E44CCABB7064A1432E179189C4627453C5231535
47D1F2B8BA43069696830CBB6E5F9A135CF22D3D1FE490A3A63C088EA32FF444
24A2427BBA63033DFE2E06DF8CE67949B6AB02F26335A376B57376814D2A7DE7
64A4347577EBE9A6E33DD2FC214A09C6D889C8FFBF1D567032548851B8F97204
49E215CC7D222F593E1EF1439ED60AD922D41E0E9EFB5CA48F2FEFF75AC5FEE7
FB6676D8B8D4DB6885FBE8B61B586313E4DAFB09D94CEDC0507E93000104F3DD
F83865A2C6F6A7DA8562BF86F5DB233CC9B53391273A1462E40876A8AC2B098A
DBADD5A160DEAC061F86A5FCCAB495EF8A9D121AF07928EAFD56F618E4EAEA97
CF89A3AFD406FC9DE1E9769C1E1EB83BB883786BC075EB5DA2692CD59C4DD7C1
7FD2FF9B18AC740A390C1DB38670DEB18C67721A1DCD502FE7368F47DB4281D5
459B3F020595FA3B10544AAE9EF786A0645FB7C9BB29D091E1432CD878A05918
1665643005BFD9A4B0FFD347ADC84CE22D6F9AD4EDC05E8C7179DCB360AB57D1
6ABCD200A4B4AD56825DC345984D9A3DE11CDA5E9EC1E5006EE4181E4EFE0846
67D8C27BEE8F84A1E01947E945BBE988702DEB2240C4BED952E433E5305484E5
71965D3DE95C4115FF78CE9EC18E323C599727C8B93CDFBCD1CCA780DB8C81ED
C4B5E596E1603624308972FFAE9A57B0EDB51FDDB6E23EDE2946F61BEB241345
2A192D8CAD53E823D687F9C64A70A4B4B703291FA6317C051DC6A44BCCE0288E
3839D726A8F2E39BFF429865E95C726E808E02CD06F36C1CC9AC77999F8E28BF
CE9D74B699CA982479E9D0DD98EAB24D29C981EF0349721D6819549A39413801
F80182D567EE316E2F0AB208068E15693E4C399A381BF9BBA625E597E6E109B8
16F3A84C8EC92F2ADE288821092A421A8D3B907048FE947230810F0777EE2542
29A3485223FEA079B359034F70464DAD2F0E420271A4E0CCF57A0ABBC20AB327
0CA71B292126D395E0D083B19BEC6B48A9DE2BF470C3D01A8C3F52075BD4BE02
A0C518355814478202FD4762EC542F8E7B9B1F7824F0554660CEB83E35635E1E
DF0D03C94C903ECB36B4948ED98B6324E0094EB1DF70863142D4ED3A932D7346
39D69F8F044B6084482D7748C27328AFD24A3A70B99D1F7D32CB984488672254
28B6A9E9DCA2C9FF6A1B311D72413404B3CE5428BDB7FF3C36357D7975184F56
FA6B32AD54C37D0AF7576663AB1397B80D4E998F0B4C4F6D90B483029EF2EDA9
D4C4204C1546EFF3100629453EAE01918D09FE104E626ABA38646F17B6A94CE8
116BC7A8D9C319434CA5B830859B4164DFADF1D7C3ECA5C78D8DEA930EA4AC3F
59DBBF3148C91A2E807FB934E3439D4F67C6DBBA9972854E6E3688E1E0A34B74
482217CFE031CD7B5DFEF727C3EF8DAEEEDA08F4C90289E62FB2AF2357EB2E45
4BC547980FD479101FFEEE477AAC6268DD659E8DD9E244676FD3C6909713B71A
323B211E571BE711D103FA23B5B9AF077D84E2D20FEE805E81D20C03501F0F17
C3B081946CD0FD577F00E50B76CC37CFA97A61B89C25DD43911B28857284BEBB
5BEC61FFE3A14C64BC5425A7A82326617F6F1FA4FEAE56071C9F559F91568179
46369B394A5CE96FB7420FF8AB7C61CB83492FA5AE4A4B0799578594C9EA67E1
E54498AA5CD6ABA34AD3417F04F5D8D664A7EB39D41E2D17643CAEBBCCD9C38C
C5C9541641A09335EFBCE0D276A54253EFD68141807A66F1DFEB4BEA5889FFA3
4D20BD52012206A9F8D3E0F6AFC03FDBBDF3E51506EC6336E249CEFB571AB84C
BDF8E471E3795C04E38A5306BA6D450D72E50910D1AC385BB06CCD4B8E433A32
5A4B7FACC976BB31FCAA1E62DB2C4FE06DDDE7367930E336B49F47DAD91C8735
9A35D80CA2E117E86B52E41E9278046ED923454989E48610ACB3B1663F197117
52659A9D7BFA561C7ACE0771794FC778675F83C5EDCB132AF124C7E6540A140B
E0A268836C73A3C746DC964E482E63C56C0D396515283970FBFF182F9F684FE2
655FD8F5D057D22246DDC3FD11B77552DB4D90ADBAB77BBB1FB1592129DE0AEC
F822D7D36E52BCDABBD560B403A5C56C5E1BE789C3AC049318C7FAC5E5861E42
FD66C3C0F46361078D7E036281682BCE9BBF77983C93ECBBEBA9B359769CA442
87FCA1B98F4EEC4935CC93B08AAADDF355C99816453587310F08C50B9BA3D107
5388A1F3AED2AE32BEFADF0285DA90436D1D7EA85D7B9B6DF2AC4B778CFADFF6
6EEE54D1A1C5DEE3CCA7EFF57A7C2931933CEED90CA26DAAB45E4388EC4DC366
B9E88518D6CF094861D2A59282044CC06E63EFB390A6DF4BA5EAC7CE39E1EE03
3D84099F5BE96612789AF3EDED07266EF10A0FC23EA1EA97040B6BAA63138B1A
A9CB8F5DED781260962D7618EDB200C3ED976033E8967A8CC676E9C11F74BE34
343A7ECE7EE97E8F76F7E95517A6D6163527406EF5A669535CB2BF4031F29046
BB2D0FFFB47A576F5EAB1D00A582965C56F28C00B3BB7BE2CC8D8391F789070D
775EB775437F0CD53DA840BB3575104B63E4B0BF14E3F14B320EDEF65FD4CAF5
8596DA491BBCF3153DED3B718F833D106432DF8DB8B8E6B34D5308C9010A5DD0
7E0E53260BB84BAB3EA748E8D72F75901604F80F4416920D69B4B983DCDB72C5
E9928F01A4A85954FD74578AE336C782CDF81D1EB7EBCEBFBAE7ED8AB4862584
397928F502D65139CCD582CF0723C5262EE54B9D2B8C39614652A8A90E1C3B65
7D26B99DA298FE4B9A7E98848F619C9BB4FF9FD215B72F99506F06355B332689
37D80AFD9F9ACD8172CDC51FCD3A759ACA0F7D4EBB07840840EE42C2D5B8B257
2C6DB3A7657B75F2F0B9730A20112745703E2D0FE709436CA6A5F36F59E64D9E
37C0A23D6D289E1AC1DA273872F5FC5C3DA2B127F078A4D7AB3FD7E124455817
DDC796D54EF26A1FBFD539D3A21B86DD4477DA49213259ABB3FF241424F2BE5F
89151E02FF87E0BEE26E85C0E518D8BE7CC9214B8E9A9EA1DBB49C6C212CCF08
90C0F23E9858947EE344062EBD9C574979087439975EAD4E85CD7BFAD3C91CF1
EFF577843AF1427D06CB2F3BB519ED1591974218C43F0D2038665F9E2E3960B7
FE68CD3CB2DB6B36C7997C6B21EC11CF1DE049541001FFF26D14C255E3AE862C
5A5701292FD2FB3D04523D6E2F3547923BB117718DFB6E6520F0D0B5450C695B
8C9242CC8671B7284CB2E1E9EB097A3DB1B4D5E8EEB93B4DC7E38C0A10474665
54DDCBAF079B92EA494F6FA75A84C5AAFE280284D0823D7C22249A21044BB0E6
4062074ECD17B62E03EDF4945A294BFEFB51F5FD870D9D7230FC91B83C1D85A8
86CDDF326FC90E04362145D6E8630C50594484FB829DA18F5C078F2EE67D2F2B
08DFF39AE2E8C9741FA989AE494C7166F122D2C5F71B97C973B7CE8500E9F87E
D59C30F2E99CC4D34713DAB680598F41955FBDC26A14CF1E73D6BD6B9AAC8D3B
B998F2D0D647356CD236DEAD6561389ED3A6746221B0CF15D6648412B35A6B54
6A0EF5BBB34AA376D9BAF025BFC650C1B74333CE85413D0EBB2F4D082A26A5BC
3C0A25D2B12CB159F140E00E262F1CFECCB2C802FF94CD34DA0CE9B4B3830FB1
DA85B9B670D5169928990A2E9CC869891CA2FFAD9774E6B92549644DAA5FE00C
A5BE4F5FF91A0B6D2FD8F96121D766391EC4ED3E73DADD476B7DAE1A50AFCD98
DB7E27E44D30416088D9BC07D4661D9ECEC0806830ABF14CE55AA3CA2DF66E8E
748B8ED46466F1EEB072AC0674FE6FED231E0DDA59ED7C42BC05EF00E176050A
C4834D893DE42474EA20DB1E25059E84BD137EF65A02CC295B0FFDE4CDE95879
0FE88BDF2519ABAE7F8CC3E6386ED35E04A14F1E3861922645E3A3F43B48A5AA
1999A5EFE192515FCC625C829FF5A7B337AA422F5E920545F9BB269C869A821D
6C4C26DD2AE746EF0F0B4C1E7E9871ADB5270E1CA9BE28225F7A0370D4C52422
E25263EE101C4EC1C7811B05AD42F364844A56BB91EE72FC8ED53CC6954D2BD6
F945D739BE4C61E36143CE890FC0CBF2F610018D678ECF7CEAB18FF5A0E48F76
FDE2463D40A99380D679B3B76D39C664F4992D23E5988B0D1AF33DFB04894016
E852EFD1EFFE586153C0F31ADBDBDE3F73FB49C5EE64D0D02E1504248FAFAC3D
903FD44679BB09C30288139B41B1E90A10139CA3172677250B16535A1F3E5E4B
6F4264DE58896E66051FC677030A121C5A285C47B6129CB5A3998830CE070D21
2F093FC1B44089F603A21F45F60960F134A47226874C737EF6C085634B0A4A66
139420501351F737A73F39D960EC38420BE46E5B09D298E7C16B8E32F01507D4
0141FC52DA1DE718D634AD9C8B00E46EEEF84356759324D2B9A3473C5DA38DE9
E30182B87F91B6A7F7BACF29A93B44C879CCDEDB063F9D2E51E0F1FC9F018FE1
2433D85AF24B55DE3A61C4D0A2DA4FDE933F5F6FDF17E9FA9932BFC46E2D71F6
585EEF5B2E4E89E797A24B799D7F064DD1A817A53677FC9EB8CC3E7F93FE50E8
D50E3191052943FD6C98B573BDD1F6D70349E1F8011599E3F8FDF1D6E80A710E
51E434E85801617C6FD8ACCF1B77B4BFCCDD35CB4C0367F4EB4D8D9DE8284D5E
B4F43E2F8320C2C5A9AE90ECBA7E65D377E91DB69FEF27069235366AD3E126C3
A73CE97F4C90BA00D206FA012C327FD69EE59AF4470A315B1799CDC0539BF90E
512C8FC3BEFE4D1B01D969EA9E3FEF976CD6E0FA4C9ECEC955B265CFD58AB8E5
F7371E479279EE14B689269205C5B506940606CF3E24A1E7EFF3CA96ED30AD6D
E243DE57690C3D69A401AB3315FA49E4BF4ACD4DD1CA39272533E82EFDD508E5
1C2CD286CCC5DE1202C7C7F654521750632EB637F918667E2233A43DF75239EB
F28F3129EB5DEE2FC5BFC331FF709B0FE9B327CBBCE98BCA2C861C6547E50407
1218CEBE6EB5F9BABA4F2E11BCC6FB553A544A567B459E06375102C69F8018DF
BA6A227CFB13E2D74E6A521E01B74F2963E9A0A1C9FD87A88EE6356E3BFABF55
BABC751D2BF85E6712E8EF57914920775906662E4BA68FFA21AD422D34E15578
43CA0568B431101A1194F8AB1EF25E886BFCDFC10F4A5EBD9530816548BC298E
AE4A0B6B52B8B59C644C409B4191B6F4203F52314F2675F02AEB65A72C66E92A
2AC703E15D8D381522C0AC30C165B822A9B8D18CAECC094EDE020756018DCF51
D0701B507519C4270B70D8CE94B436F640C15872F9B5B77892AA3D110E4D6A65
8F0815C61A5127BA25815378683F46E69E54A391A8675977E7DF9C2D4E6FA991
9F029E50CC2F266B31EE9F9F24452D5838905F330CB7E416B8AF836C5AC26AB8
BE2ECC6EA4BDAA08C30995709E225C21D35DB6369167602CBFA8DB2697635925
969002CD1BEE745DA2E56C17EF3F0C05E3847147F86963C37A221C8827195A8A
3D38993E4939AC915BFD9A212F5FF3F826F742B952018986F9FBDDB69C3AC65A
845F7F33C55D4BE60A1817EBBCA7E1538E8087E1BD5C083A320D52953BE65F31
E8339C612A510B59CE48D2EF7061560C4AD258E7DC59694493E3AC878246F37D
6DE89253EBC8830C6B209E818213C4AC4CF1F391AD91D57BE76FB0E2924A1407
E4A949C905E44F54EAED6419F13D59942C8079336A172D4758BEB5D3E786FB93
3CBE4FD2EB53E4E1DAC34E821EB30FD44BC6CB4298242C38F848FC23AEDC9733
52BE6F32E31E25F18301370F8936810B0566B664B042C7AE0D78ACF0A87E5BF6
F9B66E358168B2CEA30DCD940074F3ADB793CDB136161FE2522905E87B8E463F
95D4DAB7E14A3DF7BCCE8141C5A08FCFA2BCE9F2D1B05A7642E75877EB840149
AAB007CD239AE47AD115929427717F219B0A8907F0EC79ADE1B901DAEE87A2F8
39361DAB43DFFF69650F601B24061A9353CFD619FF9626F63275FD09A5B13BB4
8B3379EC4D147C41197E8387FC04DA7BE409524CEF74EA91DC066808A7FD0EF3
957A44E2503EDA67B1C61827479486134E922E560A673BF314D601C66003CD07
55569085AFC8428389A140EB976CCFB8F29E27587E46C413ABE2EFB51AF5913F
53EEB74063162E0BA1E24CEDCA320377D3E11BD374F0B44E132A5C35835B6E2C
D32948EF9DC7931D104C1385709DA882DED6458319F21C2329938396BC074106
CB9CFB9E0A915F8DBC8435F386917AC87A2BA45D857EC30ECA66FB4044F5439E
CDD556B82A0E43418D179AD883C85AC276E1190CEC242E3E1D86E725ADC39E46
BB6C47FE9E17E29F8EA81E870302A00D91434F3B7A05F243176E6EF1082541A1
B9052191EE5C2B8E94A2E02DB65FC769653CA8D1C07A13CB853544AEC7FC35C5
218DE3128AA31952DCE19C55C23FD69BCEA2C661F57B11B8F9E86BFA718D1521
3346E78C701A5E51923D6D937E62FDE3669B214D240538F069A100A542720A86
31DE88116DE775F7ACC2A49EA6C02A24408271A846990669F2AF60AFAB4C16F9
7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195
196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9
1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341
ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563
82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651
E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D
F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A
B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C
98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153
7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB
5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32
8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F
9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F
CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043
AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796ABF9401CA7FD97C
F98B3AEFB15B9733AE8596EB63DFF44C8F1DC65F4E28E12C1F5928573B1CCE63
D64F5D1C62E7828298D090BF224D36344959BAE4CB57E640C16BC3281B96647C
C420EB97A3EFA7DBB811C6C02EFD433AEEEFC0621B335198C3FB7595ED39C873
5D8F0454592A688EE22225703992E04F6EB063AE85D71DE54AA966400CA1D4B3
ECC6682C9D747AF3D27534AD8529DE4A07203E93FF91326AD3168352B243C568
C43990EB5B174AF6498D79904C591BCC41016EC5310C666BBDD17C5C22D5B349
F863143C1C29CC96FC2B3F1CEF02023520F74562B29735A0A8003D3C3D60D3BC
8E37561F9F8AF6BC77147394015EF140B4DFF81ED3C3208DC7554D1BF6F132E5
98C4776C17E4966B6852935276240BA483865F8B835D439FDDC362C4A85940BA
589995C8362BC2463D165FD5AA82392656BC5BB67F51F51C078CACBC96A50DE6
64C9B8EF9B257FDCFACB51A3530E134329D9706EDF1F52AAEE5913D53D235A93
B7BB6F14185FE354F343262864DC4EAE6A69C7271E1E9FF3F7B802FDD64A3FC6
5E41434C6271A70B233D73FE46DE7A02D1A6603E6DEE6F76D9211ED4CD9DF58F
90C5DF69F1B16E26E2FAFD2FD7545CCC6CFC6081F6FA6CC7839F0A32B046DCF9
B28CB0AF85ACBD6531D9F504930D9FB31B2AF54ADE891D283A8CAA0F8D06BFD9
5318192A46118EAD7C368E901B97B1EBFD4F38C31CF4FB6B4BA313A6710FD2C7
90E83DD3D407C29447569F028561268F34037785478C1BE1A6DB1609EACA24C3
E0D799379EF88DE2AE5C6A479CA0E233C6E5015A4D84DDD7C93D66821DE7BFDB
58C07D1CBBF698AD4C04E131FFFAC90206645D366B994BC963D06D3837CC6230
E152F258E5540A5812CBDA11F46A1FEC0447192DE7BE52E397C8AABEEEF0E637
702919F17039579C50F9036022F92259558D4423CDA6FB4C25D105329D24BD73
CD65431928231226F1CAB947EEE73AD08E20791CDD91C049E6CD752DBCF2E421
F0FF6B1DD09083878F406F24C5C141C2CF62052E44B9915C077866F0D28B2877
4C25929DF882AAE4685939B91869EE4D76112DB11E92DE54CD2B8FB5AFAC2018
701B6413769D99DB16DE57D8DA6A59E31A707952D814C4F14FC06B5628FAEF46
D8B9D4D025C574A2F8557BA31F50E313FF34A15F058DE1A3DFBD906052321772
EFCEC38F42139317F55CA58FACBA7EDBC7E72E9FA3AF091534681857BC82BE53
9099C491C1F5C6C6FCC768F85DF3ED615462CCDAFDDFBB7D183434E5FE5010A9
314801960528DAE0A2972D108B2B0F6D14F4B7ACFB2904B7A470A2D2BA963BDB
8CEAAEC2B4D7933BB6680332E00A22B69391A0A7809BAFFCE444D54E4BD2776C
1BEACE2EC557CDB2D8E86FF8866F4279E6F2F6AF916B675A70FAC873982D4CC2
120F7AB416C8A6185D9C0D8A9AA70F5D43219A2DA15835E92BE1FC8DF8BAB353
4F8CA494096BD9D56C35BB8D6B7BB1972AAE9FACEDEFF52AE171848D2E7CD6B7
666BC1C6198F8E8B1F11316F23F526B56B611356A6AC0292384E84D8A79D7DFF
FFA3FD17D244F6C820D82F4BB0178AE94EE9B02BB81983B42BD76F389971C182
F0AE5DEA14A99A4E856189230FAC789905E80FF8228A6B691E4FE6C94E3C011A
B235001733CE38DF7D25EFABD34331968DB1CE6E7DB744A33858FA6A204CCE4B
52CF87CD6CA0BB12883706E0DAF062DB323E09B1CACDD7ED5E126E4A47C0EF89
AC792DB62C4869197A44C95DE6366E028170489FC018F6457629EEC61532AF57
9DA218AF1C875E0619C714C42531D328A83AD86E20A7EA18AFF8C377070FBF81
E217366D3B3A13477DFE9CA9DE3F65510CB289824765001F124CB998740241C0
231CA4B10BDC75FD36F817C2CE13917E28BDD9F173974691567956ECE5EDB294
3080960EC2B89D57EEB4575B997A3CEEA933CF068FF837D0DFC18154360CE0A6
484F6E9EC7079F5A9AF42BD85BAFA9913C8ECE1FB05FAC1C6CB8C0342B659BAA
5163D25BE160773F0C1250E6FADD30C02F4FB5CA63FDEAED57AF2A2B5BCBA45C
7AC3FE181DEF569ABAF226955ED006E2FCF3D3B9090FB9416DC0F1051D621D81
B88428742B88646E05D1B9C5BDD86AF2FC02A9F5C94B787C5EFB85EA5C9C7397
63A3DC779ECC73F75B045E9238C79167D3C41AF9A49C0D365E72B1E73D7CB781
3868DBC7833BC9E06CDB517D10BC3D64D55303E26DE71D13944786A005A1A2AA
764DA981E58276E35BEAD47E07B6FDFA8F32B3E4BDFB2EAC789148593C33C448
1C5610D6FEE80CB504B28BB34555A8475CD66612224E14BE69583F5D8163AD25
F42B7904DFF55EBCF0AC70CA328E04A1D58242CD5F75981F22C84BF6CFBF9873
E68601B1423AF6C0D0B9E47AA073B723ACC6AA9F7F7C0089818E3F825B400E23
A74B9FEF6EF99A590D440CCF9CCAAA2474488E239B497704B894CECE59D473A2
ACFC457A9B8C2D9D264755ED687B7E6623E751E57EF45B440744F19261B9B3A1
0DF52A50F4A0B23C5613A6EAB6EA84E37126BE3E42330BCD02B310AA90A15678
F37AE1E996844D75C6F6DE2A1FF767C6EE5AF67319A2DD16B39CF88D4660F879
59C247545FA575411694008FDDDD8FDB2E7BB601504F1ED212048460F0C05959
99965A967CF280AD6113B235A6E873A8CBF9238B85700A15CE5168AD57AD19A9
DCEBA9E962073F1A6E1E1EC401E730B4AEB6B72F304680AFDAEFBA3A50380B83
BFDFB5BA6EFB97FAFC92119D8EF9926D56D542C8FE98AEF59C4D3A829DD76980
D82C19E8B02E470692B3A5B51CD57DE7D6CB319D95EF85D9061FFAEE9E312209
E08C74251EAE2BBB377DD30E0098EFC93B964D6CD3CB44ABBA2257E47FD5138F
13D8CC7B1410271361B205D3453BDB4C516FECB7EE0516B2AAEA38A32B5A64E6
20CD953D5133D177A90D8AF2EBD91525DC389E65215268A735652ED107B39B01
D99A275E63FE00FE09D082FF625D5505BE1B235EA0A9F62285CB9BAF7A1D7D94
EBC9108A54E12D87F7EB04DD99DD8C33E481BDD09BEFC10E2A33830E664D7CE9
7C44D619B4DCCF265ACC53B51D587A2EDBB3E30A1FBF869F619979A8E4FE7CDA
6FF08B878B5E21214B74B19B63F6F8C19A0ED18F6BB206BCDE12D38A22792029
840AFA856C4646E278063FE41675B9B3C2C7F53B2B66D406C9C80FDE9878FD2D
A71A4833964186905A13ED279A123BCCAED69C68D37E50C8F325F720FD4C2177
2E52816DE404106FD60A76A0996961F9CC15852AE989AA4AE43D11766341A06E
00082400DD88F6DCD2BA48D72BFD23C938315A2230B4673692A36942921DA502
9ED0B24DB3DF8FCA1C0C276B1AF52AE913DC8BD73F0B134FD55AFD60DEB10579
E8C582CA102181B893928140B2669A2F562945E28B8A29545E66ED3855F97269
5021DEBF8B1150D5843226783B79A0589A279A63DD8DCD3076C93A899FEAA123
6FFA7DF7CB27809737567903EDAA222A74FC9ADA41A8F34E8C28DE88DF69DD1C
F33E7CF4549FEAE08BB0A9EF29DCFDC334D6AF381D3573FFD0333B313C467EDA
8EA0AD9296C1533D9CFCB4F2E202BCEC79AF1EFB3C6227A366535653B189D863
788EBC0FEF5598B78545A1AA4E33EF9B0847F2589A682511669CC2785A592F10
5EAB71983B21EDB70F00098C87D28EF09F6108F7603E0BC7A7484619CCF935CF
64D1CC208AA924485BF12D256B5AD9A8C359F31BE4FCEB142C654E69ACF5B8CF
3984650D7EF65FF869F37285EF788B125A9FE4BAB26DE4C91D3275A3843EDE43
FB3B97B88D2AEDD3DFF1F33B470694945CDB280598CBBD8E941D9F8E3B283520
06B8DE093D06F90E9FEF1A559EC861F955C6F90995E189E56371C236BD2F87D8
C370634A9BEA726441E5AC711F7C3766E2C50803CAC082CE5E82885836080C43
3223107577415CD563BA9F8EDDD369D1A8AB304EC2DC2B094D5A5627326C7572
72FE25E4B3456E6651BF3B4E6F9099E2E3764769C73F97C2D9B8199721027850
AB82C89A61E46D7908389ECFF0C8F007E67898A535F8AD18159ECDB576A5BA94
F0E8A48C2E55E7DB6732E431CC66C321064043A5A1F3700DE3BAD76E1F2628A0
BF008F955647B23A1B9F8A9295399E804FA9B6DE12C96638E6D4611ED2FB3012
82649589999F36AD9977C9C989D4FCE8DCBDAEC13DB4C11EAB187D96BF7B0A62
B12966D5F3F5EA6EFEA38BD07532BE51DEA0731CAFFEE571F89407F98C1614FF
B06F58F8F5C98F1715B7FCF2A0838D8973E8205A88C31406D1B9F767FF31414E
EA039819C84C5E6750166B35DEFCFEAE57EA5C7F2BB9E2EDF1D2ADAB19B29834
7DAD4FA701219A6B385F64554C73BF4B40697D88E3B3B9CE8FF7E446AC291D73
0A13F22927BCB9EAC4AA206E55D11298336E57C37939404E06D10D731E89CA16
76927DA573C6572C8BED68C410BCADEA799715879E08F20F5AF6040E4B0D0ACD
14542982F86E65C83DD73DCE4FF89E542ED6E04648C5F1AB8DFA0B8F639A0D39
4B886E004ED9282C074233F2E93E9DEEC504469B8F8C85F7571498C70678C749
D22971E173FF0B56A41973B5B9A9E27B2D687C3AE28FA1AA79285B15B4F4F2A3
76C3951C290C883FAEA2AA65B126514059E2F568FFDD6779A663C29F001B91C4
EE8998F16A856A0636CE03CF9A542BDE60882F9CDC8F26F4310542DBD22DEF65
DE487D2AB02E50FEF3F5C561405CC240CBF1DD5B465C3F26424580EEF2D0672B
85BCA6CF062EBA84AD2C7C12CC0245F89915E17F0696511568B8D579934C0898
3825D947A495D836C18594EE8A32AA849060A3D3261F152EBA489E7780FEAA53
E49F9BB9CCAFA3E784CBFAFA0EC8F47AA3AF87BA6FE9243B8EC08C6CEF649CC8
0D4424E05415D6A481312C35AF3E6FB987A0F894EE43ACC5500B628D656BB513
F11222B09A711F66DCF87F52D27A848FFA9A296EC65AD219AB7FF18FA8A3EFED
FF5EF0474DB0E5FF32B3119679F9C34742D9773F1E55A677D3E09C7C80E8E0BA
C0264E5438700A91BBE4DCC0CC72C0B9E8AA5D77694AFCAED9B41DF32DF06C8C
3B0209EA83AE467ABFCC8901711C78DC559BA34114698B3202B2892844810337
894E809109544818EEE1C5C7B53F17E8FD4836F2852176F9C8BF60BDAEEAA33C
9FEC6B9DA6DE25F5B0B4E41701FE0BC86CFBE4425E8E9F553AE870A648BA2EC4
40D1739A041C28C524F15759A207F4FF7340192A66D3D55AD356184F31647DF9
25BB686197EA784087B23EBF5CDB3B2576D08D00750974CBA901895C17B7AF11
6068491576847CC55F23C9CD8820E302777692A76B3EE65546B203A8870AAA28
F866C2B833985FC1979A3273E387FBC522494B2E6BAC67DA45FAC0B1A572532C
6F269AEC6271EF927D5C78EA39A4E93E81C588E84DC7121366D93516D1A0F8F0
5497E60777E438C7116CB6F5595DD2EADA21E891421FD44632DFB684A6CEA486
492E2C3F2254EA53637BB7048AB415869901B971613D58B7A0A85694442FE3F9
5108A02A2B14546BA44A3155B934C79D4F830C158A8137E799119C6DA3A9FCC1
F01B3B94C466473CBB2D9E46E0B9C78825754E0688E516C940B9F88C92BBD790
7B4C1C65CBA43209F166865745E6B42F08EBA1CF87831BE9CCB7DF44629070B4
6E594BB6BD224F9E5526895EE75ED243AD5FB0BBD2A4A2A1B88B6E358BD57D4A
4111066AF593BBC9286228B47CCE98BC0C39CDFBB7709188AD64ED13986166D1
AACFADA6C218B475C5AD48B40D39854A0C9F8BE77B7B7C4FF5B56DD7E260091A
16FAF478BE03A84033700ED8973CB814D1813E34AD7EC6040A9B18934A19AF29
E72716DED618E1218B1C67266ECCF7D0C88230641612F14E4FE48D0E8F25A85F
8ADD8270A9DB078C19BEB947CE99242735C3F2A47BD358F4E86C71A7B2714E24
B02D162B4E518E9C0A34C48302A1D1C9D5EC4B57F7F1C597DD5393DB114EFE7B
AA593B7EBD63760AA74D57EFA35E00D7DCDEE3F54C8A9CD7409A3B68B07A7891
3BBB60C86F4D4FEED9EE16E38EF3D5CC94BB73DECEFDD71FBBD671FB630A9B48
0342C9ACFACF9F50C41FC2D0E926DA734B2EA82AC436906A2C79CE79E7AA6D35
E67B788746EDE10FF2DC23211351E5EFFA0E6A968CD04EF104604BF4A9C5D84A
94FCE3AF78447B0E15D04DBDB66D2A7F134778DACB8486BA3B186D2B472D0B5F
A047F420B96F12A548B10266BA8396EE6E6B3381AC13F2C81E08505A79B66883
F6E8C39290BE0CD053916688BA2239011246B959A4A386DEA235F8734E488179
ED4D1E247BDACF8B6E4B50D83E8F3A34BCA6BE21C0705625559F6608CBC9A99E
BBCF5E91B1557FB89A7B1D29D4F5E2FAA8FE4F367BAC897F776D8F9BA5678163
5A0098630B9D807E32A0F8AB14903B5ADEB8B715019208F6D68DB1929FC59C28
708B191B8C1DDB0CAE9480B135FF4E764EBE0FDB9CF655B727F6D40760438793
06491AD2AFA36ABC345DBFD73DB6C94FEEA5628DB154931AA5BE1BC06DFABDF1
D4A3279647DC9FC67648A7B2352305B84322154693ADB0CC07AF13272208DA07
84B1EDCAA6D7B92ABE75657954776A7CF8FF138A009D05062F07DB4C25C0D1E1
E23E25A72DC3F6361A8B0F4DA8F79F72FE10B26A1C65D02EEEE26136739E4DF6
0CA9069F6778368CBE34BFF96BF44C14BA62D6AB352319B5B98C12AB011127A6
C4791F7C1E6ECF6D16219F5B68DCB93E1B81659F830F77AD75F89299FAD65AB6
EE2CD955CBE6FB762598D3D6B508E9C99DC6390888DD8FA8C59ADE0A53517685
4482C342237E8A3A5B6418FA172C27647E5E37FBB3556F93CAE4BF68D2336C4C
F36A2A2CC5025EDF22C12D9BC0CE131B6C598409D163FB7E0DC86201E0E93CFD
145E9E6E169D3C576C5DCC33BB50161364DF71BD0173162D4E35A89634CEC92E
A0D28D280165AD5C9E547DAB2534DF2D21DCB1C504BD44D38F756C2D70A30F13
30683764046EFD447084737E352DEFBEF546627A486A4447627BD475996CBD34
683ED5BAD0BC97E7B6DB36BB11B3811F3C26791C845DE549529F4FAD98D80EA2
FEF9AF8AA0F048A1225C8A3D6F6C929FE5FD273647D67C078AB98FAB3D7D8C66
2B022305F18C46295E7617F75959B009853A209B7DC4CDF940A82D5B2637DD08
FAD577BEC0D955D97D540B4F8B6D53B39476A5E547EBD121CF7B541C9F6BDD1D
16424E24AEB69AEFAEF35D77D403FF46E05109992F3D70A274B3658DF687C9A7
75D94F16C6D022A12CE524E8FBF47254C3F32CA2A40713E39F76D208478393DC
691957DBF18E9F4D125DF59B869F62D3785B0722A3BE7D65E4D5502830A5444F
2C89B8E1AA99BB6E4F45E3EE453B30478D8D68074C945DFA041D901A0B8F6195
5A2D0AB2314B3239DE806764902EB1914043E0B46746F60BD61768360CD9EDB2
B0FB8C700D0BF2A06DCE461AF7DB86921242E7C9DF07EBDEFBB74E98941D8A78
74EC75565431EF49B2AFC5DE196186E98468BCB89AC1F4442919113B53D66EA6
ACD4B497F76651DEA467503DACFB0D7283B00C753EDB8838FC8A01340EA78F86
27220D2CC90094CEB6ECF055B5DE1C792D18D0D653F15C9168CD32E51EEA4256
2D7F99D4A51F4A9F9A98CDF16A171689C0D74905519BB0C8190FA1579F0969A5
6EF8B0568BB47E8C862E87F9C8A76D54E9466AF96F0EC3BB262CB66E502E0F04
B4902C9326634866921CEF4B06653280965FFBB862B0A51DCCB1E036C136EEAE
D0643B073C0E353FCEBEB3826742BC894B42FAF21DEB28B0255E927D4C843F03
30D4D018008CAA18EAC18916EF6AC44232987CAEA23CDD2E384F118F70BC75AD
A23FBA60B9007365B3C259E9076570CF7AAFCB8C314FCC6271E2AF448B6F1999
2E3F5AABA7DBD96904904927985971B749E295D76A81C8C9F7714ED4F1476C92
41F4CF03D9955D7A0BA4184B3EF50C9BF811792D663B8E3A84595452E84F8EF2
CCC8FF69AA9B8A13ECC7D7C8088FFA525F6054BA92285FB30EBB981B2E91DDD6
23AEE84BBE57CDD3E237C57BDED2B8F8AF3E784F5D2F97186DF6DFD0D6FB00D9
C1B140937C78C8DF0250FAF2CFED444D581F1DEA9B86E44550D316E7E73FA624
3C54DDCF9F33BDF86788F1BFDE7B782D018CACFC6EC6A13868E80BC577C7F71E
EBF7C4828404D1C1D7B77756F41972C7B9F91ACD2D7342B6B165C32986E23B06
CE2960E564F16B84B6F8D5DE84DFE47EE97C06FE54CDAC70BA26793431563B2D
01EB99E2CB938BD350B51E5F5A7DC210AB777573A552C4C95F75E10948FD4A72
C9D61F006B20789CFAB0F43804826942F26DFF769D3194C7D560B6BCF8911217
F850AA9B853F886202ACFBA635A73EC6D857AA2C7F443DF567C68C5260C19DB7
F6CDC799ED572221C58E80292B563400E41ADD38CB2755A3ED3EA7BF301A1090
5FF1D997BD20A5A9335C4D76F8455EA5406DE2283F529558165F7B2E19948CA7
8B27B4F8C23E7767F41736056B3856695B9436FA5A0D6E16E5FDADE37ED1A2B9
A8901DE9EB7834EE8006AB0C7B5AD5E18FFA2B73243F324E91B042E2CDC2102A
2E7721F69F2CE969C7887F2571BDB268782B8E4C036696F37C222C4836F48760
CC33998A458852C326FBEFAD2C28C225A59E2EB637F74F1B4C74DCBBBA3BC554
8CB3F012C78EB104EF25D3F462CFD386A43BA296605B3FDAC6A18A0655EC8A5B
308D62129104C6E573CF682A2C1B7F8D89649DD7A6EDCB55C0C542BD7A60146A
35E31EF8C2C6BA6D0535F8F95DEA8A862838E4BB910AD2662736192F0662D4DE
B951D02B0EE2B85F55F378C35A439F34C273626D8F6A5D016DFAE266BA2A4D3D
F6748814D4C019CA4B42FAA7C4D25AF397EEEFE113ADC09A6E4F98A8998D922F
1213AE3DF73494F00EEA57F3FBA59D09376CE3BF66C1F819006F66DDF2244AC0
DB165D65F5BB01892A03707848E83FD4709C7AABA44B460C90AF8E22BA6FD3CF
E0B39FD8797B98C59D03D97A4B5899BB04A5C70F6306F6BE94C6BBC9AE1C183D
BB86ACF47AF529AAA242EFD20194C8E66F31BE78C9768D110599EAF50D241364
BC5344EDDEE2B87BEA721354D85F715EF10E73D27205DB98DBC7FEA6FC0CEC31
61C08C0D1A06C46BD10B3817B7C3BCC3375313DAEC68A99DA065C666036051D9
C4E3CF644AB425F3376D614BA4C7757D3968E5922B068B885D884F674021EF40
8342D8768504DF160055948AE3CD2A49C53D2741AEA91523A811DFA269BFDC31
21B6D807F5EF7D6EFC57B27F439B4A7EDB6E5DC10A59CACCD4E9E4F1D8FC780D
AA18013A6729C3D83B3CA193B0826BFF776A75FC54F04706D16E9FFFB3A5C768
7CC2E16072BB39C2C0D69924443F35FDDA907CE9046D43AB2A7848949423DBC4
A815AFE265E0F3CCD54A1D2D5883E9E67A389FF42AD06D790C6F41BE251E7D38
70853D89A7B8A521A42DD8E95A9FCB9D8A38B8A7EA1AD4F6CDF006C2058A8F79
B7D61530F2F5E37CB943A79E55CF3BD17F1A0D97467BE43BE1BE77490FEFA5BB
6DEB417BF65B3F3B2E655F8F25C89E6507EAECC07EBB5FA6FA68F826C4430C92
680238558F7A1B59B414D88B5A146CADB817058C257CACBA38996D913D542E5E
6C00E13A4A306CEC83C1854F5B7520F1E841A5E8F35D0483C5F7CA095EEA1A79
20FD0FDCA98B05005C22CC5CC30F182DE87A88EE77CB4A23B853495F1D624616
3BD72C9C529481408EE85DB3B158A1C8DAE426DBD82B54BFD5217B39B689D25D
CBC56EE3C9D5BEA9968592F4BC1FAE5D2D9DBF9BF770C650EEC84C1A4F4E24DC
A2FC06A0C9C9A44A9DDA98DBF6B86F73B00F56B293152C94F6EA196A063BA997
524DC2D5C51DCFE82839DAA63257FE32E6CDDF3807BD2E0304062D1CAEB49458
20D72888FD9FF8C09775AC7CA443995BEB9A07503365AD53D83C9961C02C79CC
956F487E63CB0F8CCE8BFD3A18530C31A56436FF9E70A76387A1310CC2A5EAB9
5C5FE121D9D5F7F0EDE1F75B2784EE423C32DE81AD6EFCFF327B47B95D1D06F4
AA0FCEA5EE9F23C9E436907D9D7E6071083FBEE1F8DB6AD960E75B165F0E7D55
9933FD85CE79CD107A1A0F3B613037CEC3275B25C89537BB8CFD130EAC45BE8F
DA281F7EDEB7BB50882291D0170DC0A885818D34F7F0ED29D77A80A9741DDF4B
45B77903651F4EF3DF244679AD86388AA68B667C6CBAB3B1E20F0A2ADCA3B3AA
20850FE1BDF35BEA06BDA102DB5353F5D9A19FD956756951E917E6EC155180F5
F53F032F0D2DC6E8E2DDECD0C165476D5BE2B7577DB8E045D4D121FBB83C5A51
E3F64E57062399EC1972208835176F3154E8D92DAE08EA88F16C0891866D2093
4D020CBC36E1DAB6AF91CEFF7374EF62516AEAD29DDD03EFBD29EA2BE29F993B
F31C57BEC3E51F6D68880BC61B41493DC6E211072DD3E132FBA93A698D0FB455
2476A9A0627E8E95A2A25A367A41DAC015574609F78C1CB95D20F8B46B376E33
07B9FA7802F174B846E9D747D9035327A0BACA7785099DE6DDEF22840B5403A3
FD8ECB1326065CA9B2EA7FB75259988C67DCCB845033122E51E9D3B8369813FA
6DA27A8E557129095A3FDAA86E844F626618D0C837A76CF681668564813361AB
D2E2706E27E5F4DA89ABF0862649C236706C3C68D4EADB9AC2DCFBA23B13BB95
7FA1D705AE86D96D4666DFD0CF122FDA85D9D0B69BE0983F595E434E2AE6886F
FD7B8B69C24D00BF0E9F2DC3147EA2FDA4ED3BFFA7CB9E3E884CEAB3E75519BA
C8E37AD167733EDE9524B3E650A6A674025EEE9FB8A4BA33AE9E045004D985C3
334FE0D9C506B3F5EFAC679959DEE0ECE66B5C7656F1FCE79B4713923C07007F
DCC189C885FA74152140AFAD8DB30E1833EC865226D06C44324EC611FF2C7F3D
44A86EA94FF7E5650EA0B563E83C4244BC76B5B0AA8C6E873550A970DC9B47E7
A3A3067BCBA0D08C98BE2739E99426598541A1028C24E18E7771D7B18D420830
47D36E0DA51E2157A9796A67A3177B3E7D9E2C25CE1863FEF57DA51CFB086388
162BB3AF0142510DC00FED403047BDE8A2EFBEDFCA8FF85538E104E25C4C6048
B9184451A861110140AA45DDF89ED98EC1AF204333450BF3BF0D527BE2C74284
0CE7C7A83DD51A68B09F804A777913AAA9D0196DCA5B2FD72824B83A344E84B6
03738B27E0B350ABE938B4872C267AC3F624C431227E3DD02C8BE9523DAB9381
EDE2BA731B0B7A3956A623B05781DE4F8CB815D9EEB41920EA3236742E741514
8211EBBF3DC161BE610E7AB2539B828AEDFA21909A4D5388C00ECA40954E67EC
6A50BC7EB73B29FC2A1358B6EA3161D97CACFCF33C3F378BB34E5CCB843CAF0E
7EE9D2930D002CC1167E8585477215123FBE652FDE3F54E361E4A4E7FBD0B8A1
30E6DEE453ED16C29663BBB616AB2E226E00BE0B939F568100B47A7A9EE8F246
E9D7EF0EA720D876F5D5A2FDA8A61ADE119E0707075925E445C633CB298B227F
169D71EA4B7695C40D1A4EC67E49484CF8A832D74E487596A6E1B0176A66D920
949430E3D3D51D3CBB7EAEDD4B71854D090C4528228D530DCE2265ED88D02764
0C6999E09353E184FB449C095BD9FE5212E25CA63700ABE1B8600066BB849C5C
76F5F2519DBAE362EFDB471FB36C10803FBCB1A5BE29953CBE4D856AB6298F42
7C6345EF2020AB74B2907D6A95B63E2494C702836AEDD492960C9B1B45657246
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
TeXDict begin 40258431 52099146 1000 600 600 (usermanual.dvi)
@start /Fa 138[39 5[39 2[39 4[39 3[39 39 35[39 1[39 16[39
43[{}9 74.7198 /CMTT9 rf /Fb 197[21 58[{}1 74.7198 /CMMI9
rf /Fc 133[34 41 41 55 41 43 30 30 30 41 43 38 43 64
21 41 1[21 43 38 23 34 43 34 43 38 21 12[43 6[48 4[60
3[55 1[58 1[36 1[60 3[38 38 38 38 38 38 38 38 38 38 38
21 26 2[38 29[43 45 11[{}49 74.7198 /CMR9 rf /Fd 134[41
3[43 30 1[30 1[43 38 43 64 21 2[21 1[38 1[34 1[34 15[43
6[48 8[55 67[{}16 74.7198 /CMSL9 rf /Fe 206[33 49[{}1
58.1154 /CMR7 rf /Ff 168[85 2[60 12[65 3[60 1[62 65[{}5
83.022 /CMR10 rf /Fg 133[37 44 42 2[49 30 37 38 1[46
46 51 74 23 2[28 46 42 28 42 46 42 1[46 97[{}20 90.9091
/CMTI10 rf /Fh 133[55 65 65 89 65 68 48 48 50 65 68 61
68 102 34 65 1[34 68 61 37 56 68 55 68 60 34 45[61 61
61 1[34 33[68 72 11[{}32 109.091 /CMBX12 rf /Fi 135[48
48 48 48 48 48 48 1[48 48 48 48 48 2[48 48 48 48 48 48
48 48 48 55[48 48 40[{}23 90.9091 /CMSLTT10 rf /Fj 134[48
48 66 48 51 35 36 39 1[51 45 51 76 25 48 1[25 51 45 28
42 51 40 51 44 50[25 46[{}24 90.9091 /CMB10 rf /Fk 129[48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 2[48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48
48 33[{}89 90.9091 /CMTT10 rf /Fl 133[40 48 48 66 48
51 35 36 36 48 51 45 51 76 25 48 1[25 51 45 28 40 51
40 51 45 7[68 1[93 68 68 66 51 67 1[62 71 68 83 57 2[33
68 1[59 62 69 66 64 68 6[25 6[45 45 45 2[25 30 25 31[51
53 11[{}54 90.9091 /CMSL10 rf /Fm 242[91 13[{}1 90.9091
/CMSY10 rf /Fn 197[25 58[{}1 90.9091 /CMMI10 rf /Fo 193[91
1[91 1[33 58[{}3 119.552 /CMMI12 rf /Fp 133[72 3[85 90
63 64 66 1[90 81 90 134 45 85 1[45 90 81 49 74 90 72
90 78 8[122 167 122 1[112 90 2[110 121 126 153 97 2[60
1[127 1[106 124 117 1[122 7[81 81 81 81 81 81 81 81 81
81 48[{}47 143.462 /CMBX12 rf /Fq 133[43 3[51 54 38 38
38 1[54 49 54 81 27 51 1[27 54 49 1[43 54 43 54 49 8[73
100 73 2[54 2[66 76 73 89 61 2[35 1[77 1[66 75 70 1[73
7[49 49 49 49 49 49 49 49 49 49 48[{}45 99.6264 /CMR12
rf /Fr 132[67 60 71 71 97 71 75 52 53 55 1[75 67 75 112
37 71 1[37 75 67 1[61 75 60 75 65 37 6[102 102 139 102
103 94 75 100 101 92 101 105 128 81 105 1[50 105 106
85 88 103 97 96 102 3[105 3[67 67 67 67 67 67 67 67 67
67 67 37 45 1[105 67 29[75 12[{}66 119.552 /CMBX12 rf
/Fs 131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 51
76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 1[25 1[68
68 93 68 68 66 51 67 71 62 71 68 83 57 71 1[33 68 71
59 62 69 66 64 68 1[43 3[25 25 45 45 45 45 45 45 45 45
45 45 45 25 30 25 1[45 35 35 25 1[76 3[25 18[76 51 51
53 11[{}82 90.9091 /CMR10 rf /Ft 166[146 6[144 2[145
2[116 152 3[152 1[127 2[138 11[97 4[97 2[54 46[{}11 172.154
/CMBX12 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%BeginPaperSize: Letter
/setpagedevice where
{ pop << /PageSize [612 792] >> setpagedevice }
{ /letter where { pop letter } if }
ifelse
%%EndPaperSize
end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 150 1317 a Ft(BERKELEY)65 b(LOGO)h(6.1)p
150 1383 3600 34 v 2648 1480 a Fs(Berk)m(eley)32 b(Logo)g(User)e(Man)m
(ual)150 5068 y Fr(Brian)45 b(Harv)l(ey)p 150 5141 3600
17 v eop end
%%Page: -1 2
TeXDict begin -1 1 bop 3723 -116 a Fq(i)150 299 y Fp(Short)53
b(Con)l(ten)l(ts)150 548 y Fq(1)146 b(In)m(tro)s(duction)13
b Fo(:)20 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)26 b Fq(1)150 697 y(2)146
b(Data)32 b(Structure)h(Primitiv)m(es)13 b Fo(:)22 b(:)d(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)26 b Fq(9)150 847 y(3)146
b(Comm)m(unication)23 b Fo(:)e(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36 b Fq(19)150 996
y(4)146 b(Arithmetic)24 b Fo(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)37
b Fq(29)150 1146 y(5)146 b(Logical)32 b(Op)s(erations)37
b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
h(:)48 b Fq(35)150 1295 y(6)146 b(Graphics)13 b Fo(:)20
b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)25 b Fq(37)150 1445 y(7)146
b(W)-8 b(orkspace)34 b(Managemen)m(t)25 b Fo(:)c(:)e(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)37 b Fq(49)150 1594 y(8)146
b(Con)m(trol)33 b(Structures)16 b Fo(:)21 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28 b Fq(67)150
1743 y(9)146 b(Macros)24 b Fo(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36
b Fq(83)150 1893 y(10)97 b(Error)33 b(Pro)s(cessing)f
Fo(:)20 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)44 b Fq(87)150 2042 y(11)97 b(Sp)s(ecial)33
b(V)-8 b(ariables)25 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)37 b Fq(89)150 2192
y(12)97 b(In)m(ternationalization)19 b Fo(:)i(:)e(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32 b Fq(93)150
2341 y(INDEX)j Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
47 b Fq(97)p eop end
%%Page: -2 3
TeXDict begin -2 2 bop eop end
%%Page: -3 4
TeXDict begin -3 3 bop 3674 -116 a Fs(iii)150 299 y Fp(T)-13
b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fr(1)135 b(In)l(tro)t
(duction)31 b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)44 b Fr(1)275 786 y Fs(1.1)92
b(Ov)m(erview)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)29 b Fs(1)275 896 y(1.2)92
b(Getter/Setter)32 b(V)-8 b(ariable)32 b(Syn)m(tax)23
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
36 b Fs(2)275 1005 y(1.3)92 b(En)m(tering)30 b(and)g(Lea)m(ving)i(Logo)
25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)38 b Fs(5)275 1115 y(1.4)92 b(T)-8 b(ok)m(enization)8
b Fn(:)18 b(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)22 b Fs(6)150 1366 y Fr(2)135 b(Data)46 b(Structure)e(Primitiv)l(es)
24 b Fo(:)e(:)d(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)37 b Fr(9)275 1503 y Fs(2.1)92
b(Constructors)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)40 b Fs(9)399 1612 y(w)m(ord)24 b
Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b Fs(9)399
1722 y(list)20 b Fn(:)d(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)34
b Fs(9)399 1831 y(sen)m(tence)17 b Fn(:)f(:)g(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)30
b Fs(9)399 1941 y(fput)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)33
b Fs(9)399 2051 y(lput)21 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
34 b Fs(9)399 2160 y(arra)m(y)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
31 b Fs(9)399 2270 y(mdarra)m(y)13 b Fn(:)i(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26
b Fs(10)399 2379 y(listtoarra)m(y)15 b Fn(:)j(:)d(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28
b Fs(10)399 2489 y(arra)m(ytolist)15 b Fn(:)j(:)d(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28
b Fs(10)399 2599 y(com)m(bine)17 b Fn(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)30
b Fs(10)399 2708 y(rev)m(erse)23 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)36
b Fs(10)399 2818 y(gensym)12 b Fn(:)j(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)24
b Fs(10)275 2927 y(2.2)92 b(Data)32 b(Selectors)12 b
Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)25
b Fs(10)399 3037 y(\014rst)20 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
33 b Fs(10)399 3147 y(\014rsts)22 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
35 b Fs(11)399 3256 y(last)29 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
41 b Fs(11)399 3366 y(but\014rst)13 b Fn(:)h(:)h(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)26
b Fs(11)399 3475 y(but\014rsts)15 b Fn(:)f(:)h(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28
b Fs(11)399 3585 y(butlast)20 b Fn(:)c(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
b Fs(12)399 3694 y(item)10 b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)23
b Fs(12)399 3804 y(mditem)28 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)41
b Fs(12)399 3914 y(pic)m(k)18 b Fn(:)e(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)31
b Fs(12)399 4023 y(remo)m(v)m(e)19 b Fn(:)e(:)f(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32
b Fs(12)399 4133 y(remdup)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41
b Fs(12)399 4242 y(quoted)25 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
b Fs(12)275 4352 y(2.3)92 b(Data)32 b(Mutators)24 b Fn(:)16
b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)37 b
Fs(12)399 4462 y(setitem)15 b Fn(:)i(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28
b Fs(12)399 4571 y(mdsetitem)13 b Fn(:)j(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26 b Fs(13)399
4681 y(.set\014rst)12 b Fn(:)k(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)25 b Fs(13)399
4790 y(.setbf)12 b Fn(:)j(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)24
b Fs(13)399 4900 y(.setitem)f Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36
b Fs(13)399 5010 y(push)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(13)399 5119 y(p)s(op)23 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
b Fs(13)399 5229 y(queue)24 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
b Fs(14)399 5338 y(dequeue)19 b Fn(:)d(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)32
b Fs(14)p eop end
%%Page: -4 5
TeXDict begin -4 4 bop 150 -116 a Fs(iv)2568 b(BERKELEY)30
b(LOGO)g(6.1)275 83 y(2.4)92 b(Predicates)14 b Fn(:)i(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27
b Fs(14)399 193 y(w)m(ordp)17 b Fn(:)d(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30
b Fs(14)399 302 y(listp)13 b Fn(:)i(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26
b Fs(14)399 412 y(arra)m(yp)10 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
b Fs(14)399 521 y(empt)m(yp)10 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)23
b Fs(14)399 631 y(equalp)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22
b Fs(14)399 741 y(notequalp)j Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fs(15)399
850 y(b)s(eforep)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26 b Fs(15)399
960 y(.eq)c Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)35
b Fs(15)399 1069 y(mem)m(b)s(erp)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)28
b Fs(15)399 1179 y(substringp)12 b Fn(:)i(:)i(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)25 b Fs(16)399
1289 y(n)m(um)m(b)s(erp)e Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fs(16)399
1398 y(vbarredp)22 b Fn(:)14 b(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)35 b Fs(16)275
1508 y(2.5)92 b(Queries)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fs(16)399
1617 y(coun)m(t)9 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22
b Fs(16)399 1727 y(ascii)13 b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26
b Fs(16)399 1836 y(ra)m(w)m(ascii)d Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36
b Fs(16)399 1946 y(c)m(har)14 b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27
b Fs(17)399 2056 y(mem)m(b)s(er)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
b Fs(17)399 2165 y(lo)m(w)m(ercase)15 b Fn(:)j(:)d(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28
b Fs(17)399 2275 y(upp)s(ercase)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)37
b Fs(17)399 2384 y(standout)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(17)399 2494 y(parse)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28
b Fs(18)399 2604 y(runparse)e Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fs(18)150
2854 y Fr(3)135 b(Comm)l(unication)35 b Fo(:)20 b(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)47 b Fr(19)275 2991 y
Fs(3.1)92 b(T)-8 b(ransmitters)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fs(19)399 3101 y(prin)m(t)22
b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)35 b Fs(19)399 3210
y(t)m(yp)s(e)12 b Fn(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25
b Fs(19)399 3320 y(sho)m(w)d Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)35
b Fs(20)275 3430 y(3.2)92 b(Receiv)m(ers)14 b Fn(:)i(:)g(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27
b Fs(20)399 3539 y(readlist)13 b Fn(:)j(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)26
b Fs(20)399 3649 y(readw)m(ord)17 b Fn(:)e(:)g(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30
b Fs(20)399 3758 y(readra)m(wline)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)24 b Fs(20)399
3868 y(readc)m(har)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 b Fs(21)399
3978 y(readc)m(hars)11 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Fs(21)399
4087 y(shell)10 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
b Fs(21)275 4197 y(3.3)92 b(File)31 b(Access)19 b Fn(:)d(:)g(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)32 b
Fs(22)399 4306 y(setpre\014x)11 b Fn(:)k(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)24
b Fs(22)399 4416 y(pre\014x)i Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
b Fs(22)399 4526 y(op)s(enread)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32
b Fs(22)399 4635 y(op)s(en)m(write)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(22)399 4745 y(op)s(enapp)s(end)21 b Fn(:)13 b(:)i(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34 b Fs(23)399
4854 y(op)s(en)m(up)s(date)9 b Fn(:)15 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fs(23)399
4964 y(close)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(23)399 5073 y(allop)s(en)17 b Fn(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)30
b Fs(23)399 5183 y(closeall)18 b Fn(:)g(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31
b Fs(23)399 5293 y(erase\014le)23 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36
b Fs(23)p eop end
%%Page: -5 6
TeXDict begin -5 5 bop 3702 -116 a Fs(v)399 83 y(dribble)20
b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fs(24)399 193 y(no)s(dribble)12
b Fn(:)i(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)25 b Fs(24)399 302 y(setread)18 b Fn(:)e(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)31 b Fs(24)399 412 y(set)m(write)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)37
b Fs(24)399 521 y(reader)15 b Fn(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28
b Fs(25)399 631 y(writer)20 b Fn(:)c(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
b Fs(25)399 741 y(setreadp)s(os)11 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24
b Fs(25)399 850 y(set)m(writep)s(os)17 b Fn(:)g(:)e(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30 b Fs(25)399
960 y(readp)s(os)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fs(25)399
1069 y(writep)s(os)11 b Fn(:)k(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)24 b Fs(25)399
1179 y(eofp)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)30
b Fs(25)399 1289 y(\014lep)16 b Fn(:)f(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(26)275 1398 y(3.4)92 b(T)-8 b(erminal)30 b(Access)17
b Fn(:)f(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30
b Fs(26)399 1508 y(k)m(eyp)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
b Fs(26)399 1617 y(cleartext)29 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
b Fs(26)399 1727 y(setcursor)22 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35
b Fs(26)399 1836 y(cursor)18 b Fn(:)c(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31
b Fs(26)399 1946 y(setmargins)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)40 b Fs(26)399
2056 y(settextcolor)9 b Fn(:)18 b(:)e(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fs(27)399 2165
y(increasefon)m(t)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fs(27)399 2275 y(settextsize)14
b Fn(:)k(:)d(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)27 b Fs(27)399 2384 y(textsize)9 b Fn(:)17
b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)22 b Fs(27)399 2494 y(setfon)m(t)27
b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fs(28)399 2604 y(fon)m(t)21
b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34 b Fs(28)150
2854 y Fr(4)135 b(Arithmetic)19 b Fo(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)32 b Fr(29)275
2991 y Fs(4.1)92 b(Numeric)30 b(Op)s(erations)19 b Fn(:)c(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)32 b Fs(29)399 3101 y(sum)18 b Fn(:)c(:)i(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)31 b Fs(29)399 3210 y(di\013erence)12 b Fn(:)k(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)25
b Fs(29)399 3320 y(min)m(us)d Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)35
b Fs(29)399 3430 y(pro)s(duct)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37
b Fs(29)399 3539 y(quotien)m(t)16 b Fn(:)g(:)g(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(29)399 3649 y(remainder)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fs(30)399
3758 y(mo)s(dulo)12 b Fn(:)j(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fs(30)399
3868 y(in)m(t)g Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
b Fs(30)399 3978 y(round)23 b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36
b Fs(30)399 4087 y(sqrt)21 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)34
b Fs(30)399 4197 y(p)s(o)m(w)m(er)22 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)35
b Fs(30)399 4306 y(exp)9 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22
b Fs(30)399 4416 y(log10)16 b Fn(:)h(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(30)399 4526 y(ln)21 b Fn(:)15 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)34 b Fs(30)399 4635 y(sin)23 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)36 b Fs(31)399 4745 y(radsin)18 b Fn(:)c(:)i(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31
b Fs(31)399 4854 y(cos)18 b Fn(:)e(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31
b Fs(31)399 4964 y(radcos)13 b Fn(:)i(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)26
b Fs(31)399 5073 y(arctan)13 b Fn(:)j(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26
b Fs(31)399 5183 y(radarctan)i Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41 b Fs(31)399
5293 y(iseq)25 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)37
b Fs(31)p eop end
%%Page: -6 7
TeXDict begin -6 6 bop 150 -116 a Fs(vi)2568 b(BERKELEY)30
b(LOGO)g(6.1)399 83 y(rseq)19 b Fn(:)c(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32
b Fs(31)275 193 y(4.2)92 b(Numeric)30 b(Predicates)12
b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)25 b Fs(32)399
302 y(lessp)g Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)38 b Fs(32)399
412 y(greaterp)15 b Fn(:)i(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28 b Fs(32)399
521 y(lessequalp)21 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)34 b Fs(32)399 631
y(greaterequalp)12 b Fn(:)k(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)24 b Fs(32)275 741 y(4.3)92 b(Random)30
b(Num)m(b)s(ers)20 b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)33
b Fs(32)399 850 y(random)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41
b Fs(32)399 960 y(rerandom)10 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
b Fs(33)275 1069 y(4.4)92 b(Prin)m(t)30 b(F)-8 b(ormatting)19
b Fn(:)f(:)d(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fs(33)399
1179 y(form)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
b Fs(33)275 1289 y(4.5)92 b(Bit)m(wise)32 b(Op)s(erations)22
b Fn(:)15 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35 b Fs(33)399
1398 y(bitand)10 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)23 b
Fs(33)399 1508 y(bitor)g Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36
b Fs(33)399 1617 y(bitxor)19 b Fn(:)d(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32
b Fs(33)399 1727 y(bitnot)18 b Fn(:)e(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)31
b Fs(34)399 1836 y(ashift)9 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22
b Fs(34)399 1946 y(lshift)d Fn(:)d(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32
b Fs(34)150 2197 y Fr(5)135 b(Logical)46 b(Op)t(erations)24
b Fo(:)c(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)37 b
Fr(35)275 2334 y Fs(and)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)40 b Fs(35)399 2443 y(or)18 b Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)31 b Fs(35)399 2553 y(not)13 b Fn(:)j(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)26 b Fs(35)150 2804 y Fr(6)135 b(Graphics)26
b Fo(:)19 b(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)39 b Fr(37)275 2941 y Fs(6.1)92
b(T)-8 b(urtle)30 b(Motion)20 b Fn(:)c(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)33 b Fs(37)399 3050 y(forw)m(ard)28
b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)41 b Fs(37)399 3160 y(bac)m(k)29
b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)41 b Fs(37)399 3269
y(left)14 b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27
b Fs(38)399 3379 y(righ)m(t)e Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37
b Fs(38)399 3489 y(setp)s(os)16 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29
b Fs(38)399 3598 y(setxy)15 b Fn(:)h(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28
b Fs(38)399 3708 y(setx)19 b Fn(:)d(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32
b Fs(38)399 3817 y(set)m(y)20 b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
b Fs(38)399 3927 y(setheading)10 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23 b
Fs(38)399 4037 y(home)13 b Fn(:)j(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)26
b Fs(38)399 4146 y(arc)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)31
b Fs(39)275 4256 y(6.2)92 b(T)-8 b(urtle)30 b(Motion)i(Queries)17
b Fn(:)e(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fs(39)399 4365 y(p)s(os)12
b Fn(:)i(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)24 b Fs(39)399
4475 y(xcor)14 b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27
b Fs(39)399 4584 y(ycor)14 b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27
b Fs(39)399 4694 y(heading)f Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39
b Fs(39)399 4804 y(to)m(w)m(ards)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
b Fs(39)399 4913 y(scrunc)m(h)9 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22
b Fs(39)275 5023 y(6.3)92 b(T)-8 b(urtle)30 b(and)g(Windo)m(w)g(Con)m
(trol)e Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)40 b Fs(39)399 5132 y(sho)m(wturtle)11 b
Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)24 b Fs(39)399 5242 y(hideturtle)i Fn(:)15
b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)38 b Fs(40)p eop end
%%Page: -7 8
TeXDict begin -7 7 bop 3652 -116 a Fs(vii)399 83 y(clean)18
b Fn(:)f(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)31 b Fs(40)399 193 y(clearscreen)c
Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)38 b Fs(40)399 302 y(wrap)20 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)33 b Fs(40)399 412 y(windo)m(w)9 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22
b Fs(40)399 521 y(fence)d Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)32
b Fs(40)399 631 y(\014ll)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)41
b Fs(41)399 741 y(\014lled)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36
b Fs(41)399 850 y(lab)s(el)25 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
b Fs(41)399 960 y(setlab)s(elheigh)m(t)30 b Fn(:)15 b(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41 b Fs(41)399
1069 y(textscreen)19 b Fn(:)e(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)32 b Fs(41)399 1179
y(fullscreen)14 b Fn(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27 b Fs(41)399 1289 y(splitscreen)12
b Fn(:)k(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)25 b Fs(42)399 1398 y(setscrunc)m(h)14 b
Fn(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)27 b Fs(42)399 1508 y(refresh)f Fn(:)15 b(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39
b Fs(42)399 1617 y(norefresh)19 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)32
b Fs(42)275 1727 y(6.4)92 b(T)-8 b(urtle)30 b(and)g(Windo)m(w)g
(Queries)e Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)41 b Fs(42)399 1836 y(sho)m(wnp)12 b Fn(:)i(:)h(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)24 b Fs(43)399 1946 y(screenmo)s(de)11 b Fn(:)16
b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)24 b Fs(43)399 2056 y(turtlemo)s(de)e Fn(:)15 b(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)35
b Fs(43)399 2165 y(lab)s(elsize)14 b Fn(:)j(:)e(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27
b Fs(43)275 2275 y(6.5)92 b(P)m(en)30 b(and)g(Bac)m(kground)h(Con)m
(trol)22 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)35 b Fs(43)399 2384 y(p)s(endo)m(wn)23 b Fn(:)14
b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)36 b Fs(43)399 2494 y(p)s(en)m(up)18 b Fn(:)c(:)h(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)31 b Fs(43)399 2604 y(p)s(enpain)m(t)25 b Fn(:)16
b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)39 b Fs(44)399 2713 y(p)s(enerase)9 b Fn(:)15
b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)22 b Fs(44)399 2823 y(p)s(enrev)m(erse)11
b Fn(:)k(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)24 b Fs(44)399 2932 y(setp)s(encolor)16 b
Fn(:)h(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)29 b Fs(44)399 3042 y(setpalette)h Fn(:)16 b(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41
b Fs(44)399 3152 y(setp)s(ensize)21 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)34
b Fs(44)399 3261 y(setp)s(enpattern)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fs(45)399
3371 y(setp)s(en)12 b Fn(:)j(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)24 b
Fs(45)399 3480 y(setbac)m(kground)15 b Fn(:)h(:)g(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28 b Fs(45)275 3590
y(6.6)92 b(P)m(en)30 b(Queries)20 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)33 b Fs(45)399 3699
y(p)s(endo)m(wnp)18 b Fn(:)c(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)31 b Fs(45)399 3809 y(p)s(enmo)s(de)21
b Fn(:)14 b(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)34 b Fs(45)399 3919 y(p)s(encolor)12
b Fn(:)j(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)25 b Fs(45)399 4028 y(palette)e Fn(:)17
b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)36 b Fs(46)399 4138 y(p)s(ensize)17
b Fn(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)30 b Fs(46)399 4247 y(p)s(en)c
Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 b Fs(46)399
4357 y(bac)m(kground)10 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)23 b Fs(46)275 4467
y(6.7)92 b(Sa)m(ving)31 b(and)e(Loading)i(Pictures)11
b Fn(:)k(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)23 b Fs(46)399 4576 y(sa)m(v)m(epict)f Fn(:)17 b(:)f(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)35
b Fs(46)399 4686 y(loadpict)21 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34
b Fs(46)399 4795 y(epspict)20 b Fn(:)c(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
b Fs(47)275 4905 y(6.8)92 b(Mouse)30 b(Queries)e Fn(:)16
b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b
Fs(47)399 5015 y(mousep)s(os)9 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)22
b Fs(47)399 5124 y(clic)m(kp)s(os)j Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)37
b Fs(47)399 5234 y(buttonp)21 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34
b Fs(47)p eop end
%%Page: -8 9
TeXDict begin -8 8 bop 150 -116 a Fs(viii)2518 b(BERKELEY)30
b(LOGO)g(6.1)399 83 y(button)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39
b Fs(47)150 334 y Fr(7)135 b(W)-11 b(orkspace)45 b(Managemen)l(t)15
b Fo(:)21 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)28 b Fr(49)275 471 y Fs(7.1)92
b(Pro)s(cedure)29 b(De\014nition)8 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)21 b Fs(49)399 580 y(to)d Fn(:)e(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
31 b Fs(49)399 690 y(de\014ne)23 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36
b Fs(50)399 800 y(text)19 b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)32
b Fs(51)399 909 y(fulltext)16 b Fn(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(51)399 1019 y(cop)m(ydef)9 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22
b Fs(51)275 1128 y(7.2)92 b(V)-8 b(ariable)31 b(De\014nition)26
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fs(51)399
1238 y(mak)m(e)16 b Fn(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(51)399 1347 y(name)13 b Fn(:)j(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)26
b Fs(51)399 1457 y(lo)s(cal)i Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
b Fs(52)399 1567 y(lo)s(calmak)m(e)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
b Fs(52)399 1676 y(thing)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(52)399 1786 y(global)21 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34
b Fs(52)275 1895 y(7.3)92 b(Prop)s(ert)m(y)30 b(Lists)14
b Fn(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27
b Fs(53)399 2005 y(pprop)c Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36
b Fs(53)399 2115 y(gprop)25 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(53)399 2224 y(remprop)13 b Fn(:)h(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26
b Fs(53)399 2334 y(plist)13 b Fn(:)i(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26
b Fs(53)275 2443 y(7.4)92 b(W)-8 b(orkspace)31 b(Predicates)e
Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b Fs(53)399 2553 y(pro)s(cedurep)19
b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)32 b Fs(53)399 2663 y(primitiv)m(ep)15 b Fn(:)h(:)g(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)28
b Fs(53)399 2772 y(de\014nedp)13 b Fn(:)h(:)h(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)26
b Fs(54)399 2882 y(namep)i Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)41
b Fs(54)399 2991 y(plistp)28 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41
b Fs(54)275 3101 y(7.5)92 b(W)-8 b(orkspace)31 b(Queries)23
b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fs(54)399
3210 y(con)m(ten)m(ts)15 b Fn(:)j(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28 b Fs(54)399
3320 y(buried)13 b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26 b Fs(54)399
3430 y(traced)15 b Fn(:)i(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)28 b Fs(54)399
3539 y(stepp)s(ed)e Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40 b Fs(54)399
3649 y(pro)s(cedures)25 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fs(55)399 3758
y(primitiv)m(es)23 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fs(55)399 3868
y(names)15 b Fn(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28 b Fs(55)399
3978 y(plists)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28
b Fs(55)399 4087 y(namelist)13 b Fn(:)j(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26
b Fs(55)399 4197 y(pllist)20 b Fn(:)c(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
b Fs(55)399 4306 y(arit)m(y)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(55)399 4416 y(no)s(des)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40
b Fs(56)275 4526 y(7.6)92 b(W)-8 b(orkspace)31 b(Insp)s(ection)d
Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fs(56)399 4635 y(p)s(o)9
b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fs(56)399
4745 y(p)s(oall)g Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)35
b Fs(56)399 4854 y(p)s(ops)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40
b Fs(56)399 4964 y(p)s(ons)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40
b Fs(56)399 5073 y(p)s(opls)14 b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27
b Fs(57)399 5183 y(p)s(on)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
b Fs(57)399 5293 y(p)s(opl)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25
b Fs(57)p eop end
%%Page: -9 10
TeXDict begin -9 9 bop 3677 -116 a Fs(ix)399 83 y(p)s(ot)12
b Fn(:)j(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fs(57)399
193 y(p)s(ots)14 b Fn(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27
b Fs(57)275 302 y(7.7)92 b(W)-8 b(orkspace)31 b(Con)m(trol)22
b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)35 b Fs(57)399
412 y(erase)20 b Fn(:)c(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33 b Fs(57)399
521 y(erall)13 b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26
b Fs(58)399 631 y(erps)18 b Fn(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31
b Fs(58)399 741 y(erns)18 b Fn(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31
b Fs(58)399 850 y(erpls)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
b Fs(58)399 960 y(ern)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)28
b Fs(58)399 1069 y(erpl)23 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36
b Fs(58)399 1179 y(bury)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
b Fs(59)399 1289 y(bury)m(all)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
b Fs(59)399 1398 y(buryname)22 b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)35 b Fs(59)399
1508 y(un)m(bury)18 b Fn(:)13 b(:)j(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)31 b Fs(59)399
1617 y(un)m(bury)m(all)12 b Fn(:)j(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)25 b Fs(59)399
1727 y(un)m(buryname)13 b Fn(:)h(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)26 b Fs(59)399 1836 y(buriedp)g
Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)41 b Fs(60)399 1946 y(trace)20
b Fn(:)d(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fs(60)399 2056 y(un)m(trace)12
b Fn(:)k(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)25 b Fs(60)399 2165 y(tracedp)10
b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)23 b Fs(60)399 2275 y(step)18
b Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31 b Fs(60)399 2384
y(unstep)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41 b Fs(60)399 2494
y(stepp)s(edp)22 b Fn(:)14 b(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)35 b Fs(61)399 2604
y(edit)23 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36
b Fs(61)399 2713 y(edit\014le)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39
b Fs(61)399 2823 y(edall)27 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39
b Fs(62)399 2932 y(edps)10 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
b Fs(62)399 3042 y(edns)10 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23
b Fs(62)399 3152 y(edpls)18 b Fn(:)d(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31
b Fs(62)399 3261 y(edn)d Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)41
b Fs(62)399 3371 y(edpl)16 b Fn(:)f(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(62)399 3480 y(sa)m(v)m(e)17 b Fn(:)g(:)e(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
30 b Fs(62)399 3590 y(sa)m(v)m(el)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
37 b Fs(63)399 3699 y(load)16 b Fn(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(63)399 3809 y(cslsload)h Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41
b Fs(63)399 3919 y(help)16 b Fn(:)f(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(63)399 4028 y(seteditor)h Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41 b
Fs(64)399 4138 y(setliblo)s(c)17 b Fn(:)f(:)g(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30
b Fs(64)399 4247 y(setcslslo)s(c)19 b Fn(:)e(:)e(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)32
b Fs(64)399 4357 y(sethelplo)s(c)25 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)37
b Fs(64)399 4467 y(settemplo)s(c)28 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40 b Fs(64)399
4576 y(gc)16 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(64)399 4686 y(.setsegmen)m(tsize)21 b Fn(:)e(:)c(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34 b Fs(65)p eop end
%%Page: -10 11
TeXDict begin -10 10 bop 150 -116 a Fs(x)2593 b(BERKELEY)30
b(LOGO)g(6.1)150 83 y Fr(8)135 b(Con)l(trol)46 b(Structures)25
b Fo(:)19 b(:)g(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)38
b Fr(67)275 220 y Fs(8.1)92 b(Con)m(trol)8 b Fn(:)16
b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)21 b Fs(67)399 330 y(run)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)23 b Fs(67)399 439 y(runresult)d Fn(:)14 b(:)i(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)33
b Fs(67)399 549 y(rep)s(eat)14 b Fn(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27
b Fs(67)399 658 y(forev)m(er)e Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)37
b Fs(67)399 768 y(rep)s(coun)m(t)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(68)399 878 y(if)12 b Fn(:)j(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)25 b Fs(68)399 987 y(ifelse)d Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)35
b Fs(68)399 1097 y(test)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(68)399 1206 y(iftrue)12 b Fn(:)j(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)25
b Fs(68)399 1316 y(i\013alse)j Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40
b Fs(68)399 1425 y(stop)15 b Fn(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28
b Fs(69)399 1535 y(output)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39
b Fs(69)399 1645 y(catc)m(h)14 b Fn(:)j(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27
b Fs(69)399 1754 y(thro)m(w)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37
b Fs(69)399 1864 y(error)23 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36
b Fs(70)399 1973 y(pause)28 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41
b Fs(70)399 2083 y(con)m(tin)m(ue)13 b Fn(:)k(:)e(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)26
b Fs(70)399 2193 y(w)m(ait)14 b Fn(:)j(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27
b Fs(71)399 2302 y(b)m(y)m(e)12 b Fn(:)k(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)25 b Fs(71)399 2412 y(.ma)m(yb)s(eoutput)f Fn(:)16
b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
b Fs(71)399 2521 y(goto)13 b Fn(:)k(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)26
b Fs(71)399 2631 y(tag)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(72)399 2741 y(ignore)18 b Fn(:)e(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)31
b Fs(72)399 2850 y(`)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)39 b Fs(72)399 2960 y(for)24 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)37 b Fs(72)399 3069 y(do.while)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(73)399 3179 y(while)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28
b Fs(73)399 3289 y(do.un)m(til)g Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
b Fs(73)399 3398 y(un)m(til)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
b Fs(73)399 3508 y(case)18 b Fn(:)e(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31
b Fs(74)399 3617 y(cond)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39
b Fs(74)275 3727 y(8.2)92 b(T)-8 b(emplate-based)31 b(Iteration)22
b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)35 b Fs(74)399 3836 y(apply)9 b Fn(:)15
b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fs(76)399 3946 y(in)m(v)m(ok)m(e)14
b Fn(:)k(:)d(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)27 b Fs(76)399 4056 y(foreac)m(h)18
b Fn(:)e(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)31 b Fs(76)399 4165 y(map)13
b Fn(:)i(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Fs(77)399 4275
y(map.se)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fs(77)399 4384
y(\014lter)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
b Fs(78)399 4494 y(\014nd)23 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)36
b Fs(78)399 4604 y(reduce)10 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)23
b Fs(78)399 4713 y(crossmap)17 b Fn(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30 b Fs(79)399
4823 y(cascade)10 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)23 b Fs(79)399
4932 y(cascade.2)15 b Fn(:)j(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28 b Fs(81)399 5042
y(transfer)e Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fs(81)p eop end
%%Page: -11 12
TeXDict begin -11 11 bop 3677 -116 a Fs(xi)150 83 y Fr(9)135
b(Macros)22 b Fo(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)35 b Fr(83)275
220 y Fs(.macro)28 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40
b Fs(83)399 330 y(.defmacro)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 b Fs(85)399
439 y(macrop)13 b Fn(:)j(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26 b Fs(85)399
549 y(macro)s(expand)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)28 b Fs(85)150 800 y Fr(10)135
b(Error)45 b(Pro)t(cessing)22 b Fo(:)e(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)35 b Fr(87)275 936 y Fs(10.1)92 b(Error)30
b(Co)s(des)15 b Fn(:)f(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)28 b Fs(87)150 1187 y Fr(11)135 b(Sp)t(ecial)45
b(V)-11 b(ariables)18 b Fo(:)i(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)
g(:)31 b Fr(89)275 1324 y Fs(allo)m(wgetset)26 b Fn(:)16
b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)36 b Fs(89)399 1434 y(buttonact)27 b Fn(:)15
b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)39 b Fs(89)399 1543 y(caseignoredp)29 b Fn(:)15
b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41
b Fs(89)399 1653 y(commandline)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)31 b Fs(89)399 1763
y(erract)23 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fs(89)399
1872 y(fullprin)m(tp)13 b Fn(:)h(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)26 b Fs(90)399
1982 y(k)m(ey)m(act)13 b Fn(:)18 b(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)26
b Fs(90)399 2091 y(loadnoisily)9 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 b
Fs(90)399 2201 y(prin)m(tdepthlimit)17 b Fn(:)e(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fs(90)399 2311 y(prin)m(t)m
(widthlimit)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)31 b Fs(90)399 2420 y(redefp)17 b Fn(:)d(:)i(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30
b Fs(91)399 2530 y(startup)15 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)28
b Fs(91)399 2639 y(un)m(bury)m(onedit)17 b Fn(:)d(:)i(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fs(91)399
2749 y(usealternatenames)17 b Fn(:)g(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)30 b Fs(91)399 2858 y(logo)m(v)m(ersion)21 b
Fn(:)e(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)34 b Fs(91)399 2968 y(logoplatform)9 b Fn(:)17
b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22
b Fs(91)150 3219 y Fr(12)135 b(In)l(ternationalization)17
b Fo(:)22 b(:)e(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)30 b Fr(93)150
3497 y(INDEX)k Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)47
b Fr(97)p eop end
%%Page: -12 13
TeXDict begin -12 12 bop eop end
%%Page: 1 14
TeXDict begin 1 13 bop 3705 -116 a Fs(1)150 299 y Fp(1)80
b(In)l(tro)t(duction)150 661 y Fr(1.1)68 b(Ov)l(erview)150
820 y Fs(Cop)m(yrigh)m(t)602 817 y(c)577 820 y Fm(\015)30
b Fs(1993)i(b)m(y)f(the)f(Regen)m(ts)i(of)e(the)h(Univ)m(ersit)m(y)h
(of)e(California)150 988 y(This)37 b(program)h(is)g(free)g(soft)m(w)m
(are:)57 b(y)m(ou)38 b(can)g(redistribute)g(it)g(and/or)g(mo)s(dify)f
(it)i(under)d(the)i(terms)150 1098 y(of)c(the)h(GNU)g(General)g(Public)
f(License)g(as)h(published)d(b)m(y)i(the)h(F)-8 b(ree)35
b(Soft)m(w)m(are)g(F)-8 b(oundation,)36 b(either)150
1207 y(v)m(ersion)31 b(3)g(of)f(the)h(License,)g(or)f(\(at)i(y)m(our)e
(option\))h(an)m(y)g(later)g(v)m(ersion.)150 1375 y(This)d(program)g
(is)h(distributed)f(in)g(the)h(hop)s(e)f(that)h(it)g(will)g(b)s(e)f
(useful,)h(but)f Fl(WITHOUT)g(ANY)h(W)-10 b(AR-)150 1484
y(RANTY)13 b Fs(;)30 b(without)h(ev)m(en)g(the)f(implied)g(w)m(arran)m
(t)m(y)i(of)e Fl(MER)m(CHANT)-8 b(ABILITY)31 b(or)f(FITNESS)g(F)m(OR)
150 1594 y(A)g(P)-8 b(AR)g(TICULAR)31 b(PURPOSE)p Fs(.)39
b(See)31 b(the)g(GNU)g(General)g(Public)f(License)h(for)f(more)h
(details.)150 1762 y(Y)-8 b(ou)21 b(should)e(ha)m(v)m(e)j(receiv)m(ed)g
(a)f(cop)m(y)g(of)g(the)f(GNU)h(General)h(Public)e(License)h(along)g
(with)g(this)f(program.)150 1871 y(If)30 b(not,)h(see)g
Fk(<)p Fs(h)m(ttps://www.gn)m(u.org/licenses/)p Fk(>)p
Fs(.)150 2039 y(This)g(is)g(a)h(program)f(that)h(is)g(still)g(b)s(eing)
f(written.)44 b(Man)m(y)32 b(things)f(are)h(missing,)g(including)f
(adequate)150 2149 y(do)s(cumen)m(tation.)41 b(This)27
b(man)m(ual)i(assumes)e(that)i(y)m(ou)f(already)h(kno)m(w)f(ho)m(w)g
(to)h(program)f(in)g(Logo,)i(and)150 2258 y(merely)h(presen)m(ts)f(the)
h(details)g(of)f(this)h(new)f(implemen)m(tation.)150
2426 y(Read)24 b Fl(Computer)e(Science)i(Logo)h(St)m(yle,)h(V)-8
b(olume)24 b(1:)38 b(Sym)m(b)s(olic)23 b(Computing)31
b Fs(b)m(y)23 b(Brian)g(Harv)m(ey)i(\(MIT)150 2535 y(Press,)30
b(1997\))j(for)d(a)h(tutorial)g(on)f(Logo)i(programming)e(with)g
(emphasis)g(on)g(sym)m(b)s(olic)h(computation.)150 2703
y(Here)g(are)g(the)f(sp)s(ecial)h(features)g(of)f(this)h(dialect)h(of)e
(Logo:)390 2980 y(Source)g(\014le)h(compatible)g(among)g(Unix,)g(DOS,)f
(Windo)m(ws,)h(and)e(Mac)j(platforms.)390 3200 y(Random-access)g(arra)m
(ys.)390 3419 y(V)-8 b(ariable)32 b(n)m(um)m(b)s(er)d(of)h(inputs)g(to)
h(user-de\014ned)e(pro)s(cedures.)390 3638 y(Mutators)i(for)f(list)h
(structure)f(\(dangerous\).)390 3857 y(P)m(ause)h(on)f(error,)g(and)g
(other)h(impro)m(v)m(emen)m(ts)g(to)g(error)f(handling.)390
4076 y(Commen)m(ts)h(and)e(con)m(tin)m(uation)k(lines;)d(formatting)i
(is)e(preserv)m(ed)g(when)390 4186 y(pro)s(cedure)f(de\014nitions)h
(are)h(sa)m(v)m(ed)g(or)g(edited.)390 4405 y(T)-8 b(errapin-st)m(yle)31
b(tok)m(enization)i(\(e.g.,)g([2)p Fk(+)p Fs(3])e(is)g(a)f(list)h(with)
f(one)h(mem)m(b)s(er\))390 4515 y(but)f(LCSI-st)m(yle)g(syn)m(tax)h
(\(no)g(sp)s(ecial)g(forms)f(except)h(TO\).)61 b(The)29
b(b)s(est)h(of)390 4624 y(b)s(oth)g(w)m(orlds.)390 4844
y(First-class)i(instruction)e(and)g(expression)g(templates)i(\(see)f
(APPL)-8 b(Y\).)390 5063 y(Macros.)150 5230 y(F)g(eatures)37
b Fj(not)f Fs(found)f(in)g(Berk)m(eley)j(Logo)f(include)e(rob)s(otics,)
j(m)m(usic,)g(animation,)g(parallelism,)h(and)150 5340
y(m)m(ultimedia.)j(F)-8 b(or)31 b(those,)g(buy)e(a)i(commercial)h(v)m
(ersion.)p eop end
%%Page: 2 15
TeXDict begin 2 14 bop 150 -116 a Fs(2)2596 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fr(1.2)68 b(Getter/Setter)47 b(V)-11
b(ariable)46 b(Syn)l(tax)150 458 y Fs(Logo)32 b(distinguishes)e
Fl(pro)s(cedures)j Fs(from)d Fl(v)-5 b(ariables)p Fs(.)43
b(A)31 b(pro)s(cedure)e(is)i(a)g(set)g(of)g(instructions)g(to)g(carry)
150 568 y(out)k(some)f(computation;)k(a)d(v)-5 b(ariable)35
b(is)g(a)f(named)g(con)m(tainer)i(that)f(holds)f(a)h(data)g(v)-5
b(alue)35 b(suc)m(h)f(as)h(a)150 677 y(n)m(um)m(b)s(er,)29
b(w)m(ord,)i(list,)g(or)f(arra)m(y)-8 b(.)150 845 y(In)38
b(traditional)i(Logo)g(syn)m(tax,)i(a)e(non-n)m(umeric)e(w)m(ord)h(t)m
(yp)s(ed)f(without)h(punctuation)g(represen)m(ts)g(a)150
955 y(request)k(to)g(in)m(v)m(ok)m(e)i(the)e(pro)s(cedure)e(named)h(b)m
(y)h(that)g(w)m(ord.)77 b(A)43 b(w)m(ord)f(t)m(yp)s(ed)h(with)f(a)h
(preceding)150 1064 y(quotation)32 b(mark)e(represen)m(ts)g(the)h(w)m
(ord)f(itself.)41 b(F)-8 b(or)31 b(example,)h(in)e(the)g(instruction)
390 1232 y Fk(PRINT)46 b(FIRST)h("WORD)150 1400 y Fs(the)33
b(pro)s(cedures)f(named)h Fk(FIRST)f Fs(and)g Fk(PRINT)g
Fs(are)i(in)m(v)m(ok)m(ed,)h(but)e(the)g(pro)s(cedure)f(named)h
Fl(W)m(ORD)39 b Fs(is)150 1509 y(not)31 b(in)m(v)m(ok)m(ed;)h(the)e(w)m
(ord)g Fl(W-O-R-D)37 b Fs(is)30 b(the)h(input)e(to)i(FIRST.)150
1677 y(What)26 b(ab)s(out)e(v)-5 b(ariables?)40 b(There)24
b(are)i(t)m(w)m(o)g(things)f(one)g(can)g(do)g(with)g(a)g(v)-5
b(ariable:)39 b(giv)m(e)27 b(it)e(a)h(v)-5 b(alue,)27
b(and)150 1787 y(\014nd)j(out)i(its)g(v)-5 b(alue.)44
b(T)-8 b(o)32 b(giv)m(e)h(a)f(v)-5 b(ariable)32 b(a)g(v)-5
b(alue,)33 b(Logo)f(pro)m(vides)g(the)f(primitiv)m(e)i(pro)s(cedure)d
Fk(MAKE)p Fs(,)150 1896 y(whic)m(h)e(requires)g(t)m(w)m(o)i(inputs:)39
b(the)28 b(name)h(of)f(the)h(v)-5 b(ariable)29 b(and)f(the)g(new)g(v)-5
b(alue)29 b(to)g(b)s(e)f(assigned.)40 b(The)150 2006
y(\014rst)26 b(input,)g(the)h(name)g(of)f(the)h(v)-5
b(ariable,)28 b(is)f(just)f(a)g(w)m(ord,)i(and)e(if)g(\(as)h(is)g
(almost)g(alw)m(a)m(ys)h(the)f(case\))h(the)150 2115
y(programmer)f(w)m(an)m(ts)h(to)g(assign)g(a)f(v)-5 b(alue)28
b(to)g(a)g(sp)s(eci\014c)f(v)-5 b(ariable)28 b(whose)f(name)h(is)f(kno)
m(wn)g(in)g(adv)-5 b(ance,)150 2225 y(that)31 b(input)e(is)i(quoted,)g
(just)e(as)i(an)m(y)g(kno)m(wn)f(sp)s(eci\014c)g(w)m(ord)g(w)m(ould)g
(b)s(e:)390 2393 y Fk(MAKE)47 b("MY.VAR)e(FIRST)i("WORD)150
2560 y Fs(giv)m(es)32 b(the)e(v)-5 b(ariable)31 b(named)f
Fk(MY.VAR)f Fs(the)i(v)-5 b(alue)30 b Fk(W)g Fs(\(the)h(\014rst)f
(letter)i(of)e Fk(WORD)p Fs(\).)150 2728 y(T)-8 b(o)28
b(\014nd)f(the)h(v)-5 b(alue)28 b(of)g(a)h(v)-5 b(ariable,)29
b(Logo)g(pro)m(vides)f(the)g(primitiv)m(e)h(pro)s(cedure)d
Fk(THING)p Fs(,)i(whic)m(h)f(tak)m(es)j(a)150 2838 y(v)-5
b(ariable)28 b(name)g(as)f(its)h(input,)f(and)g(outputs)g(the)g(v)-5
b(alue)28 b(of)g(the)f(accessible)i(v)-5 b(ariable)29
b(with)e(that)h(name.)150 2947 y(Th)m(us)390 3115 y Fk(PRINT)46
b(THING)h("MY.VAR)150 3283 y Fs(will)36 b(prin)m(t)f
Fk(W)h Fs(\(supp)s(osing)e(the)i Fk(MAKE)f Fs(ab)s(o)m(v)m(e)i(has)e(b)
s(een)g(done\).)57 b(Since)36 b(\014nding)e(the)i(v)-5
b(alue)36 b(of)g(a)g(sp)s(e-)150 3392 y(ci\014c,)30 b(kno)m(wn)g(v)-5
b(ariable)30 b(name)f(is)h(suc)m(h)f(a)h(common)g(op)s(eration,)g(Logo)
h(also)g(pro)m(vides)e(an)h(abbreviated)150 3502 y(notation)i(that)f
(com)m(bines)g Fk(THING)d Fs(with)j(quote:)390 3670 y
Fk(PRINT)46 b(:MY.VAR)150 3837 y Fs(The)36 b(colon)i(\(whic)m(h)e(Logo)
i(old-timers)f(pronounce)f Fk(")p Fs(dots)p Fk(")p Fs(\))g(replaces)i
Fk(THING)d Fs(and)h Fk(")g Fs(in)g(the)h(earlier)150
3947 y(v)m(ersion)31 b(of)f(the)h(instruction.)150 4115
y(New)m(comers)i(to)g(Logo)g(often)g(complain)f(ab)s(out)g(the)h(need)e
(for)h(all)h(this)f(punctuation.)46 b(In)31 b(particular,)150
4224 y(Logo)j(programmers)e(who)g(learned)g(ab)s(out)h(dots)f(and)g
(quotes)h(without)g(also)g(learning)g(ab)s(out)f Fk(THING)150
4334 y Fs(w)m(onder)e(wh)m(y)g(an)g(instruction)g(suc)m(h)g(as)390
4501 y Fk(MAKE)47 b("NEW.VAR)e(:OLD.VAR)150 4669 y Fs(uses)30
b(t)m(w)m(o)i(di\013eren)m(t)f(punctuation)f(marks)g(to)h(iden)m(tify)g
(the)f(t)m(w)m(o)i(v)-5 b(ariables.)42 b(\(Ha)m(ving)32
b(read)e(the)h(para-)150 4779 y(graphs)j(ab)s(o)m(v)m(e,)j(y)m(ou)e
(will)g(understand)e(that)i(actually)h(b)s(oth)e(v)-5
b(ariable)35 b(names)g(are)g(quoted,)h(but)e(the)150
4888 y(pro)s(cedure)24 b Fk(THING)f Fs(is)i(in)m(v)m(ok)m(ed)i(to)e
(\014nd)f(the)h(v)-5 b(alue)25 b(of)g Fk(OLD.VAR)p Fs(,)g(since)g(it's)
g(that)h(v)-5 b(alue,)27 b(not)e Fk(OLD.VAR)p Fs('s)150
4998 y(name,)k(that)g Fk(MAKE)f Fs(needs)g(to)h(kno)m(w.)40
b(It)29 b(w)m(ouldn't)f(mak)m(e)i(sense)e(to)i(ask)e(for)h
Fk(THING)e Fs(of)h Fk(NEW.VAR)p Fs(,)g(since)150 5108
y(w)m(e)j(ha)m(v)m(en't)h(giv)m(en)f Fk(NEW.VAR)d Fs(a)j(v)-5
b(alue)31 b(y)m(et.\))p eop end
%%Page: 3 16
TeXDict begin 3 15 bop 150 -116 a Fs(Chapter)30 b(1:)41
b(In)m(tro)s(duction)2592 b(3)150 299 y(Although)31 b(Logo's)h
(punctuation)f(rules)f(mak)m(e)i(sense)f(once)g(understo)s(o)s(d,)f
(they)h(do)f(form)h(a)g(barrier)f(to)150 408 y(en)m(try)24
b(for)f(the)h(Logo)g(b)s(eginner.)38 b(Wh)m(y)-8 b(,)26
b(then,)f(couldn't)e(Logo)i(b)s(e)e(designed)g(so)h(that)g(an)f
(unpunctuated)150 518 y(w)m(ord)i(w)m(ould)f(represen)m(t)h(a)h(pro)s
(cedure)e(if)h(there)g(is)g(a)g(pro)s(cedure)f(b)m(y)h(that)g(name,)i
(or)e(a)g(v)-5 b(ariable)26 b(if)f(there)150 628 y(is)30
b(a)h(v)-5 b(ariable)31 b(b)m(y)g(that)g(name?)40 b(Then)29
b(w)m(e)i(could)g(sa)m(y)390 795 y Fk(PRINT)46 b(MY.VAR)150
963 y Fs(and)38 b(Logo)h(w)m(ould)g(realize)h(that)f
Fk(MY.VAR)d Fs(is)j(the)f(name)h(of)f(a)h(v)-5 b(ariable,)42
b(not)c(of)h(a)g(pro)s(cedure.)63 b(The)150 1073 y(traditional)33
b(reason)e(not)h(to)g(use)f(this)g(con)m(v)m(en)m(tion)i(is)e(that)h
(Logo)h(allo)m(ws)f(the)g(same)f(w)m(ord)g(to)h(name)g(a)150
1182 y(pro)s(cedure)j(and)h(a)g(v)-5 b(ariable)37 b(at)g(the)f(same)h
(time.)59 b(This)35 b(is)h(most)h(often)f(imp)s(ortan)m(t)h(for)f(w)m
(ords)f(that)150 1292 y(name)30 b(data)h(t)m(yp)s(es,)g(as)g(in)f(the)g
(follo)m(wing)i(pro)s(cedure:)390 1460 y Fk(TO)47 b(PLURAL)f(:WORD)390
1569 y(OUTPUT)g(WORD)h(:WORD)f("S)390 1679 y(END)150
1846 y Fs(Here)d(the)f(name)g Fk(WORD)f Fs(is)h(a)h(natural)f(c)m
(hoice)i(for)e(the)g(input)f(to)i Fk(PLURAL)p Fs(,)g(since)g(it)f
(describ)s(es)g(the)150 1956 y(kind)29 b(of)h(input)f(that)h
Fk(PLURAL)e Fs(exp)s(ects.)41 b(Within)30 b(the)g(pro)s(cedure,)f(w)m
(e)h(use)g Fk(WORD)e Fs(to)j(represen)m(t)f(Logo's)150
2066 y(primitiv)m(e)40 b(pro)s(cedure)e(that)h(com)m(bines)h(t)m(w)m(o)
g(input)e(w)m(ords)h(to)g(form)g(a)g(new,)i(longer)f(w)m(ord;)j(w)m(e)c
(use)150 2175 y Fk(:WORD)32 b Fs(to)i(represen)m(t)g(the)f(v)-5
b(ariable)35 b(con)m(taining)g(the)e(input,)h(whatev)m(er)g(actual)h(w)
m(ord)e(is)g(giv)m(en)i(when)150 2285 y Fk(PLURAL)29
b Fs(is)h(in)m(v)m(ok)m(ed.)390 2452 y Fk(?)47 b(PRINT)g(PLURAL)f
("COMPUTER)390 2562 y(COMPUTERS)150 2730 y Fs(Ho)m(w)m(ev)m(er,)32
b(if)e(a)g(Logo)h(instruction)f(includes)f(an)h(unquoted)e(w)m(ord)i
(that)g(is)g Fj(not)g Fs(the)g(name)g(of)g(a)g(pro)s(ce-)150
2839 y(dure,)35 b(Logo)g(could)g(lo)s(ok)g(for)f(a)h(v)-5
b(ariable)36 b(of)e(that)i(name)e(instead.)54 b(This)33
b(w)m(ould)i(allo)m(w)h(a)f Fk(")p Fs(punctua-)150 2949
y(tionless)p Fk(")e Fs(Logo,)h Fj(pro)m(vided)e(that)h(users)f(who)g(w)
m(an)m(t)h(to)g(w)m(ork)g(without)g(colons)g(for)f(v)-5
b(ariables)33 b(c)m(ho)s(ose)150 3059 y(v)-5 b(ariable)31
b(names)f(that)h(are)g(not)f(also)i(pro)s(cedure)d(names.)150
3226 y Fs(What)k(ab)s(out)g(assigning)g(a)g(v)-5 b(alue)33
b(to)g(a)g(v)-5 b(ariable?)48 b(Could)32 b(w)m(e)h(do)f(without)h(the)g
(quotation)h(mark)e(on)150 3336 y Fk(MAKE)p Fs('s)d(\014rst)g(input?)40
b(Alas,)31 b(no.)40 b(Although)30 b(the)h(\014rst)e(input)g(to)i
Fk(MAKE)e Fs(is)h Fj(usually)f Fs(a)i(constan)m(t,)g(kno)m(wn)150
3445 y(v)-5 b(ariable)31 b(name,)g(sometimes)g(it)g(isn't,)g(as)g(in)f
(this)g(example:)390 3613 y Fk(TO)47 b(INCREMENT)e(:VAR)390
3723 y(MAKE)i(:VAR)f(\(THING)g(:VAR\)+1)g(;)i(Note:)e(it's)h(not)g
("VAR)f(here!)390 3832 y(END)390 4051 y(?)h(MAKE)g("X)g(5)390
4161 y(?)g(INCREMENT)f("X)390 4271 y(?)h(PRINT)g(:X)390
4380 y(6)150 4548 y Fs(The)29 b(pro)s(cedure)f Fk(INCREMENT)f
Fs(tak)m(es)j(a)g(v)-5 b(ariable)30 b(name)f(as)h(its)f(input)g(and)f
(c)m(hanges)j(the)e(v)-5 b(alue)30 b(of)f(that)150 4658
y(v)-5 b(ariable.)39 b(In)23 b(this)g(example)i(there)e(are)h(t)m(w)m
(o)h(v)-5 b(ariables;)27 b(the)c(v)-5 b(ariable)25 b(whose)e(name)g(is)
h Fk(VAR)p Fs(,)g(and)f(whose)150 4767 y(v)-5 b(alue)28
b(is)f(the)h(w)m(ord)f Fk(X)p Fs(;)i(and)d(the)i(v)-5
b(ariable)28 b(whose)g(name)f(is)h Fk(X)f Fs(and)g(whose)g(v)-5
b(alue)28 b(c)m(hanges)g(from)f(5)h(to)g(6.)150 4877
y(Supp)s(ose)h(w)m(e)i(c)m(hanged)g(the)f(b)s(eha)m(vior)h(of)f
Fk(MAKE)g Fs(so)g(that)h(it)g(to)s(ok)h(the)e(w)m(ord)g(after)h
Fk(MAKE)f Fs(as)g(the)h(name)150 4986 y(of)g(the)f(v)-5
b(ariable)31 b(to)g(c)m(hange;)h(w)m(e)f(w)m(ould)f(b)s(e)g(unable)g
(to)h(write)f Fk(INCREMENT)p Fs(:)390 5154 y Fk(TO)47
b(INCREMENT)e(:VAR)i(;)h(nonworking!)390 5264 y(MAKE)f(VAR)g(\(THING)f
(VAR\)+1)p eop end
%%Page: 4 17
TeXDict begin 4 16 bop 150 -116 a Fs(4)2596 b(BERKELEY)30
b(LOGO)g(6.1)390 299 y Fk(END)150 467 y Fs(This)g(w)m(ould)g(assign)g
(a)h(new)f(v)-5 b(alue)31 b(to)g Fk(VAR)p Fs(,)f(not)g(to)h
Fk(X)p Fs(.)150 634 y(What)36 b(w)m(e)g(can)g(do)g(is)g(to)g(allo)m(w)h
(an)f Fj(alternativ)m(e)i Fs(to)e Fk(MAKE)p Fs(,)g(a)h
Fk(")p Fs(setter)p Fk(")f Fs(pro)s(cedure)e(for)i(a)g(particular)150
744 y(v)-5 b(ariable.)42 b(The)29 b(notation)j(will)f(b)s(e)390
912 y Fk(?)47 b(SETFOO)g(7)390 1021 y(?)g(PRINT)g(FOO)390
1131 y(7)150 1298 y(SETFOO)31 b Fs(is)h(a)h Fk(")p Fs(setter)g(pro)s
(cedure)p Fk(")e Fs(that)j(tak)m(es)g(one)e(input)g(\(in)g(this)h(case)
g(the)g(input)f(7\))h(and)f(assigns)150 1408 y(its)f(v)-5
b(alue)31 b(to)g(the)f(v)-5 b(ariable)31 b(named)f Fk(FOO)p
Fs(.)150 1576 y(Berk)m(eley)e(Logo)f(allo)m(ws)h(users)d(to)i(c)m(ho)s
(ose)g(either)g(the)f(traditional)i(notation,)g(in)e(whic)m(h)g(case)h
(the)g(same)150 1685 y(name)j(can)f(b)s(e)g(used)g(b)s(oth)g(for)g(a)h
(pro)s(cedure)e(and)h(for)g(a)h(v)-5 b(ariable,)31 b(or)e(the)h
(getter/setter)i(notation,)f(in)150 1795 y(whic)m(h)d(v)-5
b(ariable)29 b Fk(FOO)e Fs(is)h(set)h(with)f Fk(SETFOO)e
Fs(and)i(examined)g(with)g Fk(FOO)p Fs(,)g(but)f(the)i(same)f(name)h
(can't)g(b)s(e)150 1905 y(used)h(for)g(pro)s(cedure)f(and)h(v)-5
b(ariable.)150 2072 y(Here)27 b(is)f(ho)m(w)g(this)g(c)m(hoice)i(is)e
(allo)m(w)m(ed:)40 b(Berk)m(eley)28 b(Logo)f(uses)f(traditional)h
(notation,)h(with)e(pro)s(cedures)150 2182 y(distinct)32
b(from)f(v)-5 b(ariables.)44 b(Ho)m(w)m(ev)m(er,)34 b(if)e(there)f(is)h
(a)f(v)-5 b(ariable)33 b(named)d Fk(AllowGetSet)f Fs(whose)i(v)-5
b(alue)32 b(is)150 2291 y(TR)m(UE)25 b(\(whic)m(h)h(there)g(is,)g(b)m
(y)g(default,)h(when)d(Logo)j(starts)f(up\),)g(then)f(if)g(a)h(Logo)h
(instruction)e(refers)g(to)150 2401 y(a)i Fj(nonexisten)m(t)i
Fs(pro)s(cedure)d(\(so)h(that)h(the)f(error)g(message)h
Fk(")p Fs(I)f(don't)g(kno)m(w)g(ho)m(w)g(to)h(...)p Fk(")g
Fs(w)m(ould)e(result\),)150 2511 y(Logo)31 b(tries)g(the)g(follo)m
(wing)h(t)m(w)m(o)f(steps:)390 2678 y(1.)61 b(If)30 b(the)h(name)f(is)h
(at)g(least)g(four)f(c)m(haracters)i(long,)f(and)f(the)g(\014rst)g
(three)390 2788 y(c)m(haracters)i(are)f(the)f(letters)i
Fk(SET)d Fs(\(upp)s(er)g(or)h(lo)m(w)m(er)i(case\),)g(and)e(if)g(the)h
(name)390 2897 y(is)f(follo)m(w)m(ed)i(in)e(the)h(instruction)f(b)m(y)h
(another)f(v)-5 b(alue,)31 b(and)f(if)g(the)h(name)390
3007 y(without)f(the)h Fk(SET)e Fs(is)i(the)f(name)h(of)f(a)h(v)-5
b(ariable)31 b(that)g(already)g(exists,)g(then)390 3117
y(Logo)g(will)g(in)m(v)m(ok)m(e)i Fk(MAKE)c Fs(with)h(its)h(\014rst)e
(input)h(b)s(eing)g(the)g(name)h(without)f(the)390 3226
y Fk(SET)p Fs(,)g(and)f(its)i(second)g(input)e(b)s(eing)h(the)h(follo)m
(wing)g(v)-5 b(alue.)390 3445 y(2.)61 b(If)30 b(step)h(1's)g
(conditions)f(are)h(not)g(met,)g(but)e(the)i(name)f(is)390
3555 y(the)h(name)f(of)h(an)f(accessible)i(v)-5 b(ariable,)31
b(then)f(Logo)i(will)f(in)m(v)m(ok)m(e)390 3665 y Fk(THING)e
Fs(with)h(that)h(name)f(as)h(input,)f(to)h(\014nd)e(the)h(v)-5
b(ariable's)31 b(v)-5 b(alue.)150 3832 y(Step)42 b(1)g(requires)f(that)
h(the)g(v)-5 b(ariable)43 b(already)f(exist)h(so)f(that)h(missp)s
(ellings)e(of)h(names)g(of)g Fk(SETxxx)150 3942 y Fs(primitiv)m(es)26
b(\(e.g.,)i Fk(SETHEADING)p Fs(\))22 b(will)k(still)g(b)s(e)e(caugh)m
(t,)k(instead)d(of)g(silen)m(tly)h(creating)h(a)e(new)g(v)-5
b(ariable.)150 4051 y(The)30 b(command)g Fk(GLOBAL)f
Fs(can)h(b)s(e)g(used)g(to)h(create)h(a)e(v)-5 b(ariable)32
b(without)e(giving)h(it)g(a)g(v)-5 b(alue.)150 4219 y(One)33
b(\014nal)g(p)s(oin)m(t:)47 b(The)33 b Fk(TO)f Fs(command)i(in)f(Logo)h
(has)f(alw)m(a)m(ys)i(b)s(een)e(a)h(sp)s(ecial)g(case;)i(the)e(rest)f
(of)h(the)150 4329 y(line)g(starting)g(with)f Fk(TO)g
Fs(is)g(not)h(ev)-5 b(aluated)34 b(as)g(ordinary)f(Logo)h(expressions)f
(are.)50 b(In)33 b(particular,)i(the)150 4438 y(colons)26
b(used)e(to)h(mark)g(the)g(names)g(of)g(inputs)e(to)j(the)f(pro)s
(cedure)f(do)h(not)g(cause)g Fk(THING)e Fs(to)j(b)s(e)e(in)m(v)m(ok)m
(ed.)150 4548 y(They)35 b(are)h(merely)g(mnemonic)g(aids,)h(reminding)e
(the)g(Logo)i(user)e(that)h(these)g(w)m(ords)f(are)h(names)g(of)150
4658 y(v)-5 b(ariables.)63 b(\(Arguably)-8 b(,)41 b(this)d(nonstan)m
(tard)f(b)s(eha)m(vior)h(of)g Fk(TO)f Fs(adds)g(to)i(Logo)f(b)s
(eginners')f(confusion)150 4767 y(ab)s(out)f(colons.\))59
b(T)-8 b(o)36 b(a)g(programmer)g(using)f(colonless)j(v)-5
b(ariable)37 b(references,)h(the)e(colons)h(in)e(the)i
Fk(TO)150 4877 y Fs(line)31 b(are)f(unnecessary)g(and)g(meaningless.)41
b(Berk)m(eley)33 b(Logo)e(therefore)g(mak)m(es)g(the)g(colons)g
(optional:)390 5044 y Fk(TO)47 b(FOO)g(:IN1)g(:IN2)150
5212 y Fs(and)p eop end
%%Page: 5 18
TeXDict begin 5 17 bop 150 -116 a Fs(Chapter)30 b(1:)41
b(In)m(tro)s(duction)2592 b(5)390 299 y Fk(TO)47 b(FOO)g(IN1)g(IN2)150
467 y Fs(are)31 b(b)s(oth)e(allo)m(w)m(ed.)150 702 y
Fr(1.3)68 b(En)l(tering)46 b(and)f(Lea)l(ving)h(Logo)150
861 y Fs(The)30 b(pro)s(cess)g(to)h(start)g(Logo)g(dep)s(ends)e(on)h(y)
m(our)g(op)s(erating)h(system:)150 1051 y(Unix:)263 b(T)m(yp)s(e)26
b(the)h(w)m(ord)g Fk(logo)e Fs(to)j(the)f(shell.)40 b(\(The)27
b(directory)g(in)f(whic)m(h)h(y)m(ou'v)m(e)h(installed)g(Logo)630
1161 y(m)m(ust)i(b)s(e)g(in)g(y)m(our)g(path.\))150 1315
y(DOS:)264 b(Change)35 b(directories)h(to)f(the)g(one)g(con)m(taining)i
(Logo)f(\(probably)e Fk(C:\\UCBLOGO)p Fs(\).)52 b(Then)630
1425 y(t)m(yp)s(e)31 b Fk(UCBLOGO)d Fs(for)i(the)h(large)g(memory)f(v)m
(ersion,)h(or)g Fk(BL)f Fs(for)g(the)g(640K)i(v)m(ersion.)150
1579 y(Mac:)287 b(Double-clic)m(k)33 b(on)d(the)h Fk(LOGO)e
Fs(icon)i(within)f(the)g Fk(")p Fs(UCB)h(Logo)p Fk(")g
Fs(folder.)150 1733 y(Windo)m(ws:)91 b(Double-clic)m(k)33
b(on)d(the)h Fk(UCBWLOGO)d Fs(icon)j(in)f(the)g Fk(UCBLOGO)f
Fs(folder.)150 1923 y(T)-8 b(o)31 b(lea)m(v)m(e)i(Logo,)e(en)m(ter)g
(the)g(command)f Fk(bye)p Fs(.)150 2090 y(On)39 b(startup,)j(Logo)f(lo)
s(oks)f(for)g(a)g(\014le)g(named)g Fk(startup.lg)d Fs(in)i(the)i
(system)f(Logo)h(library)e(and,)j(if)150 2200 y(found,)32
b(loads)h(it.)47 b(Then)31 b(it)i(lo)s(oks)g(for)f Fk(startup.lg)e
Fs(in)i(the)h(user's)f(home)g(directory)-8 b(,)34 b(or)f(the)f(curren)m
(t)150 2310 y(directory)-8 b(,)38 b(dep)s(ending)33 b(on)j(the)f(op)s
(erating)h(system,)h(and)d(loads)i(that.)56 b(These)35
b(startup)g(\014les)g(can)h(b)s(e)150 2419 y(used)30
b(to)h(prede\014ne)e(pro)s(cedures,)g(e.g.,)j(to)f(pro)m(vide)g
(non-English)e(names)i(for)f(primitiv)m(e)h(pro)s(cedures.)150
2587 y(Under)41 b(Unix,)k(DOS,)c(or)h(Windo)m(ws,)j(if)d(y)m(ou)g
(include)f(one)h(or)g(more)g(\014lenames)g(on)f(the)h(command)150
2697 y(line)i(when)e(starting)i(Logo,)k(those)43 b(\014les)g(will)h(b)s
(e)f(loaded)g(b)s(efore)g(the)h(in)m(terpreter)f(starts)h(reading)150
2806 y(commands)29 b(from)f(y)m(our)h(terminal.)41 b(If)28
b(y)m(ou)h(load)h(a)f(\014le)g(that)h(executes)g(some)f(program)g(that)
g(includes)150 2916 y(a)i Fk(bye)f Fs(command,)g(Logo)i(will)f(run)e
(that)j(program)e(and)g(exit.)42 b(Y)-8 b(ou)31 b(can)g(therefore)g
(write)g(standalone)150 3025 y(programs)g(in)g(Logo)h(and)f(run)f(them)
h(with)g(shell/batc)m(h)i(scripts.)44 b(T)-8 b(o)31 b(supp)s(ort)f
(this)h(tec)m(hnique,)i(Logo)150 3135 y(do)s(es)h(not)g(prin)m(t)f(its)
i(usual)e(w)m(elcoming)i(and)f(parting)g(messages)g(if)g(y)m(ou)h(giv)m
(e)g(\014le)f(argumen)m(ts)g(to)h(the)150 3245 y(logo)d(command.)150
3412 y(If)44 b(a)h(command)g(line)g(argumen)m(t)g(is)g(just)f(a)h(h)m
(yphen,)i(then)d(all)i(command)e(line)h(argumen)m(ts)g(after)150
3522 y(the)40 b(h)m(yphen)e(are)h(not)h(tak)m(en)g(as)g(\014lenames,)i
(but)c(are)i(instead)g(collected)h(in)e(a)h(list,)i(one)e(w)m(ord)f(p)s
(er)150 3631 y(argumen)m(t;)31 b(the)e(buried)g(v)-5
b(ariable)30 b Fk(COMMAND.LINE)d Fs(con)m(tains)j(that)h(list)f(of)g
(argumen)m(ts,)g(or)g(the)g(empt)m(y)150 3741 y(list)j(if)f(there)h
(are)g(none.)46 b(On)32 b(m)m(y)h(Lin)m(ux)e(system,)j(if)e(the)h
(\014rst)e(line)i(of)g(an)f(executable)i(shell)f(script)f(is)150
3851 y Fk(#!/usr/local/bin/logo)42 b(-)32 b Fs(\(note)i(the)f(h)m
(yphen\))e(then)i(the)f(script)h(can)g(b)s(e)f(giv)m(en)h(command)g
(line)150 3960 y(argumen)m(ts)25 b(and)g(they)g(all)h(end)e(up)g(in)g
Fk(:COMMAND.LINE)e Fs(along)k(with)e(the)h(script's)g(path.)39
b(Exp)s(erimen)m(t.)150 4128 y(If)c(y)m(ou)g(t)m(yp)s(e)h(y)m(our)f(in)
m(terrupt)g(c)m(haracter)i(\(see)f(table)g(b)s(elo)m(w\))g(Logo)g(will)
g(stop)f(what)g(it's)h(doing)g(and)150 4237 y(return)d(to)i(top-lev)m
(el,)i(as)d(if)g(y)m(ou)g(did)f Fk(THROW)47 b("TOPLEVEL)m
Fs(.)52 b(If)33 b(y)m(ou)h(t)m(yp)s(e)g(y)m(our)g(quit)g(c)m(haracter)i
(Logo)150 4347 y(will)31 b(pause)f(as)g(if)h(y)m(ou)f(did)g
Fk(PAUSE)p Fs(.)963 4515 y Fk(wxWidgets)284 b(Unix)333
b(DOS/Windows)235 b(Mac)47 b(Classic)390 4734 y(toplevel)284
b(alt-S)142 b(usually)46 b(ctrl-C)189 b(ctrl-Q)237 b(command-.)45
b(\(period\))390 4953 y(pause)428 b(alt-P)142 b(usually)46
b(ctrl-\\)189 b(ctrl-W)237 b(command-,)45 b(\(comma\))150
5121 y Fs(If)28 b(y)m(ou)g(ha)m(v)m(e)i(an)e(en)m(vironmen)m(t)h(v)-5
b(ariable)29 b(called)g Fk(LOGOLIB)e Fs(whose)h(v)-5
b(alue)29 b(is)f(the)g(name)h(of)f(a)h(directory)-8 b(,)150
5230 y(then)33 b(Logo)h(will)f(use)g(that)g(directory)g(instead)h(of)f
(the)g(default)g(library)-8 b(.)48 b(If)33 b(y)m(ou)g(in)m(v)m(ok)m(e)i
(a)e(pro)s(cedure)150 5340 y(that)26 b(has)g(not)g(b)s(een)f
(de\014ned,)h(Logo)h(\014rst)e(lo)s(oks)h(for)g(a)g(\014le)g(in)g(the)g
(curren)m(t)f(directory)i(named)e Fi(proc)p Fk(.lg)p
eop end
%%Page: 6 19
TeXDict begin 6 18 bop 150 -116 a Fs(6)2596 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(where)d Fl(pro)s(c)32 b Fs(is)27
b(the)g(pro)s(cedure)f(name)h(in)g(lo)m(w)m(er)h(case)g(letters.)41
b(If)27 b(suc)m(h)f(a)i(\014le)f(exists,)i(Logo)f(loads)f(that)150
408 y(\014le.)50 b(If)33 b(the)h(missing)f(pro)s(cedure)g(is)g(still)i
(unde\014ned,)d(or)i(if)f(there)h(is)f(no)h(suc)m(h)f(\014le,)i(Logo)f
(then)f(lo)s(oks)150 518 y(in)e(the)h(library)g(directory)g(for)f(a)i
(\014le)e(named)h Fi(proc)e Fs(\(no)i Fk(.lg)p Fs(\))f(and,)h(if)g(it)g
(exists,)h(loads)f(it.)46 b(If)31 b(neither)150 628 y(\014le)h(con)m
(tains)h(a)f(de\014nition)g(for)g(the)g(pro)s(cedure,)f(then)h(Logo)h
(signals)f(an)g(error.)45 b(Sev)m(eral)33 b(pro)s(cedures)150
737 y(that)c(are)g(primitiv)m(e)h(in)e(most)h(v)m(ersions)g(of)g(Logo)h
(are)f(included)f(in)g(the)h(default)f(library)-8 b(,)30
b(so)f(if)f(y)m(ou)h(use)150 847 y(a)i(di\013eren)m(t)g(library)f(y)m
(ou)g(ma)m(y)h(w)m(an)m(t)g(to)h(include)e(some)g(or)h(all)g(of)g(the)f
(default)h(library)f(in)g(it.)150 1421 y Fr(1.4)68 b(T)-11
b(ok)l(enization)150 1581 y Fs(Names)35 b(of)g(pro)s(cedures,)f(v)-5
b(ariables,)36 b(and)e(prop)s(ert)m(y)g(lists)h(are)f(case-insensitiv)m
(e.)56 b(So)34 b(are)h(the)f(sp)s(ecial)150 1690 y(w)m(ords)c
Fk(END)p Fs(,)g Fk(TRUE)p Fs(,)f(and)h Fk(FALSE)p Fs(.)39
b(Case)31 b(of)f(letters)i(is)e(preserv)m(ed)g(in)g(ev)m(erything)i(y)m
(ou)e(t)m(yp)s(e,)h(ho)m(w)m(ev)m(er.)150 1858 y(Within)h(square)f
(brac)m(k)m(ets,)j(w)m(ords)d(are)h(delimited)h(only)e(b)m(y)h(spaces)g
(and)f(square)h(brac)m(k)m(ets.)46 b Fk([2+3])30 b Fs(is)150
1968 y(a)k(list)h(con)m(taining)g(one)f(w)m(ord.)51 b(Note,)37
b(ho)m(w)m(ev)m(er,)f(that)f(the)f(Logo)h(primitiv)m(es)f(that)h(in)m
(terpret)f(suc)m(h)g(a)150 2077 y(list)d(as)f(a)g(Logo)h(instruction)f
(or)g(expression)g(\()p Fk(RUN)p Fs(,)g Fk(IF)p Fs(,)g(etc.\))42
b(reparse)29 b(the)i(list)f(as)h(if)e(it)i(had)e(not)i(b)s(een)150
2187 y(t)m(yp)s(ed)f(inside)g(brac)m(k)m(ets.)150 2355
y(After)35 b(a)g(quotation)h(mark)e(outside)h(square)f(brac)m(k)m(ets,)
j(a)e(w)m(ord)g(is)f(delimited)h(b)m(y)g(a)g(space,)h(a)f(square)150
2464 y(brac)m(k)m(et,)d(or)f(a)f(paren)m(thesis.)150
2632 y(A)40 b(w)m(ord)g(not)g(after)h(a)g(quotation)g(mark)f(or)g
(inside)g(square)g(brac)m(k)m(ets)i(is)e(delimited)h(b)m(y)f(a)g
(space,)k(a)150 2741 y(brac)m(k)m(et,)j(a)42 b(paren)m(thesis,)j(or)d
(an)f(in\014x)g(op)s(erator)i Fk(+-*/=<>)p Fs(.)73 b(Note)43
b(that)f(w)m(ords)g(follo)m(wing)h(colons)150 2851 y(are)c(in)g(this)g
(category)-8 b(.)69 b(Note)40 b(that)g(quote)f(and)f(colon)i(are)g(not)
f(delimiters.)67 b(Eac)m(h)40 b(in\014x)e(op)s(erator)150
2961 y(c)m(haracter)f(is)e(a)g(w)m(ord)g(in)f(itself,)k(except)e(that)f
(the)g(t)m(w)m(o-c)m(haracter)k(sequences)c Fk(<=)p Fs(,)h
Fk(>=)p Fs(,)g(and)e Fk(<>)g Fs(\(the)150 3070 y(latter)e(meaning)e
(not-equal\))i(with)e(no)h(in)m(terv)m(ening)g(space)g(are)g
(recognized)g(as)g(a)g(single)g(w)m(ord.)150 3238 y(A)38
b(w)m(ord)f(consisting)h(of)g(a)f(question)h(mark)f(follo)m(w)m(ed)i(b)
m(y)f(a)f(n)m(um)m(b)s(er)g(\(e.g.,)k Fk(?37)p Fs(\),)e(when)d
(runparsed)150 3347 y(\(i.e.,)c(where)e(a)h(pro)s(cedure)e(name)h(is)h
(exp)s(ected\),)g(is)g(treated)g(as)g(if)f(it)h(w)m(ere)g(the)f
(sequence)390 3515 y Fk(\()47 b(?)h(37)f(\))150 3683
y Fs(making)31 b(the)g(n)m(um)m(b)s(er)e(an)h(input)g(to)h(the)g(?)41
b(pro)s(cedure.)f(\(See)31 b(the)g(discussion)f(of)h(templates,)h(b)s
(elo)m(w.\))150 3792 y(This)e(sp)s(ecial)h(treatmen)m(t)i(do)s(es)d
(not)i(apply)e(to)i(w)m(ords)e(read)h(as)g(data,)h(to)f(w)m(ords)g
(with)f(a)h(non-n)m(um)m(b)s(er)150 3902 y(follo)m(wing)h(the)e
(question)h(mark,)f(or)h(if)f(the)h(question)f(mark)g(is)h(bac)m
(kslashed.)150 4070 y(A)36 b(line)g(\(an)g(instruction)f(line)h(or)g
(one)g(read)g(b)m(y)f Fk(READLIST)f Fs(or)h Fk(READWORD)p
Fs(\))f(can)i(b)s(e)f(con)m(tin)m(ued)i(on)m(to)150 4179
y(the)e(follo)m(wing)h(line)g(if)e(its)i(last)f(c)m(haracter)i(is)e(a)g
(tilde)h(\()p Fk(~)p Fs(\).)54 b Fk(READWORD)33 b Fs(preserv)m(es)i
(the)g(tilde)g(and)g(the)150 4289 y(newline;)c Fk(READLIST)d
Fs(do)s(es)i(not.)150 4457 y(Lines)g(read)g(with)g Fk(READRAWLINE)e
Fs(are)j(nev)m(er)f(con)m(tin)m(ued.)150 4624 y(An)d(instruction)g
(line)g(or)g(a)h(line)f(read)g(b)m(y)g Fk(READLIST)e
Fs(\(but)i(not)g(b)m(y)g Fk(READWORD)p Fs(\))e(is)i(automatically)j
(con-)150 4734 y(tin)m(ued)22 b(to)h(the)g(next)g(line,)h(as)f(if)f
(ended)g(with)g(a)h(tilde,)i(if)d(there)h(are)g(unmatc)m(hed)f(brac)m
(k)m(ets,)j(paren)m(theses,)150 4844 y(braces,)h(or)f(v)m(ertical)i
(bars)d(p)s(ending.)37 b(Ho)m(w)m(ev)m(er,)28 b(it's)e(an)e(error)h(if)
f(the)h(con)m(tin)m(uation)i(line)e(con)m(tains)h(only)150
4953 y(the)33 b(w)m(ord)f Fk(END)p Fs(;)i(this)f(is)f(to)i(prev)m(en)m
(t)g(runa)m(w)m(a)m(y)f(pro)s(cedure)f(de\014nitions.)47
b(Lines)33 b(explicitly)h(con)m(tin)m(ued)150 5063 y(with)c(a)h(tilde)g
(a)m(v)m(oid)h(this)e(restriction.)150 5230 y(If)43 b(a)h(line)h(b)s
(eing)e(t)m(yp)s(ed)g(in)m(teractiv)m(ely)k(on)d(the)g(k)m(eyb)s(oard)g
(is)f(con)m(tin)m(ued,)49 b(either)44 b(with)f(a)h(tilde)h(or)150
5340 y(automatically)-8 b(,)34 b(Logo)d(will)g(displa)m(y)g(a)f(tilde)i
(as)e(a)h(prompt)e(c)m(haracter)j(for)e(the)h(con)m(tin)m(uation)h
(line.)p eop end
%%Page: 7 20
TeXDict begin 7 19 bop 150 -116 a Fs(Chapter)30 b(1:)41
b(In)m(tro)s(duction)2592 b(7)150 299 y(A)39 b(semicolon)i(b)s(egins)d
(a)i(commen)m(t)g(in)f(an)g(instruction)h(line.)67 b(Logo)41
b(ignores)e(c)m(haracters)i(from)e(the)150 408 y(semicolon)32
b(to)g(the)f(end)f(of)h(the)g(line.)43 b(A)30 b(tilde)i(as)f(the)g
(last)h(c)m(haracter)g(still)g(indicates)g(a)f(con)m(tin)m(uation)150
518 y(line,)g(but)f(not)g(a)h(con)m(tin)m(uation)h(of)f(the)f(commen)m
(t.)42 b(F)-8 b(or)31 b(example,)h(t)m(yping)e(the)h(instruction)390
686 y Fk(print)46 b("abc;comment)f(~)390 795 y(def)150
963 y Fs(will)21 b(prin)m(t)f(the)h(w)m(ord)g Fk(abcdef)p
Fs(.)35 b(Semicolon)22 b(has)e(no)h(sp)s(ecial)g(meaning)g(in)g(data)g
(lines)g(read)g(b)m(y)f Fk(READWORD)150 1073 y Fs(or)28
b Fk(READLIST)p Fs(,)e(but)h(suc)m(h)h(a)g(line)g(can)g(later)h(b)s(e)e
(reparsed)g(using)h Fk(RUNPARSE)d Fs(and)i(then)h(commen)m(ts)h(will)
150 1182 y(b)s(e)h(recognized.)150 1350 y(The)c(t)m(w)m(o-c)m(haracter)
k(sequence)d Fk(#!)f Fs(at)i(the)f(b)s(eginning)f(of)h(a)g(line)g(also)
g(starts)h(a)f(commen)m(t.)40 b(Unix)27 b(users)150 1460
y(can)k(therefore)f(write)h(a)g(\014le)f(con)m(taining)i(Logo)g
(commands,)e(starting)h(with)f(the)h(line)390 1627 y
Fk(#!)47 b(/usr/local/bin/logo)150 1795 y Fs(\(or)35
b(wherev)m(er)f(y)m(our)h(Logo)h(executable)g(liv)m(es\))g(and)e(the)h
(\014le)f(will)h(b)s(e)f(executable)i(directly)g(from)e(the)150
1905 y(shell.)150 2072 y(T)-8 b(o)32 b(include)e(an)h(otherwise)h
(delimiting)g(c)m(haracter)g(\(including)f(semicolon)i(or)e(tilde\))h
(in)f(a)g(w)m(ord,)g(pre-)150 2182 y(cede)k(it)h(with)e(bac)m(kslash)i
(\()p Fk(\\)p Fs(\).)54 b(If)34 b(the)h(last)h(c)m(haracter)g(of)f(a)g
(line)g(is)g(a)g(bac)m(kslash,)i(then)d(the)h(newline)150
2291 y(c)m(haracter)41 b(follo)m(wing)h(the)e(bac)m(kslash)g(will)g(b)s
(e)f(part)h(of)g(the)g(last)h(w)m(ord)e(on)h(the)g(line,)i(and)e(the)g
(line)150 2401 y(con)m(tin)m(ues)29 b(on)m(to)g(the)f(follo)m(wing)h
(line.)40 b(T)-8 b(o)28 b(include)g(a)g(bac)m(kslash)g(in)g(a)g(w)m
(ord,)g(use)f Fk(\\\\)p Fs(.)40 b(If)27 b(the)h(com)m(bina-)150
2511 y(tion)33 b(bac)m(kslash-newline)h(is)f(en)m(tered)h(at)f(the)g
(terminal,)i(Logo)f(will)f(issue)g(a)g(bac)m(kslash)g(as)h(a)f(prompt)
150 2620 y(c)m(haracter)g(for)e(the)g(con)m(tin)m(uation)i(line.)44
b(All)31 b(of)h(this)f(applies)g(to)h(data)g(lines)f(read)g(with)g
Fk(READWORD)e Fs(or)150 2730 y Fk(READLIST)f Fs(as)j(w)m(ell)g(as)g(to)
g(instruction)f(lines.)150 2897 y(A)h(line)h(read)e(with)h
Fk(READRAWLINE)d Fs(has)j(no)g(sp)s(ecial)g(quoting)h(mec)m(hanism;)g
(b)s(oth)e(bac)m(kslash)i(and)e(v)m(er-)150 3007 y(tical)i(bar)e
(\(describ)s(ed)g(b)s(elo)m(w\))g(are)h(just)f(ordinary)g(c)m
(haracters.)150 3175 y(An)h(alternativ)m(e)k(notation)e(to)f(include)g
(otherwise)g(delimiting)g(c)m(haracters)i(in)d(w)m(ords)g(is)h(to)h
(enclose)g(a)150 3284 y(group)h(of)g(c)m(haracters)h(in)f(v)m(ertical)i
(bars.)51 b(All)35 b(c)m(haracters)h(b)s(et)m(w)m(een)e(v)m(ertical)j
(bars)c(are)i(treated)g(as)f(if)150 3394 y(they)23 b(w)m(ere)g
(letters.)39 b(In)22 b(data)h(read)g(with)f Fk(READWORD)e
Fs(the)j(v)m(ertical)i(bars)d(are)h(preserv)m(ed)f(in)g(the)h
(resulting)150 3504 y(w)m(ord.)45 b(In)31 b(data)i(read)e(with)h
Fk(READLIST)e Fs(\(or)i(resulting)g(from)f(a)i Fk(PARSE)d
Fs(or)i Fk(RUNPARSE)e Fs(of)i(a)g(w)m(ord\))g(the)150
3613 y(v)m(ertical)25 b(bars)e(do)g(not)g(app)s(ear)g(explicitly;)k
(all)d(p)s(oten)m(tially)h(delimiting)f(c)m(haracters)g(\(including)f
(spaces,)150 3723 y(brac)m(k)m(ets,)30 b(paren)m(theses,)e(and)f
(in\014x)g(op)s(erators\))h(app)s(ear)f(unmark)m(ed,)g(but)g(tok)m
(enized)i(as)f(though)f(they)150 3832 y(w)m(ere)39 b(letters.)66
b(Within)39 b(v)m(ertical)i(bars,)f(bac)m(kslash)f(ma)m(y)g(still)g(b)s
(e)f(used;)k(the)d(only)f(c)m(haracters)i(that)150 3942
y(m)m(ust)30 b(b)s(e)g(bac)m(kslashed)h(in)f(this)g(con)m(text)j(are)d
(bac)m(kslash)h(and)f(v)m(ertical)j(bar)c(themselv)m(es.)150
4110 y(Characters)c(en)m(tered)f(b)s(et)m(w)m(een)h(v)m(ertical)i(bars)
c(are)i(forev)m(er)g(sp)s(ecial,)h(ev)m(en)f(if)g(the)f(w)m(ord)g(or)g
(list)h(con)m(tain-)150 4219 y(ing)k(them)g(is)g(later)h(reparsed)e
(with)g Fk(PARSE)g Fs(or)h Fk(RUNPARSE)p Fs(.)38 b(Characters)29
b(t)m(yp)s(ed)f(after)i(a)f(bac)m(kslash)h(are)150 4329
y(treated)36 b(somewhat)g(di\013eren)m(tly:)50 b(When)35
b(a)h(quoted)f(w)m(ord)g(con)m(taining)h(a)g(bac)m(kslashed)f(c)m
(haracter)i(is)150 4438 y(runparsed,)26 b(the)h(bac)m(kslashed)h(c)m
(haracter)g(loses)g(its)g(sp)s(ecial)f(qualit)m(y)i(and)d(acts)i
(thereafter)g(as)f(if)g(t)m(yp)s(ed)150 4548 y(normally)-8
b(.)56 b(This)35 b(distinction)h(is)f(imp)s(ortan)m(t)h(only)f(if)h(y)m
(ou)f(are)h(building)f(a)h(Logo)g(expression)f(out)h(of)150
4658 y(parts,)30 b(to)h(b)s(e)f Fk(RUN)g Fs(later,)h(and)f(w)m(an)m(t)h
(to)g(use)f(paren)m(theses.)41 b(F)-8 b(or)32 b(example,)390
4825 y Fk(PRINT)46 b(RUN)h(\(SE)g("\\\()g(2)h("+)f(3)g("\\\)\))150
4993 y Fs(will)31 b(prin)m(t)f(5,)h(but)390 5161 y Fk(RUN)47
b(\(SE)g("MAKE)f(""|\(|)h(2\))p eop end
%%Page: 8 21
TeXDict begin 8 20 bop 150 -116 a Fs(8)2596 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(will)h(create)h(a)e(v)-5 b(ariable)31
b(whose)g(name)f(is)g(op)s(en-paren)m(thesis.)41 b(\(Eac)m(h)31
b(example)g(w)m(ould)f(fail)i(if)e(v)m(ertical)150 408
y(bars)g(and)f(bac)m(kslashes)j(w)m(ere)f(in)m(terc)m(hanged.\))150
576 y(A)23 b(normally)f(delimiting)i(c)m(haracter)g(en)m(tered)f
(within)f(v)m(ertical)j(bars)d(is)g Fk(EQUALP)f Fs(to)j(the)e(same)h(c)
m(haracter)150 686 y(without)32 b(the)h(v)m(ertical)h(bars,)f(but)f
(can)g(b)s(e)g(distinguished)g(b)m(y)g(the)h Fk(VBARREDP)d
Fs(predicate.)47 b(\(Ho)m(w)m(ev)m(er,)150 795 y Fk(VBARREDP)27
b Fs(returns)h Fk(TRUE)g Fs(only)h(for)g(c)m(haracters)i(for)e(whic)m
(h)g(sp)s(ecial)h(treatmen)m(t)h(is)e(necessary:)41 b(white-)150
905 y(space,)34 b(paren)m(theses,)f(brac)m(k)m(ets,)i(in\014x)c(op)s
(erators,)i(bac)m(kslash,)h(v)m(ertical)h(bar,)d(tilde,)i(quote,)g
(question)150 1015 y(mark,)c(colon,)i(and)e(semicolon.\))p
eop end
%%Page: 9 22
TeXDict begin 9 21 bop 3705 -116 a Fs(9)150 299 y Fp(2)80
b(Data)55 b(Structure)c(Primitiv)l(es)150 633 y Fr(2.1)68
b(Constructors)150 822 y Fh(w)m(ord)390 969 y Fk(WORD)47
b(word1)f(word2)390 1079 y(\(WORD)g(word1)h(word2)f(word3)g(...\))150
1246 y Fs(outputs)30 b(a)h(w)m(ord)f(formed)f(b)m(y)i(concatenating)h
(its)f(inputs.)150 1444 y Fh(list)390 1591 y Fk(LIST)47
b(thing1)f(thing2)390 1700 y(\(LIST)g(thing1)g(thing2)h(thing3)f(...\))
150 1868 y Fs(outputs)31 b(a)i(list)f(whose)g(mem)m(b)s(ers)f(are)h
(its)h(inputs,)e(whic)m(h)h(can)g(b)s(e)f(an)m(y)i(Logo)g(datum)e(\(w)m
(ord,)i(list,)g(or)150 1977 y(arra)m(y\).)150 2175 y
Fh(sen)m(tence)390 2322 y Fk(SENTENCE)46 b(thing1)g(thing2)390
2431 y(SE)h(thing1)f(thing2)390 2541 y(\(SENTENCE)f(thing1)h(thing2)g
(thing3)h(...\))390 2650 y(\(SE)g(thing1)f(thing2)g(thing3)g(...\))150
2818 y Fs(outputs)33 b(a)h(list)h(whose)e(mem)m(b)s(ers)g(are)h(its)g
(inputs,)g(if)g(those)g(inputs)f(are)h(not)g(lists,)h(or)f(the)g(mem)m
(b)s(ers)150 2928 y(of)d(its)f(inputs,)g(if)g(those)h(inputs)e(are)i
(lists.)150 3125 y Fh(fput)390 3272 y Fk(FPUT)47 b(thing)f(list)150
3440 y Fs(outputs)c(a)g(list)h(equal)f(to)h(its)f(second)h(input)e
(with)g(one)i(extra)g(mem)m(b)s(er,)h(the)e(\014rst)g(input,)i(at)f
(the)150 3549 y(b)s(eginning.)56 b(If)36 b(the)g(second)g(input)f(is)g
(a)i(w)m(ord,)g(then)e(the)h(\014rst)f(input)g(m)m(ust)h(b)s(e)f(a)h
(one-letter)i(w)m(ord,)150 3659 y(and)30 b(FPUT)g(is)h(equiv)-5
b(alen)m(t)31 b(to)g(W)m(ORD.)150 3856 y Fh(lput)390
4003 y Fk(LPUT)47 b(thing)f(list)150 4171 y Fs(outputs)30
b(a)g(list)h(equal)f(to)h(its)g(second)f(input)f(with)h(one)g(extra)h
(mem)m(b)s(er,)f(the)g(\014rst)g(input,)f(at)i(the)f(end.)150
4280 y(If)g(the)h(second)f(input)f(is)i(a)g(w)m(ord,)f(then)g(the)h
(\014rst)e(input)h(m)m(ust)g(b)s(e)g(a)h(one-letter)h(w)m(ord,)e(and)g
(LPUT)g(is)150 4390 y(equiv)-5 b(alen)m(t)32 b(to)f(W)m(ORD)g(with)f
(its)h(inputs)e(in)h(the)h(other)g(order.)150 4587 y
Fh(arra)m(y)390 4734 y Fk(ARRAY)46 b(size)390 4844 y(\(ARRAY)g(size)h
(origin\))150 5011 y Fs(outputs)29 b(an)g(arra)m(y)i(of)e
Fl(size)36 b Fs(mem)m(b)s(ers)29 b(\(m)m(ust)g(b)s(e)g(a)h(p)s(ositiv)m
(e)h(in)m(teger\),)h(eac)m(h)e(of)g(whic)m(h)f(initially)i(is)f(an)150
5121 y(empt)m(y)d(list.)40 b(Arra)m(y)27 b(mem)m(b)s(ers)f(can)h(b)s(e)
f(selected)i(with)f Fk(ITEM)e Fs(and)h(c)m(hanged)i(with)e
Fk(SETITEM)p Fs(.)37 b(The)27 b(\014rst)150 5230 y(mem)m(b)s(er)36
b(of)h(the)g(arra)m(y)h(is)e(mem)m(b)s(er)h(n)m(um)m(b)s(er)e(1)i
(unless)f(an)h Fl(origin)g Fs(input)f(\(m)m(ust)h(b)s(e)g(an)f(in)m
(teger\))j(is)150 5340 y(giv)m(en,)30 b(in)e(whic)m(h)h(case)g(the)g
(\014rst)f(mem)m(b)s(er)g(of)g(the)h(arra)m(y)g(has)g(that)g(n)m(um)m
(b)s(er)e(as)i(its)g(index.)39 b(\(T)m(ypically)p eop
end
%%Page: 10 23
TeXDict begin 10 22 bop 150 -116 a Fs(10)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(0)k(is)h(used)e(as)h(the)h(origin)f(if)g(an)m
(ything.\))53 b(Arra)m(ys)34 b(are)h(prin)m(ted)e(b)m(y)h
Fk(PRINT)f Fs(and)h(friends,)g(and)f(can)i(b)s(e)150
408 y(t)m(yp)s(ed)30 b(in,)g(inside)g(curly)g(braces;)h(indicate)h(an)e
(origin)h(with)f Fk({a)47 b(b)h(c}@0)n Fs(.)150 576 y(See)31
b([ITEM],)f(page)h(12,)h(,)f([SETITEM],)e(page)i(12,)h(,)e([PRINT],)h
(page)g(19,)h(.)150 762 y Fh(mdarra)m(y)390 909 y Fk(MDARRAY)46
b(sizelist)f(\(library)h(procedure\))390 1018 y(\(MDARRAY)g(sizelist)f
(origin\))150 1186 y Fs(outputs)26 b(a)h(m)m(ulti-dimensional)g(arra)m
(y)-8 b(.)40 b(The)26 b(\014rst)g(input)f(m)m(ust)i(b)s(e)e(a)i(list)g
(of)g(one)g(or)f(more)h(p)s(ositiv)m(e)g(in-)150 1295
y(tegers.)39 b(The)23 b(second)g(input,)h(if)f(presen)m(t,)i(m)m(ust)e
(b)s(e)f(a)i(single)f(in)m(teger)i(that)f(applies)f(to)h(ev)m(ery)g
(dimension)150 1405 y(of)31 b(the)f(arra)m(y)-8 b(.)150
1573 y(Ex:)36 b Fk(\(MDARRAY)45 b([3)i(5])h(0\))20 b
Fs(outputs)g(a)h(t)m(w)m(o-dimensional)i(arra)m(y)e(whose)g(mem)m(b)s
(ers)f(range)h(from)f Fk([0)48 b(0])150 1682 y Fs(to)31
b Fk([2)47 b(4])p Fs(.)150 1868 y Fh(listtoarra)m(y)390
2015 y Fk(LISTTOARRAY)e(list)390 2124 y(\(LISTTOARRAY)f(list)j
(origin\))150 2292 y Fs(outputs)29 b(an)g(arra)m(y)g(of)g(the)h(same)f
(size)h(as)f(the)h(input)e(list,)i(whose)f(mem)m(b)s(ers)f(are)i(the)f
(mem)m(b)s(ers)f(of)i(the)150 2402 y(input)f(list.)150
2587 y Fh(arra)m(ytolist)390 2734 y Fk(ARRAYTOLIST)45
b(array)150 2902 y Fs(outputs)28 b(a)h(list)g(whose)f(mem)m(b)s(ers)g
(are)h(the)g(mem)m(b)s(ers)e(of)i(the)g(input)e(arra)m(y)-8
b(.)41 b(The)28 b(\014rst)g(mem)m(b)s(er)g(of)h(the)150
3011 y(output)h(is)g(the)h(\014rst)f(mem)m(b)s(er)f(of)i(the)f(arra)m
(y)-8 b(,)32 b(regardless)f(of)f(the)h(arra)m(y's)g(origin.)150
3197 y Fh(com)m(bine)390 3344 y Fk(COMBINE)46 b(thing1)g(thing2)g
(\(library)g(procedure\))150 3511 y Fs(if)66 b Fl(thing2)74
b Fs(is)67 b(a)f(w)m(ord,)76 b(outputs)66 b Fk(WORD)46
b(thing1)g(thing2)o Fs(.)148 b(If)66 b Fl(thing2)74 b
Fs(is)66 b(a)h(list,)76 b(outputs)150 3621 y Fk(FPUT)47
b(thing1)f(thing2)n Fs(.)150 3789 y(See)31 b([W)m(ORD],)h(page)f(9,)g
(,)f([FPUT],)h(page)h(9,)150 3974 y Fh(rev)m(erse)390
4121 y Fk(REVERSE)46 b(list)g(\(library)g(procedure\))150
4289 y Fs(outputs)30 b(a)h(list)g(whose)f(mem)m(b)s(ers)f(are)i(the)g
(mem)m(b)s(ers)e(of)i(the)f(input)g(list,)h(in)f(rev)m(erse)h(order.)
150 4474 y Fh(gensym)390 4621 y Fk(GENSYM)46 b(\(library)g(procedure\))
150 4789 y Fs(outputs)30 b(a)h(unique)e(w)m(ord)h(eac)m(h)i(time)f
(it's)g(in)m(v)m(ok)m(ed.)42 b(The)30 b(w)m(ords)g(are)g(of)h(the)f
(form)g Fk(G1)p Fs(,)g Fk(G2)p Fs(,)g(etc.)150 5016 y
Fr(2.2)68 b(Data)46 b(Selectors)150 5193 y Fh(\014rst)390
5340 y Fk(FIRST)g(thing)p eop end
%%Page: 11 24
TeXDict begin 11 23 bop 150 -116 a Fs(Chapter)30 b(2:)41
b(Data)32 b(Structure)d(Primitiv)m(es)2009 b(11)150 299
y(if)28 b(the)h(input)f(is)g(a)h(w)m(ord,)g(outputs)f(the)h(\014rst)f
(c)m(haracter)i(of)e(the)h(w)m(ord.)40 b(If)28 b(the)h(input)e(is)i(a)g
(list,)g(outputs)150 408 y(the)k(\014rst)f(mem)m(b)s(er)g(of)h(the)g
(list.)48 b(If)33 b(the)g(input)f(is)g(an)h(arra)m(y)-8
b(,)34 b(outputs)f(the)g(origin)g(of)g(the)g(arra)m(y)g(\(that)150
518 y(is,)e(the)f Fg(index)j(of)50 b Fs(the)31 b(\014rst)e(mem)m(b)s
(er)h(of)h(the)f(arra)m(y\).)150 761 y Fh(\014rsts)390
908 y Fk(FIRSTS)46 b(list)150 1076 y Fs(outputs)33 b(a)h(list)g(con)m
(taining)h(the)e Fk(FIRST)f Fs(of)i(eac)m(h)g(mem)m(b)s(er)f(of)h(the)f
(input)g(list.)50 b(It)34 b(is)f(an)g(error)g(if)h(an)m(y)150
1185 y(mem)m(b)s(er)25 b(of)g(the)g(input)f(list)i(is)f(empt)m(y)-8
b(.)40 b(\(The)25 b(input)f(itself)i(ma)m(y)g(b)s(e)f(empt)m(y)-8
b(,)27 b(in)e(whic)m(h)g(case)h(the)f(output)150 1295
y(is)30 b(also)i(empt)m(y)-8 b(.\))42 b(This)29 b(could)i(b)s(e)e
(written)i(as)390 1462 y Fk(to)47 b(firsts)f(:list)390
1572 y(output)g(map)h("first)f(:list)390 1682 y(end)150
1849 y Fs(but)37 b(is)h(pro)m(vided)f(as)h(a)g(primitiv)m(e)h(in)e
(order)h(to)g(sp)s(eed)f(up)g(the)h(iteration)h(to)s(ols)f
Fk(MAP)p Fs(,)h Fk(MAP.SE)p Fs(,)g(and)150 1959 y Fk(FOREACH)p
Fs(.)390 2127 y Fk(to)47 b(transpose)e(:matrix)390 2236
y(if)i(emptyp)f(first)h(:matrix)e([op)i([]])390 2346
y(op)g(fput)g(firsts)f(:matrix)g(transpose)f(bfs)i(:matrix)390
2455 y(end)150 2623 y Fs(See)31 b([MAP],)g(page)g(77,)h(,)e([MAPdSE],)h
(page)g(77,)g(,)g([F)m(OREA)m(CH],)h(page)f(76,)150 2866
y Fh(last)390 3013 y Fk(LAST)47 b(wordorlist)150 3181
y Fs(if)29 b(the)h(input)e(is)i(a)g(w)m(ord,)f(outputs)g(the)g(last)i
(c)m(haracter)g(of)e(the)h(w)m(ord.)40 b(If)29 b(the)g(input)g(is)g(a)h
(list,)g(outputs)150 3290 y(the)h(last)g(mem)m(b)s(er)f(of)g(the)h
(list.)150 3533 y Fh(but\014rst)390 3680 y Fk(BUTFIRST)46
b(wordorlist)390 3790 y(BF)h(wordorlist)150 3957 y Fs(if)30
b(the)g(input)f(is)h(a)g(w)m(ord,)g(outputs)f(a)h(w)m(ord)g(con)m
(taining)h(all)g(but)e(the)h(\014rst)f(c)m(haracter)j(of)e(the)g
(input.)39 b(If)150 4067 y(the)31 b(input)e(is)h(a)h(list,)g(outputs)f
(a)h(list)g(con)m(taining)h(all)f(but)f(the)g(\014rst)g(mem)m(b)s(er)g
(of)g(the)h(input.)150 4310 y Fh(but\014rsts)390 4457
y Fk(BUTFIRSTS)45 b(list)390 4566 y(BFS)i(list)150 4734
y Fs(outputs)25 b(a)h(list)g(con)m(taining)h(the)f Fk(BUTFIRST)e
Fs(of)h(eac)m(h)i(mem)m(b)s(er)e(of)h(the)g(input)e(list.)40
b(It)26 b(is)f(an)h(error)f(if)h(an)m(y)150 4844 y(mem)m(b)s(er)34
b(of)h(the)g(input)f(list)i(is)f(empt)m(y)g(or)g(an)g(arra)m(y)-8
b(.)55 b(\(The)35 b(input)f(itself)i(ma)m(y)f(b)s(e)f(empt)m(y)-8
b(,)38 b(in)c(whic)m(h)150 4953 y(case)d(the)g(output)f(is)g(also)i
(empt)m(y)-8 b(.\))42 b(This)29 b(could)i(b)s(e)e(written)i(as)390
5121 y Fk(to)47 b(butfirsts)e(:list)390 5230 y(output)h(map)h
("butfirst)e(:list)390 5340 y(end)p eop end
%%Page: 12 25
TeXDict begin 12 24 bop 150 -116 a Fs(12)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(but)37 b(is)h(pro)m(vided)f(as)h(a)g(primitiv)m
(e)h(in)e(order)h(to)g(sp)s(eed)f(up)g(the)h(iteration)h(to)s(ols)f
Fk(MAP)p Fs(,)h Fk(MAP.SE)p Fs(,)g(and)150 408 y Fk(FOREACH)p
Fs(.)150 576 y(See)31 b([MAP],)g(page)g(77,)h(,)e([MAPdSE],)h(page)g
(77,)g(,)g([F)m(OREA)m(CH],)h(page)f(76,)150 768 y Fh(butlast)390
915 y Fk(BUTLAST)46 b(wordorlist)390 1024 y(BL)h(wordorlist)150
1192 y Fs(if)31 b(the)g(input)e(is)i(a)g(w)m(ord,)g(outputs)f(a)h(w)m
(ord)f(con)m(taining)j(all)e(but)f(the)h(last)h(c)m(haracter)g(of)f
(the)g(input.)40 b(If)150 1302 y(the)31 b(input)e(is)h(a)h(list,)g
(outputs)f(a)h(list)g(con)m(taining)h(all)f(but)f(the)g(last)i(mem)m(b)
s(er)d(of)i(the)g(input.)150 1493 y Fh(item)390 1640
y Fk(ITEM)47 b(index)f(thing)150 1808 y Fs(if)38 b(the)f
Fl(thing)46 b Fs(is)37 b(a)h(w)m(ord,)h(outputs)f(the)f
Fl(index)6 b Fs(th)38 b(c)m(haracter)h(of)e(the)h(w)m(ord.)62
b(If)37 b(the)h Fl(thing)45 b Fs(is)38 b(a)g(list,)150
1917 y(outputs)k(the)h Fl(index)6 b Fs(th)43 b(mem)m(b)s(er)f(of)h(the)
f(list.)79 b(If)42 b(the)h Fl(thing)51 b Fs(is)42 b(an)h(arra)m(y)-8
b(,)47 b(outputs)42 b(the)h Fl(index)6 b Fs(th)150 2027
y(mem)m(b)s(er)28 b(of)g(the)h(arra)m(y)-8 b(.)41 b Fl(Index)34
b Fs(starts)29 b(at)g(1)g(for)f(w)m(ords)g(and)f(lists;)j(the)f
(starting)g(index)f(of)h(an)f(arra)m(y)h(is)150 2136
y(sp)s(eci\014ed)h(when)f(the)i(arra)m(y)f(is)h(created.)150
2328 y Fh(mditem)390 2475 y Fk(MDITEM)46 b(indexlist)f(array)i
(\(library)e(procedure\))150 2643 y Fs(outputs)25 b(the)h(mem)m(b)s(er)
f(of)h(the)g(m)m(ultidimensional)g Fl(arra)m(y)34 b Fs(selected)27
b(b)m(y)f(the)g(list)g(of)g(n)m(um)m(b)s(ers)e Fl(indexlist)p
Fs(.)150 2834 y Fh(pic)m(k)390 2981 y Fk(PICK)47 b(list)f(\(library)g
(procedure\))150 3149 y Fs(outputs)30 b(a)h(randomly)e(c)m(hosen)i(mem)
m(b)s(er)f(of)h(the)f(input)g(list.)150 3340 y Fh(remo)m(v)m(e)390
3487 y Fk(REMOVE)46 b(thing)g(list)h(\(library)f(procedure\))150
3655 y Fs(outputs)30 b(a)h(cop)m(y)g(of)f Fl(list)j Fs(with)d(ev)m(ery)
h(mem)m(b)s(er)f(equal)h(to)g Fl(thing)38 b Fs(remo)m(v)m(ed.)150
3846 y Fh(remdup)390 3993 y Fk(REMDUP)46 b(list)h(\(library)e
(procedure\))150 4161 y Fs(outputs)37 b(a)h(cop)m(y)g(of)g
Fl(list)i Fs(with)e(duplicate)g(mem)m(b)s(ers)f(remo)m(v)m(ed.)63
b(If)37 b(t)m(w)m(o)i(or)e(more)h(mem)m(b)s(ers)f(of)h(the)150
4271 y(input)29 b(are)i(equal,)g(the)g(righ)m(tmost)g(of)g(those)g(mem)
m(b)s(ers)e(is)i(the)f(one)h(that)g(remains)f(in)g(the)h(output.)150
4462 y Fh(quoted)390 4609 y Fk(QUOTED)46 b(thing)g(\(library)g
(procedure\))150 4777 y Fs(outputs)30 b(its)h(input,)e(if)i(a)f(list;)i
(outputs)d(its)i(input)f(with)g(a)h(quotation)g(mark)f(prep)s(ended,)f
(if)h(a)h(w)m(ord.)150 5010 y Fr(2.3)68 b(Data)46 b(Mutators)150
5193 y Fh(setitem)390 5340 y Fk(SETITEM)g(index)g(array)h(value)p
eop end
%%Page: 13 26
TeXDict begin 13 25 bop 150 -116 a Fs(Chapter)30 b(2:)41
b(Data)32 b(Structure)d(Primitiv)m(es)2009 b(13)150 299
y(command.)58 b(Replaces)37 b(the)g Fl(index)6 b Fs(th)35
b(mem)m(b)s(er)h(of)g Fl(arra)m(y)45 b Fs(with)36 b(the)g(new)g
Fl(v)-5 b(alue)p Fs(.)58 b(Ensures)35 b(that)i(the)150
408 y(resulting)30 b(arra)m(y)h(is)g(not)f(circular,)h(i.e.,)h
Fl(v)-5 b(alue)36 b Fs(ma)m(y)31 b(not)g(b)s(e)e(a)i(list)g(or)g(arra)m
(y)f(that)h(con)m(tains)h Fl(arra)m(y)p Fs(.)150 613
y Fh(mdsetitem)390 760 y Fk(MDSETITEM)45 b(indexlist)h(array)g(value)g
(\(library)g(procedure\))150 927 y Fs(command.)40 b(Replaces)32
b(the)f(mem)m(b)s(er)e(of)i Fl(arra)m(y)39 b Fs(c)m(hosen)30
b(b)m(y)h Fl(indexlist)h Fs(with)e(the)h(new)f Fl(v)-5
b(alue)p Fs(.)150 1132 y Fh(.set\014rst)390 1279 y Fk(.SETFIRST)45
b(list)i(value)150 1446 y Fs(command.)40 b(Changes)31
b(the)f(\014rst)g(mem)m(b)s(er)g(of)g Fl(list)j Fs(to)e(b)s(e)f
Fl(v)-5 b(alue)p Fs(.)150 1614 y(W)-10 b(ARNING:)31 b(Primitiv)m(es)f
(whose)g(names)f(start)h(with)f(a)h(p)s(erio)s(d)f(are)g
Fj(dangerous)p Fs(.)41 b(Their)29 b(use)g(b)m(y)g(non-)150
1724 y(exp)s(erts)39 b(is)h(not)g(recommended.)68 b(The)39
b(use)g(of)h Fk(.SETFIRST)d Fs(can)j(lead)g(to)g(circular)g(list)g
(structures,)150 1833 y(whic)m(h)28 b(will)g(get)h(some)f(Logo)h
(primitiv)m(es)f(in)m(to)h(in\014nite)f(lo)s(ops,)g(and)f(to)i(unexp)s
(ected)e(c)m(hanges)i(to)g(other)150 1943 y(data)i(structures)f(that)h
(share)f(storage)i(with)e(the)g(list)h(b)s(eing)f(mo)s(di\014ed.)150
2147 y Fh(.setbf)390 2294 y Fk(.SETBF)46 b(list)h(value)150
2462 y Fs(command.)40 b(Changes)31 b(the)f(but\014rst)f(of)i
Fl(list)i Fs(to)e(b)s(e)f Fl(v)-5 b(alue)p Fs(.)150 2629
y(W)-10 b(ARNING:)46 b(Primitiv)m(es)f(whose)f(names)h(start)g(with)f
(a)h(p)s(erio)s(d)e(are)h Fj(dangerous)p Fs(.)83 b(Their)44
b(use)g(b)m(y)150 2739 y(non-exp)s(erts)37 b(is)g(not)h(recommended.)61
b(The)37 b(use)g(of)g Fk(.SETBF)f Fs(can)i(lead)f(to)i(circular)e(list)
h(structures,)150 2848 y(whic)m(h)33 b(will)i(get)f(some)h(Logo)g
(primitiv)m(es)f(in)m(to)h(in\014nite)e(lo)s(ops;)j(unexp)s(ected)d(c)m
(hanges)i(to)f(other)g(data)150 2958 y(structures)23
b(that)h(share)f(storage)i(with)e(the)h(list)g(b)s(eing)f(mo)s
(di\014ed;)i(or)f(to)g(Logo)h(crashes)e(and)g(coredumps)150
3068 y(if)30 b(the)h(but\014rst)e(of)h(a)h(list)g(is)g(not)f(itself)h
(a)g(list.)150 3272 y Fh(.setitem)390 3419 y Fk(.SETITEM)46
b(index)g(array)g(value)150 3587 y Fs(command.)54 b(Changes)34
b(the)h Fl(index)6 b Fs(th)35 b(mem)m(b)s(er)f(of)h Fl(arra)m(y)43
b Fs(to)36 b(b)s(e)e Fl(v)-5 b(alue)p Fs(,)37 b(lik)m(e)f
Fk(SETITEM)p Fs(,)e(but)g(without)150 3696 y(c)m(hec)m(king)e(for)e
(circularit)m(y)-8 b(.)150 3864 y(W)e(ARNING:)31 b(Primitiv)m(es)f
(whose)g(names)f(start)h(with)f(a)h(p)s(erio)s(d)f(are)g
Fj(dangerous)p Fs(.)41 b(Their)29 b(use)g(b)m(y)g(non-)150
3973 y(exp)s(erts)34 b(is)g(not)g(recommended.)51 b(The)33
b(use)h(of)g Fk(.SETITEM)e Fs(can)i(lead)g(to)h(circular)f(arra)m(ys,)i
(whic)m(h)e(will)150 4083 y(get)e(some)e(Logo)i(primitiv)m(es)f(in)m
(to)g(in\014nite)f(lo)s(ops.)150 4251 y(See)h([SETITEM],)e(page)j(12.)
150 4455 y Fh(push)390 4602 y Fk(PUSH)47 b(stackname)e(thing)h
(\(library)g(procedure\))150 4770 y Fs(command.)67 b(Adds)38
b(the)i Fl(thing)47 b Fs(to)40 b(the)f(stac)m(k)i(that)f(is)f(the)h(v)
-5 b(alue)40 b(of)f(the)g(v)-5 b(ariable)40 b(whose)g(name)f(is)150
4879 y Fl(stac)m(kname)p Fs(.)i(This)26 b(v)-5 b(ariable)27
b(m)m(ust)f(ha)m(v)m(e)h(a)g(list)g(as)g(its)g(v)-5 b(alue;)28
b(the)e(initial)i(v)-5 b(alue)27 b(should)e(b)s(e)h(the)h(empt)m(y)150
4989 y(list.)41 b(New)31 b(mem)m(b)s(ers)f(are)g(added)g(at)h(the)g
(fron)m(t)f(of)h(the)f(list.)150 5193 y Fh(p)s(op)390
5340 y Fk(POP)47 b(stackname)e(\(library)h(procedure\))p
eop end
%%Page: 14 27
TeXDict begin 14 26 bop 150 -116 a Fs(14)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(outputs)39 b(the)h(most)g(recen)m(tly)h
Fk(PUSH)p Fs(ed)d(mem)m(b)s(er)h(of)h(the)g(stac)m(k)h(that)f(is)g(the)
f(v)-5 b(alue)41 b(of)e(the)h(v)-5 b(ariable)150 408
y(whose)30 b(name)h(is)f Fl(stac)m(kname)37 b Fs(and)30
b(remo)m(v)m(es)i(that)f(mem)m(b)s(er)e(from)h(the)h(stac)m(k.)150
608 y Fh(queue)390 755 y Fk(QUEUE)46 b(queuename)g(thing)g(\(library)g
(procedure\))150 923 y Fs(command.)63 b(Adds)36 b(the)i
Fl(thing)46 b Fs(to)38 b(the)g(queue)g(that)g(is)g(the)g(v)-5
b(alue)38 b(of)g(the)g(v)-5 b(ariable)39 b(whose)e(name)h(is)150
1033 y Fl(queuename)p Fs(.)h(This)23 b(v)-5 b(ariable)26
b(m)m(ust)e(ha)m(v)m(e)i(a)f(list)g(as)g(its)g(v)-5 b(alue;)27
b(the)e(initial)g(v)-5 b(alue)25 b(should)f(b)s(e)g(the)h(empt)m(y)150
1142 y(list.)41 b(New)31 b(mem)m(b)s(ers)f(are)g(added)g(at)h(the)g
(bac)m(k)g(of)f(the)h(list.)150 1342 y Fh(dequeue)390
1489 y Fk(DEQUEUE)46 b(queuename)f(\(library)h(procedure\))150
1657 y Fs(outputs)37 b(the)i(least)g(recen)m(tly)g Fk(QUEUE)p
Fs(d)d(mem)m(b)s(er)i(of)g(the)g(queue)g(that)g(is)g(the)g(v)-5
b(alue)39 b(of)f(the)g(v)-5 b(ariable)150 1766 y(whose)30
b(name)h(is)f Fl(queuename)35 b Fs(and)30 b(remo)m(v)m(es)i(that)f(mem)
m(b)s(er)f(from)f(the)i(queue.)150 2008 y Fr(2.4)68 b(Predicates)150
2200 y Fh(w)m(ordp)390 2347 y Fk(WORDP)46 b(thing)390
2456 y(WORD?)g(thing)150 2624 y Fs(outputs)30 b Fk(TRUE)f
Fs(if)h(the)h(input)e(is)i(a)g(w)m(ord,)f Fk(FALSE)f
Fs(otherwise.)150 2824 y Fh(listp)390 2971 y Fk(LISTP)46
b(thing)390 3081 y(LIST?)g(thing)150 3248 y Fs(outputs)30
b Fk(TRUE)f Fs(if)h(the)h(input)e(is)i(a)g(list,)g Fk(FALSE)e
Fs(otherwise.)150 3448 y Fh(arra)m(yp)390 3595 y Fk(ARRAYP)46
b(thing)390 3705 y(ARRAY?)g(thing)150 3872 y Fs(outputs)30
b Fk(TRUE)f Fs(if)h(the)h(input)e(is)i(an)f(arra)m(y)-8
b(,)32 b Fk(FALSE)d Fs(otherwise.)150 4072 y Fh(empt)m(yp)390
4219 y Fk(EMPTYP)46 b(thing)390 4329 y(EMPTY?)g(thing)150
4497 y Fs(outputs)30 b Fk(TRUE)f Fs(if)h(the)h(input)e(is)i(the)f(empt)
m(y)h(w)m(ord)f(or)g(the)h(empt)m(y)g(list,)g Fk(FALSE)e
Fs(otherwise.)150 4697 y Fh(equalp)390 4844 y Fk(EQUALP)46
b(thing1)g(thing2)390 4953 y(EQUAL?)g(thing1)g(thing2)390
5063 y(thing1)g(=)i(thing2)150 5230 y Fs(outputs)41 b
Fk(TRUE)f Fs(if)i(the)f(inputs)g(are)g(equal,)k Fk(FALSE)40
b Fs(otherwise.)75 b(Tw)m(o)42 b(n)m(um)m(b)s(ers)e(are)h(equal)h(if)g
(they)150 5340 y(ha)m(v)m(e)35 b(the)e(same)h(n)m(umeric)f(v)-5
b(alue.)50 b(Tw)m(o)33 b(non-n)m(umeric)g(w)m(ords)g(are)h(equal)g(if)f
(they)g(con)m(tain)i(the)f(same)p eop end
%%Page: 15 28
TeXDict begin 15 27 bop 150 -116 a Fs(Chapter)30 b(2:)41
b(Data)32 b(Structure)d(Primitiv)m(es)2009 b(15)150 299
y(c)m(haracters)39 b(in)e(the)g(same)h(order.)61 b(If)37
b(there)h(is)f(a)h(v)-5 b(ariable)38 b(named)f Fk(CASEIGNOREDP)d
Fs(whose)j(v)-5 b(alue)38 b(is)150 408 y Fk(TRUE)p Fs(,)23
b(then)f(an)h(upp)s(er)d(case)k(letter)g(is)e(considered)h(the)f(same)h
(as)g(the)g(corresp)s(onding)e(lo)m(w)m(er)j(case)f(letter.)150
518 y(\(This)33 b(is)h(the)g(case)h(b)m(y)e(default.\))51
b(Tw)m(o)34 b(lists)g(are)h(equal)f(if)f(their)h(mem)m(b)s(ers)f(are)h
(equal.)51 b(An)34 b(arra)m(y)g(is)150 628 y(only)k(equal)h(to)f
(itself;)43 b(t)m(w)m(o)d(separately)f(created)g(arra)m(ys)g(are)f(nev)
m(er)g(equal)h(ev)m(en)g(if)f(their)g(mem)m(b)s(ers)150
737 y(are)e(equal.)57 b(\(It)36 b(is)g(imp)s(ortan)m(t)g(to)g(b)s(e)f
(able)i(to)f(kno)m(w)g(if)f(t)m(w)m(o)i(expressions)f(ha)m(v)m(e)h(the)
e(same)i(arra)m(y)f(as)150 847 y(their)c(v)-5 b(alue)33
b(b)s(ecause)g(arra)m(ys)f(are)h(m)m(utable;)i(if,)e(for)f(example,)i
(t)m(w)m(o)f(v)-5 b(ariables)33 b(ha)m(v)m(e)h(the)f(same)f(arra)m(y)
150 956 y(as)f(their)f(v)-5 b(alues)31 b(then)f(p)s(erforming)f
Fk(SETITEM)f Fs(on)j(one)f(of)h(them)f(will)h(also)g(c)m(hange)h(the)e
(other.\))150 1124 y(See)h([CASEIGNOREDP],)f(page)h(89,)h(,)e
([SETITEM],)g(page)h(12,)150 1381 y Fh(notequalp)390
1528 y Fk(NOTEQUALP)45 b(thing1)h(thing2)390 1638 y(NOTEQUAL?)f(thing1)
h(thing2)390 1748 y(thing1)g(<>)h(thing2)150 1915 y Fs(outputs)42
b Fk(FALSE)e Fs(if)i(the)g(inputs)f(are)i(equal,)j Fk(TRUE)41
b Fs(otherwise.)76 b(See)42 b Fk(EQUALP)e Fs(for)i(the)g(meaning)h(of)
150 2025 y(equalit)m(y)32 b(for)e(di\013eren)m(t)h(data)g(t)m(yp)s(es.)
150 2282 y Fh(b)s(eforep)390 2429 y Fk(BEFOREP)46 b(word1)g(word2)390
2539 y(BEFORE?)g(word1)g(word2)150 2707 y Fs(outputs)24
b Fk(TRUE)f Fs(if)i Fl(w)m(ord1)32 b Fs(comes)25 b(b)s(efore)f
Fl(w)m(ord2)32 b Fs(in)24 b(ASCI)s(I)f(collating)k(sequence)e(\(for)g
(w)m(ords)f(of)h(letters,)150 2816 y(in)31 b(alphab)s(etical)h
(order\).)42 b(Case-sensitivit)m(y)33 b(is)d(determined)h(b)m(y)g(the)g
(v)-5 b(alue)31 b(of)g Fk(CASEIGNOREDP)p Fs(.)39 b(Note)150
2926 y(that)29 b(if)f(the)g(inputs)f(are)h(n)m(um)m(b)s(ers,)f(the)i
(result)f(ma)m(y)g(not)h(b)s(e)e(the)h(same)h(as)f(with)g
Fk(LESSP)p Fs(;)f(for)h(example,)150 3035 y Fk(BEFOREP)46
b(3)h(12)30 b Fs(is)g(false)h(b)s(ecause)g(3)g(collates)h(after)f(1.)
150 3203 y(See)g([CASEIGNOREDP],)f(page)h(89,)h(,)e([LESSP],)g(page)h
(32,)150 3460 y Fh(.eq)390 3607 y Fk(.EQ)47 b(thing1)f(thing2)150
3775 y Fs(outputs)30 b Fk(TRUE)g Fs(if)h(its)g(t)m(w)m(o)i(inputs)c
(are)j(the)f(same)g(datum,)g(so)g(that)h(applying)f(a)g(m)m(utator)h
(to)f(one)h(will)150 3885 y(c)m(hange)g(the)e(other)h(as)f(w)m(ell.)42
b(Outputs)29 b Fk(FALSE)g Fs(otherwise,)i(ev)m(en)g(if)f(the)h(inputs)e
(are)i(equal)g(in)f(v)-5 b(alue.)150 4052 y(W)-10 b(ARNING:)31
b(Primitiv)m(es)f(whose)g(names)f(start)h(with)f(a)h(p)s(erio)s(d)f
(are)g Fj(dangerous)p Fs(.)41 b(Their)29 b(use)g(b)m(y)g(non-)150
4162 y(exp)s(erts)40 b(is)h(not)g(recommended.)72 b(The)40
b(use)g(of)h(m)m(utators)h(can)f(lead)g(to)h(circular)f(data)g
(structures,)150 4271 y(in\014nite)30 b(lo)s(ops,)h(or)f(Logo)i
(crashes.)150 4529 y Fh(mem)m(b)s(erp)390 4676 y Fk(MEMBERP)46
b(thing1)g(thing2)390 4785 y(MEMBER?)g(thing1)g(thing2)150
4953 y Fs(if)25 b Fl(thing2)32 b Fs(is)24 b(a)h(list)h(or)e(an)h(arra)m
(y)-8 b(,)26 b(outputs)e Fk(TRUE)g Fs(if)g Fl(thing1)33
b Fs(is)24 b Fk(EQUALP)f Fs(to)i(a)g(mem)m(b)s(er)f(of)h
Fl(thing2)p Fs(,)h Fk(FALSE)150 5063 y Fs(otherwise.)42
b(If)30 b Fl(thing2)38 b Fs(is)31 b(a)g(w)m(ord,)f(outputs)g
Fk(TRUE)g Fs(if)g Fl(thing1)39 b Fs(is)30 b(a)h(one-c)m(haracter)i(w)m
(ord)d Fk(EQUALP)f Fs(to)j(a)150 5172 y(c)m(haracter)g(of)f
Fl(thing2)p Fs(,)g Fk(FALSE)e Fs(otherwise.)150 5340
y(See)i([EQUALP],)f(page)h(14,)h(.)p eop end
%%Page: 16 29
TeXDict begin 16 28 bop 150 -116 a Fs(16)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(substringp)390 446 y Fk(SUBSTRINGP)45
b(thing1)h(thing2)390 555 y(SUBSTRING?)f(thing1)h(thing2)150
723 y Fs(if)33 b Fl(thing1)40 b Fs(or)33 b Fl(thing2)41
b Fs(is)33 b(a)g(list)h(or)e(an)h(arra)m(y)-8 b(,)35
b(outputs)d Fk(FALSE)p Fs(.)47 b(If)33 b Fl(thing2)40
b Fs(is)33 b(a)g(w)m(ord,)h(outputs)e Fk(TRUE)150 833
y Fs(if)e Fl(thing1)38 b Fs(is)31 b Fk(EQUALP)d Fs(to)k(a)e(substring)g
(of)g Fl(thing2)p Fs(,)h Fk(FALSE)e Fs(otherwise.)150
1000 y(See)i([EQUALP],)f(page)h(14,)h(.)150 1217 y Fh(n)m(um)m(b)s(erp)
390 1364 y Fk(NUMBERP)46 b(thing)390 1474 y(NUMBER?)g(thing)150
1641 y Fs(outputs)30 b Fk(TRUE)f Fs(if)h(the)h(input)e(is)i(a)g(n)m(um)
m(b)s(er,)e Fk(FALSE)g Fs(otherwise.)150 1858 y Fh(vbarredp)390
2005 y Fk(VBARREDP)46 b(char)390 2114 y(VBARRED?)g(char)390
2224 y(BACKSLASHEDP)e(char)1479 b(\(library)45 b(procedure\))390
2334 y(BACKSLASHED?)f(char)1479 b(\(library)45 b(procedure\))150
2501 y Fs(outputs)25 b Fk(TRUE)g Fs(if)h(the)g(input)f(c)m(haracter)j
(w)m(as)e(originally)h(en)m(tered)g(in)m(to)g(Logo)g(within)e(v)m
(ertical)j(bars)e(\()p Fk(|)p Fs(\))150 2611 y(to)31
b(prev)m(en)m(t)f(its)h(usual)e(sp)s(ecial)i(syn)m(tactic)h(meaning,)e
Fk(FALSE)f Fs(otherwise.)41 b(\(Outputs)29 b Fk(TRUE)g
Fs(only)h(if)g(the)150 2721 y(c)m(haracter)i(is)e(a)h(bac)m(kslashed)g
(space,)g(tab,)g(newline,)g(or)f(one)h(of)f Fk(\(\)[]+-*/=<>":;\\~?|)c
Fs(\))150 2888 y(The)f(names)g Fk(BACKSLASHEDP)d Fs(and)j
Fk(BACKSLASHED?)d Fs(are)j(included)g(in)g(the)g(Logo)i(library)d(for)h
(bac)m(kw)m(ard)150 2998 y(compatibilit)m(y)k(with)d(the)h(former)f
(names)g(of)h(this)f(primitiv)m(e,)j(although)e(it)g(do)s(es)f
Fg(not)36 b Fs(output)26 b Fk(TRUE)f Fs(for)150 3107
y(c)m(haracters)32 b(originally)g(en)m(tered)f(with)f(bac)m(kslashes.)
150 3374 y Fr(2.5)68 b(Queries)150 3583 y Fh(coun)m(t)390
3729 y Fk(COUNT)46 b(thing)150 3897 y Fs(outputs)31 b(the)h(n)m(um)m(b)
s(er)e(of)i(c)m(haracters)h(in)e(the)h(input,)f(if)h(the)g(input)f(is)g
(a)h(w)m(ord;)g(outputs)f(the)h(n)m(um)m(b)s(er)150 4007
y(of)h(mem)m(b)s(ers)g(in)g(the)g(input,)g(if)h(it)f(is)h(a)f(list)h
(or)f(an)g(arra)m(y)-8 b(.)51 b(\(F)-8 b(or)34 b(an)f(arra)m(y)-8
b(,)35 b(this)e(ma)m(y)h(or)f(ma)m(y)h(not)g(b)s(e)150
4116 y(the)d(index)f(of)g(the)h(last)g(mem)m(b)s(er,)f(dep)s(ending)f
(on)h(the)h(arra)m(y's)g(origin.\))150 4333 y Fh(ascii)390
4480 y Fk(ASCII)46 b(char)150 4648 y Fs(outputs)32 b(the)h(in)m(teger)h
(\(b)s(et)m(w)m(een)g(0)f(and)f(255\))i(that)f(represen)m(ts)g(the)f
(input)g(c)m(haracter)i(in)f(the)f(ASCI)s(I)150 4757
y(co)s(de.)61 b(In)m(terprets)37 b(con)m(trol)h(c)m(haracters)h(as)e
(represen)m(ting)h(vbarred)e(punctuation,)i(and)f(returns)f(the)150
4867 y(c)m(haracter)23 b(co)s(de)f(for)f(the)h(corresp)s(onding)e
(punctuation)h(c)m(haracter)j(without)d(v)m(ertical)j(bars.)37
b(\(Compare)150 4976 y Fk(RAWASCII)p Fs(.\))150 5193
y Fh(ra)m(w)m(ascii)390 5340 y Fk(RAWASCII)46 b(char)p
eop end
%%Page: 17 30
TeXDict begin 17 29 bop 150 -116 a Fs(Chapter)30 b(2:)41
b(Data)32 b(Structure)d(Primitiv)m(es)2009 b(17)150 299
y(outputs)32 b(the)h(in)m(teger)h(\(b)s(et)m(w)m(een)g(0)f(and)f(255\))
i(that)f(represen)m(ts)g(the)f(input)g(c)m(haracter)i(in)f(the)f(ASCI)s
(I)150 408 y(co)s(de.)40 b(In)m(terprets)29 b(con)m(trol)h(c)m
(haracters)h(as)e(represen)m(ting)g(themselv)m(es.)41
b(T)-8 b(o)30 b(\014nd)d(out)i(the)g(ASCI)s(I)f(co)s(de)150
518 y(of)j(an)f(arbitrary)g(k)m(eystrok)m(e,)i(use)f
Fk(RAWASCII)45 b(RC)p Fs(.)150 727 y Fh(c)m(har)390 874
y Fk(CHAR)i(int)150 1041 y Fs(outputs)24 b(the)h(c)m(haracter)i
(represen)m(ted)e(in)f(the)h(ASCI)s(I)e(co)s(de)i(b)m(y)g(the)g(input,)
g(whic)m(h)g(m)m(ust)g(b)s(e)f(an)h(in)m(teger)150 1151
y(b)s(et)m(w)m(een)31 b(0)g(and)f(255.)150 1319 y(See)h([ASCI)s(I],)e
(page)i(16,)h(.)150 1527 y Fh(mem)m(b)s(er)390 1674 y
Fk(MEMBER)46 b(thing1)g(thing2)150 1842 y Fs(if)28 b
Fl(thing2)35 b Fs(is)28 b(a)h(w)m(ord)e(or)h(list)h(and)e(if)h
Fk(MEMBERP)e Fs(with)h(these)i(inputs)e(w)m(ould)g(output)h
Fk(TRUE)p Fs(,)f(outputs)h(the)150 1952 y(p)s(ortion)37
b(of)g Fl(thing2)45 b Fs(from)37 b(the)g(\014rst)g(instance)g(of)h
Fl(thing1)45 b Fs(to)38 b(the)f(end.)60 b(If)37 b Fk(MEMBERP)e
Fs(w)m(ould)i(output)150 2061 y Fk(FALSE)p Fs(,)f(outputs)e(the)i(empt)
m(y)g(w)m(ord)f(or)h(list)g(according)g(to)g(the)g(t)m(yp)s(e)g(of)f
Fl(thing2)p Fs(.)57 b(It)35 b(is)h(an)f(error)g(for)150
2171 y Fl(thing2)j Fs(to)31 b(b)s(e)f(an)g(arra)m(y)-8
b(.)150 2339 y(See)31 b([MEMBERP],)g(page)g(15,)h(.)150
2547 y Fh(lo)m(w)m(ercase)390 2694 y Fk(LOWERCASE)45
b(word)150 2862 y Fs(outputs)20 b(a)h(cop)m(y)g(of)f(the)h(input)e(w)m
(ord,)j(but)e(with)g(all)h(upp)s(ercase)f(letters)h(c)m(hanged)g(to)g
(the)g(corresp)s(onding)150 2972 y(lo)m(w)m(ercase)33
b(letter.)150 3180 y Fh(upp)s(ercase)390 3327 y Fk(UPPERCASE)45
b(word)150 3495 y Fs(outputs)21 b(a)i(cop)m(y)f(of)g(the)g(input)f(w)m
(ord,)j(but)d(with)h(all)g(lo)m(w)m(ercase)j(letters)e(c)m(hanged)f(to)
h(the)f(corresp)s(onding)150 3604 y(upp)s(ercase)29 b(letter.)150
3813 y Fh(standout)390 3960 y Fk(STANDOUT)46 b(thing)150
4128 y Fs(outputs)37 b(a)h(w)m(ord)g(that,)i(when)d(prin)m(ted,)j(will)
e(app)s(ear)f(lik)m(e)i(the)f(input)f(but)g(displa)m(y)m(ed)i(in)e
(standout)150 4237 y(mo)s(de)42 b(\(b)s(oldface,)k(rev)m(erse)d(video,)
j(or)d(whatev)m(er)g(y)m(our)f(v)m(ersion)h(do)s(es)f(for)g
(standout\).)77 b(The)42 b(w)m(ord)150 4347 y(con)m(tains)h(mac)m
(hine-sp)s(eci\014c)g(magic)g(c)m(haracters)g(at)g(the)f(b)s(eginning)f
(and)g(end;)47 b(in)41 b(b)s(et)m(w)m(een)i(is)f(the)150
4457 y(prin)m(ted)27 b(form)g(\(as)i(if)e(displa)m(y)m(ed)i(using)e
Fk(TYPE)p Fs(\))g(of)g(the)h(input.)39 b(The)27 b(output)h(is)f(alw)m
(a)m(ys)i(a)g(w)m(ord,)f(ev)m(en)g(if)150 4566 y(the)h(input)e(is)h(of)
h(some)g(other)f(t)m(yp)s(e,)h(but)f(it)h(ma)m(y)g(include)f(spaces)h
(and)e(other)i(formatting)g(c)m(haracters.)150 4676 y(Note:)41
b(a)30 b(w)m(ord)f(output)g(b)m(y)g Fk(STANDOUT)e Fs(while)i(Logo)h(is)
g(running)d(on)i(one)h(mac)m(hine)g(will)f(probably)g(not)150
4785 y(ha)m(v)m(e)j(the)e(desired)g(e\013ect)i(if)e(prin)m(ted)g(on)g
(another)h(t)m(yp)s(e)g(of)f(mac)m(hine.)150 4953 y(In)e(the)h(Macin)m
(tosh)i(classic)f(v)m(ersion,)g(the)f(w)m(a)m(y)h(that)f(standout)g(w)m
(orks)g(is)g(incompatible)h(with)e(the)h(use)150 5063
y(of)g(c)m(haracters)i(whose)d(ASCI)s(I)g(co)s(de)h(is)g(greater)h
(than)f(127.)42 b(Therefore,)29 b(y)m(ou)g(ha)m(v)m(e)i(a)e(c)m(hoice)i
(to)f(mak)m(e:)150 5172 y(The)g(instruction)390 5340
y Fk(CANINVERSE)45 b(0)p eop end
%%Page: 18 31
TeXDict begin 18 30 bop 150 -116 a Fs(18)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(disables)g(standout,)h(but)f(enables)g(the)h
(displa)m(y)f(of)h(ASCI)s(I)e(co)s(des)h(ab)s(o)m(v)m(e)i(127,)g(and)e
(the)g(instruction)390 467 y Fk(CANINVERSE)45 b(1)150
634 y Fs(restores)28 b(the)f(default)h(situation)g(in)f(whic)m(h)g
(standout)g(is)g(enabled)g(and)g(the)g(extra)h(graphic)f(c)m(haracters)
150 744 y(cannot)k(b)s(e)f(prin)m(ted.)150 943 y Fh(parse)390
1090 y Fk(PARSE)46 b(word)150 1258 y Fs(outputs)27 b(the)i(list)f(that)
h(w)m(ould)f(result)g(if)f(the)i(input)e(w)m(ord)g(w)m(ere)i(en)m
(tered)f(in)g(resp)s(onse)f(to)i(a)f Fk(READLIST)150
1367 y Fs(op)s(eration.)38 b(That)21 b(is,)i Fk(PARSE)46
b(READWORD)19 b Fs(has)h(the)h(same)h(v)-5 b(alue)21
b(as)g Fk(READLIST)e Fs(for)h(the)h(same)g(c)m(haracters)150
1477 y(read.)150 1645 y(See)31 b([READLIST],)f(page)h(20,)g(,)g([READ)m
(W)m(ORD],)i(page)e(20,)150 1844 y Fh(runparse)390 1991
y Fk(RUNPARSE)46 b(wordorlist)150 2159 y Fs(outputs)34
b(the)h(list)h(that)g(w)m(ould)e(result)h(if)g(the)g(input)f(w)m(ord)h
(or)g(list)g(w)m(ere)g(en)m(tered)h(as)f(an)g(instruction)150
2268 y(line;)27 b(c)m(haracters)g(suc)m(h)e(as)g(in\014x)f(op)s
(erators)h(and)g(paren)m(theses)g(are)g(separate)h(mem)m(b)s(ers)f(of)g
(the)g(output.)150 2378 y(Note)32 b(that)f(sublists)e(of)i(a)g
(runparsed)d(list)j(are)g(not)f(themselv)m(es)i(runparsed.)p
eop end
%%Page: 19 32
TeXDict begin 19 31 bop 3659 -116 a Fs(19)150 299 y Fp(3)80
b(Comm)l(unication)150 635 y Fr(3.1)68 b(T)-11 b(ransmitters)150
795 y Fs(Note:)66 b(If)42 b(there)g(is)h(a)g(v)-5 b(ariable)43
b(named)f Fk(PRINTDEPTHLIMIT)c Fs(with)k(a)g(nonnegativ)m(e)i(in)m
(teger)g(v)-5 b(alue,)150 904 y(then)32 b(complex)h(list)h(and)d(arra)m
(y)i(structures)f(will)h(b)s(e)f(prin)m(ted)g(only)h(to)g(the)g(allo)m
(w)m(ed)h(depth.)46 b(That)33 b(is,)150 1014 y(mem)m(b)s(ers)g(of)h
(mem)m(b)s(ers)g(of...)52 b(of)34 b(mem)m(b)s(ers)g(will)g(b)s(e)f
(allo)m(w)m(ed)j(only)e(so)h(far.)51 b(The)34 b(mem)m(b)s(ers)f
(omitted)150 1123 y(b)s(ecause)k(they)g(are)g(just)g(past)g(the)g
(depth)f(limit)i(are)f(indicated)h(b)m(y)f(an)g(ellipsis)g(for)g(eac)m
(h)h(one,)h(so)f(a)150 1233 y(to)s(o-deep)31 b(list)g(of)g(t)m(w)m(o)g
(mem)m(b)s(ers)f(will)h(prin)m(t)f(as)g Fk([...)47 b(...])o
Fs(.)150 1401 y(If)30 b(there)h(is)g(a)g(v)-5 b(ariable)31
b(named)g Fk(PRINTWIDTHLIMIT)26 b Fs(with)k(a)i(nonnegativ)m(e)g(in)m
(teger)g(v)-5 b(alue,)31 b(then)g(only)150 1510 y(the)g(\014rst)f(so)g
(man)m(y)h(mem)m(b)s(ers)f(of)g(an)m(y)h(arra)m(y)g(or)g(list)g(will)g
(b)s(e)f(prin)m(ted.)41 b(A)30 b(single)i(ellipsis)f(replaces)g(all)150
1620 y(missing)c(data)g(within)f(the)h(structure.)39
b(The)27 b(width)e(limit)j(also)g(applies)f(to)g(the)g(n)m(um)m(b)s(er)
f(of)g(c)m(haracters)150 1730 y(prin)m(ted)k(in)g(a)h(w)m(ord,)g
(except)h(that)f(a)g Fk(PRINTWIDTHLIMIT)26 b Fs(b)s(et)m(w)m(een)31
b(0)g(and)f(9)h(will)g(b)s(e)f(treated)i(as)f(if)f(it)150
1839 y(w)m(ere)h(10)h(when)e(applied)g(to)i(w)m(ords.)41
b(This)30 b(limit)i(applies)f(not)g(only)g(to)g(the)g(top-lev)m(el)i
(prin)m(ted)d(datum)150 1949 y(but)g(to)h(an)m(y)f(substructures)f
(within)h(it.)150 2116 y(See)h([PRINTDEPTHLIMIT],)f(page)h(90,)g(,)g
([PRINTWIDTHLIMIT],)f(page)h(90,)150 2284 y(If)c(there)i(is)f(a)g(v)-5
b(ariable)29 b(named)e Fk(FULLPRINTP)e Fs(whose)j(v)-5
b(alue)28 b(is)g Fk(TRUE)p Fs(,)g(then)g(w)m(ords)f(that)h(w)m(ere)h
(created)150 2394 y(using)24 b(bac)m(kslash)i(or)e(v)m(ertical)j(bar)d
(\(to)i(include)f(c)m(haracters)h(that)f(w)m(ould)g(otherwise)g(not)g
(b)s(e)f(treated)i(as)150 2503 y(part)i(of)g(a)h(w)m(ord\))f(are)h
(prin)m(ted)f(with)g(the)g(bac)m(kslashes)h(or)f(v)m(ertical)j(bars)c
(sho)m(wn,)i(so)f(that)h(the)f(prin)m(ted)150 2613 y(result)g(could)g
(b)s(e)g(re-read)g(b)m(y)g(Logo)h(to)g(pro)s(duce)e(the)i(same)f(v)-5
b(alue.)41 b(If)27 b Fk(FULLPRINTP)f Fs(is)i Fk(TRUE)f
Fs(then)h(the)150 2722 y(empt)m(y)j(w)m(ord)f(\(ho)m(w)m(ev)m(er)i(it)f
(w)m(as)g(created\))g(prin)m(ts)f(as)h Fk(||)p Fs(.)40
b(\(Otherwise)30 b(it)h(prin)m(ts)f(as)h(nothing)f(at)h(all.\))150
2890 y(See)g([FULLPRINTP],)f(page)h(90,)h(.)150 3088
y Fh(prin)m(t)390 3235 y Fk(PRINT)46 b(thing)390 3345
y(PR)h(thing)390 3454 y(\(PRINT)f(thing1)g(thing2)g(...\))390
3564 y(\(PR)h(thing1)f(thing2)g(...\))150 3732 y Fs(command.)40
b(Prin)m(ts)29 b(the)g(input)f(or)i(inputs)e(to)h(the)h(curren)m(t)f
(write)g(stream)g(\(initially)i(the)f(screen\).)40 b(All)150
3841 y(the)35 b(inputs)e(are)i(prin)m(ted)g(on)f(a)h(single)g(line,)i
(separated)e(b)m(y)f(spaces,)j(ending)d(with)g(a)h(newline.)54
b(If)34 b(an)150 3951 y(input)e(is)i(a)g(list,)h(square)e(brac)m(k)m
(ets)i(are)f(not)f(prin)m(ted)g(around)g(it,)i(but)d(brac)m(k)m(ets)j
(are)f(prin)m(ted)f(around)150 4060 y(sublists.)40 b(Braces)32
b(are)e(alw)m(a)m(ys)i(prin)m(ted)e(around)f(arra)m(ys.)150
4258 y Fh(t)m(yp)s(e)390 4405 y Fk(TYPE)47 b(thing)390
4515 y(\(TYPE)f(thing1)g(thing2)h(...\))150 4682 y Fs(command.)38
b(Prin)m(ts)24 b(the)h(input)e(or)h(inputs)f(lik)m(e)i
Fk(PRINT)p Fs(,)g(except)g(that)f(no)g(newline)h(c)m(haracter)g(is)f
(prin)m(ted)150 4792 y(at)30 b(the)f(end)g(and)f(m)m(ultiple)i(inputs)e
(are)i(not)f(separated)h(b)m(y)f(spaces.)41 b(Note:)g(prin)m(ting)29
b(to)h(the)g(screen)f(is)150 4902 y(ordinarily)24 b Fl(line)h
(bu\013ered)t Fs(;)h(that)f(is,)h(the)f(c)m(haracters)h(y)m(ou)f(prin)m
(t)f(using)g Fk(TYPE)g Fs(will)g(not)h(actually)i(app)s(ear)150
5011 y(on)35 b(the)h(screen)f(un)m(til)g(either)h(a)g(newline)f(c)m
(haracter)i(is)e(prin)m(ted)g(\(for)g(example,)j(b)m(y)d
Fk(PRINT)f Fs(or)h Fk(SHOW)p Fs(\))150 5121 y(or)c(Logo)h(tries)f(to)h
(read)f(from)f(the)h(k)m(eyb)s(oard)g(\(either)h(at)f(the)g(request)g
(of)g(y)m(our)g(program)g(or)g(after)g(an)150 5230 y(instruction)39
b(prompt\).)65 b(This)38 b(bu\013ering)f(mak)m(es)j(the)f(program)f(m)m
(uc)m(h)h(faster)g(than)f(it)i(w)m(ould)e(b)s(e)g(if)150
5340 y(eac)m(h)31 b(c)m(haracter)h(app)s(eared)e(immediately)-8
b(,)32 b(and)e(in)f(most)i(cases)g(the)f(e\013ect)i(is)e(not)h
(disconcerting.)41 b(T)-8 b(o)p eop end
%%Page: 20 33
TeXDict begin 20 32 bop 150 -116 a Fs(20)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(accommo)s(date)h(programs)e(that)h(do)f(a)g(lot)
h(of)g(p)s(ositioned)f(text)h(displa)m(y)f(using)g Fk(TYPE)p
Fs(,)g(Logo)h(will)f(force)150 408 y(prin)m(ting)39 b(whenev)m(er)f
Fk(SETCURSOR)f Fs(is)h(in)m(v)m(ok)m(ed.)68 b(This)38
b(solv)m(es)i(most)f(bu\013ering)f(problems.)65 b(Still,)42
b(on)150 518 y(o)s(ccasion)30 b(y)m(ou)g(ma)m(y)g(\014nd)d(it)j
(necessary)f(to)h(force)g(the)f(bu\013ered)f(c)m(haracters)j(to)f(b)s
(e)e(prin)m(ted)h(explicitly;)150 628 y(this)40 b(can)g(b)s(e)f(done)h
(using)f(the)h Fk(WAIT)e Fs(command.)69 b Fk(WAIT)47
b(0)39 b Fs(will)i(force)f(prin)m(ting)g(without)f(actually)150
737 y(w)m(aiting.)150 905 y(See)31 b([SETCURSOR],)e(page)i(26,)g(,)g
([W)-10 b(AIT],)31 b(page)g(71,)150 1105 y Fh(sho)m(w)390
1252 y Fk(SHOW)47 b(thing)390 1362 y(\(SHOW)f(thing1)g(thing2)h(...\))
150 1530 y Fs(command.)39 b(Prin)m(ts)25 b(the)g(input)f(or)h(inputs)f
(lik)m(e)i Fk(PRINT)p Fs(,)f(except)h(that)f(if)g(an)g(input)f(is)h(a)g
(list)h(it)f(is)g(prin)m(ted)150 1639 y(inside)30 b(square)g(brac)m(k)m
(ets.)150 1807 y(See)h([PRINT],)f(page)h(19,)h(.)150
2050 y Fr(3.2)68 b(Receiv)l(ers)150 2242 y Fh(readlist)390
2389 y Fk(READLIST)390 2498 y(RL)150 2666 y Fs(reads)22
b(a)h(line)g(from)g(the)f(read)h(stream)g(\(initially)i(the)d(k)m(eyb)s
(oard\))h(and)f(outputs)g(that)i(line)f(as)g(a)g(list.)38
b(The)150 2776 y(line)27 b(is)g(separated)g(in)m(to)h(mem)m(b)s(ers)e
(as)h(though)f(it)i(w)m(ere)f(t)m(yp)s(ed)f(in)h(square)f(brac)m(k)m
(ets)j(in)d(an)h(instruction.)150 2885 y(If)f(the)h(read)g(stream)g(is)
f(a)h(\014le,)h(and)e(the)h(end)f(of)h(\014le)g(is)f(reac)m(hed,)j
Fk(READLIST)24 b Fs(outputs)i(the)h(empt)m(y)g(w)m(ord)150
2995 y(\(not)g(the)f(empt)m(y)h(list\).)40 b Fk(READLIST)24
b Fs(pro)s(cesses)i(bac)m(kslash,)i(v)m(ertical)h(bar,)e(and)e(tilde)i
(c)m(haracters)h(in)e(the)150 3104 y(read)32 b(stream;)i(the)f(output)f
(list)h(will)g(not)f(con)m(tain)i(these)f(c)m(haracters)h(but)d(they)i
(will)g(ha)m(v)m(e)g(had)f(their)150 3214 y(usual)e(e\013ect.)42
b Fk(READLIST)28 b Fs(do)s(es)i(not,)h(ho)m(w)m(ev)m(er,)h(treat)g
(semicolon)f(as)g(a)g(commen)m(t)g(c)m(haracter.)150
3414 y Fh(readw)m(ord)390 3561 y Fk(READWORD)390 3671
y(RW)150 3839 y Fs(reads)h(a)h(line)g(from)f(the)g(read)g(stream)h(and)
f(outputs)g(that)h(line)f(as)h(a)g(w)m(ord.)46 b(The)32
b(output)g(is)h(a)f(single)150 3948 y(w)m(ord)37 b(ev)m(en)h(if)g(the)g
(line)f(con)m(tains)i(spaces,)h(brac)m(k)m(ets,)h(etc.)64
b(If)37 b(the)g(read)h(stream)g(is)f(a)h(\014le,)i(and)d(the)150
4058 y(end)e(of)h(\014le)g(is)g(reac)m(hed,)i Fk(READWORD)c
Fs(outputs)h(the)h(empt)m(y)h(list)f(\(not)h(the)f(empt)m(y)g(w)m
(ord\).)57 b Fk(READWORD)150 4167 y Fs(pro)s(cesses)37
b(bac)m(kslash,)j(v)m(ertical)g(bar,)e(and)f(tilde)h(c)m(haracters)h
(in)e(the)g(read)g(stream.)62 b(In)37 b(the)g(case)i(of)150
4277 y(a)34 b(tilde)h(used)e(for)h(line)g(con)m(tin)m(uation,)k(the)c
(output)f(w)m(ord)h Fg(do)-5 b(es)43 b Fs(include)33
b(the)i(tilde)f(and)g(the)g(newline)150 4387 y(c)m(haracters,)i(so)d
(that)h(the)f(user)f(program)h(can)h(tell)g(exactly)h(what)e(the)g
(user)g(en)m(tered.)49 b(V)-8 b(ertical)36 b(bars)150
4496 y(in)c(the)g(line)g(are)h(also)g(preserv)m(ed)e(in)h(the)g
(output.)46 b(Bac)m(kslash)33 b(c)m(haracters)h(are)e(not)g(preserv)m
(ed)g(in)g(the)150 4606 y(output.)150 4806 y Fh(readra)m(wline)390
4953 y Fk(READRAWLINE)150 5121 y Fs(reads)g(a)h(line)g(from)f(the)g
(read)g(stream)h(and)f(outputs)g(that)h(line)f(as)h(a)g(w)m(ord.)46
b(The)32 b(output)g(is)h(a)f(single)150 5230 y(w)m(ord)c(ev)m(en)h(if)g
(the)g(line)g(con)m(tains)g(spaces,)h(brac)m(k)m(ets,)h(etc.)41
b(If)28 b(the)h(read)f(stream)h(is)g(a)g(\014le,)g(and)f(the)h(end)150
5340 y(of)f(\014le)h(is)f(reac)m(hed,)i Fk(READRAWLINE)25
b Fs(outputs)j(the)g(empt)m(y)h(list)g(\(not)g(the)f(empt)m(y)h(w)m
(ord\).)40 b Fk(READRAWLINE)p eop end
%%Page: 21 34
TeXDict begin 21 33 bop 150 -116 a Fs(Chapter)30 b(3:)41
b(Comm)m(unication)2416 b(21)150 299 y(outputs)32 b(the)h(exact)h
(string)f(of)g(c)m(haracters)h(as)f(they)g(app)s(ear)f(in)g(the)h
(line,)h(with)f(no)f(sp)s(ecial)i(meaning)150 408 y(for)c(bac)m
(kslash,)h(v)m(ertical)i(bar,)d(tilde,)h(or)g(an)m(y)f(other)h
(formatting)g(c)m(haracters.)150 576 y(See)g([READ)m(W)m(ORD],)i(page)e
(20,)g(.)150 803 y Fh(readc)m(har)390 950 y Fk(READCHAR)390
1059 y(RC)150 1227 y Fs(reads)f(a)g(single)h(c)m(haracter)g(from)f(the)
g(read)g(stream)g(and)g(outputs)f(that)i(c)m(haracter)g(as)g(a)f(w)m
(ord.)40 b(If)30 b(the)150 1337 y(read)25 b(stream)g(is)g(a)g(\014le,)h
(and)e(the)h(end)f(of)h(\014le)g(is)g(reac)m(hed,)i Fk(READCHAR)22
b Fs(outputs)j(the)g(empt)m(y)g(list)g(\(not)h(the)150
1446 y(empt)m(y)34 b(w)m(ord\).)52 b(If)33 b(the)h(read)g(stream)g(is)g
(the)g(k)m(eyb)s(oard,)h(ec)m(hoing)g(is)f(turned)f(o\013)h(when)f
Fk(READCHAR)f Fs(is)150 1556 y(in)m(v)m(ok)m(ed,)26 b(and)d(remains)f
(o\013)i(un)m(til)f Fk(READLIST)e Fs(or)i Fk(READWORD)d
Fs(is)j(in)m(v)m(ok)m(ed)i(or)e(a)g(Logo)h(prompt)e(is)h(prin)m(ted.)
150 1665 y(Bac)m(kslash,)32 b(v)m(ertical)h(bar,)d(and)g(tilde)h(c)m
(haracters)g(ha)m(v)m(e)h(no)e(sp)s(ecial)h(meaning)g(in)f(this)g(con)m
(text.)150 1833 y(See)h([READLIST],)f(page)h(20,)g(.)150
2060 y Fh(readc)m(hars)390 2207 y Fk(READCHARS)45 b(num)390
2316 y(RCS)i(num)150 2484 y Fs(reads)40 b Fl(n)m(um)g
Fs(c)m(haracters)i(from)e(the)h(read)f(stream)h(and)f(outputs)g(those)h
(c)m(haracters)h(as)f(a)g(w)m(ord.)70 b(If)150 2594 y(the)33
b(read)h(stream)f(is)h(a)f(\014le,)i(and)d(the)i(end)e(of)i(\014le)f
(is)h(reac)m(hed,)h Fk(READCHARS)30 b Fs(outputs)j(the)h(empt)m(y)f
(list)150 2703 y(\(not)43 b(the)g(empt)m(y)g(w)m(ord\).)77
b(If)42 b(the)h(read)g(stream)g(is)f(the)h(k)m(eyb)s(oard,)j(ec)m
(hoing)e(is)f(turned)e(o\013)i(when)150 2813 y Fk(READCHARS)35
b Fs(is)i(in)m(v)m(ok)m(ed,)j(and)c(remains)h(o\013)h(un)m(til)f
Fk(READLIST)e Fs(or)i Fk(READWORD)e Fs(is)i(in)m(v)m(ok)m(ed)h(or)f(a)h
(Logo)150 2922 y(prompt)29 b(is)g(prin)m(ted.)40 b(Bac)m(kslash,)32
b(v)m(ertical)g(bar,)d(and)g(tilde)i(c)m(haracters)g(ha)m(v)m(e)g(no)e
(sp)s(ecial)h(meaning)g(in)150 3032 y(this)g(con)m(text.)150
3200 y(See)h([READLIST],)f(page)h(20,)g(,)g([READ)m(W)m(ORD],)i(page)e
(20,)150 3426 y Fh(shell)390 3573 y Fk(SHELL)46 b(command)390
3683 y(\(SHELL)g(command)g(wordflag\))150 3851 y Fs(Under)31
b(Unix,)h(outputs)g(the)g(result)g(of)g(running)e Fl(command)35
b Fs(as)d(a)g(shell)g(command.)45 b(\(The)32 b(command)150
3960 y(is)e(sen)m(t)h(to)g(`)p Fk(/bin/sh)p Fs(',)e(not)h(`)p
Fk(csh)p Fs(')g(or)g(other)g(alternativ)m(es.\))43 b(If)30
b(the)g(command)g(is)g(a)h(literal)g(list)g(in)f(the)150
4070 y(instruction)e(line,)h(and)e(if)h(y)m(ou)h(w)m(an)m(t)f(a)h(bac)m
(kslash)f(c)m(haracter)i(sen)m(t)e(to)h(the)f(shell,)h(y)m(ou)f(m)m
(ust)g(use)g Fk(\\\\)f Fs(to)150 4179 y(get)h(the)f(bac)m(kslash)h
(through)e(Logo's)i(reader)f(in)m(tact.)41 b(The)27 b(output)f(is)h(a)g
(list)h(con)m(taining)g(one)g(mem)m(b)s(er)150 4289 y(for)f(eac)m(h)i
(line)f(generated)h(b)m(y)e(the)h(shell)g(command.)39
b(Ordinarily)27 b(eac)m(h)i(suc)m(h)e(line)h(is)g(represen)m(ted)f(b)m
(y)h(a)150 4399 y(list)i(in)g(the)g(output,)g(as)g(though)f(the)h(line)
g(w)m(ere)g(read)g(using)f Fk(READLIST)p Fs(.)39 b(If)29
b(a)h(second)g(input)f(is)h(giv)m(en,)150 4508 y(regardless)39
b(of)f(the)h(v)-5 b(alue)38 b(of)h(the)f(input,)i(eac)m(h)f(line)g(is)f
(represen)m(ted)h(b)m(y)f(a)g(w)m(ord)g(in)g(the)h(output)f(as)150
4618 y(though)30 b(it)h(w)m(ere)g(read)f(with)g Fk(READWORD)p
Fs(.)39 b(Example:)390 4785 y Fk(to)47 b(dayofweek)390
4895 y(output)f(first)g(first)h(shell)f([date])390 5005
y(end)150 5172 y Fs(This)26 b(is)i Fk(first)g(first)e
Fs(to)i(extract)h(the)e(\014rst)f(w)m(ord)h(of)g(the)h(\014rst)e(\(and)
h(only\))h(line)f(of)g(the)h(shell)f(output.)150 5340
y(Under)j(MacOS)g(X,)h Fk(SHELL)e Fs(w)m(orks)h(as)h(under)e(Unix.)40
b Fk(SHELL)29 b Fs(is)i(not)f(a)m(v)-5 b(ailable)33 b(under)c(Mac)i
(Classic.)p eop end
%%Page: 22 35
TeXDict begin 22 34 bop 150 -116 a Fs(22)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(Under)f(DOS,)g Fk(SHELL)f Fs(is)i(a)g(command,)g
(not)f(an)h(op)s(eration;)g(it)h(sends)d(its)i(input)f(to)h(a)g(DOS)f
(command)150 408 y(pro)s(cessor)h(but)g(do)s(es)g(not)g(collect)j(the)e
(result)f(of)h(the)f(command.)150 576 y(Under)d(Windo)m(ws,)i(the)g
(wxWidgets)g(v)m(ersion)g(of)f(Logo)h(b)s(eha)m(v)m(es)g(as)g(under)d
(Unix)j(\(except)g(that)g(DOS-)150 686 y(st)m(yle)43
b(commands)f(are)h(understo)s(o)s(d;)k(use)41 b Fk(dir)h
Fs(rather)g(than)g Fk(ls)p Fs(\).)76 b(The)42 b(non-wxWidgets)g(v)m
(ersion)150 795 y(b)s(eha)m(v)m(es)31 b(lik)m(e)h(the)e(DOS)g(v)m
(ersion.)150 1050 y Fr(3.3)68 b(File)46 b(Access)150
1250 y Fh(setpre\014x)390 1397 y Fk(SETPREFIX)f(string)150
1565 y Fs(command.)38 b(Sets)23 b(a)h(pre\014x)e(that)i(will)g(b)s(e)e
(used)h(as)g(the)h(implicit)g(b)s(eginning)e(of)i(\014lenames)f(in)g
Fk(OPENREAD)p Fs(,)150 1675 y Fk(OPENWRITE)p Fs(,)g Fk(OPENAPPEND)p
Fs(,)g Fk(OPENUPDATE)p Fs(,)g Fk(LOAD)p Fs(,)i(and)f
Fk(SAVE)f Fs(commands.)39 b(Logo)25 b(will)g(put)f(the)g(appro-)150
1784 y(priate)33 b(separator)h(c)m(haracter)g(\(slash)f(for)g(Unix,)g
(bac)m(kslash)h(for)e(DOS/Windo)m(ws,)i(colon)g(for)f(MacOS)150
1894 y(Classic\))f(b)s(et)m(w)m(een)f(the)g(pre\014x)e(and)h(the)h
(\014lename)g(en)m(tered)g(b)m(y)g(the)g(user.)40 b(The)30
b(input)g(to)h Fk(SETPREFIX)150 2003 y Fs(m)m(ust)f(b)s(e)g(a)h(w)m
(ord,)f(unless)g(it)h(is)f(the)h(empt)m(y)f(list,)i(to)f(indicate)g
(that)g(there)g(should)e(b)s(e)h(no)g(pre\014x.)150 2171
y(See)50 b([OPENREAD],)g(page)h(22,)56 b(,)e(See)c([OPENWRITE],)g(page)
h(22,)k(,)g(See)50 b([OPENAPPEND],)150 2281 y(page)31
b(23,)h(,)e(See)h([OPENUPD)m(A)-8 b(TE],)32 b(page)f(23,)g(,)g(See)f
([LO)m(AD],)i(page)f(63,)h(,)e(See)h([SA)-10 b(VE],)30
b(page)i(62,)f(.)150 2489 y Fh(pre\014x)390 2636 y Fk(PREFIX)150
2804 y Fs(outputs)f(the)g(curren)m(t)h(\014le)f(pre\014x,)g(or)g([])h
(if)f(there)h(is)f(no)g(pre\014x.)150 2972 y(See)h([SETPREFIX],)f(page)
h(22,)g(.)150 3180 y Fh(op)s(enread)390 3327 y Fk(OPENREAD)46
b(filename)150 3495 y Fs(command.)39 b(Op)s(ens)26 b(the)h(named)g
(\014le)g(for)g(reading.)40 b(The)26 b(read)h(p)s(osition)h(is)f
(initially)h(at)g(the)g(b)s(eginning)150 3605 y(of)j(the)f(\014le.)150
3813 y Fh(op)s(en)m(write)390 3960 y Fk(OPENWRITE)45
b(filename)150 4128 y Fs(command.)50 b(Op)s(ens)32 b(the)i(named)f
(\014le)h(for)f(writing.)50 b(If)33 b(the)h(\014le)g(already)g
(existed,)h(the)f(old)g(v)m(ersion)g(is)150 4237 y(deleted)d(and)f(a)h
(new,)f(empt)m(y)h(\014le)f(created.)150 4405 y Fk(OPENWRITE)p
Fs(,)41 b(but)g(not)g(the)g(other)g Fk(OPEN)f Fs(v)-5
b(arian)m(ts,)45 b(will)c(accept)i(as)e(input)f(a)h(t)m(w)m(o-elemen)m
(t)k(list,)f(in)150 4515 y(whic)m(h)26 b(the)h(\014rst)f(elemen)m(t)j
(m)m(ust)d(b)s(e)g(a)i(v)-5 b(ariable)27 b(name,)h(and)e(the)h(second)g
(m)m(ust)f(b)s(e)g(a)i(p)s(ositiv)m(e)f(in)m(teger.)150
4624 y(A)i(c)m(haracter)i(bu\013er)d(of)h(the)g(sp)s(eci\014ed)g(size)h
(will)f(b)s(e)g(created.)41 b(When)29 b(a)g Fk(SETWRITE)e
Fs(is)i(done)g(with)g(this)150 4734 y(same)i(list)g(\(in)f(the)h(sense)
f(of)h(.EQ,)f(not)h(a)f(cop)m(y)-8 b(,)32 b(so)f(y)m(ou)g(m)m(ust)f(do)
g(something)h(lik)m(e)390 4902 y Fk(?)47 b(make)g("buf)g([foo)f(100])
390 5011 y(?)h(openwrite)f(:buf)390 5121 y(?)h(setwrite)f(:buf)581
5230 y([...])390 5340 y(?)h(close)g(:buf)p eop end
%%Page: 23 36
TeXDict begin 23 35 bop 150 -116 a Fs(Chapter)30 b(3:)41
b(Comm)m(unication)2416 b(23)150 299 y(and)30 b(not)g(just)390
467 y Fk(?)47 b(openwrite)f([foo)g(100])390 576 y(?)h(setwrite)f([foo)h
(100])150 744 y Fs(and)31 b(so)h(on\),)g(the)g(prin)m(ted)f(c)m
(haracters)i(are)f(stored)g(in)f(the)h(bu\013er;)g(when)e(a)i
Fk(CLOSE)e Fs(is)i(done)f(with)h(the)150 853 y(same)f(list)h(as)f
(input,)f(the)h(c)m(haracters)h(from)e(the)h(bu\013er)f(\(treated)i(as)
f(one)g(long)h(w)m(ord,)e(ev)m(en)i(if)f(spaces)150 963
y(and)f(newlines)g(are)h(included\))f(b)s(ecome)g(the)h(v)-5
b(alue)31 b(of)f(the)h(sp)s(eci\014ed)f(v)-5 b(ariable.)150
1167 y Fh(op)s(enapp)s(end)390 1314 y Fk(OPENAPPEND)45
b(filename)150 1482 y Fs(command.)40 b(Op)s(ens)29 b(the)i(named)e
(\014le)i(for)f(writing.)40 b(If)30 b(the)g(\014le)h(already)g(exists,)
g(the)f(write)h(p)s(osition)f(is)150 1592 y(initially)i(set)f(to)g(the)
f(end)g(of)h(the)f(old)h(\014le,)g(so)f(that)h(newly)f(written)h(data)g
(will)f(b)s(e)g(app)s(ended)f(to)i(it.)150 1796 y Fh(op)s(en)m(up)s
(date)390 1943 y Fk(OPENUPDATE)45 b(filename)150 2110
y Fs(command.)54 b(Op)s(ens)33 b(the)i(named)f(\014le)h(for)g(reading)g
(and)f(writing.)54 b(The)34 b(read)h(and)f(write)h(p)s(osition)g(is)150
2220 y(initially)j(set)e(to)h(the)f(end)g(of)g(the)g(old)g(\014le,)i
(if)e(an)m(y)-8 b(.)59 b(Note:)53 b(eac)m(h)38 b(op)s(en)d(\014le)h
(has)g(only)g(one)h(p)s(osition,)150 2330 y(for)29 b(b)s(oth)f(reading)
h(and)f(writing.)40 b(If)29 b(a)g(\014le)g(op)s(ened)f(for)h(up)s(date)
f(is)g(b)s(oth)h Fk(READER)e Fs(and)h Fk(WRITER)f Fs(at)j(the)150
2439 y(same)d(time,)h(then)d Fk(SETREADPOS)f Fs(will)i(also)h(a\013ect)
h Fk(WRITEPOS)c Fs(and)i(vice)h(v)m(ersa.)40 b(Also,)28
b(if)e(y)m(ou)g(alternate)150 2549 y(reading)33 b(and)f(writing)h(the)h
(same)f(\014le,)h(y)m(ou)f(m)m(ust)g Fk(SETREADPOS)d
Fs(b)s(et)m(w)m(een)k(a)f(write)g(and)f(a)i(read,)g(and)150
2658 y Fk(SETWRITEPOS)27 b Fs(b)s(et)m(w)m(een)k(a)g(read)f(and)g(a)h
(write.)150 2826 y(See)23 b([READER],)h(page)g(25,)h(,)g([WRITER],)e
(page)h(25,)i(,)e([SETREADPOS],)f(page)g(25,)j(,)f([SETWRITE-)150
2936 y(POS],)30 b(page)h(25,)150 3140 y Fh(close)390
3287 y Fk(CLOSE)46 b(filename)150 3455 y Fs(command.)58
b(Closes)36 b(the)g(named)g(\014le.)58 b(If)35 b(the)i(\014le)f(w)m(as)
g(curren)m(tly)g(the)g(reader)g(or)g(writer,)i(then)e(the)150
3564 y(reader)h(or)f(writer)h(is)f(c)m(hanged)h(to)h(the)f(k)m(eyb)s
(oard)f(or)h(screen,)h(as)f(if)g Fk(SETREAD)45 b([])36
b Fs(or)h Fk(SETWRITE)46 b([])150 3674 y Fs(had)30 b(b)s(een)f(done.)
150 3878 y Fh(allop)s(en)390 4025 y Fk(ALLOPEN)150 4193
y Fs(outputs)j(a)i(list)f(whose)g(mem)m(b)s(ers)f(are)i(the)f(names)g
(of)g(all)h(\014les)f(curren)m(tly)g(op)s(en.)47 b(This)32
b(list)i(do)s(es)f(not)150 4302 y(include)d(the)h(dribble)e(\014le,)i
(if)f(an)m(y)-8 b(.)150 4506 y Fh(closeall)390 4653 y
Fk(CLOSEALL)46 b(\(library)f(procedure\))150 4821 y Fs(command.)40
b(Closes)31 b(all)h(op)s(en)d(\014les.)41 b(Abbreviates)31
b Fk(FOREACH)46 b(ALLOPEN)f([CLOSE)h(?])150 4989 y Fs(See)31
b([F)m(OREA)m(CH],)g(page)h(76,)f(,)g([CLOSE],)e(page)i(23,)150
5193 y Fh(erase\014le)390 5340 y Fk(ERASEFILE)45 b(filename)p
eop end
%%Page: 24 37
TeXDict begin 24 36 bop 150 -116 a Fs(24)2551 b(BERKELEY)30
b(LOGO)g(6.1)390 299 y Fk(ERF)47 b(filename)150 467 y
Fs(command.)40 b(Erases)31 b(\(deletes,)h(remo)m(v)m(es\))g(the)f
(named)f(\014le,)g(whic)m(h)g(should)g(not)g(curren)m(tly)h(b)s(e)e(op)
s(en.)150 655 y Fh(dribble)390 802 y Fk(DRIBBLE)46 b(filename)150
969 y Fs(command.)38 b(Creates)24 b(a)g(new)e(\014le)i(whose)f(name)g
(is)g(the)h(input,)g(lik)m(e)g Fk(OPENWRITE)p Fs(,)f(and)f(b)s(egins)h
(recording)150 1079 y(in)32 b(that)h(\014le)g(ev)m(erything)g(that)g
(is)f(read)h(from)f(the)g(k)m(eyb)s(oard)g(or)h(written)f(to)h(the)g
(terminal.)47 b(That)33 b(is,)150 1188 y(this)e(writing)h(is)f(in)g
(addition)h(to)g(the)g(writing)f(to)h Fk(WRITER)p Fs(.)43
b(The)30 b(in)m(ten)m(t)j(is)f(to)g(create)h(a)f(transcript)f(of)150
1298 y(a)g(Logo)g(session,)g(including)f(things)g(lik)m(e)i(prompt)d(c)
m(haracters)j(and)e(in)m(teractions.)150 1466 y(See)h([OPENWRITE],)f
(page)h(22,)h(,)e([WRITER],)h(page)g(25,)150 1654 y Fh(no)s(dribble)390
1801 y Fk(NODRIBBLE)150 1968 y Fs(command.)40 b(Stops)30
b(cop)m(ying)i(information)e(in)m(to)i(the)e(dribble)g(\014le,)g(and)g
(closes)i(the)e(\014le.)150 2156 y Fh(setread)390 2303
y Fk(SETREAD)46 b(filename)150 2471 y Fs(command.)56
b(Mak)m(es)37 b(the)f(named)f(\014le)h(the)g(read)f(stream,)j(used)c
(for)i Fk(READLIST)p Fs(,)f(etc.)57 b(The)35 b(\014le)h(m)m(ust)150
2581 y(already)27 b(b)s(e)e(op)s(en)g(with)h Fk(OPENREAD)e
Fs(or)i Fk(OPENUPDATE)p Fs(.)36 b(If)26 b(the)g(input)f(is)h(the)g
(empt)m(y)g(list,)i(then)e(the)g(read)150 2690 y(stream)34
b(b)s(ecomes)g(the)g(k)m(eyb)s(oard,)h(as)f(usual.)50
b(Changing)34 b(the)g(read)f(stream)h(do)s(es)g(not)g(close)h(the)f
(\014le)150 2800 y(that)d(w)m(as)g(previously)f(the)g(read)h(stream,)g
(so)f(it)h(is)g(p)s(ossible)f(to)h(alternate)h(b)s(et)m(w)m(een)f
(\014les.)150 2968 y(See)g([READLIST],)f(page)h(20,)g(,)g([OPENREAD],)g
(page)g(22,)h(,)e([OPENUPD)m(A)-8 b(TE],)32 b(page)f(23,)150
3156 y Fh(set)m(write)390 3303 y Fk(SETWRITE)46 b(filename)150
3470 y Fs(command.)74 b(Mak)m(es)44 b(the)e(named)f(\014le)h(the)f
(write)h(stream,)k(used)40 b(for)i Fk(PRINT)p Fs(,)h(etc.)76
b(The)41 b(\014le)h(m)m(ust)150 3580 y(already)36 b(b)s(e)e(op)s(en)g
(with)h Fk(OPENWRITE)p Fs(,)f Fk(OPENAPPEND)p Fs(,)f(or)i
Fk(OPENUPDATE)p Fs(.)52 b(If)34 b(the)h(input)f(is)h(the)h(empt)m(y)150
3689 y(list,)f(then)f(the)g(write)f(stream)h(b)s(ecomes)g(the)g
(screen,)h(as)f(usual.)50 b(Changing)34 b(the)f(write)h(stream)g(do)s
(es)150 3799 y(not)27 b(close)h(the)g(\014le)f(that)g(w)m(as)h
(previously)e(the)h(write)h(stream,)g(so)f(it)g(is)g(p)s(ossible)g(to)h
(alternate)g(b)s(et)m(w)m(een)150 3909 y(\014les.)150
4076 y(If)g(the)g(input)f(is)i(a)f(list,)i(then)d(its)i(\014rst)e
(elemen)m(t)j(m)m(ust)e(b)s(e)g(a)g(v)-5 b(ariable)29
b(name,)g(and)f(its)g(second)h(and)e(last)150 4186 y(elemen)m(t)32
b(m)m(ust)f(b)s(e)f(a)h(p)s(ositiv)m(e)h(in)m(teger;)h(a)e(bu\013er)f
(of)h(that)g(man)m(y)g(c)m(haracters)h(will)f(b)s(e)f(allo)s(cated,)k
(and)150 4296 y(will)c(b)s(ecome)h(the)f(writestream.)41
b(If)29 b(the)i(same)f(list)h(\(same)f(in)g(the)g Fk(.EQ)f
Fs(sense,)h(not)h(a)f(cop)m(y\))h(has)f(b)s(een)150 4405
y(used)g(as)i(input)e(to)i Fk(OPENWRITE)p Fs(,)d(then)i(the)g
(already-allo)s(cated)j(bu\013er)c(will)i(b)s(e)e(used,)h(and)g(the)g
(writer)150 4515 y(can)37 b(b)s(e)g(c)m(hanged)g(to)h(and)e(from)h
(this)g(bu\013er,)h(with)e(all)i(the)f(c)m(haracters)i(accum)m(ulated)f
(as)g(in)e(a)i(\014le.)150 4624 y(When)c(the)h(same)g(list)g(is)g(used)
e(as)i(input)f(to)h Fk(CLOSE)p Fs(,)f(the)h(con)m(ten)m(ts)h(of)f(the)g
(bu\013er)e(\(as)i(an)g(unparsed)150 4734 y(w)m(ord,)30
b(whic)m(h)g(ma)m(y)h(con)m(tain)g(newline)f(c)m(haracters\))i(will)f
(b)s(ecome)f(the)h(v)-5 b(alue)30 b(of)h(the)f(named)g(v)-5
b(ariable.)150 4844 y(F)d(or)32 b(compatibilit)m(y)h(with)e(earlier)h
(v)m(ersions,)f(if)g(the)h(list)f(has)g(not)g(b)s(een)g(op)s(ened)f
(when)g(the)h Fk(SETWRITE)150 4953 y Fs(is)38 b(done,)i(it)e(will)g(b)s
(e)f(op)s(ened)g(implicitly)-8 b(,)42 b(but)37 b(the)h(\014rst)f
Fk(SETWRITE)e Fs(after)k(this)e(one)i(will)f(implicitly)150
5063 y(close)32 b(it,)f(setting)g(the)g(v)-5 b(ariable)31
b(and)f(freeing)h(the)f(allo)s(cated)i(bu\013er.)150
5230 y(See)22 b([PRINT],)f(page)h(19,)j(,)e([OPENWRITE],)f(page)g(22,)i
(;)h([OPENAPPEND],)d(page)g(23,)i(;)h([OPENUP-)150 5340
y(D)m(A)-8 b(TE],)32 b(page)f(23,)p eop end
%%Page: 25 38
TeXDict begin 25 37 bop 150 -116 a Fs(Chapter)30 b(3:)41
b(Comm)m(unication)2416 b(25)150 299 y Fh(reader)390
446 y Fk(READER)150 614 y Fs(outputs)28 b(the)g(name)g(of)h(the)f
(curren)m(t)g(read)g(stream)h(\014le,)g(or)f(the)h(empt)m(y)f(list)h
(if)f(the)h(read)f(stream)g(is)h(the)150 723 y(terminal.)150
958 y Fh(writer)390 1105 y Fk(WRITER)150 1272 y Fs(outputs)k(the)h
(name)g(of)g(the)g(curren)m(t)f(write)h(stream)g(\014le,)h(or)f(the)g
(empt)m(y)g(list)g(if)g(the)g(write)g(stream)g(is)150
1382 y(the)d(screen.)150 1616 y Fh(setreadp)s(os)390
1763 y Fk(SETREADPOS)45 b(charpos)150 1931 y Fs(command.)68
b(Sets)40 b(the)g(\014le)g(p)s(oin)m(ter)f(of)h(the)g(read)g(stream)g
(\014le)f(so)h(that)h(the)f(next)f Fk(READLIST)p Fs(,)h(etc.,)150
2041 y(will)49 b(b)s(egin)e(reading)i(at)g(the)f Fl(c)m(harp)s(os)t
Fs(th)g(c)m(haracter)i(in)e(the)g(\014le,)53 b(coun)m(ting)c(from)f(0.)
95 b(\(That)49 b(is,)150 2150 y Fk(SETREADPOS)c(0)37
b Fs(will)g(start)g(reading)g(from)g(the)g(b)s(eginning)f(of)h(the)g
(\014le.\))61 b(Meaningless)38 b(if)f(the)g(read)150
2260 y(stream)31 b(is)f(the)h(k)m(eyb)s(oard.)150 2428
y(See)g([READLIST],)f(page)h(20,)g(.)150 2662 y Fh(set)m(writep)s(os)
390 2809 y Fk(SETWRITEPOS)45 b(charpos)150 2977 y Fs(command.)37
b(Sets)22 b(the)f(\014le)h(p)s(oin)m(ter)f(of)h(the)f(write)h(stream)g
(\014le)f(so)h(that)g(the)f(next)h Fk(PRINT)p Fs(,)g(etc.,)j(will)c(b)s
(egin)150 3086 y(writing)35 b(at)g(the)g Fl(c)m(harp)s(os)t
Fs(th)f(c)m(haracter)i(in)f(the)g(\014le,)h(coun)m(ting)f(from)f(0.)55
b(\(That)34 b(is,)j Fk(SETWRITEPOS)44 b(0)150 3196 y
Fs(will)39 b(start)f(writing)h(from)e(the)i(b)s(eginning)e(of)i(the)f
(\014le.\))65 b(Meaningless)40 b(if)e(the)g(write)h(stream)f(is)h(the)
150 3306 y(screen.)150 3473 y(See)31 b([PRINT],)f(page)h(19,)h(.)150
3708 y Fh(readp)s(os)390 3855 y Fk(READPOS)150 4022 y
Fs(outputs)e(the)g(\014le)h(p)s(osition)f(of)h(the)f(curren)m(t)h(read)
f(stream)h(\014le.)150 4257 y Fh(writep)s(os)390 4404
y Fk(WRITEPOS)150 4572 y Fs(outputs)f(the)g(\014le)h(p)s(osition)f(of)h
(the)f(curren)m(t)h(write)f(stream)h(\014le.)150 4806
y Fh(eofp)390 4953 y Fk(EOFP)390 5063 y(EOF?)150 5230
y Fs(predicate,)j(outputs)d Fk(TRUE)g Fs(if)h(there)h(are)f(no)g(more)h
(c)m(haracters)g(to)g(b)s(e)f(read)g(in)g(the)g(read)g(stream)h
(\014le,)150 5340 y Fk(FALSE)c Fs(otherwise.)p eop end
%%Page: 26 39
TeXDict begin 26 38 bop 150 -116 a Fs(26)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(\014lep)390 446 y Fk(FILEP)46
b(filename)390 555 y(FILE?)g(filename)g(\(library)f(procedure\))150
723 y Fs(predicate,)31 b(outputs)f Fk(TRUE)f Fs(if)h(a)h(\014le)f(of)h
(the)f(sp)s(eci\014ed)g(name)g(exists)h(and)f(can)g(b)s(e)g(read,)h
Fk(FALSE)d Fs(other-)150 833 y(wise.)150 1074 y Fr(3.4)68
b(T)-11 b(erminal)45 b(Access)150 1266 y Fh(k)m(eyp)390
1413 y Fk(KEYP)390 1522 y(KEY?)150 1690 y Fs(predicate,)31
b(outputs)f Fk(TRUE)f Fs(if)h(there)h(are)g(c)m(haracters)g(w)m(aiting)
h(to)f(b)s(e)f(read)g(from)g(the)g(read)g(stream.)41
b(If)150 1800 y(the)30 b(read)f(stream)i(is)e(a)h(\014le,)h(this)e(is)h
(equiv)-5 b(alen)m(t)31 b(to)f Fk(NOT)47 b(EOFP)o Fs(.)41
b(If)29 b(the)h(read)f(stream)i(is)e(the)h(terminal,)150
1909 y(then)35 b(ec)m(hoing)j(is)d(turned)g(o\013)h(and)f(the)h
(terminal)g(is)g(set)g(to)h Fk(cbreak)d Fs(\(c)m(haracter)k(at)e(a)g
(time)h(instead)150 2019 y(of)30 b(line)h(at)g(a)g(time\))g(mo)s(de.)40
b(It)31 b(remains)f(in)g(this)g(mo)s(de)g(un)m(til)g(some)h(line-mo)s
(de)f(reading)h(is)f(requested)150 2128 y(\(e.g.,)g Fk(READLIST)p
Fs(\).)38 b(The)27 b(Unix)g(op)s(erating)h(system)g(forgets)g(ab)s(out)
f(an)m(y)h(p)s(ending)e(c)m(haracters)j(when)d(it)150
2238 y(switc)m(hes)31 b(mo)s(des,)f(so)h(the)f(\014rst)g
Fk(KEYP)f Fs(in)m(v)m(o)s(cation)k(will)d(alw)m(a)m(ys)i(output)e
Fk(FALSE)p Fs(.)150 2406 y(See)h([EOFP],)f(page)i(25,)f(,)g
([READLIST],)f(page)h(20,)150 2605 y Fh(cleartext)390
2752 y Fk(CLEARTEXT)390 2862 y(CT)150 3030 y Fs(command.)40
b(Clears)31 b(the)g(text)g(windo)m(w.)150 3229 y Fh(setcursor)390
3376 y Fk(SETCURSOR)45 b(vector)150 3544 y Fs(command.)55
b(The)35 b(input)f(is)h(a)h(list)f(of)h(t)m(w)m(o)g(n)m(um)m(b)s(ers,)f
(the)h(x)f(and)f(y)i(co)s(ordinates)f(of)h(a)f(text)h(windo)m(w)150
3654 y(p)s(osition)29 b(\(origin)h(in)e(the)i(upp)s(er)c(left)k
(corner,)f(p)s(ositiv)m(e)h(direction)g(is)f(southeast\).)41
b(The)29 b(text)h(cursor)e(is)150 3763 y(mo)m(v)m(ed)k(to)f(the)g
(requested)g(p)s(osition.)42 b(This)30 b(command)g(also)i(forces)f(the)
g(immediate)h(prin)m(ting)f(of)g(an)m(y)150 3873 y(bu\013ered)e(c)m
(haracters.)150 4073 y Fh(cursor)390 4219 y Fk(CURSOR)150
4387 y Fs(outputs)h(a)h(list)h(con)m(taining)g(the)f(curren)m(t)g(x)f
(and)g(y)h(co)s(ordinates)h(of)f(the)f(text)i(cursor.)42
b(Logo)31 b(ma)m(y)h(get)150 4497 y(confused)24 b(ab)s(out)g(the)h
(curren)m(t)f(cursor)g(p)s(osition)h(if,)h(e.g.,)h(y)m(ou)e(t)m(yp)s(e)
g(in)f(a)h(long)g(line)g(that)g(wraps)f(around)150 4606
y(or)30 b(y)m(our)h(program)f(prin)m(ts)g(escap)s(e)h(co)s(des)f(that)h
(a\013ect)h(the)e(screen)h(strangely)-8 b(.)150 4806
y Fh(setmargins)390 4953 y Fk(SETMARGINS)45 b(vector)150
5121 y Fs(command.)60 b(The)36 b(input)g(m)m(ust)h(b)s(e)f(a)i(list)f
(of)g(t)m(w)m(o)i(n)m(um)m(b)s(ers,)e(as)g(for)g Fk(SETCURSOR)p
Fs(.)57 b(The)37 b(e\013ect)h(is)f(to)150 5230 y(clear)j(the)f(screen)g
(and)g(then)f(arrange)i(for)e(all)i(further)e(prin)m(ting)h(to)g(b)s(e)
g(shifted)f(do)m(wn)h(and)f(to)i(the)150 5340 y(righ)m(t)g(according)g
(to)g(the)g(indicated)g(margins.)67 b(Sp)s(eci\014cally)-8
b(,)43 b(ev)m(ery)d(time)g(a)g(newline)f(c)m(haracter)i(is)p
eop end
%%Page: 27 40
TeXDict begin 27 39 bop 150 -116 a Fs(Chapter)30 b(3:)41
b(Comm)m(unication)2416 b(27)150 299 y(prin)m(ted)34
b(\(explicitly)i(or)f(implicitly\))h(Logo)f(will)g(t)m(yp)s(e)f
Fl(x)p 2130 299 28 4 v 40 w(margin)h Fs(spaces,)h(and)d(on)i(ev)m(ery)g
(in)m(v)m(o)s(cation)150 408 y(of)i Fk(SETCURSOR)e Fs(the)j(margins)f
(will)g(b)s(e)g(added)g(to)h(the)f(input)f(x)i(and)e(y)i(co)s
(ordinates.)62 b(\()p Fk(CURSOR)36 b Fs(will)150 518
y(rep)s(ort)26 b(the)h(cursor)f(p)s(osition)h(relativ)m(e)i(to)e(the)g
(margins,)h(so)f(that)g(this)f(shift)h(will)g(b)s(e)f(in)m(visible)h
(to)h(Logo)150 628 y(programs.\))39 b(The)23 b(purp)s(ose)f(of)i(this)f
(command)h(is)g(to)g(accommo)s(date)i(the)e(displa)m(y)g(of)g(terminal)
g(screens)150 737 y(in)j(lecture)g(halls)h(with)e(inadequate)i(TV)f
(monitors)g(that)g(miss)g(the)g(top)g(and)f(left)i(edges)f(of)g(the)h
(screen.)150 905 y(See)j([SETCURSOR],)e(page)i(26,)g(.)150
1164 y Fh(settextcolor)390 1311 y Fk(SETTEXTCOLOR)44
b(foreground)h(background)390 1421 y(SETTC)h(foreground)f(background)
150 1588 y Fs(command)25 b(\(wxWidgets)h(only\).)39 b(The)24
b(inputs)g(are)h(color)h(n)m(um)m(b)s(ers,)f(or)f(R)m(GB)i(color)g
(lists,)h(as)e(for)g(turtle)150 1698 y(graphics.)39 b(The)25
b(foreground)g(and)g(bac)m(kground)h(colors)h(for)e(the)h
(textscreen/splitscreen)i(text)e(windo)m(w)150 1807 y(are)33
b(c)m(hanged)h(to)g(the)f(giv)m(en)h(v)-5 b(alues.)49
b(The)32 b(c)m(hange)i(a\013ects)h(text)e(already)h(prin)m(ted)f(as)g
(w)m(ell)h(as)f(future)150 1917 y(text)e(prin)m(ting;)g(there)f(is)h
(only)f(one)h(text)g(color)h(for)e(the)h(en)m(tire)g(windo)m(w.)150
2085 y(Command)d(\(non-wxWidgets)i(Windo)m(ws)f(and)f(DOS)h(extended)g
(only\).)41 b(The)28 b(inputs)g(are)h(color)h(n)m(um-)150
2194 y(b)s(ers,)e(as)h(for)f(turtle)h(graphics.)40 b(F)-8
b(uture)28 b(prin)m(ting)h(to)g(the)f(text)i(windo)m(w)e(will)g(use)h
(the)f(sp)s(eci\014ed)g(colors)150 2304 y(for)43 b(foreground)g(\(the)h
(c)m(haracters)h(prin)m(ted\))e(and)g(bac)m(kground)g(\(the)h(space)g
(under)e(those)i(c)m(harac-)150 2413 y(ters\).)g(Using)31
b Fk(STANDOUT)e Fs(will)j(rev)m(ert)g(to)f(the)h(default)f(text)h
(windo)m(w)f(colors.)44 b(In)31 b(the)g(DOS)g(extended)150
2523 y(\()p Fk(ucblogo.exe)p Fs(\))e(v)m(ersion,)j(colors)f(in)g
(textscreen)h(mo)s(de)f(are)g(limited)h(to)g(n)m(um)m(b)s(ers)d(0-7,)k
(and)d(the)i(col-)150 2633 y(oring)g(applies)f(only)h(to)g(text)h(prin)
m(ted)e(b)m(y)g(the)h(program,)g(not)g(to)g(the)g(ec)m(hoing)h(of)f
(text)g(t)m(yp)s(ed)f(b)m(y)h(the)150 2742 y(user.)52
b(Neither)34 b(limitation)i(applies)f(to)g(the)f(text)h(p)s(ortion)f
(of)h(splitscreen)f(mo)s(de,)h(whic)m(h)f(is)g(actually)150
2852 y(dra)m(wn)c(as)g(graphics)g(in)m(ternally)-8 b(.)150
3020 y(See)31 b([ST)-8 b(ANDOUT],)31 b(page)g(17,)g(.)150
3279 y Fh(increasefon)m(t)390 3425 y Fk(INCREASEFONT)390
3535 y(DECREASEFONT)150 3703 y Fs(command)f(\(wxWidgets)i(only\).)43
b(Increase)31 b(or)f(decrease)i(the)f(size)h(of)e(the)h(fon)m(t)h(used)
d(in)i(the)g(text)h(and)150 3812 y(edit)f(windo)m(ws)e(to)j(the)e(next)
h(larger)g(or)f(smaller)h(a)m(v)-5 b(ailable)33 b(size.)150
4071 y Fh(settextsize)390 4218 y Fk(SETTEXTSIZE)45 b(height)150
4386 y Fs(command)39 b(\(wxWidgets)i(only\).)69 b(Set)40
b(the)g Fk(")p Fs(p)s(oin)m(t)f(size)p Fk(")h Fs(of)g(the)g(fon)m(t)g
(used)f(in)g(the)h(text)g(and)f(edit)150 4496 y(windo)m(ws)34
b(to)h(the)g(giv)m(en)g(in)m(teger)h(input.)53 b(The)34
b(desired)g(size)h(ma)m(y)g(not)g(b)s(e)f(a)m(v)-5 b(ailable,)38
b(in)d(whic)m(h)f(case)150 4605 y(the)39 b(nearest)g(a)m(v)-5
b(ailable)41 b(size)e(will)g(b)s(e)f(used.)65 b(Note:)58
b(There)38 b(is)h(only)f(a)h(sligh)m(t)h(correlation)g(b)s(et)m(w)m
(een)150 4715 y(these)31 b(in)m(tegers)h(and)e(pixel)h(sizes.)43
b(Our)29 b(rough)i(estimate)h(is)f(that)g(the)g(n)m(um)m(b)s(er)f(of)g
(pixels)h(of)g(heigh)m(t)h(is)150 4824 y(ab)s(out)h(1.5)h(times)f(the)g
(p)s(oin)m(t)g(size,)i(but)d(it)i(v)-5 b(aries)33 b(for)g(di\013eren)m
(t)h(fon)m(ts.)48 b(See)34 b Fk(SETLABELHEIGHT)29 b Fs(for)k(a)150
4934 y(di\013eren)m(t)e(approac)m(h)g(used)e(for)h(the)h(graphics)f
(windo)m(w.)150 5193 y Fh(textsize)390 5340 y Fk(TEXTSIZE)p
eop end
%%Page: 28 41
TeXDict begin 28 40 bop 150 -116 a Fs(28)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(\(wxWidgets)k(only\))f(outputs)g(the)g
Fk(")p Fs(p)s(oin)m(t)f(size)p Fk(")i Fs(of)f(the)g(fon)m(t)g(used)f
(in)h(the)g(text)h(and)e(edit)h(windo)m(ws.)150 408 y(See)38
b Fk(SETTEXTSIZE)c Fs(for)j(a)h(discussion)f(of)h(fon)m(t)g(sizing.)63
b(See)37 b Fk(LABELSIZE)e Fs(for)j(a)g(di\013eren)m(t)g(approac)m(h)150
518 y(used)30 b(for)g(the)g(graphics)h(windo)m(w.)150
717 y Fh(setfon)m(t)390 864 y Fk(SETFONT)46 b(fontname)150
1032 y Fs(command)38 b(\(wxWidgets)i(only\).)65 b(Set)39
b(the)f(fon)m(t)h(family)g(used)f(in)g(all)h(windo)m(ws)f(to)h(the)g
(one)f(named)150 1142 y(b)m(y)g(the)g(input.)63 b(T)-8
b(ry)38 b Fk(Courier)e Fs(or)i Fk(Monospace)e Fs(as)i(lik)m(ely)h(p)s
(ossibilities.)65 b(Not)39 b(all)g(computers)f(ha)m(v)m(e)150
1251 y(the)32 b(same)h(fon)m(ts)f(installed.)47 b(It's)32
b(a)g(go)s(o)s(d)g(idea)h(to)g(stic)m(k)g(with)f(monospace)h(fon)m(ts)f
(\(ones)h(in)e(whic)m(h)h(all)150 1361 y(c)m(haracters)g(ha)m(v)m(e)f
(the)g(same)g(width\).)150 1560 y Fh(fon)m(t)390 1707
y Fk(FONT)150 1875 y Fs(\(wxWidgets)h(only\))e(outputs)g(the)h(name)f
(of)h(the)f(fon)m(t)h(family)g(used)f(in)g(all)h(windo)m(ws.)p
eop end
%%Page: 29 42
TeXDict begin 29 41 bop 3659 -116 a Fs(29)150 299 y Fp(4)80
b(Arithmetic)150 729 y Fr(4.1)68 b(Numeric)45 b(Op)t(erations)150
946 y Fh(sum)390 1093 y Fk(SUM)i(num1)g(num2)390 1202
y(\(SUM)g(num1)f(num2)h(num3)g(...\))390 1312 y(num1)g(+)g(num2)150
1480 y Fs(outputs)30 b(the)g(sum)g(of)g(its)h(inputs.)150
1705 y Fh(di\013erence)390 1852 y Fk(DIFFERENCE)45 b(num1)i(num2)390
1961 y(num1)g(-)g(num2)150 2129 y Fs(outputs)23 b(the)i(di\013erence)f
(of)g(its)h(inputs.)37 b(Min)m(us)24 b(sign)g(means)g(in\014x)f
(di\013erence)h(in)g(am)m(biguous)g(con)m(texts)150 2238
y(\(when)j(preceded)h(b)m(y)g(a)g(complete)i(expression\),)f(unless)e
(it)h(is)h(preceded)e(b)m(y)h(a)g(space)h(and)e(follo)m(w)m(ed)j(b)m(y)
150 2348 y(a)h(nonspace.)41 b(\(See)30 b(also)i Fk(MINUS)p
Fs(.\))150 2573 y Fh(min)m(us)390 2720 y Fk(MINUS)46
b(num)390 2829 y(-)h(num)150 2997 y Fs(outputs)26 b(the)h(negativ)m(e)i
(of)d(its)h(input.)39 b(Min)m(us)26 b(sign)h(means)f(unary)g(min)m(us)f
(if)i(the)g(previous)f(tok)m(en)h(is)g(an)150 3107 y(in\014x)g(op)s
(erator)i(or)f(op)s(en)g(paren)m(thesis,)h(or)f(it)h(is)f(preceded)g(b)
m(y)h(a)f(space)h(and)f(follo)m(w)m(ed)i(b)m(y)e(a)h(nonspace.)150
3216 y(There)h(is)g(a)h(di\013erence)g(in)f(binding)f(strength)i(b)s
(et)m(w)m(een)g(the)f(t)m(w)m(o)i(forms:)390 3384 y Fk(MINUS)46
b(3)i(+)f(4)239 b(means)141 b(-\(3+4\))390 3494 y(-)47
b(3)h(+)f(4)430 b(means)141 b(\(-3\)+4)150 3719 y Fh(pro)s(duct)390
3866 y Fk(PRODUCT)46 b(num1)g(num2)390 3975 y(\(PRODUCT)g(num1)g(num2)h
(num3)f(...\))390 4085 y(num1)h(*)g(num2)150 4252 y Fs(outputs)30
b(the)g(pro)s(duct)g(of)g(its)h(inputs.)150 4477 y Fh(quotien)m(t)390
4624 y Fk(QUOTIENT)46 b(num1)g(num2)390 4734 y(\(QUOTIENT)f(num\))390
4844 y(num1)i(/)g(num2)150 5011 y Fs(outputs)36 b(the)g(quotien)m(t)h
(of)f(its)h(inputs.)56 b(The)36 b(quotien)m(t)h(of)f(t)m(w)m(o)i(in)m
(tegers)f(is)f(an)g(in)m(teger)h(if)f(and)g(only)150
5121 y(if)g(the)g(dividend)f(is)h(a)g(m)m(ultiple)h(of)f(the)g
(divisor.)57 b(\(In)36 b(other)g(w)m(ords,)h Fk(QUOTIENT)45
b(5)j(2)35 b Fs(is)h(2.5,)j(not)d(2,)150 5230 y(but)30
b Fk(QUOTIENT)46 b(4)h(2)31 b Fs(is)h(2,)g(not)f(2.0)h(|)f(it)h(do)s
(es)f(the)g(righ)m(t)h(thing.\))43 b(With)32 b(a)g(single)g(input,)e
Fk(QUOTIENT)150 5340 y Fs(outputs)g(the)g(recipro)s(cal)i(of)e(the)h
(input.)p eop end
%%Page: 30 43
TeXDict begin 30 42 bop 150 -116 a Fs(30)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(remainder)390 446 y Fk(REMAINDER)45
b(num1)i(num2)150 614 y Fs(outputs)29 b(the)h(remainder)f(on)g
(dividing)h Fl(n)m(um1)36 b Fs(b)m(y)30 b Fl(n)m(um2)7
b Fs(;)29 b(b)s(oth)g(m)m(ust)h(b)s(e)f(in)m(tegers)i(and)e(the)g
(result)h(is)150 723 y(an)g(in)m(teger)i(with)e(the)h(same)f(sign)h(as)
f Fl(n)m(um1)p Fs(.)150 944 y Fh(mo)s(dulo)390 1091 y
Fk(MODULO)46 b(num1)h(num2)150 1259 y Fs(outputs)29 b(the)h(remainder)f
(on)g(dividing)h Fl(n)m(um1)36 b Fs(b)m(y)30 b Fl(n)m(um2)7
b Fs(;)29 b(b)s(oth)g(m)m(ust)h(b)s(e)f(in)m(tegers)i(and)e(the)g
(result)h(is)150 1369 y(an)g(in)m(teger)i(with)e(the)h(same)f(sign)h
(as)f Fl(n)m(um2)p Fs(.)150 1590 y Fh(in)m(t)390 1737
y Fk(INT)47 b(num)150 1905 y Fs(outputs)35 b(its)h(input)f(with)h
(fractional)h(part)f(remo)m(v)m(ed,)i(i.e.,)g(an)e(in)m(teger)h(with)f
(the)g(same)g(sign)g(as)g(the)150 2014 y(input,)28 b(whose)g(absolute)g
(v)-5 b(alue)29 b(is)f(the)g(largest)h(in)m(teger)g(less)g(than)e(or)h
(equal)h(to)g(the)f(absolute)g(v)-5 b(alue)29 b(of)150
2124 y(the)i(input.)150 2345 y Fh(round)390 2492 y Fk(ROUND)46
b(num)150 2660 y Fs(outputs)30 b(the)g(nearest)h(in)m(teger)h(to)f(the)
g(input.)150 2881 y Fh(sqrt)390 3028 y Fk(SQRT)47 b(num)150
3196 y Fs(outputs)30 b(the)g(square)h(ro)s(ot)f(of)h(the)f(input,)g
(whic)m(h)g(m)m(ust)g(b)s(e)g(nonnegativ)m(e.)150 3417
y Fh(p)s(o)m(w)m(er)390 3564 y Fk(POWER)46 b(num1)h(num2)150
3732 y Fs(outputs)30 b Fl(n)m(um1)37 b Fs(to)31 b(the)g
Fl(n)m(um2)37 b Fs(p)s(o)m(w)m(er.)k(If)30 b Fl(n)m(um1)37
b Fs(is)30 b(negativ)m(e,)j(then)d Fl(n)m(um2)37 b Fs(m)m(ust)31
b(b)s(e)e(an)i(in)m(teger.)150 3953 y Fh(exp)390 4100
y Fk(EXP)47 b(num)150 4268 y Fs(outputs)30 b Fg(e)37
b Fs(\(2.718281828)p Fk(+)p Fs(\))e(to)c(the)g(input)e(p)s(o)m(w)m(er.)
150 4489 y Fh(log10)390 4636 y Fk(LOG10)46 b(num)150
4804 y Fs(outputs)30 b(the)g(common)h(logarithm)g(of)g(the)g(input.)150
5025 y Fh(ln)390 5172 y Fk(LN)47 b(num)150 5340 y Fs(outputs)30
b(the)g(natural)h(logarithm)g(of)g(the)f(input.)p eop
end
%%Page: 31 44
TeXDict begin 31 43 bop 150 -116 a Fs(Chapter)30 b(4:)41
b(Arithmetic)2613 b(31)150 299 y Fh(sin)390 446 y Fk(SIN)47
b(degrees)150 614 y Fs(outputs)30 b(the)g(sine)h(of)f(its)h(input,)f
(whic)m(h)g(is)g(tak)m(en)i(in)e(degrees.)150 817 y Fh(radsin)390
964 y Fk(RADSIN)46 b(radians)150 1131 y Fs(outputs)30
b(the)g(sine)h(of)f(its)h(input,)f(whic)m(h)g(is)g(tak)m(en)i(in)e
(radians.)150 1334 y Fh(cos)390 1481 y Fk(COS)47 b(degrees)150
1649 y Fs(outputs)30 b(the)g(cosine)i(of)e(its)h(input,)f(whic)m(h)g
(is)g(tak)m(en)i(in)e(degrees.)150 1852 y Fh(radcos)390
1999 y Fk(RADCOS)46 b(radians)150 2167 y Fs(outputs)30
b(the)g(cosine)i(of)e(its)h(input,)f(whic)m(h)g(is)g(tak)m(en)i(in)e
(radians.)150 2370 y Fh(arctan)390 2517 y Fk(ARCTAN)46
b(num)390 2626 y(\(ARCTAN)g(x)h(y\))150 2794 y Fs(outputs)33
b(the)h(arctangen)m(t,)j(in)c(degrees,)i(of)f(its)g(input.)49
b(With)35 b(t)m(w)m(o)g(inputs,)e(outputs)g(the)h(arctangen)m(t)150
2904 y(of)d(y/x,)g(if)f(x)g(is)h(nonzero,)f(or)h(90)g(or)f({90)i(dep)s
(ending)d(on)h(the)h(sign)f(of)h(y)-8 b(,)31 b(if)f(x)g(is)h(zero.)150
3107 y Fh(radarctan)390 3254 y Fk(RADARCTAN)45 b(num)390
3363 y(\(RADARCTAN)g(x)i(y\))150 3531 y Fs(outputs)33
b(the)h(arctangen)m(t,)j(in)c(radians,)h(of)g(its)g(input.)49
b(With)35 b(t)m(w)m(o)g(inputs,)e(outputs)g(the)h(arctangen)m(t)150
3640 y(of)d(y/x,)g(if)f(x)g(is)h(nonzero,)f(or)h(pi/2)g(or)f({pi/2)i
(dep)s(ending)c(on)j(the)f(sign)h(of)f(y)-8 b(,)31 b(if)f(x)h(is)f
(zero.)150 3808 y(The)g(expression)g Fk(2*\(RADARCTAN)44
b(0)k(1\))30 b Fs(can)g(b)s(e)g(used)g(to)h(get)g(the)g(v)-5
b(alue)31 b(of)f(pi.)150 4011 y Fh(iseq)390 4158 y Fk(ISEQ)47
b(from)f(to)h(\(library)f(procedure\))150 4326 y Fs(outputs)30
b(a)h(list)g(of)f(the)h(in)m(tegers)g(from)f Fl(from)g
Fs(to)h Fl(to)p Fs(,)h(inclusiv)m(e.)390 4494 y Fk(?)47
b(show)g(iseq)g(3)g(7)390 4603 y([3)g(4)h(5)f(6)h(7])390
4713 y(?)f(show)g(iseq)g(7)g(3)390 4822 y([7)g(6)h(5)f(4)h(3])150
5025 y Fh(rseq)390 5172 y Fk(RSEQ)f(from)f(to)h(count)g(\(library)e
(procedure\))150 5340 y Fs(outputs)30 b(a)h(list)g(of)f
Fl(coun)m(t)j Fs(equally)e(spaced)g(rational)g(n)m(um)m(b)s(ers)e(b)s
(et)m(w)m(een)i Fl(from)f Fs(and)g Fl(to)p Fs(,)h(inclusiv)m(e.)p
eop end
%%Page: 32 45
TeXDict begin 32 44 bop 150 -116 a Fs(32)2551 b(BERKELEY)30
b(LOGO)g(6.1)390 299 y Fk(?)47 b(show)g(rseq)g(3)g(5)h(9)390
408 y([3)f(3.25)g(3.5)g(3.75)f(4)i(4.25)e(4.5)h(4.75)g(5])390
518 y(?)g(show)g(rseq)g(3)g(5)h(5)390 628 y([3)f(3.5)g(4)h(4.5)e(5])150
884 y Fr(4.2)68 b(Numeric)45 b(Predicates)150 1086 y
Fh(lessp)390 1233 y Fk(LESSP)h(num1)h(num2)390 1343 y(LESS?)f(num1)h
(num2)390 1452 y(num1)g(<)g(num2)150 1620 y Fs(outputs)30
b Fk(TRUE)f Fs(if)h(its)h(\014rst)f(input)f(is)i(strictly)g(less)g
(than)f(its)h(second.)150 1830 y Fh(greaterp)390 1977
y Fk(GREATERP)46 b(num1)g(num2)390 2086 y(GREATER?)g(num1)g(num2)390
2196 y(num1)h(>)g(num2)150 2364 y Fs(outputs)30 b Fk(TRUE)f
Fs(if)h(its)h(\014rst)f(input)f(is)i(strictly)g(greater)h(than)e(its)g
(second.)150 2574 y Fh(lessequalp)390 2721 y Fk(LESSEQUALP)45
b(num1)i(num2)390 2830 y(LESSEQUAL?)e(num1)i(num2)390
2940 y(num1)g(<=)g(num2)150 3107 y Fs(outputs)30 b Fk(TRUE)f
Fs(if)h(its)h(\014rst)f(input)f(is)i(less)f(than)g(or)h(equal)g(to)g
(its)g(second.)150 3317 y Fh(greaterequalp)390 3464 y
Fk(GREATEREQUALP)44 b(num1)j(num2)390 3574 y(GREATEREQUAL?)d(num1)j
(num2)390 3684 y(num1)g(>=)g(num2)150 3851 y Fs(outputs)30
b Fk(TRUE)f Fs(if)h(its)h(\014rst)f(input)f(is)i(greater)g(than)f(or)h
(equal)g(to)g(its)f(second.)150 4108 y Fr(4.3)68 b(Random)45
b(Num)l(b)t(ers)150 4310 y Fh(random)390 4457 y Fk(RANDOM)h(num)390
4566 y(\(RANDOM)g(start)g(end\))150 4734 y Fs(with)29
b(one)g(input,)g(outputs)f(a)i(random)e(nonnegativ)m(e)j(in)m(teger)f
(less)g(than)e(its)i(input,)e(whic)m(h)h(m)m(ust)g(b)s(e)g(a)150
4844 y(p)s(ositiv)m(e)i(in)m(teger.)150 5011 y(With)d(t)m(w)m(o)i
(inputs,)d Fk(RANDOM)g Fs(outputs)g(a)i(random)e(in)m(teger)i(greater)g
(than)f(or)g(equal)g(to)h(the)f(\014rst)g(input,)150
5121 y(and)38 b(less)h(than)f(or)g(equal)h(to)g(the)g(second)g(input.)
64 b(Both)39 b(inputs)e(m)m(ust)h(b)s(e)g(in)m(tegers,)k(and)c(the)h
(\014rst)150 5230 y(m)m(ust)30 b(b)s(e)g(less)g(than)h(the)f(second.)41
b Fk(\(RANDOM)46 b(0)h(9\))30 b Fs(is)g(equiv)-5 b(alen)m(t)32
b(to)f Fk(RANDOM)46 b(10)o Fs(;)31 b Fk(\(RANDOM)46 b(3)h(8\))30
b Fs(is)150 5340 y(equiv)-5 b(alen)m(t)32 b(to)f Fk(\(RANDOM)46
b(6\)+3)o Fs(.)p eop end
%%Page: 33 46
TeXDict begin 33 45 bop 150 -116 a Fs(Chapter)30 b(4:)41
b(Arithmetic)2613 b(33)150 299 y Fh(rerandom)390 446
y Fk(RERANDOM)390 555 y(\(RERANDOM)45 b(seed\))150 723
y Fs(command.)53 b(Mak)m(es)36 b(the)f(results)f(of)h
Fk(RANDOM)e Fs(repro)s(ducible.)52 b(Ordinarily)33 b(the)i(sequence)g
(of)g(random)150 833 y(n)m(um)m(b)s(ers)20 b(is)h(di\013eren)m(t)g(eac)
m(h)i(time)e(Logo)i(is)e(used.)37 b(If)20 b(y)m(ou)i(need)f(the)g(same)
g(sequence)h(of)f(pseudo-random)150 942 y(n)m(um)m(b)s(ers)32
b(rep)s(eatedly)-8 b(,)36 b(e.g.)51 b(to)35 b(debug)e(a)h(program,)g
(sa)m(y)h Fk(RERANDOM)c Fs(b)s(efore)i(the)h(\014rst)f(in)m(v)m(o)s
(cation)j(of)150 1052 y Fk(RANDOM)p Fs(.)j(If)29 b(y)m(ou)h(need)f
(more)h(than)f(one)h(rep)s(eatable)g(sequence,)g(y)m(ou)g(can)g(giv)m
(e)h Fk(RERANDOM)c Fs(an)j(in)m(teger)150 1161 y(input;)g(eac)m(h)h(p)s
(ossible)f(input)g(selects)h(a)g(unique)f(sequence)g(of)h(n)m(um)m(b)s
(ers.)150 1402 y Fr(4.4)68 b(Prin)l(t)45 b(F)-11 b(ormatting)150
1593 y Fh(form)390 1740 y Fk(FORM)47 b(num)g(width)f(precision)150
1908 y Fs(outputs)32 b(a)i(w)m(ord)e(con)m(taining)i(a)g(prin)m(table)f
(represen)m(tation)h(of)e Fl(n)m(um)p Fs(,)h(p)s(ossibly)f(preceded)h
(b)m(y)g(spaces)150 2018 y(\(and)23 b(therefore)h(not)f(a)h(n)m(um)m(b)
s(er)e(for)h(purp)s(oses)e(of)j(p)s(erforming)e(arithmetic)i(op)s
(erations\),)i(with)d(at)h(least)150 2127 y Fl(width)30
b Fs(c)m(haracters,)i(including)f(exactly)h Fl(precision)f
Fs(digits)h(after)f(the)g(decimal)g(p)s(oin)m(t.)42 b(\(If)31
b Fl(precision)g Fs(is)150 2237 y(0)g(then)f(there)g(will)h(b)s(e)f(no)
g(decimal)h(p)s(oin)m(t)g(in)f(the)g(output.\))150 2405
y(As)d(a)g(debugging)g(feature,)h(\()p Fk(FORM)47 b(num)g(-1)g(format)o
Fs(\))27 b(will)g(prin)m(t)f(the)h(\015oating)h(p)s(oin)m(t)f
Fl(n)m(um)f Fs(according)150 2514 y(to)31 b(the)g(C)f(prin)m(tf)f
Fl(format)p Fs(,)i(to)g(allo)m(w)390 2682 y Fk(to)47
b(hex)g(:num)390 2791 y(op)g(form)g(:num)f(-1)i("|\04508X)e(\04508X|)
390 2901 y(end)150 3069 y Fs(to)26 b(allo)m(w)i(\014nding)c(out)i(the)g
(exact)h(result)f(of)g(\015oating)h(p)s(oin)m(t)e(op)s(erations.)40
b(The)25 b(precise)h(format)g(needed)150 3178 y(ma)m(y)31
b(b)s(e)f(mac)m(hine-dep)s(enden)m(t.)150 3419 y Fr(4.5)68
b(Bit)l(wise)46 b(Op)t(erations)150 3610 y Fh(bitand)390
3757 y Fk(BITAND)g(num1)h(num2)390 3867 y(\(BITAND)f(num1)g(num2)h
(num3)g(...\))150 4035 y Fs(outputs)30 b(the)g(bit)m(wise)h
Fl(and)j Fs(of)c(its)h(inputs,)f(whic)m(h)g(m)m(ust)g(b)s(e)g(in)m
(tegers.)150 4202 y(See)h([AND],)g(page)h(35,)f(.)150
4402 y Fh(bitor)390 4549 y Fk(BITOR)46 b(num1)h(num2)390
4658 y(\(BITOR)f(num1)h(num2)f(num3)h(...\))150 4826
y Fs(outputs)30 b(the)g(bit)m(wise)h Fl(or)37 b Fs(of)31
b(its)g(inputs,)e(whic)m(h)h(m)m(ust)h(b)s(e)e(in)m(tegers.)150
4994 y(See)i([OR],)f(page)h(35,)h(.)150 5193 y Fh(bitxor)390
5340 y Fk(BITXOR)46 b(num1)h(num2)p eop end
%%Page: 34 47
TeXDict begin 34 46 bop 150 -116 a Fs(34)2551 b(BERKELEY)30
b(LOGO)g(6.1)390 299 y Fk(\(BITXOR)46 b(num1)g(num2)h(num3)g(...\))150
467 y Fs(outputs)30 b(the)g(bit)m(wise)h Fl(exclusiv)m(e)h(or)37
b Fs(of)31 b(its)f(inputs,)g(whic)m(h)g(m)m(ust)g(b)s(e)g(in)m(tegers.)
150 634 y(See)h([OR],)f(page)h(35,)h(.)150 834 y Fh(bitnot)390
980 y Fk(BITNOT)46 b(num)150 1148 y Fs(outputs)30 b(the)g(bit)m(wise)h
Fl(not)i Fs(of)e(its)f(input,)g(whic)m(h)g(m)m(ust)g(b)s(e)g(an)g(in)m
(teger.)150 1316 y(See)h([NOT],)f(page)h(35,)h(.)150
1515 y Fh(ashift)390 1662 y Fk(ASHIFT)46 b(num1)h(num2)150
1830 y Fs(outputs)30 b Fl(n)m(um1)38 b Fs(arithmetic-shifted)31
b(to)h(the)f(left)g(b)m(y)f Fl(n)m(um2)38 b Fs(bits.)j(If)30
b Fl(n)m(um2)38 b Fs(is)31 b(negativ)m(e,)i(the)e(shift)f(is)150
1939 y(to)h(the)g(righ)m(t)g(with)f(sign)g(extension.)41
b(The)30 b(inputs)g(m)m(ust)g(b)s(e)g(in)m(tegers.)150
2139 y Fh(lshift)390 2286 y Fk(LSHIFT)46 b(num1)h(num2)150
2453 y Fs(outputs)33 b Fl(n)m(um1)40 b Fs(logical-shifted)35
b(to)f(the)f(left)h(b)m(y)f Fl(n)m(um2)40 b Fs(bits.)49
b(If)33 b Fl(n)m(um2)40 b Fs(is)33 b(negativ)m(e,)j(the)d(shift)g(is)g
(to)150 2563 y(the)e(righ)m(t)g(with)f(zero)h(\014ll.)40
b(The)30 b(inputs)g(m)m(ust)g(b)s(e)g(in)m(tegers.)p
eop end
%%Page: 35 48
TeXDict begin 35 47 bop 3659 -116 a Fs(35)150 299 y Fp(5)80
b(Logical)53 b(Op)t(erations)150 639 y Fr(and)390 799
y Fk(AND)47 b(tf1)g(tf2)390 908 y(\(AND)g(tf1)g(tf2)f(tf3)h(...\))150
1076 y Fs(outputs)34 b Fk(TRUE)g Fs(if)h(all)h(inputs)d(are)i
Fk(TRUE)p Fs(,)h(otherwise)f Fk(FALSE)p Fs(.)52 b(All)36
b(inputs)e(m)m(ust)g(b)s(e)h Fk(TRUE)e Fs(or)i Fk(FALSE)p
Fs(.)150 1186 y(\(Comparison)d(is)h(case-insensitiv)m(e)i(regardless)e
(of)f(the)h(v)-5 b(alue)33 b(of)g Fk(CASEIGNOREDP)p Fs(.)44
b(That)32 b(is,)i Fk(true)d Fs(or)150 1295 y Fk(True)37
b Fs(or)i Fk(TRUE)e Fs(are)i(all)h(the)f(same.\))66 b(An)38
b(input)f(can)i(b)s(e)f(a)h(list,)j(in)c(whic)m(h)g(case)i(it)f(is)g
(tak)m(en)g(as)g(an)150 1405 y(expression)c(to)h(run;)h(that)f
(expression)f(m)m(ust)g(pro)s(duce)f(a)i Fk(TRUE)e Fs(or)i
Fk(FALSE)e Fs(v)-5 b(alue.)56 b(List)35 b(expressions)150
1514 y(are)27 b(ev)-5 b(aluated)29 b(from)d(left)i(to)g(righ)m(t;)h(as)
e(so)s(on)g(as)h(a)f Fk(FALSE)f Fs(v)-5 b(alue)27 b(is)g(found,)g(the)g
(remaining)h(inputs)e(are)150 1624 y(not)31 b(examined.)41
b(Example:)390 1792 y Fk(MAKE)47 b("RESULT)e(AND)i([NOT)g(\(:X)g(=)g
(0\)])g([\(1)g(/)h(:X\))f(>)g(.5])150 1959 y Fs(to)31
b(a)m(v)m(oid)h(the)f(division)f(b)m(y)g(zero)h(if)g(the)f(\014rst)g
(part)g(is)h(false.)150 2127 y(See)g([CASEIGNOREDP],)f(page)h(89,)h(.)
150 2326 y Fh(or)390 2473 y Fk(OR)47 b(tf1)g(tf2)390
2583 y(\(OR)g(tf1)g(tf2)g(tf3)g(...\))150 2751 y Fs(outputs)37
b Fk(TRUE)g Fs(if)h(an)m(y)g(input)f(is)g Fk(TRUE)p Fs(,)i(otherwise)f
Fk(FALSE)p Fs(.)62 b(All)38 b(inputs)f(m)m(ust)h(b)s(e)f
Fk(TRUE)f Fs(or)i Fk(FALSE)p Fs(.)150 2860 y(\(Comparison)32
b(is)h(case-insensitiv)m(e)i(regardless)e(of)f(the)h(v)-5
b(alue)33 b(of)g Fk(CASEIGNOREDP)p Fs(.)44 b(That)32
b(is,)i Fk(true)d Fs(or)150 2970 y Fk(True)37 b Fs(or)i
Fk(TRUE)e Fs(are)i(all)h(the)f(same.\))66 b(An)38 b(input)f(can)i(b)s
(e)f(a)h(list,)j(in)c(whic)m(h)g(case)i(it)f(is)g(tak)m(en)g(as)g(an)
150 3079 y(expression)c(to)h(run;)h(that)f(expression)f(m)m(ust)g(pro)s
(duce)f(a)i Fk(TRUE)e Fs(or)i Fk(FALSE)e Fs(v)-5 b(alue.)56
b(List)35 b(expressions)150 3189 y(are)30 b(ev)-5 b(aluated)32
b(from)d(left)i(to)g(righ)m(t;)f(as)h(so)s(on)e(as)i(a)f
Fk(TRUE)f Fs(v)-5 b(alue)30 b(is)g(found,)f(the)i(remaining)f(inputs)f
(are)150 3298 y(not)i(examined.)41 b(Example:)390 3466
y Fk(IF)47 b(OR)g(:X=0)g([some.long.computation])41 b([...])150
3634 y Fs(to)31 b(a)m(v)m(oid)h(the)f(long)g(computation)g(if)f(the)h
(\014rst)e(condition)i(is)g(met.)150 3802 y(See)g([CASEIGNOREDP],)f
(page)h(89,)h(.)150 4001 y Fh(not)390 4148 y Fk(NOT)47
b(tf)150 4315 y Fs(outputs)32 b Fk(TRUE)g Fs(if)g(the)h(input)f(is)g
Fk(FALSE)p Fs(,)g(and)g(vice)i(v)m(ersa.)48 b(The)32
b(input)g(can)h(b)s(e)f(a)h(list,)h(in)f(whic)m(h)f(case)150
4425 y(it)f(is)f(tak)m(en)i(as)e(an)h(expression)f(to)h(run;)e(that)i
(expression)f(m)m(ust)g(pro)s(duce)g(a)g Fk(TRUE)g Fs(or)g
Fk(FALSE)f Fs(v)-5 b(alue.)p eop end
%%Page: 36 49
TeXDict begin 36 48 bop eop end
%%Page: 37 50
TeXDict begin 37 49 bop 3659 -116 a Fs(37)150 299 y Fp(6)80
b(Graphics)150 601 y Fs(Berk)m(eley)36 b(Logo)f(pro)m(vides)g
(traditional)g(Logo)g(turtle)g(graphics)f(with)g(one)h(turtle.)52
b(Multiple)35 b(turtles,)150 711 y(dynamic)41 b(turtles,)j(and)c
(collision)i(detection)h(are)e(not)g(supp)s(orted.)70
b(This)40 b(is)h(the)g(most)g(hardw)m(are-)150 820 y(dep)s(enden)m(t)33
b(part)h(of)g(Logo;)j(some)e(features)f(ma)m(y)g(exist)h(on)f(some)g
(mac)m(hines)h(but)e(not)h(others.)52 b(Nev-)150 930
y(ertheless,)40 b(the)d(goal)i(has)e(b)s(een)g(to)h(mak)m(e)g(Logo)h
(programs)e(as)g(p)s(ortable)h(as)f(p)s(ossible,)i(rather)e(than)150
1040 y(to)32 b(tak)m(e)i(fullest)e(adv)-5 b(an)m(tage)34
b(of)d(the)h(capabilities)i(of)e(eac)m(h)h(mac)m(hine.)45
b(In)31 b(particular,)i(Logo)g(attempts)150 1149 y(to)g(scale)h(the)f
(screen)f(so)h(that)g(turtle)g(co)s(ordinates)g([{100)h({100])h(and)d
([100)i(100])g(\014t)e(on)g(the)h(graphics)150 1259 y(windo)m(w,)d(and)
g(so)g(that)h(the)g(asp)s(ect)g(ratio)g(is)g(1:1.)150
1426 y(The)e(cen)m(ter)i(of)f(the)f(graphics)h(windo)m(w)f(\(whic)m(h)h
(ma)m(y)g(or)g(ma)m(y)g(not)g(b)s(e)f(the)h(en)m(tire)g(screen,)g(dep)s
(ending)150 1536 y(on)35 b(the)g(mac)m(hine)g(used\))g(is)g(turtle)g
(lo)s(cation)i([0)e(0].)55 b(P)m(ositiv)m(e)37 b(X)e(is)g(to)h(the)f
(righ)m(t;)j(p)s(ositiv)m(e)e(Y)f(is)g(up.)150 1646 y(Headings)29
b(\(angles\))h(are)f(measured)e(in)i(degrees)g(clo)s(c)m(kwise)g(from)f
(the)h(p)s(ositiv)m(e)g(Y)g(axis.)40 b(\(This)28 b(di\013ers)150
1755 y(from)h(the)h(common)g(mathematical)i(con)m(v)m(en)m(tion)g(of)e
(measuring)g(angles)g(coun)m(terclo)s(c)m(kwise)i(from)e(the)150
1865 y(p)s(ositiv)m(e)g(X)f(axis.\))41 b(The)28 b(turtle)h(is)g
(represen)m(ted)f(as)h(an)g(iso)s(celes)h(triangle;)h(the)e(actual)h
(turtle)f(p)s(osition)150 1974 y(is)c(at)h(the)f(midp)s(oin)m(t)g(of)g
(the)g(base)g(\(the)h(short)f(side\).)39 b(Ho)m(w)m(ev)m(er,)28
b(the)e(turtle)f(is)g(dra)m(wn)f(one)i(step)f(b)s(ehind)150
2084 y(its)32 b(actual)h(p)s(osition,)f(so)g(that)g(the)g(displa)m(y)g
(of)f(the)h(base)g(of)g(the)f(turtle's)h(triangle)h(do)s(es)e(not)h
(obscure)150 2194 y(a)f(line)f(dra)m(wn)g(p)s(erp)s(endicular)e(to)j
(it)g(\(as)g(w)m(ould)f(happ)s(en)f(after)i(dra)m(wing)f(a)h(square\).)
150 2361 y(Colors)f(are,)h(of)g(course,)f(hardw)m(are-dep)s(enden)m(t.)
40 b(Ho)m(w)m(ev)m(er,)33 b(Logo)e(pro)m(vides)f(partial)h(hardw)m(are)
f(inde-)150 2471 y(p)s(endence)f(b)m(y)i(in)m(terpreting)g(color)g(n)m
(um)m(b)s(ers)e(0)i(through)f(7)g(uniformly)g(on)g(all)h(computers:)390
2639 y Fk(0)95 b(black)381 b(1)95 b(blue)428 b(2)95 b(green)381
b(3)95 b(cyan)390 2748 y(4)g(red)477 b(5)95 b(magenta)284
b(6)95 b(yellow)333 b(7)47 b(white)150 2916 y Fs(Where)33
b(p)s(ossible,)h(Logo)g(pro)m(vides)f(additional)h(user-settable)g
(colors;)i(ho)m(w)d(man)m(y)g(are)g(a)m(v)-5 b(ailable)36
b(de-)150 3025 y(p)s(ends)21 b(on)i(the)g(hardw)m(are)g(and)f(op)s
(erating)i(system)f(en)m(vironmen)m(t.)39 b(If)22 b(at)i(least)g(16)g
(colors)g(are)f(a)m(v)-5 b(ailable,)150 3135 y(Logo)31
b(tries)g(to)g(pro)m(vide)g(uniform)e(initial)j(settings)f(for)f(the)h
(colors)g(8-15:)438 3303 y Fk(8)95 b(brown)380 b(9)96
b(tan)428 b(10)95 b(forest)285 b(11)95 b(aqua)390 3412
y(12)g(salmon)285 b(13)95 b(purple)284 b(14)95 b(orange)285
b(15)95 b(grey)150 3580 y Fs(Logo)31 b(b)s(egins)f(with)g(a)h(blac)m(k)
g(bac)m(kground)g(and)e(white)i(p)s(en.)150 3847 y Fr(6.1)68
b(T)-11 b(urtle)45 b(Motion)150 4056 y Fh(forw)m(ard)390
4202 y Fk(FORWARD)h(dist)390 4312 y(FD)h(dist)150 4480
y Fs(mo)m(v)m(es)22 b(the)f(turtle)g(forw)m(ard,)h(in)e(the)h
(direction)g(that)g(it's)g(facing,)j(b)m(y)c(the)h(sp)s(eci\014ed)f
(distance)h(\(measured)150 4589 y(in)30 b(turtle)h(steps\).)150
4806 y Fh(bac)m(k)390 4953 y Fk(BACK)47 b(dist)390 5063
y(BK)g(dist)150 5230 y Fs(mo)m(v)m(es)39 b(the)e(turtle)h(bac)m(kw)m
(ard,)i(i.e.,)g(exactly)f(opp)s(osite)f(to)g(the)f(direction)h(that)g
(it's)g(facing,)j(b)m(y)c(the)150 5340 y(sp)s(eci\014ed)30
b(distance.)41 b(\(The)30 b(heading)h(of)f(the)h(turtle)g(do)s(es)f
(not)g(c)m(hange.\))p eop end
%%Page: 38 51
TeXDict begin 38 50 bop 150 -116 a Fs(38)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(left)390 446 y Fk(LEFT)47 b(degrees)390
555 y(LT)g(degrees)150 723 y Fs(turns)35 b(the)h(turtle)h(coun)m
(terclo)s(c)m(kwise)h(b)m(y)e(the)g(sp)s(eci\014ed)g(angle,)j(measured)
c(in)h(degrees)h(\(1/360)h(of)f(a)150 833 y(circle\).)150
1028 y Fh(righ)m(t)390 1175 y Fk(RIGHT)46 b(degrees)390
1285 y(RT)h(degrees)150 1453 y Fs(turns)29 b(the)i(turtle)f(clo)s(c)m
(kwise)i(b)m(y)f(the)f(sp)s(eci\014ed)g(angle,)i(measured)d(in)h
(degrees)h(\(1/360)i(of)e(a)g(circle\).)150 1648 y Fh(setp)s(os)390
1795 y Fk(SETPOS)46 b(pos)150 1963 y Fs(mo)m(v)m(es)31
b(the)g(turtle)f(to)h(an)f(absolute)h(p)s(osition)f(in)g(the)g
(graphics)g(windo)m(w.)40 b(The)30 b(input)f(is)h(a)h(list)f(of)h(t)m
(w)m(o)150 2073 y(n)m(um)m(b)s(ers,)e(the)i(X)f(and)g(Y)g(co)s
(ordinates.)150 2268 y Fh(setxy)390 2415 y Fk(SETXY)46
b(xcor)h(ycor)150 2583 y Fs(mo)m(v)m(es)f(the)f(turtle)g(to)h(an)e
(absolute)i(p)s(osition)f(in)f(the)h(graphics)g(windo)m(w.)83
b(The)45 b(t)m(w)m(o)h(inputs)e(are)150 2693 y(n)m(um)m(b)s(ers,)29
b(the)i(X)f(and)g(Y)g(co)s(ordinates.)150 2888 y Fh(setx)390
3035 y Fk(SETX)47 b(xcor)150 3203 y Fs(mo)m(v)m(es)30
b(the)f(turtle)g(horizon)m(tally)i(from)d(its)h(old)g(p)s(osition)f(to)
i(a)f(new)f(absolute)h(horizon)m(tal)i(co)s(ordinate.)150
3312 y(The)f(input)f(is)i(the)f(new)g(X)h(co)s(ordinate.)150
3508 y Fh(set)m(y)390 3655 y Fk(SETY)47 b(ycor)150 3823
y Fs(mo)m(v)m(es)31 b(the)e(turtle)h(v)m(ertically)i(from)d(its)h(old)g
(p)s(osition)f(to)i(a)e(new)g(absolute)i(v)m(ertical)g(co)s(ordinate.)
41 b(The)150 3932 y(input)29 b(is)i(the)f(new)g(Y)h(co)s(ordinate.)150
4128 y Fh(setheading)390 4275 y Fk(SETHEADING)45 b(degrees)390
4385 y(SETH)i(degrees)150 4552 y Fs(turns)29 b(the)i(turtle)g(to)g(a)g
(new)f(absolute)i(heading.)41 b(The)30 b(input)g(is)g(a)h(n)m(um)m(b)s
(er,)f(the)h(heading)f(in)g(degrees)150 4662 y(clo)s(c)m(kwise)i(from)e
(the)g(p)s(ositiv)m(e)i(Y)e(axis.)150 4858 y Fh(home)390
5005 y Fk(HOME)150 5172 y Fs(mo)m(v)m(es)i(the)e(turtle)h(to)g(the)g
(cen)m(ter)g(of)g(the)f(screen.)41 b(Equiv)-5 b(alen)m(t)31
b(to)h Fk(SETPOS)46 b([0)h(0])g(SETHEADING)e(0.)150 5340
y Fs(See)31 b([SETPOS],)e(page)i(38,)g(,)g(See)g([SETHEADING],)g(page)g
(38,)g(.)p eop end
%%Page: 39 52
TeXDict begin 39 51 bop 150 -116 a Fs(Chapter)30 b(6:)41
b(Graphics)2689 b(39)150 299 y Fh(arc)390 446 y Fk(ARC)47
b(angle)f(radius)150 614 y Fs(dra)m(ws)29 b(an)h(arc)g(of)g(a)g
(circle,)i(with)d(the)h(turtle)g(at)h(the)f(cen)m(ter,)h(with)e(the)h
(sp)s(eci\014ed)f(radius,)h(starting)g(at)150 723 y(the)k(turtle's)g
(heading)g(and)f(extending)h(clo)s(c)m(kwise)h(through)e(the)h(sp)s
(eci\014ed)f(angle.)52 b(The)33 b(turtle)h(do)s(es)150
833 y(not)d(mo)m(v)m(e.)150 1068 y Fr(6.2)68 b(T)-11
b(urtle)45 b(Motion)g(Queries)150 1253 y Fh(p)s(os)390
1400 y Fk(POS)150 1568 y Fs(outputs)30 b(the)g(turtle's)h(curren)m(t)f
(p)s(osition,)h(as)g(a)g(list)g(of)f(t)m(w)m(o)i(n)m(um)m(b)s(ers,)d
(the)i(X)f(and)g(Y)g(co)s(ordinates.)150 1761 y Fh(xcor)390
1908 y Fk(XCOR)47 b(\(library)e(procedure\))150 2076
y Fs(outputs)30 b(a)h(n)m(um)m(b)s(er,)e(the)h(turtle's)h(X)g(co)s
(ordinate.)150 2269 y Fh(ycor)390 2416 y Fk(YCOR)47 b(\(library)e
(procedure\))150 2584 y Fs(outputs)30 b(a)h(n)m(um)m(b)s(er,)e(the)h
(turtle's)h(Y)g(co)s(ordinate.)150 2778 y Fh(heading)390
2924 y Fk(HEADING)150 3092 y Fs(outputs)f(a)h(n)m(um)m(b)s(er,)e(the)h
(turtle's)h(heading)g(in)f(degrees.)150 3286 y Fh(to)m(w)m(ards)390
3433 y Fk(TOWARDS)46 b(pos)150 3600 y Fs(outputs)30 b(a)i(n)m(um)m(b)s
(er,)e(the)h(heading)g(at)h(whic)m(h)e(the)i(turtle)f(should)f(b)s(e)g
(facing)i(so)f(that)h(it)f(w)m(ould)g(p)s(oin)m(t)150
3710 y(from)f(its)h(curren)m(t)f(p)s(osition)g(to)h(the)g(p)s(osition)f
(giv)m(en)i(as)e(the)h(input.)150 3904 y Fh(scrunc)m(h)390
4050 y Fk(SCRUNCH)150 4218 y Fs(outputs)23 b(a)h(list)g(con)m(taining)h
(t)m(w)m(o)g(n)m(um)m(b)s(ers,)f(the)g(X)g(and)f(Y)g(scrunc)m(h)g
(factors,)j(as)e(used)f(b)m(y)g Fk(SETSCRUNCH)p Fs(.)150
4328 y(\(But)31 b(note)g(that)g Fk(SETSCRUNCH)c Fs(tak)m(es)32
b(t)m(w)m(o)g(n)m(um)m(b)s(ers)d(as)i(inputs,)e(not)i(one)f(list)h(of)g
(n)m(um)m(b)s(ers.\))150 4495 y(See)g([SETSCR)m(UNCH],)e(page)j(42,)f
(.)150 4731 y Fr(6.3)68 b(T)-11 b(urtle)45 b(and)g(Windo)l(w)g(Con)l
(trol)150 4916 y Fh(sho)m(wturtle)390 5063 y Fk(SHOWTURTLE)390
5172 y(ST)150 5340 y Fs(mak)m(es)31 b(the)g(turtle)g(visible.)p
eop end
%%Page: 40 53
TeXDict begin 40 52 bop 150 -116 a Fs(40)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(hideturtle)390 446 y Fk(HIDETURTLE)390
555 y(HT)150 723 y Fs(mak)m(es)44 b(the)f(turtle)h(in)m(visible.)80
b(It's)43 b(a)h(go)s(o)s(d)f(idea)h(to)g(do)f(this)g(while)g(y)m(ou're)
h(in)f(the)g(middle)g(of)h(a)150 833 y(complicated)32
b(dra)m(wing,)f(b)s(ecause)f(hiding)g(the)g(turtle)h(sp)s(eeds)e(up)h
(the)g(dra)m(wing)g(substan)m(tially)-8 b(.)150 1034
y Fh(clean)390 1181 y Fk(CLEAN)150 1349 y Fs(erases)31
b(all)g(lines)g(that)g(the)g(turtle)f(has)h(dra)m(wn)e(on)i(the)f
(graphics)h(windo)m(w.)40 b(The)30 b(turtle's)h(state)h(\(p)s(osi-)150
1458 y(tion,)f(heading,)g(p)s(en)e(mo)s(de,)h(etc.\))42
b(is)31 b(not)f(c)m(hanged.)150 1659 y Fh(clearscreen)390
1806 y Fk(CLEARSCREEN)390 1916 y(CS)150 2084 y Fs(erases)37
b(the)f(graphics)h(windo)m(w)e(and)h(sends)f(the)i(turtle)f(to)h(its)g
(initial)h(p)s(osition)e(and)g(heading.)58 b(Lik)m(e)150
2193 y Fk(HOME)29 b Fs(and)h Fk(CLEAN)f Fs(together.)150
2361 y(See)i([HOME],)g(page)g(38,)g(.)150 2562 y Fh(wrap)390
2709 y Fk(WRAP)150 2877 y Fs(tells)k(the)f(turtle)g(to)h(en)m(ter)g
(wrap)e(mo)s(de:)47 b(F)-8 b(rom)34 b(no)m(w)g(on,)h(if)f(the)g(turtle)
g(is)g(ask)m(ed)h(to)f(mo)m(v)m(e)i(past)e(the)150 2986
y(b)s(oundary)26 b(of)h(the)h(graphics)g(windo)m(w,)f(it)i(will)f
Fk(")p Fs(wrap)e(around)p Fk(")g Fs(and)h(reapp)s(ear)g(at)i(the)e(opp)
s(osite)h(edge)150 3096 y(of)34 b(the)h(windo)m(w.)51
b(The)34 b(top)g(edge)h(wraps)e(to)i(the)g(b)s(ottom)f(edge,)i(while)e
(the)h(left)g(edge)g(wraps)e(to)i(the)150 3206 y(righ)m(t)26
b(edge.)40 b(\(So)26 b(the)g(windo)m(w)g(is)f(top)s(ologically)k(equiv)
-5 b(alen)m(t)27 b(to)g(a)f(torus.\))39 b(This)25 b(is)h(the)g
(turtle's)h(initial)150 3315 y(mo)s(de.)40 b(Compare)30
b Fk(WINDOW)f Fs(and)h Fk(FENCE)p Fs(.)150 3483 y(See)h([FENCE],)g
(page)g(40,)g(.)150 3684 y Fh(windo)m(w)390 3831 y Fk(WINDOW)150
3999 y Fs(tells)38 b(the)f(turtle)h(to)f(en)m(ter)h(windo)m(w)f(mo)s
(de:)53 b(F)-8 b(rom)38 b(no)m(w)f(on,)h(if)f(the)h(turtle)f(is)g(ask)m
(ed)h(to)f(mo)m(v)m(e)i(past)150 4108 y(the)32 b(b)s(oundary)e(of)j
(the)f(graphics)g(windo)m(w,)g(it)h(will)f(mo)m(v)m(e)i(o\013screen.)46
b(The)32 b(visible)g(graphics)g(windo)m(w)150 4218 y(is)i(considered)f
(as)h(just)f(part)g(of)h(an)g(in\014nite)f(graphics)h(plane;)h(the)f
(turtle)g(can)g(b)s(e)f(an)m(ywhere)g(on)h(the)150 4328
y(plane.)39 b(\(If)25 b(y)m(ou)h(lose)g(the)f(turtle,)i
Fk(HOME)d Fs(will)i(bring)e(it)i(bac)m(k)g(to)g(the)f(cen)m(ter)i(of)e
(the)g(windo)m(w.\))39 b(Compare)150 4437 y Fk(WRAP)29
b Fs(and)h Fk(FENCE)p Fs(.)150 4605 y(See)h([HOME],)g(page)g(38,)g(.)
150 4806 y Fh(fence)390 4953 y Fk(FENCE)150 5121 y Fs(tells)k(the)f
(turtle)g(to)g(en)m(ter)h(fence)f(mo)s(de:)47 b(F)-8
b(rom)34 b(no)m(w)g(on,)h(if)f(the)g(turtle)g(is)g(ask)m(ed)g(to)h(mo)m
(v)m(e)g(past)f(the)150 5230 y(b)s(oundary)e(of)j(the)f(graphics)h
(windo)m(w,)g(it)f(will)h(mo)m(v)m(e)h(as)e(far)h(as)f(it)h(can)g(and)e
(then)h(stop)h(at)g(the)f(edge)150 5340 y(with)c(an)g
Fk(")p Fs(out)h(of)f(b)s(ounds)p Fk(")e Fs(error)i(message.)42
b(Compare)30 b Fk(WRAP)f Fs(and)h Fk(WINDOW)p Fs(.)p
eop end
%%Page: 41 54
TeXDict begin 41 53 bop 150 -116 a Fs(Chapter)30 b(6:)41
b(Graphics)2689 b(41)150 299 y(See)31 b([WRAP],)g(page)g(40,)h(.)150
486 y Fh(\014ll)390 633 y Fk(FILL)150 801 y Fs(\014lls)39
b(in)f(a)i(region)f(of)g(the)g(graphics)g(windo)m(w)g(con)m(taining)h
(the)f(turtle)g(and)g(b)s(ounded)d(b)m(y)j(lines)g(that)150
910 y(ha)m(v)m(e)d(b)s(een)f(dra)m(wn)f(earlier.)56 b(This)34
b(is)h(not)g(p)s(ortable;)j(it)e(do)s(esn't)f(w)m(ork)g(for)g(all)h
(mac)m(hines,)h(and)d(ma)m(y)150 1020 y(not)d(w)m(ork)f(exactly)i(the)f
(same)g(w)m(a)m(y)g(on)f(di\013eren)m(t)h(mac)m(hines.)150
1207 y Fh(\014lled)390 1354 y Fk(FILLED)46 b(color)g(instructions)150
1522 y Fs(runs)30 b(the)h(instructions,)h(remem)m(b)s(ering)f(all)h(p)s
(oin)m(ts)g(visited)f(b)m(y)h(turtle)g(motion)g(commands,)f(starting)
150 1631 y Fg(and)39 b(ending)44 b Fs(with)36 b(the)h(turtle's)f
(initial)i(p)s(osition.)58 b(Then)36 b(dra)m(ws)f(\(ignoring)i(p)s
(enmo)s(de\))e(the)i(result-)150 1741 y(ing)f(p)s(olygon,)h(in)e(the)h
(curren)m(t)f(p)s(en)f(color,)39 b(\014lling)c(the)h(p)s(olygon)g(with)
f(the)h(giv)m(en)g(color,)i(whic)m(h)e(can)150 1850 y(b)s(e)h(a)g
(color)i(n)m(um)m(b)s(er)d(or)h(an)g(R)m(GB)h(list.)63
b(The)36 b(instruction)i(list)f(cannot)h(include)f(another)h(FILLED)150
1960 y(in)m(v)m(o)s(cation.)43 b(\(wxWidgets)31 b(only\))150
2147 y Fh(lab)s(el)390 2294 y Fk(LABEL)46 b(text)150
2462 y Fs(tak)m(es)33 b(a)e(w)m(ord)g(or)g(list)h(as)f(input,)f(and)h
(prin)m(ts)f(the)i(input)e(on)h(the)g(graphics)g(windo)m(w,)g(starting)
h(at)g(the)150 2571 y(turtle's)f(p)s(osition.)150 2758
y Fh(setlab)s(elheigh)m(t)390 2905 y Fk(SETLABELHEIGHT)44
b(height)150 3073 y Fs(command)36 b(\(wxWidgets)i(only\).)59
b(T)-8 b(ak)m(es)37 b(a)g(p)s(ositiv)m(e)g(in)m(teger)h(argumen)m(t)f
(and)e(tries)i(to)g(set)g(the)f(fon)m(t)150 3183 y(size)41
b(so)f(that)h(the)f(c)m(haracter)i(heigh)m(t)f(\(including)f
(descenders\))g(is)g(that)g(man)m(y)h(turtle)f(steps.)70
b(This)150 3292 y(will)31 b(b)s(e)e(di\013eren)m(t)i(from)f(the)g(n)m
(um)m(b)s(er)f(of)h(screen)h(pixels)f(if)g Fk(SETSCRUNCH)e
Fs(has)i(b)s(een)f(used.)40 b(Also,)31 b(note)150 3402
y(that)j Fk(SETSCRUNCH)d Fs(c)m(hanges)j(the)g(fon)m(t)g(size)g(to)h
(try)e(to)h(preserv)m(e)g(this)f(heigh)m(t)i(in)e(turtle)h(steps.)50
b(Note)150 3511 y(that)32 b(the)g(query)e(op)s(eration)i(corresp)s
(onding)f(to)h(this)f(command)g(is)h Fk(LABELSIZE)p Fs(,)d(not)j
Fk(LABELHEIGHT)p Fs(,)150 3621 y(b)s(ecause)e(it)h(tells)h(y)m(ou)e
(the)h(width)f(as)g(w)m(ell)i(as)e(the)h(heigh)m(t)g(of)f(c)m
(haracters)i(in)e(the)h(curren)m(t)f(fon)m(t.)150 3808
y Fh(textscreen)390 3955 y Fk(TEXTSCREEN)390 4064 y(TS)150
4232 y Fs(rearranges)40 b(the)f(size)h(and)f(p)s(osition)g(of)h(windo)m
(ws)e(to)i(maximize)h(the)e(space)h(a)m(v)-5 b(ailable)41
b(in)e(the)h(text)150 4342 y(windo)m(w)33 b(\(the)i(windo)m(w)e(used)h
(for)f(in)m(teraction)j(with)e(Logo\).)53 b(The)34 b(details)h
(di\013er)f(among)g(mac)m(hines.)150 4451 y(Compare)c
Fk(SPLITSCREEN)d Fs(and)j Fk(FULLSCREEN)p Fs(.)150 4619
y(See)h([SPLITSCREEN],)d(page)j(42,)h(.)150 4806 y Fh(fullscreen)390
4953 y Fk(FULLSCREEN)390 5063 y(FS)150 5230 y Fs(rearranges)27
b(the)h(size)g(and)e(p)s(osition)h(of)h(windo)m(ws)e(to)i(maximize)g
(the)g(space)f(a)m(v)-5 b(ailable)30 b(in)d(the)g(graphics)150
5340 y(windo)m(w.)40 b(The)30 b(details)h(di\013er)g(among)f(mac)m
(hines.)42 b(Compare)30 b Fk(SPLITSCREEN)d Fs(and)j Fk(TEXTSCREEN)p
Fs(.)p eop end
%%Page: 42 55
TeXDict begin 42 54 bop 150 -116 a Fs(42)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(Since)38 b(there)f(m)m(ust)h(b)s(e)f(a)h(text)g
(windo)m(w)f(to)h(allo)m(w)h(prin)m(ting)f(\(including)f(the)h(prin)m
(ting)f(of)h(the)g(Logo)150 408 y(prompt\),)e(Logo)g(automatically)i
(switc)m(hes)e(from)f(fullscreen)g(to)h(splitscreen)f(whenev)m(er)g(an)
m(ything)h(is)150 518 y(prin)m(ted.)150 686 y(In)g(the)h(DOS)g(v)m
(ersion,)i(switc)m(hing)f(from)e(fullscreen)h(to)h(splitscreen)f(loses)
h(the)f(part)g(of)g(the)g(picture)150 795 y(that's)24
b(hidden)e(b)m(y)h(the)g(text)h(windo)m(w.)38 b([This)23
b(design)g(decision)h(follo)m(ws)g(from)f(the)g(scarcit)m(y)i(of)e
(memory)-8 b(,)150 905 y(so)28 b(that)h(the)f(extra)g(memory)g(to)g
(remem)m(b)s(er)g(an)f(in)m(visible)i(part)f(of)g(a)g(dra)m(wing)g
(seems)g(to)s(o)g(exp)s(ensiv)m(e.])150 1089 y Fh(splitscreen)390
1236 y Fk(SPLITSCREEN)390 1346 y(SS)150 1513 y Fs(rearranges)21
b(the)g(size)g(and)f(p)s(osition)h(of)f(windo)m(ws)g(to)i(allo)m(w)g
(some)f(ro)s(om)f(for)g(text)i(in)m(teraction)g(while)f(also)150
1623 y(k)m(eeping)31 b(most)f(of)g(the)g(graphics)f(windo)m(w)g
(visible.)41 b(The)30 b(details)g(di\013er)g(among)g(mac)m(hines.)41
b(Compare)150 1733 y Fk(TEXTSCREEN)28 b Fs(and)h Fk(FULLSCREEN)p
Fs(.)150 1900 y(See)i([TEXTSCREEN],)e(page)i(41,)h(.)150
2085 y Fh(setscrunc)m(h)390 2232 y Fk(SETSCRUNCH)45 b(xscale)h(yscale)
150 2399 y Fs(adjusts)35 b(the)g(asp)s(ect)h(ratio)g(and)f(scaling)h
(of)g(the)g(graphics)f(displa)m(y)-8 b(.)56 b(After)36
b(this)f(command)g(is)g(used,)150 2509 y(all)c(further)f(turtle)h
(motion)g(will)g(b)s(e)f(adjusted)g(b)m(y)g(m)m(ultiplying)h(the)g
(horizon)m(tal)h(and)e(v)m(ertical)j(exten)m(t)150 2619
y(of)43 b(the)g(motion)g(b)m(y)g(the)g(t)m(w)m(o)h(n)m(um)m(b)s(ers)e
(giv)m(en)h(as)g(inputs.)77 b(F)-8 b(or)44 b(example,)j(after)c(the)g
(instruction)150 2728 y Fk(SETSCRUNCH)i(2)i(1)c Fs(motion)h(at)f(a)g
(heading)g(of)g(45)h(degrees)f(will)h(mo)m(v)m(e)g(t)m(wice)g(as)f(far)
g(horizon)m(tally)150 2838 y(as)h(v)m(ertically)-8 b(.)82
b(If)43 b(y)m(our)g(squares)g(don't)h(come)g(out)f(square,)k(try)c
(this.)80 b(\(Alternativ)m(ely)-8 b(,)50 b(y)m(ou)44
b(can)150 2947 y(delib)s(erately)31 b(misadjust)f(the)g(asp)s(ect)h
(ratio)h(to)f(dra)m(w)f(an)g(ellipse.\))150 3115 y(F)-8
b(or)34 b(all)f(mo)s(dern)f(computers,)i(b)s(oth)e(scale)i(factors)g
(are)f(initially)h(1.)49 b(F)-8 b(or)34 b(DOS)e(mac)m(hines,)j(the)e
(scale)150 3225 y(factors)g(are)g(initially)h(set)f(according)g(to)g
(what)f(the)h(hardw)m(are)f(claims)h(the)g(asp)s(ect)g(ratio)g(is,)g
(but)f(the)150 3334 y(hardw)m(are)d(sometimes)i(lies.)41
b(F)-8 b(or)31 b(DOS,)f(the)g(v)-5 b(alues)30 b(set)g(b)m(y)g
Fk(SETSCRUNCH)d Fs(are)j(remem)m(b)s(ered)f(in)h(a)g(\014le)150
3444 y(\(called)i Fk(scrunch.dat)p Fs(\))c(and)h(are)i(automatically)i
(put)d(in)m(to)h(e\013ect)h(when)e(a)g(Logo)i(session)e(b)s(egins.)150
3628 y Fh(refresh)390 3775 y Fk(REFRESH)150 3943 y Fs(\(command\))h
(tells)g(Logo)g(to)g(remem)m(b)s(er)f(the)g(turtle's)h(motions)f(so)h
(that)f(they)h(can)f(b)s(e)g(used)f(for)h(high-)150 4052
y(resolution)35 b(prin)m(ting)g(\(wxWidgets\))h(or)f(to)g(refresh)f
(the)h(graphics)g(windo)m(w)f(if)g(it)i(is)e(mo)m(v)m(ed,)j(resized,)
150 4162 y(or)30 b(o)m(v)m(erla)m(y)m(ed)k(\(non-wxWidgets\).)42
b(This)29 b(is)i(the)f(default.)150 4346 y Fh(norefresh)390
4493 y Fk(NOREFRESH)150 4661 y Fs(\(command\))k(tells)h(Logo)f(not)g
(to)g(remem)m(b)s(er)f(the)h(turtle's)g(motions,)h(whic)m(h)e(ma)m(y)h
(b)s(e)f(useful)g(to)h(sa)m(v)m(e)150 4770 y(time)e(and)e(memory)h(if)g
(y)m(our)h(program)e(is)i(in)m(teractiv)m(e)i(or)d(animated,)h(rather)f
(than)g(dra)m(wing)g(a)g(static)150 4880 y(picture)i(y)m(ou'll)g(w)m
(an)m(t)h(to)f(prin)m(t)g(later)g(\(wxWidgets\).)50 b(In)32
b(non-wxWidgets)h(v)m(ersions,)h(using)e(NORE-)150 4990
y(FRESH)j(ma)m(y)i(prev)m(en)m(t)f(Logo)h(from)e(restoring)h(the)g
(graphics)g(image)h(after)f(the)g(windo)m(w)f(is)h(mo)m(v)m(ed,)150
5099 y(resized,)31 b(or)f(o)m(v)m(erla)m(y)m(ed.)150
5325 y Fr(6.4)68 b(T)-11 b(urtle)45 b(and)g(Windo)l(w)g(Queries)p
eop end
%%Page: 43 56
TeXDict begin 43 55 bop 150 -116 a Fs(Chapter)30 b(6:)41
b(Graphics)2689 b(43)150 299 y Fh(sho)m(wnp)390 446 y
Fk(SHOWNP)390 555 y(SHOWN?)150 723 y Fs(outputs)29 b
Fk(TRUE)f Fs(if)h(the)g(turtle)h(is)f(sho)m(wn)g(\(visible\),)h
Fk(FALSE)e Fs(if)h(the)h(turtle)f(is)g(hidden.)39 b(See)30
b Fk(SHOWTURTLE)150 833 y Fs(and)g Fk(HIDETURTLE)p Fs(.)150
1000 y(See)h([SHO)m(WTUR)-8 b(TLE],)31 b(page)g(39,)g(,)g([HIDETUR)-8
b(TLE],)31 b(page)g(40,)g(.)150 1208 y Fh(screenmo)s(de)390
1355 y Fk(SCREENMODE)150 1523 y Fs(outputs)44 b(the)g(w)m(ord)g
Fk(TEXTSCREEN)p Fs(,)i Fk(SPLITSCREEN)p Fs(,)f(or)f Fk(FULLSCREEN)e
Fs(dep)s(ending)g(on)j(the)f(curren)m(t)150 1632 y(screen)30
b(mo)s(de.)150 1840 y Fh(turtlemo)s(de)390 1987 y Fk(TURTLEMODE)150
2155 y Fs(outputs)g(the)g(w)m(ord)g Fk(WRAP)p Fs(,)g
Fk(FENCE)p Fs(,)f(or)h Fk(WINDOW)f Fs(dep)s(ending)g(on)h(the)h(curren)
m(t)f(turtle)h(mo)s(de.)150 2362 y Fh(lab)s(elsize)390
2509 y Fk(LABELSIZE)150 2677 y Fs(\(wxWidgets)d(only\))f(outputs)g(a)g
(list)h(of)f(t)m(w)m(o)h(p)s(ositiv)m(e)g(in)m(tegers,)h(the)e(width)f
(and)h(heigh)m(t)g(of)g(c)m(haracters)150 2787 y(displa)m(y)m(ed)36
b(b)m(y)f Fk(LABEL)f Fs(measured)h(in)g(turtle)g(steps)h(\(whic)m(h)f
(will)h(b)s(e)e(di\013eren)m(t)i(from)f(screen)g(pixels)h(if)150
2896 y Fk(SETSCRUNCH)d Fs(has)i(b)s(een)g(used\).)56
b(There)35 b(is)h(no)f Fk(SETLABELSIZE)d Fs(b)s(ecause)k(the)g(width)e
(and)h(heigh)m(t)i(of)150 3006 y(a)c(fon)m(t)g(are)h(not)f(separately)h
(con)m(trollable,)h(so)e(the)g(in)m(v)m(erse)h(of)f(this)g(op)s
(eration)g(is)g Fk(SETLABELHEIGHT)p Fs(,)150 3115 y(whic)m(h)d(tak)m
(es)i(just)e(one)g(n)m(um)m(b)s(er)f(for)i(the)f(desired)g(heigh)m(t.)
150 3369 y Fr(6.5)68 b(P)l(en)45 b(and)g(Bac)l(kground)f(Con)l(trol)150
3528 y Fs(The)29 b(turtle)i(carries)f(a)g(p)s(en)f(that)h(can)g(dra)m
(w)g(pictures.)40 b(A)m(t)31 b(an)m(y)f(time)h(the)f(p)s(en)e(can)i(b)s
(e)g(UP)f(\(in)h(whic)m(h)150 3638 y(case)f(mo)m(ving)f(the)g(turtle)h
(do)s(es)e(not)h(c)m(hange)h(what's)f(on)g(the)g(graphics)f(screen\))i
(or)e(DO)m(WN)i(\(in)f(whic)m(h)150 3747 y(case)37 b(the)g(turtle)f
(lea)m(v)m(es)j(a)d(trace\).)60 b(If)35 b(the)i(p)s(en)e(is)h(do)m(wn,)
h(it)g(can)f(op)s(erate)h(in)f(one)h(of)f(three)g(mo)s(des:)150
3857 y(P)-8 b(AINT)31 b(\(so)h(that)g(it)f(dra)m(ws)g(lines)g(when)f
(the)i(turtle)f(mo)m(v)m(es\),)i(ERASE)e(\(so)g(that)h(it)g(erases)f
(an)m(y)h(lines)150 3967 y(that)39 b(migh)m(t)h(ha)m(v)m(e)g(b)s(een)e
(dra)m(wn)g(on)h(or)g(through)f(that)i(path)e(earlier\),)43
b(or)c(REVERSE)e(\(so)j(that)f(it)150 4076 y(in)m(v)m(erts)31
b(the)g(status)f(of)h(eac)m(h)h(p)s(oin)m(t)e(along)h(the)g(turtle's)g
(path\).)150 4284 y Fh(p)s(endo)m(wn)390 4431 y Fk(PENDOWN)390
4540 y(PD)150 4708 y Fs(sets)g(the)f(p)s(en's)g(p)s(osition)g(to)h
Fk(DOWN)p Fs(,)f(without)g(c)m(hanging)h(its)g(mo)s(de.)150
4916 y Fh(p)s(en)m(up)390 5063 y Fk(PENUP)390 5172 y(PU)150
5340 y Fs(sets)g(the)f(p)s(en's)g(p)s(osition)g(to)h
Fk(UP)p Fs(,)f(without)h(c)m(hanging)g(its)g(mo)s(de.)p
eop end
%%Page: 44 57
TeXDict begin 44 56 bop 150 -116 a Fs(44)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(p)s(enpain)m(t)390 446 y Fk(PENPAINT)390
555 y(PPT)150 723 y Fs(sets)h(the)f(p)s(en's)g(p)s(osition)g(to)h
Fk(DOWN)e Fs(and)h(mo)s(de)g(to)h Fk(PAINT)p Fs(.)150
946 y Fh(p)s(enerase)390 1093 y Fk(PENERASE)390 1203
y(PE)150 1371 y Fs(sets)g(the)f(p)s(en's)g(p)s(osition)g(to)h
Fk(DOWN)e Fs(and)h(mo)s(de)g(to)h Fk(ERASE)p Fs(.)150
1538 y(See)g([ERASE],)f(page)h(57,)h(.)150 1761 y Fh(p)s(enrev)m(erse)
390 1908 y Fk(PENREVERSE)390 2018 y(PX)150 2186 y Fs(sets)45
b(the)h(p)s(en's)e(p)s(osition)h(to)h Fk(DOWN)e Fs(and)g(mo)s(de)h(to)h
Fk(REVERSE)p Fs(.)83 b(\(This)44 b(ma)m(y)i(in)m(teract)h(in)d(system-)
150 2295 y(dep)s(enden)m(t)29 b(w)m(a)m(ys)j(with)e(use)g(of)g
(color.\))150 2463 y(See)h([REVERSE],)f(page)h(10,)g(.)150
2686 y Fh(setp)s(encolor)390 2833 y Fk(SETPENCOLOR)45
b(colornumber.or.rgblist)390 2943 y(SETPC)h(colornumber.or.rgblist)150
3110 y Fs(sets)36 b(the)h(p)s(en)d(color)k(to)e(the)h(giv)m(en)g(n)m
(um)m(b)s(er,)f(whic)m(h)g(m)m(ust)g(b)s(e)f(a)h(nonnegativ)m(e)i(in)m
(teger.)59 b(There)36 b(are)150 3220 y(initial)c(assignmen)m(ts)f(for)f
(the)g(\014rst)g(16)h(colors:)438 3388 y Fk(0)95 b(black)f(1)h(blue)g
(2)g(green)f(3)h(cyan)438 3497 y(4)g(red)g(5)g(magenta)e(6)i(yellow)f
(7)48 b(white)438 3607 y(8)95 b(brown)f(9)h(tan)47 b(10)95
b(forest)46 b(11)95 b(aqua)390 3716 y(12)g(salmon)46
b(13)95 b(purple)46 b(14)95 b(orange)46 b(15)95 b(grey)150
3884 y Fs(but)29 b(other)i(colors)g(can)f(b)s(e)g(assigned)g(to)h(n)m
(um)m(b)s(ers)d(b)m(y)i(the)h Fk(PALETTE)d Fs(command.)40
b(Alternativ)m(ely)-8 b(,)34 b(sets)150 3994 y(the)g(p)s(en)e(color)j
(to)g(the)f(giv)m(en)g(R)m(GB)h(v)-5 b(alues)34 b(\(a)g(list)h(of)f
(three)g(nonnegativ)m(e)h(n)m(um)m(b)s(ers)d(less)i(than)g(100)150
4103 y(sp)s(ecifying)c(the)h(p)s(ercen)m(t)f(saturation)h(of)g(red,)f
(green,)h(and)f(blue)g(in)g(the)g(desired)g(color\).)150
4326 y Fh(setpalette)390 4473 y Fk(SETPALETTE)45 b(colornumber)g
(rgblist)150 4641 y Fs(sets)e(the)g(actual)g(color)h(corresp)s(onding)d
(to)j(a)f(giv)m(en)g(n)m(um)m(b)s(er,)i(if)d(allo)m(w)m(ed)i(b)m(y)f
(the)f(hardw)m(are)h(and)150 4751 y(op)s(erating)31 b(system.)42
b(Colorn)m(um)m(b)s(er)30 b(m)m(ust)h(b)s(e)f(an)g(in)m(teger)i
(greater)g(than)f(or)f(equal)i(to)f(8.)42 b(\(Logo)33
b(tries)150 4860 y(to)28 b(k)m(eep)f(the)g(\014rst)f(8)i(colors)g
(constan)m(t.\))41 b(The)26 b(second)h(input)f(is)h(a)g(list)h(of)f
(three)g(nonnegativ)m(e)h(n)m(um)m(b)s(ers)150 4970 y(less)j(than)f
(100)h(sp)s(ecifying)g(the)f(p)s(ercen)m(t)h(saturation)g(of)f(red,)g
(green,)h(and)f(blue)g(in)g(the)h(desired)f(color.)150
5193 y Fh(setp)s(ensize)390 5340 y Fk(SETPENSIZE)45 b(size)p
eop end
%%Page: 45 58
TeXDict begin 45 57 bop 150 -116 a Fs(Chapter)30 b(6:)41
b(Graphics)2689 b(45)150 299 y(sets)35 b(the)f(thic)m(kness)h(of)f(the)
h(p)s(en.)51 b(The)34 b(input)f(is)h(either)h(a)g(single)g(p)s(ositiv)m
(e)g(in)m(teger)g(or)g(a)f(list)h(of)g(t)m(w)m(o)150
408 y(p)s(ositiv)m(e)d(in)m(tegers)g(\(for)f(horizon)m(tal)i(and)d(v)m
(ertical)j(thic)m(kness\).)43 b(Some)31 b(v)m(ersions)g(pa)m(y)g(no)g
(atten)m(tion)i(to)150 518 y(the)e(second)f(n)m(um)m(b)s(er,)f(but)h
(alw)m(a)m(ys)i(ha)m(v)m(e)f(a)g(square)f(p)s(en.)150
711 y Fh(setp)s(enpattern)390 858 y Fk(SETPENPATTERN)44
b(pattern)150 1026 y Fs(sets)31 b(hardw)m(are-dep)s(enden)m(t)f(p)s(en)
g(c)m(haracteristics.)44 b(This)30 b(command)h(is)g(not)g(guaran)m
(teed)h(compatible)150 1136 y(b)s(et)m(w)m(een)f(implemen)m(tations)h
(on)e(di\013eren)m(t)h(mac)m(hines.)150 1329 y Fh(setp)s(en)390
1476 y Fk(SETPEN)46 b(list)h(\(library)e(procedure\))150
1644 y Fs(sets)29 b(the)g(p)s(en's)f(p)s(osition,)h(mo)s(de,)g(thic)m
(kness,)h(and)e(hardw)m(are-dep)s(enden)m(t)g(c)m(haracteristics)j
(according)150 1753 y(to)38 b(the)g(information)f(in)g(the)h(input)e
(list,)k(whic)m(h)d(should)f(b)s(e)h(tak)m(en)h(from)f(an)g(earlier)h
(in)m(v)m(o)s(cation)i(of)150 1863 y Fk(PEN)p Fs(.)150
2030 y(See)31 b([PEN],)g(page)g(46,)g(.)150 2224 y Fh(setbac)m(kground)
390 2371 y Fk(SETBACKGROUND)44 b(colornumber.or.rgblist)390
2480 y(SETBG)i(colornumber.or.rgblist)150 2648 y Fs(set)23
b(the)g(screen)g(bac)m(kground)g(color)h(b)m(y)e(slot)i(n)m(um)m(b)s
(er)d(or)i(R)m(GB)h(v)-5 b(alues.)38 b(See)23 b Fk(SETPENCOLOR)d
Fs(for)j(details.)150 2816 y(See)31 b([SETPENCOLOR],)d(page)k(44,)f(.)
150 3051 y Fr(6.6)68 b(P)l(en)45 b(Queries)150 3236 y
Fh(p)s(endo)m(wnp)390 3383 y Fk(PENDOWNP)390 3492 y(PENDOWN?)150
3660 y Fs(outputs)30 b Fk(TRUE)f Fs(if)h(the)h(p)s(en)e(is)i(do)m(wn,)f
Fk(FALSE)f Fs(if)h(it's)h(up.)150 3853 y Fh(p)s(enmo)s(de)390
4000 y Fk(PENMODE)150 4168 y Fs(outputs)f(one)h(of)f(the)h(w)m(ords)e
Fk(PAINT)p Fs(,)h Fk(ERASE)p Fs(,)f(or)h Fk(REVERSE)f
Fs(according)i(to)g(the)g(curren)m(t)f(p)s(en)f(mo)s(de.)150
4336 y(See)i([ERASE],)f(page)h(57,)h(,)e([REVERSE],)g(page)h(10,)h(.)
150 4529 y Fh(p)s(encolor)390 4676 y Fk(PENCOLOR)390
4785 y(PC)150 4953 y Fs(outputs)c(a)h(color)h(n)m(um)m(b)s(er,)e(a)h
(nonnegativ)m(e)i(in)m(teger)f(that)f(is)g(asso)s(ciated)h(with)e(a)h
(particular)h(color,)g(or)150 5063 y(a)d(list)g(of)f(R)m(GB)i(v)-5
b(alues)27 b(if)f(suc)m(h)g(a)h(list)g(w)m(as)g(used)e(as)i(the)f(most)
h(recen)m(t)h(input)d(to)i Fk(SETPENCOLOR)p Fs(.)36 b(There)150
5172 y(are)31 b(initial)g(assignmen)m(ts)g(for)g(the)f(\014rst)g(16)h
(colors:)438 5340 y Fk(0)95 b(black)380 b(1)96 b(blue)428
b(2)95 b(green)381 b(3)95 b(cyan)p eop end
%%Page: 46 59
TeXDict begin 46 58 bop 150 -116 a Fs(46)2551 b(BERKELEY)30
b(LOGO)g(6.1)438 299 y Fk(4)95 b(red)476 b(5)96 b(magenta)284
b(6)95 b(yellow)333 b(7)47 b(white)438 408 y(8)95 b(brown)380
b(9)96 b(tan)428 b(10)95 b(forest)285 b(11)95 b(aqua)390
518 y(12)g(salmon)285 b(13)95 b(purple)284 b(14)95 b(orange)285
b(15)95 b(grey)150 686 y Fs(but)30 b(other)g(colors)i(can)e(b)s(e)g
(assigned)h(to)g(n)m(um)m(b)s(ers)e(b)m(y)h(the)g Fk(PALETTE)f
Fs(command.)150 872 y Fh(palette)390 1019 y Fk(PALETTE)46
b(colornumber)150 1186 y Fs(outputs)28 b(a)h(list)g(of)g(three)g
(nonnegativ)m(e)h(n)m(um)m(b)s(ers)d(less)i(than)f(100)i(sp)s(ecifying)
f(the)g(p)s(ercen)m(t)f(saturation)150 1296 y(of)j(red,)f(green,)h(and)
e(blue)h(in)g(the)h(color)g(asso)s(ciated)h(with)e(the)h(giv)m(en)g(n)m
(um)m(b)s(er.)150 1482 y Fh(p)s(ensize)390 1629 y Fk(PENSIZE)150
1797 y Fs(outputs)25 b(a)i(list)f(of)h(t)m(w)m(o)g(p)s(ositiv)m(e)g(in)
m(tegers,)h(sp)s(ecifying)e(the)g(horizon)m(tal)i(and)d(v)m(ertical)j
(thic)m(kness)f(of)f(the)150 1906 y(turtle)35 b(p)s(en.)51
b(\(In)34 b(some)h(implemen)m(tations,)i(including)d(wxWidgets,)i(the)f
(t)m(w)m(o)h(n)m(um)m(b)s(ers)d(are)h(alw)m(a)m(ys)150
2016 y(equal.\))390 2183 y Fk(PENPATTERN)150 2351 y Fs(outputs)c
(system-sp)s(eci\014c)h(p)s(en)e(information.)150 2537
y Fh(p)s(en)390 2684 y Fk(PEN)47 b(\(library)e(procedure\))150
2852 y Fs(outputs)27 b(a)h(list)h(con)m(taining)g(the)f(p)s(en's)e(p)s
(osition,)j(mo)s(de,)f(thic)m(kness,)h(and)e(hardw)m(are-sp)s(eci\014c)
g(c)m(harac-)150 2961 y(teristics,)32 b(for)e(use)g(b)m(y)g
Fk(SETPEN)p Fs(.)150 3129 y(See)h([SETPEN],)f(page)h(45,)g(.)150
3315 y Fh(bac)m(kground)390 3462 y Fk(BACKGROUND)390
3572 y(BG)150 3739 y Fs(outputs)24 b(the)h(graphics)f(bac)m(kground)h
(color,)i(either)e(as)g(a)g(slot)g(n)m(um)m(b)s(er)e(or)i(as)g(an)f(R)m
(GB)i(list,)g(whic)m(hev)m(er)150 3849 y(w)m(a)m(y)31
b(it)g(w)m(as)g(set.)41 b(\(See)31 b Fk(PENCOLOR)p Fs(.\))150
4076 y Fr(6.7)68 b(Sa)l(ving)46 b(and)e(Loading)i(Pictures)150
4254 y Fh(sa)m(v)m(epict)390 4401 y Fk(SAVEPICT)g(filename)150
4569 y Fs(command.)38 b(W)-8 b(rites)24 b(a)f(\014le)g(with)g(the)g(sp)
s(eci\014ed)f(name)h(con)m(taining)i(the)e(state)h(of)f(the)g(graphics)
g(windo)m(w,)150 4678 y(including)f(an)m(y)h(nonstandard)e(color)j
(palette)g(settings,)i(in)c(Logo's)i(in)m(ternal)f(format.)38
b(This)22 b(picture)h(can)150 4788 y(b)s(e)33 b(restored)h(to)g(the)g
(screen)g(using)f Fk(LOADPICT)p Fs(.)49 b(The)33 b(format)h(is)g(not)g
(p)s(ortable)f(b)s(et)m(w)m(een)i(platforms,)150 4897
y(nor)j(is)h(it)g(readable)h(b)m(y)e(other)i(programs.)65
b([EPSPICT],)38 b(page)h(47,)j(to)e(exp)s(ort)e(Logo)i(graphics)f(for)
150 5007 y(other)31 b(programs.)150 5193 y Fh(loadpict)390
5340 y Fk(LOADPICT)46 b(filename)p eop end
%%Page: 47 60
TeXDict begin 47 59 bop 150 -116 a Fs(Chapter)30 b(6:)41
b(Graphics)2689 b(47)150 299 y(command.)39 b(Reads)25
b(the)g(sp)s(eci\014ed)f(\014le,)j(whic)m(h)d(m)m(ust)h(ha)m(v)m(e)i(b)
s(een)d(written)h(b)m(y)g(a)g Fk(SAVEPICT)e Fs(command,)150
408 y(and)29 b(restores)h(the)g(graphics)g(windo)m(w)f(and)g(color)i
(palette)g(settings)f(to)h(the)f(v)-5 b(alues)30 b(stored)f(in)h(the)g
(\014le.)150 518 y(An)m(y)g(dra)m(wing)h(previously)f(on)g(the)h
(screen)f(is)g(cleared.)150 686 y(See)h([SA)-10 b(VEPICT],)29
b(page)i(46,)h(.)150 871 y Fh(epspict)390 1018 y Fk(EPSPICT)46
b(filename)150 1185 y Fs(command.)66 b(W)-8 b(rites)40
b(a)f(\014le)g(with)g(the)g(sp)s(eci\014ed)f(name,)j(con)m(taining)f
(an)f(Encapsulated)g(P)m(ostscript)150 1295 y(\(EPS\))c(represen)m
(tation)h(of)f(the)g(state)h(of)f(the)g(graphics)g(windo)m(w.)53
b(This)34 b(\014le)h(can)h(b)s(e)e(imp)s(orted)g(in)m(to)150
1404 y(other)g(programs)f(that)h(understand)d(EPS)i(format.)50
b(Restrictions:)e(the)33 b(dra)m(wing)h(cannot)g(use)f
Fk(FILL)p Fs(,)150 1514 y Fk(PENERASE)p Fs(,)27 b(or)j
Fk(PENREVERSE)p Fs(;)d(an)m(y)i(suc)m(h)g(instructions)g(will)h(b)s(e)f
(ignored)g(in)g(the)g(translation)i(to)f(P)m(ost-)150
1624 y(script)g(form.)150 1791 y(See)h([FILL],)f(page)i(41,)f(,)g(See)f
([PENERASE],)h(page)g(44,)g(,)g(See)f([PENREVERSE],)g(page)i(44,)f(.)
150 2018 y Fr(6.8)68 b(Mouse)45 b(Queries)150 2194 y
Fh(mousep)s(os)390 2341 y Fk(MOUSEPOS)150 2509 y Fs(outputs)38
b(the)h(co)s(ordinates)g(of)f(the)h(mouse,)i(pro)m(vided)d(that)h(it's)
g(within)f(the)h(graphics)f(windo)m(w,)i(in)150 2618
y(turtle)i(co)s(ordinates.)76 b(If)41 b(the)h(mouse)g(is)g(outside)g
(the)g(graphics)f(windo)m(w,)k(then)c(the)h(last)h(p)s(osition)150
2728 y(within)26 b(the)g(windo)m(w)g(is)g(returned.)39
b(Exception:)g(If)26 b(a)h(mouse)f(button)g(is)g(pressed)g(within)f
(the)i(graphics)150 2838 y(windo)m(w)34 b(and)g(held)g(while)g(the)h
(mouse)f(is)h(dragged)g(outside)f(the)h(windo)m(w,)g(the)g(mouse's)f(p)
s(osition)h(is)150 2947 y(returned)29 b(as)i(if)f(the)h(windo)m(w)f(w)m
(ere)g(big)h(enough)f(to)h(include)f(it.)150 3132 y Fh(clic)m(kp)s(os)
390 3279 y Fk(CLICKPOS)150 3447 y Fs(outputs)38 b(the)g(co)s(ordinates)
h(that)f(the)h(mouse)f(w)m(as)g(at)h(when)e(a)i(mouse)f(button)g(w)m
(as)g(most)h(recen)m(tly)150 3556 y(pushed,)28 b(pro)m(vided)h(that)g
(that)h(p)s(osition)f(w)m(as)h(within)e(the)i(graphics)f(windo)m(w,)g
(in)f(turtle)i(co)s(ordinates.)150 3666 y(\(wxWidgets)i(only\))150
3851 y Fh(buttonp)390 3998 y Fk(BUTTONP)390 4107 y(BUTTON?)150
4275 y Fs(outputs)e Fk(TRUE)f Fs(if)h(a)g(mouse)g(button)g(is)g(do)m
(wn)g(and)f(the)i(mouse)f(is)g(o)m(v)m(er)h(the)g(graphics)f(windo)m
(w.)40 b(Once)150 4384 y(the)29 b(button)g(is)f(do)m(wn,)h
Fk(BUTTONP)e Fs(remains)i(true)g(un)m(til)g(the)g(button)f(is)h
(released,)i(ev)m(en)e(if)g(the)g(mouse)g(is)150 4494
y(dragged)i(out)f(of)h(the)f(graphics)h(windo)m(w.)150
4679 y Fh(button)390 4826 y Fk(BUTTON)150 4994 y Fs(outputs)j(0)g(if)h
(no)f(mouse)g(button)g(has)g(b)s(een)f(pushed)g(inside)h(the)g(Logo)i
(windo)m(w)d(since)i(the)g(last)g(call)150 5103 y(to)e
Fk(BUTTON)p Fs(.)43 b(Otherwise,)32 b(it)g(outputs)g(an)f(in)m(teger)j
(b)s(et)m(w)m(een)e(1)g(and)g(3)g(indicating)h(whic)m(h)e(button)h(w)m
(as)150 5213 y(most)39 b(recen)m(tly)h(pressed.)64 b(Ordinarily)37
b(1)i(means)g(left,)i(2)e(means)f(righ)m(t,)k(and)c(3)g(means)h(cen)m
(ter,)j(but)150 5322 y(op)s(erating)31 b(systems)f(ma)m(y)h
(recon\014gure)f(these.)p eop end
%%Page: 48 61
TeXDict begin 48 60 bop eop end
%%Page: 49 62
TeXDict begin 49 61 bop 3659 -116 a Fs(49)150 299 y Fp(7)80
b(W)-13 b(orkspace)52 b(Managemen)l(t)150 712 y Fr(7.1)68
b(Pro)t(cedure)45 b(De\014nition)150 924 y Fh(to)390
1071 y Fk(TO)i(procname)f(:input1)g(:input2)f(...)95
b(\(special)46 b(form\))150 1239 y Fs(command.)k(Prepares)34
b(Logo)g(to)h(accept)g(a)f(pro)s(cedure)e(de\014nition.)51
b(The)33 b(pro)s(cedure)f(will)i(b)s(e)f(named)150 1348
y Fl(pro)s(cname)41 b Fs(and)36 b(there)h(m)m(ust)g(not)g(already)g(b)s
(e)f(a)h(pro)s(cedure)f(b)m(y)h(that)g(name.)60 b(The)36
b(inputs)g(will)h(b)s(e)150 1458 y(called)30 b Fl(input1)36
b Fs(etc.)41 b(An)m(y)29 b(n)m(um)m(b)s(er)f(of)h(inputs)f(are)h(allo)m
(w)m(ed,)j(including)c(none.)40 b(Names)30 b(of)f(pro)s(cedures)150
1567 y(and)h(inputs)f(are)i(case-insensitiv)m(e.)150
1735 y(Unlik)m(e)36 b(ev)m(ery)g(other)f(Logo)i(pro)s(cedure,)e(TO)f
(tak)m(es)j(as)e(its)h(inputs)e(the)h(actual)i(w)m(ords)d(t)m(yp)s(ed)h
(in)g(the)150 1845 y(instruction)28 b(line,)h(as)f(if)g(they)g(w)m(ere)
g(all)h(quoted,)g(rather)f(than)f(the)h(results)g(of)g(ev)-5
b(aluating)29 b(expressions)150 1954 y(to)i(pro)m(vide)g(the)f(inputs.)
40 b(\(That's)31 b(what)f Fl(sp)s(ecial)h(form)f Fs(means.\))150
2122 y(This)d(v)m(ersion)h(of)g(Logo)h(allo)m(ws)g(v)-5
b(ariable)29 b(n)m(um)m(b)s(ers)d(of)i(inputs)f(to)h(a)g(pro)s(cedure.)
39 b(After)28 b(the)g(pro)s(cedure)150 2232 y(name)i(come)i(four)d
(kinds)h(of)g(things,)h Fg(in)h(this)i(or)-5 b(der)10
b Fs(:)581 2399 y Fk(1.)143 b(0)47 b(or)g(more)g(REQUIRED)e(inputs)190
b(:FOO)46 b(:FROBOZZ)581 2509 y(2.)143 b(0)47 b(or)g(more)g(OPTIONAL)e
(inputs)190 b([:BAZ)46 b(87])h([:THINGO)e(5+9])581 2619
y(3.)143 b(0)47 b(or)g(1)h(REST)e(input)572 b([:GARPLY])581
2728 y(4.)143 b(0)47 b(or)g(1)h(DEFAULT)d(number)381
b(5)150 2896 y Fs(Ev)m(ery)27 b(pro)s(cedure)f(has)h(a)g
Fl(minim)m(um)p Fs(,)g Fl(default)p Fs(,)i(and)d Fl(maxim)m(um)h
Fs(n)m(um)m(b)s(er)f(of)h(inputs.)38 b(\(The)27 b(latter)i(can)150
3005 y(b)s(e)h(in\014nite.\))150 3173 y(The)j Fl(minim)m(um)h
Fs(n)m(um)m(b)s(er)e(of)i(inputs)f(is)h(the)g(n)m(um)m(b)s(er)f(of)h
(required)f(inputs,)h(whic)m(h)g(m)m(ust)g(come)g(\014rst.)150
3283 y(A)c(required)g(input)f(is)i(indicated)g(b)m(y)f(the)390
3450 y Fk(:inputname)150 3618 y Fs(notation.)150 3786
y(After)21 b(all)h(the)g(required)e(inputs)g(can)h(b)s(e)g(zero)h(or)f
(more)g(optional)h(inputs,)g(eac)m(h)h(of)e(whic)m(h)g(is)g(represen)m
(ted)150 3895 y(b)m(y)30 b(the)h(follo)m(wing)h(notation:)390
4063 y Fk([:inputname)45 b(default.value.expressio)o(n])150
4231 y Fs(When)30 b(the)h(pro)s(cedure)f(is)g(in)m(v)m(ok)m(ed,)j(if)d
(actual)i(inputs)e(are)g(not)h(supplied)f(for)g(these)h(optional)h
(inputs,)150 4340 y(the)27 b Fl(default)g(v)-5 b(alue)27
b(expression)p Fs(s)f(are)h(ev)-5 b(aluated)28 b(to)f(set)g(v)-5
b(alues)27 b(for)g(the)f(corresp)s(onding)g(input)g(names.)150
4450 y(The)32 b(inputs)g(are)h(pro)s(cessed)g(from)f(left)h(to)h(righ)m
(t,)g(so)f(a)g(default)g(v)-5 b(alue)34 b(expression)e(can)h(b)s(e)g
(based)f(on)150 4560 y(earlier)f(inputs.)40 b(Example:)390
4727 y Fk(to)47 b(proc)g(:inlist)f([:startvalue)e(first)i(:inlist])150
4895 y Fs(If)30 b(the)g(pro)s(cedure)g(is)g(in)m(v)m(ok)m(ed)i(b)m(y)e
(sa)m(ying)390 5063 y Fk(proc)47 b([a)g(b)g(c])150 5230
y Fs(then)39 b(the)h(v)-5 b(ariable)40 b Fk(inlist)e
Fs(will)i(ha)m(v)m(e)g(the)g(v)-5 b(alue)40 b Fk([A)47
b(B)g(C])39 b Fs(and)g(the)h(v)-5 b(ariable)40 b Fk(startvalue)d
Fs(will)150 5340 y(ha)m(v)m(e)32 b(the)e(v)-5 b(alue)31
b Fk(A)p Fs(.)40 b(If)30 b(the)h(pro)s(cedure)e(is)i(in)m(v)m(ok)m(ed)g
(b)m(y)g(sa)m(ying)p eop end
%%Page: 50 63
TeXDict begin 50 62 bop 150 -116 a Fs(50)2551 b(BERKELEY)30
b(LOGO)g(6.1)390 299 y Fk(\(proc)46 b([a)i(b)f(c])g("x\))150
467 y Fs(then)30 b Fk(inlist)f Fs(will)h(ha)m(v)m(e)i(the)f(v)-5
b(alue)30 b Fk([A)48 b(B)f(C])30 b Fs(and)g Fk(startvalue)d
Fs(will)k(ha)m(v)m(e)h(the)e(v)-5 b(alue)31 b Fk(X)p
Fs(.)150 634 y(After)i(all)h(the)f(required)f(and)h(optional)h(input)e
(can)h(come)h(a)f(single)h Fl(rest)h Fs(input,)e(represen)m(ted)g(b)m
(y)g(the)150 744 y(follo)m(wing)f(notation:)390 912 y
Fk([:inputname])150 1079 y Fs(This)d(is)h(a)g(rest)g(input)e(rather)i
(than)g(an)f(optional)i(input)e(b)s(ecause)h(there)f(is)h(no)g(default)
g(v)-5 b(alue)30 b(expres-)150 1189 y(sion.)39 b(There)26
b(can)g(b)s(e)g(at)h(most)f(one)h(rest)f(input.)39 b(When)25
b(the)i(pro)s(cedure)e(is)h(in)m(v)m(ok)m(ed,)j(the)d(v)-5
b(alue)27 b(of)f(this)150 1298 y Fl(inputname)33 b Fs(will)d(b)s(e)e(a)
i(list)f(con)m(taining)i(all)f(of)f(the)g(actual)i(inputs)d(pro)m
(vided)g(that)i(w)m(ere)g(not)f(used)f(for)150 1408 y(required)i(or)g
(optional)h(inputs.)40 b(Example:)390 1576 y Fk(to)47
b(proc)g(:in1)f([:in2)h("foo])f([:in3)h("baz])f([:in4])150
1743 y Fs(If)30 b(this)g(pro)s(cedure)f(is)i(in)m(v)m(ok)m(ed)h(b)m(y)e
(sa)m(ying)390 1911 y Fk(proc)47 b("x)150 2079 y Fs(then)34
b Fk(in1)f Fs(has)h(the)g(v)-5 b(alue)34 b Fk(X)p Fs(,)h
Fk(in2)e Fs(has)h(the)g(v)-5 b(alue)35 b Fk(FOO)p Fs(,)f
Fk(in3)f Fs(has)h(the)h(v)-5 b(alue)34 b Fk(BAZ)p Fs(,)g(and)g
Fk(in4)f Fs(has)h(the)150 2188 y(v)-5 b(alue)31 b Fk([])f
Fs(\(the)h(empt)m(y)f(list\).)42 b(If)30 b(it's)h(in)m(v)m(ok)m(ed)h(b)
m(y)e(sa)m(ying)390 2356 y Fk(\(proc)46 b("a)i("b)f("c)g("d)g("e\))150
2524 y Fs(then)31 b Fk(in1)g Fs(has)h(the)g(v)-5 b(alue)32
b Fk(A)p Fs(,)g Fk(in2)f Fs(has)g(the)h(v)-5 b(alue)32
b Fk(B)p Fs(,)g Fk(in3)f Fs(has)h(the)g(v)-5 b(alue)32
b Fk(C)p Fs(,)g(and)f Fk(in4)g Fs(has)h(the)f(v)-5 b(alue)150
2633 y Fk([D)47 b(E])p Fs(.)150 2801 y(The)24 b Fg(maximum)32
b Fs(n)m(um)m(b)s(er)23 b(of)i(inputs)e(for)h(a)h(pro)s(cedure)e(is)h
(in\014nite)g(if)h(a)f(rest)h(input)e(is)i(giv)m(en;)i(otherwise,)150
2911 y(it)k(is)f(the)h(n)m(um)m(b)s(er)e(of)h(required)g(inputs)f(plus)
h(the)g(n)m(um)m(b)s(er)f(of)i(optional)g(inputs.)150
3078 y(The)k Fg(default)45 b Fs(n)m(um)m(b)s(er)34 b(of)i(inputs)e(for)
i(a)g(pro)s(cedure,)f(whic)m(h)h(is)f(the)h(n)m(um)m(b)s(er)e(of)i
(inputs)e(that)j(it)f(will)150 3188 y(accept)f(if)e(its)h(in)m(v)m(o)s
(cation)h(is)f(not)g(enclosed)g(in)f(paren)m(theses,)h(is)g(ordinarily)
f(equal)h(to)g(the)g(minim)m(um)150 3298 y(n)m(um)m(b)s(er.)j(If)24
b(y)m(ou)h(w)m(an)m(t)g(a)g(di\013eren)m(t)g(default)f(n)m(um)m(b)s(er)
g(y)m(ou)g(can)h(indicate)g(that)g(b)m(y)g(putting)f(the)g(desired)150
3407 y(default)31 b(n)m(um)m(b)s(er)e(as)h(the)h(last)g(thing)f(on)h
(the)f Fk(TO)g Fs(line.)41 b(example:)390 3575 y Fk(to)47
b(proc)g(:in1)f([:in2)h("foo])f([:in3])g(3)150 3743 y
Fs(This)c(pro)s(cedure)f(has)h(a)h(minim)m(um)e(of)i(one)f(input,)j(a)e
(default)g(of)f(three)h(inputs,)h(and)e(an)g(in\014nite)150
3852 y(maxim)m(um.)150 4020 y(Logo)f(resp)s(onds)c(to)j(the)g
Fk(TO)f Fs(command)g(b)m(y)g(en)m(tering)i(pro)s(cedure)d(de\014nition)
h(mo)s(de.)68 b(The)39 b(prompt)150 4130 y(c)m(haracter)46
b(c)m(hanges)f(from)f Fk(?)g Fs(to)g Fk(>)g Fs(and)g(whatev)m(er)h
(instructions)f(y)m(ou)g(t)m(yp)s(e)h(b)s(ecome)f(part)g(of)h(the)150
4239 y(de\014nition)30 b(un)m(til)h(y)m(ou)f(t)m(yp)s(e)h(a)g(line)f
(con)m(taining)i(only)f(the)f(w)m(ord)g Fk(END)p Fs(.)150
4477 y Fh(de\014ne)390 4624 y Fk(DEFINE)46 b(procname)g(text)150
4792 y Fs(command.)56 b(De\014nes)35 b(a)h(pro)s(cedure)e(with)i(name)f
Fl(pro)s(cname)40 b Fs(and)35 b(text)h Fl(text)p Fs(.)57
b(If)35 b(there)h(is)g(already)g(a)150 4902 y(pro)s(cedure)22
b(with)h(the)h(same)g(name,)h(the)e(new)g(de\014nition)g(replaces)i
(the)e(old)h(one.)38 b(The)23 b Fl(text)k Fs(input)22
b(m)m(ust)150 5011 y(b)s(e)35 b(a)h(list)g(whose)f(mem)m(b)s(ers)g(are)
h(lists.)56 b(The)35 b(\014rst)g(mem)m(b)s(er)g(is)g(a)h(list)g(of)g
(inputs;)h(it)f(lo)s(oks)g(lik)m(e)h(a)f Fk(TO)150 5121
y Fs(line)c(but)f(without)h(the)f(w)m(ord)h Fk(TO)p Fs(,)f(without)h
(the)g(pro)s(cedure)e(name,)i(and)f(without)h(the)g(colons)g(b)s(efore)
150 5230 y(input)g(names.)49 b(In)32 b(other)h(w)m(ords,)h(the)f(mem)m
(b)s(ers)f(of)h(this)g(\014rst)f(sublist)h(are)g(w)m(ords)g(for)g(the)g
(names)g(of)150 5340 y(required)27 b(inputs)f(and)h(lists)h(for)f(the)g
(names)h(of)f(optional)i(or)e(rest)h(inputs.)39 b(The)26
b(remaining)i(sublists)f(of)p eop end
%%Page: 51 64
TeXDict begin 51 63 bop 150 -116 a Fs(Chapter)30 b(7:)41
b(W)-8 b(orkspace)32 b(Managemen)m(t)2078 b(51)150 299
y(the)27 b Fl(text)i Fs(input)d(mak)m(e)h(up)f(the)g(b)s(o)s(dy)f(of)i
(the)g(pro)s(cedure,)f(with)g(one)h(sublist)f(for)g(eac)m(h)i
(instruction)f(line)150 408 y(of)32 b(the)g(b)s(o)s(dy)-8
b(.)44 b(\(There)31 b(is)h(no)g Fk(END)f Fs(line)h(in)f(the)h(text)h
(input.\))45 b(It)32 b(is)f(an)h(error)f(to)i(rede\014ne)e(a)h
(primitiv)m(e)150 518 y(pro)s(cedure)d(unless)h(the)g(v)-5
b(ariable)32 b Fk(REDEFP)c Fs(has)i(the)h(v)-5 b(alue)31
b Fk(TRUE)p Fs(.)150 686 y(See)g([REDEFP],)g(page)g(91,)h(.)150
882 y Fh(text)390 1029 y Fk(TEXT)47 b(procname)150 1197
y Fs(outputs)29 b(the)h(text)h(of)f(the)g(pro)s(cedure)e(named)i
Fl(pro)s(cname)k Fs(in)29 b(the)h(form)g(exp)s(ected)g(b)m(y)f
Fk(DEFINE)p Fs(:)39 b(a)30 b(list)150 1306 y(of)c(lists,)h(the)e
(\014rst)g(of)g(whic)m(h)g(describ)s(es)g(the)h(inputs)e(to)i(the)f
(pro)s(cedure)g(and)f(the)i(rest)f(of)h(whic)m(h)f(are)h(the)150
1416 y(lines)h(of)g(its)g(b)s(o)s(dy)-8 b(.)38 b(The)26
b(text)i(do)s(es)e(not)h(re\015ect)g(formatting)h(information)f(used)f
(when)f(the)i(pro)s(cedure)150 1526 y(w)m(as)k(de\014ned,)e(suc)m(h)h
(as)h(con)m(tin)m(uation)h(lines)f(and)e(extra)i(spaces.)150
1722 y Fh(fulltext)390 1869 y Fk(FULLTEXT)46 b(procname)150
2037 y Fs(outputs)41 b(a)g(represen)m(tation)i(of)e(the)g(pro)s(cedure)
f Fl(pro)s(cname)46 b Fs(in)41 b(whic)m(h)g(formatting)h(information)g
(is)150 2146 y(preserv)m(ed.)55 b(If)34 b(the)i(pro)s(cedure)e(w)m(as)h
(de\014ned)f(with)h Fk(TO)p Fs(,)h Fk(EDIT)p Fs(,)f(or)g
Fk(LOAD)p Fs(,)h(then)f(the)g(output)g(is)g(a)g(list)150
2256 y(of)42 b(w)m(ords.)74 b(Eac)m(h)42 b(w)m(ord)f(represen)m(ts)h
(one)g(en)m(tire)g(line)g(of)g(the)g(de\014nition)f(in)h(the)g(form)f
(output)g(b)m(y)150 2365 y Fk(READWORD)p Fs(,)35 b(including)g(extra)h
(spaces)g(and)f(con)m(tin)m(uation)j(lines.)56 b(The)35
b(last)i(mem)m(b)s(er)e(of)h(the)f(output)150 2475 y(represen)m(ts)29
b(the)g Fk(END)f Fs(line.)40 b(If)29 b(the)g(pro)s(cedure)f(w)m(as)h
(de\014ned)f(with)g Fk(DEFINE)p Fs(,)g(then)h(the)g(output)f(is)h(a)g
(list)150 2584 y(of)f(lists.)41 b(If)27 b(these)i(lists)g(are)f(prin)m
(ted,)h(one)f(p)s(er)f(line,)i(the)g(result)f(will)g(lo)s(ok)h(lik)m(e)
g(a)g(de\014nition)f(using)f Fk(TO)p Fs(.)150 2694 y(Note:)42
b(the)31 b(output)f(from)f Fk(FULLTEXT)g Fs(is)h(not)h(suitable)g(for)f
(use)g(as)g(input)g(to)h Fk(DEFINE)p Fs(!)150 2862 y(See)g([TO],)f
(page)h(49,)h(,)e([EDIT],)h(page)g(61,)h(,)e([LO)m(AD],)i(page)f(63,)g
(,)g([DEFINE],)h(page)f(50,)g(.)150 3058 y Fh(cop)m(ydef)390
3205 y Fk(COPYDEF)46 b(newname)g(oldname)150 3373 y Fs(command.)e(Mak)m
(es)32 b Fl(newname)37 b Fs(a)31 b(pro)s(cedure)g(iden)m(tical)i(to)f
Fl(oldname)p Fs(.)44 b(The)31 b(latter)i(ma)m(y)f(b)s(e)f(a)g(primi-)
150 3482 y(tiv)m(e.)40 b(If)22 b Fl(newname)28 b Fs(w)m(as)23
b(already)g(de\014ned,)h(its)f(previous)f(de\014nition)h(is)g(lost.)39
b(If)22 b Fl(newname)28 b Fs(w)m(as)23 b(already)150
3592 y(a)k(primitiv)m(e,)h(the)f(rede\014nition)f(is)g(not)h(p)s
(ermitted)f(unless)g(the)g(v)-5 b(ariable)27 b Fk(REDEFP)e
Fs(has)h(the)h(v)-5 b(alue)27 b Fk(TRUE)p Fs(.)150 3760
y(Note:)43 b(dialects)33 b(of)e(Logo)h(di\013er)f(as)g(to)h(the)f
(order)g(of)g(inputs)f(to)h Fk(COPYDEF)p Fs(.)41 b(This)30
b(dialect)j(uses)d Fk("MAKE)150 3869 y Fs(order,)p Fk(")g
Fs(not)g Fk("NAME)f Fs(order.)p Fk(")150 4037 y Fs(See)i([REDEFP],)g
(page)g(91,)h(,)e([SA)-10 b(VE],)31 b(page)g(62,)g(,)g([PO],)g(page)g
(56,)g(,)g([POT],)f(page)h(57,)h(.)150 4275 y Fr(7.2)68
b(V)-11 b(ariable)46 b(De\014nition)150 4463 y Fh(mak)m(e)390
4610 y Fk(MAKE)h(varname)e(value)150 4778 y Fs(command.)40
b(Assigns)30 b(the)g(v)-5 b(alue)31 b Fl(v)-5 b(alue)35
b Fs(to)c(the)f(v)-5 b(ariable)30 b(named)g Fl(v)-5 b(arname)p
Fs(,)30 b(whic)m(h)g(m)m(ust)g(b)s(e)f(a)h(w)m(ord.)150
4887 y(V)-8 b(ariable)37 b(names)e(are)h(case-insensitiv)m(e.)59
b(If)35 b(a)h(v)-5 b(ariable)36 b(with)f(the)h(same)g(name)f(already)h
(exists,)i(the)150 4997 y(v)-5 b(alue)31 b(of)f(that)h(v)-5
b(ariable)32 b(is)e(c)m(hanged.)41 b(If)30 b(not,)h(a)g(new)f(global)h
(v)-5 b(ariable)32 b(is)e(created.)150 5193 y Fh(name)390
5340 y Fk(NAME)47 b(value)f(varname)g(\(library)f(procedure\))p
eop end
%%Page: 52 65
TeXDict begin 52 64 bop 150 -116 a Fs(52)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(command.)40 b(Same)31 b(as)g Fk(MAKE)e
Fs(but)g(with)h(the)h(inputs)e(in)h(rev)m(erse)h(order.)150
584 y Fh(lo)s(cal)390 731 y Fk(LOCAL)46 b(varname)390
840 y(LOCAL)g(varnamelist)390 950 y(\(LOCAL)g(varname1)g(varname2)f
(...\))150 1117 y Fs(command.)51 b(Accepts)35 b(as)f(inputs)e(one)i(or)
g(more)g(w)m(ords,)h(or)e(a)i(list)f(of)g(w)m(ords.)51
b(A)33 b(v)-5 b(ariable)35 b(is)f(created)150 1227 y(for)26
b(eac)m(h)h(of)f(these)h(w)m(ords,)g(with)f(that)g(w)m(ord)g(as)g(its)h
(name.)39 b(The)26 b(v)-5 b(ariables)27 b(are)f(lo)s(cal)i(to)f(the)f
(curren)m(tly)150 1337 y(running)34 b(pro)s(cedure.)56
b(Logo)37 b(v)-5 b(ariables)37 b(follo)m(w)g(dynamic)e(scop)s(e)h
(rules;)j(a)d(v)-5 b(ariable)37 b(that)f(is)g(lo)s(cal)h(to)150
1446 y(a)k(pro)s(cedure)f(is)h(a)m(v)-5 b(ailable)44
b(to)e(an)m(y)f(subpro)s(cedure)e(in)m(v)m(ok)m(ed)j(b)m(y)f(that)h
(pro)s(cedure.)72 b(The)40 b(v)-5 b(ariables)150 1556
y(created)41 b(b)m(y)e Fk(LOCAL)f Fs(ha)m(v)m(e)j(no)e(initial)i(v)-5
b(alue;)45 b(they)39 b(m)m(ust)h(b)s(e)e(assigned)i(a)g(v)-5
b(alue)40 b(\(e.g.,)k(with)39 b Fk(MAKE)p Fs(\))150 1665
y(b)s(efore)30 b(the)h(pro)s(cedure)e(attempts)i(to)g(read)f(their)h(v)
-5 b(alue.)150 1833 y(See)31 b([MAKE],)g(page)g(51,)g(.)150
2118 y Fh(lo)s(calmak)m(e)390 2265 y Fk(LOCALMAKE)45
b(varname)h(value)g(\(library)g(procedure\))150 2433
y Fs(command.)d(Mak)m(es)33 b(the)f(named)e(v)-5 b(ariable)33
b(lo)s(cal,)g(lik)m(e)f Fk(LOCAL)p Fs(,)f(and)f(assigns)i(it)g(the)f
(giv)m(en)h(v)-5 b(alue,)33 b(lik)m(e)150 2542 y Fk(MAKE)p
Fs(.)150 2710 y(See)e([LOCAL],)f(page)h(52,)g(,)g(See)g([MAKE],)g(page)
g(51,)g(.)150 2995 y Fh(thing)390 3142 y Fk(THING)46
b(varname)390 3251 y(:quoted.varname)150 3419 y Fs(outputs)32
b(the)h(v)-5 b(alue)33 b(of)f(the)h(v)-5 b(ariable)34
b(whose)e(name)g(is)h(the)g(input.)46 b(If)32 b(there)h(is)f(more)h
(than)f(one)h(suc)m(h)150 3528 y(v)-5 b(ariable,)44 b(the)c(innermost)g
(lo)s(cal)i(v)-5 b(ariable)41 b(of)f(that)h(name)f(is)g(c)m(hosen.)71
b(The)40 b(colon)h(notation)h(is)e(an)150 3638 y(abbreviation)31
b(not)g(for)f Fk(THING)f Fs(but)g(for)i(the)f(com)m(bination)390
3806 y Fk(thing)46 b(")150 3973 y Fs(so)31 b(that)g Fk(:FOO)e
Fs(means)h Fk(THING)46 b("FOO)o Fs(.)150 4258 y Fh(global)390
4405 y Fk(GLOBAL)g(varname)390 4515 y(GLOBAL)g(varnamelist)390
4624 y(\(GLOBAL)g(varname1)f(varname2)h(...\))150 4792
y Fs(command.)58 b(Accepts)38 b(as)e(inputs)f(one)i(or)f(more)h(w)m
(ords,)g(or)g(a)f(list)h(of)g(w)m(ords.)58 b(A)36 b(global)i(v)-5
b(ariable)37 b(is)150 4902 y(created)23 b(for)e(eac)m(h)i(of)f(these)g
(w)m(ords,)h(with)e(that)i(w)m(ord)e(as)h(its)g(name.)38
b(The)21 b(only)g(reason)h(this)g(is)g(necessary)150
5011 y(is)37 b(that)g(y)m(ou)g(migh)m(t)h(w)m(an)m(t)f(to)h(use)e(the)h
Fk(")p Fs(setter)p Fk(")h Fs(notation)g Fk(SETXYZ)d Fs(for)h(a)h(v)-5
b(ariable)38 b Fk(XYZ)e Fs(that)h(do)s(es)150 5121 y(not)29
b(already)h(ha)m(v)m(e)g(a)f(v)-5 b(alue;)30 b Fk(GLOBAL)46
b("XYZ)28 b Fs(mak)m(es)h(that)h(legal.)42 b(Note:)f(If)29
b(there)g(is)g(curren)m(tly)f(a)i(lo)s(cal)150 5230 y(v)-5
b(ariable)24 b(of)f(the)h(same)f(name,)i(this)e(command)g(do)s(es)g
(*not*)i(mak)m(e)f(Logo)g(use)f(the)g(global)i(v)-5 b(alue)24
b(instead)150 5340 y(of)31 b(the)f(lo)s(cal)i(one.)p
eop end
%%Page: 53 66
TeXDict begin 53 65 bop 150 -116 a Fs(Chapter)30 b(7:)41
b(W)-8 b(orkspace)32 b(Managemen)m(t)2078 b(53)150 299
y Fr(7.3)68 b(Prop)t(ert)l(y)45 b(Lists)150 458 y Fs(Note:)k(Names)35
b(of)f(prop)s(ert)m(y)g(lists)g(are)h(alw)m(a)m(ys)g(case-insensitiv)m
(e.)54 b(Names)35 b(of)f(individual)g(prop)s(erties)150
568 y(are)24 b(case-sensitiv)m(e)i(or)d(case-insensitiv)m(e)j(dep)s
(ending)c(on)i(the)f(v)-5 b(alue)24 b(of)g Fk(CASEIGNOREDP)p
Fs(,)d(whic)m(h)j(is)f Fk(TRUE)150 677 y Fs(b)m(y)30
b(default.)150 845 y(See)h([CASEIGNOREDP],)f(page)h(89,)h(.)150
1013 y(In)k(principle,)h(ev)m(ery)g(p)s(ossible)f(name)g(is)h(the)f
(name)g(of)h(a)g(prop)s(ert)m(y)e(list,)k(whic)m(h)d(is)g(initially)i
(empt)m(y)-8 b(.)150 1122 y(So)29 b(Logo)i(nev)m(er)f(giv)m(es)h(a)f
Fk(")p Fs(no)f(suc)m(h)g(prop)s(ert)m(y)g(list)p Fk(")h
Fs(error,)f(as)h(it)g(w)m(ould)f(for)g(unde\014ned)f(pro)s(cedure)g(or)
150 1232 y(v)-5 b(ariable)26 b(names.)39 b(But)25 b(the)h(primitiv)m(e)
g(pro)s(cedures)d(that)j(deal)g(with)f Fk(")p Fs(all)p
Fk(")g Fs(prop)s(ert)m(y)g(lists)h(\()p Fk(CONTENTS)p
Fs(,)150 1342 y Fk(PLISTS)p Fs(,)g(etc.\))40 b(list)27
b(only)f(nonempt)m(y)g(ones.)40 b(T)-8 b(o)27 b Fk(")p
Fs(erase)p Fk(")f Fs(a)g(prop)s(ert)m(y)g(list)h([ERASE],)f(page)h(57,)
h(means)150 1451 y(to)j(mak)m(e)g(it)g(empt)m(y)-8 b(,)32
b(remo)m(ving)f(all)g(prop)s(erties)f(from)g(it.)150
1647 y Fh(pprop)390 1794 y Fk(PPROP)46 b(plistname)g(propname)f(value)
150 1961 y Fs(command.)40 b(Adds)29 b(a)i(prop)s(ert)m(y)e(to)i(the)f
Fl(plistname)36 b Fs(prop)s(ert)m(y)29 b(list)i(with)f(name)g
Fl(propname)k Fs(and)29 b(v)-5 b(alue)150 2071 y Fl(v)g(alue)p
Fs(.)150 2266 y Fh(gprop)390 2413 y Fk(GPROP)46 b(plistname)g(propname)
150 2581 y Fs(outputs)35 b(the)g(v)-5 b(alue)35 b(of)g(the)h
Fl(propname)j Fs(prop)s(ert)m(y)34 b(in)h(the)g Fl(plistname)41
b Fs(prop)s(ert)m(y)34 b(list,)j(or)e(the)h(empt)m(y)150
2691 y(list)31 b(if)f(there)h(is)f(no)h(suc)m(h)f(prop)s(ert)m(y)-8
b(.)150 2886 y Fh(remprop)390 3033 y Fk(REMPROP)46 b(plistname)f
(propname)150 3201 y Fs(command.)38 b(Remo)m(v)m(es)25
b(the)e(prop)s(ert)m(y)f(named)h Fl(propname)k Fs(from)c(the)g(prop)s
(ert)m(y)f(list)i(named)e Fl(plistname)p Fs(.)150 3396
y Fh(plist)390 3543 y Fk(PLIST)46 b(plistname)150 3711
y Fs(outputs)41 b(a)h(list)h(whose)f(o)s(dd-n)m(um)m(b)s(ered)d(mem)m
(b)s(ers)i(are)i(the)f(names,)i(and)e(whose)f(ev)m(en-n)m(um)m(b)s
(ered)150 3820 y(mem)m(b)s(ers)25 b(are)h(the)g(v)-5
b(alues,)27 b(of)f(the)g(prop)s(erties)f(in)h(the)g(prop)s(ert)m(y)f
(list)h(named)g Fl(plistname)p Fs(.)39 b(The)25 b(output)150
3930 y(is)32 b(a)h(cop)m(y)g(of)g(the)g(actual)g(prop)s(ert)m(y)f
(list;)i(c)m(hanging)g(prop)s(erties)e(later)h(will)g(not)f(magically)j
(c)m(hange)f(a)150 4040 y(list)d(output)f(earlier)h(b)m(y)g
Fk(PLIST)p Fs(.)150 4277 y Fr(7.4)68 b(W)-11 b(orkspace)45
b(Predicates)150 4464 y Fh(pro)s(cedurep)390 4611 y Fk(PROCEDUREP)g
(name)390 4720 y(PROCEDURE?)g(name)150 4888 y Fs(outputs)30
b Fk(TRUE)f Fs(if)h(the)h(input)e(is)i(the)f(name)h(of)f(a)h(pro)s
(cedure.)150 5083 y Fh(primitiv)m(ep)390 5230 y Fk(PRIMITIVEP)45
b(name)390 5340 y(PRIMITIVE?)g(name)p eop end
%%Page: 54 67
TeXDict begin 54 66 bop 150 -116 a Fs(54)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(outputs)45 b Fk(TRUE)f Fs(if)h(the)h(input)e(is)
h(the)h(name)f(of)h(a)g(primitiv)m(e)g(pro)s(cedure)e(\(one)i(built)f
(in)m(to)h(Logo\).)150 408 y(Note)37 b(that)f(some)g(of)g(the)g(pro)s
(cedures)e(describ)s(ed)h(in)g(this)h(do)s(cumen)m(t)f(are)h(library)g
(pro)s(cedures,)g(not)150 518 y(primitiv)m(es.)150 704
y Fh(de\014nedp)390 851 y Fk(DEFINEDP)46 b(name)390 961
y(DEFINED?)g(name)150 1129 y Fs(outputs)e Fk(TRUE)g Fs(if)g(the)h
(input)f(is)h(the)g(name)f(of)h(a)g(user-de\014ned)f(pro)s(cedure,)j
(including)d(a)h(library)150 1238 y(pro)s(cedure.)150
1424 y Fh(namep)390 1571 y Fk(NAMEP)h(name)390 1681 y(NAME?)g(name)150
1849 y Fs(outputs)30 b Fk(TRUE)f Fs(if)h(the)h(input)e(is)i(the)f(name)
h(of)f(a)h(v)-5 b(ariable.)150 2035 y Fh(plistp)390 2182
y Fk(PLISTP)46 b(name)390 2292 y(PLIST?)g(name)150 2459
y Fs(outputs)27 b Fk(TRUE)f Fs(if)h(the)g(input)g(is)g(the)g(name)h(of)
f(a)h Fg(nonempty)37 b Fs(prop)s(ert)m(y)26 b(list.)41
b(\(In)26 b(principle)h(ev)m(ery)h(w)m(ord)150 2569 y(is)k(the)h(name)f
(of)h(a)f(prop)s(ert)m(y)g(list;)i(if)e(y)m(ou)h(ha)m(v)m(en't)g(put)f
(an)m(y)h(prop)s(erties)e(in)h(it,)i Fk(PLIST)d Fs(of)h(that)h(name)150
2678 y(outputs)d(an)g(empt)m(y)h(list,)g(rather)f(than)h(giving)g(an)f
(error)g(message.\))150 2906 y Fr(7.5)68 b(W)-11 b(orkspace)45
b(Queries)150 3066 y Fs(Note:)66 b(All)43 b(pro)s(cedures)f(whose)g
(input)f(is)i(indicated)g(as)g Fl(con)m(ten)m(tslist)k
Fs(will)42 b(accept)i(a)f(single)g(w)m(ord)150 3175 y(\(tak)m(en)38
b(as)e(a)h(pro)s(cedure)e(name\),)k(a)e(list)g(of)f(w)m(ords)g(\(tak)m
(en)i(as)f(names)f(of)g(pro)s(cedures\),)i(or)e(a)h(list)g(of)150
3285 y(three)31 b(lists)f(as)h(describ)s(ed)e(under)g(the)i
Fk(CONTENTS)d Fs(command)i(ab)s(o)m(v)m(e.)150 3471 y
Fh(con)m(ten)m(ts)390 3618 y Fk(CONTENTS)150 3786 y Fs(outputs)j(a)h
Fk(")p Fs(con)m(ten)m(ts)h(list,)p Fk(")f Fs(i.e.,)i(a)e(list)g(of)g
(three)f(lists)h(con)m(taining)i(names)d(of)h(de\014ned)e(pro)s
(cedures,)150 3895 y(v)-5 b(ariables,)28 b(and)e(prop)s(ert)m(y)g
(lists)h(resp)s(ectiv)m(ely)-8 b(.)41 b(This)26 b(list)h(includes)f
(all)i(un)m(buried)c(named)i(items)i(in)e(the)150 4005
y(w)m(orkspace.)150 4191 y Fh(buried)390 4338 y Fk(BURIED)150
4506 y Fs(outputs)k(a)h(con)m(ten)m(ts)h(list)f(including)f(all)h
(buried)e(named)h(items)h(in)f(the)g(w)m(orkspace.)150
4692 y Fh(traced)390 4839 y Fk(TRACED)150 5007 y Fs(outputs)g(a)h(con)m
(ten)m(ts)h(list)f(including)f(all)h(traced)g(named)f(items)h(in)f(the)
g(w)m(orkspace.)150 5193 y Fh(stepp)s(ed)390 5340 y Fk(STEPPED)p
eop end
%%Page: 55 68
TeXDict begin 55 67 bop 150 -116 a Fs(Chapter)30 b(7:)41
b(W)-8 b(orkspace)32 b(Managemen)m(t)2078 b(55)150 299
y(outputs)30 b(a)h(con)m(ten)m(ts)h(list)f(including)f(all)h(stepp)s
(ed)e(named)h(items)h(in)f(the)h(w)m(orkspace.)150 517
y Fh(pro)s(cedures)390 663 y Fk(PROCEDURES)150 831 y
Fs(outputs)f(a)h(list)g(of)g(the)f(names)h(of)g(all)g(un)m(buried)e
(user-de\014ned)g(pro)s(cedures)g(in)h(the)h(w)m(orkspace.)42
b(Note)150 941 y(that)26 b(this)f(is)g(a)h(list)g(of)f(names,)h(not)g
(a)f(con)m(ten)m(ts)i(list.)40 b(\(Ho)m(w)m(ev)m(er,)29
b(pro)s(cedures)24 b(that)i(require)f(a)g(con)m(ten)m(ts)150
1050 y(list)31 b(as)g(input)e(will)i(accept)h(this)e(list.\))150
1268 y Fh(primitiv)m(es)390 1415 y Fk(PRIMITIVES)150
1583 y Fs(outputs)d(a)i(list)f(of)g(the)g(names)g(of)g(all)h(primitiv)m
(e)f(pro)s(cedures)f(in)h(the)g(w)m(orkspace.)40 b(Note)29
b(that)g(this)f(is)g(a)150 1692 y(list)g(of)g(names,)g(not)f(a)h(con)m
(ten)m(ts)h(list.)41 b(\(Ho)m(w)m(ev)m(er,)30 b(pro)s(cedures)c(that)i
(require)f(a)h(con)m(ten)m(ts)h(list)f(as)g(input)150
1802 y(will)j(accept)h(this)e(list.\))150 2019 y Fh(names)390
2166 y Fk(NAMES)150 2334 y Fs(outputs)d(a)g(con)m(ten)m(ts)i(list)e
(consisting)h(of)g(an)f(empt)m(y)g(list)h(\(indicating)g(no)f(pro)s
(cedure)f(names\))h(follo)m(w)m(ed)150 2444 y(b)m(y)j(a)h(list)g(of)g
(all)g(un)m(buried)d(v)-5 b(ariable)32 b(names)e(in)g(the)g(w)m
(orkspace.)150 2661 y Fh(plists)390 2808 y Fk(PLISTS)150
2976 y Fs(outputs)e(a)i(con)m(ten)m(ts)g(list)g(consisting)g(of)f(t)m
(w)m(o)h(empt)m(y)f(lists)h(\(indicating)g(no)e(pro)s(cedures)g(or)h(v)
-5 b(ariables\))150 3086 y(follo)m(w)m(ed)32 b(b)m(y)e(a)h(list)g(of)g
(all)g(un)m(buried)d(nonempt)m(y)j(prop)s(ert)m(y)e(lists)i(in)f(the)h
(w)m(orkspace.)150 3303 y Fh(namelist)390 3450 y Fk(NAMELIST)46
b(varname)f(\(library)h(procedure\))390 3560 y(NAMELIST)g(varnamelist)
150 3727 y Fs(outputs)32 b(a)g(con)m(ten)m(ts)i(list)f(consisting)g(of)
g(an)f(empt)m(y)h(list)g(follo)m(w)m(ed)h(b)m(y)e(a)h(list)f(of)h(the)f
(name)h(or)f(names)150 3837 y(giv)m(en)26 b(as)g(input.)38
b(This)24 b(is)h(useful)g(in)g(conjunction)g(with)g(w)m(orkspace)h(con)
m(trol)h(pro)s(cedures)c(that)j(require)150 3947 y(a)31
b(con)m(ten)m(ts)h(list)f(as)f(input.)150 4164 y Fh(pllist)390
4311 y Fk(PLLIST)46 b(plname)g(\(library)g(procedure\))390
4421 y(PLLIST)g(plnamelist)150 4589 y Fs(outputs)27 b(a)h(con)m(ten)m
(ts)h(list)f(consisting)h(of)e(t)m(w)m(o)i(empt)m(y)f(lists)g(follo)m
(w)m(ed)h(b)m(y)f(a)f(list)i(of)e(the)h(name)g(or)f(names)150
4698 y(giv)m(en)f(as)g(input.)38 b(This)24 b(is)h(useful)g(in)g
(conjunction)g(with)g(w)m(orkspace)h(con)m(trol)h(pro)s(cedures)c(that)
j(require)150 4808 y(a)31 b(con)m(ten)m(ts)h(list)f(as)f(input.)150
4975 y(See)h([CONTENTS],)e(page)i(54,)h(.)150 5193 y
Fh(arit)m(y)390 5340 y Fk(ARITY)46 b(procedurename)p
eop end
%%Page: 56 69
TeXDict begin 56 68 bop 150 -116 a Fs(56)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(outputs)37 b(a)g(list)h(of)f(three)g(n)m(um)m(b)
s(ers:)53 b(the)37 b(minim)m(um,)h(default,)i(and)c(maxim)m(um)h(n)m
(um)m(b)s(er)f(of)h(inputs)150 408 y(for)32 b(the)h(pro)s(cedure)e
(whose)h(name)g(is)g(the)h(input.)45 b(It)33 b(is)f(an)g(error)g(if)h
(there)f(is)g(no)h(suc)m(h)e(pro)s(cedure.)46 b(A)150
518 y(maxim)m(um)30 b(of)h(-1)g(means)f(that)h(the)g(n)m(um)m(b)s(er)e
(of)h(inputs)g(is)g(unlimited.)150 748 y Fh(no)s(des)390
895 y Fk(NODES)150 1063 y Fs(outputs)23 b(a)g(list)h(of)g(t)m(w)m(o)g
(n)m(um)m(b)s(ers.)37 b(The)23 b(\014rst)f(represen)m(ts)h(the)h(n)m
(um)m(b)s(er)e(of)h(no)s(des)f(of)i(memory)f(curren)m(tly)150
1173 y(in)k(use.)39 b(The)27 b(second)g(sho)m(ws)f(the)i(maxim)m(um)e
(n)m(um)m(b)s(er)g(of)h(no)s(des)g(that)g(ha)m(v)m(e)h(b)s(een)f(in)f
(use)h(at)h(an)m(y)f(time)150 1282 y(since)34 b(the)f(last)i(in)m(v)m
(o)s(cation)g(of)f Fk(NODES)p Fs(.)48 b(\(A)34 b(no)s(de)f(is)g(a)h
(small)g(blo)s(c)m(k)g(of)f(computer)h(memory)f(as)h(used)150
1392 y(b)m(y)g(Logo.)54 b(Eac)m(h)36 b(n)m(um)m(b)s(er)d(uses)h(one)h
(no)s(de.)52 b(Eac)m(h)35 b(non-n)m(umeric)f(w)m(ord)g(uses)g(one)h(no)
s(de,)g(plus)f(some)150 1501 y(non-no)s(de)i(memory)g(for)h(the)g(c)m
(haracters)h(in)e(the)h(w)m(ord.)59 b(Eac)m(h)38 b(arra)m(y)f(tak)m(es)
h(one)f(no)s(de,)h(plus)e(some)150 1611 y(non-no)s(de)c(memory)-8
b(,)35 b(as)e(w)m(ell)h(as)g(the)f(memory)g(required)g(b)m(y)g(its)h
(elemen)m(ts.)50 b(Eac)m(h)34 b(list)g(requires)f(one)150
1721 y(no)s(de)j(p)s(er)f(elemen)m(t,)k(as)e(w)m(ell)g(as)g(the)f
(memory)g(within)g(the)h(elemen)m(ts.\))60 b(If)35 b(y)m(ou)i(w)m(an)m
(t)g(to)g(trac)m(k)h(the)150 1830 y(memory)32 b(use)g(of)g(an)g
(algorithm,)h(it)g(is)f(b)s(est)f(if)h(y)m(ou)g(in)m(v)m(ok)m(e)i
Fk(GC)e Fs(at)g(the)h(b)s(eginning)e(of)h(eac)m(h)h(iteration,)150
1940 y(since)e(otherwise)g(the)f(maxim)m(um)g(will)h(include)f(storage)
i(that)f(is)f(un)m(used)g(but)f(not)i(y)m(et)g(collected.)150
2227 y Fr(7.6)68 b(W)-11 b(orkspace)45 b(Insp)t(ection)150
2449 y Fh(p)s(o)390 2596 y Fk(PRINTOUT)h(contentslist)390
2706 y(PO)h(contentslist)150 2873 y Fs(command.)40 b(Prin)m(ts)28
b(to)i(the)e(write)h(stream)g(the)g(de\014nitions)f(of)h(all)g(pro)s
(cedures,)f(v)-5 b(ariables,)30 b(and)e(prop-)150 2983
y(ert)m(y)j(lists)g(named)f(in)g(the)h(input)e(con)m(ten)m(ts)j(list.)
150 3213 y Fh(p)s(oall)390 3360 y Fk(POALL)46 b(\(library)g
(procedure\))150 3528 y Fs(command.)40 b(Prin)m(ts)31
b(all)g(un)m(buried)e(de\014nitions)g(in)i(the)f(w)m(orkspace.)42
b(Abbreviates)30 b Fk(PO)48 b(CONTENTS)m Fs(.)150 3696
y(See)31 b([CONTENTS],)e(page)i(54,)h(.)150 3926 y Fh(p)s(ops)390
4073 y Fk(POPS)47 b(\(library)e(procedure\))150 4240
y Fs(command.)c(Prin)m(ts)31 b(the)g(de\014nitions)f(of)g(all)i(un)m
(buried)d(pro)s(cedures)g(in)h(the)h(w)m(orkspace.)42
b(Abbreviates)150 4350 y Fk(PO)47 b(PROCEDURES)m Fs(.)150
4518 y(See)31 b([PO],)f(page)h(56,)h(,)e([PR)m(OCEDURES],)h(page)g(55,)
g(.)150 4748 y Fh(p)s(ons)390 4895 y Fk(PONS)47 b(\(library)e
(procedure\))150 5063 y Fs(command.)57 b(Prin)m(ts)36
b(the)h(de\014nitions)e(of)h(all)h(un)m(buried)d(v)-5
b(ariables)37 b(in)f(the)g(w)m(orkspace.)58 b(Abbreviates)150
5172 y Fk(PO)47 b(NAMES)o Fs(.)150 5340 y(See)31 b([PO],)f(page)h(56,)h
(,)e([NAMES],)i(page)f(55,)g(.)p eop end
%%Page: 57 70
TeXDict begin 57 69 bop 150 -116 a Fs(Chapter)30 b(7:)41
b(W)-8 b(orkspace)32 b(Managemen)m(t)2078 b(57)150 299
y Fh(p)s(opls)390 446 y Fk(POPLS)46 b(\(library)g(procedure\))150
614 y Fs(command.)57 b(Prin)m(ts)35 b(the)h(con)m(ten)m(ts)h(of)f(all)h
(un)m(buried)d(nonempt)m(y)h(prop)s(ert)m(y)g(lists)i(in)e(the)h(w)m
(orkspace.)150 723 y(Abbreviates)31 b Fk(PO)47 b(PLISTS)n
Fs(.)150 891 y(See)31 b([PO],)f(page)h(56,)h(,)e([PLISTS],)g(page)h
(55,)g(.)150 1131 y Fh(p)s(on)390 1278 y Fk(PON)47 b(varname)f
(\(library)f(procedure\))390 1388 y(PON)i(varnamelist)150
1555 y Fs(command.)40 b(Prin)m(ts)31 b(the)f(de\014nitions)g(of)h(the)f
(named)g(v)-5 b(ariable\(s\).)150 1665 y(Abbreviates)31
b Fk(PO)47 b(NAMELIST)f(varname\(list\))l Fs(.)150 1833
y(See)31 b([PO],)f(page)h(56,)h(,)e([NAMELIST],)h(page)g(55,)g(.)150
2073 y Fh(p)s(opl)390 2220 y Fk(POPL)47 b(plname)f(\(library)f
(procedure\))390 2330 y(POPL)i(plnamelist)150 2497 y
Fs(command.)40 b(Prin)m(ts)31 b(the)f(de\014nitions)g(of)h(the)f(named)
g(prop)s(ert)m(y)g(list\(s\).)150 2607 y(Abbreviates)h
Fk(PO)47 b(PLLIST)f(plname\(list\))m Fs(.)150 2775 y(See)31
b([PO],)f(page)h(56,)h(,)e([PLLIST],)g(page)h(55,)h(.)150
3015 y Fh(p)s(ot)390 3162 y Fk(POT)47 b(contentslist)150
3330 y Fs(command.)c(Prin)m(ts)32 b(the)f(title)i(lines)e(of)h(the)f
(named)g(pro)s(cedures)f(and)h(the)h(de\014nitions)e(of)i(the)f(named)
150 3439 y(v)-5 b(ariables)32 b(and)g(prop)s(ert)m(y)f(lists.)45
b(F)-8 b(or)33 b(prop)s(ert)m(y)e(lists,)i(the)f(en)m(tire)g(list)h(is)
f(sho)m(wn)f(on)g(one)i(line)f(instead)150 3549 y(of)f(as)f(a)h(series)
g(of)f Fk(PPROP)f Fs(instructions)h(as)h(in)f Fk(PO)p
Fs(.)150 3717 y(See)h([PPR)m(OP],)f(page)i(53,)f(,)g([PO],)f(page)h
(56,)h(.)150 3957 y Fh(p)s(ots)390 4104 y Fk(POTS)47
b(\(library)e(procedure\))150 4272 y Fs(command.)k(Prin)m(ts)33
b(the)g(title)i(lines)e(of)g(all)h(un)m(buried)e(pro)s(cedures)g(in)g
(the)i(w)m(orkspace.)49 b(Abbreviates)150 4381 y Fk(POT)e(PROCEDURES)m
Fs(.)150 4549 y(See)31 b([PR)m(OCEDURES],)f(page)h(55,)h(.)150
4851 y Fr(7.7)68 b(W)-11 b(orkspace)45 b(Con)l(trol)150
5083 y Fh(erase)390 5230 y Fk(ERASE)h(contentslist)390
5340 y(ER)h(contentslist)p eop end
%%Page: 58 71
TeXDict begin 58 70 bop 150 -116 a Fs(58)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(command.)44 b(Erases)32 b(from)f(the)h(w)m
(orkspace)g(the)g(pro)s(cedures,)f(v)-5 b(ariables,)33
b(and)e(prop)s(ert)m(y)g(lists)h(named)150 408 y(in)i(the)h(input.)53
b(Primitiv)m(e)36 b(pro)s(cedures)d(ma)m(y)i(not)g(b)s(e)f(erased)h
(unless)f(the)h(v)-5 b(ariable)35 b Fk(REDEFP)e Fs(has)i(the)150
518 y(v)-5 b(alue)31 b Fk(TRUE)p Fs(.)150 686 y(See)g([REDEFP],)g(page)
g(91,)h(.)150 879 y Fh(erall)390 1026 y Fk(ERALL)150
1194 y Fs(command.)38 b(Erases)24 b(all)h(un)m(buried)c(pro)s(cedures,)
j(v)-5 b(ariables,)26 b(and)e(prop)s(ert)m(y)f(lists)h(from)f(the)h(w)m
(orkspace.)150 1303 y(Abbreviates)31 b Fk(ERASE)46 b(CONTENTS)n
Fs(.)150 1471 y(See)31 b([CONTENTS],)e(page)i(54,)h(.)150
1665 y Fh(erps)390 1812 y Fk(ERPS)150 1979 y Fs(command.)40
b(Erases)31 b(all)g(un)m(buried)e(pro)s(cedures)g(from)h(the)g(w)m
(orkspace.)150 2089 y(Abbreviates)h Fk(ERASE)46 b(PROCEDURES)m
Fs(.)150 2257 y(See)31 b([ERASE],)f(page)h(57,)h(,)e([PR)m(OCEDURES],)h
(page)g(55,)g(.)150 2450 y Fh(erns)390 2597 y Fk(ERNS)150
2765 y Fs(command.)40 b(Erases)31 b(all)g(un)m(buried)e(v)-5
b(ariables)31 b(from)f(the)g(w)m(orkspace.)42 b(Abbreviates)30
b Fk(ERASE)47 b(NAMES)n Fs(.)150 2932 y(See)31 b([ERASE],)f(page)h(57,)
h(,)e([NAMES],)h(page)g(55,)h(.)150 3126 y Fh(erpls)390
3273 y Fk(ERPLS)150 3440 y Fs(command.)40 b(Erases)31
b(all)g(un)m(buried)e(prop)s(ert)m(y)g(lists)i(from)f(the)h(w)m
(orkspace.)150 3550 y(Abbreviates)g Fk(ERASE)46 b(PLISTS)o
Fs(.)150 3718 y(See)31 b([ERASE],)f(page)h(57,)h(,)e([PLISTS],)f(page)j
(55,)f(.)150 3911 y Fh(ern)390 4058 y Fk(ERN)47 b(varname)f(\(library)f
(procedure\))390 4168 y(ERN)i(varnamelist)150 4335 y
Fs(command.)70 b(Erases)40 b(from)f(the)h(w)m(orkspace)h(the)g(v)-5
b(ariable\(s\))41 b(named)f(in)f(the)i(input.)68 b(Abbreviates)150
4445 y Fk(ERASE)46 b(NAMELIST)g Fi(varname\(list\))l
Fs(.)150 4613 y(See)31 b([ERASE],)f(page)h(57,)h(,)e([NAMELIST],)h
(page)g(55,)g(.)150 4806 y Fh(erpl)390 4953 y Fk(ERPL)47
b(plname)f(\(library)f(procedure\))390 5063 y(ERPL)i(plnamelist)150
5230 y Fs(command.)39 b(Erases)27 b(from)g(the)g(w)m(orkspace)g(the)g
(prop)s(ert)m(y)g(list\(s\))h(named)e(in)h(the)g(input.)38
b(Abbreviates)150 5340 y Fk(ERASE)46 b(PLLIST)g Fi(plname\(list\))m
Fs(.)p eop end
%%Page: 59 72
TeXDict begin 59 71 bop 150 -116 a Fs(Chapter)30 b(7:)41
b(W)-8 b(orkspace)32 b(Managemen)m(t)2078 b(59)150 299
y(See)31 b([ERASE],)f(page)h(57,)h(,)e([PLLIST],)g(page)h(55,)g(.)150
529 y Fh(bury)390 676 y Fk(BURY)47 b(contentslist)150
844 y Fs(command.)75 b(Buries)41 b(the)h(pro)s(cedures,)i(v)-5
b(ariables,)46 b(and)41 b(prop)s(ert)m(y)g(lists)h(named)f(in)h(the)g
(input.)74 b(A)150 953 y(buried)30 b(item)j(is)e(not)h(included)f(in)g
(the)h(lists)g(output)f(b)m(y)h Fk(CONTENTS)p Fs(,)e
Fk(PROCEDURES)p Fs(,)f Fk(VARIABLES)p Fs(,)h(and)150
1063 y Fk(PLISTS)p Fs(,)d(but)g(is)h(included)f(in)g(the)h(list)g
(output)g(b)m(y)f Fk(BURIED)p Fs(.)39 b(By)28 b(implication,)h(buried)e
(things)h(are)g(not)150 1172 y(prin)m(ted)i(b)m(y)g Fk(POALL)f
Fs(or)h(sa)m(v)m(ed)i(b)m(y)e Fk(SAVE)p Fs(.)150 1340
y(See)36 b([CONTENTS],)e(page)j(54,)h(,)f([PR)m(OCEDURES],)e(page)h
(55,)i(,)f([PONS],)f(page)g(56,)i(,)f([PLISTS],)150 1450
y(page)31 b(55,)h(,)e([PO)m(ALL],)h(page)g(56,)h(,)e([SA)-10
b(VE],)31 b(page)g(62,)g(.)150 1680 y Fh(bury)m(all)390
1826 y Fk(BURYALL)1955 b(\(library)45 b(procedure\))150
1994 y Fs(command.)40 b(Abbreviates)31 b Fk(BURY)47 b(CONTENTS)p
Fs(.)150 2162 y(See)31 b([CONTENTS],)e(page)i(54,)h(.)150
2392 y Fh(buryname)390 2539 y Fk(BURYNAME)46 b(varname)f(\(library)h
(procedure\))390 2648 y(BURYNAME)g(varnamelist)150 2816
y Fs(command.)40 b(Abbreviates)31 b Fk(BURY)47 b(NAMELIST)e
(varname\(list\))p Fs(.)150 2984 y(See)31 b([BUR)-8 b(Y],)32
b(page)f(59,)g(,)g([NAMELIST],)f(page)h(55,)h(.)150 3214
y Fh(un)m(bury)390 3361 y Fk(UNBURY)46 b(contentslist)150
3528 y Fs(command.)39 b(Un)m(buries)26 b(the)g(pro)s(cedures,)g(v)-5
b(ariables,)28 b(and)d(prop)s(ert)m(y)h(lists)h(named)e(in)h(the)h
(input.)38 b(That)150 3638 y(is,)31 b(the)f(named)g(items)h(will)g(b)s
(e)f(returned)f(to)i(view)f(in)h Fk(CONTENTS)p Fs(,)d(etc.)150
3806 y(See)j([CONTENTS],)e(page)i(54,)h(.)150 4036 y
Fh(un)m(bury)m(all)390 4183 y Fk(UNBURYALL)45 b(\(library)h
(procedure\))150 4350 y Fs(command.)40 b(Abbreviates)31
b Fk(UNBURY)46 b(BURIED)p Fs(.)150 4518 y(See)31 b([BURIED],)g(page)g
(54,)h(.)150 4748 y Fh(un)m(buryname)390 4895 y Fk(UNBURYNAME)45
b(varname)h(\(library)f(procedure\))390 5005 y(UNBURYNAME)g
(varnamelist)150 5172 y Fs(command.)40 b(Abbreviates)31
b Fk(UNBURY)46 b(NAMELIST)g Fi(varname\(list\))p Fs(.)150
5340 y(See)31 b([UNBUR)-8 b(Y],)32 b(page)f(59,)h(,)e([NAMELIST],)h
(page)g(55,)g(.)p eop end
%%Page: 60 73
TeXDict begin 60 72 bop 150 -116 a Fs(60)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(buriedp)390 446 y Fk(BURIEDP)46
b(contentslist)390 555 y(BURIED?)g(contentslist)150 723
y Fs(outputs)32 b Fk(TRUE)g Fs(if)h(the)g(\014rst)g(pro)s(cedure,)f(v)
-5 b(ariable,)35 b(or)e(prop)s(ert)m(y)f(list)i(named)f(in)f(the)i(con)
m(ten)m(ts)g(list)g(is)150 833 y(buried,)28 b Fk(FALSE)f
Fs(if)i(not.)40 b(Only)28 b(the)h(\014rst)f(thing)h(in)f(the)h(list)g
(is)g(tested;)h(the)f(most)g(common)g(use)g(will)g(b)s(e)150
942 y(with)35 b(a)g(w)m(ord)g(as)g(input,)h(naming)e(a)i(pro)s(cedure,)
f(but)g(a)g(con)m(ten)m(ts)i(list)e(is)g(allo)m(w)m(ed)i(so)f(that)f(y)
m(ou)h(can)150 1052 y Fk(BURIEDP)28 b([[])i([)p Fi(variable)p
Fk(]])d Fs(or)k Fk(BURIEDP)d([[])h([])h([)p Fi(proplist)p
Fk(]])p Fs(.)150 1265 y Fh(trace)390 1412 y Fk(TRACE)46
b(contentslist)150 1579 y Fs(command.)61 b(Marks)38 b(the)g(named)e
(items)i(for)f(tracing.)63 b(A)38 b(message)g(is)f(prin)m(ted)g(whenev)
m(er)h(a)f(traced)150 1689 y(pro)s(cedure)22 b(is)i(in)m(v)m(ok)m(ed,)j
(giving)d(the)g(actual)g(input)f(v)-5 b(alues,)25 b(and)e(whenev)m(er)h
(a)g(traced)g(pro)s(cedure)e Fk(STOP)p Fs(s)150 1799
y(or)38 b Fk(OUTPUT)p Fs(s.)60 b(A)38 b(message)g(is)g(prin)m(ted)f
(whenev)m(er)g(a)h(new)f(v)-5 b(alue)38 b(is)g(assigned)g(to)g(a)g
(traced)g(v)-5 b(ariable)150 1908 y(using)35 b Fk(MAKE)p
Fs(.)54 b(A)35 b(message)h(is)f(prin)m(ted)g(whenev)m(er)g(a)h(new)e
(prop)s(ert)m(y)h(is)g(giv)m(en)h(to)g(a)g(traced)g(prop)s(ert)m(y)150
2018 y(list)31 b(using)f Fk(PPROP)p Fs(.)150 2185 y(See)h([STOP],)e
(page)j(69,)f(,)g([OUTPUT],)f(page)h(69,)g(,)g([MAKE],)g(page)g(51,)h
(,)e([PPR)m(OP],)h(page)g(53,)h(.)150 2398 y Fh(un)m(trace)390
2545 y Fk(UNTRACE)46 b(contentslist)150 2713 y Fs(command.)40
b(T)-8 b(urns)29 b(o\013)i(tracing)g(for)g(the)f(named)g(items.)150
2926 y Fh(tracedp)390 3073 y Fk(TRACEDP)46 b(contentslist)390
3182 y(TRACED?)g(contentslist)150 3350 y Fs(outputs)32
b Fk(TRUE)g Fs(if)h(the)g(\014rst)g(pro)s(cedure,)f(v)-5
b(ariable,)35 b(or)e(prop)s(ert)m(y)f(list)i(named)f(in)f(the)i(con)m
(ten)m(ts)g(list)g(is)150 3460 y(traced,)c Fk(FALSE)e
Fs(if)h(not.)40 b(Only)28 b(the)i(\014rst)e(thing)h(in)g(the)g(list)g
(is)g(tested;)i(the)e(most)g(common)h(use)e(will)i(b)s(e)150
3569 y(with)35 b(a)g(w)m(ord)g(as)g(input,)h(naming)e(a)i(pro)s
(cedure,)f(but)g(a)g(con)m(ten)m(ts)i(list)e(is)g(allo)m(w)m(ed)i(so)f
(that)f(y)m(ou)h(can)150 3679 y Fk(TRACEDP)28 b([[])i([)p
Fi(variable)p Fk(]])d Fs(or)k Fk(TRACEDP)d([[])h([])h([)p
Fi(proplist)p Fk(]])p Fs(.)150 3892 y Fh(step)390 4039
y Fk(STEP)47 b(contentslist)150 4206 y Fs(command.)39
b(Marks)27 b(the)g(named)g(items)g(for)g(stepping.)39
b(Whenev)m(er)28 b(a)f(stepp)s(ed)f(pro)s(cedure)f(is)i(in)m(v)m(ok)m
(ed,)150 4316 y(eac)m(h)f(instruction)e(line)h(in)f(the)g(pro)s(cedure)
f(b)s(o)s(dy)g(is)h(prin)m(ted)g(b)s(efore)g(b)s(eing)g(executed,)j
(and)d(Logo)h(w)m(aits)150 4426 y(for)35 b(the)h(user)e(to)i(t)m(yp)s
(e)g(a)f(newline)h(at)g(the)f(terminal.)56 b(A)35 b(message)i(is)e
(prin)m(ted)g(whenev)m(er)g(a)h(stepp)s(ed)150 4535 y(v)-5
b(ariable)30 b(name)g(is)g Fl(shado)m(w)m(ed)j Fs(b)s(ecause)d(a)g(lo)s
(cal)h(v)-5 b(ariable)31 b(of)e(the)h(same)g(name)g(is)g(created)g
(either)h(as)f(a)150 4645 y(pro)s(cedure)f(input)h(or)g(b)m(y)g(the)h
Fk(LOCAL)e Fs(command.)150 4812 y(See)i([LOCAL],)f(page)h(52,)g(.)150
5025 y Fh(unstep)390 5172 y Fk(UNSTEP)46 b(contentslist)150
5340 y Fs(command.)40 b(T)-8 b(urns)29 b(o\013)i(stepping)f(for)g(the)h
(named)f(items.)p eop end
%%Page: 61 74
TeXDict begin 61 73 bop 150 -116 a Fs(Chapter)30 b(7:)41
b(W)-8 b(orkspace)32 b(Managemen)m(t)2078 b(61)150 299
y Fh(stepp)s(edp)390 446 y Fk(STEPPEDP)46 b(contentslist)390
555 y(STEPPED?)g(contentslist)150 723 y Fs(outputs)32
b Fk(TRUE)g Fs(if)h(the)g(\014rst)g(pro)s(cedure,)f(v)-5
b(ariable,)35 b(or)e(prop)s(ert)m(y)f(list)i(named)f(in)f(the)i(con)m
(ten)m(ts)g(list)g(is)150 833 y(stepp)s(ed,)e Fk(FALSE)f
Fs(if)i(not.)47 b(Only)32 b(the)h(\014rst)e(thing)i(in)f(the)h(list)g
(is)f(tested;)j(the)e(most)g(common)f(use)h(will)150
942 y(b)s(e)27 b(with)h(a)g(w)m(ord)g(as)g(input,)g(naming)g(a)g(pro)s
(cedure,)g(but)f(a)h(con)m(ten)m(ts)i(list)f(is)f(allo)m(w)m(ed)i(so)e
(that)g(y)m(ou)h(can)150 1052 y Fk(STEPPEDP)f([[])i([)p
Fi(variable)p Fk(]])d Fs(or)j Fk(STEPPEDP)e([[])i([])g([)p
Fi(proplist)p Fk(]])p Fs(.)150 1311 y Fh(edit)390 1458
y Fk(EDIT)47 b(contentslist)390 1568 y(ED)g(contentslist)390
1677 y(\(EDIT\))390 1787 y(\(ED\))150 1955 y Fs(command.)57
b(If)36 b(in)m(v)m(ok)m(ed)h(with)f(an)g(input,)h Fk(EDIT)e
Fs(writes)h(the)g(de\014nitions)f(of)i(the)f(named)f(items)i(in)m(to)
150 2064 y(a)g(temp)s(orary)f(\014le)h(and)f(edits)h(that)h(\014le,)h
(using)d(an)g(editor)i(that)f(dep)s(ends)e(on)i(the)f(platform)h(y)m
(ou're)150 2174 y(using.)j(In)29 b(wxWidgets,)h(and)f(in)g(the)h(MacOS)
f(Classic)h(v)m(ersion,)h(there)e(is)h(an)f(editor)h(built)f(in)m(to)i
(Logo.)150 2284 y(In)k(the)h(non-wxWidgets)g(v)m(ersions)g(for)f(Unix,)
i(MacOS)f(X,)g(Windo)m(ws,)i(and)d(DOS,)g(Logo)i(uses)e(y)m(our)150
2393 y(fa)m(v)m(orite)40 b(editor)f(as)g(determined)e(b)m(y)h(the)h
Fk(EDITOR)d Fs(en)m(vironmen)m(t)j(v)-5 b(ariable.)65
b(If)38 b(y)m(ou)g(don't)h(ha)m(v)m(e)g(an)150 2503 y
Fk(EDITOR)32 b Fs(v)-5 b(ariable,)35 b(edits)e(the)h(de\014nitions)f
(using)g Fk(jove)p Fs(.)48 b(If)33 b(in)m(v)m(ok)m(ed)i(without)e(an)g
(input,)g Fk(EDIT)g Fs(edits)150 2612 y(the)g(same)f(\014le)h(left)g(o)
m(v)m(er)h(from)e(a)h(previous)e Fk(EDIT)h Fs(or)g Fk(EDITFILE)e
Fs(instruction.)47 b(When)32 b(y)m(ou)h(lea)m(v)m(e)i(the)150
2722 y(editor,)c(Logo)f(reads)g(the)f(revised)h(de\014nitions)f(and)g
(mo)s(di\014es)g(the)h(w)m(orkspace)g(accordingly)-8
b(.)42 b(It)30 b(is)g(not)150 2831 y(an)g(error)g(if)h(the)f(input)g
(includes)g(names)g(for)g(whic)m(h)g(there)h(is)f(no)g(previous)g
(de\014nition.)150 2999 y(If)35 b(there)g(is)g(a)h(v)-5
b(ariable)36 b Fk(LOADNOISILY)c Fs(whose)j(v)-5 b(alue)36
b(is)f Fk(TRUE)p Fs(,)h(then,)g(after)g(lea)m(ving)h(the)e(editor,)j
Fk(TO)150 3109 y Fs(commands)27 b(in)f(the)i(temp)s(orary)e(\014le)h
(prin)m(t)g(`)p Fi(procname)h Fk(defined)p Fs(')e(\(where)h
Fl(pro)s(cname)k Fs(is)c(the)h(name)f(of)150 3218 y(the)34
b(pro)s(cedure)e(b)s(eing)h(de\014ned\);)i(if)f Fk(LOADNOISILY)c
Fs(is)k Fk(FALSE)e Fs(or)i(unde\014ned,)e Fk(TO)h Fs(commands)g(in)h
(the)150 3328 y(\014le)c(are)h(carried)g(out)f(silen)m(tly)-8
b(.)150 3496 y(If)28 b(there)h(is)g(an)g(en)m(vironmen)m(t)g(v)-5
b(ariable)30 b(called)g Fk(TEMP)p Fs(,)e(then)g(Logo)i(uses)f(its)g(v)
-5 b(alue)29 b(as)g(the)g(directory)g(in)150 3605 y(whic)m(h)h(to)h
(write)g(the)f(temp)s(orary)g(\014le)h(used)e(for)h(editing.)150
3773 y(Exceptionally)-8 b(,)29 b(the)d Fk(EDIT)e Fs(command)i(can)g(b)s
(e)f(used)f(without)i(its)g(default)g(input)f(and)g(without)g(paren-)
150 3883 y(theses)31 b(pro)m(vided)f(that)h(nothing)f(follo)m(ws)h(it)g
(on)g(the)f(instruction)h(line.)150 4050 y(See)g([LO)m(ADNOISIL)-8
b(Y],)31 b(page)g(90,)g(,)g(See)g([EDITFILE],)f(page)h(61,)h(.)150
4310 y Fh(edit\014le)390 4457 y Fk(EDITFILE)46 b(filename)150
4624 y Fs(command.)40 b(Starts)28 b(the)g(Logo)h(editor,)h(lik)m(e)f
Fk(EDIT)p Fs(,)f(but)f(instead)i(of)f(editing)h(a)f(temp)s(orary)g
(\014le)g(it)h(edits)150 4734 y(the)e(\014le)g(sp)s(eci\014ed)g(b)m(y)g
(the)g(input.)38 b(When)27 b(y)m(ou)h(lea)m(v)m(e)h(the)e(editor,)i
(Logo)f(reads)f(the)g(revised)g(\014le,)h(as)f(for)150
4844 y Fk(EDIT)p Fs(.)38 b Fk(EDITFILE)25 b Fs(also)j(remem)m(b)s(ers)f
(the)g(\014lename,)h(so)f(that)h(a)f(subsequen)m(t)g
Fk(EDIT)e Fs(command)i(with)g(no)150 4953 y(input)i(will)i(re-edit)g
(the)g(same)g(\014le.)150 5121 y Fk(EDITFILE)g Fs(is)j(in)m(tended)f
(as)h(an)g(alternativ)m(e)i(to)e Fk(LOAD)f Fs(and)f Fk(SAVE)p
Fs(.)50 b(Y)-8 b(ou)34 b(can)g(main)m(tain)g(a)g(w)m(orkspace)150
5230 y(\014le)26 b(y)m(ourself,)i(con)m(trolling)g(the)e(order)g(in)f
(whic)m(h)h(de\014nitions)g(app)s(ear,)h(main)m(taining)g(commen)m(ts)g
(in)f(the)150 5340 y(\014le,)31 b(and)e(so)i(on.)p eop
end
%%Page: 62 75
TeXDict begin 62 74 bop 150 -116 a Fs(62)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(In)24 b(the)h(wxWidgets)h(v)m(ersion,)h
Fk(EDITFILE)22 b Fs(asks)j(whether)g(or)g(not)g(y)m(ou)g(w)m(an)m(t)h
(to)f(load)h(the)f(\014le)g(in)m(to)h(Logo)150 408 y(when)i(y)m(ou)h
(\014nish)f(editing.)41 b(This)28 b(allo)m(ws)j(y)m(ou)e(to)h(use)e
Fk(EDITFILE)f Fs(to)j(edit)f(data)h(\014les)f(without)g(lea)m(ving)150
518 y(Logo.)150 702 y Fh(edall)390 848 y Fk(EDALL)46
b(\(library)g(procedure\))150 1016 y Fs(command.)40 b(Abbreviates)31
b Fk(EDIT)47 b(CONTENTS)p Fs(.)150 1184 y(See)31 b([CONTENTS],)e(page)i
(54,)h(.)150 1367 y Fh(edps)390 1514 y Fk(EDPS)47 b(\(library)e
(procedure\))150 1682 y Fs(command.)40 b(Abbreviates)31
b Fk(EDIT)47 b(PROCEDURES)p Fs(.)150 1850 y(See)31 b([EDIT],)f(page)i
(61,)f(,)g([PR)m(OCEDURES],)f(page)h(55,)h(.)150 2033
y Fh(edns)390 2180 y Fk(EDNS)47 b(\(library)e(procedure\))150
2348 y Fs(command.)40 b(Abbreviates)31 b Fk(EDIT)47 b(NAMES)p
Fs(.)150 2516 y(See)31 b([EDIT],)f(page)i(61,)f(,)g([NAMES],)g(page)g
(55,)g(.)150 2699 y Fh(edpls)390 2846 y Fk(EDPLS)46 b(\(library)g
(procedure\))150 3014 y Fs(command.)40 b(Abbreviates)31
b Fk(EDIT)47 b(PLISTS)p Fs(.)150 3181 y(See)31 b([EDIT],)f(page)i(61,)f
(,)g([PLISTS],)e(page)i(55,)g(.)150 3365 y Fh(edn)390
3512 y Fk(EDN)47 b(varname)f(\(library)f(procedure\))390
3621 y(EDN)i(varnamelist)150 3789 y Fs(command.)40 b(Abbreviates)31
b Fk(EDIT)47 b(NAMELIST)e Fi(varname\(list\))p Fs(.)150
3957 y(See)31 b([EDIT],)f(page)i(61,)f(,)g([NAMELIST],)f(page)h(55,)h
(.)150 4140 y Fh(edpl)390 4287 y Fk(EDPL)47 b(plname)f(\(library)f
(procedure\))390 4397 y(EDPL)i(plnamelist)150 4565 y
Fs(command.)40 b(Abbreviates)31 b Fk(EDIT)47 b(PLLIST)f
Fi(plname\(list\))p Fs(.)150 4732 y(See)31 b([EDIT],)f(page)i(61,)f(,)g
([PLLIST],)e(page)i(55,)h(.)150 4916 y Fh(sa)m(v)m(e)390
5063 y Fk(SAVE)47 b(filename)150 5230 y Fs(command.)40
b(Sa)m(v)m(es)32 b(the)e(de\014nitions)g(of)g(all)h(un)m(buried)e(pro)s
(cedures,)g(v)-5 b(ariables,)31 b(and)f(nonempt)m(y)g(prop-)150
5340 y(ert)m(y)h(lists)g(in)f(the)h(named)f(\014le.)40
b(Equiv)-5 b(alen)m(t)32 b(to)p eop end
%%Page: 63 76
TeXDict begin 63 75 bop 150 -116 a Fs(Chapter)30 b(7:)41
b(W)-8 b(orkspace)32 b(Managemen)m(t)2078 b(63)390 299
y Fk(to)47 b(save)g(:filename)390 408 y(local)f("oldwriter)390
518 y(make)h("oldwriter)e(writer)390 628 y(openwrite)g(:filename)390
737 y(setwrite)h(:filename)390 847 y(poall)390 956 y(setwrite)g
(:oldwriter)390 1066 y(close)g(:filename)390 1176 y(end)150
1343 y Fs(Exceptionally)-8 b(,)45 b Fk(SAVE)39 b Fs(can)h(b)s(e)f(used)
h(with)f(no)h(input)f(and)h(without)g(paren)m(theses)g(if)g(it)h(is)f
(the)g(last)150 1453 y(thing)33 b(on)g(the)g(command)g(line.)48
b(In)33 b(this)f(case,)j(the)e(\014lename)h(from)e(the)h(most)g(recen)m
(t)h Fk(LOAD)e Fs(or)h Fk(SAVE)150 1562 y Fs(command)d(will)h(b)s(e)f
(used.)40 b(\(It)30 b(is)h(an)f(error)g(if)g(there)h(has)f(b)s(een)g
(no)g(previous)g Fk(LOAD)f Fs(or)h Fk(SAVE)p Fs(.\))150
1780 y Fh(sa)m(v)m(el)390 1927 y Fk(SAVEL)46 b(contentslist)f(filename)
g(\(library)h(procedure\))150 2094 y Fs(command.)39 b(Sa)m(v)m(es)29
b(the)e(de\014nitions)f(of)i(the)f(pro)s(cedures,)g(v)-5
b(ariables,)28 b(and)f(prop)s(ert)m(y)f(lists)i(sp)s(eci\014ed)e(b)m(y)
150 2204 y Fl(con)m(ten)m(tslist)35 b Fs(to)c(the)f(\014le)h(named)f
Fl(\014lename)p Fs(.)150 2421 y Fh(load)390 2568 y Fk(LOAD)47
b(filename)150 2736 y Fs(command.)40 b(Reads)29 b(instructions)g(from)g
(the)g(named)g(\014le)g(and)f(executes)j(them.)40 b(The)29
b(\014le)g(can)g(include)150 2845 y(pro)s(cedure)c(de\014nitions)g
(with)h Fk(TO)p Fs(,)g(and)f(these)i(are)f(accepted)h(ev)m(en)g(if)f(a)
g(pro)s(cedure)f(b)m(y)h(the)g(same)g(name)150 2955 y(already)31
b(exists.)42 b(If)30 b(the)h(\014le)g(assigns)f(a)h(list)h(v)-5
b(alue)31 b(to)g(a)g(v)-5 b(ariable)31 b(named)f Fk(STARTUP)p
Fs(,)f(then)i(that)g(list)g(is)150 3064 y(run)h(as)i(an)g
(instructionlist)g(after)g(the)g(\014le)g(is)f(loaded.)51
b(If)34 b(there)f(is)h(a)g(v)-5 b(ariable)35 b Fk(LOADNOISILY)30
b Fs(whose)150 3174 y(v)-5 b(alue)38 b(is)h Fk(TRUE)p
Fs(,)g(then)e Fk(TO)h Fs(commands)f(in)h(the)g(\014le)g(prin)m(t)g(`)p
Fi(procname)28 b Fk(defined)p Fs(')36 b(\(where)i Fl(pro)s(cname)150
3284 y Fs(is)j(the)h(name)g(of)f(the)h(pro)s(cedure)e(b)s(eing)h
(de\014ned\);)47 b(if)41 b Fk(LOADNOISILY)d Fs(is)k Fk(FALSE)e
Fs(or)h(unde\014ned,)i Fk(TO)150 3393 y Fs(commands)30
b(in)g(the)h(\014le)f(are)h(carried)f(out)h(silen)m(tly)-8
b(.)150 3561 y(See)31 b([ST)-8 b(AR)g(TUP],)30 b(page)i(91,)f(,)g(See)f
([LO)m(ADNOISIL)-8 b(Y],)31 b(page)h(90,)f(.)150 3778
y Fh(cslsload)390 3925 y Fk(CSLSLOAD)46 b(name)150 4093
y Fs(command.)39 b(Loads)24 b(the)h(named)f(\014le,)i(lik)m(e)f
Fk(LOAD)p Fs(,)g(but)f(from)g(the)g(directory)h(con)m(taining)h(the)f
(Computer)150 4202 y(Science)31 b(Logo)h(St)m(yle)f(programs)f(instead)
h(of)f(the)h(curren)m(t)f(user's)g(directory)-8 b(.)150
4370 y(See)31 b([LO)m(AD],)g(page)g(63,)h(.)150 4587
y Fh(help)390 4734 y Fk(HELP)47 b(name)390 4844 y(\(HELP\))150
5011 y Fs(command.)69 b(Prin)m(ts)40 b(information)g(from)f(the)h
(reference)h(man)m(ual)f(ab)s(out)f(the)h(primitiv)m(e)h(pro)s(cedure)
150 5121 y(named)26 b(b)m(y)g(the)h(input.)39 b(With)27
b(no)f(input,)g(lists)h(all)h(the)e(primitiv)m(es)i(ab)s(out)e(whic)m
(h)g(help)g(is)h(a)m(v)-5 b(ailable.)41 b(If)150 5230
y(there)27 b(is)g(an)g(en)m(vironmen)m(t)h(v)-5 b(ariable)27
b Fk(LOGOHELP)p Fs(,)f(then)h(its)g(v)-5 b(alue)28 b(is)f(tak)m(en)h
(as)f(the)g(directory)h(in)e(whic)m(h)150 5340 y(to)31
b(lo)s(ok)g(for)f(help)g(\014les,)h(instead)f(of)h(the)g(default)f
(help)g(directory)-8 b(.)p eop end
%%Page: 64 77
TeXDict begin 64 76 bop 150 -116 a Fs(64)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(If)e Fk(HELP)g Fs(is)g(called)i(with)f(the)f
(name)h(of)g(a)g(de\014ned)e(pro)s(cedure)h(for)g(whic)m(h)h(there)g
(is)f(no)h(help)f(\014le,)h(it)h(will)150 408 y(prin)m(t)35
b(the)h(title)h(line)f(of)g(the)g(pro)s(cedure)f(follo)m(w)m(ed)i(b)m
(y)f(lines)f(from)h(the)f(pro)s(cedure)g(b)s(o)s(dy)f(that)i(start)150
518 y(with)30 b(semicolon,)i(stopping)e(when)g(a)g(non-semicolon)i
(line)e(is)h(seen.)150 686 y(Exceptionally)-8 b(,)29
b(the)d Fk(HELP)e Fs(command)i(can)g(b)s(e)f(used)f(without)i(its)g
(default)g(input)f(and)g(without)g(paren-)150 795 y(theses)31
b(pro)m(vided)f(that)h(nothing)f(follo)m(ws)h(it)g(on)g(the)f
(instruction)h(line.)150 991 y Fh(seteditor)390 1138
y Fk(SETEDITOR)45 b(path)150 1306 y Fs(command.)39 b(T)-8
b(ells)25 b(Logo)h(to)f(use)g(the)f(sp)s(eci\014ed)g(program)h(as)g
(its)g(editor)g(instead)g(of)g(the)f(default)h(editor.)150
1415 y(The)30 b(format)h(of)f(a)h(path)f(dep)s(ends)f(on)h(y)m(our)g
(op)s(erating)h(system.)150 1611 y Fh(setliblo)s(c)390
1758 y Fk(SETLIBLOC)45 b(path)150 1926 y Fs(command.)64
b(T)-8 b(ells)39 b(Logo)g(to)g(use)f(the)g(sp)s(eci\014ed)g(directory)h
(as)f(its)h(library)e(instead)i(of)f(the)g(default.)150
2035 y(\(Note)j(that)f(man)m(y)g(Logo)g Fk(")p Fs(primitiv)m(e)p
Fk(")g Fs(pro)s(cedures)e(are)i(actually)h(found)d(in)h(the)g(library)
-8 b(,)42 b(so)e(they)150 2145 y(ma)m(y)31 b(b)s(ecome)g(una)m(v)-5
b(ailable)32 b(if)e(y)m(our)h(new)f(library)g(do)s(es)g(not)h(include)f
(them!\))42 b(The)30 b(format)h(of)f(a)h(path)150 2254
y(dep)s(ends)e(on)h(y)m(our)g(op)s(erating)h(system.)150
2450 y Fh(setcslslo)s(c)390 2597 y Fk(SETCSLSLOC)45 b(path)150
2765 y Fs(command.)40 b(T)-8 b(ells)32 b(Logo)f(to)g(use)f(the)h(sp)s
(eci\014ed)e(directory)i(for)f(the)h Fk(CSLSLOAD)d Fs(command,)i
(instead)h(of)150 2874 y(the)g(default)f(directory)-8
b(.)42 b(The)30 b(format)g(of)h(a)g(path)f(dep)s(ends)e(on)j(y)m(our)f
(op)s(erating)h(system.)150 3042 y(See)g([CSLSLO)m(AD],)f(page)h(63,)g
(.)150 3238 y Fh(sethelplo)s(c)390 3385 y Fk(SETHELPLOC)45
b(path)150 3552 y Fs(command.)40 b(T)-8 b(ells)29 b(Logo)g(to)g(lo)s
(ok)g(in)f(the)h(sp)s(eci\014ed)f(directory)g(for)g(the)h(information)g
(pro)m(vided)f(b)m(y)g(the)150 3662 y(HELP)34 b(command,)h(instead)f
(of)g(the)g(default)g(directory)-8 b(.)53 b(The)33 b(format)i(of)f(a)g
(path)g(dep)s(ends)e(on)i(y)m(our)150 3771 y(op)s(erating)d(system.)150
3967 y Fh(settemplo)s(c)390 4114 y Fk(SETTEMPLOC)45 b(path)150
4282 y Fs(command.)d(T)-8 b(ells)31 b(Logo)h(to)g(write)f(editor)g
(temp)s(orary)g(\014les)g(in)f(the)h(sp)s(eci\014ed)f(directory)h
(rather)g(than)150 4391 y(in)g(the)h(default)g(directory)-8
b(.)45 b(Y)-8 b(ou)33 b(m)m(ust)e(ha)m(v)m(e)i(write)f(p)s(ermission)e
(for)i(this)f(directory)-8 b(.)46 b(The)31 b(format)h(of)150
4501 y(a)f(path)f(dep)s(ends)e(on)j(y)m(our)f(op)s(erating)h(system.)
150 4697 y Fh(gc)390 4844 y Fk(GC)390 4953 y(\(GC)47
b(anything\))150 5121 y Fs(command.)76 b(Runs)41 b(the)i(garbage)h
(collector,)k(reclaiming)43 b(un)m(used)e(no)s(des.)76
b(Logo)44 b(do)s(es)e(this)g(when)150 5230 y(necessary)22
b(an)m(yw)m(a)m(y)-8 b(,)26 b(but)20 b(y)m(ou)i(ma)m(y)h(w)m(an)m(t)f
(to)h(use)e(this)h(command)f(to)h(con)m(trol)h(exactly)h(when)c(Logo)j
(do)s(es)150 5340 y(it.)49 b(In)32 b(particular,)i(the)f(n)m(um)m(b)s
(ers)f(output)g(b)m(y)h(the)g Fk(NODES)f Fs(op)s(eration)h(will)g(not)h
(b)s(e)e(v)m(ery)h(meaningful)p eop end
%%Page: 65 78
TeXDict begin 65 77 bop 150 -116 a Fs(Chapter)30 b(7:)41
b(W)-8 b(orkspace)32 b(Managemen)m(t)2078 b(65)150 299
y(unless)36 b(garbage)h(has)g(b)s(een)e(collected.)61
b(Another)37 b(reason)f(to)h(use)g Fk(GC)e Fs(is)i(that)g(a)g(garbage)g
(collection)150 408 y(tak)m(es)32 b(a)e(noticeable)i(fraction)f(of)f(a)
h(second,)f(and)g(y)m(ou)g(ma)m(y)h(w)m(an)m(t)g(to)g(sc)m(hedule)f
(collections)j(for)c(times)150 518 y(b)s(efore)c(or)g(after)h(some)g
(time-critical)i(animation.)40 b(If)25 b(in)m(v)m(ok)m(ed)i(with)e(an)h
(argumen)m(t)f(\(of)h(an)m(y)g(v)-5 b(alue\),)28 b Fk(GC)150
628 y Fs(runs)g(a)h(full)g(garbage)i(collection,)h(including)d
Ff(GCTW)-9 b(A)29 b Fs(\(Garbage)i(Collect)g(T)-8 b(ruly)28
b(W)-8 b(orthless)31 b(A)m(toms,)150 737 y(whic)m(h)42
b(means)h(that)g(it)h(remo)m(v)m(es)g(from)e(Logo's)i(memory)e(w)m
(ords)h(that)g(used)f(to)h(b)s(e)f(pro)s(cedure)g(or)150
847 y(v)-5 b(ariable)28 b(names)g(but)e(aren't)i(an)m(y)g(more\);)i
(without)d(an)g(argumen)m(t,)i Fk(GC)e Fs(do)s(es)g(a)h(generational)i
(garbage)150 956 y(collection,)50 b(whic)m(h)44 b(means)g(that)g(only)g
(recen)m(tly)i(created)f(no)s(des)e(are)h(examined.)82
b(\(The)44 b(latter)h(is)150 1066 y(usually)30 b(go)s(o)s(d)g
(enough.\))150 1265 y Fh(.setsegmen)m(tsize)390 1412
y Fk(.SETSEGMENTSIZE)44 b(num)150 1580 y Fs(command.)39
b(Sets)27 b(the)g(n)m(um)m(b)s(er)e(of)i(no)s(des)f(that)i(Logo)f(allo)
s(cates)j(from)c(the)h(op)s(erating)g(system)g(at)g(once)150
1689 y(to)41 b Fl(n)m(um)p Fs(,)g(whic)m(h)f(m)m(ust)g(b)s(e)f(a)i(p)s
(ositiv)m(e)g(in)m(teger.)71 b(The)39 b(name)h(is)g(dotted)g(b)s
(ecause)g(bad)g(things)g(will)150 1799 y(happ)s(en)35
b(if)h(y)m(ou)h(use)f(a)g(n)m(um)m(b)s(er)f(that's)i(to)s(o)g(small)g
(or)g(to)s(o)g(large)g(for)f(y)m(our)g(computer.)59 b(The)36
b(initial)150 1909 y(v)-5 b(alue)39 b(is)f(16,000)j(for)c(most)i
(systems,)h(but)e(is)g(smaller)h(for)f(68000-based)i(Macs.)65
b(Making)39 b(it)g(larger)150 2018 y(will)32 b(sp)s(eed)f(up)f
(computations)i(\(b)m(y)g(reducing)f(the)h(n)m(um)m(b)s(er)e(of)i
(garbage)h(collections\))h(at)e(the)g(cost)h(of)150 2128
y(allo)s(cating)g(more)d(memory)g(than)h(necessary)-8
b(.)p eop end
%%Page: 66 79
TeXDict begin 66 78 bop eop end
%%Page: 67 80
TeXDict begin 67 79 bop 3659 -116 a Fs(67)150 299 y Fp(8)80
b(Con)l(trol)52 b(Structures)150 616 y Fr(8.1)68 b(Con)l(trol)150
775 y Fs(Note:)43 b(in)30 b(the)h(follo)m(wing)i(descriptions,)e(an)f
Fl(instructionlist)k Fs(can)d(b)s(e)f(a)h(list)h(or)f(a)g(w)m(ord.)42
b(In)30 b(the)h(latter)150 885 y(case,)24 b(the)d(w)m(ord)g(is)g
(parsed)f(in)m(to)i(list)g(form)e(b)s(efore)h(it)g(is)g(run.)37
b(Th)m(us,)22 b Fk(RUN)47 b(READWORD)18 b Fs(or)j Fk(RUN)47
b(READLIST)150 994 y Fs(will)33 b(w)m(ork.)47 b(The)32
b(former)g(is)h(sligh)m(tly)g(preferable)g(b)s(ecause)f(it)h(allo)m(ws)
h(for)e(a)h(con)m(tin)m(ued)h(line)e(\(with)h Fk(~)p
Fs(\))150 1104 y(that)e(includes)f(a)h(commen)m(t)g(\(with)g
Fk(;)p Fs(\))f(on)g(the)h(\014rst)e(line.)150 1272 y(A)i
Fl(tf)48 b Fs(input)30 b(m)m(ust)h(b)s(e)f(the)h(w)m(ord)f
Fk(TRUE)p Fs(,)g(the)h(w)m(ord)f Fk(FALSE)p Fs(,)g(or)g(a)h(list.)43
b(If)30 b(it's)h(a)h(list,)f(then)g(it)g(m)m(ust)g(b)s(e)150
1381 y(a)e(Logo)g(expression,)f(whic)m(h)g(will)h(b)s(e)e(ev)-5
b(aluated)30 b(to)f(pro)s(duce)e(a)h(v)-5 b(alue)29 b(that)f(m)m(ust)g
(b)s(e)g Fk(TRUE)f Fs(or)h Fk(FALSE)p Fs(.)150 1491 y(The)i
(comparisons)g(with)g Fk(TRUE)g Fs(and)f Fk(FALSE)g Fs(are)i(alw)m(a)m
(ys)h(case-insensitiv)m(e.)150 1659 y(A)h(runlist)g(can)g(consist)h(of)
g(either)g(a)f(single)h(expression)f(\(that)h(pro)s(duces)e(a)i(v)-5
b(alue\))34 b(or)f(zero)i(or)e(more)150 1768 y(instructions)d(\(that)i
(do)e(something,)h(rather)f(than)g(output)g(a)h(v)-5
b(alue\),)31 b(dep)s(ending)e(on)i(the)f(con)m(text:)390
1936 y Fk(PRINT)46 b(IFELSE)g(:X<0)h(["NEGATIVE])e(["POSITIVE])92
b(;)48 b(one)f(value)f(in)h(each)g(case)390 2045 y(REPEAT)f(4)i([PRINT)
e("A)h(PRINT)f("B])95 b(;)47 b(two)g(instructions)150
2237 y Fh(run)390 2384 y Fk(RUN)g(instructionlist)150
2552 y Fs(command)39 b(or)g(op)s(eration.)67 b(Runs)38
b(the)i(Logo)g(instructions)f(in)f(the)i(input)e(list;)44
b(outputs)39 b(if)g(the)g(list)150 2661 y(con)m(tains)32
b(an)e(expression)g(that)h(outputs.)150 2829 y(See)g([READ)m(W)m(ORD],)
i(page)e(20,)g(,)g([READLIST],)f(page)h(20,)h(.)150 3020
y Fh(runresult)390 3167 y Fk(RUNRESULT)45 b(instructionlist)150
3335 y Fs(runs)33 b(the)i(instructions)g(in)f(the)h(input;)i(outputs)d
(an)h(empt)m(y)g(list)h(if)e(those)i(instructions)e(pro)s(duce)g(no)150
3444 y(output,)g(or)g(a)g(list)g(whose)f(only)h(mem)m(b)s(er)f(is)h
(the)f(output)h(from)f(running)f(the)h(input)g(instructionlist.)150
3554 y(Useful)d(for)g(in)m(v)m(en)m(ting)i(command-or-op)s(eration)g
(con)m(trol)f(structures:)390 3722 y Fk(local)46 b("result)390
3831 y(make)h("result)e(runresult)h([something])390 3941
y(if)h(emptyp)f(:result)g([stop])390 4051 y(output)g(first)g(:result)
150 4242 y Fh(rep)s(eat)390 4389 y Fk(REPEAT)g(num)h(instructionlist)
150 4557 y Fs(command.)40 b(Runs)30 b(the)g Fl(instructionlist)j
Fs(rep)s(eatedly)-8 b(,)32 b Fl(n)m(um)d Fs(times.)150
4748 y Fh(forev)m(er)390 4895 y Fk(FOREVER)46 b(instructionlist)150
5063 y Fs(command.)c(Runs)29 b(the)i Fk(")p Fs(instructionlist)p
Fk(")g Fs(rep)s(eatedly)-8 b(,)32 b(un)m(til)f(something)g(inside)f
(the)h(instructionlist)150 5172 y(\(suc)m(h)f(as)h Fk(STOP)e
Fs(or)i Fk(THROW)p Fs(\))e(mak)m(es)i(it)g(stop.)150
5340 y(See)g([STOP],)e(page)j(69,)f(,)g(See)f([THR)m(O)m(W],)i(page)f
(69,)h(.)p eop end
%%Page: 68 81
TeXDict begin 68 80 bop 150 -116 a Fs(68)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(rep)s(coun)m(t)390 446 y Fk(REPCOUNT)150
614 y Fs(outputs)g(the)g(rep)s(etition)h(coun)m(t)g(of)f(the)h
(innermost)f(curren)m(t)g Fk(REPEAT)f Fs(or)h Fk(FOREVER)p
Fs(,)e(starting)j(from)f(1.)150 723 y(If)g(no)g Fk(REPEAT)f
Fs(or)h Fk(FOREVER)f Fs(is)h(activ)m(e,)j(outputs)d({1.)150
891 y(The)24 b(abbreviation)i Fk(#)f Fs(can)g(b)s(e)f(used)g(for)h
Fk(REPCOUNT)e Fs(unless)h(the)h Fk(REPEAT)f Fs(is)h(inside)f(the)h
(template)i(input)150 1000 y(to)k(a)g(higher)f(order)g(pro)s(cedure)f
(suc)m(h)h(as)h Fk(FOREACH)p Fs(,)d(in)i(whic)m(h)g(case)i
Fk(#)e Fs(has)g(a)h(di\013eren)m(t)g(meaning.)150 1213
y Fh(if)390 1360 y Fk(IF)47 b(tf)g(instructionlist)390
1470 y(\(IF)g(tf)g(instructionlist1)c(instructionlist2\))150
1638 y Fs(command.)69 b(If)39 b(the)h(\014rst)g(input)f(has)g(the)h(v)
-5 b(alue)41 b Fk(TRUE)p Fs(,)g(then)e Fk(IF)h Fs(runs)e(the)i(second)g
(input.)68 b(If)40 b(the)150 1747 y(\014rst)31 b(input)h(has)g(the)g(v)
-5 b(alue)33 b Fk(FALSE)p Fs(,)e(then)h Fk(IF)f Fs(do)s(es)h(nothing.)
46 b(\(If)32 b(giv)m(en)h(a)g(third)e(input,)h(IF)g(acts)i(lik)m(e)150
1857 y Fk(IFELSE)p Fs(,)29 b(as)i(describ)s(ed)e(b)s(elo)m(w.\))41
b(It)31 b(is)f(an)g(error)g(if)h(the)f(\014rst)g(input)f(is)i(not)f
(either)h Fk(TRUE)e Fs(or)i Fk(FALSE)p Fs(.)150 2024
y(F)-8 b(or)46 b(compatibilit)m(y)i(with)d(earlier)i(v)m(ersions)e(of)h
(Logo,)51 b(if)45 b(an)g Fk(IF)g Fs(instruction)h(is)f(not)h(enclosed)g
(in)150 2134 y(paren)m(theses,)32 b(but)f(the)h(\014rst)f(thing)g(on)h
(the)f(instruction)h(line)g(after)g(the)f(second)h(input)f(expression)g
(is)150 2244 y(a)37 b(literal)i(list)e(\(i.e.,)j(a)e(list)f(in)g
(square)f(brac)m(k)m(ets\),)41 b(the)c Fk(IF)f Fs(is)h(treated)h(as)f
(if)g(it)g(w)m(ere)g Fk(IFELSE)p Fs(,)g(but)g(a)150 2353
y(w)m(arning)32 b(message)h(is)e(giv)m(en.)47 b(If)31
b(this)h(ab)s(erran)m(t)f Fk(IF)g Fs(app)s(ears)h(in)f(a)h(pro)s
(cedure)f(b)s(o)s(dy)-8 b(,)31 b(the)h(w)m(arning)g(is)150
2463 y(giv)m(en)f(only)g(the)f(\014rst)g(time)h(the)g(pro)s(cedure)e
(is)h(in)m(v)m(ok)m(ed)i(in)e(eac)m(h)i(Logo)f(session.)150
2676 y Fh(ifelse)390 2823 y Fk(IFELSE)46 b(tf)h(instructionlist1)d
(instructionlist2)150 2990 y Fs(command)31 b(or)g(op)s(eration.)42
b(If)31 b(the)g(\014rst)f(input)g(has)g(the)h(v)-5 b(alue)32
b Fk(TRUE)p Fs(,)e(then)g Fk(IFELSE)g Fs(runs)f(the)i(second)150
3100 y(input.)59 b(If)36 b(the)h(\014rst)f(input)g(has)g(the)h(v)-5
b(alue)37 b Fk(FALSE)p Fs(,)g(then)g Fk(IFELSE)e Fs(runs)g(the)i(third)
f(input.)59 b Fk(IFELSE)150 3209 y Fs(outputs)30 b(a)h(v)-5
b(alue)30 b(if)h(the)f Fl(instructionlist)j Fs(con)m(tains)f(an)e
(expression)g(that)h(outputs)f(a)h(v)-5 b(alue.)150 3422
y Fh(test)390 3569 y Fk(TEST)47 b(tf)150 3737 y Fs(command.)40
b(Remem)m(b)s(ers)30 b(its)g(input,)g(whic)m(h)g(m)m(ust)g(b)s(e)f
Fk(TRUE)g Fs(or)h Fk(FALSE)p Fs(,)f(for)h(use)g(b)m(y)g(later)h
Fk(IFTRUE)d Fs(or)150 3847 y Fk(IFFALSE)i Fs(instructions.)46
b(The)32 b(e\013ect)i(of)e Fk(TEST)f Fs(is)h(lo)s(cal)i(to)f(the)f(pro)
s(cedure)f(in)h(whic)m(h)g(it)h(is)f(used;)h(an)m(y)150
3956 y(corresp)s(onding)c Fk(IFTRUE)g Fs(or)h Fk(IFFALSE)f
Fs(m)m(ust)h(b)s(e)g(in)g(the)g(same)h(pro)s(cedure)e(or)i(a)f(subpro)s
(cedure.)150 4124 y(See)h([IFF)-10 b(ALSE],)30 b(page)i(68,)f(.)150
4337 y Fh(iftrue)390 4484 y Fk(IFTRUE)46 b(instructionlist)390
4593 y(IFT)h(instructionlist)150 4761 y Fs(command.)41
b(Runs)29 b(its)i(input)f(if)g(the)h(most)g(recen)m(t)h
Fk(TEST)d Fs(instruction)h(had)g(a)h Fk(TRUE)f Fs(input.)40
b(The)30 b Fk(TEST)150 4871 y Fs(m)m(ust)g(ha)m(v)m(e)i(b)s(een)d(in)i
(the)f(same)h(pro)s(cedure)e(or)h(a)h(sup)s(erpro)s(cedure.)150
5083 y Fh(i\013alse)390 5230 y Fk(IFFALSE)46 b(instructionlist)390
5340 y(IFF)h(instructionlist)p eop end
%%Page: 69 82
TeXDict begin 69 81 bop 150 -116 a Fs(Chapter)30 b(8:)41
b(Con)m(trol)31 b(Structures)2302 b(69)150 299 y(command.)39
b(Runs)26 b(its)i(input)e(if)h(the)g(most)h(recen)m(t)g
Fk(TEST)e Fs(instruction)h(had)g(a)g Fk(FALSE)f Fs(input.)38
b(The)27 b Fk(TEST)150 408 y Fs(m)m(ust)j(ha)m(v)m(e)i(b)s(een)d(in)i
(the)f(same)h(pro)s(cedure)e(or)h(a)h(sup)s(erpro)s(cedure.)150
576 y(See)g([TEST],)e(page)i(68,)h(.)150 806 y Fh(stop)390
953 y Fk(STOP)150 1121 y Fs(command.)48 b(Ends)31 b(the)i(running)e(of)
i(the)g(pro)s(cedure)e(in)i(whic)m(h)f(it)h(app)s(ears.)47
b(Con)m(trol)34 b(is)f(returned)e(to)150 1230 y(the)g(con)m(text)i(in)e
(whic)m(h)f(that)i(pro)s(cedure)e(w)m(as)h(in)m(v)m(ok)m(ed.)44
b(The)31 b(stopp)s(ed)f(pro)s(cedure)f(do)s(es)i(not)g(output)150
1340 y(a)g(v)-5 b(alue.)150 1570 y Fh(output)390 1717
y Fk(OUTPUT)46 b(value)390 1826 y(OP)h(value)150 1994
y Fs(command.)39 b(Ends)26 b(the)h(running)f(of)h(the)g(pro)s(cedure)f
(in)h(whic)m(h)g(it)h(app)s(ears.)39 b(That)27 b(pro)s(cedure)e
(outputs)150 2104 y(the)30 b(v)-5 b(alue)31 b Fl(v)-5
b(alue)35 b Fs(to)c(the)f(con)m(text)i(in)e(whic)m(h)g(it)g(w)m(as)g
(in)m(v)m(ok)m(ed.)43 b(Don't)30 b(b)s(e)g(confused:)40
b Fk(OUTPUT)28 b Fs(itself)j(is)150 2213 y(a)g(command,)f(but)g(the)g
(pro)s(cedure)g(that)h(in)m(v)m(ok)m(es)h Fk(OUTPUT)c
Fs(is)j(an)f(op)s(eration.)150 2443 y Fh(catc)m(h)390
2590 y Fk(CATCH)46 b(tag)h(instructionlist)150 2758 y
Fs(command)31 b(or)h(op)s(eration.)45 b(Runs)30 b(its)i(second)g
(input.)43 b(Outputs)30 b(if)i(that)g Fl(instructionlist)i
Fs(outputs.)44 b(If,)150 2868 y(while)22 b(running)f(the)i
(instructionlist,)i(a)e Fk(THROW)e Fs(instruction)h(is)h(executed)g
(with)f(a)h(tag)h(equal)f(to)g(the)g(\014rst)150 2977
y(input)37 b(\(case-insensitiv)m(e)j(comparison\),)h(then)c(the)h
(running)e(of)i(the)g Fl(instructionlist)j Fs(is)c(terminated)150
3087 y(immediately)-8 b(.)59 b(In)35 b(this)h(case)h(the)f
Fk(CATCH)e Fs(outputs)i(if)g(a)g(v)-5 b(alue)36 b(input)f(is)h(giv)m
(en)h(to)g Fk(THROW)p Fs(.)56 b(The)35 b Fl(tag)150 3196
y Fs(m)m(ust)30 b(b)s(e)g(a)h(w)m(ord.)150 3364 y(If)38
b(the)g(tag)h(is)f(the)h(w)m(ord)e Fk(ERROR)p Fs(,)i(then)f(an)m(y)h
(error)e(condition)i(that)g(arises)f(during)f(the)h(running)f(of)150
3474 y(the)30 b(instructionlist)g(has)f(the)h(e\013ect)g(of)g
Fk(THROW)46 b("ERROR)28 b Fs(instead)i(of)f(prin)m(ting)h(an)f(error)g
(message)i(and)150 3583 y(returning)j(to)j(toplev)m(el.)57
b(The)35 b Fk(CATCH)f Fs(do)s(es)h(not)h(output)f(if)g(an)g(error)g(is)
g(caugh)m(t.)57 b(Also,)38 b(during)c(the)150 3693 y(running)d(of)h
(the)h(instructionlist,)h(the)f(v)-5 b(ariable)33 b Fk(ERRACT)e
Fs(is)h(temp)s(orarily)h(un)m(b)s(ound.)44 b(\(If)33
b(there)g(is)f(an)150 3802 y(error)39 b(while)h Fk(ERRACT)d
Fs(has)j(a)f(v)-5 b(alue,)43 b(that)d(v)-5 b(alue)40
b(is)f(tak)m(en)i(as)f(an)f(instructionlist)h(to)h(b)s(e)d(run)g(after)
150 3912 y(prin)m(ting)30 b(the)h(error)f(message.)42
b(T)m(ypically)31 b(the)g(v)-5 b(alue)31 b(of)f Fk(ERRACT)p
Fs(,)f(if)h(an)m(y)-8 b(,)32 b(is)e(the)h(list)g Fk([PAUSE])p
Fs(.\))150 4080 y(See)g([ERR)m(OR],)f(page)i(70,)f(,)g([ERRA)m(CT],)f
(page)h(89,)h(,)f([P)-8 b(A)m(USE],)31 b(page)g(70,)h(.)150
4310 y Fh(thro)m(w)390 4457 y Fk(THROW)46 b(tag)390 4566
y(\(THROW)g(tag)h(value\))150 4734 y Fs(command.)40 b(Must)30
b(b)s(e)f(used)g(within)h(the)g(scop)s(e)f(of)h(a)h Fk(CATCH)d
Fs(with)h(an)h(equal)g(tag.)42 b(Ends)29 b(the)h(running)150
4844 y(of)f(the)h(instructionlist)g(of)f(the)g Fk(CATCH)p
Fs(.)39 b(If)29 b Fk(THROW)f Fs(is)h(used)f(with)h(only)g(one)h(input,)
f(the)g(corresp)s(onding)150 4953 y Fk(CATCH)k Fs(do)s(es)h(not)h
(output)f(a)h(v)-5 b(alue.)53 b(If)34 b Fk(THROW)f Fs(is)h(used)g(with)
g(t)m(w)m(o)i(inputs,)f(the)f(second)h(pro)m(vides)f(an)150
5063 y(output)c(for)g(the)h Fk(CATCH)p Fs(.)150 5230
y Fk(THROW)46 b("TOPLEVEL)28 b Fs(can)j(b)s(e)e(used)h(to)h(terminate)g
(all)h(running)c(pro)s(cedures)h(and)h(in)m(teractiv)m(e)j(pauses,)150
5340 y(and)45 b(return)f(to)i(the)g(toplev)m(el)h(instruction)e
(prompt.)85 b(T)m(yping)45 b(the)h(system)f(in)m(terrupt)g(c)m
(haracter)p eop end
%%Page: 70 83
TeXDict begin 70 82 bop 150 -116 a Fs(70)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(\()p Fk(alt-S)38 b Fs(for)h(wxWidgets;)44
b(otherwise)c(normally)f Fk(control-C)e Fs(for)h(Unix,)k
Fk(control-Q)36 b Fs(for)j(DOS,)g(or)150 408 y Fk(command-period)26
b Fs(for)31 b(Mac\))g(has)g(the)f(same)h(e\013ect.)150
576 y Fk(THROW)46 b("ERROR)37 b Fs(can)h(b)s(e)g(used)f(to)i(generate)h
(an)e(error)g(condition.)65 b(If)38 b(the)g(error)g(is)g(not)h(caugh)m
(t,)i(it)150 686 y(prin)m(ts)30 b(a)h(message)h(\()p
Fk(THROW)d("ERROR)o Fs(\))i(with)f(the)h(usual)f(indication)i(of)f
(where)f(the)h(error)f(\(in)h(this)g(case)150 795 y(the)c
Fk(THROW)p Fs(\))f(o)s(ccurred.)39 b(If)27 b(a)h(second)f(input)f(is)h
(used)g(along)h(with)f(a)h(tag)g(of)f Fk(ERROR)p Fs(,)g(that)h(second)f
(input)150 905 y(is)i(used)e(as)i(the)g(text)h(of)f(the)f(error)h
(message)g(instead)g(of)g(the)g(standard)f(message.)41
b(Also,)30 b(in)e(this)h(case,)150 1015 y(the)i(lo)s(cation)h
(indicated)g(for)e(the)h(error)g(will)g(b)s(e,)f(not)h(the)g(lo)s
(cation)i(of)e(the)g Fk(THROW)p Fs(,)e(but)h(the)h(lo)s(cation)150
1124 y(where)24 b(the)g(pro)s(cedure)g(con)m(taining)i(the)e
Fk(THROW)f Fs(w)m(as)i(in)m(v)m(ok)m(ed.)40 b(This)24
b(allo)m(ws)h(user-de\014ned)e(pro)s(cedures)150 1234
y(to)31 b(generate)i(error)d(messages)i(as)f(if)f(they)h(w)m(ere)g
(primitiv)m(es.)43 b(Note:)f(in)31 b(this)f(case)i(the)f(corresp)s
(onding)150 1343 y Fk(CATCH)46 b("ERROR)o Fs(,)29 b(if)f(an)m(y)-8
b(,)30 b(do)s(es)e(not)g(output,)h(since)f(the)h(second)f(input)g(to)h
Fk(THROW)e Fs(is)h(not)g(considered)h(a)150 1453 y(return)g(v)-5
b(alue.)150 1621 y Fk(THROW)46 b("SYSTEM)24 b Fs(immediately)k(lea)m(v)
m(es)g(Logo,)g(returning)d(to)i(the)f(op)s(erating)h(system,)g(without)
f(prin)m(t-)150 1730 y(ing)37 b(the)g(usual)g(parting)g(message)h(and)f
(without)g(deleting)h(an)m(y)g(editor)f(temp)s(orary)g(\014le)g
(written)g(b)m(y)150 1840 y(EDIT.)150 2007 y(See)31 b([EDIT],)f(page)i
(61,)f(.)150 2217 y Fh(error)390 2364 y Fk(ERROR)150
2532 y Fs(outputs)c(a)g(list)h(describing)f(the)g(error)g(just)g(caugh)
m(t,)i(if)e(an)m(y)-8 b(.)40 b(If)27 b(there)g(w)m(as)h(not)f(an)h
(error)e(caugh)m(t)j(since)150 2641 y(the)i(last)h(use)f(of)g
Fk(ERROR)p Fs(,)g(the)g(empt)m(y)g(list)h(will)g(b)s(e)e(output.)43
b(The)30 b(error)h(list)h(con)m(tains)g(four)e(mem)m(b)s(ers:)150
2751 y(an)c(in)m(teger)i(co)s(de)e(corresp)s(onding)g(to)h(the)f(t)m
(yp)s(e)g(of)h(error,)g(the)f(text)i(of)e(the)g(error)g(message)i(\(as)
f(a)f(single)150 2860 y(w)m(ord)38 b(including)g(spaces\),)j(the)e
(name)f(of)g(the)h(pro)s(cedure)e(in)h(whic)m(h)g(the)g(error)g(o)s
(ccurred,)i(and)e(the)150 2970 y(instruction)30 b(line)h(on)f(whic)m(h)
g(the)h(error)f(o)s(ccurred.)150 3179 y Fh(pause)390
3326 y Fk(PAUSE)150 3494 y Fs(command)d(or)g(op)s(eration.)41
b(En)m(ters)27 b(an)g(in)m(teractiv)m(e)j(pause.)40 b(The)26
b(user)h(is)g(prompted)g(for)g(instructions,)150 3604
y(as)k(at)h(toplev)m(el,)h(but)d(with)h(a)g(prompt)f(that)i(includes)e
(the)h(name)g(of)g(the)g(pro)s(cedure)f(in)h(whic)m(h)f
Fk(PAUSE)150 3713 y Fs(w)m(as)44 b(in)m(v)m(ok)m(ed.)83
b(Lo)s(cal)45 b(v)-5 b(ariables)44 b(of)g(that)h(pro)s(cedure)d(are)j
(a)m(v)-5 b(ailable)46 b(during)c(the)i(pause.)81 b Fk(PAUSE)150
3823 y Fs(outputs)30 b(if)g(the)h(pause)f(is)g(ended)g(b)m(y)g(a)h
Fk(CONTINUE)d Fs(with)i(an)g(input.)150 3991 y(If)24
b(the)g(v)-5 b(ariable)25 b Fk(ERRACT)d Fs(exists,)k(and)e(an)g(error)g
(condition)g(o)s(ccurs,)i(the)e(con)m(ten)m(ts)i(of)e(that)h(v)-5
b(ariable)25 b(are)150 4100 y(run)e(as)i(an)g(instructionlist.)39
b(T)m(ypically)26 b Fk(ERRACT)d Fs(is)h(giv)m(en)i(the)f(v)-5
b(alue)25 b Fk([PAUSE])e Fs(so)h(that)i(an)e(in)m(teractiv)m(e)150
4210 y(pause)30 b(will)g(b)s(e)g(en)m(tered)h(in)f(the)g(ev)m(en)m(t)i
(of)e(an)h(error.)40 b(This)29 b(allo)m(ws)j(the)e(user)g(to)h(c)m(hec)
m(k)h(v)-5 b(alues)30 b(of)h(lo)s(cal)150 4319 y(v)-5
b(ariables)31 b(at)g(the)g(time)g(of)f(the)h(error.)150
4487 y(T)m(yping)25 b(the)h(system)g(quit)f(c)m(haracter)i(\()p
Fk(alt-S)e Fs(for)g(wxWidgets;)j(otherwise)e(normally)g
Fk(control-\\)d Fs(for)150 4597 y(Unix,)30 b Fk(control-W)e
Fs(for)i(DOS,)h(or)f Fk(command-comma)d Fs(for)j(Mac\))i(will)e(also)i
(en)m(ter)f(a)g(pause.)150 4764 y(See)g([ERRA)m(CT],)f(page)h(89,)h(.)
150 4974 y Fh(con)m(tin)m(ue)390 5121 y Fk(CONTINUE)46
b(value)390 5230 y(CO)h(value)390 5340 y(\(CONTINUE\))p
eop end
%%Page: 71 84
TeXDict begin 71 83 bop 150 -116 a Fs(Chapter)30 b(8:)41
b(Con)m(trol)31 b(Structures)2302 b(71)390 299 y Fk(\(CO\))150
467 y Fs(command.)42 b(Ends)30 b(the)h(curren)m(t)g(in)m(teractiv)m(e)j
(pause,)d(returning)f(to)i(the)f(con)m(text)i(of)e(the)g
Fk(PAUSE)f Fs(in)m(v)m(o-)150 576 y(cation)j(that)g(b)s(egan)f(it.)46
b(If)31 b Fk(CONTINUE)f Fs(is)i(giv)m(en)h(an)f(input,)g(that)h(v)-5
b(alue)32 b(is)g(used)f(as)i(the)f(output)f(from)150
686 y(the)g Fk(PAUSE)p Fs(.)39 b(If)30 b(not,)h(the)f
Fk(PAUSE)f Fs(do)s(es)h(not)h(output.)150 853 y(Exceptionally)-8
b(,)36 b(the)d Fk(CONTINUE)e Fs(command)h(can)i(b)s(e)e(used)g(without)
h(its)g(default)h(input)e(and)g(without)150 963 y(paren)m(theses)f(pro)
m(vided)f(that)h(nothing)f(follo)m(ws)h(it)g(on)g(the)f(instruction)h
(line.)150 1178 y Fh(w)m(ait)390 1325 y Fk(WAIT)47 b(time)150
1493 y Fs(command.)52 b(Dela)m(ys)36 b(further)d(execution)j(for)e
Fl(time)40 b Fs(60ths)35 b(of)f(a)h(second.)53 b(Also)35
b(causes)f(an)m(y)h(bu\013ered)150 1603 y(c)m(haracters)42
b(destined)f(for)f(the)h(terminal)h(to)f(b)s(e)g(prin)m(ted)f
(immediately)-8 b(.)74 b Fk(WAIT)46 b(0)41 b Fs(can)g(b)s(e)f(used)g
(to)150 1712 y(ac)m(hiev)m(e)33 b(this)d(bu\013er)f(\015ushing)g
(without)i(actually)h(w)m(aiting.)150 1928 y Fh(b)m(y)m(e)390
2075 y Fk(BYE)150 2242 y Fs(command.)40 b(Exits)31 b(from)f(Logo;)i
(returns)d(to)i(the)g(op)s(erating)f(system.)150 2458
y Fh(.ma)m(yb)s(eoutput)390 2605 y Fk(.MAYBEOUTPUT)44
b(value)j(\(special)e(form\))150 2773 y Fs(w)m(orks)35
b(lik)m(e)i Fk(OUTPUT)c Fs(except)j(that)g(the)f(expression)g(that)h
(pro)m(vides)f(the)h(input)e(v)-5 b(alue)35 b(migh)m(t)h(not,)h(in)150
2882 y(fact,)29 b(output)e(a)g(v)-5 b(alue,)28 b(in)f(whic)m(h)g(case)h
(the)f(e\013ect)i(is)e(lik)m(e)h Fk(STOP)p Fs(.)39 b(This)26
b(is)h(in)m(tended)g(for)g(use)g(in)f(con)m(trol)150
2992 y(structure)38 b(de\014nitions,)i(for)f(cases)g(in)f(whic)m(h)g(y)
m(ou)h(don't)g(kno)m(w)f(whether)g(or)h(not)f(some)h(expression)150
3101 y(pro)s(duces)29 b(a)i(v)-5 b(alue.)41 b(Example:)390
3269 y Fk(to)47 b(invoke)f(:function)g([:inputs])f(2)390
3379 y(.maybeoutput)f(apply)j(:function)e(:inputs)390
3488 y(end)390 3707 y(?)i(\(invoke)f("print)g("a)i("b)f("c\))390
3817 y(a)g(b)h(c)390 3927 y(?)f(print)g(\(invoke)f("word)g("a)h("b)g
("c\))390 4036 y(abc)150 4204 y Fs(This)40 b(is)i(an)f(alternativ)m(e)j
(to)e Fk(RUNRESULT)p Fs(.)70 b(It's)42 b(fast)g(and)e(easy)i(to)g(use,)
i(at)e(the)g(cost)g(of)f(b)s(eing)g(an)150 4313 y(exception)e(to)f
(Logo's)h(ev)-5 b(aluation)40 b(rules.)62 b(\(Ordinarily)-8
b(,)40 b(it)e(should)f(b)s(e)g(an)g(error)h(if)f(the)h(expression)150
4423 y(that's)31 b(supp)s(osed)e(to)i(pro)m(vide)f(an)g(input)g(to)h
(something)g(do)s(esn't)f(ha)m(v)m(e)i(a)e(v)-5 b(alue.\))150
4591 y(See)31 b([OUTPUT],)f(page)h(69,)h(,)e([STOP],)g(page)h(69,)g(,)g
([R)m(UNRESUL)-8 b(T],)31 b(page)g(67,)h(.)150 4806 y
Fh(goto)390 4953 y Fk(GOTO)47 b(word)150 5121 y Fs(command.)71
b(Lo)s(oks)41 b(for)f(a)h Fk(TAG)f Fs(command)g(with)g(the)h(same)g
(input)e(in)i(the)f(same)h(pro)s(cedure,)i(and)150 5230
y(con)m(tin)m(ues)c(running)e(the)i(pro)s(cedure)e(from)h(the)g(lo)s
(cation)i(of)f(that)g Fk(TAG)p Fs(.)63 b(It)39 b(is)f(meaningless)h(to)
g(use)150 5340 y Fk(GOTO)29 b Fs(outside)i(of)f(a)h(pro)s(cedure.)p
eop end
%%Page: 72 85
TeXDict begin 72 84 bop 150 -116 a Fs(72)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y Fh(tag)390 446 y Fk(TAG)47 b(quoted.word)150
614 y Fs(command.)40 b(Do)s(es)28 b(nothing.)40 b(The)27
b(input)g(m)m(ust)g(b)s(e)g(a)h(literal)h(w)m(ord)f(follo)m(wing)h(a)f
(quotation)h(mark)e(\()p Fk(")p Fs(\),)150 723 y(not)k(the)f(result)g
(of)h(a)g(computation.)41 b(T)-8 b(ags)32 b(are)e(used)g(b)m(y)g(the)h
Fk(GOTO)e Fs(command.)150 935 y Fh(ignore)390 1082 y
Fk(IGNORE)46 b(value)g(\(library)g(procedure\))150 1250
y Fs(command.)61 b(Do)s(es)38 b(nothing.)61 b(Used)37
b(when)f(an)h(expression)g(is)g(ev)-5 b(aluated)39 b(for)e(a)g(side)g
(e\013ect)i(and)e(its)150 1359 y(actual)32 b(v)-5 b(alue)31
b(is)f(unimp)s(ortan)m(t.)150 1571 y Fh(`)390 1718 y
Fk(`)47 b(list)g(\(library)f(procedure\))150 1886 y Fs(outputs)20
b(a)h(list)h(equal)f(to)g(its)h(input)d(but)h(with)h(certain)g
(substitutions.)37 b(If)21 b(a)g(mem)m(b)s(er)f(of)h(the)g(input)f
(list)h(is)150 1996 y(the)26 b(w)m(ord)f(`)p Fk(,)p Fs(')h(\(comma\))i
(then)d(the)h(follo)m(wing)h(mem)m(b)s(er)f(should)e(b)s(e)i(an)f
(instructionlist)i(that)f(pro)s(duces)150 2105 y(an)34
b(output)h(when)e(run.)52 b(That)34 b(output)g(v)-5 b(alue)35
b(replaces)h(the)f(comma)g(and)f(the)h(instructionlist.)53
b(If)35 b(a)150 2215 y(mem)m(b)s(er)26 b(of)g(the)h(input)f(list)h(is)f
(the)h(w)m(ord)f(`)p Fk(,@)p Fs(')g(\(comma)i(atsign\))f(then)g(the)f
(follo)m(wing)i(mem)m(b)s(er)e(should)150 2324 y(b)s(e)f(an)i
(instructionlist)f(that)h(outputs)f(a)g(list)h(when)e(run.)38
b(The)26 b(mem)m(b)s(ers)f(of)h(that)h(list)g(replace)g(the)f(`)p
Fk(,@)p Fs(')150 2434 y(and)k(the)g(instructionlist.)42
b(Example:)390 2602 y Fk(show)47 b(`[foo)f(baz)h(,[bf)g([a)g(b)g(c]])g
(garply)f(,@[bf)h([a)g(b)g(c]]])150 2769 y Fs(will)31
b(prin)m(t)390 2937 y Fk([foo)47 b(baz)g([b)g(c])g(garply)f(b)h(c])150
3105 y Fs(A)34 b(w)m(ord)g(starting)h(with)f(`)p Fk(,)p
Fs(')g(or)g(`)p Fk(,@)p Fs(')g(is)g(treated)h(as)g(if)f(the)g(rest)g
(of)h(the)f(w)m(ord)g(w)m(ere)g(a)h(one-w)m(ord)f(list,)150
3214 y(e.g.,)e(`)p Fk(,:foo)p Fs(')d(is)i(equiv)-5 b(alen)m(t)32
b(to)f(`)p Fk(,[:Foo])p Fs('.)150 3382 y(A)i(w)m(ord)g(starting)h(with)
f(`)p Fk(",)p Fs(')g(\(quote)i(comma\))f(or)f(`)p Fk(:,)p
Fs(')g(\(colon)i(comma\))f(b)s(ecomes)g(a)f(w)m(ord)g(starting)150
3492 y(with)28 b(`)p Fk(")p Fs(')g(or)h(`)p Fk(:)p Fs(')f(but)f(with)h
(the)h(result)f(of)g(running)f(the)h(substitution)g(\(or)h(its)f
(\014rst)g(w)m(ord,)g(if)h(the)f(result)150 3601 y(is)i(a)h(list\))h
(replacing)f(what)f(comes)h(after)g(the)g(comma.)150
3769 y(Bac)m(kquotes)i(can)d(b)s(e)g(nested.)41 b(Substitution)30
b(is)g(done)h(only)f(for)h(commas)g(at)g(the)g(same)f(depth)g(as)h(the)
150 3879 y(bac)m(kquote)h(in)e(whic)m(h)g(they)h(are)f(found:)390
4046 y Fk(?)47 b(show)g(`[a)g(`[b)g(,[1+2])f(,[foo)g(,[1+3])g(d])i(e])f
(f])390 4156 y([a)g(`)h([b)f(,)g([1+2])g(,)g([foo)g(4)g(d])g(e])h(f])
390 4375 y(?make)e("name1)g("x)390 4485 y(?make)g("name2)g("y)390
4594 y(?)h(show)g(`[a)g(`[b)g(,:,:name1)e(,",:name2)g(d])j(e])390
4704 y([a)f(`)h([b)f(,)g([:x])g(,)g(["y])g(d])g(e])150
4916 y Fh(for)390 5063 y Fk(FOR)g(forcontrol)e(instructionlist)f
(\(library)h(procedure\))150 5230 y Fs(command.)60 b(The)37
b(\014rst)f(input)g(m)m(ust)h(b)s(e)f(a)i(list)f(con)m(taining)i(three)
e(or)g(four)f(mem)m(b)s(ers:)54 b(\(1\))38 b(a)f(w)m(ord,)150
5340 y(whic)m(h)24 b(will)g(b)s(e)f(used)h(as)g(the)g(name)g(of)g(a)h
(lo)s(cal)g(v)-5 b(ariable;)27 b(\(2\))e(a)g(w)m(ord)e(or)h(list)h
(that)g(will)f(b)s(e)f(ev)-5 b(aluated)26 b(as)p eop
end
%%Page: 73 86
TeXDict begin 73 85 bop 150 -116 a Fs(Chapter)30 b(8:)41
b(Con)m(trol)31 b(Structures)2302 b(73)150 299 y(b)m(y)26
b Fk(RUN)f Fs(to)i(determine)g(a)f(n)m(um)m(b)s(er,)g(the)g(starting)h
(v)-5 b(alue)27 b(of)f(the)h(v)-5 b(ariable;)28 b(\(3\))g(a)e(w)m(ord)g
(or)g(list)h(that)g(will)150 408 y(b)s(e)33 b(ev)-5 b(aluated)34
b(to)g(determine)g(a)f(n)m(um)m(b)s(er,)g(the)h(limit)g(v)-5
b(alue)34 b(of)f(the)g(v)-5 b(ariable;)36 b(\(4\))f(an)e(optional)h(w)m
(ord)150 518 y(or)g(list)g(that)h(will)f(b)s(e)f(ev)-5
b(aluated)35 b(to)g(determine)f(the)g(step)g(size.)52
b(If)34 b(the)g(fourth)f(mem)m(b)s(er)g(is)h(missing,)150
628 y(the)i(step)f(size)i(will)f(b)s(e)f(1)h(or)f({1)i(dep)s(ending)d
(on)h(whether)g(the)h(limit)g(v)-5 b(alue)36 b(is)g(greater)h(than)e
(or)h(less)150 737 y(than)30 b(the)h(starting)g(v)-5
b(alue,)31 b(resp)s(ectiv)m(ely)-8 b(.)150 905 y(The)44
b(second)g(input)f(is)h(an)g(instructionlist.)83 b(The)44
b(e\013ect)h(of)g Fk(FOR)e Fs(is)h(to)h(run)d(that)j(instructionlist)
150 1015 y(rep)s(eatedly)-8 b(,)26 b(assigning)e(a)f(new)g(v)-5
b(alue)24 b(to)g(the)f(con)m(trol)i(v)-5 b(ariable)24
b(\(the)g(one)g(named)e(b)m(y)i(the)f(\014rst)g(mem)m(b)s(er)150
1124 y(of)29 b(the)g Fl(forcon)m(trol)k Fs(list\))d(eac)m(h)f(time.)41
b(First)29 b(the)g(starting)g(v)-5 b(alue)29 b(is)g(assigned)g(to)g
(the)g(con)m(trol)h(v)-5 b(ariable.)150 1234 y(Then)29
b(the)h(v)-5 b(alue)31 b(is)f(compared)g(to)h(the)f(limit)h(v)-5
b(alue.)41 b Fk(FOR)29 b Fs(is)h(complete)i(when)d(the)h(sign)g(of)g
Fk(\(current)150 1343 y(-)g(limit\))i Fs(is)h(the)g(same)h(as)g(the)f
(sign)g(of)h(the)f(step)h(size.)50 b(\(If)33 b(no)g(explicit)i(step)e
(size)i(is)e(pro)m(vided,)h(the)150 1453 y(instructionlist)c(is)g(alw)m
(a)m(ys)g(run)e(at)j(least)f(once.)41 b(An)29 b(explicit)i(step)f(size)
g(can)f(lead)h(to)h(a)e(zero-trip)i Fk(FOR)p Fs(,)150
1562 y(e.g.,)j Fk(FOR)47 b([I)g(1)g(0)h(1])f(...)p Fs(\).)e(Otherwise,)
32 b(the)g(instructionlist)h(is)e(run,)h(then)f(the)h(step)g(is)g
(added)f(to)150 1672 y(the)g(curren)m(t)f(v)-5 b(alue)31
b(of)f(the)h(con)m(trol)g(v)-5 b(ariable)32 b(and)d(F)m(OR)i(returns)e
(to)i(the)g(comparison)g(step.)390 1840 y Fk(?)47 b(for)g([i)h(2)f(7)g
(1.5])g([print)f(:i])390 1949 y(2)390 2059 y(3.5)390
2169 y(5)390 2278 y(6.5)390 2388 y(?)150 2555 y Fs(See)31
b([R)m(UN],)g(page)h(67,)f(.)150 2760 y Fh(do.while)390
2907 y Fk(DO.WHILE)46 b(instructionlist)d(tfexpression)i(\(library)g
(procedure\))150 3074 y Fs(command.)55 b(Rep)s(eatedly)36
b(ev)-5 b(aluates)36 b(the)g Fl(instructionlist)i Fs(as)d(long)h(as)f
(the)g(ev)-5 b(aluated)37 b Fl(tfexpres-sion)150 3184
y Fs(remains)f Fk(TRUE)p Fs(.)57 b(Ev)-5 b(aluates)38
b(the)e(\014rst)g(input)f(\014rst,)j(so)e(the)h Fl(instructionlist)i
Fs(is)d(alw)m(a)m(ys)i(run)d(at)i(least)150 3293 y(once.)60
b(The)36 b Fl(tfexpression)h Fs(m)m(ust)f(b)s(e)g(an)h(expressionlist)g
(whose)f(v)-5 b(alue)37 b(when)f(ev)-5 b(aluated)38 b(is)e
Fk(TRUE)g Fs(or)150 3403 y Fk(FALSE)p Fs(.)150 3607 y
Fh(while)390 3754 y Fk(WHILE)46 b(tfexpression)f(instructionlist)e
(\(library)j(procedure\))150 3922 y Fs(command.)55 b(Rep)s(eatedly)36
b(ev)-5 b(aluates)36 b(the)g Fl(instructionlist)i Fs(as)d(long)h(as)f
(the)g(ev)-5 b(aluated)37 b Fl(tfexpres-sion)150 4032
y Fs(remains)28 b Fk(TRUE)p Fs(.)39 b(Ev)-5 b(aluates)30
b(the)f(\014rst)f(input)g(\014rst,)g(so)h(the)g Fl(instructionlist)j
Fs(ma)m(y)d(nev)m(er)g(b)s(e)f(run)f(at)j(all.)150 4141
y(The)g Fl(tfexpression)g Fs(m)m(ust)g(b)s(e)g(an)g(expressionlist)h
(whose)f(v)-5 b(alue)31 b(when)f(ev)-5 b(aluated)31 b(is)g
Fk(TRUE)e Fs(or)h Fk(FALSE)p Fs(.)150 4345 y Fh(do.un)m(til)390
4492 y Fk(DO.UNTIL)46 b(instructionlist)d(tfexpression)i(\(library)g
(procedure\))150 4660 y Fs(command.)55 b(Rep)s(eatedly)36
b(ev)-5 b(aluates)36 b(the)g Fl(instructionlist)i Fs(as)d(long)h(as)f
(the)g(ev)-5 b(aluated)37 b Fl(tfexpres-sion)150 4770
y Fs(remains)c Fk(FALSE)p Fs(.)48 b(Ev)-5 b(aluates)35
b(the)e(\014rst)g(input)f(\014rst,)i(so)g(the)f Fl(instructionlist)j
Fs(is)e(alw)m(a)m(ys)h(run)d(at)i(least)150 4879 y(once.)60
b(The)36 b Fl(tfexpression)h Fs(m)m(ust)f(b)s(e)g(an)h(expressionlist)g
(whose)f(v)-5 b(alue)37 b(when)f(ev)-5 b(aluated)38 b(is)e
Fk(TRUE)g Fs(or)150 4989 y Fk(FALSE)p Fs(.)150 5193 y
Fh(un)m(til)390 5340 y Fk(UNTIL)46 b(tfexpression)f(instructionlist)e
(\(library)j(procedure\))p eop end
%%Page: 74 87
TeXDict begin 74 86 bop 150 -116 a Fs(74)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(command.)55 b(Rep)s(eatedly)36
b(ev)-5 b(aluates)36 b(the)g Fl(instructionlist)i Fs(as)d(long)h(as)f
(the)g(ev)-5 b(aluated)37 b Fl(tfexpres-sion)150 408
y Fs(remains)25 b Fk(FALSE)p Fs(.)38 b(Ev)-5 b(aluates)26
b(the)g(\014rst)e(input)h(\014rst,)g(so)h(the)g Fl(instructionlist)i
Fs(ma)m(y)d(nev)m(er)h(b)s(e)f(run)f(at)i(all.)150 518
y(The)k Fl(tfexpression)g Fs(m)m(ust)g(b)s(e)g(an)g(expressionlist)h
(whose)f(v)-5 b(alue)31 b(when)f(ev)-5 b(aluated)31 b(is)g
Fk(TRUE)e Fs(or)h Fk(FALSE)p Fs(.)150 712 y Fh(case)390
859 y Fk(CASE)47 b(value)f(clauses)g(\(library)f(procedure\))150
1026 y Fs(command)38 b(or)f(op)s(eration.)64 b(The)37
b(second)h(input)f(is)h(a)g(list)g(of)g(lists)h(\(clauses\);)k(eac)m(h)
c(clause)f(is)g(a)g(list)150 1136 y(whose)31 b(\014rst)f(elemen)m(t)j
(is)e(either)h(a)f(list)h(of)f(v)-5 b(alues)32 b(or)f(the)g(w)m(ord)g
Fk(ELSE)f Fs(and)g(whose)h(but\014rst)f(is)h(a)h(Logo)150
1246 y(expression)h(or)g(instruction.)50 b Fk(CASE)32
b Fs(examines)i(the)f(clauses)h(in)f(order.)49 b(If)33
b(a)h(clause)g(b)s(egins)f(with)g(the)150 1355 y(w)m(ord)39
b Fk(ELSE)f Fs(\(upp)s(er)f(or)i(lo)m(w)m(er)i(case\),)i(then)c(the)g
(but\014rst)f(of)h(that)h(clause)g(is)f(ev)-5 b(aluated)41
b(and)d Fk(CASE)150 1465 y Fs(outputs)c(its)g(v)-5 b(alue,)36
b(if)f(an)m(y)-8 b(.)53 b(If)34 b(the)g(\014rst)g(input)f(to)i(CASE)e
(is)i(a)f(mem)m(b)s(er)g(of)g(the)h(\014rst)e(elemen)m(t)j(of)f(a)150
1574 y(clause,)j(then)c(the)i(but\014rst)e(of)h(that)h(clause)g(is)f
(ev)-5 b(aluated)37 b(and)d Fk(CASE)h Fs(outputs)f(its)i(v)-5
b(alue,)37 b(if)e(an)m(y)-8 b(.)56 b(If)150 1684 y(neither)38
b(of)g(these)g(conditions)h(is)f(met,)i(then)e Fk(CASE)f
Fs(go)s(es)h(on)g(to)h(the)f(next)g(clause.)64 b(If)37
b(no)h(clause)h(is)150 1794 y(satis\014ed,)31 b Fk(CASE)e
Fs(do)s(es)h(nothing.)41 b(Example:)390 1961 y Fk(to)47
b(vowelp)f(:letter)390 2071 y(output)g(case)h(:letter)f([)h([[a)g(e)g
(i)h(o)f(u])g("true])g([else)f("false])g(])390 2180 y(end)150
2374 y Fh(cond)390 2521 y Fk(COND)h(clauses)e(\(library)h(procedure\))
150 2689 y Fs(command)39 b(or)g(op)s(eration.)68 b(The)38
b(input)h(is)g(a)g(list)h(of)f(lists)h(\(clauses\);)45
b(eac)m(h)c(clause)f(is)f(a)g(list)h(whose)150 2798 y(\014rst)33
b(elemen)m(t)i(is)f(either)g(an)g(expression)f(whose)h(v)-5
b(alue)34 b(is)g Fk(TRUE)f Fs(or)g Fk(FALSE)p Fs(,)h(or)g(the)f(w)m
(ord)h Fk(ELSE)p Fs(,)g(and)150 2908 y(whose)f(but\014rst)g(is)g(a)h
(Logo)h(expression)e(or)h(instruction.)50 b Fk(COND)33
b Fs(examines)h(the)g(clauses)g(in)f(order.)50 b(If)150
3018 y(a)33 b(clause)h(b)s(egins)e(with)h(the)g(w)m(ord)g
Fk(ELSE)f Fs(\(upp)s(er)f(or)i(lo)m(w)m(er)h(case\),)h(then)e(the)g
(but\014rst)e(of)j(that)f(clause)150 3127 y(is)c(ev)-5
b(aluated)30 b(and)e Fk(CASE)f Fs(outputs)i(its)g(v)-5
b(alue,)30 b(if)e(an)m(y)-8 b(.)41 b(Otherwise,)29 b(the)g(\014rst)f
(elemen)m(t)i(of)f(the)g(clause)h(is)150 3237 y(ev)-5
b(aluated;)30 b(the)f(resulting)f(v)-5 b(alue)29 b(m)m(ust)f(b)s(e)g
Fk(TRUE)f Fs(or)h Fk(FALSE)p Fs(.)39 b(If)28 b(it's)h
Fk(TRUE)p Fs(,)e(then)h(the)h(but\014rst)e(of)h(that)150
3346 y(clause)h(is)f(ev)-5 b(aluated)30 b(and)d Fk(COND)h
Fs(outputs)f(its)i(v)-5 b(alue,)29 b(if)g(an)m(y)-8 b(.)40
b(If)28 b(the)h(v)-5 b(alue)28 b(is)h Fk(FALSE)p Fs(,)e(then)h
Fk(COND)f Fs(go)s(es)150 3456 y(on)j(to)h(the)g(next)f(clause.)42
b(If)30 b(no)g(clause)h(is)g(satis\014ed,)g Fk(COND)e
Fs(do)s(es)h(nothing.)40 b(Example:)390 3624 y Fk(to)47
b(evens)g(:numbers)e(;)j(select)e(even)g(numbers)g(from)h(a)g(list)390
3733 y(op)g(cond)g([)g([[emptyp)f(:numbers])f([]])867
3843 y([[evenp)h(first)g(:numbers])g(;)h(assuming)f(EVENP)g(is)h
(defined)915 3952 y(fput)g(first)f(:numbers)g(evens)g(butfirst)f
(:numbers])867 4062 y([else)i(evens)f(butfirst)g(:numbers])f(])390
4172 y(end)150 4407 y Fr(8.2)68 b(T)-11 b(emplate-based)46
b(Iteration)150 4566 y Fs(The)28 b(pro)s(cedures)e(in)i(this)g(section)
h(are)f(iteration)i(to)s(ols)f(based)f(on)g(the)g(idea)g(of)g(a)h
Fl(template.)41 b Fs(This)27 b(is)i(a)150 4676 y(generalization)j(of)d
(an)g(instruction)g(list)h(or)f(an)f(expression)h(list)h(in)f(whic)m(h)
f Fl(slots)34 b Fs(are)29 b(pro)m(vided)g(for)g(the)150
4785 y(to)s(ol)i(to)g(insert)g(v)-5 b(arying)30 b(data.)42
b(F)-8 b(our)30 b(di\013eren)m(t)h(forms)f(of)g(template)i(can)f(b)s(e)
f(used.)150 4953 y(The)25 b(most)g(commonly)h(used)f(form)f(for)h(a)h
(template)h(is)e(`)p Fk(explicit-slot)p Fs(')d(form,)k(or)f(`)p
Fk(question)k(mark)p Fs(')150 5063 y(form.)40 b(Example:)390
5230 y Fk(?)47 b(show)g(map)g([?)g(*)h(?])f([2)g(3)g(4)h(5])390
5340 y([4)f(9)h(16)f(25])p eop end
%%Page: 75 88
TeXDict begin 75 87 bop 150 -116 a Fs(Chapter)30 b(8:)41
b(Con)m(trol)31 b(Structures)2302 b(75)390 299 y Fk(?)150
467 y Fs(In)32 b(this)h(example,)i(the)e Fk(MAP)f Fs(to)s(ol)i(ev)-5
b(aluated)34 b(the)f(template)i Fk([?)30 b(*)g(?])i Fs(rep)s(eatedly)-8
b(,)35 b(with)d(eac)m(h)j(of)e(the)150 576 y(mem)m(b)s(ers)g(of)h(the)g
(data)h(list)f Fk([2)c(3)g(4)g(5])k Fs(substituted)f(in)g(turn)g(for)h
(the)g(question)g(marks.)51 b(The)34 b(same)150 686 y(v)-5
b(alue)36 b(w)m(as)f(used)g(for)g(ev)m(ery)g(question)h(mark)f(in)g(a)g
(giv)m(en)h(ev)-5 b(aluation.)57 b(Some)35 b(to)s(ols)h(allo)m(w)h(for)
e(more)150 795 y(than)f(one)h(datum)f(to)h(b)s(e)f(substituted)g(in)g
(parallel;)k(in)d(these)g(cases)g(the)g(slots)g(are)g(indicated)g(b)m
(y)g Fk(?1)150 905 y Fs(for)30 b(the)h(\014rst)e(datum,)h
Fk(?2)g Fs(for)g(the)h(second,)g(and)e(so)i(on:)390 1073
y Fk(?)47 b(show)g(\(map)g([\(word)f(?1)h(?2)g(?1\)])g([a)g(b)g(c])h
([d)f(e)g(f]\))390 1182 y([ada)g(beb)g(cfc])390 1292
y(?)150 1460 y Fs(If)32 b(the)h(template)g(wishes)f(to)h(compute)g(the)
g(datum)f(n)m(um)m(b)s(er,)g(the)g(form)g Fk(\(?)e(1\))i
Fs(is)g(equiv)-5 b(alen)m(t)34 b(to)f Fk(?1)p Fs(,)150
1569 y(so)g Fk(\(?)c(?1\))j Fs(means)g(the)h(datum)f(whose)g(n)m(um)m
(b)s(er)f(is)i(giv)m(en)g(in)f(datum)g(n)m(um)m(b)s(er)f(1.)48
b(Some)32 b(to)s(ols)h(allo)m(w)150 1679 y(additional)e(slot)h
(designations,)f(as)g(sho)m(wn)e(in)h(the)h(individual)f(descriptions.)
150 1846 y(The)39 b(second)g(form)f(of)i(template)g(is)f(the)g(`)p
Fk(named-procedure)p Fs(')d(form.)66 b(If)39 b(the)g(template)i(is)e(a)
g(w)m(ord)150 1956 y(rather)g(than)g(a)g(list,)j(it)d(is)g(tak)m(en)i
(as)e(the)g(name)g(of)g(a)h(pro)s(cedure.)65 b(That)39
b(pro)s(cedure)f(m)m(ust)g(accept)150 2066 y(a)h(n)m(um)m(b)s(er)f(of)g
(inputs)g(equal)h(to)h(the)f(n)m(um)m(b)s(er)e(of)i(parallel)h(data)f
(slots)h(pro)m(vided)e(b)m(y)h(the)g(to)s(ol;)44 b(the)150
2175 y(pro)s(cedure)27 b(is)h(applied)g(to)g(all)h(of)g(the)f(a)m(v)-5
b(ailable)30 b(data)f(in)f(order.)39 b(That)28 b(is,)h(if)f(data)g
Fk(?1)g Fs(through)f Fk(?3)h Fs(are)150 2285 y(a)m(v)-5
b(ailable,)33 b(the)e(template)g Fk("PROC)e Fs(is)i(equiv)-5
b(alen)m(t)32 b(to)f Fk([PROC)46 b(?1)h(?2)g(?3])p Fs(.)390
2452 y Fk(?)g(show)g(\(map)g("word)f([a)h(b)h(c])f([d)g(e)h(f]\))390
2562 y([ad)f(be)g(cf])390 2672 y(?)390 2891 y(to)g(dotprod)f(:a)h(:b)g
(;)h(vector)e(dot)h(product)390 3000 y(op)g(apply)g("sum)f(\(map)h
("product)e(:a)j(:b\))390 3110 y(end)150 3278 y Fs(The)32
b(third)f(form)h(of)g(template)i(is)e(`)p Fk(named-slot)p
Fs(')e(or)i(`)p Fk(lambda)p Fs(')f(form.)45 b(This)32
b(form)g(is)g(indicated)g(b)m(y)h(a)150 3387 y(template)26
b(list)g(con)m(taining)g(more)g(than)e(one)i(mem)m(b)s(er,)f(whose)g
(\014rst)f(mem)m(b)s(er)h(is)g(itself)g(a)h(list.)39
b(The)25 b(\014rst)150 3497 y(mem)m(b)s(er)30 b(is)g(tak)m(en)h(as)f(a)
h(list)g(of)f(names;)h(lo)s(cal)g(v)-5 b(ariables)31
b(are)f(created)i(with)e(those)g(names)g(and)g(giv)m(en)150
3606 y(the)e(a)m(v)-5 b(ailable)30 b(data)e(in)f(order)h(as)f(their)h
(v)-5 b(alues.)40 b(The)27 b(n)m(um)m(b)s(er)g(of)g(names)h(m)m(ust)f
(equal)i(the)e(n)m(um)m(b)s(er)g(of)150 3716 y(a)m(v)-5
b(ailable)33 b(data.)42 b(This)30 b(form)g(is)h(needed)f(primarily)g
(when)g(one)h(iteration)h(to)s(ol)f(m)m(ust)g(b)s(e)f(used)f(within)150
3826 y(the)f(template)i(list)e(of)g(another,)h(and)f(the)g
Fk(?)g Fs(notation)h(w)m(ould)f(b)s(e)f(am)m(biguous)h(in)g(the)g
(inner)f(template.)150 3935 y(Example:)390 4103 y Fk(to)47
b(matmul)f(:m1)h(:m2)g([:tm2)f(transpose)g(:m2])g(;)i(multiply)d(two)i
(matrices)390 4213 y(output)f(map)h([[row])f(map)h([[col])f(dotprod)g
(:row)h(:col])f(:tm2])g(:m1)390 4322 y(end)150 4490 y
Fs(The)38 b(fourth)g(form)h(is)g(`)p Fk(procedure)28
b(text)p Fs(')38 b(form,)j(a)e(v)-5 b(arian)m(t)40 b(of)f(lam)m(b)s(da)
g(form.)66 b(In)38 b(this)h(form,)i(the)150 4599 y(template)30
b(list)f(con)m(tains)h(at)f(least)g(t)m(w)m(o)h(mem)m(b)s(ers,)e(all)i
(of)e(whic)m(h)g(are)h(lists.)41 b(This)27 b(is)i(the)f(form)g(used)g
(b)m(y)150 4709 y(the)23 b Fk(DEFINE)f Fs(and)g Fk(TEXT)g
Fs(primitiv)m(es,)j(and)e Fk(APPLY)e Fs(accepts)k(it)e(so)h(that)f(the)
h(text)g(of)f(a)g(de\014ned)f(pro)s(cedure)150 4819 y(can)31
b(b)s(e)e(used)h(as)h(a)f(template.)150 4986 y(Note:)46
b(The)31 b(fourth)h(form)f(of)i(template)g(is)g(in)m(terpreted)f
(di\013eren)m(tly)h(from)f(the)g(others,)h(in)f(that)h(Logo)150
5096 y(considers)f(it)g(to)h(b)s(e)e(an)h(indep)s(enden)m(t)e
(de\014ned)h(pro)s(cedure)g(for)g(the)h(purp)s(oses)e(of)i
Fk(OUTPUT)f Fs(and)g Fk(STOP)p Fs(.)150 5205 y(F)-8 b(or)31
b(example,)g(the)g(follo)m(wing)h(t)m(w)m(o)g(instructions)e(are)h
(iden)m(tical:)p eop end
%%Page: 76 89
TeXDict begin 76 88 bop 150 -116 a Fs(76)2551 b(BERKELEY)30
b(LOGO)g(6.1)390 299 y Fk(?)47 b(print)g(apply)f([[x])h(:x+3])f([5])390
408 y(8)390 518 y(?)h(print)g(apply)f([[x])h([output)f(:x+3]])g([5])390
628 y(8)150 795 y Fs(although)41 b(the)g(\014rst)f(instruction)g(is)h
(in)f(named-slot)i(form)e(and)g(the)h(second)g(is)f(in)h(pro)s
(cedure-text)150 905 y(form.)55 b(The)34 b(named-slot)i(form)f(can)h(b)
s(e)e(understo)s(o)s(d)g(as)h(telling)i(Logo)f(to)g(ev)-5
b(aluate)37 b(the)e(expression)150 1015 y Fk(:x+3)f Fs(in)h(place)h(of)
f(the)g(en)m(tire)i(in)m(v)m(o)s(cation)g(of)e(apply)-8
b(,)37 b(with)d(the)i(v)-5 b(ariable)36 b Fk(x)e Fs(temp)s(orarily)i
(giv)m(en)g(the)150 1124 y(v)-5 b(alue)31 b Fk(5)p Fs(.)40
b(The)30 b(pro)s(cedure-text)h(form)f(can)g(b)s(e)g(understo)s(o)s(d)f
(as)h(in)m(v)m(oking)i(the)e(pro)s(cedure)390 1292 y
Fk(to)47 b(foo)g(:x)390 1401 y(output)f(:x+3)390 1511
y(end)150 1679 y Fs(with)29 b(input)g Fk(5)p Fs(,)h(but)f(without)g
(actually)j(giving)e(the)g(pro)s(cedure)f(a)h(name.)40
b(If)29 b(the)h(use)g(of)f Fk(OUTPUT)f Fs(w)m(ere)150
1788 y(in)m(terc)m(hanged)k(in)e(these)g(t)m(w)m(o)i(examples,)f(w)m
(e'd)g(get)g(errors:)390 1956 y Fk(?)47 b(print)g(apply)f([[x])h
(output)f(:x+3])g([5])390 2066 y(Can)h(only)g(use)f(output)h(inside)f
(a)h(procedure)390 2175 y(?)g(print)g(apply)f([[x])h([:x+3]])f([5])390
2285 y(You)h(don't)f(say)h(what)g(to)g(do)g(with)g(8)150
2452 y Fs(The)41 b(named-slot)g(form)g(can)g(b)s(e)g(used)f(with)h
Fk(STOP)e Fs(or)j Fk(OUTPUT)d Fs(inside)i(a)g(pro)s(cedure,)i(to)f
(stop)f(the)150 2562 y(enclosing)31 b(pro)s(cedure.)150
2730 y(The)g(follo)m(wing)j(iteration)f(to)s(ols)g(are)f(extended)g(v)m
(ersions)g(of)g(the)g(ones)g(in)g(App)s(endix)e(B)i(of)g(the)h(b)s(o)s
(ok)150 2839 y Fl(Computer)h(Science)i(Logo)h(St)m(yle,)g(V)-8
b(olume)37 b(3:)51 b(Adv)-5 b(anced)35 b(T)-8 b(opics)39
b Fs(b)m(y)c(Brian)h(Harv)m(ey)g([MIT)f(Press,)150 2949
y(1987].)43 b(The)30 b(extensions)g(are)h(primarily)f(to)h(allo)m(w)h
(for)e(v)-5 b(ariable)31 b(n)m(um)m(b)s(ers)e(of)i(inputs.)150
3212 y Fh(apply)390 3359 y Fk(APPLY)46 b(template)g(inputlist)150
3527 y Fs(command)33 b(or)g(op)s(eration.)49 b(Runs)31
b(the)i Fl(template)p Fs(,)j(\014lling)d(its)g(slots)h(with)e(the)i
(mem)m(b)s(ers)e(of)h Fl(inputlist.)150 3636 y Fs(The)26
b(n)m(um)m(b)s(er)e(of)i(mem)m(b)s(ers)g(in)f Fl(inputlist)j
Fs(m)m(ust)e(b)s(e)g(an)g(acceptable)i(n)m(um)m(b)s(er)c(of)j(slots)f
(for)g Fl(template)p Fs(.)41 b(It)150 3746 y(is)31 b(illegal)h(to)g
(apply)e(the)h(primitiv)m(e)g Fk(TO)f Fs(as)h(a)f(template,)j(but)d(an)
m(ything)h(else)g(is)f(ok)-5 b(a)m(y)d(.)43 b Fk(APPLY)29
b Fs(outputs)150 3856 y(what)h Fl(template)37 b Fs(outputs,)30
b(if)h(an)m(ything.)150 4023 y(See)g([TO],)f(page)h(49,)h(.)150
4286 y Fh(in)m(v)m(ok)m(e)390 4433 y Fk(INVOKE)46 b(template)g(input)g
(\(library)g(procedure\))390 4543 y(\(INVOKE)g(template)f(input1)h
(input2)h(...\))150 4711 y Fs(command)28 b(or)h(op)s(eration.)41
b(Exactly)29 b(lik)m(e)h Fk(APPLY)e Fs(except)h(that)g(the)g(inputs)f
(are)h(pro)m(vided)f(as)h(separate)150 4820 y(expressions)h(rather)g
(than)g(in)g(a)h(list.)150 5083 y Fh(foreac)m(h)390 5230
y Fk(FOREACH)46 b(data)g(template)g(\(library)g(procedure\))390
5340 y(\(FOREACH)g(data1)g(data2)g(...)h(template\))p
eop end
%%Page: 77 90
TeXDict begin 77 89 bop 150 -116 a Fs(Chapter)30 b(8:)41
b(Con)m(trol)31 b(Structures)2302 b(77)150 299 y(command.)40
b(Ev)-5 b(aluates)28 b(the)g Fl(template)35 b Fs(list)28
b(rep)s(eatedly)-8 b(,)29 b(once)g(for)e(eac)m(h)i(mem)m(b)s(er)f(of)f
(the)h Fl(data)h Fs(list.)40 b(If)150 408 y(more)28 b(than)f(one)h
Fl(data)g Fs(list)h(are)f(giv)m(en,)h(eac)m(h)g(of)f(them)g(m)m(ust)f
(b)s(e)g(the)h(same)g(length.)40 b(\(The)28 b Fl(data)g
Fs(inputs)150 518 y(can)j(b)s(e)e(w)m(ords,)i(in)f(whic)m(h)g(case)h
(the)g(template)g(is)g(ev)-5 b(aluated)31 b(once)h(for)e(eac)m(h)h(c)m
(haracter.\))150 686 y(In)26 b(a)h(template,)i(the)e(sym)m(b)s(ol)f
Fk(?REST)f Fs(represen)m(ts)i(the)g(p)s(ortion)f(of)h(the)g
Fl(data)g Fs(input)f(to)h(the)g(righ)m(t)g(of)g(the)150
795 y(mem)m(b)s(er)34 b(curren)m(tly)g(b)s(eing)g(used)f(as)i(the)g
Fk(?)f Fs(slot-\014ller.)53 b(That)35 b(is,)g(if)f(the)h
Fl(data)g Fs(input)e(is)i Fk([A)29 b(B)h(C)h(D)f(E])150
905 y Fs(and)d(the)g(template)i(is)e(b)s(eing)g(ev)-5
b(aluated)29 b(with)e Fk(?)g Fs(replaced)h(b)m(y)f Fk(B)p
Fs(,)h(then)f Fk(?REST)e Fs(w)m(ould)j(b)s(e)e(replaced)i(b)m(y)150
1015 y Fk([C)i(D)g(E])o Fs(.)41 b(If)30 b(m)m(ultiple)h(parallel)g
(slots)g(are)g(used,)f(then)g Fk(\(?REST)46 b(1\))30
b Fs(go)s(es)h(with)f(?1,)h(etc.)150 1182 y(In)20 b(a)h(template,)k
(the)c(sym)m(b)s(ol)f Fk(#)h Fs(represen)m(ts)g(the)g(p)s(osition)g(in)
f(the)h Fl(data)h Fs(input)e(of)h(the)g(mem)m(b)s(er)f(curren)m(tly)150
1292 y(b)s(eing)30 b(used)g(as)h(the)f Fk(?)g Fs(slot-\014ller.)43
b(That)30 b(is,)h(if)g(the)f(data)h(input)f(is)h Fk([A)e(B)h(C)g(D)g
(E])g Fs(and)g(the)h(template)h(is)150 1401 y(b)s(eing)e(ev)-5
b(aluated)32 b(with)e Fk(?)g Fs(replaced)g(b)m(y)h Fk(B)p
Fs(,)f(then)g Fk(#)g Fs(w)m(ould)g(b)s(e)g(replaced)h(b)m(y)f
Fk(2)p Fs(.)150 1680 y Fh(map)390 1826 y Fk(MAP)47 b(template)e(data)i
(\(library)f(procedure\))390 1936 y(\(MAP)h(template)e(data1)i(data2)f
(...\))150 2104 y Fs(outputs)40 b(a)g(w)m(ord)g(or)g(list,)j(dep)s
(ending)c(on)h(the)g(t)m(yp)s(e)h(of)f(the)g Fl(data)h
Fs(input,)h(of)e(the)h(same)f(length)h(as)150 2213 y(that)31
b Fl(data)g Fs(input.)40 b(\(If)31 b(more)f(than)h(one)f
Fl(data)h Fs(input)f(are)h(giv)m(en,)h(the)e(output)g(is)h(of)f(the)h
(same)g(t)m(yp)s(e)g(as)150 2323 y Fl(data1)p Fs(.\))43
b(Eac)m(h)32 b(mem)m(b)s(er)e(of)h(the)f(output)h(is)f(the)h(result)g
(of)g(ev)-5 b(aluating)32 b(the)f Fl(template)37 b Fs(list,)32
b(\014lling)f(the)150 2433 y(slots)f(with)g(the)g(corresp)s(onding)f
(mem)m(b)s(er\(s\))g(of)h(the)g Fl(data)h Fs(input\(s\).)40
b(\(All)31 b Fl(data)f Fs(inputs)f(m)m(ust)h(b)s(e)f(the)150
2542 y(same)h(length.\))42 b(In)29 b(the)h(case)h(of)f(a)g(w)m(ord)g
(output,)g(the)g(results)g(of)g(the)g(template)h(ev)-5
b(aluation)32 b(m)m(ust)e(b)s(e)150 2652 y(w)m(ords,)g(and)g(they)g
(are)h(concatenated)i(with)d Fk(WORD)p Fs(.)150 2819
y(In)c(a)h(template,)i(the)e(sym)m(b)s(ol)f Fk(?REST)f
Fs(represen)m(ts)i(the)g(p)s(ortion)f(of)h(the)g(data)g(input)f(to)h
(the)g(righ)m(t)g(of)g(the)150 2929 y(mem)m(b)s(er)34
b(curren)m(tly)g(b)s(eing)g(used)f(as)i(the)g Fk(?)f
Fs(slot-\014ller.)53 b(That)35 b(is,)g(if)f(the)h Fl(data)g
Fs(input)e(is)i Fk([A)29 b(B)h(C)h(D)f(E])150 3039 y
Fs(and)35 b(the)g Fl(template)42 b Fs(is)35 b(b)s(eing)f(ev)-5
b(aluated)37 b(with)e Fk(?)g Fs(replaced)g(b)m(y)g Fk(B)p
Fs(,)h(then)f Fk(?REST)f Fs(w)m(ould)h(b)s(e)f(replaced)150
3148 y(b)m(y)c Fk([C)g(D)g(E])p Fs(.)40 b(If)30 b(m)m(ultiple)h
(parallel)h(slots)f(are)f(used,)g(then)g Fk(\(?REST)46
b(1\))30 b Fs(go)s(es)h(with)f Fk(?1)p Fs(,)g(etc.)150
3316 y(In)20 b(a)h(template,)k(the)c(sym)m(b)s(ol)f Fk(#)h
Fs(represen)m(ts)g(the)g(p)s(osition)g(in)f(the)h Fl(data)h
Fs(input)e(of)h(the)g(mem)m(b)s(er)f(curren)m(tly)150
3425 y(b)s(eing)30 b(used)g(as)h(the)f Fk(?)g Fs(slot-\014ller.)43
b(That)30 b(is,)h(if)g(the)f(data)h(input)f(is)h Fk([A)e(B)h(C)g(D)g
(E])g Fs(and)g(the)h(template)h(is)150 3535 y(b)s(eing)e(ev)-5
b(aluated)32 b(with)e Fk(?)g Fs(replaced)g(b)m(y)h Fk(B)p
Fs(,)f(then)g Fk(#)g Fs(w)m(ould)g(b)s(e)g(replaced)h(b)m(y)f
Fk(2)p Fs(.)150 3703 y(See)h([W)m(ORD],)h(page)f(9,)g(.)150
3981 y Fh(map.se)390 4128 y Fk(MAP.SE)46 b(template)g(data)g(\(library)
g(procedure\))390 4237 y(\(MAP.SE)g(template)f(data1)i(data2)f(...\))
150 4405 y Fs(outputs)c(a)h(list)h(formed)e(b)m(y)h(ev)-5
b(aluating)44 b(the)f Fl(template)49 b Fs(list)43 b(rep)s(eatedly)g
(and)g(concatenating)i(the)150 4515 y(results)28 b(using)g
Fk(SENTENCE)p Fs(.)38 b(That)28 b(is,)h(the)f(mem)m(b)s(ers)g(of)g(the)
h(output)f(are)g(the)h(mem)m(b)s(ers)e(of)i(the)f(results)150
4624 y(of)35 b(the)g(ev)-5 b(aluations.)55 b(The)35 b(output)f(list)i
(migh)m(t,)h(therefore,)f(b)s(e)e(of)h(a)h(di\013eren)m(t)f(length)g
(from)f(that)i(of)150 4734 y(the)28 b Fl(data)h Fs(input\(s\).)40
b(\(If)28 b(the)h(result)f(of)g(an)g(ev)-5 b(aluation)30
b(is)f(the)f(empt)m(y)h(list,)g(it)g(con)m(tributes)g(nothing)f(to)150
4844 y(the)j(\014nal)f(output.\))40 b(The)30 b Fl(data)h
Fs(inputs)e(ma)m(y)i(b)s(e)f(w)m(ords)g(or)g(lists.)150
5011 y(In)c(a)h(template,)i(the)e(sym)m(b)s(ol)f Fk(?REST)f
Fs(represen)m(ts)i(the)g(p)s(ortion)f(of)h(the)g(data)g(input)f(to)h
(the)g(righ)m(t)g(of)g(the)150 5121 y(mem)m(b)s(er)34
b(curren)m(tly)g(b)s(eing)g(used)f(as)i(the)g Fk(?)f
Fs(slot-\014ller.)53 b(That)35 b(is,)g(if)f(the)h(data)g(input)e(is)i
Fk([A)29 b(B)h(C)h(D)f(E])150 5230 y Fs(and)d(the)g(template)i(is)e(b)s
(eing)g(ev)-5 b(aluated)29 b(with)e Fk(?)g Fs(replaced)h(b)m(y)f
Fk(B)p Fs(,)h(then)f Fk(?REST)e Fs(w)m(ould)j(b)s(e)e(replaced)i(b)m(y)
150 5340 y Fk([C)i(D)g(E])o Fs(.)41 b(If)30 b(m)m(ultiple)h(parallel)g
(slots)g(are)g(used,)f(then)g Fk(\(?REST)46 b(1\))30
b Fs(go)s(es)h(with)f Fk(?1)p Fs(,)g(etc.)p eop end
%%Page: 78 91
TeXDict begin 78 90 bop 150 -116 a Fs(78)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(In)20 b(a)h(template,)k(the)c(sym)m(b)s(ol)f
Fk(#)h Fs(represen)m(ts)g(the)g(p)s(osition)g(in)f(the)h
Fl(data)h Fs(input)e(of)h(the)g(mem)m(b)s(er)f(curren)m(tly)150
408 y(b)s(eing)30 b(used)g(as)h(the)f Fk(?)g Fs(slot-\014ller.)43
b(That)30 b(is,)h(if)g(the)f(data)h(input)f(is)h Fk([A)e(B)h(C)g(D)g
(E])g Fs(and)g(the)h(template)h(is)150 518 y(b)s(eing)e(ev)-5
b(aluated)32 b(with)e Fk(?)g Fs(replaced)g(b)m(y)h Fk(B)p
Fs(,)f(then)g Fk(#)g Fs(w)m(ould)g(b)s(e)g(replaced)h(b)m(y)f
Fk(2)p Fs(.)150 686 y(See)h([SENTENCE],)e(page)j(9,)f(.)150
876 y Fh(\014lter)390 1023 y Fk(FILTER)46 b(tftemplate)f(data)i
(\(library)e(procedure\))150 1191 y Fs(outputs)29 b(a)i(w)m(ord)e(or)h
(list,)h(dep)s(ending)d(on)i(the)g(t)m(yp)s(e)g(of)g(the)g
Fl(data)h Fs(input,)e(con)m(taining)i(a)f(subset)g(of)g(the)150
1300 y(mem)m(b)s(ers)c(\(for)h(a)g(list\))h(or)f(c)m(haracters)h(\(for)
f(a)g(w)m(ord\))g(of)f(the)h(input.)39 b(The)26 b(template)i(is)f(ev)-5
b(aluated)28 b(once)150 1410 y(for)33 b(eac)m(h)i(mem)m(b)s(er)e(or)g
(c)m(haracter)i(of)f(the)g(data,)h(and)e(it)h(m)m(ust)f(pro)s(duce)f(a)
i Fk(TRUE)e Fs(or)i Fk(FALSE)e Fs(v)-5 b(alue.)50 b(If)150
1519 y(the)31 b(v)-5 b(alue)30 b(is)h Fk(TRUE)p Fs(,)e(then)h(the)h
(corresp)s(onding)e(input)h(constituen)m(t)h(is)g(included)e(in)i(the)f
(output.)390 1687 y Fk(?)47 b(print)g(filter)f("vowelp)g("elephant)390
1797 y(eea)390 1906 y(?)150 2074 y Fs(In)26 b(a)h(template,)i(the)e
(sym)m(b)s(ol)f Fk(?REST)f Fs(represen)m(ts)i(the)g(p)s(ortion)f(of)h
(the)g Fl(data)g Fs(input)f(to)h(the)g(righ)m(t)g(of)g(the)150
2183 y(mem)m(b)s(er)34 b(curren)m(tly)g(b)s(eing)g(used)f(as)i(the)g
Fk(?)f Fs(slot-\014ller.)53 b(That)35 b(is,)g(if)f(the)h(data)g(input)e
(is)i Fk([A)29 b(B)h(C)h(D)f(E])150 2293 y Fs(and)d(the)g(template)i
(is)e(b)s(eing)g(ev)-5 b(aluated)29 b(with)e Fk(?)g Fs(replaced)h(b)m
(y)f Fk(B)p Fs(,)h(then)f Fk(?REST)e Fs(w)m(ould)j(b)s(e)e(replaced)i
(b)m(y)150 2403 y Fk([C)i(D)g(E])o Fs(.)150 2570 y(In)20
b(a)h(template,)k(the)c(sym)m(b)s(ol)f Fk(#)h Fs(represen)m(ts)g(the)g
(p)s(osition)g(in)f(the)h Fl(data)h Fs(input)e(of)h(the)g(mem)m(b)s(er)
f(curren)m(tly)150 2680 y(b)s(eing)30 b(used)g(as)h(the)f
Fk(?)g Fs(slot-\014ller.)43 b(That)30 b(is,)h(if)g(the)f(data)h(input)f
(is)h Fk([A)e(B)h(C)g(D)g(E])g Fs(and)g(the)h(template)h(is)150
2790 y(b)s(eing)e(ev)-5 b(aluated)32 b(with)e Fk(?)g
Fs(replaced)g(b)m(y)h Fk(B)p Fs(,)f(then)g Fk(#)g Fs(w)m(ould)g(b)s(e)g
(replaced)h(b)m(y)f Fk(2)p Fs(.)150 2980 y Fh(\014nd)390
3127 y Fk(FIND)47 b(tftemplate)e(data)h(\(library)g(procedure\))150
3294 y Fs(outputs)e(the)h(\014rst)e(constituen)m(t)j(of)f(the)g
Fl(data)g Fs(input)e(\(the)i(\014rst)f(mem)m(b)s(er)g(of)h(a)g(list,)j
(or)d(the)g(\014rst)150 3404 y(c)m(haracter)39 b(of)f(a)f(w)m(ord\))h
(for)f(whic)m(h)g(the)h(v)-5 b(alue)38 b(pro)s(duced)d(b)m(y)j(ev)-5
b(aluating)39 b(the)e Fl(template)44 b Fs(with)37 b(that)150
3513 y(consituen)m(t)31 b(in)f(its)h(slot)g(is)g Fk(TRUE)p
Fs(.)39 b(If)30 b(there)h(is)f(no)h(suc)m(h)f(constituen)m(t,)i(the)e
(empt)m(y)h(list)g(is)f(output.)150 3681 y(In)c(a)h(template,)i(the)e
(sym)m(b)s(ol)f Fk(?REST)f Fs(represen)m(ts)i(the)g(p)s(ortion)f(of)h
(the)g Fl(data)g Fs(input)f(to)h(the)g(righ)m(t)g(of)g(the)150
3791 y(mem)m(b)s(er)34 b(curren)m(tly)g(b)s(eing)g(used)f(as)i(the)g
Fk(?)f Fs(slot-\014ller.)53 b(That)35 b(is,)g(if)f(the)h(data)g(input)e
(is)i Fk([A)29 b(B)h(C)h(D)f(E])150 3900 y Fs(and)d(the)g(template)i
(is)e(b)s(eing)g(ev)-5 b(aluated)29 b(with)e Fk(?)g Fs(replaced)h(b)m
(y)f Fk(B)p Fs(,)h(then)f Fk(?REST)e Fs(w)m(ould)j(b)s(e)e(replaced)i
(b)m(y)150 4010 y Fk([C)i(D)g(E])o Fs(.)150 4178 y(In)20
b(a)h(template,)k(the)c(sym)m(b)s(ol)f Fk(#)h Fs(represen)m(ts)g(the)g
(p)s(osition)g(in)f(the)h Fl(data)h Fs(input)e(of)h(the)g(mem)m(b)s(er)
f(curren)m(tly)150 4287 y(b)s(eing)30 b(used)g(as)h(the)f
Fk(?)g Fs(slot-\014ller.)43 b(That)30 b(is,)h(if)g(the)f(data)h(input)f
(is)h Fk([A)e(B)h(C)g(D)g(E])g Fs(and)g(the)h(template)h(is)150
4397 y(b)s(eing)e(ev)-5 b(aluated)32 b(with)e Fk(?)g
Fs(replaced)g(b)m(y)h Fk(B)p Fs(,)f(then)g Fk(#)g Fs(w)m(ould)g(b)s(e)g
(replaced)h(b)m(y)f Fk(2)p Fs(.)150 4587 y Fh(reduce)390
4734 y Fk(REDUCE)46 b(template)g(data)g(\(library)g(procedure\))150
4902 y Fs(outputs)30 b(the)h(result)g(of)g(applying)g(the)g
Fl(template)37 b Fs(to)32 b(accum)m(ulate)h(the)e(mem)m(b)s(ers)f(of)h
(the)g Fl(data)h Fs(input.)150 5011 y(The)39 b(template)j(m)m(ust)d(b)s
(e)h(a)g(t)m(w)m(o-slot)j(function.)69 b(T)m(ypically)41
b(it)f(is)g(an)g(asso)s(ciativ)m(e)i(function)e(name)150
5121 y(lik)m(e)f Fk(SUM)p Fs(.)64 b(If)38 b(the)g Fl(data)h
Fs(input)e(has)h(only)g(one)h(constituen)m(t)g(\(mem)m(b)s(er)f(in)g(a)
h(list)g(or)f(c)m(haracter)i(in)e(a)150 5230 y(w)m(ord\),)30
b(the)f(output)g(is)g(that)h(consituen)m(t.)42 b(Otherwise,)29
b(the)h(template)g(is)g(\014rst)e(applied)h(with)g Fk(?1)g
Fs(\014lled)150 5340 y(with)34 b(the)g(next-to-last)j(consitien)m(t)f
(and)e Fk(?2)f Fs(with)h(the)h(last)g(constituen)m(t.)53
b(Then,)35 b(if)f(there)g(are)h(more)p eop end
%%Page: 79 92
TeXDict begin 79 91 bop 150 -116 a Fs(Chapter)30 b(8:)41
b(Con)m(trol)31 b(Structures)2302 b(79)150 299 y(constituen)m(ts,)29
b(the)f(template)g(is)f(applied)g(with)g Fk(?1)g Fs(\014lled)g(with)f
(the)i(next)f(constituen)m(t)h(to)g(the)g(left)g(and)150
408 y Fk(?2)22 b Fs(with)h(the)g(result)g(from)g(the)g(previous)f(ev)-5
b(aluation.)40 b(This)22 b(pro)s(cess)h(con)m(tin)m(ues)h(un)m(til)f
(all)h(constituen)m(ts)150 518 y(ha)m(v)m(e)32 b(b)s(een)d(used.)40
b(The)30 b(data)h(input)f(ma)m(y)h(not)f(b)s(e)g(empt)m(y)-8
b(.)150 686 y(Note:)58 b(If)38 b(the)h(template)h(is,)h(lik)m(e)f
Fk(SUM)p Fs(,)f(the)g(name)g(of)f(a)h(pro)s(cedure)f(that)h(is)f
(capable)i(of)e(accepting)150 795 y(arbitrarily)c(man)m(y)g(inputs,)h
(it)f(is)g(more)h(e\016cien)m(t)g(to)g(use)f Fk(APPLY)e
Fs(instead)j(of)f Fk(REDUCE)p Fs(.)50 b(The)33 b(latter)j(is)150
905 y(go)s(o)s(d)30 b(for)g(asso)s(ciativ)m(e)j(pro)s(cedures)c(that)i
(ha)m(v)m(e)h(b)s(een)e(written)g(to)h(accept)h(exactly)g(t)m(w)m(o)g
(inputs:)390 1073 y Fk(to)47 b(max)g(:a)g(:b)390 1182
y(output)f(ifelse)g(:a)h(>)h(:b)f([:a])g([:b])390 1292
y(end)390 1511 y(print)f(reduce)g("max)h([...])150 1679
y Fs(Alternativ)m(ely)-8 b(,)33 b Fk(REDUCE)c Fs(can)h(b)s(e)g(used)g
(to)h(write)f Fk(MAX)f Fs(as)i(a)g(pro)s(cedure)e(that)i(accepts)g(an)m
(y)g(n)m(um)m(b)s(er)e(of)150 1788 y(inputs,)h(as)g Fk(SUM)g
Fs(do)s(es:)390 1956 y Fk(to)47 b(max)g([:inputs])e(2)390
2066 y(if)i(emptyp)f(:inputs)g(~)533 2175 y([\(throw)g("error)g([not)h
(enough)f(inputs)g(to)h(max]\)])390 2285 y(output)f(reduce)g([ifelse)g
(?1)h(>)h(?2)f([?1])f([?2]])h(:inputs)390 2394 y(end)150
2562 y Fs(See)31 b([SUM],)g(page)g(29,)g(,)g([APPL)-8
b(Y],)31 b(page)g(76,)h(.)150 2764 y Fh(crossmap)390
2911 y Fk(CROSSMAP)46 b(template)f(listlist)h(\(library)f(procedure\))
390 3021 y(\(CROSSMAP)g(template)h(data1)g(data2)h(...\))150
3188 y Fs(outputs)31 b(a)h(list)h(con)m(taining)g(the)f(results)g(of)g
(template)h(ev)-5 b(aluations.)46 b(Eac)m(h)33 b Fl(data)f
Fs(list)h(con)m(tributes)f(to)150 3298 y(a)f(slot)g(in)f(the)h
(template;)h(the)e(n)m(um)m(b)s(er)f(of)i(slots)g(is)f(equal)h(to)g
(the)g(n)m(um)m(b)s(er)e(of)h Fl(data)i Fs(list)f(inputs.)39
b(As)31 b(a)150 3408 y(sp)s(ecial)f(case,)h(if)f(only)f(one)h
Fl(data)g Fs(list)h(input)d(is)i(giv)m(en,)h(that)f(list)g(is)g(tak)m
(en)g(as)g(a)g(list)g(of)g(data)g(lists,)h(and)150 3517
y(eac)m(h)f(of)g(its)g(mem)m(b)s(ers)e(con)m(tributes)i(v)-5
b(alues)30 b(to)g(a)f(slot.)42 b Fk(CROSSMAP)27 b Fs(di\013ers)i(from)f
Fk(MAP)h Fs(in)g(that)h(instead)150 3627 y(of)38 b(taking)g(mem)m(b)s
(ers)f(from)g(the)g(data)i(inputs)d(in)h(parallel,)k(it)d(tak)m(es)h
(all)f(p)s(ossible)f(com)m(binations)i(of)150 3736 y(mem)m(b)s(ers)30
b(of)g(data)h(inputs,)f(whic)m(h)g(need)g(not)h(b)s(e)e(the)i(same)g
(length.)390 3904 y Fk(?)47 b(show)g(\(crossmap)e([word)i(?1)g(?2])g
([a)g(b)g(c])h([1)f(2)g(3)h(4]\))390 4014 y([a1)f(a2)g(a3)g(a4)g(b1)h
(b2)f(b3)g(b4)g(c1)g(c2)h(c3)f(c4])390 4123 y(?)150 4291
y Fs(F)-8 b(or)34 b(compatibilit)m(y)i(with)e(the)f(v)m(ersion)h(in)g
(the)g(\014rst)e(edition)j(of)f(CSLS)2656 4258 y Fe(1)2691
4291 y Fs(,)g Fk(CROSSMAP)d Fs(templates)k(ma)m(y)150
4401 y(use)30 b(the)h(notation)g Fk(:1)f Fs(instead)h(of)f
Fk(?1)g Fs(to)h(indicate)h(slots.)150 4568 y(See)f([MAP],)g(page)g(77,)
h(.)150 4771 y Fh(cascade)390 4917 y Fk(CASCADE)46 b(endtest)g
(template)f(startvalue)g(\(library)h(procedure\))390
5027 y(\(CASCADE)g(endtest)f(tmp1)i(sv1)g(tmp2)g(sv2)f(...\))390
5137 y(\(CASCADE)g(endtest)f(tmp1)i(sv1)g(tmp2)g(sv2)f(...)h
(finaltemplate\))p 150 5241 1200 4 v 199 5308 a Fe(1)275
5340 y Fd(Computer)25 b(Science)h(Logo)h(St)n(yle)p eop
end
%%Page: 80 93
TeXDict begin 80 92 bop 150 -116 a Fs(80)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(outputs)c(the)h(result)f(of)h(applying)f(a)h
(template)h(\(or)e(sev)m(eral)i(templates,)h(as)e(explained)f(b)s(elo)m
(w\))h(rep)s(eat-)150 408 y(edly)-8 b(,)42 b(with)c(a)i(giv)m(en)g(v)-5
b(alue)39 b(\014lling)g(the)g(slot)h(the)f(\014rst)f(time,)k(and)d(the)
g(result)f(of)i(eac)m(h)g(application)150 518 y(\014lling)31
b(the)f(slot)h(for)f(the)h(follo)m(wing)h(application.)150
686 y(In)h(the)g(simplest)h(case,)h Fk(CASCADE)c Fs(has)i(three)h
(inputs.)49 b(The)32 b(second)i(input)e(is)i(a)f(one-slot)i(expression)
150 795 y(template.)55 b(That)34 b(template)i(is)f(ev)-5
b(aluated)36 b(some)e(n)m(um)m(b)s(er)g(of)g(times)i(\(p)s(erhaps)d
(zero\).)54 b(On)34 b(the)h(\014rst)150 905 y(ev)-5 b(aluation,)28
b(the)e(slot)h(is)f(\014lled)g(with)f(the)h(third)f(input;)i(on)e
(subsequen)m(t)g(ev)-5 b(aluations,)29 b(the)d(slot)g(is)g(\014lled)150
1015 y(with)i(the)h(result)f(of)h(the)g(previous)f(ev)-5
b(aluation.)42 b(The)28 b(n)m(um)m(b)s(er)f(of)i(ev)-5
b(aluations)30 b(is)e(determined)g(b)m(y)h(the)150 1124
y(\014rst)23 b(input.)38 b(This)23 b(can)i(b)s(e)e(either)h(a)h
(nonnegativ)m(e)h(in)m(teger,)g(in)e(whic)m(h)g(case)h(the)f(template)i
(is)e(ev)-5 b(aluated)150 1234 y(that)27 b(man)m(y)g(times,)i(or)d(a)i
(predicate)f(expression)g(template,)i(in)d(whic)m(h)h(case)h(it)f(is)g
(ev)-5 b(aluated)28 b(\(with)f(the)150 1343 y(same)h(slot)h(\014ller)f
(that)h(will)f(b)s(e)g(used)f(for)h(the)g(ev)-5 b(aluation)30
b(of)e(the)g(second)g(input\))g(rep)s(eatedly)-8 b(,)29
b(and)f(the)150 1453 y Fk(CASCADE)g Fs(ev)-5 b(aluation)32
b(con)m(tin)m(ues)f(as)g(long)g(as)f(the)h(predicate)g(v)-5
b(alue)31 b(is)f Fk(FALSE)p Fs(.)39 b(\(In)30 b(other)h(w)m(ords,)f
(the)150 1562 y(predicate)h(template)h(indicates)f(the)g(condition)g
(for)f(stopping.\))150 1730 y(If)j(the)g(template)h(is)f(ev)-5
b(aluated)35 b(zero)e(times,)i(the)e(output)g(from)f
Fk(CASCADE)g Fs(is)h(the)g(third)f(\()p Fl(startv)-5
b(alue)5 b Fs(\))150 1840 y(input.)40 b(Otherwise,)30
b(the)h(output)f(is)g(the)h(v)-5 b(alue)30 b(pro)s(duced)f(b)m(y)h(the)
h(last)g(template)h(ev)-5 b(aluation.)150 2007 y Fk(CASCADE)23
b Fs(templates)j(ma)m(y)f(include)g(the)g(sym)m(b)s(ol)g
Fk(#)f Fs(to)i(represen)m(t)f(the)g(n)m(um)m(b)s(er)e(of)i(times)g(the)
h(template)150 2117 y(has)31 b(b)s(een)g(ev)-5 b(aluated.)46
b(This)30 b(slot)j(is)e(\014lled)h(with)f(1)h(for)f(the)h(\014rst)f(ev)
-5 b(aluation,)33 b(2)f(for)g(the)f(second,)i(and)150
2227 y(so)e(on.)390 2394 y Fk(?)47 b(show)g(cascade)f(5)h([lput)g(#)g
(?])g([])390 2504 y([1)g(2)h(3)f(4)h(5])390 2614 y(?)f(show)g(cascade)f
([vowelp)g(first)g(?])h([bf)g(?])g("spring)390 2723 y(ing)390
2833 y(?)g(show)g(cascade)f(5)h([#)h(*)f(?])g(1)390 2942
y(120)390 3052 y(?)150 3220 y Fs(Sev)m(eral)d(cascaded)g(results)f(can)
h(b)s(e)e(computed)h(in)g(parallel)h(b)m(y)f(pro)m(viding)g(additional)
h(template-)150 3329 y(startv)-5 b(alue)40 b(pairs)f(as)g(inputs)e(to)j
Fk(CASCADE)p Fs(.)64 b(In)39 b(this)f(case,)43 b(all)d(templates)g
(\(including)f(the)g(endtest)150 3439 y(template,)c(if)d(used\))g(are)h
(m)m(ulti-slot,)i(with)e(the)f(n)m(um)m(b)s(er)g(of)g(slots)i(equal)f
(to)g(the)g(n)m(um)m(b)s(er)e(of)i(pairs)f(of)150 3548
y(inputs.)56 b(In)35 b(eac)m(h)i(round)d(of)i(ev)-5 b(aluations,)38
b Fk(?2)p Fs(,)f(for)e(example,)j(represen)m(ts)e(the)g(result)g(of)f
(ev)-5 b(aluating)150 3658 y(the)38 b(second)f(template)i(in)f(the)f
(previous)h(round.)60 b(If)38 b(the)f(total)j(n)m(um)m(b)s(er)c(of)i
(inputs)e(\(including)i(the)150 3768 y(\014rst)33 b(endtest)i(input\))e
(is)i(o)s(dd,)f(then)g(the)g(output)g(from)f(CASCADE)h(is)g(the)h
(\014nal)e(v)-5 b(alue)35 b(of)f(the)h(\014rst)150 3877
y(template.)58 b(If)35 b(the)h(total)i(n)m(um)m(b)s(er)c(of)i(inputs)e
(is)i(ev)m(en,)i(then)e(the)f(last)i(input)e(is)g(a)i(template)g(that)f
(is)150 3987 y(ev)-5 b(aluated)32 b(once,)f(after)g(the)f(end)g(test)h
(is)g(satis\014ed,)g(to)g(determine)f(the)h(output)f(from)g
Fk(CASCADE)p Fs(.)390 4154 y Fk(to)47 b(fibonacci)e(:n)390
4264 y(output)h(\(cascade)g(:n)h([?1)g(+)g(?2])g(1)h([?1])e(0\))390
4374 y(end)390 4593 y(to)h(piglatin)f(:word)390 4702
y(output)g(\(cascade)g([vowelp)f(first)i(?])g(~)1154
4812 y([word)f(bf)h(?)h(first)e(?])h(~)1154 4922 y(:word)f(~)1154
5031 y([word)g(?)h("ay]\))390 5141 y(end)p eop end
%%Page: 81 94
TeXDict begin 81 93 bop 150 -116 a Fs(Chapter)30 b(8:)41
b(Con)m(trol)31 b(Structures)2302 b(81)150 299 y Fh(cascade.2)390
446 y Fk(CASCADE.2)45 b(endtest)h(temp1)g(startval1)g(temp2)g
(startval2)93 b(\(library)46 b(procedure\))150 614 y
Fs(outputs)34 b(the)h(result)g(of)f(in)m(v)m(oking)i
Fk(CASCADE)d Fs(with)h(the)h(same)g(inputs.)53 b(The)34
b(only)h(di\013erence)g(is)f(that)150 723 y(the)d(default)f(n)m(um)m(b)
s(er)f(of)i(inputs)e(is)h(\014v)m(e)h(instead)g(of)f(three.)150
922 y Fh(transfer)390 1069 y Fk(TRANSFER)46 b(endtest)f(template)h
(inbasket)f(\(library)h(procedure\))150 1237 y Fs(outputs)32
b(the)g(result)h(of)f(rep)s(eated)h(ev)-5 b(aluation)33
b(of)g(the)g Fl(template)p Fs(.)48 b(The)32 b(template)h(is)g(ev)-5
b(aluated)33 b(once)150 1347 y(for)39 b(eac)m(h)i(mem)m(b)s(er)e(of)h
(the)f(list)i Fl(in)m(bask)m(et)p Fs(.)69 b Fk(TRANSFER)37
b Fs(main)m(tains)k(an)e Fl(outbask)m(et)k Fs(that)d(is)f(initially)150
1456 y(the)30 b(empt)m(y)g(list.)42 b(After)30 b(eac)m(h)h(ev)-5
b(aluation)32 b(of)e(the)g(template,)h(the)g(resulting)f(v)-5
b(alue)30 b(b)s(ecomes)g(the)g(new)150 1566 y(outbask)m(et.)150
1733 y(In)41 b(the)h(template,)k(the)c(sym)m(b)s(ol)f
Fk(?IN)g Fs(represen)m(ts)h(the)f(curren)m(t)h(mem)m(b)s(er)f(from)g
(the)h(in)m(bask)m(et;)49 b(the)150 1843 y(sym)m(b)s(ol)40
b Fk(?OUT)f Fs(represen)m(ts)h(the)g(en)m(tire)h(curren)m(t)f(outbask)m
(et.)71 b(Other)40 b(slot)g(sym)m(b)s(ols)g(should)f(not)i(b)s(e)150
1953 y(used.)150 2120 y(If)c(the)h(\014rst)f(\()p Fl(endtest)r
Fs(\))h(input)f(is)g(an)h(empt)m(y)g(list,)i(ev)-5 b(aluation)39
b(con)m(tin)m(ues)g(un)m(til)f(all)g(in)m(bask)m(et)h(mem-)150
2230 y(b)s(ers)33 b(ha)m(v)m(e)i(b)s(een)f(used.)51 b(If)34
b(not,)h(the)f(\014rst)g(input)f(m)m(ust)h(b)s(e)f(a)i(predicate)g
(expression)f(template,)j(and)150 2340 y(ev)-5 b(aluation)32
b(con)m(tin)m(ues)f(un)m(til)g(either)g(that)g(template's)h(v)-5
b(alue)31 b(is)f Fk(TRUE)f Fs(or)i(the)f(in)m(bask)m(et)i(is)e(used)g
(up.)p eop end
%%Page: 82 95
TeXDict begin 82 94 bop eop end
%%Page: 83 96
TeXDict begin 83 95 bop 3659 -116 a Fs(83)150 299 y Fp(9)80
b(Macros)150 596 y Fr(.macro)390 756 y Fk(.MACRO)46 b(procname)g
(:input1)f(:input2)h(...)95 b(\(special)45 b(form\))390
865 y(.DEFMACRO)g(procname)h(text)150 1033 y Fs(A)35
b(macro)g(is)g(a)g(sp)s(ecial)g(kind)f(of)g(pro)s(cedure)g(whose)g
(output)h(is)f(ev)-5 b(aluated)36 b(as)f(Logo)h(instructions)e(in)150
1142 y(the)e(con)m(text)h(of)e(the)h(macro's)g(caller.)45
b Fk(.MACRO)30 b Fs(is)h(exactly)i(lik)m(e)g Fk(TO)d
Fs(except)j(that)f(the)f(new)g(pro)s(cedure)150 1252
y(b)s(ecomes)g(a)f(macro;)i Fk(.DEFMACRO)27 b Fs(is)k(exactly)h(lik)m
(e)g Fk(DEFINE)c Fs(with)i(the)h(same)g(exception.)150
1420 y(Macros)37 b(are)f(useful)f(for)g(in)m(v)m(en)m(ting)j(new)d(con)
m(trol)i(structures)e(comparable)i(to)f Fk(REPEAT)p Fs(,)g
Fk(IF)p Fs(,)h(and)e(so)150 1529 y(on.)72 b(Suc)m(h)41
b(con)m(trol)h(structures)e(can)i(almost,)j(but)40 b(not)h(quite,)j(b)s
(e)d(duplicated)g(b)m(y)g(ordinary)f(Logo)150 1639 y(pro)s(cedures.)f
(F)-8 b(or)32 b(example,)f(here)f(is)h(an)f(ordinary)f(pro)s(cedure)h
(v)m(ersion)h(of)f Fk(REPEAT)p Fs(:)390 1807 y Fk(to)47
b(my.repeat)e(:num)i(:instructions)390 1916 y(if)g(:num=0)f([stop])390
2026 y(run)h(:instructions)390 2135 y(my.repeat)e(:num-1)h
(:instructions)390 2245 y(end)150 2413 y Fs(This)30 b(v)m(ersion)g(w)m
(orks)h(\014ne)e(for)i(most)f(purp)s(oses,)f(e.g.,)390
2580 y Fk(my.repeat)45 b(5)j([print)e("hello])150 2748
y Fs(But)36 b(it)f(do)s(esn't)h(w)m(ork)f(if)g(the)h(instructions)f(to)
h(b)s(e)f(carried)g(out)h(include)f Fk(OUTPUT)p Fs(,)g
Fk(STOP)p Fs(,)h(or)f Fk(LOCAL)p Fs(.)150 2858 y(F)-8
b(or)31 b(example,)g(consider)g(this)f(pro)s(cedure:)390
3025 y Fk(to)47 b(example)390 3135 y(print)f([Guess)g(my)i(secret)e
(word.)94 b(You)47 b(get)g(three)f(guesses.])390 3245
y(repeat)g(3)i([type)e("|??)h(|)g(~)867 3354 y(if)g(readword)f(=)h
("secret)f([pr)h("Right!)f(stop]])390 3464 y(print)g([Sorry,)g(the)h
(word)g(was)g("secret"!])390 3573 y(end)150 3741 y Fs(This)27
b(pro)s(cedure)f(w)m(orks)h(as)h(written,)g(but)e(if)i
Fk(MY.REPEAT)d Fs(is)i(used)f(instead)i(of)g Fk(REPEAT)p
Fs(,)e(it)i(w)m(on't)g(w)m(ork)150 3851 y(b)s(ecause)i(the)h
Fk(STOP)e Fs(will)i(stop)f Fk(MY.REPEAT)e Fs(instead)j(of)f(stopping)h
Fk(EXAMPLE)d Fs(as)j(desired.)150 4018 y(The)c(solution)i(is)f(to)g
(mak)m(e)h Fk(MY.REPEAT)c Fs(a)k(macro.)40 b(Instead)28
b(of)g(actually)h(carrying)f(out)g(the)g(computa-)150
4128 y(tion,)j(a)f(macro)g(m)m(ust)g(return)e(a)i(list)h(con)m(taining)
g(Logo)g(instructions.)40 b(The)29 b(con)m(ten)m(ts)j(of)e(that)g(list)
h(are)150 4237 y(ev)-5 b(aluated)34 b(as)g(if)f(they)g(app)s(eared)g
(in)g(place)h(of)g(the)f(call)h(to)g(the)g(macro.)50
b(Here's)34 b(a)f(macro)h(v)m(ersion)g(of)150 4347 y
Fk(REPEAT)p Fs(:)390 4515 y Fk(.macro)46 b(my.repeat)f(:num)i
(:instructions)390 4624 y(if)g(:num=0)f([output)g([]])390
4734 y(output)g(sentence)g(:instructions)e(~)1154 4844
y(\(list)i("my.repeat)f(:num-1)h(:instructions\))390
4953 y(end)150 5121 y Fs(Ev)m(ery)34 b(macro)h(is)f(an)g(op)s(eration)h
(|)f(it)g(m)m(ust)g(alw)m(a)m(ys)i(output)e(something.)52
b(Ev)m(en)34 b(in)g(the)g(base)h(case,)150 5230 y Fk(MY.REPEAT)23
b Fs(outputs)j(an)g(empt)m(y)g(instruction)g(list.)40
b(T)-8 b(o)27 b(sho)m(w)e(ho)m(w)i Fk(MY.REPEAT)c Fs(w)m(orks,)k(let's)
g(tak)m(e)h(the)150 5340 y(example)p eop end
%%Page: 84 97
TeXDict begin 84 96 bop 150 -116 a Fs(84)2551 b(BERKELEY)30
b(LOGO)g(6.1)390 299 y Fk(my.repeat)45 b(5)j([print)e("hello])150
467 y Fs(F)-8 b(or)31 b(this)f(example,)i Fk(MY.REPEAT)c
Fs(will)i(output)g(the)h(instruction)f(list)390 634 y
Fk([print)46 b("hello)g(my.repeat)f(4)j([print)e("hello]])150
802 y Fs(Logo)30 b(then)e(executes)i(these)f(instructions)f(in)g(place)
i(of)e(the)h(original)h(in)m(v)m(o)s(cation)g(of)f Fk(MY.REPEAT)p
Fs(;)e(this)150 912 y(prin)m(ts)j Fk(hello)f Fs(once)i(and)f(in)m(v)m
(ok)m(es)i(another)e(rep)s(etition.)150 1079 y(The)35
b(tec)m(hnique)i(just)e(sho)m(wn,)i(although)g(fairly)f(easy)h(to)f
(understand,)g(has)g(the)g(defect)h(of)f(slo)m(wness)150
1189 y(b)s(ecause)k(eac)m(h)h(rep)s(etition)g(has)f(to)h(construct)f
(an)g(instruction)g(list)h(for)f(ev)-5 b(aluation.)72
b(Another)40 b(ap-)150 1298 y(proac)m(h)27 b(is)g(to)g(mak)m(e)h
Fk(MY.REPEAT)c Fs(a)j(macro)g(that)g(w)m(orks)g(just)f(lik)m(e)i(the)f
(non-macro)g(v)m(ersion)g(unless)f(the)150 1408 y(instructions)k(to)h
(b)s(e)f(rep)s(eated)h(include)f Fk(OUTPUT)e Fs(or)j
Fk(STOP)p Fs(:)390 1576 y Fk(.macro)46 b(my.repeat)f(:num)i
(:instructions)390 1685 y(catch)f("repeat.catchtag)e(~)676
1795 y([op)j(repeat.done)e(runresult)g([repeat1)h(:num)g
(:instructions]])390 1905 y(op)h([])390 2014 y(end)390
2233 y(to)g(repeat1)f(:num)h(:instructions)390 2343 y(if)g(:num=0)f
([throw)g("repeat.catchtag])390 2452 y(run)h(:instructions)390
2562 y(.maybeoutput)d(repeat1)i(:num-1)g(:instructions)390
2672 y(end)390 2891 y(to)h(repeat.done)e(:repeat.result)390
3000 y(if)i(emptyp)f(:repeat.result)e([op)j([stop]])390
3110 y(op)g(list)g("output)f(quoted)g(first)g(:repeat.result)390
3220 y(end)150 3387 y Fs(If)37 b(the)g(instructions)h(do)f(not)g
(include)g Fk(STOP)g Fs(or)g Fk(OUTPUT)p Fs(,)h(then)f
Fk(REPEAT1)e Fs(will)j(reac)m(h)g(its)f(base)h(case)150
3497 y(and)30 b(in)m(v)m(ok)m(e)j Fk(THROW)p Fs(.)40
b(As)30 b(a)h(result,)g Fk(MY.REPEAT)p Fs('s)d(last)k(instruction)e
(line)h(will)g(output)f(an)h(empt)m(y)g(list,)150 3606
y(so)d(the)g(ev)-5 b(aluation)30 b(of)e(the)g(macro)h(result)e(b)m(y)h
(the)g(caller)i(will)e(do)g(nothing.)40 b(But)28 b(if)g(a)g
Fk(STOP)f Fs(or)h Fk(OUTPUT)150 3716 y Fs(happ)s(ens,)e(then)i
Fk(REPEAT.DONE)c Fs(will)k(output)f(a)h Fk(STOP)e Fs(or)h
Fk(OUTPUT)f Fs(instruction)h(that)h(will)g(b)s(e)f(executed)150
3826 y(in)j(the)h(caller's)g(con)m(text.)150 3993 y(The)45
b(macro-de\014ning)h(commands)f(ha)m(v)m(e)i(names)e(starting)h(with)g
(a)g(dot)f(b)s(ecause)h(macros)g(are)g(an)150 4103 y(adv)-5
b(anced)44 b(feature)g(of)g(Logo;)53 b(it's)44 b(easy)h(to)f(get)h(in)f
(trouble)g(b)m(y)g(de\014ning)f(a)h(macro)h(that)f(do)s(esn't)150
4213 y(terminate,)32 b(or)e(b)m(y)g(failing)i(to)f(construct)f(the)h
(instruction)f(list)h(prop)s(erly)-8 b(.)150 4380 y(Lisp)32
b(users)f(should)h(note)h(that)g(Logo)g(macros)g(are)g
Fg(not)41 b Fs(sp)s(ecial)33 b(forms.)46 b(That)33 b(is,)g(the)f
(inputs)g(to)h(the)150 4490 y(macro)27 b(are)h(ev)-5
b(aluated)28 b(normally)-8 b(,)28 b(as)f(they)g(w)m(ould)g(b)s(e)f(for)
g(an)m(y)h(other)g(Logo)h(pro)s(cedure.)39 b(It's)27
b(only)g(the)150 4599 y(output)j(from)g(the)g(macro)h(that's)h(handled)
d(un)m(usually)-8 b(.)150 4767 y(Here's)31 b(another)g(example:)390
4935 y Fk(.macro)46 b(localmake)f(:name)i(:value)390
5044 y(output)f(\(list)g("local)476 b(~)1010 5154 y(word)47
b("")g(:name)142 b(~)1010 5264 y("apply)476 b(~)p eop
end
%%Page: 85 98
TeXDict begin 85 97 bop 150 -116 a Fs(Chapter)30 b(9:)41
b(Macros)2759 b(85)1010 299 y Fk(""make)476 b(~)1010
408 y(\(list)47 b(:name)f(:value\)\))390 518 y(end)150
686 y Fs(It's)31 b(used)e(this)h(w)m(a)m(y:)390 853 y
Fk(to)47 b(try)390 963 y(localmake)e("garply)h("hello)390
1073 y(print)g(:garply)390 1182 y(end)150 1350 y(LOCALMAKE)28
b Fs(outputs)i(the)g(list)390 1518 y([lo)s(cal)i Fk(")p
Fs(garply)e(apply)g Fk(")p Fs(mak)m(e)h([garply)g(hello]])150
1685 y(The)38 b(reason)h(for)f(the)h(use)f(of)h Fk(APPLY)e
Fs(is)h(to)i(a)m(v)m(oid)g(ha)m(ving)f(to)g(decide)g(whether)f(or)g
(not)h(the)g(second)150 1795 y(input)30 b(to)i Fk(MAKE)e
Fs(requires)g(a)h(quotation)i(mark)d(b)s(efore)h(it.)43
b(\(In)31 b(this)g(case)h(it)f(w)m(ould)g(|)g Fk(MAKE)e("GARPLY)150
1905 y("HELLO)g Fs(|)h(but)g(the)g(quotation)i(mark)e(w)m(ould)g(b)s(e)
g(wrong)g(if)g(the)h(v)-5 b(alue)30 b(w)m(ere)h(a)g(list.\))150
2072 y(It's)g(often)f(con)m(v)m(enien)m(t)j(to)e(use)f(the)h
Fk(`)f Fs(function)g(to)h(construct)g(the)f(instruction)h(list:)390
2240 y Fk(.macro)46 b(localmake)f(:name)i(:value)390
2350 y(op)g(`[local)f(,[word)g("")h(:name])f(apply)h("make)f([,[:name])
f(,[:value]]])390 2459 y(end)150 2627 y Fs(On)30 b(the)g(other)h(hand,)
e Fk(`)h Fs(is)h(prett)m(y)g(slo)m(w,)g(since)g(it's)g(tree)g(recursiv)
m(e)g(and)e(written)i(in)f(Logo.)150 2795 y(See)j([TO],)g(page)h(49,)h
(,)f([DEFINE],)g(page)f(50,)i(,)f([APPL)-8 b(Y],)34 b(page)g(76,)g(,)g
([STOP],)f(page)g(69,)i(,)f([OUT-)150 2904 y(PUT],)d(page)g(69,)g(.)150
3102 y Fh(.defmacro)150 3249 y Fs(See)g([dMA)m(CR)m(O],)g(page)g(83,)h
(.)150 3448 y Fh(macrop)390 3595 y Fk(MACROP)46 b(name)390
3704 y(MACRO?)g(name)150 3872 y Fs(outputs)30 b Fk(TRUE)f
Fs(if)h(its)h(input)f(is)g(the)h(name)f(of)h(a)f(macro.)150
4070 y Fh(macro)s(expand)390 4217 y Fk(MACROEXPAND)45
b(expr)h(\(library)g(procedure\))150 4385 y Fs(tak)m(es)39
b(as)f(its)g(input)e(a)i(Logo)h(expression)e(that)i(in)m(v)m(ok)m(es)g
(a)f(macro)g(\(that)h(is,)g(one)f(that)g(b)s(egins)f(with)150
4495 y(the)i(name)f(of)g(a)h(macro\))g(and)f(outputs)g(the)g(the)h
(Logo)g(expression)f(in)m(to)i(whic)m(h)e(the)g(macro)h(w)m(ould)150
4604 y(translate)32 b(the)e(input)g(expression.)390 4772
y Fk(.macro)46 b(localmake)f(:name)i(:value)390 4881
y(op)g(`[local)f(,[word)g("")h(:name])f(apply)h("make)f([,[:name])f
(,[:value]]])390 4991 y(end)390 5210 y(?)i(show)g(macroexpand)e
([localmake)g("pi)i(3.14159])390 5320 y([local)f("pi)h(apply)f("make)h
([pi)g(3.14159]])p eop end
%%Page: 86 99
TeXDict begin 86 98 bop eop end
%%Page: 87 100
TeXDict begin 87 99 bop 3659 -116 a Fs(87)150 299 y Fp(10)80
b(Error)53 b(Pro)t(cessing)150 546 y Fs(If)37 b(an)h(error)f(o)s
(ccurs,)j(Logo)e(tak)m(es)i(the)d(follo)m(wing)j(steps.)62
b(First,)40 b(if)e(there)g(is)g(an)f(a)m(v)-5 b(ailable)40
b(v)-5 b(ariable)150 656 y(named)37 b Fk(ERRACT)p Fs(,)g(Logo)h(tak)m
(es)h(its)e(v)-5 b(alue)38 b(as)f(an)g(instructionlist)h(and)f(runs)e
(the)j(instructions.)60 b(The)150 765 y(op)s(eration)26
b Fk(ERROR)f Fs(ma)m(y)h(b)s(e)g(used)f(within)g(the)h(instructions)g
(\(once\))h(to)g(examine)f(the)h(error)e(condition.)150
875 y(If)k(the)h(instructionlist)g(in)m(v)m(ok)m(es)h
Fk(PAUSE)p Fs(,)e(the)h(error)f(message)i(is)e(prin)m(ted)g(b)s(efore)h
(the)f(pause)g(happ)s(ens.)150 985 y(Certain)f(errors)f(are)h
Fl(reco)m(v)m(erable)5 b Fs(;)32 b(for)27 b(one)h(of)g(those)h(errors,)
f(if)f(the)h(instructionlist)h(outputs)e(a)h(v)-5 b(alue,)150
1094 y(that)26 b(v)-5 b(alue)27 b(is)e(used)g(in)h(place)h(of)f(the)g
(expression)f(that)h(caused)g(the)g(error.)39 b(\(If)26
b Fk(ERRACT)e Fs(in)m(v)m(ok)m(es)j Fk(PAUSE)150 1204
y Fs(and)37 b(the)g(user)g(then)f(in)m(v)m(ok)m(es)j
Fk(CONTINUE)c Fs(with)i(an)g(input,)i(that)e(input)g(b)s(ecomes)g(the)h
(output)e(from)150 1313 y Fk(PAUSE)29 b Fs(and)h(therefore)h(the)f
(output)g(from)g(the)h Fk(ERRACT)d Fs(instructionlist.\))150
1481 y(It)36 b(is)g(p)s(ossible)f(for)h(an)g Fk(ERRACT)e
Fs(instructionlist)j(to)f(pro)s(duce)f(an)h(inappropriate)f(v)-5
b(alue)37 b(or)f(no)f(v)-5 b(alue)150 1591 y(where)40
b(one)h(is)f(needed.)71 b(As)40 b(a)h(result,)i(the)e(same)f(error)g
(condition)i(could)e(recur)g(forev)m(er)h(b)s(ecause)150
1700 y(of)f(this)g(mec)m(hanism.)70 b(T)-8 b(o)40 b(a)m(v)m(oid)h(that)
g(danger,)h(if)e(the)g(same)h(error)e(condition)i(o)s(ccurs)f(t)m(wice)
h(in)f(a)150 1810 y(ro)m(w)32 b(from)f(an)h Fk(ERRACT)e
Fs(instructionlist)j(without)f(user)f(in)m(teraction,)j(the)e(message)h
(`)p Fk(Erract)c(loop)p Fs(')i(is)150 1919 y(prin)m(ted)i(and)g(con)m
(trol)i(returns)e(to)h(toplev)m(el.)53 b Fk(")p Fs(Without)34
b(user)f(in)m(teraction)p Fk(")i Fs(means)f(that)g(if)g
Fk(ERRACT)150 2029 y Fs(in)m(v)m(ok)m(es)41 b Fk(PAUSE)c
Fs(and)h(the)h(user)f(pro)m(vides)h(an)f(incorrect)i(v)-5
b(alue,)42 b(this)c(lo)s(op)h(prev)m(en)m(tion)h(mec)m(hanism)150
2139 y(do)s(es)30 b(not)h(tak)m(e)h(e\013ect)g(and)d(the)i(user)f(gets)
h(to)g(try)f(again.)150 2306 y(During)36 b(the)h(running)e(of)h(the)h
Fk(ERRACT)e Fs(instructionlist,)k Fk(ERRACT)c Fs(is)h(lo)s(cally)i(un)m
(b)s(ound,)e(so)h(an)f(error)150 2416 y(in)31 b(the)h
Fk(ERRACT)d Fs(instructions)j(themselv)m(es)g(will)g(not)f(cause)h(a)g
(lo)s(op.)44 b(In)31 b(particular,)h(an)f(error)g(during)150
2526 y(a)i(pause)f(will)i(not)f(cause)g(a)g(pause-within-a-pause)g
(unless)f(the)h(user)f(reassigns)h(the)g(v)-5 b(alue)33
b Fk([PAUSE])150 2635 y Fs(to)j Fk(ERRACT)d Fs(during)g(the)i(pause.)54
b(But)35 b(suc)m(h)g(an)f(error)h(will)g(not)g(return)f(to)h(toplev)m
(el;)k(it)d(will)f(remain)150 2745 y(within)30 b(the)g(original)i
(pause)e(lo)s(op.)150 2912 y(If)42 b(there)h(is)f(no)h(a)m(v)-5
b(ailable)45 b Fk(ERRACT)c Fs(v)-5 b(alue,)46 b(Logo)e(handles)e(the)g
(error)g(b)m(y)h(generating)h(an)e(in)m(ternal)150 3022
y Fk(THROW)k("ERROR)o Fs(.)58 b(\(A)37 b(user)e(program)h(can)h(also)g
(generate)h(an)e(error)g(condition)h(delib)s(erately)g(b)m(y)f(in-)150
3132 y(v)m(oking)g Fk(THROW)p Fs(.\))55 b(If)35 b(this)g(thro)m(w)h(is)
f(not)h(caugh)m(t)g(b)m(y)f(a)h Fk(CATCH)46 b("ERROR)34
b Fs(in)h(the)h(user)e(program,)j(it)f(is)150 3241 y(ev)m(en)m(tually)
25 b(caugh)m(t)f(either)g(b)m(y)f(the)g(toplev)m(el)i(instruction)f(lo)
s(op)f(or)g(b)m(y)g(a)g(pause)g(lo)s(op,)i(whic)m(h)e(prin)m(ts)g(the)
150 3351 y(error)f(message.)40 b(An)22 b(in)m(v)m(o)s(cation)i(of)f
Fk(CATCH)47 b("ERROR)20 b Fs(in)j(a)g(user)f(program)g(lo)s(cally)i(un)
m(binds)d Fk(ERRACT)p Fs(,)i(so)150 3460 y(the)j(e\013ect)h(is)f(that)h
(whic)m(hev)m(er)f(of)g Fk(ERRACT)e Fs(and)h Fk(CATCH)47
b("ERROR)24 b Fs(is)i(more)g(lo)s(cal)h(will)f(tak)m(e)h(precedence.)
150 3628 y(If)35 b(a)h(\015oating)g(p)s(oin)m(t)g(o)m(v)m(er\015o)m(w)h
(o)s(ccurs)e(during)f(an)h(arithmetic)i(op)s(eration,)h(or)d(a)h(t)m(w)
m(o-input)g(mathe-)150 3738 y(matical)29 b(function)d(\(lik)m(e)j
Fk(POWER)p Fs(\))d(is)h(in)m(v)m(ok)m(ed)h(with)f(an)f(illegal)k(com)m
(bination)e(of)f(inputs,)g(the)g(`)p Fk(doesn't)150 3847
y(like)p Fs(')j(message)h(refers)f(to)h(the)g(second)g(op)s(erand,)e
(but)h(should)f(b)s(e)h(tak)m(en)i(as)f(meaning)f(the)h(com)m(bina-)150
3957 y(tion.)150 4125 y(See)e([ERRA)m(CT],)g(page)h(89,)g(,)g([THR)m(O)
m(W],)g(page)g(69,)g(,)g([ERR)m(OR],)f(page)h(70,)g(,)f([CA)-8
b(TCH],)30 b(page)f(69,)i(,)150 4234 y([P)-8 b(A)m(USE],)32
b(page)f(70,)g(,)g([CONTINUE],)f(page)h(70,)h(.)150 4465
y Fr(10.1)68 b(Error)46 b(Co)t(des)150 4624 y Fs(Here)23
b(are)g(the)g(n)m(umeric)g(co)s(des)g(that)g(app)s(ear)f(as)h(the)g
(\014rst)f(mem)m(b)s(er)g(of)h(the)g(list)h(output)e(b)m(y)h
Fk(ERROR)e Fs(when)150 4734 y(an)k(error)g(is)g(caugh)m(t,)i(with)e
(the)g(corresp)s(onding)f(messages.)40 b(Some)25 b(messages)h(ma)m(y)g
(ha)m(v)m(e)g(t)m(w)m(o)g(di\013eren)m(t)150 4844 y(co)s(des)31
b(dep)s(ending)e(on)i(whether)f(or)g(not)h(the)g(error)f(is)h(reco)m(v)
m(erable)i(\(that)f(is,)f(a)g(substitute)f(v)-5 b(alue)32
b(can)150 4953 y(b)s(e)37 b(pro)m(vided)f(through)h(the)g
Fk(ERRACT)f Fs(mec)m(hanism\))i(in)f(the)g(sp)s(eci\014c)g(con)m(text.)
63 b(Some)37 b(messages)i(are)150 5063 y(w)m(arnings)27
b(rather)f(than)h(errors;)h(these)f(will)g(not)g(b)s(e)f(caugh)m(t.)41
b(Errors)26 b(0)h(and)f(32)i(are)f(so)g(bad)f(that)i(Logo)150
5172 y(exits)j(immediately)-8 b(.)485 5340 y Fk(0)48
b(Fatal)e(internal)g(error)94 b Fs(\(can't)32 b(b)s(e)d(caugh)m(t\))p
eop end
%%Page: 88 101
TeXDict begin 88 100 bop 150 -116 a Fs(88)2551 b(BERKELEY)30
b(LOGO)g(6.1)485 299 y Fk(1)48 b(Out)f(of)g(memory)485
408 y(2)h(Stack)e(overflow)485 518 y(3)i(Turtle)e(out)h(of)g(bounds)485
628 y(4)h Fi(proc)f Fk(doesn't)e(like)i Fi(datum)f Fk(as)i(input)94
b Fs(\(not)31 b(reco)m(v)m(erable\))485 737 y Fk(5)48
b Fi(proc)f Fk(didn't)f(output)g(to)h Fi(proc)485 847
y Fk(6)h(Not)f(enough)f(inputs)g(to)h Fi(proc)485 956
y Fk(7)h(proc)f(doesn't)e(like)i(datum)f(as)i(input)94
b Fs(\(reco)m(v)m(erable\))485 1066 y Fk(8)48 b(Too)f(much)f(inside)h
(\(\)'s)485 1176 y(9)96 b(You)47 b(don't)f(say)h(what)f(to)i(do)f(with)
f Fi(datum)438 1285 y Fk(10)h('\)')g(not)g(found)438
1395 y(11)g Fi(var)g Fk(has)g(no)g(value)438 1504 y(12)g(Unexpected)e
('\)')438 1614 y(13)i(I)g(don't)g(know)f(how)h(to)g Fi(proc)95
b Fs(\(reco)m(v)m(erable\))438 1724 y Fk(14)47 b(Can't)f(find)h(catch)f
(tag)h(for)g Fi(throwtag)438 1833 y Fk(15)g Fi(proc)g
Fk(is)g(already)f(defined)438 1943 y(16)h(Stopped)438
2052 y(17)g(Already)f(dribbling)438 2162 y(18)h(File)g(system)f(error)
438 2271 y(19)h(Assuming)e(you)i(mean)g(IFELSE,)f(not)h(IF)95
b Fs(\(w)m(arning)30 b(only\))438 2381 y Fk(20)47 b Fi(var)g
Fk(shadowed)e(by)j(local)e(in)h(procedure)e(call)95 b
Fs(\(w)m(arning)30 b(only\))438 2491 y Fk(21)47 b(Throw)f("Error)438
2600 y(22)h Fi(proc)g Fk(is)g(a)g(primitive)438 2710
y(23)g(Can't)f(use)h(TO)g(inside)f(a)i(procedure)438
2819 y(24)f(I)g(don't)g(know)f(how)h(to)g Fi(proc)95
b Fs(\(not)31 b(reco)m(v)m(erable\))438 2929 y Fk(25)47
b(IFTRUE/IFFALSE)d(without)i(TEST)438 3039 y(26)h(Unexpected)e(']')438
3148 y(27)i(Unexpected)e('}')438 3258 y(28)i(Couldn't)e(initialize)g
(graphics)438 3367 y(29)i(Macro)f(returned)g Fi(value)g
Fk(instead)g(of)h(a)h(list)438 3477 y(30)f(You)g(don't)f(say)h(what)g
(to)g(do)g(with)g Fi(value)438 3587 y Fk(31)g(Can)g(only)f(use)h(STOP)g
(or)g(OUTPUT)f(inside)g(a)i(procedure)438 3696 y(32)f(APPLY)f(doesn't)g
(like)h Fi(badthing)e Fk(as)i(input)438 3806 y(33)g(END)g(inside)f
(multi-line)f(instruction)438 3915 y(34)i(Really)f(out)h(of)g(memory)94
b Fs(\(can't)32 b(b)s(e)d(caugh)m(t\))438 4025 y Fk(35)47
b(user-generated)d(error)i(message)g(\(THROW)g("ERROR)g
Fi(message)p Fk(\))438 4134 y(36)h(END)g(inside)f(multi-line)f
(instruction)438 4244 y(37)i(Bad)g(default)f(expression)f(for)i
(optional)e(input:)h Fi(expr)438 4354 y Fk(38)h(Can't)f(use)h(OUTPUT)f
(or)h(STOP)g(inside)f(RUNRESULT)438 4463 y(39)95 b(Assuming)45
b(you)i(meant)f('FD)h(100',)g(not)g(FD100)94 b Fs(\(or)30
b(similar\))438 4573 y Fk(40)47 b(I)g(can't)g(open)f(file)h
Fi(filename)438 4682 y Fk(41)g(File)g Fi(filename)e Fk(already)h(open)
438 4792 y(42)h(File)g Fi(filename)e Fk(not)i(open)438
4902 y(43)g(Runlist)f([)p Fi(expr)g(expr)p Fk(])g(has)h(more)g(than)g
(one)g(expression.)p eop end
%%Page: 89 102
TeXDict begin 89 101 bop 3659 -116 a Fs(89)150 299 y
Fp(11)80 b(Sp)t(ecial)53 b(V)-13 b(ariables)150 583 y
Fs(Logo)41 b(tak)m(es)g(sp)s(ecial)f(action)h(if)e(an)m(y)h(of)g(the)f
(follo)m(wing)i(v)-5 b(ariable)41 b(names)e(exists.)69
b(They)39 b(follo)m(w)i(the)150 692 y(normal)20 b(scoping)h(rules,)h
(so)f(a)f(pro)s(cedure)f(can)i(lo)s(cally)h(set)f(one)f(of)h(them)f(to)
h(limit)g(the)g(scop)s(e)f(of)g(its)h(e\013ect.)150 802
y(Initially)-8 b(,)47 b(no)41 b(v)-5 b(ariables)43 b(exist)g(except)f
(for)g Fk(ALLOWGETSET)p Fs(,)g Fk(CASEIGNOREDP)p Fs(,)g(and)f
Fk(UNBURYONEDIT)p Fs(,)150 911 y(whic)m(h)30 b(are)h
Fk(TRUE)e Fs(and)h(buried.)150 1164 y Fr(allo)l(wgetset)390
1324 y Fk(ALLOWGETSET)1286 b(\(variable\))150 1492 y
Fs(if)29 b Fk(TRUE)p Fs(,)g(indicates)h(that)g(an)f(attempt)i(to)f(use)
f(a)h(pro)s(cedure)e(that)i(do)s(esn't)f(exist)h(should)f(b)s(e)f(tak)m
(en)j(as)150 1601 y(an)h(implicit)h(getter)h(or)e(setter)i(pro)s
(cedure)d(\(setter)i(if)g(the)f(\014rst)g(three)g(letters)i(of)e(the)g
(name)h(are)f Fk(SET)p Fs(\))150 1711 y(for)e(a)h(v)-5
b(ariable)31 b(of)g(the)f(same)h(name)f(\(without)h(the)g
Fk(SET)e Fs(if)h(appropriate\).)150 1918 y Fh(buttonact)390
2065 y Fk(BUTTONACT)1286 b(\(variable\))150 2233 y Fs(if)31
b(nonempt)m(y)-8 b(,)31 b(should)f(b)s(e)g(an)g(instruction)h(list)g
(that)g(will)g(b)s(e)f(ev)-5 b(aluated)32 b(whenev)m(er)f(a)g(mouse)f
(button)150 2342 y(is)39 b(pressed.)65 b(Note)40 b(that)g(the)f(user)f
(ma)m(y)h(ha)m(v)m(e)h(released)g(the)f(button)f(b)s(efore)h(the)g
(instructions)g(are)150 2452 y(ev)-5 b(aluated.)42 b
Fk(BUTTON)27 b Fs(will)i(still)h(output)f(whic)m(h)g(button)g(w)m(as)g
(most)h(recen)m(tly)g(pressed.)40 b Fk(CLICKPOS)27 b
Fs(will)150 2562 y(output)33 b(the)h(p)s(osition)g(of)g(the)f(mouse)h
(cursor)f(at)h(the)g(momen)m(t)g(the)g(button)f(w)m(as)h(pressed;)h
(this)e(ma)m(y)150 2671 y(b)s(e)d(di\013eren)m(t)h(from)e
Fk(MOUSEPOS)g Fs(if)h(the)g(user)g(mo)m(v)m(es)i(the)e(mouse)h(after)g
(clic)m(king.)150 2839 y(Note)26 b(that)g(it's)g(p)s(ossible)f(for)f
(the)i(user)e(to)i(press)e(a)i(button)f(during)e(the)j(ev)-5
b(aluation)26 b(of)g(the)f(instruction)150 2948 y(list.)58
b(If)35 b(this)h(w)m(ould)g(confuse)f(y)m(our)h(program,)h(prev)m(en)m
(t)g(it)f(b)m(y)g(temp)s(orarily)g(setting)h Fk(BUTTONACT)c
Fs(to)150 3058 y(the)e(empt)m(y)f(list.)42 b(One)30 b(easy)h(w)m(a)m(y)
g(to)g(do)f(that)h(is)g(the)f(follo)m(wing:)390 3226
y Fk(make)47 b("buttonact)e([button.action])390 3445
y(to)i(button.action)d([:buttonact)h([]])390 3555 y(...)i(;)g(whatever)
f(you)h(want)f(the)h(button)f(to)i(do)390 3664 y(end)150
3872 y Fh(caseignoredp)390 4018 y Fk(CASEIGNOREDP)1524
b(\(variable\))150 4186 y Fs(if)42 b Fk(TRUE)p Fs(,)h(indicates)g(that)
g(lo)m(w)m(er)g(case)f(and)g(upp)s(er)d(case)k(letters)g(should)e(b)s
(e)g(considered)h(equal)g(b)m(y)150 4296 y Fk(EQUALP)p
Fs(,)29 b Fk(BEFOREP)p Fs(,)g Fk(MEMBERP)p Fs(,)f(etc.)42
b(Logo)32 b(initially)f(mak)m(es)h(this)e(v)-5 b(ariable)31
b Fk(TRUE)p Fs(,)e(and)h(buries)g(it.)150 4463 y(See)h([EQUALP],)f
(page)h(14,)h(,)e([BEF)m(OREP],)i(page)f(15,)h(,)e([MEMBERP],)i(page)f
(15,)g(.)150 4671 y Fh(commandline)390 4818 y Fk(COMMANDLINE)1524
b(\(variable\))150 4986 y Fs(con)m(tains)32 b(an)m(y)e(text)i(app)s
(earing)e(after)h(a)f(h)m(yphen)f(on)i(the)f(command)g(line)h(used)f
(to)h(start)g(Logo.)150 5193 y Fh(erract)390 5340 y Fk(ERRACT)1812
b(\(variable\))p eop end
%%Page: 90 103
TeXDict begin 90 102 bop 150 -116 a Fs(90)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(an)d(instructionlist)h(that)g(will)g(b)s(e)e
(run)g(in)h(the)h(ev)m(en)m(t)g(of)g(an)f(error.)39 b(T)m(ypically)29
b(has)e(the)g(v)-5 b(alue)28 b Fk([PAUSE])150 408 y Fs(to)j(allo)m(w)h
(in)m(teractiv)m(e)h(debugging.)150 576 y(See)e([P)-8
b(A)m(USE],)31 b(page)g(70,)h(.)150 785 y Fh(fullprin)m(tp)390
932 y Fk(FULLPRINTP)1477 b(\(variable\))150 1100 y Fs(if)29
b Fk(TRUE)p Fs(,)f(then)g(w)m(ords)g(that)h(w)m(ere)g(created)h(using)e
(bac)m(kslash)h(or)g(v)m(ertical)h(bar)e(\(to)i(include)e(c)m
(haracters)150 1209 y(that)38 b(w)m(ould)f(otherwise)h(not)f(b)s(e)g
(treated)h(as)g(part)f(of)g(a)h(w)m(ord\))f(are)h(prin)m(ted)f(with)g
(the)g(bac)m(kslashes)150 1319 y(or)32 b(v)m(ertical)i(bars)d(sho)m
(wn,)h(so)g(that)g(the)g(prin)m(ted)g(result)g(could)f(b)s(e)h(re-read)
g(b)m(y)f(Logo)i(to)g(pro)s(duce)e(the)150 1428 y(same)d(v)-5
b(alue.)41 b(If)27 b(FULLPRINTP)h(is)g Fk(TRUE)f Fs(then)h(the)g(empt)m
(y)g(w)m(ord)g(\(ho)m(w)m(ev)m(er)i(it)f(w)m(as)f(created\))h(prin)m
(ts)150 1538 y(as)i Fk(||)p Fs(.)40 b(\(Otherwise)30
b(it)h(prin)m(ts)f(as)h(nothing)f(at)h(all.\))150 1747
y Fh(k)m(ey)m(act)390 1894 y Fk(KEYACT)1478 b(\(variable\))150
2061 y Fs(if)31 b(nonempt)m(y)-8 b(,)31 b(should)f(b)s(e)g(an)g
(instruction)h(list)h(that)f(will)g(b)s(e)f(ev)-5 b(aluated)32
b(whenev)m(er)f(a)g(k)m(ey)g(is)g(pressed)150 2171 y(on)g(the)h(k)m
(eyb)s(oard.)43 b(The)31 b(instruction)h(list)g(can)g(use)f
Fk(READCHAR)e Fs(to)j(\014nd)e(out)h(what)h(k)m(ey)g(w)m(as)g(pressed.)
150 2280 y(Note)g(that)g(only)f(k)m(eys)h(that)f(pro)s(duce)f(c)m
(haracters)j(qualify;)e(pressing)g Fk(SHIFT)e Fs(or)j
Fk(CONTROL)d Fs(alone)j(will)150 2390 y(not)f(cause)g
Fk(KEYACT)d Fs(to)j(b)s(e)f(ev)-5 b(aluated.)150 2558
y(Note)35 b(that)f(it's)g(p)s(ossible)f(for)g(the)h(user)f(to)h(press)f
(a)g(k)m(ey)i(during)d(the)i(ev)-5 b(aluation)35 b(of)e(the)h
(instruction)150 2667 y(list.)54 b(If)35 b(this)f(w)m(ould)h(confuse)f
(y)m(our)h(program,)h(prev)m(en)m(t)f(it)g(b)m(y)g(temp)s(orarily)g
(setting)g Fk(KEYACT)e Fs(to)j(the)150 2777 y(empt)m(y)31
b(list.)41 b(One)30 b(easy)h(w)m(a)m(y)g(to)h(do)e(that)h(is)f(the)h
(follo)m(wing:)390 2945 y Fk(make)47 b("keyact)e([key.action])390
3164 y(to)i(key.action)e([:keyact)h([]])390 3273 y(...)h(;)g(whatever)f
(you)h(want)f(the)h(key)g(to)g(do)390 3383 y(end)150
3592 y Fh(loadnoisily)390 3739 y Fk(LOADNOISILY)1572
b(\(variable\))150 3906 y Fs(if)41 b Fk(TRUE)p Fs(,)i(prin)m(ts)d(the)h
(names)g(of)g(pro)s(cedures)f(de\014ned)g(when)g(loading)i(from)e(a)i
(\014le)f(\(including)g(the)150 4016 y(temp)s(orary)30
b(\014le)g(made)h(b)m(y)f Fk(EDIT)p Fs(\).)150 4184 y(See)h([EDIT],)f
(page)i(61,)f(.)150 4392 y Fh(prin)m(tdepthlimit)390
4539 y Fk(PRINTDEPTHLIMIT)1380 b(\(variable\))150 4707
y Fs(if)41 b(a)h(nonnegativ)m(e)i(in)m(teger,)i(indicates)c(the)g
(maxim)m(um)f(depth)g(of)g(sublist)h(structure)f(that)h(will)g(b)s(e)
150 4817 y(prin)m(ted)30 b(b)m(y)g Fk(PRINT)p Fs(,)f(etc.)150
4984 y(See)i([PRINT],)f(page)h(19,)h(.)150 5193 y Fh(prin)m(t)m
(widthlimit)390 5340 y Fk(PRINTWIDTHLIMIT)1380 b(\(variable\))p
eop end
%%Page: 91 104
TeXDict begin 91 103 bop 150 -116 a Fs(Chapter)30 b(11:)41
b(Sp)s(ecial)31 b(V)-8 b(ariables)2325 b(91)150 299 y(if)35
b(a)h(nonnegativ)m(e)g(in)m(teger,)i(indicates)e(the)g(maxim)m(um)f(n)m
(um)m(b)s(er)e(of)j(mem)m(b)s(ers)e(in)h(an)m(y)g(one)h(list)f(that)150
408 y(will)c(b)s(e)e(prin)m(ted)h(b)m(y)h Fk(PRINT)p
Fs(,)e(etc.)150 576 y(See)i([PRINT],)f(page)h(19,)h(.)150
775 y Fh(redefp)390 922 y Fk(REDEFP)1812 b(\(variable\))150
1090 y Fs(if)30 b Fk(TRUE)p Fs(,)g(allo)m(ws)i(primitiv)m(es)f(to)g(b)s
(e)e(erased)i(\()p Fk(ERASE)p Fs(\))f(or)g(rede\014ned)f(\()p
Fk(COPYDEF)p Fs(\).)150 1258 y(See)i([ERASE],)f(page)h(57,)h(,)e
([COPYDEF],)h(page)g(51,)h(.)150 1457 y Fh(startup)390
1604 y Fk(STARTUP)1764 b(\(variable\))150 1772 y Fs(if)31
b(assigned)g(a)g(list)h(v)-5 b(alue)32 b(in)e(a)i(\014le)f(loaded)g(b)m
(y)g Fk(LOAD)p Fs(,)f(that)i(v)-5 b(alue)31 b(is)g(run)f(as)h(an)g
(instructionlist)g(after)150 1881 y(the)g(loading.)150
2049 y(See)g([LO)m(AD],)g(page)g(63,)h(.)150 2248 y Fh(un)m(bury)m
(onedit)390 2395 y Fk(UNBURYONEDIT)1333 b(\(variable\))150
2563 y Fs(if)34 b Fk(TRUE)p Fs(,)g(causes)g(an)m(y)h(pro)s(cedure)e
(de\014ned)f(during)h Fk(EDIT)g Fs(or)h Fk(LOAD)f Fs(to)h(b)s(e)g(un)m
(buried,)f(so)h(that)h(it)g(will)150 2672 y(b)s(e)29
b(sa)m(v)m(ed)i(b)m(y)e(a)h(later)g Fk(SAVE)p Fs(.)40
b(Files)30 b(that)g(w)m(an)m(t)h(to)f(de\014ne)f(and)g(bury)f(pro)s
(cedures)g(m)m(ust)i(do)f(it)h(in)f(that)150 2782 y(order.)150
2950 y(See)i([EDIT],)f(page)i(61,)f(,)g(See)f([LO)m(AD],)i(page)f(63,)h
(,)e(See)h([SA)-10 b(VE],)30 b(page)h(62,)h(.)150 3149
y Fh(usealternatenames)390 3296 y Fk(USEALTERNATENAMES)43
b(\(variable\))150 3464 y Fs(if)e Fk(TRUE)p Fs(,)i(causes)f(Logo)g(to)g
(generate)g(non-English)f(w)m(ords)g(\(from)g(the)g Fk(Messages)e
Fs(\014le\))i(instead)h(of)150 3573 y Fk(TRUE)p Fs(,)29
b Fk(FALSE)p Fs(,)h Fk(END)p Fs(,)f(etc.)150 3741 y(Logo)i(pro)m(vides)
g(the)f(follo)m(wing)i(buried)d(v)-5 b(ariables)31 b(that)g(can)g(b)s
(e)f(used)f(b)m(y)i(programs:)150 3940 y Fh(logo)m(v)m(ersion)390
4087 y Fk(LOGOVERSION)1667 b(\(variable\))150 4255 y
Fs(a)31 b(real)g(n)m(um)m(b)s(er)e(indicating)i(the)g(Logo)g(v)m
(ersion)g(n)m(um)m(b)s(er,)e(e.g.,)j(5.5)150 4454 y Fh(logoplatform)390
4601 y Fk(LOGOPLATFORM)1667 b(\(variable\))150 4769 y
Fs(one)31 b(of)f(the)h(follo)m(wing)h(w)m(ords:)40 b
Fk(wxWidgets)p Fs(,)28 b Fk(X11)p Fs(,)i Fk(Windows)p
Fs(,)e(or)j Fk(Unix-nographics)p Fs(.)p eop end
%%Page: 92 105
TeXDict begin 92 104 bop eop end
%%Page: 93 106
TeXDict begin 93 105 bop 3659 -116 a Fs(93)150 299 y
Fp(12)80 b(In)l(ternationalization)150 639 y Fs(Berk)m(eley)25
b(Logo)f(has)e(limited)i(supp)s(ort)d(for)i(non-English-sp)s(eaking)f
(users.)38 b(Alas,)25 b(there)e(is)g(no)g(Unico)s(de)150
749 y(supp)s(ort,)29 b(and)h(high-bit-on)g(ASCI)s(I)f(co)s(des)i(w)m
(ork)f(in)g(some)h(con)m(texts)h(but)e(not)g(others.)150
917 y(If)e(y)m(ou)h(w)m(an)m(t)h(to)f(translate)h(Berk)m(eley)h(Logo)f
(for)e(use)h(with)f(another)h(language,)i(there)e(are)g(three)g(main)
150 1026 y(things)h(y)m(ou)h(ha)m(v)m(e)h(to)f(do:)390
1194 y Fk(1.)47 b(Primitive)e(names)390 1303 y(2.)i(Error)g(\(and)f
(other\))g(messages)390 1413 y(3.)h(Documentation)150
1581 y Fs(F)-8 b(or)28 b(primitiv)m(e)g(names,)g(the)f(easiest)i(thing)
e(is)g(to)h(pro)m(vide)g(a)f(startup)g(\014le)g(that)h(de\014nes)e
(aliases)j(for)e(the)150 1690 y(English)j(primitiv)m(e)h(names,)g
(using)f Fk(COPYDEF)p Fs(:)390 1858 y Fk(COPYDEF)46 b("AVANT)g
("FORWARD)150 2026 y Fs(This)27 b(should)f(tak)m(e)k(care)e(of)g(it,)h
(unless)e(y)m(our)g(language's)j(name)d(for)h(one)g(primitiv)m(e)g(is)g
(sp)s(elled)f(lik)m(e)i(the)150 2135 y(English)f(name)g(of)h(a)f
(di\013eren)m(t)h(primitiv)m(e.)41 b(In)28 b(that)h(case)g(y)m(ou)g(ha)
m(v)m(e)g(to)g(turn)e Fk(REDEFP)g Fs(on)h(and)g(b)s(e)g(sure)150
2245 y(to)j(cop)m(y)g(the)g(non-con\015icting)g(name)f(b)s(efore)g(o)m
(v)m(erwriting)i(the)f(con\015icting)g(one!)150 2413
y Fk(")p Fs(Primitiv)m(es)p Fk(")j Fs(that)h(are)f(actually)i(in)d(the)
h(Logo)h(library)-8 b(,)35 b(of)f(course,)h(can)g(just)e(b)s(e)g
(replaced)h(or)g(aug-)150 2522 y(men)m(ted)d(with)f(nativ)m
(e-language-named)j(Logo)f(pro)s(cedures)d(and)h(\014lenames.)150
2690 y(Of)k(course)h(Logo)h(programs)f(will)g(still)h(not)f(lo)s(ok)g
(lik)m(e)i(y)m(our)e(nativ)m(e)h(language)g(if)f(the)g(w)m(ord)f(order)
h(is)150 2800 y(dramatically)d(di\013eren)m(t,)f(esp)s(ecially)h(if)e
(y)m(ou)h(don't)f(put)g(v)m(erbs)g(b)s(efore)g(their)g(ob)5
b(jects.)150 2967 y(F)-8 b(or)33 b(error)f(messages,)j(there)d(is)h(a)g
(\014le)f(named)g Fk(Messages)f Fs(in)h(the)h Fk(logolib)d
Fs(directory)j(with)f(texts)i(of)150 3077 y(messages,)c(one)e(p)s(er)e
(line.)40 b(Y)-8 b(ou)29 b(can)f(replace)g(this)g(with)g(a)g(\014le)f
(for)h(y)m(our)g(o)m(wn)f(language.)42 b(Do)28 b(not)g(add,)150
3186 y(delete,)40 b(or)d(reorder)g(lines;)k(Logo)d(\014nds)d(messages)j
(b)m(y)f(line)h(n)m(um)m(b)s(er.)59 b(The)37 b(sequences)g
Fk(\045p)p Fs(,)h Fk(\045s)p Fs(,)h(and)150 3296 y Fk(\045t)30
b Fs(in)g(these)g(messages)h(represen)m(t)g(v)-5 b(ariable)31
b(parts)f(of)g(the)h(message)g(and)f(should)f(not)h(b)s(e)g
(translated.)150 3406 y(\(\045p)i Fk(PRINT)p Fs(s)f(the)h(v)-5
b(ariable)33 b(part,)g(while)g(\045s)f Fk(SHOW)p Fs(s)f(it)i({)f(that)h
(is,)h(the)e(di\013erence)h(is)f(ab)s(out)h(whether)150
3515 y(or)f(not)h(brac)m(k)m(ets)h(are)f(sho)m(wn)f(surrounding)e(a)j
(list.)47 b(\045t)33 b(means)f(that)h(the)g(v)-5 b(ariable)33
b(part)g(is)f(a)h(C)f(text)150 3625 y(string)27 b(rather)f(than)h(a)g
(Logo)g(ob)5 b(ject.\))41 b(If)26 b(y)m(ou)h(w)m(an)m(t)h(to)f(c)m
(hange)h(the)f(order)f(of)h(t)m(w)m(o)h(v)-5 b(ariable)27
b(parts)g(\(no)150 3734 y(reorderable)k(message)g(has)f(more)h(than)f
(t)m(w)m(o\),)i(y)m(ou)f(w)m(ould)f(for)g(example)h(replace)g(the)g
(line)390 3902 y Fk(\045p)47 b(doesn't)f(like)h(\045s)g(as)g(input)150
4070 y Fs(with)390 4237 y Fk(\045+s)g(is)g(a)h(lousy)e(input)g(to)h
(\045p)150 4405 y Fs(The)32 b(plus)f(sign)h(tells)h(the)g(message)g
(prin)m(ter)f(to)h(rev)m(erse)g(the)f(order;)h(y)m(ou)g(m)m(ust)f(rev)m
(erse)h(the)f(order)g(of)150 4515 y(\045p)24 b(and)h(\045s,)g(if)g(b)s
(oth)g(are)g(used,)g(to)h(matc)m(h.)40 b(The)24 b(plus)g(sign)h(go)s
(es)h(just)e(after)i(the)f(\014rst)f(p)s(ercen)m(t)h(sign)g(in)150
4624 y(the)h(message,)i(whic)m(h)d(migh)m(t)h(not)g(b)s(e)f(at)h(the)f
(b)s(eginning)g(of)h(the)g(line.)39 b(The)25 b(sequence)h
Fk(\\n)f Fs(in)g(a)h(message)150 4734 y(represen)m(ts)j(a)h(newline;)g
(don't)f(b)s(e)g(fo)s(oled)h(in)m(to)g(thinking)f(that)h(the)g
Fk(n)f Fs(is)g(part)g(of)h(the)f(follo)m(wing)i(w)m(ord.)150
4902 y(Some)40 b(messages)h(app)s(ear)f(t)m(wice)i(in)e(the)g(\014le;)
45 b(this)40 b(isn't)h(a)f(mistak)m(e.)72 b(The)40 b(t)m(w)m(o)h
(spaces)g(b)s(efore)f Fk(to)150 5011 y Fs(in)34 b Fk(I)c(don't)f(know)g
(how\\)g(\\)h(to)k Fs(aren't)g(a)g(mistak)m(e)i(either.)52
b(The)34 b(message)h(con)m(taining)g(just)f Fk(\045p)f
Fs(is)h(for)150 5121 y(user-pro)m(vided)g(error)g(messages)i(in)f
Fk(THROW)29 b("ERROR)n Fs(.)54 b(The)34 b(message)i Fk("\\)30
b(\\)g(in)g(\045s\\n\045s")i Fs(is)j(the)g(part)150 5230
y(of)g(all)h(error)f(messages)h(that)g(indicates)g(where)f(the)g(error)
g(o)s(ccurred)f(if)h(it)h(w)m(as)f(inside)g(a)h(pro)s(cedure;)150
5340 y(y)m(ou)26 b(migh)m(t)h(w)m(an)m(t)g(to)g(c)m(hange)g(the)f(w)m
(ord)g Fk(in)g Fs(to)g(y)m(our)g(language.)41 b Fk(\045s)30
b(defined\\n)23 b Fs(is)k(what)f Fk(LOAD)e Fs(prin)m(ts)p
eop end
%%Page: 94 107
TeXDict begin 94 106 bop 150 -116 a Fs(94)2551 b(BERKELEY)30
b(LOGO)g(6.1)150 299 y(for)e(eac)m(h)h(pro)s(cedure)d(de\014ned)h(if)h
(the)g(v)-5 b(ariable)29 b Fk(LOADNOISILY)24 b Fs(is)k
Fk(TRUE)p Fs(.)39 b Fk("to)30 b(\045p\\nend\\n\\n")24
b Fs(is)k(what)150 408 y Fk(EDIT)h Fs(puts)h(in)g(the)g(temp)s(orary)g
(\014le)h(if)f(y)m(ou)h(ask)f(to)i(edit)e(a)h(pro)s(cedure)e(that)i
(isn't)g(already)g(de\014ned.)150 576 y(Also)j(in)f(the)h
Fk(Messages)d Fs(\014le)i(are)h(lines)g(con)m(taining)h(only)e(one)h(w)
m(ord)f(eac)m(h;)k(the)c(\014rst)g(of)g(these)h(is)g(the)150
686 y(w)m(ord)c Fk(true)p Fs(.)40 b(Some)31 b(of)f(these)h(w)m(ords)f
(are)h(recognized)h(b)m(y)f(Logo)g(in)f(user)g(input;)g(some)h(are)g
(generated)150 795 y(b)m(y)26 b(Logo;)j(some)d(are)g(b)s(oth.)39
b(F)-8 b(or)27 b(example,)g(the)g(w)m(ords)e Fk(TRUE)g
Fs(and)g Fk(FALSE)g Fs(are)h(recognized)h(as)g(Bo)s(olean)150
905 y(v)-5 b(alues)38 b(b)m(y)f Fk(IF)g Fs(and)g Fk(IFELSE)p
Fs(,)h(and)e(are)i(also)h(generated)f(b)m(y)f(Logo)i(as)f(outputs)f
(from)g(the)g(primitiv)m(e)150 1015 y(predicates)27 b(suc)m(h)f(as)g
Fk(EQUALP)p Fs(.)38 b(The)25 b(w)m(ord)h Fk(END)f Fs(is)h(recognized)i
(as)e(the)h(end)e(of)h(a)h(pro)s(cedure)e(de\014nition,)150
1124 y(and)30 b(ma)m(y)h(b)s(e)f(generated)i(when)d(Logo)j
(reconstructs)f(a)g(pro)s(cedure)e(b)s(o)s(dy)g(for)i
Fk(PO)f Fs(or)g Fk(EDIT)p Fs(.)40 b(I'v)m(e)32 b(used)150
1234 y(capital)25 b(letters)g(in)e(this)h(paragraph)f(for)h(easier)g
(reading,)i(but)d(the)g(w)m(ords)h(in)f(the)h Fk(Messages)d
Fs(\014le)j(should)150 1343 y(b)s(e)30 b(in)g(lo)m(w)m(er)h(case.)150
1511 y(If)36 b(y)m(ou)g(replace)h(these)f(with)g(non-English)g(w)m
(ords,)h(Logo)g(will)f Fg(r)-5 b(e)g(c)g(o)g(gnize)45
b Fs(b)s(oth)35 b(the)h(English)g(names)150 1621 y(and)28
b(y)m(our)h(alternate)i(names.)40 b(F)-8 b(or)30 b(example,)g(if)f(y)m
(ou)g(replace)h(the)f(w)m(ord)f Fk(true)g Fs(with)h Fk(vrai)e
Fs(then)i(Logo)150 1730 y(will)i(understand)d(b)s(oth)i(of)g(these:)390
1898 y Fk(IF)47 b("TRUE)g([PRINT)f("YES])390 2007 y(IF)h("VRAI)g
([PRINT)f("YES])150 2175 y Fs(The)39 b(v)-5 b(ariable)41
b Fk(UseAlternateNames)34 b Fs(determines)40 b(whether)f(Logo)i(will)f
Fg(gener)-5 b(ate)47 b Fs(other-language)150 2285 y(names)31
b({)h(for)f(example,)i(whether)d(predicate)i(functions)f(return)f(the)i
(other-language)h(alternates)g(for)150 2394 y Fk(TRUE)27
b Fs(and)g Fk(FALSE)p Fs(.)38 b(This)27 b(v)-5 b(ariable)29
b(is)f Fk(FALSE)e Fs(b)m(y)i(default,)g(meaning)g(that)h(the)f(English)
f(w)m(ords)g(will)i(b)s(e)150 2504 y(generated.)150 2672
y(Y)-8 b(ou)46 b(migh)m(t)g(wish)e(to)i(ha)m(v)m(e)h(English-named)e
(predicate)h(functions)f(generate)h(English)f Fk(TRUE)g
Fs(and)150 2781 y Fk(FALSE)p Fs(,)35 b(while)h(other-language-named)h
(predicates)f(generate)h(the)e(alternate)i(w)m(ords.)55
b(This)35 b(can)h(b)s(e)150 2891 y(done)26 b(b)m(y)h(lea)m(ving)h
Fk(UseAlternateNames)22 b Fs(false,)28 b(and)e(instead)h(of)g
(de\014ning)e(the)i(other-language)i(pred-)150 3000 y(icates)j(with)e
Fk(COPYDEF)p Fs(,)f(do)h(it)h(this)f(w)m(a)m(y:)390 3168
y Fk(to)47 b(french.boolean)d(:bool)390 3278 y(if)j(equalp)f(:bool)h
("true)f([output)g("vrai])390 3387 y(if)h(equalp)f(:bool)h("false)f
([output)g("faux])390 3497 y(output)g(:bool)g(;)i(shouldn't)d(happen)
390 3606 y(end)390 3826 y(to)i(make.french.predicate)42
b(:french)k(:english)g(:arity)390 3935 y(define)g(:french)g
(`[[[inputs])f(,[:arity]])1201 4045 y([output)h(french.boolean)581
4154 y(apply)g(,[word)g("")i(:english])d(:inputs]])390
4264 y(end)390 4483 y(?)i(make.french.predicate)42 b("egal?)47
b("equal?)e(2)390 4593 y(?)i(pr)h(egal?)e(3)h(4)390 4702
y(faux)390 4812 y(?)g(pr)h(egal?)e(4)h(4)390 4922 y(vrai)390
5031 y(?)g(pr)h(equal?)e(3)h(4)390 5141 y(false)390 5250
y(?)g(pr)h(equal?)e(4)h(4)p eop end
%%Page: 95 108
TeXDict begin 95 107 bop 3659 -116 a Fs(95)390 299 y
Fk(true)150 467 y Fs(The)28 b(third)f(input)g(to)i Fk
(make.french.predicate)23 b Fs(is)28 b(the)h(n)m(um)m(b)s(er)d(of)j
(inputs)e(that)i(the)f(predicate)h(ex-)150 576 y(p)s(ects.)39
b(This)26 b(solution)h(isn't)f(quite)h(p)s(erfect)f(b)s(ecause)g(the)h
(in\014x)e(predicates)i(\()p Fk(=)p Fs(,)g Fk(<)p Fs(,)g
Fk(>)p Fs(\))g(will)f(still)h(output)150 686 y(in)d(English.)38
b(If)24 b(y)m(ou)h(w)m(an)m(t)g(them)g(to)g(generate)h
(alternate-language)h(w)m(ords,)f(set)f Fk(UseAlternateNames)150
795 y Fs(to)31 b Fk(TRUE)e Fs(instead.)150 963 y(Some)24
b(of)h(the)f(w)m(ords)g(in)g(this)g(section)h(of)g(the)f
Fk(Messages)e Fs(\014le)j(are)f(names)g(of)h(Logo)g(primitiv)m(es)g(\()
p Fk(OUTPUT)p Fs(,)150 1073 y Fk(STOP)p Fs(,)g Fk(GOTO)p
Fs(,)h Fk(TAG)p Fs(,)f Fk(IF)p Fs(,)h Fk(IFELSE)p Fs(,)f
Fk(TO)p Fs(,)h Fk(.MACRO)p Fs(\).)38 b(T)-8 b(o)26 b(translate)g(these)
g(names,)g(y)m(ou)g(m)m(ust)f(use)g Fk(COPYDEF)150 1182
y Fs(as)k(describ)s(ed)e(earlier,)j(in)e(addition)h(to)g(c)m(hanging)g
(the)g(names)f(in)g Fk(Messages)p Fs(.)38 b(Y)-8 b(ou)29
b(should)f(b)s(e)f(consis-)150 1292 y(ten)m(t)k(in)f(these)h(t)m(w)m(o)
h(steps.)41 b(Don't)31 b(forget)g(the)g(p)s(erio)s(d)e(in)h
Fk(.macro)p Fs(!)150 1460 y(F)-8 b(or)40 b(do)s(cumen)m(tation,)j
(there)d(are)g(t)m(w)m(o)g(kinds:)58 b(this)40 b(man)m(ual)f(and)g(the)
h(help)f(\014les.)68 b(The)39 b(latter)i(are)150 1569
y(generated)35 b(automatically)j(from)c(this)g(man)m(ual)h(if)f(y)m(ou)
h(ha)m(v)m(e)g(a)g(Unix)g(system,)g(so)g(in)f(that)h(case)h(y)m(ou)150
1679 y(need)26 b(only)g(translate)h(this)f(man)m(ual,)i(main)m(taining)
f(the)f(format.)40 b(\(The)26 b(automatic)i(help\014le)e(generator)150
1788 y(notices)i(things)e(lik)m(e)j(capital)f(letters,)h(tabs,)f(h)m
(yphens,)e(and)g(equal)h(signs)g(at)g(the)g(b)s(eginnings)f(of)h
(lines.\))150 1898 y(The)33 b(program)h Fk(makefile.c)d
Fs(ma)m(y)k(require)e(mo)s(di\014cation)h(b)s(ecause)g(a)h(few)e(of)h
(the)g(primitiv)m(e)h(names)150 2007 y(are)c(sp)s(ecial)g(cases)g
(\(e.g.,)h Fk(LOG10)d Fs(is)i(the)f(only)h(name)f(with)g(digits)h
(included\).)150 2175 y(If)g(y)m(ou)h(don't)g(ha)m(v)m(e)h(Unix)e(to)s
(ols,)i(y)m(ou)f(can)g(just)f(translate)i(eac)m(h)g(help\014le)e
(individually)-8 b(.)45 b(A)32 b(p)s(erio)s(d)e(in)150
2285 y(a)f(primitiv)m(e)h(name)e(is)h(represen)m(ted)g(as)g(a)g
Fk(D)f Fs(in)g(the)h(\014lename;)h(there)f(are)g(no)f(\014les)h(for)f
(question)h(marks)150 2394 y(b)s(ecause)h(the)g Fk(HELP)e
Fs(command)i(lo)s(oks)g(for)g(the)g(\014le)f(named)h(after)g(the)g
(corresp)s(onding)f(primitiv)m(e)h(that)150 2504 y(ends)g(in)g
Fk(P)p Fs(.)p eop end
%%Page: 96 109
TeXDict begin 96 108 bop eop end
%%Page: 97 110
TeXDict begin 97 109 bop 3659 -116 a Fs(97)150 299 y
Fp(INDEX)146 610 y Fr(*)150 735 y Fc(*)20 b Fb(:)13 b(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)34 b Fc(29)146 1032 y Fr(+)150
1157 y Fa(+)19 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
b Fc(29)146 1454 y Fr({)150 1579 y Fc(-)9 b Fb(:)j(:)h(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)23 b Fc(29)146 1876 y Fr(.)150
2001 y Fc(.defmacro)12 b Fb(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fc(83)150 2091
y(.eq)7 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
b Fc(15)150 2181 y(.macro)11 b Fb(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
b Fc(83)150 2271 y(.ma)n(yb)r(eoutput)10 b Fb(:)i(:)h(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fc(71)150
2362 y(.setbf)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b
Fc(13)150 2452 y(.set\014rst)17 b Fb(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31
b Fc(13)150 2542 y(.setitem)8 b Fb(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23
b Fc(13)150 2632 y(.setsegmen)n(tsize)7 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21 b Fc(65)146 2950
y Fr(/)150 3075 y Fc(/)f Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)34 b Fc(29)146 3372 y Fo(<)150 3497 y Fa(<)19 b Fb(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fc(32)150
3587 y Fa(<)p Fc(=)23 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37
b Fc(32)150 3677 y Fa(<>)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
31 b Fc(15)146 3974 y Fr(=)150 4099 y Fc(=)9 b Fb(:)j(:)i(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)23 b Fc(14)146 4396 y Fo(>)150
4521 y Fa(>)c Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
b Fc(32)150 4611 y Fa(>)p Fc(=)23 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)37 b Fc(32)146 4908 y Fr(`)150 5033 y Fc(`)11
b Fb(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
b Fc(72)2021 610 y Fr(A)2025 741 y Fc(allop)r(en)c Fb(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)35 b Fc(23)2025 834 y(Allo)n(wGetSet)17
b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)32 b Fc(4)2025 926 y(allo)n(wgetset)7 b Fb(:)16
b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)22 b Fc(89)2025 1018 y(and)11 b Fb(:)h(:)h(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)25 b Fc(35)2025 1110 y(apply)14 b Fb(:)e(:)h(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28
b Fc(76)2025 1202 y(arc)22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36
b Fc(39)2025 1294 y(arctan)17 b Fb(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(31)2025 1386 y(arit)n(y)11 b Fb(:)h(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25
b Fc(55)2025 1478 y(arra)n(y)c Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)36
b Fc(9)2025 1570 y(arra)n(y?)18 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
b Fc(14)2025 1663 y(arra)n(yp)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
b Fc(14)2025 1755 y(arra)n(ytolist)20 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
b Fc(10)2025 1847 y(ascii)17 b Fb(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)31
b Fc(16)2025 1939 y(ashift)14 b Fb(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
b Fc(34)2021 2280 y Fr(B)2025 2412 y Fc(bac)n(k)13 b
Fb(:)f(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fc(37)2025 2504
y(bac)n(kground)15 b Fb(:)d(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)29 b Fc(46)2025 2596 y(b)r(efore?)21
b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)35 b Fc(15)2025 2688 y(b)r(eforep)17
b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)32 b Fc(15)2025 2780 y(bf)22 b
Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fc(11)2025
2872 y(bfs)7 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
b Fc(11)2025 2964 y(bg)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)29
b Fc(46)2025 3056 y(bitand)15 b Fb(:)d(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)29
b Fc(33)2025 3149 y(bitnot)21 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
b Fc(34)2025 3241 y(bitor)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23
b Fc(33)2025 3333 y(bitxor)f Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
b Fc(33)2025 3425 y(bk)14 b Fb(:)e(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28
b Fc(37)2025 3517 y(bl)6 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)21 b Fc(12)2025 3609 y(buried)c Fb(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(54)2025 3701 y(buried?)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30
b Fc(60)2025 3793 y(buriedp)13 b Fb(:)f(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27
b Fc(60)2025 3885 y(bury)12 b Fb(:)f(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)26
b Fc(59)2025 3978 y(bury)n(all)6 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21
b Fc(59)2025 4070 y(buryname)7 b Fb(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b
Fc(59)2025 4162 y(but\014rst)17 b Fb(:)12 b(:)h(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31
b Fc(11)2025 4254 y(but\014rsts)18 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
b Fc(11)2025 4346 y(butlast)6 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
b Fc(12)2025 4438 y(button)11 b Fb(:)h(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25
b Fc(47)2025 4530 y(button?)10 b Fb(:)i(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
b Fc(47)2025 4622 y(buttonact)11 b Fb(:)h(:)h(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b
Fc(89)2025 4715 y(buttonp)6 b Fb(:)12 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21
b Fc(47)2025 4807 y(b)n(y)n(e)16 b Fb(:)c(:)h(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)31 b Fc(71)p eop end
%%Page: 98 111
TeXDict begin 98 110 bop 150 -116 a Fs(98)2551 b(BERKELEY)30
b(LOGO)g(6.1)146 299 y Fr(C)150 416 y Fc(cascade)15 b
Fb(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)29 b Fc(79)150 504 y(cascade.2)21
b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)33 b Fc(81)150 591 y(case)22 b Fb(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fc(74)150 679 y(case-insensitiv)n(e)8
b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
23 b Fc(6)150 767 y(caseignoredp)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)27 b Fc(89)150
854 y(catc)n(h)18 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)32
b Fc(69)150 942 y(c)n(har)18 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32
b Fc(17)150 1029 y(clean)22 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36
b Fc(40)150 1117 y(clearscreen)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)25 b
Fc(40)150 1205 y(cleartext)12 b Fb(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b
Fc(26)150 1292 y(clic)n(kp)r(os)9 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24
b Fc(47)150 1380 y(close)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
b Fc(23)150 1467 y(closeall)e Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
b Fc(23)150 1555 y(co)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
34 b Fc(70)150 1643 y(com)n(bine)20 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35
b Fc(10)150 1730 y(commandline)22 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36 b Fc(89)150 1818
y(commen)n(ts)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 b Fc(6)150 1905
y(Computer)p 492 1905 24 4 v 34 w(Science)p 769 1905
V 34 w(Logo)p 965 1905 V 35 w(St)n(yle)13 b Fb(:)f(:)h(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)28
b Fc(1)150 1993 y(cond)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
b Fc(74)150 2081 y(con)n(ten)n(ts)19 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
b Fc(54)150 2168 y(con)n(tin)n(ue)17 b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31
b Fc(70)150 2256 y(cop)n(ydef)14 b Fb(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
b Fc(51)150 2343 y(Cop)n(yrigh)n(t)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)24
b Fc(1)150 2431 y(cos)e Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
b Fc(31)150 2519 y(coun)n(t)14 b Fb(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
b Fc(16)150 2606 y(crossmap)22 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b
Fc(79)150 2694 y(cs)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)21 b Fc(40)150 2781 y(cslsload)12 b Fb(:)j(:)e(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27
b Fc(63)150 2869 y(ct)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)21 b Fc(26)150 2957 y(cursor)g Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
b Fc(26)146 3199 y Fr(D)150 3316 y Fc(decreasefon)n(t)22
b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)35 b Fc(27)150 3404 y(de\014ne)8 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
23 b Fc(50)150 3491 y(de\014ned?)c Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35
b Fc(54)150 3579 y(de\014nedp)17 b Fb(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31
b Fc(54)150 3666 y(delimiters)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27
b Fc(6)150 3754 y(dequeue)21 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
b Fc(14)150 3842 y(di\013erence)16 b Fb(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b
Fc(29)150 3929 y(do.un)n(til)12 b Fb(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)26
b Fc(73)150 4017 y(do.while)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)33
b Fc(73)150 4105 y(dribble)6 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
b Fc(24)146 4347 y Fr(E)150 4464 y Fc(ed)c Fb(:)c(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)31 b Fc(61)150 4552 y(edall)11 b Fb(:)j(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)25 b Fc(62)150 4639 y(edit)9 b Fb(:)k(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)23 b Fc(61)150 4727 y(edit\014le)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
25 b Fc(61)150 4814 y(editor)8 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)23
b Fc(61)150 4902 y(edn)13 b Fb(:)f(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27
b Fc(62)150 4990 y(edns)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
b Fc(62)150 5077 y(edpl)19 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)33
b Fc(62)150 5165 y(edpls)21 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
b Fc(62)150 5252 y(edps)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
b Fc(62)150 5340 y(empt)n(y?)18 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)32
b Fc(14)2025 299 y(empt)n(yp)15 b Fb(:)d(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)29
b Fc(14)2025 387 y(eof)6 b(?)21 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
b Fc(25)2025 474 y(eofp)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35
b Fc(25)2025 562 y(epspict)6 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
b Fc(47)2025 650 y(equal?)c Fb(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(14)2025 738 y(equalp)14 b Fb(:)e(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28
b Fc(14)2025 826 y(er)6 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)21 b Fc(57)2025 914 y(erall)c Fb(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(58)2025 1001 y(erase)6 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
b Fc(57)2025 1089 y(erase\014le)8 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)23
b Fc(23)2025 1177 y(erf)12 b Fb(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)26
b Fc(23)2025 1265 y(ern)19 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
b Fc(58)2025 1353 y(erns)21 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)36
b Fc(58)2025 1440 y(erpl)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23
b Fc(58)2025 1528 y(erpls)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
b Fc(58)2025 1616 y(erps)c Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)36
b Fc(58)2025 1704 y(erract)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
b Fc(89)2025 1792 y(error)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)23
b Fc(70)2025 1879 y(errors)10 b Fb(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
b Fc(87)2025 1967 y(exp)14 b Fb(:)e(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28
b Fc(30)2021 2230 y Fr(F)2025 2348 y Fc(fd)22 b Fb(:)13
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fc(37)2025 2436
y(fence)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fc(40)2025
2523 y(\014le?)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
b Fc(26)2025 2611 y(\014lep)19 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
b Fc(26)2025 2699 y(\014ll)13 b Fb(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)27 b Fc(41)2025 2787 y(\014lled)9 b Fb(:)k(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)23 b Fc(41)2025 2875 y(\014lter)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)25 b Fc(78)2025 2962 y(\014nd)9 b Fb(:)i(:)j(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)23 b Fc(78)2025 3050 y(\014rst)6 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)21 b Fc(10)2025 3138 y(\014rsts)8 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)23 b Fc(11)2025 3226 y(fon)n(t)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)21 b Fc(28)2025 3314 y(for)10 b Fb(:)j(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)24 b Fc(72)2025 3402 y(foreac)n(h)e Fb(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)36 b Fc(76)2025 3489 y(forev)n(er)9 b
Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fc(67)2025 3577 y(form)12
b Fb(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)26 b Fc(33)2025 3665
y(forw)n(ard)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fc(37)2025
3753 y(fput)22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38
b Fc(9)2025 3841 y(fs)12 b Fb(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)26 b Fc(41)2025 3928 y(fullprin)n(tp)17 b Fb(:)c(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(90)2025 4016 y(fullscreen)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b
Fc(41)2025 4104 y(fulltext)19 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
b Fc(51)2021 4351 y Fr(G)2025 4469 y Fc(gc)19 b Fb(:)14
b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fc(64)2025 4556
y(gensym)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fc(10)2025 4644
y(getter)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fc(2)2025
4732 y(global)6 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21 b
Fc(52)2025 4820 y(goto)c Fb(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(71)2025 4908 y(gprop)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25
b Fc(53)2025 4995 y(greater?)e Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37
b Fc(32)2025 5083 y(greaterequal?)20 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fc(32)2025
5171 y(greaterequalp)16 b Fb(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)30 b Fc(32)2025 5259 y(greaterp)19
b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)34 b Fc(32)p eop end
%%Page: 99 112
TeXDict begin 99 111 bop 150 -116 a Fs(INDEX)3209 b(99)146
299 y Fr(H)150 415 y Fc(heading)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
b Fc(39)150 502 y(help)19 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)33
b Fc(63)150 590 y(hideturtle)11 b Fb(:)h(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fc(40)150
677 y(home)17 b Fb(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fc(38)150
764 y(h)n(t)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35
b Fc(40)146 1000 y Fr(I)150 1116 y Fc(if)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)30 b Fc(68)150 1203 y(ifelse)7 b
Fb(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fc(68)150 1291
y(i\013)h Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37
b Fc(68)150 1378 y(i\013alse)11 b Fb(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26
b Fc(68)150 1465 y(ift)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)32
b Fc(68)150 1552 y(iftrue)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30
b Fc(68)150 1640 y(ignore)22 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)36
b Fc(72)150 1727 y(increasefon)n(t)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b
Fc(27)150 1814 y(in)n(t)10 b Fb(:)i(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
b Fc(30)150 1902 y(in)n(v)n(ok)n(e)18 b Fb(:)12 b(:)i(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)32
b Fc(76)150 1989 y(iseq)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24
b Fc(31)150 2076 y(item)15 b Fb(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29
b Fc(12)146 2312 y Fr(K)150 2428 y Fc(k)n(ey?)15 b Fb(:)d(:)i(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)29 b Fc(26)150 2515 y(k)n(ey)n(act)17
b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fc(90)150 2602 y(k)n(eyp)12
b Fb(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)26 b Fc(26)146 2854
y Fr(L)150 2971 y Fc(lab)r(el)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
b Fc(41)150 3058 y(lab)r(elsize)18 b Fb(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32
b Fc(43)150 3145 y(last)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
b Fc(11)150 3233 y(lea)n(ving)f Fa(ucblogo)12 b Fb(:)j(:)e(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fc(5)150
3320 y(left)18 b Fb(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)32
b Fc(38)150 3407 y(less?)13 b Fb(:)i(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28
b Fc(32)150 3494 y(lessequal?)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)25
b Fc(32)150 3582 y(lessequalp)7 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b
Fc(32)150 3669 y(lessp)10 b Fb(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)25
b Fc(32)150 3756 y(line-con)n(tin)n(uation)15 b Fb(:)e(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 b Fc(6)150 3844
y(list)6 b Fb(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)21
b Fc(9)150 3931 y(list?)g Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34
b Fc(14)150 4018 y(listp)17 b Fb(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31
b Fc(14)150 4105 y(listtoarra)n(y)20 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33
b Fc(10)150 4193 y(ln)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)21 b Fc(30)150 4280 y(load)f Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
b Fc(63)150 4367 y(loadnoisily)14 b Fb(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)28 b Fc(90)150
4455 y(loadpict)6 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fc(46)150
4542 y(lo)r(cal)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)26
b Fc(52)150 4629 y(lo)r(calmak)n(e)10 b Fb(:)k(:)g(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
b Fc(52)150 4717 y(log10)d Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
b Fc(30)150 4804 y(logohelp)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)33
b Fc(63)150 4891 y(logoplatform)14 b Fb(:)i(:)d(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fc(91)150 4978
y(logo)n(v)n(ersion)7 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b Fc(91)150 5066
y(lo)n(w)n(ercase)g Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fc(17)150 5153
y(lput)6 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
b Fc(9)150 5240 y(lshift)i Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37
b Fc(34)150 5328 y(lt)13 b Fb(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)27 b Fc(38)2021 299 y Fr(M)2025 438 y Fc(macro?)21
b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)35 b Fc(85)2025 532 y(macro)r(expand)19
b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
34 b Fc(85)2025 627 y(macrop)17 b Fb(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(85)2025 721 y(mak)n(e)19 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
b Fc(51)2025 816 y(map)17 b Fb(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(77)2025 910 y(map.se)8 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
b Fc(77)2025 1005 y(mdarra)n(y)17 b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)31
b Fc(10)2025 1100 y(mditem)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27
b Fc(12)2025 1194 y(mdsetitem)17 b Fb(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)31 b Fc(13)2025
1289 y(mem)n(b)r(er)6 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b
Fc(17)2025 1383 y(mem)n(b)r(er?)h Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b
Fc(15)2025 1478 y(mem)n(b)r(erp)19 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
b Fc(15)2025 1572 y(min)n(us)7 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
b Fc(29)2025 1667 y(mo)r(dulo)16 b Fb(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31
b Fc(30)2025 1762 y(mousep)r(os)13 b Fb(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b
Fc(47)2021 2166 y Fr(N)2025 2305 y Fc(name)17 b Fb(:)c(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)32 b Fc(51)2025 2399 y(name?)16 b Fb(:)d(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31
b Fc(54)2025 2494 y(namelist)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)31
b Fc(55)2025 2588 y(namep)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27
b Fc(54)2025 2683 y(names)19 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
b Fc(55)2025 2778 y(no)r(des)11 b Fb(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)26
b Fc(56)2025 2872 y(no)r(dribble)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30
b Fc(24)2025 2967 y(norefresh)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37
b Fc(42)2025 3061 y(not)17 b Fb(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32
b Fc(35)2025 3156 y(notequal?)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b
Fc(15)2025 3250 y(notequalp)10 b Fb(:)i(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fc(15)2025
3345 y(n)n(um)n(b)r(er?)13 b Fb(:)f(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fc(16)2025
3439 y(n)n(um)n(b)r(erp)9 b Fb(:)j(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fc(16)2021
3844 y Fr(O)2025 3983 y Fc(op)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)29 b Fc(69)2025 4077 y(op)r(enapp)r(end)6 b Fb(:)13
b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
21 b Fc(23)2025 4172 y(op)r(enread)h Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37
b Fc(22)2025 4266 y(op)r(en)n(up)r(date)14 b Fb(:)e(:)h(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28 b
Fc(23)2025 4361 y(op)r(en)n(write)11 b Fb(:)i(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
b Fc(22)2025 4456 y(or)c Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36
b Fc(35)2025 4550 y(output)11 b Fb(:)h(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25
b Fc(69)p eop end
%%Page: 100 113
TeXDict begin 100 112 bop 150 -116 a Fs(100)2506 b(BERKELEY)30
b(LOGO)g(6.1)146 299 y Fr(P)150 420 y Fc(palette)8 b
Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)23 b Fc(46)150 509 y(parse)c
Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fc(18)150 598 y(pause)13
b Fb(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fc(70)150 687 y(p)r(c)16
b Fb(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fc(45)150
776 y(p)r(d)12 b Fb(:)g(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)26
b Fc(43)150 865 y(p)r(e)16 b Fb(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30
b Fc(44)150 954 y(p)r(en)12 b Fb(:)g(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)26
b Fc(46)150 1043 y(p)r(encolor)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30
b Fc(45)150 1132 y(p)r(endo)n(wn)9 b Fb(:)j(:)h(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)23
b Fc(43)150 1221 y(p)r(endo)n(wn?)7 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
b Fc(45)150 1310 y(p)r(endo)n(wnp)f Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36 b
Fc(45)150 1399 y(p)r(enerase)14 b Fb(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28
b Fc(44)150 1488 y(p)r(enmo)r(de)6 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
b Fc(45)150 1577 y(p)r(enpain)n(t)11 b Fb(:)h(:)h(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
b Fc(44)150 1666 y(p)r(enpattern)7 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b
Fc(46)150 1755 y(p)r(enrev)n(erse)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30 b
Fc(44)150 1844 y(p)r(ensize)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34
b Fc(46)150 1933 y(p)r(en)n(up)20 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36
b Fc(43)150 2022 y(pic)n(k)21 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36
b Fc(12)150 2111 y(plist)17 b Fb(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31
b Fc(53)150 2200 y(plist?)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
b Fc(54)150 2289 y(plistp)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
b Fc(54)150 2378 y(plists)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
b Fc(55)150 2467 y(pllist)6 b Fb(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21
b Fc(55)150 2556 y(p)r(o)14 b Fb(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
28 b Fc(56)150 2645 y(p)r(oall)7 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
22 b Fc(56)150 2734 y(p)r(on)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
24 b Fc(57)150 2823 y(p)r(ons)12 b Fb(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26
b Fc(56)150 2912 y(p)r(op)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
b Fc(13)150 3001 y(p)r(opl)16 b Fb(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30
b Fc(57)150 3090 y(p)r(opls)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32
b Fc(57)150 3179 y(p)r(ops)12 b Fb(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26
b Fc(56)150 3268 y(p)r(os)16 b Fb(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
b Fc(39)150 3357 y(p)r(ot)16 b Fb(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30
b Fc(57)150 3446 y(p)r(ots)18 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32
b Fc(57)150 3535 y(p)r(o)n(w)n(er)7 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
b Fc(30)150 3624 y(pprop)8 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)23
b Fc(53)150 3713 y(ppt)15 b Fb(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
b Fc(44)150 3802 y(pr)19 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
33 b Fc(19)150 3890 y(pre\014x)12 b Fb(:)g(:)h(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26
b Fc(22)150 3979 y(primitiv)n(e?)d Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fc(53)150
4068 y(primitiv)n(ep)19 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fc(53)150 4157
y(primitiv)n(es)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fc(55)150 4246
y(prin)n(t)7 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
b Fc(19)150 4335 y(prin)n(tdepthlimit)d Fb(:)14 b(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b Fc(90)150 4424 y(prin)n(tout)20
b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)34 b Fc(56)150 4513 y(prin)n(t)n(widthlimit)21
b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)36
b Fc(90)150 4602 y(pro)r(cedure?)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 b
Fc(53)150 4691 y(pro)r(cedurep)f Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fc(53)150
4780 y(pro)r(cedures)11 b Fb(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fc(55)150 4869
y(pro)r(duct)10 b Fb(:)i(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fc(29)150
4958 y(pu)13 b Fb(:)f(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27
b Fc(43)150 5047 y(push)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
b Fc(13)150 5136 y(p)n(x)15 b Fb(:)d(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
29 b Fc(44)2021 299 y Fr(Q)2025 416 y Fc(queue)10 b Fb(:)i(:)h(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)24 b Fc(14)2025 503 y(quoted)10 b Fb(:)i(:)h(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
b Fc(12)2025 591 y(quotien)n(t)18 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
b Fc(29)2021 846 y Fr(R)2025 962 y Fc(radarctan)13 b
Fb(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)27 b Fc(31)2025 1050 y(radcos)17 b Fb(:)d(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)31 b Fc(31)2025 1137 y(radsin)21 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36
b Fc(31)2025 1225 y(random)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27
b Fc(32)2025 1312 y(ra)n(w)n(ascii)8 b Fb(:)15 b(:)e(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)23
b Fc(16)2025 1400 y(rc)6 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)21 b Fc(21)2025 1487 y(rcs)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)23 b Fc(21)2025 1574 y(readc)n(har)14 b Fb(:)f(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
b Fc(21)2025 1662 y(readc)n(hars)16 b Fb(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30
b Fc(21)2025 1749 y(reader)19 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
b Fc(25)2025 1837 y(readlist)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31
b Fc(20)2025 1924 y(readp)r(os)11 b Fb(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26
b Fc(25)2025 2012 y(readra)n(wline)16 b Fb(:)e(:)f(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fc(20)2025
2099 y(readw)n(ord)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 b Fc(20)2025
2186 y(redefp)20 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 b Fc(91)2025
2274 y(reduce)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)29 b Fc(78)2025
2361 y(refresh)11 b Fb(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fc(42)2025
2449 y(remainder)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fc(30)2025 2536
y(remdup)13 b Fb(:)f(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fc(12)2025 2624
y(remo)n(v)n(e)22 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fc(12)2025
2711 y(remprop)17 b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)31 b Fc(53)2025 2799
y(rep)r(coun)n(t)11 b Fb(:)h(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fc(68)2025
2886 y(rep)r(eat)18 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b
Fc(67)2025 2973 y(rerandom)15 b Fb(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b Fc(33)2025
3061 y(rev)n(erse)8 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23 b
Fc(10)2025 3148 y(righ)n(t)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
b Fc(38)2025 3236 y(rl)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)27 b Fc(20)2025 3323 y(round)8 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23
b Fc(30)2025 3411 y(rseq)f Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
b Fc(31)2025 3498 y(rt)8 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)23 b Fc(38)2025 3586 y(run)15 b Fb(:)d(:)h(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)29 b Fc(67)2025 3673 y(runparse)12 b Fb(:)h(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
b Fc(18)2025 3760 y(runparsing)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)30 b
Fc(6)2025 3848 y(runresult)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b
Fc(67)2025 3935 y(rw)13 b Fb(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27
b Fc(20)2021 4174 y Fr(S)2025 4291 y Fc(sa)n(v)n(e)20
b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 b Fc(62)2025 4378
y(sa)n(v)n(el)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
b Fc(63)2025 4466 y(sa)n(v)n(epict)7 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
b Fc(46)2025 4553 y(screenmo)r(de)16 b Fb(:)d(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fc(43)2025
4640 y(scrunc)n(h)14 b Fb(:)e(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fc(39)2025
4728 y(scrunc)n(h.dat)16 b Fb(:)c(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fc(42)2025 4815
y(se)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)23
b Fc(9)2025 4903 y(sen)n(tence)d Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
b Fc(9)2025 4990 y(setbac)n(kground)18 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fc(45)2025 5078
y(setbg)19 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fc(45)2025
5165 y(setcslslo)r(c)24 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)36 b Fc(64)2025
5253 y(setcursor)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fc(26)2025
5340 y(seteditor)12 b Fb(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 b Fc(64)p eop
end
%%Page: 101 114
TeXDict begin 101 113 bop 150 -116 a Fs(INDEX)3164 b(101)150
299 y Fc(setfon)n(t)10 b Fb(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b
Fc(28)150 396 y(seth)c Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
b Fc(38)150 494 y(setheading)15 b Fb(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fc(38)150
591 y(sethelplo)r(c)9 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fc(64)150
689 y(setitem)c Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fc(12)150
786 y(setlab)r(elheigh)n(t)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fc(41)150 884 y(setliblo)r(c)22
b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)34 b Fc(64)150 981 y(setmargins)12
b Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)27 b Fc(26)150 1079 y(setpalette)13 b Fb(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
b Fc(44)150 1176 y(setp)r(c)20 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34
b Fc(44)150 1274 y(setp)r(en)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
b Fc(45)150 1371 y(setp)r(encolor)21 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fc(44)150
1468 y(setp)r(enpattern)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)26 b Fc(45)150 1566 y(setp)r(ensize)7
b Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)21 b Fc(44)150 1663 y(setp)r(os)g Fb(:)13
b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)34 b Fc(38)150 1761 y(setpre\014x)16
b Fb(:)c(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)30 b Fc(22)150 1858 y(setread)22 b
Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)35 b Fc(24)150 1956 y(setreadp)r(os)15
b Fb(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)30 b Fc(25)150 2053 y(setscrunc)n(h)18 b Fb(:)12
b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)32 b Fc(42)150 2151 y(settc)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
b Fc(27)150 2248 y(settemplo)r(c)11 b Fb(:)k(:)e(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fc(64)150
2346 y(setter)15 b Fb(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)30
b Fc(2)150 2443 y(settextcolor)14 b Fb(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)28 b Fc(27)150
2541 y(settextsize)18 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)32 b Fc(27)150 2638
y(set)n(write)9 b Fb(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fc(24)150
2736 y(set)n(writep)r(os)e Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fc(25)150 2833
y(setx)22 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b
Fc(38)150 2930 y(setxy)18 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
b Fc(38)150 3028 y(set)n(y)6 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
20 b Fc(38)150 3125 y(shell)15 b Fb(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
b Fc(21)150 3223 y(sho)n(w)7 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22
b Fc(20)150 3320 y(sho)n(wn?)e Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
b Fc(43)150 3418 y(sho)n(wnp)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
b Fc(43)150 3515 y(sho)n(wturtle)16 b Fb(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fc(39)150
3613 y(sin)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23
b Fc(31)150 3710 y(splitscreen)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fc(42)150
3808 y(sqrt)7 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)21
b Fc(30)150 3905 y(ss)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)22 b Fc(42)150 4003 y(st)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)23 b Fc(39)150 4100 y(standout)10 b Fb(:)j(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
b Fc(17)150 4198 y(starting)h Fa(ucblogo)16 b Fb(:)f(:)e(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fc(5)150 4295
y(startup)19 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fc(91)150
4392 y(step)21 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
b Fc(60)150 4490 y(stepp)r(ed)11 b Fb(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26
b Fc(54)150 4587 y(stepp)r(ed?)10 b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
b Fc(61)150 4685 y(stepp)r(edp)7 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22
b Fc(61)150 4782 y(stop)d Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
b Fc(69)150 4880 y(substring?)20 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fc(16)150
4977 y(substringp)17 b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fc(16)150 5075 y(sum)21
b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fc(29)2021 299
y Fr(T)2025 415 y Fc(tag)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
b Fc(72)2025 502 y(temp)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
b Fc(61)2025 589 y(template)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b
Fc(74)2025 677 y(test)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
b Fc(68)2025 764 y(text)d Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
b Fc(51)2025 851 y(textscreen)22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fc(41)2025
938 y(textsize)14 b Fb(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fc(27)2025
1025 y(thing)19 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b
Fc(52)2025 1113 y(thro)n(w)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
b Fc(69)2025 1200 y(to)d Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
b Fc(49)2025 1287 y(to)n(w)n(ards)10 b Fb(:)k(:)f(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
b Fc(39)2025 1374 y(trace)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21
b Fc(60)2025 1462 y(traced)e Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
b Fc(54)2025 1549 y(traced?)18 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33
b Fc(60)2025 1636 y(tracedp)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)29
b Fc(60)2025 1723 y(transfer)11 b Fb(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26
b Fc(81)2025 1810 y(turtlemo)r(de)7 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)22 b
Fc(43)2025 1898 y(t)n(yp)r(e)16 b Fb(:)c(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31
b Fc(19)2021 2148 y Fr(U)2025 2264 y Fc(un)n(bury)19
b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)36 b Fc(59)2025 2351 y(un)n(bury)n(all)16
b Fb(:)c(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)30 b Fc(59)2025 2438 y(un)n(buryname)17
b Fb(:)11 b(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)32 b Fc(59)2025 2526 y(un)n(bury)n(onedit)18 b Fb(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35
b Fc(91)2025 2613 y(unstep)13 b Fb(:)f(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27
b Fc(60)2025 2700 y(un)n(til)12 b Fb(:)g(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)26
b Fc(73)2025 2787 y(un)n(trace)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30
b Fc(60)2025 2874 y(upp)r(ercase)9 b Fb(:)k(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b
Fc(17)2025 2962 y(usealternatenames)e Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)35 b Fc(91)2021 3195 y Fr(V)2025 3311
y Fc(vbarred?)10 b Fb(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fc(16)2025 3399
y(vbarredp)7 b Fb(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fc(16)2021 3649
y Fr(W)2025 3765 y Fc(w)n(ait)c Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33
b Fc(71)2025 3852 y(while)20 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
b Fc(73)2025 3939 y(windo)n(w)14 b Fb(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28
b Fc(40)2025 4026 y(w)n(ord)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25
b Fc(9)2025 4114 y(w)n(ordp)20 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35
b Fc(14)2025 4201 y(wrap)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)21
b Fc(40)2025 4288 y(writep)r(os)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30
b Fc(25)2025 4375 y(writer)6 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
b Fc(25)2021 4609 y Fr(X)2025 4725 y Fc(xcor)d Fb(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)33 b Fc(39)2021 4959 y Fr(Y)2025
5075 y Fc(ycor)18 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33
b Fc(39)p eop end
%%Page: 102 115
TeXDict begin 102 114 bop eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF
ucblogo-6.1/docs/usermanual.pdf 0000664 0001750 0001750 00001716403 13601426467 014736 0 ustar jjc jjc %PDF-1.5
%
1 0 obj
<<
/Length 587
/Filter /FlateDecode
>>
stream
xmTM@+z&?tBL$d4*.<_fW_wիrc;`GUOV&ʮ[v6W7TvbuYt/N.5=S