ó
    Á›‘h¶D  ã                   óZ  • S SK r S SK Jr  S SK Jr   S SKJr  S SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKJr  S SKJrJrJr  S S	KJr  S S
KJr  S SKJr  S SKJr  \" 5       rSS jr\R:                  \R<                  srr \
RB                  " 5       r"Sq#Sq$0 r%S r& " S S\5      r'S S jr(S r) " S S\5      r* " S S\RV                  \,5      r-S r.\ S4S jr/S r0S r1\," 5       r2 " S S\,5      r3\3" \5      r4\4Rj                  r5\4Rl                  r6\4Rn                  r7\4Rp                  r8\4Rr                  r9\4Rt                  r:\4Rv                  r;\4Rx                  r<\4Rz                  r=\4R|                  r>\4R~                  r?\4R€                  r@\4R‚                  rA\4R„                  rB\4R†                  rC\4Rˆ                  rD\4RŠ                  rE\4RŒ                  rF\4RŽ                  rG\4R�                  rH\4Rn                  r7\R’                  rI\R”                  rJg! \ a     " S S5      r GNf = f)!é    N)Úiscoroutine)ÚFuture)ÚAsyncGeneratorTypec                   ó   • \ rS rSrSrg)r   é#   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚMC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\txaio/aio.pyr   r   #   s   † Úr   r   )Údatetime)ÚIFailedFutureÚILoggerÚ
log_levels)Úguess_stream_needs_encoding)Ú_BatchedTimer)Ú_util)Ú_Configc                 ó>   • [        5       nU b  Xl        [        U5      $ )aõ  
:return: an instance of the txaio API with the given
    configuration. This won't affect anything using the 'gloabl'
    config nor other instances created using this function.

If you need to customize txaio configuration separately (e.g. to
use multiple event-loops in asyncio), you can take code like this:

    import txaio


    class FunTimes(object):

        def something_async(self):
            return txaio.call_later(1, lambda: 'some result')

and instead do this:

    import txaio


    class FunTimes(object):
        txaio = txaio

        def something_async(self):
            # this will run in the local/new event loop created in the constructor
            return self.txaio.call_later(1, lambda: 'some result')

    fun0 = FunTimes()
    fun1 = FunTimes()
    fun1.txaio = txaio.with_config(loop=asyncio.new_event_loop())

So `fun1` will run its futures on the newly-created event loop,
while `fun0` will work just as it did before this `with_config`
method was introduced (after 2.6.2).
)r   ÚloopÚ_AsyncioApi)r   Úcfgs     r   Úwith_configr   =   s"   € ôJ ‹)€CØÑØŒÜ�sÓÐr   ÚinfoFc                 ó.   • [         R                  U 5        g ©N)Ú_categoriesÚupdate)Ú
categoriess    r   Úadd_log_categoriesr#   r   s   € Ü×Ñ�zÕ"r   c                   ó4   • \ rS rSrSrS r\S 5       rS rSr	g)ÚFailedFutureév   a'  
This provides an object with any features from Twisted's Failure
that we might need in Autobahn classes that use FutureMixin.

We need to encapsulate information from exceptions so that
errbacks still have access to the traceback (in case they want to
print it out) outside of "except" blocks.
c                 ó(   • Xl         X l        X0l        g)z«
These are the same parameters as returned from ``sys.exc_info()``

:param type_: exception type
:param value: the Exception instance
:param traceback: a traceback object
N)Ú_typeÚ_valueÚ
_traceback)ÚselfÚtype_ÚvalueÚ	tracebacks       r   Ú__init__ÚFailedFuture.__init__€   s   € ð Œ
ØŒØ#�r   c                 ó   • U R                   $ r   )r)   ©r+   s    r   r-   ÚFailedFuture.valueŒ   s   € à�{‰{Ðr   c                 ó,   • [        U R                  5      $ r   )Ústrr-   r2   s    r   Ú__str__ÚFailedFuture.__str__�   s   € Ü�4—:‘:‹Ðr   )r*   r(   r)   N)
r	   r
   r   r   Ú__doc__r/   Úpropertyr-   r6   r   r   r   r   r%   r%   v   s%   † ñò
