
    F\h%d                    .   % 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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Jr  SSKJrJr  SSKJr  SS	KJr  SS
KJr  Sr\(       a  S SKJrJrJr  OS r " S S\5      r \RB                  \RB                  \ 4r"Sr#\$" \SS5      r%\$" \SS5      r&SS jr'/ SQr(0 r)S\*S'   \( H  r+\'" \)\+5        M     C+C'\RX                  " S5      r- \R\                  r.S\*S'    " S S\5      r1g! \/ a     " S S5      r0\0r. N f = f)    )annotationsN)ioctl   )curses)ConsoleEvent)	tcgetattr	tcsetattr)trace)
EventQueue)wlenF)IOLiteraloverloadc                    g N )funcs    +/usr/lib/python3.13/_pyrepl/unix_console.py<lambda>r   1   s    D    c                      \ rS rSrSrg)InvalidTerminal4   r   N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r   r   4   s    r   r   repaintFIONREAD
TIOCGWINSZdict[int, int]c                ^    SU-  n[        [        U5      (       a  X[        [        U5      '   g g )NzB%d)hasattrtermiosgetattr)
dictionaryratebaudrate_names      r   add_baudrate_if_supportedr+   D   s,    DLMw&&6:77M23 'r   )r   n   i  i        i  i K     i  i`	  i,  i   i  i  2   i   iX  K   i%  ratedicts   \$<([0-9]+)((?:/|\*){0,2})>ztype[select.poll]pollc                  .    \ rS rSrS rS rSSS jjrSrg)	MinimalPolls   c                    g r   r   selfs    r   __init__MinimalPoll.__init__t   s    r   c                    Xl         g r   fd)r9   r>   flags      r   registerMinimalPoll.registerw   s    Gr   Nc                    Uc(  [         R                   " U R                  // / 5      u  p#nU$ [         R                   " U R                  // / US-  5      u  p#nU$ )N  )selectr>   )r9   timeoutrwes        r   r3   MinimalPoll.pollz   sS     --	2r:a H !--	2r74<HaHr   r=   r   )rE   float | Nonereturnz	list[int])r   r   r   r   r:   r@   r3   r   r   r   r   r5   r5   s   s    			 	r   r5   c                    ^  \ rS rSr    S-       S.U 4S jjjrS rS/S jrS0S jrS1S jrS r	S r
S	 rS
 rS2S jrS3S4S jjrS5S6S jjrS r\(       a  S rOS rS rS rS rS r\(       a  S rOS rS r\S 5       rS7S jrS7S jrS rS rS r S r!S r"S  r#S! r$S8S" jr%S8S# jr&S8S$ jr'S% r(S& r)S' r*S( r+S) r,S* r-\.4S+ jr/S,r0U =r1$ )9UnixConsole   c                  > [         TU ]  XX45        [        5       U l        U R                  R	                  U R
                  [        R                  5        SU l        SU l	        [        R                  " U=(       d    SU R                  5        X0l        [        S"S#S jj5       n[        S$S j5       nS"S$S jjnU" S5      U l        U" SS	S
9U l        U" S5      U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" S5      U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" S5      U l        U" SS	S
9U l        U" SS	S
9U l         U" SS	S
9U l!        U" SS	S
9U l"        U" SS	S
9U l#        U" SS	S
9U l$        U" SS	S
9U l%        U" S S	S
9U l&        U RO                  5         [Q        U R
                  U RR                  5      U l*        S!U l+        [X        RX                  " [X        RZ                  U R\                  5        g)%a  
Initialize the UnixConsole.

Parameters:
- f_in (int or file-like object): Input file descriptor or object.
- f_out (int or file-like object): Output file descriptor or object.
- term (str): Terminal name.
- encoding (str): Encoding to use for I/O operations.
r   r   Nc                    g r   r   capoptionals     r   
_my_getstr(UnixConsole.__init__.<locals>._my_getstr   s    MPr   c                    g r   r   rQ   s     r   rT   rU      s    BEr   c                d    [         R                  " U 5      nU(       d  Uc  [        SU  S35      eU$ )Nz#terminal doesn't have the required z capability)r   tigetstrr   )rR   rS   rF   s      r   rT   rU      s7    $A	%9#kJ  Hr   belcivisT)rS   clearcnormcubcub1cudcud1cufcuf1cupcuucuu1dch1dchelhpaichich1indpadrirmkxsmkxr   )F)rR   strrS   zLiteral[False]rK   bytes)rR   rq   rS   boolrK   zbytes | None)/superr:   r3   pollobr@   input_fdrD   POLLINinput_bufferinput_buffer_posr   	setupterm	output_fdtermr   _bel_civis_clear_cnorm_cub_cub1_cud_cud1_cuf_cuf1_cup_cuu_cuu1_dch1_dch_el_hpa_ich_ich1_ind_pad_ri_rmkx_smkx_UnixConsole__setup_movementr   encodingevent_queuecursor_visiblesignalSIGCONT_sigcont_handler)r9   f_inf_outr|   r   rT   	__class__s         r   r:   UnixConsole.__init__   s     	d5fT]]FMM: !t~~6		P 
P	E 
E	 u%	 48 ) 48ut4	6
ut4	6
ut4	6
u%	ut4	6
6
ut4	d#ut4	ut4	6
ut4	ut4	dT26
6
%dmmT]]Cfnnd&;&;<r   c                D    U R                  5         U R                  5         g r   )restorepreparer9   signumframes      r   r   UnixConsole._sigcont_handler   s    r   c                ~    [        U R                  =(       a"    U R                  [        U R                  5      :  5      $ r   )rs   rx   ry   lenr8   s    r   more_in_bufferUnixConsole.more_in_buffer   s6     ?%%D,=,=(>>
 	
r   c                f   U R                  5       (       d&  [        R                  " U R                  S5      U l        U R                  U R
                  U R
                  U-    nU =R
                  [        U5      -  sl        U R
                  [        U R                  5      :  a  SU l        SU l        U$ )N'  r   r   )r   osreadrv   rx   ry   r   )r9   nrets      r   __readUnixConsole.__read   s    ""$$ "u =D 5 58M8MPQ8QRS)  C(9(9$:: #D$%D!
r   c                    Xl         g)zb
Change the encoding used for I/O operations.

Parameters:
- encoding (str): New encoding to use.
N)r   )r9   r   s     r   change_encodingUnixConsole.change_encoding   s	     !r   c                	   Uu  p4U R                   (       d  [        U R                  5      [        [        U5      U R                  5      :  a  U R                  5         U R                  S[        U R                  5      S-
  5        U R                  S5        S[        U R                  5      4U l        U R                  R                  S5        [        U R                  5      [        [        U5      U R                  5      :  a  M  Oa[        U R                  5      [        U5      :  a?  U R                  R                  S5        [        U R                  5      [        U5      :  a  M?  [        U5      U R                  :  a  SU l         U R                  U l        U R                  u  pVU R                  =pxU R                  n	XH:  a  UnOPXHU	-   :  a  XI-
  S-   nO@US:  a:  [        U5      X-   :  a)  [        [        U5      U	-
  S5      nUR                  S5        U R                  XwU	-    n
XX-    nXx:  a  U R                  (       a  U R                  5         U R                  U R                  SS5        SU4U l        [!        Xx-
  5       HA  nU R                  U R                  5        U
R#                  S5        U
R%                  SS5        MC     OXx:  a  U R&                  (       a  U R                  5         U R                  U R                  U R                  S-
  S5        SXpR                  -   S-
  4U l        [!        X-
  5       H@  nU R                  U R&                  5        U
R#                  S5        U
R                  S5        MB     Xl        [)        [!        XU	-   5      X5       H   u  nnnX:w  d  M  U R+                  XX5        M"     [        U5      nU[        U
5      :  a\  U R                  5         U R                  SU5        SU4U l        U R                  U R,                  5        US-  nU[        U
5      :  a  M\  U R/                  5         UR1                  5       U l        U R3                  X45        U R5                  5         g)z
Refresh the console screen.

Parameters:
- screen (list): List of strings representing the screen contents.
- c_xy (tuple): Cursor position (x, y) on the screen.
r   r   
 N)_UnixConsole__gone_tallr   screenminheight_UnixConsole__hide_cursor_UnixConsole__move_UnixConsole__writeposxyappend_UnixConsole__move_tall_UnixConsole__offsetmaxr   _UnixConsole__write_coder   rangepopinsertr   zip _UnixConsole__write_changed_liner   _UnixConsole__show_cursorcopymove_cursorflushoutput)r9   r   c_xycxcypxpy
old_offsetoffsetr   oldscrnewscriyoldlinenewlines                   r   refreshUnixConsole.refresh   s    dkk"SVdkk%BB""$As4;;/!34T"DKK 00
""2& dkk"SVdkk%BB dkk"S[0""2& dkk"S[0 v;$ D**DK"mm+
 ;FF?"[1_FaZCK&/9Vv-q1FMM"Zv*=>1 488 diiA.JDJ:./!!$((+

2a$ 0  TYY diiq!<J4q88DJ6./!!$)),

1b! 0
  v/@	
!))!gB A K#f+o KK1ADJdhh'FA #f+o 	kkm r   c                    X R                   :  d  X R                   U R                  -   :  a&  U R                  R                  [	        SS5      5        gU R                  X5        X4U l        U R                  5         g)zy
Move the cursor to the specified position on the screen.

Parameters:
- x (int): X coordinate.
- y (int): Y coordinate.
scrollN)r   r   r   r   r   r   r   r   r9   xr   s      r   r   UnixConsole.move_cursor>  s\     }}]]T[[%@ @##E(D$9:KKDJr   c                   [        U R                  5      U l        U R                  R                  5       nU=R                  [
        R                  [
        R                  -  [
        R                  -  ) -  sl        U=R                  [
        R                  ) -  sl	        U=R                  [
        R                  [
        R                  -  ) -  sl        U=R                  [
        R                  -  sl        U=R                  [
        R                  -  sl        U=R                   [
        R"                  [
        R$                  -  [
        R&                  -  ) -  sl        U=R                   [
        R(                  -  sl        SUR*                  [
        R,                  '   SUR*                  [
        R.                  '   [1        U R                  [
        R2                  U5        [4        R6                  " 5       S:X  a;  [8        R:                  " S5      S:X  a!  [8        R<                  " U R>                  S5        / U l         U RC                  5       u  U l"        U l#        / U l$        SU l%        SU l&        U RN                  U l(        SU l)        U RU                  U RV                  5         [X        RX                  " [X        RZ                  U R\                  5      U l/        U Rc                  5         g! [`         a     Nf = f)	z2
Prepare the console for input/output operations.
r   r   DarwinTERM_PROGRAMApple_Terminals   [?7lr   r   N)2r	   rv   _UnixConsole__svtermstater   iflagr&   INPCKISTRIPIXONoflagOPOSTcflagCSIZEPARENBCS8BRKINTlflagICANONECHOIEXTENISIGccVMINVTIMEr
   	TCSADRAINplatformsystemr   getenvwriter{   r   getheightwidthr   width_UnixConsole__bufferr   r   _UnixConsole__move_shortr   r   _UnixConsole__maybe_write_coder   r   SIGWINCH_UnixConsole__sigwinchold_sigwinch
ValueError$_UnixConsole__enable_bracketed_paste)r9   raws     r   r   UnixConsole.prepareM  s    't}}5  %%'		w}}w~~5DEE			w}}%%			w}}w~~566			W[[ 			W^^#			w~~4w~~EFF			W\\!	 w|| !w}}$--!2!2C8 ??(RYY~-FJZ-ZHHT^^[1"&"5"5"7TZ
''

+	 &foot OD 	%%'  		s   #4K( (
K54K5c                   U R                  5         U R                  U R                  5        U R                  5         [	        U R
                  [        R                  U R                  5        [        R                  " 5       S:X  a;  [        R                  " S5      S:X  a!  [        R                  " U R                  S5        [        U S5      (       a2  [         R                   " [         R"                  U R$                  5        U ?gg)z*
Restore the console to the default state
r   r   r   s   [?7hr	  N)%_UnixConsole__disable_bracketed_paster  r   r   r
   rv   r&   r   r   r   r   r   r   r  r{   r%   r   r  r	  r8   s    r   r   UnixConsole.restoreu  s     	&&(

+$--!2!2D4F4FG??(RYY~-FJZ-ZHHT^^[14((MM&//4+<+<=! )r   c                N    [        SUS9  U R                  R                  U5        g)z.
Push a character to the console event queue.
zpush char {char!r})charN)r   r   push)r9   r  s     r   	push_charUnixConsole.push_char  s#     	".d#r   c                   U(       d  U R                  SS9(       d  gU R                  R                  5       (       aD    U R                  U R	                  S5      5         U R                  R                  5       (       a  MD  U R                  R                  5       $ ! [
         ah  nUR                  [        R                  :X  aD  U R                  R                  5       (       d  U R                  R                  5       s SnA$  SnAM  e SnAff = f)z
Get an event from the console event queue.

Parameters:
- block (bool): Whether to block until an event is available.

Returns:
- Event: Event object from the event queue.
r   )rE   Nr   )	waitr   emptyr  _UnixConsole__readOSErrorerrnoEINTRget)r9   blockerrs      r   	get_eventUnixConsole.get_event  s     TYYqY1$$&&NN4;;q>2  $$&& ##%%  yyEKK/#//5577#'#3#3#7#7#99$s$    B 
D$AD:DDDc                    U R                   R                  5       (       + =(       d;    U R                  5       =(       d$    [        U R                  R                  U5      5      $ )z!
Wait for events on the console.
)r   r  r   rs   ru   r3   )r9   rE   s     r   r  UnixConsole.wait  sK    
   &&(( /""$/DKK$$W-.	
r   c                T    U(       a  U R                  5         gU R                  5         g)zS
Set the visibility of the cursor.

Parameters:
- visible (bool): Visibility flag.
N)r   r   )r9   visibles     r   set_cursor_visUnixConsole.set_cursor_vis  s       r   c                V    [        [        R                  S   5      [        [        R                  S   5      4$ ! [        [        [
        4 aY     [        U R                  [        S5      nO! [         a      gf = f[        R                  " SU5      SS u  p#U(       d   gX#4s $ f = f)^
Get the height and width of the console.

Returns:
- tuple: Height and width of the console.
LINESCOLUMNSs              P   hhhhr      )intr   environKeyError	TypeErrorr
  r   rv   r"   r  structunpack)r9   sizer   r  s       r   r  UnixConsole.getheightwidth  s    
%2::g./RZZ	5J1KKKi4 %" 
KHD "!" &fd ;Aa @!}$%s9   7: B(A,+B(,
A:6B(9A::&B("B('B(c                     [        [        R                  S   5      [        [        R                  S   5      4$ ! [        [        [
        4 a     gf = f)r)  r*  r+  r,  )r1  r   r2  r3  r4  r
  r8   s    r   r  r8    sG    2::g./RZZ	5J1KKKi4 s   7: AAc                b    [         R                  " U R                  [         R                  5        g)z+
Discard any pending input on the console.
N)r&   tcflushrv   TCIFLUSHr8   s    r   forgetinputUnixConsole.forgetinput  s     	w'7'78r   c                    U R                    HZ  u  pU(       a  U R                  U5        M  [        R                  " U R                  UR                  U R                  S5      5        M\     U R                   SS2	 g)z
Flush the output buffer.
replaceN)r  _UnixConsole__tputsr   r  r{   encoder   )r9   textiscodes      r   r   UnixConsole.flushoutput  sR     !MMLDT"T]]I)NO	 *
 MM!r   c                V   [        U R                  5      S-
  nUS:  a5  U R                  U   (       d!  US-  nUS:  a  U R                  U   (       d  M!  U R                  S[        XR                  U R
                  -   S-
  5      5        U R                  S5        U R                  5         g)z8
Finish console operations and flush the output buffer.
r   r   z
N)r   r   r   r   r   r   r   r   )r9   r   s     r   finishUnixConsole.finish  s     q 1fT[[^FA 1fT[[^^As1kkDMM9A=>?Vr   c                Z    U R                  U R                  5        U R                  5         g)z
Emit a beep sound.
N)r  r}   r   r8   s    r   beepUnixConsole.beep  s"     			*r   c                X   [        SSS5      nU R                  R                  5       (       dy  U R                  R                  5       nU=R                  UR                  -  sl        U=R
                  UR
                  -  sl        U R                  R                  5       (       d  My  [        R                  " S[        U R                  [        S5      5      S   nU R                  U5      n[        X@R                  S5      nU=R                  U-  sl        U=R
                  U-  sl        U$ )i
Get pending events from the console event queue.

Returns:
- Event: Pending event from the event queue.
keyr   r   r   s       r   r@  )r   r   r  r  datar  r5  r6  r   rv   r!   r  rq   r   r9   rH   e2amountr  rO  s         r   
getpendingUnixConsole.getpending  s     eR%A&&,,..%%))+"''! &&,,..
 ]]3dmmX{(STUVWF++f%CsMM95DFFdNFEESLEHr   c                   [        SSS5      nU R                  R                  5       (       dy  U R                  R                  5       nU=R                  UR                  -  sl        U=R
                  UR
                  -  sl        U R                  R                  5       (       d  My  SnU R                  U5      n[        X@R                  S5      nU=R                  U-  sl        U=R
                  U-  sl        U$ )rM  rN  r   r   r   r@  )	r   r   r  r  rO  r  r  rq   r   rP  s         r   rS  rT    s     eR%A&&,,..%%))+"''! &&,,..
 F++f%CsMM95DFFdNFEESLEHr   c                    U R                  U R                  5        SU l        U R                  U l        SU l        / U l        g)z
Clear the console screen.
r   r   N)r   r   r   r   r   r   r   r8   s    r   r[   UnixConsole.clear3  s9     	$++&&&
r   c                p     SS K nUR                  5       (       a  UR                  $ g ! [         a     g f = fNr   )posixImportError_is_inputhook_installed
_inputhook)r9   rZ  s     r   
input_hookUnixConsole.input_hook=  s@    	 ((**### +  		s   ( 
55c                F    [         R                  " U R                  S5        g )Ns   [?2004hr   r  r{   r8   s    r   __enable_bracketed_paste$UnixConsole.__enable_bracketed_pasteF      
0r   c                F    [         R                  " U R                  S5        g )Ns   [?2004lra  r8   s    r   __disable_bracketed_paste%UnixConsole.__disable_bracketed_pasteI  rd  r   c                |    U R                  (       a#  U R                  (       a  U R
                  U l        O?U R                  (       a#  U R                  (       a  U R                  U l        O[        S5      eU R                  (       a#  U R                  (       a  U R                  U l        O?U R                  (       a#  U R                  (       a  U R                   U l        O[        S5      eU R"                  (       a  U R"                  U l        O?U R&                  (       a'  [(        R*                  " U R&                  S5      U l        OSU l        U R,                  (       a  U R,                  U l        O?U R0                  (       a'  [(        R*                  " U R0                  S5      U l        OSU l        U R2                  U l        g)zC
Set up the movement functions based on the terminal capabilities.
z"insufficient terminal (horizontal)z insufficient terminal (vertical)r   N)r   _UnixConsole__move_x_hpa_UnixConsole__move_xr   r   _UnixConsole__move_x_cub_cufr   r   _UnixConsole__move_x_cub1_cuf1RuntimeErrorr   r   _UnixConsole__move_y_cuu_cud_UnixConsole__move_yr   r   _UnixConsole__move_y_cuu1_cud1r   rf   r   r   tparmr   rk   r   r  r   r8   s    r   __setup_movementUnixConsole.__setup_movementL  s     YY499 11DMZZDJJ 33DMCDD99 11DMZZDJJ 33DMABB::

DIYYTYY2DIDI::

DIYYTYY2DIDI''r   c                   [        [        U5      [        U5      5      nSnSnSnSn	U H  n
X:  a    OU	[        U
5      -  n	US-  nM     Xu:  a@  X&   X6   :X  a6  X6   S:w  a.  U[        X6   5      -  nUS-  nXu:  a  X&   X6   :X  a
  X6   S:w  a  M.  X&S  X6S-   S  :X  a  U R                  (       a  XR                  S   :X  a&  XpR                  S   :  a  X(U X8S-   US-    :X  a  UnUn[        X6   5      nU R	                  Xq5        U R                  U R                  5        U R                  X6   5        X{-   U4U l        GOXu:  aj  X&S-   S  X6S-   S  :X  aZ  [        X&   5      [        X6   5      :X  a>  [        X6   5      nU R	                  Xq5        U R                  X6   5        X{-   U4U l        GOU R                  (       Ga  U R                  (       a  [        U5      U R                  :X  a  U[        U5      S-
  :  a  X6S-   S X&S :X  a  U R                  5         U R	                  U R                  S-
  U5        U R                  S-
  U4U l        U R                  U R                  5        [        X6   5      nU R	                  Xq5        U R                  U R                  5        U R                  X6   5        US-   U4U l        OyU R                  5         U R	                  Xq5        [        U5      [        U5      :  a  U R                  U R                  5        U R                  X6S  5        [        U5      U4U l        SU;   a  U R                  SU5        g g )Nr   r   r0  r   )r   r   rk   r   r   r   r   rf   r  r   r   r   )r9   r   r   r   px_coordminlenx_posx_coordpx_posjccharacter_widths               r   __write_changed_line UnixConsole.__write_changed_linep  s   
 T']DM2A}aLAaKF	  '.0&(tGN++GQJE '.0&( 6?gaik22tyyZZ]"jjm+5)WaZ%!)-LL""7>2OKK#dii(LL( 2A5DJ 	$	(<<W^$W^(<<"7>2OKK#LL( 2A5DJ III		W+$w-!++	B'7+<< KK

Q*a*DJdii("7>2OKK#dii(LL((1,a/DJ  KK#G}tG},!!$((+LL)g)DJW Q"	 r   c                >    U R                   R                  US45        g rY  )r  r   )r9   rC  s     r   __writeUnixConsole.__write  s    dAY'r   c                h    U R                   R                  [        R                  " U/UQ76 S45        g Nr   )r  r   r   rq  r9   fmtargss      r   __write_codeUnixConsole.__write_code  s'    fll366:;r   c                :    U(       a  U R                   " U/UQ76   g g r   )r   r  s      r   __maybe_write_codeUnixConsole.__maybe_write_code  s    c)D) r   c                    U R                   c   eU R                  c   eXR                  S   -
  nUS:  a  U R                  X R                   -  5        g US:  a   U R                  U* U R                  -  5        g g Nr   r   )r   r   r   r   r9   r   dys      r   __move_y_cuu1_cud1UnixConsole.__move_y_cuu1_cud1  sr    zz%%%zz%%%A6b::o.!Vsdjj01 r   c                    XR                   S   -
  nUS:  a  U R                  U R                  U5        g US:  a  U R                  U R                  U* 5        g g r  )r   r   r   r   r  s      r   __move_y_cuu_cudUnixConsole.__move_y_cuu_cud  O    A6dii,!Vdii"- r   c                b    XR                   S   :w  a  U R                  U R                  U5        g g rY  )r   r   r   )r9   r   s     r   __move_x_hpaUnixConsole.__move_x_hpa  s)    

1dii+ r   c                    U R                   c   eU R                  c   eXR                  S   -
  nUS:  a  U R                  U R                   U-  5        g US:  a   U R                  U R                  U* -  5        g g rY  )r   r   r   r   r9   r   dxs      r   __move_x_cub1_cuf1UnixConsole.__move_x_cub1_cuf1  st    zz%%%zz%%%A6djj2o.!VdjjRC01 r   c                    XR                   S   -
  nUS:  a  U R                  U R                  U5        g US:  a  U R                  U R                  U* 5        g g rY  )r   r   r   r   r  s      r   __move_x_cub_cufUnixConsole.__move_x_cub_cuf  r  r   c                H    U R                  U5        U R                  U5        g r   )rj  ro  r   s      r   __move_shortUnixConsole.__move_short  s    aar   c                    SX R                   -
  s=::  a  U R                  :  d  O   X R                   -
  5       eU R                  U R                  X R                   -
  U5        g rY  )r   r   r   r   r   s      r   __move_tallUnixConsole.__move_tall  sI    A%33FQ5FF3$))Q%6:r   c                    U R                  5       u  U l        U l        U R                  R	                  [        SS 5      5        g )Nresize)r  r   r  r   r   r   r   s      r   
__sigwinchUnixConsole.__sigwinch  s4    "&"5"5"7TZh 56r   c                l    U R                   (       a#  U R                  U R                  5        SU l         g g rY  )r   r  r~   r8   s    r   __hide_cursorUnixConsole.__hide_cursor  s*    ##DKK0"#D r   c                l    U R                   (       d#  U R                  U R                  5        SU l         g g r  )r   r  r   r8   s    r   __show_cursorUnixConsole.__show_cursor  s*    ""##DKK0"#D #r   c                r   U R                   (       dT  SU R                  S   4U l        U R                  S5        [        U R                  5      SU R
                  -  /-  nXl        g SU R                  4U l        U R                  SU R                  5        U R                  SU R
                  -  /-  nXl        g )Nr   r    )	r   r   r   r   r   r  r   r   r   )r9   nss     r   r    UnixConsole.repaint  s    DJJqM)DJLLT[[!Vdjj%8$99BKDMM)DJKK4==) 344BKr   c                   [         R                  U R                  R                  5      n UR	                  U5      nU(       d"  [
        R                  " U R                  U5        gUR                  5       u  pV[
        R                  " U R                  USU 5        XS n[        UR                  S5      5      nSUR                  S5      ;   a  XpR                  -  nU R                  (       a9  Ub6  X7-  S-  n[
        R                  " U R                  U R                  U-  5        O"[        R                  " [        U5      S-  5        GM   )zA Python implementation of the curses tputs function; the
curses one can't really be wrapped in a sane manner.

I have the strong suspicion that this is complexity that
will never do anyone any good.r   N   *r0  rC   g     @@)r2   r  r   ospeedsearchr   r  r{   spanr1  groupr   r   timesleepfloat)	r9   r  progbpsmr   r   delayncharss	            r   __tputsUnixConsole.__tputs  s     ll4--445C A-668DAHHT^^S!W-b'C
OEqwwqz!$yyS_+-V);<

5<&01 r   )-__buffer__gone_tall__move__move_x__move_y__offset__svtermstater}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   rk   rx   ry   r	  ru   r   r   r|   r  )r   r   r   r   )r   IO[bytes] | intr   r  r|   rq   r   rq   )rK   rs   )r   r1  rK   rr   )r   rq   rK   None)r  zint | bytesrK   r  )T)r  rs   rK   zEvent | Noner   )rE   rJ   rK   rs   )rK   r  )r   r1  rK   r  )2r   r   r   r   r:   r   r   r  r   r   r   r   r   r  r   r  r&  r"   r  r=  r   rG  rJ  r!   rS  r[   propertyr^  r  r  r   r   r   r   r  rp  rn  ri  rl  rk  r  r   r  r   r   r    	delayprogrA  r   __classcell__)r   s   @r   rM   rM      s>    !"!"E=E= E= 	E=
 E= E=N
	!Qf&(P" $&:

! 	%*
	9		 	.	* $ $11"(HU#n(<*2.,2.;7$
$

 !* 2 2r   rM   )r(   r#   r)   r1  rK   r  )2
__future__r   r  r   rerD   r   r5  r&   r  r   fcntlr   r   r   consoler   r   fancy_termiosr	   r
   r   unix_eventqueuer   utilsr   TYPE_CHECKINGtypingr   r   r   rm  r   error_errorSIGWINCH_EVENTr'   r!   r"   r+   potential_baudratesr2   __annotations__r)   compiler  r3   AttributeErrorr5   rM   r   r   r   <module>r     s  , #  	 	         # /  '   ,, H	l 	 --	77J-WlD1
; . . Dh-   	
# JJ78	$kkD
)*l
2' l
2)    D#s   "C? ?DD