r8840: doc updates
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 6 Apr 2004 17:11:10 +0000 (17:11 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 6 Apr 2004 17:11:10 +0000 (17:11 +0000)
ChangeLog
debian/changelog
debian/control
doc/bookinfo.xml
doc/clsql.pdf
doc/html.tar.gz
doc/usql.xml
usql-tests/README [new file with mode: 0644]
usql/doc/usql-tests.txt [deleted file]
usql/doc/usql-tutorial.lisp [deleted file]
usql/doc/usql-tutorial.txt [deleted file]

index e9b659fadd17df2a9cae9557f0ba6e97aa7b549e..3643de25ab35be45524ddc2171e6d66431af835c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+06 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
+       * With for Marcus Pearce's excellent work, I've merged
+       his clsql-usql port into the code base. Added the USQL
+       documentation to the XML documentation.
+       * The CLSQL and CLSQL-USQL high-level interfaces can now
+       both be loaded and imported into the same package.
+
 02 Apr 2004 Kevin Rosenberg (kevin@rosenberg.net)
        * Integrate patch from Marcus Pearce <ek735@soi.city.ac.uk>
        adding further support for providing backend for UncommonSQL
index be965bae17b120ed139515e9a4b05de74aff1809..d4c04e9b29ece8119d8b60ad5635d6a2a51d9385 100644 (file)
@@ -1,8 +1,18 @@
+cl-sql (2.2.0-1) unstable; urgency=low
+
+  * Rewrote usql-tutorial.txt to usql.xml and integrated with CLSQL
+  documents.
+  * CLSQL and CLSQL-USQL can be loaded and imported into the same
+  package.
+  * Add CLSQL-USQL binary package
+
+ -- Kevin M. Rosenberg <kmr@debian.org>  Tue,  6 Apr 2004 09:35:28 -0600
+
 cl-sql (2.1.4-1) unstable; urgency=low
 
   * New upstream
 
- -- Kevin M. Rosenberg <kmr@debian.org>  Tue,  6 Apr 2004 07:40:36 -0600
+ -- Kevin M. Rosenberg <kmr@debian.org>  Tue,  6 Apr 2004 09:34:32 -0600
 
 cl-sql (2.0.0-2) unstable; urgency=low
 
index 7f1b20df7a26cedba0606be16fb54c32d9bb5660..c4b2dbb2751c7341327fea86b4aa56e6dd1b7e12 100644 (file)
@@ -79,6 +79,13 @@ Description: CLSQL database backend, SQLite
  with SQLite databases. 
  CLSQL is a Common Lisp interface to SQL databases.
 
+Package: cl-sql-usql
+Architecture: all
+Depends: cl-sql-base (>= ${Source-Version})
+Description: UncommonSQL high-level CLSQL interface
+ This package provides the UncommonSQL high-level interface for CLSQL.
+ CLSQL is a Common Lisp interface to SQL databases.
+
 Package: cl-sql-tests
 Architecture: all
 Depends: cl-sql-base, cl-sql-postgresql, cl-sql-postgresql-socket, cl-sql-mysql, cl-rt, cl-ptester
index dc9c52db6f5010998367fdb6812eae4669be8037..12d19e90ea3e0e2396df28ab023a55d9d0f69845 100644 (file)
@@ -20,6 +20,9 @@
     <surname>Mai</surname>
     <affiliation><jobtitle>Author of Original MaiSQL Code</jobtitle></affiliation>
   </author>
+  <author>
+    <othername>onShore Development, Inc.</othername>
+  </author>
   </authorgroup>
   <printhistory>
     <simpara>$Date$</simpara>
@@ -28,8 +31,9 @@
   <legalnotice>
     <itemizedlist>
       <listitem>
-       <para>&clsql; is Copyright &copy; 2002-2003 by Kevin M. Rosenberg and
-       Copyright &copy; 1999-2001 by Pierre R. Mai.</para>
+       <para>&clsql; is Copyright &copy; 2002-2004 by Kevin M. Rosenberg,
+       Copyright &copy; 1999-2001 by Pierre R. Mai, and Copyright
+       &copy; 1999-2003 onShore Development, Inc.</para>
        </listitem>
        <listitem>
         <para><application>Allegro CL</application>&reg; is a registered
        </listitem>
        <listitem>
           <para><application>Common SQL</application>,
-             <application>LispWorks</application> and
-       <application>Xanalys</application> are trademarks or
-       registered trademarks of Xanalys Inc.</para>
-      </listitem>
-      <listitem>
-        <para><application>Microsoft
-         Windows</application>&reg; is a registered trademark of
-         Microsoft Inc.</para>
-      </listitem>
-      <listitem>
-        <para>Other brand or
-           product names are the registered trademarks or trademarks of
-           their respective holders.</para>
-      </listitem>
+          <application>LispWorks</application> and
+          <application>Xanalys</application> are trademarks or
+         registered trademarks of Xanalys Inc.</para>
+       </listitem>
+       <listitem>
+         <para><application>Microsoft Windows</application>&reg; is a
+         registered trademark of Microsoft Inc.</para>
+       </listitem>
+       <listitem>
+         <para>Other brand or product names are the registered
+         trademarks or trademarks of their respective holders.</para>
+       </listitem>
     </itemizedlist>
   </legalnotice>
 </bookinfo>
index 7e8407c8aa274007239411a27db39fa3565ce6b3..9a5e26d37baa7618c18eb15f95a2c58748f23138 100644 (file)
@@ -5,10 +5,10 @@
 /Producer (FOP 0.20.5) >>
 endobj
 5 0 obj
-<< /Length 222 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 265 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GaqdY4V*,u&-h(+^Z%.[n@Z1Fg/Xmp$AfjI1(JaIdQpPLqYN]L_;''VoA4O%b=6OZ@Z4J`YSeZ2YSTcj1Cd@p#=09=0G%qbUD;E#*.hn1gE[pN73'o&R0\CmjiV?-T.M,`l9[I^>rIbRGl(WV`r`(KTX[96q8ZgPV_8rYfBj^"DVs;$=.EQa\)u!k&gLC<'Hqmq[<H3HHH//s4o(D2=nVnk)*/?~>
+Gar'b9i&Y\$jPX:IYD]^&fAZ'dcAQKfS9S\4&%eqiJgG\74m9_Vi6TNjGW]RIdF,60(03fNnt_2CILc*=,LC\1f.BpQoo*ni&kH;(?-+lg%BUd1`jF9(I]9@E0/<_WLL6/g&8($PlWEY%M+=OJ,AQW/f5$R=<5a,rF:n!?`&J9gZ`O+?2n.eP$Xs@*6hh<(j*3/a<@+Ea&;2+HHSHbZ7Q"hQI4e8o"a'3<LUX%IH*fjnm6`\-%2A/ksJY5Oh6V<$R\;9K)~>
 endstream
 endobj
 6 0 obj
@@ -20,10 +20,10 @@ endobj
 >>
 endobj
 7 0 obj
-<< /Length 598 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 678 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau0@?#S1G'Re<2n/IodNBcEM4L0hfTG7leL;\=-)`P1U`8s&7<.7!u3b#"h[0_C.=hZgY53JMQh=Dh:FV,i:itrNSLnHf'LtIb4ap9=B,oL<RU7ss28!E2(bNTo@JVs1;`d:eu8K#eZ)hPdB$0K2E)RD9>H'V8`H@)\Bg#""ch(ea"4A[E9^j5d$bC$q661"0;&+WK'/t?@Zs/_2rk7VNr.bi)LT9KJ?hK]Vn/!["]4"2U)=R^Dcl'a?S"-Ol/B8;#2IE*&=-:g&5.,tG*oO\K2??IlCbli/$,D;'D_HlFKq=Z'kc1?<Q9i"\PiB)L1jhP`LEB82g9^*VjHG,V%BM[U:$;+Ri)csU&aBG!,K(OrdTWD[&_Mq4QV;#?Bg&?$N]64dJb7gBNjA'gGB[;&&&72q]Wm'Tt_i4u4s/g+\p"'0/HeHU:%VU*!al[]i7uZE,m7II\cdW$'d7`rY>cG0[pZ?tul3(U!3T6>1P^i%#d^*m&K7<U`DEq:4$]hJC)]<JB9)_7di;%f-"DZ;0Z]U/@h0H@X]rp]iro;+i,5SjBqtkX\;_1cCYd\*JJOI]F1-.&u%jj$nTl[sLMUct^~>
+Gau0AgQ'`:&:Ml+pl2FE:$ajK8%,W-BEcQ`/J?5og:3!I8R.d%=68a>F7UYo6j5oBWYoG]cHJ;_>R/9L)hnX9$jBkQ7'T%>=oAUMeAN\S9b1/p:lqC>Zc2M'G'SdjT\r2&B(]kdMG(3edUCSUJudnM'q/(Q`P1LH1jesB,2UqV&NM&O3]4;)gXp`).dP!WJpgmrIH5a;CNkK?rC%Ja?ZQsse8(Z[=,MVI&AJPUL^`lG4#4QD,g:VQpH4_QN9;M.H(T"/(r\QuM/-STEgoWA.(/pTk9Rm<j+JTAV\$:t/N-977F`M*%^sc$+a4/;ihY's&(Dr[US^WGeK<752;>7hZ/)uKgT<VHqbfE5qu.1fS;6F\l7`3EX&eODCAeIIVJX8S6a5<Be[8ocMt/+')8lGMmPuFbdd&aOZ')]@@TiBgBYTk9gQ1&f4;LB-'aHh-<+3_O:d'E]\(\Pn@K,SUG,^8=7(WhpAJ1N@C*s&eQD3$f9D&QpL.CH3R"so,IYFlsm=PD</f_D]5P#3@o[JP%CLZRofI0nDD5ljVM`d0K`W+BO%,tg\[a2t&8`0?A1?!c#[2N@ci6tHCk\1.gnhB*f;C25oFA\Cj<WS#-oYli/9!JW*M+j]0-0[C7)]1f/pSrM:(obeCX6o0r7#IbAEGJeaj$8B.CF\a2<e$uf~>
 endstream
 endobj
 8 0 obj
@@ -50,10 +50,10 @@ endobj
 >>
 endobj
 11 0 obj
-<< /Length 1912 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1911 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gb"/l>Ebd^'SYHC'g/p1-/i+=4kbc".5*hN-^1@s@(14g.;pFj;u-1Hg)Td!&gn^,>r+,U(=5ms>3E-a!q-!+G<Mf7;l,f>5;tF\V*PeIq+h]gWg[B6[VBkhn`S&52u_lX(,V9l2,2WP$!2#1cWc<ujWY0MER[s:=8X/(?0_jFP.`,f0)%tOqLcU9Q'`iSmJT(jSiii2Am5$iDq"o4%0Q``l6TmV.=MR2:YYCoAl_)bde.=gWOmu<bN\.<%[W+'fQ<nV'*3YLQUZZ"'ZmNTA3V$_&8"e/okG@UZRF;&qli@/d,i\qgEClS4$SBq]NkK)g5]52@=ph<pHZb.8E3q)UNQ'O'1QCM7-QlPYP[6D+OE.%L6:=)kr,SYU[<2NaTe9Q/O5sZVrPL"dE4BhH9F4CPd.f\)$C#3$QXF&P>i#Ikj$:de?\C(A.T#gIWX@;%'?fJDmNV!f5WK]^,DQEbP=893>]m;0NqILmX-l"k.r75'THh0l#iUNk`Y0)`Q@MB(T7#$J)jdDL0=9(JNtT]JP+,83YOi?mNRN9Ze=ZPNb0.7"T%;QP)lhH#TPm`BX>tcg%j2f9tOL7UP`^-aYXrm\V5>g#]ug;L_.).gOqBQ`iHsP_/'jf"ndS1lcD33g=$TU#^!?P2'I:s:Bn4!A4:!_;1r:BTQ`YT'/6C!E17qiJtg)E0?fd3:%lpX7kP2QW^Ed%4!`?OJ#aibM`%+RUHJqcIC&W@+hKSf/1Rd@5nmBnd3ahD8eUuO+OER(+m!?tVK5,G*)X,,qSV;Ab6[/R0*YSkkXqg.&7+#(k.2nJYIEA$_=9\s&Eqj4\:61U%+^ufP@dgg>>BfR\9P!%q&78FRKo]<$nX9^V:'@?:a%"5R8"kKZ7uj[YZOp86V8-tHEU:mKIQX$+sallO+.:.6J8NJ%a%2=c>,WT&.%n4c="hd5nh[[]l5^^RSi6KOn[;nX>1''YsaL_Y2jLg@^_ATlNX[<53)f,WV]@S+OFifQTo#H(<<Ef_K,0'gI1-4!Qo!scrJL[e&\fqbS1\8DRP#.Bpm#jnTZMh"KI5ZmU#GjO!,be1V[[I7`2Cp];&fG'96T)#kZ,9c7e7,9r=+[NB6+iBUh]LJ3H8l$_pVgL0X1PgXWq!%ds3h-$p<oFom4i&tM-%^o4ps\t@a;Tf`09eXM-1i'F$Bd'"bI0<kuqRY$Jm4IlScC+;XtcbM6Zg_Gr5r2JLr].NL.ku@7MNW^rtii*IkeYHZI[NR)Z%\8X[WWQ"X!<Ib[e0N@?;+of9T*^3F`%+*Gs%T9ZoFj+X?DHJSlhTC<:QSLG'm)<48nRP*+Lu"kG!If_f`=fhd$7NY+ta[o^)'*b7"jeJ#kX+NPG_#$hb05VqBO>N$<99G%KuVE;Nh>H-kcY&[p>o`Id$[2DVK*e[6:GLs)RS`ApV?W&TmPBC-eGtTL?k(gq#l)GM@Q?f4<OedXub5m?=MQnrK?bWI_45b0*p/4.r&;<P$e_H2D&gVJk9WV[2pTW0Duu83gu788qeA:#0,q?_<cK^*!FXSYeFpn$*Ku9J#8!'.-ad1]<s[hHg;qC+;(dmsu*M5B<s!%9uGdJj=f=0R:![(dc<:e5[1>Ws=3YJkCBOf?/ra'r]1l;PHf,Gn'nhXYT"'Hc#%H^tfp;#FR43g5d9X\je/L.rS5q-H&#mmVlqujVk]C+OHNQTk#d**\Dfni,3\HR6K,ZG8#Kl=%T5u*2mFai]"b[Y;-QE@N,UF*iQFGH-4mMA.Htt+-$+l2qaY[^)[>;9lfecR:REfPI5_sd3*du9")4_:BL_\jg(3hRS4lOjEu&1&&-NXN!=q.0HFdS65(KgIjRLqX:[IAj)[Rd?5iXK-qmB8?/ZZ:$*=<k\acA5kO5QeE0X#H.ojhNWY2&i9]]lhlL7I>2u`r*Zp_D~>
+Gb"/l>Ebd^'SYHC'g/p1-/i+=4kbc".5*hN-^1@s@(14g.;pFj;u-1Hg)Td!&gn^,>r+,U(=5ms>3E-a!q-!+G<Mf7;l,f>5;tF\V*PeIq+h]gWg[B6[VBkhn`S&52u_lX(,V9l2,2WP$!2#1cWc<ujWY0MER[s:=8X/(?0_jFP.`,f0)%tOqLcU9Q'`iSmJT(jSiii2Am5$iDq"o4%0Q``l6TmV.=MR2:YYCoAl_)bde.=gWOmu<bN\.<%[W+'fQ<nV'*3YLQUZZ"'ZmNTA3V$_&8"e/okG@UZRF;&qli@/d,i\qgEClS4$SBq]NkK)g5]52@=ph<pHZb.8E3q)UNQ'O'1QCM7-QlPYP[6D+OE.%L6:=)kr,SYU[<2NaTe9Q/O5sZVrPL"dE4BhH9F4CPd.f\)$C#3$QXF&P>i#Ikj$:de?\C(A.T#gIWX@;%'?fJDmNV!f5WK]^,DQEbP=893>]m;0NqILmX-l"k.r75'THh0l#iUNk`Y0)`Q@MB(T7#$J)jdDL0=9(JNtT]JP+,83YOi?mNRN9Ze=ZPNb0.7"T%;QP)lhH#TPm`BX>tcg%j2f9tOL7UP`^-aYXrm\V5>g#]ug;L_.).gOqBQ`iHsP_/'jf"ndS1lcD33g=$TU#^!?P2'I:s:Bn4!A4:!_;1r:BTQ`YT'/6C!E17qiJtg)E0?fd3:%lpX7kP2QW^Ed%4!`?OJ#aibM`%+RUHJqcIC&W@+hKSf/1Rd@5nmBnd3ahD8eUuO+OER(+m!?tVK5,G*)X,,qSV;Ab6[/R0*YSkkXqg.&7+#(k.2nJYIEA$_=9\s&Eqj4\:61U%+^ufP@dgg>>BfR\9P!%q&78FRKo]<$nX9^V:'@?:a%"5R8"kKZ7uj[YZOp86V8-tHEU:mKIQX$+sallO+.:.6J8NJ%a%2=c>,WT&.%n4c="hd5nh[[]l5^^RSi6KOn[;nX>1''YsaL_Y2jLg@^_ATlNX[<53)f,WV]@S+OFifQTo#H(<<Ef_K,0'gI1-4!Qo!scrEtX)Y.\E1PJ5gS#r<$>3>?s4Iul]Ja+DE]9do^@gIq2bcb3@dBMs5mV&!UKHllb!kg=Ro*]hNPNcUZUX"*H)Q2"ATMH-__Pktr+kJg-G4k:6KDWA]akjtJSNrj36miKL0P^'6mcX:gkRP@'ok*,:GS''ioP;SA9<85JVBB@^:Zm82RS"161GDKYG=CR&Iqn`6DTfY93n=.l,=)^KGUgWs25qFkD+I9o6`8tZl@9OY5X:to29Bo>eC+*RB0maTnHoikJ((>YrBsAof4asCHG6l='BBj*"^MS&P1e%XjH;7M!Qe;P#;jgo=&,TJ\6MGu?3mA=&Z1=+co6hWSgpF]03-HbO$'<j<;@Xt&EmIl9ciMk9F,aqG+Dt:U$oJ%D81MNp7.HKbIqtdkmd5Pd)Aq_"aSCF&g:n-lOI4XD>2jnP@8)s&)M03:SqmK5B\ZW#.cuJ05#RsJ84(Fl!CRUm>JNC^3'gS,1&EG;ASgG!O7>$_/7j`FaM)UI;83FJcl@$Rd-9Qa%@m;Z&jl=QrnXYoRfn`HO]2=WRR$B#>.\gaLumXE$7XW!r]gJjNS`T#U+gu=&"(G*X'%].d]N..jt0oTH\/BM(XA?3=,8cb*5uq$)dY&GAGhPA@f-`5C*n))Q?]<]KniN&G,+r_l_=NCZnB@5\EE;P.CL9[.Ip^]@G_LqG9!)9`P6#-'aL1TU)^:h[FS>attN(D'72PT[Eo&.<!t(3C)nZ2!R0YA8@5&FqEjoaiWjZQ?f,sf'85bKBu#Vg"pI.%1q`fb?eLg155(Wo?lebpeIkG)@Y?;FI]$19n5M/R0`Jk7ca?(cOEToC#n0G0KE!QKkIJ5Zjr>``eVR)^Up5V<@2"T<&N.'8r02tQ(,=a__9Qtr!V>p7(E~>
 endstream
 endobj
 12 0 obj
@@ -1075,10 +1075,10 @@ endobj
 >>
 endobj
 189 0 obj
-<< /Length 2655 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2637 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=->BAQ-&q9SYi:Q+j1DV:n,dM@5p%42KVhmP(9To^;KHsS4Tn&pRrVNq^!lT[;h56q`Hlm?2/?fql?E^QpmiuK,qTaD6[;^:jT!Ns>kBR!C>r\n;oi?pU5!"1"H`rsCcME#E@-PW!%0i3FOh5^9Tc4/.m/1jq(]!<\1\7AbT'HoMo<LD7jaSaIrq-$\>D(c?BtttN)"8K2=nRup1Xg`pC1bh`aEWi6]3`p!-u%VYmP9eS=o[:/p$(Z8r-U]?9NG<1bA67;i],g$EN&$M[pkrF3jYTMhVHf(ibQ;"i:rub`rTIYjhn[Q3,t;D$<MMZB;_2B>?n;c,[M`hkLt,sr(t897o=Ge1".f2<@dETqC$A#@>r\8>1QS^9j6_S,hr&/_inhlA[$.6.):u24U3-^"Xk]hP1[>%$!,];f\3jlkLG)sC*E3-\7`Ln@&53r#)b8VQMbP4)1UY"3-C+c,a-E6)9dJk,3;hto$1.T=l%o,(PJf5rUMKMGd6MG"fj+ZWKS3iL6n:V!%FQ2$mkE'^l9.gKoZiXGea'4VtKC_k.Id@Aq/$UP$=5mS*lM:0^,a`Wu<=hq+R3@@4F7kkDK`O*+3@3p9Yc>ES%'0#?%/bU);*Z<R#NnQT_CiFU9PdFbs28:OLc8Y2NbE1dAq7h,Nbn4+b(RjQeh0pBL$(f`8E9ePF7RFYhEDnq+:C865S-%9b0)p#VItWkE)'bhrqm\uI(/F9CeUMm/B:hD6p8GCA5@)Gs4nXGgmrGNd5k9q:O$Z\h"FEWag'&[9``aA[gG7[#4AT5r=Y`Pj^q,FLljW1'K["@<">.VtQo]Yo>nK`o"86>fMeItt'5L6,SsiqXaDdlGruXi*l-Q.rr4\`;LRU;!,YV-sgh-1/g_<fcF$%%8rT$r`dP!Em.mEiI7nWSV[[(c'$5:`C*T5NJ2G^2M.H(pII[IQF9p\1UWLY"O-"5o@261#J`ioWu/a;o&Wg-.6aoTi/*3E(lO*d(a%ZR:^U$Bhg%V/nN;A)nbQUO95?iiE8VR2GnY%oe8((LYF*uCa_(L_Scn?#:-gm4?#0PL.V_l,m[_j8=S9^9as/KrUbc#1PTQf,9%M'j9IjcqX4(5S+Y[[qsa.C0C*hb9m1/1VRF9!C:h7L17Pdp[59!L7;W,EAt!@U0`^sL^_'h5MN(/?bLZG(<N-O9<O0^/$O",;_-aA&gtmNMUI@W\LOem2T\enP2;ii2B$a0U3(mF3C;7j:,M!QH<KF)g<2k\J0H!bR$$p*KD[i$LCV]O*Q;E_di=n`c\;%O-(`UtDMu^3Sh0UEJm'h_;\IJ[sRYi%Lnoo&RS%S(i%$Ki>Z)o4]!bX7UXM^DN<&thJ,\s54;J`i*Ql4PYWS/hI7.>pjHUXK-H=/h_B.LsKTKa:g\4``D`H4CaD":8q&-9UaWD3,8\d30!B8@co9O,DQ71pa:`:BYI2`_&$h6>]]]O2"7KjYj[A_Rn'CNn5.X[bd<$p4'TE"2`Q*hU,\Fus$pLs](GQ\bLfSd\Nm^ZmGK`(B\c4j\J"0#uMK,Y??ZpO3242,I.Kh\`0;.r:Og"*FHAd2L+9YKu^d2$CTTr@F?;&,%Bm%HoPif3iY-F9fG^)V,RN3K-LdZP>nPcH>@uNjK^\\b6j&kOBF<Opuj0rJ6[BT"R+9BK1T[,[*O57CW6JVUC-EW%_LYn:Q$;C-3a.oq$W;<3E`lg0ggc`[I`TZ6!0dBOc.Nm!"-aajnebMfT`ZD]^&bbhJil5VOBBoAH&<r]7'm+:3KnHe&Is]k-32Ve'R<EM'UkKY(`*UXDFRAu)PNW0#:]&cGYq"gS*2[.if[CC`VR!dNm&.rX\NW:K-XqegM"I;MRmMV26.qmX4Z/.14M>Glj?%t4p_Ia;>a.RLEg?>cPMLJALjH?10kWqdj,Hbg\o'sk@,o_%\=565:6/)SB9F<R`f-*7s+'eP/;<^2NO1KJRc.NJ9RL5^L[d<a%\5[YuJh4T`0VOc_)6%SH(H=Ma`;__+FSHt7WbYJ[1SB5Sq%.=bLC.;5V3@D.AaM;u=[jq$LGoB7<UAhM2XmV!q'q&E&4g9?Z9(pE$GA+9!9(\Y_ma2)B-pHi6lnA'e"k^rWJQHS>_;h,N/1Rt5V7Mh8A#P<!M#Weuc[tq0"Ulmhqt0UTh<0W5IBXS",CU1BERC(bSu2q2Ql;o[GejUsC,.<H2eqa&:-uRmf!nsk0IbV'Z+u!b?uec'jt,=QPF5sjN1@q#Htb8(s.N$p3MmD7eWH2+QcDB-r?JVa"2&7AGeM%"H2m`bNpL4*T[tFGP(B*SQ&"nKTu6N^q8a%[:.+Jl>@XTXCm#GXi^<1fX(7]LVnF?+G8#bp-SL:riL5pZ3#Ffm4hXik9XY*^,$.i$S?bmEU!pY:9K9$t-=0"TaqA![mR)J2E`[0cS(2)eSiH$c-5e7KXSt.$%(]"cU@lpVfbg%.&F8daQE?/D_X#I>T,br$.<a&ESJKOX(A(*cC.$kQZT0?U294-AjI(%=!e1NY(Ib9(U]UCIBIn?'\g[ia<S/'BURs50@N4^/8S^p=:Bgc9#g$#4Tdpa(#+QmMh;jQ(<19MBNo0+@&\Pe#SPJ%DYJ/s;OSHk+#]9iQ%;d&#hN?UH?N#?GH9LW)CkM:\^]#=i"ZUQN$=*O">\$n55PH]<l2~>
+Gat=-=``=W&q9SY@*QkU<>NP@Ur[i9360=14insAH)i9;J4NMRLa!Op[&ebl+:`RY-Cr8C?LWB[d:f0`1gb1(QL?#1m0:k5\FQ0GQ1&tgk<".N\Xp-&>^r;*S"oT<[K"DFk%t#I#K0@]s-!PXF6(?dHK@V)X?1peZ]^kc3K#$Fk.,po.';c5>Q(T,ns@[Pg];`A"b6ih"n4SgH2S-/"Z5+uL&egJ3A"CAlQqP1P(nGF`^qqIp!8'8S:4`rcf_W-7%LY)CP\JMj)W?=TjH=-b@N<X=WG]Ym_1]Ihtfc.-WmoN'&n&bJQt-/;E%paod[FtEb_Q,id1!hM3l6-Fl3c"QV&lWjHWUO9^fOX:>#+/;<3&(6r3heeHhbU=i5K<[dSS'PNmr`o\:]!ouPCLG!a-=)`cM3:.ddaJ9J832*u/t"iG`ns)Kr+bAsriJS%?s!-7p,97G:rZ7CeJ,;dS8n;Prk[%s+_Uf"U/@aUW&e"`M8I\\ba"eB3NWGC4i+8VPuF94V2>VBh?!mM81^M)1L4pXWYL?@t1P>Dr=UHg9afib;Q=l%.b^ubF4)cY!j(f#ki5](@PBSnC@W=.2XP2OR,'$X<-VY/moTT?ZIWX7b"o$]Ei]&P!ZQl1%/a-<Xr7\%%Y#T)PM*=3VV3jWE_AG5p`,g;"j(bQ<kbn!8M>*@0_7T+WIQ3o-VrUn^&YP5[]o-(R`mBUV_[)uF@dV*VujcbR]dPWFr:R!9.\8uTR@dDLoKN>?qQ^#u*nqmK&atSHCVikUZ3snWP"FXgnXilV1j9(jf?4&JY=`]72Hi=4:o>iECepAR:Pp7F[B[\>SgSK=?[P4PC,R1B<o/C"U<nT(_4'&!/kt0k?-5dZu,4no>&"O_VbLT@.joBF&'N>ore5UA'GRPKGR,2#<^5/4&d!XGGb(2(X3h@E(WH&E?rF%d)XAQ?VNK8KbO@4_T>i8:lcsS!PGS!]>1`tthC1+E<eSPB4qF!,o-`\n#6_48o3[<"%*k*uPZ+q]50Rl=/.m2jlU/d"SPr3L;C]N2F`OQ"_[&a;B(n)mbDa9"R%dK_+2o%I^XUod.af'F*%MX&8Hh[5W1F()0O)P$2H0YO*O3(/"K?^bM_>lF/d1tjX^!UP/$LQS%"I`tD!FSYqK;8&o-3S)cN)\h!XZ_;YJ4,<C^<!O&"T7rhp?oh2jaR`Wa$ZZl*0<eFVKEIFTEAbab&tX?B[po!X0T%Un_a,'/S24g1SUb`VB20]8WF!Ejr7^B[o?T:".o6)#US\3*lu8"(RTQP,(Ub`RaHbKP/'7,T_.$LI"U.A!^JcTFJ;u?fl1CkD=P2S&iTp<I+gH]P'"u,#;REVT'$88aTUB>?Tt9m(kBm%5ho+1I3R?qlpcC2_2gtGImj.JM`r1i<A]);d@=i)6q[2con<4B0KrZMqTMuUP]TJOPh#X\d#nK"O?=.VFu]q,]TR1LKGj&-&%?4F^t*WW0FF%V!AsXHbL-Rh>;Nr`h<oHn[e[,1mfl(Kq_nKnV!Z3GkL3UkfCNE6m^tioVqD*D4<>gLNXs1W]PVNdkma,*F[;cs:1,jX7;cg\Q7lPeDP%;JUUU@tm$U5%;!J-af3"b4etoZ((U1HOW.VW,;l3^eZK,Za=qkN_K80"7ldoiR"-d5B%>"j#%A(7%_e;.6$QR?_XlI>eQb"F092,SAn*LM3i!!kb"NI*cko9&c[JTbYZ^0'1.24BPFErC_>c<g:T]S!\bO[2ghE?73^[0)H&kXA^$X_ajM8)c"0209UeD=R9dU&I?2P]NEB=L`<6H%]DW\oi_9e9,q('l`Pg,%s]C+i84J#'bRpJuY3Y=4h30.8LIIo^i>`:.ZC]=pR"%aAfCd/KRbQXV$Wo)2P$Uk^'agt3^OM%q2T,H\D+o7PJE1qdHCUVYAOQ[ZHo5&J]4U;$T91).kFB,q,$&R-IFW_@1]?K3dYB'l?#R&OiM>Y1n&?Vt3G?*C49+?BRYrVLqp1K'2<ot%gSOt&[7;C3Cci^bPBC?<?][)+e\kl8FIf"?MJV5&`dIL/!3KoW*VmT,9-)>,5"47uBUiBTSIHR0<cFXqA#o]OhF[aL%n/0/$8Q06:iK$K#_IpCg#4^n/2mY-#?;j?_3K.<rSPMQ:^iU'=[C1Q`dLcL*To]aWdqp.Ka=4<9[#Zi.OFpAE42q;K'EbRp73XTo6l0E;`K3\qmAQ>(dQHKeOjn]KP_\=C/41$gjg&@D`-k.Qf4LW^3qe>OY<H;JI5-5;q8^fk`df#f#/`SV6@b%i9C]>KKfo]No$L%.R$T)g,P3Oa7\Ekoa31JPD:5eV4mOB?=OIO0HX.@;;k>T3gE%aMWh9=g]kmQKJGtl]L'7u9`O)NPn&RCq<ae^JVF4SHGFNUTcSM"9H$1\]UUr95Oj0C3[Cdi0]lKTZ>cDJsG8+Ihk5>_!2G*?T-kHF9.JY"/TBKm&Y/B&1p2<(*&5;A<k.<a344"Zo9/EkE;e4%LD[mPbA1,DoMY:JqnC5i:EnQml;0M]rEre;96GPu[5%'-&G7?7C'2&XrqG0sn2VN.R;4olg?->1]U%*_>@.,Ta<#+.SQ;<W:knof*I?%:)J+#-jFX2oKSfBtiq#jN+*IpB\DN'#$02k96dIm*G"mrkGP[3,&c=RlEebp=&~>
 endstream
 endobj
 190 0 obj
@@ -1134,7 +1134,7 @@ endobj
 195 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 125.6 71.2 316.688 63.2 ]
+/Rect [ 125.6 71.2 314.688 63.2 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A << /URI (http://www.arsdigita.com/books/sql/data-modeling.html)
@@ -1143,10 +1143,10 @@ endobj
 >>
 endobj
 196 0 obj
-<< /Length 1672 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1697 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm<>BAd^'RnB3nDoGM"KgdtGY9gFR<I4n\*H0CPYO^c!H*ijC_Ot+n$+1?"3?%:41scJ3k%oJB("][:S3&ng;LGZq3>eKY,GpLO':%I2FH4B1pl8-p%tCgVU^Y`F@+Wc#1K,LcbqrjdsRj5\6`41ejM7El\G$%G>0A$Y:<E*,0%#]deW;rm]tJ[U0\1;`&>jqA=c'\2J"LQRSNIc5c9!u*U)V\llq,icYomLXSCBlbQ:6qbbQ+B7$ok,X%8KnP*SSYFciGW4>/ruWAi[4Y)-%e]M=BtdT]XIDhZ8pkbUf^5HjB.SSi1>&\T&8Oim.M`e[hDUA0kRXcP6/T%$m#gI@F,5c=4J1ntf=*Ein=o!r$f,XEr$KrAH('JO9WQU2?W.<sYMX>X7IHX]ns[S:&/!5sP'g$Vo0=8`"^4m&0!"YsX9G]n%KS(:4XW)t4\g7[%=+[XE$c,pGf^cGS.deM(1o2*BLi'e[(=JhVLBUqucWobTg;FW0oUO26?SI&#K^\Qgm2Q>OK#POi)*CreV9J(Cu6immn>&L%4mMJuOk<FB,?.h7?JqbQA,nLU%4l4/=+<dsn$1ZjM(m0kd^5eh84JJCgi#(7bBk5)-0d^H=5U((#n3+nboGhWI:G:b5VXhuH.a#lKN@$Tn7`diHB60p1H!48AT/gh"-TEXSSX7H]QO\h\Hc8JeEE#n&Jc3?[LCs(?*Z!TJ#3ss`!iXp.!K)N5*\/[?CS'uuCd5/MM_<$#O%>pMD8gS1J<JCfVm^Xr_O+:d,ZUXHVsfKFM+TE.[tj-"?gjS8S;fG!1?/3n:bIefRh8_1U13)5354T.4iW;]^fm)!8nT?Os+B9"R(\<<+?XrV4M)S=pK8=,Z'nm-&]&6f`KF\/<i@,]<$uAP7GbD0^-W&6V+gEaWgKaY?,p(,F1KZ9"(5>?S*RZKl4!Zg.>G"c2ne5T%(OjK<hOT?a_$uHnoo1(X0j.Shc$f1Umf-&p!0B#$At5B4P=.#-.8NVXX*\(9MM\bH7]\tR`/%tAfSAeYJfLVkfpUX^e?.:@>E:frN;.DFZZN/FN@<9b_n#&[ajSXLN-H^R**asTR+dN+EuI'3S\t^_RetH`D3(`4#,4s\&f[M$Am%$676'.3P=X&c.*Aq<J`W&9o#odNj<KnHA[hq$UWj-ROs).>F-=9!*MF9flNO!RSn#9iJ5?Q`GSZDf#TQW,8T9L`fk3[N&qBN&WCrgKe/<Xl)FcNW8Vkd&pCdl/TN6IQUqdB!S\j:P=/AM)jX+F3Go026_ekpbV2BHaQfWQR\eYuYdE"bD*sB%%SR"C(L9bam^Li"p?o1lJ'Tf9pC>uNFgi7W_m%bKc@eB"TgpoMpD/L>e/Waoa,'-WHFcnZi<L!#B[lB8GM>#g('FNlh4rOH8i8/+2.LK8Jr]9lK@Cgq#7r`YTE>IZ!sUUs3cO;4Pb($1.!4(>9/8=SR?YJlRr&Y)O(nY(ollu6\&h??@AJHKg^\j3dh@K'LW/NDRq/l@RsI!_fd.A;!IR2LVQNW[<u:3Z:BPc.W;%D8f3>R1V8T5q<O8Z!$2lP+N,4FcL\4,QkA3pZ7?i$;2Q-[?``I*LD^P;SP"1?>c+@,r$X'=1k#^HCmUP9jfDP*S4<M**Vs[1fVQ>Zf*QLi'!fsi\%=>(WmD?U+FpT(#62pqa#`Ch~>
+Gatm<=`<%a&:XAW+T*JeeqV@pok#-QcpG"$L3X')U0'u;M)>g3Uo`e;G=X?s,C1df9jtii)02lukG%C^Wt-:XK:9_8_UXocXKSR2_B1Y6<AApN,1JQg`;"D\(H9@d[O;H@d5"Y`EYB1FRNKm\@MP_:\lKfRNeJkrOfd./@J]n%;2^eXKd^i$i)VD'e_s'f-JN$c"EIrn`A)BD"]=^Y<%Jb)V'QV0cf67^4C.XhragbtpAje%m/TM&fFS<a("'PmkC9d.\H-g8"Iue4]u\Y2<9B).(3)e(,3EI$V$4;*mY*o<5s.L)]I`Yf^+2W<'JnMeP@)'uOn950Pru@[(EL`5-Y9,N#?>/T:qc9b*f4(AF9lH:!QM/k5A!kca_OsO:nRA>fikaJ.5&rc0k6=R?8fTkYds'[`HPmZ!72)pa+rF0B*Ed3k?_MEQ"N7(Q\*9H`:d'=kparA?3"!Qk]$23:-juHgkn=J@&%#%kdp!=)(qBA[5gOND-E:-Pc+\JkG%#tH6f&J'M%U\aYlU0M')Y_JR'c"fo^dJ8XG78M7POuV`89n'p>Dn64"oSn/jj"Xr[4dTKW\;#)J%!*q-s9d,:>"L@FV[MTEh6T;U#m*t`-Dl@\D*PtodUN&<X"+;%U^\5":?oGf=a:Z&$J7A[V,0(R]:%V@Z/>0S[PCU4u)X!fXD^JeJ%O*=Y#)p]<>Sm.lE*)n!_`0+7(%Jp+UmK^\(/M+PP/CZQS$E,td_$c&L05H[r>FlmNCesih";bS6#/l_7QLL-BTm'MZWG0%ITe.`1MCO^s1\?P.<D5&<[tj-BTC8AcT?T9\11L2%.$s+dabVN'Oh#Es*aa#U%V*GB?u9s^6q`Z.s1r\,bYGs0kP&iqmmOk@?.S+cf^(c,M;U2X@Z,&h(Use3mK>U;Q<'bkW6rGcaWp^cG"gE_Y!];\3F=;r!O+/ZomPZ$<<`D'Y6YWRClH*)O;^]VJfhIZg['C[SF,=4+ufE/4`$Rq,d-#KYud`+jfT>2eguI`Z/Y$-JBd/rMO_j!_0\3XRIKTE+L-*dHRH;`,p2H(Z2>*!3A8>;L+#I-Au0;+S4'(j/F$KD^&gIY-pLa8*,#.XEd$TtbTfe^ljR>T?K:Pcr_5ZV\,pm0`\6qs)C!j#TN42(1`3hS.m*6Wa]dN,DZ1Wjl8[=p5!U;BE3c!p?_S7"hrLWN6mq-m`:fJK!lf2IF1;nEnH>03EOr2s]M=1H'3B@n8U8s_^d*l]=%f,[bjgN;ELXbh#j]SNR;>4?i"B"p[SQf2Q[3h8RuX@%"NeMaAGBUWMP<jFC$D-E"bXNI\f'j6H*\5X:,OZs>"kl*3Z+sh@3Aqc<X$*.Z>,g=HYgORGM$<9B7s]pHhOXtCVa]YrP<G7(P\Z<iQZ$T/Sl5c54^>h';di.Bj592',k\Si9\="lhRG[",h]cU/i"$1!X*i@&Xro;==pG<'*5G&57,J!sn9#)Dgk+6@AN,Gn([b0Qr)OaNtQr1BQHjVESilo`49XcV#9rZ^ZNc83N0h*<;:<#)qk$Nq^#ddnr&AlBoM$5LHtec56+iC7E/N<Sou]6f:^iHLNY<K<:V@8kf(SXdbcDd$)#6'k<J1CbTk@?jH6PTZ$*!6&k(_]R"FDhJ.MjE[WI>:47kT13-g)Y.e/sLYC;)nh%]u(SoQY0Ns\4-9R(9=pqH5gU)P#g0L7q9$tDos/2t~>
 endstream
 endobj
 197 0 obj
@@ -1158,10 +1158,10 @@ endobj
 >>
 endobj
 198 0 obj
-<< /Length 3315 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 3396 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau0F?ZXs]%Y)g&nFU;@R95_*aa\=A2bB4Y[%"M9>IU0KjlV<+ksel[;COWZI/>,lO8riQ\UD!X$[rWjJfk=#O=uqJYMLg"8K>^Ejn9r@I6U:mZ2Q&E,g/#c(/LZ-10X*8s#N=3*ZOoq1nM^!q!%0[gSpqD:7NSiDdU3urHko!2\7cN9VQfm@Z%2LKOXD@=(3Nfhb<4qc1rVg/E"e-dmhHffZ:'C2W8pnBp>DZFc38`hkdo4)45)H?Cdt@A7d2M?\qgD40^9'LipCH7.nVh]R#c'j#M)m_jG24Etl*r1I<G[1g5i5YHHcA^V%8Z3duKun`^_WG@I[hJji?)TDQ&A<#.]c\;nb8C:+^$iR^"15C#&?juak>s'!UCj2(se"f(NS[4,ZKZm72NP.7?tnm3eF8TRD"D-;(9lD?)sW[3ChYt(D*4_I^:[echYLnfsab5YWDS[`<b]:)A>qP!-@\5)CUSS/p\H99+>a@OZ'A0:1neiqe<mA<YqMoD3)-o*\I]:nr<aCfuC%'-H"dHBlN_%>SCXaCtAfKQ'f1G6AX%.'?Moo'lqWp^0Dq3T_kV*+@[X*o178e$I`);OCGdI(llgl6]dE4[8n)heMkkAJZ6A<L`]8WlI1>1_kbB3(NL-3Tm"a$dhe7pr&2U#+EmGC8&@herc/Km.`h?pKDBJ]N2deOj`3ZRR/<-+@>jG&2ElKHXq))9`GTS@?P)&9@_+2g3DXcAlRu$()=a*RGOG)#ut`]dQV1[h&sZhsYK;D'@FI@s6f;A@iV:gouoX:%Ylsa"*j>Z'%0=bLRX&+$JV>YGBXB^9Un$IhYnt#(9EQB0dH>#lsrY313$=>nYDV&MP9oMY.uU=>\Ba<*Oc881%AI!pEgDbSEYNcS$q8>r0%AVHAaO[et:4^[5`\E)V9K9QFbqLkBscc/L]XoY+BjY19DJKR3:$mX4Md>9BVP_uL/X^+\P7jKm-]^&I/8]HqXXE+*`]0c4E&_:;RIPA0;s1DDdP66fJ(2cmJlMP#55[^SGlf%rXPUCGu=$$4E+!#b*m&NkR;na-R5SlpRiM#=T&G<tS$*uZSBZ8lu@nN%])XCNd(mD9R<fg$Q(oOZtHaWGGgcM*%Xp?kQ:eNUJP^d<&+/B%9E#.o\O,9Bb<*ZkM(FQB%eS@Ib7'TJnV"BhD+PHm/jN`eXj#%dDJ;_^g7Z0=uL`^r"p<u0-oe:AB'6EYf-$uPp"d"@+4I+VG0kfCI+/W"_QlCB;[^t%Q"OXI<eY]CRk8SH(4lHEnY-EC-c8L>@5n3*&]=:4@p51*NKN3Yf9Gl@]q,RdMaC4[smSfW,r0GNmf)X4)N^fp<lqFkUinRcfrEsq1@kL:[o%>RK]"!'^oRSknVPD.+&8oR?6@;mcj"d.Pf[Dl.**:$aX$7=3h30"Z#+bZes(sqC+I]#QVR4!-M)q+iD0eh%ERn84YJj@FqYH#F^+Zj8"B"H4sKpDA7hNoe:=g=+6T#[4U#6T;^n1YI^%$T_.X:>XLWotS&k.)r4+?]c%m?VEO,Wd'__!OM]i#rF9aDc\2Z#tFAMG7V+/.AW1O`:ptJeHj!5i(oL!*ZXip)L<I6@5.t2VWS#1,joZN@PdNcj:*h+Gajrg]Is-Ln'q9ZiMHEia=08(Ph&;%>/WATCL:el-<:a'5/+)g;[A_,+S.61$-E^2&VWl/=1E?3\$.i%#,bC\[m`IL@a2Ze\MAk"S0MA3(<"?k!&JZLe*I,;2NWD,1BJK#V<XF54affgOWU'K8?433:TQV//<qr(5a[CpX$m^[m9^\BA$5B$TifO2DJ8KA2QVZ&4nJ`fTo2HU5&hS0mV?f!VMd(dWiV?GY5?&>k_eYYqR9)Y80fnfg,hAq?OZq>LP^RgCea"2:*ST\PngE5&K6EGiDimbH`/?5Km`aE`Tm9Xr2aHGTkE8%LI[Z-NbGShqSd;RfK\,=B-O5Z!?[!p2[r?Yi*a9gCOUIG/@6Vre"%Poq!/P2lpK0_C6diT&s,W.-BOT]"46.j3Lf.,.P3d?C5JSCaL6R\[_H_*Sr9s7LYf@U=un/L)5,2?P$r;1H`G1X6[Lb$N%kS7VU*$r`.G#f7iBUa/?WA);*CW0Ej9]Lh"'`N!5Us_`hm9Z,8&KR(Aq2][Z1o=RA1`.MCY38;L7Sk#:j6^46D+=1%\kC7mF`hN?.^3Z)B8k(.1SUu%8%p1K@URh/<#.)m4+os*m*&-qV7_R?hE=3.be7+2e/p@L.ahh]nPS#06B5_YcN.)n:J_Su$B7'69p_Ki2u)">sD>L=Et$LbDXDSMR#Bj#B&YNDP#IH3YtDBC3(n]V[KfZ")&mfYn;S,k3t[,hrD=&I;B$:;<Mg,&f7eqIaUZeB-(67bM/"Dsr0r-(TKL%U`BM)tC_j"'Q!AJr\/>7"!D\plUil@\I\9&U32rhO&VR-tkm'?5Y"I3*Pi*>Uhd?12sS=)No(nN"U>B"H&r08DUAUVYNT`(iMGlA*]o#pc"Wm_Ud'(/=R6`e65E)HH)ZL66(/*IPL$`^Vklg3>0Q"46a4_,tm"!iLH_41RF.gdQ@9(n.>7N^:2+<?^4R34=\M5[FK`!u%V?.^@Y.cU?k$1$9Zi+l;-eekY6flL+qUg]6"`g]Qa20G*e>!3Y5/,MR/%JKWC<k>hYJ[`68=Ne@r[Pf!#si&HK^N$!if^%h*mrT3\o\#8Kgp>q4*9p,Z+IG!>2ZRBlE!prtRiJKep^)+po?aAjc2'aA(gkC[LjO-OL^ss$JI6Sffg_QQ>j@4r]]u97V&>q%]A"[K:_p'Xr1YHBJnWGrD(AJ@4n8m+509p^lEb'%D8'Ig6kebV'^0->Z%Gb+Jf!U8Be'5;#q&"R&1"GTNmZF]D$1$grr*:I?dO7%gEa'2dGJE7hpp%.q<bI*\ebG(_en5#gIpYU^[CqIVOJ,pV";YA's!]4p-20*,mIM7J\#o\`d^GhNQ1@kCk#qupFgC>"4o#--?2K,dTRQP\eNkmXV,RAkQ'qFU9Tgq`+9-0Kg1ia>7>k;2e`Gm7pd(d"U5o3LAW]K.QLQ_=RRce@*mcfrbb9BAYoJKU9o3H&)0,':dY$l[^YO;8G(%VHD[=#Tq#7a\&)Z$_Af"[gCTbg;$.^!,Y25NoYUn/XrG8miQW_tWjr%=<3&l:S92&"K`Rh_j:sfpSV%alR/(?52[hG&%0%E0n0F;+NT/$fKf-Fgm5KXO`=1<3Cd&&";Zk%MHmADb@.%a#pK!'Qe>W)lRQ[c\2q$DNpldnAE&q(+nSrP\)jCio2qoRsJfkI2ZDNX%,j?-'(."8>MI6,sV7nB`,jjPTRVQi/[GoC6BE^kZ[$c6gM4T~>
+Gau`Vh/D%-&qA57@J"+E+BGTt9?KC;dP_978DDt&gL>._*,(hE[?2c#P2a`9J!=QD)9Pk*HTL5!IUdCX*"M.ab+$r7lhANF>r[bqC3R+RI6Vdc$iT86g`XtfB]1t64'N_;s#RopT1XA`RkGTFnFQPKW`Ej5SN-%HEIVs_qtFq"lTiZLnXMR,0km616Etf;\N%[ZR=<r:N'/O[@-7E5WFV93AR;:hnT?&5EW&aWe%D"(V7ODY=ibBV/q(cubX,BH;9=)8eeo.+.1W2qT9tGdn&+",]f<3,/@EhA`NAj>+.o'`fD>u.d$jLmk5G5DmEN-9gUldtT:]91o0UJ.XLSS@;2&')M\@JfqlYbSX/Ti#=o'6IeU%Mk66/H`q!Hn8cd-FDO7`#"aVJ2\54EqInkPIbUkRpf)d1`s9>OHIke5'HRB2-U$]!]Or<eg;PR@,MkiHI?<E@V&MR$!8]HRQ]34X1XNLaSt>>+n4f"GYS,`C$<[Ol$Ts&(qc[W\05rj8PLn]1pd"jpOD+4GP^GK6R#6s7B\2G<B`7Y2ssQI[!4qp@>4r6TYR8Wq$Q@m+<PoG,h6c*>sZ#/c<\Ha5Y+2&INR\<FsaLtrH=(uqnNA7/lDq$V5]\p,4!jPSrnB(FC4Y+,8UPSslJ177ek7I0o"oJFE1kta[Har);.N;Gp83hC$<XrB]8h@s+6BQrh?$YMI]T+fl]2$;P4:8kKVdPW-?q=crP6eV.H$WW#P3"T6-e:j&ip06qrGUI^0a_E`Ho>*.mlkS4p0KHU@>8ZsZ5A\R]7_K\e*$/2o+u%A(3#M]^jJ0fMP\)$Tb09;ehCb)YOtl:m"_>"QV;/A=<C-8[.-><=Lp<7,WQE:$nK0o'_H$NqUoS=`o7o0kc:)AD(OZHXoG%B"..@tE9f*t&73lC`pZZ9c&GuUn;Q?9_>ET<ER"4][5j^Qm"L%07[>O3<e?\)_V*01\$ZnS0>ZS/c>I0hNEhWrL9lm#"Lso]>1L`;*V4##Yo9d[q6h'A,1:_d2UZiIEKW#E;W0G`<='=V=M*7+je[Eb5k&H%14D7R;CCT"Yl&UR-Xa!8?cOk[f7mQI%0*tt`<HJfkTllC2&k(G`9frEOA6WiX(D#<iA?qAdB_)=)XC)/'7G$MRes$,];SRg3(4L1oX2e2i%E*S*kPP=2AId'0*X^*lSd#Mj5G5Re!=+KF0#]!T!j#Oh`Kr)Kjs.,ULqVt\LQZ*Sp53qqJ^FQjLrDUe,,+nD,_e4%:?ZAb<]ls!0Qb*I^b#QT<,o-1&MVi'EoQi-%5KH3=[m)L7d@!bbEa]D[BU<n#U1`/gYgX'[NEJ:3P]IX1U4f,*2@C6.&[u\Z\Qe/9=(a75pOj)92<gmAKPEcL?%n8e@p+#"Z&-m1`Dpa5Anmq<N(-`?4qCIZ6J"%]+Kr0Lq50"KPu'."Hg;ChdCgSR1,oc,V!`PM$LJ6OY`Zbk2r=hdcH.ZjuA;0E"le,\PjI+'1"&QW/=Q[DA8!M.'kR9)L4%LS#UnaA?<^PZ]Sh:"'*VkMR<H(U9WqA9c(&q\f=^R6Z`WW^V!Z"4H(rs+j(?32Inb+QmUf(kBOjPOb];<I>DP(N?s%H"K!S*WDG7lZ(fikZMR;6G(Z-=3)c0dNJ<eB?au-R.gSCBI#MZfR=0WpU)5"P(P%?KJGKf[Y`Ds4'*gmup)Ft%(P_ulr&6,QES\1j?oFe,\B,N0'9d]JQ^oY$WCU4^NX9[>*Iqif1!^39^]JGpon[-EMZbc!ejQ!5i]%3IL`g@Kq(-3=WAiJL7-Wn_iLk:'6%QF*>nf*Qru8,.h+'et*sKuE/:>/'Q`ahM'p.$8P2cS?mKar,&>1loB,hBm3#p;BblM5::mH(M[@tMo%2M]5R@s7U(aRuB]Tp,&*>j26G\K@gA'>CJ<$B"ahdF%RbaU/ak/B]7<q4U[X%5QD#C:Ma["'D2T^0t&?Nmj?T"D@Oq"Wt=mb&CBmJTmm:$L+0/um`1V=G4U(1<OE&'2,5b<\4L*9d)&k@sW#67L[`a4n5bc6kOikjfl:B`>k\6SEB[59=_9j:r&_gnu@+iQ[Ep%_Vath7l[H5>"rIhq(ZMSQZjl$eJSNh=^(0c1U7hH+TdGfB^%%2pZ<@I0Ui"R.*iD9KI4gdsT2Fb+-Og,-cDNi<o#8VJAcDfCU7:j)1P%e]*BO?8Tf:i038Q.5lOB@m5u.(08h9D-3h1JDDP,nX4u'WqFK:Ri9K!So4ZMA#4hNPl/q)$L<"9['9(HTJaAH3&^B_@$'Wf#GNqk=BciQ5C7$#Kj<t*0"ri;2TFno`dqlY0Lfe8V)Ku9JnZ+_rqoElUVNSEnMQV]Wg^4E<'AUhd$?b7*V[0fp_2snmH64L>7\`(ZT_g_)XM.]EpRM*]ecDKU[sGXH,'ge`-#I+RARcXqT*Q)aaeoG@-h)\,gC$)1+g:ng,q`(7(4h===;"):e$g`\O-3soMj1<lH\ORk$/`?HplJL]cUJKhHGZ=RQ:uQaD$ODf'!]mX@%LE$%Q/!+fn0NDK=5kZm#7RF&p/%BiPd\NRNc-Lpc5Xg<OS8<8o$]KmFl-Bu*Y]B@QI4.NWrS9QTfRL*b^eki5Zs^*+=Gik][o1:FKQq:9!iq1M-dS\luM;cV#Y`:,rIa7N8iZtYX6DKLeo8J9)+%Y<@Td75N[:Wfu@E=9$QbbN6V[^L![!\r'8lOrN>_%[G$>0pVF1Jh$RbW?:WEkm2F.:A,:8mp(*VV&qO&>2LhYhC'WQ6-A(>oh:mO'b)04-H(0nako*O8Eu_^;"pCc>5:*hoPiuD36a1!aN((^,JBd(74B3PFr=n_bIXg;/ZE]%5H?R,8.PRi\i8U'<07)DgFN4]<TO'1k393r1^("!]T"?-(irur*4XGl"jjRGmE0E1>,H*(Lb&a:\\O6-7Up\akP<ZmMm";)ccA^gbtP&\f9FSQlZ/"&?l=b[J]iM%ae^4iVD&8O]@KU]`-lFAUVRP7Y,R'L)CB6OC-^HoRFkhs%VP+^R35,2KWc;JWeZJNrR^dbMFh3KC:(un$`hPrcX4)AF0!I3H$V)jRhg>X+M5&iqCp=s8L+/qRs'ChMM.VGD3I[RCR40q=r98DiMb6j<W,^)9pJ,^e\.a1Hku>9gU39!o?R$6[1pE)M9sKo,er3X=Q0o<A',Di^a;l55]Tul-Gh</pg7LmACK0?%;d99l<b3,.um7XI3I%k3Jn,M#tj%D.OufPtmY*%Mf:[L">L^@s4D28,[B'Je09dNrGK(XZ3-A(WJOm>^Vn'T<FW8Ds#MbL[\ZsLsc4.&><Hh9'utRdKYg,@7r?oZ<*9o,B_U>4@q.EKQZ%a=e5MAIhM,A*sJe\c@V'_BM-D"md0\S2_0bNg@(1Ie0AJD`N*ZPA7K)8J`AsFe^sI_3"(-^5`lWbqCa;LZXs~>
 endstream
 endobj
 199 0 obj
@@ -1173,10 +1173,10 @@ endobj
 >>
 endobj
 200 0 obj
-<< /Length 1771 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1702 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm<D/\/e&H88.+nSD@TOoKBe4YZB837&LOYgq8/h!#oO=f0u,>51-a2l";,uW_oVX,WKJcNG>muDe`Q$PYTH@%q/a%!KpR31,5ilJB@n`O!aY*ad"OV:i\Q1`c!4>0I2&LJ7mpl6X.b"L!hb\$&Rde%(l^oq^Jj;HLtoLZ69j=Ffo68NjK9dpY01;;7;SE]_6QRbf.gsG%PSE4[)o!*B^5BPTeh(<]@3\MP)V8JW_;u5BX6nNpP>@MYEUoiDAebI$MB^fl<T+r[P-];'uNFo&mib?u_f:-PMdFC;&T.#qljf<No4nUJoj6?W9NM8sLp5eaqnZF47jB84,qe\hbgsreGKp<Z[JEf`gkF[2F'^siefQj;:<h)4BbV!uWj>kS@8q[685LVTK=0-WUGcNf^(UPkG-'<iXaQtE'#9bk7`TRFK+te!34$cAh)4fnJ4+PiMPJBI]@"?#BD[7nmrecT?1P8C-7[Q#?a4q5N%3rtD!;g84d^^^*oE*F4(M@?$/k3c:]>5IT>u.C^Dgp4q(aD9?Dn`2(3oCh[UX2$^R*i/+>99[HcUd/l1e2)Kns?12C^=>0G_'g/'+;)Y]<7&YlhHr#^PZ4W>P_I`=i8li]hWU]c>jC#8eXp=Y\dSu%Q*5c+B<;ki#GbUB6=n<`g"d.:"^*_kB^Z\X/VM+7L=c]Fb<Q0.V9P7s2M;9I&BDf05GW(KH0<fTP;VQSs>a%V0kpMVAYB.^n*MY1a*kbY4ZC7K0b'A:T]tJ'q/+P$uD6C:(`s.C#TV-7A8,o*'cj_]EX4;2P[+U6VqIN2Qd4[4#F!r;9M_f6Z;"n:Zn3(l*=hc!fUA$/:)Y&0A(BaHeS%9?WEHDKqosD;m*/FgbesqB,l&^QW[ZodQ_I-72*[Ye7+qu&VbL!Xt:Kr&isZEkUQ0=TW57)r0HJmBFp?[UBm,JMGi,;T"7$3e<NCE&PR/QM^X>F,)T8C*q!)"L812pU1@2:W673R#@ug>d=f`o<^'7LD)6\$"q,CW$:S!L.aX7fB\P[eNK>#!4)!T(DO\HK=/K4aqj%`p5%=FIE8QG?ld+ad^3AB@e7=C__uS@C#I^bd7D:BVbQ5&CjX0)&h\b^*K&Hn7_Q'NKHNto\]p@5m>'@e\LMk+B<q8G7dZP[p=1.YsTui\seP7;"=.T.deu9S*h?cYuFa*rXQ.Jcpl0*\0T[TLTX>7o.!=C#&a0I]B@dg/S84C`$0crKb66)Xh!IVHmWBGR#:HP:4Zb$hcWG*m,:.6:&[`G$dDheTW8<st".:_W@ao0>tYl]jY#WqW?%\p&c`WanGMFU7RNi-!%q/-?.Ekrf.g.5,tj\0a@AHk\7$dH"u_"q5&5"fS/c.3a;lL07n.QmuqS^J`c1?8n`!rIES=/R7QU+P$bj:pjc;?UZ-P0o:S&L^EaW?r$FCn[:WlPKVd/4tdr;hZJr;,Yp=qX`7^p[S#ZZW)[KN6AM;\l$9Zb5m\1BgMTL3`Y>h`WUS71[<K8$g;PtP(lA[pYD]?JQV?R:oYrdgB7[SH58?'1ICg9U\u[4LnMh7<h5CoTf=TKAt9ibDIHdc%".,(cS&6q=N%o=^8Ok"H%EXFQjOQ5AZGVkFBfmkV"#/?HP9XdjCL1+W<8kiJ8Fr`*YNN]o.fS2nPCJLW&*Y1p(d`ALB6te4qCZ%#@p7:+OT.+17fKaPi!qOpIS.C]I^6mMhd'f:htOPjllZ]fPe!=^dd=:JJYc)IEP%2XR`HA_4"'m*cd5U)Qg10$9iIakR+_lIf]3n.Vf~>
+GatU4D/\/e&H;*)@H>TE+D)otY:52Mm2RZGd^5"CTNHq7[V2.i/@lH7,QGKB8;S^`MN\N=$Jpnh8)DF1-bl8^hH]hCf0R]$1*8Kn`P<KTnt/!cEQ&>,N8/A3=UkBkT(CrP35U-`5JCXlJr7u10(TrA6AD'_);'Z/PipOmdjML$c<8H`KjfdJRSb3=AR]AP,WG&D03<o'Z(].#]Z\(-aiBqW"d.P'k\eLnC0j"&98=Vd:@!CN&[r8*YpBoN^9VlC^)DKg8.C-FoWt8+s5h@[Sf24,BV&X<I(d'K'O@gsr^<I(N3Cf(rj;RT!*:!+*#-HiZ%%eKNqYCS/^I>$p\UP*GcGO,N[d+Y3gD*TkF_b;(#O9UY]F>[X>tDe[4_1M>V$D@`"Gh4E.;LlR]KW])rRi]4B^%jE"Mup6(Vj&U/h>DB9/B:3e$!0hg[gN-;EiECS#][NJfII)T7rO[/)?l#M!0Y=c\?5i62.?P@r',(cSqWBo4"`o1*-8H+*u>-$VC3?50.o["l\nFkm>f1T)mbR27m)FoPgml:9S2k/h/Orh4k%qK:\Q,Vp%e;(hI"4IZepL'@O$iSiGIO+M8$$1`hkJ)sSOMWY>T206mKoT9oDZ))''EjO'%!!K-tT`d?`/XQMVp]a9SRi/_2eM(*rR$ob+ZXd!XKYb>C);Q3G-=]q?iE=]u/A9)FUXgHdK]PQ"<Dou$pUVY.6p\.I0V4Vc25ObT.1g10#0nK>C'YP%q5i&:!u;'_II2_j@7UiNi3;L/Rb3kG&9iKOUE&3FXTN;cNJO)XU=p<SP1be[AS5(u6BN;G-s">/^k"(Bo1bMPeMS+VJkO&dfFsuedu=@UHk&Tig0d<q&h#N.f5+3se!WIUEG82[&dPOgG`blXJdB`X;Qpq-0l%.$X-CmI*4/>P!`V$lJ\@##^>VRn^*[sa2s@D"h`bb:co8r$1^1PH'QBs!?ng0j/f6O;[RX`S,9#if%aG*C,Y\`AlE$8s1;7U;:>GUG>cmQ@X3qGji'#ffDd.S0m[h40h#kPQK2\nTMe:ft+*qD7"Is<mgg#=ms7EE4?D&W@%3^M0N]D&p]e9)k@#4m-JsMm"T]b%7=!7Pe*X[!nIesmUF_7bWm<.6>UG(G^`iKldIT2W;LEbQ:n,&tj5H%=LCl3@V4]<1rqf(^&UM"^/5&tbpcI1t@J`WP-SuJ`qaPkcAQl%iLcaf1M=-=f!/^KLOfW>lX4sJ^sB1lC]UBgY&-b;7?CLLA7^@p6J9I.arq5`QY*sIWO9+&P#Zg@\ProE!JJ;N.n3dP\1K3X,9"Z:tY7n(42V-,Z<2hGYP@#q=('WL!\c>_'/"Xmgfc*O^rqH@Jp95-$FesQO'mspp_*fJ#JoI-"tGmd_^RH0@>3f$0pCtc=(X#WKYTG8nF1V2deST(%Idt&^O:ed*s$iinNOs]fhTEl!!RMoO_^:O+u*o@m%Y&KkM"\Z9?'l:/AEKWsu-bTMXlFM'^N+2>bS2(S&0ha#`+[JlU^_FlOSWA_E:j3$;OJY,JR]&NFH\'QF'g=q%Ihb^-3DWDSnLJUZkDKZ,=sG1=+Kl#",qK;d0`35i;XuRh@b1f`!l.e0'/0'@)`N<LAT.*>j<6j9ij:3rSd^(H+5#'RCS$H3q12MI*P!Z`E'F%PGX&Hb-4XUUHG5W$g0_$ET27EZEkieu$]S3H&BU9,ib=[?;=kN.:#'@~>
 endstream
 endobj
 201 0 obj
@@ -1188,10 +1188,10 @@ endobj
 >>
 endobj
 202 0 obj
-<< /Length 2387 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2342 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%%c&UO<%)1%d"MJm]86fBuM4L6l@LI9TCf*%F4m_N$M3WoY[Zt%A\9[t::!',GBA-f)UQ60>Os2>IH+Ub8ofc[b^?7/XLDta5E"adMobT.\dLh\-Gen^2/JnHD^8^\8`JVSSrO/B).5"7dBS7Dhm(b-+^)[fa=[<uZ.SJI"VI^/J-lTG_</:olphT;Rk-]mhXlokf]t;75Ms[.Z\83j:0J#dW_rAI)@kd9BCF(+nHN>3<3sN)M5^I+$/4<uF_.BBC[4@AWV'ti=$s'qu$;P4,3eb`0+jA`grLQS0lDXugB4VY6&\VVBI(+F_]skA)br<J>H+nfR;.03EFV'l-*]R5J[I&"[-]US]HAOiU@dW.!;3Ynia=`c[)o;,Kju=SlU7J_QLmmjhb2r*C^;d7+2DorJ$uJn]Mu1-`]-05pBlruU+32MC>/JlET0Fe3@1m\q^ju]4+WrAl;tR2(Vj^1X23oL;[VE`QrEE$Qar_EfKco!?qe#!K"X&r'B5):-ie^gj1;$A%)/hYTWrgcfH_`ed8M]E,/5*7n/mW,KA>7WeI2MT]\o^AP[7b7)MmU,F>RL@J.VQR#Lj0W997UJ^E@God&iB1DSA*jm]0_!df6^iI"r4t+2(te[&#^hTI6i"uWJJ-Ii8Vk*"g6H>o]:r#K'it6&uXpBpTm0a^=\Qjkf&FYc9XaH#Cul_6_c.Sn2$#ICmLbfR&,KgRT5q*OsNn?cOUg;r(,4JY!!-uPr:uI/O\!&EB4EJnp.o-4";-A"8\fCNb@=KC-O=ni6s)I#G5`5@4R$PGLe;s`7&7l_]3('[&W=peRO?sl,'6Yc@IFn^1JkBYTaA:E],>?AsTH-8P:jj0]b0;i`X_'a:TpD[q7FuS2j*:lbS_I'QW1OAVslDmF1P,8g9::#N[>"BTb@-Z.eGCV80L'H_SL4=`!u!*1W-mZd$/1EAAAZ:IqQhJfqMbol02Z,j<*a[Ba;E#(S)H>)PjT\g7"0p;ltu"HeY/p'9.W;l>Lci<M1Kc92V[8/eU`g?SN;'pf[D1pb#a8QnmUF?LM]SL:1WnDmukp-'CQ1TJB&pPnR0q-"Yukj$HdN[>0%0@froa0738F>`[h<d&nH+[HbBis*ikA]\s&$*-XjTuHCr8G'G':%T08M+0T!AM;2i$Gmdb/?W[FFBimI%`6%:fK,28IBB[==RRI72k6e0LI4W($CCFCe>>\+RP#*o;h4q"$=b*T!-Um9[6r':LB;nhls!I>!1-e`V#PAUT=ZM%;gmDBimQnr#G!2CNqP.9Y(j"36Yfh$8S/<uZ_tC/U;H4Q+RYi@]%ZHOUS0m/b]V6l;,#9j,FruR3$0T'h;h6ffm1P6M1=&QE*j`-jK3jf%gFBjpl,Z*653+#=9kS.Ij"96M\!1V&5m1:Q1M]3IHcnh,D7Ln1hVcH$f*Gld`iZD*)A4?'*0>0WCkfZZd72aPP%t_YocHD.rERS`UZ3FZbQrK"s<3AWR'K[%?KFnK>7qHn<hqgkahiD`t&h!dl(k?80.1$>0+2R&=@C%!5m1=,=BV_BJ,R2(A&X"SBjOVFUeF,Ub@=Jk$6"2h_n`>!n@/d&8,=L[Ysc@Mb>bE3?gbMU,t4pojmJE=<Qmn&/gKqMn@P`l&p5Q`[.u:)<Tk`'FC+/6tslmM+A;gZ/>jF>.G5TW?[H&DE7$$P1a.P"lZkU1%p6cVo%$^=7=%\P-YW3r+<5%Ss`-4Gf76NI2\8i^%Sb>T<&j<n%*j20E!8Z+!`%:i("pS07BrF?@m'*4jmE!IVdjM!9j[q^i9#PW,D&aSuFA3'8c9.c39YnXtfEOP^#XG`>QN_L,;%d4'(Oo)0>eW:"0Yog<_A))[=l9k$Das\uILh'9\S'E'Dr0/X371"^O%c6#mIkP65P)fX8WG3c(\ZKeDU+:A<&bcB.k&$W.Lh6D`qDW?*epa"e#4]Kk[3^DEs5gk_EJ_Gf"XAA9QX23^Ja!/eKHR.%W8d*R1md6r'RC3U>'`"-d.!")#5Mg2';@`)3@R;`:B6lTrT=*eML'4dMRc:JbmB&;E4dlZC';aE&r0LYSa+Hk@L43p*:K18GtXjbA(7B9_H5a8?2+0Q0^.*#,r0?kI)n7jus)5ge1ISXM3oMq5bG_Z`!lGZ6hp5"2CBMjl&rT1A:Y7KtMaYd[10jIoSm>Nj)i/_Ou`0ermPV2QjJ2VDW&-I=Sn^Ei0G+5+AA<qP[+.TKSi/,bW:_;EU#Q0`K13H44LA%fQPPlNhDWiJ5F..D`Ut=:e(O*b8bd+<M;dr(0dhf(anmpE[r*@[>QFq[?q>]+(I#">cHJ@"JGKGpBZ*-VS>9%NEhn7dj`^s6pZRAjZl0q'jf1JJ6.B<AqCi5(T;LR*N$J(I0_(SiU>V._;K)Q"<&qVY~>
+Gatm=968iI%)1n+psruq;Y71=.m:;2btN=BgZd3LHe@\9[cj*<,eB-YfDg:kJJ:@R8ft[/6h!AE#_E$^dVi2g\+f\L%/aMAg0Orha/a.pW5!9eVG"nPK#l9TfrCM>I=51u]dHYn2`!)r[)DXn(FeX=ffugnmq6ZT*r3t^j[?eI./*_)hPOh#Mel_e96oOp9Oee0)OHSYk=4K,<nr&]-^<FG]G1UR4&LrpB<`Pu7XQ^*/fne0K:[K`30!kb1Vta4:oG/k_p-)YOh/5%#%%l>Lbp?9Ps:4^2n]ToUfX3Od$:Lh1-186_7-0$jP,]FL6ntTZ:<-.G=TpbK+T#mMdHi^[:g+PXCdO+\Jl<M?S2aF=p7H+2Z!)^FNjV#Be]EnP:`[a-1PXtg?p/\,5!6Z+dJJrGd%C4#%+)kASLn-D)T%DATMR:pS*[AKj49BJY/l;$,cd!n<66D?SWMoAe>]=Rk/#5c@7S8P;r9"pqMK1&n';h=`7hNankV,%n]\=LOM(l#!Z:e,G@Q9@H:Y1Fc*4&8!^6ef1Ad:RpRk7>>BhZZ#5*kB#i7)+J2gZH#M:)q0Z7OAIB64G%F/ab]0l6Srn/@6F:7Kc8TMlnr.#&!,EB)#J9->;]Hge(/b6pU+?oHDu5]KMiC0rLnLq/L9>('M4j100aB8I_#]S^9EhsC:"tfA<q>ZYMsujn3TXaKHCQ0lC'1SnU7Z/2N0,d>9U'@!&sh<W43*YO#/cW#qA#ts,>gd%!<rV\8cfimelG%4a+7Rg;#q^8F+d%=W]ILT=1dW7Yrr]\4%;CAj&nXC>$9/(7#[(jqn6fk0lHaAR^J[^JUC?a`(0U-hG!"P,'WW(8etU'O@\]fbRr93D$T$9@*QMe,=clq3mOibL'aP<,.hR!asUp7!N&0mp8F+=W^8<.9K\9Tg:Zp;[Ftp2Wp)79`Ck<Ag$4^p-Kg:#hBZMTV`FREBG*.U8=GF%%$FhjeV5/G-;8"-1Fj!]A?50pieY='hi7LXa9I,V6rB[H_D&fiGW8Ko9K@!6m3-2F!:VQ7&^d#.$2gAYm_i^-+OP1>FZ1qK/b'Fe-c=jf1LNqaZ!+.ZD-f&=N`_I,*F2gkWf)#2Nf4Y5XuK2^7h3^$c6ot]OErJ0?hgK;YF'<q9Pt8Q<T5:S/.Y>)('A[;I(4':5@I]6A-(N6Z(e7C+Wt&"$OfFNgrYk0mK8Z#2<Q3W2>Nt=`a4@,6"ZDr<]HZ"R%MjHi"ru9BUSL,?R'Er&V(hEQ\1'WaN-tTF@'be,i^qVKoi4JJ2d_d`$p3o;8J?17K$>O:O7FqXl=7om3ME*V#IV,!&ujPAs*oV[n"f29UtQk*)/o'gD_);hF'5B[a^O?;K\NSm;=BBL@SfH4l_,;,RmI7Eo_Q1bgV@CR8MI,c=!-2'7L;+8O($K+B#\D0[K?eXgJ7Yj2/3g,r`e]?t+7!=CUUU/Lt$2-o.YP`("<el`u:PLiC;cQugJVkVVFTDpRnJq=*rsU#:l<CD'p]fk067Mtt$Ua:GL0m1)k8M`uX^d#V3+DNX@U"*i)+*OsrME!%4T1F1d,Lg`>n\.GnsK2FnX!ABOkX:#$Eo'I-q0J[glM=F(kQF0KoqX/.;B@.>2:V1Yk?3:#B),Go6_*1O-J-Kg\9s9.V35Yb`:LZCA1Lr^T>DrX;&`n9$)4GZOF6'J7*J,LJ*?5Fl.U5%ElHFNeTeho_H/qA?-`MjjjuusV?ZpUlSp[?nhcR9>YsdL+a"sPCMc9J"OQdRR-qsTp^A32qN6;&\$drj7rD#<>^%Up-6\P:r10B((5N!TUVF[9COUd@W:Reu.6)Gq0@.25BWZ-+I7s=KDNU9I^8hq%J*Tju8k_ut=ZA]<a=F+YC<bKU,9)e%C(m5'gfL>0.f;X,ri&Z3,[&6i.RlrKo`<eNjO_1FnC2kH,K>356XaV`B-TI_ZnAn&cZ;61ojp+Xl]iMh.n[h8X"uK:?4j8hZ'O,GW[\Dh94ccTs9p4/Z=3/YRU&A/@h4^$l@&:&akPg2)NC+GjiPO->r8'0U(DC;:\MY47]+"ku<tiKYB<Zq7Gp)\ImKT>KX?\%G]cUa%;tp4+^lu)ZmZl56c-j29=&lRGhnPlR]o7era\F\>AGnJORI5@uQSo9'&a'(%\ZjE(Ro8^@hQf3K5#8fEgGZ>uJ&HbH?ZCjFd50$5m\eGcC$s`kqXak#Y$(0_G)k+5rYBGu);mEC04pJ0_C%,5>Z<"?L$6^2DL<n)a@HRrCQGTUp0E79k]!s3I.uU[kB#s*,6,*_q?juGJM.e4\kal'3`&enBA9I_=)V18bcMu_(Ps'0cM;;;R<hQ/]%Y+VC5i>o,c31E$_oII7K3E#+e*!~>
 endstream
 endobj
 203 0 obj
@@ -1203,10 +1203,10 @@ endobj
 >>
 endobj
 204 0 obj
-<< /Length 1967 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1998 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau0D95iQE&AI=/#e;2],$&Vbm:G*#.8ls5>J&NTdfUiDYo64+8p%bWoX?KmLH)T=,V?7iKc`H6S/5g-HojQ;Fce\uLHK4`4Rem<"5iYDcZ_]/iL?e_T[\2JQ1OD<Fbs>bf!lnONgk86cgfs/WJgWB`;/iF5O@kd=b%j(i[#<l9#+MOI"/QrB0dB/c2HVgamI31(dI4tP;G[V.)js_0?E]3DN(6Y<bkr)qI\pa\AAcp/aAY\3X<5;.G?pr`@4B7JlF2"#`FCFp?c+)La)5X*RFXh/FEg[c-BmkUF47o68TQ;P>pk24q\L@`(j$CO,>$R/FB4</tnP]S]-MKYH;%Fc$gFUTIj=#ZQRO;'Z<dXd#?q(/;<(TKYhONKj);PP!cE*i]aK"NfJD/1*uOtk40]\mGuZ,5oKhC2/DVidP-;.A@q_)EY7H*(p^F^0joPM^;DPTfn/l$r\<@.qWVfW5Bjl4^Us;^2KLOcgjF2sY@mIkot,9\1<!,;gUQ%g3@ed@EY&W)iRY)sZn1IMIGMLe)fqJjTHr(`g&=pahQ47N`,/&j?.Z[2L/sUVeB-p8jF,6&bf'O&\\X*WLf^3"rdD>gTY)D2U*N"/3oZTG\Vr67:o'hcf""<e"^8bOfW;n2ZiW@3C">$O'PL$o]3)LRl]/2$+lEdr(dN`>"].`,=HN5uKRf[s1^7!j`qQ9COkH2,G&*"V8F6'\R@]t[o,F:-=4@!,c#q(N*Lq.qKWXITi,upjn3X-*G;`jB/_J2gktAQ6\:"L%(]`eb\R*XW^,M.U0LH%N13cc$![U7C(jniI+t>&TFA[&F%Z.jT+i?CoQB[roYN1uT4Y6WS;\`F)P]7ed,9R^uln<NLMYh]jd@CX*'gNpRT0fET=\&d4k`eK]<fi,U#HG\TH"1`^(a0<Pq$-\mC_3i@ESCo'l#s-2E.W%*ZLD>^1?rVFTBraO.e-kPb/0!jP5&/^AXGrG;diL99:H0=#%h)[$bKRkcdM/KDV1SYNaOkmW?2``A`<Z.i)m)l,9I*gZ]6\haE9jR??L!p[RA[@IIDnS$KF?.etU0uGK2dA=+GCVRkC+"ehG1,mi4R?N<.k2BTSU4298k/QIeiJM!:b61i$5,:.J&]iLe%@UKs(r=;EnL95lGG78BP[Zd2]rDGu;?Ik(L'>hs@1YJS+$lb1f-?X<Vk_A!0RPA0OYR&-eYrhZi6)]CR;"!TJt:F)<21O--\J_H3g<C".HAlh%XmAfXW'P65h>IBb_KOoRr<"H&'Zk)0'5C6GP#qGT,XrZe88n9u>g1UKNO%me+WbGDjdbo=N2mYY5Ve0QL,cNLk!a`Eqoqp7;4'!A+:,N[L:2!Y'/04eh\h6S_/uO7mNMKgDo^:tnmSYZ.;\V:5(SZd;T]aX"ZW.W]e/Hts_+&unH8.sW2[)nkWJsmYJGsjmn;cR3IW/t0Yhij)aQjt4,Eu5\;?Npn^+sBqC&64"5%-h/8!5ijHV_=&49<6j0r'$1gLJF\kGO5g#:-QJ(S@,t<`e7d,>d%a:"/IYhn`qPYNEJeMmUqQ_U"mW!9QRcDe2YMOGQW.f-?=G1S/%>^-U[`\su[b]dHV]0H6-+k\p=c/)65hqf(;$FR;5tqb#SiF]T0ep(JKJ91p<cBK_=!5e7;T9luO@5MHu;?blqR%bgYhYU1T-l;(t"iifAM%V!\Plk72H7eMJ0d'rHdrf8qSs4V=G',1pGUlpTFl&ltBQ,McgI"L9F]lBm9OjV2['9r-]cc`JC6B@SsiS<GKSKt\j6GKDk2>$UGl0\Y6T1h<=JcqqKFC]_[H=E8+')Vl,qWZQ$JFooC01B49C/+*`GQ:8PnaqL$1%S.+)">n1`.CgAa%s1Am2B'krMij.=R,,Aq8#;d3EDZ@nc:[m,-g9;PYOT9jh^,4[r^kO(o.2TU6p!rOKU.Tf:#L-'s0n_gQ"fK?DVKdQkqcTs49DY.ZqGX,lIsYa`M>~>
+Gau0Dhc&8h&:WfGnF-M'?o>7fZ[Fi;i._^HD+X1;8fr_]&/X(nD20)arS(,6A8@aWJ[TX;%&6VLY#aG_G#rrNh0X:93-^$%c?-cZEUNS*1D,,h_-T2@-6A$HB3I9%%W;kjD#Qu+,KC6@mDhRp/9Cg/(cG=%LBW*6DH><t/Q67F*-@+"S?L61ID6;\K^Ct.LQY'mo=A4qc&='ZMaR\VU.+3I<B"ee$aA[jh`77T,-1G)nf^;*Uuc[//UkgaX;m?3#kDtR0$SDZQa_!beGM%2%H>q:rpA,#d=rRa/g2W:`n4"2Z)$L1MoaFa[u?TaGQbu+;0q2=HDM<&.-]sK@-4(tG0cW2bZpA])F%gFqhU1PZ\o4[[t?)bHk_[)+S+kCTo['(<tN(.24N?q+:*?/iuJ_Re'NInKEC%$8MCcD[1jU;Ti^DCIq(En`e"2mo:crq4;$VIF3(C"WsigS)%2I-eJLuRf\JKP8iQL&TkLc?#0^aJmq</BemQ.B+/GDj8[<IOilB+J]YR`7IlKTZT"1K=hHbUl]lD@_?2s"m>hr(LY25`:+=4fXMW8rSC;)/rf,gb%d][C@/pR_u4(rKNF.VQB?,,69!i=0Yl,b/Ud&20f4a0uehs8fjE5gUiV8=gl40Nm;M=a!>Nnc'jE(Qe]<pu$I(C;_0^T>.B>q_":?XtOcGIldLTnAF5noaloE@Sk(K:4Y%XHqcH07XJ'S$<<#%4[[mf"nb^\ms!R0sF0g%p23B))+T&0OseGa9&VV<Z,#dP2<OF7V6DHo,;:_Yh,([EdI"GYJhft4IKM\?gSue_idnG>d.hVV0Noe%U)mW[ER.jeBA8Yf3,F689(iQN7Ld4*<e^uXi</gQ1kJ@$ec^*0,h?#Sc^3JF;]JHTcr-J$FF-H?Y"Y<qf<9$Eh2gafRC$U9\NqNU=5V6$P?k9"+()BV:YV2:pKB$*3Nt!"o9u^O?T:++Q%&i*LP6.0R>X/82NVpY.\c1Ql@NE)Zs)fJr6^'(G*\fC^-2Q4d%fr3'iBQn'Th4D7J>g^9[i"d.cY`q2k@gH2-'6.W:<:;0t[*26S&0)P#[<s4GR?(m3`hf\#Wg%U_&<.30I!Ie*O+4'":r\9h*FX;`pfE`oYNUnY.L;_jX91tQ&c;.?S/5BCFp2;;As=#2MJIGI#R2_otVqp99lTD6QZ[_F[jG4$AA(UR.C;,>9)X']S\.U=$Tm'*.Dbc[^IZ8A%`.Euq<D5.`:7\<>i9u5#BO-b#9-<'5KMp7hu'-\&i7u128I"Y53Ls4B:MWfoD+sO?YNPF*_P/p!&nHZ'fKiH'6Kh8$h;l<WW_Jd$5OQ3LkO8sN'9h5NB80UWDL\@34oECcdUq1J;4]%gP$chI/^q7i(d5(Iab#D/,-39"46:+D8P,0NU+Rs;K2[5P[.VN_h]?BN0/Od]lAdpT]r_EPl)m\QTfAWXiqK>NJY2iaqag23p\c$9o9MD1P#uMMgq^GC5V6gu*M/s0@G2;YmREAZR:`EN[[Rl+[2_q>TP8]kqdM%NIJF:sdi>kRjIV@ub@(`@%:aFO[2/&NmS/Y;+dKM=J8II%73!jq`g1S2l]`#s*gHcp&_p_;Dh7BSXDdIB",&Ct"5#`Cnd#ta<:a4=f<GeQ$_>@CM"HhhXY]USABMb@Pn=XEmeb-:#P;fW`O(:TtKSY`W"2SLr<bgWe%A<B'CJZIlMm%->g&`VHY2!fr^=lf<ekJNuf)$W]/]E-'cuS?>JTgDbRqaTE;6[0K\q$nL5%k("K/"=uZ[M>P<M'?m%oZWob>OSj3JGd]r=79>b?#5Z:Luon[3#R-.(6Ni3L;&DAL5%5RG6"g9]Yrj<SBoGW['p@J*>55,RWcn_u6QglA^V/[objilsiTbO-@h\Z#CP<%rm7nhfIJ"5hj\c8d/(Fr4YJ*r.qd5Il?-[Y(!C:r'[:N%ier:76,QAk03Q`m_,1Fho;D_-Xt!7O*b%8iF(CaoF\@r@"-O>hk]Y#_HJ7W(et#2c:5BM~>
 endstream
 endobj
 205 0 obj
@@ -1218,10 +1218,10 @@ endobj
 >>
 endobj
 206 0 obj
-<< /Length 2232 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2197 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau`UlVA`a&HC$_&^_,.d`&]a#PY/`$+a)eE3Q]4!BN4[LMUlN_7Lj\5P/lt^%TIPcLT?TWX9&XIb=8_bj:9KN-=%tLHX*O7PC5!(qnZEZY-KaZY*G]oF23(AhV;Q=8Qpn^?YASK>[SQb8II=U8nG?fUqXIQOLFh7DERW^!K)s.l^l(QZq]1Wohj0,VJ;^m*BC.oom%iE#o+Y,[7.b"!Qh"X)>YcND-tCS!$Aa]k0Jh=nbjX-TQii9HhNC.7m-@E-AFIWsQ0rLC<ckAGJRU_0SBq;#'<==I3`!p$Zn3,+Yf>:boX[Lj=(?9)RmR],k%h[?4rW<mM/B@A#_bmX@i%758^Gcf-3M,i&.g?rn-`eBW5RjDHTTZ(nLBgA&<l^mehX'6)Y?Rd:A-fASld&(MlGD](d_1Qfcnr>(T.V.aJD,")Q+,/kk\2]bGMac_gm9T!(`[E3HK;bHQG!D(%0OsV$'.b&bJN_[Ei]N?CI7IW]/,Et^mlk/>hS>L.3?/a'AZglSbVt%UBE'4&p2DYW#)2;SHgL$.&SJ*bo,Jk'^c]U%iQ)1p'U%(-Lj`/6ZLsn9-oOn=u?4f6=Z$'HB%e`nLjn?f#MCWsH^o!o24JUbDqPQkmLs`$UksmZh2h!#GBW[[Q&cl`#TOP(TQcr^AM.sTBf_Mr\UY<2e!-X?V)%$\j8Nr=]mJA=(%F8tb/Y>`JfCi$K3J,^o_)'a;:$%*jo)V`r5G/hf?:0SbeUU+(#hCl>,tVUqeGIjd4C,p/n[*nWUtUurko/kW/kGsu<uL[mXfb/[^M6:[AR48(\`s[7H9^#$[L!4./ST3sbXe]EXHm#oD24U2A9ugB`r*6=er(e[-o*FG1+=^r9LS03i,VEK"A0[^j\esgoF\+e%*'(G:a^.I=%l,0V(Aq+"I<06PB1GPM%g^W^]pHo"<R+@IoA2)L;g`'oEq[RK>a3h;j"bFPa<PL3eZTUPnqPAS'OCr)T^-800%>@hrPZl<dna8:fNLQNX:TIlp70nSA8#R-93VHCTs,8/ZEJRF'-OP&TpC;-4/f"0!/;]Q/)\78ejNfW>sMVY2R/C0.ls3m@d<r4AAD>6%'>]IA+Odg&oB)T=foZaE$$M1,d-t)dm#T>.#M[hl/$=!1d&9S$>2CD7E=`5`9jg!6`t\4!MhH!bC?l7+dIPi:!*dl_JCu!$Wqg!i@sVWX2b')fUsOU87n*7qQ[`\='5bYq5O-LHK.+TKj88KsJWL_%E?'!#ia#8(R?378C\@\B't-.dFH-)K-!U?H/9`$>_n]K#/5%[B,NBq$V5H439+!YXVZ7#B)'n39)h$^QM<@"hUt2OY7#AXE3M?\@3rL,,.M(.OlZ&#Ge`-6UjuUUr901AR,RE')!g\]N"X6.DjmeaUUZ!P`K;9O[T==UA5?Wo`MNTJX"J^&).PT+#r"B-O.I-Xt#l6=)\?q^bAj[.\k')BAM%8m0"hRb3RTj.)>'>re"DSo^66D@NOfAI(hR"i/?"1n20D@U?HuHGSpt@f&Om56anTs7$c53f99emr0ido6@a?e:3RY(\&,-"hkc#E,23,6X+O>EIu*paE,a\$!\4\ABDp^?YZLo&?K2)@VXKQ@[(<;gX*MQO[4aXiDD]tPq:Yl4l\?m)/pQ,^kJQg4)GNs3j8SP/1WAa-J$50M#6Y$VNm9;P0;jGdiUs6ASEd@'e`=p(4.uQ'CP)Kd,?VP2eoqrc4?4@ANYDO/Yod!%2NZO8lq2A*NUfj`@Y&[fT`n]Rf"JfY$MbD!I#%Ajg2HNLVBH/A8"+,GiIdlDWaQHTRO31GSRE[/L;0d2]@IBaA9V%Cd2XDDaI+p2iR8C;$^Ak<Q#F@UJUHQT>9HpSN<\^C)9P#da)L&G4?qA'gb.@6UujY`2MR,=Bfq7K^CA2L^h^%'<!<"tO^,QuF>7CF\f5`jL4AfFpMA3EY)3)F9tAC/i=P7Y#;e@]%1q)()TE;m[EBoRXD^9YSK)p=L[tb$n30UsqUl6seMJjg"oj_>I[Q^r%8K-_Zh*-ErN."Z.7ZQcUTgQKjDZp;>0)mP":S%U(J@)7,p"iW.[iUfB?Pm-,"Vet,r&_kR\W@+PS3f/VP'2DhlR04d.H&amuV\KVK&)1@uX(/YWcqA/Z,RHgEQrM-&'B2mJC>!F!pra+oXddY`*.g+^Z1)77hF3o4dAA;D7^WKgNgk3s0$9\,+:<"^b<kFjJg]eoQrO,Zi_S&V#s2NaujmMUOe;Ka7e~>
+Gau`UlYkN9&HA?:_T4nd!@h,'l]FB>Zus_(DVQS][NZ"b>,Gf3HFT[h-i:-_IABDj-\Z_q[_NHii17r9r-3EJ12inXkJuPs16FSQju__`B#bgWm*?SP?GMrBBd;LR7+pL=s(\0:bI"c,`#opmdY!,0R=&Sh\#p4D%Lr]pKBRM*a6$=5^d_bbaJ#DuX4:"/X-gLJackN$$bF:0Dm[#K84?BQhX#..m5`8]L$fa1Pb<rr$s,jEeH-<K':rZ*oFcohEa)N&P^Z8b(&L!reKU!9`'l\]`k3iX,KXYRo9a?59./S9OOo)LOpYZ@[@`Yj;.BUZ0ePP`ZAFa/`'D7IUV<Y\p0=cTG#7*&h1t;".=p<AYJ?O&7:k96F@ER2402t9XZ4lhNtP`o$pAKYje0t=S=^U/L4Sl&\GJI`MIN5DJ3.0BkP]b7gK,?DR%#_6*Y%`WqMk[(O,%QZFa%li4)OhQDFo+\/X$$dag5,DE^T;)ZE+bbgf9#`7nKMD<irt&JNDPnOR%&]NCVA3qeXSJB%U6OmZo/m1b!IA[Y@P;EEWu;]*HpH/4gK`9eOq?"dVp"Wk;FY77D/a4sM@LQIuHR@[s<$AK(Z4pj9#g]cE_p)B0LZkO<jU*kgBeN]fd*BD%^_iA`S"a@oI=cZ2-@BY:&RHsD2Ea/_>*(q_h.4D'TtP.W"#*62HH!2K?rmEt@gRhAe3_^';o</[>o9naGpXk'i#oP[SKls[S>;C7&gSgb.+9<sGc)IMQFO_$u,>X9s=c@@A7*=nn0gK_.'TqO-?gMrD&A4$&T97,.Z#LXakBQCYWO.=!#P"lCVs,M"@.h'=G]3a(u^_'eLkQS]fEJdcL@l1&JAmKXCRX/G3Zf>1a?f/e)Z/*27;E`Bkoe#Sn\KL]kWD3!dZ$e]knnX:b8!PE_gqZj8^s2ba%R(7(VJ4bTf][cdQL*P$&_c@+/iiAI9Zune8^!Eff[<IXZS#n(8E*()'c/l)B[no7Npk5Id3XX5^/a3H0"W*001i,Jc6"Oo1)uX'*=VjHTdYMM6&U\D3=S"`FnsFZ2c3]cRJ1u\ms7UTZrkd0Dq1V`StRF!P+JX^ZN6iH(dOu#.4D#UHg%e+JC#l+oGFopVT$'1&*oZ&b?0mkXJ1k%/=2K*KBjopP8mWE2&OM/,H5EXk-2K6^^PMD#srKkcDo/hL#:jaLSDsQ/CSYtm;#np'DC9*3M*+di-Z-RL+q]q*KS)VIBO7^B:Y\rLb+!ukDEZ&Hs%n]T/WT+#:*qgigYn3WFC^K'Ot9@"Mq*(!N(\l/dN=FOqPJO`IRZaPIe5bPUsM"R,[lk:nZ):\[!Y6N>B5Cb][jAn=nXr,>Sg$6_:S`:`ppCij.(2?jSMU0H)=77!9@q'fcFJ=]JcTWAk.dVa40V'&X#'-t[P7$4<-HXC[Z-aZiUJh:V#NnB='9FqC;H?GIHhhZd4uC3g?'$2p#p,s>nN^q!Hr'G2ob>:ZY2i#Ij,09(u=Ml"F1VR!Xb/.)3qJZP_"eq?RBI8t:B:kA1D>essB@n8FH6;mq>]<r4HGQH`RlF?9")_hOu8mGA-10q^(EWN>1'sA1+b]0NK1`\A?DGq]3k=#DhK!/L]nLlOqIr:d+5!M0jK9LMSe&XM+U9g%B(XYcJ5FtPTC\?@HLjW"]gK)o=^/`9;+i$NLDY4Kh>N&Q,f3.'f-o?M,C>fkn57I\dk3-U`$nST`i.$N57AaQR0S%c-h(cZ4mjc?=4CL1`00G2rHgl.=3rE"#G"m/7Q#cQ%SW1WZdE1JABP`Y,qPYZGmI/T:pOEm,l,hV(o]>`/_s$An"0h],e)\g99AmX=LCWJRNj&WqK(!elo\nj*jIP91A"69U>9W=s)rrV?Dq-hOeJT<b47>FBiu[RU'=Q<r/EE2UM83.#D"q[gFS`/<hJr@.e7-J'laFKgg4*saaO&mA59&O'=mrPp4t#:%Et.\QNH=m+"mSKIk,e,th@2d=o%,g^[]jY%ERA%Y24A#7E<T[i2SBu1%Kjq.^+m@cS]?r8pu?%8!Dm:>UE[cb7<7q&U_@S!aDs.<i^_iB*tLKW7eVn=hW49AK_k3DXLC(k8SFlmpJ]kt\Ad0?^HHhK!dX*eo6\:3h4:MB1Mt-lU7H5^Ifm+W4q$r?^obX()jOqfhtaYN-IP,Tq)/T9+^5[(9>9_8?3PF#pr,t.U!6om@c-r:]G,'_9%&2CV!u"~>
 endstream
 endobj
 207 0 obj
@@ -1233,10 +1233,10 @@ endobj
 >>
 endobj
 208 0 obj
-<< /Length 2560 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2775 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm=D/\/e&H88.iUoiA+D1:]>9,V0CE9cLeo%n-ITZJuZ0@X6/39#+fDg;a8Err,Pnr!`+Q,C,mu@qIpi?@VH1Bl@*JFM#7a'%F0Y5")7tLLE7q'ntdi]jnFL9h_rk;QQBlVJAkG*$]c.'3Q?9l-V1(_C[5AX>ZJ$/!@No1r6ms/o&%7nbdd.`gHlQ+DVclN+cc(iZQ,5ZdehOt(6Kn/l:bE1,8W1T-bN0_4=9MDar@tMj(H.q1XO#<+K2(_)coX1S8\O6>=)NV$([-J?SfHOaDqgLR)l^-@eF+jL;$Ng3/Z(g<R+F`LO60J/t(TUU0,Tq(<"Hd0/O]SpR",/`.JW5c'3iA6!d.d`oA?(i6MroGXIGIOs2@_g?D#%iC%;5)KUPcL&+/*7QI]R8/2k3IQ-Lejkh_5fB\oMn2.OP*>VccNq?9L0!,bqD9Drr/(+?m$Y;91TpD'#+RB$^fpV&8'o6H>5iO%?V>#("H"6kksl&[b#Y%T3ALa.D\3'F2?ie(l,\R[^lj<UJfAGXuEXD"HEWX(@c+!D1]8C=0,b(*oqqM.De[VPi)6F&jI&9E9U&'K_ECL=?QGWqH[Tosp*=U'YNj>X4cFZ\tXFJOq]7l/O%\G+=d`<c!b=#?n2p3)I^c?)$.CbsW&;^">-ok#XR)pYho(]BhG?6q)-ppu8T\q@JqdFVA\A[+h@7%#YH00-*c8EL##$l-X=p`)5O*PF%<o/Uc>JaW)%)e!D6R4O\IqG;4\r3[ClHJ]VO(nZa13*W,]79W'.jXh>J#@b'1MQ]V8sUJEg#R/L(o7l:(`o,K"j`@E9t-'e!Hb7FHr2GfO.nG$`[i7L\F/kRB.k)bK/QE(Ds=XPo/7D6((=jk]\EufjreF'Md_2sTc;hW<->k#B:E(:@]bc%>NFJ')pGmF[-:8Er`XY*7:nSYQ$R21f<SMMB][?'eER,`@tV:F%DdelX3V5pZW)0P;(%C$CUV;i1Mk^-*t1uEo0iblTdld7\`L$a`D`eP/UOffJB*&nilZ.;LF[lXKR]_0VO4iQM`eG1$Wmas<dbAV%(P-bZd")uaJVh,qt76[*so/Ud9#$!5:@m<Ub\10H7UYV&>ggo4EgDQ-,A<uKm5Q7T49EKV`ZoMt+VTq>E@SI4,N5d$_19KR-<V`#s/8\:RnX!:mkN@:'O`EP_L(hhr9+*rE6l;&"qP4d._.g]?,`>4Y+TfpE6HuL7#4[uogj]]'AeCGY+#<n>H_-B"rX$!U>ZB_cc"m$KN_=NE<TD*F090PIi^l/-iacX,J(FJrm)oqnWCjhmH\hVR;`I]ql#f1W1`dqtM9JRTqo%)9:XJ+6/QQD,1/U_C:S>tY(V)[29NrIHFKG6hKJAlW*J^k(rUF%&1-nTGL@-i9od0"?`.d0<Y?bn<=^sV?@ZhUD^NZA:jdFCcdcd4#s!A'OY<Xeu:(n8Z:C"a5,fFC`ddT@3(AcErUhX[["a2]s\mkODJ#>guU6--C>[?V>W>gQ*%7PpC1.fR*ZROQT/Kh\Cd!nOKJ[6TtCbE\MW.=SF%&j(o?u)8**n8I,g-:]Z+k,e*+sfDEW2[r@S*J`%i(qXnjAf!2W2fqFlJ;#`hn:E]=_tFq:cA#`rT7$<'NOG,*I4CE%s?E!&)!]J:Ve!^?3='%/kW*cFFUIe)\,?dPY=1Yi:"%GpItG>qb<:`M2P!>5Q(gnF,uf6]:\2']Q:L802^opMjnse<(u<Y^8"Ak1lnAf8okY.YLRN*Q91O18N%%-DL;'5^;Gr5FPsS@"\N3dBN=NT#>H29qPi=`ZB96W6an-Egi(pd,bVi69UDK4%&Et,kR*7DW2h%EY_@XDJ.uF>DeiRJLMR3Y4pm7qQ<ArgITDb9H+e)eo;l)^KtrQ$WM1qB2jZ(b=^Mc6U2J6*6Ub(h!4SFqfnW9:UQ\^#ZT_:!,IU@&8rD>g<]^l`*e@:].?=:p^9%$Y-KocE*6m<a+(71)VCp@a3Y\0Qkt2EUk=IW@&Eiq&R(Cr)3U#`LL@cF26i*a0#QjR!F'Y@=W8p\#WfO,Uc1@-oc.$>*J-$ZZ?dEZRbPCr#]>a?-GH^/h&+`lk5J1=p45#bs2RsJ+a1r6HP75O[Bk2IJ;1U;d`<%XD4<ad=&P)N21ki4NkmHeqPVI8!4Oc,TrEM#F3)bjB9$4ii!"RBpgCr!@48JqS)ac(2:8lj#I&*Po+Ji/+a)sh1E)aBkfqq)C$><@OY(W%JMP?0nVWd>1J\lX=Nne_6OK>u4d3dAG!U0q6=]a*jgH`04.5^"pde-VsXfq\\$HCX>FnLd7)/`*5""*UZ"G-L3:gM3>Y<UcE537]`0m.r]d^;9=MlRb)4joMH[B5,YdA!\VC;>p!!4h2%m)Vhq:33Vn7t^sV<]RPSCp3e)@:(kjdg,g$"S0,'omY_gA3OnJ'Y#m`mO^Hn(.(C//c+:<92YZA;J?1QNBojK/g]T5(D-7ia_Z7^Q"UZV&q5%l0/"C>O-]X_as9rADUPt_@_?6Hc,H:k^Fm4/P"=i`P#REmT.<)@C3b#tBT)4@'C&R4HS*#h3G^/h0hI>H0EOuK!eV7#7f~>
+Gatm=>BAQ-&q9SYd)gR;4_(b0MIP;g):rJtmO5MR.;^k\*af;[=AsmsM\Z9h/r@aQ'VqPR1S4,E56?`RMqnQ@qIOjB_n0I;\W/b=/W\]'j,l9>iQiHf_&0u?ops_SbgqEm-ia/0@P[m9)1HE%9g;A0^24g5l/[58F`Vsp)5_o?SdpK"\(,YBJ!.O\S_STb;l=J;?/hd^@IrL@rU'FR-g11USR,U!f<_O$qpV05#@@\Ahgen+W$to!$]JQP#m@B`MQ6ZtDLYd.aQPjZgrtMfT2.YJ#H%#scP]0k34>M,WEBPg"#ju:B9h%SDcg/+U.4?tc:Lr3XcN01VtI;Q][>HZ%4tpaA.O1;H*'kB@%1PF9=."XMUZgD-$s;Tm9@glD8iQ[8^H0::RPY*,/kdD(&H$Sd1PcWh$YZNikqC(nrRYVRVXlbnT]dZSipfFk:CQ&Ra-MdoriahD0363Edi'ZlVIhK.Dtk&7C>]o=_"p/j=3faZ;VgTC=?QnLkpI@6f^Q!?T%]DDA,F-]8ZZ,d(0)laSH+?n+,lhFIf?hm_]0?V-e"A<#I2+]+OrDa(<6&j#[<JXp]&@[QSn2$54i?ec_;?>W4[BHNOF!"A0#lJ/67$S:9:YZt]pAR&mUhl5O7THBWsV(FDHu;grUTSh2a%o"E!QdZ=-l@aigih927QFsD?DARlBREThX=P)KVnJ,GblV'bh&?am+AQlqGaP_DO<W+rR5RMNb9n\_doUTg4BZE-bkNr_XO;t^24(ljH%/EUc^B#P8!:!$_I"j]/a'"cQH=;bu/'_>M<`&Ma'iD\td]pP4TEYF,EEY0^6h3:&r7&i/&XZ)?oHRL4[%:#38D'EGQ&QfT8B;@bIN@ZU6#jSC!VG'Z\3:Y@1`[D]R1X]1E@)=I\F9[LB?"cAmYs@9%PSreI311^oYpG8so&8a_Cg:Pt5#E;fB7DkE?'Y_-c-#Hndi_OP2Q_b(W62V:7__2>X*U4.ELrAof:tKJS=Ym-S\45^]cr6pWG#'2>FMi5qRar=kuR5IpZrc;c<b2;AjMpZ8"m4PcRof_SFTu=/D.V)]A#d[nTXo4k(5Pr\?OLQDmMPr$(Q?;95Q#s-Pam5GX;s<Oh^2Ald[%cDrHp62-F$VUH#)1"=qVWm^9UlM'n/^AX5I=/i\`!QKK3aakG916VC?1ZJ5SgSsl`>%7KB!%pER-%M=7RSmrsGr$JEoeh49Ib[Uk=&l+J["7=JO=3gt28IfspWio(K=mKaYX^QQ7X*U#o$bsZK7^Hr6Lc>5!Z8W33SeK7[&-?)f@&*LZ-6V8_9%&%'*Mge=L&s%C="Dk_$ba$TSj<'N>g?T@UiSp)A6N1W*cfn*iujl<7c9Es<A@5B*!?:Kr7h/5*-u>h&b)qr&jG<q+&CESO*!*.":E0pH_kQb>:'dmcg_(>iZ>CAopcO3q"M4[Ypn0B90N$IG"&Vp5Q1kRp<4jP[Z=&ip@5kP$eP!]O%KQD8W-_.91Z!E6P_(FB[PsFS'KB%`rF+T#cU3?jNlPLr,\.0HMBhtL*"ia%-Lt\D!?E5nI%IojTj(p#kPgqQLX+\54cPi5PbUsr\l@\;/pDXK0*h)\WA/V^:j=e><iU2>BNriS\8eG`kF77G[J%ojk]_Tg3f(DhCS@<@c&&QQZM0KR;.n.T7W3o,f9=<f&ZS8J)_ilgtAE?@=R(W%O\/)/H!3YKdq:g_Y"%RL4SBCaS:8\K4#Y63?K@:LV42V"`6tJa!%=m8g1!V-&Np&6[YHR9s&mmR^CU7&q/f/MP"'ePkJsd2fP(#i5CpT-/[R8AAoVg3sL,TkZ7R3m`fc#_tJ]L;>D$WB3TO\-+2/WlU(LpE0=UQ+Vf8W9[csfk(K5_P<DCEAQBa2=B"Zc!`,<cf]eC3;e$QTggidqGp#:rHb?BOpqYlh[r<:;B6-r)QXKJlqZKd[KS^tcfi@o$JjJV=Q9=r6']bCBG'^p.MJD.XL=`I('_M@N8Q6=ep)C13g>s,XdJVs/0E;i-0[d-ZE?"&s)"*G?$8*Kkf!;@h_ia(J>!KQ[YPN1%WkB#"B#YuqFks`VJfo(XXO2'fMe(4a.eJ0?@h?QO]VN2P-=j5VbQ2$!(*C.DN"BN6i=$k`=LO>\35pu^;;t)s&6+eGf(0qpT'+@m1R_n$4EtWkS&e:b-OF%?oTBdfi,oD7D])lM6X1t7b(TRX"_@sbC*HB%`2_F_/m0E7aU5trf0BCM8rru"PT^:=:1n8*Bi^8s%Eg3Zmp:[W.i_[U*!Y*V`![4&k*p8@\9lTn&u66;o6TXD,2\/\H>^$WU0(uDaU;[!aZP('7aG,h=00O2I7=A,mnQ_ro"@^Ekq!i]>u,+rf,*]@0"nd*]:9oJ^+`;%2`.q`_Lc=0AhP(3I<P5&W.@I+0R81K4>*<@"W1\Y6GKfX]MEf9N?d^YLBNMX]WJG3,Wj]IZd?aL@ZFDcD'1enFQ>\.SjHPC-ZnPPJ!Q0(C,;+!-shj%WDsPU22db?agAWd:7&B^74T\tCsH0dar1[QZ.gJ1rGY@uaQ&g@THrp4M6r:gL5;k$,cWKS[F*E--J67pN9Uf3(2%eZ"f2Tk<3`5FPKA.6Sgj7N"fCh6YV_Q2O%%a44N,3J0K@^(j#W';fFF!r\0TM5PdGn8:pjL;#TGd[9X6%WbplF.2a)(t2&u!+Q"+#Np<5]7';j\`T(K5'NHb1WRmhP>Ff%`C8'h*'n'3gG4K,#@fX5!uQ#s5mqJc)M9`)X8Sk<Do4Wu814,rdJKhZE25s)#&E4rF*ie0XpkG+oh!R:k6+9~>
 endstream
 endobj
 209 0 obj
@@ -1248,10 +1248,10 @@ endobj
 >>
 endobj
 210 0 obj
-<< /Length 463 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 558 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gas1\b>,r/&A70VI%s6OfQf=@[1XGjQO6e\66(UC&<"IWCo8"t:RX,F@ik2PB6HGMj2[HS\+^c7";A_rLnOKu,18'#BRD.J&n@@TetA?5X+V8?kU,.3?"QsX5Rl;<#5jtmpb6$R3]OotTp-6tg4G7W:V4ZDK*E5i(.oC8.`n_U7cSISk4X*NY?Bs%4r:5t^V!DR^tV=,gJP/14Tn9]g<f(t:;'>eig^QHd6`b3m-2U-RDYcG[1mpIB1J/G\[ZX4!fQ4MX+HKn@I0L%bnO31$5s&D[ZVtFA2mOj@B?Qr:e$,h>0R/0_]`D[cu\4E$@]a@248>I=sN>37:a>`AHNbsl%)gA<$)$a0KhRZ1$l/H`h?n9-+"^j[Yg]$j3*g6/G^>Me*r2lMDLLj1$Kl6:`8Yp/Xu[VH&O[relAk#7si4KBg=]QJa=l*ahOh^Tj99DE-dYBM,X6T[]&W`~>
+Gas1]9okbt&A@ZcI-[rBFYPe9]l)@AWa8`&;PgAuQOJdPltO<&.f[40KZmtl<fs,%Dnb':$kH)+mUI\F/p#E^=Y?:$-1^\,659l2kClmCBY=+hA&I8+]Ih9[^VSR?8.b^f!=o/D;(k'Fkj=s,9(digbHYT()se5snlGZ"c)2gcMkm<&eKT)K=ViNo>5n3n.e5`WG*jY4iLEI1?-ZK=>4.>Po9qKGV!_D(\P#7A^jqQ/8+$b@^Es^7p&s*sL>[Tm,Ei!_[-0Z-09;aoLn2o!lI_6td^usfLVah!PC1s8"kL%nOl+SjLVn4;cDuZ_MAEM<G4lL,;15:;8d^+8&\>+)9!"ei2V<"g0]!DJNO>LEp([^hP#0U`f2%bXThUZ/a/=8:`^4/'R,7%O;sp'J)[;l<>j=G[E.(#@8IK9Q&+mGVaKC(W=s@7B@-H7T*\L6?7>AV^L0kI?XegqofH!-0dG`<*D@Z&s]q*W--Mt-@qg.Boa\nM$SL81Ud:JBl6ZZR!OcJebPUUWsrZGI)H*(moV#G:4SZCg%[5=eE8lMS$?G%3P~>
 endstream
 endobj
 211 0 obj
@@ -3627,25 +3627,25 @@ endobj
 57 0 obj
 <<
 /S /GoTo
-/D [203 0 R /XYZ 115.0 298.26 null]
+/D [203 0 R /XYZ 115.0 248.96 null]
 >>
 endobj
 59 0 obj
 <<
 /S /GoTo
-/D [207 0 R /XYZ 115.0 592.98 null]
+/D [207 0 R /XYZ 115.0 553.54 null]
 >>
 endobj
 61 0 obj
 <<
 /S /GoTo
-/D [209 0 R /XYZ 115.0 258.2 null]
+/D [209 0 R /XYZ 115.0 217.34 null]
 >>
 endobj
 63 0 obj
 <<
 /S /GoTo
-/D [209 0 R /XYZ 115.0 116.874 null]
+/D [211 0 R /XYZ 115.0 704.0 null]
 >>
 endobj
 65 0 obj
@@ -4070,507 +4070,507 @@ endobj
 xref
 0 502
 0000000000 65535 f 
-0000146118 00000 n 
-0000146749 00000 n 
-0000146842 00000 n 
+0000146520 00000 n 
+0000147151 00000 n 
+0000147244 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
-0000000384 00000 n 
-0000000490 00000 n 
-0000001179 00000 n 
-0000001285 00000 n 
-0000001446 00000 n 
-0000001553 00000 n 
-0000003558 00000 n 
-0000003681 00000 n 
-0000004082 00000 n 
-0000147007 00000 n 
-0000004218 00000 n 
-0000147073 00000 n 
-0000004354 00000 n 
-0000147139 00000 n 
-0000004490 00000 n 
-0000147207 00000 n 
-0000004625 00000 n 
-0000147275 00000 n 
-0000004761 00000 n 
-0000147343 00000 n 
-0000004897 00000 n 
-0000147411 00000 n 
-0000005033 00000 n 
-0000147479 00000 n 
-0000005169 00000 n 
-0000147547 00000 n 
-0000005305 00000 n 
-0000147615 00000 n 
-0000005441 00000 n 
-0000147681 00000 n 
-0000005576 00000 n 
-0000147749 00000 n 
-0000005712 00000 n 
-0000147817 00000 n 
-0000005848 00000 n 
-0000147885 00000 n 
-0000005984 00000 n 
-0000147951 00000 n 
-0000006120 00000 n 
-0000148019 00000 n 
-0000006256 00000 n 
-0000148087 00000 n 
-0000006392 00000 n 
-0000148155 00000 n 
-0000006528 00000 n 
-0000148221 00000 n 
-0000006664 00000 n 
-0000148289 00000 n 
-0000006800 00000 n 
-0000148357 00000 n 
-0000006936 00000 n 
-0000148423 00000 n 
-0000007071 00000 n 
-0000148490 00000 n 
-0000007207 00000 n 
+0000000427 00000 n 
+0000000533 00000 n 
+0000001302 00000 n 
+0000001408 00000 n 
+0000001569 00000 n 
+0000001676 00000 n 
+0000003680 00000 n 
+0000003803 00000 n 
+0000004204 00000 n 
+0000147409 00000 n 
+0000004340 00000 n 
+0000147475 00000 n 
+0000004476 00000 n 
+0000147541 00000 n 
+0000004612 00000 n 
+0000147609 00000 n 
+0000004747 00000 n 
+0000147677 00000 n 
+0000004883 00000 n 
+0000147745 00000 n 
+0000005019 00000 n 
+0000147813 00000 n 
+0000005155 00000 n 
+0000147881 00000 n 
+0000005291 00000 n 
+0000147949 00000 n 
+0000005427 00000 n 
+0000148017 00000 n 
+0000005563 00000 n 
+0000148083 00000 n 
+0000005698 00000 n 
+0000148151 00000 n 
+0000005834 00000 n 
+0000148219 00000 n 
+0000005970 00000 n 
+0000148287 00000 n 
+0000006106 00000 n 
+0000148353 00000 n 
+0000006242 00000 n 
+0000148421 00000 n 
+0000006378 00000 n 
+0000148489 00000 n 
+0000006514 00000 n 
 0000148557 00000 n 
-0000007343 00000 n 
+0000006650 00000 n 
 0000148623 00000 n 
-0000007479 00000 n 
+0000006786 00000 n 
 0000148691 00000 n 
-0000007614 00000 n 
-0000148750 00000 n 
-0000007750 00000 n 
-0000148816 00000 n 
-0000007886 00000 n 
-0000148882 00000 n 
-0000008022 00000 n 
-0000148948 00000 n 
-0000008158 00000 n 
-0000149014 00000 n 
-0000008294 00000 n 
-0000149080 00000 n 
-0000008430 00000 n 
-0000149146 00000 n 
-0000008566 00000 n 
-0000149212 00000 n 
-0000008702 00000 n 
-0000149278 00000 n 
-0000008838 00000 n 
-0000149344 00000 n 
-0000008974 00000 n 
-0000149410 00000 n 
-0000009110 00000 n 
-0000149476 00000 n 
-0000009246 00000 n 
-0000149542 00000 n 
-0000009382 00000 n 
-0000149608 00000 n 
-0000009518 00000 n 
-0000149674 00000 n 
-0000009654 00000 n 
-0000149740 00000 n 
-0000009790 00000 n 
-0000149806 00000 n 
-0000009926 00000 n 
-0000149872 00000 n 
-0000010064 00000 n 
-0000149939 00000 n 
-0000010202 00000 n 
-0000150006 00000 n 
-0000010340 00000 n 
-0000150073 00000 n 
-0000010477 00000 n 
-0000150140 00000 n 
-0000010615 00000 n 
+0000006922 00000 n 
+0000148759 00000 n 
+0000007058 00000 n 
+0000148825 00000 n 
+0000007193 00000 n 
+0000148892 00000 n 
+0000007329 00000 n 
+0000148959 00000 n 
+0000007465 00000 n 
+0000149026 00000 n 
+0000007601 00000 n 
+0000149092 00000 n 
+0000007736 00000 n 
+0000149151 00000 n 
+0000007872 00000 n 
+0000149217 00000 n 
+0000008008 00000 n 
+0000149283 00000 n 
+0000008144 00000 n 
+0000149349 00000 n 
+0000008280 00000 n 
+0000149415 00000 n 
+0000008416 00000 n 
+0000149481 00000 n 
+0000008552 00000 n 
+0000149547 00000 n 
+0000008688 00000 n 
+0000149613 00000 n 
+0000008824 00000 n 
+0000149679 00000 n 
+0000008960 00000 n 
+0000149745 00000 n 
+0000009096 00000 n 
+0000149811 00000 n 
+0000009232 00000 n 
+0000149877 00000 n 
+0000009368 00000 n 
+0000149943 00000 n 
+0000009504 00000 n 
+0000150009 00000 n 
+0000009640 00000 n 
+0000150075 00000 n 
+0000009776 00000 n 
+0000150141 00000 n 
+0000009912 00000 n 
 0000150207 00000 n 
-0000010753 00000 n 
-0000150274 00000 n 
-0000010891 00000 n 
-0000150341 00000 n 
-0000011027 00000 n 
-0000150408 00000 n 
-0000011162 00000 n 
-0000150475 00000 n 
-0000011298 00000 n 
-0000012263 00000 n 
-0000012389 00000 n 
-0000012602 00000 n 
-0000150542 00000 n 
-0000012736 00000 n 
-0000150609 00000 n 
-0000012870 00000 n 
-0000150676 00000 n 
-0000013004 00000 n 
-0000150743 00000 n 
-0000013137 00000 n 
-0000150810 00000 n 
-0000013270 00000 n 
-0000150870 00000 n 
-0000013404 00000 n 
-0000150937 00000 n 
-0000013538 00000 n 
-0000151004 00000 n 
-0000013672 00000 n 
-0000151073 00000 n 
-0000013805 00000 n 
-0000151142 00000 n 
-0000013939 00000 n 
+0000010048 00000 n 
+0000150273 00000 n 
+0000010186 00000 n 
+0000150340 00000 n 
+0000010324 00000 n 
+0000150407 00000 n 
+0000010462 00000 n 
+0000150474 00000 n 
+0000010599 00000 n 
+0000150541 00000 n 
+0000010737 00000 n 
+0000150608 00000 n 
+0000010875 00000 n 
+0000150675 00000 n 
+0000011013 00000 n 
+0000150742 00000 n 
+0000011149 00000 n 
+0000150809 00000 n 
+0000011284 00000 n 
+0000150876 00000 n 
+0000011420 00000 n 
+0000012385 00000 n 
+0000012511 00000 n 
+0000012724 00000 n 
+0000150943 00000 n 
+0000012858 00000 n 
+0000151010 00000 n 
+0000012992 00000 n 
+0000151077 00000 n 
+0000013126 00000 n 
+0000151144 00000 n 
+0000013259 00000 n 
 0000151211 00000 n 
-0000014073 00000 n 
-0000151280 00000 n 
-0000014207 00000 n 
-0000151349 00000 n 
-0000014340 00000 n 
-0000151418 00000 n 
-0000014474 00000 n 
-0000151485 00000 n 
-0000014608 00000 n 
-0000151554 00000 n 
-0000014742 00000 n 
-0000151623 00000 n 
-0000014875 00000 n 
-0000151692 00000 n 
-0000015009 00000 n 
-0000151759 00000 n 
-0000015143 00000 n 
-0000151828 00000 n 
-0000015276 00000 n 
-0000151897 00000 n 
-0000015409 00000 n 
-0000151966 00000 n 
-0000015543 00000 n 
-0000152033 00000 n 
-0000015677 00000 n 
-0000152102 00000 n 
-0000015811 00000 n 
-0000016420 00000 n 
-0000016530 00000 n 
-0000018339 00000 n 
-0000018465 00000 n 
-0000018526 00000 n 
-0000152169 00000 n 
-0000018667 00000 n 
-0000018850 00000 n 
-0000019024 00000 n 
-0000152238 00000 n 
-0000019165 00000 n 
-0000019337 00000 n 
-0000021146 00000 n 
-0000021256 00000 n 
-0000024067 00000 n 
-0000024177 00000 n 
-0000024496 00000 n 
-0000024606 00000 n 
-0000027355 00000 n 
-0000027481 00000 n 
-0000027534 00000 n 
-0000027750 00000 n 
-0000027965 00000 n 
-0000028169 00000 n 
-0000028369 00000 n 
-0000030135 00000 n 
-0000030245 00000 n 
-0000033654 00000 n 
-0000033764 00000 n 
-0000035629 00000 n 
-0000035739 00000 n 
-0000038220 00000 n 
-0000038330 00000 n 
-0000040391 00000 n 
-0000040501 00000 n 
-0000042827 00000 n 
-0000042937 00000 n 
-0000045591 00000 n 
-0000045701 00000 n 
-0000046257 00000 n 
-0000046367 00000 n 
-0000046877 00000 n 
-0000046987 00000 n 
-0000047645 00000 n 
-0000047755 00000 n 
-0000048479 00000 n 
-0000048589 00000 n 
-0000049292 00000 n 
-0000049402 00000 n 
-0000050143 00000 n 
-0000050253 00000 n 
-0000050958 00000 n 
-0000051068 00000 n 
-0000052174 00000 n 
-0000052284 00000 n 
-0000053408 00000 n 
-0000053518 00000 n 
-0000054815 00000 n 
-0000054925 00000 n 
-0000056496 00000 n 
-0000056606 00000 n 
-0000057549 00000 n 
-0000057659 00000 n 
-0000058620 00000 n 
-0000058730 00000 n 
-0000059830 00000 n 
-0000059940 00000 n 
-0000061152 00000 n 
-0000061262 00000 n 
-0000062553 00000 n 
-0000062663 00000 n 
-0000064402 00000 n 
-0000064512 00000 n 
-0000065351 00000 n 
-0000065461 00000 n 
-0000066447 00000 n 
-0000066573 00000 n 
-0000066610 00000 n 
-0000066749 00000 n 
-0000066884 00000 n 
-0000068124 00000 n 
-0000068234 00000 n 
-0000068658 00000 n 
-0000068768 00000 n 
-0000070637 00000 n 
-0000070747 00000 n 
-0000071785 00000 n 
-0000071911 00000 n 
-0000071956 00000 n 
-0000072093 00000 n 
-0000072230 00000 n 
-0000072366 00000 n 
-0000073061 00000 n 
-0000073171 00000 n 
-0000074074 00000 n 
-0000074184 00000 n 
-0000076154 00000 n 
-0000076264 00000 n 
-0000076922 00000 n 
-0000077048 00000 n 
-0000077093 00000 n 
-0000077230 00000 n 
-0000077367 00000 n 
-0000077504 00000 n 
-0000079395 00000 n 
-0000079505 00000 n 
-0000080411 00000 n 
-0000080537 00000 n 
-0000080582 00000 n 
-0000080718 00000 n 
-0000080855 00000 n 
-0000080992 00000 n 
-0000083227 00000 n 
-0000083337 00000 n 
-0000085553 00000 n 
-0000085663 00000 n 
-0000086038 00000 n 
-0000086164 00000 n 
-0000086193 00000 n 
-0000086330 00000 n 
-0000088292 00000 n 
-0000088418 00000 n 
-0000088447 00000 n 
-0000088588 00000 n 
-0000089191 00000 n 
-0000089317 00000 n 
-0000089354 00000 n 
-0000089491 00000 n 
-0000089628 00000 n 
-0000090669 00000 n 
-0000090795 00000 n 
-0000090840 00000 n 
-0000090977 00000 n 
-0000091114 00000 n 
-0000091251 00000 n 
-0000092862 00000 n 
-0000092972 00000 n 
-0000093790 00000 n 
-0000093916 00000 n 
-0000093945 00000 n 
-0000094082 00000 n 
-0000095681 00000 n 
-0000095807 00000 n 
-0000095844 00000 n 
-0000152307 00000 n 
-0000095983 00000 n 
-0000152376 00000 n 
-0000096122 00000 n 
-0000096736 00000 n 
-0000096862 00000 n 
-0000096891 00000 n 
-0000097028 00000 n 
-0000099409 00000 n 
-0000099535 00000 n 
-0000099580 00000 n 
-0000099721 00000 n 
-0000099860 00000 n 
-0000152445 00000 n 
-0000099999 00000 n 
-0000101096 00000 n 
-0000101222 00000 n 
-0000101251 00000 n 
-0000101388 00000 n 
-0000103960 00000 n 
-0000104086 00000 n 
-0000104139 00000 n 
-0000104280 00000 n 
-0000104419 00000 n 
-0000104560 00000 n 
-0000104701 00000 n 
-0000106246 00000 n 
-0000106372 00000 n 
-0000106409 00000 n 
-0000106546 00000 n 
-0000106683 00000 n 
-0000108988 00000 n 
-0000109114 00000 n 
-0000109167 00000 n 
-0000109308 00000 n 
-0000109447 00000 n 
-0000109588 00000 n 
-0000109729 00000 n 
-0000110514 00000 n 
-0000110640 00000 n 
-0000110677 00000 n 
-0000110814 00000 n 
-0000110951 00000 n 
-0000113166 00000 n 
-0000113292 00000 n 
-0000113329 00000 n 
-0000113470 00000 n 
-0000113608 00000 n 
-0000114830 00000 n 
-0000114956 00000 n 
-0000115001 00000 n 
-0000115138 00000 n 
-0000115275 00000 n 
-0000115412 00000 n 
-0000115978 00000 n 
-0000116088 00000 n 
-0000117813 00000 n 
-0000117939 00000 n 
-0000117976 00000 n 
-0000118114 00000 n 
-0000118248 00000 n 
-0000118617 00000 n 
-0000118743 00000 n 
-0000118772 00000 n 
-0000118904 00000 n 
-0000120664 00000 n 
-0000120774 00000 n 
-0000122699 00000 n 
-0000122809 00000 n 
-0000124630 00000 n 
-0000124740 00000 n 
-0000125530 00000 n 
-0000125640 00000 n 
-0000127114 00000 n 
-0000127240 00000 n 
-0000127269 00000 n 
-0000152514 00000 n 
-0000152568 00000 n 
-0000127407 00000 n 
-0000152634 00000 n 
-0000127598 00000 n 
-0000127799 00000 n 
-0000127941 00000 n 
-0000128220 00000 n 
-0000128347 00000 n 
-0000128489 00000 n 
-0000128709 00000 n 
-0000128818 00000 n 
-0000128942 00000 n 
-0000129059 00000 n 
-0000129372 00000 n 
-0000129623 00000 n 
-0000129822 00000 n 
-0000130030 00000 n 
-0000152700 00000 n 
-0000130313 00000 n 
-0000152769 00000 n 
-0000130500 00000 n 
-0000130610 00000 n 
-0000130763 00000 n 
-0000130950 00000 n 
-0000131156 00000 n 
-0000131323 00000 n 
-0000131595 00000 n 
-0000131752 00000 n 
-0000132029 00000 n 
-0000132218 00000 n 
-0000132407 00000 n 
-0000132596 00000 n 
-0000132791 00000 n 
-0000132936 00000 n 
-0000133109 00000 n 
-0000133283 00000 n 
-0000133448 00000 n 
-0000133654 00000 n 
-0000133831 00000 n 
-0000134049 00000 n 
-0000134290 00000 n 
-0000134502 00000 n 
-0000134690 00000 n 
-0000134920 00000 n 
-0000135138 00000 n 
-0000135344 00000 n 
-0000135550 00000 n 
-0000135784 00000 n 
-0000136048 00000 n 
-0000136290 00000 n 
-0000136500 00000 n 
-0000136713 00000 n 
-0000136919 00000 n 
-0000137068 00000 n 
-0000137258 00000 n 
-0000137436 00000 n 
-0000137614 00000 n 
-0000137757 00000 n 
-0000137918 00000 n 
-0000138120 00000 n 
-0000138356 00000 n 
-0000138546 00000 n 
-0000138677 00000 n 
-0000138831 00000 n 
-0000138979 00000 n 
-0000139170 00000 n 
-0000139366 00000 n 
-0000139632 00000 n 
-0000139953 00000 n 
-0000140111 00000 n 
-0000140251 00000 n 
-0000140436 00000 n 
-0000152838 00000 n 
-0000140707 00000 n 
-0000152907 00000 n 
-0000140940 00000 n 
-0000141203 00000 n 
-0000141406 00000 n 
-0000141546 00000 n 
-0000141731 00000 n 
-0000152976 00000 n 
-0000142002 00000 n 
-0000153045 00000 n 
-0000142235 00000 n 
-0000142498 00000 n 
-0000142742 00000 n 
-0000142882 00000 n 
-0000143067 00000 n 
-0000153114 00000 n 
-0000143338 00000 n 
-0000153183 00000 n 
-0000143571 00000 n 
-0000143834 00000 n 
-0000143992 00000 n 
-0000144132 00000 n 
-0000144317 00000 n 
-0000153252 00000 n 
-0000144588 00000 n 
-0000153321 00000 n 
-0000144821 00000 n 
-0000145084 00000 n 
-0000145218 00000 n 
-0000145332 00000 n 
-0000145443 00000 n 
-0000145559 00000 n 
-0000145668 00000 n 
-0000145780 00000 n 
-0000145901 00000 n 
-0000146008 00000 n 
+0000013392 00000 n 
+0000151271 00000 n 
+0000013526 00000 n 
+0000151338 00000 n 
+0000013660 00000 n 
+0000151405 00000 n 
+0000013794 00000 n 
+0000151474 00000 n 
+0000013927 00000 n 
+0000151543 00000 n 
+0000014061 00000 n 
+0000151612 00000 n 
+0000014195 00000 n 
+0000151681 00000 n 
+0000014329 00000 n 
+0000151750 00000 n 
+0000014462 00000 n 
+0000151819 00000 n 
+0000014596 00000 n 
+0000151886 00000 n 
+0000014730 00000 n 
+0000151955 00000 n 
+0000014864 00000 n 
+0000152024 00000 n 
+0000014997 00000 n 
+0000152093 00000 n 
+0000015131 00000 n 
+0000152160 00000 n 
+0000015265 00000 n 
+0000152229 00000 n 
+0000015398 00000 n 
+0000152298 00000 n 
+0000015531 00000 n 
+0000152367 00000 n 
+0000015665 00000 n 
+0000152434 00000 n 
+0000015799 00000 n 
+0000152503 00000 n 
+0000015933 00000 n 
+0000016542 00000 n 
+0000016652 00000 n 
+0000018461 00000 n 
+0000018587 00000 n 
+0000018648 00000 n 
+0000152570 00000 n 
+0000018789 00000 n 
+0000018972 00000 n 
+0000019146 00000 n 
+0000152639 00000 n 
+0000019287 00000 n 
+0000019459 00000 n 
+0000021268 00000 n 
+0000021378 00000 n 
+0000024189 00000 n 
+0000024299 00000 n 
+0000024618 00000 n 
+0000024728 00000 n 
+0000027459 00000 n 
+0000027585 00000 n 
+0000027638 00000 n 
+0000027854 00000 n 
+0000028069 00000 n 
+0000028273 00000 n 
+0000028473 00000 n 
+0000030264 00000 n 
+0000030374 00000 n 
+0000033864 00000 n 
+0000033974 00000 n 
+0000035770 00000 n 
+0000035880 00000 n 
+0000038316 00000 n 
+0000038426 00000 n 
+0000040518 00000 n 
+0000040628 00000 n 
+0000042919 00000 n 
+0000043029 00000 n 
+0000045898 00000 n 
+0000046008 00000 n 
+0000046659 00000 n 
+0000046769 00000 n 
+0000047279 00000 n 
+0000047389 00000 n 
+0000048047 00000 n 
+0000048157 00000 n 
+0000048881 00000 n 
+0000048991 00000 n 
+0000049694 00000 n 
+0000049804 00000 n 
+0000050545 00000 n 
+0000050655 00000 n 
+0000051360 00000 n 
+0000051470 00000 n 
+0000052576 00000 n 
+0000052686 00000 n 
+0000053810 00000 n 
+0000053920 00000 n 
+0000055217 00000 n 
+0000055327 00000 n 
+0000056898 00000 n 
+0000057008 00000 n 
+0000057951 00000 n 
+0000058061 00000 n 
+0000059022 00000 n 
+0000059132 00000 n 
+0000060232 00000 n 
+0000060342 00000 n 
+0000061554 00000 n 
+0000061664 00000 n 
+0000062955 00000 n 
+0000063065 00000 n 
+0000064804 00000 n 
+0000064914 00000 n 
+0000065753 00000 n 
+0000065863 00000 n 
+0000066849 00000 n 
+0000066975 00000 n 
+0000067012 00000 n 
+0000067151 00000 n 
+0000067286 00000 n 
+0000068526 00000 n 
+0000068636 00000 n 
+0000069060 00000 n 
+0000069170 00000 n 
+0000071039 00000 n 
+0000071149 00000 n 
+0000072187 00000 n 
+0000072313 00000 n 
+0000072358 00000 n 
+0000072495 00000 n 
+0000072632 00000 n 
+0000072768 00000 n 
+0000073463 00000 n 
+0000073573 00000 n 
+0000074476 00000 n 
+0000074586 00000 n 
+0000076556 00000 n 
+0000076666 00000 n 
+0000077324 00000 n 
+0000077450 00000 n 
+0000077495 00000 n 
+0000077632 00000 n 
+0000077769 00000 n 
+0000077906 00000 n 
+0000079797 00000 n 
+0000079907 00000 n 
+0000080813 00000 n 
+0000080939 00000 n 
+0000080984 00000 n 
+0000081120 00000 n 
+0000081257 00000 n 
+0000081394 00000 n 
+0000083629 00000 n 
+0000083739 00000 n 
+0000085955 00000 n 
+0000086065 00000 n 
+0000086440 00000 n 
+0000086566 00000 n 
+0000086595 00000 n 
+0000086732 00000 n 
+0000088694 00000 n 
+0000088820 00000 n 
+0000088849 00000 n 
+0000088990 00000 n 
+0000089593 00000 n 
+0000089719 00000 n 
+0000089756 00000 n 
+0000089893 00000 n 
+0000090030 00000 n 
+0000091071 00000 n 
+0000091197 00000 n 
+0000091242 00000 n 
+0000091379 00000 n 
+0000091516 00000 n 
+0000091653 00000 n 
+0000093264 00000 n 
+0000093374 00000 n 
+0000094192 00000 n 
+0000094318 00000 n 
+0000094347 00000 n 
+0000094484 00000 n 
+0000096083 00000 n 
+0000096209 00000 n 
+0000096246 00000 n 
+0000152708 00000 n 
+0000096385 00000 n 
+0000152777 00000 n 
+0000096524 00000 n 
+0000097138 00000 n 
+0000097264 00000 n 
+0000097293 00000 n 
+0000097430 00000 n 
+0000099811 00000 n 
+0000099937 00000 n 
+0000099982 00000 n 
+0000100123 00000 n 
+0000100262 00000 n 
+0000152846 00000 n 
+0000100401 00000 n 
+0000101498 00000 n 
+0000101624 00000 n 
+0000101653 00000 n 
+0000101790 00000 n 
+0000104362 00000 n 
+0000104488 00000 n 
+0000104541 00000 n 
+0000104682 00000 n 
+0000104821 00000 n 
+0000104962 00000 n 
+0000105103 00000 n 
+0000106648 00000 n 
+0000106774 00000 n 
+0000106811 00000 n 
+0000106948 00000 n 
+0000107085 00000 n 
+0000109390 00000 n 
+0000109516 00000 n 
+0000109569 00000 n 
+0000109710 00000 n 
+0000109849 00000 n 
+0000109990 00000 n 
+0000110131 00000 n 
+0000110916 00000 n 
+0000111042 00000 n 
+0000111079 00000 n 
+0000111216 00000 n 
+0000111353 00000 n 
+0000113568 00000 n 
+0000113694 00000 n 
+0000113731 00000 n 
+0000113872 00000 n 
+0000114010 00000 n 
+0000115232 00000 n 
+0000115358 00000 n 
+0000115403 00000 n 
+0000115540 00000 n 
+0000115677 00000 n 
+0000115814 00000 n 
+0000116380 00000 n 
+0000116490 00000 n 
+0000118215 00000 n 
+0000118341 00000 n 
+0000118378 00000 n 
+0000118516 00000 n 
+0000118650 00000 n 
+0000119019 00000 n 
+0000119145 00000 n 
+0000119174 00000 n 
+0000119306 00000 n 
+0000121066 00000 n 
+0000121176 00000 n 
+0000123101 00000 n 
+0000123211 00000 n 
+0000125032 00000 n 
+0000125142 00000 n 
+0000125932 00000 n 
+0000126042 00000 n 
+0000127516 00000 n 
+0000127642 00000 n 
+0000127671 00000 n 
+0000152915 00000 n 
+0000152969 00000 n 
+0000127809 00000 n 
+0000153035 00000 n 
+0000128000 00000 n 
+0000128201 00000 n 
+0000128343 00000 n 
+0000128622 00000 n 
+0000128749 00000 n 
+0000128891 00000 n 
+0000129111 00000 n 
+0000129220 00000 n 
+0000129344 00000 n 
+0000129461 00000 n 
+0000129774 00000 n 
+0000130025 00000 n 
+0000130224 00000 n 
+0000130432 00000 n 
+0000153101 00000 n 
+0000130715 00000 n 
+0000153170 00000 n 
+0000130902 00000 n 
+0000131012 00000 n 
+0000131165 00000 n 
+0000131352 00000 n 
+0000131558 00000 n 
+0000131725 00000 n 
+0000131997 00000 n 
+0000132154 00000 n 
+0000132431 00000 n 
+0000132620 00000 n 
+0000132809 00000 n 
+0000132998 00000 n 
+0000133193 00000 n 
+0000133338 00000 n 
+0000133511 00000 n 
+0000133685 00000 n 
+0000133850 00000 n 
+0000134056 00000 n 
+0000134233 00000 n 
+0000134451 00000 n 
+0000134692 00000 n 
+0000134904 00000 n 
+0000135092 00000 n 
+0000135322 00000 n 
+0000135540 00000 n 
+0000135746 00000 n 
+0000135952 00000 n 
+0000136186 00000 n 
+0000136450 00000 n 
+0000136692 00000 n 
+0000136902 00000 n 
+0000137115 00000 n 
+0000137321 00000 n 
+0000137470 00000 n 
+0000137660 00000 n 
+0000137838 00000 n 
+0000138016 00000 n 
+0000138159 00000 n 
+0000138320 00000 n 
+0000138522 00000 n 
+0000138758 00000 n 
+0000138948 00000 n 
+0000139079 00000 n 
+0000139233 00000 n 
+0000139381 00000 n 
+0000139572 00000 n 
+0000139768 00000 n 
+0000140034 00000 n 
+0000140355 00000 n 
+0000140513 00000 n 
+0000140653 00000 n 
+0000140838 00000 n 
+0000153239 00000 n 
+0000141109 00000 n 
+0000153308 00000 n 
+0000141342 00000 n 
+0000141605 00000 n 
+0000141808 00000 n 
+0000141948 00000 n 
+0000142133 00000 n 
+0000153377 00000 n 
+0000142404 00000 n 
+0000153446 00000 n 
+0000142637 00000 n 
+0000142900 00000 n 
+0000143144 00000 n 
+0000143284 00000 n 
+0000143469 00000 n 
+0000153515 00000 n 
+0000143740 00000 n 
+0000153584 00000 n 
+0000143973 00000 n 
+0000144236 00000 n 
+0000144394 00000 n 
+0000144534 00000 n 
+0000144719 00000 n 
+0000153653 00000 n 
+0000144990 00000 n 
+0000153722 00000 n 
+0000145223 00000 n 
+0000145486 00000 n 
+0000145620 00000 n 
+0000145734 00000 n 
+0000145845 00000 n 
+0000145961 00000 n 
+0000146070 00000 n 
+0000146182 00000 n 
+0000146303 00000 n 
+0000146410 00000 n 
 trailer
 <<
 /Size 502
@@ -4578,5 +4578,5 @@ trailer
 /Info 4 0 R
 >>
 startxref
-153390
+153791
 %%EOF
index 9981c5dd32d144d28a2ff91bb4d27e3319e6042b..84081f14c76405ad70262e5b93c027e2055c3e01 100644 (file)
Binary files a/doc/html.tar.gz and b/doc/html.tar.gz differ
index ea9635252f51fdeaf3492cc244a71b1ef64ddf96..0ee305dbe251fe0ff8061ebd573204d7a50b481a 100644 (file)
     <title>Data Modeling with UncommonSQL</title>
 
     <para>
-      Before we can create, query and manipulate &usql; objects, we need to
-      define our data model as noted by Philip Greenspun
+      Before we can create, query and manipulate &usql; objects, we
+      need to define our data model as noted by Philip Greenspun
       <footnote>
        <para>
        <ulink
         url="http://www.arsdigita.com/books/sql/data-modeling.html">
-         <citetitle>Philip Greenspun's "SQL For Web Nerds" - Data Modeling
-</citetitle>
+         <citetitle>Philip Greenspun's "SQL For Web Nerds" - Data
+         Modeling</citetitle>
        </ulink>
        </para>
       </footnote>
       With &sql; database one would do this by defining a set of
       relations, or tables, followed by a set of queries for joining
       the tables together in order to construct complex records.
-      However, with &usql; we do this by defining a set of CLOS classes,
-      specifying how they will be turned into tables, and how they can
-      be joined to one another via relations between their attributes.
-      The &sql; tables, as well as the queries for joining them together
-      are created for us automatically, saving us from dealing with
-      some of the tedium of &sql;.
+      However, with &usql; we do this by defining a set of CLOS
+      classes, specifying how they will be turned into tables, and how
+      they can be joined to one another via relations between their
+      attributes.  The &sql; tables, as well as the queries for
+      joining them together are created for us automatically, saving
+      us from dealing with some of the tedium of &sql;.
     </para>
 
     <para>
@@ -157,7 +157,7 @@ mapped into a database).  They would be defined as follows:
 </para>
 
 <programlisting>
-(sql:def-view-class employee ()
+(clsql-usql:def-view-class employee ()
   ((emplid
     :db-kind :key
     :db-constraints :not-null
@@ -183,7 +183,7 @@ mapped into a database).  They would be defined as follows:
     :nulls-ok t))
   (:base-table employee))
 
-(sql:def-view-class company ()
+(clsql-usql:def-view-class company ()
   ((companyid
     :db-type :key
     :db-constraints :not-null
@@ -198,8 +198,9 @@ mapped into a database).  They would be defined as follows:
 </programlisting>
 
 <para>
-  The DEF-VIEW-CLASS macro is just like the normal CLOS DEFCLASS
-  macro, except that it handles several slot options that DEFCLASS
+  The <function>DEF-VIEW-CLASS</function> macro is just like the
+  normal CLOS <function>DEFCLASS</function> macro, except that it
+  handles several slot options that <function>DEFCLASS</function>
   doesn't.  These slot options have to do with the mapping of the slot
   into the database.  We only use a few of the slot options in the
   above example, but there are several others.
@@ -208,77 +209,87 @@ mapped into a database).  They would be defined as follows:
 <itemizedlist>
 
   <listitem><para>
-    :column -- The name of the &sql; column this slot is stored in.
+  <symbol>:column</symbol> - The name of the &sql; column this slot is stored in.
     Defaults to the slot name.  If the slot name is not a valid &sql;
     identifier, it is escaped, so foo-bar becomes foo_bar.
   </para></listitem>
 
-  <listitem><para>
-    :db-kind -- The kind of DB mapping which is performed for this
-    slot.  :BASE indicates the slot maps to an ordinary column of the
-    DB view.  :KEY indicates that this slot corresponds to part of the
-    unique keys for this view, :JOIN indicates a join slot
-    representing a relation to another view and :virtual indicates
-    that this slot is an ordinary CLOS slot.  Defaults to :base.
-</para></listitem>
-
-  <listitem><para>
-   :db-reader -- If a string, then when reading values from the DB, the
-    string will be used for a format string, with the only value being
-    the value from the database.  The resulting string will be used as
-    the slot value.  If a function then it will take one argument, the
-    value from the database, and return the value that should be put
-    into the slot.
-</para></listitem>
-
-  <listitem><para>
-   :db-writer -- If a string, then when reading values from the slot
-    for the DB, the string will be used for a format string, with the
-    only value being the value of the slot.  The resulting string will
-    be used as the column value in the DB.  If a function then it will
-    take one argument, the value of the slot, and return the value
-    that should be put into the database.
-</para></listitem>
-
-  <listitem><para>
-   :db-type -- A string which will be used as the type specifier for
-    this slots column definition in the database.
-</para></listitem>
+  <listitem>
+    <para> 
+      <symbol>:db-kind</symbol> - The kind of database mapping which
+      is performed for this slot.  <symbol>:base</symbol> indicates
+      the slot maps to an ordinary column of the database view.
+      <symbol>:key</symbol> indicates that this slot corresponds to
+      part of the unique keys for this view, <symbol>:join</symbol>
+      indicates a join slot representing a relation to another view
+      and :virtual indicates that this slot is an ordinary CLOS slot.
+      Defaults to <symbol>:base</symbol>. </para></listitem>
+
+  <listitem>
+    <para>
+      <symbol>:db-reader</symbol> - If a string, then when reading
+      values from the database, the string will be used for a format
+      string, with the only value being the value from the database.
+      The resulting string will be used as the slot value.  If a
+      function then it will take one argument, the value from the
+      database, and return the value that should be put into the slot.
+      </para></listitem>
+
+  <listitem>
+    <para>
+      <symbol>:db-writer</symbol> - If a string, then when reading
+      values from the slot for the database, the string will be used
+      for a format string, with the only value being the value of the
+      slot.  The resulting string will be used as the column value in
+      the database.  If a function then it will take one argument, the
+      value of the slot, and return the value that should be put into
+      the database.</para></listitem>
+
+  <listitem>
+    <para>
+      <symbol>:db-type</symbol> - A string which will be used as the
+      type specifier for this slots column definition in the database.
+      </para></listitem>
 
-  <listitem><para>
-   :nulls-ok -- If t, all sql NULL values retrieved from the database
-    become nil; if nil, all NULL values retrieved are converted by
-    DATABASE-NULL-VALUE
-</para></listitem>
+  <listitem>
+    <para>
+      <symbol>:nulls-ok</symbol> - If &t;, all &sql; &null; values
+      retrieved from the database become nil; if &nil;, all &null;
+      values retrieved are converted by
+      <function>DATABASE-NULL-VALUE</function>. </para></listitem>
 
-  <listitem><para>
-   :db-info -- A join specification.
-</para></listitem>
+  <listitem>
+    <para>
+      <symbol>:db-info</symbol> - A join specification.
+      </para></listitem>
 </itemizedlist>
 
 <para>
   In our example each table as a primary key attribute, which is
   required to be unique.  We indicate that a slot is part of the
   primary key (&usql; supports multi-field primary keys) by specifying
-  the :db-kind :key slot option.
+  the <symbol>:db-kind</symbol> key slot option.
 </para>
 
 <para>
   The &sql; type of a slot when it is mapped into the database is
-  determined by the :type slot option.  The argument for the :type
-  option is a Common Lisp datatype.  The &usql; framework will determine
-  the appropriate mapping depending on the database system the table
-  is being created in.  If we really wanted to determine what &sql; type
-  was used for a slot, we could specify a :db-type option like
+  determined by the <symbol>:type</symbol> slot option.  The argument
+  for the <symbol>:type</symbol> option is a Common Lisp datatype.
+  The &usql; framework will determine the appropriate mapping
+  depending on the database system the table is being created in.  If
+  we really wanted to determine what &sql; type was used for a slot,
+  we could specify a <symbol>:db-type</symbol> option like
   "NUMBER(38)" and we would be guaranteed that the slot would be
-  stored n the DB as a NUMBER(38).  This is not recomended because it
-  could makes your view class unportable across database systems.
+  stored in the database as a NUMBER(38).  This is not recomended
+  because it could makes your view class unportable across database
+  systems.
 </para>
 
 <para>
-  DEF-VIEW-CLASS also supports some class options, like :base-table.
-  The :base-table option specifies what the table name for the view
-  class will be when it is mapped into the database.
+  <function>DEF-VIEW-CLASS</function> also supports some class
+  options, like <symbol>:base-table</symbol>.  The
+  <symbol>:base-table</symbol> option specifies what the table name
+  for the view class will be when it is mapped into the database.
 </para>
   </sect1>
 
@@ -286,10 +297,11 @@ mapped into a database).  They would be defined as follows:
 <title>Class Relations</title> 
 
 <para>
-In an &sql; only application, the EMPLOYEE and COMPANY tables can be
-queried to determine things like, "Who is Vladamir's manager?", What
-company does Josef work for?", and "What employees work for Widgets
-Inc.".  This is done by joining tables with an &sql; query.
+In an &sql; only application, the <symbol>EMPLOYEE</symbol> and
+<symbol>COMPANY</symbol> tables can be queried to determine things
+like, "Who is Vladamir's manager?", What company does Josef work
+for?", and "What employees work for Widgets Inc.".  This is done by
+joining tables with an &sql; query.
 </para>
 
 <para>
@@ -300,15 +312,23 @@ Who works for Widgets Inc.?
 SELECT first_name, last_name FROM employee, company
        WHERE employee.companyid = company.companyid
             AND company.company_name = "Widgets Inc."
+</programlisting>
 
-Who is Vladamir's manager
+<para>
+Who is Vladamir's manager?
+</para>
 
+<programlisting>
 SELECT managerid FROM employee
        WHERE employee.first_name = "Vladamir"
             AND employee.last_name = "Lenin"
+</programlisting>
 
+<para>
 What company does Josef work for?
+</para>
 
+<programlisting>
 SELECT company_name FROM company, employee
        WHERE employee.first_name = "Josef"
             AND employee.last-name = "Stalin"
@@ -316,8 +336,8 @@ SELECT company_name FROM company, employee
 </programlisting>
 
 <para>
-With &usql; however we do not need to write out such queries because our
-view classes can maintain the relations between employees and
+With &usql; however we do not need to write out such queries because
+our view classes can maintain the relations between employees and
 companies, and employees to their managers for us.  We can then access
 these relations like we would any other attribute of an employee or
 company object.  In order to do this we define some join slots for our
@@ -326,8 +346,8 @@ view classes.
 
 <para>
 What company does an employee work for?  If we add the following slot
-definition to the employee class we can then ask for it's COMPANY slot
-and get the appropriate result.
+definition to the employee class we can then ask for it's
+<symbol>COMPANY</symbol> slot and get the appropriate result.
 </para>
 
 <programlisting>
@@ -344,7 +364,8 @@ and get the appropriate result.
 <para>
 Who are the employees of a given company?  And who is the president of
 it? We add the following slot definition to the company view class and
-we can then ask for it's EMPLOYEES slot and get the right result.
+we can then ask for it's <symbol>EMPLOYEES</symbol> slot and get the
+right result.
 </para>
 
 <programlisting>
@@ -368,7 +389,7 @@ we can then ask for it's EMPLOYEES slot and get the right result.
 
 <para>
 And lastly, to define the relation between an employee and their
-manager.
+manager:
 </para>
 
 <programlisting>
@@ -390,42 +411,46 @@ First, let's go over the slot definitions and the available options.
 </para>
 
 <para>
-In order for a slot to be a join, we must specify that it's :db-kind
-:join, as opposed to :base or :key.  Once we do that, we still need to
-tell &usql; how to create the join statements for the relation.  This is
-what the :db-info option does.  It is a list of keywords and values.
-The available keywords are:
+In order for a slot to be a join, we must specify that it's
+<symbol>:db-kind</symbol> <symbol>:join</symbol>, as opposed to
+<symbol>:base</symbol> or <symbol>:key</symbol>.  Once we do that, we
+still need to tell &usql; how to create the join statements for the
+relation.  This is what the <symbol>:db-info</symbol> option does.  It
+is a list of keywords and values.  The available keywords are:
 </para>
 
 <itemizedlist>
-  <listitem><para>
-    :join-class -- The view class to which we want to join.  It can be
-    another view class, or the same view class as our object.
-    </para></listitem>
-
-  <listitem><para>
-    :home-key -- The slot(s) in the immediate object whose value will
-    be compared to the foreign-key slot(s) in the join-class in order
-    to join the two tables.  It can be a single slot-name, or it can
-    be a list of slot names.
-</para></listitem>
+  <listitem>
+    <para>
+      <symbol>:join-class</symbol> - The view class to which we want
+      to join.  It can be another view class, or the same view class
+      as our object.</para></listitem>
 
-  <listitem><para>
-    :foreign-key -- The slot(s) in the join-class which will be compared
-    to the value(s) of the home-key.
-</para></listitem>
+  <listitem>
+    <para>
+      <symbol>:home-key</symbol> - The slot(s) in the immediate object
+      whose value will be compared to the foreign-key slot(s) in the
+      join-class in order to join the two tables.  It can be a single
+      slot-name, or it can be a list of slot names.</para></listitem>
+      
+  <listitem>
+    <para>
+      <symbol>:foreign-key</symbol> - The slot(s) in the join-class
+      which will be compared to the value(s) of the home-key.
+      </para></listitem>
 
-  <listitem><para>
-    :set -- A boolean which if false, indicates that this is a
-    one-to-one relation, only one object will be returned.  If true,
-    than this is a one-to-many relation, a list of objects will be
-    returned when we ask for this slots value.
-</para></listitem>
+  <listitem>
+    <para>
+      <symbol>:set</symbol> - A boolean which if false, indicates that
+      this is a one-to-one relation, only one object will be returned.
+      If true, than this is a one-to-many relation, a list of objects
+      will be returned when we ask for this slots value.
+      </para></listitem>
 </itemizedlist>
 
 <para>
-There are other :join-info options available in &usql;, but we will save
-those till we get to the many-to-many relation examples.
+There are other :join-info options available in &usql;, but we will
+save those till we get to the many-to-many relation examples.
 </para>
 
 </sect1>
@@ -440,14 +465,14 @@ first need to create our tables in the database:
 </para>
 
 <para>
-Note: the file usql-tutorial.lisp contains view class definitions
-which you can load into your list at this point in order to play along
-at home.
+Note: the file <filename>doc/usql-tutorial.lisp</filename> contains
+view class definitions which you can load into your list at this point
+in order to play along at home.
 </para>
 
 <programlisting>
-(sql:create-view-from-class 'employee)
-(sql:create-view-from-class 'company)
+(clsql-usql:create-view-from-class 'employee)
+(clsql-usql:create-view-from-class 'company)
 </programlisting>
 
 <para>
@@ -476,47 +501,47 @@ any other CLOS object:
 
 <para>
 In order to insert an objects into the database we use the
-UPDATE-RECORDS-FROM-INSTANCE function as follows:
+<function>UPDATE-RECORDS-FROM-INSTANCE</function> function as follows:
 </para>
 
 <programlisting>
-(sql:update-records-from-instance employee1)
-(sql:update-records-from-instance employee2)
-(sql:update-records-from-instance company1)
+(clsql-usql:update-records-from-instance employee1)
+(clsql-usql:update-records-from-instance employee2)
+(clsql-usql:update-records-from-instance company1)
 </programlisting>
 
 <para>
 Now we can set up some of the relations between employees and
-companies, and their managers.  The ADD-TO-RELATION method provides us
-with an easy way of doing that.  It will update both the relation
-slot, as well as the home-key and foreign-key slots in both objects in
-the relation.
+companies, and their managers.  The
+<function>ADD-TO-RELATION</function> method provides us with an easy
+way of doing that.  It will update both the relation slot, as well as
+the home-key and foreign-key slots in both objects in the relation.
 </para>
 
 <programlisting>
 ;; Lenin manages Stalin (for now)
-(sql:add-to-relation employee2 'manager employee1)
+(clsql-usql:add-to-relation employee2 'manager employee1)
 
 ;; Lenin and Stalin both work for Widgets Inc.
-(sql:add-to-relation company1 'employees employee1)
-(sql:add-to-relation company1 'employees employee2)
+(clsql-usql:add-to-relation company1 'employees employee1)
+(clsql-usql:add-to-relation company1 'employees employee2)
 
 ;; Lenin is president of Widgets Inc.
-(sql:add-to-relation company1 'president employee1)
+(clsql-usql:add-to-relation company1 'president employee1)
 </programlisting>
 
 <para>
-After you make any changes to an object, you have to specifically tell
-&usql; to update the &sql; database.  The UPDATE-RECORDS-FROM-INSTANCE
-method will write all of the changes you have made to the object into
-the database.
+  After you make any changes to an object, you have to specifically
+  tell &usql; to update the &sql; database.  The
+  <function>UPDATE-RECORDS-FROM-INSTANCE</function> method will write
+  all of the changes you have made to the object into the database.
 </para>
 
 <para>
-Since &usql; objects re just normal CLOS objects, we can manipulate
-their slots just like any other object.  For instance, let's say that
-Lenin changes his email because he was getting too much SPAM fro the
-German Socialists.
+  Since &usql; objects re just normal CLOS objects, we can manipulate
+  their slots just like any other object.  For instance, let's say
+  that Lenin changes his email because he was getting too much spam
+  from the German Socialists.
 </para>
 
 <programlisting>
@@ -525,7 +550,7 @@ German Socialists.
 ;; and print the email
 
 ;; This lets us use the functional &usql; interface with [] syntax
-(sql:locally-enable-sql-reader-syntax)
+(clsql-usql:locally-enable-sql-reader-syntax)
 
 (format t "The email address of ~A ~A is ~A"
        (first-name employee1)
@@ -535,19 +560,20 @@ German Socialists.
 (setf (employee-email employee1) "lenin-nospam@soviets.org")
 
 ;; Update the database
-(sql:update-records-from-instance employee1)
+(clsql-usql:update-records-from-instance employee1)
 
-(let ((new-lenin (car (sql:select 'employee
+(let ((new-lenin (car (clsql-usql:select 'employee
                        :where [= [slot-value 'employee 'emplid] 1]))))
       (format t "His new email is ~A"
          (employee-email new-lenin)))
 </programlisting>
 
 <para>
-Everything except for the last LET expression is already familiar to
-us by now.  To understand the call to SQL:SELECT we need to discuss
-the Functional &sql; interface and it's integration with the Object
-Oriented interface of &usql;.
+  Everything except for the last <function>LET</function> expression
+  is already familiar to us by now.  To understand the call to
+  <function>CLSQL-USQL:SELECT</function> we need to discuss the
+  Functional &sql; interface and it's integration with the Object
+  Oriented interface of &usql;.
 </para>
 
 </sect1>
@@ -556,27 +582,28 @@ Oriented interface of &usql;.
 <title>Finding Objects</title>
 
 <para>
-Now that we have our objects in the database, how do we get them out
-when we need to work with them?  &usql; provides a Functional interface
-to &sql;, which consists of a special Lisp reader macro and some
-functions.  The special syntax allows us to embed &sql; in lisp
-expressions, and lisp expressions in &sql;, with ease.
+  Now that we have our objects in the database, how do we get them out
+  when we need to work with them?  &usql; provides a functional
+  interface to &sql;, which consists of a special Lisp reader macro
+  and some functions.  The special syntax allows us to embed &sql; in
+  lisp expressions, and lisp expressions in &sql;, with ease.
 </para>
 
 <para>
-Once we have turned on the syntax with the expression:
+  Once we have turned on the syntax with the expression:
 </para>
 
 <programlisting>
-(sql:locally-enable-sql-reader-syntax)
+(clsql-usql:locally-enable-sql-reader-syntax)
 </programlisting>
 
 <para>
-we can start entering fragments of &sql; into our lisp reader.  We will
-get back objects which represent the lisp expressions.  These objects
-will later be compiled into &sql; expressions that are optimized for the
-database backed we are connected to.  This means that we have a
-database independent &sql; syntax.  Here are some examples:
+  We can start entering fragments of &sql; into our lisp reader.  We
+  will get back objects which represent the lisp expressions.  These
+  objects will later be compiled into &sql; expressions that are
+  optimized for the database backed we are connected to.  This means
+  that we have a database independent &sql; syntax.  Here are some
+  examples:
 </para>
 
 <programlisting>
@@ -609,45 +636,48 @@ database independent &sql; syntax.  Here are some examples:
 </programlisting>
 
 <para>
-The SLOT-VALUE operator is important because it let's us query objects
-in a way that is robust to any changes in the object->table mapping,
-like column name changes, or table name changes.  So when you are
-querying objects, be sure to use the SLOT-VALUE &sql; extension.
+  The <function>SLOT-VALUE</function> operator is important because it
+  let's us query objects in a way that is robust to any changes in the
+  object->table mapping, like column name changes, or table name
+  changes.  So when you are querying objects, be sure to use the
+  <function>SLOT-VALUE</function> &sql; extension.
 </para>
 
 <para>
-Since we can now formulate &sql; relational expression which can be used
-as qualifiers, like we put after the WHERE keyword in &sql; statements,
-we can start querying our objects.  &usql; provides a function SELECT
-which can return use complete objects from the database which conform
-to a qualifier, can be sorted, and various other &sql; operations.
+  Since we can now formulate &sql; relational expression which can be
+  used as qualifiers, like we put after the <symbol>WHERE</symbol>
+  keyword in &sql; statements, we can start querying our objects.
+  &usql; provides a function <symbol>SELECT</symbol> which can return
+  use complete objects from the database which conform to a qualifier,
+  can be sorted, and various other &sql; operations.
 </para>
 
 <para>
-The first argument to SELECT is a class name.  it also has a set of
-keyword arguments which are covered in the documentation.  For now we
-will concern ourselves only with the :where keyword.  Select returns a
-list of objects, or nil if it can't find any.  It's important to
-remember that it always returns a list, so even if you are expecting
-only one result, you should remember to extract it from the list you
-get from SELECT.
+  The first argument to <symbol>SELECT</symbol> is a class name.  it
+  also has a set of keyword arguments which are covered in the
+  documentation.  For now we will concern ourselves only with the
+  :where keyword.  Select returns a list of objects, or nil if it
+  can't find any.  It's important to remember that it always returns a
+  list, so even if you are expecting only one result, you should
+  remember to extract it from the list you get from
+  <symbol>SELECT</symbol>.
 </para>
 
 <programlisting>
 ;; all employees
-(sql:select 'employee)
+(clsql-usql:select 'employee)
 ;; all companies
-(sql:select 'company)
+(clsql-usql:select 'company)
 
 ;; employees named Lenin
-(sql:select 'employee :where [= [slot-value 'employee 'last-name]
+(clsql-usql:select 'employee :where [= [slot-value 'employee 'last-name]
                                "Lenin"])
 
-(sql:select 'company :where [= [slot-value 'company 'name]
+(clsql-usql:select 'company :where [= [slot-value 'company 'name]
                               "Widgets Inc."])
 
 ;; Employees of Widget's Inc.
-(sql:select 'employee
+(clsql-usql:select 'employee
            :where [and [= [slot-value 'employee 'companyid]
                           [slot-value 'company 'companyid]]
                        [= [slot-value 'company 'name]
@@ -671,20 +701,21 @@ get from SELECT.
 <title>Deleting Objects</title>
 
 <para>
-Now that we know how to create objects in our database, manipulate
-them and query them (including using our predefined relations to save
-us the trouble writing alot of &sql;) we should learn how to clean up
-after ourself.  It's quite simple really. The function
-DELETE-INSTANCE-RECORDS will remove an object from the database.
-However, when we remove an object we are responsible for making sure
-that the database is left in a correct state.
+  Now that we know how to create objects in our database, manipulate
+  them and query them (including using our predefined relations to
+  save us the trouble writing alot of &sql;) we should learn how to
+  clean up after ourself.  It's quite simple really. The function
+  <function>DELETE-INSTANCE-RECORDS</function> will remove an object
+  from the database.  However, when we remove an object we are
+  responsible for making sure that the database is left in a correct
+  state.
 </para>
 
 <para>
-For example, if we remove a company record, we need to either remove
-all of it's employees or we need to move them to another company.
-Likewise if we remove an employee, we should make sure to update any
-other employees who had them as a manager.
+  For example, if we remove a company record, we need to either remove
+  all of it's employees or we need to move them to another company.
+  Likewise if we remove an employee, we should make sure to update any
+  other employees who had them as a manager.
 </para>
 
 </sect1>
@@ -693,15 +724,13 @@ other employees who had them as a manager.
 <title>Conclusion</title>
 
 <para>
-There are alot more nooks and crannies to &usql;, some of which are
-covered n the Xanalys documents we refered to earlier, some are not.
-The best documentation at this time is still the source code for &usql;
-itself and the inline documentation for it's various function.
+  There are alot more nooks and crannies to &usql;, some of which are
+  covered in the Xanalys documents we refered to earlier, some are
+  not.  The best documentation at this time is still the source code
+  for &usql; itself and the inline documentation for it's various
+  function.
 </para>
 
 </sect1>
 
 </chapter>
-
-
-
diff --git a/usql-tests/README b/usql-tests/README
new file mode 100644 (file)
index 0000000..c20387a
--- /dev/null
@@ -0,0 +1,110 @@
+* REGRESSION TEST SUITE GOALS
+
+The intent of this test suite is to provide sufficient coverage for
+the system to support the following:
+
+** Refactoring and Redesign of particular subsystems
+
+Refactoring and redesign efforts are normally restricted to a single
+subsystem, or perhaps to interdependent subsystems.  In such cases, a
+set of regression tests which excercise the existing interface of the
+rest of USQL to the changing subsystems should be in place and passing
+before the coding starts.
+
+** Ensuring portability and Supporting new ports.
+
+The more coverage the test suite provides the easier portability is to
+maintain, particularly if we have instances of the test suite running
+against the head on the supporting lisp environment/OS/hardware/DBMS
+combinations.  Since no individual within the project has the ability
+to run all of those combinations themselves, we are dependent upon some
+informal coordination between the mintainers of the various ports.
+
+** Adding new RDBMS backends
+
+The entire USQL DBMS interface needs to be excercised by the test
+suite, such that a new RDBMS backend that passes all the tests can be
+reasonably assured of working with the USQL layers above that.  These
+tests should also serve as impromptu documentation for the details of
+that interface and what it expects frothe RDBMS driver layers.
+
+** Bug identification and QA
+
+As new bugs are identified, they should have a regression test written
+which excercises them. This is to ensue that we donot start
+backtracking. These tests by theselves are also very valuable for
+developers, so even if you cannot fix a bug yourself, providing a
+testto excercise it greatly reduces the amount of timea developer must
+spend finding the bug prior to fixing it.
+
+
+* TEST DESIGN ISSUES
+
+** Multiple RDBMS Issues
+
+USQL supports several RDBMS backends, and it should be possible to run
+every test against all of them.  However, there are some features
+which we want tests for but which are not implemented on several of
+the backends.  
+
+** Test Hygiene
+
+Tests should be able to be run multiple times against the same
+database.  It is also important that they clean up after themselves
+when they create tables, sequences or other pesistent entities in the
+RDBMS backends, because often there are limits to the number of those
+thatcan exist at one time, and it also makes debuging thru the SQL
+monitors difficult when there aretons of unused tables lying around.
+
+If test need to load large datasets, they should have a mechanism to
+ensure the dataset is loaded just once, and not with every test run.
+
+Lastly, because there are various idiosyncracies with RDBMSs, please
+ensure that you run the entire test suite once when you write your
+tests, to ensure that your test does not leave some state behind which
+causes other tests to fail.
+
+** Test Run Configuration
+
+The file test-init.lisp defines several variables which can be used to
+control the connection dictionary of the database against which tests
+will be run.  
+
+
+* DATABASE CONNECTIONS/LIFECYCLE
+
+** CreateDB
+   *** Without existing DB
+   *** With existing DB and use old
+   *** With existing DB and use new
+   *** Error if existing DB
+
+** Data Definition
+  *** Create Tables/Sequences/Indexes -- Should cover creation of
+      tables with all supported types of fields.
+  *** Delete Tables/Sequences/Indexes
+  *** Inspection of Tables and attributes, including types
+
+** Data Manipulation
+  *** Update
+  *** Insert
+  *** Delete
+  *** Query
+
+** Functional Interface
+  *** Creation/Modification of SQL expressions
+  *** Querying
+
+** Embedded SQL syntax
+  *** Excercise all sql operators
+  
+** Object Interface
+  *** View class definition
+  *** Object creation/manipulation/deletion
+  *** Inter-object Relations
+
+** Editing Contexts
+  *** Object Create/Modification/Deletion in a context -- partly covered already
+  *** Interaction of multiple contexts
+  *** Schema manipulation within a context
+  *** Rollback and error handling within a context
\ No newline at end of file
diff --git a/usql/doc/usql-tests.txt b/usql/doc/usql-tests.txt
deleted file mode 100644 (file)
index c20387a..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-* REGRESSION TEST SUITE GOALS
-
-The intent of this test suite is to provide sufficient coverage for
-the system to support the following:
-
-** Refactoring and Redesign of particular subsystems
-
-Refactoring and redesign efforts are normally restricted to a single
-subsystem, or perhaps to interdependent subsystems.  In such cases, a
-set of regression tests which excercise the existing interface of the
-rest of USQL to the changing subsystems should be in place and passing
-before the coding starts.
-
-** Ensuring portability and Supporting new ports.
-
-The more coverage the test suite provides the easier portability is to
-maintain, particularly if we have instances of the test suite running
-against the head on the supporting lisp environment/OS/hardware/DBMS
-combinations.  Since no individual within the project has the ability
-to run all of those combinations themselves, we are dependent upon some
-informal coordination between the mintainers of the various ports.
-
-** Adding new RDBMS backends
-
-The entire USQL DBMS interface needs to be excercised by the test
-suite, such that a new RDBMS backend that passes all the tests can be
-reasonably assured of working with the USQL layers above that.  These
-tests should also serve as impromptu documentation for the details of
-that interface and what it expects frothe RDBMS driver layers.
-
-** Bug identification and QA
-
-As new bugs are identified, they should have a regression test written
-which excercises them. This is to ensue that we donot start
-backtracking. These tests by theselves are also very valuable for
-developers, so even if you cannot fix a bug yourself, providing a
-testto excercise it greatly reduces the amount of timea developer must
-spend finding the bug prior to fixing it.
-
-
-* TEST DESIGN ISSUES
-
-** Multiple RDBMS Issues
-
-USQL supports several RDBMS backends, and it should be possible to run
-every test against all of them.  However, there are some features
-which we want tests for but which are not implemented on several of
-the backends.  
-
-** Test Hygiene
-
-Tests should be able to be run multiple times against the same
-database.  It is also important that they clean up after themselves
-when they create tables, sequences or other pesistent entities in the
-RDBMS backends, because often there are limits to the number of those
-thatcan exist at one time, and it also makes debuging thru the SQL
-monitors difficult when there aretons of unused tables lying around.
-
-If test need to load large datasets, they should have a mechanism to
-ensure the dataset is loaded just once, and not with every test run.
-
-Lastly, because there are various idiosyncracies with RDBMSs, please
-ensure that you run the entire test suite once when you write your
-tests, to ensure that your test does not leave some state behind which
-causes other tests to fail.
-
-** Test Run Configuration
-
-The file test-init.lisp defines several variables which can be used to
-control the connection dictionary of the database against which tests
-will be run.  
-
-
-* DATABASE CONNECTIONS/LIFECYCLE
-
-** CreateDB
-   *** Without existing DB
-   *** With existing DB and use old
-   *** With existing DB and use new
-   *** Error if existing DB
-
-** Data Definition
-  *** Create Tables/Sequences/Indexes -- Should cover creation of
-      tables with all supported types of fields.
-  *** Delete Tables/Sequences/Indexes
-  *** Inspection of Tables and attributes, including types
-
-** Data Manipulation
-  *** Update
-  *** Insert
-  *** Delete
-  *** Query
-
-** Functional Interface
-  *** Creation/Modification of SQL expressions
-  *** Querying
-
-** Embedded SQL syntax
-  *** Excercise all sql operators
-  
-** Object Interface
-  *** View class definition
-  *** Object creation/manipulation/deletion
-  *** Inter-object Relations
-
-** Editing Contexts
-  *** Object Create/Modification/Deletion in a context -- partly covered already
-  *** Interaction of multiple contexts
-  *** Schema manipulation within a context
-  *** Rollback and error handling within a context
\ No newline at end of file
diff --git a/usql/doc/usql-tutorial.lisp b/usql/doc/usql-tutorial.lisp
deleted file mode 100644 (file)
index 9c9b93f..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-
-(in-package :cl-user)
-
-;; You must set these variables to appropriate values. 
-(defvar *tutorial-database-type* nil 
-  "Possible values are :postgresql,:postgresql-socket :mysql or :sqlite")
-(defvar *tutorial-database-name* ""
-  "The name of the database we will work in.")
-(defvar *tutorial-database-user* "" 
-  "The name of the database user we will work as.")
-(defvar *tutorial-database-server* ""
-  "The name of the database server if required")
-(defvar *tutorial-database-password* "" 
-  "The password if required")
-
-(sql:def-view-class employee ()
-  ((emplid
-    :db-kind :key
-    :db-constraints :not-null
-    :nulls-ok nil
-    :type integer
-    :initarg :emplid)
-   (first-name
-    :accessor first-name
-    :type (string 30)
-    :initarg :first-name)
-   (last-name
-    :accessor last-name
-    :type (string 30)
-    :initarg :last-name)
-   (email
-    :accessor employee-email
-    :type (string 100)
-    :nulls-ok t
-    :initarg :email)
-   (companyid
-    :type integer)
-   (company
-    :accessor employee-company
-    :db-kind :join
-    :db-info (:join-class company
-                         :home-key companyid
-                         :foreign-key companyid
-                         :set nil))
-   (managerid
-    :type integer
-    :nulls-ok t)
-   (manager
-    :accessor employee-manager
-    :db-kind :join
-    :db-info (:join-class employee
-                         :home-key managerid
-                         :foreign-key emplid
-                         :set nil)))
-  (:base-table employee))
-
-(sql:def-view-class company ()
-  ((companyid
-    :db-type :key
-    :db-constraints :not-null
-    :type integer
-    :initarg :companyid)
-   (name
-    :type (string 100)
-    :initarg :name)
-   (presidentid
-    :type integer)
-   (president
-    :reader president
-    :db-kind :join
-    :db-info (:join-class employee
-                         :home-key presidentid
-                         :foreign-key emplid
-                         :set nil))
-   (employees
-    :reader company-employees
-    :db-kind :join
-    :db-info (:join-class employee
-                         :home-key companyid
-                         :foreign-key companyid
-                         :set t)))
-  (:base-table company))
-
-;; Connect to the database (see the CLSQL documentation for vendor
-;; specific connection specs).
-(sql:connect `(,*tutorial-database-server* 
-              ,*tutorial-database-name*
-              ,*tutorial-database-user* 
-              ,*tutorial-database-password*)
-            :database-type *tutorial-database-type*)
-
-;; Record the sql going out, helps us learn what is going
-;; on behind the scenes
-(sql:start-sql-recording)
-
-;; Create the tables for our view classes
-;; First we drop them, ignoring any errors
-(ignore-errors
- (sql:drop-view-from-class 'employee)
- (sql:drop-view-from-class 'company))
-
-(sql:create-view-from-class 'employee)
-(sql:create-view-from-class 'company)
-
-
-;; Create some instances of our view classes
-(defvar employee1 (make-instance 'employee
-                              :emplid 1
-                              :first-name "Vladamir"
-                              :last-name "Lenin"
-                              :email "lenin@soviet.org"))
-
-(defvar company1 (make-instance 'company
-                             :companyid 1
-                             :name "Widgets Inc."))
-                             
-
-(defvar employee2 (make-instance 'employee
-                              :emplid 2
-                              :first-name "Josef"
-                              :last-name "Stalin"
-                              :email "stalin@soviet.org"))
-
-;; Lenin manages Stalin (for now)
-(sql:add-to-relation employee2 'manager employee1)
-
-;; Lenin and Stalin both work for Widgets Inc.
-(sql:add-to-relation company1 'employees employee1)
-(sql:add-to-relation company1 'employees employee2)
-
-;; Lenin is president of Widgets Inc.
-(sql:add-to-relation company1 'president employee1)
-
-(sql:update-records-from-instance employee1)
-(sql:update-records-from-instance employee2)
-(sql:update-records-from-instance company1)
-
-;; lets us use the functional
-;; sql interface 
-(sql:locally-enable-sql-reader-syntax)
-
-
-(format t "The email address of ~A ~A is ~A"
-       (first-name employee1)
-       (last-name employee1)
-       (employee-email employee1))
-
-(setf (employee-email employee1) "lenin-nospam@soviets.org")
-
-;; Update the database
-(sql:update-records-from-instance employee1)
-
-(let ((new-lenin (car
-                 (sql:select 'employee
-                             :where [= [slot-value 'employee 'emplid] 1]))))
-  (format t "His new email is ~A"
-         (employee-email new-lenin)))
-
-
-;; Some queries
-
-;; all employees
-(sql:select 'employee)
-;; all companies
-(sql:select 'company)
-
-;; employees named Lenin
-(sql:select 'employee :where [= [slot-value 'employee 'last-name]
-                               "Lenin"])
-
-(sql:select 'company :where [= [slot-value 'company 'name]
-                              "Widgets Inc."])
-
-;; Employees of Widget's Inc.
-(sql:select 'employee
-           :where [and [= [slot-value 'employee 'companyid]
-                          [slot-value 'company 'companyid]]
-                       [= [slot-value 'company 'name]
-                          "Widgets Inc."]])
-
-;; Same thing, except that we are using the employee
-;; relation in the company view class to do the join for us,
-;; saving us the work of writing out the SQL!
-(company-employees company1)
-
-;; President of Widgets Inc.
-(president company1)
-
-;; Manager of Josef Stalin
-(employee-manager employee2)
diff --git a/usql/doc/usql-tutorial.txt b/usql/doc/usql-tutorial.txt
deleted file mode 100644 (file)
index dcdeeb2..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-INTRODUCTION
-
-The goal of this tutorial is to guide a new developer thru the process
-of creating a set of USQL classes providing a Object-Oriented
-interface to persistent data stored in an SQL database.  We will
-assume that the reader is familiar with how SQL works, how relations
-(tables) should be structured, and has created at least one SQL
-application previously.  We will also assume a minor level of
-experience with Common Lisp.
-
-UncommonSQL (USQL) provides two different interfaces to SQL databases,
-a Functional interface, and an Object-Oriented interface.  The
-Functional interface consists of a special syntax for embedded SQL
-expressions in Lisp, and provides lisp functions for SQL operations
-like SELECT and UPDATE.  The OO interface provides a way for mapping
-Common Lisp Objects System (CLOS) objects into databases and includes
-functions for inserting new objects, querying objects, and removing
-objects.  Most applications will use a combination of the two.
-
-USQL is based on the CommonSQL package from Xanalys, so the
-documentation that Xanalys makes available online is useful for USQL
-as well.  It is suggested that developers new to USQL check their
-documentation out, as any differences between CommonSQL and USQL are
-minor. Xanalys makes the following documents available:
-
-Xanalys LispWorks User Guide  - The CommonSQL Package
-http://www.lispworks.com/reference/lw43/LWUG/html/lwuser-167.htm
-
-Xanalys LispWorks Reference Manual -- The SQL Package
-http://www.lispworks.com/reference/lw43/LWRM/html/lwref-383.htm
-
-CommonSQL Tutorial by Nick Levine
-http://www.ravenbrook.com/doc/2002/09/13/common-sql/
-
-
-DATA MODELING WITH UNCOMMONSQL
-
-Before we can create, query and manipulate USQL objects, we need to
-define our data model. To borrow from Philip Greenspun[1]:
-
-When data modeling, you are telling the RDBMS the following: 
-
-    * What elements of the data you will store 
-    * How large each element can be 
-    * What kind of information each element can contain 
-    * What elements may be left blank 
-    * Which elements are constrained to a fixed range 
-    * Whether and how various tables are to be linked 
-
-With SQL database one would do this by defining a set of relations, or
-tables, followed by a set of queries for joining the tables together
-in order to construct complex records.  However, with USQL we do this
-by defining a set of CLOS classes, specifying how they will be turned
-into tables, and how they can be joined to one another via relations
-between their attributes.  The SQL tables, as well as the queries for
-joining them together are created for us automatically, saving us from
-dealing with some of the tedium of SQL.
-
-Let us start with a simple example of two SQL tables, and the
-relations between them.
-
-CREATE TABLE EMPLOYEE (
-       emplid          NOT NULL        number(38),
-       first_name      NOT NULL        varchar2(30),
-       last_name       NOT NULL        varchar2(30),
-       emall                           varchar2(100),
-       companyid       NOT NULL        number(38),
-       managerid                       number(38)
-)
-
-CREATE TABLE COMPANY (
-       companyid       NOT NULL        number(38),
-       name            NOT NULL        varchar2(100),
-       presidentid     NOT NULL        number(38)
-)
-
-This is of course the canonical SQL tutorial example, "The Org Chart".
-
-In USQL, we would have two "view classes" (a fancy word for a class
-mapped into a database).  They would be defined as follows:
-
-(sql:def-view-class employee ()
-  ((emplid
-    :db-kind :key
-    :db-constraints :not-null
-    :type integer
-    :initarg :emplid)
-   (first-name
-    :accessor first-name
-    :type (string 30)
-    :initarg :first-name)
-   (last-name
-    :accessor last-name
-    :type (string 30)
-    :initarg :last-name)
-   (email
-    :accessor employee-email
-    :type (string 100)
-    :nulls-ok t
-    :initarg :email)
-   (companyid
-    :type integer)
-   (managerid
-    :type integer
-    :nulls-ok t))
-  (:base-table employee))
-
-(sql:def-view-class company ()
-  ((companyid
-    :db-type :key
-    :db-constraints :not-null
-    :type integer
-    :initarg :companyid)
-   (name
-    :type (string 100)
-    :initarg :name)
-   (presidentid
-    :type integer))
-  (:base-table company))
-
-
-The DEF-VIEW-CLASS macro is just like the normal CLOS DEFCLASS macro,
-except that it handles several slot options that DEFCLASS doesn't.
-These slot options have to do with the mapping of the slot into the
-database.  We only use a few of the slot options in the above example,
-but there are several others.
-
-    :column -- The name of the SQL column this slot is stored in.
-    Defaults to the slot name.  If the slot name is not a valid SQL
-    identifier, it is escaped, so foo-bar becomes foo_bar.
-
-    :db-kind -- The kind of DB mapping which is performed for this
-    slot.  :BASE indicates the slot maps to an ordinary column of the
-    DB view.  :KEY indicates that this slot corresponds to part of the
-    unique keys for this view, :JOIN indicates a join slot
-    representing a relation to another view and :virtual indicates
-    that this slot is an ordinary CLOS slot.  Defaults to :base.
-
-   :db-reader -- If a string, then when reading values from the DB, the
-    string will be used for a format string, with the only value being
-    the value from the database.  The resulting string will be used as
-    the slot value.  If a function then it will take one argument, the
-    value from the database, and return the value that should be put
-    into the slot.
-
-   :db-writer -- If a string, then when reading values from the slot
-    for the DB, the string will be used for a format string, with the
-    only value being the value of the slot.  The resulting string will
-    be used as the column value in the DB.  If a function then it will
-    take one argument, the value of the slot, and return the value
-    that should be put into the database.
-
-   :db-type -- A string which will be used as the type specifier for
-    this slots column definition in the database.
-
-   :nulls-ok -- If t, all sql NULL values retrieved from the database
-    become nil; if nil, all NULL values retrieved are converted by
-    DATABASE-NULL-VALUE
-
-   :db-info -- A join specification.
-
-In our example each table as a primary key attribute, which is
-required to be unique.  We indicate that a slot is part of the primary
-key (USQL supports multi-field primary keys) by specifying the
-:db-kind :key slot option.  
-
-The SQL type of a slot when it is mapped into the database is
-determined by the :type slot option.  The argument for the :type
-option is a Common Lisp datatype.  The USQL framework will determine
-the appropriate mapping depending on the database system the table is
-being created in.  If we really wanted to determine what SQL type was
-used for a slot, we could specify a :db-type option like "NUMBER(38)"
-and we would be guaranteed that the slot would be stored n the DB as a
-NUMBER(38).  This is not recomended because it could makes your view
-class unportable across database systems.
-
-DEF-VIEW-CLASS also supports some class options, like :base-table.
-The :base-table option specifies what the table name for the view
-class will be when it is mapped into the database.
-
-
-CLASS RELATIONS
-
-In an SQL only application, the EMPLOYEE and COMPANY tables can be
-queried to determine things like, "Who is Vladamir's manager?", What
-company does Josef work for?", and "What employees work for Widgets
-Inc.".  This is done by joining tables with an SQL query.
-
-Who works for Widgets Inc.?
-
-SELECT first_name, last_name FROM employee, company
-       WHERE employee.companyid = company.companyid
-            AND company.company_name = "Widgets Inc."
-
-Who is Vladamir's manager
-
-SELECT managerid FROM employee
-       WHERE employee.first_name = "Vladamir"
-            AND employee.last_name = "Lenin"
-
-What company does Josef work for?
-
-SELECT company_name FROM company, employee
-       WHERE employee.first_name = "Josef"
-            AND employee.last-name = "Stalin"
-            AND employee.companyid = company.companyid
-
-With USQL however we do not need to write out such queries because our
-view classes can maintain the relations between employees and
-companies, and employees to their managers for us.  We can then access
-these relations like we would any other attribute of an employee or
-company object.  In order to do this we define some join slots for our
-view classes.
-
-What company does an employee work for?  If we add the following slot
-definition to the employee class we can then ask for it's COMPANY slot
-and get the appropriate result.
-
-    ;; In the employee slot list
-    (company
-      :accessor employee-company
-      :db-kind :join
-      :db-info (:join-class company
-               :home-key companyid
-               :foreign-key companyid
-               :set nil))
-
-Who are the employees of a given company?  And who is the president of
-it? We add the following slot definition to the company view class and
-we can then ask for it's EMPLOYEES slot and get the right result.
-
-      ;; In the company slot list
-      (employees
-       :reader company-employees
-       :db-kind :join
-       :db-info (:join-class employee
-                 :home-key companyid
-                 :foreign-key companyid
-                 :set t))
-
-       (president
-        :reader president
-       :db-kind :join
-       :db-info (:join-class employee
-                 :home-key presidentid
-                 :foreign-key emplid
-                 :set nil))
-
-And lastly, to define the relation between an employee and their
-manager.
-
-       ;; In the employee slot list
-       (manager
-        :accessor employee-manager
-       :db-kind :join
-       :db-info (:join-class employee
-                 :home-key managerid
-                 :foreign-key emplid
-                 :set nil))
-
-USQL join slots can represent one-to-one, one-to-many, and
-many-to-many relations.  Above we only have one-to-one and one-to-many
-relations, later we will explain how to model many-to-many relations.
-First, let's go over the slot definitions and the available options.
-
-In order for a slot to be a join, we must specify that it's :db-kind
-:join, as opposed to :base or :key.  Once we do that, we still need to
-tell USQL how to create the join statements for the relation.  This is
-what the :db-info option does.  It is a list of keywords and values.
-The available keywords are:
-
-    :join-class -- The view class to which we want to join.  It can be
-    another view class, or the same view class as our object.
-
-    :home-key -- The slot(s) in the immediate object whose value will
-    be compared to the foreign-key slot(s) in the join-class in order
-    to join the two tables.  It can be a single slot-name, or it can
-    be a list of slot names.
-
-    :foreign-key -- The slot(s) in the join-class which will be compared
-    to the value(s) of the home-key.
-
-    :set -- A boolean which if false, indicates that this is a
-    one-to-one relation, only one object will be returned.  If true,
-    than this is a one-to-many relation, a list of objects will be
-    returned when we ask for this slots value.
-
-There are other :join-info options available in USQL, but we will save
-those till we get to the many-to-many relation examples.
-
-
-OBJECT CREATION
-
-Now that we have our model laid out, we should create some object.
-Let us assume that we have a database connect set up already.  We
-first need to create our tables in the database:
-
-Note: the file usql-tutorial.lisp contains view class definitions
-which you can load into your list at this point in order to play along
-at home.
-
-(sql:create-view-from-class 'employee)
-(sql:create-view-from-class 'company)
-
-Then we will create our objects.  We create them just like you would
-any other CLOS object:
-
-(defvar employee1 (make-instance 'employee
-                              :emplid 1
-                              :first-name "Vladamir"
-                              :last-name "Lenin"
-                              :email "lenin@soviet.org"))
-
-(defvar company1 (make-instance 'company
-                             :companyid 1
-                             :name "Widgets Inc."))
-                             
-
-(defvar employee2 (make-instance 'employee
-                              :emplid 2
-                              :first-name "Josef"
-                              :last-name "Stalin"
-                              :email "stalin@soviet.org"))
-
-In order to insert an objects into the database we use the
-UPDATE-RECORDS-FROM-INSTANCE function as follows:
-
-(sql:update-records-from-instance employee1)
-(sql:update-records-from-instance employee2)
-(sql:update-records-from-instance company1)
-
-Now we can set up some of the relations between employees and
-companies, and their managers.  The ADD-TO-RELATION method provides us
-with an easy way of doing that.  It will update both the relation
-slot, as well as the home-key and foreign-key slots in both objects in
-the relation.
-
-;; Lenin manages Stalin (for now)
-(sql:add-to-relation employee2 'manager employee1)
-
-;; Lenin and Stalin both work for Widgets Inc.
-(sql:add-to-relation company1 'employees employee1)
-(sql:add-to-relation company1 'employees employee2)
-
-;; Lenin is president of Widgets Inc.
-(sql:add-to-relation company1 'president employee1)
-
-After you make any changes to an object, you have to specifically tell
-USQL to update the SQL database.  The UPDATE-RECORDS-FROM-INSTANCE
-method will write all of the changes you have made to the object into
-the database.
-
-Since USQL objects re just normal CLOS objects, we can manipulate
-their slots just like any other object.  For instance, let's say that
-Lenin changes his email because he was getting too much SPAM fro the
-German Socialists.
-
-;; Print Lenin's current email address, change it and save it to the
-;; database.  Get a new object representing Lenin from the database
-;; and print the email
-
-;; This lets us use the functional USQL interface with [] syntax
-(sql:locally-enable-sql-reader-syntax)
-
-(format t "The email address of ~A ~A is ~A"
-       (first-name employee1)
-       (last-name employee1)
-       (employee-email employee1))
-
-(setf (employee-email employee1) "lenin-nospam@soviets.org")
-
-;; Update the database
-(sql:update-records-from-instance employee1)
-
-(let ((new-lenin (car (sql:select 'employee
-                       :where [= [slot-value 'employee 'emplid] 1]))))
-      (format t "His new email is ~A"
-         (employee-email new-lenin)))
-
-Everything except for the last LET expression is already familiar to
-us by now.  To understand the call to SQL:SELECT we need to discuss
-the Functional SQL interface and it's integration with the Object
-Oriented interface of USQL.
-
-
-FINDING OBJECTS
-
-Now that we have our objects in the database, how do we get them out
-when we need to work with them?  USQL provides a Functional interface
-to SQL, which consists of a special Lisp reader macro and some
-functions.  The special syntax allows us to embed SQL in lisp
-expressions, and lisp expressions in SQL, with ease.
-
-Once we have turned on the syntax with the expression:
-
-(sql:locally-enable-sql-reader-syntax)
-
-we can start entering fragments of SQL into our lisp reader.  We will
-get back objects which represent the lisp expressions.  These objects
-will later be compiled into SQL expressions that are optimized for the
-database backed we are connected to.  This means that we have a
-database independent SQL syntax.  Here are some examples:
-
-;; an attribute or table name
-[foo] => #<MAISQL-SYS::SQL-IDENT-ATTRIBUTE FOO>
-
-;; a attribute identifier with table qualifier
-[foo bar] => #<MAISQL-SYS::SQL-IDENT-ATTRIBUTE FOO.BAR>
-
-;; a attribute identifier with table qualifier
-[= "Lenin" [first_name]] =>
-   #<MAISQL-SYS::SQL-RELATIONAL-EXP ('Lenin' = FIRST_NAME)>
-
-[< [emplid] 3] =>
-   #<MAISQL-SYS::SQL-RELATIONAL-EXP (EMPLID < 3)>
-
-[and [< [emplid] 2] [= [first_name] "Lenin"]] =>
-   #<MAISQL-SYS::SQL-RELATIONAL-EXP ((EMPLID < 2) AND
-                                     (FIRST_NAME = 'Lenin'))>
-
-
-;; If we want to reference a slot in an object we can us the
-;;  SLOT-VALUE sql extension
-[= [slot-value 'employee 'emplid] 1] =>
-   #<MAISQL-SYS::SQL-RELATIONAL-EXP (EMPLOYEE.EMPLID = 1)>
-
-[= [slot-value 'employee 'emplid]
-   [slot-value 'company 'presidentid]] =>
-   #<MAISQL-SYS::SQL-RELATIONAL-EXP (EMPLOYEE.EMPLID = COMPANY.PRESIDENTID)>
-
-The SLOT-VALUE operator is important because it let's us query objects
-in a way that is robust to any changes in the object->table mapping,
-like column name changes, or table name changes.  So when you are
-querying objects, be sure to use the SLOT-VALUE SQL extension.
-
-Since we can now formulate SQL relational expression which can be used
-as qualifiers, like we put after the WHERE keyword in SQL statements,
-we can start querying our objects.  USQL provides a function SELECT
-which can return use complete objects from the database which conform
-to a qualifier, can be sorted, and various other SQL operations.
-
-The first argument to SELECT is a class name.  it also has a set of
-keyword arguments which are covered in the documentation.  For now we
-will concern ourselves only with the :where keyword.  Select returns a
-list of objects, or nil if it can't find any.  It's important to
-remember that it always returns a list, so even if you are expecting
-only one result, you should remember to extract it from the list you
-get from SELECT.
-
-;; all employees
-(sql:select 'employee)
-;; all companies
-(sql:select 'company)
-
-;; employees named Lenin
-(sql:select 'employee :where [= [slot-value 'employee 'last-name]
-                               "Lenin"])
-
-(sql:select 'company :where [= [slot-value 'company 'name]
-                              "Widgets Inc."])
-
-;; Employees of Widget's Inc.
-(sql:select 'employee
-           :where [and [= [slot-value 'employee 'companyid]
-                          [slot-value 'company 'companyid]]
-                       [= [slot-value 'company 'name]
-                          "Widgets Inc."]])
-
-;; Same thing, except that we are using the employee
-;; relation in the company view class to do the join for us,
-;; saving us the work of writing out the SQL!
-(company-employees company1)
-
-;; President of Widgets Inc.
-(president company1)
-
-;; Manager of Josef Stalin
-(employee-manager employee2)
-
-
-DELETING OBJECTS
-
-Now that we know how to create objects in our database, manipulate
-them and query them (including using our predefined relations to save
-us the trouble writing alot of SQL) we should learn how to clean up
-after ourself.  It's quite simple really. The function
-DELETE-INSTANCE-RECORDS will remove an object from the database.
-However, when we remove an object we are responsible for making sure
-that the database is left in a correct state.
-
-For example, if we remove a company record, we need to either remove
-all of it's employees or we need to move them to another company.
-Likewise if we remove an employee, we should make sure to update any
-other employees who had them as a manager.
-
-
-CONCLUSION
-
-There are alot more nooks and crannies to USQL, some of which are
-covered n the Xanalys documents we refered to earlier, some are not.
-The best documentation at this time is still the source code for USQL
-itself and the inline documentation for it's various function.
-
-
-
-[1] Philip Greenspun's "SQL For Web Nerds" - Data Modeling
-    http://www.arsdigita.com/books/sql/data-modeling.html
-
-