o
    kh                     @   s8  d Z ddlmZ ddlZddlZddlZddlZddlZdZdZ	ej
d dkZej
d dkZej
dd dkZerJefZefZefZeZeZejZn=efZeefZeejfZeZeZejd	reed
Zn"G dd deZ ze!e   W n e"y   ed
ZY nw edZ[ erddl#m$Z$ ndZ$dd Z%dd Z&G dd deZ'G dd de'Z(G dd dej)Z*G dd de'Z+G dd deZ,e,e-Z.G dd de*Z/g e+ddd d!e+d"d#d$d%d"e+d&d#d#d'd&e+d(d)d$d*d(e+d+d)d,e+d-d#d$d.d-e+d/d0d0d1d/e+d2d0d0d/d2e+d3d4d5e+d6d)d$d7d6e+d8d)er#d9nd:d;e+d<d)d=e+d>d?d@dAe+d!d!d e+dBdBdCdDdBe+dEdEdCe+dFdFdCe+d7d)d$d7d6e+dGd#d$dHdGe+dId#d#dJdIe(d$d)e(dKdLe(dMdCej
dNkr{dOndCe(dPdQe(dRdSdTe(dUdVdWe(dXdYej
dZk rdXnd[e(d\d]d^e(d_d`dae(dbdcdde(dedfdge(dhdidje(dkdldme(dndodpe(dqdrdse(dtdudve(dwdxdye(dzdzd{e(d|d|d{e(d}d}d{e(d~d~de(dde(dde(dde(d[dd[e(dde(ddde(ddde(ddde(ddde(ddde(ddde(ddde(ddde(ddde(ddde(ddde(ddde(ddde(ddde(de-d de(de-d de(de-d e-d e(ddde(ddde(dddZ0ejdkre0e(ddăg7 Z0e0D ]Z1e2e/e1j3e1 e4e1e(re.5e1de1j3  q[1e0e/_0e/e-d Z6e.5e6dǡ G ddɄ de*Z7e+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+dAdde+ddde+ddde+ddde+ddddd׃e+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+dddgZ8e8D ]
Z1e2e7e1j3e1 qQ[1e8e7_0e.5e7e-d dd G dd de*Z9e+ddde+ddde+dddgZ:e:D ]
Z1e2e9e1j3e1 q[1e:e9_0e.5e9e-d dd G dd de*Z;g e+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+d dde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+ddde+d	dde+d
dde+ddde+ddde+ddde+ddde+ddde+dddZ<ej
dd dk re<=e+ddde+dddg e<D ]
Z1e2e;e1j3e1 q[1e<e;_0e.5e;e-d dd G dd de*Z>e+ddde+ddde+ddde+dddgZ?e?D ]
Z1e2e>e1j3e1 q[1e?e>_0e.5e>e-d dd  G d!d" d"e*Z@e+d#ddgZAeAD ]
Z1e2e@e1j3e1 q[1eAe@_0e.5e@e-d$ d%d& G d'd( d(ej)ZBe.5eBe-d d) d*d+ ZCd,d- ZDerod.ZEd/ZFd0ZGd1ZHd2ZId3ZJnd4ZEd5ZFd6ZGd7ZHd8ZId9ZJzeKZLW n eMy   d:d; ZLY nw eLZKzeNZNW n eMy   d<d= ZNY nw erd>d? ZOejPZQd@dA ZReZSndBd? ZOdCdD ZQdEdA ZRG dFdG dGeZSeNZNe%eOdH eTeEZUeTeFZVeTeGZWeTeHZXeTeIZYeTeJZZer3dIdJ Z[dKdL Z\dMdN Z]dOdP Z^e_dQZ`e_dRZae_dSZbn*dTdJ Z[dUdL Z\dVdN Z]dWdP Z^e_dXZ`e_dYZae_dZZbe%e[d[ e%e\d\ e%e]d] e%e^d^ erȐd_d` Zcdadb ZdeeZfddlgZgeghdcjiZj[gekdZlejmZneoZpddlqZqeqjrZreqjsZs[qddZtej
de dekrdfZudgZvdhZwnBdiZudjZvdkZwn8dld` Zcdmdb ZdefZfeeZjdndo Zldpdq ZnexejyezZpddlrZrerjr ZrZsdrZtdfZudgZvdhZwe%ecds e%eddt dudd Z{dvdi Z|dwdj Z}dxdk Z~er7ee6jdyZddzd{Zndd|d}Zed~ ej
dd dkrUed ndd Zee6jddZedu rndd Zej
dd dNk reZdd Ze%ed ej
dd dk rejejfddZejj e_ ejejfddZejj e_ nejZdd Zdd ZdddZdddZdddZdd Zg Ze-Ze ddurg e_ejreejD ]\ZZeej-dkrej3e-kreje=  nq[[eje. dS (  z6Utilities for writing code that runs on Python 2 and 3    )absolute_importNz'Benjamin Peterson <benjamin@python.org>z1.17.0      )r      javaic                   @      e Zd Zdd ZdS )Xc                 C   s   dS )Nl         selfr	   r	   #lib/python3.10/site-packages/six.py__len__>      z	X.__len__N)__name__
__module____qualname__r   r	   r	   r	   r   r   <       r   l    )spec_from_loaderc                 C   s
   || _ dS )z Add documentation to a function.N)__doc__)funcdocr	   r	   r   _add_docP   s   
r   c                 C   s   t |  tj|  S )z7Import module, returning the module after the last dot.)
__import__sysmodulesnamer	   r	   r   _import_moduleU   s   
r   c                   @   s   e Zd Zdd Zdd ZdS )
_LazyDescrc                 C   s
   || _ d S Nr   r   r   r	   r	   r   __init__]      
z_LazyDescr.__init__c                 C   s@   |   }t|| j| z
t|j| j W |S  ty   Y |S w r   )_resolvesetattrr   delattr	__class__AttributeError)r   objtpresultr	   r	   r   __get__`   s   z_LazyDescr.__get__N)r   r   r   r!   r+   r	   r	   r	   r   r   [   s    r   c                       s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	MovedModuleNc                    s4   t t| | tr|d u r|}|| _d S || _d S r   )superr,   r!   PY3mod)r   r   oldnewr&   r	   r   r!   n   s   

zMovedModule.__init__c                 C   s
   t | jS r   )r   r/   r
   r	   r	   r   r#   w   r"   zMovedModule._resolvec                 C   s"   |   }t||}t| || |S r   )r#   getattrr$   )r   attr_modulevaluer	   r	   r   __getattr__z   s   
zMovedModule.__getattr__r   )r   r   r   r!   r#   r7   __classcell__r	   r	   r2   r   r,   l   s    	r,   c                       s(   e Zd Z fddZdd Zg Z  ZS )_LazyModulec                    s   t t| | | jj| _d S r   )r-   r9   r!   r&   r   r    r2   r	   r   r!      s   z_LazyModule.__init__c                 C   s    ddg}|dd | j D 7 }|S )Nr   r   c                 S   s   g | ]}|j qS r	   r   ).0r4   r	   r	   r   
<listcomp>   s    z'_LazyModule.__dir__.<locals>.<listcomp>)_moved_attributes)r   Zattrsr	   r	   r   __dir__   s   z_LazyModule.__dir__)r   r   r   r!   r=   r<   r8   r	   r	   r2   r   r9      s    r9   c                       s&   e Zd Zd fdd	Zdd Z  ZS )MovedAttributeNc                    sf   t t| | tr%|d u r|}|| _|d u r |d u r|}n|}|| _d S || _|d u r.|}|| _d S r   )r-   r>   r!   r.   r/   r4   )r   r   Zold_modZnew_modZold_attrZnew_attrr2   r	   r   r!      s   

zMovedAttribute.__init__c                 C   s   t | j}t|| jS r   )r   r/   r3   r4   r   moduler	   r	   r   r#      s   
zMovedAttribute._resolveNN)r   r   r   r!   r#   r8   r	   r	   r2   r   r>      s    r>   c                   @   sp   e Zd ZdZdd Zdd Zdd Zdd	d
ZdddZdd Z	dd Z
dd Zdd ZeZdd Zdd ZdS )_SixMetaPathImporterz
    A meta path importer to import six.moves and its submodules.

    This class implements a PEP302 finder and loader. It should be compatible
    with Python 2.5 and all existing versions of Python3
    c                 C   s   || _ i | _d S r   )r   known_modules)r   Zsix_module_namer	   r	   r   r!      s   
