§
    þÜÒj×Ù  ã                  óF  — d dl mZ h d£Zd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZmZmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ  ddl!m"Z" dZ#e#rd dl$m%Z% d dlm&Z&m'Z'm(Z( ddlm)Z)  ej*        e+¦  «        Z, ej-        d¦  «        j.        Z/dZ0dddddddddddd d!d"d#d$œZ1 ej-        d%¦  «        Z2ej3        Z4	 d&e4z  Z5	  G d'„ d(e
¦  «        Z6 G d)„ d*e
¦  «        Z7dvd.„Z8dwdxd2„Z9 G d3„ d4¦  «        Z: G d5„ d6e;¦  «        Z< G d7„ d8¦  «        Z= G d9„ d:e¦  «        Z> G d;„ d<e:¦  «        Z?dyd?„Z@ G d@„ dAej        ¦  «        ZAdBdCdDdEdFdGdHdHdIdJdKdLdMdNdOœZBdzdT„ZC G dU„ dV¦  «        ZD G dW„ dX¦  «        ZEd{d]„ZF G d^„ d_e¦  «        ZGd|di„ZHd}dl„ZIeCdfd~dn„ZJddr„ZK ejL        eAjM        eAe@¦  «          ejN        eAjM        eJ¦  «          ejO        eAjM        eI¦  «          ejP        eAjM        dsdtg¦  «          ejQ        eAjM        du¦  «         dS )€é    )Úannotations>   ú	PIL._utilúPIL._binaryÚzlibÚstructÚwarningsÚ	fractionsÚ	itertoolsN)ÚIntEnum)ÚFraction)ÚIOÚ
NamedTupleÚcasté   )ÚImageÚ
ImageChopsÚ	ImageFileÚImagePaletteÚImageSequence)Úi16be)Úi32be)Úo8)Úo16be)Úo32be)ÚDeferredErrorF)ÚCallable)ÚAnyÚNoReturnÚSelf)Ú_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   )r1   r/   )r2   r/   )r   é   )r/   r3   )r0   r3   )r1   r3   )r1   r0   )r2   r0   )r1   é   )r2   r4   s   ^ÿ* ÿ*$é@   c                  ó   — e Zd ZdZ	 dZ	 dZdS )ÚDisposalr   r   r/   N)Ú__name__Ú
__module__Ú__qualname__ÚOP_NONEÚOP_BACKGROUNDÚOP_PREVIOUS© ó    ú^C:\Users\johnn\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL/PngImagePlugin.pyr7   r7   w   s1   € € € € € Ø€Gðð €Mðð
 €Kðð r?   r7   c                  ó   — e Zd ZdZ	 dZdS )ÚBlendr   r   N)r8   r9   r:   Ú	OP_SOURCEÚOP_OVERr>   r?   r@   rB   rB   Œ   s%   € € € € € Ø€Iðð
 €Gðð r?   rB   ÚsÚbytesÚreturnc                ó’   — t          j        ¦   «         }|                     | t          ¦  «        }|j        rd}t          |¦  «        ‚|S )Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)r   ÚdecompressobjÚ
decompressÚMAX_TEXT_CHUNKÚunconsumed_tailÚ
ValueError)rE   ÚdobjÚ	plaintextÚmsgs       r@   Ú_safe_zlib_decompressrQ   š   sE   € ÝÔÑÔ€DØ—’ ¥>Ñ2Ô2€IØÔð ØMˆÝ˜‰oŒoÐØÐr?   ÚdataÚseedÚintc                ó2   — t          j        | |¦  «        dz  S )Nl   ÿÿ )r   Úcrc32)rR   rS   s     r@   Ú_crc32rW   £   s   € ÝŒ:�d˜DÑ!Ô! JÑ.Ð.r?   c                  ó`   — e Zd Zdd„Zdd„Zdd	„Zd d„Zd!d„Zd"d„Zd#d„Z	d$d„Z
d$d„Zd%d&d„ZdS )'ÚChunkStreamÚfpú	IO[bytes]rG   ÚNonec                ó"   — || _         g | _        d S ©N)rZ   Úqueue)ÚselfrZ   s     r@   Ú__init__zChunkStream.__init__¬   s   € Ø$&ˆŒØ:<ˆŒ
ˆ
ˆ
r?   útuple[bytes, int, int]c                ó²  — d}| j         €J ‚| j        r8| j                             ¦   «         \  }}}| j                              |¦  «         nL| j                              d¦  «        }|dd…         }| j                              ¦   «         }t          |¦  «        }t          |¦  «        s.t          j	        s"dt          |¦  «        › d�}t          |¦  «        ‚|||fS )z.Fetch a new chunk. Returns header information.Nr1   r0   zbroken PNG file (chunk ú))rZ   r_   ÚpopÚseekÚreadÚtellÚi32Úis_cidr   ÚLOAD_TRUNCATED_IMAGESÚreprÚSyntaxError)r`   ÚcidÚposÚlengthrE   rP   s         r@   rg   zChunkStream.read°   sÐ   € àˆàŒwÐ"Ð"Ð"ØŒ:ð 	Ø#œzŸ~š~Ñ/Ô/ÑˆC��fØŒG�LŠL˜ÑÔÐÐà”—’˜Q‘”ˆAØ�A�B�B”%ˆCØ”'—,’,‘.”.ˆCÝ˜‘V”VˆFå�c‰{Œ{ð 	'ÝÔ2ð 'Ø<µ°S±	´	Ð<Ð<Ð<�Ý! #Ñ&Ô&Ð&à�C˜ÐÐr?   r   c                ó   — | S r^   r>   ©r`   s    r@   Ú	__enter__zChunkStream.__enter__Å   s   € Øˆr?   ÚargsÚobjectc                ó.   — |                       ¦   «          d S r^   )Úclose)r`   rt   s     r@   Ú__exit__zChunkStream.__exit__È   s   € Ø�
Š
‰Œˆˆˆr?   c                ó"   — d x| _         | _        d S r^   )r_   rZ   rr   s    r@   rw   zChunkStream.closeË   s   € Ø#Ð#ˆŒ
�T”W�W�Wr?   rn   rF   ro   rT   rp   c                óR   — | j         €J ‚| j                              |||f¦  «         d S r^   )r_   Úappend©r`   rn   ro   rp   s       r@   ÚpushzChunkStream.pushÎ   s3   € ØŒzÐ%Ð%Ð%ØŒ
×Ò˜3  VÐ,Ñ-Ô-Ð-Ð-Ð-r?   c                óœ   — t                                d|||¦  «          t          | d|                     d¦  «        › �¦  «        ||¦  «        S )z"Call the appropriate chunk handlerzSTREAM %r %s %sÚchunk_Úascii)ÚloggerÚdebugÚgetattrÚdecoder|   s       r@   ÚcallzChunkStream.callÒ   sN   € õ 	�ŠÐ&¨¨S°&Ñ9Ô9Ð9Ø<�w�tÐ; c§j¢j°Ñ&9Ô&9Ð;Ð;Ñ<Ô<¸SÀ&ÑIÔIÐIr?   rR   c                óÊ  — t           j        r&|d         dz	  dz  r|                      ||¦  «         dS | j        €J ‚	 t	          |t	          |¦  «        ¦  «        }t          | j                             d¦  «        ¦  «        }||k    r"dt          |¦  «        › d�}t          |¦  «        ‚dS # t          j
        $ r(}dt          |¦  «        › d�}t          |¦  «        |‚d}~ww xY w)	zRead and verify checksumr   é   r   Nr0   z(broken PNG file (bad header checksum in rd   z(broken PNG file (incomplete checksum in )r   rk   Úcrc_skiprZ   rW   ri   rg   rl   rm   r   Úerror)r`   rn   rR   Úcrc1Úcrc2rP   Úes          r@   ÚcrczChunkStream.crcØ   sù   € õ Ô*ð 	°°A´¸!±¸a±ð 	Ø�MŠM˜#˜tÑ$Ô$Ð$ØˆFàŒwÐ"Ð"Ð"ð	*Ý˜$¥ s¡¤Ñ,Ô,ˆDÝ�t”w—|’| A‘”Ñ'Ô'ˆDØ�tŠ|ˆ|ØMÅÀcÁÄÐMÐMÐM�Ý! #Ñ&Ô&Ð&ð ˆ|øõ Œ|ð 	*ð 	*ð 	*ØI½TÀ#¹Y¼YÐIÐIÐIˆCÝ˜cÑ"Ô"¨Ð)øøøøð	*øøøs   ½A,B+ Â+C"Â:#CÃC"c                óL   — | j         €J ‚| j                              d¦  «         dS )zRead checksumNr0   )rZ   rg   )r`   rn   rR   s      r@   rˆ   zChunkStream.crc_skipí   s'   € ð ŒwÐ"Ð"Ð"ØŒ�Š�Q‰Œˆˆˆr?   ó   IENDÚendchunkúlist[bytes]c                ó:  — g }| j         €J ‚	 	 |                      ¦   «         \  }}}n)# t          j        $ r}d}t	          |¦  «        |‚d }~ww xY w||k    rnD|                      |t          j        | j         |¦  «        ¦  «         |                     |¦  «         ŒŽ|S )NTztruncated PNG file)	rZ   rg   r   r‰   ÚOSErrorr�   r   Ú
