+
     i  c                  s   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
Ht ^ RIHtHtHtHtHt ^RIHtHtHtHtHt ^RIHt ^RIHt ^R	IHt ^R
IHt ^RIH t! ^RI"H#t# ^RI$H%t% Rt&]&'       d   ^RIH't' ]PP                  ! ])4      t*]PV                  ! R4      PX                  t-Rt.RKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRh/t/]PV                  ! R4      t0]Pb                  t2 ^@]2,          t3  ! R  R!]4      t4 ! R" R#]4      t5R$ R% lt6RiR& R' llt7 ! R( R)4      t8 ! R* R+]94      t: ! R, R-4      t; ! R. R/]4      t< ! R0 R1]84      t=R2 R3 lt> ! R4 R5]P*                  4      t?RRjR6RkRRlRRmRRnRRoR7RpRRpRRpRRqRRrRRsRRtRRuRRv/t@R8 R9 ltA ! R: R;4      tB ! R< R=4      tC ! R> R?]4      tDR@ RA ltERB RC ltF]AR3RD RE lltGRF RG ltH]P                  ! ]?P                  ]?]>4       ]P                  ! ]?P                  ]G4       ]P                  ! ]?P                  ]F4       ]P                  ! ]?P                  RHRI.4       ]P                  ! ]?P                  RJ4       R# )w    )annotationsN)Callable)IntEnum)IOAny
NamedTupleNoReturncast)Image
ImageChops	ImageFileImagePaletteImageSequence)i16be)i32be)o8)o16be)o32be)	deprecate)DeferredErrorF)_imagings   \w\w\w\ws   PNG

1LL;2L;4I;16I;16BRGBPP;1P;2P;4LARGBAs   ^* *$c                  s&    ] tR t^kt^ t ^t ^tRtR# )Disposal N)__name__
__module____qualname____firstlineno__OP_NONEOP_BACKGROUNDOP_PREVIOUS__static_attributes__r$       9/usr/lib64/python3.14/site-packages/PIL/PngImagePlugin.pyr#   r#   k   s$    G M
 Kr-   r#   c                  s     ] tR t^t^ t ^tRtR# )Blendr$   N)r%   r&   r'   r(   	OP_SOURCEOP_OVERr,   r$   r-   r.   r/   r/      s    I
 Gr-   r/   c               s     V ^8  d   QhRRRR/# )   sbytesreturnr$   format   "r.   __annotate__r9      s      U u r-   c                s    \         P                  ! 4       pVP                  V \        4      pVP                  '       d   R p\        V4      hV# )z=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)zlibZdecompressobjZ
decompressMAX_TEXT_CHUNKZunconsumed_tail
ValueError)r3   ZdobjZ	plaintextmsgs   &   r.   _safe_zlib_decompressr>      sA    D>2IMor-   c               s$    V ^8  d   QhRRRRRR/# )r2   datar4   seedintr5   r$   r6   r8   r.   r9   r9      s!     / / /c /# /r-   c                s<    \         P                  ! W4      R ,          # )l    )r:   Zcrc32)r?   r@      &&r.   _crc32rC      s    ::d!J..r-   c                  s    ] tR t^tR R ltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltRR R lltRtR# )ChunkStreamc                    V ^8  d   QhRRRR/# r2   fp	IO[bytes]r5   Noner$   r6   r8   r.   r9   ChunkStream.__annotate__   s     = =9 = =r-   c                	s     Wn         . V n        R # NrG   queue)selfrG   rB   r.   __init__ZChunkStream.__init__   s    $&:<
r-   c                   V ^8  d   QhRR/# )r2   r5   ztuple[bytes, int, int]r$   r6   r8   r.   r9   rJ      s        ,  r-   c                s   RpV P                   f   Q hV P                  '       d:   V P                  P                  4       w  rpV P                   P                  V4       MIV P                   P	                  ^4      pVR,          pV P                   P                  4       p\        V4      p\        V4      '       g1   \        P                  '       g   R\        V4       R2p\        V4      hWV3# )z.Fetch a new chunk. Returns header information.N:   NNzbroken PNG file (chunk ))rG   rM   popseekreadtelli32is_cidr   LOAD_TRUNCATED_IMAGESreprSyntaxError)rN   cidposlengthr3   r=   s   &     r.   rU   ZChunkStream.read   s    ww""":::#zz~~/CfGGLLQAB%C'',,.CVFc{{222/S	{!<!#&&r-   c               rP   )r2   r5   rD   r$   r6   r8   r.   r9   rJ      s      ; r-   c                	s    V # rK   r$   rN      &r.   	__enter__ZChunkStream.__enter__   s    r-   c               rE   )r2   argsZobjectr5   rI   r$   r6   r8   r.   r9   rJ      s      f  r-   c                	s&    V P                  4        R # rK   )close)rN   rb   s   &*r.   __exit__ZChunkStream.__exit__   s    

