
    ZMhY|                    x   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 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 d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/d0e#fd1d2d3d4d5e#fd6d7d8e#fd9d:d;e#fd<d=d>e fd?d@dAe#fdBdCdDe#fdEdFdGe#fdHdIi dJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^e fd_d`dae$fdbdcdde fdedfdge fdhdidje#fdkdldme fdndodpe!fdqdrdse!fi 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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/	 ddd̈́Z0 ej1        e'j2        e0e&            ej3        e'j2        e.            ej4        e'j2        g d΢            ej5        e'j2        dϦ           dS )    )annotationsN)IOAny   )Image	ImageFile)i16be)i32be)o8)o16be)	deprecate)presetsFMpoImageFileselfJpegImageFilemarkerintreturnNonec                    t          | j                            d                    dz
  }t          j        | j        |           d S )N   )i16fpreadr   
_safe_read)r   r   ns      S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/PIL/JpegImagePlugin.pySkipr   ?   s;    DGLLOOq A!$$$$$    c                t   t          | j                            d                    dz
  }t          j        | j        |          }d|dz   }|| j        |<   | j                            ||f           |dk    r|                    d          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<   d S # t          $ r Y d S w xY w|dk    rm|                    d          rXd| j	        v r| j	        dxx         |dd          z  cc<   d S || j	        d<   | j                                        |z
  dz   | _        d S |dk    r;|                    d          r&|                    dd          d         | j	        d<   d S |dk    r!|                    d          r|| j	        d<   d S |dk    r1|                    d          r| j                            |           d S |dk    r&|                    d          rd}| 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    rIt%          |d$          d%z  t          |d!          t%          |d          d%z  t          |d&          d'|	|
<   n||	|
<   ||z  }||dz  z  }n# t&          j        $ r Y d S w xY w|||d!z            d"k    d S d S |d(k    rS|                    d)          r>t          |d          | j	        d*<   	 |d+         }|| j	        d,<   d S # t*          $ r Y d S w xY w|dk    rP|                    d-          r=|d!d          | j	        d.<   | j                                        |z
  d!z   | j	        d/<   d S d S d S )0Nr   APP     s   JFIF   jfif   jfif_version      
   r   dpic              3      K   | ]	}|d z  V  
