AlkantarClanX12

Your IP : 3.137.175.80


Current Path : /opt/alt/python310/lib64/python3.10/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/__pycache__/zipfile.cpython-310.opt-2.pyc

o

6��fY`�@sJ	ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZz	ddlZejZWneyTdZejZYnwzddlZWneyfdZYnwzddlZWneyxdZYnwgd�ZGdd�de�ZGdd�de�ZeZZdZdZdZdZd	Zd
Z dZ!dZ"d
Z#dZ$dZ%dZ&dZ'dZ(e
�)e'�Z*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2d	Z3dZ4dZ5dZ6e
�)e5�Z7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?d	Z@dZAdZBdZCd
ZDdZEdZFdZGd ZHd!ZId"ZJd#ZKd$ZLe
�)eK�ZMdZNdZOdZPdZQdZRdZSdZTdZUd	ZVdZWdZXdZYd%ZZd&Z[e
�)eZ�Z\d'Z]d(Z^e
�)e]�Z_dZ`dZadZbdZcdZddZedZfdZgd	ZhdZid)Zje
�kd*�Zld+d,�Zmd-d.�Znd/d0�Zod1d2�Zpd3d4�ZqGd5d6�d6er�Zsdatd7d8�Zud9d:�ZvGd;d<�d<�ZwGd=d>�d>�Zxidd?�dd@�ddA�ddA�ddA�ddA�ddB�ddC�d	dD�ddE�ddB�d
dF�ddG�d"dH�dIdJ�dKdL�dMdN�ZydOdP�ZzdrdQdR�Z{dSdT�Z|GdUdV�dV�Z}GdWdX�dX�Z~GdYdZ�dZej�Z�Gd[d\�d\ej�Z�Gd]d^�d^�Z�Gd_d`�d`e��Z�dadb�Z�dcdd�Z�e�j�Z�	dedf�Z�Gdgdh�dhe��Z�Gdidj�dje��Z�drdkdl�Z�Gdmdn�dn�Z�drdodp�Z�e�dqk�r#e��dSdS)s�N)
�
BadZipFile�
BadZipfile�error�
ZIP_STORED�ZIP_DEFLATED�	ZIP_BZIP2�ZIP_LZMA�
is_zipfile�ZipInfo�ZipFile�	PyZipFile�LargeZipFile�Pathc@�eZdZdS)rN��__name__�
__module__�__qualname__�rr�./opt/alt/python310/lib64/python3.10/zipfile.pyr,�rc@r)r
Nrrrrrr
0rr
i���������-�.�?s<4s4H2LHsPK��������	z<4s4B4HL2L5H2LsPK�
��
����z<4s2B4HL2L2HsPKz<4sLQLsPKz
<4sQ2H2L4QsPKiPK�<HHc
Cs�tj}d}g}d}}|dt|�krD||||d��\}}|d|}	||vr:||kr6|�|||��|	}d}|	}|dt|�ks|sH|S|t|�krW|�||d��d�|�S)NFrr"T�)�_EXTRA_FIELD_STRUCT�unpack�len�append�join)
�extraZxidsr1Zmodified�buffer�start�iZxidZxlen�jrrr�_strip_extra�s&�	
r:cCs*z
t|�rWdSWdStyYdSw)NTF)�_EndRecData�OSError��fprrr�_check_zipfile�s���r?cCsr	d}z+t|d�rt|d�}W|St|d��}t|�}Wd�W|S1s'wYW|Sty8Y|Sw)NF�readr=�rb)�hasattrr?�openr<)�filename�resultr>rrrr	�s 
�
����r	c
Cs	z
|�|td�Wnty|YSw|�t�}t|�tkr$|St�t|�\}}}}|tkr4|S|dks<|dkr@t	d��|�|tt
d�|�t
�}t|�t
krW|St�t|�\
}}}	}
}}}
}}}|tkrm|S||t
<||t<||t<|
|t<||t<||t<||t<|S)Nr rrz3zipfiles that span multiple disks are not supported)�seek�sizeEndCentDir64Locatorr<r@r2�structr1�structEndArchive64Locator�stringEndArchive64Locatorr�sizeEndCentDir64�structEndArchive64�stringEndArchive64�_ECD_SIGNATURE�_ECD_DISK_NUMBER�_ECD_DISK_START�_ECD_ENTRIES_THIS_DISK�_ECD_ENTRIES_TOTAL�	_ECD_SIZE�_ECD_OFFSET)�fpin�offset�endrec�dataZsigZdisknoZreloffZdisksZsz�create_versionZread_versionZdisk_numZdisk_dirZdircountZ	dircount2ZdirsizeZ	diroffsetrrr�
_EndRecData64�s>�


�rZc	Csd	|�dd�|��}z	|�td�Wn
tyYdSw|��}t|�tkrV|dd�tkrV|dd�dkrVt�t	|�}t
|�}|�d�|�|t�t|t|�St
|dtd�}|�|d�|��}|�t�}|dkr�|||t�}t|�tkr�dSt
t�t	|��}|t}||t|t|�}|�|�|�||�t|||||�SdS)Nrr r"���sr/i)rF�tell�sizeEndCentDirr<r@r2�stringEndArchiverHr1�structEndArchive�listr3rZ�max�rfind�_ECD_COMMENT_SIZE)	rUZfilesizerXrWZmaxCommentStartr7ZrecDataZcommentSize�commentrrrr;sD�


�r;c@sZeZdZ	dZddd�Zdd�Zdd	d
�Zdd�Zd
d�Ze	ddd�dd��Z
dd�ZdS)r
)�
orig_filenamerD�	date_time�
compress_type�_compresslevelrdr5�
create_systemrY�extract_version�reserved�	flag_bits�volume�
internal_attr�
external_attr�
header_offset�CRC�
compress_size�	file_size�	_raw_time�_end_offset�NoName��rrrrrcCs�||_|�td��}|dkr|d|�}tjdkr%tj|vr%|�tjd�}||_||_|ddkr5td��t	|_
d|_d|_d|_
tjdkrJd|_nd|_t|_t|_d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr�/rxz+ZIP does not support timestamps before 1980r/Zwin32r!)re�find�chr�os�sep�replacerDrf�
ValueErrorrrgrhrdr5�sys�platformri�DEFAULT_VERSIONrYrjrkrlrmrnrorrrsru)�selfrDrfZ	null_byterrr�__init__\s6

