+
    oÆFjŒ  ã                   ó  a € R^ t40 t R t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t^ RI
t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIHt RtRtRt ! R R]4      t ! R	 R
]4      t ! R R]4      tR R lt R R lt!R R lt"R R lt#R R lt$R R lt%R R lt&R t'R R lt(R R lt)]PT                   ! R  R!4      4       t+ ! R" R#4      t,]-]+,          ],,          ].,          ]/,          t0] ^ k 0 R$kR%kR&kR'kR(kR)kR*kR+kR,kR-kR.kR/kR0kR1kR2kR3kR4kR5kR6kR7kR8kR9kR:kR;kR<kR=kR>kR?kR@kRAkRBkRCkRDkREkRFkRGkRHkRIkRJkRKkRLkRMkRNkROkRPkRQkRRkRSkRTkRUkRVkRWkRXkRYkRZkR[kt1 ! R\ R]]Pd                  4      t3R# )_z(Store, load, and handle problem reports.N)Ú	GeneratorÚIterableÚIterator)Ú	TypeAliasi   s   ‹s   (µ/ýc                   óB   a a€ ] tR t^'t oRtV3R lV 3R lltRtVtV ;t# )ÚMalformedProblemReportzŠRaised when a problem report violates the crash report format.

This exception might be raised when the keys of the report are not ASCII.
c                ó&   <€ V ^8„  d   QhRS[ RS[/# )é   ÚmessageÚargs)ÚstrÚobject)ÚformatÚ__classdict__s   "€Ú0/usr/lib/python3/dist-packages/problem_report.pyÚ__annotate__Ú#MalformedProblemReport.__annotate__-   s   ø€ ÷ 
ñ 
¡ð 
©Fñ 
ó    c                ó4   <€ \         SV `  ! R V R2.VO5!   R# )zMalformed problem report: z$. Is this a proper .crash text file?N)ÚsuperÚ__init__)Úselfr
   r   Ú	__class__s   &&*€r   r   ÚMalformedProblemReport.__init__-   s+   ø€ Ü‰ÒØ(¨¨	ð 22ð 3ð	
ð ö	
r   © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r   r   s   @@r   r   r   '   s   ù‡ € ñ÷

÷ 
ó 
r   r   c                   ó   € ] tR t^5tRtRtR# )Ú_SizeLimitExceededz>Raised internally to signal a value that is too big to encode.r   N)r   r   r   r   r   r    r   r   r   r%   r%   5   s   † ÝHr   r%   c                   óZ   a € ] tR t^9t o RtV 3R lR ltV 3R lR ltV 3R lR ltRtV t	R	# )
Ú_EntryParserz´Iterator over entries in RFC822 formatted files.

This iterator reads ahead one line to determine the boundaries between
the entries. Each returned entry is a line-based iterator.
c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r	   ÚiteratorÚreturnN©r   Úbytes)r   r   s   "€r   r   Ú_EntryParser.__annotate__@   s   ø€ ÷ ñ ¡©%¥ð °Tñ r   c                ó.   € Wn         R V n        RV n        R # )NT)r)   Ú	next_lineÚ
entry_read)r   r)   s   &&r   r   Ú_EntryParser.__init__@   s   € Ø ŒØ'+ˆŒØˆŽr   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©r	   r*   r+   )r   r   s   "€r   r   r-   E   s   ø€ ÷ ñ ¡©¥ñ r   c              #  óÚ   "  € V P                   '       g   Q hV P                   x € RV n         V P                   F&  pVP                  R4      '       d   Vx € K   Wn          M	  RV n        R# 5i)z$Iterate over all lines of one entry.Nó    T)r/   r)   Ú
startswithr0   )r   Úlines   & r   Úentry_iteratorÚ_EntryParser.entry_iteratorE   sW   é € à�~�~ˆ~Ðˆ~Ø�n‰nÒØˆŒØ—M”MˆDØ�‰˜t×$Ò$Ø”
à!%”Ùñ "ð ˆŽùs   ‚A)A+c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r3   r+   )r   r   s   "€r   r   r-   R   s   ø€ ÷ %ñ %™(¡5�/ñ %r   c                óÚ   € V P                   '       g   V P                  4        F  pK  	  V P                  '       g   \        V P                  4      V n        R V n         V P                  4       # ©F)r0   r8   r/   Únextr)   )r   Ú_s   & r   Ú__next__Ú_EntryParser.__next__R   sP   € Ø��ˆØ×(Ñ(Ö*�Ùñ +à�~�~ˆ~Ü! $§-¡-Ó0ˆDŒNØˆŒØ×"Ñ"Ó$Ð$r   )r0   r)   r/   N)
r   r   r   r   r   r   r8   r?   r    r!   ©r   s   @r   r'   r'   9   s(   ø‡ € ñ÷ð ÷
ð ÷%ö %r   r'   c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r	   ÚfilenameÚ	extensionr*   ©r   )r   s   "r   r   r   \   s!   € ÷ $ñ $¬ð $¼ð $Äñ $r   c                 ó@   € V P                  V4      '       d   V # V  V 2# ©N)Úendswith)rC   rD   s   &&r   Ú_add_extension_if_missingrI   \   s'   € Ø×Ñ˜×#Ò#ØˆØˆZ˜	�{Ð#Ð#r   c                ó\   € V ^8„  d   QhR\         \        ,          R\        \        ,          /# ©r	   Úentryr*   )r   r,   r   )r   s   "r   r   r   b   s"   € ÷ ?ñ ?œ8¤E�?ð ?¬x¼­ñ ?r   c              #   ó¶   "  € V  F  p \         P                  ! V4      x € K  	  R #   \        P                   d   p\	        \        T4      4      R hR p?ii ; i5irG   )Úbase64Ú	b64decodeÚbinasciiÚErrorr   r   )rL   r7   Úerrors   &  r   Ú_base64_decoderrS   b   sK   é € Ûˆð	?Ü×"Ò" 4Ó(Ô(ó øô �~‰~ô 	?Ü(¬¨U«Ó4¸$Ð>ûð	?üs$   ‚A‰'¡A§A¼AÁAÁAc                óx   € V ^8„  d   QhR\         R\        R\        P                  P                  P
                  /# ©r	   ÚnameÚvaluer*   )r   r,   ÚemailÚmimeÚbaseÚMIMEBase)r   s   "r   r   r   j   s/   € ÷ ñ ¬ð ´Eð ¼e¿j¹j¿o¹o×>VÑ>Vñ r   c                 ó  € \        W4      w  r#\        W4      p\        P                  P                  P                  R V4      pVP                  RRVR7       VP                  V4       \        P                  P                  V4       V# )ÚapplicationúContent-DispositionÚ
attachment©rC   )
Ú_derive_compressionrI   rX   rY   rZ   r[   Ú
add_headerÚset_payloadÚencodersÚencode_base64)rV   rW   Úmime_subtyperD   rC   r_   s   &&    r   Ú_create_compressed_attachmentrg   j   so   € Ü1°$Ó>Ñ€LÜ(¨Ó9€HÜ—‘—‘×)Ñ)¨-¸ÓF€JØ×ÑÐ/°ÈÐÔQØ×Ñ˜5Ô!Ü	‡N�N× Ñ  Ô,ØÐr   c                óx   € V ^8„  d   QhR\         R\         R\        P                  P                  P                  /# rU   )r   rX   rY   rZ   r[   )r   s   "r   r   r   t   s/   € ÷ ñ ¤#ð ¬cð ´e·j±j·o±o×6NÑ6Nñ r   c                 óœ   € \        V R 4      p\        P                  P                  P	                  VRR7      pVP                  RRVR7       V# )z.txtúUTF-8©Ú_charsetr^   r_   r`   )rI   rX   rY   ÚtextÚMIMETextrb   )rV   rW   rC   r_   s   &&  r   Ú_create_text_attachmentro   t   sG   € Ü(¨¨vÓ6€HÜ—‘—‘×)Ñ)¨%¸'Ð)ÓB€JØ×ÑÐ/°ÈÐÔQØÐr   c                ó^   € V ^8„  d   QhR\         R\        R\        \         \         3,          /# rU   )r   r,   Útuple)r   s   "r   r   r   {   s)   € ÷ 8ñ 8œcð 8¬%ð 8´E¼#¼s¸(µOñ 8r   c                 ó’   € VP                  \        4      '       d   R# VP                  \        4      '       d   R# \        RV  24      h)ÚgzipzUnknown compression for )rs   ú.gz)Úzstdz.zst)r6   ÚGZIP_HEADER_STARTÚZSTANDARD_MAGIC_NUMBERÚ
ValueError)rV   rW   s   &&r   ra   ra   {   sE   € Ø×ÑÔ)×*Ò*ØÐØ×ÑÔ.×/Ò/ØÐÜ
Ð/°¨vÐ6Ó
7Ð7r   c                ó0   € V ^8„  d   QhR\         R\         /# )r	   r7   r*   ©r,   )r   s   "r   r   r   ƒ   s   € ÷ ñ œUð ¤uñ r   c                óZ  € V ^,          p^
pV^,          '       d   W V,          ^,           ,          pV^,          '       d"   W,          ^ 8w  d   V^,          pK  V^,          pV^,          '       d"   W,          ^ 8w  d   V^,          pK  V^,          pV^,          '       d
   V^,          pWR # )z0Strip gzip header from line and return the rest.Nr   )r7   ÚflagsÚoffsets   &  r   Ú_strip_gzip_headerr~   ƒ   s�   € à��G€EØ€FØˆq‡y„yØ�v•, Õ"Õ"ˆØˆq‡y„yØ�l˜aÔØ�a�KŠFØ�!�ˆØˆr‡z„zØ�l˜aÔØ�a�KŠFØ�!�ˆØˆq‡y„yØ�!�ˆà�ˆ=Ðr   c                óh   € V ^8„  d   QhR\         \        ,          R\        R\         \        ,          /# )r	   rL   Ú
