+
    JV-j¯t  ã            
      ó,  € ^ 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	H
t
HtHt ^RIHtHt ^RIHtHt Rt]'       d   ^RIHt ]P,                  ! ]4      tRt R+tRt R,R	R-R
R.RR/RR0R/t R R ltR R lt ! R R]4      t ! R R]P                  4      t  ! R R]PB                  4      t" ! R R] ]PF                  R7      t$ ! R R4      t%R1R R llt&R2R R  llt'R! R" lt( ! R# R$4      t) ! R% R&4      t* ! R' R(]*4      t+ ! R) R*]*4      t,R# )3é    )ÚannotationsN)ÚIOÚAnyÚ
NamedTupleÚcast)ÚExifTagsÚImage)ÚDeferredErrorÚis_pathF)ÚStrOrBytesPathi   zimage buffer overrun errorzdecoding errorzunknown errorzbad configurationzout of memory errorc               ó$   € V ^8„  d   QhRRRRRR/# )é   ÚerrorÚintÚencoderÚboolÚreturnÚOSError© )Úformats   "Ú^/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/PIL/ImageFile.pyÚ__annotate__r   V   s!   € ÷ ñ ˜ð ¨ð °'ñ ó    c               ó  €  \         P                  P                  V 4      pV'       g   V'       d   R MR RV  2pTRV'       d   RMR R2,          p\        V4      #   \         d    \        P                  T 4      p L]i ; i)r   Údecoderz error z when ÚwritingÚreadingz image file)r	   ÚcoreÚgetcodecstatusÚAttributeErrorÚERRORSÚgetr   )r   r   Úmsgs   &$ r   Ú_get_oserrorr$   V   sv   € ð Ü�j‰j×'Ñ'¨Ó.ˆ÷ ß%‘¨9Ð5°W¸U¸GÐDˆØˆV§‘I¨iÐ8¸ÐDÕD€CÜ�3‹<Ðøô ô  Ü�j‰j˜ÓŠð ús   ‚A Á A?Á>A?c               ó    € V ^8„  d   QhRRRR/# )r   ÚtÚ_Tiler   r   r   )r   s   "r   r   r   a   s   € ÷ ñ �ð ˜3ñ r   c                ó   € V ^,          # )r   r   )r&   s   &r   Ú	_tilesortr)   a   s   € àˆQ�4€Kr   c                  óH   € ] tR t^ft$ R]R&   R]R&   ^ tR]R&   RtR]R	&   R
tR# )r'   ÚstrÚ
codec_nameú tuple[int, int, int, int] | NoneÚextentsr   ÚoffsetNztuple[Any, ...] | str | NoneÚargsr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r/   r0   Ú__static_attributes__r   r   r   r'   r'   f   s!   ‡ ØƒOØ-Ó-Ø€FˆCƒOØ)-€DÐ
&×-r   r'   c                  óð   a € ] tR t^rtRtR!R V 3R ll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 R ltR R ltR V 3R ll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 tV ;t# )"Ú	ImageFilez*Base class for image file format handlers.c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚfpzStrOrBytesPath | IO[bytes]Úfilenamezstr | bytes | Noner   ÚNoner   )r   s   "r   r   ÚImageFile.__annotate__u   s$   € ÷ 6ñ 6Ø,ð6Ø8Jð6à	ñ6r   c                	ó°  <€ \         SV `  4        ^ V n        RV n        . V n         ^V n        RV n        \        V n        V  V  \        V4      '       d5   \        VR4      V n        \        P                  ! V4      V n        RV n        M4\!        \"        \$        ,          V4      V n        Ve   TMRV n        RV n          V P'                  4        \)        V \*        4      '       d*   V P-                  4       ;p'       d   VP                  V 4       T P<                  '       d1   T P>                  ^ ,          ^ 8:  g   T P>                  ^,          ^ 8:  d   Rp\;        T4      hR#   \.        \0        \2        \4        \6        P8                  3 d   p\;        T4      ThRp?ii ; i  \@         d/    T P                  '       d   T P                  PC                  4        h i ; i)r   NÚrbTÚ Fznot identified by this driverr   )"ÚsuperÚ__init__Ú
_min_frameÚcustom_mimetypeÚtileÚreadonlyÚdecoderconfigÚMAXBLOCKÚdecodermaxblockr   Úopenr:   ÚosÚfspathr;   Ú_exclusive_fpr   r   ÚbytesÚ_openÚ
isinstanceÚStubImageFileÚ_loadÚ
IndexErrorÚ	TypeErrorÚKeyErrorÚEOFErrorÚstructr   ÚSyntaxErrorÚmodeÚsizeÚBaseExceptionÚclose)Úselfr:   r;   ÚloaderÚvr#   Ú	__class__s   &&&   €r   rB   ÚImageFile.__init__u   sz  ø€ ô 	‰ÑÔàˆŒà+/ˆÔà!#ˆŒ	Ø*àˆŒà.0ˆÔÜ'ˆÔáÙÜ�2�;Š;ä˜2˜t“nˆDŒGÜŸIšI b›MˆDŒMØ!%ˆDÕô œ2œe�9 bÓ)ˆDŒGØ(0Ò(<™HÀ"ˆDŒMà!&ˆDÔð	ð,Ø—
‘
”ä˜d¤M×2Ò2Ø!%§¡£Ð-�vÖ-ØŸ™ DÔ)ð —9—9�9 §	¡	¨!¥°Ô 1°T·Y±Y¸qµ\ÀQÔ5FØ5�Ü! #Ó&Ð&ñ 6Gøô ÜÜÜÜ—‘ðô ,ô " !“n¨!Ð+ûð,ûô ô 	à×!×!Ð!Ø—‘—‘”Øð		ús<   Â>=E Ã<E ÄF Ä=F Å*FÆFÆFÆF ÆGÆ9Gc               ó   € V ^8„  d   QhRR/# ©r   r   r<   r   )r   s   "r   r   r=   ­   ó   € ÷ ñ �tñ r   c                	ó   € R # ©Nr   ©r]   s   &r   rO   ÚImageFile._open­   ó   € Ùr   c               ó   € V ^8„  d   QhRR/# )r   r   r8   r   )r   s   "r   r   r=   ±   s   € ÷ ñ ˜9ñ r   c                	ó   € V # rf   r   rg   s   &r   Ú	__enter__ÚImageFile.__enter__±   ó   € Øˆr   c               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   r=   ´   s   € ÷ ñ ˜4ñ r   c                	ód  € \        V R R4      '       do   \        V P                  \        4      '       gO   V P                  V P                  8w  d   V P                  P                  4        \        \        R4      4      V n        V P                  '       d   V P                  P                  4        R# R# )Ú_fpFzOperation on closed imageN)ÚgetattrrP   rq   r
   r:   r\   Ú
