
    Bwg8|                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZ ddlmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ erddlmZ ddZ ddZ!ddZ"ddZ#ddZ$i ddde#fddde#fddde#fddde#fdd d!e fd"d#d$e#fd%d&d'e#fd(d)d*e#fd+d,d-d.d/e#fd0d1d2e#fd3d4d5e#fd6d7d8e fd9d:d;e#fd<d=d>e#fd?d@dAe#fdBdCi dDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXe fdYdZd[e$fd\d]d^e fd_d`dae fdbdcdde#fdedfdge fdhdidje!fdkdldme!fi dndodpe!fdqdrdse!fdtdudve!fdwdxdye!fdzd{d|e!fd}d~de!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddddddddddddddddddde"fdZ%ddZ& G d dej"                        Z'ddZ(ddZ)dddddddZ*dZ+d dddZ,ddZ-ddZ.ddZ/	 d	 	 	 	 	 ddZ0 ejb                  e'jd                  e0e&        ejf                  e'jd                  e.        ejh                  e'jd                  g d        ejj                  e'jd                  d       y)    )annotationsN)IOTYPE_CHECKINGAny   )Image	ImageFile)i16be)i32be)o8)o16be)	deprecate)presetsMpoImageFileJpegImageFilec                    t        | j                  j                  d            dz
  }t        j                  | j                  |       y )N   )i16fpreadr	   
