+
    ®¾j§`  ã                   óÄ  € ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
HtHtHtHtHtHtHtHtHtHt ^RIHtHtHtHtHt ^RIHtHt ^R	IHt ]'       d   ^R
I H!t!H"t"H#t# ]! R4      t$ ! R R]4      t%]]]%,          ]]%]]&]'3,          3,          ]]%]&]&3,          3,          t(]! 4        ! R R]4      4       t) ! R R4      t* ! R R4      t+],R8X  Ed	   ^ RI-H!t! ^ RI.H/t/ ^ RI0H1t1 Rt2]1Pf                  ! R4      t4]!! 4       t ] Pk                  R4       ] Pm                  R4       ] Pm                  R4       ] Pm                  ]/! ]2RRR7      4       ] Pm                  4        ] Pm                  R 4       ]7! ] Pq                  ]44      4      t9] Pm                  ]94       ] Pm                  4        ] Pm                  R!4       ] Pm                  ]44       ] Pm                  R"4       R## R## )$é    )ÚIntEnum)Ú	lru_cache)Úfilterfalse)Ú	getLogger)Ú
attrgetter)
ÚTYPE_CHECKINGÚDictÚIterableÚListÚ
NamedTupleÚOptionalÚSequenceÚTupleÚTypeÚUnion)Ú_is_single_cell_widthsÚcached_cell_lenÚcell_lenÚget_character_cell_sizeÚset_cell_size)ÚResultÚ	rich_repr)ÚStyle)ÚConsoleÚConsoleOptionsÚRenderResultÚrichc                   óZ   € ] tR t^#tRt^t^t^t^t^t	^t
^t^t^	t^
t^t^t^t^t^t^tRtR# )ÚControlTypezDNon-printable control codes which typically translate to ANSI codes.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚBELLÚCARRIAGE_RETURNÚHOMEÚCLEARÚSHOW_CURSORÚHIDE_CURSORÚENABLE_ALT_SCREENÚDISABLE_ALT_SCREENÚ	CURSOR_UPÚCURSOR_DOWNÚCURSOR_FORWARDÚCURSOR_BACKWARDÚCURSOR_MOVE_TO_COLUMNÚCURSOR_MOVE_TOÚERASE_IN_LINEÚSET_WINDOW_TITLEÚ__static_attributes__r    ó    ÚW/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_vendor/rich/segment.pyr   r   #   sY   † ÙNà€DØ€OØ€DØ€EØ€KØ€KØÐØÐØ€IØ€KØ€NØ€OØÐØ€NØ€MØÔr7   r   c                   óÔ  a € ] tR t^?t o RtRtRt]V 3R lR l4       tV 3R lR lt	V 3R lR lt
]V 3R	 lR
 l4       t]]! R34      V 3R lR l4       4       tV 3R lR lt]V 3R lR l4       t]R4V 3R lR ll4       t]R5V 3R lR ll4       t]V 3R lR l4       t]R6V 3R lR ll4       t]R7V 3R lR ll4       t]V 3R lR l4       t]V 3R lR l4       t]R8V 3R lR  ll4       t]R5V 3R! lR" ll4       t]R5V 3R# lR$ ll4       t]R5V 3R% lR& ll4       t]V 3R' lR( l4       t]V 3R) lR* l4       t]V 3R+ lR, l4       t]V 3R- lR. l4       t]V 3R/ lR0 l4       t V 3R1 lt!R2t"V t#R# )9ÚSegmenta¼  A piece of text with associated style. Segments are produced by the Console render process and
are ultimately converted in to strings to be written to the terminal.

Args:
    text (str): A piece of text.
    style (:class:`~rich.style.Style`, optional): An optional style to apply to the text.
    control (Tuple[ControlCode], optional): Optional sequence of control codes.

Attributes:
    cell_length (int): The cell length of this Segment.
Nc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úreturn)Úint)ÚformatÚ__classdict__s   "€r8   Ú__annotate__ÚSegment.__annotate__R   s   ø€ ÷ 0ñ 0™Sñ 0r7   c                ó6   € V w  rpV'       d   ^ # \        V4      # )zbThe number of terminal cells required to display self.text.

Returns:
    int: A number of cells.
)r   )ÚselfÚtextÚ_styleÚcontrols   &   r8   Úcell_lengthÚSegment.cell_lengthQ   s   € ð !%Ñˆ�gßˆqÐ/¤¨$£Ð/r7   c                ó    <€ V ^8„  d   QhRS[ /# r<   )r   )r@   rA   s   "€r8   rB   rC   [   s   ø€ ÷ ñ ™vñ r7   c              #  ó¾   "  € V P                   x € V P                  f!   V P                  e   V P                  x € R # R # V P                  x € V P                  x € R # 5i©N)rF   rH   Ústyle©rE   s   &r8   Ú__rich_repr__ÚSegment.__rich_repr__[   sG   é € Ø�i‰iŠØ�<‰<ÒØ�z‰zÒ%Ø—j‘jÔ ñ &ð —*‘*ÒØ—,‘,Ôùs   ‚AAc                ó    <€ V ^8„  d   QhRS[ /# r<   ©Úbool)r@   rA   s   "€r8   rB   rC   d   s   ø€ ÷ ñ ™$ñ r7   c                ó,   € \        V P                  4      # )z#Check if the segment contains text.)rT   rF   rO   s   &r8   Ú__bool__ÚSegment.__bool__d   s   € ä�D—I‘I‹Ðr7   c                ó    <€ V ^8„  d   QhRS[ /# r<   rS   )r@   rA   s   "€r8   rB   rC   i   s   ø€ ÷ (ñ (™Dñ (r7   c                ó   € V P                   RJ# )z,Check if the segment contains control codes.N)rH   rO   s   &r8   Ú
is_controlÚSegment.is_controlh   s   € ð �|‰| 4Ð'Ð'r7   c                ó8   <€ V ^8„  d   QhRRRS[ RS[R,          /# )r=   Úsegmentr:   Úcutr>   ©r:   r:   ©r?   r   )r@   rA   s   "€r8   rB   rC   o   s(   ø€ ÷ -ñ - 9ð -±3ð -¹5ÐAUÕ;Vñ -r7   c                óf  € Vw  r4p\         pVP                  pW'8¼  d   W! RWE4      3# \        p\        W',          \	        V4      ,          4      p	 VRV	 p
\        V
4      pW²,
          pV'       g   V! W¤V4      V! W9R WE4      3# VR8X  d@   V! W9,          4      ^8X  d-   V! VRV	 R,           WE4      V! RW9^,           R ,           WE4      3# V^8X  dG   V! W9^,
          ,          4      ^8X  d-   V! VRV	^,
           R,           WE4      V! RW9R ,           WE4      3# W²8  d   V	^,          p	KÙ  V	^,          p	Kä  )a  Split a segment in to two at a given cell position.

Note that splitting a double-width character, may result in that character turning
into two spaces.

Args:
    segment (Segment): A segment to split.
    cut (int): A cell position to cut on.

Returns:
    A tuple of two segments.
Ú NÚ éÿÿÿÿ)r:   rI   r   r?   Úlenr   )Úclsr]   r^   rF   rN   rH   Ú_SegmentrI   Ú	cell_sizeÚposÚbeforeÚcell_posÚout_bys   &&&          r8   Ú_split_cellsÚSegment._split_cellsm   sL  € ð  'Ñˆ�WÜˆØ×)Ñ)ˆØÔØ˜H R¨Ó8Ð8Ð8ä+ˆ	ä�3Õ$¬¨D«	Õ1Ó2ˆàØ˜$˜3�ZˆFÜ Ó'ˆHØ•^ˆFßá˜V¨GÓ4Ù˜T $˜Z¨Ó8ðð ð ˜Œ|¡	¨$­)Ó 4¸Ô 9á˜T $ 3˜Z¨#Õ-¨uÓ>Ù˜S 4¨a­¨	 ?Õ2°EÓCðð ð ˜Œ|¡	¨$°Q­w­-Ó 8¸AÔ =á˜T ) C¨!¥G˜_¨sÕ2°EÓCÙ˜S 4¨ :Õ-¨uÓ>ðð ð Œ~Ø�q•’à�q•’r7   c                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# )r=   r^   r>   r_   r`   )r@   rA   s   "€r8   rB   rC   ž   s!   ø€ ÷ ,ñ ,™sð ,¡uÐ-AÕ'Bñ ,r7   c                óØ   € V w  r#pV^ 8¼  g   Q h\        V4      '       d<   V\        V4      8¼  d   V \        RW44      3# \        VRV W44      \        W!R W44      3# V P                  W4      # )a@  Split segment in to two segments at the specified column.