dS )RQ@N ).0ds     r   	<genexpr>zAPP.<locals>.<genexpr>`   s&      (H(HaT(H(H(H(H(H(Hr    	jfif_unitjfif_density  s   Exif  exif      http://ns.adobe.com/xap/1.0/     xmp  s   FPXR flashpix   ICC_PROFILE   s   Photoshop 3.0    	photoshop   s   8BIMi  r   i      )XResolutionDisplayedUnitsXYResolutionDisplayedUnitsY  s   Adobeadobe   adobe_transforms   MPF mpmpoffset)r   r   r   r   r   appapplistappend
startswithinfodivmodtuple	Exceptiontell_exif_offsetspliticclist
setdefaulti32structerror
IndexError)r   r   r   srM   versionr3   r4   offsetr@   codename_lensizedatarJ   s                  r   r"   r"   D   s   
 	DGLLOOq ATWa((A


CDHSMLa!!!ALL11&)!Qii/	&G$*7C$8$8	.!	5!Iq!99c!Rjj0L A~~#/	%  a#((H(H<(H(H(H#H#H	% %.DIk"(4DIn%%%  	 	 	DD	 
6		all;77	TYIf122& !DIf $ 2Q 6D	6		all+NOO	777A..q1	%	6		all955	 !	*	6		all+;<<	 	A	6		all+?@@	I((b99	!#$//!1f~~!V9!h,&&1*$1f~~!&4-/06>>'*4||e';+.tQ<<'*4||e';+.tR==	' 'IdOO '+IdO$&1*$<   5 !#$//////: 
6		all844	 AYY	'	;eO ,;DI'(((  	 	 	DD	 
6		all844	ABB%	$ !% 2Q 6	* 
			s7   (D7 7
EE&B5M M/.M/;O 
OOc                    t          | j                            d                    dz
  }t          j        | j        |          }|| j        d<   || j        d<   | j                            d|f           d S )Nr   commentCOM)	r   r   r   r   r   rQ   rM   rN   rO   )r   r   r   r^   s       r   rg   rg      sm     	DGLLOOq ATWa((ADIiDHUOL
#####r    c                   t          | j                            d                    dz
  }t          j        | j        |          }t          |d          t          |d          f| _        |d         | _        | j        dk    rd| j         d}t          |          |d         | _        | j        dk    rd	| _	        n@| j        dk    rd
| _	        n-| j        dk    rd| _	        nd| j         d}t          |          |dv rdx| j
        d<   | j
        d<   | j        r|| j                                         | j        d         d         t          | j                  k    r'd | j        D             }d                    |          }nd }|| j
        d<   g | _        t          dt          |          d          D ]K}|||dz            }| j                            |d         |d         dz  |d         dz  |d         f           Ld S )Nr      r   r   r*   zcannot handle z-bit layersr%   LRGBrA   CMYKz-layer images)        progressiveprogression   c                "    g | ]}|d d         S )r?   Nr/   )r0   ps     r   
<listcomp>zSOF.<locals>.<listcomp>   s     444!qv444r    r    icc_profiler7      r#   )r   r   r   r   r   _sizebitsSyntaxErrorlayers_moderQ   rX   sortlenjoinrangelayerrO   )	r   r   r   r^   msgprofilerw   its	            r   SOFr      s    	DGLLOOq ATWa((AQC1II%DJ!DIyA~~5ty555#A$DK{a

			

			

9t{999#111>??	- 49]#;| 	<?2#dl"3"33344t|444G((7++KKK#.	- 1c!ffa   ? ?a!a%iL
1Q41QqTBY!=>>>>? ?r    c                @   t          | 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k    r
                                 fd
t          D             | j        |dz  <   ||d          }t          |          d S d S )Nr   r   rx   r   @   zbad quantization table markerBHlittlec                     g | ]
}|         S r/   r/   )r0   r   rd   s     r   rv   zDQT.<locals>.<listcomp>   s    $C$C$CT!W$C$C$Cr    r#   )r   r   r   r   r   r   r{   arraysys	byteorderbyteswapzigzag_indexquantization)	r   r   r   r^   v	precision	qt_lengthr   rd   s	           @r   DQTr      s2    	DGLLOOq ATWa((A
a&& aDr'Q,,AAQ		B&	q66I1Cc"""{)q..33c1Qy[>JJ=H$$QMMOOO$C$C$C$Cl$C$C$C!b&!ijjM a&&     r    i  SOF0zBaseline DCTi  SOF1zExtended Sequential DCTrm   SOF2zProgressive DCTi  SOF3zSpatial losslessi  DHTzDefine Huffman tablei  SOF5zDifferential sequential DCTrn   SOF6zDifferential progressive DCTi  SOF7zDifferential spatiali  )JPG	ExtensionNi  SOF9zExtended sequential DCT (AC)ro   SOF10zProgressive DCT (AC)i  SOF11zSpatial lossless DCT (AC)i  DACz%Define arithmetic coding conditioningi  SOF13z Differential sequential DCT (AC)rp   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 0r5   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 13rG   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 13Nrg   Comment)i  i  i  i  i  i  i  i  i  i    i  prefixbytesboolc                ,    |                      d          S )Ns   )rP   )r   s    r   _acceptr   G  s    _---r    c                  t     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)r   r   c                `   | j                             d          }t          |          sd}t          |          d}dx| _        | _        d| _        g | _        i | _        i | _	        i | _
        i | _        g | _        g | _        	 |d         }|dk    r-|| j                             d          z   }t          |          }n| j                             d          }W|t          v r|t          |         \  }}}| || |           |dk    r<| j        }| j        d	k    rd
}t#          j        dd| j        z   d|df          g| _        nV| j                             d          }n9|dv rd}n2|dk    r| j                             d          }nd}t          |          |                                  d S )Nri   znot a JPEG file   r   T   r   r   rl   CMYK;Ijpegr   r    >     r   i   zno marker found)r   r   r   r{   rz   r|   rV   r   _huffman_dc_huffman_acr   rM   rN   rX   r   MARKERmoder   _Tilerc   tile_read_dpi_from_exif)r   r^   r   r   namedescriptionhandlerrawmodes           r   _openzJpegImageFile._openT  s   GLLOOqzz 	##Cc""" #$#	DK 79
+-+-24%'02$&	'!ADyyQ'FF GLLOOF{{-3AY*k7&GD!$$$;;"iGyF**"*!0BAQS}UU!DI GLLOOk!!fGLLOO'!#&&&?	'B 	  """""r    r   strr   c                n    |dv r#t          |d           t          | d|z             S t          |          )N)
huffman_ac
huffman_dcrB   _)r   getattrAttributeError)r   r   s     r   __getattr__zJpegImageFile.__getattr__  s@    ///dB4t,,,T"""r    	list[Any]c                b    t                                                      | j        | j        gz   S N)super__getstate__r|   r   )r   	__class__s    r   r   zJpegImageFile.__getstate__  s'    ww##%%dj(AAAr    statec                x    |dd          \  | _         | _        t                                          |           d S )Nr7   )r|   r   r   __setstate__)r   r  r  s     r   r  zJpegImageFile.__setstate__  s7    "')TZU#####r    
read_bytesr   r   c                    | j                             |          }|s%t          j        rt	          | d          s	d| _        dS |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   r  r^   s      r   	load_readzJpegImageFile.load_read  sM     GLL$$ 	Y4 	WT8=T=T 	 DK;r    r   
str | Nonerc   tuple[int, int] | None0tuple[str, tuple[int, int, float, float]] | Nonec                   t          | j                  dk    rd S | j        rd S | 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    r 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   rk   )rj   YCbCrr   )r*   rA   r   r   r   ri   )r   r   decoderconfigrc   
isinstancerS   r}   minry   r   r   r   )r   r   rc   r1   eoascaleoriginal_sizer^   boxs              r   draftzJpegImageFile.draft  s    ty>>Q4  	4Yq\
1a	!U#####Q45==T^33DJbA 		!Q/1a1HIIE!  A::E ===!!1!q1$*QqT11!q1$*QqT1	A  9Q<!+a/A5	!q8H18LQR7RSDJE_Q1a001	#QZ!]1%-}Q/?%/GHy#~r    c                   t          j                    \  }}t          j        |           t          j                            | j                  rt          j        dd|| j        g           n7	 t          j	        |           n# t          $ r Y nw xY wd}t          |          	 t          j        |          5 }|                                 |j        | _        d d d            n# 1 swxY w Y   	 t          j	        |           n:# t          $ r Y n.w xY w# 	 t          j	        |           w # t          $ r Y w w xY wxY w| j        j        | _        | j        j        | _        g | _        d S )Ndjpeg-outfilezInvalid Filename)tempfilemkstemposclosepathexistsfilename
subprocess
check_callunlinkOSError
ValueErrorr   openloadimr   r}   rc   ry   r   )r   fr!  r   _ims        r   
load_djpegzJpegImageFile.load_djpeg  s    "$$4
7>>$-(( 		"!7Jdm"LMMMM	$    %CS//!	D!! !S


&! ! ! ! ! ! ! ! ! ! ! ! ! ! !	$   	$    W\
W\
			sx   .B 
BB%D 9!C&D &C**D -C*.D 2D 
DDD>D.-D>.
D;8D>:D;;D>dict[int, Any] | Nonec                     t          |           S r   )_getexifr   s    r   r1  zJpegImageFile._getexif  s    ~~r    c                   d| j         v s	d| j         vrd S 	 |                                 }|d         }|d         }	 t          |d                   |d         z  }n# t          $ r |}Y nw xY wt	          j        |          rd}t          |          |dk    r|d	z  }||f| j         d<   d S # t          j        t          t          t          t          t          f$ r d
| j         d<   Y d S w xY w)Nr,   r6   i(  i  r   r   zDPI is not a numberri   r.   )H   r4  )rQ   getexiffloat	TypeErrormathisnanr(  r[   r\   KeyErrorr{   ZeroDivisionError)r   r6   resolution_unitx_resolutionr,   r   s         r   r   z!JpegImageFile._read_dpi_from_exif  s   DIty!8!8F	&<<>>D"6lO<L#LO,,|A> # # #"#z# &+ oo%!##t"CxDIeL
 	& 	& 	&  &DIe	&s4   $B* A B* A)&B* (A))?B* *8C&%C&c                     t          |           S r   )_getmpr2  s    r   r?  zJpegImageFile._getmp  s    d||r    )r   r   )r   r   r   r   )r   r   )r  r   r   r   )r  r   r   r   )r   r  rc   r  r   r  )r   r/  )__name__
