
    '}h              	          d dl Z d dlZd dlmc mZ d dlmZmZm	Z	m
Z
mZmZmZ d dlmZmZmZ  e j(                  ej*                  d      Zd Z ed       e
j0                  dd	d
      ej2                  dKdej4                  fd                     Z ed       e
j0                  dd	d
      ej2                  dKdej4                  fd                     Z ed       e
j0                  ddd	      ej2                  dLdej4                  fd                     Z ed       e
j0                  ddd	d	      ej2                  dKdej4                  fd                     Z ed      ej2                  dKdej4                  fd              Z ed      ej2                  	 dKdej4                  fd              Z  ed      ej2                  	 dKdej4                  fd              Z! ed       e
j0                  ddd	d	      ej2                  	 dKdej4                  fd                     Z" ed       e
j0                  dd	d	      ej2                  dMdej4                  fd                     Z# ed      ej2                  dKdej4                  fd              Z$ ed       e
j0                  dddd	      ej2                  dNdej4                  fd                      Z% ed!       e
j0                  dddd	d	d	      ej2                  	 	 dOdej4                  fd"                     Z& ed#       e
j0                  dddd	d	      ej2                  	 	 dOdej4                  fd$                     Z'ej2                  d%        Z( ed& ed'd(      g)      ej2                  d*               Z) ed+      ej2                  dej4                  fd,              Z* ed-       e
j0                  dd	d	d	      ej2                  dKdej4                  fd.                     Z+ ed/      ej2                  dej4                  fd0              Z, ed1      ej2                  	 dPdej4                  fd2              Z- ed3       e
j0                  dd	d	d	      ej2                  dej4                  fd4                     Z. ed5      ej2                  dej4                  fd6              Z/ ed7      ej2                  dej4                  fd8              Z0 ed9      ej2                  dej4                  fd:              Z1 ed;      ej2                  dej4                  fd<              Z2 ed=      ej2                  dej4                  fd>              Z3 ed?      ej2                  dej4                  fd@              Z4 edA      ej2                  dej4                  fdB              Z5 edC      ej2                  dej4                  fdD              Z6 edE      ej2                  dej4                  fdF              Z7 edG      ej2                  dej4                  fdH              Z8 edI      ej2                  dej4                  fdJ              Z9y)Q    N)
_constants_type_utilserrorssymbolic_helpersymbolic_opset11symbolic_opset9utils)	_beartype	jit_utilsregistration   )opsetc                        fd}|S )z_Returns a decorator that calls the decorated (higher-order) function with the given parameters.c                      | i S N )fnargskwargss    Z/var/www/html/test/engine/venv/lib/python3.12/site-packages/torch/onnx/symbolic_opset13.py_applyz_apply_params.<locals>._apply   s    4"6""    r   )r   r   r   s   `` r   _apply_paramsr      s    # Mr   zaten::softmaxvinonegc                    | j                  d||      }|rm|j                         j                         dk7  rLt        j                  |dd      }| j                  d|t        j                  |      j                               }|S )NSoftmaxaxis_iprim::Constantr   dtypeCastto_iopnodekindr   
_get_constr   JitScalarType	onnx_type)r   inputdimr#   softmaxparsed_dtypes         r   r0   r0   !   s{     dd9eCd0G""$(88&11%gF$$G+";";L"I"S"S"U  
 Nr   zaten::log_softmaxc                    | j                  d||      }|rm|j                         j                         dk7  rLt        j                  |dd      }| j                  d|t        j                  |      j                               }|S )N
LogSoftmaxr    r"   r   r#   r$   r%   r'   )r   r.   r/   r#   	return_opr1   s         r   log_softmaxr5   /   s|     \55I""$(88&11%gFDDIK$=$=l$K$U$U$W  
	 r   zaten::frobenius_normc                    t        j                  |d      }t        j                  |      s"t        |      dk(  r| j	                  d|d      S | j	                  d||      }t        j
                  | |||      }| j	                  d|      S )Nisr   ReduceL2
