Author: mahadev
Date: Fri Feb 19 06:30:15 2010
New Revision: 911713

URL: http://svn.apache.org/viewvc?rev=911713&view=rev
Log:
ZOOKEEPER-664.  BookKeeper API documentation (flavio via mahadev)

Modified:
    hadoop/zookeeper/trunk/CHANGES.txt
    hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html
    hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf
    
hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml

Modified: hadoop/zookeeper/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=911713&r1=911712&r2=911713&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/CHANGES.txt (original)
+++ hadoop/zookeeper/trunk/CHANGES.txt Fri Feb 19 06:30:15 2010
@@ -281,6 +281,8 @@
 
   ZOOKEEPER-665. Add BookKeeper streaming documentation (flavio via mahadev)
 
+  ZOOKEEPER-664.  BookKeeper API documentation (flavio via mahadev)
+
 NEW FEATURES:
   ZOOKEEPER-539. generate eclipse project via ant target. (phunt via mahadev)
 

Modified: hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html?rev=911713&r1=911712&r2=911713&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html (original)
+++ hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html Fri Feb 19 06:30:15 
2010
@@ -307,7 +307,7 @@
     
 </p>
 <p>
-    There is one BookKeeper constructor:
+    There are three BookKeeper constructors:
     </p>
 <p>
     
@@ -315,12 +315,83 @@
        public BookKeeper(String servers) 
        throws KeeperException, IOException    
     </span>
-       
+       
 </p>
+<p>
+    where:
+    </p>
+<ul>
+       
+<li>
+       
 <p> 
-    where <span class="codefrag computeroutput">servers</span> is a 
comma-separated list of ZooKeeper servers.
+        
+<span class="codefrag computeroutput">servers</span> is a comma-separated list 
of ZooKeeper servers.
+       </p>
+       
+</li>
+    
+</ul>
+<p>
+    
+<span class="codefrag computeroutput">
+       public BookKeeper(ZooKeeper zk) 
+       throws InterruptedException, KeeperException    
+    </span>
+       
+</p>
+<p>
+    where:
+    </p>
+<ul>
+       
+<li>
+       
+<p> 
+        
+<span class="codefrag computeroutput">zk</span> is a ZooKeeper object. This 
constructor is useful when
+        the application also using ZooKeeper and wants to have a single 
instance of ZooKeeper.  
+       </p>
+       
+</li>
+    
+</ul>
+<p>
+    
+<span class="codefrag computeroutput">
+       public BookKeeper(ZooKeeper zk, ClientSocketChannelFactory 
channelFactory) 
+       throws InterruptedException, KeeperException    
+    </span>
+       
+</p>
+<p>
+    where:
     </p>
