Files
old-saburly-wagtail-web/env/lib/python3.10/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc

303 lines
22 KiB
Plaintext
Raw Normal View History

2024-08-27 20:33:44 +02:00
o
<00><><EFBFBD>fA<66><00>@sFddlmZddlZddlZddlZddlZddlZddlmZddl m
Z
ddl m Z m Z mZmZmZmZmZddlmZmZmZmZmZmZmZddlmZdd lmZdd
lmZ e rddd lm!Z!Gd d <0A>d e<08>Z"e"j#Z$dadd<13>Z%Gdd<15>dej<16>Z&dddd<18>Z'dbdd<1C>Z(ee)e*ee+ejfZ,dcd!d"<22>Z-ddd&d'<27>Z.ded+d,<2C>Z/Gd-d.<2E>d.e<11>Z0dfd/d0<64>Z1dgd3d4<64>Z2 5dhdid7d8<64>Z3djd:d;<3B>Z4dkd?d@<40>Z5dgdAdB<64>Z6d5Z7dldDdE<64>Z8dmdGdH<64>Z9dndIdJ<64>Z:dodKdL<64>Z;dpdOdP<64>Z<dqdRdS<64>Z=drdUdV<64>Z> dsdtdYdZ<64>Z? [dudvd]d^<5E>Z@e<14>Ae&jBe&e%<25>e<14>Ce&jBe3<65>e<14>De&jBe2<65>e<14>Ee&jBd_<64>e<14>Fe&jBd`<60>dS)w<>)<01> annotationsN)<01>IntEnum)<01>cached_property)<07>IO<49> TYPE_CHECKING<4E>Any<6E>List<73>Literal<61>
NamedTuple<EFBFBD>Union<6F>)<07>Image<67>
ImageChops<EFBFBD> ImageFile<6C> ImageMath<74>ImageOps<70> ImagePalette<74> ImageSequence)<01>i16le)<01>o8)<01>o16le)<01>_imagingc@seZdZdZdZdZdZdS)<06>LoadingStrategyz.. versionadded:: 9.1.0rr <00>N)<07>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>RGB_AFTER_FIRST<53> RGB_AFTER_DIFFERENT_PALETTE_ONLY<4C>
RGB_ALWAYS<EFBFBD>r!r!<00>T/home/amir/Desktop/saburlyweb/env/lib/python3.10/site-packages/PIL/GifImagePlugin.pyr6s
r<00>prefix<69>bytes<65>return<72>boolcCs|dd<01>dvS)N<>)sGIF87asGIF89ar!)r#r!r!r"<00>_acceptEsr(cs<>eZdZdZdZdZdZd#dd<08>Zd$d d <0A>Zd%dd<10>Z e
d&dd<13><04>Z e d'dd<15><04>Z d(dd<18>Zd)d*dd<1C>Zd%<25>fdd<1E> Zd%dd <20>Zd&d!d"<22>Z<12>ZS)+<2B> GifImageFile<6C>GIFzCompuserve GIFFNr%<00> bytes | NonecCs,|j<00>d<01>}|r|dr|j<00>|d<00>SdS)Nr r)<02>fp<66>read)<02>self<6C>sr!r!r"<00>dataUs  zGifImageFile.data<74>pr$r&cCs\tdt|<01>d<02>D]#}|d||kr'||dkr'||dks+dSdSqdS)Nr<00>r rTF)<02>range<67>len)r.r1<00>ir!r!r"<00>_is_palette_needed[s4<02><02>zGifImageFile._is_palette_needed<65>NonecCs<>|j<00>d<01>}t|<01>sd}t|<02><01>|dd<03>|jd<t|d<03>t|d<05>f|_g|_|d}|d@d}|d @rU|d
|jd <|j<00>d |><00>}|<00>|<05>rUt <09>
d |<05>}||_ |_ |j|_ |j<00><0E>|_d|_|<00>d<0E>dS)N<> znot a GIF filer'<00>version<6F><00>
<00>r <00><><00> <00>
backgroundr2<00>RGBr)r,r-r(<00> SyntaxError<6F>info<66>i16<31>_size<7A>tiler6r<00>raw<61>global_palette<74>palette<74>_fp<66>tell<6C>_GifImageFile__rewind<6E> _n_frames<65>_seek)r.r/<00>msg<73>flags<67>bitsr1r!r!r"<00>_openas&  
   zGifImageFile._open<65>intcCs\|jdur+|<00><01>}z |<00>|<00><01>dd<03>q ty%|<00><01>d|_Ynw|<00>|<01>|jS)NTr F<>rLrJrM<00>EOFError<6F>seek)r.<00>currentr!r!r"<00>n_frames|s
