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

497 lines
100 KiB
Plaintext
Raw Normal View History

Ë
ß¼jQOãó¼—ddlmZddlZddlZddlZddlZddlZddlZddlZddl m
Z
m Z ddl m
Z
ddlmZmZddlmZmZmZddlmZmZmZmZmZmZdd lmZdd
lmZ dd lm!Z!dd l"m#Z#m$Z$dd
lm%Z%dZ&e&rddl m'Z'ddlm(Z(ddl)m*Z*m+Z+m,Z,ejZe.«Z/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?d Z@d!ZAd"ZBd#ZCd$ZDd%ZEd&ZFd'ZGd(ZHd)ZId*ZJd+ZKd,ZLd-ZMd.ZNd/ZOd0ZPd1ZQd2ZRd3ZSd4ZTd5ZUd6ZVd7ZWd8ZXd9ZYd:ZZd;Z[d<Z\d=Z]idd>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“d]d^“Z^e^j¿«D��cic]\}}||“Œ
c}}Z`ie3dd_dd_d`fda“e4dd_dd_d`fda“e3dd_d?d_d`fdb“e4dd_d?d_d`fdb“e3dd_dd_d`fdc“e4dd_dd_d`fdc“e3dd_d?d_d`fdd“e4dd_d?d_d`fdd“e3dd_dded`fdf“e4dd_dded`fdf“e3dd_d?ded`fdg“e4dd_d?ded`fdg“e3dd_dded`fdh“e4dd_dded`fdh“e3dd_d?ded`fdi“e4dd_d?ded`fdi“e3dd_ddjd`fdk“ie4dd_ddjd`fdk“e3dd_d?djd`fdl“e4dd_d?djd`fdl“e3dd_ddjd`fdm“e4dd_ddjd`fdm“e3dd_d?djd`fdn“e4dd_d?djd`fdn“e3dd_ddod`fdp“e4dd_ddod`fdp“e3dd_d?dod`fdq“e4dd_d?dod`fdq“e3dd_ddod`fdr“e4dd_ddod`fdr“e3ddeddod`fdr“e4ddeddod`fdr“e3dd_d?dod`fds“e4dd_d?dod`fds“¥ie3dd_ddtd`fdu“e3dd_ddvd`fdw“e3dd_ddvd`fdw“e4dd_ddvd`fdx“e3dd_d?dvd`fdy“e3ddeddvd`fdz“e4ddeddvd`fd{“e3dd|dd}d`fd~“e4dd|dd}d`fd“e3dd_dd}d`fd€“e3ddedd}d`fd�“e4ddedd}d`fd‚“e3dd|dd}d`fd~“e4dd|dd}d`fd“e3dd_ddƒdefd„“e4dd_ddƒdefd„“e3d?d_dd…d`fd†“¥ie4d?d_dd…d`fd†“e3d?d_d?d…d`fd‡“e4d?d_d?d…d`fd‡“e3d?d_ddˆd`fd‰“e4d?d_ddˆd`fd‰“e3d?d_ddˆdŠfd‹“e4d?d_ddˆdŠfd‹“e3d?d_ddŒd�fdŽ“e4d?d_ddŒd�fdŽ“e3d?d_dd�d�fd‘“e4d?d_dd�d�fd‘“e3d?d_ddˆd_fd’“e4d?d_ddˆd_fd’“e3d?d_ddŒd“fd”“e4d?d_ddŒd“fd”“e3d?d_dd�d•fd–“e4d?d_dd�d•fd–“¥ie3d?d_ddˆdefd‰“e4d?d_ddˆdefd‰“e3d?d_ddŒd—fd˜“e4d?d_ddŒd—fd˜“e3d?d_dd�d™fdš“e4d?d_dd�d™fdš“e3d?d_ddˆd›fd‰“e4d?d_ddˆd›fd‰“e3d?d_ddœd`fd�“e4d?d_ddœd`fdž“e3d?d_ddŸd`fd “e4d?d_ddŸd`fd¡“e3d?d_ddŸdŠfd¢“e4d?d_ddŸdŠfd£“e3d?d_ddŸd_fd¤“e4d?d_ddŸd_fd¥“e3d?d_ddŸdefd “¥ie4d?d_ddŸdefd¡“e3dAd_dd_d`fd¦“e4dAd_dd_d`fd¦“e3dAd_d?d_d`fd§“e4dAd_d?d_d`fd§“e3dAd_dded`fd¨“e4dAd_dded`fd¨“e3dAd_d?ded`fd©“e4dAd_d?ded`fd©“e3dAd_ddjd`fdª“e4dAd_ddjd`fdª“e3dAd_d?djd`fd«“e4dAd_d?djd`fd«“e3dAd_ddod`fd¬“e4dAd_ddod`fd¬“e3dAd_ddƒdŠfd­“e4dAd_ddƒdŠfd­“¥ie3dAd_ddƒdefd®“e4dAd_ddƒdefd®“e3dAd_d?dod`fd¯“e4dAd_d?dod`fd¯“e3dEd_ddˆd`fd°“e4dEd_ddˆd`fd°“e3dEd_ddŒdŠfd±“e4dEd_ddŒdŠfd±“e3dEd_dd�d�fd²“e4dEd_dd�d�fd²“e3dEd_ddŸd`fd³“e4dEd_ddŸd`fd´“e3dGd_ddod`fdr“e4dGd_ddod`fdr“e3dGd_dd…d`fd‹“e4dGd_dd…d`fd‹“e3dKd_dd…d`fdµ“¥e4dKd_dd…d`fdµi¥Zaebd¶„eaD««Zcgd·¢Zddäd¸„Ze dåd¹„Zf dæd»„ZgiZhiZidçd¼„ZjGd½„dºe«Zke
d¾elemgefZndèd¿„ZodédÀ„ZpdêdÁ„Zqe&re erefZsne ZsGd„d¾es«Ztehet_heiet_ie%j¾«D]:\ZuZvevjïdÃdÄ«ZvexetdÅev›�eheud«exetdÆev›�eieu«Œ<[h[i[u[vGdÇ„dÈet«ZyeyZzGdÉ„dÊej0«Z{idËdËe3ddd_df“dÌdÌe3dddodf“dÍdÍe3dddƒd?f“dÎdÎe3dAddodf“dÏdÏe3dAddƒd?f“dÐdÑe3dd?d}df“dÒdÒe3dddvdf“dÓdÓe3dddvdf“dÔdÕe3ddAd}df“dÖdÖe3d?dd…df“d×d×e3d?ddˆdf“dØdØe3d?ddˆd?f“dÙdÙe3dEddˆdf“dÚdÚe3dGdd…df“dÛdÛe3dKdd…df“dÜdÜe4dddvdf“Z|dëdÝ„Z}GdÞ„dßejü«Zdëdà„Z€e�je{�je{ee«e�je{�je}«e�je{�je€«e�j
e{�jdádâg«e�j e{�jdã«ycc}}w)ìé)Ú annotationsN)ÚCallableÚMutableMapping)ÚFraction)ÚNumberÚRational)ÚIOÚAnyÚcasté)ÚExifTagsÚImageÚ ImageFileÚImageOpsÚ ImagePaletteÚTiffTags)Úi16be)Úi32be)Úo8)Ú
DeferredErrorÚis_path©ÚTYPESF)ÚIterator)ÚNoReturn)ÚBufferÚ IntegralLikeÚStrOrBytesPathésIIsMMéÿéiiiii
iéiiiiiii(i-i1i2i;i=i@iBiCéDiEiJiRiSi[iii˜‚i»ƒiI†is‡ii‡i¼ii–Æi—ÆÚrawéÚ
tiff_ccittéÚgroup3éÚgroup4éÚtiff_lzwéÚ tiff_jpegéÚjpegéÚtiff_adobe_deflatei€Ú tiff_raw_16i€Úpackbitsi)€Útiff_thunderscani²€Ú tiff_deflateit‡Ú tiff_sgilogiu‡Ú
tiff_sgilog24imˆÚlzmaiPÃÚzstdiQÃÚwebp©r ©)Ú1z1;I)r>z1;IR)r>r>)r>z1;R)r%)ÚLzL;2I)r?zL;2IR)r?zL;2)r?zL;2R)r))r?zL;4I)r?zL;4IR)r?zL;4)r?zL;4R)r1)r?zL;I)r?zL;IR)r?r?)r?zL;R)é )úI;16zI;12)é)rArA)úI;16BrC)rAzI;16R)ÚIzI;16S)rDzI;16BS)r')é )ÚFúF;32F)rFzF;32BF)rDzI;32N)rDúI;32S)rDzI;32BS)r1r1)ÚLArI)r1r1r1)ÚRGBrJ)rJzRGB;R)r1r1r1r1)ÚRGBArK©r)rJÚRGBX)r1r1r1r1r1©rr)rJÚRGBXX)r1r1r1r1r1r1)rrr)rJÚRGBXXX)rKÚRGBa)r r)rKÚRGBaX)r rr)rKÚRGBaXX)r%r)rKÚRGBAX)r%rr)rKÚRGBAXX)iç)rBrBrB)rJzRGB;16L)rJzRGB;16B)rBrBrBrB)rKzRGBA;16L)rKzRGBA;16B)rJzRGBX;16L)rJzRGBX;16B)rKzRGBa;16L)rKzRGBa;16B)ÚPzP;1)rVzP;1R)rVzP;2)rVzP;2R)rVzP;4)rVzP;4R)rVrV)rVÚPX)ÚPArX)rVzP;R)ÚCMYKrY)rYÚCMYKX)rYÚCMYKXX)rYzCMYK;16L)rYzCMYK;16B)ÚLABr\c#ó8K—|]}t|d«–—Œy­w)r)N)Úlen)Ú.0Úkey_tps úV/home/antigravity/intellecton/venv/lib/python3.12/site-packages/PIL/TiffImagePlugin.pyú <genexpr>rbsèø€ÒA¨Vœ#˜f Q™iŸ.ÑAùs‚)sMM*sII*sMM*sII*sMM+sII+có>—|jtt««S©N)Ú
startswithÚtupleÚPREFIXES©Úprefixs raÚ_acceptrj"s€Ø × Ñ œU¤8›_Ó -Ð-ócóx—t|«dkD}t|rd|z n|«j|«}|r|ddd…S|S)Nr éÿÿÿÿ)ÚabsÚ IFDRationalÚlimit_rational)ÚvalÚmax_valÚinvÚn_ds raÚ_limit_rationalru&sC€ô ˆc‹(�Q‰,€CÜ
¡�a˜#’g¨#Ó
.×
=Ñ
=¸gÓ
F€CÙˆ3‰t�ˆt‰9Ð$ Ð$rkrocó
—t|«}|j|jf}td„|D««|krt |t |««}t
d„|D««}t|«|kDrt |d|dz |«}|S)Nc3ó2K—|]}t|«–—Œy­wrd©Úfloat©r_Úis rarbz)_limit_signed_rational.<locals>.<genexpr>4sèø€Ò
!˜Œ5��8Ñ
!ùó‚c3ó2K—|]}t|«–—Œy­wrdrxrzs rarbz)_limit_signed_rational.<locals>.<genexpr>7sèø€Ò, 1”e˜A—hÑ,ùr|rr )rÚ numeratorÚ denominatorÚminrurnrfÚmax)rqrrÚmin_valÚfracrtÚ n_d_floats raÚ_limit_signed_rationalr….s~€ô �C‹=€DØ-1¯^©^¸T×=MÑ=MÐ-M€Cä
Ñ
!˜SÔ
!Ó! GÒ+ܘc¤3 w£<Ó0ˆäÑ,¨Ô,Ó,€IÜ
ˆ9ƒ~˜Òܘi¨™l¨Y°q©\Ñ9¸7ÓCˆà €Jrkcó ‡— dˆfd„ }|S)Ncó6•—t|j‰«|ŽSrd)ÚgetattrÚ_val)ÚselfÚargsÚops €raÚdelegatez_delegate.<locals>.delegateFsø€ð&Œw�t—y‘y "Ó% tÐ,Ð,rk)rŠror‹ztuple[float, ...]Úreturnzbool | float | Fractionr=)rŒr�s` raÚ _delegater�Es'ø€ð-Øð-Ø"3ð-à õ-ð
€OrkcóF—eZdZdZ dZ d( d)d„Zed*d„«Zed+d„«Zd,d„Z d-d„Z
d+d„Z d.d „Z d/d
„Z
d0d „Z ed «Zed
«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Zed«Z ed«Z!ed«Z"ed«Z#ed «Z$ed!«Z%ed"«Z&ed#«Z'ed$«Z(ed%«Z)e*e+d&«r ed&«Z,y'y')1rozÀImplements a rational class where 0/0 is a legal value to match
the in the wild use of exif rationals.
e.g., DigitalZoomRatio - 0.00/0.00 indicates that no digital zoom was used
)Ú
_numeratorÚ _denominatorr‰có—|t|t«r4|j|_|j|_|j |_yt|t«r#|j|_|j|_n*trtt|«|_n||_||_|dk(rtd«|_y|dk(rt|«|_yt|«|k(rtt|«|«|_yt||z «|_y)z®
:param value: either an integer numerator, a
float/rational/other number, or an IFDRational
:param denominator: Optional integer denominator
NrÚnanr )
Ú
isinstanceror~r‘rr’r‰rÚ
TYPE_CHECKINGr rryÚint)rŠÚvaluers raÚ__init__zIFDRational.__init__\sЀñ
Ü �eœ[Ô )Ø#Ÿo™oˆDŒOØ %× 1Ñ 1ˆDÔ ØŸ
™
ˆDŒIØ ä �eœXÔ &Ø#Ÿo™oˆDŒOØ %× 1Ñ 1ˆDÕ åÜ"&¤|°UÓ";�•à"'�”Ø +ˆDÔ à ˜!Ò Ü˜e› ˆD�IØ
˜AÒ
Ü  ›ˆD�IÜ
�‹Z˜5Ò
Ü ¤ U£¨[Ó9ˆD�Iä  ¨Ñ!4Ó5ˆD�Irkcó—|jSrd)r‘©rŠs rar~zIFDRational.numerator~s €à�‰Ðrkcó—|jSrd)r’r›s rarzIFDRational.denominator‚s€à× Ñ Ð rkcóî—|jdk(r|j|jfSt|jt«sJ‚|jj |«}|j|jfS)z…
:param max_denominator: Integer, the maximum denominator value
:returns: Tuple of (numerator, denominator)
r)rr~r•r‰rÚlimit_denominator)rŠÚmax_denominatorÚfs rarpzIFDRational.limit_rational†sb€ð × Ñ ˜qÒ Ø—>‘> 4×#3Ñ#3Ð3Ð 3ä˜$Ÿ)™)¤XÔ.Ð.Ð.Ø �I‰I× 'Ñ '¨Ó 8ˆØ�{‰{˜AŸM™MÐ)Ð)rkcó>—tt|j««Srd)Ústrryr‰r›s raÚ__repr__zIFDRational.__repr__”s€Ü”5˜Ÿ™Ó#Ó$Ð$rkcó6—|jj«Srd)r‰Ú__hash__r›s rar¥zIFDRational.__hash__—s€Ø�y‰y×!Ñ!Ó#Ð#rkcó’—|j}t|t«r |j}t|t«r t|«}||k(Srd)r‰r•rory)rŠÚotherrqs raÚ__eq__zIFDRational.__eq__šs;€Ø�i‰iˆÜ �eœ[Ô )Ø—J‘JˆEÜ �eœUÔ #ܘ“*ˆCØ�e‰|ÐrkcóH—|j|j|jgSrd)r‰r‘r’r›s raÚ __getstate__zIFDRational.__getstate__¢s€Ø— ‘ ˜4Ÿ?™?¨D×,=Ñ,=Ð>Ð>rkcóò—tj|d«|\}}}t|ttf«sJ‚||_t rtt|«|_ n||_ t|t«sJ‚||_ y©Nr) ror™r•ryrr‰r–r rr‘r—r’)rŠÚstater‰r‘r’s raÚ __setstate__zIFDRational.__setstate__¥sj€Ü×јT 1Ô%Ø).Ñ&ˆˆj˜,ܘ$¤¬Ð 1Ô2Ð2Ð2؈Œ Ý Ü"¤<°Ó<ˆD�Oà(ˆDŒOܘ,¬Ô,Ð,Ð,Ø(ˆÕrkÚ__add__Ú__radd__Ú__sub__Ú__rsub__Ú__mul__Ú__rmul__Ú __truediv__Ú __rtruediv__Ú __floordiv__Ú
__rfloordiv__Ú__mod__Ú__rmod__Ú__pow__Ú__rpow__Ú__pos__Ú__neg__Ú__abs__Ú __trunc__Ú__lt__Ú__gt__Ú__le__Ú__ge__Ú__bool__Ú__ceil__Ú __floor__Ú __round__Ú__int__Nr<)r˜úfloat | Fraction | IFDRationalrr—rŽÚNone)rŽr©rŽr—)rŸr—rŽztuple[IntegralLike, int]©rŽr¢)r§ÚobjectrŽÚbool)rŽú%list[float | Fraction | IntegralLike])r­rÐrŽrË)-Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú __slots__r™Úpropertyr~rrpr£r¥r¨rªr®r�r¯r°r±r²r³r´rµr¶r·r¸r¹rºr»r¼r½r¾r¿rÀrÁrÂrÃrÄrÅrÆrÇrÈÚhasattrrrÉr=rkraroroNs¢„ñð ð
7€IðIJð 6Ø3ð 6ØBEð 6à
ó 6ðDòóððò!óð!ó *ó%ó$óó?ó
)ð ñ˜ Ó"€GÙ˜Ó$€HÙ˜ Ó"€GÙ˜Ó$€HÙ˜ Ó"€GÙ˜Ó$€HÙ˜MÓ*€KÙ˜^Ó,€LÙ˜^Ó,€LÙ˜oÓ.€MÙ˜ Ó"€GÙ˜Ó$€HÙ˜ Ó"€GÙ˜Ó$€HÙ˜ Ó"€GÙ˜ Ó"€GÙ˜ Ó"€GÙ˜+Ó&€IÙ
�xÓ
€FÙ
�xÓ
€FÙ
�xÓ
€FÙ
�xÓ
€FÙ˜Ó$€HÙ˜Ó$€HÙ˜+Ó&€IÙ˜+Ó&€Iáˆx˜Ô#Ù˜IÓ&‰ð$rkÚImageFileDirectory_v2c󇇗dˆˆfd„ }|S)Nc󤕗ddlm}|jjd«r"|jddj dd«|‰<‰|ft
‰<|S)Nr rÚload_r+Ú_ú )rrrÑreÚreplaceÚ_load_dispatch)ÚfuncrÚidxÚsizes €€raÚ decoratorz#_register_loader.<locals>.decoratorÜsLø€Ý#à �=‰=× #Ñ # GÔ ,ØŸ™ q rÐ*×2Ñ2°3¸Ó<ˆE�#‰JØ" D˜jŒ�sÑØˆ rk)ràÚ _LoaderFuncrŽrär=)rárârãs`` raÚ_register_loaderråÛsù€öð Ðrkcó‡—dˆfd„ }|S)Ncó•—|t‰<|Srd)Ú_write_dispatch)ràrás €rarãz#_register_writer.<locals>.decoratorèsø€Ø#Œ˜Ñ؈ rk)ràúCallable[..., Any]rŽrér=)rárãs` raÚ_register_writerrêçsø€õð Ðrkc󨇇—ddlm}|\}Š}|||<tjd‰›�«Š d dˆˆfd„
}‰|ft|<ˆfd„t
|<y)Nr rú=cóH•—|jt|«‰z›‰›�|«Srd)Ú_unpackr^)rŠÚdataÚ
legacy_apiÚfmtrâs €€raÚ
basic_handlerz&_register_basic.<locals>.basic_handlerös)ø€ð�|‰|œs 4›y¨DÑ0Ð1°#°Ð7¸Ó>Ð>rkcó<•‡—djˆˆfd„|D««S)Nrkc3óB•K—|]}‰j‰|«–—Œy­wrd)Ú_pack)r_r˜rñrŠs €€rarbz4_register_basic.<locals>.<lambda>.<locals>.<genexpr>ýsøèø€Ò<¨E�—‘˜C ×'Ñ<ùsƒ©Újoin)rŠÚvaluesrñs` €raú<lambda>z!_register_basic.<locals>.<lambda>üsù€Ø �‰Ô<°VÔ<Ó<ðrk©T)rŠrØrïÚbytesrðrÏrŽútuple[Any, ...])rrÚstructÚcalcsizerßrè)Ú idx_fmt_namerráÚnameròrñrâs @@raÚ_register_basicrïswù€Ýà!�N€CˆˆdØ€Eˆ#�JÜ �?‰?˜Q˜s˜e˜9Ó %€DðFJð?Ø#ð?Ø+0ð?Ø>Bð?à ö?ð
 