zZipInfo.__init__cCs�d|jj|jfg}|jtkr|�dt�|j|j��|jd?}|jd@}|r2|�dt	�
|��|r;|�d|�|��}|rD|jrL|�d|j�|rQ|j
rd|jtks\|j|j
krd|�d|j
�|�d	�d
�|�S)Nz<%s filename=%r� compress_type=%sr+rz filemode=%rz external_attr=%#xz
 file_size=%rz compress_size=%r�>�)�	__class__rrDrgrr3�compressor_names�getro�stat�filemode�is_dirrsrrr4)r�rE�hi�lo�isdirrrr�__repr__�s,
��






zZipInfo.__repr__NcCsz	|j}|ddd>|dd>B|dB}|dd>|d	d>B|ddB}|jd
@r4d}}}n	|j}|j}|j}|j}d}	|durN|tkpM|tk}|rbd}
|t�|
dt�	|
�d	||�}|tksj|tkrv|spt
d��d
}d
}t}	|jt
kr�tt|	�}	n
|jtkr�tt|	�}	t|	|j�|_t|	|j�|_|��\}}t�tt|j|j||j|||||t|�t|��
}
|
||S)Nrrxr&rr#r r!r(r"rz<HHQQz'Filesize would require ZIP64 extensions���)rfrlrqrrrsr5�ZIP64_LIMITrH�pack�calcsizer
�
ZIP64_VERSIONrgrra�
BZIP2_VERSIONr�LZMA_VERSIONrjrY�_encodeFilenameFlags�structFileHeader�stringFileHeaderrkr2)r��zip64�dt�dosdate�dostimerqrrrsr5�min_version�fmtrDrl�headerrrr�
FileHeader�sL$$
�




�zZipInfo.FileHeadercCs>z
|j�d�|jfWSty|j�d�|jdBfYSw)N�ascii�utf-8�)rD�encoderl�UnicodeEncodeError�r�rrrr��s
�zZipInfo._encodeFilenameFlagscCs6|j}tj}t|�dkr�|d|dd��\}}|dt|�kr'td||f��|dkr�|d|d�}zD|jdvrLd}|d|dd��\|_|dd�}|jd	krdd
}|d|dd��\|_|dd�}|jd	krvd}|d|dd��\|_Wntjy�td|�d
��d�w||dd�}t|�dksdSdS)Nr"r.z"Corrupt extra field %04x (size=%d)r)l����r�z	File sizez<Qrr�z
Compress sizez
Header offsetzCorrupt zip64 extra field. z not found.)	r5rHr1r2rrsrrrpr)r�r5r1�tpZlnrXZfieldrrr�_decodeExtra�s<


�����zZipInfo._decodeExtraT��strict_timestampsc	Cs	t|tj�rt�|�}t�|�}t�|j�}t�|j	�}|dd�}|s.|ddkr.d}n
|s8|ddkr8d}|dur>|}tj
�tj
�|�d�}|dtj
tjfvrd|dd�}|dtj
tjfvsT|rj|d7}|||�}|jd	@d
>|_|r�d|_|jd
O_|S|j|_|S)Nrr$rxrw�;)r�r���;r�rryrr+)�
isinstancer|�PathLike�fspathr��S_ISDIR�st_mode�time�	localtime�st_mtime�path�normpath�
splitdriver}�altseprors�st_size)	�clsrD�arcnamer��str��mtimerf�zinforrr�	from_file�s6

�
�zZipInfo.from_filecCs	|jddkS)N���ry�rDr�rrrr�szZipInfo.is_dir)rvrw�N)rrr�	__slots__r�r�r�r�r��classmethodr�r�rrrrr
As
,
.%r
cCs0td�D]}|d@r|d?dA}q|dL}q|S)Nrrl q[)�range)�crcr9rrr�_gen_crcs

r�csld�d�d�tdurttttd���at��fdd������fdd��|D]}�|�q&��fd	d
�}|S)NixV4i�gE#i�xV4�cs	|d?�||Ad@AS)Nr�r)Zchr�)�crctablerr�crc329sz_ZipDecrypter.<locals>.crc32cs<�|�����d@d@��ddd@���d?���dS)Nr�r�i�r�r)�c)r��key0�key1�key2rr�update_keys=s
z"_ZipDecrypter.<locals>.update_keyscsP	t�}|j}|D]}�dB}|||dAd?d@N}�|�||�q	t|�S)Nr rrr�)�	bytearrayr3�bytes)rXrEr3r��k)r�r�rr�	decrypterGs
z _ZipDecrypter.<locals>.decrypter)�	_crctabler`�mapr�r�)�pwd�pr�r)r�r�r�r�r�r�r�
_ZipDecrypter/s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�LZMACompressorcCs
d|_dSr�)�_compr�rrrr�Ws
zLZMACompressor.__init__cCsFt�dtji�}tjtjt�tj|�gd�|_t�dddt	|��|S)N�id��filtersz<BBHr&r")
�lzmaZ_encode_filter_properties�FILTER_LZMA1r��
FORMAT_RAW�_decode_filter_propertiesr�rHr�r2)r�Zpropsrrr�_initZs

�zLZMACompressor._initcCs*|jdur|��|j�|�S|j�|�Sr�)r�r��compress)r�rXrrrr�as
zLZMACompressor.compresscCs&|jdur|��|j��S|j��Sr�)r�r��flushr�rrrr�fs

zLZMACompressor.flushN)rrrr�r�r�r�rrrrr�Us
r�c@seZdZdd�Zdd�ZdS)�LZMADecompressorcCsd|_d|_d|_dS)Nr/F)�_decomp�_unconsumed�eofr�rrrr�ns
zLZMADecompressor.__init__c	Cs�|jdurM|j|7_t|j�dkrdSt�d|jdd��\}t|j�d|kr,dStjtjt�tj	|jdd|��gd�|_|jd|d�}|`|j�
|�}|jj|_|S)Nr"r/z<Hr r�)r�r�r2rHr1r�r�r�r�r��
decompressr�)r�rXZpsizerErrrr�ss"
�
�
zLZMADecompressor.decompressN)rrrr�r�rrrrr�lsr�ZstoreZshrink�reduceZimplode�tokenizeZdeflateZ	deflate64Zbzip2r�Zterse�Zlz77�aZwavpack�bZppmdcCs\|tkrdS|tkrtstd��dS|tkrtstd��dS|tkr*ts(td��dStd��)Nz.Compression requires the (missing) zlib modulez-Compression requires the (missing) bz2 modulez.Compression requires the (missing) lzma modulez(That compression method is not supported)	rr�zlib�RuntimeErrorr�bz2rr��NotImplementedError)�compressionrrr�_check_compression�s*������r�cCsf|tkr|durt�|tjd�St�tjtjd�S|tkr*|dur&t�|�St��S|tkr1t	�SdS)N��)
rr�ZcompressobjZDEFLATEDZZ_DEFAULT_COMPRESSIONrr�Z
BZ2Compressorrr�)rg�
compresslevelrrr�_get_compressor�s
r�cCspt|�|tkr
dS|tkrt�d�S|tkrt��S|tkr"t	�St
�|�}|r1td||f��td|f��)Nr�zcompression type %d (%s)zcompression type %d)
r�rrr�Z
decompressobjrr�ZBZ2Decompressorrr�r�r�r�)rgZdescrrrr�_get_decompressor�s