-<a name="N10064"></a><a name="bk_createLedger"></a>
+<ul>
+       
+<li>
+       
+<p> 
+        
+<span class="codefrag computeroutput">zk</span> is a ZooKeeper object. This 
constructor is useful when
+        the application also using ZooKeeper and wants to have a single 
instance of ZooKeeper.  
+       </p>
+       
+</li>
+       
+       
+<li>
+       
+<p> 
+        
+<span class="codefrag computeroutput">channelFactory</span> is a netty channel 
object 
+        (<span class="codefrag 
computeroutput">org.jboss.netty.channel.socket</span>).  
+       </p>
+       
+</li>
+    
+</ul>
+<a name="N100A9"></a><a name="bk_createLedger"></a>
 <h3 class="h4"> Creating a ledger. </h3>
 <p> Before writing entries to BookKeeper, it is necessary to create a ledger. 
     With the current BookKeeper API, it is possible to create a ledger both 
synchronously
@@ -335,7 +406,7 @@
 <p>
     
 <span class="codefrag computeroutput">
-    public LedgerHandle createLedger(int ensSize, int qSize, QMode mode,  byte 
passwd[])
+    public LedgerHandle createLedger(int ensSize, int qSize, DigestType type,  
byte passwd[])
         throws KeeperException, InterruptedException, 
         IOException, BKException
     </span>
@@ -370,10 +441,7 @@
        
 <p>
        
-<span class="codefrag computeroutput">mode</span> is the ledger mode 
(QMode.GENERIC, QMode.VERIFIABLE).
-       If <span class="codefrag computeroutput">mode</span> is QMode.GENERIC, 
then <span class="codefrag computeroutput">ensSize</span> has to
-       be at least <em>3t+1</em>, and <span class="codefrag 
computeroutput">qSize</span> has to be <em>2t+1</em>.
-       <em>t</em> is the maximum number of tolerated bookie failures.  
+<span class="codefrag computeroutput">type</span> is the type of digest used 
with entries: either MAC or CRC32.  
        </p>
        
 </li>
@@ -396,7 +464,7 @@
     </p>
 <p>
     As a convenience, we provide a <span class="codefrag 
computeroutput">createLedger</span> with default parameters (3,2,VERIFIABLE), 
-    and the only input parameter it requires is a password.
+    and the only two input parameters it requires are a digest type and a 
password.
     </p>
 <p>
        
@@ -408,13 +476,11 @@
 <span class="codefrag computeroutput">
     public void asyncCreateLedger(int ensSize, 
             int qSize, 
-            QMode mode,  
+            DigestType type,  
             byte passwd[],
             CreateCallback cb,
             Object ctx
             )
-    throws KeeperException, InterruptedException, 
-    IOException, BKException
     </span>
        
 </p>
@@ -441,7 +507,7 @@
                
 <p>
                
-<span class="codefrag computeroutput">rc</span> is a return code (please refer 
to <span class="codefrag 
computeroutput">org.apache.bookeeper.client.BKDefs</span> for a list);
+<span class="codefrag computeroutput">rc</span> is a return code (please refer 
to <span class="codefrag 
computeroutput">org.apache.bookeeper.client.BKException</span> for a list);
                </p>
                
 </li>
@@ -461,7 +527,7 @@
                
 <p>
                
-<span class="codefrag computeroutput">ctx</span> is a control object for 
accountability purposes;
+<span class="codefrag computeroutput">ctx</span> is a control object for 
accountability purposes. It can be essentially any object the application is 
happy with.
                </p>
                
 </li>
@@ -471,7 +537,7 @@
        The <span class="codefrag computeroutput">ctx</span> object passed as a 
parameter to the call to create a ledger
        is the one same returned in the callback.
     </p>
-<a name="N1012E"></a><a name="bk_writeLedger"></a>
+<a name="N1015E"></a><a name="bk_writeLedger"></a>
 <h3 class="h4"> Adding entries to a ledger. </h3>
 <p>
     Once we have a ledger handle <span class="codefrag 
computeroutput">lh</span> obtained through a call to create a ledger, we
@@ -508,7 +574,7 @@
     
 </ul>
 <p>
-       A call to <span class="codefrag computeroutput">addEntry</span> returns 
the status of the operation ((please refer to <span class="codefrag 
computeroutput">org.apache.bookeeper.client.BKDefs</span> for a list);
+       A call to <span class="codefrag computeroutput">addEntry</span> returns 
the status of the operation (please refer to <span class="codefrag 
computeroutput">org.apache.bookeeper.client.BKDefs</span> for a list);
     </p>
 <p>
        
@@ -519,7 +585,6 @@
     
 <span class="codefrag computeroutput">
        public void asyncAddEntry(byte[] data, AddCallback cb, Object ctx)
-    throws InterruptedException
     </span>
        
 </p>
@@ -576,13 +641,13 @@
                
 <p>
                
-<span class="codefrag computeroutput">ctx</span> is control object used for 
accountability purposes. 
+<span class="codefrag computeroutput">ctx</span> is control object used for 
accountability purposes. It can be any object the application is happy with.
                </p>
                
 </li>
        
 </ul>
-<a name="N101C9"></a><a name="bk_closeLedger"></a>
+<a name="N101F9"></a><a name="bk_closeLedger"></a>
 <h3 class="h4"> Closing a ledger. </h3>
 <p>
     Once a client is done writing, it closes the ledger. The following methods 
belong
@@ -597,7 +662,7 @@
     
 <span class="codefrag computeroutput">
        public void close() 
-    throws KeeperException, InterruptedException
+    throws InterruptedException
     </span>
        
 </p>
@@ -665,7 +730,7 @@
 </li>
        
 </ul>
-<a name="N1023E"></a><a name="bk_openLedger"></a>
+<a name="N1026E"></a><a name="bk_openLedger"></a>
 <h3 class="h4"> Opening a ledger. </h3>
 <p>
     To read from a ledger, a client must open it first. The following methods 
belong
@@ -679,8 +744,8 @@
 <p>
     
 <span class="codefrag computeroutput">
-       public LedgerHandle openLedger(long lId, byte passwd[])
-    throws KeeperException, InterruptedException, IOException, BKException
+       public LedgerHandle openLedger(long lId, DigestType type, byte passwd[])
+    throws InterruptedException, BKException
     </span>
        
 </p>
@@ -696,6 +761,16 @@
 </li>
        
        
+<li> 
+    
+<p>
+    
+<span class="codefrag computeroutput">type</span> is the type of digest used 
with entries: either MAC or CRC32.  
+    </p>
+    
+</li>
+       
+       
 <li>
        
 <p>
@@ -714,8 +789,7 @@
 <p>
     
 <span class="codefrag computeroutput">
-       public void asyncOpenLedger(long lId, byte passwd[], OpenCallback cb, 
Object ctx)
-    throws InterruptedException
+       public void asyncOpenLedger(long lId, DigestType type, byte passwd[], 
OpenCallback cb, Object ctx)
     </span>
        
 </p>
@@ -768,7 +842,7 @@
 </li>
        
 </ul>
-<a name="N102CB"></a><a name="bk_readLedger"></a>
+<a name="N10305"></a><a name="bk_readLedger"></a>
 <h3 class="h4"> Reading from ledger </h3>
 <p>
     Read calls may request one or more consecutive entries. The following 
methods belong
@@ -803,7 +877,7 @@
        
 <p>
        
-<span class="codefrag computeroutput">lastEntry</span> is the identifier of 
the last entry in the sequence of entries to read;
+<span class="codefrag computeroutput">lastEntry</span> is the identifier of 
the last entry in the sequence of entries to read.
        </p>
        
 </li>
@@ -833,7 +907,7 @@
 <p>
        
 <span class="codefrag computeroutput">
-       void readComplete(int rc, LedgerHandle lh, LedgerSequence seq, Object 
ctx)
+       void readComplete(int rc, LedgerHandle lh, 
Enumeration&lt;LedgerEntry&gt; seq, Object ctx)
        </span>    
        
 </p>
@@ -866,7 +940,7 @@
                
 <p>
                
-<span class="codefrag computeroutput">seq</span> is a <span class="codefrag 
computeroutput">LedgerSequence</span> object to containing the list of entries 
requested;
+<span class="codefrag computeroutput">seq</span> is a <span class="codefrag 
computeroutput">Enumeration&lt;LedgerEntry&gt; </span> object to containing the 
list of entries requested;
                </p>
                
 </li>

Modified: hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf?rev=911713&r1=911712&r2=911713&view=diff
==============================================================================
--- hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf (original)
+++ hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf Fri Feb 19 06:30:15 
2010
@@ -5,10 +5,10 @@
 /Producer (FOP 0.20.5) >>
 endobj
 5 0 obj
-<< /Length 643 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 646 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gb!$E966RV&BF6e$6>[)[sA.s30SI<*r6/OZj1%CAr;^$P\0LRbJQf4V\=)j'0)@bG.%>L`(F3GdJFl;-jP^:1;^rT-Gl^=#f?O7:c...@sa1u5;Z5pM\XgS0$=fK(i([)m!PQ(OGK<hq'/*FFM\Zr1(+s-#9?(df<q_XU4Vi!bX+W3go.!,DF8&pGTIt_qER#iaZbO6B-PS:s8PqLna7^lF+[[Y;NLu<57K'=s3-,@$X"seXW4UE5%KCH'6=!lhl%MYe_O1!e)b6Ksei(R3ZP,&03E1n"p<qe:.!](t*DKo2BAK\jCO)8p$f...@zob[7b":FVBei8G0@@uW%]RoN(GuF(=%8b%c.um)MJ?+=FIZA+.0XaZp_V1;QP*atJLsgi'/#...@*gj#we&+$<kghk&.)q...@mij$"$0]-X8O?H\:4pfH0S<*...@w_qn8s@[Vh?n7AfW2b5+i'Z;b[?E1Ieb%1j-_KV9#m84e846>t(0an2`4RNVJ6.]93Hee86D3a#ria0h'[kLX0N'_+J/Qr[?"Zj!,OO.DbE+]=u"JeqgZtBsmqEaSB9O2M;3skhXJiJZtS2`%R.VE#So8R\GlI%lY`q/!llu...@blx&ehkYhCNlAP3bA;h!hAnt:l4,h~>
+Gb!$E966RV&BF6e$6>[)[sA.s30SI<*r6/OZj1%CAr;^$P\0LRbJQf4V\=)j'0)@bG.%>L`(F3GdJFl;-jP^:1;^rT-Gl^=#f?O7:c...@sa1u5;Z5pM\XgS0$=fK(i([)m!PQ(OGK<hq'/*FFM\Zr1(+s-#9?(df<q_XU4Vi!bX+W3go.!,DF8&pGTIt_qER#iaZbO6B-PS:s8PqLna7^lF+[[Y;NLu<57K'=s3-,@$X"seXW4UE5%KCH'6=!lhl%MYe_O1!e)b6Ksei(R3ZP,&03E1n"p<qe:.!](t*DKo2BAK\jCO)8p$f...@zob[7b":FVBei8G0@@uW%]RoN(GuF(=%8b%c.um)MJ?+=FIZA+.0XaZpjVAY1'K*MFqiRa"[CtO-isU$PF5Tsc=-D3!t(1[AL'A=iK3P?,_!U1UUrJ[?&\._cg;mA.5:*?Kcl[1p^(=$WdTL6_GB+o&:1>4\gWmgp^,hX*k"RQo^7s]J&X/RT^oTK*!KV\dI2)(+1...@u,I`j57^="ypfmdc3d...@b^$:@.8V8/W:L_,Y?J^U,YI-:gKIkl/S[I,=0K*pThMK.XWCoa(G\^*4KIB-$<q...@muea3a?\ih4?<Yf;A$"L3[d'+QUC(tgrrQHOi8a~>
 endstream
 endobj
 6 0 obj
@@ -102,10 +102,10 @@
 >>
 endobj
 22 0 obj
-<< /Length 2221 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1815 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GatU5=``=U&:W67i1iG0:]^bj0R^5_NpAT?%XZot7X:XP87Fq!1.bJcIsmY2!1pJXRE5RCG5'a<QaqQIr:nRD0L`GCY[,o4DLjAYra<pYiQe80_N&Cp`7C7_N%V6aKGF4t+&f^CK/a@)S[pq;q-KVpV>U%f&-n>(>$nCe?PYR2Maq/^Lq$_illCtnlWUZkGg1&^YjGVnYZ?ZXMsCEa[P4\rRD9(q2QLdK$":E$lC%>@ellINQ]ER>SeYJ^eW,c',L/F;ADK2]==^K8Om];ODSqAUl;`H)Ot7-,4:Lf/%)W?U'7kod&G1eOf<Ic[>V>-5j=SfK9HdEM5W)<m...@04:*cO<p]("?)f...@#]d>%BOCP(e>v...@a_w\4931<,_-p<o6nHj6S<FM)734E63T7a6YZ*BK$^)'dZ5N__n^I=%-TgrQ;F96`+F4*&2:jA5;nq^pcxt\j?%...@emad&Rk.[Fn4W!&[2l';GBBSjD^_jSNJP]S0IMBb3^rVkM2O0UdAT&BBudH48$lL&5j-I'Z?_64I]_a'b?0$rp0q8tq...@wknrt]n,C+r/!alEaCd3b&D\dUXgMiu6*>ae%5&o&heP=qL"kh3N-JZL>o)0-('e\qp&#t4B^TLL]+8gcu2+eMQQmk`lB"q2uH7n+ApUhU/Mf("'$n197&P=#*Sg^XGU4U`L?+Bpl1ni7injQ,Y=?tJe-4gi"k...@0i+=/(#FK,+3AK8q,U\`oN2g</j2orl,ds>H3^+Y,*TkFf.;?V>4H*e6/"fTgJRF(i]EEVcMsLH=hhrj83_8n\Q+CdEONC=TjpoeIYfld%6KZGE:Qgi"[Q0N\XEcck%\.gJl1fXjpf`aRLV=oGMm#!s0.$K?67&Q;@Ua_Ouki=K7mr.'O`14PhVhqHDG&./KtY)Vq6g&"O+jbq=^TO,1&4Z/JE7Ee4S"Q$Cph-$:0(=g!cf/e7/G9G5UbO-phkqjP,N)^YttFYsB>1bZE
 
9>HIETXeG\*[9RCpNES*nU#6K`pB%IIjgWBs]`iQ67c7p^fdITQ]#eL&&8MRjVoNp4ds2BV#D^ks&'%ZaY(;^NGF1$:mU?)GUS[rA'Bq_*c'F^].c7/pPc8^mHLlP:%XBId=#Cal^(%KSOam,!I6;-nLJnpaVoi,:RUQ>0+1ijsXh]T4lnRRDa`L;]]$97pGb'[...@#ise.5etluz'=J,^g+f5ier1m$xmp8f...@[<(-+@&j#>gjpUn?KRFck.%.3TOkrLE4t*.iR)emAHr<pHB*8ja7f]?1O.WsZC=>4h!qR?364aKcq:)WnF[9JN(/XWa-k5E2j=\R(u\a#!tD6db3brUX43#?(*wj4tt!...@hx%9m"%<YuK?&S%u=[Pe.nsDk7M53TP(im6xpv...@g=5p;0XUd8=g7I`Zj<`NMbE%6rJN]mY4)S8fZIo+oVm!_e!s2L#A0dW[i]0ggt9^fMGBX%Z<sNqHfR]F%d-6ZNZZ)']...@\%o^2rv(ApCeEmB\!=k3hj2X'EqPVeZMX,unOhUS5<j=?r:HK6%/R6UTZu++*be$CVd'=F#dWg(q==4Y(4+tb.TPo">bpWS!0pH[CA;Lk5eF`/p$D*3Yib2U41lGuS.-+tF6$9R)k.*08NH,Qh[/!:W?!eF9jh"p-BU$fkTqT:`[bO=g$1RM^DZ-S=U5hK;*QhOZFp*L<b[SVpH59\ODDc0EDGWd1R:<^WcHK6[,^1DVT7=gBO2_#2>0.TJATB[.;at<bbQ*+VH]E<f#...@\vvhhet^9^"#/3FoM^%^:V"gIXe]:ee?pmkk...@$#e$v,8tlP:fRsFjdb-'Z2DMa5DRZP,\:qmt+i`24li2...@]m=ups@APp*>^&`#jfK*'-cC!BZDf:kaa_)>\/`e&069i+bns:-Vu25tia%C^#t:92-^qE]W595U&Tp1:aL&qqk%NYJ5SG=YiSE\m<.7he#$WgOc*',%*l`MSR&Z
 
OaN'q;.YDT9eKa(t-9SGBM'+;Hg3m:'t\m$4LjI#^01ES17^?6-pi`>-bbhM"1k<W9];"'EQS"tfuk3...@io,JX!_o!pne:;p...@?cahs1w:_%\#++hY9Z$d%(_N75Djfi#.haX,\P\FJ80OmofQj$+n-Fj&N.h>Ei\D*>VjmfX2&VehmfJZg/HGQcp=68eGcM)@KT7U%SGpeZp-7J^Od`A.R*D5"QFr'2:[*^e"r...@\&`23~>
+Gb!Sm9lo&I&a...@c2i+uht-ijq`qs8p64`1d%a"?ft5YI3WQm,OnMX13:0),U#T9;s?:1c6^K\cBQI9>hk\')`DpDabU4(u0-3,#oHaFQPY"V/cPSr8HkUZEQqGt%3[\tMgB?[^2ID&2R6;6n`9dc*d...@vrrctfebc]?#b_guro5a@[\5s4pmo...@h%+).kPYO^rHq+;'s]6iqLEo,"E3<'fha#A[&Q$oh6ej+f],;gB1Uj8!Jop9KCfOiZ#cP3ERtqhU#1'``fV#8%(i<DW?X`O&s,X8R@'A&VWZ!%)WL$RfOlM%!oqUl91k\>eVRTc!.'QR:`I/JSUk>anEX?E:A8?l,$o-gm]*fQ\oD7_XiJrC!HK,PESLPirK0M-OKDbf^"e)Nd^&N3bYM$L72p<`mXR[7-I<roG-G/*...@n8^meui)JYSC>]3CP!=P.fM'?=o^nmhmvh^u1...@.ws&F/?;cm...@0tfpihi`a%fetvlx$`qhdt.$gj5a3s#\p'X-;9EOl,f]uQ48L_AVVN%:c[7J>Og.iB?2i5t,i,p%CV>=e<2MMF\dCWrdKT,-a8w^*-c?bar...@r=lnqgbb*(aGHlA_?/gB7$(>:(OfKf]]M/AXRY2TWq:'Pmi"Wnm`:#c!*=!!.'rRf:oVH:22:qAGCACgOrZk%lJ_tGIZ%jN6Q=Od/8Y..-0W-9kJ<b&^IT,Qh$RJV)YFrWMA2=1\CAdq))oEbE;@Nl]o/Gg)qkTZckFPW^;SR<$ZaA?M-Zt_dCT(C-UB*;5]kV,]W,"kIEe;)f-8*d...@6o2]5b)WYV*3TehP_&!,1Z^f?9d7NH.O1kqIb-;4*.:TNSXiUBF/^&r77TMSLrK[(6J%5lO*#-A6*WH-$Yi4,.od54j8>LhsdqQ1GQmA7Gq?8CLu]p&m3'il^$L-$h[:eXHoM<.KIe4l1hKc]B14Qqp-,as3)F#i%L202VYC`'S72&q:u^=&A:E`IL
 
'%ltQ\Q4FLKZ`Q(=ip[M^FqVQ?bLc#-HO]98)*sdHECQ?ff,PL:9[90I.YUT0a&S76q>;k$J=tK/LZ;#IXh^.hFM'hF4[BN\.]31sQe;n;jj2P)$FlpN\K4hLTDr'96P60:LRO-\mm''Qn/oEPMrtSo'qQ2kRl[d7"8U>&nU8U_hFikrB2bW`fB535onFiM&Q"-n)k"8Gbn0::ic...@0xkzlq>--]Fa<ss8.j6m0:.6K]ch2Rc9cnZ&)?Xr:>%\_N.83Zg;pe4\UXaV7r6u7i/M*2C3BIW2\^BT+u)jK\"Vuf;U1!Y9*E6OXL`nXNE+a5$mYNA)lhak;GkaRq$8^&DP=F9Fb[g3#j'f@<KHSA=Qk<<Bnp&j5<uhg[...@yj^e1@.R2h1\(J'<a`_nm!4=]ok...@guvg>[.TJ'`h[3.emA.:'X0ibfPZM2^mj'q"_=I?u&$)VC=_r.=f%P!J1_$AF)ib_ngg9...@omf*hu0-a]ii!eepho+(`Zjk=07I6g_*SQGHpS"$&1A2DgCY/GZ7+Rh&6B-C8IS)iHFrnI4^Up#KoiSBYUicHpAH;^F'Nb$2)NV%gHVr'Qh%l"kA,M@'FD8OL4r,;$r$`]E*!>T\f]8KDP?\5\51N&"-BL_oQKZ%#d_*Od-H_>>1tRP[OTr:Zl>Oc't^6...@_adjrgc+if+t.pnd5=r_d6f5n5l1hpie37w:>(IPaRN';n[T,[P66((1jwbulh...@rm`gllx13`m(ssSn3'r\k<hUFZ.Z8(*IS)Q<>?r+J1\^,g=dQT7)eO)k#:4P2N+H-XXc8Y0?[4[/pA~>
 endstream
 endobj
 23 0 obj
@@ -188,10 +188,10 @@
 >>
 endobj
 31 0 obj
-<< /Length 1998 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1938 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm<968iG&AII3n7^---ijsVfUQd08^jK!VUkAPjT(F)`0r"e5,>^'^<;kITL_]CF>D,I";^mkrNLL(fu%:mI7C=Jr4S^+2R+j[oAG+b=23X3f-YS,=IHNsZS/YsZNQ:)&;H5FoT!+>_9QLQZYM$0r_]_ij;t"9f31:@?a#c...@h[[j12ejg4,_5j`hiiRog%:?;3o3n!Lr)X`22##1Up>AmUql]og]l`3u#kqC"V'^045CfM8N,BJ6!l:%)Y1.;>"d_?;q>fbkUj,QMs)k#s`9#g*"Z,i^hA40UT9hVdB\=JYh8YW38AHkiTX_K4>;8aqQWi1$d.Xck9L89gX]m>ir`A1G2[QW_A*U<DX\7KQ8ri,&TX%9!R:,phtJ3ff.Xo=V0E^;%11/#Xr#3!L\"re&0:o/N,JmUljK=m%WYfkN[Nhes(W\AKSnYg*+DOgR&2>!ianl-_0v`hs...@mfu.bn6e!yhhl!9*2"7Q;.lu$!53B-<eYD5>,]_cYppZZ+3N>)S0N!-4SP8>2M]5i]j3am9rHPpHUT?a5Z3L[uQ0i+R,muY)'kt;p]5c1plf...@i\(LUEt;o^`g!ML%cIW<Y&Dsn379<SEOeRl>_3[...@k4&W4SfraK\nmqmOL>t&e\=Up>\B/kR#<\JT8Bie#'r;$jCB]Qc1eQ3rBdbhqW3qTsUSo1n0TbkmfrO^5C_f/!u:WMTf.A>$Lr!;DeW\oU]LD42A.sFh4#.HhWY6/%.UZ;(9j72V,o$hc!5]q0"E"q=p)6...@plbi`p\a\`wyfmma1jocbx=%npe2k"U[1X'\mG$V&EHuA3eY,7*?ga>CKT[*4-(*'?8A+t7JOYY(46\Q$H,ii2;])Gs4?pB+\gO0&*^n`i&$F42I"lWX<7R&sbQ,cb2aYlQR7(ALmV:<sm*UfeT!Mlk^(j*lqn4...@tb`nv$)r$$3%S1j>4"tcpC`J:UA)qg31]fXh\U>%GWqa*cbh
 
mOCV?gPuD,/!/>chREV/?GHWJs`Dj$bpmejBC(m/+MVoa`X!COI__?AK8Hg4=H+"<p%b7Dq/GuC;]rI]YW1KE5VYcfuVebblqX)sfAd:Al%KQ$\6?JTj$FeXGm>Bnj9Na??HjkVZ4?q9@)dJ,+(.M-D.kmsD,sK)`+JK4mnPJiU)ajb5omx...@udvae9[l^g&R7n&DcXHJ-i;b=?t!"6hcuYY3%7j&+gn...@bmi_(j5PTWP5NAhMQhV%HM(_9^b]*sVe+SnbY!()TNH\qX$98qcc'.5$,sc)@3_R$i%o;pVd"cim_+:NB$_k]VHB%STY64#[(l#%a$aGSQ\3RiU=(XOZbP^a(7<b]f__pJ3;G''tUc>8$5e8"*?\Ji,ib+o$KCL>8J^K6lePV'^20JYfa(d`f'3%""kIN&$TV63=Q*td$oW%-pY8([m6CA?U79O[P,nA=Hgd[FRZ(Oj'YoN#Y-Pko*T+5V'k7QVE]29#[+WQG<b...@g`[0*nmrij%%?zqgurksh"Lh-NI`SIpk8I7a`t,&eI\KOTiQl'e&`2Upg8VjA3(92`0hDc)h_bG[0c4gY!tiI^;nWP!l97Je8cJWNHk7Fo(@`:.tqn2Y8R8tf<5?V,BsIuSOUJh7=$N1i3W]#,%Xh2;>@pP&822tbk$nC0Ep)^lt4P5'4tQtFt>o[3:QA.j+!Xm:nR$omS>-4_fSh6.!gEJH!/_)JZmu':*^0$oU)7sS"ITlPiMPP#_uFiPWSLPh797>L/b"gACCTfCf65!kB:rfI.M"173`1P_7S_qF<>m+=jW0N+HDmV7s,2)cbT:BFnK&V>oFd!4]^h)PTkOYN0!"j\lr/;o#<r'%h[A.C7?n`Q0G]JW"2H8!)E2k_>XubBs;W>>1...@hvawo,2+c_<JP]II^gmS=WA$,"`ea=`A2qtq(qst`#1J[V#!T)D.2QN=dD4PQjrM\;dTcL6l?ethAM<\e36"E\5DAG+u*3E
 d)Zb;sqK&Q\4#=$nh~>
+Gau0D968iG&aii3n7^--#qyl...@j=:>I1Z1tK$h-jPW],h<YQK;97Vf,&g*=O80:VpiaI,cn...@ti:cUKk"dgkk...@fn'Y;A.I,A$*H`[)BL/AbH)0I3K(8F)`f<`lZgVCX)i...@i?.dgb;oJ(SIK4c2R"SCuKhG(C5kQd-OJF1R`2*Yh8TeiT#nRI]I.96L*C1],uT'4iTaJtl;JP0/lC3LDWYRIUo@(rM=qf6ekif9bo:@LC&[67+hH)hlYRYD%5r_"j#6/%q>bi&;e&Gg,bAP0\;XEFfMACl-'L?V.L'>W.*`/u;N&[oP:"G=+cZMB>:=[$*.eBBZT6H(HQbrf_*\og1nqo&hR\8<J`a:P"?*+Gbt4^`Ki)!\Y:#To\\/iKZr4Yr@'Bji'\?JSGRa$@&4AXChA'2LH*1KOR?KDr)]!)F_7dhJfhu(4N26N8cZk5!dQX/_cUHb1$X`Z:.98^`LuVn5+?hIBUlu*##15])d$m2N4Bg^h-Y#dNhj5I(/8-Z1d'n;7<QshsNB4DnaILOt-)6T6Q[Z-i`Zd]jlG=Cd2)CkIEWBIneKV04rNlE+u"HJF2@,!$?D^T'r$'^<\G5J[3<[fB^Ec2a:cc.h[utV'(?7Qb0?W;O4qH0-Skshq_r"me)@qmXW?Ib?WunrJ!tJSV?GVhKXtrD+WlCYQ=3%GMH(9USRS.J7.$Ma>8Z\+Y`1V<c/^-\]"n&\p,oDke+KsDiGs(.p;#$^RS7aW3Yhk8h5d/9L#+HfaGA:]dd*s!\>Ed+j7!ectRWiVm?8$l6qO"DA74ooP6f]eIrCL?>UT]2YSfh"ou`mk=]1dudl?*...@[hdko?rs<,!IJS(Y#s)cSlD*ik#,<<#S(]Q,11`"GdQj"ig#kp^exd+n!...@l7ps<6(c,cY$c1CS_/Od$m%'J.Q9Cn;k02q<o,t...@ah;baYLV<ke0...@e0q_-=d`uos&O]\lp*:]...@504rfvi6
 
n3g9h$o%gQ"]%NBq*UEOdJhF0-r68a0!m-?uAj$?nYRjRr5nT%AM.au70aCNi%rAJ6i[J$!#cSnUGRXE#2m7rVG<fT:n?L`E27%GI=&GA$0W&EW:_B&)eGoX!AT</byk57d2dc#kmj?x.ds...@heh>J/&qiGK!n(kh).`ZIgk1jH!jr@<NNn#+X*n?tQAoA<![:qd<kmV#<kU7Qmhga<^e"9L]<ofIeLt'$4%TC4JGF*rm0YkTp)PJ.*E2KUaOj(K()1d,Y6JqL$B0_oLbl9fNaecru"7...@ah<ni6<-u9j>OR0kEanY0P`?VKpDJpa:2S$Pfd\eDS,"L4m&/7ZF=G,TE5!`f$P=3"Ad;+fM`ApBmcY.s8IJ*8P+qCIj8u/dXQRr.KWh[2Ut$9jC-*fVCBn33ZpkiVHOg)dVa)<8P/1?_-q(85)CFTXM\GYFNIIPH)h.Jo>i^hl:H$%$4R5",Ofta,JkC4V&N&Nn3Ncq:R<3Hmife!`qQ1k2f<!ru...@]4ox2f_#>g;I6n+u"j)j+!Z%ZUjb9I^0(i...@ssji4m@lE-"227&@il"7H`_3([oT]$GUbNFkF==)ql:c&Z\:*phh,p-PFP`>8t#eE<+&3N6`1quj6NH,NTY9:1lI%=uJp>+Rn24nL+Rac&-<F%>HY)ET8J:j&u3+JJt*dQiU?Vqf<5M_iQ"?bR]7/p8YLB:(Ai\Q-DU")]gU$Vnu=Cej;QL)b9pt8JJOuTHM]J*lH.Dd@;4`1J(]*1B<0&H3Z:`>CApI-?cAgGdear6r=GN\6c]5a/VW'\ip3P1*OlG7agG]:Z'a[-MtK3#30d@)"U;4n\J)ah2m9el9+gbd...@v&qQ"A(2)2d7V9\,]eW56!h(rEL`&N/t><=<o;`MCc\]tP;`...@c&B#B'33Zfs2[p&0PbC`+Dm(SV&fG\U;i#P;:q.p3jem~>
 endstream
 endobj
 32 0 obj
@@ -203,10 +203,10 @@
 >>
 endobj
 33 0 obj
-<< /Length 1783 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1922 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau0D968iG&AII3n7^,n-iq':;sYiFR`qRup_N#mOcY6N-57#Km=4$T93BOd,q&(nch...@^46th$-h>IC&dYU>?[bhQAW+pg+r\n3;l#h_-4?O>mS0/\LcAn(#r[L4BIR7b`E<'7#hYb0=P[[p2+EW7Q$D0o>kU]=IMs?bEuB?F!VQ7F'*);FXr<?bDjm5ur/n29;IW8-5*gU3KPJY)ifl...@mzb/U,4tXuE=#E$b-S/+...@u>WD.Y]+^!PP*<S9mOnCa.[f4^Wh)kkTjAnS7h+Q8uodTaT_4PpIN<pH^sE%&h$.4R]fhZ#2dotp*K+<d^7DkiCHh#8j9D/M"V3snVmFG$LXkfWb,b'.#h$JVWOlE@,R(hJs,K:MmK?-4-4`-s5q]97lEG]V$.hUT(olun0`j$i0#...@u@H03nYiba_q_2BP*?Wo5LtqV0\k48VY!K&B4PX7H/d(j\Y:]^U1.(<EhMC1a6SA(<*6``'p...@htsn_b$(JEiEo#:l(mJ0BL-G5Lre8"(>fUrb/JHn2_o/-4HE-1<[]PWl-hW7!7?%J=;q)\)r'lQnV)b...@vsps#5b5andz)ZP#J5(-k*Sq9i6'Bt$gqI\-&K7+=2hO)$>urfB.+Ei#_R5pNHnXMj-6b[#I<k/p...@c.a#5[aa,>-fY_7B`XNM>T(rWYQd"$#K+95t$0_e#',&oBT<9j''YO_#f4,9`fhl'BE!7%L#V'MssP-,5fU;OZ7\2&d5UYNlK6bA->i_=2flB6%t.4m8Ct@<SYiS_muBI-d[YajSQ_^jW4C`eXd+KaB&I`+aCBp(#+[EinL0[`!&_=fQhh-FMW0d!iA^fg3K>fj[#-)"p;*9oRa?SYJ[D5nmOsrr=.,_EKPqBM5=.ja*r/D=<@gH:\rd:3P[S3n#.e0X\00^D#6*FG9t92+i4]>K3B`#j%s9#AUn4?clFcOjMo;V[IO#Vf53Y:e(I),%=+WDlKeX:P#6rKb/h
 
\M(L9!]\&^3,"Sp<qf...@7$ul+5f,5Fh'U$+2!*aTD>8!O<ajJRGDtPDiK:cl'q...@w2l_j-aca9("q\ABFPtPElV"h6U`s1.Y9Olr/,MS1t1g3_XQ(;9>Q3jVs&O(h5&C9dLQ*eLHnn!*#rdV:f;apak5...@7[8k<lRGrC3kNh(qc^rj.f3=k$1=kgowldjoo*bw...@etyzbprhbn+kv<K!=(.3t:l30_)V\ok%g\.)l?lVc8.7sP_^KCl&TDSR(q_IT$R+`ZIVHH(*X!S_2umF:sq+Dh>s8>hGWCDNp:9_v^...@1<XdmC#1QcsqiZpFPBXf(7...@hdgh'BX"8lW*3R&4`m-+i5oKc%FMp3`0r[PRP%`MHBlYhCluj"byucx1+d5s...@ep^g$tjdm+x1&17K)$_^'!-iV1hfaKCOnAAbtBS<B>XK;+#ZuaPNLI_uf5&"]!-.XY(DZJ(g1ehHFYqo\e>^,=J^WmhhO,MJnr)6tL(jZ-OHpL,SS2p%rT,_Jm,r,%"kHs?%(+(dybjcd8zj]...@nkzdfs6_a"78.:tmM9]G0']SnD^mkp9X;*JUl$49#X[<gU.P/:a<p&i9"9...@zvg's#*E8>_[]C-jMJ_Nih.^Y*A^WDqYZbXCSdoSFp?_Luk,#AW>LmJ-A9mYXpi`kB3(8AuL^U((=;Q,6\H36g8Lh(Md5r5:;2tOH25AIab[2)E`(8\?n>)e...@a[t)^QNd0(iG>!E`)fs=_HL_9/HdTPE-&A[Me_:]'feoKm/bF6aT[s#o*XQ%?~>
+GatU4hfG8H&:x...@\_.,7LlB":/\3;4P[b'iiopw...@n`=_ha'o\Z,W+>JR[J(_N[:9KWTfX4?XI]:X2W?G0RH^9+??L&V[afHm[6"9JGs]RPCT4[pX`3N[Cde\A0>B*CVg6tl:4n#8YlHrt;fmNCT-+*C%=*Y97ccMGraEco\F^NR=Plb>\54p`55W#Ha&!r!h"WZNShIP(Vd#Gsc6>s...@-<g%O(hn![P%623r)RK8rkoRMZhM9hGm/n79QS&Ic'm...@tbow+$d7k,uO8>L^#>ph.&LpBFk7('LnUN1Y4pV])+8,VCR7FRJi.TB9?Fg2$hR"6#u.TB.iC<%IEJ?Yg"okE[D(f<nW^m''r82,011#6^l^dB"1c$U3Ed>CGn,RTg:-Vi.,.*MF#Be+n#ZO<!QgLBR&R>1FH6A#c,d\BjC?!I!6R;oV"&bcFYC;KO1U^uPIeI]B,H?E')6]Y'd7Wjr?#a[JQ<`E9+6,7sn]6TI-H/Q4'Gp2)H-e&ZfV82j%B]E98%Y.E:;\F+3RejQed<;--7dTlm,*Rp7/!ke/]TB?O0GcA5"e[X=P@,k;-V>'f`hpo5HFM/^bKS:bma\s;N1/0DdAf33EA&O6B_#)+W4CPjF<D^u<f...@7+[):G?".0U1A[<d=ECsT;K,oAmlIc`c=RDrS9W'p#t...@u\rl;jV(oACqC2,-Nf0fgM,`T$W86$DGiYGY:hGBX^Ad,0_E*lMBI*ap+"T/IQMPq0R)1T-c8<@HL"K0N5*9k]95gn/EH^he?_jaSYqH^%ampOko@:kt6b?e5sr!n]e%dqg!cqm...@]ola:l7\Q%ir3,Bqg<YRo_;o""hnmi8...@up:lmpl...@6v\l/mG=L67jB&\AY-q+;V[]25L(S/2jui30...@2?p'd"f%eq_rs...@w\i^<!/m+_#Wij$R(FUZdJAn%CN;n9/-g%lXe)MR-MDetCE&n&RAm]W'WMU#mlRq^2
 
T#-*IK5"Rd[kAEN_+ZJ4T[Qtjg9RS8<6\V],eG]'0kAntf8T`G[F>a...@%7j?5fjo`dx2b`jf2@LG88cJO/LdBnBrE51$KSP^4B#]>3b/6si\pO!7D/2Cuu\F#3>/02A0c,%q$WIbRGH7UV&G3\=Sa0i22c<n`BAh)E^ZKO"2;(zc^...@]!/qt\n$`t...@ezk3%e/X;h(5enJ`C/d%!<Whj5=LXN#KMmt5:_c/Q:L"4"b1'"6A/pWfbemlE9T*h`^"6J1Eq<7["=;2?tHB9Bm7L('N]+^"C8D^-qmMeX]"/1/.:9i...@jjas(rr=u`Db$bk!7'U?e6JP-qZIqc1oq!>Qo.n/hB"B'-=O+8D;;GT8ljVfS^pd8!?Y4q!*;G[D^&^O:jU:<4T7$iTsN-H7qN?@>9JZ`O:AAMFid:J\J1Cl(eRJ%GgaqdpLfCQ$/@ET"&'dVO0biW,3W_Mn0"#JW\cu>?]__F1K<IA^$0$39c?g>q^2T?^i\0.i^'e...@[nvj'K`!g5LYAkNtL;\3ZduIe03LomjRVEgucHIRI%Ir,o:4R0NiD<9U(*=T3=>-8^&+RL--h4GpjniF$1PIJEP;-IrF=MW\-\j2(USs&^="YTZTD'V,4+EYGIFKhZWOq4dW(aosa...@zg)WC$B/H<WT8<Hcs3QNdfLM>.^aPeTQ7\GgCq"jBqI(,!o%ZKVCl:pk_.G1Pf9E.[u^rhL0WqB6/KOg^mqG9;B>Y[l.oWp4#38"kO"/n)#3&FX1t;KIIHl(nSjNm$hO?5CSPgT-cU-[b)8...@en`&`!YjEO;Q,[Q&g)P7U:q.d&p;54j39?[K!I#a'*'6RMD;f...@[dmi$_se60m_:s6+tX?"$%8)2ac!>j1BW4Sj\Ln]WZNZ2Or2$&f]/fj'Z!$6Y"fkp:JPq7H"3nl*:Z~>
 endstream
 endobj
 34 0 obj
@@ -218,10 +218,10 @@
 >>
 endobj
 35 0 obj
-<< /Length 1775 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1691 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau`T968iG&AII3n7^/##k?oL4k[!/Wl^4S>16-/"%>NhCPkq[.$"=U5uJsE1`oVa:<$e)!FckWh`e<SMqS&<p<O.O)u]Y_k1dtc*66HV)))!(k/9V.VcG.Gea/@mm3d_...@f*g7wkg7"8@@B6HjXlQ9qCPkqUo1Ma8%5$b+h\?nG(m...@nhpbm9z0`au@4'*%,'.`?,fqMAT,V8=L7$U%OY1XD.Zpic:u?Rn9&]HoL]j!]N$;;DOP'gAq]OZ$[$("U=bsc4:mf0F<tkc...@wtuhuufjeoel'Vl=C[/YkPOQSmuh*)E4I;PKl^of`TCT9X:7-^h]!T9\_&'*PmG=$-mO=\n-MJ*,T_ARAR0eX&1o?#u=-,q(e(m-GUg'0f#;i`N7kuoEjHnfT^j%UGj6RI8N1q2is]>!fnN!kmkqe-!Qr3Gghp0/;=[>U(ig5,)sD952Q]?(g.H!L;"69lWmYKP*$5YB_>k...@*qm:@f...@3d?1n[1w+m,YLK!BY\m`MC)f<E'u$H\FsFmI%9pl:F7pl.<$=G!IHCO1nm8gi;'e%9J7F[1Y:.]o1V/*EGC0km>#&e3Zlb-';f4+E*USf'3[o9\D)`m:cXAR[ClE_dQZ/NmWnM7+=*-;[!gm.nd...@ltf3r)Gk+&#WaV&FRuhg>@5icRqcKr?2K3k]NJm]QP2b64c?l8OD0.f)[i8,pgVe#p>J+9N<F'G,),++Vt_a:r'Vo0U.>l"fjV>esd...@f,3DfX?`j_?Mr'PBHW?q`&L0]K%mn[KC7OU'dZ>'#0tj-f3XbhTeP;cZ03?fb"%*0+9a.rc=;#'Bo#aQ.5,Y,gDt<<NEM3TOQo[C0ZrCbCXP>QJ(F'BPr<G/1mDO[s_)1a?!SE:&ZC%&7[WXkrkMmYhlKSVoUoWSn]-,#F53IJQP0-JM4knrT>s9iaZ:FU>&#ljp-B%];p)_709H]Joso(VtA"Wo3/B!NNhNE*f87T8Q$<mjTj
 
[9A\:M:u=Qf/QRS_rRXm4<@h'f`OtF1ZGU"*W;#m.h!MYkUTHK4IV93eAL"3:A5)M2fr1QWCg.(Z4;pjaNi,g=5nsoQ6kqcp)c>!BY2^2D.V0[lcVoMmXkQi6*E,>7M8Z2-BHg&L15j@)"DLirVs;%`,\3;i+S3V;!1V>K;WN-,$:[1s*7%UNYPUQI&+c:FO8!.7<$5):%D#10*4?L_+\st8',9ptjp+.8k...@`osk=#k89us!clq,e...@9p$@9[qm't*k1+QDh+]/)H"!`Q-ChNaSATPKOoncb_6`?LiAY>N0-mHfJor>hMKTY%EM5^\]RnQ<CZ)e...@1-nli2r,>NqN:.GpX`oC(`c99$-!YGGpoJc9'`aIF$t<hTlf4b2XM"U&JF:T)LXDk8c]LkU6e>k7^c4e)Mf`-(ksD464aO*hp5o1miZW3="$Dcg>a:IF?N,&hk`R_ZQ#"$,QX#l(F7bhfhcaMDT[sTS)JV"ms`e_k<b0/=ksmr-A/:"1td`O(Nj>if...@.(GmEnWJUlO`)hFYa1ij1Hau6]CV$E#`?.nQj-X#01m,o'V'2]%;30[AuG/'E?]FK/_(u+enEd`4C1H<#r]thNJ:%<aefv...@e;,k8/Mn*k>:qLC?NfR-Y&RIRsfC]dlpIaR`IGCT*^BY]d>fD7tfWL=_kui3T*6b]CkK%kWjY<mt&X#5dJ'Hut[L?Hn.nrSpDHAkC]lnP"1"G9\1etZ3P&'_'A74Rd*muGb8j!/c8^]66]5t1l\...@#x%yw"ck@:[K~>
+GauHL966jf&AJ$CE-/)m/J8\Wh:!...@f^):3Ft::dk9,CnZb_G$H(=g0'k"*Y#+Xa.jbdOS[JKiE2n+^uVoA#;)0Rq7n&m8&OmDeVYJ2NeJ);pj,L?%R;E1`15I9+&"J1Z&3;qTElsQP0/ClVd+`d5\4"VWI&IteHfK%jP91%9ro>=`/V2:o[;+H/mn4;NM7uCD3T*X(0JObf?';X0DF$gj+kHW62.5S:R=9".[RJ"9,M-6rlBbigkjZZanQ"I"A1&Jr(/7^...@cpbna8c(@O8g<q9-8fC+G<Jp.Rb86p&Y<;.OCb<@S"WW:!]Y!)*m%g7jf$!c9LCGcc>J!&7/N%N&'9em0W'1uA9Jbg/s.)c:dfT8*f4,/e/6$5aBuhhmeB?ab'm...@re?=[q%!%e8<9.fh#`6...@j7!f&7O;L!IhU:\NR_VII$>j5=cpbn-jpc...@9if9*9ypm(:;hu^ir$...@uf(iWYCP!j/8GH4lt!o!H!'DiJjgniY%47"TY,6c?^i$Ah%l(e-f8qXGkm\#%=1^?XD=pP[1=/n3X"`I=Y9='spubnWHSR[@)riguzf...@l4]h$at.<d)qa-/#drR't...@w+jd^b?ije2*n/62TSqE:/f54W.n:):M'g9IBR0%u;>To%S9eb]eG2:b7#1E<UOgpP^Krn[)q>OhIpfQMCS((VGTF:ZpnOO5X.C1UkG$&\KPJnh5rYOD]hF/)A=2b37*0LicHCi8cX69%:UjRt$E=q++]<_u6hWfbWHI=W`'RR]a+pIWADB\Z')=P?gf.X+<.Fq&a-3#R?r0f<[T<,4nrWD1g!^i>jU'TkS!=pNTH6c`'pMlG]fH8,_n9gZQ\2D68c\ZtQ+eRLEi11!r_<ji?'3b\/s...@3nj*0qg0kdltdd<\=#U@)j;o7U!%1L`.Yd-4<VSCD(Hd05-oM:Imofk`f('[A2ajBV)qbK/lNTJR+BOA>R^*DP[!)$:/O.qc>
 
\D(h[F1r+AFPe4h65]uQ%M9bV3_f+au4jPo%;oVb<0k!,'Xn1d2ba(TM5)18I!.QT`g7l4mnGHISG*J$-=eOa"%;e+OH"s2?mFRD.>tsP%#Xr2%`hmf!kat#tRP]cdCKd_!eK5V+j(\^GRt"\)'%uuaJ)L-oJ&YVgM?7(h/E0_hKZ'VkpM%sn&HFpTSu9Okj(c(=DnG(gQ6a$Pp"j6$RNcu^_/-#7Mr5CHJ^a3*Tb.W7eBM&'eFA;\jR8YC#fS3NBK';KeX4!]^*4gj1^[H,((qrOLGgRBDF1Ml_.W_Gb\fP=eol9F>Gl&/IdNXoYTA]`1JG4d[sI4QZSPSm!uH[bV&-$5*)Yd?V['-$g0tjK,1`MpfNlsu'o...@ei;f!n3BnFb.t[L%W.H,?...@dv#[kpyj?:NMsA'eBVf/MnkW0Jf'&3Cs7+\)%e.%-H9Pu#+:Y2o2[J;k1c<6$-e\R8:T!'ifDW6SPto(^!-+X\:#s...@^f_p@o1E)GVtH!XF\$S%>IdJPVg3(SSDMo<e7jGc=k/1["IG+s<3$Ds:g...@c#b9l&Op$]e^YeJ2Que.,h%;`#"QN/jr...@r)O3[YE8Q5m#3ERmG78ML=Q>\epQIG`]m;R;TGB1'D%7HOtqVMWdOHXH"^V/j;,VCY"PeXU_uH4.eBh-dB7Z"N[mm//m...@[=goe95=gw=pj^\r$)R~>
 endstream
 endobj
 36 0 obj
@@ -233,10 +233,10 @@
 >>
 endobj
 37 0 obj
-<< /Length 1753 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1883 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gau`T8TWWE'Y`m7n7^,n-j^Mkg6:nbBq!>SNHM:jj4n3...@^=h271<\D_uc.4N_W4SBU7hLb2Jpjh,\idSH5]'u5lqYdop>i[qS(ok=OdJprl&eAF14!et!Mr,>[-O!%o6Ep<u&&e"BqQSa+gfhd!5G$oGZ'HXY$JiL#m[ZSFkdC"'f1N2d?HLaj&(f+!cLPVE_s;Genr7'B7S2BmY:q<:5k7C;2<ZD9kR?UcIQ_tg*YT7?lZm&(UiWDb!(B)[Kn!OaQBa\^,0SYu=mQC7)p4'2?S%J^\.n**4Y?HfQrD*XkB\ChZ_rr(*f;R;&n?SV#?1FR#GmJ]:07Q/b#B(\'Y0VKDYI8<b`"HS"?t...@`a@o:4!*1OhBM#>q`5o...@nkk3a3(1K9)m;@<,,=0+UDY_n^iCmt6Y'F"Di9381%KsqY9VYkX:*dV0L,s7)Mb[-!%=<!'oY9-E65g8=Tq&("\8n)fj9oe!l&4/;=Z(ga](NM%:2!"gbBXs4;Z<Z1j^Qn+p6,m=YAV6S[+FseSLbS'^R_1at9=mRdM"r$h=#5fR];9c+.j(SQSR69G"Y_>3Ra+K^U,5XaYLHdTn:/ENC;02#I:5?JG\ZSXRH9Sb#fp#i/zoj...@=hp?py;P2raKMaMo\*([?<0sRH[TNRRjGHeQLQ((Ok1JsBe-^)2Ngu*lFA\1:PE=jGs"W`h7ocP+LrnNU"dolm&</]W2qA\G<m=u&q.K`IEo6afH88PFs:@pnk:><hf&c,5\q...@k==!#<m3$...@el::K9B49$L\t\$%RL^%QXLeaSF87A%ap0+fG=?s+P"L37mn`)4a^fl?fa5s2j\f_n...@ihfk",h...@knq5+mf8(=UWWHttnKBL7F3\Ao>I5D;Z2:2;;GK=qLji^ne!'O`>]W]W.^)Y2ia\;Cc$:83bmh851RTCWGP!1XjL.tXN3ZZ3Hd;2;G\IB(aRk3TG$T,&>e#enuGa4^G%+rg
 
8C'=o0M'(H-V!AluM9a#4`"7H]Qk=/w...@$64<pDTb93?/IWbVR)f7EJA:MIoOLf<^J^N$[@'ejf$...@if%j[2;U`)/TNEnT/3sd*"(5K2#kP^.P`l3j79uQc,=.&)4Ff.:<2a>.Dl=0"+GIfJ+<>j<mrmo60e\rn4?lv...@*sb"3`\4dZ2&=rKH/J&tk=ogUM.UG=!73Zd_h-d+k=rgem!u]o<]t\)Q.ob%&Og*Z;["ke2C45i5X(Qb]L5FDdTIp8>grc'#OM;]Vs7h&@a"jI\CLk1_hT!-*JE0aP`$YJI5\P)FPo-K)Nge!%7bCHWbXcm;V1"%4CL)2RtN8qhmu%'jjq...@f_,5kj2n&Z%Pdj`P\"A.\Rqf+TirI%cNV/:`$>KrM!%>\FY:E^\fIu:U>,"g\1L=.aop<Cq=MblgY#r"0rp'o7ab:.09CrCeWqPN>MC!4"Pj3.VBK2[SY]icn8OsL#-p7g4VAPO6<p-i.$f$'ER,e,3HNuW\IIcB"`V^A<[D]V/V?Yojq!Xi`YS4'HK&jjk&U#BH;S:Ao8`SF)C,V^MDPM?RcBL^?G-4"afcBV]gk2E!C`G7sN]cX5TmlCWYIP+XDPZ:L5'/6k6pGa0\n<X6kZgh_A)BjW-];0cI\U+Z=UW(.4L`/^759f(![!P)"s...@tcsgl&Xmf?;&#...@a%h8d&<bQt80Cdp#:C^)h@>;kLHZ'!A>">_-...@1u!sj_e\j`o*.kkqm/"]pu%!I+&lB[6`~>
+GauHL968iG&AII3n7^.D-ijs.UaOo:;E*jI[5GWc3D^tHZ)1'WK];4QG<q,)Jg)Wom;t,R#Tso8rV#mb\+A;OI.m;n>&3...@2@S8[QMlg^FiU&J)H8!O#pAkXQAf0g$MoC(4*nfbC=n8/^!"pHo86G.3&7`X-)HaTn."(\(9`C"_7JaqI7^!!MQ_2C'COV*$m`E-m9*_d7Nh+#q%!L.?RZ_TOP%fQ.uX%W4-M3`Cg/*d^?$L*q(VAkg<$Q2gQ`i=f.p>Me:nZ./!AeRlb^#qJc1Rk:k=e6Vjdt!-82S?3V6si3qe:u8in2vb...@axhf/CHcKXbm`W+UbY2N^Yg[FXE8/`amK7[)fS+*i8\R2K;^h>W)q...@0j?ljb%rstfmlr[$opjzt!+>T"^<j#<7>$V*Wan`j2iaGCE<pZ\EjRK)unm[Z1.<Znb4/$r+O7/:*oAP.dV(q>pg%>h^M_rhV8=f;jD#1-^EcI?Zq-&9n*g/I.oWA\kGn^%p3L'k`ampS/'Jib[>b+kh=FL1#jHL!q;3if/pfYq_9>"g2Q\Zsa.).@:-X>&hlT3aP%k'$)X?uG)ULu;$\']F?V?u=%\k;KtPUD[R:\<.2P,'ibngHT46(?$KBGG<]g;#\B1E%.$;Sq5)6mQ*1"jjMs.$%LI(Jr21liM$;i'Up.G6`muBZ'1un=BbLF)IlO(d.21]>lcih<m&'"`O*,a*<0...@2]^c1g9q)-ElA;a&C%-s'9)/5T>_*'Dh#%V=cL7Cabm/rDT>/;rN`=brUs8XuVb(9*56.s,jgOSJdFhjb5G3/^c3*lr]_dA<do3N[)@5...@rbg]wl+&#&$m6>h\!oY3pD&9JnIKV<%YVeYO'Tam5a1r3`5EVct]'9/H3,BHjq=n,DEIgVJLJ%Hn-V<^7,qbiq9pTB9Up11_S-8&9QktblLC2ME/IKk"/W7GUNIp7q=2phBk!_`i%2aUqX825Q*KlJ-5K=?f;\i$]
 
lf3CO,?...@%ado0lob36"J>bae9!Q6M6&"m.f$%4;(79F?db2_(gQ1gAWg^/M1D`Ba\)U*.7jI5XE)FOhE4\anM+PmXJ&)#LEH3AQKmC*emiT3VkF[SLkn;l^VQ^rhj/p...@$15q03s_uagf,jAq^dn>0R+MqE#)"m?l+uk-c!...@.<f`%qQNPbT7Hp_pKU<tQSD`BKX91<i^RR.tQ+mYXV9"S5r4aDg?U*4enI'dXo9l]35^N,GmMMsVr>X7nilBfa&e\a-_K9a^fe)0a>f1?ALcVjoXP.2C(X;IRlnE74d"2su,`Nc,mCZ>EGG"8kd0H^T=OPK1;o(r\e#`9`(H\YV9kq:AT>`c.:S>jh...@fm/#rk1fChn^AO:j+?`,a^a%gcv.e66eaa...@m5fpofvnhg*1"XD`MoEs)s$m?TiG8s;LLX"0%_^8D<6]Y7;ED=EmtAp#2*:P^oE_nNuo&B/GD4TP5B1&fVtnP3p?9I2g_]f0Sk&4tbl2jk1v...@l7x,]nu#umhggpe...@m0r/\sW`*\_L9?P630PF(r.//!lm1c&=Bo0>j$JR-u5,$<!L[^_HZa+B=3smtdR[EZ/thjhm-"Y=`m$]AmThnC[:+>oDLY,/)tml`!BseuOG;mn%#j7%bGPHp"Y!/ff`48V\Uu![(OW$SA]5bD-9r=kIP1$W[4:?1jIYJ>J"7a/l<P6FJh_DXL(cV/.!#?FN]DJU=_LcYXB(IIR3?/]5D02<C*P!:D;V5q-1o<X>eX5O.rhZkgYq*\rc09q]9JSbXm.ccD>l&pi=?JDmaX;Kp+J:o<PQSKrY\'7.Zt*\h'cH?<u...@c/>JeO*^_'XQ3#RU7(bkNKQi+:qs\ek...@kuti"j]Bj+&7G5C,?TqA~>
 endstream
 endobj
 38 0 obj
@@ -247,104 +247,112 @@
 /Contents 37 0 R
 >>
 endobj
+39 0 obj
+<< /Length 1227 /Filter [ /ASCII85Decode /FlateDecode ]
+ >>
+stream
+Gat%#gMZ%0&:O:SkV3*9Y"4D\ZpfOVS)&7s5dt%6eU=*eOj-?2*K&]1J)?B)r...@0ao!bmk@aERA8`YI.fOl4jRfG_XGNJ*g/3JOp$8EhYmJ7d?Go-L1!%=A+jm7p3.U'5T)br=0o-_$lpk...@a;$0,F-$3%O3e_HmFDrjI<Xg4*%:XD-5mGCP$el?M.PM9j2mXiIB="DE+(M"gX\&>H+Q_cN:255Q5F7u'36rf&S?AdaaY,LGH:n[76_>fs5orkhbi.uglngo...@*i5r]^ie,8,tn`W5Yb53,R9ihHU0:oO5J3%<0F`8ZmsoC#)?1^cl=<cO4mYMh([%J",ok#-**2/Fst:0ou.B+GPbN3EdM2jursPja[)c^lCW.7qOjZ8&"&;)j>mbsVR//?jf3_1L)c,.=4J"'I,HoE;B%9o<-6Z,h...@jg(\I]/]nrfICj]i)l(3oBMY9MS!@@Q-OL1G0-"6!Kk&*#ao"-d2dk4:oWo(i"F,mG":O(1Y.O&"cB3Z,k]...@pqdv:2'V]gq'Rd?)nbPQ<(.,@<NR'^Q`T,;j%s...@j,3!jpVDX<:aQCLIaSJ?U+EWu:Ub[V**[9ha]8e"QP9*p[(D?F'a>k[47b%&ja5?tkg4?k-`...@i@rj;@-XbbWjJhO&QSl:Gcnd0(6...@=yrjn==;<RNB";aXc"x...@2tcqgfl?$[0fi_j&D[$SZFJ^0JT:*GCKeM0D4qUR\j2#R30JJftC^Aq"upIm1e`i(^k%gYu5mI":)G=C?sZ')9UM]DL]0`T+IFi])8...@z-;P,jnuXc8,516$G/9WR'5k#a'#l&M?t<hNo)KBHYl.q\%>f\...@dn+irg0ibg@$HZ''fYH.2;c#rneq6uopapaw_0ka9fe*msud...@-trd+whj:4gs`Me<p:dIs.%&Sh0XrF^E60Sp/O"-nhJGTiVk(S1r]H(P\Q1H<^V44_G#(6/K"G\o/aIHUL`0*<Nd
 
9[5?/k]A;_RC7uSY%q2^c_fcuk42pq:AbeNg#NVW*4W/BsOLXj<@DU2Y0Z,G\>l/8h2Z'H>^7?g1ckd+hh5k4xtj^pki...@c[ph1:^qUNH8;cG=Y;i?p-l'uF-Sf,U>b'?5r+bGgpp`fNq7A0K+'i5dClORCAY$mC>HdsAj*sd:9DHrXfZ]49D?;O:YAeJW[dTa['T<(P>V%%6QEMF[R0GpF_#/OItNndi;Ng3&1I;~>
+endstream
+endobj
 40 0 obj
+<< /Type /Page
+/Parent 1 0 R
+/MediaBox [ 0 0 612 792 ]
+/Resources 3 0 R
+/Contents 39 0 R
+>>
+endobj
+42 0 obj
 <<
  /Title 
(\376\377\0\61\0\40\0\120\0\162\0\157\0\147\0\162\0\141\0\155\0\155\0\151\0\156\0\147\0\40\0\167\0\151\0\164\0\150\0\40\0\102\0\157\0\157\0\153\0\113\0\145\0\145\0\160\0\145\0\162)
- /Parent 39 0 R
- /First 41 0 R
- /Last 46 0 R
+ /Parent 41 0 R
+ /First 43 0 R
+ /Last 48 0 R
  /Count -6
  /A 9 0 R
 >> endobj
-41 0 obj
+43 0 obj
 <<
  /Title 
(\376\377\0\61\0\56\0\61\0\40\0\111\0\156\0\163\0\164\0\141\0\156\0\164\0\151\0\141\0\164\0\151\0\156\0\147\0\40\0\102\0\157\0\157\0\153\0\113\0\145\0\145\0\160\0\145\0\162\0\56)
- /Parent 40 0 R
- /Next 42 0 R
+ /Parent 42 0 R
+ /Next 44 0 R
  /A 11 0 R
 >> endobj
-42 0 obj
+44 0 obj
 <<
  /Title 
(\376\377\0\61\0\56\0\62\0\40\0\103\0\162\0\145\0\141\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\154\0\145\0\144\0\147\0\145\0\162\0\56)
- /Parent 40 0 R
- /Prev 41 0 R
- /Next 43 0 R
+ /Parent 42 0 R
+ /Prev 43 0 R
+ /Next 45 0 R
  /A 13 0 R
 >> endobj
-43 0 obj
+45 0 obj
 <<
  /Title 
(\376\377\0\61\0\56\0\63\0\40\0\101\0\144\0\144\0\151\0\156\0\147\0\40\0\145\0\156\0\164\0\162\0\151\0\145\0\163\0\40\0\164\0\157\0\40\0\141\0\40\0\154\0\145\0\144\0\147\0\145\0\162\0\56)
- /Parent 40 0 R
- /Prev 42 0 R
- /Next 44 0 R
+ /Parent 42 0 R
+ /Prev 44 0 R
+ /Next 46 0 R
  /A 15 0 R
 >> endobj
-44 0 obj
+46 0 obj
 <<
  /Title 
(\376\377\0\61\0\56\0\64\0\40\0\103\0\154\0\157\0\163\0\151\0\156\0\147\0\40\0\141\0\40\0\154\0\145\0\144\0\147\0\145\0\162\0\56)
- /Parent 40 0 R
- /Prev 43 0 R
- /Next 45 0 R
+ /Parent 42 0 R
+ /Prev 45 0 R
+ /Next 47 0 R
  /A 17 0 R
 >> endobj
-45 0 obj
+47 0 obj
 <<
  /Title 
(\376\377\0\61\0\56\0\65\0\40\0\117\0\160\0\145\0\156\0\151\0\156\0\147\0\40\0\141\0\40\0\154\0\145\0\144\0\147\0\145\0\162\0\56)
- /Parent 40 0 R
- /Prev 44 0 R
- /Next 46 0 R
+ /Parent 42 0 R
+ /Prev 46 0 R
+ /Next 48 0 R
  /A 19 0 R
 >> endobj
-46 0 obj
+48 0 obj
 <<
  /Title 
(\376\377\0\61\0\56\0\66\0\40\0\122\0\145\0\141\0\144\0\151\0\156\0\147\0\40\0\146\0\162\0\157\0\155\0\40\0\154\0\145\0\144\0\147\0\145\0\162)
- /Parent 40 0 R
- /Prev 45 0 R
+ /Parent 42 0 R
+ /Prev 47 0 R
  /A 21 0 R
 >> endobj
-47 0 obj
+49 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F3
 /BaseFont /Helvetica-Bold
 /Encoding /WinAnsiEncoding >>
 endobj
-48 0 obj
+50 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F5
 /BaseFont /Times-Roman
 /Encoding /WinAnsiEncoding >>
 endobj
-49 0 obj
-<< /Type /Font
-/Subtype /Type1
-/Name /F6
-/BaseFont /Times-Italic
-/Encoding /WinAnsiEncoding >>
-endobj
-50 0 obj
+51 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F1
 /BaseFont /Helvetica
 /Encoding /WinAnsiEncoding >>
 endobj
-51 0 obj
+52 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F9
 /BaseFont /Courier
 /Encoding /WinAnsiEncoding >>
 endobj
-52 0 obj
+53 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F2
 /BaseFont /Helvetica-Oblique
 /Encoding /WinAnsiEncoding >>
 endobj
-53 0 obj
+54 0 obj
 << /Type /Font
 /Subtype /Type1
 /Name /F7
@@ -353,19 +361,19 @@
 endobj
 1 0 obj
 << /Type /Pages
-/Count 6
-/Kids [6 0 R 23 0 R 32 0 R 34 0 R 36 0 R 38 0 R ] >>
+/Count 7
+/Kids [6 0 R 23 0 R 32 0 R 34 0 R 36 0 R 38 0 R 40 0 R ] >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 1 0 R
- /Outlines 39 0 R
+ /Outlines 41 0 R
  /PageMode /UseOutlines
  >>
 endobj
 3 0 obj
 << 
-/Font << /F3 47 0 R /F5 48 0 R /F1 50 0 R /F6 49 0 R /F9 51 0 R /F2 52 0 R /F7 
53 0 R >> 
+/Font << /F3 49 0 R /F5 50 0 R /F1 51 0 R /F9 52 0 R /F2 53 0 R /F7 54 0 R >> 
 /ProcSet [ /PDF /ImageC /Text ] >> 
 endobj
 9 0 obj
@@ -383,100 +391,101 @@
 13 0 obj
 <<
 /S /GoTo
-/D [23 0 R /XYZ 85.0 369.413 null]
+/D [32 0 R /XYZ 85.0 659.0 null]
 >>
 endobj
 15 0 obj
 <<
 /S /GoTo
-/D [32 0 R /XYZ 85.0 289.8 null]
+/D [34 0 R /XYZ 85.0 588.2 null]
 >>
 endobj
 17 0 obj
 <<
 /S /GoTo
-/D [34 0 R /XYZ 85.0 345.4 null]
+/D [36 0 R /XYZ 85.0 622.6 null]
 >>
 endobj
 19 0 obj
 <<
 /S /GoTo
-/D [36 0 R /XYZ 85.0 502.2 null]
+/D [36 0 R /XYZ 85.0 264.947 null]
 >>
 endobj
 21 0 obj
 <<
 /S /GoTo
-/D [38 0 R /XYZ 85.0 601.4 null]
+/D [38 0 R /XYZ 85.0 362.6 null]
 >>
 endobj
-39 0 obj
+41 0 obj
 <<
- /First 40 0 R
- /Last 40 0 R
+ /First 42 0 R
+ /Last 42 0 R
 >> endobj
 xref
-0 54
+0 55
 0000000000 65535 f 
-0000015819 00000 n 
-0000015912 00000 n 
-0000016004 00000 n 
+0000016858 00000 n 
+0000016958 00000 n 
+0000017050 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
-0000000805 00000 n 
-0000000925 00000 n 
-0000000992 00000 n 
-0000016149 00000 n 
-0000001127 00000 n 
-0000016212 00000 n 
-0000001264 00000 n 
-0000016278 00000 n 
-0000001401 00000 n 
-0000016344 00000 n 
-0000001538 00000 n 
-0000016408 00000 n 
-0000001674 00000 n 
-0000016472 00000 n 
-0000001811 00000 n 
-0000016536 00000 n 
-0000001948 00000 n 
-0000004262 00000 n 
-0000004385 00000 n 
-0000004447 00000 n 
-0000004584 00000 n 
-0000004721 00000 n 
-0000004858 00000 n 
-0000004994 00000 n 
-0000005131 00000 n 
-0000005268 00000 n 
-0000007359 00000 n 
-0000007467 00000 n 
-0000009343 00000 n 
-0000009451 00000 n 
-0000011319 00000 n 
-0000011427 00000 n 
-0000013273 00000 n 
-0000016600 00000 n 
-0000013381 00000 n 
-0000013658 00000 n 
-0000013908 00000 n 
-0000014129 00000 n 
-0000014402 00000 n 
-0000014617 00000 n 
-0000014832 00000 n 
-0000015046 00000 n 
-0000015159 00000 n 
-0000015269 00000 n 
-0000015380 00000 n 
-0000015488 00000 n 
-0000015594 00000 n 
-0000015710 00000 n 
+0000000808 00000 n 
+0000000928 00000 n 
+0000000995 00000 n 
+0000017184 00000 n 
+0000001130 00000 n 
+0000017247 00000 n 
+0000001267 00000 n 
+0000017313 00000 n 
+0000001404 00000 n 
+0000017377 00000 n 
+0000001541 00000 n 
+0000017441 00000 n 
+0000001677 00000 n 
+0000017505 00000 n 
+0000001814 00000 n 
+0000017571 00000 n 
+0000001951 00000 n 
+0000003859 00000 n 
+0000003982 00000 n 
+0000004044 00000 n 
+0000004181 00000 n 
+0000004318 00000 n 
+0000004455 00000 n 
+0000004591 00000 n 
+0000004728 00000 n 
+0000004865 00000 n 
+0000006896 00000 n 
+0000007004 00000 n 
+0000009019 00000 n 
+0000009127 00000 n 
+0000010911 00000 n 
+0000011019 00000 n 
+0000012995 00000 n 
+0000013103 00000 n 
+0000014423 00000 n 
+0000017635 00000 n 
+0000014531 00000 n 
+0000014808 00000 n 
+0000015058 00000 n 
+0000015279 00000 n 
+0000015552 00000 n 
+0000015767 00000 n 
+0000015982 00000 n 
+0000016196 00000 n 
+0000016309 00000 n 
+0000016419 00000 n 
+0000016527 00000 n 
+0000016633 00000 n 
+0000016749 00000 n 
 trailer
 <<
-/Size 54
+/Size 55
 /Root 2 0 R
 /Info 4 0 R
 >>
 startxref
-16651
+17686
 %%EOF

Modified: 
hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml
URL: 
http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml?rev=911713&r1=911712&r2=911713&view=diff
==============================================================================
--- 
hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml
 (original)
+++ 
hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml
 Fri Feb 19 06:30:15 2010
@@ -83,7 +83,7 @@
     </para>
     
     <para>
-    There is one BookKeeper constructor:
+    There are three BookKeeper constructors:
     </para>
     
     <para>
@@ -91,12 +91,67 @@
        public BookKeeper(String servers) 
        throws KeeperException, IOException    
     </computeroutput>
-       </para>
-    
-    <para> 
-    where <computeroutput>servers</computeroutput> is a comma-separated list 
of ZooKeeper servers.
+       </para>
+
+    <para>
+    where:
     </para>
-    
+    <itemizedlist>
+       <listitem>
+       <para> 
+        <computeroutput>servers</computeroutput> is a comma-separated list of 
ZooKeeper servers.
+       </para>
+       </listitem>
+    </itemizedlist>
+
+    <para>
+    <computeroutput>
+       public BookKeeper(ZooKeeper zk) 
+       throws InterruptedException, KeeperException    
+    </computeroutput>
+       </para>
+
+    <para>
+    where:
+    </para>
+    <itemizedlist>
+       <listitem>
+       <para> 
+        <computeroutput>zk</computeroutput> is a ZooKeeper object. This 
constructor is useful when
+        the application also using ZooKeeper and wants to have a single 
instance of ZooKeeper.  
+       </para>
+       </listitem>
+    </itemizedlist>
+
+
+    <para>
+    <computeroutput>
+       public BookKeeper(ZooKeeper zk, ClientSocketChannelFactory 
channelFactory) 
+       throws InterruptedException, KeeperException    
+    </computeroutput>
+       </para>
+
+    <para>
+    where:
+    </para>
+    <itemizedlist>
+       <listitem>
+       <para> 
+        <computeroutput>zk</computeroutput> is a ZooKeeper object. This 
constructor is useful when
+        the application also using ZooKeeper and wants to have a single 
instance of ZooKeeper.  
+       </para>
+       </listitem>
+       
+       <listitem>
+       <para> 
+        <computeroutput>channelFactory</computeroutput> is a netty channel 
object 
+        (<computeroutput>org.jboss.netty.channel.socket</computeroutput>).  
+       </para>
+       </listitem>
+    </itemizedlist>
+
+
+        
     </section>
     
     <section id="bk_createLedger">
@@ -114,7 +169,7 @@
        
        <para>
     <computeroutput>
-    public LedgerHandle createLedger(int ensSize, int qSize, QMode mode,  byte 
passwd[])
+    public LedgerHandle createLedger(int ensSize, int qSize, DigestType type,  
byte passwd[])
         throws KeeperException, InterruptedException, 
         IOException, BKException
     </computeroutput>
@@ -138,10 +193,7 @@
     
        <listitem> 
        <para>
-       <computeroutput>mode</computeroutput> is the ledger mode 
(QMode.GENERIC, QMode.VERIFIABLE).
-       If <computeroutput>mode</computeroutput> is QMode.GENERIC, then 
<computeroutput>ensSize</computeroutput> has to
-       be at least <emphasis>3t+1</emphasis>, and 
<computeroutput>qSize</computeroutput> has to be <emphasis>2t+1</emphasis>.
-       <emphasis>t</emphasis> is the maximum number of tolerated bookie 
failures.  
+       <computeroutput>type</computeroutput> is the type of digest used with 
entries: either MAC or CRC32.  
        </para>
        </listitem>
        
@@ -160,7 +212,7 @@
     
     <para>
     As a convenience, we provide a 
<computeroutput>createLedger</computeroutput> with default parameters 
(3,2,VERIFIABLE), 
-    and the only input parameter it requires is a password.
+    and the only two input parameters it requires are a digest type and a 
password.
     </para>
     
     <para>
@@ -171,13 +223,11 @@
     <computeroutput>
     public void asyncCreateLedger(int ensSize, 
             int qSize, 
-            QMode mode,  
+            DigestType type,  
             byte passwd[],
             CreateCallback cb,
             Object ctx
             )
-    throws KeeperException, InterruptedException, 
-    IOException, BKException
     </computeroutput>
        </para>
        
@@ -201,7 +251,7 @@
        <itemizedlist>
                <listitem>
                <para>
-               <computeroutput>rc</computeroutput> is a return code (please 
refer to <computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> 
for a list);
+               <computeroutput>rc</computeroutput> is a return code (please 
refer to 
<computeroutput>org.apache.bookeeper.client.BKException</computeroutput> for a 
list);
                </para>
                </listitem>
        
@@ -213,7 +263,7 @@
                
                <listitem>
                <para>
-               <computeroutput>ctx</computeroutput> is a control object for 
accountability purposes;
+               <computeroutput>ctx</computeroutput> is a control object for 
accountability purposes. It can be essentially any object the application is 
happy with.
                </para>
                </listitem>
        </itemizedlist> 
@@ -257,7 +307,7 @@
     </itemizedlist>
     
     <para>
-       A call to <computeroutput>addEntry</computeroutput> returns the status 
of the operation ((please refer to 
<computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> for a list);
+       A call to <computeroutput>addEntry</computeroutput> returns the status 
of the operation (please refer to 
<computeroutput>org.apache.bookeeper.client.BKDefs</computeroutput> for a list);
     </para>
     
     <para>
@@ -267,7 +317,6 @@
        <para>
     <computeroutput>
        public void asyncAddEntry(byte[] data, AddCallback cb, Object ctx)
-    throws InterruptedException
     </computeroutput>
        </para>
        
@@ -309,7 +358,7 @@
                
                <listitem>
                <para>
-               <computeroutput>ctx</computeroutput> is control object used for 
accountability purposes. 
+               <computeroutput>ctx</computeroutput> is control object used for 
accountability purposes. It can be any object the application is happy with.
                </para>
                </listitem>
        </itemizedlist>  
@@ -328,7 +377,7 @@
     <para>
     <computeroutput>
        public void close() 
-    throws KeeperException, InterruptedException
+    throws InterruptedException
     </computeroutput>
        </para>
 
@@ -397,8 +446,8 @@
     
     <para>
     <computeroutput>
-       public LedgerHandle openLedger(long lId, byte passwd[])
-    throws KeeperException, InterruptedException, IOException, BKException
+       public LedgerHandle openLedger(long lId, DigestType type, byte passwd[])
+    throws InterruptedException, BKException
     </computeroutput>
        </para>
 
@@ -409,6 +458,12 @@
        </para>
        </listitem>
        
+       <listitem> 
+    <para>
+    <computeroutput>type</computeroutput> is the type of digest used with 
entries: either MAC or CRC32.  
+    </para>
+    </listitem>
+       
        <listitem>
        <para>
        <computeroutput>passwd</computeroutput> is a password to access the 
ledger (used only in the case of <computeroutput>VERIFIABLE</computeroutput> 
ledgers);
@@ -421,8 +476,7 @@
        </para>
     <para>
     <computeroutput>
-       public void asyncOpenLedger(long lId, byte passwd[], OpenCallback cb, 
Object ctx)
-    throws InterruptedException
+       public void asyncOpenLedger(long lId, DigestType type, byte passwd[], 
OpenCallback cb, Object ctx)
     </computeroutput>
        </para>
        
@@ -491,7 +545,7 @@
        
        <listitem>
        <para>
-       <computeroutput>lastEntry</computeroutput> is the identifier of the 
last entry in the sequence of entries to read;
+       <computeroutput>lastEntry</computeroutput> is the identifier of the 
last entry in the sequence of entries to read.
        </para>
        </listitem>
        </itemizedlist>
@@ -517,7 +571,7 @@
 
        <para>
        <computeroutput>
-       void readComplete(int rc, LedgerHandle lh, LedgerSequence seq, Object 
ctx)
+       void readComplete(int rc, LedgerHandle lh, 
Enumeration&lt;LedgerEntry&gt; seq, Object ctx)
        </computeroutput>    
        </para>
        
@@ -539,7 +593,7 @@
                
                <listitem>
                <para>
-               <computeroutput>seq</computeroutput> is a 
<computeroutput>LedgerSequence</computeroutput> object to containing the list 
of entries requested;
+               <computeroutput>seq</computeroutput> is a 
<computeroutput>Enumeration&lt;LedgerEntry&gt; </computeroutput> object to 
containing the list of entries requested;
                </para>
                </listitem>
 


Reply via email to