_safe_read)selfmarkerns      J/var/www/horilla/myenv/lib/python3.12/site-packages/PIL/JpegImagePlugin.pySkipr   >   s1    DGGLLOq A!$    c                ^   t        | j                  j                  d            dz
  }t        j                  | j                  |      }d|dz   }|| j
                  |<   | j                  j                  ||f       |dk(  r|d d dk(  rt        |d      x| j                  d<   }t        |d	      | j                  d
<   	 |d   }t        |d      t        |d      f}|dk(  r|| j                  d<   n$|dk(  rt        d |D              | j                  d<   || j                  d<   || j                  d<   y |dk(  rf|d d dk(  r^d| j                  v r| j                  dxx   |dd  z  cc<   y || j                  d<   | j                  j                         |z
  dz   | _        y |dk(  r+|d d dk(  r#|j                  dd      d   | j                  d<   y |dk(  r|d d dk(  r|| j                  d<   y |dk(  r$|d d dk(  r| j                  j                  |       y |d k(  r|d d! d"k(  rd!}| j                  j!                  d#i       }	|||dz    d$k(  r	 |dz  }t        ||      }
|dz  }||   }|d|z   z  }||dz  z  }t#        ||      }|dz  }||||z    }|
d%k(  r9t#        |d&      d'z  t        |d      t#        |d      d'z  t        |d      d(|	|
<   n||	|
<   ||z  }||dz  z  }|||dz    d$k(  ry y |d)k(  r7|d d d*k(  r/t        |d      | j                  d+<   	 |d,   }|| j                  d-<   y |dk(  rI|d d d.k(  r@|dd  | j                  d/<   | j                  j                         |z
  dz   | j                  d0<   y y y # t        $ r Y y w xY w# t$        j&                  $ r Y y w xY w# t(        $ r Y y w xY w)1Nr   APP        s   JFIF   jfif   jfif_version      
   r   dpic              3  &   K   | ]	  }|d z    yw)RQ@N ).0ds     r   	<genexpr>zAPP.<locals>.<genexpr>_   s     (HaT(Hs   	jfif_unitjfif_density     s   Exif  exif      http://ns.adobe.com/xap/1.0/     xmp  s   FPXR flashpix      ICC_PROFILE      s   Photoshop 3.0 	photoshops   8BIMi  r   i   )XResolutionDisplayedUnitsXYResolutionDisplayedUnitsY  s   Adobeadobe   adobe_transforms   MPF mpmpoffset)r   r   r   r	   r   appapplistappendinfodivmodtuple	Exceptiontell_exif_offsetspliticclist
setdefaulti32structerror
IndexError)r   r   r   srL   versionr2   r3   offsetrA   codename_lensizedatarI   s                  r   r    r    C   s   
 	DGGLLOq ATWWa(A}
CDHHSMLLa!AbqEW,&)!Qi/		&G$*7C$8		.!	5!Iq!9c!Rj0L A~#/		% a#((H<(H#H		% %.DIIk"(4DIIn%	6	ae{2TYYIIf12& !DIIf $ 2Q 6D	6	af(KK777A.q1		%	6	aey0 !		*	6	af(88 	A	6	af(<<II((b9	!$/!1f~!V9!h,&&1*$1f~!&4-06>'*4|e';+.tQ<'*4|e';+.tR=	'IdO '+IdO$&1*$3 !$/: 
6	aex/ AY		'	;eO ,;DII'(	6	aex/AB%		$ !% 2Q 6		* 0	[  		B <<   		s7   >M8 BN N  8	NNNN 	N,+N,c                   t        | j                  j                  d            dz
  }t        j                  | j                  |      }|| j
                  d<   || j                  d<   | j                  j                  d|f       y )Nr   commentCOM)	r   r   r   r	   r   rO   rL   rM   rN   )r   r   r   r\   s       r   re   re      sf     	DGGLLOq ATWWa(ADIIiDHHUOLL
#r   c                &   t        | j                  j                  d            dz
  }t        j                  | j                  |      }t        |d      t        |d      f| _        |d   | _        | j                  dk7  rd| j                   d}t        |      |d   | _        | j                  dk(  rd	| _	        nI| j                  dk(  rd
| _	        n2| j                  dk(  rd| _	        nd| j                   d}t        |      |dv rdx| j                  d<   | j                  d<   | j                  r| j                  j                          | j                  d   d   t        | j                        k(  r.| j                  D cg c]  }|dd  	 }}dj                  |      }nd }|| j                  d<   g | _        t        dt        |      d      D ];  }|||dz    }	| j                   j#                  |	d   |	d   dz  |	d   dz  |	d   f       = y c c}w )Nr      r   r   r)   zcannot handle z-bit layersr$   LRGBr#   CMYKz-layer images)        progressiveprogression   r@   r   icc_profiler5      r!   )r   r   r   r	   r   _sizebitsSyntaxErrorlayers_moderO   rV   sortlenjoinrangelayerrN   )
r   r   r   r\   msgpprofilerr   its
             r   SOFr      s    	DGGLLOq ATWWa(AQC1I%DJ!DIyyA~tyyk5#A$DK{{a
		
		
t{{m=9#11>??		- 499]#;||<<?2#dll"33'+||4!qv4G4((7+KK#.		- 1c!fa  ?a!a%L

1Q41QqTBY!=>? 5s   Hc                   t        | j                  j                  d            dz
  }t        j                  | j                  |      }t        |      r|d   }|dz  dk(  rdnd}d|dz  z   }t        |      |k  rd}t        |      t        j                  |dk(  rdnd|d|       }t        j                  d	k(  r|dkD  r|j                          t        D 	cg c]  }	||	   	 c}	| j                  |d