ValueErrorrg   s   &r   Ú	_close_fpÚImageFile._close_fp´   sl   € Ü�4˜ ×&Ò&¬z¸$¿(¹(ÄM×/RÒ/RØ�x‰x˜4Ÿ7™7Ô"Ø—‘—‘Ô Ü$¤ZÐ0KÓ%LÓMˆDŒHØ�7�7ˆ7Ø�G‰G�M‰MŽOñ r   c               ó    € V ^8„  d   QhRRRR/# ©r   r0   Úobjectr   r<   r   )r   s   "r   r   r=   ¼   s   € ÷ ñ ˜fð ¨ñ r   c                	óZ   € \        V R R4      '       d   V P                  4        RV n        R# )rM   FN)rr   rt   r:   ©r]   r0   s   &*r   Ú__exit__ÚImageFile.__exit__¼   s"   € Ü�4˜¨%×0Ò0Ø�N‰NÔØˆŽr   c               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   r=   Á   s   € ÷ ñ �tñ r   c                ó°   <€  V P                  4        RV n        \
        SV `  4        R#   \         d!   p\        P	                  RT4        Rp?L6Rp?ii ; i)ae  
Closes the file pointer, if possible.

This operation will destroy the image core and release its memory.
The image data will be unusable afterward.

This function is required to close images that have multiple frames or
have not had their file read and closed by the
:py:meth:`~PIL.Image.Image.load` method. See :ref:`file-handling` for
more information.
NzError closing: %s)rt   r:   Ú	ExceptionÚloggerÚdebugrA   r\   )r]   r#   r`   s   & €r   r\   ÚImageFile.closeÁ   sH   ø€ ð	3Ø�N‰NÔØˆDŒGô 	‰‰Žøô ô 	3Ü�L‰LÐ,¨c×2Ñ2ûð	3ús   ƒ* ªAµAÁAc               ó   € V ^8„  d   QhRR/# )r   r   zlist[ImageFile]r   )r   s   "r   r   r=   Õ   s   € ÷ 3ñ 3 /ñ 3r   c                	ó:  € . pV P                  4       p. p\        P                  P                  V9   de   V\        P                  P                  ,          pV'       d<   \	        V\
        4      '       g   V3pV Uu. uF  pVP                  V4      V3NK  	  ppVP                  \        P                  P                  4      pV'       df   VP                  \        P                  P                  4      '       d7   VP                  f   Q hVP                  WbP                  P                  34       R pV EF›  w  r‰V P                  f   Q hV P                  P!                  4       p
Vf   T
pV P                  pVeÏ   VP                  \        P                  P                  4      pVe¢   V\#        V R^ 4      ,          pV P                  P%                  V4       VP                  \        P                  P&                  4      p\	        V\(        4      '       g   Q hV P                  P+                  V4      p\,        P.                  ! V4      p\0        P2                  ! V4      ;_uu_ 4       p^RIHp Xf6   \	        VVP8                  4      '       d   V	.Vn        VP=                  ^ 4       VP?                  4        VP                  V4       R R R 4       EKž  	  Ve,   V P                  f   Q hV P                  P%                  V4       V# u upi   + '       g   i     EKè  ; i)NÚ_exif_offset)ÚTiffImagePlugin) Úgetexifr   ÚBaseÚSubIFDsrP   ÚtupleÚ_get_ifd_dictÚget_ifdÚIFDÚIFD1r"   ÚJpegIFOffsetÚ_infoÚappendÚnextr:   Útellrr   ÚseekÚJpegIFByteCountr   ÚreadÚioÚBytesIOr	   rJ   r@   r†   ÚTiffImageFileÚ
_frame_posÚ_seekÚload)r]   Úchild_imagesÚexifÚifdsÚsubifd_offsetsÚsubifd_offsetÚifd1r/   ÚifdÚ
ifd_offsetÚcurrent_offsetr:   Úthumbnail_offsetÚlengthÚdataÚimr†   s   &                r   Úget_child_imagesÚImageFile.get_child_imagesÕ   s[  € ØˆØ�|‰|‹~ˆØˆÜ�=‰=× Ñ  DÔ(Ø!¤(§-¡-×"7Ñ"7Õ8ˆNßÜ! .´%×8Ò8Ø&4Ð%6�Nñ *8óá)7˜ð ×'Ñ'¨Ó6¸ÓFÙ)7ð ð ð �|‰|œHŸL™L×-Ñ-Ó.ˆß�D—H‘HœXŸ]™]×7Ñ7×8Ò8Ø—:‘:Ò)Ð)Ð)Ø�K‰K˜Ÿz™zŸ™Ð/Ô0àˆÜ#‰OˆCØ—7‘7Ò&Ð&Ð&Ø!ŸW™WŸ\™\›^ˆNØŠ~Ø'�à—‘ˆBØŠØ#&§7¡7¬8¯=©=×+EÑ+EÓ#FÐ Ø#Ò/Ø$¬°°nÀaÓ(HÕHÐ$Ø—G‘G—L‘LÐ!1Ô2à ŸW™W¤X§]¡]×%BÑ%BÓC�FÜ% f¬c×2Ò2Ð2Ð2ØŸ7™7Ÿ<™<¨Ó/�DÜŸš DÓ)�Bä—’˜B—” 2Ý-à#Ò+´
Ø˜×5Ñ5÷1ò 1ð &0 L�B”MØ—H‘H˜Q”KØ—‘”	Ø×#Ñ# BÔ'÷  ’ñ%  $ð: ÒØ—7‘7Ò&Ð&Ð&Ø�G‰G�L‰L˜Ô ØÐùòU÷8  —‘ús   Á:LÉ$A!LÌLc               ó   € V ^8„  d   QhRR/# )r   r   ú
str | Noner   )r   s   "r   r   r=   
  s   € ÷ ñ  Zñ r   c                	óÌ   € V P                   '       d   V P                   # V P                  e8   \        P                  P	                  V P                  P                  4       4      # R # rf   )rD   r   r	   ÚMIMEr"   Úupperrg   s   &r   Úget_format_mimetypeÚImageFile.get_format_mimetype
  sG   € Ø××ÐØ×'Ñ'Ð'Ø�;‰;Ò"Ü—:‘:—>‘> $§+¡+×"3Ñ"3Ó"5Ó6Ð6Ùr   c               ó   € V ^8„  d   QhRR/# )r   r   ú	list[Any]r   )r   s   "r   r   r=     s   € ÷ 8ñ 8˜iñ 8r   c                	óD   <€ \         SV `  4       V P                  .,           # rf   )rA   Ú__getstate__r;   )r]   r`   s   &€r   r¶   ÚImageFile.__getstate__  s   ø€ Ü‰wÑ#Ó%¨¯©¨Õ7Ð7r   c               ó    € V ^8„  d   QhRRRR/# )r   Ústater´   r   r<   r   )r   s   "r   r   r=     s   € ÷ $ñ $ )ð $°ñ $r   c                	óp   <€ . V n         \        V4      ^8”  d   V^,          V n        \        SV `  V4       R# )é   N)rE   Úlenr;   rA   Ú__setstate__)r]   r¹   r`   s   &&€r   r½   ÚImageFile.__setstate__  s-   ø€ ØˆŒ	Üˆu‹:˜Œ>Ø! !�HˆDŒMÜ‰Ñ˜UÖ#r   c               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   r=     s   € ÷ ñ ˜ñ r   c                ó�   € V P                   '       d-   V P                  '       d   V P                  P                  4        RV n        R# )zCheck file integrityN)rM   r:   r\   rg   s   &r   ÚverifyÚImageFile.verify  s,   € ð
 ××Ð $§'§' 'Ø�G‰G�M‰MŒOØˆŽr   c               ó   € V ^8„  d   QhRR/# ©r   r   zImage.core.PixelAccess | Noner   )r   s   "r   r   r=   #  s   € ÷ N&ñ N&Ð3ñ N&r   c                ó   € V P                   '       g   V P                  f   Rp\        V4      h\        P                  P	                  V 4      pV P                   '       g   V# RV n        V P                  ;'       d    \        V P                   4      ^8H  pV P                  f   Q h^ p\        V R4      '       d   V P                  pRpMV P                  P                  p\        V R4      '       d   V P                  pRpMV P                  P                  pV'       Ed¹   V P                   ^ ,          w  rxrš\        V
