
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \’9 ã            D   @   s–  d dl Z d dl mZm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	yd dl
j ZW n ek
rr   d dlZY nX ejdd… dûkrŽd dlZyd dl	mZmZmZ W n4 ek
rÚ   eejƒZeeƒ jƒZeejƒZY nX 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(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:g4Zd;d<„ Zd=d>„ ZG d?d@„ d@eƒZG dAdB„ dBedCdD�ZG dEdF„ dFedCdG�ZG dHdI„ dIedCdG�ZG dJdK„ dKedCdG�ZdLdM„ Z dNdO„ Z!dPdQ„ Z"dRdS„ Z#dTdU„ Z$G dVdW„ dWedCdG�Z%e%dCdG�Z&G dXdY„ dYedCdG�Z'e'dCdG�Z(G dZd„ dedCdG�Z)e)d[ƒZ*e)d\ƒZ+e)d]ƒZ,e)d^dCd_�Z-e)d`dCd_�Z.e)dadCd_�Z/e)dbdCdc�Z0e)d2e1eƒZ2ddde„ Z3düdfdg„Z4dhdi„ Z5djdk„ Z6g Z7dldm„ Z8G dndo„ doedCdG�Z9e9dCdG�Z:G dpdq„ dqedCdG�Z;e;dCdG�Z<drds„ Z=dtdu„ Z>dvdw„ Z?G dxd„ dee j@ƒZAdZBdydz„ ZCG d{d
„ d
eAd|�ZBG d}d~„ d~ƒZDG dd€„ d€ƒZEG d�d‚„ d‚eAƒZFG dƒd„ deGeGeFd„�ZHG d…d†„ d†eAƒZIG d‡d„ dejJeId„�ZJG dˆd‰„ d‰edCdG�ZKeKdCdG�ZLdŠd3„ ZMd‹dŒ„ ZNe	jOe	jPe	jQe	jReeefZSdýd�d4„ZTdŽd6„ ZUd�d7„ ZVd�d‘„ ZWd’d8„ ZXG d“d”„ d”eAƒZYG d•d–„ d–eYd|�ZZej[Z[e\ed—ƒ�rjG d˜d—„ d—eBe- ej]d™�Z]ej^d—ƒ e\edšƒ�r¦G d›dš„ dše]e. eBe-e0e.f ej_d™�Z_ej^dšƒ e\edœƒ�rúG d�dœ„ dœeBe- ej`d™�Z`G dždŸ„ dŸe`e- ejad™�Zaej^dœƒ ej^dŸƒ G d d„ deBe- ejbd™�ZbG d¡d„ debe- ejcd™�ZcG d¢d'„ d'eZƒZdG d£d&„ d&eZƒZeG d¤d%„ d%eZƒZfG d¥d$„ d$eZƒZgG d¦d#„ d#eZe- ƒZhG d§d(„ d(eZe- ƒZie\ed"ƒ�r¾G d¨d"„ d"ebe- ejjd™�ZjnG d©d"„ d"eZe- ƒZjejkZkG dªd„ deBe- ejld™�Zle\ed«ƒ�r*G d¬d«„ d«ekebe- ele- ejmd™�Zmej^d«ƒ e\ed«ƒ�rRG d­d„ deme- ejnd™�Zon"G d®d„ dekebe- ele- ejnd™�ZoG d¯d„ deoe* ejpd™�Zpe\ed«ƒ�rÀG d°d„ deme+ eBe+e/f ejqd™�Zqn,G d±d„ dekebe+ ele+ eBe+e/f ejqd™�ZqG d²d„ deqe+e,f ejrd™�Zre\ed"ƒ�rhe\ed«ƒ�rDG d³d„ deje- eme- ejsd™�Zsn"G d´d„ dekeje- ele- ejsd™�Zsn"G dµd„ dekebe- ele- ejsd™�ZsG d¶d„ dese* ejtd™�ZtG d·d„ deseu ejvd™�ZvG d¸d-„ d-ewete* ewd™�ZxG d¹d*„ d*ejyete* ejyd™�ZzG dºd.„ d.e{epe* e{d™�ZnG d»d/„ d/e|eoe- e|d™�Z}G d¼d„ dekebe- ej~d™�Z~G d½d„ de~e+ eoe+ ejd™�ZG d¾d„ de~eHe+e/f  eoeHe+e/f  eBe+e/f ej€d™�Z€G d¿d!„ d!e~e/ ej�d™�Z�e\edÀƒ�râG dÁd„ deBe- ej‚d™�ZƒnG dÂd„ deBe- ƒZƒe\edÃƒ�	r(G dÄdÅ„ dÅeBe- ej„d™�Z…ej^dÅƒ nejdd… dþk�	rDe†dÇƒ G dÈd+„ d+e‡ere+e,f e‡d™�ZˆG dÉd,„ d,ej‰ere+e,f ej‰d™�ZŠG dÊd)„ d)ej‹eˆe*euf ej‹d™�Z‹e\edËƒ�	rÞej^dËƒ G dÌdË„ dËejŒere+e,f ejŒd™�ZŒe\ed1ƒ�	ròej�ZŽne	j�ZŽG dÍd1„ d1ece- eBe-e0e.f eŽd™�Z�e\edÎƒ�
rVG dÏdÎ„ dÎeae- eBe-e0f ej�d™�Z�ej^dÎƒ e)dÐdCedÑ�Z‘G dÒd„ deBe‘ ed™�Z’dÓdÔ„ Z“ejdd… dÿkZ”�d Z•�dZ–G dädå„ dåeƒZ—G dæd0„ d0e—d|�Z˜dçd5„ Z™eZšdèZ›G dédê„ dêeBe2 ƒZœG dëdì„ dìeœe1 ƒZ�G dídî„ dîeœe ƒZžG dïdð„ dðƒZŸe dñ eŸ_ eŸej¡eŸj < edòe2eej¢dóƒƒdôdõ„ ƒZ£edöe2eej¤dódóƒƒd÷dõ„ ƒZ¥G dødù„ dùƒZe dú e_ eej¡ej < dS (  é    N)ÚabstractmethodÚabstractpropertyé   é   é   )ÚWrapperDescriptorTypeÚMethodWrapperTypeÚMethodDescriptorTypeÚAnyÚCallableÚClassVarÚGenericÚOptionalÚTupleÚTypeÚTypeVarÚUnionÚAbstractSetÚGenericMetaÚ
ByteStringÚ	ContainerÚContextManagerÚHashableÚ	ItemsViewÚIterableÚIteratorÚKeysViewÚMappingÚMappingViewÚMutableMappingÚMutableSequenceÚ
MutableSetÚSequenceÚSizedÚ
ValuesViewÚ
ReversibleÚSupportsAbsÚSupportsBytesÚSupportsComplexÚSupportsFloatÚSupportsIntÚSupportsRoundÚCounterÚDequeÚDictÚDefaultDictÚListÚSetÚ	FrozenSetÚ
NamedTupleÚ	GeneratorÚAnyStrÚcastÚget_type_hintsÚNewTypeÚno_type_checkÚno_type_check_decoratorÚoverloadÚTextÚTYPE_CHECKINGc             C   s"   t jd d… dkr| jS | jS d S )Nr   r   )r   r   )ÚsysÚversion_infoÚ__qualname__Ú__name__)Úx© rC   ú/usr/lib64/python3.6/typing.pyÚ	_qualnameg   s    rE   c             C   s&   d}| j dƒr"| |kr"| dd … } | S )NÚ
_TypeAliasÚ_ForwardRefÚ_TypingBaseÚ_FinalTypingBaseÚ_é   )rF   rG   rH   rI   )Ú
startswith)ZnmZ	whitelistrC   rC   rD   Ú
_trim_nameo   s    rM   c                   sF   e Zd ZdZddœ‡ fdd„
Zdd„ Zdd„ Zd	d
„ Zdd„ Z‡  Z	S )Ú
TypingMetaF)Ú_rootc               s2   |s t ddjtt|ƒƒpd ƒ‚tƒ j| |||ƒS )NzCannot subclass %sz, z())Ú	TypeErrorÚjoinÚmapÚ
_type_reprÚsuperÚ__new__)ÚclsÚnameÚbasesÚ	namespacerO   )Ú	__class__rC   rD   rU   …   s    zTypingMeta.__new__c             O   s   d S )NrC   )ÚselfÚargsÚkwdsrC   rC   rD   Ú__init__‹   s    zTypingMeta.__init__c             C   s   | S )NrC   )r[   ÚglobalnsÚlocalnsrC   rC   rD   Ú
_eval_typeŽ   s    zTypingMeta._eval_typec             C   s   d S )NrC   )r[   ÚtvarsrC   rC   rD   Ú_get_type_vars˜   s    zTypingMeta._get_type_varsc             C   s   t t| ƒƒ}d| j|f S )Nz%s.%s)rM   rE   Ú
__module__)r[   ÚqnamerC   rC   rD   Ú__repr__›   s    zTypingMeta.__repr__)
rA   rd   r@   Ú_is_protocolrU   r^   ra   rc   rf   Ú__classcell__rC   rC   )rZ   rD   rN   v   s   
rN   c                   sH   e Zd ZdZdd„ Z‡ fdd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	‡  Z
S )rH   Ú__weakref__c             O   s   d S )NrC   )r[   r\   r]   rC   rC   rD   r^   ¥   s    z_TypingBase.__init__c                s@   t |ƒdkr4t|d tƒr4t|d tƒr4td|  ƒ‚tƒ j| ƒS )Nr   r   rK   zCannot subclass %r)ÚlenÚ
isinstanceÚstrÚtuplerP   rT   rU   )rV   r\   r]   )rZ   rC   rD   rU   ¨   s
    z_TypingBase.__new__c             C   s   | S )NrC   )r[   r_   r`   rC   rC   rD   ra   ¶   s    z_TypingBase._eval_typec             C   s   d S )NrC   )r[   rb   rC   rC   rD   rc   ¹   s    z_TypingBase._get_type_varsc             C   s"   t | ƒ}tt|ƒƒ}d|j|f S )Nz%s.%s)ÚtyperM   rE   rd   )r[   rV   re   rC   rC   rD   rf   ¼   s    z_TypingBase.__repr__c             O   s   t dt| ƒ ƒ‚d S )NzCannot instantiate %r)rP   rn   )r[   r\   r]   rC   rC   rD   Ú__call__Á   s    z_TypingBase.__call__)ri   )rA   rd   r@   Ú	__slots__r^   rU   ra   rc   rf   ro   rh   rC   rC   )rZ   rD   rH       s   rH   T)Ú	metaclassrO   c                   s.   e Zd Zf Zddœ‡ fdd„
Zdd„ Z‡  ZS )rI   F)rO   c               s0   t ƒ j| f|ž|Ž}|dkr |S td|  ƒ‚d S )NTzCannot instantiate %r)rT   rU   rP   )rV   rO   r\   r]   r[   )rZ   rC   rD   rU   Î   s    z_FinalTypingBase.__new__c             C   s   t t| ƒjƒS )N)rM   rn   rA   )r[   rC   rC   rD   Ú
__reduce__Ô   s    z_FinalTypingBase.__reduce__)rA   rd   r@   rp   rU   rr   rh   rC   rC   )rZ   rD   rI   Å   s   rI   )rO   c                   sP   e Zd ZdZ‡ fdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
‡  ZS )rG   Ú__forward_arg__Ú__forward_code__Ú__forward_evaluated__Ú__forward_value__c                st   t ƒ j|ƒ t|tƒs$td|f ƒ‚yt|ddƒ}W n" tk
rV   td|f ƒ‚Y nX || _|| _d| _	d | _
d S )Nz,Forward reference must be a string -- got %rz<string>Úevalz1Forward reference must be an expression -- got %rF)rT   r^   rk   rl   rP   ÚcompileÚSyntaxErrorrs   rt   ru   rv   )r[   ÚargÚcode)rZ   rC   rD   r^   Þ   s    
z_ForwardRef.__init__c             C   sf   | j  s||k	r`|d kr*|d kr*i  }}n|d kr8|}n|d krD|}tt| j||ƒdƒ| _d| _ | jS )Nz*Forward references must evaluate to types.T)ru   Ú_type_checkrw   rt   rv   )r[   r_   r`   rC   rC   rD   ra   ì   s    
z_ForwardRef._eval_typec             C   s&   t |tƒstS | j|jko$| j|jkS )N)rk   rG   ÚNotImplementedrs   rv   )r[   ÚotherrC   rC   rD   Ú__eq__ú   s    
z_ForwardRef.__eq__c             C   s   t | j| jfƒS )N)Úhashrs   rv   )r[   rC   rC   rD   Ú__hash__   s    z_ForwardRef.__hash__c             C   s   t dƒ‚d S )Nz4Forward references cannot be used with isinstance().)rP   )r[   ÚobjrC   rC   rD   Ú__instancecheck__  s    z_ForwardRef.__instancecheck__c             C   s   t dƒ‚d S )Nz4Forward references cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   Ú__subclasscheck__  s    z_ForwardRef.__subclasscheck__c             C   s   d| j f S )Nz_ForwardRef(%r))rs   )r[   rC   rC   rD   rf   	  s    z_ForwardRef.__repr__)rs   rt   ru   rv   )rA   rd   r@   rp   r^   ra   r   r�   rƒ   r„   rf   rh   rC   rC   )rZ   rD   rG   Ø   s    rG   c               @   sH   e Zd ZdZdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dS )rF   rW   Útype_varÚ	impl_typeÚtype_checkerc             C   s   || _ || _|| _|| _d S )N)rW   r…   r†   r‡   )r[   rW   r…   r†   r‡   rC   rC   rD   r^     s    z_TypeAlias.__init__c             C   s   d| j t| jƒf S )Nz%s[%s])rW   rS   r…   )r[   rC   rC   rD   rf   ,  s    z_TypeAlias.__repr__c             C   s€   t | jtƒstd|  ƒ‚| jjrJt |tƒrJt|| jjƒsJtd|| jf ƒ‚t |tƒrj|| jk	rjtd|  ƒ‚| j| j|| j	| j
ƒS )Nz#%s cannot be further parameterized.z&%s is not a valid substitution for %s.z%s cannot be re-parameterized.)rk   r…   r   rP   Ú__constraints__rn   Ú
issubclassrZ   rW   r†   r‡   )r[   Z	parameterrC   rC   rD   Ú__getitem__/  s    
z_TypeAlias.__getitem__c             C   s&   t |tƒstS | j|jko$| j|jkS )N)rk   rF   r}   rW   r…   )r[   r~   rC   rC   rD   r   ;  s    
z_TypeAlias.__eq__c             C   s   t | j| jfƒS )N)r€   rW   r…   )r[   rC   rC   rD   r�   @  s    z_TypeAlias.__hash__c             C   s    t | jtƒstdƒ‚t || jƒS )Nz<Parameterized type aliases cannot be used with isinstance().)rk   r…   r   rP   r†   )r[   r‚   rC   rC   rD   rƒ   C  s    z_TypeAlias.__instancecheck__c             C   s    t | jtƒstdƒ‚t|| jƒS )Nz<Parameterized type aliases cannot be used with issubclass().)rk   r…   r   rP   r‰   r†   )r[   rV   rC   rC   rD   r„   I  s    z_TypeAlias.__subclasscheck__N)rW   r…   r†   r‡   )rA   rd   r@   rp   r^   rf   rŠ   r   r�   rƒ   r„   rC   rC   rC   rD   rF     s   	rF   c             C   s0   x*| D ]"}t |tƒst |tƒr|j|ƒ qW d S )N)rk   rN   rH   rc   )Útypesrb   ÚtrC   rC   rD   rc   P  s    
rc   c             C   s   g }t | |ƒ t|ƒS )N)rc   rm   )r‹   rb   rC   rC   rD   Ú
_type_varsV  s    
r�   c             C   s$   t | tƒst | tƒr | j||ƒS | S )N)rk   rN   rH   ra   )rŒ   r_   r`   rC   rC   rD   ra   \  s    ra   c             C   sª   | d krt d ƒS t| tƒr"t| ƒ} t| tƒr:t | ƒjdksTt| t tfƒ rft| ƒ rft|d| f  ƒ‚t | ƒjdkr‚t| dd ƒ sšt| t	ƒr¦| j
ttfkr¦td|  ƒ‚| S )NÚ	_ClassVarz Got %.100r.Ú_UnionÚ	_OptionalÚ
__origin__z&Plain %s is not valid as type argument)r�   r�   )rn   rk   rl   rG   rH   rA   ÚcallablerP   ÚgetattrrN   Ú_gorgr   Ú	_Protocol)rz   ÚmsgrC   rC   rD   r|   b  s    
r|   c             C   s`   t | tƒr:t | tƒ r:| jdkr(t| ƒS d| jt| ƒf S | dkrFdS t | tjƒrX| jS t| ƒS )NÚbuiltinsz%s.%s.z...)	rk   rn   rN   rd   rE   r‹   ÚFunctionTyperA   Úrepr)r‚   rC   rC   rD   rS   �  s    
rS   c               @   s    e Zd Zf Zdd„ Zdd„ ZdS )Ú_Anyc             C   s   t dƒ‚d S )Nz%Any cannot be used with isinstance().)rP   )r[   r‚   rC   rC   rD   rƒ   ¢  s    z_Any.__instancecheck__c             C   s   t dƒ‚d S )Nz%Any cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   r„   ¥  s    z_Any.__subclasscheck__N)rA   rd   r@   rp   rƒ   r„   rC   rC   rC   rD   rš   ”  s   rš   c               @   s    e Zd Zf Zdd„ Zdd„ ZdS )Ú	_NoReturnc             C   s   t dƒ‚d S )Nz*NoReturn cannot be used with isinstance().)rP   )r[   r‚   rC   rC   rD   rƒ   »  s    z_NoReturn.__instancecheck__c             C   s   t dƒ‚d S )Nz*NoReturn cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   r„   ¾  s    z_NoReturn.__subclasscheck__N)rA   rd   r@   rp   rƒ   r„   rC   rC   rC   rD   r›   ¬  s   r›   c                   sJ   e Zd ZdZddddœ‡ fd	d
„
Zdd„ Zdd„ Zdd„ Zdd„ Z‡  Z	S )r   rA   Ú	__bound__rˆ   Ú__covariant__Ú__contravariant__NF)ÚboundÚ	covariantÚcontravariantc               sª   t ƒ j|f|ž|||dœŽ || _|r2|r2tdƒ‚t|ƒ| _t|ƒ| _|rZ|d k	rZtdƒ‚|rrt|ƒdkrrtdƒ‚d‰ t	‡ fdd„|D ƒƒ| _
|r t|d	ƒ| _nd | _d S )
N)rŸ   r    r¡   z"Bivariant types are not supported.z-Constraints cannot be combined with bound=...rK   z"A single constraint is not allowedz:TypeVar(name, constraint, ...): constraints must be types.c             3   s   | ]}t |ˆ ƒV  qd S )N)r|   )Ú.0rŒ   )r–   rC   rD   ú	<genexpr>   s    z#TypeVar.__init__.<locals>.<genexpr>zBound must be a type.)rT   r^   rA   Ú
ValueErrorÚboolr�   rž   rP   rj   rm   rˆ   r|   rœ   )r[   rW   rŸ   r    r¡   Zconstraints)rZ   )r–   rD   r^   ò  s     

