+
     i%L c                  sB   ^ 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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% ^RI&H't' ^RI(H)t)H*t* ^RIH+t+ Rt,],'       d	   ^RI&H-t-H.t. ]P^                  ! ]04      t1Rt2Rt3Rt4Rt5Rt6^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-tQR.tRR/tSR0tTR1tUR2tVR3tWR4tXR5tYR6tZR7t[R8t\R9t]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 tb/ ]5^ R^RR3Rb]6^ R^RR3Rb]5^ R^RR3Rb]6^ R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^ R^RR3Rb]6^ R^RR3Rb]5^ R^RR3Rb]6^ R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^ R^RR3Rb/ ]6^ R^RR3Rb]5^ R^RR3Rb]6^ R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^ R^RR3Rb]6^ R^RR3Rb]5^ R^RR3Rb]6^ R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3RbC/ ]5^R^RR3Rb]5^ R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^ R^RR3Rb]6^ R^RR3Rb]5^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3RbC/ ]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3RbC/ ]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3RbC/ ]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]5^R^RR3RbC/ ]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3Rb]5^R^RR3Rb]6^R^RR3RbCtc]d! Rf ]c 4       4      te. ROtf]g! ]P                  RgRh4      '       g
   ]%! Ri^4       Rj Rk ltiRl Rm ltjRn Ro ltk/ tl/ tmRp Rq ltn ! Rr Rs]4      to]Rt]p]q.]3,          trRu Rv ltsRw Rx lttRy Rz ltu],'       d   ]]v]3,          twM]tw ! R{ Rt]w4      tx]l]xnl        ]m]xnm        ]+P                  ! 4        FG  w  tytz]zP                  R|R}4      tz]|! ]xR~]z 2]l]y,          ^,          4       ]|! ]xR]z 2]m]y,          4       KI  	  AlAmAyAz ! R R]x4      t}]}t~ ! R R]P4                  4      t/ RVRV]5^^RR3bRWRW]5^^RR3bR^R^]5^^R^3bRbRb]5^^RR3bRcRc]5^^R^3bRZR]]5^^RR3bRXRX]5^^RR3bRR]5^^RR3bR[R\]5^^RR3bR_R_]5^^RR3bRaRa]5^^R^ 3bR`R`]5^^R^3bRdRd]5^^RR3bRR]5^^RR3bReRe]5^^RR3bRYRY]6^^RR3btR R lt ! R R]EP                  4      tR R lt]EP
                  ! ]EP                  ]]i4       ]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)IteratorMutableMapping)Fraction)NumberRational)IOAnyCallableNoReturncast)ExifTagsImage	ImageFileImageOpsImagePaletteTiffTags)i16be)i32be)o8)	deprecate)StrOrBytesPath)DeferredErroris_pathTYPESF)BufferIntegralLike   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  rawZ