r-   c               rP   r2   r5   rI   r$   r6   r8   r.   r9   rJ      s     $ $t $r-   c                	s"    R ;V n         V n        R # rK   )rM   rG   r_   r`   r.   rc   ZChunkStream.close   s    ##
TWr-   c               (    V ^8  d   QhRRRRRRRR/# )r2   r\   r4   r]   rA   r^   r5   rI   r$   r6   r8   r.   r9   rJ      s(     . . .C . . .r-   c                	s`    V P                   f   Q hV P                   P                  WV34       R # rK   )rM   appendrN   r\   r]   r^      &&&&r.   pushZChunkStream.push   s)    zz%%%

3V,-r-   c               s(    V ^8  d   QhRRRRRRRR/# )r2   r\   r4   r]   rA   r^   r5   r$   r6   r8   r.   r9   rJ      s.     J J JC J J Jr-   c                sx    \         P                  RWV4       \        V RVP                  R4       24      ! W#4      # )z"Call the appropriate chunk handlerzSTREAM %r %s %sZchunk_Zascii)loggerdebugZgetattrdecoderh   ri   r.   callZChunkStream.call   s8     	&&9tvcjj&9%:;<SIIr-   c               $    V ^8  d   QhRRRRRR/# r2   r\   r4   r?   r5   rI   r$   r6   r8   r.   r9   rJ      s!     * *u *E *d *r-   c                s   \         P                  '       d1   V^ ,          ^,	          ^,          '       d   V P                  W4       R# V P                  f   Q h \	        V\	        V4      4      p\        V P                  P                  ^4      4      pW48w  d   R\        V4       R2p\        V4      hR#   \        P                   d!   pR\        T4       R2p\        T4      ThRp?ii ; i)zRead and verify checksumNz(broken PNG file (bad header checksum in rR   z(broken PNG file (incomplete checksum in )r   rY   crc_skiprG   rC   rW   rU   rZ   r[   structerror)rN   r\   r?   Zcrc1Zcrc2r=   es   &&&    r.   crcZChunkStream.crc   s     ***A!aMM#$ww"""	*$s,Dtww||A'D|@c1M!#&&  || 	*<T#YKqICc")	*s   AB3 3C(C##C(c               ro   rp   r$   r6   r8   r.   r9   rJ      s!      E  4 r-   c                s\    V P                   f   Q hV P                   P                  ^4       R# )zRead checksumN)rG   rU   )rN   r\   r?      &&&r.   rq   ZChunkStream.crc_skip   s#     ww"""Qr-   c               rE   )r2   endchunkr4   r5   zlist[bytes]r$   r6   r8   r.   r9   rJ      s      u ; r-   c                	s@   . pV P                   f   Q h  V P                  4       w  r4pY18X  d    T# T P                  T\        P                  ! T P                   T4      4       TP                  T4       Kb    \        P                   d   pRp\	        T4      ThR p?ii ; i)Nztruncated PNG file)	rG   rU   rr   rs   OSErrorru   r   
_safe_readrg   )rN   rw   Zcidsr\   r]   r^   rt   r=   s   &&      r.   verifyZChunkStream.verify   s     ww"""*#'99; &
   HHS)..tww?@KK << **cl)*s   A5 5B
BBrL   N)   IEND)r%   r&   r'   r(   rO   rU   ra   rd   rc   rj   rn   ru   rq   rz   r,   r$   r-   r.   rD   rD      s:    = *$.J** r-   rD   c                  sJ    ] tR t^t$ RtR]R&   R]R&   ]R	R R ll4       tRtR# )
iTXtze
Subclass of string to allow iTXt chunks to look like strings while
keeping their extra information

zstr | bytes | NonelangtkeyNc               rf   )r2   textstrr}   z
str | Noner~   r5   r|   r$   r6   r8   r.   r9   ZiTXt.__annotate__  s,      (7A	r-   c                sH    \         P                  W4      pW$n        W4n        V# )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~   )Zclsr   r}   r~   rN   s   &&&& r.   r   ZiTXt.__new__  s!     {{3%		r-   )r}   r~   )NN)	r%   r&   r'   r(   __doc____annotations__Zstaticmethodr   r,   r$   r-   r.   r|   r|      s'     
 r-   r|   c                  sV    ] tR tRtRtR R ltRR R lltRR R lltRR	 R
 lltRt	R# )PngInfoi  z4
PNG chunk container (for use with save(pnginfo=))

c               rP   re   r$   r6   r8   r.   r9   PngInfo.__annotate__  s     : :$ :r-   c                	s    . V n         R # rK   chunksr_   r`   r.   rO   ZPngInfo.__init__  s	    79r-   c               s(    V ^8  d   QhRRRRRRRR/# )r2   r\   r4   r?   
after_idatboolr5   rI   r$   r6   r8   r.   r9   r   !  s(     
4 
4u 
4E 
4t 
4 
4r-   c                s@    V P                   P                  WV34       R# )zAppends 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   rg   )rN   r\   r?   r   ri   r.   addZPngInfo.add!  s     	Cz23r-   c               s0    V ^8  d   QhRRRRRRRRRRRR	/# )
r2   keystr | bytesvaluer}   r~   zipr   r5   rI   r$   r6   r8   r.   r9   r   -  sN     !U !U!U !U 	!U
 !U !U 
!Ur-   c                sr   \        V\        4      '       g   VP                  RR4      p\        V\        4      '       g   VP                  RR4      p\        V\        4      '       g   VP                  RR4      p\        V\        4      '       g   VP                  RR4      pV'       dS   V P                  RVR,           V,           R,           V,           R,           \        P
                  ! V4      ,           4       R# V P                  RVR,           V,           R,           V,           R,           V,           4       R# )	zAppends 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)
isinstancer4   encoder   r:   compress)rN   r   r   r}   r~   r   s   &&&&&&r.   add_itxtZPngInfo.add_itxt-  s    $ #u%%**Y1C%''LL(3E$&&;;w1D$&&;;w1DHHk!D(5047%?$--PUBVV
 HHWcIo4u<tCeKeSTr-   c               (    V ^8  d   QhRRRRRRRR/# )	r2   r   r   r   zstr | bytes | iTXtr   r   r5   rI   r$   r6   r8   r.   r9   r   P  s,     !3 !3!3'9!3@D!3	!3r-   c                sx   \        V\        4      '       dQ   T P                  TTVP                  e   VP                  MRVP                  e   VP                  VR7      # RVR7      # \        V\
        4      '       g    VP                  RR4      p\        V\
        4      '       g   VP                  RR4      pV'       d7   V P                  RVR,           \        P                  ! V4      ,           4       R# V P                  RVR	,           V,           4       R#   \         d    T P                  YTR7      u # i ; i)
zAppends 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~   r4   r   UnicodeErrorr   r:   r   )rN   r   r   r   ri   r.   add_textZPngInfo.add_textP  s
    eT""==#jj4

##jj4

 !   ;> !   %'':Y9 #u%%**Y1CHHWcGmdmmE.BBCHHWcEkE12   :}}SS}99:s   >D D98D9r   NF) r   F)
r%   r&   r'   r(   r   rO   r   r   r   r,   r$   r-   r.   r   r     s"    
:
4!UF!3 !3r-   r   c                  6    ] tR tRt$ R]R&   R]R&   R]R&   RtR	# )
_RewindStateix  z dict[str | tuple[int, int], Any]infozlist[ImageFile._Tile]tilez
int | Noneseq_numr$   Nr%   r&   r'   r(   r   r,   r$   r-   r.   r   r   x  s    
**
r-   r   c                  s  a  ] tR tRtR V 3R lltR R ltR R ltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR,tV ;t# )-	PngStreami~  c               rE   rF   r$   r6   r8   r.   r9   PngStream.__annotate__  s      9  r-   c                	s   < \         SV `  V4       / V n        / V n        RV n        RV n        . V n        RV n        RV n        RV n	        RV n
        \        / . R4      V n        ^ V n        R# )r    r   Nr    r    )superrO   im_infoim_textim_sizeim_modeim_tile
im_paletteim_custom_mimetypeim_n_frames_seq_numr   rewind_statetext_memory)rN   rG   	__class__s   &&r.   rO   ZPngStream.__init__  sl     :<.0.048.2'+$((R6r-   c               rE   )r2   chunklenrA   r5   rI   r$   r6   r8   r.   r9   r     s     " "# "$ "r-   c                	s    V ;P                   V,          un         V P                   \        8  d   R V P                    R2p\        V4      hR# )z%Too much memory used in text chunks: z>MAX_TEXT_MEMORYN)r   MAX_TEXT_MEMORYr<   )rN   r   r=   s   && r.   check_text_memoryZPngStream.check_text_memory  sN    H$o-7##$$46  S/! .r-   c               rP   re   r$   r6   r8   r.   r9   r     s     
 
T 
r-   c                	s    \        V P                  P                  4       V P                  V P                  4      V n        R # rK   )r   r   copyr   r   r   r_   r`   r.   save_rewindZPngStream.save_rewind  s-    (LLLLMM
r-   c               rP   re   r$   r6   r8   r.   r9   r     s     2 2 2r-   c                	s    V P                   P                  P                  4       V n        V P                   P                  V n        V P                   P                  V n        R # rK   )r   r   r   r   r   r   r   r   r_   r`   r.   rewindZPngStream.rewind  sD    ((--224((--))11r-   c               ro   r2   r]   rA   r^   r5   r4   r$   r6   r8   r.   r9   r     s!      c 3 5 r-   c                	s    V P                   f   Q h\        P                  ! V P                   V4      pVP                  R4      p\        P                  RVR V 4       W4^,           ,          p\        P                  RV4       V^ 8w  d   RV R2p\        V4      h \        W4^,           R  4      pYpP                  R&   T#   \         d    \        P                  '       d   R p L5h \        P                   d    R p LNi ; i)Nr   ziCCP profile name %rzCompression method %sUnknown compression method z in iCCP chunkicc_profile)rG   r   ry   findrk   rl   r[   r>   r<   rY   r:   rs   r   )rN   r]   r^   r3   icomp_methodr=   r      &&&     r.   
chunk_iCCPZPngStream.chunk_iCCP  s    ww"""  &1 FF5M+QrU3Ah,k:!/}NKCc""	/a%'
;K '2]#  	..."zz 	K	s$   B> > C=C=#C=7C=<C=c               ro   r   r$   r6   r8   r.   r9   r     !      c 3 5 r-   c                	s   V P                   f   Q h\        P                  ! V P                   V4      pV^8  d&   \        P                  '       d   V# Rp\	        V4      h\        V^ 4      \        V^4      3V n         \        V^,          V^	,          3,          w  V n        V n	        V^,          '       d   ^V P                  R&   V^,          '       d   Rp\        V4      hV#   \         d     LIi ; i)NzTruncated IHDR chunk	interlacezunknown filter category)rG   r   ry   rY   r<   rW   r   _MODESr   
im_rawmodeZ	Exceptionr   r[   rN   r]   r^   r3   r=      &&&  r.   
chunk_IHDRZPngStream.chunk_IHDR  s    ww"""  &1B;...(CS/!1ay#a)+	,2AaD!A$<,@)DL$/ R55()DLL%R55+Cc""  		s   <*C" "C0/C0c               ro   r2   r]   rA   r^   r5   r   r$   r6   r8   r.   r9   r     s!      c 3 8 r-   c                	sb   R V P                   9   d6   \        P                  ! RV P                   R ,          WP                  4      .pMQV P                  e   RV P                   R&   \        P                  ! RRV P
                  ,           WP                  4      .pW0n        W n        Rp\        V4      h)bboxr   Tdefault_imagezimage data foundr   )	r   r   _Tiler   r   r   r   im_idatEOFError)rN   r]   r^   r   r=   r   r.   
chunk_IDATZPngStream.chunk_IDAT  s    T\\!OOE4<<+?ooVWD+04_-OOE6DLL+@#WXD smr-   c               ro   r   r$   r6   r8   r.   r9   r     s!      c 3 8 r-   c                	s    R p\        V4      h)zend of PNG image)r   )rN   r]   r^   r=      &&& r.   
chunk_IENDZPngStream.chunk_IEND  s     smr-   c               ro   r   r$   r6   r8   r.   r9   r     s!      c 3 5 r-   c                	s    V P                   f   Q h\        P                  ! V P                   V4      pV P                  R8X  d
   RV3V n        V# )Nr   r   )rG   r   ry   r   r   rN   r]   r^   r3   r   r.   
chunk_PLTEZPngStream.chunk_PLTE  sD    ww"""  &1<<3#QhDOr-   c               ro   r   r$   r6   r8   r.   r9   r     r   r-   c                	s   V P                   f   Q h\        P                  ! V P                   V4      pV P                  R8X  dU   \        P                  V4      '       d)   VP                  R4      pV^ 8  d   W@P                  R&   V# W0P                  R&    V# V P                  R9   d   \        V4      V P                  R&   V# V P                  R8X  d0   \        V4      \        V^4      \        V^4      3V P                  R&   V# )Nr   r   transparencyr   )r   r   r   )	rG   r   ry   r   _simple_palettematchr   r   i16)rN   r]   r^   r3   r   r   r.   
chunk_tRNSZPngStream.chunk_tRNS  s    ww"""  &1<<3$$Q'' FF5M634LL0  01^,
 	 \\//+.q6DLL(  \\U"+.q63q!9c!Qi+GDLL(r-   c               ro   r   r$   r6   r8   r.   r9   r     s!      c 3 5 r-   c                	s    V P                   f   Q h\        P                  ! V P                   V4      p\        V4      R,          V P                  R&   V# )N     j@Zgamma)rG   r   ry   rW   r   r   r   r.   
chunk_gAMAZPngStream.chunk_gAMA  sD    ww"""  &1 #A 1Wr-   c               ro   r   r$   r6   r8   r.   r9   r     s!      c 3 5 r-   c                	s0   V P                   f   Q h\        P                  ! V P                   V4      p\        P                  ! R\        V4      ^,           R2V4      p\        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      V P                  R&   V# )NZ>Ic              3  s2   "   T F  qR ,          x  K  	  R# 5i)r   Nr$   ).0Zelt   & r.   	<genexpr>Z'PngStream.chunk_cHRM.<locals>.<genexpr>  s     ,Px8^^xs   Zchromaticity)rG   r   ry   rr   Zunpacklentupler   )rN   r]   r^   r3   Zraw_valsr   r.   
chunk_cHRMZPngStream.chunk_cHRM  sw     ww"""  &1==1SVq[M!3Q7',u,Px,Puu,Px,P'P^$r-   c               ro   r   r$   r6   r8   r.   r9   r     s!      c 3 5 r-   c                	s    V P                   f   Q h\        P                  ! V P                   V4      pV^8  d&   \        P                  '       d   V# Rp\	        V4      hV^ ,          V P
                  R&   V# )NzTruncated sRGB chunkZsrgb)rG   r   ry   rY   r<   r   r   r   r.   
chunk_sRGBZPngStream.chunk_sRGB  sh     ww"""  &1A:...(CS/! tVr-   c               ro   r   r$   r6   r8   r.   r9   r   &  s!      c 3 5 r-   c                	s   V P                   f   Q h\        P                  ! V P                   V4      pV^	8  d&   \        P                  '       d   V# Rp\	        V4      h\        V^ 4      \        V^4      reV^,          pV^8X  d#   VR,          VR,          3pWP                  R&   V# V^ 8X  d   WV3V P                  R&   V# )NzTruncated pHYs chunk
F%u?dpiZaspect)rG   r   ry   rY   r<   rW   r   )	rN   r]   r^   r3   r=   pxpyZunitr   	   &&&      r.   
chunk_pHYsZPngStream.chunk_pHYs&  s    ww"""  &1A:...(CS/!QC1IBt19v+rF{*C"%LL  QY%'VDLL"r-   c               ro   r   r$   r6   r8   r.   r9   r   8  s!      c 3 5 r-   c                	s   V P                   f   Q h\        P                  ! V P                   V4      p VP                  R^4      w  rEV'       de   VP                  RR4      pVP                  RR4      pVR8X  d   TMTV P                  V&   WpP                  V&   V P                  \        V4      4       V#   \         d    TpRp Li ; i)Nr   r-   r   r   replaces   exif)
rG   r   ry   splitr<   rm   r   r   r   r   )rN   r]   r^   r3   kvk_strv_strr   r.   
chunk_tEXtZPngStream.chunk_tEXt8  s    ww"""  &1	775!$DA
 HHY1EHHY	2E'(G|!DLL"'LL""3u:.  	AA	s   B5 5CCc               ro   r   r$   r6   r8   r.   r9   r   L  s!     ! !c !3 !5 !r-   c                	s   V P                   f   Q h\        P                  ! V P                   V4      p VP                  R^4      w  rEV'       d   V^ ,          pM^ pV^ 8w  d   RV R2p\        V4      h \        VR,          4      pT'       d]   TP                  RR4      pTP                  RR4      p	T	;T P                  T&   T P                  T&   T P                  \        T	4      4       T#   \         d    TpRp Li ; i  \         d    \        P                  '       d   Rp Lh \        P                   d    Rp Li ; i)	Nr   r-   r   z in zTXt chunk:   NNr   r   r   )rG   r   ry   r   r<   r[   r>   rY   r:   rs   rm   r   r   r   r   )
