
    =Og\n                       	 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
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ej        Zn# e$ r dZe j        ZY nw xY w	 d dlZn# e$ r dZY nw xY w	 d dlZn# e$ r dZY nw xY wg dZ G d de          Z G d de          ZexZZdZdZdZd Zd	Zd
Z dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ( e
j)        e'          Z*d Z+dZ,dZ-dZ.dZ/dZ0dZ1dZ2d	Z3dZ4dZ5dZ6 e
j)        e5          Z7d Z8dZ9dZ:dZ;dZ<dZ=dZ>dZ?d	Z@dZAdZBdZCd
ZDdZEdZFdZGd ZHd!ZId"ZJdZKdZLd	ZMd#ZNd$ZOd%ZPd&ZQd'ZR e
j)        eQ          ZSd ZTdZUdZVdZWdZXdZYdZZdZ[d	Z\dZ]dZ^dZ_d(Z`d)Za e
j)        e`          Zbd*Zcd+Zd e
j)        ec          Zed ZfdZgdZhdZidZjdZkdZldZmd	ZndZod,Zp e
jq        d-          Zrd. Zsd/ Ztd0 Zud1 Zvd2 Zw G d3 d4ex          Zydazd5 Z{d6 Z| G d7 d8          Z} G d9 d:          Z~i d d;dd<dd=dd=dd=dd=dd>dd?d	d@ddAdd>d
dBddCd"dDdEdFdGdHdIdJZdK ZdfdLZdM Z G dN dO          Z G dP dQ          Z G dR dSej                  Z G dT dUej                  Z G dV dW          Z G dX dYe          ZdZ Zd[ Zej        Z	 d\ Z G d] d^e          Z G d_ d`e          ZdfdaZ G db dc          ZdfddZedek    r e             dS dS )g    N)
BadZipFile
BadZipfileerror
ZIP_STOREDZIP_DEFLATED	ZIP_BZIP2ZIP_LZMA
is_zipfileZipInfoZipFile	PyZipFileLargeZipFilePathc                       e Zd ZdS )r   N__name__
__module____qualname__      /usr/lib64/python3.11/zipfile.pyr   r   ,   s        Dr   r   c                       e Zd ZdS )r   Nr   r   r   r   r   r   0   s         r   r   i              -   .   ?   s   <4s4H2LHs   PK                     	   z<4s4B4HL2L5H2Ls   PK
                         @   i   z<4s2B4HL2L2Hs   PKz<4sLQLs   PKz
<4sQ2H2L4Qs   PKiPK<HHc                    t           j        }d}g }dx}}|dz   t          |           k    rd || ||dz                      \  }}|dz   |z   }	||v r'||k    r|                    | ||                    |	}d}|	}|dz   t          |           k    d|s| S |t          |           k    r|                    | |d                     d                    |          S )NFr   r$   Tr   )_EXTRA_FIELD_STRUCTunpacklenappendjoin)
extraxidsr5   modifiedbufferstartixidxlenjs
             r   _strip_extrarB      s     'FHFMEA
a%3u::

F5QU+,,	TEDL$;;EzzeEAI.///EH a%3u::

  E

eEFFm$$$88Fr   c                 L    	 t          |           rdS n# t          $ r Y nw xY wdS )NTF)_EndRecDataOSErrorfps    r   _check_zipfilerH      sD    r?? 	4	   5s    
!!c                     	 d}	 t          | d          rt          |           }n7t          | d          5 }t          |          }d d d            n# 1 swxY w Y   n# t          $ r Y nw xY w|S )NFreadrF   rb)hasattrrH   openrE   )filenameresultrG   s      r   r
   r
      s     F8V$$ 	,#x000FFh%% ,'++, , , , , , , , , , , , , , ,   Ms4   1A AA AA AA 
A+*A+c           
         	 	 |                      |t          z
  d           n# t          $ r |cY S w xY w|                     t                    }t	          |          t          k    r|S t          j        t          |          \  }}}}|t          k    r|S |dk    s|dk    rt          d          |                      |t          z
  t          z
  d           |                     t                    }t	          |          t          k    r|S t          j        t          |          \
  }}}	}
}}}}}}|t          k    r|S ||t          <   ||t          <   ||t          <   ||t           <   ||t"          <   ||t$          <   ||t&          <   |S )Nr"   r   r!   z3zipfiles that span multiple disks are not supported)seeksizeEndCentDir64LocatorrE   rJ   r6   structr5   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datasigdisknoreloffdisksszcreate_versionread_versiondisk_numdisk_dirdircount	dircount2dirsize	diroffsets                    r   _EndRecData64rq      s   		&22A6666    
 99,--D