tiff_ccittZgroup3Zgroup4Ztiff_lzw	tiff_jpegjpegtiff_adobe_deflatei  Ztiff_raw_16i  Zpackbitsi)  Ztiff_thunderscani  tiff_deflateit  Ztiff_sgilogiu  Ztiff_sgilog24im  ZlzmaiP  ZzstdiQ  Zwebp1LI;16I;16BIFF;32FI;32SLARGBRGBARGBXPPACMYKLABc              #  sF   "   T F  p\        V^,          4      x  K  	  R# 5i   N)len).0Zkey_tp   & :/usr/lib64/python3.14/site-packages/PIL/TiffImagePlugin.py	<genexpr>r<     s     AyV#fQi..ys   !libtiff_support_custom_tagsTz*Support for LibTIFF earlier than version 4c                    V ^8  d   QhRRRR/# )   prefixbytesreturnbool format   "r;   __annotate__rH   #  s     . .E .d .    c                s>    V P                  \        \        4      4      # N)
startswithtuplePREFIXESr@      &r;   _acceptrP   #  s    U8_--rI   c               $    V ^8  d   QhRRRRRR/# )r?   valfloat | Fraction | IFDRationalmax_valintrB   !tuple[IntegralLike, IntegralLike]rD   rE   rG   r;   rH   rH   '  s$     % %	'%25%&%rI   c                s    \        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)rR   rT   Zinvn_d   &&  r;   _limit_rationalr^   '  sC     c(Q,C
a#g#
.
=
=g
FC3tt9$$rI   c               (    V ^8  d   QhRRRRRRRR/# )r?   rR   rZ   rT   rU   min_valrB   rV   rD   rE   rG   r;   rH   rH   /  s,      	"-0&rI   c                s^   \        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rJ   floatr9   ir:   r;   r<   )_limit_signed_rational.<locals>.<genexpr>5  s     
!S588S   c              3  ra   rJ   rb   rd   r:   r;   r<   rf   8  s     ,1eAhhrg   )r   	numeratordenominatorminr^   rY   rL   max)rR   rT   r`   fracr\   Z	n_d_floats   &&&   r;   _limit_signed_rationalrm   /  s     C=D-1^^T=M=M-MC

!S
!!G+c3w<0,,,,,I
9~ilYq\97CJrI   c               r>   )r?   opstrrB   r   rD   rE   rG   r;   rH   rH   F  s      # # rI   c                   a  R  V 3R llpV# )c               rQ   )r?   selfrZ   argsztuple[float, ...]rB   zbool | float | FractionrD   rE   rG   r;   rH   Z_delegate.<locals>.__annotate__G  s$     - --"3-	 -rI   c                s8   < \        V P                  S4      ! V!  # rJ   )getattr_val)rq   rr   rn   s   &*r;   delegateZ_delegate.<locals>.delegateG  s     tyy"%t,,rI   rD   )rn   ru      f r;   	_delegaterw   F  s    - -
 OrI   c                  s|   ] 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# )4rZ   iO  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               rQ   )r?   valuerS   ri   rU   rB   NonerD   rE   rG   r;   rH   IFDRational.__annotate__]  s$      6  63 6BE 6	 6rI   c                sV   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
NZnan)
isinstancerZ   rh   
_numeratorri   _denominatorrt   r   TYPE_CHECKINGr   r   rc   rU   )rq   rx   ri      &&&r;   __init__ZIFDRational.__init__]  s     	e[))#ooDO % 1 1D

DIeX&&#ooDO % 1 1D}"&|U";"' +!eDIA DIZ5  U[9DI !45DIrI   c                   V ^8  d   QhRR/# )r?   rB   r   rD   rE   rG   r;   rH   rz     s      < rI   c                	    V P                   # rJ   )r|   rq   rO   r;   rh   ZIFDRational.numerator  s    rI   c               r   r?   rB   rU   rD   rE   rG   r;   rH   rz     s     ! !S !rI   c                	r   rJ   )r}   r   rO   r;   ri   ZIFDRational.denominator  s       rI   c               r>   )r?   max_denominatorrU   rB   ztuple[IntegralLike, int]rD   rE   rG   r;   rH   rz     s     * *c *6N *rI   c                s    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)
)ri   rh   r{   rt   r   Zlimit_denominator)rq   r   f   && r;   r[   ZIFDRational.limit_rational  se     q >>4#3#333$))X....II''8{{AMM))rI   c               r   r?   rB   ro   rD   rE   rG   r;   rH   rz     s     % %# %rI   c                	s>    \        \        V P                  4      4      # rJ   )ro   rc   rt   r   rO   r;   __repr__ZIFDRational.__repr__  s    5#$$rI   c               r   r   rD   rE   rG   r;   rH   rz     s     $ $# $rI   c                	s6    V P                   P                  4       # rJ   )rt   __hash__r   rO   r;   r   ZIFDRational.__hash__  s    yy!!##rI   c               r>   )r?   otherobjectrB   rC   rD   rE   rG   r;   rH   rz     s      F t rI   c                	s    V P                   p\        V\        4      '       d   VP                   p\        V\        4      '       d   \        V4      pW!8H  # rJ   )rt   r{   rZ   rc   )rq   r   rR   r   r;   __eq__ZIFDRational.__eq__  s?    iie[))JJEeU##*C|rI   c               r   )r?   rB   %list[float | Fraction | IntegralLike]rD   rE   rG   r;   rH   rz     s     ? ?C ?rI   c                	sH    V P                   V P                  V P                  .# rJ   )rt   r|   r}   r   rO   r;   __getstate__ZIFDRational.__getstate__  s    		4??D,=,=>>rI   c               r>   )r?   stater   rB   ry   rD   rE   rG   r;   rH   rz     s     
) 
)"G 
)D 
)rI   c                	s   \         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)rZ   r   r{   rc   r   rt   r~   r   r   r|   rU   r}   )rq   r   rt   r|   r}   s   &&   r;   __setstate__ZIFDRational.__setstate__  sj    T1%).&,$ 12222	="<<DO(O,,,,,(rI   __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|   rt   N)r|   r}   rt   rW   )/__name__
__module____qualname____firstlineno____doc__Z	__slots__r   propertyrh   ri   r[   r   r   r   r   r   rw   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__rD   rI   r;   rZ   rZ   O  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& $rI   rZ   ImageFileDirectory_v2c               $    V ^8  d   QhRRRRRR/# )r?   idxrU   sizerB   z$Callable[[_LoaderFunc], _LoaderFunc]rD   rE   rG   r;   rH   rH     s"     	 	# 	S 	-Q 	rI   c                s   a a R  V V3R llpV# )c                    V ^8  d   QhRRRR/# )r?   func_LoaderFuncrB   rD   rE   rG   r;   rH   Z&_register_loader.<locals>.__annotate__  s        rI   c                s   < ^RI Hp V P                  P                  R4      '       d'   V P                  R,          P	                  RR4      VS&   SV 3\
        S&   V # )rW   r   load_:   NN_ )r   r   r   rK   replace_load_dispatch)r   r   r   r      & r;   	decoratorZ#_register_loader.<locals>.decorator  sM    #==##G,,r*223<E#J"DjsrI   rD   )r   r   r   s   ff r;   _register_loaderr     s      rI   c               r>   )r?   r   rU   rB   z2Callable[[Callable[..., Any]], Callable[..., Any]]rD   rE   rG   r;   rH   rH     s      # "T rI   c                rp   )c               r   )r?   r   zCallable[..., Any]rB   rD   rE   rG   r;   rH   Z&_register_writer.<locals>.__annotate__  s      * /A rI   c                s   < V \         S&   V # rJ   )_write_dispatch)r   r      &r;   r   Z#_register_writer.<locals>.decorator  s    #rI   rD   )r   r   rv   r;   _register_writerr     s      rI   c               r>   )r?   idx_fmt_nameztuple[int, str, str]rB   ry   rD   rE   rG   r;   rH   rH     s      "6 4 rI   c                s   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# )rW   r   Z=c               (    V ^8  d   QhRRRRRRRR/# )	r?   rq   r   datarA   
legacy_apirC   rB   tuple[Any, ...]rD   rE   rG   r;   rH   Z%_register_basic.<locals>.__annotate__  s,     ? ?#?+0?>B?	?rI   c                sP   < V P                  \        V4      S,           S 2V4      # rJ   )_unpackr8   )rq   r   r   fmtr   s   &&&r;   basic_handlerZ&_register_basic.<locals>.basic_handler  s)     ||s4yD01#7>>rI   c                s>   <a  R P                  VV 3R lV 4       4      # )rI   c              3  sH   <"   T F  pSP                  SV4      x  K  	  R # 5irJ   )_pack)r9   rx   r   rq   r   r;   r<   Z4_register_basic.<locals>.<lambda>.<locals>.<genexpr>  s     <VEC''Vs   "join)rq   valuesr   s   f*r;   <lambda>Z!_register_basic.<locals>.<lambda>  s    <V<<rI   NT)r   r   structZcalcsizer   r   )r   r   r   namer   r   r   s   &    @@r;   _register_basicr     sS    !NCd#J??Qse9%D? ?
 -N3OCrI   c                  s   ] 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               r   )	r?   ifhrA   r@   zbytes | Nonegroup
int | NonerB   ry   rD   rE   rG   r;   rH   "ImageFileDirectory_v2.__annotate__H  s2     %! %!%! %! 	%!
 
%!rI   c                s,   \        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:Nr?   N><znot a TIFF IFDQ:   NNr'   r7   NNF)rP   reprSyntaxError_prefixMM_endianII_bigtiffr   tagtyperesetr   next_legacy_api)rq   r   r@   r   msg   &&&& r;   r   ZImageFileDirectory_v2.__init__H  s      s||,T#YK{CCc""!'!3vR<<2DL\\RDL"Cc""A"
')'

 }}} LLc"g&q)c3r7+A. 		
 !rI   c                	r   rJ   )r   r   rO   r;   r   ImageFileDirectory_v2.<lambda>o      4<<rI   c                	r   rJ   )_offsetr   rO   r;   r   r   p  r   rI   c               r   )r?   rB   rC   rD   rE   rG   r;   rH   r   s  s        D  rI   c                	r   rJ   r   r   rO   r;   r    ImageFileDirectory_v2.legacy_apir  s    rI   c               r>   )r?   rx   rC   rB   r
   rD   rE   rG   r;   rH   r   w  s        rI   c                	s    R p\        V4      h)z"Not allowing setting of legacy api)	Exception)rq   rx   r   r   r;   r   r   v  s    2nrI   c               r   r?   rB   ry   rD   rE   rG   r;   rH   r   {  s     ( (t (rI   c                	sZ    / V n         / V n        / V n        / V n        R V n        R V n        R # rJ   )_tags_v1_tags_v2_tagdatar   _nextr   r   rO   r;   r   ZImageFileDirectory_v2.reset{  s,    (*(**,
#'rI   c               r   r   rD   rE   rG   r;   rH   r     s       rI   c                	s*    \        \        V 4      4      # rJ   )ro   dictr   rO   r;   __str__ZImageFileDirectory_v2.__str__  s    4:rI   c               r   )r?   rB   zdict[str, Any]rD   rE   rG   r;   rH   r     s     	
 	
~ 	
rI   c                s    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   )rq   Zcoderx      &  r;   namedZImageFileDirectory_v2.named  sI      $zz|
+ OOD**-22E9+
 	
 
s   6Ac               r   r   rD   rE   rG   r;   rH   r          < < <rI   c                	r    \        \        V P                  4      \        V P                  4      ,          4      # rJ   )r8   setr   r   r   rO   r;   __len__ZImageFileDirectory_v2.__len__  $    3t}}%DMM(::;;rI   c               r>   r?   tagrU   rB   r   rD   rE   rG   r;   rH   r     s     	 	s 	s 	rI   c                	sN   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# rJ   )r   r   r   r   r   r{   rL   rA   )rq   r	  r   typr   handlerrR   s   &&     r;   __getitem__Z!ImageFileDirectory_v2.__getitem__  s    mm#==%D,,s#C //4MDDOO<DImmC ???:cE5>#B#B&C
rI   c               r>   r?   r	  r   rB   rC   rD   rE   rG   r;   rH   r          < < <4 <rI   c                	J    WP                   9   ;'       g    WP                  9   # rJ   )r   r   rq   r	     &&r;   __contains__Z"ImageFileDirectory_v2.__contains__      mm#;;smm';;rI   c               rQ   r?   r	  rU   rx   r   rB   ry   rD   rE   rG   r;   rH   r     s!     3 3s 33 34 3rI   c                	s>    V P                  WV P                  4       R # rJ   )_setitemr   )rq   r	  rx   r   r;   __setitem__Z!ImageFileDirectory_v2.__setitem__  s    c$//2rI   c               r   )	r?   r	  rU   rx   r   r   rC   rB   ry   rD   rE   rG   r;   rH   r     s.     \ \C \ \ \$ \rI   c           	     	s  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rJ   )r{   rZ   r9   vr:   r;   r<   1ImageFileDirectory_v2._setitem.<locals>.<genexpr>  s     B6az![116   FTc              3  r  rJ   )r{   rU   r  r:   r;   r<   r         <VAs++Vr  c              3  r  rJ   )r{   rc   r  r:   r;   r<   r         >v!Au--vr  c              3  r  rJ   )r{   ro   r  r:   r;   r<   r    r  r  c              3  r  rJ   )r{   rA   r  r:   r;   r<   r    r  r  asciir   c              3  sv   <"   T F.  p\        V\        4      '       d   SP                  V4      MTx  K0  	  R # 5irJ   )r{   ro   Zcvt_enum)r9   rx   info   & r;   r<   r    s2      #E )35#(>(>e$EI#s   69NzMetadata Warning, tag z had too many entries: z, expected 1r   i   i )!r   rA   ro   r   r   r   r{   r   type	UNDEFINEDZallrZ   ZSIGNED_RATIONALZRATIONALrU   SHORTSIGNED_SHORTLONGSIGNED_LONGDOUBLEASCIIBYTEencoderc   r   rL   r   r   Zlengthr8   
ValueErrorwarningswarn)rq   r	  rx   r   Z	basetypesr   r  shortZsigned_shortlongis_ifdZdestr  s   &&&&        @r;   r  Z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               r>   )r?   r	  rU   rB   ry   rD   rE   rG   r;   rH   r     s     % %s %t %rI   c                	s    V P                   P                  VR 4       V P                  P                  VR 4       V P                  P                  VR 4       R # rJ   )r   Zpopr   r   r  r  r;   __delitem__Z!ImageFileDirectory_v2.__delitem__  s>    #t$#t$#t$rI   c               r   r?   rB   zIterator[int]rD   rE   rG   r;   rH   r          = =- =rI   c                	r  rJ   )iterr  r   r   r   rO   r;   __iter__ZImageFileDirectory_v2.__iter__  $    C&T]]);;<<rI   c               rQ   )r?   r   ro   r   rA   rB   r   rD   rE   rG   r;   rH   r     s!     7 73 7e 7 7rI   c                	sR    \         P                  ! V P                  V,           V4      # rJ   )r   unpackr   )rq   r   r   r   r;   r   ZImageFileDirectory_v2._unpack  s    }}T\\C/66rI   c               rQ   )r?   r   ro   r   r   rB   rA   rD   rE   rG   r;   rH   r     s!     8 8 8s 8u 8rI   c                	sT    \         P                  ! V P                  V,           .VO5!  # rJ   )r   packr   )rq   r   r   s   &&*r;   r   ZImageFileDirectory_v2._pack  s    {{4<<#-777rI   Hr.  r'   r/  bzsigned bytehzsigned shortlzsigned longr   rc   ZdZdoubler   Zlong8c               $    V ^8  d   QhRRRRRR/# r?   r   rA   r   rC   rB   rD   rE   rG   r;   rH   r   #  s!      e   rI   c                	    V# rJ   rD   rq   r   r   r   r;   	load_byteZImageFileDirectory_v2.load_byte"      rI   c               r>   )r?   r   bytes | int | IFDRationalrB   rA   rD   rE   rG   r;   rH   r   '  s      8 U rI   c                	s    \        V\        4      '       d   \        V4      p\        V\        4      '       d   \        V34      pV# rJ   )r{   rZ   rU   rA   rq   r   r  r;   
write_byteZ ImageFileDirectory_v2.write_byte&  s5    dK((t9DdC  $>DrI   c               rQ   )r?   r   rA   r   rC   rB   ro   rD   rE   rG   r;   rH   r   /  s!     1 1 14 13 1rI   c                	s^    VP                  R 4      '       d   VRR pVP                  RR4      # )    Nzlatin-1r   rX   )endswithdecoder@  r   r;   load_stringZ!ImageFileDirectory_v2.load_string.  s-    ==9D{{9i00rI   c               r>   )r?   rx   zstr | bytes | intrB   rA   rD   rE   rG   r;   rH   r   5  s      "3  rI   c                	s    \        V\        4      '       d   \        V4      p\        V\        4      '       g   VP	                  R R4      pVR,           # )r  r   rF  )r{   rU   ro   rA   r*  rq   rx   r  r;   write_stringZ"ImageFileDirectory_v2.write_string4  sA     eS!!JE%''LL)4Eu}rI   c               rQ   r?   r   rA   r   rC   rB   z)tuple[tuple[int, int] | IFDRational, ...]rD   rE   rG   r;   rH   r   >  )     W WW'+W	2WrI   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      # )r7   r'   c               r   r?   arU   r:  rB   ztuple[int, int] | IFDRationalrD   rE   rG   r;   rH   Z9ImageFileDirectory_v2.load_rational.<locals>.__annotate__C  "     	? 	?s 	?s 	?'D 	?rI   c                0   < S'       d   W3# \        W4      # rJ   rZ   rP  r:  r      &&r;   combineZ4ImageFileDirectory_v2.load_rational.<locals>.combineC      'A6>[->>rI   c              3  8   <"   T F  w  rS! W4      x  K  	  R # 5irJ   rD   r9   ZnumZdenomrV     &  r;   r<   Z6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>F       V;UZSWS((;U   NNr?   rW   Nr?   r   r8   rL   Zziprq   r   r   ZvalsrV     &&f @r;   load_rationalZ#ImageFileDirectory_v2.load_rational=  q     ||s4yA~.a0$7	? 	? uV3tCy$t*;UVuVuV3tCy$t*;UVVVrI   c               r>   r?   r   rZ   rB   rA   rD   rE   rG   r;   rH   r   I  s     
 
k 
e 
rI   c                	:   a  R P                  V 3R lV 4       4      # )rI   c              3  s`   <"   T F#  pSP                   ! R .\        VR4      O5!  x  K%  	  R# 5i)Z2LNl    )r   r^   r9   rl   rq   r   r;   r<   Z7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>J  s,      
LRDDJJt?odI>??Fs   +.r   rq   r      f*r;   write_rationalZ$ImageFileDirectory_v2.write_rationalH  s!    xx 
LR
 
 	
rI   c               r=  r>  rD   rE   rG   r;   rH   r   O  s!      5 d e rI   c                	r?  rJ   rD   r@  r   r;   load_undefinedZ$ImageFileDirectory_v2.load_undefinedN  rB  rI   c               r>   )r?   rx   rC  rB   rA   rD   rE   rG   r;   rH   r   S  s      %> 5 rI   c                	s    \        V\        4      '       d   \        V4      p\        V\        4      '       d   \        V4      P	                  R R4      pV# )r  r   )r{   rZ   rU   ro   r*  rJ  r  r;   write_undefinedZ%ImageFileDirectory_v2.write_undefinedR  s@    e[))JEeS!!J%%gy9ErI   c               rQ   rL  rD   rE   rG   r;   rH   r   [  rM  rI   c                	rN  )r7   r<  c               r   rO  rD   rE   rG   r;   rH   Z@ImageFileDirectory_v2.load_signed_rational.<locals>.__annotate__`  rQ  rI   c                rR  rJ   rS  rT  rU  r;   rV  Z;ImageFileDirectory_v2.load_signed_rational.<locals>.combine`  rW  rI   c              3  rX  rJ   rD   rY  rZ  r;   r<   Z=ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>c  r[  r\  r]  r^  r_  r`  ra  r;   load_signed_rationalZ*ImageFileDirectory_v2.load_signed_rationalZ  rc  rI   c               r>   rd  rD   rE   rG   r;   rH   r   f  s     
 