r�c@s8eZdZdd�Zdd�Zddd�Zdd	d
�Zdd�Zd
S)�_SharedFilecCs*||_||_||_||_||_|j|_dSr�)�_file�_pos�_close�_lock�_writing�seekable)r��file�pos�close�lockZwritingrrrr��sz_SharedFile.__init__cC�|jSr�)rr�rrrr\��z_SharedFile.tellrcCsZ|j� |��rtd��|j�||�|j��|_|jWd�S1s&wYdS)Nz}Can't reposition in the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rrrrrFr\r)r�rV�whencerrrrF�s$�z_SharedFile.seekr�cCsd|j�%|��rtd��|j�|j�|j�|�}|j��|_|Wd�S1s+wYdS)N�yCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rrrrrFrr@r\�r��nrXrrrr@�s$�z_SharedFile.readcCs(|jdur|j}d|_|�|�dSdSr�)rr)r��fileobjrrrr	�s

�z_SharedFile.closeN�r�r�)rrrr�r\rFr@r	rrrrr�s


rc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	_TellablecCs||_d|_dS�Nr)r>rV�r�r>rrrr��s
z_Tellable.__init__cCs|j�|�}|j|7_|Sr�)r>�writerV)r�rXrrrrr�sz_Tellable.writecCrr�)rVr�rrrr\rz_Tellable.tellcC�|j��dSr�)r>r�r�rrrr��z_Tellable.flushcCrr�)r>r	r�rrrr		rz_Tellable.closeN)rrrr�rr\r�r	rrrrr�srcs�eZdZ	dZdZdZ		d'dd�Zdd	�Zd
d�Zd(d
d�Z	d)dd�Z
dd�Zd(dd�Zdd�Z
dd�Zdd�Zdd�Z�fdd�Zd d!�Zd*d#d$�Zd%d&�Z�ZS)+�
ZipExtFilei@iiNFcCs&||_||_||_|j|_|j|_|j|_t	|j�|_
d|_d|_d|_
d|_||_|j|_t|d�r=|j|_td�|_nd|_d|_z|��r\|��|_|j|_|j|_|j|_d|_Wn	tyfYnwd|_|r�|j d@ry|j!d?d@}n|jd?d@}|�"�}||kr�t#d	|j$��dSdS)
NFr/rrqTrr�r�zBad password for file %r)%�_fileobj�_pwd�_close_fileobjrg�_compress_typerr�_compress_leftrs�_leftr��
_decompressor�_eof�_readbuffer�_offset�newlines�moderD�namerBrq�
_expected_crcr��_running_crc�	_seekablerr\�_orig_compress_start�_orig_compress_size�_orig_file_size�_orig_start_crc�AttributeError�
_decrypterrlrt�_init_decrypterr�re)r�rr&�zipinfor�Z
close_fileobjZ
check_byte�hrrrr�sN

��
�zZipExtFile.__init__cCs4t|j�|_|j�d�}|jd8_|�|�dS)Nrr()r�rr0rr@r)r�r�rrrr1NszZipExtFile._init_decryptercCsvd|jj|jjfg}|js,|�d|j|jf�|jtkr+|�dt	�
|j|j��n|�d�|�d�d�|�S)N�<%s.%sz name=%r mode=%rr��	 [closed]r�r�)r�rr�closedr3r'r&rrr�r�r4�r�rErrrr�Ys�
���


zZipExtFile.__repr__r�cCsN	|dkr |j�d|j�d}|dkr |j|j|�}||_|Stj�||�S)Nr�
r)r#rzr$�io�BufferedIOBase�readline)r��limitr8�linerrrr;gszZipExtFile.readlinercCst	|t|j�|jkr/|�|�}t|�|jkr&||j|jd�|_d|_n	|jt|�8_|j|j|jd�S)Nri)r2r#r$r@)r�r�chunkrrr�peekws
zZipExtFile.peekcCs|jrtd��dS)N�I/O operation on closed file.T)r6rr�rrr�readable�szZipExtFile.readablecCs$	|jrtd��|dus|dkr.|j|jd�}d|_d|_|js,||�|j�7}|jr!|S||j}|t|j�krG|j|j|�}||_|S|t|j�}|j|jd�}d|_d|_|dkr�|js�|�|�}|t|�kr||_||_||d|�7}	|S||7}|t|�8}|dkr�|jrc|S)Nzread from closed file.rr/)r6rr#r$r"�_read1�MAX_Nr2)r�r�buf�endrXrrrr@�s@�

��	zZipExtFile.readcCsD|jdurdSt||j�|_|jr|j|jkr td|j��dSdS)NzBad CRC-32 for file %r)r(r�r)r"rr')r��newdatarrr�_update_crc�s
�zZipExtFile._update_crccCs	|dus	|dkr.|j|jd�}d|_d|_|js,|�|j�}|r)||7}	|S|jr|S||j}|t|j�krG|j|j|�}||_|S|t|j�}|j|jd�}d|_d|_|dkr�|js�|�|�}|t|�kr||_||_||d|�7}	|S|r�||7}	|S|jrc|S�Nrr/)r#r$r"rBrCr2)r�rrDrXrErrr�read1�sJ�

��
zZipExtFile.read1cCs |js|dkr	dS|jtkr$|jj}|t|�kr#||�|t|��7}n|�|�}|jtkr5|jdk|_n<|jtkrat	||j
�}|j�||�}|jjpT|jdkoT|jj|_|jr`||j�
�7}n|j�|�}|jjpo|jdk|_|d|j�}|jt|�8_|jdkr�d|_|�|�|S)Nrr/T)r"rrr!Zunconsumed_tailr2�_read2rrra�
MIN_READ_SIZEr�r�r�r rGrrrrrB�s8
�



��

zZipExtFile._read1cCsd|jdkrdSt||j�}t||j�}|j�|�}|jt|�8_|s&t�|jdur0|�|�}|SrH)	rrarK�minrr@r2�EOFErrorr0rrrrrJ�s


zZipExtFile._read2cs>z|jr|j��Wt���dSWt���dSt���wr�)rrr	�superr��r�rrr	s�zZipExtFile.closecCs|jrtd��|jS�Nr@)r6rr*r�rrrrszZipExtFile.seekablercCsJ|jrtd��|jst�d��|��}|dkr|}n|dkr#||}n|dkr-|j|}ntd��||jkr9|j}|dkr?d}||}||j}|dkrY|t|j	�krY||_d}n1|dkr�|j
�|j�|j
|_|j|_|j|_d|_	d|_t|j�|_d|_|}|jdur�|��|dkr�t|j|�}|�|�||8}|dks�|��S)	Nzseek on closed file.�!underlying stream is not seekablerrr zCwhence must be os.SEEK_SET (0), os.SEEK_CUR (1), or os.SEEK_END (2)r/F)r6rr*r9�UnsupportedOperationr\r-r$r2r#rrFr+r.r)r,rr r�rr!r"r0r1rL�
MAX_SEEK_READr@)r�rVr
Zcurr_posZnew_posZread_offsetZbuff_offsetZread_lenrrrrFsN





�zZipExtFile.seekcCs>|jrtd��|jst�d��|j|jt|j�|j	}|S)Nztell on closed file.rQ)
r6rr*r9rRr-r r2r#r$)r�Zfileposrrrr\Ms
zZipExtFile.tell)NFr�rr)rrrrCrKrSr�r1r�r;r?rAr@rGrIrBrJr	rrFr\�
__classcell__rrrOrr
s,
�3


#
%$
2rcs@eZdZdd�Zedd��Zdd�Zdd�Z�fd	d
�Z�Z	S)�
_ZipWriteFilecCs8||_||_||_t|j|j�|_d|_d|_d|_	dSr)
�_zinfo�_zip64�_zipfiler�rgrh�_compressor�
_file_size�_compress_size�_crc)r��zfr�r�rrrr�Ws�
z_ZipWriteFile.__init__cCs|jjSr�)rYr>r�rrrrasz_ZipWriteFile._fileobjcCsdS)NTrr�rrr�writablee�z_ZipWriteFile.writablecCs�|jrtd��t|ttf�rt|�}nt|�}|j}|j|7_t	||j
�|_
|jr:|j�|�}|j
t|�7_
|j�|�|SrP)r6rr�r�r�r2�
memoryview�nbytesr[r�r]rZr�r\rr)r�rXrbrrrrhs
z_ZipWriteFile.writec	sf|jrdSz�t���|jr(|j��}|jt|�7_|j�|�|j|j	_
n|j|j	_
|j|j	_
|j|j	_|j	jd@r_|jrBdnd}|j�t�|t|j	j
|j	j
|j	j��|j��|j_n7|jst|jtkrktd��|jtkrttd��|j��|j_|j�|j	j�|j�|j	�|j��|j�|jj�|jj�|j	�|j	|jj|j	j<Wd|j_ dSd|j_ w)Nrz<LLQQz<LLLLz+File size unexpectedly exceeded ZIP64 limitz1Compressed size unexpectedly exceeded ZIP64 limitF)!r6rNr	rZr�r\r2rrrWrrr[r]rqrsrlrXrHr��
_DD_SIGNATUREr\rY�	start_dirr�r�rFrpr��filelistr3�
NameToInforDr)r�rDr�rOrrr	{sD




�
�
�z_ZipWriteFile.close)
rrrr��propertyrr_rr	rUrrrOrrVVs

rVc@s(eZdZ	dZdZdeddfdd�dd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zd<dd�Z
dd�Zdd�Zdd�Zedd��Zejdd��Zd<dd�Zd=d d!�d"d#�Zd>d$d%�Zd?d&d'�Zd@d(d)�Zed*d+��Zd,d-�Zd.d/�Z		d@d0d1�Z	d?d2d3�Zd4d5�Zd6d7�Z d8d9�Z!d:d;�Z"dS)ArN�rTr�c
	CsB	|dvr	td��t|�||_d|_d|_i|_g|_||_||_||_	d|_
d|_||_t
|tj�r9t�|�}t
|t�rqd|_||_dddd	dd
dd�}||}	z	t�||�|_Wntyn||vrm||}YqR�w	n
d|_||_t|dd�|_d|_t��|_d
|_d|_z�|dkr�|��WdS|dvr�d
|_z|j� �|_!Wnt"tfy�t#|j�|_d|_!d|_YWdSwz|j�$|j!�WWdSt"tfy�d|_YWdSw|dk�rz|��|j�$|j!�WWdSt%�y
|j�$dd�d
|_|j� �|_!YWdSwtd��|j}	d|_|�&|	��)N)rh�w�x�az+ZipFile requires mode 'r', 'w', 'x', or 'a'Frr/rA�w+b�x+b�r+b�wbZxb)rhrirjrkrnrlrmTrr'rh)rirjrkr z"Mode must be 'r', 'w', 'x', or 'a')'rr��_allowZip64�
_didModify�debugrfrer�r�r&r��_comment�_strict_timestampsr�r|r�r��str�_filePassedrDr9rCr>r<�getattr�_fileRefCnt�	threading�RLockrr*r�_RealGetContentsr\rdr/rrFr�_fpclose)
r�rr&r��
allowZip64r�r�ZmodeDictr�r>rrrr��s�

��
��
�	
zZipFile.__init__cCs|Sr�rr�rrr�	__enter__r`zZipFile.__enter__cCs|��dSr��r	)r��type�value�	tracebackrrr�__exit__"�zZipFile.__exit__cCs�d|jj|jjfg}|jdur2|jr|�d|j�n
|jdur)|�d|j�|�d|j�n|�d�|�d�d�|�S)Nr4z file=%rz filename=%rz mode=%rr5r�r�)	r�rrr>rvr3rDr&r4r7rrrr�%s�




zZipFile.__repr__cCs�	|j}zt|�}Wntytd��w|std��|jdkr%t|�|t}|t}|t|_	|t
||}|ttkrF|t
t8}|jdkrV||}td|||�|||_|jdkrdtd��|�|jd�|�|�}t�|�}d}||k�r`|�t�}	t|	�tkr�td��t�t|	�}	|	ttkr�td��|jdkr�t|	�|�|	t�}
|	d	}|d
@r�|
�d�}
n|
�d�}
t|
�}|�|	t�|_|�|	t �|_!|	t"|_#|	dd
�\|_$|_%|_&|_'|_(|_)}
}|_*|_+|_,|j&t-kr�t.d|j&d��|	dd�\|_/|_0|_1|
|_2|d?d|d	?d@|d@|
d?|
d	?d@|
d@df|_3|�4�|j#||_#|j5�6|�||j7|j8<|t|	t|	t|	t }|jdk�r\td|�||ks||j}t9|j5dd�dd�D]	}||_:|j#}�qmdS)NzFile is not a zip filerr zgiven, inferred, offsetrz Bad offset for central directoryzTruncated central directoryz&Bad magic number for central directoryr#r�r��cp437rzzip file version %.1fr'r*r-r&rxr�r(r�totalcSrr�)rp)r�rrr�<lambda>��z*ZipFile._RealGetContents.<locals>.<lambda>T)�key�reverse);r>r;r<rrr�printrSrT�_ECD_COMMENTrs�
_ECD_LOCATIONrNrMrKrGrdrFr@r9�BytesIO�sizeCentralDirr2rHr1�structCentralDir�
_CD_SIGNATURE�stringCentralDir�_CD_FILENAME_LENGTH�decoder
�_CD_EXTRA_FIELD_LENGTHr5�_CD_COMMENT_LENGTHrd�_CD_LOCAL_HEADER_OFFSETrprYrirjrkrlrgrqrrrs�MAX_EXTRACT_VERSIONr�rmrnrortrfr�rer3rfrD�sortedru)r�r>rWZsize_cdZ	offset_cd�concatZinferredrXr��centdirrD�flagsrj�t�d�
end_offsetr�rrrr{3s��












�
����
�/
�
�zZipFile._RealGetContentscCs	dd�|jD�S)NcSsg|]}|j�qSrr�)�.0rXrrr�
<listcomp>�sz$ZipFile.namelist.<locals>.<listcomp>�rer�rrr�namelist�szZipFile.namelistcC�	|jSr�r�r�rrr�infolist�szZipFile.infolistcCsN	tdd|d�|jD]}d|jdd�}td|j||jf|d�qdS)Nz%-46s %19s %12s)z	File NamezModified    ZSize)rz%d-%02d-%02d %02d:%02d:%02dr$z
%-46s %s %12d)r�rerfrDrs)r�rr��daterrr�printdir�s�
��zZipFile.printdirc	Csz	d}|jD]4}z$|�|jd��}|�|�r	|�|�sWd�n1s&wYWqty:|jYSwdS)Nirh)rerCrDr@r)r�Z
chunk_sizer��frrr�testzip�s


������zZipFile.testzipcCs&	|j�|�}|durtd|��|S)Nz(There is no item named %r in the archive)rfr��KeyError)r�r'�inforrr�getinfo�s�zZipFile.getinfocCs:	|rt|t�stdt|�j��|r||_dSd|_dS)N�pwd: expected bytes, got %s)r�r��	TypeErrorr�rr�)r�r�rrr�setpassword�s

zZipFile.setpasswordcCr�r�)rsr�rrrrd�szZipFile.commentcCs^t|t�stdt|�j��t|�tkr'ddl}|jdtdd�|dt�}||_	d|_
dS)Nzcomment: expected bytes, got %srz3Archive comment is too long; truncating to %d bytesr ��
stacklevelT)r�r�r�r�rr2�ZIP_MAX_COMMENT�warnings�warnrsrq)r�rdr�rrrrd�s
��
cCs<	|�|d|��}|��Wd�S1swYdS�Nrh�rCr@)r�r'r�r>rrrr@�s$�zZipFile.readF��force_zip64cs,	|dvr	td��|rt|t�stdt|�j��|r#|dkr#td���js*td��t|t�r2|}n|dkrCt|�}�j|_	�j
|_n��|�}|dkrS�j
||d�S�jrZtd���jd	7_t�j|j�j�j�fd
d��}z�|�t�}t|�tkr�td��t�t|�}|ttkr�td
��|�|t�}|tr�|�|t�|jd@r�t d��|jd@r�t d��|t!d@r�|�"d�}	n|�"d�}	|	|j#kr�td|j#|f��|j$dur�|�%�|j&|j$kr�td|j#�d���|jd	@}
|
�r|s��j'}|�st(d|��nd}t)||||d�WS|�*��)N>rirhzopen() requires mode "r" or "w"r�riz'pwd is only supported for reading filesz2Attempt to use ZIP archive that was already closedr�rrcs�jSr�)rrr�rrr�r�zZipFile.open.<locals>.<lambda>zTruncated file headerz Bad magic number for file header� z$compressed patched data (flag bit 5)�@zstrong encryption (flag bit 6)r�r�r�z/File name in directory %r and header %r differ.zOverlapped entries: z (possible zip bomb)z6File %r is encrypted, password required for extractionT)+rr�r�r�r�rr>r
r�rgr�rhr��_open_to_writerrxrrpr|rr@�sizeFileHeaderr2rrHr1r��
_FH_SIGNATUREr��_FH_FILENAME_LENGTH�_FH_EXTRA_FIELD_LENGTHrlr��_FH_GENERAL_PURPOSE_FLAG_BITSr�rerur\rrr�r�rr	)r�r'r&r�r�r�Zzef_fileZfheader�fnameZ	fname_strZis_encryptedrr�rrC�s��



�




��

��zZipFile.opencCs�|r	|js	td��|jrtd��d|_d|_d|_|jtkr%|jdO_|js/|jdO_|j	s5d|_	|jo@|p@|j
dtk}|jrK|j�
|j�|j��|_|�|�d|_|j�|�|��d|_t|||�S)	NzHforce_zip64 is True, but allowZip64 was False when opening the ZIP file.zzCan't write to the ZIP file while there is another write handle open on it. Close the first handle before opening another.rr r��g�������?T)rprrrrrqrlrgrr*rorsr�r>rFrdr\rp�_writecheckrqrr�rV)r�r�r�r�rrrr�7s4
�
�
zZipFile._open_to_writecCs,	|dur
t��}nt�|�}|�|||�Sr�)r|�getcwdr��_extract_member)r��memberr�r�rrr�extract`s


