§
    ­˜ºhâ$  ã                   ó"  — d dl Z d dlmZmZmZmZ d dlmZ d dlZd dlm	Z	 d dl
mZmZmZ eeef         Zeeeedf         f         Zdeee                  ded	efd
„Zdee	ee	df         f         d	efd„Zdededeg ef         d	efd„Zdedededed	eeef         f
d„Z	 d#dee	ee	df         f         dededededed	efd„Zdeded	dfd„Zdeded	dfd„Zdefd„Z ede¬ ¦  «        d$dededed	efd!„¦   «         Z	 	 	 d%dedededed	ef
d"„ZdS )&é    N)ÚAnyÚCallableÚOptionalÚUnion)Ú
deprecated)ÚTensor)Ú_broadcast_to_and_flattenÚtree_flattenÚtree_unflatten.Úflat_in_dimsÚ	flat_argsÚreturnc                 ó¨   ‡— d„ t          | |¦  «        D ¦   «         Š‰r.t          ˆfd„‰D ¦   «         ¦  «        rt          d‰› d�¦  «        ‚‰d         S )Nc                 óB   — g | ]\  }}|®|                      |¦  «        ‘ŒS ©N)Úsize)Ú.0Úin_dimÚargs      ú]/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/_vmap_internals.pyú
<listcomp>z0_validate_and_get_batch_size.<locals>.<listcomp>   s8   € ð ð ð áˆF�CØÐð 	�Š�ÑÔàÐÐó    c              3   ó0   •K  — | ]}|‰d          k    V — ŒdS )r   N© )r   r   Úbatch_sizess     €r   ú	<genexpr>z/_validate_and_get_batch_size.<locals>.<genexpr>   s,   øè è € ÐJÐJ°d˜4 ;¨q¤>Ò1ÐJÐJÐJÐJÐJÐJr   zTvmap: Expected all tensors to have the same size in the mapped dimension, got sizes z for the mapped dimensionr   )ÚzipÚanyÚ
ValueError)r   r   r   s     @r   Ú_validate_and_get_batch_sizer       s’   ø€ ðð å˜|¨YÑ7Ô7ðñ ô €Kð
 ð 
•sÐJÐJÐJÐJ¸kÐJÑJÔJÑJÔJð 
ÝðKØ$/ðKð Kð Kñ
ô 
ð 	
ð �qŒ>Ðr   Úbatched_outputsc                 óN   — t          | t          ¦  «        rt          | ¦  «        S dS )Né   )Ú
isinstanceÚtupleÚlen)r!   s    r   Ú_num_outputsr'   !   s'   € Ý�/¥5Ñ)Ô)ð $Ý�?Ñ#Ô#Ð#Øˆ1r   ÚvalueÚnum_elementsÚerror_message_lambdac                 ó�   — t          | t          ¦  «        s| f|z  S t          | ¦  «        |k    rt           |¦   «         ¦  «        ‚| S r   )r$   r%   r&   r   )r(   r)   r*   s      r   Ú	_as_tupler,   )   sQ   € õ
 �e�UÑ#Ô#ð 'Øˆx˜,Ñ&Ð&Ý
