ó
    Ð]jæw  ã                  ó  • S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	J
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JrJrJr  SSKJrJr  SSKJrJrJr   " S S\R>                  5      r  " S S\
5      r!SS jr"                      SS jr#            SS jr$                    S S jr%                S!S jr&                    S S jr'SSSSSSS.                   S"S jjr(g)#z*This is a python implementation of clip().é    )ÚannotationsN)Úislice)ÚLiteralÚCallableÚOptionalÚ
NamedTupleé   )Úwidth)Úiter_graphemes)Ú	HyperlinkÚHyperlinkParams)Ú_SGR_STATE_DEFAULTÚ	_SGRStateÚ_sgr_state_updateÚ_sgr_state_is_activeÚ_sgr_state_to_sequence)Ú
TextSizingÚTextSizingParams)Ú_SEQUENCE_CLASSIFYÚ_HORIZONTAL_CURSOR_MOVEMENTÚINDETERMINATE_EFFECT_SEQUENCEc                  ó    • \ rS rSrSr\R                  " 5       r\R                  " 5       r\R                  " 5       r	\R                  " 5       r
Srg)Ú_HyperlinkActioné   z.Outcome of processing an OSC 8 hyperlink unit.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚenumÚautoÚNO_CLOSEÚEMPTYÚOUTSIDEÚVISIBLEÚ__static_attributes__r   ó    ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/wcwidth/_clip.pyr   r      s1   † Ù8à�yŠy‹{€HØ�IŠI‹K€EØ�iŠi‹k€GØ�iŠi‹kƒGr(   r   c                  ó†   • \ rS rSr% 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rS\S'   SrS\S'   Srg)Ú_HyperlinkResulté"   zb
Result of processing an OSC 8 hyperlink.

Only the fields relevant to each action are populated.
r   Úactionr   ÚintÚ	close_endÚinner_widthÚ ÚstrÚopen_seqÚclipped_innerÚ	close_seqÚclipped_widthÚ
hl_col_endr   N)r   r   r   r   r    Ú__annotations__r/   r0   r3   r4   r5   r6   r7   r'   r   r(   r)   r+   r+   "   sU   ‡ ñð ÓØ€IˆsÓØ€K�ÓØ€HˆcÓØ€M�3ÓØ€IˆsÓØ€M�3ÓØ€J�Ör(   r+   c                ób   • Ub+  [        U5      =n(       a  X -   n [        U5      (       a  U S-  n U $ )zÐ
Apply SGR prefix/suffix around *result*.

