§
    xÅj¹8  ã                   óÂ  — U d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZ e	rPd dlmZ d d	lmZmZmZmZmZmZmZmZ d d
lmZ eeef         Zeeeeef         geeef         f         Zeee f         Z!ee"e#e$fZ%dZ&dZ'e e(d<   dZ)e e(d<   dZ*g Z+de(d<   d$d„Z,e-e.e/e0egZ1de(d<   de2ddfd„Z3 G d„ d¦  «        Z4 G d„ d¦  «        Z5d%d#„Z6dS )&é    N)Úarray)ÚMapping)Údatetime)Úislice)ÚTYPE_CHECKING)ÚAnnotatedValueÚcapture_internal_exceptionÚdisable_capture_eventÚformat_timestampÚ	safe_reprÚstrip_string)ÚTracebackType)ÚAnyÚCallableÚContextManagerÚDictÚListÚOptionalÚTypeÚUnion)ÚNotImplementedTypei@B é   ÚMAX_DATABAG_DEPTHé
   ÚMAX_DATABAG_BREADTHz<cyclic>zList[ReprProcessor]Úglobal_repr_processorsÚ	processorÚReprProcessorÚreturnc                 ó:   — t                                | ¦  «         d S ©N)r   Úappend)r   s    úFC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/serializer.pyÚadd_global_repr_processorr$   6   s   € Ý×!Ò! )Ñ,Ô,Ð,Ð,Ð,ó    z
List[type]Úsequence_typesÚtyc                 ó:   — t                                | ¦  «         d S r!   )r&   r"   )r'   s    r#   Úadd_repr_sequence_typer)   =   s   € Ý×Ò˜"ÑÔÐÐÐr%   c                   óF   — e Zd ZdZdd„Zdd„Zdefd	„Z	 	 	 	 	 	 	 	 dd„ZdS )ÚMemo©Ú_idsÚ_objsr   Nc                 ó"   — i | _         g | _        d S r!   r,   ©Úselfs    r#   Ú__init__zMemo.__init__D   s   € Ø&(ˆŒ	Ø"$ˆŒ
ˆ
ˆ
r%   Úobjr   úContextManager[bool]c                 ó:   — | j                              |¦  «         | S r!   )r.   r"   ©r1   r3   s     r#   ÚmemoizezMemo.memoizeH   s   € ØŒ
×Ò˜#ÑÔÐØˆr%   c                 ó~   — | j         d         }t          |¦  «        | j        v rdS || j        t          |¦  «        <   dS )NéÿÿÿÿTF)r.   Úidr-   r6   s     r#   Ú	__enter__zMemo.__enter__L   s<   € ØŒj˜ŒnˆÝˆc‰7Œ7�d”iÐÐØ�4à!$ˆDŒI•b˜‘g”gÑØ�5r%   r'   úOptional[Type[BaseException]]ÚvalueúOptional[BaseException]ÚtbúOptional[TracebackType]c                 ó„   — | j                              t          | j                             ¦   «         ¦  «        d ¦  «         d S r!   )r-   Úpopr:   r.   )r1   r'   r=   r?   s       r#   Ú__exit__zMemo.__exit__T   s4   € ð 	Œ	�Š•b˜œŸšÑ)Ô)Ñ*Ô*¨DÑ1Ô1Ð1Ð1Ð1r%   )r   N)r3   r   r   r4   )r'   r<   r=   r>   r?   r@   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r2   r7   Úboolr;   rC   © r%   r#   r+   r+   A   s–   € € € € € Ø!€Ið%ð %ð %ð %ðð ð ð ð˜4ð ð ð ð ð2à+ð2ð )ð2ð &ð	2ð
 
ð2ð 2ð 2ð 2ð 2ð 2r%   r+   c            
       óÂ   — e Zd ZdZdZdedddeddd	d
