o
    /fX                     @   s   	 d dl Z d dlZd dlZd dlZzd dlmZ W n ey$   dZY nw zd dlZ	W n ey6   dZ	Y nw g dZ
g dZdadaG dd dZdd	d
ZdddZdddZdddZdddZdd Zdd Ze  dd Zedkr{e  dS dS )    N) _mimetypes_read_windows_registry)
knownfilesinited	MimeTypes
guess_typeguess_all_extensionsguess_extensionadd_typeinitread_mime_types
suffix_mapencodings_map	types_mapcommon_types)	z/etc/mime.typesz/etc/httpd/mime.typesz/etc/httpd/conf/mime.typesz/etc/apache/mime.typesz/etc/apache2/mime.types$/usr/local/etc/httpd/conf/mime.typesz"/usr/local/lib/netscape/mime.typesr   z/usr/local/etc/mime.typesFc                   @   sj   e Zd Z	 dddZdddZdddZdd	d
ZdddZdddZdddZ	dddZ
edd ZdS )r    Tc                 C   s   t st  t | _t | _i i f| _i i f| _t	
 D ]\}}| ||d qt
 D ]\}}| ||d q-|D ]}| || q;d S NTF)r   r
   _encodings_map_defaultcopyr   _suffix_map_defaultr   r   types_map_inv_types_map_defaultitemsr	   _common_types_defaultread)self	filenamesstrictexttypenamer   r   R/home/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/mimetypes.py__init__H   s   



zMimeTypes.__init__c                 C   s<   	 || j | |< | j| |g }||vr|| d S d S N)r   r   
setdefaultappend)r   r   r   r   Zextsr   r   r!   r	   V   s   zMimeTypes.add_typec                 C   sP  	 t |}tj|\}}|dkrC|d}|dk rdS |dd|}|dkr/|d | }n|d | }d|v s=d|vr?d}|d fS t|\}}|  }	| j	v rht|| j	|	  \}}|  }	| j	v sS|| j
v rz| j
| }
t|\}}nd }
| }| jd	 }||v r|| |
fS |rd |
fS | jd
 }||v r|| |
fS d |
fS )Ndata,r   )NN;=/
text/plainTF)osfspathurllibparse
_splittypefind	posixpathsplitextlowerr   r   r   )r   urlr   schemeZcommaZsemir   baser   Z	ext_lowerencodingr   r   r   r!   r   g   s@   





zMimeTypes.guess_typec                 C   sR   	 |  }t| jd |g }|s'| jd |g D ]}||vr&|| q|S r   )r4   listr   getr%   )r   r   r   
extensionsr   r   r   r!   r      s   

zMimeTypes.guess_all_extensionsc                 C   s   	 |  ||}|sd S |d S )Nr   )r   )r   r   r   r;   r   r   r!   r      s
   zMimeTypes.guess_extensionc                 C   s@   	 t |dd}| || W d    d S 1 sw   Y  d S )Nutf-8r8   )openreadfp)r   filenamer   fpr   r   r!   r      s   "zMimeTypes.readc           	      C   s   	 	 |  }|s
d S | }tt|D ]}|| d dkr%||d =  nq|s)q|d |dd  }}|D ]}| |d| | q6q)N   r   #.)readlinesplitrangelenr	   )	r   rA   r   linewordsir   suffixesZsuffr   r   r!   r?      s"   
zMimeTypes.readfpc                    sJ   	 t stsd S  j}|r fdd}t rt | d S tr# | d S d S )Nc                    s     | |dS )NT)r	   )r   r   r   r   r!   <lambda>   s    z1MimeTypes.read_windows_registry.<locals>.<lambda>)r   _winregr	   _read_windows_registry)r   r   r	   r   rM   r!   read_windows_registry   s   zMimeTypes.read_windows_registryc              
   C   s   dd }t t jdZ}||D ]L}zAt ||1}|ds(	 W d    W qt |d\}}|t jkr>	 W d    W q||| W d    n1 sMw   Y  W q ty\   Y qw W d    d S 1 shw   Y  d S )Nc                 s   sF    d}	 zt | |}W n
 ty   Y d S w d|vr|V  |d7 }q)Nr   T rB   )rO   ZEnumKeyOSError)ZmimedbrK   Zctyper   r   r!   
