
    i"                         d dl mZmZ d dlZd dlZd dlZddlmZ ddlmZ ddl	m
Z
mZ ddlmZmZmZmZmZmZmZ d Zd	 Zd
 Zd Zd Zd Zd Z G d de
      Zy)    )print_functionunicode_literalsN   )AuthSrv)bos)	StreamArcerrdesc)VPTL_WINmin_exsanitize_tospacksunpack	yieldfilezlibc                    t        d|       \  }}|dz  dz  }|dz	  dz  }|dz	  }|dz  }|dz	  dz  }|dz	  d	z   }||||||f}	d
}
 |
j                  |	 }t        j                  |d      }t	        t        j                  |            S )N   <HH         ?         	     z){:04d}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}z%Y-%m-%d %H:%M:%S)r   formattimestrptimeintcalendartimegm)buftdtstmthdddmdytttfisodts                A/home/ubuntu/myenv/lib/python3.12/site-packages/copyparty/szip.pydostime2unixr/      s    63DAq
d(aB
q&DB	
bB	
TB
q&CB
q&DB
b"b"b	!B	4B
"))R.C	s/	0Bxr"##    c           	          t        j                  | dz         \	  }}}}}} }}}|dz
  dz  |dz  z   |z   }|dz  |dz  z   | dz  z   }	 t        d||      S #  Y yxY w)	Nr   r   r   r   r   r   r   s     ! )r   gmtimer   )	r$   r)   r(   r'   r&   r%   _bdbts	            r.   unixtime2dosr6       s|    &*kk"q&&9#BBBAq!9
rQw	'"	,B
(rQw	"'	)B#VR$$#"s   A Ac                 8    d}|rdnd}|t        ||| |       z  }|S )Ns   PKs   <LQQs   <LLLr   )szcrc32z64retfmts        r.   	gen_fdescr>   *   s*    
C'gC5eR$$CJr0   c           
         |r||gng }| r| dk\  r|j                  |        |rdnd}	|rt        d|      }
nd}
| d|	z   }nd|	z   }||rdnd	z  }||rd	ndz  }|d
t        |      z   |
z   z  }|rdn|}|t        d||      z  }t        |t              }|j                  |rdndd      j                  dd      }|rt        |      dz  dz   nd}|t        dt        |      d|z         z  }| #|dz  }|dz  }|t        dt        | d            z  }||z  }|t        dddt        |      t        |      dd      z  }|r,|t        ddt        |      z  z   dt        |      dz  g| z  }|S )z
    does regular file headers
    and the central directory meme if h_pos is set
    (h_pos = absolute position of the regular header)
        s   - s   
 s   <L       s   PKs   PK            s   <LLzutf-8cp437replace   ?   _      r   r      s       s   <HHLLHH      i     Qr   )
appendr   r6   r   r
   encoderF   lenminr   )h_posr;   fnr9   lastmodutf8icrc32pre_crcz64vreq_verr:   r<   vszbfnz64_lens                  r.   gen_hdrr^   1   s   & B8D*$E !kkGeV$}!G+ *G3g77*Cd7'C ;g..66C
 *C5c""C 
R	"B
))tG)
<
D
DT4
PC $(c$i!maQG5S4'>22C{ 	** 	uUCz2333JC 5S#s7|S\4NNCuVdSY..3t9q=H4HHJr0   c                     d}|dz  }||z
  }t        dt        |             }t        d|      }t        d|      }|dk(  xs d||fv }|t        d||||      z  }|dz  }||fS )z]
    summary of all file headers,
    usually the zipfile footer unless something clamps
    s   PKrA   i  r@   s   <HHLLrD   )rR   rQ   r   )	itemscdir_poscdir_endr<   cdir_sznitemscszcposneed_64s	            r.   gen_ecdrrh      s     C ;C!GU$F