z  <   ||d  }t        |      ry y c c}	w )Nr   r   rs   r   @   zbad quantization table markerBHlittler!   )r   r   r   r	   r   rz   rv   arraysys	byteorderbyteswapzigzag_indexquantization)
r   r   r   r\   v	precision	qt_lengthr~   rb   r   s
             r   DQTr      s     	DGGLLOq ATWWa(A
a&aDr'Q,AQ		B&	q6I1Cc""{{)q.3c1Qy>J==H$QMMO6B$CT!W$C!b&!ijM a& %Ds   D	i  SOF0zBaseline DCTi  SOF1zExtended Sequential DCTrk   SOF2zProgressive DCTi  SOF3zSpatial losslessi  DHTzDefine Huffman tablei  SOF5zDifferential sequential DCTrl   SOF6zDifferential progressive DCTi  SOF7zDifferential spatiali  )JPG	ExtensionNi  SOF9zExtended sequential DCT (AC)rm   SOF10zProgressive DCT (AC)i  SOF11zSpatial lossless DCT (AC)i  DACz%Define arithmetic coding conditioningi  SOF13z Differential sequential DCT (AC)rn   SOF14z!Differential progressive DCT (AC)i  SOF15zDifferential spatial (AC)i  )RST0z	Restart 0Ni  )RST1z	Restart 1Ni  )RST2z	Restart 2Ni  )RST3z	Restart 3Ni  )RST4z	Restart 4Ni  )RST5z	Restart 5Ni  )RST6z	Restart 6Ni  )RST7z	Restart 7Ni  )SOIzStart of imageNi  )EOIzEnd of imageN  SOSzStart of scani  r   zDefine quantization tablei  DNLzDefine number of linesi  DRIzDefine restart intervali  DHPzDefine hierarchical progressioni  EXPzExpand reference componentr"   APP0zApplication segment 0r4   APP1zApplication segment 1r;   APP2zApplication segment 2i  APP3zApplication segment 3i  APP4zApplication segment 4i  APP5zApplication segment 5i  APP6zApplication segment 6i  APP7zApplication segment 7i  APP8zApplication segment 8i  APP9zApplication segment 9i  APP10zApplication segment 10i  APP11zApplication segment 11i  APP12zApplication segment 12r?   APP13zApplication segment 13rF   APP14zApplication segment 14i  APP15zApplication segment 15i  )JPG0zExtension 0Ni  )JPG1zExtension 1Ni  )JPG2zExtension 2N)JPG3zExtension 3N)JPG4zExtension 4N)JPG5zExtension 5N)JPG6zExtension 6N)JPG7zExtension 7N)JPG8zExtension 8N)JPG9zExtension 9N)JPG10zExtension 10N)JPG11zExtension 11N)JPG12zExtension 12N)JPG13zExtension 13Nre   Comment)i  i  i  i  i  i  i  i  i  i    i  c                    | d d dk(  S )Nrg   s   r.   )prefixs    r   _acceptr   F  s    "1:((r   c                       e Zd ZdZdZddZddZd fdZd fdZddZ		 	 	 	 	 	 ddZ
dd	Zdd
ZddZddZ xZS )r   JPEGzJPEG (ISO 10918)c                B   | j                   j                  d      }t        |      sd}t        |      d}dx| _        | _        d| _        g | _        i | _        i | _	        i | _
        i | _        g | _        g | _        	 |d   }|dk(  r*|| j                   j                  d      z   }t        |      }n| j                   j                  d      }Q|t        v rt        |   \  }}}|	 || |       |dk(  rK| j                   }| j                   dk(  rd	}t#        j$                  d
d| j&                  z   d|df      g| _        nS| j                   j                  d      }n5|dv rd}n.|dk(  r| j                   j                  d      }nd}t        |      | j+                          y )Nrg   znot a JPEG file   r      r   r   rj   CMYK;Ijpegr   r    >     r   i   zno marker found)r   r   r   rv   ru   rw   rT   r}   _huffman_dc_huffman_acr   rL   rM   rV   r   MARKERmoder	   _Tilera   tile_read_dpi_from_exif)r   r\   r~   r   namedescriptionhandlerrawmodes           r   _openzJpegImageFile._openS  s   GGLLOqz#Cc"" #$#	DK 79
+-+-24%'02$&!ADyQ'F GGLLOF{-3AY*k7&D!$;"iiGyyF*"*!0BAQS}U!DI GGLLOk!fGGLLO'!#&&? B 	  "r   c                V    |dv rt        |d       t        | d|z         S t        |      )N)
huffman_ac
huffman_dcr=   _)r   getattrAttributeError)r   r   s     r   __getattr__zJpegImageFile.__getattr__  s1    //dB4t,,T""r   c                R    t         |          | j                  | j                  gz   S N)super__getstate__rw   r}   )r   	__class__s    r   r   zJpegImageFile.__getstate__  s#    w#%djj(AAAr   c                H    t         |   |       |dd  \  | _        | _        y )Nr$   )r   __setstate__rw   r}   )r   stater   s     r   r   zJpegImageFile.__setstate__  s$    U#"')TZr   c                    | j                   j                  |      }|s$t        j                  rt	        | d      sd| _        y|S )z
        internal: read more image data
        For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
        so libjpeg can finish decoding
        _endedTs   )r   r   r	   LOAD_TRUNCATED_IMAGEShasattrr   )r   