first_liner*   r+   )r   s   "r   r   r   —   s)   € ÷ $ñ $œ¤%�ð $´eð $ÄÌÅñ $r   c              #   ó.  "  € VP                  4       pVx € \        V4      pV  Fk  pV^ 8”  d   Rx € VP                  R4      '       d#   V^R x € V\        V4      ^,
          ,          pKG  VR,          x € V\        V4      ^,
          ,          pKm  	  R# 5i)é    ó   
:é   NNNéÿÿÿÿ)ÚstripÚlenrH   )rL   r€   r7   Úlengths   &&  r   Ú_text_decoderr‰   —   s   é € Ø×ÑÓ€DØ
‚JÜ�‹Y€FÛˆØ�AŒ:ØŠKØ�=‰=˜×ÒØ�q˜�*ÒØ”c˜$“i !•mÕ#ŠFà�r•(ŠNØ”c˜$“i !•mÕ#ŠFó ùs   ‚ABÁ	ABc                  ór   €  ^ RI p V P                  4       #   \         d   p\        RT R24      RhRp?ii ; i)r‚   Nz$Failed to import zstandard library: z#. Please install python3-zstandard.)Ú	zstandardÚImportErrorÚRuntimeErrorÚZstdDecompressor)r‹   rR   s     r   Ú_get_zstandard_decompressorr�   ¦   sP   € ðãð ×%Ñ%Ó'Ð'øô ô ÜØ2°5°'ð :1ð 2ó
ð ð	ûðús   ‚ –6¡1±6c                óh   € V ^8„  d   QhR\         \        ,          R\        R\         \        ,          /# )r	   rL   Úfirst_blockr*   r+   )r   s   "r   r   r   ²   s)   € ÷ -ñ -œh¤u�oð -¼Eð -ÄhÌuÅoñ -r   c              #   óœ   "  € \        4       P                  4       pVP                  V4      x € V  F  pVP                  V4      x € K  	  R # 5irG   )r�   ÚdecompressobjÚ
decompress)rL   r‘   ÚdecompressorÚblocks   &&  r   Ú_zstandard_decoderr—   ²   sB   é € Ü.Ó0×>Ñ>Ó@€LØ
×
!Ñ
! +Ó
.Ò.ÛˆØ×%Ñ% eÓ,Ô,ó ùs   ‚A
Ac                óˆ   € V ^8„  d   QhR\         \        ,          R\        \        \         \        ,          \        3,          /# rK   )r   r,   rq   r   Úbool)r   s   "r   r   r   ¹   s.   € ÷ /ñ /œ¤�ð /¬E´#´xÄµÌÐ2LÕ,Mñ /r   c                ó‚  € \        V 4      p VP                  R^4      w  r# TP	                  R4      pTP                  4       R8H  pT'       d   \        T 4      pM\        Y4      pYGT3#   \         d#    \        RTP	                  RR7      : R24      Rhi ; i  \
         d   p\        \        T4      4      RhRp?ii ; i)	z³Parse the given entry and return key and value.

Return the key and a line iterator over the value. Also return a
boolean if the entry is base64 encoded (i.e. is a binary value).
ó   :zLine Úbackslashreplace)Úerrorsz? does not contain a colon for separating the key from the valueNÚASCIIs   base64)
r=   Úsplitrx   r   ÚdecodeÚUnicodeDecodeErrorr   r†   rS   r‰   )rL   r€   Úkey_in_bytesÚfirst_line_valueÚkeyrR   Úbase64_encodedÚvalue_iterators   &       r   Ú_parse_entryr§   ¹   sÙ   € ô �e“€JðØ)3×)9Ñ)9¸$ÀÓ)BÑ&ˆð;Ø×!Ñ! 'Ó*ˆð &×+Ñ+Ó-°Ñ:€NßÜ(¨Ó/‰ä& uÓ?ˆà Ð.Ð.øô% ô Ü$Ø�J×%Ñ%Ð-?Ð%Ó@ÑCð&ð'ó
ð ð		ðûô ô ;Ü$¤S¨£ZÓ0°dÐ:ûð;ús"   �A) ¢B Á)-BÂB>Â$B9Â9B>c                   ól   a € ] tR t^×t o RtV 3R lR ltR tV 3R lR ltV 3R lR ltV 3R	 lt	R
t
V tR# )ÚCompressedFilezƒRepresents a ProblemReport value which points to a compressed file.

The file is expected to be compressed with gzip or zstandard.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r	   rC   r*   NrE   )r   r   s   "€r   r   ÚCompressedFile.__annotate__à   s   ø€ ÷ :ñ :¡ð :¨ñ :r   c                óH   € Wn         \        V P                   R 4      V n        R# )ÚrbN)rC   ÚopenÚ_compressed_file)r   rC   s   &&r   r   ÚCompressedFile.__init__à   s   € Ø Œä $ T§]¡]°DÓ 9ˆÖr   c                ób   € \        V R 4      '       d   V P                  P                  4        R# R# )r¯   N)Úhasattrr¯   Úclose©r   s   &r   Ú__del__ÚCompressedFile.__del__å   s'   € Ü�4Ð+×,Ò,Ø×!Ñ!×'Ñ'Ö)ñ -r   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r3   r+   )r   r   s   "€r   r   r«   é   s   ø€ ÷ ñ ¡©%¥ñ r   c              #  ój   "  €  V P                   P                  \        4      pV'       g   R# Vx € K0  5i)z:Iterate over the compressed content of the file in chunks.N)r¯   ÚreadÚ
CHUNK_SIZE)r   r–   s   & r   Úiter_compressedÚCompressedFile.iter_compressedé   s)   é € àØ×)Ñ)×.Ñ.¬zÓ:ˆEßÙØŒKùs   ‚(3«3c                ó    <€ V ^8„  d   QhRS[ /# r3   ©r™   )r   r   s   "€r   r   r«   ñ   s   ø€ ÷ Eñ E™Tñ Er   c                ód   € \         P                  ! V P                  \         P                  RR7      # )z?Check if the compressed file is readable by the effective user.T)Úeffective_ids)ÚosÚaccessrC   ÚR_OKr´   s   &r   Úis_readableÚCompressedFile.is_readableñ   s   € ä�yŠy˜Ÿ™¬¯©¸tÔDÐDr   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r	   rC   rE   )r   r   s   "€r   r   r«   ×   s   ø‡ ‚ ñ �Mò r   )r¯   rC   N)r   r   r   r   r   r   rµ   r»   rÄ   Ú__annotate_func__r    r!   rA   s   @r   r©   r©   ×   s6   ø‡ € ñ÷:ð :ò
*÷ð ÷Eð E÷5 ƒ r   r©   c                   óì   a € ] tR t^öt o RtRV 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 lt]	V 3R lR l4       t
V 3R lR ltV 3R lR lt]3V 3R lR lltV 3R lR ltV 3R lR ltRtV tR# )ÚCompressedValuezÅRepresent a ProblemReport value which is gzip or zstandard compressed.