z_SixMetaPathImporter.__init__c                 G   s"   |D ]}|| j | jd | < qd S N.rC   r   )r   r/   Z	fullnamesfullnamer	   r	   r   _add_module   s   z _SixMetaPathImporter._add_modulec                 C   s   | j | jd |  S rD   rF   r   rG   r	   r	   r   _get_module      z _SixMetaPathImporter._get_moduleNc                 C   s   || j v r| S d S r   )rC   )r   rG   pathr	   r	   r   find_module   s   
z _SixMetaPathImporter.find_modulec                 C   s   || j v r
t|| S d S r   )rC   r   )r   rG   rL   targetr	   r	   r   	find_spec   s   

z_SixMetaPathImporter.find_specc                 C   s(   z| j | W S  ty   td| w )Nz!This loader does not know module )rC   KeyErrorImportErrorrI   r	   r	   r   Z__get_module   s
   z!_SixMetaPathImporter.__get_modulec                 C   sR   zt j| W S  ty   Y nw | |}t|tr| }n| |_|t j|< |S r   )r   r   rP    _SixMetaPathImporter__get_module
isinstancer,   r#   
__loader__)r   rG   r/   r	   r	   r   load_module   s   



z _SixMetaPathImporter.load_modulec                 C   s   t | |dS )z
        Return true, if the named module is a package.

        We need this method to get correct spec objects with
        Python 3.4 (see PEP451)
        __path__)hasattrrR   rI   r	   r	   r   