__module____qualname__formatformat_descriptionr   r   r   r  r
  r  r.  r1  r   r?  __classcell__)r  s   @r   r   r   P  s       F+6# 6# 6# 6#p# # # #B B B B B B$ $ $ $ $ $    & & & &P   >   & & & &:       r    r/  c                d    d| j         vrd S |                                                                 S )Nr6   )rQ   r5  _get_merged_dictr2  s    r   r1  r1    s.    TYt<<>>**,,,r    c           	        	 | j         d         }n# t          $ r Y d S w xY wt          j        |          }|                    d          }|                    d          rdnd}ddlm} 	 |                    |          }|	                    |j
                   |                    |           t          |          }n$# t          $ r}d}	t          |	          |d }~ww xY w	 |d	         }
n$# t          $ r}d
}	t          |	          |d }~ww xY wg }	 |d         }t          |
          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$}|                    |d%         d&          |d%<   ||d<   |                    |           ||d<   n$# t          $ r}d'}	t          |	          |d }~ww xY w|S )(NrK   r*   s   MM *><r   )TiffImagePluginz)malformed MP Index (unreadable directory)  z(malformed MP Index (no number of images)i  LLLHHrx   )	AttributeSize
DataOffsetEntryNo1EntryNo2rN  l        i   @i    i      i      i )DependentParentImageFlagDependentChildImageFlagRepresentativeImageFlagReservedImageDataFormatMPTyperY  r   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   rZ  Unknownz!malformed MP Index (bad MP Entry))rQ   r:  ioBytesIOr   rP   r   rK  ImageFileDirectory_v2seeknextr*  dictrT   r{   r   r[   unpack_fromzipr   getrO   )r   rd   file_contentshead
endiannessrK  rQ   rK   r  r   quant	mpentriesrawmpentriesentrynumunpackedentrylabelsmpentrympentryattr	mptypemaps                      r   r?  r?    s   y   ttJt$$Ma  D(;<<E#J!!!!!!&44T::49%%%		-   $ZZ & & &9#A%&&6
 & & &8#A%& I$&&ze 	& 	&H".$$$lHrM M QF3v}5566G,01E1Q,R,R+/0D0P+Q+Q+/0D0P+Q+Q$[1W="D$+K$8G$D#K!+.; K ,-2217-..9!#&&&%<@8:<5 I %.MM+h2G$S$SK!#.GK W%%%%6

 & & &1#A%& IsV    
*AB> >
CCC#C, ,
D6DDD.I 
I#II#rj   rk   r   r  )1rj   rk   RGBXrl   r  )@r   r   r%   r7   r?   r#   rS     r   rA   r)   rs   rx         *   ri   r*   rB            )   +   	   rI      rT     (   ,   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   r+  Image.Imagec                    t          | t                    r	| j        dv rdS | j        d         dd         | j        d         dd         z   | j        d         dd         z   }t                              |d          S )N)r   rA   r   r   ri   r   )r  r   r|   r   	samplingsre  )r+  samplings     r   get_samplingr    sw     b-(( BI,?,?rx{1Q3"(1+ac"22RXa[15EEH==2&&&r    r   	IO[bytes]r#  str | bytesc                   | j         dk    s| j        dk    rd}t          |          	 t          | j                 }n-# t
          $ r }d| j         d}t          |          |d }~ww xY w| j        }d |                    dd          D             }|                    dd	          }|                    d
