
    (ph                    ~   S SK J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  SSKJr  SS jrSS jr " S	 S
\
R                   5      r\R$                  " \R&                  \5        \R(                  " \R&                  \5        \R*                  " \R&                  S5        \R,                  " \R&                  S5        g)    )annotationsN)IO   )ImageImageSequenceJpegImagePluginTiffImagePlugin)o32lec                2    [         R                  " XU5        g N)r   _save)imfpfilenames      E/var/www/html/venv/lib/python3.13/site-packages/PIL/MpoImagePlugin.pyr   r   $   s    "(+    c           
        U R                   R                  S/ 5      nU(       d  [        U SS5      (       d  [        XU5        g Sn/ n[        R
                  " U /U5       GH6  n[        R                  " U5       GH  nU(       d  S[        R                  " SS5      -   S-   S	-   UR                   S
'   UR                   R                  S5      n[        U[        R                  5      (       a  UR                  5       nXR                   S'   U(       a  US[        U5      -   -  n[        R                  " XqU5        UR!                  UR#                  5       5        M  UR%                  US5        UR!                  UR#                  5       US   -
  5        GM     GM9     [&        R(                  " 5       n	SU	S'   [        U5      U	S'   Sn
Sn[+        U5       H;  u  pUS:X  a  SnOSnU
[        R                  " SXUSS5      -  n
US:X  a  X-  nX-  nM=     XS'   UR-                  U5        UR/                  S[1        S5      -   U	R                  S5      -   5        UR-                  S[2        R4                  5        g )Nappend_imagesis_animatedF   s   z>HX   s   MPF sR                                                                                     extraexif   JPEGs   0100i     r   r   i   z<LLLHH  s   II*    )encoderinfogetgetattrr   	itertoolschainr   Iteratorstructpack
isinstancer   Exiftobyteslenr   appendtellsaver	   ImageFileDirectory_v2	enumerateseekwriter
   osSEEK_END)r   r   r   r   
mpf_offsetoffsets
imSequenceim_framer   ifd	mpentriesdata_offsetisizemptypes                  r   	_save_allr?   (   s   NN&&;M]E!B!BbhJGoordM:
%..z:H  &++dF";;hFR $$W-  ++//7dEJJ//<<>D37((0!c$i-/J%%hH=rwwy)b&)rwwy72;67# ; ;( 
/
/
1CCKg,CKIKW%6FFV[[6aKK	6%K & KGGJHH]U1X%A67GGAr{{r   c                  f    \ rS rSrSrSrSrSS jrSS jrSS jr	SS	 jr
SS
 jr\SS j5       rSrg)MpoImageFile^   MPOzMPO (CIPA DC-007)Fc                    U R                   R                  S5        [        R                  R	                  U 5        U R                  5         g )Nr   )r   r1   r   JpegImageFile_open_after_jpeg_openselfs    r   rF   MpoImageFile._openc   s1    Q%%++D1r   Nc                   Ub  UOU R                  5       U l        U R                  S   U l        U R                  S    Vs/ s H  o"S   U R                  S   -   PM     snU l        SU R                  S'   U R                  [        U R                  5      :X  d   eU R                  S	 U R                  S:  U l        U R                  U l        U R                  R                  U R                  S   5        SU l
        SU l        SU l        g s  snf )Nr   r   
DataOffsetmpoffsetr   r   )_getmpmpinfon_framesinfo_MpoImageFile__mpoffsetsr+   r   r   _fpr1   _MpoImageFile__frameoffsetreadonly)rI   mpheadermpents      r   rG   MpoImageFile._after_jpeg_openh   s    "*"6hDKKMF+EI[[QWEX
EXE,$))J"77EX
   }}D$4$4 5555IIj!==1,77d&&q)*
s    D
c                :    U R                   R                  U5        g r   )rS   r1   )rI   poss     r   	load_seekMpoImageFile.load_seek{   s    cr   c                   U R                  U5      (       d  g U R                  U l        U R                  U   U l        U R
                  R                  S5      nSU R
                  ;   a  U R
                  S	 U R                  R                  U R                  S-   5        U R                  R                  S5      (       d  Sn[        U5      eU R                  R                  U R                  5        [        R                  R                  U 5        U R
                  R                  S5      U:w  a  U R                  5         SSU R                  -   U R                  U R                  S   S   4/U l        Xl        g )Nr      zNo data found for framejpeg)r   r   r   r   )_seek_checkrS   r   rR   rU   rQ   r!   r1   read
ValueErrorr   rE   rF   _reload_exifr=   tilerT   )rI   frameoriginal_exifmsgs       r   r1   MpoImageFile.seek~   s   &&((&&u-		f-TYY		&!T[[1_%ww||A+CS/!T[[!%%++D199== M1ftyy0$++tyy|B?OPQ	r   c                    U R                   $ r   )rT   rH   s    r   r-   MpoImageFile.tell   s    ||r   c                >    [         U l        U R                  U5        U $ )a  
Transform the instance of JpegImageFile into
an instance of MpoImageFile.
After the call, the JpegImageFile is extended
to be an MpoImageFile.

This is essentially useful when opening a JPEG
file that reveals itself as an MPO, to avoid
double call to _open.
)rA   	__class__rG   )jpeg_instancerW   s     r   adoptMpoImageFile.adopt   s      #/&&x0r   )
__frame__mpoffsetsrS   r   r   rO   rP   rU   rV   re   )returnNoner   )r[   intrs   rt   )rf   ru   rs   rt   )rs   ru   )__name__
__module____qualname____firstlineno__formatformat_description!_close_exclusive_fp_after_loadingrF   rG   r\   r1   r-   staticmethodro   __static_attributes__ r   r   rA   rA   ^   s@    F,(-% 
&,  r   rA   z.mpoz	image/mpo)r   zImage.Imager   z	IO[bytes]r   zstr | bytesrs   rt   )
__future__r   r#   r3   r&   typingr    r   r   r   r	   _binaryr
   r   r?   rE   rA   register_saverz   register_save_allregister_extensionregister_mimer   r   r   <module>r      s   ( #  	    ,/lG?00 Gb   L'' /   ++Y 7   ,,f 5   L'' 5r   