is_package   s   z_SixMetaPathImporter.is_packagec                 C   s   |  | dS )z;Return None

        Required, if is_package is implementedN)rR   rI   r	   r	   r   get_code   s   
z_SixMetaPathImporter.get_codec                 C   s   |  |jS r   )rU   r   )r   specr	   r	   r   create_module      z"_SixMetaPathImporter.create_modulec                 C   s   d S r   r	   r?   r	   r	   r   exec_module   r   z _SixMetaPathImporter.exec_moduler   )r   r   r   r   r!   rH   rJ   rM   rO   rR   rU   rX   rY   
get_sourcer[   r]   r	   r	   r	   r   rB      s    

	rB   c                   @   s   e Zd ZdZg ZdS )_MovedItemszLazy loading of moved objectsN)r   r   r   r   rV   r	   r	   r	   r   r_      s    r_   Z	cStringIOioStringIOfilter	itertoolsbuiltinsZifilterfilterfalseZifilterfalseinputZ__builtin__Z	raw_inputinternr   mapimapgetcwdosZgetcwdugetcwdbZ	getoutputZcommands
subprocessrangeZxrangeZreload_module	importlibimpreloadreduce	functoolsZshlex_quoteZpipesZshlexquoteUserDictcollectionsZIterableUserDictUserList
UserStringzipZizipzip_longestZizip_longestZconfigparserZConfigParserZcollections_abc)r   r   zcollections.abccopyregZcopy_regZdbm_gnuZgdbmzdbm.gnuZdbm_ndbmZdbmzdbm.ndbmZ_dummy_threadZdummy_thread)r   	   _threadZhttp_cookiejarZ	cookielibzhttp.cookiejarZhttp_cookiesZCookiezhttp.cookiesZhtml_entitiesZhtmlentitydefszhtml.entitiesZhtml_parserZ
HTMLParserzhtml.parserZhttp_clientZhttplibzhttp.clientZemail_mime_basezemail.MIMEBasezemail.mime.baseZemail_mime_imagezemail.MIMEImagezemail.mime.imageZemail_mime_multipartzemail.MIMEMultipartzemail.mime.multipartZemail_mime_nonmultipartzemail.MIMENonMultipartzemail.mime.nonmultipartZemail_mime_textzemail.MIMETextzemail.mime.textZBaseHTTPServerzhttp.serverZCGIHTTPServerZSimpleHTTPServerZcPicklepicklequeueZQueuereprlibreprZsocketserverZSocketServerthreadZtkinterZTkinterZtkinter_dialogZDialogztkinter.dialogZtkinter_filedialogZ
FileDialogztkinter.filedialogZtkinter_scrolledtextZScrolledTextztkinter.scrolledtextZtkinter_simpledialogZSimpleDialogztkinter.simpledialogZtkinter_tixZTixztkinter.tixZtkinter_ttkZttkztkinter.ttkZtkinter_constantsZTkconstantsztkinter.constantsZtkinter_dndZTkdndztkinter.dndZtkinter_colorchooserZtkColorChooserztkinter.colorchooserZtkinter_commondialogZtkCommonDialogztkinter.commondialogZtkinter_tkfiledialogZtkFileDialogZtkinter_fontZtkFontztkinter.fontZtkinter_messageboxZtkMessageBoxztkinter.messageboxZtkinter_tksimpledialogZtkSimpleDialogZurllib_parsez.moves.urllib_parsezurllib.parseZurllib_errorz.moves.urllib_errorzurllib.errorZurllibz.moves.urllibZurllib_robotparserrobotparserzurllib.robotparserZxmlrpc_clientZ	xmlrpclibzxmlrpc.clientZxmlrpc_serverZSimpleXMLRPCServerzxmlrpc.serverwin32winregZ_winregzmoves.z.movesmovesc                   @      e Zd ZdZdS )Module_six_moves_urllib_parsez7Lazy loading of moved objects in six.moves.urllib_parseNr   r   r   r   r	   r	   r	   r   r   T      r   ParseResulturlparseSplitResultparse_qs	parse_qsl	urldefragurljoinurlsplit
urlunparse
urlunsplit
quote_plusunquoteunquote_plusunquote_to_bytes	urlencode
splitquerysplittag	splituser
splitvalueuses_fragmentuses_netlocuses_params
uses_queryuses_relativemoves.urllib_parsezmoves.urllib.parsec                   @   r   )Module_six_moves_urllib_errorz7Lazy loading of moved objects in six.moves.urllib_errorNr   r	   r	   r	   r   r   ~  r   r   ZURLErrorZurllib2Z	HTTPErrorZContentTooShortErrorz.moves.urllib.errormoves.urllib_errorzmoves.urllib.errorc                   @   r   )Module_six_moves_urllib_requestz9Lazy loading of moved objects in six.moves.urllib_requestNr   r	   r	   r	   r   r     r   r   Zurlopenzurllib.requestZinstall_openerZbuild_openerZpathname2urlZurl2pathnameZ
getproxiesZRequestZOpenerDirectorZHTTPDefaultErrorHandlerZHTTPRedirectHandlerZHTTPCookieProcessorZProxyHandlerZBaseHandlerZHTTPPasswordMgrZHTTPPasswordMgrWithDefaultRealmZAbstractBasicAuthHandlerZHTTPBasicAuthHandlerZProxyBasicAuthHandlerZAbstractDigestAuthHandlerZHTTPDigestAuthHandlerZProxyDigestAuthHandlerZHTTPHandlerZHTTPSHandlerZFileHandlerZ
FTPHandlerZCacheFTPHandlerZUnknownHandlerZHTTPErrorProcessorZurlretrieveZ
urlcleanupZproxy_bypassZparse_http_listZparse_keqv_list)r      Z	URLopenerZFancyURLopenerz.moves.urllib.requestmoves.urllib_requestzmoves.urllib.requestc                   @   r   ) Module_six_moves_urllib_responsez:Lazy loading of moved objects in six.moves.urllib_responseNr   r	   r	   r	   r   r     r   r   Zaddbasezurllib.responseZaddclosehookZaddinfoZ
addinfourlz.moves.urllib.responsemoves.urllib_responsezmoves.urllib.responsec                   @   r   )#Module_six_moves_urllib_robotparserz=Lazy loading of moved objects in six.moves.urllib_robotparserNr   r	   r	   r	   r   r     r   r   ZRobotFileParserz.moves.urllib.robotparsermoves.urllib_robotparserzmoves.urllib.robotparserc                   @   sN   e Zd ZdZg ZedZedZedZ	edZ
edZdd Zd	S )
Module_six_moves_urllibzICreate a six.moves.urllib namespace that resembles the Python 3 namespacer   r   r   r   r   c                 C   s   g dS )N)parseerrorrequestresponser   r	   r
   r	   r	   r   r=        zModule_six_moves_urllib.__dir__N)r   r   r   r   rV   	_importerrJ   r   r   r   r   r   r=   r	   r	   r	   r   r     s    