read_bytesr\   s      r   	load_readzJpegImageFile.load_read  s;     GGLL$Y44WT8=T DKr   c                   t        | j                        dk7  ry | j                  ry | j                  d   \  }}}}d}| j                  }t	        |t
              sJ |d   dk(  r|dv r|| _        |df}|rt        | j                  d   |d   z  | j                  d   |d   z        }dD ]	  }	||	k\  s	 n |J |d   |d   |d   |d   z
  	z   dz
  |	z  |d   z   |d   |d   z
  |	z   dz
  |	z  |d   z   f}| j                  d   |	z   dz
  |	z  | j                  d   |	z   dz
  |	z  f| _        |	}t        j                  ||||      g| _        |df| _        dd|d   |z  |d   |z  f}
| j                  |
fS )	Nr   r   ri   )rh   YCbCrr   )r)   r#   r   r   r   rg   )rz   r   decoderconfigra   
isinstancerQ   rx   minrt   r	   r   r   )r   r   ra   r0   eoascaleoriginal_sizer\   boxs              r   draftzJpegImageFile.draft  s    tyy>Q YYq\
1a		!U###Q45=T^3DJbA		!Q/1a1HIE! A: = =!!1!q1$*QqT11!q1$*QqT1	A  99Q<!+a/A5		!q8H18LQR7RSDJE__Q1a01	#QZ!]1%-}Q/?%/GHyy#~r   c                
   t        j                         \  }}t        j                  |       t        j                  j                  | j                        r$t        j                  dd|| j                  g       n#	 t        j                  |       d}t        |      	 t        j                  |      5 }|j                          |j                  | _        d d d        	 t        j                  |       | j                  j                   | _        | j                  j$                  | _        g | _        y # t        $ r Y w xY w# 1 sw Y   lxY w# t        $ r Y dw xY w# 	 t        j                  |       w # t        $ r Y w w xY wxY w)Ndjpeg-outfilezInvalid Filename)tempfilemkstemposclosepathexistsfilename
subprocess
check_callunlinkOSError
ValueErrorr   openloadimr   rx   ra   rt   r   )r   fr  r~   _ims        r   
load_djpegzJpegImageFile.load_djpeg  s-    ""$4
77>>$--(!!7Jdmm"LM		$ %CS/!	D! !S
&&!		$ WW\\
WW\\
	'  ! !  		$ sl   ;D1 E 3"E E E 1	D=<D= E	E 	EEFE32F3	E?<F>E??Fc                    t        |       S r   )_getexifr   s    r   r$  zJpegImageFile._getexif  s    ~r   c                   d| j                   v sd| j                   vry 	 | j                         }|d   }|d   }	 t        |d         |d   z  }t	        j
                  |      rd}t        |      |dk(  r|d	z  }||f| j                   d<   y # t        $ r |}Y Kw xY w# t        j                  t        t        t        t        t        f$ r d
| j                   d<   Y y w xY w)Nr+   r6   i(  i  r   r   zDPI is not a numberrg   r-   )H   r'  )rO   getexiffloat	TypeErrormathisnanr  rY   rZ   KeyErrorrv   ZeroDivisionError)r   r6   resolution_unitx_resolutionr+   r~   s         r   r   z!JpegImageFile._read_dpi_from_exif  s    DIItyy!8	&<<>D"6lO<L#LO,|A> zz#+ o%!#t"CxDIIe  #"# LL
 	&  &DIIe	&s4   B B =B BB BB <CCc                    t        |       S r   )_getmpr%  s    r   r2  zJpegImageFile._getmp  s    d|r   )returnNone)r   strr3  r   )r3  	list[Any])r   r6  r3  r4  )r   intr3  bytes)r   z