Ð-„N�3Ñó„O�CÒrkcó¤—eZdZUdZiZded<iZded< d= d>d„Zed„«Z ed „«Z
ed?d
„«Z e jd@d „«Z dAd „Z
dBd
„ZdCd„ZdDd„ZdEd„ZdFd„ZdGd„ZdHd„ZdId„ZdJd„ZdKd„ZdLd„Zeeeej:ddfej<ddfej>ddfej@ddfejBd d!fejDd"d#fejFd$d%fejHddfejJd&d'fg ««e&d(d(«dMdNd)„«Z'e(d(«dOd*„«Z)e&d+d(«dMdPd,„«Z*e(d+«dQd-„«Z+e&d.d/« dM dRd0„«Z,e(d.«dSd1„«Z-e&d2d(«dMdNd3„«Z.e(d2«dTd4„«Z/e&d5d/« dM dRd6„«Z0e(d5«dSd7„«Z1dUd8„Z2dVd9„Z3dWd:„Z4dXdYd;„Z5dZd<„Z6y)[rØaThis class represents a TIFF tag directory. To speed things up, we
don't decode tags unless they're asked for.
Exposes a dictionary interface of the tags in the directory::
ifd = ImageFileDirectory_v2()
ifd[key] = 'Some Data'
ifd.tagtype[key] = TiffTags.ASCII
print(ifd[key])
'Some Data'
Individual values are returned as the strings or numbers, sequences are
returned as tuples of the values.
The tiff metadata type of each item is stored in a dictionary of
tag types in
:attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types
are read from a tiff file, guessed from the type added, or added
manually.
Data Structures:
* ``self.tagtype = {}``
* Key: numerical TIFF tag number
* Value: integer corresponding to the data type from
:py:data:`.TiffTags.TYPES`
.. versionadded:: 3.0.0
'Internal' data structures:
* ``self._tags_v2 = {}``
* Key: numerical TIFF tag number
* Value: decoded data, as tuple for multiple values
* ``self._tagdata = {}``
* Key: numerical TIFF tag number
* Value: undecoded byte string from file
* ``self._tags_v1 = {}``
* Key: numerical TIFF tag number
* Value: decoded data in the v1 format
Tags will be found in the private attributes ``self._tagdata``, and in
``self._tags_v2`` once decoded.
``self.legacy_api`` is a value for internal use, and shouldn't be changed
from outside code. In cooperation with
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, if ``legacy_api``
is true, then decoded tags will be populated into both ``_tags_v1`` and
``_tags_v2``. ``_tags_v2`` will be used if this IFD is used in the TIFF
save routine. Tags should be read from ``_tags_v1`` if
``legacy_api == true``.
z"dict[int, tuple[int, _LoaderFunc]]rßzdict[int, Callable[..., Any]]rèNcóØ—t|«sdt|«›d�}t|«‚|�|n|dd|_|jtk(rd|_n(|jt k(rd|_n
d}t|«‚|ddk(|_||_i|_ |j«|jr|jd |d
d«d n|jd |d
d«d |_ d|_
y)a—Initialize an ImageFileDirectory.
To construct an ImageFileDirectory from a real file, pass the 8-byte
magic header to the constructor. To only set the endianness, pass it
as the 'prefix' keyword argument.
:param ifh: One of the accepted magic headers (cf. PREFIXES); also sets
endianness.
:param prefix: Override the endianness of the file.
znot a TIFF file (header z not valid)Nr%ú>ú<znot a TIFF IFDé+ÚQr1rr?r)F)rjÚreprÚ SyntaxErrorÚ_prefixÚMMÚ_endianÚIIÚ_bigtiffÚgroupÚtagtypeÚresetrîÚnextÚ _legacy_api)rŠÚifhrirÚmsgs rar™zImageFileDirectory_v2.__init__Gsé€ô �sŒ|Ø,¬T°#«Y¨K°{ÐCˆCܘcÓ"Ð "Ø!'Ð!3‘v¸¸R¸a¸ˆŒ Ø �<‰<œ2Ò ØˆD�LØ
�\‰\œRÒ
؈D�Là"ˆCܘcÓ"Ð "ؘA™ "™ ˆŒ
؈Œ
Ø')ˆŒ Ø'Ø �
‰
Œ ð�}Š}ð
�L‰L˜˜c ! "˜gÓ & qÒ )à—‘˜c 3 q r 7Ó+¨AÑ.ð
Œ ð
!ˆÕrkcó—|jSrd)r
r›s rarùzImageFileDirectory_v2.<lambda>nó
€ 4§<¡<€rkcó—|jSrd)Ú_offsetr›s rarùzImageFileDirectory_v2.<lambda>orrkcó—|jSrd)rr›s rarðz ImageFileDirectory_v2.legacy_apiqs€à×ÑÐrkcó—d}t|«‚)Nz"Not allowing setting of legacy api)Ú Exception)rŠr˜rs rarðz ImageFileDirectory_v2.legacy_apius€à2ˆÜ˜‹nÐrkcóX—i|_i|_i|_i|_d|_d|_yrd)Ú_tags_v1Ú_tags_v2Ú_tagdatarÚ_nextrr›s rarzImageFileDirectory_v2.resetzs,€Ø(*ˆŒ
Ø(*ˆŒ
Ø*,ˆŒ
؈Œ ؈Œ
Ø#'ˆ� rkcó*—tt|««Srd)r¢Údictr›s raÚ__str__zImageFileDirectory_v2.__str__‚s€Ü”4˜“:‹Ðrkcó¦—|j«D��cic]0\}}tj||j«j|“Œ2c}}Scc}}w)z�
:returns: dict of name|key: value
Returns the complete tag dictionary, with named tags where possible.
)ÚitemsrÚlookuprr)rŠÚcoder˜s raÚnamedzImageFileDirectory_v2.named…sH€ð $Ÿz™z›|÷
á��eô
�O‰O˜D $§*¡*Ó -× 2Ñ 2°EÑ 9ó
ð
ùó
s”5A
cój—tt|j«t|j«z«Srd)r^Úsetr rr›s raÚ__len__zImageFileDirectory_v2.__len__�ó$€Ü”3�t—}‘}Ó%¬¨D¯M©MÓ(:Ñ:Ó;Ð;rkcó—||jvrG|j|}|j|}|j|\}}||||j«||<|j|}|jrt |t tf«s|f}|Srd)rr rrßrðr•rfrû)rŠÚtagrïÚtyprâÚhandlerrqs raÚ __getitem__z!ImageFileDirectory_v2.__getitem__“s‚€Ø �d—m‘mÑ #Ø—=‘= Ñ%ˆDØ—,‘,˜sÑ#ˆCØ ×/Ñ/°Ñ4‰MˆD�'Ù  d¨D¯O©OÓ<ˆD�‰IØ�m‰m˜CÑ ˆØ �?Š?¤:¨c´E¼5°>Ô#BØ�&ˆC؈
rkcó>—||jvxs||jvSrd)rr ©rŠr/s raÚ __contains__z"ImageFileDirectory_v2.__contains__žó€Ø�d—m‘mÐ#Ò; s¨d¯m©mÐ';Ð;rkcó>—|j|||j«yrd)Ú_setitemrð)rŠr/r˜s raÚ __setitem__z!ImageFileDirectory_v2.__setitem__¡s€Ø �
‰
�c˜5 $§/¡/Õ2rkc óŠ‡ —tttf}tj||j
«Š t
||«r|gn|}||jv�r‰ jr‰ j|j|<�n÷tj|j|<td„|D««r]|D]9}t
|t«sJ‚|dksŒtj|j|<�n‹tj|j|<�nktd„|D««rÊd}d}d} |D]A}t
|t«sJ‚|rd|cxkrdksnd}|rd|cxkrdksnd}| sŒ:|dksŒ@d} ŒC|rtj|j|<ní|rtj |j|<nÍ| rtj"|j|<n­tj$|j|<n�td „|D««rtj&|j|<n_td
„|D««rtj(|j|<n/td „|D««rtj*|j|<|j|tjk(r2|D�cgc]&}t
|t«r|j-d d
«n|‘Œ(}}nJ|j|tjk(r*|D�cgc]}t
|t«r t/|«n|‘Œ!}}|j|tj"k(xrt
|t0«}
|
st3ˆ fd„|D««}|r |j4n |j6} |
sˆ‰ j8dk(s<|j|tj*k(s‰ j8€Mt;|«dk(r?|s=|r2|j|tjtjfvr|f} |\| |<y|| |<ycc}wcc}w#t<$r0t?j@d|›dt;|«›d�«|d| |<YywxYw)Nc3ó<K—|]}t|t«–—Œy­wrd)r•ro©r_Úvs rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>¯sèø€ÒB°a”z !¤[×1ÑBùó‚rc3ó<K—|]}t|t«–—Œy­wrd)r•r—r<s rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>·óèø€Ò<°œ A¤s×+Ñ<ùr>TrFi€ÿÿi€c3ó<K—|]}t|t«–—Œy­wrd)r•ryr<s rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ëóèø€Ò>°!œ A¤u×-Ñ>ùr>c3ó<K—|]}t|t«–—Œy­wrd)r•r¢r<s rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Ír@r>c3ó<K—|]}t|t«–—Œy­wrd)r•rûr<s rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>ÏrBr>ÚasciirÞc3ód•K—|]'}t|t«r‰j|«n|–—Œ)y­wrd)r•r¢Úcvt_enum)r_r˜Úinfos €rarbz1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Üs0øèø€òàô)3°5¼#Ô(>�—
‘
˜eÔ$ÀEÓIñùsƒ-0r zMetadata Warning, tag z had too many entries: z , expected 1)!rrûr¢rr'rr•rÚtypeÚ UNDEFINEDÚallroÚSIGNED_RATIONALÚRATIONALr—ÚSHORTÚ SIGNED_SHORTÚLONGÚ SIGNED_LONGÚDOUBLEÚASCIIÚBYTEÚencoderyr#rfrrÚlengthr^Ú
ValueErrorÚwarningsÚwarn)
rŠr/r˜rðÚ basetypesrør=ÚshortÚ signed_shortÚlongÚis_ifdÚdestrHs
@rar8zImageFileDirectory_v2._setitem¤s²ø€ÜœU¤CÐ(ˆ ä�‰˜s D§J¡JÓ/ˆÜ& u¨iÔ8�%‘¸eˆà �d—l‘lÒ "Ø�yŠyØ$(§I¡I�— ‘ ˜SÓ!ä$,×$6Ñ$6�— ‘ ˜SÑ!ÜÑB¸6ÔBÔBØ#ò>˜Ü)¨!¬[Ô9Ð9Ð9ؘq›5Ü08×0HÑ0H˜DŸL™L¨Ñ-Ú!ð >ô -5×,=Ñ,=˜Ÿ ™  SÓ)ÜÑ<°VÔ<Ô<Ø �EØ#'�LØ�DØ#ò)˜Ü)¨!¬SÔ1Ð1Ð1Ù ¨!¨q¬.°5¬.Ø$)˜EÙ'°¸AÔ1EÀÔ1EØ+0˜LÚ A¨£EØ#(™Dð)ñÜ,4¯N©N˜Ÿ ™  SÒ)Ù%Ü,4×,AÑ,A˜Ÿ ™  SÒ)ÙÜ,4¯M©M˜Ÿ ™  SÒ)ä,4×,@Ñ,@˜Ÿ ™  SÒ)ÜÑ>°vÔ>Ô>Ü(0¯©�D—L‘L Ò%ÜÑ<°VÔ<Ô<Ü(0¯©�D—L‘L Ò%ÜÑ>°vÔ>Ô>Ü(0¯
©
�D—L‘L Ñ%à �<‰<˜Ñ ¤× 2Ñ 2Ò 2ð öàô1;¸1¼cÔ0B�—‘˜ )Ô,ÈÑIðˆFñð�\‰\˜#Ñ
¤(×"3Ñ"3Ò
3ØEKÖLÀ¤*¨Q´Ô"4”e˜A”h¸!Ñ;ÐLˆFÐLà—‘˜cÑ"¤h§m¡mÑ3ÒP¼
À6Ì4Ó8PˆÙÜóà#ôóˆFñ
!+ˆt�}Š}°·
±
ˆñØ
�[‰[˜AÒ
Ø�|‰|˜CÑ ¤H§M¡MÒ1Ø— ‘ Ð#¬¨F« °qÒ(8Áñ˜dŸl™l¨3Ñ/Ü×!Ñ!Ü×(Ñ(ð4ñð!˜�ð
&Ø%‘ ��c’ðˆD�ŠIùò[ùò
Møô:ò
&ä—
‘
Ø,¨S¨EÐ1Hܘ6“{�m <ð1ôð# 1™I��S“ ð

&úsÊ+O?Ë'$PÏ1P Ð 6QÑQcó¬—|jj|d«|jj|d«|jj|d«yrd)rÚpoprr r4s raÚ __delitem__z!ImageFileDirectory_v2.__delitem__s>€Ø �
‰
×ј#˜tÔ$Ø �
‰
×ј#˜tÔ$Ø �
‰
×ј#˜tÕ$rkcój—tt|j«t|j«z«Srd)Úiterr+r rr›s raÚ__iter__zImageFileDirectory_v2.__iter__ó$€Ü”C˜Ÿ
™
Ó&¬¨T¯]©]Ó);Ñ;Ó<Ð<rkcóH—tj|j|z|«Srd)rýÚunpackr )rŠrñrïs rarîzImageFileDirectory_v2._unpack
s€Ü�}‰}˜TŸ\™\¨CÑ/°Ó6Ð6rkcóH—tj|j|zg|¢­ŽSrd)rýÚpackr )rŠrñrøs rarõzImageFileDirectory_v2._pack
s€Ü�{‰{˜4Ÿ<™<¨#Ñ-Ð7°Ò7Ð7rkÚHr[r?r]Úbz signed byteÚhz signed shortÚlz signed longr ryÚdÚdoublerÚlong8r có—|Srdr=©rŠrïrðs raÚ load_bytezImageFileDirectory_v2.load_byte!ó€àˆ rkcót—t|t«r t|«}t|t«r t|f«}|Srd)r•ror—rû©rŠrïs raÚ
write_bytez ImageFileDirectory_v2.write_byte%s/€ä �dœKÔ (Ü�t“9ˆDÜ �dœCÔ Ü˜$˜“>ˆD؈ rkr%cóR—|jd«r|dd}|jdd«S)Nórmzlatin-1rÞ)ÚendswithÚdecoderss raÚ load_stringz!ImageFileDirectory_v2.load_string-s*€à �=‰=˜Ô ؘ˜�9ˆDØ�{‰{˜9 iÓ0Ð0rkcó†—t|t«r t|«}t|t«s|j dd«}|dzS)NrErÞrz)r•r—r¢rûrU©rŠr˜s raÚ write_stringz"ImageFileDirectory_v2.write_string3s;€ô �eœSÔ !ܘ“JˆEܘ%¤Ô'Ø—L‘L ¨)Ó4ˆEØ�u‰}Ðrkr+r1c
󨇇—|jt|«dz›d�|«}dˆfd„ Štˆfd„t|ddd…|ddd…«D««S)Nr)r?có(•—‰r||fSt||«Srd©ro©Úarlrðs €raÚcombinez4ImageFileDirectory_v2.load_rational.<locals>.combineBóø€Ù'�A�q�6Ð >¬[¸¸AÓ->Ð >rkc3ó6•K—|]\}}‰||«–—Œy­wrdr=©r_ÚnumÚdenomr†s €rarbz6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>Eóøèø€ÒV©Z¨S°%‘W˜S %×(ÑVùóƒr%r ©r…r—rlr—rŽztuple[int, int] | IFDRational©rîr^rfÚzip©rŠrïrðÚvalsr†s ` @raÚ
load_rationalz#ImageFileDirectory_v2.load_rational<óWù€ð�|‰|œs 4›y¨A™~Ð.¨aÐ0°$Ó7ˆõ ?ôÓV¼3¸tÁCÀaÀC¹yÈ$ÈqÈtÐRSÈtÉ*Ó;UÔVÓVÐVrkcó8‡—djˆfd„|D««S)Nrkc3óX•K—|]!}‰jdgt|d«¢­Ž–—Œ#y­w)Ú2LlÿÿN)rõru©r_rƒrŠs €rarbz7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>Is-øèø€ò
ØDHˆJˆD�J‰J�tÐ ?œo¨d°IÓ>Ö ?ñ
ùsƒ'*rö©rŠrøs` raÚwrite_rationalz$ImageFileDirectory_v2.write_rationalGs!ø€à�x‰xó
ØLRô
ó
ð
rkr/có—|Srdr=rss raÚload_undefinedz$ImageFileDirectory_v2.load_undefinedMrurkcó’—t|t«r t|«}t|t«rt|«j dd«}|S)NrErÞ)r•ror—r¢rUrs raÚwrite_undefinedz%ImageFileDirectory_v2.write_undefinedQs:€ä �eœ[Ô )ܘ“JˆEÜ �eœSÔ !ܘ“J×%Ñ% g¨yÓ9ˆE؈ rké
c
󨇇—|jt|«dz›d�|«}dˆfd„ Štˆfd„t|ddd…|ddd…«D««S)Nr)rncó(•—‰r||fSt||«Srdrƒr„s €rar†z;ImageFileDirectory_v2.load_signed_rational.<locals>.combine_r‡rkc3ó6•K—|]\}}‰||«–—Œy­wrdr=r‰s €rarbz=ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>brŒr�r%r rŽr�r‘s ` @raÚload_signed_rationalz*ImageFileDirectory_v2.load_signed_rationalYr”rkcó8‡—djˆfd„|D««S)Nrkc 3óZ•K—|]"}‰jdgt|dd«¢­Ž–—Œ$y­w)Ú2liÿÿÿi€N)rõr…r˜s €rarbz>ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>fs3øèø€ò
àð
ˆD�J‰J�tÐ PÔ4°T¸9ÀhÓOÖ Pñ
ùsƒ(+rör™s` raÚwrite_signed_rationalz+ImageFileDirectory_v2.write_signed_rationalds!ø€à�x‰xó
àô
ó
ð
rkcó~—|j|«}t|«|k7rd|›dt|«›d�}t|«‚|S)Nz&Corrupt EXIF data. Expecting to read ú bytes but only got z. )Úreadr^ÚOSError)rŠÚfprâÚretrs raÚ _ensure_readz"ImageFileDirectory_v2._ensure_readksN€Ø�g‰g�d‹mˆÜ ˆs‹8�tÒ ð%Ø%) FÐ*>¼sÀ3»x¸jÈðLð
ô˜#“,Р؈
rkc
ó~—|j«|j«|_ |jr"|j d|j |d««n!|j d|j |d««d}t
|«D�]}|jr"|j d|j |d««n!|j d|j |d ««\}}}}tj||j«j}tj|d
«} d |›d |›d
| ›d |›d� }
|j|\} } || z}
|
|jrdndkDrv|j«}|j |jrdnd|«\}|
d|›d|›�z
}
|j#|«t%j&||
«}|j#|«n|d|
}t)|«|
k7r>t+j,d|
›dt)|«›d|›�«tj!|
«�Œš|stj!|
«�Œ³||j.|<||j0|<|
dz
}
|
|
dkDrd|
›d�n
t3|«z
}
tj!|
«�Œ|jr"|j d|j |d««n!|j d|j |d««\|_y#t$rtj!d|
|«Y�Œ‚wxYw#t6$r(}
t+j,t9|
««Yd}
~
yd}
~
wwxYw)Nrr1rkr%rÚHHQ8séÚHHL4sr@Úunknownztag: ú (ú
) - type: ú)z%s - unsupported type %sr)r?z Tag Location: z - Data Location: z/Possibly corrupt EXIF data. Expecting to read r©z. Skipping tag z
- value: rEú<table: ú bytes>)rÚtellrrrîr®Úrangerr'rrrÚgetrßÚKeyErrorÚloggerÚdebugÚseekrÚ
_safe_readr^rXrYr rrrr«r¢)rŠr¬Ú tag_countr{r/r0ÚcountrïÚtagnameÚtypnamerÚ unit_sizer1râÚhereÚoffsets raÚloadzImageFileDirectory_v2.loadus€Ø �
‰
Œ Ø—w‘w“yˆŒ ð= ð—=’=ð— ‘ ˜S $×"3Ñ"3°B¸Ó":Ô;à—\‘\ # t×'8Ñ'8¸¸QÓ'?Ó@Øñ ˆIô
˜9Ó%ó.
"�ð—}’}ð—L‘L ¨$×*;Ñ*;¸BÀÓ*CÔDàŸ™ g¨t×/@Ñ/@ÀÀRÓ/HÓIñ&��S˜% ô #Ÿ/™/¨#¨t¯z©zÓ:×?Ñ?�ÜŸ)™) C¨Ó3�ؘg˜Y b¨¨¨Z¸°yÀÀ3À%ÀqÐI�ðØ)-×)<Ñ)<¸SÑ)AÑ&�I˜wð˜yÑ(�Ø §
¢
™1°1Ò5ØŸ7™7›9�DØ $§ ¡ °D·M²M©SÀsÈDÓ Q‘I�Vؘ_¨T¨FÐ2DÀVÀHÐMÑM�CØ—G‘G˜F”OÜ$×/Ñ/°°DÓ9�DØ—G‘G˜D•Mà  ˜;�Dä�t“9 Ò$Ü—M‘Mð-Ø-1¨FÐ2FÄsÈ4ÃyÀkðR)Ø),¨ð/ôô
—L‘L Ô%ÙáÜ—L‘L Ô%Ùà%)�—
‘
˜cÑ"Ø$'�— ‘ ˜SÑ!à�|Ñ#�ذ4¸"²9˜ $  wÑ/Ä$ÀtÃ*ÑL�ä— ‘ ˜SÖ!ð].
"ðd—=’=ð— ‘ ˜S $×"3Ñ"3°B¸Ó":Ô;à—\‘\ # t×'8Ñ'8¸¸QÓ'?Ó@ñ
ˆT�YøôG òÜ—L‘LÐ!;¸SÀ#ÔFÚðûôPò Ü �M‰Mœ#˜c›(Ô #Ü ûð ús=§DL Ä.K$ÅF#L Ë$ LÌL ÌLÌL Ì L<ÌL7Ì7L<có—|j|jd|jrdnd«z}|jr||jddd«z
}||jr|jdd«z
}|S|jd d«z
}|S)
Nrkré*ÚHHr1rrrBr?)r
rõr©rŠrs raÚ_get_ifhzImageFileDirectory_v2._get_ifh¸s{€Ø�l‰l˜TŸZ™Z¨°4·=²=©RÀbÓIÑIˆØ �=Š=Ø �4—:‘:˜d A qÓ)Ñ )ˆCØ  d§m¢mˆt�z‰z˜#˜rÓ"ÑKˆàˆ
ð:>¿¹ÀCÈÓ9KÑKˆàˆ
rkc ó\—|j|jrdndt|j««}g}|jrdnd}|jrdnd}|t|«t|j«|jrdndzz|zz
}d}t |jj ««D�]H\}}|t k(r t|«}|j|} tjd|| t|««| tjk(xrt|t«}
|
rYt|j!«|¬ «} |j|} | j «D]
\}
}|| |
<Œ | j#|«}n+t|t$«r|n|f} |j&| |g| ¢­Ž}tj(||j*«j,}|
rd
nt/j0| d «}d |›d
|›d|›d
| ›d� }|t|«dk\rdt|«›d�n
t3| «z
}tj|«|
rd}nH| tj4tj6tj8fvr t|«}n t| «}t|«|kr(|j;|| ||j=|d«df«�Œ |j;|| ||j||«|f«|t|«dzdzdzz
}�ŒK|�Œ||\}} }}}|rM|j>| \}}||||j@«D�cgc]}||z‘Œ } }|j&| |g| ¢­Ž}n(|j||jC||«d|z«}|| |||f||<|D]Z\}} }}}tjd|| |t|«t|««||j|jrdnd|| ||«z
}Œ\||j|d«z
}|D]!\}} }}}||z
}t|«dzsŒ|dz
}Œ#|Scc}w)Nrrkr?r1r)r±r@zTag %s, Type: %s, Value: %s)rÚifdr³zsave: r´rµz ) - value: rBr·r¸r rzrkr%rz%s %s %s %s %sr°r²)"rõrr^rÚsortedr&Ú STRIPOFFSETSrr½r¾rrrPr•r#rØrÍÚtobytesrfrèr'rrrr»r¢rTrSrJÚappendÚljustrßrðrî)rŠrÇÚresultÚentriesrñÚfmt_sizeÚ stripoffsetsr/r˜r0r^rÏrøÚifd_tagÚ ifd_valuerïrÃrÄrrÂrâr1rqs rarÒzImageFileDirectory_v2.tobytesÀs €à—‘ 4§=¢=™C°c¼3¸t¿}¹}Ó;MÓNˆà<>ˆà—]’]‰c¨ˆØŸ
š
‘1¨1ˆØÜ �‹Kœ#˜dŸm™mÓ,°d·m²m±ÈÑLÑ LÈxÑ Wñ
ˆðˆ ô! §¡×!4Ñ!4Ó!6Ó7ó" 3‰JˆC�Ø”lÒ"Ü" 7›|� Ø—,‘,˜sÑ#ˆCÜ �L‰LÐ6¸¸SÄ$ÀuÃ+Ô NØœHŸM™MÑ)ÒE¬j¸ÄÓ.EˆFÙÜ+¨D¯M©M«OÀ3ÔG�ØŸ™ sÑ+�Ø*0¯,©,«.ò-Ñ&�G˜YØ#,�C˜’Lð-à—{‘{ 6Ó*‘ä",¨U´EÔ":™ÀÀ�Ø0�t×+Ñ+¨CÑ0°Ð?¸Ò?�ä—o‘o c¨4¯:©:Ó6×;Ñ;ˆGÙ%‘e¬5¯9©9°S¸)Ó+DˆGؘ7˜) 2 c U¨*°W°I¸RÀ¸uÀKÐPˆCØ ´C¸³IÀ²O�Xœc $›i˜[¨Ñ0ÌÈVËÑ TˆCÜ �L‰L˜Ô ñؑ؜Ÿ™¬¯©¼×8JÑ8JÐKÑKܘD› ‘ä˜F› �ä�4‹y˜HÒ$Ø—‘  S¨%°·±¸HÀeÓ1LÈcÐRÖSà—‘  S¨%°·±¸CÀÓ1HÈ$ÐOÔPØœ3˜t›9 q™=¨QÑ.°Ñ2Ñ2’ðE" 3ðJ Ð #Ø+2°<Ñ+@Ñ (ˆC��e˜U DÙØ $× 3Ñ 3°CÑ 8‘
��gÙ29¸$ÀÀdÇoÁoÓ2VÖW¨3˜# ›,ÐW�ÐWØ0�t×+Ñ+¨CÑ0°Ð?¸Ò?‘àŸ
™
 3¨¯ © °S¸%Ó(@ÀÑ(CÀfÑ(LÓM�Ø$'¨¨e°U¸DÐ$@ˆG�LÑ !ð-4ò Ñ (ˆC��e˜U DÜ �L‰LÐ)¨3°°U¼DÀ»KÌÈdËÔ TØ �d—j‘jØŸ=š=‘¨g°s¸CÀÈóñ
‰Fð ð �$—*‘*˜S !Ó$Ñ$ˆð-4ò Ñ (ˆC��e˜U DØ �d‰NˆFÜ�4‹y˜1‹}ؘ%‘‘ð ð
ˆ
ùò-XsÌ6 P)cóæ—|j«dk(r|j|j««|j«}|j|«}|j|«|t |«zSr¬)r¹ÚwriterÍrÒr^)rŠr¬rÇrÕs raÚsavezImageFileDirectory_v2.savesU€Ø
�7‰7‹9˜Š>Ø �H‰H�T—]‘]“_Ô %à—‘“ˆØ—‘˜fÓ%ˆØ
�‰�ÔØœ˜F› Ñ#Ð#rk)sII*NN)rrûriz bytes | Nonerú
int | NonerŽrË)rŽrÏ)r˜rÏrŽr©rŽrËrÍ)rŽzdict[str, Any]rÌ©r/r—rŽr
©r/rÎrŽrÏ©r/r—r˜r
rŽrË)r/r—r˜r
rðrÏrŽrË)r/r—rŽrË©rŽz
Iterator[int])rñr¢rïrûrŽrü)rñr¢rør
rŽrûrú)rïrûrðrÏrŽrû)rïúbytes | int | IFDRationalrŽrû)rïrûrðrÏrŽr¢)r˜zstr | bytes | intrŽrû)rïrûrðrÏrŽz)tuple[tuple[int, int] | IFDRational, ...])rørorŽrû)r˜rärŽrû)r¬ú IO[bytes]râr—rŽrû)r¬rårŽrË)rŽrûrL)rÇr—rŽrû)r¬rårŽr—)7rÑrÒrÓrÔrßÚ__annotations__rèr™rÖrirÇrðÚsetterrr$r)r,r2r5r9r8rbrerîrõÚlistÚmaprrrNrPÚ SIGNED_BYTErOrQÚFLOATrRÚIFDÚLONG8rårtrêrxr}r€r“ršrœržr£r§r®rÈrÍrÒrÝr=rkrarØrØsØ…ñ:ðx:<€NÐ6Ó;Ø57€OÐ2Ó7ð3Ø#Ø ð %!à
ð%!ðð%!ðð %!ð
ó %!ñNÑ/Ó
0€FÙ
Ñ/Ó
0€Fà
ò óð ð×Ñòóðó(óó 
ó<ó ó<ó3ó\ó|%ó
=ó7ó8ñ Ù Ø à—‘  gÐ.Ø—‘  VÐ,Ø×%Ñ% s¨MÐ:Ø×&Ñ&¨¨^Ð<Ø×%Ñ% s¨MÐ:Ø—‘  gÐ.Ø—‘ # xÐ0Ø—‘˜s FÐ+Ø—‘  gÐ.ð
ó
ôñ"�a˜Óóóðñ�aÓòóðñ�a˜Óó1óð1ñ
�aÓòóðñ�a˜Óà.2ðWØðWØ'+ðWà 2òWóðWñ�aÓò
óð
ñ
�a˜Óóóðñ�aÓòóðñ�b˜!Óà.2ðWØðWØ'+ðWà 2òWóðWñ�bÓò
óð
ó óAóFôNô`$rkrÝrÜrÛÚwrite_c󘇗eZdZUdZdˆfd„ Zed„«Zed„«Zded< e dd„«Z
dd„Z dd „Z dd
„Z
dd „Zdd „Zdd
„ZˆxZS)ÚImageFileDirectory_v1aþThis class represents the **legacy** interface to a TIFF tag directory.
Exposes a dictionary interface of the tags in the directory::
ifd = ImageFileDirectory_v1()
ifd[key] = 'Some Data'
ifd.tagtype[key] = TiffTags.ASCII
print(ifd[key])
('Some Data',)
Also contains a dictionary of tag types as read from the tiff image file,
:attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`.
Values are returned as a tuple.
.. deprecated:: 3.0.0
có2•—t‰|�|i|¤Žd|_y)NT)Úsuperr™r)rŠr‹ÚkwargsÚ __class__s €rar™zImageFileDirectory_v1.__init__7sø€Ü
‰Ñ˜$Ð) &Ò)؈Õrkcó—|jSrd)rr›s rarùzImageFileDirectory_v1.<lambda>;s
€ §¡€rkcó—|jSrd)r r›s rarùzImageFileDirectory_v1.<lambda><s
€ D§M¡M€rkzdict[int, int]rcó’—||j¬«}|j|_|j|_|j|_|S)a2Returns an
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
instance with the same data as is contained in the original
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
instance.
:returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
rh)rir rr)ÚclsÚoriginalrÏs raÚfrom_v2zImageFileDirectory_v1.from_v2Bs<€ñ˜Ÿ™Ô)ˆØ×(Ñ(ˆŒ Ø×&Ñ&ˆŒ Ø—=‘=ˆŒØˆ
rkcóΗt|j¬«}t|j«|_t|j«|_t|j
«|_|S)a2Returns an
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
instance with the same data as is contained in the original
:py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
instance.
:returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
rh)rØrir#r rr)rŠrÏs raÚto_v2zImageFileDirectory_v1.to_v2TsG€ô$¨4¯;©;Ô7ˆÜ˜DŸM™MÓ*ˆŒ ܘ4Ÿ<™<Ó(ˆŒ ܘDŸM™MÓ*ˆŒ ؈
rkcó>—||jvxs||jvSrd)rr r4s rar5z"ImageFileDirectory_v1.__contains__er6rkcój—tt|j«t|j«z«Srd)r^r+r rr›s rar,zImageFileDirectory_v1.__len__hr-rkcój—tt|j«t|j«z«Srd)rdr+r rr›s rarezImageFileDirectory_v1.__iter__krfrkcó8—dD]}|j|||«Œy©N)FT)r8)rŠr/r˜rðs rar9z!ImageFileDirectory_v1.__setitem__ns!€Ø'ò 2ˆJØ �M‰M˜#˜u jÕ 1ñ 2rkc ó—||jvrR|j|}|j|}|j|\}}dD]}|j |||||«|«Œ|j|}t |t tf«s|f}|Sr)rr rrßr8r•rfrû)rŠr/rïr0râr1Úlegacyrqs rar2z!ImageFileDirectory_v1.__getitem__rs�€Ø �d—m‘mÑ #Ø—=‘= Ñ%ˆDØ—,‘,˜sÑ#ˆCØ ×/Ñ/°Ñ4‰MˆD�'Ø'ò
H�ؗ
‘
˜c¡7¨4°°vÓ#>ÀÕGð
Hà�m‰m˜CÑ ˆÜ˜#¤¤u˜~Ô.Ø�&ˆC؈
rk)r‹r
rór
rŽrË)rùrØrŽrð)rŽrØrárÌrãrârà)rÑrÒrÓrÔr™rÖÚtagsÚtagdataræÚ classmethodrúrür5r,rer9r2Ú
__classcell__©rôs@rarðrð$s`ø…ñõ$ ñ Ñ.Ó /€DÙÑ1Ó2€GðÓØ!àòóðó"ó"<ó<ó=ó2÷
rkrðcó ‡—eZdZdZdZdZ d dˆfd„
Zdd„Zedd„«Z dd„Z
dd„Z dd „Z dd
„Z
dˆfd „ Zdd „Zdd
„Zdd„Zdd„ZˆxZS)Ú
TiffImageFileÚTIFFz
Adobe TIFFFcó2•—| | t‰|�||«yrd)ròr™)rŠr¬Úfilenamerôs €rar™zTiffImageFile.__init__Œs ø€ñ
Ø5á Ø"ä
‰Ñ˜˜XÕ&rkcó—|j€J‚|jjd«}|ddk(r||jjd«z
}t|«|_|jjx|_|_d|_|j|_g|_ d|_
tjd«tjd|j
«tjdt|««|jd «y)
z#Open the first image in a TIFF fileNr1r%rrmz*** TiffImageFile._open ***z
- __first: %sz - ifh: %sr)r¬rªrØÚtag_v2rÚ_TiffImageFile__firstÚ_TiffImageFile__nextÚ_TiffImageFile__frameÚ_fpÚ
_frame_posÚ _n_framesr½r¾rÚ_seekrÌs raÚ_openzTiffImageFile._open™sÊ€ð�w‰wÐ"Ð"Ð"Ø�g‰g�l‰l˜1‹oˆØ ˆq‰6�RŠ<Ø �4—7‘7—<‘< “?Ñ "ˆCä+¨CÓ0ˆŒ ð&*§[¡[×%5Ñ%5Ð5ˆŒ �t”{؈Œ Ø—7‘7ˆŒØ%'ˆŒØ%)ˆŒä� ‰ Ð2Ô3Ü� ‰ �_ d§l¡lÔ3Ü� ‰ �[¤$ s£)Ô,ð
�
‰
�1�
rkcóR—|j}|€€|j«}|jt|j««|j€/|j|j«dz«|j€Œ/|j |«|j€J‚|jS)Nr )rr¹rr^rr¿)rŠÚcurrent_n_framesÚcurrents raÚn_frameszTiffImageFile.n_frames²s„€àŸ>™>ÐØ Ð #Ø—i‘i“kˆGØ �J‰J”s˜4Ÿ?™?Ó+Ô ,Ø—.‘.Ð(Ø—
‘
˜4Ÿ9™9›;¨™?Ô+ð—.‘.Ñ(à �I‰I�gÔ Ø�~‰~Ð)Ð)Ð)Ø�~‰~Ðrkcó—|j|«sy|j|«|j�[|jj|j
k7s/|jj |j k7s |jrd|_yyy)z%Select a given frame as current imageN)Ú _seek_checkrÚ_imÚimrâÚ
_tile_sizeÚmodeÚreadonly)rŠÚframes rar¿zTiffImageFile.seek¾si€à×Ñ Ô&Ø Ø �
‰
�5ÔØ �8‰8Ð Ø �G‰G�L‰L˜DŸO™OÒ +Ø�w‰w�|‰|˜tŸy™yÒ(Ø�}Š}àˆD�Hðð rkcó|—t|jt«r|jj‚|j|_t |j «|k�rÐ|js
d}t|«‚tjd||j|j|jj««|jdk\r
d}t|«‚|jj|j«|j j|j«tjd|jj««|j j#|j«|j j$|j vrd|_n|j j$|_|jdk(r
|dz|_t |j «dk(r|jdk7|_|xjdz
c_ t |j «|kr�ŒÐ|jj|j |«|j j#|j«t*|j vrF|j t*}t|t,«rt |«dk(r|d}||j.d<nd|j.vr
|j.d=|j1«t2j5|j «x|_|_||_ |j;«y) Nzno more images in TIFF filez9Seeking to frame %s, on frame %s, __next %s, location: %slzUnable to seek to framezLoading tags, location: %srr Úxmp)r•rrÚexr¬r^rrÚEOFErrorr½r¾rr¹rWr¿rÓrrÈrrÚ is_animatedÚXMPrfrHÚ _reload_exifrðrúr/rÏÚ_setup)rŠr#rr%s rarzTiffImageFile._seekÊsD€Ü �d—h‘h¤
Ô .Ø—(‘(—+‘+Ð Ø—(‘(ˆŒä�$—/‘/Ó" eÓ+Ø—;’;Ø3�ܘs“mÐ#Ü �L‰LØKØØ— ‘ Ø— ‘ Ø—‘— ‘ “ô 
ð�{‰{˜eÒ#Ø/�Ü  “oÐ%Ø �G‰G�L‰L˜Ÿ™Ô %Ø �O‰O× "Ñ " 4§;¡;Ô /Ü �L‰LÐ5°t·w±w·|±|³~Ô FØ �K‰K× Ñ ˜TŸW™WÔ %Ø�{‰{×Ñ 4§?¡?Ñ2ð �• à"Ÿk™k×.Ñ.�” Ø�{‰{˜aÒØ!&¨¡�”Ü�4—?‘?Ó# qÒ(Ø#'§;¡;°!Ñ#3�Ô Ø �LŠL˜AÑ �Lô9�$—/‘/Ó" eÔ+ð:
�‰� ‰ �T—_‘_ UÑ+Ô,Ø � ‰ ×јŸ™Ô!Ü �$—+‘+Ñ Ø—+‘+œcÑ"ˆCܘ#œuÔ%¬#¨c«(°aª-ؘ!‘f�Ø"ˆD�I‰I�eÒ Ø
�d—i‘iÑ
Ø— ‘ ˜%Ð Ø ×ÑÔä3×;Ñ;¸D¿K¹KÓHÐHˆŒ�4”8؈Œ Ø � ‰ �
rkcó—|jS)zReturn the current frame number)rr›s rar¹zTiffImageFile.tellûs €à�|‰|Ðrkcó —i}|jjtjj«}|r¼|j d«r«t
|«dk\r�t|dd«}tj|ddzdz «dz} t|d|zd|z«}|d|zd|z|z}d|i||<|tjd|z|zdz «dzd }|j d«rt
|«dk\rŒ�|S#tj$rY|SwxYw)
a5
Returns a dictionary of Photoshop "Image Resource Blocks".
The keys are the image resource ID. For more information, see
https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727
:returns: Photoshop "Image Resource Blocks" in a dictionary.
s8BIMr@r)r-r r%rŸrïN)
rr»r
ÚBaseÚImageResourcesrer^Úi16ÚmathÚceilÚi32rýÚerror)rŠÚblocksrqÚidÚnrârïs raÚget_photoshop_blocksz"TiffImageFile.get_photoshop_blocksÿs€ðˆØ�k‰k�o‰oœhŸm™m×:Ñ:Ó;ˆÙ Ø—.‘. Ô)¬c°#«h¸"ªnܘ˜Q˜q˜“]�Ü—I‘I˜s 1™v¨™z¨QÑ.Ó/°!Ñ3�ðܘs 1 q¡5¨2°©6Ð2Ó3�Dð˜2 ™6 B¨¡F¨T¡MÐ2�Ø$ d˜^��r‘
àœ$Ÿ)™) R¨!¡V¨d¡]°aÑ$7Ó8¸1Ñ<Ð>Ð?�ð—.‘. Ô)¬c°#«h¸"«nðˆ
øô
—|‘|òØð
ˆ
ð
úsÂC6Ã6D
Ä D
cóp•—|jr|jr|j«St‰|�«Srd)ÚtileÚuse_load_libtiffÚ
_load_libtiffròrÈ)rŠrôs €rarÈzTiffImageFile.loads-ø€Ø �9Š9˜×.Ò.Ø×%Ñ%Ó'Ð '܉w‰|‹~Ðrkcó
—|j€Xtj|j«tjj |j |j«|_tjj|«yrd)
rrÚ_decompression_bomb_checkr ÚcoreÚnewr!rrÚ load_preparer›s rarAzTiffImageFile.load_preparesP€Ø �8‰8Ð Ü × +Ñ +¨D¯O©OÔ <Ü—j‘j—n‘n T§Y¡Y°·±Ó@ˆDŒGÜ×Ñ×(Ñ(¨Õ.rkcóf—|jsBd|_|j«}tjD]}||vrŒ|j |«Œt
j|d¬«tjj|jvr&|jtjj=yy)NT)Úin_place) r(Ú!_close_exclusive_fp_after_loadingÚgetexifrÚTAGS_V2_GROUPSÚget_ifdrÚexif_transposer
r.Ú Orientationr)rŠÚexifÚkeys raÚload_endzTiffImageFile.load_end"s�€ð×ÒØ59ˆDÔ 2ð—<‘<“>ˆDÜ×.Ñ.ò
"�ؘd‘?ØØ— ‘ ˜SÕ!ð
"ô
×Ñ ¨tÕ4Ü �=‰=× $Ñ $¨¯ © Ñ 3Ø— ‘ œHŸM™M×5Ñ5Ñ6ð 4rkcóÔ—tjj|«|j«t|j«dk(s
d}t |«‚|jdd}|jdd}|j €J‚ t|j d«xr|j j«}t|j d«r|j j«|r-t|t«sJ‚t|«}||d <t|«}tj|jd
||j«} |j!|j"|«|j&xr
|j( }t|j d «rBt*j-d
«|j/|j j1««\} }
nï|r‘t*j-d«|s|j j3d«t5j6|dt4j8«} |j/d«\} }
t5j6|| t4j:«n\t*j-d«|j j3d«|j/|j j=««\} }
g|_d|_|jA«|r!|j jC«d|_|
dkrd|
›�}t |«‚tjj|«S#t
$rd}Y�Œ]wxYw#t$$r}d }t |«|‚d}~wwxYw)zWOverload method triggered when we detect a compressed tiff
Calls out to libtiffr zNot exactly one tilerr'NÚfilenoÚflushFr%ÚlibtiffzCouldn't set the imageÚgetvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.sfpfpz+don't have fileno or getvalue. just readingzdecoder error )"rrÈrAr^r:r«r¬r×rNrOr•rfrèÚ _getdecoderr!Ú
decoderconfigÚsetimagerrWÚ
_exclusive_fpr(r½r¾r|rQr¿ÚosÚlseekÚSEEK_CURÚSEEK_SETrªr"rLÚclose) rŠrÚextentsr‹r¬Ú args_listÚdecoderÚeÚ
close_self_fpr7ÚerrÚposs rar<zTiffImageFile._load_libtiff3s¯€ô � ‰ ×јÔà ×ÑÔä�4—9‘9‹~ Ò"Ø(ˆCܘ#“,Ð ð—)‘)˜A‘,˜q‘/ˆØ�y‰y˜‰|˜A‰ˆð
�w‰wÐ"Ð"Ð"ð
ܘŸ™ (Ó+Ò@°·±·±Ó0@ˆBô�t—w‘w Ô(Ø—‘—
‘
”ñ ܘd¤EÔ*Ð *Ð*ܘT›
ˆI؈I�a‰LܘÓ#ˆDä×#Ñ# D§I¡I¨y¸$À×@RÑ@RÓSˆð &Ø × Ñ ˜TŸW™W gÔ .ð
×*Ñ*ÒC°4×3CÑ3CÐ/Cˆ
Ü �4—7‘7˜JÔ 'ô
�L‰LÐPÔ QØ—^‘^ D§G¡G×$4Ñ$4Ó$6Ó7‰FˆA‰sÙ
ä �L‰LÐNÔ OÙ Ø—‘— ‘ ˜Q”ô—(‘(˜2˜q¤"§+¡+Ó.ˆCà—^‘^ GÓ,‰FˆAˆsÜ �H‰H�R˜œbŸk™kÕ *ô
�L‰LÐFÔ GØ �G‰G�L‰L˜ŒOà—^‘^ D§G¡G§L¡L£NÓ3‰FˆAˆsàˆŒ ؈Œ
à �
‰
Œá Ø �G‰G�M‰MŒO؈DŒGà �Š7Ø" 3 %Ð(ˆCܘ#“,Ð ä�{‰{×Ñ Ó%Ð%øôGò ð‹Bð ûôò &Ø*ˆCܘ#“, AÐ %ûð &ús+ÂA"L9ÅM Ì9 MÍMÍ M'ÍM"Í"M'c
ó*—d|jvr
d}t|«‚t|jjtd«|_|jjt d«|_|jjtd«}|j
dk(rd}|jjtd«}tjd«tjd|j