r   zmoves.urllibc                 C   s   t t| j|  dS )zAdd an item to six.moves.N)r$   r_   r   )mover	   r	   r   add_move  s   r   c                 C   sN   zt t|  W dS  ty&   ztj| = W Y dS  ty%   td| f w w )zRemove item from six.moves.zno such move, %rN)r%   r_   r'   r   __dict__rP   r   r	   r	   r   remove_move  s   r   __func____self____closure____code____defaults____globals__im_funcZim_selfZfunc_closureZ	func_codeZfunc_defaultsZfunc_globalsc                 C   s   |   S r   )next)itr	   r	   r   advance_iterator(  r   r   c                 C   s   t dd t| jD S )Nc                 s   s    | ]}d |j v V  qdS )__call__N)r   )r:   klassr	   r	   r   	<genexpr>1  s    zcallable.<locals>.<genexpr>)anytype__mro__)r(   r	   r	   r   callable0  s   r   c                 C      | S r   r	   Zunboundr	   r	   r   get_unbound_function5  r   r   c                 C   r   r   r	   r   clsr	   r	   r   create_unbound_method:  r   r   c                 C   s   | j S r   )r   r   r	   r	   r   r   ?  s   c                 C   s   t | ||jS r   )types
MethodTyper&   )r   r(   r	   r	   r   create_bound_methodB     r   c                 C   s   t | d |S r   )r   r   r   r	   r	   r   r   E     c                   @   r   )Iteratorc                 C   s   t | | S r   )r   __next__r
   r	   r	   r   r   J  r   zIterator.nextN)r   r   r   r   r	   r	   r	   r   r   H  r   r   z3Get the function out of a possibly unbound functionc                 K      t | jdi |S Nr	   )iterkeysdkwr	   r	   r   iterkeys[  rK   r   c                 K   r   r   )r   valuesr   r	   r	   r   