4yy+++!'/H$!O!OC
'''{{eaiiNOOO 	IIf..1AA1EEE99%&&D
4yy$$$ 	($//0C^\8X)Wi
    !F>'F&F?%-F!"!*FF9#F;Ms   " 11c                    	 |                      dd           |                                 }	 |                      t           d           n# t          $ r Y d S w xY w|                                 }t          |          t          k    r|dd         t          k    r|dd          dk    rrt          j        t          |          }t          |          }|                    d           |                    |t          z
             t          | t           |          S t          |dz
  t          z
  d          }|                      |d           |                                 }|                    t                    }|dk    r|||t          z            }t          |          t          k    rd S t          t          j        t          |                    }|t                   }||t          z   |t          z   |z            }|                    |           |                    ||z              t          | ||z   |z
  |          S d S )Nr   r"   r$   s     r   i   )rQ   tellsizeEndCentDirrE   rJ   r6   stringEndArchiverS   r5   structEndArchivelistr7   rq   maxrfind_ECD_COMMENT_SIZE)	r`   filesizerc   rb   maxCommentStartr=   recDatacommentSizecomments	            r   rD   rD     s$   M 	IIaOOOyy{{H
		>/1%%%%   tt99;;DD		^##QqS	%%%RSS	[  /66F|| 	ch/000 TN?F;;; (g.?CCOIIoq!!!99;;DJJ'((EzzuU>112w<<>))4fm$4g>>??./u^+E.,@,LLMgo-... T?U#:X#E#% % 	% 4s   A
 

AAc                   Z    e Zd Z	 dZddZd ZddZd Zd	 Ze	dd
dd            Z
d ZdS )r   )orig_filenamerN   	date_timecompress_type_compresslevelr   r9   create_systemri   extract_versionreserved	flag_bitsvolumeinternal_attrexternal_attrheader_offsetCRCcompress_size	file_size	_raw_time_end_offsetNoName  r!   r!   r   r   r   c                 f   || _         |                    t          d                    }|dk    r
|d|         }t          j        dk    r.t          j        |v r |                    t          j        d          }|| _        || _        |d         dk     rt          d          t          | _
        d | _        d| _        d| _        t          j        dk    rd| _        nd| _        t"          | _        t"          | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d S )Nr   /r   z+ZIP does not support timestamps before 1980r   win32r#   )r   findchrossepreplacerN   r   
ValueErrorr   r   r   r   r9   sysplatformr   DEFAULT_VERSIONri   r   r   r   r   r   r   r   r   r   )selfrN   r   	null_bytes       r   __init__zZipInfo.__init__v  s*   % MM#a&&))	>>),H 6S==RVx//''44H "Q<$JKKK ("
<7""!"D "#D-.r   c                    d| j         j        d| j        g}| j        t          k    r;|                    dt                              | j        | j                  z             | j        dz	  }| j        dz  }|r*|                    dt          j
        |          z             |r|                    d|z             |                                 }|r| j        r|                    d| j        z             |r| j        r=| j        t          k    s| j        | j        k    r|                    d	| j        z             |                    d
           d                    |          S )N<z
 filename= compress_type=%sr-   r   z filemode=%rz external_attr=%#xz file_size=%rz compress_size=%r> )	__class__r   rN   r   r   r7   compressor_namesgetr   statfilemodeis_dirr   r   r8   )r   rO   hiloisdirs        r   __repr__zZipInfo.__repr__  s{    '+~'>'>'>NO++MM-*..t/A/3/AC CC D D D 2%&( 	>MM.4=+<+<<=== 	5MM.3444 	< 	<MM/DN:;;; 	D$, 	D:--^t111MM-0BBCCCcwwvr   Nc                    	 | j         }|d         dz
  dz  |d         dz  z  |d         z  }|d         dz  |d	         dz  z  |d         dz  z  }| j        t          z  rdx}x}}n| j        }| j        }| j        }| j        }d}	||t          k    p
|t          k    }|r=d
}
|t          j	        |
dt          j
        |
          d	z
  ||          z   }d}d}t          }	| j        t          k    rt          t          |	          }	n%| j        t           k    rt          t"          |	          }	t          |	| j                  | _        t          |	| j                  | _        |                                 \  }}t          j	        t*          t,          | j        | j        || j        |||||t1          |          t1          |                    }||z   |z   S )Nr   r   r(   r!   r%   r"   r#   r*   r$   z<HHQQ    )r   r   _MASK_USE_DATA_DESCRIPTORr   r   r   r9   ZIP64_LIMITrS   packcalcsizeZIP64_VERSIONr   r   ry   BZIP2_VERSIONr	   LZMA_VERSIONr   ri   _encodeFilenameFlagsstructFileHeaderstringFileHeaderr   r6   )r   zip64dtdosdatedostimer   r   r   r9   min_versionfmtrN   r   headers                 r   
FileHeaderzZipInfo.FileHeader  s   	 ^a54<A%1
2RU:Q%2+1
*beqj9>55 	'.//C/-))(C .MI
= +J}{/JE 	(CFK()6?3+?+?+A9m] ] ]E"I&M'K**m[99KK8++lK88K";0DEE!+t/BCC"7799)-/?!14=)!/'3*I ]]CJJ	8 8
  5((r   c                     	 | j                             d          | j        fS # t          $ r, | j                             d          | j        t          z  fcY S w xY w)Nasciiutf-8)rN   encoder   UnicodeEncodeError_MASK_UTF_FILENAMEr   s    r   r   zZipInfo._encodeFilenameFlags  sm    	V=''00$.@@! 	V 	V 	V=''00$.CU2UUUUU	Vs    # 3AAc                    | j         }t          j        }t          |          dk    r* |d|d d                   \  }}|dz   t          |          k    rt	          d||fz            |dk    r|d|dz            }	 | j        dv r'd} |d|d d                   \  | _        |dd          }| j        d	k    r'd
} |d|d d                   \  | _        |dd          }| j        d	k    rd} |d|d d                   \  | _        n'# t          j        $ r t	          d| d          d w xY w||dz   d          }t          |          dk    (d S d S )Nr$   r2   z"Corrupt extra field %04x (size=%d)r!   )l    r   z	File sizez<Qr   r   zCompress sizezHeader offsetzCorrupt zip64 extra field. z not found.)	r9   rS   r5   r6   r   r   r   r   r   )r   r9   r5   tplnrc   fields          r   _decodeExtrazZipInfo._decodeExtra  s   
%jjAooVE5!9--FB!tc%jj   !ER!PQQQV||Qr!tV}F~)MMM +*0&tBQBx*@*@#ABBx)[88 /.4fT48.D.D+*#ABBx)[88 /.4fT48.D.D+*| F F F$ &;(-&; &; &; < <AEFF "Q$%%LE/ %jjAoooooos   =B
D $D,Tstrict_timestampsc                   	 t          |t          j                  rt          j        |          }t          j        |          }t	          j        |j                  }t          j        |j	                  }|dd         }|s|d         dk     rd}n|s|d         dk    rd}||}t          j
                            t          j
                            |          d                   }|d         t          j        t          j        fv r*|dd          }|d         t          j        t          j        fv *|r|dz  } | ||          }|j        d	z  d
z  |_        |rd|_        |xj        d
z  c_        n|j        |_        |S )Nr   r&   r   r   ;  )r   r         ;   r   r!   r   r   r-   )
isinstancer   PathLikefspathr   S_ISDIRst_modetime	localtimest_mtimepathnormpath
splitdriver   altsepr   r   st_size)	clsrN   arcnamer   str   mtimer   zinfos	            r   	from_filezZipInfo.from_file  s   	 h,, 	+y**HWXRZ((r{++!A#J	  	3Yq\D%8%8-II" 	3y|d':':2I?G'""27#5#5g#>#>q#ABBajRVRY///abbkG ajRVRY/// 	sNGGY''!zF2r9 	)EO4' jEOr   c                     	 | j                             d          rdS t          j        j        r:| j                             t          j        j        t          j        j        f          S dS )Nr   TF)rN   endswithr   r   r   r   r   s    r   r   zZipInfo.is_dir1  sY    @=!!#&& 	4
 7> 	I=))27;*GHHHur   )r   r   N)r   r   r   	__slots__r   r   r   r   r   classmethodr   r   r   r   r   r   r   [  s        HI0'  '  '  ' X  ,.) .) .) .)`V V V! ! !: #D # # # # [#J
 
 
 
 
r   r   c                 P    t          d          D ]}| dz  r	| dz	  dz  } | dz  } | S )Nr   r!   l    q[ )range)crcrA   s     r   _gen_crcr   C  sC    1XX  7 	!8z)CCAICCJr   c                     dddt           /t          t          t          t	          d                              a t           fdfd| D ]} |           fd}|S )NixV4igE#ixV4   c                 .    	 |dz	  || z  dz           z  S )Nr      r   )chr   crctables     r   crc32z_ZipDecrypter.<locals>.crc32]  s#    6qHcBh$%6777r   c                 j     |           dz  z   dz  dz  dz   dz   dz	            d S )Nr   r   ir!      r   )cr   key0key1key2s    r   update_keysz"_ZipDecrypter.<locals>.update_keysa  sR    uQ~~t$
2y 1$
2uTRZ&&r   c                     	 t                      }|j        }| D ].}dz  }|||dz  z  dz	  dz  z  } |            ||           /t          |          S )Nr"   r!   r   r   )	bytearrayr7   bytes)rc   rO   r7   r   kr  r  s        r   	decrypterz _ZipDecrypter.<locals>.decrypterk  sr    % 	 	AqA1!9"d**AKNNNF1IIIIV}}r   )	_crctablerx   mapr   r   )	pwdpr	  r   r   r  r  r  r  s	      @@@@@@r   _ZipDecrypterr  S  s    DDD XuSzz2233	H8 8 8 8 8' ' ' ' ' ' ' '   A	 	 	 	 	 	 r   c                   &    e Zd Zd Zd Zd Zd ZdS )LZMACompressorc                     d | _         d S r   )_compr   s    r   r   zLZMACompressor.__init__{  s    


r   c                    t          j        dt           j        i          }t          j        t           j        t          j        t           j        |          g          | _        t          j        dddt          |                    |z   S )Nidfiltersz<BBHr(   r$   )
lzma_encode_filter_propertiesFILTER_LZMA1r  
FORMAT_RAW_decode_filter_propertiesr  rS   r   r6   )r   propss     r   _initzLZMACompressor._init~  ss    .d6G/HII(*4+<eDDC
   
 {61aU44u<<r   c                     | j         /|                                 | j                             |          z   S | j                             |          S r   )r  r  compress)r   rc   s     r   r  zLZMACompressor.compress  sC    :::<<$*"5"5d";";;;z""4(((r   c                     | j         .|                                 | j                                         z   S | j                                         S r   )r  r  flushr   s    r   r!  zLZMACompressor.flush  s?    :::<<$*"2"2"4"444z!!!r   N)r   r   r   r   r  r  r!  r   r   r   r  r  y  sP          = = =) ) )
" " " " "r   r  c                       e Zd Zd Zd ZdS )LZMADecompressorc                 0    d | _         d| _        d| _        d S )Nr   F)_decomp_unconsumedeofr   s    r   r   zLZMADecompressor.__init__  s    r   c           
         | j         | xj        |z  c_        t          | j                  dk    rdS t          j        d| j        dd                   \  }t          | j                  d|z   k    rdS t          j        t
          j        t          j        t
          j	        | j        dd|z                      g          | _         | j        d|z   d          }| `| j         
                    |          }| j         j        | _        |S )Nr$   r   z<Hr"   r  )r%  r&  r6   rS   r5   r  r#  r  r  r  
decompressr'  )r   rc   psizerO   s       r   r)  zLZMADecompressor.decompress  s   <$4#$$))s]4)9!A#)>??FE4#$$E	11s0.t/@/3/?!e)/LN NK   DL #AIJJ/D ((..<#r   N)r   r   r   r   r)  r   r   r   r#  r#    s2          
    r   r#  storeshrinkreduceimplodetokenizedeflate	deflate64bzip2r  terse   lz77a   wavpackb   ppmdc                    | t           k    rd S | t          k    rt          st          d          d S | t          k    rt
          st          d          d S | t          k    rt          st          d          d S t          d          )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)	r   r   zlibRuntimeErrorr   bz2r	   r  NotImplementedError)compressions    r   _check_compressionr@    s    j  		$	$ 	B@B B B	B 	B 
		!	! 	A?A A A	A 	A 
	 	  	B@B B B	B 	B ""LMMMr   c                 N   | t           k    rL| t          j        |t          j        d          S t          j        t          j        t          j        d          S | t
          k    r)|t          j        |          S t          j                    S | t          k    rt                      S d S )N)
r   r;  compressobjDEFLATEDZ_DEFAULT_COMPRESSIONr   r=  BZ2Compressorr	   r  )r   compresslevels     r   _get_compressorrH    s    $$$#M4=#FFF :DM3OOO	)	#	#$$]333 """	(	"	"tr   c                 l   t          |            | t          k    rd S | t          k    rt          j        d          S | t
          k    rt          j                    S | t          k    rt                      S t                              |           }|rt          d| |fz            t          d| fz            )NrB  zcompression type %d (%s)zcompression type %d)r@  r   r   r;  decompressobjr   r=  BZ2Decompressorr	   r#  r   r   r>  )r   descrs     r   _get_decompressorrM    s    }%%%
""t	,	&	&!#&&&	)	#	#"$$$	(	"	"!!! $$]33 	P%&@MSXCY&YZZZ%&;}>N&NOOOr   c                   0    e Zd Zd Zd Zd	dZd
dZd ZdS )_SharedFilec                 d    || _         || _        || _        || _        || _        |j        | _        d S r   )_file_pos_close_lock_writingseekable)r   fileposcloselockwritings         r   r   z_SharedFile.__init__  s2    
	
r   c                     | j         S r   )rR  r   s    r   rt   z_SharedFile.tell  s
    yr   r   c                 
   | j         5  |                                 rt          d          | j                            ||           | j                                        | _        | j        cd d d            S # 1 swxY w Y   d S )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.)rT  rU  r   rQ  rQ   rt   rR  )r   ra   whences      r   rQ   z_SharedFile.seek  s    Z 	 	}} K  "J K K K JOOFF+++
))DI9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A#A88A<?A<c                 <   | j         5  |                                 rt          d          | j                            | j                   | j                            |          }| j                                        | _        |cd d d            S # 1 swxY w Y   d S )NyCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rT  rU  r   rQ  rQ   rR  rJ   rt   r   nrc   s      r   rJ   z_SharedFile.read  s    Z 	 	}} K  "J K K K JOODI&&&:??1%%D
))DI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A<BBBc                 ^    | j         %| j         }d | _         |                     |           d S d S r   )rQ  rS  )r   fileobjs     r   rY  z_SharedFile.close  s8    :!jGDJKK      "!r   Nr   r_  )r   r   r   r   rt   rQ   rJ   rY  r   r   r   rO  rO    si        & & &     	 	 	 	! ! ! ! !r   rO  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )	_Tellablec                 "    || _         d| _        d S Nr   )rG   ra   r   rG   s     r   r   z_Tellable.__init__  s    r   c                 Z    | j                             |          }| xj        |z  c_        |S r   )rG   writera   )r   rc   rc  s      r   rn  z_Tellable.write"  s*    GMM$qr   c                     | j         S r   )ra   r   s    r   rt   z_Tellable.tell'  s
    {r   c                 8    | j                                          d S r   )rG   r!  r   s    r   r!  z_Tellable.flush*      r   c                 8    | j                                          d S r   )rG   rY  r   s    r   rY  z_Tellable.close-  rq  r   N)r   r   r   r   rn  rt   r!  rY  r   r   r   ri  ri    s_            
        r   ri  c                        e Zd Z	 dZdZdZ	 	 ddZd Zd Zdd
Z	ddZ
d ZddZd Zd Zd Zd Z fdZd ZddZd Z xZS )
ZipExtFilei   @i   i   NFc                 &   || _         || _        || _        |j        | _        |j        | _        |j        | _        t          | j                  | _
        d| _        d| _        d| _        d | _        || _        |j        | _        t%          |d          r!|j        | _        t+          d          | _        nd | _        d| _        	 |                                rD|                                | _        |j        | _        |j        | _        | j        | _        d| _        n# t<          $ r Y nw xY wd | _        |r[|j         tB          z  r|j"        dz	  dz  }n|j        dz	  dz  }| #                                }||k    rtI          d	|j%        z            d S d S )
NFr   r   r   Tr   r   r   zBad password for file %r)&_fileobj_pwd_close_fileobjr   _compress_typer   _compress_leftr   _leftrM  _decompressor_eof_readbuffer_offsetnewlinesmoderN   namerL   r   _expected_crcr   _running_crc	_seekablerV  rt   _orig_compress_start_orig_compress_size_orig_file_size_orig_start_crcAttributeError
_decrypterr   r   r   _init_decrypterr<  r   )r   re  r  zipinfor  close_fileobj
check_bytehs           r   r   zZipExtFile.__init__?  s   	+%3%3&
.t/BCC		$	7E"" 	&!(D %c

D!%D	!! &,3LLNN)+2+@('.'8$'+'8$!% 	 	 	D	  		W #<< 8%/14<

 &kR/47
$$&&AJ"#=@U#UVVV		W 		W s   AD 
D('D(c                     t          | j                  | _        | j                            d          }| xj        dz  c_        |                     |          d         S )Nr   r*   )r  rw  r  rv  rJ   rz  )r   r   s     r   r  zZipExtFile._init_decrypterr  sU    '	22 ##B''r!v&&r**r   c                    d| j         j        d| j         j        g}| j        sq|                    d| j        d| j                   | j        t          k    r;|                    dt          
                    | j        | j                  z             n|                    d           |                    d           d                    |          S )	Nr   .z name=z mode=r   	 [closed]r   r   )r   r   r   closedr7   r  r  ry  r   r   r   r8   r   rO   s     r   r   zZipExtFile.__repr__}  s     "n777"n99; <{ 	'MMM			499EFFF"j001.2243F373FH HH I I I MM+&&&cwwvr   r_  c                     	 |dk     rF| j                             d| j                  dz   }|dk    r| j         | j        |         }|| _        |S t          j                            | |          S )Nr      
r!   )r~  r   r  ioBufferedIOBasereadline)r   limitr>   lines       r   r  zZipExtFile.readline  sr    	
 199 %%eT\::Q>A1uu'a8  ))$666r   r!   c                 X   	 |t          | j                  | j        z
  k    rn|                     |          }t          |          | j        k    r$|| j        | j        d          z   | _        d| _        n| xj        t          |          z  c_        | j        | j        | j        dz            S )Nr   i   )r6   r~  r  rJ   )r   rc  chunks      r   peekzZipExtFile.peek  s    Ds4#$$t|333IIaLLE5zzDL((#(4+;DLMM+J#J  E

* dlS.@ @AAr   c                 2    | j         rt          d          dS )NI/O operation on closed file.T)r  r   r   s    r   readablezZipExtFile.readable  s     ; 	><===tr   c                    	 | j         rt          d          ||dk     rO| j        | j        d          }d| _        d| _        | j        s$||                     | j                  z  }| j        $|S || j        z   }|t          | j                  k     r| j        | j        |         }|| _        |S |t          | j                  z
  }| j        | j        d          }d| _        d| _        |dk    ro| j        sh|                     |          }|t          |          k     r|| _        || _        ||d |         z  }n$||z  }|t          |          z  }|dk    r| j        h|S )Nzread from closed file.r   r   )r  r   r~  r  r}  _read1MAX_Nr6   )r   rc  bufendrc   s        r   rJ   zZipExtFile.read  s}   	 ; 	756669A"4<==1C"DDLi /t{{4:... i /J$,T%&&&&"4<#34CDLJ#d&'''t|}}-!eeDIe;;q>>D3t99}}#'  tBQBx4KCTNA !eeDIe 
