Files
intellecton/venv/lib/python3.12/site-packages/PIL/__pycache__/PngImagePlugin.cpython-312.pyc
T

251 lines
62 KiB
Plaintext
Raw Normal View History

Ë
ß¼jÊãóªddlmZddlZddlZddlZddlZddlZddlZddlm Z ddl
m Z ddl m
Z
mZmZddlmZmZmZmZmZddlmZdd lmZdd
lmZdd lmZdd lmZdd
l m!Z!ddl"m#Z#dZ$e$rddl%m&Z&ddl m'Z'm(Z(ddlm)Z)ejTe+«Z,ejZd«j\Z/dZ0dddddddddddd d!d"d#d$œZ1ejZd%«Z2ejfZ4 d&e4zZ5 Gd'„d(e «Z6Gd)„d*e «Z7dWd+„Z8dXdYd,„Z9Gd-„d.«Z:Gd/„d0e;«Z<Gd1„d2«Z=Gd3„d4e«Z>Gd5„d6e:«Z?dZd7„Z@Gd8„d9ej&«ZAd:d;d<d=d>d?d@d@d@dAdBdCdDdEdFdGœZBd[dH„ZCGdI„dJ«ZDGdK„dL«ZEd\dM„ZFGdN„dOe«ZG d]dP„ZHd^dQ„ZIeCdf d_dR„ZJd`dS„ZKej˜eAjšeAe@«eeAjšeJ«eeAjšeI«ej eAjšdTdUg«eeAjšdV«y)aé)Ú annotationsN)ÚIntEnum)ÚFraction)ÚIOÚ
NamedTupleÚcasté)ÚImageÚ
ImageChopsÚ ImageFileÚ ImagePaletteÚ
ImageSequence)Úi16be)Úi32be)Úo8)Úo16be)Úo32be)Ú deprecate)Ú
DeferredErrorF)ÚCallable)ÚAnyÚNoReturn)Ú_imagings\w\w\w\ws‰PNG

)Ú1r)ÚL;2)rúL;4)rr)úI;16úI;16B)ÚRGBr )r zRGB;16B)ÚP;1)r!úP;2)r!úP;4)r!r!)ÚLAr%)ÚRGBAzLA;16B)r&r&)r&zRGBA;16B))r r)ér)ér)ér)ér)r)r')r*r')r é)r'r+)r(r+)r)r+)r)r()r*r()r)é)r*r,s^ÿ*ÿ*$é@cóeZdZdZ dZ dZy)ÚDisposalrr r'N)Ú__name__Ú
__module__Ú __qualname__ÚOP_NONEÚ
OP_BACKGROUNDÚ OP_PREVIOUS©óúU/home/antigravity/intellecton/venv/lib/python3.12/site-packages/PIL/PngImagePlugin.pyr/r/ns$Ø€Gðð€Mðð
€Kðr7r/cóeZdZdZ dZy)ÚBlendrr N)r0r1r2Ú OP_SOURCEÚOP_OVERr6r7r8r:r:ƒsØ€Iðð
€Gðr7r:cóŒtj«}|j|t«}|jr
d}t |«|S)Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)ÚzlibÚ
decompressobjÚ
decompressÚMAX_TEXT_CHUNKÚunconsumed_tailÚ
ValueError)ÚdobjÚ plaintextÚmsgs r8Ú_safe_zlib_decompressrHs>Ü × Ñ Ó €DØ ¤>Ó2€IØ ×ÒØÜ˜‹oÐØ Ðr7có4tj||«dzS)Nlÿÿ)r>Úcrc32)ÚdataÚseeds r8Ú_crc32rMšsÜ :‰:d˜ !  .r7có^eZdZd dZd
dZddZddZddZddZddZ ddZ
dd „Z ddd
Z y )Ú ChunkStreamcó ||_g|_y©N)ÚfpÚqueue)ÚselfrRs r8Ú__init__zChunkStream.__init__£sØ$&ˆŒØ:<ˆ
r7có¬d}|jJ|jr:|jj«\}}}|jj|«nE|jj d«}|dd}|jj «}t
|«}t|«s*tjsdt|«d}t|«|||fS)z.Fetch a new chunk. Returns header information.Nr)r(zbroken PNG file (chunk ú)) rRrSÚpopÚseekÚreadÚtellÚi32Úis_cidr ÚLOAD_TRUNCATED_IMAGESÚreprÚ SyntaxError)rTÚcidÚposÚlengthrDrGs r8rZzChunkStream.read§àˆàw‰wÐ :Š:Ø#Ÿz™zŸ~™~Ó ˆC G‰GL‰L˜Õ à ˜Q“ˆAØAB%ˆ—''—,,“.ˆ˜“VˆcŒ{Ü×/´°S³ ¨{¸<Ü! C˜ÐÐr7có|SrQr6©rTs r8Ú __enter__zChunkStream.__enter__¼s؈ r7có$|j«yrQ)Úclose)rTÚargss r8Ú__exit__zChunkStream.__exit__¿s Ø
r7có dx|_|_yrQ)rSrRres r8rhzChunkStream.closeÂsØ#ˆŒ
T•Wr7có\|jJ|jj|||f«yrQ)rSÚappend©rTrarbrcs r8ÚpushzChunkStream.pushÅs+Øz‰zÐ
×ј3  -r7có|tjd|||«t|d|jd««||«S)z"Call the appropriate chunk handlerzSTREAM %r %s %sÚchunk_Úascii)ÚloggerÚdebugÚgetattrÚdecoderns r8ÚcallzChunkStream.callÉs>ô  ШS°&Ô<Œwt˜v c§j¡j°Ó&9Ð%:Ð<¸SÀ&ÓIr7cóštjr|ddz dzr|j||«y|jJ t |t |««}t |jj
d««}||k7rdt|«d}t|«y#tj$r }dt|«d}t|«|d}~wwxYw) zRead and verify checksumrér Nr(z(broken PNG file (bad header checksum in rWz(broken PNG file (incomplete checksum in ) r r^Úcrc_skiprRrMr\rZr_r`ÚstructÚerror)rTrarKÚcrc1Úcrc2rGÚes r8ÚcrczChunkStream.crcÏô × °A±¸!± ¸a²Ø M‰M˜#˜tÔ àw‰wИ  Ó,ˆDÜt—ww—|| A“Ó'ˆtŠ|ØÀcÃÀ È1ÐMÜ! øô|‰|ò<¼TÀ#»Y¸KÀqÐIˆ˜Ð )ûð *ús¾ABÂC
Â*CÃC
cóV|jJ|jjd«y)z
Read checksumNr()rRrZ)rTrarKs r8rzzChunkStream.crc_skipäs#ðw‰wÐ  Qr7có4g}|jJ |j«\}}}||k(r |S|j |t
j|j|««|j|«Œ_#tj$r}d}t |«|d}~wwxYw)Nztruncated PNG file) rRrZr{r|ÚOSErrorr€r Ú
_safe_readrm)rTÚendchunkÚcidsrarbrcrrGs r8ÚverifyzChunkStream.verifyêðˆàw‰wÐð
*Ø#'§9¡9£;Ñ S˜
Øðˆ ð
H‰HSœ)×.¨t¯w©w¸Ó K‰K˜Ô ðøô—<
*ܘc“l¨Ð)ûð
*úsA1Á1BÂBÂBrRú IO[bytes]ÚreturnÚNone)ztuple[bytes, int, int])rO)riÚobjectrŠr©r)raÚbytesrbÚintrcrr)rarbrrcr)rarKr)óIEND)r…z list[bytes])
r0r1r2rUrZrfrjrhrorwr€rzr‡r6r7r8rOrO¢s5ó ó*óóJó *ó*õ r7rOcóJeZdZUdZded<ded<e d dd«Zy) ÚiTXtzq
Subclass of string to allow iTXt chunks to look like strings while
keeping their extra information
zstr | bytes | NoneÚlangÚtkeyNcóNtj||«}||_||_|S)
:param cls: the class to use when creating the instance
:param text: value for this key
:param lang: language code
:param tkey: UTF-8 version of the key name
)ÚstrÚ__new__r“r”)ÚclsÚtextr“r”rTs r8r—z iTXt.__new__
s'ô{‰{˜3 Ó؈Œ ؈Œ ؈ r7)NN)r™rr“ú
str | Noner”r)r0r1r2Ú__doc__Ú__annotations__Ú staticmethodr—r6r7r8rrsJñð ÓØ
ÓààDHð
Øð
Ø
Ø7Að
à
ò
óñ
r7rcóbeZdZdZddZdd dZ d
d dZ d d dZy)
ÚPngInfoz<
PNG chunk container (for use with save(pnginfo=))
cóg|_yrQ)Úchunksres r8rUzPngInfo.__init__!s Ø79ˆ r7có@|jj|||f«y)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)rm)rTrarKÚ
after_idats r8Úaddz PngInfo.add$sð
×јC  3r7cóÐt|t«s|jdd«}t|t«s|jdd«}t|t«s|jdd«}t|t«s|jdd«}|r8|jd|dz|zdz|zdzt j
|«z«y|jd|dz|zdz|zdz|z«y) 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ósN)Ú
isinstancerŽÚencoder¤r>Úcompress)rTÚkeyÚvaluer“r”Úzips r8Úadd_itxtzPngInfo.add_itxt0ô$˜#œuÔ—*‘*˜Y¨Ó1ˆCܘ%¤Ô—L‘L ¨(Ó3ˆ˜Ô—;‘;˜w¨Ó1ˆ˜$¤Ô—;‘;˜w¨Ó1ˆ Ø H‰HØØ! DÑ(¨5Ñ0°4Ñ7¸?Ä$Ç-Á-ÐPUÓBVÑ
ð
H‰HW˜c I™o°Ñ4°uÑ<¸CÀeÑKÈeÑ Tr7cót|t«rL|j|||j |jnd|j|j|¬«Sd|¬«St|t
«s |j
dd«}t|t
«s|j
dd«}|r,|jd|dztj|«z«y|jd|d z|z«y#t$r|j|||¬«cYSwxYw)
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
Nr7)ózTXtóótEXtrª) rr“r”Ú UnicodeErrorr¤r>r­)rTs r8Úadd_textzPngInfo.add_textSsô eœTÔ —=ØØ#Ÿj™jÐ4
¸#Ÿj™jÐ4
Øð ð
ð;>Øð ð
ô˜Ô
Ÿ  Y°Ó9ô˜#œuÔ—*‘*˜Y¨Ó1ˆCá Ø H‰HW˜c G™m¬d¯m©m¸EÓ.BÑ H‰HW˜c E™k¨EÑ 2øô ò
—}} S¨%°S
:úsÁ.C)Ã)D ÄD Nr©F)rarKÚboolrŠr)ÚF) ú str | bytesr¯r“r”r‹)zstr | bytes | iTXtr°r)r0r1r2rrUr6r7r8sñó

