HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/idlelib/idle_test/__pycache__/test_squeezer.cpython-311.opt-2.pyc
�

��Vc�N��\�	ddlmZddlmZmZddlZddlmZmZm	Z	m
Z
mZddlm
Z
ddlmZddlmZddlmZmZmZdd	lmZdd
lmZddlmZe
jZd�ZGd
�dej��ZGd�dej��Z Gd�dej��Z!e"dkrej#d���dSdS)�)�dedent)�Text�TkN)�Mock�NonCallableMagicMock�patch�sentinel�ANY)�requires)�idleConf)�
Percolator)�count_lines_with_wrapping�ExpandingButton�Squeezer)�macosx)�	view_text)�Hovertipc���	td��t��������fd�}|�|���S)N�guic�X����������dS�N)�update_idletasks�destroy��roots��3D:\Python311\Lib\idlelib\idle_test\test_squeezer.py�cleanup_rootz&get_test_tk_root.<locals>.cleanup_roots&�����������������)rr�withdraw�
addCleanup)�
test_instancerrs  @r�get_test_tk_rootr"s[���4��U�O�O�O�
�4�4�D��M�M�O�O�O���������\�*�*�*��Krc�@�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�CountLinesTestc�J�|�|t||����Sr��assertEqualr)�self�expected�text�	linewidths    r�checkzCountLinesTest.check$s*������%�d�I�6�6�
�
�	
rc�N�	|�td��d��dS)N�rr&�r(s r�test_count_emptyzCountLinesTest.test_count_empty*s*��(����2�2�6�6��:�:�:�:�:rc�N�	|�td��d��dS)Nz
text�r&r/s r�!test_count_begins_with_empty_linez0CountLinesTest.test_count_begins_with_empty_line.s*��=����2�8�<�<�a�@�@�@�@�@rc�N�	|�td��d��dS)Nztext
�r&r/s r�test_count_ends_with_empty_linez.CountLinesTest.test_count_ends_with_empty_line2s*��;����2�8�<�<�a�@�@�@�@�@rc�N�	|�td��d��dS)Nz1
2
3
�r&r/s r�test_count_several_linesz'CountLinesTest.test_count_several_lines6s*��.����2�;�?�?��C�C�C�C�Crc��|�ddd���|�ddd���|�ddd���dS)	Nr5�
�P�r)r*r+r2�

�
z