r   c                     | j         d S t          || j                  | _        | j        r'| j        | j         k    rt	          d| j        z            d S d S )NzBad CRC-32 for file %r)r  r   r  r}  r   r  )r   newdatas     r   _update_crczZipExtFile._update_crc  sh    %F!'4+<==9 	C*d.@@@5	ABBB	C 	C@@r   c                 p   	 ||dk     rT| j         | j        d          }d| _         d| _        | j        s)|                     | j                  }|r||z  }n| j        )|S || j        z   }|t          | j                   k     r| j         | j        |         }|| _        |S |t          | j                   z
  }| j         | j        d          }d| _         d| _        |dk    rZ| j        sS|                     |          }|t          |          k     r|| _         || _        ||d |         z  }n|r||z  }n| j        S|S Nr   r   )r~  r  r}  r  r  r6   )r   rc  r  rc   r  s        r   read1zZipExtFile.read1  sl   E9A"4<==1C"DDLi {{4:.. 4KC	 i 
 J$,T%&&&&"4<#34CDLJ#d&'''t|}}-q55i 	{{1~~s4yy=='+D$#$DL48OC 4KC i 	 
r   c                 l   | j         s|dk    rdS | j        t          k    rH| j        j        }|t          |          k    r(||                     |t          |          z
            z  }n|                     |          }| j        t          k    r| j        dk    | _         n| j        t          k    r}t          || j
                  }| j                            ||          }| j        j        p| j        dk    o| j        j         | _         | j         r|| j                                        z  }n6| j                            |          }| j        j        p
| j        dk    | _         |d | j                 }| xj        t          |          z  c_        | j        dk    rd| _         |                     |           |S )Nr   r   T)r}  ry  r   r|  unconsumed_tailr6   _read2r   rz  ry   MIN_READ_SIZEr)  r'  r!  r{  r  rb  s      r   r  zZipExtFile._read1  s    9 	Q3 ,..%5D3t99}}AD		M222;;q>>D*,,+q0DII L00At)**A%00q99D+/ @,1 @!/?? I y 3*00222%0066D*.J$2E2JDIKTZK 

c$ii

:??DIr   c                 ,   | j         dk    rdS t          || j                  }t          || j                   }| j                            |          }| xj         t          |          z  c_         |st          | j        |                     |          }|S r  )	rz  ry   r  minrv  rJ   r6   EOFErrorr  rb  s      r   r  zZipExtFile._read2#  s    !##34%&&4&''}!!!$$s4yy( 	N?&??4((Dr   c                     	 | j         r| j                                         t                                                       d S # t                                                       w xY wr   )rx  rv  rY  superr   r   s    r   rY  zZipExtFile.close3  sR    	" &##%%%GGMMOOOOOEGGMMOOOOs    A "A'c                 <    | j         rt          d          | j        S Nr  )r  r   r  r   s    r   rV  zZipExtFile.seekable:  s#    ; 	><===~r   r   c                 ^   | j         rt          d          | j        st          j        d          |                                 }|dk    r|}n,|dk    r||z   }n |dk    r| j        |z   }nt          d          || j        k    r| j        }|dk     rd}||z
  }|| j        z   }|dk    r"|t          | j	                  k     r
|| _        d}n|dk     r| j
                            | j                   | j        | _        | j        | _        | j        | _        d| _	        d| _        t%          | j                  | _        d| _        |}| j        |                                  |dk    r5t1          | j        |          }|                     |           ||z  }|dk    5|                                 S )	Nzseek on closed file.!underlying stream is not seekabler   r!   r"   zCwhence must be os.SEEK_SET (0), os.SEEK_CUR (1), or os.SEEK_END (2)r   F)r  r   r  r  UnsupportedOperationrt   r  r  r6   r~  rv  rQ   r  r  r  r  rz  r{  rM  ry  r|  r}  r  r  r  MAX_SEEK_READrJ   )r   ra   r^  curr_posnew_posread_offsetbuff_offsetread_lens           r   rQ   zZipExtFile.seek?  s   ; 	53444~ 	O)*MNNN99;;Q;;GGq[['GGq[[*V3GG C D D D T)))*GQ;;G(!DL0!c$2B.C.C C C&DLKK1__Mt8999 $ 4D"&":D-DJ"DDL!243F!G!GDDI!K*$$&&&Aoo4-{;;HIIh8#K Aoo
 yy{{r   c                     | j         rt          d          | j        st          j        d          | j        | j        z
  t          | j                  z
  | j	        z   }|S )Nztell on closed file.r  )
