
    ői                     .   S SK r S SKrS SKrS SKrS SKJr  S SKJrJrJ	r	J
r
JrJr  S SKJr  S SKJr  S SKJr  SrSrS	rS rS
rSrSrSrSrSrSrS
S
SSSS
S
SSSSSS.r1 SkrS
SSSS.r 1 Skr!\ " S S\	5      5       r"\\#\$\RJ                  4   r&\\&\\"4   r' " S S\5      r(S\'4S jr)S r*S r+S r,S r-S r.S  r/S! r0S" r1S# r2S$ r3S% r4S& r5S' r6S( r7S) r8S* r9S+S+S+S+S+S,.S\'S-\:S.\:S/\:S0\:S1\:S2\(4S3 jjr;S+S4.S\'S0\:S2\
\<\<4   4S5 jjr=S\'S2\
\<\<4   4S6 jr>g)7    N)Decimal)BinaryIO
NamedTupleProtocolTupleUnionruntime_checkable)urlparse)urlopen)ElementTree                     )r   r   r   r   r   r      r   	   
         >      avif   avis   heic   heix   hevc   hevx   mif1   msf1)r   r   r   r   >            c                   D    \ rS rSrS
S\S\4S jjrSS\S\S\4S jjrSrg	)ReadSeekBinary7   sizereturnc                     g N )selfr*   s     S/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/imagesize/imagesize.pyreadReadSeekBinary.read9           offsetwhencec                     g r-   r.   )r/   r5   r6   s      r0   seekReadSeekBinary.seek<   r3   r4   r.   N)r   )r   )	__name__
__module____qualname____firstlineno__intbytesr1   r8   __static_attributes__r.   r4   r0   r(   r(   7   s4     e 3  C  r4   r(   c                   x    \ rS rSr% Sr\\S'   Sr\\S'   Sr\\S'   Sr	\\S'   Sr
\\S'   Sr\\S'   Sr\\S	'   S
rg)	ImageInfoD   r   widthheightrotationxdpiydpicolorschannelsr.   N)r:   r;   r<   r=   rD   r>   __annotations__rE   rF   rG   rH   rI   rJ   r@   r.   r4   r0   rB   rB   D   sE    E3OFCHcD#ND#NFCHcr4   rB   filepathc                 H   [        U [        5      (       a  U S4$ [        U [        5      (       aV  [        U 5      nUR                  S;   a;  [        U 5       n[        R                  " UR                  5       5      S4sS S S 5        $ [        U S5      S4$ ! , (       d  f       N= f)NF)httphttpsTrb)

isinstancer(   strr
   schemer   ioBytesIOr1   open)rL   parsedresponses      r0   
_open_filerY   N   s    (N++(C  (#==--"hzz(--/2D8 #"$%% #"s   &B
B!c                    U[         :X  a  [        U S-  S-   5      $ U[        :X  a  [        U S-  S-   5      $ U[        :X  a  [        U S-  S-   5      $ U[        :X  a  [        U S-  S-   5      $ U[
        :X  a  [        U S-  S-   5      $ U[        :X  a  [        U S-  S-   5      $ U[        :X  a  [        U S-  S-   5      $ U[        :X  a  U S	-  $ U[        :X  a  U S
-  $ U[        :X  a  U S-  $ U $ )Ng5B>g      ?gti0?gd?g
F%u?gK7A?gRQ@gffffff9@   i	  i8c  )_UNIT_KMr>   
_UNIT_100M	_UNIT_10M_UNIT_1M
_UNIT_10CM_UNIT_CM_UNIT_MM_UNIT_0_1MM_UNIT_0_01MM_UNIT_UM)densityunits     r0   _convertToDPIrh   Y   s   x7Y&,--		7X%+,,		7W$s*++		7V#c)**		7U?S())		7T>C'((		7T>C'((		}		~		Nr4   c                 v   [         R                  " SU 5      nU(       d  [        SU -  5      eUR                  5       u  p#[	        U5      nUS:X  a  [        U5      $ US:X  a#  [        U[	        S5      -  [	        S5      -  5      $ US:X  a#  [        U[	        S5      -  [	        S5      -  5      $ US	:X  a  [        U[	        S5      -  5      $ US
:X  a#  [        U[	        S5      -  [	        S5      -  5      $ US:X  a#  [        U[	        S5      -  [	        S5      -  5      $ US:X  a  [        U5      $ [        SU-  5      e)Nz(\d+(?:\.\d+)?)?([a-z]*)$zunknown length value: %s cm96z2.54mmz25.4inpc6pt72pxzunknown unit type: %s)rematch
ValueErrorgroupsr   float)valuematchedlengthrg   s       r0   _convertToPxr|   q   s   hh3U;G3e;<<>>#LFV_FrzV}	Vgdm+gfo=>>	Vgdm+gfo=>>	Vgdm+,,	Vgdm+gcl:;;	Vgdm+gdm;<<	V}
,t3
44r4   c                 N  ^ SnSnU R                  S5        U R                  S5      n[        U5      nUS:  a)  US S S;   a    [        R                  " SUSS 5      u  p!X!4$ US	:  a?  UR                  S
5      (       a)  USS S:X  a    [        R                  " SUSS	 5      u  p!X!4$ US:  a6  UR                  S
5      (       a    [        R                  " SUSS 5      u  p!X!4$ US:  ap  UR                  S5      (       aZ   U R                  S5        [        U 5        U R                  SS5        [        R                  " SU R                  S5      5      u  pX!4$ US:  aS  UR                  S5      (       a=  U R                  S5         [        R                  " SU R                  S5      5      u  pX!4$ US:  a  USS S:X  a  [        R                  " SUS S 5      S   nUS:  a  [        S5      eU R                  S5        U R                  US-
  5      m[        U4S j[         5       5      (       a)  [        U 5      u  p!  nUS:w  a	  US:w  a  X!4$ [        S5      e X!4$ US:  Ga2  UR                  S5      (       Ga  [        R                  " SUSS 5      S   nU R                  U5        [        R                  " SU R                  S5      5      S   n[        U5       H  n	[        R                  " S U R                  S5      5      u  ppU
S!:X  a)  US":X  a  [        US#-  5      nOCUS:X  a  UnO:[        S$5      eU
S%:X  a)  US":X  a  [        US#-  5      nOUS:X  a  UnO[        S&5      eUS:w  d  M  US:w  d  M    O   US:X  d  US:X  a  [        S'5      e X!4$ US:  a  UR                  S(5      (       a  [        R                  " S)USS 5      S   nU R                  U5        [        R                  " S*U R                  S5      5      S   n[        U5       HM  n	[        R                  " S+U R                  S5      5      u  ppU
S!:X  a  UnOU
S%:X  a  UnUS:w  d  ME  US:w  d  MM    O   US:X  d  US:X  a  [        S'5      e X!4$ US:  Ga"  UR                  S,5      (       Ga  [        R                  " S)USS 5      S   nUS:w  a  [        S-R                  W5      5      e[        R                  " S.USS 5      S   nU R                  U5        [        R                  " S.U R                  S5      5      S   n[        U5       HM  n	[        R                  " S/U R                  S05      5      u  ppU
S!:X  a  UnOU
S%:X  a  UnUS:w  d  ME  US:w  d  MM    O   US:X  d  US:X  a  [        S15      e X!4$ US2:  a  UR                  S35      (       d  UR                  S45      (       a  U R                  S5        U R                  S55      n UR                  S65      n[         R"                  " S7U5      R%                  S5      n[         R"                  " S8U5      R%                  S5      n[)        U5      n[)        U5      nX!4$ US S S::X  Ga8  USS S;;   Ga.  U R                  S5        / n U R                  S5      nUR+                  5       (       a  M)  US<:X  a  [        S=5      eUS>:X  a  U R-                  5         MR  UR/                  5       (       d  [        S?5      eUnU R                  S5      nUR/                  5       (       a-  UU-  nU R                  S5      nUR/                  5       (       a  M-  UR1                  [        U5      5        [        U5      S:X  a  O#U R                  S[2        R4                  5        GM  Uu  p!X!4$ UR                  S@5      (       a  USS SA:X  a  USS SB:X  a  [        R                  " SCUSDSE 5      u  p!X!4$ USS SF:X  aI  [        R                  " SGUS	SH SI-   5      S   S-   n[        R                  " SGUSHSE SI-   5      S   S-   nX!4$ USS SJ:X  a?  USKSL nUS   SM-  S-  US   -  S-   nUS"   SN-  S-  US   S-  -  US   SO-  S-	  -  S-   nX!4$ [        SP5      eUR                  SQ5      (       a  [        R                  " SRUSSSD 5      u  p!X!4$ ! [        R
                   a    [        S5      ef = f! [        R
                   a    [        S5      ef = f! [        R
                   a    [        S5      ef = f! [        R
                  [        4 a    [        S5      ef = f! [        R
                   a    [        S5      ef = f! [&         a    [        S95      ef = f)TNr   r   @   r   r   s   GIF87as   GIF89az<hhzInvalid GIF file      PNG

r         IHDR>LLInvalid PNG filer   r      r   z>HHr   Invalid JPEG file      jP  

0   Invalid JPEG2000 files   ftyp>LzInvalid HEIF filec              3   ,   >#    U  H	  oT;   v   M     g 7fr-   r.   ).0brandftyp_payloads     r0   	<genexpr>_get_size.<locals>.<genexpr>   s     ?,$,s      MM *>Hz>HHLL   r      z?Invalid TIFF file: width column data type should be SHORT/LONG.i  z@Invalid TIFF file: height column data type should be SHORT/LONG.z?Invalid TIFF file: width and/or height IDS entries are missing.   II* z<L<Hz<HHLL   II+ z@Invalid BigTIFF file: Expected offset to be 8, found {} instead.z<Qz<HHQQ   zBInvalid BigTIFF file: width and/or height IDS entries are missing.r   s   <?xmls   <svgi   zutf-8z[^-]width="(.*?)"z[^-]height="(.*?)"zInvalid SVG file   Ps   123456r4   zInvalid Netpbm file   #z&Invalid character found on Netpbm files   RIFFs   WEBPs   VP8 z<HH      s   VP8Xz<I       s   VP8L      ?         zUnsupported WebP file   BMz<ll   )r8   r1   lenstructunpackerrorrv   
startswith_seek_to_jpeg_sofany_HEIF_BRANDS_read_heif_metadataranger>   formatdecodert   searchgroup	Exceptionr|   isspacereadlineisdigitappendosSEEK_CUR)fhandlerE   rD   headr*   	ftyp_size_r5   ifdsizeitagdatatypecountdatabytesize_offsetsizesnext_chrbr   s                     @r0   	_get_sizer      s	   FELLO<<Dt9Drzd2Ah"88	1"MM%a<MEL =E 
(<==$r"+QXBX	1"MM%b=ME@ =y 
(<==	1"MM%a<MEr =k 
t{33	2LLOg&LLA"MM%aAMF^ =W 
(IJJR	6"MM%aAMFP =I 
Qq	W,MM$Ra1!4	q=011Q||IM2?,???"5g">E1a{v|}$011	 @| =q 
t':;;tT!AY/2V--gll1o6q9wA)/wR@P)Q&C5czq=u-E] E$%fggq= .F]!F$%ghh{v|#  $ B;&B,^__ 'D =A 
t':;;tT!AY/2V--gll1o6q9wA)/wR@P)Q&C5cz{v|   B;&B,^__ 'h =c 
t':;; --d1Qi8;a_ffgmnootT!BZ03V--gll1o6q9wA)/wR@P)Q&C5cz{v|   B;&B,abb 'D =} 
11T__W5M5MQ||D!	1;;w'DII2D9??BEYY4d;AA!DF U#f%h =c 
bqT	d1Qi94Q||AH!!3 !6774  "##%% !IJJD||AH""$$ "<<? ""$$ LLT#5zQLLR[[)9 :   = 
	!	!d1RjG&;2;'!"MM%b=ME = "R[G#MM$Re(;<Q?!CE]]4bu)<=a@1DF = "R[G#RAtbyQ&!A$.!3E!r	b(QqTQY7AaD3J1;LMQRRF =	 455			eT"R[9=K || 	1/00	1 || 	1/00	1 || 	1/00	1 j) 	2011	2 || 	6455	6`  	1/00	1sJ   c c< d  Ae (e+  Af  c9< d d?&e(+ ff$c                 0   U R                  S5        U R                  S5      nUR                  S5      (       d  g U R                  S5      nU(       d   gUS:X  a   U R                  S5      nUS:w  a  O
US:X  a  M   MC  U(       a  US;   a   g [        R                  " SU R                  S5      5      S   nUS:  a   gU R                  US-
  5      nUS	:w  d  UR                  S
5      (       d  M  [        USS  5      $ ! [        R
                   a     gf = f)Nr   r   r   r   r      )      r         Exif  r   )r8   r1   r   r   r   r   #_read_orientation_from_exif_payload)r   r   marker_startmarker_codesegment_sizepayloads         r0   _read_jpeg_exif_rotationr   =  s   LLO<<?D??;''
||A0 / g%!,,q/Kg% g%
 k-?? 	!==w||A?BL !  ,,|a/0'!););O)L)L2712;?? || 	 	s   )C> >DDc                    U R                  S5      nUS:X  a  U R                  S5      nUS:X  a  M  U(       d  [        S5      eUS   n[        R                  " SU R                  S5      5      S   S-
  nUS:  a  [        S5      eX#4$ )Nr   r   zUnexpected end of JPEG filer   r   r   zInvalid JPEG segment size)r1   rv   r   r   )r   marker_bytemarkerr   s       r0   _read_jpeg_segment_headerr   a  s    ,,q/K

 ll1o 
 677^F==w||A7:Q>La455r4   c                     SnSnSUs=::  a  S::  a  O  O
U[         ;  d=  U R                  US5        [        U 5      u  p!SUs=::  a  S::  d  M.  O  N1U[         ;  d  M=  X!4$ )Nr   r   r      r   )_JPEG_NO_SOF_MARKERSr8   r   )r   
block_sizer   s      r0   r   r   n  sa    JFv%%&8L*LZ#6w? v%%%&8L*L r4   c                    [        U 5      S:  a  gU S S nUS:X  a  SnO
US:X  a  SnOg [        R                  " US-   U S	S 5      S
   nUS-   [        U 5      :  a  g [        R                  " US-   XUS-    5      S
   nUS-   n[	        U5       Hn  nUS-   [        U 5      :  a    g [        R                  " US-   XUS-    5      u  pxpUS:X  a)  US:X  a#  U	S:X  a  US:X  a  [        U
S-  5      s  $ U
S-  s  $ US-  nMp     g! [        R                   a     gf = f! [        R                   a     gf = f! [        R                   a       gf = f)Nr   r   r   s   II<s   MM>Lr   r   Hr   HHLL  r   r   r   i  )r   r   r   r   r   r>   )	exif_dataendian_tokenendianfirst_ifd_offset	ifd_countcursorr   r   r   r   ry   s              r0   r   r   w  s~   
9~Ra=Lu		!==#y1~FqI !c)n,MM&3,	K[^_K_0`abcd	 !F9B;Y'	*0--Z`ceZeIf*g'C5 &=X]uz)/33uu}%JEFNJ"  + <<  <<  || 		s5    D "D ("D7DDD43D47EEc                     [        U 5      u    pnUS:w  a  U$ US:w  a  U$ U R                  S5        U R                  5       nSnUR                  U5      nUS:X  a  g[	        XF[        U5      -   S  5      $ )Nr   r   r   )r   r8   r1   findr   r   )r   r   property_rotationexif_rotationr   r   starts          r0   _read_heif_exif_rotationr     s|    -@-I*Aq]B  LLO<<>DFIIfE{.tCK4G4H/IJJr4   c              #   >  #    UnUS-   U::  a  [         R                  " SXUS-    5      S   nXS-   US-    nSnUS:X  a/  US-   U:  a  g [         R                  " SXS-   US-    5      S   nSnO
US:X  a  X#-
  nXF:  d  X4-   U:  a  g X4XV4v   X4-  nUS-   U::  a  M  g g 7f)Nr   r   r   r   r   r   z>Q)r   r   )r   r   endr5   r*   box_typeheader_sizes          r0   _iter_iso_boxesr     s     F
1*
}}T4vz#:;A>
6A:.19{S ==tQJv{'CDQGDKQY<D!4H11 1*
s   BBBc                    U R                  S5        U R                  5       nS n[        US[        U5      5       H  u  p4pVUS:X  d  M  X4U4n  O   Uc  gUu  pxn	Xy-   S-   n
Xx-   nS n/ n0 n0 n0 n[        XU5       GH,  u  p4pVX6-   nX4-   nUS:X  aq  UU   nUS:X  a.  US-   U::  a%  [        R
                  " SUUS-   US-    5      S   nMN  US:  a0  US-   U::  a%  [        R
                  " S	UUS-   US-    5      S   nM  M  M  US
:X  Gas  US-   U::  Gai  UU   nUS:X  a)  [        R
                  " SUUS-   US-    5      S   nUS-   nO3US-   U:  a  M  [        R
                  " S	UUS-   US-    5      S   nUS-   n[        U5       H  nUS-   U:  a    GM  [        R
                  " S	UUUS-    5      S   nUUS-   US-    nUU-   nUS:  d  UU:  a    GMY  US:X  a  US-   U::  a  US-   nUU   nUS:X  a=  US-   U::  a4  [        R
                  " SUUS-   US-    5      S   nUUS-   US-    nUUU'   OBUS:  a<  US-   U::  a3  [        R
                  " S	UUS-   US-    5      S   nUUS-   US-    nUUU'   UnM     GM   US:X  Ga  US-   U::  Ga~  UU   nUS-   nUS-   U:  a  GM'  UU   S-	  nUU   S-  nUS-  nUU   S-	  n US;   a  UU   S-  OSn!US-  nUS:  a2  US-   U:  a  GMk  [        R
                  " SUUUS-    5      S   n"US-  nO1US-   U:  a  GM  [        R
                  " S	UUUS-    5      S   n"US-  n[        U"5       GH  nUS:  a3  US-   U:  a    GM  [        R
                  " SUUUS-    5      S   nUS-  nO2US-   U:  a    GM  [        R
                  " S	UUUS-    5      S   nUS-  nUS;   a  US-   U:  a    GMO  US-  nUS-   U:  a    GMa  US-  nUU -   U:  a    GMs  U (       a  [        R                  UUUU -    S5      OSn#UU -  nUS-   U:  a    GM  [        R
                  " SUUUS-    5      S   n$US-  n/ n%[        U$5       H  nUS;   a  U!(       a  UU!-   U:  a    OUU!-  nUU-   U-   U:  a    OnU(       a  [        R                  UUUU-    S5      OSn&UU-  nU(       a  [        R                  UUUU-    S5      OSn'UU-  nU%R                  U#U&-   U'45        M     U%(       d  GM  U%UU'   GM     GM  US:X  d  GM  [        UUU5       GH  u  n(n)n*n+U(U+-   n,U(U)-   n-U*S:X  a  [        [        UU,U-5      5      nM1  U*S:X  d  M9  U,S-   U-::  d  MD  [        R                  UU,S-   U,S-    S5      n.[        U.S-  5      n/U,S-   nUS-   U-:  a  M  [        R
                  " S	UUUS-    5      S   nUS-  n[        U5       H  nUS-   U-:  a    M  [        R
                  " SUUUS-    5      S   nUS-  nUU   n0US-  n/ n1[        U05       Hy  nU/(       aF  US-   U-:  a    Oh[        R
                  " SUUUS-    5      S   n2US-  nU1R                  U2S-  5        MP  US-   U-:  a    O"UU   n2US-  nU1R                  U2S-  5        M{     U1UU'   M     GM     GM/     U(       d  gUR                  U[        [        S[        U5      S-   5      5      5      n3S=n4=n5=n6n7U3 H  n8SU8s=::  a  [        U5      ::  d  O  M  UU8S-
     u  n(n)n*n+U(U+-   n,U*S:X  a1  U,S-   U(U)-   ::  a%  [        R
                  " SUU,S-   U,S-    5      u  n4n5Mf  U*S:X  d  Mn  U,S-   U(U)-   ::  d  M|  [        R                  UU,S-      S-  S5      n6M     UR                  5        H  u  nnUS :w  a  M  UR                  U/ 5       Hy  u  n&n'U'S:  a  M  U&U'-   n9U&S:  d  U9[        U5      :  a  M*  UU&U9 n:S[        R
                  " S	U:S S 5      S   -   n;U;S-   [        U:5      :  a  Mc  [        U:U;S  5      n7U7S:w  d  My    O   U7S:w  d  M    O   U4U5U6U74$ )!Nr   s   meta)r   r   r   r   r   s   pitmr   r   r   r   s   iinfs   infe   r   r   r   r   s   ilocr   r   )r   r   bigs   iprps   ipcos   ipmai     r   s   isper   s   irotr   s   Exif)r8   r1   r   r   r   r   r   r>   
from_bytesr   listboolget_HEIF_IROT_TO_EXIFitemsr   )<r   r   meta_boxr5   r*   r   r   meta_offset	meta_sizemeta_header
meta_startmeta_endprimary_item_id
propertiesassociations
item_typesitem_extentspayload_startpayload_endversionentry_countr   r   
entry_size
entry_type	entry_endinfe_payloadinfe_versionitem_id	item_typeoffset_sizelength_sizebase_offset_size
index_size
item_countbase_offsetextent_countextentsextent_offsetextent_lengthp_offsetp_sizep_typep_headerp_payload_startp_payload_endflagsis_large_indexassoc_count
item_propsry   target_indexesrD   rE   rF   r   index
extent_end	exif_itemtiff_offsets<                                                               r0   r   r     s	   LLO<<>DH/>tQD	/R+hwk2H 0S *2'KK*Q.J&HOJLJL/>tQY/Z+h,mw=)G!| 1[ @"(--d=1;L]]^M^6_"`ab"c1!2k!A"(--d=1;L]]^M^6_"`ab"c "B ]Q%6+%E=)G!|$mmD$}q7HYZIZ2[\]^_&* 1${2$mmD$}q7HYZIZ2[\]^_&*;'A:+#]]4fVaZ1HI!L
!&1*VaZ8
"Z/	>Y%<(Vb[K-G#)A:L#'#5L#q(\B->)-K"(--d<!;KL[\L\6]"^_`"a$()9,:K$L	.7
7+%*|b/@I/M"(--d<!;KL[\L\6]"^_`"a$():<";L$M	.7
7+"' ((  ]Q%6+%E=)G"Q&FzK'v,!+Kv,-KaKF#F|q029V2C$v,-JaKF{A:+#]]4fVaZ1HI!L
!A:+#]]4fVaZ1HI!L
!:&Q;zK/$mmD$vfqj2IJ1MGaKFzK/$mmD$vfqj2IJ1MGaKFf$zK/aKFA:+!,,{:_ocnnT&BR9R-SUZ[uv**A:+%}}T4vz3JKAN!|,A&(Z!J.<!*,+k9KG`kCNN4v?S3TV[$\qrMk)F`kCNN4v?S3TV[$\qrMk)FNNK-$?#OP - 7,3L)] '^  6EdM[f6g2&&("*X"5 (6 1W$!%odO]&[!\Jw&?Q+>-+ONN4!0COVWDW+XZ_`E%)%!)_N,q0FzM1 "(--d6&1*6M"Nq"QKaKF";/!A:5!"(--d6&1*6M"Nq"Q!&*6l!%'
!&{!3A-#)A:#=$)(.dDQR
<S(TUV(W &! * 1 1%&. A#)A:#=$)(,V &! * 1 1%$, ? "4 1;W-+ 0 7hc 0[j !%%otE!S_WXEX<Y7Z[N022E2F2XU-c*o--7	-B*&&("X-W2!5F9J!J"MM%o6I/\^J^1_`ME6w?Q#6(V:K#K)--d?Q3F.G$.NPRSH   )..0,8,<,<Wb,I(M=q &6Jq JT$:]:6IfmmD)BQ-@CCKQY/?	+,@WXM" -J B# 1& &(M11r4   c                 R   U R                  S5        U R                  S5      n[        U5      S:  a  gUR                  S5      (       a  SnSnO7UR                  S5      (       a  S	nSnOUR                  S
5      (       a  S	nSnOg U(       Gam  [        U5      S:  a  g[        R
                  " US-   USS 5      S   nUS:w  a  g[        R
                  " US-   USS 5      S   nU R                  U5        [        R
                  " US-   U R                  S5      5      S   n[        U5       H  nU R                  S5      n[        U5      S:  a    g[        R
                  " US-   US S 5      u  p[        R
                  " US-   USS 5      S   nUSS nU	S:X  d  Mq  US:X  d  My  U
S:X  a"  [        R
                  " US-   US S 5      S   s  $ U
S:X  d  M  [        R
                  " US-   US S 5      S   s  $    g[        R
                  " US-   USS 5      S   nU R                  U5        [        R
                  " US-   U R                  S5      5      S   n[        U5       H  nU R                  S5      n[        U5      S:  a    g[        R
                  " US-   US S 5      u  pnUSS nU	S:X  d  MR  US:X  d  MZ  U
S:X  a"  [        R
                  " US-   US S 5      S   s  $ U
S:X  d  M  [        R
                  " US-   U5      S   s  $    g! [        R                   a     gf = f)Nr   r   r   r   r   r   Fr   r   r   Tr   r   r   Qr   HHr   r   r   r   r   r   HHL)r8   r1   r   r   r   r   r   r   )r   r   r   
is_bigtiffbytesize
ifd_offsetr  r   entryr   r   r   value_fields                r0   _read_tiff_rotationr9    s   LLO<<D
4y1}z""
		$	$
		$	$
'4y2~}}Vc\4!9=a@H1}v|T!BZ@CJLL$ --gll1oFqIK;'R(u:? &ftmU2AY GfslE!BK@C#Brl#:%1*1}%}}Vc\;r?KANN1}%}}Vc\;r?KANN ( ]]6C<a;A>
Z mmFSL',,q/B1E{#ALL$E5zB#)==%r#K C5"+Kczeqjq=!==#{2AGJJq=!==#{CAFF $  << so   L &L BL AL L &'L L !L 8L ;BL )L 5L ='L %L -L L L&%L&c                 d    [        U 5      nUS:w  a  U$ [        U 5      nUS:w  a  U$ [        U 5      $ )Nr   )r   r   r9  )r   rF   s     r0   _get_rotationr;    s9    '0H2~'0H2~w''r4   c                     U S;   $ )N>   r   r   r   r   r.   )rF   s    r0   _is_rotation_swappedr=    s    |##r4   c                 F   SnSnU R                  S5        U R                  S5      n[        U5      nUS:  a  US S S;   a   X4$ US:  a  UR                  S5      (       a  SnUSS  n US
S nUS:X  aN   [        R
                  " SUSS  5      u  pn
U
(       a!  [        U[        5      n[        U	[        5      nOUnU	n X4$ US:X  a   X4$  [        R
                  " SUSS
 5      u  nX[S-   -  nU R                  U5        U R                  S5      nM  US:  a  UR                  S5      (       a   U R                  S5        SnSnSUs=::  a  S::  d  O  U R                  US5        [        U 5      u  pUS:X  as  U R                  SS5        [        R
                  " SU R                  S5      5      u  pn	U
S:X  d  U
S:X  a  UnU	nO&U
S:X  a   [        U[        5      n[        U	[        5      nOSUs=::  a  S::  d  M  O  N X4$ X4$ US:  Ga  UR                  S5      (       Gaj  U R                  S5        [        R
                  " SU R                  S
5      5      S   S-
  nU R                  S
S5        Sn US:  ab  U R                  S5      nUS
S  nUS:X  a  S	nUS-  nO>[        R
                  " SUS S
 5      u  nU R                  US-
  S5        UU-  nUS:  a  Mb  U(       a  US:  a  U R                  S5      nUS
S  nUS :X  aF  [        R
                  " S!U R                  S5      5      u  pnn[        UU5      n[        U	U5      n X4$ [        R
                  " SUS S
 5      u  nU R                  US-
  S5        UU-  nUS:  a  M  X4$ X4$ ! [        R                   a    [        S5      ef = f! [        R                   a    [        S5      ef = f! [        R                  [        4 a    [        S5      ef = f! [        R                   a    [        S"5      ef = f)#Nr   r   r   r   r   r   r   r   Tr   s   pHYsz>LLBr   s   IDATr   r      r   r   r   r   r      r   z>BHHr   r   r       Fs   res s   resdz>HHBBr   )r8   r1   r   r   r   r   r   rv   rh   r_   r   ra   )r   xDPIyDPIr   r*   chunkOffsetchunk	chunkTypexDensityyDensityrg   dataSizer   r   
headerSizefoundResBox	boxHeaderboxTypeboxSizeyUnitxUnits                        r0   _get_dpirQ    sU   DDLLO<<Dt9D rzd2Ah"88f :c 
(<==QRa
IG#9/5}}VU12Y/O,H (8<D(8<D#D#DB :A g%~ :{9 &dE!AJ ?IH "},[)R(/ 2 
t{33	2LLOJFf,,Z+%>w%G"T>LLA&/5}}VW\\RS_/U,DHqyDAI'',Xx@,Xx@ f,,,` :4:A 
(IJJR]]4a9!<q@
Q	6q.#LLO	#AB-g%"&K!OJ!==y!}=Wq[!,g%
 q.  1n 'QI'mG');A==RYR^R^_aRb;c8E5,Xu=,Xu= :  &}}T9Ra=AHGLL1a0')J !1n :4:S || 9$%7889 || 9$%78890 j) 	2011	2@ || 	6455	6sK   5N N4 1B;O -O =O 6A&P  A+P  <P   N14 O&O=  P c                 p   SnU R                  S5        U R                  S5      n[        U5      S:  a%  US S S;   a  US   nUS-  (       a  S	US
-  S-   -  nU$ [        U5      S:  aN  UR                  S5      (       a8  USS S:X  a/  US   nUS   nSSSSSS.R	                  U5      nU(       a  S	XF-  -  nU$ )Nr   r   rA  r   r   r   r      r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r8   r1   r   r   r   )r   rI   r   packed	bit_depth
color_typerJ   s          r0   _get_colorsrX  ;  s    FLLO<<D
4yB48'==bD=FTMQ./F M 
TbT__-ABBtBr{V]G]H	"X

 #j/ 	 9/0FMr4   c                    SnU R                  S5        U R                  S5      n[        U5      nUS:  a>  UR                  S5      (       a(  USS S:X  a  US	   nS
SS
SSS.R	                  US5      nU$ US:  ap  UR                  S5      (       aZ   U R                  S5        [        U 5        U R                  SS
5        [        R                  " SU R                  S
5      5      S   nU$ US:  a  US S S;   a  SnU$ US:  aO  UR                  S5      (       a9  [        R                  " SUSS 5      S   nUS::  a  S
nU$ US:X  a  SnU$ US:X  a  SnU$ ! [        R                  [        4 a    [        S5      ef = f)Nr   r   rA  r   r   r   r   r   r   r   r   r   r   rT  r   r   z>Br   r   r   r   r   r      r   r   r   )
r8   r1   r   r   r   r   r   r   r   rv   )r   rJ   r   r*   rW  rV  s         r0   _get_channelsr[  R  s   HLLO<<Dt9Drzdoo&:;;Rw@V"X

 #j"
 	4 O' 
t{33	2LLOg&LLA}}T7<<?;A>H O 
Ra$:: O 
..MM$R4Q7	>H O "_H O "_HO j) 	2011	2s   AE &E:Tr*   dpirI   r   rJ   r*   r]  rI   r   rJ   r+   c          
         [        U 5      u  pg S=n=n	=n
=n=n=pU(       a1  [        U5      u  p[        U5      n
U(       a  [        U
5      (       a  XpU(       a  [	        U5      u  pU(       a  [        U5      nU(       a  [        U5      n[        XXXUS9U(       a  UR                  5         $ $ ! U(       a  UR                  5         f f = f)Nr   )rD   rE   rF   rG   rH   rI   rJ   )	rY   r   r;  r=  rQ  rX  r[  rB   close)rL   r*   r]  rI   r   rJ   r   should_closerD   rE   rF   rG   rH   color_countchannel_counts                  r0   get_inforc  x  s    &x0GPRRRRRDR4R+%g.ME$W-H!5h!?!? &v!'*JD%g.K)'2MuhX\  |I  JMMO <MMO s   BB0 0C
)r   c          	      p     [        U SSSUSS9nUR                  UR                  4$ ! [         a     gf = f)z
Return (width, height) for a given img file content.
Set exif_rotation=False to return stored dimensions as-is.
:type filepath: Union[bytes, str, pathlib.Path]
:rtype Tuple[int, int]
TFr\  r   r   )rc  r   rD   rE   )rL   r   infos      r0   r   r     sF    tuTalqr ::t{{""  s   ( 
55c                 l     [        U SSSS9nUR                  UR                  4$ ! [         a     gf = f)z
Return (x DPI, y DPI) for a given img file content
no requirements
:type filepath: Union[bytes, str, pathlib.Path]
:rtype Tuple[int, int]
FT)r*   r]  rI   re  )rc  r   rG   rH   )rL   rf  s     r0   getDPIrh    s@    u$uE 99dii  s   & 
33)?rT   r   rt   r   decimalr   typingr   r   r   r   r   r	   urllib.parser
   urllib.requestr   	xml.etreer   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   
_UNIT_INCH_TIFF_TYPE_SIZESr   r   r   r(   rR   r?   PathLike	PathInput	FileInputrB   rY   rh   r|   r   r   r   r   r   r   r   r   r9  r;  r=  rQ  rX  r[  r   rc  r>   r   rh  r.   r4   r0   <module>rs     s   	 	 	   R R ! " !
	

   		  *  X   #ubkk)*	)X~56	
 & &052pf!H
 "JK &M2`;|($]@.#L 37DY]#'$y 4 T RV  37CL, 7; #) #t #uS#X # Y  5c?  r4   