ØØð
!Uà
ð!Uðð!Uðð !Uð
ð !Uð ð
!Uð
ó!UðHHMð!ð!3Ø'9ð!3Ø@Dð!
ô!3r7có,eZdZUded<ded<ded<y)Ú _RewindStatez dict[str | tuple[int, int], Any]Úinfozlist[ImageFile._Tile]Útilez
int | NoneÚseq_numN©r0r1r2r6r7r8{sØ

ÓØ
Ôr7cóÀeZdZdˆfd ZddZddZddZddZddZddZ ddZ
dd „Z dd
Z dd Z
dd Zdd
ZddZddZddZddZddZddZddZddZˆxZS)Ú PngStreamcóÔt||«i|_i|_d|_d|_g|_d|_d|_d|_ d|_
tigd«|_ d|_
y)rrr)ÚsuperrUÚim_infoÚim_textÚim_sizeÚim_modeÚim_tileÚ
im_paletteÚim_custom_mimetypeÚ im_n_framesÚ_seq_numr½Ú rewind_stateÚ text_memory)rTrRÚ __class__s €r8rUzPngStream.__init__slø€Ü
јÔð:<ˆŒ Ø.0ˆŒ ؈Œ ؈Œ Ø.0ˆŒ Ø48ˆŒØ.2ˆÔØ'+ˆÔØ$(ˆŒ
ܨR°ÓÔàˆÕr7cóŠ|xj|z
c_|jtkDrd|jd}t|«y)Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)ÚMAX_TEXT_MEMORYrC)rTÚchunklenrGs r8Úcheck_text_memoryzPngStream.check_text_memory“sNØ ×Ò˜HÑØ × Ñ œoÒ ×$Ð$4ð
ô˜S“/Ð .r7có€t|jj«|j|j«|_yrQ)ÚcopyrËres r8Ú save_rewindzPngStream.save_rewindœs-Ü L‰L× Ñ Ó Ø L‰LØ M‰Mó
ˆÕr7cóÂ|jjj«|_|jj|_|jj |_yrQ)r¿res r8ÚrewindzPngStream.rewind£sDØ×Œ Ø×Œ Ø×
r7cóÒ|jJtj|j|«}|jd«}tj d|d|«||dz}tj d|«|dk7rd|d}t
|« t||dzd«}||jd <|S#t$rtjrd}nYŒ0tj$rd}YŒFwxYw)
NrªziCCP profile name %rr zCompression method %srúUnknown compression method z in iCCP chunkr'Ú icc_profile)
rRr r„Úfindrsrtr`rHrCr^r>r|)rTrbrcrDÚ comp_methodrGs r8Ú
chunk_iCCPzPngStream.chunk_iCCP¨àw‰wÐ × Ñ  §¡¨&Ó ð
F‰F5‹MˆÜ Ð+¨Q¨r°¨UÔ˜˜A™‘hˆ Ü Ð,¨kÔ ˜!Ò Ø ¨}¸NÐKˆ˜  ܰ!°a±%°'°
Ó;ˆ'2ˆ ˆøôò Ü×"‘ àñôz‰zò ØŠKð úsÂB0Â0C&ÃC&Ã%C&cóŒ|jJtj|j|«}|dkrtjr|Sd}t |«t |d«t |d«f|_ t|d|df\|_|_ |drd|jd <|d
r
d }t|«|S#t$rYŒ3wxYw)
zTruncated IHDR chunkrr(r)é é r Ú interlaceé zunknown filter category)
rRr r„r^rCr\Ú_MODESrÊÚ
im_rawmodeÚ ExceptionrÇr`©rTrbrcrDrGs r8Ú
chunk_IHDRzPngStream.chunk_IHDRÄàw‰wÐ × Ñ  §¡¨&Ó Ø BŠ;Üר(ˆCܘS“/Ð ˜1˜a“y¤# a¨£)ÐŒ ð Ü,2°A°a±D¸!¸A¹$°<Ñ,@Ñ )ˆDŒL˜$œ/ð
ˆRŠ5Ø()ˆDL‰L˜Ñ ˆRŠ5Ø+ˆ˜ ˆøôò Ù ð úsÁ1B7Â7 CÃCcóLd|jvr1tjd|jd||j«g}nK|jd|jd<tjdd|j
z||j«g}||_||_d}t|«)bboxr°
default_imagerÅzimage data found) rÇr Ú_TilerêÚim_idatÚEOFError)rTrbrcr¿rGs r8Ú
chunk_IDATzPngStream.chunk_IDATÙsà T—\ —OO E¨4¯<©<¸Ñ+?ÀÀdÇoÁoÓW‰Dà×ÑÐ+Ø04 ˜_Ñ—O‘O E¨6°D·L±LÑ+@À#ÀtÇÁÓXˆD؈Œ ؈Œ Ø ˆÜs‹mÐr7cód}t|«)Nzend of PNG image))rTrbrcrGs r8Ú
chunk_IENDzPngStream.chunk_IENDæsØ ˆÜs‹mÐr7có’|jJtj|j|«}|jdk(r d|f|_|S)Nr!r )rRr r„©rTrbrcrDs r8Ú
chunk_PLTEzPngStream.chunk_PLTEêsDàw‰wÐ × Ñ  §¡¨&Ó 1ˆØ <‰<˜ Ø# Q˜hˆDŒO؈r7có@|jJtj|j|«}|jdk(rMtj |«r'|j
d«}|dk\r ||jd<|S||jd<|S|jdk(rt|«rdnd|jd<|S|jdvrt|«|jd<|S|jdk(r/t|«t|d «t|d
«f|jd<|S) Nr!rÚ transparencyréÿ)rrr r'r() rRr r„Ú_simple_paletteÚmatchrßÚi16)rTrbrcrDs r8Ú
chunk_tRNSzPngStream.chunk_tRNSòsàw‰wÐ × Ñ  §¡¨&Ó 1ˆØ <‰<˜ Ü×$ —FF˜5“Mؘ’6Ø34D—L‘L Ñˆð01 ˜^шð
\‰\˜
Ü25°a´&©3¸aˆDL‰L˜Ñ
ˆð \‰\˜
*Ü+.¨q«6ˆDL‰L˜Ñ ˆð\‰\˜UÒ
"Ü+.¨q«6´3°q¸!³9¼cÀ!ÀQ»iÐ+GˆDL‰L˜Ñ ˆr7có˜|jJtj|j|«}t|«dz |jd<|S)jø@Úgamma)rRr r„r\s r8Ú
chunk_gAMAzPngStream.chunk_gAMA sDàw‰wÐ × Ñ  §¡¨&Ó Ü # A£¨Ñ 1ˆ ؈r7cóì|jJtj|j|«}tjdt |«dzd|«}t
d|D««|jd<|S)>r(ÚIc3ó&K|] }|dz Œ y­w)rNr6)Ú.0Úelts r8ú <genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>sèø€Ò,PÀ¨S°8­^Ñ,PùsÚ chromaticity)rRr r„r{ÚunpackÚlenÚtuplerÇ)rTrbrcrDÚraw_valss r8Ú
chunk_cHRMzPngStream.chunk_cHRMsiðw‰wÐ × Ñ  §¡¨&Ó Ü—=‘= 1¤S¨£V¨q¡[ Ð!3°QÓ7ˆÜ',Ñ,PÀxÔ,PÓ'Pˆ ˆr7cóÎ|jJtj|j|«}|dkrtjr|Sd}t |«|d|j
d<|S)Nr zTruncated sRGB chunkrÚsrgb)rRr r„r^rCs r8Ú
chunk_sRGBzPngStream.chunk_sRGBseðw‰wÐ × Ñ  §¡¨&Ó Ø AŠ:Üר(ˆCܘS“/Ð   ™tˆ ؈r7cóP|jJtj|j|«}|dkrtjr|Sd}t |«t |d«t |d«}}|d}|dk(r|dz|dzf}||j d<|S|dk(r||f|j d <|S)
NråzTruncated pHYs chunkrr(r)r ç¦
F%uš?ÚdpiÚaspect)rRr r„r^rCr\) rTrbrcrDrGÚpxÚpyÚunitrs r8Ú
chunk_pHYszPngStream.chunk_pHYs+s¸àw‰wÐ × Ñ  §¡¨&Ó Ø AŠ:Üר(ˆCܘS“/Ð œC  1›IˆBˆØ‰tˆØ 1Š9Øv+˜r F™{Ð*ˆCØ"%ˆDL‰L˜Ñ ðˆðQŠYØ%'¨ VˆDL‰L˜Ñ ˆr7có~|jJtj|j|«} |jdd«\}}|rc|j dd«}|j dd«}|dk(r|n||j |<||j|<|jt|««|S#t$r|}d}YŒvwxYw)Nrªr r7Úreplacesexif)
rRr r„ÚsplitrCrvr)rTrbrcrDÚk_strÚv_strs r8Ú
chunk_tEXtzPngStream.chunk_tEXt=àw‰wÐ × Ñ  §¡¨&Ó ð Ø—77˜5 !Ó$‰DˆAˆ
Ø—H‘H˜Y¨Ó1ˆEØ—HH˜Y¨ Ó2ˆEà'(¨G¢|¡!¸ˆDL‰L˜Ñ Ø"'ˆDL‰L˜Ñ Ø × "¤3 u£:Ô ˆøôò àˆAØŠAð ús°B,Â,
B<Â;B<có@|jJtj|j|«} |jdd«\}}|r|d}nd}|dk7rd|d}t |« t
|dd«}|r\|jdd«}|jdd «} | x|j|<|j|<|jt| ««|S#t$r|}d}YŒžwxYw#t$rtjrd}nYŒ’tj$rd}YŒ¨wxYw)
Nrªr r7rz in zTXt chunkr¦r)rRr r„rrCr`rHr^r>r|rvr)
rTrbrcrDr r!rGr"r#s
r8Ú
chunk_zTXtzPngStream.chunk_zTXtQs6àw‰wÐ × Ñ  §¡¨&Ó ð Ø—77˜5 !Ó$‰DˆAˆ
ؘA™$‰KàˆKØ ˜!Ò Ø ¨}¸NÐKˆ˜  Ü% ¨ ,ˆ
Ø—H‘H˜Y¨Ó1ˆEØ—H‘H˜Y¨ Ó2ˆEà8=Ð =ˆDL‰L˜Ñ  $§,¡,¨uÑ"5Ø × "¤3 u£:Ô ˆøô7ò ؈AØŠAð ûôò Ü×àñôz‰zò ØŠAð ús)°CÁ&C'Ã
C$Ã#C$Ã'DÄDÄDcóF|jJtj|j|«x}} |jdd«\}}t |«dkr|S|d|d|dd}}} |jdd«\}} }
|dk7r|dk(r
t
|
«}
n|S|dk(r|
|jd< |jdd«} |jd d«} | jd d«}
|
jd d«}t|| |
«x|j| <|j| <|jt |««|S#t$r|cYSwxYw#t$r|cYSwxYw#t$rtjr|cYStj$r|cYSwxYw#t$r|cYSwxYw)
Nrªr r'rsXML:com.adobe.xmpÚxmpr¦)rRr r„rrCrrHr^r>r|rvr)rTrbrcÚrrDr ÚcfÚcmr“Útkr!r"Úlang_strÚtk_strr#s r8Ú
chunk_iTXtzPngStream.chunk_iTXttàw‰wÐ×$ T§W¡W¨fÓˆAð Ø—7‘7˜5 !Ó$‰DˆAˆqô ˆq‹6AŠ:؈HØaD˜!˜A™$  ! " ˆBˆð ØŸ'™' Ó+‰KˆD" Š7ØQŠwðÜ-¨aÓ0‘AðØ Ð $Ø"#ˆDL‰L˜Ñ ð Ø—H‘H˜Y¨Ó1ˆEØ—{‘{ 7¨HÓ5ˆHØ—Y‘Y˜w¨Ó1ˆFØ—H‘H˜W hÓ/ˆ59¸ÀÈ&Ó4QÐQˆ ˜dŸl™l¨5Ñ ×Ñœs 5›zÔˆøôGò ØŠHð ûôò ØŠHð ûô Ü × šàÜ—z‘zòØ’Hðûôò ØŠHð úsN²D8Á'E  EÂ+AFÄ8 EÅEÅ EÅEÅFÅ7FÆFÆ F ÆF có†|jJtj|j|«}d|z|jd<|S)ExifÚexif)rRr r„s r8Ú
chunk_eXIfzPngStream.chunk_eXIfŸs@Øw‰wÐ × Ñ  §¡¨&Ó ØÑ ؈r7có¤|jJtj|j|«}|dkrtjr|Sd}t |«|j
d|_t
jd«|St|«}|dk(s|dkDrt
jd«|S||_t|d«|jd<d|_
|S) Nr)z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possiblerlr(Úloopz
image/apng) rRr r„r^rCÚwarningsÚwarnr\)rTrbrcrDrGÚn_framess r8Ú
chunk_acTLzPngStream.chunk_acTL¦Øw‰wÐ × Ñ  §¡¨&Ó Ø AŠ:Üר6ˆCܘS“/Ð × Ñ Ð #ˆDÔ Ü M‰MÐ ˆHÜq“6ˆØ qŠ=˜H zÒ M‰MÐ ˆ#ˆÔÜ" 1 ayˆ Ø".ˆÔ؈r7có|jJtj|j|«}|dkrtjr|Sd}t |«t |«}|j |dk7s|j |j |dz
k7r
d}t|«||_t |d«t |d«}}t |d«t |d «} }|j\}
} ||z|
kDs| |z| kDr
d
}t|«|| ||z| |zf|jd <t|d «t|d
«}
} |
dk(rd}
t| «t|
«z dz|jd<|d|jd<|d|jd<|S)z"APNG contains truncated fcTL chunkrr ú#APNG contains frame sequence errorsr(r)r*zAPNG contains invalid framesrïééédéèÚdurationéÚdisposaléÚblend) rRr r„r^rCr\r`rÿÚfloat)rTrbrcrDrGÚseqÚwidthÚheightrrÚim_wÚim_hÚ delay_numÚ delay_dens r8Ú
chunk_fcTLzPngStream.chunk_fcTL»s~Øw‰wÐ × Ñ  §¡¨&Ó Ø BŠ;Üר6ˆCܘS“/Ð !‹fˆØ M‰MÐ ! c¨Q¢hØ M‰MÐ %¨$¯-©-¸3À¹7Ò*Bà7ˆ˜ ˆŒ
ܘA˜q› ¤3 q¨!£9ˆvˆÜœS  B›ZˆBˆØ—\‘\‰
ˆˆ
‰:˜Ò   V¡ ¨dÒ 2Ø0ˆ˜ "Ø " ¨U©
°B¸±KÐ@ˆ Ü" 1 bz¬3¨q°"«:9ˆ Ø ˜Š>؈IÜ#(¨Ó#3´e¸IÓ6FÑ#FÈÑ#Mˆ  Ø#$ R¡5ˆ  Ø ! ˆ ؈r7cóx|jJ|dkr?tjr"tj|j|«}|Sd}t |«tj|jd«}t |«}|j |dz
k7r
d}t|«||_|j|dz|dz
«S)Nr(z"APNG contains truncated fDAT chunkr r<) rRr r^r„rCr\r`)rTrbrcrDrGrGs r8Ú
chunk_fdATzPngStream.chunk_fdATÙØw‰wÐ AŠ:Ü×ׯ©°&Ó9ØØ6ˆCܘS“/Ð × Ñ  §¡¨!Ó Ü!‹fˆØ =‰=˜C !™GÒ 7ˆ˜ ˆŒ
ؘs Q™w¨°©
Ó3r7rˆ)rrr)rbrrcr)rbrrcrr)r0r1r2rUrrrrrr$r&r/r3r9rNrPÚ
__classcell__©s@r8snø„õó"
ó
ó8ó* óóóó.óóó"ó$ó(!óF)óVóó*÷<4r7có,|jt«SrQ)Ú
startswithÚ_MAGIC)Úprefixs r8Ú_acceptrWîsØ × Ñ œVÓ $r7cóˆeZdZdZdZddZedd«Zdˆfd ZddZ dddZ
ddZ dd „Z dd
Z
dd Zdd Zdˆfd
ZˆxZS)Ú PngImageFileÚPNGzPortable network graphicscób|jJt|jjd««s
d}t|«|j|_d|_g|_t|j«|_ |jj«\}}} |jj|||«}|jj%||«ŒY#t$rYnvt$rktjd|||«tj|j|«}|ddj!«r|j j#||f«YŒšwxYw|jj&|_|jj*|_|jj.|_d|_|jj4|_|jj8|_|jj<xsd|_|j0jAdd«|_!|jjDr4|jjD\}}tGjH||«|_%|d k(r |d
z
|_&n||_&|jj<ƒd|_'|jjQ«|jL|_)|jjU«|_+|jBr|xj>dz
c_|jYd«|j>dkD|_-y) Nr)znot a PNG filerú%r %s %s (unknown)r r'fdATr().rRrWrZr`Ú_fpÚ_PngImageFile__frameÚprivate_chunksrÃÚpngrwÚAttributeErrorrsrtr r„Úislowerrmr€Ú_moderÉÚ_sizerÇÚ_textrËr¿Úcustom_mimetyperÎr8Úgetrðr
ÚrawÚpaletteÚ_PngImageFile__prepare_idatÚ!_close_exclusive_fp_after_loadingrÙÚ_PngImageFile__rewind_idatr[Ú_PngImageFile__rewindÚ_seekÚ is_animated)rTrGrarbrcrDÚrawmoderKs r8Ú_openzPngImageFile._openúsxØw‰wÐt—ww—|| A“Ô"ˆ˜ —77ˆŒØˆŒ ð
VXˆÔÜ%.¨t¯w©wÓ%7ˆŒàð $Ÿx™xŸ}™}›Ñ ˆC
—HH—MM # s¨FÓ3ð
H‰HL‰L˜˜aÔ ð!øôò
ÙÜ
 Ð1°3¸¸VÔׯ©°&Ó9Øq˜8××'×°Q¨xÔ8ùð 
