+
    üÐjß1  ã                   óä   € R t ^ RIt^ RIHtHtHtHtHtHtH	t	H
t
 ^ RIHt ^ RIHt ^RIHt ^RIHtHt ^RIHtHt ^RIHt ^R	IHt ^R
IHt ^RIHt R R lt ! R R]P@                  4      t!R# )z+
Test cases for L{twisted.logger._global}.
N)ÚIOÚAnyÚListÚOptionalÚTextIOÚTupleÚTypeÚcast)ÚFailure)Úunittest)ÚtextFileLogObserver)ÚMORE_THAN_ONCE_WARNINGÚLogBeginner)ÚILogObserverÚLogEvent)ÚLogLevel)ÚLogger)ÚLogPublisher)ÚnextLinec                ó€   € V ^8„  d   QhR\         P                  R\        \        ,          R\        \        ,          RR/# )é   ÚtestÚactualEventsÚexpectedEventsÚreturnN)r   ÚTestCaser   r   )Úformats   "ÚA/usr/lib/python3/dist-packages/twisted/logger/test/test_global.pyÚ__annotate__r      s>   € ÷ 7ñ 7Ü
×
Ñ
ð7ä”x•.ð7ô œ•Nð7ð 
ñ	7ó    c                ó,  a€ \        V4      \        V4      8w  d   V P                  W4       \        4       oV F#  pS\        VP                  4       4      ,          oK%  	  R V3R llpV Uu. uF
  q4! V4      NK  	  ppV P                  WR4       R# u upi )a  
Compare two sequences of log events, examining only the the keys which are
present in both.