<02> <02>
zGifImageFile.n_framescCs^|jdur
|jdkS|<00><01>}|rdSz
|<00>dd<03>d}Wn ty'd}Ynw|<00>|<01>|S)Nr TFrS)r.rV<00> is_animatedr!r!r"rX<00>s

  <02>
zGifImageFile.is_animated<65>framec Cs<>|<00>|<01>sdS||jkrd|_|<00>d<01>|j}t|jd|d<00>D]!}z|<00>|<03>Wq!tyB}z |<00>|<02>d}t|<05>|<04>d}~wwdS)Nrr <00>no more images in GIF file)<07> _seek_check<63>_GifImageFile__frame<6D>imrMr3rTrU)r.rY<00>
last_frame<EFBFBD>f<>erNr!r!r"rU<00>s




<08><02><04>zGifImageFile.seekT<6B> update_imagecs|dkr!d<01>_d<00>_d<02>_<02>j<03><04>j<05>d<01>_d<03>jvr <20>jd=n <09>jr*|r*<2A><00> <09>|<01>jdkr:d|<01><00>}t
|<03><01><01>j<03>_ <0B>jrT<72>j <0B><04>j<00><00><00> <0C>rQ <00><00> <0C>sLd<01>_<00>j <0B> d<04>}|r`|dkrfd}t|<03><01>d}i}d}d}d} |sy<73>j <0B> d<04>}|r|dkr<><72>nE|d k<02>r3<72>j <0B> d<04>}<04><00> <0C>}
|dd
kr<>|
dur<>|
d} | d@r<>|
d }t|
d<04>d |d <d| @} | d?} | r<>| <0C>_nj|ddkr<>d} |
r<EFBFBD>| |
7} <0A><00> <0C>}
|
s<EFBFBD>d|vr<>|dd| 7<n| |d<d}qp|ddk<02>r'|dk<02>r'|
du<01>r'|
<EFBFBD>j <0B><10>f|d<|
dd<15>dk<02>r'<27><00> <0C>}
|
<EFBFBD>r't|
<EFBFBD>d k<05>r'|
ddk<02>r't|
d<04><02>jd<<00><00> <0C><00>r2 <00><00> <0C><00>s,n<>|dk<02>j <0B> d<19>}t|d<01>t|d<0F>}}|t|d<1A>|t|d<1B>}}|<10>jdk<04>sh|<11>jdk<04>r<>|<02>r<>t|<10>jd<00>t|<11>jd<00>f<02>_t<15><16>j<14>||||f} |d} | d@dk}| d@<00>r<>| d@d}<12>j <0B> d |><00>}<13><00>|<13><01>r<>t<18>d |<13>}nd!}<05>j <0B> d<04>d}<12>j <0B><10><00>_nd}qq|du<00>r<>d"}t|<03><01>|<01>_|<02>s<>dSg<00>_<08>j<01>r<><72>j<1A><1B>j<01>j<1C>|du<01>r<>|n<02>j<1D>_|<07>_|dk<02>r.<2E>j<1E>rt t!j"k<02>r|du<01>r d#nd <20>_#nd$<24>_#nd%<25>_#|<05>s*<2A>j<1D>r*dd&l$m$}|<14>j<1D>}|<05>_%nA<6E>j&d$k<02>rot t!j'k<03>s=|<05>rod<00>_(d'<27>jv<00>rb<72>j<1A>)<29>jd'd<01><00>j<1A>*d#tj+j,<2C><02>_d#<23>_#<23>jd'=n d <20>_#<23>j<1A>*d tj+j,<2C><02>_d3<64>fd,d-<2D> }d<00>_| <09>_<1C>j<1C>r+<2B>jdk<05>r+z<><7A>jdk<02>j\}}}}||||f}t<15>|<16>d$}<17>j<07>-d'|<07>}|du<01>r<><72>j&d.v<00>r<>d#}||<18>d/}n<13>j<07>-d0d<01>}<18>j&d.v<00>r<>d }||<18>}tj.<2E>/|||<18><03>_nD<6E>jdu<01>r<><72><00>0<EFBFBD>j<1A>j<1C><02>_n4|du<01>r<1F>j\}}}}||||f}t<15>|<16>d$}|}<18>j&d.v<00>rd#}||<07>d/}tj.<2E>/|||<18><03>_Wn
t1<74>y*Ynw|du<01>r`d}|du<01>rP|dk<02>rHt t!j"k<03>rG|<07>jd'<n<08>j&d.v<01>rP|}d1||||f<04>j|||ffg<01>_|<06>-d<03><01>rm|d<00>jd<d2D]}||v<00>r||<00>j|<<00>qo|<1A>jv<00>r<><72>j|=<00>qodS)4Nr<00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>commentr zcannot seek to frame <20>;rZT<>!<21><>r2r;<00>duration<6F>r<00><><00><00>
<EFBFBD><EFBFBD><00> extensionr><00> NETSCAPE2.0<EFBFBD>loop<6F>,<2C> <00>r'r:<00>@r=r<r@Fzimage not found in GIF frame<6D>RGBA<42>P<>L)<01>copy<70> transparency<63>colorrRr%<00>tuple[int, int, int]csL<00>jr!|ddt<01>jj<02>krd}t<03>jj|d|dd<00><00>S|||fS)Nr2r)<04>_frame_paletter4rH<00>tuple)ry<00>r.r!r"<00>_rgbXs
 
