+
    UBi
L                   
   ^ RI Ht ^ RI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 ^ RIHt ^ RIHtHt ^ RIHtHtHt ^RIHtHtHtHtHtHt ^RIHt ^R	IHt  ^R
IH!t! ^RI"H#t#H$t$ ^RIH%t% Rt&]&'       d   ^ RI	H't' ^ RIH(t( ^RI)H*t*H+t+H,t, ]PZ                  ! ].4      t/Rt0Rt1Rt2Rt3Rt4^t5Rt6Rt7Rt8Rt9Rt:Rt;Rt<Rt=Rt>Rt?Rt@RtAR tBR!tCR"tDR#tER$tFR%tGR&tHR'tIR(tJR)tKR*tLR+tMR,tNR-tOR.tPR/tQR0tRR1tSR2tTR3tUR4tVR5tWR6tXR7tYR8tZR9t[R:t\R;t]/ ^R<b^R=b^R>b^R?b^R@b^RAb^RBb^RCbRDREbRFRGbRHRIbRJRKbRLRMbRNRObRPRQbRRRSbRTRUbt^]^P                  4        U Uu/ uF  w  rWbK	  	  upp t`/ ]3^ R^RR3Rb]4^ R^RR3Rb]3^ R^RR3Rb]4^ R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^ R^RR3Rb]4^ R^RR3Rb]3^ R^RR3Rb]4^ R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^ R^RR3Rb/ ]4^ R^RR3Rb]3^ R^RR3Rb]4^ R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^ R^RR3Rb]4^ R^RR3Rb]3^ R^RR3Rb]4^ R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3RbC/ ]3^R^RR3Rb]3^ R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^ R^RR3Rb]4^ R^RR3Rb]3^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3RbC/ ]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3RbC/ ]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3RbC/ ]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3RbC/ ]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3Rb]4^R^RR3Rb]3^R^RR3RbC]4^R^RR3R/Cta]b! Rf ]a 4       4      tc. ROtdRg Rh lteRi Rj ltfRk Rl ltg/ th/ tiRm Rn ltj ! Ro Rp]4      tk]
Rq]l]m.]3,          tnRr Rs ltoRt Ru ltpRv Rw ltq]&'       d   ]]r]3,          tsM]ts ! Rx Rq]s4      tt]h]tnh        ]i]tni        ]%P                  ! 4        FG  w  tutv]vP                  RyRz4      tv]x! ]tR{]v 2]h]u,          ^,          4       ]x! ]tR|]v 2]i]u,          4       KI  	  AhAiAuAv ! R} R~]t4      ty]ytz ! R R]P0                  4      t{/ RVRV]3^^RR3bRWRW]3^^RR3bR^R^]3^^R^3bRbRb]3^^RR3bRcRc]3^^R^3bRZR]]3^^RR3bRXRX]3^^RR3bRR]3^^RR3bR[R\]3^^RR3bR_R_]3^^RR3bRaRa]3^^R^ 3bR`R`]3^^R^3bRdRd]3^^RR3bRR]3^^RR3bReRe]3^^RR3bRYRY]4^^RR3bt|R R lt} ! R R]P                  4      tR R lt]EP                  ! ]{EP                  ]{]e4       ]EP                  ! ]{EP                  ]}4       ]EP                  ! ]{EP                  ]4       ]EP
                  ! ]{EP                  RR.4       ]EP                  ! ]{EP                  R4       R# u upp i )    )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   s   IIs   MM   i  i  i  i  i
  i    i  i  i  i  i  i  i(  i-  i1  i2  i;  i=  i@  iB  iC  D  iE  iJ  iR  iS  i[  i  i  i  i  iI  is  ii  i  i  i  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1LI;16I;16BIFF;32FI;32SLARGBRGBARGBXPPACMYKLABc              #  F   "   T F  p\        V^,          4      x  K  	  R# 5i   N)len).0key_tps   & 8/usr/lib/python3.14/site-packages/PIL/TiffImagePlugin.py	<genexpr>rJ     s     AyV#fQi..ys   !c                    V ^8  d   QhRRRR/# )   prefixbytesreturnbool )formats   "rI   __annotate__rS   "  s     . .E .d .    c                >    V P                  \        \        4      4      # N)
startswithtuplePREFIXESrM   s   &rI   _acceptr[   "  s    U8_--rT   c               $    V ^8  d   QhRRRRRR/# )rL   valfloat | Fraction | IFDRationalmax_valintrO   !tuple[IntegralLike, IntegralLike]rQ   )rR   s   "rI   rS   rS   &  s$     % %	'%25%&%rT   c                    \        V 4      ^8  p\        V'       d
   ^V ,          MT 4      P                  V4      pV'       d   VRRR1,          # T# )   N)absIFDRationallimit_rational)r]   r_   invn_ds   &&  rI   _limit_rationalrj   &  sC     c(Q,C
a#g#
.
=
=g
FC3tt9$$rT   c               (    V ^8  d   QhRRRRRRRR/# )rL   r]   rf   r_   r`   min_valrO   ra   rQ   )rR   s   "rI   rS   rS   .  s,      	"-0&rT   c                ^   \        V 4      pVP                  VP                  3p\        R  V 4       4      V8  d   \	        V \        V4      4      p\        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        V4      V8  d"   \	        V^ ,          V^,          ,          V4      pV# )c              3  8   "   T F  p\        V4      x  K  	  R # 5irV   floatrG   is   & rI   rJ   )_limit_signed_rational.<locals>.<genexpr>4  s     
!S588S   c              3  8   "   T F  p\        V4      x  K  	  R # 5irV   ro   rq   s   & rI   rJ   rs   7  s     ,1eAhhrt   )r   	numeratordenominatorminrj   re   rX   max)r]   r_   rl   fracri   	n_d_floats   &&&   rI   _limit_signed_rationalr|   .  s     C=D-1^^T=M=M-MC

!S
!!G+c3w<0,,,,,I
9~ilYq\97CJrT   c                    V ^8  d   QhRRRR/# )rL   opstrrO   r
   rQ   )rR   s   "rI   rS   rS   E  s      # # rT   c                   a  R  V 3R llpV# )c               $    V ^8  d   QhRRRRRR/# )rL   selfrf   argsztuple[float, ...]rO   zbool | float | FractionrQ   )rR   s   "rI   rS   _delegate.<locals>.__annotate__F  s$     - --"3-	 -rT   c                8   < \        V P                  S4      ! V!  # rV   )getattr_val)r   r   r~   s   &*rI   delegate_delegate.<locals>.delegateF  s     tyy"%t,,rT   rQ   )r~   r   s   f rI   	_delegater   E  s    - -
 OrT   c                  |   ] tR tRtRt R2tR3R R llt]R R l4       t]R R l4       t	R	 R
 lt
R R ltR R ltR R ltR R ltR R lt ]! R4      t]! R4      t]! R4      t]! R4      t]! R4      t]! R4      t]! R4      t]! R4      t]! R4      t]! R4      t]! R4      t]! R 4      t]! R!4      t]! R"4      t]! R#4      t]! R$4      t ]! R%4      t!]! R&4      t"]! R'4      t#]! R(4      t$]! R)4      t%]! R*4      t&]! R+4      t']! R,4      t(]! R-4      t)]! R.4      t*]+! ],R/4      '       d   ]! R/4      t-R0t.R1# R0t.R1# )4rf   iN  zImplements 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
c               $    V ^8  d   QhRRRRRR/# )rL   valuer^   rw   r`   rO   NonerQ   )rR   s   "rI   rS   IFDRational.__annotate__\  s$      6  63 6BE 6	 6rT   c                V   V  \        V\        4      '       d6   VP                  V n        VP                  V n        VP                  V n        R# \        V\        4      '       d$   VP                  V n        VP                  V n        M.\        '       d   \        \        V4      V n        MWn        W n        V^ 8X  d   \        R4      V n        R# V^8X  d   \        V4      V n        R# \        V4      V8X  d   \        \        V4      V4      V n        R# \        W,          4      V n        R# )z
:param value: either an integer numerator, a
float/rational/other number, or an IFDRational
:param denominator: Optional integer denominator
Nnan)
isinstancerf   rv   
_numeratorrw   _denominatorr   r   TYPE_CHECKINGr   r   rp   r`   )r   r   rw   s   &&&rI   __init__IFDRational.__init__\  s     	e[))#ooDO % 1 1D

DIeX&&#ooDO % 1 1D}"&|U";"' +!eDIA DIZ5  U[9DI !45DIrT   c                   V ^8  d   QhRR/# )rL   rO   r   rQ   )rR   s   "rI   rS   r     s      < rT   c                	    V P                   # rV   )r   r   s   &rI   rv   IFDRational.numerator~  s    rT   c                   V ^8  d   QhRR/# rL   rO   r`   rQ   )rR   s   "rI   rS   r     s     ! !S !rT   c                	    V P                   # rV   )r   r   s   &rI   rw   IFDRational.denominator  s       rT   c                    V ^8  d   QhRRRR/# )rL   max_denominatorr`   rO   ztuple[IntegralLike, int]rQ   )rR   s   "rI   rS   r     s     * *c *6N *rT   c                    V P                   ^ 8X  d   V P                  V P                   3# \        V P                  \        4      '       g   Q hV P                  P                  V4      pVP                  VP                   3# )zm

:param max_denominator: Integer, the maximum denominator value
:returns: Tuple of (numerator, denominator)
)rw   rv   r   r   r   limit_denominator)r   r   fs   && rI   rg   IFDRational.limit_rational  se     q >>4#3#333$))X....II''8{{AMM))rT   c                   V ^8  d   QhRR/# rL   rO   r   rQ   )rR   s   "rI   rS   r     s     % %# %rT   c                	>    \        \        V P                  4      4      # rV   )r   rp   r   r   s   &rI   __repr__IFDRational.__repr__  s    5#$$rT   c                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r     s     $ $# $rT   c                	6    V P                   P                  4       # rV   )r   __hash__r   s   &rI   r   IFDRational.__hash__  s    yy!!##rT   c                    V ^8  d   QhRRRR/# )rL   otherobjectrO   rP   rQ   )rR   s   "rI   rS   r     s      F t rT   c                	    V P                   p\        V\        4      '       d   VP                   p\        V\        4      '       d   \        V4      pW!8H  # rV   )r   r   rf   rp   )r   r   r]   s   && rI   __eq__IFDRational.__eq__  s?    iie[))JJEeU##*C|rT   c                   V ^8  d   QhRR/# )rL   rO   %list[float | Fraction | IntegralLike]rQ   )rR   s   "rI   rS   r     s     ? ?C ?rT   c                	H    V P                   V P                  V P                  .# rV   )r   r   r   r   s   &rI   __getstate__IFDRational.__getstate__  s    		4??D,=,=>>rT   c                    V ^8  d   QhRRRR/# )rL   stater   rO   r   rQ   )rR   s   "rI   rS   r     s     
) 
)"G 
)D 
)rT   c                	   \         P                  V ^ 4       Vw  r#p\        V\        \        34      '       g   Q hW n        \        '       d   \        \        V4      V n	        MW0n	        \        V\        4      '       g   Q hW@n        R# r   N)rf   r   r   rp   r   r   r   r   r   r   r`   r   )r   r   r   r   r   s   &&   rI   __setstate__IFDRational.__setstate__  sj    T1%).&,$ 12222	="<<DO(O,,,,,(rT   __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__)r   r   r   N)r   r   r   rc   )/__name__
__module____qualname____firstlineno____doc__	__slots__r   propertyrv   rw   rg   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   r   hasattrr   r   __static_attributes__rQ   rT   rI   rf   rf   N  s   
 7I 6D   ! !*%$?
) 	"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& $rT   rf   ImageFileDirectory_v2c               $    V ^8  d   QhRRRRRR/# )rL   idxr`   sizerO   z$Callable[[_LoaderFunc], _LoaderFunc]rQ   )rR   s   "rI   rS   rS     s"     	 	# 	S 	-Q 	rT   c                   a a R  V V3R llpV# )c                    V ^8  d   QhRRRR/# )rL   func_LoaderFuncrO   rQ   )rR   s   "rI   rS   &_register_loader.<locals>.__annotate__  s        rT   c                   < ^RI Hp V P                  P                  R4      '       d'   V P                  R,          P	                  RR4      VS&   SV 3\
        S&   V # )rc   r   load_:   NN_ )r   r   r   rW   replace_load_dispatch)r   r   r   r   s   & rI   	decorator#_register_loader.<locals>.decorator  sM    #==##G,,r*223<E#J"DjsrT   rQ   )r   r   r   s   ff rI   _register_loaderr     s      rT   c                    V ^8  d   QhRRRR/# )rL   r   r`   rO   z2Callable[[Callable[..., Any]], Callable[..., Any]]rQ   )rR   s   "rI   rS   rS     s      # "T rT   c                   a  R  V 3R llpV# )c                    V ^8  d   QhRRRR/# )rL   r   zCallable[..., Any]rO   rQ   )rR   s   "rI   rS   &_register_writer.<locals>.__annotate__  s      * /A rT   c                   < V \         S&   V # rV   )_write_dispatch)r   r   s   &rI   r   #_register_writer.<locals>.decorator  s    #rT   rQ   )r   r   s   f rI   _register_writerr     s      rT   c                    V ^8  d   QhRRRR/# )rL   idx_fmt_nameztuple[int, str, str]rO   r   rQ   )rR   s   "rI   rS   rS     s      "6 4 rT   c                   aa ^RI Hp V w  popW1V&   \        P                  ! RS 24      oRR VV3R lllpSV3\        V&   V3R l\
        V&   R# )rc   r   =c               (    V ^8  d   QhRRRRRRRR/# )	rL   r   r   datarN   