rN   r]   r^   r3   r   r   r   r=   r   r   s
   &&&       r.   
chunk_zTXtZPngStream.chunk_zTXtL  s.   ww"""  &1	775!$DA A$KK!/}NKCc""	%ae,A HHY1EHHY	2E8==DLL$,,u"5""3u:.7  	AA	  	...zz 	A	s5   C, 4D ,C>=C> E "E &E :E ?E c               ro   r   r$   r6   r8   r.   r9   r   o  s!     ) )c )3 )5 )r-   c                	s   V P                   f   Q h\        P                  ! V P                   V4      ;r4 VP                  R^4      w  rS\        T4      ^8  d   T# T^ ,          T^,          TR,          r7p TP                  R^4      w  rp
T^ 8w  d   T^ 8X  d    \        T
4      p
MT# TR8X  d   YP                  R&    TP                  RR4      pTP                  RR4      pT	P                  RR4      pT
P                  RR4      p\        YT4      ;T P                  T&   T P                  T&   T P                  \        T4      4       T#   \         d    Tu # i ; i  \         d    Tu # i ; i  \         d    \        P                  '       d   Tu # h \        P                   d    Tu # i ; i  \         d    Tu # i ; i)Nr   :r2   NNs   XML:com.adobe.xmpZxmpr   r   r   )rG   r   ry   r   r<   r   r>   rY   r:   rs   r   rm   r   r|   r   r   )rN   r]   r^   Zrr3   r   ZcfZcmr}   Ztkr   r   Zlang_strZtk_strr   s   &&&            r.   
chunk_iTXtZPngStream.chunk_iTXto  s   ww"""$$TWWf55	775!$DA q6A:HaD!A$"	''%+KDa 7Qw-a0A $$"#LL	HHY1E{{7H5HYYw1FHHWh/E 59&4QQUdll51s5z*G  	H	  	H	 "  666 zz H  	H	sZ   E	 5E E/ =AF1 	EEE,+E,/ F.F.F.(F.-F.1G Gc               ro   r   r$   r6   r8   r.   r9   r     s!      c 3 5 r-   c                	s    V P                   f   Q h\        P                  ! V P                   V4      pRV,           V P                  R&   V# )N   Exif  exif)rG   r   ry   r   r   r   r.   
chunk_eXIfZPngStream.chunk_eXIf  s@    ww"""  &1.2Vr-   c               ro   r   r$   r6   r8   r.   r9   r     r   r-   c                	s   V P                   f   Q h\        P                  ! V P                   V4      pV^8  d&   \        P                  '       d   V# Rp\	        V4      hV P
                  e    R V n        \        P                  ! R4       V# \        V4      pV^ 8X  g   VR8  d   \        P                  ! R4       V# WPn        \        V^4      V P                  R&   RV n
        V# )Nz"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possiblel        loopz
image/apng)rG   r   ry   rY   r<   r   warningsZwarnrW   r   r   )rN   r]   r^   r3   r=   n_frames   &&&   r.   
chunk_acTLZPngStream.chunk_acTL  s    ww"""  &1A:...6CS/!'#DMMPQHq6q=Hz1MMPQH#"1ayV".r-   c               ro   r   r$   r6   r8   r.   r9   r     s!      c 3 5 r-   c                	sj   V P                   f   Q h\        P                  ! V P                   V4      pV^8  d&   \        P                  '       d   V# Rp\	        V4      h\        V4      pV P                  f   V^ 8w  g'   V P                  e&   V P                  V^,
          8w  d   Rp\        V4      hWPn        \        V^4      \        V^4      rv\        V^4      \        V^4      rV P                  w  rW,           V
