+
    j,i4                    t   R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
HtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ R	I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$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0 R.t1R R lt2R R lt3 ! R R4      t4 ! R R4      t5R R lt6 ! R R4      t7R# )z
Telnet server.
)annotationsN)get_running_loop)AnyCallable	CoroutineTextIOcast)create_app_sessionget_app)run_in_terminal)Size)AnyFormattedTextto_formatted_text)	PipeInputcreate_pipe_input)Vt100_Output)print_formatted_text)	BaseStyle
DummyStyle)logger)DOECHOIACLINEMODEMODENAWSSBSESENDSUPPRESS_GO_AHEADTTYPEWILLTelnetProtocolParserTelnetServerc                    V ^8  d   QhRRRR/# )   numberintreturnbytes )formats   "F/usr/lib/python3/dist-packages/prompt_toolkit/contrib/telnet/server.py__annotate__r-   ,   s      S U     c                    \        V 34      # N)r)   )r&   s   &r,   int2byter1   ,   s    &r.   c                    V ^8  d   QhRRRR/# )r%   
connectionsocket.socketr(   Noner*   )r+   s   "r,   r-   r-   0   s     8 8= 8T 8r.   c                0   \         P                  ! R 4       V P                  \        \        ,           \
        ,           4       V P                  \        \        ,           \        ,           4       V P                  \        \        ,           \
        ,           \        ,           \        ^ 4      ,           \        ,           \        ,           4       V P                  \        \        ,           \        ,           4       V P                  \        \        ,           \        ,           4       V P                  \        \        ,           \        ,           4       V P                  \        \        ,           \        ,           \        ,           \        ,           \        ,           4       R# )zInitializing telnet connectionN)r   infosendr   r   r   r!   r   r   r   r1   r   r   r   r    r   r3   s   &r,   _initialize_telnetr:   0   s    
KK01 OOC"Hx'( OOC$J!223 OOC"Hx'$.!<sBRGH OOC$J%& OOC"HtO$ OOC"Hu$%
 OOC"Hu$t+c1B67r.   c                      ] tR t^MtRtR R ltR R ltR R ltR R	 ltR
 R lt	]
R R l4       t]
R R l4       tRtR# )_ConnectionStdoutz_
Wrapper around socket which provides `write` and `flush` methods for the
Vt100_Output output.
c               $    V ^8  d   QhRRRRRR/# )r%   r3   r4   encodingstrr(   r5   r*   )r+   s   "r,   r-   _ConnectionStdout.__annotate__S   s!      = C D r.   c                	H    W n         Wn        R V n        . V n        RV n        R# )strictFN)	_encoding_connection_errors_buffer_closed)selfr3   r>   s   &&&r,   __init___ConnectionStdout.__init__S   s"    !%$&r.   c                    V ^8  d   QhRRRR/# )r%   datar?   r(   r5   r*   )r+   s   "r,   r-   r@   Z   s      # $ r.   c                	    VP                  R R4      pV P                  P                  VP                  V P                  V P
                  R7      4       V P                  4        R# )
z
)errorsN)replacerF   appendencoderC   rE   flushrH   rL   s   &&r,   write_ConnectionStdout.writeZ   sB    ||D&)DKKt||KLM

r.   c                   V ^8  d   QhRR/# )r%   r(   boolr*   )r+   s   "r,   r-   r@   _   s       r.   c                	    R # Tr*   rH   s   &r,   isatty_ConnectionStdout.isatty_   s    r.   c                   V ^8  d   QhRR/# r%   r(   r5   r*   )r+   s   "r,   r-   r@   b   s      t r.   c                	    V P                   '       g5   V P                  P                  R P                  V P                  4      4       . T n        R#   \
         d$   p\        P                  ! RT 24        Rp?L2Rp?ii ; i)r.   z Couldn't send data over socket: N)rG   rD   r8   joinrF   OSErrorr   warning)rH   es   & r,   rS   _ConnectionStdout.flushb   sf    	C<<<  %%chht||&<=   	CNN=aSABB	Cs   A 4A A?A::A?c                   V ^8  d   QhRR/# r_   r*   )r+   s   "r,   r-   r@   k   s      t r.   c                	    R V n         R# )TN)rG   r[   s   &r,   close_ConnectionStdout.closek   s	    r.   c                   V ^8  d   QhRR/# r%   r(   r?   r*   )r+   s   "r,   r-   r@   o   s      # r.   c                	    V P                   # r0   )rC   r[   s   &r,   r>   _ConnectionStdout.encodingn   s    ~~r.   c                   V ^8  d   QhRR/# rk   r*   )r+   s   "r,   r-   r@   s   s       r.   c                	    V P                   # r0   )rE   r[   s   &r,   rO   _ConnectionStdout.errorsr   s    ||r.   )rF   rG   rD   rC   rE   N)__name__