itervalues^  rK   r   c                 K   r   r   )r   itemsr   r	   r	   r   	iteritemsa  rK   r   c                 K   r   r   )r   Zlistsr   r	   r	   r   	iterlistsd  rK   r   r   r   r   c                 K      | j di |S r   )r   r   r	   r	   r   r   m  r   c                 K   r   r   )r   r   r	   r	   r   r   p  r   c                 K   r   r   )r   r   r	   r	   r   r   s  r   c                 K   r   r   )r   r   r	   r	   r   r   v  r   viewkeys
viewvalues	viewitemsz1Return an iterator over the keys of a dictionary.z3Return an iterator over the values of a dictionary.z?Return an iterator over the (key, value) pairs of a dictionary.zBReturn an iterator over the (key, [values]) pairs of a dictionary.c                 C   s
   |  dS )Nzlatin-1)encodesr	   r	   r   b  r"   r   c                 C   r   r   r	   r   r	   r	   r   u  r   r   z>BassertCountEqual   ZassertRaisesRegexpZassertRegexpMatchesZassertNotRegexpMatchesassertRaisesRegexassertRegexassertNotRegexc                 C   r   r   r	   r   r	   r	   r   r     r   c                 C   s   t | dddS )Nz\\z\\\\Zunicode_escape)unicodereplacer   r	   r	   r   r     s   c                 C   s   t | d S )Nr   ord)bsr	   r	   r   byte2int  r\   r   c                 C   s   t | | S r   r   )bufir	   r	   r   
