� c��j�~���� gd�ZddlZddlZddlZddlZddl Z ddl Z ddl mZddlZddlZddlZddlZej.Zej2ej4zej6zZeed�reej<zZeZeed�reej@zZeed�r ejBZ!ndZ!dZ"e�Z#d �Z$d �Z%d �Z&Gd �d �Z'd�Z(d�Z)da*d�Z+d�Z,d�Z-d�Z.d�Z/d�Z0da1d�Z2d�Z3d�Z4d-d�Z5d.d�Z6de"dfd�Z7Gd�d�Z8Gd�d �Z9 d/dd!d"�d#�Z:ejvd$k7sejxd%k(re:Z=need&�a> d0dd'�d(�Z=Gd)�d*ej~�Z@Gd+�d,�ZAy)1) �NamedTemporaryFile� TemporaryFile�SpooledTemporaryFile�TemporaryDirectory�mkstemp�mkdtemp�mktemp�TMP_MAX� gettempprefix�tempdir� gettempdir�gettempprefixb� gettempdirb�N)�Random� O_NOFOLLOW�O_BINARYr i'�tmpc�N� tj|�y#t$rYywxYw)NTF)�_os�lstat�OSError)�fns �!/usr/lib64/python3.12/tempfile.py�_existsrLs+��� � � �"� ��� ����� �� $�$c�T� d}|D]w}|��t|tj�rtj|�}t|t�r|t ur t d��t}�_|tur t d��t }�y|�&t�ttt �rt StS|S)Nz1Can't mix bytes and non-bytes in path components.)� isinstancer�PathLike�fspath�bytes�str� TypeErrorr )�args� return_type�args r�_infer_return_typer&Us���L��K��� �;� � �c�3�<�<� (��*�*�S�/�C� �c�5� !��c�!��!3�4�4��K��e�#��!3�4�4��K�!�"�� �?�j��#�6��J��L� ��c��� t|||�}|�|�}|�(|turt}ntjt�}|�|tur t �}n t �}||||fS�N)r&r!�templater�fsencoder r)�prefix�suffix�dir� output_types r�_sanitize_paramsr0rsi��C�$�V�V�S�9�K� �~���� �~� �#� ��F��\�\�(�+�F� �{� �#� ��,�C��-�C� �6�3� � +�+r'c�.�eZdZ dZed��Zd�Zd�Zy)�_RandomNameSequence�%abcdefghijklmnopqrstuvwxyz0123456789_c��tj�}|t|dd�k7rt�|_||_|jS)N�_rng_pid)r�getpid�getattr�_Random�_rngr5)�self�cur_pids r�rngz_RandomNameSequence.rng�s8���*�*�,�� �g�d�J��5� 5�� �D�I�#�D�M��y�y�r'c��|Sr)��r:s r�__iter__z_RandomNameSequence.__iter__�s��� r'c�n�dj|jj|jd���S)N��)�k)�joinr<�choices� charactersr?s r�__next__z_RandomNameSequence.__next__�s)���w�w�t�x�x�'�'����1�'�=�>�>r'N)�__name__� __module__� __qualname__rG�propertyr<r@rHr>r'rr2r2�s*��+�9�J� �����?r'r2c�� g}dD]+}tj|�}|s�|j|��-tjdk(rR|j tj j d�tj jd�ddddg�n|j gd �� |jtj��|S#ttf$r#|jtj�Y|SwxYw) N)�TMPDIR�TEMP�TMP�ntz~\AppData\Local\Tempz%SYSTEMROOT%\Tempzc:\tempzc:\tmpz\tempz\tmp)z/tmpz/var/tmpz/usr/tmp) r�getenv�append�name�extend�path� expanduser� expandvars�getcwd�AttributeErrorr�curdir)�dirlist�envname�dirnames r�_candidate_tempdir_listr_�s���&��G�+���*�*�W�%�� �G�N�N�7�+�+�  �x�x�4��������,�,�-D�E����,�,�-A�B�#�Y��'�D� E� ���9�:�#����s�z�z�|�$� �N�� �G� $�#����s�z�z�"� �N�#�s�-#C�.D�Dc�~� t�}t�}|D]�}|tjk7rtjj |�}t d�D]�}t|�}tjj||�} tj|td�} tj|d�tj|� tj|�|ccS��t+t,j.d|z��#tj|�wxYw#tj|�wxYw#t$rY��t$r^tj dk(rFtjj#|�r'tj$|tj&�rY��SY���t($rY���wxYw)N�d�sblatrQz)No usable temporary directory found in %s)r2r_rr[rV�abspath�range�nextrE�open�_bin_openflags�write�close�unlink�FileExistsError�PermissionErrorrT�isdir�access�W_OKr�FileNotFoundError�_errno�ENOENT)�namerr\r.�seqrT�filename�fds r�_get_default_tempdirrw�sN��>� � !�E�%�'�G��� �#�*�*� ��(�(�"�"�3�'�C���:�C���;�D��x�x�}�}�S�$�/�H� ��X�X�h���>��)�&�� � �"�g�.�� � �"� ��J�J�x�(�� �� �8 �F�M�M�G�#�$� %�%��� � �"� ���J�J�x�(��"� ��"� ��H�H��$�������)<��J�J�s�C�H�H�-���� �� �sI�D?�$D �:D%�D?� D"�"D%�%D<�<D?�? F<� AF<�/F<�;F<c��� t�?tj� t� t�atj �tStS#tj �wxYwr))�_name_sequence� _once_lock�acquirer2�releaser>r'r�_get_candidate_namesr}�sS��A������� !��%�!4�!6�� � � � � ��>��� � � � �� �A � A#c�� tjj|�}t�}|turt tj |�}tt�D]f}t|�}tjj|||z|z�}tjd|� tj||d�} | |fcStt(j*d��#t$rY��t$rZtj dk(rEtjj#|�r&tj$|tj&�rY��wxYw)Nztempfile.mkstemprbrQz#No usable temporary file name found)rrVrcr}r �mapr+rdr rerE�_sys�auditrfrkrlrTrmrnrorq�EEXIST) r.�pre�suf�flagsr/�namesrtrT�filervs r�_mkstemp_innerr��s ��H� �(�(� � �3� �C� � "�E��e���C�L�L�%�(���W�~���E�{���x�x�}�}�S�#��*�s�"2�3�� � � �%�t�,� ����$��u�-�B��4�x��!�$ �&�-�-�?� A�A��� � �� ����D� �S�X�X�^�^�C�%8�� � �3����)��� �s�'C� E �*AE � E c��|tjvr ||g|��ddi�ytjdk(stjj |�s ||g|���yy)N�follow_symlinksFrQ)r�supports_follow_symlinksrTrV�islink)�funcrVr#s r�_dont_follow_symlinksr�sO�� �s�+�+�+� �T�0�D�0�%�0� ���T� �������!6� �T��D��"7r'c�� tj}t||d�ttj|d�y#t$rY�'wxYw)Nr��)r�chflagsr�rZ�chmod)rVr�s r� _resetpermsr�sB��0��+�+�� �g�t�Q�/��#�)�)�T�5�1�� � � � �s�;� A�Ac�6� tjt�Sr))r�fsdecoder*r>r'rr r #s��A� �<�<�� !�!r'c�6� tjt�Sr))rr+r*r>r'rr r 's��@� �<�<�� !�!r'c��� t�?tj� t� t�atj �tStS#tj �wxYwr))r rzr{rwr|r>r'r� _gettempdirr�-sM��0������� !���.�0�� � � � � �N�7�N�� � � � �r~c�>� tjt��Sr))rr�r�r>r'rr r 9s��*� �<�<� � � &�&r'c�>� tjt��Sr))rr+r�r>r'rrr=s��,� �<�<� � � &�&r'c�d� t|||�\}}}}|rt}nt}t|||||�Sr))r0�_text_openflagsrgr�)r-r,r.�textr/r�s rrrAs@���8(8����'L�$�F�F�C�� ����� �#�v�v�u�k� B�Br'c�� t|||�\}}}}t�}|turttj |�}t t�D]�}t|�}tjj|||z|z�}tjd|� t j|d�tjj)|�cStt*j,d��#t$rY��t$r[tj dk(rFtjj#|�r't j$|tj&�rY�� �wxYw)Nztempfile.mkdtempr�rQz(No usable temporary directory name found)r0r}r r�rr+rdr rerVrEr�r��mkdirrkrlrTrmrnrorcrqr�)r-r,r.r/r�rtrTr�s rrrhs�� �(8����'L�$�F�F�C�� � "�E��e���C�L�L�%�(���W�~���E�{���x�x�}�}�S�&�4�-�&�"8�9�� � � �%�t�,� � �I�I�d�E� "��x�x����%�%�!�$ �&�-�-�D� F�F��� � �� ����D� �S�X�X�^�^�C�%8�� � �3����)��� �s�C,�, E�7AE�ErBc� � |� t�}t�}tt�D]B}t |�}t j j|||z|z�}t|�r�@|cSttjd��)Nz"No usable temporary filename found) r r}rdr rerrVrErrkrqr�)r-r,r.r�rtrTr�s rrr�sw�� �" �{��l�� � "�E��W�~���E�{���x�x�}�}�S�&�4�-�&�"8�9���t�}��K� � �&�-�-�>� @�@r'c�d�eZdZ dZdZdd�Zejdk(ejfd�Z d�Z d�Z y) �_TemporaryFileCloserFc�<�||_||_||_||_yr))r�rT�delete�delete_on_close�r:r�rTr�r�s r�__init__z_TemporaryFileCloser.__init__�s���� ��� ��� �.��r'rQc��|jsed|_ |js!d|_|jj�|jr#|r |j s ||j �yyyy#t$rYywxYw#|jr2|r |j s# ||j �w#t$rYwwxYwwwxYw�NT)�cleanup_called� close_calledr�rir�r�rTrp)r:�windowsrjs r�cleanupz_TemporaryFileCloser.cleanup�s����"�"�"&�D� � ��(�(�(,�D�%��I�I�O�O�%��;�;��D�4H�4H���t�y�y�)�5I�;�#��-������;�;��D�4H�4H���t�y�y�)��,�����5I�;�sA�-B�A3�3 A?�>A?�C�B1�0C�1 B=�:C�<B=�=Cc��|jsMd|_ |jj�|jr|jr|j �yyyy#|jr|jr|j �wwwxYwr�)r�r�rir�r�r�r?s rriz_TemporaryFileCloser.close�sm��� � � $�D� � #�� � ���!��;�;�4�#7�#7��L�L�N�$8�;� !�� �;�;�4�#7�#7��L�L�N�$8�;�s �A�,Bc�$�|j�yr))r�r?s r�__del__z_TemporaryFileCloser.__del__�s �� � � �r'N�TT) rIrJrKr�r�r�rrTrjr�rir�r>r'rr�r��s;����N��L�/� #�x�x�4�/����� #�r'r�c�4�eZdZ dd�Zd�Zd�Zd�Zd�Zd�Zy) �_TemporaryFileWrapperc�F�||_||_t||||�|_yr))r�rTr��_closerr�s rr�z_TemporaryFileWrapper.__init__�s%���� ��� �+�D�$��,;�=�� r'c����|jd}t||�}t|d�r2|�tj���fd��}|j |_|}t |t�s t|||�|S)Nr��__call__c����|i|��Sr)r>)r#�kwargsr�s �r� func_wrapperz7_TemporaryFileWrapper.__getattr__..func_wrapper�s����T�,�V�,�,r') �__dict__r7�hasattr� _functools�wrapsr�r�int�setattr)r:rTr��ar�r�s @r� __getattr__z!_TemporaryFileWrapper.__getattr__�sy����}�}�V�$�� �D�$� �� �1�j� !��D� � � �d� #� -�$� -�$(�<�<�L� ��A��!�S�!� �D�$�� "��r'c�:�|jj�|Sr))r�� __enter__r?s rr�z_TemporaryFileWrapper.__enter__�s�� � � ����� r'c�t�|jj|||�}|jj�|Sr))r��__exit__r�r�)r:�exc�value�tb�results rr�z_TemporaryFileWrapper.__exit__s/�����#�#�C���3�� � � ����� r'c�:� |jj�yr))r�rir?s rriz_TemporaryFileWrapper.close s�� � � � ���r'c#�6K�|jD]}|���y�wr))r�)r:�lines rr@z_TemporaryFileWrapper.__iter__s���� �I�I�D��J��s�Nr�) rIrJrKr�r�r�r�rir@r>r'rr�r��s%���=� �*� � �r'r�T)�errorsr�c � ���� ��� t����\����t� tjdk(r|r| r� tjz� d|vrt j |�}d��� ����fd�} t j�|||||| ��} t| d| �} t| d| �} �| _t| �|| �S#| j��xYw#��,tjdk(r|r| stj���xYw)NrQ�bc�,��t������\}�|Sr))r�)r#rvr.r�rTr/r,r-s ������r�openerz"NamedTemporaryFile..openerAs���!�#�v�v�u�k�J���D�� r'�� buffering�newline�encodingr�r��buffer�raw) r0rgrrT� O_TEMPORARY�_io� text_encodingrfr7r�rirj)�moder�r�r�r-r,r.r�r�r�r�r�r�r�rTr/s ``` @@@rrrs����.(8����'L�$�F�F�C�� �E� �x�x�4��F�� ���� �� �$���$�$�X�.�� �D�����x�x��T�Y� '�(�6�%�'�� ��$��$�/�C��#�u�c�*�C��C�H�(��t�V�_�M� M�� � �J�J�L� ��� � � �H�H�� ��O� �J�J�t� � �s�0C� .B<�<C�C�1D�posix�cygwin� O_TMPFILE�r�c ������ � � � d|vrtj|�}t����\���� t� trId� �� � fd�} tj �||||||��} t | d| �} t | d| �} � | _| Sd� �� � � ��fd�}tj �||||||��} t | d| �} t | d| �} � | _| S#t$rdaY�Xt$rY�bwxYw)Nr�c����tjztjz}tj�|d���S)Nrb)rr��O_CREATrf)r#�flags2r.rvr�s ���rr�zTemporaryFile..opener|s3����#�-�-�/�C�K�K�<�?���X�X�c�6�5�1��� r'r�r�r�Fc���t������\�} tj|��S#t$r}tj���d}~wwxYwr))r�rrj� BaseExceptionri) r#rT�er.rvr�r/r,r-s ������rr�zTemporaryFile..opener�sQ���%�c�6�6�5�+�N�H�B�� �� � �4� ��I��!� �� � �"� ��� �s�,� A�A � A) r�r�r0rg�_O_TMPFILE_WORKSrfr7rT�IsADirectoryErrorr)r�r�r�r�r-r,r.r�r�r�r�rvr�r/s ``` @@@rrrbs��� � �d�?��(�(��2�H�+;�F�F�C�+P�(����[��� ��B� �  ��x�x��T�Y�(/�(�'-�f�>���d�H�d�3���c�5�#�.������ �&�� � ��x�x��T�Y� '�(�6�%�'���d�H�d�+���c�5�#�&������ ��E%� )� $)� �� �� �s� >C� C+� C+�*C+c�B�eZdZ dZ d$dd�d�Zeej�Zd�Z d�Z d�Z d�Z d �Z d �Zd �Zed ��Zed ��Zed��Zd�Zd�Zd�Zed��Zed��Zed��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d%d�Z$d �Z%d!�Z&d"�Z'd#�Z(y)&rFNr�c  ��d|vrtj�|_nEtj|�}tjtj�|| |��|_||_d|_|||||||| d�|_y)Nr�)r�r�r�F)r�r�r-r,r�r�r.r�)r��BytesIO�_filer�� TextIOWrapper� _max_size�_rolled�_TemporaryFileArgs) r:�max_sizer�r�r�r�r-r,r.r�s rr�zSpooledTemporaryFile.__init__�sy�� �$�;�����D�J��(�(��2�H��*�*�3�;�;�=�%-�f�$+�-�D�J�"����� �+/�i�-3�v�/7�G�*-��#A��r'c��|jry|j}|r%|j�|kDr|j�yyyr))r�r��tell�rollover)r:r�r�s r�_checkzSpooledTemporaryFile._check�s4�� �<�<���>�>�� �� � � �h�.� �M�M�O�/�8r'c��|jry|j}tdi|j��x}|_|`|j �}t |d�r8|j j|j�j��n|j|j��|j|d�d|_y)Nr�rTr>) r�r�rr�r�r�r�rh�detach�getvalue�seek)r:r��newfile�poss rr�zSpooledTemporaryFile.rollover�s��� �<�<���z�z��,�G�t�/F�/F�G�G��$�*� � #��i�i�k�� �7�H� %� �N�N� � �����!7�!7�!9� :� �M�M�$�-�-�/� *�� � �S�!���� r'c�H�|jjr td��|S)Nz%Cannot enter context with closed file)r��closed� ValueErrorr?s rr�zSpooledTemporaryFile.__enter__�s �� �:�:� � ��D�E� E�� r'c�8�|jj�yr)�r�ri�r:r�r�r�s rr�zSpooledTemporaryFile.__exit__���� � � ���r'c�6�|jj�Sr))r�r@r?s rr@zSpooledTemporaryFile.__iter__�����z�z�"�"�$�$r'c��|js=tjdj|�td|��|j �yy)NzUnclosed file {!r}�)� stacklevel�source)r�� _warnings�warn�format�ResourceWarningrir?s rr�zSpooledTemporaryFile.__del__�s<���{�{� �N�N�$�+�+�D�1����  � �J�J�L�r'c�8�|jj�yr)rr?s rrizSpooledTemporaryFile.close�rr'c�.�|jjSr))r�r�r?s rr�zSpooledTemporaryFile.closed�����z�z� � � r'c�.�|jjSr))r�r�r?s rr�zSpooledTemporaryFile.encoding�����z�z�"�"�"r'c�.�|jjSr))r�r�r?s rr�zSpooledTemporaryFile.errorsrr'c�V�|j�|jj�Sr))r�r��filenor?s rrzSpooledTemporaryFile.filenos�� � � ���z�z� � �"�"r'c�8�|jj�yr))r��flushr?s rrzSpooledTemporaryFile.flush rr'c�6�|jj�Sr))r��isattyr?s rrzSpooledTemporaryFile.isatty����z�z� � �"�"r'c�l� |jjS#t$r|jdcYSwxYw)Nr�)r�r�rZr�r?s rr�zSpooledTemporaryFile.modes5�� 3��:�:�?�?� "��� 3��*�*�6�2� 2� 3�s ��3�3c�N� |jjS#t$rYywxYwr))r�rTrZr?s rrTzSpooledTemporaryFile.names'�� ��:�:�?�?� "��� �� �rc�.�|jjSr))r��newlinesr?s rrzSpooledTemporaryFile.newlinesrr'c�6�|jj�Sr))r��readabler?s rr!zSpooledTemporaryFile.readable#rr'c�4�|jj|�Sr))r��read�r:r#s rr#zSpooledTemporaryFile.read&����t�z�z����%�%r'c�4�|jj|�Sr))r��read1r$s rr'zSpooledTemporaryFile.read1)s���t�z�z����&�&r'c�8�|jj|�Sr))r��readinto�r:r�s rr)zSpooledTemporaryFile.readinto,s���z�z�"�"�1�%�%r'c�8�|jj|�Sr))r�� readinto1r*s rr,zSpooledTemporaryFile.readinto1/s���z�z�#�#�A�&�&r'c�4�|jj|�Sr))r��readliner$s rr.zSpooledTemporaryFile.readline2s��"�t�z�z�"�"�D�)�)r'c�4�|jj|�Sr))r�� readlinesr$s rr0zSpooledTemporaryFile.readlines5s��#�t�z�z�#�#�T�*�*r'c�6�|jj�Sr))r��seekabler?s rr2zSpooledTemporaryFile.seekable8rr'c�4�|jj|�Sr))r�r�r$s rr�zSpooledTemporaryFile.seek;r%r'c�6�|jj�Sr))r�r�r?s rr�zSpooledTemporaryFile.tell>s���z�z��� � r'c��|�|jj�S||jkDr|j�|jj|�Sr))r��truncater�r�)r:�sizes rr6zSpooledTemporaryFile.truncateAsD�� �<��:�:�&�&�(� (��d�n�n�$�� � ���:�:�&�&�t�,� ,r'c�6�|jj�Sr))r��writabler?s rr9zSpooledTemporaryFile.writableIrr'c�b�|j}|j|�}|j|�|Sr))r�rhr�)r:�sr��rvs rrhzSpooledTemporaryFile.writeLs)���z�z�� �Z�Z��]�� � � �D��� r'c��|jdk(s |jr|jj|�St |�}|D]<}|j |�|js�!|jj|�cSy)Nr)r�r�r�� writelines�iterrh)r:�iterable�itr�s rr>zSpooledTemporaryFile.writelinesRsd�� �>�>�Q� �$�,�,��:�:�(�(��2� 2� �(�^���D� �J�J�t� ��|�|��z�z�,�,�R�0�0�r'c�6�|jj�Sr))r�r�r?s rr�zSpooledTemporaryFile.detach\rr')r�w+b�����NNNNNr)))rIrJrKr�r�� classmethod�_types� GenericAlias�__class_getitem__r�r�r�r�r@r�rirLr�r�r�rrrr�rTrr!r#r'r)r,r.r0r2r�r�r6r9rhr>r�r>r'rrr�s.����G�9;�(,�/3�A�?C�A�"$�F�$7�$7�8��� �*� �%����!��!��#��#��!��!�#��#��3��3� ���� �#��#�%�&�'�&�'�*�+�%�&�!�-�%�� 1�#r'rc��eZdZ d dd�d�Zed d��Zed d��Zd�Zd�Zd �Z d �Z ee j�Z y)rNT)r�c���t|||�|_||_||_t j ||j |jdj|�|j|j��|_y)NzImplicitly cleaning up {!r})� warn_message� ignore_errorsr�) rrT�_ignore_cleanup_errors�_delete�_weakref�finalize�_cleanupr � _finalizer)r:r-r,r.�ignore_cleanup_errorsr�s rr�zTemporaryDirectory.__init__ts`���F�F�C�0�� �&;��#��� �"�+�+� �$�-�-����6�=�=�d�C��5�5�d�l�l�L��r'c�J���������fd�}tj�|��y)Nc�2��t|t�r]�r |�k(r�ry� |�k7r(ttjj |��t|� tj |�yyyt|t�ry�s�y#t$r�j|���Y�4t$r]tjj|�rtjj|�r�rYy��j|�|�k(��Y��wxYw#t$rYywxYw)N�rL)rL�repeated) rrlr�rrVr^rjr��_rmtreerm� isjunctionrp)r�rVr��clsrLrTrWs ����r�onexcz)TemporaryDirectory._rmtree..onexc�s����#��/���� �$�����t�|�#�C�H�H�$4�$4�T�$:�;���%�=�� � �4�(�=�G�"�C�!2�3��$��%��+-�G�� � �D� � �F�*� =� #�x�x�~�~�d�3�s�x�x�7J�7J�4�7P�,� &�!�� � �D� �.2�d�l�$�=� =��)����sH�8D �B�D� D �"AD�*D �,D�D �D�D � D�D)r[)�_shutil�rmtree)rZrTrLrWr[s```` rrXzTemporaryDirectory._rmtree~s���$ �L ���t�5�)r'c�d�|r.|j||��tj|t�yy�NrV)rXr r r)rZrTrKrLr�s rrQzTemporaryDirectory._cleanup�s(�� � �K�K��M�K� :� �N�N�<�� 9� r'c�b�dj|jj|j�S)Nz <{} {!r}>)r � __class__rIrTr?s r�__repr__zTemporaryDirectory.__repr__�s#���!�!�$�.�.�"9�"9�4�9�9�E�Er'c��|jSr))rTr?s rr�zTemporaryDirectory.__enter__�s ���y�y�r'c�>�|jr|j�yyr))rNr�rs rr�zTemporaryDirectory.__exit__�s�� �<�<� �L�L�N� r'c���|jj�s)tjj |j �r(|j |j |j��yyr_)rRr�rrV�existsrTrXrMr?s rr�zTemporaryDirectory.cleanup�sE�� �?�?� !� !� #�s�x�x���t�y�y�'A� �L�L����$�2M�2M�L� N�(Br'�NNNF)FF)FT)rIrJrKr�rErXrQrbr�r�r�rFrGrHr>r'rrr`sp���&6:�',�L�8<�L��'*��'*�R�:��:� F���O�$�F�$7�$7�8�r'rrg)NNN)rCrDNNNNNT)rCrDNNNNN)B�__all__� functoolsr��warningsr �ior��osr�shutilr\�errnorq�randomrr8�sysr��typesrF�weakrefrO�_thread� allocate_lock�_allocate_lock�O_RDWRr��O_EXCLr�r�rrgrr r*rzrr&r0r2r_rwryr}r�r�r�r r r r�r rrrrr�r�rrT�platformrr��IOBaserrr>r'r�rzs����2 ��������$������&�&���*�*�s�{�{�*�S�Z�Z�7�� �3� ���s�~�~�%�O� �� �3� ���c�l�l�"�N� �3� ���k�k�G��G� ��� � ���:,�$?�?�0�6*%�X�� �A�:�2�"�"� �� �'�'�$C�N&F�P�X�4�@�@(�(�V<�<�|;?�9=�(,�<�8<�'+�<�|�8�8�w��$�-�-�8�3�'�M� �s�K�0��9=�8<��I�*.�I�Vp#�3�:�:�p#�f\9�\9r'