
    pF                     L   S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJr  SrS	rS
r\R"                  " S\R$                  " S5      -   S-   5      r\R"                  " S\R$                  " S5      -   S-   5      r\R"                  " S\R$                  " S5      -   S-   5      r\R"                  " S\R$                  " S5      -   S-   5      r " S S\5      r0 S\R2                  _S\R4                  _S\R6                  _S\R8                  _S\R:                  _S\R<                  _S\R>                  _S\R@                  _S\RB                  _S\RD                  _S\RF                  _S\RH                  _S\RJ                  _S \RL                  _S!\RN                  _S"\RP                  _S#\RR                  _0 S$\RT                  _S%\RV                  _S&\RX                  _S'\RZ                  _S(\R\                  _S)\R^                  _S*\R`                  _S+\Rb                  _S,\Rd                  _S-\Rf                  _S.\Rh                  _S/\Rj                  _S0\Rl                  _S1\Rn                  _S2\Rp                  _S3\Rr                  _S4\Rt                  _E0 S5\Rv                  _S6\Rx                  _S7\Rz                  _S8\R|                  _S9\R|                  _S:\R~                  _S;\R~                  _S<\R                  _S=\R                  _S>\R                  _S?\R|                  _S@\R~                  _SA\R                  _SB\R                  _SC\R|                  _SD\R~                  _SE\R                  _E0 SF\R                  _SG\R                  _SH\R                  _SI\R                  _SJ\R                  _SK\R                  _SL\R                  _SM\R                  _SN\R                  _SO\R                  _SP\R                  _SQ\R                  _SR\R                  _SS\R                  _ST\R                  _SU\R                  _SV\R                  _E0 SW\R                  _SX\R                  _SY\R                  _SZ\R                  _S[\R                  _S\\R                  _S]\R                  _S^\R                  _S_\R                  _S`\R                  _Sa\R                  _Sb\R                  _Sc\R                  _Sd\R                  _Se\R                  _Sf\R                  _Sg\R                  _E0 Sh\R                  _Si\R                  _Sj\R                  _Sk\R                  _Sl\R                  _Sm\R                  _Sn\R                  _So\R                  _Sp\R                  _Sq\R                  _Sr\R                  _Ss\R                  _St\R                  _Su\R                  _Sv\R                  _Sw\Rt                  _Sx\Rv                  _E\Rx                  \Rz                  \R                  \R                  \R                  \R                  \R                  \R                  \R                  \R2                  \Rz                  4\R2                  \Rx                  4\R2                  \Rt                  4\R2                  \Rv                  4\R                  \R                  Sy.Eri " Sz S{\j5      rk\k" 5       rl " S| S}\5      rm " S~ S\5      rn " S S\n5      rog)z 
Parser for VT100 input stream.
    )unicode_literalsN)range   )Keys)KeyPress)InputStreamraw_modecooked_modeFzprompt-toolkit-render-input.log^z[z
\d+;\d+R\Zz(<?[\d;]+[mM]|M...)\Zz[\d;]*\Zz(<?[\d;]*|M.{0,2})\Zc                       \ rS rSrSrSrg)_Flush,   z9Helper object to indicate flush operation to the parser.  N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       6lib/third_party/prompt_toolkit/terminal/vt100_input.pyr   r   ,   s    Dr   r    	
z[Az[Bz[Cz[Dz[HzOHz[FzOFz[3~z[3;2~z[3;5~z[1~z[4~z[5~z[6~z[7~z[8~z[Zz[2~zOPzOQzORzOSz[[Az[[Bz[[Cz[[Dz[[Ez[11~z[12~z[13~z[14~z[15~z[17~z[18~z[19~z[20~z[21~z[23~z[24~z[25~z[26~z[28~z[29~z[31~z[32~z[33~z[34~z[1;2Pz[1;2Qz[1;2Sz[15;2~z[17;2~z[18;2~z[19;2~z[20;2~z[21;2~z[23;2~z[24;2~z[1;5Az[1;5Bz[1;5Cz[1;5Dz[1;2Az[1;2Bz[1;2Cz[1;2DzOAzOB)zOCzODz[5Az[5Bz[5Cz[5DzOczOdz[200~z[1;3Dz[1;3Cz[1;3Az[1;3Bz[Ez[Gc                       \ rS rSrSrS rSrg)_IsPrefixOfLongerMatchCache   zv
Dictiory that maps input sequences to a boolean indicating whether there is
any key that start with this characters.
c                    ^ [         R                  T5      (       d  [        R                  T5      (       a  SnO'[        U4S j[        R                  5        5       5      nX T'   U$ )NTc              3   l   >#    U  H)  u  pUR                  T5      (       d  M  UT:w  d  M%  Uv   M+     g 7fN)
startswith).0kvprefixs      r   	<genexpr>:_IsPrefixOfLongerMatchCache.__missing__.<locals>.<genexpr>   s-     f'=tqfAUZ[_eZe'=s   44	4)_cpr_response_prefix_rematch_mouse_event_prefix_reanyANSI_SEQUENCESitems)selfrC   results    ` r   __missing__'_IsPrefixOfLongerMatchCache.__missing__   sT     $))&115K5Q5QRX5Y5YF f~';';'=ffFVr   r   N)r   r   r   r   r   rN   r   r   r   r   r:   r:      s    
r   r:   c                   R    \ rS rSrSrS rSS jrS rS rS r	S r
S	 rS
 rS rSrg)r      a@  
Parser for VT100 input stream.

Feed the data through the `feed` method and the correct callbacks of the
`input_processor` will be called.

::

    def callback(key):
        pass
    i = InputStream(callback)
    i.feed('data...')

:attr input_processor: :class:`~prompt_toolkit.key_binding.InputProcessor` instance.
c                     [        U5      (       d   eXl        U R                  5         [        (       a  [	        [
        S5      U l        g g )Nab)callablefeed_key_callbackreset_DEBUG_RENDERER_INPUTopen_DEBUG_RENDERER_INPUT_FILENAMELOG)rL   rU   s     r   __init__InputStream.__init__   s=    )****!2

  :DADH !r   c                 2    SU l         U R                  5         g )NF)_in_bracketed_paste_start_parser)rL   requests     r   rV   InputStream.reset   s    #( r   c                 d    U R                  5       U l        U R                  R                  S5        g)z
Start the parser coroutine.
N)_input_parser_generator_input_parsersendrL   s    r   r_   InputStream._start_parser   s)     "99;%r   c                     [         R                  U5      (       a  [        R                  $ [        R                  U5      (       a  [        R
                  $  [        U   $ ! [         a     gf = f)z*
Return the key that maps to this prefix.
N)_cpr_response_rerG   r   CPRResponse_mouse_event_reVt100MouseEventrJ   KeyError)rL   rC   s     r   
_get_matchInputStream._get_match  s`     !!&))###""6**'''	!&)) 		s   A 
A,+A,c              #     #    SnSnSn SnU(       a  SnOSv nU[         :X  a  SnOX-  nU(       a  [        U   nU R                  U5      nU(       d  U(       d  U(       a  U R                  Xa5        SnOU(       d  U(       d  U(       d|  SnSn[	        [        U5      SS5       H:  nU R                  USU 5      nU(       d  M   U R                  XaSU 5        XS nSnM<     U(       d  U R                  US   US   5        USS nM  7f)z1
Coroutine (state machine) for the input parser.
 FTNr      )r    _IS_PREFIX_OF_LONGER_MATCH_CACHErn   _call_handlerr   len)	rL   rC   retryflushcis_prefix_of_longer_matchrG   foundis	            r   rc   #InputStream._input_parser_generator  s     E ; EKF ,LV,T)/ !:&&u5F #<e!E E #3v;26#vbqz: 5 ..uRajA%+BZF$(E 7 !**6!9fQi@!'Q s   B>DADc                     [        U[        5      (       a  U H  nU R                  X25        M     gU[        R                  :X  a  SU l        SU l        gU R                  [        X5      5        g)z
Callback to handler.
Trq   N)	
isinstancetupleru   r   BracketedPaster^   _paste_bufferrU   r   )rL   keyinsert_textrA   s       r   ru   InputStream._call_handlerH  s\     c5!!""12  d)))+/(%'"&&x'ABr   c                 B   [        U[        R                  5      (       d   e[        (       aP  U R                  R                  [        U5      R                  S5      S-   5        U R                  R                  5         U R                  (       a  U =R                  U-  sl
        SnX R                  ;   a  U R                  R                  U5      nU R                  SU nU R                  [        [        R                  U5      5        SU l	        U R                  U[!        U5      -   S nSU l
        U R#                  U5        gg[%        U5       HN  u  pgU R                  (       a  U R#                  XS 5          gUS:X  a  SnU R&                  R)                  U5        MP     g)	z>
Feed the input stream.

:param data: Input string (unicode).
zutf-8   
z[201~NFrq   r&   r#   )r   six	text_typerW   rZ   writereprencoderx   r^   r   indexrU   r   r   r   rv   feed	enumeraterd   re   )rL   dataend_mark	end_indexpaste_content	remainingr|   ry   s           r   r   InputStream.feedV  sV    $....  HHNN4:,,W5=>HHNN
 ##$&"H--- ..44X>	 !% 2 2:I >&&x0C0C]'ST ,1( ..y3x=/H/IJ	%'"		)$ .  "$++ IId2h' Dy &&++A.+ (r   c                 B    U R                   R                  [        5        g)a  
Flush the buffer of the input stream.

This will allow us to handle the escape key (or maybe meta) sooner.
The input received by the escape key is actually the same as the first
characters of e.g. Arrow-Up, so without knowing what follows the escape
sequence, we don't know whether escape has been pressed, or whether
it's something else. This flush function should be called after a
timeout, and processes everything that's still in the buffer as-is, so
without assuming any characters will folow.
N)rd   re   r   rf   s    r   rx   InputStream.flush  s     	'r   c                 F    U R                  U5        U R                  5         g)z(
Wrapper around ``feed`` and ``flush``.
N)r   rx   )rL   r   s     r   feed_and_flushInputStream.feed_and_flush  s     			$

r   )rZ   r^   rd   r   rU   N)F)r   r   r   r   r   r[   rV   r_   rn   rc   ru   r   rx   r   r   r   r   r   r   r      s8    $B&&0,dC8/t(r   r   c                   J    \ rS rSrSrS rS r\S 5       r\S 5       r	S r
Srg	)
r	   i  z
::

    with raw_mode(stdin):
        ''' the pseudo-terminal stdin is now used in raw mode '''

We ignore errors when executing `tcgetattr` fails.
c                     Xl          [        R                  " U5      U l        g ! [        R                   a
    S U l         g f = fr>   )filenotermios	tcgetattrattrs_beforeerror)rL   r   s     r   r[   raw_mode.__init__  s:    	% ' 1 1& 9D}} 	% $D	%s   $ AAc                     [         R                  " U R                  5      nU R                  U[        R
                     5      U[        R
                  '   U R                  U[        R                     5      U[        R                  '   [         R                  " U R                  [         R                  U5        [        R                  " U R                  S5        g ! [         R                   a     g f = f)Ns   [?1l)r   r   r   _patch_lflagttyLFLAG_patch_iflagIFLAG	tcsetattrTCSANOWosr   r   )rL   newattrs     r   	__enter__raw_mode.__enter__  s    
	/''4G "&!2!273993E!FGCII!%!2!273993E!FGCIIdkk7??GD HHT[[+. }} 		s    C C10C1c                     U[         R                  [         R                  -  [         R                  -  [         R                  -  ) -  $ r>   r   ECHOICANONIEXTENISIGclsattrss     r   r   raw_mode._patch_lflag  s/    6G',,VWWWr   c                     U[         R                  [         R                  -  [         R                  -  [         R                  -  [         R
                  -  ) -  $ r>   )r   IXONIXOFFICRNLINLCRIGNCRr   s     r   r   raw_mode._patch_iflag  sP     LL7==( MM $MM* -4MM:	
 
 	
r   c                     U R                   b<   [        R                  " U R                  [        R                  U R                   5        g g ! [        R
                   a     g f = fr>   )r   r   r   r   r   r   )rL   akws      r   __exit__raw_mode.__exit__  sP    (!!$++w@Q@QR ) == s   :A A"!A")r   r   N)r   r   r   r   r   r[   r   classmethodr   r   r   r   r   r   r   r	   r	     s@    ,%/ X X 	
 	
r   r	   c                   8    \ rS rSrSr\S 5       r\S 5       rSrg)r
   i  z
The opposide of ``raw_mode``, used when we need cooked mode inside a
`raw_mode` block.  Used in `CommandLineInterface.run_in_terminal`.::

    with cooked_mode(stdin):
        ''' the pseudo-terminal stdin is now used in cooked mode. '''
c                     U[         R                  [         R                  -  [         R                  -  [         R                  -  -  $ r>   r   r   s     r   r   cooked_mode._patch_lflag  s,    w~~5FUVVr   c                 (    U[         R                  -  $ r>   )r   r   r   s     r   r   cooked_mode._patch_iflag  s     w}}$$r   r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r
   r
     s1     W W % %r   r
   )pr   
__future__r   r   rer   r   r   	six.movesr   keysr   key_binding.input_processorr   __all__rW   rY   compileescaperi   rk   rF   rH   objectr   EscapeControlSpaceControlAControlBControlCControlDControlEControlFControlGControlHControlIControlJControlKControlLControlMControlNControlOControlPControlQControlRControlSControlTControlUControlVControlWControlXControlYControlZControlBackslashControlSquareCloseControlCircumflexControlUnderscore	BackspaceUpDownRightLeftHomeEndDeleteShiftDeleteControlDeletePageUpPageDownBackTabInsertF1F2F3F4F5F6F7F8F9F10F11F12F13F14F15F16F17F18F19F20F21F22F23F24	ControlUpControlDownControlRightControlLeftShiftUp	ShiftDown
ShiftRight	ShiftLeftr   IgnorerJ   dictr:   rt   r   r	   r
   r   r   r   <module>r$     s2	   ( 	 	 
  
   2  !B  ::cBIIg$66FG  **S299W#558PPQ
 **S299W+=%=%KL C"))G*<$<?V$VW 	V 	R
DKKR DR DMM	R
 DMMR DMMR DMMR DMMR DMMR DMMR DMMR DMMR DMMR DMMR DMMR  DMM!R" DMM#R$ DMM%R& DMM'R( DMM)R* DMM+R, DMM-R. DMM/R0 DMM1R2 DMM3R4 DMM5R6 DMM7R8 DMM9R: DMM;R> D!!?R@ D##ARB D""CRD D""ERF DNNGRH dggIRJ diiKRL djjMRN diiORP diiQRR diiSRT dhhURV dhhWRX t{{YRZ !![R\ ##]R^ tyy_R` txxaRb t{{cRd t}}eRf tyygRh txxiRj dllkRl t{{mRp dggqRr dggsRt dgguRv dggwRx twwyRz tww{R| tww}R~ twwR@ twwARB CRD ERF GRH IRJ KRL MRN ORP QRR SRT URV WRX YRZ [R\ ]R^ _R` aRb cRd eRf gRh iRn oRp qRt uRv $((wRx $((yRz $(({R| $((}R~ $((R@ $((ARB $((CRD $((ERH IRJ !!KRL ""MRN !!ORR SRT URV WRX YRb dggcRd diieRf jjii~~  $$ ++tyy)++tzz*++tww'++tyy) kkkkcRj$ $ $?#@  G& GTBv BP%( %r   