str | Nonera   ztuple[int, int] | Noner3  z0tuple[str, tuple[int, int, float, float]] | None)r3  dict[int, Any] | None)__name__
__module____qualname__formatformat_descriptionr   r   r   r   r  r  r"  r$  r   r2  __classcell__)r   s   @r   r   r   O  s[    F+6#p#B, &&&<&	9&P>&:r   c                \    d| j                   vry | j                         j                         S )Nr6   )rO   r(  _get_merged_dictr%  s    r   r$  r$    s&    TYY<<>**,,r   c           	        	 | j                   d   }t        j                  |      }|j	                  d      }|d d dk(  rdnd}ddlm} 	 |j                  |      }|j                  |j                         |j                  |       t        |      }	 |d
   }
g }	 |d   }t        d|
      D ]  }t        j                   | d||dz        }d}t        t#        ||            }t%        |d   dz        t%        |d   dz        t%        |d   dz        |d   dz  dz	  |d   dz  dz	  |d   dz  d}|d   dk(  rd|d<   nd}	t        |	      ddd d!d"d#d$d%}|j'                  |d&   d'      |d&<   ||d<   |j)                  |        ||d<   |S # t        $ r Y y w xY w# t        $ r}d	}	t        |	      |d }~ww xY w# t        $ r}d}	t        |	      |d }~ww xY w# t        $ r}d(}	t        |	      |d }~ww xY w))NrJ   r)   r#   s   MM *><r   )TiffImagePluginz)malformed MP Index (unreadable directory)  z(malformed MP Index (no number of images)i  r   LLLHHrs   )	AttributeSize
DataOffsetEntryNo1EntryNo2rH  l        i   @i    i      i      i )DependentParentImageFlagDependentChildImageFlagRepresentativeImageFlagReservedImageDataFormatMPTyperS  r   z!unsupported picture format in MPO	Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)r   i  i  i  i  i  i   rT  Unknownz!malformed MP Index (bad MP Entry))rO   r-  ioBytesIOr   r   rE  ImageFileDirectory_v2seeknextr  dictrR   rv   r|   rY   unpack_fromzipboolgetrN   )r   rb   file_contentshead
endiannessrE  rO   rJ   r  r~   quant	mpentriesrawmpentriesentrynumunpackedentrylabelsmpentrympentryattr	mptypemaps                      r   r2  r2    su   yy JJt$Ma DRa$77SJ!&44T:499%		- $Z
&6

 I$&&za 	&H"..,e$lHrMM QF3v}56G,01E1Q,R+/0D0P+Q+/0D0P+Q$[1W="D$+K$8G$D#K!+.;K ,-217-.9!#&&%<@8:<5I %.MM+h2G$SK!#.GK W%=	&> 6
 IA    &9#A%&  &8#A%&N  &1#A%&s[   F 
AF F; C0G 	FF	F8%F33F8;	GGG	G6#G11G6rh   ri   r   r  )1rh   ri   RGBXrj   r  )@r   r   r$   r5   r@   r!   rM     r   r#   r(   rq   rs      r7   *   rg   r)   r=            )   +   	   rH      rN     (   ,   5   r*             '   -   4   6         !   &   .   3   7   <      "   %   /   2   8   ;   =   #   $   0   1   9   :   >   ?   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   c                    t        | t              r| j                  dv ry| j                  d   dd | j                  d   dd z   | j                  d   dd z   }t        j                  |d      S )N)r   r#   r   r   rg   r   )r  r   rw   r}   	samplingsr`  )r  samplings     r   get_samplingr    si     b-(BII,?xx{1Q"((1+a"22RXXa[15EEH==2&&r   c                
   | j                   dk(  s| j                  dk(  rd}t        |      	 t        | j                     }| j                  }|j                  dd      D cg c]  }t        |       }}|j                  dd      }	|j                  d	d      }
|j                  d
      }|	dk(  rd}	d}
d}n|	t        v r/t        |	   }d}	|j                  d	d      }
|j                  d      }nnt        |	t              sd}t        |      |
t        v rt        |
   j                  d	d      }