zZipFile.extractcCsJ	|dur	|��}|durt��}nt�|�}|D]	}|�|||�qdSr�)r�r|r�r�r�)r�r��membersr�r2rrr�
extractallms

�zZipFile.extractallcCs`	|j}|sd}t�|dt|��}||_|�|�}dd�|�|�D�}|�dd�|D��}|S)Nz:<>|"?*�_css�|]}|�d�VqdS)�.N)�rstrip�r�rjrrr�	<genexpr>���z1ZipFile._sanitize_windows_name.<locals>.<genexpr>css�|]}|r|VqdSr�rr�rrrr��s�)�!_windows_illegal_name_trans_tableru�	maketransr2�	translate�splitr4)r�r��pathsep�tableZillegalrrr�_sanitize_windows_name~s
zZipFile._sanitize_windows_namec	s�	t|t�s|�|�}|j�dtjj�}tjjr"|�tjjtjj�}tj�	|�d}dtjj
tjjf�tjj��fdd�|�
tjj�D��}tjjdkrT|�|tjj�}tj�||�}tj�|�}tj�|�}|rttj�|�stt�|�|��r�tj�|�s�t�|�|S|j||d��,}t|d��}t�||�Wd�n1s�wYWd�|SWd�|S1s�wY|S)	Nryrr�c3s�|]	}|�vr|VqdSr�rr��Zinvalid_path_partsrrr��s���z*ZipFile._extract_member.<locals>.<genexpr>�\�r�ro)r�r
r�rDr~r|r�r}r�r��curdir�pardirr4r�r�r��dirname�exists�makedirsr�r��mkdirrC�shutil�copyfileobj)r�r�Z
targetpathr�r�Z	upperdirs�source�targetrr�rr��s>

&

�(���zZipFile._extract_membercCs�	|j|jvrddl}|jd|jdd�|jdvrtd��|js%td��t|j�|j	sPd}t
|j�tkr9d}n|j
tkrAd	}n|jtkrHd
}|rRt|d��dSdS)NrzDuplicate name: %rr!r��rirjrkz&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closed�Files countZFilesizezZipfile size� would require ZIP64 extensions)rDrfr�r�r&rr>r�rgrpr2re�ZIP_FILECOUNT_LIMITrsr�rpr
)r�r�r��requires_zip64rrrr��s2
�


��zZipFile._writecheckc	Cs�	|jstd��|jrtd��tj|||jd�}|��r#d|_d|_n|dur+||_	n|j
|_	|dur7||_n|j|_|��r�|j
�H|jrM|j�|j�|j��|_|j	tkr_|jdO_|�|�d|_|j�|�||j|j<|j�|�d��|j��|_Wd�dS1s�wYdSt|d��.}|�|d	��}t�||d
�Wd�n1s�wYWd�dSWd�dS1s�wYdS)N�7Attempt to write to ZIP archive that was already closedz>Can't write to ZIP archive while an open writing handle existsr�rr TFrArii ) r>rrr
r�rtr�rrrqrgr�rhr�rr*rFrdr\rprrlr�rqrer3rfrDrr�rCr�r�)r�rDr�rgr�r��src�destrrrr�sL���

"�P�z
ZipFile.writec	Cs4	t|t�r|�d�}t|t�s=t|t�t���dd�d�}|j|_|j|_	|j
ddkr9d|_|jdO_nd|_n|}|jsFt
d	��|jrMt
d
��|durT||_|dur[||_	t|�|_|j�-|j|dd��
}|�|�Wd�n1s{wYWd�dSWd�dS1s�wYdS)
Nr�r$)rDrfr�ryi�Ar+r�r�z?Can't write to ZIP archive while an open writing handle exists.ri)r&)r�rur�r
r�r�r�rgr�rhrDror>rrr2rsrrCr)r�Zzinfo_or_arcnamerXrgr�r�r�rrr�writestr�sD


���
��"�zZipFile.writestrcCs	|��dSr�rr�rrr�__del__(szZipFile.__del__c	Cs�	|jdurdS|jrtd��za|jdvrG|jrU|j�|jr&|j�|j�|�	�Wd�n21s4wYW|j}d|_|�
|�dSW|j}d|_|�
|�dSW|j}d|_|�
|�dSW|j}d|_|�
|�dS|j}d|_|�
|�w)NzvCan't close the ZIP file while there is an open writing handle on it. Close the writing handle before closing the zip.r�)r>rrr&rqrr*rFrd�_write_end_recordr|rrrrr	,s<

�����z
ZipFile.closecCs
|jD]�}|j}|ddd>|dd>B|dB}|dd>|d	d>B|ddB}g}|jtks8|jtkrI|�|j�|�|j�d
}d
}n|j}|j}|jtkr]|�|j�d
}n|j}|j}	d}
|r�t|	d�}	t	j
dd
t|�ddt|�g|�R�|	}	t}
|j
tkr�tt|
�}
n
|j
tkr�tt|
�}
t|
|j�}t|
|j�}|��\}
}t	�
tt||j||j||j
|||j||t|
�t|	�t|j�d|j|j|�}|j�|�|j�|
�|j�|	�|j�|j�q|j� �}t|j�}||j!}|j!}d}|t"k�rd}n|tk�rd}n|tk�rd}|�rV|j#�s#t$|d��t	�
t%t&ddddd||||�}|j�|�t	�
t't(d|d�}|j�|�t)|d�}t)|d
�}t)|d
�}t	�
t*t+dd||||t|j,��	}|j�|�|j�|j,�|j-dk�r~|j�.�|j�/�dS)Nrrxr&rr#r r!r(r"r�rTr.�Qrr�zCentral directory offsetzCentral directory sizer��,rrrk)0rerfrsr�rrr3rpr5r:rHr�r2r�rgrrar�rr�rjrYr�r�r�rirkrqrdrnror>rr\rdr�rpr
rLrMrIrJrLr_r^rsr&�truncater�)r�r�r�r�r�r5rsrrrpZ
extra_datar�rjrYrDrlr�Zpos2ZcentDirCountZcentDirSizeZ
centDirOffsetr�Zzip64endrecZzip64locrecrWrrrr�Bs�
$$



���





�





���


�
zZipFile._write_end_recordcCs.|jd8_|js|js|��dSdSdS�Nr)rxrvr	rrrrr|�s�zZipFile._fpcloser�)rhN)F)NN)NNN)#rrrr>r�rr�r~r�r�r{r�r�r�r�r�r�rgrd�setterr@rCr�r�r�r�r�r�r�rr�r�r	r�r|rrrrr�sR��ZV
	
		



f
)


*
�2
�)^rc@s2eZdZ	deddfdd�Zddd	�Zd
d�ZdS)
rrhTr�cCstj|||||d�||_dS)N)r&r�r})rr��	_optimize)r�rr&r�r}�optimizerrrr��s�
zPyZipFile.__init__r�NcCs�	t�|�}|r#||�s#|jr!tj�|�rdnd}td||f�dStj�|�\}}tj�|��r.tj�|d�}tj�|�r�|rHd||f}n|}|jrTtd|d|�|�	|dd	�|�\}}	|jrhtd
|	�|�
||	�tt�|��}
|
�
d�|
D]Y}tj�||�}tj�|�\}
}tj�|�r�tj�tj�|d��r�|j|||d�q||dkr�|r�||�s�|jr�td
|�q||�	|dd	�|�\}}	|jr�td
|	�|�
||	�q|dS|jr�td|�tt�|��D]D}tj�||�}tj�|�\}
}|dk�r+|�r||��s|j�rtd
|�q�|�	|dd	�|�\}}	|j�r%td
|	�|�
||	�q�dS|d	d�dk�r;td��|�	|dd	�|�\}}	|j�rPtd|	�|�
||	�dS)Nr�rz%s %r skipped by filterfuncz__init__.py�%s/%szAdding package in�asr���ZAdding)�
filterfunc�.pyzfile %r skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"zAdding file)r|r�rrr�r�r�r�r4�isfile�
_get_codenamerr��listdir�remove�splitext�writepyr�)r��pathname�basenamer�Zlabel�dirr'Zinitnamer�r�ZdirlistrDr��rootZextrrrr�s�



���
��

�
���
zPyZipFile.writepyc
s	d�fdd�	}|d}|d}tjj|dd�}tjj|dd�}tjj|d	d�}�jdkr�tj�|�rDt�|�jt�|�jkrD|}	}
n�tj�|�r[t�|�jt�|�jkr[|}
|}	n�tj�|�rrt�|�jt�|�jkrr|}
|}	nztj�|�r�t�|�jt�|�jkr�|}
|}	nc||�r�t	j
jd
kr�|}
nt	j
jdkr�|}
n|}
|}	nH|}
}	nC�jd
kr�|}
|}	n|}	�jdkr�|}
n�jd	kr�|}
n
d��j�}t
|��tj�|
�r�t�|
�jt�|�jks�||�jd�s�|}
}	tj�|	�d}|r�d
||f}|
|fS)Nr�c
sbddl}�jrtd|�z|j|d|d�WdS|jy0}zt|j�WYd}~dSd}~ww)NrZ	CompilingT)�doraiser�F)�
py_compilerrr��compile�PyCompileError�msg)rr�r�errr�rr�_compile	s
�
��z)PyZipFile._get_codename.<locals>._compiler�z.pycr�)�optimizationrr rz"invalid value for 'optimize': {!r})r�r�r)�	importlib�util�cache_from_sourcer�r|r�r�r�r�r�r�r��formatrr�)
r�rrrZfile_pyZfile_pycZpycache_opt0Zpycache_opt1Zpycache_opt2r�r�r	Zarchivenamerr�rr�sb





zPyZipFile._get_codename)r�N)rrrrr�rr�rrrrr�s
�
RrcCs	t�t|�dd�Sr�)�	itertools�islice�	_ancestry)r�rrr�_parentsUsrccsD�	|�tj�}|�tj�r |Vt�|�\}}|�tj�sdSdSr�)r��	posixpathr}r�)r��tailrrrrhs��rcCs	t�t|�j|�Sr�)r�filterfalse�set�__contains__)ZminuendZ
subtrahendrrr�_difference�srcsReZdZ	edd��Z�fdd�Zdd�Zdd�Z�fd	d
�Ze	dd��Z
�ZS)
�CompleteDirscCs.tj�tt|��}dd�|D�}tt||��S)Ncss�|]}|tjVqdSr�)rr})r�r�rrrr��r�z-CompleteDirs._implied_dirs.<locals>.<genexpr>)r�chain�
from_iterabler�r�_deduper)�names�parentsZas_dirsrrr�
_implied_dirs�szCompleteDirs._implied_dirscs tt|���}|t|�|��Sr�)rNrr�r`r!)r�rrOrrr��szCompleteDirs.namelistcCst|���Sr�)rr�r�rrr�	_name_set�r�zCompleteDirs._name_setcCs.	|��}|d}||vo||v}|r|S|S�Nry)r")r�r'rr�Z	dir_matchrrr�resolve_dir�s
zCompleteDirs.resolve_dircsF	zt��|�WSty"|�d�r||��vr�t|d�YSw)Nryr�)rNr�r��endswithr"r
)r�r'rOrrr��s�zCompleteDirs.getinfocCs:	t|t�r|St|t�s||�Sd|jvrt}||_|Sr�)r�rrr&r�)r�r�rrr�make�s