r  r   r  r  r  r  r{  r6   r~  r  )r   fileposs     r   rt   zZipExtFile.tellq  sc    ; 	53444~ 	O)*MNNN&3c$:J6K6KKdlZr   )NFrg  r!   rf  )r   r   r   r  r  r  r   r  r   r  r  r  rJ   r  r  r  r  rY  rV  rQ   rt   __classcell__r   s   @r   rt  rt  1  sS       
 E M M37$0W 0W 0W 0Wf	+ 	+ 	+  7 7 7 7 B B B B  
! ! ! !FC C C# # #J" " "H         
0 0 0 0d      r   rt  c                   F     e Zd Zd Zed             Zd Zd Z fdZ xZ	S )_ZipWriteFilec                     || _         || _        || _        t          |j        |j                  | _        d| _        d| _        d| _	        d S rk  )
_zinfo_zip64_zipfilerH  r   r   _compressor
_file_size_compress_size_crc)r   zfr   r   s       r   r   z_ZipWriteFile.__init__{  sP    *5+>+0+?A A			r   c                     | j         j        S r   )r  rG   r   s    r   rv  z_ZipWriteFile._fileobj  s    }r   c                     dS )NTr   r   s    r   writablez_ZipWriteFile.writable  s    tr   c                    | j         rt          d          t          |t          t          f          rt          |          }nt          |          }|j        }| xj        |z  c_        t          || j
                  | _
        | j        r7| j                            |          }| xj        t          |          z  c_        | j                            |           |S r  )r  r   r   r  r  r6   
memoryviewnbytesr  r   r  r  r  r  rv  rn  )r   rc   r  s      r   rn  z_ZipWriteFile.write  s    ; 	><=== dUI.// 	!YYFFd##D[F6!$	**	 	-#,,T22D3t99,D!!!r   c           	      L   | j         rd S 	 t                                                       | j        rb| j                                        }| xj        t          |          z  c_        | j                            |           | j        | j	        _
        n| j        | j	        _
        | j        | j	        _        | j        | j	        _        | j        s>| j        t           k    rt#          d          | j        t           k    rt#          d          | j	        j        t&          z  r| j        rdnd}| j                            t)          j        |t,          | j	        j        | j	        j
        | j	        j                             | j                                        | j        _        n| j                                        | j        _        | j                            | j	        j                   | j                            | j	                            | j                             | j                            | j        j                   | j        j                            | j	                   | j	        | j        j        | j	        j         <   d| j        _!        d S # d| j        _!        w xY w)Nz*File size too large, try using force_zip64z0Compressed size too large, try using force_zip64z<LLQQz<LLLLF)"r  r  rY  r  r!  r  r6   rv  rn  r  r   r  r  r   r   r  r   r<  r   r   rS   r   _DD_SIGNATURErt   r  	start_dirrQ   r   r   filelistr7   
NameToInforN   rU  )r   r  r   r   s      r   rY  z_ZipWriteFile.close  sE   ; 	F(	+GGMMOOO <&,,..##s3xx/####C(((,0,?)),0O)"iDKO$(ODK!; [?[00&'STTT&44&'YZZZ {$'@@ <!%9gg'##FK]DKOK-t{/D%F %F G G G*.-*<*<*>*>'' +/-*<*<*>*>'""4;#<===##DK$:$:4;$G$GHHH""4=#:;;; M"))$+666=A[DM$T[%9:%*DM"""UDM"****s   I;J J#)
r   r   r   r   propertyrv  r  rn  rY  r  r  s   @r   r  r  z  s               X     &++ ++ ++ ++ ++ ++ ++ ++ ++r   r  c                   *   e Zd Z	 dZdZdeddfddddZd Zd Zd Z	d	 Z
d
 Zd Zd$dZd Zd Zd Zed             Zej        d             Zd$dZd%dddZd&dZd'dZd(dZed             Zd Zd Z	 	 d(dZ	 d'dZd)dZd  Z d! Z!d" Z"d# Z#dS )*r   NrT)r   metadata_encodingc                   	 |dvrt          d          t          |           || _        d| _        d| _        i | _        g | _        || _        || _        || _	        d | _
        d| _        || _        || _        | j        r|dk    rt          d          t          |t          j                  rt          j        |          }t          |t$                    r[d| _        || _        dd	d
dd	ddd}||         }		 	 t+          j        ||	          | _        n# t0          $ r |	|v r
||	         }	Y 5 w xY wn$d| _        || _        t3          |dd           | _        d| _        t7          j                    | _        d| _        d| _        	 |dk    r|                                   d S |dv rd| _        	 | j        !                                | _"        	 | j        #                    | j"                   d S # tH          t0          f$ r d| _        Y d S w xY w# tH          t0          f$ r+ tK          | j                  | _        d| _"        d| _        Y d S w xY w|dk    r	 |                                   | j        #                    | j"                   d S # tL          $ rD | j        #                    dd           d| _        | j        !                                | _"        Y d S w xY wt          d          #  | j        }
d | _        | '                    |
            xY w)N)r  wxaz+ZipFile requires mode 'r', 'w', 'x', or 'a'Fr   r   r  z5metadata_encoding is only supported for reading filesrK   w+bx+br+bwbxb)r  r  r  r  r  r  r  Tr!   r  )r  r  r  r"   z"Mode must be 'r', 'w', 'x', or 'a')(r   r@  _allowZip64
_didModifydebugr  r  r?  rG  r  r  _comment_strict_timestampsr  r   r   r   r   str_filePassedrN   r  rM   rG   rE   getattr_fileRefCnt	threadingRLockrT  r  rU  _RealGetContentsrt   r  rQ   r  ri  r   _fpclose)r   rW  r  r?  
allowZip64rG  r   r  modeDictr   rG   s              r   r   zZipFile.__init__  sv   	+++JKKK;'''%
&*	"3!2 ! 	IdckkGI I I dBK(( 	#9T??DdC   	8 D DM"U%$T$@ @H~H gdH55DGG   8++#+H#5 	
  DDG#D&$77DM_&&
'	s{{%%'''''## #'/%)W\\^^DN/T^44444*G4 / / /)./ '0 + + +'00DG%&DN%*DNNNN+ 4))+++GLL00000! 4 4 4GLLA&&& '+DO%)W\\^^DNNNN4 !!EFFF	BDGMM"s   9D D.,D.K&  K& ,H G, ,HK& HK& 8IK& I	K& 3J A
KK& KK& &&Lc                     | S r   r   r   s    r   	__enter__zZipFile.__enter__H  s    r   c                 .    |                                   d S r   rY  )r   typevalue	tracebacks       r   __exit__zZipFile.__exit__K  s    

r   c                    d| j         j        d| j         j        g}| j        g| j        r|                    d| j        z             n$| j        |                    d| j        z             |                    d| j        z             n|                    d           |                    d           d                    |          S )	Nr   r  z file=%rz filename=%rz mode=%rr  r   r   )	r   r   r   rG   r  r7   rN   r  r8   r  s     r   r   zZipFile.__repr__N  s     "n777"n99; <7 >j4723333*nt}<===MM*ty01111MM+&&&cwwvr   c                    	 | j         }	 t          |          }n# t          $ r t          d          w xY w|st          d          | j        dk    rt          |           |t                   }|t                   }|t                   | _	        |t                   |z
  |z
  }|t                   t          k    r|t          t          z   z  }| j        dk    r||z   }t          d|||           ||z   | _        | j        dk     rt          d          |                    | j        d           |                    |          }t%          j        |          }d}||k     r|                    t(                    }	t+          |	          t(          k    rt          d          t-          j        t0          |	          }	|	t2                   t4          k    rt          d          | j        dk    rt          |	           |                    |	t6                             }
|	t8                   }|t:          z  r|
                    d	          }
n|
                    | j        pd
          }
tA          |
          }|                    |	tB                             |_"        |                    |	tF                             |_$        |	tJ                   |_&        |	dd         \  |_'        |_(        |_)        |_*        |_+        |_,        }}|_-        |_.        |_/        |j)        t`          k    rtc          d|j)        dz  z            |	dd         \  |_2        |_3        |_4        ||_5        |dz	  dz   |dz	  dz  |dz  |dz	  |dz	  dz  |dz  dz  f|_6        |7                                 |j&        |z   |_&        | j8        9                    |           || j:        |j;        <   |t(          z   |	t6                   z   |	tB                   z   |	tF                   z   }| j        dk    rt          d|           ||k     | j        }ty          | j8        d d          D ]}||_=        |j&        }d S )NzFile is not a zip filer!   r"   zgiven, inferred, offsetr   z Bad offset for central directoryzTruncated central directoryz&Bad magic number for central directoryr   cp437r   zzip file version %.1fr)   r,   r/   r(   r   r%   r   r*   r    totalc                     | j         S r   )r   )r   s    r   <lambda>z*ZipFile._RealGetContents.<locals>.<lambda>  s	    e.A r   T)keyreverse)>rG   rD   rE   r   r  printr^   r_   _ECD_COMMENTr  _ECD_LOCATIONrY   rX   rV   rR   r  rQ   rJ   r  BytesIOsizeCentralDirr6   rS   r5   structCentralDir_CD_SIGNATUREstringCentralDir_CD_FILENAME_LENGTH_CD_FLAG_BITSr   decoder  r   _CD_EXTRA_FIELD_LENGTHr9   _CD_COMMENT_LENGTHr   _CD_LOCAL_HEADER_OFFSETr   ri   r   r   r   r   r   r   r   r   MAX_EXTRACT_VERSIONr>  r   r   r   r   r   r   r  r7   r  rN   sortedr   )r   rG   rb   size_cd	offset_cdconcatinferredrc   r  centdirrN   flagsr  td