d	          }	|                    d          }
|dk    rd	}d}	d}
n|t          v r;t          |         }d	}|                    d
d	          }	|                    d          }
nt          |t                    sd}t          |          |	t          v r!t          |	                             d
d	          }	t          |
t                    r)|
t          v r t          |
                             d          }
|	dk    rd}	nL|	dk    rd}	nC|	dk    rd}	n:|	dk    rd}	n1|	dk    r+| j        dk    rd}t          |          t          |           }	d8d}|
dk    r-| j        dk    rd}t          |          t          | dd           }
 ||
          }
|                    dd          }d}|                    d          }|r[d}||z
  }t!          |          |k    rd }t          |          t#          d|z   t!          |          z             }|d!|z   d"z   |z   z  }|                    d#          }|rd$}||z
  }g }|r)|                    |d |                    ||d          }|)d}|D ]d}t#          d|z   t!          |          z             }|d%|z   d&z   t'          |          z   t'          t!          |                    z   |z   z  }|dz  }e|                    d'| j                            d'                    }|                    d(d)          p|                    d*d)          }|                    d+d)          }|                    d,d          }t          |t*          j                  r|                                }t!          |          |k    rd-}t          |          |||                    d.d          ||                    d/d)          |                    d0d          ||	|                    d1d          |                    d2d          |