[ 
U 
rI   c                	re  )rI   c           	   3  sb   <"   T F$  pSP                   ! R .\        VRR4      O5!  x  K&  	  R# 5i)Z2lNii   )r   rm   rf  r   r;   r<   Z>ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>g  s3      
 JJtP4T9hOPPs   ,/r   rg  rh  r;   write_signed_rationalZ+ImageFileDirectory_v2.write_signed_rationale  s!    xx 

 
 	
rI   c               rQ   )r?   fp	IO[bytes]r   rU   rB   rA   rD   rE   rG   r;   rH   r   l  s!      y   rI   c                	s    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. )readr8   OSError)rq   rn  r   Zretr   s   &&&  r;   _ensure_readZ"ImageFileDirectory_v2._ensure_readl  sN    ggdms8t%%)F*>s3xjL  #,
rI   c               r>   )r?   rn  ro  rB   ry   rD   rE   rG   r;   rH   r   v  s     A Ay AT ArI   c           
     	s   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   r9  HHQ8sHHL4sunknownztag:  (
) - type: Z)z%s - unsupported type %sr'   z Tag Location: z - Data Location: Nz/Possibly corrupt EXIF data.  Expecting to read rp  z. Skipping tag z
 - value: <table:  bytes>)r   tellr   r   r   rs  ranger   r   r   r   r   getr   KeyErrorloggerdebugseekr   Z