8  g   W,           V8  d   Rp\        V4      hWW,           W,           3V P                  R&   \        V^4      \        V^4      rV^ 8X  d   ^dp\        V4      \        V4      ,          R,          V P                  R&   V^,          V P                  R&   V^,          V P                  R&   V# )	Nz"APNG contains truncated fcTL chunk#APNG contains frame sequence errorszAPNG contains invalid framesr     durationdisposalblend)rG   r   ry   rY   r<   rW   r   r[   r   r   r   Zfloat)rN   r]   r^   r3   r=   seqZwidthZheightr   r   Zim_wZim_hZ	delay_numZ	delay_dens   &&&           r.   
chunk_fcTLZPngStream.chunk_fcTL  sm   ww"""  &1B;...6CS/!!fMM!cQhMM%$--37*B7Cc""Aq	3q!9vQSBZB\\
:d 20Cc"" "
BK@V"1bz3q":9>I#(#3eI6F#F#MZ #$R5Z  !"Wr-   c               ro   r   r$   r6   r8   r.   r9   r     s!     4 4c 43 45 4r-   c                	s   V P                   f   Q hV^8  dG   \        P                  '       d$   \        P                  ! V P                   V4      pV# Rp\	        V4      h\        P                  ! V P                   ^4      p\        V4      pV P                  V^,
          8w  d   Rp\        V4      hWPn        V P                  V^,           V^,
          4      # )Nz"APNG contains truncated fDAT chunkr   )	rG   r   rY   ry   r<   rW   r   r[   r   )rN   r]   r^   r3   r=   r  r   r.   
chunk_fdATZPngStream.chunk_fdAT  s    ww"""A:...((&96CS/!  !,!f==C!G#7Cc""sQw
33r-   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r%   r&   r'   r(   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r,   __classcell__r      @r.   r   r   ~  sx     ""
2
8**"$(!F)V*<4 4r-   r   c               rE   )r2   prefixr4   r5   r   r$   r6   r8   r.   r9   r9     s     % %E %d %r-   c                s,    V P                  \        4      # rK   )
startswith_MAGIC)r  r`   r.   _acceptr    s    V$$r-   c                  s   a  ] tR tRtRtRtR R lt]R R l4       tR R	 lt	R
 R lt
RR R lltR R ltR R ltR R ltR R ltR R ltR V 3R lltRtV ;t# )PngImageFilei  ZPNGzPortable network graphicsc               rP   re   r$   r6   r8   r.   r9   PngImageFile.__annotate__  s     A- A-t A-r-   c                	s   \        V P                  P                  ^4      4      '       g   Rp\        V4      hV P                  V n        ^ V n        . V n        \        V P                  4      V n         V P                  P                  4       w  r#p V P                  P                  W#V4      pT P                  P%                  Y%4       KX    \         d     M\         du    \        P                  RY#T4       \        P                  ! T P                  T4      pTR,          P!                  4       '       d   T P                  P#                  Y%34        Li ; iT P                  P&                  T n        T P                  P*                  T n        T P                  P.                  T n        RT n        T P                  P4                  T n        T P                  P8                  T n        T P                  P<                  ;'       g    ^T n        T P0                  PA                  RR4      T n!        T P                  PD                  '       d4   T P                  PD                  w  rg\F        PH                  ! Yg4      T n%        TR8X  d   T^,
          T n&        MY@n&        T P                  P<                  e   RT n'        T P                  PQ                  4        T PL                  T n)        T P                  PU                  4       T n+        T PB                  '       d   T ;P>                  ^,          un        T PY                  ^ 4       T P>                  ^8  T n-        R# )   znot a PNG file%r %s %s (unknown)r   r2   NNr   F   fdAT).r  rG   rU   r[   _fp_PngImageFile__frameprivate_chunksr   pngrn   r   AttributeErrorrk   rl   r   ry   islowerrg   ru   r   _moder   _sizer   r   _textr   r   r   custom_mimetyper   r   getr   r   r   Zrawpalette_PngImageFile__prepare_idat!_close_exclusive_fp_after_loadingr   _PngImageFile__rewind_idatrV   _PngImageFile__rewind_seekis_animated)rN   r=   r\   r]   r^   r3   rawmoder?   s   &       r.   _openZPngImageFile._open  s`   tww||A''"Cc""77
 VX%.tww%7  $xx}}Cf9HHMM#F3 HHLL   ! 913VD((&9s8##%%''..x8	9 XX%%