z GifImageFile._seek.<locals>._rgb<67>r@rt)rr?<00>gif)rgrm)ryrRr%rz)2<>_GifImageFile__offset<65>disposer\rIrUrK<00>disposal_methodrBrE<00>load<61>
ValueErrorr,r0r-rTrCrJr4<00>size<7A>maxrDr <00>_decompression_bomb_checkr6rrFr]<00>paste<74>dispose_extentrGr{<00>_frame_transparency<63>LOADING_STRATEGYrr <00>_moderwrH<00>moder<00>pyaccess<73>putpalettealpha<68>convert<72>Dither<65>FLOYDSTEINBERG<52>get<65>core<72>fill<6C>_crop<6F>AttributeError)r.rYrarNr/rHrB<00>frame_transparency<63> interlace<63>frame_dispose_extent<6E>blockrO<00> dispose_bitsrc<00>x0<78>y0<79>x1<78>y1rPr1rwr~<00> dispose_size<7A> dispose_moderyrx<00>kr!r}r"rM<00>st
<02>

<08>    
 <02> <04>""

<EFBFBD><02>
 &"   
   <02>
[
  
  <04> 
 

  <02>  

  <06><04><02>


 
<02> 
<02><06> 
 <04><04>zGifImageFile._seekcs<>|jrdnd}d|_|jdkr |jdurtj<05>||j|j<03>|_n*|j dvrJ|j|_|jrGtj<05>d|j|jp6d<03>|_|jj
dg|j<00> <0B><00>R<00>nd|_||_ d|_t <0A><00><0E>dS)Nrurvrrr@)r{<00>_prev_imr\r<>r r<>r<>r<>r]r<><00>
putpalette<EFBFBD>getdatar<61><00>super<65> load_prepare)r.<00> temp_mode<64><01> __class__r!r"r<><00>s"


<06><02>
zGifImageFile.load_preparecCs|jdkr0|jdkr.ttjkr.|jdur |j<06>|jd<01>d|_nd|_|j<06> |jt
j j <0C>|_dS|j s5dS|jdurI|j<06>|jd<01>|j<06> d<03>}n|j<06> d<04>}|jdusVJ<00>|<00>||j<0E>}|j |_|jj|_|jdkrv|j<06>||j|<01>dS|j<06>||j<0E>dS)Nrrurtr@)r\r<>r<>rr r<>r]r<>r<>r<>r r<>r<>r<>r<>r<>r<>)r.<00>frame_imr!r!r"<00>load_end<6E>s*


 

zGifImageFile.load_endcCs|jS<00>N)r\r}r!r!r"rJ<00>szGifImageFile.tell)r%r+)r1r$r%r&)r%r7)r%rR)r%r&)rYrRr%r7)T)rYrRrar&r%r7)rrr<00>format<61>format_description<6F>!_close_exclusive_fp_after_loadingrGr0r6rQ<00>propertyrWrrXrUrMr<>r<>rJ<00> __classcell__r!r!r<>r"r)Ns$


  
 