keepdims_iMulSqrt)r   _maybe_get_const	_is_valuelenr(   _reducesum_helper)r   selfr/   keepdimdim_valsqrsumsqrs          r   frobenius_normrF   <   s}     ..sD9G$$W-#g,!2CttJt33
$$udD
!C..q#swOF44r   zaten::splitc                 |   t        j                  ||      s| j                  d|||      }||S t        j                  |      rt	        t        j
                  |            |k(  rt        j
                  |      D cg c]  }t        j                  | |dg       }}| j                  dt        j                  dgt        j                              }| j                  dt        j                  |gt        j                              }	g }
t        |      D ]>  }| j                  d|||         }|
j                  | j                  d||||	             |}@ |
S t        |      D cg c]J  }| j                  d	|| j                  dt        j                  |gt        j                                    L c}S t        j                  |j                         d
      }|j                         dkD  r| j                  d||||      S t        j                  |dd      }t        j                   ||      }||||z  }nt#        j$                  d|      |g||z  z  }||z  }|r|j                  |       | j                  dt        j                  |            }| j                  d||||      S c c}w c c}w )NSplitToSequencer    r   Constantr#   value_tAddSlice
SequenceAtvalueSplitr!   outputsr   
split_size$Unknown dimension size not supported)r   _is_split_staticr(   _is_packed_listr?   _unpack_list_unsqueeze_helpertorchtensorlongrangeappend	_node_getr)   r/   r+   _get_tensor_dim_sizer   SymbolicValueError)r   rA   split_size_or_sizesr/   _outputs	split_outr   split_sizesstartaxisresr   end	split_valrT   sizesplitsleftovers                     r   splitrn   H   s    ++,?JDD*D2EcDR	 ++,?@O001DEF(R )556IJ  11!Q<K 
 DDU\\1#UZZ-PDQE44
ELL#ejj,Q4RDC8_ dd5+a. 

144uc4@A J 8_
  DDZqc)LM
 	
  ))*=*B*B*DgNI}}ttGT#6sHtUU ++,?lSJ//c:D|(D++6  \TZ/0Fj HhTT*ell6&:T;F44vc84DDU
s   ?J4+AJ9zaten::split_with_sizesc                      t        | ||||      S r   rn   r   rA   re   r/   rc   s        r   split_with_sizesrr      s     D+sH55r   zaten::unsafe_splitc                      t        | ||||      S r   rp   )r   rA   rb   r/   rc   s        r   unsafe_splitrt      s    
 D-sH==r   zaten::unsafe_split_with_sizesc                      t        | ||||      S r   )rr   rq   s        r   unsafe_split_with_sizesrv      s    
 At[#x@@r   zaten::tensor_splitc                 t   | j                  dt        j                  |t        j                              }t	        j
                  | |d      }| j                  dt        j                  dt        j                              }t        j                  ||      rt        j                  |j                         d      }|j                         dkD  r| j                  dt        j                  dgt        j                              }g }	|J t        |dz
        D ]r  }
