ó
    "%vg­Æ  ã                  ó”  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	  S SK
Jr  S SKJrJrJrJrJrJr  SSKJrJrJrJrJr  SSKJr  SS	KJr  SS
KJr  SSKJr   SSKJ!r"  \(       a  SSKJ#r#  \RH                  " \%5      r&\RN                  " S5      RP                  r)Sr*SSSSSSSSSSSSSSSS.r+\RN                  " S 5      r,\RZ                  r. S!\.-  r/  " S" S#\5      r0 " S$ S%\5      r1SRS& jr2SSSTS' jjr3 " S( S)5      r4 " S* S+\55      r6 " S, S-5      r7 " S. S/\5      r8 " S0 S1\45      r9SUS2 jr: " S3 S4\R,                  5      r;S5S6S7S8S9S:S;S;S;S<S=S>S?S@SASB.r<SVSC jr= " SD SE5      r> " SF SG5      r? " SH SI\5      r@                SWSJ jrASXSK jrB\=SL4           SYSM jjrCSZSN jrD\RŠ                  " \;RŒ                  \;\:5        \RŽ                  " \;RŒ                  \C5        \R�                  " \;RŒ                  \B5        \R’                  " \;RŒ                  SOSP/5        \R”                  " \;RŒ                  SQ5        g)[é    )ÚannotationsN)ÚCallable)ÚIntEnum)ÚIOÚTYPE_CHECKINGÚAnyÚ
NamedTupleÚNoReturnÚcasté   )ÚImageÚ
ImageChopsÚ	ImageFileÚImagePaletteÚImageSequence)Úi16be)Úi32be)Úo8)Úo16be)Úo32be)Ú_imagings   \w\w\w\ws   ‰PNG

)Ú1r   )ÚLúL;2)r   úL;4)r   r   )úI;16úI;16B)ÚRGBr   )r   zRGB;16B)ÚPúP;1)r   úP;2)r   úP;4)r   r   )ÚLAr#   )ÚRGBAzLA;16B)r$   r$   )r$   zRGBA;16B))r   r   )é   r   )é   r   )é   r   )é   r   )r'   r%   )r(   r%   )r   é   )r%   r)   )r&   r)   )r'   r)   )r'   r&   )r(   r&   )r'   é   )r(   r*   s   ^ÿ* ÿ*$é@   c                  ó$   • \ rS rSrSr Sr SrSrg)ÚDisposaléh   r   r   r%   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚOP_NONEÚOP_BACKGROUNDÚOP_PREVIOUSÚ__static_attributes__r/   ó    Ú4/usr/lib/python3/dist-packages/PIL/PngImagePlugin.pyr-   r-   h   s$   † Ø€Gðð €Mðð
 €Kòr8   r-   c                  ó   • \ rS rSrSr SrSrg)ÚBlendé}   r   r   r/   N)r0   r1   r2   r3   Ú	OP_SOURCEÚOP_OVERr7   r/   r8   r9   r;   r;   }   s   † Ø€Iðð
 €Gòr8   r;   c                ó˜   • [         R                  " 5       nUR                  U [        5      nUR                  (       a  Sn[        U5      eU$ )Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)ÚzlibÚdecompressobjÚ
decompressÚMAX_TEXT_CHUNKÚunconsumed_tailÚ
ValueError)ÚsÚdobjÚ	plaintextÚmsgs       r9   Ú_safe_zlib_decompressrJ   ‹   s>   € Ü×ÒÓ€DØ—‘ ¤>Ó2€IØ××ØMˆÜ˜‹oÐØÐr8   c                ó4   • [         R                  " X5      S-  $ )Nl   ÿÿ )r@   Úcrc32)ÚdataÚseeds     r9   Ú_crc32rO   ”   s   € Ü�:Š:�dÓ! JÑ.Ð.r8   c                  ó|   • \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSSS jjrSrg)ÚChunkStreaméœ   c                ó   • Xl         / U l        g ©N©ÚfpÚqueue)ÚselfrV   s     r9   Ú__init__ÚChunkStream.__init__�   s   € Ø$&ŒØ:<ˆ�
r8   c                óÈ  • SnU R                   c   eU R                  (       a9  U R                  R                  5       u  pnU R                   R                  U5        OEU R                   R	                  S5      nUSS nU R                   R                  5       n[        U5      n[        U5      (       d/  [        R                  (       d  S[        U5       S3n[        U5      eXU4$ )z.Fetch a new chunk. Returns header information.Nr'   r&   zbroken PNG file (chunk Ú))rV   rW   ÚpopÚseekÚreadÚtellÚi32Úis_cidr   ÚLOAD_TRUNCATED_IMAGESÚreprÚSyntaxError)rX   ÚcidÚposÚlengthrF   rI   s         r9   r_   ÚChunkStream.read¡   s±   € àˆà�w‰wÑ"Ð"Ð"Ø�:�:Ø#Ÿz™zŸ~™~Ó/ÑˆC�fØ�G‰G�L‰L˜Õà—‘—‘˜Q“ˆAØ�A�B�%ˆCØ—'‘'—,‘,“.ˆCÜ˜“VˆFä�c�{‰{Ü×2×2Ø/´°S³	¨{¸!Ð<�Ü! #Ó&Ð&à˜ÐÐr8   c                ó   • U $ rT   r/   ©rX   s    r9   Ú	__enter__ÚChunkStream.__enter__¶   s   € Øˆr8   c                ó$   • U R                  5         g rT   )Úclose)rX   Úargss     r9   Ú__exit__ÚChunkStream.__exit__¹   s   € Ø�
‰
�r8   c                ó    • S =U l         U l        g rT   )rW   rV   rk   s    r9   ro   ÚChunkStream.close¼   s   € Ø#Ð#ˆŒ
�T•Wr8   c                ó\   • U R                   c   eU R                   R                  XU45        g rT   )rW   Úappend©rX   rf   rg   rh   s       r9   ÚpushÚChunkStream.push¿   s)   € Ø�z‰zÑ%Ð%Ð%Ø�
‰
×Ñ˜3 VÐ,Õ-r8   c                óx   • [         R                  SXU5        [        U SUR                  S5       35      " X#5      $ )z"Call the appropriate chunk handlerzSTREAM %r %s %sÚchunk_Úascii)ÚloggerÚdebugÚgetattrÚdecoderw   s       r9   ÚcallÚChunkStream.callÃ   s8   € ô 	�‰Ð&¨°&Ô9Ü�t˜v c§j¡j°Ó&9Ð%:Ð;Ô<¸SÓIÐIr8   c                ó°  • [         R                  (       a"  US   S-	  S-  (       a  U R                  X5        gU R                  c   e [	        U[	        U5      5      n[        U R                  R                  S5      5      nX4:w  a  S[        U5       S3n[        U5      eg! [        R                   a   nS[        U5       S3n[        U5      UeSnAff = f)	zRead and verify checksumr   é   r   Nr&   z(broken PNG file (bad header checksum in r\   z(broken PNG file (incomplete checksum in )r   rc   Úcrc_skiprV   rO   ra   r_   rd   re   ÚstructÚerror)rX   rf   rM   Úcrc1Úcrc2rI   Úes          r9   ÚcrcÚChunkStream.crcÉ   sÁ   € ô ×*×*°°A±¸!±¸a·Ø�M‰M˜#Ô$Øà�w‰wÑ"Ð"Ð"ð	*Ü˜$¤ s£Ó,ˆDÜ�t—w‘w—|‘| A“Ó'ˆDØ‹|Ø@ÄÀcÃÀÈ1ÐM�Ü! #Ó&Ð&ð øô �|‰|ó 	*Ø<¼TÀ#»Y¸KÀqÐIˆCÜ˜cÓ"¨Ð)ûð	*ús   ÁAB! Â!CÂ5CÃCc                óX   • U R                   c   eU R                   R                  S5        g)zRead checksumNr&   )rV   r_   )rX   rf   rM   s      r9   r…   ÚChunkStream.crc_skipÞ   s#   € ð �w‰wÑ"Ð"Ð"Ø�‰�‰�Q�r8   c                ó:  • / nU R                   c   e  U R                  5       u  p4nX1:X  a   U$ U R                  U[        R                  " U R                   U5      5        UR                  U5        M`  ! [        R                   a  nSn[	        U5      UeS nAff = f)Nztruncated PNG file)	rV   r_   r†   r‡   ÚOSErrorr‹   r   Ú
_safe_readrv   )rX   ÚendchunkÚcidsrf   rg   rh   rŠ   rI   s           r9   ÚverifyÚChunkStream.verifyä   s›   € ð ˆà�w‰wÑ"Ð"Ð"Øð*Ø#'§9¡9£;Ñ �˜&ð
 ‹Øð ˆð �H‰H�Sœ)×.Ò.¨t¯w©w¸Ó?Ô@Ø�K‰K˜Ôñ øô —<‘<ó *Ø*�Ü˜c“l¨Ð)ûð*ús   ”A3 Á3BÂBÂBrU   N©rV   ú	IO[bytes]ÚreturnÚNone)r˜   ztuple[bytes, int, int])r˜   rQ   )rp   Úobjectr˜   r™   ©r˜   r™   )rf   Úbytesrg   Úintrh   r�   r˜   r™   )rf   rœ   rg   r�   rh   r�   r˜   rœ   )rf   rœ   rM   rœ   r˜   r™   )ó   IEND)r’   rœ   r˜   zlist[bytes])r0   r1   r2   r3   rY   r_   rl   rq   ro   rx   r�   r‹   r…   r”   r7   r/   r8   r9   rQ   rQ   œ   s:   † ô=ô ô*ôô$ô.ôJô*ô*÷ñ r8   rQ   c                  óV   • \ rS rSr% SrS\S'   S\S'   \ S	       S
S jj5       rSrg)ÚiTXtéú   ze
Subclass of string to allow iTXt chunks to look like strings while
keeping their extra information