_safe_readr{   )r`   r�   Úcidsrn   ro   rp   rŒ   rP   s           r@   ÚverifyzChunkStream.verifyó   sº   € ð ˆàŒwÐ"Ð"Ð"ð
	ð*Ø#'§9¢9¡;¤;Ñ ��S˜&˜&øÝ”<ð *ð *ð *Ø*�Ý˜c‘l”l¨Ð)øøøøð*øøøð �hŠˆØØ�HŠH�S�)Ô.¨t¬w¸Ñ?Ô?Ñ@Ô@Ð@Ø�KŠK˜ÑÔÐð
	ð ˆs   Ž' §A¶AÁAN©rZ   r[   rG   r\   )rG   rb   )rG   r   )rt   ru   rG   r\   ©rG   r\   )rn   rF   ro   rT   rp   rT   rG   r\   )rn   rF   ro   rT   rp   rT   rG   rF   )rn   rF   rR   rF   rG   r\   )r�   )r�   rF   rG   r‘   )r8   r9   r:   ra   rg   rs   rx   rw   r}   r…   r�   rˆ   r–   r>   r?   r@   rY   rY   «   så   € € € € € ð=ð =ð =ð =ð ð  ð  ð  ð*ð ð ð ðð ð ð ð$ð $ð $ð $ð.ð .ð .ð .ðJð Jð Jð Jð*ð *ð *ð *ð*ð ð ð ðð ð ð ð ð ð r?   rY   c                  óD   — e Zd ZU dZded<   ded<   e	 ddd„¦   «         ZdS )ÚiTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    zstr | bytes | NoneÚlangÚtkeyNÚtextÚstrú
str | NonerG   r   c                óX   — t                                | |¦  «        }||_        ||_        |S )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
        )rž   Ú__new__r›   rœ   )Úclsr�   r›   rœ   r`   s        r@   r¡   ziTXt.__new__  s*   € õ �{Š{˜3 Ñ%Ô%ˆØˆŒ	ØˆŒ	Øˆr?   )NN)r�   rž   r›   rŸ   rœ   rŸ   rG   r   )r8   r9   r:   Ú__doc__Ú__annotations__Ústaticmethodr¡   r>   r?   r@   rš   rš   	  s`   € € € € € € ðð ð ÐÐÑØÐÐÑààDHðð ð ð ñ „\ðð ð r?   rš   c                  ó@   — e Zd ZdZdd„Zddd„Z	 	 	 ddd„Z	 ddd„ZdS )ÚPngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    rG   r\   c                ó   — g | _         d S r^   )Úchunksrr   s    r@   ra   zPngInfo.__init__*  s   € Ø79ˆŒˆˆr?   Frn   rF   rR   Ú
after_idatÚboolc                ó@   — | j                              |||f¦  «         dS )a"  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©   r{   )r`   rn   rR   rª   s       r@   ÚaddzPngInfo.add-  s'   € ð 	Œ×Ò˜C  zÐ2Ñ3Ô3Ð3Ð3Ð3r?   Ú Úkeyústr | bytesÚvaluer›   rœ   Úzipc                ó*  — t          |t          ¦  «        s|                     dd¦  «        }t          |t          ¦  «        s|                     dd¦  «        }t          |t          ¦  «        s|                     dd¦  «        }t          |t          ¦  «        s|                     dd¦  «        }|r<|                      d|dz   |z   dz   |z   dz   t	          j        |¦  «        z   ¦  «         dS |                      d|dz   |z   dz   |z   dz   |z   ¦  «         dS )	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     ó    ó      N)Ú
isinstancerF   Úencoder­   r   Úcompress)r`   r¯   r±   r›   rœ   r²   s         r@   Úadd_itxtzPngInfo.add_itxt9  s)  € õ$ ˜#�uÑ%Ô%ð 	2Ø—*’*˜Y¨Ñ1Ô1ˆCÝ˜%¥Ñ'Ô'ð 	4Ø—L’L ¨(Ñ3Ô3ˆEÝ˜$¥Ñ&Ô&ð 	2Ø—;’;˜w¨Ñ1Ô1ˆDÝ˜$¥Ñ&Ô&ð 	2Ø—;’;˜w¨Ñ1Ô1ˆDàð 	UØ�HŠHØØ�kÑ! DÑ(¨5Ñ0°4Ñ7¸%Ñ?Å$Ä-ÐPUÑBVÔBVÑVñô ð ð ð ð
 �HŠH�W˜c I™o°Ñ4°uÑ<¸tÑCÀeÑKÈeÑSÑTÔTÐTÐTÐTr?   ústr | bytes | iTXtc                ó8  — t          |t          ¦  «        r6|                      |||j        �|j        nd|j        �|j        nd|¬¦  «        S t          |t
          ¦  «        s@	 |                     dd¦  «        }n(# t          $ r |                      |||¬¦  «        cY S w xY wt          |t
          ¦  «        s|                     dd¦  «        }|r0|                      d|dz   t          j
        |¦  «        z   ¦  «         dS |                      d|d	z   |z   ¦  «         dS )
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

        Nr?   )r²   r´   rµ   ó   zTXtó     ó   tEXtr¸   )rº   rš   r½   r›   rœ   rF   r»   ÚUnicodeErrorr­   r   r¼   )r`   r¯   r±   r²   s       r@   Úadd_textzPngInfo.add_text\  s@  € õ �e�TÑ"Ô"ð 	Ø—=’=ØØØ#œjÐ4�”
�
¸#Ø#œjÐ4�”
�
¸#Øð !ñ ô ð õ ˜%¥Ñ'Ô'ð 	:ð:ØŸš Y°Ñ9Ô9��øÝð :ð :ð :Ø—}’} S¨%°S�}Ñ9Ô9Ð9Ð9Ð9ð:øøøõ ˜#�uÑ%Ô%ð 	2Ø—*’*˜Y¨Ñ1Ô1ˆCàð 	3Ø�HŠH�W˜c G™m­d¬m¸EÑ.BÔ.BÑBÑCÔCÐCÐCÐCà�HŠH�W˜c E™k¨EÑ1Ñ2Ô2Ð2Ð2Ð2s   Á"A9 Á9"BÂBNr˜   ©F)rn   rF   rR   rF   rª   r«   rG   r\   )r®   r®   F)r¯   r°   r±   r°   r›   r°   rœ   r°   r²   r«   rG   r\   )r¯   r°   r±   r¾   r²   r«   rG   r\   )r8   r9   r:   r£   ra   r­   r½   rÄ   r>   r?   r@   r§   r§   $  s•   € € € € € ðð ð
:ð :ð :ð :ð
4ð 
4ð 
4ð 
4ð 
4ð  ØØð!Uð !Uð !Uð !Uð !UðH HMð!3ð !3ð !3ð !3ð !3ð !3ð !3r?   r§   c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_RewindStatez dict[str | tuple[int, int], Any]Úinfozlist[ImageFile._Tile]Útilez
int | NoneÚseq_numN©r8   r9   r:   r¤   r>   r?   r@   rÇ   rÇ   „  s6   € € € € € € Ø*Ð*Ð*Ñ*ØÐÐÑØÐÐÑÐÐr?   rÇ   c                  óÀ   ‡ — e Zd Zd ˆ fd„Zd!d„Zd"d	„Zd"d
„Zd#d„Zd#d„Zd$d„Z	d$d„Z
d#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zˆ xZS )%Ú	PngStreamrZ   r[   rG   r\   c                ó  •— t          ¦   «                              |¦  «         i | _        i | _        d| _        d| _        g | _        d | _        d | _        d | _	        d | _
        t          i g d ¦  «        | _        d| _        d S )N)r   r   r®   r   )Úsuperra   Úim_infoÚim_textÚim_sizeÚim_modeÚim_tileÚ