| j                  d|| j                  dt        j                  |
gt        j                              d      }|	j                  | j                  d	||||             |}t t        j                  | ||      }|	j                  | j                  d	||||             |	S t        j                  |d
d      }t        j                  ||      }||||z  }nt!        j"                  d|      ||z  }||z  }||dz   gz  }||z
  |gz  }| j                  dt        j                  ||z   t        j                              }| j                  d||||      S t        j$                  |      rt        j&                  |      dk(  rt        j                  | || j                  dt        j                  d                  }t	        j
                  | |d      }| j                  d|t(        j*                  j,                        }| j                  dt        j                  dgt        j                              }| j                  d||d      }| j                  d      }t/        j0                  | d|||dd      \  }\  }}|j2                  }t5        j6                  |      }t5        j6                  |      }t5        j6                  |      }|j                  d||d      }|j                  d||j                  d||      d      }|j                  d	||||      }|j                  d||      }|j                  d|      }t5        j8                  ||       t5        j8                  ||       |j                         j;                         }| j                  d|| j                  dt        j                  dt        j                              d      }t	        j
                  | |d      }t        j                  | ||      }| j                  d	||||      }| j                  d||      S t        j                  | ||      } | j                  d| |      }| j                  d||      }!| j                  d| |      }| j                  d|!|      }| j                  d|| j                  dt	        j
                  | |d      |            }| j                  d||d      }|| j                  d|||      S | j                  d||||      S )NrI   rJ   rK   r      rP   Gatherr    rN   r   indices_or_sectionsrU   rQ   rR   r$   r%   ConcatSequenceEmptyLoop)rS   n_blocksrM   SequenceInsertIdentityDivModTileSubrH   )r(   rZ   r[   r\   opset11	unsqueezer   rV   r_   r)   r/   r]   r^   _size_helperr+   r`   r   ra   
_is_tensor_get_tensor_rank_C_onnxTensorProtoDataTypeBOOLr   add_op_with_blocksblockr	   _add_input_to_block_add_output_to_blockoutput)"r   rA   rz   r/   rc   rg   const_1rj   rf   rh   r   ri   rT   rk   min_split_sizenum_splits_one_extrarl   rm   loop_lenloop_condition	padding_0final_splitslooploop_context_
loop_blockblock_input_itercondslicecond_outloop_out
last_slicedim_sizemin_split_size_plus_1s"                                     r   tensor_splitr      s    44
ELLEJJ$G4HDQa(Ddd:u||AUZZ'HdIG''(;XF#--.A.F.F.H'R	==?QDDU\\1#UZZ-PDQEC'''8a<( dd'DDU\\1#UZZ-PDQ	   

144uc4@A "..q$=CJJqttGT5#t<=J$//&;

 33D#><#!H,//:D  +#j0%!);(<<!55.9IIVh->ejj Q  
 ttGT6#xtHH 	""#67,,-@AQF"//"ADDU\\!_D$M
 $$Q!4fgG4O4O4T4TU DDU\\1#UZZ-PDQ	dd8Y8KTUdVttO,#,#?#?vxqST$
 o|q "''
 44Z@((400<)+;A   
 ooOOE#3W=	  
 uc4@#'7uM  ??:~>"":x8"":|<99;%%'DDU\\"EJJ%GDH	  
 !!!UA.**1dD9TT'4T:
tt$h
;; #//4>eX/BC !!

  !ttE85HIf35IJ44DD!!!%8!<$
 h;44)44DDttGT6#xtHHr   zaten::unbindc                    |J| j                  d|| j                  dt        j                  dt        j                              |d      S | j                  dt        j                  dg|z              }| j                  d||||	      }|dk(  r|gn|}|D cg c]:  }| j                  d
|| j                  dt        j                  |g                  < }}|S c c}w )NrH   rI   rx   rJ   rK   r   r!   r:   rQ   rR   Squeeze)r(   rZ   r[   r\   )r   rA   r/   rc   rl   rS   outsqueezed_outputss           r   unbindr   #  s     ttDDU\\!5::%FDG  
 	
 TT*ellA3>&BTCFdd7D&hdGG#q=wigG  	
YQTT*ellC56ITJK  	s   ?Czaten::nonzero_numpyc                 H    t        | t        j                  | |      d|      S )Nrx   )rc   )r   opset9nonzero)r   r.   rc   s      r   nonzero_numpyr   :  s      !V^^Au-q8DDr   zaten::wherec           
      T   t        j                  |      s,| j                  d|t        j                  j
                        }|Rt        j                  | |      }t        j                  | || j                  dt        j                  d            |      S | j                  d|||      S )Nr$   r%   rI   rx   rK   Where)r   _is_boolr(   r   r   r   r   r   _unbind_helperrZ   r[   )r   	conditionrA   otherrc   s        r   wherer   A  s    
 ##I.DD1L1L1Q1QDR	|NN1i0	--y!$$z5<<?$CX
 	
 44D%00r   z&aten::fake_quantize_per_channel_affinec                     ||fdvrt        j                  d| d| d|      |dk(  r-| j                  d|t        j                  j
                        }n,| j                  d|t        j                  j                        }| j                  d||||	      }||fd
k(  r[| j                  d|t        j                  |       | j                  dt        j                  dt        j                                    }| j                  d||||	      S )N)r      i   r   r   VFor (quant_min, quant_max), ONNX allows only (0, 127), (0, 255) and (-128, 127). Got (, )r   r$   r%   QuantizeLinearr    r   CliprI   r   rJ   rK   DequantizeLinear)r   ra   r(   r   r   UINT8INT8r   unusedrZ   r[   uint8)r   inputsscale
zero_pointrg   	quant_min	quant_max	quantizeds           r    fake_quantize_per_channel_affiner   P  s	    	9%FF'';b1.
 	
 A~TT&*73N3N3T3TTU
TT&*73N3N3S3STT
%vujNI9)DDMM!DDU\\#U[[%IDJ	
	 44"Iuj4NNr   z%aten::fake_quantize_per_tensor_affinec                    ||fdvrt        j                  d| d| d|      |dk(  r-| j                  d|t        j                  j
                        }n,| j                  d|t        j                  j                        }t        j                  j                  |t        j                  j                        t        j                  j                  k7  r,| j                  d|t        j                  j                        }| j                  d|||      }||fd	k(  r[| j                  d
|t        j                  |       | j                  dt        j                  dt        j                                     }| j                  d|||      S )Nr   r   r   r   r   r$   r%   r   r   r   rI   r   rJ   rK   r   )r   ra   r(   r   r   r   r   r   r,   
from_value	UNDEFINEDFLOATr   r   rZ   r[   r   )r   r   r   r   r   r   r   s          r   fake_quantize_per_tensor_affiner   t  sY    	9%FF'';b1.
 	

 A~TT&*73N3N3T3TTU
TT&*73N3N3S3STT
!!,,UK4M4M4W4WX$$**	+ VU)D)D)J)JK%vujAI9)DDMM!DDU\\#U[[%IDJ	
	 44"IujAAr   c                 :     t         j                  d fd	       }|S )Nc                     t        j                  | |      }|t        j                  | |      S t        j                  |dd      }| j                  |||      S )Nr   rB   r9   )r   _maybe_cast_reduce_op_inputr   _handle_reduce_dim_noner+   r(   )r   rA   r/   rB   onnx_op_names       r   symbolicz%_reduce_op_symbolic.<locals>.symbolic  sZ    11!T:;"::1dLQQ%00#yIG44dCG4DDr   NN)r
   beartype)r   r   s   ` r   _reduce_op_symbolicr     s$    E E Or   z	aten::sum	ReduceSumsum)decoratec                 x    t        |       t        j                  t        j                  fd              }|S )Nc                     t        j                  dd      t        j                  fd              }t        j                  dddd      t        j                  fd              }||fS )Nr   r   c                    d }|j                         j                         dk(  rOt        j                  |dd      }t	        j
                  |      j                         }| j                  d||      }n8|j                         j                         dk7  rt        j                  d|      S  | |      }|Ft        j
                  j                  |      j                         }||k7  r| j                  d||      }|S Nzonnx::Constantr   r#   r$   r%   r"   