end_offsetr   s                    r   r  zZipFile._RealGetContents\  sO   =W	7 __FF 	7 	7 	75666	7 	75666:>>&MMM#;'	|, &09<.!%777'*AABF:>>	)H+Y&III"V+>A?@@@
"""wwwZgooggn--G7||~-- !>???m$4g>>G}%)999 !IJJJzA~~gwww':;<<HM*E)) N#??733 $??4+A+LWMM!!Aggg&<=>>AG(: ;<<AI%&=>AO 5<AbDM2Qq0A1:[!/1aUAOQ[ #666)*A+,+<r+A+C D D D9@B6AHaoqAKT4K!Q$QtVrEAqD$;41?AK NNo6AOM  ###*+DOAJ' ^+g6I.JJ567123E zA~~gu%%%[ goo^ ^
DM A A$(* * * 	- 	-E !+E,JJ		- 	-s    4c                 &    	 d | j         D             S )Nc                     g | ]	}|j         
S r   rN   ).0rc   s     r   
<listcomp>z$ZipFile.namelist.<locals>.<listcomp>  s    888$888r   r  r   s    r   namelistzZipFile.namelist  s    988$-8888r   c                     	 | j         S r   r)  r   s    r   infolistzZipFile.infolist  s    	}r   c                     	 t          ddz  |           | j        D ]5}d|j        d d         z  }t          d|j        ||j        fz  |           6d S )Nz%-46s %19s %12s)z	File NamezModified    SizerW  z%d-%02d-%02d %02d:%02d:%02dr&   z%-46s %s %12d)r  r  r   rN   r   )r   rW  r   dates       r   printdirzZipFile.printdir  s    9"GG	 	 	 	] 	 	E05?2A23FFD/U^T5?$KK    	 	r   c                    	 d}| j         D ]z}	 |                     |j        d          5 }|                    |          r	 |                    |          d d d            n# 1 swxY w Y   b# t          $ r |j        cY c S w xY wd S )Ni   r  )r  rM   rN   rJ   r   )r   
chunk_sizer   fs       r   testzipzZipFile.testzip  s    3
] 	& 	&E& YYu~s33 q&&,,  &&,,                 & & &~%%%%%&	& 	&s4   A-,A!A-!A%	%A-(A%	)A--BBc                 d    	 | j                             |          }|t          d|z            |S )Nz(There is no item named %r in the archive)r  r   KeyError)r   r  infos      r   getinfozZipFile.getinfo  sC    :""4((<:TAC C C r   c                     	 |r9t          |t                    s$t          dt          |          j        z            |r	|| _        d S d | _        d S )Npwd: expected bytes, got %s)r   r  	TypeErrorr  r   r  )r   r  s     r   setpasswordzZipFile.setpassword  s[    7 	Pz#u-- 	P9DII<NNOOO 	DHHHDHHHr   c                     	 | j         S r   )r  r   s    r   r   zZipFile.comment  s    <}r   c                 (   t          |t                    s$t          dt          |          j        z            t          |          t          k    r2dd l}|                    dt          z  d           |d t                   }|| _	        d| _
        d S )Nzcomment: expected bytes, got %sr   z3Archive comment is too long; truncating to %d bytesr"   
stacklevelT)r   r  r<  r  r   r6   ZIP_MAX_COMMENTwarningswarnr  r  )r   r   rC  s      r   r   zZipFile.comment  s    '5)) 	X=W@VVWWWw<</))OOOMMO+,89  ; ; ;../Gr   c                     	 |                      |d|          5 }|                                cd d d            S # 1 swxY w Y   d S Nr  rM   rJ   )r   r  r  rG   s       r   rJ   zZipFile.read  s    )YYtS#&& 	"7799	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :>>Fforce_zip64c                    	 |dvrt          d          |r|dk    rt          d           j        st          d          t          |t                    r|}nC|dk    r(t          |          } j        |_         j        |_        n                     |          }|dk    r 	                    ||          S  j
        rt          d           xj        dz  c_        t           j        |j         j         j         fd	          }	 |                    t"                    }t%          |          t"          k    rt'          d
          t)          j        t,          |          }|t.                   t0          k    rt'          d          |                    |t2                             }|t4                   r |                    |t4                              |j        t8          z  rt;          d          |j        t<          z  rt;          d          |t>                   t@          z  r|!                    d          }	n|!                     j"        pd          }	|	|j#        k    rt'          d|j#        d|d          |j$        =|%                                |j&        z   |j$        k    rt'          d|j#        d          |j        tN          z  }
|
rY|s j(        }|r9t          |tR                    s$tU          dtW          |          j,        z            |st[          d|z            nd }t]          ||||d          S #  |/                                  xY w)N>   r  r  zopen() requires mode "r" or "w"r  z'pwd is only supported for reading filesz2Attempt to use ZIP archive that was already closedrH  ra  r!   c                       j         S r   )rU  r   s   r   r  zZipFile.open.<locals>.<lambda>)  s	    $- r   zTruncated file headerz Bad magic number for file headerz$compressed patched data (flag bit 5)zstrong encryption (flag bit 6)r   r  zFile name in directory z and header z differ.zOverlapped entries: z (possible zip bomb)r;  z6File %r is encrypted, password required for extractionT)0r   rG   r   r   r?  r   rG  r   r9  _open_to_writerU  r  rO  r   r  rT  rJ   sizeFileHeaderr6   r   rS   r5   r   _FH_SIGNATUREr   _FH_FILENAME_LENGTH_FH_EXTRA_FIELD_LENGTHr   _MASK_COMPRESSED_PATCHr>  _MASK_STRONG_ENCRYPTION_FH_GENERAL_PURPOSE_FLAG_BITSr   r  r  r   r   rt   r   _MASK_ENCRYPTEDr  r  r<  r  r   r<  rt  rY  )r   r  r  r  rI  r   zef_filefheaderfname	fname_stris_encrypteds   `          r   rM   zZipFile.open  s   	 z!!>??? 	HDCKKFGGGw 	FDF F F dG$$ 		'EES[[DMME"&"2E#'#5E   LL&&E3;;&&u+&FFF= 	G F G G G
 	Atw(;#}dj:O:O:O:OQ Q4	mmN33G7||~-- !8999m$4g>>G}%)999 !CDDDMM'*=">??E-. ?g&<=>>>!77 R)*PQQQ!88 L)*JKKK458JJ L!LL11		!LL)?)J7KK	E/// j***EEE34 4 4 !-%"558III !c8K!c!c!cddd !?_<L 	 #(C Xz#u55 X#$ADIIDV$VWWW I& (ACG(H I I II heS$???	NNs   H8M Mc                    |r| j         st          d          | j        rt          d          d|_        d|_        d|_        |j        t          k    r|xj        t          z  c_        | j	        s|xj        t          z  c_        |j        sd|_        |p|j        dz  t          k    }| j         s|rt          d          | j	        r| j                            | j                   | j                                        |_        |                     |           d| _        | j                            |                    |                     d| _        t1          | ||          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.r     g?z'Filesize would require ZIP64 extensionsT)r  r   rU  r   r   r   r   r	   _MASK_COMPRESS_OPTION_1r  r   r   r   r   r   rG   rQ   r  rt   r   _writecheckr  rn  r   r  )r   r   rI  r   s       r   rL  zZipFile._open_to_write`  s{    	t/ 	    = 	O N O O O
  	(**OO66OO~ 	9OO88OO" 	."-E E$ 6 D 	JE 	JHIII> 	)GLL((("gllnne&&u--...T5%000r   c                     	 |t          j                    }nt          j        |          }|                     |||          S r   )r   getcwdr   _extract_member)r   memberr   r  s       r   extractzZipFile.extract  s@    	
 <9;;DD9T??D##FD#666r   c                     	 ||                                  }|t          j                    }nt          j        |          }|D ]}|                     |||           d S r   )r*  r   r_  r   r`  )r   r   membersr  r  s        r   
extractallzZipFile.extractall  sn    	
 ?mmooG<9;;DD9T??D 	5 	5G  $4444	5 	5r   c                 (   	 | j         }|s4d}t                              |dt          |          z            }|| _         |                    |          }d |                    |          D             }|                    d |D                       }|S )Nz:<>|"?*_c              3   @   K   | ]}|                     d           V  dS )r  N)rstripr'  r  s     r   	<genexpr>z1ZipFile._sanitize_windows_name.<locals>.<genexpr>  s,      AAQ188C==AAAAAAr   c              3      K   | ]}||V  	d S r   r   rj  s     r   rk  z1ZipFile._sanitize_windows_name.<locals>.<genexpr>  s'      77QQ7q777777r   )!_windows_illegal_name_trans_tabler  	maketransr6   	translatesplitr8   )r   r   pathseptableillegals        r   _sanitize_windows_namezZipFile._sanitize_windows_name  s    I5 	:GMM'3W+=>>E49C1##E**AA'--*@*@AAA,,77'77777r   c                 t   	 t          |t                    s|                     |          }|j                            dt
          j        j                  }t
          j        j        r4|                    t
          j        j        t
          j        j                  }t
          j        	                    |          d         }dt
          j        j
        t
          j        j        ft
          j        j                            fd|                    t
          j        j                  D                       }t
          j        j        dk    r%|                     |t
          j        j                  }t
          j                            ||          }t
          j                            |          }t
          j                            |          }|r3t
          j                            |          st          j        |           |                                r5t
          j                            |          st          j        |           |S |                     ||          5 }t-          |d          5 }t/          j        ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |S )Nr   r!   r   c              3   $   K   | ]
}|v|V  d S r   r   )r'  r  invalid_path_partss     r   rk  z*ZipFile._extract_member.<locals>.<genexpr>  s>       #C #C&'/A&A&A $%&A&A&A&A#C #Cr   \r  r  )r   r   r9  rN   r   r   r   r   r   r   curdirpardirr8   rp  rt  r   dirnameexistsmakedirsr   r   mkdirrM   shutilcopyfileobj)	r   ra  
targetpathr  r   	upperdirssourcetargetrw  s	           @r   r`  zZipFile._extract_member  s   	 &'** 	*\\&))F /))#rw{;;7> 	CoobgnbgkBBG '$$W--a0 "'."'.A'+"" #C #C #C #CgmmBGK.H.H #C #C #C C C7;$11'27;GGGW\\*g66
W%%j11
 GOOJ//	 	#RW^^I66 	#K	"""==?? 	7==,, %$$$YYv3Y'' 	/6*d##	/'-vv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ s6   #J-4J
