§
    xÅjÏZ  ã                   ó  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlm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 d dlmZ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,m-Z-m.Z. er+d dlm/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6  e2de0de/f         ¬¦  «        Z7dZ8dZ9d6d„Z:d7d„Z;d8d „Z<d9d!„Z= G d"„ d#e¦  «        Z>d:d%„Z?	 	 	 	 	 	 	 	 d;d*„Z@dd&d'd&deAfd+„ZBd'd&d,d-deAfd.„ZCd<d2„ZDd=d5„ZEdS )>é    N)Údeepcopy)ÚdatetimeÚ	timedeltaÚtimezone)Úenviron)ÚTYPE_CHECKING)Ú	urlencode)Úcontinue_trace)ÚOP)Ú%_apply_key_value_collection_filtering)ÚIntegration)Ú_filter_headers)ÚCLOUD_PLATFORMÚCLOUD_PROVIDER)ÚScopeÚshould_send_default_pii)ÚSegmentNameSource)ÚTransactionSource)Úhas_span_streaming_enabled)ÚAnnotatedValueÚTimeoutThreadÚcapture_internal_exceptionsÚensure_integration_enabledÚevent_from_exceptionÚhas_data_collection_enabledÚloggerÚreraise)ÚAnyÚCallableÚOptionalÚTypeVar)ÚEventÚEventProcessorÚHintÚF.)ÚboundiÜ  g     @�@Ú	aws_eventúdict[str, Any]Úreturnc                 ó  — t          | t          ¦  «        si S |                      di ¦  «                             d¦  «        }|€i S i }|                     d¦  «        }|�||d<   |                     d¦  «        }|�||d<   |S )NÚrequestContextÚidentityÚuserArnÚidÚsourceIpÚ
ip_address)Ú
isinstanceÚdictÚget)r'   r,   Ú	user_infoÚuser_arnÚips        úSC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/aws_lambda.pyÚ_get_user_from_eventr8   0   s‘   € Ý�i¥Ñ&Ô&ð Øˆ	à�}Š}Ð-¨rÑ2Ô2×6Ò6°zÑBÔB€HØÐØˆ	à"$€Ià�|Š|˜IÑ&Ô&€HØÐØ"ˆ	�$‰à	�Š�jÑ	!Ô	!€BØ	€~Ø"$ˆ	�,ÑàÐó    Ú
init_errorc                 óJ   ‡ — t          t          ‰ ¦  «        dˆ fd„¦   «         }|S )NÚargsr   Úkwargsr)   c                  ó(  •— t          j        ¦   «         }t          ¦   «         5  t          j        ¦   «                              ¦   «          t          j        ¦   «         }|rCt          |¦  «        r4t          ||j	        dddœ¬¦  «        \  }}t          j
        ||¬¦  «         nT| d         }t          |t          ¦  «        rt          j        |¦  «        }t          |¦  «        }t          j
        |¦  «         d d d ¦  «         n# 1 swxY w Y    ‰| i |¤ŽS )NÚ
aws_lambdaF©ÚtypeÚhandled©Úclient_optionsÚ	mechanism©Úhinté   )Ú
sentry_sdkÚ
get_clientr   Úget_isolation_scopeÚclear_breadcrumbsÚsysÚexc_infoÚallr   ÚoptionsÚcapture_eventr1   ÚstrÚjsonÚloadsÚ_event_from_error_json)r<   r=   ÚclientrN   Úsentry_eventrG   Ú
error_infor:   s          €r7   Úsentry_init_errorz+_wrap_init_error.<locals>.sentry_init_errorF   sU  ø€ åÔ&Ñ(Ô(ˆå(Ñ*Ô*ð 	7ð 	7ÝÔ*Ñ,Ô,×>Ò>Ñ@Ô@Ð@å”|‘~”~ˆHØð 7�C ™MœMð 7Ý%9ØØ#)¤>Ø'3ÀÐFÐFð&ñ &ô &Ñ"�˜dõ
 Ô(¨¸DÐAÑAÔAÐAÐAð " !œW�
Ý˜j­#Ñ.Ô.ð 8Ý!%¤¨JÑ!7Ô!7�JÝ5°jÑAÔA�ÝÔ(¨Ñ6Ô6Ð6ð%	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð( ˆz˜4Ð* 6Ð*Ð*Ð*s   £CDÄDÄD©r<   r   r=   r   r)   r   )r   ÚAwsLambdaIntegration)r:   rY   s   ` r7   Ú_wrap_init_errorr\   E   s@   ø€ ÝÕ 4°jÑAÔAð+ð +ð +ð +ð +ñ BÔAð+ð2 Ðr9   Úhandlerc                 ó\   ‡ — t          j        ‰ ¦  «        	 	 	 	 	 	 	 	 	 	 dˆ fd„¦   «         }|S )	Nr'   r   Úaws_contextr<   r=   r)   c                 ó0  •— t          j        ¦   «         }|                     t          ¦  «        }|€ ‰| |g|¢R i |¤ŽS t	          | t
          ¦  «        r+t          | ¦  «        dk    r| d         }t          | ¦  «        }n| }d}t	          |t          ¦  «        si }|                     ¦   «         }|j	         
                    d¦  «        d         }	t          j        ¦   «         5 }
