
    sg@                        U d dl Z d dlmZmZmZmZmZmZmZ ee	e
f   Zd dlZdee	   dee	   fdZdee	   dee	   dee	   fdZdee	   dedee	   fdZd	ee	   d
ee	   fdZd	ee	   fdZd	ee	   fdZdee	   dee	   fdZd	ee	   dee	   fdZd	ee	   dee	   defdZdee	   de	dee	   fdZdee	   fdZd	ee	   dee	   fdZddd	ee	   dee	   defdZd	ee	   deee	      dedefd Zd	ee	   d!e	defd"Zd#e	d$e	fd%Zd&e	d'e	d(e	d)e	d*e	d+e	d,efd-Zd&e	d'e	d(e	d*e	d+e	d,efd.Zd/ee	   d0e	d1e	d2e	d3e	d4e	d5e	d6e	d7e	d8e	d9e	d:e	d;e	d<e	fd=Z d/ee	   d>ee	   d*ee	   d?ee	   d+ee	   d,efd@Z!d/ee	   d>ee	   d*ee	   d?ee	   d+ee	   d,efdAZ"d/ee	   dBeee	      dCeee
      fdDZ#d	ee	   dEee	   fdFZ$d	ee	   dGee	   fdHZ%d	ee	   dIee	   fdJZ&dKee	   d!e	fdLZ'dKee	   fdMZ(dKee	   d!e	fdNZ)dKee	   dOee	   fdPZ*d	ee	   d!e	dQee	   fdRZ+	 	 	 ddSee	   dTee	   dUe	dVedWef
dXZ,dY Z-d	ee	   d!e	dZee	   d[ee	   d\e	f
d]Z.d^eee	      fd_Z/d!e	d`eee	      fdaZ0dGee	   fdbZ1dcee	   ddee	   dee	dQe	fdfZ2d^eee	      d!e	fdgZ3d^eee	      d!e	fdhZ4d	ee	   d!e	dQe	fdiZ5djee	   dkee	   fdlZ6d	ee	   fdmZ7d	ee	   dne	doe	fdpZ8d/ee	   dSee	   dqeee	      fdrZ9d	ee	   dsee	   dEee	   dteduef
dvZ:dwee	   defdxZ;d/ee	   dyee	   dqeee	      d*ee	   d?ee	   d+ee	   dze	fd{Z<d|ee	   d}ee	   dqeee	      d*ee	   d?ee	   d+ee	   dze	fd~Z=d/ee	   dSee	   dqeee	      d*ee	   d?ee	   d+ee	   dze	fdZ>d/ee	   dSee	   dqeee	      d*ee	   d?ee	   d+ee	   dze	fdZ?dee	   d/ee	   dSee	   deee	      fdZ@	 	 	 	 	 	 dd/ee	   dSee	   dqeee	      d*eee	      d?eee	      deee	      dze	d+eee	      dee	   fdZAd/ee	   dSee	   dqeee	      d*ee	   d?ee	   d+ee	   dedee	   dze	dee	   fdZBd/ee	   dSee	   dqeee	      d*ee	   d?ee	   d+ee	   dedee	   dze	dededededee	   fdZCd/ee	   dSeee	      dqeee	      deee	      deee	      dede
de
defdZDd/ee	   dSee	   dqeee	      d*ee	   d?ee	   d+ee	   dze	fdZEdd!e	de	defdZFd/efdZGdKee	   fdZHd[ededededef
dZIdZed[ededededefdZJdZed[ed\ededededefdZKd/ee	   dOee	   fdZLd	ee	   dee	   dee	   dee	   fdZMd/ee	   de	de	fdZNd/ee	   fdZOd/ee	   fdZPd	ee	   d!e	defdZQ	 dd	ee	   d!ee	   dedee	   fdZRd	ee	   dEee	   dee	   fdZSd	ee	   dee	   fdZTdd	ee	   de	d!e	deee	   ee	   f   fdZUd	ee	   dee	   dSeee	      de	deee	   ee	   f   f
dZVd/ee	   dee	   deee	   ee	   ee	   f   fdZWd/ee	   dSeee	      dqeee	      deee	      deee	      dedeee	   ee	   ee	   f   fdZXd/ee	   dSeee	      dqeee	      deee	      deee	      deee	   ee	   ee	   ee	   f   fdZY	 	 	 	 dd	ee	   dee	   dSeee	      de	de	de
dee	   fdZZ	 ej                  j                  Z]i a^ee_e]f   e`d<   i Zaee_ee]e]f   f   e`d<   i Zbeee]f   e`d<   defdZcde_defdZdde_dedefdZe edde        edde        edde        edde        eddeG        eddeG        edde        edde        eddeI        eddeJ        eddeK        edde(        edde)        edde*        edde'        edde.        edde5        edde+        edde        edde        edde        edde        edde,        edde$        edde%        edde&        edde6        edde9        edde!        edde"        edde7        edde8        edde>        edde?        eddeD        eddeE        edde@        eddeB        eddeC        eddeA        eddeN        edde3        edde4        eddeL        eddeM        edde        edde        edde        edde        edde        edde        eddeG        eddeG        edde:        edde#        edde        edde        edde        edde        eddeR        eddeS        edd eT        eddeU        eddeV        eddeW        eddeX        eddeX        eddeX        eddeY        eddeZ        edd	e        edd
e        edde        eedeOeP       y(      N)AnyCallableDictListOptionalTupleUnionabc           	      D   t        |       }t        |      }t        ||      }g }t        |      D ]m  }|dz
  |z
  }|dz
  |z
  }|dz
  |z
  }	|dk\  r| |   nd}