9úð—X‘X׌
Ø—XX×%ˆŒ
Ø—H‘H׌ Ø37ˆŒ
Ø—H‘H׌ Ø#Ÿx™x×ÔØŸ×ˆŒ
Ø!ŸY™YŸ]™]¨?¸EÓÔà 8‰8× Ò Ø ŸH™H×/‰MˆG'×+¨G°TÓ:ˆDŒLà 'Š>Ø"(¨1¡*ˆ à"(ˆ à 8‰8× Ñ Ð +Ø5:ˆDÔ H‰H× Ñ Ô "Ø!%×!4Ñ!4ˆ Ø ŸH™HŸM™M›OˆDŒMØ×
 Ñ"•
Ø J‰JqŒMØŸ=™=¨1Ñ,ˆÕsÂCÃ EÃA0EÅEcó|j€c|jr*|j}|j|jdz
«|j «|jr|j«|jJ|jS)Nr )rfrpr_rYr8Úload)rTÚframes r8r™zPngImageFile.text>soð :‰:Ð ð×ÒØŸ à— ‘ ˜$Ÿ-™-¨!Ñ I‰IŒKØ×ÒØ— ‘ ˜%Ô Øz‰zÐz‰zÐr7có4|j
d}t|«|jj|jdddz
«|jJ|jj «|jj