j'
"Cz8$D;*d";G 566355C ;C<r0   c                 z    d}|dz  }|dz  }|dz  }||z
  }|t        dt        |       t        |       ||      z  }|S )zT
    z64 end of central directory
    added when numfiles or a headerptr clamps
    s   PKs   ,       s   - s           s   <QQQQ)r   rQ   )r`   ra   rb   r<   rc   s        r.   
gen_ecdr64rj      s_     C   C C ;C !G53u:s5z7HEECJr0   c                 ,    d}|t        dd| d      z  }|S )zK
    z64 end of central directory locator
    points to ecdr64
    why
    s   PKs   <LQLr   r   r8   )
ecdr64_posr<   s     r.   gen_ecdr64_locrm      s%     C 5!Z++CJr0   c                   6     e Zd Z	 	 d fd	Zd Zd Zd Z xZS )	StreamZipc                 h    t         t        |   |||       || _        || _        d| _        g | _        y )Nr   )superro   __init__rV   rX   posr`   )selflogasrvfgenrV   rX   kwargs	__class__s          r.   rr   zStreamZip.__init__   s4     	i'T48	
r0   c                 B    | xj                   t        |      z  c_         |S )N)rs   rQ   )rt   r!   s     r.   _ctzStreamZip._ct   s    CH
r0   c           
   #   4  K   |d   }|d   }|d   }t        j                  |j                        ry |j                  }|j                  }| j
                  }d}| j                  r@t        || j                  j                        D ]  }	t        j                  |	|      } |dz  }|dk\  xs |dk\  }
t        d |
|||| j                  || j                        }	| j                  |	       t        || j                  j                        D ]7  }	| j                  st        j                  |	|      }| j                  |	       9 |dz  }| j                  j!                  |||||f       |
s| j                  s!t#        |||
      }	| j                  |	       y y w)Nvpapstr   r@   )statS_ISDIRst_modest_sizest_mtimers   rX   r   argsiobufr   r:   r^   rV   r{   r`   rO   r>   )rt   fnamesrcr   r9   r$   rS   crcr!   r;   s              r.   serzStreamZip.ser   so    wgtW<<

#ZZ[[<< diioo6 +jjc*+ :C
 z!5R:%5dCr2tyy#t||LhhsmS$))//2 	 C<<jjc*((3-		  	z

4Re45dllBS)C((3- #s   FFc              #     K   i }g }d}	 | j                   D ]Q  }d|v r|j                  |d   |d   f       !	 | j                  |      D ]  }||z  }t        |      dk\  s| d} S |r| d}|rmt        | j                  j                  |      \  }}| j                  dj                  t        |      g|d	d  z                | j                  |      D ]  }|  | j                  }| j                  D ]c  \  }	}
}}}|d
k\  xs |
d
k\  }t        |||	|
|| j                   || j"                        }|| j%                  |      z  }t        |      dk\  s^| d}e | j                  }t'        | j                  ||      \  }}|rV| j                  }t)        | j                  ||      }|| j%                  |      z  }t+        |      }|| j%                  |      z  }t'        | j                  ||      \  }}|| j%                  |      z    |rt-        j.                  |d          y y # t        $ r   t        dd      j                  dd      }|j                  |d   |f       Y SxY w# |rt-        j.                  |d          w w xY ww)Nr0   errr}   i @  r   T
z
-- r   r@   r~   )rw   rO   r   rQ   GeneratorExitr   rF   r	   rv   vfsru   joinreprrs   r`   r^   rV   rX   r{   rh   rj   rm   r   unlink)rt   errferrorsmbufr   xextxtra   r   r9   r$   r   rS   r;   r!   rb   r3   rg   ecdir64_posecdrs                        r.   genzStreamZip.gen  s    3	'YY 1A:MM1T7AeH"56
1!XXa[ '	t9-"&J#&D	'1" 
#DIIMM6:	cT$ZL3qr7$:<=$ AG xxH,0JJ (b"c5z)=R:-=eS$B		3U%t9%JD xxH!$**hAJAw"hh Xx@%$[1%tzz8X>GD!$''

4:& M % 1400w?BMM1T7B-0D 

4:& sA   J-I, 'H) H)(C.I, B6I, J)=I)&I, ,J		J)FF)__name__
__module____qualname__rr   r{   r   r   __classcell__)ry   s   @r.   ro   ro      s      "' R7'r0   ro   )
__future__r   r   r   r   r   authsrvr   r   sutilr   r	   utilr
   r   r   r   r   r   r   r/   r6   r>   r^   rh   rj   rm   ro    r0   r.   <module>r      sV    7      % P P P$&#Vr<4v'	 v'r0   