|	dk\  r||	   nd}|
|k7  r|
dk7  r|dk7  rt        d|
 d| d|       |j	                  |
dk(  r|n|
       o |S )N   r   zThe size of tensor a z" must match the size of tensor b (z) at non-singleton dimension )lenmaxrangeAssertionErrorappend)r
   r   dimsAdimsBndimexpandedSizesioffsetdimAdimBsizeAsizeBs               M/var/www/html/venv/lib/python3.12/site-packages/torch/jit/_shape_functions.py	broadcastr      s    FEFEueD!M4[ =Aqy6!qy6! AI$A AI$AE>eqjUaZ 'w.PQVPWWtuvtwx  	eqjUe<=     cc                 .    t        t        | |      |      S Nr   r
   r   r    s      r   broadcast_threer%   3   s    Yq!_a((r   c                     t        | |      S r"   r#   r$   s      r   broadcast_one_threer'   7   s    Q?r   selfoutc                 @   t        |      dk(  sJ t        |       dk(  st        |       dk(  sJ t        dt        |             D ]  }| |   dk7  rJ  g }t        dt        |       dz
        D ]  }|j                  | |           |D ]  }|j                  |        |S )N         r   r   )r   r   r   )r(   r)   r   shapeelems        r   adaptive_avg_pool2dr0   ;   s    s8q==t9>SY!^++1c$i  Aw!|| E1c$i!m$ T!W TLr   c                 :    g }| D ]  }|j                  |        |S r"   r   )r(   r)   r/   s      r   _copyr3   I   s'    C 

4Jr   c                     t        |       S r"   r3   r(   s    r   unaryr7   P   s    ;r   c                    t        |       }t        |      }||kD  rt        d| d| d      t        |      D ]B  }||z
  |z   }| |   }|dk\  r||   nd}||k7  s"|dk7  s(t        dj                  |||             t	        |       S )NzThe dims of tensor b (z5) must be less than or equal tothe dims of tensor a (z) r   r   zZThe size of tensor a {} must match the size of tensor b ({}) at non-singleton dimension {})r   r   r   formatr3   )r
   r   r   r   r   r   r   r   s           r   broadcast_inplacer:   T   s    FEFEu}$UG+`af`ggij
 	
 e 	u}t#$ AI$AE>eqj 44:F5%4N 	 8Or   sizesc                 D   t        |      t        |       k\  sJ t        |      }t        |       }|dk(  rt        |      S g }t        |      D ]P  }|dz
  |z
  }|dz
  |z
  }|dk\  r| |   nd}||   }	|	dk(  r	|dk\  sJ |}	||	k7  r	|dk(  sJ |	}|j                  |       R |S )Nr   r   )r   r3   r   r   )