d }t          ¦   «         5  |
                     ¦   «          |
                     t          |||¦  «        ¦  «         |
                     d|	¦  «         |dk    r,|
                     dd¦  «         |
                     d|¦  «         |j        r]|t$          k    rR|t$          z
  t&          z  }t)          ||t&          z  |
t          j        ¦   «         ¬	¦  «        }|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                     d
i ¦  «        }t	          |t          ¦  «        si }i }t1          |d¬¦  «                             ¦   «         D ]\  }}||d|                     ¦   «         › �<   Œ i }d|v r|d         |d<   d|v ru|d         }|rkt7          |j        ¦  «        r7t;          ||j        d         d         ¬¦  «        }|rt=          |¦  «        |d<   n t?          ¦   «         rt=          |¦  «        |d<   |
j         s‚t7          |j        ¦  «        r:|j        d         d         r&tC          |¦  «        }|r|
 "                    |¦  «         n4t?          ¦   «         r&tC          |¦  «        }|r|
 "                    |¦  «         | |dœ}|j#        }tI          |j        ¦  «        r»t           j%         &                    |¦  «         tO          j(        |¦  «         t           j%         )                    |d tT          j+        t          j,        tZ          j.        |	|j	        t^          j0        tb          j2        ||j3        |j4        |j	        |j5        g|j6        g|dœ|¥|¥¬¦  «        }nHtM          |tT          j+        |tn          j.        t          j,        ¬¦  «        }t          j8        ||¬¦  «        }|5  	  ‰| |g|¢R i |¤Ž|r| 9                    ¦   «          cd d d ¦  «         cd d d ¦  «         S # tt          $ rR tw          j<        ¦   «         }t{          ||j        dddœ¬¦  «        \  }}t          j>        ||¬¦  «         t          |Ž  Y nw xY w	 |r| 9                    ¦   «          n# |r| 9                    ¦   «          w w xY wd d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NrH   r   ú:é   Ú
