<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -14,6 +14,8 @@ Cells tutorial
 7 Drifters
 8 Cyclic dependencies
 9 Synapses
+    9.1 Built-in synapses
+    9.2 Defining your own
 10 Example: playing sudoku
 11 Functions &amp; macros reference
     11.1 Main
@@ -21,9 +23,15 @@ Cells tutorial
     11.3 Synapses
     11.4 Misc
 12 Other resources
+13 Introduction
+    13.1 Where's the GUI?
+    13.2 Cells-gtk
+14 Installation
 
 
 
+Cells
+
 1 Introduction
 
 1.1 What's cells?
@@ -999,6 +1007,8 @@ NIL
 
 9 Synapses
 
+9.1 Built-in synapses
+
 Suppose that you have a cell A that depends on another 
 cell B, but you want A to change only when B changes by 
 an amount over a given threshold, maybe because B 
@@ -1114,6 +1124,132 @@ time-elapsed changes only when the accumulated
 difference is at least wait-time (2 in this case). 
 Other synapses available are f-delta, f-plusp, f-zerop.
 
+9.2 Defining your own
+
+As it frequently happens, you may need a type of 
+synapse that is not available. In this case, you can 
+define your own synapses using the construct with-synapse.
+
+(with-synapse &lt;id&gt; (&amp;rest &lt;vars&gt;)
+
+  &lt;body&gt;)
+
+&lt;vars&gt; is a valid variable declaration list such as 
+that of the let form. These variables are created and 
+initialized the first time &lt;body&gt; is executed, and they 
+retain their value from call to call, so that you can 
+use them to carry state between different 
+re-evaluations of &lt;body&gt;. &lt;body&gt; should return two 
+values: the value to return and one keyword out of 
+:propagate and :no-propagate to indicate if the value 
+should be propagated or not. For example, we could have 
+a ruled cell that propagates only when another cell is odd:
+
+(defmodel my-syn-test ()
+
+  ((num :accessor num :initform (c-in 0))
+
+   (odd-num :reader odd-num
+
+            :initform (c?
+
+                        (with-synapse :odd-syn ()
+
+                          (if (oddp (^num))
+
+                              (values (^num) :propagate))
+
+                              (values nil :no-propagate)))))))
+
+(defobserver odd-num ()
+
+  (when old-value-boundp
+
+    (format t &quot;Propagated!~%&quot;)))
+
+(defun try-my-syn ()
+
+  (let ((m (make-instance 'my-syn-test)))
+
+    (dolist (n '(1 2 4 5 7 11 12 14 16 15))
+
+      (format t &quot;Setting num to ~a~%&quot; n)
+
+      (setf (num m) n)
+
+      (format t &quot;odd-num is ~a~%&quot; (odd-num m)))))
+
+The crucial part is the values returned by 
+with-synapse's body. When num is odd, we return it 
+together with :propagate, otherwise we return a value 
+that will be ignored (because it won't be propagated) 
+and :no-propagate. Here is the output:
+
+&gt; (load &quot;hello-cells.lisp&quot;)
+
+T
+
+&gt; (try-my-syn)
+
+Setting num to 1
+
+Propagated!
+
+odd-num is 1
+
+Setting num to 2
+
+odd-num is 1
+
+Setting num to 4
+
+odd-num is 1
+
+Setting num to 5
+
+Propagated!
+
+odd-num is 5
+
+Setting num to 7
+
+Propagated!
+
+odd-num is 7
+
+Setting num to 11
+
+Propagated!
+
+odd-num is 11
+
+Setting num to 12
+
+odd-num is 11
+
+Setting num to 14
+
+odd-num is 11
+
+Setting num to 16
+
+odd-num is 11
+
+Setting num to 15
+
+Propagated!
+
+odd-num is 15
+
+NIL 
+
+You can see that odd-num changes only when we return :propagateWe could have returned any other value. The only 
+requirement to propagate is to return something 
+different from :no-propagate. 
+. When we return :no-propagate odd-num doesn't change. 
+We didn't need to carry some state between different 
+executions of the body, so we left the &lt;vars&gt; list empty.
+
 10 Example: playing sudoku
 
 We have seen a few example of using cells, but none of 
@@ -1547,6 +1683,18 @@ Now the speed is much better (more than ten times
 faster), it allocates only 9.5 MB of memory, and we 
 achieved this result with a really small change.
 
+One important thing to note about this example is that 
+we had to write the function search-solution to solve 
+the puzzle, because cells has no constraints resolution 
+engine. What it does is to propagate change to 
+dependent slots. We used this feature to keep the board 
+in a consistent state and to roll out impossible 
+combinations while searching for a solution, without 
+having to worry about dependencies. This way the 
+searching function has been quite simple to write, 
+because all the relations between different squares 
+were managed automatically by the models we defined earlier.
+
 11 Functions &amp; macros reference
 
 Here follows a quick reference of the main functions 
@@ -1681,12 +1829,6 @@ c-in. Another useful option is :lazy that lets you
 specify the laziness of the cell: nil, t, :once-asked, 
 :until-asked or :always.
 
-not-to-be
-
-(not-to-be &lt;object&gt;)
-
-(Function) Tells cells to stop handling &lt;object&gt;.
-
 defobserver
 
 (defobserver &lt;slot-name&gt; (&amp;optional (&lt;self&gt; self) 
@@ -1874,6 +2016,12 @@ fm-descendant-named
 &lt;name&gt; starting from &lt;self&gt; included. If &lt;must-find&gt; is 
 nil no error is raised if it isn't found.
 
+not-to-be
+
+(not-to-be &lt;object&gt;)
+
+(Function) Unregisters &lt;object&gt;.
+
 11.3 Synapses
 
 f-sensitivity
@@ -1898,6 +2046,16 @@ changes only when the difference between the value
 returned by &lt;body&gt; and the value it returned the 
 previous time is strictly greater than &lt;sensitivity&gt;. 
 
+with-synapse
+
+(with-synapse &lt;syn-id&gt; (&lt;vars&gt;)
+
+  &lt;body&gt;)
+
+(Macro) Creates a synapse. &lt;body&gt; should return two 
+multiple values, and when the second is :no-propagate, 
+the eventual change isn't propagated.
+
 11.4 Misc
 
 cells-reset
@@ -1916,3 +2074,74 @@ the source files within the directories 'cells-test',
 can be found in the file cells-manifesto.txt in the 
 source tarball. You can also ask questions about cells 
 on the project's mailing list: [http://common-lisp.net/cgi-bin/mailman/subscribe/cells-devel]
+
+Cells-gtk
+
+13 Introduction
+
+13.1 Where's the GUI?
+
+One classic question that a Common Lisp newcomer asks 
+is what are the libraries available to build graphical 
+interfaces. Some typical answers he/she would get are 
+the following:
+
+1. Use a commercial implementation. Commercial 
+  implementations such as Allegro or LispWorks comes 
+  with portable, stable and well documented GUI 
+  libraries. The drawbacks are that you would be locked 
+  with a particular vendor and that you should pay for 
+  them. Depending on your particular situation, this 
+  may or may not be a good choice.
+
+2. No one uses GUI applications anymore. Web interfaces 
+  are the new GUI. Given that there are really good 
+  frameworks for web programming available for Common 
+  Lisp, this is not the answer you were looking for.
+
+3. McCLIM. Once upon a time (end of the 80s), CLIM was 
+  the standard way to do graphical applications with 
+  Common Lisp. McCLIM is an open source project that 
+  implements almost the entire CLIM standard. The 
+  default CLIM look-and-feel is quite old-fashionedThere are ongoing efforts to use GTK and Cairo to bring 
+to McCLIM a modern look.
+  , and interfaces built with it are fundamentally 
+  different from the standard widget-oriented way of 
+  doing GUIs this days, so it may not be what you 
+  really want. The biggest problem, though, is that 
+  CLIM is very complicated, and there is very little 
+  documentation to help you in the learning process.
+
+4. LTK, a port to Common Lisp of Tcl's Tk library. 
+  Light, stable, cross-platform and now good looking 
+  thanks to the 8.5 release of Tk.
+
+5. Cells-inside GUI toolkits. These libraries use cells 
+  to let you easily build graphical applications. You 
+  can choose between celtk (based on Tk), cello (based 
+  on OpenGL) and cells-gtk, that uses GTK as the 
+  backend. The rest of this tutorial covers cells-gtk.
+
+13.2 Cells-gtk
+
+Cells-gtk is not a direct wrapper of the gtk+ API, 
+instead it uses gtk+ just as a backend and offers a 
+very high-level API to the programmer. Every widget is 
+a model that inherits from family, so everything we 
+have already seen about cells and the family model 
+applies to widgets. The family tree mimics the 
+graphical objects' hierarchy that the user sees, and 
+properties of the widgets can be initialized to any 
+type of cell. It is quite usual, for example, to make 
+properties that give some kind of information to the 
+user (such as list views or a progress bar) be ruled 
+cells, and properties of widgets that the user can 
+modify (such as the text of an entry or the state of a 
+radio group) be input cells. The cells-gtk programmer 
+makes a parsimonious use of event handlers, because 
+most of the work that is usually done within an event 
+handler in more traditional toolkits can be done in a 
+more concise and localized way using ruled cells, input 
+cells and observers.
+
+14 Installation</diff>
      <filename>cells-doc-win.txt</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>cells-doc.dvi</filename>
    </modified>
    <modified>
      <diff>@@ -35,6 +35,9 @@ Cells tutorial
 \end_inset 
 
 
+\layout Part
+
+Cells
 \layout Section
 
 Introduction
@@ -1543,6 +1546,9 @@ NIL
 \layout Section
 
 Synapses
+\layout Subsection
+
+Built-in synapses
 \layout Standard
 
 Suppose that you have a cell A that depends on another cell B, but you want
@@ -1719,6 +1725,202 @@ NIL
 time-elapsed changes only when the accumulated difference is at least wait-time
  (2 in this case).
  Other synapses available are f-delta, f-plusp, f-zerop.
+\layout Subsection
+
+Defining your own
+\layout Standard
+
+As it frequently happens, you may need a type of synapse that is not available.
+ In this case, you can define your own synapses using the construct with-synapse.
+\layout LyX-Code
+
+(with-synapse &lt;id&gt; (&amp;rest &lt;vars&gt;)
+\layout LyX-Code
+
+  &lt;body&gt;)
+\layout Standard
+
+&lt;vars&gt; is a valid variable declaration list such as that of the let form.
+ These variables are created and initialized the first time &lt;body&gt; is executed,
+ and they retain their value from call to call, so that you can use them
+ to carry state between different re-evaluations of &lt;body&gt;.
+ &lt;body&gt; should return two values: the value to return and one keyword out
+ of :propagate and :no-propagate to indicate if the value should be propagated
+ or not.
+ For example, we could have a ruled cell that propagates only when another
+ cell is odd:
+\layout LyX-Code
+
+(defmodel my-syn-test ()
+\layout LyX-Code
+
+  ((num :accessor num :initform (c-in 0))
+\layout LyX-Code
+
+   (odd-num :reader odd-num
+\layout LyX-Code
+
+            :initform (c?
+\layout LyX-Code
+
+                        (with-synapse :odd-syn ()
+\layout LyX-Code
+
+                          (if (oddp (^num))
+\layout LyX-Code
+
+                              (values (^num) :propagate))
+\layout LyX-Code
+
+                              (values nil :no-propagate)))))))
+\newline 
+
+\newline 
+(defobserver odd-num ()
+\layout LyX-Code
+
+  (when old-value-boundp
+\layout LyX-Code
+
+    (format t &quot;Propagated!~%&quot;)))
+\newline 
+
+\newline 
+(defun try-my-syn ()
+\layout LyX-Code
+
+  (let ((m (make-instance 'my-syn-test)))
+\layout LyX-Code
+
+    (dolist (n '(1 2 4 5 7 11 12 14 16 15))
+\layout LyX-Code
+
+      (format t &quot;Setting num to ~a~%&quot; n)
+\layout LyX-Code
+
+      (setf (num m) n)
+\layout LyX-Code
+
+      (format t &quot;odd-num is ~a~%&quot; (odd-num m)))))
+\layout Standard
+
+The crucial part is the values returned by with-synapse's body.
+ When num is odd, we return it together with :propagate, otherwise we return
+ a value that will be ignored (because it won't be propagated) and :no-propagate.
+ Here is the output:
+\layout LyX-Code
+
+&gt; (load 
+\begin_inset Quotes eld
+\end_inset 
+
+hello-cells.lisp
+\begin_inset Quotes erd
+\end_inset 
+
+)
+\layout LyX-Code
+
+T
+\layout LyX-Code
+
+&gt; (try-my-syn)
+\layout LyX-Code
+
+Setting num to 1
+\layout LyX-Code
+
+Propagated!
+\layout LyX-Code
+
+odd-num is 1
+\layout LyX-Code
+
+Setting num to 2
+\layout LyX-Code
+
+odd-num is 1
+\layout LyX-Code
+
+Setting num to 4
+\layout LyX-Code
+
+odd-num is 1
+\layout LyX-Code
+
+Setting num to 5
+\layout LyX-Code
+
+Propagated!
+\layout LyX-Code
+
+odd-num is 5
+\layout LyX-Code
+
+Setting num to 7
+\layout LyX-Code
+
+Propagated!
+\layout LyX-Code
+
+odd-num is 7
+\layout LyX-Code
+
+Setting num to 11
+\layout LyX-Code
+
+Propagated!
+\layout LyX-Code
+
+odd-num is 11
+\layout LyX-Code
+
+Setting num to 12
+\layout LyX-Code
+
+odd-num is 11
+\layout LyX-Code
+
+Setting num to 14
+\layout LyX-Code
+
+odd-num is 11
+\layout LyX-Code
+
+Setting num to 16
+\layout LyX-Code
+
+odd-num is 11
+\layout LyX-Code
+
+Setting num to 15
+\layout LyX-Code
+
+Propagated!
+\layout LyX-Code
+
+odd-num is 15
+\layout LyX-Code
+
+NIL 
+\layout Standard
+
+You can see that odd-num changes only when we return :propagate
+\begin_inset Foot
+collapsed false
+
+\layout Standard
+
+We could have returned any other value.
+ The only requirement to propagate is to return something different from
+ :no-propagate.
+ 
+\end_inset 
+
+.
+ When we return :no-propagate odd-num doesn't change.
+ We didn't need to carry some state between different executions of the
+ body, so we left the &lt;vars&gt; list empty.
 \layout Section
 
 Example: playing sudoku
@@ -2378,6 +2580,21 @@ NIL
 
 Now the speed is much better (more than ten times faster), it allocates
  only 9.5 MB of memory, and we achieved this result with a really small change.
+\layout Standard
+
+One important thing to note about this example is that we 
+\emph on 
+had
+\emph default 
+ to write the function search-solution to solve the puzzle, because cells
+ has no constraints resolution engine.
+ What it does is to propagate change to dependent slots.
+ We used this feature to keep the board in a consistent state and to roll
+ out impossible combinations while searching for a solution, without having
+ to worry about dependencies.
+ This way the searching function has been quite simple to write, because
+ all the relations between different squares were managed automatically
+ by the models we defined earlier.
 \layout Section
 
 Functions &amp; macros reference
@@ -2578,16 +2795,6 @@ c-formula
 \layout List
 \labelwidthstring 00.00.0000
 
-not-to-be
-\layout LyX-Code
-
-(not-to-be &lt;object&gt;)
-\layout Standard
-
-(Function) Tells cells to stop handling &lt;object&gt;.
-\layout List
-\labelwidthstring 00.00.0000
-
 defobserver
 \layout LyX-Code
 
@@ -2871,6 +3078,16 @@ fm-descendant-named
 (Function) Gets the first successor whose md-name is &lt;name&gt; starting from
  &lt;self&gt; included.
  If &lt;must-find&gt; is nil no error is raised if it isn't found.
+\layout List
+\labelwidthstring 00.00.0000
+
+not-to-be
+\layout LyX-Code
+
+(not-to-be &lt;object&gt;)
+\layout Standard
+
+(Function) Unregisters &lt;object&gt;.
 \layout Subsection
 
 Synapses
@@ -2905,6 +3122,21 @@ f-delta
  the difference between the value returned by &lt;body&gt; and the value it returned
  the previous time is strictly greater than &lt;sensitivity&gt;.
  
+\layout List
+\labelwidthstring 00.00.0000
+
+with-synapse
+\layout LyX-Code
+
+(with-synapse &lt;syn-id&gt; (&lt;vars&gt;)
+\layout LyX-Code
+
+  &lt;body&gt;)
+\layout Standard
+
+(Macro) Creates a synapse.
+ &lt;body&gt; should return two multiple values, and when the second is :no-propagate,
+ the eventual change isn't propagated.
 \layout Subsection
 
 Misc
@@ -2935,4 +3167,95 @@ This tutorial just scratched the surface of cells.
 \end_inset 
 
 
+\layout Part
+
+Cells-gtk
+\layout Section
+
+Introduction
+\layout Subsection
+
+Where's the GUI?
+\layout Standard
+
+One classic question that a Common Lisp newcomer asks is what are the libraries
+ available to build graphical interfaces.
+ Some typical answers he/she would get are the following:
+\layout Enumerate
+
+Use a commercial implementation.
+ Commercial implementations such as Allegro or LispWorks comes with portable,
+ stable and well documented GUI libraries.
+ The drawbacks are that you would be locked with a particular vendor and
+ that you should pay for them.
+ Depending on your particular situation, this may or may not be a good choice.
+\layout Enumerate
+
+No one uses GUI applications anymore.
+ Web interfaces are the new GUI.
+ Given that there are really good frameworks for web programming available
+ for Common Lisp, this is not the answer you were looking for.
+\layout Enumerate
+
+McCLIM.
+ Once upon a time (end of the 80s), CLIM was the standard way to do graphical
+ applications with Common Lisp.
+ McCLIM is an open source project that implements almost the entire CLIM
+ standard.
+ The default CLIM look-and-feel is quite old-fashioned
+\begin_inset Foot
+collapsed false
+
+\layout Standard
+
+There are ongoing efforts to use GTK and Cairo to bring to McCLIM a modern
+ look.
+\end_inset 
+
+, and interfaces built with it are fundamentally different from the standard
+ widget-oriented way of doing GUIs this days, so it may not be what you
+ really want.
+ The biggest problem, though, is that CLIM is 
+\emph on 
+very 
+\emph default 
+complicated, and there is very little documentation to help you in the learning
+ process.
+\layout Enumerate
+
+LTK, a port to Common Lisp of Tcl's Tk library.
+ Light, stable, cross-platform and now good looking thanks to the 8.5 release
+ of Tk.
+\layout Enumerate
+
+Cells-inside GUI toolkits.
+ These libraries use cells to let you easily build graphical applications.
+ You can choose between celtk (based on Tk), cello (based on OpenGL) and
+ cells-gtk, that uses GTK as the backend.
+ The rest of this tutorial covers cells-gtk.
+\layout Subsection
+
+Cells-gtk
+\layout Standard
+
+Cells-gtk is not a direct wrapper of the gtk+ API, instead it uses gtk+
+ just as a backend and offers a very high-level API to the programmer.
+ Every widget is a model that inherits from family, so everything we have
+ already seen about cells and the family model applies to widgets.
+ The family tree mimics the graphical objects' hierarchy that the user sees,
+ and properties of the widgets can be initialized to any type of cell.
+ It is quite usual, for example, to make properties that give some kind
+ of information to the user (such as list views or a progress bar) be ruled
+ cells, and properties of widgets that the user can modify (such as the
+ text of an entry or the state of a radio group) be input cells.
+ The cells-gtk programmer makes a parsimonious use of event handlers, because
+ most of the work that is usually done within an event handler in more tradition
+al toolkits can be done in a more concise and 
+\emph on 
+localized
+\emph default 
+ way using ruled cells, input cells and observers.
+\layout Section
+
+Installation
 \the_end</diff>
      <filename>cells-doc.lyx</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>cells-doc.pdf</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 %!PS-Adobe-2.0
 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
 %%Title: cells-doc.dvi
-%%Pages: 28
+%%Pages: 31
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 596 842
 %%DocumentFonts: CMMI10 CMSY10 CMR10
@@ -10,7 +10,7 @@
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -t a4 -o cells-doc.ps cells-doc.dvi
 %DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2008.08.24:1253
+%DVIPSSource:  TeX output 2008.08.28:1508
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -461,136 +461,8 @@ TeXDict begin 39158280 55380996 1000 600 600 (cells-doc.dvi)
 83.022 /CMSY10 rf /Fc 138[48 1[39 37 37 2[50 73 7[39
 3[44 97[{ TeXaae443f0Encoding ReEncodeFont }8 83.022
 /CMMI10 rf
-%DVIPSBitmapFont: Fd ectt0800 8 21
-/Fd 21 120 df&lt;387FFFF8B512FCA36C13F816057A9023&gt;45 D&lt;123E127FEAFF80A5EA7F
-00123E0909738823&gt;I&lt;EC0380EC07C0A2140F1580141F1500A25C143E147E147C14FC5C
-13015CA213035C13075C130F5C131F91C7FC5B133EA2137E137C13FC5B12015B12035BA2
-12075B120F5B121F90C8FC5A123EA2127E127C12FC5AA212701A347CAD23&gt;I&lt;123E127F
-EAFF80A5EA7F00123EC7FCAB123E127FEAFF80A5EA7F00123E091D739C23&gt;58
-D&lt;B47E7FA41207A7EBC1FCEBC7FF01DF13C090B512E015F09038FE0FF8EBF8039038F001
-FCEBE000A249137EA2153EA5157E7F15FC7F14019038F803F89038FE0FF090B5FC15E001
-DF138001CF1300380383F81F297FA823&gt;98 D&lt;EB3FF0EBFFFC000313FF5A5A381FE07FEA
-3F80387F003E007E90C7FCA25AA25AA57EA2007E1307007FEB0F80141FEA3FC0391FF07F
-006CB5FC6C5B6C5BC613F0EB3FC0191D7B9C23&gt;I&lt;EB3FC0EBFFF800037F4813FF481480
-381FF07F393F801FC0EB000F007E130715E05AB6FCA415C000F8C8FC7EA2007EEB01C000
-7FEB03E0383F800713E0391FF81FC06CB5FC6C14800001EBFE006C6C5AEB1FE01B1D7D9C
-23&gt;101 D&lt;EC01F090383F07FC9038FFDFFE000313FF5A48147E381FE1FE9038807E1839
-3F003F00A2003E7FA4003F5BA2381F807EEBE1FE6CB45A485B5C001E13C0013FC7FC90C8
-FC121F1340380FFFFCECFF804814C04814F0397E0007F8007C130048147CA248143CA36C
-147C6C14FC007FEB03F8EBE01F6CB512F0000F14C06C14800001EBFE0038003FF01F2E7E
-9D23&gt;103 D&lt;B47E7FA41207A7EBC1FCEBC7FF01DF138090B512C0A29038FE0FE0EBF807
-EBF00313E0A313C0AD39FFFE1FFF5CA38020297FA823&gt;I&lt;133813FEA5133890C7FCA6EA
-7FFC487EA3127FEA003EB3387FFFFEB6FCA36C13FE182A7AA923&gt;I&lt;14E0EB03F8A5EB00
-E01400A63803FFF04813F8A37EC7FCB3AB13011238387C03F012FEEB0FE0B5FC14C06C13
-006C5AEA0FF815397DA923&gt;I&lt;EA7F80487EA3127F1203A7ECFFFC13C1A313C0EC3F0014
-7E5CEBC1F8EBC3F0EBC7E0EBCFC0EBDFE0EBFFF0A2EBFDF8EBF8FCEBF07EEBE03E497E15
-80EC0FC01407EC03E0397FFE0FFFB55AA36C487E20297FA823&gt;I&lt;EA7FFEB5FCA37EEA00
-1FB3AD007FB512C0B612E0A36C14C01B297CA823&gt;I&lt;397E1F01F039FF7FC7FC9038FFEF
-FE14FF6C80390FE1FE1FEBC1FC01C07FEB80F8A2EB00F0AE3A7FE3FE3FE026FFF3FF13F0
-A3267FE3FE13E0241D819C23&gt;I&lt;38FF81FCEBC7FF01DF138090B512C0A23907FE0FE0EB
-F807EBF00313E0A313C0AD39FFFE1FFF5CA380201D7F9C23&gt;I&lt;133F3801FFE0487F487F
-487F381FC0FE383F807F383E001F007E1480007C130F00FC14C0481307A66C130FA2007C
-1480007E131F6CEB3F006D5A381FE1FE6CB45A6C5B6C5B6C5BD8003FC7FC1A1D7C9C23&gt;
-I&lt;38FF81FCEBC7FF01DF13C090B512E015F03907FE0FF8EBF8039038F001FCEBE000A249
-137EA2153EA5157E7F15FC7F14019038F803F89038FE0FF090B5FC15E001DF138001CF13
-00EBC3F801C0C7FCAAEAFFFEA51F2C7F9C23&gt;I&lt;397FF00FE039FFF87FF8ECFFFC13FB6C
-B5FCC613F8ECC078EC800091C7FC5BA25BA35BAA387FFFFCB57EA36C5B1E1D7E9C23&gt;
-114 D&lt;3801FF9C000F13FE5A127FA2EAFF0000FC137E48133EA26C131C6C1300EA7FF038
-3FFF80000F13E06C13F838007FFCEB01FEEB007F0070133F00F8131F7E143F7E38FF80FF
-EBFFFE14FC14F814F000701380181D7B9C23&gt;I&lt;137013F8A7007FB51280B612C0A36C14
-80D800F8C7FCACEC01C0EC03E0A3EBFC07140F9038FE1FC0EB7FFF158090383FFE00EB0F
-FCEB07F01B257EA423&gt;I&lt;397FF00FFE39FFF81FFFA3397FF00FFE001FC712F86C14F0A5
-7F390783E1E0EB87F1A3EB8FF90003EB79C013CFA2EBDF7BA2EBDE3B00011480EBFE3FA2
-EBFC1FA23900F80F00201D7F9C23&gt;119 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe ecrm0800 8 33
-/Fe 33 122 df&lt;13031307130E131C1338137013F0EA01E013C01203EA0780A2EA0F00A2
-121EA35AA45AA512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03C0120113E0EA00
-F013701338131C130E1307130310437AB11B&gt;40 D&lt;12C07E12707E7E7E120FEA07801203
-13C0EA01E0A2EA00F0A21378A3133CA4131EA5131FA2130FAB131FA2131EA5133CA41378
-A313F0A2EA01E0A2EA03C013801207EA0F00120E5A5A5A5A5A10437CB11B&gt;I&lt;B512C0A4
-12047F9018&gt;45 D&lt;123C127E12FFA4127E123C1200AD123C127E12FFA4127E123C081D7A
-9C14&gt;58 D&lt;4A7E4A7EA34A7EA24A7EA3EC1BF81419A2EC30FCA2EC70FEEC607EA24A7EA3
-49486C7EA2010380EC000FA201066D7EA3496D7EA2011FB57EA29038180001496D7EA349
-147EA201E0147F4980A20001ED1F801203000716C0D80FF0EC3FE0D8FFFC0103B5FCA230
-2F7EAE35&gt;65 D&lt;B612FCEDFF803A03F8000FC00001EC03F06F7E6F7E82167E167FA6167E
-16FE5E4B5A4B5AED0FE0ED7F8090B6C7FC16E09039F80003F0ED01FC6F7E167F82178016
-1F17C0A61780163F17005E16FEED03FC0003EC0FF0B712C04BC7FC2A2D7DAC32&gt;I&lt;DA1F
-F013C09138FFFE01903903F00F8390390F8001E3013FC71277017C143F4848141F484814
-0F48481407A248481403121F491401123F90C8FC481500A300FE1600AB127F17C0A27E7F
-001F15016D1580120F6C6C1403EE07006C6C14066C6C140ED8007C5C013F147890390F80
-01E0903903F00FC0902600FFFEC7FCEC1FF02A2F7CAD33&gt;I&lt;B512F0A23803FC006C5AB3
-B3A3487EB512F0A2142D7EAC19&gt;73 D&lt;B512F8A2D803FCC8FC6C5AB3A7160CA41618A416
-38A2167816F81501ED07F00003141FB7FCA2262D7EAC2C&gt;76 D&lt;90383F80303901FFF070
-3807C07C390F000EF0001E13074813034813011400127000F01470A315307EA26C140012
-7E127FEA3FE013FE381FFFE06C13FC6C13FF00011480D8003F13E013039038003FF0EC07
-F81401140015FC157C12C0153CA37EA215787E6C14706C14F06CEB01E039F78003C039E3
-F00F0038E07FFE38C00FF01E2F7CAD27&gt;83 D&lt;13FF000713C0380F01F0381C00F8003F13
-7C80A2143F001E7FC7FCA4EB07FF137F3801FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE
-14065AA3143F7E007E137F007FEBEF8C391F83C7FC390FFF03F83901FC01E01F207D9E23
-&gt;97 D&lt;EA07C012FFA2120F1207AC14FE9038C7FF809038CF03E09038DC01F09038F8007C
-49137E49133E497F1680A2150F16C0A9ED1F80A216005D6D133E6D5B01B05B9038BC01F0
-90380E07E0390607FF80260001FCC7FC222F7EAD27&gt;I&lt;EB1FE0EB7FFC3801F01E3803E0
-073907C01F80EA0F80EA1F005A003EEB0F00007E90C7FCA2127C12FCA9127EA215C07E6C
-130101801380380FC0033907E007003801F03E38007FF8EB1FC01A207E9E1F&gt;I&lt;15F814
-1FA214011400ACEB0FE0EB7FF83801F81E3803E0073807C003380F8001EA1F0048130012
-3E127EA25AA9127C127EA2003E13017EEB8003000F13073903E00EFC3A01F03CFFC03800
-7FF090391FC0F800222F7EAD27&gt;I&lt;EB1F80EBFFF03803E0783807C03E380F801E381F00
-1FEC0F80123E007E130715C0127C12FCA3B6FCA200FCC8FCA5127EA2003E14C0123F6C13
-01390F80038001C013003803E00F3801F03C38007FF8EB1FC01A207E9E1F&gt;I&lt;EB03F0EB
-0FFCEB3E1EEB7C3F13F8EA01F0A23803E00C1400AAB512E0A23803E000B3A6487E387FFF
-80A2182F7FAE16&gt;I&lt;013F13F89038FFC3FE3903E1FF1E3807807C000F140C391F003E00
-A2003E7FA76C133EA26C6C5A00071378380FE1F0380CFFC0D81C3FC7FC90C8FCA3121E12
-1F380FFFF814FF6C14C04814F0391E0007F848130048147C12F848143CA46C147C007C14
-F86CEB01F06CEB03E03907E01F803901FFFE0038003FF01F2D7E9D23&gt;I&lt;EA07C012FFA2
-120F1207AC14FE9038C3FF809038C703E09038DE01F013F8496C7EA25BA25BB2486C487E
-3AFFFE1FFFC0A2222E7EAD27&gt;I&lt;EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FCA8EA07C0
-12FFA2120F1207B3A5EA0FE0EAFFFCA20E2E7EAD14&gt;I&lt;130FEB1F80EB3FC0A4EB1F80EB
-0F0090C7FCA8EB07C013FFA2130F1307B3AD1230127838FC0F80A21400485AEA783EEA3F
-F8EA07E0123C83AD16&gt;I&lt;EA07C012FFA2120F1207ADEC1FFEA2EC0FF0EC07C05D020EC7
-FC5C5C5C5CEBC3C013C7EBCFE0EBDFF013F9EBF0F8497EEBC07E143E80816E7E14076E7E
-816E7E486C487E3AFFFE07FF80A2212E7EAD25&gt;I&lt;EA07C012FFA2120F1207B3B3A3EA0F
-E0EAFFFEA20F2E7EAD14&gt;I&lt;2607C07FEB07F03BFFC3FFC03FFC903AC783F0783F3C0FCE
-01F8E01F803B07DC00F9C00F01F8D9FF8013C04990387F000749137EA249137CB2486C01
-FEEB0FE03CFFFE0FFFE0FFFEA2371E7E9D3C&gt;I&lt;3807C0FE39FFC3FF809038C703E0390F
-DE01F0EA07F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2221E7E9D27&gt;I&lt;EB1FE0EB
-7FF83801F03E3803C00F3907800780390F0003C04814E0003EEB01F0A248EB00F8A300FC
-14FCA9007C14F8A26CEB01F0A26CEB03E0A2390F8007C03907C00F803901F03E0038007F
-F8EB1FE01E207E9E23&gt;I&lt;3807C0FE39FFC7FF809038CF03E0390FDC01F03907F800FC49
-137E49133E49133FED1F80A3ED0FC0A8151F1680A2ED3F00A26D137E6D137C5D9038FC01
-F09038CE07E09038C7FF80D9C1FCC7FC01C0C8FCA9487EEAFFFEA2222B7E9D27&gt;I&lt;9038
-0FE01890387FF8383801F81C3903E00E783807C007390F8003F8001F1301EA3F00A2007E
-1300A212FE5AA8127EA36C13017EEB8003380FC0073803E00E3801F03C38007FF0EB1FC0
-90C7FCA94A7E91381FFFC0A2222B7E9D25&gt;I&lt;380781F038FF87FCEB9E7EEA0F98EA07B8
-13B0EBF03CEBE000A35BB1487EB5FCA2171E7E9D1B&gt;I&lt;3801FE183807FFB8381E01F8EA
-3C00481378481338A21418A27E7EB41300EA7FF06CB4FC6C13C06C13F0000113F838001F
-FC130138C0007E143EA26C131EA27EA26C133CA26C137838FF01F038E3FFC000C0130017
-207E9E1C&gt;I&lt;1360A413E0A312011203A21207121FB512F0A23803E000AF1418A7143838
-01F03014703800F860EB3FE0EB0F80152A7FA81B&gt;I&lt;D807C013F800FF131FA2000F1301
-00071300B21401A314033803E007EC0EFC3A01F81CFFC038007FF890391FE0F800221F7E
-9D27&gt;I&lt;3AFFFC01FFC0A23A0FE0007E000007147C15380003143015706C6C1360A26C6C
-5BA390387C0180A26D48C7FCA2EB3F07EB1F06A2EB0F8CA214DCEB07D8A2EB03F0A36D5A
-A26D5A221E7F9C25&gt;I&lt;3AFFFC01FFC0A23A0FE0007E000007147C1538000314306D1370
-00011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FCA2EB1F06A2148EEB0F8CA2EB07
-D8A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EAFC06A25B131CEA7838EA7070EA
-3FE0EA0F80222B7F9C25&gt;121 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff ecrm0600 6 5
-/Ff 5 54 df&lt;13E01201120712FF12F91201B3A7487EB512C0A212217AA01E&gt;49
-D&lt;EA01FC3807FF80381C0FC0383003E0386001F0EB00F812F86C13FCA2147C1278003013
-FCC7FC14F8A2EB01F0EB03E014C0EB0780EB0F00131E13385B5B3801C00CEA0380380600
-185A5A383FFFF85AB512F0A216217CA01E&gt;I&lt;13FF000313C0380F03E0381C00F014F800
-3E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00
-F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFF
-C00001130018227DA01E&gt;I&lt;14E01301A213031307A2130D131D13391331136113E113C1
-EA01811203EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFF
-A218227DA11E&gt;I&lt;00101330381E01F0381FFFE014C01480EBFE00EA1BF00018C7FCA513
-FE381BFF80381F03C0381C01E0381800F014F8C71278A2147CA21230127812F8A2147848
-13F8006013F0387001E01238381E07803807FF00EA01F816227CA01E&gt;I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg ectt1000 10 90
-/Fg 90 127 df&lt;0170141CD801F8147E000315FE000714014848EB03FCD81FC0EB07F048
+%DVIPSBitmapFont: Fd ectt1000 10 90
+/Fd 90 127 df&lt;0170141CD801F8147E000315FE000714014848EB03FCD81FC0EB07F048
 48EB0FE090C713C0007EEC1F80007C150000FC5C48143ED8FFC0EB3FF06D14F86D14FC6D
 14FEA3007F141FA26C48EB0FFC6C48EB07F8D807C0EB01F027177FB22C&gt;16
 D&lt;001FEC07C0D83FC0EB0FF0486CEB1FF8486CEB3FFCA26D14FEA3007F141F003F140F00
@@ -823,21 +695,181 @@ C7FCEB03F85CB31307EB1FE013FF007F5BB55A49C8FC6D7E6C7FC67F131FEB07F01303B3
 125 D&lt;D801F8131CD807FE133E390FFF807E48EBC0FE48EBF3FC397F9FFFF8D8FE0713F0
 486C13E048C613C00070EB3F001F0A7AB22C&gt;I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh ecti1000 10 18
-/Fh 18 122 df&lt;1438147CA3147814F85CA20007140E390F80E03E01C0137E9038E1E1FE
+%DVIPSBitmapFont: Fe ectt0800 8 21
+/Fe 21 120 df&lt;387FFFF8B512FCA36C13F816057A9023&gt;45 D&lt;123E127FEAFF80A5EA7F
+00123E0909738823&gt;I&lt;EC0380EC07C0A2140F1580141F1500A25C143E147E147C14FC5C
+13015CA213035C13075C130F5C131F91C7FC5B133EA2137E137C13FC5B12015B12035BA2
+12075B120F5B121F90C8FC5A123EA2127E127C12FC5AA212701A347CAD23&gt;I&lt;123E127F
+EAFF80A5EA7F00123EC7FCAB123E127FEAFF80A5EA7F00123E091D739C23&gt;58
+D&lt;B47E7FA41207A7EBC1FCEBC7FF01DF13C090B512E015F09038FE0FF8EBF8039038F001
+FCEBE000A249137EA2153EA5157E7F15FC7F14019038F803F89038FE0FF090B5FC15E001
+DF138001CF1300380383F81F297FA823&gt;98 D&lt;EB3FF0EBFFFC000313FF5A5A381FE07FEA
+3F80387F003E007E90C7FCA25AA25AA57EA2007E1307007FEB0F80141FEA3FC0391FF07F
+006CB5FC6C5B6C5BC613F0EB3FC0191D7B9C23&gt;I&lt;EB3FC0EBFFF800037F4813FF481480
+381FF07F393F801FC0EB000F007E130715E05AB6FCA415C000F8C8FC7EA2007EEB01C000
+7FEB03E0383F800713E0391FF81FC06CB5FC6C14800001EBFE006C6C5AEB1FE01B1D7D9C
+23&gt;101 D&lt;EC01F090383F07FC9038FFDFFE000313FF5A48147E381FE1FE9038807E1839
+3F003F00A2003E7FA4003F5BA2381F807EEBE1FE6CB45A485B5C001E13C0013FC7FC90C8
+FC121F1340380FFFFCECFF804814C04814F0397E0007F8007C130048147CA248143CA36C
+147C6C14FC007FEB03F8EBE01F6CB512F0000F14C06C14800001EBFE0038003FF01F2E7E
+9D23&gt;103 D&lt;B47E7FA41207A7EBC1FCEBC7FF01DF138090B512C0A29038FE0FE0EBF807
+EBF00313E0A313C0AD39FFFE1FFF5CA38020297FA823&gt;I&lt;133813FEA5133890C7FCA6EA
+7FFC487EA3127FEA003EB3387FFFFEB6FCA36C13FE182A7AA923&gt;I&lt;14E0EB03F8A5EB00
+E01400A63803FFF04813F8A37EC7FCB3AB13011238387C03F012FEEB0FE0B5FC14C06C13
+006C5AEA0FF815397DA923&gt;I&lt;EA7F80487EA3127F1203A7ECFFFC13C1A313C0EC3F0014
+7E5CEBC1F8EBC3F0EBC7E0EBCFC0EBDFE0EBFFF0A2EBFDF8EBF8FCEBF07EEBE03E497E15
+80EC0FC01407EC03E0397FFE0FFFB55AA36C487E20297FA823&gt;I&lt;EA7FFEB5FCA37EEA00
+1FB3AD007FB512C0B612E0A36C14C01B297CA823&gt;I&lt;397E1F01F039FF7FC7FC9038FFEF
+FE14FF6C80390FE1FE1FEBC1FC01C07FEB80F8A2EB00F0AE3A7FE3FE3FE026FFF3FF13F0
+A3267FE3FE13E0241D819C23&gt;I&lt;38FF81FCEBC7FF01DF138090B512C0A23907FE0FE0EB
+F807EBF00313E0A313C0AD39FFFE1FFF5CA380201D7F9C23&gt;I&lt;133F3801FFE0487F487F
+487F381FC0FE383F807F383E001F007E1480007C130F00FC14C0481307A66C130FA2007C
+1480007E131F6CEB3F006D5A381FE1FE6CB45A6C5B6C5B6C5BD8003FC7FC1A1D7C9C23&gt;
+I&lt;38FF81FCEBC7FF01DF13C090B512E015F03907FE0FF8EBF8039038F001FCEBE000A249
+137EA2153EA5157E7F15FC7F14019038F803F89038FE0FF090B5FC15E001DF138001CF13
+00EBC3F801C0C7FCAAEAFFFEA51F2C7F9C23&gt;I&lt;397FF00FE039FFF87FF8ECFFFC13FB6C
+B5FCC613F8ECC078EC800091C7FC5BA25BA35BAA387FFFFCB57EA36C5B1E1D7E9C23&gt;
+114 D&lt;3801FF9C000F13FE5A127FA2EAFF0000FC137E48133EA26C131C6C1300EA7FF038
+3FFF80000F13E06C13F838007FFCEB01FEEB007F0070133F00F8131F7E143F7E38FF80FF
+EBFFFE14FC14F814F000701380181D7B9C23&gt;I&lt;137013F8A7007FB51280B612C0A36C14
+80D800F8C7FCACEC01C0EC03E0A3EBFC07140F9038FE1FC0EB7FFF158090383FFE00EB0F
+FCEB07F01B257EA423&gt;I&lt;397FF00FFE39FFF81FFFA3397FF00FFE001FC712F86C14F0A5
+7F390783E1E0EB87F1A3EB8FF90003EB79C013CFA2EBDF7BA2EBDE3B00011480EBFE3FA2
+EBFC1FA23900F80F00201D7F9C23&gt;119 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ff ecrm0800 8 40
+/Ff 40 122 df&lt;9138FF807E01079038E1FF80903A1F807FC3C0D93E00EB87E049EBFF07
+4913FE485A00039138FC018049017CC7FCAAB712FCA22703E0007CC7FCB3A6486C13FE3A
+7FFF0FFFF0A22B2F7FAE29&gt;27 D&lt;13031307130E131C1338137013F0EA01E013C01203EA
+0780A2EA0F00A2121EA35AA45AA512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03
+C0120113E0EA00F013701338131C130E1307130310437AB11B&gt;40
+D&lt;12C07E12707E7E7E120FEA0780120313C0EA01E0A2EA00F0A21378A3133CA4131EA513
+1FA2130FAB131FA2131EA5133CA41378A313F0A2EA01E0A2EA03C013801207EA0F00120E
+5A5A5A5A5A10437CB11B&gt;I&lt;B512C0A412047F9018&gt;45 D&lt;123C127E12FFA4127E123C08
+087A8714&gt;I&lt;123C127E12FFA4127E123C1200AD123C127E12FFA4127E123C081D7A9C14&gt;
+58 D&lt;4A7E4A7EA34A7EA24A7EA3EC1BF81419A2EC30FCA2EC70FEEC607EA24A7EA34948
+6C7EA2010380EC000FA201066D7EA3496D7EA2011FB57EA29038180001496D7EA349147E
+A201E0147F4980A20001ED1F801203000716C0D80FF0EC3FE0D8FFFC0103B5FCA2302F7E
+AE35&gt;65 D&lt;B612FCEDFF803A03F8000FC00001EC03F06F7E6F7E82167E167FA6167E16FE
+5E4B5A4B5AED0FE0ED7F8090B6C7FC16E09039F80003F0ED01FC6F7E167F821780161F17
+C0A61780163F17005E16FEED03FC0003EC0FF0B712C04BC7FC2A2D7DAC32&gt;I&lt;DA1FF013
+C09138FFFE01903903F00F8390390F8001E3013FC71277017C143F4848141F4848140F48
+481407A248481403121F491401123F90C8FC481500A300FE1600AB127F17C0A27E7F001F
+15016D1580120F6C6C1403EE07006C6C14066C6C140ED8007C5C013F147890390F8001E0
+903903F00FC0902600FFFEC7FCEC1FF02A2F7CAD33&gt;I&lt;DA1FF013C09138FFFE01903903
+F00F8390390F8001E3013FC71277017C143F4848141F4848140F48481407A24848140312
+1F491401123F90C8FC481500A300FE1600A992381FFFFEA2007F9138001FE0EE0FC0A27E
+7F121F7F120F6C7EA26C7E6C6C141FEA007C013F143FD90F8013F3903903F007C10100B5
+1200DA1FF813002F2F7CAD37&gt;71 D&lt;B512F0A23803FC006C5AB3B3A3487EB512F0A2142D
+7EAC19&gt;73 D&lt;B500F0EB7FFEA2D803FCC7EA1FF06C48EC0FC01700161E16385E5E4B5A4B
+5A4BC7FC150E5D5D15F0EC01C04A5A4A7E4A7E141F4A7EEC73F8ECE1FCEBF9C09038FF80
+FE9038FE007F497F49806F7E6F7E1507826F7E6F7EA26F7E167F821780EE1FC017E0486C
+EC3FF0B5D8F001B5FCA2302D7DAC37&gt;75 D&lt;B512F8A2D803FCC8FC6C5AB3A7160CA41618
+A41638A2167816F81501ED07F00003141FB7FCA2262D7EAC2C&gt;I&lt;D8FFF8923807FFC06D
+5D0003EFF00000015F01BE151BA2019F1533A3D98F801463A2D987C014C3A2D983E0EB01
+83A3D981F0EB0303A2D980F81306A3027C130CA26E1318A36E1330A291380F8060A29138
+07C0C0A3913803E180A2913801F300A3EC00FEA2157C487ED80FF04B7EB5D93801B512C0
+A23A2D7DAC41&gt;I&lt;90383F80303901FFF0703807C07C390F000EF0001E13074813034813
+011400127000F01470A315307EA26C1400127E127FEA3FE013FE381FFFE06C13FC6C13FF
+00011480D8003F13E013039038003FF0EC07F81401140015FC157C12C0153CA37EA21578
+7E6C14706C14F06CEB01E039F78003C039E3F00F0038E07FFE38C00FF01E2F7CAD27&gt;83
+D&lt;007FB712F8A29039000FC003007C150000701638A200601618A200E0161CA248160CA5
+C71500B3A94A7E011FB512E0A22E2D7EAC33&gt;I&lt;B53C801FFFF001FFF8A22707FC000190
+C7EA3FC0D803F06D48EC1F00047E140EA26C6C027F140CA26D171C0000DBDF801318A26D
+1738017E9026018FC01330A2017F17706D90260307E01360A2028016E0011F90260603F0
+5BA202C01501010F90260C01F85BA202E01503010790261800FC90C7FCA202F05D010349
+EB7E06A202F8150E010149EB3F0CA202FC151C010049EB1F98A202FE15B8DA7F80EB0FF0
+A2023F5D92C71207A26E5D021E1403A2020E5D020C1401452E7FAC48&gt;87
+D&lt;13FF000713C0380F01F0381C00F8003F137C80A2143F001E7FC7FCA4EB07FF137F3801
+FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14065AA3143F7E007E137F007FEBEF8C391F
+83C7FC390FFF03F83901FC01E01F207D9E23&gt;97 D&lt;EA07C012FFA2120F1207AC14FE9038
+C7FF809038CF03E09038DC01F09038F8007C49137E49133E497F1680A2150F16C0A9ED1F
+80A216005D6D133E6D5B01B05B9038BC01F090380E07E0390607FF80260001FCC7FC222F
+7EAD27&gt;I&lt;EB1FE0EB7FFC3801F01E3803E0073907C01F80EA0F80EA1F005A003EEB0F00
+007E90C7FCA2127C12FCA9127EA215C07E6C130101801380380FC0033907E007003801F0
+3E38007FF8EB1FC01A207E9E1F&gt;I&lt;15F8141FA214011400ACEB0FE0EB7FF83801F81E38
+03E0073807C003380F8001EA1F00481300123E127EA25AA9127C127EA2003E13017EEB80
+03000F13073903E00EFC3A01F03CFFC038007FF090391FC0F800222F7EAD27&gt;I&lt;EB1F80
+EBFFF03803E0783807C03E380F801E381F001FEC0F80123E007E130715C0127C12FCA3B6
+FCA200FCC8FCA5127EA2003E14C0123F6C1301390F80038001C013003803E00F3801F03C
+38007FF8EB1FC01A207E9E1F&gt;I&lt;EB03F0EB0FFCEB3E1EEB7C3F13F8EA01F0A23803E00C
+1400AAB512E0A23803E000B3A6487E387FFF80A2182F7FAE16&gt;I&lt;013F13F89038FFC3FE
+3903E1FF1E3807807C000F140C391F003E00A2003E7FA76C133EA26C6C5A00071378380F
+E1F0380CFFC0D81C3FC7FC90C8FCA3121E121F380FFFF814FF6C14C04814F0391E0007F8
+48130048147C12F848143CA46C147C007C14F86CEB01F06CEB03E03907E01F803901FFFE
+0038003FF01F2D7E9D23&gt;I&lt;EA07C012FFA2120F1207AC14FE9038C3FF809038C703E090
+38DE01F013F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2222E7EAD27&gt;I&lt;EA0780EA
+0FC0EA1FE0A4EA0FC0EA0780C7FCA8EA07C012FFA2120F1207B3A5EA0FE0EAFFFCA20E2E
+7EAD14&gt;I&lt;130FEB1F80EB3FC0A4EB1F80EB0F0090C7FCA8EB07C013FFA2130F1307B3AD
+1230127838FC0F80A21400485AEA783EEA3FF8EA07E0123C83AD16&gt;I&lt;EA07C012FFA212
+0F1207ADEC1FFEA2EC0FF0EC07C05D020EC7FC5C5C5C5CEBC3C013C7EBCFE0EBDFF013F9
+EBF0F8497EEBC07E143E80816E7E14076E7E816E7E486C487E3AFFFE07FF80A2212E7EAD
+25&gt;I&lt;EA07C012FFA2120F1207B3B3A3EA0FE0EAFFFEA20F2E7EAD14&gt;I&lt;2607C07FEB07F0
+3BFFC3FFC03FFC903AC783F0783F3C0FCE01F8E01F803B07DC00F9C00F01F8D9FF8013C0
+4990387F000749137EA249137CB2486C01FEEB0FE03CFFFE0FFFE0FFFEA2371E7E9D3C&gt;
+I&lt;3807C0FE39FFC3FF809038C703E0390FDE01F0EA07F8496C7EA25BA25BB2486C487E3A
+FFFE1FFFC0A2221E7E9D27&gt;I&lt;EB1FE0EB7FF83801F03E3803C00F3907800780390F0003
+C04814E0003EEB01F0A248EB00F8A300FC14FCA9007C14F8A26CEB01F0A26CEB03E0A239
+0F8007C03907C00F803901F03E0038007FF8EB1FE01E207E9E23&gt;I&lt;3807C0FE39FFC7FF
+809038CF03E0390FDC01F03907F800FC49137E49133E49133FED1F80A3ED0FC0A8151F16
+80A2ED3F00A26D137E6D137C5D9038FC01F09038CE07E09038C7FF80D9C1FCC7FC01C0C8
+FCA9487EEAFFFEA2222B7E9D27&gt;I&lt;90380FE01890387FF8383801F81C3903E00E783807
+C007390F8003F8001F1301EA3F00A2007E1300A212FE5AA8127EA36C13017EEB8003380F
+C0073803E00E3801F03C38007FF0EB1FC090C7FCA94A7E91381FFFC0A2222B7E9D25&gt;I&lt;
+380781F038FF87FCEB9E7EEA0F98EA07B813B0EBF03CEBE000A35BB1487EB5FCA2171E7E
+9D1B&gt;I&lt;3801FE183807FFB8381E01F8EA3C00481378481338A21418A27E7EB41300EA7F
+F06CB4FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C131EA27EA26C133C
+A26C137838FF01F038E3FFC000C0130017207E9E1C&gt;I&lt;1360A413E0A312011203A21207
+121FB512F0A23803E000AF1418A714383801F03014703800F860EB3FE0EB0F80152A7FA8
+1B&gt;I&lt;D807C013F800FF131FA2000F130100071300B21401A314033803E007EC0EFC3A01
+F81CFFC038007FF890391FE0F800221F7E9D27&gt;I&lt;3AFFFC01FFC0A23A0FE0007E000007
+147C15380003143015706C6C1360A26C6C5BA390387C0180A26D48C7FCA2EB3F07EB1F06
+A2EB0F8CA214DCEB07D8A2EB03F0A36D5AA26D5A221E7F9C25&gt;I&lt;3AFFFC01FFC0A23A0F
+E0007E000007147C1538000314306D137000011460A26C6C5BA2EBFC01017C5BEB7E0301
+3E90C7FCA2EB1F06A2148EEB0F8CA2EB07D8A2EB03F0A36D5AA26D5AA2495AA2130391C8
+FC1278EAFC06A25B131CEA7838EA7070EA3FE0EA0F80222B7F9C25&gt;121
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fg ecrm0600 6 7
+/Fg 7 56 df&lt;13E01201120712FF12F91201B3A7487EB512C0A212217AA01E&gt;49
+D&lt;EA01FC3807FF80381C0FC0383003E0386001F0EB00F812F86C13FCA2147C1278003013
+FCC7FC14F8A2EB01F0EB03E014C0EB0780EB0F00131E13385B5B3801C00CEA0380380600
+185A5A383FFFF85AB512F0A216217CA01E&gt;I&lt;13FF000313C0380F03E0381C00F014F800
+3E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00
+F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFF
+C00001130018227DA01E&gt;I&lt;14E01301A213031307A2130D131D13391331136113E113C1
+EA01811203EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFF
+A218227DA11E&gt;I&lt;00101330381E01F0381FFFE014C01480EBFE00EA1BF00018C7FCA513
+FE381BFF80381F03C0381C01E0381800F014F8C71278A2147CA21230127812F8A2147848
+13F8006013F0387001E01238381E07803807FF00EA01F816227CA01E&gt;I&lt;EB0FC0EB7FF0
+3801F0383803C0183807803C380F007C121E001C1338003C1300A2127C1278EB7FC038F9
+FFE038FB80F038FE0038143C48131EA248131FA41278A36C131EA2001C133C001E13386C
+1370380781E03801FFC038007F0018227DA01E&gt;I&lt;1230123C003FB5FCA24813FE14FC38
+60001C143814704813E014C0EA0001EB0380EB07001306130E5BA25BA21378A35BA41201
+A76C5A18237CA11E&gt;I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fh ecti1000 10 21
+/Fh 21 123 df&lt;1438147CA3147814F85CA20007140E390F80E03E01C0137E9038E1E1FE
 9038F1C3F83903F9CFE03900FDDF8090387FBE00EB1FF8EB07E0495AEB3FF0EBFBFC3803
 F77E390FE73F80393F871FE038FF0F0F38FC0E0700F8130339E01E01C0000090C7FCA213
 3E133C137CA313381F2470BD2A&gt;42 D&lt;14F8EB07FE90381F871C90383E03FE137CEBF801
 120148486C5A485A120FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F
 5D48ECC1C0A2141F15831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F
-079E3907FE03FC3901F000F0222677A42A&gt;97 D&lt;147F903803FFC090380FC1E090383F00
-F0017E13785B485A485A485A120F4913F8001F14F0383F8001EC07E0EC1F80397F81FF00
-EBFFF8148090C8FC5A5AA55AA21530007C14381578007E14F0003EEB01E0EC03C06CEB0F
-806CEB3E00380781F83803FFE0C690C7FC1D2677A426&gt;101 D&lt;EC07C0EC3FF09138FC38
-E0903901F01FF0EB03E0903807C00FEB0F80011F1307D93F0013E05B017E130F13FE4914
-C01201151F1203491480A2153F1207491400A25DA249137EA215FEA25D00031301140314
-076C6C485A0000131FEB787BEB3FF390380FC3F0EB00031407A25DA2140F5D121C007E13
-1F5D00FE49C7FC147E5C387801F8387C07E0381FFF80D803FEC8FC24367CA426&gt;103
+079E3907FE03FC3901F000F0222677A42A&gt;97 D&lt;147F903803FFC090380FC1E090381F00
+70017E13784913383901F801F83803F003120713E0120FD81FC013F091C7FC485AA2127F
+90C8FCA35A5AA45AA3153015381578007C14F0007EEB01E0003EEB03C0EC0F806CEB3E00
+380F81F83803FFE0C690C7FC1D2677A426&gt;99 D&lt;ED01F815FFA3150316F0A21507A216E0
+A2150FA216C0A2151FA21680A2153FA202F81300EB07FE90381F877F90383E03FF017C5B
+EBF80112013803F00048485B120FEBC001121F5DEA3F801403127F01005BA214075A485C
+A2140FA248ECC1C0A2141F15C3ED8380143F1587007C017F1300ECFF076C485B9038038F
+8E391F0F079E3907FE03FC3901F000F0253B77B92A&gt;I&lt;147F903803FFC090380FC1E090
+383F00F0017E13785B485A485A485A120F4913F8001F14F0383F8001EC07E0EC1F80397F
+81FF00EBFFF8148090C8FC5A5AA55AA21530007C14381578007E14F0003EEB01E0EC03C0
+6CEB0F806CEB3E00380781F83803FFE0C690C7FC1D2677A426&gt;I&lt;EC07C0EC3FF09138FC
+38E0903901F01FF0EB03E0903807C00FEB0F80011F1307D93F0013E05B017E130F13FE49
+14C01201151F1203491480A2153F1207491400A25DA249137EA215FEA25D000313011403
+14076C6C485A0000131FEB787BEB3FF390380FC3F0EB00031407A25DA2140F5D121C007E
+131F5D00FE49C7FC147E5C387801F8387C07E0381FFF80D803FEC8FC24367CA426&gt;103
 D&lt;EB03F0EA01FFA3EA00075CA3130F5CA3131F5CA3133F91C8FCA35B90387E07F0EC1FFC
 EC783E9038FFE01F02C01380EC800F1400485A16C05B49EB1F8012035BA2153F00071500
 5BA25D000F147E5B15FE5D121FD98001131C15F8163C003F01031338010013F0A2167048
@@ -886,10 +918,14 @@ I&lt;01F01507D803FC903903801F80D8071E903907C03FC0D80E1F130F121C123C0038021F
 140F4914C01270A249131FD8F07E148012E013FEC648133F160012015B5D0003147E5BA2
 15FE00075C5BA214015DA314035D14070003130FEBF01F3901F87FE038007FF7EB1FC7EB
 000F5DA2141F003F5C48133F92C7FC147E147C007E13FC387001F8EB03E06C485A383C1F
-80D80FFEC8FCEA03F0233679A428&gt;121 D E
+80D80FFEC8FCEA03F0233679A428&gt;121 D&lt;903903C0038090380FF007D91FF81300496C
+5A017F130E9038FFFE1E9038F83FFC3901F007F849C65A495B1401C7485A4A5A4AC7FC14
+1E5C5C5C495A495A495A49C8FC131E5B49131C5B4848133C48481338491378000714F839
+0FF801F0391FFF07E0383E1FFFD83C0F5B00785CD8700790C7FC38F003FC38E000F02126
+7BA422&gt;I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi ecrm0700 7 5
-/Fi 5 54 df&lt;13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521&gt;49
+%DVIPSBitmapFont: Fi ecrm0700 7 7
+/Fi 7 56 df&lt;13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521&gt;49
 D&lt;13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15
 005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA018039030003
 0012065A001FB5FC5A485BB5FCA219267DA521&gt;I&lt;13FF000313E0380F01F8381C007C00
@@ -900,120 +936,61 @@ F03807FFC0C690C7FC19277DA521&gt;I&lt;1438A2147814F81301A2130313071306130C131C
 F800A7497E90383FFFE0A21B277EA621&gt;I&lt;0018130C001F137CEBFFF85C5C1480D819FC
 C7FC0018C8FCA7137F3819FFE0381F81F0381E0078001C7F0018133EC7FC80A21580A212
 30127C12FCA3150012F00060133E127000305B001C5B380F03E03803FFC0C648C7FC1927
-7DA521&gt;I E
+7DA521&gt;I&lt;EB0FE0EB3FF8EBF81C3801E0063803C01F48485AEA0F005A121E003E131E91
+C7FC5AA21304EB3FC038FCFFF038FDC078B4C67E143E48131E141FA2481480A4127CA400
+3C1400123E001E131E143E6C133C6C6C5A3803C1F03801FFC06C6CC7FC19277DA521&gt;I&lt;
+1230123C003FB512E0A215C0481480A239700007000060130E140C48131C5C5CC75A5C13
+01495AA249C7FC5B130E131EA3133E133CA2137CA413FCA813781B287DA621&gt;I
+E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj ecbx1200 12 34
-/Fj 34 122 df&lt;EA07C0EA1FF0487E487E487E7FA31480A37E7EEA1FF7EA07C7EA000713
-0FA21400A25B131E133EA25B13FC5B485A485A1207485A485A90C7FC120C112278C41F&gt;
-39 D&lt;B612F8A91D097F9A25&gt;45 D&lt;EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3F
-F8EA1FF0EA07C00F0F788E1F&gt;I&lt;EC03C01407141F147FEB03FF133FB6FCA413C3EA0003
-B3B3ADB712FCA5264177C038&gt;49 D&lt;ECFFE0010F13FE013F6D7E90B612E0000315F82607
-FC0313FE3A0FE0007FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13F0
-7F17F881A46C5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E4B
-5A4B5A4A90C7FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014F0
-495A495A49C8FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038&gt;
-I&lt;ECFFF0010713FF011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80FF86D
-138013FE001F16C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F1380
-902607FFFEC7FC15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F13F0
-A217F8A3EA0FC0EA3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F80491380D8
-1FF0491300D80FFEEBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427BC038
-&gt;I&lt;163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F0714
-3E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F
-5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038&gt;I&lt;903807
-FFC0013F13FC48B612804815E0260FF80013F0D81FC0EB3FF848C7EA1FFC4815FE01C013
-0F486C14FF7FA66C485B6C4814FE000FC7FCC8EA3FFCED7FF8EDFFF04A13E04A13801600
-EC07FC4A5A5D4A5A5D4A5A92C7FCA2147E147CA31478AA91C8FCA814F8EB03FE497E497F
-A2497FA56D5BA26D90C7FC6D5AEB00F828467AC535&gt;63 D&lt;BA1280A419C026003FFEC712
-1F1701EF007F183F181F180F180719E01803A31801A3EE01E0F000F0A419001603A31607
-160F167F91B6FCA59138FE007F160F16071603A31601A693C9FCAFB712F0A53C447CC346
-&gt;70 D&lt;B7D88003B612FEA526003FFEC9EBF800B3A791B9FCA54AC9FCB3AAB7D88003B612
-FEA54F447CC358&gt;72 D&lt;B500FE067FB512806E95B6FCA26F5EA2D8003F50C7FC013D6DEE
-03DFA2013C6DEE079FA26E6CEE0F1FA26E6C161EA26E6C163CA36E6C1678A26E6C16F0A2
-6E6DEC01E0A26E6DEC03C0A36E6DEC0780A26F6CEC0F00A26F6C141EA26F6C5CA36F6C5C
-A26F6C5CA26F6D485AA26F6D485AA26F6D485AA3706C48C7FCA293383FF81EA2706C5AA2
-706C5AA3706C5AA2705BA2705BA2705BA2B6057FB6128071C7FCA2173E171C61447CC36A
-&gt;77 D&lt;DAFFE0131C010701FE133C013F9038FF807C90B6EAE0FC4815F9489038801FFF39
-07FC00014848EB007F4848143F4848140F491407007F15035B1601160012FF177CA27FA2
-6D153C7F7F6D92C7FC6C7EEBFFE014FE6CEBFFF015FF6C15E016FC6C816C6F7E6C826C82
-6C6C81011F810107811300020F80140003077FED007F82040F1380828212F082A282A27E
-A218007EA26C5D6C5E6D14036D5D6D140701F84A5A01FFEC3FF002F8EBFFE0486CB65AD8
-FC1F92C7FCD8F80714FC48C614F0480107138031467AC43E&gt;83 D&lt;003FBA12E0A59026FE
-000FEB8003D87FE09338003FF049171F90C71607A2007E1803007C1801A300781800A400
-F819F8481978A5C81700B3B3A20107B8FCA545437CC24E&gt;I&lt;B600FE017FB691B512FEA5
-26007FFCC8D83FFEC9EA7C006E82013F701778807415F86D705F6F7014016D705FA26F70
-14036D64814E6D14076D646F70140F6D041E94C7FCA26F023E6D5C6DDC3C7F151E81027F
-037C6D5CF0783F6F70147C023F4B6C1578A26F01016F13F86E4B6C5D16806E02036F485A
-4E7E04C0EEE0036E4A486C5DA2DCE00FEDF0076E4B6C5D16F06E4A6F48C8FC051E7F04F8
-705A6E4A027F131EA2DCFC7CEDFE3E037F0178023F133C04FE16FF033F01F85E4D8004FF
-17F86F496E5BA36F496E5BA26F604D80A26F90C86C5BA36F486F90C9FCA26F48167EA304
-78163C6F457EC374&gt;87 D&lt;903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848
-EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307
-013F13F19038FFFC01000313E0481380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C
-5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9
-FC322F7DAD36&gt;97 D&lt;EB7FC0B5FCA512037EB1ED0FF892B57E02C314E002CF14F89139DF
-C03FFC9139FF000FFE02FCEB03FF4A6D13804A15C04A6D13E05CEF7FF0A218F8173FA318
-FCAC18F8A2177F18F0A3EFFFE06E15C06E5B6E491380027C491300496C495A903AFC1FC0
-7FFC496CB512F0D9F00314C049C691C7FCC8EA1FF036467DC43E&gt;I&lt;EC3FFC49B512C001
-0F14F0013F14FC90397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A
-6F1300007F6E5AED00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F1680
-6D140F6C6DEB1F006C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038
-003FF82A2F7CAD32&gt;I&lt;EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F
-013F14CF9039FFF807FF48EBC00148903880007F4890C7123F4848141F49140F121F485A
-A3127F5BA212FFAC127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C0
-0314FC6C9038F01FEF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E&gt;
-I&lt;EC3FF80103B57E010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48
-486D1380485A001FED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FC
-A5127FA27FA2123F17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB
-3F0090397FFE01FE011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33&gt;I&lt;DAFF
-E0137E010F9039FE03FF80013FEBFF8F90B812C048D9C07F133F489038001FF84848EB0F
-FC4848903907FE1F80001F9238FF0F00496D90C7FCA2003F82A8001F93C7FCA26D5B000F
-5D6C6C495A6C6C495A6C9038C07FF04890B55A1680D8078F49C8FC018013E0000F90CAFC
-A47F7F7F90B612C016FC6CEDFF8017E06C826C16FC7E000382000F82D81FF0C77ED83FC0
-14074848020113808248C9FC177FA46D15FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC
-3FF83B07FFC001FFF0000190B612C06C6C92C7FC010F14F8D9007F90C8FC32427DAC38&gt;
-103 D&lt;EB7FC0B5FCA512037EB1ED07FE92383FFF8092B512E002C114F89139C7F03FFC91
-38CF801F9139DF000FFE14DE14FC4A6D7E5CA25CA35CB3A7B60083B512FEA537457CC43E
-&gt;I&lt;137C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB
-7FC0EA7FFFA512037EB3AFB6FCA518467CC520&gt;I&lt;EB7FC0B5FCA512037EB3B3B3A3B612
-80A519457CC420&gt;108 D&lt;90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001
-B512E002816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF
-3E007F6C019E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003
-B512FEA5572D7CAC5E&gt;I&lt;90397F8007FEB590383FFF8092B512E0028114F8913987F03F
-FC91388F801F000390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FE
-A5372D7CAC3E&gt;I&lt;EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F48
-496C7F4848C7EA3FE000078248486E7E49140F001F82A2003F82491407007F82A400FF17
-80AA007F1700A46C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D485B
-27007FF80F90C7FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38&gt;I&lt;90397F
-C00FF8B590B57E02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C49
-6D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E
-15C06E5B6E4913806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED
-1FF092C9FCADB67EA536407DAC3E&gt;I&lt;90387F807FB53881FFE0028313F0028F13F8ED8F
-FC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5
-B612E0A5272D7DAC2E&gt;114 D&lt;90391FFC038090B51287000314FF120F381FF003383FC0
-0049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C0
-15F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F
-150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13
-E026E007FEC7FC232F7CAD2C&gt;I&lt;EB01E0A51303A41307A2130FA2131FA2133F137F13FF
-1203000F90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C0137F150790393FF8
-0F8090391FFC1F006DB5FC6D13FC01015B9038003FE023407EBE2C&gt;I&lt;D97FC049B4FCB5
-0103B5FCA50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F713FE9138F807E7
-6DB512C7010F1407010313FE9026007FF0EBFC00372E7CAC3E&gt;I&lt;B6903803FFFCA50001
-01E09038003E006C163C80017F5D8017F8013F5D6E1301011F5D6E1303010F5D6E13076D
-5DED800F6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8023F5B15FD02
-1F5B15FF6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B&gt;I&lt;B5D8FE1FB539
-801FFFF0A500019027C0003FE0C7EA7C007114786E17F86C6F6C5C6E1601017F6E6C5CA2
-6E011F1403013F6F5C6E013F1407011F6F5CA26E0179140F010F048090C7FC6E01F95C6D
-02F0EBC01E15806D902681E07F5B18E003C3157C6D9139C03FF07815E76DDA801F5B18F8
-03FF14F96E9039000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FCA24B7F02075DA2
-6E48147C4B143C4C2C7EAB51&gt;I&lt;B6903803FFFCA5000101E09038003E006C163C80017F
-5D8017F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F6D92C7FC15C05E6DEB
-E01E163E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF6E5BA36E5BA26E90C8
-FCA26E5AA26E5AA21578A215F85D14015D001F1303D83F805B387FC007D8FFE05B140F92
-C9FC5C143E495A387FC1F8EB07F06CB45A6C5B000790CAFCEA01FC36407EAB3B&gt;121
-D E
+%DVIPSBitmapFont: Fj ecbx2074 20.74 8
+/Fj 8 117 df&lt;B9FCAE300E7EAD3D&gt;45 D&lt;952601FFFE160E95B600F0151E050F03FE15
+3E94B86C147E040305F014FE041F05FC1301047F9127F0003FFE13034BB500FCC73903FF
+8007030702E09138007FE0031F91C9381FF00F037F01F8933807F81F92B500E0933803FC
+3F02034A933800FF7F4A91CBEA7FFF4A49844A01F8844A49844A498491B54884494A8449
+91CDFC495B491C7F49491A3F5D491C1F49491A0F5D90B51B075D5A481D035D1E014891CE
+FCA25A1E005C5AA21F7E485BA31F005AA35CA3B5FCB27EA280A47EA31F7E6C7FA37E80A2
+6C1EFE1FFC6C80A26F1A016C1EF87E6F1A036D1DF06F1A076D6D1BE06D1C0F6F1BC06D6D
+1A1F6DF43F806D7F6D6EF17F006D6E19FE6E6D4E5A6E6D18036E6D4E5A6E01FE4E5A6E6D
+4E5A6E02C0EF7FC002006E4DC7FC6F01FCEE03FE031F01FFEE0FFC030702E0ED3FF00301
+02FE4AB45A6F6CD9FFF0013F1380041F91B648C8FC040317F8040017E0050F93C9FC0500
+15F0060149CAFC6F7A76F784&gt;67 D&lt;923801FFFC031FEBFFC092B612F8020715FE021F6F
+7E027FD9E03F13E09127FFFE00077F010301F801017F49496D7F4901C0EC3FFE49498149
+90C86C138049486F13C013FF4A6F13E05A48496F13F0A2484917F848831AFCA2484981A2
+4819FEA3485B197F1AFFA3B5FCA491BAFCA402C0CBFCA77EA4807EA37E80A26C193FA26C
+6D177F1A7E6C7F6C19FE6EEE01FC6C7F6DEF03F86D6DED07F06D6DED0FE06D6DED1FC06D
+01F8ED3F806D6DEDFF006D01FFEC03FE6D6C01E0EB0FFC6E01FEEBFFF8020F90B612E002
+031680DA007F4AC7FC030F14F0DB007F90C8FC48507BCE53&gt;101
+D&lt;F207F892260FFFC0EC3FFE4AB500FE49B5FC020F9126FFC0071480023FDBF00F14C091
+26FFFE019038FC3FF801039029F0003FFF7F8113E049496DEBFC01490180010713F04990
+C76C13E04917F049486E13F801FF716C13C04A6EED7F804872EB1E00487290C7FCA24A81
+4885A34885AB6C61A36C96C8FC6E92B5FCA26C606C606E5C017F5F6D6C4A5B6D5F6D6D49
+5B6D01E0011F5B496D4990C9FC011E9039FE01FFFCD93E3FB612F0D93C0F15C0D97C014A
+CAFCDA000F13C04990CDFCA31201A27FA37FA27F808014F86C90B712F8F0FFE019FE6D71
+7E1AF06D18FC866D846D19C06D857F4985013F8590BBFC4801F0C8000F80000701C0ED00
+7F4849040F7F4890CA1203484883854848727E8612FF5B86A66D60007F62A26C6C4E5A6D
+18FF6C626C6D4C5B6C6D4C5B6C6D4C5B6C01F8041F5B6C6D4C90C7FC90263FFF80913801
+FFFC010F01F0020F13F0010301FF91B512C0010091B7C8FC021F16F802011680DA000302
+C0C9FC53727BCE5B&gt;103 D&lt;903801FFF8B6FCA6C67E131F7FB3B00607B612F0A6DE003F
+EBF000070F90C7FCF107FC4F5A4F5AF13FC0F1FF804E90C8FC4E5A4E5A4E5A4E5A4E5AF0
+7F804D48C9FC4D5A4D5A4D5A4D5A4D5A4D5A4DCAFC04037F4C7F5E4C7F4C7F5E93B57E03
+F98092B6FC848416E704C380048380040180EDFC004B814B6D7F83717F8583717F868371
+808671808486727F8486727F8472808784728087737FA296B512FEB8013F91B5FCA65878
+7CF760&gt;107 D&lt;903801FFF8B6FCA6C67E131F7FB3B3B3B3B3AFB81280A629787BF732&gt;I&lt;
+912607FFE0131C91B500FE137C01079138FF80FC011F15E1017F15FB903AFFFC003FFF00
+0301C013034890C8FC49157F4848153F4848151F49150F003F1607A248481503A2170112
+FFA217007FA27F7F7F6D93C7FC14C06C13F014FF15FC6CECFFE016FE6CEDFFC017F06C16
+FC6C16FF6C836C17E06C83013F826D821307010182D9003F811403DA001F15801500040F
+14C01601707E00FC7013E0170F837E83837EA2837FA219C07FA27F6D4B1380A26D4B1300
+7F6D4B5A6D150F6E4A5A02E04A5AD9DFF8ECFFF0D98FFF010F13C0010390B65AD8FC004B
+C7FC48013F14F848010F14C048010001F8C8FC3B507ACE48&gt;115
+D&lt;15FCA71401A51403A31407A3140FA2141FA2143F147F14FFA25B5B5B131F5B90B5FC00
+0F91B612FCB9FCA5D8000701FCC9FCB3B3A4F01F80AF183F6D170081A2187E6D7F18FE6D
+6E5B6E4A5AEEC0036E6D485A6E9038F80FE0020790B55A6E5D02004AC7FC031F13F80301
+13C0396E7DEC47&gt;I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk ecrm1000 10 79
-/Fk 79 127 df&lt;486C1360000314E039070001C0000EEB038048EB070000181306003813
+%DVIPSBitmapFont: Fk ecrm1000 10 80
+/Fk 80 127 df&lt;486C1360000314E039070001C0000EEB038048EB070000181306003813
 0E0030130C0070131C00601318A200E01338481330A400CEEB338039FF803FE001C013F0
 A3007F131FA2393F800FE0390E0003801C1981B91C&gt;16 D&lt;001C1307007FEB1FC039FF80
 3FE0A201C013F0A3007F131F001CEB073000001300A400011470491360A2000314E090C7
@@ -1121,118 +1098,122 @@ CF4948EB00EF4948147F4948143F49C8121F485A4848150F48481507A248481503A2485A
 6C7EA26C7EA26C7E6C7E6C6C157F6D7E6D6C14FF6D6C14EFD90FF8EB03C7D903FEEB0783
 903A00FFC03F0191393FFFFC00020F01F0130002001380383D7CBA41&gt;I&lt;B648B512FEA3
 0001902680000313006C90C76C5AB3A491B6FCA391C71201B3A6486D497EB648B512FEA3
-37397DB83E&gt;I&lt;B612C0A3C6EBC0006D5AB3B3AD497EB612C0A31A397EB81E&gt;I&lt;B612E0A3
-000101C0C8FC6C90C9FCB3AD1718A517381730A31770A317F0A216011603160FEE1FE048
-6D13FFB8FCA32D397DB834&gt;76 D&lt;B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2
-D9CFE01533A3D9C7F01563A3D9C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406
-A36E6C130CA36E6C1318A26E6C1330A36E6C1360A26E6C13C0A3913901FC0180A3913900
-FE0300A2ED7F06A3ED3F8CA2ED1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C0
-0203B512F8A2ED018045397DB84C&gt;I&lt;B5913807FFFE8080C69238007FE06EEC1F80D9DF
-F0EC0F001706EBCFF8EBC7FCA2EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E81
-14036E7E168080ED7FC016E0153FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE
-7FC6EE3FE6A2EE1FF6EE0FFEA216071603A216011600A2177E486C153E487ED80FFC151E
-B500C0140EA2170637397DB83E&gt;I&lt;EC03FF021F13E09138FE01FC903901F8007ED907E0
-EB1F8049486D7ED93F80EB07F049C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F
-80A24848ED1FC0A2001F17E049150F003F17F0A3007F17F8491507A300FF17FCAC007F17
-F86D150FA3003F17F0A26C6CED1FE0A36C6CED3FC0000717806D157F000317006C6C15FE
-A26C6C4A5A017F4A5A6D6C495A6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC
-91381FFFE0020390C8FC363D7BBA41&gt;I&lt;B712C016FC16FF0001D9800013C06C90C7EA1F
-E0707EEE03F883707EA2707EA21880A71800A24C5AA24C5A5FEE0FF04C5AEEFF8091B548
-C7FC16F091CAFCB3A5487FB6FCA331397EB838&gt;I&lt;B612FEEDFFE016F8000190388007FE
-6C90C76C7EEE3FC0707E707E707EA2707EA283A65FA24C5AA24C5A4C5AEE3F8004FFC8FC
-ED07FC91B512E05E9138000FF0ED03F8ED00FE82707E707EA2161F83A583A6F00180A217
-F8160F1803486D01071400B66D6C5A04011306933800FE0ECAEA3FFCEF07F0393B7DB83D
-&gt;82 D&lt;D90FF813C090383FFE0190B512813903F807E33907E000F74848137F4848133F48
-C7121F003E140F007E1407A2007C140312FC1501A36C1400A37E6D14006C7E7F13F86CB4
-7E6C13F8ECFF806C14E06C14F86C14FEC680013F1480010714C0EB007F020713E0EC007F
-ED3FF0151F150FED07F8A200C01403A21501A37EA216F07E15036C15E06C14076C15C06C
-140F6DEB1F80D8FBF0EB3F00D8F0FE13FE39E03FFFF8010F13E0D8C00190C7FC253D7CBA
-2E&gt;I&lt;003FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000701770A300
-601730A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB83C&gt;I&lt;B6
-903807FFFEA3000101809038007FE06C90C8EA1F80EF0F001706B3B2170E6D150C80171C
-133F17186D6C14385F6D6C14F06D6C5C6D6C495A6D6CEB07806D6C49C7FC91387F807E91
-381FFFF8020713E09138007F80373B7DB83E&gt;I&lt;B5D8FC07B5D8F001B5FCA30007902780
-001FFEC7EA1FF86C48C7D80FF8EC07E000010307ED03C01B807F6C6F6C1500A26E5F017F
-6E6C1406A280013F4A6C5CA280011F4A6D5BEE067FA26D6C010E6D5BEE0C3FA26D6C011C
-6D5BEE181FA26D6C6F5BEE300FA26D6C6F485AEE6007A26D6C4CC7FC9338C003FCA20380
-5D913B7F818001FE06A203C1150EDA3FC3C7EAFF0CA203E3151CDA1FE6EC7F98A215F6DA
-0FFCEC3FF0A302075E4B141FA202035E4B140FA202015E4B1407A2020093C8FC4B80503B
-7EB855&gt;87 D&lt;B500FE91383FFFE0A3000301E0913807FE00C649EC03F0017F6F5A606D6C
-5D6D6C140395C7FC6D6C1406A26D6C5C6D6C141C17186D6C143817306D6D5B6E6C13E05F
-91383FE0015F91381FF003DA0FF890C8FC1606913807FC0E160C913803FE1C913801FF18
-5E6E13B016E0157F6F5AB3A24B7E023FB512C0A33B397FB83E&gt;89
-D&lt;1303EB0FC0497E497EEB7CF83801F87E3803E01F3907C00F80391F0003E0003CEB00F0
-48147800E0141C48140C1E0D76B333&gt;94 D&lt;007FB81280B912C0A26C17803204797041&gt;
-I&lt;EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A6C5A
-C8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FEA314
-01A26C13036CEB077C903980063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F8007
-C026277DA52A&gt;97 D&lt;EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E03E9039F3801F
-809039F7000FC001FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E167FAA167E16
-FEA216FC15016D14F8ED03F07F01EEEB07E001C6EB0FC09039C7801F00903881E07E9038
-00FFF8C7EA1FC0283B7EB92E&gt;I&lt;EB03FC90381FFF8090387E03E03901F80070484813F8
-3907E001FC380FC003A2EA1F80123F90380001F848EB00F01500A2127E12FEAA127E127F
-A26C14067F001F140E6D130C000F141C6C6C13386C6C13706C6C13E039007C07C090381F
-FF00EB07F81F277DA525&gt;I&lt;ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F
-9038F801EF3903F0007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FEAA12
-7E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90
-381FFE0FD907F813C0283B7DB92E&gt;I&lt;EB07F8EB1FFF90387C0FC03901F803E03903F001
-F0D807E013F8380FC0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8FCA5
-127EA2127FA26C14037F001F14076C6C13060007140E6D131CD801F013386C6C13709038
-7E03E090381FFF80903803FC0020277EA525&gt;I&lt;147E903803FF8090380FC1E0EB1F8790
-383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8
-A31C3B7FBA19&gt;I&lt;ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903
-E007C03A07C003E010000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D
-48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815
-C03A0F80007FE048C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0
-003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A
-&gt;I&lt;EA03F012FFA3120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0EBF7
-0013FE496D7EA25BA35BB3A3486C497EB500C1B51280A3293A7EB92E&gt;I&lt;EA0380EA0FE0
-487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA487EB512C0A312387EB717&gt;I&lt;
-EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C12
-7E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA03F8154984B719&gt;I&lt;EA03F0
-12FFA3120F1203B1913801FFFCA39138007FC01600157C15705D4A5A4A5A4AC7FC141E14
-38147814FC13F1EBF3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E811400157E157F
-811680ED1FC0486CEB3FF0B500C0B5FCA3283A7EB92C&gt;I&lt;EA03F012FFA3120F1203B3B3
-AD487EB512C0A3123A7EB917&gt;I&lt;2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E0
-7E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2
-495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445&gt;I&lt;3903F00FF000
-FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C
-497EB500C1B51280A329257EA42E&gt;I&lt;EB03FE90380FFF8090383E03E09038F800F84848
-137C48487F48487F4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15F8A9
-007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C
-13F890387E03F090381FFFC0D903FEC7FC25277EA52A&gt;I&lt;3903F01FE000FFEB7FF89038
-F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016
-FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F0090
-38F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E&gt;I&lt;D903F813C09038
-1FFE0190387E07819038FC01C33903F000E3000714774848133749133F001F141F485A15
-0F48C7FCA312FEAA127FA37E6D131F121F6D133F120F6C6C137F6C6C13EF3901F801CF39
-007E078F90381FFE0FEB07F890C7FCABED1FE00203B5FCA328357DA42C&gt;I&lt;3807E01F00
-FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300
-A45BB3A2487EB512F0A31C257EA421&gt;I&lt;EBFF03000313E7380F80FF381E003F487F487F
-00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F01071380
-EB007F141F00C0EB0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C38E1
-FFF038C03F801A277DA521&gt;I&lt;1318A51338A31378A313F8120112031207001FB5FCB6FC
-A2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220
-&gt;I&lt;D803F0EB07E000FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D133F00
-00EC77F86D9038E7FF8090383F03C790381FFF87903A03FC07E00029267EA42E&gt;I&lt;B538
-803FFEA33A0FF8000FF06C48EB07E00003EC03C06D148000011500A26C6C1306A26D130E
-017E130CA26D5BA2EC8038011F1330A26D6C5AA214E001075BA2903803F180A3D901FBC7
-FCA214FF6D5AA2147CA31438A227257EA32C&gt;I&lt;B53A1FFFE03FFEA3260FF8009038000F
-F86C48017EEB03E018C00003023EEB0180A26C6C013FEB0300A36C6CEC8006156FA2017E
-9038EFC00C15C7171CD93F01EBE01815830281EBF038D91F831430150102C3EBF8709026
-0FC6001360A2D907E66D5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A7FA20100
-141E4A130E0260130C37257EA33C&gt;I&lt;B538807FFFA33A03FE003FF00001EC1F80000092
-C7FC017E131C6D13186D6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F
-804A7E8114CF903801C7E090380383F090380703F8EB0601496C7E011C137E49137F0178
-7F496D7E486C80000FEC3FF0D8FFFE90B51280A329247FA32C&gt;I&lt;B538803FFEA33A0FF8
-000FF06C48EB07C00003EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2
-ECC070010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A214
-30A214701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC0
-27357EA32C&gt;I&lt;003FB512FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB
-1FC0EC3F800060137F150014FE495AA2C6485A495AA2495A495A495AA290387F000613FE
-A2485A485A0007140E5B4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F
-247EA325&gt;I&lt;D801FC14202607FF8013704801F013E0489038FE03C0D83C07B51280D870
-00140048EB1FFE0040EB03F8240879B633&gt;126 D E
+37397DB83E&gt;I&lt;B612C0A3C6EBC0006D5AB3B3AD497EB612C0A31A397EB81E&gt;I&lt;B649B5FC
+A3000101809038007FF06C90C8EA3F80053EC7FC173C17385F5F4C5A4C5A4CC8FC160E5E
+5E5E5E4B5AED0780030EC9FC5D153E157E15FF5C4A7F4A6C7E140E4A6C7E4A6C7E14704A
+6C7E4A6C7E14804A6C7E6F7EA26F7F707EA2707E707EA2707EA2707E707EA2707E707F84
+84486D497FB6011FEBFF80A339397DB841&gt;75 D&lt;B612E0A3000101C0C8FC6C90C9FCB3AD
+1718A517381730A31770A317F0A216011603160FEE1FE0486D13FFB8FCA32D397DB834&gt;
+I&lt;B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9
+C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C
+1330A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED
+1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045397DB8
+4C&gt;I&lt;B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EBC7FCA2
+EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080ED7FC016E015
+3FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE0FFEA2
+16071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA2170637397DB83E
+&gt;I&lt;EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F0
+49C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1FC0A2001F17E049
+150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA3003F17F0A26C6CED
+1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A017F4A5A6D6C495A
+6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE0020390C8FC363D7B
+BA41&gt;I&lt;B712C016FC16FF0001D9800013C06C90C7EA1FE0707EEE03F883707EA2707EA2
+1880A71800A24C5AA24C5A5FEE0FF04C5AEEFF8091B548C7FC16F091CAFCB3A5487FB6FC
+A331397EB838&gt;I&lt;B612FEEDFFE016F8000190388007FE6C90C76C7EEE3FC0707E707E70
+7EA2707EA283A65FA24C5AA24C5A4C5AEE3F8004FFC8FCED07FC91B512E05E9138000FF0
+ED03F8ED00FE82707E707EA2161F83A583A6F00180A217F8160F1803486D01071400B66D
+6C5A04011306933800FE0ECAEA3FFCEF07F0393B7DB83D&gt;82 D&lt;D90FF813C090383FFE01
+90B512813903F807E33907E000F74848137F4848133F48C7121F003E140F007E1407A200
+7C140312FC1501A36C1400A37E6D14006C7E7F13F86CB47E6C13F8ECFF806C14E06C14F8
+6C14FEC680013F1480010714C0EB007F020713E0EC007FED3FF0151F150FED07F8A200C0
+1403A21501A37EA216F07E15036C15E06C14076C15C06C140F6DEB1F80D8FBF0EB3F00D8
+F0FE13FE39E03FFFF8010F13E0D8C00190C7FC253D7CBA2E&gt;I&lt;003FB812E0A3D9C003EB
+001F273E0001FE130348EE01F00078160000701770A300601730A400E01738481718A4C7
+1600B3B0913807FF80011FB612E0A335397DB83C&gt;I&lt;B6903807FFFEA300010180903800
+7FE06C90C8EA1F80EF0F001706B3B2170E6D150C80171C133F17186D6C14385F6D6C14F0
+6D6C5C6D6C495A6D6CEB07806D6C49C7FC91387F807E91381FFFF8020713E09138007F80
+373B7DB83E&gt;I&lt;B5D8FC07B5D8F001B5FCA30007902780001FFEC7EA1FF86C48C7D80FF8
+EC07E000010307ED03C01B807F6C6F6C1500A26E5F017F6E6C1406A280013F4A6C5CA280
+011F4A6D5BEE067FA26D6C010E6D5BEE0C3FA26D6C011C6D5BEE181FA26D6C6F5BEE300F
+A26D6C6F485AEE6007A26D6C4CC7FC9338C003FCA203805D913B7F818001FE06A203C115
+0EDA3FC3C7EAFF0CA203E3151CDA1FE6EC7F98A215F6DA0FFCEC3FF0A302075E4B141FA2
+02035E4B140FA202015E4B1407A2020093C8FC4B80503B7EB855&gt;87
+D&lt;B500FE91383FFFE0A3000301E0913807FE00C649EC03F0017F6F5A606D6C5D6D6C1403
+95C7FC6D6C1406A26D6C5C6D6C141C17186D6C143817306D6D5B6E6C13E05F91383FE001
+5F91381FF003DA0FF890C8FC1606913807FC0E160C913803FE1C913801FF185E6E13B016
+E0157F6F5AB3A24B7E023FB512C0A33B397FB83E&gt;89 D&lt;1303EB0FC0497E497EEB7CF838
+01F87E3803E01F3907C00F80391F0003E0003CEB00F048147800E0141C48140C1E0D76B3
+33&gt;94 D&lt;007FB81280B912C0A26C17803204797041&gt;I&lt;EB1FE0EBFFFC3803E03F390700
+0F80390F8007E0486C6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00
+EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FEA31401A26C13036CEB077C903980063E
+18383FC01E3A0FE0781FF03A03FFF00FE03A007F8007C026277DA52A&gt;97
+D&lt;EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E03E9039F3801F809039F7000FC001
+FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E167FAA167E16FEA216FC15016D14
+F8ED03F07F01EEEB07E001C6EB0FC09039C7801F00903881E07E903800FFF8C7EA1FC028
+3B7EB92E&gt;I&lt;EB03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC0
+03A2EA1F80123F90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F14
+0E6D130C000F141C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277D
+A525&gt;I&lt;ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F9038F801EF3903F0
+007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FEAA127E127FA27EA26C6C
+131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90381FFE0FD907F813
+C0283B7DB92E&gt;I&lt;EB07F8EB1FFF90387C0FC03901F803E03903F001F0D807E013F8380F
+C0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8FCA5127EA2127FA26C14
+037F001F14076C6C13060007140E6D131CD801F013386C6C137090387E03E090381FFF80
+903803FC0020277EA525&gt;I&lt;147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213
+FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19&gt;I&lt;
+ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0
+10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38
+060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048
+C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB
+0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A&gt;I&lt;EA03F012FFA3
+120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0EBF70013FE496D7EA25B
+A35BB3A3486C497EB500C1B51280A3293A7EB92E&gt;I&lt;EA0380EA0FE0487EA56C5AEA0380
+C8FCAAEA03F012FFA312071203B3AA487EB512C0A312387EB717&gt;I&lt;EB01C0EB07F0EB0F
+F8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C127E00FF13F01303A2
+14E038FE07C0127C383C0F00EA0FFEEA03F8154984B719&gt;I&lt;EA03F012FFA3120F1203B1
+913801FFFCA39138007FC01600157C15705D4A5A4A5A4AC7FC141E1438147814FC13F1EB
+F3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E811400157E157F811680ED1FC0486C
+EB3FF0B500C0B5FCA3283A7EB92C&gt;I&lt;EA03F012FFA3120F1203B3B3AD487EB512C0A312
+3A7EB917&gt;I&lt;2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F8380
+3F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A348
+6C496CEB1FE0B500C1B50083B5FCA340257EA445&gt;I&lt;3903F00FF000FFEB3FFCECF03F90
+39F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280
+A329257EA42E&gt;I&lt;EB03FE90380FFF8090383E03E09038F800F84848137C48487F48487F
+4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15F8A9007E15F0A2007F14
+076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F090
+381FFFC0D903FEC7FC25277EA52A&gt;I&lt;3903F01FE000FFEB7FF89038F1E07E9039F3801F
+803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3
+ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FF
+F8EC1FC091C8FCAB487EB512C0A328357EA42E&gt;I&lt;D903F813C090381FFE0190387E0781
+9038FC01C33903F000E3000714774848133749133F001F141F485A150F48C7FCA312FEAA
+127FA37E6D131F121F6D133F120F6C6C137F6C6C13EF3901F801CF39007E078F90381FFE
+0FEB07F890C7FCABED1FE00203B5FCA328357DA42C&gt;I&lt;3807E01F00FFEB7FC09038E1E3
+E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512
+F0A31C257EA421&gt;I&lt;EBFF03000313E7380F80FF381E003F487F487F00707F12F0A2807E
+A27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F01071380EB007F141F00C0EB
+0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C38E1FFF038C03F801A27
+7DA521&gt;I&lt;1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215
+C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220&gt;I&lt;D803F0EB07E0
+00FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D133F0000EC77F86D9038E7
+FF8090383F03C790381FFF87903A03FC07E00029267EA42E&gt;I&lt;B538803FFEA33A0FF800
+0FF06C48EB07E00003EC03C06D148000011500A26C6C1306A26D130E017E130CA26D5BA2
+EC8038011F1330A26D6C5AA214E001075BA2903803F180A3D901FBC7FCA214FF6D5AA214
+7CA31438A227257EA32C&gt;I&lt;B53A1FFFE03FFEA3260FF8009038000FF86C48017EEB03E0
+18C00003023EEB0180A26C6C013FEB0300A36C6CEC8006156FA2017E9038EFC00C15C717
+1CD93F01EBE01815830281EBF038D91F831430150102C3EBF87090260FC6001360A2D907
+E66D5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A7FA20100141E4A130E026013
+0C37257EA33C&gt;I&lt;B538807FFFA33A03FE003FF00001EC1F80000092C7FC017E131C6D13
+186D6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114CF9038
+01C7E090380383F090380703F8EB0601496C7E011C137E49137F01787F496D7E486C8000
+0FEC3FF0D8FFFE90B51280A329247FA32C&gt;I&lt;B538803FFEA33A0FF8000FF06C48EB07C0
+0003EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F1360A2
+6D6C5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460A25C
+A2EA7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C&gt;I&lt;00
+3FB512FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F80006013
+7F150014FE495AA2C6485A495AA2495A495A495AA290387F000613FEA2485A485A000714
+0E5B4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F247EA325&gt;I&lt;D801
+FC14202607FF8013704801F013E0489038FE03C0D83C07B51280D87000140048EB1FFE00
+40EB03F8240879B633&gt;126 D E
 %EndDVIPSBitmapFont
 %DVIPSBitmapFont: Fl ecbx1000 10 45
 /Fl 45 123 df&lt;913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF
@@ -1369,8 +1350,155 @@ A292C8FCA25C141E003F133E387F803C38FFC07C147814F8EBC1F0EBC3E06C485A387D1F
 017FEB03C0EBFFF014E04813C05AEC80074813005A49EB0F80485A003F141F4848133F90
 38F001FFB7FCA322257DA42A&gt;I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm ecbx1440 14.4 45
-/Fm 45 123 df&lt;EE7FFC031FB57E4AB612E0020715F8023F9038C00FFC913AFFFC0001FE
+%DVIPSBitmapFont: Fm ecbx1200 12 44
+/Fm 44 122 df&lt;ED0FFF4AB512C0020F14F0027F80903A01FFF803FC499038C000FE010F
+EB00034948497E49485B5C495A4C138001FF6E13005CA3705AEE01F893C8FCA74BB51280
+B9FCA5C69038E00003B3B0007FD9FFC1B6FCA538467EC53E&gt;28 D&lt;EA07C0EA1FF0487E48
+7E487E7FA31480A37E7EEA1FF7EA07C7EA0007130FA21400A25B131E133EA25B13FC5B48
+5A485A1207485A485A90C7FC120C112278C41F&gt;39 D&lt;B612F8A91D097F9A25&gt;45
+D&lt;EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F0F788E1F&gt;I&lt;
+EC3FF849B5FC010F14E0013F14F890397FF01FFC9039FFC007FE4890380001FF48486D13
+80000716C049147F000F16E049143F001F16F0A2003F16F8A249141F007F16FCA600FF16
+FEB3A3007F16FCA56C6CEC3FF8A3001F16F0A2000F16E06D147F000716C06D14FF6C6C49
+13806C6D4813006C6D485A90397FF01FFC6DB55A010F14E0010314809026003FF8C7FC2F
+427CC038&gt;48 D&lt;EC03C01407141F147FEB03FF133FB6FCA413C3EA0003B3B3ADB712FCA5
+264177C038&gt;I&lt;ECFFE0010F13FE013F6D7E90B612E0000315F82607FC0313FE3A0FE000
+7FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13F07F17F881A46C5A6C
+5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E4B5A4B5A4A90C7FC4A
+5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014F0495A495A49C8FC01
+7C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038&gt;I&lt;ECFFF0010713FF
+011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80FF86D138013FE001F16C0
+7FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F1380902607FFFEC7FC15
+F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F13F0A217F8A3EA0FC0EA
+3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F80491380D81FF0491300D80FFE
+EBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427BC038&gt;I&lt;163FA25E5E5D
+5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14F8EB
+01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E5A12
+FCB91280A5C8000F90C7FCAC027FB61280A531417DC038&gt;I&lt;EC7FF0903807FFFE011F6D
+7E017F14E09039FFE03FF0489038800FF848496C7E48488048486D7E001F80003F1680A2
+484815C08117E0A212FF17F0A617F8A45D127FA3003F5CA26C7E5D6C6C5B12076C6C131E
+6CEBC07C6CEBFFF8013F5B010F01C013F00101130090C8FCA217E05DA2EA03C0D80FF015
+C0487E486C491380A217004B5A150F5E49495A6C48495A01C0EBFFE0260FF0035B6CB65A
+6C4AC7FC6C14F86C6C13E0D907FEC8FC2D427BC038&gt;57 D&lt;903807FFC0013F13FC48B612
+804815E0260FF80013F0D81FC0EB3FF848C7EA1FFC4815FE01C0130F486C14FF7FA66C48
+5B6C4814FE000FC7FCC8EA3FFCED7FF8EDFFF04A13E04A13801600EC07FC4A5A5D4A5A5D
+4A5A92C7FCA2147E147CA31478AA91C8FCA814F8EB03FE497E497FA2497FA56D5BA26D90
+C7FC6D5AEB00F828467AC535&gt;63 D&lt;B9FC18F018FE727E19E026003FFCC700077F05017F
+716C7E727E727EA2721380A37213C0A74E1380A24E1300A24E5A4E5A4E5A4D5B05075B94
+B5128091B700FCC7FC18F018FF19E002FCC7000113F8716C7EF01FFE727E7213801AC072
+13E0A27213F0A31AF8A71AF0A2601AE0604E13C0604E138095B5120005075BBA12F86119
+C04EC7FC18E045447CC350&gt;66 D&lt;DCFFF01470031F01FF14F04AB6EAE0010207EDF80302
+3FEDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF4901C0804990C87E49488149
+48814948167F4849163F4849161F5A4A160F485B19074890CAFC19035A5BA2007F1801A3
+4994C7FC12FFAE127F7F1AF0A2123FA27F6C18011AE06C7F19036C6D17C06E16077E6C6D
+EE0F806C6DEE1F006D6C5E6D6C167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE0
+6D903AFFF001FF80023F90B6C7FC020715FC020115F0DA001F1480030001F8C8FC44467A
+C451&gt;I&lt;B9FC18F018FE727E19E026003FFEC7001F13F805017F9438003FFF060F7F727F
+727F727F84737E737EA2737EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B0061
+62193F624F5A19FF624E5B06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18
+F095C9FC4B447CC356&gt;I&lt;BA1280A419C026003FFEC7121F1701EF007F183F181F180F18
+0719E01803A31801A3EE01E0F000F0A419001603A31607160F167F91B6FCA59138FE007F
+160F16071603A31601A693C9FCAFB712F0A53C447CC346&gt;70 D&lt;DCFFF01470031F01FF14
+F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF
+4901C0804990C87E4948814948814948167F4849163F4849161F5A4A160F485B19074890
+CAFC19035A5BA2007F1801A34994C8FC12FFAD057FB612F0127F7FA3003FDC0001EBF000
+A27F7EA26C7FA26C7F807E6C7F6C7F6D7E6D6C5D6D6C7E6D6D5C6D01F05C010101FE143F
+6D903AFFF001FF9F023F90B6120F0207EDFC030201EDF000DA001F02C01330030001FCC9
+FC4C467AC458&gt;I&lt;B7D88003B612FEA526003FFEC9EBF800B3A791B9FCA54AC9FCB3AAB7
+D88003B612FEA54F447CC358&gt;I&lt;B712E0A5D8001F90C7FCB3B3B3A4B712E0A523447DC3
+2A&gt;I&lt;B500FE067FB512806E95B6FCA26F5EA2D8003F50C7FC013D6DEE03DFA2013C6DEE
+079FA26E6CEE0F1FA26E6C161EA26E6C163CA36E6C1678A26E6C16F0A26E6DEC01E0A26E
+6DEC03C0A36E6DEC0780A26F6CEC0F00A26F6C141EA26F6C5CA36F6C5CA26F6C5CA26F6D
+485AA26F6D485AA26F6D485AA3706C48C7FCA293383FF81EA2706C5AA2706C5AA3706C5A
+A2705BA2705BA2705BA2B6057FB6128071C7FCA2173E171C61447CC36A&gt;77
+D&lt;DAFFE0131C010701FE133C013F9038FF807C90B6EAE0FC4815F9489038801FFF3907FC
+00014848EB007F4848143F4848140F491407007F15035B1601160012FF177CA27FA26D15
+3C7F7F6D92C7FC6C7EEBFFE014FE6CEBFFF015FF6C15E016FC6C816C6F7E6C826C826C6C
+81011F810107811300020F80140003077FED007F82040F1380828212F082A282A27EA218
+007EA26C5D6C5E6D14036D5D6D140701F84A5A01FFEC3FF002F8EBFFE0486CB65AD8FC1F
+92C7FCD8F80714FC48C614F0480107138031467AC43E&gt;83 D&lt;003FBA12E0A59026FE000F
+EB8003D87FE09338003FF049171F90C71607A2007E1803007C1801A300781800A400F819
+F8481978A5C81700B3B3A20107B8FCA545437CC24E&gt;I&lt;B76C010FB512F8A526003FFEC9
+3803E000B3B3A9011F17076280190F6D606F151F6D95C7FC6D6D5D197E6D6D5D6D6D1403
+DA7FFC4A5A6EB4EC3FF0020F9039F003FFE06E90B61280020193C8FC6E6C14FC030F14E0
+9226007FFEC9FC4D457CC356&gt;I&lt;B600FE017FB691B512FEA526007FFCC8D83FFEC9EA7C
+006E82013F701778807415F86D705F6F7014016D705FA26F7014036D64814E6D14076D64
+6F70140F6D041E94C7FCA26F023E6D5C6DDC3C7F151E81027F037C6D5CF0783F6F70147C
+023F4B6C1578A26F01016F13F86E4B6C5D16806E02036F485A4E7E04C0EEE0036E4A486C
+5DA2DCE00FEDF0076E4B6C5D16F06E4A6F48C8FC051E7F04F8705A6E4A027F131EA2DCFC
+7CEDFE3E037F0178023F133C04FE16FF033F01F85E4D8004FF17F86F496E5BA36F496E5B
+A26F604D80A26F90C86C5BA36F486F90C9FCA26F48167EA30478163C6F457EC374&gt;87
+D&lt;903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7E
+A26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC0100
+0313E0481380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEB
+FFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36&gt;97
+D&lt;EB7FC0B5FCA512037EB1ED0FF892B57E02C314E002CF14F89139DFC03FFC9139FF000F
+FE02FCEB03FF4A6D13804A15C04A6D13E05CEF7FF0A218F8173FA318FCAC18F8A2177F18
+F0A3EFFFE06E15C06E5B6E491380027C491300496C495A903AFC1FC07FFC496CB512F0D9
+F00314C049C691C7FCC8EA1FF036467DC43E&gt;I&lt;EC3FFC49B512C0010F14F0013F14FC90
+397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A6F1300007F6E5AED
+00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F16806D140F6C6DEB1F00
+6C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038003FF82A2F7CAD32
+&gt;I&lt;EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F013F14CF9039FFF8
+07FF48EBC00148903880007F4890C7123F4848141F49140F121F485AA3127F5BA212FFAC
+127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C00314FC6C9038F01F
+EF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E&gt;I&lt;EC3FF80103B57E
+010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48486D1380485A001F
+ED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FCA5127FA27FA2123F
+17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090397FFE01FE
+011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33&gt;I&lt;DAFFE0137E010F9039FE
+03FF80013FEBFF8F90B812C048D9C07F133F489038001FF84848EB0FFC4848903907FE1F
+80001F9238FF0F00496D90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C495A6C6C49
+5A6C9038C07FF04890B55A1680D8078F49C8FC018013E0000F90CAFCA47F7F7F90B612C0
+16FC6CEDFF8017E06C826C16FC7E000382000F82D81FF0C77ED83FC01407484802011380
+8248C9FC177FA46D15FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B07FFC001FF
+F0000190B612C06C6C92C7FC010F14F8D9007F90C8FC32427DAC38&gt;103
+D&lt;EB7FC0B5FCA512037EB1ED07FE92383FFF8092B512E002C114F89139C7F03FFC9138CF
+801F9139DF000FFE14DE14FC4A6D7E5CA25CA35CB3A7B60083B512FEA537457CC43E&gt;I&lt;
+137C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0
+EA7FFFA512037EB3AFB6FCA518467CC520&gt;I&lt;EB7FC0B5FCA512037EB293387FFFE0A593
+380FE0004C5A4CC7FC167E5EED03F8ED07E04B5A4B5A037FC8FC15FEECC1FCECC3FE14C7
+ECDFFF91B57E82A202F97F02E17F02C07FEC807F6F7E826F7E816F7F836F7F816F7F8370
+7E163FB60003B512F8A535457DC43B&gt;107 D&lt;EB7FC0B5FCA512037EB3B3B3A3B61280A5
+19457CC420&gt;I&lt;90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002
+816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C
+019E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5
+572D7CAC5E&gt;I&lt;90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F
+801F000390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7C
+AC3E&gt;I&lt;EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F48496C7F48
+48C7EA3FE000078248486E7E49140F001F82A2003F82491407007F82A400FF1780AA007F
+1700A46C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF8
+0F90C7FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38&gt;I&lt;90397FC00FF8B5
+90B57E02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A
+15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B
+6E4913806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9
+FCADB67EA536407DAC3E&gt;I&lt;90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F
+1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5
+272D7DAC2E&gt;114 D&lt;90391FFC038090B51287000314FF120F381FF003383FC00049133F
+48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14
+FC6C800003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27E
+A26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007
+FEC7FC232F7CAD2C&gt;I&lt;EB01E0A51303A41307A2130FA2131FA2133F137F13FF1203000F
+90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C0137F150790393FF80F809039
+1FFC1F006DB5FC6D13FC01015B9038003FE023407EBE2C&gt;I&lt;D97FC049B4FCB50103B5FC
+A50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F713FE9138F807E76DB512C7
+010F1407010313FE9026007FF0EBFC00372E7CAC3E&gt;I&lt;B6903803FFFCA5000101E09038
+003E006C163C80017F5D8017F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F
+6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF
+6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B&gt;I&lt;B5D8FE1FB539801FFFF0
+A500019027C0003FE0C7EA7C007114786E17F86C6F6C5C6E1601017F6E6C5CA26E011F14
+03013F6F5C6E013F1407011F6F5CA26E0179140F010F048090C7FC6E01F95C6D02F0EBC0
+1E15806D902681E07F5B18E003C3157C6D9139C03FF07815E76DDA801F5B18F803FF14F9
+6E9039000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FCA24B7F02075DA26E48147C
+4B143C4C2C7EAB51&gt;I&lt;B6903803FFFCA5000101E09038003E006C163C80017F5D8017F8
+013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E
+6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5A
+A26E5AA21578A215F85D14015D001F1303D83F805B387FC007D8FFE05B140F92C9FC5C14
+3E495A387FC1F8EB07F06CB45A6C5B000790CAFCEA01FC36407EAB3B&gt;121
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fn ecbx1440 14.4 46
+/Fn 46 123 df&lt;EE7FFC031FB57E4AB612E0020715F8023F9038C00FFC913AFFFC0001FE
 4901F0EB007F010701C0EB03FF4949497F4990C75A5B5C495A4D7F01FF6F5B5CA27190C7
 FC715AEF00F895C8FCAA0407B512C0BAFCA5C601F8C7120F83B3B3A6B6D8F807B612C0A5
 42547DD349&gt;28 D&lt;ED03FCED1FFF037F13C04AB57E4A1307913907FC01F0DA0FF87F9138
@@ -1461,71 +1589,74 @@ D&lt;93381FFF800303B512FC033FECFFC092B712F00207D9F80113FE021F903A80001FFF80
 4890CB6C13E0A5B51AF0AF6C1BE06E5FA46C1BC0A26E5F6C1B80A36C6D4D1300A26C6D4D
 5AA26C626C6D4C5B6E5E6C626D6C4C5B6E5E6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A
 01016D4A13F86D01FE02075B91263FFFC0013F13C06ED9F801B55A020790B648C8FC0201
-16F8DA003F15C003074AC9FCDB001F1380545479D263&gt;79 D&lt;DA0FFE141C91B500F0133C
-010702FC137C011F02FF13FC017F15C19026FFF00113E148903980001FFB4890C7EA07FF
-D807FC14014848804848153F171F4848150FA2007F1607491503A2170112FFA217007FA2
-6D167CA27F7F6D93C7FC6C7E14C014F8ECFF806C14F8EDFFC06C15FC6CEDFF8017F06C16
-FC6C826C707E6C836D82011F8201078213016D6C81020781EC007F030380ED003F040314
-801600173F837113C0838312F883A3837EA319807EA26C5E19007F6D4B5A7F6D4B5A01FC
-4B5A6D151FD9FFC04A5AD97FF8ECFFE028FE1FFF80075B010790B6C7FCD8FC0115FC486C
-6C14F048010F14C0489026007FFCC8FC3A5479D249&gt;83 D&lt;003FBB12FCA59126C0007FEB
-000301FCC7ED003FD87FF0F00FFE49180749180349180190C81600A2007E1A7EA3007C1A
-3EA500FC1A3F481A1FA6C91700B3B3AC49B912C0A550517BD05B&gt;I&lt;EC3FFE0107B512E0
-011F14FC017F14FF2701FFC00F13C02703FE00037F486C01007F6E6D7E486D80707EA270
-7EA3707F6C5B6C90C7FC6C5AC9FCA60307B5FC0203B6FC147F0103B7FC011FEBF00F017F
-1300EBFFFC000313F04813C0485B4890C7FC5A5B485AF081F012FF5BA35EA26D5C127F6D
-5C003F03F713C36DD901E314E06CD9C00714FF00079026F01F8114C06C90B5C61480C602
-FC6D1300011F01F0EB3FFC01010180EB07F03C387CB642&gt;97 D&lt;EB3FF8B5FCA51203C6FC
-B3A4EE7FF00307B5FC031F14C0037F14F0913AF9FF007FFCDAFFF8EB1FFF03E001077F03
-806D7F92C76C7F4A6E7F5C4A6F7E85183F85A38584A31A80AD1A00A36061A261187F616E
-15FF616E4A5B6E4A5B6F495BDACFE04990C7FCDA87F0EB3FFE913A01FE01FFF8496CB65A
-49013F14C049010749C8FC90C813E041547DD249&gt;I&lt;913803FFE0023F13FE91B67E0103
-15E0010F9038003FF8D93FFCEB07FC4948497E4948131F4849497E485B485BA24890C7FC
-5A5B003F6F5A705A705A007F92C8FC5BA312FFAD127F7FA3123F7F6CEE0F80A26C6D141F
-18006C6D5C6C6D143E6C6D147E6C6D5C6D6C495A6DB4EB07F0010F9038C01FE06D90B512
-8001014AC7FCD9003F13F80203138031387CB63A&gt;I&lt;943803FF80040FB5FCA5EE003F17
-0FB3A4913803FF80023F13F849B512FE0107ECFF8F011F9038C03FEF90273FFE0007B5FC
-D97FF8130149487F484980484980484980488291C8FC5A5B123FA2127F5BA312FFAD127F
-A37F123FA3121F7F6C5E6C6D5C5F6C6D91B5FC6C6D5B6C6D4914E0D97FFCD90FEFEBFF80
-D91FFFEB7F8F010790B5120F010114FC6D6C13E00207010049C7FC41547CD249&gt;I&lt;9138
-07FF80027F13F849B512FE01076E7E011F010313E0903A3FFC007FF0D97FF06D7E49486D
-7E4849130F48496D7E48824890C77E1880485A82003F17C0A3485A18E082A212FFA290B8
-FCA401FCCAFCA6127FA37F123FA2EF03E06C7E17076C17C06C6D140F18806C6D141F6C6D
-EC3F006C6D147ED97FFC495AD91FFFEB07F86D9038E03FF0010390B512C001005D023F01
-FCC7FC020113E033387CB63C&gt;I&lt;ED1FF8913803FFFE020FEBFF80023F14C09139FFF83F
-E001039038E0FFF049138049010113F85BEB3FFEA2EB7FFCA26F13F0495AEE7FE0EE1F80
-93C7FCAEB712C0A5C601F8C8FCB3B3A7B612FEA52D547CD328&gt;I&lt;DA1FFE14FE49B539E0
-07FF80010FDAFC1F13C0013FDAFF7F13E090267FF807EBFF072701FFE001EBF07F48497E
-484990387FF83F91C7003F14C048EEFC1F489338FE070049021F90C7FCA2003F82A9001F
-5EA26D143F6C5E6C5E6E137F6C6D495A6C6D485B6CD9F80713804890B6C8FCD803EF14FC
-01C114E02707C01FFEC9FC49CBFCA2487EA37FA27F13FC90B612FE6CEDFFF017FCEFFF80
-6C8318F06C836C837F48B87E1207D80FFCC700037F4848EC003F4848150F48486F138083
-485A83A56D5D007F18006D5D003F5F6C6C4B5A01FE153FD807FFED7FF06C01C049485AC6
-01FC011F1380013FB648C7FC010F15F8010115C0D9000F01F8C8FC3B4F7CB542&gt;I&lt;EB3F
-F8B5FCA51203C6FCB3A4EE1FFC93B57E030314E0030F14F892391FC07FFC92397E003FFE
-03F86D7EECF9F04B6D7FECFBC0ECFF8092C76C7FA25CA25CA45CB3ACB6D8F807B612C0A5
-42537CD249&gt;I&lt;133FEBFFC0487F487FA2487FA66C5BA26C5B6C5B013FC7FC90C8FCAEEB
-1FF8B5FCA512017EB3B3A6B612F0A51C547CD324&gt;I&lt;EB3FF8B5FCA51203C6FCB3A50407
-B512F0A59339007FF000EF3FC04D5A4DC7FCEE01FC4C5AEE0FF04C5A4C5A4CC8FC16FEED
-03FC4B5A4B5A4B5A4B7E4B7EECF9FF02FB7F91B57EA28203BF7F031F7F14FE4A6C7FDAF0
-077F6F7FA26F7F6F7F167F83707F707FA2707F707F707FA2707F707F84B6D8F00F14FEA5
-3F537DD245&gt;107 D&lt;EB3FF8B5FCA51203C6FCB3B3B3B1B612F8A51D537CD224&gt;I&lt;D93FF0
-D91FF84AB47EB591B56C010F13F8030302E0013F13FE030F6E90B6FCDB3F809027F803F8
-0F7F922A7E007FFC07E0077F000302F890283FFE0F80037FC6D9F1F0011F49487EDAF3E0
-DAFF3E814B153CDAF7805D92C76C496D7F14FF4A5EA24A5EA34A5EB3ADB6D8F80FB66CB6
-12F8A565367BB56E&gt;I&lt;D93FF0EB1FFCB591B57E030314E0030F14F892391FC07FFC9239
-7E003FFE000302F86D7EC6EBF1F04B6D7FECF3C0ECF78092C76C7F14FF5CA25CA45CB3AC
-B6D8F807B612C0A542367CB549&gt;I&lt;913801FFC0023F13FE91B67E010315E0010F018013
-F8903A3FFC001FFED97FF0EB07FF49486D7F48496D7F48496D7F91C8127F488348834915
-3F001F83A2003F8349151FA2007F83A400FF1880AC007F1800A3003F5F6D153FA2001F5F
-A26C6C4B5AA26C6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE6DB46CB4
-5A010790B512F0010115C0D9003F49C8FC020313E039387CB642&gt;I&lt;D93FF8EB7FF0B501
-07B5FC031F14C0037F14F09126F9FF0013FCDAFFF8EB3FFF000302E0010F7FC602806D7F
-92C76C7F4A824A804A6E7F85187F85A2183F85A4721380AD4E1300A44E5AA26118FF616E
-5C616E4A5B6E4A5B6F495B03E04990C7FC6FEB7FFE913AF9FE01FFF802F8B65A033F14C0
-030749C8FC030013E093CAFCB1B612F8A5414D7DB549&gt;I&lt;90393FF001FCB590380FFF80
-4B13E0037F13F09238FE1FF89138F1F83F00019138F07FFC6CEBF3E015C0ECF780A2ECFF
-00EE3FF84AEB1FF0EE0FE093C7FC5CA45CB3ABB612FEA52E367DB535&gt;114
+16F8DA003F15C003074AC9FCDB001F1380545479D263&gt;79 D&lt;B912FCF0FFE019FE737E1A
+E0D8000F01E0C7003F7F060313FC06007F737E7313807313C07313E0851BF0A21BF885A2
+1BFCA91BF8A3611BF0A21BE04F13C0614F13804F13004F5A060713F8063F5B92B812C097
+C7FC19F8198003E0CBFCB3AEB712FEA54E527CD15A&gt;I&lt;DA0FFE141C91B500F0133C0107
+02FC137C011F02FF13FC017F15C19026FFF00113E148903980001FFB4890C7EA07FFD807
+FC14014848804848153F171F4848150FA2007F1607491503A2170112FFA217007FA26D16
+7CA27F7F6D93C7FC6C7E14C014F8ECFF806C14F8EDFFC06C15FC6CEDFF8017F06C16FC6C
+826C707E6C836D82011F8201078213016D6C81020781EC007F030380ED003F0403148016
+00173F837113C0838312F883A3837EA319807EA26C5E19007F6D4B5A7F6D4B5A01FC4B5A
+6D151FD9FFC04A5AD97FF8ECFFE028FE1FFF80075B010790B6C7FCD8FC0115FC486C6C14
+F048010F14C0489026007FFCC8FC3A5479D249&gt;83 D&lt;003FBB12FCA59126C0007FEB0003
+01FCC7ED003FD87FF0F00FFE49180749180349180190C81600A2007E1A7EA3007C1A3EA5
+00FC1A3F481A1FA6C91700B3B3AC49B912C0A550517BD05B&gt;I&lt;EC3FFE0107B512E0011F
+14FC017F14FF2701FFC00F13C02703FE00037F486C01007F6E6D7E486D80707EA2707EA3
+707F6C5B6C90C7FC6C5AC9FCA60307B5FC0203B6FC147F0103B7FC011FEBF00F017F1300
+EBFFFC000313F04813C0485B4890C7FC5A5B485AF081F012FF5BA35EA26D5C127F6D5C00
+3F03F713C36DD901E314E06CD9C00714FF00079026F01F8114C06C90B5C61480C602FC6D
+1300011F01F0EB3FFC01010180EB07F03C387CB642&gt;97 D&lt;EB3FF8B5FCA51203C6FCB3A4
+EE7FF00307B5FC031F14C0037F14F0913AF9FF007FFCDAFFF8EB1FFF03E001077F03806D
+7F92C76C7F4A6E7F5C4A6F7E85183F85A38584A31A80AD1A00A36061A261187F616E15FF
+616E4A5B6E4A5B6F495BDACFE04990C7FCDA87F0EB3FFE913A01FE01FFF8496CB65A4901
+3F14C049010749C8FC90C813E041547DD249&gt;I&lt;913803FFE0023F13FE91B67E010315E0
+010F9038003FF8D93FFCEB07FC4948497E4948131F4849497E485B485BA24890C7FC5A5B
+003F6F5A705A705A007F92C8FC5BA312FFAD127F7FA3123F7F6CEE0F80A26C6D141F1800
+6C6D5C6C6D143E6C6D147E6C6D5C6D6C495A6DB4EB07F0010F9038C01FE06D90B5128001
+014AC7FCD9003F13F80203138031387CB63A&gt;I&lt;943803FF80040FB5FCA5EE003F170FB3
+A4913803FF80023F13F849B512FE0107ECFF8F011F9038C03FEF90273FFE0007B5FCD97F
+F8130149487F484980484980484980488291C8FC5A5B123FA2127F5BA312FFAD127FA37F
+123FA3121F7F6C5E6C6D5C5F6C6D91B5FC6C6D5B6C6D4914E0D97FFCD90FEFEBFF80D91F
+FFEB7F8F010790B5120F010114FC6D6C13E00207010049C7FC41547CD249&gt;I&lt;913807FF
+80027F13F849B512FE01076E7E011F010313E0903A3FFC007FF0D97FF06D7E49486D7E48
+49130F48496D7E48824890C77E1880485A82003F17C0A3485A18E082A212FFA290B8FCA4
+01FCCAFCA6127FA37F123FA2EF03E06C7E17076C17C06C6D140F18806C6D141F6C6DEC3F
+006C6D147ED97FFC495AD91FFFEB07F86D9038E03FF0010390B512C001005D023F01FCC7
+FC020113E033387CB63C&gt;I&lt;ED1FF8913803FFFE020FEBFF80023F14C09139FFF83FE001
+039038E0FFF049138049010113F85BEB3FFEA2EB7FFCA26F13F0495AEE7FE0EE1F8093C7
+FCAEB712C0A5C601F8C8FCB3B3A7B612FEA52D547CD328&gt;I&lt;DA1FFE14FE49B539E007FF
+80010FDAFC1F13C0013FDAFF7F13E090267FF807EBFF072701FFE001EBF07F48497E4849
+90387FF83F91C7003F14C048EEFC1F489338FE070049021F90C7FCA2003F82A9001F5EA2
+6D143F6C5E6C5E6E137F6C6D495A6C6D485B6CD9F80713804890B6C8FCD803EF14FC01C1
+14E02707C01FFEC9FC49CBFCA2487EA37FA27F13FC90B612FE6CEDFFF017FCEFFF806C83
+18F06C836C837F48B87E1207D80FFCC700037F4848EC003F4848150F48486F138083485A
+83A56D5D007F18006D5D003F5F6C6C4B5A01FE153FD807FFED7FF06C01C049485AC601FC
+011F1380013FB648C7FC010F15F8010115C0D9000F01F8C8FC3B4F7CB542&gt;I&lt;EB3FF8B5
+FCA51203C6FCB3A4EE1FFC93B57E030314E0030F14F892391FC07FFC92397E003FFE03F8
+6D7EECF9F04B6D7FECFBC0ECFF8092C76C7FA25CA25CA45CB3ACB6D8F807B612C0A54253
+7CD249&gt;I&lt;133FEBFFC0487F487FA2487FA66C5BA26C5B6C5B013FC7FC90C8FCAEEB1FF8
+B5FCA512017EB3B3A6B612F0A51C547CD324&gt;I&lt;EB3FF8B5FCA51203C6FCB3A50407B512
+F0A59339007FF000EF3FC04D5A4DC7FCEE01FC4C5AEE0FF04C5A4C5A4CC8FC16FEED03FC
+4B5A4B5A4B5A4B7E4B7EECF9FF02FB7F91B57EA28203BF7F031F7F14FE4A6C7FDAF0077F
+6F7FA26F7F6F7F167F83707F707FA2707F707F707FA2707F707F84B6D8F00F14FEA53F53
+7DD245&gt;107 D&lt;EB3FF8B5FCA51203C6FCB3B3B3B1B612F8A51D537CD224&gt;I&lt;D93FF0D91F
+F84AB47EB591B56C010F13F8030302E0013F13FE030F6E90B6FCDB3F809027F803F80F7F
+922A7E007FFC07E0077F000302F890283FFE0F80037FC6D9F1F0011F49487EDAF3E0DAFF
+3E814B153CDAF7805D92C76C496D7F14FF4A5EA24A5EA34A5EB3ADB6D8F80FB66CB612F8
+A565367BB56E&gt;I&lt;D93FF0EB1FFCB591B57E030314E0030F14F892391FC07FFC92397E00
+3FFE000302F86D7EC6EBF1F04B6D7FECF3C0ECF78092C76C7F14FF5CA25CA45CB3ACB6D8
+F807B612C0A542367CB549&gt;I&lt;913801FFC0023F13FE91B67E010315E0010F018013F890
+3A3FFC001FFED97FF0EB07FF49486D7F48496D7F48496D7F91C8127F4883488349153F00
+1F83A2003F8349151FA2007F83A400FF1880AC007F1800A3003F5F6D153FA2001F5FA26C
+6C4B5AA26C6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE6DB46CB45A01
+0790B512F0010115C0D9003F49C8FC020313E039387CB642&gt;I&lt;D93FF8EB7FF0B50107B5
+FC031F14C0037F14F09126F9FF0013FCDAFFF8EB3FFF000302E0010F7FC602806D7F92C7
+6C7F4A824A804A6E7F85187F85A2183F85A4721380AD4E1300A44E5AA26118FF616E5C61
+6E4A5B6E4A5B6F495B03E04990C7FC6FEB7FFE913AF9FE01FFF802F8B65A033F14C00307
+49C8FC030013E093CAFCB1B612F8A5414D7DB549&gt;I&lt;90393FF001FCB590380FFF804B13
+E0037F13F09238FE1FF89138F1F83F00019138F07FFC6CEBF3E015C0ECF780A2ECFF00EE
+3FF84AEB1FF0EE0FE093C7FC5CA45CB3ABB612FEA52E367DB535&gt;114
 D&lt;903903FFC00E011FEBFC1E90B6127E000315FE3907FE003FD80FF0130F484813034848
 1301491300127F90C8127EA248153EA27FA27F01F091C7FC13FCEBFF806C13FEECFFF06C
 14FE6F7E6C15E06C816C15FC6C81C681133F010F15801301D9000F14C0EC003F030713E0
@@ -1554,8 +1685,8 @@ FEA4DA000113FC01F815F801E05B494913F04915E090C75A4B13C0007E4A1380A24B1300
 49153F4990C7123E5C13FF485B4849147EA2484914FE485B4A13014815034849130791C7
 EA1FFC48EC01FFB8FCA430357CB43A&gt;I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn ecrm1200 12 10
-/Fn 10 118 df&lt;14FF010713E090381F81F890383E007C01FC133F4848EB1F8049130F48
+%DVIPSBitmapFont: Fo ecrm1200 12 9
+/Fo 9 118 df&lt;14FF010713E090381F81F890383E007C01FC133F4848EB1F8049130F48
 48EB07C04848EB03E0A2000F15F0491301001F15F8A2003F15FCA390C8FC4815FEA54815
 FFB3A46C15FEA56D1301003F15FCA3001F15F8A26C6CEB03F0A36C6CEB07E0000315C06D
 130F6C6CEB1F806C6CEB3F00013E137C90381F81F8903807FFE0010090C7FC28447CC131
@@ -1563,40 +1694,37 @@ FFB3A46C15FEA56D1301003F15FCA3001F15F8A26C6CEB03F0A36C6CEB07E0000315C06D
 EC3FC0ED1FE04815F00030140F007015F800601407126CB415FC7F7F1503A46C4813076C
 C7FCC8FC16F8A2150F16F0151F16E0A2ED3FC0ED7F8016005D5D4A5A4A5A4A5A5D4A5A4A
 5A4AC7FC147C5C5C495A495A495A49C7120C131E5B013814185B5B485A4848143848C812
-30000E1570001FB612F0A25A5AB712E0A326427BC131&gt;50 D&lt;ED0380A21507150FA2151F
-153FA2157F15FFA25CEC03BF153F14071406140C141C141814301470146014C013011480
-EB03005B13065B131C13185B1370136013E0485A5B120390C7FC1206120E120C5A123812
-305A12E0B812C0A3C8383F8000ADEDFFE0027FEBFFC0A32A437DC231&gt;52
-D&lt;14FF010713E0011F13F890387F00FE01FC133FD801F0EB1F804848EB0FC049EB07E000
-07EC03F048481301A290C713F8481400A47FA26D130116F07F6C6CEB03E013FC6C6CEB07
-C09039FF800F806C9038C01F006CEBF03EECF87839007FFEF090383FFFC07F01077F6D13
-F8497F90381E7FFFD97C1F1380496C13C02601E00313E048486C13F000079038007FF848
-48EB3FFC48C7120F003EEC07FE150148140016FF167F48153FA2161FA56C151E007C153E
-A2007E153C003E157C6C15F86DEB01F06C6CEB03E06C6CEB07C0D803F8EB1F80C6B4EBFF
-0090383FFFFC010F13F00101138028447CC131&gt;56 D&lt;16C04B7EA34B7EA34B7EA34B7EA3
-ED19FEA3ED30FFA203707FED607FA203E07FEDC03FA2020180ED801FA2DA03007F160FA2
-0206801607A24A6D7EA34A6D7EA34A6D7EA20270810260147FA202E08191B7FCA2498202
-80C7121FA249C87F170FA20106821707A2496F7EA3496F7EA3496F7EA201788313F8486C
-83D80FFF03037FB500E0027FEBFFC0A342477DC649&gt;65 D&lt;EE0F80D901FCEB7FE0903A0F
-FF81F0F090393F07E3819039FC01FF033A01F800FE014848017E13E00007027FC7FC497F
-000F8149131F001F81A9000F5D6D133F000792C7FC6D5B0003147E6C6C5B6D485A3903BF
-07E090380FFF80260701FCC8FC90CAFCA25AA37F6C7E7F90B512F86C14FF16E06C15F86C
-6C8048B67E3A07C0000FFF48481300003FC8EA3F80003E151F48ED0FC0A2481507A56C15
-0F007C1680007E151F003E16006C153E6C6C5CD807E0495AD801F8EB07E0D8007FEB3F80
-90261FFFFEC7FC010113E02C427DAC31&gt;103 D&lt;EA01FC12FFA3120712031201B3EC01FE
-913807FFC091381E07F091383801F802707FECE000D9FDC07F5C01FF147F91C7FCA25BA3
-5BB3A8486CECFF80B5D8F83F13FEA32F457DC436&gt;I&lt;90383FE0183901FFFC383907E01F
-78390F0003F8001E1301481300007C1478127800F81438A21518A27EA27E6C6C13006C7E
-13FC383FFFE06C13FC6C13FF6C14C06C14E0C614F0011F13F81300EC0FFC140300C0EB01
-FE1400157E7E153EA27EA36C143C6C147C15786C14F86CEB01F039F38003E039F1F00F80
-39E07FFE0038C00FF01F2E7DAC26&gt;115 D&lt;1306A5130EA4131EA3133E137EA213FE1201
-1207001FB512F0B6FCA2C648C7FCB3A4150CAA017E131C017F1318A26D133890381F8030
-ECC070903807E0E0903801FFC09038007F001E3E7EBC26&gt;I&lt;D801FC147F00FFEC3FFFA3
-00071401000380000181B3A85EA35DA212006D5B017E9038077F80017F010E13C06D011C
-13FE90380FC078903803FFF09026007F8013002F2D7DAB36&gt;I E
+30000E1570001FB612F0A25A5AB712E0A326427BC131&gt;50 D&lt;14FF010713E0011F13F890
+387F00FE01FC133FD801F0EB1F804848EB0FC049EB07E00007EC03F048481301A290C713
+F8481400A47FA26D130116F07F6C6CEB03E013FC6C6CEB07C09039FF800F806C9038C01F
+006CEBF03EECF87839007FFEF090383FFFC07F01077F6D13F8497F90381E7FFFD97C1F13
+80496C13C02601E00313E048486C13F000079038007FF84848EB3FFC48C7120F003EEC07
+FE150148140016FF167F48153FA2161FA56C151E007C153EA2007E153C003E157C6C15F8
+6DEB01F06C6CEB03E06C6CEB07C0D803F8EB1F80C6B4EBFF0090383FFFFC010F13F00101
+138028447CC131&gt;56 D&lt;16C04B7EA34B7EA34B7EA34B7EA3ED19FEA3ED30FFA203707FED
+607FA203E07FEDC03FA2020180ED801FA2DA03007F160FA20206801607A24A6D7EA34A6D
+7EA34A6D7EA20270810260147FA202E08191B7FCA249820280C7121FA249C87F170FA201
+06821707A2496F7EA3496F7EA3496F7EA201788313F8486C83D80FFF03037FB500E0027F
+EBFFC0A342477DC649&gt;65 D&lt;EE0F80D901FCEB7FE0903A0FFF81F0F090393F07E3819039
+FC01FF033A01F800FE014848017E13E00007027FC7FC497F000F8149131F001F81A9000F
+5D6D133F000792C7FC6D5B0003147E6C6C5B6D485A3903BF07E090380FFF80260701FCC8
+FC90CAFCA25AA37F6C7E7F90B512F86C14FF16E06C15F86C6C8048B67E3A07C0000FFF48
+481300003FC8EA3F80003E151F48ED0FC0A2481507A56C150F007C1680007E151F003E16
+006C153E6C6C5CD807E0495AD801F8EB07E0D8007FEB3F8090261FFFFEC7FC010113E02C
+427DAC31&gt;103 D&lt;EA01FC12FFA3120712031201B3EC01FE913807FFC091381E07F09138
+3801F802707FECE000D9FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F
+13FEA32F457DC436&gt;I&lt;90383FE0183901FFFC383907E01F78390F0003F8001E13014813
+00007C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF
+6C14C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C
+143C6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7D
+AC26&gt;115 D&lt;1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648
+C7FCB3A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FF
+C09038007F001E3E7EBC26&gt;I&lt;D801FC147F00FFEC3FFFA300071401000380000181B3A8
+5EA35DA212006D5B017E9038077F80017F010E13C06D011C13FE90380FC078903803FFF0
+9026007F8013002F2D7DAB36&gt;I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo ecrm1728 17.28 10
-/Fo 10 118 df&lt;DDFFF015C0040F01FF1401047F14E00303B600F81303030F9038E003FE
+%DVIPSBitmapFont: Fp ecrm1728 17.28 10
+/Fp 10 118 df&lt;DDFFF015C0040F01FF1401047F14E00303B600F81303030F9038E003FE
 DB3FFCC7007F1307DBFFE0EC0FC002030180913803E00F4A48C83801F01F4A48ED0078DA
 3FF0EE3C3F4A48161E4A48EE0F7F4949EE07FF4990CA7E495A4948834948835C013F197F
 4948183F495A1B1F485B1B0F4890CCFCA248481907A2485A1B03121F5BA2123F1B015BA2
@@ -1649,835 +1777,928 @@ a4
  end
 %%EndSetup
 %%Page: 1 1
-TeXDict begin 1 0 bop 1561 872 a Fo(Cells)46 b(tutorial)1569
-1307 y Fn(24th)32 b(August)h(2008)515 1665 y Fm(Con)l(ten)l(ts)515
-1847 y Fl(1)76 b(In)m(tro)s(duction)2166 b(2)639 1947
-y Fk(1.1)84 b(What's)28 b(cells?)64 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)131 b(2)639 2047 y(1.2)84 b(Ho)n(w)27
-b(could)h(it)g(impro)n(v)n(e)e(y)n(our)g(programs?)71
-b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)131
-b(2)515 2229 y Fl(2)76 b(Installation)2217 b(2)515 2412
-y(3)76 b(Our)32 b(\034rst)g(cells)f(program)1734 b(3)639
-2512 y Fk(3.1)84 b(The)28 b(program)67 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h
+TeXDict begin 1 0 bop 1561 872 a Fp(Cells)46 b(tutorial)1569
+1307 y Fo(28th)32 b(August)h(2008)515 1665 y Fn(Con)l(ten)l(ts)515
+1951 y Fm(I)112 b(Cells)2414 b(2)515 2134 y Fl(1)76 b(In)m(tro)s
+(duction)2166 b(2)639 2233 y Fk(1.1)84 b(What's)28 b(cells?)64
+b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)131 b(2)639
+2333 y(1.2)84 b(Ho)n(w)27 b(could)h(it)g(impro)n(v)n(e)e(y)n(our)g
+(programs?)71 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
+(.)h(.)131 b(2)515 2516 y Fl(2)76 b(Installation)2217
+b(3)515 2698 y(3)76 b(Our)32 b(\034rst)g(cells)f(program)1734
+b(3)639 2798 y Fk(3.1)84 b(The)28 b(program)67 b(.)41
+b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)131 b(3)639
+2898 y(3.2)84 b(The)28 b(program)d(line-b)n(y-line)i(.)42
+b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
+(.)h(.)g(.)f(.)h(.)131 b(4)515 3080 y Fl(4)76 b(The)32
+b(family)f(system)1918 b(6)515 3263 y(5)76 b(De\034ning)31
+b(an)i(observ)m(er)1826 b(8)515 3445 y(6)76 b(Lazy)34
+b(cells)2238 b(11)515 3628 y(7)76 b(Drifters)2319 b(13)515
+3811 y(8)76 b(Cyclic)32 b(dep)s(endencies)1805 b(14)515
+3993 y(9)76 b(Synapses)2270 b(15)639 4093 y Fk(9.1)84
+b(Built-in)28 b(synapses)52 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90
+b(15)639 4193 y(9.2)84 b(De\034ning)28 b(y)n(our)e(o)n(wn)73
+b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
+f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(17)515 4375
+y Fl(10)28 b(Example:)41 b(pla)m(ying)31 b(sudoku)1586
+b(18)515 4558 y(11)28 b(F)-8 b(unctions)32 b(&amp;)g(macros)f(reference)
+1401 b(24)639 4657 y Fk(11.1)42 b(Main)35 b(.)42 b(.)f(.)h(.)f(.)h(.)f
+(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(24)639 4757
+y(11.2)42 b(F)-7 b(amily)28 b(mo)r(dels)81 b(.)42 b(.)g(.)f(.)h(.)f(.)h
 (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)131 b(3)639 2611 y(3.2)84 b(The)28 b(program)d(line-b)n
-(y-line)i(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)131 b(4)515 2794 y Fl(4)76
-b(The)32 b(family)f(system)1918 b(6)515 2976 y(5)76 b(De\034ning)31
-b(an)i(observ)m(er)1826 b(8)515 3159 y(6)76 b(Lazy)34
-b(cells)2238 b(11)515 3342 y(7)76 b(Drifters)2319 b(12)515
-3524 y(8)76 b(Cyclic)32 b(dep)s(endencies)1805 b(13)515
-3707 y(9)76 b(Synapses)2270 b(15)515 3890 y(10)28 b(Example:)41
-b(pla)m(ying)31 b(sudoku)1586 b(16)515 4072 y(11)28 b(F)-8
-b(unctions)32 b(&amp;)g(macros)f(reference)1401 b(22)639
-4172 y Fk(11.1)42 b(Main)35 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(22)639 4271 y(11.2)42
-b(F)-7 b(amily)28 b(mo)r(dels)81 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h
+h(.)g(.)f(.)h(.)90 b(27)639 4857 y(11.3)42 b(Synapses)24
+b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90
+b(29)639 4956 y(11.4)42 b(Misc)53 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g
+(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
+h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(30)1926 5255 y(1)p
+eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 515 523 a Fl(12)28 b(Other)k(resources)1983
+b(30)515 809 y Fm(I)s(I)111 b(Cells-gtk)2118 b(30)515
+992 y Fl(13)28 b(In)m(tro)s(duction)2119 b(30)639 1092
+y Fk(13.1)42 b(Where's)27 b(the)h(GUI?)79 b(.)41 b(.)h(.)f(.)h(.)f(.)h
 (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)90 b(25)639 4371 y(11.3)42 b(Synapses)24 b(.)42
+f(.)h(.)90 b(30)639 1191 y(13.2)42 b(Cells-gtk)29 b(.)42
 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
 (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90
-b(27)639 4471 y(11.4)42 b(Misc)53 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(28)515 4653 y Fl(12)28
-b(Other)k(resources)1983 b(28)1926 5255 y Fk(1)p eop
-end
-%%Page: 2 2
-TeXDict begin 2 1 bop 515 523 a Fm(1)131 b(In)l(tro)t(duction)515
-721 y Fj(1.1)112 b(What's)38 b(cells?)515 875 y Fk(Cells)d(is)g(a)g
-(Common)f(Lisp)h(library)f(that)i(extends)f(the)h(language,)f(and)g(in)
-g(particular)515 974 y(its)e(ob)5 b(ject)32 b(system,)i(to)f(let)g(y)n
-(ou)f(write)g(data\035o)n(w-driv)n(en)e(programs.)50
-b(What)33 b(do)r(es)g(this)515 1074 y(mean?)j(This)26
-b(means)g(that)g(the)g(\035o)n(w)g(of)g(con)n(trol)f(of)h(the)g
-(program)e(dep)r(ends)i(no)g(more)f(on)515 1174 y(the)19
-b(sequence)g(of)g(function/metho)r(d)h(calls,)g(but)g(on)f(the)h(data.)
-33 b(Cells)19 b(lets)h(y)n(ou)e(sp)r(ecify)i(the)515
-1273 y(dep)r(endence)f(b)r(eet)n(w)n(en)g(di\033eren)n(t)h(slots)1746
-1243 y Fi(1)1801 1273 y Fk(in)g(a)f(family)g(of)g(classes.)33
-b(Once)18 b(these)i(constrain)n(ts)515 1373 y(ha)n(v)n(e)g(b)r(een)j
+b(31)515 1374 y Fl(14)28 b(Installation)2170 b(31)515
+1666 y Fn(P)l(art)44 b(I)515 1874 y Fj(Cells)515 2131
+y Fn(1)131 b(In)l(tro)t(duction)515 2329 y Fm(1.1)112
+b(What's)38 b(cells?)515 2482 y Fk(Cells)d(is)g(a)g(Common)f(Lisp)h
+(library)f(that)i(extends)f(the)h(language,)f(and)g(in)g(particular)515
+2582 y(its)e(ob)5 b(ject)32 b(system,)i(to)f(let)g(y)n(ou)f(write)g
+(data\035o)n(w-driv)n(en)e(programs.)50 b(What)33 b(do)r(es)g(this)515
+2681 y(mean?)j(This)26 b(means)g(that)g(the)g(\035o)n(w)g(of)g(con)n
+(trol)f(of)h(the)g(program)e(dep)r(ends)i(no)g(more)f(on)515
+2781 y(the)19 b(sequence)g(of)g(function/metho)r(d)h(calls,)g(but)g(on)
+f(the)h(data.)33 b(Cells)19 b(lets)h(y)n(ou)e(sp)r(ecify)i(the)515
+2881 y(dep)r(endence)f(b)r(eet)n(w)n(en)g(di\033eren)n(t)h(slots)1746
+2851 y Fi(1)1801 2881 y Fk(in)g(a)f(family)g(of)g(classes.)33
+b(Once)18 b(these)i(constrain)n(ts)515 2980 y(ha)n(v)n(e)g(b)r(een)j
 (registered,)e(the)i(cells)e(system)h(will)g(tak)n(e)f(care)g(of)h
-(them,)i(and)d(will)h(recalculate)515 1472 y(a)30 b(v)-5
+(them,)i(and)d(will)h(recalculate)515 3080 y(a)30 b(v)-5
 b(alue)31 b(when)h(some)e(data)h(on)g(whic)n(h)g(it)g(dep)r(ends)h(has)
-f(c)n(hanged.)46 b(As)31 b(a)g(consequence,)515 1572
+f(c)n(hanged.)46 b(As)31 b(a)g(consequence,)515 3180
 y(the)f(programmer)e(just)j(has)f(to)g(tell)h(the)f(system)g(the)h
 Fh(r)l(elationship)38 b Fk(b)r(et)n(w)n(een)30 b(the)h(data,)515
-1672 y(the)d(burden)f(of)h(main)n(taining)f(them)h(true)f(is)h(handled)
-f(automatically)g(b)n(y)g(cells.)515 1904 y Fj(1.2)112
+3279 y(the)d(burden)f(of)h(main)n(taining)f(them)h(true)f(is)h(handled)
+f(automatically)g(b)n(y)g(cells.)515 3512 y Fm(1.2)112
 b(Ho)m(w)37 b(could)g(it)f(impro)m(v)m(e)g(y)m(our)h(programs?)515
-2057 y Fk(Cells)21 b(ma)n(y)g(not)h(b)r(e)h(the)f(panacea)e(of)i
+3665 y Fk(Cells)21 b(ma)n(y)g(not)h(b)r(e)h(the)f(panacea)e(of)i
 (programming,)f(but)h(it)g(sure)g(helps)f(a)h(lot)g(in)g(con)n(texts)
-515 2157 y(where)29 b(k)n(eeping)g(a)g(set)h(of)f(v)-5
+515 3764 y(where)29 b(k)n(eeping)g(a)g(set)h(of)f(v)-5
 b(alues)30 b(consisten)n(t)f(is)g(crucial.)42 b(A)30
-b(particular)f(set)g(of)h(applica-)515 2257 y(tions)36
+b(particular)f(set)g(of)h(applica-)515 3864 y(tions)36
 b(where)g(this)g(is)h(imp)r(ortan)n(t)f(are)f(graphical)g(applications)
-2591 2226 y Fi(2)2627 2257 y Fk(,)j(where)e(y)n(ou)g(need)g(to)515
-2356 y(main)n(tain)22 b(consistency)h(b)r(et)n(w)n(een)g(what)g(the)g
+2591 3834 y Fi(2)2627 3864 y Fk(,)j(where)e(y)n(ou)g(need)g(to)515
+3964 y(main)n(tain)22 b(consistency)h(b)r(et)n(w)n(een)g(what)g(the)g
 (user)g(sees)f(and)h(the)h(real)e(v)-5 b(alues)23 b(held)g(b)n(y)g(the)
-515 2456 y(program)31 b(in)j(its)g(in)n(ternal)f(data)g(structures.)53
+515 4063 y(program)31 b(in)j(its)g(in)n(ternal)f(data)g(structures.)53
 b(An)34 b(example)f(is)h(the)g(state)f(of)h(the)g('Cut')515
-2555 y(men)n(u)i(en)n(try)f(in)h(an)f(editor:)53 b(it)36
+4163 y(men)n(u)i(en)n(try)f(in)h(an)f(editor:)53 b(it)36
 b(is)f(usually)h(clic)n(k)-5 b(able)35 b(when)h(the)g(user)f(has)g
-(selected)g(a)515 2655 y(piece)c(of)g(text)g(and)g(not)g(clic)n(k)-5
+(selected)g(a)515 4263 y(piece)c(of)g(text)g(and)g(not)g(clic)n(k)-5
 b(able)31 b(in)g(all)g(the)h(other)e(cases.)47 b(In)31
-b(a)g(normal)f(application,)515 2755 y(to)j(ac)n(hiev)n(e)f(this)i(b)r
+b(a)g(normal)f(application,)515 4362 y(to)j(ac)n(hiev)n(e)f(this)i(b)r
 (eha)n(vior)e(y)n(ou)h(w)n(ould)g(need)g(to)g(trac)n(k)g(all)g(the)h
-(metho)r(ds)f(and)h(all)f(the)515 2854 y(user)28 b(actions)h(that)g
+(metho)r(ds)f(and)h(all)f(the)515 4462 y(user)28 b(actions)h(that)g
 (could)h(mo)r(dify)f(the)h(region)e(of)h(text)h(curren)n(tly)e(b)r
-(eing)i(selected,)f(and)515 2954 y(add)34 b(activ)-5
+(eing)i(selected,)f(and)515 4561 y(add)34 b(activ)-5
 b(ate/disactiv)g(ate)34 b(calls)g(in)h(all)f(those)h(places)f(to)g(k)n
-(eep)g(the)i(men)n(u)e(en)n(try)g(in)h(a)515 3054 y(consisten)n(t)h
+(eep)g(the)i(men)n(u)e(en)n(try)g(in)h(a)515 4661 y(consisten)n(t)h
 (state.)66 b(With)39 b(cells,)g(y)n(ou)e(just)h(need)f(to)g(tell)h(the)
-g(system)f(that)h(the)f(state)515 3153 y(of)31 b(the)h(men)n(u)f(dep)r
+g(system)f(that)h(the)f(state)515 4761 y(of)31 b(the)h(men)n(u)f(dep)r
 (ends)h(on)f(the)h(length)f(of)h(the)f(curren)n(t)g(text)g(selection:)
-44 b(if)32 b(the)g(length)515 3253 y(is)j(0)f(then)i(the)g(state)e(is)h
-('deactiv)-5 b(ated',)37 b(else)e(it)h(is)f('activ)-5
-b(ated'.)59 b(No)n(w)35 b(y)n(ou)f(can)h(safely)515 3352
+44 b(if)32 b(the)g(length)p 515 4830 1146 4 v 607 4884
+a Fg(1)642 4907 y Ff(A)23 b(slot)h(is)f(the)h(Common)e(Lisp)h(equiv)l
+(alen)n(t)i(of)f(a)f(class)h(instance)h(v)l(ariable)f(in)g(other)h
+(languages)607 4963 y Fg(2)642 4986 y Ff(See)f(the)h(cells-gtk)e(pro)t
+(ject:)33 b Fe(http://common-)t(lisp.net/p)q(roj)q(ect/)q(cell)q(s-)t
+(g)q(tk)1926 5255 y Fk(2)p eop end
+%%Page: 3 3
+TeXDict begin 3 2 bop 515 523 a Fk(is)35 b(0)f(then)i(the)g(state)e(is)
+h('deactiv)-5 b(ated',)37 b(else)e(it)h(is)f('activ)-5
+b(ated'.)59 b(No)n(w)35 b(y)n(ou)f(can)h(safely)515 623
 y(w)n(ork)c(on)i(the)g(rest)g(of)g(the)g(application)f(ignoring)g(the)h
 (state)g(of)g(the)g(men)n(u:)48 b(it)33 b(will)h(b)r(e)515
-3452 y(automatically)24 b(recalculated)h(ev)n(ery)f(time)j(the)f
-(length)g(of)g(the)g(curren)n(t)f(selection)g(v)-5 b(aries.)515
-3552 y(Moreo)n(v)n(er,)33 b(ev)n(erything)f(relating)h(to)h(the)h(men)n
+722 y(automatically)24 b(recalculated)h(ev)n(ery)f(time)j(the)f(length)
+g(of)g(the)g(curren)n(t)f(selection)g(v)-5 b(aries.)515
+822 y(Moreo)n(v)n(er,)33 b(ev)n(erything)f(relating)h(to)h(the)h(men)n
 (u)f(en)n(try)f(is)h(placed)f(near)h(its)g(de\034nition,)515
-3651 y(and)27 b(not)h(scattered)e(across)g(di\033eren)n(t)i
-(functions/metho)r(ds.)515 3926 y Fm(2)131 b(Installation)515
-4108 y Fk(The)37 b(installation)f(is)h(quite)h(simple)f(once)f(y)n(ou)h
+922 y(and)27 b(not)h(scattered)e(across)g(di\033eren)n(t)i
+(functions/metho)r(ds.)515 1196 y Fn(2)131 b(Installation)515
+1378 y Fk(The)37 b(installation)f(is)h(quite)h(simple)f(once)f(y)n(ou)h
 (ha)n(v)n(e)f(a)g(w)n(orking)g(Common)g(Lisp)h(sys-)515
-4207 y(tem.)h(Here)27 b(I)h(will)g(assume)f(that)h(y)n(ou'v)n(e)f(got)g
-(a)g(w)n(orking)f(cop)n(y)h(of)h(SBCL)2883 4177 y Fi(3)2920
-4207 y Fk(.)g(First)g(of)f(all,)515 4307 y(do)n(wnload)33
+1478 y(tem.)h(Here)27 b(I)h(will)g(assume)f(that)h(y)n(ou'v)n(e)f(got)g
+(a)g(w)n(orking)f(cop)n(y)h(of)h(SBCL)2883 1447 y Fi(3)2920
+1478 y Fk(.)g(First)g(of)f(all,)515 1577 y(do)n(wnload)33
 b(cells:)52 b(y)n(ou)34 b(can)g(get)h(the)h(latest)e(v)n(ersion)g(at)h
-Fg(http://common-)t(l)o(isp)o(.n)o(et)o(/)515 4407 y(cgi-)t
+Fd(http://common-)t(l)o(isp)o(.n)o(et)o(/)515 1677 y(cgi-)t
 (bin/viewcvs.)o(cg)o(i/)o(cel)o(ls)o(/?)o(roo)o(t=)o(ce)o(lls)o
 Fk(.)28 b(Then)19 b(en)n(ter)e(the)i(directory)e(~/.sb)r(cl/site)515
-4506 y(and)27 b(unpac)n(k)g(cells:)722 4689 y Fg($)43
-b(cd)g(~/.sbcl/site)p 515 4749 1146 4 v 607 4802 a Ff(1)642
-4826 y Fe(A)23 b(slot)h(is)f(the)h(Common)e(Lisp)h(equiv)l(alen)n(t)i
-(of)f(a)f(class)h(instance)h(v)l(ariable)f(in)g(other)h(languages)607
-4881 y Ff(2)642 4905 y Fe(See)f(the)h(cells-gtk)e(pro)t(ject:)33
-b Fd(http://common-)t(lisp.net/p)q(roj)q(ect/)q(cell)q(s-)t(g)q(tk)607
-4961 y Ff(3)642 4984 y Fe(SBCL)23 b Fd(http://www.sbcl.org)1926
-5255 y Fk(2)p eop end
-%%Page: 3 3
-TeXDict begin 3 2 bop 722 523 a Fg($)43 b(tar)g(-zxvf)e(~/cells.tar.gz)
-515 706 y Fk(No)n(w)27 b(b)r(e)h(sure)f(that)h(ASDF)g(will)g(b)r(e)g
-(able)f(to)h(\034nd)g(it:)722 888 y Fg($)43 b(cd)g(~/.sbcl/systems)722
-988 y($)g(for)g(a)g(in)g(`find)e(~/.sbcl/site/cel)o(ls)o(/)d(-name)j
-(\020*.asdf\021`)f(\\)905 1220 y(do)j(ln)f(-sf)h($a)f(.)i(\\)722
-1353 y(done)515 1536 y Fk(After)28 b(that,)g(start)f(SBCL)g(and)g(ev)-5
-b(aluate)27 b(the)h(follo)n(wing)f(expressions:)722 1719
-y Fg(&gt;)43 b(\(require)e(:asdf\))722 1818 y(NIL)722 1918
-y(&gt;)i(\(asdf:oos)d('asdf:load-op)e(:cells\))722 2017
-y(\(some)k(output)f(will)h(follow\))515 2200 y Fk(If)28
+1776 y(and)27 b(unpac)n(k)g(cells:)722 1959 y Fd($)43
+b(cd)g(~/.sbcl/site)722 2059 y($)g(tar)g(-zxvf)e(~/cells.tar.gz)515
+2241 y Fk(No)n(w)27 b(b)r(e)h(sure)f(that)h(ASDF)g(will)g(b)r(e)g(able)
+f(to)h(\034nd)g(it:)722 2424 y Fd($)43 b(cd)g(~/.sbcl/systems)722
+2524 y($)g(for)g(a)g(in)g(`find)e(~/.sbcl/site/cel)o(ls)o(/)d(-name)j
+(\020*.asdf\021`)f(\\)905 2756 y(do)j(ln)f(-sf)h($a)f(.)i(\\)722
+2889 y(done)515 3072 y Fk(After)28 b(that,)g(start)f(SBCL)g(and)g(ev)-5
+b(aluate)27 b(the)h(follo)n(wing)f(expressions:)722 3254
+y Fd(&gt;)43 b(\(require)e(:asdf\))722 3354 y(NIL)722 3453
+y(&gt;)i(\(asdf:oos)d('asdf:load-op)e(:cells\))722 3553
+y(\(some)k(output)f(will)h(follow\))515 3736 y Fk(If)28
 b(ev)n(erything)e(w)n(en)n(t)h(righ)n(t)g(cells)g(should)h(b)r(e)g(up)g
-(and)f(running.)515 2475 y Fm(3)131 b(Our)44 b(\034rst)g(cells)h
-(program)515 2673 y Fj(3.1)112 b(The)38 b(program)515
-2826 y Fk(W)-7 b(rite)28 b(the)f(follo)n(wing)g(piece)g(of)h(co)r(de)f
-(in)h(a)f(\034le)h(named)g(hello-cells.lisp:)722 3009
-y Fg(\(defmodel)40 b(hello-cells)f(\(\))809 3109 y(\(\(num)j(:accessor)
+(and)f(running.)515 4010 y Fn(3)131 b(Our)44 b(\034rst)g(cells)h
+(program)515 4209 y Fm(3.1)112 b(The)38 b(program)515
+4362 y Fk(W)-7 b(rite)28 b(the)f(follo)n(wing)g(piece)g(of)h(co)r(de)f
+(in)h(a)f(\034le)h(named)g(hello-cells.lisp:)722 4545
+y Fd(\(defmodel)40 b(hello-cells)f(\(\))809 4644 y(\(\(num)j(:accessor)
 e(num)i(:initarg)e(:num)i(:initform)e(\(c-in)h(0\)\))853
-3208 y(\(square-num)e(:accessor)h(square-num)1376 3308
-y(:initform)g(\(c?)i(\(*)h(\(num)f(self\))f(\(num)h(self\)\)\)\)\)\))
-722 3407 y(\(defun)f(hello)h(\(\))809 3507 y(\(let)g(\(\(h)h
-(\(make-instance)37 b('hello-cells\)\)\))897 3607 y(\(dolist)j(\(n)j
-('\(10)f(20)h(30)f(40)h(50)g(60)f(60\)\))984 3706 y(\(setf)f(\(num)h
-(h\))h(n\))984 3806 y(\(format)d(t)k(&quot;num)d(is)i(~a)g(and)f(square-num)
-d(is)k(~a~\045&quot;)f(\(num)g(h\))g(\(square-num)d(h\)\)\)\)\))515
-3989 y Fk(No)n(w)18 b(start)h(the)h(SBCL)f(in)n(terpreter)f(in)h(the)h
-(same)e(directory)g(and)h(ev)-5 b(aluate)19 b(the)g(follo)n(wing:)722
-4171 y Fg(&gt;)43 b(\(asdf:oos)d('asdf:load-op)e(:cells\))722
-4271 y(...)722 4370 y(&gt;)43 b(\(use-package)c(:cells\))722
-4470 y(T)722 4570 y(&gt;)k(\(load)f(\020hello-cells.lis)o(p\021)o(\))722
-4669 y(...)722 4769 y(T)722 4869 y(&gt;)h(\(hello\))722
-4968 y(num)g(is)f(10)h(and)f(square-num)e(is)i(100)1926
-5255 y Fk(3)p eop end
+4744 y(\(square-num)e(:accessor)h(square-num)1376 4843
+y(:initform)g(\(c?)i(\(*)h(\(num)f(self\))f(\(num)h(self\)\)\)\)\)\))p
+515 4903 1146 4 v 607 4957 a Fg(3)642 4980 y Ff(SBCL)23
+b Fe(http://www.sbcl.org)1926 5255 y Fk(3)p eop end
 %%Page: 4 4
-TeXDict begin 4 3 bop 722 523 a Fg(num)43 b(is)f(20)h(and)f(square-num)
-e(is)i(400)722 623 y(num)h(is)f(30)h(and)f(square-num)e(is)i(900)722
-722 y(num)h(is)f(40)h(and)f(square-num)e(is)i(1600)722
-822 y(num)h(is)f(50)h(and)f(square-num)e(is)i(2500)722
-922 y(num)h(is)f(60)h(and)f(square-num)e(is)i(3600)722
-1021 y(num)h(is)f(60)h(and)f(square-num)e(is)i(3600)722
-1121 y(NIL)515 1301 y Fk(What)25 b(happ)r(ens)g(within)g(the)g
+TeXDict begin 4 3 bop 722 523 a Fd(\(defun)41 b(hello)h(\(\))809
+623 y(\(let)g(\(\(h)h(\(make-instance)37 b('hello-cells\)\)\))897
+722 y(\(dolist)j(\(n)j('\(10)f(20)h(30)f(40)h(50)g(60)f(60\)\))984
+822 y(\(setf)f(\(num)h(h\))h(n\))984 922 y(\(format)d(t)k(&quot;num)d(is)i
+(~a)g(and)f(square-num)d(is)k(~a~\045&quot;)f(\(num)g(h\))g(\(square-num)d
+(h\)\)\)\)\))515 1104 y Fk(No)n(w)18 b(start)h(the)h(SBCL)f(in)n
+(terpreter)f(in)h(the)h(same)e(directory)g(and)h(ev)-5
+b(aluate)19 b(the)g(follo)n(wing:)722 1287 y Fd(&gt;)43
+b(\(asdf:oos)d('asdf:load-op)e(:cells\))722 1386 y(...)722
+1486 y(&gt;)43 b(\(use-package)c(:cells\))722 1586 y(T)722
+1685 y(&gt;)k(\(load)f(\020hello-cells.lis)o(p\021)o(\))722
+1785 y(...)722 1885 y(T)722 1984 y(&gt;)h(\(hello\))722
+2084 y(num)g(is)f(10)h(and)f(square-num)e(is)i(100)722
+2183 y(num)h(is)f(20)h(and)f(square-num)e(is)i(400)722
+2283 y(num)h(is)f(30)h(and)f(square-num)e(is)i(900)722
+2383 y(num)h(is)f(40)h(and)f(square-num)e(is)i(1600)722
+2482 y(num)h(is)f(50)h(and)f(square-num)e(is)i(2500)722
+2582 y(num)h(is)f(60)h(and)f(square-num)e(is)i(3600)722
+2682 y(num)h(is)f(60)h(and)f(square-num)e(is)i(3600)722
+2781 y(NIL)515 2964 y Fk(What)25 b(happ)r(ens)g(within)g(the)g
 (function)h('hello')9 b(?)36 b(First,)25 b(an)g(ob)5
-b(ject)24 b(of)h(t)n(yp)r(e)g(hello-cells)f(is)515 1401
+b(ject)24 b(of)h(t)n(yp)r(e)g(hello-cells)f(is)515 3064
 y(created.)35 b(After)28 b(that)f(the)g(program)d(iterates)i(o)n(v)n
 (er)f(the)i(con)n(ten)n(ts)f(of)h(the)g(list)g('\(10)f(20)g(30)515
-1500 y(40)21 b(50)g(60)h(60\),)g(and)g(ev)n(ery)f(n)n(um)n(b)r(er)h(is)
+3163 y(40)21 b(50)g(60)h(60\),)g(and)g(ev)n(ery)f(n)n(um)n(b)r(er)h(is)
 g(used)h(to)f(set)g(the)h(n)n(um)f(slot)g(of)g(the)h(ob)5
-b(ject)22 b(h.)35 b(Then)515 1600 y(the)25 b(n)n(um)g(slot)g(is)g(prin)
+b(ject)22 b(h.)35 b(Then)515 3263 y(the)25 b(n)n(um)g(slot)g(is)g(prin)
 n(ted)g(together)f(with)h(the)g(slot)g(square-n)n(um.)34
-b(The)25 b(prin)n(ted)g(v)-5 b(alue)25 b(of)515 1700
+b(The)25 b(prin)n(ted)g(v)-5 b(alue)25 b(of)515 3362
 y(the)g(slot)g(n)n(um)g(giv)n(es)f(us)h(no)f(surprise:)35
 b(it)25 b(has)g(the)g(v)-5 b(alue)25 b(w)n(e)g(ga)n(v)n(e)e(it.)36
-b(This)25 b(do)r(esn't)g(hold)515 1799 y(for)j(the)i(slot)f(square-n)n
+b(This)25 b(do)r(esn't)g(hold)515 3462 y(for)j(the)i(slot)f(square-n)n
 (um,)f(though:)39 b(w)n(e)29 b(nev)n(er)f(ga)n(v)n(e)g(it)h(a)g(v)-5
-b(alue)29 b(within)h(the)f(lo)r(op,)g(but)515 1899 y(it)e(alw)n(a)n(ys)
+b(alue)29 b(within)h(the)f(lo)r(op,)g(but)515 3562 y(it)e(alw)n(a)n(ys)
 e(holds)h(the)h(square)f(of)h(the)g(slot)f(n)n(um!)37
 b(This)27 b(is)g(just)g(cells)g(w)n(orking)e(for)h(us:)36
-b(w)n(e)515 1999 y(told)27 b(the)h(system)g(that)f(the)h(relation)722
-2179 y Fc(num)18 b Fb(\003)g Fc(num)k Fa(=)h Fc(sq)s(uar)r(enum)515
-2359 y Fk(m)n(ust)37 b(hold,)j(and)e(ev)n(ery)e(time)i(n)n(um)g(c)n
+b(w)n(e)515 3661 y(told)27 b(the)h(system)g(that)f(the)h(relation)722
+3844 y Fc(num)18 b Fb(\003)g Fc(num)k Fa(=)h Fc(sq)s(uar)r(enum)515
+4027 y Fk(m)n(ust)37 b(hold,)j(and)e(ev)n(ery)e(time)i(n)n(um)g(c)n
 (hanges,)h(the)f(expression)e(\(*)h(\(n)n(um)h(self)6
-b(\))39 b(\(n)n(um)515 2459 y(self)6 b(\)\))24 b(is)g(re-ev)-5
+b(\))39 b(\(n)n(um)515 4126 y(self)6 b(\)\))24 b(is)g(re-ev)-5
 b(aluated.)34 b(Note)24 b(that)f(the)h(relation)f(isn't)h(a)f
-(mathematical)g(equation:)34 b(y)n(ou)515 2559 y(can't)27
+(mathematical)g(equation:)34 b(y)n(ou)515 4226 y(can't)27
 b(c)n(hange)g(square-n)n(um)f(and)h(exp)r(ect)h(to)f(\034nd)h(its)g
-(square)e(ro)r(ot)h(in)h(n)n(um.)515 2791 y Fj(3.2)112
-b(The)38 b(program)f(line-b)m(y-line)515 2944 y Fk(Lets)26
+(square)e(ro)r(ot)h(in)h(n)n(um.)515 4458 y Fm(3.2)112
+b(The)38 b(program)f(line-b)m(y-line)515 4611 y Fk(Lets)26
 b(no)n(w)g(analyze)g(the)h(program.)34 b(The)27 b(v)n(ery)e(\034rst)i
-(line)f(uses)h(the)g(construct)f(defmo)r(del:)722 3124
-y Fg(\(defmodel)40 b(hello-cells)f(\(\))515 3305 y Fk(defmo)r(del)27
-b(is)g(v)n(ery)e(similar)h(to)h(defclass)f(and)g(ev)n(erything)g(v)-5
-b(alid)26 b(in)h(a)g(defclass)f(construct)515 3404 y(is)21
-b(v)-5 b(alid)21 b(within)h(defmo)r(del)1365 3374 y Fi(4)1402
-3404 y Fk(.)35 b(The)21 b(main)g(di\033erence)g(is)g(that)g(all)g(the)h
-(slots)e(de\034ned)h(within)515 3504 y(it)k(will)g(b)r(e)g(trac)n(k)n
+(line)f(uses)h(the)g(construct)f(defmo)r(del:)722 4794
+y Fd(\(defmodel)40 b(hello-cells)f(\(\))1926 5255 y Fk(4)p
+eop end
+%%Page: 5 5
+TeXDict begin 5 4 bop 515 523 a Fk(defmo)r(del)27 b(is)g(v)n(ery)e
+(similar)h(to)h(defclass)f(and)g(ev)n(erything)g(v)-5
+b(alid)26 b(in)h(a)g(defclass)f(construct)515 623 y(is)21
+b(v)-5 b(alid)21 b(within)h(defmo)r(del)1365 593 y Fi(4)1402
+623 y Fk(.)35 b(The)21 b(main)g(di\033erence)g(is)g(that)g(all)g(the)h
+(slots)e(de\034ned)h(within)515 722 y(it)k(will)g(b)r(e)g(trac)n(k)n
 (ed)e(b)n(y)i(cells,)g(except)g(slots)f(that)h(are)f(explicitly)h
-(declared)e(to)i(b)r(e)g(ignored)515 3603 y(b)n(y)i(the)h(system)f(b)n
+(declared)e(to)i(b)r(e)g(ignored)515 822 y(b)n(y)i(the)h(system)f(b)n
 (y)h(sp)r(ecifying)f(:cell)h(nil)g(in)f(the)h(de\034nition.)722
-3784 y Fg(\(\(num)42 b(:accessor)e(num)i(:initarg)e(:num)i(:initform)e
-(\(c-in)h(0\)\))515 3964 y Fk(Here)23 b(w)n(e)g(de\034ne)h(the)g(slot)f
+1005 y Fd(\(\(num)42 b(:accessor)e(num)i(:initarg)e(:num)i(:initform)e
+(\(c-in)h(0\)\))515 1187 y Fk(Here)23 b(w)n(e)g(de\034ne)h(the)g(slot)f
 (n)n(um)h(as)f(w)n(e)g(w)n(ould)g(do)h(within)g(a)f(standard)g(class)g
-(declaration.)515 4064 y(The)f(di\033erence)f(is)h(in)g(its)g
+(declaration.)515 1287 y(The)f(di\033erence)f(is)h(in)g(its)g
 (initialization)g(expression:)32 b(instead)22 b(of)g(the)g(n)n(um)n(b)r
-(er)f(0)h(w)n(e)f(ha)n(v)n(e)515 4163 y(\(c-in)32 b(0\).)52
+(er)f(0)h(w)n(e)f(ha)n(v)n(e)515 1386 y(\(c-in)32 b(0\).)52
 b(Wh)n(y?)f(\(c-in)33 b(&lt;expr&gt;\))e(is)i(a)f(construct)g(that)g(tells)h
-(cells)f(that)h(the)g(v)-5 b(alue)32 b(of)515 4263 y(n)n(um)24
+(cells)f(that)h(the)g(v)-5 b(alue)32 b(of)515 1486 y(n)n(um)24
 b(ma)n(y)f(b)r(e)h(c)n(hanged,)g(so)f(whenev)n(er)g(it)i(do)r(es)e(c)n
 (hange)g(a)g(re-ev)-5 b(aluation)23 b(of)h(all)f(the)i(slots)515
-4363 y(that)31 b(dep)r(end)g(on)f(it)h(m)n(ust)g(b)r(e)g(triggered.)44
+1586 y(that)31 b(dep)r(end)g(on)f(it)h(m)n(ust)g(b)r(e)g(triggered.)44
 b(If)31 b(w)n(e)f(did)h(just)g(write)g(0)f(instead)g(of)h(\(c-in)f(0\))
-515 4462 y(a)h(run)n(time)h(error)d(w)n(ould)j(ha)n(v)n(e)e(b)r(een)i
+515 1685 y(a)h(run)n(time)h(error)d(w)n(ould)j(ha)n(v)n(e)e(b)r(een)i
 (raised)f(during)g(the)h(execution)f(of)h(\(setf)g(\(n)n(um)h(h\))515
-4562 y(...\).)47 b(So,)32 b(when)f(a)g(slot)g(is)f(writable)h(it)g(m)n
+1785 y(...\).)47 b(So,)32 b(when)f(a)g(slot)g(is)f(writable)h(it)g(m)n
 (ust)g(b)r(e)h(signalled)e(to)h(cells)g(with)g(the)g(\(c-in)h(...\))515
-4662 y(construct.)42 b(This)30 b(is)f(necessary)f(to)i(let)g(cells)f
+1885 y(construct.)42 b(This)30 b(is)f(necessary)f(to)i(let)g(cells)f
 (do)g(some)g(optimizations)g(lik)n(e)g(a)n(v)n(oiding)f(to)515
-4761 y(remem)n(b)r(er)j(dep)r(endencies)i(on)f(slots)g(that)h(will)f
+1984 y(remem)n(b)r(er)j(dep)r(endencies)i(on)f(slots)g(that)h(will)f
 (nev)n(er)g(c)n(hange.)50 b(Slots)32 b(initialized)h(with)515
-4861 y(c-in)27 b(are)g(usually)g(called)g(\020input)h(cells\021.)p
-515 4929 1146 4 v 607 4983 a Ff(4)642 5006 y Fe(defmo)r(del)23
-b(is)f(a)i(la)n(y)n(er)h(built)e(on)h(top)h(of)e(defclass)1926
-5255 y Fk(4)p eop end
-%%Page: 5 5
-TeXDict begin 5 4 bop 722 523 a Fg(\(square-num)39 b(:accessor)h
-(square-num)1245 623 y(:initform)g(\(c?)i(\(*)h(\(num)f(self\))f(\(num)
-h(self\)\)\)\)\)\))515 805 y Fk(No)n(w)36 b(w)n(e)g(de\034ne)g(the)h
+2084 y(c-in)27 b(are)g(usually)g(called)g(\020input)h(cells\021.)722
+2267 y Fd(\(square-num)39 b(:accessor)h(square-num)1245
+2366 y(:initform)g(\(c?)i(\(*)h(\(num)f(self\))f(\(num)h
+(self\)\)\)\)\)\))515 2549 y Fk(No)n(w)36 b(w)n(e)g(de\034ne)g(the)h
 (slot)f(square-n)n(um.)62 b(There)36 b(are)f(t)n(w)n(o)h(things)g(to)g
-(note)h(here:)54 b(\(c?)515 905 y(&lt;expr&gt;\))33 b(and)h('self)6
+(note)h(here:)54 b(\(c?)515 2648 y(&lt;expr&gt;\))33 b(and)h('self)6
 b('.The)35 b(\034rst)f(is)g(a)g(construct)g(that)g(sa)n(ys:)49
 b(\020T)-7 b(o)34 b(calculate)g(the)g(v)-5 b(alue)515
-1005 y(of)31 b(square-n)n(um,)g(ev)-5 b(aluate)31 b(the)g(expression)f
+2748 y(of)31 b(square-n)n(um,)g(ev)-5 b(aluate)31 b(the)g(expression)f
 (&lt;expr&gt;\021.)46 b(Within)33 b(\(c?)48 b(...\))g(the)32
-b(v)-5 b(ariable)515 1104 y(self)28 b(is)f(b)r(ound)h(to)f(the)h(ob)5
+b(v)-5 b(ariable)515 2848 y(self)28 b(is)f(b)r(ound)h(to)f(the)h(ob)5
 b(ject)28 b(itself.)37 b(\(c?)h(...\))f(automatically)27
-b(trac)n(ks)f(an)n(y)h(dep)r(endency)-7 b(,)515 1204
+b(trac)n(ks)f(an)n(y)h(dep)r(endency)-7 b(,)515 2947
 y(in)29 b(this)g(case)g(the)g(dep)r(endency)g(on)g(the)g(v)-5
 b(alue)29 b(of)g(n)n(um:)40 b(when)29 b(n)n(um)h(c)n(hanges,)e(\(*)h
-(\(n)n(um)515 1303 y(self)6 b(\))28 b(\(n)n(um)g(self)6
+(\(n)n(um)515 3047 y(self)6 b(\))28 b(\(n)n(um)g(self)6
 b(\)\))29 b(will)f(b)r(e)f(re-ev)-5 b(aluated.)36 b(Slots)27
 b(initialized)h(with)g(c?)37 b(are)27 b(called)g(\020ruled)515
-1403 y(cells\021.)722 1586 y Fg(\(let)42 b(\(\(h)g(\(make-instance)c
-('hello-cells\)\)\))515 1768 y Fk(Here)32 b(w)n(e)g(use)g(the)g
+3147 y(cells\021.)722 3329 y Fd(\(let)42 b(\(\(h)g(\(make-instance)c
+('hello-cells\)\)\))515 3512 y Fk(Here)32 b(w)n(e)g(use)g(the)g
 (function)h(\(mak)n(e-instance)e(&lt;mo)r(del-name&gt;)g Fh(ar)l(gs*)12
-b Fk(\),)35 b(to)d(create)f(an)515 1868 y(ob)5 b(ject)23
+b Fk(\),)35 b(to)d(create)f(an)515 3611 y(ob)5 b(ject)23
 b(of)g(t)n(yp)r(e)g(&lt;mo)r(del-name&gt;,)f(in)i(this)f(case)f(hello-cells,)
-h(as)g(w)n(e)f(w)n(ould)h(do)g(to)g(instan-)515 1968
+h(as)g(w)n(e)f(w)n(ould)h(do)g(to)g(instan-)515 3711
 y(tiate)k(a)h(normal)e(class.)36 b(Y)-7 b(ou)28 b(could)f(sp)r(ecify)h
 (an)f(initial)h(v)-5 b(alue)27 b(for)g(n)n(um)h(no)n(w:)722
-2150 y Fg(\(let)42 b(\(\(h)g(\(make-instance)c('hello-cells)h(:num)i
-(\(c-in)h(50\)\)\)\))515 2333 y Fk(Note)23 b(that)h(y)n(ou)f
+3894 y Fd(\(let)42 b(\(\(h)g(\(make-instance)c('hello-cells)h(:num)i
+(\(c-in)h(50\)\)\)\))515 4076 y Fk(Note)23 b(that)h(y)n(ou)f
 Fh(must)31 b Fk(rep)r(eat)23 b(the)h(\(c-in)g(...\))36
 b(construct.)f(This)24 b(is)f(b)r(ecause)g(the)i(b)r(eha)n(vior)515
-2433 y(of)31 b(the)h(slot)g(\(input)h(cell,)f(constan)n(t,)g(ruled)g
+4176 y(of)31 b(the)h(slot)g(\(input)h(cell,)f(constan)n(t,)g(ruled)g
 (cell\))g(is)f(decided)h(on)g(a)f(p)r(er)g(instance)h(basis,)515
-2532 y(not)e(on)h(a)f(p)r(er)g(class)g(basis.)45 b(This)31
+4276 y(not)e(on)h(a)f(p)r(er)g(class)g(basis.)45 b(This)31
 b(means)f(that,)h(in)g(our)f(example,)h(w)n(e)f(could)g(ha)n(v)n(e)g(t)
-n(w)n(o)515 2632 y(ob)5 b(jects)28 b(of)h(t)n(yp)r(e)g(hello-cells,)f
+n(w)n(o)515 4375 y(ob)5 b(jects)28 b(of)h(t)n(yp)r(e)g(hello-cells,)f
 (one)g(where)g(the)h(slot)g(n)n(um)f(is)h(settable)g(and)f(one)g(where)
-h(it)515 2731 y(is)k(has)g(a)f(constan)n(t)h(v)-5 b(alue.)54
+h(it)515 4475 y(is)k(has)g(a)f(constan)n(t)h(v)-5 b(alue.)54
 b(When)34 b(an)e(ob)5 b(ject)33 b(is)h(created,)g(all)f(the)g(v)-5
-b(alues)33 b(of)g(its)h(slots)515 2831 y(are)27 b(computed)i(for)f(the)
+b(alues)33 b(of)g(its)h(slots)515 4575 y(are)27 b(computed)i(for)f(the)
 h(\034rst)g(time,)g(in)g(this)g(case)f(the)h(expression)e(\(*)i(\(n)n
-(um)g(self)6 b(\))30 b(\(n)n(um)515 2931 y(self)6 b(\)\))28
+(um)g(self)6 b(\))30 b(\(n)n(um)515 4674 y(self)6 b(\)\))28
 b(is)g(ev)-5 b(aluated)27 b(and)h(the)f(v)-5 b(alue)28
-b(giv)n(en)f(to)g(the)h(slot)f(square-n)n(um.)722 3113
-y Fg(\(setf)42 b(\(num)g(h\))g(n\))515 3296 y Fk(This)21
-b(expression)g(sets)g(the)h(v)-5 b(alue)22 b(of)f(the)i(slot)e(n)n(um)h
-(to)g(n.)35 b(This)21 b(is)h(when)g(cells)f(comes)g(in)n(to)515
-3396 y(action:)33 b(square-n)n(um)19 b(dep)r(ends)i(on)f(n)n(um,)i(so)e
-(\(*)h(\(n)n(um)g(self)6 b(\))22 b(\(n)n(um)f(self)6
-b(\)\))22 b(is)e(re-ev)-5 b(aluated)515 3495 y(after)27
-b(n)h(has)f(c)n(hanged.)722 3778 y Fg(\(format)41 b(t)i(&quot;num)f(is)h(~a)
-f(and)h(square-num)c(is)k(~a~\045&quot;)e(\(num)h(h\))h(\(square-num)c
-(h\)\))515 3960 y Fk(Finally)-7 b(,)43 b(w)n(e)d(prin)n(t)g(the)h(v)-5
+b(giv)n(en)f(to)g(the)h(slot)f(square-n)n(um.)722 4857
+y Fd(\(setf)42 b(\(num)g(h\))g(n\))p 515 4917 1146 4
+v 607 4970 a Fg(4)642 4994 y Ff(defmo)r(del)23 b(is)f(a)i(la)n(y)n(er)h
+(built)e(on)h(top)h(of)e(defclass)1926 5255 y Fk(5)p
+eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop 515 523 a Fk(This)21 b(expression)g(sets)g(the)h
+(v)-5 b(alue)22 b(of)f(the)i(slot)e(n)n(um)h(to)g(n.)35
+b(This)21 b(is)h(when)g(cells)f(comes)g(in)n(to)515 623
+y(action:)33 b(square-n)n(um)19 b(dep)r(ends)i(on)f(n)n(um,)i(so)e(\(*)
+h(\(n)n(um)g(self)6 b(\))22 b(\(n)n(um)f(self)6 b(\)\))22
+b(is)e(re-ev)-5 b(aluated)515 722 y(after)27 b(n)h(has)f(c)n(hanged.)
+722 1004 y Fd(\(format)41 b(t)i(&quot;num)f(is)h(~a)f(and)h(square-num)c(is)
+k(~a~\045&quot;)e(\(num)h(h\))h(\(square-num)c(h\)\))515 1185
+y Fk(Finally)-7 b(,)43 b(w)n(e)d(prin)n(t)g(the)h(v)-5
 b(alues)40 b(of)g(the)h(t)n(w)n(o)e(slots)h(and)g(disco)n(v)n(er)f
-(that)h(the)h(v)-5 b(alue)40 b(of)515 4060 y(square-n)n(um)26
-b(is)h(correctly)f(the)i(square)e(of)i(n)n(um.)639 4159
+(that)h(the)h(v)-5 b(alue)40 b(of)515 1285 y(square-n)n(um)26
+b(is)h(correctly)f(the)i(square)e(of)i(n)n(um.)639 1385
 y(As)g(a)f(side)h(note,)f(y)n(ou)g(can)g(reset)g(the)h(cells)f(system)h
-(b)n(y)f(calling)g(\(cell-reset\):)722 4342 y Fg(&gt;)43
-b(\(cells-reset\))722 4442 y(NIL)515 4624 y Fk(This)20
+(b)n(y)f(calling)g(\(cell-reset\):)722 1566 y Fd(&gt;)43
+b(\(cells-reset\))722 1666 y(NIL)515 1848 y Fk(This)20
 b(could)h(b)r(e)g(necessary)e(after)h(an)g(error)f(has)h(corrupted)g
-(the)h(system)f(and)h(cells)f(do)r(esn't)515 4724 y(seem)31
+(the)h(system)f(and)h(cells)f(do)r(esn't)515 1947 y(seem)31
 b(to)g(w)n(ork)e(correctly)h(an)n(ymore.)46 b(It's)31
 b(also)f(a)h(go)r(o)r(d)g(practice)f(to)h(reset)g(the)g(system)515
-4824 y(b)r(efore)c(running)g(co)r(de)h(that)f(uses)h(cells.)1926
-5255 y(5)p eop end
-%%Page: 6 6
-TeXDict begin 6 5 bop 515 523 a Fm(4)131 b(The)44 b(family)h(system)515
-705 y Fk(Ob)5 b(jects)25 b(whose)g(t)n(yp)r(e)i(ha)n(v)n(e)d(b)r(een)j
+2047 y(b)r(efore)c(running)g(co)r(de)h(that)f(uses)h(cells.)515
+2321 y Fn(4)131 b(The)44 b(family)h(system)515 2503 y
+Fk(Ob)5 b(jects)25 b(whose)g(t)n(yp)r(e)i(ha)n(v)n(e)d(b)r(een)j
 (de\034ned)f(using)g(defmo)r(del)g(can)g(b)r(e)g(organized)e(in)i(fam-)
-515 804 y(ilies.)61 b(A)36 b(family)g(is)f(a)h(tree)f(of)h(mo)r(del)g
+515 2603 y(ilies.)61 b(A)36 b(family)g(is)f(a)h(tree)f(of)h(mo)r(del)g
 (instances)f(\()p Fh(not)44 b Fk(of)35 b(mo)r(del)h(classes!\))60
-b(that)36 b(can)515 904 y(reference)f(eac)n(h)h(other)g(using)h(the)g
+b(that)36 b(can)515 2702 y(reference)f(eac)n(h)h(other)g(using)h(the)g
 (functions)g(\(fm-other)f(...\),)k(\(fm^)d(...\))64 b(and)37
-b(others.)515 1004 y(Y)-7 b(ou)25 b(can)f(sp)r(ecify)h(the)g(family)g
+b(others.)515 2802 y(Y)-7 b(ou)25 b(can)f(sp)r(ecify)h(the)g(family)g
 (tree)g(at)f(ob)5 b(ject)25 b(creation)e(time)j(passing)d(a)i(list)g
-(of)g(c)n(hildren)515 1103 y(to)19 b(the)i(argumen)n(t)d(:kids.)35
+(of)g(c)n(hildren)515 2902 y(to)19 b(the)i(argumen)n(t)d(:kids.)35
 b(Alternativ)n(ely)-7 b(,)20 b(y)n(ou)f(can)h(access)f(the)h(slot)f
-(.kids)h(\(automatically)515 1203 y(created)31 b(b)n(y)i(defmo)r(del\))
+(.kids)h(\(automatically)515 3001 y(created)31 b(b)n(y)i(defmo)r(del\))
 g(and)f(set)h(it)g(at)f(run)n(time)h(to)f(c)n(hange)f(the)i(family)g
-(comp)r(onen)n(ts.)515 1303 y(.kids)22 b(is,)i(b)n(y)e(default,)i(a)e
+(comp)r(onen)n(ts.)515 3101 y(.kids)22 b(is,)i(b)n(y)e(default,)i(a)e
 (slot)g(of)h(t)n(yp)r(e)f(c-in,)i(and)e(y)n(ou)g(can)g(access)f(it)i
-(through)f(the)h(metho)r(d)515 1402 y(\(kids)29 b(ob)5
+(through)f(the)h(metho)r(d)515 3200 y(\(kids)29 b(ob)5
 b(ject\).)44 b(Y)-7 b(ou)29 b(can)h(c)n(hange)e(the)i(.kids)g(slot)f
 (to)h(b)r(e)g(of)f(a)h(t)n(yp)r(e)f(other)g(than)h(c-in)g(as)515
-1502 y(y)n(ou)g(could)h(do)f(with)i(an)n(y)e(other)h(slot.)46
+3300 y(y)n(ou)g(could)h(do)f(with)i(an)n(y)e(other)h(slot.)46
 b(T)-7 b(o)31 b(access)f(the)h(mem)n(b)r(ers)g(of)g(a)f(family)h(y)n
-(ou)f(can)515 1601 y(giv)n(e)35 b(them)h(a)g(name)g(with)g(the)h
+(ou)f(can)515 3400 y(giv)n(e)35 b(them)h(a)g(name)g(with)g(the)h
 (argumen)n(t)e(:md-name)g(and)h(then)h(reference)e(them)h(b)n(y)515
-1701 y(their)29 b(name.)44 b(Another)29 b(w)n(a)n(y)g(to)g(access)g
+3499 y(their)29 b(name.)44 b(Another)29 b(w)n(a)n(y)g(to)g(access)g
 (them)h(is)g(through)f(their)g(t)n(yp)r(e:)42 b(y)n(ou)29
-b(could)g(sa)n(y)-7 b(,)515 1801 y(for)36 b(example,)i(\020giv)n(e)d
+b(could)g(sa)n(y)-7 b(,)515 3599 y(for)36 b(example,)i(\020giv)n(e)d
 (me)h(all)g(the)h(successors)d(of)i(t)n(yp)r(e)h(m)n(y-t)n(yp)r(e\021.)
-62 b(T)-7 b(o)36 b(use)g(these)h(fea-)515 1900 y(tures)d(y)n(our)f(mo)r
+62 b(T)-7 b(o)36 b(use)g(these)h(fea-)515 3699 y(tures)d(y)n(our)f(mo)r
 (dels)h(m)n(ust)h(inherit)g(from)f(the)h(mo)r(del)f('family'.)58
-b(Mo)r(dels)34 b(that)h(inherit)515 2000 y(from)g(family)g(ha)n(v)n(e)g
+b(Mo)r(dels)34 b(that)h(inherit)515 3798 y(from)g(family)g(ha)n(v)n(e)g
 (also)f(a)h(.v)-5 b(alue)35 b(slot)g(asso)r(ciated,)i(whic)n(h)e(y)n
-(ou)g(can)g(access)f(through)515 2100 y(the)28 b(metho)r(d)g(\(v)-5
-b(alue)27 b(self)6 b(\))1362 2070 y Fi(5)1401 2100 y
+(ou)g(can)g(access)f(through)515 3898 y(the)28 b(metho)r(d)g(\(v)-5
+b(alue)27 b(self)6 b(\))1362 3868 y Fi(5)1401 3898 y
 Fk(.)37 b(The)27 b(follo)n(wing)g(example)g(sho)n(ws)f(some)h(of)h
-(these)f(things)h(in)515 2199 y(action:)722 2382 y Fg(\(defmodel)40
-b(node)i(\(family\))809 2482 y(\(\(val)g(:initform)e(\(c-in)h(nil\))h
-(:initarg)e(:val\)\)\))722 2581 y(\(defun)h(math-op-family)d(\(\))809
-2681 y(\(let)k(\(\(root)1114 2780 y(\(make-instance)1158
-2880 y('node)1158 2980 y(:val)g(\(c?)g(\(apply)f(#'+)i(\(mapcar)d
-(#'val)i(\(kids)f(self\)\)\)\))1158 3079 y(:kids)1158
-3179 y(\(c?)1245 3279 y(\(the-kids)1332 3378 y(\(make-kid)f('node)i
-(:md-name)e(:n5)i(:val)g(\(c-in)f(5\)\))1332 3478 y(\(make-kid)1376
-3577 y('node)1376 3677 y(:val)h(\(c?)g(\(apply)f(#'*)h(\(mapcar)f
-(#'val)h(\(kids)f(self\)\)\)\))1376 3777 y(:kids)1376
-3876 y(\(c?)1463 3976 y(\(the-kids)1507 4076 y(\(make-kid)e('node)j
-(:md-name)e(:n7)i(:val)g(\(c-in)g(7\)\))1507 4175 y(\(make-kid)d('node)
-j(:md-name)e(:n9)i(:val)g(\(c-in)g(9\)\)\)\)\)\)\)\)\)\))897
-4275 y(\(format)e(t)j(&quot;value)e(of)i(the)f(tree)g(is)h(~a~\045&quot;)e(\(val)
-h(root\)\))897 4374 y(\(setf)f(\(val)h(\(fm-other)e(:n7)i(:starting)e
-(root\)\))h(10\))897 4474 y(\(format)f(t)j(&quot;new)f(value)g(of)g(the)h
-(tree)f(is)g(~a~\045&quot;)g(\(val)g(root\)\)\)\))515 4657
-y Fk(W)-7 b(rite)28 b(it)g(in)f(a)h(\034le)f(\(in)h(this)g(case)f
-(hello-cells.lisp\))g(and)g(load)g(it:)722 4839 y Fg(&gt;)43
-b(\(load)f(\020hello-cells.lis)o(p\021)o(\))p 515 4911
-1146 4 v 607 4964 a Ff(5)642 4988 y Fe(In)24 b(older)g(releases)h(of)e
-(cells)h(y)n(ou)g(had)g(to)g(use)g(\(md-v)l(alue)f(self)5
+(these)f(things)h(in)515 3997 y(action:)722 4179 y Fd(\(defmodel)40
+b(node)i(\(family\))809 4279 y(\(\(val)g(:initform)e(\(c-in)h(nil\))h
+(:initarg)e(:val\)\)\))722 4378 y(\(defun)h(math-op-family)d(\(\))809
+4478 y(\(let)k(\(\(root)1114 4578 y(\(make-instance)1158
+4677 y('node)1158 4777 y(:val)g(\(c?)g(\(apply)f(#'+)i(\(mapcar)d
+(#'val)i(\(kids)f(self\)\)\)\))1158 4876 y(:kids)p 515
+4929 1146 4 v 607 4983 a Fg(5)642 5006 y Ff(In)24 b(older)g(releases)h
+(of)e(cells)h(y)n(ou)g(had)g(to)g(use)g(\(md-v)l(alue)f(self)5
 b(\))24 b(instead)1926 5255 y Fk(6)p eop end
 %%Page: 7 7
-TeXDict begin 7 6 bop 722 523 a Fg(T)722 623 y(&gt;)43 b
-(\(math-op-family\))722 722 y(value)f(of)g(the)h(tree)f(is)g(68)722
-822 y(new)h(value)e(of)i(the)f(tree)g(is)h(95)722 922
-y(NIL)515 1094 y Fk(Lets')27 b(see)g(the)h(most)g(imp)r(ortan)n(t)f
-(parts)g(of)g(the)h(program:)722 1266 y Fg(\(defmodel)40
-b(node)i(\(family\))809 1365 y(\(\(val)g(:initform)e(\(c-in)h(nil\))h
-(:initarg)e(:val\)\)\))515 1537 y Fk(Here)22 b(w)n(e)g(de\034ne)h(the)g
+TeXDict begin 7 6 bop 1158 523 a Fd(\(c?)1245 623 y(\(the-kids)1332
+722 y(\(make-kid)40 b('node)i(:md-name)e(:n5)i(:val)g(\(c-in)f(5\)\))
+1332 822 y(\(make-kid)1376 922 y('node)1376 1021 y(:val)h(\(c?)g
+(\(apply)f(#'*)h(\(mapcar)f(#'val)h(\(kids)f(self\)\)\)\))1376
+1121 y(:kids)1376 1220 y(\(c?)1463 1320 y(\(the-kids)1507
+1420 y(\(make-kid)e('node)j(:md-name)e(:n7)i(:val)g(\(c-in)g(7\)\))1507
+1519 y(\(make-kid)d('node)j(:md-name)e(:n9)i(:val)g(\(c-in)g
+(9\)\)\)\)\)\)\)\)\)\))897 1619 y(\(format)e(t)j(&quot;value)e(of)i(the)f
+(tree)g(is)h(~a~\045&quot;)e(\(val)h(root\)\))897 1719 y(\(setf)f(\(val)h
+(\(fm-other)e(:n7)i(:starting)e(root\)\))h(10\))897 1818
+y(\(format)f(t)j(&quot;new)f(value)g(of)g(the)h(tree)f(is)g(~a~\045&quot;)g
+(\(val)g(root\)\)\)\))515 2001 y Fk(W)-7 b(rite)28 b(it)g(in)f(a)h
+(\034le)f(\(in)h(this)g(case)f(hello-cells.lisp\))g(and)g(load)g(it:)
+722 2183 y Fd(&gt;)43 b(\(load)f(\020hello-cells.lis)o(p\021)o(\))722
+2283 y(T)722 2383 y(&gt;)h(\(math-op-family\))722 2482 y(value)f(of)g(the)
+h(tree)f(is)g(68)722 2582 y(new)h(value)e(of)i(the)f(tree)g(is)h(95)722
+2682 y(NIL)515 2864 y Fk(Lets')27 b(see)g(the)h(most)g(imp)r(ortan)n(t)
+f(parts)g(of)g(the)h(program:)722 3047 y Fd(\(defmodel)40
+b(node)i(\(family\))809 3147 y(\(\(val)g(:initform)e(\(c-in)h(nil\))h
+(:initarg)e(:val\)\)\))515 3329 y Fk(Here)22 b(w)n(e)g(de\034ne)h(the)g
 (mo)r(del)g(no)r(de:)35 b(w)n(e)22 b(plan)h(to)f(build)h(a)g(family)f
-(of)h(no)r(des,)h(so)e(w)n(e)g(inherit)515 1637 y(from)27
+(of)h(no)r(des,)h(so)e(w)n(e)g(inherit)515 3429 y(from)27
 b(the)h(mo)r(del)g(family)-7 b(.)37 b(The)27 b(slot)g(v)-5
 b(al)28 b(will)g(con)n(tain)e(the)i(v)-5 b(alue)28 b(of)f(the)h(no)r
-(de.)722 1809 y Fg(\(make-instance)766 1909 y('node)766
-2008 y(:val)42 b(\(c?)g(\(apply)f(#'+)h(\(mapcar)f(#'val)g(\(kids)h
-(self\)\)\)\))515 2180 y Fk(No)n(w)26 b(w)n(e)h(create)f(the)h(main)g
+(de.)722 3611 y Fd(\(make-instance)766 3711 y('node)766
+3811 y(:val)42 b(\(c?)g(\(apply)f(#'+)h(\(mapcar)f(#'val)g(\(kids)h
+(self\)\)\)\))515 3993 y Fk(No)n(w)26 b(w)n(e)h(create)f(the)h(main)g
 (no)r(de:)37 b(its)27 b(v)-5 b(alue)27 b(is)g(de\034ned)g(as)f(the)i
-(sum)f(of)g(all)f(its)i(c)n(hildren)515 2280 y(v)-5 b(alues.)36
+(sum)f(of)g(all)f(its)i(c)n(hildren)515 4093 y(v)-5 b(alues.)36
 b(T)-7 b(o)27 b(get)h(the)g(c)n(hildren)f(list)h(w)n(e)f(use)g(the)h
-(metho)r(d)g(\(kids)g(self)6 b(\).)722 2452 y Fg(:kids)722
-2552 y(\(c?)809 2651 y(\(the-kids)515 2824 y Fk(W)-7
+(metho)r(d)g(\(kids)g(self)6 b(\).)722 4276 y Fd(:kids)722
+4375 y(\(c?)809 4475 y(\(the-kids)515 4658 y Fk(W)-7
 b(e)31 b(sp)r(ecify)g(the)h(c)n(hildren)f(list)g(using)f(the)i(:kids)f
 (argumen)n(t.)46 b(the-kids)31 b(builds)g(a)g(list)g(of)515
-2923 y(c)n(hildren)25 b(using)h(the)h(follo)n(wing)e(argumen)n(ts.)35
+4757 y(c)n(hildren)25 b(using)h(the)h(follo)n(wing)e(argumen)n(ts.)35
 b(the-kids)25 b(also)g(remo)n(v)n(es)f(nil)j(kids)f(and)g(if)g(an)515
-3023 y(argumen)n(t)32 b(is)i(a)f(list)h(then)g(it)g(is)f(\035attened,)i
+4857 y(argumen)n(t)32 b(is)i(a)f(list)h(then)g(it)g(is)f(\035attened,)i
 (e.g.)55 b(\(the-kids)33 b(\(list)h(k1)f(\(list)h(\(list)h(k2)d(nil\))
-515 3122 y(k3\)\)\))c(will)f(return)g(a)h(list)f(with)h(the)g(kids)g
-(k1,)f(k2)g(and)g(k3.)722 3294 y Fg(\(make-kid)40 b('node)i(:md-name)e
-(:n5)i(:val)g(\(c-in)f(5\)\))515 3467 y Fk(This)30 b(is)f(the)i
-(\034rst)f(c)n(hild)f(of)h(the)h(main)f(no)r(de:)41 b(w)n(e)30
+515 4956 y(k3\)\)\))c(will)f(return)g(a)h(list)f(with)h(the)g(kids)g
+(k1,)f(k2)g(and)g(k3.)1926 5255 y(7)p eop end
+%%Page: 8 8
+TeXDict begin 8 7 bop 722 523 a Fd(\(make-kid)40 b('node)i(:md-name)e
+(:n5)i(:val)g(\(c-in)f(5\)\))515 700 y Fk(This)30 b(is)f(the)i(\034rst)
+f(c)n(hild)f(of)h(the)h(main)f(no)r(de:)41 b(w)n(e)30
 b(giv)n(e)f(it)h(a)g(name)g(with)g(the)g(:md-name)515
-3566 y(argumen)n(t)d(to)g(reference)g(the)i(no)r(de)f(through)f(it)h
-(in)g(the)h(future.)38 b(T)-7 b(o)28 b(create)f(an)g(instance)515
-3666 y(of)g(a)h(mo)r(del)g(in)n(tended)g(to)g(b)r(e)g(a)f(c)n(hild)h(y)
-n(ou)f(m)n(ust)h(sp)r(ecify)g(to)g(mak)n(e-instance)e(its)i(paren)n(t)
-515 3765 y(through)f(the)h(argumen)n(t)f(:fm-paren)n(t.)37
+800 y(argumen)n(t)d(to)g(reference)g(the)i(no)r(de)f(through)f(it)h(in)
+g(the)h(future.)38 b(T)-7 b(o)28 b(create)f(an)g(instance)515
+899 y(of)g(a)h(mo)r(del)g(in)n(tended)g(to)g(b)r(e)g(a)f(c)n(hild)h(y)n
+(ou)f(m)n(ust)h(sp)r(ecify)g(to)g(mak)n(e-instance)e(its)i(paren)n(t)
+515 999 y(through)f(the)h(argumen)n(t)f(:fm-paren)n(t.)37
 b(mak)n(e-kid)26 b(do)r(es)i(this)g(for)f(us)h(passing)f(self)h(as)f
-(the)515 3865 y(paren)n(t.)722 4037 y Fg(\(make-kid)766
-4137 y('node)766 4236 y(:val)42 b(\(c?)g(\(apply)f(#'*)h(\(mapcar)f
-(#'val)g(\(kids)h(self\)\)\)\))766 4336 y(:kids)766 4436
-y(\(c?)853 4535 y(\(the-kids)940 4635 y(\(make-kid)e('node)h(:md-name)g
-(:n7)h(:val)g(\(c-in)f(7\)\))940 4735 y(\(make-kid)f('node)h(:md-name)g
-(:n9)h(:val)g(\(c-in)f(9\)\)\)\)\))515 4907 y Fk(The)24
+(the)515 1098 y(paren)n(t.)722 1275 y Fd(\(make-kid)766
+1375 y('node)766 1475 y(:val)42 b(\(c?)g(\(apply)f(#'*)h(\(mapcar)f
+(#'val)g(\(kids)h(self\)\)\)\))766 1574 y(:kids)766 1674
+y(\(c?)853 1773 y(\(the-kids)940 1873 y(\(make-kid)e('node)h(:md-name)g
+(:n7)h(:val)g(\(c-in)f(7\)\))940 1973 y(\(make-kid)f('node)h(:md-name)g
+(:n9)h(:val)g(\(c-in)f(9\)\)\)\)\))515 2150 y Fk(The)24
 b(second)h(c)n(hild)f(of)h(the)g(main)g(no)r(de)f(has)g(t)n(w)n(o)g(c)n
 (hildren)h(and)f(its)h(v)-5 b(alue)25 b(is)f(the)h(pro)r(duct)515
-5006 y(of)i(their)h(v)-5 b(alues.)1926 5255 y(7)p eop
-end
-%%Page: 8 8
-TeXDict begin 8 7 bop 722 523 a Fg(\(format)41 b(t)i(&quot;value)e(of)i(the)
-f(tree)g(is)h(~a~\045&quot;)e(\(val)h(root\)\))722 623 y(\(setf)g(\(val)g
-(\(fm-other)d(:n7)k(:starting)c(root\)\))i(10\))722 722
-y(\(format)g(t)i(&quot;new)f(value)f(of)i(the)f(tree)g(is)h(~a~\045&quot;)e
-(\(val)h(root\)\)\)\))515 905 y Fk(The)19 b(b)r(o)r(dy)h(of)f(the)h
-(function)g(prin)n(ts)f(the)h(v)-5 b(alue)19 b(of)h(the)f(tree,)i(and)e
-(through)g(the)h(output)g(y)n(ou)515 1005 y(can)27 b(see)g(that)h(it)g
-(dep)r(ends)g(correctly)e(on)h(the)h(v)-5 b(alues)28
-b(of)f(its)h(c)n(hildren.)36 b(Then)28 b(w)n(e)f(c)n(hange)515
-1104 y(the)39 b(v)-5 b(alue)39 b(of)g(the)h(no)r(de)f(named)g(:n7)g
-(and)f(see)h(that)g(the)h(new)f(output)h(has)e(c)n(hanged)515
-1204 y(accordingly)-7 b(.)33 b(\(fm-other)24 b(&lt;mem)n(b)r(er-name&gt;)e
-(&lt;starting-p)r(oin)n(t&gt;\))g(searc)n(hes)g(the)i(family)515
-1303 y(tree)29 b(starting)g(from)h(&lt;starting-p)r(oin)n(t&gt;,)e(and)i
-(returns)f(the)h(ob)5 b(ject)29 b(named)h(&lt;mem)n(b)r(er-)515
-1403 y(name&gt;.)35 b(If)23 b(it)h(is)g(not)f(found,)i(and)e(error)e(is)j
-(raised.)34 b(&lt;starting-p)r(oin)n(t&gt;)21 b(is)j(optional,)f(and)515
-1503 y(it)28 b(defaults)g(to)g('self)6 b('.)39 b(W)-7
+2249 y(of)i(their)h(v)-5 b(alues.)722 2426 y Fd(\(format)41
+b(t)i(&quot;value)e(of)i(the)f(tree)g(is)h(~a~\045&quot;)e(\(val)h(root\)\))722
+2526 y(\(setf)g(\(val)g(\(fm-other)d(:n7)k(:starting)c(root\)\))i(10\))
+722 2625 y(\(format)g(t)i(&quot;new)f(value)f(of)i(the)f(tree)g(is)h
+(~a~\045&quot;)e(\(val)h(root\)\)\)\))515 2802 y Fk(The)19
+b(b)r(o)r(dy)h(of)f(the)h(function)g(prin)n(ts)f(the)h(v)-5
+b(alue)19 b(of)h(the)f(tree,)i(and)e(through)g(the)h(output)g(y)n(ou)
+515 2902 y(can)27 b(see)g(that)h(it)g(dep)r(ends)g(correctly)e(on)h
+(the)h(v)-5 b(alues)28 b(of)f(its)h(c)n(hildren.)36 b(Then)28
+b(w)n(e)f(c)n(hange)515 3002 y(the)39 b(v)-5 b(alue)39
+b(of)g(the)h(no)r(de)f(named)g(:n7)g(and)f(see)h(that)g(the)h(new)f
+(output)h(has)e(c)n(hanged)515 3101 y(accordingly)-7
+b(.)33 b(\(fm-other)24 b(&lt;mem)n(b)r(er-name&gt;)e(&lt;starting-p)r(oin)n
+(t&gt;\))g(searc)n(hes)g(the)i(family)515 3201 y(tree)29
+b(starting)g(from)h(&lt;starting-p)r(oin)n(t&gt;,)e(and)i(returns)f(the)h(ob)
+5 b(ject)29 b(named)h(&lt;mem)n(b)r(er-)515 3300 y(name&gt;.)35
+b(If)23 b(it)h(is)g(not)f(found,)i(and)e(error)e(is)j(raised.)34
+b(&lt;starting-p)r(oin)n(t&gt;)21 b(is)j(optional,)f(and)515
+3400 y(it)28 b(defaults)g(to)g('self)6 b('.)39 b(W)-7
 b(e)28 b(used)g(fm-other)g(outside)f(of)h(a)g(defmo)r(del,)g(so)g
-(there)f(is)h(no)g(self)515 1602 y(and)f(w)n(e)g(m)n(ust)h(supply)g(a)f
-(starting)f(p)r(oin)n(t.)515 1877 y Fm(5)131 b(De\034ning)44
-b(an)f(observ)l(er)515 2059 y Fk(Cells)26 b(lets)i(y)n(ou)e(de\034ne)h
+(there)f(is)h(no)g(self)515 3500 y(and)f(w)n(e)g(m)n(ust)h(supply)g(a)f
+(starting)f(p)r(oin)n(t.)515 3773 y Fn(5)131 b(De\034ning)44
+b(an)f(observ)l(er)515 3955 y Fk(Cells)26 b(lets)i(y)n(ou)e(de\034ne)h
 (a)f(function)i(to)f(execute)g(immediately)g(after)f(a)h(c-in)g(slot)f
-(is)h(mo)r(d-)515 2158 y(i\034ed.)60 b(This)35 b(function)h(is)f
+(is)h(mo)r(d-)515 4055 y(i\034ed.)60 b(This)35 b(function)h(is)f
 (called)g(an)g(\020observ)n(er\021.)56 b(T)-7 b(o)35
-b(de\034ne)h(it,)h(use)e(the)h(defobserv)n(er)515 2258
-y(construct:)722 2441 y Fg(\(defobserver)j(&lt;slot-name&gt;)g(\(&amp;optional)g
-(\(&lt;self&gt;)i(self\))2291 2540 y(\(&lt;new-value&gt;)e(old-value\))2291
-2640 y(\(&lt;old-value&gt;)g(new-value\))2291 2739 y(\(&lt;old-value-boun)o(dp)o
-(&gt;)f(old-value-bound)o(p\))o(\))809 2839 y(&lt;function-body&gt;\))515
-3022 y Fk(This)c(function)i(will)f(b)r(e)g(executed)g(ev)n(ery)e(time)j
+b(de\034ne)h(it,)h(use)e(the)h(defobserv)n(er)515 4154
+y(construct:)722 4331 y Fd(\(defobserver)j(&lt;slot-name&gt;)g(\(&amp;optional)g
+(\(&lt;self&gt;)i(self\))2291 4431 y(\(&lt;new-value&gt;)e(old-value\))2291
+4530 y(\(&lt;old-value&gt;)g(new-value\))2291 4630 y(\(&lt;old-value-boun)o(dp)o
+(&gt;)f(old-value-bound)o(p\))o(\))809 4730 y(&lt;function-body&gt;\))515
+4907 y Fk(This)c(function)i(will)f(b)r(e)g(executed)g(ev)n(ery)e(time)j
 (the)f(slot)f(&lt;slot-name&gt;)f(of)i(an)f(ob)5 b(ject)515
-3121 y(of)31 b(t)n(yp)r(e)h(&lt;mo)r(del-name&gt;)e(is)i(mo)r(di\034ed.)49
+5006 y(of)31 b(t)n(yp)r(e)h(&lt;mo)r(del-name&gt;)e(is)i(mo)r(di\034ed.)49
 b(&lt;old-v)-5 b(alue&gt;)30 b(will)h(hold)h(the)g(previous)e(v)-5
-b(alue)515 3221 y(of)34 b(the)h(slot,)h(&lt;new-v)-5 b(alue&gt;)33
-b(the)h(new)h(one)f(and)g(&lt;old-v)-5 b(alue-b)r(oundp&gt;)33
-b(will)h(b)r(e)h(nil)g(if)515 3321 y(this)27 b(is)h(the)f(\034rst)h
+b(alue)1926 5255 y(8)p eop end
+%%Page: 9 9
+TeXDict begin 9 8 bop 515 523 a Fk(of)34 b(the)h(slot,)h(&lt;new-v)-5
+b(alue&gt;)33 b(the)h(new)h(one)f(and)g(&lt;old-v)-5 b(alue-b)r(oundp&gt;)33
+b(will)h(b)r(e)h(nil)g(if)515 623 y(this)27 b(is)h(the)f(\034rst)h
 (time)f(the)h(slot)f(gets)g(a)g(v)-5 b(alue)27 b(and)g(t)h(otherwise.)
-36 b(If)28 b(not)f(giv)n(en,)g(&lt;self&gt;,)515 3420 y(&lt;new-v)-5
+36 b(If)28 b(not)f(giv)n(en,)g(&lt;self&gt;,)515 722 y(&lt;new-v)-5
 b(alue&gt;,)20 b(&lt;old-v)-5 b(alue&gt;)19 b(and)i(&lt;old-v)-5
 b(alue-b)r(oundp&gt;)19 b(will)i(default)g(to)f('self)6
-b(',)23 b('new-)515 3520 y(v)-5 b(alue',)26 b('old-v)-5
+b(',)23 b('new-)515 822 y(v)-5 b(alue',)26 b('old-v)-5
 b(alue')25 b(and)h('old-v)-5 b(alue-b)r(ound-p'.)35 b(In)26
 b(older)f(releases)f(of)i(cells)g(defobserv)n(er)515
-3619 y(w)n(as)g(called)h(def-c-output.)639 3719 y(Supp)r(ose)f(w)n(e)f
+922 y(w)n(as)g(called)h(def-c-output.)639 1021 y(Supp)r(ose)f(w)n(e)f
 (w)n(an)n(t)f(to)i(log)e(all)h(the)h(v)-5 b(alues)25
 b(that)g(the)h(n)n(um)g(slot)f(assumes:)34 b(w)n(e)25
-b(can)g(do)515 3819 y(this)j(de\034ning)f(an)g(observ)n(er)f(function.)
+b(can)g(do)515 1121 y(this)j(de\034ning)f(an)g(observ)n(er)f(function.)
 37 b(A)n(dd)28 b(the)g(follo)n(wing)e(lines)i(to)f(hello-cells.lisp:)
-722 4001 y Fg(\(defobserver)39 b(num)j(\(\(self)f(hello-cells\)\))809
-4101 y(\(format)g(t)i(\020new)f(value)g(of)g(num)h(is:)f(~a~\045\021)f
-(new-value\)\))515 4284 y Fk(No)n(w)27 b(reload)f(the)i(\034le)g(and)f
-(try)g(running)h(\(hello\))f(again:)722 4466 y Fg(&gt;)43
-b(\(load)f(\020hello-cells.lis)o(p\021)o(\))722 4566
-y(T)722 4666 y(&gt;)h(\(hello\))722 4765 y(new)g(value)e(of)i(num)f(is:)g
-(0)722 4865 y(new)h(value)e(of)i(num)f(is:)g(10)722 4964
-y(num)h(is)f(10)h(and)f(square-num)e(is)i(100)1926 5255
-y Fk(8)p eop end
-%%Page: 9 9
-TeXDict begin 9 8 bop 722 523 a Fg(new)43 b(value)e(of)i(num)f(is:)g
-(20)722 623 y(num)h(is)f(20)h(and)f(square-num)e(is)i(400)722
-722 y(new)h(value)e(of)i(num)f(is:)g(30)722 822 y(num)h(is)f(30)h(and)f
-(square-num)e(is)i(900)722 922 y(new)h(value)e(of)i(num)f(is:)g(40)722
-1021 y(num)h(is)f(40)h(and)f(square-num)e(is)i(1600)722
-1121 y(new)h(value)e(of)i(num)f(is:)g(50)722 1220 y(num)h(is)f(50)h
-(and)f(square-num)e(is)i(2500)722 1320 y(new)h(value)e(of)i(num)f(is:)g
-(60)722 1420 y(num)h(is)f(60)h(and)f(square-num)e(is)i(3600)722
-1519 y(num)h(is)f(60)h(and)f(square-num)e(is)i(3600)722
-1619 y(NIL)515 1793 y Fk(As)35 b(y)n(ou)g(can)g(see)g(from)g(the)h
-(output,)i(ev)n(ery)c(time)i(w)n(e)g(set)f(\(n)n(um)h(h\))g(with)g(a)f
-(di\033eren)n(t)515 1893 y(v)-5 b(alue,)28 b(the)g(action)f(previously)
-g(de\034ned)h(is)g(called.)38 b(This)27 b(also)g(happ)r(ens)h(when)g
-(\(n)n(um)h(h\))515 1993 y(is)23 b(initialized)i(for)e(the)h(\034rst)g
-(time)g(at)g(ob)5 b(ject)23 b(creation)g(time.)36 b(Y)-7
-b(ou)24 b(ma)n(y)f(ha)n(v)n(e)g(noted)h(that)515 2092
-y(when)c(w)n(e)h(set)f(\(n)n(um)h(h\))g(to)g(60)f(for)g(the)h(second)f
-(time,)i(the)f(observ)n(er)d(function)k(isn't)e(called:)515
-2192 y(this)30 b(is)f(b)r(ecause)h(when)f(y)n(ou)g(set)h(a)f(slot)h(to)
-f(a)h(new)f(v)-5 b(alue)30 b(that)g(is)f(the)i(same)e(\(according)515
-2291 y(to)d(the)h(function)h(eql\))f(as)f(its)h(old)f(one,)h(the)g(c)n
-(hange)e(isn't)j(propagated)c(b)r(ecause)j(there)f(is)515
-2391 y(no)h(need)h(to)f(propagate)f(it:)37 b(it)28 b(didn't)g(c)n
-(hange!)639 2491 y(No)n(w)f(lo)r(ok)g(at)h(the)g(follo)n(wing)e(piece)i
-(of)f(co)r(de:)722 2665 y Fg(\(defmodel)40 b(str-model)g(\(\))809
-2765 y(\(\(str)i(:accessor)e(str)i(:initform)e(\(c-in)h(&quot;&quot;\))h
-(:initarg)f(:str\))853 2864 y(\(rev-str)f(:accessor)g(rev-str)h
-(:initform)e(\(c?)k(\(reverse)d(\(str)i(self\)\)\)\)\)\))722
-2964 y(\(defobserver)d(str)j(\(\))809 3064 y(\(format)f(t)i
-(&quot;changed!~\045&quot;\)\))722 3163 y(\(defun)e(try-str-model)d(\(\))809
-3263 y(\(let)k(\(\(s)h(\(make-instance)37 b('str-model\)\)\))897
-3362 y(\(dolist)j(\(l)j(`\(&quot;Hello!&quot;)c(&quot;Bye&quot;)1463 3462
-y(,\(concatenate)f('string)j(&quot;By&quot;)h(&quot;e&quot;\))g(&quot;!olleH&quot;\)\))984
-3562 y(\(setf)f(\(str)h(s\))h(l\))984 3661 y(\(format)d(t)k(&quot;str)d(is)i
-(\\&quot;~a\\&quot;,)e(rev-str)f(is)j(\\&quot;~a\\&quot;~\045&quot;)1332 3761
-y(\(str)f(s\))h(\(rev-str)d(s\)\)\)\)\))515 3935 y Fk(It)34
+722 1300 y Fd(\(defobserver)39 b(num)j(\(\(self)f(hello-cells\)\))809
+1400 y(\(format)g(t)i(\020new)f(value)g(of)g(num)h(is:)f(~a~\045\021)f
+(new-value\)\))515 1579 y Fk(No)n(w)27 b(reload)f(the)i(\034le)g(and)f
+(try)g(running)h(\(hello\))f(again:)722 1758 y Fd(&gt;)43
+b(\(load)f(\020hello-cells.lis)o(p\021)o(\))722 1858
+y(T)722 1958 y(&gt;)h(\(hello\))722 2057 y(new)g(value)e(of)i(num)f(is:)g
+(0)722 2157 y(new)h(value)e(of)i(num)f(is:)g(10)722 2257
+y(num)h(is)f(10)h(and)f(square-num)e(is)i(100)722 2356
+y(new)h(value)e(of)i(num)f(is:)g(20)722 2456 y(num)h(is)f(20)h(and)f
+(square-num)e(is)i(400)722 2555 y(new)h(value)e(of)i(num)f(is:)g(30)722
+2655 y(num)h(is)f(30)h(and)f(square-num)e(is)i(900)722
+2755 y(new)h(value)e(of)i(num)f(is:)g(40)722 2854 y(num)h(is)f(40)h
+(and)f(square-num)e(is)i(1600)722 2954 y(new)h(value)e(of)i(num)f(is:)g
+(50)722 3054 y(num)h(is)f(50)h(and)f(square-num)e(is)i(2500)722
+3153 y(new)h(value)e(of)i(num)f(is:)g(60)722 3253 y(num)h(is)f(60)h
+(and)f(square-num)e(is)i(3600)722 3352 y(num)h(is)f(60)h(and)f
+(square-num)e(is)i(3600)722 3452 y(NIL)515 3631 y Fk(As)35
+b(y)n(ou)g(can)g(see)g(from)g(the)h(output,)i(ev)n(ery)c(time)i(w)n(e)g
+(set)f(\(n)n(um)h(h\))g(with)g(a)f(di\033eren)n(t)515
+3731 y(v)-5 b(alue,)28 b(the)g(action)f(previously)g(de\034ned)h(is)g
+(called.)38 b(This)27 b(also)g(happ)r(ens)h(when)g(\(n)n(um)h(h\))515
+3831 y(is)23 b(initialized)i(for)e(the)h(\034rst)g(time)g(at)g(ob)5
+b(ject)23 b(creation)g(time.)36 b(Y)-7 b(ou)24 b(ma)n(y)f(ha)n(v)n(e)g
+(noted)h(that)515 3930 y(when)c(w)n(e)h(set)f(\(n)n(um)h(h\))g(to)g(60)
+f(for)g(the)h(second)f(time,)i(the)f(observ)n(er)d(function)k(isn't)e
+(called:)515 4030 y(this)30 b(is)f(b)r(ecause)h(when)f(y)n(ou)g(set)h
+(a)f(slot)h(to)f(a)h(new)f(v)-5 b(alue)30 b(that)g(is)f(the)i(same)e
+(\(according)515 4130 y(to)d(the)h(function)h(eql\))f(as)f(its)h(old)f
+(one,)h(the)g(c)n(hange)e(isn't)j(propagated)c(b)r(ecause)j(there)f(is)
+515 4229 y(no)h(need)h(to)f(propagate)f(it:)37 b(it)28
+b(didn't)g(c)n(hange!)639 4329 y(No)n(w)f(lo)r(ok)g(at)h(the)g(follo)n
+(wing)e(piece)i(of)f(co)r(de:)722 4508 y Fd(\(defmodel)40
+b(str-model)g(\(\))809 4608 y(\(\(str)i(:accessor)e(str)i(:initform)e
+(\(c-in)h(&quot;&quot;\))h(:initarg)f(:str\))853 4707 y(\(rev-str)f(:accessor)g
+(rev-str)h(:initform)e(\(c?)k(\(reverse)d(\(str)i(self\)\)\)\)\)\))722
+4807 y(\(defobserver)d(str)j(\(\))809 4907 y(\(format)f(t)i
+(&quot;changed!~\045&quot;\)\))722 5006 y(\(defun)e(try-str-model)d(\(\))1926
+5255 y Fk(9)p eop end
+%%Page: 10 10
+TeXDict begin 10 9 bop 809 523 a Fd(\(let)42 b(\(\(s)h(\(make-instance)
+37 b('str-model\)\)\))897 623 y(\(dolist)j(\(l)j(`\(&quot;Hello!&quot;)c(&quot;Bye&quot;)
+1463 722 y(,\(concatenate)f('string)j(&quot;By&quot;)h(&quot;e&quot;\))g(&quot;!olleH&quot;\)\))984
+822 y(\(setf)f(\(str)h(s\))h(l\))984 922 y(\(format)d(t)k(&quot;str)d(is)i
+(\\&quot;~a\\&quot;,)e(rev-str)f(is)j(\\&quot;~a\\&quot;~\045&quot;)1332 1021
+y(\(str)f(s\))h(\(rev-str)d(s\)\)\)\)\))515 1196 y Fk(It)34
 b(do)r(es)f(nothing)h(new:)49 b(it)34 b(constrains)f(rev-str)f(to)i(b)r
 (e)g(the)g(rev)n(erse)e(of)i(str,)h(creates)d(an)515
-4035 y(instance)22 b(of)h(str-mo)r(del)f(and)g(prin)n(ts)h(some)f
+1295 y(instance)22 b(of)h(str-mo)r(del)f(and)g(prin)n(ts)h(some)f
 (strings)f(together)h(with)h(their)g(rev)n(erse.)33 b(It)23
-b(also)515 4134 y(logs)29 b(ev)n(ery)g(time)i(it)g(needs)f(to)h
+b(also)515 1395 y(logs)29 b(ev)n(ery)g(time)i(it)g(needs)f(to)h
 (compute)f(the)h(rev)n(ersed)e(string.)45 b(Note)30 b(that)h(the)g
-(second)515 4234 y(and)j(the)i(third)f(strings)e(of)i(the)g(list)g(are)
+(second)515 1494 y(and)j(the)i(third)f(strings)e(of)i(the)g(list)g(are)
 f(actually)g(equal.)59 b(Lets)34 b(try)h(to)f(run)h(the)g(co)r(de)515
-4334 y(\(supp)r(osing)27 b(y)n(ou)g(wrote)g(it)h(in)f
-(hello-cells.lisp\):)722 4508 y Fg(&gt;)43 b(\(load)f(\020hello-cells.lis)
-o(p\021)o(\))722 4608 y(T)722 4707 y(&gt;)h(\(try-str-model\))722
-4807 y(changed!)722 4907 y(changed!)722 5006 y(str)g(is)f(&quot;Hello!&quot;,)e
-(rev-str)h(is)h(&quot;!olleH&quot;)1926 5255 y Fk(9)p eop end
-%%Page: 10 10
-TeXDict begin 10 9 bop 722 523 a Fg(changed!)722 623
-y(str)43 b(is)f(&quot;Bye&quot;,)f(rev-str)g(is)i(&quot;eyB&quot;)722 722
-y(changed!)722 822 y(str)g(is)f(&quot;Bye&quot;,)f(rev-str)g(is)i(&quot;eyB&quot;)722
-922 y(changed!)722 1021 y(str)g(is)f(&quot;!olleH&quot;,)e(rev-str)h(is)h
-(&quot;Hello!&quot;)722 1121 y(NIL)515 1303 y Fk(The)37 b(rev)n(ersed)e(string)i
-(is)g(calculated)f Fh(every)46 b Fk(time)37 b(w)n(e)g(set)g(\(str)g
-(s\),)j(ev)n(en)d(when)g(w)n(e're)515 1403 y(c)n(hanging)30
+1594 y(\(supp)r(osing)27 b(y)n(ou)g(wrote)g(it)h(in)f
+(hello-cells.lisp\):)722 1768 y Fd(&gt;)43 b(\(load)f(\020hello-cells.lis)
+o(p\021)o(\))722 1868 y(T)722 1968 y(&gt;)h(\(try-str-model\))722
+2067 y(changed!)722 2167 y(changed!)722 2267 y(str)g(is)f(&quot;Hello!&quot;,)e
+(rev-str)h(is)h(&quot;!olleH&quot;)722 2366 y(changed!)722 2466
+y(str)h(is)f(&quot;Bye&quot;,)f(rev-str)g(is)i(&quot;eyB&quot;)722 2565 y(changed!)722
+2665 y(str)g(is)f(&quot;Bye&quot;,)f(rev-str)g(is)i(&quot;eyB&quot;)722 2765
+y(changed!)722 2864 y(str)g(is)f(&quot;!olleH&quot;,)e(rev-str)h(is)h(&quot;Hello!&quot;)
+722 2964 y(NIL)515 3138 y Fk(The)37 b(rev)n(ersed)e(string)i(is)g
+(calculated)f Fh(every)46 b Fk(time)37 b(w)n(e)g(set)g(\(str)g(s\),)j
+(ev)n(en)d(when)g(w)n(e're)515 3238 y(c)n(hanging)30
 b(it)i(from)g(\020By)n(e\021)37 b(to)32 b(\020By)n(e\021.)48
 b(But)32 b(\020By)n(e\021)37 b(and)31 b(\020By)n(e\021)38
-b(are)30 b(equal!)49 b(Wh)n(y)32 b(do)f(w)n(e)515 1503
+b(are)30 b(equal!)49 b(Wh)n(y)32 b(do)f(w)n(e)515 3337
 y(need)e(to)f(w)n(aste)g(time)h(rev)n(ersing)e(it)i(t)n(wice?)40
 b(Because)28 b(cells)h(b)n(y)f(default)h(uses)g(eql)f(to)h(test)515
-1602 y(for)h(equalit)n(y)f(and)i(if)g(t)n(w)n(o)e(strings)h(aren't)g
+3437 y(for)h(equalit)n(y)f(and)i(if)g(t)n(w)n(o)e(strings)h(aren't)g
 (the)h(same)f(string)f(\(i.e.)46 b(they)31 b(don't)f(ha)n(v)n(e)g(the)
-515 1702 y(same)f(memory)g(address\))g(eql)h(considers)f(them)i(to)e(b)
+515 3537 y(same)f(memory)g(address\))g(eql)h(considers)f(them)i(to)e(b)
 r(e)i(di\033eren)n(t.)44 b(The)30 b(follo)n(wing)f(piece)515
-1802 y(of)e(co)r(de)h(sho)n(ws)e(us)i(another)e(problem:)36
-b(supp)r(ose)28 b(w)n(e)f(c)n(hange)722 2084 y Fg(`\(&quot;Hello!&quot;)40
+3636 y(of)e(co)r(de)h(sho)n(ws)e(us)i(another)e(problem:)36
+b(supp)r(ose)28 b(w)n(e)f(c)n(hange)722 3910 y Fd(`\(&quot;Hello!&quot;)40
 b(&quot;Bye&quot;)h(,\(concatenate)d('string)j(&quot;By&quot;)h(&quot;e&quot;\))g(&quot;!olleH&quot;\))515
-2267 y Fk(to)722 2449 y Fg(`\(&quot;Hello!&quot;)e(&quot;Bye&quot;)h(&quot;Bye&quot;)h(&quot;!olleH&quot;\))515
-2632 y Fk(dep)r(ending)26 b(on)f(the)h(Common)g(Lisp)f(implemen)n
+4085 y Fk(to)722 4259 y Fd(`\(&quot;Hello!&quot;)e(&quot;Bye&quot;)h(&quot;Bye&quot;)h(&quot;!olleH&quot;\))515
+4433 y Fk(dep)r(ending)26 b(on)f(the)h(Common)g(Lisp)f(implemen)n
 (tation)h(y)n(ou)f(run)g(the)i(program)c(on)j(y)n(ou'll)515
-2731 y(ha)n(v)n(e)h(a)h(di\033eren)n(t)h(output!)40 b(Solving)27
+4533 y(ha)n(v)n(e)h(a)h(di\033eren)n(t)h(output!)40 b(Solving)27
 b(the)i(problem)f(is)g(easy)-7 b(,)28 b(w)n(e)g(just)h(need)g(to)f(use)
-h(equal)515 2831 y(instead)j(of)h(eql)f(as)g(the)h(equalit)n(y)f
+h(equal)515 4633 y(instead)j(of)h(eql)f(as)g(the)h(equalit)n(y)f
 (function.)52 b(T)-7 b(o)33 b(supply)f(y)n(our)g(o)n(wn)g(equalit)n(y)g
-(function)515 2931 y(pass)26 b(it)i(to)g(the)g(:unc)n(hanged-if)f
-(argumen)n(t)f(in)i(the)g(slot)f(de\034nition:)722 3113
-y Fg(\(str)42 b(:accessor)e(str)i(:initform)e(\(c-in)h(&quot;&quot;\))i(:initarg)
-d(:str)940 3213 y(:unchanged-if)e(#'equal\))515 3396
-y Fk(No)n(w)27 b(w)n(e)g(get)g(the)h(same)f(exp)r(ected)h(result)f(on)h
-(an)n(y)e(implemen)n(tation:)722 3578 y Fg(changed!)722
-3678 y(changed!)722 3778 y(str)43 b(is)f(&quot;Hello!&quot;,)e(rev-str)h(is)h
-(&quot;!olleH&quot;)722 3877 y(changed!)722 3977 y(str)h(is)f(&quot;Bye&quot;,)f(rev-str)g
-(is)i(&quot;eyB&quot;)722 4076 y(str)g(is)f(&quot;Bye&quot;,)f(rev-str)g(is)i(&quot;eyB&quot;)722
-4176 y(changed!)722 4276 y(str)g(is)f(&quot;!olleH&quot;,)e(rev-str)h(is)h
-(&quot;Hello!&quot;)722 4375 y(NIL)515 4558 y Fk(The)24 b(equalit)n(y)f(function)
-i(m)n(ust)f(accept)g(t)n(w)n(o)f(v)-5 b(alues:)35 b(the)24
-b(new)h(v)-5 b(alue)23 b(of)i(the)f(slot)g(and)g(the)515
-4658 y(old)j(one.)1905 5255 y(10)p eop end
+(function)515 4732 y(pass)26 b(it)i(to)g(the)g(:unc)n(hanged-if)f
+(argumen)n(t)f(in)i(the)g(slot)f(de\034nition:)722 4907
+y Fd(\(str)42 b(:accessor)e(str)i(:initform)e(\(c-in)h(&quot;&quot;\))i(:initarg)
+d(:str)940 5006 y(:unchanged-if)e(#'equal\))1905 5255
+y Fk(10)p eop end
 %%Page: 11 11
-TeXDict begin 11 10 bop 515 523 a Fm(6)131 b(Lazy)44
-b(cells)515 705 y Fk(Ruled)35 b(cells)g(are)f(ev)-5 b(aluated,)37
-b(as)d(w)n(e)h(ha)n(v)n(e)f(already)f(seen,)k(at)e(instance)g(creation)
-f(time)515 804 y(and)g(after)h(dep)r(enden)n(t)g(cells)f(c)n(hange.)57
+TeXDict begin 11 10 bop 515 523 a Fk(No)n(w)27 b(w)n(e)g(get)g(the)h
+(same)f(exp)r(ected)h(result)f(on)h(an)n(y)e(implemen)n(tation:)722
+704 y Fd(changed!)722 804 y(changed!)722 904 y(str)43
+b(is)f(&quot;Hello!&quot;,)e(rev-str)h(is)h(&quot;!olleH&quot;)722 1003 y(changed!)722
+1103 y(str)h(is)f(&quot;Bye&quot;,)f(rev-str)g(is)i(&quot;eyB&quot;)722 1202
+y(str)g(is)f(&quot;Bye&quot;,)f(rev-str)g(is)i(&quot;eyB&quot;)722 1302 y(changed!)722
+1402 y(str)g(is)f(&quot;!olleH&quot;,)e(rev-str)h(is)h(&quot;Hello!&quot;)722
+1501 y(NIL)515 1683 y Fk(The)24 b(equalit)n(y)f(function)i(m)n(ust)f
+(accept)g(t)n(w)n(o)f(v)-5 b(alues:)35 b(the)24 b(new)h(v)-5
+b(alue)23 b(of)i(the)f(slot)g(and)g(the)515 1782 y(old)j(one.)515
+2057 y Fn(6)131 b(Lazy)44 b(cells)515 2238 y Fk(Ruled)35
+b(cells)g(are)f(ev)-5 b(aluated,)37 b(as)d(w)n(e)h(ha)n(v)n(e)f
+(already)f(seen,)k(at)e(instance)g(creation)f(time)515
+2338 y(and)g(after)h(dep)r(enden)n(t)g(cells)f(c)n(hange.)57
 b(Ho)n(w)n(ev)n(er,)35 b(y)n(ou)f(ma)n(y)f(w)n(an)n(t)h(to)h
-Fh(not)42 b Fk(ev)-5 b(aluate)34 b(a)515 904 y(ruled)28
+Fh(not)42 b Fk(ev)-5 b(aluate)34 b(a)515 2438 y(ruled)28
 b(cell)g(un)n(til)h(it)g(is)f(really)g(needed,)g(i.e.)40
 b(when)28 b(the)h(program)d(asks)i(for)g(its)g(v)-5 b(alue.)39
-b(T)-7 b(o)515 1004 y(ac)n(hiev)n(e)26 b(suc)n(h)i(a)g(b)r(eha)n(vior,)
+b(T)-7 b(o)515 2537 y(ac)n(hiev)n(e)26 b(suc)n(h)i(a)g(b)r(eha)n(vior,)
 e(y)n(ou)i(can)f(use)h(lazy)f(cells.)38 b(There)28 b(are)f(three)h(t)n
-(yp)r(es)g(of)f(them,)515 1103 y(dep)r(ending)h(on)f(their)g(laziness:)
-616 1286 y(1.)41 b(:once-ask)n(ed)20 b(this)h(will)h(get)f(ev)-5
+(yp)r(es)g(of)f(them,)515 2637 y(dep)r(ending)h(on)f(their)g(laziness:)
+616 2818 y(1.)41 b(:once-ask)n(ed)20 b(this)h(will)h(get)f(ev)-5
 b(aluated/observ)n(ed)19 b(on)i(initialization,)i(but)f(w)n(on't)f(b)r
-(e)722 1386 y(reev)-5 b(aluated)21 b(immediately)h(if)g(dep)r
+(e)722 2918 y(reev)-5 b(aluated)21 b(immediately)h(if)g(dep)r
 (endencies)g(c)n(hange,)g(rather)e(only)i(when)g(read)e(b)n(y)722
-1485 y(application)27 b(co)r(de.)616 1651 y(2.)41 b(:un)n(til-ask)n(ed)
+3017 y(application)27 b(co)r(de.)616 3183 y(2.)41 b(:un)n(til-ask)n(ed)
 21 b(this)i(do)r(es)f(not)g(get)g(ev)-5 b(aluated/observ)n(ed)20
-b(un)n(til)i(read)g(b)n(y)g(application)722 1751 y(co)r(de,)39
+b(un)n(til)i(read)g(b)n(y)g(application)722 3283 y(co)r(de,)39
 b(but)e(then)g(it)g(b)r(ecomes)f(un-lazy)-7 b(,)38 b(eagerly)c(re-ev)-5
-b(aluated)36 b(as)f(so)r(on)h(as)g(an)n(y)722 1851 y(dep)r(endency)28
+b(aluated)36 b(as)f(so)r(on)h(as)g(an)n(y)722 3382 y(dep)r(endency)28
 b(c)n(hanges)e(\(not)i(w)n(aiting)f(un)n(til)h(ask)n(ed\).)616
-2017 y(3.)41 b(:alw)n(a)n(ys)23 b(this)i(isn't)f(ev)-5
+3548 y(3.)41 b(:alw)n(a)n(ys)23 b(this)i(isn't)f(ev)-5
 b(aluated/observ)n(ed)22 b(un)n(til)j(read,)f(and)h(not)f(reev)-5
-b(aluated)24 b(un)n(til)722 2116 y(read)j(after)g(a)g(dep)r(endency)h
-(c)n(hanges.)515 2299 y(There)35 b(are)f(t)n(w)n(o)h(w)n(a)n(ys)f(in)i
+b(aluated)24 b(un)n(til)722 3647 y(read)j(after)g(a)g(dep)r(endency)h
+(c)n(hanges.)515 3829 y(There)35 b(are)f(t)n(w)n(o)h(w)n(a)n(ys)f(in)i
 (whic)n(h)g(a)f(cell)h(can)f(b)r(e)h(lazy:)52 b(b)n(y)36
-b(not)f(b)r(eing)h(ev)-5 b(aluated)35 b(im-)515 2399
+b(not)f(b)r(eing)h(ev)-5 b(aluated)35 b(im-)515 3928
 y(mediately)29 b(after)g(its)g(creation)f(and)h(b)n(y)g(not)g(resp)r
 (onding)g(to)g(dep)r(endencies)g(c)n(hange.)41 b(In)515
-2498 y(b)r(oth)34 b(cases,)g(when)f(the)h(program)e(asks)g(for)h(its)h
+4028 y(b)r(oth)34 b(cases,)g(when)f(the)h(program)e(asks)g(for)h(its)h
 (v)-5 b(alue,)35 b(the)f(lazy)f(cell)h(is)f(ev)-5 b(aluated)33
-b(\(if)515 2598 y(needed\).)j(The)24 b(\034rst)g(t)n(yp)r(e)g(em)n(b)r
+b(\(if)515 4128 y(needed\).)j(The)24 b(\034rst)g(t)n(yp)r(e)g(em)n(b)r
 (o)r(dies)h(only)e(the)i(second)f(w)n(a)n(y)-7 b(,)23
-b(the)i(second)f(t)n(yp)r(e)g(only)g(the)515 2697 y(\034rst)i(w)n(a)n
+b(the)i(second)f(t)n(yp)r(e)g(only)g(the)515 4227 y(\034rst)i(w)n(a)n
 (y)f(and)i(the)g(third)f(t)n(yp)r(e)h(is)g(lazy)e(in)i(b)r(oth)g(w)n(a)
 n(ys.)35 b(The)27 b(follo)n(wing)e(example)h(sho)n(ws)515
-2797 y(the)i(b)r(eha)n(vior)e(of)h(lazy)g(cells:)722
-2980 y Fg(\(defmodel)40 b(lazy-test)g(\(\))809 3079 y(\(\(lazy-1)h
+4327 y(the)i(b)r(eha)n(vior)e(of)h(lazy)g(cells:)722
+4508 y Fd(\(defmodel)40 b(lazy-test)g(\(\))809 4608 y(\(\(lazy-1)h
 (:accessor)e(lazy-1)i(:initform)f(\(c-formula)g(\(:lazy)h
-(:once-asked\))2465 3179 y(\(append)g(\(val)h(self\))f(\(list)h
-('!!\)\)\)\))853 3279 y(\(lazy-2)f(:accessor)e(lazy-2)i(:initform)f
-(\(c_?)i(\(val)g(self\)\)\))853 3378 y(\(lazy-3)f(:accessor)e(lazy-3)i
+(:once-asked\))2465 4707 y(\(append)g(\(val)h(self\))f(\(list)h
+('!!\)\)\)\))853 4807 y(\(lazy-2)f(:accessor)e(lazy-2)i(:initform)f
+(\(c_?)i(\(val)g(self\)\)\))853 4907 y(\(lazy-3)f(:accessor)e(lazy-3)i
 (:initform)f(\(c?_)i(\(reverse)e(\(val)i(self\)\)\)\))853
-3478 y(\(val)g(:accessor)e(val)i(:initarg)e(:val)i(:initform)e(\(c-in)h
-(nil\)\)\)\))722 3577 y(\(defobserver)e(lazy-1)i(\(\))809
-3677 y(\(format)g(t)i(&quot;evaluating)c(lazy-1!~\045&quot;\)\))722
-3777 y(\(defobserver)g(lazy-2)i(\(\))809 3876 y(\(format)g(t)i
-(&quot;evaluating)c(lazy-2!~\045&quot;\)\))722 3976 y(\(defobserver)g(lazy-3)i
-(\(\))809 4076 y(\(format)g(t)i(&quot;evaluating)c(lazy-3!~\045&quot;\)\))722
-4175 y(\(defun)i(print-lazies)e(\(l\))809 4275 y(\(format)i(t)i
-(&quot;Printing)d(all)i(the)h(values:~\045&quot;\))809 4374 y(\(format)e(t)i
-(&quot;lazy-3:)d(~a~\045&quot;)i(\(lazy-3)e(l\)\))809 4474 y(\(format)h(t)i
-(&quot;lazy-2:)d(~a~\045&quot;)i(\(lazy-2)e(l\)\))809 4574 y(\(format)h(t)i
-(&quot;lazy-1:)d(~a~\045&quot;)i(\(lazy-1)e(l\)\)\))722 4673 y(\(defun)h
-(try-lazies)f(\(\))809 4773 y(\(let)i(\(\(l)h(\(make-instance)37
-b('lazy-test)j(:val)h(\(c-in)h('\(Im)g(very)g(lazy!\)\)\)\)\))897
-4873 y(\(format)e(t)j(&quot;Initialization)38 b(finished~\045&quot;\))897
-4972 y(\(print-lazies)g(l\))1905 5255 y Fk(11)p eop end
+5006 y(\(val)g(:accessor)e(val)i(:initarg)e(:val)i(:initform)e(\(c-in)h
+(nil\)\)\)\))1905 5255 y Fk(11)p eop end
 %%Page: 12 12
-TeXDict begin 12 11 bop 897 523 a Fg(\(format)40 b(t)j(&quot;Changing)d
-(val~\045&quot;\))897 623 y(\(setf)h(\(val)h(l\))h('\(who)e(will)h(be)h
-(evaluated?\)\))897 722 y(\(print-lazies)38 b(l\)\)\))515
-871 y Fk(As)27 b(usual,)h(load)e(it)i(and)g(run)f(it:)722
-1020 y Fg(&gt;)43 b(\(load)f(\020hello-cells.lis)o(p\021)o(\))722
-1119 y(T)722 1219 y(&gt;)h(\(try-lazies\))722 1319 y(evaluating)d(lazy-1!)
-722 1418 y(Initialization)e(finished)722 1518 y(Printing)i(all)j(the)f
-(values:)722 1617 y(evaluating)e(lazy-3!)722 1717 y(lazy-3:)h(\(LAZY!)g
-(VERY)h(IM\))722 1817 y(evaluating)e(lazy-2!)722 1916
-y(lazy-2:)h(\(IM)h(VERY)g(LAZY!\))722 2016 y(lazy-1:)f(\(IM)h(VERY)g
-(LAZY!)g(!!\))722 2116 y(Changing)e(val)722 2215 y(evaluating)g
-(lazy-2!)722 2315 y(Printing)g(all)j(the)f(values:)722
-2414 y(evaluating)e(lazy-3!)722 2514 y(lazy-3:)h(\(EVALUATED?)e(BE)k
-(WILL)e(WHO\))722 2614 y(lazy-2:)g(\(WHO)h(WILL)g(BE)g(EVALUATED?\))722
-2713 y(evaluating)e(lazy-1!)722 2813 y(lazy-1:)h(\(WHO)h(WILL)g(BE)g
-(EVALUATED?)e(!!\))722 2913 y(NIL)515 3061 y Fk(As)31
+TeXDict begin 12 11 bop 722 523 a Fd(\(defobserver)39
+b(lazy-1)i(\(\))809 623 y(\(format)g(t)i(&quot;evaluating)c
+(lazy-1!~\045&quot;\)\))722 722 y(\(defobserver)g(lazy-2)i(\(\))809
+822 y(\(format)g(t)i(&quot;evaluating)c(lazy-2!~\045&quot;\)\))722
+922 y(\(defobserver)g(lazy-3)i(\(\))809 1021 y(\(format)g(t)i
+(&quot;evaluating)c(lazy-3!~\045&quot;\)\))722 1121 y(\(defun)i(print-lazies)e
+(\(l\))809 1220 y(\(format)i(t)i(&quot;Printing)d(all)i(the)h
+(values:~\045&quot;\))809 1320 y(\(format)e(t)i(&quot;lazy-3:)d(~a~\045&quot;)i
+(\(lazy-3)e(l\)\))809 1420 y(\(format)h(t)i(&quot;lazy-2:)d(~a~\045&quot;)i
+(\(lazy-2)e(l\)\))809 1519 y(\(format)h(t)i(&quot;lazy-1:)d(~a~\045&quot;)i
+(\(lazy-1)e(l\)\)\))722 1619 y(\(defun)h(try-lazies)f(\(\))809
+1719 y(\(let)i(\(\(l)h(\(make-instance)37 b('lazy-test)j(:val)h(\(c-in)
+h('\(Im)g(very)g(lazy!\)\)\)\)\))897 1818 y(\(format)e(t)j
+(&quot;Initialization)38 b(finished~\045&quot;\))897 1918 y(\(print-lazies)g(l\))
+897 2017 y(\(format)i(t)j(&quot;Changing)d(val~\045&quot;\))897
+2117 y(\(setf)h(\(val)h(l\))h('\(who)e(will)h(be)h(evaluated?\)\))897
+2217 y(\(print-lazies)38 b(l\)\)\))515 2383 y Fk(As)27
+b(usual,)h(load)e(it)i(and)g(run)f(it:)722 2549 y Fd(&gt;)43
+b(\(load)f(\020hello-cells.lis)o(p\021)o(\))722 2648
+y(T)722 2748 y(&gt;)h(\(try-lazies\))722 2848 y(evaluating)d(lazy-1!)722
+2947 y(Initialization)e(finished)722 3047 y(Printing)i(all)j(the)f
+(values:)722 3147 y(evaluating)e(lazy-3!)722 3246 y(lazy-3:)h(\(LAZY!)g
+(VERY)h(IM\))722 3346 y(evaluating)e(lazy-2!)722 3445
+y(lazy-2:)h(\(IM)h(VERY)g(LAZY!\))722 3545 y(lazy-1:)f(\(IM)h(VERY)g
+(LAZY!)g(!!\))722 3645 y(Changing)e(val)722 3744 y(evaluating)g
+(lazy-2!)722 3844 y(Printing)g(all)j(the)f(values:)722
+3944 y(evaluating)e(lazy-3!)722 4043 y(lazy-3:)h(\(EVALUATED?)e(BE)k
+(WILL)e(WHO\))722 4143 y(lazy-2:)g(\(WHO)h(WILL)g(BE)g(EVALUATED?\))722
+4242 y(evaluating)e(lazy-1!)722 4342 y(lazy-1:)h(\(WHO)h(WILL)g(BE)g
+(EVALUATED?)e(!!\))722 4442 y(NIL)515 4608 y Fk(As)31
 b(y)n(ou)f(can)h(see)f(from)h(the)g(co)r(de,)h(to)f(declare)e(a)i
 (ruled)g(cell)g(to)g(b)r(e)g(lazy)f(y)n(ou)g(just)i(need)515
-3161 y(to)24 b(use)h(the)f(three)h(constructs)e(\(c-form)n(ula)h
+4707 y(to)24 b(use)h(the)f(three)h(constructs)e(\(c-form)n(ula)h
 (\(:lazy)g(:one-ask)n(ed\))f(...\),)j(\(c_?)35 b(...\))i(and)24
-b(\(c?_)515 3261 y(...\))56 b(for)33 b(:once-ask)n(ed,)g(:un)n(til-ask)
+b(\(c?_)515 4807 y(...\))56 b(for)33 b(:once-ask)n(ed,)g(:un)n(til-ask)
 n(ed)g(and)g(:alw)n(a)n(ys)f(lazy)h(cells,)i(resp)r(ectiv)n(ely)-7
-b(.)55 b(lazy-1)32 b(is)515 3360 y(ev)-5 b(aluated)25
+b(.)55 b(lazy-1)32 b(is)515 4907 y(ev)-5 b(aluated)25
 b(immediately)-7 b(,)26 b(lazy-2)e(and)h(lazy-3)f(only)h(when)h(they)f
-(are)g(needed)g(b)n(y)h(format.)515 3460 y(After)32 b(setting)h(\(v)-5
+(are)g(needed)g(b)n(y)h(format.)515 5006 y(After)32 b(setting)h(\(v)-5
 b(al)32 b(l\),)i(on)e(whic)n(h)g(all)g(the)h(lazy)e(cells)h(dep)r(end,)
-i(lazy-2)d(is)h(re-ev)-5 b(aluated)515 3559 y(immediately)34
-b(b)r(ecause)f(it)i(is)f(of)g(t)n(yp)r(e)g(:un)n(til-ask)n(ed,)h(while)
-f(lazy-1)e(b)r(ecomes)i(lazy)f(and)515 3659 y(lazy-3)k(remains)h(lazy)
--7 b(,)41 b(so)d(these)g(t)n(w)n(o)g(p)r(ostp)r(one)h(ev)-5
+i(lazy-2)d(is)h(re-ev)-5 b(aluated)1905 5255 y(12)p eop
+end
+%%Page: 13 13
+TeXDict begin 13 12 bop 515 523 a Fk(immediately)34 b(b)r(ecause)f(it)i
+(is)f(of)g(t)n(yp)r(e)g(:un)n(til-ask)n(ed,)h(while)f(lazy-1)e(b)r
+(ecomes)i(lazy)f(and)515 623 y(lazy-3)k(remains)h(lazy)-7
+b(,)41 b(so)d(these)g(t)n(w)n(o)g(p)r(ostp)r(one)h(ev)-5
 b(aluation)38 b(un)n(til)h(w)n(e)f(ask)g(for)g(their)515
-3759 y(v)-5 b(alues)27 b(in)h(the)g(call)f(to)g(format.)639
-3858 y(As)g(a)g(side)g(note,)g(suc)n(h)f(short)g(names)h(ma)n(y)f(not)h
+722 y(v)-5 b(alues)27 b(in)h(the)g(call)f(to)g(format.)639
+822 y(As)g(a)g(side)g(note,)g(suc)n(h)f(short)g(names)h(ma)n(y)f(not)h
 (b)r(e)g(v)n(ery)f(easy)g(to)g(remem)n(b)r(er)g(and)h(to)515
-3958 y(read,)j(but)h(those)f(constructs)g(are)g(so)f(common)h(that)h(y)
-n(ou'll)f(\034nd)h(y)n(ourself)e(using)i(them)515 4058
+922 y(read,)j(but)h(those)f(constructs)g(are)g(so)f(common)h(that)h(y)n
+(ou'll)f(\034nd)h(y)n(ourself)e(using)i(them)515 1021
 y(a)26 b(lot,)h(and)f(y)n(ou'll)h(appreciate)e(their)i(conciseness.)35
 b(If)27 b(y)n(ou)f(still)h(prefer)f(long)g(descriptiv)n(e)515
-4157 y(names,)f(though,)g(y)n(ou)f(can)g(use)h(the)g(c-form)n(ula)e
-(construct)i(instead)f(of)h(c?/c_?/c?_)e(and)515 4257
+1121 y(names,)f(though,)g(y)n(ou)f(can)g(use)h(the)g(c-form)n(ula)e
+(construct)i(instead)f(of)h(c?/c_?/c?_)e(and)515 1220
 y(c-input)28 b(instead)f(of)h(c-in)f(\(see)g(the)h(\020F)-7
 b(unctions)28 b(&amp;)f(macros)f(reference\021)33 b(section\).)515
-4526 y Fm(7)131 b(Drifters)515 4707 y Fk(Another)31 b(t)n(yp)r(e)i(of)f
+1495 y Fn(7)131 b(Drifters)515 1677 y Fk(Another)31 b(t)n(yp)r(e)i(of)f
 (cells)f(are)g(drifter)h(cells.)50 b(A)32 b(drifter)g(cell)g(acts)f
-(lik)n(e)h(a)g(ruled)f(cell,)i(but)515 4807 y(the)h(v)-5
+(lik)n(e)h(a)g(ruled)f(cell,)i(but)515 1776 y(the)h(v)-5
 b(alue)34 b(returned)f(b)n(y)h(its)g(b)r(o)r(dy)h(is)e(in)n(terpreted)h
 (as)f(an)h(incremen)n(t,)h(so)f(after)f(it)i(has)515
-4907 y(b)r(een)d(re-ev)-5 b(aluated)30 b(its)h(v)-5 b(alue)31
+1876 y(b)r(een)d(re-ev)-5 b(aluated)30 b(its)h(v)-5 b(alue)31
 b(b)r(ecomes)g(its)h(previous)e(one)h(plus)h(the)f(one)g(returned)g(b)n
-(y)515 5006 y(the)d(b)r(o)r(dy)-7 b(.)37 b(The)27 b(follo)n(wing)g
-(example)g(sho)n(ws)f(drifter)i(cells)f(in)h(action:)1905
-5255 y(12)p eop end
-%%Page: 13 13
-TeXDict begin 13 12 bop 722 523 a Fg(\(defmodel)40 b(counter)h(\(\))809
-623 y(\(\(how-many)f(:accessor)g(how-many)1289 722 y(:initform)g
-(\(c...)h(\(0\))1812 822 y(\(length)f(\(^current-elems\)\))o(\)\))853
-922 y(\(current-elems)e(:accessor)h(current-elems)1507
-1021 y(:initform)g(\(c-in)j(nil\)\)\)\))722 1121 y(\(defun)f
-(try-counter)e(\(\))809 1220 y(\(let)j(\(\(m)h(\(make-instance)37
-b('counter\)\)\))897 1320 y(\(dolist)j(\(l)j('\(\(1)f(2)h(3\))g(\(4)f
-(5\))h(\(1)g(2)g(3)g(4\)\)\))984 1420 y(\(setf)e(\(current-elems)d(m\))
-43 b(l\))984 1519 y(\(format)d(t)k(&quot;current)c(elements:)f(~{~a)j
-(~}~\045&quot;)g(\(current-elems)37 b(m\)\))984 1619 y(\(format)j(t)k(&quot;~a)e
-(elements)e(seen)i(so)h(far~\045&quot;)e(\(how-many)e(m\)\)\)\)\))515
-1802 y Fk(try-coun)n(ter)19 b(iterates)i(other)f(a)h(list)g(setting)g
+(y)515 1976 y(the)d(b)r(o)r(dy)-7 b(.)37 b(The)27 b(follo)n(wing)g
+(example)g(sho)n(ws)f(drifter)i(cells)f(in)h(action:)722
+2158 y Fd(\(defmodel)40 b(counter)h(\(\))809 2258 y(\(\(how-many)f
+(:accessor)g(how-many)1289 2358 y(:initform)g(\(c...)h(\(0\))1812
+2457 y(\(length)f(\(^current-elems\)\))o(\)\))853 2557
+y(\(current-elems)e(:accessor)h(current-elems)1507 2656
+y(:initform)g(\(c-in)j(nil\)\)\)\))722 2756 y(\(defun)f(try-counter)e
+(\(\))809 2856 y(\(let)j(\(\(m)h(\(make-instance)37 b('counter\)\)\))
+897 2955 y(\(dolist)j(\(l)j('\(\(1)f(2)h(3\))g(\(4)f(5\))h(\(1)g(2)g(3)
+g(4\)\)\))984 3055 y(\(setf)e(\(current-elems)d(m\))43
+b(l\))984 3155 y(\(format)d(t)k(&quot;current)c(elements:)f(~{~a)j(~}~\045&quot;)
+g(\(current-elems)37 b(m\)\))984 3254 y(\(format)j(t)k(&quot;~a)e(elements)e
+(seen)i(so)h(far~\045&quot;)e(\(how-many)e(m\)\)\)\)\))515
+3437 y Fk(try-coun)n(ter)19 b(iterates)i(other)f(a)h(list)g(setting)g
 (curren)n(t-elems)f(to)h(a)g(list)g(of)g(v)-5 b(alues,)22
-b(and)f(after)515 1901 y(eac)n(h)27 b(iteration)g(ho)n(w-man)n(y)g
+b(and)f(after)515 3536 y(eac)n(h)27 b(iteration)g(ho)n(w-man)n(y)g
 (will)h(hold)g(the)h(total)f(n)n(um)n(b)r(er)f(of)h(the)h(elemen)n(ts)f
-(within)h(the)515 2001 y(lists)e(seen)h(so)e(far.)37
-b(The)27 b(output)h(will)g(b)r(e:)722 2183 y Fg(&gt;)43
-b(\(load)f(\020hello-cells.lis)o(p\021)o(\))722 2283
-y(T)722 2383 y(&gt;)h(\(try-counter\))722 2482 y(elements:)d(1)j(2)g(3)722
-2582 y(3)g(elements)e(seen)h(so)g(far)722 2682 y(elements:)e(4)j(5)722
-2781 y(5)g(elements)e(seen)h(so)g(far)722 2881 y(elements:)e(1)j(2)g(3)
-h(4)722 2980 y(9)f(elements)e(seen)h(so)g(far)722 3080
-y(NIL)515 3263 y Fk(The)27 b(imp)r(ortan)n(t)h(passage)d(in)j(the)g(co)
-r(de)f(is)h(the)g(initialization)f(of)g(ho)n(w-man)n(y:)722
-3445 y Fg(\(c...)42 b(\(0\))809 3545 y(\(length)f(\(^current-elems\))o
-(\)\))515 3728 y Fk(\(^curren)n(t-elems\))28 b(is)i(just)g(a)f
-(shortcut)g(for)g(\(curren)n(t-elems)f(self)6 b(\).)44
-b(The)30 b(construct)f(\(c...)515 3827 y(\(&lt;initial-v)-5
-b(alue&gt;\))42 b(&lt;b)r(o)r(dy&gt;\))h(creates)e(a)i(drifter)g(cell)f(whose)h
-(initial)g(v)-5 b(alue)43 b(will)g(b)r(e)515 3927 y(&lt;initial-v)-5
-b(alue&gt;,)24 b(in)h(this)g(case)f(0.)35 b(When)25 b(curren)n(t-elems)e
-(c)n(hanges,)h(\(length)h(\(^curren)n(t-)515 4027 y(elems\)\))e(is)g
-(re-ev)-5 b(aluated,)23 b(and)g(its)h(v)-5 b(alue)23
-b(is)g(summed)g(to)g(ho)n(w-man)n(y)-7 b(,)23 b(so)f(ho)n(w-man)n(y)g
-(will)515 4126 y(hold)27 b(the)h(total)f(n)n(um)n(b)r(er)h(of)f(elemen)
-n(ts)h(that)f(curren)n(t-elems)g(has)g(held)g(so)g(far.)515
-4401 y Fm(8)131 b(Cyclic)46 b(dep)t(endencies)515 4583
-y Fk(It)27 b(is)f(p)r(ossible)g(to)g(write)h(co)r(de)f(with)h(cyclic)f
-(dep)r(endencies:)37 b(when)26 b(A)h(c)n(hanges)e(y)n(ou)h(need)515
-4682 y(to)34 b(tak)n(e)g(some)g(action)f(that)i(c)n(hanges)e(B,)h(whic)
-n(h)h(in)f(turn)h(sets)f(A,)h(but)g(A)g(has)f(still)g(to)515
-4782 y(complete)22 b(running)h(the)g(co)r(de)f(needed)h(to)f(k)n(eep)g
-(it)h(in)g(a)g(consisten)n(t)f(state.)35 b(The)22 b(follo)n(wing)515
-4881 y(co)r(de)27 b(sho)n(ws)g(ho)n(w)f(this)i(situation)g(could)f
-(arise:)1905 5255 y(13)p eop end
+(within)h(the)515 3636 y(lists)e(seen)h(so)e(far.)37
+b(The)27 b(output)h(will)g(b)r(e:)722 3819 y Fd(&gt;)43
+b(\(load)f(\020hello-cells.lis)o(p\021)o(\))722 3918
+y(T)722 4018 y(&gt;)h(\(try-counter\))722 4118 y(elements:)d(1)j(2)g(3)722
+4217 y(3)g(elements)e(seen)h(so)g(far)722 4317 y(elements:)e(4)j(5)722
+4416 y(5)g(elements)e(seen)h(so)g(far)722 4516 y(elements:)e(1)j(2)g(3)
+h(4)722 4616 y(9)f(elements)e(seen)h(so)g(far)722 4715
+y(NIL)515 4898 y Fk(The)27 b(imp)r(ortan)n(t)h(passage)d(in)j(the)g(co)
+r(de)f(is)h(the)g(initialization)f(of)g(ho)n(w-man)n(y:)1905
+5255 y(13)p eop end
 %%Page: 14 14
-TeXDict begin 14 13 bop 722 523 a Fg(\(defmodel)40 b(cycle)i(\(\))809
-623 y(\(\(cycle-a)e(:accessor)g(cycle-a)h(:initform)e(\(c-in)j(nil\)\))
-853 722 y(\(cycle-b)e(:accessor)g(cycle-b)h(:initform)e(\(c-in)j
-(nil\)\)\)\))722 822 y(\(defobserver)d(cycle-a)h(\(\))809
-922 y(\(setf)i(\(cycle-b)e(self\))i(new-value\)\))722
-1021 y(\(defobserver)d(cycle-b)h(\(\))809 1121 y(\(setf)i(\(cycle-a)e
-(self\))i(new-value\)\))722 1220 y(\(defun)f(try-cycle)f(\(\))809
-1320 y(\(let)i(\(\(m)h(\(make-instance)37 b('cycle\)\)\))897
-1420 y(\(setf)k(\(cycle-a)f(m\))j('\(?)f(!\)\))897 1519
+TeXDict begin 14 13 bop 722 523 a Fd(\(c...)42 b(\(0\))809
+623 y(\(length)f(\(^current-elems\))o(\)\))515 791 y
+Fk(\(^curren)n(t-elems\))28 b(is)i(just)g(a)f(shortcut)g(for)g
+(\(curren)n(t-elems)f(self)6 b(\).)44 b(The)30 b(construct)f(\(c...)515
+891 y(\(&lt;initial-v)-5 b(alue&gt;\))42 b(&lt;b)r(o)r(dy&gt;\))h(creates)e(a)i
+(drifter)g(cell)f(whose)h(initial)g(v)-5 b(alue)43 b(will)g(b)r(e)515
+990 y(&lt;initial-v)-5 b(alue&gt;,)24 b(in)h(this)g(case)f(0.)35
+b(When)25 b(curren)n(t-elems)e(c)n(hanges,)h(\(length)h(\(^curren)n(t-)
+515 1090 y(elems\)\))e(is)g(re-ev)-5 b(aluated,)23 b(and)g(its)h(v)-5
+b(alue)23 b(is)g(summed)g(to)g(ho)n(w-man)n(y)-7 b(,)23
+b(so)f(ho)n(w-man)n(y)g(will)515 1189 y(hold)27 b(the)h(total)f(n)n(um)
+n(b)r(er)h(of)f(elemen)n(ts)h(that)f(curren)n(t-elems)g(has)g(held)g
+(so)g(far.)515 1461 y Fn(8)131 b(Cyclic)46 b(dep)t(endencies)515
+1643 y Fk(It)27 b(is)f(p)r(ossible)g(to)g(write)h(co)r(de)f(with)h
+(cyclic)f(dep)r(endencies:)37 b(when)26 b(A)h(c)n(hanges)e(y)n(ou)h
+(need)515 1743 y(to)34 b(tak)n(e)g(some)g(action)f(that)i(c)n(hanges)e
+(B,)h(whic)n(h)h(in)f(turn)h(sets)f(A,)h(but)g(A)g(has)f(still)g(to)515
+1843 y(complete)22 b(running)h(the)g(co)r(de)f(needed)h(to)f(k)n(eep)g
+(it)h(in)g(a)g(consisten)n(t)f(state.)35 b(The)22 b(follo)n(wing)515
+1942 y(co)r(de)27 b(sho)n(ws)g(ho)n(w)f(this)i(situation)g(could)f
+(arise:)722 2110 y Fd(\(defmodel)40 b(cycle)i(\(\))809
+2210 y(\(\(cycle-a)e(:accessor)g(cycle-a)h(:initform)e(\(c-in)j
+(nil\)\))853 2310 y(\(cycle-b)e(:accessor)g(cycle-b)h(:initform)e
+(\(c-in)j(nil\)\)\)\))722 2409 y(\(defobserver)d(cycle-a)h(\(\))809
+2509 y(\(setf)i(\(cycle-b)e(self\))i(new-value\)\))722
+2609 y(\(defobserver)d(cycle-b)h(\(\))809 2708 y(\(setf)i(\(cycle-a)e
+(self\))i(new-value\)\))722 2808 y(\(defun)f(try-cycle)f(\(\))809
+2907 y(\(let)i(\(\(m)h(\(make-instance)37 b('cycle\)\)\))897
+3007 y(\(setf)k(\(cycle-a)f(m\))j('\(?)f(!\)\))897 3107
 y(\(format)e(t)j(&quot;~a)g(and)f(~a&quot;)g(\(cycle-a)e(m\))j(\(cycle-b)d
-(m\)\)\)\))515 1702 y Fk(When)33 b(try-cycle)f(sets)g(cycle-a,)h(its)g
+(m\)\)\)\))515 3275 y Fk(When)33 b(try-cycle)f(sets)g(cycle-a,)h(its)g
 (observ)n(er)d(gets)i(called,)i(whic)n(h)f(sets)f(cycle-b)g(whic)n(h)
-515 1802 y(in)g(turn)g(sets)g(cycle-a.)49 b(This)32 b(is)g(not)g(an)g
+515 3375 y(in)g(turn)g(sets)g(cycle-a.)49 b(This)32 b(is)g(not)g(an)g
 (in\034nite)h(cycle)f(as)f(it)i(ma)n(y)e(seem,)i(b)r(ecause)f(the)515
-1901 y(second)e(time)h(w)n(e)f(set)h(cycle-a)e(w)n(e)i(giv)n(e)e(it)i
+3474 y(second)e(time)h(w)n(e)f(set)h(cycle-a)e(w)n(e)i(giv)n(e)e(it)i
 (the)g(same)f(v)-5 b(alue)31 b(w)n(e)f(ga)n(v)n(e)f(it)i(the)g(\034rst)
-g(time,)515 2001 y(so)g(the)i(cells)f(engine)g(should)g(stop)g(the)h
+g(time,)515 3574 y(so)g(the)i(cells)f(engine)g(should)g(stop)g(the)h
 (propagation.)49 b(Lets)32 b(see)g(if)h(this)g(do)r(es)f(actually)515
-2100 y(w)n(ork:)722 2283 y Fg(&gt;)43 b(\(load)f(\020hello-cells.lis)o
-(p\021)o(\))722 2383 y(T)722 2482 y(&gt;)h(\(try-cycle\))722
-2582 y(SETF)f(of)h(&lt;2:A)f(CYCLE-B/NIL)d(=)k(NIL&gt;)f(must)g(be)g
+3673 y(w)n(ork:)722 3842 y Fd(&gt;)43 b(\(load)f(\020hello-cells.lis)o
+(p\021)o(\))722 3941 y(T)722 4041 y(&gt;)h(\(try-cycle\))722
+4141 y(SETF)f(of)h(&lt;2:A)f(CYCLE-B/NIL)d(=)k(NIL&gt;)f(must)g(be)g
 (deferred)f(by)h(wrapping)e(code)i(in)h(WITH-INTEGRITY)853
-2682 y([Condition)c(of)k(type)f(SIMPLE-ERROR])515 2864
+4240 y([Condition)c(of)k(type)f(SIMPLE-ERROR])515 4408
 y Fk(The)26 b(message)f(could)h(v)-5 b(ary)26 b(dep)r(ending)g(on)h(y)n
-(our)e(Common)h(Lisp)g(implemen)n(tation,)g(but)515 2964
+(our)e(Common)h(Lisp)g(implemen)n(tation,)g(but)515 4508
 y(one)31 b(thing)g(is)g(clear:)44 b(the)31 b(co)r(de)g(do)r(esn't)h(w)n
 (ork.)46 b(This)32 b(happ)r(ens)f(b)r(ecause)g(when)g(w)n(e)g(set)515
-3064 y(cycle-a)36 b(for)h(the)h(second)f(time,)k(its)d(observ)n(er)d
+4608 y(cycle-a)36 b(for)h(the)h(second)f(time,)k(its)d(observ)n(er)d
 (is)i(still)h(running,)i(so)d(cycle-a)f(could)i(b)r(e)515
-3163 y(in)h(an)g(inconsisten)n(t)g(state.)71 b(The)39
+4707 y(in)h(an)g(inconsisten)n(t)g(state.)71 b(The)39
 b(error)e(message)h(tells)h(us)g(the)h(solution:)59 b(wrap)39
-b(the)515 3263 y(problematic)f(co)r(de)i(inside)f(the)h(with-in)n
+b(the)515 4807 y(problematic)f(co)r(de)i(inside)f(the)h(with-in)n
 (tegrit)n(y)f(construct,)j(whic)n(h)d(mak)n(es)g(sure)g(that)515
-3362 y(cycle-a)30 b(is)h(consisten)n(t)g(when)h(that)g(piece)f(of)h(co)
+4907 y(cycle-a)30 b(is)h(consisten)n(t)g(when)h(that)g(piece)f(of)h(co)
 r(de)f(is)h(run.)48 b(The)32 b(same)f(problem)f(exists)515
-3462 y(for)d(cycle-b)g(and)g(the)h(solution)f(is)h(the)g(same.)36
-b(W)-7 b(e)28 b(need)f(then)h(to)g(c)n(hange)722 3645
-y Fg(\(defobserver)39 b(cycle-a)h(\(\))809 3744 y(\(setf)i(\(cycle-b)e
-(self\))i(new-value\)\))515 3927 y Fk(to)722 4110 y Fg(\(defobserver)d
-(cycle-a)h(\(\))809 4209 y(\(with-integrity)e(\(:change\))897
-4309 y(\(setf)j(\(cycle-b)f(self\))i(new-value\)\)\))515
-4491 y Fk(and)722 4674 y Fg(\(defobserver)d(cycle-b)h(\(\))809
-4774 y(\(setf)i(\(cycle-a)e(self\))i(new-value\)\))515
-4956 y Fk(to)1905 5255 y(14)p eop end
+5006 y(for)d(cycle-b)g(and)g(the)h(solution)f(is)h(the)g(same.)36
+b(W)-7 b(e)28 b(need)f(then)h(to)g(c)n(hange)1905 5255
+y(14)p eop end
 %%Page: 15 15
-TeXDict begin 15 14 bop 722 523 a Fg(\(defobserver)39
-b(cycle-b)h(\(\))809 623 y(\(with-integrity)e(\(:change\))897
-722 y(\(setf)j(\(cycle-a)f(self\))i(new-value\)\)\))515
-905 y Fk(No)n(w)27 b(if)i(w)n(e)f(reload)f(the)h(co)r(de)g(and)g(run)g
+TeXDict begin 15 14 bop 722 523 a Fd(\(defobserver)39
+b(cycle-a)h(\(\))809 623 y(\(setf)i(\(cycle-b)e(self\))i(new-value\)\))
+515 805 y Fk(to)722 988 y Fd(\(defobserver)d(cycle-a)h(\(\))809
+1088 y(\(with-integrity)e(\(:change\))897 1187 y(\(setf)j(\(cycle-b)f
+(self\))i(new-value\)\)\))515 1370 y Fk(and)722 1553
+y Fd(\(defobserver)d(cycle-b)h(\(\))809 1652 y(\(setf)i(\(cycle-a)e
+(self\))i(new-value\)\))515 1835 y Fk(to)722 2017 y Fd(\(defobserver)d
+(cycle-b)h(\(\))809 2117 y(\(with-integrity)e(\(:change\))897
+2217 y(\(setf)j(\(cycle-a)f(self\))i(new-value\)\)\))515
+2399 y Fk(No)n(w)27 b(if)i(w)n(e)f(reload)f(the)h(co)r(de)g(and)g(run)g
 (it)g(w)n(e'll)g(get)g(the)h(correct)d(result.)39 b(Mak)n(e)27
-b(sure)g(to)515 1005 y(call)g(\(cells-reset\))g(after)g(an)g(error)f
-(has)h(o)r(ccurred.)722 1187 y Fg(&gt;)43 b(\(cells-reset\))722
-1287 y(NIL)722 1386 y(&gt;)g(\(load)f(\020hello-cells.lis)o(p\021)o(\))722
-1486 y(T)722 1586 y(&gt;)h(\(try-cycle\))722 1685 y(\(?)g(!\))g(and)f(\(?)
-h(!\))722 1785 y(NIL)515 2059 y Fm(9)131 b(Synapses)515
-2241 y Fk(Supp)r(ose)30 b(that)h(y)n(ou)e(ha)n(v)n(e)h(a)g(cell)g(A)h
-(that)f(dep)r(ends)h(on)f(another)f(cell)i(B,)f(but)h(y)n(ou)f(w)n(an)n
-(t)515 2341 y(A)d(to)f(c)n(hange)f(only)h(when)h(B)f(c)n(hanges)f(b)n
-(y)h(an)g(amoun)n(t)g(o)n(v)n(er)f(a)h(giv)n(en)f(threshold,)i(ma)n(yb)
-r(e)515 2441 y(b)r(ecause)g(B)h(receiv)n(es)e(data)i(from)f(an)h
-(external)f(prob)r(e)g(and)h(y)n(ou)f(don't)h(w)n(an)n(t)f(A)h(to)g(o)n
-(v)n(er-)515 2540 y(react)j(to)h(small)f(\035uctuations.)50
-b(Synapses)31 b(let)i(y)n(ou)e(do)g(this,)j(and)e(they)g(giv)n(e)f(y)n
-(ou)g(more)515 2640 y(con)n(trol)f(o)n(v)n(er)h(the)h(constrain)n(t)f
-(propagation)f(system.)50 b(Basically)-7 b(,)31 b(using)h(synapses)f(y)
-n(ou)515 2739 y(can)37 b(tell)g(the)h(system)f(if)h(a)f(c)n(hange)f
-(should)h(b)r(e)h(propagated)d(or)i(not.)66 b(The)37
-b(follo)n(wing)515 2839 y(example)27 b(sho)n(ws)f(a)h(\020clo)r(c)n
-(k\021)33 b(that)28 b(c)n(hanges)e(only)i(after)f(a)g(minimal)h(amoun)n
-(t)f(of)g(time:)722 3022 y Fg(\(defmodel)40 b(syn-time)g(\(\))809
-3121 y(\(\(current-time)e(:accessor)i(current-time)e(:initarg)j
-(:current-time)1463 3221 y(:initform)f(\(c-in)h(0\)\))853
-3321 y(\(wait-time)e(:accessor)h(wait-time)g(:initarg)g(:wait-time)f
-(:initform)h(\(c-in)i(0\)\))853 3420 y(\(time-elapsed)c(:accessor)i
-(time-elapsed)1463 3520 y(:initform)1463 3619 y(\(c?)1550
-3719 y(\(f-sensitivity)e(:syn)k(\(\(wait-time)d(self\)\))1637
-3819 y(\(current-time)f(self\)\)\)\)\)\))722 3918 y(\(defun)j
-(try-syn-time)e(\(\))809 4018 y(\(let)j(\(\(tm)g(\(make-instance)c
-('syn-time)i(:wait-time)f(\(c-in)i(2\)\)\)\))897 4118
-y(\(dotimes)f(\(n)j(10\))984 4217 y(\(format)d(t)k(&quot;time)d(+1~\045&quot;\))
-984 4317 y(\(incf)g(\(current-time)d(tm\)\))984 4416
-y(\(format)i(t)k(&quot;time-elapsed)38 b(is)k(~a~\045&quot;)g(\(time-elapsed)c
-(tm\)\)\)\)\))515 4599 y Fk(time-elapsed)d(holds)g(the)i(same)e(v)-5
-b(alue)36 b(of)f(curren)n(t-time,)i(but)g(it)f(c)n(hanges)f(only)g
-(when)515 4699 y(curren)n(t-time)23 b(c)n(hanges)f(b)n(y)i(at)g(least)f
-(w)n(ait-time)h(units.)36 b(In)24 b(the)h(main)e(function)i(w)n(e)f
-(sim)n(u-)515 4798 y(late)j(time)g(with)h(a)f(lo)r(op)f(that)i
-(incremen)n(ts)e(curren)n(t-time)g(b)n(y)h(one)g(unit)h(and)f(then)g
-(sho)n(ws)515 4898 y(elapsed-time.)36 b(The)28 b(most)f(imp)r(ortan)n
-(t)g(part)g(of)h(the)g(program)d(is)1905 5255 y(15)p
-eop end
+b(sure)g(to)515 2499 y(call)g(\(cells-reset\))g(after)g(an)g(error)f
+(has)h(o)r(ccurred.)722 2682 y Fd(&gt;)43 b(\(cells-reset\))722
+2781 y(NIL)722 2881 y(&gt;)g(\(load)f(\020hello-cells.lis)o(p\021)o(\))722
+2980 y(T)722 3080 y(&gt;)h(\(try-cycle\))722 3180 y(\(?)g(!\))g(and)f(\(?)
+h(!\))722 3279 y(NIL)515 3554 y Fn(9)131 b(Synapses)515
+3752 y Fm(9.1)112 b(Built-in)35 b(synapses)515 3906 y
+Fk(Supp)r(ose)30 b(that)h(y)n(ou)e(ha)n(v)n(e)h(a)g(cell)g(A)h(that)f
+(dep)r(ends)h(on)f(another)f(cell)i(B,)f(but)h(y)n(ou)f(w)n(an)n(t)515
+4005 y(A)d(to)f(c)n(hange)f(only)h(when)h(B)f(c)n(hanges)f(b)n(y)h(an)g
+(amoun)n(t)g(o)n(v)n(er)f(a)h(giv)n(en)f(threshold,)i(ma)n(yb)r(e)515
+4105 y(b)r(ecause)g(B)h(receiv)n(es)e(data)i(from)f(an)h(external)f
+(prob)r(e)g(and)h(y)n(ou)f(don't)h(w)n(an)n(t)f(A)h(to)g(o)n(v)n(er-)
+515 4204 y(react)j(to)h(small)f(\035uctuations.)50 b(Synapses)31
+b(let)i(y)n(ou)e(do)g(this,)j(and)e(they)g(giv)n(e)f(y)n(ou)g(more)515
+4304 y(con)n(trol)f(o)n(v)n(er)h(the)h(constrain)n(t)f(propagation)f
+(system.)50 b(Basically)-7 b(,)31 b(using)h(synapses)f(y)n(ou)515
+4404 y(can)37 b(tell)g(the)h(system)f(if)h(a)f(c)n(hange)f(should)h(b)r
+(e)h(propagated)d(or)i(not.)66 b(The)37 b(follo)n(wing)515
+4503 y(example)27 b(sho)n(ws)f(a)h(\020clo)r(c)n(k\021)33
+b(that)28 b(c)n(hanges)e(only)i(after)f(a)g(minimal)h(amoun)n(t)f(of)g
+(time:)722 4686 y Fd(\(defmodel)40 b(syn-time)g(\(\))809
+4786 y(\(\(current-time)e(:accessor)i(current-time)e(:initarg)j
+(:current-time)1463 4885 y(:initform)f(\(c-in)h(0\)\))853
+4985 y(\(wait-time)e(:accessor)h(wait-time)g(:initarg)g(:wait-time)f
+(:initform)h(\(c-in)i(0\)\))1905 5255 y Fk(15)p eop end
 %%Page: 16 16
-TeXDict begin 16 15 bop 722 523 a Fg(\(f-sensitivity)38
-b(:syn)k(\(\(wait-time)d(self\)\))809 623 y(\(current-time)g(self\)\))
-515 783 y Fk(Here)29 b(w)n(e)h(create)f(a)g(synapse)g(named)h(:syn.)43
-b(It)30 b(is)g(of)g(t)n(yp)r(e)g(f-sensitivit)n(y:)41
-b(\(curren)n(t-time)515 883 y(self)6 b(\))37 b(is)f(ev)-5
-b(aluated)37 b Fh(always)p Fk(,)j(but)d(if)g(the)g(di\033erence)f(b)r
-(et)n(w)n(een)h(the)f(previously)g(propa-)515 983 y(gated)c(v)-5
-b(alue)32 b(\(if)i(there)e(is)h(one\))f(and)h(the)g(v)-5
-b(alue)32 b(it)h(returns)f(is)h(lesser)e(than)i(\(w)n(ait-time)515
-1082 y(self)6 b(\),)35 b(then)f(the)f(slot)g(elapsed-time)f(w)n(on't)h
+TeXDict begin 16 15 bop 853 523 a Fd(\(time-elapsed)38
+b(:accessor)i(time-elapsed)1463 623 y(:initform)1463
+722 y(\(c?)1550 822 y(\(f-sensitivity)e(:syn)k(\(\(wait-time)d
+(self\)\))1637 922 y(\(current-time)f(self\)\)\)\)\)\))722
+1021 y(\(defun)j(try-syn-time)e(\(\))809 1121 y(\(let)j(\(\(tm)g
+(\(make-instance)c('syn-time)i(:wait-time)f(\(c-in)i(2\)\)\)\))897
+1220 y(\(dotimes)f(\(n)j(10\))984 1320 y(\(format)d(t)k(&quot;time)d
+(+1~\045&quot;\))984 1420 y(\(incf)g(\(current-time)d(tm\)\))984
+1519 y(\(format)i(t)k(&quot;time-elapsed)38 b(is)k(~a~\045&quot;)g
+(\(time-elapsed)c(tm\)\)\)\)\))515 1694 y Fk(time-elapsed)d(holds)g
+(the)i(same)e(v)-5 b(alue)36 b(of)f(curren)n(t-time,)i(but)g(it)f(c)n
+(hanges)f(only)g(when)515 1793 y(curren)n(t-time)23 b(c)n(hanges)f(b)n
+(y)i(at)g(least)f(w)n(ait-time)h(units.)36 b(In)24 b(the)h(main)e
+(function)i(w)n(e)f(sim)n(u-)515 1893 y(late)j(time)g(with)h(a)f(lo)r
+(op)f(that)i(incremen)n(ts)e(curren)n(t-time)g(b)n(y)h(one)g(unit)h
+(and)f(then)g(sho)n(ws)515 1993 y(elapsed-time.)36 b(The)28
+b(most)f(imp)r(ortan)n(t)g(part)g(of)h(the)g(program)d(is)722
+2167 y Fd(\(f-sensitivity)38 b(:syn)k(\(\(wait-time)d(self\)\))809
+2267 y(\(current-time)g(self\)\))515 2441 y Fk(Here)29
+b(w)n(e)h(create)f(a)g(synapse)g(named)h(:syn.)43 b(It)30
+b(is)g(of)g(t)n(yp)r(e)g(f-sensitivit)n(y:)41 b(\(curren)n(t-time)515
+2540 y(self)6 b(\))37 b(is)f(ev)-5 b(aluated)37 b Fh(always)p
+Fk(,)j(but)d(if)g(the)g(di\033erence)f(b)r(et)n(w)n(een)h(the)f
+(previously)g(propa-)515 2640 y(gated)c(v)-5 b(alue)32
+b(\(if)i(there)e(is)h(one\))f(and)h(the)g(v)-5 b(alue)32
+b(it)h(returns)f(is)h(lesser)e(than)i(\(w)n(ait-time)515
+2740 y(self)6 b(\),)35 b(then)f(the)f(slot)g(elapsed-time)f(w)n(on't)h
 (c)n(hange)f(and,)i(consequen)n(tly)-7 b(,)34 b(nothing)f(will)515
-1182 y(b)r(e)28 b(propagated.)35 b(The)27 b(exp)r(ected)h(result)f
-(then)h(will)g(b)r(e:)722 1343 y Fg(&gt;)43 b(\(load)f
-(\020hello-cells.lis)o(p\021)o(\))722 1442 y(T)722 1542
-y(&gt;)h(\(try-syn-time\))722 1642 y(time)f(+1)722 1741
-y(time-elapsed)d(is)k(0)722 1841 y(time)f(+1)722 1941
-y(time-elapsed)d(is)k(2)722 2040 y(time)f(+1)722 2140
-y(time-elapsed)d(is)k(2)722 2239 y(time)f(+1)722 2339
-y(time-elapsed)d(is)k(4)722 2439 y(time)f(+1)722 2538
-y(time-elapsed)d(is)k(4)722 2638 y(time)f(+1)722 2738
-y(time-elapsed)d(is)k(6)722 2837 y(time)f(+1)722 2937
-y(time-elapsed)d(is)k(6)722 3036 y(time)f(+1)722 3136
-y(time-elapsed)d(is)k(8)722 3236 y(time)f(+1)722 3335
-y(time-elapsed)d(is)k(8)722 3435 y(time)f(+1)722 3535
-y(time-elapsed)d(is)k(10)722 3634 y(NIL)515 3795 y Fk(time-elapsed)23
-b(c)n(hanges)f(only)h(when)h(the)f(accum)n(ulated)g(di\033erence)h(is)f
-(at)g(least)g(w)n(ait-time)515 3895 y(\(2)k(in)h(this)g(case\).)36
-b(Other)27 b(synapses)f(a)n(v)-5 b(ailable)27 b(are)f(f-delta,)i
-(f-plusp,)g(f-zerop.)515 4165 y Fm(10)131 b(Example:)58
-b(pla)l(ying)45 b(sudoku)515 4347 y Fk(W)-7 b(e)25 b(ha)n(v)n(e)g(seen)
-g(a)f(few)i(example)f(of)g(using)g(cells,)h(but)g(none)f(of)g(them)h
-(actually)e(did)i(some-)515 4447 y(thing)i(b)r(eside)g(sho)n(wing)f
-(cells)h(b)r(eha)n(vior.)37 b(No)n(w)27 b(w)n(e)h(will)g(see)g(ho)n(w)g
-(to)g(use)g(cells)f(to)h(aid)g(us)515 4547 y(resolving)e(a)h(sudoku)g
-(puzzle.)37 b(First)27 b(of)h(all,)f(some)g(constan)n(ts:)722
-4707 y Fg(\(defparameter)38 b(*all-values*)h('\(1)j(2)h(3)g(4)h(5)f(6)g
-(7)g(8)g(9\)\))722 4807 y(\(defparameter)38 b(*row-len*)i(9\))722
-4907 y(\(defparameter)e(*sq-size*)i(3\))722 5006 y(\(defparameter)e
-(*col-len*)i(9\))1905 5255 y Fk(16)p eop end
+2839 y(b)r(e)28 b(propagated.)35 b(The)27 b(exp)r(ected)h(result)f
+(then)h(will)g(b)r(e:)722 3014 y Fd(&gt;)43 b(\(load)f
+(\020hello-cells.lis)o(p\021)o(\))722 3113 y(T)722 3213
+y(&gt;)h(\(try-syn-time\))722 3313 y(time)f(+1)722 3412
+y(time-elapsed)d(is)k(0)722 3512 y(time)f(+1)722 3611
+y(time-elapsed)d(is)k(2)722 3711 y(time)f(+1)722 3811
+y(time-elapsed)d(is)k(2)722 3910 y(time)f(+1)722 4010
+y(time-elapsed)d(is)k(4)722 4110 y(time)f(+1)722 4209
+y(time-elapsed)d(is)k(4)722 4309 y(time)f(+1)722 4408
+y(time-elapsed)d(is)k(6)722 4508 y(time)f(+1)722 4608
+y(time-elapsed)d(is)k(6)722 4707 y(time)f(+1)722 4807
+y(time-elapsed)d(is)k(8)722 4907 y(time)f(+1)722 5006
+y(time-elapsed)d(is)k(8)1905 5255 y Fk(16)p eop end
 %%Page: 17 17
-TeXDict begin 17 16 bop 515 523 a Fk(The)26 b(input)h(b)r(oard)e(is)i
+TeXDict begin 17 16 bop 722 523 a Fd(time)42 b(+1)722
+623 y(time-elapsed)d(is)k(10)722 722 y(NIL)515 904 y
+Fk(time-elapsed)23 b(c)n(hanges)f(only)h(when)h(the)f(accum)n(ulated)g
+(di\033erence)h(is)f(at)g(least)g(w)n(ait-time)515 1004
+y(\(2)k(in)h(this)g(case\).)36 b(Other)27 b(synapses)f(a)n(v)-5
+b(ailable)27 b(are)f(f-delta,)i(f-plusp,)g(f-zerop.)515
+1236 y Fm(9.2)112 b(De\034ning)37 b(y)m(our)h(o)m(wn)515
+1389 y Fk(As)26 b(it)h(frequen)n(tly)f(happ)r(ens,)g(y)n(ou)g(ma)n(y)f
+(need)i(a)e(t)n(yp)r(e)i(of)f(synapse)f(that)i(is)f(not)g(a)n(v)-5
+b(ailable.)515 1489 y(In)22 b(this)g(case,)g(y)n(ou)f(can)g(de\034ne)h
+(y)n(our)f(o)n(wn)g(synapses)f(using)i(the)g(construct)f(with-synapse.)
+722 1671 y Fd(\(with-synapse)38 b(&lt;id&gt;)k(\(&amp;rest)f(&lt;vars&gt;\))809
+1771 y(&lt;body&gt;\))515 1952 y Fk(&lt;v)-5 b(ars&gt;)29 b(is)j(a)f(v)-5
+b(alid)31 b(v)-5 b(ariable)30 b(declaration)g(list)i(suc)n(h)f(as)g
+(that)g(of)h(the)g(let)f(form.)48 b(These)515 2052 y(v)-5
+b(ariables)37 b(are)g(created)g(and)i(initialized)f(the)h(\034rst)f
+(time)g(&lt;b)r(o)r(dy&gt;)g(is)g(executed,)j(and)515 2152
+y(they)25 b(retain)g(their)g(v)-5 b(alue)25 b(from)f(call)h(to)g(call,)
+g(so)g(that)g(y)n(ou)g(can)f(use)h(them)h(to)f(carry)e(state)515
+2251 y(b)r(et)n(w)n(een)g(di\033eren)n(t)h(re-ev)-5 b(aluations)21
+b(of)j(&lt;b)r(o)r(dy&gt;.)35 b(&lt;b)r(o)r(dy&gt;)22 b(should)i(return)f(t)n(w)n
+(o)f(v)-5 b(alues:)515 2351 y(the)36 b(v)-5 b(alue)35
+b(to)h(return)f(and)g(one)g(k)n(eyw)n(ord)f(out)i(of)f(:propagate)f
+(and)h(:no-propagate)e(to)515 2451 y(indicate)c(if)g(the)h(v)-5
+b(alue)28 b(should)h(b)r(e)g(propagated)f(or)g(not.)41
+b(F)-7 b(or)28 b(example,)h(w)n(e)g(could)f(ha)n(v)n(e)515
+2550 y(a)f(ruled)g(cell)h(that)g(propagates)d(only)i(when)h(another)e
+(cell)i(is)f(o)r(dd:)722 2732 y Fd(\(defmodel)40 b(my-syn-test)f(\(\))
+809 2832 y(\(\(num)j(:accessor)e(num)i(:initform)e(\(c-in)h(0\)\))853
+2931 y(\(odd-num)f(:reader)h(odd-num)1245 3031 y(:initform)f(\(c?)1768
+3131 y(\(with-synapse)e(:odd-syn)i(\(\))1855 3230 y(\(if)j(\(oddp)e
+(\(^num\)\))2030 3330 y(\(values)f(\(^num\))h(:propagate\)\))2030
+3430 y(\(values)f(nil)i(:no-propagate\)\)\)\))o(\)\))o(\))722
+3629 y(\(defobserver)d(odd-num)h(\(\))809 3728 y(\(when)i
+(old-value-boundp)897 3828 y(\(format)e(t)j(&quot;Propagated!~\045&quot;\)\))o
+(\))722 4027 y(\(defun)e(try-my-syn)f(\(\))809 4127 y(\(let)i(\(\(m)h
+(\(make-instance)37 b('my-syn-test\)\)\))897 4227 y(\(dolist)j(\(n)j
+('\(1)f(2)h(4)h(5)f(7)g(11)g(12)f(14)h(16)g(15\)\))984
+4326 y(\(format)d(t)k(&quot;Setting)c(num)i(to)h(~a~\045&quot;)e(n\))984
+4426 y(\(setf)g(\(num)h(m\))h(n\))984 4525 y(\(format)d(t)k(&quot;odd-num)c
+(is)i(~a~\045&quot;)g(\(odd-num)e(m\)\)\)\)\))515 4707 y Fk(The)31
+b(crucial)f(part)g(is)h(the)h(v)-5 b(alues)30 b(returned)h(b)n(y)f
+(with-synapse's)g(b)r(o)r(dy)-7 b(.)48 b(When)31 b(n)n(um)g(is)515
+4807 y(o)r(dd,)36 b(w)n(e)e(return)g(it)h(together)f(with)h
+(:propagate,)f(otherwise)f(w)n(e)h(return)g(a)h(v)-5
+b(alue)34 b(that)515 4907 y(will)24 b(b)r(e)g(ignored)e(\(b)r(ecause)h
+(it)h(w)n(on't)g(b)r(e)g(propagated\))e(and)h(:no-propagate.)33
+b(Here)23 b(is)h(the)515 5006 y(output:)1905 5255 y(17)p
+eop end
+%%Page: 18 18
+TeXDict begin 18 17 bop 722 523 a Fd(&gt;)43 b(\(load)f
+(\020hello-cells.lis)o(p\021)o(\))722 623 y(T)722 722
+y(&gt;)h(\(try-my-syn\))722 822 y(Setting)e(num)h(to)h(1)722
+922 y(Propagated!)722 1021 y(odd-num)e(is)i(1)722 1121
+y(Setting)e(num)h(to)h(2)722 1220 y(odd-num)e(is)i(1)722
+1320 y(Setting)e(num)h(to)h(4)722 1420 y(odd-num)e(is)i(1)722
+1519 y(Setting)e(num)h(to)h(5)722 1619 y(Propagated!)722
+1719 y(odd-num)e(is)i(5)722 1818 y(Setting)e(num)h(to)h(7)722
+1918 y(Propagated!)722 2017 y(odd-num)e(is)i(7)722 2117
+y(Setting)e(num)h(to)h(11)722 2217 y(Propagated!)722
+2316 y(odd-num)e(is)i(11)722 2416 y(Setting)e(num)h(to)h(12)722
+2516 y(odd-num)e(is)i(11)722 2615 y(Setting)e(num)h(to)h(14)722
+2715 y(odd-num)e(is)i(11)722 2814 y(Setting)e(num)h(to)h(16)722
+2914 y(odd-num)e(is)i(11)722 3014 y(Setting)e(num)h(to)h(15)722
+3113 y(Propagated!)722 3213 y(odd-num)e(is)i(15)722 3313
+y(NIL)515 3475 y Fk(Y)-7 b(ou)25 b(can)h(see)f(that)h(o)r(dd-n)n(um)f
+(c)n(hanges)f(only)i(when)f(w)n(e)h(return)f(:propagate)2950
+3445 y Fi(6)2985 3475 y Fk(.)36 b(When)26 b(w)n(e)515
+3574 y(return)32 b(:no-propagate)e(o)r(dd-n)n(um)i(do)r(esn't)h(c)n
+(hange.)51 b(W)-7 b(e)33 b(didn't)g(need)g(to)g(carry)e(some)515
+3674 y(state)23 b(b)r(et)n(w)n(een)h(di\033eren)n(t)f(executions)g(of)h
+(the)g(b)r(o)r(dy)-7 b(,)25 b(so)e(w)n(e)g(left)h(the)g(&lt;v)-5
+b(ars&gt;)22 b(list)i(empt)n(y)-7 b(.)515 3945 y Fn(10)131
+b(Example:)58 b(pla)l(ying)45 b(sudoku)515 4127 y Fk(W)-7
+b(e)25 b(ha)n(v)n(e)g(seen)g(a)f(few)i(example)f(of)g(using)g(cells,)h
+(but)g(none)f(of)g(them)h(actually)e(did)i(some-)515
+4226 y(thing)i(b)r(eside)g(sho)n(wing)f(cells)h(b)r(eha)n(vior.)37
+b(No)n(w)27 b(w)n(e)h(will)g(see)g(ho)n(w)g(to)g(use)g(cells)f(to)h
+(aid)g(us)515 4326 y(resolving)e(a)h(sudoku)g(puzzle.)37
+b(First)27 b(of)h(all,)f(some)g(constan)n(ts:)722 4488
+y Fd(\(defparameter)38 b(*all-values*)h('\(1)j(2)h(3)g(4)h(5)f(6)g(7)g
+(8)g(9\)\))722 4588 y(\(defparameter)38 b(*row-len*)i(9\))722
+4687 y(\(defparameter)e(*sq-size*)i(3\))722 4787 y(\(defparameter)e
+(*col-len*)i(9\))p 515 4850 1146 4 v 607 4904 a Fg(6)642
+4927 y Ff(W)-6 b(e)24 b(could)g(ha)n(v)n(e)g(returned)i(an)n(y)e(other)
+g(v)l(alue.)32 b(The)24 b(only)f(requiremen)n(t)i(to)f(propagate)h(is)e
+(to)h(return)515 5006 y(something)f(di\033eren)n(t)j(from)c
+(:no-propagate.)1905 5255 y Fk(18)p eop end
+%%Page: 19 19
+TeXDict begin 19 18 bop 515 523 a Fk(The)26 b(input)h(b)r(oard)e(is)i
 (a)e(v)n(ector)g(of)i(v)n(ectors:)34 b(ev)n(ery)25 b(p)r(osition)h(con)
 n(tains)f(either)i(a)e(n)n(um)n(b)r(er)515 623 y(from)j(1)h(to)g(9)g
 (or)f(a)h(')9 b(?)41 b(telling)30 b(the)f(program)e(that)i(it)h(m)n
 (ust)f(\034nd)h(a)e(v)-5 b(alue)29 b(to)g(\034ll)g(in)h(that)515
 722 y(p)r(osition.)36 b(The)28 b(follo)n(wing)e(is)i(an)f(empt)n(y)h(b)
-r(oard:)722 888 y Fg(\(defparameter)38 b(*board*)809
+r(oard:)722 888 y Fd(\(defparameter)38 b(*board*)809
 988 y(#\(#\(?)k(?)h(?)g(?)g(?)h(?)f(?)g(?)g(?\))897 1088
 y(#\(?)f(?)h(?)g(?)g(?)h(?)f(?)g(?)g(?\))897 1187 y(#\(?)f(?)h(?)g(?)g
 (?)h(?)f(?)g(?)g(?\))897 1287 y(#\(?)f(?)h(?)g(?)g(?)h(?)f(?)g(?)g(?\))
@@ -2507,7 +2728,7 @@ b(al)28 b(of)h(the)h(squares)d(in)j(the)f(same)f(group,)h(and)g(group)f
 (is)g(a)515 2848 y(reference)g(to)g(an)h(ob)5 b(ject)28
 b(of)h(t)n(yp)r(e)g(square-group:)36 b(squares)28 b(in)h(the)g(same)f
 (group)g(cannot)515 2947 y(ha)n(v)n(e)e(the)i(same)f(exact-v)-5
-b(al.)722 3113 y Fg(\(defmodel)40 b(square-group)f(\(\))809
+b(al.)722 3113 y Fd(\(defmodel)40 b(square-group)f(\(\))809
 3213 y(\(\(constraining)f(:initform)i(\(c-in)h(nil\))h(:initarg)e
 (:constraining)1463 3313 y(:accessor)g(constraining\)\)\))722
 3512 y(\(defmodel)g(square)h(\(\))809 3611 y(\(\(group)g(:accessor)f
@@ -2521,9 +2742,9 @@ b(al.)722 3113 y Fg(\(defmodel)40 b(square-group)f(\(\))809
 (constraining)1158 4508 y(\(remove-if-not)1202 4608 y(#'\(lambda)c
 (\(v\))1376 4707 y(\(every)1420 4807 y(#'\(lambda)g(\(x\))1594
 4907 y(\(not)j(\(eql)g(v)h(\(exact-val)c(x\)\)\)\))1420
-5006 y(c\)\))1905 5255 y Fk(17)p eop end
-%%Page: 18 18
-TeXDict begin 18 17 bop 1202 523 a Fg(*all-values*\)\)\))o(\)\))o(\)\))
+5006 y(c\)\))1905 5255 y Fk(19)p eop end
+%%Page: 20 20
+TeXDict begin 20 19 bop 1202 523 a Fd(*all-values*\)\)\))o(\)\))o(\)\))
 722 722 y(\(defun)41 b(make-square)e(\(x\))809 822 y(\(make-instance)f
 ('square)j(:exact-val)e(\(c-in)i(\(if)i(\(eql)f(x)h('?\))f(nil)g
 (x\)\)\)\))722 1021 y(\(defmodel)e(board)i(\(\))809 1121
@@ -2540,7 +2761,7 @@ y(\(\(complete)e(:accessor)g(complete)1289 1220 y(:initform)1289
 (the)f(next)g(p)r(osition)515 2383 y(without)28 b(a)f(v)-5
 b(alue.)37 b(A)27 b(p)r(osition)h(is)f(a)g(list)h(of)g(t)n(w)n(o)f(n)n
 (um)n(b)r(ers:)36 b(the)28 b(ro)n(w)e(and)h(the)h(column.)722
-2549 y Fg(\(defun)41 b(at)i(\(board)e(r)i(c\))809 2648
+2549 y Fd(\(defun)41 b(at)i(\(board)e(r)i(c\))809 2648
 y(\(elt)f(\(elt)g(board)g(r\))g(c\)\))722 2848 y(\(defun)f(next-pos)g
 (\(pos\))809 2947 y(\020next)h(position)e(in)j(the)f(board.)f(search)g
 (only)h(forward.)722 3047 y(return)f(NIL)i(if)f(the)h(board)e(is)i
@@ -2560,9 +2781,9 @@ y(\(list)e(r)j(\(1+)e(c\)\)\)\)\))722 3844 y(\(defun)f(next-to-try)e
 4907 y(group.)34 b(W)-7 b(e)25 b(put)f(in)g(the)h(same)e(group)g(of)h
 (a)f(certain)g(square)g(all)h(the)g(squares)e(in)i(the)h(same)515
 5006 y(line,)j(in)f(the)h(same)f(column)h(or)f(in)g(the)h(same)f(blo)r
-(c)n(k.)1905 5255 y(18)p eop end
-%%Page: 19 19
-TeXDict begin 19 18 bop 722 523 a Fg(\(defun)41 b(make-groups)e
+(c)n(k.)1905 5255 y(20)p eop end
+%%Page: 21 21
+TeXDict begin 21 20 bop 722 523 a Fd(\(defun)41 b(make-groups)e
 (\(squares\))809 623 y(\(dotimes)i(\(r)h(*col-len*\))897
 722 y(\(dotimes)e(\(c)j(*row-len*\))984 822 y(\(setf)e(\(group)g(\(at)i
 (squares)d(r)j(c\)\))1245 922 y(\(make-instance)38 b('square-group)1899
@@ -2587,7 +2808,7 @@ b(*sq-size*)c(\(floor)i(\(/)i(r)g(*sq-size*\)\)\)\))1071
 b(create)g(the)i(b)r(oard)e(w)n(e)g(map)h(the)h(input)f(b)r(oard)f(and)
 h(for)g(ev)n(ery)e(p)r(osition)i(w)n(e)f(create)g(a)515
 3794 y(square.)35 b(Then)28 b(w)n(e)f(build)h(all)g(the)g(groups.)722
-3977 y Fg(\(defun)41 b(make-board)f(\(b\))809 4076 y(\(let)i(\(\(b)h
+3977 y Fd(\(defun)41 b(make-board)f(\(b\))809 4076 y(\(let)i(\(\(b)h
 (\(make-instance)1245 4176 y('board)1245 4276 y(:squares)1245
 4375 y(\(c-in)1289 4475 y(\(map)f('vector)e(#'\(lambda)g(\(x\))i(\(map)
 g('vector)f(#'make-square)d(x\)\))86 b(b\)\)\)\)\))897
@@ -2596,9 +2817,9 @@ y(b\)\))515 4857 y Fk(The)35 b(follo)n(wing)f(co)r(de)i(lo)r(oks)e(for)
 h(a)g(solution,)i(trying)d(all)h(the)h(p)r(ossible)f(com)n(binations.)
 515 4956 y(Thanks)19 b(to)g(ho)n(w)g(w)n(e)g(de\034ned)h(p)r(ossible-v)
 -5 b(als,)20 b(imp)r(ossible)f(com)n(binations)f(are)h(nev)n(er)f
-(tried.)1905 5255 y(19)p eop end
-%%Page: 20 20
-TeXDict begin 20 19 bop 722 523 a Fg(\(defun)41 b(search-solution)d
+(tried.)1905 5255 y(21)p eop end
+%%Page: 22 22
+TeXDict begin 22 21 bop 722 523 a Fd(\(defun)41 b(search-solution)d
 (\(b)k(&amp;optional)e(\(next)2335 623 y(\(next-to-try)e(\(squares)i(b\))j
 (\(list)e(0)j(-1\)\)\)\))809 722 y(\(if)f(next)984 822
 y(\(let)f(\(\(s)g(\(at)g(\(squares)e(b\))j(\(first)e(next\))h(\(second)
@@ -2614,13 +2835,13 @@ g(solution:)e(reset)i(the)g(square)f(and)h(return)1245
 (positions:)c(have)j(we)g(completed)e(the)j(board?)984
 1818 y(\(complete)d(b\)\)\))515 2001 y Fk(Finally)27
 b(the)h(main)g(function:)37 b(it)28 b(accepts)f(an)g(input)i(b)r(oard)d
-(and)i(prin)n(ts)f(a)g(solution.)722 2183 y Fg(\(defun)41
+(and)i(prin)n(ts)f(a)g(solution.)722 2183 y Fd(\(defun)41
 b(sudoku)g(\(the-board\))809 2283 y(\(let)h(\(\(b)h(\(make-board)c
 (the-board\)\)\))897 2383 y(\(search-solutio)o(n)e(b\))897
 2482 y(\(format)j(t)j(&quot;Solution:~\045~a~\045&quot;)37 b(b\)\)\))515
 2665 y Fk(Sa)n(v)n(e)26 b(it)i(in)g(a)f(\034le)h(named)f
 (\020sudoku.lisp\021)34 b(and)27 b(try)g(it)h(on)g(the)f(empt)n(y)h(b)r
-(oard:)722 2848 y Fg(&gt;)43 b(\(load)f(\020sudoku.lisp\021\))722
+(oard:)722 2848 y Fd(&gt;)43 b(\(load)f(\020sudoku.lisp\021\))722
 2947 y(T)722 3047 y(&gt;)h(\(sudoku)e(*board*\))722 3147
 y(Solution:)722 3246 y(1)i(2)h(3)f(4)g(5)g(6)g(7)g(8)h(9)722
 3346 y(4)f(5)h(6)f(7)g(8)g(9)g(1)g(2)h(3)722 3445 y(7)f(8)h(9)f(1)g(2)g
@@ -2630,13 +2851,13 @@ y(Solution:)722 3246 y(1)i(2)h(3)f(4)g(5)g(6)g(7)g(8)h(9)722
 3944 y(6)f(4)h(2)f(9)g(7)g(8)g(5)g(3)h(1)722 4043 y(9)f(7)h(8)f(5)g(3)g
 (1)g(6)g(4)h(2)722 4143 y(NIL)515 4325 y Fk(It)28 b(do)r(es)f(\034nd)h
 (a)f(solution,)g(but)h(it)g(tak)n(es)f(quite)h(a)f(while)h(to)f(prin)n
-(t)g(it:)722 4508 y Fg(&gt;)43 b(\(time)f(\(sudoku)f(*board*\)\))722
+(t)g(it:)722 4508 y Fd(&gt;)43 b(\(time)f(\(sudoku)f(*board*\)\))722
 4608 y(Solution:)722 4707 y(1)i(2)h(3)f(4)g(5)g(6)g(7)g(8)h(9)722
 4807 y(4)f(5)h(6)f(7)g(8)g(9)g(1)g(2)h(3)722 4907 y(7)f(8)h(9)f(1)g(2)g
 (3)g(4)g(5)h(6)722 5006 y(2)f(1)h(4)f(3)g(6)g(5)g(8)g(9)h(7)1905
-5255 y Fk(20)p eop end
-%%Page: 21 21
-TeXDict begin 21 20 bop 722 523 a Fg(3)43 b(6)h(5)f(8)g(9)g(7)g(2)g(1)h
+5255 y Fk(22)p eop end
+%%Page: 23 23
+TeXDict begin 23 22 bop 722 523 a Fd(3)43 b(6)h(5)f(8)g(9)g(7)g(2)g(1)h
 (4)722 623 y(8)f(9)h(7)f(2)g(1)g(4)g(3)g(6)h(5)722 722
 y(5)f(3)h(1)f(6)g(4)g(2)g(9)g(7)h(8)722 822 y(6)f(4)h(2)f(9)g(7)g(8)g
 (5)g(3)h(1)722 922 y(9)f(7)h(8)f(5)g(3)g(1)g(6)g(4)h(2)722
@@ -2659,7 +2880,7 @@ b(solution)f(is)g(to)g(use)g(a)g(lazy)g(cell)g(and)g(to)h(do)f(that)g
 (w)n(e)g(c)n(hange)515 2565 y(the)e(initform)g(of)g(p)r(ossible-v)-5
 b(als)32 b(to)h(use)g(c?_)g(instead)g(of)g(c?.)53 b(Change)32
 b(it)i(and)f(run)g(the)515 2665 y(program)25 b(again:)722
-2814 y Fg(&gt;)43 b(\(load)f(\020sudoku.lisp\021\))722 2914
+2814 y Fd(&gt;)43 b(\(load)f(\020sudoku.lisp\021\))722 2914
 y(T)722 3014 y(&gt;)h(\(time)f(\(sudoku)f(*board*\)\))722
 3113 y(Solution:)722 3213 y(1)i(2)h(3)f(4)g(5)g(6)g(7)g(8)h(9)722
 3313 y(4)f(5)h(6)f(7)g(8)g(9)g(1)g(2)h(3)722 3412 y(7)f(8)h(9)f(1)g(2)g
@@ -2673,231 +2894,333 @@ h(user)g(run)h(time)809 4508 y(0.020001)e(seconds)f(of)j(system)e(run)h
 (time)809 4608 y([Run)g(times)g(include)e(0.012)i(seconds)e(GC)j(run)f
 (time.])809 4707 y(0)i(calls)d(to)i(\045EVAL)809 4807
 y(0)h(page)d(faults)h(and)809 4907 y(9,517,528)e(bytes)i(consed.)722
-5006 y(NIL)1905 5255 y Fk(21)p eop end
-%%Page: 22 22
-TeXDict begin 22 21 bop 515 523 a Fk(No)n(w)24 b(the)h(sp)r(eed)f(is)h
+5006 y(NIL)1905 5255 y Fk(23)p eop end
+%%Page: 24 24
+TeXDict begin 24 23 bop 515 523 a Fk(No)n(w)24 b(the)h(sp)r(eed)f(is)h
 (m)n(uc)n(h)f(b)r(etter)h(\(more)f(than)h(ten)g(times)g(faster\),)f(it)
 h(allo)r(cates)f(only)g(9.5)515 623 y(MB)j(of)h(memory)-7
 b(,)27 b(and)g(w)n(e)g(ac)n(hiev)n(ed)g(this)g(result)h(with)g(a)f
-(really)f(small)i(c)n(hange.)515 896 y Fm(11)131 b(F)-11
-b(unctions)44 b(&amp;)g(macros)g(reference)515 1078 y Fk(Here)27
-b(follo)n(ws)f(a)i(quic)n(k)f(reference)f(of)i(the)g(main)f(functions)h
-(and)f(macros.)515 1308 y Fj(11.1)112 b(Main)515 1462
-y Fk(defmo)r(del)722 1636 y Fg(\(defmodel)40 b(&lt;model-name&gt;)f
-(\(&lt;superclass&gt;*\))809 1735 y(\(&lt;slot-definition)o(&gt;*)o(\))809
-1835 y(&lt;other-optional-a)o(rg)o(ume)o(nt)o(s&gt;)o(\))515
-2009 y Fk(\(Macro\))19 b(De\034nes)i(a)f(new)g(mo)r(del.)35
+(really)f(small)i(c)n(hange.)639 722 y(One)36 b(imp)r(ortan)n(t)g
+(thing)g(to)g(note)g(ab)r(out)g(this)g(example)f(is)h(that)h(w)n(e)e
+Fh(had)46 b Fk(to)36 b(write)515 822 y(the)24 b(function)g(searc)n
+(h-solution)e(to)h(solv)n(e)g(the)h(puzzle,)h(b)r(ecause)e(cells)h(has)
+f(no)h(constrain)n(ts)515 922 y(resolution)i(engine.)37
+b(What)28 b(it)g(do)r(es)f(is)g(to)h(propagate)d(c)n(hange)i(to)g(dep)r
+(enden)n(t)h(slots.)37 b(W)-7 b(e)515 1021 y(used)19
+b(this)g(feature)g(to)g(k)n(eep)f(the)i(b)r(oard)e(in)h(a)g(consisten)n
+(t)f(state)h(and)g(to)g(roll)f(out)h(imp)r(ossible)515
+1121 y(com)n(binations)38 b(while)i(searc)n(hing)d(for)j(a)f(solution,)
+j(without)e(ha)n(ving)e(to)i(w)n(orry)d(ab)r(out)515
+1220 y(dep)r(endencies.)42 b(This)29 b(w)n(a)n(y)f(the)h(searc)n(hing)f
+(function)h(has)g(b)r(een)g(quite)h(simple)f(to)g(write,)515
+1320 y(b)r(ecause)c(all)g(the)h(relations)e(b)r(et)n(w)n(een)i
+(di\033eren)n(t)f(squares)f(w)n(ere)h(managed)f(automatically)515
+1420 y(b)n(y)j(the)h(mo)r(dels)f(w)n(e)h(de\034ned)f(earlier.)515
+1693 y Fn(11)131 b(F)-11 b(unctions)44 b(&amp;)g(macros)g(reference)515
+1875 y Fk(Here)27 b(follo)n(ws)f(a)i(quic)n(k)f(reference)f(of)i(the)g
+(main)f(functions)h(and)f(macros.)515 2106 y Fm(11.1)112
+b(Main)515 2259 y Fk(defmo)r(del)722 2436 y Fd(\(defmodel)40
+b(&lt;model-name&gt;)f(\(&lt;superclass&gt;*\))809 2535 y(\(&lt;slot-definition)o(&gt;*)o
+(\))809 2635 y(&lt;other-optional-a)o(rg)o(ume)o(nt)o(s&gt;)o(\))515
+2811 y Fk(\(Macro\))19 b(De\034nes)i(a)f(new)g(mo)r(del.)35
 b(It)21 b(has)f(the)g(same)g(structure)g(and)g(the)h(accept)f(the)h
-(same)515 2108 y(options)f(of)h(a)g(class)f(de\034nition.)35
+(same)515 2911 y(options)f(of)h(a)g(class)f(de\034nition.)35
 b(&lt;slot-de\034nition&gt;)20 b(accepts)h(the)g(sp)r(ecial)g(argumen)n(t)f
-(:cell)515 2208 y(that)31 b(lets)g(y)n(ou)g(declare)f(what)h(kind)g(of)
+(:cell)515 3011 y(that)31 b(lets)g(y)n(ou)g(declare)f(what)h(kind)g(of)
 g(slot)g(it)h(is.)47 b(The)32 b(default)f(is)g(a)g(normal)f(cell)h
-(slot.)515 2308 y(Other)c(options)g(include:)616 2481
+(slot.)515 3110 y(Other)c(options)g(include:)616 3287
 y(1.)41 b(:cell)28 b(nil)g(the)g(slot)f(will)h(b)r(e)g(ignored)e(b)n(y)
-h(the)h(constrain)n(ts-handling)e(system)616 2644 y(2.)41
+h(the)h(constrain)n(ts-handling)e(system)616 3450 y(2.)41
 b(:cell)31 b(:ephemeral)g(when)g(an)f(ephemeral)h(slot)f(is)h(c)n
-(hanged,)g(ev)n(erything)e(w)n(orks)h(as)722 2744 y(with)38
+(hanged,)g(ev)n(erything)e(w)n(orks)h(as)722 3550 y(with)38
 b(a)f(normal)g(cell,)j(but)e(after)f(the)h(propagation)d(has)i(ended,)j
-(its)e(v)-5 b(alue)37 b(will)722 2843 y(b)r(ecome)28
+(its)e(v)-5 b(alue)37 b(will)722 3649 y(b)r(ecome)28
 b(nil.)37 b(They)27 b(are)g(useful)h(to)f(mo)r(del)h(ev)n(en)n(ts.)515
-3017 y(F)-7 b(or)26 b(ev)n(ery)g(cell's)g(accessor)f(defmo)r(del)i
+3826 y(F)-7 b(or)26 b(ev)n(ery)g(cell's)g(accessor)f(defmo)r(del)i
 (creates)f(a)g(macro)g(^&lt;accessor-name&gt;)d(that)k(y)n(ou)515
-3117 y(can)g(use)g(as)g(a)g(shortcut)g(for)h(\(&lt;accessor-name&gt;)c(self)6
-b(\).)515 3291 y(c-in)722 3465 y Fg(\(c-in)42 b(&lt;expr&gt;\))515
-3639 y Fk(\(Macro\))30 b(Initializes)h(a)g(cell)h(slot)f(with)g(the)h
+3925 y(can)g(use)g(as)g(a)g(shortcut)g(for)h(\(&lt;accessor-name&gt;)c(self)6
+b(\).)515 4102 y(c-in)722 4278 y Fd(\(c-in)42 b(&lt;expr&gt;\))515
+4454 y Fk(\(Macro\))30 b(Initializes)h(a)g(cell)h(slot)f(with)g(the)h
 (v)-5 b(alue)31 b(expr.)48 b(When)32 b(a)f(cell)g(slot)g(initialized)
-515 3738 y(with)d(c-in)g(c)n(hanges,)f(dep)r(endan)n(t)h(cells)g(will)h
+515 4554 y(with)d(c-in)g(c)n(hanges,)f(dep)r(endan)n(t)h(cells)g(will)h
 (b)r(e)f(recalculated.)37 b(The)29 b(v)-5 b(alue)28 b(of)g(a)f(cell)h
-(slot)515 3838 y(initialized)f(with)i(c-in)e(can)g(b)r(e)h(setted.)515
-4012 y(c-input)722 4186 y Fg(\(c-input)40 b(\(&amp;rest)i(args\))f
-(&amp;optional)f(value\))515 4360 y Fk(\(Macro\))23 b(Same)g(as)h(c-in,)g
+(slot)515 4654 y(initialized)f(with)i(c-in)e(can)g(b)r(e)h(setted.)515
+4830 y(c-input)722 5006 y Fd(\(c-input)40 b(\(&amp;rest)i(args\))f
+(&amp;optional)f(value\))1905 5255 y Fk(24)p eop end
+%%Page: 25 25
+TeXDict begin 25 24 bop 515 523 a Fk(\(Macro\))23 b(Same)g(as)h(c-in,)g
 (but)h(it)f(lets)g(sp)r(ecify)g(extra)f(argumen)n(ts,)h(and)f(v)-5
-b(alue)24 b(is)g(optional.)515 4459 y(If)30 b(it)g(is)f(not)h(giv)n
-(en,)f(the)h(slot)f(will)h(b)r(e)g(un)n(b)r(ound)g(and)g(an)n(y)e
-(access)h(to)g(it)h(will)g(result)f(in)n(to)515 4559
-y(an)e(error.)515 4733 y(c?)722 4907 y Fg(\(c?)809 5006
-y(&lt;body&gt;\))1905 5255 y Fk(22)p eop end
-%%Page: 23 23
-TeXDict begin 23 22 bop 515 523 a Fk(\(Macro\))27 b(Initializes)h(a)f
-(cell)h(slot)g(with)g(the)g(v)-5 b(alue)28 b(of)g(&lt;b)r(o)r(dy&gt;.)38
-b(If)28 b(&lt;b)r(o)r(dy&gt;)f(references)515 623 y(input)j(cell)g(slots,)g
-(it)g(will)g(b)r(e)g(recalculated)e(whenev)n(er)h(those)g(slots)g(c)n
-(hange.)42 b(Within)31 b(c?)515 722 y(y)n(ou)c(ha)n(v)n(e)f(access)g
-(to)i(the)g(v)-5 b(ariable)26 b(self,)i(represen)n(ting)e(the)i(curren)
-n(t)e(ob)5 b(ject)515 902 y(c?+n)722 1081 y Fg(\(c?+n)809
-1181 y(&lt;body&gt;\))515 1360 y Fk(\(Macro\))26 b(Creates)h(a)g(ruled)g
-(cell)h(whose)f(v)-5 b(alue)27 b(can)g(b)r(e)h(setted.)515
-1539 y(c?once)722 1719 y Fg(\(c?once)809 1818 y(&lt;body&gt;\))515
-1998 y Fk(\(Macro\))22 b(Creates)h(a)g(ruled)g(cell)g(that)h(gets)f(ev)
+b(alue)24 b(is)g(optional.)515 623 y(If)30 b(it)g(is)f(not)h(giv)n(en,)
+f(the)h(slot)f(will)h(b)r(e)g(un)n(b)r(ound)g(and)g(an)n(y)e(access)h
+(to)g(it)h(will)g(result)f(in)n(to)515 722 y(an)e(error.)515
+905 y(c?)722 1087 y Fd(\(c?)809 1187 y(&lt;body&gt;\))515 1369
+y Fk(\(Macro\))g(Initializes)h(a)f(cell)h(slot)g(with)g(the)g(v)-5
+b(alue)28 b(of)g(&lt;b)r(o)r(dy&gt;.)38 b(If)28 b(&lt;b)r(o)r(dy&gt;)f(references)
+515 1469 y(input)j(cell)g(slots,)g(it)g(will)g(b)r(e)g(recalculated)e
+(whenev)n(er)h(those)g(slots)g(c)n(hange.)42 b(Within)31
+b(c?)515 1569 y(y)n(ou)c(ha)n(v)n(e)f(access)g(to)i(the)g(v)-5
+b(ariable)26 b(self,)i(represen)n(ting)e(the)i(curren)n(t)e(ob)5
+b(ject)515 1751 y(c?+n)722 1934 y Fd(\(c?+n)809 2033
+y(&lt;body&gt;\))515 2216 y Fk(\(Macro\))26 b(Creates)h(a)g(ruled)g(cell)h
+(whose)f(v)-5 b(alue)27 b(can)g(b)r(e)h(setted.)515 2398
+y(c?once)722 2581 y Fd(\(c?once)809 2680 y(&lt;body&gt;\))515
+2863 y Fk(\(Macro\))22 b(Creates)h(a)g(ruled)g(cell)g(that)h(gets)f(ev)
 -5 b(aluated)23 b(only)g(once)g(at)g(initialization)h(time.)515
-2177 y(c?1)722 2356 y Fg(\(c?1)809 2456 y(&lt;body&gt;\))515
-2635 y Fk(\(Macro\))i(Nic)n(kname)h(for)h(c?once.)515
-2814 y(c_?)722 2994 y Fg(\(c_?)809 3093 y(&lt;body&gt;\))515
-3273 y Fk(\(Macro\))e(Creates)h(a)g(lazy)g(ruled)g(cell)h(slot)f(of)h
-(t)n(yp)r(e)f(:un)n(til-ask)n(ed.)515 3452 y(c?_)722
-3631 y Fg(\(c?_)809 3731 y(&lt;body&gt;\))515 3910 y Fk(\(Macro\))f(Creates)h
+3045 y(c?1)722 3228 y Fd(\(c?1)809 3328 y(&lt;body&gt;\))515
+3510 y Fk(\(Macro\))i(Nic)n(kname)h(for)h(c?once.)515
+3693 y(c_?)722 3875 y Fd(\(c_?)809 3975 y(&lt;body&gt;\))515
+4157 y Fk(\(Macro\))e(Creates)h(a)g(lazy)g(ruled)g(cell)h(slot)f(of)h
+(t)n(yp)r(e)f(:un)n(til-ask)n(ed.)515 4340 y(c?_)722
+4522 y Fd(\(c?_)809 4622 y(&lt;body&gt;\))515 4804 y Fk(\(Macro\))f(Creates)h
 (a)g(lazy)g(ruled)g(cell)h(slot)f(of)h(t)n(yp)r(e)f(:alw)n(a)n(ys.)515
-4090 y(c_1)722 4269 y Fg(\(c_1)809 4369 y(&lt;body&gt;\))515
-4548 y Fk(\(Macro\))f(Creates)h(a)g(lazy)g(cell)h(that)f(gets)g(ev)-5
-b(aluated)28 b(only)f(once.)515 4727 y(c...)722 4907
-y Fg(\(c...)42 b(\(&lt;initial-value)o(&gt;\))809 5006 y(&lt;body&gt;\))1905
-5255 y Fk(23)p eop end
-%%Page: 24 24
-TeXDict begin 24 23 bop 515 523 a Fk(\(Macro\))26 b(Creates)h(a)g
-(drifter)g(cell)h(with)g(initial)g(v)-5 b(alue)27 b(&lt;initial-v)-5
-b(alue&gt;.)515 706 y(c-form)n(ula)722 888 y Fg(\(c-formula)40
-b(\(&lt;options&gt;\))809 988 y(&lt;body&gt;\))515 1171 y Fk(\(Macro\))22
-b(Same)h(as)g(c?,)h(but)g(lets)f(y)n(ou)g(sp)r(ecify)g(extra)g
-(options.)34 b(F)-7 b(or)23 b(example,)h(the)f(option)515
-1270 y(:inputp)j(lets)f(y)n(ou)f(build)h(a)g(cell)g(that)g(b)r(eha)n(v)
-n(es)f(lik)n(e)h(a)f(cell)h(initialized)g(with)h(b)r(oth)f(c?)36
-b(and)515 1370 y(c-in.)g(Another)26 b(useful)g(option)g(is)g(:lazy)g
+4987 y(c_1)1905 5255 y(25)p eop end
+%%Page: 26 26
+TeXDict begin 26 25 bop 722 523 a Fd(\(c_1)809 623 y(&lt;body&gt;\))515
+797 y Fk(\(Macro\))26 b(Creates)h(a)g(lazy)g(cell)h(that)f(gets)g(ev)-5
+b(aluated)28 b(only)f(once.)515 971 y(c...)722 1146 y
+Fd(\(c...)42 b(\(&lt;initial-value)o(&gt;\))809 1245 y(&lt;body&gt;\))515
+1420 y Fk(\(Macro\))26 b(Creates)h(a)g(drifter)g(cell)h(with)g(initial)
+g(v)-5 b(alue)27 b(&lt;initial-v)-5 b(alue&gt;.)515 1594 y(c-form)n(ula)722
+1768 y Fd(\(c-formula)40 b(\(&lt;options&gt;\))809 1868 y(&lt;body&gt;\))515
+2042 y Fk(\(Macro\))22 b(Same)h(as)g(c?,)h(but)g(lets)f(y)n(ou)g(sp)r
+(ecify)g(extra)g(options.)34 b(F)-7 b(or)23 b(example,)h(the)f(option)
+515 2142 y(:inputp)j(lets)f(y)n(ou)f(build)h(a)g(cell)g(that)g(b)r(eha)
+n(v)n(es)f(lik)n(e)h(a)f(cell)h(initialized)g(with)h(b)r(oth)f(c?)36
+b(and)515 2242 y(c-in.)g(Another)26 b(useful)g(option)g(is)g(:lazy)g
 (that)g(lets)h(y)n(ou)e(sp)r(ecify)i(the)f(laziness)f(of)h(the)h(cell:)
-515 1469 y(nil,)h(t,)g(:once-ask)n(ed,)d(:un)n(til-ask)n(ed)i(or)f
-(:alw)n(a)n(ys.)515 1652 y(not-to-b)r(e)722 1835 y Fg(\(not-to-be)40
-b(&lt;object&gt;\))515 2017 y Fk(\(F)-7 b(unction\))28 b(T)-7
-b(ells)28 b(cells)f(to)g(stop)h(handling)f(&lt;ob)5 b(ject&gt;.)515
-2200 y(defobserv)n(er)722 2383 y Fg(\(defobserver)39
-b(&lt;slot-name&gt;)g(\(&amp;optional)g(\(&lt;self&gt;)i(self\))2291
-2482 y(\(&lt;new-value&gt;)e(old-value\))2291 2582 y(\(&lt;old-value&gt;)g
-(new-value\))2291 2682 y(\(&lt;old-value-boun)o(dp)o(&gt;)f(old-value-bound)o
-(p\))o(\))809 2781 y(&lt;function-body&gt;\))515 2964 y Fk(\(Macro\))k
+515 2341 y(nil,)h(t,)g(:once-ask)n(ed,)d(:un)n(til-ask)n(ed)i(or)f
+(:alw)n(a)n(ys.)515 2516 y(defobserv)n(er)722 2690 y
+Fd(\(defobserver)39 b(&lt;slot-name&gt;)g(\(&amp;optional)g(\(&lt;self&gt;)i(self\))
+2291 2790 y(\(&lt;new-value&gt;)e(old-value\))2291 2889 y(\(&lt;old-value&gt;)g
+(new-value\))2291 2989 y(\(&lt;old-value-boun)o(dp)o(&gt;)f(old-value-bound)o
+(p\))o(\))809 3088 y(&lt;function-body&gt;\))515 3263 y Fk(\(Macro\))k
 (De\034nes)i(a)e(function)i(that)g(is)f(called)g(ev)n(ery)f(time)h(the)
-h(slot)f(&lt;slot-name&gt;)515 3064 y(c)n(hanges.)35 b(In)28
+h(slot)f(&lt;slot-name&gt;)515 3362 y(c)n(hanges.)35 b(In)28
 b(previous)e(v)n(ersions)g(of)i(cells)f(it)h(w)n(ere)e(called)i
-(def-c-output.)515 3246 y(with-in)n(tegrit)n(y)722 3429
-y Fg(\(with-integrity)38 b(\(&amp;optional)h(&lt;opcode&gt;)h(&lt;defer-info&gt;\))809
-3528 y(&lt;body&gt;\))515 3711 y Fk(\(Macro\))34 b(Mak)n(es)f(sure)h(to)h
+(def-c-output.)515 3537 y(with-in)n(tegrit)n(y)722 3711
+y Fd(\(with-integrity)38 b(\(&amp;optional)h(&lt;opcode&gt;)h(&lt;defer-info&gt;\))809
+3811 y(&lt;body&gt;\))515 3985 y Fk(\(Macro\))34 b(Mak)n(es)f(sure)h(to)h
 (run)g(&lt;b)r(o)r(dy&gt;)f(only)g(when)h(the)g(system)g(is)f(in)h(a)g
-(consisten)n(t)515 3811 y(state.)g(&lt;op)r(co)r(de&gt;)22
+(consisten)n(t)515 4085 y(state.)g(&lt;op)r(co)r(de&gt;)22
 b(tells)i(what)f(t)n(yp)r(e)h(of)f(anomaly)f(should)h(b)r(e)h(handled.)
-36 b(P)n(ossible)23 b(v)-5 b(alues)515 3910 y(are)26
+36 b(P)n(ossible)23 b(v)-5 b(alues)515 4184 y(are)26
 b(:tell-dep)r(enden)n(ts,)i(:a)n(w)n(ak)n(en,)e(:clien)n(t,)i
-(:ephemeral-reset)d(and)j(:c)n(hange.)515 4093 y(without-c-dep)r
-(endency)722 4276 y Fg(\(without-c-depend)o(en)o(cy)809
-4375 y(&lt;body&gt;\))515 4558 y Fk(\(Macro\))c(Executes)h(b)r(o)r(dy)g
+(:ephemeral-reset)d(and)j(:c)n(hange.)515 4359 y(without-c-dep)r
+(endency)722 4533 y Fd(\(without-c-depend)o(en)o(cy)809
+4633 y(&lt;body&gt;\))515 4807 y Fk(\(Macro\))c(Executes)h(b)r(o)r(dy)g
 (without)h(tracing)e(an)n(y)g(dep)r(endency)-7 b(.)37
-b(I.e.)f(if)25 b(w)n(e)g(are)f(within)h(a)515 4658 y(ruled)g(cell)h
+b(I.e.)f(if)25 b(w)n(e)g(are)f(within)h(a)515 4907 y(ruled)g(cell)h
 (and)f(&lt;b)r(o)r(dy&gt;)g(references)g(a)g(cell)g(slot,)h(when)g(that)g
-(slot)f(c)n(hanges)f(the)i(c)n(hange)515 4757 y(is)h(not)h(propagated)d
-(to)j(the)g(ruled)f(cell.)1905 5255 y(24)p eop end
-%%Page: 25 25
-TeXDict begin 25 24 bop 515 523 a Fj(11.2)112 b(F)-9
+(slot)f(c)n(hanges)f(the)i(c)n(hange)515 5006 y(is)h(not)h(propagated)d
+(to)j(the)g(ruled)f(cell.)1905 5255 y(26)p eop end
+%%Page: 27 27
+TeXDict begin 27 26 bop 515 523 a Fm(11.2)112 b(F)-9
 b(amily)36 b(mo)s(dels)515 676 y Fk(The)27 b(follo)n(wing)g(only)g(w)n
 (orks)f(for)h(mo)r(dels)g(that)h(inherit)g(from)f(family)-7
-b(.)515 859 y(mak)n(e-part)722 1041 y Fg(\(make-part)40
+b(.)515 859 y(mak)n(e-part)722 1041 y Fd(\(make-part)40
 b(&lt;md-name&gt;)f(&lt;model-name&gt;)g(&amp;rest)i(&lt;args&gt;\))515 1224
 y Fk(\(F)-7 b(unction\))29 b(Creates)e(an)h(instance)g(of)g(&lt;mo)r
 (del-name&gt;)f(with)i(:md-name)f(set)g(to)g(&lt;md-)515 1323
 y(name&gt;.)36 b(&lt;args&gt;)25 b(are)i(passed)f(to)i(mak)n(e-instance.)515
-1506 y(mk-part)722 1688 y Fg(\(mk-part)40 b(&lt;md-name&gt;)g
+1506 y(mk-part)722 1688 y Fd(\(mk-part)40 b(&lt;md-name&gt;)g
 (\(&lt;model-name&gt;\))e(&amp;rest)j(&lt;args&gt;\))515 1871 y Fk(\(Macro\))26
 b(Same)i(as)f(mak)n(e-part,)f(but)i(sets)f(the)h(paren)n(t)f(to)g(self)
-515 2053 y(the-kids)722 2236 y Fg(\(the-kids)40 b(&amp;rest)i(&lt;kids&gt;\))515
+515 2053 y(the-kids)722 2236 y Fd(\(the-kids)40 b(&amp;rest)i(&lt;kids&gt;\))515
 2418 y Fk(\(Macro\))34 b(Builds)i(a)f(list)h(of)f(kids.)61
 b(&lt;kids&gt;)35 b(ma)n(y)f(con)n(tain)h(ob)5 b(jects)35 b(or)g(nested)h
 (lists)f(of)515 2518 y(ob)5 b(jects.)515 2700 y(mak)n(e-kid)722
-2883 y Fg(\(make-kid)40 b(&lt;model-name&gt;)f(&amp;rest)i(&lt;args&gt;\))515
+2883 y Fd(\(make-kid)40 b(&lt;model-name&gt;)f(&amp;rest)i(&lt;args&gt;\))515
 3065 y Fk(\(Macro\))26 b(The)i(same)f(as)g(\(mak)n(e-instance)f(&lt;mo)r
 (del-name&gt;)g(&lt;args&gt;)f(:fm-paren)n(t)i(self)6 b(\).)515
-3248 y(def-kid-slots)722 3430 y Fg(\(def-kid-slots)38
+3248 y(def-kid-slots)722 3430 y Fd(\(def-kid-slots)38
 b(&amp;rest)j(&lt;kids&gt;\))515 3613 y Fk(\(Macro\))28 b(Creates)h(a)g(function)
 h(of)f(one)g(argumen)n(t)f(that)i(builds)g(a)f(list)g(of)h(kids)f(with)
 h(the)515 3712 y(giv)n(en)c(paren)n(t.)37 b(Within)28
 b(def-kid-slots)f(self)g(is)h(b)r(ound)g(to)f(the)h(paren)n(t.)515
-3895 y(kids)722 4077 y Fg(\(kids)42 b(&lt;object&gt;\))515
+3895 y(kids)722 4077 y Fd(\(kids)42 b(&lt;object&gt;\))515
 4260 y Fk(\(Metho)r(d\))28 b(Giv)n(es)f(access)g(to)g(&lt;ob)5
 b(ject&gt;'s)26 b(c)n(hildren.)515 4442 y(kid1,kid2,last-kid)722
-4625 y Fg(\(kid1)42 b(&lt;object&gt;\))722 4724 y(\(kid2)g(&lt;object&gt;\))722
+4625 y Fd(\(kid1)42 b(&lt;object&gt;\))722 4724 y(\(kid2)g(&lt;object&gt;\))722
 4824 y(\(last-kid)e(&lt;object&gt;)515 5006 y Fk(\(F)-7 b(unction\))28
 b(Giv)n(es)f(access,)f(resp)r(ectiv)n(ely)-7 b(,)26 b(to)h(&lt;ob)5
 b(ject&gt;'s)26 b(\034rst,)h(second)g(and)g(last)g(c)n(hild)1905
-5255 y(25)p eop end
-%%Page: 26 26
-TeXDict begin 26 25 bop 515 523 a Fk(^k1,^k2,^k-last)722
-705 y Fg(\(^k1\))722 805 y(\(^k2\))722 904 y(\(^k-last\))515
+5255 y(27)p eop end
+%%Page: 28 28
+TeXDict begin 28 27 bop 515 523 a Fk(^k1,^k2,^k-last)722
+705 y Fd(\(^k1\))722 805 y(\(^k2\))722 904 y(\(^k-last\))515
 1086 y Fk(\(Macro\))26 b(Shortcuts)i(for)f(\(kid1)g(self)6
 b(\),)29 b(\(kid2)e(self)6 b(\))28 b(and)g(\(last-kid)f(self)6
-b(\))515 1268 y(fm-paren)n(t)722 1450 y Fg(\(fm-parent)40
+b(\))515 1268 y(fm-paren)n(t)722 1450 y Fd(\(fm-parent)40
 b(&amp;optional)f(\(&lt;object&gt;)h(self\)\))515 1632 y Fk(\(Metho)r(d\))28
 b(Giv)n(es)f(access)g(to)g(&lt;ob)5 b(ject&gt;'s)26 b(paren)n(t.)515
-1814 y(fm-other)722 1996 y Fg(\(fm-other)40 b(&lt;name&gt;)h(&amp;optional)f
+1814 y(fm-other)722 1996 y Fd(\(fm-other)40 b(&lt;name&gt;)h(&amp;optional)f
 (\(&lt;starting-poin)o(t&gt;)d(self\)\))515 2178 y Fk(\(Macro\))24
 b(Lo)r(oks)g(for)h(an)g(ob)5 b(ject)25 b(named)g(&lt;name&gt;)f(within)i
 (&lt;starting-p)r(oin)n(t&gt;'s)d(family)-7 b(.)515 2360 y(fm^)722
-2542 y Fg(\(fm^)42 b(&lt;name&gt;)f(&amp;optional)f(\(&lt;starting-point)o(&gt;)d
+2542 y Fd(\(fm^)42 b(&lt;name&gt;)f(&amp;optional)f(\(&lt;starting-point)o(&gt;)d
 (self\)\))515 2723 y Fk(\(Macro\))17 b(Same)h(as)g(\(fm-other)g(&lt;name&gt;)
 f(\(fm-paren)n(t)h(&lt;starting-p)r(oin)n(t&gt;\)\),)h(but)g(do)r(esn't)515
 2823 y(searc)n(h)26 b(&lt;starting-p)r(oin)n(t&gt;)f(and)j(its)f(c)n
-(hildren.)515 3005 y(fm-kid-t)n(yp)r(ed)722 3187 y Fg(\(fm-kid-typed)38
+(hildren.)515 3005 y(fm-kid-t)n(yp)r(ed)722 3187 y Fd(\(fm-kid-typed)38
 b(&lt;self&gt;)j(&lt;type&gt;\))515 3369 y Fk(\(F)-7 b(unction\))28
 b(Finds)g(the)g(\034rst)f(&lt;self&gt;'s)g(c)n(hild)h(whose)e(t)n(yp)r(e)i
 (is)g(&lt;t)n(yp)r(e&gt;.)515 3551 y(fm-descendan)n(t-t)n(yp)r(ed)722
-3733 y Fg(\(fm-descendant-ty)o(pe)o(d)37 b(&lt;self&gt;)k(&lt;type&gt;\))515
+3733 y Fd(\(fm-descendant-ty)o(pe)o(d)37 b(&lt;self&gt;)k(&lt;type&gt;\))515
 3915 y Fk(\(F)-7 b(unction\))28 b(Finds)g(the)g(\034rst)f(descendan)n
 (t)g(of)h(&lt;self&gt;)f(whose)g(t)n(yp)r(e)g(is)h(&lt;t)n(yp)r(e&gt;.)515
-4097 y(con)n(tainer)722 4279 y Fg(\(container)40 b(&lt;object&gt;\))515
+4097 y(con)n(tainer)722 4279 y Fd(\(container)40 b(&lt;object&gt;\))515
 4460 y Fk(\(F)-7 b(unction\))28 b(Gets)g(&lt;ob)5 b(ject&gt;'s)26
 b(paren)n(t.)515 4642 y(con)n(tainer-t)n(yp)r(ed)722
-4824 y Fg(\(container-typed)37 b(&lt;object&gt;)j(&lt;type&gt;\))515
+4824 y Fd(\(container-typed)37 b(&lt;object&gt;)j(&lt;type&gt;\))515
 5006 y Fk(\(F)-7 b(unction\))28 b(Gets)g(&lt;ob)5 b(ject&gt;'s)26
 b(\034rst)i(ancestor)e(of)h(t)n(yp)r(e)h(&lt;t)n(yp)r(e&gt;.)1905
-5255 y(26)p eop end
-%%Page: 27 27
-TeXDict begin 27 26 bop 515 523 a Fk(upp)r(er)722 686
-y Fg(\(upper)41 b(&lt;object&gt;)g(&amp;optional)e(\(&lt;type&gt;)i(t\)\))515
-850 y Fk(\(F)-7 b(unction\))28 b(Same)g(as)f(\(con)n(tainer-t)n(yp)r
-(ed)f(&lt;ob)5 b(ject&gt;)26 b(&lt;t)n(yp)r(e&gt;\).)515 1013 y(fm-ascendan)n(t-t)n
-(yp)r(ed)722 1177 y Fg(\(fm-ascendant-typ)o(ed)37 b(&lt;parent&gt;)j
-(&lt;type&gt;\))515 1340 y Fk(\(F)-7 b(unction\))36 b(Gets)f(the)g(\034rst)f
+5255 y(28)p eop end
+%%Page: 29 29
+TeXDict begin 29 28 bop 515 523 a Fk(upp)r(er)722 702
+y Fd(\(upper)41 b(&lt;object&gt;)g(&amp;optional)e(\(&lt;type&gt;)i(t\)\))515
+881 y Fk(\(F)-7 b(unction\))28 b(Same)g(as)f(\(con)n(tainer-t)n(yp)r
+(ed)f(&lt;ob)5 b(ject&gt;)26 b(&lt;t)n(yp)r(e&gt;\).)515 1060 y(fm-ascendan)n(t-t)n
+(yp)r(ed)722 1239 y Fd(\(fm-ascendant-typ)o(ed)37 b(&lt;parent&gt;)j
+(&lt;type&gt;\))515 1418 y Fk(\(F)-7 b(unction\))36 b(Gets)f(the)g(\034rst)f
 (ancestor)g(of)g(t)n(yp)r(e)h(&lt;t)n(yp)r(e&gt;,)h(searc)n(hing)d(from)i
-(&lt;paren)n(t&gt;)515 1440 y(included.)515 1603 y(fm-kid-named)722
-1766 y Fg(\(fm-kid-named)j(&lt;self&gt;)j(&lt;name&gt;\))515 1930
+(&lt;paren)n(t&gt;)515 1518 y(included.)515 1697 y(fm-kid-named)722
+1876 y Fd(\(fm-kid-named)j(&lt;self&gt;)j(&lt;name&gt;\))515 2055
 y Fk(\(F)-7 b(unction\))28 b(Gets)g(&lt;self&gt;'s)f(kids)g(whose)g(md-name)g
-(is)h(&lt;name&gt;.)515 2093 y(fm-ascendan)n(t-named)722 2257
-y Fg(\(fm-ascendant-nam)o(ed)37 b(&lt;self&gt;)k(&lt;name&gt;\))515
-2420 y Fk(\(F)-7 b(unction\))38 b(Gets)f(the)g(\034rst)g(ancestor)f
+(is)h(&lt;name&gt;.)515 2234 y(fm-ascendan)n(t-named)722 2413
+y Fd(\(fm-ascendant-nam)o(ed)37 b(&lt;self&gt;)k(&lt;name&gt;\))515
+2592 y Fk(\(F)-7 b(unction\))38 b(Gets)f(the)g(\034rst)g(ancestor)f
 (whose)g(md-name)h(is)f(&lt;name&gt;)g(starting)g(from)515
-2520 y(&lt;self&gt;)27 b(included.)515 2683 y(fm-descendan)n(t-named)722
-2847 y Fg(\(fm-descendant-na)o(me)o(d)37 b(&lt;self&gt;)k(&lt;name&gt;)g(&amp;key)h
-(\(&lt;must-find&gt;)d(t\)\))515 3010 y Fk(\(F)-7 b(unction\))35
+2691 y(&lt;self&gt;)27 b(included.)515 2870 y(fm-descendan)n(t-named)722
+3049 y Fd(\(fm-descendant-na)o(me)o(d)37 b(&lt;self&gt;)k(&lt;name&gt;)g(&amp;key)h
+(\(&lt;must-find&gt;)d(t\)\))515 3228 y Fk(\(F)-7 b(unction\))35
 b(Gets)f(the)h(\034rst)f(successor)e(whose)h(md-name)h(is)g(&lt;name&gt;)f
-(starting)g(from)515 3110 y(&lt;self&gt;)27 b(included.)37
+(starting)g(from)515 3328 y(&lt;self&gt;)27 b(included.)37
 b(If)28 b(&lt;m)n(ust-\034nd&gt;)f(is)g(nil)h(no)f(error)f(is)h(raised)g(if)h
-(it)g(isn't)g(found.)515 3339 y Fj(11.3)112 b(Synapses)515
-3492 y Fk(f-sensitivit)n(y)722 3755 y Fg(\(f-sensitivity)38
-b(&lt;name&gt;)j(\(&lt;sensitivity&gt;)d(&amp;optional)h(&lt;subtypename&gt;\))809
-3854 y(&lt;body&gt;\))515 4018 y Fk(\(Macro\))23 b(Creates)h(a)g(synapse)g
-(named)g(&lt;name&gt;)g(that)g(propagates)f(c)n(hanges)g(only)h(when)515
-4118 y(the)k(v)-5 b(alue)28 b(returned)g(b)n(y)g(&lt;b)r(o)r(dy&gt;)f
-(di\033ers)h(b)n(y)g(at)g(least)g(&lt;sensitivit)n(y&gt;)f(from)h(the)g(v)-5
-b(alue)515 4217 y(it)28 b(had)f(the)h(last)f(time)h(it)g(propagated.)
-515 4381 y(f-delta)722 4544 y Fg(\(f-delta)40 b(&lt;name&gt;)i(\(&amp;key)f
-(&lt;sensitivity&gt;)d(\(&lt;type&gt;)j('number\)\))809 4644 y(&lt;body&gt;\))515
-4807 y Fk(\(Macro\))23 b(Creates)h(a)g(synapse)g(named)g(&lt;name&gt;)g(that)
-g(propagates)f(c)n(hanges)g(only)h(when)515 4907 y(the)h(di\033erence)g
-(b)r(et)n(w)n(een)g(the)g(v)-5 b(alue)25 b(returned)g(b)n(y)g(&lt;b)r(o)r
-(dy&gt;)f(and)h(the)g(v)-5 b(alue)25 b(it)h(returned)515
-5006 y(the)i(previous)e(time)i(is)g(strictly)f(greater)f(than)h
-(&lt;sensitivit)n(y&gt;.)1905 5255 y(27)p eop end
-%%Page: 28 28
-TeXDict begin 28 27 bop 515 523 a Fj(11.4)112 b(Misc)515
-676 y Fk(cells-reset)722 859 y Fg(\(cells-reset\))515
-1042 y Fk(\(F)-7 b(unction\))28 b(Resets)g(the)g(system.)515
-1316 y Fm(12)131 b(Other)44 b(resources)515 1498 y Fk(This)32
+(it)g(isn't)g(found.)515 3507 y(not-to-b)r(e)722 3686
+y Fd(\(not-to-be)40 b(&lt;object&gt;\))515 3865 y Fk(\(F)-7
+b(unction\))28 b(Unregisters)e(&lt;ob)5 b(ject&gt;.)515 4097
+y Fm(11.3)112 b(Synapses)515 4250 y Fk(f-sensitivit)n(y)722
+4528 y Fd(\(f-sensitivity)38 b(&lt;name&gt;)j(\(&lt;sensitivity&gt;)d(&amp;optional)h
+(&lt;subtypename&gt;\))809 4628 y(&lt;body&gt;\))515 4807 y Fk(\(Macro\))23
+b(Creates)h(a)g(synapse)g(named)g(&lt;name&gt;)g(that)g(propagates)f(c)n
+(hanges)g(only)h(when)515 4907 y(the)k(v)-5 b(alue)28
+b(returned)g(b)n(y)g(&lt;b)r(o)r(dy&gt;)f(di\033ers)h(b)n(y)g(at)g(least)g
+(&lt;sensitivit)n(y&gt;)f(from)h(the)g(v)-5 b(alue)515 5006
+y(it)28 b(had)f(the)h(last)f(time)h(it)g(propagated.)1905
+5255 y(29)p eop end
+%%Page: 30 30
+TeXDict begin 30 29 bop 515 523 a Fk(f-delta)722 706
+y Fd(\(f-delta)40 b(&lt;name&gt;)i(\(&amp;key)f(&lt;sensitivity&gt;)d(\(&lt;type&gt;)j
+('number\)\))809 805 y(&lt;body&gt;\))515 988 y Fk(\(Macro\))23
+b(Creates)h(a)g(synapse)g(named)g(&lt;name&gt;)g(that)g(propagates)f(c)n
+(hanges)g(only)h(when)515 1088 y(the)h(di\033erence)g(b)r(et)n(w)n(een)
+g(the)g(v)-5 b(alue)25 b(returned)g(b)n(y)g(&lt;b)r(o)r(dy&gt;)f(and)h(the)g
+(v)-5 b(alue)25 b(it)h(returned)515 1187 y(the)i(previous)e(time)i(is)g
+(strictly)f(greater)f(than)h(&lt;sensitivit)n(y&gt;.)515 1370
+y(with-synapse)722 1553 y Fd(\(with-synapse)38 b(&lt;syn-id&gt;)j(\(&lt;vars&gt;\))
+809 1652 y(&lt;body&gt;\))515 1835 y Fk(\(Macro\))34 b(Creates)g(a)h
+(synapse.)58 b(&lt;b)r(o)r(dy&gt;)34 b(should)h(return)g(t)n(w)n(o)f(m)n
+(ultiple)i(v)-5 b(alues,)36 b(and)515 1934 y(when)27
+b(the)h(second)f(is)h(:no-propagate,)d(the)j(ev)n(en)n(tual)e(c)n
+(hange)h(isn't)h(propagated.)515 2167 y Fm(11.4)112 b(Misc)515
+2320 y Fk(cells-reset)722 2503 y Fd(\(cells-reset\))515
+2685 y Fk(\(F)-7 b(unction\))28 b(Resets)g(the)g(system.)515
+2960 y Fn(12)131 b(Other)44 b(resources)515 3142 y Fk(This)32
 b(tutorial)f(just)i(scratc)n(hed)e(the)i(surface)e(of)h(cells.)50
 b(Y)-7 b(ou)33 b(can)e(\034nd)i(more)e(do)r(cumen-)515
-1598 y(tation)d(ab)r(out)f(cells)h(within)h(the)f('do)r(c')g(directory)
+3241 y(tation)d(ab)r(out)f(cells)h(within)h(the)f('do)r(c')g(directory)
 f(in)h(the)h(source)d(tarball)h(or)g(b)n(y)h(lo)r(oking)515
-1697 y(at)j(the)h(source)e(\034les)i(within)g(the)g(directories)e
+3341 y(at)j(the)h(source)e(\034les)i(within)g(the)g(directories)e
 ('cells-test',)i('tutorial')f(and)h('Use)f(Cases'.)515
-1797 y(A)k(general)f(o)n(v)n(erview)f(of)j(cells)f(can)g(b)r(e)g(found)
+3441 y(A)k(general)f(o)n(v)n(erview)f(of)j(cells)f(can)g(b)r(e)g(found)
 h(in)f(the)h(\034le)f(cells-manifesto.txt)g(in)h(the)515
-1896 y(source)28 b(tarball.)42 b(Y)-7 b(ou)30 b(can)f(also)g(ask)g
+3540 y(source)28 b(tarball.)42 b(Y)-7 b(ou)30 b(can)f(also)g(ask)g
 (questions)g(ab)r(out)g(cells)g(on)h(the)g(pro)5 b(ject's)29
-b(mailing)515 1996 y(list:)37 b Fg(http://common-)t(li)o(sp)o(.n)o(et/)
+b(mailing)515 3640 y(list:)37 b Fd(http://common-)t(li)o(sp)o(.n)o(et/)
 o(cg)o(i-)t(b)o(in)o(/ma)o(il)o(ma)o(n/s)o(ub)o(sc)o(rib)o(e/)o(ce)o
-(lls)o(-)t(de)o(ve)o(l)1905 5255 y Fk(28)p eop end
+(lls)o(-)t(de)o(ve)o(l)515 3932 y Fn(P)l(art)44 b(I)t(I)515
+4140 y Fj(Cells-gtk)515 4396 y Fn(13)131 b(In)l(tro)t(duction)515
+4595 y Fm(13.1)112 b(Where's)38 b(the)f(GUI?)515 4748
+y Fk(One)19 b(classic)f(question)h(that)g(a)g(Common)g(Lisp)g(new)n
+(comer)e(asks)i(is)g(what)g(are)f(the)i(libraries)515
+4848 y(a)n(v)-5 b(ailable)28 b(to)i(build)g(graphical)e(in)n(terfaces.)
+42 b(Some)30 b(t)n(ypical)f(answ)n(ers)f(he/she)h(w)n(ould)g(get)515
+4947 y(are)d(the)i(follo)n(wing:)1905 5255 y(30)p eop
+end
+%%Page: 31 31
+TeXDict begin 31 30 bop 616 523 a Fk(1.)41 b(Use)30 b(a)f(commercial)f
+(implemen)n(tation.)42 b(Commercial)29 b(implemen)n(tations)g(suc)n(h)g
+(as)722 623 y(Allegro)k(or)h(LispW)-7 b(orks)33 b(comes)g(with)i(p)r
+(ortable,)g(stable)f(and)g(w)n(ell)g(do)r(cumen)n(ted)722
+722 y(GUI)e(libraries.)48 b(The)31 b(dra)n(wbac)n(ks)e(are)i(that)h(y)n
+(ou)e(w)n(ould)h(b)r(e)h(lo)r(c)n(k)n(ed)f(with)h(a)f(par-)722
+822 y(ticular)38 b(v)n(endor)f(and)h(that)h(y)n(ou)e(should)h(pa)n(y)f
+(for)h(them.)70 b(Dep)r(ending)38 b(on)g(y)n(our)722
+922 y(particular)26 b(situation,)i(this)g(ma)n(y)f(or)f(ma)n(y)h(not)h
+(b)r(e)g(a)f(go)r(o)r(d)g(c)n(hoice.)616 1088 y(2.)41
+b(No)27 b(one)f(uses)g(GUI)h(applications)f(an)n(ymore.)35
+b(W)-7 b(eb)27 b(in)n(terfaces)e(are)h(the)h(new)g(GUI.)722
+1187 y(Giv)n(en)i(that)g(there)f(are)g(really)g(go)r(o)r(d)g(framew)n
+(orks)e(for)i(w)n(eb)h(programming)d(a)n(v)-5 b(ail-)722
+1287 y(able)28 b(for)f(Common)g(Lisp,)g(this)h(is)f(not)h(the)g(answ)n
+(er)e(y)n(ou)h(w)n(ere)f(lo)r(oking)h(for.)616 1453 y(3.)41
+b(McCLIM.)36 b(Once)g(up)r(on)g(a)g(time)g(\(end)g(of)g(the)h(80s\),)g
+(CLIM)f(w)n(as)f(the)h(standard)722 1553 y(w)n(a)n(y)23
+b(to)h(do)f(graphical)g(applications)f(with)j(Common)e(Lisp.)36
+b(McCLIM)24 b(is)f(an)h(op)r(en)722 1652 y(source)34
+b(pro)5 b(ject)35 b(that)h(implemen)n(ts)g(almost)e(the)i(en)n(tire)f
+(CLIM)h(standard.)59 b(The)722 1752 y(default)38 b(CLIM)f(lo)r
+(ok-and-feel)f(is)h(quite)h(old-fashioned)2559 1722 y
+Fi(7)2595 1752 y Fk(,)i(and)d(in)n(terfaces)f(built)722
+1851 y(with)24 b(it)f(are)f(fundamen)n(tally)g(di\033eren)n(t)h(from)g
+(the)g(standard)f(widget-orien)n(ted)f(w)n(a)n(y)722
+1951 y(of)37 b(doing)f(GUIs)h(this)g(da)n(ys,)h(so)e(it)h(ma)n(y)f(not)
+g(b)r(e)i(what)e(y)n(ou)g(really)g(w)n(an)n(t.)63 b(The)722
+2051 y(biggest)30 b(problem,)g(though,)h(is)f(that)h(CLIM)f(is)g
+Fh(very)38 b Fk(complicated,)31 b(and)f(there)g(is)722
+2150 y(v)n(ery)d(little)h(do)r(cumen)n(tation)f(to)h(help)f(y)n(ou)g
+(in)h(the)g(learning)e(pro)r(cess.)616 2316 y(4.)41 b(L)-7
+b(TK,)36 b(a)f(p)r(ort)h(to)f(Common)g(Lisp)h(of)g(T)-7
+b(cl's)35 b(Tk)h(library)-7 b(.)60 b(Ligh)n(t,)37 b(stable,)h(cross-)
+722 2416 y(platform)27 b(and)h(no)n(w)f(go)r(o)r(d)g(lo)r(oking)f
+(thanks)h(to)h(the)g(8.5)e(release)h(of)g(Tk.)616 2582
+y(5.)41 b(Cells-inside)29 b(GUI)h(to)r(olkits.)43 b(These)29
+b(libraries)f(use)h(cells)h(to)f(let)h(y)n(ou)f(easily)g(build)722
+2682 y(graphical)23 b(applications.)35 b(Y)-7 b(ou)24
+b(can)g(c)n(ho)r(ose)e(b)r(et)n(w)n(een)j(celtk)f(\(based)g(on)g(Tk\),)
+h(cello)722 2781 y(\(based)34 b(on)f(Op)r(enGL\))h(and)g(cells-gtk,)g
+(that)g(uses)f(GTK)h(as)f(the)h(bac)n(k)n(end.)54 b(The)722
+2881 y(rest)27 b(of)h(this)g(tutorial)f(co)n(v)n(ers)e(cells-gtk.)515
+3113 y Fm(13.2)112 b(Cells-gtk)515 3266 y Fk(Cells-gtk)27
+b(is)i(not)f(a)g(direct)h(wrapp)r(er)e(of)i(the)f(gtk+)g(API,)i
+(instead)e(it)h(uses)f(gtk+)g(just)h(as)515 3366 y(a)j(bac)n(k)n(end)f
+(and)h(o\033ers)f(a)h(v)n(ery)f(high-lev)n(el)g(API)i(to)g(the)f
+(programmer.)49 b(Ev)n(ery)31 b(widget)515 3466 y(is)d(a)g(mo)r(del)h
+(that)f(inherits)h(from)f(family)-7 b(,)29 b(so)f(ev)n(erything)f(w)n
+(e)h(ha)n(v)n(e)f(already)g(seen)h(ab)r(out)515 3565
+y(cells)40 b(and)g(the)h(family)g(mo)r(del)f(applies)g(to)h(widgets.)75
+b(The)40 b(family)h(tree)f(mimics)h(the)515 3665 y(graphical)33
+b(ob)5 b(jects')35 b(hierarc)n(h)n(y)e(that)i(the)g(user)g(sees,)h(and)
+f(prop)r(erties)f(of)h(the)g(widgets)515 3765 y(can)e(b)r(e)h
+(initialized)g(to)g(an)n(y)f(t)n(yp)r(e)h(of)f(cell.)56
+b(It)34 b(is)f(quite)h(usual,)h(for)e(example,)i(to)f(mak)n(e)515
+3864 y(prop)r(erties)h(that)h(giv)n(e)f(some)g(kind)h(of)f(information)
+h(to)f(the)h(user)g(\(suc)n(h)f(as)h(list)g(views)515
+3964 y(or)d(a)g(progress)f(bar\))h(b)r(e)i(ruled)e(cells,)j(and)d(prop)
+r(erties)g(of)h(widgets)g(that)g(the)g(user)f(can)515
+4063 y(mo)r(dify)i(\(suc)n(h)h(as)e(the)i(text)f(of)h(an)f(en)n(try)f
+(or)h(the)g(state)g(of)g(a)g(radio)f(group\))h(b)r(e)g(input)515
+4163 y(cells.)56 b(The)34 b(cells-gtk)f(programmer)e(mak)n(es)i(a)g
+(parsimonious)g(use)h(of)f(ev)n(en)n(t)h(handlers,)515
+4263 y(b)r(ecause)27 b(most)g(of)g(the)h(w)n(ork)e(that)i(is)f(usually)
+g(done)g(within)h(an)f(ev)n(en)n(t)g(handler)g(in)h(more)515
+4362 y(traditional)c(to)r(olkits)i(can)f(b)r(e)h(done)f(in)h(a)f(more)g
+(concise)f(and)i Fh(lo)l(c)l(alize)l(d)36 b Fk(w)n(a)n(y)24
+b(using)h(ruled)515 4462 y(cells,)i(input)h(cells)g(and)f(observ)n
+(ers.)515 4737 y Fn(14)131 b(Installation)p 515 4929
+1146 4 v 607 4983 a Fg(7)642 5006 y Ff(There)25 b(are)f(ongoing)h
+(e\033orts)g(to)f(use)g(GTK)g(and)g(Cairo)g(to)g(bring)g(to)h(McCLIM)e
+(a)h(mo)r(dern)g(lo)r(ok.)1905 5255 y Fk(31)p eop end
 %%Trailer
 
 userdict /end-hook known{end-hook}if</diff>
      <filename>cells-doc.ps</filename>
    </modified>
    <modified>
      <diff>@@ -42,6 +42,9 @@
 \tableofcontents{}
 
 
+\part{Cells}
+
+
 \section{Introduction}
 
 
@@ -1001,6 +1004,9 @@ NIL
 
 \section{Synapses}
 
+
+\subsection{Built-in synapses}
+
 Suppose that you have a cell A that depends on another cell B, but
 you want A to change only when B changes by an amount over a given
 threshold, maybe because B receives data from an external probe and
@@ -1115,6 +1121,133 @@ wait-time (2 in this case). Other synapses available are f-delta,
 f-plusp, f-zerop.
 
 
+\subsection{Defining your own}
+
+As it frequently happens, you may need a type of synapse that is not
+available. In this case, you can define your own synapses using the
+construct with-synapse.
+
+\begin{lyxcode}
+(with-synapse~&lt;id&gt;~(\&amp;rest~&lt;vars&gt;)
+
+~~&lt;body&gt;)
+\end{lyxcode}
+&lt;vars&gt; is a valid variable declaration list such as that of the let
+form. These variables are created and initialized the first time &lt;body&gt;
+is executed, and they retain their value from call to call, so that
+you can use them to carry state between different re-evaluations of
+&lt;body&gt;. &lt;body&gt; should return two values: the value to return and one
+keyword out of :propagate and :no-propagate to indicate if the value
+should be propagated or not. For example, we could have a ruled cell
+that propagates only when another cell is odd:
+
+\begin{lyxcode}
+(defmodel~my-syn-test~()
+
+~~((num~:accessor~num~:initform~(c-in~0))
+
+~~~(odd-num~:reader~odd-num
+
+~~~~~~~~~~~~:initform~(c?
+
+~~~~~~~~~~~~~~~~~~~~~~~~(with-synapse~:odd-syn~()
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~(if~(oddp~(\textasciicircum{}num))
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(values~(\textasciicircum{}num)~:propagate))
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(values~nil~:no-propagate)))))))~\\
+~\\
+(defobserver~odd-num~()
+
+~~(when~old-value-boundp
+
+~~~~(format~t~\char`\&quot;{}Propagated!\textasciitilde{}\%\char`\&quot;{})))~\\
+~\\
+(defun~try-my-syn~()
+
+~~(let~((m~(make-instance~'my-syn-test)))
+
+~~~~(dolist~(n~'(1~2~4~5~7~11~12~14~16~15))
+
+~~~~~~(format~t~\char`\&quot;{}Setting~num~to~\textasciitilde{}a\textasciitilde{}\%\char`\&quot;{}~n)
+
+~~~~~~(setf~(num~m)~n)
+
+~~~~~~(format~t~\char`\&quot;{}odd-num~is~\textasciitilde{}a\textasciitilde{}\%\char`\&quot;{}~(odd-num~m)))))
+\end{lyxcode}
+The crucial part is the values returned by with-synapse's body. When
+num is odd, we return it together with :propagate, otherwise we return
+a value that will be ignored (because it won't be propagated) and
+:no-propagate. Here is the output:
+
+\begin{lyxcode}
+&gt;~(load~{}``hello-cells.lisp'')
+
+T
+
+&gt;~(try-my-syn)
+
+Setting~num~to~1
+
+Propagated!
+
+odd-num~is~1
+
+Setting~num~to~2
+
+odd-num~is~1
+
+Setting~num~to~4
+
+odd-num~is~1
+
+Setting~num~to~5
+
+Propagated!
+
+odd-num~is~5
+
+Setting~num~to~7
+
+Propagated!
+
+odd-num~is~7
+
+Setting~num~to~11
+
+Propagated!
+
+odd-num~is~11
+
+Setting~num~to~12
+
+odd-num~is~11
+
+Setting~num~to~14
+
+odd-num~is~11
+
+Setting~num~to~16
+
+odd-num~is~11
+
+Setting~num~to~15
+
+Propagated!
+
+odd-num~is~15
+
+NIL~
+\end{lyxcode}
+You can see that odd-num changes only when we return :propagate%
+\footnote{We could have returned any other value. The only requirement to propagate
+is to return something different from :no-propagate. %
+}. When we return :no-propagate odd-num doesn't change. We didn't need
+to carry some state between different executions of the body, so we
+left the &lt;vars&gt; list empty.
+
+
 \section{Example: playing sudoku}
 
 We have seen a few example of using cells, but none of them actually
@@ -1539,6 +1672,16 @@ Now the speed is much better (more than ten times faster), it allocates
 only 9.5 MB of memory, and we achieved this result with a really small
 change.
 
+One important thing to note about this example is that we \emph{had}
+to write the function search-solution to solve the puzzle, because
+cells has no constraints resolution engine. What it does is to propagate
+change to dependent slots. We used this feature to keep the board
+in a consistent state and to roll out impossible combinations while
+searching for a solution, without having to worry about dependencies.
+This way the searching function has been quite simple to write, because
+all the relations between different squares were managed automatically
+by the models we defined earlier.
+
 
 \section{Functions \&amp; macros reference}
 
@@ -1690,14 +1833,6 @@ that lets you specify the laziness of the cell: nil, t, :once-asked,
 :until-asked or :always.
 
 \begin{lyxlist}{00.00.0000}
-\item [not-to-be]~
-\end{lyxlist}
-\begin{lyxcode}
-(not-to-be~&lt;object&gt;)
-\end{lyxcode}
-(Function) Tells cells to stop handling &lt;object&gt;.
-
-\begin{lyxlist}{00.00.0000}
 \item [defobserver]~
 \end{lyxlist}
 \begin{lyxcode}
@@ -1923,6 +2058,14 @@ from &lt;self&gt; included.
 from &lt;self&gt; included. If &lt;must-find&gt; is nil no error is raised if
 it isn't found.
 
+\begin{lyxlist}{00.00.0000}
+\item [not-to-be]~
+\end{lyxlist}
+\begin{lyxcode}
+(not-to-be~&lt;object&gt;)
+\end{lyxcode}
+(Function) Unregisters &lt;object&gt;.
+
 
 \subsection{Synapses}
 
@@ -1950,6 +2093,17 @@ from the value it had the last time it propagated.
 when the difference between the value returned by &lt;body&gt; and the value
 it returned the previous time is strictly greater than &lt;sensitivity&gt;. 
 
+\begin{lyxlist}{00.00.0000}
+\item [with-synapse]~
+\end{lyxlist}
+\begin{lyxcode}
+(with-synapse~&lt;syn-id&gt;~(&lt;vars&gt;)
+
+~~&lt;body&gt;)
+\end{lyxcode}
+(Macro) Creates a synapse. &lt;body&gt; should return two multiple values,
+and when the second is :no-propagate, the eventual change isn't propagated.
+
 
 \subsection{Misc}
 
@@ -1970,4 +2124,65 @@ tarball or by looking at the source files within the directories 'cells-test',
 'tutorial' and 'Use Cases'. A general overview of cells can be found
 in the file cells-manifesto.txt in the source tarball. You can also
 ask questions about cells on the project's mailing list: \url{http://common-lisp.net/cgi-bin/mailman/subscribe/cells-devel}
+
+
+\part{Cells-gtk}
+
+
+\section{Introduction}
+
+
+\subsection{Where's the GUI?}
+
+One classic question that a Common Lisp newcomer asks is what are
+the libraries available to build graphical interfaces. Some typical
+answers he/she would get are the following:
+
+\begin{enumerate}
+\item Use a commercial implementation. Commercial implementations such as
+Allegro or LispWorks comes with portable, stable and well documented
+GUI libraries. The drawbacks are that you would be locked with a particular
+vendor and that you should pay for them. Depending on your particular
+situation, this may or may not be a good choice.
+\item No one uses GUI applications anymore. Web interfaces are the new GUI.
+Given that there are really good frameworks for web programming available
+for Common Lisp, this is not the answer you were looking for.
+\item McCLIM. Once upon a time (end of the 80s), CLIM was the standard way
+to do graphical applications with Common Lisp. McCLIM is an open source
+project that implements almost the entire CLIM standard. The default
+CLIM look-and-feel is quite old-fashioned%
+\footnote{There are ongoing efforts to use GTK and Cairo to bring to McCLIM
+a modern look.%
+}, and interfaces built with it are fundamentally different from the
+standard widget-oriented way of doing GUIs this days, so it may not
+be what you really want. The biggest problem, though, is that CLIM
+is \emph{very} complicated, and there is very little documentation
+to help you in the learning process.
+\item LTK, a port to Common Lisp of Tcl's Tk library. Light, stable, cross-platform
+and now good looking thanks to the 8.5 release of Tk.
+\item Cells-inside GUI toolkits. These libraries use cells to let you easily
+build graphical applications. You can choose between celtk (based
+on Tk), cello (based on OpenGL) and cells-gtk, that uses GTK as the
+backend. The rest of this tutorial covers cells-gtk.
+\end{enumerate}
+
+\subsection{Cells-gtk}
+
+Cells-gtk is not a direct wrapper of the gtk+ API, instead it uses
+gtk+ just as a backend and offers a very high-level API to the programmer.
+Every widget is a model that inherits from family, so everything we
+have already seen about cells and the family model applies to widgets.
+The family tree mimics the graphical objects' hierarchy that the user
+sees, and properties of the widgets can be initialized to any type
+of cell. It is quite usual, for example, to make properties that give
+some kind of information to the user (such as list views or a progress
+bar) be ruled cells, and properties of widgets that the user can modify
+(such as the text of an entry or the state of a radio group) be input
+cells. The cells-gtk programmer makes a parsimonious use of event
+handlers, because most of the work that is usually done within an
+event handler in more traditional toolkits can be done in a more concise
+and \emph{localized} way using ruled cells, input cells and observers.
+
+
+\section{Installation}
 \end{document}</diff>
      <filename>cells-doc.tex</filename>
    </modified>
    <modified>
      <diff>@@ -14,6 +14,8 @@ Cells tutorial
 7 Drifters
 8 Cyclic dependencies
 9 Synapses
+    9.1 Built-in synapses
+    9.2 Defining your own
 10 Example: playing sudoku
 11 Functions &amp; macros reference
     11.1 Main
@@ -21,9 +23,15 @@ Cells tutorial
     11.3 Synapses
     11.4 Misc
 12 Other resources
+13 Introduction
+    13.1 Where's the GUI?
+    13.2 Cells-gtk
+14 Installation
 
 
 
+Cells
+
 1 Introduction
 
 1.1 What's cells?
@@ -999,6 +1007,8 @@ NIL
 
 9 Synapses
 
+9.1 Built-in synapses
+
 Suppose that you have a cell A that depends on another 
 cell B, but you want A to change only when B changes by 
 an amount over a given threshold, maybe because B 
@@ -1114,6 +1124,132 @@ time-elapsed changes only when the accumulated
 difference is at least wait-time (2 in this case). 
 Other synapses available are f-delta, f-plusp, f-zerop.
 
+9.2 Defining your own
+
+As it frequently happens, you may need a type of 
+synapse that is not available. In this case, you can 
+define your own synapses using the construct with-synapse.
+
+(with-synapse &lt;id&gt; (&amp;rest &lt;vars&gt;)
+
+  &lt;body&gt;)
+
+&lt;vars&gt; is a valid variable declaration list such as 
+that of the let form. These variables are created and 
+initialized the first time &lt;body&gt; is executed, and they 
+retain their value from call to call, so that you can 
+use them to carry state between different 
+re-evaluations of &lt;body&gt;. &lt;body&gt; should return two 
+values: the value to return and one keyword out of 
+:propagate and :no-propagate to indicate if the value 
+should be propagated or not. For example, we could have 
+a ruled cell that propagates only when another cell is odd:
+
+(defmodel my-syn-test ()
+
+  ((num :accessor num :initform (c-in 0))
+
+   (odd-num :reader odd-num
+
+            :initform (c?
+
+                        (with-synapse :odd-syn ()
+
+                          (if (oddp (^num))
+
+                              (values (^num) :propagate))
+
+                              (values nil :no-propagate)))))))
+
+(defobserver odd-num ()
+
+  (when old-value-boundp
+
+    (format t &quot;Propagated!~%&quot;)))
+
+(defun try-my-syn ()
+
+  (let ((m (make-instance 'my-syn-test)))
+
+    (dolist (n '(1 2 4 5 7 11 12 14 16 15))
+
+      (format t &quot;Setting num to ~a~%&quot; n)
+
+      (setf (num m) n)
+
+      (format t &quot;odd-num is ~a~%&quot; (odd-num m)))))
+
+The crucial part is the values returned by 
+with-synapse's body. When num is odd, we return it 
+together with :propagate, otherwise we return a value 
+that will be ignored (because it won't be propagated) 
+and :no-propagate. Here is the output:
+
+&gt; (load &quot;hello-cells.lisp&quot;)
+
+T
+
+&gt; (try-my-syn)
+
+Setting num to 1
+
+Propagated!
+
+odd-num is 1
+
+Setting num to 2
+
+odd-num is 1
+
+Setting num to 4
+
+odd-num is 1
+
+Setting num to 5
+
+Propagated!
+
+odd-num is 5
+
+Setting num to 7
+
+Propagated!
+
+odd-num is 7
+
+Setting num to 11
+
+Propagated!
+
+odd-num is 11
+
+Setting num to 12
+
+odd-num is 11
+
+Setting num to 14
+
+odd-num is 11
+
+Setting num to 16
+
+odd-num is 11
+
+Setting num to 15
+
+Propagated!
+
+odd-num is 15
+
+NIL 
+
+You can see that odd-num changes only when we return :propagateWe could have returned any other value. The only 
+requirement to propagate is to return something 
+different from :no-propagate. 
+. When we return :no-propagate odd-num doesn't change. 
+We didn't need to carry some state between different 
+executions of the body, so we left the &lt;vars&gt; list empty.
+
 10 Example: playing sudoku
 
 We have seen a few example of using cells, but none of 
@@ -1547,6 +1683,18 @@ Now the speed is much better (more than ten times
 faster), it allocates only 9.5 MB of memory, and we 
 achieved this result with a really small change.
 
+One important thing to note about this example is that 
+we had to write the function search-solution to solve 
+the puzzle, because cells has no constraints resolution 
+engine. What it does is to propagate change to 
+dependent slots. We used this feature to keep the board 
+in a consistent state and to roll out impossible 
+combinations while searching for a solution, without 
+having to worry about dependencies. This way the 
+searching function has been quite simple to write, 
+because all the relations between different squares 
+were managed automatically by the models we defined earlier.
+
 11 Functions &amp; macros reference
 
 Here follows a quick reference of the main functions 
@@ -1681,12 +1829,6 @@ c-in. Another useful option is :lazy that lets you
 specify the laziness of the cell: nil, t, :once-asked, 
 :until-asked or :always.
 
-not-to-be
-
-(not-to-be &lt;object&gt;)
-
-(Function) Tells cells to stop handling &lt;object&gt;.
-
 defobserver
 
 (defobserver &lt;slot-name&gt; (&amp;optional (&lt;self&gt; self) 
@@ -1874,6 +2016,12 @@ fm-descendant-named
 &lt;name&gt; starting from &lt;self&gt; included. If &lt;must-find&gt; is 
 nil no error is raised if it isn't found.
 
+not-to-be
+
+(not-to-be &lt;object&gt;)
+
+(Function) Unregisters &lt;object&gt;.
+
 11.3 Synapses
 
 f-sensitivity
@@ -1898,6 +2046,16 @@ changes only when the difference between the value
 returned by &lt;body&gt; and the value it returned the 
 previous time is strictly greater than &lt;sensitivity&gt;. 
 
+with-synapse
+
+(with-synapse &lt;syn-id&gt; (&lt;vars&gt;)
+
+  &lt;body&gt;)
+
+(Macro) Creates a synapse. &lt;body&gt; should return two 
+multiple values, and when the second is :no-propagate, 
+the eventual change isn't propagated.
+
 11.4 Misc
 
 cells-reset
@@ -1916,3 +2074,74 @@ the source files within the directories 'cells-test',
 can be found in the file cells-manifesto.txt in the 
 source tarball. You can also ask questions about cells 
 on the project's mailing list: [http://common-lisp.net/cgi-bin/mailman/subscribe/cells-devel]
+
+Cells-gtk
+
+13 Introduction
+
+13.1 Where's the GUI?
+
+One classic question that a Common Lisp newcomer asks 
+is what are the libraries available to build graphical 
+interfaces. Some typical answers he/she would get are 
+the following:
+
+1. Use a commercial implementation. Commercial 
+  implementations such as Allegro or LispWorks comes 
+  with portable, stable and well documented GUI 
+  libraries. The drawbacks are that you would be locked 
+  with a particular vendor and that you should pay for 
+  them. Depending on your particular situation, this 
+  may or may not be a good choice.
+
+2. No one uses GUI applications anymore. Web interfaces 
+  are the new GUI. Given that there are really good 
+  frameworks for web programming available for Common 
+  Lisp, this is not the answer you were looking for.
+
+3. McCLIM. Once upon a time (end of the 80s), CLIM was 
+  the standard way to do graphical applications with 
+  Common Lisp. McCLIM is an open source project that 
+  implements almost the entire CLIM standard. The 
+  default CLIM look-and-feel is quite old-fashionedThere are ongoing efforts to use GTK and Cairo to bring 
+to McCLIM a modern look.
+  , and interfaces built with it are fundamentally 
+  different from the standard widget-oriented way of 
+  doing GUIs this days, so it may not be what you 
+  really want. The biggest problem, though, is that 
+  CLIM is very complicated, and there is very little 
+  documentation to help you in the learning process.
+
+4. LTK, a port to Common Lisp of Tcl's Tk library. 
+  Light, stable, cross-platform and now good looking 
+  thanks to the 8.5 release of Tk.
+
+5. Cells-inside GUI toolkits. These libraries use cells 
+  to let you easily build graphical applications. You 
+  can choose between celtk (based on Tk), cello (based 
+  on OpenGL) and cells-gtk, that uses GTK as the 
+  backend. The rest of this tutorial covers cells-gtk.
+
+13.2 Cells-gtk
+
+Cells-gtk is not a direct wrapper of the gtk+ API, 
+instead it uses gtk+ just as a backend and offers a 
+very high-level API to the programmer. Every widget is 
+a model that inherits from family, so everything we 
+have already seen about cells and the family model 
+applies to widgets. The family tree mimics the 
+graphical objects' hierarchy that the user sees, and 
+properties of the widgets can be initialized to any 
+type of cell. It is quite usual, for example, to make 
+properties that give some kind of information to the 
+user (such as list views or a progress bar) be ruled 
+cells, and properties of widgets that the user can 
+modify (such as the text of an entry or the state of a 
+radio group) be input cells. The cells-gtk programmer 
+makes a parsimonious use of event handlers, because 
+most of the work that is usually done within an event 
+handler in more traditional toolkits can be done in a 
+more concise and localized way using ruled cells, input 
+cells and observers.
+
+14 Installation</diff>
      <filename>cells-doc.txt</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>55c28ca75e619a20f6f71732f49a749403d42d33</id>
    </parent>
  </parents>
  <author>
    <name>Stefano Dissegna</name>
    <email>stefano.dissegna@gmail.com</email>
  </author>
  <url>http://github.com/stefano/cells-doc/commit/b508b9227445e2e47164a0fb55f9aec845c125a1</url>
  <id>b508b9227445e2e47164a0fb55f9aec845c125a1</id>
  <committed-date>2008-08-28T06:12:52-07:00</committed-date>
  <authored-date>2008-08-28T06:12:52-07:00</authored-date>
  <message>section on with-synapse &amp; introduction to cells-gtk</message>
  <tree>02b9b7745f3f37ba02cbae3c90461b0ecc02e6a5</tree>
  <committer>
    <name>Stefano Dissegna</name>
    <email>stefano.dissegna@gmail.com</email>
  </committer>
</commit>
