Ë
    g^(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y)%é    N)ÚAnyÚCallableÚOptionalÚUnion)Ú
deprecated)ÚTensor)Ú_broadcast_to_and_flattenÚtree_flattenÚtree_unflatten.Úflat_in_dimsÚ	flat_argsÚreturnc                 óÄ   ‡— t        | |«      D ��cg c]  \  }}|�|j                  |«      ‘Œ c}}Š‰r#t        ˆfd„‰D «       «      rt        d‰› d�«      ‚‰d   S c c}}w )Nc              3   ó.   •K  — | ]  }|‰d    k7  –— Œ y­w)r   N© )Ú.0ÚsizeÚbatch_sizess     €úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_vmap_internals.pyú	<genexpr>z/_validate_and_get_batch_size.<locals>.<genexpr>   s   øè ø€ ÒJ°d˜4 ;¨q¡>Õ1ÑJùs   ƒzTvmap: Expected all tensors to have the same size in the mapped dimension, got sizes z for the mapped dimensionr   )Úzipr   ÚanyÚ
ValueError)r   r   Úin_dimÚargr   s       @r   Ú_validate_and_get_batch_sizer      sz   ø€ ô ˜|¨YÓ7÷áˆF�CØÐð 	�‰�Õó€Kñ
 ”sÓJ¸kÔJÔJÜð$Ø$/ =Ð0IðKó
ð 	
ð �q‰>Ðùós   ‘AÚbatched_outputsc                 ó:   — t        | t        «      rt        | «      S y)Né   )Ú
isinstanceÚtupleÚlen)r   s    r   Ú_num_outputsr#   !   s   € Ü�/¤5Ô)Ü�?Ó#Ð#Øó    ÚvalueÚnum_elementsÚerror_message_lambdac                 ón   — t        | t        «      s| f|z  S t        | «      |k7  rt         |«       «      ‚| S ©N)r    r!   r"   r   )r%   r&   r'   s      r   Ú	_as_tupler*   )   s;   € ô
 �eœUÔ#Øˆx˜,Ñ&Ð&Ü
ˆ5ƒz�\Ò!ÜÑ-Ó/Ó0Ð0Ø€Lr$   Úin_dimsÚargsÚ
vmap_levelÚfuncc                 óî  — t        | t        «      s7t        | t        «      s't        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        «      r:t        |t        «      s*t        dt	        |«      › d| › d
|› dt        |«      › d�	«      ‚|€Œƒ|dk  s||j                  «       k\  sŒœt        dt	        |«      › d| › d
|› d|j                  «       › d|j                  «       › d�«      ‚ t        ||«      }	t        ||«      D ��cg c]   \  }}|€|nt        j                  |||«      ‘Œ" }
}}t        |
|«      |	fS c c}}w )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 < )r    Úintr!   r   Ú	_get_nameÚtyper"   r
   r	   r   r   Údimr   ÚtorchÚ_add_batch_dimr   )r+   r,   r-   r.   r   Ú	args_specr   r   r   Ú
batch_sizeÚbatched_inputss              r   Ú_create_batched_inputsr;   7   sj  € ô �gœsÔ#¬J°wÄÔ,FÜØ”I˜d“OÐ$ J¨w¨ið 86ä6:¸7³m°_ÀAðGó
ð 	
ô
 ˆ4ƒy�A‚~ÜØ”I˜d“OÐ$ð %)ð *ó