J-J	J-J	J--J14J1c                    	 |j         | j        v r#dd l}|                    d|j         z  d           | j        dvrt          d          | j        st          d          t          |j                   | j	        s[d }t          | j                  t          k    rd}n%|j        t          k    rd	}n|j        t          k    rd
}|rt!          |dz             d S d S )Nr   zDuplicate name: %rr#   r@  r  r  r  z&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closedFiles countFilesizezZipfile size would require ZIP64 extensions)rN   r  rC  rD  r  r   rG   r@  r   r  r6   r  ZIP_FILECOUNT_LIMITr   r   r   r   )r   r   rC  requires_zip64s       r   r]  zZipFile._writecheck  s!   D>T_,,OOOMM.?AMNNN9O++EFFFw 	HFH H H5./// 
	F!N4=!!%888!.;..!+${22!/ F">#D$E F F F
	F 
	FF Fr   c                 H   	 | j         st          d          | j        rt          d          t                              ||| j                  }|                                r%d|_        d|_        | 	                    |           d S |||_
        n| j        |_
        |||_        n| j        |_        t          |d          5 }|                     |d          5 }t          j        ||d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N7Attempt to write to ZIP archive that was already closedz>Can't write to ZIP archive while an open writing handle existsr   r   rK   r  i    )rG   r   rU  r   r   r  r   r   r   r  r   r?  r   rG  rM   r  r  )r   rN   r   r   rG  r   srcdests           r   rn  zZipFile.write  s   	w 	KIK K K= 	P   !!(G484K " M M <<>> 	6"#EEIJJu(&3##&*&6#('4$$'+'9$h%% 6diis.C.C 6t"3f5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s6   DC?3D?D	DD	DDDc                     	 t          |t                    r|                    d          }t          |t                    st          |t	          j        t	          j                              d d                   }| j        |_        | j        |_	        |j
        d         dk    rd|_        |xj        dz  c_        n
d|_        n|}| j        st          d	          | j        rt          d
          |||_        |||_	        t          |          |_        | j        5  |                     |d          5 }|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r&   )rN   r   r_  r   i  Ar-   r[  r  z?Can't write to ZIP archive while an open writing handle exists.r  )r  )r   r  r   r   r   r   r?  r   rG  r   rN   r   rG   r   rU  r6   r   rT  rM   rn  )r   zinfo_or_arcnamerc   r   rG  r   r  s          r   writestrzZipFile.writestr  s   	0
 dC   	(;;w''D*G44 	%%5&*nTY[[&A&A"1"&EG G GE"&"2E#'#5E ~b!S((&3###t+###&1##$Ew 	KIK K K= 	Q   $"/E$#0E d))Z 	! 	!5s++ !t

4   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s6   !E39EE3E	E3"E	#E33E7:E7  c                    	 t          |t                    r&|}|                                st          d          nt          |t                    ra|}|                    d          s|dz  }t          |          }d|_        d|_        d|z  dz  dz  |_        d|_	        |xj        dz  c_        nt          d          | j        5  | j        r| j                            | j                   | j                                        |_        |j        t&          k    r|xj        t*          z  c_        |                     |           d| _        | j                            |           || j        |j        <   | j                            |                    d	                     | j                                        | _        d d d            d S # 1 swxY w Y   d S )
Nz/The given ZipInfo does not describe a directoryr   r   i @  r   r-   zExpected type str or ZipInfoTF)r   r   r   r   r  r   r   r   r   r   r<  rT  r  rG   rQ   r  rt   r   r   r	   r   r\  r]  r  r  r7   r  rN   rn  r   )r   zinfo_or_directory_namer  r   directory_names        r   r  zZipFile.mkdirB  s	   9-w77 	<+E<<>> T !RSSST/55 	<4N!**3// &#%N++E"#EEI$+dNf#<"CEEO4':;;;Z 	, 	,~ -T^,,,"&',,..E"h..#::U###"DOM  '''.3DOEN+GMM%**511222!W\\^^DN	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   	C:GGGc                 0    	 |                                   d S r   r  r   s    r   __del__zZipFile.__del__e  s    @

r   c                    	 | j         d S | j        rt          d          	 | j        dv r`| j        rY| j        5  | j        r| j                             | j                   | 	                                 d d d            n# 1 swxY w Y   | j         }d | _         | 
                    |           d S # | j         }d | _         | 
                    |           w xY 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  )rG   rU  r   r  r  rT  r  rQ   r  _write_end_recordr  rl  s     r   rY  zZipFile.closei  s2   	7?F= 	Q P Q Q Q		yO+++Z - -~ 5T^444**,,,- - - - - - - - - - - - - - -
 BDGMM" BDGMM"s.   B0 ;B 4B0  BB0 BB0 0%Cc                 R	   | j         D ]}|j        }|d         dz
  dz  |d         dz  z  |d         z  }|d         dz  |d	         dz  z  |d         dz  z  }g }|j        t          k    s|j        t          k    r9|                    |j                   |                    |j                   d
}d
}n|j        }|j        }|j        t          k    r|                    |j                   d
}n|j        }|j        }	d}
|rQt          |	d          }	t          j
        ddt          |          z  z   ddt          |          z  g|R  |	z   }	t          }
|j        t          k    rt          t           |
          }
n%|j        t"          k    rt          t$          |
          }
t          |
|j                  }t          |
|j                  }|                                \  }}t          j
        t,          t.          ||j        ||j        ||j        |||j        ||t          |          t          |	          t          |j                  d|j        |j        |          }| j                            |           | j                            |           | j                            |	           | j                            |j                   | j                                         }t          | j                   }|| j!        z
  }| j!        }d }|tD          k    rd}n|t          k    rd}n|t          k    rd}|r| j#        stI          |dz             t          j
        tJ          tL          ddddd||||          }| j                            |           t          j
        tN          tP          d|d          }| j                            |           tS          |d          }tS          |d
          }tS          |d
          }t          j
        tT          tV          dd||||t          | j,                  	  	        }| j                            |           | j                            | j,                   | j-        dk    r| j        .                                 | j        /                                 d S )Nr   r   r(   r!   r%   r"   r#   r*   r$   r   r  r2   Qr   r  zCentral directory offsetzCentral directory sizer  ,   r   r   r  )0r  r   r   r   r   r7   r   r9   rB   rS   r   r6   r   r   r   ry   r   r	   r   r   ri   r   r  r  r   r   r   r   r   r   rG   rn  rt   r  r  r  r   rW   rX   rT   rU   r  rw   rv   r  r  truncater!  )r   r   r   r   r   r9   r   r   r   
extra_datar   r   ri   rN   r   r  pos2centDirCountcentDirSizecentDirOffsetr  zip64endreczip64locrecrb   s                           r   r  zZipFile._write_end_record  sw   ] 3	) 3	)EB!ut|)BqEQJ6A>GerkBqEQJ."Q%1*=GE,,%33U_---U0111&	 *!O	 % 3"[00U0111 * % 3JK ,)*d;;
#[CE

N*qU|-&+- - -/9:
 ,"i//!-==$00!,<<!+u/DEEO e.BCCN"'"<"<">">Hik"2"2N"'"5"+U-@'7"')]I"%h--Z#emBTBT"#U%8%:M"/1 1G GMM'"""GMM(###GMM*%%%GMM%-((((w||~~4=))T^+---*NN[((7NN;&&5N 	;# F">#D$E F F F +"$6BAq,], ,K GMM+&&& +))1dA7 7K GMM+&&&|V44Lk:66Kz::M-/?<(-T]9K9KM M 	fdm$$$9Gr   c                 r    | xj         dz  c_         | j         s| j        s|                                 d S d S d S Nr!   )r  r  rY  rl  s     r   r  zZipFile._fpclose  sP    A 	(8 	HHJJJJJ	 	 	 	r   r   )r  N)F)NN)NNN)r  )$r   r   r   rG   rm  r   r   r  r  r   r  r*  r,  r1  r5  r9  r=  r  r   setterrJ   rM   rL  rb  re  r   rt  r`  r]  rn  r  r  r  rY  r  r  r   r   r   r   r     ss       , 