ˆ5�z„z�\Ò!Ð!ÝÐ-Ð-Ñ/Ô/Ñ0Ô0Ð0Ø€Lr   Úin_dimsÚargsÚ
vmap_levelÚfuncc                 óª  ‡— t          | t          ¦  «        sHt          | t          ¦  «        s3t          dt	          |¦  «        › d| › dt          | ¦  «        › d�¦  «        ‚t          |¦  «        dk    r t          dt	          |¦  «        › d�¦  «        ‚t          |¦  «        \  }}t          | |¦  «        }|€<t          dt	          |¦  «        › d| › dt          | ¦  «        d         › d	|› d�	¦  «        ‚t          ||¦  «        D �]\  }}t          |t          ¦  «        s(|�&t          dt	          |¦  «        › d| › d
|› d�¦  «        ‚t          |t          ¦  «        rKt          |t          ¦  «        s6t          dt	          |¦  «        › d| › d
|› dt          |¦  «        › d�	¦  «        ‚|�n|dk     s||                     ¦   «         k    rPt          dt	          |¦  «        › d| › d
|› d|                     ¦   «         › d|                     ¦   «         › d�¦  «        ‚�Œt          ||¦  «        }	ˆfd„t          ||¦  «        D ¦   «         }
t          |
|¦  «        |	fS )Núvmap(z
, in_dims=zv, ...)(<inputs>): expected `in_dims` to be int or a (potentially nested) tuple matching the structure of inputs, got: ú.r   z�)(<inputs>): got no inputs. Maybe you forgot to add inputs, or you are trying to vmap over a function with no inputs. The latter is unsupported.zb, ...)(<inputs>): in_dims is not compatible with the structure of `inputs`. in_dims has structure r#   z but inputs has structure z, ...)(<inputs>): Got in_dim=zE for an input but in_dim must be either an integer dimension or None.z' for an input but the input is of type zT. We cannot vmap over non-Tensor arguments, please use None as the respective in_dimz> for some input, but that input is a Tensor of dimensionality z- so expected in_dim to satisfy 0 <= in_dim < c                 óJ   •— g | ]\  }}|€|nt          j        ||‰¦  «        ‘Œ S r   )ÚtorchÚ_add_batch_dim)r   r   r   r/   s      €r   r   z*_create_batched_inputs.<locals>.<listcomp>l   sD   ø€ ð ð ð áˆF�Cð ˆ~ˆˆ¥5Ô#7¸¸VÀZÑ#PÔ#Pðð ð r   )r$   Úintr%   r   Ú	_get_nameÚtyper&   r
   r	   r   r   Údimr    r   )r-   r.   r/   r0   r   Ú	args_specr   r   r   Ú
