You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by bu...@apache.org on 2011/06/28 04:51:01 UTC

svn commit: r791701 [4/4] - in /websites/staging/zookeeper/trunk/content: bookkeeper/ bookkeeper/docs/ bookkeeper/docs/trunk/ doc/trunk/

Modified: websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperInternals.html
==============================================================================
--- websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperInternals.html (original)
+++ websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperInternals.html Tue Jun 28 02:51:00 2011
@@ -241,7 +241,7 @@ document.write("Last Published: " + docu
 <a href="#sc_rightLevel">Logging at the Right Level</a>
 </li>
 <li>
-<a href="#sc_log4jIdioms">Use of Standard log4j Idioms</a>
+<a href="#sc_slf4jIdioms">Use of Standard slf4j Idioms</a>
 </li>
 </ul>
 </li>
@@ -677,28 +677,33 @@ hierarchy of groups.
 <h2 class="h3">Logging</h2>
 <div class="section">
 <p>
-ZooKeeper uses 
-<a href="http://logging.apache.org/log4j">log4j</a>
-version 1.2 as its logging infrastructure. For information on configuring log4j for
+Zookeeper uses 
+<a href="http://www.slf4j.org/index.html">slf4j</a> as an abstraction layer for logging. 
+<a href="http://logging.apache.org/log4j">log4j</a> in version 1.2 is chosen as the final logging implementation for now.
+For better embedding support, it is planned in the future to leave the decision of choosing the final logging implementation to the end user.
+Therefore, always use the slf4j api to write log statements in the code, but configure log4j for how to log at runtime.
+Note that slf4j has no FATAL level, former messages at FATAL level have been moved to ERROR level. 
+For information on configuring log4j for
 ZooKeeper, see the <a href="zookeeperAdmin.html#sc_logging">Logging</a> section 
 of the <a href="zookeeperAdmin.html">ZooKeeper Administrator's Guide.</a>
 
+
 </p>
-<a name="N1015C"></a><a name="sc_developerGuidelines"></a>
+<a name="N10160"></a><a name="sc_developerGuidelines"></a>
 <h3 class="h4">Developer Guidelines</h3>
-<p>Please follow these guidelines when submitting code. Patch reviewers will look for the following:</p>
-<a name="N10164"></a><a name="sc_rightLevel"></a>
+<p>Please follow the  
+<a href="http://www.slf4j.org/manual.html">slf4j manual</a> when creating log statements within code.
+Also read the
+<a href="http://www.slf4j.org/faq.html#logging_performance">FAQ on performance</a>
+, when creating log statements. Patch reviewers will look for the following:</p>
+<a name="N10170"></a><a name="sc_rightLevel"></a>
 <h4>Logging at the Right Level</h4>
 <p>
-There are <a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html#FATAL">6 levels of logging in log4j</a>. 
+There are several levels of logging in slf4j. 
 It's important to pick the right one. In order of higher to lower severity:</p>
 <ol>
    
 <li>
-<p> FATAL level designates very severe error events that will presumably lead the application to abort</p>
-</li>
-   
-<li>
 <p>ERROR level designates error events that might still allow the application to continue running.</p>
 </li>
    
@@ -711,7 +716,7 @@ It's important to pick the right one. In
 </li>
    
 <li>
-<p>EBUG Level designates fine-grained informational events that are most useful to debug an application.</p>
+<p>DEBUG Level designates fine-grained informational events that are most useful to debug an application.</p>
 </li>
    
 <li>
@@ -722,34 +727,29 @@ It's important to pick the right one. In
 <p>
 ZooKeeper is typically run in production such that log messages of INFO level 
 severity and higher (more severe) are output to the log.</p>
-<a name="N1018F"></a><a name="sc_log4jIdioms"></a>
-<h4>Use of Standard log4j Idioms</h4>
+<a name="N10193"></a><a name="sc_slf4jIdioms"></a>
+<h4>Use of Standard slf4j Idioms</h4>
 <p>
 <em>Static Message Logging</em>
 </p>
 <pre class="code">
 LOG.debug("process completed successfully!");
 </pre>
-<p>However when creating a message from a number of components (string 
-concatenation), the log call should be wrapped with a "isXEnabled()" call. this 
-eliminates the string concatenation overhead when debug level logging is not enabled.
+<p>
+However when creating parameterized messages are required, use formatting anchors.
 </p>
 <pre class="code">
-if (LOG.isDebugEnabled()) {
-    LOG.debug("got " + count + " messages in " + time + " minutes");
-}
+LOG.debug("got {} messages in {} minutes",new Object[]{count,time});    
 </pre>
 <p>
 <em>Naming</em>
 </p>
 <p>
-Loggers should be named after the class in which they are used. (See the 
-<a href="http://logging.apache.org/log4j/1.2/faq.html#2.4">log4j faq</a> 
-for reasons why this is a good idea.)
+Loggers should be named after the class in which they are used.
 </p>
 <pre class="code">
 public class Foo {
-    private static final Logger LOG = Logger.getLogger(Foo.class);
+    private static final Logger LOG = LoggerFactory.getLogger(Foo.class);
     ....
     public Foo() {
        LOG.info("constructing Foo");

Modified: websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperInternals.pdf
==============================================================================
Files websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperInternals.pdf (original) and websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperInternals.pdf Tue Jun 28 02:51:00 2011 differ

Modified: websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperStarted.html
==============================================================================
--- websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperStarted.html (original)
+++ websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperStarted.html Tue Jun 28 02:51:00 2011
@@ -276,7 +276,7 @@ document.write("Last Published: " + docu
       create it in <strong>conf/zoo.cfg</strong>:</p>
 <pre class="code">
 tickTime=2000
-dataDir=/var/zookeeper
+dataDir=/var/lib/zookeeper
 clientPort=2181
 </pre>
 <p>This file can be called anything, but for the sake of this
@@ -535,7 +535,7 @@ numChildren = 0
       few differences. Here is an example:</p>
 <pre class="code">
 tickTime=2000
-dataDir=/var/zookeeper
+dataDir=/var/lib/zookeeper
 clientPort=2181
 initLimit=5
 syncLimit=2

Modified: websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperStarted.pdf
==============================================================================
--- websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperStarted.pdf (original)
+++ websites/staging/zookeeper/trunk/content/doc/trunk/zookeeperStarted.pdf Tue Jun 28 02:51:00 2011
@@ -124,10 +124,10 @@ endobj
 >>
 endobj
 26 0 obj
-<< /Length 2348 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2353 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat%%8TWWE'Y`m7n<RV)7L8G+9FaYLUs!kC`]CNlJL2NHA!0XgdYdV]qnVkj!bHLpL]R,7g\9Y#ldb<^YsSWQ3pY&5Fg`gc\F>P?W=*oIi"PBGcFS&qGtH+.kLL%6rQA!<Bm@=^0CG<'2QV-Zhg>u%(;.r:n*[]#,_'Ldg\LErIUDXc^(duDD\'M6c)8=1pk,h7PHUL+Sb;HP?e2:HTWD2he#HL#%nI=%:='U.L2KQA1j('b*`dcmhJ6%WLO-Y5VO8JO6/5\ThJo>Y+nE'NFYhq9U2D`Hp#Pd8aK!^<^21aco9LQrUM/hClFf)_HuF<0=<=)W!XcnbLcJL!j-Ac^3Qne\9o(`1]9g1Q,f^NR`33QEX:ucfn_K&8&Q*@Y,7u/\(l>]35pGURP!]tfp*ITd#!\C7M21c+D"EjdJP[IL2Y4gC,jo'S!_]aCP[ot59Kk1V@kaI,YlhG0Wk^<"pC-QL)s!N$L],F5@OU!B"r3J0Q_"#t@W+S)15/qKAQDf#!83E,e"W*'#\@5+7k@\DV*aO?=Nt!>ZQ!^"PK9_kEEM_%@],?QCn'YnJi'T_[$qmY,T9@00_ETmQPIdgFgI/]K-/COO&\5R?,3!jl5lXb_BegaYP:o"C3Fbn_Jnd.NQc.&j_!)1@Z(<\X#N@uap!DY)(7Ya\E9TgSgbeQdnJmd/"\U7G\>0:;W(::7^<KSen?(f6b:S"1N:'WE`P"&8JD<CM!DjZ*1E`Mo#>b8\0MAjkMY.iD13Um>A$iEAhiU\*@P$k+f03Af=N=$Phc0VaQ&)paWgPZksRE[qQ>?peRLCNKRBI/e2@&;H0HW#kN&U.m^jpAmM5SYFL/]R>$d/m`/%l73Ia\VmlD0B>=NZ>"5=%]!s6:UjGRQXP/5(9]O>Oe(5-Qj!pYiN!(OYG%42?Y0UrVfhQt2^Ub;2N`!MTk,db`iSSQW#F&d[L>R[;reZe=:;+.;:jKdQ^(<HjjO+rBDMc$*;Z+aR
 f/0sOBK-gF::!RV:og6:UOrcn;SQ!i]9+XCDGi>#@*_M_[EMuNm'oQc=KE--Bn-DiG\11.!8H1(TT]6[I6UT1O0T$GT6R,&@[?reZY`UL*:oQ<2I...@fZ78>hL&4E4+8k[ZM'9<K*W/q+CJ's>L\'VbX!Z>"?q_(F$[3sL7bJ9HuD".k,-:G@
 DST[1TP0D+O8[0X,hG#I)K,GI%n$5YdA7a6MI96E.IMEDhd)T@Aa='+!=Unq/q>`/HrgU1dL>Z.!A[hYqHIe2+T4;a_Ze_+9r`(:Y\E"8/kdaM[g35e.u-lsM%DX7Dq,LeX\V_1**g$>crKDKEC!S?6kRQ1VrEt[+BE?D)4/`YK7R125lHM6KClc$Hr,1$$ob&hhls(,U;%R$m%45[IO!7[!:O:Us?-*RHgo\YVVT:Y<`JkgdS4/l8#;!gp,O+9fjLMRpW")Ns'*/&"oUL?^A.!2+oW&N!8Ys1jo20AbZXsJE<SPObiP5-qN')c7op;Z^;fJJBB"hDDD-sB_\"pdDTod/333nXk2=gt";AG4i/2;VaW~>
+Gat%%8TWWE'Y`m7n<RV)L'd:l9FaYL\BAuW`]CNlJKc6DA!0XgdYdV]qnVlU,%Yn;L]R,7g\9V:ldaghd%VSdXn?jK>ItWXD"pN&fS7#REsZskCL('B]VabLFmJi!rq-Ao.UMP_MoR<0(!GHo2]ma8)(uZp]6g\1aYu))4'oWc*-.XfQ_II>m?(KInas:%IkZ%Rnr<=G[JkUIbBih%Pgp+*XBK1@O$l9AGn%TlDu1f=@nSRmZheJ16(@.De7hW7c#bB(_Ucm&Sg,72Ok'[dX77MOAX.59-SMqq(6/%JAL5?gG7;lk6p2Sjla?9BHd1$;r:H]s:agc[bd$F>0/Vk3=f/TM7%DQVKB,HF3L6$TIMmKE\H$o2mp6umLgj"-M&:6N8CZ0!&lE8-*3+7'a;K.TpaON:*nIg+:+&U8Tg3Y\bkGV>fU_gF/A[KGOq#Pfq97oZ_/p7.NnBAd!5m=!B7L6E,3MpPlt=$D6Woa%W4:p"jP4B(p-t976b(*1-:M>GOSq^,/P<!<:ptXu_ID&s</B?d.lf+YG(XXA&ihg(%L_,lC`5meG):)Z8CKoHGnYgd"J(A\L:3N.ZGIKTDAKOSo>@!jYtF2\1Un)Gh':EIR)G]X"oi:;c$nL^h]FmV-'M4QWL<FifV(S/.ZR?!El"D<#"hZFY*tU*$O*>IR`UdAq+CnommPEij>fT>O_fr`2-S&YOJ]@n%'6WCer"c;#s8_8;-g\c7H9a<:4LP@Rm_^=*NdAjc$,t(B+9`W/4NoW#7;5^81?+1FtQ@WP+/'GGo2Vs=sWPo*QU]=he,chH>FpnOK[/c\gDnY0>8_#S3/^N>rsC_^-^_KDUeESk#id!N$q/]j0ti]Y!F6!b\6]Y@(RPS6Qd4uI$*br174Gd=%k3_!oN^-8)54%^o2I[_$"'QL=8oB8%+eTe0_=3=^Df+Lc3qcF"J5IY0,(^M]q_g.TTe(MSPGq?']i_,+>`TW,ENZ)"iFolha]
 &6F*IEb_4lIdCG7L>\I25dN]$oF6^_TnH-cCa7#526-4.#Nb'i+Cb\XH+/&$%*W\lZ=(R3rkoY-jFBl\1B^!\`N3%fQd"kOhbm'/?fLV;dW,spV>c?=@gYt]@#N_VI"6a=G)/cV!acQrd&]X#]T.TKXkp2q*-0qGF0O1D%cs/-LYJbT5'+RSp5:erFBWPoYh4M7D:G/K*lG]iEirIGYdq=YuZ3Ib+1.uXTdE`B:%Z2m7OrHh8KVmFH*$:]#<Aq...@fON>$Xao_Wc`Vb_)7Y]l+EgN.pi,*,-3pN;d$aZZ!Zm[b);Qh-2[_\7dR-7Lc0g[-r,*#?QZMicIN^]a:]j'#W"T6<cg?>"@PT\(S>>;jJSo%_<onl5#$[2Pq22+s0+Seah^nSH-D=t=/B*mhbt]]E[V2A-!h1/,G@fkf@N@Y8j4=ZHI*U]-14qkW#P"gahb]UmchW&k1Lk\Bp\H^?<#e95*4q61hUA@ORt"&"Ui'HCu`"'W:`[_KLf`M(-Z0$BeX^Ti36K;/\@$?iQ#@_54oh]]?=_4Wpa@)3KSPd%N-1OqGd5bTcBH)BF.DKO4<Db!tA_""j/c+:XIr0E5[+c0j>h^")W8>h3s3-D)mF>00H3EHV%(VbjX$J48AL$8QLDOOgLE&7.XSjB#.d.6^O^m"
 9c)5d!/oX_:$KjMNP)?EpY-FKs=,&/@!E3\G8<#p7q<+gWXaGUY-5tIr(F`hgp>0:Z3F-0dR^K-V]9.KQ([U=g)n%MtrN<)^PR2j^_9VQKYF!q9[:5b\'&.AH:G_C1MR1GZ(TY=hoFl=3T^>A,WW6Z5#E=KXqR:EH@.tXl8pMgNR1CPk&gT[$aBCAU):8gf<E/[#[%!Rcm?O+U>d,Ra-p[),q5j],;H%uE:!c'J4J8L>IkYsJ_FE/VXMRA>4C1!-I":W]uA6Y*;?upEVcUYShomIGX^'-A]SUR/d_b'.<U#?eF/_T[YGQO*ANMgZ`BFk']f:O/([Q8T8aR.5";8X$q_=3#W/\1T%aB%NKRN3\!U[S0aS3LJ1~>
 endstream
 endobj
 27 0 obj