If an SGR state was captured at the first visible character, prefix the result with the
corresponding SGR sequence and suffix with a reset if any styles are active.
z[0m)r   r   )ÚresultÚcaptured_styleÚprefixs      r)   Ú_apply_sgr_wrapr=   3   s;   € ð Ñ!Ü+¨NÓ;Ð;ˆ6Õ;Ø‘_ˆFÜ ×/Ñ/Ø�iÑˆFØ€Mr(   c               óâ  • [         R                  " X5      u  p«X«4S:X  a  [        [        R                  5      $ XU
 n[        XÆXES9nUS:X  a  [        [        R                  US9$ X�-   nXá::  d  X’:¼  a  [        [        R                  UUS9$ [        SX-
  5      nX)-
  n[        XÏUX4USUS9n[        UUXES9n[        [        R                  UUUR                  5       UUR                  5       UUS9$ )	zÙ
Process an OSC 8 hyperlink unit.

Finds the matching close sequence, measures the inner text width, and determines whether the
hyperlink is empty, outside the clip window, or visible (requiring inner-text clipping).
)éÿÿÿÿr?   )Úcontrol_codesÚtabsizeÚambiguous_widthr   )r/   )r/   r0   F)ÚfillcharrA   rB   Úpropagate_sgrr@   )r/   r0   r3   r4   r5   r6   r7   )r   Ú
find_closer+   r   r#   r
   r$   r%   ÚmaxÚclipr&   Ú	make_openÚ
make_close)ÚtextÚstartÚendrC   rA   rB   r@   ÚparamsÚ	match_endÚcolÚclose_startr/   Ú
inner_textr0   r7   Úinner_clip_startÚinner_clip_endr4   r6   s                      r)   Ú_process_hyperlinkrT   B   s  € ô( '×1Ò1°$ÓBÑ€KØÐ 8Ó+ÜÔ 0× 9Ñ 9Ó:Ð:Ø Ð,€JÜØØñ€Kð
 �aÓÜÔ 0× 6Ñ 6À)ÑLÐLàÑ"€JàÓ˜c›jÜÔ 0× 8Ñ 8ÀIØ,7ñ9ð 	9ô ˜1˜e™kÓ*ÐØ‘Y€NäØ nØØ'ØØ#ñ€Mô Ø ]Øñ€Mô
 Ü× Ñ ØØØ×!Ñ!Ó#Ø#Ø×#Ñ#Ó%Ø#Øñ	ð 	r(   c                ó8  • 0 nU H(  u  pgnUR                  U/ 5      R                  Xx45        M*     UR                  5        H  n	U	R                  5         M     U (       a  [	        U R                  5       5      OSn
U(       a  [	        UR                  5       5      OSn[	        X«5      n/ nSn[        XÃ5      nXï::  aˆ  UR                  US5       H  u  nnUR                  U5        M     Xã:¼  a  US-  nM>  Xà;   a  X   u  nnUR                  U5        UU-  nO%X.s=::  a  U
::  a  O  OUR                  U5        US-  nXï::  a  Mˆ  [        UR                  5       5       H+  nUU:”  d  M  UU    H  u  nnUR                  U5        M     M-     SR                  U5      $ )z«
Reconstruct the output string from painter's algorithm state.

Walks columns left-to-right, interleaving escape sequences and cell content, filling gaps with
*fillchar*.
r?   r   r   r	   r1   )
Ú
setdefaultÚappendÚvaluesÚsortrF   ÚkeysÚminÚgetÚsortedÚjoin)ÚcellsÚ	sequencesrK   rL   rC   Úseqs_by_colÚcol_posÚorderÚseq_textÚentriesÚmax_cell_colÚmax_seq_colÚmax_colÚpartsÚwalk_colÚ	col_limitÚ_Ú	cell_textÚcell_wÚcs                       r)   Ú_reconstruct_painterrp   „   sz  € ð 57€KÛ$-Ñ ˆ˜Ø×Ñ˜w¨Ó+×2Ñ2°EÐ3DÖEñ %.à×%Ñ%Ö'ˆØ�‰Žñ (ö ).”3�u—z‘z“|Ô$°2€LÞ-8”#�k×&Ñ&Ó(Ô)¸b€KÜ�,Ó,€Gà€EØ€HÜ�GÓ!€IØ
Ó
à&Ÿ?™?¨8°RÖ8‰KˆAˆxØ�L‰L˜Ö"ñ 9ð ‹?Ø˜‰MˆHÙàÓØ %¡ÑˆI�vØ�L‰L˜Ô#Ø˜Ñ‰HàÕ0 LÖ0Ø—‘˜XÔ&Ø˜‰MˆHð! Õ
ô& �K×$Ñ$Ó&Ö'ˆØˆy�=Ø*¨1œ~‘��8Ø—‘˜XÖ&ó  .ñ (ð
 �7‰7�5‹>Ðr(   c               óH
  ^• / n	Sn
SnSnU(       a  [         OSnU[        U 5      :  Gaè  X   nX¢:¼  a,  US;  a&  Ub  GOÔU R                  SUS-   5      nUS:X  a  GO·UnME  US:X  Gad  [        R                  " X5      nU(       d  U	R                  U5        US-  nM�  UR                  S5      b6  U(       a/  Ub,  [        UUR                  5       5      nUR                  5       nMÉ  [        R                  " UR                  5       5      =n(       GaH  [        XX%XdUUUR                  5       U
S9
nUR                  [        R                  L a0  U	R                  UR                  5       5        UR                  5       nOÛUR                  [        R                  L a  UR                   nO±UR                  [        R"                  L a  U
UR$                  -  n
UR                   nOxU	R                  UR&                  5        U	R                  UR(                  5        U	R                  UR*                  5        U(       a  Uc  UnU
UR$                  -  n
UR                   nGM=  UR                  S	5      =nb÷  UR                  S
5      nUR                  S5      nUb  Uc   e[-        [.        R0                  " UUS9UU5      nUR3                  U5      nX¡:¼  a:  U
U-   U::  a1  U	R                  UR5                  5       5        U(       a  Uc  UnU
U-  n
OJX¢:  a@  U
U-   U:”  a7  / mSU4S jjn[7        UX¡X%UU5      n
U	R9                  T5        U(       a  Uc  UnOU
U-  n
UR                  5       nGMH  UR                  5       nU(       a-  [:        R                  " U5      (       a  [=        SU SU< 35      eU	R                  U5        UR                  5       nGM°  US:X  ah  US:”  aI  X¦X¦-  -
  -   nU
U:  a9  Xs=::  a  U:  a   O  OU	R                  S5        U(       a  Uc  UnU
S-  n
U
U:  a  M9  OU	R                  S5        US-  nGM  [?        [A        XS95      n[C        UUS9nUS:X  a!  Xs=::  a  U:  a  O  O„U	R                  U5        OrX¡:¼  a'  U
U-   U::  a  U	R                  U5        U(       a  Uc  UnOFX¢:  aA  U
U-   U:”  a8  U	R                  U[E        X*U-   5      [G        X5      -
  -  5        U(       a  Uc  UnU
U-  n
U[        U5      -  nU[        U 5      :  a  GMè  SRI                  U	5      U4$ )zŒ
Clip text without cursor movement (simple append-to-output path).

Returns ``(result, captured_style)``.  The caller applies SGR wrapping.
r   Nz	Úr	   r?   Ú
sgr_params©rM   rN   rO   Úts_metaÚts_textÚts_term©r@   c                ó(   >• TR                  U 5        g )N)rW   )ÚsÚ_wÚ_colÚts_partss      €r)   Ú	_ts_writeÚ_clip_simple.<locals>._ts_write'  s   ø€ Ø Ÿ™¨Õ*r(   ú*Indeterminate cursor sequence at position ú, Ú	Ú ©rK   ©rB   r1   )rz   r2   r{   r.   r|   r.   ÚreturnÚNone)%r   ÚlenÚfindr   ÚmatchrW   Úgroupr   rL   r   ÚparserT   r-   r   r#   r$   r/   r%   r0   r3   r4   r5   r   r   Úfrom_paramsÚdisplay_widthÚmake_sequenceÚ_text_sizing_clipÚextendr   Ú
ValueErrorÚnextr   r
   r[   rF   r^   )rJ   rK   rL   rD   rB   rC   rA   Ústrictr@   ÚoutputrO   Úidxr;   Úcurrent_styleÚcharÚnext_escÚmÚhl_stateÚrru   rv   rw   ÚtsÚts_widthr~   ÚseqÚnext_tabÚgraphemeÚ
grapheme_wr}   s                                @r)   Ú_clip_simpler£   »   s·  ø€ ð* €FØ
€CØ
€Cð +/€NÞ*7Õ&¸T€Mà
”�D“	Œ/Ø‰yˆð ‹:˜$ nÓ4ØÑ)Ùð
 —y‘y ¨¨q©Ó1ˆHØ˜2‹~ÙØˆCÙà�6Œ>Ü"×(Ò(¨Ó3ˆAÞØ—‘˜dÔ#Ø�q‘�Ùð �w‰w�|Ó$Ñ0¶]À}ÑG`Ü 1°-ÀÇÁÃÓ K�Ø—e‘e“g�Ùô +×0Ò0°·±³Ó;Ð;ˆxÖ;Ü&Ø °Ø!Ø#¨q¯u©u«w¸Cñ�ð
 —8‘8Ô/×8Ñ8Ò8Ø—M‘M !§'¡'£)Ô,ØŸ%™%›'‘CØ—X‘XÔ!1×!7Ñ!7Ò7ØŸ+™+‘CØ—X‘XÔ!1×!9Ñ!9Ò9Ø˜1Ÿ=™=Ñ(�CØŸ+™+‘Cà—M‘M !§*¡*Ô-Ø—M‘M !§/¡/Ô2Ø—M‘M !§+¡+Ô.Þ$¨Ñ)?Ø)6˜Ø˜1Ÿ=™=Ñ(�CØŸ+™+�CÚð Ÿ7™7 9Ó-Ð-�Ñ:ØŸ'™' )Ó,�ØŸ'™' )Ó,�ØÑ*¨wÑ/BÐBÐBÜÜ$×0Ò0°ÈÑVØ˜Wó&�ð ×+Ñ+¨OÓ<�à“< C¨(¡N°cÓ$9Ø—M‘M "×"2Ñ"2Ó"4Ô5Þ$¨Ñ)?Ø)6˜Ø˜8‘O‘CØ“Y 3¨¡>°EÓ#9Ø*,�H÷+ä+Ø˜C¨°Ø!ó#�Cð —M‘M (Ô+Þ$¨Ñ)?Ø)6˜øà˜8‘O�CØ—e‘e“g�Úð —'‘'“)ˆCÞÔ7×=Ò=¸c×BÑBÜ Ø@ÀÀÀRØ‘gðóð ð �M‰M˜#ÔØ—%‘%“'ˆCÚà�4‹<à˜‹{Ø¨S©]Ñ";Ñ<�Ø˜H“nØÕ) cÖ)ØŸ™ cÔ*Þ(¨^Ñ-CØ-:˜NØ˜1‘H�Cð ˜H•nøð —‘˜dÔ#Ø�1‰HˆCÚäœ tÑ7Ó8ˆÜ˜8°_ÑEˆ
ð ˜‹?ØÕ!˜cÖ!Ø—‘˜hÔ'øØ‹\˜c JÑ.°#Ó5Ø�M‰M˜(Ô#Þ Ñ!7Ø!.�øØ‹Y˜3 Ñ+¨eÓ3Ø�M‰M˜(¤c¨#°ZÑ/?Ó&@Ä3ÀuÃ?Ñ&RÑSÔTÞ Ñ!7Ø!.�àˆzÑˆØŒs�8‹}ÑˆðG ”�D“	Ž/ðJ �7‰7�6‹?˜NÐ*Ð*r(   c           	     ób  ^ ^^^• T R                  U5      nX:¼  a#  X-   U::  a  T" T R                  5       Xq5        X-   $ X:¼  d  X-   U::  a  X-   $ [        SX!-
  5      n[        X1U-   5      U-
  n	T R                  R
                  m/ n
T R                  R                  S:”  a“  [        [        T R                  5      T R                  R                  5       H  nU
R                  UT45        M     [        T R                  R                  [        U
5      -
  5       H  nU
R                  ST45        M     O9[        T R                  5       H   nU
R                  U[        XµS9T-  45        M"     / mSUUU U4S jjnX-   nSnU
 H   u  nnUU-   nUU::  a  UnM  Xù:¼  a    Oˆ[        UU	5      [        Xø5      -
  nUU:X  a/  US:”  a)  T(       d  U[        Xø5      -   nTR                  UU45        O5U" U5        U[        Xø5      -   n[        U5       H  nT" USUU-   5        M     UnM¢     U" U5        X-   $ )z²
Emit tokens for a text-sizing (OSC 66) sequence, clipped to (start, end).

Calls *write_cells(text, width, col)* for each emitted cell or sequence. Returns new column
position.
r   r1   r…   c                ó  >• T(       d  g T Vs/ s H  oS   PM	     nn[        S T 5       5      n[        TTR                  R                  S:”  a  [	        U5      OSTR                  R
                  TR                  R                  TR                  R                  TR                  R                  5      nT" [        USR                  U5      TR                  5      R                  5       UU 5        TR                  5         g s  snf )Nr   c              3  ó*   #   • U  H	  oS    v •  M     g7f)r	   Nr   )Ú.0Úus     r)   Ú	<genexpr>Ú3_text_sizing_clip.<locals>.flush.<locals>.<genexpr>•  s   é € Ð2¢M˜q˜–d¢Mùs   ‚r1   )Úsumr   rM   r
   rˆ   Ú	numeratorÚdenominatorÚvertical_alignÚhorizontal_alignr   r^   Ú
terminatorr�   Úclear)	Ú	flush_colr¨   ÚtextsÚtotal_wrM   Úpending_unitsÚscaler�   Úwrite_cellss	        €€€€r)   ÚflushÚ _text_sizing_clip.<locals>.flush‘  sË   ø€ ÞØÙ,Ó-š}˜!�1”™}ˆÐ-ÜÑ2¡MÓ2Ó2ˆÜ!ØØŸ)™)Ÿ/™/¨AÓ-ŒC�ŒJ°1Ø�I‰I×Ñ §¡×!6Ñ!6Ø�I‰I×$Ñ$ b§i¡i×&@Ñ&@ó	Bˆñ
 	Ü�v˜rŸw™w u›~¨r¯}©}Ó=×KÑKÓMØØô	ð 	×ÑÕùò .s   ŽDr	   )r²   r.   r†   r‡   )rŽ   r�   rF   r[   rM   r¶   r
   r   r   rJ   rW   Úrangerˆ   )r�   rO   rK   rL   rC   rB   r·   rž   Ú	rel_startÚrel_endÚunitsÚgrl   r¸   Úflush_col_posÚunit_posÚ	unit_textÚunit_wÚunit_endÚoverlapÚ	abs_startÚirµ   r¶   s   `     `               @@r)   r�   r�   f  s  û€ ð  ×Ñ Ó0€Hð ƒ|˜™¨#Ó-Ù�B×$Ñ$Ó&¨Ô6Ø‰~Ðà
ƒz�S‘^ uÓ,Ø‰~Ðô �A�u‘{Ó#€IÜ�#˜X‘~Ó&¨Ñ,€GØ�I‰I�O‰O€Eà#%€EØ	‡y�y‡�˜ÓÜœ r§w¡wÓ/°·±·±ÖAˆAØ�L‰L˜!˜U˜Ö$ñ Bä�r—y‘y—‘¬¨U«Ñ3Ö4ˆAØ�L‰L˜"˜e˜Ö%ò 5ô   §¡Ö(ˆAØ�L‰L˜!œU 1ÑFÈÑNÐOÖPñ )ð ,.€M÷ò ð  ‘O€MØ€HÛ"Ñˆ	�6Ø˜fÑ$ˆØ�yÓ ØˆHÙØÓÙä�h Ó(¬3¨xÓ+CÑCˆØ�fÓ ¨!£Þ Ø #¤c¨(Ó&>Ñ >�Ø× Ñ  )¨VÐ!4Õ5á�-Ô Øœc (Ó6Ñ6ˆIÜ˜7–^�Ù˜H a¨°Q©Ö7ñ $àŠñ% #ñ( 
ˆ-ÔØ‰>Ðr(   c               óº  ^^^#^$^%^&• 0 m$[        5       m&/ n	Sn
SnSnSm#T(       a  [        OSm% S   SU#U$U%UU&U4S jjjnU[        U 5      :  Gaþ  X   nX²:¼  a  T#b  US:w  a  GOêUS:X  Gaq  [        R                  " X5      nU(       d+  U	R                  XºU45        U
S-  n
T(       a  T#c  T%m#US-  nMs  UR                  S5      b6  T(       a/  T%b,  [        T%UR                  5       5      m%UR                  5       nM»  [        R                  " UR                  5       5      =n(       Gax  [        XUTXdUUUR                  5       US9
nUR                  [        R                  L aC  U	R                  XºUR                  5       45        U
S-  n
T(       a  T#c  T%m#UR                  5       nO÷UR                  [        R                  L a  UR                   nOÍUR                  [        R"                  L a  UUR$                  -  nUR                   nO”U	R                  XºUR&                  45        U
S-  n
T(       a  T#c  T%m#U" UR(                  UR*                  USS	9  UUR*                  -  nU	R                  XºUR,                  45        U
S-  n
UR.                  nUR                   nGM_  UR                  S
5      =nby  UR                  S5      nUR                  S5      nUb  Uc   e[1        [2        R4                  " UUS9UU5      n[7        UX±UTUU5      nT(       a  T#c  T%m#UR                  5       nGMì  UR                  5       nU(       a-  [8        R                  " U5      (       a  [;        SU SU< 35      eUR                  S5      =nb*  U(       a  [=        U5      S-
  OSnUR                  5       nGMn  UR                  S5      =nbi  U(       a  [=        U5      OSnUU-   nX²:  a6  UU:”  a0  [?        [A        X±5      [C        UU5      5       H  nU" TSU5        M     UnUR                  5       nGMë  UR                  S5      =nbX  U(       a  [=        U5      OSnU(       a  UU:”  a  [;        SU SU SU S35      e[A        SUU-
  5      nUR                  5       nGMW  U	R                  XºUR                  5       45        U
S-  n
T(       a  T#c  T%m#UR                  5       nGMœ  US:X  a
  SnUS-  nGM¬  US:X  a  US:”  a  US-  nUS-  nGMÅ  US:X  ah  US:”  a6  X¶X¶-  -
  -   nUU:  a&  Xs=::  a  U:  a  O  O
U" TSU5        US-  nUU:  a  M&  O$U	R                  XºS45        U
S-  n
T(       a  T#c  T%m#US-  nGM3  [E        [G        XS95      n[I        UUS9n U S:X  a4  Xs=::  a  U:  a'  O  O…U	R                  XºU45        U
S-  n
T(       a  T#c  T%m#O`X±:¼  a  UU -   U::  a  U" UU U5        OGX²:  aB  UU -   U:”  a9  [A        X5      n![?        [C        X+U -   5      U!-
  5       H  n"U" TSU!U"-   5        M     UU -  nU[        U5      -  nU[        U 5      :  a  GMþ  [K        T$X‘UT5      T#4$ )z…
Clip text with cursor movement (painter's algorithm path).

Returns ``(result, captured_style)``.  The caller applies SGR wrapping.
r   Nc                óæ  >• [        U5       H¡  nX$-   nUS:”  a:  TR                  US-
  S5      S   S:X  a  T	S4TUS-
  '   T
R                  US-
  5        TR                  US5      S   S:X  a  T	S4TUS-   '   T
R                  US-   5        TR                  US5        T
R                  U5        M£     X4TU'   U(       a%  [        U5       H  nT
R	                  X$-   5        M     T(       a  Tc  Tmggg)zIWrite *w* cells of text *s* at *write_col*, handling wide-char splitting.r   r	   )r1   r   é   N)rº   r\   ÚdiscardÚpopÚadd)rz   ÚwÚ	write_colÚis_hyperlinkÚoffsetÚsrc_colr;   r_   r—   rC   Úhyperlink_cellsrD   s         €€€€€€r)   Ú_write_cellsÚ#_clip_painter.<locals>._write_cellsá  sý   ø€ ô ˜A–hˆFØÑ(ˆGØ˜‹{˜uŸy™y¨°1©°gÓ>¸qÑAÀQÓFØ&.° ]��g ‘kÑ"Ø×'Ñ'¨°!©Ô4Ø�y‰y˜ 'Ó*¨1Ñ-°Ó2Ø&.° ]��g ‘kÑ"Ø×'Ñ'¨°!©Ô4Ø�I‰I�g˜tÔ$Ø×#Ñ# GÖ,ñ ð ˜6ˆˆiÑÞÜ ž(�Ø×#Ñ# IÑ$6Ö7ñ #æ˜^Ñ3Ø*‰Nð 4ˆ=r(   rr   r	   rs   rt   T)rÏ   ru   rv   rw   rx   r€   r�   Úhpa_nÚ
cforward_nÚcbackward_nz!Cursor left movement at position z would move z cells left from column z, exceeding string startÚÚr‚   r„   r…   )F)
rz   r2   rÍ   r.   rÎ   r.   rÏ   Úboolr†   r‡   )&Úsetr   rˆ   r   rŠ   rW   r‹   r   rL   r   rŒ   rT   r-   r   r#   r$   r/   r%   r0   r3   r4   r6   r5   r7   r   r   r�   r�   r   r’   r.   rº   rF   r[   r“   r   r
   rp   )'rJ   rK   rL   rD   rB   rC   rA   r”   r@   r`   Ú	seq_orderrO   r–   rÓ   r˜   rš   r›   rœ   ru   rv   rw   r�   rŸ   rÕ   rÖ   Ú	n_forwardÚmove_endrÆ   r×   Ú
n_backwardr    r¡   r¢   Ú
clip_startrÐ   r;   r_   r—   rÒ   s'      ` `                             @@@@r)   Ú_clip_painterrá   »  sk  ý€ ð* )+€EÜ #£€OØ,.€IØ€Ià
€CØ
€Cð +/€NÞ*7Õ&¸T€Mð +0ð+Ø#'ð+Ø48÷+õ +ð* ”�D“	Œ/Ø‰yˆð ‹:˜.Ñ4¸À»Ùà�6Œ>Ü"×(Ò(¨Ó3ˆAÞà× Ñ  #°$Ð!7Ô8Ø˜Q‘�	Þ  ^Ñ%;Ø%2�NØ�q‘�Ùð �w‰w�|Ó$Ñ0¶]À}ÑG`Ü 1°-ÀÇÁÃÓ K�Ø—e‘e“g�Ùô +×0Ò0°·±³Ó;Ð;ˆxÖ;Ü&Ø  h°Ø!Ø#¨q¯u©u«w¸Cñ�ð
 —8‘8Ô/×8Ñ8Ò8Ø×$Ñ$ c°a·g±g³iÐ%@ÔAØ ‘N�IÞ$¨Ñ)?Ø)6˜ØŸ%™%›'‘CØ—X‘XÔ!1×!7Ñ!7Ò7ØŸ+™+‘CØ—X‘XÔ!1×!9Ñ!9Ò9Ø˜1Ÿ=™=Ñ(�CØŸ+™+‘Cà×$Ñ$ c°a·j±jÐ%AÔBØ ‘N�IÞ$¨Ñ)?Ø)6˜Ù  §¡°!·/±/À3Ø.2ò4à˜1Ÿ?™?Ñ*�CØ×$Ñ$ c°a·k±kÐ%BÔCØ ‘N�IØŸ,™,�CØŸ+™+�CÚð Ÿ7™7 9Ó-Ð-�Ñ:ØŸ'™' )Ó,�ØŸ'™' )Ó,�ØÑ*¨wÑ/BÐBÐBÜÜ$×0Ò0°ÈÑVØ˜Wó&�ô (Ø˜ C¨°?Ø ó"�ö ! ^Ñ%;Ø%2�NØ—e‘e“g�Úð —'‘'“)ˆCÞÔ7×=Ò=¸c×BÑBÜ Ø@ÀÀÀRØ‘gðóð ð Ÿ™ Ó)Ð)�Ñ6Þ(-”c˜%“j 1’n°1�Ø—e‘e“g�Úð  Ÿg™g lÓ3Ð3�
Ñ@Þ/9œC 
œO¸q�	Ø ™?�Ø“9 ¨EÓ!1Ü"¤3 s£?´C¸À#Ó4FÖG˜Ù$ X¨q°!Ö4ñ Hà�Ø—e‘e“g�Úð  !Ÿw™w }Ó5Ð5�ÑBÞ1<œS Ô-À!�
Þ˜j¨3Ó.Ü$Ø;¸C¸5ÀØ%˜,Ð&>¸s¸eð D1ð2óð ô
 ˜!˜S :Ñ-Ó.�Ø—e‘e“g�Úð ×Ñ˜c¨a¯g©g«iÐ8Ô9Ø˜‰NˆIÞ Ñ!7Ø!.�Ø—%‘%“'ˆCÚð �4‹<ØˆCØ�1‰HˆCÚð �6‹>Ø�Q‹wØ�q‘�Ø�1‰HˆCÚð �4‹<Ø˜‹{Ø¨S©]Ñ";Ñ<�Ø˜H“nØÕ) cÖ)Ù$ X¨q°#Ô6Ø˜1‘H�Cð ˜H•nøð
 × Ñ  #°$Ð!7Ô8Ø˜Q‘�	Þ  ^Ñ%;Ø%2�NØ�1‰HˆCÚô œ tÑ7Ó8ˆÜ˜8°_ÑEˆ
ð ˜‹?ØÕ!˜cÖ!Ø× Ñ  #°(Ð!;Ô<Ø˜Q‘�	Þ  ^Ñ%;Ø%2�NøØ‹\˜c JÑ.°#Ó5Ù˜ :¨sÕ3Ø‹Y˜3 Ñ+¨eÓ3Ü˜U›ˆJÜ¤ C¨zÑ)9Ó :¸ZÑ GÖH�Ù˜X q¨*°vÑ*=Ö>ñ Ið 	ˆzÑˆØŒs�8‹}ÑˆðM ”�D“	Ž/ôP    y¸¸hÓGÈÐWÐWr(   rƒ   é   TrŒ   )rC   rA   rB   rD   r@   Ú
overtypingc               ó¾  • [        US5      nX!::  a  gU R                  5       (       a  U R                  5       (       a  XU $ SU ;   n	U(       a	  U	(       d  SnUcM  US:g  =(       a@    SU ;   =(       d4    SU ;   =(       d(    U	=(       a    [        [        R
                  " U 5      5      nOU(       a  US:X  a  SnU(       a  [        O[        n
[        U
" U UUUUUUUS:H  US	9	6 $ )
uµ  
Clip text to display columns (start, end) while preserving all terminal sequences.

This function extracts a substring based on visible column positions rather than
character indices. Terminal escape sequences are preserved in the output since
they have zero display width. If a wide character (width 2) is split at
either boundary, it is replaced with ``fillchar``.

TAB characters (``\t``) are expanded to spaces up to the next tab stop,
controlled by the ``tabsize`` parameter. When cursor movement is detected,
a "painter's algorithm" is used, cursor movements actively change the write
position, allowing cursor-left and carriage return to overwrite previously
written cells. It is assumed that ``text`` begins at column 0.

**OSC 8 hyperlinks** are handled specially: the visible text inside a hyperlink
is clipped to the requested column range, and the hyperlink is rebuilt around
the clipped text.  Empty hyperlinks (those with no remaining visible text after
clipping) are removed::

    >>> clip('\x1b]8;;http://example.com\x07Click This link\x1b]8;;\x07', 6, 10)
    '\x1b]8;;http://example.com\x07This\x1b]8;;\x07'

:param text: String to clip, may contain terminal escape sequences.
:param start: Absolute starting column (inclusive, 0-indexed).
:param end: Absolute ending column (exclusive).
:param fillchar: Character to use when a wide character must be split at
    a boundary (default space). Must have display width of 1.
:param tabsize: Tab stop width (default 8). Set to 0 to pass tabs through
    as zero-width (preserved in output but don't advance column position).
:param ambiguous_width: Width to use for East Asian Ambiguous (A)
    characters. Default is ``1`` (narrow). Set to ``2`` for CJK contexts.
:param propagate_sgr: If True (default), SGR (terminal styling) sequences
    are propagated. The result begins with any active style at the start
    position and ends with a reset sequence if styles are active.
:param control_codes: How to handle control characters and sequences:

    - ``'parse'`` (default): Track horizontal cursor movement and clip
      hyperlink text.  Cursor overwrite is always allowed, with best effort
      results; indeterminate sequences (home, clear, reset, etc.) are
      preserved as zero-width.
    - ``'strict'``: Like ``parse``, but raises :exc:`ValueError` on
      sequences with indeterminate effects (cursor home, clear screen,
      reset, vertical movement, etc.) matching :func:`width` behavior.
      Also raises on out-of-bounds horizontal cursor movement.
    - ``'ignore'``: All control characters are treated as zero-width.
      Cursor movement is not tracked (fastest path).

:param overtyping: Whether to use the painter's algorithm for cursor
    movement (``\b`` backspace, ``\r`` carriage return, and CSI cursor
    left/right/position sequences).  When ``None`` (default), auto-detects
    by scanning for these characters in *text*.  Set to ``False`` for improved
    performance when the caller knows *text* contains no cursor movement
    characters.  Set to ``True`` to force the painter's algorithm (useful
    for testing).  Has no effect when ``control_codes='ignore'``.

:returns: Substring of ``text`` spanning display columns (start, end),
    with all terminal sequences preserved and wide characters at boundaries
    replaced with ``fillchar``.

:raises ValueError: If ``control_codes='strict'`` and an indeterminate-effect
    sequence or out-of-bounds cursor movement is encountered.

SGR (terminal styling) sequences are propagated by default. The result
begins with any active style and ends with a reset::

    >>> clip('\x1b[1;34mHello world\x1b[0m', 6, 11)
    '\x1b[1;34mworld\x1b[0m'

Set ``propagate_sgr=False`` to disable this behavior.

.. versionadded:: 0.3.0

.. versionchanged:: 0.5.0
   Added ``propagate_sgr`` parameter (default True).

.. versionchanged:: 0.7.0
   Added ``control_codes`` parameter (default 'parse').
   OSC 8 hyperlink-aware clipping.  OSC 66 text sizing protocol support.
   Added ``overtyping`` parameter (default None, auto-detect).

Example::

    >>> clip('hello world', 0, 5)
    'hello'
    >>> clip('ä¸­æ–‡å­—', 0, 3)  # Wide char split at column 3
    'ä¸­ '
    >>> clip('a\tb', 0, 10)  # Tab expanded to spaces
    'a       b'
r   r1   rr   FÚignorerÙ   rØ   r”   )	rJ   rK   rL   rD   rB   rC   rA   r”   r@   )	rF   ÚisasciiÚisprintablerÚ   r   Úsearchrá   r£   r=   )rJ   rK   rL   rC   rA   rB   rD   r@   rã   Úhas_escÚfn_clips              r)   rG   rG   ¡  sï   € ôJ ��q‹M€EØ
ƒ|Øð ‡|�|‡~�~˜$×*Ñ*×,Ñ,Ø˜#ˆÐð ˜‰n€GÞžWØˆð Ñð ˜XÑ%÷ KØ�t‰^÷ J˜t t™|÷ JØ×Hœ$Ô:×AÒAÀ$ÓGÓHñ 	ö
 
˜¨Ó1Øˆ
Þ)�m¬|€Gä™GØØØØ#Ø'ØØØ Ñ)Ø#ñ
ð 
ð 
r(   )r:   r2   r;   zOptional[_SGRState]r†   r2   )rJ   r2   rK   r.   rL   r.   rC   r2   rA   r.   rB   r.   r@   ú$Literal['parse', 'strict', 'ignore']rM   r   rN   r.   rO   r.   r†   r+   )r_   zdict[int, tuple[str, int]]r`   zlist[tuple[int, int, str]]rK   r.   rL   r.   rC   r2   r†   r2   )rJ   r2   rK   r.   rL   r.   rD   rÚ   rB   r.   rC   r2   rA   r.   r”   rÚ   r@   rë   r†   ztuple[str, Optional[_SGRState]])r�   r   rO   r.   rK   r.   rL   r.   rC   r2   rB   r.   r·   zCallable[[str, int, int], None]r†   r.   )rJ   r2   rK   r.   rL   r.   rC   r2   rA   r.   rB   r.   rD   rÚ   r@   rë   rã   zOptional[bool]r†   r2   ))r    Ú
__future__r   r!   Ú	itertoolsr   Útypingr   r   r   r   Ú_widthr
   r¡   r   Ú	hyperlinkr   r   Ú	sgr_stater   r   r   r   r   Útext_sizingr   r   Úescape_sequencesr   r   r   ÚEnumr   r+   r=   rT   rp   r£   r�   rá   rG   r   r(   r)   Ú<module>rõ      sØ  ðÙ 0Ý "ó Ý ç :Ó :õ Ý $ß 1÷0õ 0÷
 6÷>ñ >ô
�t—y‘yô ô�zô ô"ð?Ø
ð?àð?ð 
ð?ð ð	?ð
 ð?ð ð?ð 8ð?ð ð?ð ð?ð 
ð?ð ô?ðD4Ø%ð4à)ð4ð ð4ð 
ð	4ð
 ð4ð 	ô4ðnh+Ø
ðh+àðh+ð 
ðh+ð
 ðh+ð ðh+ð ðh+ð ðh+ð ðh+ð 8ðh+ð %ôh+ðVRØðRà	ðRð ðRð 
ð	Rð
 ðRð ðRð 1ðRð 	ôRðjcXØ
ðcXàðcXð 
ðcXð
 ðcXð ðcXð ðcXð ðcXð ðcXð 8ðcXð %ôcXðV ØØØØ:AØ!%ñHØ
ðHàðHð 
ðHð
 ðHð ðHð ðHð ðHð 8ðHð ðHð 	öHr(   