t        |t              r |t        v rt        |   j                  d      }|
dk(  rd}
nD|
dk(  rd}
n<|
dk(  rd}
n4|
dk(  rd}
n,|
dk(  r'| j                  dk7  rd}t        |      t        |       }
	 	 	 	 d4d}|dk(  r)| j                  dk7  rd}t        |      t!        | dd       } ||      }|j                  dd      }d}|j                  d      }|rJd}||z
  }t#        |      |kD  rd}t        |      t%        d|z   t#        |      z         }|d|z   dz   |z   z  }|j                  d      }|r~d }||z
  }g }|r|j'                  |d |        ||d  }|rd}|D ]P  }t%        d|z   t#        |      z         }|d!|z   d"z   t)        |      z   t)        t#        |            z   |z   z  }|dz  }R |j                  d#| j*                  j                  d#            }|j                  d$d%      xs |j                  d&d%      }|j                  d'd%      }|j                  d(d      }t        |t,        j.                        r|j1                         }t#        |      |kD  rd)}t        |      |	||j                  d*d      ||j                  d+d%      |j                  d,d      |d   |d   |
|j                  d-d      |j                  d.d      ||||f| _        d}|s|r| j                  d/k(  r#d0| j4                  d   z  | j4                  d   z  }nL|	d1k\  s|	dk(  r#d| j4                  d   z  | j4                  d   z  }n| j4                  d   | j4                  d   z  }|r|t#        |      d2z   z  }|r7|t#        |      dz   z  }n%t7        |t#        |      d2z   t#        |      dz         }t9        j:                  | |t9        j<                  d3d| j4                  z   d|      g|       y # t
        $ r!}d| j                   d}t        |      |d }~ww xY wc c}w )5Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGr+   r   qualityr  subsamplingqtableskeepr   zInvalid quality settingz4:4:4z4:2:2r   z4:2:0r   z4:1:1r   z3Cannot use 'keep' when original image is not a JPEGc                   | | S t        | t              rz	 | j                         D cg c]5  }|j                  dd      d   j                         D ]  }t	        |       7 }}}t        dt        |      d      D cg c]
  }|||dz     } }t        | t        t        t        f      rt        | t              r*t        t        |             D cg c]  }|| v s| |    } }nt        | t              rt        |       } dt        |       cxk  rdk  sn d}t        |      t        |       D ]E  \  }}		 t        |	      dk7  rd}t        |      t        j                  d|	      }
t        |
      | |<   G | S y c c}}w c c}w # t        $ r}d}t        |      |d }~ww xY wc c}w # t        $ r}d}t        |      |d }~ww xY w)	N#r   r   r   zInvalid quantization tabler$   z$None or too many quantization tablesr   )r  r5  
splitlinesrU   r7  r|   rz   r  rQ   listr\  	enumerater*  r   )r  linenumlinesr\   r  r~   keyidxtabletable_arrays              r   validate_qtablesz_save.<locals>.validate_qtables  s   
 ?Ngs#