batch_sizeÚbatched_inputss     `        r   Ú_create_batched_inputsr>   7   s4  ø€ õ �g�sÑ#Ô#ð 
­J°wÅÑ,FÔ,Fð 
ÝðG•I˜d‘O”Oð Gð G¨wð Gð Gå6:¸7±m´mðGð Gð Gñ
ô 
ð 	
õ
 ˆ4�y„y�A‚~€~Ýð*•I˜d‘O”Oð *ð *ð *ñ
ô 
ð 	
õ (¨Ñ-Ô-Ñ€IˆyÝ,¨W°iÑ@Ô@€LØÐÝð*•I˜d‘O”Oð *ð *¨wð *ð *å%1°'Ñ%:Ô%:¸1Ô%=ð*ð *ð 'ð*ð *ð *ñ
ô 
ð 	
õ ˜9 lÑ3Ô3ð ñ ‰ˆˆVÝ˜&¥#Ñ&Ô&ð 	¨6Ð+=Ýð1�	 $™œð 1ð 1°7ð 1ð 1Ø$ð1ð 1ð 1ñô ð õ
 �f�cÑ"Ô"ð 	­:°c½6Ñ+BÔ+Bð 	Ýð<�	 $™œð <ð <°7ð <ð <Ø$ð<ð <å˜‘9”9ð<ð <ð <ñô ð ð Ð 6¨A¢: :°¸3¿7º7¹9¼9Ò1DÐ1DÝð.�	 $™œð .ð .°7ð .ð .Ø$ð.ð .à%(§W¢W¡Y¤Yð.ð .ð "%§¢¡¤ð.ð .ð .ñô ð ùõ .¨l¸IÑFÔF€Jðð ð ð å˜|¨YÑ7Ô7ðñ ô €Nõ ˜.¨)Ñ4Ô4°jÐ@Ð@r   FÚout_dimsr<   Úallow_none_pass_throughc                 ój  ‡‡‡‡‡— t          | ¦  «        Št          ‰‰ˆˆˆfd„¦  «        }t          | t          ¦  «        r|d         }t	          j        | ‰‰|¦  «        S |r*t          ˆˆfd„t          | |¦  «        D ¦   «         ¦  «        S t          ˆˆfd„t          | |¦  «        D ¦   «         ¦  «        S )Nc            
      óV   •— dt          ‰ ¦  «        › d‰› d‰› dt          ‰ ¦  «        › d�	S )Nr2   ú, ..., out_dims=z0): `out_dims` must have one dim per output (got z outputs) of r3   )r8   )r0   Únum_outputsr?   s   €€€r   ú<lambda>z!_unwrap_batched.<locals>.<lambda>€   sW   ø€ ð U�	 $™œð Uð U¸ð Uð UØ(3ðUð UÝBKÈDÁ/Ä/ðUð Uð U€ r   r   c              3   óT   •K  — | ]"\  }}|�t          j        |‰‰|¦  «        nd V — Œ#d S r   ©r5   Ú_remove_batch_dim©r   ÚoutÚout_dimr<   r/   s      €€r   r   z"_unwrap_batched.<locals>.<genexpr>‹   s[   øè è € ð 
ð 
ñ ��Wð �?õ Ô'¨¨Z¸ÀWÑMÔMÐMàð	
ð 
ð 
ð 
ð 
ð 
r   c              3   óL   •K  — | ]\  }}t          j        |‰‰|¦  «        V — Œd S r   rG   rI   s      €€r   r   z"_unwrap_batched.<locals>.<genexpr>”   sL   øè è € ð 
ð 
á��Wõ Ô# C¨°ZÀÑIÔIð
ð 
ð 
ð 
ð 
ð 
r   )r'   r,   r$   r   r5   rH   r%   r   )	r!   r?   r/   r<   r0   r@   Úout_dims_as_tuplerK   rD   s	    ````   @r   Ú_unwrap_batchedrN   t   s#  øøøøø€ õ ˜Ñ/Ô/€KÝ!ØØð	Uð 	Uð 	Uð 	Uð 	Uð 	Uñô Ðõ �/¥6Ñ*Ô*ð YØ# AÔ&ˆÝÔ& ¸
ÀJÐPWÑXÔXÐXØð 
Ýð 
ð 
ð 
ð 
ð 
õ !$ OÐ5FÑ GÔ Gð
ñ 
ô 
ñ 
ô 
ð 	
õ ð 
ð 
ð 
ð 
ð 
å # OÐ5FÑ GÔ Gð
ñ 
ô 
ñ 
ô 
ð 	
r   Úoutputsc                 ó¸  — t          | t          ¦  «        rd S t          | t          ¦  «        s@t          dt	          |¦  «        › dt	          |¦  «        › dt          | ¦  «        › d�¦  «        ‚t          | ¦  «        D ]]\  }}t          |t          ¦  «        rŒt          dt	          |¦  «        › dt	          |¦  «        › dt          |¦  «        › d|› d�	¦  «        ‚d S )Nr2   z	, ...): `z%` must only return Tensors, got type z as the return.z for return r3   )r$   r   r%   r   r8   r9   Ú	enumerate)rO   r0   ÚidxÚoutputs       r   Ú_validate_outputsrT   ž   s,  € Ý�'�6Ñ"Ô"ð ØˆÝ�g�uÑ%Ô%ð 
Ýð@•I˜d‘O”Oð @ð @­i¸©o¬oð @ð @Ý!% g¡¤ð@ð @ð @ñ
ô 
ð 	
õ ! Ñ)Ô)ð 
ð 
‰ˆˆVÝ�f�fÑ%Ô%ð 	ØÝðB•I˜d‘O”Oð Bð B­i¸©o¬oð Bð BÝ!% f¡¤ðBð BØ;>ðBð Bð Bñ
ô 
ð 	
ð
ð 
r   c                 óÖ   — t          | t          ¦  «        rd S t          | t          ¦  «        rt          d„ | D ¦   «         ¦  «        s#t	          dt          |¦  «        › d| › d�¦  «        ‚d S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r   )r$   r7   )r   rK   s     r   r   z6_check_out_dims_is_int_or_int_tuple.<locals>.<genexpr>²   s=   è è € ð 2ð 2Ø%,�
�7�CÑ Ô ð2ð 2ð 2ð 2ð 2ð 2r   r2   rC   zu): `out_dims` must be an int or a tuple of int representing where in the outputs the vmapped dimension should appear.)r$   r7   r%   Úallr   r8   )r?   r0   s     r   Ú#_check_out_dims_is_int_or_int_tuplerX   ¯   sž   € Ý�(�CÑ Ô ð ØˆÝ�h¥Ñ&Ô&ð 
­cð 2ð 2Ø08ð2ñ 2ô 2ñ /ô /ð 
õ ð0•I˜d‘O”Oð 0ð 0°Xð 0ð 0ð 0ñ
ô 
ð 	
ð
ð 
r   c                 óN   — t          | d¦  «        r| j        S t          | ¦  «        S )NÚ__name__)ÚhasattrrZ   Úrepr)r0   s    r   r8   r8   ¼   s*   € Ýˆt�ZÑ Ô ð ØŒ}Ðõ
 �‰:Œ:Ðr   z@Please use `torch.vmap` instead of `torch._vmap_internals.vmap`.)Úcategoryc                 ó$   — t          | ||¦  «        S )z4
    Please use torch.vmap instead of this API.
    )Ú_vmap)r0   r-   r?   s      r   Úvmapr`   É   s   € õ ��w Ñ)Ô)Ð)r   c                 óR   ‡ ‡‡‡— t          j        ‰ ¦  «        ˆˆ ˆˆfd„¦   «         }|S )Nc                  óf  •— t          ‰‰¦  «         t          j                             ¦   «         }	 t	          ‰| |‰¦  «        \  }} ‰|Ž }‰st          |‰¦  «         t          |‰||‰‰¬¦  «        t          j                             ¦   «          S # t          j                             ¦   «          w xY w)N)r@   )rX   r5   Ú_CÚ_vmapmode_increment_nestingr>   rT   rN   Ú_vmapmode_decrement_nesting)	r.   r/   r=   r<   r!   r@   r0   r-   r?   s	        €€€€r   Úwrappedz_vmap.<locals>.wrappedß   sÅ   ø€ å+¨H°dÑ;Ô;Ð;Ý”X×9Ò9Ñ;Ô;ˆ