aws_regionÚbatch_requestTÚ
batch_size)Úisolation_scopeÚcurrent_scopeÚheadersF)Úuse_annotated_valuezhttp.request.header.Ú
httpMethodzhttp.request.methodÚqueryStringParametersÚdata_collectionÚurl_query_params©ÚitemsÚ	behaviourz	url.queryr4   )r'   r_   )z	sentry.opzsentry.originzsentry.segment.name.sourcezcloud.regionzcloud.resource_idzcloud.platformzcloud.providerz	faas.namezfaas.invocation_idzfaas.versionzaws.lambda.invoked_arnzaws.log.group.nameszaws.log.stream.nameszmessaging.batch.message_count)ÚnameÚparent_spanÚ
attributes)Úoprq   ÚsourceÚorigin)Úcustom_sampling_contextr?   r@   rC   rF   )@rI   rJ   Úget_integrationr[   r1   ÚlistÚlenr2   Úget_remaining_time_in_millisÚinvoked_function_arnÚsplitrf   r   rL   Úadd_event_processorÚ_make_request_event_processorÚset_tagÚtimeout_warningÚTIMEOUT_WARNING_BUFFERÚMILLIS_TO_SECONDSr   Úget_current_scopeÚstartr3   r   ro   Úlowerr   rP   r   r	   r   Ú_userr8   Úset_userÚfunction_namer   Útracesr
   r   Úset_custom_sampling_contextÚ
start_spanr   ÚFUNCTION_AWSrv   r   Ú	COMPONENTr   Ú
AWS_LAMBDAr   ÚAWSÚaws_request_idÚfunction_versionÚlog_group_nameÚlog_stream_namer   Ústart_transactionÚstopÚ	ExceptionrM   rN   r   rQ   r   )r'   r_   r<   r=   rV   ÚintegrationÚrequest_datare   Úconfigured_timerc   ÚscopeÚtimeout_threadÚwaiting_timerh   Úheader_attributesÚheaderÚheader_valueÚadditional_attributesÚqsÚfiltered_qsr4   Úsampling_contextr‰   Úspan_ctxÚtransactionrN   rW   rG   r]   s                               €r7   Úsentry_handlerz%_wrap_handler.<locals>.sentry_handlerd   s†  ø€ õ Ô&Ñ(Ô(ˆØ×,Ò,Õ-AÑBÔBˆàÐØ�7˜9 kÐC°DÐCÐCÐC¸FÐCÐCÐCå�i¥Ñ&Ô&ð 	­3¨y©>¬>¸QÒ+>Ð+>Ø$ Qœ<ˆLÝ˜Y™œˆJˆJà$ˆLØˆJå˜,­Ñ-Ô-ð 	ð ˆLà%×BÒBÑDÔDˆØ Ô5×;Ò;¸CÑ@Ô@ÀÔCˆ
åÔ'Ñ)Ô)ð K	.¨UØ!ˆNÝ,Ñ.Ô.ð +ð +Ø×'Ò'Ñ)Ô)Ð)Ø×)Ò)Ý1Ø$ k°?ñô ñô ð ð
 —’˜l¨JÑ7Ô7Ð7Ø ’>�>Ø—M’M /°4Ñ8Ô8Ð8Ø—M’M ,°
