§
    xÅj÷  ã                   óx   — d dl mZmZmZmZ d dlmZmZmZ erd dl m	Z	 d dl
mZ g d¢Zg d¢Z G d„ d¦  «        Zd	S )
é    )ÚTYPE_CHECKINGÚDictÚListÚcast)ÚAnnotatedValueÚcapture_internal_exceptionsÚiter_event_frames)ÚOptional)ÚEvent)!ÚpasswordÚpasswdÚsecretÚapi_keyÚapikeyÚauthÚcredentialsÚ	mysql_pwdÚ
privatekeyÚprivate_keyÚtokenÚsessionÚ	csrftokenÚ	sessionidÚx_csrftokenÚx_forwarded_forÚ
set_cookieÚcookieÚauthorizationzproxy-authorizationÚ	x_api_keyÚaiohttp_sessionzconnect.sidÚ
csrf_tokenÚcsrfÚ_csrfÚ_csrf_tokenÚ	PHPSESSIDÚ_sessionÚsymfonyÚuser_sessionÚ_xsrfz
XSRF-TOKEN)r   Ú	x_real_ipÚ
ip_addressÚremote_addrc                   óŒ   — e Zd Z	 	 	 	 ddddededdddf
d	„Zd
eddfd„Zdeddfd„Zdd„Zdd„Z	dd„Z
dd„Zdd„Zdd„Zdd„ZdS )ÚEventScrubberNFÚdenylistzOptional[List[str]]Ú	recursiveÚsend_default_piiÚpii_denylistÚreturnc                 óâ   — |€t                                ¦   «         n|| _        |s-|€t                               ¦   «         n|}| xj        |z  c_        d„ | j        D ¦   «         | _        || _        dS )a
  
        A scrubber that goes through the event payload and removes sensitive data configured through denylists.

        :param denylist: A security denylist that is always scrubbed, defaults to DEFAULT_DENYLIST.
        :param recursive: Whether to scrub the event payload recursively, default False.
        :param send_default_pii: Whether pii is sending is on, pii fields are not scrubbed.
        :param pii_denylist: The denylist to use for scrubbing when pii is not sent, defaults to DEFAULT_PII_DENYLIST.
        Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Úlower)Ú.0Úxs     úDC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/scrubber.pyú
<listcomp>z*EventScrubber.__init__.<locals>.<listcomp>W   s    € Ð:Ð:Ð: q˜Ÿš™œÐ:Ð:Ð:ó    )ÚDEFAULT_DENYLISTÚcopyr/   ÚDEFAULT_PII_DENYLISTr0   )Úselfr/   r0   r1   r2   s        r:   Ú__init__zEventScrubber.__init__@   s}   € ð 4<Ð3CÕ(×-Ò-Ñ/Ô/Ð/ÈˆŒàð 	*à/;Ð/CÕ$×)Ò)Ñ+Ô+Ð+Èð ð ˆMŒM˜\Ñ)ˆMŒMà:Ð:¨D¬MÐ:Ñ:Ô:ˆŒØ"ˆŒˆˆr<   Úlstc                 ó’   — t          |t          ¦  «        sdS |D ],}|                      |¦  «         |                      |¦  «         Œ-dS )a*  
        If a list is passed to this method, the method recursively searches the list and any
        nested lists for any dictionaries. The method calls scrub_dict on all dictionaries
        it finds.
        If the parameter passed to this method is not a list, the method does nothing.
        N)Ú
isinstanceÚlistÚ
scrub_dictÚ
scrub_list)r@   rB   Úvs      r:   rG   zEventScrubber.scrub_listZ   s[   € õ ˜#�tÑ$Ô$ð 	ØˆFàð 	ð 	ˆAØ�OŠO˜AÑÔÐØ�OŠO˜AÑÔÐÐð	ð 	r<   Údc                 óX  — t          |t          ¦  «        sdS |                     ¦   «         D ]}\  }}t          |t          ¦  «        r2|                     ¦   «         | j        v rt          j        ¦   «         ||<   ŒL| j        r*|  	                    |¦  «         |  
                    |¦  «         Œ~dS )a[  
        If a dictionary is passed to this method, the method scrubs the dictionary of any
        sensitive data. The method calls itself recursively on any nested dictionaries (
        including dictionaries nested in lists) if self.recursive is True.
        This method does nothing if the parameter passed to it is not a dictionary.
        N)rD   ÚdictÚitemsÚstrr7   r/   r   Ú+substituted_because_contains_sensitive_datar0   rF   rG   )r@   rI   ÚkrH   s       r:   rF   zEventScrubber.scrub_dicth   s«   € õ ˜!�TÑ"Ô"ð 	ØˆFà—G’G‘I”Ið 	#ð 	#‰DˆAˆqõ ˜!�SÑ!Ô!ð # a§g¢g¡i¤i°4´=Ð&@Ð&@Ý%ÔQÑSÔS��!‘�Ø”ð #Ø—’ Ñ"Ô"Ð"Ø—’ Ñ"Ô"Ð"øð	#ð 	#r<   Úeventr   c                 ó^  — t          ¦   «         5  d|v r�d|d         v r!|                      |d         d         ¦  «         d|d         v r!|                      |d         d         ¦  «         d|d         v r!|                      |d         d         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚrequestÚheadersÚcookiesÚdata©r   rF   ©r@   rP   s     r:   Úscrub_requestzEventScrubber.scrub_request{   s  € Ý(Ñ*Ô*ð 	>ð 	>Ø˜EÐ!Ð!Ø  iÔ 0Ð0Ð0Ø—O’O E¨)Ô$4°YÔ$?Ñ@Ô@Ð@Ø  iÔ 0Ð0Ð0Ø—O’O E¨)Ô$4°YÔ$?Ñ@Ô@Ð@Ø˜U 9Ô-Ð-Ð-Ø—O’O E¨)Ô$4°VÔ$<Ñ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s   �BB"Â"B&Â)B&c                 ó’   — t          ¦   «         5  d|v r|                      |d         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚextrarV   rW   s     r:   Úscrub_extrazEventScrubber.scrub_extra…   s“   € Ý(Ñ*Ô*ð 	0ð 	0Ø˜%ÐÐØ—’  g¤Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s   � <¼A ÁA c                 óþ   — t          ¦   «         5  d|v rQ|d         }d| j        v r+t          |t          ¦  «        r|                     dd ¦  «         |                      |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚuserr+   )r   r/   rD   rK   ÚpoprF   )r@   rP   r]   s      r:   Ú