zTypeVar.__init__c             C   s   | |kr|j | ƒ d S )N)Úappend)r[   rb   rC   rC   rD   rc     s    zTypeVar._get_type_varsc             C   s&   | j rd}n| jrd}nd}|| j S )Nú+ú-ú~)r�   rž   rA   )r[   ÚprefixrC   rC   rD   rf   
  s    zTypeVar.__repr__c             C   s   t dƒ‚d S )Nz0Type variables cannot be used with isinstance().)rP   )r[   ÚinstancerC   rC   rD   rƒ     s    zTypeVar.__instancecheck__c             C   s   t dƒ‚d S )Nz0Type variables cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   r„     s    zTypeVar.__subclasscheck__)rA   rœ   rˆ   r�   rž   )
rA   rd   r@   rp   r^   rc   rf   rƒ   r„   rh   rC   rC   )rZ   rD   r   Å  s   * 	ÚTÚKTÚVTÚT_co)r    ÚV_coÚVT_coÚT_contra)r¡   c             C   sd   |d krg }t | dƒr0t| ttfƒr0| j||ƒS t| tƒr`x$t|ƒD ]\}}| |krD|| S qDW | S )NÚ
_subs_tree)Úhasattrrk   r   rH   r³   r   Ú	enumerate)rz   rb   r\   ÚiZtvarrC   rC   rD   Ú_replace_arg)  s    
r·   c       	      C   sœ   | j d kr| S | j }g }x|j d k	r6|j|ƒ |j }qW g }x | jD ]}|jt|||ƒƒ qDW x8|D ]0}g }x"|jD ]}|jt||j|ƒƒ qtW |}qdW |S )N)r‘   r¦   Ú__args__r·   Ú__parameters__)	rV   rb   r\   ZcurrentZ
orig_chainÚ	tree_argsrz   ZoclsZnew_tree_argsrC   rC   rD   r³   D  s     



r³   c                s  g }xn| D ]f}t |tƒr0|jtkr0|j|jƒ q
t |tƒrft|ƒdkrf|d tkrf|j|dd … ƒ q
|j|ƒ q
W t	|ƒ‰ tˆ ƒt|ƒk r¾g }x(|D ] }|ˆ kr–|j|ƒ ˆ j
|ƒ q–W |}t	|ƒ‰ x>|D ]6‰t ˆtƒsÜqÌt‡fdd„ˆ ˆh D ƒƒrÌˆ j
ˆƒ qÌW t‡ fdd„|D ƒƒS )Nr   rK   c             3   s6   | ].}t |tƒo|jd k	st |tƒo,tˆ |ƒV  qd S )N)rk   r   r‘   rn   r‰   )r¢   Zt2)Út1rC   rD   r£   †  s   
z'_remove_dups_flatten.<locals>.<genexpr>c             3   s   | ]}|ˆ kr|V  qd S )NrC   )r¢   rŒ   )Ú
all_paramsrC   rD   r£   ‹  s    )rk   r�   r‘   r   Úextendr¸   rm   rj   r¦   ÚsetÚremovern   Úany)Ú
parametersÚparamsÚpZ
new_paramsrŒ   rC   )r¼   r»   rD   Ú_remove_dups_flattene  s.    
"



rÄ   c             C   sX   | j stdt| ƒ ƒ‚t|ƒ}t| j ƒ}||krTtd||kr@dndt| ƒ||f ƒ‚d S )Nz%s is not a generic classz0Too %s parameters for %s; actual %s, expected %sZmanyZfew)r¹   rP   r™   rj   )rV   rÁ   ZalenZelenrC   rC   rD   Ú_check_genericŽ  s    
rÅ   c                s4   t jƒ ˆƒ‰ tjˆ jƒ t jˆƒ‡ ‡fdd„ƒ}|S )Nc                 s*   y
ˆ | |ŽS  t k
r   Y nX ˆ| |ŽS )N)rP   )r\   r]   )ÚcachedÚfuncrC   rD   Úinner¤  s
    
z_tp_cache.<locals>.inner)Ú	functoolsÚ	lru_cacheÚ	_cleanupsr¦   Úcache_clearÚwraps)rÇ   rÈ   rC   )rÆ   rÇ   rD   Ú	_tp_cacheœ  s    rÎ   c                   s†   e Zd ZdZdddœ‡ fdd	„Zd
d„ Zdd„ Z‡ fdd„Z‡ fdd„Ze	dd„ ƒZ
d dd„Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )!r�   r¹   r¸   r‘   Ú__tree_hash__NF)rO   c               sÄ   t ƒ j| ||f|žd|iŽ}|d krHd |_d |_d |_ttdƒƒ|_|S t|t	ƒsZt
dƒ‚|tkr~t|ƒ}t|ƒdkr~|d S t|ƒ|_||_||_|jƒ }t|t	ƒr¶tt|ƒƒ|_n
t|ƒ|_|S )NrO   r   zExpected parameters=<tuple>rK   r   )r   )rT   rU   r¹   r¸   r‘   r€   Ú	frozensetrÏ   rk   rm   rP   r   rÄ   rj   r�   r³   )rV   rÁ   ÚoriginrO   r\   r[   Z	subs_tree)rZ   rC   rD   rU   Ü  s*    



z_Union.__new__c                s^   | j d kr| S t‡ ‡fdd„| j D ƒƒ}t| jˆ ˆƒ}|| j krN|| jkrN| S | j||dd�S )Nc             3   s   | ]}t |ˆ ˆƒV  qd S )N)ra   )r¢   rŒ   )r_   r`   rC   rD   r£   ú  s    z$_Union._eval_type.<locals>.<genexpr>T)rO   )r¸   rm   ra   r‘   rZ   )r[   r_   r`   Úev_argsÚ	ev_originrC   )r_   r`   rD   ra   ÷  s    
z_Union._eval_typec             C   s   | j r| jrt| j|ƒ d S )N)r‘   r¹   rc   )r[   rb   rC   rC   rD   rc     s    z_Union._get_type_varsc                s<   | j d krtƒ jƒ S | jƒ }t|tƒs.t|ƒS |d j|ƒS )Nr   )r‘   rT   rf   r³   rk   rm   r™   Ú
_tree_repr)r[   Útree)rZ   rC   rD   rf     s    