By default, compressed values are in gzip format. Earlier versions of
problem_report used zlib format (without gzip header).
Nc                óZ   <€ V ^8„  d   QhRS[ R,          RS[R,          RS[ R,          RR/# )r	   rW   NrV   Úcompressed_valuer*   )r,   r   )r   r   s   "€r   r   ÚCompressedValue.__annotate__ý   s?   ø€ ÷ 
"ñ 
"á�t�|ð
"ñ �D�jð
"ñ   $�,ð	
"ð
 
ñ
"r   c                óT   € W0n         W n        V'       d   V P                  V4       R# R# )zAInitialize an empty CompressedValue object with an optional name.N)rË   rV   Ú	set_value)r   rW   rV   rË   s   &&&&r   r   ÚCompressedValue.__init__ý   s#   € ð !1ÔØŒ	ßØ�N‰N˜5Ö!ñ r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r	   rW   r*   Nrz   )r   r   s   "€r   r   rÌ   	  s   ø€ ÷ /ñ /™uð /¨ñ /r   c                ó  € \         P                  ! 4       p\        P                  ! V P                  RV^ R7      ;_uu_ 4       pVP                  V4       RRR4       VP                  4       V n        R#   + '       g   i     L'; i)zSet uncompressed value.Úwb©ÚmodeÚfileobjÚmtimeN)ÚioÚBytesIOrs   ÚGzipFilerV   ÚwriteÚgetvaluerË   )r   rW   ÚoutÚgzs   &&  r   rÎ   ÚCompressedValue.set_value	  sQ   € ä�jŠj‹lˆÜ�]Š]˜4Ÿ9™9¨4¸ÀA×FÕFÈ"Ø�H‰H�UŒO÷ Gà #§¡£ˆÖ÷ G×Fús   ÁA3Á3B	c                ó    <€ V ^8„  d   QhRS[ /# r3   ©Úint)r   r   s   "€r   r   rÌ     s   ø€ ÷ *ñ *¡Sñ *r   c                óL   € V P                   f   Q h\        V P                   4      # )z=Return size of the compressed (but not base64 encoded) value.)rË   r‡   r´   s   &r   Úget_compressed_sizeÚ#CompressedValue.get_compressed_size  s%   € à×$Ñ$Ò0Ð0Ð0Ü�4×(Ñ(Ó)Ð)r   c                ó    <€ V ^8„  d   QhRS[ /# r3   rà   )r   r   s   "€r   r   rÌ     s   ø€ ÷ ;ñ ;¡#ñ ;r   c                óL   € V P                  4       ^,           ^,          ^,          # )zýReturn the size needed on disk to store the compressed value.

The compressed value will be base64 encoded when written to disk
which adds an overhead of 1/3 plus up to 2 bytes of padding. Additional
spaces and newlines are ignored in this calculation.
)rã   r´   s   &r   Úget_on_disk_sizeÚ CompressedValue.get_on_disk_size  s"   € ð ×)Ñ)Ó+¨aÕ/°AÕ5¸Õ:Ð:r   c                óF   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          /# rK   r+   )r   r   s   "€r   r   rÌ     s#   ø€ ÷ #ñ #©±­ð #¹HÁU½Oñ #r   c              #  óü  "  € \        V R4      pVf   R# VP                  \        4      '       d   \        W4       Rj  x€L
  R# VP                  \        4      '       dC   \
        P                  ! \
        P                  ) 4      pVP                  \        V4      4      x € M(\
        P                  ! 4       pVP                  V4      x € V  F  pVP                  V4      x € K  	  VP                  4       x € R#  L»5i)z5Decode the given compressed value (iterator version).N)r=   r6   rw   r—   rv   Úzlibr“   Ú	MAX_WBITSr”   r~   Úflush)rL   r–   r•   s   &  r   Údecode_compressed_streamÚ(CompressedValue.decode_compressed_stream  sÍ   é € ô �U˜DÓ!ˆØŠ=ÙØ×ÑÔ2×3Ò3Ü)¨%Ó7×7Ð7Ùà×ÑÔ-×.Ò.Ü×-Ò-¬t¯~©~¨oÓ>ˆLØ×)Ñ)Ô*<¸UÓ*CÓDÓDô  ×-Ò-Ó/ˆLØ×)Ñ)¨%Ó0Ò0ãˆEØ×)Ñ)¨%Ó0Ô0ñ à× Ñ Ó"Ô"ñ 8ùs   ‚-C<°C<¾C:¿ C<Á BC<c                ó    <€ V ^8„  d   QhRS[ /# r3   rz   )r   r   s   "€r   r   rÌ   4  s   ø€ ÷ 	6ñ 	6™5ñ 	6r   c                ó|  € V P                   f   Q hV P                   P                  \        4      '       d$   \        4       P	                  V P                   4      # V P                   P                  \
        4      '       d!   \        P                  ! V P                   4      # \        P                  ! V P                   4      # )zReturn uncompressed value.)rË   r6   rw   r�   r”   rv   rs   rë   r´   s   &r   Ú	get_valueÚCompressedValue.get_value4  sˆ   € à×$Ñ$Ò0Ð0Ð0à× Ñ ×+Ñ+Ô,B×CÒCÜ.Ó0×;Ñ;¸D×<QÑ<QÓRÐRØ× Ñ ×+Ñ+Ô,=×>Ò>Ü—?’? 4×#8Ñ#8Ó9Ð9ä�Š˜t×4Ñ4Ó5Ð5r   c                óH   <€ V ^8„  d   QhRS[ P                  S[,          RR/# ©r	   Úfiler*   N)ÚtypingÚIOr,   )r   r   s   "€r   r   rÌ   ?  s$   ø€ ÷ ;ñ ;™&Ÿ)™)¡EÕ*ð ;¨tñ ;r   c                ó´  € V P                   '       g   Q hV P                   P                  \        4      '       d=   \        4       pVP	                  \
        P                  ! V P                   4      V4       R# V P                   P                  \        4      '       d|   \        P                  ! \
        P                  ! V P                   4      R7      ;_uu_ 4       p VP                  \        4      pV'       g   MVP                  V4       K2   RRR4       R# VP                  \        P                  ! V P                   4      4       R#   + '       g   i     LA; i)z5Write uncompressed value into given file-like object.N)rÕ   )rË   r6   rw   r�   Úcopy_streamr×   rØ   rv   rs   rÙ   r¹   rº   rÚ   rë   r”   )r   rö   r•   rÝ   r–   s   &&   r   rÚ   ÚCompressedValue.write?  sä   € à×$×$Ð$Ð$Ð$à× Ñ ×+Ñ+Ô,B×CÒCÜ6Ó8ˆLØ×$Ñ$¤R§Z¢Z°×0EÑ0EÓ%FÈÔMÙà× Ñ ×+Ñ+Ô,=×>Ò>Ü—’¤r§z¢z°$×2GÑ2GÓ'H×IÕIÈRØØŸG™G¤JÓ/�Eß ØØ—J‘J˜uÖ%Ø÷ JÑIð 	�
‰
”4—?’? 4×#8Ñ#8Ó9Ö:÷ J×Iús   ÃEÃ7EÅE	c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r	   Ú
chunk_sizer*   )rá   r   r,   )r   r   s   "€r   r   rÌ   T  s   ø€ ÷ <ñ <©#ð <¹xÉ½ñ <r   c              #  ó¨   "  € V P                   '       g   Q h\        ^ V P                  4       V4       F  pV P                   W"V,            x € K  	  R# 5i)z.Iterate over the compressed content in chunks.N)rË   Úrangerã   )r   rý   Úis   && r   r»   ÚCompressedValue.iter_compressedT  sI   é € à×$×$Ð$Ð$Ð$Ü�q˜$×2Ñ2Ó4°jÖAˆAØ×'Ñ'¨°
­NÐ;Ô;ó Bùs   ‚AAc                ó    <€ V ^8„  d   QhRS[ /# r3   rà   )r   r   s   "€r   r   rÌ   Z  s   ø€ ÷ 
ñ 
™ñ 
r   c                óT  € V P                   '       g   Q hV P                   P                  \        4      '       d5   \        \        P
                  ! RV P                   RR 4      ^ ,          4      # ^ pV P                  V P                  4       4       F  pV\        V4      ,          pK  	  V# )z$Return length of uncompressed value.ú<LNéüÿÿÿ)	rË   r6   rv   rá   ÚstructÚunpackrî   r»   r‡   )r   rˆ   r–   s   &  r   Ú__len__ÚCompressedValue.__len__Z  s�   € à×$×$Ð$Ð$Ð$Ø× Ñ ×+Ñ+Ô,=×>Ò>Ü”v—}’} T¨4×+@Ñ+@ÀÀÐ+EÓFÀqÕIÓJÐJð ˆØ×2Ñ2°4×3GÑ3GÓ3IÖJˆEØ”c˜%“jÕ ŠFñ Kàˆr   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r3   )Úlistr,   )r   r   s   "€r   r   rÌ   f  s   ø€ ÷ -ñ -™D¡�Kñ -r   c                ó>   € V P                  4       P                  4       # )z.Behaves like splitlines() for a normal string.)rò   Ú
splitlinesr´   s   &r   r  ÚCompressedValue.splitlinesf  s   € à�~‰~Ó×*Ñ*Ó,Ð,r   )rË   rV   )NNN)r   r   r   r   r   r   rÎ   rã   rç   Ústaticmethodrî   rò   rÚ   rº   r»   r  r  r    r!   rA   s   @r   rÉ   rÉ   ö   s}   ø‡ € ñ÷
"ò 
"÷/ð /÷*ð *÷
;ð ;ð ÷#ó ð#÷*	6ð 	6÷;ð ;ð* 1;÷ <ò <÷
ð 
÷-ö -r   rÉ   Ú
AnnotationÚArchitectureÚAssertionMessageÚAuditLogÚCheckboxSubmissionÚCrashCounterÚCrashDBÚDateÚDbusErrorAnalysisÚDependenciesÚDesktopFileÚ
DialogBodyÚDisassemblyÚDistroReleaseÚDuplicateSignatureÚExecutablePathÚExecutableTimestampÚFailureÚGLibAssertionMessageÚInterpreterPathÚKernLogÚMachineTypeÚMainClassUrlÚNonfreeKernelModulesÚOopsTextÚOpenFdsÚPackageÚPackageArchitectureÚProblemTypeÚProcCmdlineÚProcCwdÚProcEnvironÚProcMapsÚ
ProcStatusÚ	RegistersÚRespawnCommandÚSegvAnalysisÚSegvAnalysisErrorÚSignalÚ
SignalNameÚSnapTagsÚSourcePackageÚ
StackTraceÚ
StacktraceÚStacktraceSourceÚStacktraceTopÚTagsÚThreadStacktraceÚTitleÚ	TracebackÚUnameÚUnreportableReasonÚ
UserGroupsÚ_KnownReportÚ_PythonExceptionQualifierzdmi.bios.versionc                   óÞ  a a€ ] tR tRt oRtR-V3R lV 3R llltV3R lR ltR.V3R lR lltV3R	 lR
 ltV3R lR lt	V3R lR lt
V3R lR lt]V3R lR l4       t]V3R lR l4       tR/V3R lR lltR0V3R lR lltV3R lR ltV3R lR lt]V3R lR l4       tV3R lR  ltV3R! lR" ltR0V3R# lR$ lltR1R% ltV3R& lR' ltV3R( lR) lt]V3R* lR+ l4       tR,tVtV ;t# )2ÚProblemReporti¨  z1Class to store, load, and handle problem reports.c                ó8   <€ V ^8„  d   QhRS[ RS[ R,          RR/# )r	   Úproblem_typeÚdateNr*   rE   )r   r   s   "€r   r   ÚProblemReport.__annotate__«  s'   ø€ ÷ (ñ (¡Sð (¹#À½*ð (ÐPTñ (r   c                ó~   <€ Vf   \         P                  ! 4       p\        SV `  RVRV/4       \	        4       V n        R# )zÆInitialize a fresh problem report.

problem_type can be 'Crash', 'Packaging', 'KernelCrash' or
'KernelOops'. date is the desired date/time string; if
None (default), the current local time is used.
Nr,  r  )ÚtimeÚasctimer   r   ÚsetÚold_keys)r   rJ  rK  r   s   &&&€r   r   ÚProblemReport.__init__«  s6   ø€ ð Š<Ü—<’<“>ˆDÜ‰Ñ˜-¨°v¸tÐDÔEô #&£%ˆŽr   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r	   Útagsr*   N)r   r   )r   r   s   "€r   r   rL  ¹  s   ø€ ÷ 2ñ 2™X¡c�]ð 2¨tñ 2r   c                ó‚   € V P                  4       pVP                  V4      pRP                  \        V4      4      V R&   R# )z/Add tags to the report. Duplicates are dropped.Ú r>  N)Úget_tagsÚunionÚjoinÚsorted)r   rT  Úcurrent_tagsÚnew_tagss   &&  r   Úadd_tagsÚProblemReport.add_tags¹  s4   € à—}‘}“ˆØ×%Ñ% dÓ+ˆØ—x‘x¤ xÓ 0Ó1ˆˆV‹r   c                óÈ   <€ V ^8„  d   QhRS[ P                  S[P                  S[,          ,          RS[S[P                  R,          ,          RS[S[,          R,          RR/# )r	   rö   ÚbinaryÚ
compressedÚ
key_filterNr*   )	rs   rÙ   r÷   rø   r,   r™   ÚLiteralr   r   )r   r   s   "€r   r   rL  ¿  s\   ø€ ÷ 5.ñ 5.á�m‰m™fŸi™i©Õ.Õ.ð5.ñ ‘v—~‘~ lÕ3Õ3ð5.ñ ™S•M DÕ(ð	5.ð
 
ñ5.r   c                ó  € V P                  V4       V P                  P                  4        V'       d   \        V4      pMRp\	        V4       EF  p\        V4      w  rgpVe	   Wd9  d   K  V'       d‹   VRJ d   RV P                  V&   M¢VR8X  d+   \        VRP                  V4      R7      V P                  V&   MqRP                  \        P                  V4      4      p	V P                  Wi4      V P                  V&   M.V P                  VRP                  V4      4      V P                  V&   Vf   Kä  VP                  V4       \        V4      ^ 8X  g   EK   M	  \        V P                  P                  4       4      V n        R# )a“  Initialize problem report from a file-like object.

If binary is False, binary data is not loaded; the dictionary key is
created, but its value will be an empty string. If it is True, it is
transparently uncompressed and available as dictionary byte array
values. If binary is 'compressed', the compressed value is retained,
and the dictionary value will be a CompressedValue object. This is
useful if the compressed value is still useful (to avoid recompression
if the file needs to be written back).

file needs to be opened in binary mode.

If key_filter is given, only those keys will be loaded.