legacy_apirP   rO   tuple[Any, ...]rQ   )rR   s   "rI   rS   %_register_basic.<locals>.__annotate__  s,     ? ?#?+0?>B?	?rT   c                P   < V P                  \        V4      S,           S 2V4      # rV   )_unpackrF   )r   r  r  fmtr   s   &&&rI   basic_handler&_register_basic.<locals>.basic_handler  s)     ||s4yD01#7>>rT   c                >   <a  R P                  VV 3R lV 4       4      # )rT   c              3  H   <"   T F  pSP                  SV4      x  K  	  R # 5irV   )_pack)rG   r   r  r   s   & rI   rJ   4_register_basic.<locals>.<lambda>.<locals>.<genexpr>  s     <VEC''Vs   "join)r   valuesr  s   f*rI   <lambda>!_register_basic.<locals>.<lambda>  s    <V<<rT   NT)r   r   structcalcsizer   r   )r  r   r   namer  r  r   s   &    @@rI   _register_basicr    sS    !NCd#J??Qse9%D? ?
 -N3OCrT   c                     ] tR tRt$ Rt/ tR]R&   / tR]R&   RWR R	 llt]	! R
 4      t
]	! R 4      t]	R R l4       t]P                  R R l4       tR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' lt]! ]! ]]P<                  R(R)3]P>                  R*R+3]P@                  R,R-3]PB                  R.R/3]PD                  R0R13]PF                  R2R33]PH                  R4R53]PJ                  R*R+3]PL                  R6R73.	4      4       ]'! ^^4      RXR8 R9 ll4       t(])! ^4      R: R; l4       t*]'! ^^4      RXR< R= ll4       t+])! ^4      R> R? l4       t,]'! ^^4      RXR@ RA ll4       t-])! ^4      RB RC l4       t.]'! ^^4      RXRD RE ll4       t/])! ^4      RF RG l4       t0]'! ^
^4      RXRH RI ll4       t1])! ^
4      RJ RK l4       t2RL RM lt3RN RO lt4RP RQ lt5RYRR RS llt6RT RU lt7RVt8R# )Zr     a  This 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   zdict[int, Callable[..., Any]]r   Nc               (    V ^8  d   QhRRRRRRRR/# )	rL   ifhrN   rM   zbytes | Nonegroup
int | NonerO   r   rQ   )rR   s   "rI   rS   "ImageFileDirectory_v2.__annotate__G  s2     %! %!%! %! 	%!
 
%!rT   c                ,   \        V4      '       g   R\        V4       R2p\        V4      hVe   TMVR,          V n        V P                  \        8X  d	   RV n        M*V P                  \        8X  d	   RV n        MRp\        V4      hV^,          ^+8H  V n        W0n        / V n	         V P                  4        V P                  '       d!   V P                  RVR	,          4      ^ ,          MV P                  R
VR,          4      ^ ,          V n        RV n        R# )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.
znot a TIFF file (header z not valid)N:NrL   N><znot a TIFF IFDQ:   NNr4   rE   NNF)r[   reprSyntaxError_prefixMM_endianII_bigtiffr   tagtyperesetr
  next_legacy_api)r   r  rM   r   msgs   &&&& rI   r   ImageFileDirectory_v2.__init__G  s      s||,T#YK{CCc""!'!3vR<<2DL\\RDL"Cc""A"
')'

 }}} LLc"g&q)c3r7+A. 		
 !rT   c                	    V P                   # rV   )r+  r   s   &rI   r  ImageFileDirectory_v2.<lambda>n      4<<rT   c                	    V P                   # rV   )_offsetr   s   &rI   r  r7  o  r8  rT   c                   V ^8  d   QhRR/# )rL   rO   rP   rQ   )rR   s   "rI   rS   r"  r  s        D  rT   c                	    V P                   # rV   r3  r   s   &rI   r   ImageFileDirectory_v2.legacy_apiq  s    rT   c                    V ^8  d   QhRRRR/# )rL   r   rP   rO   r   rQ   )rR   s   "rI   rS   r"  v  s        rT   c                	    R p\        V4      h)z"Not allowing setting of legacy api)	Exception)r   r   r4  s   && rI   r  r>  u  s    2nrT   c                   V ^8  d   QhRR/# rL   rO   r   rQ   )rR   s   "rI   rS   r"  z  s     ( (t (rT   c                	Z    / V n         / V n        / V n        / V n        R V n        R V n        R # rV   )_tags_v1_tags_v2_tagdatar0  _nextr:  r   s   &rI   r1  ImageFileDirectory_v2.resetz  s,    (*(**,
#'rT   c                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r"    s       rT   c                	*    \        \        V 4      4      # rV   )r   dictr   s   &rI   __str__ImageFileDirectory_v2.__str__  s    4:rT   c                   V ^8  d   QhRR/# )rL   rO   zdict[str, Any]rQ   )rR   s   "rI   rS   r"    s     	
 	
~ 	
rT   c                    V P                  4        UUu/ uF0  w  r\        P                  ! WP                  4      P                  VbK2  	  upp# u uppi )zi
:returns: dict of name|key: value

Returns the complete tag dictionary, with named tags where possible.
)itemsr   lookupr   r  )r   coder   s   &  rI   namedImageFileDirectory_v2.named  sI      $zz|
+ OOD**-22E9+
 	
 
s   6Ac                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r"         < < <rT   c                	r    \        \        V P                  4      \        V P                  4      ,          4      # rV   )rF   setrG  rF  r   s   &rI   __len__ImageFileDirectory_v2.__len__  $    3t}}%DMM(::;;rT   c                    V ^8  d   QhRRRR/# rL   tagr`   rO   r
   rQ   )rR   s   "rI   rS   r"    s     	 	s 	s 	rT   c                	N   WP                   9  dQ   V P                  V,          pV P                  V,          pV P                  V,          w  rEV! WV P                  4      W&   V P                   V,          pV P                  '       d    \        V\        \        34      '       g   V3pV# rV   )rF  rG  r0  r   r  r   rX   rN   )r   r_  r  typr   handlerr]   s   &&     rI   __getitem__!ImageFileDirectory_v2.__getitem__  s    mm#==%D,,s#C //4MDDOO<DImmC ???:cE5>#B#B&C
rT   c                    V ^8  d   QhRRRR/# rL   r_  r   rO   rP   rQ   )rR   s   "rI   rS   r"         < < <4 <rT   c                	J    WP                   9   ;'       g    WP                  9   # rV   )rF  rG  r   r_  s   &&rI   __contains__"ImageFileDirectory_v2.__contains__      mm#;;smm';;rT   c               $    V ^8  d   QhRRRRRR/# rL   r_  r`   r   r
   rO   r   rQ   )rR   s   "rI   rS   r"    s!     3 3s 33 34 3rT   c                	>    V P                  WV P                  4       R # rV   )_setitemr  )r   r_  r   s   &&&rI   __setitem__!ImageFileDirectory_v2.__setitem__  s    c$//2rT   c               (    V ^8  d   QhRRRRRRRR/# )	rL   r_  r`   r   r
   r  rP   rO   r   rQ   )rR   s   "rI   rS   r"    s.     \ \C \ \ \$ \rT   c           	     	  a \         \        \        3p\        P                  ! WP
                  4      o\        W$4      '       d   V.MTpWP                  9  Ed4   SP                  '       d   SP                  V P                  V&   EM\        P                  V P                  V&   \        ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       dh   V FB  p\        V\        4      '       g   Q hV^ 8  g   K$  \        P                  V P                  V&    EMi	  \        P                  V P                  V&   EMH\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       Ed   RpRpRp	V Ff  p\        V\        4      '       g   Q hV'       d   ^ Tu;8:  d   R8  g   M RpV'       d   RTu;8  d   R8  g   M RpV	'       g   K[  V^ 8  g   Kd  Rp	Kh  	  V'       d    \        P                  V P                  V&   EMtV'       d    \        P                   V P                  V&   EMMV	'       d    \        P"                  V P                  V&   EM&\        P$                  V P                  V&   EM\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   \        P&                  V P                  V&   M\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   \        P(                  V P                  V&   MW\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   \        P*                  V P                  V&   V P                  V,          \        P                  8X  d;   V Uu. uF-  p\        V\        4      '       d   VP-                  RR4      MTNK/  	  ppMXV P                  V,          \        P                  8X  d3   V Uu. uF&  p\        V\        4      '       d   \/        V4      MTNK(  	  ppV P                  V,          \        P"                  8H  ;'       d    \        V\0        4      p