im_paletteÚim_custom_mimetypeÚim_n_framesÚ_seq_numrÇ   Úrewind_stateÚtext_memory)r`   rZ   Ú	__class__s     €r@   ra   zPngStream.__init__‹  s€   ø€ Ý‰Œ×Ò˜ÑÔÐð :<ˆŒØ.0ˆŒØˆŒØˆŒØ.0ˆŒØ48ˆŒØ.2ˆÔØ'+ˆÔØ$(ˆŒÝ(¨¨R°Ñ6Ô6ˆÔàˆÔÐÐr?   ÚchunklenrT   c                óz   — | xj         |z  c_         | j         t          k    rd| j         › d�}t          |¦  «        ‚d S )Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)rÚ   ÚMAX_TEXT_MEMORYrM   )r`   rÜ   rP   s      r@   Úcheck_text_memoryzPngStream.check_text_memoryœ  sY   € ØÐÔ˜HÑ$ÐÔØÔ�oÒ-Ð-ð6ØÔ#ð6ð 6ð 6ð õ ˜S‘/”/Ð!ð .Ð-r?   c                ót   — t          | j                             ¦   «         | j        | j        ¦  «        | _        d S r^   )rÇ   rÐ   ÚcopyrÔ   rØ   rÙ   rr   s    r@   Úsave_rewindzPngStream.save_rewind¥  s5   € Ý(ØŒL×ÒÑÔØŒLØŒMñ
ô 
ˆÔÐÐr?   c                ó�   — | j         j                             ¦   «         | _        | j         j        | _        | j         j        | _        d S r^   )rÙ   rÈ   rá   rÐ   rÉ   rÔ   rÊ   rØ   rr   s    r@   ÚrewindzPngStream.rewind¬  s9   € ØÔ(Ô-×2Ò2Ñ4Ô4ˆŒØÔ(Ô-ˆŒØÔ)Ô1ˆŒˆˆr?   ro   rp   rF   c                óî  — | j         €J ‚t          j        | j         |¦  «        }|                     d¦  «        }t                               d|d |…         ¦  «         ||dz            }t                               d|¦  «         |dk    rd|› d�}t          |¦  «        ‚	 t          ||dz   d …         ¦  «        }n2# t          $ r t          j	        rd }n‚ Y nt          j        $ r d }Y nw xY w|| j        d	<   |S )
Nr¸   ziCCP profile name %rr   zCompression method %sr   úUnknown compression method z in iCCP chunkr/   Úicc_profile)rZ   r   r”   Úfindr�   r‚   rm   rQ   rM   rk   r   r‰   rÐ   )r`   ro   rp   rE   ÚiÚcomp_methodrP   rç   s           r@   Ú
chunk_iCCPzPngStream.chunk_iCCP±  s$  € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆð �FŠF�5‰MŒMˆÝ�ŠÐ+¨Q¨r°¨r¬UÑ3Ô3Ð3Ø˜˜A™”hˆÝ�ŠÐ,¨kÑ:Ô:Ð:Ø˜!ÒÐØK°ÐKÐKÐKˆCÝ˜cÑ"Ô"Ð"ð	Ý/°°!°a±%°'°'´
Ñ;Ô;ˆKˆKøÝð 	ð 	ð 	ÝÔ.ð Ø"��àð �õ Œzð 	ð 	ð 	ØˆKˆKˆKð	øøøà&1ˆŒ�]Ñ#Øˆs   ÂB9 Â9C(ÃC(Ã'C(c                óª  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚t          |d¦  «        t          |d¦  «        f| _        	 t          |d         |d         f         \  | _        | _	        n# t          $ r Y nw xY w|d         r
d| j        d	<   |d
         rd}t          |¦  «        ‚|S )Né   zTruncated IHDR chunkr   r0   r1   é	   é   r   Ú	interlaceé   zunknown filter category)rZ   r   r”   rk   rM   ri   rÒ   Ú_MODESrÓ   Ú
im_rawmodeÚKeyErrorrÐ   rm   ©r`   ro   rp   rE   rP   s        r@   Ú
chunk_IHDRzPngStream.chunk_IHDRÍ  sì   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�BŠ;ˆ;ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ý˜1˜a‘y”y¥# a¨¡)¤)Ð+ˆŒð	Ý,2°A°a´D¸!¸A¼$°<Ô,@Ñ)ˆDŒL˜$œ/˜/øÝð 	ð 	ð 	ØˆDð	øøøàˆRŒ5ð 	*Ø()ˆDŒL˜Ñ%ØˆRŒ5ð 	#Ø+ˆCÝ˜cÑ"Ô"Ð"Øˆs   Á/(B Â
B%Â$B%r   c                ó  — d| j         v r)t          j        d| j         d         || j        ¦  «        g}n8| j        �
d| j         d<   t          j        dddg| j        ¢R || j        ¦  «        g}|| _        || _        d}t          |¦  «        ‚)NÚbboxr²   TÚdefault_imager   zimage data found)	rÐ   r   Ú_Tileró   r×   rÒ   rÔ   Úim_idatÚEOFError)r`   ro   rp   rÉ   rP   s        r@   Ú
chunk_IDATzPngStream.chunk_IDATâ  s�   € à�T”\Ð!Ð!Ý”O E¨4¬<¸Ô+?ÀÀdÄoÑVÔVÐWˆDˆDàÔÐ+Ø04�”˜_Ñ-Ý”O E¨A¨qÐ+@°4´<Ð+@Ð+@À#ÀtÄÑWÔWÐXˆDØˆŒØˆŒØ ˆÝ�s‰mŒmÐr?   c                ó$   — d}t          |¦  «        ‚)Nzend of PNG image)rü   )r`   ro   rp   rP   s       r@   Ú
chunk_IENDzPngStream.chunk_IENDï  s   € Ø ˆÝ�s‰mŒmÐr?   c                ót   — | j         €J ‚t          j        | j         |¦  «        }| j        dk    r	d|f| _        |S )Nr(   r'   )rZ   r   r”   rÓ   rÕ   ©r`   ro   rp   rE   s       r@   Ú
chunk_PLTEzPngStream.chunk_PLTEó  sA   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØŒ<˜3ÒÐØ# Q˜hˆDŒOØˆr?   c                ó€  — | j         €J ‚t          j        | j         |¦  «        }| j        dk    rKt                               |¦  «        r&|                     d¦  «        }|dk    r
|| j        d<   nÏ|| j        d<   nÄ| j        dv r»|| j        dk    rdndk     rt          j        r|S d	}t          |¦  «        ‚| j        d
k    rt          |¦  «        rdnd| j        d<   nb| j        dv rt          |¦  «        | j        d<   nA| j        dk    r6t          |¦  «        t          |d¦  «        t          |d¦  «        f| j        d<   |S )Nr(   r¸   r   Útransparency)r!   r"   r%   r'   r'   r4   r/   zTruncated tRNS chunkr!   éÿ   )r"   r%   r0   )rZ   r   r”   rÓ   Ú_simple_paletteÚmatchrè   rÐ   rk   rM   Úi16)r`   ro   rp   rE   ré   rP   s         r@   Ú
chunk_tRNSzPngStream.chunk_tRNSû  sQ  € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØŒ<˜3ÒÐÝ×$Ò$ QÑ'Ô'ð 	1ð —F’F˜5‘M”M�Ø˜’6�6Ø34�D”L Ñ0øð 01�”˜^Ñ,Ð,ØŒ\Ð6Ð6Ð6à˜dœl¨eÒ3Ð3˜˜¸Ò;Ð;ÝÔ2ð Ø�HØ,�Ý  ‘o”oÐ%ØŒ|˜sÒ"Ð"Ý69¸!±f´fÐ/C¨s¨sÀ!�”˜^Ñ,Ð,Ø” Ð.Ð.Ý/2°1©v¬v�”˜^Ñ,Ð,Ø” Ò&Ð&Ý/2°1©v¬vµs¸1¸a±y´yÅ#ÀaÈÁ)Ä)Ð/K�”˜^Ñ,Øˆr?   c                óÊ   — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚t          |¦  «        dz  | j        d<   |S )Nr0   zTruncated gAMA chunkç     jø@Úgamma©rZ   r   r”   rk   rM   ri   rÐ   rõ   s        r@   Ú
chunk_gAMAzPngStream.chunk_gAMA  sj   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�AŠ:ˆ:ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ý # A¡¤¨Ñ 1ˆŒ�WÑØˆr?   c                ó  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚t          j        d|d d…         ¦  «        }t          d„ |D ¦   «         ¦  «        | j        d<   |S )Né    zTruncated cHRM chunkz>8Ic              3  ó    K  — | ]	}|d z  V — Œ
dS )r  Nr>   )Ú.0Úelts     r@   ú	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>1  s&   è è € Ð,PÐ,PÀ¨S°8©^Ð,PÐ,PÐ,PÐ,PÐ,PÐ,Pr?   Úchromaticity)	rZ   r   r”   rk   rM   r   ÚunpackÚtuplerÐ   )r`   ro   rp   rE   rP   Úraw_valss         r@   Ú
chunk_cHRMzPngStream.chunk_cHRM%  s‘   € ð ŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�BŠ;ˆ;ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ý”= ¨¨#¨2¨#¬Ñ/Ô/ˆÝ',Ð,PÐ,PÀxÐ,PÑ,PÔ,PÑ'PÔ'PˆŒ�^Ñ$Øˆr?   c                ó¶   — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚|d         | j        d<   |S )Nr   zTruncated sRGB chunkr   Úsrgb)rZ   r   r”   rk   rM   rÐ   rõ   s        r@   Ú
chunk_sRGBzPngStream.chunk_sRGB4  se   € ð ŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�AŠ:ˆ:ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ø  œtˆŒ�VÑØˆr?   c                ó@  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚t          |d¦  «        t          |d¦  «        }}|d         }|dk    r|dz  |dz  f}|| j        d<   n|dk    r||f| j        d	<   |S )
Nrî   zTruncated pHYs chunkr   r0   r1   r   ç¦
F%uš?ÚdpiÚaspectr  )	r`   ro   rp   rE   rP   ÚpxÚpyÚunitr  s	            r@   Ú
chunk_pHYszPngStream.chunk_pHYsE  s¸   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�AŠ:ˆ:ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ý�Q˜‘”�C  1™IœIˆBˆØ�ŒtˆØ�1Š9ˆ9Ø�v‘+˜r F™{Ð*ˆCØ"%ˆDŒL˜ÑÐØ�QŠYˆYØ%'¨ VˆDŒL˜Ñ"Øˆr?   c                ó‚  — | j         €J ‚t          j        | j         |¦  «        }	 |                     dd¦  «        \  }}n# t          $ r |}d}Y nw xY w|rj|                     dd¦  «        }|                     dd¦  «        }|dk    r|n|| j        |<   || j        |<   |                      t          |¦  «        ¦  «         |S )Nr¸   r   r?   r´   rµ   Úreplaces   exif)
rZ   r   r”   ÚsplitrM   r„   rÐ   rÑ   rß   Úlen)r`   ro   rp   rE   ÚkÚvÚk_strÚv_strs           r@   Ú
chunk_tEXtzPngStream.chunk_tEXtW  sÞ   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆð	Ø—7’7˜5 !Ñ$Ô$‰DˆAˆqˆqøÝð 	ð 	ð 	àˆAØˆAˆAˆAð	øøøð ð 	/Ø—H’H˜Y¨Ñ1Ô1ˆEØ—H’H˜Y¨	Ñ2Ô2ˆEà'(¨G¢| | ! !¸ˆDŒL˜ÑØ"'ˆDŒL˜ÑØ×"Ò"¥3 u¡:¤:Ñ.Ô.Ð.àˆs   ¥? ¿AÁAc                óX  — | j         €J ‚t          j        | j         |¦  «        }	 |                     dd¦  «        \  }}n# t          $ r |}d}Y nw xY w|r	|d         }nd}|dk    rd|› d�}t          |¦  «        ‚	 t          |dd …         ¦  «        }n2# t          $ r t          j        rd}n‚ Y nt          j	        $ r d}Y nw xY w|rb| 
                    dd¦  «        }| 
                    dd	¦  «        }	|	x| j        |<   | j        |<   |                      t          |	¦  «        ¦  «         |S )
Nr¸   r   r?   r   ræ   z in zTXt chunkr´   rµ   r&  )rZ   r   r”   r'  rM   rm   rQ   rk   r   r‰   r„   rÐ   rÑ   rß   r(  )
r`   ro   rp   rE   r)  r*  rê   rP   r+  r,  s
             r@   Ú
chunk_zTXtzPngStream.chunk_zTXtk  s‡  € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆð	Ø—7’7˜5 !Ñ$Ô$‰DˆAˆqˆqøÝð 	ð 	ð 	ØˆAØˆAˆAˆAð	øøøð ð 	Ø˜Aœ$ˆKˆKàˆKØ˜!ÒÐØK°ÐKÐKÐKˆCÝ˜cÑ"Ô"Ð"ð	Ý% a¨¨¨¤eÑ,Ô,ˆAˆAøÝð 	ð 	ð 	ÝÔ.ð Ø��àð �õ Œzð 	ð 	ð 	ØˆAˆAˆAð	øøøð ð 	/Ø—H’H˜Y¨Ñ1Ô1ˆEØ—H’H˜Y¨	Ñ2Ô2ˆEà8=Ð=ˆDŒL˜Ñ $¤,¨uÑ"5Ø×"Ò"¥3 u¡:¤:Ñ.Ô.Ð.àˆs'   ¥? ¿AÁAÁ<B ÂCÂ0CÃCc                ó†  — | j         €J ‚t          j        | j         |¦  «        x}}	 |                     dd¦  «        \  }}n# t          $ r |cY S w xY wt          |¦  «        dk     r|S |d         |d         |dd …         }}}	 |                     dd¦  «        \  }}	}
n# t          $ r |cY S w xY w|dk    rJ|dk    rB	 t          |
¦  «        }
n3# t          $ r t          j        r|cY S ‚ t          j	        $ r |cY S w xY w|S |dk    r
|
| j
        d<   	 |                     dd¦  «        }|                     d	d¦  «        }|	                     d	d¦  «        }|
                     d	d¦  «        }n# t          $ r |cY S w xY wt          |||¦  «        x| j
        |<   | j        |<   |                      t          |¦  «        ¦  «         |S )
Nr¸   r   r/   r   s   XML:com.adobe.xmpÚxmpr´   rµ   r¶   )rZ   r   r”   r'  rM   r(  rQ   rk   r   r‰   rÐ   r„   rÃ   rš   rÑ   rß   )r`   ro   rp   ÚrrE   r)  ÚcfÚcmr›   Útkr*  r+  Úlang_strÚtk_strr,  s                  r@   Ú
chunk_iTXtzPngStream.chunk_iTXtŽ  s0  € àŒwÐ"Ð"Ð"ÝÔ$ T¤W¨fÑ5Ô5Ð5ˆˆAð	Ø—7’7˜5 !Ñ$Ô$‰DˆAˆqˆqøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøåˆq‰6Œ6�AŠ:ˆ:ØˆHØ�a”D˜!˜Aœ$  ! " "¤�ˆBˆð	ØŸ'š' %¨Ñ+Ô+‰KˆD�"�a�aøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøà�Š7ˆ7Ø�QŠwˆwðÝ-¨aÑ0Ô0�A�AøÝ!ð ð ð Ý Ô6ð Ø ˜˜˜àÝ”zð ð ð Ø�H�H�Hðøøøð �ØÐ$Ò$Ð$Ø"#ˆDŒL˜Ñð	Ø—H’H˜Y¨Ñ1Ô1ˆEØ—{’{ 7¨HÑ5Ô5ˆHØ—Y’Y˜w¨Ñ1Ô1ˆFØ—H’H˜W hÑ/Ô/ˆEˆEøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøõ 59¸ÀÈ&Ñ4QÔ4QÐQˆŒ�UÑ˜dœl¨5Ñ1Ø×Ò�s 5™zœzÑ*Ô*Ð*àˆsN   §A ÁAÁAÂB ÂB-Â,B-Â=C ÃC;Ã'C;Ã:C;ÄAE* Å*E9Å8E9c                óf   — | j         €J ‚t          j        | j         |¦  «        }d|z   | j        d<   |S )Nó   Exif  Úexif)rZ   r   r”   rÐ   r  s       r@   Ú
chunk_eXIfzPngStream.chunk_eXIf¹  s:   € ØŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ.°Ñ2ˆŒ�VÑØˆr?   c                óŒ  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚| j        �d | _        t          j        d¦  «         |S t          |¦  «        }|dk    s|dk    rt          j        d¦  «         |S || _        t          |d¦  «        | j	        d<   d| _
        |S )	Nr1   z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possibler   l        r0   Úloopz
