§
    ¯eîi"  ã                   óŽ   — d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlmZ d„ Z	d„ Z
d	„ Zd
„ Zd„ ZdZdZdZdZdZd„ Zd„ Zd„ ZdS )z*OS specific console_attr helper functions.é    )Úabsolute_import)Údivision)Úunicode_literalsN)Úencodingc                  ót   — d} t           t          t          t          fD ]}	  |¦   «         } | r nŒ#  Y ŒxY w| pdS )zëGets the terminal x and y dimensions in characters.

  _GetTermSize*() helper functions taken from:
    http://stackoverflow.com/questions/263890/

  Returns:
    (columns, lines): A tuple containing the terminal x and y dimensions.
  N)éP   é   )Ú_GetTermSizePosixÚ_GetTermSizeWindowsÚ_GetTermSizeEnvironmentÚ_GetTermSizeTput)ÚxyÚget_terminal_sizes     ú`/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/fire/console/console_attr_os.pyÚGetTermSizer      sd   € ð €"å-Ý/Ý3Ý,ð.ð 	ð 	ÐðØÐÑÔ€bØ	ð ØˆðøðØ
€døøøØ	ˆˆxÐs    /¯3c                  ón  ‡‡‡— ddl ŠddlŠddlŠˆˆˆfd„}  | d¦  «        p | d¦  «        p
 | d¦  «        }|s{d}	 t          j        t          j        ¦   «         t          j        ¦  «        } | |¦  «        }n	#  d}Y nxY w|�t          j        |¦  «         n# |�t          j        |¦  «         w w xY w|S )z.Returns the Posix terminal x and y dimensions.r   Nc                 óž   •— 	 ‰                      d‰                     | ‰j        d¦  «        ¦  «        }|r|d         |d         fndS #  Y dS xY w)z¤Returns the terminal (x,y) size for fd.

    Args:
      fd: The terminal file descriptor.

    Returns:
      The terminal (x,y) size for fd or None on error.
    s   hhs   junké   r   N)ÚunpackÚioctlÚ
TIOCGWINSZ)ÚfdÚrcÚfcntlÚstructÚtermioss     €€€r   Ú_GetXYz!_GetTermSizePosix.<locals>._GetXY=   s[   ø€ ðð �=Š=˜ §¢¨B°Ô0BÀGÑ LÔ LÑMÔM€bØ!Ð+ˆb�Œe�R˜”Uˆ^ˆ^ tÐ+øðØˆTˆTøøøs   ƒAA ÁAr   é   )r   r   r   ÚosÚopenÚctermidÚO_RDONLYÚclose)r   r   r   r   r   r   s      @@@r   r
   r
   4   sñ   øøø€ ð €,€,€,à€-€-€-à€.€.€.ðð ð ð ð ð ð ð" €vˆa�y„yÐ*�F�F˜1‘I”IÐ*  ¨¡¤€"Ø	ð 	Ø	€BðÝŒ7•2”:‘<”<¥¤Ñ-Ô-€bØˆ6�"‰:Œ:€b€bøðØ€b€b€bøøøà	ˆÝ
Œ�‰Œˆøøð 
ˆÝ
Œ�‰Œˆˆð 
øøøà	€)s   ½;A9 Á8B Á9A?Á=B ÂB2c                  ó  — ddl } ddlm} ddlm} |j                             d¦  «        } |d¦  «        }|j                             ||¦  «        sdS |                      d|j        ¦  «        \  }}}}}	}
}}}}}||
z
  dz   }||z
  dz   }||fS )	z0Returns the Windows terminal x and y dimensions.r   N)Úcreate_string_buffer)Úwindlliôÿÿÿé   s   hhhhHhhhhhhr   )	r   Úctypesr%   r&   Úkernel32ÚGetStdHandleÚGetConsoleScreenBufferInfor   Úraw)r   r%   r&   ÚhÚcsbiÚunused_bufxÚunused_bufyÚunused_curxÚunused_curyÚunused_wattrÚleftÚtopÚrightÚbottomÚunused_maxxÚunused_maxyÚxÚys                     r   r   r   \   sÎ   € ð €-€-€-à)Ð)Ð)Ð)Ð)Ð)àÐÐÐÐÐð „o×"Ò" 3Ñ'Ô'€!Ø	Ð	˜bÑ	!Ô	!€$Ø	Œ×	3Ò	3°A°tÑ	<Ô	<ð Øˆ4ð  &Ÿ}š}¨^¸T¼XÑFÔFñ€;�˜[¨+°|Øˆˆe�VØ�Øˆd�l�QÑ€!Øˆs�l�QÑ€!Ø
ˆQˆ€-ó    c                  ó~   — t          t          j        d         ¦  «        t          t          j        d         ¦  «        fS )z=Returns the terminal x and y dimensions from the environment.ÚCOLUMNSÚLINES)Úintr   Úenviron© r<   r   r   r   u   s+   € å
�bŒj˜Ô#Ñ
$Ô
$¥c­"¬*°WÔ*=Ñ&>Ô&>Ð	?Ð?r<   c                  ó  — ddl } t          j        |                      ddg| j        ¬¦  «        ¦  «        }t          |¦  «        }t          j        |                      ddg| j        ¬¦  «        ¦  «        }t          |¦  «        }||fS )z5Returns the terminal x and y dimensions from tput(1).r   NÚtputÚcols)ÚstderrÚlines)Ú
subprocessr   ÚDecodeÚcheck_outputÚSTDOUTr@   )rH   ÚoutputrE   Úrowss       r   r   r   z   s    € àÐÐÐÝŒ?˜:×2Ò2°F¸FÐ3CØ:DÔ:Kð 3ñ Mô Mñ Nô N€&å	ˆV‰Œ€$ÝŒ?˜:×2Ò2°F¸GÐ3DØ:DÔ:Kð 3ñ Mô Mñ Nô N€&å	ˆV‰Œ€$Ø
�ˆÐr<   úúÚú õ   Ã c                  óP   — t           t          fD ]} 	  | ¦   «         c S #  Y ŒxY wd„ S )zÚReturns a function that reads one keypress from stdin with no echo.

  Returns:
    A function that reads one keypress from stdin with no echo or a function
    that always returns None if stdin does not support it.
  c                  ó   — d S ©NrB   rB   r<   r   ú<lambda>z#GetRawKeyFunction.<locals>.<lambda>›   s   € �€ r<   )Ú_GetRawKeyFunctionPosixÚ_GetRawKeyFunctionWindows)Úget_raw_key_functions    r   ÚGetRawKeyFunctionrZ   �   sL   € õ  7Ý8ð:ð ð ÐðØ!Ð!Ñ#Ô#Ð#Ð#Ð#øðØ
€døøøØ	ˆÐs   ’	ž"c                  ó&   ‡‡— ddl ŠddlŠˆˆfd„} | S )z+_GetRawKeyFunction helper using Posix APIs.r   Nc                  óþ  •‡— dddddddddddd	œ} t           j                             ¦   «          t           j                             ¦   «         Šˆfd
„}‰                     ‰¦  «        }	 ‰                     ‰¦  «          |¦   «         }|t          k    r‘ |¦   «         }	 |t          k    r|‰                     ‰‰j	        |¦  «         S | 
                    ¦   «         rn|} |¦   «         }|dk    r|}nŒT|                      |d¦  «        ‰                     ‰‰j	        |¦  «         S n	#  d}Y nxY w‰                     ‰‰j	        |¦  «         n!# ‰                     ‰‰j	        |¦  «         w xY w|t          t          fv rdn|S )z®Reads and returns one keypress from stdin, no echo, using Posix APIs.

    Returns:
      The key name, None for EOF, <*> for function keys, otherwise a
      character.
    ú
<UP-ARROW>ú<DOWN-ARROW>ú<LEFT-ARROW>ú<RIGHT-ARROW>ú	<PAGE-UP>ú<PAGE-DOWN>ú<HOME>ú<END>)ÚAÚBÚDÚCÚ5Ú6ÚHÚFÚMÚSÚTc                  óR   •— t          j        t          j        ‰ d¦  «        ¦  «        S )Nr   )r   rI   r   Úread)r   s   €r   Ú_GetKeyCharzE_GetRawKeyFunctionPosix.<locals>._GetRawKeyPosix.<locals>._GetKeyCharÀ   s   ø€ ÝŒ_�RœW R¨™^œ^Ñ,Ô,Ð,r<   TÚ~Ú N)ÚsysÚstdoutÚflushÚstdinÚfilenoÚ	tcgetattrÚsetrawÚ	_ANSI_CSIÚ	tcsetattrÚ	TCSADRAINÚisalphaÚgetÚ
_CONTROL_DÚ
_CONTROL_Z)Úansi_to_keyrr   Úold_settingsÚcÚprev_cr   r   Úttys        @€€r   Ú_GetRawKeyPosixz0_GetRawKeyFunctionPosix.<locals>._GetRawKeyPosix¥   sË  øø€ ð ØØØØØØØØØØðð €Kõ  „J×ÒÑÔÐå	Œ×	Ò	Ñ	Ô	€Bð-ð -ð -ð -ð -ð ×$Ò$ RÑ(Ô(€Lð=Ø	‡j‚j��n„n€nØ
ˆ+‰-Œ-€aØ	
�iŠˆØˆK‰MŒMˆð		Ø•)Š^ˆ^Øð ×Ò˜˜GÔ-¨|Ñ<Ô<Ð<Ð<ð �YŠY‰[Œ[ð ØØˆ&Øˆk‰mŒmˆ!Ø�#ŠXˆXØˆAØð		ð �Š˜q "Ñ%Ô%ð ×Ò˜˜GÔ-¨|Ñ<Ô<Ð<Ð<ð! 
øðØ
€a€a€aøøøà×Ò˜˜GÔ-¨|Ñ<Ô<Ð<Ð<ø€g×Ò˜˜GÔ-¨|Ñ<Ô<Ð<Ð<øøøØ�¥ZÐ0Ð0Ð0ˆ4ˆ4°aÐ7s&   Á(AD$ ÃA D$ Ä#E
 Ä$D*Ä(E
 Å
E()r‡   r   )rˆ   r   r‡   s    @@r   rW   rW   ž   s?   øø€ ð €*€*€*à€.€.€.ð38ð 38ð 38ð 38ð 38ð 38ðj 
Ðr<   c                  ó   ‡— ddl Šˆfd„} | S )z-_GetRawKeyFunction helper using Windows APIs.r   Nc            	      óø   •— ddddddddd	œ} t           j                             ¦   «          ˆfd
„} |¦   «         }|t          t          fv r|                       |¦   «         d¦  «        S |t          t          fv rdn|S )z°Reads and returns one keypress from stdin, no echo, using Windows APIs.

    Returns:
      The key name, None for EOF, <*> for function keys, otherwise a
      character.
    r]   r^   r_   r`   ra   rb   rc   rd   )rk   ÚPÚKrm   ÚIÚQÚGÚOc                  óP   •— t          j        ‰                      ¦   «         ¦  «        S rU   )r   rI   Úgetch©Úmsvcrts   €r   rr   zI_GetRawKeyFunctionWindows.<locals>._GetRawKeyWindows.<locals>._GetKeyCharø   s   ø€ ÝŒ_˜VŸ\š\™^œ^Ñ,Ô,Ð,r<   rt   N)ru   rv   rw   Ú_WINDOWS_CSI_1Ú_WINDOWS_CSI_2r€   r�   r‚   )Úwindows_to_keyrr   r…   r”   s      €r   Ú_GetRawKeyWindowsz4_GetRawKeyFunctionWindows.<locals>._GetRawKeyWindowsâ   sª   ø€ ð ØØØØØØØð	ð 	€Nõ „J×ÒÑÔÐð-ð -ð -ð -ð -ð 	ˆ‰Œ€Aà�^�^Ð,Ð,Ð,Ø×Ò  ¡¤¨rÑ2Ô2Ð2Ø�¥ZÐ0Ð0Ð0ˆ4ˆ4°aÐ7r<   r“   )r˜   r”   s    @r   rX   rX   Ý   s/   ø€ ð €-€-€-ð8ð 8ð 8ð 8ð 8ð> 
Ðr<   )Ú__doc__Ú
__future__r   r   r   r   ru   Úfire.consoler   r   r
   r   r   r   r|   r�   r‚   r•   r–   rZ   rW   rX   rB   r<   r   ú<module>rœ      s	  ðð  1Ð 0à &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à 	€	€	€	Ø 
€
€
€
à !Ð !Ð !Ð !Ð !Ð !ðð ð ð0%ð %ð %ðPð ð ð2@ð @ð @ð
	ð 	ð 	ð €	Ø€
Ø€
Ø€Ø€ðð ð ð"<ð <ð <ð~$ð $ð $ð $ð $r<   