\        4      '       d   V
^ ^3p
VR8X  Ed€   \        V
\         4      '       Edi   \        V
4      ^8¼  EdX   V
^ ,          V P"                  8X  Ed?   V
^ ,          \        P$                  9   Ed"   V	^ 8  d   Rp\'        V4      h ^ RIp\+        V P                  4      ;_uu_ 4       pVP)                  VP-                  4       ^ VP.                  R7      V n        RRR4       W�P0                  ^,          V
^,          ,          ,           V P
                  P1                  4       8”  d   R	p\        V4      h\        P2                  P5                  V P
                  V P0                  WyV
4      V n        ^pV P8                  '       d   ^V P8                  n        V PA                  4        RpV P
                  '       Eg   V P                   PC                  \D        R
7       \G        V RR4      p\H        PJ                  ! V P                   R 4       UUu. uF  w  pp\M        V4      R,          NK  	  uppV n         \O        V P                   4       EFy  w  pw  rxršV! V	4       \        PP                  ! V P"                  WzV PR                  4      p VPU                  V P6                  V4       VPV                  '       d5   VPY                  V P                  4       VP[                  R4      ^,          pMÈTp V P\                  pV^,           \        V P                   4      8  d5   V P                   V^,           ,          P^                  pVV	8”  d
   VV	,
          p V! V4      pT'       g(   \f        '       d   MFR\        T4       R2p\        T4      hTT,           pTP[                  T4      w  ppT^ 8  d   MTTR pKÆ  VPi                  4        EK|  	  . V n         W@n5        V Pm                  4        V Pn                  '       d-   V Pp                  '       d   V P                  Ps                  4        RV n        V P
                  '       g!   \f        '       g   V^ 8  d   \u        VRR7      h\        P                  P	                  V 4      #   + '       g   i     EL¦; i  \<        \        \>        3 d    RT n         ELi ; iu uppi   \`        \b        Pd                  3 d'   p\f        '       d    Rp?EK4  Rp\        T4      ThRp?ii ; i  TPi                  4        i ; i)z"Load image data based on tile listNzcannot load this imageÚ	load_readFÚ	load_seekÚrawzTile offset cannot be negative)Úaccesszbuffer is not large enough©ÚkeyÚtile_prefixr   c                ó6   € V ^ ,          V ^,          V ^,          3# ©r   r   )rE   s   &r   Ú<lambda>Ú ImageFile.load.<locals>.<lambda>r  s   € ¨T°!­W°d¸1µg¸tÀA½wÑ,Gr   zimage file is truncatedzimage file is truncated (z bytes not processed)©r   éýÿÿÿéÿÿÿÿ);rE   Ú_imr   r	   rœ   Úmapr;   r¼   r:   ÚhasattrrÆ   r–   rÇ   r”   rP   r+   rŠ   rY   Ú	_MAPMODESrs   ÚmmaprJ   ÚfilenoÚACCESS_READrZ   r   Ú
map_bufferr©   ÚpaletteÚdirtyr    ÚImportErrorÚload_prepareÚsortr)   rr   Ú	itertoolsÚgroupbyÚlistÚ	enumerateÚ_getdecoderrG   ÚsetimageÚpulls_fdÚsetfdÚdecoderI   r/   rS   rW   r   ÚLOAD_TRUNCATED_IMAGESÚcleanuprF   Úload_endrM   Ú!_close_exclusive_fp_after_loadingr\   r$   )r]   r#   ÚpixelÚuse_mmaprF   r–   r”   Údecoder_namer.   r/   r0   rØ   r:   Úerr_codeÚprefixÚ_ÚtilesÚir   ÚbÚ
read_bytesÚnext_offsetÚsÚeÚns   &                        r   rœ   ÚImageFile.load#  sç  € ð �y�yˆy˜TŸX™XÒ-Ø*ˆCÜ˜#“,Ðä—‘× Ñ  Ó&ˆØ�y�yˆyØˆLà%)ˆŒØ—=‘=×8Ð8¤S¨¯©£^°qÑ%8ˆà�w‰wÒ"Ð"Ð"Øˆô �4˜×%Ò%Ø—>‘>ˆDà‰Hà—7‘7—<‘<ˆDä�4˜×%Ò%Ø—>‘>ˆDØ‰Hà—7‘7—<‘<ˆDçˆ8à26·)±)¸Aµ,Ñ/ˆL 6Ü˜$¤×$Ò$Ø˜a �|�à Õ%Ü˜t¤U×+Ó+Ü˜“I •NØ˜•G˜tŸy™yÕ(Ø˜•GœuŸ™Õ.à˜A”:Ø:�CÜ$ S›/Ð)ð$ãä˜dŸm™m×,Ô,°Ø#'§9¡9¨R¯Y©Y«[¸!ÀD×DTÑDT 9Ó#U˜œ÷ -à§	¡	¨!¥¨t°A­wÕ 6Õ6¸¿¹¿¹»ÔHØ:˜Ü% c›lÐ*Ü#Ÿj™j×3Ñ3ØŸ™ $§)¡)¨\À4ó�D”Gð  !�Hð —|—|�|Ø-.˜Ÿ™Ô*ð 	×ÑÔØˆØ�x�x‰xà�I‰I�N‰NœyˆNÔ)ô ˜T =°#Ó6ˆFô
 !*× 1Ò 1Ø—I‘IÑGô!ôñ!‘H�A�uô �U“˜B—�ñ!òˆDŒIô =FÀdÇiÁi×<PÑ8�Ñ8�L¨6Ù�V”Ü×+Ò+Ø—I‘I˜|°4×3EÑ3Eó�ð(&Ø×$Ñ$ T§W¡W¨gÔ6Ø×'×'Ð'ØŸ™ d§g¡gÔ.Ø#*§>¡>°#Ó#6°qÕ#9™à"˜Ø"Ø)-×)=Ñ)=˜JØ  1�u¤s¨4¯9©9£~Ô5Ø.2¯i©i¸¸A½Õ.>×.EÑ.E Ø#.°Ô#7Ø1<¸vÕ1E Jð>Ù$(¨Ó$4 ÷ $%ß#8Ó#8Ø$)ð),Ü,/°«F¨8Ð3Hð)Jð %(ô +2°#«,Ð$6à ! A¥˜AØ*1¯.©.¸Ó*;™K˜A˜xØ  1œuØ %Ø ! ! " šAð —O‘O×%ñ[ =Qð^ ˆŒ	Ø Œà�‰Œà××Ð $×"H×"HÐ"HØ�G‰G�M‰MŒOØˆŒà�x�xˆx× 5Ó 5¸(ÀQ¼,ä˜x°Ô7Ð7ä�{‰{×Ñ Ó%Ð%÷y -×,Ð,ûô '¬´Ð=ô $Ø#�D—Hð$üóøô4 %/´·±Ð#=ô >ç#8Ó#8Þ$)à*C CÜ*1°#«,¸AÐ$=ûð>ûð2 —O‘OÕ%ús{   Ç	!W Ç*2V9ÈB9W ÍW1ÏCX;ÒW7ÒX;ÒX;Ò*AX;Ö9W
	×	W ×W.×-W.×7X8ØX3ØX;Ø%X3Ø3X8Ø8X;Ø;Yc               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   r=   ³  s   € ÷ #ñ #˜dñ #r   c                	óø   € V P                   f:   \        P                  P                  V P                  V P
                  4      V n        V P                  R8X  d"   \        P                  P                  V 4       R # R # )NÚP)rÔ   r	   r   ÚnewrY   rZ   r©   rœ   rg   s   &r   rß   ÚImageFile.load_prepare³  sM   € à�8‰8ÒÜ—j‘j—n‘n T§Y¡Y°·	±	Ó:ˆDŒGà�9‰9˜ÔÜ�K‰K×Ñ˜TÖ"ñ r   c               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   r=   »  s   € ÷ ñ ˜$ñ r   c                	ó   € R # rf   r   rg   s   &r   rì   ÚImageFile.load_end»  ó   € ár   c               ó    € V ^8„  d   QhRRRR/# )r   Úframer   r   r   r   )r   s   "r   r   r=   Ç  s   € ÷ $ñ $ ð $¨ñ $r   c                	óæ   € WP                   8  gC   \        V R 4      '       d   V P                  e0   V\        V R4      V P                   ,           8¼  d   Rp\	        V4      hV P                  4       V8g  # )Ú	_n_framesÚn_framesz attempt to seek outside sequence)rC   rÖ   r	  rr   rV   r“   )r]   r  r#   s   && r   Ú_seek_checkÚImageFile._seek_checkÇ  s^   € à—O‘OÔ#ô ˜T ;×/Ò/°D·N±NÒ4JØœW T¨:Ó6¸¿¹ÕHÔHð 5ˆCÜ˜3“-Ðà�y‰y‹{˜eÑ#Ð#r   )rM   rq   rC   rD   rG   rI   r;   r:   r©   rÕ   rF   rE   rf   )r1   r2   r3   r4   Ú__doc__rB   rO   rl   rt   r{   r\   rª   r±   r¶   r½   rÁ   rœ   rß   rì   r  r6   Ú__classcell__)r`   s   @r   r8   r8   r   sn   ø† Ù4÷6ò 6õpõõõ÷
ð õ(3õj÷8ð 8÷$ð $õõN&õ`#õ÷$ó $r   r8   c                  óL   € ] tR tRtR R lt]P                  R R l4       tRtR# )ÚStubHandleri×  c               ó    € V ^8„  d   QhRRRR/# )r   r©   rQ   r   r<   r   )r   s   "r   r   ÚStubHandler.__annotate__Ø  s   € ÷ ñ �}ð ¨ñ r   c                	ó   € R # rf   r   ©r]   r©   s   &&r   rJ   ÚStubHandler.openØ  ri   r   c               ó    € V ^8„  d   QhRRRR/# )r   r©   rQ   r   úImage.Imager   )r   s   "r   r   r  Ü  s   € ÷ ñ �}ð ¨ñ r   c                	ó   € R # rf   r   r  s   &&r   rœ   ÚStubHandler.loadÛ  r  r   r   N)	r1   r2   r3   r4   rJ   ÚabcÚabstractmethodrœ   r6   r   r   r   r  r  ×  s!   † õð 	×Ñôó ôr   r  c                  óz   € ] tR tRtRt]P                  R R l4       tR R lt]P                  R R l4       t	R	t
R
# )rQ   ià  z¡
Base class for stub image loaders.

A stub loader is an image loader that can identify files of a
certain format, but relies on external code to load the file.
c               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   ÚStubImageFile.__annotate__é  rd   r   c                	ó   € R # rf   r   rg   s   &r   rO   ÚStubImageFile._openè  r  r   c               ó   € V ^8„  d   QhRR/# rÄ   r   )r   s   "r   r   r  ì  s   € ÷ 
ñ 
Ð3ñ 
r   c                	óò   € V P                  4       pVf   RV P                   R2p\        V4      hVP                  V 4      pVf   Q hVP                  V n        VP
                  V n        VP                  4       # )Nzcannot find loader for this z file)rR   r   r   rœ   r`   Ú__dict__)r]   r^   r#   Úimages   &   r   rœ   ÚStubImageFile.loadì  sj   € Ø—‘“ˆØŠ>Ø0°·±°¸UÐCˆCÜ˜#“,ÐØ—‘˜DÓ!ˆØÒ Ð Ð àŸ™ˆŒØŸ™ˆŒØ�z‰z‹|Ðr   c               ó   € V ^8„  d   QhRR/# )r   r   zStubHandler | Noner   )r   s   "r   r   r  ù  s   € ÷ ñ Ð)ñ r   c                ó   € R# )z (Hook) Find actual image loader.Nr   rg   s   &r   rR   ÚStubImageFile._loadø  s   € ñ 	r   )r`   r#  N)r1   r2   r3   r4   r  r  r  rO   rœ   rR   r6   r   r   r   rQ   rQ   à  s@   † ñð 	×Ñôó ðõ