enum_types  s   z4MimeTypes._read_windows_registry.<locals>.enum_types rD   zContent Type)rO   OpenKeyZHKEY_CLASSES_ROOT
startswithZQueryValueExZREG_SZrS   )clsr	   rT   ZhkcrZ
subkeynameZsubkeyZmimetypeZdatatyper   r   r!   rP     s,   

	
"z MimeTypes._read_windows_registryN)r   TT)__name__
__module____qualname__r"   r	   r   r   r   r   r?   rQ   classmethodrP   r   r   r   r!   r   @   s    



=



r   Tc                 C      	 t d u rt  t | |S r#   )_dbr
   r   )r5   r   r   r   r!   r     s   r   c                 C   r^   r#   )r_   r
   r   r   r   r   r   r!   r   6  s   r   c                 C   r^   r#   )r_   r
   r   r`   r   r   r!   r   G  s   r   c                 C   s   	 t d u rt  t | ||S r#   )r_   r
   r	   )r   r   r   r   r   r!   r	   W  s   r	   c                 C   s   da | d u s
td u rt }|  | d u rt} n	tt|  } nt}| D ]}tj|r0|	| q#|j
a
|ja|jd a|jd a|ad S r   )r   r_   r   rQ   r   r9   r,   pathisfiler   r   r   r   r   )filesdbfiler   r   r!   r
   h  s"   


r
   c                 C   sj   zt | dd}W n
 ty   Y d S w | t }||d |jd W  d    S 1 s.w   Y  d S )Nr<   r=   T)r>   rS   r   r?   r   )re   frd   r   r   r!   r     s   $r   c                	   C   s  ddddddd a adddd	d
d aai dddddddddddddddddddddddddddddd d!d"d#d$i d%d&d'd&d(d&d)d*d+d*d,d-d.d-d/d0d1d0d2d0d3d0d4d0d5d6d7d8d9d:d;d<d=d>i d?d@dAdBdCdDdEdFdGdHdIdJdKdJdLdMdNdMdOdPdQdRdSdRdTdUdVdWdXdYdZd[d\d]i d^d_d`dadbdcdddedfdedgdhdidhdjdhdkdldmdndodpdqdrdsdtdudvdwdvdxdvdydvi dzd{d|d}d~d}ddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddǓddɓdd˓dd˓ddΓi ddΓddΓddΓddΓddΓddՓddדddٓddۓddݓddݓdddddddddddddddddddd aaddddddddd aad S )Nz.svg.gzz.tar.gzz.tar.bz2z.tar.xz)z.svgzz.tgzz.tazz.tzz.tbz2z.txzgzipcompressbzip2xzbr)z.gzz.Zz.bz2z.xzz.brz.jszapplication/javascriptz.mjsz.jsonzapplication/jsonz.webmanifestzapplication/manifest+jsonz.doczapplication/mswordz.dotz.wizz.binzapplication/octet-streamz.az.dllz.exez.oz.objz.soz.odazapplication/odaz.pdfzapplication/pdfz.p7czapplication/pkcs7-mimez.pszapplication/postscriptz.aiz.epsz.m3uzapplication/vnd.apple.mpegurlz.m3u8z.xlszapplication/vnd.ms-excelz.xlbz.pptzapplication/vnd.ms-powerpointz.potz.ppaz.ppsz.pwzz.wasmzapplication/wasmz.bcpiozapplication/x-bcpioz.cpiozapplication/x-cpioz.cshzapplication/x-cshz.dvizapplication/x-dviz.gtarzapplication/x-gtarz.hdfzapplication/x-hdfz.h5zapplication/x-hdf5z.latexzapplication/x-latexz.mifzapplication/x-mifz.cdfzapplication/x-netcdfz.ncz.p12zapplication/x-pkcs12z.pfxz.ramzapplication/x-pn-realaudioz.pyczapplication/x-python-codez.pyoz.shzapplication/x-shz.sharzapplication/x-sharz.swfzapplication/x-shockwave-flashz.sv4cpiozapplication/x-sv4cpioz.sv4crczapplication/x-sv4crcz.tarzapplication/x-tarz.tclzapplication/x-tclz.texzapplication/x-texz.texizapplication/x-texinfoz.texinfoz.roffzapplication/x-troffz.tz.trz.manzapplication/x-troff-manz.mezapplication/x-troff-mez.mszapplication/x-troff-msz.ustarzapplication/x-ustarz.srczapplication/x-wais-sourcez.xslzapplication/xmlz.rdfz.wsdlz.xpdlz.zipzapplication/zipz.3gpz
audio/3gppz.3gppz.3g2zaudio/3gpp2z.3gpp2z.aacz	audio/aacz.adtsz.loasz.assz.auzaudio/basicz.sndz.mp3z
audio/mpegz.mp2z.opusz
audio/opusz.aifzaudio/x-aiffz.aifcz.aiffz.razaudio/x-pn-realaudioz.wavzaudio/x-wavz.bmpz	image/bmpz.gifz	image/gifz.iefz	image/ief.jpgz
image/jpegz.jpez.jpegz.heicz
image/heicz.heifz
image/heifz.pngz	image/pngz.svgzimage/svg+xmlz.tiffz
image/tiffz.tifz.icozimage/vnd.microsoft.iconz.raszimage/x-cmu-rasterzimage/x-ms-bmpz.pnmzimage/x-portable-anymapz.pbmzimage/x-portable-bitmapz.pgmzimage/x-portable-graymapz.ppmzimage/x-portable-pixmapz.rgbzimage/x-rgbz.xbmzimage/x-xbitmapz.xpmzimage/x-xpixmapz.xwdzimage/x-xwindowdumpz.emlzmessage/rfc822z.mhtz.mhtmlz.nwsz.cssztext/cssz.csvztext/csvz.htmlz	text/htmlz.htmz.txtr+   z.batz.cz.hz.kshz.plz.rtxztext/richtextz.tsvztext/tab-separated-valuesz.pyztext/x-pythonz.etxztext/x-setextz.sgmztext/x-sgmlz.sgmlz.vcfztext/x-vcardz.xmlztext/xmlz.mp4z	video/mp4z.mpegz
video/mpegz.m1vz.mpazvideo/quicktimez
video/webmzvideo/x-msvideozvideo/x-sgi-movie)z.mpez.mpgz.movz.qtz.webmz.aviz.moviezapplication/rtfz
audio/midiz	image/jpgz
image/pictztext/xul)z.rtfz.midiz.midrl   z.pictz.pctz.picz.xul)r   r   r   r   r   r   r   r   r   r   r   r!   _default_mime_types  s  


	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 	  
  rm   c               
      s  dd l } d d fdd	}z|  tjdd  dg d\}}W n | jy7 } z|d| W Y d }~nd }~ww d}d}|D ]\}}|d	v rK|d q>|d
v rRd}q>|dv rXd}q>|D ],}	|rqt|	|}
|
sltd|	 q[t|
 q[t|	|\}
}|
std|	 q[td|
d| q[d S )Nr   a4  Usage: mimetypes.py [options] type

Options:
    --help / -h       -- print this message and exit
    --lenient / -l    -- additionally search of some common, but non-standard
                         types.
    --extension / -e  -- guess extension instead of type

More than one type argument may be given.
rU   c                    s"   t   |r
t | t|  d S r#   )printsysexit)codemsgZUSAGEr   r!   usagea  s   z_main.<locals>.usagerB   Zhle)helpZlenient	extension)z-hz--help)z-lz	--lenient)z-ez--extensionz I don't know anything about typeztype:z	encoding:)rU   )getoptro   argverrorr   rn   r   )rw   rt   Zoptsargsrr   r   rv   optargZgtypeZguessr8   r   rs   r!   _mainR  s<   


r}   __main__rY   r#   )r,   ro   r2   urllib.parser.   _winapir   ImportErrorwinregrO   __all__r   r   r_   r   r   r   r   r	   r
   r   rm   r}   rZ   r   r   r   r!   <module>   sD     
`



 A.