Ñ;Ô;Ð;ð
  Ô/ð+à'Õ*@Ò@Ð@ð (Õ*@Ñ@Ý)ñ$*�Lõ &3Ø$Ø'Õ*;Ñ;Ø(-Ý&0Ô&BÑ&DÔ&Dð	&ñ &ô &�Nð #×(Ò(Ñ*Ô*Ð*ð=+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð@ #×&Ò& y°"Ñ5Ô5ˆGõ ˜g¥tÑ,Ô,ð Ø�à24ÐÝ(7Ø¨Uð)ñ )ô )çŠe‰gŒgðð Ñ$�˜ð !ð "Ð"I¸¿º¹¼Ð"IÐ"IÑJÐJð 79Ð!Ø˜|Ð+Ð+Ø?KØ ô@Ð%Ð&;Ñ<ð '¨,Ð6Ð6Ø!Ð"9Ô:�Øð KÝ2°6´>ÑBÔBð 
KÝ&KØ"$Ø&,¤nÐ5FÔ&GØ 2ô'ð'ñ 'ô '˜ð 'ð XÝAJÈ;ÑAWÔAWÐ1°+Ñ>øÝ0Ñ2Ô2ð KÝ=FÀr¹]¼]Ð-¨kÑ:à”;ð 	2Ý.¨v¬~Ñ>Ô>ð 2Ø”~Ð&7Ô8¸ÔEð 6Ý$8¸Ñ$FÔ$F˜	Ø$ð 6Ø!ŸNšN¨9Ñ5Ô5Ð5øÝ,Ñ.Ô.ð 2Ý 4°\Ñ BÔ B�IØ ð 2ØŸš yÑ1Ô1Ð1ð 'Ø*ð ð  Ðð
 (Ô5ˆMå)¨&¬.Ñ9Ô9ð $ÝÔ!×0Ò0°Ñ9Ô9Ð9ÝÔ1Ð2BÑCÔCÐCÝ%Ô,×7Ò7Ø&Ø $å%'¤_Ý)=Ô)DÝ6GÔ6QØ(2Ø-8Ô-MÝ*8Ô*CÝ*8Ô*<Ø%2Ø.9Ô.HØ(3Ô(DØ2=Ô2RØ0;Ô0JÐ/KØ1<Ô1LÐ0MØ9Cð ð  ð ,ð ð  0ð! ð 8ñ ô ��õ. -ØÝ”Ø&Ý,Ô6Ý/Ô6ðñ ô �õ &Ô7ØÐ9Iðñ ô �ð ð .ð .ð.Ø"˜7 9¨kÐK¸DÐKÐKÐKÀFÐKÐKð &ð .Ø&×+Ò+Ñ-Ô-Ð-ð.ð .ð .ð .ñ .ô .ð .ð{K	.ð K	.ð K	.ð K	.ñ K	.ô K	.ð K	.ð K	.øõ@ !ð 'ð 'ð 'Ý"œ|™~œ~�HÝ)=Ø Ø'-¤~Ø+7ÀEÐ"JÐ"Jð*ñ *ô *Ñ&�L $õ
 Ô,¨\ÀÐEÑEÔEÐEÝ˜XÐ&Ð&Ð&Ð&ð'øøøð 'à%ð .Ø&×+Ò+Ñ-Ô-Ð-øøð &ð .Ø&×+Ò+Ñ-Ô-Ð-Ð-ð.øøøð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð{K	.ð K	.ð K	.ñ K	.ô K	.ð K	.ð K	.ð K	.ð K	.ð K	.ð K	.ð K	.øøøð K	.ð K	.ð K	.ð K	.ð K	.ð K	.s™   Ã VÃ1C%G"ÇVÇ"G&	Ç&VÇ)G&	Ç*J-VÒU3ÒSÒ%U3Ò;VÓAT0Ô-UÔ/T0Ô0UÔ4U3ÕU$Õ$U3Õ'VÕ3U7	Õ7VÕ:U7	Õ;VÖVÖV)
r'   r   r_   r   r<   r   r=   r   r)   r   )Ú	functoolsÚwraps)r]   r§   s   ` r7   Ú_wrap_handlerrª   c   sr   ø€ Ý„_�WÑÔðn.Øðn.Ø',ðn.Ø5:ðn.ØFKðn.à	ðn.ð n.ð n.ð n.ð n.ñ Ôðn.ð` Ðr9   c                  óÚ   — t          ¦   «         5  t          j        ¦   «         } |                      t          ¦  «        }|�|                      ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S ©N)r   rI   rJ   rx   r[   Úflush)rV   r˜   s     r7   Ú_drain_queuer®     s©   € Ý	$Ñ	&Ô	&ð ð ÝÔ&Ñ(Ô(ˆØ×,Ò,Õ-AÑBÔBˆØÐ"ð �LŠL‰NŒNˆNðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   �AA Á A$Á'A$c                   óF   — e Zd ZdZde› �Zd	deddfd„Zed
d„¦   «         ZdS )r[   r?   zauto.function.Fr�   r)   Nc                 ó   — || _         d S r¬   )r�   )Úselfr�   s     r7   Ú__init__zAwsLambdaIntegration.__init__&  s   € Ø.ˆÔÐÐr9   c                  óT  ‡‡‡— t          ¦   «         } | st          j        d¦  «         d S t          | d¦  «        st          j        d¦  «         d S t          | d¦  «        }|rN| j        Š	 	 	 	 	 	 	 	 dˆfd
„}|| _        | j        Š	 	 	 	 	 	 	 	 dˆfd„}|| _        | j        Šdˆfd„}|| _        d S t          | j        j	        ¦  «        | j        _	        | j        Šˆfd„}|| _        dd„} || j        j
        ¦  «        | j        _
         || j        j        ¦  «        | j        _        d S )NzfNot running in AWS Lambda environment, AwsLambdaIntegration disabled (could not find bootstrap module)Úhandle_event_requestzjNot running in AWS Lambda environment, AwsLambdaIntegration disabled (could not find handle_event_request)Úhandle_http_requestÚrequest_handlerr   r<   r=   r)   c                 ó:   •— t          | ¦  «        }  ‰| g|¢R i |¤ŽS r¬   ©rª   )r¶   r<   r=   Úold_handle_event_requests      €r7   Úsentry_handle_event_requestzDAwsLambdaIntegration.setup_once.<locals>.sentry_handle_event_request?  s3   ø€ õ #0°Ñ"@Ô"@�Ø/Ð/°ÐQÀ$ÐQÐQÐQÈ&ÐQÐQÐQr9   c                 ó:   •— t          | ¦  «        }  ‰| g|¢R i |¤ŽS r¬   r¸   )r¶   r<   r=   Úold_handle_http_requests      €r7   Úsentry_handle_http_requestzCAwsLambdaIntegration.setup_once.<locals>.sentry_handle_http_requestI  s3   ø€ õ #0°Ñ"@Ô"@�Ø.Ð.¨ÐPÀÐPÐPÐPÈÐPÐPÐPr9   c                  ó0   •— t          ¦   «           ‰| i |¤ŽS r¬   ©r®   )r<   r=   Úold_to_jsons     €r7   Úsentry_to_jsonz7AwsLambdaIntegration.setup_once.<locals>.sentry_to_jsonV  s!   ø€ Ý‘”�Ø"�{ DÐ3¨FÐ3Ð3Ð3r9   c                 ó<   •— t          |¦  «        } ‰| |g|¢R i |¤ŽS r¬   r¸   )Úlambda_runtime_clientr¶   r<   r=   r¹   s       €r7   rº   zDAwsLambdaIntegration.setup_once.<locals>.sentry_handle_event_requestb  sF   ø€ õ #0°Ñ"@Ô"@�Ø/Ð/Ø)¨?ðØ=Aðð ð ØEKðð ð r9   Úfr%   c                 ó   ‡ — dˆ fd„}|S )Nr<   r   r=   r)   c                  ó0   •— t          ¦   «           ‰| i |¤ŽS r¬   r¿   )r<   r=   rÄ   s     €r7   ÚinnerzKAwsLambdaIntegration.setup_once.<locals>._wrap_post_function.<locals>.innerp  s!   ø€ Ý ‘N”N�NØ˜1˜dÐ- fÐ-Ð-Ð-r9   rZ   © )rÄ   rÇ   s   ` r7   Ú_wrap_post_functionz<AwsLambdaIntegration.setup_once.<locals>._wrap_post_functiono  s(   ø€ ð.ð .ð .ð .ð .ð .ð �r9   )r¶   r   r<   r   r=   r   r)   r   rZ   )rÄ   r%   r)   r%   )Úget_lambda_bootstrapr   ÚwarningÚhasattrr´   rµ   Úto_jsonr\   ÚLambdaRuntimeClientÚpost_init_errorÚpost_invocation_resultÚpost_invocation_error)	Úlambda_bootstrapÚpre_37rº   r½   rÁ   rÉ   r¹   r¼   rÀ   s	         @@@r7   Ú