XX%%
HH$$	37
HH$$	#xx::,,11!YY]]?EB88 HH//MG'++G:DL'>"(1*D"(88+5:D2HH  "!%!4!4D HHMMODM!!!"JJqM==1,s   C	 	EEA2EEc               rP   )r2   r5   zdict[str, str | iTXt]r$   r6   r8   r.   r9   r  9  s      + r-   c                	s<   V P                   ft   V P                  '       d/   V P                  pV P                  V P                  ^,
          4       V P                  4        V P                  '       d   V P                  X4       V P                   f   Q hV P                   # rK   )r  r#  r  rT   r   load)rN   framer   r.   r   ZPngImageFile.text8  su     :: 		$--!+,IIK		% zz%%%zzr-   c               rP   re   r$   r6   r8   r.   r9   r  H  s       r-   c                s   V P                   f   Rp\        V4      hV P                   P                  V P                  ^ ,          ^,          ^,
          4       V P                  f   Q hV P                  P                  4        V P                  P                  4        V P                  '       d   V P                   P                  4        RV n         R# )zVerify PNG fileNz)verify must be called directly after open)rG   ZRuntimeErrorrT   r   r  rz   rc   Z_exclusive_fp)rN   r=   r   r.   rz   ZPngImageFile.verifyH  s     77?=Cs## 	TYYq\!_q()xx###GGMMOr-   c               rE   )r2   r'  rA   r5   rI   r$   r6   r8   r.   r9   r  Z  s     + +# +$ +r-   c                	sr   V P                  V4      '       g   R # WP                  8  d   V P                  ^ R4       V P                  p\        V P                  ^,           V^,           4       F  p V P                  V4       K  	  R #   \         d%   pT P                  T4       Rp\	        T4      ThR p?ii ; i)NTzno more images in APNG file)Z_seek_checkr  r"  ranger   rT   )rN   r'  Z
last_frameZfrt   r=   s   &&    r.   rT   ZPngImageFile.seekZ  s    &&<<JJq$\\
t||a'3A+

1 4  +		*%3sm*+s   0BB6B11B6c               $    V ^8  d   QhRRRRRR/# )r2   r'  rA   r   r   r5   rI   r$   r6   r8   r.   r9   r  i  s+     bI bI3 bI bI bIr-   c                	s   V P                   f   Q h\        V P                  \        4      '       d   V P                  P                  hV  R pV^ 8X  Ed:   V'       d   V P                  P                  V P                  4       V P                   P                  4        V P                  V n	        R V n
        V P                   P                  V n        V P                   P                  V n        V P                  V n        R V n        R V n        V P                  P%                  RR4      V n        V P                  P%                  R4      V n        V P                  P%                  R4      V n        V P                  P%                  R4      p^ V n        EMzWP,                  ^,           8w  d   RV 2p\/        V4      hV P1                  4        V P"                  '       d1   V P2                  P5                  V P"                  V P6                  4       V P2                  P9                  4       V n        V P                  V n        V P                  '       d3   \:        P<                  ! V P                  V P                  4       ^ V n	        Rp V P                  P?                  ^4        V P                   P?                  4       w  rgpTR8X  d   R	p\G        T4      hTR
