ó
    F\h@l  ã            
      óÒ  • % S SK Jr  S SKrS SKJr  S SKJrJrJr  S SK	J
r
Jr  SSKJrJrJr  SSKJrJrJr  SS	KJr  \R*                  rSS
KJrJrJrJr  \" S5      u  rrrSHS jrSIS jr \!" / SPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSP\RD                  S :X  a  S!OS"QS#PS$PS%PS&PS'PS(PS)PS*PS+PS,PS-PS.PS/PS0PS1PS2PS3PS4PS5PS6PS7PS8PS9PS:P\#" \$\" S;S<5      5       V s/ s H  o S=:w  d  M
  U S>4PM     sn -   \#" \$\" S?S@5      5       V s/ s H  o RK                  5       (       d  M  U S>4PM     sn -   / SAQ-   5      r&SB\'SC'   \" SDSE9 " SF SG5      5       r(gs  sn f s  sn f )Jé    )ÚannotationsN)Úcontextmanager)Ú	dataclassÚfieldÚfields)Úcan_colorizeÚ
ANSIColorsé   )ÚcommandsÚconsoleÚinput)ÚwlenÚ	unbracketÚdisp_str)Útrace)ÚCallbackÚSimpleContextManagerÚKeySpecÚCommandNameé   c                 ó  • 0 n [        [        [        S5      5       H  n[        X'   M     [        [        [        S5      5       Vs/ s H  o"R	                  5       (       d  M  UPM     sn H  n[
        X'   M     [        =U S'   U S'   U $ s  snf )Né   Ú
Ú )ÚmapÚchrÚrangeÚSYNTAX_SYMBOLÚisalnumÚSYNTAX_WORDÚSYNTAX_WHITESPACE)ÚstÚcÚas      Ú%/usr/lib/python3.13/_pyrepl/reader.pyÚmake_default_syntax_tabler&   .   sr   € à€BÜ””e˜C“jÖ!ˆÜˆ‹ñ "äœS¤%¨£*Ô-Ó=Ò-�A·±·�aÑ-Ô=ˆÜˆ‹ñ >ä*Ð*€B€t�Hˆr�#‰wØ€Iùò >s   ÁB
Á"B
c                 óN  • 0 n [        [        5      R                  5        H�  n[        U[        5      (       d  M  [        U[        5      (       d  M1  UR                  S   R                  5       (       d  MU  XUR                  '   XUR                  R                  SS5      '   Mƒ     U $ )Nr   Ú_Ú-)
Úvarsr   ÚvaluesÚ
isinstanceÚtypeÚ
issubclassÚCommandÚ__name__ÚislowerÚreplace)ÚresultÚvs     r%   Úmake_default_commandsr5   9   sy   € Ø/1€FÜ”(‹^×"Ñ"Ö$ˆÜ�aœ×Ó¤:¨a´×#9Ó#9¸a¿j¹jÈ¹m×>SÑ>S×>UÓ>UØ!"�1—:‘:ÑØ34�1—:‘:×%Ñ% c¨3Ó/Ó0ñ %ð €Mó    )z\C-aúbeginning-of-line)z\C-bÚleft)z\C-cÚ	interrupt)z\C-dÚdelete)z\C-eúend-of-line)z\C-fÚright)z\C-gÚcancel)z\C-hÚ	backspace)z\C-jÚaccept)z	\<return>r?   )z\C-kz	kill-line)z\C-lzclear-screen)z\C-mr?   )z\C-tztranspose-characters)z\C-uzunix-line-discard)z\C-wzunix-word-rubout)z\C-x\C-uzupcase-region)z\C-yÚyankÚwin32© ))z\C-zÚsuspend)z\M-búbackward-word)z\M-czcapitalize-word)z\M-dz	kill-word)z\M-fúforward-word)z\M-lzdowncase-word)z\M-tztranspose-words)z\M-uzupcase-word)z\M-yzyank-pop)z\M--ú	digit-arg)z\M-0rF   )z\M-1rF   )z\M-2rF   )z\M-3rF   )z\M-4rF   )z\M-5rF   )z\M-6rF   )z\M-7rF   )z\M-8rF   )z\M-9rF   )z\M-\nr?   )z\\úself-insert)z	\x1b[200~Úenable_bracketed_paste)z	\x1b[201~Údisable_bracketed_paste)z\x03zctrl-cé    é   Ú\rG   é€   r   ))z\<up>Úup)z\<down>Údown)z\<left>r8   )z
\C-\<left>rD   )z\<right>r<   )z\C-\<right>rE   )z	\<delete>r:   )z\x1b[3~r:   )z\<backspace>r>   )z\M-\<backspace>zbackward-kill-word)z\<end>r;   )z\<home>r7   )z\<f1>Úhelp)z\<f2>zshow-history)z\<f3>z
paste-mode)z\EOFÚend)z\EOHÚhomeú'tuple[tuple[KeySpec, CommandName], ...]Údefault_keymapT)Úslotsc                  ó¤  • \ rS rSr% SrS\S'   \" \S9rS\S'   Sr	S	\S
'   Sr
S\S'   SrS\S'   SrS\S'   SrS\S'   \" \S9rS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S '   \" \S9rS!\S"'   SrS#\S$'   \" \S9rS%\S&'   S'rS(\S)'   \" SS*9rS+\S,'   \" \S9rS-\S.'   \" \S9rS\S/'   \" SS*9rS0\S1'   \" SS*9rS2\S3'   \" SS*9r S2\S4'   \" \S9r!S\S5'   Sr"S\S6'   Sr#S7\S8'   \$ " S9 S:5      5       r%\" \%S9r&S:\S;'   S_S< jr'S`S= jr(SaS> jr)\*SbS? j5       r+ScSdS@ jjr,ScSdSA jjr-ScSdSB jjr.ScSdSC jjr/SeSD jr0SfSE jr1SgShSF jjr2SiSG jr3SjSH jr4S_SI jr5SkSJ jr6SlSK jr7SmSL jr8S_SM jr9SnSN jr:S_SO jr;SoSP jr<S_SQ jr=\>SpSR j5       r?S_SS jr@SqSrST jjrAS_SU jrBS_SV jrCSsSW jrDS_SX jrEStSuSY jjrFSvSZ jrGScSwS[ jjrHSxS\ jrISyS] jrJS^rKg)zÚReaderé‰   a`  The Reader class implements the bare bones of a command reader,
handling such details as editing and cursor motion.  What it does
not support are such things as completion or history support -
these are implemented elsewhere.