zstr | bytes | NoneÚlangÚtkeyNc                óH   • [         R                  X5      nX$l        X4l        U$ )zŸ
:param cls: the class to use when creating the instance
:param text: value for this key
:param lang: language code
:param tkey: UTF-8 version of the key name
)ÚstrÚ__new__r¢   r£   )ÚclsÚtextr¢   r£   rX   s        r9   r¦   ÚiTXt.__new__  s!   € ô �{‰{˜3Ó%ˆØŒ	ØŒ	Øˆr8   )r¢   r£   )NN)r¨   r¥   r¢   ú
str | Noner£   rª   r˜   r    )	r0   r1   r2   r3   Ú__doc__Ú__annotations__Ústaticmethodr¦   r7   r/   r8   r9   r    r    ú   sJ   ‡ ñð ÓØ
ÓààDHðØðØ(ðØ7Aðà	ôó ór8   r    c                  óx   • \ rS rSrSrS	S jrS
SS jjr   S           SS jjr S
       SS jjrSr	g)ÚPngInfoi  z4
PNG chunk container (for use with save(pnginfo=))

c                ó   • / U l         g rT   ©Úchunksrk   s    r9   rY   ÚPngInfo.__init__  s	   € Ø79ˆ�r8   c                ó>   • U R                   R                  XU45        g)zúAppends an arbitrary chunk. Use with caution.

:param cid: a byte string, 4 bytes long.
:param data: a byte string of the encoded data
:param after_idat: for use with private chunks. Whether the chunk
                   should be written after IDAT