_safe_readr8   r,  r-  r   r   r   r   rr  ro   )rq   rn  Z	tag_countre   r	  r
  countr   tagnametypnamer   Z	unit_sizer  r   Zhereoffsets   &&              r;   loadZImageFileDirectory_v2.loadv  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               r   )r?   rB   rA   rD   rE   rG   r;   rH   r     s      % rI   c                	sR   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# )r9  HHr   r'   )r   r   r   rq   r   r:   r;   _get_ifhZImageFileDirectory_v2._get_ifh  s}    llTZZ4===RbII===::dAq))Cmmmtzz#r"K
 :>C9KK
rI   c               r>   )r?   r  rU   rB   rA   rD   rE   rG   r;   rH   r     s     N Nc N% NrI   c                	s	   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   r9  r'   NzTag %s, Type: %s, Value: %s)r   ifdrv  zsave: rw  rx  z) - value: ry  rz  rF  rI   z%s %s %s %s %srt  ru  )"r   r   r8   r   sortedr   STRIPOFFSETSr   r  r  r   r   r%  r{   r   r   r  tobytesrL   r   r   r   r   r   r}  ro   r)  r(  r"  appendZljustr   r   r   )rq   r  resultZentriesr   fmt_sizeZstripoffsetsr	  rx   r
  r0  r  r   Zifd_tagZ	ifd_valuer   r  r  r   r  r   r  rR   s   &&                     r;   r  Z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               r>   )r?   rn  ro  rB   rU   rD   rE   rG   r;   rH   r     s     $ $y $S $rI   c                	s    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  r  r8   )rq   rn  r  r  r]   r;   saveZImageFileDirectory_v2.save  sU    779>HHT]]_%f%
F##rI   )r   r   r   r   r   r   r   r   r   r   r   r   )s   II*     NNr   r  )9r   r   r   r   r   r   __annotations__r   r   r   r@   r  r   Zsetterr   r   r  r  r  r  r  r  r1  r5  r   r   listZmapr   r   r#  r%  ZSIGNED_BYTEr$  r&  ZFLOATr'  ZIFDLONG8r   rA  r   rE  rI  rK  rb  ri  rj  rk  rl  rm  rs  r  r  r  r  r   rD   rI   r;   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`$ $rI   r   r   r   Zwrite_c                  s   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               r   )r?   rr   r   kwargsrB   ry   rD   rE   rG   r;   rH   "ImageFileDirectory_v1.__annotate__8  s!        c  S  T  rI   c                	s6   < \         SV `  ! V/ VB  R V n        R# TN)superr   r   )rq   rr   r  	__class__s   &*,r;   r   ZImageFileDirectory_v1.__init__8  s    $)&)rI   c                	r   rJ   )r   r   rO   r;   r   ImageFileDirectory_v1.<lambda><  s    rI   c                	r   rJ   )r   r   rO   r;   r   r  =  s    DMMrI   zdict[int, int]r   c               r>   )r?   originalr   rB   r  rD   rE   rG   r;   rH   r  D  s      4 9N rI   c                s    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`