Instance variables of note include:

  * buffer:
    A *list* (*not* a string at the moment :-) containing all the
    characters that have been entered.
  * console:
    Hopefully encapsulates the OS dependent stuff.
  * pos:
    A 0-based index into `buffer' for where the insertion point
    is.
  * screeninfo:
    Ahem.  This list contains some info needed to move the
    insertion point around reasonably efficiently.
  * cxy, lxy:
    the position of the insertion point in screen ...
  * syntax_table:
    Dictionary mapping characters to `syntax class'; read the
    emacs docs to see what this means :-)
  * commands:
    Dictionary mapping command names to command classes.
  * arg:
    The emacs-style prefix argument.  It will be None if no such
    argument has been provided.
  * dirty:
    True if we need to refresh the display.
  * kill_ring:
    The emacs-style kill-ring; manipulated with yank & yank-pop
  * ps1, ps2, ps3, ps4:
    prompts.  ps1 is the prompt for a one-line input; for a
    multiline input it looks like:
        ps2> first line of input goes here
        ps3> second and further
        ps3> lines get ps3
        ...
        ps4> and the last one gets ps4
    As with the usual top-level, you can set these to instances if
    you like; str() will be called on them (once) at the beginning
    of each command.  Don't put really long or newline containing
    strings here, please!
    This is just the default policy; you can change it freely by
    overriding get_prompt() (and indeed some standard subclasses
    do).
  * finished:
    handle1 will set this to a true value if a command signals
    that we're done.
zconsole.Consoler   ©Údefault_factoryú	list[str]Úbufferr   ÚintÚposz->> ÚstrÚps1z/>> Úps2z|.. Úps3z\__ Úps4zlist[list[str]]Ú	kill_ringÚ ÚmsgNú
int | NoneÚargFÚboolÚdirtyÚfinishedÚ
paste_modeÚin_bracketed_pastezdict[str, type[Command]]r   ztype[Command] | NoneÚlast_commandúdict[str, int]Úsyntax_tablerB   ztuple[tuple[str, str], ...]Úkeymap©Úinitúinput.KeymapTranslatorÚinput_transzlist[input.KeymapTranslator]Úinput_trans_stackÚscreenúlist[tuple[int, list[int]]]Ú
screeninfoútuple[int, int]ÚcxyÚlxyÚscheduled_commandsr   úCallback | NoneÚthreading_hookc                  óä   • \ rS rSr% SrS\S'   \" \S9rS\S'   \" SS9r	S	\S
'   \" \S9r
S\S'   \" SS9rS\S'   \" SS9rS\S'   \" SS9rS\S'   SrS\S'           SS jrSS jrSS jrSrg)ÚReader.RefreshCacheéÞ   Fri   rm   rY   r[   rw   rr   rx   ry   z	list[int]Úline_end_offsetsr]   r^   rz   r{   Ú
dimensionsÚinvalidatedc                ó.  • UR                   U l         UR                  5       U l        UR                  5       U l        UR                  U l        UR
                  U l        UR                  R                  UR                  R                  4U l	        SU l
        g ©NF)rm   Úcopyrw   ry   r^   r{   r   ÚwidthÚheightr„   r…   )ÚselfÚreaderrw   ry   s       r%   Úupdate_cacheÚ Reader.RefreshCache.update_cacheé   sk   € ð
 '-×&?Ñ&?ˆDÔ#Ø Ÿ+™+›-ˆDŒKØ(Ÿo™oÓ/ˆDŒOØ—z‘zˆDŒHØ—z‘zˆDŒHØ$Ÿn™n×2Ñ2°F·N±N×4IÑ4IÐIˆDŒOØ$ˆDÕr6   c                óì   • U R                   (       a  gUR                  R                  UR                  R                  4nX R                  :g  nUR
                  U R
                  :g  nU=(       d    U(       + $ r‡   )r…   r   r‰   rŠ   r„   rm   )r‹   rŒ   r„   Údimensions_changedÚpaste_changeds        r%   ÚvalidÚReader.RefreshCache.validö   s]   € Ø××ØØŸ™×-Ñ-¨v¯~©~×/DÑ/DÐDˆJØ!+¯©Ñ!>ÐØ"×5Ñ5¸×9PÑ9PÑPˆMØ*×;¨mÔ<Ð<r6   c                ó  • U R                   (       a  [        S5      eSn[        UR                  U R                  5      n[	        U R
                  5      nUS:”  a(  U R
                  US-
     nX2:”  a   X$4$ US-  nUS:”  a  M(  SnX$4$ )NzCache is invalidatedr   r
   )r…   Ú