__module____qualname____firstlineno____doc__rI   rU   r\   rS   rh   propertyr>   rO   __static_attributes__r*   r.   r,   r<   r<   M   sH    

    r.   r<   c                  ~    ] tR t^wtRtRR R lltR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltRtR# )TelnetConnectionz.
Class that represents one Telnet connection.
c               <    V ^8  d   QhRRRRRRRRR	R
RRRRRRRR/	# )r%   connr4   addrztuple[str, int]interact7Callable[[TelnetConnection], Coroutine[Any, Any, None]]serverr#   r>   r?   styleBaseStyle | Nonevt100_inputr   
enable_cprrX   r(   r5   r*   )r+   s   "r,   r-   TelnetConnection.__annotate__|   se     58 5858 58 J	58
 58 58  58 58 58 
58r.   c	                	  a aa VS n         VS n        VS n        VS n        VS n        VS n        R S n        \        P                  ! 4       S n	        VS n
        SS n        RS n        \        ^(^OR7      S n        \        V4       R V 3R llo\!        \"        \%        WR7      4      S n        R V 3R llp	R V 3R	 llp
R
 VVV 3R llp\)        WV4      S n        RS n        R# )FNrowscolumnsc                   V ^8  d   QhRR/# )r%   r(   r   r*   )r+   s   "r,   r-   /TelnetConnection.__init__.<locals>.__annotate__   s     	 	$ 	r.   c                    < S P                   # r0   )sizer[   s   r,   get_size+TelnetConnection.__init__.<locals>.get_size   s    99r.   )r>   c                    V ^8  d   QhRRRR/# r%   rL   r)   r(   r5   r*   )r+   s   "r,   r-   r      s     	. 	. 	.$ 	.r.   c                >   < SP                   P                  V 4       R# )z-TelnetProtocolParser 'data_received' callbackN)r   
send_bytesrL   rH   s   &r,   data_received0TelnetConnection.__init__.<locals>.data_received   s    ''-r.   c               $    V ^8  d   QhRRRRRR/# )r%   r   r'   r   r(   r5   r*   )r+   s   "r,   r-   r      s&     	A 	A 	Ac 	Ad 	Ar.   c                   < \        WR7      Sn        SP                  e3   SP                  '       d   SP                  P	                  R 4       R# R# R# )z-TelnetProtocolParser 'size_received' callbackr   Nc                 2    \        4       P                  4       # r0   )r
   
_on_resizer*   r.   r,   <lambda>BTelnetConnection.__init__.<locals>.size_received.<locals>.<lambda>   s    )=)=)?r.   )r   r   vt100_outputcontextrun)r   r   rH   s   &&r,   size_received0TelnetConnection.__init__.<locals>.size_received   s>    $8DI  ,  !?@ 2>,r.   c                    V ^8  d   QhRRRR/# )r%   ttyper?   r(   r5   r*   )r+   s   "r,   r-   r      s     	 	# 	$ 	r.   c                x   < \        SP                  SV SR7      Sn        SP                  P	                  4        R# )z.TelnetProtocolParser 'ttype_received' callback)termr   N)r   stdoutr   _readyset)r   r   r   rH   s   &r,   ttype_received1TelnetConnection.__init__.<locals>.ttype_received   s-     ,XEj!D KKOOr.   )r{   r|   r}   r   r>   r   rG   asyncioEventr   r   r   r   r   r   r:   r   r   r<   r   r"   parserr   )rH   r{   r|   r}   r   r>   r   r   r   r   r   r   r   s   f&&&&&&&f   @r,   rI   TelnetConnection.__init__|   s     		  
mmo&$15 b"-	 	4 	 	 6#4T#MN	. 	.	A 	A	 	 +=X37r.   c                   V ^8  d   QhRR/# r_   r*   )r+   s   "r,   r-   r      s      t r.   c                  a "   R V 3R llp\        4       pVP                  S P                  V4        S P                  P	                  4       G Rj  xL
  \        S P                  S P                  R7      ;_uu_ 4        \        P                  ! 4       S n
        S P                  S 4      G Rj  xL
  RRR4       S P                  4        R#  L{ L   + '       g   i     L&; i  S P                  4        i ; i5i)z