f
d„Zddd	efd„Zd"d„Z	d#d„Z
d#d„Zd#d„Z	 	 	 	 	 	 d$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d%d„Zd&d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 d'd!„Zd
S )(Ú_Serializerz-Holds the state of a single serialize() call.)ÚmemoÚpathÚ
meta_stackÚkeep_request_bodiesÚmax_value_lengthÚis_varsÚcustom_reprrO   rP   zOptional[int]rQ   rR   z&Optional[Callable[..., Optional[str]]]r   Nc                 ó€   — t          ¦   «         | _        g | _        g | _        || _        || _        || _        || _        d S r!   )r+   rL   rM   rN   rO   rP   rQ   rR   )r1   rO   rP   rQ   rR   s        r#   r2   z_Serializer.__init__j   sB   € õ ‘F”FˆŒ	Ø%'ˆŒ	Ø24ˆŒØ#6ˆÔ Ø 0ˆÔØˆŒØ&ˆÔÐÐr%   r=   r   c                 ó    — 	 d }| j         �|                       |¦  «        }|pt          |¦  «        S # t          $ r t          |¦  «        cY S w xY wr!   )rR   r   Ú	Exception)r1   r=   Ú
repr_values      r#   Ú_safe_repr_wrapperz_Serializer._safe_repr_wrappery   sj   € ð	$ØˆJØÔÐ+Ø!×-Ò-¨eÑ4Ô4�
ØÐ1¥¨5Ñ!1Ô!1Ð1øÝð 	$ð 	$ð 	$Ý˜UÑ#Ô#Ð#Ð#Ð#ð	$øøøs   ‚.1 ±AÁAÚmetac                 ó  — t          | j        ¦  «        t          | j        ¦  «        k    r¨	 | j        t          | j        ¦  «        dz
           }| j        d                              t	          |¦  «        i ¦  «        }n# t
          $ r i }Y nw xY w| j                             |¦  «         t          | j        ¦  «        t          | j        ¦  «        k    °¨| j        d                              di ¦  «                             |¦  «         d S )Né   r9   Ú )ÚlenrN   rM   Ú
setdefaultÚstrÚ
IndexErrorr"   Úupdate)r1   rX   ÚsegmentÚnodes       r#   Ú	_annotatez_Serializer._annotate‚   sñ   € Ý�$”/Ñ"Ô"¥c¨$¬)¡n¤nÒ4Ð4ðØœ)¥C¨¬Ñ$8Ô$8¸1Ñ$<Ô=�Ø” rÔ*×5Ò5µc¸'±l´lÀBÑGÔG��øÝð ð ð Ø���ðøøøð ŒO×"Ò" 4Ñ(Ô(Ð(õ �$”/Ñ"Ô"¥c¨$¬)¡n¤nÒ4Ð4ð 	Œ˜Ô×&Ò& r¨2Ñ.Ô.×5Ò5°dÑ;Ô;Ð;Ð;Ð;s   ¬AA= Á=BÂBúOptional[bool]c                 óè   — 	 | j         rdS |                      ¦   «         }|dv r|S | j        d         }|dk    r | j        d         dk    r| j        d          dS |dk    rdS n# t          $ r Y d	S w xY wd
S )zØ
        A databag is any value that we need to trim.
        True for stuff like vars, request bodies, breadcrumbs and extra.

        :returns: `True` for "yes", `False` for :"no", `None` for "maybe soon".
        T)TNr   ÚbreadcrumbsrZ   Úvaluesé   ÚextraNF)rQ   Ú_is_request_bodyrM   r_   )r1   Úis_request_bodyÚp0s      r#   Ú_is_databagz_Serializer._is_databagŽ   s¬   € ð	ØŒ|ð Ø�tà"×3Ò3Ñ5Ô5ˆOØ ,Ð.Ð.Ø&Ð&à”˜1”ˆBØ�]Ò"Ð" t¤y°¤|°xÒ'?Ð'?Ø”	˜!”�Ø�tà�WŠ}ˆ}Ø�tð øõ ð 	ð 	ð 	Ø�4�4ð	øøøð ˆus!   ‚A! ‹A! ¥1A! ÁA! Á!