setup_oncezAwsLambdaIntegration.setup_once)  s3  øøø€ å/Ñ1Ô1ÐØð 	ÝŒNðRñô ð ð ˆFåÐ'Ð)?Ñ@Ô@ð 	ÝŒNðVñô ð ð ˆFåÐ)Ð+@ÑAÔAˆàð C	Ø'7Ô'LÐ$ðRØ!&ðRØ/4ðRØ@EðRàðRð Rð Rð Rð Rð Rð 5PÐÔ1à&6Ô&JÐ#ðQØ!&ðQØ/4ðQØ@EðQàðQð Qð Qð Qð Qð Qð 4NÐÔ0ð
 +Ô2ˆKð4ð 4ð 4ð 4ð 4ð 4ð (6ÐÔ$Ð$Ð$åCSØ Ô4ÔDñDô DÐÔ0Ô@ð (8Ô'LÐ$ðð ð ð ð ð 5PÐÔ1ð
ð ð ð ð $Ð#Ø$Ô8ÔOñô ð Ô0ÔGð $Ð#Ø$Ô8ÔNñô ð Ô0ÔFÐFÐFr9   )F©r)   N)	Ú__name__Ú
__module__Ú__qualname__Ú
identifierrv   Úboolr²   ÚstaticmethodrÔ   rÈ   r9   r7   r[   r[   "  ss   € € € € € Ø€JØ*˜jÐ*Ð*€Fð/ð /¨ð /¸ð /ð /ð /ð /ð ðUð Uð Uñ „\ðUð Uð Ur9   r[   úOptional[Any]c                  ó  — dt           j        v rt           j        d         S dt           j        v r\t           j        d         } t          | d¦  «        r!t          | j        d¦  «        r| j        j        S t          | d¦  «        r| j        S | S d S )NÚ	bootstrapÚ__main__Úawslambdaricmain)rM   ÚmodulesrÌ   rà   rÞ   )Úmodules    r7   rÊ   rÊ   ‚  s˜   € ð  •c”kÐ!Ð!ÝŒ{˜;Ô'Ð'Ø	•s”{Ð	"Ð	"Ý”˜ZÔ(ˆå�6Ð-Ñ.Ô.ð 	$µ7ØÔ# [ñ4
ô 4
ð 	$ð Ô*Ô4Ð4Ý�V˜[Ñ)Ô)ð 	$àÔ#Ð#ð ˆàˆtr9   r   r_   Úconfigured_timeoutr#   c                 ój   ‡ ‡‡— t          j        t          j        ¦  «        }|f	 	 	 	 	 	 	 d
ˆˆ ˆfd	„}|S )NrW   r"   rG   r$   Ú
start_timer   r)   úOptional[Event]c                 óz  •— ‰                      ¦   «         }‰|z
  }|                      di ¦  «        }‰j        ‰j        ‰j        ‰j        ||dœ|d<   t          ‰|¦  «        ‰j        ‰j        dœ|d<   |  	                    di ¦  «        }d‰v r‰d         |d<   t          ‰‰¦  «        |d	<   d