Run application.
c                   V ^8  d   QhRR/# r_   r*   )r+   s   "r,   r-   6TelnetConnection.run_application.<locals>.__annotate__   s     	 	d 	r.   c                    < SP                   P                  R 4      p V '       d   SP                  V 4       R# \        P                  ! RP
                  ! SP                  !  4       SP                  4        R# )i   z&Connection closed by client. {!r} {!r}N)r{   recvfeedr   r7   r+   r|   rh   r   s    r,   handle_incoming_data>TelnetConnection.run_application.<locals>.handle_incoming_data   sJ    99>>$'D		$ DKKTYYWX

r.   N)inputoutput)r   
add_readerr{   r   waitr	   r   r   contextvarscopy_contextr   r}   rh   )rH   r   loops   f  r,   run_application TelnetConnection.run_application   s     
	 	  !		#78	++""$$$#$*:*:4CTCTUU*779mmD))) V JJL % * VU JJLsX   0C9C$ C-C$ ?/C.C/C3C$ ;C9C$ CC!	C$ $C66C9c                    V ^8  d   QhRRRR/# r   r*   )r+   s   "r,   r-   r      s       4 r.   c                <    V P                   P                  V4       R# )z6
Handler for incoming data. (Called by TelnetServer.)
N)r   r   rT   s   &&r,   r   TelnetConnection.feed   s     	r.   c                   V ^8  d   QhRR/# r_   r*   )r+   s   "r,   r-   r      s     
  
 t 
 r.   c                   V P                   '       g{   RV n         V P                  P                  4        \        4       P	                  V P
                  4       V P
                  P                  4        V P                  P                  4        R# R# )z
Closed by client.
TN)rG   r   rh   r   remove_readerr{   r   r[   s   &r,   rh   TelnetConnection.close   s^     |||DL""$,,TYY7IIOOKK r.   c                    V ^8  d   QhRRRR/# r%   formatted_textr   r(   r5   r*   )r+   s   "r,   r-   r      s     	
 	
#3 	
 	
r.   c                    V P                   f   R# \        V4      p\        V P                   YP                  ;'       g    \	        4       4       R# )z
Send text to the client.
N)r   r   r   r   r   rH   r   s   &&r,   r8   TelnetConnection.send   s>     $*>:~zz/I/IZ\	
r.   c                    V ^8  d   QhRRRR/# r   r*   )r+   s   "r,   r-   r      s     H H0@ HT Hr.   c                H   a a \        S4      oS P                  VV 3R l4      # )zD
Send text to the client.
This is asynchronous, returns a `Future`.
c                 &   < SP                  S 4      # r0   )r8   )r   rH   s   r,   r   4TelnetConnection.send_above_prompt.<locals>.<lambda>   s    TYY~-Fr.   )r   _run_in_terminalr   s   ffr,   send_above_prompt"TelnetConnection.send_above_prompt   s!    
 +>:$$%FGGr.   c                    V ^8  d   QhRRRR/# )r%   funczCallable[[], None]r(   r5   r*   )r+   s   "r,   r-   r      s     U U%7 UD Ur.   c                	    V P                   '       d#   V P                   P                  \        V4       R# \        R 4      h)z2Called _run_in_terminal outside `run_application`.N)r   r   r   RuntimeError)rH   r   s   &&r,   r   !TelnetConnection._run_in_terminal   s-     <<<LL_d3STTr.   c                   V ^8  d   QhRR/# r_   r*   )r+   s   "r,   r-   r      s     " "d "r.   c                    V P                   f   R# V P                   P                  4        V P                   P                  ^ ^ 4       V P                   P                  4        R# )z2
Erase the screen and move the cursor to the top.
N)r   erase_screencursor_gotorS   r[   s   &r,   r   TelnetConnection.erase_screen   sM     $&&(%%a+!r.   )rG   r   r|   r{   r   r   r>   r}   r   r   r   r   r   r   r   NrZ   )rq   rr   rs   rt   ru   rI   r   r   rh   r8   r   r   r   rw   r*   r.   r,   ry   ry   w   s7    58n6
 	