V
'       g3   \2        ;QJ d    . V3R	 lV 4       F  NK  	  5M! V3R	 lV 4       4      pV'       d   V P4                  MV P6                  pV
'       g   SP8                  ^8X  gM   V P                  V,          \        P*                  8X  g'   SP8                  fc   \;        V4      ^8X  dS   V'       gK   V'       d:   V P                  V,          \        P                  \        P                  39   d   V3p Vw  W&   R
# W[V&   R
# u upi u upi   \<         d6    \>        P@                  ! RT R\;        T4       R24       T^ ,          Y&    R
# i ; i)c              3  B   "   T F  p\        V\        4      x  K  	  R # 5irV   )r   rf   rG   vs   & rI   rJ   1ImageFileDirectory_v2._setitem.<locals>.<genexpr>  s     B6az![116   FTc              3  B   "   T F  p\        V\        4      x  K  	  R # 5irV   )r   r`   rv  s   & rI   rJ   rx         <VAs++Vry  c              3  B   "   T F  p\        V\        4      x  K  	  R # 5irV   )r   rp   rv  s   & rI   rJ   rx         >v!Au--vry  c              3  B   "   T F  p\        V\        4      x  K  	  R # 5irV   )r   r   rv  s   & rI   rJ   rx    r{  ry  c              3  B   "   T F  p\        V\        4      x  K  	  R # 5irV   )r   rN   rv  s   & rI   rJ   rx    r}  ry  asciir   c              3  v   <"   T F.  p\        V\        4      '       d   SP                  V4      MTx  K0  	  R # 5irV   )r   r   cvt_enum)rG   r   infos   & rI   rJ   rx    s2      #E )35#(>(>e$EI#s   69NzMetadata Warning, tag z had too many entries: z, expected 1r   i   i )!r   rN   r   r   rR  r   r   r0  type	UNDEFINEDallrf   SIGNED_RATIONALRATIONALr`   SHORTSIGNED_SHORTLONGSIGNED_LONGDOUBLEASCIIBYTEencoderp   rL  rX   rE  rF  lengthrF   
ValueErrorwarningswarn)r   r_  r   r  	basetypesr  rw  shortsigned_shortlongis_ifddestr  s   &&&&        @rI   rp  ImageFileDirectory_v2._setitem  s*   UC(	sJJ/&u88%ell"yyy$(IIS!$,$6$6S!3B6B333B6BBB#)![9999q5080H0HDLL-!	 $ -5,=,=S)S<V<SSS<V<<< E#'LD#)!S1111 !q.5.$)E'A1E1E+0L4AE#(D $ ,4NNS)%,4,A,AS),4MMS),4,@,@S)S>v>SSS>v>>>(0DLL%S<V<SSS<V<<<(0DLL%S>v>SSS>v>>>(0DLL%<< 2 22  A 1;1c0B0B),I  F \\#("3"33EKLV*Q"4"4eAh!;VFLc"hmm3PP
648PU #UU # F
 !+t}} [[A||C HMM1#Fq(8 dll3/!!((4  !&% I[
 M:  &,SE1H6{m<1 #1I	&s   73V,VV <WWc                    V ^8  d   QhRRRR/# )rL   r_  r`   rO   r   rQ   )rR   s   "rI   rS   r"    s     % %s %t %rT   c                	    V P                   P                  VR 4       V P                  P                  VR 4       V P                  P                  VR 4       R # rV   )rF  poprE  rG  ri  s   &&rI   __delitem__!ImageFileDirectory_v2.__delitem__  s>    #t$#t$#t$rT   c                   V ^8  d   QhRR/# rL   rO   zIterator[int]rQ   )rR   s   "rI   rS   r"         = =- =rT   c                	r    \        \        V P                  4      \        V P                  4      ,          4      # rV   )iterrY  rG  rF  r   s   &rI   __iter__ImageFileDirectory_v2.__iter__  $    C&T]]);;<<rT   c               $    V ^8  d   QhRRRRRR/# )rL   r  r   r  rN   rO   r  rQ   )rR   s   "rI   rS   r"  
  s!     7 73 7e 7 7rT   c                	R    \         P                  ! V P                  V,           V4      # rV   )r  unpackr-  )r   r  r  s   &&&rI   r
  ImageFileDirectory_v2._unpack
  s    }}T\\C/66rT   c               $    V ^8  d   QhRRRRRR/# )rL   r  r   r  r
   rO   rN   rQ   )rR   s   "rI   rS   r"    s!     8 8 8s 8u 8rT   c                	T    \         P                  ! V P                  V,           .VO5!  # rV   )r  packr-  )r   r  r  s   &&*rI   r  ImageFileDirectory_v2._pack  s    {{4<<#-777rT   Hr  r4   r  bzsigned bytehzsigned shortlzsigned longr   rp   ddoubler&  long8c               $    V ^8  d   QhRRRRRR/# rL   r  rN   r  rP   rO   rQ   )rR   s   "rI   rS   r"  "  s!      e   rT   c                	    V# rV   rQ   r   r  r  s   &&&rI   	load_byteImageFileDirectory_v2.load_byte!      rT   c                    V ^8  d   QhRRRR/# )rL   r  bytes | int | IFDRationalrO   rN   rQ   )rR   s   "rI   rS   r"  &  s      8 U rT   c                	    \        V\        4      '       d   \        V4      p\        V\        4      '       d   \        V34      pV# rV   )r   rf   r`   rN   r   r  s   &&rI   
write_byte ImageFileDirectory_v2.write_byte%  s5    dK((t9DdC  $>DrT   c               $    V ^8  d   QhRRRRRR/# )rL   r  rN   r  rP   rO   r   rQ   )rR   s   "rI   rS   r"  .  s!     1 1 14 13 1rT   c                	^    VP                  R 4      '       d   VRR pVP                  RR4      # )    Nzlatin-1r   rd   )endswithdecoder  s   &&&rI   load_string!ImageFileDirectory_v2.load_string-  s-    ==9D{{9i00rT   c                    V ^8  d   QhRRRR/# )rL   r   zstr | bytes | intrO   rN   rQ   )rR   s   "rI   rS   r"  4  s      "3  rT   c                	    \        V\        4      '       d   \        V4      p\        V\        4      '       g   VP	                  R R4      pVR,           # )r  r   r  )r   r`   r   rN   r  r   r   s   &&rI   write_string"ImageFileDirectory_v2.write_string3  sA     eS!!JE%''LL)4Eu}rT   c               $    V ^8  d   QhRRRRRR/# rL   r  rN   r  rP   rO   z)tuple[tuple[int, int] | IFDRational, ...]rQ   )rR   s   "rI   rS   r"  =  )     W WW'+W	2WrT   c                	&  aa V P                  \        V4      ^,           R2V4      pR V3R llo\        ;QJ d/    . V3R l\        VR,          VR,          4       4       F  NK  	  5# ! V3R l\        VR,          VR,          4       4       4      # )rE   r4   c               $    V ^8  d   QhRRRRRR/# rL   ar`   r  rO   ztuple[int, int] | IFDRationalrQ   )rR   s   "rI   rS   9ImageFileDirectory_v2.load_rational.<locals>.__annotate__B  "     	? 	?s 	?s 	?'D 	?rT   c                0   < S'       d   W3# \        W4      # rV   rf   r  r  r  s   &&rI   combine4ImageFileDirectory_v2.load_rational.<locals>.combineB      'A6>[->>rT   c              3  8   <"   T F  w  rS! W4      x  K  	  R # 5irV   rQ   rG   numdenomr  s   &  rI   rJ   6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>E       V;UZSWS((;U   NNrL   rc   NrL   r
  rF   rX   zipr   r  r  valsr  s   &&f @rI   load_rational#ImageFileDirectory_v2.load_rational<  q     ||s4yA~.a0$7	? 	? uV3tCy$t*;UVuVuV3tCy$t*;UVVVrT   c                    V ^8  d   QhRRRR/# rL   r  rf   rO   rN   rQ   )rR   s   "rI   rS   r"  H  s     
 
k 
e 
rT   c                	:   a  R P                  V 3R lV 4       4      # )rT   c              3  `   <"   T F#  pSP                   ! R .\        VR4      O5!  x  K%  	  R# 5i)2LNl    )r  rj   rG   rz   r   s   & rI   rJ   7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>I  s,      
LRDDJJt?odI>??Fs   +.r  r   r  s   f*rI   write_rational$ImageFileDirectory_v2.write_rationalG  s!    xx 
LR
 
 	
rT   c               $    V ^8  d   QhRRRRRR/# r  rQ   )rR   s   "rI   rS   r"  N  s!      5 d e rT   c                	    V# rV   rQ   r  s   &&&rI   load_undefined$ImageFileDirectory_v2.load_undefinedM  r  rT   c                    V ^8  d   QhRRRR/# )rL   r   r  rO   rN   rQ   )rR   s   "rI   rS   r"  R  s      %> 5 rT   c                	    \        V\        4      '       d   \        V4      p\        V\        4      '       d   \        V4      P	                  R R4      pV# )r  r   )r   rf   r`   r   r  r  s   &&rI   write_undefined%ImageFileDirectory_v2.write_undefinedQ  s@    e[))JEeS!!J%%gy9ErT   c               $    V ^8  d   QhRRRRRR/# r  rQ   )rR   s   "rI   rS   r"  Z  r  rT   c                	&  aa V P                  \        V4      ^,           R2V4      pR V3R llo\        ;QJ d/    . V3R l\        VR,          VR,          4       4       F  NK  	  5# ! V3R l\        VR,          VR,          4       4       4      # )rE   r  c               $    V ^8  d   QhRRRRRR/# r  rQ   )rR   s   "rI   rS   @ImageFileDirectory_v2.load_signed_rational.<locals>.__annotate___  r  rT   c                0   < S'       d   W3# \        W4      # rV   r  r  s   &&rI   r  ;ImageFileDirectory_v2.load_signed_rational.<locals>.combine_  r  rT   c              3  8   <"   T F  w  rS! W4      x  K  	  R # 5irV   rQ   r  s   &  rI   rJ   =ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>b  r  r  r  r  r  r  s   &&f @rI   load_signed_rational*ImageFileDirectory_v2.load_signed_rationalY  r  rT   c                    V ^8  d   QhRRRR/# r  rQ   )rR   s   "rI   rS   r"  e  s     
 
[ 
U 
rT   c                	:   a  R P                  V 3R lV 4       4      # )rT   c           	   3  b   <"   T F$  pSP                   ! R .\        VRR4      O5!  x  K&  	  R# 5i)2lNii   )r  r|   r  s   & rI   rJ   >ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>f  s3      
 JJtP4T9hOPPs   ,/r  r  s   f*rI   write_signed_rational+ImageFileDirectory_v2.write_signed_rationald  s!    xx 

 
 	
rT   c               $    V ^8  d   QhRRRRRR/# )rL   fp	IO[bytes]r   r`   rO   rN   rQ   )rR   s   "rI   rS   r"  k  s!      y   rT   c                	    VP                  V4      p\        V4      V8w  d   R V R\        V4       R2p\        V4      hV# )z&Corrupt EXIF data.  Expecting to read  bytes but only got z. )readrF   OSError)r   r  r   retr4  s   &&&  rI   _ensure_read"ImageFileDirectory_v2._ensure_readk  sN    ggdms8t%%)F*>s3xjL  #,
rT   c                    V ^8  d   QhRRRR/# )rL   r  r  rO   r   rQ   )rR   s   "rI   rS   r"  u  s     A Ay AT ArT   c           
     	   V P                  4        VP                  4       V n         V P                  '       d#   V P	                  R V P                  V^4      4      M!V P	                  RV P                  V^4      4      ^ ,          p\        V4       EF2  pV P                  '       d#   V P	                  RV P                  V^4      4      M!V P	                  RV P                  V^4      4      w  rErg\        P                  ! W@P                  4      P                  p\        P                  ! VR4      p	RV RV RV	 RV R2	p
 V P                  V,          w  rYk,          pYP                  '       d   ^M^8  d   TP                  4       pT P	                  T P                  '       d   R MR
T4      w  pT
RT RT 2,          p
TP#                  T4       \$        P&                  ! Y4      pTP#                  T4       MTRT p\)        T4      T8w  dA   \*        P,                  ! RT R\)        T4       RT 24       \        P!                  T
4       EK  T'       g   \        P!                  T
4       EK  YpP.                  T&   YPP0                  T&   T
R,          p
Y^ 8  d   RT R2M
\3        T4      ,          p
\        P!                  T
4       EK5  	  V P                  '       d#   V P	                  R V P                  V^4      4      M!V P	                  R
V P                  V^4      4      w  V n        R#   \         d    \        P!                  R	Y4        EK  i ; i  \6         d+   p
\*        P,                  ! \9        T
4      4        Rp
?
R# Rp
?
ii ; i)r&  r  HHQ8sHHL4sunknownztag:  (
) - type: )z%s - unsupported type %sr4   z Tag Location: z - Data Location: Nz/Possibly corrupt EXIF data.  Expecting to read r  z. Skipping tag z
 - value: <table:  bytes>)r1  tellr:  r/  r
  r  ranger   rR  r   r  r   getr   KeyErrorloggerdebugseekr   
_safe_readrF   r  r  rG  r0  r)  r2  r  r   )r   r  	tag_countrr   r_  ra  countr  tagnametypnamer4  	unit_sizerb  r   hereoffsets   &&              rI   loadImageFileDirectory_v2.loadu  s   

