Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
_clip.cpython-313.pyc283 linesDownload Raw Back to __pycache__
1�

2��j�w���SrSSKJr SSKrSSKJr SSKJrJrJ	r	J3r4 SSKJr SSK
Jr SS	KJrJr SS5KJrJrJrJrJr SSKJrJr SSKJrJrJr "S
S\R>5r "SS\65r!SSjr"SSjr#SSjr$S Sjr%S!Sjr&S Sjr'SSSSSSS.S"Sjjr(g)#z*This is a python implementation of clip().�)�annotationsN)�islice)�Literal�Callable�Optional�7NamedTuple�)�width)�iter_graphemes)�	Hyperlink�HyperlinkParams)�_SGR_STATE_DEFAULT�	_SGRState�_sgr_state_update�_sgr_state_is_active�_sgr_state_to_sequence)�8TextSizing�TextSizingParams)�_SEQUENCE_CLASSIFY�_HORIZONTAL_CURSOR_MOVEMENT�INDETERMINATE_EFFECT_SEQUENCEc��\rSrSrSr\R"5r\R"5r\R"5r	\R"5r9Srg)�_HyperlinkAction�z.Outcome of processing an OSC 8 hyperlink unit.�N)�__name__�10__module__�__qualname__�__firstlineno__�__doc__�enum�auto�NO_CLOSE�EMPTY�OUTSIDE�VISIBLE�__static_attributes__r��SD:\code\apps\devtools\python\user_packages\Python313\site-packages\wcwidth/_clip.pyrrs1��8��y�y�{�H��I�I�K�E��i�i�k�G��i�i�k�Gr(rc��\rSrSr%SrS\S'SrS\S'SrS\S'S	rS11\S'S	r	S12\S'S	r13S14\S
'SrS\S'SrS\S'Sr
g)�_HyperlinkResult�"zb15Result of processing an OSC 8 hyperlink.16 17Only the fields relevant to each action are populated.18r�actionr�int�	close_end�inner_width��str�open_seq�
clipped_inner�	close_seq�
clipped_width�19hl_col_endrN)rrrrr �__annotations__r/r0r3r4r5r6r7r'rr(r)r+r+"sU���
���I�s���K����H�c���M�3���I�s���M�3���J��r(r+c�b�Ub+[U5=n(aX -n[U5(aUS-
nU$)z�20Apply SGR prefix/suffix around *result*.21 22If an SGR state was captured at the first visible character, prefix the result with the23corresponding SGR sequence and suffix with a reset if any styles are active.24z)rr)�result�captured_style�prefixs   r)�_apply_sgr_wrapr=3s;���!�+�N�;�;�6�;��_�F���/�/��i��F��Mr(c���[R"X5up�X�4S:Xa[[R5$XU25n[X�XES9n
U
S:Xa[[RUS9$X�-nX�::dX�:�a[[RUU
S9$[SX-265nX)-27n[X�UX4USUS9n[UUXES9n[[RUU
UR5UUR5UUS9$)	z�28Process an OSC 8 hyperlink unit.29 30Finds the matching close sequence, measures the inner text width, and determines whether the31hyperlink is empty, outside the clip window, or visible (requiring inner-text clipping).32)�����r?)�
control_codes�tabsize�ambiguous_widthr)r/)r/r0F)�fillcharrArB�
propagate_sgrr@)r/r0r3r4r5r6r7)
r�33find_closer+rr#r34r$r%�max�clipr&�	make_open�35make_close)�text�start�endrCrArBr@�params�	match_end�col�close_startr/�36inner_textr0r7�inner_clip_start�inner_clip_endr4r6s                   r)�_process_hyperlinkrTBs��('�1�1�$�B��K���8�+�� 0� 9� 9�:�:���,�J�����K�37�a��� 0� 6� 6�)�L�L��"�J���c�j�� 0� 8� 8�I�,7�9�	9��1�e�k�*���Y�N���n��'��#��M���]���M�38�� � ����!�!�#�#��#�#�%�#��	�	r(c�8�0nUH(upgnURU/5RXx45 M* UR5Hn	U	R5 M U(a[	UR55OSn39U(a[	UR55OSn[	X�5n/n
Sn[
X�5nX�::a�URUS5HunnU
RU5 M X�:�aUS-
nM>X�;aXunnU
RU5 UU-
nO%X.s=::aU40::aO OU
RU5 US-
nX�::aM�[UR55H+nUU:�dMUUHunnU
RU5 M M- SRU
5$)z�41Reconstruct the output string from painter's algorithm state.42 43Walks columns left-to-right, interleaving escape sequences and cell content, filling gaps with44*fillchar*.45r?rrr	r1)46�47setdefault�append�values�sortrF�keys�min�get�sorted�join)�cells�	sequencesrKrLrC�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�48�49�&�?�?�8�R�8�K�A�x��L�L��"�9��?���M�H���� %���I�v��L�L��#����H��0�L�0����X�&���M�H�!�50�&�K�$�$�&�
'���y�=�*�1�~���8����X�&� .�(�51�7�7�5�>�r(c
�H52^�/n	Sn53SnSnU(a[OSn
U[U5:Ga�XnX�:�a,US;a&UbGO�URSUS-5nUS:XaGO�UnMEUS:XGad[R"X5nU(dU	RU5 US-
nM�UR
S5b6U(a/U
b,[U
UR
55n
UR5nM�[R"UR
55=n(GaH[XX%XdUUUR5U54S955nUR[RLa0U	RUR
55 UR5nO�UR[RLa
UR nO�UR[R"LaU56UR$-
n57UR nOxU	RUR&5 U	RUR(5 U	RUR*5 U(aUcU
nU58UR$-
n59UR nGM=UR
S	5=nb�UR
S605nUR
S5nUbUce[-[.R0"UUS9UU5nUR3U5nX�:�a:U61U-U::a1U	RUR555 U(aUcU
nU62U-
n63OJX�:a@U64U-U:�a7/mSU4S
jjn[7UX�X%UU5n65U	R9T5 U(aUcU
nOU66U-
n67UR5nGMHUR
5nU(a-[:R"U5(a[=SUSU<35eU	RU5 UR5nGM�US:XahUS:�aIX�X�--68-nU69U:a9Xs=::aU:a O OU	RS5 U(aUcU
nU70S-
n71U72U:aM9OU	RS5 US-
nGM[?[AXS95nUUS9nUS:Xa!Xs=::aU:aO O�U	RU5 OrX�:�a'U73U-U::aU	RU5 U(aUcU
nOFX�:aAU74U-U:�a8U	RU[EX*U-5[GX5-75-5 U(aUcU
nU76U-
n77U[U5-
nU[U5:aGM�SRIU	5U4$)z�78Clip text without cursor movement (simple append-to-output path).79 80Returns ``(result, captured_style)``.  The caller applies SGR wrapping.81rNz
	�r	r?�82sgr_params�rMrNrO�ts_meta�ts_text�ts_term�r@c�(>�TRU5 g)N)rW)�s�_w�_col�ts_partss   �r)�	_ts_write�_clip_simple.<locals>._ts_write's��� ����*r(�*Indeterminate cursor sequence at position �, �	� �rK�rBr1)rzr2r{r.r|r.�return�None)%r�len�findr�matchrW�grouprrLr
�parserTr-rr#r$r/r%r0r3r4r5rr�from_params�
display_width�
make_sequence�_text_sizing_clip�extendr�83ValueError�nextrr84r[rFr^)rJrKrLrDrBrCrA�strictr@�outputrO�idxr;�
current_style�char�next_esc�m�hl_state�rrurvrw�ts�ts_widthr~�seq�next_tab�grapheme�85grapheme_wr}s                             @r)�_clip_simpler��s����*�F�86�C�87�C�+/�N�*7�&�T�M�88
��D�	�/��y���:�$�n�4��)��89�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���90�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�91���?��!�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^^^^�TRU5nX:�a#X-U::aT"TR5Xq5 X-$X:�dX-U::aX-$[SX!-925n[X1U-5U-93n	TRR94m/n95TRRS:�a�[[TR5TRR5HnU96RUT45 M [TRR[U975-985HnU99RST45 M O9[TR5H nU100RU[
X�S9T-45 M" /mSUUUU4Sjjn
X-nSnU101H�unnUU-nUU::aUnMX�:�a O�[UU	5[X�5-102nUU:Xa/US:�a)T(dU[X�5-nTRUU45 O5U
"U5 U[X�5-n[U5HnT"USUU-5 M UnM� U
"U5 X-$)z�103Emit tokens for a text-sizing (OSC 66) sequence, clipped to (start, end).104 105Calls *write_cells(text, width, col)* for each emitted cell or sequence. Returns new column106position.107rr1r�c�>�T(dgTVs/sHoSPM	 nn[ST55n[TTRRS:�a[	U5OSTRR108TRRTRRTRR5nT"[USRU5TR5R5UU5 TR5 gs snf)Nrc3�*# �UH	oSv� M g7f)r	Nr)�.0�us  r)�	<genexpr>�3_text_sizing_clip.<locals>.flush.<locals>.<genexpr>�s���2�M�q��d�M�s�r1)�sumrrMr109r��	numerator�denominator�vertical_align�horizontal_alignrr^�110terminatorr��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��111	��v�r�w�w�u�~�r�}�}�=�K�K�M���	�	�����.s�Dr	)r�r.r�r�)
r�r�rFr[rMr�r112rrrJrW�ranger�)r�rOrKrLrCrBr�r��	rel_start�rel_end�units�grlr��
flush_col_pos�unit_pos�	unit_text�unit_w�unit_end�overlap�	abs_start�ir�r�s`     `               @@r)r�r�fs��� ����0�H��|���#�-��B�$�$�&��6��~��113�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�$���%#�(114�-���>�r(c
�^^^#^$^%^&�0m$[5m&/n	Sn115SnSnSm#T(a[OSm%SSU#U$U%UU&U4Sjjjn
U[U5:Ga�XnX�:�aT#bUS:waGO�US:XGaq[R"X5nU(d+U	RX�U45 U116S-
n117T(aT#cT%m#US-
nMsUR
S5b6T(a/T%b,[T%UR
55m%UR5nM�[R"UR
55=n(Gax[XUTXdUUUR5US9118nUR[RLaCU	RX�UR
545 U119S-
n120T(aT#cT%m#UR5nO�UR[RLa
UR nO�UR[R"LaUUR$-
nUR nO�U	RX�UR&45 U121S-
n122T(aT#cT%m#U
"UR(UR*USS	9 UUR*-
nU	RX�UR,45 U123S-
n124UR.nUR nGM_UR
S1255=nbyUR
S5nUR
S5nUbUce[1[2R4"UUS
9UU5n[7UX�UTUU
5nT(aT#cT%m#UR5nGM�UR
5nU(a-[8R"U5(a[;SUSU<35eUR
S5=nb*U(a[=U5S-126OSnUR5nGMnUR
S5=nbiU(a[=U5OSnUU-nX�:a6UU:�a0[?[AX�5[CUU55H
nU
"TSU5 M UnUR5nGM�UR
S5=nbXU(a[=U5OSnU(aUU:�a[;SUSUSUS35e[ASUU-1275nUR5nGMWU	RX�UR
545 U128S-
n129T(aT#cT%m#UR5nGM�US:Xa130SnUS-
nGM�US:XaUS:�aUS-nUS-
nGM�US:XahUS:�a6X�X�--131-nUU:a&Xs=::aU:a
O O132U
"TSU5 US-
nUU:aM&O$U	RX�S45 U133S-
n134T(aT#cT%m#US-
nGM3[E[GXS95n[IUUS9n U S:Xa4Xs=::aU:a'O O�U	RX�U45 U135S-
n136T(aT#cT%m#O`X�:�aUU -U::aU
"UU U5 OGX�:aBUU -U:�a9[AX5n![?[CX+U -5U!-1375Hn"U
"TSU!U"-5 M UU -
nU[U5-
nU[U5:aGM�[KT$X�UT5T#4$)z�138Clip text with cursor movement (painter's algorithm path).139 140Returns ``(result, captured_style)``.  The caller applies SGR wrapping.141rNc��>�[U5H�nX$-nUS:�a:TRUS-142S5SS:XaT	S4TUS-143'T144RUS-1455 TRUS5SS:XaT	S4TUS-'T146RUS-5 TRUS5 T147RU5 M� X4TU'U(a%[U5HnT148R	X$-5 M T(aTcTmggg)zIWrite *w* cells of text *s* at *write_col*, handling wide-char splitting.rr	)r1r�N)r�r\�discard�pop�add)rz�w�	write_col�is_hyperlink�offset�src_colr;r_r�rC�hyperlink_cellsrDs      ������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(rrr	rsrtT)r�rurvrwrxr�r��hpa_n�149cforward_n�cbackward_nz!Cursor left movement at position z would move z cells left from column z, exceeding string start�
�r�r�r�)F)150rzr2r�r.r�r.r��boolr�r�)&�setrr�rr�rWr�rrLr
r�rTr-rr#r$r/r%r0r3r4r6r5r7rrr�r�rr�r.r�rFr[r�rr151rp)'rJrKrLrDrBrCrAr�r@r`�	seq_orderrOr�r�r�r�r�r�rurvrwr�r�r�r��	n_forward�move_endr�r��152n_backwardr�r�r��153clip_startr�r;r_r�r�s'   ` `                             @@@@r)�
_clip_painterr��sk���*)+�E� #��O�,.�I��I�154�C�155�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���156�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�157�@�/9�C�158�O�q�	���?���9��E�!1�"�3�s�?�C��#�4F�G��$�X�q�!�4�H����e�e�g��� !�w�w�}�5�5��B�1<�S��-�!�159��j�3�.�$�;�C�5��%�,�&>�s�e�D1�2���160�!�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��161� � �#�$�!7�8��Q��	� �^�%;�%2�N��1�H�C����t�7�8���8�_�E�162���?��!�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�)rCrArBrDr@�163overtypingc��[US5nX!::agUR5(aUR5(aXU$SU;n	U(a	U	(dSnUcMUS:g=(a@ SU;=(d4 SU;=(d( U	=(a [[R164"U55nOU(aUS:XaSnU(a[O[n165[U166"UUUUUUUUS:HUS	9	6$)167u�168Clip text to display columns (start, end) while preserving all terminal sequences.169 170This function extracts a substring based on visible column positions rather than171character indices. Terminal escape sequences are preserved in the output since172they have zero display width. If a wide character (width 2) is split at173either boundary, it is replaced with ``fillchar``.174 175TAB characters (``\t``) are expanded to spaces up to the next tab stop,176controlled by the ``tabsize`` parameter. When cursor movement is detected,177a "painter's algorithm" is used, cursor movements actively change the write178position, allowing cursor-left and carriage return to overwrite previously179written cells. It is assumed that ``text`` begins at column 0.180 181**OSC 8 hyperlinks** are handled specially: the visible text inside a hyperlink182is clipped to the requested column range, and the hyperlink is rebuilt around183the clipped text.  Empty hyperlinks (those with no remaining visible text after184clipping) are removed::185 186    >>> clip('\x1b]8;;http://example.com\x07Click This link\x1b]8;;\x07', 6, 10)187    '\x1b]8;;http://example.com\x07This\x1b]8;;\x07'188 189:param text: String to clip, may contain terminal escape sequences.190:param start: Absolute starting column (inclusive, 0-indexed).191:param end: Absolute ending column (exclusive).192:param fillchar: Character to use when a wide character must be split at193    a boundary (default space). Must have display width of 1.194:param tabsize: Tab stop width (default 8). Set to 0 to pass tabs through195    as zero-width (preserved in output but don't advance column position).196:param ambiguous_width: Width to use for East Asian Ambiguous (A)197    characters. Default is ``1`` (narrow). Set to ``2`` for CJK contexts.198:param propagate_sgr: If True (default), SGR (terminal styling) sequences199    are propagated. The result begins with any active style at the start200    position and ends with a reset sequence if styles are active.201:param control_codes: How to handle control characters and sequences:202 203    - ``'parse'`` (default): Track horizontal cursor movement and clip204      hyperlink text.  Cursor overwrite is always allowed, with best effort205      results; indeterminate sequences (home, clear, reset, etc.) are206      preserved as zero-width.207    - ``'strict'``: Like ``parse``, but raises :exc:`ValueError` on208      sequences with indeterminate effects (cursor home, clear screen,209      reset, vertical movement, etc.) matching :func:`width` behavior.210      Also raises on out-of-bounds horizontal cursor movement.211    - ``'ignore'``: All control characters are treated as zero-width.212      Cursor movement is not tracked (fastest path).213 214:param overtyping: Whether to use the painter's algorithm for cursor215    movement (``\b`` backspace, ``\r`` carriage return, and CSI cursor216    left/right/position sequences).  When ``None`` (default), auto-detects217    by scanning for these characters in *text*.  Set to ``False`` for improved218    performance when the caller knows *text* contains no cursor movement219    characters.  Set to ``True`` to force the painter's algorithm (useful220    for testing).  Has no effect when ``control_codes='ignore'``.221 222:returns: Substring of ``text`` spanning display columns (start, end),223    with all terminal sequences preserved and wide characters at boundaries224    replaced with ``fillchar``.225 226:raises ValueError: If ``control_codes='strict'`` and an indeterminate-effect227    sequence or out-of-bounds cursor movement is encountered.228 229SGR (terminal styling) sequences are propagated by default. The result230begins with any active style and ends with a reset::231 232    >>> clip('\x1b[1;34mHello world\x1b[0m', 6, 11)233    '\x1b[1;34mworld\x1b[0m'234 235Set ``propagate_sgr=False`` to disable this behavior.236 237.. versionadded:: 0.3.0238 239.. versionchanged:: 0.5.0240   Added ``propagate_sgr`` parameter (default True).241 242.. versionchanged:: 0.7.0243   Added ``control_codes`` parameter (default 'parse').244   OSC 8 hyperlink-aware clipping.  OSC 66 text sizing protocol support.245   Added ``overtyping`` parameter (default None, auto-detect).246 247Example::248 249    >>> clip('hello world', 0, 5)250    'hello'251    >>> clip('中文字', 0, 3)  # Wide char split at column 3252    '中 '253    >>> clip('a\tb', 0, 10)  # Tab expanded to spaces254    'a       b'255rr1rrF�ignorer�r�r�)	rJrKrLrDrBrCrAr�r@)	rF�isascii�isprintabler�r�searchr�r�r=)rJrKrLrCrArBrDr@r��has_esc�fn_clips           r)rGrG�s���J
��q�M�E�256�|���|�|�~�~�$�*�*�,�,��#�����n�G��W��
���
�X�%�
K�
�t�^�J�t�t�|�J��H�$�:�A�A�$�G�H�	�257258�
��1��259�)�m�|�G��G�
���#�'�����)�#�260�261�262r()r:r2r;zOptional[_SGRState]r�r2)rJr2rKr.rLr.rCr2rAr.rBr.r@�$Literal['parse', 'strict', 'ignore']rMr
rNr.rOr.r�r+)r_zdict[int, tuple[str, int]]r`zlist[tuple[int, int, str]]rKr.rLr.rCr2r�r2)rJr2rKr.rLr.rDr�rBr.rCr2rAr.r�r�r@r�r�ztuple[str, Optional[_SGRState]])r�rrOr.rKr.rLr.rCr2rBr.r�zCallable[[str, int, int], None]r�r.)rJr2rKr.rLr.rCr2rAr.rBr.rDr�r@r�r�zOptional[bool]r�r2))r �263__future__rr!�	itertoolsr�typingrrrr�_widthr264r�r�	hyperlinkrr
�	sgr_staterrrrr�text_sizingrr�escape_sequencesrrr�Enumrr+r=rTrpr�r�r�rGrr(r)�<module>r�s���0�"���:�:��$�1�0�0�2656�>�>�266�t�y�y���z��"�?�267
�?��?�268
�?��	?�269�?��
?�8�?�
�?��?�270
�?��?�D4�%�4�)�4��4�271
�	4�272�4�	�
4�nh+�273
�h+��h+�274
�h+�275�h+��
h+��h+��h+�
�h+�8�h+�%�h+�VR��R�	�R��R�276
�	R�277�R��
R�1�R�	�R�jcX�278
�cX��cX�279
�cX�280�cX��
cX��cX��cX�
�cX�8�cX�%�cX�V����:A�!%�H�281
�H��H�282
�H�283�H��
H��H��H�8�H��H�	�Hr(
codekingpro/portable-devtools · Team Ai