ࡱ> 945678zakW7{y3T( <( / 0DTimes New RomanTTtܖ 0ܖDStarSymbolomanTTtܖ 0ܖ DCourier NewmanTTtܖ 0ܖ10DZedier NewmanTTtܖ 0ܖ@DSymbol NewmanTTtܖ 0ܖPDMicrosoft Sans Serifܖ 0ܖ"`Dcmsy10ft Sans Serifܖ 0ܖ"d(.2  @n?" dd@  @@`` 8 0 (,034555446544#%&DFGH(LMFPQRSXYZ[\]v_cdefjklm]FGL3$!g4W3?a=IM@$N/X$r$kW7{y3Ti 0e0e    A A5% XX     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab fff3@8DO g4BdBd 0ppp@ <4 k 0TPg4;d;d0 0(p@ pp?O ʚ;U_8ʚ;<4dddd l 0 <4BdBd l 0 ]0___PPT10 ___PPT9nsgXVUPNG  IHDR ?PLTE)g?]mS tRNSSOx?IDATx% 0@Plb DأH/3U }yRʒDhYD \&i_RJDgIENDB`nLb$C#PNG  IHDR+PLTEBvNan&BA ! tRNSSOx7IDATx5YAE7 Rp"p&gƝxdTU6cy~[/åIENDB` nbRpFPNG  IHDR ?PLTE> i -=Psb tRNSSOxBIDATx- 1 1+^H& Z$9>\̀wָtO 7m>H"IENDB`0nda"FPNG  IHDR+PLTE^.?-d,?" !_D E  kE" +0E @E-P v?" dd   " @ `Pu" ddu dd u" dd@u dd`udd`dpu" ddu dd u" dd@u dd`uddu" ddu dd u" dd@u dd`udd +#@(    H31  1 W#Click to edit the title text format$ $  B61 , 1 Click to edit the outline text format Second Outline Level Third Outline Level Fourth Outline Level Fifth Outline Level Sixth Outline Level Seventh Outline Level Eighth Outline Level Ninth Outline Level&g <  c $ ? ̙33___PPT10e.+D=' = @B +f___PPT9HJPJpJJ  1_Default Design* 0  F(  ^  S  ?z7     0d  92  0 <  c $vn ? ̙3380___PPT10.X5W  0L0 f^0 (      ND0 x   F2 X  x @   N 3 m  J6  X  x @B  s *?rs ? ̙33y___PPT10Y+D=' = @B +-  0L0 '' (   r   S    B   3 EFQvUVW33XX?""bBH`T>H; tA+computr1"`m +B   H33XX?"6@`NNN?N wB   jEPFPQFUVW33TT`T`T`T`T~V#V# ~ ~**=7`T=7o- P Po-o-o- P P o- o- o- P Po-o-o-TOTO o- o-o-dQ0dQ0o-o-d@8d";d";@8@8dYBd;Ed;EYBYBd*Md Pd P*M*Mdo-%Q0%Q0(o-(o-%@8%";%";(@8(@8%YB%;E%;E(YB(YB%*M% P% P(*M(*M%*=7*<*NN*`T*=7** ***%(@`@@@@@@@@@@@@@@@@ 0*`T`T0*`T`T0*`T`T0*WMRznserver"`     6  XX?"6@ NNN?N}W U Web browser (2      6 XX?"6@ NNN?N   U Application (2      6 XX?"6@ NNN?NM'7m RDatabase (2       0e0e    B CDEF 5% XX     ?A)BCD|E|| @s "0e@    @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab ' ,$@ 02   <6 XX?"6@ NNN?N  ,$ 0 T User input (2   B   BDXX?"0@NNN?N 7 ,$@ 06   <P XX?"6@ NNN?N G ,$ 0 XDatabase query(2  W   < XX?"6@ NNN?N ,$ 0 y/Application generates query based on user input0(20 0 B $ @ N DXX?"0@NNN?N g' ,$@  08 %  H>pXX?"0@NNN?NM gWm ,$ 0 T Result set (2   6 &  H5XX?"0@NNN?N W ,$  0 RWeb page (2   B '  N DXX?"0@NNN?N- g= ,$@ 0H   0?rs ? ̙33kc___PPT10C..l u+qD' = @B D' = @BA?%,( < +O%,( < +D' =%(Du' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =%(Du' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*' %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*% %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$ %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*& %(++0+ 0 ++0+ 0 ++0+ 0 ++0+% 0 ++0+& 0 +   0L0 `Z(     N    F2 X  x @4  0 String query =  SELECT * FROM users WHERE username =   + strUName +   AND password =   + strPasswd +   ; ;|{ 2)ffffff@=  $       0g ,$ 0 tExpected input: SELECT * FROM users WHERE username =  John AND password =  JohnsPass ;t\'ffff ff&P      0 ',$ 0 ^Result: John logs in 2  B  s *?rs ? ̙33LD___PPT10$+qoD' = @B DS' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+p+0+0 ++0+0 +   0L0 `(     Z>    R>t X  x @  0d>` ,$ 0 <Malicious input: SELECT * FROM users WHERE username =   AND password =   OR   =   ;T]=ff ff ] Q  0,$ 0 uResult: Malicious user logs in as first user identified in the database. Frequently, the administrator!v 2v v 4  0 String query =  SELECT * FROM users WHERE username =   + strUName +   AND password =   + strPasswd +   ; ;|{ 2)ffffff@=  $     B  s *?rs ? ̙33LD___PPT10$+~zD' = @B DS' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+p+0+0 ++0+0 +  0 |P(  |r | S m    | S ,<$@ 0  H | 0?rs ? ̙33  ___PPT10 .t 1+ED^ ' = @B D ' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*|Tv%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*|v%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*|%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*|%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*|%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*|%(+z  0 800(  r  S d   &  < XX?"6@ NNN?N7,$@ 0 HAttacker registers online: Username: admin -- Password: password INSERT INTO users VALUES( admin  -- ,  password )(2& 2(23 2 ff  ff ffffffff&U    2  N338cXX?"6@`NNN?N 7 ,$D 0H  0?rs ? ̙33___PPT10.&fs+\GD' = @B DQ' = @BA?%,( < +O%,( < +DL' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*.%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*.A%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Bu%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+  0 @j(  d  <4 XX?"6@ NNN?N7?  Attacker changes password: Username: admin -- OldPass: password NewPass: backdoor (27 2(2 ff  ff  ff @.         T    *@H  0?rs ? ̙33___PPT10i.&fs+D=' = @B +   0  P(    < XX?"6@ NNN?N,$@ 0 dApplication checks correctness of old password: sql =  SELECT * FROM users WHERE username =  admin  -- AND password =  password  ; rso.open( sql, cn ); if (rso.EOF) {...}0(2 2/ /ffffff.ff0  X           Tl    &q@H  0?rs ? ̙33___PPT10.&fs+DZ' = @B D' = @BA?%,( < +O%,( < +DL' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+*   0 `(    < XX?"6@ NNN?Nw ,$D 0 Admin s password gets changed: sql =  UPDATE users SET password =   + newpass +   WHERE username =   + rso( username ) +    ; UPDATE users SET password =  backdoor WHERE username =  admin -- (2 2 ffffffh   '     O   Tp    &q@H  0?rs ? ̙33___PPT10.&fs+ CD~' = @B D9' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+0?  0L0 P/d(     N    F2 X  x @   N m<$ 0  F2 X  x @"  T $33XX?"6@`NNN?N  ,$D 0 6Application code query =& (   , l  ]  (  ,$D  02  HXX?"6@`NNN?N w r  NG!XX?"6@`NNN?N= ] 2  HXX?"6@`NNN?N} 2  HXX?"6@`NNN?N  2  HXX?"6@`NNN?NW= G- R  B TZGn HkIn XX?"0@NNN?NT  b ! NG0*H6IXX?"0@NNN?N W b " NG0*H[IuXX?"0@NNN?NG  B # BDXX?"0@NNN?NW M M R $ TGHIXX?"0@NNN?No  b %B TG0*H2ILXX?"0@NNN?NZ z` b & TGHk.I,hXX?"0@NNN?NT  ' HXX?"6@`NNN?N .  3 * <\* XX?"6@ NNN?N ' ' ,$  0 U Table lists (2   ? + <. XX?"6@ NNN?N ,$  0 aConditional expressions(2  r , H XX?"6@`NNN?NC > ,$@ 0r - H XX?"6@`NNN?N Gw ,$@ 08 . <2 XX?"6@ NNN?Ne,$ 0 ZSelect statement(2  r / H2,d XX?"6@`NNN?NG',$@ 0B  s *?rs ?o !"$%& ̙33*)")___PPT10)+D&' = @B D&' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =-s6Bwipe(left)*<3<*(D ' =%(DX ' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%9%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*.%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*/%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*-%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*+%(D, ' =%(D ' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*(%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*.%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*/%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*,%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*-%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*+%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<**%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*9I%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Io%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*o{%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*{%(++0+0 ++0+0 ++0+0 ++0+*0 ++0+*0 ++0++0 ++0++0 ++0+.0 ++0+.0 +  0L0 H@0(  0 0 0Wmw% ,$ 0 String query =  SELECT * FROM stock WHERE  + strID +  = id ; for( int i = 0; i < dat.length(); i++) query = query +  AND  + dat[i] +  =  + inp[i];  2 ff ff]ff*ff4  (        8    0  Zj    R>t X  x @ 0 08mmws,$ 0 pString query =  SELECT * FROM stock WHERE  + strID +  = id ; j_ 2"ff ff&6  $ B 0 s *?rs ? ̙33;3___PPT10+X]DO' = @B D ' = @BA?%,( < +O%,( < +Da' =%(%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*0%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(++0+00 ++0+00 ++0+00 +   0L0    @ (  @ @ 0xmw%  lString query =  SELECT * FROM stock WHERE  + strID +  = id ; for( int i = 0; i < dat.length(); i++) query = query +  AND  + dat[i] +  =  + inp[i];   2ff ff\ffff 2  (        8    @ HXX?"6@`NNN?N g "  @ HXX?"6@`NNN?N" g r  @  Z    R>t X  x @   @ <ě XX?"6@ NNN?Ng Gm  bfrom dropdown menu(2    @ HXX?"6@`NNN?N-0  b  @ TG0*H,NI@XX?"0@NNN?N / g  @ < XX?"6@ NNN?N g K  Vyear min (2     @ <P XX?"6@ NNN?N '   _dat(2  B @ s *?rs ?  @ @ @ ̙33y___PPT10Y+D=' = @B +   0L0 `(  ` ` 0$mw%  TString query =  SELECT * FROM stock WHERE  + strID +  = id ; for( int i = 0; i < dat.length(); i++) query = query +  AND  + dat[i] +  =  + inp[i];   2ff ff\ff(fft2  (        A  ` HXX?"6@`NNN?N "  ` HXX?"6@`NNN?N g "  ` HXX?"6@`NNN?N" g r  ` HXX?"6@`NNN?N" r  `  Zh    R>t X  x @  ` <p XX?"6@ NNN?Ng Gm  bfrom dropdown menu(2    ` <p XX?"6@ NNN?Ng m  V from textbox (2     ` HXX?"6@`NNN?N-0    ` HXX?"6@`NNN?N- b  ` TG0*H,NI@XX?"0@NNN?N / g b  ` TG0*HIXXX?"0@NNN?N Og  ` <P XX?"6@ NNN?N g K  Vyear min (2     ` < XX?"6@ NNN?N '   _dat(2   ` <, XX?"6@ NNN?N WK  U2004 15(2    ` < XX?"6@ NNN?N   _inp(2  B ` s *?rs ?/@` ` ` ` ` ` ̙33y___PPT10Y+D=' = @B +    0L0 /'p(  pr p 0mw%  String query =  SELECT * FROM stock WHERE  + strID +  = id ; for( int i = 0; i < dat.length(); i++) query = query +  AND  + dat[i] +  =  + inp[i];  2ff ff]ff*fft2  (        A  p HXX?"6@`NNN?N "  p HXX?"6@`NNN?N g "  p HXX?"6@`NNN?N" g r  p HXX?"6@`NNN?N" r  p  Z    R>t X  x @  p HXX?"6@`NNN?N-0    p HXX?"6@`NNN?N-  p < XX?"6@ NNN?N g K  Vyear min (2     p <X XX?"6@ NNN?N '   _dat(2   p < XX?"6@ NNN?N WK  U2004 15(2    p < XX?"6@ NNN?N   _inp(2   p < XX?"6@ NNN?N= ' )  pFiltered with { delete ,  xp\_ ,  = ,  from ,  or }69 2'&   B p s *?rs ? ̙33y___PPT10Y+D=' = @B +u  0L0 | H(  HR H 0mw%  String query =  SELECT * FROM stock WHERE  + strID +  = id ; for( int i = 0; i < dat.length(); i++) query = query +  AND  + dat[i] +  =  + inp[i];  2ff ff]ff*ff t2  (        A  H HXX?"6@`NNN?N "  H HXX?"6@`NNN?N g "  H HXX?"6@`NNN?N" g r  H HXX?"6@`NNN?N" r  H  Z*    R>t X  x @  H HXX?"6@`NNN?N-0    H HXX?"6@`NNN?N-  H <0 XX?"6@ NNN?N g K  Vyear min (2     H <2 XX?"6@ NNN?N '   _dat(2   H <6 XX?"6@ NNN?N WK  U2004 15(2    H <: XX?"6@ NNN?N   _inp(2  W H <A XX?"6@ NNN?N-w ASELECT * FROM stock WHERE 982 = id AND year = 2004 AND min = 15<B 2ffffffffff B  H < P XX?"6@ NNN?N= ' )  rFiltered with { delete ,  xp\_ ,  = ,  from ,  or }J: 2'&   B H s *?rs ? ̙33y___PPT10Y+D=' = @B +[   0L0 jbh(  hR h 0Xmw%  String query =  SELECT * FROM stock WHERE  + strID +  = id ; for( int i = 0; i < dat.length(); i++) query = query +  AND  + dat[i] +  =  + inp[i];  2ff ff]ff*ff t2  (        A  h HXX?"6@`NNN?N "  h HXX?"6@`NNN?N g "  h HXX?"6@`NNN?N" g r  h HXX?"6@`NNN?N" r  h  Zm    R>t X  x @ h HXX?"6@`NNN?N-0    h HXX?"6@`NNN?N-   h <\p XX?"6@ NNN?N g K  Umin min(2     h < u XX?"6@ NNN?N '   _dat(2    h <8x XX?"6@ NNN?N W'K  T14 15)(2     h <| XX?"6@ NNN?N   _inp(2  W h < XX?"6@ NNN?N-w ASELECT * FROM stock WHERE NOT(1 = id AND min = 14 AND min = 15)<B 2ffffffffff B  h < XX?"6@ NNN?N= ' )  pFiltered with { delete ,  xp\_ ,  = ,  from ,  or }<9 2'&   B h s *?rs ? ̙33y___PPT10Y+D=' = @B +?  0L0  ??@ ;(     Z$    R>t X  x @ t B XX?"6@ NNN?N   O)(2   p B XX?"6@ NNN?N w  O=(2   s B4 XX?"6@ NNN?N   Oz(2   ^ B XX?"6@ NNN?N 7  Pid(2   ] B XX?"6@ NNN?N   O=(2   [ B8 XX?"6@ NNN?N   O((2   \ B XX?"6@ NNN?N WG  Ox(2   n B XX?"6@ NNN?N W  Qmin(2   _ B< XX?"6@ NNN?N G  QAND(2   K B XX?"6@ NNN?N 7  QNOT(2   E B XX?"6@ NNN?N= ' ']  Sstock(2    B@ XX?"6@ NNN?N] 7 }  SWHERE(2    B XX?"6@ NNN?N=  ]  RFROM(2    B XX?"6@ NNN?N= W]  TSELECT(2  2  NXX?"6@`NNN?N ] 2  NXX?"6@`NNN?N '] 2  NXX?"6@`NNN?N 7 ]   BXX?"0@NNN?N- '-   BXX?"0@NNN?N- 7 - 2  NXX?"6@`NNN?N ]   BXX?"0@NNN?N- -   BXX?"0@NNN?N- - 2 # NXX?"6@`NNN?N ] 2 2 NXX?"6@`NNN?N 7 2 4 NXX?"6@`NNN?N   B B XX?"6@ NNN?N= ]  O*(2   M s 0e0e    BCDE(F A@  A5% XX     ?A)BCD|E|| XptX ( Xp8P @   # "0e@       @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab-  2 N NXX?"6@`NNN?N W 2 O NXX?"6@`NNN?N w 2 P NXX?"6@`NNN?N ' 2 Q NXX?"6@`NNN?N 7 2 R NXX?"6@`NNN?N G 2 S NXX?"6@`NNN?N} G T BXX?"0@NNN?N   V BXX?"0@NNN?N 7  W BXX?"0@NNN?N Ww  X BXX?"0@NNN?N   Y BXX?"0@NNN?N '  Z BXX?"0@NNN?N 7 2 ` ZԔXX?"6@`NNN?N 7 2 b NXX?"6@`NNN?N W 2 c NXX?"6@`NNN?N  2 d NXX?"6@`NNN?N ' 2 e NXX?"6@`NNN?N} 7  g BXX?"0@NNN?N } h@ BXX?"0@NNN?N7  i BXX?"0@NNN?N   } j BD XX?"6@ NNN?N  O=(2   k B XX?"6@ NNN?N- 'M Qmin(2   l B XX?"6@ NNN?N-  M Oy(2   m BXX?"0@NNN?N G'  o BXX?"0@NNN?N   q BXX?"0@NNN?N W  r BXX?"0@NNN?N  b v@ ZZG@4HtPIXX?"0@NNN?N   w B XX?"6@ NNN?N]w} T (2d2 | NXX?"6@`NNN?N=W } BXX?"0@NNN?N '=  HXX?"0@NNN?NmW -  HXX?"0@NNN?N g-  HXX?"0@NNN?N-' g-W  < XX?"6@ NNN?Nw ASELECT * FROM stock WHERE NOT(1 = id AND min = 14 AND min = 15)<B 2ffffffffff B B  s *?rs ?o##42T!2NV#NOW%OPX'PQY)QRZ-RSg/Seh1eQi2Rdm4dco6cbq8b`r:42v@4|}B|C`D ̙33y___PPT10Y+D=' = @B +uK  0L0 !CCD ?(     ZL    R>t X  x @<F = 7-  = 7- % s 0e0e    BCDE(F @  5% XX     ?A)BCD|E|| XptX ( Xp8P @   # "0e@       @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab-    B XX?"6@ NNN?N   O)(2    Bd XX?"6@ NNN?N w  O=(2    B XX?"6@ NNN?N   Oz(2    B XX?"6@ NNN?N 7  Pid(2     B XX?"6@ NNN?N  O=(2     Bt# XX?"6@ NNN?N   O((2     B' XX?"6@ NNN?NW G  Ox(2      B* XX?"6@ NNN?N W  Qmin(2      B`. XX?"6@ NNN?N G  QAND(2     B2 XX?"6@ NNN?N 7  QNOT(2     B5 XX?"6@ NNN?N7 ] }  SWHERE(2  2 ! NXX?"6@`NNN?N 7 2 " NXX?"6@`NNN?N  2 & NXX?"6@`NNN?N W 2 ' NXX?"6@`NNN?Nw  2 ( NXX?"6@`NNN?N ' 2 ) NXX?"6@`NNN?N 7 2 * NXX?"6@`NNN?N G 2 + NXX?"6@`NNN?N }G , BXX?"0@NNN?N   - BXX?"0@NNN?N7   . BXX?"0@NNN?NW w  / BXX?"0@NNN?N  0 BXX?"0@NNN?N'  1 BXX?"0@NNN?N7 2 2 ZԔXX?"6@`NNN?N 7 2 3 NXX?"6@`NNN?NW  2 4 NXX?"6@`NNN?N  2 5 NXX?"6@`NNN?N'  2 6 NXX?"6@`NNN?N }7  7 BXX?"0@NNN?N } 8B BXX?"0@NNN?N7   9 BXX?"0@NNN?N  } : B > XX?"6@ NNN?N   O=(2    ; BA XX?"6@ NNN?N -'M Qmin(2   < BE XX?"6@ NNN?N - M Oy(2   = BXX?"0@NNN?NG '  > BXX?"0@NNN?N   ? BXX?"0@NNN?N W  @ BXX?"0@NNN?N  b AB ZZG@4HtPIXX?"0@NNN?N    B B|J XX?"6@ NNN?N]w} T (2d2 G NXX?"6@`NNN?N=W H BXX?"0@NNN?N '= I BO XX?"6@