zCompleteDirs.make)rrr�staticmethodr!r�r"r$r�r�r&rUrrrOrr�s

rcs*eZdZ	�fdd�Z�fdd�Z�ZS)�
FastLookupc�Ft�t��|jWd�S1swYtt|���|_|jSr�)�
contextlib�suppressr/Z_FastLookup__namesrNr(r�r�rOrrr���
 �zFastLookup.namelistcr)r�)r*r+r/Z_FastLookup__lookuprNr(r"r�rOrrr"�r,zFastLookup._name_set)rrrr�r"rUrrrOrr(�sr(cOst�|d�||fS)Nr!)r9�
text_encoding)�encoding�args�kwargsrrr�_extract_text_encoding�sr1c@s�eZdZ	dZd&dd�Zd'dd�dd	�Zed
d��Zedd
��Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�ZeZed$d%��ZdS)(rz>{self.__class__.__name__}({self.root.filename!r}, {self.at!r})r�cCs	t�|�|_||_dSr�)r(r&r�at)r�rr2rrrr�3	s	
z
Path.__init__rhNr�cOs�	|��r	t|��|d}|��s|dkrt|��|jj|j||d�}d|vr1|s+|r/td��|St|i|��\}}}t	j
||g|�Ri|��S)Nrrhr��bz*encoding args invalid for binary operation)r��IsADirectoryErrorr��FileNotFoundErrorrrCr2rr1r9�
TextIOWrapper)r�r&r�r/r0Zzip_mode�streamr.rrrrC@	sz	Path.opencCst�|j�jp
|jjSr�)�pathlibZ
PurePosixPathr2r'rDr�rrrr'T	�z	Path.namecCst�|jj��|j�Sr�)r8rrrD�joinpathr2r�rrrrDX	r9z
Path.filenamecOsZt|i|��\}}}|jd|g|�Ri|���}|��Wd�S1s&wYdSr�)r1rCr@)r�r/r0r.�strmrrr�	read_text\	s$�zPath.read_textcCs6|�d��}|��Wd�S1swYdS)NrAr�)r�r;rrr�
read_bytesa	s$�zPath.read_bytescCst�|j�d��|j�d�kSr#)rr�r2r�)r�r�rrr�	_is_childe	szPath._is_childcCs|�|j|�Sr�)r�r)r�r2rrr�_nexth	rz
Path._nextcCs|jp	|j�d�Sr#)r2r%r�rrrr�k	szPath.is_dircCs|��o|��Sr�)r�r�r�rrr�is_filen	�zPath.is_filecCs|j|j��vSr�)r2rr"r�rrrr�q	szPath.existscCs.|��std��t|j|j���}t|j|�S)NzCan't listdir a file)r�rr�r?rr��filterr>)r�Zsubsrrr�iterdirt	szPath.iterdircCst�|jj|j�Sr�)rr4rrDr2r�rrr�__str__z	rAzPath.__str__cCs|jj|d�S)Nr�)�_Path__reprrr�rrrr�}	rz
Path.__repr__cGs&tj|jg|�R�}|�|j�|��Sr�)rr4r2r?rr$)r��other�nextrrrr:�	sz
Path.joinpathcCs6|js|jjSt�|j�d��}|r|d7}|�|�Sr#)r2rD�parentrr�r�r?)r�Z	parent_atrrrrH�	s
zPath.parent)r�)rh)rrrrEr�rCrgr'rDr<r=r>r?r�r@r�rCrDr�r:�__truediv__rHrrrrr�s.M