scrub_userzEventScrubber.scrub_userŠ   sÆ   € Ý(Ñ*Ô*ð 	&ð 	&Ø˜ˆˆØ˜V”}�Ø 4¤=Ð0Ð0µZÀÅdÑ5KÔ5KÐ0Ø—H’H˜\¨4Ñ0Ô0Ð0Ø—’ Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   �AA2Á2A6Á9A6c                 ó  — t          ¦   «         5  d|v rUt          |d         t          ¦  «        s:d|d         v r0|d         d         D ]!}d|v r|                      |d         ¦  «         Œ"d d d ¦  «         d S # 1 swxY w Y   d S )NÚbreadcrumbsÚvaluesrU   )r   rD   r   rF   )r@   rP   Úvalues      r:   Úscrub_breadcrumbszEventScrubber.scrub_breadcrumbs’   sÝ   € Ý(Ñ*Ô*ð 	;ð 	;Ø Ð%Ð%å" 5¨Ô#7½ÑHÔHð;à  E¨-Ô$8Ð8Ð8à!& }Ô!5°hÔ!?ð ;ð ;˜Ø! U˜?˜?Ø ŸOšO¨E°&¬MÑ:Ô:Ð:øð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s   �AA6Á6A:Á=A:c                 ó¸   — t          ¦   «         5  t          |¦  «        D ]!}d|v r|                      |d         ¦  «         Œ"	 d d d ¦  «         d S # 1 swxY w Y   d S )NÚvars)r   r	   rF   )r@   rP   Úframes      r:   Úscrub_frameszEventScrubber.scrub_frames�   s®   € Ý(Ñ*Ô*ð 	3ð 	3Ý*¨5Ñ1Ô1ð 3ð 3�Ø˜U�?�?Ø—O’O E¨&¤MÑ2Ô2Ð2øð3ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   �2AÁAÁAc                 ó  — t          ¦   «         5  d|v rZt          t          t          t          t
          f                  |d         ¦  «        D ]!}d|v r|                      |d         ¦  «         Œ"d d d ¦  «         d S # 1 swxY w Y   d S )NÚspansrU   )r   r   r   r   rM   ÚobjectrF   )r@   rP   Úspans      r:   Úscrub_spanszEventScrubber.scrub_spans£   sÈ   € Ý(Ñ*Ô*ð 	6ð 	6Ø˜%ÐÐÝ ¥¥d­3µ¨;Ô&7Ô!8¸%À¼.ÑIÔIð 6ð 6�DØ �~�~ØŸš¨¨V¬Ñ5Ô5Ð5øð		6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s   �AA;Á;A?ÂA?c                 ó  — |                       |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         d S )N)rX   r[   r_   rd   rh   rm   rW   s     r:   Úscrub_eventzEventScrubber.scrub_eventª   s~   € Ø×Ò˜5Ñ!Ô!Ð!Ø×Ò˜ÑÔÐØ�Š˜ÑÔÐØ×Ò˜uÑ%Ô%Ð%Ø×Ò˜%Ñ Ô Ð Ø×Ò˜ÑÔÐÐÐr<   )NFFN)rP   r   r3   N)Ú__name__Ú
__module__Ú__qualname__ÚboolrA   rk   rG   rF   rX   r[   r_   rd   rh   rm   ro   r6   r<   r:   r.   r.   ?   s;  € € € € € ð +/ØØ!&Ø.2ð#ð #à'ð#ð ð#ð ð	#ð
 ,ð#ð 
ð#ð #ð #ð #ð4˜fð ¨ð ð ð ð ð#˜Fð # tð #ð #ð #ð #ð&>ð >ð >ð >ð0ð 0ð 0ð 0ð
&ð &ð &ð &ð	;ð 	;ð 	;ð 	;ð3ð 3ð 3ð 3ð6ð 6ð 6ð 6ð ð  ð  ð  ð  ð  r<   r.   N)Útypingr   r   r   r   Úsentry_sdk.utilsr   r   r	   r
   Úsentry_sdk._typesr   r=   r?   r.   r6   r<   r:   ú<module>rw      sê   ðØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð ð ð ð (ØÐÐÐÐÐà'Ð'Ð'Ð'Ð'Ð'ð&ð &ð &Ð ðPð ð Ð ðq ð q ð q ð q ð q ñ q ô q ð q ð q ð q r<   