wwy=	 === S$"3"3B":;\\#t'8'8Q'?@	I
 9% }}} LL$*;*;B*CDgt/@/@R/HI &% #//#zz:??))C3gYbZy3%qI)-)<)<S)A&I (115779D $DMMMSsD QIV_TF2DVHMMCGGFO$//9DGGDM;Dt9$MM--1F2Fs4yk R)),/
 LL%LL%%)c"$'S!|#"9$w/$t*LS!] &d === S$"3"3B":;\\#t'8'8Q'?@ TYG   LL!;SFP  	MM#c(#	sW   M DM =L%AM !B/M BM AM %!MM 
MM NM>>Nc                   V ^8  d   QhRR/# )rL   rO   rN   rQ   )rR   s   "rI   rS   r"    s      % rT   c                	R   V P                   T P                  R V P                  '       d   ^+M^*4      ,           pV P                  '       d   WP                  R^^ 4      ,          pYP                  '       d   V P                  R^4      ,          pV# V P                  R^4      ,          pV# )r  HHr&  r4   )r+  r  r/  r   r  s   & rI   _get_ifhImageFileDirectory_v2._get_ifh  s}    llTZZ4===RbII===::dAq))Cmmmtzz#r"K
 :>C9KK
rT   c                    V ^8  d   QhRRRR/# )rL   r5  r`   rO   rN   rQ   )rR   s   "rI   rS   r"    s     N Nc N% NrT   c                		   T P                  V P                  '       d   R MR\        V P                  4      4      p. pV P                  '       d   R MRpV P                  '       d   ^M^pT\        V4      \        V P                  4      V P                  '       d   ^M^,          ,           V,           ,          pRp\	        V P                  P                  4       4       EF  w  rxV\        8X  d   \        V4      pV P                  V,          p	\        P                  RWy\        V4      4       V	\        P                  8H  ;'       d    \        V\        4      p
V
'       d^   \        V P!                  4       VR7      pV P                  V,          pVP                  4        F	  w  rWV&   K  	  VP#                  V4      pM6\        V\$        4      '       d   TMV3pV P&                  V	,          ! V .VO5!  p\        P(                  ! WpP*                  4      P,                  pV
'       d   RM\.        P0                  ! V	R4      pRV R	V R
V R	V	 R2	pT\        V4      ^8  d   R\        V4       R2M
\3        V4      ,          p\        P                  V4       V
'       d   ^pMKV	\        P4                  \        P6                  \        P8                  39   d   \        V4      pM\        V4      p\        V4      V8:  d)   VP;                  WyVVP=                  VR4      R34       EKC  VP;                  WyVV P                  WA4      V34       V\        V4      ^,           ^,          ^,          ,          pEK  	  Ve   W6,          w  ryprV'       d\   V P>                  V	,          w  ppV! WV P@                  4       Uu. uF  pVV,           NK  	  ppV P&                  V	,          ! V .VO5!  pM.V P                  W@PC                  WH4      ^ ,          V,           4      pWyVW3W6&   V F`  w  rypr\        P                  RWyV\        V4      \        V4      4       Y P                  V P                  '       d   RMRWyVV4      ,          pKb  	  W P                  V^ 4      ,          pV F2  w  ryprW/,          p\        V4      ^,          '       g   K)  VR,          pK4  	  V# u upi )r&  r  r4   NzTag %s, Type: %s, Value: %s)r   ifdr!  zsave: r"  r#  z) - value: r%  r&  r  rT   z%s %s %s %s %sr  r   )"r  r/  rF   rF  sortedrQ  STRIPOFFSETSr0  r+  r,  r)  r   r  r   rL  r   r<  tobytesrX   r   rR  r   r  r   r)  r   r  r  r  appendljustr   r  r
  )r   r5  resultentriesr  fmt_sizestripoffsetsr_  r   ra  r  r@  r  ifd_tag	ifd_valuer  r1  r2  r4  r0  r   rb  r]   s   &&                     rI   rC  ImageFileDirectory_v2.tobytes  s   4===Cc3t}};MN<>]]]c11K#dmm,dmmmLLxW	
  !!4!4!67JCl""7|,,s#CLL6$u+NHMM)EEj.EF+DMMO3Gs+*0,,.&G#,L +9{{6*",UE":":++C0??ooc::6;;G%e599S)+DG7)2cU*WIRuKPCCIOXc$i[0VTCLL 8J8JKKD	F4yH$%He1LcRS%C1H$OP3t9q=Q.22E 8J #+2+@(CeU $ 3 3C 8g29$doo2VW2V3#,,2VW++C0??

3S(@(Cf(LM$'eU$@G! -4(CeULL)3UDKdTjj===gs F -4 	**S!$$ -4(CeUNF4y1}}% -4
 - Xs   1Sc                    V ^8  d   QhRRRR/# )rL   r  r  rO   r`   rQ   )rR   s   "rI   rS   r"    s     $ $y $S $rT   c                	    VP                  4       ^ 8X  d    VP                  V P                  4       4       VP                  4       pV P                  V4      pVP                  V4       V\	        V4      ,           # r   )r'  writer<  rC  rF   )r   r  r5  rF  s   &&  rI   saveImageFileDirectory_v2.save  sU    779>HHT]]_%f%
F##rT   )r/  r-  r3  rH  r:  r+  rG  rE  rF  r   r2  r0  )s   II*     NNr  rO  )9r   r   r   r   r   r   __annotations__r   r   r   rM   r5  r  setterr1  rM  rT  rZ  rc  rj  rq  rp  r  r  r
  r  listmapr  r   r  r  SIGNED_BYTEr  r  FLOATr  IFDLONG8r   r  r   r  r  r  r  r  r  r   r
  r  r  r6  r<  rC  rQ  r   rQ   rT   rI   r   r     sp   :x :<N6;57O27%!N /0F/0F     (	
<	<3\|%
=78 	g.V,%%sM:&&^<%%sM:g.#x0sF+g.
	
" a  a  a1 1
 a  aW W a
 

 a  a  b!W W b
 
AFN`$ $rT   r   r   r   write_c                     a  ] tR tRt$ RtR V 3R llt]! R 4      t]! R 4      tR]	R&    ]
R	 R
 l4       tR R ltR R ltR R ltR R ltR R ltR R ltRtV ;t# )ImageFileDirectory_v1i$  a  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               $    V ^8  d   QhRRRRRR/# )rL   r   r
   kwargsrO   r   rQ   )rR   s   "rI   rS   "ImageFileDirectory_v1.__annotate__7  s!        c  S  T  rT   c                	6   < \         SV `  ! V/ VB  R V n        R# TN)superr   r3  )r   r   r_  	__class__s   &*,rI   r   ImageFileDirectory_v1.__init__7  s    $)&)rT   c                	    V P                   # rV   )rE  r   s   &rI   r  ImageFileDirectory_v1.<lambda>;  s    rT   c                	    V P                   # rV   )rG  r   s   &rI   r  rg  <  s    DMMrT   zdict[int, int]r0  c                    V ^8  d   QhRRRR/# )rL   originalr   rO   r]  rQ   )rR   s   "rI   rS   r`  C  s      4 9N rT   c                    V ! VP                   R7      pVP                  Vn        VP                  Vn        VP                  Vn        V# )a  Returns 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`

rZ   )rM   rG  r0  r2  )clsrj  r@  s   && rI   from_v2ImageFileDirectory_v1.from_v2B  s<     )((&&==
rT   c                   V ^8  d   QhRR/# )rL   rO   r   rQ   )rR   s   "rI   rS   r`  T  s      , rT   c                    \        V P                  R7      p\        V P                  4      Vn        \        V P                  4      Vn        \        V P
                  4      Vn        V# )a  Returns 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`

rZ   )r   rM   rL  rG  r0  rF  )r   r@  s   & rI   to_v2ImageFileDirectory_v1.to_v2T  sG     $4;;7DMM*4<<(DMM*
rT   c                    V ^8  d   QhRRRR/# rf  rQ   )rR   s   "rI   rS   r`  e  rg  rT   c                	J    WP                   9   ;'       g    WP                  9   # rV   )rE  rG  ri  s   &&rI   rj  "ImageFileDirectory_v1.__contains__e  rl  rT   c                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r`  h  rW  rT   c                	r    \        \        V P                  4      \        V P                  4      ,          4      # rV   )rF   rY  rG  rE  r   s   &rI   rZ  ImageFileDirectory_v1.__len__h  r\  rT   c                   V ^8  d   QhRR/# r  rQ   )rR   s   "rI   rS   r`  k  r  rT   c                	r    \        \        V P                  4      \        V P                  4      ,          4      # rV   )r  rY  rG  rE  r   s   &rI   r  ImageFileDirectory_v1.__iter__k  r  rT   c               $    V ^8  d   QhRRRRRR/# rn  rQ   )rR   s   "rI   rS   r`  n  s!     2 2s 23 24 2rT   c                	<    R F  pV P                  WV4       K  	  R# )FNFT)rp  )r   r_  r   r  s   &&& rI   rq  !ImageFileDirectory_v1.__setitem__n  s    'JMM#j1 (rT   c                    V ^8  d   QhRRRR/# r^  rQ   )rR   s   "rI   rS   r`  r  s     
 
s 
s 
rT   c           	     	D   WP                   9  d^   V P                  V,          pV P                  V,          pV P                  V,          w  rER F  pV P	                  W! WV4      V4       K  	  V P                   V,          p\        V\        \        34      '       g   V3pV# )Fr~  )rE  rG  r0  r   rp  r   rX   rN   )r   r_  r  ra  r   rb  legacyr]   s   &&      rI   rc  !ImageFileDirectory_v1.__getitem__r  s    mm#==%D,,s#C //4MD'c74v#>G (mmC #u~..&C
rT   r=  )r   r   r   r   r   r   r   tagstagdatarS  classmethodrm  rq  rj  rZ  r  rq  rc  r   __classcell__rd  s   @rI   r]  r]  $  sj    $    ./D12G ! ""<<=2
 
rT   r]  c                     a  ] tR tRtRtRtRtRR V 3R llltR R lt]	R	 R
 l4       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 R ltR R ltRtV ;t# )TiffImageFilei  TIFFz
Adobe TIFFFc               $    V ^8  d   QhRRRRRR/# )rL   r  StrOrBytesPath | IO[bytes]filenamezstr | bytes | NonerO   r   rQ   )rR   s   "rI   rS   TiffImageFile.__annotate__  s(     ' '&' %' 
	'rT   c                	2   < V   V   \         SV `  W4       R # rV   )rc  r   )r   r  r  rd  s   &&&rI   r   TiffImageFile.__init__  s    
 	5"&rT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r    s      t rT   c                4   V P                   f   Q hV P                   P                  ^4      pV^,          ^+8X  d"   WP                   P                  ^4      ,          p\        V4      V n        V P                  P                  ;V n        V n        RV n        V P                   V n        . V n	        RV n
        \        P                  R4       \        P                  RV P
                  4       \        P                  R\        V4      4       V P                  ^ 4       R# )z#Open the first image in a TIFF fileNz*** TiffImageFile._open ***z- __first: %sz	- ifh: %srd   )r  r  r   tag_v2r2  _TiffImageFile__first_TiffImageFile__next_TiffImageFile__frame_fp