rN   )r@   r   r   r   )Zclsr  r  r   r;   from_v2ZImageFileDirectory_v1.from_v2C  s<     )((&&==
rI   c               r   )r?   rB   r   rD   rE   rG   r;   rH   r  U  s      , rI   c                s    \        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`

rN   )r   r@   r   r   r   r   )rq   r  r:   r;   to_v2ZImageFileDirectory_v1.to_v2U  sG     $4;;7DMM*4<<(DMM*
rI   c               r>   r  rD   rE   rG   r;   rH   r  f  r  rI   c                	r  rJ   )r   r   r  r  r;   r  Z"ImageFileDirectory_v1.__contains__f  r  rI   c               r   r   rD   rE   rG   r;   rH   r  i  r  rI   c                	r  rJ   )r8   r  r   r   r   rO   r;   r  ZImageFileDirectory_v1.__len__i  r  rI   c               r   r2  rD   rE   rG   r;   rH   r  l  r3  rI   c                	r  rJ   )r4  r  r   r   r   rO   r;   r5  ZImageFileDirectory_v1.__iter__l  r6  rI   c               rQ   r  rD   rE   rG   r;   rH   r  o  s!     2 2s 23 24 2rI   c                	s<    R F  pV P                  WV4       K  	  R# )FNFT)r  )rq   r	  rx   r      &&& r;   r  Z!ImageFileDirectory_v1.__setitem__o  s    'JMM#j1 (rI   c               r>   r  rD   rE   rG   r;   rH   r  s  s     
 
s 
s 
rI   c           	     	sD   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  )r   r   r   r   r  r{   rL   rA   )rq   r	  r   r
  r   r  ZlegacyrR   s   &&      r;   r  Z!ImageFileDirectory_v1.__getitem__s  s    mm#==%D,,s#C //4MD'c74v#>G (mmC #u~..&C
rI   r   )r   r   r   r   r   r   r   tagsZtagdatar  Zclassmethodr  r  r  r  r5  r  r  r   __classcell__r     @r;   r  r  %  sj    $    ./D12G ! ""<<=2
 
rI   r  c                  s   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  ZTIFFz
Adobe TIFFFc               rQ   )r?   rn  StrOrBytesPath | IO[bytes]filenamezstr | bytes | NonerB   ry   rD   rE   rG   r;   rH   TiffImageFile.__annotate__  s(     ' '&' %' 
	'rI   c                	s2   < V   V   \         SV `  W4       R # rJ   )r  r   )rq   rn  r  r  s   &&&r;   r   ZTiffImageFile.__init__  s    
 	5"&rI   c               r   r   rD   rE   rG   r;   rH   r    s      t rI   c                s   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: %srX   )rn  rq  r   tag_v2r   Z_TiffImageFile__first_TiffImageFile__next_TiffImageFile__frame_fp
_frame_pos	_n_framesr  r  r   _seekr  r:   r;   _openZTiffImageFile._open  s     ggll1oq6R<77<<?"C+C0 &*[[%5%55t{77%'%)23_dll3[$s), 	

1rI   c               r   r   rD   rE   rG   r;   rH   r    s     	 	# 	rI   c                	sP   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                   # rJ   )r  r{  r  r8   r  r  )rq   Zcurrent_n_framesZcurrentr  r;   n_framesZTiffImageFile.n_frames  sx    >>#iikGJJs4??+,..(

499;?+IIg~~)))~~rI   c               r>   r?   framerU   rB   ry   rD   rE   rG   r;   rH   r    s     
 
# 
$ 
rI   c                sD   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)Z_seek_checkr  _imimr   
_tile_sizemodereadonly)rq   r  r  r;   r  ZTiffImageFile.seek  sn    &&

588GGLLDOO+ww||tyy(}}}DH   rI   c               r>   r  rD   rE   rG   r;   rH   r    s     / /3 /4 /rI   c                	s   \        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   Zexrn  r8   r  r  ZEOFErrorr  r  r  r{  r+  r  r  r  r  r   r  is_animatedXMPrL   r  Z_reload_exifr  r  r	  r  _setup)rq   r  r   r  r]   r;   r  Z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rI   c               r   r   rD   rE   rG   r;   rH   r    s      c rI   c                r   )zReturn the current frame number)r  r   rO   r;   r{  ZTiffImageFile.tell  s    ||rI   c               r   )r?   rB   zdict[int, dict[str, bytes]]rD   rE   rG   r;   rH   r    s      &A rI   c                s   / 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:r7      Nr   N)
r  r}  r   BaseZImageResourcesrK   i16mathZceili32)rq   ZblocksrR   Zidnr   r   s   &      r;   get_photoshop_blocksZ"TiffImageFile.get_photoshop_blocks  s     kkoohmm::;..))S]IIs1vzQ./!33q1urAv./26BFTM2$d^
$))R!Vd]a$781<>?rI   c               r   r?   rB   zImage.core.PixelAccess | NonerD   rE   rG   r;   rH   r    s      3 rI   c                	s   < V P                   '       d#   V P                  '       d   V P                  4       # \        SV `  4       # rJ   )tileuse_load_libtiff_load_libtiffr  r  )rq   r  r   r;   r  ZTiffImageFile.load  s2    999...%%''w|~rI   c               r   r   rD   rE   rG   r;   rH   r    s     / /d /rI   c                	s   V P                   fZ   \        P                  ! V P                  4       \        P                  P                  V P                  V P                  4      V n        \        P                  P                  V 4       R # rJ   )
r  r   Z_decompression_bomb_checkr  corenewr  r  r   load_preparer   rO   r;   r  ZTiffImageFile.load_prepare  sP    88++DOO<jjnnTYY@DG((.rI   c               r   r   rD   rE   rG   r;   rH   r    s     7 7$ 7rI   c                	s   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)Zin_placeN)r  !_close_exclusive_fp_after_loadingZgetexifr   TAGS_V2_GROUPSget_ifdr   Zexif_transposer   r  Orientationr  )rq   exifkeyr  r;   load_endZTiffImageFile.load_end  s     59D2 <<>D..?S! /
 	t4==$$3HMM556 4rI   c               r   r  rD   rE   rG   r;   rH   r  0  s     ^& ^&< ^&rI   c                sV   \         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                  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 tilefilenoflushFlibtiffzCouldn't set the imageN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   r  r  r8   r  rr  r   rn  r  r  r{   rL   r  Z_getdecoderr  Zdecoderconfigsetimager  r+  Z_exclusive_fpr  r  r  rH  r  r  osZlseekSEEK_CURSEEK_SETrq  r  r  close)rq   r   Zextentsrr   rn  Z	args_listZdecodereZclose_self_fpr  Zerrpos   &           r;   r  ZTiffImageFile._load_libtiff0  s    	499~"(C#, ))A,q/yy|A

	(+@@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   M6 )AM6 !N
 6NN