$ð ñó ðõr   r%   c                 ó  • SU;   a%  US   [         ;   a  [         R                  US   5      n[        R                  " 5       US'   XS'   X#S'   US:X  a  SnSUS'   UR                  " S	0 UD6n[	        U R
                  U5      " U5        g )
NÚlog_categoryÚlog_timeÚ	log_levelÚ
log_formatÚtraceÚdebugTÚtxaio_tracer   )r    ÚgetÚtimeÚformatÚgetattrÚ_logger)ÚloggerÚlevelrD   ÚkwargsÚmsgs        r   Ú_logrK   —   sˆ   € ð ˜Ó F¨>Ñ$:¼kÓ$IÜ—‘ ¨Ñ!7Ó8ˆäŸš›€Fˆ:ÑØˆ;ÑØ!ˆ<Ñð �ÓØˆØ $ˆˆ}Ñà
�-Š-Ñ
!˜&Ñ
!€CÜˆF�N‰N˜EÔ" 3Õ'r   c                  ó   • g r   r   )ÚargsÚkws     r   Ú_no_oprO   «   s   € Ør   c                   ó&   • \ rS rSrS rS rS rSrg)Ú_TxaioLogWrapperé¯   c                 ó:   • Xl         U R                  [        5        g r   )rF   Ú_set_log_levelÚ
_log_level)r+   rG   s     r   r/   Ú_TxaioLogWrapper.__init__°   s   € ØŒØ×ÑœJÕ'r   c                 ó(   • [        X5      nU" U0 UD6$ r   )rE   )r+   rH   rM   rI   Úfuncs        r   ÚemitÚ_TxaioLogWrapper.emit´   s   € Ü�tÓ#ˆÙ�TÐ$˜VÑ$Ð$r   c                 óÒ   • [         R                  " U5      n[        [         5       H8  u  p4X2::  a  [        R                  " [
        X5      nO[        n[        XU5        M:     Xl        g r   )	r   ÚindexÚ	enumerateÚ	functoolsÚpartialrK   rO   ÚsetattrrU   )r+   rH   Útarget_levelÚidxÚnameÚ