ð 	×Ñôó ôr   rQ   )Ú	metaclassc                  óŽ   € ] tR tRt$ RtRtRtR]R&   RtR]R&   Rt	R]R	&   ^ t
^ tR
 R ltR R ltR R ltR R ltR R ltRtR# )ÚParseriþ  z^
Incremental image parser.  This class implements the standard
feed/close consumer interface.
NzImage.Image | Noner$  zbytes | Noner¨   z,Image.core.ImagingDecoder | PyDecoder | Noner   c               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   ÚParser.__annotate__  s   € ÷ 9ñ 9�tñ 9r   c                ó0   € V P                   e   Q R4       hR# )z•
(Consumer) Reset the parser.  Note that you can only call this
method immediately after you've created a parser; parser
instances cannot be reused.
Nzcannot reuse parsers)r¨   rg   s   &r   ÚresetÚParser.reset  s   € ð �y‰yÒ Ð8Ð"8Ó8Ò r   c               ó    € V ^8„  d   QhRRRR/# )r   r¨   rN   r   r<   r   )r   s   "r   r   r-    s   € ÷ G ñ G ˜ð G  4ñ G r   c                óÚ  € V P                   '       d   R# V P                  f   Wn        MV P                  V,           V n        V P                  '       dû   V P                  ^ 8”  d{   \	        \        V P                  4      V P                  4      pV P                  VR V n        V P                  V,
          V n        V P                  ^ 8”  g   V P                  '       g   R# V P                  P                  V P                  4      w  r4V^ 8  d,   RV n        ^V n         V^ 8  d   RV n        \        VRR7      hR# V P                  VR V n        R# V P                  '       d   R#  \        P                  ! V P                  4      ;_uu_ 4       p\        P                  ! V4      pRRR4       \        XR4      ;'       g    \        VR4      pV'       gî   \        VP                  4      ^8X  dÔ   VP                  4        VP                  ^ ,          w  r„rš. Vn        \        P                   ! VP"                  WŠVP$                  4      V n        V P                  P'                  VP(                  V4       W�n        V P                  \        V P                  4      8:  d&   V P                  V P                  R V n        ^ V n        W`n        R#   + '       g   i     EL.; i  \*         d     R# i ; i)z†
(Consumer) Feed data to the parser.

:param data: A string buffer.
:exception OSError: If the parser failed to parse the image file.
NFrÑ   rÇ   rÆ   )Úfinishedr¨   r   r/   Úminr¼   ré   r$  r$   r—   r˜   r	   rJ   rÖ   rE   rß   rå   rY   rG   ræ   r©   r   )r]   r¨   Úskiprû   rú   r:   r©   ÚflagÚdÚoÚas   &&         r   ÚfeedÚParser.feed  s  € ð �=�=ˆ=Ùà�9‰9ÒØ�IàŸ	™	 DÕ(ˆDŒIð �<�<ˆ<Ø�{‰{˜QŒäœ3˜tŸy™y›>¨4¯;©;Ó7�Ø ŸI™I d eÐ,�”	Ø"Ÿk™k¨DÕ0�”Ø—;‘; ”?¨$¯)¯)¨)Ùà—<‘<×&Ñ& t§y¡yÓ1‰DˆAà�1Œuà �”	Ø !�”Ø�q”5à!%�D”JÜ& q°%Ô8Ð8ñ ØŸ	™	 ! "˜ˆDŽIà�Z�ZˆZñ ð Ü—Z’Z §	¡	×*Ô*¨bÜŸš B›�B÷ +ô
 ˜r ;Ó/×KÐK´7¸2¸{Ó3K�ß¤ B§G¡G£°Ô 1à—O‘OÔ%Ø!#§¡¨¥‘J�A˜!Ø �B”GÜ#(×#4Ò#4°R·W±W¸aÀB×DTÑDTÓ#U�D”LØ—L‘L×)Ñ)¨"¯%©%°Ô3ð #$”KØ—{‘{¤c¨$¯)©)£nÔ4Ø$(§I¡I¨d¯k©k¨mÐ$<˜œ	Ø&'˜œà–
÷) +×*Ð*ûäô Úðús*   Å#(K ÆKÆ"K ËK	Ë	K ËK*Ë)K*c               ó   € V ^8„  d   QhRR/# )r   r   r+  r   )r   s   "r   r   r-  \  s   € ÷ ñ ˜6ñ r   c                	ó   € V # rf   r   rg   s   &r   rl   ÚParser.__enter__\  rn   r   c               ó    € V ^8„  d   QhRRRR/# rw   r   )r   s   "r   r   r-  _  s   € ÷ ñ ˜fð ¨ñ r   c                	ó&   € V P                  4        R # rf   )r\   rz   s   &*r   r{   ÚParser.__exit___  s   € Ø�
‰
Žr   c               ó   € V ^8„  d   QhRR/# )r   r   r  r   )r   s   "r   r   r-  b  s   € ÷ ñ �{ñ r   c                ó~  € V P                   '       d?   V P                  R4       R;V n        V n         V P                  '       g   Rp\	        V4      hV P
                  '       g   Rp\	        V4      hV P                  '       du   \        P                  ! V P                  4      ;_uu_ 4       p \        P                  ! V4      V n        V P
                  P                  4         RRR4       V P
                  # V P
                  #   T P
                  P                  4        i ; i  + '       g   i     T P
                  # ; i)zà
(Consumer) Close the stream.

:returns: An image object.
:exception OSError: If the parser failed to parse the image file either
                    because it cannot be identified or cannot be
                    decoded.
r   Nzimage was incompletezcannot parse this image)r   r:  r¨   r3  r   r$  r—   r˜   r	   rJ   rœ   )r]   r#   r:   s   &  r   r\   ÚParser.closeb  sÙ   € ð �<�<ˆ<à�I‰I�cŒNØ'+Ð+ˆDŒI˜œØ—=—=�=Ø,�Ü˜c“lÐ"Ø�z�zˆzØ+ˆCÜ˜#“,ÐØ�9�9ˆ9ô —’˜DŸI™I×&Ô&¨"ð&Ü!&§¢¨B£�D”Jà—J‘J—O‘OÕ%÷	 'ð
 �z‰zÐˆt�z‰zÐøð —J‘J—O‘OÕ%ú÷	 'Ö&ð
 �z‰zÐús$   Â*D!Â,DÃD!ÄDÄD!Ä!D<	)r¨   r   r3  r$  r/   )r1   r2   r3   r4   r  Úincrementalr$  r5   r¨   r   r/   r3  r/  r:  rl   r{   r\   r6   r   r   r   r+  r+  þ  sX   ‡ ñð
 €KØ $€EÐÓ$Ø€Dˆ,ÓØ<@€GÐ9Ó@Ø€FØ€Hõ9õG õRõ÷ñ r   r+  c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   r©   r  r:   ú	IO[bytes]rE   úlist[_Tile]Úbufsizer   r   r<   r   )r   s   "r   r   r   „  s0   € ÷ ñ ˆkð ˜yð °ð Àcð ÐRVñ r   c           	     óä  € V P                  4        \        V R4      '       g   RV n        VP                  \        R7       \        \        W0P                  ^ ,          ^,          4      p VP                  4       pVP                  4        \        WW#V4       \        VR4      '       d   VP                  4        R# R#   \        \        P                  3 d   p\        YY#RT4        Rp?LTRp?ii ; i)z—Helper to save image based on tile list