_frame_pos	_n_framesr+  r,  r)  _seekr;  s   & rI   _openTiffImageFile._open  s     ww"""ggll1oq6R<77<<?"C+C0 &*[[%5%55t{77%'%)23_dll3[$s), 	

1rT   c                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r    s     	 	# 	rT   c                	P   V P                   pVf|   V P                  4       pV P                  \        V P                  4      4       V P                   f)   V P                  V P                  4       ^,           4       K6  V P                  V4       V P                   f   Q hV P                   # rV   )r  r'  r  rF   r  r-  )r   current_n_framescurrents   &  rI   n_framesTiffImageFile.n_frames  sx    >>#iikGJJs4??+,..(

499;?+IIg~~)))~~rT   c                    V ^8  d   QhRRRR/# rL   framer`   rO   r   rQ   )rR   s   "rI   rS   r    s     
 
# 
$ 
rT   c                D   V P                  V4      '       g   R# V P                  V4       V P                  eh   V P                  P                  V P
                  8w  g8   V P                  P                  V P                  8w  g   V P                  '       d
   RV n        R# R# R# )z%Select a given frame as current imageN)_seek_checkr  _imimr   
_tile_sizemodereadonly)r   r  s   &&rI   r-  TiffImageFile.seek  sn    &&

588GGLLDOO+ww||tyy(}}}DH   rT   c                    V ^8  d   QhRRRR/# r  rQ   )rR   s   "rI   rS   r    s     / /3 /4 /rT   c                	   \        V P                  \        4      '       d   V P                  P                  hV P                  V n        \        V P                  4      V8:  Ed   V P                  '       g   R p\        V4      h\        P                  RVV P                  V P                  V P                  P                  4       4       V P                  R8  d   Rp\        V4      hV P                  P                  V P                  4       V P                  P                  V P                  4       \        P                  RV P                  P                  4       4       V P                   P#                  V P                  4       V P                   P$                  V P                  9   d	   ^ V n        MV P                   P$                  V n        V P                  ^ 8X  d   V^,           V n        \        V P                  4      ^8X  d   V P                  ^ 8g  V n        V ;P                  ^,          un        EK  V P                  P                  V P                  V,          4       V P                   P#                  V P                  4       \*        V P                   9   dV   V P                   \*        ,          p\        V\,        4      '       d   \        V4      ^8X  d
   V^ ,          pW0P.                  R&   MRV P.                  9   d   V P.                  R V P1                  4        \2        P5                  V P                   4      ;V n        V n        Wn        V P;                  4        R# )zno more images in TIFF filez9Seeking to frame %s, on frame %s, __next %s, location: %szUnable to seek to framezLoading tags, location: %sxmpNl            )r   r  r   exr  rF   r  r  EOFErrorr+  r,  r  r'  r  r-  rD  r  r6  r2  r  is_animatedXMPrX   r  _reload_exifr]  rm  r_  r@  _setup)r   r  r4  r  s   &&  rI   r  TiffImageFile._seek  s5   dhh..((++(($//"e+;;;3sm#LLK {{e#/ o%GGLL%OO""4;;/LL5tww||~FKKTWW%{{4??2  "kk..{{a!&4??#q(#';;!#3 LLALLT__U+,!$++++c"C#u%%#c(a-!f"IIedii		% 3;;DKKHH48rT   c                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r    s      c rT   c                    V P                   # )zReturn the current frame number)r  r   s   &rI   r'  TiffImageFile.tell  s    ||rT   c                   V ^8  d   QhRR/# )rL   rO   zdict[int, dict[str, bytes]]rQ   )rR   s   "rI   rS   r    s      &A rT   c                   / pV P                   P                  \        P                  P                  4      pV'       d   VP                  R4      '       d   \        VR,          4      p\        P                  ! V^,          ^,           ^,          4      ^,          p\        V^V,           ^
V,            4      pV^
V,           ^
V,           V,            pRV/W&   V\        P                  ! ^
V,           V,           ^,          4      ^,          R pK  V# )a  
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.
s   8BIM:rE      Nr  N)
r  r)  r   BaseImageResourcesrW   i16mathceili32)r   blocksr]   idnr   r  s   &      rI   get_photoshop_blocks"TiffImageFile.get_photoshop_blocks  s     kkoohmm::;..))S]IIs1vzQ./!33q1urAv./26BFTM2$d^
$))R!Vd]a$781<>?rT   c                   V ^8  d   QhRR/# rL   rO   zImage.core.PixelAccess | NonerQ   )rR   s   "rI   rS   r    s      3 rT   c                	   < V P                   '       d#   V P                  '       d   V P                  4       # \        SV `  4       # rV   )tileuse_load_libtiff_load_libtiffrc  r6  )r   rd  s   &rI   r6  TiffImageFile.load  s2    999...%%''w|~rT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r    s     / /d /rT   c                	   V P                   fZ   \        P                  ! V P                  4       \        P                  P                  V P                  V P                  4      V n        \        P                  P                  V 4       R # rV   )
r  r   _decompression_bomb_checkr  corenewr  r  r   load_preparer   s   &rI   r  TiffImageFile.load_prepare  sP    88++DOO<jjnnTYY@DG((.rT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r    s     7 7$ 7rT   c                	   V P                   '       gH   R V n        V P                  4       p\        P                   F  pW!9  d   K  VP                  V4       K  	  \        P                  ! V R R7       \        P                  P                  V P                  9   d(   V P                  \        P                  P                   R# R# )T)in_placeN)r  !_close_exclusive_fp_after_loadinggetexifr   TAGS_V2_GROUPSget_ifdr   exif_transposer   r  Orientationr  )r   exifkeys   &  rI   load_endTiffImageFile.load_end  s     59D2 <<>D..?S! /
 	t4==$$3HMM556 4rT   c                   V ^8  d   QhRR/# r  rQ   )rR   s   "rI   rS   r  0  s     _& _&< _&rT   c                v   \         P                   P                  V 4       V P                  4        \        V P                  4      ^8X  g   Rp\        V4      hV P                  ^ ,          ^,          pV P                  ^ ,          ^,          pV P                  f   Q h \        V P                  R4      ;'       d    V P                  P                  4       p\        V P                  R4      '       d   V P                  P                  4        T'       d3   \        T\        4      '       g   Q h\        T4      pYE^&   \        T4      p\         P                  ! T P                  RY0P                  4      p TP!                  T P"                  T4       T P&                  ;'       d    T P(                  '       * p\        T P                  R4      '       dB   \*        P-                  R	4       TP/                  T P                  P1                  4       4      w  rMT'       d   \*        P-                  R
4       T'       g   T P                  P3                  ^ 4       \4        P6                  ! T^ \4        P8                  4      pTP/                  R4      w  r\4        P6                  ! YK\4        P:                  4       M[\*        P-                  R4       T P                  P3                  ^ 4       TP/                  T P                  P=                  4       4      w  r. T n        ^ T n        T PA                  4        T'       d"   T P                  PC                  4        RT n        T
^ 8  d   RT
 2p\        T4      h\         P                   P                  T 4      #   \
         d    Rp ELi ; i  \$         d   pRp\        T4      ThRp?ii ; i)zOOverload method triggered when we detect a compressed tiff
Calls out to libtiffzNot exactly one tileNfilenoflushFlibtiffzCouldn't set the imagegetvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.s   fpfpz+don't have fileno or getvalue. just readingzdecoder error )"r   r6  r  rF   r  r  r  r   r  r  r   rX   rU  _getdecoderr  decoderconfigsetimager  r  _exclusive_fpr  r+  r,  r  r  r-  oslseekSEEK_CURSEEK_SETr  r  r  close)r   r4  extentsr   r  	args_listdecodereclose_self_fpr  errposs   &           rI   r  TiffImageFile._load_libtiff0  s    	499~"(C#, ))A,q/yy|A
 ww"""
	(+@@0@B tww(( dE****T
IaL#D##DIIy$@R@RS	&TWWg.
 **CC43C3C/C477J'' LLPQ^^DGG$4$4$67FAsLLNO Q ((2q"++.C^^G,FAHHRbkk* LLFGGGLLO^^DGGLLN3FA	GGMMODG7"3%(C#,{{%%G  	 B	  	&*C#,A%	&s1   N 9AN 1N NNN8%N33N8c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r    s     oH oH oHrT   c                   RV P                   9   d   Rp\        V4      h\        V P                   P                  \        ^4      ,          V n        V P                   P                  \        ^4      V n        V P                   P                  \        ^ 4      pV P
                  R8X  d   ^pV P                   P                  \        ^4      p\        P                  R4       \        P                  RV P
                  4       \        P                  RV4       \        P                  RV P                  4       \        P                  RV4       \        P                  R	V P                   P                  \        4      4        V P                   \        ,          pV P                   \        ,          p\#        T\$        4      '       d   \#        T\$        4      '       g   Rp\'        T4      hYE3T n        T P                   P                  \*        P,                  P.                  4      pTR*9   d
   YT3T n        MYE3T n        \        P                  RT P2                  4       T P                   P                  \4        R+4      p\7        T4      ^8  d'   \9        T4      \;        T4      u;8X  d   ^8X  d   M MR+pT P                   P                  \<        R+4      p	T P                   P                  \>        R,4      p
TR-9   d   ^pMT^8X  d   ^pM^pT\7        T
4      ,          p\7        T	4      pT P                   P                  \@        T P
                  R8X  d
   TR.9   d   ^M^4      pT\B        8  d$   \        PE                  RT4       Rp\G        T4      hY8  d   T	RT p	MY8  d   T^8X  d	   Y,          p	\7        T	4      T8w  d   Rp\G        T4      hT P                   PH                  TTTT	T
3p\        P                  RT4        \J        T,          w  T n&        p\        P                  RT4       \        P                  RT PN                  4       T P
                  T PP                  R&   T P                   P                  \R        ^4      pT P                   P                  \T        ^4      pT'       d   T'       d   T P                   P                  \V        4      pT^8X  d   TT3T PP                  R&   M_T^8X  d!   TR,          TR,          3T PP                  R&   M8Tf$   TT3T PP                  R&   TT3T PP                  R&   MTT3T PP                  R&   ^ ;p;pp. T n,        \Z        ;'       g    T P
                  R8g  T n.        T P\                  '       Ed   T^8X  dJ   TR,          R+,           TR,          ,           p\        P                  RT4       \J        T,          w  T n&        pT^8X  d&   T P
                  R8X  d   T P                  ^8X  d   RpM-TR8X  d   R pM#TP_                  R/4      '       d   TRR0 R!,           pYP
                  R"T P                   P`                  3pT PX                  Pc                  \d        Pf                  ! R#^ ^ YE3^ T4      4       EMJ\h        T P                   9   g   \j        T P                   9   Ed   \h        T P                   9   d;   T P                   \h        ,          pT P                   P                  \l        T4      pTpMT P                   \j        ,          pT P                   P                  \n        4      pT P                   P                  \p        4      p\#        T\$        4      '       d   \#        T\$        4      '       g   R$p\'        T4      hTpTT8X  d   TT8X  d   T P                  ^8w  d   TR0R pT F  pTT,           T8  d   T\s        T	4      ,          ^,          pM^ pTpT P                  ^8X  d   TT,          pTT,          pT\%        T4      ^3pT PX                  Pc                  \d        Pf                  ! T P
                  TT\;        TT,           T4      \;        TT,           T4      3TT4      4       TT,          pTT8  g   K  ^ TT,           ppTT8  g   K  ^ pT^,          pK  	  M"\        P                  R%4       Rp\G        T4      h\t        T P                   9   d%   T P                   \t        ,          T PP                  R&&   T PN                  R19   dd   T P                   \v        ,           Uu. uF  p\y        TR',          4      NK  	  p p\z        P|                  ! R(R)P                  T 4      4      T n@        R# R#   \         d   pR
p\!        T4      ThRp?ii ; i  \         d)   p\        P                  R4       Rp\G        T4      ThRp?ii ; iu upi )2z-Setup this image object based on current tagsi  z+Windows Media Photo files not yet supportedr'   z*** Summary ***z- compression: %sz - photometric_interpretation: %sz- planar_configuration: %sz- fill_order: %sz- YCbCr subsampling: %szMissing dimensionsNzInvalid dimensionsz
- size: %sz.More samples per pixel than can be decoded: %sz#Invalid value for samples per pixelzunknown data organizationzformat key: %sz- unsupported formatzunknown pixel modez- raw mode: %sz- pil mode: %scompressiondpigRQ@
resolutionr"   :N   Nr(  r(   r<   r5   I;16NNFr  zInvalid tile dimensionsz- unsupported data organizationicc_profiler   RGB;LrT   )r   r     r'  r   rQ   )rL   r  r'  )rL   r  )z;16Bz;16Lrd   r?   r@   )Ar  r  COMPRESSION_INFOr)  COMPRESSION_compressionPLANAR_CONFIGURATION_planar_configurationPHOTOMETRIC_INTERPRETATION	FILLORDERr+  r,  YCBCRSUBSAMPLING
IMAGEWIDTHIMAGELENGTHr*  	TypeErrorr   r`   r  r  r   r  r  _sizer   SAMPLEFORMATrF   ry   rx   BITSPERSAMPLEEXTRASAMPLESSAMPLESPERPIXELMAX_SAMPLESPERPIXELerrorr*  rM   	OPEN_INFO_moder  r  X_RESOLUTIONY_RESOLUTIONRESOLUTION_UNITr  READ_LIBTIFFr  r  r5  rD  r   _TilerB  TILEOFFSETSROWSPERSTRIP	TILEWIDTH
TILELENGTHsum
ICCPROFILECOLORMAPr   r   r"   r  palette)!r   r4  photo	fillorderxsizeysizer  orientationsample_format	bps_tupleextra_tuple	bps_countbps_actual_countsamples_per_pixelr  rawmodexresyresresunitxylayerr  offsetsr  w	tilewidthr5  stridetile_rawmoder   r  r(  s!   &                                rI   r  TiffImageFile._setup  s    T[[ ?C#, -T[[__[!-LM%)[[__5I1%M"  :A> +EKKOOIq1	&'($*;*;<7?143M3MN'3.@P0QR	(KK
+EKK,E %%%Zs-C-C&CS/!,kkoohmm&?&?@,&DJDJ\499-d;}!c-&8C<N&SRS&S !MKKOOM48	kkoolB7IIaZIIS%%	y> KKOO""k1evoA1

 22LL@BS 8Cc""/ ""4#45I16F!6K "5Iy>..-Cc"" KK
 	%s+	*"+C.DJ 	%w/%tyy1#'#4#4		- {{|Q/{{|Q/Dkkooo6G!|$($<		% A$(4K#=		% $($<		%  +/*		,'*.*		,' A	 , J J0A0AU0J    A~"gns2w.-s3 '0n#
G 
%%/..!3
 F"!!!"233!#2,, ++UDKK4F4FGAIIY__YAu8LaQRSTT[[(K4;;,Ft{{*++l3KKOOL%8 ++k2 KKOOI6	KKOOJ/!)S11As9K9K3C$S/)Eza5jT-G-G1-L!"#,!q55=Y/!3FF&--2#*5>Li'F$c&k15		  OO))As1q5%0#a!eU2CD	 Q:a!eqAEz
7 ": LL:;-Cc"" $'+{{:'>DIIm$ 99#-1[[-BC-Br!s(|-BGC'++GSXXg5FGDL $[  	(&CC.a'	(P  	*LL/0&Cc")	*L Ds6   <.f 8f" 5gfff"g-#gg)__first__frame__nextr  r
  r  r  r  r  r  r  r  r  r  r@  r  r  r(  r  r_  r  r  r  rV   )r   r   r   r   rR   format_descriptionr  r   r  r   r  r-  r  r'  r  r6  r  r  r  r  r   r  r  s   @rI   r  r    su    F%(-%' '2 	 	
/b* 
/7"_&BoH oHrT   r  I;16LYCbCrc               (    V ^8  d   QhRRRRRRRR/# 	rL   r  zImage.Imager  r  r  zstr | bytesrO   r   rQ   )rR   s   "rI   rS   rS     s.     q- q-k q-y q-K q-D q-rT   c                    \         V P                  ,          w  r4rVrxT P                  pT P
                  p\        TR7      pTP                  R4      '       d   RTn         TR,          pTf   RpMTR8X  d   R	pM	TR
8X  d   Rp\        ;'       g    TR8g  p^T\        &   T P                  ^ ,          T\        &   T P                  ^,          T\         &   RT9   d   TR,          pMQRT9   dI   TR,          p\        T\"        4      '       d)   \$        P&                  ! 4       pTP)                  T4       TpM/ p\*        P-                  R\/        T4      4       \        T\0        4      '       d   TP3                  4       pT F  p\        T\$        P&                  4      '       d+   T\4        P6                  9   d   TP9                  T4      TT&   MTP                  T4      TT&    TP:                  T,          TP:                  T&   K  	  / p\?        T R4      '       d   T P@                  P3                  4       p/ TC\C        T R/ 4      Cp\D        \F        3 F  pTT9   g   K  TT K  	  \?        T R4      '       d   \H        \J        \L        \N        \P        \R        3 F  pTT PT                  9   g   K  T\N        8X  dF   T PT                  P:                  T,          \4        PV                  \4        PX                  39  d   TT Kf  T PT                  T,          TT&   T PT                  P:                  T,          TP:                  T&   K  	  TP                  RT P                  P                  R4      4      pT'       d
   TT\Z        &   \\        R3\J        R3\L        R3\J        R3\L        R3\H        R3\^        R3\`        R3\b        R3\d        R33
 F  w  ppTT9   g   K  TT,          TT&   K  	  TP                  R4      pT'       d*   ^T\H        &   T^ ,          T\J        &   T^,          T\L        &   TR48w  d+   Y}\f        &   \i        T4      ^8w  d   \i        T4      T\j        &   Te	   Y\l        &   T^8w  d	   Ym\F        &   \n        T9  d
   Y]\n        &   MT P                  R59   d   T\n        ,          ^ 8X  d   T P                  R8X  dy   T Pq                  4       pTP)                  4       pTeT   \s        TPt                  4       F8  p\s        TPv                  4       F  pTTT3,          ^8X  d   ^ M^TTT3&   K  	  K:  	  Tp M\x        Pz                  ! T 4      p T P                  R69   d   T P|                  P                  RR4      p. p\i        T4      ^,          p\s        ^4       FS  p TTTT ,          TT ^,           ,            U!u. uF  p!T!R,          NK  	  up!,          pT^ .RT,
          ,          ,          pKU  	  TT\        &   T\        ,          T\         ,          p#p"\i        T4      T"T^ ,          ,          ^,           ^,          ,          p$\        T9  dx   T'       d\   TP                  R \        4      p%T$^ 8X  d   ^M\        T%T$,          T#4      p&TR	8X  d"   \        T&^,           ^,          ^,          T#4      p&MT#p&T&^ 8X  d   ^p&T&T\        &   T$^ 8X  d   ^MT$T\        ,          ,          p'T#T\        ,          ,           ^,
          T\        ,          ,          p(T'R78  d"   \4        P                  TP:                  \        &   T'3T(^,
          ,          T$T#,          T'T(^,
          ,          ,
          3,           T\        &   \        \s        ^ T'T(,          T'4      4      T\        &   \        P                  T^4      T\        &   T P                  R!8X  d9   \        R8\        R9/P                  4        F  w  pp)TP                  TT)4       K  	  \        \        \        \        .p*T'       Ed4   R"T9   dX   TR",          p+\        T+\        4      '       d   T+^ 8  g   T+^d8  d   R#p
\        T
4      hTR	8w  d   R$p
\        T
4      hT+T\        &   \*        P-                  R%4       \*        P-                  R&\        TP                  4       4      4       ^ p,\?        TR'4      '       d#    TP                  ^ 4       TP                  4       p,/ p-T*\        \        \        \        \        \        .,          p*\f        T^ ,          /p.\        P                  ! TP                  4       TP                  4       4       EF  w  pp/T\4        P                  9  d   T\4        P6                  9   d   \4        P                  T-T&   MTTP:                  9   d   TP:                  T,          T-T&   M\        T/\        \        \        \"        34      '       gQ   \        T/\        4      '       dh   \        ;QJ d    R( T/ 4       F  '       d   K   R)M	  RM! R( T/ 4       4      '       d.   \4        P                  ! T4      P                  p0T0'       d   T0T-T&   TT.9  g   EK  TT*9  g   EK$  \        T/\        4      '       d    T/P                  R*R+4      R,,           T.T&   EKY  \        T/\        4      '       d   \        T/4      T.T&   EK  T/T.T&   EK  	  \F        T.9   d7   \i        T.\F        ,          4      ^8X  d   T.\F        ,          ^ ,          T.\F        &   \*        P-                  R-\        T.P                  4       4      4       T P                  R:9   d   R.p\/        T.P                  4       4      p1T1P                  4        Y>T,TT1T-3p2\$        P                  ! T P                  R/T2T4      p3T3P                  T P|                  R;T P                  ,           4        T3P                  \        P                  4      R0,          w  p4p5T,'       g   TP                  T54       T4'       g   KM   T4^ 8  d   R1T4 R22p
\        T
4      hMaT* F  pTT K  	  TP                  T4      p6\        P                  ! T T\        P                  ! RR;T P                  ,           T6TT$^34      .4       R3T9   d   \        T R3T4       R# R#   \         d"   p	R T P                   R2p
\        T
4      T	hRp	?	ii ; i  \         d8    T P                  P                  R4      p\        T\        4      '       d   Rp ELi ; i  \<         d     EK  i ; iu up!i   \        P                   d     ELzi ; i)<zcannot write mode z as TIFFNrZ   big_tiffTr  r"   r'   r(   r-   r)   tiffinfor  zTiffinfo Keys: %sr_  r  r  descriptionr   x_resolutiony_resolutionresolution_unitsoftware	date_timeartist	copyrightr  r3   r<   r  r   
strip_sizerF  qualityzInvalid quality settingz5quality setting only supported for 'jpeg' compressionzSaving using libtiff encoderz	Items: %sr  c              3  X   "   T F   p\        V\        \        \        34      x  K"  	  R # 5irV   )r   r`   rp   rf   rv  s   & rI   rJ   _save.<locals>.<genexpr>  s!     TeJq3{*CDDes   (*Fr  r   r  zConverted items: %sr  r  :rc   NNzencoder error z when writing image file_debug_multipager   )r3   r4   r  r   )rc   rc   )r         rY  rZ  rY  )r5   r6   rE  r   r   )q	SAVE_INFOr  r*  r  encoderinfoencoderconfigr   r)  r/  r  r   r`   WRITE_LIBTIFFr  r   r  r  rN   r   Exifr6  r+  r,  rU  r]  rq  r   r  r  r0  rA  r   r_  r   EXIFIFDr  r  r  r  IPTC_NAA_CHUNKPHOTOSHOP_CHUNKr  r  r  r  r&  IMAGEDESCRIPTIONSOFTWARE	DATE_TIMEARTIST	COPYRIGHTr  rF   r  r  r  copyr(  heightwidthr   invertr  
getpaletter'  r"  
STRIP_SIZErx   r  STRIPBYTECOUNTSrX   rB  COMPRESSION_INFO_REVr	  r  REFERENCEBLACKWHITErQ  
setdefaultr#  r$  r!  TILEBYTECOUNTSr  JPEGQUALITYrA  r-  r  ioUnsupportedOperationOSUBFILETYPETRANSFERFUNCTIONSUBIFD	itertoolschainLIBTIFF_CORErZ  rp   r   r  rR  r  r  rf   sort_getencoderr  r   MAXBLOCKrP  rQ  _saver   setattr)7r  r  r  r4  rM   r)  rR   bitsextrar  r4  r]  r^  r@  r  r  r  r  r  
legacy_ifdsupplied_tagsr_  iccr  r  inverted_impxr9  r8  lutcolormapcolorsrr   rw  r<  r  r>  im_strip_sizerows_per_stripstrip_byte_countsstrips_per_imagedefault_value	blocklistrU  r  typesattsr   r  r  r  encodererrcoder  r5  s7   &&&                                                    rI   r  r    s1   "6?6H3
 ..K$$M
v
.Cz""!-0 		#		&*33{e3G !"CggajC
OwwqzC [ :&	;	6"dE""::<DIIdOD
LL$d4j1$-..zz|dEJJ''C83J3J,J||C(CHxx}CH	#||C0CKK  Jr5VV\\^
?z?WR2%>?M 		 -c" r8 
C bii.(RYY->->s-CMM&&L . &c*!yy~CH')yy'8'8'=CKK$!
( //-])C
DC
J 
=)	|$	|$	~&	~&	+,	:	K 		K 	T ;"4(CH //%
 C
 OFLFLt|!Mt9>#&t9C !L{"L!,*/&'	J	3'A#Ba#G77c>'')K!!#B~{112A";#4#45(*1a4C1S1a4 6 3 !$B	ww+eeug.SQqA#fqj6QU;K*LM*LQS*LMMHsV|,,H  !Hz?C,qAY1tAw;?q01F3'OOL*EM"(A+Q3}7NPQ3RNf$!$~'9a&?1%Da!HNQN*L#q[fs<7H.HC--1c,6GGE!'/}}O$-/3Ca3GH
&*:Q*>??L C a"%557HIC ,//Q?C	ww'f!=#
 %'#C NN3.	# J^DIw#!),Ggs++w{gm/ o%f$M o%&C34[&"562x  
iik
  	
 	
	 !.tAw7 $//#))+}7J7J7LMJC
 (///(111!)E#JCKK'!$S!1E#JUC'?@@ue,,TeTTeTTT#??3/44D%)c
$3i#7eS)) %Wi @5 HDI{33 %eDI %DI/ N2 4C\(:$;q$@!%l!3A!6D*F4::<,@A 7700G
 DJJL!		3$>##BGGY=I 01#NN9+=+=>rBMGTwQ;"7)+CDC#, 
 CC "__UFRWW$4fwPQ>RST	
 [(&, )Y	  ""277)84cl!"  ggkk-0k3''K	T  		| Nt ** sS   r<  	s+  t0/u!u <s(s##s(+>t-,t-0u ?u u! u!c                     ] tR tRt. R<Ot0 R=mtR>R R lltR R ltR R ltR R	 lt	R
 R lt
R R ltR R lt]P                  3R R lltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! lt]R" R# l4       tR?R$ R% lltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 lt R2 R3 lt!R4 R5 lt"R6 R7 lt#R@R8 R9 llt$R:t%R;# )AAppendingTiffWriteri  c               $    V ^8  d   QhRRRRRR/# )rL   fnr  r  rP   rO   r   rQ   )rR   s   "rI   rS    AppendingTiffWriter.__annotate__  s"      5 D T rT   c                	n   V  \        V4      '       d*   Wn        R V n         \        Y'       d   RMR4      V n        M'\        \        \        ,          V4      V n        RV n        V P                  P                  4       V n
        V P                  4        R#   \
         d    \        TR4      T n         LOi ; i)Tzw+bzr+bFN)r   r  close_fpopenr   r  r   r	   rN   r'  	beginningsetup)r   r  r  s   &&&rI   r   AppendingTiffWriter.__init__  s    2;;I DM)b3%E: "U)R(DF!DM

  )b%)s   B B43B4c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r    s      t rT   c                	V   V P                   P                  V P                  \        P                  4       R V n        ^ V n        V P                   P                  ^4      ;V n        pRV9   V n	        V'       g
   RV n
        R # RV n
        V\        9  d   Rp\        V4      hT P                  VP                  \        4      '       d   RMR4       V P                  '       d+   V P                   P                  ^\        P                   4       V P#                  4        V P%                  4        R # )N   +TFzInvalid TIFF file headerr%  r$  )r   r-  r  r  r  whereToWriteNewIFDOffsetoffsetOfNewPager  IIMMr/  isFirstrY   RuntimeError	setEndianrW   r.  r  skipIFDsgoToEnd)r   iimmr4  s   &  rI   r  AppendingTiffWriter.setup  s    DNNBKK048% 66;;q>)	D4DLx,Cs##doob11ss;===FFKK2;;'rT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r    s      $ rT   c                	   V P                   '       d   R # V P                  P                  V P                  4       V P                  P	                  ^4      pV'       g   R # WP
                  8w  d   Rp\        V4      hV P                  '       d+   V P                  P                  ^\        P                  4       T P                  V P                  '       d   ^M^4      pW0P                  ,          pV P                  f   Q hV P                  P                  V P                  4       T P                  Y0P                  '       d   ^M^4       V P                  P                  V4       V P                  4        R # )Nz1IIMM of new page doesn't match IIMM of first page)r  r   r-  r  r  r  r  r/  r  r  _readr  _writefixIFD)r   r  r4  
ifd_offsets   &   rI   finalizeAppendingTiffWriter.finalize  s    <<< 	D(()vv{{1~99ECs##===FFKK2;;'ZZT]]]:
***
,,888D112J]]]:JrT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r  5  s      $ rT   c                	F    V P                  4        V P                  4        R # rV   )r  r  r   s   &rI   newFrameAppendingTiffWriter.newFrame5  s    

rT   c                   V ^8  d   QhRR/# )rL   rO   r  rQ   )rR   s   "rI   rS   r  :  s      . rT   c                	    V # rV   rQ   r   s   &rI   	__enter__AppendingTiffWriter.__enter__:  s    rT   c                    V ^8  d   QhRRRR/# )rL   r   r   rO   r   rQ   )rR   s   "rI   rS   r  =  s      f  rT   c                	N    V P                   '       d   V P                  4        R # R # rV   )r  r  )r   r   s   &*rI   __exit__AppendingTiffWriter.__exit__=  s    ===JJL rT   c                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r  A  s     4 4c 4rT   c                	X    V P                   P                  4       V P                  ,
          # rV   )r   r'  r  r   s   &rI   r'  AppendingTiffWriter.tellA  s    vv{{}t3333rT   c               $    V ^8  d   QhRRRRRR/# )rL   r5  r`   whencerO   rQ   )rR   s   "rI   rS   r  D  s!      3  c rT   c                    V\         P                  8X  d   WP                  ,          pV P                  P	                  W4       V P                  4       # )z