ð 	
ô (¨Ó-Ñ€IˆyÜ,¨W°iÓ@€LØÐÜØ”I˜d“OÐ$ J¨w¨ið 8%ä%1°'Ó%:¸1Ñ%=Ð$>ð ?Ø&˜K qð*ó
ð 	
ô ˜9 lÓ3ò ‰ˆˆVÜ˜&¤#Ô&¨6Ð+=ÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &0ð1óð ô
 �fœcÔ"¬:°c¼6Ô+BÜØœ	 $›Ð(¨
°7°)ð <Ø$˜XÐ%LÜ˜“9�+ð ;ð<óð ð Ñ 6¨A¢:°¸3¿7¹7»9Ó1DÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &%Ø%(§W¡W£Y Kð 0!Ø!$§¡£ ¨1ð.óð ðô, .¨l¸IÓF€Jô ˜|¨YÓ7÷áˆF�Cð ˆ~‰¤5×#7Ñ#7¸¸VÀZÓ#PÑPð€Nñ ô ˜.¨)Ó4°jÐ@Ð@ùó	s   Æ;%G1Úout_dimsr9   Úallow_none_pass_throughc                 ó   ‡‡‡‡‡— 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            
      óF   •— dt        ‰ «      › d‰› d‰› dt        ‰ «      › d�	S )Nr0   ú, ..., out_dims=z0): `out_dims` must have one dim per output (got z outputs) of r1   )r3   )r.   Únum_outputsr<   s   €€€r   ú<lambda>z!_unwrap_batched.<locals>.<lambda>€   s6   ø€ �%œ	 $›Ð(Ð(8¸¸
ð C(Ø(3 }°MÄ)ÈDÃ/ÐARÐRSðU€ r$   r   c              3   ó\   •K  — | ]#  \  }}|�t        j                  |‰‰|«      nd –— Œ% y ­wr)   ©r6   Ú_remove_batch_dim©r   ÚoutÚout_dimr9   r-   s      €€r   r   z"_unwrap_batched.<locals>.<genexpr>‹   s?   øè ø€ ò 
ñ ��Wð �?ô ×'Ñ'¨¨Z¸ÀWÔMàóñ
ùs   ƒ),c              3   óT   •K  — | ]  \  }}t        j                  |‰‰|«      –— Œ! y ­wr)   rD   rF   s      €€r   r   z"_unwrap_batched.<locals>.<genexpr>”   s.   øè ø€ ò 
á��Wô ×#Ñ# C¨°ZÀ×Iñ
ùs   ƒ%()r#   r*   r    r   r6   rE   r!   r   )	r   r<   r-   r9   r.   r=   Úout_dims_as_tuplerH   rA   s	    ````   @r   Ú_unwrap_batchedrK   t   sŸ   ü€ ô ˜Ó/€KÜ!ØØõ	UóÐô �/¤6Ô*Ø# AÑ&ˆÜ×&Ñ& ¸
ÀJÐPWÓXÐXÙÜô 
ô !$ OÐ5FÓ Gô
ó 
ð 	
ô ô 
ä # OÐ5FÓ Gô
ó 
ð 	
r$   Úoutputsc                 óR  — t        | t        «      ry t        | t        «      s0t        dt	        |«      › dt	        |«      › dt        | «      › d�«      ‚t        | «      D ]H  \  }}t        |t        «      rŒt        dt	        |«      › dt	        |«      › dt        |«      › d|› d�	«      ‚ y )Nr0   z	, ...): `z%` must only return Tensors, got type z as the return.z for return r1   )r    r   r!   r   r3   r4   Ú	enumerate)rL   r.   ÚidxÚoutputs       r   Ú_validate_outputsrQ   ž   sº   € Ü�'œ6Ô"ØÜ�gœuÔ%ÜØ”I˜d“OÐ$ I¬i¸«oÐ->ð ?!Ü!% g£ ¨ð@ó
ð 	
ô ! Ó)ò 
‰ˆˆVÜ�fœfÔ%ØÜØ”I˜d“OÐ$ I¬i¸«oÐ->ð ?!Ü!% f£ ¨l¸3¸%¸qðBó
ð 	
ñ
r$   c                 ó    — t        | t        «      ry t        | t        «      rt        d„ | D «       «      st	        dt        |«      › d| › d�«      ‚y )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr)   )r    r2   )r   rH   s     r   r   z6_check_out_dims_is_int_or_int_tuple.<locals>.<genexpr>²   s   è ø€ ò 2Ø%,Œ
�7œC× ñ2ùs   ‚r0   r@   zu): `out_dims` must be an int or a tuple of int representing where in the outputs the vmapped dimension should appear.)r    r2   r!   Úallr   r3   )r<   r.   s     r   Ú#_check_out_dims_is_int_or_int_tuplerU   ¯   s^   € Ü�(œCÔ ØÜ�h¤Ô&¬cñ 2Ø08ô2ô /ô Ø”I˜d“OÐ$Ð$4°X°Jð ?/ð 0ó
ð 	
ð/r$   c                 óH   — t        | d«      r| j                  S t        | «      S )NÚ__name__)ÚhasattrrW   Úrepr)r.   s    r   r3   r3   ¼   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)r.   r+   r<   s      r   Úvmapr]   É   s   € ô ��w Ó)Ð)r$   c                 óN   ‡ ‡‡‡— t        j                  ‰ «      ˆˆ ˆˆfd„«       }|S )Nc                  óF  •— t        ‰‰«       t        j                  j                  «       }	 t	        ‰| |‰«      \  }} ‰|Ž }‰st        |‰«       t        |‰||‰‰¬«      t        j                  j                  «        S # t        j                  j                  «        w xY w)N)r=   )rU   r6   Ú_CÚ_vmapmode_increment_nestingr;   rQ   rK   Ú_vmapmode_decrement_nesting)	r,   r-   r:   r9   r   r=   r.   r+   r<   s	        €€€€r   Úwrappedz_vmap.<locals>.wrappedß   s’   ø€ ä+¨H°dÔ;Ü—X‘X×9Ñ9Ó;ˆ
ð	3Ü)?Ø˜˜z¨4ó*Ñ&ˆN˜Jñ # NÐ3ˆOÙ*Ü! /°4Ô8Ü"ØØØØØØ(?ôô �H‰H×0Ñ0Õ2øŒE�H‰H×0Ñ0Õ2ús   ­4B  Â  B )Ú	functoolsÚwraps)r.   r+   r<   r=   rc   s   ```` r   r\   r\   Õ   s'   û€ ô ‡_�_�TÓö3ó ð3ð* €Nr$   )F)r   r   )r   r   F) rd   Útypingr   r   r   r   Útyping_extensionsr   r6   r   Útorch.utils._pytreer	   r
   r   r2   r!   Ú	in_dims_tÚ
out_dims_tÚlistr   r#   Ústrr*   r;   ÚboolrK   rQ   rU   r3   ÚFutureWarningr]   r\   r   r$   r   ú<module>ro      s!  ðã ß 1Ó 1Ý (ã Ý ß 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ðF %*ñ#
Ø˜6 5¨°¨Ñ#5Ð5Ñ6ð#
àð#
ð ð#
ð ð	#
ð
 ð#
ð "ð#
ð ó#
ðT
˜sð 
¨(ð 
°tó 
ð"

°*ð 

ÀHð 

ÐQUó 

ð�Hó ñ ØFØôñ*ˆxð * )ð *¸:ð *Èhò *ó	ð*ð ØØ$)ñ	 Ø
ð àð ð ð ð "ð	 ð
 ô r$   