:param im: Image object.
:param fp: File object.
:param tile: Tile list.
:param bufsize: Optional buffer size
ÚencoderconfigrÊ   NÚflushr   )rœ   rÖ   rK  rà   r)   ÚmaxrH   rZ   rÙ   rL  Ú_encode_tiler    r—   ÚUnsupportedOperation)r©   r:   rE   rI  ÚfhÚexcs   &&&&  r   Ú_saverR  „  sº   € ð ‡G�G„IÜ�2�×'Ò'ØˆÔØ‡I�I”)€IÔô
 ”(˜G§W¡W¨Q¥Z°!¥^Ó4€Gð7Ø�Y‰Y‹[ˆØ
�‰Œ
Ü�R˜T¨BÔ/ô ˆr�7×ÒØ
�‰Ž
ñ øô œB×3Ñ3Ð4ô 7Ü�R˜T¨D°#×6Ñ6ûð7ús   Á)-B< Â<C/ÃC*Ã*C/c               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r   r©   r  r:   rG  rE   rH  rI  r   rP  z
int | NonerQ  zBaseException | Noner   r<   r   )r   s   "r   r   r      sN   € ÷  ñ  Øð àð ð ð ð ð	 ð
 	ð ð 
ð ð 
ñ r   c                ó|  € V EF  w  rgr‰V^ 8”  d   VP                  V4       \        P                  ! V P                  WiV P                  4      p
 V
P                  V P                  V4       V
P                  '       d*   V
P                  V4       V
P                  4       ^,          pMVV'       d8    V
P                  V4      R,          w  r¼VP                  V4       V'       g   K6  MVf   Q hV
P                  WC4      pV^ 8  d   \        VRR7      Vh V
P                  4        EK"  	  R#   T
P                  4        i ; i)r   T:é   NNNrÑ   )r”   r	   Ú_getencoderrY   rK  ræ   r©   Ú	pushes_fdrè   Úencode_to_pyfdÚencodeÚwriteÚencode_to_filer$   rë   )r©   r:   rE   rI  rP  rQ  Úencoder_namer.   r/   r0   r   Úerrcoder¨   s   &&&&&&       r   rN  rN     s  € ô 04Ñ+ˆ˜vØ�AŒ:Ø�G‰G�FŒOÜ×#Ò# B§G¡G¨\À×AQÑAQÓRˆð	Ø×Ñ˜RŸU™U GÔ,Ø× × Ð Ø—‘˜bÔ!Ø!×0Ñ0Ó2°1Õ5‘çàØ(/¯©°wÓ(?ÀÕ(C™˜ØŸ™ œß"™7Ø!ð š>Ð)˜>Ø%×4Ñ4°RÓA�GØ˜Œ{Ü" 7°DÔ9¸sÐBð ð �O‰O×ó1 04øð0 �O‰OÕús   ÁAD)Â.1D)Ã$-D)Ä)D;c               ó$   € V ^8„  d   QhRRRRRR/# )r   r:   rG  rZ   r   r   rN   r   )r   s   "r   r   r   Ã  s!   € ÷  ñ  �9ð   Cð  ¨Eñ  r   c                ó¤  € V^ 8:  d   R# V\         8:  d1   V P                  V4      p\        V4      V8  d   Rp\        V4      hV# . pTpV^ 8”  dN   V P                  \	        V\         4      4      pV'       g   M%VP                  V4       V\        V4      ,          pKT  \        R V 4       4      V8  d   Rp\        V4      hRP                  V4      # )a›  
Reads large blocks in a safe way.  Unlike fp.read(n), this function
doesn't trust the user.  If the requested size is larger than
SAFEBLOCK, the file is read block by block.