r)rvru)<03>1rvrur]<00> Image.ImagecCs<>|jtvr |<00><02>|St<03>|j<00>dkr=|jdtjjd<03>}|jjdkr;|jj D]}|ddkr:|jj ||j
d<|Sq&|S|<00>d<08>S) a 
Takes an image (or frame), returns an image in a mode that is appropriate
for saving in a Gif.
It may return the original image, or it may return an image converted to
palette or 'L' mode.
:param im: Image object
:returns: Image object
r@ru<00>rHrtr2rrxrv) r<><00>RAWMODEr<45>r <00> getmodebaser<65><00>Palette<74>ADAPTIVErH<00>colorsrB)r]<00>rgbar!r!r"<00>_normalize_mode<64>s
   <02>
r<>rH<00>_Palette | NonerB<00>dict[str, Any]c Cs<>d}|rt|tttf<03>rt|dd<02><00>}t|tj<04>rt|j<05>}|jdkr1|s0|j<07>d<04>dd<02>}n|s>tdd<06>t d<02>D<00><01>}tjd|d<07>|_|r<>g}|dusPJ<00>t dt
|<03>d <09>D]}t |||d <00><00>}|jj <0C> |<06>}||vrqd}|<04>|<07>qXt|<04>D]\}}|dur<>t t
|<04><01>D] }||vr<>|||<nq<>q{|<00>|<04>}n/t||<02>}|dur<>|<00>||<03>}d
|vr<>z |<04>|d
<00>|d
<W|Sty<>|d
=Y|Sw|S||j_|S) at
Normalizes the palette for image.
- Sets the palette to the incoming palette, if provided.
- Ensures that there's a palette for L mode images
- Optimizes the palette if necessary/desired.
:param im: Image object
:param palette: bytes object containing the source palette, or ....
:param info: encoderinfo
:returns: Image object
Nirur@css<00>|]}|dVqdS)r2Nr!)<02>.0r5r!r!r"<00> <genexpr>s<02>z%_normalize_palette.<locals>.<genexpr>r<>rr2rx)<14>
isinstancer$<00> bytearray<61>listrrHr<>r]<00>
getpaletter3r4r|r<>r<><00>append<6E> enumerate<74> remap_palette<74> _get_optimize<7A>indexr<78>) r]rHrB<00>source_palette<74>used_palette_colorsr5<00> source_colorr<72><00>jr!r!r"<00>_normalize_palette<74>s^ 

<02>  <02><02> 
 
<EFBFBD> <0C><02>r<>r,<00> IO[bytes]r7c Cs<>t|<00>}|j<01><02>D] \}}|j<03>||<05>q t|||j<03>}t||j<03>D]}|<01>|<06>q"d}t|<00>r4|dB}t ||d|<07>dt|<00>f|_
t <0B> ||dd|j dt|jfg<01>|<01>d<06>dS)Nrrs<00>rrr:r<><00>)r<>rB<00>items<6D> encoderinfo<66>
setdefaultr<EFBFBD><00>_get_global_header<65>write<74> get_interlace<63>_write_local_header<65> encoderconfigr<00>_saver<65>r<>r<>)r]r,rH<00>im_outr<74><00>vr/rOr!r!r"<00>_write_single_frame?s $r<><00>base_im<69>im_frame<6D>4tuple[Image.Image, tuple[int, int, int, int] | None]cCs@t|<01>t|<00>kr|<01>d<01>}|<00>d<01>}t<02>||<00>}||jdd<03>fS)NrtF)<01>
alpha_only)<05>_get_palette_bytesr<73>r<00>subtract_modulo<6C>getbbox)r<>r<><00>deltar!r!r"<00>_getbboxXs


 r<>c@s&eZdZUded<ded<ded<dS)<08>_Framer<65>r]z tuple[int, int, int, int] | None<6E>bboxr<78>r<>N)rrr<00>__annotations__r!r!r!r"r<>bs
 r<>c