Files are in RFC822 format, but with case sensitive keys.
NFra  r   )rV   rË   )Ú_assert_bin_modeÚdataÚclearrP  r'   r§   rÉ   rY  rî   Ú_try_unicodeÚremover‡   ÚkeysrQ  )
r   rö   r`  rb  Úremaining_keysrL   r¤   r)   r¥   rW   s
   &&&&      r   ÚloadÚProblemReport.load¿  s1  € ð, 	×Ñ˜dÔ#Ø�	‰	�‰ÔßÜ  ›_‰Nà!ˆNä! $×'ˆEÜ,8¸Ó,?Ñ)ˆC˜>ØÒ)¨cÔ.GÙçØ˜U“?Ø%)�D—I‘I˜c’NØ˜|Ô+Ü%4Ø °3·8±8¸HÓ3Eô&�D—I‘I˜c’Nð  ŸH™H¤_×%MÑ%MÈhÓ%WÓX�EØ%)×%6Ñ%6°sÓ%B�D—I‘I˜c’Nð "&×!2Ñ!2°3¸¿¹ÀÓ8JÓ!K�—	‘	˜#‘àÔ)Ø×%Ñ% cÔ*Ü�~Ó&¨!×+Ùñ- (ô0 ˜DŸI™IŸN™NÓ,Ó-ˆŽr   c                ó˜   <€ V ^8„  d   QhRS[ P                  S[P                  S[,          ,          RS[S[,          S[,          RS[RR/# )r	   rö   Úbin_keysÚ	directoryr*   N)rs   rÙ   r÷   rø   r,   r   r   )r   r   s   "€r   r   rL  ö  sN   ø€ ÷ (?ñ (?á�m‰m™fŸi™i©Õ.Õ.ð(?ñ ™3•-¡#Õ%ð(?ñ ð	(?ð
 
ñ(?r   c                ó8  € V P                  V4       \        V\        4      '       d   V.p\        V4      p/ p\	        V4       F¢  p\        V4      w  rxp	Wt9  d   K  W•V&   VP                  V4       V	'       g   K8  \        P                  P                  W74      p
 \        V
R4      ;_uu_ 4       p\        P                  V4       F  pVP                  V4       K  	  RRR4       K¤  	  V'       d   \        RRP                  V4       R24      hRVP!                  4       9   d:   VP#                  4        UUu. uF  w  rïVRJ g   K  VNK  	  ppp\%        V R24      hR#   + '       g   i     EK.  ; i  \         d   p\        RT
 24      ThRp?ii ; iu uppi )	zÂExtract only given binary elements from the problem report.

Binary elements like kernel crash dumps can be very big. This method
extracts directly files without loading the report into memory.
rÒ   Nzunable to open zCannot find z, z
 in reportFz has no binary content)re  Ú
isinstancer   r  r'   r§   ri  rÁ   ÚpathrY  r®   rÉ   rî   rÚ   ÚOSErrorÚKeyErrorÚvaluesÚitemsrx   )r   rö   ro  rp  Úmissing_keysÚ	b64_blockrL   r¤   r)   r¥   Úkey_pathrÜ   r–   rR   ÚitemÚelementrw  s   &&&&             r   Úextract_keysÚProblemReport.extract_keysö  ss  € ð 	×Ñ˜dÔ#ä�h¤×$Ò$Ø �zˆHÜ˜H“~ˆØˆ	ä! $Ö'ˆEÜ,8¸Ó,?Ñ)ˆC˜>ØÔ&Ùà+�c‰NØ×Ñ Ô$ß!Ùä—w‘w—|‘| IÓ3ˆHðGÜ˜( D×)Ô)¨SÜ!0×!IÑ!IÈ(Ö!S˜ØŸ	™	 %Ö(ñ "T÷ *Ñ)ñ (÷$ Ü˜\¨$¯)©)°LÓ*AÐ)BÀ*ÐMÓNÐNØ�I×$Ñ$Ó&Ô&Ø/8¯©Ô/@ÔUÑ/@™m˜dÀGÈuÐDT—T�TÑ/@ˆEÑUÜ ˜wÐ&<Ð=Ó>Ð>ñ '÷ *×)Ñ)ûô ô GÜ °¨zÐ:Ó;ÀÐFûðGüó VsB   ÂE4Â/.EÃE4Ä7
FÅFÅE1Å*E4Å1E4Å4FÅ?FÆFc                ó0   <€ V ^8„  d   QhRS[ S[,          /# r3   ©rP  r   )r   r   s   "€r   r   rL     s   ø€ ÷ ,ñ ,™#™c�(ñ ,r   c                óf   € RV 9  d   \        4       # \        V R,          P                  R4      4      # )zReturn the set of tags.r>  rV  )rP  rŸ   r´   s   &r   rW  ÚProblemReport.get_tags   s+   € à˜ÔÜ“5ˆLÜ�4˜•<×%Ñ% cÓ*Ó+Ð+r   c                ó.   <€ V ^8„  d   QhRS[ R,          /# )r	   r*   Nrà   )r   r   s   "€r   r   rL  &  s   ø€ ÷ ñ ™s T�zñ r   c                óP  € \         P                  ! \         P                  4      p  \         P                  ! \         P                  R4       \	        \
        P                  ! \
        P                  ! V R,          4      4      4      \         P                  ! \         P                  V4       #   \         d*     \         P                  ! \         P                  T4       R# i ; i  \         P                  ! \         P                  T4       i ; i  \         P                   d     R# i ; i)zXGet timestamp (seconds since epoch) from Date field.

Return None if it is not present.
ÚCr  N)
ÚlocaleÚ	getlocaleÚLC_TIMEÚ	setlocalerá   rN  ÚmktimeÚstrptimeru  rQ   )r   Ú
orig_ctimes   & r   Úget_timestampÚProblemReport.get_timestamp&  s¾   € ô ×%Ò%¤f§n¡nÓ5ˆ
ð		ð=Ü× Ò ¤§¡°Ô5Üœ4Ÿ;š;¤t§}¢}°T¸&µ\Ó'BÓCÓDô × Ò ¤§¡°Õ<øô ô Øä× Ò ¤§¡°Ö<ðûô × Ò ¤§¡°Õ<ûÜ�|‰|ô 	Úð	úsB   §AB+ Â%D Â+CÂ6C" Â7%D ÃCÃC" Ã"'D	Ä	D ÄD%Ä$D%c                ó    <€ V ^8„  d   QhRS[ /# r3   r¾   )r   r   s   "€r   r   rL  8  s   ø€ ÷ %ñ %¡Dñ %r   c                ó(   € RV P                  4       9   # )znCheck if the report has any keys which were not loaded.

This could happen when using binary=False in load().
N)rv  r´   s   &r   Úhas_removed_fieldsÚ ProblemReport.has_removed_fields8  s   € ð
 �t—{‘{“}Ñ$Ð$r   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# )r	   Ústringr*   )r,   r   r™   )r   r   s   "€r   r   rL  @  s   ø€ ÷ ñ ™%¡#�+ð ©$ñ r   c                óš   € \        V \        4      '       d5   V  F.  pV^ 8  g   K  \        V4      P                  4       '       d   K-   R# 	  R# )z0Check if the given strings contains binary data.TF)rr  r,   ÚchrÚisspace)r”  Úcs   & r   Ú	is_binaryÚProblemReport.is_binary?  s:   € ô �fœe×$Ò$Û�Ø�r–6¤# a£&§.¡.×"2Ô"2Úñ ñ r   c                ó<   <€ V ^8„  d   QhRS[ RS[RS[S[ ,          /# )r	   r¤   rW   r*   )r   r,   )r   r   s   "€r   r   rL  I  s&   ø€ ÷ 	ñ 	™sð 	©5ð 	±U¹Sµ[ñ 	r   c                ó¶   € V\         9   d   VP                  R4      # V P                  V4      '       g    VP                  R4      # V#   \         d    Tu # i ; i)z*Try to convert bytearray value to Unicode.rj   )Ú_STRING_KEYSr    r™  r¡   )Úclsr¤   rW   s   &&&r   rh  ÚProblemReport._try_unicodeH  s[   € ð ”,ÔØ—<‘< Ó(Ð(Ø�}‰}˜U×#Ò#ðØ—|‘| GÓ,Ð,ð ˆøô &ô Ø’ðús   µA ÁAÁAc                ój   <€ V ^8„  d   QhRS[ S[,          R,          RS[S[S[S[3,          ,          /# )r	   rj  Nr*   )r   r   r   rq   ÚProblemReportValue)r   r   s   "€r   r   rL  T  s6   ø€ ÷ #ñ #Ù™S•M DÕ(ð#á	‘%™Ñ/Ð/Õ0Õ	1ñ#r   c              #  óˆ  "  € V'       d4   \        \        V P                  4       4      \        V4      ,          4      pM\        V P                  4       4      pR F.  pW!9   g   K  VP                  V4       VP	                  ^ V4       K0  	  V F/  pVP                  R4      '       d   K  W,          pVf   K*  W#3x € K1  	  R# 5i)aO  Iterate over all non-internal items sorted.

The most interesting fields will be returned first. The remaining
items will be returned in alphabetical order. Keys starting with
an underscore are considered internal and are skipped. Also values
that are None will be skipped.

If keys is provided, only those keys will be iterated over.
r>   N)rA  r:  r@  r,  r*  r  )rZ  rP  rj  ri  Úinsertr6   )r   rj  r¤   rW   s   &&  r   Úsorted_itemsÚProblemReport.sorted_itemsT  sš   é € ÷ Üœ#˜dŸi™i›kÓ*¬S°«YÕ6Ó7‰Dä˜$Ÿ)™)›+Ó&ˆDó
ˆCð Ž{Ø—‘˜CÔ Ø—‘˜A˜sÖ#ñ
ó ˆCà�~‰~˜c×"Ò"ÙØ•IˆEØŠ}ÙØ�*Ôó ùs   ‚ACÁ$ACc                óN   <€ V ^8„  d   QhRS[ P                  S[,          RS[RR/# )r	   rö   Úonly_newr*   N)r÷   rø   r,   r™   )r   r   s   "€r   r   rL  y  s0   ø€ ÷ Dñ D™&Ÿ)™)¡EÕ*ð D±dð DÀtñ Dr   c                ó¶   € V P                  V4       V P                  V4      w  r4V F  pV P                  W4       K  	  V F  pV P                  W4       K  	  R# )aK  Write information into the given file-like object.

If only_new is True, only keys which have been added since the last
load() are written (i. e. those returned by new_keys()).

If a value is a string, it is written directly. Otherwise it must be a
tuple of the form (file, encode=True, limit=None, fail_on_empty=False).
The first argument can be a file name or a file-like object,
which will be read and its content will become the value of this key.
'encode' specifies whether the contents will be
gzip compressed and base64-encoded (this defaults to True). If limit is
set to a positive integer, the file is not attached if it's larger
than the given limit, and the entire key will be removed. If
fail_on_empty is True, reading zero bytes will cause an OSError.

file needs to be opened in binary mode.

Files are written in RFC822 format.
N)re  Ú_get_sorted_keysÚ_write_ascii_itemÚ)_write_binary_item_compressed_and_encoded)r   rö   r§  ÚasckeysÚbinkeysÚks   &&&   r   rÚ   ÚProblemReport.writey  sW   € ð( 	×Ñ˜dÔ#à×0Ñ0°Ó:ÑˆãˆAØ×"Ñ" 4Ö+ñ ó ˆAØ×:Ñ:¸4ÖCó r   c                ó\   <€ V ^8„  d   QhRS[ RS[S[S[,          S[S[,          3,          /# )r	   r§  r*   )r™   rq   r  r   )r   r   s   "€r   r   rL  —  s-   ø€ ÷  ñ  ©ð  ±%¹¹S½	Á4ÉÅ9Ð8LÕ2Mñ  r   c                óº  € . p. pV P                   P                  4        Fí  pV'       d   W@P                  9   d   K  V P                   V,          p\        V\        \
        ,          4      '       d>   V P                  V4      '       d   VP                  V4       K{  VP                  V4       KŽ  \        V\        \        34      '       g3   \        V4      ^8¼  d#   V^,          '       g   VP                  V4       KÜ  VP                  V4       Kï  	  VP                  4        RV9   d$   VP                  R4       VP                  ^ R4       VP                  4        W#3# )ziSort keys into ASCII non-ASCII/binary attachment ones, so that
the base64 ones appear last in the report
r,  )rf  rj  rQ  rr  r,   r   r™  Úappendr©   rÉ   r‡   Úsortri  r£  )r   r§  r¬  r­  r®  Úvs   &&    r   r©  ÚProblemReport._get_sorted_keys—  sö   € ð ˆØˆØ—‘—‘Ö!ˆAß˜A§¡Ô.ÙØ—	‘	˜!•ˆAÜ˜!œU¤S�[×)Ò)Ø—>‘> !×$Ò$Ø—N‘N 1Ö%à—N‘N 1Ö%ä˜q¤>´?Ð"C×DÒDÜ˜“F˜a”KØ˜!Ÿœð —‘˜qÖ!à—‘˜qÖ!ñ# "ð& 	�‰ŒØ˜GÔ#Ø�N‰N˜=Ô)Ø�N‰N˜1˜mÔ,Ø�‰ŒØÐÐr   c                óN   <€ V ^8„  d   QhRS[ P                  S[,          RS[RR/# ©r	   rö   r¤   r*   N©r÷   rø   r,   r   )r   r   s   "€r   r   rL  ·  s+   ø€ ÷ %ñ %¡f§i¡i±Õ&6ð %¹Sð %ÀTñ %r   c                óî  € V P                   V,          p\        V\        \        ,          4      '       gù   \	        V4      ^8¼  d   V^,          e   V^,          pMRp\	        V4      ^8¬  ;'       d
    V^,          p\        V^ ,          R4      '       d   V^ ,          P                  4       pM4\        V^ ,          R4      ;_uu_ 4       pVP                  4       pRRR4       V'       d#   \	        V4      ^ 8X  d   \        RV,           4      hVe    \	        V4      V8”  d   V P                   V R# \        V\        4      '       d   VP                  R4      pVP                  VP                  R4      4       RV9   d4   VP                  R4       VP                  VP                  RR	4      4       M"VP                  R
4       VP                  V4       VP                  R4       R#   + '       g   i     EL; i)é   Nr¹   r­   údid not get any data for field rj   rž   rƒ   s   :
 ó   
 s   : )rf  rr  r,   r   r‡   r²   r¹   r®   rt  ÚencoderÚ   Úreplace)r   rö   r¤   r´  ÚlimitÚfail_on_emptyÚfs   &&&    r   rª  ÚProblemReport._write_ascii_item·  sg  € Ø�I‰I�c�Nˆô ˜!œU¤S�[×)Ò)Ü�1‹v˜Œ{˜q �tÒ/Ø˜!�‘à�ä ›F a™K×0Ð0¨A¨a­DˆMä�q˜•t˜V×$Ò$Ø�a•D—I‘I“K‘ä˜!˜A�$ ×%Ô%¨ØŸ™›�A÷ &÷ ¤ Q£¨1¤ÜÐ?À#ÕEÓFÐFàÒ ¤S¨£V¨e¤^Ø—I‘I˜c�NÙä�aœ×Òà—‘˜Ó!ˆAà�
‰
�3—:‘:˜gÓ&Ô'Ø�AŒ:à�J‰J�wÔØ�J‰J�q—y‘y ¨Ó/Õ0à�J‰J�uÔØ�J‰J�qŒMØ�
‰
�5Ö÷- &×%Ð%ús   ÃG#Ç#G4	c                ód   <€ V ^8„  d   QhRS[ P                  S[,          RS[RS[S[,          RR/# )r	   rö   r¤   Úchunksr*   N)r÷   rø   r,   r   r   )r   r   s   "€r   r   rL  ß  s:   ø€ ÷ ñ Ù�i‰i™ÕðÙ%(ðÙ2:¹5µ/ðà	ñr   c                ór  € V P                  4       p V P                  V R2P                  R4      4       V F9  pV P                  R4       V P                  \        P                  ! V4      4       K;  	  V P                  R4       R#   \
         d%    T P                  T4       T P                  T4       h i ; i)zCWrite out binary chunks as a base64-encoded RFC822 multiline field.z: base64rž   r¼  rƒ   N)ÚtellrÚ   r½  rN   Ú	b64encodeÚ	ExceptionÚseekÚtruncate)rö   r¤   rÄ  Úreset_positionÚchunks   &&&  r   Ú!_write_binary_item_base64_encodedÚ/ProblemReport._write_binary_item_base64_encodedÞ  s—   € ð
 Ÿ™›ˆð		Ø�J‰J˜#˜˜hÐ'×.Ñ.¨wÓ7Ô8Û�Ø—
‘
˜6Ô"Ø—
‘
œ6×+Ò+¨EÓ2Ö3ñ  ð �J‰J�uÖøÜô 	Ø�I‰I�nÔ%Ø�M‰M˜.Ô)Øð	ús   ’A3B Â/B6c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r	   r¤   r*   )r   r   r,   )r   r   s   "€r   r   rL  ï  s$   ø€ ÷ Jñ J©sð J±yÁÕ7Gñ Jr   c           	   #  ó  "  € V P                   V,          p\        V\        \        34      '       d   VP	                  4        Rj  x€L
  R# \
        R,           VP                  R4      ,           R,           pVx € \        P                  ! R4      p\        P                  ! ^\        P                  \        P                  ) \        P                  ^ 4      p^ p\        V\        4      '       d   Q h\        V\        4      '       dH   V\        V4      ,          p\        P                  ! W$4      pVP!                  V4      pV'       d   Vx € EMVRp\        V4      ^8¼  d   V^,          e
   V^,          p\#        V^ ,          R4      '       d   V^ ,          p	M\%        V^ ,          R4      p	 V	P'                  \(        4      p
V\        V
4      ,          p\        P                  ! W¤4      pVe   Wh8”  d   V P                   V \+        R4      hV
'       d"   VP!                  V
4      pV'       d   Vx € K‡  K‰   \#        T^ ,          R4      '       g   T	P-                  4        \        T4      ^8¼  d8   T^,          '       d)   T^ 8X  d"   \/        R	T R
\        T^ ,          4       24      hVP1                  4       p
V
\2        P4                  ! RVR,          4      ,          p
V
\2        P4                  ! RVR,          4      ,          p
V
x € R#  EL½5i)zýGenerator taking the value out of self.data and outputing it
in compressed chunks of binary data.

Throws a _SizeLimitExceeded exception if the value exceeds its specified
size limit, in which case it will also remove the value from self.data entirely.
Ns       ÿrj   ó    r   r¹   r­   z,Binary data bigger than the limit ({limit}b)r»  z from r  l   ÿÿ )rf  rr  r©   rÉ   r»   rv   r½  rë   Úcrc32ÚcompressobjÚDEFLATEDrì   ÚDEF_MEM_LEVELr   r,   r‡   Úcompressr²   r®   r¹   rº   r%   r³   rt  rí   r  Úpack)r   r¤   rW   Úgzip_headerÚcrcÚbcÚsizeÚoutblockr¿  rÁ  r–   s   &&         r   Ú_generate_compressed_chunksÚ)ProblemReport._generate_compressed_chunksï  sk  é € ð —	‘	˜#•ˆÜ�eœn¬oÐ>×?Ò?Ø×,Ñ,Ó.×.Ð.ÙäØ-õ.à�j‰j˜Ó!õ"ð õð 	ð Òä�jŠj˜‹oˆÜ×Ò˜a¤§¡´·±°Ä×ASÑASÐUVÓWˆØˆô ˜e¤S×)Ò)Ð)Ð)Ü�eœU×#Ò#Ø”C˜“JÕˆDÜ—*’*˜UÓ(ˆCØ—{‘{ 5Ó)ˆHßØ’ùð ˆEÜ�5‹z˜QŒ 5¨¥8Ò#7Ø˜a��ä�u˜Q•x ×(Ò(Ø˜!•H‘ô ˜˜q� 4Ó(�ØØŸ™œzÓ*�Øœ˜E›
Õ"�Ü—j’j Ó,�ØÒ$Ø”|Ø ŸI™I c˜NÜ0ØJóð ÷ Ø!Ÿ{™{¨5Ó1�HßØ&œñ  ð Ü˜5 �8 V×,Ò,Ø—‘”	ä�5‹z˜QŒ 5¨§8¤8Ø˜1”9Ü!Ø9¸#¸¸fÄSÈÈqÍÃ]ÀOÐTóð ð
 —‘“
ˆà”—’˜T 3¨Õ#3Ó4Õ4ˆØ”—’˜T 4¨*Õ#4Ó5Õ5ˆØŒò /ùs'   ‚ALÁLÁG	LÈLÈ)ALÉ:B	Lc                óN   <€ V ^8„  d   QhRS[ P                  S[,          RS[RR/# r·  r¸  )r   r   s   "€r   r   rL  ;  s.   ø€ ÷ 
ñ 
Ù—I‘I™eÕ$ð
Ù+.ð
à	ñ
r   c                ón   €  V P                  WV P                  V4      4       R#   \         d     R# i ; i)z?Write the binary keys with gzip compression and base64 encodingN)rÍ  rÝ  r%   )r   rö   r¤   s   &&&r   r«  Ú7ProblemReport._write_binary_item_compressed_and_encoded;  s9   € ð	Ø×2Ñ2Ø˜4×;Ñ;¸CÓ@öøô "ô 	âð	ús   ‚!% ¥4³4c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r	   Ú
reportfileÚ
keep_timesr*   N)r   r™   )r   r   s   "€r   r   rL  G  s"   ø€ ÷ -ñ -©#ð -¹4ð -ÈDñ -r   c                ó>  € \         P                  ! V4      p \        VR4      ;_uu_ 4       p\         P                  ! V^ 4       V P	                  V4       RRR4       V'       d-   \         P
                  ! WP                  VP                  34       \         P                  ! WP                  4       R#   + '       g   i     Lf; i  T'       d-   \         P
                  ! YP                  TP                  34       \         P                  ! YP                  4       i ; i)zùAdd this report's data to an already existing report file.

The file will be temporarily chmod'ed to 000 to prevent frontends
from picking up a hal-updated report file. If keep_times
is True, then the file's atime and mtime restored after updating.
ÚabN)	rÁ   Ústatr®   ÚchmodrÚ   ÚutimeÚst_atimeÚst_mtimeÚst_mode)r   rã  rä  ÚstÚreports   &&&  r   Úadd_to_existingÚProblemReport.add_to_existingG  s«   € ô �WŠW�ZÓ ˆð	-Ü�j $×'Ô'¨6Ü—’˜ QÔ'Ø—
‘
˜6Ô"÷ (÷ Ü—’˜§k¡k°2·;±;Ð%?Ô@Ü�HŠH�Z§¡Ö,÷ (×'û÷ Ü—’˜§k¡k°2·;±;Ð%?Ô@Ü�HŠH�Z§¡Õ,ús#   ˜C ¬)B3ÁC Â3C	Â>C ÃADc                ó¢	  € V P                  V4       \        V P                  P                  4       4      pRp. pRV9   d$   VP	                  R4       VP                  ^ R4       V'       d?   ^ p	V F6  p
W¦9   g   K  VP	                  V
4       VP                  Wš4       V	^,          p	K8  	  V EF	  pV'       d	   W´9   d   K  V P                  V,          pRp\        V\        4      '       d   VP                  pEMn\        V\        \        ,          4      '       gò   \        V^ ,          R4      '       d   V^ ,          pM\        V^ ,          R4      pVP                  R4      '       d   VP                  4       pM‚\        P                   ! 4       p\"        P$                  ! VRV^ R7      ;_uu_ 4       p VP                  \&        4      pV'       d   VP)                  V4       K1   RRR4       TP+                  4       pVP-                  4        M\\        V\        4      '       dG   V P/                  V4      '       d0   VP                  R4      '       d   TpM\        WË4      P                  pV'       d   VP1                  \3        W½4      4       EKà  \5        V4      p\        V\        4      '       d   VP7                  R	R
4      p\        V\        4      '       g   Q h\5        VP9                  4       4      pVR8:  d8   V^8X  d1   VP;                  4       pW{R,           V,           R,           ,          pEK‚  VR8:  dg   VV8:  d`   W{R,           ,          pVP                  R4      '       g
   VR,          pW|P=                  4       P?                  RR4      R,           ,          pEKï  VP1                  \A        W¼4      4       EK  	  \B        PD                  PF                  PI                  VR	R7      pVPK                  RR4       VP                  ^ V4       \B        PD                  PL                  PO                  4       pV'       d+   VPQ                  4        F  w  r¼VPK                  W¼4       K  	  V F  pVPS                  V4       K  	  VP)                  VPU                  4       PW                  R	4      4       VP)                  R4       R#   + '       g   i     ELå; i)a  Write MIME/Multipart RFC 2822 formatted data into file.