indexbytes  r\   r   ZassertItemsEqualzByte literalzText literalc                 O      t | t|i |S r   )r3   _assertCountEqualr   argskwargsr	   r	   r   r     rK   c                 O   r   r   )r3   _assertRaisesRegexr   r	   r	   r   r     rK   c                 O   r   r   )r3   _assertRegexr   r	   r	   r   r     rK   c                 O   r   r   )r3   _assertNotRegexr   r	   r	   r   r     rK   execc                 C   s2   z|d u r|  }|j |ur|||d }d }w r   )__traceback__with_traceback)r)   r6   tbr	   r	   r   reraise  s   

r  c                 C   sB   |du rt d}|j}|du r|j}~n|du r|}td dS )zExecute code in a namespace.Nr   zexec _code_ in _globs_, _locs_)r   	_getframe	f_globalsf_localsr  )Z_code_Z_globs_Z_locs_framer	   r	   r   exec_  s   
r  zedef reraise(tp, value, tb=None):
    try:
        raise tp, value, tb
    finally:
        tb = None
)r   zrdef raise_from(value, from_value):
    try:
        raise value from from_value
    finally:
        value = None
c                 C   s   | r   r	   )r6   Z
from_valuer	   r	   r   
raise_from  r   r  printc            
         s*  | dtj  du rdS  fdd}d}| dd}|dur0t|tr'd}n	t|ts0td| d	d}|durKt|trBd}n	t|tsKtd