B(,%"%:$#^:>RV^ ^ ^ ^ ^@      T- T- T-l9 9 9  
   & & &       X ^
 
 ^
   
dE d d d d dL(1 (1 (1 (1T7 7 7 75 5 5 5"   [( ( (TF F F. '+046 6 6 6D 48'! '! '! '!R!, !, !, !,F    ,\ \ \|    r   r   c                   .    e Zd Z	 deddfdZd	dZd ZdS )
r   r  Tr_  c                 R    t                               | ||||           || _        d S )N)r  r?  r  )r   r   	_optimize)r   rW  r  r?  r  optimizes         r   r   zPyZipFile.__init__  s5    t$K$. 	 	0 	0 	0!r   r   Nc                 b   	 t          j        |          }|rL ||          sA| j        r8t           j                            |          rdnd}t          |d|d           d S t           j                            |          \  }}t           j                            |          rt           j                            |d          }t           j                            |          r|r|d|}n|}| j        rt          d|d|           | 	                    |d	d
         |          \  }}	| j        rt          d|	           | 
                    ||	           t          t          j        |                    }
|
                    d           |
D ]5}t           j                            ||          }t           j                            |          \  }}t           j                            |          rVt           j                            t           j                            |d                    r|                     |||           |dk    ru|r% ||          s| j        rt          d|z             | 	                    |d	d
         |          \  }}	| j        rt          d|	           | 
                    ||	           7d S | j        rt          d|           t          t          j        |                    D ]}t           j                            ||          }t           j                            |          \  }}|dk    ru|r% ||          s| j        rt          d|z             q| 	                    |d	d
         |          \  }}	| j        rt          d|	           | 
                    ||	           d S |d
d          dk    rt!          d          | 	                    |d	d
         |          \  }}	| j        rt          d|	           | 
                    ||	           d S )Nr   rW   z skipped by filterfuncz__init__.pyr   zAdding package inasr   Adding)
filterfunc.pyzfile %r skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"zAdding file)r   r   r  r   r   r  rp  r8   isfile_get_codenamern  r  listdirremovesplitextwritepyr<  )r   pathnamebasenamer  labeldirr  initnamerW  r   dirlistrN   r   rootexts                  r   r  zPyZipFile.writepy  s`   	 9X&& 	jj22 	z I"$'--"9"9EvuuuhhhGHHHFGMM(++	T7=="" ;	'w||Hm<<Hw~~h'' 13 $*2((DD9HH#H: I-xxHHH!%!3!3HQrTNH!M!Mw: -(G,,,

5'*** H!5!566}--- ' 3 3H7<<(;;D " 0 0 : :ID#w}}T** 37>>"',,t]*K*KLL @ LLx4> ) @ @ @% %jj.>.> %#z N %&E&L M M M$)-););D2J<D*F *Fw: 5!(G444

5'222#3 3( : C7BBB &rz(';'; < < 3 3H7<<(;;D " 0 0 : :ID#e||% %jj.>.> %#z N %&E&L M M M$)-););D2J<D*F *Fw: 5!(G444

5'2223 3 }%%"DF F F!//2IINE7z .mW---JJug&&&&&r   c                 :    	 d fd	}|dz   }|dz   }t           j                            |d          }t           j                            |d          }t           j                            |d          } j        dk    rt          j                            |          r:t	          j        |          j        t	          j        |          j        k    r|x}	}
nt          j                            |          r:t	          j        |          j        t	          j        |          j        k    r|}
|}	nt          j                            |          r:t	          j        |          j        t	          j        |          j        k    r|}
|}	n^t          j                            |          r:t	          j        |          j        t	          j        |          j        k    r|}
|}	n ||          r5t          j
        j        d	k    r|}
nt          j
        j        dk    r|}