z_Union.__repr__c                s`   g }xB|dd … D ]2}t |tƒs0|jt|ƒƒ q|j|d j|ƒƒ qW tƒ jƒ ddj|ƒ  S )NrK   r   z[%s]z, )rk   rm   r¦   rS   rÔ   rT   rf   rQ   )r[   rÕ   Úarg_listrz   )rZ   rC   rD   rÔ     s    
z_Union._tree_reprc                sl   |f krt dƒ‚t|tƒs |f}| jd kr0d‰ nd‰ t‡ fdd„|D ƒƒ}| tk	r\t| |ƒ | j|| dd�S )Nz Cannot take a Union of no types.z)Union[arg, ...]: each arg must be a type.z*Parameters to generic types must be types.c             3   s   | ]}t |ˆ ƒV  qd S )N)r|   )r¢   rÃ   )r–   rC   rD   r£      s    z%_Union.__getitem__.<locals>.<genexpr>T)rÑ   rO   )rP   rk   rm   r‘   r   rÅ   rZ   )r[   rÁ   rC   )r–   rD   rŠ     s    


z_Union.__getitem__c             C   s>   | t krt S t| ||ƒ}t|ƒ}t|ƒdkr4|d S t f| S )NrK   r   )r   r³   rÄ   rj   )r[   rb   r\   rº   rC   rC   rD   r³   %  s    z_Union._subs_treec             C   s6   t |tƒr| j|jkS | tk	r*| jƒ |kS | |kS d S )N)rk   r�   rÏ   r   r³   )r[   r~   rC   rC   rD   r   .  s
    
z_Union.__eq__c             C   s   | j S )N)rÏ   )r[   rC   rC   rD   r�   6  s    z_Union.__hash__c             C   s   t dƒ‚d S )Nz(Unions cannot be used with isinstance().)rP   )r[   r‚   rC   rC   rD   rƒ   9  s    z_Union.__instancecheck__c             C   s   t dƒ‚d S )Nz(Unions cannot be used with issubclass().)rP   )r[   rV   rC   rC   rD   r„   <  s    z_Union.__subclasscheck__)r¹   r¸   r‘   rÏ   )NN)NN)rA   rd   r@   rp   rU   ra   rc   rf   rÔ   rÎ   rŠ   r³   r   r�   rƒ   r„   rh   rC   rC   )rZ   rD   r�   ®  s   ,
	
	r�   c               @   s   e Zd Zf Zedd„ ƒZdS )r�   c             C   s   t |dƒ}t|td ƒf S )Nz#Optional[t] requires a single type.)r|   r   rn   )r[   rz   rC   rC   rD   rŠ   K  s    
z_Optional.__getitem__N)rA   rd   r@   rp   rÎ   rŠ   rC   rC   rC   rD   r�   C  s   r�   c             C   sJ   t }x@t| jd d… ƒD ]*\}}t|tƒr|jtkr| j|d  }qW |S )NrK   éÿÿÿÿ)Úobjectrµ   Ú__mro__rk   r   r”   r   )rV   Znext_in_mror¶   ÚcrC   rC   rD   Ú_next_in_mroT  s
    rÛ   c                s,   t ˆ jtjƒr‡ fdd„}n‡ fdd„}|S )Nc                sZ   ˆ j j| ƒ}|tk	r|S ˆ j | jkr(dS x,ˆ j jƒ D ]}t|tƒrDq4t| |ƒr4dS q4W tS )NT)Ú	__extra__Ú__subclasshook__r}   rÙ   Ú__subclasses__rk   r   r‰   )ÚsubclassÚresÚscls)rV   rC   rD   Ú__extrahook__k  s    

z)_make_subclasshook.<locals>.__extrahook__c                s   ˆ j rt| ˆ j ƒrdS tS )NT)rÜ   r‰   r}   )rß   )rV   rC   rD   râ   y  s    )rk   rÜ   ÚabcÚABCMeta)rV   râ   rC   )rV   rD   Ú_make_subclasshookb  s    rå   c             C   s2   t | ƒ}d|kr.x|d D ]}|j|d ƒ qW |S )Nrp   )ÚdictÚpop)ZdctZ	dict_copyZslotrC   rC   rD   Ú_no_slots_copy€  s
    rè   c                   sÀ   e Zd Zd ‡ fdd„	Zedd„ ƒZejdd„ ƒZedd„ ƒZejd	d„ ƒZd
d„ Zdd„ Z	‡ fdd„Z
‡ fdd„Zd!dd„Zdd„ Zdd„ Zedd„ ƒZ‡ fdd„Zdd„ Z‡ fdd„Z‡  ZS )"r   Nc	                sX  |d k	r
n²t |ƒ}d }	xF|D ]>}
|
tkr0tdƒ‚t|
tƒr|
jtkr|	d k	rTtdƒ‚|
j}	qW |	d krl|}	nPt|ƒ}t|	ƒ‰ |ˆ ks¸tddj‡ fdd„|D ƒƒdjdd„ |	D ƒƒf ƒ‚|	}|}|d k	rèt	|ƒt
jkrè||krè|f| }tdd„ |D ƒƒ}td	d„ |D ƒƒ�r td
d„ |D ƒƒ}|j|||�s2d n|jdœƒ tƒ j| |||dd�}tt|ƒjd|�sj|n|jƒ ||_|�r�tdd„ |D ƒƒnd |_t|ƒ|_|d k�r°||_d|k�rÀ|�sÔt|jddƒdk�rÞt|ƒ|_t|t
jƒ�rþ|j|_|j|_n|d k	�r|j|_|j|_|�r2t|dƒ�r2|j|_|�rDt|jƒ ƒntt|ƒj ƒ |_!|S )Nz!Cannot inherit from plain Genericz0Cannot inherit from Generic[...] multiple types.z6Some type variables (%s) are not listed in Generic[%s]z, c             3   s   | ]}|ˆ krt |ƒV  qd S )N)rl   )r¢   rŒ   )ÚgvarsetrC   rD   r£   Ä  s    z&GenericMeta.__new__.<locals>.<genexpr>c             s   s   | ]}t |ƒV  qd S )N)rl   )r¢   ÚgrC   rC   rD   r£   Å  s    c             s   s"   | ]}t |tƒr|jn|V  qd S )N)rk   r   r”   )r¢   ÚbrC   rC   rD   r£   Ë  s    c             s   s    | ]}t |tƒo|tk	V  qd S )N)rk   r   r   )r¢   rë   rC   rC   rD   r£   Î  s    c             s   s   | ]}|t k	r|V  qd S )N)r   )r¢   rë   rC   rC   rD   r£   Ï  s    )r‘   rÜ   r”   T)rO   r”   c             s   s*   | ]"}|t krd n|tkrf n|V  qdS ).N)Ú_TypingEllipsisÚ_TypingEmpty)r¢   ÚarC   rC   rD   r£   Ø  s   rÝ   rA   Ú râ   r@   )"r�   r   rP   rk   r   r‘   r¹   r¾   rQ   rn   rã   rä   rm   rÀ   Úupdater”   rT   rU   Ú__setattr__r¸   rÛ   Ú__next_in_mro__Ú__orig_bases__r“   rÝ   rå   Ú_abc_registryÚ
_abc_cacher´   r@   r€   r³   r�   rÏ   )rV   rW   rX   rY   rb   r\   rÑ   ÚextraÚ
orig_basesZgvarsÚbaseZtvarsetZinitial_basesr[   )rZ   )ré   rD   rU   š  sj    









zGenericMeta.__new__c             C   s   t | jtjƒr| jjS | jjS )N)rk   rÜ   rã   rä   Ú_abc_negative_cacher”   Ú_abc_generic_negative_cache)r[   rC   rC   rD   rù   û  s    zGenericMeta._abc_negative_cachec             C   s,   | j d kr(t| jtjƒr"|| j_n|| _d S )N)r‘   rk   rÜ   rã   rä   rù   rú   )r[   ÚvaluerC   rC   rD   rù     s    

c             C   s   t | jtjƒr| jjS | jjS )N)rk   rÜ   rã   rä   Ú_abc_negative_cache_versionr”   Ú#_abc_generic_negative_cache_version)r[   rC   rC   rD   rü   	  s    z'GenericMeta._abc_negative_cache_versionc             C   s,   | j d kr(t| jtjƒr"|| j_n|| _d S )N)r‘   rk   rÜ   rã   rä   rü   rý   )r[   rû   rC   rC   rD   rü     s    

c             C   s   | j r| jrt| j|ƒ d S )N)r‘   r¹   rc   )r[   rb   rC   rC   rD   rc     s    zGenericMeta._get_type_varsc          
      sˆ   | j r| j jˆ ˆƒnd }| jr8t‡ ‡fdd„| jD ƒƒnd }|| j krT|| jkrT| S | j| j| jt| jƒ|rtt	|ƒnd ||| j
| jd�S )Nc             3   s   | ]}t |ˆ ˆƒV  qd S )N)ra   )r¢   rî   )r_   r`   rC   rD   r£     s    z)GenericMeta._eval_type.<locals>.<genexpr>)rb   r\   rÑ   rö   r÷   )r‘   ra   r¸   rm   rZ   rA   Ú	__bases__rè   Ú__dict__r�   rÜ   ró   )r[   r_   r`   rÓ   rÒ   rC   )r_   r`   rD   ra     s    $zGenericMeta._eval_typec                s"   | j d krtƒ jƒ S | j| jƒ ƒS )N)r‘   rT   rf   rÔ   r³   )r[   )rZ   rC   rD   rf   +  s    

zGenericMeta.__repr__c                st   g }xV|dd … D ]F}|f kr*|j dƒ qt|tƒsD|j t|ƒƒ q|j |d j|ƒƒ qW tƒ jƒ ddj|ƒ  S )NrK   z()r   z[%s]z, )r¦   rk   rm   rS   rÔ   rT   rf   rQ   )r[   rÕ   rÖ   rz   )rZ   rC   rD   rÔ   0  s    
zGenericMeta._tree_reprc             C   s*   | j d kr| S t| ||ƒ}| jft|ƒ S )N)r‘   r³   r”   rm   )r[   rb   r\   rº   rC   rC   rD   r³   ;  s    
zGenericMeta._subs_treec             C   s6   t |tƒstS | jd ks"|jd kr*| |kS | j|jkS )N)rk   r   r}   r‘   rÏ   )r[   r~   rC   rC   rD   r   A  s
    
zGenericMeta.__eq__c             C   s   | j S )N)rÏ   )r[   rC   rC   rD   r�   H  s    zGenericMeta.__hash__c          
      s6  t |tƒs|f}| r0| jtk	r0tdt| ƒ ƒ‚d‰ t‡ fdd„|D ƒƒ}| tkr’tdd„ |D ƒƒsltdƒ‚tt	|ƒƒt|ƒkrˆtdƒ‚|}|}nb| tt