HU" "r.   ry   c                    V ^8  d   QhRRRR/# )r%   r3   ry   r(   r5   r*   )r+   s   "r,   r-   r-     s     	 	&6 	4 	r.   c                   "   R # 5ir0   r*   r9   s   &r,   _dummy_interactr     s     s   c                      ] tR tRtRtR^]RRR3R R llt]R	 R
 l4       tRR R llt	R R lt
R R ltR R ltRtR# )r#   i
  a  
    Telnet server implementation.

    Example::

        async def interact(connection):
            connection.send("Welcome")
            session = PromptSession()
            result = await session.prompt_async(message="Say something: ")
            connection.send(f"You said: {result}
")

        async def main():
            server = TelnetServer(interact=interact, port=2323)
            await server.run()
    z	127.0.0.1zutf-8NTc               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )r%   hostr?   portr'   r}   r~   r>   r   r   r   rX   r(   r5   r*   )r+   s   "r,   r-   TelnetServer.__annotate__  sP     8 88 8
	8 8  8 8 
8r.   c                	    Wn         W n        W0n        W@n        WPn        W`n        R V n        . V n        \        4       V n	        R # r0   )
r   r   r}   r>   r   r   	_run_task_application_tasksr   connections)rH   r   r   r}   r>   r   r   s   &&&&&&&r,   rI   TelnetServer.__init__  s;     		  
$48<>25%r.   c               $    V ^8  d   QhRRRRRR/# )r%   r   r?   r   r'   r(   r4   r*   )r+   s   "r,   r-   r   3  s!      # S ] r.   c                	   \         P                   ! \         P                  \         P                  4      pVP                  \         P                  \         P
                  ^4       VP                  W34       VP                  ^4       V# )   )socketAF_INETSOCK_STREAM
setsockopt
SOL_SOCKETSO_REUSEADDRbindlisten)clsr   r   ss   &&& r,   _create_socketTelnetServer._create_socket2  sX     MM&..&*<*<=	V&&(;(;Q?	|	r.   c                    V ^8  d   QhRRRR/# )r%   ready_cbzCallable[[], None] | Noner(   r5   r*   )r+   s   "r,   r-   r   <  s     % %"; %t %r.   c                  a a"   S P                  S P                  S P                  4      o\        P                  ! RS P                  S P                  4       \        4       P                  SV V3R l4       V'       d   V! 4         \        P                  ! 4       G Rj  xL
  \        4       P                  S4       SP                  ! 4        S P                   F  pVP                  4        K  	  \        S P                  4      ^ 8  d<   \        P                  ! S P                  R\        P                  R7      G Rj  xL
  R# R#  L L
  \        4       P                  S4       SP                  ! 4        S P                   F  pTP                  4        K  	  \        S P                  4      ^ 8  d<   \        P                  ! S P                  R\        P                  R7      G Rj  xL 
  i i ; i5i)z
Run the telnet server, until this gets cancelled.

:param ready_cb: Callback that will be called at the point that we're
    actually listening.
z.Listening for telnet connections on %s port %rc                 &   < S P                  S4      # r0   )_accept)rH   r   s   r,   r   "TelnetServer.run.<locals>.<lambda>H  s    dll66Jr.   N)timeoutreturn_when)r   r   r   r   r7   r   r   r   Futurer   rh   r   cancellenr   ALL_COMPLETED)rH   r   tr   s   f& @r,   r   TelnetServer.run<  sq     $$TYY		:<dii	
 	%%f.JKJ	..""",,V4LLN ,,
 - 4**+a/ll++  ' 5 5   0 # ,,V4LLN ,,
 - 4**+a/ll++  ' 5 5   0sP   BG2E EE #BG2>E	?G2E 	G2BG/'G*(G//G2c                   V ^8  d   QhRR/# r_   r*   )r+   s   "r,   r-   r   c  s     
D 
Dt 
Dr.   c                ~    V P                   e   R# \        4       P                  V P                  4       4      V n         R# )ze
Deprecated: Use `.run()` instead.

Start the telnet server (stop by calling and awaiting `stop()`).
N)r   r   create_taskr   r[   s   &r,   startTelnetServer.startc  s,     >>%)+77
Cr.   c                   V ^8  d   QhRR/# r_   r*   )r+   s   "r,   r-   r   o  s      D r.   c                   "   V P                   e2   V P                   P                  4         V P                   G Rj  xL
  R# R#  L  \        P                   d     R# i ; i5i)z
Deprecated: Use `.run()` instead.

Stop a telnet server that was started using `.start()` and wait for the
cancellation to complete.
N)r   r  r   CancelledErrorr[   s   &r,   stopTelnetServer.stopo  sT      >>%NN!!#nn$$ & %)) s8   )A"A AA  A"A AA"AA"c                    V ^8  d   QhRRRR/# )r%   listen_socketr4   r(   r5   r*   )r+   s   "r,   r-   r   }  s     /- /-] /-t /-r.   c                   a aaa VP                  4       w  oo\        P                  ! R.SO5!   R VVV V3R llp\        4       P	                  V! 4       4      oS P
                  P                  S4       R# )z!
Accept new incoming connection.
zNew connection %r %rc                   V ^8  d   QhRR/# r_   r*   )r+   s   "r,   r-   *TelnetServer._accept.<locals>.__annotate__  s     $	5 $	54 $	5r.   c                   <"    \        4       ;_uu_ 4       p \        SSSP                  SSP                  SP                  V SP
                  R 7      pSP                  P                  V4       \        P                  ! R.SO5!    VP                  4       G Rj  xL
  SP                  P                  V4       \        P                  ! R.SO5!    RRR4       SP(                  P                  S4       R#  L]  SP                  P                  T4       \        P                  ! R.SO5!   i ; i  + '       g   i     Lg; i  \         d    \        P                  ! R4        L\         d    \        P                  ! R4        L\         dA   p\        R\!        T4      P"                   2T4       ^ RIpTP'                  4         Rp?LRp?ii ; i  SP(                  P                  S4       i ; i5i))r>   r   r   r   zStarting interaction %r %rNzStopping interaction %r %rz)Unhandled EOFError in telnet application.z2Unhandled KeyboardInterrupt in telnet application.zGot )r   ry   r}   r>   r   r   r   addr   r7   r   removeEOFErrorKeyboardInterruptBaseExceptionprinttyperq   	traceback	print_excr   )r   r3   rd   r  r|   r{   rH   tasks       r,   r   !TelnetServer._accept.<locals>.run  s    #5&((K!1!%"jj$/#'??	"J $$((4KK <DtDI(88:::((//
;$@H4H% )D ''..t4' ;((//
;$@H4H% )(&  I
 GH$ RPQ  &T!W--./3 ##%%	& ''..t4s   G7E A/D2C:C8C:3D2E G78C::5D//D22E	=E G E !G&G (G1GG 
GG6G
G GG G44G7N)acceptr   r7   r   r
  r   rQ   )rH   r  r   r|   r{   r!  s   f& @@@r,   r   TelnetServer._accept}  s_     #))+
d*2T2$	5 $	5L  !--ce4&&t,r.   )	r   r   r   r   r>   r   r}   r   r   r0   )rq   rr   rs   rt   ru   r   rI   classmethodr   r   r  r  r   rw   r*   r.   r,   r#   r#   
  sQ    $   "&8.  %N
D/- /-r.   )8ru   
__future__r   r   r   r   r   typingr   r   r   r   r   "prompt_toolkit.application.currentr	   r
   *prompt_toolkit.application.run_in_terminalr   prompt_toolkit.data_structuresr   prompt_toolkit.formatted_textr   r   prompt_toolkit.inputr   r   prompt_toolkit.output.vt100r   prompt_toolkit.rendererr   prompt_toolkit.stylesr   r   logr   protocolr   r   r   r   r   r   r   r   r   r   r    r!   r"   __all__r1   r:   r<   ry   r   r#   r*   r.   r,   <module>r3     s    #    $ 9 9 J F / M = 4 P 7    " 
8:' 'TL" L"^	b- b-r.   