r)   r*   r   r+   r   r,   r-   r(   _unimplementedr   )r   rA   r#   
dtype_onnxresultresult_dtype_onnxnamer   s         r   reduce_nodimz8_reduce_with_dtype.<locals>.reduce.<locals>.reduce_nodim  s     Jzz|  "&66'225#wG(66u=GGI
ttFDzt:""$(88&55dGUKKa&F%$/$=$=$H$H%)+ " %
2TT&&zTBFMr   r   c                    d }|j                         j                         dk(  rOt        j                  |dd      }t	        j
                  |      j                         }| j                  d||      }n8|j                         j                         dk7  rt        j                  d|      S  	| |||      }|Ft        j
                  j                  |      j                         }||k7  r| j                  d||      }|S r   r   )
r   rA   r/   rB   r#   r   r   r   r   r   s
           r   
reduce_dimz6_reduce_with_dtype.<locals>.reduce.<locals>.reduce_dim  s     Jzz|  "&66'225#wG(66u=GGI
ttFDzt:""$(88&55dGUKKasG4F%$/$=$=$H$H%)+ " %
2TT&&zTBFMr   )r   
parse_argsr
   r   )r   r   r   r   r   r   r   s        r   reducez"_reduce_with_dtype.<locals>.reduce  sr     
	#	#C	0				 
 
1	" 
	#	#Cc6	:				 
 