fkr¬t|ƒ}|}nH| tkr¾|}|}n6| jttfkrÞtdt| ƒ ƒ‚nt| |ƒ t|ƒ}|}| jd k�r| fnf }| j| j|| j t| jƒ||| | j| jd	�S )
Nz)Parameter list to %s[...] cannot be emptyz*Parameters to generic types must be types.c             3   s   | ]}t |ˆ ƒV  qd S )N)r|   )r¢   rÃ   )r–   rC   rD   r£   S  s    z*GenericMeta.__getitem__.<locals>.<genexpr>c             s   s   | ]}t |tƒV  qd S )N)rk   r   )r¢   rÃ   rC   rC   rD   r£   V  s    z5Parameters to Generic[...] must all be type variablesz-Parameters to Generic[...] must all be uniquez'Cannot subscript already-subscripted %s)rb   r\   rÑ   rö   r÷   )rk   rm   r”   r   rP   rE   r   Úallrj   r¾   r   r�   r•   r‘   r™   rÅ   rZ   rA   rþ   rè   rÿ   rÜ   ró   )r[   rÂ   rb   r\   ZprependrC   )r–   rD   rŠ   K  sJ    

zGenericMeta.__getitem__c                sJ   | j d k	r*tjdƒjd dkr&tdƒ‚dS | tkr>td|  ƒ‚tƒ j|ƒS )	NrK   rA   rã   rÉ   zCParameterized generics cannot be used with class or instance checksFz5Class %r cannot be used with class or instance checks)rã   rÉ   )r‘   r>   Ú	_getframeÚ	f_globalsrP   r   rT   r„   )r[   rV   )rZ   rC   rD   r„   y  s    
zGenericMeta.__subclasscheck__c             C   s   t |j| ƒS )N)r‰   rZ   )r[   r«   rC   rC   rD   rƒ   „  s    zGenericMeta.__instancecheck__c                sT   |j dƒr|jdƒs(|j dƒs(| jd kr<tt| ƒj||ƒ ntt| jƒj||ƒ d S )NÚ__Ú_abc_)rL   Úendswithr”   rT   r   rñ   )r[   Úattrrû   )rZ   rC   rD   rñ   Œ  s
    