‰v r[‰d
         }t          j        ¦   «         j        }t          |¦  «        r'|r$t          ||d         d         ¬¦  «        }	|	r|	|d<   n||d<   d‰v r3t!          ‰d         t"          ¦  «        rt%          ‰d         ¦  «        |d<   t          j        ¦   «         j        }t          |¦  «        r“|d         d         rWt'          ‰¦  «        }
|
rF|                      di ¦  «        }|
                     ¦   «         D ]\  }}|                     ||¦  «         Œd|d         d         v rd‰v r‰ 	                    dd¦  «        |d<   n¯t+          ¦   «         rut'          ‰¦  «        }
|
rF|                      di ¦  «        }|
                     ¦   «         D ]\  }}|                     ||¦  «         Œd‰v r‰ 	                    dd¦  «        |d<   n,‰ 	                    dd ¦  «        rt-          j        ¦   «         |d<   t1          |¦  «        | d<   | S )NÚextra)r‰   r’   r|   r‘   Úexecution_duration_in_millisÚremaining_time_in_millisÚlambda)ÚurlÚ	log_groupÚ
log_streamzcloudwatch logsÚrequestrj   Úmethodrì   rk   rl   rm   rn   Úquery_stringrh   r4   ÚuserÚincoming_requestÚhttp_bodiesÚbodyÚ Údata)r{   Ú
setdefaultr‰   r’   r|   r‘   Ú_get_cloudwatch_logs_urlr“   r”   r3   Ú_get_urlrI   rJ   rP   r   r   r1   r2   r   r8   ro   r   r   Úremoved_because_raw_datar   )rW   rG   rå   Úremaining_time_in_milisÚexec_durationrè   rï   rñ   rD   r£   Úextracted_userr4   ÚkeyÚvaluer_   r'   rã   s                 €€€r7   Úevent_processorz6_make_request_event_processor.<locals>.event_processorª  s7  ø€ ð #.×"JÒ"JÑ"LÔ"LÐØ*Ð-DÑDˆà×'Ò'¨°Ñ4Ô4ˆà(Ô6Ø +Ô <Ø$/Ô$DØ)Ô8Ø,9Ø(?ð
ð 
ˆˆh‰õ ,¨K¸ÑDÔDØ$Ô3Ø%Ô5ð$
ð $
ˆÐÑ ð ×"Ò" 9¨bÑ1Ô1ˆà˜9Ð$Ð$Ø )¨,Ô 7ˆG�HÑå! )¨[Ñ9Ô9ˆ�‰à" iÐ/Ð/Ø$Ð%<Ô=ˆLÝ'Ô2Ñ4Ô4Ô<ˆNÝ*¨>Ñ:Ô:ð 	7Øð >Ý"GØ*Ø"0Ð1BÔ"CÐDVÔ"Wð#ñ #ô #�Kð #ð >Ø2=˜ Ñ/øà*6�˜Ñ'à˜	Ð!Ð!¥j°¸9Ô1EÅtÑ&LÔ&LÐ!Ý!0°¸9Ô1EÑ!FÔ!FˆG�IÑå#Ô.Ñ0Ô0Ô8ˆÝ& ~Ñ6Ô6ð 	LØÐ/Ô0°Ô=ð 9Ý!5°iÑ!@Ô!@�Ø!ð 9Ø ,× 7Ò 7¸ÀÑ CÔ C�IØ&4×&:Ò&:Ñ&<Ô&<ð 9ð 9™
˜˜UØ!×,Ò,¨S°%Ñ8Ô8Ð8Ð8à! ^Ð4EÔ%FÀ}Ô%UÐUÐUØ˜YÐ&Ð&Ø&/§m¢m°F¸BÑ&?Ô&?�G˜F‘Oøå$Ñ&Ô&ð 	LÝ1°)Ñ<Ô<ˆNØð 5Ø(×3Ò3°F¸BÑ?Ô?�	Ø"0×"6Ò"6Ñ"8Ô"8ð 5ð 5‘J�C˜Ø×(Ò(¨¨eÑ4Ô4Ð4Ð4à˜Ð"Ð"Ø"+§-¢-°¸Ñ";Ô";�˜‘øà�}Š}˜V TÑ*Ô*ð Lõ #1Ô"IÑ"KÔ"K�˜‘å"*¨7Ñ"3Ô"3ˆ�YÑàÐr9   )rW   r"   rG   r$   rå   r   r)   ræ   )r   Únowr   Úutc)r'   r_   rã   rå   r  s   ```  r7   r   r   ¥  s|   øøø€ õ ”�hœlÑ+Ô+€Jð GQðLØðLØ%+ðLØ9CðLà	ðLð Lð Lð Lð Lð Lð Lð Lð\ Ðr9   c                 óL  — |                       dd ¦  «        }|                       d¦  «        }t          |t          ¦  «        si }|                      dd ¦  «        }|                      dd ¦  «        }|r|r|rd                     |||¦  «        S d                     |j        ¦  «        S )NÚpathrh   ÚHostzX-Forwarded-Protoz	{}://{}{}zawslambda:///{})r3   r1   r2   Úformatr‰   )r'   r_   r  rh   ÚhostÚprotos         r7   rú   rú   û  s©   € Ø�=Š=˜ Ñ&Ô&€Dà�mŠm˜IÑ&Ô&€GÝ�g�tÑ$Ô$ð Øˆà�;Š;�v˜tÑ$Ô$€DØ�KŠKÐ+¨TÑ2Ô2€EØð 5�ð 5˜$ð 5Ø×!Ò! %¨¨tÑ4Ô4Ð4Ø×#Ò# KÔ$=Ñ>Ô>Ð>r9   rå   r   c                 ót  — d}t          j        dd¦  «        }d                     |                     d¦  «        rdnd|| j        | j        |t          d¬	¦  «        z
                       |¦  «        t          j	        t          j        ¦  «        t          d