�r,r/s r�test_empty_lineszCountLinesTest.test_empty_lines:sP���
�
�A�D�B�
�7�7�7��
�
�A�F�b�
�9�9�9��
�
�B�Y�"�
�=�=�=�=�=rc�f�|�ddd���|�ddd���dS)Nr8��aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar<r=z�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
r@r/s r�test_long_linezCountLinesTest.test_long_line?s9���
�
�A�I��
�<�<�<��
�
�A�$4��
�C�C�C�C�Crc��td��}|�d|d���|�d|dzd���|�d|d���|�d|d	���|�d
|d���dS)Nz�            13 characters
            43 is the number of characters on this line

            7 chars
            13 characters�r<r=r;��(���r?)rr,)r(r*s  r�$test_several_lines_different_lengthsz3CountLinesTest.test_several_lines_different_lengthsCs��������	
�
�
�A�D�B�
�7�7�7��
�
�A�D�4�K�2�
�>�>�>��
�
�A�D�B�
�7�7�7��
�
�A�D�B�
�7�7�7��
�
�B�T�R�
�8�8�8�8�8rN)�__name__�
__module__�__qualname__r,r0r3r6r9rArDrL�rrr$r$"s�������;�
�
�
�;�;�;�A�A�A�A�A�A�D�D�D�>�>�>�
D�D�D�9�9�9�9�9rr$c�p�eZdZ	dd�Zdd�Zdd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�ZdS)�SqueezerTestFc��	t��}d|_|rBt|��|_|�|j���}|x|_|j_|S)Nr<r)r�widthr"r�make_text_widgetr*�per�bottom)r(�with_text_widget�editwin�text_widgets    r�make_mock_editor_windowz$SqueezerTest.make_mock_editor_windowSs\��2�&�(�(����
��	<�+�D�1�1�G�L��/�/�W�\�/�B�B�K�0;�;�G�L�7�;�-��rNc�R�	|�|���}t|��}|Sr)r[r)r(�
editor_window�squeezers   r�make_squeezer_instancez#SqueezerTest.make_squeezer_instance_s0��J��	;� �8�8�:�:�M��M�*�*���rc�|�|�t|��}t|��}d|d<|�dd��|S)N)�Courierr?�font�iomark�1.0)r"r�mark_set)r(rrZs   rrUzSqueezerTest.make_text_widgetfsH���	*�#�D�)�)�D��4�j�j��-��F�����X�u�-�-�-��rc��tj|||��}tj||||��|�tj||||��dSr)r�	GetOption�	SetOptionr )r(�
configType�section�option�value�prev_vals      r� set_idleconf_option_with_cleanupz-SqueezerTest.set_idleconf_option_with_cleanupns[���%�j�'�6�B�B����:�w���>�>�>�����*�"�G�V�X�	?�	?�	?�	?�	?rc��	|���}|�|��}dD]�\}}}|�|||���5t|��}t	j|d|��5|�|�|��|��ddd��n#1swxYwYddd��n#1swxYwY��dS)N))z'\n'r<r5)z'\n' * 3r<r8)z'a' * 40 + '\n'r<r5)z'a' * 80 + '\n'r<r5)z'a' * 200 + '\n'r<r8)�'aa\t' * 20r<r2)z'aa\t' * 21r<r8)rprH�)�	text_code�
line_widthr)rT)r[r_�subTest�evalr�objectr'�count_lines)r(rYr^rrrsr)r*s       r�test_count_lineszSqueezerTest.test_count_linests���>��.�.�0�0���.�.�w�7�7��	0
�	K�	K�+�I�z�8����	�)3�'/��1�1�
K�
K��I�����\�'�7�J�?�?�K�K��$�$�X�%9�%9�$�%?�%?��J�J�J�K�K�K�K�K�K�K�K�K�K�K����K�K�K�K�	
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��	K�	Ks6�&B>�1*B'�B>�'B+�+B>�.B+�/B>�>C	�C	c���	|���}|�|��}|�|j|��|�|jg��dSr)r[r_�assertIsrYr'�expandingbuttons)r(rYr^s   r�	test_initzSqueezerTest.test_init�s_��6��.�.�0�0���.�.�w�7�7���
�
�h�&��0�0�0�����2�B�7�7�7�7�7rc���	|���}ddddzdfD]�}tt���x|_}|�|��}|�|j�|d��t��|�|jd��|�|d��|�t|j
��d	����dS)
Nr.�TEXT�	LONG TEXT���LMANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
MANY_LINES
��return_valuerPr5r)r[r�SENTINEL_VALUE�writer_r'rY�
call_count�assert_called_with�lenr{�r(rYr*�
orig_writer^s     r�test_write_no_tagszSqueezerTest.test_write_no_tags�s���N��.�.�0�0�����t�!3�5I�J�	@�	@�D�)-�>�)J�)J�)J�J�G�M�J��2�2�7�;�;�H����X�-�3�3�D�"�=�=�~�N�N�N����Z�2�A�6�6�6��)�)�$��3�3�3����S��!:�;�;�Q�?�?�?�?�	@�	@rc��	ddddzdfD]�}|���}t|j_|j}|�|��}|�|j�|d��t��|�|jd��|�|d��|�t|j
��d����dS)	Nr.r~rr�r��stderrr5r)r[r�r�r�r_r'rYr�r�r�r{)r(r*rYr�r^s     r�test_write_not_stdoutz"SqueezerTest.test_write_not_stdout�s���N����t�!3�5I�J�
	@�
	@�D��2�2�4�4�G�)7�G�M�&� ��J��2�2�7�;�;�H����X�-�3�3�D�(�C�C�,�
.�
.�
.����Z�2�A�6�6�6��)�)�$��9�9�9����S��!:�;�;�Q�?�?�?�?�
	@�
	@rc�,�	|���}dD]�}tt���x|_}|�|��}d|_|�|j�|d��t��|�|jd��|�	|d��|�t|j��d����ddzd	fD]�}tt���x|_}|�|��}d|_|�|j�|d��d��|�|jd��|�t|j��d����dS)