Cs<>|j<00>d<01>}|j<00>d|j<02>d<02><01>}g}d}d}d}t<03>|g|j<00>dg<00><02>D<00>]]} t<05>| <09>D<00>]T}
t|
<EFBFBD><08><00>}
|dkrP|
j<02> <09>D]\} } | dkrHq?|j<00>
| | <0C>q?|j<00><08>} d|
jvrc| <0A>
d|
jd<00>t |
|| <0A>}
t |t tf<02>rw||| d<n|dur<>d|
jvr<>|
jd| d<t |t tf<02>r<>||| d<|d7}d}|<05>rr|<06>rrt||
<EFBFBD>\}}|s<>| <0A>d<01>r<>|djd| d7<q-|dj<00>d<02>dkr<>|dur<>|j<00>d|j<02>dd <09><02>}t|
|<11>}t<11>d
|
j|<12>}|<08>|djj<16>t||
<EFBFBD>d}n<>| <0A>d <0B><01>rq|
jd k<03>rqd| v<01>rz
|
j<16>|
<EFBFBD>| d<Wn
t<19>yYnwd| v<00>rq|
<EFBFBD><08>}t<11>d
|j| d<00>}|jd k<02>rH|<0F><1A>\}}}}tjdd<0F>||||d<10>}n|jd
k<02>r^t<11>d|j<13>}|<19>|<0F><1E><00>|}tjdd<0F>|d<13>}|j|t <20>!|<18>d<14>nd}|
}|<05>"t#|<0E>p}|
|| <0A><03>q-q%t$|<05>dk<02>r<>d|jv<00>r<>|djd|jd<dS|D]9}|j}
|j%<25>s<>t&|
|j<00>D]}|<01>'|<1B><00>q<>d}n|<02>s<>d|jd<|
<EFBFBD>(|j%<25>}
|j%dd<08>}t)||
||j<00><00>q<>dS)Nrg<00>disposalr<00> append_imagesrxr rbr)rrrru<00>optimizer<65>rtcSs@|d|d|d|d|d|d<00>|d<00>|d<00>dd<08>S) Nr<4E>r<><00>r<>g<>b<>arlr<>r!<00><01>argsr!r!r"<00><lambda><3E>s<02><02><02><04>z(_write_multiple_frames.<locals>.<lambda>)r<>r<>r<>r<>rvcSs|d|ddd<04>S)Nr<4E>r]rlr<>r!r<>r!r!r"r<><00>s<00>r])<01>maskFr<46>T<>include_color_table)*r<>r<>rB<00> itertools<6C>chainr<00>Iteratorr<72>rwr<>r<>r<>r<>r<>r|r<><00>_get_backgroundr <00>newr<77>r<>r]rHr<><00>_new_color_indexr<78><00>splitr<00> lambda_eval<61>putdatar<61>r<>r<00>invertr<74>r<>r4r<>r<>r<><00>crop<6F>_write_frame_data)r]r,rHrgr<><00> im_frames<65> previous_im<69> frame_count<6E> background_im<69>
imSequencer<EFBFBD>r<>r<>r<><00>
diff_framer<EFBFBD>r<>ryr?r<>r<>r<>r<>r<>r<><00>delta_l<5F>
frame_datar/<00>offsetr!r!r"<00>_write_multiple_frameshs<>  

   
<04>



<EFBFBD><02>
 
<08> <06><02><02>U 
 r<00>filename<6D> str | bytescCst|||dd<02>dS)NT)<01>save_all)r<>)r]r,rr!r!r"<00> _save_all<6C>srFrcCs~d|jvs
d|jvr|j<00>d|j<01>d<01><01>}n d}|j<00>dd<03>|r't|||<04>s-t|||<04>|<01>d<04>t|d<05>r=|<01><08>dSdS)NrHr<>Trd<00>flush) r<>rBr<>r<>rr<>r<><00>hasattrr)r]r,rrrHr!r!r"r<><00>s 

 <04>r<EFBFBD>rRcCs$|j<00>dd<02>}t|j<03>dkrd}|S)Nr<4E>r <00>r)r<>r<><00>minr<6E>)r]r<>r!r!r"r<><00>sr<>r <00>tuple[int, int]rOc Csjz|jd}Wn tyd}Ynwd|jvr"t|jdd<00>}nd}t|j<00>dd<04><02>}|dus7|dks7|rd|dur=dnd}||d>O}|<00>dtd <09>td
<EFBFBD>t|<07>t|<05>t|p\d<04>td<04><00>|j<00>d <0B>}|r~t|<01>} t| <09>}
|
r~|d B}||
B}|<00>d t|d<00>t|d<00>t|j d<00>t|j d<00>t|<03><00>|r<>|
r<EFBFBD>|<00>t
| <09><01>|<00>td<0E><01>dS)Nrxrgr;rr<>r rrerfrrr<>r=rpr:) r<><00>KeyErrorrRr<>r<>r<00>o16r<36><00>_get_color_table_sizer<65><00>_get_header_palette) r,r]r rOrxrgr<><00> packed_flagr<67><00> palette_bytes<65>color_table_sizer!r!r"r<>sd <02>
 <02><02><02><02>
