ࡱ;  Y  !"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry  FMicrosoft Word-Dokument MSWordDocWord.Document.89q՜.+,D՜.+,\V [bbDefault$a$1$*$A$/B*OJQJCJmH sH PJnH^JaJ_HtHhh Heading 14@& & F & F$a$^]`$CJ$65]\ Heading 29@& & F & F$^]`$'B*phOOJ QJ CJ5PJ^JaJ\~~ Heading 39@& & F & F$^]`$B*phOOJ QJ 5PJ^J\BA@BAbsatz-Standardschriftart** WW8Num2z0OJQJ** WW8Num3z0OJ QJ ** WW8Num4z0OJ QJ *!* WW8Num5z0OJQJ*1* WW8Num6z0OJQJ*A* WW8Num7z0OJ QJ *Q* WW8Num8z0OJQJ*a* WW8Num9z0OJQJ,q, WW8Num10z0OJ QJ ,, WW8Num11z0OJ QJ ,, WW8Num12z0OJQJ,, WW8Num13z0OJQJ,, WW8Num14z0OJQJ88 WW8Num15z0OJ QJ CJ^J aJ88 WW8Num15z1OJQJCJ^J aJ88 WW8Num15z2OJ QJ CJ^J aJ88 WW8Num16z0OJ QJ CJ^J aJ88 WW8Num16z1OJQJCJ^J aJ88 WW8Num16z2OJ QJ CJ^J aJ8!8 WW8Num17z0OJ QJ CJ^J aJ818 WW8Num17z1OJQJCJ^J aJ8A8 WW8Num17z2OJ QJ CJ^J aJ0Q0 WW8Num18z0 OJQJCJBaBAbsatz-Standardschriftart0q0 WW8Num18z1 OJQJCJ00 WW8Num18z2 OJ QJ CJ,, WW8Num19z0OJQJ00 WW8Num19z1 OJQJ^J,, WW8Num19z2OJ QJ <<Default Paragraph FontHHWW-Absatz-Standardschriftart** WW8Num1z0OJ QJ .. WW8Num2z1 OJQJ^J** WW8Num2z2OJ QJ .. WW8Num5z1 OJQJ^J*!* WW8Num5z2OJ QJ .1. WW8Num6z1 OJQJ^J*A* WW8Num6z2OJ QJ .Q. WW8Num8z1 OJQJ^J*a* WW8Num8z2OJ QJ 0q0 WW8Num13z1 OJQJ^J,, WW8Num13z2OJ QJ BBWW-Default Paragraph FontPPHeading 1 Char$OJQJCJ$65PJ^JaJ]\TTHeading 2 Char'B*phOOJ QJ CJ5PJ^JaJ\HH Title Char$OJQJCJ$65PJ^JaJ]\TTHeading 3 Char'B*phOOJ QJ CJ5PJ^JaJ\@@Body Text CharOJQJCJPJaJ:: Header CharOJQJCJPJaJ:: Footer CharOJQJCJPJaJ66BulletsOJ QJ CJPJ ^J aJF!FBalloon Text CharOJQJCJ^JaJH1HHTML Preformatted Char OJQJ^J6UA6 Internet Link B* ph>*FbFHeading Ex$OJQJCJPJ^JaJ*Bb* Text bodyFCJ/arListGhhCaption+H$a$^]`A$B*phCJ 5PJ aJ\""IndexI $4>4TitleJ$a$CJ$65]\8JQb8SubtitleK$a$CJ6aJ]22para L B*phPJ ^^ No SpacingM1$*$/B*OJQJCJmH sH PJnH^JaJ_HtH,,Header N !, ,Footer O !44Table ContentsP $>> Table Heading Q$a$ $5\@"@ Balloon TextROJQJCJ^JaJf2f Normal (Web)%S*$^X]X`B*phOJQJ^JBHTML Preformatted:T 2( Px 4 #\'*.25@9*$OJQJCJ^JaJ0aR0Frame contentsUfgfg>^IIVVVX8%-38.<NAZFHA*EHKPYl^aejp0|b2fNlιFJh8^  ^0r!',06<~GR V^ngos\ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ()-2V3*455>6&778T9::d;"<<=N>??T@@AB|CD2EE^FFGHILMN}}}X~ހ΅ȭb~p0P:v  B &Ndxp!$$V%d(4*d,N.01x3~5,8 :T;l<>n?AVBCDFJGG6IIKLNxPRTUW[x\V^^Jabbddf,hi@d\>*v2ThD   ,x D*"$&(H*+X-. 01~2z3.456H89R<?CFnJ OQSSUVY\_xa"cefngRikk6mnprXs|s tw{V^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~c ddSfffh iimmm=XXXXIPRW!Xb$$cdKd4^b$Sf(d+@F(    NA?C"  TAY?C"   `qqC" N s *}k> %tth' T'$cT UNUT-CH-1-SECT-4.1UNUT-CH-1-SECT-4.3UNUT-CH-1-SECT-4.4UNUT-CH-1-SECT-4.5UNUT-CH-1-SECT-4.6UNUT-CH-1-SECT-4.7UNUT-CH-1-SECT-4.8UNUT-CH-1-SECT-4.106-26-36-46-5o2b cSfhmW> @m  cSfhmW>     OJ QJ vhhOJQJOJ QJ vOJ QJ vOJQJOJQJOJ QJ vOJQJhhOJQJ88OJ QJ vOJ QJ vhhOJQJOJQJOJ QJ CJ^J aJl88OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJlppOJQJCJ^J aJ  OJ QJ CJ^J aJ%@ @ OJ QJ CJ^J aJl  OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJl88OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJlppOJQJCJ^J aJ  OJ QJ CJ^J aJ%@ @ OJ QJ CJ^J aJl  OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJl88OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJlppOJQJCJ^J aJ  OJ QJ CJ^J aJ%@ @ OJ QJ CJ^J aJl  OJQJCJ^J aJOJ QJ CJ^J aJ% **OJQJCJ WW8Num2WW8Num3WW8Num4WW8Num5WW8Num6WW8Num7WW8Num8WW8Num9WW8Num10WW8Num11WW8Num12WW8Num13WW8Num14WW8Num15WW8Num16WW8Num17WW8Num18@56=XYb 'JKPijo *+.STXvw{   12BIbcf|}017YZaopw  ';<?abnq *+/ABGnor!'ABHhin   C D I _ ` f  !!!!/!0!3!I!J!M!^!_!c!!!!!!!!!!!!! " ""4"5"9"P"Q">"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""">PGTimes New Roman5Symbol3&ArialILiberation Serif7&CalibriIFMonotype CorsivaW&Copperplate Gothic Bold7Gautami9FPristinaWSimSunArial Unicode MS?&Lucida Sans7Cambria;Wingdings_ StarSymbolArial Unicode MS?Wingdings 2?4Courier New5&TahomaS&Liberation SansArialgDejaVu LGC SansTimes New RomanBhLJfFQ '0DyK  yK bhttp://www.injunea.demon.co.uk/pages/page203.htm top%23topDyK  yK bhttp://www.injunea.demon.co.uk/pages/page203.htm top%23topDyK  yK bhttp://www.injunea.demon.co.uk/pages/page203.htm top%23topDyK  yK bhttp://www.injunea.demon.co.uk/pages/page203.htm top%23topg DdB f  BA?bBU qG#nBU qG#PNG  IHDResRGB pHYsodIDATx^dWq.~͝'lAZ26ys6&3A(gi<9toUgwaԩUW2cAHm{Xx&+z_K3ϙ>/>o}+Z}‹~/V= q%+f[][ՓE7}g@x\,2yր>𴫪}E{GgX};9dReJZ3/~K̢4?cjΖxuow=__J:/\T;/-VZ!]P4bhp?{XPr? _uaw ykw O ZDfJw yx^μ7aW>nO&}kgSV']˾A^cC2(X*~L)|l}dwle"b+uڈvs6^ꯐMZ( GG&=| ?-g!3x<#|O+/維g:Dڂ$'l={x!}^Ho9c.nIQ$BJѕZN4Ȁ6΀N!`g?B-go-VА{=TT/@e@>aC-by6eKF+ C,<̀.4cvUX;vB(de>1};|b®.r%A/=P2}?s*p[]C798"^~O<|nD/# $Cwc1jOf@AZg<pa鶟SbC  uNB4"!CSGm!SR'֔BoF&Z!L W6) 1Tc렋"Iu+Gda@7k~`sR aG,Ĕ2($ԧ)℈SxOl@>ҍUb9%qbK?"IgquF;I<'l;*e5G%w${ҽ '^gLBFrSbW%KˬYl8ҊS 3%52Jo=-/=ڳ^ BdS7>{ԗ|"OYQά)}K/y~kЁx6VTt'9N!p̛⭫_xYVOE /2 9mk2qj.܆Cq@ |}/f8Zi役%~t3^0vWZDˊyv)rg?8RObf.޸{։{qG 7hH-qgM?SZɨbj32b{эvq #:]`x:6]ݤ8nV7ffeP+,-`舞N fU-f1A!4Dt`c"˖̼+;i {E-N\X9`_q])(Mt#'SAOpۦՊZ% -0ĐT&UR@6Ì0a$,A/qVjZux+ v}??ۧVd8Lėag-zԨvaֆ`(kFkyL!DXrb[԰to6t]x<3p}zNf~ǒ"{}+>/zuBЊ@g36qt ! Vcٲ4[!qN$Dj~=Y"g'n? {cgAJdBu=,>9D"WDSzu EނDCwf" Fo4E9"ljQc:|W޼ ׁ^0:7\zEY$ !dy9(L@TQ͠4FϹ⪟_OX cQrU.YS9prO ~,(o败-ĕ=癿/{Ma8";;~;n$$,jk6hV(D[xb5 Mҕִ:$h-9 h4CкtQ9|wSLd58f&g6Zu7ۅQ,>l烢'}wg׭s赦;!Al:ఏO%uv#hBwec^6-3s+BczUB\_ȪAd E_ 62jA%>кr"-6JJ+|sJ-Y2l цheH^A`& m>sW.+`ԧ/EXָ`/, 7У g7l[z 70ExWonLUMEKVsAˋv;&%%6)N޳w_\wlC` N8/4Z Z ,=ST7?Xbv05}N8TjzHK|arE Y[YH'FocMꊤJ.p)4 z\=5Y i »G#tI~ie| P_ӏv'!Lx&I:HP 8YvpB?ָ89ȭ2-$R|Ao:u*Sg$Jz973x[!iE5kcS%@q54}ZC0<,4_[1Λt5-Wz:)uK?~a_FsxTǺ ^yu^wHTv<:µ HM oE>S35r%>UߜsZB /;-a=Nm7؛ސ`~x;@Z\sUm@NOk06].ayǼp,$$pMaVh`3,E2hZ5š5s1:0 [A*Y.bԣzՌÎU[)>#1w?\ئWo|Vh7A?XfhO3[Tmb%zi~: A97fq؊4<]Xg-t Vj"yQR$_RَaIJQ=1Lx4\4a8Z_ R!Ne6 A%͵|Wk)2P6:O_zok^7OaUʠ wN UkƉU u/hBVS╎0-M)FVI&TPO뢢ZRPp1<9aQ2iGNO%p-L *=Px Si8bFPpt;RjCzH^h4JE[u%(2, @b `wW8D`-[sP#n[rϚܘ"2nX8##Fm-"xCxrWaNٴ728X6TdbP9k@Q?éW"_. T:5]O{r4N ꚓm%)&`Wg¡##7ן39# <~<2*'[v"dKӮ,lRVauV$LB3`tf}?}w.6Ҧ&uf [^bl%db  ڜK:XFV oLH걩,D0cG>uUE YE͠;Ac(2m.N X#yZ7"7$B7qh@UEH[(,!]U3D#{~0tKM^쯿G1K;8$@I/3``6`ǦlFi7I>jt{k_}+ ҭF}dwR>4#/;wdžZ4Xw>Uhmvߖ/c"mQoNÕ8sXKK?"9"Bԍjj)%SGRCJzJ%t4B&2 >SŝzcQ [0=?o]}voxr,v͠\uV\dJFO!,h9VǯE|vU # N&ڑH".=2 0>;V;CC=૛f c# Ek#_[ͨe#G" @/<\$8a03 O/g lтjM^GΖ㏻_??t ܷp7MMs*~ 3pN Hu#dl{p%M9xg.8-7l VI>񵇶=<_|QgEqWQrnGVPM\85G?T'oj~_l}ϕ"򊳷`NDq &SCNxV*9+Y&G,5/ i8)$y;غCByп:o%4DQgiu+Y'=qm8}H9dfm؜eHYSA)&-dY)(d#oA#Sw?Jڃb2/?Ъ aHdd 2V|xlГ&N#ܧNٮOI{W"L qr>h+v,z޵?s2`^|[/},~GOt~aJ\q-gd ٞ[Д_yK,˸iVNNNEj>ݱ tQzՑ¡F:5iu𣟜Пُپ٣dWov|L0}bu9z;C(~ð-JdiQ릧̘ٝ42= "pvK-58=p(0Jhq0._qǿwuo{6/MV3#ͶRvG7K$IftnW+,K@?u݄ hMQ;QKnUvVB- ,[bt|Oq.(*+'P:AwG12YO@;fC<,G69OF>/h^ëuAwCڷ?go>=z _?E yN'1?Ό :j_f6_0S(9^?J"$:tŹ=%Qڇqxb)fbfڪfh i:xGWCY^lzuю{`7WKˎ=crUi|]? نV{ըl`0"~a46rxN,_m(`d# -?ïTw}Vˬ˭lʙuelʥynHR Q.MIJlsXQyZ뱀9ƷQ ];H@  G2kNG"JA֩ 0 =%|bsH\Uр[r>0Y {,[[-@6x[k/{IQ| .Џ~r$S/h5)lKȹoc,yaeӖ r/]2ܷwۇO#Yy SnT|ǂj눂)[^oyoFn ']'N0ņ_}D0ZpV6ZXO|9h@!?Xi-*9wE%( }N 8963a %Oz71'}%WgAӲZ4S $^T]sf峚M`OD { F@,z`8_+#}̅ u?KC:D`zénxML=rMCVބKCK_+ȚG3r^ }} Zĝ!_vB[6_7H٪Ozlg0y\&EȫUv`Aᨆ^>oP@,Xvj5{V!D/WOL\X]b"B5!Tm8F1*h|I/oy qNh4?Ӎ36vRO.'x>T4HyE1J )R'p(ǽ3-Hj6 Β'{gs;_p+T锼$~5\"CXji}ݣdYi(*Z@Di mkP+sB-z)#~|?AZ^1瀀,&h٢_i ejRH} .e}>Z+VhK^#j.RMdЯBtCЇGA_6VPP؜.Wv2A鴠Q؋#ۧO٩.rTAr,_ +Nn$r ]žx.zޚ~_d5Un"vD#tzԲ$\O:XTPS"IߖtT,҈Trů|D֕aaq8heQVQ/l;2Ô]F V('QfN "!QKIas*&%D;FypFqD`%l۔)iZX3eF/nTa,Ro? 'F"vr{˟xdĂO87l@6$Ld.L"+RCVD.JPwkգP̞U7]9hCز7ے|Ma>OG88I.V! ȃL&V\C=1{}>;u"H4`g5NFSEQ~$\"25,H<"MIBʳyiQ1ApW8`d>HWU+3Ow? c_]E02 q[q)ʽQDZz.EbU ]@.zTis M2M@)Ҧjr&b< vF:CDY6 /免;&Ak.^;FUW1#޸Pe\7 E-;Rެi*3ɚ7ߴRKؑiu ỿбJ>})EL ~cˆHDI]ht.G}UhPi?ģwwz[WEVV}يៜkn c +LVI!8OROl1,ԍV|TA3CCvJd54a?O:Vebd d$F˨ hnj|5'䭾,@p fJ,NJNQRx/U캞 -+6,m4W.18TjQ 9fi?UE ݺoc/g8ӎknYw}{3 i;1r eV[Q "BGDvx/\Fh IVFy~>Ќ:9W*N׿w_SN(QO9~x?2% vwJJGC5c@Z2m@KAZX~?=+dci% dk2?!\suq;Frz,bHb ShK(iB͍F e1eQmˋA qTHʑRXt6ZݧdA$0֢J#4@ HŢeb28Pp o8CļX Ĕ)'J ǰâ-"Jfc1ORJS`>]?n/{h܎{ZeRLlL^6qn*|قFz7bi`1TG.31iTѠo4%L_f|PXn+RvSa[P5UtXY8 :By\C;㲳ߨk&Dʛ[Ъ5k"䃍Oxvaځ_oǾoEΦ.I2 HrطW?nl&kC9kBSY8}oYp#ᩭ{W@ PJe8C|4SJvlSx_yW/d_@ Kw߮W0ϝ;> ȡp {ArKFéqT]`Ma5yPXȯ>?2,*G7P%/$"mWU2NJ F^nv-.= [>#̦K*iO`~FKлweGnvv8s-gt!/:b2rBUه 8ACR$ښIHs;P<u04E4tGE% 4Q :i#n\L:qZWar޴$&O6c/$q1ʙ ִ">tv Ká#t‹.΍E2 ǚJITxRJtTm.osot_޸tHɜu_p1Jֺ$\t{LH\8RRfdoyZC\e.\gAǧ[@ Gc0 ?UlHPzS^)uc9dힿ%] G-4ibPGO "Su۔{%ybP/3~8υHEB=+qD ?I\k=yK)qZq,`39X#Ƌ$gnڅϔZugdbVoݯ뾭{\ɉ~tg?p[[c{Uۯ"hZ80`jFx,f~!0]>k̆Y n9 ~2o^tRG Bwi\%0UWw_20֚)bZ~uY-xU&7, ֦AK&-S+xSS-;:fCf ƑD q;)_ݯc?o"{|K>jw&Ԡ_8ߧ}1~.z?RBv!No wc;o9sn޸(Nwe0O:IO/|Az= 4~F~SF;L1[% `WS7FU[ +Ute2vRǘVP11򲴹buGʓ_X^j}7轈|yP$U'>>,#R4{/>.^'ysBJU&oaq$UKY&I@xtxN}e؝fW_ ,.&pџ빅⬫b`O v_eb^9}A~Hw<5+005 >t3A & *s0NxT+eݵ7}tu\lYɞI~gz> B" Y>s?@jO_tqTȱR>N'܈?Q܌p 'zK ԊTY@>Wrt`=ڞh\&__>z!PJ 3]]ڿOGF_MՋ<: M'L, .b |Rړ'NUw+9bxhz#E %B?>y*[H틩b")uNn" Rj8}]Qs͙SoMlxTd 7\3T bR]cS'ts@jTZRJKQwmO Ջ/pT[@|rrz)G;+F( MN |ۺڳ\rAj_p Z!ԿUuFg؋ pX5/*[03 N xT¼Qq>pm*E&5UrZv9@n/g |xqb^X;T$]&>_ˢeFŜcDquv13͋#Dn9D1=|a5nŰ񧓳wN <=7dqm_^o5~ .Ztoڎ~Y}7s;tDcO73 Wfu\Vu8A\*8x\0ө_1Mw;uV"L˨š RTF8= =).l#~o>JD`fY*P Xb||GL& #zi6χ"f( L^]DRa7oAWRUkNR%@sCprj$eٜvhXI[HI*9N=yAƕ#4 GR2Ө DD0.UƩzĨpxJ4VN9s3mmhoM-KΓ[.eyDIG1GI 7E5UrYE."Xnд gu8{灚Ś;#?a+EF]xMtph&^l2$JVyO$Н5PBe^[~Ee|w2,T==5_, } s͕ꋸ-->JJ 0KkRVؓ BגqeDr )S+MOX 'end29X;U fNO_KR"v\\iu$PѾ~4ÊkfԜ$g,ݫR7 &jv>s^>WXϰnʂSrrYnSk: weiGԢQM&>n?lyQqxvoB{F.Qo|b$ M_t-..)dl TaV=(Vm'{H 5gؗՇꋇk:9)GS=i=*fwt[ Yّ~Ęl4S5$zv_~mltӕ=RN?.;`9M-sЍV{`[&;#pgXH%$џdH% (8ris.O5vh50٠*aS=dmW2o֋4(Y˷l nm܂Щ L&2(fnWZ! .DCJ ]OK"x  n{i"SzlBJr ̋KΚQ-@zZh)]o*VcyM\*TZ5`QI; :^6.E&U̇1Y XW,+X) cY+NX@IsbtP-%tPʀ]ڎlaR}lmϧB8 4[!FUhWţk=uF ():=ٰZˍYͪ4Jw'W5ס3^!lHhL~iY~EݡY&^\ib@Ej V~i@-;Q68%LQもcӠB248p8s< j֊.hj/ 6\?[Q?k_Nhwj>KG_ɉG&ŗ&{JiGCZ /y^h߂,$x,Tw@*",t󁌝zZ&8vGR]$ ܯQfYX` MF=#\DiuVĄLF+@w-l`@3*kr(~aEUߓ@TM֐445\C] Oo#J >ڨӣ2?{@ÿnU1|)ab$h.4jʢ`z#fZ2bĂ'ݵk󁿿.&8ilt6S%<RRWFZ,Bqѯ*}CmmmZ^K,ᯈ1B_dl_6;[j{?3G_x2`NQGw%w?Zs≹J^FťYNF)K~JOk_z\qIM~ا={Dc^%οM9`ik'p@zf=ji3fNQe2"k9caiN_ɢvP WCqigU-*= Q=Ve N^za=`i"&sAZpwَ tW,R$%AI +gN!/KiEb}Ԫ3D}5Q.͖2j\}LhqѼFW?柀9#vSG,+ޱYfV1 SE*jL%g`2[Bo6 3(iV LȚsA $Nzixlݡ5&[0h8rˑuGE.JI>IlZdǕ:Imɨ耬e1:sG xa($L˘y1e~ӫ G#cN2Jh⮽<-ϛC;&x:bܩ UQG 04$k۰I$dYlB-Xj]`Πng,&Oi Ϟ1I|ϵt^~ꗰdݾ\4qW+3@ :`Zw^@vF Z O[μ-:ׇ qG: +2AQUD.6R}[FOJo91˭G[/Kqˈz 9$h|h/_g_omatS)Dp,5]8*-\50V,Ɗ[^hcA>ݳƠ[ dӌ됴^[}w 8Mk4:5m ˒EZDS6S R;  bP̟DB֞zh5QO385~lmsёM鵇u?ژ63=_~wGs0J1㤣:CkjIǧq.~4~Smfjc`}5JRlbWs.~CɟP~tK5Y@~m;-ۻnZNm3ZLZiIgeOw.| (J*pTODO.Ak5\ʷ 1;A2]qãPS[p f= R O VXJ/tXiS>@`BpAKHy F}vasZNJAr" Zs8с $ @ Μa[Opi*|!'3Qavnך:bZxn'p7ĬJ2n3k]H9Tӎ[ 1rpQ-2FoϿsЇyOho8a}2<$n+ɯ?V9ů/j]t!0WKfO1m<|B oբ!Kx݌'L}O5̓^t.> \LU# b8UkyxD}XJ4A>:b5~dufLL >p.AWM_C09袰S_>`9/دU7?on*̔9%Yći#,/ 9T )2ГH`1P@8.`%#AϧD]B&@`JTl7sQr j'ҨnXKvh3fTvp0>dt~]V[Oj:=$}]ǖᕇ#$G E+?jɝ; aVe6.rZɋ@+_.6\뇖~OoG/ A_NxI㏅졌9[0h K:4-cؕn{Z 2 WᕦwZ,">3Z7ShK!Pl{MG]@c˲2f} 8AW4L54rY9=I3gu@(@Q-6MpSziӺl{ٕ.qSq\Ge)[,WHO#DJDͩ"EQ>2ZIv#b|h mð3z!jq1!=<8LMAA|FvM3!ԤӞp6AEϋ엏<";!ySGOsHLGt͎W9e7W6CaL͕Z֎Uwu_`xjxېW%&TE 1$BK9z8O* (oZnʁh]LJgzgj2("q\/]ra[4FMpk s)2F@TsHI,+ AzSFx*`6 , $g|-:FzIR aŭYv1X~:\DTzتm>Pryw$nߘ>?y6P۩ˤ_p78sT>[-w<}w+/ M~@ȃmxs;'61c.`DTbwp)pßKi517-;0r86`'3. sQTIgQrC*I1JP.HLRMXW`B+C\>$pI(#*M\mM%z'|E"T1DF dJ53n<0me) 1$YͥU1',!#MhO, P!Og4{3F,D͒ÅPdk $ OgKyokJlj0᧑OD.g|$_dpR^złƌH(+`n|2]Đ."?eY`Мpc L{9RT*8=h;O=X,Gm+k͵;.y&Bv-)6ٯ2o}7&u|ԁzc~z$N䈥 kil$Z2 LQL‡O5`s*a ZݭNXz$I: yt0>9uRKRBάH p)IͅMܾ;TNXF!"15L@78E'PQ[+W:umqZt/R >d޴T5R/;\+?1.6v~}ԝڜ'-'h:-u{P=K2K }灱;zG])^5ְaϏ3[/z}N,ɠ80Y 0D(c`q>/rPM=d"4 #"18PAmtuh4L.e/P1;FcS4gB=)Ӌ4]!|G |P3 jPR: -w79z1&}G s.g^iR%,x H%"h;Rȏ \8ҳ6%0BQ/E3'wUYZTLZ1R8#}!OsӒ(:P@E+u =#O*9+cѽxyW0@7i7:QվL2[ B2U̺NH\g.eG.о LQPCQQ՛x81]-i V҄NYX~sc[z7}+Rbۀ30%*{1>WczLc&+Nl]rF|d2-( 2J㼅<.P2@^cĪm,gΑڡY2ʅ R+XL$pI `5uw΅')p824m?u@'l$0UM$R1//}8 ߶Zږ>(Jӂ~&p*"qfCGջ s2".J!@c8>\rpbKݸe\&2pvDoFٯ_;?.Egfm\"VnRdbu|(ݴv:H­4ȓ+s_-[oI3no89X6b9ò:!҅ϡǞO*_%og;m0XW Z0UˣDZ:̖B1 }8NӞAc/0gj@(jAy~%VR]`+bJw&fBaPYKqA%ⳌHjLc(Q+oH<A8JT2(`{N t53teO'`X7P:S#|]\FLO|\g$,lu@+Rt taNp?S;KG?8%.ߝ4^zAK/nl/9ziKӕǞJOz طt_tmNLuTZ.~qCEFzS 8Nw0P{Ey Xk=S׽L{QqaRCZHzi)ZX+EL˴+|ld0FȌ': [ 7aMo҉4"P!7pӳ+X8&p]`R.;'<\ J'*~* e(l] F~&Wp0+*HЗ3ʘCf84!^|T(&kvE Ki]{1P_$% (7eA~RˮJ8s3i xWIO{{ıt\9gO\ k%֧[+3ޗ 'ژyI}vd5Ca ъ|=;.Zv}ϓӻQ40A&A'NPTyi,ƌ{*}ڨ%Oc[ELJ G2\kS+òHkTثdUQ C;@L,?-(.Vݵ= [rJt_.GVҋ{h)›oV?+smW*tFJɺJJ?]Պ!uO;'/Z *2k\Ņ P~M^mϾ'O};'{K><2esw- ߪ{[G'~ϭ]vY=LMV8ROu/- ޳GƳrtrONm+ƽFԇtFOv +P]/􁫴}=q|G[lY6jњ8zse_KwSFOeYs"p.)L״ sUfڝ_ǾNs׿wn|{^5~(j9AdGt"̒Ry?gU{}x֬/'$]U+e!F;ռhrQ8:#>9fmzI-"m-5.O{K5y}m_L\sʏ_nʞ7wTjڑGˋ/;)ޝl丈i*@f0c3mRolY=Y[з\)L}]:zls:P* 67l]U6Xo5h2i/GD;E^ cD9g.\ݵ*glѥ ;3ou2Bܿy\~j1_9;8Ms2,f%GU\Y[ZܡDm.`/Ճ+"}tf6k{ 3Ujgy 2&u:7=lQ KZ]ِ6S5QYևs?{hG'cSr$O<9SOZ$&[Vv5Ne?pvFk(qj/# gol:ƨ&Z*c )9C?5'l7 zqÂ=Kf%>Rm5 QxV!GNG?F5MiMk5ۨtH5ľ=Oh\Sf1׬@=wv(d:dyc^fEO7?-Flm\šS:XW݋qub q ꢄr΄o%+}hF3bO:b(%bfIw(b jMiLRPVh@^DˬY6`+9, %}: b8m]gg}+?FTmӥp+ͲTn7Zl&Z]vu܉GǏO>[9ר[^_^wѺ0 = "#:Te`p @$)Hd$SD52қh kpu?=-> 4=`ӓ jԑβKM} VƊEvUh0i&,_o|8Xy?Fϐ@I#.z[ z,e_8!0w iJvsc!y<0`וC6x#ZР?fRT P?U\A.#'fc8چߏfטvɇg"o̎q`ޢK94]T[$N^}w{ج~)c~{Ubͅ<FϢu.kcGa,syp}'&%̤1o(]z@7~~7U^v# ܖJoIW'Fnp*+$Cksszᡒ3T3{ў52zȩՃsic7.c+t D=h"o]mgG^o9[Ez^JJ օAW`JCn=m`.:q H͠ŏj^nY/qT'+2 ݔJ, Q㩊]{ IV8 $ _UrUT`2.~n, Z"g7%u*e)ZE*WAV(GSzx;f`wޠfr&6sZ@i6 ^jJ3s+?ެ@6P RMkܓ5Ỹaz-?Ĝ[rI1o;A*P5}ua/sG_yug%Kuciͅ:?Ra0&/I5p`_ȁ@kϠ[ru'TN5A?PF`?tۥF[a뢾uj+$L("kTuTh+ՇŴ8ˇIWع(%U/e{c}}J{%>Q6.V_Ѳ. #YH-c<#+VUñs}.!':O={ u?t0L,1rT0ѹ-{úǸ$Qkў1{Zb̰'&J/҃.t&JzaհZfTmG<*g+7/O~`%+GaQ%9g>z^Ew4E'l7M'(D;q 4Ke&ZB[c\|wJONMW̉ 簶.n6z9c>&k̉rW!;7&70}J3է2Ο{WfdBUf3?Ve,nW%GJ,hpI+é]T,U$hkUET3H:@'J>V[wp {HH[1HuI~ՈdYXv5:ʴtb":: WCN|Ml/457Ve2YM5l@55NNm|>9 PU k^ӁgD)t3vUa5S({r^L+x&Ԏ=wv5}ѥ@4KY-7{:W˥6-C`Ofي2:qSt3't / B DK$Q@lz\zC~˹YېM*d?m࣢:l*f!,T1nو0-IPrTK :F LB=:=E,5GJQep#fSWW;v)Qe\т>ttq$rYa͟!!AKDo\= ni?!7/]:'ZdV>ckFM -#z1#/@$(h`kX,7J蛰E&Zp!; ӌ(c0r((y/ FF mnAEv9@Dvi3Xecg"~w/k7m#+Wo>95qd R Z|X&ޒi]魙M玬pdpVt_ѯGO;S3(jV3Xh"L>P&tRCh={e 7ʙ"Mv2E/";s~fYlB큖Tцg%dӠPI4`U~-kSb *s>bܲ&.Wd}/{FT#S~ݨ-˵`jҌ'LV',x >,IAr%*5;@q;.J 8?L$ZiFvq*&V"iG#oN ys-1N-kS+ 7L&&=[ڗ4f'ŷp\܉?9[-;Kk#d#sw̧vͮ(-/Mo`"7m*ΌYq]}s2O\یN^8n\<л%3)#!#9Ow^}؞UB-Z:{0t)ͭJԇ ;k6Xud3 \vqѼh.U7SMܘ?(tWs-tLLf^g_I-]5XT zgCQ rU0O@U~T8SRs5:YPr]cW'Pk3D:N222/W6f KCaZrӳڣsZ(XK`DY̱:>{D،gg*!-OR}>`k\%D I' \|H~KԴeĪpM\eYE/7#ȺՙH5F=յ]wۃ 3zOdȠ\ prRڞT6==0qrvұS9aF2ajF&{r:.}\NxS aQ9{3G6ݓu#2Y{YΧ #%P57_8Կ삾X얂5-"``zhEVI9#Y0UH测oX0r~^/R$ULc3+O4# \T: A`z2fY]2E@yrdq9%0-L /8p`ly+?,~+aƨ29,kDy>=`q}"{;KX~] 0Jo~mbBXjS5o9+*!xի\5xޣ+ݒ-nh]ce4CºޗKHNnL3rUjS_…On0Q٥줰\R"UF{iZ&TʁSꑍo]1i71HhysL4LC*! ʁ3A Ӡ^-߱`K琌A7`yyuZhd(lV,=0N&,0t[XvTS"m44p85xcfuŌM@Op\PТ8́m4ֹ ZZu)d 1Ѡy7*@Va"*U0Q'M;2O2c'۞" UJ4X$ F kg_TN yu &"o$NxGNlN> Fڵh` C7W4V-<]ʡ醠ЊĖ~0QrЭ5/yȄ! $Z]<XOlqOy舯5шO!4Ryhߞc>>47D*g/k!gg[,|`|8 ɁP"+Z݋ cLD&w6x:fJXRDNϙQ0/fx L+N$%O =4&OXI' 0aߎ C =6Uw˃rCGcĝ3zWɍh_ӭmi"νE[6Έl rF7WZj7$cvh澃ѳ~/H rZRhLWg?կɏ #<>cBUQzиV?"2Q:󘦍U~V0p#BDAjKtf㤮[t\WR[n GOt_JV:+Y!qJ鎑]ݫ`g׸ZT)@RRZX˂{ S(%z.fF5Tu̷LS ]\\/ώf_ dv7[r駵jq* XXh[/ 7 l[[r#Vgvd&Kh3`⁸Cߴ={ ~[Tb勯_w*,t;^;]ر RI=Ƅ>/}rv5SUϞŠH깣|7'm_xT|?{j&JǛr(iC[{y9|m:=uDv'Q<]ObSXf٩|_.ە}JfoUouiv%42)iũV$AGhJt 'ɼv$Zh8oi.GE'.䡒 L1)mSL9\WE7LV=N@'_kgz!QL)_?DAtkOK?(YӸ4eM֝]7࠸œԂ5h[eOj[4 Q3p+*:w,v(|9(LOk9MIpǭ ݜբ=wiEAA;nn=a N=1g-~IJK !)0&Q:6Wx|j$3[IIk6.6QMg4UTQηSG{o.Ꮾ=7,w37, :G׽"D尸}T|gS `&s٦0Es*u=uqH0m ϳ=HPn2 IVs޴_PtdN aڔAדFH=3gXhNQ0*0q & +0Q]:|u6.4{&arFv@D ^q4GǝLgK7ѽCsҨ%˨璭42T9 :䤋Dtxo<{n6{JA+^=֒xf>4ifkQѻ1a 8^Oκ d[<)؜PMՓ? n͞FZזŮH&=;mr# #B`D0#ՔMi fr@scM$Jl0ЊGG&(f81mT B̖ӇA;Kkdՙ`oP<>&)'HauШޅt إ~c3͒q9.lԞz=˻(P]Z ; hsQ]"^@p4#RH zUv#-6[cqj-e;Ks'unV;j!鋾;hGr, `ډv-ttG{KG k 5v<[FK>pɿ*s^l%`ԩrԂSROβeL@(ɿWCߊ1o ݴtc%mawLZfW "Ђ%FoT?mx=[:ɜ ~@0i4I nW z5,俰˪~v @!>'uGxsT"MvpM&'u1L8Gpޞl$vWRo[%?\a[+؅6`IJDf3G⩞Κlil.V sA ]>i;V~nѲꉣO?#Z`RD,z> {~Ъ%`)Jyvi\Yj/{5W&/MTD{?1qH|zt801e4 KRD˂3/)aƖ./]?΋Eҥ&Ez 5`Rjh/h'z4ľsshp* 4/ɬ,/J904)\ v7aj)/K KNTAOƝ:ˉ-<F>N({G4!6ٱ\Pd,XHB'=y"gڳztl5L༠{U j[ |: RvCK4D ǷnfY V$XiY_(fD|r&qѫm:^9.N9lv2Mq2^ݰU?8 _ ;4 Z|쉩tгڈH#Ip%3mowqKz(xyR<Oyu͘WJSpT)Q)Dۃ~oЯ^uPi(;/[؉?O_2^bCC;y%r 0ǑidPӓEd~}R$1;| Da1ag1ZȔ A%y-VaKŽyUUGx>(|!$XvpB< 6!'R ??rjt v0PʃdE'n!d f=hqVg,WhVAƳɋe}Nt\3rB@q!WA0[ccH "qU*[yRU@U4'H!\`1U {zgX87^eEζ̤+y0ezjw-/]ef[-tVjp}5ï:4|.p)Cmմ9yͥSӽh:Rid<Kv'_ijWwqKz5JQҦ>񻿉*0DٌݪAy#fb9ȩm![mVbk@,gJ2PNIilLGFk !^%ف)`'ᡵ!j$1hGPv%2D F>[*ХѢ,b2o`a%ʱƷ$,dž+"uK`|`Jx&<Td| y]@ߕZ P 6QȷTFd9i3zRa֙Kdf0CtA"^Q~{OɲfNR%GW+afљE/() 6x'~m54oLg=2(@e7춬)XG:wSF]XX[ſ%3V??3{D*fN=A -Ί/*^׏.-C /ēO|#;{'sKω7.kކ1CajLWى)YoGg%`8#2%"M}1$ke =7@B*" ,yLdCq[FCqM+o"l[je? ^OabR]e?e٨$1hg":~;*4% 5jנϨ pCԽ@)\1x< 2}9;U,Yӿ8%`ߺEZc^h=2rb^7v%cژn ,NEʜݘA4ygl{ k~F״`hT?,փ+HZvks~bMvF :$Jmp茈_+ ]+(](/W=vl !'K3'對ind]4keE;oU>:oZ|nFmԷD İF% (wF-b "QXBe@r} Ȑ.0I736*kXQ~xvF՚H"VK [jBb- 0FԼIK@Ij|n$e3Bm< QQѢfZvF|I_~ a jӟN>/bT)b:V:h2cQp ^ ϐnbT`~xh*h=>uUEе;QfŪ\0; t5Wׅ^-R'BχoL%mOBXz㡬 ™~hz"H=sr{!whxf>EPB Jj˞ g^/n]_moP!EˣlTNn41 ㌾/۲@2c:̴/._Yӄcz돼w":x@r$y;hecV|]a}Uϡ(g5}-1cq R Q- <*žlk5Ċ",-vW597݈<3jgi/! y=K@ e_.D z+RQ1@5<gO"FQ}=Up-a=t ,m>"d6;.=C[aD́1c?nt9Z2tjo ڢFYN[OgBL[ }T >1Vj^f֕Y-]DZwxw=zS Zvu`:`~4dQXAlW\drK[F(/o<@y,:c"YN`&<L|.LdF"B,B.sZo8chhypIAQ-bQ6*b(c+8jXI]wW + ϵ[Cp45keMػb"z1yQ09%]rL-$4[{IgLo1`Ti`d&FN#4aʌ^e؟:Ir ~< ̄.K+=E ƪMz"lá7e= _Ǡ ݲ&FD86$l0 ~Z6Y>J{ cND@lعsrxCs+_k lh8NG:\)bu;!1%#1\^ _túuVKCoվ_VL`dцF rPӓb}en8*tt[^F\s*Cqq@W!cB33d=_6ZeXhdYycAP^,a-iؑJ(@3< EKIFٞA}W"!.IĽ\HiW.R(~(щtyv rTūiqeHDREZ`9! hUAi]QVDq:-->$Xu1gA-\li} U B9 |PFPe?z*SSv 摑h=Kϵy/#CdviwI(6܋F;jevGDf *z{P[oZ43s^D$B}:ѪfC<+ߒ;9|ȑ^-4,svNRuQ!n8a-4QaJ#n6kV'_zYx& y4{$eF-6uw_(lh׊[SIsR>QkzsWBWIٹ39v:$)fu+*/5o`V3%f-g^^{[3?rU-- nH9&*;>m{4kb=a#Zlmsq 3zp+{޳i`xDD;W ^ p݅7srWA|9ypO*mS1F xF:4ҹq]fʡ[M Cnܬ4T<Ӳ 2ېm]l=2@tI9[ȶcc-=׽w_xn{57%~goI-퍪oſM /Ί`(^ҽ7)}>'9L6ie}n>:z"bڲ(^;A&ЇZ;qEdPed 6ĕ%!E*5aGGe|.SrŘ~eu!3Uv`9"Tn%ȠO7ܣxeBʩQ' "*mڎVZ1^Iӛ@qSϢp||)utv;uMCſ4q^€eз+G_BL@VX(j`,{ [ۏ<}3ͅ&$?(h'\4jZPL0kF}MW7Wuւ祉~?87!(Fѱ8~bۣ 3KMmY\pp5}ڦlvQk^LA>~;ߪ P)b|1[+EuhP%X ''::M3z_Kj)mɣ]0@d@.+rV*y1}@B.]k7fyYqC,"u+b} c)d q7~ 9 \z6ܸw؞=/ZK`:bQk~|ϼ}yhߨ"q[A/8"㻥~+ÁGZB61?MKQsnS p"1@ ŒZFTШ]z4dmdzߜn3%|ŀǏ9"^lyIB)F`jgiTãAMKO6m-o,b)'~ ;}QZ$׮^}ju7tI_o{g{n@b_ӃZZlæS Z?Nt3݉^n}~Q)GE/`K>f#!QE'^9v,0'#4},?rqT_wT@Y8`ٜ<Tʎ;|TOE׋4MO?|[@qcW~[Fs.- //˓\o\]f`fW&vn/>U9tn>POc@קɁH_a+R8 #z~{Nw@Or6 ]WǍM%udbgGckMA~;J : Dl諧6=b$na8 Ja }&8>p3zjG\s7 !VZ{uɇ25-vs*l [%jEY%01Ū /*Պ lVOg\:2o=$%Rծ= ]ZBg.#7sg]H_c%budJ~if0r&zĽSWdgcV`Q15"BQ&bc^h I- )c.^V\|KN蹩g/|2͋zۮ%5kyUksWC"ޡҀlQ3Z-[#S<Ǧ/j$*w'ڍR Ŋ:X%(3P~$E}L9sxTP M|-bJwr{_17$L뭔{ < N,!IT8r m1UŐA MdBA:+bq|"pJ HU g(D eԌKu,cQ75LJ{YuY9b|M2Ĕ$0WTF/n~ffCQtez6Q}~t}OZ )L(OI۶̒u^/ILZ+7>S5DDAb5N+ r7H_|~¦ F^6um?OjZ6(X|V;:8%MF\!E髼ǦWƂJ{[ 'hX՞8$ +X6@lhS bO4 ;H9i59'CAKEѺ^2]K.lMʒιҢ\)ET!"+N+zgT ӢLʇLV!6;HPPu23+o P):W݇RUd,}YT7@GEO= >W`'">|g. T)R)x@)eT!+ݸEш=b0#ղ[ƨ0H(,i䍧w9Fªo^*F ==N-K:D2vUjeց`Q?T3YW{vkߔ!^E=}k'IOekmVs.sUoF?DVoY,];_U3"kfI== ?sDum S労;{.E{WspK򊕘;ImtG^wh¢rR?oe @cn&++Zs?30v٠*gɡGhYrI,;qIR͊: [#Y=7PەZ~ۂA9qx"Q/bx0rSL>G, 7*;B($a̷K` V@9ɹcGfhҷ'e;l1jG&BicCojyeP6zo]_}|ǎ·~C_wo&Yڗ%k,6f36YBp` L&3L2I&CɄ@B„61/bYVzګNjdp{t"\S91{vR 4ϥ :f +jڴR> aqm~N[7ƤHƙsǫXUstD`+0 %;fv7v$IOT)o^ې捬DKl I -ԍs7:p:SfF}{Z?o- n9y[ـ?Kݦ+ohpD\䱻GhFE VX׿;pto}hnF"nKR"ºH:fT?WpÙ3Ll|{_]F(4 J)/jA8=к@mPdIRp+?!C[nף9h@1##K%&w>E*Jɮ?9Z+ISnLG tlKhe KQUͣKj5Plsة¦1k+:Bb\#RJC5d$@\h211FB4;c'l>z~MX"DHOi4 @NzRPmԚ0ZK+嚋3a+0Z!ʞ@r)-w0|W@hcDe($Ӂ"?\q~)4ǹv/^yXNZ]6n:C5}tL6ƍɃ}lR'}g'k7_޼q.Òfw攩O,^E4p@!? s_a@Ksck>ݻ3c:yc|4s9 ~OoOΜҩ<u{)cwq?7YqsftRp i%%_iu:VV 0Y+*:5NEd9w R6veDVBUH5H!1u7;+PC(aF5!v]p+Ӥ-{V4 s„lcSF㓍ZLı1i`x^K@Sj(.6E&`P9BIKW u΅Sl(bU2 iB%<ߑC] k-m;UhFŒ(p!|)*2U[p4n_{[vV>*ғ>0􀋞 *:Otz|玝W!sCTꛣamNvVpf@@BqEz_[\!g,&ZVɛH~ h)g D%-v$D]yokףez16D cgQRuaIl 0c&9֡`}c&b\&aiw6Jk!gS9?%#GN=sA֛f UeMK鎚w(Y!/Dz4`V:Ts F!ht X &.)'A/B+JrxGxCӊv:lJPJf!Z< U7{<Oo 1jGngJY2]]/ i[fhIc)L`3?A!NV8g[-L[V!DEB^[6c cNo[=3+}@[ƈa4b9oGB40fc[i-``38셄Џ M*ZEfSa/Ok]_ϬNzi1PZj__U8R[xTcyEߩw1:hUbJtw\ I]Ңd¬<0rT.5}[?oH:^2 LF\.X&yO_=63,O;_lV[4޷.`E90ϋ< ZYuLFA!Hgk͆?SPöX53SY<>&OVjVGJJ@?'@jӆB7w⥤ے\Tӭ$l}8P詓SyRI6u\6Ts%iZO24եsj{n~ oĎ̵:O䉩fZr ϪvPX5 B\Cթ7"yS;H{#oFPz]R nv0ԓ*=j._s 03殀05f0R Ʀ| O[a t>Uw 2WJrXL7+:g^UӪ} Qqq üIXljoI+ ckBҡҌVX7yWw/M)oi~`7A+XZ{l7.PVD,'*+^Rj߻#Ph`_cͷʑϠsz3Kߨ)rrHب@_E(Xz^K}Қ|g>_]L5߮ڞ-]h|ŧ fv9zr7ڹSop^k>jc2 5Xx3!L=pxD خ@@iD)9; zN ݖCPh^\{ Tvdu %)D1&MJEz@S0*D|pk8E ;g\ Gű*'ikIj+RtBV=h;b.h\*>xbMٓPFQ.& }l+?}]Jt~mVȧ`KK;xNpe4׋F_^5ޏk@􌄟{(U &@wɝ4F%9T `uwY$H&g{9>g&׾w%zr;t.ȕ(qDYX0_y{4;BڹтV^]2DZ95!pFn CK!|, ⻩n5t:ciI@nj}ɊN\`pxhnWZ>RRID&Y{V@&g0 j/y-ZÒƥt9?e /pkȮwz.;k!쩌izJ[Q_ΔX\r?Rlyh19da Ah}wlJCAngDhק 6nVV܆hy]oLMKDzڠ/ &+ᅃ`Hs Q. 'ն^ԇ d9~^ssvZF6apf֑kn}mƣז|brk\وF xSؾa0};_9qĶޯ>3ej p3N2Y137rkL.uFA pH r[ U t=HdG"{tfF.;I"ڸxz6ko 7LS,N10!TFEJCjp3Rm-k$T̗x˥S)0\Nc p%hYԉZB6ɸ  ( 3cd M X@*h4v etVE4щ n]ծT=KYX-?ؗVn4}O3|w8lɄѰ?o߭KCA7G~&1II;z [Ң*UB?Xv(ϟf>4?C[޽ڪ=q_s RϯH^ۯXm$sc/ztm|W:Oj{h}^ZVSIvp 700P @r-K"&2I$uVi8z,ud;iYI^jjvOM/+ Ƌ!kI.J.Ci*H8D MÒR +4ZNBϞ?I3Ɂ*H)DCs%mb4Lsbc޾&ӂ90 95i*FtRՏ!]Yl**O|x^򊛆4yַzuWoW_,&Aƺ*\/ Z%VY7j#;F [(ۯvn oݰbwsG;6[J:# uKq77^?*D"Ǐm]*挔lrRKK *w[\CH"ͼƬp[n{fMϤRfB6~RcvRM9tDKhb lZ ҹ(ǷQfkK%!|gt" J lj.K hUEf{% lpqkIj)÷Dn+GvvZyv!Q1<*"#VdXRkɡ\W!ܝ;uk6S,YPYP4.c ˶07.$̨1r(E`,6,NVsSvͬ5WڲgHʜ?\UԌ NhND~wݱJ-e8p [<b2 ^y/:`,u#7^wů/ޣue7`"a pzdĽ?~/=> >~מ\=ǜ)~X6Z1Tl<$T'1R6oipO f H+DxCGi]r;lDADaKIÈل4Îuw褃ln8 6j:UI:̗[GwQF 5j+L7WΧyy1&E[q=甼2B aYƠnLҍt2L;!)01m\}MpB 8߉d-kHēwCA UT)``gHL&vѹZ\RGך 4ԵD5Znv.^V}֦-Ķ|#wG% z ci^*Xvj_ɻ.3:dgv1ɢ5V0]i@+B35,oƬd|ypx׽ȃמ^\ڎVJ5-tVʩC9ijSGkw~?/ԟ}G uiFmX]sudqԈV{@PPŌ5;İ *`C1߂Ǖ&"=8XJgNjeubܜC*H@NRf-̥WPGM˒%UnL?1ABaê ;-e5pA(R0؟K)wTM4lE6MT&S֢Q}TZ:Q+wSzD쵤&`ԩ]ho T:uA8Mw-zHq5#~t[(H}SR^#9Si_R#i}HۊAٸ7ЬF %Bl B 3 u@6Qmܳi~ja^=|h̋u@/ /G ÷[ %y=<+"1ksC/}woH; d3t 01Rrnu3 %C͎ap ݴ 9=1 TyxW7uGKd D@r MDZH mghe3=]ɣPxz:?e(.'tUV!HEmeK&/$jm޴S:U-rE?թX" i9gNT")fsh'u"bs 2nT!/-ŷ!pE.v:Aߏ-C *e*2 Hr}nj'PV(bnH(- ˰^o3^ bL+ž52:tF0%̀uJVIդAJ-Vpʭ붯ݸa}qK~<O[m\8Y-s:Ϋ5e3cF)>4쵽1>u |{x" %~ j͡s^4hx#yA1(L'lK"un*tVZXs]#%hR6((6,bE#G)ma {64Dga$5GҋtlTuKC t\ܸr`Q꧐6Sq>98(O5nn#U D&Jkh'dGRAQٍj$R*5R,Hw:4*$R _op00لXdWkJ1oZ鋻2e}Rnv znhUC䷳I"e&Z@Tz1De.:+4z3OuEq s|{}.w;~2&5^_ ߙpN 6?$%+/yk呔:||f6׻ "x\Ŵ|XmmV D6|t6Zźy d:UW$霝,w}re>}&;@}J7Uj_c ?%0ۀmĜ9K_by#6'ovU |1ۀ+hzΞŊܳ/1f8[X[A\Tx(5wT X6 tzrf^(5I@ceIj:8K3_ߣoҘ [>oXB?rϏv9?coֶ %ڠxNE¢&!31"9o3_ȵ朅 {mN&T W v OϜCD$RjT':;%uυK鲬\8Nf}_|:9lCWD,NgTyS{%lӫo:ndv{pPwT"v9s7^Hky"?P_ЋLjF9Jj64}/O~nn 7-thobtnU dhE/3䵫( S~K@C +$Ak5+W$hC;Oz۞;i"QS`*v.R6+֙ 9k}s>i;{xEʛsR,;p7)`/Y~X]¯h. bRždI¤c ğ:<$r;p~crzHTb$W\Yu(gcpI&C/ʏ~οByu> {)S/7?o𣡡ؖppo*9p>:ҙ`u N2@SQ='[Z]- L^ fμUml\}`qs2X) c_ibY{.v Df)EzK9,_޹+ɒWq%2*.Ϸ+{~ŷTjI^F>]/{_W~;k])A`<}ts&i[}WȸL^JzCvTGB)Y#!Rŕesw@,ߗoҩ,ΪfW?cvm\p sr_}w*޼5{$k ) [J¤UB_\+"QO^{ F@4"˘ eWDLcM.R)-?xm!(^7.įxKn:ٯvK]m?/>q>I:~d]֭æhFab?{l9 D=҆4NB`l<`!$tNƟ<Ҩr ı+ή9~՜+;VoAy7XInrJqZ ^"Ȓ^K8Zj\Ծ/Ă"?1]_{y(CG 57?Z G?8h~a>xuM3QF)Gyi̿%Gϑ3yLJ/ryU#]AKwђZrzWvbP@xHml쨿k)MS>]X*i+}w[` Y\BRs% ȫб) ~%C|9dURWz˾#]"nڋW{v>~8!/aJclrLjJ2/]dZ94o?ܣ-NZ8!v\+J> mTIpt7EqϢ`uZ& y-]z[NEs@.7&9& r W__eyoT첏ЌbDJ;E__rh){2z7re^Fgе(xeor1eދo#_ A'k۩.:uDⳗ2K1/Zvx!fX[wn|w UH /D[z/NWN<Ƀ|)OKhbW/u˷R Ĉ<+#Ib7J Cۙ"*7oPLz X) hK3ƺ~MN&)Q곁T~PJc.>.]ZV&B+>d O@(]&7pt1~&t#"qdx1^d;\Y}R+TԳ8'axD\fO .RwXX۹5I"aޒd@^t8.Q6dvK rc'TKó~l?]r%fĥ¥{{"m?wο|l8n.ZY,%Ⱁ$cmj4iq3ɇ})DcAu%%Sņt;ϓ0Z;V^f_=)$x3Xp1x}OAAѭ%ZjvC;yKh0Qۯ۞R MvwJ}~8V==IiHd=AR@ WI+I[J 85SOKz%HTVD^ Za @ԀSd.˙0ɶ“r `?OQ+6/L{I%IfIJv~#Ĵ|!>B.9_Ixz|n<^q)1BMG^U#&nDVuxXoxc "\/=/~yr|kuVE=Zb{'D_aD:NLA9~ i$PbÌj!H|*Y9$T{ëO5faqfN_#7\JӍr凲slX;Uu㬱U9P.9)g6XߒϬUe񧿷0)J'$}&s3^zE%ꜛh`ANNȣ*7_7*<T9ñ3UMcpgVs_ZAI͍Ђu] ,m՝Pw(GsIʖ Wl< 4 GBF{#dcƙ}'qr.8)$BQ!KB3DB24d ė}'}U]g6WHDž(3P4"źR.i_1^Ic ?)aO B)';a-5[?WGbZ37~pڦnIcYyݕ/|/~Xai̓WK1^3j{_?vp5letKwoj2n;e({3_?|NunWPڵipU0lNS O}Kͮzs;7!p?-?J}rGT ,f䙡݋W}RڷJڪ Kg_kAm~R,zddGqiIIØscő?lD _DĮ4"9^ ǎE9/"sW*sVH<;wHT\%'q'E* BQxfp<8A=V=ѿ<-0iGمZZKJڵY c,=202 iώ/ݺu}plT3m/LOɏ7߽F߯vf) 0gD}s/LN.3Qy4}oޱw3ï={r~Fxzv<7e>k T=1H{WmN}`q׶vedsb[>pi\y6Ͻޟkӿ=qڏLNkDB̮|ۮw|wg7ƭp6'mp"XFbmIUL9/,̝tNUV7j[# ES|P jr؝r]MEBWbDT̅Nk<4l%$ ҒNx .4F/֡pož-iL?ʝ if?g_hFR7씽¢6eR߅r63~P!r>~h/ʕxsÕ_>Z v]E|t]j3 ݑW1vI.S Hm@B6L)#R[;OP(5 BlƴsU5&ƹmo b~Û~-׽aà_٣w߽/pb ƪQ."ݔFuTWD2W&7}Oo(iUq{ngn<ݞVJ!]uWJNQ @v3 ĝ 賵M{Ǖo~ )@&$K[T3hnDZja~>P'B ̀yHEPYHMXJJJw8 t1(TDJOlW[kZ ɳ""ҷPQDO/(дaLT'gKGITfayeE^+O)М3QqM>,$ ,(TPbl`mO,,}i2fCIΙlMe(nH5 )9X5[*t\{bVYCz;>wy mX,4hM0nA?z;{߬Q /#u=BzˆfjWLS ]5zHl9/7:uX4zĪTwCsC?L;-itꝻn̞k:07_yu%a}Օ`6Qjʜ/7ނrG85 o^z`TC0k!:$ӉL !Lx8Td+6BeiWSbncqp}lãh8Q)[ }RugE[3uRu %H:]5Y[i4j^yaJ)vIk `ɾ08ԝ+պ'dT;%Y([鶋12g?ɬp0bf>0>tT،c}dRO M`PHLpOI4?En\;Th3̆p遜gu_>:oF)O0Vy9X8(R$aV>ڴRpR`i_tG1y=ةwӄA?Df4 4cmpZ+[< \fƻ7`jnϮ'M akn[ϣQ 2sCkߺk#8N62C ~tVJԕLf)So"q[T3A&y{SGS:wįNoJMRZ7HͼԄQցn\ W \ Xj)kOdL9T-HD.wШi݊ 9ORGyJ An*$F@Imb% E/.8-y~$PN{Y2F)no98a{S\>>0jMyXGoN[^M"m@lq2r]G.L{XDa 9j՝'Ox-?e" ivәsK@mr r >żtTu/}嫍/nwg*m!+HQ Ar؀iɖm3];/no&$5V)HvD}B8LFfSFSȱA(ߑ]܋_3πr,VJ.fI#{#FTIuurY SX[ ;kL;}],^_b>)$ 'JiGB%qD*|Xz jT4QSP[ :>HI.,Op2۩>TJ{Ψ=H[ Ds/J~RRυ&0@~Rl`|m1I狵G*J>XK)@T"MQA#&XNBTnRؔ&*"!-6t\KWc){FbZN "+2Qٿ N}K'~ 4v`E+9$u n@u3H(Ru$ozg g6%}~A:hk|m^+=vH~?" JЋ HSRsЃ d`ʈ]vҠmjF)3o364^vSE'=NcAT sH?LVr\ C 4L HwVm*<33HJErG[ '+g}*)KE9`ߤPtD S Z?aQZ0"wҧ9 `<xZnVĪщCS X i4&w ~4 aւK&R+tyrfKO>?9oM%9ݱVS[-߈bO&M ft's~8#{?nW~HM7~}IVrzf†*ˣUᏴ\?GVnȜ2O>7KʔL&$=4uLh9&<!QöbJqjZ{*q35- .pNW0^\CF҉--jYsqsCo6ȊN|"m*@ɗ7;Ii+gkęIk9y2QLdX1qNU D_^5#qiS B[ĴI~En*'DP}}}Z>E X&e4usFH9-ïRZ;?'S'ZVSy) aZ@H&F4 ,V Ǟ[RSK>tޔK֚Dcٖ* s>=яh:Sv(R^"'Gy8.HV8a*RޒDx#G6 2lŕ/@%*'$)ff%%2RRLԡͦ[-d~_衾 Vr X4=@YX7J\%t;SI"R^xPPްs6ܘ1"I"`]$ĭqՒxqaVDHX;W8 B%j/a2DF,#/ t#8~,RAWRDža KxE鎖r: jUz}nH=ӏ6/F& %mN"U`<]1^_yß~X{zϗ~i_[T-+\ c /1R?Sbo~nm$vԬbYt,TD *>wrJ1V;AVz̆vu>dvlXݤǧyRKt#ꎚi!{]/21/DBq$Ǫ. | vI`kUw9z_!Ϥ) = 5:,"RuM7깆+'m M 3T^KC88'dXV#0+Eƙ9 ͬr|\TN 8Dڔs)hPlN> bn{eV [n+` }ťŹEBo!͇-E6^JO_?s4H_ā/DLG8Q.g;7~`l䁏 pGu߮?-d"Hv0lm(2R 3>YHʿso?۸:0I&eʖ!pQ&uF5 @I`^ MH@BAW:zEQcUxjvnj2 g1$,;Cf gY 2@J$wRZ-_Ѡ nc!FxMR`,:HZ(?\o!\fWL7*F#.N᱑d}ְ|±R >N7zM_7Vm A>ћjmME(!_f4C U tq|R3j)]4A܁tO֖w6" zmWƷ&Zhp BZ@*4؊,(@njץHIWʘ9)--iH]٩aY:,"%_zLMt\'##S!r2=+G7ʹ9 oe)M }tTz6|p^Ե"%:e~@|qS4X@A, p@P/-t!;&fKl M6!/żV̴4p<#dlj@ѝf,\'F/\unv"G~̴fEN6+ULE< lOn5'DH)7a @AI>Z!6m. f;dqQ)5Q9r$8<#FHΉS/X =((=*VX"AtkD6> }|+"J;ӣ-DP`tp K<| ]\鼈S2@d, tӾki&!%soڵz[#slmr9~DjLm=*IzƗcnu-k/)pH F5w/3ֵ0M8KsTOߣtՖZ]ji!>TL7̡KHDLrPTH&Ls8F!q+#w&/ إQ%gQ:JHB#N4Bupx߱#{-LFPXJg(g*\(g ޢmY8PhmkFWt$=|-jWfaL#p$GAyoMtuOa`5顼U@VlhhO3&MwOt :B[wVg(׾j {lYŞ^(klTN090q?Eia)TIDATUr%`cg4)=(Zq] b?~IJ?VX ÕYm}Wڽ*CtʺfVž#}URb9uF wٲeȪ,QQzs /}i'X }t-$,J{E0prt@νlP37ɯoެߝ l^_v? dؙ ;ٻetR,!qEym&$<*Bs.ƉE`MG3 *ltb';\65("10@{軙rUy/G>ww8u1UuMiI/WջqJUmK@qA$ؗAJM_uJMu\hiy  *>#g2˶|"1K#!~m4bWJۏ9P@,vInΡ.=>=P򕕍 e!{ė^;xcVgJE{mMZTE?:.ڀ)M7x|>8Щ~;80U cQ;*/rF]HX ߠʓ|:ځ|MzW<փyP~s=u7YihJtSklx+V16jHٗD/_X zgmvOD9Kʺji{ [iɥ7q0KdtفE*6c'/=!*i=9G?{j`MkУCC=T{l-72 y E _mz݇mG~u OQkVir52jG嫾_l.V.Ѐ~/2(:L UŅOP k*(K'v}. dJs 78 A݇e`Tx'vdbS1ëAfa!b *.08'hbLe *oDD6Q-6R6>",KH<.v#) e.r#|i+r~c!)I'b+HxmNf %|tVԗH߈ĸ*dYozVe/QW<,'7fk@h Ξa!of[cN6Vx?hQ|6);)8sɣ.~|fHDN7CzwZ[2._K+K4P#[Q^MH%+.&% k`G")C8(dX|H1f RIqUNFrWP^s&HY:_/{SqbAyp]~݊-ha9e_!N+}= 񍓔Y玃r!jB{ҋB\vҰ 3 %!&+l.$1 F!/COF%5Q)Xp|uP|T)oȔ/=&kKbzrXB{Bl\eK%Po+KBzvd:?B;}n$Ir̉n<,9\m'cGO ;lj{$ i1Q"U(*zPZs4ϲ)t 5 4K{OjF]+֋9Z0Q`˻$IM Z$|Q6+$+3zA/^)hXFc4K->޵XU'Y *6OkWH+6wzlˏ|J{@y:QM@`D0=waY2zH\J})e%"~dmzD뒝& Dad-cNiz,z7Ў,;[\ܠ : IENDB`Oh+'0T PXh x KTVRroot20@B@3>@tDx@;rjGT(q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\]^_`abcdefghijklmnopqrstuvwxyz{|}~+.P҈+nv(Z =e_ZJ1G -GVBNB)x#6{T>W=Jse1)_>]L}. m'S=fZv)  h`g*1<`q'b%`o;T{=(d.  3; 1 o2( 4'zA7#r      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~c ddSfffh iimmmi=XXXXIPRW!Xb$$cdKd4\b$Sf(d+@F(    NA?C"  TAY?C"   `qqC" N s *}k(> %tth' T'$cT UNUT-CH-1-SECT-4.1UNUT-CH-1-SECT-4.3UNUT-CH-1-SECT-4.4UNUT-CH-1-SECT-4.5UNUT-CH-1-SECT-4.6UNUT-CH-1-SECT-4.7UNUT-CH-1-SECT-4.8UNUT-CH-1-SECT-4.106-26-36-46-5o2b cSfhm= @m  cSfhm=     OJ QJ vhhOJQJOJ QJ vOJ QJ vOJQJOJQJOJ QJ vOJQJhhOJQJ88OJ QJ vOJ QJ vhhOJQJOJQJOJ QJ CJ^J aJl88OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJlppOJQJCJ^J aJ  OJ QJ CJ^J aJ%@ @ OJ QJ CJ^J aJl  OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJl88OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJlppOJQJCJ^J aJ  OJ QJ CJ^J aJ%@ @ OJ QJ CJ^J aJl  OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJl88OJQJCJ^J aJOJ QJ CJ^J aJ%OJ QJ CJ^J aJlppOJQJCJ^J aJ  OJ QJ CJ^J aJ%@ @ OJ QJ CJ^J aJl  OJQJCJ^J aJOJ QJ CJ^J aJ% **OJQJCJ WW8Num2WW8Num3WW8Num4WW8Num5WW8Num6WW8Num7WW8Num8WW8Num9WW8Num10WW8Num11WW8Num12WW8Num13WW8Num14WW8Num15WW8Num16WW8Num17WW8Num18@56=XYb 'JKPijo *+.STXvw{   12BIbcf|}017YZaopw  ';<?abnq *+/ABGnor!'ABHhin   C D I _ ` f  !!!!/!0!3!I!J!M!^!_!c!!!!!!!!!!!!! " ""4"5"9"P"Q"(>""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""(>PGTimes New Roman5Symbol3&ArialILiberation Serif7&CalibriIFMonotype CorsivaW&Copperplate Gothic Bold7Gautami9FPristinaWSimSunArial Unicode MS?&Lucida Sans7FiiiiiiiDjFjXjjjj$a$$a$$a$$a$$a$$a$$a$ & F $a$ hh^h]`$a$^]`$a$^]`$a$^]`$a$^]` hhRhThhhhhDiFiM 0^Caolan80 =WgAWll8t=*0L|M"X#d $440BX<!^]8=$2lT3*4D Departments of Computer Science & Engineering & Information Technology OPERATING SYSTEM LAB LABORATORY MANUAL Common to CSE, IT Prepared by M . ARUNA - LECTURER / CSE J . GHAYATHRI - LECTURER / CSE ACADEMIC YEAR 2009 - 2010 (EVEN SEMESTER) CS2257 OPERATING SYSTEMS LAB (Common to CSE & IT) (Implement the following on LINUX or other Unix like platform. Use C for high level language implementation) 1. Write programs using the following system calls of UNIX operating system: fork, exec, getpid, exit, wait, close, stat, opendir, readdir 2. Write programs using the I/O system calls of UNIX operating system (open, read, write, etc) 3. Write C programs to simulate UNIX commands like ls, grep, etc. 4. Given the list of processes, their CPU burst times and arrival times, display/print the Gantt chart for FCFS and SJF. For each of the scheduling policies, compute and print the average waiting time and average turnaround time. (2 sessions) 5. Given the list of processes, their CPU burst times and arrival times, display/print the Gantt chart for Priority and Round robin. For each of the scheduling policies, compute and print the average waiting time and average turnaround time. (2 sessions) 6. Developing Application using Inter Process communication (using shared memory, pipes or message queues) 7. Implement the Producer  Consumer problem using semaphores (using UNIX system calls). 8. Implement some memory management schemes  I 9. Implement some memory management schemes  II 10. Implement any file allocation technique (Linked, Indexed or Contiguous) Example for exercises 8 & 9 : Free space is maintained as a linked list of nodes with each node having the starting byte address and the ending byte address of a free block. Each memory request consists of the process-id and the amount of storage space required in bytes. Allocated memory space is again maintained as a linked list of nodes with each node having the process-id, starting byte address and the ending byte address of the allocated space. When a process finishes (taken as input) the appropriate node from the allocated list Should be deleted and this free disk space should be added to the free space list. [Care should be taken to merge contiguous free blocks into one single block. This results in deleting more than one node from the free space list and changing the start and end address in the appropriate node]. For allocation use first fit, worst fit and best fit. THE UNIX OPERATING SYSTEM Operating System: An Operating System is a program that manages the computer hardware and acts as an interface between the user and the computer system. It provides working environment where the users run their applications. The UNIX OS: The UNIX operating system originated from AT&T (now USL) in the early 1970's. Because UNIX was able to run on different hardware from different vendors, this encouraged developers to modify UNIX and distribute it as their own value-added version of UNIX. Separate UNIX traditions evolved as a result: USL's System V, Berkeley Standard Distribution (BSD, from the University of California, Berkeley), Xenix, etc. In recent years, the UNIX operating system has seen a huge boost in its popularity, especially with the emergence of Linux. For programmers and users of UNIX, this comes as no surprise. UNIX was designed to provide an environment that's powerful yet easy to use. One of the main strengths of UNIX is that it comes with a large collection of standard programs. These programs perform a wide variety of tasks from listing your files to reading email. Unlike other operating systems, one of the key features of UNIX is that these programs can be combined to perform complicated tasks and solve your problems. One of the most powerful standard programs available in UNIX is the shell. The shell is a program that provides a consistent and easy-to-use environment for executing programs in UNIX. The main responsibility of the shell is to read the commands the user types and then ask the UNIX kernel to perform these commands. In addition to this, the shell provides sophisticated programming constructs that enable us to make decisions, repeatedly execute commands, create functions, and store values in variables. Features: Unix is a multi user operating system which allows several users to share the system resources. It is a multi processing Operating System which performs several tasks simultaneously. It is a time sharing operating system where the processes interactively share the CPU time. It has a portability feature which allows it to be implemented on any platform without any major alterations. Structure:  The fig Shows the basic structure of the UNIX operating system. The Application Layer: The application layer is the one with which the user interacts .The application layer comprises of various software components which implement the requirements of the user and provide the user with a working environment. Shell: The shell acts as an arbitrary protection to the Kernel. It interprets the user commands and converts it to a form which the kernel understands. It acts as a command interpreter. It acts as an interface between the application and the kernel. Kernel: It is said to be the core of the UNIX operating system. It is a program which is loaded to the memory when the system starts up and keeps running until the system is shutdown. Firmware: A Firmware is one which controls the hardware of the computer system. It acts as an interface between the Kernel and the hardware. The Kernel passes the requests of the user to the firmware of the system which is responsible for executing the requested operations with the hardware. Hardware : The hardware comprises of the Input / Output devices and the Central Processing Unit CPU, which actually performs the requested operations. The UNIX Directory structure:  UNIX COMMANDS Communication CuConnect to UNIX system.ftpFile transfer protocol.loginSign on to UNIX.mailxRead or send mail.rloginSign on to remote UNIX.talkWrite to other terminals.telnetConnect to another system.vacationRespond to mail automatically.writeWrite to other terminals. File Management catJoin files or display them.cdChange directory.chmodChange access modes on files.cpCopy files.csplitBreak files at specific locations.fileDetermine a file's type.headShow the first few lines of a file.installSet up system files.lnCreate filename aliases.lsList files or directories.mkdirCreate a directory.moreDisplay files by screenful.mvMove or rename files or directories.pwdPrint your working directory.rcpCopy files to remote system.rmRemove files.rmdirRemove directories.splitSplit files evenly.tailShow the last few lines of a file.wcCount lines, words, and characters. Miscellaneous bannerMake posters from words.bcPrecision calculator.calDisplay calendar.calendarCheck for reminders.clearClear the screen.killTerminate a running command.manGet information on a command.niceReduce a job's priority.nohupPreserve a job after logging out.passwdSet password.scriptProduce a transcript of your login session.spellReport misspelled words.suBecome a superuser.Printing cancelCancel a printer request.lpSend to the printer.lpstatGet printer status.prFormat and paginate for printing.Programming cbC source code "beautifier."ccC compiler.cflowC function flowchart.ctagsC function references.ctraceC debugger.cxrefC cross-references.lintC debugger.ldLink editor.lexLexical analyzer.makeExecute commands in a specified Order.odDump input in various formats.sdbSymbolic debugger.stripRemove data from an object file.trussTrace signals and system calls.yaccCompiler used with lex.Searching egrepExtended version of grep.fgrepSearch files for literal words.findSearch the system for filenames.grepSearch files for text patterns.stringsSearch binary files for text patterns.Shell Programming echoRepeat input on the output.exprPerform arithmetic and comparisons.lineRead a line of input.sleepPause during processing.test Test a condition. System Status atExecute commands later.chgrpChange file group.chownChange file owner.crontabAutomate commands.dateDisplay or set date.dfShow free disk space.duShow disk usage.envShow environment variables.fingerPoint out information about users.psShow processes.ruptimeShow loads on working systems.shutdownRevert to single-user mode.sttySet or display terminal settings.whoShow who is logged on. UNIX COMMANDS touch This command is used to change the time stamp of a file. Syntax: $ touch <file name> The file name specified can be any file irrespective of      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXZ[ if it exists or not .If the file already exists it changes just the time stamp ,a new file is created otherwise . who This command displays the current users logged in . Syntax: $who [[student@localhost ~]$ who student tty7 2009-12-10 13:25 (:0) student pts/1 2009-12-10 13:28 (:0.0) date This command displays the current system date. Options: +%D displays it in the form mm/dd/yyyy +%H displays the current hour 0-23 +%M hh: mm: ss [CSE@localhost ~]$ date Thu Dec 10 14:17:37 IST 2009 [CSE@localhost ~]$ date +%D 12/10/09 [CSE@localhost ~]$ date +%H 14 [CSE@localhost ~]$ date +%M 33 [CSE@localhost ~]$ date +%S 36 ls It is used to list the contents of a directory. Syntax: $ ls [-options] Options: a  to list all directory entries including hidden files (files with a  . prefix) d  to list directories l  to long list files . r  to list files in reverse order t  to list files sorted by time f  mark executable file with * and directories with % l  one file per line $ ls  l This command displays the content of the current directory in long terms. drwxr-xr-x 2 CSE CSE 4096 2009-11-29 11:46 Desktop drwxr-xr-x 2 CSE CSE 4096 2009-11-29 11:46 Documents drwxr-xr-x 2 CSE CSE 4096 2009-11-29 11:46 Download -rw-rw-r-- 1 CSE CSE 1064 2009-11-30 14:00 in.c cat It is used to create a file. Syntax: cat > filename $cat >oslab LINUX COMMANDS CAT To come out of this command press ctrl+D. The characters in each line should not exceed 14 characters. The same command is also use to display the contents of a file. The syntax is cat <file name> $cat oslab LINUX COMMANDS CAT mkdir This command is used to create a directory in the current working directory. Syntax : mkdir <directory name> [CSE@localhost ~]$ mkdir CSE [CSE@localhost ~]$ ls a.out Desktop Download Music Pictures Templates CSE Documents in.c oslab Public Videos [CSE@localhost ~]$ ls -ld CSE drwxrwxr-x 2 CSE CSE 4096 2009-12-10 13:44 CSE cd This command is used to change the working directory to the specified directory. Syntax: cd <directory path> [CSE@localhost ~]$ cd CSE [CSE@localhost CSE]$ pwd /home/CSE/CSE pwd This command is used to display the current working directory. Syntax: pwd $pwd /home/CSE/CSE rmdir This command is used to remove a directory from current working directory. Syntax: rmdir <directory name> [CSE@localhost ~]$ rmdir CSE [CSE@localhost ~]$ ls -ld CSE ls: cannot access CSE: No such file or directory cp This command is used to create a duplicate copy of file. Syntax: cp <source file> <destination file> $cp srcfile destfile [CSE@localhost ~]$ cp oslab os [CSE@localhost ~]$ cat os LINUX COMMANDS CAT mv This command is used to change the name of file. Syntax: mv <current name> <new name> [CSE@localhost ~]$ mv os oslab1 [CSE@localhost ~]$ ls os ls: cannot access os: No such file or directory rm This command is used to delete a file. Syntax: rm -[options] <file name> Options: i  interactive deleting (ie confirm before deleting file) f  deleting files without confirmation. r  delete all directories including sub directories.(recursive deleting). [CSE@localhost ~]$ rm -i oslab1 rm: remove regular file `oslab1'? y [CSE@localhost ~]$ cat oslab1 cat: oslab1: No such file or directory more This command is used to display the information page wise. Syntax: more <filename> [CSE@localhost ~]$ more oslab1 LINUX COMMANDS CAT [CSE@localhost ~]$ more /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt wc This command is used to count the number of lines, words and characters in a file. Syntax: wc -[options] <filename> Options: i  to count the number of files c  to count the number of characters w  to count the number of words [[CSE@localhost ~]$ cat >oslab3 shell [CSE@localhost ~]$ wc -c oslab3 6 oslab3 [CSE@localhost ~]$ wc -w oslab3 1 oslab3 cmp This is used to compare two files. Syntax: cmp file1 file2 This reports the first difference between the files. Does not report if the two files are same. $cmp oslab oslab1 oslab oslab1 differ: byte 1, line 1 lp This command is used to print a file. Syntax: lp <filename> $ lp test > This operator is used to redirect an output to a file . Syntax: cat (file name) > (file name) [CSE@localhost ~]$ cat oslab1 unix shell pgmming [CSE@localhost ~]$ cat oslab2 shell [CSE@localhost ~]$ cat oslab1 > oslab2 [CSE@localhost ~]$ cat oslab2 unix shell pgmming This command redirects the content of the first file to the second file .The operator can also be used with other commands to redirect their output to a file. A new file is created if it does not exist. The contents of the file is deleted if the file exists. [CSE@localhost ~]$ date Thu Dec 10 14:17:37 IST 2009 [CSE@localhost ~]$ date > date1.txt [CSE@localhost ~]$ cat date1.txt Thu Dec 10 14:18:07 IST 2009 >> This operator is used to append the text to the destination file specified. Syntax : cat (file name) >> (file name) This command is used to redirect the output of a command to a file .In this case the output is appended to the destination file rather than deleting the contents ie., the new contents is added at the end of the file. [CSE@localhost ~]$ cat oslab2 unix shell pgmming [CSE@localhost ~]$ cat oslab3 shell [CSE@localhost ~]$ cat oslab2 >> oslab3 [CSE@localhost ~]$ cat oslab3 shell unix shell pgmming echo echo is used to display the string of characters after the command on the screen. [CSE@localhost ~]$ echo scheduling policies scheduling policies grep This command is used to search for a particular string in a file. Syntax : grep <string> <file name> It displays the lines in the file containing the text  root [CSE@localhost ~]$ grep shell oslab3 shell shell pgmming sort This command is used for sorting a specific contents in a particular order. [CSE@localhost ~]$ cat >sorting 3 5 7 1 2 4 6 [CSE@localhost ~]$ sort -g sorting 1 2 3 4 5 6 7 This sorts the numbers in the file 'sorting' in ascending order. tail This command is used to display the last few lines of a file as it s argument. $ tail file1 displays the last few lines of the file file1 [CSE@localhost ~]$ tail /etc/passwd EEE:x:501:501::/home/EEE:/bin/bash ECE:x:502:502::/home/ECE:/bin/bash CSE:x:503:503::/home/CSE:/bin/bash IT:x:504:504::/home/IT:/bin/bash OWNERS, GROUPS, AND PERMISSIONS File ownership is an important component of UNIX that provides a secure method for storing files. Every file in UNIX has the following attributes: Owner permissions Group permissions Other (world) permissions The owner's permissions determine what actions the owner of the file can perform on the file. The group's permissions determine what actions a user, who is a member of the group that a file belongs to, can perform on the file. The permissions for others indicate what action all other users can perform on the file. The following actions can be performed on a file: Read Write Execute If a user has read permissions, that person can view the contents of a file. A user with write permissions can change the contents of a file, whereas a user with execute permissions can run a file as a program. Viewing Permissions You can display the permissions of a file using the ls -l command. For example, the following command $ ls -l /home/ranga/.profile produces the following output: -rwxr-xr-x 1 ranga users 2368 Jul 11 15:57 .profile* The first three characters after the  - indicate the permissions for the owner of the file, the next three characters indicate the permissions for the group the file is associated with, and the last three characters indicate the permissions for all other users. The permission block for this file indicates that the user has read, write, and execute permissions, whereas members of the group users and all other users have only read and execute permissions. Three basic permissions that can be granted or denied on a file are read, write, and execute. These permissions are defined in the table After the permissions block, the owner and the group are listed. For this file, the owner is ranga and the group is users. Basic Permissions Letter Permission Definition r Read The user can view the contents of the file. w Write The user can alter the contents of the file. x Execute The user can run the file, which is likely a program. For directories, the execute permission must be set in order for users to access the directory. Directory Permissions The x bit on a directory grants access to the directory. The read and write permissions have no effect if the access bit is not set. The read permission on a directory enables users to use the ls command to view files and their attributes that are located in the directory. The write permission on a directory is the permission to watch out for because it lets a user add and also remove files from the directory. A directory that grants a user only execute permission will not enable the user to view the contents of the directory or add or delete any files from the directory, but it will let the user run executable files located in the directory. SUID and SGID File Permission Often when a command is executed, it will have to be executed with special privileges in order to accomplish its task. As an example, when you change your password with the passwd command, your new password is stored in the file /etc/shadow. As a regular user, you do not have read or write access to this file for security reasons, but when you change your password, you need to have write permission to this file. This means that the passwd program has to give you additional permissions so that you can write to the file /etc/shadow. Additional permissions are given to programs via a mechanism known as the Set User ID ( SUID) and Set Group ID ( SGID) bits. When you execute a program that has the SUID bit enabled, you inherit the permissions of that program's owner. Programs that do not have the SUID bit set are run with the permissions of the user who started the program. This is true for SGID as well. Normally programs execute with your group permissions, but instead your group will be changed just for this program to the group owner of the program. As an example, the passwd command, used to change your password, is owned by the root and has the set SUID bit enabled. When you execute it, you effectively become root while the command runs. The SUID and SGID bits will appear as the letter "s" if the permission is available. The SUID "s" bit will be located in the permission bits where the owners execute permission would normally reside. For example, the command $ ls -l /usr/bin/passwd produces the following output: -r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd* which shows that the SUID bit is set and that the command is owned by the root. A capital letter S in the execute position instead of a lowercase s indicates that the execute bit is not set. The SUID bit or stick bit imposes extra file removal permissions on a directory. A directory with write permissions enabled for a user enables that user to add and delete any files from this directory. If the sticky bit is enabled on the directory, files can only be removed if you are one of the following users: The owner of the sticky directory The owner the file being removed The super user, root Changing File and Directory Permissions The file and directory permissions can be changed with the chmod command. The basic syntax is as follows: chmod expression files Here, expression is a statement of how to change the permissions. This expression can be of the following types: Symbolic Octal The symbolic expression method uses letters to alter the permissions, and the octal expression method uses numbers. The numbers in the octal method are base-8 (octal) numbers ranging from 0 to 7. Symbolic Method The symbolic expression has the syntax of (who)(action)(permissions) <who> Letter Represents u Owner g Group o Other a All <actions> Symbol Represents + Adding permissions to the file - Removing permission from the file = Explicitly set the file permissions <permissions> Letter Represents r Read w Write x Execute s SUID or SGID To give the "world" read access to all files in a directory, you can use one of the following commands: $ chmod a=r * or $ chmod guo=r * If the command is successful, it produces no output. To stop anyone except the owner of the file .profile from writing to it, $ chmod go-w .profile To deny access to the files in your home directory, $ cd ; chmod go= * or $ cd ; chmod go-rwx * Caution - If you do this, be warned because some users will call you a file miser. When specifying the users part or the permissions part, the order in which you give the letters is irrelevant. Thus these commands are equivalent: $ chmod guo+rx * $ chmod uog+xr * If more than one set of permissions changes need to b applied to a file or files, use a comma separated list: $ chmod go-w,a+x a.out removes the groups and "world" write permission on a.out and adds the execute permission for everyone. To set the SUID and SGID bits for your home directory, try the following: $ cd ; chmod ug+s . Chmod also enables us to change the permissions for every file in a directory including the files in subdirectories. This can accomplish this by specifying the -R option. If the directory pub contains the following directories: $ ls pub ./ ../ README faqs/ src/ The permissions of the file README along with the files contained in the directories faqs and src can be changed with the following command: $ chmod -R o+r pub Octal Method By changing permissions with an octal expression, we can only explicitly set file permissions. This method uses a single number to assign the desired permission to each of the three categories of users (owner, group, and other). The values of the individual permissions are the following: Read permission has a value of 4 Write permission has a value of 2 Execute permission has a value of 1 Adding the value of the permissions that you want to grant will give you a number between 0 and 7. This number will be used to specify the permissions for the owner, group, and finally the other category. Setting SUID and SGID using the octal method places these bits out in front of the standard permissions. The permissions SUID and SGID take on the values 4 and 2, respectively. In order to set the "world" read access to all files in a directory, chmod 0444 * To stop anyone except the owner of the file .profile from writing to it, chmod 0600 .profile SHELL PROGRAMMING A Linux shell is a command language interpreter, the primary purpose of which is to translate the command lines typed at the terminal into system actions. The shell itself is a program, through which other programs are invoked What is a shell script? A shell script is a file containing a list of commands to be executed by the Linux shell. shell script provides the ability to create your own customized Linux commands Linux shell have sophisticated programming capabilities which makes shell script powerful Linux tools Why Use Shells? Well, most likely because the are a simple way to string together a bunch of UNIX commands for execution at any time without the need for prior compilation. Also because its generally fast to get a script going. Not forgetting the ease with which other scripters can read the code and understand what is happening. Lastly, they are generally completely portable across the whole UNIX world, as long as they have been written to a common standard.  HYPERLINK "http://www.injunea.demon.co.uk/pages/page203.htm" \l "top%23top"The Shell History: The basic shells come in three main language forms. These are (in order of creation) sh, csh and ksh. Be aware that there are several dialects of these script languages which tend to make them all slightly platform specific. Where these differences are known to cause difficulties I have made special notes within the text to highlight this fact. The different dialects are due, in the main, to the different UNIX flavours in use on some platforms. All script languages though have at their heart a common core which if used correctly will guarantee portability.  HYPERLINK "http://www.injunea.demon.co.uk/pages/page203.htm" \l "top%23top"Bourne Shell: Historically the sh language was the first to be created and goes under the name of The Bourne Shell. It has a very compact syntax which makes it obtuse for novice users but very efficient when used by experts. It also contains some powerful constructs built in. On UNIX systems, most of the scripts used to start and configure the operating system are written in the Bourne shell. It has been around for so long that is it virtually bug free. I have adopted the Bourne shell syntax as the defacto standard within this book.  HYPERLINK "http://www.injunea.demon.co.uk/pages/page203.htm" \l "top%23top"C Shell: Next up was The C Shell (csh), so called because of the similar syntactical structures to the C language. The UNIX man pages contain almost twice as much information for the C Shell as the pages for the Bourne shell, leading most users to believe that it is twice as good. This is a shame because there are several compromises within the C Shell which makes using the language for serious work difficult (check the list of bugs at the end of the man pages!). True, there are so many functions available within the C Shell that if one should fail another could be found. The point is do you really want to spend your time finding all the alternative ways of doing the same thing just to keep yourself out of trouble. The real reason why the C Shell is so popular is that it is usually selected as the default login shell for most users. The features that guarantee its continued use in this arena are aliases, and history lists. There are rumours however, that C Shell is destined to be phased out, with future UNIX releases only supporting sh and ksh. Differences between csh and sh syntax will be highlighted where appropriate.  HYPERLINK "http://www.injunea.demon.co.uk/pages/page203.htm" \l "top%23top"Korne Shell: Lastly we come to The Korne Shell (ksh) made famous by IBM's AIX flavour of UNIX. The Korne shell can be thought of as a superset of the Bourne shell as it contains the whole of the Bourne shell world within its own syntax rules. The extensions over and above the Bourne shell exceed even the level of functionality available within the C Shell (but without any of the compromises!), making it the obvious language of choice for real scripters. However, because not all platforms are yet supporting the Korne shell it is not fully portable as a scripting language at the time of writing. This may change however by the time this book is published. Korne Shell does contain aliases and history lists aplenty but C Shell users are often put off by its dissimilar syntax. Persevere, it will pay off eventually. Any sh syntax element will work in the ksh without change. How to work with shell? Step1: In the dollar prompt type $ vi < file name> Where vi is the editor, it will open a new window in which you can type the program you want Step2: After typing the program press ESC and : together then at the bottom of the vi screen you can see i.e. prompt .In that type as wq which means write and quit i.e. the content what is typed will be written and saved into that file that has been created Step3: Once wq is typed at the: prompt, the prompt would change to $ symbol in which you have to do the following $ sh < file name > Sh - command is used to run the shell program <file name> - is the name of the file for which the output is to be got Basically to print a text in the your shell programs echo command is used How to Run Shell Scripts There are two ways you can execute your shell scripts. Once you have created a script file: Method 1: Pass the file as an argument to the shell that you want to interpret your script. Step 1: create the script using vi, ex or ed For example, the script file show has the following lines echo Here is the date and time date Step 2: To run the script, pass the filename as an argument to the sh (shell) $ sh show Here is the date and time Thu Dec 10 14:18:07 IST 2009 Method 2: Make your script executable using the chmod command. When we create a file, by default it is created with read and write permission turned on and execute permission turned off. A file can be made executable using chmod. Step 1: create the script using vi, ex or ed For example, the script file show has the following lines echo Here is the date and time date Step 2: Make the file executable $ chmod u+x script_file $ chmod u+x show Step 3: To run the script, just type the filename $ show Here is the date and time Sat jun 03 13:40:15 PST 2006 How to run C programs? Step 1: Use an editor, such as vi, ex, or ed to write the program. The name of the file containing the program should end in .c. For example, the file show.c contains the following lines : main() { printf( welcome to GNEC  ); } Step 2: Submit the file to CC ( the C Compiler ) $ cc show.c If the program is okay, the compiled version is placed in a file called a.out Step 3: To run the program, type a.out $ a.out Welcome to GNEC MULTIPLICATION TABLE PROGRAM: clear echo Multiplication Table echo Enter the Number read a for b in 1 2 3 4 5 6 7 8 9 10 11 12 do echo $b $a "'s are" `expr $b "*" $a` done OUTPUT: Multiplication Table Enter the Number 12 1 12 's are 12 2 12 's are 24 3 12 's are 36 4 12 's are 48 5 12 's are 60 6 12 's are 72 7 12 's are 84 8 12 's are 96 9 12 's are 108 10 12 's are 120 11 12 's are 132 12 12 's are 144 GREETING THE USER PROGRAM: clear echo Program for Greeting the User as per the current system time n=`date +%H` if [ $n -lt 12 ] then echo " Good Morning " elif [ $n -ge 12 -a $n -lt 16 ] then echo " Good AfterNoon " elif [ $n -ge 16 -a $n -lt 18 ] then echo " Good Evenening " elif [ $n -ge 18 ] then echo " Good Night " fi OUTPUT: Program for Greeting the User as per the current system time Good AfterNoon ARITHEMATIC OPERATIONS PROGRAM: clear ch=1 while [ $ch -gt 0 ] do echo MENU echo 1.Addition echo 2.Subtraction echo 3.Multiplication echo 4.Division echo 5.exit echo echo Enter your choice : read ch case $ch in 1) echo Addition of two numbers echo Enter the first number read a echo Enter the second number read b echo Result after addition echo "`expr $a "+" $b`";; 2)echo Subtraction of two numbers echo Enter the Subtrahend read c echo Enter the Minuend read d echo Result after subtraction echo `expr $c "-" $d`;; 3)echo Multiplication of two numbers echo Enter the first number read e echo Enter the second number read f echo Result of multiplication echo `expr $e "*" $f`;; 4)echo Division of two numbers echo Enter the numerator read g echo Enter the Denominator read h echo Result of Division echo `expr $g "/" $h`;; 5)echo Exiting program ch=0;; esac done OUTPUT: MENU 1.Addition 2.Subtraction 3.Multiplication 4.Division 5.exit Enter your choice : 1 Addition of two numbers Enter the first number 12 Enter the second number 13 Result after addition 25 MENU 1.Addition 2.Subtraction 3.Multiplication 4.Division 5.exit Enter your choice : 2 Subtraction of two numbers Enter the Subtrahend 25 Enter the Minuend 12 Result after subtraction 13 MENU 1.Addition 2.Subtraction 3.Multiplication 4.Division 5.exit Enter your choice : 3 Multiplication of two numbers Enter the first number 12 Enter the second number 15 Result of multiplicaton 180 MENU 1.Addition 2.Subtraction 3.Multiplication 4.Division 5.exit Enter your choice : 4 Division of two numbers Enter the numerator 12 Enter the Denominator 6 Result of Division 2 MENU 1.Addition 2.Subtraction 3.Multiplication 4.Division 5.exit Enter your choice : 5 Exiting program DIRECTORY OPERATIONS PROGRAM: clear ch=1 while [ $ch -le 6 ] do echo 1.Create Directory echo 2.Change Directory echo 3.Present Working Directory echo 4.Change to Parent Directory echo 5.Remove Directory echo 6.List the directory Content echo 7.Exit echo Enter ur choice read ch case $ch in 1)echo Enter the name of the directory to create read crdir mkdir $crdir;; 2)echo Enter the name of the directory to change to read chdir cd $chdir;; 3)echo The Present Working Directory is pwd;; 4)echo Changing to the parent directory cd ..;; 5)echo Enter the name of the directory to delete read deldir rmdir $deldir;; 6)echo Listing the directory contents ls -la;; esac done OUTPUT : 1.Create Directory 2.Change Directory 3.Present Working Directory 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 1 Enter the name of the directory to create cse 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 2 Enter the name of the directory to change to cse 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 3 The Present Working Directory is /home/cse64/cse 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 4 Changing to the parent directory 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 3 The Present Working Directory is /home/cse64 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 2 Enter the name of the directory to change to cse 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 6 Listing the directory contents total 8 drwxrwxr-x 2 cse64 cse64 4096 Feb 18 15:46 . drwx------ 5 cse64 cse64 4096 Feb 18 15:46 .. 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 4 Changing to the parent directory 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 5 Enter the name of the directory to delete cse 1.Create Directory 2.Change Directory 3.Present Working Directory 4.Change to Parent Directory 5.Remove Directory 6.List the directory Content 7.Exit Enter ur choice 7 FILE MANIPULATION PROGRAM: echo Program for File Management echo 1.Create echo 2.Display echo 3.Modify echo 4.Delete echo 5.Copy echo Enter ur choice read ch case $ch in 1)echo Enter the name of the file to create read crfile cat > $crfile;; 2)echo Enter the name of the file to display read disfile1 cat $disfile1;; 3)echo "Enter the name of the file to Modi" read modfile cat>>$modfile;; 4)echo Enter the name of the file name to delete read delfile rm $delfile;; 5)echo Enter the name of the source file read sorfile echo Enter the name of the destination file read destifile cp $sorfile $destifile;; esac OUTPUT: Program for File Management 1.Create 2.Display 3.Modify 4.Delete 5.Copy Enter ur choice 1 Enter the name of the file to create test this is for test [cse64@localhost cse64]$ sh filem.sh Program for File Management 1.Create 2.Display 3.Modify 4.Delete 5.Copy Enter ur choice 2 Enter the name of the file to display test this is for test [cse64@localhost cse64]$ sh filem.sh Program for File Management 1.Create 2.Display 3.Modify 4.Delete 5.Copy Enter ur choice 3 Enter the name of the file to Modi test This is also for test [cse64@localhost cse64]$ sh filem.sh Program for File Management 1.Create 2.Display 3.Modify 4.Delete 5.Copy Enter ur choice 5 Enter the name of the source file test Enter the name of the destination file test1 Program for File Management 1.Create 2.Display 3.Modify 4.Delete 5.Copy Enter ur choice 4 Enter the name of the file name to delete test FILE PERMISSIONS PROGRAM : f=0 echo Enter the name of the file read file if test -d $file then echo $file is a directory f=1 exit fi if test -f $file then echo $file is an Ordinary file f=1 fi if test -r $file then echo $file is a file with read permission f=1 fi if test -w $file then echo $file is a file with write permission f=1 fi if test -x $file then echo $file is a file with execute permissions f=1 fi if [ $f -eq 0 ] then echo file not found fi OUTPUT : Enter the name of the file fileop.sh fileop.sh is an Ordinary file fileop.sh is a file with read permission fileop.sh is a file with write permission fileop.sh is a file with execute permissions LARGEST OF THREE NUMBERS PROGRAM : echo Program to find the largest of three numbers echo Enter the first number read num1 echo Enter the second number read num2 echo Enter the third number read num3 if [ $num1 -gt $num2 ] then if [ $num1 -gt $num3 ] then echo the largest number is $num1 else echo the largest number is $num3 fi elif [ $num2 -gt $num3 ] then echo the largest number is $num2 else echo the largest number is $num3 fi OUTPUT: Program to find the largest of three numbers Enter the first number 12 Enter the second number 10 Enter the third number 44 the largest number is 44 SORTING PROGRAM: clear echo Sorting the contents of a file echo Enter the file name read file echo Sorted output of $file echo echo sort -g $file echo OUTPUT: Sorting the contents of a file Enter the file name sortsrc.sh Sorted output of sortsrc.sh 1 2 3 3 5 66 78 FINDING EVEN OR ODD PROGRAM: clear echo "Enter the integer::" read n r=`expr $n % 2` if test $r -eq 0 then echo " $n is an even number" else echo " $n is an odd number." fi OUTPUT: Enter the integer:: 30 30 is an even number Enter the integer:: 29 29 is an odd number. FINDING POSITIVE OR NEGATIVE PROGRAM: clear echo "Enter the no:" read n if test $n -gt 0 then echo "The given number $n is positive" elif test $n -lt 0 then echo "The given no. is negative" else echo "The given no $n is zero" fi OUTPUT: Enter the no: 20 The given number 20 is positive Enter the no: -30 The given no. is negative GENERATING ODD NUMBERS PROGRAM: clear echo "Enter the value" read n i=1 echo "odd number upto $n" while test $i -le $n do echo $i i=`expr $i + 2` done OUTPUT: Enter the value 10 odd number upto 10 1 3 5 7 9 REVERSING A NUMBER PROGRAM: clear echo "REVERSING A NUMBER" echo "Enter a number" read n i=0 r=0 while [ $n -ne 0 ] do i=`expr $n "%" 10` r=`expr $r "*" 10` r=`expr $r "+" $i` n=`expr $n "/" 10` done echo "REVERSED NO IS $r" OUTPUT: REVERSING A NUMBER Enter a number 12345 REVERSED NO IS 54321 FIBONACCI SERIES PROGRAM: clear echo "FIBONACCI SERIES" echo "Enter number of terms" read n echo " " a=0 b=1 i=3 echo $a echo $b while [ $i -le $n ] do s=`expr $a "+" $b` echo $s a=$b b=$s i=`expr $i "+" 1` done OUTPUT: FIBONACCI SERIES Enter number of terms 8 0 1 1 2 3 5 8 13 FACTORIAL PROGRAM: clear echo "FACTORIAL" echo "Enter a number" read n echo " " i=1 fact=1 while [ $i -le $n ] do fact=`expr $fact "*" $i` i=`expr $i "+" 1` done echo "Factorial is $fact" OUTPUT: FACTORIAL Enter a number 6 Factorial is 720 REVERSING A STRING PROGRAM: s=`echo $1 | wc -c` while [ $s -gt 0 ] do temp=`echo $1 | cut -c $s` s=`expr $s "-" 1` temp1=`echo $temp1$temp` done echo "REVERSED STRING IS: $temp1" OUTPUT: [cse32@localhost cse]$ sh revstr computer REVERSED STRING IS: retupmoc PATTERN SEARCHING: 1 PROGRAM: if ( grep while a1 ) then echo pattern found in a1 elif ( grep ee a2) then echo pattern found in a2 else echo not found fi OUTPUT: ee pattern found in a2 PATTERN SEARCHING: 2 PROGRAM: clear ch=1 while [ $ch -ne 0 ] do echo SEARCHING PATTERN echo WORDS echo "0. Exit" echo "1. Clear" echo "2. While" echo "3. Echo" echo "Enter Ur Choice :" read ch case $ch in 1) echo " Check wheather Clear Command" echo Enter the File name read file if (grep clear $file) then echo Pattern Found else echo Not Found fi;; 2) echo " Check the While Statement" echo Enter the File name read file read file1 if (grep while $file) then echo Pattern Found in $file elif (grep while $file1) then echo Pattern Found in $file1 else echo Not Found fi;; 3) echo " Check the echo Command" echo enter the file name read file while grep echo $file do echo Pattern Found in $file exit done;; esac done OUTPUT: SEARCHING PATTERN WORDS SEARCHING PATTERN WORDS 0. Exit 1. Clear 2. While 3. Echo Enter Ur Choice : 1 Check wheather Clear Command Enter the File name ser.sh clear if (grep clear $file) Pattern Found SEARCHING PATTERN WORDS 0. Exit 1. Clear 2. While 3. Echo Enter Ur Choice : 2 Check the While Statement Enter the File name ser.sh while [ $ch -ne 0 ] if (grep while $file) elif (grep while $file1) while grep echo $file Pattern Found in ser.sh SEARCHING PATTERN WORDS 0. Exit 1. Clear 2. While 3. Echo Enter Ur Choice : 3 Check the echo Command enter the file name ser.sh echo SEARCHING PATTERN echo WORDS echo "0. Exit" echo "1. Clear" echo "2. While" echo "3. Echo" echo "Enter Ur Choice :" 1) echo " Check wheather Clear Command" echo Enter the File name echo Pattern Found echo Not Found 2) echo " Check the While Statement" echo Enter the File name echo Pattern Found in $file echo Pattern Found in $file1 echo Not Found 3) echo " Check the echo Command" echo enter the file name while grep echo $file echo Pattern Found in $file echo continue.... Pattern Found in ser.sh FIRST OCCURANCE OF A PATTERN PROGRAM: clear if grep $1 $2 then clear echo The first occurance of $1 in $2 is grep -n -m 1 $1 $2 elif grep $1 $3 then clear echo The first occurance of $1 in $3 is grep -n -m 1 $1 $3 else clear echo $1 was not found fi OUTPUT: [cse64@localhost cse64]$ sh ifgrepdisp.sh 1 ifgrep.sh ifelgrep.sh The first occurance of 1 in ifgrep.sh is 2:if grep $1 $2 SYSTEM CALLS OF UNIX OPERATING SYSTEM THE FORK SYSTEM CALL PROGRAM: #include <stdio.h> int main() { int pid; pid=fork(); if(pid==0) { printf("child process id is %d\n ",getpid()); printf("parent process id is %d\n",getpid()); } else { printf("parent process id is %d\n ",getpid()); printf("parent of parent process %d\n",getpid()); } return 0; } OUTPUT: [CSE@localhost ~]$ gcc forksys.c [CSE@localhost ~]$ ./a.out child process id is 4226 parent process id is 4226 parent process id is 4225 parent of parent process 4225 THE GETPID SYSTEM CALL PROGRAM: #include <stdio.h> int main() { int p,pp; p=getpid(); pp=getppid(); printf("Child process id : %d \n" , p); printf("Parent Process id : %d \n" , pp); return 0; } OUTPUT: [CSE@localhost ~]$ gcc getid.c [CSE@localhost ~]$ ./a.out Child process id : 4238 Parent Process id : 4191 THE STAT SYSTEM CALL PROGRAM: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> main(int argc,char** argv) { char* fname; struct stat buf; fname=*++argv; if(stat(fname,&buf)==0) { printf("The uid of %s is %d\n",fname,buf.st_uid); } else { perror("stat"); exit(1); } exit(0); } OUTPUT: [cse@localhost cse]$ ./a.out stat.c The uid of stat.c is 564 OPENDIR AND READDIR SYSTEM CALLS PROGRAM: #include <stdio.h> #include <sys/stat.h> #include <sys/dir.h> main(int argc, char** argv) { DIR* pDir; struct dirent* pDirent; struct stat buff; char* filename; filename=*++argv; if((pDir=opendir(filename))==NULL) printf("can not open this directory"); else { printf("Name\tMode\tIno\tUID\tAtime\n"); while((pDirent=readdir(pDir))!=0) { if(stat(pDirent->d_name, &buff)==0) printf("%s\t%d\t%d\t%d\t%d\n", pDirent->d_name, buff.st_mode, buff.st_ino, buff.st_uid, buff.st_atime); } } } OUTPUT: [root@server ~]# gcc ordir.c [[root@server ~]# ./a.out xxx Name Mode Ino UID Atime a.out 33261 25004913 0 1262082910 .. 16877 2 0 1262082804 . 16872 25001985 0 1262082906 I/O SYSTEM CALLS OF UNIX OPERATING SYSTEM /* OPENING AND CLOSING FILES PROGRAM: #include<stdio.h> #include<stdlib.h> #include <fcntl.h> /* defines options flags */ #include <sys/types.h> /* defines types used by sys/stat.h */ #include <sys/stat.h> /* defines S_IREAD & S_IWRITE */ static char message[] = "OPEN SYSTEM CALL"; int main() { int fd; char buffer[80]; /* open datafile.dat for read/write access (O_RDWR) create datafile.dat if it does not exist (O_CREAT) return error if datafile already exists (O_EXCL) permit read/write access to file (S_IWRITE | S_IREAD) */ fd = open("sss.txt",O_RDWR | O_CREAT | O_EXCL, S_IREAD | S_IWRITE); if (fd != -1) { printf("sss.txt opened for read/write access\n"); write(fd, message, sizeof(message)); lseek(fd, 0L, 0); /* go back to the beginning of the file */ if (read(fd, buffer, sizeof(message)) == sizeof(message)) printf("\"%s\" was written to sss.txt\n", buffer); else printf("*** error reading sss.txt ***\n"); close (fd); } else printf("*** sss.txt already exists ***\n"); exit (0); } OUTPUT : [root@server ~]# gcc ofile1.c [root@server ~]# ./a.out sss.txt opened for read/write access "OPEN SYSTEM CALL" was written to sss.txt READ SYSTEM CALL PROGRAM : #include <fcntl.h> #include <stdio.h> main() { int fd; char lilbuf[0],bigbuf[1024]; fd=open("./aaa.txt",O_RDONLY); read(fd,lilbuf,0); read(fd,bigbuf,1024); printf("bigbuff\n %s",bigbuf); } OUTPUT: Content of aaa.txt Operating System Lab WRITE SYSTEM CALL PROGRAM: #include <fcntl.h> #include <stdio.h> int main() { int fd,i; char buf[512]; for(i=0;i<sizeof(buf);i++) buf[i]='a'; fd=open("./openwrt.txt",O_WRONLY); write(fd,buf,sizeof(buf)); return 0; } OUTPUT: Contents of file openwrt.txt [cse@localhost cse]$ cat openwrt.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa PROGRAM TO CHANGE THE ADDRESS SPACE OF THE CHILD PROCESS #include<stdio.h> #include<stdlib.h> main(int argc,char *argv[]) { int pid; printf("\n\t\t CHANGING THE ADDRESS SPACE OF THE CHILD PROCESS\n\n"); pid=fork(); if(pid<0) { fprintf(stderr,"\n Fork failed...\n"); exit(0); } else if(pid==0) { execlp("/bin/ls","ls",NULL); } else { wait(NULL); printf("\n CHILD COMPLETED...\n"); printf("\n"); exit(0); } } C PROGRAM TO SIMULATE THE FOLLOWING UNIX COMMANDS C program that simulate the following UNIX commands (a) mv (b) cp PROGRAM: #include<fcntl.h> #include<unistd.h> #include<stdio.h> main(int argc,char *argv[]) { FILE *fp; char ch; int sc=0; fp=fopen(argv[1],"r"); if(fp==NULL) printf("unable to open a file",argv[1]); else { while(!feof(fp)) { ch=fgetc(fp); if(ch==' ') sc++; } printf("no of spaces %d",sc); printf("\n"); fclose(fp); } } Write a c program that simulates ls command PROGRAM: #include<stdio.h> #include<fcntl.h> #include<stdlib.h> main(int argc,char *argv[]) { int fd,i; char ch[1]; if (argc<2) { printf("Usage: mycat filename\n"); exit(0); } fd=open(argv[1],O_RDONLY); if(fd==-1) printf("%s is not exist",argv[1]); else { printf("Contents of the file %s is : \n",argv[1]); while(read(fd,ch,1)>0) printf("%c",ch[0]); close(fd); } OUTPUT : [root@server ~]# ./a.out aaa.txt Contents of the file aaa.txt is : OPERATING SYSTEM LAB Write a c program that simulates grep command PROGRAM: #include<stdio.h> #include<string.h> #define max 1024 void usage() { printf("usage:\t./grep filename pattern \n"); printf("example: ./grep grep.c int\n"); } int main(int argc,char *argv[]) { FILE *fp; char fline[max]; char *newline; int count=0; int occurences=0; if(argc!=3) { usage(); exit(1); } if(!(fp=fopen(argv[1],"r"))) { printf("grep : Couldnot open file : %s\n",argv[1]); exit(1); } while(fgets(fline,max,fp)!=NULL) { count++; if(newline=strchr(fline,'\n')) *newline='\0'; if(strstr(fline,argv[2])!=NULL) { printf("%s: %d %s\n",argv[1],count,fline); occurences++; } } } SCHEDULING POLICIES FCFS SCHEDULING PROGRAM 1 : #include <stdio.h> int main() { char procno[100]; float burst[100]; int num=0,i; float start=0.00,bt=0.00,avgwait=0.00,wait=0.00; printf("Enter The number of Processes : "); scanf("%d",&num); printf("Enter the Name and Burst Time of the processes :\n"); for(i=0;i<num;i++) { scanf("%s",&procno[i]); scanf("%f",&burst[i]); } printf("\n\n\t\t Gantt Chart \n\n"); printf("Process Name Start Time Burst Time\n"); for(i=0;i<num;i++) { bt=start+burst[i]; printf("%c\t\t%f\t\t%f\n",procno[i],start,bt); wait=wait+start; start=start+burst[i]; } avgwait=wait/num; printf("Average Waiting time of a process = %f\n",avgwait); printf("Total Running Time of Processes = %f \n",start); return 0; } OUTPUT: Enter The number of Processes : 3 Enter the Name and Burst Time of the processes : 1 12 2 4 3 7 Gantt Chart Process Name Start Time Burst Time 1 0.000000 12.000000 2 12.000000 16.000000 3 16.000000 23.000000 Average Waiting time of a process = 9.333333 Total Running Time of Processes = 23.000000 PROGRAM 2: IMPLEMENTATION OF FIRST COME FIRST SERVE SCHEDULING ALGORITHM AIM To write a program to implement the FCFS scheduling algorithm ALGORITHM 1. Start the process 2. Declare the array size 3. Get the number of processes to be inserted 4. Get the value 5. Start with the first process from it s initial position let other process to be in queue 6. Calculate the total number of burst time 7. Display the values 8. Stop the process PROGRAM #include<stdio.h> main() { int n,a[10],b[10],t[10],w[10],g[10],i,m; float att=0,awt=0; for(i=0;i<10;i++) { a[i]=0; b[i]=0; w[i]=0; g[i]=0; } printf("enter the number of process"); scanf("%d",&n); printf("enter the burst times"); for(i=0;i<n;i++) scanf("%d",&b[i]); printf("\nenter the arrival times"); for(i=0;i<n;i++) scanf("%d",&a[i]); g[0]=0; for(i=0;i<10;i++) g[i+1]=g[i]+b[i]; for(i=0;i<n;i++) { w[i]=g[i]-a[i]; t[i]=g[i+1]-a[i]; awt=awt+w[i]; att=att+t[i]; } awt =awt/n; att=att/n; printf("\n\tprocess\twaiting time\tturn arround time\n"); for(i=0;i<n;i++) { printf("\tp%d\t\t%d\t\t%d\n",i,w[i],t[i]); } printf("the average waiting time is %f\n",awt); printf("the average turn around time is %f\n",att); } OUTPUT Enter the number of process 4 Enter the burst times 4 9 8 3 Enter the arrival times 0 2 4 3 Process Waiting Time Turn Around Time p0 0 4 p1 2 11 p2 9 17 p3 18 21 The average waiting time is 7.250000 The average turn around time is 13.250000 RESULT Thus the program for FCFS is implemented and verified. SJF SCHEDULING PROGRAM 1 : #include <stdio.h> void swap(int j); char procno[100]; float burst[100]; int main() { float bt=0.00,avgwait=0.00,wait=0.00,start=0.00; int num=0,i; printf("Enter the number of processes : "); scanf("%d",&num); printf("Enter the process name and burst time in ms: \n"); for(i=0;i<num;i++) { scanf("%s",&procno[i]); scanf("%f",&burst[i]); } for(i=0;i<num;i++) { if(burst[i]>burst[i+1]) { swap(i); i=-1; } } printf("\n\n\t\tGantt Chart\n\n"); printf("\n\n"); printf("Process Name Start Time Burst Time\n"); for(i=1;i<=num;i++) { bt=start+burst[i]; printf("%c\t\t%f\t\t%f\n ",procno[i],start,bt); wait=wait+start; start=start+burst[i]; } avgwait=wait/num; printf("Average waiting Time of processes = %f\n",avgwait); printf("Total running time of processes = %f \n",start); return 0; } void swap(int j) { char temp; float tbt; temp=procno[j]; tbt=burst[j]; procno[j]=procno[j+1]; burst[j]=burst[j+1]; procno[j+1]=temp; burst[j+1]=tbt; } OUTPUT: Enter the number of processes : 3 Enter the process name and burst time in ms: 1 12 2 4 3 7 Gantt Chart Process Name Start Time Burst Time 2 0.000000 4.000000 3 4.000000 11.000000 1 11.000000 23.000000 Average waiting Time of processes = 5.000000 Total running time of processes = 23.000000 PROGRAM 2: IMPLEMENTATION OF SHORTEST JOB FIST SCHEDULING ALGORITHM AIM To implement the shortest job first scheduling algorithm ALGORITHM 1. Start the process 2. Declare the array size 3. Get the number of elements to be inserted 4. Select the process which have shortest burst will execute first 5. If two process have same burst length then FCFS scheduling algorithm used 6. Make the average waiting the length of next process 7. Start with the first process from it s selection as above and let other process to be in queue 6. Calculate the total number of burst time 7. Display the values 8. Stop the process PROGRAM #include<stdio.h> int main() { int n,j,temp,temp1,temp2,pr[10],b[10],t[10],w[10],p[10],i; float att=0,awt=0; for(i=0;i<10;i++) { b[i]=0;w[i]=0; } printf("enter the number of process"); scanf("%d",&n); printf("enter the burst times"); for(i=0;i<n;i++) { scanf("%d",&b[i]); p[i]=i; } for(i=0;i<n;i++) { for(j=i;j<n;j++) { if(b[i]>b[j]) { temp=b[i]; temp1=p[i]; b[i]=b[j]; p[i]=p[j]; b[j]=temp; p[j]=temp1; } } } w[0]=0; for(i=0;i<n;i++) w[i+1]=w[i]+b[i]; for(i=0;i<n;i++) { t[i]=w[i]+b[i]; awt=awt+w[i]; att=att+t[i]; } awt=awt/n; att=att/n; printf("\n\t process \t waiting time \t turn around time \n"); for(i=0;i<n;i++) printf("\t p[%d] \t %d \t\t %d \n",p[i],w[i],t[i]); printf("the average waiting time is %f\n",awt); printf("the average turnaround time is %f\n",att); return 1; } OUTPUT Enter the number of process 5 Enter the burst times 2 4 5 6 8 Process Waiting Time Turnaround Time p[0] 0 2 p[1] 2 6 p[2] 6 11 p[3] 11 17 p[4] 17 25 The average waiting time is 7.200000 The average turnaround time is 12.200000 RESULT The program for SJF was implemented and hence verified PRIORITY SCHEDULING PROGRAM: #include <stdio.h> char procno[100]; float burst[100]; int priority[100]; void swap(int j); int main() { float start=0.00,wait=0.00,sum=0.00,bt=0.00,avgwait; int num,i; printf("Enter the number of processes :"); scanf("%d",&num); printf("Enter the process name ,priority,burst time\n"); for(i=0;i<num;i++) { scanf("%s",&procno[i]); scanf("%d",&priority[i]); scanf("%f",&burst[i]); } for(i=0;i<num;i++) { if(priority[i] > priority[i+1]) { swap(i); i=-1; } } printf("\n\n\t\t Gantt Chart \n\n"); printf("\n\n process name priority start burst\n"); for(i=1;i<=num;i++) { bt=start+burst[i]; printf("%c\t\t%d\t\t%f\t\t%f\n",procno[i],priority[i],start,bt); wait=wait+start; start=start+burst[i]; } avgwait=wait/num; printf("Average waiting time : %f ",avgwait); printf("Total running time :%f",start); return 0; } void swap(int j) { char temp; float tbt; int pri; temp = procno[j]; tbt=burst[j]; pri=priority[j]; procno[j]=procno[j+1]; priority[j]=priority[j+1]; burst[j]=burst[j+1]; procno[j+1]=temp; burst[j+1]=tbt; priority[j+1]= pri; } OUTPUT: Enter the number of processes :3 Enter the process name ,priority, burst time 1 2 12 2 1 4 3 5 7 Gantt Chart process name priority start burst 2 1 0.000000 4.000000 1 2 4.000000 16.000000 3 5 16.000000 23.000000 Average waiting time : 6.666667 Total running time : 23.000000 ROUND ROBIN SCHEDULING PROGRAM 1 : #include <stdio.h> int main() { float start=0.00,bt=0.00,sum=0.00,runt=0.00; float run[100],burst[100],wait[100]; float avgwait; char procno[100]; int num,i,in; printf("Enter the number of processes : "); scanf("%d",&num); printf("Enter the time quantum: "); scanf("%f",&runt); printf("Enter the process name and burst time:\n"); for(i=0;i<num;i++) { scanf("%s",&procno[i]); scanf("%f",&burst[i]); wait[i]=0;run[i]=0; } printf("\n\n\t\tGantt chart\n\n"); printf("process name \t start\t\t burst time\n"); in=1; while(in) { in=0; for(i=0;i<num;i++) { if(burst[i]!=0) { in=1; if(burst[i]>runt) { bt=start+runt; run[i]=run[i]+runt; printf("%c\t\t%f\t\t%f\n",procno[i],start,bt); start=start+runt; burst[i]=burst[i]-runt; wait[i]=start; } else { bt=start+burst[i]; run[i]=run[i]+burst[i]; wait[i]=bt; printf("%c\t\t%f\t\t%f\n",procno[i],start,bt); start=start+burst[i]; burst[i]=0; } } } } for(i=0;i<num;i++) { printf("waiting time for process %c = %f\n",procno[i],wait[i]-run[i]); sum=sum+wait[i]-run[i]; } avgwait = sum/num; printf("Average wait time of a process = %f\n",avgwait); printf("Total Running time of the processes = %f\n",start); return 0; } OUTPUT: Enter the number of processes : 3 Enter the time quantum: 4 Enter the process name and burst time: a 20 b 4 c 7 Gantt chart Process name Start Burst time a 0.000000 4.000000 b 4.000000 8.000000 c 8.000000 12.000000 a 12.000000 16.000000 c 16.000000 19.000000 a 19.000000 23.000000 a 23.000000 27.000000 a 27.000000 31.000000 Waiting time for process a = 11.000000 Waiting time for process b = 4.000000 Waiting time for process c = 12.000000 Average wait time of a process = 9.000000 Total Running time of the processes = 31.000000 PROGRAM 2 : IMPLEMENTATION OF ROUND ROBIN SCHEDULING ALGORITHM AIM To write a program to implement the round robin scheduling algorithm ALGORITHM 1. Start the process 2. Declare the array size 3. Get the number of elements to be inserted 4. Get the value 5. Set the time sharing system with preemption 6. Define quantum is defined from 10 to 100ms 7. Declare the queue as a circular 8. Make the CPU scheduler goes around the ready queue allocating CPU to each process for the time interval specified 9. Make the CPU scheduler picks the first process and sets time to interrupt after quantum expired dispatches the process 10. If the process have burst less than the time quantum than the process release the CPU 11. If the process have bust greater then time quantum then time will go off and cause interrupt to OS and the process put into the tail of ready queue and the schedule select next process 12. Display the results 13. Stop the process Program #include<stdio.h> int ttime,i,j,temp; main() { int pname[10],btime[10],pname2[10],btime2[10]; int n,x,z; printf("Enter the no. of process:"); scanf("%d",&n); printf("Enter the process name and burst time for the process\n"); for(i=0;i<n;i++) { printf("Enter the process name:"); scanf("%d",&pname2[i]); printf("Enter burst time for the process %d:",pname2[i]); scanf("%d",&btime2[i]); } printf("PROCESS NAME \t\t BURST TIME\n"); for(i=0;i<n;i++) printf("%d\t\t\t %d\n",pname2[i],btime2[i]); z=1; while(z==1) { ttime=0; for(i=0;i<n;i++) { pname[i]=pname2[i]; btime[i]=btime2[i]; } printf ("PRESS 1.ROUND ROBIN 2.EXIT\n"); scanf("%d",&x); switch(x) { case 1: rrobin(pname,btime,n); break; case 2: exit(0); break; default: printf("Invalid option"); break; } printf("\n\n If you want to continue press 1:"); scanf("%d",&z); } } rrobin(int pname[],int btime[],int n) { int tslice; j=0; printf("\n\t ROUND ROBIN SCHEDULING \n\n"); printf("Enter the time slice:\n"); scanf("%d",&tslice); printf("PROCESS NAME \t REMAINING TIME\t TOTAL TIME"); while(j<n) { for(i=0;i<n;i++) { if(btime[i]>0) { if(btime[i]>=tslice) { ttime+=tslice; btime[i]=btime[i]-tslice; printf("\n%d\t\t %d \t\t %d",pname[i],btime[i],ttime); if(btime[i]==0) j++; } else { ttime+=btime[i]; btime[i]=0; printf("\n%d\t\t %d \t\t %d",pname[i],btime[i],ttime); } } } } } OUTPUT Enter the no. of process: 4 Enter the process name and burst time for the process Enter the process name: 1 Enter burst time for the process 1: 8 Enter the process name: 2 Enter burst time for the process 2: 3 Enter the process name: 3 Enter burst time for the process 3: 6 Enter the process name: 4 Enter burst time for the process 4: 1 PROCESS NAME BURST TIME 1 8 2 3 3 6 4 1 PRESS 1.ROUND ROBIN 2.EXIT 1 ROUND ROBIN SCHEDULING Enter the time slice: 2 PROCESS NAME REMAINING TIME TOTAL TIME 1 6 2 2 1 4 3 4 6 4 0 7 1 4 9 2 0 10 3 2 12 1 2 14 3 0 16 RESULT The program for round robin scheduling was implemented and hence verified INTER-PROCESS COMMUNICATION MESSAGE QUEUES PROGRAM: #include <sys/types.h> #include <sys/msg.h> #include <sys/ipc.h> #define PERMS 0666 int main() { int i,msgqid; for(i=0;i<10;i++) { msgqid=msgget(i,PERMS|IPC_CREAT); printf("MSQID=%d\n",msgqid); } } OUTPUT: MSQID=-1 MSQID=32769 MSQID=65538 MSQID=98307 MSQID=131076 MSQID=163845 MSQID=196614 MSQID=229383 MSQID=262152 MSQID=294921 SHARED MEMORY SEGMENT PROGRAM: #include<stdio.h> struct proc { int pid; }p[10]; struct seg { int id; int base; int limit; }s[10][10] ; struct table { int sh1; int sh2; int se1; int se2; int BASE; int LIMIT; }t[10]; int main() { int i,j,k,m,nop; int nos=2,n=1; printf("ENTER NO OF PROCESSES:"); scanf("%d",&nop); for(i=1;i<=nop;i++) { printf("\nENTER PROCESS ID:"); scanf("%d",&p[i].pid); for(j=1;j<=nos;j++) { printf("\nENTER SEGMENT ID:"); scanf("%d",&s[i][j].id); printf("\nBASE:"); scanf("%d",&s[i][j].base); printf("\nLIMIT:"); scanf("%d",&s[i][j].limit); } } for(i=1;i<=nop-1;i++) { for(k=i+1;k<=nop;k++) { for(j=1;j<=nos;j++) { for(m=1;m<=nos;m++) { if(s[i][j].base==s[k][m].base && s[i][j].limit==s[k][m].limit) { t[n].sh1=i; t[n].sh2=k; t[n].se1=j; t[n].se2=m; t[n].BASE=s[i][j].base; t[n].LIMIT=s[i][j].limit; n++; } } } } } printf("\nSEGMENT TABLE\n"); for(i=1;i<=nop;i++) { printf("PROCESS %d\n",i); printf("SEGNO\tBASE\tLIMIT\n"); for(j=1;j<=nos;j++) { printf("%d\t",s[i][j].id); printf("%d\t",s[i][j].base); printf("%d\n",s[i][j].limit); } } for(i=1;i<=n-1;i++) { printf("\nPROCESSES %d AND %d SHARES SEGMENTS %d and %d ", t[i].sh1,t[i].sh2,t[i].se1,t[i].se2); printf("\nShared BASE\t%d",t[i].BASE); printf("\nShared LIMIT\t%d",t[i].LIMIT); } return 0; } PROGRAM 2: CREATION OF SHARED MEMORY AIM To write a program to implement a shared memory ALGORITHM 1. Start the process 2. Declare the size and data variables 3. Get the number of processes to be inserted 4. Get the value 5. Start and identify the process with process id 6. Make a common function to communicate with each process running in shared memory 7. Make the variables and arguments to be a global while in communication 8. Write a separate routine for creating memory delete memory in separate region 9. Give permission that a process can kill shared memory 10. Display the values 11. Stop the process PROGRAM #include<sys/types.h> #include<sys/shm.h> #include<sys/ipc.h> main() { int shmid; key_t key=0x10; shmid=shmget(key,100,IPC_CREAT|0666); if( shmid < 0 ) printf("\nFirst SHMID failed\n"); else printf("\nFirst SHMID Succeed id=%d \n",shmid); shmid=shmget(key,101,IPC_CREAT|0666); if(shmid<0) printf("\nSecond SHMID failed\n"); else printf("\nSecond SHMID Succeed id=%d \n",shmid); shmid=shmget(key,90,IPC_CREAT|0666); if(shmid<0) printf("\nThird SHMID failed\n"); else printf("\n Third SHMID Succeed id=%d \n",shmid); } OUTPUT First SHMID Succeed id=589836 Second SHMID failed Third SHMID Succeed id=589836 RESULT The program for creation of shared memory was implemented and hence verified. PRODUCER  CONSUMER PROBLEM USING SEMAPHORES PROGRAM 1: #include <stdio.h> void producer(); void consumer(); void test(int notpc,int ent); int enter,notproducer,notconsumer,i=0; int main() { int j; enter=0; for(j=1;j<=10;j++) { producer(); consumer(); } return 0; } void producer() { do { notproducer=1; while(notproducer) { if(enter) { notproducer=1; enter=0; } else { notproducer=0; enter=1; } if(!notproducer) { printf("Producer : %d \n",++i); enter=0; } } }while(enter); } void consumer() { do { notconsumer=1; while(notconsumer) { if(enter) { notconsumer=1; enter=0; } else { notconsumer=0; enter=1; } if(!notconsumer) { printf("consumer : %d \n",i); enter=0; } } }while(enter); } OUTPUT: Producer : 1 consumer : 1 Producer : 2 consumer : 2 Producer : 3 consumer : 3 Producer : 4 consumer : 4 Producer : 5 consumer : 5 Producer : 6 consumer : 6 Producer : 7 consumer : 7 Producer : 8 consumer : 8 Producer : 9 consumer : 9 Producer : 10 consumer : 10 PROGRAM 2: PRODUCER CONSUMER PROBLEM #include<stdio.h> int mutex=1,full=0,empty=3,x=0; main() { int n; void producer(); void consumer(); int wait(int); int signal(int); printf("\n1.PRODUCER\n2.CONSUMER\n3.EXIT\n"); while(1) { printf("\n Enter your choice\n"); scanf("%d",&n); switch(n) { case 1: if((mutex==1)&&(empty!=0)) producer(); else printf("BUFFER IS FULL"); break; case 2: if((mutex==1)&&(full!=0)) consumer(); else printf("BUFFER IS EMPTY"); break; case 3: exit(0); break; } } } int wait(int s) { return(--s); } int signal(int s) { return(++s); } void producer() { mutex=wait(mutex); full=signal(full); empty=wait(empty); x++; printf("\n producer produces the item %d", x); mutex=signal(mutex); } void consumer() { mutex=wait(mutex); full=wait(full); empty=signal(empty); printf("\n consumer consumes item %d", x); x--; mutex=signal(mutex); } OUTPUT:- 1. PRODUCER 2. CONSUMER 3. EXIT Enter your choice 1 Producer produces the item1 Enter your choice 1 Producer produces the item2 Enter your choice 1 Producer produces the item3 Enter your choice 1 Buffer is full Enter your choice 2 Consumer consumes item3 Enter your choice 2 Consumer consumes item2 Enter your choice 2 Consumer consumes item1 Enter your choice 2 Buffer is empty Enter your choice 3 MEMORY MANAGEMENT PROGRAM: #include<stdio.h> main() { int hole[50],i,n,j,temp; int process[25],m,choice,fit[50]={0}; printf("\t\t\n ENTER NUMBER OF PARTITION"); scanf("%d",&n); for(i=1;i<=n;i++) { printf("\n ENTER SIZE OF HOLE %d\t",i); scanf("%d",&hole[i]); } printf("\nENTER NO OF PROCESSES:"); scanf("%d",&m); for(i=1;i<=m;i++) { printf("\nENTER SIZE OF PROCESS %d\t",i); scanf("%d",&process[i]); } do { printf("\nMENU\n1.FIRST FIT\n2.BEST FIT\n3.WORST FIT\n4.EXIT\n"); scanf("%d",&choice); switch(choice) { case 1: {int flag[50]={0}; printf("\nFIRST FIT\n"); printf("\nPROCESS ID\tPROCESS SIZE\t HOLE ID\t HOLE SIZE\tINTERNAL FRAGMENTATION"); for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { if(process[i]<=hole[j] && flag[j]==0) { flag[j]=1; fit[i]=1; printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d\n", i,process[i],j,hole[j],hole[j]-process[i]); break; } } } for(i=1;i<=m;i++) { if(fit[i]==0) printf("\nTHE PROCESS %d WITH SIZE %d CAN NOT FIT INTO ANY HOLE",i,process[i]); } } break; case 2: {int flag[50]={0}; printf("\nBEST FIT\n"); printf("\nPROCESS ID\tPROCESS SIZE\t HOLE ID\t HOLE SIZE\tINTERNAL FRAGMENTATION"); for(i=1;i<=m;i++) { for(j=i+1;j<=m;j++) { if(hole[i]>hole[j]) { temp=hole[i]; hole[i]=hole[j]; hole[j]=temp; } } } for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { if(process[i]<=hole[j] && flag[j]==0) { flag[j]=1; fit[i]=1; printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d\n", i,process[i],j,hole[j],hole[j]-process[i]); break; } } } for(i=1;i<=m;i++) { if(fit[i]==0) printf("\nTHE PROCESS %d WITH SIZE %d CAN NOT FIT INTO ANY HOLE",i,process[i]); } } break; case 3: {int flag[50]={0}; printf("\nWORST FIT\n"); printf("\nPROCESS ID\tPROCESS SIZE\t HOLE ID\t HOLE SIZE\t INTERNAL FRAGMENTATION"); for(i=1;i<=m;i++) { for(j=i+1;j<=m;j++) { if(hole[i]>hole[j]) { temp=hole[i]; hole[i]=hole[j]; hole[j]=temp; } } } for(i=1;i<=m;i++) { for(j=n;j>=1;j--) { if(process[i]<=hole[j] && flag[j]==0) { flag[j]=1; fit[i]=1; printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d\n", i,process[i],j,hole[j],hole[j]-process[i]); break; } } } for(i=1;i<=m;i++) { if(fit[i]==0) printf("\nTHE PROCESS %d WITH SIZE %d CAN NOT FIT INTO ANY HOLE",i,process[i]); } } break; case 4: exit(0); break; } }while(1); } IMPLEMENTATION OF MEMORY ALLOCATION USING PAGING PROGRAM 1: #include<stdio.h> #include<string.h> struct page { int pageno; int frameno; char valid; }pagetable[5]; struct pmemory { int frameno; char content[5][10]; int valid; }m[6]; struct lmemory { char content[6][10]; }l[6]; main() { int i,j,k,nop,x,addr; char name[10],str[10]; for(i=0;i<6;i++) m[i].valid=0; for(i=0;i<6;i++) for(j=0;j<5;j++) strcpy(m[i].content[j]," "); m[1].valid=m[3].valid=1; printf("\nINITIALIZE TWO MEMORY BLOCKS"); printf("\nBLOCK 1\n"); for(i=0;i<5;i++) { scanf("%s",str); strcpy(m[1].content[i],str); } printf("\nBLOCK 3\n"); for(i=0;i<5;i++) { scanf("%s",str); strcpy(m[3].content[i],str); } for(i=0;i<5;i++) { pagetable[i].valid='i'; pagetable[i].frameno=0; } printf("\nENTER THE PROCESS NAME:"); scanf("%s",name); printf("\nENTER NO OF PAGES IN THE PROCESS %s:",name); scanf("%d",&nop); k=1; for(i=0;i<nop;i++) { pagetable[i].pageno=i; pagetable[i].valid='v'; printf("\nENTER CONTENTS OF PAGE %d",pagetable[i].pageno); while(m[k].valid==1) k++; x=0; for(j=0;j<5;j++) { pagetable[i].frameno=k; m[k].valid=1; scanf("%s",l[i].content[j]); strcpy(m[k].content[x],l[i].content[j]); x++; } } printf("\nPAGE TABLE\n"); printf("PAGE NO\tFRAME NO\n"); for(i=0;i<5;i++) printf("\n%d\t%d\t",pagetable[i].pageno, pagetable[i].frameno); printf("\nMAIN MEMORY\n"); printf("FRAME NO ADDRESS CONTENTS"); addr=0; for(i=0;i<6;i++) { printf("\n%d",i); for(j=0;j<5;j++) { printf("\t\t%d\t%s\n",addr,m[i].content[j]); addr++; } printf("----------------------------------------\n"); } } IMPLEMENTATION OF MEMORY ALLOCATION USING PAGES Program 2: #include<stdio.h> struct ptable { int pno, staddr; }p[50]; struct pcount { int pnum; char data[50]; }pg[50][50]; main() { int n,psize, i,j,k,st,pagenum,disp,phyaddr,laddr,found=0; printf("\n MEMORYIFORMATION\n"); printf("***************\n"); printf("\n Enter the number of pages:\n"); scanf("%d",&n); printf("Enter the page size:\n"); scanf("%d", &psize); for(i=1;i<=n;i++) { printf("\n Enter the starting addresss for page[%d]:\n",i); scanf("%d",&st); for(j=1;j<=psize;j++) { printf("page[%d]\tData:",st); scanf("%s", pg[i][j].data); pg[i][j].pnum=st; st=st+1; } } printf("\n MEMORY \n"); printf("**********\n"); for(i=1;i<=n;i++) { for(j=1;j<=psize;j++) { printf("\n page[%d]\t Data:%s\n", pg[i][j].pnum, pg[i][j].data); } } printf("\n page table details\n"); printf("***********************"); printf("\n Enter the starting address for the pages:",i); for(k=1;k<=n;k++) { printf("page [%d] \t starting address:\n",k); p[k].pno=k; scanf("%d", &p[k].staddr); } printf("\n pageno\t starting address\n"); for(k=1;k<=n;k++) { printf("\n %d\t\t%d\n", p[k].pno, p[k].staddr); } printf("\nEnter the logical addressL:\n"); scanf("%d", &laddr); pagenum=laddr/100; disp=laddr%100; printf("\n pageno%d\tdisp%d\n", pagenum, disp); for(k=1;k<=n;k++) if(p[k].pno==pagenum) { phyaddr=p[k].staddr+disp; found=1; break; } if(found==1) { printf("\n physical address%d\n", phyaddr); for(j=1;j<=psize;j++) { if(pg[pagenum][j].pnum==phyaddr) printf("\nData%s\n",pg[pagenum][j].data); } } else printf("\n not found\n"); } OUTPUT:- MEMORYIFNORMATION *************** Enter the number of pages: 2 Enter the page size: 2 Enter the starting address for page[1]: 100 page[100] Data: blue page[101] Data: green Enter the starting addresss for page[2]: 200 page[200] Data: red page[201] Data: yellow MEMORY ********** page[100] Data: blue page[101] Data: green page[200] Data: red page[201] Data: yellow PAGE TABLE DETAILS *********************** Enter the starting address for the pages: page [1] starting address: 100 page [2] starting address: 200 Pageno Starting address 1 100 2 200 Enter the logical address L: 0101 pageno1 disp1 Physical address101 Data: green FILE MANIPULATIONS #include<stdio.h> #include<string.h> main() { int option; char file1[20],file2[20],str[50]; do { printf("\nMENU\n"); printf("1.COPYING A FILE\n2.RENAMING A FILE\n3.DELETING A FILE\n4.LISTING FILE\n5.COMPILING A FILE\n6.EXIT\n"); printf("ENTER YOUR CHOICE:"); scanf("%d",&option); switch(option) { case 1: printf("\nENTER SOURCE FILE NAME:"); scanf("%s",file1); printf("\nENTER DESTINATION FILE NAME:"); scanf("%s",file2); strcpy(str,"cp "); strcat(str,file1); strcat(str," "); strcat(str,file2); system(str); printf("\nFILE COPIED\n"); system("ls"); strcpy(str,""); break; case 2: printf("\nENTER FILE NAME:"); scanf("%s",file1); printf("\nENTER NEW FILE NAME:"); scanf("%s",file2); strcpy(str,"mv "); strcat(str,file1); strcat(str," "); strcat(str,file2); system(str); printf("\nFILE RENAMED\n"); system("ls"); strcpy(str,""); break; case 3: printf("\nENTER FILE NAME:"); scanf("%s",file1); strcpy(str,"rm "); strcat(str,file1); system(str); printf("\nFILE REMOVED\n"); system("ls"); strcpy(str,""); break; case 4: system("ls"); break; case 5: printf("\nENTER ANY .c FILE NAME:"); scanf("%s",file1); strcpy(str,"cc "); strcat(str,file1); system(str); system("./a.out"); strcpy(str,""); break; case 6: exit(0); break; } }while(1); } KTVR  KPET CS2257  OPERATING SYSTEM LAB IV SEM  PAGE 1 KTVR KNOWLEDGE PARK FOR ENGINEERING & TECHNOLOGY Maddhampalayam, Mettupalayam Road, Coimbatore 19.  (fj68¥vv\\??(-B*CJ(mH sH 5PJnH^JaJ(_HtH\8B*CJ8mH sH >*5PJnH^JaJ8_HtH\OJQJ2B*CJ mH sH 5PJnH^JaJ _HtHOJQJ'B*CJmH sH PJnH^JaJ_HtH5B*CJ0mH sH 5PJnH^JaJ0_HtH]OJQJ8B*CJ0mH sH 5PJnH^JaJ0_HtH]\OJQJ2B*CJmHsH5PJnH^JaJ_HtHOJQJ;UjB*CJmHsH5PJnH^JaJ_HtHOJQJ jU8\^vxVX6X p b$Ͳ|aaIIIIIIIIIIIIIIIIa/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ5B*CJ(mH sH 5PJnH^JaJ(_HtH\OJQJ5B*CJ(mH sH 5PJnH^JaJ(_HtH\OJQJ-B*CJ(mH sH 5PJnH^JaJ(_HtH\5B*CJ(mH sH 5PJnH^JaJ(_HtH\OJQJ!!`"l"%%̮{{``{{{F{{2B*CJmH sH PJnH^JaJ_HtH]OJQJ5B*phCJmH sH PJ nH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ;B*CJmH sH >*5PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ%%%&<''((((((((((((())))) ) ))))))))))))+++++---Ĭɏttɏɏ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ8B*CJmH sH >*5PJnH^JaJ_HtH\OJQJ/B*CJmHsHPJnH^JaJ_HtHOJQJ jU/B*CJmH sH PJnH^JaJ_HtHOJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ,---//(/*/`1b1x1z1222222222233αΓsU:5B*phCJmH sH PJnH^JaJ_HtHOJQJ;B*phCJmH sH 5PJnH^JaJ_HtH\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ jU;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ8B*CJmH sH >*5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ2B*CJmH sH >*PJnH^JaJ_HtHOJQJ3H3L3V3333333333&4*464f4j4z4444455@5D5F5h5p555555566&6:6>6N6666666"7&787^7b7j7777777 888P8T8\88ǩ;B*phCJmH sH 5PJ nH^JaJ_HtH\OJQJ8ZB*phCJmH sH PJnH^JaJ_HtHOJQJ5B*phCJmH sH PJnH^JaJ_HtHOJQJB888888,90989P9T9b9999999:::^:b:f:::::::::;";&;:;`;d;r;;;;;;;<"<.<㮐x/B*CJmH sH PJnH^JaJ_HtHOJQJ;B*phCJmH sH 5PJnH^JaJ_HtH\OJQJ3B*phOCJmH sH 5PJnH^JaJ_HtH\5B*phCJmH sH PJnH^JaJ_HtHOJQJ8ZB*phCJmH sH PJnH^JaJ_HtHOJQJ/.<\<`<n<<<<<<<B=F=T========> >>:>>>N>r>v>~>>>>>??"?6?:?H?p?t???????? @@@.@2@:@P@T@^@~@@@@@@A"A,ANAǩǩ;B*phCJmH sH 5PJ nH^JaJ_HtH\OJQJ8ZB*phCJmH sH PJnH^JaJ_HtHOJQJ5B*phCJmH sH PJnH^JaJ_HtHOJQJBNARA`AAAAAAA(B,BBBNB~BBBBBBCC*CfCjC|CCCCC.D2D>DDDDDDDDD EE.E2E6EREXEEEEEEEEEF$F(F4FZF㖪'B*CJmH sH PJnH^JaJ_HtH;B*phCJmH sH 5PJ nH^JaJ_HtH\OJQJ5B*phCJmH sH PJnH^JaJ_HtHOJQJ8ZB*phCJmH sH PJnH^JaJ_HtHOJQJ;ZF^FfFFFFFFFFFGPGTG\GxG|GGGGGHH$HdHhHrHHHHHHHH㴖xxX>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ'B*CJmH sH PJnH^JaJ_HtH5B*phCJmH sH PJnH^JaJ_HtHOJQJ8ZB*phCJmH sH PJnH^JaJ_HtHOJQJ!HHHHHPI`IbIIIIJJJJJJ`KpK|K~KKKKLlLnLxLzLLLLBMMMMMMM&N(N*NbNdNvNxNNNNNNNNN4O6OO@OFOLOOPP$P0PBPPP0Q^x^^^____*_2_6____ ` `6`8`v````````FaVa\aaaab5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJPbbpbrbzb|bbbbcc0cccddddeeXeZeeeeee8fHfTfvfxffffffff,g.g0gpgrggghhRhThhhhhDiFiiiiiiiiDjFjXjbjjjjj>kkkkkkkkkl/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJPll(l*l,lllnlllllllllllm(m*mmmmnn\n^n`nbnhnjnlnnnnnnn o oooooooooooo(p*p8p:pXpZp^ppppppqLqNqlqnqrqxszs|s~sssss:t}@}D}F}J}L}P}R}T}}}}}}}}}}}}}}}}}}J~L~N~X~Z~~~rtLN؀ڀ܀ހ䮮;B*phCJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ9*,Flnh̅΅؅:JƇȇЈ҈|~&2ŠΊ<N$06@ȰȰ5B*CJmH sH 6PJnH^JaJ_HtH]OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ8B*CJmH sH 5PJnH^JaJ_HtH]\OJQJ:@DFHlnLڐLNz|ΕZ\p (4NRZңԣDF|ޥ@RXl8:df5B*CJmH sH 6PJnH^JaJ_HtH]OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJE̪xƫȫPRrtȭʭЭԭ<Tl֮h֯د&>`b24R\~~DN|~ $籱籱籱籱籱5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ5B*CJmH sH 6PJnH^JaJ_HtH]OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJEJLpvxxz:<&( RTnpȻfh RT~粲2B*CJmH sH 5PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJDxz:<˫usksMsu/u;B* phwCJmH sH 5PJnH^JaJ_HtH\OJQJ:0JDCJmH sH 5PJnH^JaJ_HtH\0JDOJQJjUU5B* phwCJmH sH PJnH^JaJ_HtHOJQJ5B*phCJmH sH PJnH^JaJ_HtHOJQJ>B*phCJmH sH >*5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ8B*phCJmH sH 5PJnH^JaJ_HtHOJQJ@BD^`~,.bh*8PT^d ĞĞxxpĞxjU;B* phwCJmH sH 6PJnH^JaJ_HtH]OJQJjU:0JDCJmH sH 5PJnH^JaJ_HtH\0JDOJQJjUU5B* phwCJmH sH PJnH^JaJ_HtHOJQJ;B* phwCJmH sH 5PJnH^JaJ_HtH\OJQJ+\b68  "Ƭv\vvvvvvv\vv\vvvvvvvvv\vv2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ;B*phCJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH >*PJnH^JaJ_HtHOJQJ5B* phwCJmH sH PJnH^JaJ_HtHOJQJ;B* phwCJmH sH 5PJnH^JaJ_HtH\OJQJ^`0pz|~0dj.0~P68ɮɖ|||bɖ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ2B*CJmH sH PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ-B*phCJmH sH PJnH^JaJ_HtH>B*phCJmH sH >*5PJnH^JaJ_HtH\OJQJ& "$&(*,Z\^b28:`b 6Ͳt>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH >*PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ$68:LNZ`jln~.Lj(JLNPRvxz| :\fNX̮>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ7xz*0Dd*:LR V>L:H第2B*CJmH sH >*PJnH^JaJ_HtHOJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ9:lzLZdnprt 26f ">`v  < B t z        & * f        ( D f |        B 5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJPB F l p z         @ B D F p r t        ,n&>hx& hx`r|"Hn@N第5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJCNnrT zBh68^VdP^vx6\"*,RxJXx|> : t    !!H!J!p!!/B*CJmH sH PJnH^JaJ_HtHOJQJ[!!"."h"v""""""#D#|###$$$D$H$J$L$N$r$t$v$$$$$%"%>%V%%%%%&&8&&&&&'@'`''''J(d((( ))ɩ玎5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ7)))*),)d)v)))))))**4*V*****++$+2+R+V++++,,R,d,x,,,,,,--&-R------. ...N.R......4/F/Z/l/~////000005B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJF06080L0N0V00000 111"1D1N1111112"2(2J2T222222@3H3N3n3x33333334B444B5D5F5H5z5|5~555506ȭȭ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ806D6~6666 777H7L7V7Z77777777,868x88888888:9h9n99999 : :::0:2:>::::;;;4;>;@;B;R;T;;;;< <<<<<<$<*<>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJC*<,<T<V<X<j<l<x<<<<<=B=L===========>(>*>0>2>\>^>Ǭp;B*phCJmH sH 5PJnH^JaJ_HtH\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ^>>>>>>>>>? ?n?????(@.@0@2@B@D@`@b@h@j@@@@@@@A A A"APARATAfAhAtAAAAŭrŭ8B*CJmH sH >*5PJnH^JaJ_HtH\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*phCJmH sH >*5PJnH^JaJ_HtH\OJQJ,AABB,BLBVBXBhBjBBBBBBBBBBBBBC CCJCvCCCCCCC D2DXDbDDDDDDDDD$E&E(E*E箎>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ0*ELEZEhElEnEzEEEEF FFF,FB*phCJmH sH >*5PJnH^JaJ_HtH\OJQJ8HHHHII2I6I8IZI\I^I`IbIdIfIhIjIlInIpIrItIIIIIIIJ:J^JJJJJJJJHKnKpKKKp;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ+KKKKKKKKKK0LVL`LLLLLLLLLMMM0M2MDMFMRM\MMMMMMN6NTNNNNN0ODOpOzOOOOOPNPbPxPPPǬ>B*phCJmH sH >*5PJnH^JaJ_HtH\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ7PPQ"Q\QfQQQQRRDRJRRRRRRRRRRRRS$S4SFSXShSSSSSSTT:TVTXT|TTTTTTTT(UPU^U`UUUUVBVDVhVtVVVVVVVVW8WFWtWWWWWXBXXXXY5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJPYRYYYYZXZZZZ[B[D[F[H[J[[[[[[[[[(\N\n\x\\\\]]<]B]D]F]V]X]].^N^P^R^T^V^X^Z^\^^^`^b^d^f^h^l^Ǭ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ7l^^^^^^^^"_8_<_>_P_R_j_l_______H`J`N`P`Z`\```d```,a.a2aFaJaLaNa^a`aaaaa¤qqq5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ,abBbvbbbbbbbb"c8ccRcTclcnccccc2dFdJdLdNd^d`dbdddd eBeDeFeHereteeǦk>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJAB*phCJmH sH >*5PJnH^JaJ_HtH]\OJQJ>B*phCJmH sH 5PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ)eeeef.fdfhfjffffffffgfghglgng|g~gggggggggggg,h^h`hbhdhhhhhhhi:irivixiiiiiiij j.j0jxjjjjjjjj>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJCj*5PJnH^JaJ_HtHOJQJ8B*phCJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ0|||||||||||||}$}(}*}:}<}v}x}}}}} ~~L~P~R~T~d~f~~~~~~~~~~&Lbĩsĩ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ5B*phCJmH sH PJnH^JaJ_HtHOJQJ-bfh|2h|΀Ѐ " &8>ʆІ htćЇ &.2̮5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ;B*phCJmH sH 5PJnH^JaJ_HtH\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ92>VbЈ܈   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdȉʉ̉6DRTf粲2B*CJmH sH 5PJnH^JaJ_HtHOJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJFfh֊&8LN|"&*0LRjp|~Œƌ  fhz|č"&:RTlʎΎЎblpr؏ڏ68Nζ/B*CJmHsHPJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJGNPTVXj&( $,&(,4HPrz“*<L^lpxĔԔ<L^jnȕ̕ܕ<Ljz粲2B*CJmH sH 5PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJFҖ֖D\xҗԗ֗:PTVz| "|~ "HJNRǩ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ7ޛ@DfjœĜ<>ĝȝʝ̝ܝޝ$ĞƞVrtv  粲}2B*CJmH sH >*PJnH^JaJ_HtHOJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ1Ԣd>Ƥ&48 P`f¦&6Zz ,Lrz >N`Ʃ$FV^v$4Xhn~ث絵/B*CJmHsHPJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJGNʬ2Hx|PhXZ\^`bpr Fjȱ̱α02LN̲βDFl筒5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ9lnrvسڳ޳ @DHN`frvz|ȴʴjlĵȵ(,NR~$&ҷַط(*,.JLz|̸θJι5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJPι $&( pֻػ2&ڽhF箮v[vvvvv5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ;B*phCJmH sH 5PJnH^JaJ_HtH\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ#Fnpr:`2R,<Bdtz8@f.J絵/B*CJmHsHPJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ4Jp(,DHXz"0N^bx .\ptv  .nXϷ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ/B*CJmHsHPJnH^JaJ_HtHOJQJ=248`rt,BFH"$HJ"VZ"*6:>@D<@Bhͭ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ2B*CJmH sH 6PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ9hj>Bf&*LPRhj,.df ^&(*,v (*,.02468;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJD8:<>@BDFHJLNPRTVXZ\^`bdfhjlRT\^ǩvvvvvvvvvvvvvvvvv/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ.^^` $&ln 6:>Ddjnv|  *26@fp*4`jfj/B*CJmH sH PJnH^JaJ_HtHOJQJ[<>,` 8:"r^`H,.Xf粲粲5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ;vDP`(,<*JZ"2:n6Fhx(.@Pthx͵/B*CJmH sH PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJG@`n~0d @NTXfhn| | *8>hv~ /B*CJmH sH PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJQ <Jhv|&(`LL0l絛hhhhhhhhhhhhhhhhhhhhh/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ(   J L |  D   0    & l             r t x z    糳zZzZ>B*CJmH sH 6>*5PJnH^JaJ_HtH]\OJQJ;B*CJmH sH 65PJnH^JaJ_HtH]\OJQJ5B*CJmH sH 65PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ2B*CJmH sH >*PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ#     Bl<>xz~ &@Zt(:<Lbfv ,<N^5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJE^p(F"Px|"X\*04<dnr~ L\`t$Th0/B*CJmHsHPJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJQ0XZ^b JP $(z~VXZnpDfr  !H!r!̲2B*CJmH sH 5PJnH^JaJ_HtHOJQJ2B*CJmH sH >*PJnH^JaJ_HtHOJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ;r!t!v!!!!"""*"J"""" ## #####B$L$Z$$ %$%4%|%%%%&&&&N&v&&&&&&&f'h''''ͲͲ痲|5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ5B*CJmH sH 65PJnH^JaJ_HtHOJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJ0'''(&(H(((((((())8):)>)D)\)b)z)|)))))))))))))"*(*,*.*B*D*H*L*j*n***************++ ++X+d+v+~++++++++++++++,/B*CJmH sH PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJP, ,0,4,8,:,N,P,T,X,v,z,,,,,,,,,,,,,,, ----X-`-r-x-|-------------.(.B.\.v....../,/F/`/z////////0̱5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJE0 0D00000001(11111122&2\2t2~222233&3\3j3z3333333333 44*4.4N4R4x4444,5V5Z5z5~5555F6P6z6~666666666ɯ2B*CJmH sH >*PJnH^JaJ_HtHOJQJ;B*phCJmH sH 5PJnH^JaJ_HtH\OJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJE66677<7>7b7f7777788&8*8H8J8n8r8888888"9&9V9X9|99999999::(:6:::>:p:t:::; ;@;D;h;l;p;;;;<< <R<V<v<z<<<<<5B*CJmH sH 5PJnH^JaJ_HtH\OJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJE<0=4=8=<=B=F=J=N===>>">&>*>b>>>?J?????? @`@h@r@v@@@AArAAAAAAAABtBBBC CCVCCCDU\UzU~UUUUUUUU VͲ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJF VVV:VHVVVZV\VVVVVVVVW"WDWWWWW X X:XZZZZZ[ [D[F[P[R[x[z[~[[[X\\\\\\\]Z]]]]]]]^^@^B^d^^^^/B*CJmH sH PJnH^JaJ_HtHOJQJ[^$_&_z_|_______``d`x`~`````````^a`avaxaaaaaa bb"b@bZbhblbb"c\cccd@dddhdde.e2eneeeeeefDfhflffff g$g(gng̯8B*CJmH sH >*5PJnH^JaJ_HtH\OJQJ5B*CJmH sH >*5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJEngg(hLhPhhhhhRiviziii4j^jjjk(kTkXkkkkkkk&lRlVllllll2m6m8m:mprptpvppppp q`qbqqqqq,r.r0rVrXrZrrrrrrrrrr"s$ss@sBsDsFsHsJsLsNsPsRsTsVsXsZs\s^s`sbsdsfshsjslsnspsrstsvsxszs|s~sssssssssss2B*CJmH sH 5PJnH^JaJ_HtHOJQJ/B*CJmH sH PJnH^JaJ_HtHOJQJQsssssss tttt6t8t|t~tttttuuv v&vvv w6wbwwwwx>x`xxxxy@ypyyy z6zbzzzz {:{T{{{{{>|n|||| }J}l}}}}}H~x~~~~Bh|/B*CJmH sH PJnH^JaJ_HtHOJQJ2B*CJmH sH 5PJnH^JaJ_HtHOJQJQnrtV\~xr\H'B*CJmH sH PJnH^JaJ_HtH*B*CJ$mH sH 5PJnH^JaJ$_HtH CJ25aJ2 CJ45aJ4QB*CJmH sH PJnH^JaJ_HtHUB*CJmH sH PJnH^JaJ_HtH'B*CJmH sH PJnH^JaJ_HtH*B*CJmH sH PJnH^JaJ_HtHUCJ5aJ\OJ QJ CJ5aJOJ QJ /B*CJmH sH PJnH^JaJ_HtHOJQJ (fj68\^vx$a$$a$$a$$a$$a$$a$$a$dh$a$dhdhdh$a$dh$a$dh$a$dh$a$VX6X p ddddddddddd$a$d$a$d$a$d$a$ ^]` b$d$a$d$a$d$a$^]`d$a$$a$d$a$ddddddddd!!%%%%&<''((((( d$a$ 7$ & Fd$a$ 7$^]` d$a$7$d$a$7$^]`Ld$a$^]`Ld$a$^]`(((((((())))) ) ))))d$a$d$a$d$a$d$a$d$a$d$a$d$a$d$a$d$a$d$a$d$a$d d$a$ 7$))))))))++++---d$a$d$a$d$a$d$a$d$a$d$a$d$a$^]`d$a$d$a$d$a$d$a$d$a$d$a$d$a$--//(/*/`1b1x1z122wd$a$^]`d$a$^]`d$a$^]`d$a$d$a$d$a$^]`d$a$d$a$d$a$d$a$d$a$ 2222222233L3N3V3i1$$40il4444 $d$a$G$A$d$a$d$a$d$a$d$a$d$a$d$a$d$a$^]`d$a$^]` V3333333333*4]1$$40il44441$$40il44441$$40il4444 $d$a$G$A$ *4,464j4l4z44445]1$$40il44441$$40il4444 $d$a$G$A$1$$40il4444 555D5F5H5h5p55|Hd$a$1$$40il4444 $d$a$A$ $d$a$G$A$1$$40il44445555556 6&6>6]1$$40s44441$$40s4444 $d$a$G$A$1$$40s4444 >6@6N6666666&7]1$$40s44441$$40s4444 $d$a$G$A$1$$40s4444 &7(787b7d7j77777]1$$40s44441$$40s4444 $d$a$G$A$1$$40s4444 777888T8V8\88]1$$40s44441$$40s4444 $d$a$G$A$1$$40s4444 888888092989T9]1$$40s44441$$40s4444 $d$a$G$A$1$$40s4444 T9V9b9999999:]1$$40s44441$$40s4444 $d$a$G$A$1$$40s4444 :::b:d:f:::::tYQd$a$ & Fd$a$ ^]` & Fd$a$ ^]`1$$40s4444 $d$a$G$A$1$$40s4444 :::::;&;(;:;d;]1$$40Kd44441$$40Kd4444 $d$a$G$A$1$$40Kd4444 d;f;r;;;;;;;"<]1$$40Kd44441$$40Kd4444 $d$a$G$A$1$$40Kd4444 "<$<.<`<b<n<<<<<]1$$40Kd44441$$40Kd4444 $d$a$G$A$1$$40Kd4444 <<<F=H=T=====]1$$40Kd44441$$40Kd4444 $d$a$G$A$1$$40Kd4444 ==== >>>>>@>N>U1$$40G44441$$40G4444 $d$a$G$A$Hd$a$1$$40Kd4444 N>v>x>~>>>>>??U1$$40[4444Hd$a$1$$40G44441$$40G4444 $d$a$G$A$ ?"?:?DDDU1$$40 >44441$$40 >4444Hd$a$1$$40Y4444 $d$a$G$A$ DDDDDDE E2E}$d$a$  G$A$1$$40 >44441$$40 >4444 $d$a$G$A$2E4E6EREXEEEEE1$$404444 $d$a$G$A$Hd$a$d$a$1$$40 >4444EEEEEF(F*F4F^F]1$$4044441$$404444 $d$a$G$A$1$$404444 ^F`FfFFFFFFFF]1$$4044441$$404444 $d$a$G$A$1$$404444 FGGTGVG\G|G~GGG]1$$4044441$$404444 $d$a$G$A$1$$404444 GGGHH$HhHjHrHH]1$$4044441$$404444 $d$a$G$A$1$$404444 HHHHHHHHHPI`IIIsn$a$$a$^]`$a$$a$^]h`h & F$a$ hh^h]`$a$JJ$a$J$a$J$a$$a$1$$404444 IJJJJ`KpK|K~KKKL~m$a$h^h]`$a$h^h]`$a$h^h]`$a$h^h]`$a$h^h]`$a$$a$h^h]` & F$a$ hh^h]`$a$$a$$a$ LlLnLxLLLLBMMMMMq`$a$h^h]`$a$ 8^]` & F $a$ 88^8]`$a$^]h`h$a$^]h`h$a$ & F $a$ hh^h]`$a$h^h]`$a$h^h]` MMM&N(N*NbNdNvNxNNNt$a$h^h]h`h$a$h^h]h`h$a$h^h]h`h$a$h^h]h`h$a$h^h]h`h$a$h^h]h`h$a$h^h]`$a$$a$$a$$a$ NNNNNNN4O6OO@OFOOP$P0PBPP0QpQQR{$a$$a$$a$$a$$a$h^h]`$a$$a$$a$^]`$a$$a$ & F$a$ hh^h]`$a$h^h]`$a$h^h]h`h RRRRRRSSSfTT6U8U@UHU{ & F$a$ hh^h]`$a$M$a$M$a$M$a$M$a$M$a$ & F$a$ ^]`$a$^]`$a$$a$^]`$a$$a$$a$HUUUUUUVVVbWdWWWW{v$a$$a$^]`$a$$a$$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$$a$$a$$a$ WWWWWWWXXXX4Yy$a$^]`$a$$a$$a$$a$ & F$a$ hh^h]`$a$$a$^]`$a$^]`$a$^]`$a$^]` 4Y`YbYY8Z:Z^x^^^____*_{$a$$a$$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$$a$$a$$a$ *_2___ ` `6`8`v````~m$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$$a$$a$$a$ & F$a$ hh^h]` ````FaVaaaabbpbra$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$$a$$a$ & F$a$ hh^h]`$a$^]`$a$^]` pbrbzbbbcc0cccddud$a$^]` & F$a$ ^]` & F $a$ ^]` & F$a$ ^]`$a$$a$$a$$a$$a$ & F$a$ hh^h]`$a$^]` dddeeXeZeeeewf$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]` ee8fHfvfxfffffff~m$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$$a$$a$$a$ & F $a$ hh^h]` ff,g.g0gpgrggghwf$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]` hhRhThhhhhDiFiwf$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]` FiiiiiiiDjFjXjjjj$a$$a$$a$$a$$a$$a$$a$ & F $a$ hh^h]`$a$^]`$a$^]`$a$^]`$a$^]` jj>kkkkkkkksbQ$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]` & F $a$ 88^8]` & F$a$ ^]` & F$a$ ^]` kll(l*l,lllnllllwfa$a$$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]` lllllll(m*mmmmn$a$^]`$a$^]`$a$^]`$a$^]`$a$$a$$a$$a$$a$$a$ & F $a$ hh^h]`$a$ nn\n^n`nbnhnjnnnp_$a$<^<]`$a$<^<]`$a$<^<]` & F $a$ hh^h]`$a$<^<]`$a$<^<]`$a$^]`$a$^]`$a$^]` nnnn o ooooooo|wrm$a$$a$$a$$a$ & F $a$ hh^h]`$a$<^<]`$a$<^<]`$a$<^<]`$a$<^<]`$a$<^<]`$a$<^<]` ooo(p*p8p:pXpZp^ppppppqLqNq$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$Nqlqnqrqxszs|sssss:t}wf$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h >}@}D}F}J}L}P}R}T}}wf$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h }}}}}}}}}}wf$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h }}}}}}}}J~L~N~X~~ya & F $a$ hh^h]`$a$$a$$a$^]h`h$a$$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h X~Z~~~rt~m$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$$a$^]`$a$$a$^]h`h$a$h^h]` LN؀ڀ܀ހwf$a$h^h]`$a$h^h]`$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h$a$^]h`h ހ*,lnd & Fd$a$ 7$^]` d$a$7$$a$7$$a$$a$ h^h]`$a$h^h]`$a$h^h]`$a$h^h]`$a$h^h]`$a$h^h]` h̅΅e & Fd$a$ 7$^]` & Fd$a$ 7$^]` & Fd$a$ 7$^]` d$a$7$ & Fd$a$ 7$^]` & Fd$a$ 7$^]`΅؅ƇȇЈ҈|~ d$a$7$ & F d$a$ 7$^]` & F d$a$ 7$^]` & F d$a$ 7$^]`<NDFHlnLڐLNz|ΕZ\ңԣ d$a$7$DF8dfxƫȫPRrtȭ d$a$7$ȭ<Tl֮h֯د&>`b d$a$7$b24R\~~DN|~ & Fd$a$ 7$^]` & Fd$a$ 7$^]` d$a$7$ & Fd$a$ 7$^]`~$JLpvxxz:<&( RTnp d$a$7$pf RT~$a$d$a$d$a$ d$a$7$wf$a$L^L]`$a$L^L]`$a$L^L]`$a$L^L]`$a$L^L]`$a$L^L]`$a$L^L]`$a$L^L]`$a$L^L]` h__ d$a$*$ & Fd$a$ **$*^*]` & Fd$a$ **$*^*]`d$a$d$a$d$a$L^L]`d$a$L^L]`d$a$L^L]`$a$L^L]` x>b~0vj d$a$d$a$^]` d$a$d$a$^]` d$a$d$a$^]` d$a$d$a$^]` d$a$*$ 68wd$a$d$a$d$a$d$a$^]`d$a$d$a$d$a$d$a$d$a$d$a$d$a$L^L]`d$a$^]`  "{S$a$^]` & Fd$a$ ^]`d$a$d$a$d$a$d$a$d$a$d$a$d$a$d$a$d$a$d$a$d$a$ ^`0pz|~0u$a$^]`$a$T$a$ "( Px 4 #\'*.25@9$a$^]`$a$$a$^]`$a$^]`S$a$^X]X`$a$$a$$a$$a$ 0d.0~PzS$a$^X]X`$a$$a$$a$$a$$a$$a$T$a$^]`T$a$^]`#T$a$ "( Px 4 #\'*.25@9^]`$a$^]` P68$a$^]`$a$^]`$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$^]`$a$^]`  "$&(*,Z\^b28:#T$a$ "( Px 4 #\'*.25@9^]|`|T$a$ "( Px 4 #\'*.25@9`b 68:LNZ$a$$a$$a$$a$$a$$a$$a$$a$JJ$a$$a$T$a$ "( Px 4 #\'*.25@9`jln~.Lj$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$(JLNPRvxz|$a$$a$$a$$a$$a$ & F ^]` & F$a$ ^]`$a$$a$$a$$a$$a$$a$$a$$a$$a$ :\fNX$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$x$a$$a$$a$$a$$a$$a$$a$ & F ^]`$a$$a$$a$$a$$a$$a$$a$$a$*0Dd*:LR$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ V>L:H:$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$:lzLZdnprt$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ 26f ">`v$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$v  < B t z        $a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ & * f        ( D f |     $a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$    B F l p z         @ B $a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$B D F p r t        ,n&$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F ^]`$a$$a$&>hx& hx$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$`r|"Hn@N$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$NnrT z$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$Bh68^Vd$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$dP^vx$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$6\"*,RxJXx$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$x|> : t    !!H!J!p!$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$p!!!"."h"v""""""#D#|###$$$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$$D$H$J$L$N$r$t$v$$$$$%"%>%V%$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F ^]` & F$a$ ^]`$a$$a$$a$$a$V%%%%%&&8&&&&&'@'`''''J(d($a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$d((( ))))*),)d)v)))))))**4*$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$4*V*****++$+2+R+V++++,,R,d,$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$d,x,,,,,,--R------. ...N.$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$N.R......4/F/Z/l/~////0000$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$006080L0N0V00000 111"1D1N111$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$J$a$11112"2(2J2T222222@3H3N3n3x3$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$x33333334B444B5D5F5H5z5|5~5$a$$a$ & F ^]`$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$~555506D6~6666 77H7V77777,8$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$,868x88888888:9h9n99999 : :$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ :::0:2:>::::;;;4;>;@;B;R;T;$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F ^]`T;;;;< <<<<<<$<*<,<T<V<X<j<l<$a$$a$$a$$a$J$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$l<x<<<<<=B=L=========>$a$$a$$a$$a$ & F$a$ ^]`$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$>(>0>\>^>>>>>>>>>? ?n?$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F$a$ ^]` & F$a$ ^]`$a$$a$$a$n?????(@.@0@2@B@D@`@h@@@@@A$a$$a$$a$$a$$a$$a$$a$$a$ & F$a$ ^]`$a$$a$$a$$a$$a$$a$$a$A A A"APARATAfAhAtAAAAABB,BLBVB$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$VBXBhBjBBBBBBBBBBBBBC CC$a$$a$$a$$a$JJ$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$CJCvCCCCCCC D2DXDbDDDDDDD$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$DDD$E&E(E*ELEZElEnEzEEEEF FF$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F$a$ ^]`F$a$$a$$a$$a$$a$$a$FF,FvFvHvvvv ww(w*wwwxxxx,y.yyyyyFzHzvzxzzzzzz {"{F{H{V{X{Z{\{p{r{{{{{.|0||||||||||JJJJJJ$a$7$||||}$}(}:}v}}} ~L~P~R~T~d~f~~$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$~~~~~~~~~&Lbf|$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F ^]` & F$a$ ^]`$a$$a$$a$2h|΀Ѐ "$a$$a$$a$$a$$a$$a$$a$$a$ & F$a$ ^]`$a$$a$$a$$a$$a$$a$$a$$a$ 8ʆhć &$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$&2VЈ  $a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ "$&(*,.02468:$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$:<>@BDFHJLNPRTVXZ\^$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$^`bdȉʉ̉6DRTfh֊$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$$a$$a$$a$h^h]`$a$h^h]`$a$$a$$a$$a$$a$$a$$a$&8LN|"*Lj|$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$|Œ  fhz|č$a$1$7$$a$1$7$$a$1$7$$a$$a$$a$$a$$a$$a$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$"&:RTlʎΎЎblp$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$p؏6NTVXj&($a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$1$7$$a$1$7$$a$1$7$$a$1$7$$a$1$7$ $&,Hr$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$<^pĔ<^n̕<j֖Dx$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$җԗ֗:PTz$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F$a$ ^]`$a$ & F ^]`$a$$a$$a$ | HNޛ@f$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$œ<ĝȝʝ̝ܝޝ$Ğƞ$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$Vrtv  $a$$a$$a$^]`$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$Ԣd>Ƥ&48dh$a$^]`dh$a$$a$$a$dh$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$Pf&Z,wodh$a$dh$a$^]`dh$a$dh$a$dh$a$^]`dh$a$dh$a$^]`dh$a$dh$a$dh$a$dh$a$dh$a$^]` ,r >`ƩF^v{sdh$a$dh$a$^]`dh$a$dh$a$dh$a$dh$a$dh$a$^]`dh$a$dh$a$dh$a$dh$a$dh$a$^]`dh$a$ $XnثNʬ2Hdh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$^]`dh$a$^]`dh$a$dh$a$dh$a$dh$a$dh$a$ Hx|PXZ\^`b$a$$a$$a$$a$$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$bpr Fjȱ̱$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F ^]`$a$$a$$a$$a$^]`$a$$a$̱0L̲Dlrس޳ @H`rz$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ȴjĵ(N~$ҷַ$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$(*,Jz̸Jι$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$&( pֻػ2$a$$a$$a$ & F$a$ ^]`$a$ & F$a$ ^]`$a$$a$$a$$a$$a$$a$$a$$a$&ڽhF$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$^]`$a$$a$$a$$a$Fnpr:`2RM$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$$a$$a$$a$$a$$a$R,Bdz@JM$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$,HXz"Nbx .M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$^]`M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$.\ptv ndh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$M$a$M$a$M$a$M$a$M$a$nX2468` & F ^]`$a$$a$$a$^]`$a$$a$$a$$a$$a$dh$a$dh$a$dh$a$dh$a$dh$a$`rt,BF"HV$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$V"6>D<@h>$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$>Bf&*LPh,d$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ ^&(*,$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ (*,.02468:<>@M$a$M$a$M$a$M$a$$a$$a$$a$$a$$a$$a$ & F$a$ ^]`$a$$a$$a$$a$$a$$a$@BDFHJLNPRTVXZ\^`bdM$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$dfhjlR\$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ & F ^]`M$a$M$a$M$a$M$a$\^$l 6>$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$>dn| *6f*$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$*`f<$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$,`8:"$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$r^`H$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$,.Xfv$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$^]`vD`(,J2M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$dh$a$$a$$a$$a$$a$$a$$a$2n6h.@tM$a$M$a$^]`M$a$M$a$M$a$^]`M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$h@nd@TM$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$TXfn| 8hM$a$^]`M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$h~<hM$a$M$a$M$a$M$a$M$a$M$a$M$a$^]`M$a$M$a$M$a$M$a$M$a$M$a$M$a$M$a$^]`M$a$&(`LLdh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$M$a$M$a$M$a$l  J L |  D dh$a$^]`dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$D   0   & l    kc^$a$dh$a$dh$a$^]`dh$a$^]`dh$a$dh$a$^]`dh$a$^]`dh$a$^]`dh$a$^]`dh$a$^]`         r t v x z     $a$ & F ^]` & F$a$ ^]`$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$    Bl<x~$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ &@Zt$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$:<Lbf ,$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$,Np(FPx$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$x|X*4dr $a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ L`T0X^$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$J$z~$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$VXZnpD$a$$a$$a$$a$$a$$a$$a$$a$^]`$a$$a$$a$$a$$a$$a$$a$$a$$a$Dfr  !H!r!t!v!!!!"""*"$a$^]`$a$$a$$a$$a$$a$dh$a$dh$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$*"J""" #####B$L$$yt$a$$a$^]`$a$$a$^]`$a$^]`$a$$a$^]`$a$$a$^]`$a$^]`$a$^]` $ %$%|%%%&&&&N&v&&&&$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$dh$a$$a$$a$$a$^]`$a$$a$^]`$a$^]`&&&&f'h''''''(&(H((((($a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$dh$a$$a$^]`$a$$a$$a$(()8)>)\)z)))))))))"*,*B*H*$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$H*j********+ +X+v+++++++$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$+++,0,8,N,T,v,,,,,,,, --X-$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$X-r-|-----------.(.B.\.v..$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$...../,/F/`/z////////0 0$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ 0D00000001(111t$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$$a$$a$$a$ 111122&2\2t2~2wf$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]` ~222233&3\3j3z3wf$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]` z3333333333 44*4.4{v$a$$a$^]`$a$$a$$a$$a$^]`$a$$a$$a$$a$^]`$a$^]`$a$^]`$a$^]` .4N4R4x4444,5V5Z5z5~55o$a$^]`$a$$a$$a$$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$^]`$a$$a$ 555F6P6z6~66666666~y$a$$a$ & F$a$ ^]`$a$$a$$a$$a$^]`$a$^]`$a$^]`$a$^]`$a$^]` 666677<7>7b7f7777788&8*8H8$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$H8J8n8r8888888"9&9V9X9|99999$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$9999::(:6:::p::;@;h;p;;;<R<$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$R<v<<<<0=8=B=J==>">*>b>>????$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$?? @`@v@@@ArAAAAAAABtBBC$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$C CCVCCDDDDDD,EDExEEEEFF$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$FHFnFFFTG~GGG6HHHH&INI|IIInJ$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$nJJJJ*KbKKLLLL,MTMMM0NNN O$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ O2OVO~OOOOPP:PXPP.QpQzQQQQQ$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$Q*RR4SZSbStSSSSSSSSSSSSS$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$SSSSSSSSSSSSSSSSSSS$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$SSSTTTTT T TnTpTTTTTTTU$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$U$U>U\UzU~UUUUU VV:VHVVVZVVVV$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$VVWDWWW X:X^XdXXXXX Y&YXYYY$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$YYYZ6Zs@sBsDsFsHsJsLsNsPsRsTsVsXs$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$XsZs\s^s`sbsdsfshsjslsnspsrstsvsxszs|s$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$|s~sssssssssssssssss t$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$ ttt6t|ttttuuv v&vvv w6wbww$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$wwwx>x`xxxx@yy z6zbzz {T{{{$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a${{{>|||| }J}l}}}}}H~~~~$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$Bh|nprVdhdhOO$a$NN$a$$a$$a$$a$$a$$a$$a$$a$$a$$a$VXZ\^$a$2. A!"#*$2P1h3P(20nCd$cdPNG  IHDR&dgsRGB pHYs+cIDATx^ Uŵ6$ FBSy ) A b1"Qq<"YLLDLAP}.K[N{YvNvڻڡCQE@PG'W5("()rt("XB@)Z"(RE@PK(XZQE@P1("` K@k5"(J9:E@P,!c hFPE@)Gǀ"(%r,("(PE@R%E@P"(PʱV("c@PEJ9jE@Prt ("XB@)Z"(RE@PK(XZQE@P1("` K@k5"(J9:E@P,!c hFPE@)Gǀ"(%r,("(PE@R%E@P"(PʱV("c@PEJ9jE@Prt ("XB@)Z"(RE@PK(XZQE@P1("` jTVā@Ν[V߿UVӟ֭tZ"PX(VYkkc]~رc\E?_{UW_+\rIQ#cs1;v ={&LhѢ\j J!rr~'O>c,8M8RRB}ᇲ`2ohΝ6m"E!u$2QQ΃>?ӣ5j:_~=@cm}1͙38\5紖|Mk~lN:qbL1I#ܳdl(o4k,y5"[l;6o(Dp1fG;`_IÍ /v`rMZ $;qWF7.`Z 2+<ęqc 6Q8d$6O??> 0?pB=@^p){ C ~;{h޸QSy^~:Qʡ";p2RH@btx";vi=TPAq =gA>ة.W@E qؠz +`ׄqgŕlHE9Ykٍ$&Ig{Y)2QFXTl7cC+UB#`rro߾ؒ,={6/ mիW'N!UeqdjEmۖ<5xJ>Xb3ӱ-p(i>9dBTnK߀*, qoAɾ_E}[-9e˖8wA!6p@>|fą[N($ K9P^.]JidgZ4^}BCB+{2STofԕ޸? SBVrtw)LIBP4ѣ5jԲeKf9!p1ʗ| 裏~m߾_1 =R+>TgܹTzQGeiчڴ9TTt+V` ,wBD bأ\bE5]$ ۝W599%0۠~mf3fPk Cj(q}W +Eؼ @6_V^qܸqy&pv(8MSʩw04hԸpG.n"9'&MBIRNL 6,=<]䆨-\sɧwc6nS=[>lۢSeq3';<k@77~3 `Ɇk-[vǩ 1(0^ ZY[d7GQWeԩti8L$L2,_pLH&ѯmֻwo@42N<!O4={PN&9Î7PQsxcX<[~jWi<G#%V4,k # iZ =zP։Y :5 - ^W ]FݠŐl*슭RԾrBpSQS()3gbMD載'*D5E&L}m/W$n|c?KDʝ;}R9p{ܖۂUT(rDW׹fN88IwTί eBm{ȀUJ&/)":]Wϒu֬g IM9%E/ B@{$fLis(8kuj6u0oa0 ?us`7s!؈LzA=+?q_ɂ6<)h‰ Vw'6Aod"|b(OgZ$/olР.?ΝO\0)1H!{h+,<x1xbi|ØS9EYfpUVGfvb}sI G)'2ǎJ^ dSvRYe f6!n7T9>@9wB/cg``qEyV4U ЏWKd2٥`B$nwuIF[Q Xdӳ}{qE= &9k X, A'V{' yၾ8}Q3co  ӰaC>_}W'tRDו e6=,( Orrn޼y),&}Y~b-H.Q%'_%='ꫯKD0'μ"Uȅl ?,U"s2#g}h |5QƇ#PqϱjŇ#VQ+[P@TP&[\1XV06 C2I(f`sO1*c[~9OX2ə+2 :>x1ȉ@$U$♨eX# CF>Aa{91~ʂxԜ/2<Ț5k||u+@ۗs,V&kr)Q: 1-ԡ/Rd…l6m`6K"FlȑF!Ir!o,عxYs>7M|nڵ{ɒmCX?¶W/#֢9zT!U7f̘N.+)9385Wi>ۚrk"[̞={q,kP{"*^G|b4+VHv馛l/_N2$f*cljo-ē)x -TI.#<7)@)' jd8n#aÆvm; B6e!a냿_|Z;*-9:E6Ý3'$VvWܦWy҆=mT9vOr9.CEH$z? SLOnWW). ;.^SwGN2*lx͵為_nsgfK \;OО+ (7֙hg" 蛄EG^NLU 8٤ h0s|$H8r_,kJ^jߛJ91ϵF\eS_A<̧r?68K|F &6U6~؄lڴѥaS.=IbU"dZ)(w91w4^: 4ҥ ѷ-Z!>x$]w]C'ChR?1om6gB5p.ǰa هlS>RE(ل2lJ9Ab| `,ZawV ϿXpY"s0aڷcH-)|/R}hM.'+-p~dtg?<7 np)D \A/̣%LCN+٘bJ9R~{GRZɅii9 CZX/ի:BC8rdmM>"1~P{'ZO6zw.- b@0scΌ35jt-x1 (3i9د_qqqNjfPq7dg…&M6ݺu[&=,Q֭['NV:fhܸs-ab>}bHQJ9tďb.O?u'd۶m'Mt'zkצf8|9a W2ɓ';@!$Ғ%N;03B3Oe;6c3ZsnDyG߸}5ϔ#^yWpЫO|`̍ԥH=z4S,rY.oD0EP71}ECta?ZO RѳsC"lz?*]X̙31a,އ 9l2!ㄧPiFw6vڕrA"7n\ѧ-8u JD=RAmѷ2Oj`jժ.o߾u”a)O PWJU =?|S8!|ʕMv4bo(pshΝ%f"XS0+]͹?7ߌW h r=!ZɎ] xQY;t[n}ˌB682W[gٺtDנ2Xii)v mzX*ϼ"ygrD, y$(-)8ŋ/NСCqYmR! ,ZOq>-"zc|zU*+)GK,qVE^y(x%lOFN[c (@%. l ri]Z8ɋ/x饗F\IUų0a%]xbӃP<[Mm lظʅb\,6hQ\ҍNP;߿\#HEgh2KLc}^zrl1˽,!,-&*i1pcR[kD(J9F ^؃>ߎOxM5NǍ.K N<G޿7DYfly>ܗ:8,*C:8pBuLlS5\̽78;qĈ̃7 ~T paxs1j /#`OK ofIL)Qvb8[)'!. DңG5Kɕmtdqh{04EW.%cvi&s\Isi#rS炀RN.]رccTHsEh(ħpե"]'xrܽޛ{JupܹfͲ^Mrb8>sO7O@xԩڿ?7;$6Pʱr:{Z[ J AA"b~ԩw޳:˝ &rw߭]AjSY=3& @KVʉg {8a_7%g'L0wߍwQl?//0lprxЩ9ne׿7!WAc T p 1?r& 綾^zg.@ ?0PP'~c߬'*JYSF?s(YL ˉ֭[g @9s;#!5k5 5d4gϞؗC^^Gم#=Gо}xT4m'Ʌaknu tr8(lVu9foѾ;G8̶7oƘQG;&n Bpdoy>/Dir-9tcKO͇5mXY]2(x`a?bŊÇduot6l]x+ˠc s~Xn}>6+X4.l_ϋpT`riΜ9t D e/~ TgZWFTfi`߿wޖg[淿-|KV! .kbqPN^5Q3 H0v9*h}eO[L.'t6+2&ah0lVZ.Ǧ6DqAÆtCQ_gF](СC_}Hgy_.݆{wӦMemA:P phYV쬃ɓ'2ȃed2>A3jD#PbP'r+$ÄT\KD/X#؎,Wq^,-K؁7Z`?8կ~-(XEv\xrv~r7mGfT"9iɅF?K֔PNP* ͻzjT(7ßdoLg΍3|+*kK(a6eׯӲeKb(@ްaCΝNf뢍hMy+bGu_2-Ǐ<$F)?m@ #%qG*4"!A s+|ɑV|+CmDV:I hj݈wꌱTTq?s)$Ǽf=c!3`G(K>ӦMY,C1yet 습38#9S.;:wCFo.C^O5WU6mvz%R?ICw#,7n)|vǓC8Va f(Q[6Ѷ@G%`mN])G8%nժ4@߽{w>nݚR7rՕb+c}׫Wd >s#wO/b͚5+V S+30Pg޼y;x OIqhlqXaBëpL7͛7+-YqcKc+W^VR*{E6mz#W8I^x1?7mJdhР? ОN۝?t +v4mc5 N3dqy'skZ '{1k+zq <-%rUS 4{r|LSu9n'lޜJ#&xkӦ,bw.`@|XnEv0|fylPt(j) ʁ17blvk_g9s((ڶ=>0PgUcop޼y,b3$;k@6y؁zzZr!ޛ[!G,Jѭc`z#kƛ Y]Sd?7*Kn* B%<+Pg.ٳG,]N~L-aRi`wYf{LBiB5 #;%`z'$t zyE»2Ne Zp9ᰩ&0-M6Rx(-Oq. څEۇ}$Wz!>/5.e2+$-IF>pN%PϸqӕN}գ}c3{?+U-MXbb `bjbذa͗_~Ɋ&6ӛɬ7lذXxݲO }5gQ<[Rd#΀Lcf)$J9Az]xGtn9읭>XcGl -1V&of E4=WT`_ki2Ri?LUTE^tEWd "*P=ꋵS?YbrOs@,tXWjrk׮)=LZ8Xxa2疇fag ?Dɀr) pC)|TmC~o֭9'`\YJ:kue; ;!t Q]NI.Jw^QZxAbˋ_oԩ6WtefBD)٤ P=q Nj0%B!; ՆilG(U :wL5F{~iߺP1D FXaqh\xg'Wja &pa}CJZnT׺} {>b,ꫯNR ӟ8Dz3Ƹ` Oy mc:t]>xG]pMx .t6=XMֆm 7 qWmR,8M` M;lnqDrh&a;e'r#&_P= >G S粃ch^RPQZ:rm1-G bK,17ї !z'2|MϚn-4z0_M ˣfF/w҉l}@ieZT1k`mߥ(dNU##,D }>ִmkgz2p P˱mQ\s \W2'%G@g}vSwE bultmn;rl>>kԆLSZʻR`L#gW11YMVj;ڪ2+|<+jWh{:',Yse`ƫYez(r緲۾foO1 iQ} Ƽ{.hr-5,rѧ>X]ee[ܪG7'OMR8p~%4tft`LXnFzuW]XQ*^>JѸч#X[Ѱ/brV=?ٝ?|]U~ׯ7V8 ;y#\J6o۶Mv,q>]$(<?A͛7}V~(u$ItG*:?G#^϶-,3ZGJ9Ơ*L= Oj]o("ڵ˘ bǵWGr}6jlzMГ9yG v'0ң,Y&Bow,? tkP̙3sW ESX И~DQrT;/^z)N̶+ܹsߏV ip{ʮ2P1;q+a>3=c`SOPE4t،8-D" m;-XQ&^ ګY硴N:ѵ]v+͈ǬLQyQG3a3q87񶉻[-+4rrGFK71Osx6=7vUt3p6lͷĴ>KO;wgr;G9»M%vD[刀*~ӕ]fJh۸hr)xك?pHۅZ0 i\NBTڒ;tFBr޲u-\0p—<+Vhڔ.i2qo dԓz w@*bŠ'4j]k֬T)3æˆP]PiIh"f$M6lӆoڌ#PI؈`'۩ 硞_wLƭ!C0 v3Tb1swIlJK,Yps2d ~J2 <K*)93DwCd4W;V^vHFĎ ̟b EJu9I@)'i==Ӧ\3/r##~WXj AfbM{#SqrNƍq"ɉ$n? aQG@)LGq(JXdFT9Q2!Sゥp82b)CCY*- TaÆ@bF4r~,1קg Bݍ!V*F=idc 3Q8_@:tP)9xq$V-]F&]G}t(KwF_tгaކ)iL^ܧ7 t0u~ RB9x#)aÆOxK*rJc9ƚ(gf:=&A<y6gb[lٵkweXnj׮]+P$TɃNLX;M>F_+lrVf)p| yݼM"(HǪUU"h%FsV4PYIK|ԩSrU…G-/^"ϊ.G)PI`sо} I\C iӦ͘1cnb͛{zm۶ w9qРA3g]-AH4J9 >k֬IЙE㏇دy赆4(w3AڱcڵkCd ZQ39J9ft׮]f QJDʮ5G.|r2 ynjnjƍ.*Ss_{-$>yR裏i,J]=wN`~Æ5k{ֱ !c7yiw]M w5(&ٴ ]\hfg sm57W_裏Hsfs "֡Ν;cA-4SA #Q[@!} !d,N:vZӣhQ{:TT$ʥ'Hr_~;ˑ9QGuas0P̀bŊ@YB'iBMtUltl}'FiY,{! ̟/Mޱ}{9tMؒaƆ97`}ϛnbs13Cs9':3Dkg3ͱun2ajԨ5mEl2qA_X><ߤ~aW4,y*I.n‚ E! (1_#^s5P_xŔ˥ Ր)X4`y7Fw.b!7xTN7(Hpz޽t"G˖-ԐlrهЫ C;I'>ÑJ9F`,SƺXd.aÆ\\Y@qLЧ |^8?wq۶mkѢEMA { kSgem#9-2)=Y8;kIAIoAe zbM~z%V^ͺcn!ҍ`|=1[ϕ5p*P >QO(}فd%MOլls6m҂g(PX ,l%Rpm3'v]wjYfÚ4[;@uup?G8NqhMK,!D=b)_)$9%V^UH!Hq)_t^9x^ZhQϕ֭)ɳCpwfJEc;+J9<\ Xyq6![,"\^=Qw)19V.AJ 9?|YdոJlrwUwr)B+)K°B]^,u&FZ5uܾ}2r% Ǟ!XjNی@w3ԇ\1J9}dž .]. o&xltX៥Ro~HG]{/)qe,@!$, p&Sts P%c,:/Af4R(cv:S"A s@܊Y3ӐMeLΚ5p6m• sV9/^Jr/Ndb;ug ƫ=5rQ4A> wqq3dx,ňe#)?)5MRp[EŸ#[;YWzƏ{v 3|͚l+ :9^0ǏS)Jc:kҊ<tc~wพrtBRNYXnϞ=;D^eO ȭ9s~ Zr`T}mYsk˾ [Ax1'_P1߳QߗLˀ fd+O,8d8Ε+S=HĴO?}C<m Gq!pيs;bceiAN"c[byԈM-Dkh_}h|t0axp6 D|±~f…Q{5 Ip!_|?E>K9QQ:[N]vsS #5"7y֭I;cD@@6ATzuQcMi Hv9~駬#iO%|ctsSQ(43L5kE}>;bD)D>Ww0K]$-C'Ƅ15ZC@)'lt`8C{VD~{ԈYĉeZ0h&PΝ;!`.'tEUAr9AM7*&uR6iuS~ڗ %I84bdZer)aeUeՍeâHϞ=E.ݟШQH즬um{"a !e`qiQ!`FǦ'JE@,g̙sg6Dn۶-rZBXǡ9B"}ݗ^RaC"8?ٰjԨ/ĦҌ7nltd"j8sSh$fҤIq Pz)Ml_2(J9FPq-i?mX女o`ɭ7^͛73\-1Jm߱f䦡Mܹ[s&b, 䅁oWĸKGQX FMZy5k ݚe+ ,֮9|xsl1pcwgb<6Z*QjSuED@cY@knÆ ZϘ"q FB=]4v9w,aR.^tC%nPԪUwߍD7XqECǍ⍴wޱCc˨0>+E@ 8R/dHqYg{o쉆 I!8ReV,'GwԞi~^,QG@w91X"n?e˖٨,NXFu"|D" pQ 5˨)GƩ#c)YT=zt$N7nxg׮]Z.'xz/bÕt։ EݺuqԨqLÆ ˓ yo6mtbs^[HU˒wkѢiZ]@T+Ce58 xqApڿ#5LY"'i}F+ I2˱{uy뭷9 ,`ca Q?O;83R9_ M.i'?a% |D2y M;v,{Ρ XH\̂OrtG3c ?3lM:Onf$pnrb\lŵ<#<[c\|#d沓j3wYQìιIǾ_ D~bi2  /4t,j$m`qo̙q)&i6oAVohiN e,H dR/2Ŗ:Wen~GonjB<ˢs23dKYS2$oұDj߾}~__;?ݻ#ҞzꩄB\G8T]4?il"c u~yv+ 2 o⬥VZ~߿;'e?BH߈Ǎ$@w9.T|E] aØӬ"hYz1KOTUbIC|Ԏ$>"߰!СCKxP{Mkb]uc;̕q{PúOfmݺ{]jf$zs#FDupjZ.8=. ,-;C=J*k(#)yX:p%70M2O>:`Ȑ!:]ـ A SG!y )ʕ'tXO-?#jzٔx f< AF_pk |o(+Pۧ8ٱsvDiD׭[Gl4fm^Qs=g_Dxo DWr>1]#bt&){k8haIKv5vi rYoYQRuYȑA.eÆ5-[kìQnٲo5jT0>1T'Fto53έޚeS9tm8֨~_*D6'7nڵ͍4V&N2rѿ8O+]KE,'&uFH(Cy #~!ʽuZBD(Db lٲ ܔ.Â>-c det<c,8NFzA (Pvb,\#.~˗OS>lVZŁ|IISn[í 0J96R g''O~7f8-ϦMg^'t 6iڵslh|R 5q,({JQp{۶ '7-'@׮pڴZRɊ%db= .߸ JY ($o`fouo<@,^t„Gtm% *q.oڷ׃佽/:I`!|xBnonذ}RzC?|nڴ;lܸPF;kD#ۣ*t+Aoݕ ` ?1lhkmv?vcǎ޸L8Y@ \zysiqxjHhJ9v^7y:^}+~/ YzH0WAַ~[b楓1WK)ɾ! Ǜ6}Lhl.ν/@6m"ˉ&MJC)bQi7>7_w91?FfŊ͛[8kas 7p_ZlHdnݺ5cl@křPʉu\T-Mz#Pֱ\+5wTX(D`oh-J6.at%k 6-2rb^\P}qqOXJFtw^::-,J9f^5j&.qC0 2a'OsVOyIjRZFp#K$_xᅬxkccѹxopCC@a/d,_N\NKHy3"my) c/YhNckXď>?usc_-17rrgn|V"' &JQx6n?xiS{6I >/M*AU Re:9~hQIkƇ~ؽ{w<+)I9ސŵիcQ :_F#Wr r7glٲЖEM4ٶmRNEpNXRTׯ_C[RI~#,!j͚5Eooh"zXE (儤4ڵK)'kÜkܜedr [۷{D(S5fɠ~fM J9)gȐ!3gL4*sg_ >&Ai߾}}]Iy7r;3 a| 藖.]ڮ];rgAc~h]td褓N(0 PXN_5L^6mTt({,lY0={ZLdÄ{ ]̾$#z3ll2e˱B o0 *{\3IH*"J99Wp&&SN8i@veqxf ]Ӑ={rzc囌ĆtݺuH/ک_PA@)'0w~>#k&\$"I 6F$)e/rs)pMe@w $ z[$GPK\EߗSy`kIC{|GX4UTsI96KK>Py3'UɡA+@ k-T E@PUkjE@pDRE _Pמv)"J9u (@"=RE9rHP|E@)'_{Vۥ(s(8%*"(RNKPPqKT E@P|Ym"(!\@"+J9ڳ.E@PC@)ǹ.QE@Wrg]"8Rs])"(kjE@pDRE _Pמv)"J9u (@"=RE9rHP|E@)'_{Vۥ(s(8%*"(RNKPPqKT E@P6D1IENDB`nz+Sf(dPNG  IHDRMsRGB pHYs++IDATx^ݿ?W .F*\ɍWM N3XW.M* YX WqDUD {|7y絅Y3yϳǧ @'JR @U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @bQ4e -0Ͳ4|I6D6l DT(e P\< @@j7s @@qQxGhW@TmfN(. o @  @D R @]Qޛ9 @ZA#@+ {3'O<wz '@ /$X @ O@Tͳ4 |ׯt(8Q-~ᇟgOr @@qQxG!?~_!@U&H`?^pa'fJ A <~ҥK;Vr  @`#Qu#6; pr~_Uv$R߿ BD R!ѣwy 4" 6h$'_x=i @D 9e={ܹse*R+ kt7 </!@vDvzmv^?>sO @`:ʆ @ z; @`Qu0  @Uv4 @`* @L+ Nh @DT6$@V@T @ lH 0: @ USِNq{gF8!  @`D]Z bxi7ݾ+W\zu>x`KD ]PN>2 .#%~gnG(" i2OIU+}ǩѨ 0,l8f|>/Pj ;w~_\|9Β5k)޽{qǻ+?E$ZU[7'P6-'ׯߺu?w\ߡ ֽ_e{QKU4+f[o \v-*}vE b;񥨸Ç6 쳀57;![oI7+Vuo\xǏo޼$@C\jahHP}*"7#b? Dٳ}љ3g `/ *)5@!NN/TB@eT @M M  @DQ @iQ< @Z;j#@4- 6~'@TU+wGm @Dզo @j дtM PY@T @Un @* 6 @@j7y @@eSŢr}j#@ Q`6%f-#؝{/ }M DC#\`i @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @^*fI @^(0_NlQuot+)B?ɔLaAHǚ$%5>Id  @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C ,pjX$y`l6!?+d-I]Hǚ,9QTudn?NQg: d0L?aqƞo/53{,{c@ctg왎=Y#4Sd58 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8 @,Q5K8 @j2 @D,I @$ ɠ#@U$C , & @ K@T͒4 @@ j8m#V>֩w\ >o"'/~kuZ\6X,LEnz-wNr9:X0H$٥>÷9ɣy<,]b%&vEr1ݮH,ni}o׻įcwjZ)wϢ1ct2'X }aF_pxx7V};gΜb[nm<Ⱦ},>Q[y1'dz9O~gZY|N7ވ-_.twbh6|j$_^\]v:$9ϹzeZ1_B|#믏 Am?Ǐ={6hFjPܹsq/鯾꥗^NbkMikȔجu;(mR[@ᨺ 08湸{͋kzFXkvG=$#(7]-W#tzֽC{fݗbT}iXZ+ IUzC}~\_WZ;.?4UK.p?vo^~9~}oAʃ7HvQT9fN|e1Iפ.2|8ӣŷG9_P[y^gGNᄌr ee cu+9n7V ɍg7{ y8~נw))hKGZ3Q_eU7[GiũBUB5޹'>Pc^7vNr༦ߌd9IYYX%w.9jۇvQas{+.r۲@LPq۠@eC?OJ, dT=49?G+ @`'v2"  @U; @XX%@R@T @c c @`KQuK@ @% %k\ @-D-N 0:q  @U; @XX%@R@T @c c @`KQuK@ @% %k\ @-D-N 0:q  @U; @XX%@R@T @c c @`KSb!^l6{6{|>o.$lI@ohBd@8de)jCmWR E@.h&N. V @ Ͷ  @DR @YQ֛8 @ZC#@4+ 6z'@TUwH} @fDf[o @j ЬlM P]@T! @Um @ ;> @@j7q @@uQzGhV@Tm&N. V @ Ͷ  @DR @YQ֛8 @ZC#@4+ 6z'@TUwH} @fDf[o @j ЬlM P]@T! @Um @ ;> @@j7q @@uQzGhV@Tm&N. V @ Ͷ  @DR @YQ֛8 @ZC#@4+ 6z'@TUwH} @fDf[o @j ЬlM P]@T! @Um @ ;> @@j7q @@uQzGhV@Tm&N. V @ Ͷ  @DR @YQ֛8 @ZC#@4+ 6z'@TUwH} @fDf[o @j ЬlM P]@T! @Um @ ;> @@j7q @@uQzGhV@Tm&N. V @ Ͷ  @N-5Kٌ*0uj浙81^RI0 $If 砀  @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ E, @Q @(* m @DUk @Z1"@U @j( @@T @ Z,EKSfY icd-I۽A=vYU6XS3{{3{l{c̳lgr @`]Qu]1 @L$ N0 @ ٞ @`"Qu"h!@XW@T]W @ A;  @b'@H@Ta @U= @DDC  @&U'v @uDulO 0: 0o&; @$@$>~~; {<\M@EQbWDtk3bَ"@ E@TMa4 \r~c2m0]ZU[9(ѣ˗/<ٳwvƝnJ6O<~Oc7ȵ6iwU_O_V^"q޿?o^zʕoNdQӧO]vbqbM[MZ~Կˊ; ")D)Ξ=߼yW_hx[Ο?6Ur"Zŋ67ߌoV߻w/q3d{8( Z裏>7nęd>j`=3+r 4\̙3ۤ[n5BA~`^Ǽe~ t\oP|⟡qE>^gt ";wwҥodoTСgEJZy33;ޟ~ j\]T_h"C/sʆ'6|S'p]ʅ}qÇor^R0}1wc9N}cLO]5,p[g?O~W옋|a}5+;!N#'?cWp_~"0~_~L\)|w]r_ q?i7`iYuXe7H{-VR[|];~".q+Y4}%믯n,IMqZ{ uvez1QWO}u9 NߡSDF @@^q_/ j5jV2v(;}_}K/$x?9-_s@mp8S|Ѣ9 l6챫ێ=ӱǯ>LdJY3YbG 0T@T*e; @DՉ @`:Tv @ ; @PQu @&U'w8 @P) @L, N p @CDաR#@X@T @ ClG 0:1 @ UJَ @`bQubp#@*  @G 0T@T*e; @DՉ @`:Tv @ ; @PSb趶#@ fvHx%eKvoP]DU @ 6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @U6FY @5@ PT@T-e @ @@QQhcE Z @EDբQ @j  @—IENDB`Root Entry F@CompObjjOle 1TableDData ' SummaryInformation(TWordDocument[ObjectPoolDocumentSummaryInformation8t