r(   r;   r   
tensor_dimr)   r   r   dimsize
targetSizes
             r   expandrB   h   s    u:T"""u:DTJqyU|C4[ A1nv%1HtCy!1X
!8O8J:199D

4 Jr   inp0c                     t        | |      S r"   )rB   )r(   r;   rC   s      r   expand_one_unusedrE   ~   s    $r   r.   numelreturnc                    d}d }t        t        |             D ]5  }| |   dk(  r|t        d      |}| |   dk\  r	|| |   z  },t        d       ||k(  s||dkD  r||z  dk(  st        d      t        |       }|||z  ||<   |S )Nr   r=   z"only one dimension can be inferredr   zinvalid shape dimensionszinvalid shape)r   r   r   r3   )r.   rF   newsize	infer_dimr?   r)   s         r   infer_size_implrK      s    G#ISZ  =:$$%IJJI3Z1_uSz!G !;<<= 	!gkego6J_--
,C')IJr   c                 "    d}| D ]  }||z  }	 |S Nr    )r;   rF   r/   s      r   rF   rF      s$    E Lr   c                 ,    t        |t        |             S r"   )rK   rF   )r(   r;   s     r   viewrP      s    5%+..r   F)implicitrQ   c                    t        | |      S r"   )rP   )r(   r;   rQ   s      r   view_one_unusedrS      s    er   opt_dimskeep_dimdtc           	      :   g }|t        |      dk(  rt        t        t        |                   }n|}t        t        |             D ]Q  }d}|D ]  }|t        |t        |             k(  sd} |r|s,|j	                  d       >|j	                  | |          S |S )Nr   FTr   )r   listr   maybe_wrap_dimr   )	r(   rT   rU   rV   r)   dimsidxis_mean_dim
reduce_dims	            r   sum_mean_dimr^      s     C3x=A-uSY/0SY 	"! 	#JnZT;;"	# 

1JJtCy!	" Jr   r?   c                 (    t        | |g|d       }||fS r"   )r^   )r(   r?   rU   r)   s       r   max_dimr`      s    
tcUHd
3C8Or   xyc                     | |z  S r"   rN   )ra   rb   s     r   div_rtnrd      s    6Mr   	inputSize
kernelSizepad_lpad_rstridedilation	ceil_modec                     t        | |z   |z   ||dz
  z  z
  dz
  |r|dz
  ndz   |      dz   }|r|dz
  |z  | |z   k\  r|dz
  }|S Nr   r   )rd   )re   rf   rg   rh   ri   rj   rk   
outputSizes           r   pooling_output_shape_pad_lrro      s     	 *q.)* 	
 'vzA/ 	
 		  Nf$	E(99#aJr   c           	      <    |dk7  sJ d       t        | ||||||      S )Nr   zstride should not be zeero)ro   )re   rf   rg   ri   rj   rk   s         r   pooling_output_shaperq      s2     Q;444;&:ueVXy r   inputkHkWdHdWpadHpadW	dilationH	dilationWnInputPlaneinputHeight
inputWidthoutputHeightoutputWidthc                    t        |       }|	}|dkD  r|dkD  sJ |dkD  r|dkD  sJ |dkD  r|dkD  sJ | d   dk7  xr | d   dk7  }|dk(  r
| d   dk7  r|s|dk(  r
|r| d   dk7  sJ |dz  |k\  r|dz  |k\  sJ |dk\  r|dk\  sJ y )Nr   r   r+   r,   r-   r   )rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   nOutputPlane
valid_dimss                    r   pool2d_shape_checkr      s      u:DL6b1f6b1fq=Y]**qQ058q=J	!HMAI*qQ		8 7d?rQw$..! 111 1r   kernel_sizepaddingc                 p   t        |      dk(  st        |      dk(  sJ d       |d   }t        |      dk(  r|n|d   }t        |      dk(  s#t        |      dk(  st        |      dk(  sJ d       t        |      dk(  r|n|d   }t        |      dk(  r|}	nt        |      dk(  r|}	n|d   }	t        |      dk(  st        |      dk(  sJ d       |d   }
t        |      dk(  r|
n|d   }t        |      dk(  st        |      dk(  sJ d       |d   }t        |      dk(  r|n|d   }t        |       dk(  st        |       d	k(  sJ t        |       d	k(  r| d
   nd}| d   }| d   }| d   }t        |||
|||      }t        ||||	||      }t        | ||||	|
||||||||       t        |       dk(  r|||gS ||||gS )Nr   r+   zKmax_pool2d: kernel_size must either be a single int, or a tuple of two intsr   zOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intszGmax_pool2d: padding must either be a single int, or a tuple of two intszHmax_pool2d: dilation must be either a single int, or a tuple of two intsr,   r-   r=   )r   rq   r   )rr   r   ri   r   rj   rk   rs   rt   ru   rv   rw   rx   ry   rz   nbatchr{   r|   r}   r~   r   s                       r   
max_pool2dr     s(    	KA[!1Q!6UTU6	QB;1$+a.B 	FqCK1,Fq0@YXY@6{aVAYB
6{a	V	AY 	GS\Q.QPQ.1:Dw<1$4'!*D 	Hc(mq0RQR0I ]a/	Xa[Iu:?c%jAo--e*/U2YqF)K)KrJ'Rr9iXL&z2tRIVK



" 5zQ\;77\;??r   c                 *    t        | |||||      }||fS r"   )r   )rr   r   ri   r   rj   rk   r)   s          r   max_pool2d_with_indicesr   Z  s"     UK(I
NC:r   output_sizescale_factorsc                    g }|j                  | d          |j                  | d          |	|J d       |A|J d       t        |      dk(  sJ |j                  |d          |j                  |d          |_|J d       t        |      dk(  sJ |j                  t        | d   |d   z               |j                  t        | d   |d   z               |S )Nr   r   z5Either output_size or scale_factors must be presentedz9Must specify exactly one of output_size and scale_factorsr+   r,   )r   r   int)rr   r   r   r)   s       r   upsample_nearest2dr   f  s   
 CJJuQxJJuQx!4IIIq!	GF	G!;1$$$

;q>"

;q>" 	GF	G=!Q&&&

3uQx-"2234

3uQx-"2234Jr   mat2c                     t        |       dk(  sJ d       t        |      dk(  sJ d       | d   |d   k(  sJ | d   |d   gS )Nr+   zself must be a matrixzmat2 must be a matrixr   r   r   r(   r   s     r   mmr     sW    t9>222>t9>222>7d1gGT!Wr   tensorc                 `    t        |       dk(  rt        |      dk(  sJ | d   |d   k(  sJ g }|S rm   r   )r(   r   r)   s      r   dotr     s>    t9>c&kQ...7fQiCJr   vecc                 d    t        |       dk(  rt        |      dk(  sJ | d   |d   k(  sJ | d   gS Nr+   r   r   r   )r(   r   s     r   mvr     s?    t9>c#h!m++7c!fG9r   lic                 p    t        |t        |       dz         }t        |       }|j                  |d       |S rM   )rY   r   r3   insert)r   r?   r)   s      r   	unsqueezer     s2    
c"gk
*C
)CJJsAJr   c                 v    g }t        t        |             D ]  }| |   dk7  s|j                  | |          ! |S rM   )r   r   r   )r   r)   r   s      r   squeeze_nodimr     s@    C3r7^ a5A:JJr!u Jr   c                     g }t        |t        |             }t        t        |             D ]9  }||k(  r| |   dk7  s|j                  | |          &|j                  | |          ; |S rM   )rY   r   r   r   )r   r?   r)   wrapped_dimr   s        r   squeezer     sh    C c"g.K3r7^ !uz

2a5!JJr!u Jr   rZ   c                 F   t        |      dk(  r| S t        |      }t        t        |            D ]  }t        ||   t        |             ||<    g }t        t        |             D ]8  }| |   dk(  r||vs|j	                  | |          %|j	                  | |          : |S Nr   r   )r   r3   r   rY   r   )r   rZ   wrapped_dimsr   results        r   squeeze_dimsr     s    
4yA~	;L3t9 C(a#b'BQCF3r7^ !a5A:$be$MM"Q% ! Mr   indexc                    t        |t        |             }t        |      }t        |      dk  sJ |dk(  s|t        |       k  sJ g }t        t        |             D ]-  }||k(  r|j	                  |       |j	                  | |          / |S rm   )rY   r   multiply_integersr   r   )r(   r?   r   rF   result_sizer   s         r   index_selectr     s    
c$i
(Ce$Eu:??!8sSY&&K3t9 (!8u%tAw'	(
 r   weightindicespadding_idxscale_grad_by_freqsparsec                     t        |       dk(  sJ t        |      dk(  rt        | d|      S t        |      }|j                  | d          |S r   )r   r   r3   r   )r   r   r   r   r   r@   s         r   	embeddingr     sO     v;!
7|qFAw//>DKKq	Kr   c                       y)Nl    rN   rN   r   r   max_intr     s    r   startendstepc                 Z   t        |       }|dk7  sJ t        ||      }||nd}||n	t               }|dkD  sJ |t               k(  rd}|dk  r|| |   z  }|dk  r|| |   z  }|dk  rd}n|| |   kD  r| |   }||k  r|}n|| |   k\  r| |   }||z
  }t        |       }	||z   dz
  |z  |	|<   |	S r   )r   rY   r   r3   )
r(   r?   r   r   r   r   	start_valend_val	slice_lenr)   s
             r   slicer     s     t9D199
d
#C*I_c')G!8O8GI	1}T#Y	{491}		T#Y	I		DI	s))#I
+CD 1$-CHJr   tensorsc                 2    | D ]  }t        |      dkD  rJ  y Nr   r   )r   r   s     r   check_cat_no_zero_dimr     s!     6{Qr   tensor_sizesc                 ~    d }|D ]1  }t        |      dk(  r	|d   dk(  r|t        | t        |            }3 || }|S rm   )r   rY   )r?   r   out_dimr@   s       r   legacy_cat_wrap_dimr   	  sQ    !G 9D	Q47a<(c$i89 Nr   c                 >    t        |       dk(  xr t        |       dk(  S r   rF   r   )r   s    r   should_skipr     s    =A2#f+"22r   firstsecond	dimensionc                     t        |       }t        |      }||k(  sJ d       t        d|      D ]  }||k7  s	| |   ||   k(  rJ d        y )Nz+Tensors must have same number of dimensionsr   z/Sizes of tensors must match except in dimension)r   r   )r   r   r   r   
first_dimssecond_dimsr?   s          r   check_cat_shape_except_dimr     sl     UJf+K$S&SS$Q
# A)c
fSk)A@A)Ar   c                 0   t        |        t        ||       }t        |       dkD  sJ d }| D ]  }t        |      r|} |dgS d}t	        t        |             D ])  }| |   }t        |      rt        ||||       |||   z   }+ t        |      }|||<   |S r   )r   r   r   r   r   r   r3   )r   r?   not_skipped_tensorr   cat_dim_sizer   r   s          r   catr   %  s    '"
c7
+Cw<!.2 (6"!'( !s
L3w<  66"&'963J'&+5L	6 *+K#Kr   c                 f    g }| D ]  }t        ||      }|j                  |       ! t        ||      S r"   )r   r   r   )r   r?   unsqueezed_tensorsr   
unsqueezeds        r   stackr   =  sA    *, .vs+
!!*-. !3''r   c                     t        |       }|dk7  sJ t        ||      }| |   }|| k  s||k\  rJ |dk  r||z  }g }t        |      D ]  }||k7  s	|j                  | |           |S r   )r   rY   r   r   )r(   r?   r   r   r@   r)   r   s          r   selectr   E  s    t9D199
d
#C9D$//qyC4[  8JJtAw  Jr   tensor1tensor2c                    t        |       }t        |      }|dk(  r|dk(  rt        | |      S |dk(  r|dk(  rt        | |      S |dk(  r%|dk(  r t        t	        t        | d      |      d      S |dk(  r|dk(  rt	        | |      S |dk\  r|dk\  r|dkD  r| d   nd}| d   }g }t        |dz
        D ]  }|j                  | |           |dkD  r|d   nd}|d   }	g }
t        |dz
        D ]  }|
j                  ||           t        ||
      }|}|dkD  r|j                  |       |dkD  r|j                  |	       |S J d       )Nr   r+   r   r   r=   z0both  arguments to matmul need to be at least 1D)	r   r   r   r   r   r   r   r   r   )r   r   dim_tensor1dim_tensor2nm1batch_tensor1r   m2pbatch_tensor2expand_batch_portionoutput_shapes                r   matmulr   T  s   g,Kg,KaK1,7G$$		kQ.'7##		kQ.r)GQ/91==		kQ.'7##		kQ. '?GBKR[#%{Q' 	-A  ,	-'!OWR[BK#%{Q' 	-A  ,	-  )F ,?"?"HHHur   c                 t    t        |       dk  sJ t        |       }|dk(  rg }|S |dk(  r| d   gS | d   | d   gS )Nr+   r   r   r   )r(   self_lenr)   s      r   tr     sR    t9>>4yH1}
	QQyQa!!r   dim0dim1c                     t        |       }t        ||      }t        ||      }||k(  rt        |       S g }t        |      D ]J  }||k(  r|j	                  | |          ||k(  r|j	                  | |          7|j	                  | |          L |S r"   )r   rY   r3   r   r   )r(   r   r   ndimsr)   r   s         r   	transposer     s    IE$&D$&Dt|T{C5\  9JJtDz"$YJJtDz"JJtAw  Jr   biasc                 V    t        | t        |            }|t        ||      |k(  sJ |S r"   )r   r   r   )rr   r   r   r)   s       r   linearr     s2    
&	
"Cs#s***Jr   mat1betaalphac                 .    t        | t        ||            S r"   )r   r   )r(   r   r   r   r   s        r   addmmr     s    T2dD>**r   arrayc                 (    d}| D ]
  }|dk  s	d} |S )NFr   TrN   )r   non_negativevals      r   check_non_negativer    s*    L  7L  r   weight_sizesgroupsc                 l   t        |       }t        |      }t        |      rJ t        |      rJ ||k(  sJ |d   |k\  sJ |d   |z  dk(  sJ | d   |d   |z  k(  sJ |t        |      dk(  r|d   |d   k(  sJ t        d|      D ]*  }	| |	   d||	dz
     z  z   ||	dz
     ||	   dz
  z  dz   k\  r*J  y Nr   r   r+   )r   r  r   )
rr   r  r   ri   r   rj   r  k
weight_dimr   s
             r   check_shape_forwardr    s    	E
A\"J "'***!&)))???f$$$Of$***8|A////<CINtAw,q//IJJ1a[ 
a1wq1u~--QUO|A23a7
 	
 

r   
input_sizeweight_sizec           	      j   t        | ||||||       t        |      dkD  }t        |       }g }	d}
d}|	j                  | |
          |	j                  ||          t        d|      D ]K  }|r||dz
     nd}|||   dz
  z  dz   }|	j                  | |   d||dz
     z  z   |z
  ||dz
     z  dz          M |	S )Nr   r+   r   )r  r   r   r   )r	  r
  r   ri   r   rj   r  has_dilationr?   r   input_batch_size_dimweight_output_channels_dimd	dilation_kernels                  r   conv_output_sizer    s     Kvw& x=1$L
j/CK!"z"678{#=>?1c] 
'3HQUO	k!nq01A5]a'!a%.01F:va!e}LqP	

 r   c           	      d    t        |      dk(  sJ t        |       dk(  sJ t        | ||||||      S )Nr,   r   r  rr   r   r   ri   r   rj   r  s          r   conv1dr    =     v;!u:??E64(FSSr   c           	      d    t        |      dk(  sJ t        |       dk(  sJ t        | ||||||      S )Nr-   r  r  s          r   conv2dr    r  r   grad_outputbiasesc                 8    t        |      t        |      | d   gfS rM   r5   )r  rr   r   r  s       r   conv_backwardsr  	  s      <vQ(888r   output_paddingc                    |ddg}|ddg}|ddg}|ddg}t        |      dkD  }t        |       }	g }
d}d}|
j                  | |          |
j                  ||   |z         t        d|	      D ]T  }|r||dz
     nd}|||   dz
  z  }|
j                  | |   dz
  ||dz
     z  d||dz
     z  z
  |z   ||dz
     z   dz          V |
S )Nr   r   r+   r   r   r   )rr   r   r   ri   r   r  r  rj   r  r?   r   r  r  r  r  r  s                   r   conv_transpose2d_inputr!    s3    ~Qa&Qq6x=1$L
e*CK!"u123v89FBC1c] 	
'3HQUO	fQi!m,1X\VAE]*'!a%. ! QU#$ 		
	
 r   
transposedc	                 >   t        |      dkD  }	t        |      dkD  }
t        |       }g }d}|rdnd}|j                  | |          |r|j                  ||   |z         n|j                  ||          t        d|      D ]  }|	r||dz
     nd}|
r||dz
     nd}|rA|||   dz
  z  }|j                  | |   dz
  ||dz
     z  d||dz
     z  z
  |z   |z   dz          ^|||   dz
  z  dz   }|j                  | |   d||dz
     z  z   |z
  ||dz
     z  dz           |S r  r   )rr   r   r   ri   r   rj   r"  r  r  r  has_output_paddingr?   r   r  r  r  r  output_padding_r  s                      r   conv_forwardsr&  :  s    x=1$L^,q0
e*CK&0au1236"<=FG6"<=>1c] '3HQUO	3E.Q/1&)a-0FqAA.ga!en$% "" 	 &)a-014FqQQ/069fQUmKaO" r   	benchmarkdeterministiccudnn_enabled
allow_tf32c                 (    t        | ||||||||	      S r"   )r&  )rr   r   r   ri   r   rj   r"  r  r  r'  r(  r)  r*  s                r   _conv_forwardsr,  e  s,     
 
r   running_meanrunning_vartrainingmomentumepsc	                 :    g }	| D ]  }
|	j                  |
        |	S r"   r2   )rr   r   r   r-  r.  r/  r0  r1  r)  r)   r/   s              r   
batch_normr3    s)     C 

4Jr   c           	      d    t        |      dk(  sJ t        |       dk(  sJ t        | ||||||      S )N   r  r  s          r   conv3dr6    r  r   dim_post_exprwrap_scalarc                 X    |dk  r|sJ d}| }|dz
  }| |k  s| |kD  rJ | dk  r| |z  } | S r   rN   )r?   r7  r8  minr   s        r   rY   rY     sQ    {.C
!
Cc	S3Y''
Qw}Jr   c                 
    g }|S r"   rN   )rr   r)   s     r   zero_dim_tensorr<    s    CJr   c                 "    d}| D ]  }||z  }	 |S rM   rN   )r   r)   r/   s      r   r   r     s$    
C DjJr   inp1inp2inp3c                 N    | dk\  sJ t        t        j                  |             gS r   r   mathceil)r   rC   r>  r?  r@  s        r   
arange_endrE    s#    !8O8		#  r   c                 b    |dk\  sJ || k\  sJ t        t        j                  || z
              gS r   rB  )r   r   rC   r>  r?  r@  s         r   arange_startrG    s6     !8O8%<<		#+&'((r   c                     |dk7  sJ |dk  r| |k\  s	J || k\  sJ t        t        j                  || z
  |z              gS r   rB  )r   r   r   rC   r>  r?  r@  s          r   arange_start_steprI    sO     199ax||e||		3;$./011r   c                 :   t        |       t        |      k(  sJ t        |      }g }g }t        |      D ]6  }t        ||   |      }|j                  |       |j                  | |          8 t        d|      D ]  }t        |      D ]  }||   ||   k7  rJ  ! |S rM   )r   r   rY   r   )rr   rZ   r   	seen_dimsnewSizesr   r?   js           r   permuterN    s    u:T"""t9DIH4[ $T!Wd+c
#$ 1d^ 0q 	0AQ<9Q<///	00 Or   sourcedestinationc                    t        |       }|dk  r| S g }g }t        t        |            D ]>  }|j                  t        ||   |             |j                  t        ||   |             @ t        |      D cg c]  }d }}t        |      D cg c]  }| }}t        |      D cg c]  }| }	}t        t        |            D ]  }||   |||   <   d|||   <   d|	||   <    g }
g }|D ]  }|dk7  s	|
j                  |        |	D ]  }|dk7  s	|j                  |        |t        |      z
  }t        |      D ]  }|