:param offset: Distance to seek.
:param whence: Whether the distance is relative to the start,
               end or current position.
:returns: The resulting position, relative to the start.
)r  r  r  r   r-  r'  )r   r5  r  s   &&&rI   r-  AppendingTiffWriter.seekD  s:     R[[ ***FF#yy{rT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r  Q  s     - - -rT   c                	X   V P                   P                  ^ \        P                  4       V P                   P	                  4       p^V^,          ,
          p^ Tu;8  d   ^8  d(   M M$V P                   P                  \        V4      4       V P                   P	                  4       V n        R# r   )r   r-  r  SEEK_ENDr'  rP  rN   r  )r   r  	pad_bytess   &  rI   r  AppendingTiffWriter.goToEndQ  sj    Ar{{#ffkkm rM	y2FFLLy)*#vv{{}rT   c                    V ^8  d   QhRRRR/# )rL   endianr   rO   r   rQ   )rR   s   "rI   rS   r  [  s     N N N NrT   c                	    Wn         V P                    R 2V n        V P                    R2V n        V P                    R2V P                  '       d   RMR ,           V n        R# )r4   r  r:  r&  N)r  longFmtshortFmtr/  	tagFormat)r   r  s   &&rI   r  AppendingTiffWriter.setEndian[  sL    ++a(;;-q) KK=+dmmmsMrT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r  a  s     O O$ OrT   c                	    T P                  V P                  '       d   ^M^4      pV^ 8X  d=   V P                  P                  4       V P                  '       d   ^M^,
          V n        R# V P                  P                  V4       T P                  V P                  '       d   ^M^4      pV P                  P                  Y P                  '       d   ^M^,          \        P                  4       K  rb  )r  r/  r   r'  r  r-  r  r  )r   r  num_tagss   &  rI   r  AppendingTiffWriter.skipIFDsa  s    AA>JQ04AA1- FFKK
#zzt}}}!!<HFFKK---BR@"++NrT   c                    V ^8  d   QhRRRR/# )rL   r  r   rO   r`   rQ   )rR   s   "rI   rS   r  n  s     " "& " "rT   c               	8    V P                   P                  V4      # rV   )r   rP  r  s   ""rI   rP  AppendingTiffWriter.writen  s    vv||D!!rT   c                    V ^8  d   QhRRRR/# )rL   
field_sizer`   rO   r   rQ   )rR   s   "rI   rS   r  q  s     $ $s $s $rT   c                	Z     ^R^R^R/V,          #   \          d    Rp\        T4      hi ; i)rL   r  r4   r&  zoffset is not supported)r*  r  )r   r  r4  s   && rI   _fmtAppendingTiffWriter._fmtq  s>    	$sAsAs+J77 	$+Cs##	$s    *c                    V ^8  d   QhRRRR/# )rL   r  r`   rO   rQ   )rR   s   "rI   rS   r  x  s        rT   c                	    \         P                  ! V P                  V P                  V4      ,           V P                  P                  V4      4      w  pV# rV   )r  r  r  r  r   r  )r   r  r   s   && rI   r  AppendingTiffWriter._readx  s=    ==KK$))J//Z1H
 rT   c                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r  ~  s      3 rT   c                	$    V P                  ^4      # rL   r  r   s   &rI   	readShortAppendingTiffWriter.readShort~      zz!}rT   c                   V ^8  d   QhRR/# r   rQ   )rR   s   "rI   rS   r    s      # rT   c                	$    V P                  ^4      # rE   r  r   s   &rI   readLongAppendingTiffWriter.readLong  r  rT   c               $    V ^8  d   QhRRRRRR/# )rL   bytes_writtenr!  expectedr`   rO   r   rQ   )rR   s   "rI   rS   r    s!     $ $Z $3 $4 $rT   c                	D    V e   W8w  d   RV  RV 2p\        V4      hR # R # )Nzwrote only z bytes but wanted )r  )r  r  r4  s   && rI   _verify_bytes_written)AppendingTiffWriter._verify_bytes_written  s4    $)B.@