|rQtd|sa| D ]}t|tr`d} nqU|rltd}td}nd}d}|du rv|}|du r||}t| D ]\}	}|	r|| || q|| dS )z4The new-style print function for Python 2.4 and 2.5.fileNc                    sd   t | ts	t| } t  tr+t | tr+ jd ur+t dd }|d u r$d}|  j|}  |  d S )Nerrorsstrict)	rS   
basestringstrr  r   encodingr3   r   write)datar  fpr	   r   r    s   


zprint_.<locals>.writeFsepTzsep must be None or a stringendzend must be None or a stringz$invalid keyword arguments to print()
 )popr   stdoutrS   r   r  	TypeError	enumerate)
r   r   r  Zwant_unicoder  r  argnewlinespacer   r	   r  r   print_  sN   






r#  c                  O   sH   | dtj}|dd}t| i | |r |d ur"|  d S d S d S )Nr  flushF)getr   r  r  _printr$  )r   r   r  r$  r	   r	   r   r#  4  s   zReraise an exception.c              	   C   sd   |D ]}zt ||}W n	 ty   Y qw t| || q|D ]}t | |t ||i  q|| _| S r   )r3   r'   r$   update__wrapped__)wrapperwrappedassignedupdatedr4   r6   r	   r	   r   _update_wrapperC  s   r-  c                 C   s   t jt| ||dS )Nr*  r+  r,  )rs   partialr-  r.  r	   r	   r   wrapsS  s   r0  c                    s&   G  fdddt }t |ddi S )z%Create a base class with a metaclass.c                       s,   e Zd Z fddZe fddZdS )z!with_metaclass.<locals>.metaclassc                    s>   t jd d dkrt }| ur |d< n }|||S )Nr   )r      __orig_bases__)r   version_infor   resolve_bases)r   r   
this_basesr   resolved_basesbasesmetar	   r   __new__d  s   
z)with_metaclass.<locals>.metaclass.__new__c                    s    | S r   )__prepare__)r   r   r5  r7  r	   r   r;  o  s   z-with_metaclass.<locals>.metaclass.__prepare__N)r   r   r   r:  classmethodr;  r	   r7  r	   r   	metaclassb  s    r=  Ztemporary_classr	   )r   r:  )r9  r8  r=  r	   r7  r   with_metaclass]  s   r>  c                    s    fdd}|S )z6Class decorator for creating a class with a metaclass.c                    s|   | j  }|d}|d ur t|tr|g}|D ]}|| q|dd  |dd  t| dr6| j|d<  | j| j	|S )N	__slots__r   __weakref__r   )
r   copyr%  rS   r  r  rW   r   r   	__bases__)r   Z	orig_varsslotsZ	slots_varr=  r	   r   r)  w  s   




zadd_metaclass.<locals>.wrapperr	   )r=  r)  r	   rD  r   add_metaclassu  s   rE  utf-8r  c                 C   s4   t | tr| S t | tr| ||S tdt|  )zCoerce **s** to six.binary_type.

    For Python 2:
      - `unicode` -> encoded to `str`
      - `str` -> `str`

    For Python 3:
      - `str` -> encoded to `bytes`
      - `bytes` -> `bytes`
    not expecting type '%s')rS   binary_type	text_typer   r  r   r   r  r  r	   r	   r   ensure_binary  s
   

rK  c                 C   sf   t | tu r| S trt| tr| ||S tr"t| tr"| ||S t| ttfs1t	dt |  | S )zCoerce *s* to `str`.

    For Python 2:
      - `unicode` -> encoded to `str`
      - `str` -> `str`

    For Python 3:
      - `str` -> `str`
      - `bytes` -> decoded to `str`
    rG  )
r   r  PY2rS   rI  r   r.   rH  decoder  rJ  r	   r	   r   
ensure_str  s   rN  c                 C   s4   t | tr| ||S t | tr| S tdt|  )zCoerce *s* to six.text_type.

    For Python 2:
      - `unicode` -> `unicode`
      - `str` -> `unicode`

    For Python 3:
      - `str` -> `str`
      - `bytes` -> decoded to `str`
    rG  )rS   rH  rM  rI  r  r   rJ  r	   r	   r   ensure_text  s
   

rO  c                 C   s2   t rd| jvrtd| j | j| _dd | _| S )a  
    A class decorator that defines __unicode__ and __str__ methods under Python 2.
    Under Python 3 it does nothing.

    To support Python 2 and 3 with a single code base, define a __str__ method
    returning text and apply this decorator to the class.
    __str__zY@python_2_unicode_compatible cannot be applied to %s because it doesn't define __str__().c                 S   s   |   dS )NrF  )__unicode__r   r
   r	   r	   r   <lambda>  s    z-python_2_unicode_compatible.<locals>.<lambda>)rL  r   
ValueErrorr   rP  rQ  )r   r	   r	   r   python_2_unicode_compatible  s   

rT  __spec__r   rA   )rF  r  )r   Z
__future__r   rs   rc   operatorr   r   
__author____version__r3  rL  r.   ZPY34r  Zstring_typesintZinteger_typesr   Zclass_typesrI  bytesrH  maxsizeZMAXSIZEr  ZlongZ	ClassTyper   platform
startswithobjectr   lenOverflowErrorimportlib.utilr   r   r   r   r,   
ModuleTyper9   r>   rB   r   r   r_   r<   r4   r$   r   rS   rH   r   r   Z_urllib_parse_moved_attributesr   Z_urllib_error_moved_attributesr   Z _urllib_request_moved_attributesextendr   Z!_urllib_response_moved_attributesr   Z$_urllib_robotparser_moved_attributesr   r   r   Z
_meth_funcZ
_meth_selfZ_func_closureZ
_func_codeZ_func_defaultsZ_func_globalsr   r   	NameErrorr   r   r   r   r   r   
attrgetterZget_method_functionZget_method_selfZget_function_closureZget_function_codeZget_function_defaultsZget_function_globalsr   r   r   r   methodcallerr   r   r   r   r   chrZunichrstructStructpackZint2byte
itemgetterr   getitemr   r   Z	iterbytesr`   ra   BytesIOr   r   r   r  r/  ri   r   r   r   r   r   r3   rd   r  r  r  r#  r&  WRAPPER_ASSIGNMENTSWRAPPER_UPDATESr-  update_wrapperr0  r>  rE  rK  rN  rO  rT  rV   __package__globalsr%  rU  submodule_search_locations	meta_pathr  r   importerappendr	   r	   r	   r   <module>   s  

I

	











 
!
"
#
$
%
&
'
(
)*+,
-.
/
0
1
2
3
4
5
679
;
<
=>@AB
C
D
EH



































	







 !#









5