A/Á.A/c                 ót   — 	 | j         d         dk    r| j         d         dk    rdS n# t          $ r Y d S w xY wdS )Nr   Úspansrh   ÚdataTF©rM   r_   r0   s    r#   Ú_is_span_attributez_Serializer._is_span_attributeª   sW   € ð	ØŒy˜Œ|˜wÒ&Ð&¨4¬9°Q¬<¸6Ò+AÐ+AØ�tøøÝð 	ð 	ð 	Ø�4�4ð	øøøð ˆuó   ‚"' §
5´5c                 ót   — 	 | j         d         dk    r| j         d         dk    rdS n# t          $ r Y d S w xY wdS )Nr   ÚrequestrZ   rp   TFrq   r0   s    r#   rj   z_Serializer._is_request_body³   sW   € ð	ØŒy˜Œ|˜yÒ(Ð(¨T¬Y°q¬\¸VÒ-CÐ-CØ�tøøÝð 	ð 	ð 	Ø�4�4ð	øøøð ˆurs   r3   Ú
is_databagrk   Úshould_repr_stringsra   úOptional[Segment]Úremaining_breadthúOptional[Union[int, float]]Úremaining_depthc           	      óF  — |�| j                              |¦  «         	 | j                             |¦  «        5 }|rNt          cd d d ¦  «         |�9| j                              ¦   «          | j        t          | j         ¦  «        dz   d …= S S |                      ||||||¬¦  «        cd d d ¦  «         |�9| j                              ¦   «          | j        t          | j         ¦  «        dz   d …= S S # 1 swxY w Y   n®# t          $ r¡ t          t          j        ¦   «         ¦  «         |r?Y |�:| j                              ¦   «          | j        t          | j         ¦  «        dz   d …= dS dS Y |�:| j                              ¦   «          | j        t          | j         ¦  «        dz   d …= d S d S w xY w	 |�:| j                              ¦   «          | j        t          | j         ¦  «        dz   d …= d S d S # |�8| j                              ¦   «          | j        t          | j         ¦  «        dz   d …= w xY w)NrZ   )rv   rk   rw   r{   ry   z=<failed to serialize, use init(debug=True) to see error logs>)rM   r"   rL   r7   ÚCYCLE_MARKERrB   rN   r\   Ú_serialize_node_implÚBaseExceptionr	   ÚsysÚexc_info)	r1   r3   rv   rk   rw   ra   ry   r{   Úresults	            r#   Ú_serialize_nodez_Serializer._serialize_node¼   s­  € ð ÐØŒI×Ò˜WÑ%Ô%Ð%ð	:Ø”×"Ò" 3Ñ'Ô'ð ¨6Øð (Ý'ðð ð ð ñ ô ð ð( Ð"Ø”	—’‘”�Ø”O¥C¨¬	¡N¤N°QÑ$6Ð$8Ð$8Ð9Ð9ð #ð! ×0Ò0ØØ)Ø$3Ø(;Ø$3Ø&7ð 1ñ ô ð	ð ð ð ñ ô ð ð( Ð"Ø”	—’‘”�Ø”O¥C¨¬	¡N¤N°QÑ$6Ð$8Ð$8Ð9Ð9ð #ð)ð ð ð øøøð ð ð ð ð øõ ð 	ð 	ð 	Ý&¥s¤|¡~¤~Ñ6Ô6Ð6àð WØVð Ð"Ø”	—’‘”�Ø”O¥C¨¬	¡N¤N°QÑ$6Ð$8Ð$8Ð9Ð9Ð9ð #Ð"ð àÐ"Ø”	—’‘”�Ø”O¥C¨¬	¡N¤N°QÑ$6Ð$8Ð$8Ð9Ð9Ð9ð #Ð"ð	øøøðð( Ð"Ø”	—’‘”�Ø”O¥C¨¬	¡N¤N°QÑ$6Ð$8Ð$8Ð9Ð9Ð9ð #Ð"øˆwÐ"Ø”	—’‘”�Ø”O¥C¨¬	¡N¤N°QÑ$6Ð$8Ð$8Ð9Ð9Ð9Ð9Ð9s^   žC7 ¸	C+ÁC7 Â	C+Â#C7 Ã+C/Ã/C7 Ã2C/Ã3C7 Ã6G$ Ã7,F"Ä#G$ Å"G$ Æ!F"Æ"G$ Ç$<H c                 ób   — t          |t          ¦  «        r | j        di |j        ¤Ž |j        }|S )NrI   )Ú
isinstancer   rc   Úmetadatar=   r6   s     r#   Ú_flatten_annotatedz_Serializer._flatten_annotatedâ   s:   € Ý�c�>Ñ*Ô*ð 	ØˆDŒNÐ*Ð*˜Sœ\Ð*Ð*Ð*Ø”)ˆCØˆ
r%   úOptional[Union[float, int]]c                 óú	  — t          |t          ¦  «        rd}|€| j        }|€|                      ¦   «         }|€|                      ¦   «         }|r:|r&| j        rt          d¦  «        }t          d¦  «        }n|€t          }|€t          }|  	                    |¦  «        }|�_|dk    rY|  
                    ddgg¬¦  «         |r<|  	                    t          |                      |¦  «        | j        ¬¦  «        ¦  «        S d S |                      ¦   «         }|s|rGt          r@| j        |dœ}t          D ].}	 |	||¦  «        }