KCs## *C$rT   c               (    V ^8  d   QhRRRRRRRR/# )rL   r   r`   r  new_field_sizerO   r   rQ   )rR   s   "rI   rS   r    s2     	B 	B	B&)	B;>	B		BrT   c                	2   V P                   P                  V) \        P                  4       V'       g   TpV P                   P	                  \
        P                  ! V P                  V P                  V4      ,           V4      4      pV P                  WC4       R # rV   )
r   r-  r  r  rP  r  r  r  r  r  )r   r   r  r  r  s   &&&& rI   _rewriteLast AppendingTiffWriter._rewriteLast  sf     	ZK-'NKKdii&??G
 	""=ArT   c                    V ^8  d   QhRRRR/# rL   r   r`   rO   r   rQ   )rR   s   "rI   rS   r    s     ' 'C 'D 'rT   c                	,    V P                  V^^4       R# rL   Nr  r  s   &&rI   rewriteLastShortToLong*AppendingTiffWriter.rewriteLastShortToLong  s    %A&rT   c                    V ^8  d   QhRRRR/# r  rQ   )rR   s   "rI   rS   r    s     + +c +d +rT   c                	&    V P                  V^4      # r  r  r  s   &&rI   rewriteLastShort$AppendingTiffWriter.rewriteLastShort        **rT   c                    V ^8  d   QhRRRR/# r  rQ   )rR   s   "rI   rS   r    s     + +S +T +rT   c                	&    V P                  V^4      # r  r  r  s   &&rI   rewriteLastLong#AppendingTiffWriter.rewriteLastLong  r  rT   c               $    V ^8  d   QhRRRRRR/# )rL   r   r`   r  rO   r   rQ   )rR   s   "rI   rS   r    s!     > >C >S >T >rT   c                	    V P                   P                  \        P                  ! V P                  V P                  V4      ,           V4      4      pV P                  W24       R # rV   )r   rP  r  r  r  r  r  )r   r   r  r  s   &&& rI   r  AppendingTiffWriter._write  sD    KKdii