¬	¦  «        z                        |¦  «        ¬¦  «        }|S )zË
    Generates a CloudWatchLogs console URL based on the context object

    Arguments:
        aws_context {Any} -- context from lambda handler

    Returns:
        str -- AWS Console URL to logs.
    z%Y-%m-%dT%H:%M:%SZÚ
AWS_REGIONrö   z�https://console.{domain}/cloudwatch/home?region={region}#logEventViewer:group={log_group};stream={log_stream};start={start_time};end={end_time}zcn-zamazonaws.cnzaws.amazon.comrH   )Úsecondsé   )ÚdomainÚregionrí   rî   rå   Úend_time)r   r3   r  Ú
startswithr“   r”   r   Ústrftimer   r  r   r  )r_   rå   Úformatstringr  rì   s        r7   rù   rù   	  s¾   € ð (€LÝŒ[˜ rÑ*Ô*€Fð	-÷ ‚fØ!'×!2Ò!2°5Ñ!9Ô!9ÐOˆ~ˆ~Ð?OØØÔ,ØÔ.Ø¥°1Ð!5Ñ!5Ô!5Ñ5×?Ò?ÀÑMÔMÝ”,�xœ|Ñ,Ô,­yÀÐ/CÑ/CÔ/CÑC×MÒMØñ
ô 
ð ñ 	ô 	ð	 ð €Jr9   Úformatted_tbú	list[str]úlist[dict[str, Any]]c                 óî   — g }| D ]o}t          j        d|                     ¦   «         ¦  «        }|rD|                     ¦   «         \  }}}t	          |¦  «        }|                     |||d d d d dœ¦  «         Œp|S )Nz File "(.+)", line (\d+), in (.+))ÚfilenameÚfunctionÚlinenoÚvarsÚpre_contextÚcontext_lineÚpost_context)ÚreÚmatchÚstripÚgroupsÚintÚappend)r  ÚframesÚframer   Ú	file_nameÚline_numberÚ	func_names          r7   Ú_parse_formatted_tracebackr*  (  s–   € Ø€FØð ð ˆÝ”Ð<¸e¿kºk¹m¼mÑLÔLˆØð 	Ø05·²±´Ñ-ˆI�{ IÝ˜kÑ*Ô*ˆKØ�MŠMà )Ø )Ø)Ø Ø#'Ø$(Ø$(ðð ñ
ô 
ð 
øð €Mr9   Ú
error_jsonr"   c                 ó¸   — dd|                       d¦  «        |                       d¦  «        dt          |                       dg ¦  «        ¦  «        iddd	œd
œgidœ}|S )a9  
    Converts the error JSON from AWS Lambda into a Sentry error event.
    This is not a full fletched event, but better than nothing.

    This is an example of where AWS creates the error JSON:
    https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/2.2.1/awslambdaric/bootstrap.py#L479
    ÚerrorÚvaluesÚ	errorTypeÚerrorMessager%  Ú