;	" Z''r   )r   r   overload_by_arg_countr
   r   )onnx_opr   r   r   s    ` @r   _reduce_with_dtyper     s=     #7+H!!'(  "'(R Mr   zaten::unflattenc                    t        j                  |      }|t        j                  dd      S | j                  dt	        j
                  |gt        j                              }| j                  d||      }| j                  d||      }| j                  d|      }| j                  dt	        j
                  d	gt        j                              }| j                  d
|| j                  dt	        j
                  dgt        j                                    }| j                  d|||      }| j                  d|| j                  dt	        j
                  dgt        j                                    }	| j                  d
|	| j                  dt	        j
                  dgt        j                                    }
| j                  dt	        j
                  t        j                  gt        j                              }| j                  d||
|      }| j                  d|||d	      }t        j                  | ||      S )Nr/   zfONNX and PyTorch use different strategies to split the input. Input rank must be known at export time.rI   rJ   rK   rM   r   Shaper   Reshaperx   rN   r{   r    )
r   r   r   r(   rZ   r[   int64r   	INT64_MAX_reshape_helper)r   r.   r/   unflattened_size	input_dim
input_sizehead_start_idxhead_end_idxhead_part_rankdim_plus_onetail_start_idxtail_end_idxtail_part_rankfinal_shapes                 r   	unflattenr    s     007I--7
 	
 Zyk)UVI
$$ui
%C
$$uc9
%Cgu%JTT*ellA3ekk.RTSN443Zqc1UVL TT':~|LN44sADDU\\1#U[[-QDRL TT	Zqc!EFN
 44ELL**>*>)?u{{S  L TT':~|LN$$."2N1  K **1e[AAr   zaten::unsafe_chunkc                    |J| j                  d|| j                  dt        j                  dt        j                              |d      S t	        j
                  ||      }|t	        j                  dd	      S ||z   dz
  |z  }|g||z  z  }||z  }|r|j                  |       | j                  dt        j                  |t        j                              }| j                  d
||||      S )NrH   rI   rx   rJ   rK   r   r   unsafe_chunkzunknown dimension sizerQ   rR   )r(   rZ   r[   r\   r   r`   r   r^   )	r   rA   chunksr/   rc   rk   rT   rl   rm   s	            r   r  r    s     ttDDU\\!5::%FDG  
 	
 //c:D|--n>VWW-!#.J\TZ/0Fj Hh
 TT*ell6&LTMF44vc84DDr   z
aten::tilec                    | j                  d|      }| j                  d|      }| j                  d|      }| j                  d||      }| j                  dt        j                  dg            }| j                  d||      }t        j                  | d|d	d
      \  }	\  }
}}|
j                  dt        j
                  d
g            }|
j                  d||      }|
j                  d||      }|
j                  d||d      }t        j                  |
j                  |       |j                  d|      }t        j                  |j                  |       |	j                         j                         }| j                  d||      }t        j                  | d|d	d
      \  }\  }}}|j                  dt        j
                  d
g            }|j                  d|j                  d|      |      }|j                  d||      }|j                  d||d      }|j                  d||      }t        j                  |j                  |       |j                  d|      }t        j                  |j                  |       |j                         j                         }| j                  d|t        j                  j                        }| j                  d||      S )Nr   Sizer   rI   r   rK   GreaterIf   rx   )r~   rS   r   Expandr{   r    r   LessAbsr$   r%   r   )r(   rZ   r[   r   r   
LongTensorr	   r   r   r)   r   r   r   INT64)r   rA   dims
self_shape	self_rank	dims_rankdiff
const_zerodims_shorter_than_self_shapeif_op_greaterif_context_greaterelse_context_greaterr   	const_onediff_1d_greaterexapnd_ones_greaterdims_identity_dim
dims_finaldims_longer_than_self_shape
if_op_lessif_context_lesselse_context_lessdiff_1d_lessexapnd_ones_lessself_final_shapeself_identity_self
self_finals                                r   tiler+  ,  s    gt$JVZ(IVT"I44y),Dj%,,s*;<J $%44	4#D 
 	$$	4-1		2	1	 #%%j%:J:JA3:O%PI(++ItYGO,//)_U!!(,?a!PE	177?'**:t<L	399<H##%,,.J #$$$vtZ"@
 	$$	4,q!		,+	  "":u7G7G7L"MI"%%5$'L
 '))(I|L&))"Jq *  y$0@AE	44e<%((T:M	066F"))+Jfjw/J/J/P/PQJ44
J//r   zaten::repeat_interleavec           
      
   t        j                  |      }t        j                  |      }t        j                  |      }|t        j                  d|      |t        j                  d|      |t        j                  d|      |}t        j
                  |      rbt        j                  | || j                  dt        j                  dg                  }t        j                  dt        j                        }nt        j                  |      }|dk  r|t        |      z  }|j                         }	t        |      D ]  \  }
}|	d	\  |	|
<   ||
<    |dk(  s|d
k(  r |d   d
k(  rt        j                  | |||      S |d
k(  xr |d   d u }|	|   dk(  s|rt        j                   | ||      }t#        j$                  | |d      }|rt        j                   | || j                  dt        j&                  dg                  }| j                  d|| j                  dt        j&                  d
g                  }t)        | || j                  d||      |      }nt+        j,                  | |||      S | j                  d| j                  d|      t        j                  d
gt        j.                              }t1        | ||d      }t1        | |||      }d\  |	|<   ||<   | j                  dt        j                  d
            }| j                  d|t2        j4                  j6                        }|}| j                  d      }t9        j:                  | d|||d
      \  }\  }}|j<                  }t?        j@                  |      }t?        j@                  |      }t?        j@                  |      }|j                  d||      }|j                  d||      }t#        j$                  |||d