file must be a file-like object, not a path.  It needs to be opened in
binary mode.

If a value is a string or a CompressedValue, it is written directly.
Otherwise it must be a tuple containing the source file and an optional
boolean value (in that order); the first argument can be a file name or
a file-like object, which will be read and its content will become the
value of this key.  The file will be gzip compressed, unless the key
already ends in .gz.

attach_treshold specifies the maximum number of lines for a value to be
included into the first inline text part. All bigger values (as well as
all non-ASCII ones) will become an attachment, as well as text
values bigger than 1 kB.

Extra MIME preamble headers can be specified, too, as a dictionary.

skip_keys is a set/list specifying keys which are filtered out and not
written to the destination file.

priority_fields is a set/list specifying the order in which keys should
appear in the destination file.
Ú r,  Nr¹   r­   rt   rÒ   rÓ   rj   r¾  iè  z: Ú
z:
 z
 rk   r^   Úinlinerƒ   ),re  rZ  rf  rj  ri  r£  rr  rÉ   rË   r,   r   r²   r®   rH   r¹   r×   rØ   rs   rÙ   rº   rÚ   rÛ   r³   r™  r²  rg   r‡   r    r  Úrstripr†   r¾  ro   rX   rY   rm   rn   rb   Ú	multipartÚMIMEMultipartrw  ÚattachÚ	as_stringr½  )r   rö   Úattach_tresholdÚextra_headersÚ	skip_keysÚpriority_fieldsrj  rm   ÚattachmentsÚcounterÚpriority_fieldr®  r´  Úattach_valuerÁ  rÜ   rÝ   r–   rÛ  ÚlinesÚattÚmsgÚas   &&&&&&                 r   Ú