N(N##N(c               r   r   rD   rE   rG   r;   rH   r    s     oH oH oHrI   c                s   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/   r(   I;16NZNFr  zInvalid tile dimensionsz- unsupported data organizationicc_profiler   RGB;LrI   )r   r  i   r   r   rD   )r?   r  r   )r?   r  )z;16Bz;16LrX   r2   r3   )Ar  rr  COMPRESSION_INFOr}  COMPRESSION_compressionPLANAR_CONFIGURATION_planar_configurationPHOTOMETRIC_INTERPRETATION	FILLORDERr  r  YCBCRSUBSAMPLING
IMAGEWIDTHIMAGELENGTHr~  Z	TypeErrorr{   rU   r+  r  r   r  r  _sizer   SAMPLEFORMATr8   rk   rj   BITSPERSAMPLEEXTRASAMPLESSAMPLESPERPIXELMAX_SAMPLESPERPIXELZerrorr   r@   	OPEN_INFO_moder  r  X_RESOLUTIONY_RESOLUTIONRESOLUTION_UNITr  READ_LIBTIFFr  rG  r  r  r   _Tiler  TILEOFFSETSROWSPERSTRIP	TILEWIDTH
TILELENGTHZsum
ICCPROFILECOLORMAPr   r   r!   r   palette)!rq   r   photoZ	fillorderZxsizeZysizer  ZorientationZsample_formatZ	bps_tupleZextra_tupleZ	bps_countZbps_actual_countZsamples_per_pixelr  rawmodeZxresZyresZresunitxyZlayerrP  Zoffsetsr;  wZ	tilewidthr  strideZtile_rawmoderr   r:  r  s!   &                                r;   r  Z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)Z__firstZ__frameZ__nextr  r  r  r  r  r  r  r  r  r  rn  r  r  r  r  r  r	  r  r  r  rJ   )r   r   r   r   rF   Zformat_descriptionr  r   r  r   r  r  r  r{  r  r  r  r  r  r  r   r  r  r  r;   r  r    su    F%(-%' '0 	 	
/b* 
/7"^&@oH oHrI   r  I;16LYCbCrc               r   	r?   r  zImage.Imagern  ro  r  zstr | bytesrB   ry   rD   rE   rG   r;   rH   rH     s.     s- s-k s-y s-K s-D s-rI   c                sn    \         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d   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FX  w  pp/T\4        P                  9  d   \C        \$        P                  R(R)4      '       g   K?  T\4        P6                  9   d   \4        P                  T-T&   M}TTP:                  9   d   TP:                  T,          T-T&   MU\        T/\        \        \        \"        34      '       g   K  \4        P                  ! T4      P                  p0T0'       d   T0T-T&   TT.9  g   K  TT*9  g   K  \        T/\        4      '       d    T/P                  R*R+4      R,,           T.T&   EK,  \        T/\        4      '       d   \        T/4      T.T&   EKS  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LMi ; i)<zcannot write mode z as TIFFNrN   Zbig_tiffTr  r!   r"   r#   r%   r$   Ztiffinfor  zTiffinfo Keys: %sr	  r  r  Zdescriptionr  Zx_resolutionZy_resolutionZresolution_unitZsoftwareZ	date_timeZartistZ	copyrightr  r&   r/   r  r   Z
strip_sizer  qualityzInvalid quality settingz5quality setting only supported for 'jpeg' compressionzSaving using libtiff encoderz	Items: %sr  r=   Fr  r   rF  zConverted items: %sr  r  :rW   NNzencoder error z when writing image fileZ_debug_multipager   )r&   r'   r  r   )rW   rW   )r          r  r  r  )r(   r)   r  r    r    )q	SAVE_INFOr  r~  rr  encoderinfoencoderconfigr   r}  r   r  r{   rU   WRITE_LIBTIFFr  r   r  r  rA   r   ZExifr  r  r  r  r  r  r   r  r  r   r   r   r	  rs   EXIFIFDr  r  r  r  IPTC_NAA_CHUNKPHOTOSHOP_CHUNKr  r  r)  r"  r  IMAGEDESCRIPTIONSOFTWARE	DATE_TIMEARTIST	COPYRIGHTr  r8   r  r  r  Zcopyr|  ZheightZwidthr   Zinvertr  Z
getpaletter  r   
STRIP_SIZErj   r%  STRIPBYTECOUNTSrL   r  COMPRESSION_INFO_REVr  r  REFERENCEBLACKWHITEr   Z
setdefaultr  r  r  TILEBYTECOUNTSr+  JPEGQUALITYr  r  r  ioZUnsupportedOperationOSUBFILETYPETRANSFERFUNCTIONSUBIFD	itertoolsZchainZLIBTIFF_COREr  r  rc   ro   r   r!  r*  rZ   ZsortZ_getencoderr  r   ZMAXBLOCKr  r  _saver  setattr)7r  rn  r  r  r@   r  rF   ZbitsZextrar  r   r  r  r  r  r  r  r  r  Z
legacy_ifdZsupplied_tagsr	  Ziccr   r  Zinverted_imZpxr	  r  ZlutZcolormapZcolorsre   r  r
  r;  r  Zim_strip_sizeZrows_per_stripZstrip_byte_countsZstrips_per_imageZdefault_valueZ	blocklistr  r  ZtypesZattsrx   r!  r  rP  ZencoderZerrcoder   r  s7   &&&                                                    r;   r*  r*    s   "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
 (///uzz+H%PP(111!)E#JCKK'!$S!1E#J$US%e,DEE#??3/44D%)c
$3i#7eS)) %Wi @5 HDI{33 %eDI %DI3 N6 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	
 [(&, )]	  ""277)84cl!"  ggkk-0k3''K	T  		| Nt ** sS   r  	r>  t/t!t r;r66r;>>t ?t ttt43t4c                  s   ] 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               rQ   )r?   fnr  r  rC   rB   ry   rD   rE   rG   r;   rH    AppendingTiffWriter.__annotate__  s"      5 D T rI   c                	sn   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_fpZopenr   rr  r   r   rA   r{  	beginningsetup)rq   r-  r  r   r;   r   ZAppendingTiffWriter.__init__  s    2;;I DM)b3%E: "U)R(DF!DM

  )b%)s   B B43B4c               r   r   rD   rE   rG   r;   rH   r.    s      t rI   c                	sV   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 # )Ns   +TFzInvalid TIFF file headerr   r   )r   r  r0  r  r  whereToWriteNewIFDOffsetoffsetOfNewPagerq  IIMMr   isFirstrM   RuntimeError	setEndianrK   r   r  skipIFDsgoToEnd)rq   iimmr   r  r;   r1  ZAppendingTiffWriter.setup  s    DNNBKK048% 66;;q>)	D4DLx,Cs##doob11ss;===FFKK2;;'rI   c               r   r   rD   rE   rG   r;   rH   r.    s      $ rI   c                	s   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)r5  r   r  r3  rq  r4  r6  r   r  r  _readr2  _writefixIFD)rq   r:  r   