|   |||   <    t	        | |      S c c}w c c}w c c}w )Nr   r=   )r   r   r   rY   rN  )r(   rO  rP  self_dimnormalized_srcnormalized_dstr   ordersrc_dimsdst_dimssource_dimsdestination_dimselerest_dims                 r   movedimr\    s   4yH1} "N "N3v; HnVAYABn[^XFGH x)AR)E) ?+a+H+ ?+a+H+3v; )#1!#4nQ &("#&("#)
  K"$ $"9s#$  )"9##C() #f+%H8_ 4%0^q!"44+ *++s   9	E	E")	E'	start_dimend_dimc                    t        |t        |             }t        |t        |             }||k  sJ t        |       dk(  rdgS ||k(  rg }| D ]  }|j                  |        |S d}t        ||dz         D ]
  }|| |   z  } g }t        |      D ]  }|j                  | |           |j                  |       t        |dz   t        |             D ]  }|j                  | |           |S r   )rY   r   r   r   )rr   r]  r^  r)   r/   slice_numelr   r.   s           r   flattenra     s   y#e*5IWc%j1G
5zQs
G 	DJJt	
K9gk*  uQx  E9 U1X	LL7Q;E
+ U1XLr   c                     dt        |       gS r   r   rr   s    r   nonzero_lower_boundrd    s    s5z?r   c                 .    t        |       t        |       gS r"   r   rc  s    r   nonzero_upper_boundrf    s    %L#e*%%r   keepdimc                     t        |t        |             }g }t        |       D ]0  \  }}||k(  r|s|j                  d        |j                  |       2 |S rM   )rY   r   	enumerater   )r(   r?   rg  r)   r   rR  s         r   _reduce_along_dimrj  "  sV    
c$i
(CC  !88

1JJx ! Jr   c                 $    |g S t        | ||      S r"   )rj  )r(   r?   rg  s      r   argmaxrl  .  s     {	T300r   c                     t        |       dk(  sJ d       t        |      dk(  sJ d       | d   |d   k(  sJ d       | d   |d   k(  sJ d       | d   | d   |d   gS )Nr,   zbmm only supports 3D tensorsr   zmismatching batch dimensionr+   r   z!mismatching contracting dimensionr   r   s     r   bmmrn  6  s    t9>999>t9>999>7d1g<<<7d1gBBBGT!Wd1g&&r   c                     t        |       gS r"   r   r6   s    r   _shape_as_tensorrp  >  s    I;r   r  c                     t        |       dk(  rg }||fS || |   k  sJ d| d| d| |           t        |       }|||<   ||fS )Nr   zk (z) is too big for dimension z	 of size )r   r3   )r(   r  r?   r   s       r   topkrr  B  sq    
4yA~ 6>	 cN	I.se9T#YKH	Its6>r   target	reductionc                    t        |       }t        |      }d|cxk  rdk  sJ  J |dk  sJ |dk(  xr |dk(  }|s| d   |d   k(  sJ | d   }g }|t        |      dk(  r|d   |k(  sJ |dk(  r|dk(  r
| d   g}	|	|fS |}	|	|fS )Nr   r+   r   r=   r   )
r(   rs  r   rt  rR  
target_dimno_batch_dim	n_classesscalar_shapereduction_shapes
             r   nll_loss_forwardr{  N  s     4yHVJx1??q=4Z1_LDGvay011RI L>c&kQ.6!9	3IJJA~(a-7) L(( 'L((r   normalized_shapec                     g }t        |       t        |      z
  }|dk\  sJ t        |      D ]  }|j                  | |           t        |t        |             D ]  }|j                  d        t        |       ||fS r   )r   r   r   r3   )rr   r|  rz  num_unreduced_dimensionsr   s        r   native_layer_normr  b  s     "$O"5zC0@,AA#q(((+, )uQx()+SZ8 "q!"</99r   c                 6    |r| d   g}ndg}t        |       ||fS rm   r5   )rr   r   r   r-  r.  r/  _sizes          r   native_batch_normr  o  s*     q