zGenericMeta.__setattr__)NNNNN)NN)rA   rd   r@   rU   Úpropertyrù   Úsetterrü   rc   ra   rf   rÔ   r³   r   r�   rÎ   rŠ   r„   rƒ   rñ   rh   rC   rC   )rZ   rD   r   ‹  s    `
.c             O   s°   |j d kr@| jtjkr,|jtjk	r,| j|ƒS | j|f|ž|ŽS nl|j}| jtjkrj|jtjk	rj| j|ƒ}n| j|f|ž|Ž}y
||_W n tk
rš   Y nX |j||Ž |S d S )N)r‘   rU   rØ   r^   r”   Z__orig_class__ÚAttributeError)Zbase_clsrV   r\   r]   rÑ   r‚   rC   rC   rD   Ú_generic_newœ  s     


r
  c               @   s   e Zd Zf Zdd„ ZdS )r   c             O   s&   | j tkrtdƒ‚t| j| f|ž|ŽS )NzHType Generic cannot be instantiated; it can be used only as a base class)r”   r   rP   r
  rò   )rV   r\   r]   rC   rC   rD   rU   Ë  s    
zGeneric.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r   ´  s   )rq   c               @   s   e Zd ZdS )rí   N)rA   rd   r@   rC   rC   rC   rD   rí   Ò  s   rí   c               @   s   e Zd ZdS )rì   N)rA   rd   r@   rC   rC   rC   rD   rì   Ù  s   rì   c                   s0   e Zd Ze‡ fdd„ƒZdd„ Zdd„ Z‡  ZS )Ú	TupleMetac                s¦   | j d k	s| jtk	r tƒ j|ƒS |f kr6tƒ jtfƒS t|tƒsF|f}t|ƒdkr€|d dkr€d‰ t	|d ˆ ƒ}tƒ j|t
fƒS d‰ t‡ fdd„|D ƒƒ}tƒ j|ƒS )	Nr   rK   .z Tuple[t, ...]: t must be a type.r   z*Tuple[t0, t1, ...]: each t must be a type.c             3   s   | ]}t |ˆ ƒV  qd S )N)r|   )r¢   rÃ   )r–   rC   rD   r£   ï  s    z(TupleMeta.__getitem__.<locals>.<genexpr>)r‘   r”   r   rT   rŠ   rí   rk   rm   rj   r|   rì   )r[   rÁ   rÃ   )rZ   )r–   rD   rŠ   à  s    
zTupleMeta.__getitem__c             C   s    | j d krt|tƒS tdƒ‚d S )Nz5Parameterized Tuple cannot be used with isinstance().)r¸   rk   rm   rP   )r[   r‚   rC   rC   rD   rƒ   ò  s    

zTupleMeta.__instancecheck__c             C   s    | j d krt|tƒS tdƒ‚d S )Nz5Parameterized Tuple cannot be used with issubclass().)r¸   r‰   rm   rP   )r[   rV   rC   rC   rD   r„   ø  s    

zTupleMeta.__subclasscheck__)rA   rd   r@   rÎ   rŠ   rƒ   r„   rh   rC   rC   )rZ   rD   r  Ý  s   r  c               @   s   e Zd Zf Zdd„ ZdS )r   c             O   s$   | j tkrtdƒ‚tt| f|ž|ŽS )Nz6Type Tuple cannot be instantiated; use tuple() instead)r”   r   rP   r
  rm   )rV   r\   r]   rC   rC   rD   rU     s    
zTuple.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r   ÿ  s   
)rö   rq   c                   sD   e Zd Z‡ fdd„Z‡ fdd„Z‡ fdd„Ze‡ fdd„ƒZ‡  ZS )	ÚCallableMetac                s"   | j d krtƒ jƒ S | j| jƒ ƒS )N)r‘   rT   rf   rÔ   r³   )r[   )rZ   rC   rD   rf     s    

zCallableMeta.__repr__c                s¬   | j tk	rtƒ j|ƒS g }xB|dd … D ]2}t|tƒsF|jt|ƒƒ q(|j|d j|ƒƒ q(W |d dkr‚t|d ƒd|d   S t|d ƒddj	|d d… ƒ|d f  S )	NrK   r   z...z	[..., %s]z
[[%s], %s]z, r×   r×   )
r”   r   rT   rÔ   rk   rm   r¦   rS   r™   rQ   )r[   rÕ   rÖ   rz   )rZ   rC   rD   rÔ     s    


zCallableMeta._tree_reprc                sˆ   | j d k	s| jtk	r tƒ j|ƒS t|tƒ s8t|ƒdkr@tdƒ‚|\}}|t	krZt	|f}n$t|t
ƒsrtd|f ƒ‚t|ƒ|f}| j|ƒS )Nr   z6Callable must be used as Callable[[arg, ...], result].z8Callable[args, result]: args must be a list. Got %.100r.)r‘   r”   r   rT   rŠ   rk   rm   rj   rP   ÚEllipsisÚlistÚ__getitem_inner__)r[   rÁ   r\   Úresult)rZ   rC   rD   rŠ   *  s    


zCallableMeta.__getitem__c                s^   |\}}d‰ t |ˆ ƒ}|tkr.tƒ jt|fƒS d‰ t‡ fdd„|D ƒƒ}||f }tƒ j|ƒS )Nz.Callable[args, result]: result must be a type.z6Callable[[arg, ...], result]: each arg must be a type.c             3   s   | ]}t |ˆ ƒV  qd S )N)r|   )r¢   rz   )r–   rC   rD   r£   F  s    z1CallableMeta.__getitem_inner__.<locals>.<genexpr>)r|   r  rT   rŠ   rì   rm   )r[   rÁ   r\   r  )rZ   )r–   rD   r  >  s    

zCallableMeta.__getitem_inner__)	rA   rd   r@   rf   rÔ   rŠ   rÎ   r  rh   rC   rC   )rZ   rD   r    s   r  c               @   s   e Zd Zf Zdd„ ZdS )r   c             O   s&   | j tkrtdƒ‚t| j| f|ž|ŽS )NzIType Callable cannot be instantiated; use a non-abstract subclass instead)r”   r   rP   r
  rò   )rV   r\   r]   rC   rC   rD   rU   X  s    
zCallable.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r   K  s   c                   sJ   e Zd ZdZddd„Zdd„ Zdd„ Z‡ fd	d
„Zdd„ Zdd„ Z	‡  Z
S )rŽ   Ú__type__Nc             K   s
   || _ d S )N)r  )r[   Útpr]   rC   rC   rD   r^   r  s    z_ClassVar.__init__c             C   sP   t | ƒ}| jd kr4|t|dj|jdd … ƒƒdd�S tdj|jdd … ƒƒ‚d S )Nz{} accepts only single type.rK   T)rO   z {} cannot be further subscripted)rn   r  r|   ÚformatrA   rP   )r[   ÚitemrV   rC   rC   rD   rŠ   u  s    
z_ClassVar.__getitem__c             C   s,   t | j||ƒ}|| jkr| S t| ƒ|dd�S )NT)rO   )ra   r  rn   )r[   r_   r`   Znew_tprC   rC   rD   ra   ~  s    
z_ClassVar._eval_typec                s,   t ƒ jƒ }| jd k	r(|djt| jƒƒ7 }|S )Nz[{}])rT   rf   r  r  rS   )r[   Úr)rZ   rC   rD   rf   „  s    