image/apng)rZ   r   r”   rk   rM   r×   r   Úwarnri   rÐ   rÖ   )r`   ro   rp   rE   rP   Ún_framess         r@   Ú
chunk_acTLzPngStream.chunk_acTLÀ  sÒ   € ØŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�AŠ:ˆ:ÝÔ.ð Ø�Ø6ˆCÝ˜S‘/”/Ð!ØÔÐ'Ø#ˆDÔÝŒMÐPÑQÔQÐQØˆHÝ�q‘6”6ˆØ�qŠ=ˆ=˜H zÒ1Ð1ÝŒMÐPÑQÔQÐQØˆHØ#ˆÔÝ" 1 a™yœyˆŒ�VÑØ".ˆÔØˆr?   c                ó  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚t          |¦  «        }| j        €|dk    s| j        �| j        |dz
  k    rd}t          |¦  «        ‚|| _        t          |d¦  «        t          |d¦  «        }}t          |d¦  «        t          |d	¦  «        }	}| j        \  }
}||z   |
k    s	|	|z   |k    rd
}t          |¦  «        ‚||	||z   |	|z   f| j	        d<   t          |d¦  «        t          |d¦  «        }}|dk    rd}t          |¦  «        t          |¦  «        z  dz  | j	        d<   |d         | j	        d<   |d         | j	        d<   |S )Né   z"APNG contains truncated fcTL chunkr   r   ú#APNG contains frame sequence errorsr0   r1   rï   r2   zAPNG contains invalid framesrø   é   é   éd   éè  Údurationé   Údisposalé   Úblend)rZ   r   r”   rk   rM   ri   rØ   rm   rÒ   rÐ   r  Úfloat)r`   ro   rp   rE   rP   ÚseqÚwidthÚheightr!  r"  Úim_wÚim_hÚ	delay_numÚ	delay_dens                 r@   Ú
chunk_fcTLzPngStream.chunk_fcTLÕ  s—  € ØŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�BŠ;ˆ;ÝÔ.ð Ø�Ø6ˆCÝ˜S‘/”/Ð!Ý�!‰fŒfˆØŒMÐ! c¨Q¢h hØŒMÐ%¨$¬-¸3À¹7Ò*BÐ*Bà7ˆCÝ˜cÑ"Ô"Ð"ØˆŒÝ˜A˜q™	œ	¥3 q¨!¡9¤9ˆvˆÝ�Q˜‘”�S  B™ZœZˆBˆØ”\‰
ˆˆdØ�‰:˜ÒÐ  V¡¨dÒ 2Ð 2Ø0ˆCÝ˜cÑ"Ô"Ð"Ø " B¨¨U©
°B¸±KÐ@ˆŒ�VÑÝ" 1 b™zœz­3¨q°"©:¬:�9ˆ	Ø˜Š>ˆ>ØˆIÝ#(¨Ñ#3Ô#3µe¸IÑ6FÔ6FÑ#FÈÑ#MˆŒ�ZÑ Ø#$ R¤5ˆŒ�ZÑ Ø ! "¤ˆŒ�WÑØˆr?   c                óh  — | j         €J ‚|dk     r9t          j        rt          j        | j         |¦  «        }|S d}t	          |¦  «        ‚t          j        | j         d¦  «        }t          |¦  «        }| j        |dz
  k    rd}t          |¦  «        ‚|| _        |                      |dz   |dz
  ¦  «        S )Nr0   z"APNG contains truncated fDAT chunkr   rD  )	rZ   r   rk   r”   rM   ri   rØ   rm   rý   )r`   ro   rp   rE   rP   rO  s         r@   Ú
chunk_fdATzPngStream.chunk_fdATó  s´   € ØŒwÐ"Ð"Ð"Ø�AŠ:ˆ:ÝÔ.ð ÝÔ(¨¬°&Ñ9Ô9�Ø�Ø6ˆCÝ˜S‘/”/Ð!ÝÔ  ¤¨!Ñ,Ô,ˆÝ�!‰fŒfˆØŒ=˜C !™GÒ#Ð#Ø7ˆCÝ˜cÑ"Ô"Ð"ØˆŒØ�Š˜s Q™w¨°©
Ñ3Ô3Ð3r?   r—   )rÜ   rT   rG   r\   r˜   )ro   rT   rp   rT   rG   rF   )ro   rT   rp   rT   rG   r   )r8   r9   r:   ra   rß   râ   rä   rë   rö   rý   rÿ   r  r	  r  r  r  r$  r-  r/  r8  r<  rA  rV  rX  Ú__classcell__©rÛ   s   @r@   rÍ   rÍ   Š  sÏ  ø€ € € € € ðð ð ð ð ð ð""ð "ð "ð "ð
ð 
ð 
ð 
ð2ð 2ð 2ð 2ð
ð ð ð ð8ð ð ð ð*ð ð ð ðð ð ð ðð ð ð ðð ð ð ð<
ð 
ð 
ð 
ðð ð ð ðð ð ð ð"ð ð ð ð$ð ð ð ð(!ð !ð !ð !ðF)ð )ð )ð )ðVð ð ð ðð ð ð ð*ð ð ð ð<4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r?   rÍ   Úprefixr«   c                ó6   — |                       t          ¦  «        S r^   )Ú
startswithÚ_MAGIC)r[  s    r@   Ú_acceptr_    s   € Ø×Ò�VÑ$Ô$Ð$r?   c                  óŽ   ‡ — e Zd ZdZdZdd„Zedd„¦   «         Zdˆ fd„Zdd„Z	ddd„Z
dd„Zdd„Zd d„Zdd„Zd!d„Zd"ˆ fd„Zˆ xZS )#ÚPngImageFileÚPNGzPortable network graphicsrG   r\   c                óŽ  — | j         €J ‚t          | j                              d¦  «        ¦  «        sd}t          |¦  «        ‚| j         | _        d| _        g | _        t          | j         ¦  «        | _        	 | j                             ¦   «         \  }}}	 | j         	                    |||¦  «        }nŠ# t          $ r Y nšt          $ rr t                               d|||¦  «         t          j        | j         |¦  «        }|dd…                              ¦   «         r| j                             ||f¦  «         Y nw xY w| j                             ||¦  «         Œá| j        j        | _        | j        j        | _        | j        j        | _        d | _        | j        j        | _        | j        j        | _        | j        j        pd| _        | j                              dd	¦  «        | _!        | j        j"        r)| j        j"        \  }}tG          j$        ||¦  «        | _%        |d
k    r|dz
  | _&        n|| _&        | j        j        �vd	| _'        | j         (                    ¦   «          | j&        | _)        | j         *                    ¦   «         | _+        | j!        r| xj        dz  c_        |  ,                    d¦  «         | j        dk    | _-        d S )Nr1   znot a PNG filer   Tú%r %s %s (unknown)r   r/   rù   Fó   fdATr0   ).rZ   r_  rg   rm   Ú_fpÚ_PngImageFile__frameÚprivate_chunksrÍ   Úpngr…   rü   ÚAttributeErrorr�   r‚   r   r”   Úislowerr{   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_idatrh   Ú_PngImageFile__rewindÚ_seekÚis_animated)r`   rP   rn   ro   rp   rE   ÚrawmoderR   s           r@   Ú_openzPngImageFile._open  sœ  € ØŒwÐ"Ð"Ð"Ý�t”w—|’| A‘”Ñ'Ô'ð 	#Ø"ˆCÝ˜cÑ"Ô"Ð"Ø”7ˆŒØˆŒð
 VXˆÔÝ%.¨t¬wÑ%7Ô%7ˆŒð	!ð  $œxŸ}š}™œÑˆC��fð9Ø”H—M’M # s¨FÑ3Ô3��øÝð ð ð Ø�Ý!ð 9ð 9ð 9Ý—’Ð1°3¸¸VÑDÔDÐDÝÔ(¨¬°&Ñ9Ô9�Ø�q˜�s”8×#Ò#Ñ%Ô%ð 9ØÔ'×.Ò.°°Q¨xÑ8Ô8Ð8øøð	9øøøð ŒH�LŠL˜˜aÑ Ô Ð ð!	!ð2 ”XÔ%ˆŒ
Ø”XÔ%ˆŒ
Ø”HÔ$ˆŒ	Ø37ˆŒ
Ø”HÔ$ˆŒ	Ø#œxÔ:ˆÔØœÔ,Ð1°ˆŒØ!œYŸ]š]¨?¸EÑBÔBˆÔàŒ8Ôð 	;Ø œHÔ/‰MˆG�TÝ'Ô+¨G°TÑ:Ô:ˆDŒLà�'Š>ˆ>Ø"(¨1¡*ˆDÔÐà"(ˆDÔàŒ8ÔÐ+Ø5:ˆDÔ2ØŒH× Ò Ñ"Ô"Ð"Ø!%Ô!4ˆDÔØ œHŸMšM™OœOˆDŒMØÔ!ð #à�” Ñ"�”Ø�JŠJ�q‰MŒMˆMØœ=¨1Ò,ˆÔÐÐs   ÂB1 Â1
D8Â=A8D8Ä7D8údict[str, str | iTXt]c                óæ   — | j         €[| j        r$| j        }|                      | j        dz
  ¦  «         |                      ¦   «          | j        r|                      |¦  «         | j         €J ‚| j         S )Nr   )rn  rx  rg  rf   r@  Úload)r`   Úframes     r@   r�   zPngImageFile.textX  sy   € ð Œ:Ðð Ôð -Øœ�à—	’	˜$œ-¨!Ñ+Ñ,Ô,Ð,Ø�IŠI‰KŒKˆKØÔð !Ø—	’	˜%Ñ Ô Ð ØŒzÐ%Ð%Ð%ØŒzÐr?   c                óJ  •— | j         €d}t          |¦  «        ‚| j                              | j        d         d         dz
  ¦  «         | j        €J ‚| j                             ¦   «          | j                             ¦   «          t          ¦   «                              ¦   «          dS )zVerify PNG fileNz)verify must be called directly after openr   r/   r1   )rZ   ÚRuntimeErrorrf   rÉ   ri  r–   rw   rÏ   )r`   rP   rÛ   s     €r@   r–   zPngImageFile.verifyh  s�   ø€ ð Œ7ˆ?Ø=ˆCÝ˜sÑ#Ô#Ð#ð 	Œ�Š�T”Y˜q”\ !”_ qÑ(Ñ)Ô)Ð)àŒxÐ#Ð#Ð#ØŒ�ŠÑÔÐØŒ�ŠÑÔÐå‰Œ�ŠÑÔÐÐÐr?   r~  rT   c                ó^  — |                       |¦  «        sd S || j        k     r|                      dd¦  «         | j        }	 t          | j        dz   |dz   ¦  «        D ]}|                      |¦  «         Œd S # t          $ r,}|                      |¦  «         d}t	          |¦  «        |‚d }~ww xY w)Nr   Tr   zno more images in APNG file)Ú_seek_checkrg  rw  Úrangerü   rf   )r`   r~  Ú
last_frameÚfrŒ   rP   s         r@   rf   zPngImageFile.seekx  sÍ   € Ø×Ò Ñ&Ô&ð 	ØˆFØ�4”<ÒÐØ�JŠJ�q˜$ÑÔÐà”\ˆ
ð	'Ý˜4œ<¨!Ñ+¨U°Q©YÑ7Ô7ð ð �Ø—
’
˜1‘”��ðð øåð 	'ð 	'ð 	'Ø�IŠI�jÑ!Ô!Ð!Ø/ˆCÝ˜3‘-”- QÐ&øøøøð	'øøøs   Á3A6 Á6
B,Â 'B'Â'B,Frä   r«   c                ó	  — | j         €J ‚t          | j        t          ¦  «        r| j        j        ‚d }|dk    �r|ry| j                             | j        ¦  «         | j                              ¦   «          | j        | _	        d | _
        | j         j        | _        | j         j        | _        | j        | _        d | _        | j                             dd¦  «        | _        | j                             d¦  «        | _        | j                             d¦  «        | _        | j                             d¦  «        }d| _        �n|| j        dz   k    rd|› �}t-          |¦  «        ‚| j        t.          j        k    r:| j        \  }}}}t4          j                             | j        ||z
  ||z
  f¦  «        }	nQ| j        t.          j        k    r:| j        �3|                      | j                              ¦   «         | j        ¦  «        }	nd }	|  !                    ¦   «          |	r | j"         #                    |	| j        ¦  «         | j"                              ¦   «         | _        | j        | _        | j	        r&tI          j%        | j        | j	        ¦  «         d| _	        d}
	 | j         &                    d