N)r.r~r��2�stdoutr5rrr�r�)r[rr�r�r_�auto_squeeze_min_linesr'rYr�r�r�r{r�s     r�test_write_stdoutzSqueezerTest.test_write_stdout�s���N��.�.�0�0�� �		@�		@�D�)-�>�)J�)J�)J�J�G�M�J��2�2�7�;�;�H�.0�H�+����X�-�3�3�D�(�C�C�+�
-�
-�
-����Z�2�A�6�6�6��)�)�$��9�9�9����S��!:�;�;�Q�?�?�?�?� �4�'�)=�>�	@�	@�D�)-�>�)J�)J�)J�J�G�M�J��2�2�7�;�;�H�.0�H�+����X�-�3�3�D�(�C�C�T�J�J�J����Z�2�A�6�6�6����S��!:�;�;�Q�?�?�?�?�	@�	@rc�t�	|�d���}|j}|�|��}d|_t	d���|_|�dd��|�|�dd	��d
��|�t|j
��d��dS)NT�rXrFrGr�zTEXT
TEXT
TEXT
TEXT
TEXT
TEXT
r�rd�endr;r5)r[r*r_r�rrwr�r'�getr�r{)r(rYrZr^s    r�test_auto_squeezezSqueezerTest.test_auto_squeeze�s���O��.�.��.�E�E���l���.�.�w�7�7��*+��'�#��3�3�3����
�
�j�(�+�+�+���������6�6��=�=�=�����X�6�7�7��;�;�;�;�;rc���	dD�]�}|�d���}|j}|�|��}td���|_|�dd|��|�dd��|�|�dd	��d
��|�t|j
��d��|���}|�|d��|�|�dd	��d
��|�t|j
��d��|�|j
djd��|j
d�
��|�|�dd	��d
��|�t|j
��d�����dS)N)r�r�Tr�rGr�rd�
SOME
TEXT
�insertr��SOME
TEXT

r�breakr>r5z	SOME
TEXT)r[r*r_rrwr�rer'r�r�r{�squeeze_current_text�s�expand)r(�tag_namerYrZr^�retvals      r�test_squeeze_current_textz&SqueezerTest.test_squeeze_current_text�s���3�,�	@�	@�H��2�2�D�2�I�I�G�!�,�K��2�2�7�;�;�H�#'�Q�#7�#7�#7�H� �
���u�n�h�?�?�?�� � ��5�1�1�1����[�_�_�U�E�:�:�<L�M�M�M����S��!:�;�;�Q�?�?�?��2�2�4�4�F����V�W�-�-�-����[�_�_�U�E�:�:�F�C�C�C����S��!:�;�;�Q�?�?�?����X�6�q�9�;�\�J�J�J�
�%�a�(�/�/�1�1�1����[�_�_�U�E�:�:�<L�M�M�M����S��!:�;�;�Q�?�?�?�?�1	@�	@rc��	|�d���}|j}|�|��}td���|_|�ddd��|�dd��|�|�dd	��d
��|�t|j
��d��|���}|�|d��|�|�dd	��d
��|�t|j
��d��dS)
NTr�rGr�rdr��TAGr�r�r�rr�)r[r*r_rrwr�rer'r�r�r{r��r(rYrZr^r�s     r�)test_squeeze_current_text_no_allowed_tagsz6SqueezerTest.test_squeeze_current_text_no_allowed_tags�s3��N��.�.��.�E�E���l���.�.�w�7�7��#��3�3�3���	���5�.�%�8�8�8����X�u�-�-�-���������6�6�8H�I�I�I�����X�6�7�7��;�;�;��.�.�0�0�������)�)�)���������6�6�8H�I�I�I�����X�6�7�7��;�;�;�;�;rc�:�	|�d���}|j}|�|��}td���|_|�ddd��|�dd��|���|�t|j
��d	��|�dd
d��|�dd��|���}|�|d��|�|�dd��d
��|�t|j
��d��|�|�
|j
dd|j
d	����dS)NTr�rGr�rdr�r�r�r5zMORE
STUFF
r�r�z