ValueErrorÚminr^   Úlenrƒ   )r‹   rŒ   ÚoffsetÚearliest_common_posÚnum_common_liness        r%   Úget_cached_locationÚ'Reader.RefreshCache.get_cached_locationþ   s›   € Ø××Ü Ð!7Ó8Ð8ØˆFÜ"% f§j¡j°$·(±(Ó";ÐÜ" 4×#8Ñ#8Ó9ÐØ" QÓ&Ø×.Ñ.Ð/?À!Ñ/CÑD�Ø&Ó/Øð Ð+Ð+ð ! AÑ%Ð ð	 # QÕ&ð �ØÐ+Ð+r6   )r{   r„   rm   r…   r^   rw   ry   N)rŒ   rW   rw   r[   ry   rx   ÚreturnÚNone)rŒ   rW   r�   ri   )rŒ   rW   r�   rz   )r0   Ú
__module__Ú__qualname__Ú__firstlineno__rm   Ú__annotations__r   Úlistrw   ry   rƒ   r^   r{   r„   r…   r�   r’   r›   Ú__static_attributes__rB   r6   r%   ÚRefreshCacher�   Þ   s§   ‡ à#(Ð˜DÓ(Ù!°$Ñ7ˆ�	Ó7Ù27¸UÑ2Cˆ
Ð/ÓCÙ&+¸DÑ&AÐ˜)ÓAÙ˜eÑ$ˆˆSÓ$Ù$¨%Ñ0ˆˆ_Ó0Ù&+°Ñ&7ˆ
�OÓ7Ø!ˆ�TÓ!ð	%Ø!'ð	%à!*ð	%ð &Að	%ð ô		%ô	=÷	,r6   r¥   Úlast_refresh_cachec                ó¾  • U R                  5       U l        [        R                  " U R                  SSS9U l        S/ 4/U l        U R                  5       U l        U R                  S4U l	        [        5       U l
        U R
                  U R                  l        U R                  U R                  l        U R                  U R                  l        SU R                  l        g )Núinvalid-keyrG   ©Úinvalid_clsÚcharacter_clsr   ©r   r   )Úcollect_keymaprq   r   ÚKeymapTranslatorru   ry   Úpos2xyr{   r^   r|   r   r¦   r„   ©r‹   s    r%   Ú__post_init__ÚReader.__post_init__  s«   € ð ×)Ñ)Ó+ˆŒÜ ×1Ò1Ø�K‰K ]À-ñ