@@ -276,10 +276,10 @@ endobj
 >>
 endobj
 43 0 obj
-<< /Length 2572 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2577 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm=>E@5m'RlZ]OgbK#9H<5Q1_7A'Hddk+O]X3.<MjnCCQc3g11g7RH^r%!EFO\eX@>!EV`sk0BBSC$ea&^*Y?06._sc?\bU:+@a"dK$,PCkH_uerqYuc#8p?Ji^QTlag/0Ytgs6NJ@;./D>m&p8Xb_I;*%AZid@R'L&9(16(c]A'iXk<-`hUA-1p?7/nDoHm'jH$u-hT]uS4?G@NN+i>U_pIJXkO"Z_>*<D&$0EN/Y3#=%ZJfXNWr;R_4^d[J2Fm%486=1W7Q`uo<*RZ<K?YRCp7.)1R\!uQKNbcBU<8DR!DsWFrM`q@8jl7n@[#'&!uYJ=91o+BQ!nk_[qKp]J;e94%fH!IADa;E%tR=MaR_ti=V@\5#s@ajHLJDZI/hb:'.mT;5%eIsW0q:+[;Y?f;ajh_U283Te+^K:^l&9$H5c[oSi$F%/[S%?qUtVTIp:d:[YR=c9G6LMRioF6K6URf,r%t)btQ8AcB#X;@bhqM`2@L`l'IZk%NHT/r,<)-bouOSa-Nki=lW>NaL&O@dqA[I=NDEB5m]'3f!9nUl#:'hp>DmF\p(ViaW94bOIf[ekt59iNiHkST*[bsfXkV8X,+`Ca!dWT+:O?4qFL]jQpupVnidIb2Nk(f2-n?;P%p>tX6%(@bECK?R[hQl$W<_*FjWhtfpkJ<2$'>>/>d<X8WhSB40d=R_Mrm$MDgZ>N[5`X[N+lPP"!3kS!"VbNcpK:9i4+Q,N\BBraY+/,:C\jP!Qd?]c[M@*@&U$.SNhm(i'@Jd=Mlh8hec@J'7<.l5'4Skh\9Sn'uG+Y+#M`9esahZg4Vc.qIPk;/q$O`-krWVOLg!J]fYX-B'Wql;D-k:#Ic?'oKp9L#P;"7:*CHF&Z;XWA'41k4t<]*UY>fU(pJs-I[^hR.%X-NeOR=(U/JrH*UT^=[9C67S>1Ue)Yj#h$PTlGZNe;;K8Mo)r(KfUW\K$qI>qoOJ-91@H1c&-!?t>=\:Hr](A=
 f0DsmohK.h2D)^b'.XWiUKSTQ<n-+^f!O,*n_>ki@=_OYXUfcm5ht$>?E*'fE1C%n;>o0tX0dA*?7k)Z%J\mig/$(MSWp5PD'#Rbh//bZ0"+$YR2<CPFgp8XB,Eh[sBZPq4N),sA7_6+]A_p&Hdr*0/$&dDh/Qp"J('2XM,R](&mmN%4^0jFV"XoN']#Z1UGg6ATTGK">;'MiB,<?+:JLT;g@(3!d/r[k*D!r:;2k$+Ld@q)op#=f2bn%'E8-,u-RDo:7C9R*<W\T7BkJoo*neTQ8$h/ZW%Uc!M"$mP#A@VgTYRKO,dQt9p1)>[r#>rseUrs,_(jJGVcf2bB./9B8_Jl+Z,S"=u>Ds4uiX#%#?HAnY]h`H#OJMu7ZoQ,C<i6e=%CuILk5YM&>&Lss9TKG3+f,[S.hM<`X"JR!D$dFe)Udu+ICI2N3$V+d]<>diZtFBrl[)qsG(kkhLI+;-r&@4P=#aXr=H-PR-/qA-0m,8RLtGQ#CFAGN>WK#C^i;XYRT([fk#K;&I`A``@J)+?9rJhM\a-UO':?Km3mLUl`ZC_:#XHf(`4i9b1"_>7]ATpic5s)WPbQ5r?K+>-TgW89(=.X7ag>]lL-&Z/l3k]+\%)4WdkEgsm.b;JI5`.<-[t$^_qH)E`!:DWIpU-nF@Ihun6$B1EZN&*(hBV[9+m`+)c?1l_"W8Xa8H]!S%c)Kg\b\]?U'0Aag:RbM2a(-;A-nmfqqS?pRSD?l[Yk^\f]Ed?Z:io[!t?@[+CF_Dj$8ST7`VgC,>2cXF&ul`7ik;PR+r,e`h,dR6G9Qa%?S-0+CUd5g]a"TF1cD`[2^)FDO8+*/O]K,gTA:4+o9aE&rSDl\?j4oZo0$j+oBS,mM,jDca:OBLpdG%OH9+#p[%t4gBqcW6WChkf"\$>5*![hW%cr\s+VF-Tfe&1]uBr3c>j9gZa"h`ATtcXSA[#J!jeni6YcA3b9DMPmE+q:ETrQS'D>T'#61-8Ha
 Ru+RIpE%!S6$"(,?]N&3WOXC^S)(PK64Xk"$.`mYhdq\G6O>*eLR>:N6D88kWo8#(^o8nSX%G9/f/SN,rV2e)M8bIVbP=2K)YC8C,#n"!m!)4VUTdidJ6f:pJE&k=`=P\RrO5X?6R:]3,U,$=O3L7Ye4/=kl&c`",$L1,c2D!pe[6kmNQ3fe(Xi3)$8CKp\DT]1VkLXi)SccEtp7BjbfCfPI]L7$IBe-bUPL._P7dPr0E?L,Jn0H$?jKlLg?_R=`"CCf((AU]Cjo'##kka5h3dGDnGYH5HKajb2Zar(2]`kA<4i...@ecuIb>s=)3>0-hU^]>dA'@79Y1e2//#7/H0"]IHV&eFIT+LK?JnWNm71%66tSR.kYT7'NZ(]a38%pa+42_"V)Cf2>hN^g)V2FImdmPN@fF58%eM5AG>P_u5Nn+&V#UrCD5NDt<k>tGml[i^`YT,i2k#Zcse/$J%(TbdMm+)X>ri2b0i7&LdlO`XcdAN_SN*:jVGIuq;91qj/2T"L1+S0$1*LEJ?p<7?b3G(\AYcbqE'I.n^uF&NP~>
