+
    Dfj%                        R t ^ RIHtHtHtHtHtHtHtH	t	H
t
 ^ RIHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RI H!t!H"t"H#t#H$t$H%t%H&t& ^ R	I'H(t( ^ R
I)H*t* ^ RI+H,t, ]'       d   ^ RI-H.t. ]! ]#4       ! R R4      4       t/]0! ]].4      t1]0! ].4      ]]0! ].4      ]]1]/t2]]]]/t3R]R]/t4]R]R/t5]]]]]6]7]]]7]63,          ]]7]6]6]63,          3,          3,          ,          t8]! ]"4       ! R R4      4       t9]! ]"4       ! R R4      4       t:]! ]%4       ! R R4      4       t;]! ]&4       ! R R4      4       t<R# )z=
IPv6-aware hostname resolution.

@see: L{IHostnameResolver}
)	AF_INETAF_INET6	AF_UNSPEC
SOCK_DGRAMSOCK_STREAMAddressFamily
SocketKindgaierrorgetaddrinfo)	TYPE_CHECKINGCallableListNoReturnOptionalSequenceTupleTypeUnion)implementer)
_idnaBytes)IPv4AddressIPv6Address)Deferred)DNSLookupError)IAddressIHostnameResolverIHostResolutionIReactorThreadsIResolutionReceiverIResolverSimple)deferToThreadPool)Logger)nativeString)
ThreadPoolc                   H   a  ] tR t^9t o RtV 3R lR ltV 3R lR ltRtV tR# )HostResolutionz1
The in-progress resolution of a given hostname.
c                    < V ^8  d   QhRS[ /# )   name)str)format__classdict__s   "</usr/lib/python3/dist-packages/twisted/internet/_resolver.py__annotate__HostResolution.__annotate__?   s      S     c                    Wn         R# )z1
Create a L{HostResolution} with the given name.
Nr(   )selfr(   s   &&r,   __init__HostResolution.__init__?   s	     	r/   c                    < V ^8  d   QhRS[ /# r'   return)r   )r*   r+   s   "r,   r-   r.   E   s     $ $ $r/   c                    \        4       hN)NotImplementedErrorr2   s   &r,   cancelHostResolution.cancelE   s    !##r/   r1   N)	__name__
__module____qualname____firstlineno____doc__r3   r<   __static_attributes____classdictcell__r+   s   @r,   r%   r%   9   s      $ $r/   r%   TCPUDPc                   T   a  ] tR t^mt o RtR]3V 3R lR lltRV 3R lR lltRtV t	R# )	GAIResolverzd
L{IHostnameResolver} implementation that resolves hostnames by calling
L{getaddrinfo} in a thread.
Nc          
      r   < V ^8  d   QhRS[ RS[S[. R3,          ,          RS[S[S[S[S[.S[3,          /# )r'   reactorgetThreadPoolr#   r
   )r   r   r   r)   int_GETADDRINFO_RESULT)r*   r+   s   "r,   r-   GAIResolver.__annotate__t   sL     ( ( (  \)9 :;( sCc24GGH	(r/   c                L    Wn         Vf   VP                  MTV n        W0n        R# )a1  
Create a L{GAIResolver}.

@param reactor: the reactor to schedule result-delivery on
@type reactor: L{IReactorThreads}

@param getThreadPool: a function to retrieve the thread pool to use for
    scheduling name resolutions.  If not supplied, the use the given
    C{reactor}'s thread pool.
@type getThreadPool: 0-argument callable returning a
    L{twisted.python.threadpool.ThreadPool}

@param getaddrinfo: a reference to the L{getaddrinfo} to use - mainly
    parameterized for testing.
@type getaddrinfo: callable with the same signature as L{getaddrinfo}
N)_reactorrL   _getThreadPool_getaddrinfo)r2   rK   rL   r
   s   &&&&r,   r3   GAIResolver.__init__t   s)    ,  %2%:G!! 	 (r/   c                n   < V ^8  d   QhRS[ RS[RS[RS[S[S[S[,          ,          ,          RS[RS[/# r'   resolutionReceiverhostName
portNumberaddressTypestransportSemanticsr7   r   r)   rM   r   r   r   r   r   )r*   r+   s   "r,   r-   rO      sU     2 2/2 2 	2
 xX782  2 
2r/   c                :  a aaaaa S P                  4       p\        Vf   \        M
\        V4      ,          o\        V,          oR VVVV V3R llp\        S P                  Wg4      p\        S4      p	SP                  V	4       VP                  R V3R ll4       p
V	# )
See L{IHostnameResolver.resolveHostName}

@param resolutionReceiver: see interface

@param hostName: see interface

@param portNumber: see interface

@param addressTypes: see interface

@param transportSemantics: see interface

@return: see interface
c                $    V ^8  d   QhR\         /# r6   rN   )r*   s   "r,   r-   1GAIResolver.resolveHostName.<locals>.__annotate__   s     	 	( 	r/   c                  T   <  SP                  SSS S4      #   \         d    . u # i ; ir9   )rS   r	   )addressFamilyrX   rY   r2   
socketTypes   r,   get(GAIResolver.resolveHostName.<locals>.get   s:    ((j-   	s    ''c                (    V ^8  d   QhR\         RR/# )r'   resultr7   Nr`   )r*   s   "r,   r-   ra      s     	4 	4#6 	44 	4r/   c           	         < V  FA  w  rr4p\         V,          pSP                  V! \        P                  VR 4      .VO5!  4       KC  	  SP	                  4        R# )rF   N)	_afToTypeaddressResolved_socktypeToTypere   resolutionComplete)rh   familysocktypeproto	cannonamesockaddraddrTyperW   s   &      r,   deliverResults3GAIResolver.resolveHostName.<locals>.deliverResults   sV    @F<%H$V,"22_005AMHM AG
 113r/   )
rR   
_typesToAF_any	frozenset_transportToSocketr    rQ   r%   resolutionBeganaddCallback)r2   rW   rX   rY   rZ   r[   poolre   d
resolutionrt   rc   rd   s   ffff&&     @@r,   resolveHostNameGAIResolver.resolveHostName   s    . ""$" (Di.E
 ((:;
	 	 dmmT7#H-
**:6	
	4 
	4 r/   )rR   rS   rQ       NrF   )
r>   r?   r@   rA   rB   r
   r3   r   rC   rD   rE   s   @r,   rI   rI   m   s,      ?CKV	( (82 2 2r/   rI   c                   Z   a  ] tR t^t o Rt]! 4       tV 3R lR ltRV 3R lR lltRt	V t
R# )	SimpleResolverComplexifierz>
A converter from L{IResolverSimple} to L{IHostnameResolver}.
c                    < V ^8  d   QhRS[ /# )r'   simpleResolver)r   )r*   r+   s   "r,   r-   'SimpleResolverComplexifier.__annotate__   s     . . .r/   c                    Wn         R# )zG
Construct a L{SimpleResolverComplexifier} with an L{IResolverSimple}.
N_simpleResolver)r2   r   s   &&r,   r3   #SimpleResolverComplexifier.__init__   s
      .r/   Nc                n   < V ^8  d   QhRS[ RS[RS[RS[S[S[S[,          ,          ,          RS[RS[/# rV   r\   )r*   r+   s   "r,   r-   r      sU     9 9/9 9 	9
 xX789  9 
9r/   c                d  a aaa  SP                  R4      p\        V4      o\	        S4      pSP                  V4       S P                  P                  S4      P                  VV3R l4      P                  VV 3R l4      P                  V3R l4       V#   \         d    \        S4      p Li ; i)r^   asciic                 <   < SP                  \        R V S4      4      # )rF   )rk   r   )addressrY   rW   s   &r,   <lambda><SimpleResolverComplexifier.resolveHostName.<locals>.<lambda>   s     2 B Bw
;!r/   c                    < V P                  \        4      '       d   R # SP                  P                  RV SSP                  R7      # )Nz'while looking up {name} with {resolver})r(   resolver)checkr   _logfailurer   )errorrX   r2   s   &r,   r   r     sJ    ;;~.. # YY&&=!!11	 ' r/   c                 $   < SP                  4       # r9   )rm   )nothingrW   s   &r,   r   r   
  s    );)N)N)Pr/   )
encodeUnicodeEncodeErrorr   r"   r%   rz   r   getHostByNamer{   
addErrback)r2   rW   rX   rY   rZ   r[   hostName_bytesr~   s   ffff&&  r,   r   *SimpleResolverComplexifier.resolveHostName   s    0	2%__W5N  /#H-
**:6  ..x8[
 Z	 [PQ? " 	2
 (1N	2s   B B/.B/r   r   )r>   r?   r@   rA   rB   r!   r   r3   r   rC   rD   rE   s   @r,   r   r      s,      8D. .9 9 9r/   r   c                   l   a  ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltRt	V t
R# )FirstOneWinsi  zL
An L{IResolutionReceiver} which fires a L{Deferred} with its first result.
c                   < V ^8  d   QhRR/# )r'   deferredDeferred[str] )r*   r+   s   "r,   r-   FirstOneWins.__annotate__  s       r/   c                     Wn         RV n        R# )zX
@param deferred: The L{Deferred} to fire when the first resolution
    result arrives.
FN)	_deferred	_resolved)r2   r   s   &&r,   r3   FirstOneWins.__init__  s    
 "r/   c                $   < V ^8  d   QhRS[ RR/# )r'   r~   r7   N)r   )r*   r+   s   "r,   r-   r     s     & &/ &d &r/   c                    Wn         R# )zk
See L{IResolutionReceiver.resolutionBegan}

@param resolution: See L{IResolutionReceiver.resolutionBegan}
N)_resolution)r2   r~   s   &&r,   rz   FirstOneWins.resolutionBegan  s
     &r/   c                $   < V ^8  d   QhRS[ RR/# )r'   r   r7   N)r   )r*   r+   s   "r,   r-   r   %  s     . .x .D .r/   c                    V P                   '       d   R# RV n         \        V\        4      '       g   Q hV P                  P	                  VP
                  4       R# )zh
See L{IResolutionReceiver.addressResolved}

@param address: See L{IResolutionReceiver.addressResolved}
NT)r   
isinstancer   r   callbackhost)r2   r   s   &&r,   rk   FirstOneWins.addressResolved%  sB     >>> ';////-r/   c                   < V ^8  d   QhRR/# )r'   r7   Nr   )r*   r+   s   "r,   r-   r   3  s     F FD Fr/   c                    V P                   '       d   R# V P                  P                  \        V P                  P
                  4      4       R# )z/
See L{IResolutionReceiver.resolutionComplete}
N)r   r   errbackr   r   r(   r;   s   &r,   rm   FirstOneWins.resolutionComplete3  s3     >>>~d.>.>.C.CDEr/   )r   r   r   N)r>   r?   r@   rA   rB   r3   rz   rk   rm   rC   rD   rE   s   @r,   r   r     s4      & &. .F Fr/   r   c                   L   a  ] tR tRt o RtV 3R lR ltR	V 3R lR lltRtV tR# )
ComplexResolverSimplifieri<  z=
A converter from L{IHostnameResolver} to L{IResolverSimple}
c                    < V ^8  d   QhRS[ /# )r'   nameResolver)r   )r*   r+   s   "r,   r-   &ComplexResolverSimplifier.__annotate__B  s     * *%6 *r/   c                    Wn         R# )z|
Create a L{ComplexResolverSimplifier} with an L{IHostnameResolver}.

@param nameResolver: The L{IHostnameResolver} to use.
N_nameResolver)r2   r   s   &&r,   r3   "ComplexResolverSimplifier.__init__B  s
     *r/   c                :   < V ^8  d   QhRS[ RS[S[,          RR/# )r'   r(   timeoutsr7   r   )r)   r   rM   )r*   r+   s   "r,   r-   r   J  s&      # #  r/   c                r    \        4       pV P                  P                  \        V4      V^ \        .4       V# )z
See L{IResolverSimple.getHostByName}

@param name: see L{IResolverSimple.getHostByName}

@param timeouts: see L{IResolverSimple.getHostByName}

@return: see L{IResolverSimple.getHostByName}
)r   r   r   r   r   )r2   r(   r   rh   s   &&& r,   r   'ComplexResolverSimplifier.getHostByNameJ  s1     #+***<+?q;-Xr/   r   N)r   )	r>   r?   r@   rA   rB   r3   r   rC   rD   rE   s   @r,   r   r   <  s#     * *  r/   r   N)=rB   socketr   r   r   r   r   r   r   r	   r
   typingr   r   r   r   r   r   r   r   r   zope.interfacer   twisted.internet._idnar   twisted.internet.addressr   r   twisted.internet.deferr   twisted.internet.errorr   twisted.internet.interfacesr   r   r   r   r   r   twisted.internet.threadsr    twisted.loggerr!   twisted.python.compatr"   twisted.python.threadpoolr#   r%   rx   rw   rv   rj   ry   rl   rM   r)   rN   rI   r   r   r   r   r/   r,   <module>r      s  

 
 

 
 
 ' - = + 1  7 ! .4 _$ $ $  +{+, {mg{mh)
 [k	 
;	:   	eCHouS#sC%7889		;  T T  Tn F F  FR  !)F )F ")FX _  r/   