|
t"          ur|  	                    |
¦  «        c S Œ/t%          t'          |¦  «        d	d ¦  «        }|�"t          |t(          t*          t          f¦  «        rV|s=t          |t          ¦  «        r=t-          j        |¦  «        st-          j        |¦  «        r|                      |¦  «        S |S t3          |¦  «        r ||¦  «        S t          |t4          ¦  «        r3|st7          t9          |¦  «        ¦  «        n|                      |¦  «        S t          |t:          ¦  «        rôt=          |¦  «        }t          |t*          ¦  «        r3t?          tA          | !                    ¦   «         |d
z   ¦  «        ¦  «        }n!t?          | !                    ¦   «         ¦  «        }i }d}| !                    ¦   «         D ]a\  }}|�||k    r|  
                    |¬¦  «          n=t7          |¦  «        }|  "                    ||||||�|d
z
  nd |¬¦  «        }|||<   |d
z  }Œb|S t          |tF          ¦  «        sžt          |tI          tJ          ¦  «        ¦  «        r|g }tM          |¦  «        D ]h\  }}|�+||k    r%|  
                    t=          |¦  «        ¬¦  «          n7| '                    |  "                    ||||||�|d
z
  nd |¬¦  «        ¦  «         Œi|S |r|                      |¦  «        }njt          |tP          ¦  «        st          |tR          ¦  «        r| *                    dd¦  «        }t          |t6          ¦  «        s|                      |¦  «        }t=          | j+        ¦  «        dk    o!| j+        d         dk    o| j+        d         dk    }|r|S |  	                    t          || j        ¬¦  «        ¦  «        S )NFÚinfr   z!limitÚx)Úrem)Ú
max_length)rL   r{   Ú__sentry_repr__rZ   )r\   )ra   rw   rv   rk   r{   ry   zutf-8Úreplaceé   ro   r9   Údescription),r…   r   rQ   rm   rj   rO   Úfloatr   r   r‡   rc   r   rW   rP   rr   r   rL   ÚNotImplementedÚgetattrÚtyperH   ÚintÚmathÚisinfÚisnanÚcallabler   r^   r   r   r\   Údictr   Úitemsrƒ   Úserializable_str_typesÚtupler&   Ú	enumerater"   ÚbytesÚ	bytearrayÚdecoderM   )r1   r3   rv   rk   rw   r{   ry   Úis_span_attributeÚhintsr   r‚   Úsentry_reprÚobj_lenÚrv_dictÚiÚkÚvÚstr_kÚrv_listÚis_span_descriptions                       r#   r~   z _Serializer._serialize_node_implè   s™  € õ �c�>Ñ*Ô*ð 	(Ø"'ÐØÐ&Ø"&¤,ÐàÐØ×)Ò)Ñ+Ô+ˆJàÐ"Ø"×3Ò3Ñ5Ô5ˆOàð 	<Øð < 4Ô#;ð <Ý"'¨¡,¤,�Ý$)¨%¡L¤LÐ!Ð!à"Ð*Ý&7�OØ$Ð,Ý(;Ð%à×%Ò% cÑ*Ô*ˆàÐ&¨?¸aÒ+?Ð+?Ø�NŠN ¨3 Ð0ˆNÑ1Ô1Ð1Øð Ø×.Ò.Ý Ø×/Ò/°Ñ4Ô4ÀÔAVðñ ô ñô ð ð
 �4à ×3Ò3Ñ5Ô5ÐØð 	;Ð+ð 	;Õ1Gð 	;Ø!œY¸?ÐKÐKˆEÝ3ð ;ð ;�	Ø"˜ 3¨Ñ.Ô.�Ø¥Ð/Ð/Ø×2Ò2°6Ñ:Ô:Ð:Ð:Ð:ð 0õ �d 3™iœiÐ):¸DÑAÔAˆàˆ;�* S­4µµeÐ*<Ñ=Ô=ˆ;Ø"ð Ý˜3¥Ñ&Ô&ðÝ,0¬J°s©O¬OðÝ?C¼zÈ#¹¼ðð ×.Ò.¨sÑ3Ô3Ð3à�
å�kÑ"Ô"ð E	Ø�;˜sÑ#Ô#Ð#å˜�XÑ&Ô&ð B	ð +ð2•Õ$ SÑ)Ô)Ñ*Ô*Ð*à×,Ò,¨SÑ1Ô1ðõ ˜�WÑ%Ô%ð ;	õ ˜#‘h”hˆGÝÐ+­SÑ1Ô1ð (Ý�6 #§)¢)¡+¤+Ð/@À1Ñ/DÑEÔEÑFÔF��å˜3Ÿ9š9™;œ;Ñ'Ô'�à(*ˆGØˆAàŸ	š	™œð ð ‘��1Ø$Ð0°QÐ:KÒ5KÐ5KØ—N’N w�NÑ/Ô/Ð/Ø�Eå˜A™œ�Ø×(Ò(ØØ!Ø(;Ø)Ø$3à/>Ð/J˜¨!Ñ+Ð+ÐPTà&7ð )ñ 
ô 
�ð "#�˜‘Ø�Q‘��àˆNå˜CÕ!7Ñ8Ô8ð 	½ZØ••~Ñ&Ô&ñ>
ô >
ð 	ð ˆGå! #™œð ð ‘��1Ø$Ð0°QÐ:KÒ5KÐ5KØ—N’N¥s¨3¡x¤x�NÑ0Ô0Ð0Ø�Eà—’Ø×(Ò(ØØ !Ø,?Ø#-Ø(7à3BÐ3N˜O¨aÑ/Ð/ÐTXà*;ð )ñ 
ô 
ñô ð ð ð ˆNàð 	3Ø×)Ò)¨#Ñ.Ô.ˆCˆCå˜#�uÑ%Ô%ð 5­°C½Ñ)CÔ)Cð 5Ø—j’j ¨)Ñ4Ô4�å˜c¥3Ñ'Ô'ð 3Ø×-Ò-¨cÑ2Ô2�õ �”	‰NŒN˜aÒð /Ø”	˜!” Ò'ð/à”	˜"” Ò.ð 	ð
 ð 	ØˆJà×&Ò&Ý˜¨Ô)>Ð?Ñ?Ô?ñ
ô 
ð 	
r%   )rX   r   r   N)r   rd   )NNNNNN)r3   r   rv   rd   rk   rd   rw   rd   ra   rx   ry   rz   r{   rz   r   r   )r3   r   r   r   )r3   r   rv   rd   rk   rd   rw   rd   r{   rˆ   ry   rˆ   r   r   )rD   rE   rF   Ú__doc__rG   rH   r2   r^   rW   rc   rm   rr   rj   rƒ   r‡   r~   rI   r%   r#   rK   rK   ]   sÇ  € € € € € Ø7Ð7ð€Ið'à!ð'ð *ð'ð ð	'ð
 >ð'ð 