write_mimeÚProblemReport.write_mimeX  sŽ  € ðH 	×Ñ˜dÔ#ä�d—i‘i—n‘nÓ&Ó'ˆàˆØˆà˜DÔ Ø�K‰K˜Ô&Ø�K‰K˜˜=Ô)çØˆGÛ"1�Ø!Ö)Ø—K‘K Ô/Ø—K‘K Ô8Ø˜q•L’Gñ	 #2ô ˆAß˜Qœ^ÙØ—	‘	˜!•ˆAØˆLô ˜!œ_×-Ò-Ø ×1Ñ1’ô   ¤5¬3¥;×/Ò/Ü˜1˜Q�4 ×(Ò(Ø˜!�‘Aô ˜Q˜q�T 4Ó(�AØ—:‘:˜e×$Ò$Ø#$§6¡6£8‘LäŸ*š*›,�CÜŸš q¨t¸SÈ×JÕJÈbØ"Ø$%§F¡F¬:Ó$6˜Eß$Ø "§¡¨¦à %÷ Kð $'§<¡<£>�LØ—‘•	ô ˜Aœu×%Ò%¨$¯.©.¸×*;Ò*;Ø—:‘:˜e×$Ò$Ø#$‘Lä#2°1Ó#8×#IÑ#I�L÷ Ø×"Ñ"Ô#@ÀÓ#Q×Rô ˜1“v�ô ˜a¤×'Ò'ØŸ™ ¨)Ó4�Aä! !¤S×)Ò)Ð)Ð)ä˜AŸL™L›NÓ+�Ø˜4”< E¨Q¤JØŸ™›
�AØ �H q�L¨4Õ/Õ/“DØ˜T”\ e¨Ô&>Ø �JÕ&�DØŸ:™: d×+Ò+Ø˜T�	˜ØŸG™G›I×-Ñ-¨d°EÓ:¸TÕAÕA“Dð  ×&Ñ&Ô'>¸qÓ'D×Eñ ôD �j‰j�o‰o×&Ñ& t°gÐ&Ó>ˆØ�‰Ð,¨hÔ7Ø×Ñ˜1˜cÔ"ä�j‰j×"Ñ"×0Ñ0Ó2ˆßØ%×+Ñ+Ö-‘�Ø—‘˜qÖ$ñ .ãˆAØ�J‰J�qŽMñ ð 	�
‰
�3—=‘=“?×)Ñ)¨'Ó2Ô3Ø�
‰
�5Ö÷q K×JÐJús   Æ.R=ÇR=Ò=Sc                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r	   r®  r´  r*   N)r   r¡  )r   r   s   "€r   r   rL  ß  s#   ø€ ÷ +ñ +™Sð +Ñ%7ð +¸Dñ +r   c                ó�  € \        VR 4      '       g   Q hVP                  RR4      P                  RR4      P                  RR4      P                  4       '       g   \        RV R24      h\	        V\
        \        34      '       g¨   \        VR 4      '       g–   \	        V\        4      '       dq   \        V4      ^8X  g/   \        V4      ^8¼  dQ   \        V4      ^8:  dA   V^,          R