:param fp: File handle.  Must implement a <b>read</b> method.
:param size: Number of bytes to read.
:returns: A string containing <i>size</i> bytes of data.

Raises an OSError if the file is truncated and the read cannot be completed

r   zTruncated File Readc              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irf   )r¼   )Ú.0Úblocks   & r   Ú	<genexpr>Ú_safe_read.<locals>.<genexpr>à  s   é € Ð
*¡6˜%Œ3ˆu�:ˆ:£6ùs   ‚)Ú	SAFEBLOCKr–   r¼   r   r4  r‘   ÚsumÚjoin)r:   rZ   r¨   r#   ÚblocksÚremaining_sizerb  s   &&     r   Ú
_safe_readrj  Ã  s»   € ð ˆq„yÙØŒyÔØ�w‰w�t‹}ˆÜˆt‹9�tÔØ'ˆCÜ˜#“,ÐØˆØ€FØ€NØ
˜1Ô
Ø—‘œ˜N¬IÓ6Ó7ˆßØØ�‰�eÔØœ#˜e›*Õ$ŠÜ
Ñ
*¡6Ó
*Ó*¨TÔ1Ø#ˆÜ�c‹lÐØ�8‰8�FÓÐr   c                  ó.   € ] tR tRtR R ltR R ltRtR# )ÚPyCodecStateiæ  c               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   ÚPyCodecState.__annotate__ç  s   € ÷ ñ ˜$ñ r   c                	ó>   € ^ V n         ^ V n        ^ V n        ^ V n        R# )r   N)ÚxsizeÚysizeÚxoffÚyoffrg   s   &r   rB   ÚPyCodecState.__init__ç  s   € ØˆŒ
ØˆŒ
ØˆŒ	ØˆŽ	r   c               ó   € V ^8„  d   QhRR/# )r   r   ztuple[int, int, int, int]r   )r   s   "r   r   rn  í  s   € ÷ Tñ TÐ2ñ Tr   c                	ó¢   € V P                   V P                  V P                   V P                  ,           V P                  V P                  ,           3# rf   )rr  rs  rp  rq  rg   s   &r   r.   ÚPyCodecState.extentsí  s3   € Ø�y‰y˜$Ÿ)™) T§Y¡Y°·±Õ%;¸T¿Y¹YÈÏÉÕ=SÐSÐSr   )rr  rp  rs  rq  N)r1   r2   r3   r4   rB   r.   r6   r   r   r   rl  rl  æ  s   † õ÷Tñ Tr   rl  c                  ób   € ] tR tRt$ R]R&   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# )ÚPyCodeciñ  zIO[bytes] | NoneÚfdc               ó$   € V ^8„  d   QhRRRRRR/# )r   rY   r+   r0   r   r   r<   r   )r   s   "r   r   ÚPyCodec.__annotate__ô  s!   € ÷ ñ ˜Sð ¨ð °ñ r   c                	ón   € R V n         \        4       V n        R V n        Wn        V P                  V4       R # rf   )r©   rl  r¹   rz  rY   Úinit)r]   rY   r0   s   &&*r   rB   ÚPyCodec.__init__ô  s)   € Ø15ˆŒÜ!“^ˆŒ
ØˆŒØŒ	Ø�	‰	�$Žr   c               ó    € V ^8„  d   QhRRRR/# )r   r0   útuple[Any, ...]r   r<   r   )r   s   "r   r   r|  û  s   € ÷ ñ ˜ð ¨Tñ r   c                ó   € Wn         R# )zw
Override to perform codec specific initialization