¦  «         	 | j          &                    ¦   «         \  }}}n# tN          j(        tR          f$ r Y nãw xY w|dk    rd}tU          |¦  «        ‚|dk    r|
rd}tS          |¦  «        ‚d	}
	 | j          +                    |||¦  «         n�# tX          $ r Y nƒtT          $ r3 |dk    r|d
z  }|
r	|| _	        Y ndtI          j%        | j        |¦  «         Y nFtZ          $ r: t\           /                    d|||¦  «         tI          j%        | j        |¦  «         Y nw xY w�Œ4|| _        | j         j        | _        | j                             d¦  «        | _        | j                             d¦  «        | _        | j                             d¦  «        }| j        sd}tU          |¦  «        ‚|r|| _        | j        €(| j        t.          j        k    rt.          j        | _        d S d S d S )Nr   rù   FrK  rM  rø   r   zcannot seek to frame Tr0   r�   zNo more images in APNG fileó   fcTLzAPNG missing frame datare  rd  zimage not found in APNG frame)0ri  rº   rf  r   Úexrf   rv  rä   ru  rs  Ú_imrÐ   rÈ   rÔ   rÉ   rZ   Ú_prev_imrp  rù   Ú
dispose_opÚblend_oprg  rM   r7   r<   Údispose_extentr   ÚcoreÚfillÚmoder=   Ú_croprá   r}  ÚimÚpaster   r”   rg   r   r‰   rm   rü   r…   ÚUnicodeDecodeErrorrj  r�   r‚   )r`   r~  rä   r�  rP   Úx0Úy0Úx1Úy1ÚdisposeÚframe_startrn   ro   rp   s                 r@   rw  zPngImageFile._seek‡  se  € ØŒxÐ#Ð#Ð#Ý�d”h¥Ñ.Ô.ð 	Ø”(”+ÐàˆØ�AŠ:‰:Øð #Ø”—’˜dœmÑ,Ô,Ð,Ø”—’Ñ!Ô!Ð!Ø&*Ô&8�Ô#Ø�”Ø œHÔ,�”	Ø œHÔ,�”	Øœ(�”Ø9=ˆDŒMØ!%¤§¢¨ÀÑ!FÔ!FˆDÔØ"œiŸmšm¨JÑ7Ô7ˆDŒOØ œIŸMšM¨'Ñ2Ô2ˆDŒMØ!œYŸ]š]¨6Ñ2Ô2ˆNØˆDŒL‰Là˜œ qÑ(Ò(Ð(Ø5¨eÐ5Ð5�Ý  ‘o”oÐ%àŒ¥(Ô"8Ò8Ð8Ø!%Ô!4‘��B˜˜BÝœ*Ÿ/š/¨$¬)°b¸2±g¸rÀB¹wÐ5GÑHÔH��Ø”¥HÔ$8Ò8Ð8¸T¼]Ð=VØŸ*š* T¤]×%7Ò%7Ñ%9Ô%9¸4Ô;NÑOÔO��à�ð �IŠI‰KŒKˆKàð <Ø”—’˜g tÔ':Ñ;Ô;Ð;Ø œGŸLšL™NœNˆDŒMà”hˆDŒGð Ô"ð (ÝÔ$ T¤W¨dÔ.AÑBÔBÐBØ&'�Ô#ØˆKð:Ø”—’˜Q‘”�ðØ'+¤x§}¢}¡¤Ñ$�C˜˜f˜føÝœ¥kÐ2ð ð ð Ø�Eðøøøð ˜'’>�>Ø7�CÝ" 3™-œ-Ð'Ø˜'’>�>Ø"ð /à7˜Ý)¨#Ñ.Ô.Ð.Ø"&�Kð:Ø”H—M’M # s¨FÑ3Ô3Ð3Ð3øÝ)ð ð ð Ø�EÝð :ð :ð :Ø˜g’~�~Ø !™˜Ø&ð "Ø28˜DÔ/Ø!˜EÝÔ(¨¬°&Ñ9Ô9Ð9Ð9Ð9Ý%ð :ð :ð :Ý—L’LÐ!5°s¸CÀÑHÔHÐHÝÔ(¨¬°&Ñ9Ô9Ð9Ð9Ð9ð:øøøñ;:ðB !ˆDŒLØœÔ(ˆDŒIØ"œiŸmšm¨JÑ7Ô7ˆDŒOØ œIŸMšM¨'Ñ2Ô2ˆDŒMØ!œYŸ]š]¨6Ñ2Ô2ˆNà”9ð $Ø5�Ý˜s‘m”mÐ#Øð 	TØESˆDÔð Œ=Ð  T¤_½Ô8LÒ%LÐ%LÝ&Ô4ˆDŒOˆOˆOð !Ð Ð%LÐ%Ls7   Ê)K ËK ËK ÌL3 Ì3
N=Ì?N=ÍN=Í:A N=Î<N=c                ó   — | j         S r^   )rg  rr   s    r@   rh   zPngImageFile.tellè  s
   € ØŒ|Ðr?   c                ó®   — | j                              d¦  «        r| j        dz   | _        | j        | _        t
          j                             | ¦  «         dS )z"internal: prepare to read PNG filerð   )r   N)rÈ   rp  Údecoderconfigrs  Ú_PngImageFile__idatr   Úload_preparerr   s    r@   rŸ  zPngImageFile.load_prepareë  sQ   € ð Œ9�=Š=˜Ñ%Ô%ð 	;Ø!%Ô!3°dÑ!:ˆDÔàÔ)ˆŒÝÔ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.r?   Ú
read_bytesrF   c                ó(  — | j         €J ‚| j        €J ‚| j        dk    rª| j                             d¦  «         | j                              ¦   «         \  }}}|dvr| j                              |||¦  «         dS |dk    r9	 | j                              |||¦  «         n# t          $ r Y nw xY w|dz
  | _        n|| _        | j        dk    °ª|dk    r| j        }nt          || j        ¦  «        }| j        |z
  | _        | j                             |¦  «        S )zinternal: read more image dataNr   r0   )ó   IDATs   DDATre  r?   re  )ri  rZ   rž  rg   r}   r…   rü   Úmin)r`   r   rn   ro   rp   s        r@   Ú	load_readzPngImageFile.load_readô  s2  € ð ŒxÐ#Ð#Ð#ØŒwÐ"Ð"Ð"ØŒk˜QÒÐð ŒG�LŠL˜‰OŒOˆOà#œxŸ}š}™œÑˆC��fàÐ5Ð5Ð5Ø”—’˜c 3¨Ñ/Ô/Ð/Ø�sà�gŠ~ˆ~ðØ”H—M’M # s¨FÑ3Ô3Ð3Ð3øÝð ð ð Ø�Dðøøøà$ q™j�”�à$�”ð% Œk˜QÒÐð* ˜Š?ˆ?ØœˆJˆJå˜Z¨¬Ñ5Ô5ˆJà”k JÑ.ˆŒàŒw�|Š|˜JÑ'Ô'Ð's   Á>B Â