rc
s ddl}d}|j|d�}|jdd�}|jdddd	d
�|jddd
ddd�|jdddddd�|jddddd
�|�|�}|jdurm|j}t|d��}|��}Wd�n1sYwY|rgtd�	|��td�dS|j
dur�|j
}t|d��
}|��Wd�dS1s�wYdS|jdur�|j\}}t|d��}|�
|�Wd�dS1s�wYdS|jdu�r|j�d�}	|j}
�fdd��t|	d��1}|
D]%}tj�|�}|s�tj�tj�|��}|dtjtjfvr�d}�|||�q�Wd�dS1�swYdSdS) Nrz3A simple command-line interface for zipfile module.)�descriptionT)Zrequiredz-lz--list�	<zipfile>zShow listing of a zipfile)�metavar�helpz-ez	--extractr )rKz<output_dir>zExtract zipfile into target dir)�nargsrLrMz-cz--create�+)z<name>z<file>zCreate zipfile from sourcesz-tz--testzTest if a zipfile is validrhz.The following enclosed file is corrupted: {!r}zDone testingcsvtj�|�r|�||t�dStj�|�r7|r|�||�tt�|��D]}�|tj�||�tj�||��q$dSdSr�)	r|r�r�rrr�r�r�r4)r^r��zippathZnm��addToZiprrrR�	s��zmain.<locals>.addToZiprir�)�argparse�ArgumentParserZadd_mutually_exclusive_group�add_argument�
parse_args�testrr�r�rr`r�r�r�Zcreate�popr|r�rr�r�r�)
r/rSrJ�parser�groupr�r^Zbadfiler�Zzip_name�filesr�rPrrQr�main�	sh
�
�
�
�


�

"�

"��$��r\�__main__r�)�Zbinascii�importlib.utilr
r9rr|r�rer�r�rHr�ryr�r*r8r�r��ImportErrorr�r��__all__�	Exceptionrr
rrr�r�r�rrrrr�r�r�r�r�r_r^r�r]rNrOrPrQrRrSrTrcr�r�r�r�r�r�Z_CD_CREATE_VERSIONZ_CD_CREATE_SYSTEMZ_CD_EXTRACT_VERSIONZ_CD_EXTRACT_SYSTEMZ
_CD_FLAG_BITSZ_CD_COMPRESS_TYPEZ_CD_TIMEZ_CD_DATEZ_CD_CRCZ_CD_COMPRESSED_SIZEZ_CD_UNCOMPRESSED_SIZEr�r�r�Z_CD_DISK_NUMBER_STARTZ_CD_INTERNAL_FILE_ATTRIBUTESZ_CD_EXTERNAL_FILE_ATTRIBUTESr�r�r�r�r�Z_FH_EXTRACT_VERSIONZ_FH_EXTRACT_SYSTEMr�Z_FH_COMPRESSION_METHODZ_FH_LAST_MOD_TIMEZ_FH_LAST_MOD_DATEZ_FH_CRCZ_FH_COMPRESSED_SIZEZ_FH_UNCOMPRESSED_SIZEr�r�rIrJrGrLrMrKZ_CD64_SIGNATUREZ_CD64_DIRECTORY_RECSIZEZ_CD64_CREATE_VERSIONZ_CD64_EXTRACT_VERSIONZ_CD64_DISK_NUMBERZ_CD64_DISK_NUMBER_STARTZ_CD64_NUMBER_ENTRIES_THIS_DISKZ_CD64_NUMBER_ENTRIES_TOTALZ_CD64_DIRECTORY_SIZEZ_CD64_OFFSET_START_CENTDIRrcZStructr0r:r?r	rZr;�objectr
r�r�r�r�r�r�r�r�r�rrr:rrVrrrr�dict�fromkeysrrrr(r1rr\rrrrr�<module>s�

���






+=^&��������	�
���
�����
(KU/<

.
=