P !( 2 2 4#zz#q1!4::<  H  7<As5z26NO5QV,OOgtT23'4(,1#g,,?%(3'>GCL  GU+w-G(q(< o%'0 
5
U	55zR':'n,"'++c5"9K
 $(#4GCL
5 N+ 4 P	  -2 o1,- ! 16C$S/q01sR   F :E8#F >E>	F"F"41F'8F 	FFF'	G0F>>Gextrar   r   r:   r7   zXMP data is too longs   r8   rr   r@   s   r>   rd   ro   Frp   optimizer6   zEXIF data is too longsmoothkeep_rgb
streamtyperestart_marker_blocksrestart_marker_rowsrj   r#   _   r$   r   )r  zKstr | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | Noner3  zlist[list[int]] | None)widthheightr  RAWMODEr   r-  r  encoderinfor`  roundr   r  r7  r5  r=  r  r   rz   o16rN   r   rO   r   Exiftobytesencoderconfigra   maxr	   _saver   )r  r   r  r~   r   r  rO   xr+   r  r  r  presetr  r  MAX_BYTES_IN_MARKERr:   overhead_lenmax_data_bytes_in_markerra   rr   markersr   r   rd   ro   r  r6   bufsizes                                r   r  r    s   	xx1}		Q0o""''"
 >>D!XXeV4
558
5C
5hhy"%G((="-Khhy!G&	G	!jj3**^,%'o'!!+.22="EKgs#7(:g&**>:Gg						 		99GCS/!"2&(W( 
 	(T &99GCS/!"nd3w'GHHWc"E
((5/C
#6#E s8..(CS/!1|#c#h./t#&IICOO((=)K#6#E NN;'@(@AB%&>&?@K   
	Fq<'#f+56D"# Q% S\"	#
 E FA
	 hhy"''++i"89G
 ((=%0RDHH]E4RKxx
E*H88FC D$

#||~
4y&&%o 	1U#q!AA(!,&*B, G;77f"''!*nrwwqz1G]gm"''!*nrwwqz1Gggaj2771:-Gs4y1}$Gs5zA~%G gs4y1}c%j1n=OO
B"'')91gFGw  ""277)84cl!" 6s   T  U	U"T>>Uc                    | j                         }t        j                  dd||g       	 t        j                  |       y # t
        $ r Y y w xY w)Ncjpegr  )_dumpr  r  r  r  r  )r  r   r  r  s       r   _save_cjpegr  Z  sG    xxzH7J(CD
		( s   A 	AAc                6   t        | |      }	 |j                         }|C|d   dkD  r;|j                  D ]  \  }}|dk(  sd|v s|c S  ddlm}  |j
                  ||      }|S # t        t        f$ r Y |S t        $ r t        j                  d       Y |S w xY w)NrF  r   r   s    hdrgm:Version="r   zTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r2  rM   MpoImagePluginr   adoptr*  r[   rv   warningswarn)r   r  r  mpheadersegmentcontentr   s          r   jpeg_factoryr  f  s     
r8	$B
99;HUOa$7$&JJ  f$)<)GI
 5 $##B1B I z"  I  
.	
 I
s)   1A%  A% A% 	A% %B7BB)z.jfifz.jpez.jpgz.jpegz
image/jpeg)r   r   r   r7  r3  r4  )r   r8  r3  r_  )r   r   r3  r9  )r  Image.Imager3  r7  )r  r  r   	IO[bytes]r  zstr | bytesr3  r4  r   )r   r  r  zstr | bytes | Noner3  zJpegImageFile | MpoImageFile)6
__future__r   r   rW  r+  r  rY   r  r   r  r  typingr   r   r   r   r   r	   _binaryr
   r   r   rX   r   r   r  
_deprecater   JpegPresetsr   r  r   r   r    re   r   r   r   r   r   r$  r2  r  r   r  r  r  r  r  register_openr=  register_saveregister_extensionsregister_mimer.   r   r   <module>r     s  D #  	  	   
   ) )  ! !  ! !  ,%
g7T$-?`6@

V^S)@

V.4@
 V&,@
 V'-	@

 U*D1@
 V2C8@
 V3S9@
 V+S1@
 &@
 V3S9@
 W,c2@
 W137@
 U;TB@
 W8#>@
 W93?@
  W137!@
" '#@
$ '%@
& ''@
( ')@
* '+@
, '-@
. '/@
0 '1@
2 +3@
4 )5@
6 UOT*7@
8 U/59@
: U,d3;@
< U-t4=@
> U5s;?@
@ U0$7A@
B V,c2C@
D V,c2E@
F V,c2G@
H V,c2I@
J V,c2K@
L V,c2M@
N V,c2O@
P V,c2Q@
R V,c2S@
T V,c2U@
V W.4W@
X W.4Y@
Z W.4[@
\ W.4]@
^ W.4_@
` W.4a@
b )c@
d )e@
f )g@
h *))))))++++Is#@
F)AI'' AH-I` 
		 	'DN 37/!<   M((, @   M((% 0   -..0R S   M((, 7r   