� ���g%b� �:�dZddlZddlZddlZddlZddlmZddlmZddl m Z m Z m Z ddl ZddlmZddlmZddlmZdd lmZmZdd lmZmZmZmZdd lmZdd lm Z!e rdd l"m#Z#ddl$m%Z%m&Z&ej'e(��Z)dZ*ej+dedd��d�ej,��Z-ej+d��Z.Gd�de/��Z0Gd�de/��Z1ed���Gd�d����Z2 d4de3de4dde e3d fd!e e3d"e e3d#e2f d$�Z5Gd%�d&��Z6Gd'�d(e6��Z7Gd)�d*e6��Z8ed���Gd+�d,����Z9ed���Gd-�d.����Z:d/�Z;d0�Z<d1�Z=d2�Z>Gd3�d ��Z?dS)5zArrow ArrowReader.�N)� dataclass)�partial)� TYPE_CHECKING�Optional�Union)� thread_map�)�DownloadConfig)� _split_re�filenames_for_dataset_split)� InMemoryTable�MemoryMappedTable�Table� concat_tables)�logging)�tqdm)� DatasetInfo)�Split� SplitInfoz=https://storage.googleapis.com/huggingface-nlp/cache/datasetsz ^ (?P<split>�����z�) (\[ ((?P<from>-?\d+) (?P<from_pct>%)?)? : ((?P<to>-?\d+) (?P<to_pct>%)?)? \])?(\((?P<rounding>[^\)]*)\))? $ z\s*\+\s*c��eZdZdZdS)�DatasetNotOnHfGcsErrorz?When you can't get the dataset from the Hf google cloud storageN��__name__� __module__� __qualname__�__doc__���e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/datasets/arrow_reader.pyrrAs������I�I��Drrc��eZdZdZdS)�MissingFilesOnHfGcsErrorz9When some files are missing on the Hf oogle cloud storageNrrrr r"r"Gs������C�C��Drr"T)�frozenc�4�eZdZUdZeed<eeed<dS)�FileInstructionsa}The file instructions associated with a split ReadInstruction. Attributes: num_examples: `int`, The total number of examples file_instructions: List[dict(filename, skip, take)], the files information. The filenames contains the relative path, not absolute. skip/take indicates which example read in the file: `ds.slice(skip, take)` � num_examples�file_instructionsN)rrrr�int�__annotations__�list�dictrrr r%r%Ms:��������������D�z�!�!�!�!�!rr%�name� split_infosr� instruction�ReadInstruction�filetype_suffix� prefix_path�returnc������t�t��s$tdt���j������st d���d�|D��}d�|D�������fd�|D��}t|t ��st �|��}|�|��}g}d} |D]�} || j } || j } �| j } | j �dn| j }| j �| n| j }| �0| D],}||z }|dkr�| |z } |� |||d����-�{d}d}t| | ��D]h\}}||z }||krS||krM||kr||z nd}||kr||z |z nd }|dkr�:|� |||d���| |d kr||z n|z } ||z }�i��t| |� ��S) a�Returns instructions of the split dict. Args: name (`str`): Name of the dataset. split_infos (`list` of `[SplitInfo]`): Dataset splits information. instruction ([`ReadInstruction`] or `str`): Reading instruction for a dataset. filetype_suffix (`str`, *optional*): Suffix of dataset files, e.g. 'arrow' or 'parquet'. prefix_path (`str`, *optional*): Prefix of dataset files, e.g. directory name. Returns: [`FileInstructions`] zExpected str 'name', but got: zExpected non-empty str 'name'c�(�i|]}|j|j��Sr)r,r&��.0�infos r � <dictcomp>z*make_file_instructions.<locals>.<dictcomp>ss��E�E�E��� �4�,�E�E�Erc�(�i|]}|j|j��Sr)r,� shard_lengthsr5s r r8z*make_file_instructions.<locals>.<dictcomp>ts��P�P�P�D�$�)�T�%7�P�P�Prc �d��i|],}|jt��|j��|j�����-S))�path� dataset_name�splitr0r:)r,r )r6r7r0r,�name2shard_lengthsr1s ����r r8z*make_file_instructions.<locals>.<dictcomp>usW��� � � � � � �.����)�+�,�T�Y�7�  � � � � � rrN)�filename�skip�taker)r&r')� isinstance�str� TypeError�typer� ValueErrorr/� from_spec� to_absolute� splitname�from_�to�append�zipr%)r,r-r.r0r1�name2len�name2filenames�absolute_instructionsr'r&� abs_instr� split_length� filenamesr:rKrLr@rB� index_start� index_end� shard_lengthrAr?s` `` @r �make_file_instructionsrX\s�������& �d�C� � �:��N��d���9L�N�N�O�O�O� �:��8�9�9�9�E�E��E�E�E�H�P�P�K�P�P�P�� � � � � � � � � � � �N� �k�?� 3� 3�=�%�/�/� �<�<� �'�3�3�H�=�=�����L�*�,�,� �� � 3�4� �"�9�#6�7� �*�9�+>�?� ��_�,���)�/��&�\�1�\�\�y�|�� � �%� ^� ^���E�z���1�9�9����$� �!�(�(�h��W[�)\�)\�]�]�]�]�  ^��K��I�*-�i��*G�*G� ,� ,�&��,��\�)� ��9�$�$��k�)9�)9�27�+�2E�2E�5�;�.�.�1�D�68�9�n�n�2� �+�d�2�2�"�D��q�y�y� �%�,�,�(�D�Z^�-_�-_�`�`�`� �4�2�:�:�L�4�$7�$7�4�O�L��|�+� � � ,� �!�+� � � �rc��eZdZdZdededfd�Zddefd�Zddefd �Z d �Z dd �Z dd e e dedfd�Zd S)� BaseReaderz@ Build a Dataset object out of Instruction instance(s). r<r7rc�0�||_||_d|_dS)z�Initializes ArrowReader. Args: path (str): path where tfrecords are stored. info (DatasetInfo): info about the dataset. N)�_path�_info�_filetype_suffix)�selfr<r7s r �__init__zBaseReader.__init__�s ���� �.2�� �/3����rFr2c��t�)�=Returns a Dataset instance from given (filename, skip, take).)�NotImplementedError)r_�filename_skip_take� in_memorys r �_get_table_from_filenamez#BaseReader._get_table_from_filename�s��!�!rc ��t|��dkstd�|D����std���tj|��}|D]0}t j�|j|d��|d<�1tt|j |���|tdt|��dkpd� ��}d �|D��}|s"|j � |j j�td ���|p7tjgt#j|j jj��� ��g}t|��d krt)|��n|d}|S)a�Returns Dataset for given file instructions. Args: files: List[dict(filename, skip, take)], the files information. The filenames contain the absolute path, not relative. skip/take indicates which example read in the file: `ds.slice(skip, take)` in_memory (bool, default False): Whether to copy the data in-memory. rc3�@K�|]}t|t��V��dS�N)rCr+)r6�fs r � <genexpr>z)BaseReader._read_files.<locals>.<genexpr>�s,����%I�%I�a�j��D�&9�&9�%I�%I�%I�%I�%I�%Irz&please provide valid file informationsr@�rezLoading dataset shards�N)� tqdm_class�desc�disablec�8�g|]}t|��dk�|��S)r)�len)r6�ts r � <listcomp>z*BaseReader._read_files.<locals>.<listcomp>�s#��8�8�8�1�S��V�V�a�Z�Z�Q�Z�Z�ZrzqTried to read an empty table. Please specify at least info.features to create an empty table with the right type.)�schemar )rr�allrG�copy�deepcopy�osr<�joinr\rrrf�hf_tqdmr]�featuresr � from_batches�parurFr)r_�filesrerj� pa_tables�pa_tables r � _read_fileszBaseReader._read_files�sf�� �u�:�:��?�?�#�%I�%I�5�%I�%I�%I�"I�"I�?��E�F�F� F�� �e�$�$��� D� D�A��G�L�L���Q�z�]�C�C�A�j�M�M�� �D�1�Y� G� G� G� ��)���J�J�"�$�,��  � � � �9�8� �8�8�8� �� �d�j�0�D�J�4G�4O��D��� ��m�-�"<�R�� �RV�R\�Re�Rj�Hk�Hk�"l�"l�"l�!m� �/2�9�~�~��/B�/B�=��+�+�+� �RS� ���rc�P�t||||j|j���}|j}|S)z?Return list of dict {'filename': str, 'skip': int, 'take': int})r0r1)rXr^r\r')r_r,r.r-r'rs r �get_file_instructionsz BaseReader.get_file_instructions�s8��2� �+�{�D�<Q�_c�_i� � � ��"�3��� rc��|�|||��}|sd|�d�}t|���|�|||���S)a Returns Dataset instance(s). Args: name (str): name of the dataset. instructions (ReadInstruction): instructions to read. Instruction can be string and will then be passed to the Instruction constructor as it. split_infos (list of SplitInfo proto): the available splits for dataset. in_memory (bool, default False): Whether to copy the data in-memory. Returns: kwargs to build a single Dataset instance. z Instruction "z" corresponds to no data!)r�original_instructionsre)r�rG� read_files)r_r,� instructionsr-rer�msgs r �readzBaseReader.read�sX��*�*�*�4��{�K�K��� "�I�,�I�I�I�C��S�/�/� !����U�,�Zc��d�d�drNrr�)Nr/rc��|�||���}|�ddlm}|t|����}nd}||j|d�}|S)aJReturns single Dataset instance for the set of file instructions. Args: files: List[dict(filename, skip, take)], the files information. The filenames contains the relative path, not absolute. skip/take indicates which example read in the file: `ds.skip().take()` original_instructions: store the original instructions used to build the dataset split in the dataset. in_memory (bool, default False): Whether to copy the data in-memory. Returns: kwargs to build a Dataset instance. rlNr )r)� arrow_tabler7r>)r��splitsrrDr])r_rr�rer�rr>�dataset_kwargss r r�zBaseReader.read_files�sk��&�#�#�E�Y�#�?�?�� � ,� %� %� %� %� %� %��E�#�3�4�4�5�5�E�E��E�)1�4�:�PU�V�V���r�F)NF)rrrrrDrr`rrfr�r�r�r*r+rr�rrr rZrZ�s��������� 4�S� 4���(?� 4� 4� 4� 4�"�"�u�"�"�"�"���U�����@���� e�e�e�e�<JN�� ���D�z�� %�%E�F������rrZc�d��eZdZdZdededf�fd� Zd defd�Ze d defd ���Z �xZ S) � ArrowReaderz� Build a Dataset object out of Instruction instance(s). This Reader uses either memory mapping or file descriptors (in-memory) on arrow files. r<r7rc�Z��t���||��d|_dS)z�Initializes ArrowReader. Args: path (str): path where Arrow files are stored. info (DatasetInfo): info about the dataset. �arrowN��superr`r^�r_r<r7� __class__s �r r`zArrowReader.__init__#s-��� ������t�$�$�$� '����rFr2c��|dd|vr|dndd|vr|dnd}}}t�||���}|dkrt|��|z }|�1|�/|dkr|t|��ks|�||��}|S)rbr@rANrBrlrr)r�� read_tablerr�slice)r_rdrer@rArB�tables r rfz$ArrowReader._get_table_from_filename-s��� �z� *�*0�4F�*F�*F� �v� &� &�D�*0�4F�*F�*F� �v� &� &�D��$�� �&�&�x�9�&�E�E�� �2�:�:��u�:�:��$�D� � �� 0�$�!�)�)��PS�TY�PZ�PZ�HZ�HZ��K�K��d�+�+�E�� rc�L�|rtnt}|�|��S)z� Read table from file. Args: filename (str): File name of the table. in_memory (bool, default=False): Whether to copy the data in-memory. Returns: pyarrow.Table )r r� from_file)r@re� table_clss r r�zArrowReader.read_table<s'��&/�E�M�M�4E� ��"�"�8�,�,�,rr�) rrrrrDrr`rrf� staticmethodr�� __classcell__�r�s@r r�r�s���������� (�S�(���(?�(�(�(�(�(�(� � �u� � � � �� -� -�� -� -� -��\� -� -� -� -� -rr�c�>��eZdZdZdededf�fd� Zd�Z�xZS)� ParquetReaderzv Build a Dataset object out of Instruction instance(s). This Reader uses memory mapping on parquet files. r<r7rc�Z��t���||��d|_dS)z�Initializes ParquetReader. Args: path (str): path where tfrecords are stored. info (DatasetInfo): info about the dataset. �parquetNr�r�s �r r`zParquetReader.__init__Rs-��� ������t�$�$�$� )����rc ���|dd|vr|dndd|vr|dnd}}}tj|d���}|�1|�/|dkr|t|��ks|�||��}|S)rbr@rANrBT)� memory_mapr)�pqr�rrr�)r_rd�kwargsr@rArBr�s r rfz&ParquetReader._get_table_from_filename\s��� �z� *�*0�4F�*F�*F� �v� &� &�D�*0�4F�*F�*F� �v� &� &�D��$�� �=��d�;�;�;�� � �� 0�$�!�)�)��PS�T\�P]�P]�H]�H]��~�~�d�D�1�1�H��r) rrrrrDrr`rfr�r�s@r r�r�Lsi��������� *�S�*���(?�*�*�*�*�*�*� � � � � � � rr�c�2�eZdZUdZeed<eed<eed<dS)�_AbsoluteInstructionz?A machine friendly slice: defined absolute positive boundaries.rJrKrLN)rrrrrDr)r(rrr r�r�ks1�������I�I��N�N�N� �J�J�J� �G�G�G�G�Grr�c��eZdZUdZeed<dZeeed<dZ eeed<dZ eeed<dZ eeed<d�Z dS) �_RelativeInstructionzHRepresents a single parsed slicing instruction, can use % and negatives.rJNrKrL�unit�roundingc���|j�|jdvrtd���|j�|jdvrtd���|jdkr|j�td���|jdkr.|j�'t |j��dkrtd���|jdkr.|j�'t |j��dkrtd���|j� |jdkrd n|j|jd <dS) N)�%�abszunit must be either % or abs)�closest�pct1_dropremainderz5rounding must be either closest or pct1_dropremainderr�zAIt is forbidden to specify rounding if not using percent slicing.�dz2Percent slice boundaries must be > -100 and < 100.r�r�)r�rGr�rKr�rL�__dict__�r_s r � __post_init__z"_RelativeInstruction.__post_init__~s�� �9� �T�Y�l�%B�%B��;�<�<� <� �=� $���>_�)_�)_��T�U�U� U� �9�� � �� � 9��`�a�a� a� �9�� � �� � 6�3�t�z�?�?�S�;P�;P��Q�R�R� R� �9�� � ��� 3��D�G� � �s�8J�8J��Q�R�R� R�15��1F�4�9�X[�K[�K[�I�I�ae�an�� �j�!�!�!r) rrrrrDr)rKrr(rLr�r�r�rrr r�r�ts��������R�R��N�N�N��E�8�C�=�����B��� �����D�(�3�-����"�H�h�s�m�"�"�"� o� o� o� o� orr�c � �t�|��}|std|�����|�d��s|�d��rdnd}t |�d��|�d��|�d��r"t |�d����nd |�d ��r"t |�d ����nd |� ��S) z)Returns ReadInstruction for given string.z!Unrecognized instruction format: �from_pct�to_pctr�r�r>r��fromNrL)� split_namer�rKrLr�)� _SUB_SPEC_RE�matchrG�groupr/r()�spec�resr�s r �_str_to_read_instructionr��s��� � � �T� "� "�C� �E��C�T�C�C�D�D�D��)�)�J�'�'� I�3�9�9�X�+>�+>� I�3�3�E�D� ��9�9�W�%�%����:�&�&�(+� � �&�(9�(9�C�c�#�)�)�F�#�#�$�$�$�t�#&�9�9�T�?�?� <�3�s�y�y���� � � �� �  � � �rc�d�|dkrd}t|���|tj|dz ��zS)Nr�zUsing "pct1_dropremainder" rounding on a split with less than 100 elements is forbidden: it always results in an empty dataset.�Y@)rG�math�trunc)�boundaryr&r�s r �_pct_to_abs_pct1r��s@���c��� L� ���o�o�� �d�j���!5�6�6� 6�6rc�F�tt||zdz ����S)Nr�)r(�round)r�r&s r �_pct_to_abs_closestr��s"�� �u�X� �,�u�4�5�5� 6� 6�6rc���|jdkrtnt}|j}||vr#t d|�dt |���d����||}|j}|j}|jdkr!|�dn |||��}|�|n |||��}n |�dn|}|�|n|}|dkrt||zd��}|dkrt||zd��}t||��}t||��}t|||��S)z�Returns _AbsoluteInstruction instance for given RelativeInstruction. Args: rel_instr: RelativeInstruction instance. name2len: dict {split_name: num_examples}. r�zUnknown split "z". Should be one of �.r�Nr) r�r�r�rJrGr*rKrLr��max�minr�)� rel_instrrO� pct_to_absr>r&rKrLs r �_rel_to_abs_instrr��s4��)2�(:�i�(G�(G�$�$�M]�J� � �E� �H����W�5�W�W�d�8�n�n�W�W�W�X�X�X��E�?�L� �O�E� ��B��~�����]��� � �5�,�(G�(G���Z�\�\�Z�Z��L�-I�-I����]������Z�\�\�R�� �q�y�y��L�5�(�!�,�,�� �A�v�v� ���"�A� &� &�� ��|� $� $�E� �R�� � �B� ��u�b� 1� 1�1rc�j�eZdZdZd�Zed���Zd d�Zed���Zd�Z d�Z d �Z d �Z d �Z dS) r/a�Reading instruction for a dataset. Examples:: # The following lines are equivalent: ds = datasets.load_dataset('mnist', split='test[:33%]') ds = datasets.load_dataset('mnist', split=datasets.ReadInstruction.from_spec('test[:33%]')) ds = datasets.load_dataset('mnist', split=datasets.ReadInstruction('test', to=33, unit='%')) ds = datasets.load_dataset('mnist', split=datasets.ReadInstruction( 'test', from_=0, to=33, unit='%')) # The following lines are equivalent: ds = datasets.load_dataset('mnist', split='test[:33%]+train[1:-1]') ds = datasets.load_dataset('mnist', split=datasets.ReadInstruction.from_spec( 'test[:33%]+train[1:-1]')) ds = datasets.load_dataset('mnist', split=( datasets.ReadInstruction('test', to=33, unit='%') + datasets.ReadInstruction('train', from_=1, to=-1, unit='abs'))) # The following lines are equivalent: ds = datasets.load_dataset('mnist', split='test[:33%](pct1_dropremainder)') ds = datasets.load_dataset('mnist', split=datasets.ReadInstruction.from_spec( 'test[:33%](pct1_dropremainder)')) ds = datasets.load_dataset('mnist', split=datasets.ReadInstruction( 'test', from_=0, to=33, unit='%', rounding="pct1_dropremainder")) # 10-fold validation: tests = datasets.load_dataset( 'mnist', [datasets.ReadInstruction('train', from_=k, to=k+10, unit='%') for k in range(0, 100, 10)]) trains = datasets.load_dataset( 'mnist', [datasets.ReadInstruction('train', to=k, unit='%') + datasets.ReadInstruction('train', from_=k+10, unit='%') for k in range(0, 100, 10)]) c��||_dSri��_relative_instructions)r_�relative_instructionss r �_initzReadInstruction._init�s��&;��#�#�#rc�Z�|�|��}|�|��|S)zCReturns ReadInstruction obj initialized with relative_instructions.)�__new__r�)�clsr��results r �,_read_instruction_from_relative_instructionsz<ReadInstruction._read_instruction_from_relative_instructions�s-�����S�!�!��� � �*�+�+�+�� rNc �T�|�t|||||��g��dS)aInitialize ReadInstruction. Args: split_name (str): name of the split to read. Eg: 'train'. rounding (str, optional): The rounding behaviour to use when percent slicing is used. Ignored when slicing with absolute indices. Possible values: - 'closest' (default): The specified percentages are rounded to the closest value. Use this if you want specified percents to be as much exact as possible. - 'pct1_dropremainder': the specified percentages are treated as multiple of 1%. Use this option if you want consistency. Eg: len(5%) == 5 * len(1%). Using this option, one might not be able to use the full set of examples, if the number of those is not a multiple of 100. from_ (int): to (int): alternative way of specifying slicing boundaries. If any of {from_, to, unit} argument is used, slicing cannot be specified as string. unit (str): optional, one of: '%': to set the slicing unit as percents of the split size. 'abs': to set the slicing unit as absolute numbers. N)r�r�)r_r�r�rKrLr�s r r`zReadInstruction.__init__�s0��6 � � �(��U�B��h�O�O�P�Q�Q�Q�Q�Qrc���t|��}t�|��}|std|�����t |d��}t d�|dd�D��|��S)aMCreates a `ReadInstruction` instance out of a string spec. Args: spec (`str`): Split(s) + optional slice(s) to read + optional rounding if percents are used as the slicing unit. A slice can be specified, using absolute numbers (`int`) or percentages (`int`). Examples: ``` test: test split. test + validation: test split + validation split. test[10:]: test split, minus its first 10 records. test[:10%]: first 10% records of test split. test[:20%](pct1_dropremainder): first 10% records, rounded with the pct1_dropremainder rounding. test[:-5%]+train[40%:60%]: first 95% of test + middle 20% of train. ``` Returns: ReadInstruction instance. z&No instructions could be built out of rc3�4K�|]}t|��V��dSri)r�)r6�subs r rkz,ReadInstruction.from_spec.<locals>.<genexpr>5s+����F�F�c�,�S�1�1�F�F�F�F�F�Frr N)rD�_ADDITION_SEP_REr>rGr��sum)r�r��subsr.s r rHzReadInstruction.from_specsz��0�4�y�y���%�%�d�+�+��� N��L�d�L�L�M�M� M�.�t�A�w�7�7� ��F�F�T�!�"�"�X�F�F�F� �T�T�Trc��g}|jD]�}|j}|j�|j�y|j}|j}|j}|j}|dkr|nd}|�t |��|znd}|�t |��|znd}d|�d|�d�}|dkr|� |dkrd|�d�nd} ||| zz }|�|����d �|��S) Nr���[�:�]r��(�)�+) r�rJrKrLr�r�rDrMrz) r_�rel_instr_specsr��rel_instr_specrKrLr�r�� slice_str� rounding_strs r �to_speczReadInstruction.to_spec7s�����4� 3� 3�I�&�0�N���*�i�l�.F�!����\�� �~��$�-��#�s�{�{�t�t���-2�->��E� � �T�)�)�B��')�~�S��W�W�t�^�^�2��-��-�-��-�-�-� �'+�s�{�{�x�7K�PX�\e�Pe�Pe�O��O�O�O�O�km���)�l�":�:�� � "� "�>� 2� 2� 2� 2��x�x��(�(�(rc�>�t|t��sd}t|���|j}|j}|djdkrA|djdkr0|jdj|djkrt d���|�||z��S)zEReturns a new ReadInstruction obj, result of appending other to self.zAReadInstruction can only be added to another ReadInstruction obj.rr�zPIt is forbidden to sum ReadInstruction instances with different rounding values.)rCr/rEr�r�r�rGr�)r_�otherr��self_ris� other_riss r �__add__zReadInstruction.__add__Ks����%��1�1� !�U�C��C�.�.� ��.���0� � �Q�K� �� %� %��!� �!�U�*�*��+�A�.�7�9�Q�<�;P�P�P��o�p�p� p��@�@��I�AU�V�V�Vrc�*�|���Sri)r�r�s r �__str__zReadInstruction.__str__Zs���|�|�~�~�rc��d|j�d�S)NzReadInstruction(r�r�r�s r �__repr__zReadInstruction.__repr__]s��@�$�"=�@�@�@�@rc�*���fd�|jD��S)aZTranslate instruction into a list of absolute instructions. Those absolute instructions are then to be added together. Args: name2len (`dict`): Associating split names to number of examples. Returns: list of _AbsoluteInstruction instances (corresponds to the + in spec). c�0��g|]}t|�����Sr)r�)r6r�rOs �r rtz/ReadInstruction.to_absolute.<locals>.<listcomp>ls$���d�d�d�9�!�)�X�6�6�d�d�drr�)r_rOs `r rIzReadInstruction.to_absolute`s#���e�d�d�d��Hc�d�d�d�dr)NNNN)rrrrr�� classmethodr�r`rHr�r�r�r�rIrrr r/r/�s�������$�$�L<�<�<�����[��R�R�R�R�:�U�U��[�U�<)�)�)�( W� W� W����A�A�A� e� e� e� e� er)NN)@rrwr�ry�re� dataclassesr� functoolsr�typingrrr�pyarrowr~�pyarrow.parquetr�r��tqdm.contrib.concurrentr�download.download_configr �namingr r r�r rrr�utilsrrr{r7rr�rr� get_loggerr�logger�HF_GCP_BASE_URL�compile�Xr�r��ConnectionErrorrr"r%rDr*rXrZr�r�r�r�r�r�r�r�r/rrr �<module>rsV�� �� � � � � � � � � � � � � � � � �!�!�!�!�!�!�������1�1�1�1�1�1�1�1�1�1�����������.�.�.�.�.�.�4�4�4�4�4�4�:�:�:�:�:�:�:�:�I�I�I�I�I�I�I�I�I�I�I�I�������"�"�"�"�"�"��)�!�!�!�!�!�!�(�(�(�(�(�(�(�(� �� �H� %� %��Q���r�z� � �a��d�O� � � ��D��� � �2�:�k�*�*�� � � � � �_� � � �  � � � � �� � � �  ��$���� "� "� "� "� "� "� "��� "�$&*�!%� H�H� �H��k�"�H��s�-�-�.�H��c�]� H� �#�� H� � H�H�H�H�Vs�s�s�s�s�s�s�s�l,-�,-�,-�,-�,-�*�,-�,-�,-�^�����J����> ��$���� � � � � � � ��� � ��$����o�o�o�o�o�o�o���o�0 � � �7�7�7�7�7�7�2�2�2�:de�de�de�de�de�de�de�de�de�der
Memory