|||f| _        d}|s|r| j        d3k    rd4| j        d         z  | j        d         z  }nF|d5k    s|d	k    rd| j        d         z  | j        d         z  }n| j        d         | j        d         z  }|r|t!          |          d6z   z  }|r|t!          |          dz   z  }n1t5          |t!          |          d6z   t!          |          dz             }t7          j        | |t7          j        d7d| j        z   d|          g|           d S )9Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGc                ,    g | ]}t          |          S r/   )round)r0   xs     r   rv   z_save.<locals>.<listcomp>  s    
5
5
5588
5
5
5r    r,   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 JPEGKstr | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | Noner   list[list[int]] | Nonec                      S t           t                    rn	 d                                  D             fdt          dt	                    d          D              n$# t
          $ r}d}t          |          |d }~ww xY wt           t          t          t          f          rt           t                    r) fdt          t	                               D              n$t           t                    rt                      dt	                     cxk     rdk     sn d}t          |          t                     D ]u\  }}	 t	          |          dk    rd}t          |          t          j        d	|          }t          |           |<   R# t          $ r}d}t          |          |d }~ww xY w S d S )
Nc                    g | ]B}|                     d d          d                                          D ]}t          |          CS )#r   r   )rW   r   )r0   linenums      r   rv   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  sd       #zz#q11!4::<<   HH   r    c                *    g | ]}||d z            S )r   r/   )r0   r^   liness     r   rv   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s&    OOO5QV,OOOr    r   r   zInvalid quantization tablec                (    g | ]}|v |         S r/   r/   )r0   keyr  s     r   rv   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s)       %(3'>>GCL>>>r    r%   z$None or too many quantization tablesr   )r  r   
splitlinesr   r   r(  rS   listrb  	enumerater7  r   )r  r  r   idxtabletable_arrayr  s   `     @r   validate_qtablesz_save.<locals>.validate_qtables  s   
 ?Ngs## 	P
P  ' 2 2 4 4   POOOeAs5zz26N6NOOO	  - - -2 oo1,-
 gtT233 	'4(( (   ,1#g,,,?,?   GU++ (w--G((((q((((< oo%'00 
5 
5
U	55zzR'':'nn,"'+c5"9"9K
 $(#4#4GCLL	 ! 1 1 16C$S//q01
 N+	 	s/   A& &
B0BB9F
F>'F99F>extrar    r   r:   rv  zXMP data is too longs   r8   rw   r?   s   r=   rf   rq   Frr   optimizer6   zEXIF data is too longsmoothkeep_rgb
streamtyperestart_marker_blocksrestart_marker_rowsrl   rA   _   r%   r   )r  r  r   r  )widthheightr(  RAWMODEr   r:  r'  encoderinfore  r   r  r   r   rC  r  r   r   o16rO   r   rQ   r   Exiftobytesencoderconfigrc   maxr   _saver   )r+  r   r#  r   r   r  rQ   r,   r  r  r  presetr  r  MAX_BYTES_IN_MARKERr:   overhead_lenmax_data_bytes_in_markerrc   rw   markersr   r   rf   rq   r  r6   bufsizes                               r   r  r    s   	x1}}	Q0oo""'" " " "427444cll!" >D
5
5TXXeV44
5
5
5Chhy"%%G((="--Khhy!!G&	G		!jj33**^,,%% ;'oo'!!!+.22="EEKgs## 	;7(:(:g&**>::Gg									 			9GCS//!"2&&( ( ( (T &9GCS//!"nd33w''GHHWc""E
((5//C
 P#6#E s88...(CS//!1|#c#hh.//t#&IICOO((=))K #6#E  	ANN;'@(@'@ABBB%&>&?&?@K  	A  
	 
	Fq<'#f++566D"# Q%% S\\""	#
 E FAAhhy"'++i"8"899G
 ((=%00RDHH]E4R4RKxx
E**H88FC  D$
## ||~~
4yy&&&%oo 	1U##q!!(!,,&**B* G >; >7f"'!*nrwqz1GG]]gmm"'!*nrwqz1GGgaj271:-G 	%s4yy1}$G 	&s5zzA~%G gs4yy1}c%jj1n==O
B"')91gFFG    s   < 
A&A!!A&c                    |                                  }t          j        dd||g           	 t          j        |           d S # t
          $ r Y d S w xY w)Ncjpegr  )_dumpr$  r%  r  r&  r'  )r+  r   r#  r  s       r   _save_cjpegr  Z  sf    xxzzH7J(CDDD
	(   s   A 
AAstr | bytes | NoneJpegImageFile | MpoImageFilec                >   t          | |          }	 |                                }|>|d         dk    r2|j        D ]\  }}|dk    rd|v r|c S ddlm}  |j        ||          }n6# t          t          f$ r Y n#t          $ r t          j
        d           Y nw xY w|S )NrL  r   r   s    hdrgm:Version="r   zTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r?  rN   MpoImagePluginr   adoptr7  r]   r{   warningswarn)r   r#  r+  mpheadersegmentcontentr   s          r   jpeg_factoryr  f  s     
r8	$	$B
99;;HUOa$7$7$&J   f$$)<)G)GIII444444 $#B11Bz"    
 
 
.	
 	
 	
 	
 	


 Is   ;A' A' 'B:BB)z.jfifz.jpez.jpgz.jpegz
image/jpeg)r   r   r   r   r   r   )r   r   r   r   )r   r   r   r/  )r+  r  r   r   )r+  r  r   r  r#  r  r   r   r   )r   r  r#  r  r   r  )6
__future__r   r   r]  r8  r  r[   r$  r   r  r  typingr   r   r   r   r   _binaryr	   r   r
   rZ   r   r   r  
_deprecater   JpegPresetsr   TYPE_CHECKINGr  r   r   r"   rg   r   r   r   r   r   r1  r?  r  r   r  r  r  r  r  register_openrC  register_saveregister_extensionsregister_mimer/   r    r   <module>r     si  D # " " " " "  				  				      



                   ! ! ! ! ! ! ! ! ! ! ! !       ! ! ! ! ! ! ! ! ! ! ! !             -,,,,,,% % % %
g7 g7 g7 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 A A A AI' A A AH- - - -I I I I` 
	 	  	' ' ' 'C C C CL    37    <  M(, @ @ @  M(% 0 0 0  -.0R0R0R S S S  M(, 7 7 7 7 7r    