@param test: a test case doing the comparison
@param actualEvents: A list of log events that were emitted by a logger.
@param expectedEvents: A list of log events that were expected by a test.
c                ó0   € V ^8„  d   QhR\         R\         /# )r   Úeventr   )r   )r   s   "r   r   Ú#compareEvents.<locals>.__annotate__*   s   € ÷ ñ œð ¤Xñ r   c                 óŠ   <€ V P                  4       pV P                  4        F  pVS9  g   K  VP                  V4       K  	  V# ©N)ÚcopyÚkeysÚpop)r"   r&   ÚkeyÚallMergedKeyss   &  €r   ÚsimplifyÚcompareEvents.<locals>.simplify*   s8   ø€ Ø�z‰z‹|ˆØ—:‘:–<ˆCØ˜-Ö'Ø—‘˜–ñ  ð ˆr   N)ÚlenÚassertEqualÚsetr'   )r   r   r   r"   r+   ÚsimplifiedActualr*   s   &&&   @r   ÚcompareEventsr1      s†   ø€ ô ˆ<ÓœC Ó/Ô/Ø×Ñ˜Ô6Ü“E€MãˆØœ˜UŸZ™Z›\Ó*Õ*Šñ  ÷ð ñ 6BÓB±\¨E˜ ž±\ÐÐBØ×ÑÐ%Ö6ùò Cs   Á,Bc                   ó   a € ] tR t^5t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# ) ÚLogBeginnerTestsz
Tests for L{LogBeginner}.
c                ó   <€ V ^8„  d   QhRR/# ©r   r   N© )r   Ú__classdict__s   "€r   r   ÚLogBeginnerTests.__annotate__:   s   ø€ ÷ /
ñ /
�tñ /
r   c                ó&  € \        4       V n        \        P                  ! 4       V n         ! R  R4      p ! R R4      pV! 4       V n        V! 4       V n        \        V P                  V P                  V P
                  V P                  4      V n        R# )c                   ó2   € ] tR t^>t]! 4       t]! 4       tRtR# )Ú&LogBeginnerTests.setUp.<locals>.NotSysr6   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚobjectÚstdoutÚstderrÚ__static_attributes__r6   r   r   ÚNotSysr;   >   s   † Ù“XˆFÙ“XŒFr   rD   c                   óH   a € ] tR t^Bt o V 3R lR ltRV 3R lR lltRtV tR# )Ú+LogBeginnerTests.setUp.<locals>.NotWarningsc                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   Ú8LogBeginnerTests.setUp.<locals>.NotWarnings.__annotate__C   s   ø€ ÷ ñ  $ñ r   c                ó   € . V n         R # r%   ©Úwarnings)Úselfs   &r   Ú__init__Ú4LogBeginnerTests.setUp.<locals>.NotWarnings.__init__C   s   € ð
 ð	 –r   Nc                ó‚   <€ V ^8„  d   QhRS[ RS[S[,          RS[ RS[RS[S[S[,          ,          RS[S[,          RR/# )	r   ÚmessageÚcategoryÚfilenameÚlinenoÚfileÚliner   N)Ústrr   ÚWarningÚintr   r   r   )r   r7   s   "€r   r   rH   J   sk   ø€ ÷ Xñ XáðXñ ™w�-ðXñ ð	Xñ
 ðXñ ™r¡#�wÕ'ðXñ ™s•mðXð ñXr   c                óB   € V P                   P                  WW4WV34       R# )a%  
Emulate warnings.showwarning.

@param message: A warning message to emit.
@param category: A warning category to associate with
    C{message}.
@param filename: A file name for the source code file issuing
    the warning.
@param lineno: A line number in the source file where the
    warning was issued.
@param file: A file to write the warning message to.  If
    L{None}, write to L{sys.stderr}.
@param line: A line of source code to include with the warning
    message. If L{None}, attempt to read the line from
    C{filename} and C{lineno}.
N)rK   Úappend)rL   rP   rQ   rR   rS   rT   rU   s   &&&&&&&r   ÚshowwarningÚ7LogBeginnerTests.setUp.<locals>.NotWarnings.showwarningJ   s   € ð2 —‘×$Ñ$ g¸È4Ð%VÖWr   rJ   )NN)r<   r=   r>   r?   rM   r[   rC   Ú__classdictcell__©r7   s   @r   ÚNotWarningsrF   B   s!   ø‡ € ÷ð ÷X÷ Xð Xr   r_   N)	r   Ú	publisherÚioÚStringIOÚerrorStreamÚ	sysModuleÚwarningsModuler   Úbeginner)rL   rD   r_   s   &  r   ÚsetUpÚLogBeginnerTests.setUp:   sn   € Ü%›ˆŒÜŸ;š;›=ˆÔ÷	ñ 	÷!	Xñ !	XñF  ›ˆŒÙ)›mˆÔÜ#Ø�N‰N˜D×,Ñ,¨d¯n©n¸d×>QÑ>Qó
ˆŽr   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   k   s   ø€ ÷ +ñ +°ñ +r   c                ó"  aa€ \        ^^R7      p. o. o\        \        V3R l4      p\        \        V3R l4      pV P                  P	                  W#34       V P                  V4       V P                  V.S4       V P                  V.S4       R# )z/
Test that C{beginLoggingTo()} adds observers.
©ÚfooÚbarc                 ó&   <€ SP                  V 4      # r%   ©rZ   ©ÚeÚevents1s   &€r   Ú<lambda>ÚBLogBeginnerTests.test_beginLoggingToAddObservers.<locals>.<lambda>t   ó   ø€ ¨'¯.©.¸Ô*;r   c                 ó&   <€ SP                  V 4      # r%   ro   ©rq   Úevents2s   &€r   rs   rt   u   ru   r   N)Údictr	   r   rf   ÚbeginLoggingTor`   r.   ©rL   r"   Úo1Úo2rr   rx   s   &   @@r   Útest_beginLoggingToAddObserversÚ0LogBeginnerTests.test_beginLoggingToAddObserversk   sy   ù€ ô ˜ Ô"ˆà"$ˆØ"$ˆä”,Ô ;Ó<ˆÜ”,Ô ;Ó<ˆà�‰×$Ñ$ b XÔ.Ø�‰�uÔà×Ñ˜%˜ 'Ô*Ø×Ñ˜%˜ 'Ö*r   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   }   s   ø€ ÷ +ñ +°4ñ +r   c                ó"  aa€ \        ^^R7      p. o. o\        \        V3R l4      p\        \        V3R l4      pV P                  V4       V P                  P                  W#34       V P                  V.S4       V P                  V.S4       R# )zD
Test that events are buffered until C{beginLoggingTo()} is
called.
rk   c                 ó&   <€ SP                  V 4      # r%   ro   rp   s   &€r   rs   ÚDLogBeginnerTests.test_beginLoggingToBufferedEvents.<locals>.<lambda>‡   ru   r   c                 ó&   <€ SP                  V 4      # r%   ro   rw   s   &€r   rs   rƒ   ˆ   ru   r   N)ry   r	   r   r`   rf   rz   r.   r{   s   &   @@r   Ú!test_beginLoggingToBufferedEventsÚ2LogBeginnerTests.test_beginLoggingToBufferedEvents}   sy   ù€ ô
 ˜ Ô"ˆà"$ˆØ"$ˆä”,Ô ;Ó<ˆÜ”,Ô ;Ó<ˆà�‰�uÔØ�‰×$Ñ$ b XÔ.à×Ñ˜%˜ 'Ô*Ø×Ñ˜%˜ 'Ö*r   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   Úlimitrf   r   N)rX   r   )r   r7   s   "€r   r   r8   �   s"   ø€ ÷ 
ñ 
¡cð 
±[ð 
ÀTñ 
r   c           	     ó>  € \        V^,           4       F  pV P                  \        VR7      4       K   	  . pVP                  \	        \
        VP                  4      .4       V P                  \        \        ^V^,           4      4      \        R V 4       4      4       R# )at  
Verify that when more than C{limit} events are logged to L{LogBeginner},
only the last C{limit} are replayed by L{LogBeginner.beginLoggingTo}.

@param limit: The maximum number of events the log beginner should
    buffer.
@param beginner: The L{LogBeginner} against which to verify.

@raise: C{self.failureException} if the wrong events are replayed by
    C{beginner}.
)Úcountc              3   ó2   "  € T F  qR ,          x € K  	  R# 5i)rŠ   Nr6   )Ú.0r"   s   & r   Ú	<genexpr>Ú4LogBeginnerTests._bufferLimitTest.<locals>.<genexpr>¢   s   é € Ð4©V E�w—’«Vùs   ‚N)	Úranger`   ry   rz   r	   r   rZ   r.   Úlist)rL   rˆ   rf   rŠ   Úeventss   &&&  r   Ú_bufferLimitTestÚ!LogBeginnerTests._bufferLimitTest�   sx   € ô ˜5 1�9Ö%ˆEØ�N‰Nœ4 eÔ,Ö-ñ &à!#ˆØ×Ñ¤¤l°F·M±MÓ!BÐ CÔDØ×ÑÜ”�q˜% !�)Ó$Ó%ÜÑ4©VÓ4Ó4ö	
r   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   ¥   s   ø€ ÷ 4ñ 4¨ñ 4r   c                ó\   € \         P                  pV P                  WP                  4       R# )zp
Up to C{LogBeginner._DEFAULT_BUFFER_SIZE} log events are buffered for
replay by L{LogBeginner.beginLoggingTo}.
N)r   Ú_DEFAULT_BUFFER_SIZEr’   rf   )rL   rˆ   s   & r   Útest_defaultBufferLimitÚ(LogBeginnerTests.test_defaultBufferLimit¥   s!   € ô
 ×0Ñ0ˆØ×Ñ˜e§]¡]Ö3r   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   ­   s   ø€ ÷ /ñ /¨$ñ /r   c                óœ   € ^p\        V P                  V P                  V P                  V P                  VR7      pV P                  W4       R# )zr
The size of the L{LogBeginner} event buffer can be overridden with the
C{initialBufferSize} initilizer argument.
)ÚinitialBufferSizeN)r   r`   rc   rd   re   r’   )rL   rˆ   rf   s   &  r   Útest_overrideBufferLimitÚ)LogBeginnerTests.test_overrideBufferLimit­   sF   € ð
 ˆÜØ�N‰NØ×ÑØ�N‰NØ×ÑØ#ô
ˆð 	×Ñ˜eÖ.r   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   ¼   s   ø€ ÷ )Bñ )B¨$ñ )Br   c                óZ  € . p. p\         P                  ! 4       p\        V4      pV P                  \	        RR7      4       \        4       w  rVV P                  P                  \        \        VP                  4      V.4       V P                  \	        RR7      4       \        4       w  rxV P                  P                  \        \        VP                  4      V.4       V P                  \	        RR7      4       \	        \        \        P                  VVVVR7      p	RV n        \        V V\	        RR7      \	        RR7      V	\	        RR7      .4       \        WV	\	        RR7      .4       VP!                  4       p
V P#                  RV RV R	2V
4       V P#                  RV RV R	2V
4       R# )
zŸ
When invoked twice, L{LogBeginner.beginLoggingTo} will emit a log
message warning the user that they previously began logging, and add
the new log observers.
Ú	prebuffer)r"   Ú
postbufferÚpostwarn)Ú
log_formatÚ	log_levelÚfileNowÚlineNowÚfileThenÚlineThenNÚ<Ú:Ú>)ra   rb   r   r`   ry   r   rf   rz   r	   r   rZ   r   r   ÚwarnÚmaxDiffr1   ÚgetvalueÚassertIn)rL   rr   rx   Ú
fileHandleÚtextObserverÚfirstFilenameÚ	firstLineÚsecondFilenameÚ
secondLineÚwarningÚoutputs   &          r   Útest_beginLoggingToTwiceÚ)LogBeginnerTests.test_beginLoggingToTwice¼   sd  € ð #%ˆØ"$ˆÜ—[’[“]ˆ
Ü*¨:Ó6ˆØ�‰”t +Ô.Ô/Ü#+£:Ñ ˆØ�‰×$Ñ$¤d¬<¸¿¹Ó&HÈ,Ð%WÔXØ�‰”t ,Ô/Ô0Ü%-£ZÑ"ˆØ�‰×$Ñ$¤d¬<¸¿¹Ó&HÈ,Ð%WÔXØ�‰”t *Ô-Ô.ÜÜ-Ü—m‘mØ"ØØ"Øô
ˆð ˆŒÜØØä˜;Ô'Ü˜<Ô(ØÜ˜:Ô&ð	ô		
ô 	�d g¬t¸*Ô/EÐ%FÔGà×$Ñ$Ó&ˆØ�‰˜˜-˜¨¨)¨°AÐ6¸Ô?Ø�‰˜˜.Ð)¨¨:¨,°aÐ8¸&ÖAr   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   ç   s   ø€ ÷ Nñ N dñ Nr   c                óÎ   € \        V P                  R7      pVP                  R4       VP                  RRR7       V P	                  V P
                  P                  4       R4       R# )z@
Critical messages will be written as text to the error stream.
©Úobserverzignore thisza critical {message}rP   )rP   za critical message
N)r   r`   ÚinfoÚcriticalr.   rc   r®   ©rL   Úlogs   & r   Útest_criticalLoggingÚ%LogBeginnerTests.test_criticalLoggingç   sO   € ô ˜dŸn™nÔ-ˆØ�‰�ÔØ�‰Ð+°YˆÔ?Ø×Ñ˜×)Ñ)×2Ñ2Ó4Ð6LÖMr   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   ð   s   ø€ ÷ :ñ :¨4ñ :r   c                óÞ   € \        V P                  R7      pV P                  P                  R4       VP	                  R4       V P                  V P                  P                  4       R4       R# )zn
Once logging has begun with C{beginLoggingTo}, critical messages are no
longer written to the output stream.
r¼   zanother critical messageÚ Nr6   )r   r`   rf   rz   r¿   r.   rc   r®   rÀ   s   & r   Útest_criticalLoggingStopsÚ*LogBeginnerTests.test_criticalLoggingStopsð   sP   € ô
 ˜dŸn™nÔ-ˆØ�‰×$Ñ$ RÔ(Ø�‰Ð/Ô0Ø×Ñ˜×)Ñ)×2Ñ2Ó4°bÖ9r   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   ú   s   ø€ ÷ 
ñ 
°tñ 
r   c           	     ó”  € . pV P                   P                  \        \        VP                  4      .4       \        R\        \        V P                  P                  4      R7       \        W\        RRR7      .4       VR \        R\        \        V P                  P                  4      R7       \        W\        RRR7      .4       R# )	zŸ
L{LogBeginner.beginLoggingTo} will re-direct the standard output and
error streams by setting the C{stdio} and C{stderr} attributes on its
sys module object.
zHello, world.©rT   rA   )Úlog_namespaceÚlog_io:NNNzError, world.rB   N)rf   rz   r	   r   rZ   Úprintr   rd   rA   r1   ry   rB   )rL   r‘   s   & r   Ú%test_beginLoggingToRedirectStandardIOÚ6LogBeginnerTests.test_beginLoggingToRedirectStandardIOú   s–   € ð "$ˆØ�‰×$Ñ$¤d¬<¸¿¹Ó&GÐ%HÔIÜˆo¤D¬°·±×1FÑ1FÓ$GÕHÜØœ4¨h¸ÔOÐPô	
ð �1ˆIÜˆo¤D¬°·±×1FÑ1FÓ$GÕHÜØœ4¨h¸ÔOÐPö	
r   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8     s   ø€ ÷ 	5ñ 	5°ñ 	5r   c                ó0  € V P                   P                  pV P                   P                  pV P                  P	                  RRR7       V P                  V P                   P                  V4       V P                  V P                   P                  V4       R# )zw
L{LogBeginner.beginLoggingTo} will leave the existing stdout/stderr in
place if it has been told not to replace them.
F)ÚredirectStandardIONr6   )rd   rA   rB   rf   rz   ÚassertIs)rL   ÚoldOutÚoldErrs   &  r   Útest_beginLoggingToDontRedirectÚ0LogBeginnerTests.test_beginLoggingToDontRedirect  si   € ð
 —‘×&Ñ&ˆØ—‘×&Ñ&ˆØ�‰×$Ñ$ R¸EÐ$ÔBØ�‰�d—n‘n×+Ñ+¨VÔ4Ø�‰�d—n‘n×+Ñ+¨VÖ4r   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8     s   ø€ ÷ Tñ T°dñ Tr   c           	     óâ  € \         P                  ! \         P                  ! 4       R4      p\         P                  ! \         P                  ! 4       R4      pWP                  n        W P                  n        . pV P                  P                  \        \        VP                  4      .4       \        \        V P                  P                  4      p\        \        V P                  P
                  4      pV P                  VP                  R4       V P                  VP                  R4       VP                  R4       VP                  R4       \        W\!        RR7      \!        RR7      .4       R# )	zÖ
When L{LogBeginner.beginLoggingTo} redirects stdout/stderr streams, the
replacement streams will preserve the encoding of the replaced streams,
to minimally disrupt any application relying on a specific encoding.
z	shift-JISÚbig5s   —›
s   ¼ü
u   æ�Ž)rÍ   u   ç‘©N)ra   ÚTextIOWrapperÚBytesIOrd   rA   rB   rf   rz   r	   r   rZ   r   r.   ÚencodingÚwriter1   ry   )rL   ÚweirdÚweirderrr‘   rA   rB   s   &     r   Ú$test_beginLoggingToPreservesEncodingÚ5LogBeginnerTests.test_beginLoggingToPreservesEncoding  sò   € ô × Ò ¤§¢£¨{Ó;ˆÜ×#Ò#¤B§J¢J£L°&Ó9ˆà %�‰ÔØ (�‰Ôà!#ˆØ�‰×$Ñ$¤d¬<¸¿¹Ó&GÐ%HÔIÜ”f˜dŸn™n×3Ñ3Ó4ˆÜ”f˜dŸn™n×3Ñ3Ó4ˆØ×Ñ˜Ÿ™¨+Ô6Ø×Ñ˜Ÿ™¨&Ô1à�‰�]Ô#Ø�‰�]Ô#Ü�d¤T°Ô%:¼DÈÔ<QÐ$RÖSr   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   /  s   ø€ ÷ %
ñ %
 Tñ %
r   c                óž  € V P                   P                  R\        \        ^4       . pV P                  P                  \        \        VP                  4      .4       V P                   P                  R\        \        ^4       \        P                  ! 4       pV P                   P                  R\        \        ^VR7       V P                  V P                   P                  R\        \        ^RR3R\        \        ^VR3.4       \        V V\        R\        P                  R,           \        P                   ,           \        ^R7      .4       R# )zj
L{LogBeginner.beginLoggingTo} will redirect the warnings of its
warnings module into the logging system.
z	a messagezanother messagezyet anotherrË   NÚ.)r¶   rQ   rR   rS   )re   r[   ÚDeprecationWarningÚ__file__rf   rz   r	   r   rZ   ra   rb   r.   rK   r1   ry   r=   r<   )rL   r‘   Úfs   &  r   Útest_warningsModuleÚ$LogBeginnerTests.test_warningsModule/  s"  € ð
 	×Ñ×'Ñ'¨Ô5GÌÐSTÔUØ!#ˆØ�‰×$Ñ$¤d¬<¸¿¹Ó&GÐ%HÔIØ×Ñ×'Ñ'ØÔ1´8¸Qô	
ô �KŠK‹MˆØ×Ñ×'Ñ'ØÔ-¬x¸Àð 	(ô 	
ð 	×ÑØ×Ñ×(Ñ(àÔ0´(¸A¸tÀTÐJØÔ 2´H¸aÀÀDÐIðô	
ô 	ØØäØ-ä*×5Ñ5Øõä,×5Ñ5õ6ô &Øô	ðö	
r   c                ó   <€ V ^8„  d   QhRR/# r5   r6   )r   r7   s   "€r   r   r8   V  s   ø€ ÷ 
(ñ 
(¨tñ 
(r   c                ó   € \        \        R4      4      p\        V P                  R7      pVP	                  RVR7       V P
                  P                  4       pV P                  RV4       V P                  RV4       V P                  RV4       R# )zB
The string resulting from a logged failure contains a traceback.
z,this is not the behavior you are looking forr¼   z	a failure)ÚfailureÚ	TracebackN)r
   Ú	Exceptionr   r`   rî   rc   r®   r¯   )rL   ré   rÁ   Úmsgs   &   r   Útest_failuresAppendTracebacksÚ.LogBeginnerTests.test_failuresAppendTracebacksV  sq   € ô ”IÐLÓMÓNˆÜ˜dŸn™nÔ-ˆØ�‰�K¨ˆÔ+Ø×Ñ×'Ñ'Ó)ˆØ�‰�k 3Ô'Ø�‰ÐDÀcÔJØ�‰�k 3Ö'r   )rf   rc   r­   r`   rd   re   N)r<   r=   r>   r?   Ú__doc__rg   r~   r…   r’   r—   rœ   r¸   rÂ   rÇ   rÏ   r×   râ   rê   rò   rC   r]   r^   s   @r   r3   r3   5   sŸ   ø‡ € ñ÷/
ð /
÷b+ð +÷$+ð +÷&
ð 
÷*4ð 4÷/ð /÷)Bð )B÷VNð N÷:ð :÷
ð 
÷$	5ð 	5÷Tð T÷0%
ð %
÷N
(ö 
(r   r3   )"rô   ra   Útypingr   r   r   r   r   r   r   r	   Útwisted.python.failurer
   Útwisted.trialr   Ú_filer   Ú_globalr   r   Ú_interfacesr   r   Ú_levelsr   Ú_loggerr   Ú	_observerr   Útest.test_stdlibr   r1   r   r3   r6   r   r   Ú<module>rÿ      sL   ðñó 
ß E× EÓ Eå *Ý "Ý 'ß 9ß 0Ý Ý Ý $Ý 'õ7ô>k(�x×(Ñ(ö k(r   