<02><02><04>

<02>
<02> <02> <02><02><04>r<>c
Cs"|<00><00>}z{t|d<01><02>Z}|jdkrtjd|g|tjd<04>nAdd|g}dg}tj|tjtjd<04>}tj||j|tjd<07>}|jdus@J<00>|j<08> <09>|<07>
<EFBFBD>} | rQt<03> | |<05><02>|<08>
<EFBFBD>} | r]t<03> | |<06><02>Wd<00>n1sgwYWzt <0C> |<03>WdStyYdSwzt <0C> |<03>Wwty<>Yww)N<>wbr@<00>ppmtogif)<02>stdout<75>stderr<72>ppmquant<6E>256)<03>stdinr!r")<0F>_dump<6D>openr<6E><00>
subprocess<EFBFBD>
check_call<EFBFBD>DEVNULL<4C>Popen<65>PIPEr!<00>close<73>wait<69>CalledProcessError<6F>os<6F>unlink<6E>OSError)
r]r,r<00>tempfiler_<00> quant_cmd<6D> togif_cmd<6D>
quant_proc<EFBFBD>
togif_proc<EFBFBD>retcoder!r!r"<00> _save_netpbm3sN 
 <08>

<06><06>
  <02><1C><02>  <02><02> <02>r9<00>list[int] | NonecCs<>|jdvr`|r`|<01>d<02>r`tp|jdk}|s|j|jdkr`g}t|<00><06><00>D] \}}|r0|<03>|<04>q%|s;t|<03>t |<03>kr=|St |j
j
<EFBFBD>t <0B> |j
j<00>}d|d<00> <0A>>}t |<03>|dkr`|dkr`|SdS)aL
Palette optimization is a potentially expensive operation.
This function determines if the palette should be optimized using
some heuristics, then returns the list of palette entries in use.
:param im: Image object
:param info: encoderinfo
:returns: list of indexes of palette entries in use, or None
)rurvr<>rvir rN)r<>r<><00>_FORCE_OPTIMIZE<5A>width<74>heightr<74><00> histogramr<6D>r<>r4rHr <00> getmodebands<64>
bit_length)r]rB<00>optimiser<65>r5<00>count<6E>num_palette_colors<72>current_palette_sizer!r!r"r<>hs$  
<02><06>r<>rcCs6|sdSt|<00>dkr dSt<01>t<01>t|<00>dd<05><02>dS)Nrrqr r2r)r4<00>math<74>ceil<69>log)rr!r!r"r<00>s
 rcCs<t|<00>}d|>t|<00>d}|dkr|td<03>d|7}|S)z<>
Returns the palette, null padded to the next power of 2 (*3) bytes
suitable for direct inclusion in the GIF header
:param palette_bytes: Unpadded palette bytes, in RGBRGB form
:returns: Null padded palette
rr2r)rr4r)rr<00>actual_target_size_diffr!r!r"r<00>s
rcCs|jr|jjSdS)z<>
Gets the palette for inclusion in the gif header
:param im: Image object
:returns: Bytes, len<=768 suitable for inclusion in gif header
rjr<>r<>r!r!r"r<><00>sr<><00>info_background<6E>=int | tuple[int, int, int] | tuple[int, int, int, int] | Nonec
Csdd}|r0t|t<01>r.z
|j<02>||<00>}W|Sty-}zt|<03>dvr"<22>WYd}~|Sd}~ww|}|S)Nr)z$cannot allocate more than 256 colorsz/cannot add non-opaque RGBA color to RGB palette)r<>r|rH<00>getcolorr<72><00>str)r]rIr?r`r!r!r"r<><00>s
 <0E> 