ð	3Ý)?Ø˜˜z¨4ñ*ô *Ñ&ˆN˜Jð #˜d NÐ3ˆOØ*ð 9Ý! /°4Ñ8Ô8Ð8Ý"ØØØØØØ(?ðñ ô õ ŒH×0Ò0Ñ2Ô2Ð2Ð2ø�EŒH×0Ò0Ñ2Ô2Ð2Ð2øøøs   ±A B Â B0)Ú	functoolsÚwraps)r0   r-   r?   r@   rf   s   ```` r   r_   r_   Õ   sL   øøøø€ õ „_�TÑÔð3ð 3ð 3ð 3ð 3ð 3ð 3ñ Ôð3ð* €Nr   )F)r   r   )r   r   F) rg   Útypingr   r   r   r   Útyping_extensionsr   r5   r   Útorch.utils._pytreer	   r
   r   r7   r%   Ú	in_dims_tÚ
out_dims_tÚlistr    r'   Ústrr,   r>   ÚboolrN   rT   rX   r8   ÚFutureWarningr`   r_   r   r   r   ú<module>rr      sB  ðà Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø (Ð (Ð (Ð (Ð (Ð (à €€€Ø Ð Ð Ð Ð Ð Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wð �#�u�*Ô€	Ø�3˜˜c 3˜hœÐ'Ô(€
ðØ�x ”}Ô%ðàðð 	ðð ð ð ð" %¨°°f¸c°kÔ0BÐ(BÔ"Cð Èð ð ð ð ð	Øð	àð	ð # 2 s 7Ô+ð	ð ð		ð 	ð 	ð 	ð9AØð9Aà
ð9Að ð9Að ð	9Að
 ˆ5�#ˆ:Ôð9Að 9Að 9Að 9AðF %*ð#
ð #
Ø˜6 5¨°¨Ô#5Ð5Ô6ð#
àð#
ð ð#
ð ð	#
ð
 ð#
ð "ð#
ð ð#
ð #
ð #
ð #
ðT
˜sð 
¨(ð 
°tð 
ð 
ð 
ð 
ð"

°*ð 

ÀHð 

ÐQUð 

ð 

ð 

ð 

ð�Hð ð ð ð ð €ØFØðñ ô ð*ð *ˆxð * )ð *¸:ð *Èhð *ð *ð *ñ	ô ð*ð ØØ$)ð	 ð  Ø
ð àð ð ð ð "ð	 ð
 ð ð  ð  ð  ð  ð  r   