z_ClassVar.__repr__c             C   s   t t| ƒj| jfƒS )N)r€   rn   rA   r  )r[   rC   rC   rD   r�   Š  s    z_ClassVar.__hash__c             C   s,   t |tƒstS | jd k	r$| j|jkS | |kS )N)rk   rŽ   r}   r  )r[   r~   rC   rC   rD   r   �  s
    

z_ClassVar.__eq__)r  )N)rA   rd   r@   rp   r^   rŠ   ra   rf   r�   r   rh   rC   rC   )rZ   rD   rŽ   _  s   
	rŽ   c             C   s   |S )NrC   )ÚtypÚvalrC   rC   rD   r6   ˜  s    c       
      C   s�   y
| j }W n tk
r   i S X |j}|j}|d |… }| jp@f }| j}|rTt|ƒni }|t|ƒ }x&t||d … |ƒD ]\}}	|	||< qxW |S )N)	Ú__code__r	  Úco_argcountÚco_varnamesÚ__defaults__Ú__kwdefaults__ræ   rj   Úzip)
rÇ   r{   Z	pos_countZ	arg_namesÚdefaultsZ
kwdefaultsrà   Z
pos_offsetrW   rû   rC   rC   rD   Ú_get_defaults£  s    

r  c       
      C   s¨  t | dd ƒri S t| tƒr¬i }xˆt| jƒD ]z}|d krFtj|j j}n|}|jj	di ƒ}xJ|j