<EFBFBD>
<08><02>
r<><00> list[bytes]c Cs~d}|j<00>d<02>dks!|r#d|vs!|<01>d<05>dus!|<01>d<07>s!|<01>d<08>r#d}t||<01>d <09><01>}t|<00>}t|<04>}d
|t|jd <00>t|jd <00>t|d <00>t|<03>td <0B>t|<04>g}|<01>d<05>dur}|<06> dtd<0F>td<10>dtd<12>td <0C>t|d<00>td <0B><00>|<01>d<08>r<>dtd<13>}|d}t
|t <0B>r<>|<08> <0C>}t d t|<08>d<0F>D]} || | d<00>}
|tt|
<EFBFBD><01>|
7}q<>|td <0B>7}|<06> |<07>|S)z2Return a list of strings representing a GIF headers87ar9s89arxroNrgrcr?sGIFrr r=rerlr>rnr2ri)rBr<>r<>r<>rrr<>rrr<>r<>rL<00>encoder3r4) r]rBr9r?rr<00>header<65> comment_blockrcr5<00>subblockr!r!r"r<><00>sl<02><02><02><02> <02> <02>
<04> <02><02><02><02><02>
<02><02><04>

 
r<><00>paramsc CsTz&||_t|||d<01>t<02>||dd|jdt|jfg<01>|<00>d<04>W|`dS|`w)Nrr<>r<>r<>)r<>r<>rr<>r<>r<>r<>r<>)r,r<>r rRr!r!r"rs<04> r<00>dict[str, Any] | None<6E>$tuple[list[bytes], list[int] | None]cCsd|duri}t||<02>}d|vrd|jvr|jd|d<t|||<02>}|j|_|j|_t||<02>}||fS)a
Legacy Method to get Gif data from image.
Warning:: May modify image data.
:param im: Image object
:param palette: bytes object containing the source palette, or ....
:param info: encoderinfo
:returns: tuple of(list of header items, optimized palette)
Nr?)r<>rBr<>rHr]r<>)r]rHrBr<><00>im_modrOr!r!r"<00> getheader.s
 
rVr<>rcKs>ddlm}Gdd<04>d|<03>}|<00><02>|<04>}t||||<02>|jS)a<>
Legacy Method
Return a list of strings representing this image.
The first string is a local image header, the rest contains
encoded image data.
To specify duration, add the time in milliseconds,
e.g. ``getdata(im_frame, duration=1000)``
:param im: Image object
:param offset: Tuple of (x, y) pixels. Defaults to (0, 0)
:param \**params: e.g. duration or other encoder info parameters
:returns: List of bytes containing GIF encoded frame data
r)<01>BytesIOc@s>eZdZgZejdkrddlmZd dd <09>Zd Sdd d <09>Zd S)zgetdata.<locals>.Collector)r2<00> r)<01>Bufferr0rYr%rRcS<01>|j<00>|<01>t|<01>Sr<><00>r0r<>r4<00>r.r0r!r!r"r<>g<00> z getdata.<locals>.Collector.writercSrZr<>r[r\r!r!r"r<>mr]N)r0rYr%rR)r0rr%rR) rrrr0<00>sys<79> version_info<66>collections.abcrYr<>r!r!r!r"<00> Collectoras 
 ra)<05>iorWr<>rr0)r]r rRrWrar,r!r!r"r<>Ls r<>z.gifz image/gif)r#r$r%r&)r]r<>r%r<>)r]r<>rHr<>rBr<>r%r<>)r]r<>r,r<>rHr<>r%r7)r<>r<>r<>r<>r%r<>)r]r<>r,r<>rHr<>r%r&)r]r<>r,r<>rrr%r7)F)
r]r<>r,r<>rrrr&r%r7)r]r<>r%rR)
r,r<>r]r<>r rrOrRr%r7)r]r<>rBr<>r%r:)rr$r%rR)rr$r%r$)r]r<>r%r$)r]r<>rIrJr%rR)r]r<>rBr<>r%rM)
r,r<>r<>r<>r rrRr<>r%r7)NN)r]r<>rHr<>rBrSr%rT)r<>)r]r<>r rrRrr%rM)G<>
__future__rr<>rEr0r(r^<00>enumr<00> functoolsr<00>typingrrrrr r
r <00>r rrrrrr<00>_binaryrrCrrrrrrr<>r(r)r<>r<>r$r<>rR<00>_Paletter<65>r<>r<>r<>rrr<>r<>r<>r9r;r<>rrr<>r<>r<>rrVr<><00> register_openr<6E><00> register_save<76>register_save_all<6C>register_extension<6F> register_mimer!r!r!r"<00><module>sj   $$   
  


@


x <0C>

22

/


> <0C> <0C>1