ifd_offsets   &   r;   finalizeZAppendingTiffWriter.finalize  s    <<< 	D(()vv{{1~99ECs##===FFKK2;;'ZZT]]]:
***
,,888D112J]]]:JrI   c               r   r   rD   rE   rG   r;   rH   r.  6  s      $ rI   c                	sF    V P                  4        V P                  4        R # rJ   )r?  r1  r   rO   r;   newFrameZAppendingTiffWriter.newFrame6  s    

rI   c               r   )r?   rB   r,  rD   rE   rG   r;   rH   r.  ;  s      . rI   c                	s    V # rJ   rD   r   rO   r;   	__enter__ZAppendingTiffWriter.__enter__;  s    rI   c               r>   )r?   rr   r   rB   ry   rD   rE   rG   r;   rH   r.  >  s      f  rI   c                	sN    V P                   '       d   V P                  4        R # R # rJ   )r/  r  )rq   rr   s   &*r;   __exit__ZAppendingTiffWriter.__exit__>  s    ===JJL rI   c               r   r   rD   rE   rG   r;   rH   r.  B  s     4 4c 4rI   c                	sX    V P                   P                  4       V P                  ,
          # rJ   )r   r{  r3  r   rO   r;   r{  ZAppendingTiffWriter.tellB  s    vv{{}t3333rI   c               s$    V ^8  d   QhRRRRRR/# )r?   r  rU   whencerB   rD   rE   rG   r;   rH   r.  E  s!      3  c rI   c                s    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  r3  r   r  r{  )rq   r  rC  r   r;   r  ZAppendingTiffWriter.seekE  s:     R[[ ***FF#yy{rI   c               r   r   rD   rE   rG   r;   rH   r.  R  s     - - -rI   c                	sX   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  ZSEEK_ENDr{  r  rA   r3  )rq   r  Z	pad_bytesr  r;   r9  ZAppendingTiffWriter.goToEndR  sj    Ar{{#ffkkm rM	y2FFLLy)*#vv{{}rI   c               r>   )r?   endianro   rB   ry   rD   rE   rG   r;   rH   r.  \  s     N N N NrI   c                	s    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# )r'   r9  r  r   N)rD  longFmtshortFmtr   	tagFormat)rq   rD  r  r;   r7  ZAppendingTiffWriter.setEndian\  sL    ++a(;;-q) KK=+dmmmsMrI   c               r   r   rD   rE   rG   r;   rH   r.  b  s     O O$ OrI   c                	s    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  r  )r;  r   r   r{  r2  r  r  r  )rq   r>  num_tagsr  r;   r8  ZAppendingTiffWriter.skipIFDsb  s    AA>JQ04AA1- FFKK
#zzt}}}!!<HFFKK---BR@"++NrI   c               r>   )r?   r   r   rB   rU   rD   rE   rG   r;   rH   r.  o  s     " "& " "rI   c               	s8    V P                   P                  V4      # rJ   )r   r  rD  s   ""r;   r  ZAppendingTiffWriter.writeo  s    vv||D!!rI   c               r>   )r?   
field_sizerU   rB   ro   rD   rE   rG   r;   rH   r.  r  s     $ $s $s $rI   c                	sZ     ^R^R^R/V,          #   \          d    Rp\        T4      hi ; i)r?   r9  r'   r   zoffset is not supported)r~  r6  )rq   rI  r   r   r;   _fmtZAppendingTiffWriter._fmtr  s>    	$sAsAs+J77 	$+Cs##	$s    *c               r   )r?   rI  rU   rB   rD   rE   rG   r;   rH   r.  y  s        rI   c                	s    \         P                  ! V P                  V P                  V4      ,           V P                  P                  V4      4      w  pV# rJ   )r   r7  rD  rJ  r   rq  )rq   rI  rx   r   r;   r;  ZAppendingTiffWriter._ready  s=    ==KK$))J//Z1H
 rI   c               r   r   rD   rE   rG   r;   rH   r.    s      3 rI   c                	s$    V P                  ^4      # r?   r;  r   rO   r;   	readShortZAppendingTiffWriter.readShort      zz!}rI   c               r   r   rD   rE   rG   r;   rH   r.    s      # rI   c                	s$    V P                  ^4      # r7   rL  r   rO   r;   readLongZAppendingTiffWriter.readLong  rN  rI   c               rQ   )r?   bytes_writtenr   expectedrU   rB   ry   rD   rE   rG   r;   rH   r.    s!     $ $Z $3 $4 $rI   c                	sD    V e   W8w  d   RV  RV 2p\        V4      hR # R # )Nzwrote only z bytes but wanted )r6  )rQ  rR  r   r   r;   _verify_bytes_writtenZ)AppendingTiffWriter._verify_bytes_written  s4    $)B.@
KCs## *C$rI   c               s(    V ^8  d   QhRRRRRRRR/# )r?   rx   rU   rI  new_field_sizerB   ry   rD   rE   rG   r;   rH   r.    s2     	B 	B	B&)	B;>	B		BrI   c                	s2   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 # rJ   )
r   r  r  r  r  r   r8  rD  rJ  rS  )rq   rx   rI  rT  rQ  r   r;   _rewriteLastZ AppendingTiffWriter._rewriteLast  sf     	ZK-'NKKdii&??G
 	""=ArI   c               r>   r?   rx   rU   rB   ry   rD   rE   rG   r;   rH   r.    s     ' 'C 'D 'rI   c                	s,    V P                  V^^4       R# r?   NrU  rJ  r  r;   rewriteLastShortToLongZ*AppendingTiffWriter.rewriteLastShortToLong  s    %A&rI   c               r>   rV  rD   rE   rG   r;   rH   r.    s     + +c +d +rI   c                	s&    V P                  V^4      # rK  rX  rJ  r  r;   rewriteLastShortZ$AppendingTiffWriter.rewriteLastShort        **rI   c               r>   rV  rD   rE   rG   r;   rH   r.    s     + +S +T +rI   c                	s&    V P                  V^4      # rO  rX  rJ  r  r;   rewriteLastLongZ#AppendingTiffWriter.rewriteLastLong  r[  rI   c               r   )r?   rx   rU   rI  rB   ry   rD   rE   rG   r;   rH   r.    s!     > >C >S >T >rI   c                	s    V P                   P                  \        P                  ! V P                  V P                  V4      ,           V4      4      pV P                  W24       R # rJ   )r   r  r   r8  rD  rJ  rS  )rq   rx   rI  rQ  r  r;   r<  ZAppendingTiffWriter._write  sD    KKdii
