ࡱ> .)*+,-Y( 32N/ 0|DArialas-(0(B 0 DTimes New Roman(0(B 0  DWingdingsRoman(0(B 0 0DSymbolgsRoman(0(B 0 @DVerdanasRoman(0(B 0 " 0(.2  @n?" dd@  @@``    (J  5   **5 ()()      ()()   ()  5  21()  p)q)r/p//y=ZW 6$M(y,I891>:VMV]-mhQ 'ae]#3]DEEGFE 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s " 0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab ff@8ghwB ʚ;"O2ʚ;g4?d?d@B 0Hppp@ <4ddddlpC 0\- <4BdBdlhG 080___PPT10 ? %O  =XE .Buffering in Query Evaluation over XML Streams//(WZiv Bar-Yossef Technion Marcus Fontoura Vanja Josifovski IBM Almaden Research Center JXP3  33,! F0 XML Document H1XML Document Tree J3 XPath Queries  Z= XPath Queries  N5XPathQuery = path pattern + predicates XPath 2.0 Forward axis only Eval(Q,D): nodes in D that match Q Two modes of XPath evaluation: Full fledged evaluation: given Q,D, output Eval(Q,D) Filtering: given Q,D, determine whether Eval(Q,D) is nonempty. "Ct 9 ) @b")8*P6 XML StreamsXML stream: sequence of SAX events startDocument(), endDocument(), startElement(name), endElement(name), text(str) Why XML streams? For transferring XML between systems For efficient access to large XML documents Critical resources Memory Processing time #PQ#-Q b#   Streaming XML AlgorithmsXFilter and YFilter [Altinel and Franklin 00] [Diao et al 02] X-scan [Ives, Levy, and Weld 00] XMLTK [Avila-Campillo et al 02] XTrie [Chan et al 02] SPEX [Olteanu, Kiesling, and Bry 03] Lazy DFAs [Green et al 03] The XPush Machine [Gupta and Suciu 03] XSQ [Peng and Chawathe 03] FluX [Koch el al 04] TurboXPath [Josifovski, Fontoura, and Barta 05] & i+3333"3 3333 &332;    Q98Memory Bottleneck I: Storage of Large Transition Tables89##%B##Framework of most algorithms: Q NFA Simulate NFA by DFA Caveat: exponential blowup However: exponential blowup is not necessary [Bar-Yossef, Fontoura, Josifovski 04] Algorithm for filtering XML streams whose space is linear in the query size oL &3> RV:5Memory Bottleneck II: Buffering of Document Fragments86##!B##HScenario 1: buffering nodes, which may or may not be part of the output.*I >lL5Memory Bottleneck II: Buffering of Document Fragments86##!B##EScenario 2: buffering nodes needed for evaluating pending predicates."F <]?5Memory Bottleneck II: Buffering of Document Fragments86##!B##SScenario 3: buffering multiple candidate matches that are nested within each other.*T I^@ Our ResultsfQuantitative space lower bounds for: Full-fledged evaluation of queries with predicates (Scenario 1) Filtering/full-fledged evaluation of queries with  multi-variate predicates (Scenario 2) Matching upper bound Eager evaluation of predicates In all other scenarios: no buffering required Filtering of queries with  univariate predicates over non-recursive documents is possible without buffering [Bar-Yossef, Fontoura, Josifovski 04]%ZZZZ.ZZ 4 P  m %  b M _A Related Work3Space complexity of XPath evaluation over non-streaming XML documents [Gottlob, Koch, Pichler 03], [Segoufin 03] Space complexity of XPath evaluation over streams of indexed XML data [Choi, Mahoui, Wood 03] Space complexity of select-project-join queries over relational data streams [Arasu et al 02]sZZZ* 3+363 33 330/\ `BDocument Concurrency"Q: query D = a1,& ,an: document Each ai is an SAX event at = (a1,& ,at) Definition: x D is alive at step t if x at and $ b, g s.t. x Eval(Q, atb) x Eval(Q, atg) t-concurrency(D,Q): number of nodes that are alive at step t concurrency(D,Q): maxt t-concurrency(D,Q)UUOU$UhU FFF  *$ ,bDConcurrency: Example eELower Bound NotionsA  normal lower bound: For every algorithm A, there exist Q and D s.t. A uses on Q and D W(concurrency(D,Q)) bits of space. Q and D may be  pathological Doesn t say much about real-world queries/documents An  ideal lower bound: For every A, every Q, and every D, A uses on Q and D W(concurrency(D,Q)) bits of space. Too good to be true A can have D and Q  hard-coded , and then know the result a priori Space of A on D and Q = minimum description length of Q and DZfZRZZYZZZ R >DfFOur Lower Bound@Theorem: For every A, every Q, and every D, there exists an almost isomorphic document D , s.t. A uses on Q and D , W(concurrency(D,Q)) bits of space. D is the same as D, except for a few extra empty nodes with auxiliary names. Theorem holds only if: Q is  star-free D is non-recursive e$ 'e$  ,[gG.Why isn t this Obvious? Reason 1: we want the theorem to work for every Q and D, not only ones with high MDL. Reason 2: Obvious: If x is alive at step t A has to remember x Because: A may or may not need to output x Not obvious: If x and y are alive at step t A has to remember both If x and y are not  independent , maybe it s enough to remember just x (or just y)a7+ESN+ !S Z hHProof of Lower Bound C = t-concurrency(D,Q) x1,& ,xC = nodes that are alive at step t Recall: for every xi there exist bi and gi s.t. xi Eval(Q, atbi) xi Eval(Q, atgi) Lemma: there exist a single b and a single g s.t. for all i, xi Eval(Q, atb) xi Eval(Q, atg)p&>$  "       M0  iIProof of Lower Bound (cont.) For every S { 1,& ,C } define document DS: DS is the same as D, except For every i S, we  mark xi Marking: an extra empty child with an auxiliary name Note: DS is almost-isomorphic to D A = any algorithm Note: From output of A on DS, one can  reconstruct the set S.2HwQ   #jJProof of Lower Bound (cont.) Consider state of A at step t when running on DS If suffix = g, none of the xi s should be output A could not have output any xi by step t If suffix = b, no information in suffix about S but S can be reconstructed from output state of A at step t must have all information about S Conclusion: space e" W(C) Actual proof: by one-way communication complexity11+W92/   J9    LkK Conclusions  nOur contributions: Quantitative space lower bounds Full-fledged evaluation of queries with predicates Filtering/full-fledged evaluation of queries with  multi-variate predicates Matching upper bound Open problems: Quantitative lower bounds for XQuery evaluation over streams Address larger fragments of XPath Z ZZZZ_ZZ  `JP5 /G IL[d ` Ot{h______` M <ff33̙3` +ffO=ff̙H7` fff3f̙` Tff33ff` 0Ky{kOz` )R{f` GiIfff̙fR` ̙|̙3f` 3ff~>?" dd@'?lFd@  nK'o`P( n?" dd@   @@``PT     o (`0p>> (((  ZB  c $D"`   6 "M }  X Click to edit Master title style!!  (  0L "; `  RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S    0 "` `  \*     0@ "`   b*     D  0 "` `` H@___PPT9"@ n*"     T     "`h2   s *"`h2   s *"h2   s *"@h2   s *"0`h2   s *"0h2  s *"0@h2  s *"`0h2  s *"`h2  s *"h2  s *"@h2  s *"`n2  0" h2  s *"``h2  s *"`h2  s *"@`n2  0"``h2  s *"`h2  s *"n2  0"@n2  0"`h2  s *" h2  s *"`@n2  0"@n2   0"@@h2 ! s *"`@n2 " 0"``n2 # 0"`h2 $ s *"`@h2 % s *"``h2 & s *" h2 ' s *"`  ( NT ?"6@ NNN?N9vPH@___PPT9"@ t*(0 2    H  0޽h ? 3ff~___PPT10i. s+D=' = @B + Networkr g (((  ZB  c $D"   6_ "&wf  X Click to edit Master title style!!    0( "wQ   [#Click to edit Master subtitle style$$    0 "` `  \*     0 "`   b*     D  00 "` `` H@___PPT9"@ n*"     T `]   "]p h2   s *"`]h2   s *"]h2   s *"]Eh2   s *"`h2   s *"h2  s *"Eh2  s *"yh2  s *"`B h2  s *"B h2  s *"EB h2  s *"yB n2  0",B h2  s *"`u  h2  s *"u  h2  s *"u E n2  0"yu  h2  s *"`(  h2  s *"(  n2  0"( E n2  0"y(  h2  s *",(  h2  s *"` Z n2  0" Z n2   0" EZ h2 ! s *"y Z n2 " 0"`  n2 # 0"  h2 $ s *" E h2 % s *"y  h2 & s *"A  h2 ' s *"yA  `B ( s *D"H  0޽h ? 3ff~___PPT10i. s+D=' = @B +dg 0  t(    0HIV  r  V P*    0(MV  r V R*  d  c $ ?*8  V  0@V  J V RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  6 2:
3: 4: Intro 5: 6: 7: bla bla bla 8: 9:
10:
11: 12: Results 13: 14: 15: yada yada yada 16: 17:
Z0<200<2BFBFBFBF BFBF BF BF B F BF BFBFBFBFBFBF BF BF BF BF BFBBBtu(  6"`3. w =Y18:
19: 20: Conclusions 21: 22: 23: etc etc etc 24:
25: 26: On the Complexity of Database Queries 27: 28: 29: Papadimitriou 30: 31: 32: Yannakakis 33: 34: Z00<2BFBFBF BFB F BF BF B FBFBF B1FBFBF BFBF BF B FBFBFB>u H  0޽h ? 3fffff3̙3f̙___PPT10i.Ia+D=' = @B +4- gZK0 3,+, A`((  2 & 04N  =content3~"  s *M }   2  0r V  ;paper32  0H^ KKN  ;title32  0 &: =section32  0 8id32  0h%<  ;title32  08 /  :root3L   c $Ԕ ' rL   c $Ԕ' L  @ c $ԔL  @ c $Ԕ%L   c $Ԕ' K^ 2  0R  B  =section32  0d T 8id32  0L p ;title3L @ c $ԔB  L @ c $ԔB }   s *4C"?x  ]%On the Complexity of Database Queries&(2&  s *C"?   ;Intro 2  s *C"?. 72 22 " 0 " @3 2 # 0LA 41  <author32 $ 0$b <author32 % 0P F =content3 ' <Ԕ?"0@NNN?N ( <Ԕ?"0@NNN?NB  2 ) 0D >  @3 2 * 0   @3 2 + 0x `  @3 2 , 0 C  @3 2 - 0  @3 2 . 046"& @3  / <Ԕ?"0@NNN?N' A  0 <Ԕ?"0@NNN?N' bL 1 <Ԕ?"0@NNN?N1 p  2 <Ԕ?"0@NNN?N 3 <Ԕ?"0@NNN?NN KT  4@ <Ԕ?"0@NNN?N< u  5 <Ԕ?"0@NNN?N /  6@ <Ԕ?"0@NNN?NT}6 7 <Ԕ?"0@NNN?N 8 s *C"? L  E Papadimitriou(2 9 s *C"?   \ Yannakakis (2   : s *C"? ?c =Results 2 ; s *=C"?  yada yada yada 262 H 0D=  =section32 I 0 =C ! 3  8id32 J 00=   ;title3L K@ c $Ԕ h ] f L L c $Ԕ ]  M s *$=C"?Q  91(2 N s *T=C"? (  c etc etc etc 2  O s *=C"? q  73 22 Q 0t=r yy  =content3 R <Ԕ?"0@NNN?N ] 7 2 S 0 =( X   @3 2 T 0@= w  @3  U <Ԕ?"0@NNN?N  V <Ԕ?"0@NNN?Ny ' ' (  \ s *@'=C"?   A Conclusions 2  ^@ <Ԕ?"0@NNN?N] ' b ` TZGH̙I^Ԕ?"0@NNN?N' u   s *+=C"? :   bla bla bla 2 6H  0޽h ?       &' %( #/ $0 #)1$*2"3,4&+5.6%-7HIKHJLHQRJTUQSVH^ ` 3fffff3̙3f̙___PPT10i.Ia+D=' = @B +#: gZK0 W1O10 CdP-(  ~"  s *^=M }  =  7 0h5=C"?[ ?Results 2 8 0`=C"?h  yada yada yada 262  6e=   =content32  6j=  ;paper32  6h=   ;title32  6Xp=[ =section32  6(u=   8id32  6Ds=E i5  ;title32   6z=  :root3R   s *Ԕ R   s *Ԕ R  @ s *Ԕ[  R  @ s *Ԕ[E R  s *Ԕ  2  6x= vz  =section32  6= 6 8id32  6X=;= ;title3R @ s *Ԕ x R @ s *Ԕ `x;  0@=C"? d _%On the Complexity of Database Queries&(2&  0=C"? P  =Intro 2  0=C"?yda 72 22   6=DF @3 2 ! 6X=9 JM  <author32 " 60="sw <author32 # 6\=  =content3 $ BԔ?"0@NNN?N[  % BԔ?"0@NNN?N x 2 & 6P= U  @3 2 ' 6= R  @3 2 ( 6= o  @3 2 ) 6ܱ= 1  @3 2 * 6="y @3 2 + 6 =\+ @3  , BԔ?"0@NNN?N L9  - BԔ?"0@NNN?N s . BԔ?"0@NNN?N L  / BԔ?"0@NNN?Nu  0 BԔ?"0@NNN?N D 1@ BԔ?"0@NNN?N5   2 BԔ?"0@NNN?N   3@ BԔ?"0@NNN?N?`\ 4 BԔ?"0@NNN?N#" 5 0=C"?w s/7  G Papadimitriou(2 6 0=C"? x  ^ Yannakakis (2  2 D 6@=:   =section32 E 6=; 2m  8id32 F 6t= m   ;title3R G@ s *Ԕ >  Y R H s *Ԕ  >  I 0=C"?   91(2 J 0=C"? % P  e etc etc etc 2  K 0=C"? s  73 22 M 6=d < i F  =content3 N BԔ?"0@NNN?N  2 O 6$=  @3 2 P 6=:  @3  Q BԔ?"0@NNN?N > F :  R BԔ?"0@NNN?NF S S  X 0(=C"?$   C Conclusions 2  Y@ BԔ?"0@NNN?N : b Z ZZGH̙I^Ԕ?"0@NNN?N.  [ 0 =C"? tl   bla bla bla 2 6 c Bo?"6@ NNN?Nx d BA ?"6@ NNN?N8  /paper[author= Papadimitriou ]/section[@id =  2 or title =  Intro ]/contentM l@D@D@ D@D@D@D@D@D@D,  #7_H  0޽h ?      $ #% !, "- !&. "'/ 0)1(2+3#*4DEGDFHDMNFPQMORDYZ 3fffff3̙3f̙\T___PPT104.Ia+D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D!' =4@BBBB%(D' =,54*3>Bfillcolor=@BPB<*D' =1:B solid*a3>Bfill.type<*D' =1:B true*]3>Bfill.on<*D!' =4@BBBB%(D' =,54*3>Bfillcolor=@BPB<*#D' =1:B solid*a3>Bfill.type<*#D' =1:B true*]3>Bfill.on<*#+7 gZK0 ..@ CD8H+(  8~" 8 s * +AM }  A  8 s *=C"? } ?Results 2 8 s *`=C"?  yada yada yada 262 8 00A   =content32 8 0l3A  ;paper32 8 06A 8  ;title32 8 0$:AQ =section32  8 0=A   8id32  8 0@A; +  ;title32  8 08DA  :root3L  8 c $Ԕ L  8 c $Ԕ L 8@ c $ԔQB L 8@ c $ԔQ; L 8 c $Ԕ  2 8 0lIA   =section32 8 0LA >X 8id32 8 0TQA1_ ;title3L 8@ c $Ԕ / L 8@ c $Ԕ 1 8 s *TTAC"? Z _%On the Complexity of Database Queries&(2& 8 s *$YAC"? 1F  =Intro 2 8 s *\AC"?oW 72 22 8 0_A:h  @3 2 8 0cA/ lo  <author32 8 0ZA <author32 8 0,fA ' =content3 8 <Ԕ?"0@NNN?NQ  8 <Ԕ?"0@NNN?N  2 8 0nA $w{  @3 2  8 0qA t  @3 2 !8 0vA =  @3 2 "8 0luA S  @3 2 #8 0|A @3 2 $8 0{AR ! @3  %8 <Ԕ?"0@NNN?N n/  &8 <Ԕ?"0@NNN?N  '8 <Ԕ?"0@NNN?N n  (8 <Ԕ?"0@NNN?N  )8 <Ԕ?"0@NNN?N : *8@ <Ԕ?"0@NNN?N+   +8 <Ԕ?"0@NNN?N   ,8@ <Ԕ?"0@NNN?NaR -8 <Ԕ?"0@NNN?NE .8 s *PAC"?m Q-  G Papadimitriou(2 /8 s * AC"? n  ^ Yannakakis (2  2 08 0ԍA0  B  =section32 18 0XA1 T  8id32 28 0A 1  ;title3L 38@ c $Ԕ ` * O L 48 c $Ԕ * `  58 s *ԘAC"?   91(2 68 s *AC"? G F  e etc etc etc 2  78 s *lAC"?   73 22 88 0$AZ ^ <  =content3 98 <Ԕ?"0@NNN?N * { 2 :8 0`A   @3 2 ;8 0A0   @3  <8 <Ԕ?"0@NNN?N ` h 0  =8 <Ԕ?"0@NNN?N< u u  >8 s *AC"? &  C Conclusions 2  ?8@ <Ԕ?"0@NNN?N* 0 b @8 TZGH̙I^Ԕ?"0@NNN?NP  A8 s *XAC"? b   bla bla bla 2 6 D8 Bo?"6@ NNN?Ne X C8 B$A ?"6@ NNN?N&L9  3%/paper[title != section/title]/author& lBFBFBFBFBF 7_H 8 0޽h ?  88 888 88 888 88888888888888 888 88%8 88&8 88'8 8 8(888)8 8"8*88!8+88$8,88#8-808183808284808889828;8<888:8=8808?888@8 3fffff3̙3f̙\T___PPT104.Ia+D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D!' =4@BBBB%(D' =,54ff*3>Bfillcolor=@BPB<*8D' =1:B solid*a3>Bfill.type<*8D' =1:B true*]3>Bfill.on<*8D!' =4@BBBB%(D' =,54ff*3>Bfillcolor=@BPB<*8D' =1:B solid*a3>Bfill.type<*8D' =1:B true*]3>Bfill.on<*8+  g p P(  r  S AM }  A   S X(A; <$D 0 A H  0޽h ? 3ff~___PPT10.Po04+YD' = @B DQ' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*>a%(DL' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*b%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+ g  P(  r  S AM }  A   S A; <$@ 0 A H  0޽h ? 3ff~  ___PPT10 .QoТG+ED^ ' = @B D ' = @BA?%,( < +O%,( < +DL' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*s%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+ g \T(  r  S $AM }  A r  S A; f A   3 rDfdo))?"6@ NNN?N7q[,$D 0 >All of them use lots of memory on certain queries & documentsR?8lFZBBBH  0޽h ? 3ff~___PPT10.I`?+ DO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+8+0+D + g  P(  r  S lDM }  D   S hD; <$@ 0 D H  0޽h ? 3ff~  ___PPT10 .So $+ED^ ' = @B D ' = @BA?%,( < +O%,( < +DL' =%(D' =%(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<*&:%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*:V%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*V%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+  g ? ? D q;(   r   S 'DM }  D    S (D9<$ 0 D  a  0-DC"?8l,$ 0 ?Results 28 b  0/DC"?H ,$ 0 yada yada yada 262 c  64D P[ ,$@ 0 =content32 d  68D10   ,$@ 0 ;paper32 e  6 0 C Conclusions 2   @ BԔ?"0@NNN?N ~  ,$@? 0b   ZZG HJIԔ?"0@NNN?N   ,$@@ 05   0`DC"? g ,$A 0  bla bla bla 2 6   Bo?"6@ NNN?N),$@B 0   B$D ?"6@ NNN?No,$C 0 /paper[author= Papadimitriou ]/section[@id =  2 or title =  Intro ]/contentM l@D@D@ D@D@D@D@D@D@D,  #7_H   0޽h ? i d j d f k f g l f h m d e n o p r  o q s !f c { "o z | #d x  $d y  %x }  &y ~  'e w  (h   )c   *q   +z   ,   -   .   /   0   1d   2d o   3ff~___PPT10v.Vo04Z+)|RDx' = @B DEx' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* I%(D/g' =%(Df' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*a %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*b %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*c %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*d %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*e %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*f %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*g %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*h %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*i %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*j %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*k %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*l %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*m %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*n %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*o %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*p %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*q %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*r %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*s %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*t %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*u %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*v %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*w %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*x %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*y %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*z %(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' =A@BBBB0B%(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' =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' =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' =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'