B(Â'B(c                óŽ  — | j         €J ‚| j        €J ‚| j        dk    r| j                             | j        ¦  «         	 | j                             d¦  «         	 | j                              ¦   «         \  }}}n# t          j        t          f$ r Y �nAw xY w|dk    r�n5|dk    r,| j        r%d| _        | j          	                    |||¦  «         �n	 | j          
                    |||¦  «         nã# t          $ r Y nÙt          $ rP |dk    r|dz  }	 t          j        | j        |¦  «         n&# t          $ r}t          j        rY d}~Y n�|‚d}~ww xY wY nt"          $ rs t$                               d|||¦  «         t          j        | j        |¦  «        }|d	d
…                              ¦   «         r| j                             ||df¦  «         Y nw xY w�Œ“| j         j        | _        | j        s"| j                              ¦   «          d| _         dS | j        �r0| j        t8          j        k    �r|                      | j        | j         ¦  «        }| j        j!        dk    r+d| j"        v r"| #                    d| j"        d         ¦  «        }n�| j        j!        dk    rkd| j"        v rb| j"        d         }tI          |tJ          ¦  «        r| &                    |¦  «         n*tI          |tN          ¦  «        r| (                    |¦  «         | )                    d¦  «        }| j         *                    || j         |¦  «         | j        | _        dS dS dS )z%internal: finished reading image dataNr   Tr0   r�   r‡  re  rd  r   r/   r'   r  r-   r(   )+ri  rZ   rž  rg   r   r‰   rm   rx  rs  r}   r…   r”  rü   r   r”   r“   rk   rj  r�   r‚   rk  rh  r{   rÑ   rn  rw   rŠ  rŒ  rB   rD   r‘  r’  r�  r�  rÈ   Úconvert_transparentrº   rF   ÚputpalettealphasrT   ÚputpalettealphaÚconvertr“  )	r`   rn   ro   rp   rŒ   rE   ÚupdatedÚmaskÚts	            r@   Úload_endzPngImageFile.load_end  sŠ  € àŒxÐ#Ð#Ð#ØŒwÐ"Ð"Ð"ØŒ;˜!ÒÐØŒG�LŠL˜œÑ%Ô%Ð%ð"	?ØŒG�LŠL˜‰OŒOˆOðØ#'¤8§=¢=¡?¤?Ñ ��S˜&˜&øÝ”L¥+Ð.ð ð ð Ø‘ðøøøð �gŠ~ˆ~ÙØ˜’� DÔ$4�à&'�Ô#Ø”—’˜c 3¨Ñ/Ô/Ð/Ùð?Ø”—’˜c 3¨Ñ/Ô/Ð/Ð/øÝ%ð ð ð Ø�Ýð 	 ð 	 ð 	 Ø˜'’>�>Ø˜a‘K�Fð ÝÔ(¨¬°&Ñ9Ô9Ð9Ð9øÝð  ð  ð  Ý Ô6ð  Ø˜˜˜˜˜à˜øøøøð	 øøøð :Ð9õ "ð ?ð ?ð ?Ý—’Ð1°3¸¸VÑDÔDÐDÝÔ(¨¬°&Ñ9Ô9�Ø�q˜�s”8×#Ò#Ñ%Ô%ð ?ØÔ'×.Ò.°°Q¸¨~Ñ>Ô>Ð>øøð	?øøøñ="	?ðF ”XÔ%ˆŒ
ØÔð 	(ØŒH�NŠNÑÔÐØˆDŒHˆHˆHàŒ}ñ ( ¤µ%´-Ò!?Ñ!?ØŸ*š* T¤W¨dÔ.AÑBÔB�Ø”7”< 5Ò(Ð(¨^¸t¼yÐ-HÐ-HØ"×6Ò6Ø ¤	¨.Ô 9ñô �D�Dð ”w”| sÒ*Ð*¨~ÀÄÐ/JÐ/JØ œI nÔ5˜Ý% a­Ñ/Ô/ð 7Ø#×4Ò4°QÑ7Ô7Ð7Ð7Ý'¨­3Ñ/Ô/ð 7Ø#×3Ò3°AÑ6Ô6Ð6Ø"Ÿ?š?¨6Ñ2Ô2�DØ”×#Ò# G¨TÔ-@À$ÑGÔGÐGØœ-�”��ð(ð (Ð!?Ð!?sa   ÁA7 Á7BÂBÃC, Ã,
GÃ8GÄD(Ä'GÄ(
EÄ2EÄ>GÅEÅEÅGÅA9GÇGúdict[int, Any] | Nonec                ó°   — d| j         vr|                      ¦   «          d| j         vrd| j         vrd S |                      ¦   «                              ¦   «         S )Nr;  zRaw profile type exif)rÈ   r}  ÚgetexifÚ_get_merged_dictrr   s    r@   Ú_getexifzPngImageFile._getexifV  sU   € Ø˜œÐ"Ð"Ø�IŠI‰KŒKˆKØ˜œÐ"Ð"Ð'>ÀdÄiÐ'OÐ'OØ�4Ø�|Š|‰~Œ~×.Ò.Ñ0Ô0Ð0r?   ú
Image.Exifc                ó~   •— d| j         vr|                      ¦   «          t          ¦   «                              ¦   «         S )Nr;  )rÈ   r}  rÏ   r°  )r`   rÛ   s    €r@   r°  zPngImageFile.getexif]  s1   ø€ Ø˜œÐ"Ð"Ø�IŠI‰KŒKˆKå‰wŒw�ŠÑ Ô Ð r?   r˜   )rG   r{  )r~  rT   rG   r\   rÅ   )r~  rT   rä   r«   rG   r\   )rG   rT   )r   rT   rG   rF   )rG   r®  )rG   r³  )r8   r9   r:   ÚformatÚformat_descriptionrz  Úpropertyr�   r–   rf   rw  rh   rŸ  r¤  r­  r²  r°  rY  rZ  s   @r@   ra  ra    s8  ø€ € € € € Ø€FØ4ÐðB-ð B-ð B-ð B-ðH ðð ð ñ „Xððð ð ð ð ð ð 'ð 'ð 'ð 'ð_5ð _5ð _5ð _5ð _5ðBð ð ð ð/ð /ð /ð /ð!(ð !(ð !(ð !(ðF=(ð =(ð =(ð =(ð~1ð 1ð 1ð 1ð!ð !ð !ð !ð !ð !ð !ð !ð !ð !r?   ra  )r!   ó   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-   rZ   r[   rn   r\   c                ó<  — d                      |¦  «        }|                      t          t          |¦  «        ¦  «        |z   ¦  «         |                      |¦  «         t	          |t	          |¦  «        ¦  «        }|                      t          |¦  «        ¦  «         dS )z'Write a PNG chunk (including CRC field)r?   N)ÚjoinÚwriteÚo32r(  rW   )rZ   rn   rR   Ú	byte_datar�   s        r@   ÚputchunkrÅ  z  s}   € ð —’˜‘”€Ià‡H‚H�S•�Y‘”Ñ Ô  3Ñ&Ñ'Ô'Ð'Ø‡H‚HˆYÑÔÐÝ
��F 3™KœKÑ
(Ô
(€CØ‡H‚H�S�‰XŒXÑÔÐÐÐr?   c                  ó   — e Zd Zdd„Zdd
„ZdS )Ú_idatrZ   r[   ÚchunkúCallable[..., None]rG   r\   c                ó"   — || _         || _        d S r^   )rZ   rÈ  )r`   rZ   rÈ  s      r@   ra   z_idat.__init__ˆ  s   € ØˆŒØˆŒ
ˆ
ˆ
r?   rR   rF   c                ó>   — |                       | j        d|¦  «         d S )Nr¢  )rÈ  rZ   ©r`   rR   s     r@   rÂ  z_idat.writeŒ  s    € Ø�
Š
�4”7˜G TÑ*Ô*Ð*Ð*Ð*r?   N)rZ   r[   rÈ  rÉ  rG   r\   ©rR   rF   rG   r\   ©r8   r9   r:   ra   rÂ  r>   r?   r@   rÇ  rÇ  …  s<   € € € € € ðð ð ð ð+ð +ð +ð +ð +ð +r?   rÇ  c                  ó   — e Zd Zdd	„Zdd„ZdS )Ú_fdatrZ   r[   rÈ  rÉ  rÊ   rT   rG   r\   c                ó0   — || _         || _        || _        d S r^   )rZ   rÈ  rÊ   )r`   rZ   rÈ  rÊ   s       r@   ra   z_fdat.__init__“  s   € ØˆŒØˆŒ
ØˆŒˆˆr?   rR   rF   c                ó„   — |                       | j        dt          | j        ¦  «        |¦  «         | xj        dz  c_        d S )Nre  r   )rÈ  rZ   rÃ  rÊ   rÌ  s     r@   rÂ  z_fdat.write˜  s:   € Ø�
Š
�4”7˜G¥S¨¬Ñ%6Ô%6¸Ñ=Ô=Ð=ØˆŒ˜ÑˆŒˆˆr?   N)rZ   r[   rÈ  rÉ  rÊ   rT   rG   r\   rÍ  rÎ  r>   r?   r@   rÐ  rÐ  �  s<   € € € € € ðð ð ð ð
ð ð ð ð ð r?   rÐ  r’  úImage.ImageÚencoderinfoúdict[str, Any]c                ó¼   — |                      dd¦  «        |                      dd¦  «        |                      dd¦  «        |                      dd¦  «        f| _        d S )NÚoptimizeFÚcompress_leveléÿÿÿÿÚcompress_typeÚ
dictionaryr?   )rp  Úencoderconfig)r’  rÔ  s     r@   Ú_apply_encoderinforÝ  �  sW   € à�Š˜
 EÑ*Ô*Ø�ŠÐ(¨"Ñ-Ô-Ø�Š˜¨Ñ,Ô,Ø�Š˜ cÑ*Ô*ð	€BÔÐÐr?   c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_FramerÓ  r’  z tuple[int, int, int, int] | Nonerø   rÕ  rÔ  NrË   r>   r?   r@   rß  rß  ¦  s3   € € € € € € Ø€O€O�OØ*Ð*Ð*Ñ*ØÐÐÑÐÐr?   rß  rÈ  rÉ  r�  rž   ry  rù   úImage.Image | NoneÚappend_imagesúlist[Image.Image]c                óÒ  — | j                              d¦  «        }| j                              d| j                             dd¦  «        ¦  «        }| j                              d| j                             dt          j        ¦  «        ¦  «        }	| j                              d| j                             dt
          j        ¦  «        ¦  «        }
|rt          j        |¦  «        }nt          j        | g|¦  «        }g }d}|D �]&}t          j
        |¦  «        D �]}|j        |k    r|                     ¦   «         }n|                     |¦  «        }| j                              ¦   «         }t          |t          t           f¦  «        r||         |d<   n|€d|j        v r|j        d         |d<   t          |	t          t           f¦  «        r|	|         |d<   t          |