If the cut point falls in the middle of a 2-cell wide character then it is replaced
by two spaces, to preserve the display width of the parent segment.

Args:
    cut (int): Offset within the segment to cut.

Returns:
    Tuple[Segment, Segment]: Two segments.
rb   N)r   re   r:   rm   )rE   r^   rF   rN   rH   s   &&   r8   Úsplit_cellsÚSegment.split_cellsž   s}   € ð  $Ñˆ�WØ�aŒxˆˆxä! $×'Ò'à”c˜$“iÔØœW R¨Ó8Ð8Ð8ä˜˜T˜c˜
 EÓ3Ü˜˜T˜
 EÓ3ðð ð
 × Ñ  Ó+Ð+r7   c                ó   <€ V ^8„  d   QhRR/# )r=   r>   r:   r    )r@   rA   s   "€r8   rB   rC   ¹   s   ø€ ÷ ñ �Yñ r7   c                ó   € V ! R4      # )zMake a new line segment.Ú
r    )rf   s   &r8   ÚlineÚSegment.line¸   s   € ñ �4‹yÐr7   c          	      ón   <€ V ^8„  d   QhRS[ R,          RS[S[,          RS[S[,          RS[ R,          /# )r=   Úsegmentsr:   rN   Ú
post_styler>   )r
   r   r   )r@   rA   s   "€r8   rB   rC   ¾   sE   ø€ ÷ &ñ &á˜9Õ%ð&ñ ™�ð&ñ ™U•Oð	&ñ
 
�)Õ	ñ&r7   c                ó|   a aa€ TpV'       d   VP                   oVV 3R lV 4       pS'       d   V V3R lV 4       pV# )aÃ  Apply style(s) to an iterable of segments.

Returns an iterable of segments where the style is replaced by ``style + segment.style + post_style``.

Args:
    segments (Iterable[Segment]): Segments to process.
    style (Style, optional): Base style. Defaults to None.
    post_style (Style, optional): Style to apply on top of segment style. Defaults to None.

Returns:
    Iterable[Segments]: A new iterable of segments (possibly the same iterable).
c              3   ó\   <"  € T F!  w  rpS! Y'       d   R MS! V4      V4      x € K#  	  R # 5irM   r    )Ú.0rF   rG   rH   Úapplyrf   s   &   €€r8   Ú	<genexpr>Ú&Segment.apply_style.<locals>.<genexpr>Ó   s1   øé € ð á-<Ñ)�D 'ñ �D¦'™$©u°V«}¸g×FÐFÛ-<ùs   ƒ),c              3   ót   <"  € T F-  w  rpS! TV'       d   R MV'       d
   VS,           MSV4      x € K/  	  R # 5irM   r    )r}   rF   rG   rH   rf   rz   s   &   €€r8   r   r€   Ø   sG   øé € ð ñ .=Ñ)�D 'ñ Ø÷ #ñ ç5;˜f zÖ1Àà÷ð ó .=ùs   ƒ8 8)Ú__add__)rf   ry   rN   rz   Úresult_segmentsr~   s   f&&f @r8   Úapply_styleÚSegment.apply_style½   sC   ú€ ð& #ˆßØ—M‘MˆEõá-<óˆO÷ õñ .=óˆOð Ðr7   c                óH   <€ V ^8„  d   QhRS[ R,          RS[RS[ R,          /# )r=   ry   r:   rZ   r>   )r
   rT   )r@   rA   s   "€r8   rB   rC   ç   s4   ø€ ÷ @ñ @Ù 	Õ*ð@Ù8<ð@á	�)Õ	ñ@r7   c                óf   € V'       d   \        \        R4      V4      # \        \        R4      V4      # )a  Filter segments by ``is_control`` attribute.

Args:
    segments (Iterable[Segment]): An iterable of Segment instances.
    is_control (bool, optional): is_control flag to match in search.

Returns:
    Iterable[Segment]: And iterable of Segment instances.

rH   )Úfilterr   r   )rf   ry   rZ   s   &&&r8   Úfilter_controlÚSegment.filter_controlæ   s+   € ÷ Üœ* YÓ/°Ó:Ð:äœz¨)Ó4°hÓ?Ð?r7   c                óR   <€ V ^8„  d   QhRS[ R,          RS[ S[R,          ,          /# ©r=   ry   r:   r>   )r
   r   )r@   rA   s   "€r8   rB   rC   ú   s)   ø€ ÷ ñ ¡8¨IÕ#6ð ¹8ÁDÈÅOÕ;Tñ r7   c              #  ó\  "  € . pVP                   pV F…  pRVP                  9   dj   VP                  '       gX   Vw  rVpV'       dI   VP                  R4      w  r‰pV'       d   V! V ! W†4      4       V	'       g   K<  Vx € . pVP                   pKP  K}  V! V4       K‡  	  V'       d   Vx € R# R# 5i)zØSplit a sequence of segments in to a list of lines.

Args:
    segments (Iterable[Segment]): Segments potentially containing line feeds.

Yields:
    Iterable[List[Segment]]: Iterable of segment lists, one per line.
ru   N)ÚappendrF   rH   Ú	partition)
rf   ry   rv   rŽ   r]   rF   rN   Ú_Ú_textÚnew_lines
   &&        r8   Úsplit_linesÚSegment.split_linesù   s—   é € ð !ˆØ—‘ˆãˆGØ�w—|‘|Ô#¨G¯O¯O¨OØ!(‘�˜QßØ,0¯N©N¸4Ó,@Ñ)�E TßÙ™s 5Ó0Ô1ß‘xØ"š