ƒ D ]>\}}|d krztd ƒ}t|tƒrŒt|ƒ}t|||ƒ}|||< qbW q*W |S |d krât| tjƒrÈ| j}nt | di ƒ}|d krî|}n|d krî|}t | dd ƒ}|d k�r"t| tƒ�ri S tdj| ƒƒ‚t| ƒ}	t|ƒ}xp|j
ƒ D ]d\}}|d k�rVtd ƒ}t|tƒ�rjt|ƒ}t|||ƒ}||	k�r–|	| d k�r–t| }|||< �q<W |S )NÚ__no_type_check__Ú__annotations__Ú__globals__z1{!r} is not a module, class, method, or function.)r“   rk   rn   ÚreversedrÙ   r>   Úmodulesrd   rÿ   ÚgetÚitemsrl   rG   ra   r‹   Ú
ModuleTypeÚ_allowed_typesrP   r  r  ræ   r   )
r‚   r_   r`   Zhintsrø   Zbase_globalsZannrW   rû   r  rC   rC   rD   r7   ¼  sV    



c             C   s    t | tƒr|| jjƒ }x0| jjƒ D ]"\}}|| j| f kr |j|ƒ q W x4|jƒ D ](}t |tj	ƒrfd|_
t |tƒrPt|ƒ qPW y
d| _
W n tk
rš   Y nX | S )NT)rk   rn   rÿ   Úcopyr&  rþ   rç   Úvaluesr‹   r˜   r   r9   rP   )rz   Z	arg_attrsr  r  r‚   rC   rC   rD   r9     s    	



c                s   t jˆ ƒ‡ fdd„ƒ}|S )Nc                 s   ˆ | |Ž}t |ƒ}|S )N)r9   )r\   r]   rÇ   )Ú	decoratorrC   rD   Úwrapped_decorator/  s    
z2no_type_check_decorator.<locals>.wrapped_decorator)rÉ   rÍ   )r+  r,  rC   )r+  rD   r:   (  s    c              O   s   t dƒ‚d S )Nz´You should not call an overloaded function. A series of @overload-decorated functions outside a stub module should always be followed by an implementation that is not @overload-ed.)ÚNotImplementedError)r\   r]   rC   rC   rD   Ú_overload_dummy8  s    r.  c             C   s   t S )N)r.  )rÇ   rC   rC   rD   r;   A  s    c                   s,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )Ú_ProtocolMetac                s"   t | jkrtƒ j|ƒS tdƒ‚d S )Nz+Protocols cannot be used with isinstance().)r•   rþ   rT   rƒ   rP   )r[   r‚   )rZ   rC   rD   rƒ   e  s    
z_ProtocolMeta.__instancecheck__c                sL   | j s
tS | tkrdS | jƒ }x(|D ] ‰ t‡ fdd„|jD ƒƒs$dS q$W dS )NTc             3   s   | ]}ˆ |j kV  qd S )N)rÿ   )r¢   Úd)r  rC   rD   r£   w  s    z2_ProtocolMeta.__subclasscheck__.<locals>.<genexpr>F)rg   r}   r•   Ú_get_protocol_attrsrÀ   rÙ   )r[   rV   ÚattrsrC   )r  rD   r„   j  s    
z_ProtocolMeta.__subclasscheck__c             C   s,  g }x.| j D ]$}t|ddƒr|jdkr|j|ƒ qW tƒ }� xê|D � ]à}xÚ|jjƒ D ]Ì}xÆ| j D ]&}||k	r`||jkr`t|ddƒ r`P q`W |jdƒ rT|dkrT|dkrT|dkrT|dkrT|dkrT|d	krT|d
krT|dkrT|dkrT|dkrT|dkrT|dkrT|dkrT|dkrT|dkrT|dkrT|j|ƒ qTW qBW |S )Nrg   Fr•   r  Ú__abstractmethods__r!  ri   r”   rÿ   r¸   rp   r1  rò   r¹   r‘   ró   rÜ   rÏ   rd   )	rÙ   r“   rA   r¦   r¾   rÿ   ÚkeysrL   Úadd)r[   Zprotocol_basesrÚ   r2  rø   r  rC   rC   rD   r1  {  s<    z!_ProtocolMeta._get_protocol_attrs)rA   rd   r@   rƒ   r„   r1  rh   rC   rC   )rZ   rD   r/  ^  s   r/  c               @   s   e Zd Zf ZdZdS )r•   TN)rA   rd   r@   rp   rg   rC   rC   rC   rD   r•   ¢  s   r•   Ú	Awaitablec               @   s   e Zd Zf ZdS )r6  N)rA   rd   r@   rp   rC   rC   rC   rD   r6  ¶  s   )rö   Ú	Coroutinec               @   s   e Zd Zf ZdS )r7  N)rA   rd   r@   rp   rC   rC   rC   rD   r7  ½  s   ÚAsyncIterablec               @   s   e Zd Zf ZdS )r8  N)rA   rd   r@   rp   rC   rC   rC   rD   r8  Æ  s   c               @   s   e Zd Zf ZdS )ÚAsyncIteratorN)rA   rd   r@   rp   rC   rC   rC   rD   r9  É  s   r9  c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   Ñ  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   Õ  s   c               @   s"   e Zd Zf Zeedœdd„ƒZdS )r*   )Úreturnc             C   s   d S )NrC   )r[   rC   rC   rD   Ú__int__Ü  s    zSupportsInt.__int__N)rA   rd   r@   rp   r   Úintr;  rC   rC   rC   rD   r*   Ù  s   c               @   s"   e Zd Zf Zeedœdd„ƒZdS )r)   )r:  c             C   s   d S )NrC   )r[   rC   rC   rD   Ú	__float__ä  s    zSupportsFloat.__float__N)rA   rd   r@   rp   r   Úfloatr=  rC   rC   rC   rD   r)   á  s   c               @   s"   e Zd Zf Zeedœdd„ƒZdS )r(   )r:  c             C   s   d S )NrC   )r[   rC   rC   rD   Ú__complex__ì  s    zSupportsComplex.__complex__N)rA   rd   r@   rp   r   Úcomplexr?  rC   rC   rC   rD   r(   é  s   c               @   s"   e Zd Zf Zeedœdd„ƒZdS )r'   )r:  c             C   s   d S )NrC   )r[   rC   rC   rD   Ú	__bytes__ô  s    zSupportsBytes.__bytes__N)rA   rd   r@   rp   r   ÚbytesrA  rC   rC   rC   rD   r'   ñ  s   c               @   s"   e Zd Zf Zeedœdd„ƒZdS )r&   )r:  c             C   s   d S )NrC   )r[   rC   rC   rD   Ú__abs__ü  s    zSupportsAbs.__abs__N)rA   rd   r@   rp   r   r¯   rC  rC   rC   rC   rD   r&   ù  s   c               @   s&   e Zd Zf Zedeedœdd„ƒZdS )r+   r   )Úndigitsr:  c             C   s   d S )NrC   )r[   rD  rC   rC   rD   Ú	__round__  s    zSupportsRound.__round__N)r   )rA   rd   r@   rp   r   r<  r¯   rE  rC   rC   rC   rD   r+     s   c               @   s   e Zd Zf ZdS )r%   N)rA   rd   r@   rp   rC   rC   rC   rD   r%   
  s   c               @   s"   e Zd Zf Zeddœdd„ƒZdS )r%   zIterator[T_co])r:  c             C   s   d S )NrC   )r[   rC   rC   rD   Ú__reversed__  s    zReversible.__reversed__N)rA   rd   r@   rp   r   rF  rC   rC   rC   rD   r%     s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r     s   Ú
Collectionc               @   s   e Zd Zf ZdS )rG  N)rA   rd   r@   rp   rC   rC   rC   rD   rG    s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   '  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   +  s   c               @   s   e Zd Zf ZdS )r!   N)rA   rd   r@   rp   rC   rC   rC   rD   r!   0  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   6  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   :  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   ?  s   c               @   s   e Zd Zf ZdS )r"   N)rA   rd   r@   rp   rC   rC   rC   rD   r"   E  s   c               @   s   e Zd Zf ZdS )r"   N)rA   rd   r@   rp   rC   rC   rC   rD   r"   I  s   c               @   s   e Zd Zf ZdS )r"   N)rA   rd   r@   rp   rC   rC   rC   rD   r"   M  s   c               @   s   e Zd Zf ZdS )r    N)rA   rd   r@   rp   rC   rC   rC   rD   r    R  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   V  s   c               @   s   e Zd Zf Zdd„ ZdS )r0   c             O   s$   | j tkrtdƒ‚tt| f|ž|ŽS )Nz4Type List cannot be instantiated; use list() instead)r”   r0   rP   r
  r  )rV   r\   r]   rC   rC   rD   rU   ^  s    
zList.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r0   Z  s   c               @   s   e Zd Zf Zdd„ ZdS )r-   c             O   s*   | j tkrtj||ŽS ttj| f|ž|ŽS )N)r”   r-   ÚcollectionsÚdequer
  )rV   r\   r]   rC   rC   rD   rU   i  s    
zDeque.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r-   e  s   c               @   s   e Zd Zf Zdd„ ZdS )r1   c             O   s$   | j tkrtdƒ‚tt| f|ž|ŽS )Nz2Type Set cannot be instantiated; use set() instead)r”   r1   rP   r
  r¾   )rV   r\   r]   rC   rC   rD   rU   s  s    
zSet.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r1   o  s   c               @   s   e Zd Zf Zdd„ ZdS )r2   c             O   s$   | j tkrtdƒ‚tt| f|ž|ŽS )Nz>Type FrozenSet cannot be instantiated; use frozenset() instead)r”   r2   rP   r
  rÐ   )rV   r\   r]   rC   rC   rD   rU   }  s    
zFrozenSet.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r2   z  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   „  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   ˆ  s   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   �  s   c               @   s   e Zd Zf ZdS )r$   N)rA   rd   r@   rp   rC   rC   rC   rD   r$   ”  s   ÚAbstractContextManagerc               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   ™  s   c               @   s2   e Zd Zf Zdd„ Zejdd„ ƒZedd„ ƒZ	dS )r   c             C   s   | S )NrC   )r[   rC   rC   rD   Ú	__enter__Ÿ  s    zContextManager.__enter__c             C   s   d S )NrC   )r[   Úexc_typeÚ	exc_valueÚ	tracebackrC   rC   rD   Ú__exit__¢  s    zContextManager.__exit__c             C   s8   | t kr4tdd„ |jD ƒƒr4tdd„ |jD ƒƒr4dS tS )Nc             s   s   | ]}d |j kV  qdS )rK  N)rÿ   )r¢   ÚBrC   rC   rD   r£   ®  s    z2ContextManager.__subclasshook__.<locals>.<genexpr>c             s   s   | ]}d |j kV  qdS )rO  N)rÿ   )r¢   rP  rC   rC   rD   r£   ¯  s    T)r   rÀ   rÙ   r}   )rV   ÚCrC   rC   rD   rÝ   ¦  s
    zContextManager.__subclasshook__N)
rA   rd   r@   rp   rK  rã   r   rO  ÚclassmethodrÝ   rC   rC   rC   rD   r   œ  s   ÚAbstractAsyncContextManagerc               @   s   e Zd Zf ZdS )ÚAsyncContextManagerN)rA   rd   r@   rp   rC   rC   rC   rD   rT  µ  s   rT  é   a®  
class AsyncContextManager(Generic[T_co]):
    __slots__ = ()

    async def __aenter__(self):
        return self

    @abc.abstractmethod
    async def __aexit__(self, exc_type, exc_value, traceback):
        return None

    @classmethod
    def __subclasshook__(cls, C):
        if cls is AsyncContextManager:
            if sys.version_info[:2] >= (3, 6):
                return _collections_abc._check_methods(C, "__aenter__", "__aexit__")
            if (any("__aenter__" in B.__dict__ for B in C.__mro__) and
                    any("__aexit__" in B.__dict__ for B in C.__mro__)):
                return True
        return NotImplemented

__all__.append('AsyncContextManager')
c               @   s   e Zd Zf Zdd„ ZdS )r.   c             O   s$   | j tkrtdƒ‚tt| f|ž|ŽS )Nz4Type Dict cannot be instantiated; use dict() instead)r”   r.   rP   r
  ræ   )rV   r\   r]   rC   rC   rD   rU   Ø  s    
zDict.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r.   Ô  s   c               @   s   e Zd Zf Zdd„ ZdS )r/   c             O   s*   | j tkrtj||ŽS ttj| f|ž|ŽS )N)r”   r/   rH  Údefaultdictr
  )rV   r\   r]   rC   rC   rD   rU   ä  s    
zDefaultDict.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r/   ß  s   c               @   s   e Zd Zf Zdd„ ZdS )r,   c             O   s*   | j tkrtj||ŽS ttj| f|ž|ŽS )N)r”   r,   rH  r
  )rV   r\   r]   rC   rC   rD   rU   î  s    
zCounter.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r,   ê  s   ÚChainMapc               @   s   e Zd Zf Zdd„ ZdS )rW  c             O   s*   | j tkrtj||ŽS ttj| f|ž|ŽS )N)r”   rW  rH  r
  )rV   r\   r]   rC   rC   rD   rU   ý  s    
zChainMap.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   rW  ø  s   c               @   s   e Zd Zf Zdd„ ZdS )r4   c             O   s$   | j tkrtdƒ‚tt| f|ž|ŽS )Nz@Type Generator cannot be instantiated; create a subclass instead)r”   r4   rP   r
  Ú_G_base)rV   r\   r]   rC   rC   rD   rU     s    
zGenerator.__new__N)rA   rd   r@   rp   rU   rC   rC   rC   rD   r4     s   ÚAsyncGeneratorc               @   s   e Zd Zf ZdS )rY  N)rA   rd   r@   rp   rC   rC   rC   rD   rY    s   ÚCT_co)r    rŸ   c               @   s   e Zd Zf ZdS )r   N)rA   rd   r@   rp   rC   rC   rC   rD   r   $  s   c                sv   d‰ ‡ fdd„|D ƒ}t j| dd„ |D ƒƒ}t j|ƒ |_|_ytjdƒjjddƒ|_	W n t
tfk
rp   Y nX |S )NzDNamedTuple('Name', [(f0, t0), (f1, t1), ...]); each t must be a typec                s   g | ]\}}|t |ˆ ƒf‘qS rC   )r|   )r¢   ÚnrŒ   )r–   rC   rD   ú
<listcomp>A  s    z!_make_nmtuple.<locals>.<listcomp>c             S   s   g | ]\}}|‘qS rC   rC   )r¢   r[  rŒ   rC   rC   rD   r\  B  s    r   rA   Ú__main__)rH  Ú
namedtupleÚOrderedDictr!  Ú_field_typesr>   r  r  r%  rd   r	  r¤   )rW   r‹   Únm_tplrC   )r–   rD   Ú_make_nmtuple?  s    rb  rU   r^   rp   Ú__getnewargs__Ú_fieldsÚ_field_defaultsr`  Ú_makeÚ_replaceÚ_asdictÚ_sourcerd   rA   r@   r!  c                   s   e Zd Z‡ fdd„Z‡  ZS )ÚNamedTupleMetac                s  |j ddƒrtƒ j| |||ƒS ts*tdƒ‚|j di ƒ}t||jƒ ƒ}g }i }xP|D ]H}||krz|| }	|j|	ƒ |	||< qR|rRtdj|dj	|j
ƒ ƒd�ƒ‚qRW tj|ƒ|j_t|ƒ|j_||_xD|D ]<}
|
tkrÞtd|
 ƒ‚qÄ|