+Gatm=>Ar7S'RnB3d+^USAOKDI!dSIg[;.]0>oTHS\meKPg*S##XtF_C?b\s"ZjnB[otq=d0kHsRm3D;pp?J"!X"RQ(gV`LGX3;s*(WS9.%3tQA=i:C$qls4Dn*]JeX-_]iTI_9)hLGJRngH3^DKf02:ZfP*o`ihm+L*#7\#&i`aZiT#OKI1)+2);Qcg8a[IGTkK[)dah5'sbWJU)ENXr5[kG_Vp6HdCG&8[Kbb&e`D[nm0H)8S#`n<`Jt\6$pE$j_^%-X,sKY22ld;^8\Q2is2&@?L9`j2)RP9-jd:rY=+Wl`?V*.Gl'k7k*1[bPf4u=/I+&FlBdb1F"5)q8oE&AmL^>g1`cAWq8g9G)]o-FplXa'KX)k"rtBY:H1g$8J,0)O2^V_D8:8_,N)2=V^hVcV^ScspQpfW#qknB,c%-Z7B_<qMHTc*@H!4mBkk4VXqgVi,['kcYBhT0%k*mL-7>#hgR3aRZ'?s4nHd7\brbUC/-cDp#\`r:BL^kCI)>nF^kNsG];ob3,4'CT?T?+CNQ.'CFoiT9RjZs2'SCXutdck^ZMtZ)-Uq1cZ?HF5E-BOg'\`l^m[>q8&31gLBC"U%,b,^?;IE*b09HXb*<r,Ag=dV[8GOdp+=Z2GCHo53P&s@!r^8pA0cHDC&kF.paSI8>iZZXYg(>53H$8hjVS1LOTTLk9sY<0#>DShBZiefXXF,hOfA[WTM'9Yf#Ya^dmV2f_[fhG=-r@R,LIK!a>)'^NQ16Or:N4g><3uoQd:b#.=.i<%,8^W,#3D)!TcemjqBQXQ.)g$!<RJ50N-a&p@7nkbZ<O;"k9e0c3g/2j<l,5qq5c1#U%"ZSS&LNGjD<b#/r`.l3',?DC$&.@^Y=2d*c#Zie^o9#FX605DD]S6o]:p%doHr%A`gH5,*KGiTYSXNq#C3UY$s>j'`C<KLH.1i$,M`\UO*F^a^/AsHjX]*f9;B[e$Mn8#X,s#eG@BN?#pi`KVHHMHd(8j
 9W%\)0P2:9BJo*I3b:7ll$A=36]'ol])$-s4;o/M[3*Bpkc_O\-?bY[aZ/Dd63G/i]1:f)U_.#l16B>$3irXol-!",ZUfGq_=!`U'MHM]B1C!J<cYCTk-+ISp(e,e8V9k;5@2Y[sV2TM9YKOSDg8Ebc[1X7Y$X9omB.O+O4%U38?f-\SWI2O@SdS@=j)pJW(@dmu-p]L_HD3f"]1-lRAcku=f>)8u?X+G1@G'Eo7W1+<f:k\QR-V`'2pHQO5Y(p\AspX?$#6[4];dW>^ZWX(D"8@fP7-l1%h<!@`WJL>!G&_D&[2]'^sYNVKeaF"J-Ss#_PG?_(`7Kc@*diK!\!hp=2JpK&L7ir^0?O0=lK_V#@>KH_S&`^1Q\F6M6o:_(fmOOYRS/BA`j$na'*AmbtO0gfcd1%Z7?LX\uRH,>&=SMEZ3BmKmgGLgc-NPS%Gk8GI2"&_s7P62g0n6'Sf"@X8FqJ#?Nlo$<W9lmj6s^^+jad!f5K*qF`4%Y$<uk0u.cp)OaVR0'60O"b+Iu7:Gj=S5#ptFh-hF.2/(t0KRKVnAZN@PmBY&m)6W=B//%qK"KsFqT^.a7[0Xg;-r6LLS7+CdMC/^!Qh]]\qW:On*1;%olmq@bgS7,C$bV/fmPe!T-o*L[DU]<BuC6uom^;fW,tK\([tQ???.((?l3FR^.T*.qccqgS&"cHX2k/Q-C_`Qb1li,;;YWrWT:W%GLu#9&fYPHV'LjedS6DRmlO[]2ZZXPF[)74^>oolBRbeZBl>3]hBXD04ps<1eRmGQ=SKfaM7(/e3>$Q>Wmg,R14@I+O-L4%?5f2QJYEOd6PferN(l@1kh(L43>M]$M4UR?L'V/]iKOJ3erNVspn(n9`XuX09FQA_hl^W)d#bIl*D5`8P"'UHH=@aR:n`l^fS`&.[J&RX]uTeZF=L-k:Nr]-BElg8Fl"mT[aat&MJ[mp=Rf+$s"_Xg^qmX+Fiut%.hN0lT0O#-2OtM1-%K
 D:OpF=^6.idi)=BK+#JRdH)/49(@EZr92[HO:>HK!;N@-W)p)P1n[4Kr.[oAThOPX0gO%'r#PKk.'mlbb>40dA!DoD'`Q?D@)YCu5Me4A+%i]G'%1,q;6VEqdRY=4jj,`ZJY.+R/k?pPVG;#NefU0.'mLRtn5/=kl&d&=5%#%E8]D!phl6kmNa3fe+Y!3b?XCKp\dT]1VkLXi)SccEtp7BjbfCfPI]L76Ude-bmXL5Q("dPr0E>3j&j5T-&%KlM*G6FV5MCCf((AU][ro'##kka5h3&`:V2YH5HKajb2Zar)>(`kA<4i...@ecuIb>s=/5>0-hU^]>dA'@[Q]2+M80#7/H0"]IHV&e?Z?TX;ounWNmG1%:dISmJ%\T7'NZ(dR`#%pa16[jh1TE)IblN^gYf2FImhmPNXnF58%eM5AG>P_u5Nn+&V#UrCD5NE1Hm>tGml2^"6/V]C%s#Zcu;.mM/9@kID052:Ym_,pX>&Y2tL8()*/QM%J,EQg@drB]l*e+bD#Gk+IME.Uo!*eMJ_ED8*4faV-V4qkD9o%efHZW)#~>
 endstream
 endobj
 44 0 obj
@@ -545,73 +545,73 @@ endobj
 xref
 0 68
 0000000000 65535 f 
-0000020795 00000 n 
-0000020895 00000 n 
-0000020987 00000 n 
+0000020805 00000 n 
+0000020905 00000 n 
+0000020997 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
 0000000933 00000 n 
 0000001053 00000 n 
 0000001134 00000 n 
-0000021132 00000 n 
+0000021142 00000 n 
 0000001269 00000 n 
-0000021195 00000 n 
+0000021205 00000 n 
 0000001406 00000 n 
-0000021261 00000 n 
+0000021271 00000 n 
 0000001543 00000 n 
-0000021327 00000 n 
+0000021337 00000 n 
 0000001680 00000 n 
-0000021392 00000 n 
+0000021402 00000 n 
 0000001817 00000 n 
-0000021457 00000 n 
+0000021467 00000 n 
 0000001954 00000 n 
-0000021523 00000 n 
+0000021533 00000 n 
 0000002091 00000 n 
-0000021588 00000 n 
+0000021598 00000 n 
 0000002227 00000 n 
-0000021654 00000 n 
+0000021664 00000 n 
 0000002364 00000 n 
-0000004805 00000 n 
-0000004928 00000 n 
-0000004969 00000 n 
-0000005142 00000 n 
-0000005328 00000 n 
-0000005528 00000 n 
-0000007927 00000 n 
-0000008050 00000 n 
-0000008098 00000 n 
-0000008283 00000 n 
-0000008419 00000 n 
-0000008553 00000 n 
-0000008739 00000 n 
-0000010465 00000 n 
-0000010573 00000 n 
-0000011937 00000 n 
-0000012045 00000 n 
-0000014710 00000 n 
-0000014833 00000 n 
-0000014874 00000 n 
-0000015048 00000 n 
-0000015258 00000 n 
-0000015464 00000 n 
-0000017529 00000 n 
-0000021719 00000 n 
-0000017637 00000 n 
-0000018161 00000 n 
-0000018346 00000 n 
-0000018510 00000 n 
-0000018745 00000 n 
-0000019015 00000 n 
-0000019267 00000 n 
-0000019525 00000 n 
-0000019807 00000 n 
-0000020022 00000 n 
-0000020130 00000 n 
-0000020240 00000 n 
-0000020353 00000 n 
-0000020469 00000 n 
-0000020575 00000 n 
-0000020686 00000 n 
+0000004810 00000 n 
+0000004933 00000 n 
+0000004974 00000 n 
+0000005147 00000 n 
+0000005333 00000 n 
+0000005533 00000 n 
+0000007932 00000 n 
+0000008055 00000 n 
+0000008103 00000 n 
+0000008288 00000 n 
+0000008424 00000 n 
+0000008558 00000 n 
+0000008744 00000 n 
+0000010470 00000 n 
+0000010578 00000 n 
+0000011942 00000 n 
+0000012050 00000 n 
+0000014720 00000 n 
+0000014843 00000 n 
+0000014884 00000 n 
+0000015058 00000 n 
+0000015268 00000 n 
+0000015474 00000 n 
+0000017539 00000 n 
+0000021729 00000 n 
+0000017647 00000 n 
+0000018171 00000 n 
+0000018356 00000 n 
+0000018520 00000 n 
+0000018755 00000 n 
+0000019025 00000 n 
+0000019277 00000 n 
+0000019535 00000 n 
+0000019817 00000 n 
+0000020032 00000 n 
+0000020140 00000 n 
+0000020250 00000 n 
+0000020363 00000 n 
+0000020479 00000 n 
+0000020585 00000 n 
+0000020696 00000 n 
 trailer
 <<
 /Size 68
@@ -619,5 +619,5 @@ trailer
 /Info 4 0 R
 >>
 startxref
-21770
+21780
 %%EOF