<%%r   c                 .    | d   g}t        |       ||dgfS rm   r5   )rr   r   r   r-  r.  r  s         r   _batch_norm_with_updater  ~  s$     1XJE<s**r   ignore_indexlabel_smoothingc                 (    t        | |||      d   }|S r   )r{  )r(   rs  r   rt  r  r  result_shapes          r   cross_entropy_lossr    s     $D&&)DQGLr   shape_compute_graph_mappingbounded_compute_graph_mappingscript_func_mapfuncc                    | t         vrt        j                  j                  |       }t        j                  j                  |j                         t        d      D ]T  }t        j                  j                  |j                         t        j                  j                  |j                         V |t         | <   t         |    S )Nr+   )
r  torchjitscript_C_jit_pass_inlinegraphr   _jit_pass_peephole_jit_pass_constant_propagation)r  scripted_func_s      r   process_funcr    s    ?"		((.!!-"5"56q 	IAHH''(;(;<HH33M4G4GH	I !.4  r   operator_schemac                 (    t        |      t        | <   y r"   )r  r  )r  r  s     r   add_shape_compute_mappingr    s     4@3E0r   lower_bound_funcupper_bound_funcc                 B    t        |      t        |      f}|t        | <   y r"   )r  r  )r  r  r  fnss       r   add_bounded_compute_mappingr    s%     ()<8H+I
JC58!/2r   z^aten::contiguous(Tensor(a) self, *, MemoryFormat memory_format=contiguous_format) -> Tensor(a)zFaten::rsub.Tensor(Tensor self, Scalar other, Scalar alpha=1) -> Tensorz:aten::dropout(Tensor input, float p, bool train) -> TensorzDaten::adaptive_avg_pool2d(Tensor self, int[2] output_size) -> Tensorz,prim::NumToTensor.Scalar(Scalar a) -> Tensorz(prim::NumToTensor.bool(bool a) -> Tensorzuaten::zeros(int[] size, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)z{aten::to.dtype(Tensor(a) self, int dtype, bool non_blocking=False, bool copy=False, int? memory_format=None) -> (Tensor(a))zvaten::arange(Scalar end, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)zaten::arange.start(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorzaten::arange.start_step(Scalar start, Scalar end, Scalar step, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorz*aten::squeeze(Tensor(a) self) -> Tensor(a)z7aten::squeeze.dim(Tensor(a) self, int dim) -> Tensor(a)z:aten::squeeze.dims(Tensor(a) self, int[] dim) -> Tensor(a)z5aten::unsqueeze(Tensor(a) self, int dim) -> Tensor(a)zfaten::slice.Tensor(Tensor(a) self, int dim=0, int? start=None, int? end=None, int step=1) -> Tensor(a)zAaten::select.int(Tensor(a) self, int dim, int index) -> Tensor(a)z@aten::index_select(Tensor self, int dim, Tensor index) -> Tensorzaten::layer_norm(Tensor input, int[] normalized_shape, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enable=True) -> TensorzIaten::softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensorzhaten::_no_grad_embedding_renorm_(Tensor weight, Tensor input, float max_norm, float norm_type) -> Tensorzgaten::embedding_renorm_(Tensor(a!) self, Tensor indices, float max_norm, float norm_type) -> Tensor(a!)z~aten::embedding(Tensor weight, Tensor indices, int padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False) -> Tensorz,aten::mm(Tensor self, Tensor mat2) -> Tensorz/aten::dot(Tensor self, Tensor tensor) -> Tensorz+aten::mv(Tensor self, Tensor vec) -> Tensorz1aten::matmul(Tensor self, Tensor other) -> TensorzFaten::linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensorzaten::max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensorzaten::max_pool2d_with_indices(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor)z$aten::t(Tensor(a) self) -> Tensor(a)zDaten::transpose.int(Tensor(a) self, int dim0, int dim1) -> Tensor(a)zaten::conv1d(Tensor input, Tensor weight, Tensor? bias=None, int[1] stride=1, int[1] padding=0, int[1] dilation=1, int groups=1) -> Tensorzaten::conv2d(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] dilation=1, int groups=1) -> Tensorzaten::batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> Tensorzaten::conv3d(Tensor input, Tensor weight, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] dilation=1, int groups=1) -> Tensorzaten::convolution_backward(Tensor grad_output, Tensor input, Tensor weight, int[]? bias_sizes, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor)zaten::convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups) -> Tensorzaten::_convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensorzaten::conv_transpose2d.input(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] output_padding=0, int groups=1, int[2] dilation=1) -> TensorzVaten::flatten.using_ints(Tensor(a) self, int start_dim=0, int end_dim=-1) -> Tensor(a)z0aten::cat(Tensor[] tensors, int dim=0) -> Tensorz2aten::stack(Tensor[] tensors, int dim=0) -> Tensorz6aten::permute(Tensor(a) self, int[] dims) -> Tensor(a)zSaten::movedim.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a)z3aten::view(Tensor(a) self, int[] size) -> Tensor(a)z:aten::expand_as(Tensor(a) self, Tensor other) -> Tensor(a)zMaten::expand(Tensor(a) self, int[] size, *, bool implicit=False) -> Tensor(a)zaaten::mean.dim(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensorzhaten::sum.dim_IntList(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> TensorzZaten::max.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)z<aten::mean(Tensor self, *, ScalarType? dtype=None) -> Tensorz;aten::sum(Tensor self, *, ScalarType? dtype=None) -> Tensorz^aten::addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensorzbaten::upsample_nearest2d.vec(Tensor input, int[]? output_size, float[]? scale_factors) -> (Tensor)z_aten::quantize_per_tensor(Tensor self, float scale, int zero_point, ScalarType dtype) -> Tensorzraten::quantize_per_tensor.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, ScalarType dtype) -> Tensorz'aten::dequantize(Tensor self) -> TensorzNquantized::add(Tensor qa, Tensor qb, float scale, int zero_point) -> Tensor qczFaten::argmax(Tensor self, int? dim=None, bool keepdim=False) -> Tensorz-aten::bmm(Tensor self, Tensor mat2) -> Tensorz-aten::_shape_as_tensor(Tensor self) -> Tensorzraten::topk(Tensor self, int k, int dim=-1, bool largest=True, bool sorted=True) -> (Tensor values, Tensor indices)zaten::nll_loss_forward(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index) -> (Tensor output, Tensor total_weight)zaten::native_layer_norm(Tensor input, int[] normalized_shape, Tensor? weight, Tensor? bias, float eps) -> (Tensor, Tensor, Tensor)zaten::native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)zaten::_native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)zaten::_native_batch_norm_legit.no_stats(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)z_batch_norm_with_update(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor)zaten::cross_entropy_loss(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100, float label_smoothing=0.0) -> TensorzCaten::lerp.Tensor(Tensor self, Tensor end, Tensor weight) -> TensorzMaten::where.ScalarSelf(Tensor condition, Scalar self, Tensor other) -> TensorzQaten::add_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!)z&aten::nonzero(Tensor self) -> (Tensor))r=   FF)NNNNr   N)T)NF)r=   )Nr   ig        )frC  typingr   r   r   r   r   r   r	   r   floatnumberr  r   r%   r'   r0   r3   r7   r:   rB   rE   rK   rF   rP   boolrS   r^   r`   rd   ro   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r!  r&  r,  r3  r6  rY   r<  r   rE  rG  rI  rN  r\  ra  rd  rf  rj  rl  rn  rp  rr  r{  r  r  r  r  r  ScriptFunctionScriptFnr  str__annotations__r  r  r  r  r  rN   r   r   <module>r     s    D D D 
sEz	$ c tCy 0)tCy )T#Y )49 )49  c d3i d3i S	 S	 c tCy (c 49 ,DI d3i s 49 S T#Y .c /tCy /c / LQ $s) DI D 
s)'S	2>BHK,$s) #  s s   	
   6  	
   29 2 2 	 2 		 2
 	 2  2  2  2  2  2  2  2  2  2FC@9C@cC@ IC@ #Y	C@
 3iC@ C@L	9	c	 I	 #Y		
 3i	 	9$s)$ DK(>T#Y d3i d3i c T#Y T#Y $s) # d3i 	S	 	 	T#Y d3i  tCy s 49 " $I#Y  	
 
s)&.sm:B3-OR:4S	? 
S T#Y 3S	 3
A9
A"3i
A47
A@C
Ad3i s 0(4S	? ( (c  S (IDI (IS	 (IV	"DI 	"DI S  "$s) T#Y htCy6I +S	 +c +$s) +3 +s +d3i D 
9
s)
 49

 I	

 #Y
 3i
 
>S	c 49
 I	
 #Y 3i <T9TIT 49
T I	T
 #YT 3iT TT9TIT 49
T I	T
 #YT 3iT T9c999 I9 T#Y	9 !%"&#'*.$($9$I$ 49
$ T#Y	$
 d3i $ T#Y'$ $ tCy!$ 
#Y$N(9(I( 49
( I	(
 #Y( 3i( ( I( ( 
#Y(V9I 49
 I	
 #Y 3i  I      
#Y89T#Y 49
 49%	
 $s)$   
 "T9TIT 49
T I	T
 #YT 3iT T	 	C 	d 	3 
$s) !F !# !S ! !3 !
)))&))14)<?)GJ)222&,2472?B2JM2UX249 DI  $s)  T#Y  T#Y  4PS9  B49  s 4tCy &tCy &	DI 	C 	$ 	 AF1
s)1"3-19=1	#Y1'd3i 'tCy 'T#Y '49 c 	tCy 	S 	s 	E$s)T#Y:N4O 	)
s))!#Y)08c0C)PS)
49d3i )(
:9
:(,S	
:
49d3ic*+
:&9&T#Y& 49
& 49%	&
 $s)$& & 49d3ic*+&+9+T#Y+ 49
+ 49%	+
 $s)$+ 49d3icDI56+ #' 	
s)	I	 T#Y	 		
 	 	 
#Y	& 88""35 T#x-0 5FH tCx/A)B$BC H,.h() .!x !Fs F( F99,49HP9 d	 Le @% J 2O Do V {	  B	 |  Y  k F V =w @, ;Y l	 G F 9	
 OQV n	 m	  E H" M KS Q G L Mv V Lf  O  f @! D JI  Q
  Q
  v  Q
  v  m  w  z \ Lc R NPU V <g Y OQU V @& S g n ` BO A? d	 h e	 x	 CU K T Lf I3 O 35E x  R  I  {  @  I  z
  c I S W ,.ACVr   