log_methods         r   rT   Ú_TxaioLogWrapper._set_log_level¸   sS   € Ü!×'Ò'¨Ó.ˆô #¤:Ö.‰IˆCØÓ"Ü&×.Ò.¬t°TÓ@‘
ä#�
Ü�D 
Ö+ñ /ð  �r   )rU   rF   N)r	   r
   r   r   r/   rY   rT   r   r   r   r   rQ   rQ   ¯   s   † ò(ò%õ
 r   rQ   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú_TxaioFileHandleréÅ   c                 óZ   >• [         [        U ]
  " S0 UD6  Xl        [	        U5      U l        g )Nr   )Úsuperrg   r/   Ú_filer   Ú_encode)r+   ÚfileobjrN   Ú	__class__s      €r   r/   Ú_TxaioFileHandler.__init__Æ   s'   ø€ ÜÔ Ò/Ñ5°"Ò5ØŒ
Ü2°7Ó;ˆ�r   c                 ó:  • [        UR                  [        5      (       aƒ  UR                  R                  SUR                  R                  SS5      5      nUR                  " S
0 UR                  D6n[
        R                  " UR                  R                  SS5      5      nOŒUR                  5       nUR                  [        R                  :X  a>  UR                  (       a-  US-  n[        R                  " UR                  6  H  nX5-   nM	     [
        R                  " UR                  5      nSR	                  UR                  S5      U[         R"                  5      nU R$                  (       a  UR'                  S	5      nU R(                  R+                  U5        g )Nr>   Úlog_messageÚ r<   r   Ú
z
{0} {1}{2}z%Y-%m-%dT%H:%M:%S%zÚutf8r   )Ú
isinstancerM   ÚdictrB   rD   r   ÚfromtimestampÚ
getMessageÚlevelnoÚloggingÚERRORÚexc_infor.   Úformat_exceptionÚcreatedÚstrftimeÚosÚlineseprl   Úencoderk   Úwrite)r+   ÚrecordÚfmtÚmessageÚdtÚlinerJ   s          r   rY   Ú_TxaioFileHandler.emitË   s  € Ü�f—k‘k¤4×(Ñ(Ø—+‘+—/‘/ ,°·±·±ÀÈrÓ0RÓSˆCØ—j’jÑ/ 6§;¡;Ñ/ˆGÜ×'Ò'¨¯©¯©¸
ÀAÓ(FÓG‰Bà×'Ñ'Ó)ˆGØ�~‰~¤§¡Ó.°6·?·?Ø˜4‘�Ü%×6Ò6¸¿¹ÓH�DØ%™n’Gñ Iä×'Ò'¨¯©Ó7ˆBØ×!Ñ!Ø�K‰KÐ-Ó.°¼¿¹ó
ˆð �<�<Ø—*‘*˜VÓ$ˆCØ�
‰
×Ñ˜Õr   )rl   rk   )r	   r
   r   r   r/   rY   r   Ú__classcell__)rn   s   @r   rg   rg   Å   s   ø† õ<÷
ð r   rg   c                  óÒ  • [         R                  " 5       R                  n SU R                  ;   a@  U R                  S   R                  nSR                  UR                  UR                  5      nOEU R                  S   nU R                  R                  S:w  a  US-   U R                  R                  -   n[        [        R                  " US95      n[        R                  U5        U$ )Nr+   z{0}.{1}r	   z<module>Ú.)rc   )ÚinspectÚcurrentframeÚf_backÚf_localsrn   rD   r
   r	   Ú	f_globalsÚf_codeÚco_namerQ   rz   Ú	getLoggerÚ_loggersÚadd)ÚcfÚclsÚ	namespacerG   s       r   Úmake_loggerrš   ß   s´   € ô 
×	Ò	Ó	×	&Ñ	&€BØ�—‘Óà�k‰k˜&Ñ!×+Ñ+ˆØ×$Ñ$ S§^¡^°S·\±\ÓB‰	à—L‘L Ñ,ˆ	Ø�9‰9×Ñ 
Ó*ð " C™¨"¯)©)×*;Ñ*;Ñ;ˆIäœg×/Ò/°YÑ?Ó@€Fô ‡L�L�ÔØ€Mr   c                 óJ  • U[         ;  a.  [        SR                  USR                  [         5      5      5      e[        (       a  gSqUq[        U 5      n[        R                  " 5       R                  U5        S[        l
        [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  S.n[        R                  " 5       R!                  X1   5        ["         H  nUR%                  U5        M     g)z§
Begin logging.

:param out: if provided, a file-like object to log to. By default, this is
            stdout.
:param level: the maximum log-level to emit (a string)
z'Invalid log level '{0}'; valid are: {1}z, NT)ÚcriticalÚerrorÚwarnr   r@   r?   )r   ÚRuntimeErrorrD   ÚjoinÚ_started_loggingrU   rg   rz   r”   Ú
addHandlerÚraiseExceptionsÚCRITICALr{   ÚWARNINGÚINFOÚDEBUGÚsetLevelr•   rT   )ÚoutrH   ÚhandlerÚlevel_to_stdlibrG   s        r   Ústart_loggingr¬   õ   sß   € ð ”JÓÜØ5×<Ñ<Ø�t—y‘y¤Ó,óó
ð 	
÷ ÒØàÐØ€Jä Ó$€GÜ×ÒÓ×"Ñ" 7Ô+ð #„GÔä×$Ñ$Ü—‘Ü—‘Ü—‘Ü—‘Ü—‘ñ€Oô ×ÒÓ× Ñ  Ñ!7Ô8÷ ˆØ×Ñ˜eÖ$ò r   c                 óD   • [          H  nUR                  U 5        M     U qg)z@
Set the global log level on all loggers instantiated by txaio.
N)r•   rT   rU   )rH   rG   s     r   Úset_global_log_levelr®     s#   € ÷ ˆØ×Ñ˜eÖ$ñ ð �Jr   c                  ó   • [         $ r   )rU   r   r   r   Úget_global_log_levelr°   )  s   € ÜÐr   c                   óÄ   • \ rS rSrSrSrS r\S 5       rS r	S r
S r\\\4S	 jrS
 rSS jrS rS rS rSS jrS rSS jrSS jrSS jrSS jrS rSS jrS rSrg)r   i4  FTc                 ó   • Xl         g r   ©Ú_config)r+   Úconfigs     r   r/   Ú_AsyncioApi.__init__8  s   € Ø�r   c                 óŽ   • U R                   R                  (       a  U R                   R                  $ [        R                  " 5       $ r   )r´   r   ÚasyncioÚget_event_loopr2   s    r   Ú_loopÚ_AsyncioApi._loop;  s2   € ð �<‰<××Ø—<‘<×$Ñ$Ð$ô
 ×%Ò%Ó'Ð'r   c                 óÌ   •  SR                  UR                  R                  R                  [	        UR                  5      5      $ ! [
         a    SR                  U5      s $ f = f)zG
:param fail: must be an IFailedFuture
returns a unicode error-message
z{0}: {1}z+Failed to produce failure message for "{0}")rD   r)   rn   r	   r5   Ú	Exception©r+   Úfails     r   Úfailure_messageÚ_AsyncioApi.failure_messageF  s^   € ð
	NØ×$Ñ$Ø—‘×%Ñ%×.Ñ.Ü�D—K‘KÓ óð øô ó 	NØ@×GÑGÈÓMÒMð	Nús   ‚AA ÁA#Á"A#c                 ó   • UR                   $ )zD
:param fail: must be an IFailedFuture
returns a traceback instance
)r*   r¾   s     r   Úfailure_tracebackÚ_AsyncioApi.failure_tracebackS  s   € ð
 �‰Ðr   c                 óú   •  [         R                  " 5       n[        R                  " UR                  UR
                  UR                  US9  UR                  5       $ ! [         a    SR                  U5      s $ f = f)z8
:param fail: must be an IFailedFuture
returns a string
)Úfilez,Failed to format failure traceback for '{0}')
ÚioÚStringIOr.   Úprint_exceptionr(   r-   r*   Úgetvaluer½   rD   )r+   r¿   Úfs      r   Úfailure_format_tracebackÚ$_AsyncioApi.failure_format_tracebackZ  si   € ð

	OÜ—’“ˆAÜ×%Ò%Ø—
‘
Ø—
‘
Ø—‘Øò	ð —:‘:“<ÐøÜó 	OØA×HÑHÈÓNÒNð	Oús   ‚AA ÁA:Á9A:c                 ó  ^• U[         La  U[         La  [        S5      eU R                  R                  5       nU[         La  [	        XA5        OU[         La  [        XB5        T[         La  U4S jnUR                  U5        U$ )Nz"Cannot have both result and error.c                 ól   >•  U R                  5         g ! [        R                   a    T" U 5         g f = fr   )Ú	exceptionr¸   ÚCancelledError)rË   Ú	cancellers    €r   ÚdoneÚ'_AsyncioApi.create_future.<locals>.done}  s-   ø€ ð!Ø—K‘K•MøÜ×-Ñ-ó !Ù˜a–Lð!ús   ƒ ”3²3)Ú_unspecifiedÚ
ValueErrorrº   Úcreate_futureÚresolveÚrejectÚadd_done_callback)r+   Úresultr�   rÒ   rË   rÓ   s      `  r   r×   Ú_AsyncioApi.create_futurek  sv   ø€ ð œÒ%¨%´|Ò*CÜÐAÓBÐBà�J‰J×$Ñ$Ó&ˆØœÒ%Ü�AÕØœ,Ò&Ü�1Ôð œLÒ(õ!ð ×Ñ Ô%àˆr   c                 ó    • U R                  US9$ )N)rÛ   )r×   )r+   rÛ   s     r   Úcreate_future_successÚ!_AsyncioApi.create_future_success‡  s   € Ø×!Ñ!¨Ð!Ð0Ð0r   Nc                 ó<   • U R                  5       n[        X!5        U$ r   )r×   rÙ   )r+   r�   rË   s      r   Úcreate_future_errorÚ_AsyncioApi.create_future_errorŠ  s   € Ø×ÑÓ ˆÜˆqÔØˆr   c                 ód  •  U" U0 UD6n[        U[        5      (       a  U$ [        U5      (       a  U R                  R	                  U5      $ [        U[
        5      (       a#  [        SR                  [        U5      5      5      e[        U5      $ ! [         a    [        [        5       5      s $ f = f)Nz_as_future() received an async generator function; does '{}' use 'yield' when you meant 'await'?)ru   r   r   rº   Úcreate_taskr   rŸ   rD   r5   rÞ   r½   rá   Úcreate_failure)r+   ÚfunrM   rI   Úress        r   Ú	as_futureÚ_AsyncioApi.as_future�  s¤   € ð	2Ù�tÐ&˜vÑ&ˆCô ˜#œv×&Ñ&Ø�
Ü˜S×!Ñ!Ø—z‘z×-Ñ-¨cÓ2Ð2Ü˜CÔ!3×4Ñ4Ü"ð?ß?E¹vÄcÈ#ÃhÓ?Oóð ô
 -¨SÓ1Ð1øô ó 	9Ü&¤~Ó'7Ó8Ò8ð	9ús   ‚B ÂB/Â.B/c                 óF   • [        U5      =(       d    [        U[        5      $ r   )r   ru   r   )r+   Úobjs     r   Ú	is_futureÚ_AsyncioApi.is_future¡  s   € Ü˜3Ó×:¤:¨c´6Ó#:Ð:r   c                 ól   • [         R                  " U/UQ70 UD6nU R                  R                  X5      $ r   )r^   r_   rº   Ú
call_later)r+   Údelayræ   rM   rI   Ú	real_calls         r   rï   Ú_AsyncioApi.call_later¤  s1   € ä×%Ò% cÐ;¨DÒ;°FÑ;ˆ	Ø�z‰z×$Ñ$ UÓ6Ð6r   c                 óB   ^ • U 4S jn[        US-  UUT R                  S9$ )aÖ  
Creates and returns an object implementing
:class:`txaio.IBatchedTimer`.

:param bucket_seconds: the number of seconds in each bucket. That
    is, a value of 5 means that any timeout within a 5 second
    window will be in the same bucket, and get notified at the
    same time. This is only accurate to "milliseconds".

:param chunk_size: when "doing" the callbacks in a particular
    bucket, this controls how many we do at once before yielding to
    the reactor.
c                  ó8   >• T R                   R                  5       $ r   )rº   rC   r2   s   €r   Úget_secondsÚ3_AsyncioApi.make_batched_timer.<locals>.get_seconds¸  s   ø€ Ø—:‘:—?‘?Ó$Ð$r   g     @�@)Úseconds_providerÚdelayed_call_creator)r   rï   )r+   Úbucket_secondsÚ
chunk_sizerõ   s   `   r   Úmake_batched_timerÚ_AsyncioApi.make_batched_timer©  s,   ø€ õ	%ô Ø˜VÑ#ØØ(Ø!%§¡ñ	
ð 	
r   c                 ó"   • UR                  5       $ r   )rÓ   )r+   Úfutures     r   Ú	is_calledÚ_AsyncioApi.is_calledÂ  s   € Ø�{‰{‹}Ðr   c                 ó&   • UR                  U5        g r   )Ú
set_result)r+   rþ   rÛ   s      r   rØ   Ú_AsyncioApi.resolveÅ  s   € Ø×Ñ˜&Õ!r   c                 óî   • Uc  [        5       nOL[        U[        5      (       a  [        [	        U5      US 5      nO [        U[
        5      (       d  [        S5      eUR                  UR                  5        g )Nz-reject requires an IFailedFuture or Exception)	rå   ru   r½   r%   Útyper   rŸ   Úset_exceptionr-   )r+   rþ   r�   s      r   rÙ   Ú_AsyncioApi.rejectÈ  sY   € Ø‰=Ü"Ó$‰EÜ˜œy×)Ñ)Ü ¤ e£¨e°TÓ:‰Eä˜e¤]×3Ñ3Ü"Ð#RÓSÐSØ×Ñ˜UŸ[™[Õ)r   c                 óp   • [         R                  S:¼  a  UR                  U5        g UR                  5         g )N)é   é	   )ÚsysÚversion_infoÚcancel)r+   rþ   rJ   s      r   r  Ú_AsyncioApi.cancelÒ  s%   € Ü×Ñ˜vÓ%Ø�M‰M˜#Õà�M‰M�Or   c                 ór   • U(       a  [        [        U5      US5      $ [        [        R                  " 5       6 $ )zº
This returns an object implementing IFailedFuture.

If exception is None (the default) we MUST be called within an
"except" block (such that sys.exc_info() returns useful
information).
N)r%   r  r  r|   )r+   rÐ   s     r   rå   Ú_AsyncioApi.create_failureØ  s+   € ö Ü¤ Y£°¸DÓAÐAÜœSŸ\š\›^Ð,Ð,r   c                 ó6   ^^• UU4S jnUR                  U5      $ )zE
callback or errback may be None, but at least one must be
non-None.
c                 óº   >•  U R                  5       nT(       a	  T" U5        g g ! [        [        R                  4 a    T(       a  T" [	        5       5         g  g f = fr   )rÛ   r½   r¸   rÑ   rå   )rË   rç   ÚcallbackÚerrbacks     €€r   rÓ   Ú'_AsyncioApi.add_callbacks.<locals>.doneê  sO   ø€ ð.Ø—h‘h“j�ÞÙ˜S•Mð øäœw×5Ñ5Ð6ó .ÞÙœNÓ,Ö-ñ ð.ús   ƒ$ ¤1AÁA)rÚ   )r+   rþ   r  r  rÓ   s     `` r   Úadd_callbacksÚ_AsyncioApi.add_callbacksä  s   ù€ ö	.ð ×'Ñ'¨Ó-Ð-r   c                 ó.   • [         R                  " USU06$ )zÝ
This returns a Future that waits for all the Futures in the list
``futures``

:param futures: a list of Futures (or coroutines?)

:param consume_exceptions: if True, any errors are eaten and
returned in the result list.
Úreturn_exceptions)r¸   Úgather)r+   ÚfuturesÚconsume_exceptionss      r   r  Ú_AsyncioApi.gatherõ  s   € ô  �~Š~˜wÐMÐ:LÑMÐMr   c                 óV   • [         R                  " [         R                  " U5      5      $ )zb
Inline sleep for use in co-routines.

:param delay: Time to sleep in seconds.
:type delay: float
)r¸   Úensure_futureÚsleep)r+   rð   s     r   r   Ú_AsyncioApi.sleep  s   € ô ×$Ò$¤W§]¢]°5Ó%9Ó:Ð:r   r³   r   )éd   )T)r	   r
   r   r   Úusing_twistedÚusing_asyncior/   r9   rº   rÀ   rÃ   rÌ   rÕ   r×   rÞ   rá   rè   rì   rï   rû   rÿ   rØ   rÙ   r  rå   r  r  r   r   r   r   r   r   r   4  s‹   † Ø€MØ€Mòð ñ(ó ð(òNòòOð$ "¨Àôò81ôò
2ò$;ò7ô

ò2ô"ô*ôô
-ò.ô"Nõ$;r   r   r   )rr   )Kr¸   r   r   Útypesr   ÚImportErrorrÇ   r€   r  rC   Úweakrefr^   r.   rz   r�   r   Útxaio.interfacesr   r   r   Útxaio._iotyper   Útxaio._commonr   Útxaior   r   rµ   r   ÚstderrÚstdoutÚ_stderrÚ_stdoutÚWeakSetr•   rU   r¡   r    r#   r%   rK   rO   rQ   ÚHandlerÚobjectrg   rš   r¬   r®   r°   rÕ   r   Ú_default_apir#  r$  r   rÀ   rÃ   rÌ   r×   rÞ   rá   rè   rì   rï   rû   rÿ   rØ   rÙ   r  rå   r  r  Útime_nsÚperf_counter_nsr   r   r   Ú<module>r6     s(  ðó6 Ý Ý ðÝ(ó 
Û 	Û 
Û Û Û Û Û Û å ç ?Ñ ?Ý 5Ý 'Ý Ý ñ 
‹€ô(ðX —:‘:˜sŸz™zÐ €ˆà‡O‚OÓð 	ð €
ØÐ Ø€ò#ô�=ô ôB(ò(	ô �wô  ô,˜Ÿ™¨ô ò4ð,  Vô '%òTòñ ‹x€ôZ;�&ô Z;ñz ˜6Ó"€ð ×*Ñ*€Ø×*Ñ*€Ø×Ñ€Ø×.Ñ.€Ø ×2Ñ2Ð Ø'×@Ñ@Ð Ø×*Ñ*€Ø$×:Ñ:Ð Ø"×6Ñ6Ð Ø×"Ñ"€	Ø×"Ñ"€	Ø×$Ñ$€
Ø!×4Ñ4Ð Ø×"Ñ"€	Ø
×
Ñ
€Ø	×	Ñ	€Ø	×	Ñ	€Ø×,Ñ,€Ø×*Ñ*€Ø	×	Ñ	€Ø×Ñ€Ø
�-‰-€Ø×'Ñ'�øðS ó ÷ô ðús   ’H ÈH*È)H*