:param args: Tuple of arg items from the tile entry
:returns: None
N)r0   rz   s   &&r   r~  ÚPyCodec.initû  s	   € ð Ž	r   c               ó   € V ^8„  d   QhRR/# rc   r   )r   s   "r   r   r|    s   € ÷ ñ ˜ñ r   c                ó   € R# )z<
Override to perform codec specific cleanup

:returns: None
Nr   rg   s   &r   rë   ÚPyCodec.cleanup  s   € ñ 	r   c               ó    € V ^8„  d   QhRRRR/# )r   rz  rG  r   r<   r   )r   s   "r   r   r|    s   € ÷ ñ ˜	ð  dñ r   c                ó   € Wn         R# )zo
Called from ImageFile to set the Python file-like object

:param fd: A Python file-like object
:returns: None
N)rz  )r]   rz  s   &&r   rè   ÚPyCodec.setfd  s	   € ð Žr   Nc               ó$   € V ^8„  d   QhRRRRRR/# )r   r©   zImage.core.ImagingCorer.   r-   r   r<   r   )r   s   "r   r   r|    s(   € ÷ !"ñ !"à"ð!"ð 2ð!"ð 
ñ	!"r   c                óx  € Wn         V'       d²   Vw  r4rVV^ 8  gJ   V^ 8  gC   WPP                   P                  ^ ,          8”  g"   W`P                   P                  ^,          8”  d   Rp\        V4      hW0P                  n        W@P                  n        WS,
          V P                  n        Wd,
          V P                  n        M7V P                   P                  w  V P                  n        V P                  n        V P                  P                  ^ 8:  g   V P                  P                  ^ 8:  d   Rp\        V4      hR# )zÈ
Called from ImageFile to set the core output image for the codec

:param im: A core image object
:param extents: a 4 tuple of (x0, y0, x1, y1) defining the rectangle
    for this tile
:returns: None
z Tile cannot extend outside imagezSize must be positiveN)r©   rZ   rs   r¹   rr  rs  rp  rq  )r]   r©   r.   Úx0Úy0Úx1Úy1r#   s   &&&     r   ræ   ÚPyCodec.setimage  sØ   € ð ŒçØ$‰NˆB�Bà�AŒv˜˜aœ 2¯©¯©°Q­Ô#7¸2ÇÁÇÁÈQÅÔ;OØ8�Ü  “oÐ%à �J‰JŒOØ �J‰JŒOØ!�wˆD�J‰JÔØ!�wˆD�J‰JÕà15·±·±Ñ.ˆD�J‰JÔ˜dŸj™jÔ.à�:‰:×Ñ˜qÔ  D§J¡J×$4Ñ$4¸Ô$9Ø)ˆCÜ˜S“/Ð!ñ %:r   )r0   rz  r©   rY   r¹   rf   )r1   r2   r3   r4   r5   rB   r~  rë   rè   ræ   r6   r   r   r   ry  ry  ñ  s&   ‡ ØÓõõõõ÷!"ó !"r   ry  c                  óP   € ] tR tRtRtRt]R R l4       tR R ltRR	 R
 llt	Rt
R# )Ú	PyDecoderi9  z»
Python implementation of a format decoder. Override this class and
add the decoding logic in the :meth:`decode` method.

See :ref:`Writing Your Own File Codec in Python<file-codecs-py>`
Fc               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   ÚPyDecoder.__annotate__D  s   € ÷ ñ ˜$ñ r   c                	ó   € V P                   # rf   )Ú	_pulls_fdrg   s   &r   rç   ÚPyDecoder.pulls_fdC  s   € à�~‰~Ðr   c               ó    € V ^8„  d   QhRRRR/# )r   Úbufferz$bytes | Image.SupportsArrayInterfacer   útuple[int, int]r   )r   s   "r   r   r•  G  s   € ÷ 
'ñ 
'ÐAð 
'Àoñ 
'r   c                ó   € Rp\        V4      h)a  
Override to perform the decoding process.

:param buffer: A bytes object with the data to be decoded.
:returns: A tuple of ``(bytes consumed, errcode)``.
    If finished with decoding return -1 for the bytes consumed.
    Err codes are from :data:`.ImageFile.ERRORS`.
zunavailable in base decoder©ÚNotImplementedError)r]   rš  r#   s   && r   ré   ÚPyDecoder.decodeG  ó   € ð ,ˆÜ! #Ó&Ð&r   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r¨   rN   Úrawmoder­   Úextrar�  r   r<   r   )r   s   "r   r   r•  S  s,   € ÷ "ñ "Øð"Ø$.ð"Ø>Mð"à	ñ"r   c                óˆ  € V'       g   V P                   p\        P                  ! V P                   RW#4      pV P                  f   Q hVP	                  V P                  V P
                  P                  4       4       VP                  V4      pV^ ,          ^ 8¼  d   Rp\        V4      hV^,          ^ 8w  d   Rp\        V4      hR# )a  
Convenience method to set the internal image from a stream of raw data

:param data: Bytes to be set
:param rawmode: The rawmode to be used for the decoder.
    If not specified, it will default to the mode of the image
:param extra: Extra arguments for the decoder.
:returns: None
rÈ   Nznot enough image datazcannot decode image data)	rY   r	   rå   r©   ræ   r¹   r.   ré   rs   )r]   r¨   r¢  r£  r7  rù   r#   s   &&&&   r   Ú
set_as_rawÚPyDecoder.set_as_rawS  s�   € ÷ Ø—i‘iˆGÜ×Ò˜dŸi™i¨°Ó?ˆØ�w‰wÒ"Ð"Ð"Ø	�
‰
�4—7‘7˜DŸJ™J×.Ñ.Ó0Ô1Ø�H‰H�T‹NˆàˆQ�4�1Œ9Ø)ˆCÜ˜S“/Ð!ØˆQ�4�1Œ9Ø,ˆCÜ˜S“/Ð!ñ r   r   )Nr   )r1   r2   r3   r4   r  r—  Úpropertyrç   ré   r¥  r6   r   r   r   r’  r’  9  s/   † ñð €Iàôó ðõ
'÷"ó "r   r’  c                  óX   € ] tR tRtRtRt]R R l4       tR R ltR R	 lt	R
 R lt
RtR# )Ú	PyEncoderio  z»
Python implementation of a format encoder. Override this class and
add the decoding logic in the :meth:`encode` method.

See :ref:`Writing Your Own File Codec in Python<file-codecs-py>`
Fc               ó   € V ^8„  d   QhRR/# r”  r   )r   s   "r   r   ÚPyEncoder.__annotate__z  s   € ÷ ñ ˜4ñ r   c                	ó   € V P                   # rf   )Ú
_pushes_fdrg   s   &r   rW  ÚPyEncoder.pushes_fdy  s   € à�‰Ðr   c               ó    € V ^8„  d   QhRRRR/# )r   rI  r   r   ztuple[int, int, bytes]r   )r   s   "r   r   r«  }  s   € ÷ 
'ñ 
'˜cð 
'Ð&<ñ 
'r   c                ó   € Rp\        V4      h)zð
Override to perform the encoding process.

:param bufsize: Buffer size.
:returns: A tuple of ``(bytes encoded, errcode, bytes)``.
    If finished with encoding return 1 for the error code.
    Err codes are from :data:`.ImageFile.ERRORS`.
zunavailable in base encoderr�  )r]   rI  r#   s   && r   rY  ÚPyEncoder.encode}  r   r   c               ó   € V ^8„  d   QhRR/# )r   r   r›  r   )r   s   "r   r   r«  ‰  s   € ÷ 'ñ ' ñ 'r   c                ó¾   € V P                   '       g   R# V P                  ^ 4      w  rpV'       d,   V P                  f   Q hV P                  P                  V4       W3# )zÐ
If ``pushes_fd`` is ``True``, then this method will be used,
and ``encode()`` will only be called once.

:returns: A tuple of ``(bytes consumed, errcode)``.
    Err codes are from :data:`.ImageFile.ERRORS`.
)r   éøÿÿÿ)rW  rY  rz  rZ  )r]   Úbytes_consumedr]  r¨   s   &   r   rX  ÚPyEncoder.encode_to_pyfd‰  sP   € ð �~�~ˆ~ØˆLØ(,¯©°A«Ñ%ˆ ßØ—7‘7Ò&Ð&Ð&Ø�G‰G�M‰M˜$ÔØÐ&Ð&r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rP  r   rI  r   r   )r   s   "r   r   r«  ™  s!   € ÷ ñ  ð ¨sð °sñ r   c                óˆ   € ^ pV^ 8X  d9   V P                  V4      w  rCpV^ 8”  g   K$  \        P                  ! WVR 4       K?  V# )z¼
:param fh: File handle.
:param bufsize: Buffer size.

:returns: If finished successfully, return 0.
    Otherwise, return an error code. Err codes are from
    :data:`.ImageFile.ERRORS`.
N)rY  rK   rZ  )r]   rP  rI  r]  ÚstatusÚbufs   &&&   r   r[  ÚPyEncoder.encode_to_file™  sA   € ð ˆØ˜ŒlØ#'§;¡;¨wÓ#7Ñ ˆF˜SØ˜ŽzÜ—’˜  ˜\Ö*Øˆr   r   N)r1   r2   r3   r4   r  r­  r§  rW  rY  rX  r[  r6   r   r   r   r©  r©  o  s4   † ñð €Jàôó ðõ
'õ'÷ ñ r   r©  i   rÓ   éþÿÿÿrÒ   r´  i÷ÿÿÿrÎ   rf   )-Ú
__future__r   r  r—   rá   ÚloggingrK   rW   Útypingr   r   r   r   r@   r   r	   Ú_utilr
   r   ÚTYPE_CHECKINGÚ_typingr   Ú	getLoggerr1   r€   rH   re  rê   r!   r$   r)   r'   r8   ÚABCr  ÚABCMetarQ   r+  rR  rN  rj  rl  ry  r’  r©  r   r   r   Ú<module>rÆ     s#  ðõ: #ã 
Û 	Û Û Û 	Û ß ,Ó ,ç ß )à€ßÝ'à	×	Ò	˜8Ó	$€à€ðð €	àÐ Ø Nð Ð$ØÐØˆØÐØÐð
€ðõõô
.ˆJô .ôb$�—‘ô b$ôJ�#—'‘'ô ô�I¨¯©õ ÷<@ñ @÷L÷8 õF ÷FTñ T÷E"ñ E"ôP3"�ô 3"ôl8�ö 8r   