N)r²   rv   )rX   rf   rM   Ú
after_idats       r9   ÚaddÚPngInfo.add  s   € ð 	�‰×Ñ˜C zÐ2Õ3r8   c                ó  • [        U[        5      (       d  UR                  SS5      n[        U[        5      (       d  UR                  SS5      n[        U[        5      (       d  UR                  SS5      n[        U[        5      (       d  UR                  SS5      nU(       a9  U R                  SUS-   U-   S-   U-   S-   [        R
                  " U5      -   5        gU R                  SUS-   U-   S-   U-   S-   U-   5        g)	zÉAppends an iTXt chunk.

:param key: latin-1 encodable text key name
:param value: value for this key
:param lang: language code
:param tkey: UTF-8 version of the key name
:param zip: compression flag

úlatin-1Ústrictúutf-8ó   iTXts     ó    s      N)Ú
isinstancerœ   Úencoder¶   r@   Úcompress)rX   ÚkeyÚvaluer¢   r£   Úzips         r9   Úadd_itxtÚPngInfo.add_itxt*  sâ   € ô$ ˜#œu×%Ñ%Ø—*‘*˜Y¨Ó1ˆCÜ˜%¤×'Ñ'Ø—L‘L ¨(Ó3ˆEÜ˜$¤×&Ñ&Ø—;‘;˜w¨Ó1ˆDÜ˜$¤×&Ñ&Ø—;‘;˜w¨Ó1ˆDæØ�H‰HØØ�kÑ! DÑ(¨5Ñ0°4Ñ7¸%Ñ?Ä$Ç-Â-ÐPUÓBVÑVõð
 �H‰H�W˜c I™o°Ñ4°uÑ<¸tÑCÀeÑKÈeÑSÕTr8   c                ó4  • [        U[        5      (       aH  U R                  UUUR                  b  UR                  OSUR                  b  UR                  US9$ SUS9$ [        U[
        5      (       d   UR                  SS5      n[        U[
        5      (       d  UR                  SS5      nU(       a-  U R                  SUS-   [        R                  " U5      -   5        gU R                  SUS	-   U-   5        g! [         a    U R                  XUS9s $ f = f)
z¾Appends a text chunk.

:param key: latin-1 encodable text key name
:param value: value for this key, text or an
   :py:class:`PIL.PngImagePlugin.iTXt` instance
:param zip: compression flag

Nr8   )rÃ   r¹   rº   ó   zTXtó     ó   tEXtr½   )r¾   r    rÄ   r¢   r£   rœ   r¿   ÚUnicodeErrorr¶   r@   rÀ   )rX   rÁ   rÂ   rÃ   s       r9   Úadd_textÚPngInfo.add_textM  s
  € ô �eœT×"Ñ"Ø—=‘=ØØØ#Ÿj™jÑ4�—
’
¸#Ø#Ÿj™jÑ4�—
‘
Øð !ð ð ð ;>Øð !ð ð ô ˜%¤×'Ñ'ð:ØŸ™ Y°Ó9�ô ˜#œu×%Ñ%Ø—*‘*˜Y¨Ó1ˆCæØ�H‰H�W˜c G™m¬d¯mªm¸EÓ.BÑBÕCà�H‰H�W˜c E™k¨EÑ1Õ2øô  ó :Ø—}‘} S°S�}Ð9Ò9ð:ús   Á4C: Ã:DÄDr±   Nr›   ©F)rf   rœ   rM   rœ   rµ   Úboolr˜   r™   )Ú rÏ   F)rÁ   ústr | bytesrÂ   rÐ   r¢   rÐ   r£   rÐ   rÃ   rÎ   r˜   r™   )rÁ   rÐ   rÂ   zstr | bytes | iTXtrÃ   rÎ   r˜   r™   )
r0   r1   r2   r3   r«   rY   r¶   rÄ   rË   r7   r/   r8   r9   r¯   r¯     s”   † ñô
:ö
4ð  ØØð!Uàð!Uð ð!Uð ð	!Uð
 ð!Uð ð!Uð 
õ!UðH HMð!3Øð!3Ø'9ð!3Ø@Dð!3à	÷!3ð !3r8   r¯   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú_RewindStateiu  z dict[str | tuple[int, int], Any]Úinfozlist[ImageFile._Tile]Útilez
int | NoneÚseq_numr/   N©r0   r1   r2   r3   r¬   r7   r/   r8   r9   rÒ   rÒ   u  s   ‡ Ø
*Ó*Ø
ÓØÖr8   rÒ   c                  óô   ^ • \ rS rSrSU 4S jjrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrU =r$ )Ú	PngStreami{  c                óÔ   >• [         TU ]  U5        0 U l        0 U l        SU l        SU l        / U l        S U l        S U l        S U l	        S U l
        [        0 / S 5      U l        SU l        g )N©r   r   rÏ   r   )ÚsuperrY   Úim_infoÚim_textÚim_sizeÚim_modeÚim_tileÚ
im_paletteÚim_custom_mimetypeÚim_n_framesÚ_seq_numrÒ   Úrewind_stateÚtext_memory)rX   rV   Ú	__class__s     €r9   rY   ÚPngStream.__init__|  sl   ø€ Ü‰Ñ˜Ôð :<ˆŒØ.0ˆŒØˆŒØˆŒØ.0ˆŒØ48ˆŒØ.2ˆÔØ'+ˆÔØ$(ˆŒÜ(¨¨R°Ó6ˆÔàˆÕr8   c                óŒ   • U =R                   U-  sl         U R                   [        :”  a  SU R                    S3n[        U5      eg )Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)ræ   ÚMAX_TEXT_MEMORYrE   )rX   ÚchunklenrI   s      r9   Úcheck_text_memoryÚPngStream.check_text_memory�  sN   € Ø×Ò˜HÑ$ÕØ×ÑœoÓ-à7Ø×#Ñ#Ð$Ð$4ð6ð ô ˜S“/Ð!ð .r8   c                ó€   • [        U R                  R                  5       U R                  U R                  5      U l        g rT   )rÒ   rÜ   Úcopyrà   rä   rå   rk   s    r9   Úsave_rewindÚPngStream.save_rewind–  s-   € Ü(Ø�L‰L×ÑÓØ�L‰LØ�M‰Mó
ˆÕr8   c                óÂ   • U R                   R                  R                  5       U l        U R                   R                  U l        U R                   R                  U l        g rT   )rå   rÓ   rï   rÜ   rÔ   rà   rÕ   rä   rk   s    r9   ÚrewindÚPngStream.rewind�  sD   € Ø×(Ñ(×-Ñ-×2Ñ2Ó4ˆŒØ×(Ñ(×-Ñ-ˆŒØ×)Ñ)×1Ñ1ˆ�r8   c                óÞ  • U R                   c   e[        R                  " U R                   U5      nUR                  S5      n[        R                  SUS U 5        X4S-      n[        R                  SU5        US:w  a  SU S3n[        U5      e [        X4S-   S  5      nXpR                  S	'   U$ ! [         a    [        R                  (       a  S n N3e [        R                   a    S n NKf = f)
Nr½   ziCCP profile name %rr   zCompression method %sr   úUnknown compression method z in iCCP chunkr%   Úicc_profile)rV   r   r‘   Úfindr}   r~   re   rJ   rE   rc   r@   r‡   rÜ   )rX   rg   rh   rF   ÚiÚcomp_methodrI   r÷   s           r9   Ú
chunk_iCCPÚPngStream.chunk_iCCP¢  sä   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆð �F‰F�5‹MˆÜ�‰Ð+¨Q¨r°¨UÔ3Ø˜A™‘hˆÜ�‰Ð,¨kÔ:Ø˜!ÓØ/°¨}¸NÐKˆCÜ˜cÓ"Ð"ð	Ü/°°a±%°'°
Ó;ˆKð '2�‰�]Ñ#Øˆøô ó 	Ü×.×.Ø"’àÜ�z‰zó 	ØŠKð	ús   ÂB0 Â0!C,ÃC,Ã+C,c                ó²  • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      e[        US5      [        US5      4U l         [        US   US   4   u  U l        U l	        US   (       a  SU R                  S	'   US
   (       a  Sn[        U5      eU$ ! [         a     N>f = f)Né   zTruncated IHDR chunkr   r&   r'   é	   é   r   Ú	interlaceé   zunknown filter category)rV   r   r‘   rc   rE   ra   rÞ   Ú_MODESrß   Ú
im_rawmodeÚ	ExceptionrÜ   re   ©rX   rg   rh   rF   rI   s        r9   Ú
chunk_IHDRÚPngStream.chunk_IHDR¾  sÏ   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�B‹;Ü×.×.Ø�Ø(ˆCÜ˜S“/Ð!Ü˜1˜a“y¤# a¨£)Ð+ˆŒð	Ü,2°A°a±D¸!¸A¹$°<Ñ,@Ñ)ˆDŒL˜$œ/ð ˆR�5Ø()ˆD�L‰L˜Ñ%ØˆR�5Ø+ˆCÜ˜cÓ"Ð"Øˆøô ó 	Ùð	ús   Á9C	 Ã	
CÃCc                óN  • SU R                   ;   a1  [        R                  " SU R                   S   XR                  5      /nOLU R                  b  SU R                   S'   [        R                  " SSU R
                  -   XR                  5      /nX0l        X l        Sn[        U5      e)NÚbboxrÃ   TÚdefault_imagerÚ   zimage data found)	rÜ   r   Ú_Tiler  rã   rÞ   rà   Úim_idatÚEOFError)rX   rg   rh   rÔ   rI   s        r9   Ú
chunk_IDATÚPngStream.chunk_IDATÓ  s…   € à�T—\‘\Ó!Ü—O’O E¨4¯<©<¸Ñ+?ÀÇoÁoÓVÐW‰Dà×ÑÑ+Ø04�—‘˜_Ñ-Ü—O’O E¨6°D·L±LÑ+@À#ÇÁÓWÐXˆDØŒØŒØ ˆÜ�s‹mÐr8   c                ó   • Sn[        U5      e)Nzend of PNG image)r  )rX   rg   rh   rI   s       r9   Ú
chunk_IENDÚPngStream.chunk_IENDà  s   € Ø ˆÜ�s‹mÐr8   c                ó˜   • U R                   c   e[        R                  " U R                   U5      nU R                  S:X  a	  SU4U l        U$ )Nr   r   )rV   r   r‘   rß   rá   ©rX   rg   rh   rF   s       r9   Ú
chunk_PLTEÚPngStream.chunk_PLTEä  sD   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�<‰<˜3ÓØ# Q˜hˆDŒOØˆr8   c                óü  • U R                   c   e[        R                  " U R                   U5      nU R                  S:X  aR  [        R                  U5      (       a'  UR                  S5      nUS:¼  a  X@R                  S'   U$ X0R                  S'    U$ U R                  S;   a  [        U5      U R                  S'   U$ U R                  S:X  a/  [        U5      [        US5      [        US5      4U R                  S'   U$ )	Nr   r½   r   Útransparency)r   r   r   r   r%   r&   )	rV   r   r‘   rß   Ú_simple_paletteÚmatchrø   rÜ   Úi16)rX   rg   rh   rF   rù   s        r9   Ú
chunk_tRNSÚPngStream.chunk_tRNSì  sã   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�<‰<˜3ÓÜ×$Ñ$ Q×'Ñ'ð —F‘F˜5“M�Ø˜“6Ø34—L‘L Ñ0ð ˆð 01—‘˜^Ò,ð
 ˆð	 �\‰\Ð/Ó/Ü+.¨q«6ˆD�L‰L˜Ñ(ð ˆð �\‰\˜UÓ"Ü+.¨q«6´3°q¸!³9¼cÀ!ÀQ»iÐ+GˆD�L‰L˜Ñ(Øˆr8   c                óœ   • U R                   c   e[        R                  " U R                   U5      n[        U5      S-  U R                  S'   U$ )Nç     jø@Úgamma)rV   r   r‘   ra   rÜ   r  s       r9   Ú
chunk_gAMAÚPngStream.chunk_gAMA  sD   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆÜ # A£¨Ñ 1ˆ�‰�WÑØˆr8   c                óò   • U R                   c   e[        R                  " U R                   U5      n[        R                  " S[        U5      S-   S3U5      n[        S U 5       5      U R                  S'   U$ )NÚ>r&   ÚIc              3  ó*   #   • U  H	  oS -  v •  M     g7f)r   Nr/   )Ú.0Úelts     r9   Ú	<genexpr>Ú'PngStream.chunk_cHRM.<locals>.<genexpr>  s   é € Ð,PÂxÀ°8®^Âxùs   ‚Úchromaticity)rV   r   r‘   r†   ÚunpackÚlenÚtuplerÜ   )rX   rg   rh   rF   Úraw_valss        r9   Ú
chunk_cHRMÚPngStream.chunk_cHRM  si   € ð �w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆÜ—=’= 1¤S¨£V¨q¡[ M°Ð!3°QÓ7ˆÜ',Ñ,PÁxÓ,PÓ'Pˆ�‰�^Ñ$Øˆr8   c                óÞ   • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      eUS   U R
                  S'   U$ )Nr   zTruncated sRGB chunkr   Úsrgb)rV   r   r‘   rc   rE   rÜ   r  s        r9   Ú
chunk_sRGBÚPngStream.chunk_sRGB  se   € ð �w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�A‹:Ü×.×.Ø�Ø(ˆCÜ˜S“/Ð!Ø  ™tˆ�‰�VÑØˆr8   c                ó^  • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      e[        US5      [        US5      peUS   nUS:X  a  US-  US-  4nX€R                  S'   U$ US:X  a  XV4U R                  S	'   U$ )
Nrÿ   zTruncated pHYs chunkr   r&   r'   r   ç¦
F%uš?ÚdpiÚaspect)rV   r   r‘   rc   rE   ra   rÜ   )	rX   rg   rh   rF   rI   ÚpxÚpyÚunitr9  s	            r9   Ú
chunk_pHYsÚPngStream.chunk_pHYs#  s²   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�A‹:Ü×.×.Ø�Ø(ˆCÜ˜S“/Ð!Ü�Q˜“œC  1›IˆBØ�‰tˆØ�1‹9Ø�v‘+˜r F™{Ð*ˆCØ"%�L‰L˜Ñð ˆð �Q‹YØ%' VˆD�L‰L˜Ñ"Øˆr8   c                óŒ  • U R                   c   e[        R                  " U R                   U5      n UR                  SS5      u  pEU(       ac  UR                  SS5      nUR                  SS5      nUS:X  a  UOUU R                  U'   XpR                  U'   U R                  [        U5      5        U$ ! [         a    UnSn N|f = f)Nr½   r   r8   r¹   rº   Úreplaces   exif)
rV   r   r‘   ÚsplitrE   r€   rÜ   rÝ   rì   r.  )rX   rg   rh   rF   ÚkÚvÚk_strÚv_strs           r9   Ú
chunk_tEXtÚPngStream.chunk_tEXt5  s¸   € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆð	Ø—7‘7˜5 !Ó$‰DˆAö
 Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨	Ó2ˆEà'(¨G£|¡!¸ˆD�L‰L˜ÑØ"'�L‰L˜ÑØ×"Ñ"¤3 u£:Ô.àˆøô ó 	àˆAØŠAð	ús   ²B2 Â2CÃCc                óf  • U R                   c   e[        R                  " U R                   U5      n UR                  SS5      u  pEU(       a  US   nOSnUS:w  a  SU S3n[        U5      e [        USS  5      nU(       a\  UR                  SS5      nUR                  SS	5      n	U	=U R                  U'   U R                  U'   U R                  [        U	5      5        U$ ! [         a    UnSn Nªf = f! [         a    [        R                  (       a  Sn Nœe [        R                   a    Sn N´f = f)
Nr½   r   r8   r   rö   z in zTXt chunkr¹   rº   rA  )rV   r   r‘   rB  rE   re   rJ   rc   r@   r‡   r€   rÜ   rÝ   rì   r.  )
rX   rg   rh   rF   rC  rD  rú   rI   rE  rF  s
             r9   Ú
chunk_zTXtÚPngStream.chunk_zTXtI  s-  € à�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆð	Ø—7‘7˜5 !Ó$‰DˆAö Ø˜A™$‰KàˆKØ˜!ÓØ/°¨}¸NÐKˆCÜ˜cÓ"Ð"ð	Ü% a¨¨ eÓ,ˆAö Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨	Ó2ˆEà8=Ð=ˆD�L‰L˜Ñ $§,¡,¨uÑ"5Ø×"Ñ"¤3 u£:Ô.àˆøô7 ó 	ØˆAØŠAð	ûô ó 	Ü×.×.Ø’àÜ�z‰zó 	ØŠAð	ús)   ²C  Á-C4 Ã C1Ã0C1Ã4!D0ÄD0Ä/D0c                óZ  • U R                   c   e[        R                  " U R                   U5      =p4 UR                  SS5      u  pS[        U5      S:  a  U$ US   US   USS  p7n UR                  SS5      u  p‰n
US:w  a  US:X  a   [        U
5      n
OU$ US:X  a  X R                  S'    UR                  SS5      nUR                  S	S5      nU	R                  S	S5      nU
R                  S	S5      n[        XìU5      =U R                  U'   U R                  U'   U R                  [        U5      5        U$ ! [         a    Us $ f = f! [         a    Us $ f = f! [         a    [        R                  (       a  Us $ e [        R                   a    Us $ f = f! [         a    Us $ f = f)
Nr½   r   r%   r   s   XML:com.adobe.xmpÚxmpr¹   rº   r»   )rV   r   r‘   rB  rE   r.  rJ   rc   r@   r‡   rÜ   r€   rÊ   r    rÝ   rì   )rX   rg   rh   ÚrrF   rC  ÚcfÚcmr¢   ÚtkrD  rE  Úlang_strÚtk_strrF  s                  r9   Ú
chunk_iTXtÚPngStream.chunk_iTXtl  sµ  € à�w‰wÑ"Ð"Ð"Ü×$Ò$ T§W¡W¨fÓ5Ð5ˆð	Ø—7‘7˜5 !Ó$‰DˆAô ˆq‹6�A‹:ØˆHØ�a‘D˜!˜A™$  ! " �ˆð	ØŸ'™' %¨Ó+‰KˆD�að �‹7Ø�Q‹wðÜ-¨aÓ0‘Að �ØÐ$Ó$Ø"#�L‰L˜Ñð	Ø—H‘H˜Y¨Ó1ˆEØ—{‘{ 7¨HÓ5ˆHØ—Y‘Y˜w¨Ó1ˆFØ—H‘H˜W hÓ/ˆEô 59¸È&Ó4QÐQˆ�‰�UÑ˜dŸl™l¨5Ñ1Ø×Ñœs 5›zÔ*àˆøôG ó 	ØŠHð	ûô ó 	ØŠHð	ûô "ó Ü ×6×6Ø šàÜ—z‘zó Ø’Hðûô ó 	ØŠHð	úsN   ³D8 Á'E
 Â	E Â,AF Ä8EÅEÅ
EÅEÅ!FÅ?FÆFÆF*Æ)F*c                óŠ   • U R                   c   e[        R                  " U R                   U5      nSU-   U R                  S'   U$ )Nó   Exif  Úexif)rV   r   r‘   rÜ   r  s       r9   Ú
chunk_eXIfÚPngStream.chunk_eXIf—  s@   € Ø�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ.°Ñ2ˆ�‰�VÑØˆr8   c                ó¼  • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      eU R
                  b  S U l        [        R                  " S5        U$ [        U5      nUS:X  d  US:”  a  [        R                  " S5        U$ XPl        [        US5      U R                  S'   SU l
        U$ )	Nr'   z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possibler   l        r&   Úloopz
image/apng)rV   r   r‘   rc   rE   rã   ÚwarningsÚwarnra   rÜ   râ   )rX   rg   rh   rF   rI   Ún_framess         r9   Ú
chunk_acTLÚPngStream.chunk_acTLž  sÂ   € Ø�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�A‹:Ü×.×.Ø�Ø6ˆCÜ˜S“/Ð!Ø×ÑÑ'Ø#ˆDÔÜ�MŠMÐPÔQØˆHÜ�q“6ˆØ�q‹=˜H zÓ1Ü�MŠMÐPÔQØˆHØ#ÔÜ" 1 a›yˆ�‰�VÑØ".ˆÔØˆr8   c                ó  • U R                   c   e[        R                  " U R                   U5      nUS:  a$  [        R                  (       a  U$ Sn[	        U5      e[        U5      nU R                  c  US:w  d   U R                  b   U R                  US-
  :w  a  Sn[        U5      eXPl        [        US5      [        US5      pv[        US5      [        US	5      p˜U R                  u  p«X†-   U
:”  d  X—-   U:”  a  S
n[        U5      eX‰X†-   X—-   4U R                  S'   [        US5      [        US5      pÜUS:X  a  Sn[        U5      [        U5      -  S-  U R                  S'   US   U R                  S'   US   U R                  S'   U$ )Né   z"APNG contains truncated fcTL chunkr   r   ú#APNG contains frame sequence errorsr&   r'   r   r(   zAPNG contains invalid framesr
  é   é   éd   éè  Údurationé   Údisposalé   Úblend)rV   r   r‘   rc   rE   ra   rä   re   rÞ   rÜ   r  Úfloat)rX   rg   rh   rF   rI   ÚseqÚwidthÚheightr;  r<  Úim_wÚim_hÚ	delay_numÚ	delay_dens                 r9   Ú
chunk_fcTLÚPngStream.chunk_fcTL³  sj  € Ø�w‰wÑ"Ð"Ð"Ü× Ò  §¡¨&Ó1ˆØ�B‹;Ü×.×.Ø�Ø6ˆCÜ˜S“/Ð!Ü�!‹fˆØ�M‰MÑ! c¨Q£hØ�M‰MÑ%¨$¯-©-¸3À¹7Ó*Bà7ˆCÜ˜cÓ"Ð"ØŒÜ˜A˜q›	¤3 q¨!£9ˆvÜ�Q˜“œS  B›ZˆBØ—\‘\‰
ˆØ‰:˜Ó ¡¨dÓ 2Ø0ˆCÜ˜cÓ"Ð"Ø "¨©
°B±KÐ@ˆ�‰�VÑÜ" 1 b›z¬3¨q°"«:�9Ø˜‹>ØˆIÜ#(¨Ó#3´e¸IÓ6FÑ#FÈÑ#Mˆ�‰�ZÑ Ø#$ R¡5ˆ�‰�ZÑ Ø ! "¡ˆ�‰�WÑØˆr8   c                óŠ  • U R                   c   eUS:  aE  [        R                  (       a#  [        R                  " U R                   U5      nU$ Sn[	        U5      e[        R                  " U R                   S5      n[        U5      nU R                  US-
  :w  a  Sn[        U5      eXPl        U R                  US-   US-
  5      $ )Nr&   z"APNG contains truncated fDAT chunkr   rd  )	rV   r   rc   r‘   rE   ra   rä   re   r  )rX   rg   rh   rF   rI   ro  s         r9   Ú
chunk_fdATÚPngStream.chunk_fdATÑ  s©   € Ø�w‰wÑ"Ð"Ð"Ø�A‹:Ü×.×.Ü×(Ò(¨¯©°&Ó9�Ø�Ø6ˆCÜ˜S“/Ð!Ü× Ò  §¡¨!Ó,ˆÜ�!‹fˆØ�=‰=˜C !™GÓ#Ø7ˆCÜ˜cÓ"Ð"ØŒØ�‰˜s Q™w¨°©
Ó3Ð3r8   )rä   râ   r  rÜ   rß   rã   rá   r  rÞ   rÝ   rà   rå   ræ   r–   )rë   r�   r˜   r™   r›   )rg   r�   rh   r�   r˜   rœ   )rg   r�   rh   r�   r˜   r
   )r0   r1   r2   r3   rY   rì   rð   ró   rû   r  r  r  r  r  r"  r1  r5  r>  rG  rJ  rT  rY  r`  rv  ry  r7   Ú__classcell__©rç   s   @r9   rØ   rØ   {  ss   ø† ÷ô""ô
ô2ô
ô8ô*ôôôô*ôôô"ô$ô(!ôF)ôVôô*÷<4ò 4r8   rØ   c                ó   • U S S [         :H  $ )Nr'   )Ú_MAGIC)Úprefixs    r9   Ú_acceptr€  æ  s   € Ø�"�1ˆ:œÑÐr8   c                  ó¦   ^ • \ rS rSrSrSrSS jr\SS j5       rSS jr	SS jr
SSS jjrSS	 jrSS
 jrSS jrSS jrSS jrSU 4S jjrSrU =r$ )ÚPngImageFileiî  ÚPNGzPortable network graphicsc                óv  • [        U R                  R                  S5      5      (       d  Sn[        U5      eU R                  U l        SU l        / U l        [        U R                  5      U l         U R                  R                  5       u  p#n U R                  R                  X#U5      nU R                  R%                  X%5        MW  ! [         a     O{[         ao    [        R                  SX#U5        [        R                  " U R                  U5      nUSS R!                  5       (       a  U R                  R#                  X%45         N f = fU R                  R&                  U l        U R                  R*                  U l        U R                  R.                  U l        S U l        U R                  R4                  U l        U R                  R8                  U l        U R                  R<                  =(       d    SU l        U R0                  RA                  SS5      U l!        U R                  RD                  (       a3  U R                  RD                  u  pg[F        RH                  " Xg5      U l%        US	:X  a  US
-
  U l&        OX@l&        U R                  R<                  bˆ  SU l'        U R                  RQ                  5         U RL                  U l)        U R                  RU                  5       U l+        U RB                  (       a  U =R>                  S-  sl        U RY                  S5        U R>                  S:„  U l-        g )Nr'   znot a PNG filer   ú%r %s %s (unknown)r   r%   r  Fó   fdATr&   ).r€  rV   r_   re   Ú_fpÚ_PngImageFile__frameÚprivate_chunksrØ   Úpngr�   r  ÚAttributeErrorr}   r~   r   r‘   Úislowerrv   r‹   rß   Ú_moderÞ   Ú_sizerÜ   rÓ   Ú_textrà   rÔ   râ   Úcustom_mimetyperã   r_  Úgetr  rá   r   ÚrawÚpaletteÚ_PngImageFile__prepare_idatÚ!_close_exclusive_fp_after_loadingrð   Ú_PngImageFile__rewind_idatr`   Ú_PngImageFile__rewindÚ_seekÚis_animated)rX   rI   rf   rg   rh   rF   ÚrawmoderM   s           r9   Ú_openÚPngImageFile._openò  s^  € Ü�t—w‘w—|‘| A“×'Ñ'Ø"ˆCÜ˜cÓ"Ð"Ø—7‘7ˆŒØˆŒð
 VXˆÔÜ%.¨t¯w©wÓ%7ˆŒàð  $Ÿx™xŸ}™}›ÑˆC�fð9Ø—H‘H—M‘M #¨FÓ3�ð �H‰H�L‰L˜Ô ñ! øô ó ÙÜ!ó 9Ü—‘Ð1°3¸VÔDÜ×(Ò(¨¯©°&Ó9�Ø�q˜�8×#Ñ#×%Ñ%Ø×'Ñ'×.Ñ.°¨xÔ8ùð	9úð —X‘X×%Ñ%ˆŒ
Ø—X‘X×%Ñ%ˆŒ
Ø—H‘H×$Ñ$ˆŒ	Ø37ˆŒ
Ø—H‘H×$Ñ$ˆŒ	Ø#Ÿx™x×:Ñ:ˆÔØŸ™×,Ñ,×1°ˆŒØ!ŸY™YŸ]™]¨?¸EÓBˆÔà�8‰8××Ø ŸH™H×/Ñ/‰MˆGÜ'×+Ò+¨GÓ:ˆDŒLà�'‹>Ø"(¨1¡*ˆDÕà"(Ôà�8‰8×ÑÑ+Ø5:ˆDÔ2Ø�H‰H× Ñ Ô"Ø!%×!4Ñ!4ˆDÔØ ŸH™HŸM™M›OˆDŒMØ×!×!à—’ Ñ"•Ø�J‰J�qŒMØŸ=™=¨1Ñ,ˆÕs   ÂC Ã
EÃA5EÅEc                ó,  • U R                   cm  U R                  (       a*  U R                  nU R                  U R                  S-
  5        U R                  5         U R                  (       a  U R                  W5        U R                   c   eU R                   $ )Nr   )r�  r™  rˆ  r^   r_  Úload)rX   Úframes     r9   r¨   ÚPngImageFile.text5  so   € ð �:‰:Ñð ××ØŸ™�à—	‘	˜$Ÿ-™-¨!Ñ+Ô,Ø�I‰IŒKØ××Ø—	‘	˜%Ô Ø�z‰zÑ%Ð%Ð%Ø�z‰zÐr8   c                ó~  • U R                   c  Sn[        U5      eU R                   R                  U R                  S   S   S-
  5        U R                  c   eU R                  R                  5         U R                  R                  5         U R                  (       a  U R                   R                  5         SU l         g)zVerify PNG fileNz)verify must be called directly after openr   r%   r'   )rV   ÚRuntimeErrorr^   rÔ   rŠ  r”   ro   Ú_exclusive_fp)rX   rI   s     r9   r”   ÚPngImageFile.verifyE  s‰   € ð �7‰7‰?Ø=ˆCÜ˜sÓ#Ð#ð 	�‰�‰�T—Y‘Y˜q‘\ !‘_ qÑ(Ô)à�x‰xÑ#Ð#Ð#Ø�‰�‰ÔØ�‰�‰Ôà××Ø�G‰G�M‰MŒOØˆ�r8   c                óX  • U R                  U5      (       d  g XR                  :  a  U R                  SS5        U R                  n[        U R                  S-   US-   5       H  n U R                  U5        M     g ! [         a$  nU R                  U5        Sn[	        U5      UeS nAff = f)Nr   Tr   zno more images in APNG file)Ú_seek_checkrˆ  r˜  Úranger  r^   )rX   rŸ  Ú
last_frameÚfrŠ   rI   s         r9   r^   ÚPngImageFile.seekW  s”   € Ø×Ñ ×&Ñ&ØØ—<‘<ÓØ�J‰J�q˜$Ôà—\‘\ˆ
Ü�t—|‘| aÑ'¨°©Ö3ˆAð+Ø—
‘
˜1–ò 4øô ó +Ø—	‘	˜*Ô%Ø3�Ü˜s“m¨Ð*ûð+ús   Á%A;Á;
B)ÂB$Â$B)c                óÜ
  • U R                   c   eU   S nUS:X  Ga8  U(       až  U R                  R                  U R                  5        U R                   R	                  5         U R
                  U l        S U l        U R                   R                  U l	        U R                   R                  U l        U R                  U l        S U l        S U l        U R                  R                  SS5      U l        U R                  R                  S5      U l        U R                  R                  S5      U l        U R                  R                  S5      nSU l        GOpXR&                  S-   :w  a  SU 3n[)        U5      eU R+                  5         U R                  (       a0  U R,                  R/                  U R                  U R0                  5        U R,                  R3                  5       U l        U R                  U l        U R                  (       a2  [4        R6                  " U R                  U R                  5        SU l        Sn U R                  R9                  S
5         U R                   R9                  5       u  pgnUS:X  a  Sn[A        U5      eUS:X  a  U(       a  Sn[?        U5      eS	n U R                   RC                  XgU5        M‡  U(       a  X0l        U R                  c3  U R"                  [L        RN                  :X  a  [L        RP                  U l        S U l        U R"                  [L        RN                  :X  a]  U R                  (       aK  U R                  R3                  5       U l        U RS                  U R                  U R0                  5      U l        g g U R"                  [L        RP                  :X  ae  [T        RV                  RY                  U RZ                  U R\                  5      U l        U RS                  U R                  U R0                  5      U l        g g ! [:        R<                  [>        4 a     OŸf = f! [D         a     O�[@         a?    US:X  a  US
-  nU(       a  X€l         Ol[4        R6                  " U R                  U5         GNÈ[F         a<    [H        RK                  SXgU5        [4        R6                  " U R                  U5         GNf = fXl        U R                   R                  U l        U R                  R                  S5      U l        U R                  R                  S5      U l        U R                  R                  S5      nU R                  (       a  GMž  Sn[A        U5      e)Nr   r  Frk  rm  r
  r   zcannot seek to frame Tr&   rž   zNo more images in APNG fileó   fcTLzAPNG missing frame datar†  r…  zimage not found in APNG frame)/rŠ  r‡  r^   r—  ró   r–  r”  Ú_imrÜ   rÓ   rà   rÔ   rV   Ú_prev_imÚdisposer‘  r  Ú
dispose_opÚblend_oprˆ  rE   rž  ÚimÚpasteÚdispose_extentrï   r   r‘   r_   r†   r‡   re   r  r�   ÚUnicodeDecodeErrorr‹  r}   r~   r-   r6   r5   Ú_cropr   ÚcoreÚfillÚmodeÚsize)	rX   rŸ  ró   r´  rI   Úframe_startrf   rg   rh   s	            r9   r˜  ÚPngImageFile._seekf  së  € Ø�x‰xÑ#Ð#Ð#áØˆØ�AŒ:ÞØ—‘—‘˜dŸm™mÔ,Ø—‘—‘Ô!Ø&*×&8Ñ&8�Ô#Ø�”Ø ŸH™H×,Ñ,�”	Ø ŸH™H×,Ñ,�”	ØŸ(™(�”Ø ˆDŒMØˆDŒLØ!%§¡§¡¨ÀÓ!FˆDÔØ"Ÿi™iŸm™m¨JÓ7ˆDŒOØ ŸI™IŸM™M¨'Ó2ˆDŒMØ!ŸY™YŸ]™]¨6Ó2ˆNØˆDŽLàŸ™ qÑ(Ó(Ø-¨e¨WÐ5�Ü  “oÐ%ð �I‰IŒKà�|�|Ø—‘—‘˜dŸl™l¨D×,?Ñ,?Ô@Ø ŸG™GŸL™L›NˆDŒMà—h‘hˆDŒGð ×"×"Ü×$Ò$ T§W¡W¨d×.AÑ.AÔBØ&'�Ô#ØˆKØØ—‘—‘˜Q”ðØ'+§x¡x§}¡}£Ñ$�C˜fð ˜'“>Ø7�CÜ" 3›-Ð'Ø˜'“>Þ"à7˜Ü)¨#Ó.Ð.Ø"&�Kð:Ø—H‘H—M‘M #¨FÔ3ñ' öT ØESÔð �=‰=Ñ  T§_¡_¼×8LÑ8LÓ%LÜ&×4Ñ4ˆDŒOàˆŒØ�?‰?œh×2Ñ2Ó2Ø�}�}Ø#Ÿ}™}×1Ñ1Ó3�”Ø#Ÿz™z¨$¯,©,¸×8KÑ8KÓL�•ð ð �_‰_¤× 6Ñ 6Ó6Ü Ÿ:™:Ÿ?™?¨4¯9©9°d·i±iÓ@ˆDŒLØŸ:™: d§l¡l°D×4GÑ4GÓHˆD�Lð 7øôc Ÿ™¤kÐ2ó Ùðûô *ó ÙÜó :Ø˜g“~Ø !™˜Þ&Ø28Ô/Ù!Ü×(Ò(¨¯©°&×9Ü%ó :Ü—L‘LÐ!5°sÀÔHÜ×(Ò(¨¯©°&×9ð:úð !ŒLØŸ™×(Ñ(ˆDŒIØ"Ÿi™iŸm™m¨JÓ7ˆDŒOØ ŸI™IŸM™M¨'Ó2ˆDŒMØ!ŸY™YŸ]™]¨6Ó2ˆNà—9—9’9Ø5�Ü˜s“mÐ#s7   ÉP Ê%P6 ÐP3Ð2P3Ð6
SÑ!SÑ%!SÒ	ASÓSc                ó   • U R                   $ rT   )rˆ  rk   s    r9   r`   ÚPngImageFile.tellÈ  s   € Ø�|‰|Ðr8   c                óÌ   • U R                   R                  S5      (       a  U R                  S-   U l        U R                  U l        [
        R
                  R                  U 5        g)z"internal: prepare to read PNG filer  )r   N)rÓ   r‘  Údecoderconfigr”  Ú_PngImageFile__idatr   Úload_preparerk   s    r9   rÂ  ÚPngImageFile.load_prepareË  sK   € ð �9‰9�=‰=˜×%Ñ%Ø!%×!3Ñ!3°dÑ!:ˆDÔà×)Ñ)ˆŒÜ×Ñ×(Ñ(¨Õ.r8   c                óP  • U R                   c   eU R                  S:X  a¡  U R                  R                  S5        U R                   R                  5       u  p#nUS;  a  U R                   R	                  X#U5        gUS:X  a(   U R                   R                  X#U5        US-
  U l        OX@l        U R                  S:X  a  M¡  US::  a  U R                  nO[        XR                  5      nU R                  U-
  U l        U R                  R                  U5      $ ! [         a     N†f = f)zinternal: read more image datar   r&   )ó   IDATs   DDATr†  r8   r†  )rŠ  rÁ  rV   r_   rx   r�   r  Úmin)rX   Ú
read_bytesrf   rg   rh   s        r9   Ú	load_readÚPngImageFile.load_readÔ  sø   € ð �x‰xÑ#Ð#Ð#Ø�k‰k˜QÓð �G‰G�L‰L˜ŒOà#Ÿx™xŸ}™}›ÑˆC�fàÐ5Ó5Ø—‘—‘˜c¨Ô/Øà�g‹~ðØ—H‘H—M‘M #¨FÔ3ð % q™j�•à$”ð% �k‰k˜QÕð* ˜‹?ØŸ™‰Jä˜Z¯©Ó5ˆJà—k‘k JÑ.ˆŒà�w‰w�|‰|˜JÓ'Ð'øô  ó Ùðús   ÂD Ä
D%Ä$D%c                ón  • U R                   c   eU R                  S:w  a%  U R                  R                  U R                  5         U R                  R                  S5         U R                   R                  5       u  pnUS:X  a  OZUS:X  a5  U R                  (       a$  SU l        U R                   R                  XU5        O U R                   R                  XU5        Mš  U R                   R.                  U l        U R                  (       d"  U R                   R3                  5         SU l         gU R4                  (       Ga_  U R6                  [8        R:                  :X  Ga?  U R=                  U R>                  U R@                  5      nU R>                  RB                  S:X  a0  SU RD                  ;   a   URG                  SU RD                  S   5      nO—U R>                  RB                  S:X  al  SU RD                  ;   a\  U RD                  S   n[I        U[J        5      (       a  URM                  U5        O&[I        U[N        5      (       a  URQ                  U5        URS                  S5      nU R4                  RU                  X`R@                  U5        U R4                  U l        ggg! [        R
                  [        4 a     GMÞ  f = f! [         a     GMð  [         ab    US:X  a  US-  n [        R                  " U R                  U5         GN+! [         a$  n[        R                   (       a   SnA GMP  UeSnAff = f["         aq    [$        R'                  SXU5        [        R                  " U R                  U5      nUS	S
 R)                  5       (       a  U R*                  R-                  XS45         GNÕf = f)z%internal: finished reading image dataNr   Tr&   rž   r¬  r†  r…  r   r%   r   r  r$   r   )+rŠ  rÁ  rV   r_   r†   r‡   re   r™  r”  rx   r�   rµ  r  r   r‘   r�   rc   r‹  r}   r~   rŒ  r‰  rv   rÝ   r�  ro   r®  r±  r;   r>   r¶  r²  r´  r¹  rÓ   Úconvert_transparentr¾   rœ   Úputpalettealphasr�   ÚputpalettealphaÚconvertr³  )	rX   rf   rg   rh   rŠ   rF   ÚupdatedÚmaskÚts	            r9   Úload_endÚPngImageFile.load_endö  sÌ  € à�x‰xÑ#Ð#Ð#Ø�;‰;˜!ÓØ�G‰G�L‰L˜Ÿ™Ô%ØØ�G‰G�L‰L˜ŒOðØ#'§8¡8§=¡=£?Ñ �˜&ð �g‹~ØØ˜“ D×$4×$4à&'�Ô#Ø—‘—‘˜c¨Ô/Øð?Ø—‘—‘˜c¨Ô/ñ# ðF —X‘X×%Ñ%ˆŒ
Ø××Ø�H‰H�N‰NÔØˆD�Hà�}�}ˆ} §¡´%·-±-Ô!?ØŸ*™* T§W¡W¨d×.AÑ.AÓB�Ø—7‘7—<‘< 5Ó(¨^¸t¿y¹yÓ-HØ"×6Ñ6Ø §	¡	¨.Ñ 9ó‘Dð —w‘w—|‘| sÓ*¨~ÀÇÁÓ/JØ ŸI™I nÑ5˜Ü% a¬×/Ñ/Ø#×4Ñ4°QÕ7Ü'¨¬3×/Ñ/Ø#×3Ñ3°AÔ6Ø"Ÿ?™?¨6Ó2�DØ—‘×#Ñ# G×-@Ñ-@À$ÔGØŸ-™-�•ð "@ˆ}øôG —L‘L¤+Ð.ó Ûðûô &ó ÛÜó 	 Ø˜'“>Ø˜a‘K�Fð Ü×(Ò(¨¯©°&×9øÜó  Ü ×6×6ßà˜ûð	 úô
 "ó ?Ü—‘Ð1°3¸VÔDÜ×(Ò(¨¯©°&Ó9�Ø�q˜�8×#Ñ#×%Ñ%Ø×'Ñ'×.Ñ.°¸¨~Ô>úð	?úsU   Á"J  ÃK Ê J?Ê>J?Ë
N4ËN4Ë%!L	Ì	
L7ÌL2Ì(N4Ì0L2Ì2L7Ì7A9N4Î3N4c                óÀ   • SU R                   ;  a  U R                  5         SU R                   ;  a  SU R                   ;  a  g U R                  5       R                  5       $ )NrX  zRaw profile type exif)rÓ   rž  ÚgetexifÚ_get_merged_dictrk   s    r9   Ú_getexifÚPngImageFile._getexif4  sG   € Ø˜Ÿ™Ó"Ø�I‰IŒKØ˜Ÿ™Ó"Ð'>ÀdÇiÁiÓ'OØØ�|‰|‹~×.Ñ.Ó0Ð0r8   c                ó`   >• SU R                   ;  a  U R                  5         [        TU ]  5       $ )NrX  )rÓ   rž  rÛ   rÕ  )rX   rç   s    €r9   rÕ  ÚPngImageFile.getexif;  s%   ø€ Ø˜Ÿ™Ó"Ø�I‰IŒKä‰w‰Ó Ð r8   )Ú__frameÚ__idatÚ__prepare_idatÚ__rewindÚ__rewind_idatr•  r‡  r­  r�  r®  rŽ  r�  r±  r�  rÀ  r  r¯  r´  r°  rV   r²  rÓ   r™  r_  r“  rŠ  r‰  rÔ   r›   )r˜   zdict[str, str | iTXt])rŸ  r�   r˜   r™   rÍ   )rŸ  r�   ró   rÎ   r˜   r™   )r˜   r�   )rÇ  r�   r˜   rœ   )r˜   zdict[int, Any] | None)r˜   z
Image.Exif)r0   r1   r2   r3   ÚformatÚformat_descriptionr›  Úpropertyr¨   r”   r^   r˜  r`   rÂ  rÈ  rÒ  r×  rÕ  r7   r{  r|  s   @r9   r‚  r‚  î  s`   ø† Ø€FØ4ÐôA-ðF óó ðôô$+ö`IôDô/ô (ôD<(ô|1÷!õ !r8   r‚  )r   ó   r½   )úL;1rã  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   r   r   r#   r&  r   r   r    r!   r"   r   r   r$   c                óò   • SR                  U5      nU R                  [        [        U5      5      U-   5        U R                  U5        [	        U[	        U5      5      nU R                  [        U5      5        g)z'Write a PNG chunk (including CRC field)r8   N)ÚjoinÚwriteÚo32r.  rO   )rV   rf   rM   Ú	byte_datar‹   s        r9   Úputchunkrð  Y  sW   € ð —‘˜“€Ià‡H�HŒS”�Y“Ó  3Ñ&Ô'Ø‡H�HˆYÔÜ
�œF 3›KÓ
(€CØ‡H�HŒS�‹XÕr8   c                  ó(   • \ rS rSrSS jrSS jrSrg)Ú_idatid  c                ó   • Xl         X l        g rT   )rV   Úchunk)rX   rV   rô  s      r9   rY   Ú_idat.__init__g  s   € ØŒØ�
r8   c                ó>   • U R                  U R                  SU5        g )NrÅ  ©rô  rV   ©rX   rM   s     r9   rí  Ú_idat.writek  s   € Ø�
‰
�4—7‘7˜G TÕ*r8   r÷  N)rV   r—   rô  úCallable[..., None]r˜   r™   ©rM   rœ   r˜   r™   ©r0   r1   r2   r3   rY   rí  r7   r/   r8   r9   rò  rò  d  s   † ô÷+r8   rò  c                  ó(   • \ rS rSrSS jrSS jrSrg)Ú_fdatio  c                ó(   • Xl         X l        X0l        g rT   )rV   rô  rÕ   )rX   rV   rô  rÕ   s       r9   rY   Ú_fdat.__init__r  s   € ØŒØŒ
Ø�r8   c                ó�   • U R                  U R                  S[        U R                  5      U5        U =R                  S-  sl        g )Nr†  r   )rô  rV   rî  rÕ   rø  s     r9   rí  Ú_fdat.writew  s/   € Ø�
‰
�4—7‘7˜G¤S¨¯©Ó%6¸Ô=Ø�Š˜ÑŽr8   )rô  rV   rÕ   N)rV   r—   rô  rú  rÕ   r�   r˜   r™   rû  rü  r/   r8   r9   rþ  rþ  o  s   † ô÷
r8   rþ  c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú_Framei|  úImage.Imager²  z tuple[int, int, int, int] | Noner
  zdict[str, Any]Úencoderinfor/   NrÖ   r/   r8   r9   r  r  |  s   ‡ ØƒOØ
*Ó*ØÖr8   r  c                óæ  • U R                   R                  S5      nU R                   R                  SU R                  R                  SS5      5      nU R                   R                  SU R                  R                  S[        R                  5      5      n	U R                   R                  SU R                  R                  S[
        R                  5      5      n
U(       a  [        R                  " U5      nO[        R                  " U /U5      n/ nSnU GHý  n[        R                  " U5       GHÞ  nUR                  U:X  a  UR                  5       nOUR                  U5      nU R                   R                  5       n[        U[        [         45      (       a  X}   US'   O%Uc"  SUR                  ;   a  UR                  S   US'   [        U	[        [         45      (       a  X�   US'   [        U
[        [         45      (       a  X­   US'   US-  nU(       Ga×  US   nUR                   R                  S5      nUR                   R                  S5      nU[        R"                  :X  a  [%        U5      S:  a  [        R&                  nU[        R&                  :X  aŒ  UR(                  R                  5       n[*        R,                  R/                  S	U R0                  S
5      nUR2                  nU(       a  UR5                  U5      nOSU R0                  -   nUR7                  UU5        O0U[        R"                  :X  a  US   R(                  nOUR(                  n[8        R:                  " UR                  S	5      UR                  S	5      5      nUR=                  SS9nU(       dM  UUR                  S5      :X  a8  UUR                  S5      :X  a#  SU;   a  UR                   S==   US   -  ss'   GM¿  OS nUR?                  [A        UUU5      5        GMá     GM      [%        U5      S:X  a  U(       d  US   R(                  $ U" US[C        [%        U5      5      [C        U5      5        U(       a|  U R                  U:w  a  U R                  U5      n [D        RF                  " U [I        [J        [L           [O        X5      5      [D        RP                  " SSU R0                  -   SU5      /5        Sn[S        U5       GHú  u  nnUR(                  nUR2                  (       d  SUR0                  -   nOUR2                  nUR5                  U5      nUR0                  nUR                   n[U        [W        UR                  SS5      5      5      nUR                  SU	5      nUR                  SU
5      nU" US[C        U5      [C        US   5      [C        US   5      [C        US   5      [C        US   5      [Y        U5      [Y        S5      [[        U5      [[        U5      5        US-  nUS:X  ae  U(       d^  [D        RF                  " U[I        [J        [L           [O        X5      5      [D        RP                  " SSUR0                  -   SU5      /5        GM�  []        XU5      n[D        RF                  " U[I        [J        [L           U5      [D        RP                  " SSUR0                  -   SU5      /5        UR^                  nGMý     g )Nri  r\  r   rk  rm  r   éÿÿÿÿr%   r$   )r   r   r   r   rÚ   éþÿÿÿF)Ú
alpha_onlys   acTLrÃ   r¬  rh  )0r  r‘  rÓ   r-   r4   r;   r=   Ú	itertoolsÚchainr   ÚIteratorr¹  rï   rÎ  r¾   Úlistr/  r6   r.  r5   r²  r   r·  r¸  rº  r
  Úcropr³  r   Úsubtract_moduloÚgetbboxrv   r  rî  r   Ú_saver   r   rœ   rò  r  Ú	enumerater�   ÚroundÚo16r   rþ  rÕ   ) r²  rV   rô  r¹  rš  r  Úappend_imagesri  r\  rk  rm  r  Ú	im_framesÚframe_countÚim_seqÚim_framer  ÚpreviousÚprev_disposalÚ
prev_blendÚbase_imr¯  r
  ÚdeltarÕ   rŸ  Ú
frame_datarº  Úframe_durationÚframe_disposalÚframe_blendÚfdat_chunkss                                    r9   Ú_write_multiple_framesr%  ‚  s‚  € ð �~‰~×!Ñ! *Ó-€HØ�>‰>×Ñ˜f b§g¡g§k¡k°&¸!Ó&<Ó=€DØ�~‰~×!Ñ! *¨b¯g©g¯k©k¸*Äh×FVÑFVÓ.WÓX€HØ�N‰N×Ñ˜w¨¯©¯©°G¼U¿_¹_Ó(MÓN€EæÜ—’ Ó.‰ä—’   mÓ4ˆà €IØ€KÜˆÜ%×.Ò.¨v×6ˆHØ�}‰} Ó$Ø#Ÿ=™=›?‘à#×+Ñ+¨DÓ1�ØŸ.™.×-Ñ-Ó/ˆKÜ˜(¤T¬5 M×2Ñ2Ø*2Ñ*?�˜JÒ'ØÑ! j°H·M±MÓ&AØ*2¯-©-¸
Ñ*C�˜JÑ'Ü˜(¤T¬5 M×2Ñ2Ø*2Ñ*?�˜JÑ'Ü˜%¤$¬ ×/Ñ/Ø',Ñ'9�˜GÑ$Ø˜1ÑˆKçØ$ R™=�Ø (× 4Ñ 4× 8Ñ 8¸Ó D�Ø%×1Ñ1×5Ñ5°gÓ>�
Ø ¤H×$8Ñ$8Ó8¼SÀ»^ÈaÓ=OÜ$,×$:Ñ$:�Mà ¤H×$:Ñ$:Ó:Ø&Ÿk™k×.Ñ.Ó0�GÜ#Ÿj™jŸo™o¨f°b·g±g¸|ÓL�GØ#Ÿ=™=�DÞØ")§,¡,¨tÓ"4™à%¨¯©Ñ/˜Ø—M‘M '¨4Õ0Ø"¤h×&:Ñ&:Ó:Ø'¨™m×.Ñ.‘Gà&Ÿk™k�GÜ"×2Ò2Ø×$Ñ$ VÓ,¨g¯o©o¸fÓ.Eó�ð —}‘}°�}Ð6�æØ%¨¯©¸Ó)DÓDØ" k§o¡o°gÓ&>Ó>Ø" kÓ1à×(Ñ(¨Ó4¸ÀJÑ8OÑOÓ4Úøà�Ø×ÑœV H¨d°KÓ@×Aôe 7ñ ôj ˆ9ƒ~˜Ó¦=Ø˜‰|�‰Ðñ 
Ø
ØÜŒC�	‹NÓÜˆD‹	ô	ö Ø�7‰7�d‹?Ø—‘˜DÓ!ˆBÜ�ŠØÜ””E‘œE "Ó,Ó-Ü�_Š_˜U F¨R¯W©WÑ$4°a¸ÓAÐBô	
ð €GÜ& y×1ÑˆˆzØ—=‘=ˆØ��Ø˜HŸM™MÑ)‰Dà—?‘?ˆDØ—}‘} TÓ*ˆHØ�}‰}ˆØ ×,Ñ,ˆÜœU ;§?¡?°:¸qÓ#AÓBÓCˆØ$Ÿ™¨°XÓ>ˆØ!—o‘o g¨uÓ5ˆáØØÜ�‹LÜ��Q‘‹LÜ��Q‘‹LÜ��Q‘‹LÜ��Q‘‹LÜ�ÓÜ�‹IÜˆ~ÓÜˆ{‹Oô	
ð 	�1‰ˆà�A‹:žmä�OŠOØÜ”Rœ‘Y¤ bÓ 0Ó1Ü—’ ¨°·±Ñ(>ÀÀ7ÓKÐL÷ô   ¨7Ó3ˆKÜ�OŠOØÜ”Rœ‘Y Ó,Ü—’ ¨°·±Ñ(>ÀÀ7ÓKÐLôð
 "×)Ñ)‹GñU 2ðV r8   c                ó   • [        XUSS9  g )NT)Úsave_all)r  )r²  rV   Úfilenames      r9   Ú	_save_allr)    s   € Ü	ˆ"�( TÓ*r8   Fc                óL  ^(• U(       Ga  U R                   R                  SU R                  R                  S5      5      n[        5       n[        5       m(U R                   R                  S/ 5      n[        R
                  " U /U5       HV  n[        R                  " U5       H9  n	UR                  U	R                  5        T(R                  U	R                  5        M;     MX     S H
  n
X¦;   d  M
    O   UR                  5       n
[        U(4S j[        S5       5       5      nOU R                  nU R                  n
U
nU
S:X  a   SU R                   ;   a  [        SU R                   S   -  S	5      nOQU R                  (       a>  [!        [        [#        U R                  R%                  5       S   5      S
-  S	5      S5      nOS	nUS::  a  US::  a  SnOUS::  a  SnOSnUSU 3-  nU R                   R                  SS5      U R                   R                  SS5      U R                   R                  SS5      U R                   R                  SS5      4U l         [(        U   u  nnnUR/                  [0        5        U" US[3        US   5      [3        US   5      UUSSS5	        / SQnU R                   R                  SU R                  R                  S5      5      nU(       a9  SnUS-   [4        R6                  " U5      -   nU" USU5        UR9                  S5        U R                   R                  S 5      nU(       a›  / S!QnUR:                   H‡  nUS S u  nnUU;   a  UR9                  U5        U" UUU5        M.  UU;   a  U" UUU5        M@  USS R=                  5       (       d  MZ  [#        U5      S
:H  =(       a    US   nU(       a  M}  U" UUU5        M‰     U R                  S:X  aR  WS
-  nU R>                  RA                  S"5      S U n[#        U5      U:  a  US-  n[#        U5      U:  a  M  U" US#U5        U R                   R                  S$U R                  R                  S$S 5      5      nU(       d  US:X  aü  U R                  S:X  aR  Wn [C        U[D        5      (       a  U" US%US U  5        GO[!        S[        S&U5      5      nS'U-  S-   n!U" US%U!S U  5        OóU R                  S(;   a*  [!        S[        S)U5      5      nU" US%[G        U5      5        O¹U R                  S":X  a2  Uu  n"n#n$U" US%[G        U"5      [G        U#5      -   [G        U$5      -   5        OwS$U R                   ;   a  S*n[-        U5      eOYU R                  S:X  aI  U R>                  RI                  5       S+:X  a+  U R>                  RA                  S+S,5      n!Wn U" US%U!S U  5        U R                   R                  S-5      n%U%(       aB  U" US.[3        [K        U%S   S/-  S0-   5      5      [3        [K        U%S   S/-  S0-   5      5      S15        U(       aB  S2S3/nUR:                   H.  nUS S u  nnUU;   d  M  UR9                  U5        U" UUU5        M0     U R                   R                  S45      n&U&(       aU  [C        U&[L        RN                  5      (       a  U&RQ                  S55      n&U&RS                  S65      (       a  U&S7S  n&U" US8U&5        U n'U(       a  [U        XX:UWW5      n'U'(       a[  [V        RX                  " U'[[        [\        [D           [_        X5      5      [V        R`                  " S9S:U'R                  -   SU5      /5        U(       ab  UR:                   HR  nUS S u  nnUSS R=                  5       (       d  M%  [#        U5      S
:H  =(       a    US   nU(       d  MH  U" UUU5        MT     U" US;S5        [c        US<5      (       a  URe                  5         g g ! [*         a  nSU
 S3n[-        U5      UeS nAff = f)=Nr  r  )r$   r   r   c              3  óP   >^#   • U  H  m[        U4S  jT 5       5      v •  M     g7f)c              3  ó,   >#   • U  H	  oT   v •  M     g 7frT   r/   )r(  Ú
frame_sizerù   s     €r9   r*  Ú"_save.<locals>.<genexpr>.<genexpr>-  s   øé € Ð?º¨: Ažºùs   ƒN)Úmax)r(  rù   Úsizess    @€r9   r*  Ú_save.<locals>.<genexpr>-  s   ùé € ÐRÊÀA”SÔ?¹Ó?×?Ð?Êùs   „"&r%   r   Úbitsr   é   r)   r(   r&   Ú;ÚoptimizeFÚcompress_levelr  Úcompress_typeÚ
dictionaryr8   zcannot write mode z as PNGs   IHDRr   r½   )s   cHRMs   gAMAs   sBITó   sRGBs   tIMEr÷   s   ICC ProfilerÈ   s   iCCPr9  Úpnginfo)s   sPLTr¼   rÉ   rÇ   r   s   PLTEr  s   tRNSéÿ   ó   ÿ)r   r   r&  r   iÿÿ  z%cannot use transparency for this moder$   ÚAr9  s   pHYsr8  g      à?rã  s   bKGDs   hISTrX  r'   rW  r*   s   eXIfrÃ   rÚ   rž   Úflush)3r  r‘  rÓ   Úsetr  r  r   r  r¶   r¹  rº  r]   r/  r§  rÆ  r“  r/  r.  ÚgetdataÚencoderconfigÚ	_OUTMODESÚKeyErrorr�   rí  r~  rî  r@   rÀ   Úremover²   rŒ  r²  Ú
getpaletter¾   rœ   r  Úgetpalettemoder�   r   ÚExifÚtobytesÚ
startswithr%  r   r  r   r   rò  r  Úhasattrr>  ))r²  rV   r(  rô  r'  r  Úmodesr  r  r  r¹  rº  ÚoutmodeÚcolorsr2  rš  Ú	bit_depthÚ
color_typerŠ   rI   r²   ÚiccÚnamerM   rÓ   Úchunks_multiple_allowedÚ
info_chunkrf   rµ   Úpalette_byte_numberÚpalette_bytesr  Úalpha_bytesÚalphaÚredÚgreenÚbluer9  rX  Ú	single_imr0  s)                                           @r9   r  r    sD  ø€ ÷ ØŸ™×*Ñ*Ø˜RŸW™WŸ[™[¨Ó9ó
ˆô “ˆÜ“ˆØŸ™×*Ñ*¨?¸BÓ?ˆÜ—o’o r d¨MÖ:ˆFÜ)×2Ò2°6Ö:�Ø—	‘	˜(Ÿ-™-Ô(Ø—	‘	˜(Ÿ-™-Ö(ó ;ñ ;ó )ˆDØ�}Ùñ )ð —9‘9“;ˆDÜÔRÌÈqÌÓRÓR‰à�w‰wˆØ�w‰wˆà€GØˆsƒ{ð �R—^‘^Ó#ä˜˜bŸn™n¨VÑ4Ñ4°cÓ:‰Fð �z�zÜœS¤ R§Z¡Z×%7Ñ%7Ó%9¸!Ñ%<Ó!=ÀÑ!BÀCÓHÈ!ÓL‘à�à�R‹<Ø˜‹{Ø‘Ø˜1“Ø‘à�Ø˜˜4˜&�zÑ!ˆGð 	�‰×Ñ˜: uÓ-Ø
�‰×ÑÐ+¨RÓ0Ø
�‰×Ñ˜?¨BÓ/Ø
�‰×Ñ˜<¨Ó-ð	€BÔð"Ü)2°7Ñ);Ñ&ˆ�˜Jð ‡H�HŒVÔá	Ø
ØÜˆD�‰G‹ÜˆD�‰G‹ØØØØØô
ò ;€Fà
�.‰.×
Ñ
˜]¨B¯G©G¯K©K¸Ó,FÓ
G€CÞ
ð ˆØ�g‰~¤§¢¨cÓ 2Ñ2ˆÙˆb�'˜4Ô ð 	�‰�gÔà�>‰>×Ñ˜iÓ(€DÞÚ"FÐØŸ+œ+ˆJØ" 2 A˜‰IˆC�Ø�f‹}Ø—‘˜cÔ"Ù�b˜#˜tÖ$ØÐ/Ó/Ù�b˜#˜tÖ$Ø�Q�q�×!Ñ!×#Ó#ä  ›_°Ñ1×C°jÀ±m�
ß!�zÙ˜"˜c 4Ö(ñ &ð 
‡w�w�#ƒ~Ø$ q™jÐØŸ™×(Ñ(¨Ó/Ð0DÐ1DÐEˆÜ�-Ó Ð#6Ó6Ø˜UÑ"ˆMô �-Ó Ð#6Õ6áˆb�'˜=Ô)à—>‘>×%Ñ% n°b·g±g·k±kÀ.ÐRVÓ6WÓX€Læ�| qÓ(Ø�7‰7�c‹>à ˆKÜ˜,¬×.Ñ.Ù�b˜' <°°Ð#=Ö>ä" 1¤c¨#¨|Ó&<Ó=�Ø ,Ñ.°Ñ6�Ù�b˜' 5¨¨+Ð#6Õ7Ø�W‰WÐ/Ó/Ü˜q¤# e¨\Ó":Ó;ˆLÙ�"�gœs <Ó0Õ1Ø�W‰W˜ÓØ+ÑˆC�˜Ù�"�gœs 3›x¬#¨e«*Ñ4´s¸4³yÑ@ÕAà §¡Ó/ð >�Ü˜c“lÐ"ð	 0ð �7‰7�c‹>˜bŸe™e×2Ñ2Ó4¸Ó>Ø—E‘E×$Ñ$ V¨SÓ1ˆEØ ˆKÙ�"�g˜u \ kÐ2Ô3à
�.‰.×
Ñ
˜UÓ
#€CÞ
ÙØØÜ”�C˜‘F˜V‘O cÑ)Ó*Ó+Ü”�C˜‘F˜V‘O cÑ)Ó*Ó+Øô	
ö Ø˜7Ð#ˆØŸ+œ+ˆJØ" 2 A˜‰IˆC�Ø�f�}Ø—‘˜cÔ"Ù�b˜#˜tÖ$ñ	 &ð �>‰>×Ñ˜fÓ%€DÞÜ�dœEŸJ™J×'Ñ'Ø—<‘< “?ˆDØ�?‰?˜?×+Ñ+Ø˜˜�8ˆDÙˆb�'˜4Ô à$&€IÞÜ*Ø�E ¨-¸ó
ˆ	ö Ü�ŠØÜ””E‘œE "Ó,Ó-Ü�_Š_˜U F¨Y¯^©^Ñ$;¸QÀÓHÐIô	
ö ØŸ+œ+ˆJØ" 2 A˜‰IˆC�Ø�1�Qˆx×Ñ×!Ó!ä  ›_°Ñ1×C°jÀ±m�
ß�:Ù˜"˜c 4Ö(ñ &ñ 
ˆ"ˆg�sÔäˆr�7×ÑØ
�‰�
ð øô[ ó "Ø" 4 &¨Ð0ˆÜ�c‹l Ð!ûð"ús   É` à
`#à`à`#c                óp   ^• SSK Jn  / mSU4S jjnU" 5       n Xl        [        XSU5        U ?T$ ! U ?f = f)z4Return a list of PNG chunks representing this image.r   )ÚBytesIOc                óŠ   >• SR                  U5      n[        [        U[        U5      5      5      nTR                  XU45        g )Nr8   )rì  rî  rO   rv   )rV   rf   rM   rï  r‹   r²   s        €r9   rv   Úgetchunks.<locals>.appendï  s6   ø€ Ø—H‘H˜T“Nˆ	Ü”&˜¤F¨3£KÓ0Ó1ˆØ�‰�s sÐ+Õ,r8   rÏ   ©rV   r—   rf   rœ   rM   rœ   r˜   r™   )Úior]  r  r  )r²  Úparamsr]  rv   rV   r²   s        @r9   Ú	getchunksrc  é  sB   ø€ åà€F÷-ñ
 
‹€BðØŒÜˆb�b˜&Ô!àˆNà€Møð ‰Nús   š1 ±5z.pngz.apngz	image/png)rF   rœ   r˜   rœ   )r   )rM   rœ   rN   r�   r˜   r�   )r  rœ   r˜   rÎ   r`  )r²  r  rV   r—   rô  rú  r¹  r¥   rš  r¥   r  úImage.Image | Noner  zlist[Image.Image]r˜   rd  )r²  r  rV   r—   r(  rÐ   r˜   r™   )r²  r  rV   r—   r(  rÐ   rô  rú  r'  rÎ   r˜   r™   )r²  r  rb  r   r˜   z list[tuple[bytes, bytes, bytes]])KÚ
__future__r   r  ÚloggingÚrer†   r]  r@   Úcollections.abcr   Úenumr   Útypingr   r   r   r	   r
   r   rÏ   r   r   r   r   r   Ú_binaryr   r  r   ra   r   r   r  r   rî  r   Ú	getLoggerr0   r}   Úcompiler  rb   r~  r  r  Ú	SAFEBLOCKrC   rê   r-   r;   rJ   rO   rQ   r¥   r    r¯   rÒ   rØ   r€  r‚  rB  rð  rò  rþ  r  r%  r)  r  rc  Úregister_openrà  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mimer/   r8   r9   Ú<module>rt     sØ  ðõB #ã Û Û 	Û Û Û Ý $Ý ß E× Eç GÕ GÝ !Ý !Ý Ý !Ý !æÝà	×	Ò	˜8Ó	$€à	�Š�LÓ	!×	'Ñ	'€ð 
€ð ØØØØàØàØØØàØàØ!ñ+
€ð2 —*’*Ð0Ó1€à×$Ñ$€ðð
 �~Ñ%€ðôˆwô ô*ˆGô ôö/÷[ñ [ô|ˆ3ô ÷6Y3ñ Y3ô@�:ô ôd4�ô d4ôV ôQ!�9×&Ñ&ô Q!ðr
 
!Ø$Ø$Ø$Ø	 Ø
"Ø	$Ø'Ø(Ø$Ø$Ø$Ø	 Ø$Ø&ñ!€	ô(÷+ñ +÷
ñ 
ô ˆZô  ðKØðKàðKð ðKð ð	Kð
 ðKð &ðKð %ðKð ôKô\+ð "*ØðNØðNàðNð ðNð ð	Nð
 ðNð 
õNôjð2 × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �L×'Ñ'¨Ô /Ø × Ò ˜×+Ñ+¨YÔ 7à × Ò ˜,×-Ñ-°¸Ð/@Ô Aà × Ò �L×'Ñ'¨Õ 5r8   