r2r�<)r[r*r_rrwr�rer�r'r�r{r��
assertTrue�comparer�s     r�/test_squeeze_text_before_existing_squeezed_textz<SqueezerTest.test_squeeze_text_before_existing_squeezed_texts���@��.�.��.�E�E���l���.�.�w�7�7��#��3�3�3���	���5�.�(�;�;�;����X�u�-�-�-��%�%�'�'�'�����X�6�7�7��;�;�;�	���5�/�8�<�<�<����X�u�-�-�-��.�.�0�0�������)�)�)���������6�6��A�A�A�����X�6�7�7��;�;�;�����+�+��%�a�(���%�a�(�
�
�	�	�	�	�	rc��	|�d���}|�|��}|j}|dz}|�dddt	|����tj��|�|j|��dS)NTr�r?�main�PyShellzauto-squeeze-min-lines)r[r_r�rn�strr�reloadr')r(rYr^�orig_auto_squeeze_min_lines�new_auto_squeeze_min_liness     r�test_reloadzSqueezerTest.test_reloads���-��.�.��.�E�E���.�.�w�7�7��&.�&E�#�&A�2�%E�"��-�-��I�7��*�+�+�	-�	-�	-�	���������8�3�	5�	5�	5�	5�	5rc�.�	tj��dSr)rr�r/s r�!test_reload_no_squeezer_instancesz.SqueezerTest.test_reload_no_squeezer_instances+s��N�������r)Fr)rMrNrOr[r_rUrnrxr|r�r�r�r�r�r�r�r�r�rPrrrRrRQs������'�
�
�
�
���������?�?�?�K�K�K�,8�8�8�
@�
@�
@�@�@�@�@�@�@�0
<�
<�
<�@�@�@�:<�<�<�(���45�5�5�"����rrRc�`�eZdZ	d�Zede���d���Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�ExpandingButtonTestc��	t|��}t��}t|��|j_t|jj��|j_|�|jjj��d|_	|S)Nr�)
r"rrrYr*r
rVr �closer�)r(rr^s   r�make_mock_squeezerz&ExpandingButtonTest.make_mock_squeezer4so��>���%�%���6�6�� $�T�
�
����)�(�*:�*?�@�@��������(�,�2�3�3�3�+-��'��rzidlelib.squeezer.Hovertip��autospecc�D�	|���}|jj}tddd|��}|�|jd��|�|j|��|�d|�d��v��|�|�	dd��d��|�
d	|�����d
tj
��rdndz}|�
||�����|�|jd
��|�|t t ���|jdd
}|�
d|�����dS)Nr~�TAGSr�z50 linesr*rdr�r;z<Double-Button-1>z<Button-%s>�2�3r5)�hover_delayrzright-click)r�rYr*rr'r��masterr��cgetr��assertIn�bindr�isAquaTkr�r�r
�	call_args�lower)r(�MockHovertipr^rZ�expandingbutton�right_button_code�tooltip_texts       rr|zExpandingButtonTest.test_init@s���?��*�*�,�,���&�+��)�&�&�"�h�G�G������*�F�3�3�3�	
����/��=�=�=����
�o�&:�&:�6�&B�&B�B�C�C�C�	
��������6�6��=�=�=�	
�
�
�)�?�+?�+?�+A�+A�B�B�B�)�F�O�4E�4E�-N�S�S�3�O���
�
�'��)=�)=�)?�)?�@�@�@�	
����0�!�4�4�4��'�'���#�'�N�N�N�$�-�a�0��3���
�
�m�\�%7�%7�%9�%9�:�:�:�:�:rc��	|���}tddd|��}|jj}|�d|���|�t
�����}|�|d��|�|�dd��d��|�	d	��}|�|�d|��d��|�|�
dd��d|f��|�|jjj
d
��|jj�|��dS)Nr~r�r�rd��window��eventr�zTEXT
�end-1cr5)r�rrYr*�
window_creater�rr'r��index�
tag_nextranger{�remover�r�)r(r^r�rZr��text_end_indexs      r�test_expandzExpandingButtonTest.test_expand]sS��$��*�*�,�,��)�&�&�"�h�G�G���&�+���!�!�%��!�@�@�@�!�'�'�d�f�f�'�5�5�������&�&�&�	
��������6�6��A�A�A�%�*�*�8�4�4����������?�?��H�H�H�����2�2�6�5�A�A� �.�1�	3�	3�	3�	
����2�9�D�a�H�H�H��!�(�;�;�O�L�L�L�L�Lrc��	|���}ddz}t|dd|��}|���|�|j��|j}|�d|���td��5}d|j_	d|j
_	|�t���	��}ddd��n#1swxYwY|�
|d
��|�
|j�dd��d��td��5}d
|j_	d
|j
_	|�t���	��}ddd��n#1swxYwY|�
|d��|�
|j�dd��|��dS)N�ai��r�r�rdr�zidlelib.squeezer.messageboxFr�r�r�r.T)r�r�set_is_dangerousr��is_dangerousr*r�r�askokcancelr��askyesnor�rr'r�)r(r^r*r�rZ�mock_msgboxr�s       r�test_expand_dangerous_oupputz0ExpandingButtonTest.test_expand_dangerous_oupputxs*��N��*�*�,�,���U�{��)�$���H�E�E���(�(�*�*�*�����4�5�5�5�&�*���!�!�%��!�@�@�@��0�
1�
1�	:�[�38�K�#�0�05�K� �-�$�+�+�$�&�&�+�9�9�F�		:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	
�����)�)�)�����-�1�1�%��B�B�B�G�G�G��0�
1�
1�	:�[�37�K�#�0�04�K� �-�$�+�+�$�&�&�+�9�9�F�		:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	
�����&�&�&�����-�1�1�%��B�B�D�I�I�I�I�Is$�;C�C�C�.;E5�5E9�<E9c���	|���}tddd|��}t��|_t��|_|�t�����}|�|d��|�|jjd��|�|jjd��|j�d��dS)Nr~r�r�r�r5)	r�rr�clipboard_clear�clipboard_append�copyr'r�r�)r(r^r�r�s    r�	test_copyzExpandingButtonTest.test_copy�s���"��*�*�,�,��)�&�&�"�h�G�G��*.�&�&��'�+/�6�6��(�!�%�%�D�F�F�%�3�3�������&�&�&�	
����8�C�Q�G�G�G�����9�D�a�H�H�H��(�;�;�F�C�C�C�C�Crc��	|���}tddd|��}t��|_t	dt
���5}|�t�����|�|jd��|�|j	dd	d��ddd��dS#1swxYwYdS)
Nr~r�r�zidlelib.squeezer.view_textr�r�r5rr2)
r�rr�
selection_ownrr�viewr'r�r�)r(r^r��mock_view_texts    r�	test_viewzExpandingButtonTest.test_view�s��"��*�*�,�,��)�&�&�"�h�G�G��(,����%�
�/�)�
D�
D�
D�		E�!�� � �t�v�v� �.�.�.�
���^�6��:�:�:�
���^�5�a�8��;�V�D�D�D�		E�		E�		E�		E�		E�		E�		E�		E�		E�		E�		E�		E����		E�		E�		E�		E�		E�		Es�A%C�C�
Cc���	|���}tddd|��}td��5}t��}||_t��}d|_d|_|�|���|�|j	j
t|j����|jD]%^}}|j	�
|t����&	ddd��dS#1swxYwYdS)Nr~r�r�ztkinter.Menur?r�)�label�command)r�rrrr��x�y�context_menu_eventr'�add_commandr�r��rmenu_specs�assert_any_callr
)r(r^r��	mock_Menu�	mock_menu�
mock_eventr��datas        r�
test_rmenuzExpandingButtonTest.test_rmenu�sU��$��*�*�,�,��)�&�&�"�h�G�G��
�>�
"�
"�
	P�i����I�%.�I�"����J��J�L��J�L��.�.�Z�.�@�@�@����Y�2�=� ��!<�=�=�
?�
?�
?� /� ;�
P�
P�����%�5�5�E�3�5�O�O�O�O�
P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P����
	P�
	P�
	P�
	P�
	P�
	Ps�B'C,�,C0�3C0N)rMrNrOr�rrr|r�r�r�r�r�rPrrr�r�0s�������.�
�
�
��U�&��:�:�:�;�;�;�:�;�8M�M�M�6!J�!J�!J�FD�D�D�(E�E�E�"P�P�P�P�Prr��__main__r2)�	verbosity)$�textwrapr�tkinterrr�unittest�
unittest.mockrrrr	r
�test.supportr�idlelib.configr�idlelib.percolatorr
�idlelib.squeezerrrr�idlelibr�idlelib.textviewr�idlelib.tooltiprr�r"�TestCaser$rRr�rMr�rPrr�<module>rs����������������������J�J�J�J�J�J�J�J�J�J�J�J�J�J�!�!�!�!�!�!�#�#�#�#�#�#�)�)�)�)�)�)�
�
�
�
�
�
�
�
�
�
�������&�&�&�&�&�&�$�$�$�$�$�$��(�����,9�,9�,9�,9�,9�X�&�,9�,9�,9�^\�\�\�\�\�8�$�\�\�\�~^P�^P�^P�^P�^P�(�+�^P�^P�^P�B�z����H�M�A��������r