ó
    áÅŸg†<  ã                   ó~  • S 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
  SSKJr  \R                  S:¼  a  SSKJr  OSSKJr  SSKJr  SS	KJr  SS
KJr  \" S5      r\" S5      r\" S5      r\R4                  " SS9 " S S5      5       r\S\S\4S j5       rS\S\SS4S jrS\S\ \\4   4S jr!S\S\S\4S jr"S\S\ \\#\   4   4S jr$S\%S\4S jr&S\S\S\4S jr'S\S\ \\#\   4   4S  jr(S\S\ \\#\   4   4S! jr)S\S"\#\   S\4S# jr*S\S\4S$ jr+S%\RX                  S\\RZ                     4S& jr.S'\#\RX                     S\#\   4S( jr/\R4                  " SS9 " S) S*5      5       r0 " S+ S,\Rb                  5      r2\R4                  " SS9 " S- S.5      5       r3 " S/ S0\Rb                  5      r4g)1z)Functions to process IPython magics with.é    N)Ú	lru_cache)Ú	find_spec)ÚOptional)é   é
   )Ú	TypeGuard)ÚMode)Úout)ÚNothingChanged)zget_ipython().run_cell_magiczget_ipython().systemzget_ipython().getoutputzget_ipython().run_line_magic)Ú	ENDMARKERÚNLÚNEWLINEÚCOMMENTÚDEDENTÚUNIMPORTANT_WSÚ
ESCAPED_NL)ÚcaptureÚprunÚpypyÚpythonÚpython3ÚtimeÚtimeitT)Úfrozenc                   ó*   • \ rS rSr% \\S'   \\S'   Srg)ÚReplacementé0   ÚmaskÚsrc© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚstrÚ__annotations__Ú__static_attributes__r    ó    ÚZ/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/black/handle_ipynb_magics.pyr   r   0   s   ‡ à
ƒIØ	†Hr(   r   ÚwarnÚreturnc                 ó~   • [        S5      S L=(       a    [        S5      S LnU(       d  U (       a  Sn[        U5        U$ )NÚtokenize_rtÚIPythonz}Skipping .ipynb files as Jupyter dependencies are not installed.
You can fix this by running ``pip install "black[jupyter]"``)r   r
   )r*   Ú	installedÚmsgs      r)   Ú"jupyter_dependencies_are_installedr1   6   sF   € ô 	�-Ó ¨Ð,×Q´¸9Ó1EÈTÐ1Qð ö žðKð 	ô 	ˆCŒØÐr(   r   Úmodec                 óò   ^ • [        U 4S j[         5       5      (       a  [        e[        T 5      nUR	                  S5      (       a1  UR                  SS9S   SS [        UR                  -  ;  a  [        egg)aé  Check that cell does not already contain TransformerManager transformations,
    or non-Python cell magics, which might cause tokenizer_rt to break because of
    indentations.

    If a cell contains ``!ls``, then it'll be transformed to
    ``get_ipython().system('ls')``. However, if the cell originally contained
    ``get_ipython().system('ls')``, then it would get transformed in the same way:

        >>> TransformerManager().transform_cell("get_ipython().system('ls')")
        "get_ipython().system('ls')
"
        >>> TransformerManager().transform_cell("!ls")
        "get_ipython().system('ls')
"

    Due to the impossibility of safely roundtripping in such situations, cells
    containing transformed magics will be ignored.
    c              3   ó*   >#   • U H	  oT;   v •  M     g 7f©Nr    )Ú.0Útransformed_magicr   s     €r)   Ú	<genexpr>Ú validate_cell.<locals>.<genexpr>U   s   øé € Ð
PÑ=OÐ(9 Ö#Ò=Oùs   ƒú%%é   )Úmaxsplitr   é   N)ÚanyÚTRANSFORMED_MAGICSr   Ú_get_code_startÚ
startswithÚsplitÚPYTHON_CELL_MAGICSÚpython_cell_magics)r   r2   Úlines   `  r)   Úvalidate_cellrF   D   su   ø€ ô" Ô
PÕ=OÓ
P×PÑPÜÐä˜3Ó€DØ‡��t×ÑØ�
‰
˜Aˆ
Ð˜qÑ! ! "Ð%Ü! D×$;Ñ$;Ñ;ó	<ô Ðð	<ð r(   c                 óê   • SSK JnJnJn  U" U 5      nSnU" U5       H?  u  pgUR                  [
        ;   a  M  UR                  S:X  a  UR                  S:X  a  XF	 Sn  O   U(       d  U S4$ U" U5      S4$ )a\  Remove trailing semicolon from Jupyter notebook cell.

For example,

    fig, ax = plt.subplots()
    ax.plot(x_data, y_data);  # plot data

would become

    fig, ax = plt.subplots()
    ax.plot(x_data, y_data)  # plot data

Mirrors the logic in `quiet` from `IPython.core.displayhook`, but uses
``tokenize_rt`` so that round-tripping works fine.
r   ©Úreversed_enumerateÚsrc_to_tokensÚtokens_to_srcFÚOPÚ;T)r-   rI   rJ   rK   ÚnameÚTOKENS_TO_IGNOREr   )r   rI   rJ   rK   ÚtokensÚtrailing_semicolonÚidxÚtokens           r)   Úremove_trailing_semicolonrT   `   s€   € ÷  MÑLá˜3Ó€FØÐÙ(¨Ö0‰
ˆØ�:‰:Ô)Ó)ÙØ�:‰:˜Ó %§)¡)¨sÓ"2Ø�Ø!%ÐÙñ 1ö Ø�EˆzÐÙ˜Ó  $Ð&Ð&r(   Úhas_trailing_semicolonc                 óü   • U(       d  U $ SSK JnJnJn  U" U 5      nU" U5       H9  u  pgUR                  [
        ;   a  M  UR                  UR                  S-   S9XV'     O   [        S5      Se[        U" U5      5      $ )z²Put trailing semicolon back if cell originally had it.