z         }|j                  dt        j&                  |d |d
z                ||j                  dt        j&                  ||d
z   d              g} |j                  dg|ddi}t+        jB                  |||d       }t        j                  ||| j                  dt        j&                  |	                  }|j                  d||      }|j                  d|t2        j4                  j6                        }t?        jD                  ||       t?        jD                  ||       |jG                         jI                         } | j                  d| |      } | S )NzGUnsupported: ONNX export of repeat_interleave for unknown repeats rank.zGUnsupported: ONNX export of repeat_interleave for unknown repeats size.zEUnsupported: ONNX export of repeat_interleave for unknown input size.rI   r   rK   r   rJ   )r   r   rx   Equalr  ConstantOfShaper   )r   rx   r$   r%   r|   r}   r~   rO   r{   r!   r   ConcatFromSequencer    )%r   r   _get_tensor_sizesr   ra   _is_noner   r(   rZ   r[   r   _maybe_get_scalarr?   copy	enumerate-_repeat_interleave_single_value_repeat_helperr   r   r   r  r   r   repeat_interleaver\   rn   r   r   r   r   r   r   r	   r   expandr   r)   r   )!r   rA   repeatsr/   output_sizerepeats_dimrepeats_sizesinput_sizes	final_dimoutput_sizesidxr   cond_dynamic_repeatsreps
repeat_dimrepeat_cond	reps_liker_splitsi_splitsr   r   r   r   r   r   r   r   r   r_spliti_splitr_concatr   r   s!                                    r   r7  r7  d  s,   
 "227;K#55g>M!33D9K''U
 	
 ''U
 	
 ''S
 	

 I $..tQTT*ellB4.@TA
 ll1EKK0//4 Qws;##%L$[1 8Z27/L{3/8
 aK1,q1AQ1FLLtWc
 	
 '!+Ha0@D0HCA!5++AtS9  D!,
  (557ADDU5E5Eqc5JDKJ $$QTT*e>N>NPQs>ST%TK A{ADD7D,I7SG ''4)DD	WgaS

3  I
 QA.HQi-H*/'L{3' TT*ell1oT>NTT&.w7R7R7W7WTXNH 44(L  );;	68^\A D/<1 ##J00<$$Z0D,,Z8LoolH6FGGoolH6FGGgsQw?G
E,<,<[3QR7=S,TU
E,<,<[q=S,TUH
 |x=(=1=HmmL'8TBG--gqttJ8H8H8VtWG  ??#3\7KL W%@%@%E%E  H 
z84	z<8yy{!!#Htt((3t?HOr   zaten::diagonalc                 	   t        j                  |      }||dk\  r|n||z   }|dk\  r|n||z   }t        j                  | || j	                  dt        j                  |g                  }t        j                  | || j	                  dt        j                  |g                  }| j	                  d||d      }t        j                  | |d d d       }	| j	                  d|	|      }	|Pt        t        |            }
|
j                  |       |
j                  |       | j	                  d	||
||gz   
      }nt        j                  dd      S | j	                  d||	      }t        j                  | |dgd      }| j	                  dt        j                  |g            }|dk\  r]| j	                  d| j	                  d|| j	                  d||            | j	                  dt        j                  dg                  }d}nZ| j	                  d| j	                  d| j	                  d||      |      | j	                  dt        j                  dg                  }| j	                  d|d      }t        j                  | |dd d       }| j	                  d|| j	                  dt        j                  dg                  }| j	                  d|| j	                  dt        j                  t        |      dz
  g                  }t        t        |            d d D cg c]?  }t        j                  | || j	                  dt        j                  |g                  A }}|j                  |        | j                  dg|ddi}t        j                  | |dd d       }| j	                  d| j	                  d|| j	                  dt        j                   dt
        j"                                          }t%        j&                  | d|d      \  }\  }}}|j	                  d||      }t        j(                  |||dz
  g      }|j	                  d|||dz
         }t        j                  ||d!d d       }t+        j,                  |j.                  |       t+        j,                  |j.                  |       |S c c}w )"Nr   rI   rK   )r/   r{   r    EyeLike)k_i	Transpose)perm_idiagonalzunknown input rankr;   r   )axes_ir:   MaxMinr   rM      CumSumrx   r!   Notr-  rJ   r
  r  r/  GatherND)batch_dims_i   )r   r   r   rk   r(   rZ   r  zeroslistr]   remover   r@   onesabsr^   r[   r   r   r   rY   r	   r   r   )r   rA   offsetdim1dim2rank	dim1_size	dim2_size