tkoî|
|jkrÄt||
||
 ƒ qÄW |S )	NrO   Fz<Class syntax for NamedTuple is only supported in Python 3.6+r!  zXNon-default namedtuple field {field_name} cannot follow default field(s) {default_names}z, )Ú
field_nameZdefault_namesz&Cannot overwrite NamedTuple attribute )r%  rT   rU   Ú_PY36rP   rb  r&  r¦   r  rQ   r4  rH  r_  r!  rm   r  re  Ú_prohibitedr	  Ú_specialrd  Úsetattr)rV   ÚtypenamerX   Únsr‹   ra  r  Zdefaults_dictrk  Zdefault_valueÚkey)rZ   rC   rD   rU   Y  s4    



zNamedTupleMeta.__new__)rA   rd   r@   rU   rh   rC   rC   )rZ   rD   rj  W  s   rj  c               @   s   e Zd ZdZddd„ZdS )r3   TNc             K   s:   |rt  rtdƒ‚|d kr$|jƒ }n|r0tdƒ‚t||ƒS )Nz>Keyword syntax for NamedTuple is only supported in Python 3.6+zIEither list of fields or keywords can be provided to NamedTuple, not both)rl  rP   r&  rb  )r[   rp  ZfieldsÚkwargsrC   rC   rD   rU   •  s    

zNamedTuple.__new__)N)rA   rd   r@   rO   rU   rC   rC   rC   rD   r3   y  s   c             C   s   dd„ }| |_ ||_|S )Nc             S   s   | S )NrC   )rB   rC   rC   rD   Únew_type´  s    zNewType.<locals>.new_type)rA   Z__supertype__)rW   r  rt  rC   rC   rD   r8   ¡  s    Fc               @   sš  e Zd Zf Zeedœdd„ƒZeedœdd„ƒZeddœdd„ƒZ	ee
dœd	d
„ƒZeedœdd„ƒZeddœdd„ƒZee
dœdd„ƒZed6eedœdd„ƒZee
dœdd„ƒZed8eedœdd„ƒZed:eee dœdd„ƒZed;eeedœdd „ƒZee
dœd!d"„ƒZeedœd#d$„ƒZed<eed%œd&d'„ƒZee
dœd(d)„ƒZeeed*œd+d,„ƒZeee dd-œd.d/„ƒZed0dœd1d2„ƒZeddœd3d4„ƒZdS )=ÚIO)r:  c             C   s   d S )NrC   )r[   rC   rC   rD   ÚmodeÓ  s    zIO.modec             C   s   d S )NrC   )r[   rC   rC   rD   rW   ×  s    zIO.nameNc             C   s   d S )NrC   )r[   rC   rC   rD   ÚcloseÛ  s    zIO.closec             C   s   d S )NrC   )r[   rC   rC   rD   Úclosedß  s    z	IO.closedc             C   s   d S )NrC   )r[   rC   rC   rD   Úfilenoã  s    z	IO.filenoc             C   s   d S )NrC   )r[   rC   rC   rD   Úflushç  s    zIO.flushc             C   s   d S )NrC   )r[   rC   rC   rD   Úisattyë  s    z	IO.isattyrK   )r[  r:  c             C   s   d S )NrC   )r[   r[  rC   rC   rD   Úreadï  s    zIO.readc             C   s   d S )NrC   )r[   rC   rC   rD   Úreadableó  s    zIO.readable)Úlimitr:  c             C   s   d S )NrC   )r[   r~  rC   rC   rD   Úreadline÷  s    zIO.readline)Úhintr:  c             C   s   d S )NrC   )r[   r€  rC   rC   rD   Ú	readlinesû  s    zIO.readlinesr   )ÚoffsetÚwhencer:  c             C   s   d S )NrC   )r[   r‚  rƒ  rC   rC   rD   Úseekÿ  s    zIO.seekc             C   s   d S )NrC   )r[   rC   rC   rD   Úseekable	  s    zIO.seekablec             C   s   d S )NrC   )r[   rC   rC   rD   Útell	  s    zIO.tell)Úsizer:  c             C   s   d S )NrC   )r[   r‡  rC   rC   rD   Útruncate	  s    zIO.truncatec             C   s   d S )NrC   )r[   rC   rC   rD   Úwritable	  s    zIO.writable)Úsr:  c             C   s   d S )NrC   )r[   rŠ  rC   rC   rD   Úwrite	  s    zIO.write)Úlinesr:  c             C   s   d S )NrC   )r[   rŒ  rC   rC   rD   Ú
writelines	  s    zIO.writelinesz
IO[AnyStr]c             C   s   d S )NrC   )r[   rC   rC   rD   rK  	  s    zIO.__enter__c             C   s   d S )NrC   )r[   rn   rû   rN  rC   rC   rD   rO  	  s    zIO.__exit__r×   )r×   r×   )r×   r×   )r×   )r   )N)rA   rd   r@   rp   r   rl   rv  rW   r   rw  r¥   rx  r<  ry  rz  r{  r5   r|  r}  r  r0   r�  r„  r…  r†  rˆ  r‰  r‹  r�  rK  rO  rC   rC   rC   rD   ru  Ä  sR   ru  c               @   s>   e Zd Zf Zeeeef edœdd„ƒZ	ed dœdd„ƒZ
dS )ÚBinaryIO)rŠ  r:  c             C   s   d S )NrC   )r[   rŠ  rC   rC   rD   r‹  )	  s    zBinaryIO.write)r:  c             C   s   d S )NrC   )r[   rC   rC   rD   rK  -	  s    zBinaryIO.__enter__N)rA   rd   r@   rp   r   r   rB  Ú	bytearrayr<  r‹  rK  rC   rC   rC   rD   rŽ  $	  s
   rŽ  c               @   s€   e Zd Zf Zeedœdd„ƒZeedœdd„ƒZee	e dœdd„ƒZ
eedœdd	„ƒZeedœd
d„ƒZed dœdd„ƒZdS )ÚTextIO)r:  c             C   s   d S )NrC   )r[   rC   rC   rD   Úbuffer7	  s    zTextIO.bufferc             C   s   d S )NrC   )r[   rC   rC   rD   Úencoding;	  s    zTextIO.encodingc             C   s   d S )NrC   )r[   rC   rC   rD   Úerrors?	  s    zTextIO.errorsc             C   s   d S )NrC   )r[   rC   rC   rD   Úline_bufferingC	  s    zTextIO.line_bufferingc             C   s   d S )NrC   )r[   rC   rC   rD   ÚnewlinesG	  s    zTextIO.newlinesc             C   s   d S )NrC   )r[   rC   rC   rD   rK  K	  s    zTextIO.__enter__N)rA   rd   r@   rp   r   rŽ  r‘  rl   r’  r   r“  r¥   r”  r
   r•  r   rK  rC   rC   rC   rD   r�  2	  s   r�  c               @   s"   e Zd ZdddgZeZeZeZdS )Úioru  r�  rŽ  N)rA   rd   r@   Ú__all__ru  r�  rŽ  rC   rC   rC   rD   r–  P	  s   
r–  z.ioÚPatternrï   c             C   s   | j S )N)Úpattern)rÃ   rC   rC   rD   Ú<lambda>^	  s    rš  ÚMatchc             C   s   | j jS )N)Úrer™  )ÚmrC   rC   rD   rš  `	  s    c               @   s   e Zd ZddgZeZeZdS )rœ  r˜  r›  N)rA   rd   r@   r—  r˜  r›  rC   rC   rC   rD   rœ  c	  s   rœ  z.re)r   r   )NN)NN)r   rU  )r   r   )rU   r^   rp   rc  rd  re  r`  rf  rg  rh  ri  )rd   rA   r@   r!  )¦rã   r   r   rH  Ú
contextlibrÉ   rœ  Z	stdlib_rer>   r‹   Úcollections.abcZcollections_abcÚImportErrorr?   Ú_collections_abcr   r   r	   rn   rØ   r^   Ú__str__rl   rQ   r—  rE   rM   rN   rH   rI   rG   rF   rc   r�   ra   r|   rS   rš   r
   r›   ZNoReturnr   r¬   r­   r®   r¯   r°   r±   r²   rB  r5   r·   r³   rÄ   rÅ   rË   rÎ   r�   r   r�   r   rÛ   rå   rè   rä   r   r   r
  rí   rì   r  rm   r   r  r   rŽ   r   r6   r  r˜   ÚBuiltinFunctionTypeÚ
MethodTyper'  r(  r7   r9   r:   r.  r;   r/  r•   r   r´   r6  r¦   r7  r8  r9  r   r   r*   r)   r(   r'   r&   r+   r%   r#   r   rG  r1   r   r!   r   r   r"   r    r<  r   r  r0   rI  r-   r¾   rÐ   r2   r   r   r   r$   rJ  r   rS  rT  Úexecræ   r.   rV  r/   r,   rW  r4   rX  ÚGeneratorTyperY  rZ  r   rb  rl  rm  rn  rj  r3   r8   r<   r=   ru  rŽ  r�  r–  rA   r$  rx   r˜  Úmatchr›  rC   rC   rC   rD   Ú<module>   sü  
*%5C

W
!) 

  "96


R	D








"









"





  "(`	