t          t           f¦  «        r|
|         |d<   |dz  }|�rý|d         }|j                              d¦  «        }|j                              d¦  «        }|t          j        k    rt%          |¦  «        dk     rt          j        }|t          j        k    r�|j                             ¦   «         }t*          j                             d	| j        d
¦  «        }|j        }|r|                     |¦  «        }nddg| j        ¢R }|                     ||¦  «         n%|t          j        k    r|d         j        }n|j        }t9          j        |                     d	¦  «        |                     d	¦  «        ¦  «        }|                     d¬¦  «        }|sˆ||                     d¦  «        k    ro||                     d¦  «        k    rVd|v rR|j         d         |d         z   }t?          |dz  ¦  «                              d¦  «        }|j!        dk    r||j         d<   �Œænd }| "                    tG          |||¦  «        ¦  «         �Œ�Œ(t%          |¦  «        dk    r|s|d         j        S  ||dtI          t%          |¦  «        ¦  «        tI          |¦  «        ¦  «         |r‰| j        |k    r| n|                      |¦  «        }tK          || j         ¦  «         tM          j'        |tQ          dtS          ||¦  «        ¦  «        tM          j*        dddg| j        ¢R d|¦  «        g¦  «         d}tW          |¦  «        D �]L\  }}|j        }|j        sddg|j        ¢R }n|j        }|                     |¦  «        }|j        }|j         }|                     dd¦  «        }t?          |dz  ¦  «                              d¦  «        }|j!        dk    rd} tY          | ¦  «        ‚|                     d|	¦  «        }!|                     d|
¦  «        }" ||dtI          |¦  «        tI          |d         ¦  «        tI          |d         ¦  «        tI          |d         ¦  «        tI          |d         ¦  «        t[          |j!        ¦  «        t[          |j.        ¦  «        t_          |!¦  «        t_          |"¦  «        ¦  «         |dz  }tK          || j         ¦  «         |dk    rV|sTtM          j'        |tQ          dtS          ||¦  «        ¦  «        tM          j*        dddg|j        ¢R d|¦  «        g¦  «         �Œðta          |||¦  «        }#tM          j'        |tQ          d|#¦  «        tM          j*        dddg|j        ¢R d|¦  «        g¦  «         |#j1        }�ŒNd S )NrI  r>  r   rK  rM  r   rÙ  r/   r-   )r   r   r   r   éþÿÿÿF)Ú
alpha_onlyrH  éÿÿ  s   acTLr[   r²   zcannot write durationr‡  )2rÔ  rp  rÈ   r7   r;   rB   rC   r
   Úchainr   ÚIteratorr�  rá   r©  rº   Úlistr  r=   r(  r<   r’  r   rŽ  r�  Úsizerø   Úcropr“  r   Úsubtract_moduloÚgetbboxr   Úlimit_denominatorÚ	numeratorr{   rß  rÃ  rÝ  r   Ú_saver   rÇ  rú   Ú	enumeraterM   Úo16Údenominatorr   rÐ  rÊ   )$r’  rZ   rÈ  r�  ry  rù   rá  rI  r>  rK  rM  rç  Ú	im_framesÚframe_countÚim_seqÚim_framerÔ  ÚpreviousÚprev_disposalÚ
prev_blendÚbase_imr™  rø   ÚdeltaÚnew_durationÚdelayÚ
default_imrÊ   r~  Ú
frame_datarê  Úframe_durationrP   Úframe_disposalÚframe_blendÚfdat_chunkss$                                       r@   Ú_write_multiple_framesr  ¬  s>  € ð Œ~×!Ò! *Ñ-Ô-€HØŒ>×Ò˜f b¤g§k¢k°&¸!Ñ&<Ô&<Ñ=Ô=€DØŒ~×!Ò! *¨b¬g¯kªk¸*ÅhÔFVÑ.WÔ.WÑXÔX€HØŒN×Ò˜w¨¬¯ª°G½U¼_Ñ(MÔ(MÑNÔN€Eàð 5Ý” Ñ.Ô.ˆˆå”   mÑ4Ô4ˆà €IØ€KØð 8Bñ 8BˆÝ%Ô.¨vÑ6Ô6ð 7	Bñ 7	BˆHØŒ} Ò$Ð$Ø#Ÿ=š=™?œ?��à#×+Ò+¨DÑ1Ô1�Øœ.×-Ò-Ñ/Ô/ˆKÝ˜(¥T­5 MÑ2Ô2ð DØ*2°;Ô*?�˜JÑ'Ð'ØÐ! j°H´MÐ&AÐ&AØ*2¬-¸
Ô*C�˜JÑ'Ý˜(¥T­5 MÑ2Ô2ð @Ø*2°;Ô*?�˜JÑ'Ý˜%¥$­ Ñ/Ô/ð :Ø',¨[Ô'9�˜GÑ$Ø˜1ÑˆKàñ &Ø$ Rœ=�Ø (Ô 4× 8Ò 8¸Ñ DÔ D�Ø%Ô1×5Ò5°gÑ>Ô>�
Ø ¥HÔ$8Ò8Ð8½SÀ¹^¼^ÈaÒ=OÐ=OÝ$,Ô$:�Mà ¥HÔ$:Ò:Ð:Ø&œk×.Ò.Ñ0Ô0�GÝ#œjŸošo¨f°b´g¸|ÑLÔL�GØ#œ=�DØð 0Ø")§,¢,¨tÑ"4Ô"4˜˜à ! 1Ð/ r¤wÐ/Ð/˜Ø—M’M '¨4Ñ0Ô0Ð0Ð0Ø"¥hÔ&:Ò:Ð:Ø'¨œmÔ.�G�Gà&œk�GÝ"Ô2Ø×$Ò$ VÑ,Ô,¨g¯oªo¸fÑ.EÔ.Eñô �ð —}’}°�}Ñ6Ô6�àð!à%¨¯ª¸Ñ)DÔ)DÒDÐDØ" k§o¢o°gÑ&>Ô&>Ò>Ð>Ø" kÐ1Ð1ð !Ô,¨ZÔ8¸;ÀzÔ;RÑRð !õ % \°DÑ%8Ñ9Ô9×KÒKÈEÑRÔR�EØ”¨%Ò/Ð/Ø;G˜Ô,¨ZÑ8Ù øà�Ø×Ò�V H¨d°KÑ@Ô@ÑAÔAÐAÑAño7	Bõr ˆ9�~„~˜ÒÐ =ÐØ˜Œ|ŒÐð 
€EØ
ØÝ�C�	‰NŒNÑÔÝˆD‰	Œ	ñ	ô ð ð ð 
Øœ7 dš?˜?�R�R°·
²
¸4Ñ0@Ô0@ˆ
Ý˜: r¤~Ñ6Ô6Ð6ÝŒØÝ��e B¨Ñ.Ô.Ñ/Ô/ÝŒ_˜U Q¨Ð$4¨B¬GÐ$4Ð$4°a¸ÑAÔAÐBñ	
ô 	
ð 	
ð €GÝ& yÑ1Ô1ð /*ñ /*ÑˆˆzØ”=ˆØŒð 	+Ø�qÐ)˜8œ=Ð)Ð)ˆDˆDà”?ˆDØ—}’} TÑ*Ô*ˆHØŒ}ˆØ Ô,ˆØ$Ÿš¨°QÑ7Ô7ˆÝ˜¨$Ñ.Ñ/Ô/×AÒAÀ%ÑHÔHˆØŒ?˜UÒ"Ð"Ø)ˆCÝ˜S‘/”/Ð!Ø$Ÿš¨°XÑ>Ô>ˆØ!—o’o g¨uÑ5Ô5ˆàˆØØÝ�‰LŒLÝ��Q”‰LŒLÝ��Q”‰LŒLÝ��Q”‰LŒLÝ��Q”‰LŒLÝ�”Ñ Ô Ý�Ô!Ñ"Ô"Ýˆ~ÑÔÝˆ{‰OŒOñ	
ô 	
ð 	
ð 	�1‰ˆå˜8 R¤^Ñ4Ô4Ð4Ø�AŠ:ˆ:˜mˆ:åŒOØÝ�[¥%¨¨EÑ"2Ô"2Ñ3Ô3Ý” ¨¨AÐ(>°´Ð(>Ð(>ÀÀ7ÑKÔKÐLñô ð ñ õ    E¨7Ñ3Ô3ˆKÝŒOØÝ�[ +Ñ.Ô.Ý” ¨¨AÐ(>°´Ð(>Ð(>ÀÀ7ÑKÔKÐLñô ð ð
 "Ô)ˆG‰GØˆ4r?   Úfilenamer°   c                ó,   — t          | ||d¬¦  «         d S )NT)Úsave_all)rð  )r’  rZ   r  s      r@   Ú	_save_allr	  D  s   € Ý	ˆ"ˆb�( TÐ*Ñ*Ô*Ð*Ð*Ð*r?   r  c                óÖ  ‡+— |�rz| j                              d| j                             d¦  «        ¦  «        }t          ¦   «         }t          ¦   «         Š+d }d }d }	| j                              dg ¦  «        }
t	          j        | g|
¦  «        D ]¢}t          j        |¦  «        D ]‹}|                     |j	        ¦  «         ‰+                     |j
        ¦  «         |j	        dk    r?|j        r|j        j	        dk    r|}|	€#|                     ¦   «         pg }|�	||k    rd}	Œ}|}Œ€|j	        dv rd}	ŒŒŒ£|	r|rdnd}nd	D ]}||v r nŒ	|                     ¦   «         }t          ˆ+fd
„t          d¦  «        D ¦   «         ¦  «        }nE| j
        }| j	        }|dk    r1| j        r*|                      ¦   «         pg }| j        j	        dk    r| nd }|}|dk    rrt!          dt#          d| j                              dd¦  «        z  |rt%          |¦  «        dz  ndd¦  «        ¦  «        }|dk    r|dk    rd}n|dk    rd}nd}|d|› �z  }n8|dk    r2| j                              dd¦  «        dk    r|d| j         d         › �z  }	 t&          |         \  }}}n(# t(          $ r}d|› d�}t+          |¦  «        |‚d }~ww xY w|                     t.          ¦  «          ||dt1          |d         ¦  «        t1          |d         ¦  «        ||ddd¦	  «	         g d¢}| j                              d| j                             d¦  «        ¦  «        x}r>d}|dz   t3          j        |¦  «        z   } ||d|¦  «         |                     d¦  «         | j                              d ¦  «        x}ršg d!¢}|j        D ]Ž}|d d…         \  }}||v r#|                     |¦  «          ||||¦  «         Œ6||v r ||||¦  «         ŒH|dd…                              ¦   «         r*t%          |¦  «        dk    o|d         } | s ||||¦  «         Œ�|dk    r+|rt=          |d |dz  …         ¦  «        pd"}! ||d#|!¦  «         | j                              d$| j                             d$¦  «        ¦  «        }"|"��Ò|dk    r‘|}#t?          |"t<          ¦  «        r ||d%|"d |#…         ¦  «         �nØt?          |"t@          ¦  «        r=t!          dt#          d&|"¦  «        ¦  «        }"d'|"z  dz   }$ ||d%|$d |#…         ¦  «         �n†d(}tC          |¦  «        ‚| j	        d)v rit?          |"t@          ¦  «        r:t!          dt#          d*|"¦  «        ¦  «        }" ||d%tE          |"¦  «        ¦  «         �nd+| j	        › d,�}tC          |¦  «        ‚| j	        dk    r’t?          |"tF          t          f¦  «        sd-}tC          |¦  «        ‚t%          |"¦  «        dk    rd.}tC          |¦  «        ‚|"\  }%}&}' ||d%tE          |%¦  «        tE          |&¦  «        z   tE          |'¦  «        z   ¦  «         nf| j                              d$¦  «        �d/}t+          |¦  «        ‚n:|dk    r4|r2|j$                             dd0¦  «        }$|}# ||d%|$d |#…         ¦  «         | j                              d1¦  «        x}(r[ ||d2t1          tA          |(d         d3z  d4z   ¦  «        ¦  «        t1          tA          |(d         d3z  d4z   ¦  «        ¦  «        d5¦  «         |rAd6d7g}|j        D ]5}|d d…         \  }}||v r"|                     |¦  «          ||||¦  «         Œ6| j                              d8¦  «        x})r[t?          |)tJ          j&        ¦  «        r|) '                    d¦  «        })|) (                    d9¦  «        r
|)d:d …         }) ||d;|)¦  «         | }*|rtS          | ||||||
¦  «        }*|*rgtU          |*| j         ¦  «         tW          j,        |*t[          d<t]          ||¦  «        ¦  «        tW          j/        d=ddg|*j
        ¢R d|¦  «        g¦  «         |r]|j        D ]U}|d d…         \  }}|dd…                              ¦   «         r*t%          |¦  «        dk    o|d         } | r ||||¦  «         ŒV ||d>d?¦  «         ta          |d@¦  «        r| 1                    ¦   «          d S d S )ANrù   rá  r(   r-   Tr.   Fr'   )r-   r'   r(   c              3  óP   •‡K  — | ]Št          ˆfd „‰D ¦   «         ¦  «        V — Œ dS )c              3  ó(   •K  — | ]}|‰         V — Œd S r^   r>   )r  Ú
frame_sizeré   s     €r@   r  z"_save.<locals>.<genexpr>.<genexpr>t  s'   øè è € Ð?Ð?¨:˜ AœÐ?Ð?Ð?Ð?Ð?Ð?r?   N)Úmax)r  ré   Úsizess    @€r@   r  z_save.<locals>.<genexpr>t  sA   øøè è € ÐRÐRÀA•SÐ?Ð?Ð?Ð?¸Ð?Ñ?Ô?Ñ?Ô?ÐRÐRÐRÐRÐRÐRr?   r/   r   Úbitsr1   r3   r   é   r2   r0   ú;r"   zcannot write mode z as PNGs   IHDRr¸   )s   cHRMs   cICPs   gAMAs   sBITó   sRGBs   tIMErç   s   ICC ProfilerÁ   s   iCCPr  Úpnginfo)s   sPLTr·   rÂ   rÀ   r¹   s   PLTEr  s   tRNSr  ó   ÿz.transparency for P must be an integer or bytes)r!   r"   ÚIr%   ræ  ztransparency for z must be an integerz*transparency for RGB must be list or tuplez'transparency for RGB must have length 3z%cannot use transparency for this modeÚAr  s   pHYsr  g      à?r¸  s   bKGDs   hISTr;  r:  r4   s   eXIfr[   r²   r�   r?   Úflush)2rÔ  rp  rÈ   Úsetr
   rç  r   rè  r­   r�  rê  rr  Ú
getpalettere   r  rƒ  r  r£  r(  Ú	_OUTMODESrô   r“   rÂ  r^  rÃ  r   r¼   Úremover©   rk  rF   rº   rT   rM   rò  ré  r’  r   ÚExifÚtobytesr]  r  rÝ  r   rð  r   rÇ  rú   Úhasattrr  ),r’  rZ   r  rÈ  r  rù   Úmodesrr  Úpalette_frame_with_alphaÚdifferent_paletterá  rö  r÷  Úframe_paletter�  rê  ÚoutmodeÚcolorsr  ry  Ú	bit_depthÚ
color_typerŒ   rP   r©   ÚiccÚnamerR   rÈ   Úchunks_multiple_allowedÚ
info_chunkrn   rª   Úpalette_bytesr  Úalpha_bytesÚalphaÚredÚgreenÚbluer  r;  Ú	single_imr  s,                                              @r@   rð  rð  H  s^
  ø€ ð ñ )QØœ×*Ò*Ø˜RœWŸ[š[¨Ñ9Ô9ñ
ô 
ˆõ ‘”ˆÝ‘”ˆØˆØ#'Ð Ø ÐØœ×*Ò*¨?¸BÑ?Ô?ˆÝ”o r d¨MÑ:Ô:ð 	.ð 	.ˆFÝ)Ô2°6Ñ:Ô:ð .ð .�Ø—	’	˜(œ-Ñ(Ô(Ð(Ø—	’	˜(œ-Ñ(Ô(Ð(Ø”= CÒ'Ð'ØÔ'ð <¨HÔ,<Ô,AÀVÒ,KÐ,KØ3;Ð0Ø(Ð0Ø(0×(;Ò(;Ñ(=Ô(=Ð(CÀ˜Ø"Ð.Ø,°Ò7Ð7Ø48Ð 1øà&3˜GøØ”]Ð&6Ð6Ð6Ø(-Ð%øð.ð ð 	#à5Ð@�6�6¸5ˆDˆDà,ð #ð #�Ø˜5�=�=Ø�Eð !ð —y’y‘{”{�ÝÐRÐRÐRÐRÍÈqÉÌÐRÑRÔRÑRÔRˆˆàŒwˆØŒwˆØ�3Š;ˆ;˜2œ:ˆ;Ø—m’m‘o”oÐ+¨ˆGØ-/¬Z¬_ÀÒ-FÐ-F r rÈDÐ$à€GØˆs‚{€{ÝØÝà�R”^×'Ò'¨°Ñ2Ô2Ñ2à%,Ð3•�G‘” Ñ!Ð!°!Øñô ñ	
ô 	
ˆð �RŠ<ˆ<Ø˜Š{ˆ{Ø��Ø˜1’�Ø��à�Ø�z˜4�z�zÑ!ˆGøØ	�Šˆ˜œ×+Ò+¨F°AÑ6Ô6¸!Ò;Ð;ØÐ/�r”~ fÔ-Ð/Ð/Ñ/ˆð"Ý)2°7Ô);Ñ&ˆ�˜J˜JøÝð "ð "ð "Ø0 4Ð0Ð0Ð0ˆÝ�c‰lŒl Ð!øøøøð"øøøð ‡H‚H�VÑÔÐà	€EØ
ØÝˆD�ŒG‰ŒÝˆD�ŒG‰ŒØØØØØñ
ô 
ð 
ð DÐCÐC€FàŒn× Ò  °´·²¸MÑ0JÔ0JÑKÔKÐK€sð ð ˆØ�g‰~¥¤¨cÑ 2Ô 2Ñ2ˆØˆˆb�'˜4Ñ Ô Ð ð 	�Š�gÑÔÐàŒ~×!Ò! )Ñ,Ô,Ð,€tð )Ø"FÐ"FÐ"FÐØœ+ð 	)ð 	)ˆJØ" 2 A 2œ‰IˆC�Ø�fˆ}ˆ}Ø—’˜cÑ"Ô"Ð"Ø��b˜#˜tÑ$Ô$Ð$Ð$ØÐ/Ð/Ð/Ø��b˜#˜tÑ$Ô$Ð$Ð$Ø�Q�q�S”×!Ò!Ñ#Ô#ð )å  ™_œ_°Ò1ÐC°jÀ´m�
Ø!ð )Ø�E˜"˜c 4Ñ(Ô(Ð(øàˆs‚{€{Ø ÐA¥U¨7°<°V¸a±Z°<Ô+@Ñ%AÔ%AÐUÀoˆØˆˆb�'˜=Ñ)Ô)Ð)à”>×%Ò% n°b´g·k²kÀ.Ñ6QÔ6QÑRÔR€LàÑØ�3Š;ˆ;à ˆKÝ˜,­Ñ.Ô.ð &Ø��b˜' <°°°Ô#=Ñ>Ô>Ð>Ñ>Ý˜L­#Ñ.Ô.ð &Ý" 1¥c¨#¨|Ñ&<Ô&<Ñ=Ô=�Ø ,Ñ.°Ñ6�Ø��b˜' 5¨¨+¨Ô#6Ñ7Ô7Ð7Ñ7àF�Ý  ‘o”oÐ%ØŒWÐ/Ð/Ð/Ý˜,­Ñ,Ô,ð &Ý" 1¥c¨%°Ñ&>Ô&>Ñ?Ô?�Ø��b˜'¥3 |Ñ#4Ô#4Ñ5Ô5Ð5Ñ5àF¨"¬'ÐFÐFÐF�Ý  ‘o”oÐ%ØŒW˜ÒÐÝ˜l­Tµ5¨MÑ:Ô:ð FØB�Ý  ‘o”oÐ%Ý�\Ñ"Ô" aÒ'Ð'Ø?�Ý  ‘o”oÐ%à#/Ñ ��U˜DØ��b˜'¥3 s¡8¤8­c°%©j¬jÑ#8½3¸t¹9¼9Ñ#DÑEÔEÐEÐEØŒ^×Ò Ñ/Ô/Ð;ð :ˆCÝ˜#‘,”,Ðð	 <ð
 
�ŠˆÐ1ˆØ(Ô+×6Ò6°v¸sÑCÔCˆØˆØˆˆb�'˜5  + Ô.Ñ/Ô/Ð/àŒn× Ò  Ñ'Ô'Ð'€sð 
ØˆØØÝ•�C˜”F˜V‘O cÑ)Ñ*Ô*Ñ+Ô+Ý•�C˜”F˜V‘O cÑ)Ñ*Ô*Ñ+Ô+Øñ	
ô 	
ð 	
ð ð %Ø˜7Ð#ˆØœ+ð 	%ð 	%ˆJØ" 2 A 2œ‰IˆC�Ø�fˆ}ˆ}Ø—’˜cÑ"Ô"Ð"Ø��b˜#˜tÑ$Ô$Ð$øàŒ~×!Ò! &Ñ)Ô)Ð)€tð !Ý�d�EœJÑ'Ô'ð 	#Ø—<’< ‘?”?ˆDØ�?Š?˜?Ñ+Ô+ð 	Ø˜˜˜”8ˆDØˆˆb�'˜4Ñ Ô Ð à$&€IØð 
Ý*Ø��E˜4 ¨-¸ñ
ô 
ˆ	ð ð 
Ý˜9 b¤nÑ5Ô5Ð5ÝŒØÝ��e B¨Ñ.Ô.Ñ/Ô/ÝŒ_˜U Q¨Ð$;¨I¬NÐ$;Ð$;¸QÀÑHÔHÐIñ	
ô 	
ð 	
ð ð )Øœ+ð 	)ð 	)ˆJØ" 2 A 2œ‰IˆC�Ø�1�Q�3Œx×ÒÑ!Ô!ð )å  ™_œ_°Ò1ÐC°jÀ´m�
Øð )Ø�E˜"˜c 4Ñ(Ô(Ð(øà	€Eˆ"ˆg�sÑÔÐåˆr�7ÑÔð Ø
�Š‰
Œ
ˆ
ˆ
ˆ
ðð s   É7J	 Ê	
J.ÊJ)Ê)J.Úparamsr   ú list[tuple[bytes, bytes, bytes]]c                ó€   ‡— ddl m} g Šdˆfd
„} |¦   «         }	 || _        t          | |d|¦  «         | `n# | `w xY w‰S )z4Return a list of PNG chunks representing this image.r   )ÚBytesIOrZ   r[   rn   rF   rR   rG   r\   c                ó¶   •— d                      |¦  «        }t          t          |t          |¦  «        ¦  «        ¦  «        }‰                     |||f¦  «         d S )Nr?   )rÁ  rÃ  rW   r{   )rZ   rn   rR   rÄ  r�   r©   s        €r@   r{   zgetchunks.<locals>.append7  sN   ø€ Ø—H’H˜T‘N”Nˆ	Ý•&˜¥F¨3¡K¤KÑ0Ô0Ñ1Ô1ˆØ�Š�s˜I sÐ+Ñ,Ô,Ð,Ð,Ð,r?   r®   ©rZ   r[   rn   rF   rR   rF   rG   r\   )Úior6  rÔ  rð  )r’  r3  r6  r{   rZ   r©   s        @r@   Ú	getchunksr:  1  s‚   ø€ àÐÐÐÐÐà€Fð-ð -ð -ð -ð -ð -ð
 
ˆ‰Œ€BðØˆŒÝˆb�"�b˜&Ñ!Ô!Ð!àˆNˆNøˆBˆNÐÐÐÐà€Ms   ›7 ·;z.pngz.apngz	image/png)rE   rF   rG   rF   )r   )rR   rF   rS   rT   rG   rT   )r[  rF   rG   r«   r8  )r’  rÓ  rÔ  rÕ  rG   r\   )r’  rÓ  rZ   r[   rÈ  rÉ  r�  rž   ry  rž   rù   rà  rá  râ  rG   rà  )r’  rÓ  rZ   r[   r  r°   rG   r\   )r’  rÓ  rZ   r[   r  r°   rÈ  rÉ  r  r«   rG   r\   )r’  rÓ  r3  r   rG   r4  )RÚ
__future__r   Ú__lazy_modules__r
   ÚloggingÚrer   r   r   Úenumr   r	   r   Útypingr   r   r   r®   r   r   r   r   r   Ú_binaryr   r  r   ri   r   r   rò  r   rÃ  Ú_utilr   ÚTYPE_CHECKINGÚcollections.abcr   r   r   r   r    Ú	getLoggerr8   r�   Úcompiler  rj   r^  rò   r  Ú	SAFEBLOCKrK   rÞ   r7   rB   rQ   rW   rY   rž   rš   r§   rÇ   rÍ   r_  ra  r  rÅ  rÇ  rÐ  rÝ  rß  r  r	  rð  r:  Úregister_openrµ  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mimer>   r?   r@   ú<module>rM     s¥  ððB #Ð "Ð "Ð "Ð "Ð "ðð ð Ð ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  à€Øð Ø(Ð(Ð(Ð(Ð(Ð(Ø*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*àÐÐÐÐÐà	ˆÔ	˜8Ñ	$Ô	$€à	ˆŒ�LÑ	!Ô	!Ô	'€ð 
€ð ØØØØàØàØØØàØàØ!ð+
ð 
€ð2 �"”*Ð0Ñ1Ô1€àÔ$€ðð
 �~Ñ%€ððð ð ð ð ˆwñ ô ð ð*ð ð ð ð ˆGñ ô ð ðð ð ð ð/ð /ð /ð /ð /ð[ð [ð [ð [ð [ñ [ô [ð [ð|ð ð ð ð ˆ3ñ ô ð ð6Y3ð Y3ð Y3ð Y3ð Y3ñ Y3ô Y3ð Y3ð@ð ð ð ð �:ñ ô ð ðw4ð w4ð w4ð w4ð w4�ñ w4ô w4ð w4ð|%ð %ð %ð %ðQ!ð Q!ð Q!ð Q!ð Q!�9Ô&ñ Q!ô Q!ð Q!ðr
 
!Ø	 Ø$Ø$Ø$Ø
"Ø'Ø(Ø$Ø$Ø$Ø	 Ø$Ø&ðð €	ð&ð ð ð ð+ð +ð +ð +ð +ñ +ô +ð +ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ðð ð ð ð ð  ð  ð  ð  ˆZñ  ô  ð  ðUð Uð Uð Uðp+ð +ð +ð +ð "*Øðbð bð bð bð bðRð ð ð ð2 €Ô �LÔ'¨°wÑ ?Ô ?Ð ?Ø €Ô �LÔ'¨Ñ /Ô /Ð /Ø €Ô ˜Ô+¨YÑ 7Ô 7Ð 7à €Ô ˜,Ô-°¸Ð/@Ñ AÔ AÐ Aà €Ô �LÔ'¨Ñ 5Ô 5Ð 5Ð 5Ð 5r?   