9   d3   \        V^ ,          R 4      '       g)   \        V^ ,          R4      '       g   \        RV R	24      hV P                  P                  W4      # )ÚisalnumÚ.rò  Ú-r>   zkey 'zT' contains invalid characters (only numbers, letters, '.', '_', and '-' are allowed)r¹   zvalue for key z7 must be a string, CompressedValue, or a file reference>   FT)r²   r¾  r
  rx   rr  r©   rÉ   rq   r‡   Ú	TypeErrorrf  Ú__setitem__)r   r®  r´  s   &&&r   r  ÚProblemReport.__setitem__ß  s  € Ü�q˜)×$Ò$Ð$Ð$Ø�y‰y˜˜bÓ!×)Ñ)¨#¨rÓ2×:Ñ:¸3ÀÓC×KÑK×MÒMÜØ˜�sð Jð Kóð ô �qœ>¬?Ð;×<Ò<Ü�q˜)×$Ò$ä˜1œe×$Ò$ä˜“F˜a”KÜ˜A› !œ¬¨A«°!¬¸¸!½ÀÔ8Mä˜Q˜q�T 9×-Ò-´¸¸1½¸v×1FÒ1Fô Ø   ð $'ð (óð ð
 �y‰y×$Ñ$ QÓ*Ð*r   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r3   r€  )r   r   s   "€r   r   rL  û  s   ø€ ÷ 5ñ 5™#™c�(ñ 5r   c                ój   € \        V P                  P                  4       4      V P                  ,
          # )zyReturn newly added keys.

Return the set of keys which have been added to the report since it
was constructed or loaded.
)rP  rf  rj  rQ  r´   s   &r   Únew_keysÚProblemReport.new_keysû  s#   € ô �4—9‘9—>‘>Ó#Ó$ t§}¡}Õ4Ð4r   c                ó$   <€ V ^8„  d   QhRS[ RR/# rõ   )r   )r   r   s   "€r   r   rL    s   ø€ ÷ Sñ S™vð S¨$ñ Sr   c                ó8   € \        V R4      '       d   Q R4       hR# )z0Assert that given file object is in binary mode.Úencodingz"file stream must be in binary modeN)r²   )rö   s   &r   re  ÚProblemReport._assert_bin_mode  s    € ô ˜4 ×,Ò,ÐRÐ.RÓRÐ,Ñ,r   )rQ  )ÚCrashN)TNrG   r<   )é   NNN)r   r   r   r   r   r   r]  rl  r}  rW  r�  r‘  r  r™  Úclassmethodrh  r¤  rÚ   r©  rª  rÍ  rÝ  r«  rï  r  r  r  re  r    r!   r"   r#   s   @@r   rH  rH  ¨  s  ù‡ € Ù;÷(õ (÷2ð 2÷5.ò 5.÷n(?ð (?÷T,ð ,÷ð ÷$%ð %ð ÷ó ðð ÷	ó ð	÷#ò #÷JDò D÷< ð  ÷@%ð %ðN ÷ó ð÷ Jð J÷X
ð 
÷-ò -ô"E÷N+ð +÷85ð 5ð ÷Só ÷Sð Sr   rH  c                ó@   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   # )r	   r¡  )Ú__conditional_annotations__r   )r   s   "r   r   r      s   € × .Ñ .÷T WÒ V”IÑ VòU /r   )5r  r   rN   rP   ÚcollectionsÚdataclassesÚemail.encodersrX   Úemail.mime.baseÚemail.mime.multipartÚemail.mime.textrs   r×   r†  rÁ   r  rN  r÷   rë   Úcollections.abcr   r   r   r   rº   rv   rw   rx   r   r�   r%   r'   rI   rS   rg   ro   ra   r~   r‰   r�   r—   r§   Ú	dataclassr©   rÉ   r,   r   rq   r¡  r�  ÚUserDictrH  r   )r  s   @r   Ú<module>r&     sy  øðÞ .ó Û Û Û Û Û Û Û Û Û 	Û Û 	Û Û Û Û ß 9Ñ 9Ý à€
à#Ð Ø,Ð ô
˜Zô 
ôI˜ô Iô %�8ô  %õF$õ?õõõ8õõ($ò	(õ-õ/ð< ×Ñ÷Eð Eó ðE÷<r-ñ r-ðj !&¨Õ 6¸Õ HÈ3Õ NÐQVÕ VÐ Ó Vð9Øð9àð9ð ð9ð ð	9ð
 ð9ð ð9ð ð9ð ð9ð ð9ð ð9ð ð9ð ð9ð ð9ð ð9ð ð9ð  ð!9ð" ð#9ð$ ð%9ð& ð'9ð( ð)9ð* ð+9ð, ð-9ð. ð/9ð0 ð19ð2 ð39ð4 ð59ð6 ð79ð8 ð99ð: ð;9ð< ð=9ð> ð?9ð@ ðA9ðB ðC9ðD ðE9ðF ðG9ðH ðI9ðJ ðK9ðL ðM9ðN ðO9ðP ðQ9ðR ðS9ðT ðU9ðV ðW9ðX ðY9ðZ ð[9ð\ ð]9ð^ ð_9ð` ða9ðb ðc9ðd ðe9ðf ðg9ðh ði9ðj ðk9ðl ðm9ðn  ðo9ðp ðq9€ôx^	S�K×(Ñ(ö ^	Sr   