stackTracer?   Fr@   )rA   r   Ú
stacktracerE   )ÚlevelÚ	exception)r3   r*  )r+  Úevents     r7   rU   rU   =  s‡   € ð àà&ŸNšN¨;Ñ7Ô7Ø'Ÿ^š^¨NÑ;Ô;à Õ"<Ø&ŸNšN¨<¸Ñ<Ô<ñ#ô #ð#ð !-Ø#(ð"ð "ðð ðð
ðð €Eð* €Lr9   )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)   r  )r+  r(   r)   r"   )Fr¨   rS   r  rM   Úcopyr   r   r   r   Úosr   Útypingr   Úurllib.parser	   rI   Úsentry_sdk.apir
   Úsentry_sdk.constsr   Úsentry_sdk.data_collectionr   Úsentry_sdk.integrationsr   Ú$sentry_sdk.integrations._wsgi_commonr   Ú.sentry_sdk.integrations.cloud_resource_contextr   r   Úsentry_sdk.scoper   r   Úsentry_sdk.tracesr   Úsentry_sdk.tracingr   Úsentry_sdk.tracing_utilsr   Úsentry_sdk.utilsr   r   r   r   r   r   r   r   r   r   r    r!   Úsentry_sdk._typesr"   r#   r$   r%   r‚   rƒ   r8   r\   rª   r®   r[   rÊ   r   rR   rú   rù   r*  rU   rÈ   r9   r7   ú<module>rF     s©  ðØ Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø LÐ LÐ LÐ LÐ LÐ LØ /Ð /Ð /Ð /Ð /Ð /Ø @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø /Ð /Ð /Ð /Ð /Ð /Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ð /Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7à=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=àˆ�˜8 C¨ HÔ-Ð.Ñ.Ô.€Að Ð ØÐ ðð ð ð ð*ð ð ð ð<rð rð rð rðjð ð ð ð]ð ]ð ]ð ]ð ]˜;ñ ]ô ]ð ]ð@ ð  ð  ð  ðFSØðSØ#(ðSØ>CðSàðSð Sð Sð Sðl?˜ð ?¨Eð ?°cð ?ð ?ð ?ð ?ð¨%ð ¸Zð ÈCð ð ð ð ð>ð ð ð ð*ð ð ð ð ð r9   