&;;UC
 	""==rT   c                    V ^8  d   QhRRRR/# r  rQ   )rR   s   "rI   rS   r    s        rT   c                	*    V P                  V^4       R# r  r  r  s   &&rI   
writeShortAppendingTiffWriter.writeShort      E1rT   c                    V ^8  d   QhRRRR/# r  rQ   )rR   s   "rI   rS   r    s      s t rT   c                	*    V P                  V^4       R# rD   r  r  s   &&rI   	writeLongAppendingTiffWriter.writeLong  r  rT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r    s      t rT   c                	    V P                  4        V P                  '       d   V P                  P                  4        R # R # rV   )r  r  r   r  r   s   &rI   r  AppendingTiffWriter.close  s&    ===FFLLN rT   c                   V ^8  d   QhRR/# rC  rQ   )rR   s   "rI   rS   r    s     '3 '3 '3rT   c           
     	b   T P                  V P                  '       d   ^M^4      p\        V4       EF  p\        P                  ! V P
                  V P                  P                  V P                  '       d   ^M^4      4      w  r4pV P                  V,          pWe,          pV P                  '       d   ^M^pWx8*  p	V	'       g4   V P                  V4      V P                  ,           p
V P                  W4       W0P                  9   d   V P                  P                  4       p\        P                  R\        P                   ! V4      P"                  V\$        P&                  ! VR4      VVV4       V	'       d6   V P)                  WV4       V P                  P+                  W,           4       EKz  V P                  P+                  X
4       V P)                  WV4       V P                  P+                  V4       EK  V	'       g   EK  V P                  P+                  V\,        P.                  4       EK  	  R# )r'  z;fixIFD: %s (%d) - type: %s (%d) - type size: %d - count: %dr!  N)r  r/  r(  r  r  r  r   r  
fieldSizesr  r  Tagsr'  r+  r,  r   rR  r  r   r)  _fixOffsetsr-  r  r  )r   r  rr   r_  
field_typer0  r  
total_sizerH  is_localr5  cur_poss   &           rI   r  AppendingTiffWriter.fixIFD  sx   ::4===aa8xA%+]]$---BQ G&"CU 4J#+J MMMqqH!-HH-0D0DD!!&3ii&&++-QOOC(--IIj)4 $$U7FFKK 23FFKK'$$U7FFKK(Hbkk2I !rT   c               $    V ^8  d   QhRRRRRR/# )rL   r0  r`   r  rO   r   rQ   )rR   s   "rI   rS   r    s!     6 6 6# 6$ 6rT   c                	\   \        V4       EF  pV P                  V4      pW@P                  ,          p^ pV P                  '       d   VR9   d   VR8  d   ^pMV^8X  d
   VR8  d   ^pV'       d   V^8w  d   Rp\	        V4      hV P                  WBV4       V) ^,
          ^,
          pV P                  P                  V\        P                  4       V P                  V4       V P                  P                  ^V,
          \        P                  4       EK
  V P                  WB4       EK  	  R# )r   znot implementedN)rL   rE   l        r   )r(  r  r  r/  r  r  r   r-  r  r  r  )r   r0  r  rr   r5  r  r4  rewinds   &&&     rI   r  AppendingTiffWriter._fixOffsets  s    uAZZ
+F***FN}}}v!5&E/!"qVu_!"A:+C&s++ !!&nE(1,q0FBKK0/AJ4!!&53 rT   c               (    V ^8  d   QhRRRRRRRR/# )rL   r0  r`   isShortrP   isLongrO   r   rQ   )rR   s   "rI   rS   r    s,     	3 	3	3#'	39=	3		3rT   c                	T    V'       d   ^pMV'       d   ^pM^ pV P                  W4      # r  )r  )r   r0  r*  r+  r  s   &&&& rI   
fixOffsetsAppendingTiffWriter.fixOffsets  s*     JJJ22rT   )r  r/  r  r  r  r   r  r  r  r  r  r  r  N)r   rc   rc   rL   rE   r'  rc   rc   rL   rE   r'  rE   r'  rE   rL   rE   r'  >   r    	  r       r!   )FrO  )FF)&r   r   r   r   r  r  r   r  r  r  r  r  r'  ru  r  r-  r  r  r  rP  r  r  r  r  staticmethodr  r  r   r  r	  r  r  r  r  r  r  r-  r   rQ   rT   rI   r  r    s    J(D44
4 /1kk -NO"$ $ $
	B'++>
'3R68	3 	3rT   r  c               (    V ^8  d   QhRRRRRRRR/# rH  rQ   )rR   s   "rI   rS   rS    	  s(      + 9   rT   c           	        \        V P                  P                  R . 4      4      p\        V R4      '       g   V'       g   \	        WV4      # V P                  4       p \        V4      ;_uu_ 4       pV .V,            F  pVP                  V 4      p\        VR4      '       g   RVn        \        VR^4      p\        V4       F@  p	VP                  V	4       VP                  4        \	        WeV4       VP                  4        KB  	  Wvn        K  	  RRR4       V P                  V4       R#   + '       g   i     L#; i  T P                  T4       i ; i)append_imagesr  r^  NrQ   )rU  r]  r)  r   r  r'  r  _attach_default_encoderinfor^  r   r(  r-  r6  r  )
r  r  r  r5  cur_idxtfimsr]  nfrr   s
   &&&       rI   	_save_allr;   	  s   ++OR@AM2z""=RX&&ggiG $$tm++!==bAsO44(*C%c:q1 :CHHSMHHJ#8,KKM	 &
 #. , % 	 %$ 	s%   D< 0BD)D< )D9	4D< <Ez.tifz.tiffz
image/tiffr   rQ   )r3   z1;I)r3   z1;IR)r3   r3   )r3   z1;Rr  )r4   zL;2I)r4   zL;2IR)r4   zL;2)r4   zL;2Rr  )r4   zL;4I)r4   zL;4IR)r4   zL;4)r4   zL;4R)r'  )r4   zL;I)r4   zL;IR)r4   r4   )r4   zL;R)   )r5   zI;12)   )r5   r5   )r6   r6   )r5   zI;16R)r7   zI;16S)r7   zI;16BS)r  )    )r8   r9   )r8   zF;32BF)r7   zI;32N)r7   r:   )r7   zI;32BS)r'  r'  )r;   r;   )r'  r'  r'  )r<   r<   )r<   zRGB;R)r'  r'  r'  r'  )r=   r=   rO  )r<   r>   )r'  r'  r'  r'  r'  r[  )r<   RGBXX)r'  r'  r'  r'  r'  r'  )r   r   r   )r<   RGBXXX)r=   RGBa)rc   r   )r=   RGBaX)rc   r   r   )r=   RGBaXX)rL   r   )r=   RGBAX)rL   r   r   )r=   RGBAXX)i  )r=  r=  r=  )r<   zRGB;16L)r<   zRGB;16B)r=  r=  r=  r=  )r=   zRGBA;16L)r=   zRGBA;16B)r<   zRGBX;16L)r<   zRGBX;16B)r=   zRGBa;16L)r=   zRGBa;16B)r?   zP;1)r?   zP;1R)r?   zP;2)r?   zP;2R)r?   zP;4)r?   zP;4R)r?   r?   )r?   PX)r@   r@   )r?   zP;R)rA   rA   )rA   CMYKX)rA   CMYKXX)rA   zCMYK;16L)rA   zCMYK;16B)rB   rB   )s   MM *s   II* s   MM* s   II *s   MM +s   II+ )
__future__r   ru  rz  loggingr  r  r  r  collections.abcr   r   	fractionsr   numbersr   r   typingr	   r
   r    r   r   r   r   r   r   _binaryr   r  r   r  r   _utilr   r   r   r   r   r   _typingr   r   r   	getLoggerr   r+  r  r_  rn  r.  r,  rw  r  r  r  r	  r  r  rd  rB  r  r"  ro  r  r  r  r  rx  re  rf  rg  	PREDICTORr'  r#  r$  r!  rs  ry  r  r  
JPEGTABLESr  rq  rh  rb  rc  r&  ra  r  rt  IMAGEJ_META_DATA_BYTE_COUNTSIMAGEJ_META_DATAr  rQ  rp  r  ry   r  rY   r[   rj   r|   r   r   r   rf   rN   rP   r   r   r   r  r`   
_IFDv2Baser   r   r  r   r  r]  ImageFileDirectoryr  r\  r  BytesIOr  r;  register_openrR   register_saveregister_save_allregister_extensionsregister_mime)krw  s   00rI   <module>ra     s  R # 	    	   4  $     J J ! !  ) (==			8	$ 


 
  	   				
	
  	

	  %  u | x	
 x z { v  
= 
: 
 
> 
= 
?  
6!" 
6#$ 
6% * *:)?)?)AB)A)AB } D!T2} D!T2	}
 D!T2} D!T2} D!T2
} D!T2
} D!T2} D!T2} D!T2} D!T2} D!T2} D!T2} D!T2}  D!T2!}" D!T2#}$ D!T2%}& D!T2'}( D!T2)}* D!T2+}, D!T2-}. D!T2/}0 D!T21}2 D!T23}4 D!T25}6 D!T27}8 D!T29}: D!T2;}< D!T2=}> D!T2
?}@ D!T2
A}B D!T2
C}D D!T2
E}F D!T2G}H D!T2I}J D!UB!1K}L D!UB!1M}N D!UB!1O}P D!UB!3Q}R D!UB!2S}T D!UBU}V D!UBW}X D!UBY}Z D!UB[}\ D!UB]}^ D!UB_}` D!UBa}b D!UBc}d D!UBe}f D!VT"Lg}h D!VT"Li}j D!Y#^k}l D!Y#^m}n D!Y#%5o}p D!Y#%5q}r D!\2&(8s}t D!\2&(8u}v D!\4(/w}x D!\4(/y}z D!_f-/?{}| D!_f-/?}}~ D!'35F}@ D!'35FA}B D!\4(*:C}D D!\4(*:E}F D!_f-/@G}H D!_f-/@I}J D!'35GK}L D!'35GM}N D!\4(*:O}P D!\4(*:Q}R D!_f-/@S}T D!_f-/@U}V D!'35GW}X D!'35GY}Z D!\6*,<[}\ D!\6*,<]}^ D!\2&(:_}` D!\2&(:a}b D!%r*,@c}d D!%r*,@e}f D!%t,.Ag}h D!%t,.Ai}j D!%t,.Bk}l D!%t,.Bm}n D!%t,.Bo}p D!%t,.Bq}r D!T2s}t D!T2u}v D!T2w}x D!T2y}z D!T2{}| D!T2}}~ D!T2}@ D!T2A}B D!T2C}D D!T2E}F D!T2G}H D!T2I}J D!T2
K}L D!T2
M}N D!VT"KO}P D!VT"KQ}R D!VT"LS}T D!VT"LU}V D!T2W}X D!T2Y}Z D!\2&(8[}\ D!\2&(8]}^ D!_d+->_}` D!_d+->a}b D!'02Dc}d D!'02De}f D!%r*,@g}h D!%r*,@i}j D!T2
k}l D!T2
m}r D!Y#_s}t D!Y#_u}v D!Y#^w}x D!Y#^y}	~ AyAA .%& G'( G'T /=sBC	$ S)JJP$J P$f (6  $(7  %IC<<S!D!U4&>>#3Fq3IJ!VD6?OC4HI  OS$X1 Xx + yHI'' yHF #r1at	$ #r1at	$	
 	4Q61
% #r1at	$ 	4Q61
% '2q!UD	) VRAud+ gr1a- '2q!UD	) 
E2q!Y- VRA|Q/ VRA|Q/ VRA|T2  gr1aD1!" 
E2q!Y-#$ gr1a-%	,q-h	i3"** i3X	8   M((- A   M((% 0   ,,i 8   -..0A B   M((, 7[D Cs   	_?