Mirrors the logic in `quiet` from `IPython.core.displayhook`, but uses
``tokenize_rt`` so that round-tripping works fine.
r   rH   rM   )r   z{INTERNAL ERROR: Was not able to reinstate trailing semicolon. Please report a bug on https://github.com/psf/black/issues.  N)
r-   rI   rJ   rK   rN   rO   Ú_replacer   ÚAssertionErrorr%   )r   rU   rI   rJ   rK   rP   rR   rS   s           r)   Úput_trailing_semicolon_backrY   €   s†   € ö "Øˆ
ßLÑLá˜3Ó€FÙ(¨Ö0‰
ˆØ�:‰:Ô)Ó)ÙØ—n‘n¨¯©°S©�nÐ9ˆ‰Ùñ	 1ô ðLó
ð ð	ô ‰}˜VÓ$Ó%Ð%r(   c                 ó®  • / n [         R                  " U 5        X4$ ! [         a     Of = fSSKJn  U" 5       nUR                  U 5      n[        U5      u  pEX-  nUR                  U5      n[        U5      u  pF[        UR                  5       R                  5       5      [        U R                  5       R                  5       5      :w  a  [        eX-  nXA4$ )zÚMask IPython magics so content becomes parseable Python code.

For example,

    %matplotlib inline
    'foo'

becomes

    b"25716f358c32750"
    'foo'

The replacements are returned, along with the transformed code.
r   )ÚTransformerManager)ÚastÚparseÚSyntaxErrorÚIPython.core.inputtransformer2r[   Útransform_cellÚreplace_cell_magicsÚreplace_magicsÚlenÚstripÚ
splitlinesr   )r   Úreplacementsr[   Útransformer_managerÚtransformedÚcell_magic_replacementsÚmagic_replacementss          r)   Ú	mask_cellrk   ˜   sÕ   € ð ')€Lð!Ü�	Š	�#Œð Ð Ð øô ó áðúõ Bá,Ó.Ðð &×4Ñ4°SÓ9€KÜ+>¸{Ó+KÑ(€KØÑ+€LØ%×4Ñ4°[ÓA€KÜ&4°[Ó&AÑ#€KÜ
ˆ;×ÑÓ×)Ñ)Ó+Ó,´°C·I±I³K×4JÑ4JÓ4LÓ0MÓMäÐØÑ&€LØÐ$Ð$s   „ �
*©*Ún_charsc                 óœ   • U S:”  d   e[        U S-  S-
  S5      n[        R                  " U5      n[        U5      S-   U :”  a  USS nSU S3$ )	zBCreate a randomly generated token that is n_chars characters long.r   r=   r;   r   Néÿÿÿÿzb"Ú")ÚmaxÚsecretsÚ	token_hexrc   )rl   Ún_bytesrS   s      r)   Úcreate_tokenrt   Â   s^   € à�Q‹;Ðˆ;Ü�'˜Q‘, Ñ" AÓ&€GÜ×Ò˜gÓ&€EÜ
ˆ5ƒz�A�~˜ÓØ�c�r�
ˆð �ˆw�aˆ=Ðr(   Úmagicc                 óª   • U(       d   e[        U5      n[        U5      nSnX0;   a,  [        U5      nUS-  nUS:”  a  [        SU 35      SeX0;   a  M,  U$ )a0  Return randomly generated token to mask IPython magic with.

For example, if 'magic' was `%matplotlib inline`, then a possible
token to mask it with would be `"43fdd17f7e5ddc83"`. The token
will be the same length as the magic, and we make sure that it was
not already present anywhere else in the cell.
r   r;   éd   z–INTERNAL ERROR: Black was not able to replace IPython magic. Please report a bug on https://github.com/psf/black/issues.  The magic might be helpful: N)rc   rt   rX   )r   ru   rl   rS   Úcounters        r)   Ú	get_tokenry   Î   sq   € ö €Lˆ5Ü�%‹j€GÜ˜Ó!€EØ€GØ
‹,Ü˜WÓ%ˆØ�1‰ˆØ�S‹=Ü ð/à/4¨gð7óð ð	ð	 �,ð €Lr(   c                 ó4  • / n[         R                  " U 5      n[        5       nUR                  U5        UR                  c  X4$ UR                  R
                  n[        X5      nUR                  [        XTS95        U SUR                  R                   3U4$ )a*  Replace cell magic with token.

Note that 'src' will already have been processed by IPython's
TransformerManager().transform_cell.

Example,

    get_ipython().run_cell_magic('t', '-n1', 'ls =!ls\n')

becomes

    "a794."
    ls =!ls

The replacement, along with the transformed code, is returned.
©r   r   Ú
)
r\   r]   ÚCellMagicFinderÚvisitÚ
cell_magicÚheaderry   Úappendr   Úbody)r   rf   ÚtreeÚcell_magic_finderr€   r   s         r)   ra   ra   æ   s”   € ð" ')€Lä�9Š9�S‹>€Dä'Ó)ÐØ×Ñ˜DÔ!Ø×#Ñ#Ñ+ØÐ Ð Ø×)Ñ)×0Ñ0€FÜ�SÓ!€DØ×Ñœ¨Ñ:Ô;ØˆV�2Ð'×2Ñ2×7Ñ7Ð8Ð9¸<ÐGÐGr(   c                 óü  • / n[        5       nUR                  [        R                  " U 5      5        / n[	        U R                  S5      SS9 Hš  u  pEXBR                  ;   au  UR                  U   n[        U5      S:w  a  [        SU S35      eUS   R                  US   R                  p‡[        X5      n	UR                  [        X˜S95        USU U	-   nUR                  U5        Mœ     SR                  U5      U4$ )	aG  Replace magics within body of cell.

Note that 'src' will already have been processed by IPython's
TransformerManager().transform_cell.

Example, this

    get_ipython().run_line_magic('matplotlib', 'inline')
    'foo'

becomes

    "5e67db56d490fd39"
    'foo'

The replacement, along with the transformed code, are returned.
r|   r;   )Ústartz#Expecting one magic per line, got: z<
Please report a bug on https://github.com/psf/black/issues.r   r{   N)ÚMagicFinderr~   r\   r]   Ú	enumeraterB   Úmagicsrc   rX   Ú
col_offsetru   ry   r�   r   Újoin)
r   rf   Úmagic_finderÚnew_srcsÚirE   Úoffsets_and_magicsrŠ   ru   r   s
             r)   rb   rb     s	  € ð$ €LÜ“=€LØ×Ñ”s—y’y “~Ô&Ø€HÜ˜SŸY™Y t›_°AÔ6‰ˆØ×#Ñ#Ó#Ø!-×!4Ñ!4°QÑ!7ÐÜÐ%Ó&¨!Ó+Ü$Ø9Ð:LÐ9Mð NRð Róð ð
 # 1Ñ%×0Ñ0Ø" 1Ñ%×+Ñ+ð ô ˜SÓ(ˆDØ×Ñ¤°Ñ AÔBØ˜˜Ð$ tÑ+ˆDØ�‰˜Öñ 7ð  �9‰9�XÓ Ð,Ð,r(   rf   c                 ód   • U H)  nU R                  UR                  UR                  5      n M+     U $ )ziRemove replacements from cell.

For example

    "9b20"
    foo = bar

becomes

    %%time
    foo = bar
)Úreplacer   r   )r   rf   Úreplacements      r)   Úunmask_cellr“   .  s-   € ó $ˆØ�k‰k˜+×*Ñ*¨K¯O©OÓ<Šñ $à€Jr(   c                 óÄ   • [         R                  " SU 5       HE  nUR                  S5      R                  5       nU(       d  M+  UR	                  S5      (       a  MC  Us  $    g)a  Provides the first line where the code starts.

Iterates over lines of code until it finds the first line that doesn't
contain only empty spaces and comments. It removes any empty spaces at the
start of the line and returns it. If such line doesn't exist, it returns an
empty string.
z.+r   Ú#Ú )ÚreÚfinditerÚgroupÚlstriprA   )r   ÚmatchrE   s      r)   r@   r@   @  sL   € ô —’˜T 3Ö'ˆØ�{‰{˜1‹~×$Ñ$Ó&ˆßˆ4˜Ÿ™¨×,Ó,ØŠKñ (ð r(   Únodec                 óJ  • [        U [        R                  5      =(       aƒ    [        U R                  [        R                  5      =(       aX    [        U R                  R
                  [        R                  5      =(       a#    U R                  R
                  R                  S:H  $ )zªCheck if attribute is IPython magic.

Note that the source of the abstract syntax tree
will already have been processed by IPython's
TransformerManager().transform_cell.
Úget_ipython)Ú
isinstancer\   Ú	AttributeÚvalueÚCallÚfuncÚNameÚid)rœ   s    r)   Ú_is_ipython_magicr¦   O  sf   € ô 	�4œŸ™Ó'÷ 	0Ü�t—z‘z¤3§8¡8Ó,÷	0ä�t—z‘z—‘¬¯©Ó1÷	0ð �J‰J�O‰O×Ñ -Ñ/ð	r(   Úargsc                 óÒ   • / nU  H^  n[        U[        R                  5      (       a  [        UR                  [        5      (       d   eUR                  UR                  5        M`     U$ r5   )rŸ   r\   ÚConstantr¡   r%   r�   )r§   Ústr_argsÚargs      r)   Ú_get_str_argsr¬   ^  sO   € Ø€HÛˆÜ˜#œsŸ|™|×,Ñ,´¸C¿I¹IÄs×1KÑ1KÐKÐKØ�‰˜Ÿ	™	Ö"ñ ð €Or(   c                   óR   • \ rS rSr% \\S'   \\   \S'   \\S'   \S\4S j5       rSr	g)	Ú	CellMagicif  rN   Úparamsr‚   r+   c                 óz   • U R                   (       a  SU R                   SU R                    3$ SU R                   3$ )Nr:   Ú )r¯   rN   ©Úselfs    r)   r€   ÚCellMagic.headerl  s5   € à�;�;Ø˜Ÿ	™	�{ ! D§K¡K =Ð1Ð1Ø�D—I‘I�;ÐÐr(   r    N)
r!   r"   r#   r$   r%   r&   r   Úpropertyr€   r'   r    r(   r)   r®   r®   f  s/   ‡ à
ƒIØ�S‰MÓØ
ƒIàð ˜ó  ó ó r(   r®   c                   óZ   • \ rS rSrSrS
S\\   SS4S jjrS\R                  SS4S jr
S	rg)r}   it  a?  Find cell magics.

Note that the source of the abstract syntax tree
will already have been processed by IPython's
TransformerManager().transform_cell.

For example,

    %%time

    foo()

would have been transformed to

    get_ipython().run_cell_magic('time', '', 'foo()\n')

and we look for instances of the latter.
Nr   r+   c                 ó   • Xl         g r5   ©r   )r³   r   s     r)   Ú__init__ÚCellMagicFinder.__init__‡  s   € Ø$�r(   rœ   c                 óx  • [        UR                  [        R                  5      (       a€  [	        UR                  R
                  5      (       a\  UR                  R
                  R                  S:X  a8  [        UR                  R                  5      n[        US   US   US   S9U l
        U R                  U5        g)z)Find cell magic, extract header and body.Úrun_cell_magicr   r;   r=   )rN   r¯   r‚   N)rŸ   r¡   r\   r¢   r¦   r£   Úattrr¬   r§   r®   r   Úgeneric_visit)r³   rœ   r§   s      r)   Ú
visit_ExprÚCellMagicFinder.visit_ExprŠ  s€   € ô �t—z‘z¤3§8¡8×,Ñ,Ü! $§*¡*§/¡/×2Ñ2Ø—
‘
—‘×$Ñ$Ð(8Ó8ä  §¡§¡Ó1ˆDÜ'¨T°!©W¸TÀ!¹WÈ4ÐPQÉ7ÑSˆDŒOØ×Ñ˜4Õ r(   r¸   r5   )r!   r"   r#   r$   Ú__doc__r   r®   r¹   r\   ÚExprr¿   r'   r    r(   r)   r}   r}   t  s6   † ññ$% 8¨IÑ#6ð %À$õ %ð	!˜sŸx™xð 	!¨D÷ 	!r(   r}   c                   ó*   • \ rS rSr% \\S'   \\S'   Srg)ÚOffsetAndMagici–  rŠ   ru   r    N)r!   r"   r#   r$   Úintr&   r%   r'   r    r(   r)   rÄ   rÄ   –  s   ‡ àƒOØ†Jr(   rÄ   c                   ón   • \ rS rSrSrS
S jrS\R                  SS4S jrS\R                  SS4S jr
S	rg)r‡   iž  a‚  Visit cell to look for get_ipython calls.

Note that the source of the abstract syntax tree
will already have been processed by IPython's
TransformerManager().transform_cell.

For example,

    %matplotlib inline

would have been transformed to

    get_ipython().run_line_magic('matplotlib', 'inline')

and we look for instances of the latter (and likewise for other
types of magics).
r+   Nc                 óB   • [         R                  " [        5      U l        g r5   )ÚcollectionsÚdefaultdictÚlistr‰   r²   s    r)   r¹   ÚMagicFinder.__init__±  s   € Ü7B×7NÒ7NÌtÓ7Tˆ�r(   rœ   c                 óÞ  • [        UR                  [        R                  5      (       Ga2  [	        UR                  R
                  5      (       Ga  [        UR                  R                  5      nUR                  R
                  R                  S:X  a	  SUS    3nOqUR                  R
                  R                  S:X  a  SUS    3nUS   (       a  USUS    3-  nO/[        SUR                  R
                  R                  < S	35      S
eU R                  UR                  R                     R                  [        UR                  R                  U5      5        U R                  U5        g
)a;  Look for system assign magics.

For example,

    black_version = !black --version
    env = %env var

would have been (respectively) transformed to

    black_version = get_ipython().getoutput('black --version')
    env = get_ipython().run_line_magic('env', 'var')

and we look for instances of any of the latter.
Ú	getoutputÚ!r   Úrun_line_magicÚ%r;   r±   zUnexpected IPython magic zC found. Please report a bug on https://github.com/psf/black/issues.N)rŸ   r¡   r\   r¢   r¦   r£   r¬   r§   r½   rX   r‰   Úlinenor�   rÄ   rŠ   r¾   ©r³   rœ   r§   r   s       r)   Úvisit_AssignÚMagicFinder.visit_Assign´  s!  € ô �d—j‘j¤#§(¡(×+Ò+Ô0AÀ$Ç*Á*Ç/Á/×0RÒ0RÜ  §¡§¡Ó1ˆDØ�z‰z�‰×#Ñ# {Ó2Ø˜$˜q™'˜�m‘Ø—‘—‘×%Ñ%Ð)9Ó9Ø˜$˜q™'˜�m�Ø˜—7Ø˜Q˜t A™w˜i˜=Ñ(�Cøä$Ø/°·
±
·±×0DÑ0DÑ/Gð HRð Róð ðð �K‰K˜Ÿ
™
×)Ñ)Ñ*×1Ñ1Ü˜tŸz™z×4Ñ4°cÓ:ôð 	×Ñ˜4Õ r(   c                 ó.  • [        UR                  [        R                  5      (       GaZ  [	        UR                  R
                  5      (       Ga5  [        UR                  R                  5      nUR                  R
                  R                  S:X  aB  US   S:X  a	  SUS    3nO�US   S:X  a	  SUS    3nO~SUS    3nUS   (       a  US	US    3-  nO`UR                  R
                  R                  S
:X  a	  SUS    3nO3UR                  R
                  R                  S:X  a	  SUS    3nO[        eU R                  UR                  R                     R                  [        UR                  R                  U5      5        U R                  U5        g)aP  Look for magics in body of cell.

For examples,

    !ls
    !!ls
    ?ls
    ??ls

would (respectively) get transformed to

    get_ipython().system('ls')
    get_ipython().getoutput('ls')
    get_ipython().run_line_magic('pinfo', 'ls')
    get_ipython().run_line_magic('pinfo2', 'ls')

and we look for instances of any of the latter.
rÏ   r   ÚpinfoÚ?r;   Úpinfo2z??rÐ   r±   ÚsystemrÎ   rÍ   z!!N)rŸ   r¡   r\   r¢   r¦   r£   r¬   r§   r½   r   r‰   rÑ   r�   rÄ   rŠ   r¾   rÒ   s       r)   r¿   ÚMagicFinder.visit_ExprÕ  sK  € ô& �d—j‘j¤#§(¡(×+Ò+Ô0AÀ$Ç*Á*Ç/Á/×0RÒ0RÜ  §¡§¡Ó1ˆDØ�z‰z�‰×#Ñ#Ð'7Ó7Ø˜‘7˜gÓ%Ø˜d 1™g˜Y˜-‘CØ˜!‘W Ó(Ø˜t A™w˜i˜.‘Cà˜d 1™g˜Y˜-�CØ˜A—wØ  4¨¡7 )˜}Ñ,˜øØ—‘—‘×%Ñ%¨Ó1Ø˜$˜q™'˜�m‘Ø—‘—‘×%Ñ%¨Ó4Ø˜4 ™7˜)�n‘ä$Ð$Ø�K‰K˜Ÿ
™
×)Ñ)Ñ*×1Ñ1Ü˜tŸz™z×4Ñ4°cÓ:ôð 	×Ñ˜4Õ r(   )r‰   )r+   N)r!   r"   r#   r$   rÁ   r¹   r\   ÚAssignrÓ   rÂ   r¿   r'   r    r(   r)   r‡   r‡   ž  s<   † ñô$Uð! §¡ð !°ô !ðB'!˜sŸx™xð '!¨D÷ '!r(   r‡   )5rÁ   r\   rÈ   Údataclassesr—   rq   ÚsysÚ	functoolsr   Úimportlib.utilr   Útypingr   Úversion_infor   Útyping_extensionsÚ
black.moder	   Úblack.outputr
   Úblack.reportr   Ú	frozensetr?   rO   rC   Ú	dataclassr   Úboolr1   r%   rF   ÚtuplerT   rY   rÊ   rk   rÅ   rt   ry   ra   rb   r“   r@   Úexprr    r¦   r¬   r®   ÚNodeVisitorr}   rÄ   r‡   r    r(   r)   Ú<module>rì      s  ðÙ /ã 
Û Û Û 	Û Û 
Ý Ý $Ý à×Ñ�wÓÞ å+å Ý Ý 'áð  ó Ð ñ ð ó Ð ñ ð  ó Ð ð ×Ò˜dÑ#÷ð ó $ðð
 ð
°ð 
¸ó 
ó ð
ð�sð  $ð ¨4ô ð8' 3ð '¨5°°d°Ñ+;ô 'ð@& Sð &À$ð &È3ô &ð0'%�3ð '%˜5  d¨;Ñ&7Ð!7Ñ8ô '%ðT	˜#ð 	 #ô 	ð�3ð ˜sð  sô ð0H˜Sð H U¨3°°[Ñ0AÐ+AÑ%Bô Hð>&-˜ð &-  c¨4°Ñ+<Ð&<Ñ =ô &-ðR�Sð ¨¨[Ñ(9ð ¸cô ð$˜ð  ô ð˜CŸH™Hð ¨°3·=±=Ñ)Aô ð˜˜SŸX™X™ð ¨4°©9ô ð ×Ò˜dÑ#÷	 ð 	 ó $ð	 ô!�c—o‘oô !ðD ×Ò˜dÑ#÷ð ó $ðô^!�#—/‘/õ ^!r(   