8X  d   T'       d   Rp\E        T4      hRp T P                   PI                  YgT4       K  V'       d   W0n        V P                   f5   V P(                  \R        PT                  8X  d   \R        PV                  V n        R V n        V P(                  \R        PT                  8X  da   V P                   '       dM   V P                   P9                  4       V n        V PY                  V P"                  V P6                  4      V n        R # R # V P(                  \R        PV                  8X  dg   \Z        P\                  P_                  V P`                  V Pb                  4      V n        V PY                  V P"                  V P6                  4      V n        R # R #   \@        PB                  \D        3 d     Mi ; i  \J         d     M\F         dG    TR8X  d   T^,          pT'       d	   Yn	         Mo\:        P<                  ! T P                  T4        EKe  \L         d>    \N        PQ                  RYgT4       \:        P<                  ! T P                  T4        EK  i ; iYn        T P                   P                  T n        T P                  P%                  R4      T n        T P                  P%                  R4      T n        T P                  P%                  R4      pT P                  '       d   EK  Rp\G        T4      h)Nr   Fr   r  r   zcannot seek to frame Tr{   zNo more images in APNG file   fcTLzAPNG missing frame datar  r  zimage not found in APNG frame)2r  r   r  r   ZexrT   r!  r   r   r  _imr   r   r   r   rG   _prev_imdisposer  r   
dispose_opblend_opr  r<   r&  impastedispose_extentr   r   ry   rU   rr   rs   r[   r   rn   UnicodeDecodeErrorr  rk   rl   r#   r+   r*   _cropr	   corefillmodesize)	rN   r'  r   r2  r=   Zframe_startr\   r]   r^   r   r.   r"  ZPngImageFile._seeki  s   xx###dhh..((++A:dmm,!&*&8&8# HH,,	 HH,,	(( DMDL!%!FD"iimmJ7DO IIMM'2DM!YY]]62NDLq((-eW5 o% IIK|||dllD,?,?@ GGLLNDMhhDG """$$TWWd.A.AB&'#KQ'+xx}}$Cf '>7C"3-''>"7)#.."&K:HHMM#F3. ES == T__8L8L%L&44DO??h222}}}#}}113#zz$,,8K8KL  __ 6 66 ::??499dii@DL::dllD4G4GHDL 7c k2  *  :g~!&28/!((&99% :LL!5sH((&99: !L((DI"iimmJ7DO IIMM'2DM!YY]]62N9995sm#sH   Q# (R #R RT'T'T'3T';!T' T')9T'&T'c               rP   )r2   r5   rA   r$   r6   r8   r.   r9   r    s      c r-   c                	s    V P                   # rK   )r  r_   r`   r.   rV   ZPngImageFile.tell  s    ||r-   c               rP   re   r$   r6   r8   r.   r9   r    s     / /d /r-   c                s    V P                   P                  R4      '       d   V P                  R,           V n        V P                  V n        \
        P
                  P                  V 4       R# )z"internal: prepare to read PNG filer   N)r   )r   r  decoderconfigr  _PngImageFile__idatr   load_preparer_   r`   r.   r;  ZPngImageFile.load_prepare  sK     99==%%!%!3!3d!:D))((.r-   c               rE   )r2   
read_bytesrA   r5   r4   r$   r6   r8   r.   r9   r    s      (  (C  (E  (r-   c                sP   V P                   f   Q hV P                  ^ 8X  d   V P                  P                  ^4       V P                   P                  4       w  r#pVR9  d   V P                   P	                  W#V4       R# VR8X  d.    V P                   P                  W#V4       V^,
          V n        K  W@n        K  V^ 8:  d   V P                  pM\        WP                  4      pV P                  V,
          V n        V P                  P                  V4      #   \         d     Li ; i)zinternal: read more image datar  r-   )   IDATs   DDATr  )r  r:  rG   rU   rj   rn   r   min)rN   r<  r\   r]   r^   s   &&   r.   	load_readZPngImageFile.load_read  s     xx###kkQ GGLLO#xx}}Cf55c/g~HHMM#F3 %qj$ ?JZ5JkkJ.ww||J''   s   D D%$D%c               rP   re   r$   r6   r8   r.   r9   r    s     <( <($ <(r-   c                s   V P                   f   Q hV P                  ^ 8w  d&   V P                  P                  V P                  4        V P                  P                  ^4        V P                   P                  4       w  rpTR8X  d   M\TR8X  d7   T P                  '       d%   ^ T n        T P                   P                  YT4       M T P                   P                  YT4       K  T P                   P.                  T n        T P                  '       g$   T P                   P3                  4        RT n         R# T P4                  '       Edq   T P6                  \8        P:                  8X  EdO   T P=                  T P>                  T P@                  4      pT P>                  PB                  R8X  d6   R	T PD                  9   d%   TPG                  R
T PD                  R	,          4      pMT P>                  PB                  R8X  dt   R	T PD                  9   dc   T PD                  R	,          p\I        T\J        4      '       d   TPM                  T4       M'\I        T\N        4      '       d   TPQ                  T4       TPS                  R
4      pT P4                  PU                  Y`P@                  T4       T P4                  T n        R# R# R#   \        P
                  \        3 d     EK  i ; i  \         d     EK  \         dk    TR8X  d
   T^,          p \        P                  ! T P                  T4        EK    \         d&   p\        P                   '       d	    Rp? EKp  ThRp?ii ; i\"         d|    \$        P'                  RYT4       \        P                  ! T P                  T4      pTR,          P)                  4       '       d"   T P*                  P-                  YR34        EK   EK  i ; i)z%internal: finished reading image dataNTr{   r*  r  r  r  r   r   r"   r   )+r  r:  rG   rU   rr   rs   r[   r#  r  rj   rn   r3  r   r   ry   rx   rY   r  rk   rl   r  r  rg   r   r  rc   r,  r/  r/   r1   r4  r0  r2  r7  r   Zconvert_transparentr   r4   ZputpalettealphasrA   Zputpalettealphaconvertr1  )	rN   r\   r]   r^   rt   r3   ZupdatedZmaskZts	   &        r.   load_endZPngImageFile.load_end  s   xx###;;!GGLL%GGLLO#'88==? & g~D$4$4$4&'#c/?c/$ XX%%
HHNNDH}}}%--!?**TWWd.A.AB77<<5(^tyy-H"66		. 9D ww||s*~/J IIn5%a//#44Q7'3//#33A6"??62D##G-@-@$G-- "@}G LL+.  &  	 '>aKF ((&99   666	 
 " ?13VD((&9s8##%%''..~>> &?sa   $J: K :KKO$,O$5O$!L,,M7MO$MMO$(A3O$#O$c               rP   )r2   r5   zdict[int, Any] | Noner$   r6   r8   r.   r9   r  9  s     1 1/ 1r-   c                	s    R V P                   9  d   V P                  4        R V P                   9  d   RV P                   9  d   R# V P                  4       P                  4       # )r   zRaw profile type exifN)r   r&  getexifZ_get_merged_dictr_   r`   r.   _getexifZPngImageFile._getexif9  sG    "IIK"'>dii'O||~..00r-   c               rP   )r2   r5   z
Image.Exifr$   r6   r8   r.   r9   r  @  s     ! ! !r-   c                	sb   < R V P                   9  d   V P                  4        \        SV `  4       # )r   )r   r&  r   rB  )rN   r   s   &r.   rB  ZPngImageFile.getexif@  s%    "IIKw  r-   )Z__frameZ__idatZ__prepare_idatZ__rewindZ__rewind_idatr  r  r+  r  r,  r  r  r/  r  r9  r   r-  r2  r.  rG   r0  r   r#  r   r  r  r  r   r   )r%   r&   r'   r(   r7   Zformat_descriptionr%  Zpropertyr   rz   rT   r"  rV   r;  r?  rA  rC  rB  r,   r  r  r  r.   r  r    s`    F4A-F  $+bIH/ (D<(|1! !r-   r  L;1r   c               rf   r2   rG   rH   r\   r4   r?   r5   rI   r$   r6   r8   r.   r9   r9   ^  s(        u  r-   c                s    RP                  V4      pV P                  \        \        V4      4      V,           4       V P                  V4       \	        V\	        V4      4      pV P                  \        V4      4       R# )z'Write a PNG chunk (including CRC field)r-   N)joinwriteo32r   rC   )rG   r\   r?   	byte_dataru   s   &&*  r.   putchunkrJ  ^  sW     IHHSY 3&'HHY
F3K
(CHHSXr-   c                  .    ] tR tRtR R ltR R ltRtR# )_idatii  c               r)  )r2   rG   rH   chunkCallable[..., None]r5   rI   r$   r6   r8   r.   r9   _idat.__annotate__l  s"      9 -@ T r-   c                	s    Wn         W n        R # rK   )rG   rM  )rN   rG   rM  rv   r.   rO   Z_idat.__init__l  s    
r-   c               rE   r2   r?   r4   r5   rI   r$   r6   r8   r.   r9   rO  p  s     + +% +D +r-   c                	s@    V P                  V P                  R V4       R# )r=  NrM  rG   rN   r?   rB   r.   rG  Z_idat.writep  s    

477GT*r-   rQ  Nr%   r&   r'   r(   rO   rG  r,   r$   r-   r.   rL  rL  i  s    + +r-   rL  c                  rK  )_fdatit  c               r   )	r2   rG   rH   rM  rN  r   rA   r5   rI   r$   r6   r8   r.   r9   _fdat.__annotate__w  s*      9 -@ 3 SW r-   c                	s*    Wn         W n        W0n        R # rK   )rG   rM  r   )rN   rG   rM  r   ri   r.   rO   Z_fdat.__init__w  s    
r-   c               rE   rP  r$   r6   r8   r.   r9   rU  |  s      % D r-   c                	s    V P                  V P                  R \        V P                  4      V4       V ;P                  ^,          un        R# )r  N)rM  rG   rH  r   rR  rB   r.   rG  Z_fdat.write|  s/    

477GS%6=r-   )rM  rG   r   NrS  r$   r-   r.   rT  rT  t  s    
 r-   rT  c                  r   )
_Framei  Image.Imager0  z tuple[int, int, int, int] | Noner   zdict[str, Any]encoderinfor$   Nr   r$   r-   r.   rV  rV    s    O
**r-   rV  c               s8    V ^8  d   QhRRRRRRRRR	RR
RRRRR/# )r2   r0  rW  rG   rH   rM  rN  r7  r   r$  r   zImage.Image | Noneappend_imageszlist[Image.Image]r5   r$   r6   r8   r.   r9   r9     sb     K KKK K 	K
 K &K %K Kr-   c                s   V P                   P                  R 4      pV P                   P                  RV P                  P                  R^ 4      4      pV P                   P                  RV P                  P                  R\        P                  4      4      p	V P                   P                  RV P                  P                  R\
        P                  4      4      p
V'       d   \        P                  ! V4      pM\        P                  ! V .V4      p. p^ pV EF<  p\        P                  ! V4       EF  pVP                  V8X  d   VP                  4       pMVP                  V4      pV P                   P                  4       p\        V\        \         34      '       d   W},          VR &   M+Vf(   R VP                  9   d   VP                  R ,          VR &   \        V	\        \         34      '       d   W,          VR&   \        V
\        \         34      '       d   W,          VR&   V^,          pV'       Ed   VR,          pVP                   P                  R4      pVP                   P                  R4      pV\        P"                  8X  d!   \%        V4      ^8  d   \        P&                  pV\        P&                  8X  d   VP(                  P                  4       p\*        P,                  P/                  RV P0                  R4      pVP2                  pV'       d   VP5                  V4      pMRV P0                  ,           pVP7                  VV4       M5V\        P"                  8X  d   VR,          P(                  pMVP(                  p\8        P:                  ! VP                  R4      VP                  R4      4      pVP=                  RR7      pV'       g]   VVP                  R4      8X  dG   VVP                  R4      8X  d1   R V9   d*   VP                   R ;;,          VR ,          ,          uu&   EK  MRpVP?                  \A        VVV4      4       EK   	  EK?  	  \%        V4      ^8X  d   V'       g   V^ ,          P(                  # V! VR\C        \%        V4      4      \C        V4      4       V'       d   V P                  V8w  d   V P                  V4      p \D        PF                  ! V \I        \J        \L        ,          \O        W4      4      \D        PP                  ! R	RV P0                  ,           ^ V4      .4       ^ p\S        V4       EF%  w  ppVP(                  pVP2                  '       g   RVP0                  ,           pMVP2                  pVP5                  V4      pVP0                  pVP                   p\U        \W        VP                  R ^ 4      4      4      pVP                  RV	4      pVP                  RV
4      pV! VR
\C        V4      \C        V^ ,          4      \C        V^,          4      \C        V^ ,          4      \C        V^,          4      \Y        V4      \Y        R4      \[        V4      \[        V4      4       V^,          pV^ 8X  do   V'       gg   \D        PF                  ! V\I        \J        \L        ,          \O        W4      4      \D        PP                  ! R	RVP0                  ,           ^ V4      .4       EK  \]        WV4      p\D        PF                  ! V\I        \J        \L        ,          V4      \D        PP                  ! R	RVP0                  ,           ^ V4      .4       VP^                  pEK(  	  R# )r   r   r   r  Nr"   F)Z
alpha_onlys   acTLr   r*  r   )r    r    r    r    r   i)0rX  r  r   r#   r)   r/   r0   	itertoolschainr   Iteratorr7  r   r@  r   Zlistr   r+   r   r*   r0  r	   r5  r6  r8  r   Zcropr1  r
   Zsubtract_moduloZgetbboxrg   rV  rH  r   _saver   r   r4   rL  r   Z	enumeraterA   Zroundo16r   rT  r   ) r0  rG   rM  r7  r$  r   rY  r   r   r   r  r\  Z	im_framesZframe_countim_seqim_framerX  ZpreviousZprev_disposalZ
prev_blendZbase_imr-  r   Zdeltar   r'  Z
frame_datar8  Zframe_durationZframe_disposalZframe_blendZfdat_chunkss    &&&&&&&                         r.   _write_multiple_framesrb    s    ~~!!*-H>>fbggkk&!&<=D~~!!*bggkk*hFVFV.WXHNNwGU__(MNE.m4 IK%..v6H}}$#==?#++D1..--/K(T5M22*2*?J'!jHMM&A*2--
*CJ'(T5M22*2*?J'%$//','9G$1Ky$R= ( 4 4 8 8 D%1155g>
 H$8$88S^a=O$,$:$:M H$:$::&kk..0G#jjoofbgg|LG#==D"),,t"4%/MM'40"h&:&::'m..G&kkG"22$$V,goof.E }}}6%)DD"koog&>>"k1((4J8OO4VHdK@Ae 7 j 9~=| 

C	ND		 77d?D!BEE",-__UFRWW$4aAB	
 G&y1z==HMM)D??D}}T*H}} ,,U;??:q#ABC$X>!oogu5LQLQLQLQLI~{O	
 	1A:mOORYb 01(>7KL  73KOORY,(>7KL
 "))GU 2V r-   c               r   )	r2   r0  rW  rG   rH   filenamer   r5   rI   r$   r6   r8   r.   r9   r9     s(     + ++ +9 + + +r-   c                s"    \        WVR R7       R# )T)save_allN)r^  )r0  rG   rc  rv   r.   	_save_allre    s    	"(T*r-   c               s0    V ^8  d   QhRRRRRRRRR	R
RR/# )r2   r0  rW  rG   rH   rc  r   rM  rN  rd  r   r5   rI   r$   r6   r8   r.   r9   r9     sL     P PPP P 	P
 P 
Pr-   c                s  a( V'       Ed>   V P                   P                  R V P                  P                  R 4      4      p\        4       p\        4       o(V P                   P                  R. 4      p\        P
                  ! V .V4       FV  p\        P                  ! V4       F9  p	VP                  V	P                  4       S(P                  V	P                  4       K;  	  KX  	  R4 F  p
W9   g   K   M	  VP                  4       p
\        ;QJ d     . V(3R l\        ^4       4       F  NK  	  5M! V(3R l\        ^4       4       4      pMV P                  pV P                  p
T
pV
R8X  d   RV P                   9   d&   \        ^V P                   R,          ,          R4      pMZV P                  '       dG   \!        \        \#        V P                  P%                  4       ^,          4      ^,          R4      ^4      pMRpV^8:  d#   V^8:  d   ^pMV^8:  d   ^pM^pVRV 2,          pV P                   P                  R	R
4      V P                   P                  RR54      V P                   P                  RR54      V P                   P                  RR4      3V n         \(        V,          w  pppTR8X  d   \/        R^^R7       TP1                  \2        4       T! TR\5        T^ ,          4      \5        T^,          4      TTRRR4	       . R6OpT P                   P                  RT P                  P                  R4      4      pT'       dB   RpTR,           \6        P8                  ! T4      ,           pT! TRT4       TP;                  R4       T P                   P                  R4      pT'       d   . R7OpTP<                   F  pTR,          w  ppTT9   d   TP;                  T4       T! TTT4       K3  TT9   d   T! TTT4       KF  TR,          P?                  4       '       g   Ke  \#        T4      ^8H  ;'       d
    T^,          pT'       d   K  T! TTT4       K  	  T P                  R8X  dM   X^,          pT P@                  PC                  R4      RT p\#        T4      T8  d   TR,          pK  T! TRT4       T P                   P                  R T P                  P                  R R4      4      pT'       g	   T^ 8X  Ed   T P                  R8X  d]   Xp \E        T\F        4      '       d   T! TR!TRT  4       EM5\!        ^ \        ^T4      4      pR"T,          R,           p!T! TR!T!RT  4       EM T P                  R89   d+   \!        ^ \        R#T4      4      pT! TR!\I        T4      4       MT P                  R8X  d;   Tw  p"p#p$T! TR!\I        T"4      \I        T#4      ,           \I        T$4      ,           4       MzR T P                   9   d   R$p\-        T4      hM[T P                  R8X  dK   T P@                  PK                  4       R8X  d,   T P@                  PC                  RR%4      p!Xp T! TR!T!RT  4       T P                   P                  R&4      p%T%'       d[   T! TR'\5        \M        T%^ ,          R(,          R),           4      4      \5        \M        T%^,          R(,          R),           4      4      R*4       T'       dH   R+R,.pTP<                   F3  pTR,          w  ppTT9   g   K  TP;                  T4       T! TTT4       K5  	  T P                   P                  R-4      p&T&'       d\   \E        T&\N        PP                  4      '       d   T&PS                  ^4      p&T&PU                  R.4      '       d
   T&R/,          p&T! TR0T&4       T p'T'       d   \W        YY:TXX4      p'T''       dd   \X        PZ                  ! T'\]        \^        \F        ,          \a        Y4      4      \X        Pb                  ! R1R9T'P                  ,           ^ T4      .4       T'       dr   TP<                   Fa  pTR,          w  ppTR,          P?                  4       '       g   K.  \#        T4      ^8H  ;'       d
    T^,          pT'       g   KW  T! TTT4       Kc  	  T! TR2R4       \e        TR34      '       d   TPg                  4        R# R#   \*         d   pRT
 R2p\-        T4      ThRp?ii ; i):r   rY  r"   r   r   c              3  sP   <a"   T F  o\        V3R  lS 4       4      x  K  	  R# 5i)c              3  s4   <"   T F  qS,          x  K  	  R # 5irK   r$   )r   Z
frame_sizer   s   & r.   r   Z"_save.<locals>.<genexpr>.<genexpr>2  s     ?:As   N)max)r   r   sizess   &@r.   r   Z_save.<locals>.<genexpr>2  s     RAS????s   "&bitsi   Z;ZoptimizeFZcompress_levelZcompress_typeZ
dictionaryr-   zcannot write mode z as PNGNr   zSaving I mode images as PNG)Z
stacklevels   IHDRr      sRGBr   s   ICC Profiler   s   iCCPZpnginfo:Nr2   Nr  s   PLTEr   s   tRNSs   i  z%cannot use transparency for this modeZAr   s   pHYsr   g      ?   s   bKGDs   hISTr   r   :   NNs   eXIfr   r{   flush)r"   r   r   rZ  )s   cHRMs   cICPs   gAMAs   sBITri  s   tIME)s   sPLTr   r   r   )r   r   r   r   r   )4rX  r  r   Zsetr[  r\  r   r]  r   r7  r8  rS   r   r(  r>  r  rf  r   ZgetdataZencoderconfig	_OUTMODESZKeyErrorrx   r   rG  r
  rH  r:   r   Zremover   r  r0  Z
getpaletter   r4   r_  ZgetpalettemoderA   r	   ZExifZtobytesr	  rb  r   r^  r   r   rL  r   Zhasattrrl  ))r0  rG   rc  rM  rd  r   ZmodesrY  r`  ra  r7  r8  ZoutmodeZcolorsrh  r$  Z	bit_depthZ
color_typert   r=   r   ZiccZnamer?   r   Zchunks_multiple_allowedZ
info_chunkr\   r   Zpalette_byte_numberZpalette_bytesr   Zalpha_bytesZalphaZredZgreenZbluer   r   Z	single_imrg  s)   &&&&&                                   @r.   r^  r^    s[    x**RWW[[9
 **?B?oordM:F)226:		(--(		(--( ; ; )D} ) 99;DuRqRuuRqRRwwwwGs{ R^^#bnnV44c:F zzzSRZZ%7%7%9!%<!=!BCH!LR<{14&z!G 	:u-
+R0
?B/
<-	B")27);&J #~/B
 HHV	
DGDG
 DF
..

]BGGKK,F
GC
 g~c 22b'4  	g>>i(D"F++J"2ICf}c"b#t$//b#t$S!!## _1CCjm
!z"c4( & 
ww#~$qj((/0D1DE- #66U"Mb'=)>>%%nbggkk.RV6WXL|q(77c> K,..b'<#=>"1c#|&<=,.6b'5+#67WW//q#e\":;L"gs<01WW+C"gs3x#e*4s4y@A/ >cl"	 0 77c>bee224>EE$$VS1E K"gu\k23
..

U
#C
CFVOc)*+CFVOc)*+	
 7#++J"2ICf}c"b#t$	 & >>f%DdEJJ''<<?D???++8Db'4 $&I*E-
	 EE",-__UFY^^$;QHI	
 ++J"2IC3x!! _1CCjm
:"c4( & 
"gsr7

 _  ""4&0cl!"s   c c;$c66c;c               r)  )r2   r0  rW  paramsr   r5   z list[tuple[bytes, bytes, bytes]]r$   r6   r8   r.   r9   r9     s"      +  1Q r-   c                sr   a ^ RI Hp . oR V3R llpV! 4       p Wn        \        WRV4       V =S#   T =i ; i)z4Return a list of PNG chunks representing this image.)BytesIOc               rf   rE  r$   r6   r8   r.   r9   Zgetchunks.<locals>.__annotate__  s(     - -9 -5 - -4 -r-   c                s   < R P                  V4      p\        \        V\        V4      4      4      pSP                  WV34       R# )r-   N)rF  rH  rC   rg   )rG   r\   r?   rI  ru   r   s   &&*  r.   rg   Zgetchunks.<locals>.append  s6    HHTN	&F3K01ss+,r-   r   )Zioro  rX  r^  )r0  rn  ro  rg   rG   r   s   &,   @r.   	getchunksrp    sG    F- -
 
Bbb&!NM Ns   2 6z.pngz.apngz	image/png)r   r    )r   r   )r2   r    )r   r   )rQ   r    )r   r   )r  r    )r   r   )   r    )r   r   )r  r2   )r   r   )rq  r2   )r   zRGB;16B)r      )r   r   )r2   rr  )r   r   )rQ   rr  )r   r    )r  rr  )r   r   )r  rQ   )r!   r!   )rq  rQ   )r"   zLA;16B)r  rk  )r"   r"   )rq  rk  )r"   zRGBA;16B)r    )r   rj  r   )rD  rj  r   )r      r   )r      r   )r      r   )r!   ru  rt  )r   s   r   )r   rj     )r   rs  rv  )r    rt  rv  )r   ru  rv  )r   ru  rs  )r"   ru  s   )OZ
__future__r   r[  ZloggingZrerr   r   r:   Zcollections.abcr   Zenumr   Ztypingr   r   r   r   r   r   r	   r
   r   r   r   Z_binaryr   r   r   rW   r   r   r_  r   rH  Z
_deprecater   Z_utilr   ZTYPE_CHECKINGr   Z	getLoggerr%   rk   Zcompiler   rX   r
  r   r   Z	SAFEBLOCKr;   r   r#   r/   r>   rC   rD   r   r|   r   r   r   r  r  rm  rJ  rL  rT  rV  rb  re  r^  rp  Zregister_openr7   Zregister_saveZregister_save_allZregister_extensionsZregister_mimer$   r-   r.   <module>rw     s  B #   	    $  6 6 G G ! !  ! ! !  			8	$	L	!	'	' 
 J
L
L
J
N
L
L
L
J
L
!+
2 **01$$
 ~%w *G /[ [|3 6Y3 Y3@: d4 d4V%S!9&& S!v
 	 	$	$	$	 
"	$
'(	$	$	$	 	$
&!	(+ +
 
 Z  K\+ "*Pn2   L''w ?   L'' /   ++Y 7   ,--/@ A   L'' 5r-   