&;;UC
 	""==rI   c               r>   rV  rD   rE   rG   r;   rH   r.    s        rI   c                	s*    V P                  V^4       R# rW  r<  rJ  r  r;   
writeShortZAppendingTiffWriter.writeShort      E1rI   c               r>   rV  rD   rE   rG   r;   rH   r.    s      s t rI   c                	s*    V P                  V^4       R# r6   r]  rJ  r  r;   	writeLongZAppendingTiffWriter.writeLong  r_  rI   c               r   r   rD   rE   rG   r;   rH   r.    s      t rI   c                	s    V P                  4        V P                  '       d   V P                  P                  4        R # R # rJ   )r?  r/  r   r  r   rO   r;   r  ZAppendingTiffWriter.close  s&    ===FFLLN rI   c               r   r   rD   rE   rG   r;   rH   r.    s     '3 '3 '3rI   c           
     	sb   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: %drv  N)r;  r   r|  r   r7  rG  r   rq  
fieldSizesr3  rU  Tagsr{  r  r  r   r   r   r   r}  _fixOffsetsr  r  r  )rq   rH  re   r	  Z
field_typer  rI  Z
total_sizer  Zis_localr  Zcur_posr  r;   r=  Z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 !rI   c               r   )r?   r  rU   rI  rB   ry   rD   rE   rG   r;   rH   r.    s!     6 6 6# 6$ 6rI   c                	s\   \        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)r?   r7   l        r   )r|  r;  r3  r   r6  rU  r   r  r  r  r^  )rq   r  rI  re   r  rT  r   Zrewinds   &&&     r;   rc  Z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 rI   c               r_   )r?   r  rU   isShortrC   isLongrB   ry   rD   rE   rG   r;   rH   r.    s,     	3 	3	3#'	39=	3		3rI   c                	sT    V'       d   ^pMV'       d   ^pM^ pV P                  W4      # rK  )rc  )rq   r  rd  re  rI  r   r;   
fixOffsetsZAppendingTiffWriter.fixOffsets  s*     JJJ22rI   )r4  r   r0  r/  rD  r   r5  rE  r   r3  rF  rG  r2  N)r    rW   rW   r?   r7   r   rW   rW   r?   r7   r   r7   r   r7   r?   r7   r   >   i  r   i	  r   i   r    )Fr  )FF)&r   r   r   r   ra  rb  r   r1  r?  r@  rA  rB  r{  r%  r  r  r9  r7  r8  r  rJ  r;  rM  rP  ZstaticmethodrS  rU  rY  rZ  r\  r<  r^  r`  r  r=  rc  rf  r   rD   rI   r;   r,  r,    s    J(D44
4 /1kk -NO"$ $ $
	B'++>
'3R68	3 	3rI   r,  c               r   r  rD   rE   rG   r;   rH   rH   	  s(      + 9   rI   c           	     s   \        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  NrD   )r  r  r}  r   r*  r{  r,  Z_attach_default_encoderinfor  rs   r|  r  r  r@  )
r  rn  r  rg  Zcur_idxZtfZimsr  Znfrr   s
   &&&       r;   	_save_allrh  	  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   rD   )r&   z1;I)r&   z1;IR)r&   r&   )r&   z1;RrK  )r'   zL;2I)r'   zL;2IR)r'   zL;2)r'   zL;2RrO  )r'   zL;4I)r'   zL;4IR)r'   zL;4)r'   zL;4R)r   )r'   zL;I)r'   zL;IR)r'   r'   )r'   zL;R)i   )r(   zI;12)   )r(   r(   )r)   r)   )r(   zI;16R)r*   zI;16S)r*   zI;16BS)r  )i    )r+   r,   )r+   zF;32BF)r*   zI;32N)r*   r-   )r*   zI;32BS)r   r   )r.   r.   )r   r   r   )r/   r/   )r/   zRGB;R)r   r   r   r   )r0   r0   r  )r/   r1   )r   r   r   r   r   r  )r/   ZRGBXX)r   r   r   r   r   r   )r    r    r    )r/   ZRGBXXX)r0   ZRGBa)rW   r    )r0   ZRGBaX)rW   r    r    )r0   ZRGBaXX)r?   r    )r0   ZRGBAX)r?   r    r    )r0   ZRGBAXX)i  )ri  ri  ri  )r/   zRGB;16L)r/   zRGB;16B)ri  ri  ri  ri  )r0   zRGBA;16L)r0   zRGBA;16B)r/   zRGBX;16L)r/   zRGBX;16B)r0   zRGBa;16L)r0   zRGBa;16B)r2   zP;1)r2   zP;1R)r2   zP;2)r2   zP;2R)r2   zP;4)r2   zP;4R)r2   r2   )r2   ZPX)r3   r3   )r2   zP;R)r4   r4   )r4   ZCMYKX)r4   ZCMYKXX)r4   zCMYK;16L)r4   zCMYK;16B)r5   r5   )s   MM *s   II* s   MM* s   II *s   MM +s   II+ )Z
__future__r   r%  r)  Zloggingr  r  r   r,  Zcollections.abcr   r   Z	fractionsr   Znumbersr   r   Ztypingr   r   r	   r
   r   Z r   r   r   r   r   r   Z_binaryr   r  r   r  r   Z
_deprecater   Z_typingr   Z_utilr   r   r   r~   r   r   Z	getLoggerr   r  r  r  r  r   r   r&  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r'  r  r  r  Z	PREDICTORr  r  r  r  r#  r(  r  r  Z
JPEGTABLESr  r"  r  r  r  r  r  r  r$  ZIMAGEJ_META_DATA_BYTE_COUNTSZIMAGEJ_META_DATAr  r   r!  r  rk   r  rM   rs   r  rP   r^   rm   r   r   rw   rZ   rA   rC   r   r   r   r   rU   Z
_IFDv2Baser   r   r   r   r+  r  ZImageFileDirectoryr  r  r*  ZBytesIOr,  rh  Zregister_openrF   Zregister_saveZregister_save_allZregister_extensionsZregister_mime)Zkr  s   00r;   <module>rj     s  R # 	    	   4  $ 4 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"LQ|R D!VT"LS|T D!T2U|V D!T2W|X D!\2&(8Y|Z D!\2&(8[|\ D!_d+->]|^ D!_d+->_|` D!'02Da|b D!'02Dc|d D!%r*,@e|f D!%r*,@g|h D!T2
i|j D!T2
k|p D!Y#_q|r D!Y#_s|t D!Y#^u|v D!Y#^w|	| AyAA  uzz8$??:B?.%& 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 + wHI'' wHB #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-%	,s-l	i3"** i3X	8   M((- A   M((% 0   ,,i 8   -..0A B   M((, 7_D Cs   `