mask_shapemaskaxesr   	offset_op	diag_sizeselect_window_ones_fillselect_windowrg   gather_shapegather_indicesoverrun_condif_op
if_contextelse_contextr   gather_indices_if_blockfinal_non_overrunfinal_overruns                              r   rP  rP    st    ++D1DqytdTkqytdTk	4QTT*e.>.>v.FTGI 	4QTT*e.>.>v.FTGI h	9Q?J<<:tT48D44	4V4,D E$K DDttKddD\.AtB--j:NOO TT%t$F..q&"RSTF
 Z)9)96()CDI{DDDD	144y)#DEDDU%5%5qc%:D;
	
 DDDDUIy99EDDU%5%5qc%:D;
	
 Xy3I %kk!Y4FDD	Z!1!11#!67M
 DD	Z!1!13v;?2C!DEM t%cr* 	Av144
E<L<LdV<T4#UVL  	"144:<::L\\!\1dDAN 44	DDU\\!5;;%GDH	
L ,5+G+G	4,(E%Jq )mmE>=Q-??+dQhZ #F3$( &  LL|QdKM	z//1BC	|11=ALSs   &ASzquantized::linearc                 6   t        j                  | |      \  }}}}t        j                  | |      \  }	}
}}t        j                  | |||
|      }t        j                  | |      \  }}}}t        j                  | ||	|      }t        j
                  | |||      S r   )r   dequantize_helperrequantize_bias_helperr   linearquantize_helperr   q_inputq_weightbiasop_scaleop_zero_pointr.   input_scaler   weightweight_scalerg   q_biasr   s                 r   quantized_linearr  n  s    
  /@@GLE;1$3$E$Ea$R!FL!T33	4lDF $55a@MD!Q]]1eVT2F**1fhNNr   zquantized::linear_reluc                 b   t        j                  | |      \  }}}}t        j                  | |      \  }	}
}}t        j                  | |||
|      }t        j                  | |      \  }}}}t        j                  | ||	|      }t        j
                  | |      }t        j                  | |||      S r   )r   rw  rx  r   ry  relurz  r{  s                 r   quantized_linear_relur    s    
  /@@GLE;1$3$E$Ea$R!FL!T33	4lDF $55a@MD!Q]]1eVT2F[[F#F**1fhNNr   zquantized::conv1d_reluc
           
      j   t        j                  | |      \  }
}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | |
||||||      }t        j
                  | |      }t        j                  | |||	      S r   )r   rw  rx  r   conv1dr  rz  r   r|  r}  r~  stridepaddingdilationgroupsr  r  r.   r  r   r  r  rg   r  r   s                     r   quantized_conv1d_relur          /@@GLE;1$3$E$Ea$R!FL!T33	4lDF $55a@MD!Q]]1eVT67HfUF[[F#F**1fhNNr   zquantized::conv2d_reluc
           
      j   t        j                  | |      \  }
}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | |
||||||      }t        j
                  | |      }t        j                  | |||	      S r   )r   rw  rx  r   conv2dr  rz  r  s                     r   quantized_conv2d_relur    r  r   zquantized::conv3d_reluc
           
      j   t        j                  | |      \  }
}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | |
||||||      }t        j
                  | |      }t        j                  | |||	      S r   )r   rw  rx  r   conv3dr  rz  r  s                     r   quantized_conv3d_relur    r  r   zquantized::conv1dc
           
      >   t        j                  | |      \  }
}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | |
||||||      }t        j
                  | |||	      S r   )r   rw  rx  r   r  rz  r  s                     r   quantized_conv1dr          /@@GLE;1$3$E$Ea$R!FL!T33	4lDF $55a@MD!Q]]1eVT67HfUF**1fhNNr   zquantized::conv2dc
           
      >   t        j                  | |      \  }
}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | |
||||||      }t        j
                  | |||	      S r   )r   rw  rx  r   r  rz  r  s                     r   quantized_conv2dr    r  r   zquantized::conv3dc
           
      >   t        j                  | |      \  }
}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | |
||||||      }t        j
                  | |||	      S r   )r   rw  rx  r   r  rz  r  s                     r   quantized_conv3dr    r  r   zquantized::conv_transpose1dc                 @   t        j                  | |      \  }}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | ||||||||	      }t        j
                  | ||	|
      S r   r   rw  rx  r   conv_transpose2drz  r   r|  r}  r~  r  r  output_paddingr  r  r  r  r.   r  r   r  r  rg   r  r   s                      r   quantized_conv_transpose1dr  0        /@@GLE;1$3$E$Ea$R!FL!T33	4lDF $55a@MD!Q$$	5&$F **1fhNNr   zquantized::conv_transpose2dc                 @   t        j                  | |      \  }}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | ||||||||	      }t        j
                  | ||	|
      S r   r  r  s                      r   quantized_conv_transpose2dr  M  r  r   zquantized::conv_transpose3dc                 @   t        j                  | |      \  }}}}t        j                  | |      \  }}}}t        j                  | ||||      }t        j                  | |      \  }}}}t        j                  | ||||||||	      }t        j
                  | ||	|
      S r   )r   rw  rx  r   conv_transpose3drz  r  s                      r   quantized_conv_transpose3dr  j  r  r   r   )NF)r   N)NNNr   r   ):	functoolsrZ   torch._C._onnx_C_onnxr   