ˆÔð ˜r˜7˜)ˆŒØ—;‘;“=ˆŒØ—H‘H˜a�=ˆŒÜ(›NˆÔà-1¯_©_ˆ×ÑÔ*Ø&*§h¡hˆ×ÑÔ#Ø&*§h¡hˆ×ÑÔ#Ø-3ˆ×ÑÕ*r6   c                ó   • [         $ ©N)rT   r°   s    r%   r­   ÚReader.collect_keymap!  s   € ÜÐr6   c                óü  • SnSnU R                   R                  U 5      (       a  U R                   R                  U 5      u  p!U R                   R                  nX1S2	 U R                   R                  nXAS2	 U R                   R
                  nXQS2	 U R                  nXb-  nU=(       a    U R                  US-
     S:g  nSR                  U R                  US 5      R                  S5      nSn	Sn
[        X�5       GHo  u  p¼[        U5      nSUs=::  a  U::  a  O  OXk4U l        Sn	O(U	(       a!  U
S-  n
X R                  R                  :”  a    GO U(       a  SnSnO$U R                  X½Us=:¬  =(       a    S:¬  Os  5      nSU;   aR  UR!                  S5      u  nnnUR#                  U5        UR#                  U5        UR#                  S/ 45        SU;   a  MR  XmS-   -  nU R%                  U5      u  nn['        U5      u  nn[)        U5      U-   U R                  R*                  -  n[-        SUS	9  US:X  d  U(       dQ  X-S-   -  nUR#                  U5        UR#                  USR                  U5      -   5        UR#                  UU45        GM’  UnUn[/        US-   5       HÇ  nSnSnU H/  nUU-   U-   U R                  R*                  :¼  a    OUS-  nUU-  nM1     [        U5      U:”  a  UU-  nS
nS/nOUUS-   -  nSn/ nUR#                  U5        USR                  USU 5      -   U-   nUSU U-   nUR#                  U5        UR#                  UU45        UUS nUUS nSnSnMÉ     GMr     X@l        U R1                  5       U l        U R4                  (       aF  U R4                  R                  S5       H'  nUR#                  U5        UR#                  S/ 45        M)     U R                   R7                  XU5        U$ )zETranslate changes in self.buffer into changes in self.console.screen.r   Nr
   r   re   FTzwrapcount = {wrapcount})Ú	wrapcountrL   )r¦   r’   r›   rw   ry   rƒ   r^   r\   ÚjoinÚsplitÚ	enumerater—   r|   r   rŠ   Ú
get_promptÚ	partitionÚappendÚprocess_promptr   Úsumr‰   r   r   r¯   r{   rf   r�   ) r‹   rš   r˜   rw   ry   Úlast_refresh_line_end_offsetsr^   Úprompt_from_cacheÚlinesÚcursor_foundÚlines_beyond_cursorÚlnÚlineÚline_lenÚpromptÚ
pre_promptr(   Ú
prompt_lenÚcharsÚchar_widthsr·   ÚpreÚprelenÚwrapÚindex_to_wrap_beforeÚcolumnÚ
char_widthÚpostÚafterÚrenderÚrender_widthsÚmlines                                    r%   Úcalc_screenÚReader.calc_screen$  s  € ð ÐØˆØ×"Ñ"×(Ñ(¨×.Ñ.Ø'+×'>Ñ'>×'RÑ'RÐSWÓ'XÑ$ˆFà×(Ñ(×/Ñ/ˆØÑ$Ð%à×,Ñ,×7Ñ7ˆ
ØÑ(Ð)à(,×(?Ñ(?×(PÑ(PÐ%Ø)Ñ*;Ð<à�h‰hˆØ‰ˆà#×G¨¯©°F¸Q±JÑ(?À4Ñ(GÐØ—‘˜Ÿ™ F GÐ,Ó-×3Ñ3°DÓ9ˆØˆØÐÜ! %×:‰HˆBÜ˜4“yˆHØ�CÕ#˜8Ö#Ø˜7�”Ø#‘ÞØ# qÑ(Ð#Ø&¯©×)<Ñ)<Ó<ò Þ à$)Ð!Ø‘àŸ™¨¸×-AÓ-AÀÔ-AÓB�Ø˜&“.Ø(.×(8Ñ(8¸Ó(>Ñ%�
˜A˜vØ-×4Ñ4°VÔ<Ø—‘˜jÔ)Ø×!Ñ! 1 b 'Ô*ð	 ˜&•.ð
 ˜a‘<ÑˆCØ!%×!4Ñ!4°VÓ!<ÑˆF�JÜ!)¨$£ÑˆE�;Ü˜[Ó)¨JÑ6¸4¿<¹<×;MÑ;MÑMˆIÜÐ+°yÒAØ˜A‹~¦[Ø Q™,Ñ&�Ø-×4Ñ4°VÔ<Ø—‘˜f r§w¡w¨u£~Ñ5Ô6Ø×!Ñ! :¨{Ð";×<à�Ø#�Ü! )¨a¡-Ö0�DØ+,Ð(Ø�FÛ&1˜
Ø! JÑ.°Ñ7¸4¿<¹<×;MÑ;MÓMÙ!Ø,°Ñ1Ð,Ø *Ñ,šñ	 '2ô
 ˜5“zÐ$8Ó8ØÐ"6Ñ6˜Ø#˜Ø!" ™àÐ"6¸Ñ":Ñ:˜Ø!˜Ø "˜Ø1×8Ñ8¸Ô@Ø  2§7¡7¨5Ð1FÐ2FÐ+GÓ#HÑHÈ4ÑO�FØ$/Ð0EÐ1EÐ$FÈÑ$N�MØ—M‘M &Ô)Ø×%Ñ% v¨}Ð&=Ô>Ø!Ð"6Ð"7Ð8�EØ"-Ð.BÐ.CÐ"D�KØ�CØ’Fô1 1ñG ;ðx %ŒØ—;‘;“=ˆŒØ�8�8ØŸ™Ÿ™¨Ö-�Ø—‘˜eÔ$Ø×!Ñ! 1 b 'Ö*ñ .ð 	×Ñ×,Ñ,¨T¸:ÔFØˆr6   c                óD   • [        U SS9n[        U SS9nU[        U5      4$ )zõReturn a tuple with the prompt string and its visible length.

The prompt string has the zero-width brackets recognized by shells
(\x01 and \x02) removed.  The length ignores anything between those
brackets as well as any ANSI escape sequences.
F)Úincluding_contentT)r   r   )rÈ   Ú
out_promptÚvisible_prompts      r%   r¾   ÚReader.process_promptˆ  s,   € ô ˜v¸Ñ?ˆ
Ü" 6¸TÑBˆØœ4 Ó/Ð/Ð/r6   c                ó°  • Uc  U R                   nU R                  nU R                  nUS-  nUS:¼  aM  UR                  X1   [        5      [        :w  a-  US-  nUS:¼  a"  UR                  X1   [        5      [        :w  a  M-  US:¼  aM  UR                  X1   [        5      [        :X  a-  US-  nUS:¼  a"  UR                  X1   [        5      [        :X  a  M-  US-   $ )z™Return the 0-based index of the word break preceding p most
immediately.

p defaults to self.pos; word boundaries are determined using
self.syntax_table.r
   r   )r^   rp   r\   Úgetr    ©r‹   Úpr"   Úbs       r%   ÚbowÚ
Reader.bow”  sº   € ð ‰9Ø—‘ˆAØ×ÑˆØ�K‰KˆØ	ˆQ‰ˆØ�1‹f˜Ÿ™ ¡¤kÓ2´kÓAØ�‰FˆAð �1‹f˜Ÿ™ ¡¤kÓ2´kÕAà�1‹f˜Ÿ™ ¡¤kÓ2´kÓAØ�‰FˆAð �1‹f˜Ÿ™ ¡¤kÓ2´kÕAà�1‰uˆr6   c                óè  • Uc  U R                   nU R                  nU R                  nU[        U5      :  aV  UR	                  X1   [
        5      [
        :w  a6  US-  nU[        U5      :  a"  UR	                  X1   [
        5      [
        :w  a  M6  U[        U5      :  aV  UR	                  X1   [
        5      [
        :X  a6  US-  nU[        U5      :  a"  UR	                  X1   [
        5      [
        :X  a  M6  U$ )z™Return the 0-based index of the word break following p most
immediately.

p defaults to self.pos; word boundaries are determined using
self.syntax_table.r
   )r^   rp   r\   r—   rà   r    rá   s       r%   ÚeowÚ
Reader.eow¥  s½   € ð ‰9Ø—‘ˆAØ×ÑˆØ�K‰KˆØ”#�a“&‹j˜RŸV™V A¡D¬+Ó6¼+ÓEØ�‰FˆAð ”#�a“&‹j˜RŸV™V A¡D¬+Ó6¼+ÕEà”#�a“&‹j˜RŸV™V A¡D¬+Ó6¼+ÓEØ�‰FˆAð ”#�a“&‹j˜RŸV™V A¡D¬+Ó6¼+ÕEàˆr6   c                ó’   • Uc  U R                   nU R                  nUS-  nUS:¼  a  X!   S:w  a  US-  nUS:¼  a
  X!   S:w  a  M  US-   $ )zaReturn the 0-based index of the line break preceding p most
immediately.

p defaults to self.pos.r
   r   r   )r^   r\   ©r‹   râ   rã   s      r%   ÚbolÚ
Reader.bolµ  sV   € ð
 ‰9Ø—‘ˆAØ�K‰KˆØ	ˆQ‰ˆØ�1‹f˜™ ›Ø�‰FˆAð �1‹f˜™ �à�1‰uˆr6   c                ó¦   • Uc  U R                   nU R                  nU[        U5      :  a&  X!   S:w  a  US-  nU[        U5      :  a
  X!   S:w  a  M  U$ )zaReturn the 0-based index of the line break following p most
immediately.

p defaults to self.pos.r   r
   )r^   r\   r—   rê   s      r%   ÚeolÚ
Reader.eolÂ  sQ   € ð
 ‰9Ø—‘ˆAØ�K‰KˆØ”#�a“&‹j˜Q™T T›\Ø�‰FˆAð ”#�a“&‹j˜Q™T T�\àˆr6   c                ó^   • U R                   U   S   [        U R                   U   S   5      -   $ )z#Return the last x-offset for line yr   r
   )ry   r¿   )r‹   Úys     r%   Ú
max_columnÚReader.max_columnÎ  s.   € à�‰˜qÑ! !Ñ$¤s¨4¯?©?¸1Ñ+=¸aÑ+@Ó'AÑAÐAr6   c                ó2   • [        U R                  5      S-
  $ )Nr
   )r—   ry   r°   s    r%   Úmax_rowÚReader.max_rowÒ  s   € Ü�4—?‘?Ó# aÑ'Ð'r6   c                ó8   • U R                   c  U$ U R                   $ )zmReturn any prefix argument that the user has supplied,
returning `default' if there is None.  Defaults to 1.
)rh   )r‹   Údefaults     r%   Úget_argÚReader.get_argÕ  s   € ð �8‰8ÑØˆNØ�x‰xˆr6   c                óô  • U R                   b  U(       a  SU R                    S3nO�U R                  (       a  U R                  (       d  SnOxSU R                  ;   a\  US:X  a  U R                  nOUU R
                  (       a+  XR                  R                  S5      :X  a  U R
                  nOU R                  nOU R                  nU R                  (       a$  [        R                   U [        R                   3nU$ )z@Return what should be in the left-hand margin for line
`lineno'.z(arg: z) z(paste) r   r   )rh   rl   rm   r\   ra   rc   Úcountrb   r`   r   r	   ÚBOLD_MAGENTAÚRESET)r‹   ÚlinenoÚcursor_on_linerÈ   s       r%   r»   ÚReader.get_promptÝ  s¶   € ð �8‰8Ñ¦NØ˜dŸh™h˜Z rÐ*‰FØ�_�_ T×%<×%<Ø‰FØ�T—[‘[Ó Ø˜‹{ØŸ™‘Ø——˜f¯©×(9Ñ(9¸$Ó(?Ó?ØŸ™‘àŸ™‘à—X‘XˆFà××Ü"×/Ñ/Ð0°°¼×9IÑ9IÐ8JÐKˆFØˆr6   c                óZ   • U R                   R                  U R                  5        Xl        g r´   )rv   r½   ru   )r‹   Úitranss     r%   Úpush_input_transÚReader.push_input_transò  s"   € Ø×Ñ×%Ñ% d×&6Ñ&6Ô7Ø!Õr6   c                óB   • U R                   R                  5       U l        g r´   )rv   Úpopru   r°   s    r%   Úpop_input_transÚReader.pop_input_transö  s   € Ø×1Ñ1×5Ñ5Ó7ˆÕr6   c                óª  • SnSnXB:  ac  U R                   U   u  pV[        U5      nU[        U5      -   U R                  R                  :¬  nU(       a  X7S-
  -  nOX7S-   -  nUS-  nXB:  a  Mc  Sn	U R                   U   S   n
X¡:  aH  U R                   U   S   U	   S:X  a  U	S-  n	M%  X R                   U   S   U	   -  n
U	S-  n	US-  nX¡:  a  MH  X0l        g)z%Set pos according to coordinates x, yr   r
   N)ry   r—   r¿   r   r‰   r^   )r‹   Úxrñ   r^   ÚirÊ   rÌ   r˜   Úin_wrapped_lineÚjÚcur_xs              r%   Úsetpos_from_xyÚReader.setpos_from_xyù  sö   € àˆØˆØ‹eØ&*§o¡o°aÑ&8Ñ#ˆJÜ˜Ó%ˆFØ(¬3¨{Ó+;Ñ;¸t¿|¹|×?QÑ?QÑQˆOÞØ ‘zÑ!‘à ‘zÑ!�Ø�‰FˆAð �eð ˆØ—‘ Ñ" 1Ñ%ˆØ‹iØ�‰˜qÑ! !Ñ$ QÑ'¨1Ó,Ø�Q‘�ÙØ—_‘_ QÑ'¨Ñ*¨1Ñ-Ñ-ˆEØ�‰FˆAØ�1‰HˆCð �ið �r6   c                óF  • Su  p/ nU R                   nSUs=::  a  [        U R                  5      ::  d   e   eU[        U R                  5      :X  aR  [        U R                  5      S:”  a9  [        U R                  5      S-
  nU R                  U   u  pU[	        U5      -   U4$ U R                   H]  u  p[        U5      nU[	        U5      -   U R
                  R                  :¬  nU(       a  US-  nXT:¼  a    OU(       d  US-  nXE-  nUS-  nM_     U[	        USU 5      -   U4$ )z.Return the x, y coordinates of position 'pos'.r¬   r   r
   N)r^   r—   r\   ry   r¿   r   r‰   )r‹   rÊ   rñ   rÌ   r^   r˜   r  s          r%   r¯   ÚReader.pos2xy  s  € ð ‰ˆ
Ø!#ˆØ�h‰hˆØ�CÕ+œ3˜tŸ{™{Ó+Ó+Ð+Ñ+Ð+Ð+ð ”#�d—k‘kÓ"Ó"¤s¨4¯?©?Ó';¸aÓ'?Ü�D—O‘OÓ$ qÑ(ˆAØ&*§o¡o°aÑ&8Ñ#ˆJØ¤ KÓ 0Ñ0°!Ð3Ð3à'+§¤Ñ#ˆJÜ˜Ó%ˆFØ(¬3¨{Ó+;Ñ;¸t¿|¹|×?QÑ?QÑQˆOÞØ˜!‘�à‹}Ùæ"Ø˜!‘�à‰MˆCØ�‰FŠAñ (7ð œC ¨D¨SÐ 1Ó2Ñ2°AÐ5Ð5r6   c                ó¦   • [        U5      U R                  U R                  U R                  & U =R                  [        U5      -  sl        SU l        g)z%Insert 'text' at the insertion point.TN)r£   r\   r^   r—   rj   )r‹   Útexts     r%   ÚinsertÚReader.insert1  s7   € ä+/°«:ˆ�‰�D—H‘H˜tŸx™xÐ(Ø�Š”C˜“IÑ�Øˆ�
r6   c                ót   • U R                  5       U l        U R                  R                  " U R                  6   g)z.Move the cursor to reflect changes in self.posN)r¯   r{   r   Úmove_cursorr°   s    r%   Úupdate_cursorÚReader.update_cursor7  s%   € à—;‘;“=ˆŒØ�‰× Ò  $§(¡(Ò+r6   c                ó`   • [        USS5      (       a  U R                  b  SU l        SU l        gg)z6This function is called to allow post command cleanup.Úkills_digit_argTN)Úgetattrrh   rj   ©r‹   Úcmds     r%   Úafter_commandÚReader.after_command<  s/   € ä�3Ð)¨4×0Ñ0Ø�x‰xÑ#Ø!�”
ØˆD�Hð 1r6   c                ó   •  U R                   R                  5         SU l        SU l        U R                  SS2	 SU l        SU l        SU l        U R                  5         U R                  (       aA  U R                  R                  5       nU R                  U/ 45        U R                  (       a  M@  gg! [         a    U R                  5         e f = f)z~Get ready to run.  Call restore when finished.  You must not
write to the console in between the calls to prepare and
restore.NFr   T)r   Úpreparerh   rk   r\   r^   rj   rn   rØ   ÚBaseExceptionÚrestorer}   r  Údo_cmdr  s     r%   r$  ÚReader.prepareC  s¬   € ð	Ø�L‰L× Ñ Ô"ØˆDŒHØ!ˆDŒMØ—‘šA�ØˆDŒHØˆDŒJØ $ˆDÔØ×ÑÔð
 ×%×%Ø×)Ñ)×-Ñ-Ó/ˆCØ�K‰K˜˜b˜	Ô"ð ×%×%Ó%øô	 ó 	Ø�L‰LŒNØð	ús   ‚AB1 Â1Cc                óP   • U R                   (       d  g[        XR                   5      $ r‡   )rn   r.   )r‹   Úclss     r%   Úlast_command_isÚReader.last_command_isX  s   € Ø× × ØÜ˜#×0Ñ0Ó1Ð1r6   c                ó8   • U R                   R                  5         g)zClean up after a run.N)r   r&  r°   s    r%   r&  ÚReader.restore]  s   € à�‰×ÑÕr6   c           	   #  óV  #   • [        U 5       Vs0 s H"  oR                  [        XR                  5      _M$     nn U R                  5         Sv •  S H  n[	        XX#   5        M     U R                  5         gs  snf ! S H  n[	        XX#   5        M     U R                  5         f = f7f)z0A context manager to delegate to another reader.N)rf   r`   ra   rb   rc   rl   )r   Únamer  r&  Úsetattrr$  )r‹   ÚfÚ
prev_staterh   s       r%   rC   ÚReader.suspenda  s‹   é € ô >DÀD¼\ÓJº\¸—f‘fœg d¯F©FÓ3Ò3¹\ˆ
ÐJð	Ø�L‰LŒNÛãH�Ü˜ :¡?Ö3ñ Ià�L‰L�Nùò Køó
 I�Ü˜ :¡?Ö3ñ Ià�L‰L�Nüs&   ‚B)�)A8¹B)¼A= Á-B)Á=)B&Â&B)c                ó   • g)z2Called when a command signals that we're finished.NrB   r°   s    r%   ÚfinishÚReader.finishm  s   € àr6   c                ó`   • SU-   S-   U l         SU l        U R                  R                  5         g )Nz! r   T)rf   rj   r   Úbeep)r‹   rf   s     r%   ÚerrorÚReader.errorq  s)   € Ø˜#‘: Ñ#ˆŒØˆŒ
Ø�‰×ÑÕr6   c                óH   • U R                   (       a  U R                  5         g g r´   )rj   Úrefreshr°   s    r%   Úupdate_screenÚReader.update_screenv  s   € Ø�:�:Ø�L‰L�Nð r6   c                ó  • U R                   (       a%  U R                  (       a  U R                  S   S:X  d  gU R                  5       U l        U R                  R                  U R                  U R                  5        SU l        g)z#Recalculate and refresh the screen.éÿÿÿÿr   NF)rm   r\   rØ   rw   r   r=  r{   rj   r°   s    r%   r=  ÚReader.refreshz  sX   € à×"×" t§{§{¸4¿;¹;Àr¹?ÈdÓ;RØð ×&Ñ&Ó(ˆŒØ�‰×Ñ˜TŸ[™[¨$¯(©(Ô3Øˆ�
r6   c                ó�  • [        SUS9  [        US   [        5      (       a.  U R                  R	                  US   [        R
                  5      nO[        US   [        5      (       a  US   nOgU" U /UQ76 nUR                  5         U R                  U5        U R                  (       a  U R                  5         OU R                  5         [        U[        R                  5      (       d  X l        [        UR                  5      U l        U R                   (       a+  U R"                  R                  5         U R                  5         gg)z¥`cmd` is a tuple of "event_name" and "event", which in the current
implementation is always just the "buffer" which happens to be a list
of single-character strings.zreceived command {cmd})r   r   N)r   r,   r_   r   rà   Úinvalid_commandr-   Údor!  rj   r=  r  Ú	digit_argrn   ri   r6  rk   r   )r‹   r   Úcommand_typeÚcommands       r%   r'  ÚReader.do_cmd„  sí   € ô
 	Ð&¨CÒ0Ü�c˜!‘fœc×"Ñ"ØŸ=™=×,Ñ,¨S°©V´X×5MÑ5MÓN‰LÜ˜˜A™¤×%Ñ%Ø˜q™6‰Làá˜tÐ* cÒ*ˆØ�
‰
Œà×Ñ˜7Ô#à�:�:Ø�L‰L�Nà×ÑÔ ä˜#œx×1Ñ1×2Ñ2Ø ,Ôä˜WŸ^™^Ó,ˆŒØ�=�=Ø�L‰L×ÑÔ!Ø�K‰K�Mð r6   c                ó  • U R                   nUc"  S[        R                  ;   a  SSKJn  U" U 5        Ub   U" 5         U R                  R                  nU(       a	   U" 5         g g ! [
         a     N3f = f! [
         a     g f = f)NÚ	threadingr
   )Úinstall_threading_hook)r   ÚsysÚmodulesÚ_threading_handlerrL  Ú	Exceptionr   Ú
input_hook)r‹   r   rL  rQ  s       r%   Ú	run_hooksÚReader.run_hooks£  s„   € Ø×,Ñ,ˆØÑ! k´S·[±[Ó&@ÝBÙ" 4Ô(ØÑ%ðÙÔ ð —\‘\×,Ñ,ˆ
ÞðÙ•ð øô	 ó Ùðûô ó Ùðús#   ¶A$ ÁA4 Á$
A1Á0A1Á4
BÂ Bc                ó„  • U R                   (       a  SU l         SU l         U R                  5         U R                  R	                  S5        U R                  R                  SS9nU(       d
  U(       a  MU  gSnUR                  S:X  a  U R                  R                  U5        ODUR                  S:X  a  U R                  5         O#UR                  S:X  a  U R                  5         OSnU(       a  U R                  R                  5       nOUR                  UR                  /nUc  U(       a  GM  gU R                  U5        g)	zHandle a single event.  Wait as long as it takes if block
is true (the default), otherwise return False if no event is
pending.re   Téd   F©ÚblockÚkeyÚscrollÚresize)rf   rj   rR  r   ÚwaitÚ	get_eventÚevtru   Úpushr=  rà   Údatar'  )r‹   rW  ÚeventÚ	translater   s        r%   Úhandle1ÚReader.handle1µ  sõ   € ð
 �8�8ØˆDŒHØˆDŒJàà�N‰NÔØ�L‰L×Ñ˜cÔ"Ø—L‘L×*Ñ*°Ð*Ð7ˆEÞÞÙØàˆIà�y‰y˜EÓ!Ø× Ñ ×%Ñ% eÕ,Ø—‘˜hÓ&Ø—‘•Ø—‘˜hÓ&Ø—‘•à!�	æØ×&Ñ&×*Ñ*Ó,‘à—y‘y %§*¡*Ð-�à‰{ÞÚØà�K‰K˜ÔØr6   c                óX   • U R                   R                  U5        U R                  SS9  g )NFrV  )r   Ú	push_charrb  )r‹   Úchars     r%   re  ÚReader.push_charà  s"   € Ø�‰×Ñ˜tÔ$Ø�‰˜5ˆÒ!r6   c                ó*  • U R                  5          Ub  U" 5         U R                  5         U R                  (       d#  U R                  5         U R                  (       d  M#  U R	                  5       U R                  5         $ ! U R                  5         f = f)z|Read a line.  The implementation of this method also shows
how to drive Reader if you want more control over the event
loop.)r$  r=  rk   rb  Úget_unicoder&  )r‹   Ústartup_hooks     r%   ÚreadlineÚReader.readlineä  sb   € ð 	�‰Œð		ØÑ'Ù”Ø�L‰LŒNØ—m—mØ—‘”ð —m—m‘mà×#Ñ#Ó%ð �L‰L�NøˆD�L‰L�Nús   ’AB  Á B  Â Bc                óz   • U R                   X44-   U l         [        R                  " U R                   SSS9U l        g )Nr¨   rG   r©   )rq   r   r®   ru   )r‹   ÚspecrH  s      r%   ÚbindÚReader.bindô  s5   € Ø—k‘k d _Ð$6Ñ6ˆŒÜ ×1Ò1Ø�K‰K ]À-ñ
ˆÕr6   c                ó8   • SR                  U R                  5      $ )z.Return the current buffer as a unicode string.re   )r¸   r\   r°   s    r%   ri  ÚReader.get_unicodeú  s   € à�w‰w�t—{‘{Ó#Ð#r6   )rh   r   r{   rj   rk   ru   rq   rn   r|   rf   r^   rw   ry   )r�   rž   )r�   rS   )r�   r[   )rÈ   r_   r�   ztuple[str, int]r´   )râ   rg   r�   r]   )rñ   r]   r�   r]   )r�   r]   )r
   )rø   r]   r�   r]   )rÿ   r]   r   ri   r�   r_   )r  rt   r�   rž   )r  r]   rñ   r]   r�   rž   )r�   rz   )r  zstr | list[str]r�   rž   )r   r/   r�   rž   )r*  r-   r�   ri   )r�   r   )Únone)rf   r_   r�   rž   )r   ztuple[str, list[str]]r�   rž   )T)rW  ri   r�   ri   )rf  zint | bytesr�   rž   )rj  r~   r�   r_   )rn  r   rH  r   r�   rž   )r�   r_   )Lr0   rŸ   r    r¡   Ú__doc__r¢   r   r£   r\   r^   r`   ra   rb   rc   rd   rf   rh   rj   rk   rl   rm   r5   r   rn   r&   rp   rq   ru   rv   rw   ry   r{   r|   r}   r   r   r   r¥   r¦   r±   r­   rØ   Ústaticmethodr¾   rä   rç   rë   rî   rò   rõ   rù   r»   r  r  r  r¯   r  r  r!  r$  r+  r&  r   rC   r6  r:  r>  r=  r'  rR  rb  re  rk  ro  ri  r¤   rB   r6   r%   rW   rW   ‰   sN  ‡ ñ2ðh Óñ ¨dÑ3€FˆIÓ3Ø€CˆƒLØ€CˆÓØ€CˆÓØ€CˆÓØ€CˆÓÙ!&°tÑ!<€IˆÓ<Ø€CˆƒMØ€CˆÓØ€Eˆ4ÓØ€HˆdÓØ€J�ÓØ$Ð˜Ó$Ù).Ð?TÑ)U€HÐ&ÓUØ)-€LÐ&Ó-Ù#(Ð9RÑ#S€L�.ÓSØ*,€FÐ'Ó,Ù*/°UÑ*;€KÐ'Ó;Ù6;ÈDÑ6QÐÐ3ÓQÙ¨dÑ3€FˆIÓ3Ù.3¸Ñ.?€JÐ+Ó?Ù  eÑ,€CˆÓ,Ù  eÑ,€CˆÓ,Ù$)¸$Ñ$?Ð˜	Ó?Ø€L�$ÓØ&*€N�OÓ*ð ÷,,ð ,,ó ð,,ñ\ (-¸\Ñ'JÐ˜ÓJô4ô$ôbðH ó	0ó ð	0öö"ö ö
ôBô(öôô*"ô8ôô46ô<ô,ô
ô#ô*2ô
ð ó	ó ð	ôöô
ôôô>ö$)ôV"öô 
÷$r6   rW   )r�   ro   )r�   z dict[CommandName, type[Command]]))Ú
__future__r   rM  Ú
contextlibr   Údataclassesr   r   r   Ú	_colorizer   r	   re   r   r   r   Úutilsr   r   r   r   r/   Útypesr   r   r   r   r   r!   r    r   r&   r5   ÚtupleÚplatformr   r   ÚisalpharT   r¢   rW   )r#   s   0r%   Ú<module>r     sî  ðö, #ã 
å %ß 0Ñ 0ß .÷ 'Ñ &ß ,Ñ ,Ý ð ×
Ñ
€ß GÓ Gñ
 16°a³Ñ -Ð �; ôôñ ;@ð,Ø&ð,àð,ð 	ð,ð 	ð	,ð
 	!ð,ð 	ð,ð 	ð,ð 	ð,ð 	ð,ð 	!ð,ð 	ð,ð 	"ð,ð 	ð,ð 	*ð,ð 	'ð,ð  	&ð!,ð" 	'ð#,ð$ 	ð%,ð& —‘ Ó'‰"Ð-Eð',ð( 	#ð),ð* 	%ð+,ð, 	ð-,ð. 	"ð/,ð0 	#ð1,ð2 	%ð3,ð4 	!ð5,ð6 	ð7,ð8 	ð9,ð: 	ð;,ð< 	ð=,ð> 	ð?,ð@ 	ðA,ðB 	ðC,ðD 	ðE,ðF 	ðG,ðH 	ðI,ðJ 	ðK,ðL 	ðM,ðN 	ðO,ðP 	 ðQ,ðR 	1ðS,ðT 	2ðU,ðV 	ðW,ñZ $' s©E°"°c«NÔ#;ÓIÒ#;˜aÀD¹yÓˆˆ=ÓÑ#;ÑIñ[-Jñ\ $' s©E°#°s«OÔ#<ÓLÒ#<˜aÇ	Á	ÇÓˆˆ=ÓÑ#<ÑLñ].Mò^ñ_BóD;€Ð7ó DñN �Ñ÷r	$ð r	$ó ñr	$ùò5 JùÚLs   Ã)	E
Ã6E
ÄE$
Ä0E$
