� ��^iJ���d�ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z mZmZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd l m!Z!dd l"m#Z#m$Z$dd l%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.ddl/m,Z0ddl1m2Z3ddl4m5Z5ddl4m6Z7ddl8m9Z9ddl:m;Z;mZ>ddl?m@Z@ddlAmBZBmCZCddlDmEZEddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOddlPmQZQddlRmSZSddlTmUZUmVZVddlWmXZXdd lYmZZZej[e\��Z]d!e^d"e!fd#�Z_Gd$�d%��Z`d&e`d"e^fd'�ZadS)(�N)�Any� Collection�Dict�Iterable�List�Optional�Sequence�Union)� pkg_resources)�Marker)� Requirement)� SpecifierSet)�canonicalize_name)�Version)�parse)�Pep517HookCaller)� Distribution)�BuildEnvironment�NoOpBuildEnvironment)�InstallationError)� get_scheme)�Link)�generate_metadata)�generate_editable_metadata)�install_editable)�LegacyInstallFailure)�install)� install_wheel)�load_pyproject_toml�make_pyproject_path)�UninstallPathSet)� deprecated)�direct_url_for_editable�direct_url_from_link)�Hashes) �ask_path_exists� backup_dir� display_path�dist_in_install_path�dist_in_site_packages�dist_in_usersite�get_distribution�hide_url�redact_auth_from_url)� get_metadata)�runner_with_spinner_message)� TempDirectory� tempdir_kinds)�running_under_virtualenv)�vcs�metadata_directory�returnc��|�tj��}tj�|��\}}t j||��}|�d��r2t j}tj� |��d}na|�d��sJ�t j }tj� |��d�d��d}||||���S)zQReturn a pkg_resources.Distribution for the provided metadata directory. z .egg-inforz .dist-info�-)� project_name�metadata) �rstrip�os�sep�path�splitr � PathMetadata�endswithr�splitext�DistInfoDistribution)r5�dist_dir�base_dir� dist_dir_namer:�dist_cls� dist_names ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/req/req_install.py� _get_distrJBs���"�(�(���0�0�H�!�g�m�m�H�5�5��H�m��)�(�H�=�=�H�����%�%�E� �-���G�$�$�]�3�3�A�6� � �� � ��.�.�.�.�.� �5���G�$�$�]�3�3�A�6�<�<�S�A�A�!�D� � �8���� � � ��c�X�eZdZdZ dGdeedeeedfdedee d ee d eed ed ee ed ee edee ee efdede edededdfd�Zdefd�Zdefd�Zdefd�Zedeefd���Zej��defd���Zedefd���Zedefd���ZdHdeeedefd�Zedefd���ZdId edefd!�Zdeefd"�Zd#ed$ed%edefd&�Z dJd'�Z!dJd(�Z"d)eddfd*�Z#edefd+���Z$edefd,���Z%edefd-���Z&edefd.���Z'edefd/���Z(dJd0�Z)dJd1�Z*dJd2�Z+ede,fd3���Z-de.fd4�Z/dJd5�Z0 dKd6ed$ed%eddfd7�Z1dJd8�Z2 dKd9ed:edee3fd;�Z4dedefd?�Z5d#eeddfd@�Z6 dLd e ed ee7edAeedBeedCeedDed)edEeddfdF�Z8dS)M�InstallRequirementz� Represents something that may be installed later on, may have information about where to fetch the relevant requirement and also contains logic for installing the said requirement. FN��req� comes_from�editable�link�markers� use_pep517�isolated�install_options�global_options� hash_options� constraint�extras� user_supplied�permit_editable_wheelsr6c���|�t|t��s J|���||_||_| |_||_||_d|_d|_|jrQ|sJ�|j rFtj � tj � |j����|_|�|r|jrt!|j��}|x|_|_d|_d|_|jr|jj r|jj|_| r| |_n,|rd�|jD��|_nt-��|_|� |r|j}||_d|_d|_d|_d|_|r|ng|_| r| ng|_| r| ni|_d|_ | |_!||_"tG��|_$d|_%d|_&g|_'d|_(||_)d|_*dS)NFc�6�h|]}tj|����SrN)r � safe_extra)�.0�extras rI� z.InstallRequirement.__init__..�s#��S�S�S�u�=�3�E�:�:�S�S�SrK)+� isinstancer rOrPrYrQr\�legacy_install_reason� source_dir�is_filer<r>�normpath�abspath� file_path�urlrrR� original_link�original_link_is_in_wheel_cache�local_file_pathrZ�set�markerrS� satisfied_by�should_reinstall�_temp_build_dir�install_succeededrVrWrX�preparedr[rUr� build_envr5�pyproject_requires�requirements_to_check�pep517_backendrT�needs_more_preparation)�selfrOrPrQrRrSrTrUrVrWrXrYrZr[r\s rI�__init__zInstallRequirement.__init__cs��"�{�j��k�:�:�{�{�C�{�{�:����$���$��� �� �&<��#�48��"�*.��� �=� T��K�K�4��|� T�"$�'�"2�"2�2�7�?�?�4�>�3R�3R�"S�"S��� �<�C�<�C�G�<����=�=�D�)-�-�� �D�&�/4��,�/3��� �9� 7���*� 7�#'�9�#6�D� � � � �D�K�K� � �S�S�� �S�S�S�D�K�K��%�%�D�K� �?�s�?��j�G��� �59���!&���8<���15���2A�I���r���0>�F�n�n�B���,8�@�L�L�b����� �+��� �� �+?�+A�+A��� 26���8<���13��"�;?���%���',��#�#�#rKc���|jrKt|j��}|jr/|d�t |jj����z }n#|jrt |jj��}nd}|j�/|d�t|jj����z }|j rFt|j t��r|j }n|j � ��}|r |d|�d�z }|S)Nz from {}zz in {}z (from �)) rO�strrR�formatr.rjrpr(�locationrPrc� from_path�rz�srPs rI�__str__zInstallRequirement.__str__�s��� �8� '��D�H� � �A��y� L��Z�&�&�';�D�I�M�'J�'J�K�K�K��� �Y� '�$�T�Y�]�3�3�A�A�&�A� � � (� �����d�.?�.H�!I�!I�J�J� J�A� �?� -��$�/�3�/�/� 9�,0�O� � �!�_�6�6�8�8� �� -��,�z�,�,�,�,���rKc�h�d�|jjt|��|j��S)Nz<{} object: {} editable={!r}>)r� __class__�__name__r~rQ�rzs rI�__repr__zInstallRequirement.__repr__�s.��.�5�5� �N� #�S��Y�Y�� � � � rKc����t|���t���}�fd�t|��D��}d�|jjd�|�����S)z5An un-tested helper for getting state, for debugging.c3�P�K�|] }d�|�|��V��!dS)z{}={!r}N)r)r`�attr� attributess �rI� z2InstallRequirement.format_debug..�s8�����T�T�d��!�!�$� �4�(8�9�9�T�T�T�T�T�TrKz<{name} object: {{{state}}}>z, )�name�state)�vars�sortedrr�r��join)rz�namesr�r�s @rI� format_debugzInstallRequirement.format_debug�sn����$�Z�Z� ��z�"�"��T�T�T�T�f�U�m�m�T�T�T��-�4�4���(��)�)�E�"�"�5� � � rKc�P�|j�dStj|jj��S�N)rOr � safe_namer�r�s rIr�zInstallRequirement.name�s$�� �8� ��4��&�t�x�}�5�5�5rKc�<�|jsdS|jsJ�|j5td��}|j�|��5d|j���vcddd��cddd��S#1swxYwY ddd��dS#1swxYwYdS)NFz1Checking if build backend supports build_editable�build_editable)rTrxrur0�subprocess_runner�_supported_features)rz�runners rI�supports_pyproject_editablez.InstallRequirement.supports_pyproject_editable�s~���� ��5��"�"�"�"� �^� U� U�0�C���F��$�6�6�v�>�>� U� U�'�4�+>�+R�+R�+T�+T�T� U� U� U� U� U� U� U�  U� U� U� U� U� U� U� U� U� U� U� U���� U� U� U� U� U�  U� U� U� U� U� U� U� U� U� U� U� U���� U� U� U� U� U� Us5�*B�A8� B�8A< �<B�?A< �B�B�Bc��|jjSr�)rO� specifierr�s rIr�zInstallRequirement.specifiers ���x�!�!rKc�|�|j}t|��dko"tt|����jdvS)z�Return whether I am pinned to an exact version. For example, some-package==1.2 is pinned; some-package>1.2 is not. �>�==�===)r��len�next�iter�operator)rz� specifierss rI� is_pinnedzInstallRequirement.is_pinneds9�� �^� ��:���!�#�X��T�*�-=�-=�(>�(>�(G�=�(X�XrK�extras_requestedc�T��|sd}�j�t�fd�|D����SdS)N)�c3�P�K�|] }�j�d|i��V��!dS)raN)rS�evaluate)r`rarzs �rIr�z3InstallRequirement.match_markers..sI��������2� 6� 6� =� =�d�i� H� H� H��k�"�"�"rKc���|j�dSt|j��}|jrEt|jt��r|j}n|j���}|r|d|zz }|S)z8Format a nice indicator to show where this "comes from" Nz->)rOr~rPrcr�r�s rIr�zInstallRequirement.from_path<sr�� �8� ��4� ���M�M�� �?� '��$�/�3�/�/� 9�!�_� � �!�_�6�6�8�8� �� '��T�J�&�&���rK� build_dir� autodelete�parallel_buildsc�D�|�J�|j�|jjsJ�|jjS|j�,ttjd���|_|jjSt |j��}|r|�dtj ��j ��}tj� |��s/t�d|��tj|��tj�||��}|rdnd}t||tjd���jS)NT)�kind�globally_managed�_zCreating directory %sF)r>�deleter�r�)rrr>rOr1r2� REQ_BUILDrr��uuid�uuid4�hexr<�exists�logger�debug�makedirsr�)rzr�r�r��dir_name�actual_build_dir� delete_args rI�ensure_build_locationz(InstallRequirement.ensure_build_locationJs1���$�$�$� � � +��'�,� ,� ,�,��'�,� ,� �8� �$1�"�,�t�$�$�$�D� ��'�,� ,�*�$�)�4�4�� � 8�"�7�7�T�Z�\�\�%5�7�7�H��w�~�~�i�(�(� #� �L�L�0�)� <� <� <� �K� � "� "� "��7�<�<� �8�<�<��(�2�T�T�U� ��!���(�!�  � � � �  rKc� �|j�J�|j�J�|j�J�tt |jd��t ��rd}nd}t d�|jd||jdg����|_dS)z*Set requirement after generating metadata.Nrr�r�r��Name)rOr:rerc� parse_versionrr r�)rz�ops rI�_set_requirementz#InstallRequirement._set_requirementus����x�����}�(�(�(���*�*�*� �m�D�M�)�$<�=�=�w� G� G� ��B�B��B�� �G�G��M�&�)���M�)�,�� � � � ����rKc���t|jd��}t|jj��|krdSt�d|j||j��t |��|_dS)Nr�zeGenerating metadata for package %s produced metadata for project name %s. Fix your #egg=%s fragments.)rr:rOr�r��warningr )rz� metadata_names rI�warn_on_mismatching_namez+InstallRequirement.warn_on_mismatching_name�ss��)�$�-��*?�@�@� � �T�X�]� +� +�}� <� <� �F� ��� !� �I� � �I�  � � ��}�-�-����rK� use_user_sitec���|j�dSt|jj��}|sdS|j}|duo |jj�|d���}|s�d|_|rft|��r d|_dSt��rr�rerR�subdirectory_fragmentr�s rI�unpacked_source_directoryz,InstallRequirement.unpacked_source_directory�s2���w�|�|� �O�T�Y�J�4�9�+J�P�b� � � rKc�x�|js Jd|�����tj�|jd��}|S)N�No source dir for zsetup.py�rer<r>r�r�)rz�setup_pys rI� setup_py_pathz InstallRequirement.setup_py_path�s=����;�;� ;�T� ;� ;�;�;���7�<�<�� >� �K�K���rKc�x�|js Jd|�����tj�|jd��}|S)Nr�z setup.cfgr�)rz� setup_cfgs rI�setup_cfg_pathz!InstallRequirement.setup_cfg_path�s>����;�;� ;�T� ;� ;�;�;���G�L�L��!?��M�M� ��rKc�R�|js Jd|�����t|j��S)Nr�)rer r�r�s rI�pyproject_toml_pathz&InstallRequirement.pyproject_toml_path�s1����;�;� ;�T� ;� ;�;�;��"�4�#A�B�B�BrKc���t|j|j|jt |����}|� d|_dSd|_|\}}}}||_||_t|j||���|_ dS)aALoad the pyproject.toml file. After calling this routine, all of the attributes related to PEP 517 processing for this requirement have been set. In particular, the use_pep517 attribute can be used to determine whether we should follow the PEP 517 or legacy (setup.py) code path. NFT)� backend_path) rrTr�r�r~rwrvrr�rx)rz�pyproject_toml_data�requires�backend�checkr�s rIrz&InstallRequirement.load_pyproject_toml�s���2� �O�T�5�t�7I�3�t�9�9� � �� � &�#�D�O� �F����1D�.��'�5�,�%*��"�"*���.� � *� �%� � � ����rKc��|jrv|jrq|���s_tj�|j��s=tj�|j��std|�d����dSdSdSdSdS)z�Check that an editable requirement if valid for use with PEP 517/518. This verifies that an editable that has a pyproject.toml either supports PEP 660 or as a setup.py or a setup.cfg zProject z� has a 'pyproject.toml' and its build backend is missing the 'build_editable' hook. Since it does not have a 'setup.py' nor a 'setup.cfg', it cannot be installed in editable mode. Consider using a build backend that supports PEP 660.N) rQrTr�r<r>�isfiler�r�rr�s rI�isolated_editable_sanity_checkz1InstallRequirement.isolated_editable_sanity_checks��� �M� ��� ��4�4�6�6� ��G�N�N�4�#5�6�6� � �G�N�N�4�#6�7�7� �$�I�4�I�I�I��� � � � � � � � � � � rKc��|jsJ�|jrm|j�J�|jr<|jr5|���r!t |j|j���|_n]t|j|j���|_nCannot update repository at %s; repository location is unknown�filezUnsupported VCS URL )rj) rRr�r�rerQ�schemer4�get_backend_for_schemerjr-�obtain)rz� vcs_backend� hidden_urls rI�update_editablez"InstallRequirement.update_editableus����y� � �L�L�P��� � � � �F��}���}������ �9� �v� %� %� �F��0���1A�B�B� ��B�B�B�4�9�=�B�B�B�B�{��d�i�m�,�,� ����4�?� ��;�;�;�;�;rK� auto_confirm�verbosec��|jsJ�t|jj��}|s"t�d|j��dSt�d|��t j|��}|�||��|S)a� Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. z#Skipping %s as it is not installed.NzFound existing installation: %s) rOr,r�r�r��infor!� from_dist�remove)rzrr�dist�uninstalled_pathsets rI� uninstallzInstallRequirement.uninstall�s����x���x���� �.�.��� � �N�N�@�$�)� L� L� L��4�� � �5�t�<�<�<�.�8��>�>���"�"�<��9�9�9�"�"rKr>� parentdir�rootdirc��dtdtdtfd�}tj�||��}|||��}|jdz|zS)Nr��prefixr6c���|�|tjjz��sJd|�d|�����|t |��dzd�}|�tjjd��}|S)Nzname z doesn't start with prefix r��/)� startswithr<r>r=r��replace)r�rs rI�_clean_zip_namez=InstallRequirement._get_archive_name.._clean_zip_name�s����?�?�����$��� E� E�D�t�D�D�&�D�D� E� E����F� � �a��)�)�*�D��<�<��� �S�1�1�D��KrKr!)r~r<r>r�r�)rzr>rrr$r�s rI�_get_archive_namez$InstallRequirement._get_archive_name�sd�� �#� �s� �s� � � � ��w�|�|�I�t�,�,����t�W�-�-���y�3���%�%rKc��|jsJ�|�dSd}d�|j|jd��}tj�||��}tj�|��r�td�t|����d��}|dkrd}n�|d kr=t� d t|����t j |��n{|d kr[t|��}t� d t|��t|����tj||��n|d krt!jd��|sdSt%j|d t$jd���}|5tj�tj�|j����}t j|��D]�\} } } | D]N} |�| | |���} t%j| dz��}d|_|�|d���O| D]P}|�|| |���}tj�| |��}|�||���Q�� ddd��n #1swxYwYt�dt|����dS)z}Saves archive to provided build_dir. Used for saving downloaded VCS requirements as part of `pip download`. NTz {}-{}.zipr�z8The file {} exists. (i)gnore, (w)ipe, (b)ackup, (a)bort )�i�w�b�ar'Fr(z Deleting %sr)zBacking up %s to %sr*�����)� allowZip64)rrr!i�r�zSaved %s)rerr�r:r<r>r�r�r&r(r�r�rr'�shutil�move�sys�exit�zipfile�ZipFile� ZIP_DEFLATED�normcaserhr��walkr%�ZipInfo� external_attr�writestr�writer)rzr��create_archive� archive_name� archive_path�response� dest_file� zip_output�dir�dirpath�dirnames� filenames�dirname� dir_arcname�zipdir�filename� file_arcnames rI�archivezInstallRequirement.archive�s�� ����� � � �F���"�)�)�$�)�T�]�9�5M�N�N� ��w�|�|�I�|�<�<� � �7�>�>�,� '� '� �&�%�%+�V�L��,F�,F�%G�%G�$���H� �3���!&����S������}�l�<�.H�.H�I�I�I�� �,�'�'�'�'��S���&�|�4�4� ����)� ��.�.� ��+�+���� � �L�)�4�4�4�4��S������ � � �� � �F��_� � � � ��  � � � � � =� =��'�"�"�2�7�?�?�4�3Q�#R�#R�S�S�C�02��� � � =� =�,���9�'�4�4�G�"&�"8�"8��")� #�#9�#�#�K� %�_�[�3�->�?�?�F�+6�F�(��'�'���3�3�3�3� )�=�=�H�#'�#9�#9� �")� #�$:�$�$�L� "�w�|�|�G�X�>�>�H��$�$�X�|�<�<�<�<�=� =� =� =� =� =� =� =� =� =� =� =� =���� =� =� =� =�* � � �J� �\� :� :�;�;�;�;�;s�DJ"�"J&�)J&�root�homer�warn_script_location� pycompilec ���t|j||||j|���} |�|ng}|jrB|js;t ||||||j|j|j|j|j�� � d|_ dS|jr�|j sJ�d} |jrt|j��} n'|j r t|j |j|j��} t!|j|j | t#|j��||| |j���d|_ dSt)|��|jz}t)|��|jz} t/|||||||| |j|j|j|j|jt#|j�����} n1#t0$r} d|_ | j�d} ~ wt4$r d|_ �wxYw| |_ | r8|jdkr/t9d�|j��d dd� ��dSdSdS) N)�userrKrJrUr)rrKr�r�r�rUrur�T)r �req_descriptionrMrL� direct_url� requested)rVrWrJrKrr�rMr r�rU�req_namerur�rPFi� zg{} was installed using the legacy 'setup.py install' method, because a wheel could not be built for it.z+to fix the wheel build issue reported above��reason� replacement�gone_in�issue)rr�rUrQr��install_editable_legacyr�rur�rsrmr#rkr$rerlrr~rOr[�listrWrV�install_legacyr� __cause__� Exceptionrdr"r) rzrVrWrJrKrrLr�rMr rQ�success�excs rIrzInstallRequirement.install�s���� �I�����]��  � � ��,:�+E���2�� �=� ��� � #�����+��Y�"�0����.�*.�*H� � � � �&*�D� "� �F� �=� ��'� '� '�'��J��}� �4�T�5S�T�T� � ��#� �1��&��O��8��� � �� ��$�� #�D�H� � �#�%9�%��,� � � � �&*�D� "� �F��n�-�-��0C�C����/�/�$�2F�F�� �$� /�-����+�#��"�0������.�*.�*H� #�D�H� � ����G�G�� $� � � �%*�D� "��-� ������ � � �%)�D� "� � ����")��� � �t�1�T�9�9� �I�IO��� �J�J�J��� � � � � � � � �9�9s�4AE=�= F+�F�F+) FNNNFNNNFrNFFr�)T)r6N)FF)NNNNTFT)9r�� __module__� __qualname__�__doc__rr r r~r�rr rrrr{r�r�r��propertyr�� functools� lru_cacher�rr�r�rr�r�r%r�r�r�r�r�r�r�r�r�r�r�rr�rrr:rrrr rr!rr%rIr rrNrKrIrMrM\sv���������#�$(�%)��/3�.2�7;� �"$�#�',�h,�h,� �k� "�h,��U�3�(<�#<�=�>�h,�� h,� �t�n� h,� �&�!� h,��T�N�h,��h,�"�$�s�)�,�h,�!��c��+�h,��t�C��c��N�3�4�h,��h,��3��h,��h,�!%�h,� �!h,�h,�h,�h,�T������( �#� � � � �  �c�  �  �  �  ��6�h�s�m�6�6�6��X�6� �Y���� U�T� U� U� U��� U��"�<�"�"�"��X�"��Y�4�Y�Y�Y��X�Y� � �h�x��}�.E� �QU� � � � ��'�$�'�'�'��X�'�#�#�T�#�V�#�#�#�#�* �8�C�=� � � � �)��)�*.�)�AE�)� �)�)�)�)�V � � � �,.�.�.�.�"+2�T�+2�d�+2�+2�+2�+2�\�"�$�"�"�"��X�"� � �3� � � ��X� � ��s�����X�� �������X�� �C�S�C�C�C��X�C� � � � �4����*'-�'-�'-�'-�R��#�����X�� 2�,�2�2�2�2�����*!� %� ������� � � ����.<�<�<�<�*;@�#�#� �#�37�#� �"� #�#�#�#�#�4 &�c� &�c� &�C� &�C� &� &� &� &�A<��#��A<�4�A<�A<�A<�A<�L37�"�"� $�%)�#��l�l��c��l�!��#��/�l��s�m� l� �s�m� l� �� � l�#�l��l��l� �l�l�l�l�l�lrKrMrOc�n�d}|jsd}n|jrd}n |jrd}|rtdddd���|S) Nr�z3Unnamed requirements are not allowed as constraintsz4Editable requirements are not allowed as constraintszConstraints cannot have extrasaConstraints are only allowed to take the form of a package name and a version specifier. Other forms were originally permitted as an accident of the implementation, but were undocumented. The new implementation of the resolver no longer supports these forms.z+replacing the constraint with a requirementi rT)r�rQrZr")rO�problems rI�check_invalid_constraint_typerhbsq���G� �8�3�G��� ��3�H��� ��3�2���  ��/� F��� � � � � �NrK)brd�loggingr<r-r/r�r1�typingrrrrrrr r � pip._vendorr �pip._vendor.packaging.markersr �"pip._vendor.packaging.requirementsr � pip._vendor.packaging.specifiersr�pip._vendor.packaging.utilsr�pip._vendor.packaging.versionrrr��pip._vendor.pep517.wrappersr�pip._vendor.pkg_resourcesr�pip._internal.build_envrr�pip._internal.exceptionsr�pip._internal.locationsr�pip._internal.models.linkr�'pip._internal.operations.build.metadatar�0pip._internal.operations.build.metadata_editabler�.pip._internal.operations.build.metadata_legacyr��0pip._internal.operations.install.editable_legacyrrY�'pip._internal.operations.install.legacyrrr[�&pip._internal.operations.install.wheelr�pip._internal.pyprojectrr �pip._internal.req.req_uninstallr!�pip._internal.utils.deprecationr"�&pip._internal.utils.direct_url_helpersr#r$�pip._internal.utils.hashesr%�pip._internal.utils.miscr&r'r(r)r*r+r,r-r.�pip._internal.utils.packagingr/�pip._internal.utils.subprocessr0�pip._internal.utils.temp_dirr1r2�pip._internal.utils.virtualenvr3�pip._internal.vcsr4� getLoggerr�r�r~rJrMrhrNrKrI�r�s����������� � � � � � � � � � � � � � � � �����S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�S�%�%�%�%�%�%�0�0�0�0�0�0�:�:�:�:�:�:�9�9�9�9�9�9�9�9�9�9�9�9�1�1�1�1�1�1�@�@�@�@�@�@�8�8�8�8�8�8�2�2�2�2�2�2�J�J�J�J�J�J�J�J�6�6�6�6�6�6�.�.�.�.�.�.�*�*�*�*�*�*�E�E�E�E�E�E�W�W�W�W�W�W�������������I�H�H�H�H�H�M�M�M�M�M�M�@�@�@�@�@�@�L�L�L�L�L�L�L�L�<�<�<�<�<�<�6�6�6�6�6�6���������.�-�-�-�-�-� � � � � � � � � � � � � � � � � � � � � � �7�6�6�6�6�6�F�F�F�F�F�F�E�E�E�E�E�E�E�E�C�C�C�C�C�C�!�!�!�!�!�!� �� �8� $� $���#��,�����4C �C �C �C �C �C �C �C �L�'9��c������rK