Ø!˜Ø!%§¡šñ ñ �w–ñ  ÷ ØŒJñ ùs   ‚6B,¹B,Á/B,Á:)B,Â$B,c                óz   <€ V ^8„  d   QhRS[ R,          RS[RS[S[,          RS[RS[RS[ S[R,          ,          /# )r=   ry   r:   ÚlengthrN   ÚpadÚinclude_new_linesr>   )r
   r?   r   r   rT   r   )r@   rA   s   "€r8   rB   rC     sa   ø€ ÷ ,Iñ ,Iá˜9Õ%ð,Iñ ð,Iñ ™�ð	,Iñ
 ð,Iñ  ð,Iñ 
‘$�y•/Õ	"ñ,Ir7   c              #  óÞ  "  € . pVP                   pV P                  pV ! R4      p	V Fª  p
RV
P                  9   d�   V
P                  '       g}   V
w  r¼pV'       dn   VP	                  R4      w  rïpV'       d   V! V ! Wì4      4       V'       g   K<  V! WbW4R7      pV'       d   VP                  V	4       Vx € VP                  4        Ku  K¢  V! V
4       K¬  	  V'       d   V! WbW4R7      x € R# R# 5i)aª  Split segments in to lines, and crop lines greater than a given length.

Args:
    segments (Iterable[Segment]): An iterable of segments, probably
        generated from console.render.
    length (int): Desired line length.
    style (Style, optional): Style to use for any padding.
    pad (bool): Enable padding of lines that are less than `length`.

Returns:
    Iterable[List[Segment]]: An iterable of lines of segments.
ru   )rN   r—   N)rŽ   Úadjust_line_lengthrF   rH   r�   Úclear)rf   ry   r–   rN   r—   r˜   rv   rŽ   rš   Únew_line_segmentr]   rF   Úsegment_styler�   r‘   r’   Úcropped_lines   &&&&&&           r8   Úsplit_and_crop_linesÚSegment.split_and_crop_lines  sÕ   é € ð* !ˆØ—‘ˆà ×3Ñ3ÐÙ˜t›9ÐãˆGØ�w—|‘|Ô#¨G¯O¯O¨OØ)0Ñ&� QßØ,0¯N©N¸4Ó,@Ñ)�E TßÙ™s 5Ó8Ô9ß‘xÙ'9Ø °ô(˜÷ -Ø(×/Ñ/Ð0@ÔAØ*Ò*ØŸ
™
žñ ñ �w–ñ!  ÷" Ù$ T¸ÔHÔHñ ùs   ‚A
C-ÁC-Á/C-ÂAC-ÃC-c                ód   <€ V ^8„  d   QhRS[ R,          RS[RS[S[,          RS[RS[ R,          /# )r=   rv   r:   r–   rN   r—   r>   ©r   r?   r   r   rT   )r@   rA   s   "€r8   rB   rC   F  sI   ø€ ÷ *ñ *á�9�oð*ñ ð*ñ ™�ð	*ñ
 ð*ñ 
ˆi�ñ*r7   c                ó¸  € \        R V 4       4      pWR8  d4   V'       d    W! RW%,
          ,          V4      .,           pV# VR,          p V# WR8”  d€   . pVP                  p^ pV Ff  pVP                  p	WY,           V8  g   VP                  '       d   V! V4       WY,          pK@  Vw  r«p\	        W¢V,
          4      p
V! V ! W«4      4        V# 	   V# VR,          pV# )aÏ  Adjust a line to a given width (cropping or padding as required).

Args:
    segments (Iterable[Segment]): A list of segments in a single line.
    length (int): The desired width of the line.
    style (Style, optional): The style of padding if used (space on the end). Defaults to None.
    pad (bool, optional): Pad lines with spaces if they are shorter than `length`. Defaults to True.

Returns:
    List[Segment]: A line of segments with the desired length.
c              3   ó8   "  € T F  qP                   x € K  	  R # 5irM   )rI   )r}   r]   s   & r8   r   Ú-Segment.adjust_line_length.<locals>.<genexpr>X  s   é € ÐB¹T°'×-Ö-»Tùs   ‚rc   ºNNN)ÚsumrŽ   rI   rH   r   )rf   rv   r–   rN   r—   Úline_lengthr’   rŽ   r]   Úsegment_lengthrF   r�   r�   s   &&&&&        r8   rš   ÚSegment.adjust_line_lengthE  sí   € ô& ÑB¹TÓBÓBˆð ÔßØ 3 s¨fÕ.BÕ'CÀUÓ#KÐ"LÕL�ð& ˆð#   �7‘ð" ˆð! Ô!ØˆHØ—_‘_ˆFØˆKÛ�Ø!(×!4Ñ!4�ØÕ/°&Ô8¸G¿O¿O¸OÙ˜7”OØÕ1’Kà-4Ñ*�D¨Ü(¨¸Õ/CÓD�DÙ™3˜tÓ3Ô4Øð ˆò  ð ˆð ˜A•wˆHØˆr7   c                ó4   <€ V ^8„  d   QhRS[ R,          RS[/# )r=   rv   r:   r>   )r   r?   )r@   rA   s   "€r8   rB   rC   s  s#   ø€ ÷ 
Tñ 
T¡4¨	¥?ð 
T±sñ 
Tr7   c                ó:   a€ \         o\        V3R lV 4       4      # )z´Get the length of list of segments.

Args:
    line (List[Segment]): A line encoded as a list of Segments (assumes no '\\n' characters),

Returns:
    int: The length of the line.
c              3   óL   <"  € T F  w  rq3'       d   K  S! V4      x € K  	  R # 5irM   r    )r}   rF   rN   rH   Ú	_cell_lens   &   €r8   r   Ú*Segment.get_line_length.<locals>.<genexpr>}  s    øé € ÐS¹tÑ'; t°GË7”?‘9˜T—?�?»tùs   ƒ$”$)r   r§   )rf   rv   r®   s   &&@r8   Úget_line_lengthÚSegment.get_line_lengthr  s   ø€ ô ˆ	ÜÔS¹tÓSÓSÐSr7   c                óZ   <€ V ^8„  d   QhRS[ S[ R,          ,          RS[S[S[3,          /# )r=   Úlinesr:   r>   )r   r   r?   )r@   rA   s   "€r8   rB   rC   €  s,   ø€ ÷ 'ñ '™d¡4¨	¥?Õ3ð '¹¹cÁ3¸h½ñ 'r7   c                ót   a€ V P                   oV'       d   \        V3R lV 4       4      M^ pV\        V4      3# )zÆGet the shape (enclosing rectangle) of a list of lines.

Args:
    lines (List[List[Segment]]): A list of lines (no '\\n' characters).

Returns:
    Tuple[int, int]: Width and height in characters.
c              3   ó4   <"  € T F  pS! V4      x € K  	  R # 5irM   r    )r}   rv   r°   s   & €r8   r   Ú$Segment.get_shape.<locals>.<genexpr>Š  s   øé € Ð@¹%°$™¨×-Ð-»%ùs   ƒ)r°   Úmaxre   )rf   r³   Ú	max_widthr°   s   && @r8   Ú	get_shapeÚSegment.get_shape  s3   ø€ ð ×-Ñ-ˆßDI”CÔ@¹%Ó@Ô@Èqˆ	Øœ3˜u›:Ð&Ð&r7   c                óš   <€ V ^8„  d   QhRS[ S[ R,          ,          RS[RS[S[,          RS[S[,          RS[RS[ S[ R,          ,          /# )r=   r³   r:   ÚwidthÚheightrN   Ú	new_linesr>   r¢   )r@   rA   s   "€r8   rB   rC   Ž  sa   ø€ ÷ !ñ !á‘D˜•OÕ$ð!ñ ð!ñ ™•ð	!ñ
 ™�ð!ñ ð!ñ 
‰d�9�oÕ	ñ!r7   c           	     óh  € T;'       g    \        V4      pV'       d   V ! RV,          R,           V4      .MV ! RV,          V4      .pV P                  pVRV p	V U
u. uF  q¨! W¢VR7      NK  	  up
V	R&   \        V	4      V8  d*   V	P                  V.V\        V	4      ,
          ,          4       V	# u up
i )aÞ  Set the shape of a list of lines (enclosing rectangle).

        Args:
            lines (List[List[Segment]]): A list of lines.
            width (int): Desired width.
            height (int, optional): Desired height or None for no change.
            style (Style, optional): Style of any padding added.
            new_lines (bool, optional): Padded lines should include "
". Defaults to False.

        Returns:
            List[List[Segment]]: New list of lines.
        rc   ru   N)rN   r¦   )re   rš   Úextend)rf   r³   r¼   r½   rN   r¾   Ú_heightÚblankrš   Úshaped_linesrv   s   &&&&&&     r8   Ú	set_shapeÚSegment.set_shape�  s¼   € ð* ×&Ð&œC ›Jˆ÷ 1:‰S��u•˜tÕ# UÓ+Ñ,ÁÀCÈ%ÅKÐQVÓ@WÐ?Xð 	ð !×3Ñ3ÐØ˜X˜g�ˆáEJó
ÙEJ¸TÐ˜t°%×8ÁUñ
ˆ�Q‰ô ˆ|Ó˜wÔ&Ø×Ñ  ¨7´S¸Ó5FÕ+FÕ GÔHØÐùò
s   ÁB/c                óŽ   <€ V ^8„  d   QhRS[ R,          RS[S[R,          ,          RS[RS[RS[RS[RS[S[R,          ,          /# ©	r=   rf   r:   r³   r¼   r½   rN   r¾   r>   ©r   r   r?   r   rT   )r@   rA   s   "€r8   rB   rC   ²  óe   ø€ ÷ ñ Ù�)�_ðá‘D˜•OÕ$ðñ ðñ ð	ñ
 ðñ ðñ 
‰d�9�oÕ	ñr7   c                óÖ   € V\        V4      ,
          pV'       g
   VR,          # VRV pV'       d   V ! RV,          R,           V4      MV ! RV,          V4      pW..V,          ,           pV# )aÚ  Aligns lines to top (adds extra lines to bottom as required).

        Args:
            lines (List[List[Segment]]): A list of lines.
            width (int): Desired width.
            height (int, optional): Desired height or None for no change.
            style (Style): Style of any padding added.
            new_lines (bool, optional): Padded lines should include "
". Defaults to False.

        Returns:
            List[List[Segment]]: New list of lines.
        r¦   Nrc   ru   ©re   ©rf   r³   r¼   r½   rN   r¾   Úextra_linesrÂ   s   &&&&&&  r8   Ú	align_topÚSegment.align_top±  sd   € ð* œs 5›zÕ)ˆßØ˜•8ˆOØ�g�v�ˆß2;‘�C˜%•K $Õ&¨Ô.ÁÀSÈ5Å[ÐRWÓAXˆØ˜˜	 KÕ/Õ/ˆØˆr7   c                óŽ   <€ V ^8„  d   QhRS[ R,          RS[S[R,          ,          RS[RS[RS[RS[RS[S[R,          ,          /# rÇ   rÈ   )r@   rA   s   "€r8   rB   rC   Ï  rÉ   r7   c                óØ   € V\        V4      ,
          pV'       g
   VR,          # VRV pV'       d   V ! RV,          R,           V4      MV ! RV,          V4      pV..V,          V,           pV# )aì  Aligns render to bottom (adds extra lines above as required).

        Args:
            lines (List[List[Segment]]): A list of lines.
            width (int): Desired width.
            height (int, optional): Desired height or None for no change.
            style (Style): Style of any padding added. Defaults to None.
            new_lines (bool, optional): Padded lines should include "
". Defaults to False.

        Returns:
            List[List[Segment]]: New list of lines.
        r¦   Nrc   ru   rË   rÌ   s   &&&&&&  r8   Úalign_bottomÚSegment.align_bottomÎ  sf   € ð* œs 5›zÕ)ˆßØ˜•8ˆOØ�g�v�ˆß2;‘�C˜%•K $Õ&¨Ô.ÁÀSÈ5Å[ÐRWÓAXˆØ��	˜KÕ'¨%Õ/ˆØˆr7   c                óŽ   <€ V ^8„  d   QhRS[ R,          RS[S[R,          ,          RS[RS[RS[RS[RS[S[R,          ,          /# rÇ   rÈ   )r@   rA   s   "€r8   rB   rC   ì  se   ø€ ÷ ñ Ù�)�_ðá‘D˜•OÕ$ðñ ðñ ð	ñ
 ðñ ðñ 
‰d�9�oÕ	ñr7   c                ó  € V\        V4      ,
          pV'       g
   VR,          # VRV pV'       d   V ! RV,          R,           V4      MV ! RV,          V4      pV^,          pWh,
          p	V..V,          V,           V..V	,          ,           pV# )aæ  Aligns lines to middle (adds extra lines to above and below as required).

        Args:
            lines (List[List[Segment]]): A list of lines.
            width (int): Desired width.
            height (int, optional): Desired height or None for no change.
            style (Style): Style of any padding added.
            new_lines (bool, optional): Padded lines should include "
". Defaults to False.

        Returns:
            List[List[Segment]]: New list of lines.
        r¦   Nrc   ru   rË   )
rf   r³   r¼   r½   rN   r¾   rÍ   rÂ   Ú	top_linesÚbottom_liness
   &&&&&&    r8   Úalign_middleÚSegment.align_middleë  s†   € ð* œs 5›zÕ)ˆßØ˜•8ˆOØ�g�v�ˆß2;‘�C˜%•K $Õ&¨Ô.ÁÀSÈ5Å[ÐRWÓAXˆØ 1Õ$ˆ	Ø"Õ.ˆØ��	˜IÕ%¨Õ-°%°°	¸LÕ0HÕHˆØˆr7   c                óB   <€ V ^8„  d   QhRS[ R,          RS[ R,          /# rŒ   ©r
   )r@   rA   s   "€r8   rB   rC     s%   ø€ ÷ ñ ¡¨Õ 3ð ¹ÀÕ8Kñ r7   c              #  óL  "  € \        V4      p \        V4      p\        pT Ff  pTP                  TP                  8X  dC   TP
                  '       g1   T! TP                  TP                  ,           TP                  4      pK`  Tx € TpKh  	  Tx € R#   \         d     R# i ; i5i)a  Simplify an iterable of segments by combining contiguous segments with the same style.

Args:
    segments (Iterable[Segment]): An iterable of segments.

Returns:
    Iterable[Segment]: A possibly smaller iterable of segments that will render the same way.
N)ÚiterÚnextÚStopIterationr:   rN   rH   rF   )rf   ry   Úiter_segmentsÚlast_segmentrg   r]   s   &&    r8   ÚsimplifyÚSegment.simplify
  s–   é € ô ˜X›ˆð	Ü Ó.ˆLô ˆÛ$ˆGØ×!Ñ! W§]¡]Ô2¸7¿?¿?¸?Ù'Ø ×%Ñ%¨¯©Õ4°l×6HÑ6Hó ’ð #Ò"Ø&’ñ %ð Ôøô ô 	Úð	üs.   ‚B$�B š7B$ÁA B$ÂB!ÂB$Â B!Â!B$c                óB   <€ V ^8„  d   QhRS[ R,          RS[ R,          /# rŒ   rÛ   )r@   rA   s   "€r8   rB   rC   &  s)   ø€ ÷ Lñ L¡8¨IÕ#6ð L¹8ÀIÕ;Nñ Lr7   c              #  ó¼   "  € V FQ  pVP                   '       g   VP                  f   Vx € K)  Vw  r4pT ! Y4'       d   VP                  R4      MR4      x € KS  	  R# 5i)zžRemove all links from an iterable of styles.

Args:
    segments (Iterable[Segment]): An iterable segments.

Yields:
    Segment: Segments with link removed.
N)rH   rN   Úupdate_link)rf   ry   r]   rF   rN   Ú_controls   &&    r8   Ústrip_linksÚSegment.strip_links%  sN   é € ó  ˆGØ��ˆ '§-¡-Ò"7Ø”à(/Ñ%�˜XÙ˜$¾5 × 1Ñ 1°$Ô 7ÀdÓKÔKó  ùs   ‚AAc                óB   <€ V ^8„  d   QhRS[ R,          RS[ R,          /# rŒ   rÛ   )r@   rA   s   "€r8   rB   rC   7  s%   ø€ ÷ 
+ñ 
+¡H¨YÕ$7ð 
+¹HÀYÕ<Oñ 
+r7   c              #  ó>   "  € V F  w  r#pV ! VRV4      x € K  	  R# 5i)z¬Remove all styles from an iterable of segments.

Args:
    segments (Iterable[Segment]): An iterable segments.

Yields:
    Segment: Segments with styles replace with None
Nr    )rf   ry   rF   rG   rH   s   &&   r8   Ústrip_stylesÚSegment.strip_styles6  s%   é € ó &.Ñ!ˆD˜'Ù�d˜D 'Ó*Ô*ó &.ùs   ‚c                óB   <€ V ^8„  d   QhRS[ R,          RS[ R,          /# rŒ   rÛ   )r@   rA   s   "€r8   rB   rC   D  s%   ø€ ÷ /ñ /¡H¨YÕ$7ð /¹HÀYÕ<Oñ /r7   c              #  ó¶   "  € / pV FL  w  r4pV'       d3   VP                  V4      pVf   VP                  pWbV&   V ! W6V4      x € K@  V ! VRV4      x € KN  	  R# 5i)z£Remove all color from an iterable of segments.

Args:
    segments (Iterable[Segment]): An iterable segments.

Yields:
    Segment: Segments with colorless style.
N)ÚgetÚwithout_color)rf   ry   ÚcacherF   rN   rH   Úcolorless_styles   &&     r8   Úremove_colorÚSegment.remove_colorC  s`   é € ð %'ˆÛ$,Ñ ˆD˜ßØ"'§)¡)¨EÓ"2�Ø"Ò*Ø&+×&9Ñ&9�OØ#2˜%‘LÙ˜$°Ó9Ô9á˜$  gÓ.Ô.ó %-ùs   ‚AAc                óh   <€ V ^8„  d   QhRS[ R,          RS[ S[,          RS[ S[R,          ,          /# )r=   ry   r:   Úcutsr>   )r
   r?   r   )r@   rA   s   "€r8   rB   rC   Z  s<   ø€ ÷ Bñ BÙ 	Õ*ðBÙ2:¹3µ-ðBá	‘$�y•/Õ	"ñBr7   c              #  ó°  "  € . pVP                   p\        V4      p \        VR4      pVR8X  d   R# V^ 8w  d   M. x € K$  ^ pVP                  pVP                  p	\
        p
V Få  pVw  rÍpV'       g   K  V'       d   TMWz! V4      ,           pWö8  d   V! V4       TpK<  Wö8X  dD   V! V4       V	! 4       x € V! 4        Tp\        VR4      pVR8X  d   V'       d
   V	! 4       x €  R# K…  VP                  Wg,
          4      w  ppVw  rÍpV! V4       V	! 4       x € V! 4        Tp\        VR4      pVR8X  g   KË  V'       d
   V	! 4       x €  R# 	  V	! 4       x € R# 5i)zºDivides an iterable of segments in to portions.

Args:
    cuts (Iterable[int]): Cell positions where to divide.

Yields:
    [Iterable[List[Segment]]]: An iterable of Segments in List.
Nrd   )rŽ   rÝ   rÞ   r›   Úcopyr   rq   )rf   ry   r÷   Úsplit_segmentsÚadd_segmentÚ	iter_cutsr^   ri   Úsegments_clearÚsegments_copyr®   r]   rF   rG   rH   Úend_posrj   s   &&&              r8   ÚdivideÚSegment.divideY  sV  é € ð +-ˆØ$×+Ñ+ˆä˜“Jˆ	àÜ�y "Ó%ˆCØ�bŒyÙØ�aŒxØØŒHØˆà'×-Ñ-ˆØ&×+Ñ+ˆä#ˆ	ÛˆGØ$+Ñ!ˆD˜'ß‘$ß!(™#¨c°I¸d³OÕ.C�Ø”=Ù Ô(Ø!�CÙà”>Ù Ô(Ù'›/Ò)Ù"Ô$Ø!�Cä˜y¨"Ó-�CØ˜b”yß)Ù"/£/Ò1Úáð '.×&9Ñ&9¸#½)Ó&D‘O�F˜GØ,3Ñ)�D 'Ù Ô'Ù'›/Ò)Ù"Ô$Ø�Cä˜9 bÓ)�Ø˜"–9ß%Ù+›oÒ-ÚñG  ñJ ‹oÔùs&   ‚A-EÁ4EÁ<AEÃAEÄ5EÄ=Ec                ón   <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[S[,          ,          ;R&   # )r=   rF   rN   rH   )Ústrr   r   r   ÚControlCode)r@   rA   s   "€r8   rB   rC   ?   s9   ø‡ ‚ ñ �Iñ ñ ‘E�?Ñ!ñ ñ  ‘h™{Õ+Õ,Ñ3ò! r7   r    i @  )NN©F)NTT)NT)NNF)$r!   r"   r#   r$   r%   rN   rH   ÚpropertyrI   rP   rV   rZ   Úclassmethodr   rm   rq   rv   r„   r‰   r“   rŸ   rš   r°   r¹   rÄ   rÎ   rÒ   rØ   râ   rè   rì   rô   r   Ú__annotate_func__r6   Ú__classdictcell__©rA   s   @r8   r:   r:   ?   s  ø‡ € ñ
ð "€EØ/3€Gà÷0ó ð0÷ð ÷ð ð ÷(ó ð(ð ÙˆyÓ÷-ó ó ð-÷^,ð ,ð4 ÷ó ðð ÷&ñ &ó ð&ðP ÷@ñ @ó ð@ð$ ÷ó ðð8 ÷,Iñ ,Ió ð,Ið\ ÷*ñ *ó ð*ðX ÷
Tó ð
Tð ÷'ó ð'ð ÷!ñ !ó ð!ðF ÷ñ ó ðð8 ÷ñ ó ðð8 ÷ñ ó ðð< ÷ó ðð4 ÷Ló ðLð  ÷
+ó ð
+ð ÷/ó ð/ð* ÷Bó ðB÷w ƒ r7   r:   c                   óL   a € ] tR tRt o RtR	V 3R lR lltV 3R lR ltRtV tR# )
ÚSegmentsiŸ  a)  A simple renderable to render an iterable of segments. This class may be useful if
you want to print segments outside of a __rich_console__ method.

Args:
    segments (Iterable[Segment]): An iterable of segments.
    new_lines (bool, optional): Add new lines between segments. Defaults to False.
c                ó:   <€ V ^8„  d   QhRS[ S[,          RS[RR/# )r=   ry   r¾   r>   N)r
   r:   rT   )r@   rA   s   "€r8   rB   ÚSegments.__annotate__¨  s(   ø€ ÷ #ñ #¡©'Õ!2ð #¹tð #ÐPTñ #r7   c                ó2   € \        V4      V n        W n        R # rM   )Úlistry   r¾   )rE   ry   r¾   s   &&&r8   Ú__init__ÚSegments.__init__¨  s   € Ü˜X›ˆŒØ"Žr7   c                ó&   <€ V ^8„  d   QhRRRRRR/# ©r=   Úconsoler   Úoptionsr   r>   r   r    )r@   rA   s   "€r8   rB   r  ¬  s%   ø€ ÷ 	%ñ 	%Ø ð	%Ø+;ð	%à	ñ	%r7   c              #  óÀ   "  € V P                   '       d2   \        P                  4       pV P                   F  pVx € Vx € K  	  R # V P                   R j  x€L
  R #  L5irM   )r¾   r:   rv   ry   )rE   r  r  rv   r]   s   &&&  r8   Ú__rich_console__ÚSegments.__rich_console__¬  sB   é € ð �>�>ˆ>Ü—<‘<“>ˆDØŸ=œ=�Ø’Ø”
ó )ð —}‘}×$Ô$ùs   ‚AAÁAÁA)r¾   ry   Nr  )	r!   r"   r#   r$   r%   r  r  r6   r	  r
  s   @r8   r  r  Ÿ  s   ø‡ € ñ÷#ò #÷	%ö 	%r7   r  c                   óH   a € ] tR tRt o RV 3R lR lltV 3R lR ltRtV tR# )	ÚSegmentLinesi¸  c                óJ   <€ V ^8„  d   QhRS[ S[S[,          ,          RS[RR/# )r=   r³   r¾   r>   N)r
   r   r:   rT   )r@   rA   s   "€r8   rB   ÚSegmentLines.__annotate__¹  s,   ø€ ÷ 	#ñ 	#™h¡t©G¥}Õ5ð 	#Á$ð 	#ÐSWñ 	#r7   c                ó2   € \        V4      V n        W n        R# )a  A simple renderable containing a number of lines of segments. May be used as an intermediate
in rendering process.

Args:
    lines (Iterable[List[Segment]]): Lists of segments forming lines.
    new_lines (bool, optional): Insert new lines after each line. Defaults to False.
N)r  r³   r¾   )rE   r³   r¾   s   &&&r8   r  ÚSegmentLines.__init__¹  s   € ô ˜%“[ˆŒ
Ø"Žr7   c                ó&   <€ V ^8„  d   QhRRRRRR/# r  r    )r@   rA   s   "€r8   rB   r  Ä  s%   ø€ ÷ 
 ñ 
 Ø ð
 Ø+;ð
 à	ñ
 r7   c              #  óâ   "  € V P                   '       d8   \        P                  4       pV P                   F  pT R j  x€L
  Vx € K  	  R # V P                   F  pT R j  x€L
  K  	  R #  L- L5irM   )r¾   r:   rv   r³   )rE   r  r  r’   rv   s   &&&  r8   r  ÚSegmentLines.__rich_console__Ä  sV   é € ð �>�>ˆ>Ü—|‘|“~ˆHØŸ
œ
�Ø—�Ø”ó #ð Ÿ
œ
�Ø—’ó #ñ  ñ  ùs!   ‚;A/½A+¾"A/Á A-Á!A/Á-A/)r³   r¾   Nr  )r!   r"   r#   r$   r  r  r6   r	  r
  s   @r8   r  r  ¸  s   ø‡ € ÷	#ò 	#÷
 ö 
 r7   r  Ú__main__)r   )ÚSyntax)ÚTextz‚from rich.console import Console
console = Console()
text = Text.from_markup("Hello, [bold magenta]World[/]!")
console.print(text)zHello, [bold magenta]World[/]!zrich.Segmentz]A Segment is the last step in the Rich render process before generating text with ANSI codes.z
Consider the following code:
ÚpythonT)Úline_numberszRWhen you call [b]print()[/b], Rich [i]renders[/i] the object in to the following:
zAThe Segments are then processed to produce the following output:
zS
You will only need to know this if you are implementing your own Rich renderables.N):Úenumr   Ú	functoolsr   Ú	itertoolsr   Úloggingr   Úoperatorr   Útypingr   r	   r
   r   r   r   r   r   r   r   Úcellsr   r   r   r   r   Úreprr   r   rN   r   r  r   r   r   Úlogr   r?   r  r  r:   r  r  r!   Úpip._vendor.rich.consoleÚpip._vendor.rich.syntaxr$  Úpip._vendor.rich.textr%  ÚcodeÚfrom_markuprF   ÚruleÚprintr  ÚrenderÚ	fragmentsr    r7   r8   Ú<module>r:     s¨  ðÝ Ý Ý !Ý Ý ÷÷ ÷ ÷õ ÷ $Ý çß>Ñ>á�Ó€ô�'ô ð* Ø	ˆ+ÕØ	ˆ+�u˜S #˜X•Ð
&Õ'Ø	ˆ+�s˜CÐ
Õ ð"õ€ñ ƒô\	ˆjó \	ó ð\	÷~%ñ %÷2 ñ  ð2 ˆzÕÝ0Ý.Ý*ð€Dð
 ×ÒÐ<Ó=€Dá‹i€Gà‡L�L�Ô Ø‡M�MØgôð ‡M�MÐ4Ô5Ø‡M�M‘&˜˜x°dÔ;Ô<Ø‡M�M„OØ‡M�MØ]ôñ �W—^‘^ DÓ)Ó*€IØ‡M�M�)ÔØ‡M�M„OØ‡M�MÐVÔWØ‡M�M�$ÔØ‡M�MØ^öñ; r7   