torch.onnxr   r   r   r   r   r   r   r   r	   torch.onnx._internalr
   r   r   partialonnx_symbolic_onnx_symbolicr   r   r   GraphContextr0   r5   rF   rn   rr   rt   rv   r   r   r   r   r   r   r   r   r  r  r+  r7  rP  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s:  
         D C #""<#=#=RH  Cf-
y%%   . ! #$Cf-
9))   . % &'Cc*
 i,,    + (  Cc3/
4EY## 4E  0 4En ()
6	.. 6  *6 $%
HL>>  &> /0
@DAA  1A $%Cc3/
HLEIEI  0 &EIP Cc*
i$$   +  ( %&
EY++ E  'E Cc3/
	1Y## 	1  0 	1 89Cc3S9
 OO  : :OB 78Cc34
 !B!B  5 9!BH   K/0 . 	
.h !"
'B'' 'B  #'BT $%Cc3/
EI** E  0 &E4 
30I"" 30  30l )*
DHII  +IX  !Cc3/
s	&& s  0 "sr #$
OO  %O ()
OO  *O  ()
OO  *O2 ()
OO  *O2 ()
OO  *O2 #$
OO  %O0 #$
OO  %O0 #$
OO  %O0 -.
OO  /O6 -.
OO  /O6 -.
OO  /Or   