ð'ð 'ð 'ð 'ð$¨ð $°#ð $ð $ð $ð $ð
<ð 
<ð 
<ð 
<ðð ð ð ð8ð ð ð ðð ð ð ð (,Ø,0Ø04Ø'+Ø;?Ø9=ð$:àð$:ð %ð$:ð *ð	$:ð
 .ð$:ð %ð$:ð 9ð$:ð 7ð$:ð 
ð$:ð $:ð $:ð $:ðLð ð ð ðV
àðV
ð %ðV
ð *ð	V
ð
 .ðV
ð 7ðV
ð 9ðV
ð 
ðV
ð V
ð V
ð V
ð V
ð V
r%   rK   ÚeventúDict[str, Any]Úkwargsr   c           	      óÚ  — t          |                     dd¦  «        dk    |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        ¬¦  «        }t          j        d	¦  «         	  |j        | fi |¤Ž}|j        s,|j        r%t          |t          ¦  «        r|j        d
         |d<   |t          j        d¦  «         S # t          j        d¦  «         w xY w)au  
    A very smart serializer that takes a dict and emits a json-friendly dict.
    Currently used for serializing the final Event and also prematurely while fetching the stack
    local variables for each frame in a stacktrace.

    It works internally with 'databags' which are arbitrary data structures like Mapping, Sequence and Set.
    The algorithm itself is a recursive graph walk down the data structures it encounters.

    It has the following responsibilities:
    * Trimming databags and keeping them within MAX_DATABAG_BREADTH and MAX_DATABAG_DEPTH.
    * Calling safe_repr() on objects appropriately to keep them informative and readable in the final payload.
    * Annotating the payload with the _meta field whenever trimming happens.

    :param max_request_body_size: If set to "always", will never trim request bodies.
    :param max_value_length: The max length to strip strings to, or None to disable string truncation. Defaults to None.
    :param is_vars: If we're serializing vars early, we want to repr() things that are JSON-serializable to make their type more apparent. For example, it's useful to see the difference between a unicode-string and a bytestring when viewing a stacktrace.
    :param custom_repr: A custom repr function that runs before safe_repr on the object to be serialized. If it returns None or throws internally, we will fallback to safe_repr.

    Úmax_request_body_sizeNÚalwaysrP   rQ   FrR   )rO   rP   rQ   rR   Tr   Ú_meta)	rK   rB   r
   Úsetrƒ   rQ   rN   r…   r›   )r¯   r±   Ú
serializerÚserialized_events       r#   Ú	serializer¹   �  s  € õ( Ø"ŸJšJÐ'>ÀÑEÔEÈÒQØŸšÐ$6¸Ñ=Ô=Ø—
’
˜9 eÑ,Ô,Ø—J’J˜}¨dÑ3Ô3ð	ñ ô €Jõ Ô˜dÑ#Ô#Ð#ð)Ø5˜:Ô5°eÐFÐF¸vÐFÐFÐàÔ"ð	AàÔ%ð	Aõ Ð+­TÑ2Ô2ð	Að
 )3Ô(=¸aÔ(@Ð˜WÑ%àåÔ! %Ñ(Ô(Ð(Ð(øÕÔ! %Ñ(Ô(Ð(Ð(øøøs   Á=AC ÃC*)r   r   r   N)r¯   r°   r±   r   r   r°   )7r—   r€   r   Úcollections.abcr   r   Ú	itertoolsr   Útypingr   Úsentry_sdk.utilsr   r	   r
   r   r   r   Útypesr   r   r   r   r   r   r   r   r   Úsentry_sdk._typesr   r^   ÚSpanr   r–   ÚSegmentr    r¡   Ú
memoryviewr�   ÚMAX_EVENT_BYTESr   Ú__annotations__r   r}   r   r$   rž   Úlistr¶   Ú	frozensetr&   r•   r)   r+   rK   r¹   rI   r%   r#   ú<module>rÇ      s�  ðØ €€€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 	Ø#Ð#Ð#Ð#Ð#Ð#ØWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWà4Ð4Ð4Ð4Ð4Ð4à��S�Œ>€Dà˜c 4¨¨S¨¤>Ð2°EÐ:LÈcÐ:QÔ4RÐRÔS€MØ�C˜�HŒo€Gð ˜u i°Ð<Ð ð €ð Ð �3Ð Ð Ñ ØÐ �SÐ Ð Ñ Ø€ð 13Ð Ð-Ð 2Ð 2Ñ 2ð-ð -ð -ð -ð !& t¨S°)¸UÐC€�Ð CÐ CÑ Cð˜tð ¨ð ð ð ð ð2ð 2ð 2ð 2ð 2ñ 2ô 2ð 2ð8a
ð a
ð a
ð a
ð a
ñ a
ô a
ð a
ðH	')ð ')ð ')ð ')ð ')ð ')r%   