n|}
|}	n|x}
}	n j        d	k    r|}
|}	nG|}	 j        dk    r|}
n7 j        dk    r|}
n)d
                     j                  }t          |          t          j                            |
          r4t	          j        |
          j        t	          j        |          j        k    s || j                  s|x}
}	t          j                            |	          d         }|r|d|}|
|fS )Nr_  c                     dd l }j        rt          d|            	 |                    | d|           n,# |j        $ r}t          |j                   Y d }~dS d }~ww xY wdS )Nr   	CompilingT)doraiser  F)
py_compiler  r  compilePyCompileErrormsg)rW  r  r  errr   s       r   _compilez)PyZipFile._get_codename.<locals>._compileF  s    z )k4(((""4"IIII,   cguuuuu 4s   7 
A AA r  z.pycr   )optimizationr!   r"   r   z"invalid value for 'optimize': {!r})r  r   rg  )	importlibutilcache_from_sourcer  r   r   r  r   r   r   r   r  formatr   rp  )r   r  r  r  file_pyfile_pycpycache_opt0pycache_opt1pycache_opt2r   rW  r  archivenames   `            r   r  zPyZipFile._get_codename?  s   			 		 		 		 		 		 e#f$ ~77b7QQ ~77a7PP ~77a7PP>Rx(( !.'(##,0@0@0III"**%%'.... .',''0BGG4D4D4MMM %"'.... .',''0BGG4D4D4MMM %"'.... .',''0BGG4D4D4MMM %" 8G$$ 	.y)Q.. ,+q00 , ,&GG&--EGG ~""$"">Q&&(EE^q(((EE>EEdnUUC$S//)GNN5)) .GENN+rww/?/?/HHHx$.AAA .&--EGgmmG,,Q/ 	<%-XX{{;K{##r   )r   N)r   r   r   r   r   r  r  r   r   r   r   r     sb        N"%: 2" " " "P' P' P' P'dP$ P$ P$ P$ P$r   r   c                 J    	 t          j        t          |           dd           S r  )	itertoolsislice	_ancestry)r   s    r   _parentsr    s$     IdOOQ555r   c              #      K   	 |                      t          j                  } |                      t          j                  r<| V  t          j        |           \  } }|                      t          j                  :d S d S r   )ri  	posixpathr   rp  )r   tails     r   r  r    s~      ( ;;y}%%D
++im
$
$ +


_T**
d ++im
$
$ + + + + +r   c                 R    	 t          j        t          |          j        |           S r   )r  filterfalseset__contains__)minuend
subtrahends     r   _differencer    s%      Z!=wGGGr   c                   b     e Zd Z	 ed             Z fdZd Zd Z fdZe	d             Z
 xZS )CompleteDirsc                     t           j                            t          t          |                     }d |D             }t          t          ||                     S )Nc              3   4   K   | ]}|t           j        z   V  d S r   )r  r   )r'  r  s     r   rk  z-CompleteDirs._implied_dirs.<locals>.<genexpr>  s)      661y}$666666r   )r  chainfrom_iterabler  r  _deduper  )namesparentsas_dirss      r   _implied_dirszCompleteDirs._implied_dirs  sL    ///He0D0DEE66g666{7E22333r   c                     t          t          |                                           }|t          |                     |                    z   S r   )r  r  r*  rx   r  )r   r  r   s     r   r*  zCompleteDirs.namelist  s?    lD))2244tD..u556666r   c                 D    t          |                                           S r   )r  r*  r   s    r   	_name_setzCompleteDirs._name_set  s    4==??###r   c                 R    	 |                                  }|dz   }||vo||v }|r|n|S Nr   )r  )r   r  r  r|  	dir_matchs        r   resolve_dirzCompleteDirs.resolve_dir  sD    	   *%:'U*:	#-ww-r   c                     	 	 t                                          |          S # t          $ r? |                    d          r||                                 vr t          |          cY S w xY w)Nr   r&  )r  r9  r7  r   r  r   )r   r  r   s     r   r9  zCompleteDirs.getinfo  s    		*77??4((( 	* 	* 	*==%% T^^5E5E)E)ED))))))	*s    % AA.-A.c                     	 t          |t                    r|S t          |t                    s | |          S d|j        vrt          } | |_        |S rF  )r   r  r   r  r   )r   r  s     r   makezCompleteDirs.make  sa    	 fl++ 	M&'** 	3v;; fk!!Cr   )r   r   r   staticmethodr  r*  r  r  r9  r   r  r  r  s   @r   r  r    s        
 4 4 \4
7 7 7 7 7$ $ $. . .	* 	* 	* 	* 	*   [    r   r  c                   *     e Zd Z	  fdZ fdZ xZS )
FastLookupc                     t          j        t                    5  | j        cd d d            S # 1 swxY w Y   t	          t
          |                                           | _        | j        S r   )
contextlibsuppressr  _FastLookup__namesr  r  r*  r  s    r   r*  zFastLookup.namelist	  s     00 	  	 <	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 Z..7799|   /33c                     t          j        t                    5  | j        cd d d            S # 1 swxY w Y   t	          t
          |                                           | _        | j        S r   )r   r  r  _FastLookup__lookupr  r  r  r  s    r   r  zFastLookup._name_set	  s     00 	! 	!=	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!j$//99;;}r  )r   r   r   r*  r  r  r  s   @r   r  r  	  sV        
            r   r  c                 2    t          j        | d          ||fS )Nr#   )r  text_encoding)encodingargskwargss      r   _extract_text_encodingr  	  s    Ha(($66r   c                       e Zd Z	 dZddZddddZd Zed	             Zed
             Z	ed             Z
ed             Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZed             ZdS )r   z>{self.__class__.__name__}({self.root.filename!r}, {self.at!r})r   c                 T    	 t                               |          | _        || _        d S r   )r  r  r  at)r   r  r  s      r   r   zPath.__init__p	  s'    	 OOD))	r   r  Nry  c                n   	 |                                  rt          |           |d         }|                                 s|dk    rt          |           | j                            | j        ||          }d|v r|s|rt          d          |S t          |i |\  }}}t          j
        ||g|R i |S )Nr   r  ry  bz*encoding args invalid for binary operation)r   IsADirectoryErrorr}  FileNotFoundErrorr  rM   r  r   r  r  TextIOWrapper)r   r  r  r	  r
  zip_modestreamr  s           r   rM   z	Path.open}	  s    	
 ;;== 	*#D)))7{{}} 	*S#D)))s;;$;; Ov O !MNNNM!7!H!H!H$B4BBB6BBBr   c                 L    t          j        | j        p| j        j                  S r   )pathlibPurePosixPathr  r  rN   r   s    r   _basez
Path._base	  s    $TW%B	0BCCCr   c                 4    |                                  j        S r   )r  r  r   s    r   r  z	Path.name	      zz||  r   c                 4    |                                  j        S r   )r  suffixr   s    r   r  zPath.suffix	  s    zz||""r   c                 4    |                                  j        S r   )r  suffixesr   s    r   r  zPath.suffixes	  s    zz||$$r   c                 4    |                                  j        S r   )r  stemr   s    r   r!  z	Path.stem	  r  r   c                 n    t          j        | j        j                                      | j                  S r   )r  r   r  rN   joinpathr  r   s    r   rN   zPath.filename	  s'    |DI.//88AAAr   c                     t          |i |\  }}} | j        d|g|R i |5 }|                                cd d d            S # 1 swxY w Y   d S rF  )r  rM   rJ   )r   r	  r
  r  strms        r   	read_textzPath.read_text	  s    !7!H!H!H$TYsH6t666v66 	$99;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     |                      d          5 }|                                cd d d            S # 1 swxY w Y   d S )NrK   rG  )r   r%  s     r   
read_byteszPath.read_bytes	  s~    YYt__ 	99;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   7;;c                     t          j        |j                            d                    | j                            d          k    S r  )r  r|  r  ri  )r   r   s     r   	_is_childzPath._is_child	  s4     !4!4559L9LLLr   c                 8    |                      | j        |          S r   )r   r  )r   r  s     r   _nextz
Path._next	  s    ~~di,,,r   c                 F    | j          p| j                             d          S r  )r  r   r   s    r   r   zPath.is_dir	  s!    7{3dg..s333r   c                 T    |                                  o|                                  S r   )r}  r   r   s    r   is_filezPath.is_file	  s     {{}}2T[[]]!22r   c                 B    | j         | j                                        v S r   )r  r  r  r   s    r   r}  zPath.exists	  s    w$)--////r   c                     |                                  st          d          t          | j        | j                                                  }t          | j        |          S )NzCan't listdir a file)r   r   r  r,  r  r*  filterr*  )r   subss     r   iterdirzPath.iterdir	  sR    {{}} 	534444:ty113344dnd+++r   c                 J    t          j        | j        j        | j                  S r   )r  r8   r  rN   r  r   s    r   __str__zPath.__str__	  s    ~di0$':::r   c                 8    | j                             |           S )Nr   )_Path__reprr  r   s    r   r   zPath.__repr__	  s    {!!t!,,,r   c                     t          j        | j        g|R  }|                     | j                            |                    S r   )r  r8   r  r,  r  r  )r   othernexts      r   r#  zPath.joinpath	  s=    ~dg....zz$)//55666r   c                     | j         s| j        j        S t          j        | j                             d                    }|r|dz  }|                     |          S r  )r  rN   parentr  r|  ri  r,  )r   	parent_ats     r   r=  zPath.parent	  sY    w 	(=''%dgnnS&9&9::	 	Izz)$$$r   )r   )r  )r   r   r   r8  r   rM   r  r  r  r  r  r!  rN   r&  r(  r*  r,  r   r/  r}  r4  r6  r   r#  __truediv__r=  r   r   r   r   r    	  s       KZ NF   C C C C C C(D D D ! ! X! # # X# % % X% ! ! X! B B XB  
  M M M- - -4 4 43 3 30 0 0, , ,; ; ;- - -7 7 7 K% % X% % %r   r   c                    dd l }d}|                    |          }|                    d          }|                    dddd	
           |                    ddddd           |                    ddddd           |                    dddd
           |                    ddd
           |                    |           } | j        }| j        z| j        }t          |d|          5 }|                                }d d d            n# 1 swxY w Y   |r"t          d
                    |                     t          d           d S | j        H| j        }t          |d|          5 }|                                 d d d            d S # 1 swxY w Y   d S | j        L| j        \  }}	t          |d|          5 }|                    |	           d d d            d S # 1 swxY w Y   d S | j        |r/t          d t           j        !           t!          j        d"           | j                            d          }
| j        }fd#t          |
d$          5 }|D ]}t(          j                            |          }|s<t(          j                            t(          j                            |                    }|d%t(          j        t(          j        fv rd%} |||           	 d d d            d S # 1 swxY w Y   d S d S )&Nr   z3A simple command-line interface for zipfile module.)descriptionT)requiredz-lz--list	<zipfile>zShow listing of a zipfile)metavarhelpz-ez	--extractr"   )rC  z<output_dir>zExtract zipfile into target dir)nargsrD  rE  z-cz--create+)z<name>z<file>zCreate zipfile from sourcesz-tz--testzTest if a zipfile is validz--metadata-encodingz
<encoding>z2Specify encoding of member names for -l, -e and -tr  )r  z.The following enclosed file is corrupted: {!r}zDone testingz/Non-conforming encodings not supported with -c.r/  r!   c           	         t           j                            |          r|                     ||t                     d S t           j                            |          r|r|                     ||           t          t          j        |                    D ]M} | t           j                            ||          t           j                            ||                     Ld S d S r   )	r   r   r  rn  r   r   r  r  r8   )r  r   zippathnmaddToZips       r   rK  zmain.<locals>.addToZip
  s    w~~d## Pw55555t$$ P ,HHT7+++ D!1!122 P PBHRW\\$33RW\\'25N5NP P P P	P PP Pr   r  r   )argparseArgumentParseradd_mutually_exclusive_groupadd_argument
parse_argsr  testr   r5  r  r  rx   r1  rb  re  creater   stderrexitpopr   r   r  r|  rz  r{  )r	  rL  rA  parsergroupr  r  r  badfilerz  zip_namefilesr   rI  rK  s                 @r   mainr[  	  s   OOOGK$$$==F///>>E	tX{7  9 9 9	t[<=  ? ? ? 
tZs39  ; ; ; 
tX{8  : : :
-|Q  S S ST""D%HyiS#::: 	#bjjllG	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	TBII'RRSSSn		iS#::: 	bKKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
	!lVS#::: 	"bMM&!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 
	  	Cz# # # #HQKKK;??1%%	P 	P 	P 	P 	P Xs## 	,r , ,'**400 F g..rwt/D/DEEGr29bi888 GT7++++,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,) 
!	 sI   .DDD/FFFG$$G(+G( BK;;K?K?__main__r   )binasciiimportlib.utilr  r  r  r   r  rer  r   rS   r   r  r   r   r  r;  r   ImportErrorr=  r  __all__	Exceptionr   r   r   r   r   r  rB  r   r   r   r	   r   r   r   r   r  rw   rv   r   ru   rY   rZ   r[   r\   r]   r^   r_   r{   r  r  r  r  r  r  _CD_CREATE_VERSION_CD_CREATE_SYSTEM_CD_EXTRACT_VERSION_CD_EXTRACT_SYSTEMr  _CD_COMPRESS_TYPE_CD_TIME_CD_DATE_CD_CRC_CD_COMPRESSED_SIZE_CD_UNCOMPRESSED_SIZEr  r  r  _CD_DISK_NUMBER_START_CD_INTERNAL_FILE_ATTRIBUTES_CD_EXTERNAL_FILE_ATTRIBUTESr  rT  r\  r   rQ  rR  r   r   r   rM  rN  _FH_EXTRACT_VERSION_FH_EXTRACT_SYSTEMrS  _FH_COMPRESSION_METHOD_FH_LAST_MOD_TIME_FH_LAST_MOD_DATE_FH_CRC_FH_COMPRESSED_SIZE_FH_UNCOMPRESSED_SIZErO  rP  rT   rU   rR   rW   rX   rV   _CD64_SIGNATURE_CD64_DIRECTORY_RECSIZE_CD64_CREATE_VERSION_CD64_EXTRACT_VERSION_CD64_DISK_NUMBER_CD64_DISK_NUMBER_START_CD64_NUMBER_ENTRIES_THIS_DISK_CD64_NUMBER_ENTRIES_TOTAL_CD64_DIRECTORY_SIZE_CD64_OFFSET_START_CENTDIRr  Structr4   rB   rH   r
   rq   rD   objectr   r
  r   r  r  r#  r   r@  rH  rM  rO  ri  r  rt  r  r   r   r  r  dictfromkeysr  r  r  r  r  r   r[  r   r   r   r   <module>r     s?  
      				     				     				    



          KKKJEE   DNEEEJJJJ   
CCCKKKK   DDD  
	 	 	 	 	 	 	 	    9      
 #  
	       !122   	   $    !122      
      ! !     
 #      
   "    !122   !    
     % ) )&/*CDD  " " "6?#566      !"    #fmE**   *     ( ( (V: : :z` ` ` ` `v ` ` `N 	   # # #L" " " " " " " ".       8wx x x	
 x x y z y { 	      	!" # (N N N&    P P P$%! %! %! %! %! %! %! %!P       (F F F F F" F F FR
P+ P+ P+ P+ P+B% P+ P+ P+hS S S S S S S Slk$ k$ k$ k$ k$ k$ k$ k$\6 6 6&+ + +6 - /H H H9 9 9 9 97 9 9 9x       &7 7 7 7
y% y% y% y% y% y% y% y%xC, C, C, C,L zDFFFFF s5   A AA A% %A/.A/3A8 8BB