
    JTho                   Y   S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKJ	r	J
r
  SSKJr  SSKrSSKJs  Jr  SSKrSSKrSSKJr  SSKJrJrJrJr  SSKJr  SS	KJrJr  \
(       a  SS
KJr  SSKJ r   / SQr!\RD                  " \RF                  SS9r$GSS jr%S r&\$" S5      GSS j5       r'\$" S5      GSS j5       r(\$" S5      \RR                  " S5      GSS j5       5       r*\$" S5      \RR                  " S5      GSS j5       5       r+\$" S5      GSGSS jj5       r,\$" S5      GSGSS jj5       r-\$" S5      GSGSS jj5       r.\$" S 5      GSS! j5       r/\$" S"5      GSS# j5       r0\$" S$5      \Rb                  " S%S%S%S&5      GSGSS' jj5       5       r2\Rb                  " S%S%S(5      GSS) j5       r3GSS* jr4GSS+ jr5\$" S,5      GSS- j5       r6\$" S.5      GSS/ j5       r7\$" S05      GSS1 j5       r8\$" S25      GSS3 j5       r9\$" S45      \Rb                  " S%S55      GSS6 j5       5       r:\$" S75      \Rb                  " S%S55      GSS8 j5       5       r;\$" S95      GSS: j5       r<\$" S;5      GSS< j5       r=\$" S=5      GSS> j5       r>\$" S?5      GSS@ j5       r?\$" SA5      \Rb                  " S%S%S%SBSB5      GSSC j5       5       r@\$" SD5      GSSE j5       rA\$" SF5      GSSG j5       rB\$" SH5      GSSI j5       rC\$" SJ5      \RR                  " SSKSLSM9GSSN j5       5       rD\$" SO5      GSSP j5       rE\$" SQ5      GSSR j5       rF\$" SS5      GSST j5       rG\$" SU5      GSSV j5       rH\$" SW5      GSSX j5       rI\$" SY5      GSSZ j5       rJ\$" S[5      GSS\ j5       rK\$" S]5      \RR                  " SS^SSM9GSS_ j5       5       rL\$" S`5      GSSa j5       rM\RR                  " S5      GSSb j5       rN\$" Sc\R                  " SdSe5      /Sf9\$" Sg\R                  " ShSi5      /Sf9\$" Sj\R                  " SkSlSmSn9/Sf9GSGSSo jj5       5       5       rP\$" Sp5      \Rb                  " S%S5Sq5      GSSr j5       5       rQ\$" Ss5      GSSt j5       rR\$" Su5      GSSv j5       rS\$" Sw5      GSSx j5       rT\$" Sy5      \RR                  " S5      GSSz j5       5       rU\$" S{5      \RR                  " S5      GSS| j5       5       rV\$" S}5      \RR                  " S5      GSS~ j5       5       rW\$" S5      \RR                  " SS5      GSS j5       5       rX\$" S5      \RR                  " S5      \Rb                  " S%S%S5SS%5        GSS j5       5       5       rY\$" S5      \RR                  " S5      \Rb                  " S%S%S%S5S5S5S%S5S55	        GSS j5       5       5       rZ\$" S5      \RR                  " SSmS9GSGSS jj5       5       r[\$" S5      \RR                  " S5      \Rb                  " S%S5S55      GSS j5       5       5       r\\$" S5      \Rb                  " S%S5      GSS j5       5       r]\$" S5      \RR                  " S5      GSS j5       5       r^\$" S5      GSS j5       r_\$" S5      \Rb                  " S%S5S5S55      GSGSS jj5       5       r`\$" S5      \Rb                  " S%S%S5S55      GSGSS jj5       5       ra\$" S5       GS GSS jj5       rb\$" S5      \Rb                  " S%SS5S55      GSGSS jj5       5       rc\$" S5       GS GSS jj5       rd\$" S5      \Rb                  " S%S5S55      GSGSS jj5       5       re\$" S5      \RR                  " S5      \Rb                  " S%S5S%5      GSS j5       5       5       rf\$" S5      GSS j5       rg\$" S5      GSGSS jj5       rh\$" S5      GSS j5       ri\$" S5      GSS j5       rj\$" S5      GSS j5       rk\$" S5      \RR                  " S5      GSS j5       5       rl\$" S5      \RR                  " S5      GSS j5       5       rm\$" S5      GSS j5       rn\$" S5      GSS j5       ro\$" S5      GSS j5       rp\$" S5      \Rb                  " S%SBSB5      GSS j5       5       rq\$" S5      \RR                  " S5      \Rb                  " S%S&S5       GS       GSS jj5       5       5       rr\$" S5      \Rb                  " S%S55      GSS j5       5       rs\$" S5      \Rb                  " S%S5Sq5      GSGSS jj5       5       rt\$" S5      GSS j5       ru\$" S5      S 5       rv\$" S\R                  " S\R                  R                  R                  R                  SSmS9\%" S5      /Sf9\$" S\R                  " S\R                  R                  R                  R                  SSmS9\%" S5      /Sf9\$" S\R                  " S\R                  R                  R                  R                  SSmS9\%" S5      /Sf9S 5       5       5       r}\$" S5      " \}" S\R                  R                  R                  R                  SSS95      r~\$" S5      " \}" S\R                  R                  R                  R                  SSS95      r\$" S5      " \}" S\R                  R                  R                  R                  SSS95      r\$" S\R                  " S\R                  R                  R                  R                  5      \%" S5      /Sf9\$" S\R                  " S\R                  R                  R                  R                  5      \%" S5      /Sf9\$" S\R                  " S\R                  R                  R                  R                  5      \%" S5      /Sf9S 5       5       5       r\$" S\R                  " SS\R                  R                  R                  R                  5      \%" S5      /Sf9\$" S\R                  " SS\R                  R                  R                  R                  5      \%" S5      /Sf9\$" S\R                  " SS\R                  R                  R                  R                  5      \%" S5      /Sf9\$" S\R                  " SS\R                  R                  R                  R                  \~5      \%" S5      /Sf9\$" S\R                  " SS\R                  R                  R                  R                  \5      \%" S5      /Sf9\$" S\R                  " SS\R                  R                  R                  R                  \5      \%" S5      /Sf9GSS j5       5       5       5       5       5       rGSS jrS r\$" S5      GSS j5       rGSS jr\$" S5      \$" S5      \$" S5      GSS j5       5       5       r\$" S5      \$" S5      \$" S5      GSS j5       5       5       r\$" S5                GSS j5       r\$" S\R                  " SSS5      \%" S5      /Sf9\$" S\R                  " SSS5      \%" S5      /Sf9\$" S\R                  " SSS5      \%" S5      /Sf9\$" S\R                  " GS SGS5      \%" GS 5      /Sf9\$" GS\R                  " GSSGS5      \%" GS5      /Sf9\$" GS\R                  " GSSGS5      \%" GS5      /Sf9GSGS j5       5       5       5       5       5       r\$" GS5        GSGS j5       r\$" GS	5      GSGS
 j5       r\$" GS5      GS 5       rGS rGSGS jr\$" GS5      GSGS j5       r\$" GS5      \RR                  " SS5      GSGS j5       5       r\$" GS5      \RR                  " SS5      \GSGS j5       5       5       r\$" GS5      \RR                  " SS5      GSGS j5       5       rGSGS jr\$" GS5      \RR                  " SS5      GSGS j5       5       rGSGS jr\$" GS5      \RR                  " SS5      \GSGS j5       5       5       r\$" GS5      \RR                  " SS5      \GSGS j5       5       5       r\$" GS5      GSGS  j5       r\$" GS!5      GSGS" j5       r\$" GS#5      GSGS$ j5       r\$" GS%5      \" GS&5      GSGS' j5       5       r\$" GS(5      \" GS&5      GSGS) j5       5       r\$" GS*5      \" GS&5      GSGS+ j5       5       r\$" GS,5      GSGS- j5       r\$" GS.5      GSGS/ j5       r\$" GS05      GSGS1 j5       r\$" GS25      \Rb                  " S%S%S%S55      GSGSGS3 jj5       5       r\$" GS45      \Rb                  " S%S5Sq5      GSGSGS5 jj5       5       r\$" GS65      \Rb                  " S%S5S55      GSGS7 j5       5       r\$" GS85      \Rb                  " S%S%S%SSSS5SS5S5S5S5S55       GS GSGS9 jj5       5       r\$" GS:5      \Rb                  " S%S%S%SS(SS55        GSGS; j5       5       r\$" GS<5      \Rb                  " S%S%S%SSSS5SS55	        GSGS= j5       5       r\$" GS>5      \Rb                  " S%S%S%SS%SS55        GSGS? j5       5       r\$" GS@5      \Rb                  " S%S%S%SS%SS55        GSGSA j5       5       r\$" GSB5      \Rb                  " S%S%S%SS%SS55        GSGSC j5       5       r\$" GSD5      \Rb                  " S%S%S%SSSS5S5        GSGSE j5       5       r\$" GSF5      \Rb                  " S%S%S%SSSS5S5        GSGSG j5       5       r\$" GSH5      \Rb                  " S%S%S%SSSS5S5        GSGSI j5       5       r\$" GSJ5      \Rb                  " S%S%S%S%S%S5S&S&S55	        GSGSK j5       5       r\$" GSL5      \RR                  " SSmSmSm5      \Rb                  " S%SS%S%S&5                    GSGSM j5       5       5       r\$" GSN5      \RR                  " SSmSmSm5      \Rb                  " S%SS%S%S&S5                      GSGSO j5       5       5       r\$" GSP5      \Rb                  " S%S%S%S%S%SS&S&S5	                GSGSQ j5       5       r\$" GSR5      \Rb                  " S%S5S5S55      GSGSS j5       5       r\$" GST5      \RR                  " S5      \Rb                  " S%SBSBSB5      GSGSU j5       5       5       r\$" GSV5      \RR                  " S5      GSGSW j5       5       r\$" GSX5      \Rb                  " S%S5S%5      GSGSY j5       5       r\$" GSZ5      GSGS[ j5       r\$" GS\5      GSGS] j5       r\$" GS^5      GSGS_ j5       r\$" GS`5      \Rb                  " S%S%SS5       GS GSGSa jj5       5       r\$" GSb5      GSGSc j5       r\$" GSd5      \Rb                  " S%S%S5S&5      GSGSe j5       5       r\$" GSf5      GSGSg j5       r\$" GSh5      GSGSi j5       r\$" GSj5      GSGSk j5       r\$" GSl5      GSGSm j5       r\$" GSn5      GSGSo j5       r\$" GSp5      GSGSq j5       r\$" GSr5      GSGSs j5       r\$" GSt5      GSGSu j5       r\$" GSv5      \Rb                  " S%S%5      GSGSw j5       5       r\$" GSx5      \Rb                  " S%S%5      GSGSy j5       5       r\$" GSz5      GSGSGS{ jj5       r\$" GS|5      \RR                  " SS5      GSGS} j5       5       r\$" GS~5      GSGSGS jj5       r\$" GS5      \RR                  " SS5      GSGS j5       5       r\$" GS5      \RR                  " S5      \Rb                  " S%SS55      GSGS j5       5       5       r\$" GS5      \RR                  " S5      \Rb                  " S%SS55      GSGS j5       5       5       r\$" GS5      \RR                  " S5      \Rb                  " S%S%S55      GSGS j5       5       5       r\$" GS5      GSGS j5       r\$" GS5      \$" GS5      \Rb                  " S%S&S55      GSGS j5       5       5       r\$" GS\R                  " GS5      /Sf9\$" GS\R                  " GS5      /Sf9\$" GS\R                  " GS5      /Sf9\$" GS\R                  " GS5      /Sf9\$" GS\R                  " GS5      /Sf9\$" GS\R                  " GS5      /Sf9GSGS j5       5       5       5       5       5       r\$" GS5      \Rb                  " S%SBSS5S%5      GSGSGS jj5       5       r\$" GS5      \Rb                  " S%S%S%S55      GSGS j5       5       r\$" GS5      \Rb                  " S%S5S55      GSGS j5       5       r\$" GS5      \Rb                  " S%S5S5S55      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \" GS5      GSGS j5       5       r\$" GS5      \Rb                  " S%S5S%S%S%S%5        GS GSGS jj5       5       r\$" GS5      \Rb                  " S%S5S%S%S%S%5           GS GSGS jj5       5       r\$" GS5       GS GSGS jj5       r\$" GS5      GSGS j5       r\$" GS5       GS GSGS jj5       r\$" GS5      GSGSGS jj5       r\$" GS5      \Rb                  " S%S5S%S%S%5      GSGSGS jj5       5       r\$" GS5      \Rb                  " S%S5S%S%S%S%5           GS GSGS jj5       5       r\$" GS5       GS GSGS jj5       r\$" GS5      GSGS j5       r\$" GS5      \Rb                  " S%S5S%S%S%5      GSGSGS jj5       5       r\$" GS5      \Rb                  " S%S5S%S%S%S%5           GS GSGS jj5       5       r\$" GS5       GS GSGS jj5       r\$" GS5       GS GSGS jj5       r\$" GS5           GS GSGS jj5       r\$" GS5       GS GSGS jj5       r\$" GS5      GSGS j5       r\$" GS5      GSGS j5       r\$" GS5      \RR                  " S5      \Rb                  " S%S&S&5      GSGS j5       5       5       r\$" GS5      \RR                  " S5      \Rb                  " S%5      GSGS j5       5       5       r\$" GS5      \RR                  " SS^SSM9\Rb                  " S%5      GSGS j5       5       5       r\$" GS5      \Rb                  " S%5      GSGS j5       5       r\$" GS5      \Rb                  " S%S&5      GSGS j5       5       r\$" GS5      \Rb                  " S%S&5      GSGS j5       5       r\$" GS5      GSGS j5       r\$" GS5      \Rb                  " S%S55      GSGS j5       5       r\$" GS5      \Rb                  " S%S5S5Sq5      GSGSGS jj5       5       r\$" GS5      GSGS j5       r\$" GS5      \Rb                  " S%S5S5S5S5Sq5      GSGSGS jj5       5       r\$" GS5      GSGS j5       r\$" GS5      GSGS j5       r\$" GS5      GSGS j5       r\$" GS5       GS GSGS jj5       r\$" GS5      \Rb                  " S%S55      GSGS j5       5       r\$" GS5      \Rb                  " S%S55      GSGS j5       5       r  GS GSGS jjGr \Rb                  " S%S%S%S5S5S&S5S5S55	        GSGS j5       Gr\Rb                  " S%S%S%S%S5S5S&S5S55	        GSGS j5       Gr\$" GS5      GSGS j5       Gr\$" GS5      GSGS j5       Gr\$" GS\R                  " GS5      \%" GS5      /Sf9\$" GS\R                  " GS 5      \%" GS5      /Sf9\$" GS\R                  " GS5      \%" GS5      /Sf9GSGS j5       5       5       Gr\$" GS5      \Rb                  " S%S55      GSGS j5       5       Gr\$" GS5      GSGS	 j5       Gr\$" GS
5      \Rb                  " S%S55      GSGS j5       5       Gr\$" GS5      \Rb                  " S%S%S55      GSGS j5       5       Gr	\$" GS5      \Rb                  " S%S%S5SBS%5        GSGS j5       5       Gr
\$" GS5      GSGS j5       Gr\$" GS5      GSGS j5       Gr\$" GS5      GSGS j5       Gr\$" GS5      GSGS j5       Gr\$" GS5          GS GSGS jj5       Gr\$" GS5          GS GSGS jj5       Gr\$" GS5      \Rb                  " S%S&S&S5Sq5      GSGS j5       5       Gr\$" GS5      GSGSGS jj5       Gr\$" GS 5      \Rb                  " S%5      GSGS! j5       5       Gr\$" GS"5      \Rb                  " S%5      GSGS# j5       5       Gr\$" GS$5      \RR                  " SSmSm5      \Rb                  " S%S5S55      GSGS% j5       5       5       Gr\$" GS&5      \Rb                  " S%5      GSGS' j5       5       Gr\$" GS(5      GSGSGS) jj5       Gr\$" GS*5      \Rb                  " S%5      GSGS+ j5       5       Gr\$" GS,5      GSGS- j5       Gr\$" GS.5      GSGS/ j5       Gr\$" GS05      \Rb                  " S%S5S5S55      GSGS1 j5       5       Gr\$" GS25      \Rb                  " S%S%S5              GSGS3 j5       5       Gr\$" GS45      \Rb                  " S%S%S5              GSGS5 j5       5       Gr\$" GS65      \Rb                  " S%S5S%S%5      GSGS7 j5       5       Gr\$" GS85      \Rb                  " S%S5S%S%5      GSGS9 j5       5       Gr\$" GS:5      GSGS; j5       Gr \$" GS<5      GSGS= j5       Gr!\$" GS>5      GSGS? j5       Gr"\$" GS@5      \GSGSA j5       5       Gr#\$" GSB5      GSGSC j5       Gr$\$" GSD5      \Rb                  " S%S5S%S%5      GSGSGSE jj5       5       Gr%\Rb                  " S%SS5S55      GSGSF j5       Gr&\$" GSG5      GSGSH j5       Gr'\$" GSI5      GSGSJ j5       Gr(\$" GSK5      GSGSL j5       Gr)\$" GSM5      GSGSN j5       Gr*\$" GSO5      \Rb                  " S%SS55      GSGSP j5       5       Gr+\$" GSQ5      GSGSR j5       Gr,\$" GSS5        GSGST j5       Gr-\$" GSU5      GSGSV j5       Gr.\$" GSW5      GSGSX j5       Gr/\$" GSY5      GSGSZ j5       Gr0\$" GS[5      GSGS\ j5       Gr1\$" GS]5      \Rb                  " S%S%SSS%5                  GSGS^ j5       5       Gr2\$" GS_5      \Rb                  " S%S&SSS%5                  GSGS` j5       5       Gr3\$" GSa5      \Rb                  " S%S%SSS%5                  GSGSb j5       5       Gr4\$" GSc5      \Rb                  " S%S%S55      GSGSGSd jj5       5       Gr5\$" GSe5      \Rb                  " S%SS5      GSGSGSf jj5       5       Gr6\$" GSg5      \Rb                  " S%S5SS%5       GS GSGSh jj5       5       Gr7\$" GSi5      GSGSj j5       Gr8\$" GSk5      \Rb                  " S%S(5      GSGSGSl jj5       5       Gr9\$" GSm5      GSGSn j5       Gr:\$" GSo5      \Rb                  " S%S(5      GSGSGSp jj5       5       Gr;\$" GSq5      \RR                  " SSmSmSm5      \Rb                  " S%S5S%S%S&S55        GSGSr j5       5       5       Gr<\$" GSs5      \Rb                  " S%S%S55      GSGSt j5       5       Gr=\$" GSu5      GSGSv j5       Gr>\$" GSw5      GSGSx j5       Gr?\$" GSy5      GSGSz j5       Gr@\$" GS{5      GSGS| j5       GrA\$" GS}5      GSGS~ j5       GrBGSGS jGrCGSGS jGrD\$" GS5      \Rb                  " S%S%S5S5      GSGS j5       5       GrE\$" GS5      \Rb                  " S%S%S55      GSGS j5       5       GrF\$" GS5      \RR                  " S5      \Rb                  " S%S%SS55      GSGSGS jj5       5       5       GrG\$" GS5      GSGS j5       GrH\$" GS5      GSGS j5       GrI\$" GS5      GSGS j5       GrJ\$" GS5      \Rb                  " S%SS5S%S%S%S%5            GS   GSGS jj5       5       GrK\$" GS5      GSGS j5       GrL\$" GS5      GSGS j5       GrM\$" GS5      \Rb                  " S%SBSB5      GSGS j5       5       GrN\$" GS5      \Rb                  " S%S%5      GSGS j5       5       GrO\$" GS5      GSGSGS jj5       GrP\$" GS5      \Rb                  " S%SS5      GSGS j5       5       GrQ\$" GS5      \Rb                  " S%S%S55      GSGSGS jj5       5       GrR\$" GS5        GS GSGS jj5       GrSGSGS jGrT\$" GS5      GSGS j5       GrU\$" GS5      GSGS j5       GrV\$" GS5      GSGSGS jj5       GrW\$" GS5      GSGS j5       GrX\$" GS5      GSGS j5       GrY\$" GS5      GSGS j5       GrZ\$" GS5      GSGS j5       Gr[\$" GS5      GSGSGS jj5       Gr\\$" GS5      GSGS j5       Gr]\$" GS5      GSGS j5       Gr^\$" GS5      GSGS j5       Gr_\$" GS5          GSGS j5       Gr`\$" GS5      GSGS j5       Gra\$" GS5      GSGS j5       Grb\$" GS5      GSGS j5       Grc\$" GS5      GSGS j5       Grd\$" GS5      GSGS j5       Gre\$" GS5      GSGS j5       Grf\$" GS5      GSGS j5       Grg\$" GS5      GSGS j5       Grh\$" GS5      GSGS j5       Gri\$" GS5      GSGS j5       Grj\$" GS5      GSGS j5       Grk\$" GS5      \$" GS5      GS GS j5       5       Grl\$" GS5      \$" GS5      GS GS j5       5       Grm\$" GS5      GSGS j5       Grng(  zhThis file exports ONNX ops for opset 9.

Opset 9 is supported by ONNX release 1.4.1
release on 01/23/19
    )annotationsN)CallableTYPE_CHECKING)
deprecated)_C)
_constants_type_utilserrorssymbolic_helper)GLOBALS)	jit_utilsregistration)Sequence)Number(  absacosaddaddcmuladdmmaliasamaxaminaminmaxarangeargmaxargmin
as_strided	as_tensorasinatanatan2baddbmm
batch_norm	bernoullibitwise_not
bitwise_orbmmbroadcast_tensorsbroadcast_to	bucketizecatcdistceil	clamp_max	clamp_minclampcloneconstant_pad_nd
contiguousconv_tbcconv_transpose1dconv_transpose2dconv_transpose3dconv1dconv2dconv3dconvert_element_typeconvolutioncoscosine_similaritycrosscumsumdetachdimdivdotdropouteluembedding_bag	embedding
empty_likeemptyeqerfexp	expand_asexpandeyefillflattenfloor_dividefloorfloordivfrobenius_norm	full_likefullgathergegeluget_pool_ceil_paddingglu
group_normgthann_window
hardshrinkhardsigmoid	hardswishhardtanh	index_add
index_copy
index_fill	index_putindex_selectindexinstance_normis_floating_point	is_pinnedisnanitemkl_div
layer_normle
leaky_relulerpliftlinalg_crosslinalg_matrix_normlinalg_normlinalg_vector_normlinearlinspacelog_sigmoidlog_softmaxloglog10log1plog2logical_andlogical_not
logical_orlogical_xorlogit	logsumexp	lstm_celllstmltmasked_fillmasked_fill_matmulmax_pool1d_with_indicesmax_pool2d_with_indicesmax_pool3d_with_indicesmaxmaximummeshgridminminimummishmmmovedimmse_lossmulmultinomialmvnarrownative_layer_normneneg	new_emptynew_fullnew_ones	new_zerosnonzero_numpynonzeronormnumelnumpy_Tone_hot	ones_likeonesonnx_placeholderpadpairwise_distancepermutepixel_shufflepixel_unshufflepowpreluprim_constant_chunkprim_constant_splitprim_constant	prim_dataprim_device
prim_dtypeprim_ifprim_layoutprim_list_constructprim_list_unpack	prim_loopprim_maxprim_min
prim_shapeprim_tolistprim_tuple_construct	prim_typeprim_unchecked_castprim_uninitialized	rand_likerandrandint_likerandint
randn_likerandn
reciprocalreflection_padrelurelu6	remainderrepeat_interleaverepeatreplication_pad
reshape_asreshaperollrrelursqrtrsubscalar_tensorscatter_addscatterselectselusigmoidsignsilusinsizeslicesoftmaxsoftplus
softshrinksortsplit_with_sizessplitsqrtsquaresqueezestackstd_meanstdsubttaketantanh
tanhshrinktensor	thresholdtotopk	transposetrue_dividetype_asunbindunfoldunsafe_chunkunsafe_split_with_sizesunsafe_split	unsqueezeunsupported_complex_operatorsnoop_complex_operatorsunusedvar_meanvarview_asviewwherewrap_logical_op_with_cast_towrap_logical_op_with_negation
zeros_likezeroszero	   )opsetc                   ^  U 4S jnU$ )z5Exports the function in the current global namespace.c                L   > U [        5       T'   [        R                  T5        U $ N)globals__all__append)funcnames    R/var/www/auris/envauris/lib/python3.13/site-packages/torch/onnx/symbolic_opset9.pywrapper_export.<locals>.wrapper4  s    	$t     )r  r  s   ` r  _exportr"  1  s    
 Nr   c                    U R                  S5      nUR                  [        R                  R	                  5       5        U$ )z%Represents "missing" optional inputs.prim::Constant)opsetTyper   OptionalTypeofTensor)gns     r  r  r  <  s/    	AIIboo&&()Hr   zaten::_shape_as_tensorc                &    U R                  SU5      $ NShaper%  r)  inputs     r  _shape_as_tensorr1  C      44r   zaten::_reshape_from_tensorc                p    [        U[        5      (       a  U R                  " S/UQ7SS06n[        XU5      $ )NConcataxis_ir   )
isinstancelistr%  r   )r)  r0  shapes      r  _reshape_from_tensorr9  H  s4    %X00a01U##r   zaten::reshapeTc                0    [         R                  " XU5      $ r  )r   _reshape_helperr)  selfr8  s      r  r   r   O  s     **1E::r   zaten::reshape_asc                >    U R                  SU5      n[        XU5      $ r,  r%  r   r)  r=  otherr8  s       r  r   r   U  s!     DD% E1E""r   z	aten::addc                T   [         R                  " U5      (       a5  [         R                  " U5      (       a  [         R                  " SSSSU5      $ U(       a@  [         R                  " [         R
                  " U5      5      S:w  a  U R                  SX#5      nU R                  SX5      $ )a  
This function takes the add function and returns the corresponding ONNX operator.

This function is not meant to be called directly by the user.

Args:
    g (GraphContext): The graph context.
    self (Tensor): The first operand.
    other (Tensor): The second operand.
    alpha (float, optional): The scaling factor for the second operand. Defaults to None.

Returns:
    ONNX operator.
Addr     z)Add between list of tensors not supported   Mul)r   	_is_value_is_tensor_list _onnx_opset_unsupported_detailed_scalar_maybe_get_scalarr%  r)  r=  rA  alphas       r  r   r   \  s        &&?+J+J4+P+P??1bEt
 	
 (()J)J5)QRVWWUE)44t##r   z	aten::subc                    U(       a@  [         R                  " [         R                  " U5      5      S:w  a  U R                  SX#5      nU R                  SX5      $ )a  
Consumes sub function and returns the corresponding ONNX operator.

This function is not meant to be called directly by the user.

Args:
    g (GraphContext): The graph context.
    self (Tensor): The first operand.
    other (Tensor): The second operand.
    alpha (Optional[Tensor]): A scaling factor to apply to the second operand.
        If `alpha` is not provided, it defaults to 1.

Returns:
    ONNX operator
rE  rF  Sub)r   rJ  rK  r%  rL  s       r  r   r   u  sF    " (()J)J5)QRVWWUE)44t##r   z
aten::rsubc                    [        XXS9$ )N)rM  )r   rL  s       r  r   r     s    q++r   z	aten::mulc                    [         R                  " U5      (       a-  [         R                  " U5      (       a  U R                  SX5      $ U R                  SX5      $ )NAndrF  )r   _is_boolr%  r)  r=  rA  s      r  r   r     sE    %%/*B*B5*I*IttE4''ttE4''r   z	aten::divc                R    [        U5      S:X  a  [        XU5      $ [        XU/UQ76 $ Nr   )lenr   _div_rounding_mode)r)  r=  rA  argss       r  rC   rC     s,    
4yA~1E**!!58488r   zaten::addcmulvfc                    U R                  S[        R                  " U/5      S9n[        X[	        U [	        XU5      U5      5      $ NConstantvalue_t)r%  torchr   r   r   )r)  r=  tensor1tensor2value
value_tenss         r  r   r     s>     j%,,w*?@JqAs1w7DEEr   sc                    Uc  [        XU5      $ US:X  a  [        XU5      $ US:X  a  [        XU5      $ [        R                  " SU S3U5      e)NrT   trunczUnsupported rounding mode: "z$". Expected None, "floor" or "trunc")r   _floor_divide_trunc_divider
   SymbolicValueError)r)  r=  rA  rounding_modes       r  rX  rX    sb    1E**	'	!Qe,,	'	!Qe,,''*=/9]^
 	
r   c                   U R                  SX5      nU R                  SU[        R                  R                  S9n[        R
                  R                  U[        R
                  R                  5      nU[        R
                  R                  :w  a  [        R                  " U5      (       dF  [        R                  " U5      (       a+  U R                  SU[        R                  R                  S9nU$ U R                  SUUR                  5       S9n U$ U R                  SU[        R                  R                  S9nU$ )NDivCastto_i)r%  _C_onnxTensorProtoDataTypeINT64r	   JitScalarType
from_value	UNDEFINEDr   _is_fpFLOAT	onnx_type)r)  r=  rA  outscalar_types        r  rj  rj    s   
$$ud
"C $$vs!<!<!B!B$
CC ++66k''11K k//999%%d++0F0Fu0M0M$$vs)D)D)J)J$KC J $$ **,  C J dd63W%@%@%F%FdGJr   c                   [         R                  " U5      (       d  [         R                  " U5      (       a  [        XU5      nU R                  SU5      $ U R                  SX5      nU R                  S[        R
                  " S[        R                  S9S9nU R                  S[         R                  " XU5      [         R                  " XU5      5      nU R                  SXR                  S	XB5      5      nU R                  S
X`R                  SU R                  SXu5      5      5      nU R                  S[        R
                  " S[        R                  S9S9n	U R                  S	X5      n
U R                  SXJ5      $ )NFloorrn  r^  r   dtyper_  XorrO  rF  rR  NotEqualrE  )r   rx  r   r%  ra  r   int64
_lt_helper)r)  r=  rA  r{  rC   r  negativemod
fixup_maskonefixups              r  ri  ri    s)   d##'='=e'D'D!5)ttGS!! dd5$&ttJQekk(JtK44&&q5&&q6
 dd5$UC 78TT%44qttGS7O+PQ
dd:u||AU[['IdJUJ,ttE3&&r   zaten::floor_dividec                    [        XU5      $ r  )rj  rT  s      r  rS   rS     s     %((r   zaten::floordivc                    [        XU5      $ r  )rS   rT  s      r  rU   rU     s    ''r   zaten::true_dividec                $   [         R                  " U5      (       d  [         R                  " U5      (       a  U R                  SX5      $ [        R                  " 5       n[
        R                  R                  nU[        R                  L d  U[        R                  L d   e[        R                  " 5       [        R                  L a  [
        R                  R                  nU R                  SXS9nU R                  SX$S9nU R                  SX5      $ )a	  Division where both inputs are cast to floating types

If both inputs are floating, performs div as usual
If only one input is a floating type, the other input is cast to its type
If neither input is a floating type, both inputs are cast to the default scalar type
rn  ro  rp  )r   rx  r%  ra  get_default_dtyperr  rs  ry  floatdoubleDOUBLE)r)  r=  rA  r|  onnx_scalar_types        r  r   r     s     d##'='=e'D'DttE4'' ))+K2288%++%)DDD ELL0"66==4444DDDD6E44t##r   zaten::reciprocalc                    [         R                  " U5      (       d)  U R                  SU[        R                  R
                  S9nU R                  SU5      $ )Nro  rp  
Reciprocal)r   rx  r%  rr  rs  ry  r)  r=  s     r  r   r     sF     !!$''ttFDw'B'B'H'HtI44d##r   z	aten::catic                  ^ [         R                  " U5      n/ mU HM  n[         R                  " U5      (       a  [         R                  " US5      (       d  M<  TR	                  U5        MO     [        T5      S:  d   e[        U4S jT 5       5      (       d   eUR                  5       R                  5         T H"  nUR                  5       R                  U5        M$     [         R                  " U5      nU R                  " S/UQ7SU06$ )a_  Implement concatenation of pytorch tensors in ONNX along the specified `dim` dimension.

Parameters:
    g (jit_utils.GraphContext): Graph context.
    tensor_list (List[torch.Tensor]): List of tensors to concatenate.
    dim (int): Dimension along which to concatenate the tensors.

Returns:
    ONNX graph node representing the concatenated tensor.
r   c              3    >#    U  Hv  n[         R                  " TS    5      SL =(       dO    [         R                  " U5      SL =(       d0    [         R                  " U5      [         R                  " TS    5      :H  v   Mx     g7fr   N)r   _get_tensor_rank).0r   nonempty_tensorss     r  	<genexpr>cat.<locals>.<genexpr>6  s      
 "A	 	(()9!)<=E 	A++A.$6	A++A.++,<Q,?@A	A "s   A>Br4  r5  )r   _unpack_list_is_constant_get_tensor_dim_sizer  rW  allnoderemoveAllInputsaddInputr%  )r)  tensor_listrB   tensorsr   r  s        @r  r+   r+     s    **;7G ''**?3W3Wq4
 4
 "   1$$$ 
 "     &&(##A&  **;7G44/7/3//r   zaten::stackc                    [         R                  " U5       Vs/ s H  n[         R                  " XU/5      PM     nnU R                  " S/UQ7SU06$ s  snf )Nr4  r5  )r   r  _unsqueeze_helperr%  )r)  r  rB   r   
unsqueezeds        r  r   r   E  s^    
 !--k::A 	))!6:   442:2c22	s   "Az
aten::listc                    U$ r  r!  r  s     r  _listr  O      Kr   zaten::mmc           	     r    U R                  S[        R                  " S/5      S9nU R                  SXUSSS9$ )Nr^  rE  r_  Gemm              ?beta_falpha_fr%  ra  r   )r)  r=  rA  Cs       r  r   r   T  s:     	
Zqc!23A44QsC4@@r   z	aten::bmmc                &    U R                  SX5      $ NMatMulr.  rT  s      r  r'   r'   \      44$&&r   zaten::matmulc                &    U R                  SX5      $ r  r.  rT  s      r  r   r   a  r  r   zaten::addmmr   c           
        S n[         R                  " U5      n[         R                  " U5      n[         R                  " U5      n	Ub  UnOUb  UnOU	b  U	n[         R                  " U5      n
[         R                  " U5      nS nUGb  U" U
S5      (       d  U" US5      (       a  U R                  SX#5      nUn[         R                  " U5      n[         R                  " U5      nUS:w  aB  U R                  S[
        R                  " XVR                  5       S9S9nU R                  SX5      nUS:w  aW  U R                  S[
        R                  " [         R                  " U5      UR                  5       S9S9nU R                  SX5      nU R                  S	X5      $ U R                  S
UUU[         R                  " U5      [         R                  " U5      S9$ )Nc                     U S L=(       a    X:g  $ r  r!  )rZ  us     r  is_not_none_noraddmm.<locals>.is_not_none_norw  s    }''r      r  rE  r^  r  r_  rF  rC  r  r  )r   _try_get_scalar_typer  r%  rJ  ra  r   r  )r)  r=  mat1mat2betarM  r|  self_scalar_typemat1_scalar_typemat2_scalar_type	mat1_rank	mat2_rankr  res1res2s                  r  r   r   f  s    K&;;DA&;;DA&;;DA#&		%&		%&006I006I( 	1%%A)F)FttHd)''.&&t,A:DDELL>O>O>Q$R  E 44t+D1944#++D19J9J9L  D 44t*DttE4&&44&&t,''.   r   z	aten::negc                &    U R                  SU5      $ )NNegr.  r  s     r  r   r         44tr   z
aten::sqrtc                   [         R                  R                  U[         R                  R                  5      [         R                  R                  [         R                  R
                  [         R                  R                  [         R                  R                  [         R                  R                  1;   a)  U R                  SU[        R                  R                  S9nU R                  SU5      $ )Nro  rp  Sqrt)r	   ru  rv  rw  UINT8INT8INT16INTrt  r%  rr  rs  ry  r  s     r  r   r     s      ++k''11 	!!''!!&&!!''!!%%!!''
 ttFDw'B'B'H'HtI44r   zaten::rsqrtc                    U R                  S[        R                  " [        R                  " S5      U5      [        X5      5      $ )Nrn  rE  )r%  r   _if_scalar_type_asra  r   r   r  s     r  r   r     s3    4411%**Q-FQ r   z
aten::tanhg      ?   )scale
zero_pointc                &    U R                  SU5      $ )NTanhr.  r  s     r  r   r     s     44r   z	aten::sinc                &    U R                  SU5      $ )NSinr.  r  s     r  r   r     r  r   z	aten::cosc                &    U R                  SU5      $ )NCosr.  r  s     r  r=   r=     r  r   z	aten::tanc                &    U R                  SU5      $ )NTanr.  r  s     r  r   r     r  r   z
aten::asinc                &    U R                  SU5      $ )NAsinr.  r  s     r  r   r         44r   z
aten::acosc                &    U R                  SU5      $ )NAcosr.  r  s     r  r   r     r  r   z
aten::atanc                &    U R                  SU5      $ )NAtanr.  r  s     r  r    r      r  r   zaten::atan2c           
        U R                  SX5      nU R                  SU5      nU R                  S[        R                  " S5      S9nU R                  S[        R                  " [        R                  5      S9nU R                  SX5      nU R                  SUU R                  SXF5      U R                  S	XF5      5      nU R                  S
X%5      n	U R                  SXU5      n
U
$ )Nrn  r  r^  r   r_  GreaterWhererC  rO  Less)r%  ra  r   mathpi)r)  r=  rA  sloper    
const_zeroconst_pi"condition_second_or_third_quadrantsecond_third_quadrantcondition_14_or_23_quadrantresults              r  r!   r!     s     DD$E44Dj%,,q/:JttJTWW(=t>H)*i)J&DD*	UD#	UD#	 #$$$vu"ATT'6tTFMr   zaten::sigmoidg      p?c                &    U R                  SU5      $ )zConverts the corresponding PyTorch function into ONNX operators.

It is not meant to be called directly by a user.

Args:
    g (jit_utils.GraphContext): Graph context.
    self (Tensor): the input tensor.
Returns:
    ONNX operator
Sigmoidr.  r  s     r  r   r     s     44	4  r   z
aten::signc                &    U R                  SU5      $ )NSignr.  r  s     r  r   r     r  r   c                    [        U5      [        U5      :X  d   e[        U5      S:X  a"  US   S:X  a  US   [        R                  :X  a  U$ U R                  SXX4S9$ )NrE  r   Slice)axes_istarts_iends_i)rW  r   	INT64_MAXr%  )r)  r0  axesstartsendss        r  _slicer    sY    v;#d)###
6{aF1INtAw*:N:N/N44f4JJr   z	aten::sum	ReduceSumsum)decoratez
aten::mean
ReduceMeanmeanz
aten::prod
ReduceProdprodF)allow_multi_dim_supportc                0    [         R                  " XU5      $ r  )r   _reduce_with_dtype_helper)onnx_opr  r  s      r  _reduce_with_dtyper    s      44. r   zaten::cumsumnonec                6    [         R                  " SSSU5        g )Nr@   r  rD  r   _onnx_opset_unsupported)r)  r0  rB   r  s       r  r@   r@   (  s     ++HaUCr   zaten::_sample_dirichletc                0    [         R                  " SU5      $ )N_sample_dirichletr   _onnx_unsupportedr)  r=  	generators      r  r  r  .  s    ,,-@$GGr   zaten::_standard_gammac                0    [         R                  " SU5      $ )N_standard_gammar  r  s      r  r  r  3  s    ,,->EEr   zaten::tc                    [         R                  " U5      nUb  US:  a  U R                  SU5      $ U R                  SUSS9$ )Nr  Identity	Transpose)rE  r   perm_i)r   r  r%  )r)  r=  ranks      r  r   r   8  sE    ++D1D|tax ttJ%%44T&411r   zaten::numpy_Tc                    [         R                  " U5      nUc   e[        [        [	        SU5      5      5      nU R                  SXS9$ Nr   r  r   )r   r  r7  reversedranger%  )r)  r0  ndimperms       r  r   r   C  sH     ++E2Dq$()D44U400r   zaten::expandc           
     t   [         R                  " US5      n[         R                  " U5      (       d%  U R                  S[        R
                  " U5      S9nO`[         R                  " U5      (       aE  [         R                  " U [        XS5      U R                  S[        R                  " S/5      S95      n[        R                  R                  n[        XU5      n[        XU R                  S[        R                  " S5      S95      n[        X R                  SX&5      XR5      nU R                  SX5      $ )zXImplement the expand function for a pytorch tensor in ONNX according to specified `size`isr^  r_  r   r  Expandr   _maybe_get_constrG  r%  ra  
LongTensor_is_packed_listr;  r   r   r	   ru  rt  r   r   r  )r)  r=  r   implicitr  r   neg_oness          r  rO   rO   L  s     ++D$7D$$T**ttJ(8(8(>t?		(	(	.	. ..uQa !$$z5<<;M$"N
 %%++EQe$D1ADDU\\"5EDFGHDD$14>D44$%%r   zaten::broadcast_toc           
     t   [         R                  " US5      n[         R                  " U5      (       d%  U R                  S[        R
                  " U5      S9nO`[         R                  " U5      (       aE  [         R                  " U [        XS5      U R                  S[        R                  " S/5      S95      n[        R                  R                  n[        XU5      n[        XU R                  S[        R                  " S5      S95      n[        X R                  SX%5      XB5      nU R                  SX5      $ )Nr*  r^  r_  r   r+  r  r,  r-  )r)  r=  r   r  r   r2  s         r  r)   r)   a  s     ++D$7D$$T**ttJ(8(8(>t?		(	(	.	. ..uQa !$$z5<<;M$"N
 %%++EQe$D1ADDU\\"5EDFGHDD$14>D44$%%r   zaten::expand_asc           	     b   [         R                  " US5      n[        U[        R                  5      (       a  UR
                  nUR                  [        R                  5      n/ n[        UR                  5       5       H  n[        R                  " UR                  U5      R                  U5      R                  U5      U5      (       d  MN  UR                  U5        U R                  SUR                  USS9R                  U5      S9nM     U R                  SU5      nU R                  SX5      $ )Nr   r^  T)keepdimr_  r-  r,  )r   r.  r6  ra  Tensorr  r   r  r&  rB   equalr	  r  rN   r  r%  )r)  r=  rA  self_t	orig_typedimsdr8  s           r  rN   rN   u  s     --dC8F&%,,''LL	5<<(vzz|$A{{6;;q>33A6@@H&QQAttD$(G(J(J9(U   % DD% E44$&&r   zaten::embeddingbc                    U(       a,  [         R                  (       a  [        R                  " SU5      eUS:  a+  [         R                  (       a  [        R
                  " S5        U R                  SX5      $ )NzUnsupported: ONNX export of embedding with scale_grad_by_freq=True for training mode. ONNX does not support scaling the gradients.r   zWarning: ONNX export of embedding with padding_idx >= 0 for training mode. ONNX does not support not updating the embedding vector at padding_idx during training.Gather)r   export_trainingr
   rk  warningswarnr%  )r)  weightindicespadding_idxscale_grad_by_freqsparses         r  rH   rH     sb     g55''N
 	

 aG33f	
 44&**r   zaten::embedding_bagc
                    [         R                  " U5      (       d  [         R                  " S5      $ [         R                  " SU5      $ )Nz%embedding_bag with per_sample_weightsrG   )r   _is_noner  )
r)  embedding_matrixrC  offsetsrE  moderF  per_sample_weightsinclude_last_offsetrD  s
             r  rG   rG     sB     ##$677003
 	
 ,,_>NOOr   z
aten::size)quantize_outputc                >   Uc  U R                  SU5      $ [        R                  " US5      S:  aW  [        R                  " U5      nUb>  [        R                  " US5      U-   nU R                  S[        R
                  " U5      S9n[        R                  " XU5      $ )Nr-  r  r   r^  r_  )r%  r   r.  r  ra  r   _size_helperr)  r=  rB   r"  s       r  r   r     s     {ttGT""''S1A5//5!223<tCC$$z5<<+<$=C''55r   zaten::transposec                    X#:X  a  U$ [         R                  " U5      nUb1  [        [        U5      5      nXS   XR   sXR'   XS'   U R	                  SXS9$ [
        R                  " SU5      e)Nr  r   zAUnsupported: ONNX export of transpose for tensor of unknown rank.)r   r  r7  r&  r%  r
   rk  )r)  r=  dim0dim1r"  r  s         r  r   r     st     | ++D1DE$K !%TZ
DJttKt33''O
 	
r   zaten::permuter*  c           	     j    U[        [        S[        U5      5      5      :X  a  U$ U R                  SXS9$ r$  )r7  r&  rW  r%  )r)  r=  r:  s      r  r   r     s4     tE!SY'((44T4//r   z
aten::viewc                    [        XU5      $ r  )r   )r)  r=  r   s      r  r  r    s     1D!!r   zaten::view_asc                >    U R                  SU5      n[        XU5      $ r,  r?  r@  s       r  r  r    s    DD% E1E""r   zaten::unsafe_chunkc                   Uc  [         R                  " SSSSU5      $ [         R                  " X5      nUc  [         R                  " SSU5      $ XR-   S-
  U-  nU/XV-  -  nXV-  nU(       a  UR	                  U5        U R                  SXX4S9$ )	Nr  r  rD  'Dynamic number of outputs not supportedunknown dimension sizerE  Splitsplit_ir5  outputs)r   rI  r  _unimplementedr  r%  )	r)  r=  chunksrB   _outputsr   
split_sizesplitsleftovers	            r  r  r    s     ??Ar#Ld
 	
 //:D|--4d
 	
 -!#.J\T/0F Hh44c4LLr   zaten::splitc                   [         R                  " X$5      (       d  [         R                  " SSSSU5      $ [         R                  " UR	                  5       S5      nUR                  5       S:  a  [        XX#U5      $ [         R                  " USS5      n[         R                  " X5      nUc"  Ub  Xd-  nO[         R                  " SSSS	U5      $ U/Xv-  -  nXv-  n	U	(       a  UR                  U	5        U R                  S
XX4S9$ )Nr   r  rD  rY  rd  r   r  rb  z$Unknown dimension size not supportedr[  r\  )r   _is_split_staticrI  	_node_getr  rB   r   
_get_constr  r  r%  )
r)  r=  split_size_or_sizesrB   ra  	split_valrb  r   rc  rd  s
             r  r   r     s    ++,?JJ??QEt
 	
  ))*=*B*B*DgNI}})<8LL ++,?lSJ//:D|(D"CCB F  \T/0F Hh44c4LLr   zaten::unsafe_splitc                    [        XX#U5      $ r  )r   )r)  r=  ri  rB   ra  s        r  r  r    s     -H==r   zaten::split_with_sizesc                    [         R                  " X$5      (       d  [         R                  " SSSSU5      $ U R                  SXX4S9$ )Nr   r  rD  rY  r[  r\  )r   rf  rI  r%  r)  r=  split_sizesrB   ra  s        r  r   r   %  sL     ++KBB??2'PRV
 	
 4434QQr   zaten::unsafe_split_with_sizesc                    [        XX#U5      $ r  )r   rm  s        r  r  r  /  s     A[x@@r   zaten::unbindc                    Uc  [         R                  " SSSSU5      $ U R                  SUS/U-  X#S9nUS:X  a  U/OUnU Vs/ s H  n[         R                  " XU/5      PM     nnU$ s  snf )Nr   r  rD  rY  r[  rE  r\  )r   rI  r%  _squeeze_helper)r)  r=  rB   ra  r^  r{  squeezed_outputss          r  r   r   6  s     ??aF
 	
 dd7D1#.dWG#q=wigGBIBI3''6'   s   "A)zaten::selectc                .   [         R                  " U5      n[         R                  " U5      (       dT  US:  aN  US:X  a  [        R                  nOUS-   n[         R
                  " XU/U/U/S9n[         R                  " XU/5      $ U R                  SXUS9$ )zImplement the select functionality for a pytorch tensor in ONNX.

Selects elements from the input tensor along the specified `dim` dimension based on the `index` tensor.
r   r+  rE  r  r  r  r>  r5  )r   rK  rG  r   r   _slice_helperrq  r%  )r)  r=  rB   rj   	end_index
slice_nodes         r  r   r   F  s     --e4E%%e,,519B;",,I	I$223%yk

 ..qseDD ttHd#t66r   zaten::squarec                &    U R                  SX5      $ NrF  r.  r  s     r  r   r   ]  s    44t""r   zaten::squeezec                <   Uc  U R                  SU5      $ [        R                  " USS5      nUS:  au  [        R                  " U5      nUbD  [        R
                  " S[        U5      -   S-   S-   S-   [        X4-   5      -   S	-   S
-   5        X4-  nO[        R                  " SSU5      $ [        R                  " X5      nUcV  [        R
                  " S[        U5      -   S-   S-   [        U5      -   S-   S-   S-   S-   5        [        R                  " XU/S9$ US:  aB  [        R
                  " S[        U5      -   S-   S-   [        U5      -   S-   S-   S-   S-   5        U$ [        R
                  " S[        U5      -   S-   S-   5        [        R                  " XU/S9$ )NSqueezer  rB   r   z'ONNX export squeeze with negative axis - might cause the onnx model to be incorrect. (Negative axis is not supported in ONNX. Axis is converted to & based on input shape at export time. CPassing an tensor of different rank in execution will be incorrect.r   %negative axis with unknown input rankz5This model contains a squeeze operation on dimension z on an input z7with unknown shape. Note that if the size of dimension z of the input zVis not 1, the ONNX model will return an error. Opset version 11 supports squeezing on zMnon-singleton dimensions, it is recommended to export this model using opset zversion 11 or higher.r  rE  z. The size of z%this dimension in the given input is z. The model will zWbe exported without the squeeze node. If the model is intended to be used with dynamic z-input shapes, please use opset version 11 to zexport the model.z. If the model is z_intended to be used with dynamic input shapes, please use opset version 11 to export the model.)
r%  r   rh  r  r@  rA  strr_  r  rq  )r)  r=  rB   squeeze_dimr"  dim_sizes         r  r   r   b  s$   
{ttIt$$!,,S#u=KQ//5MM9k"#AB == *	*
 k()* ;; XX	 K"11BD  33DFHC+ HH +	
  gg ^^ &&
	
 ..q}MM!|C+ 66 (m	
 "" hh >> ""
	
 MM?
k
	
	 l	l **1K=IIr   zaten::preluc                   [         R                  " U5      n[         R                  " U5      n[        U5      nUb[  US:  a.  [         R                  " X[        [        SUS-
  5      5      5      nO'US:X  a!  US/:X  a  [         R                  " XS/5      nSnUb  Ub  X5:  d   SU SU 35       eU R                  SX5      $ )Nr  rE  r   z)rank(x) should be >= rank(slope) but got z < PRelu)	r   r  _get_tensor_sizesrW  r  r7  r&  rq  r%  )r)  r=  rB  	self_rankweight_sizesweight_ranks         r  r   r     s    006I"44V<Ll#Kq=$664aQ 78F !^ 3$44QDFK!8' 	
7	{#k]S	
' 44&&r   z
aten::siluc                F    U R                  SXR                  SU5      5      $ )NrF  r  r.  r/  s     r  r   r     s    44udd9e455r   z
aten::mishc                f    U R                  SXR                  SU R                  SU5      5      5      $ )NrF  r  Softplusr.  r/  s     r  r   r     s)    44udd6144
E+BCDDr   z
aten::reluc                0    [         R                  " U SUSS9$ )NRelu   opset_beforer   _op_with_optional_float_castr/  s     r  r   r     s      77	65r r   zaten::relu6c                    [        XSS5      $ )Nr      )r0   r/  s     r  r   r     s     1a  r   z
aten::ceilc                &    U R                  SU5      $ )NCeilr.  r/  s     r  r-   r-     s    44r   zaten::floorc                &    U R                  SU5      $ )Nr~  r.  r/  s     r  rT   rT     r2  r   z	aten::lenc           
         [        XU R                  S[        R                  " S/5      S95      n[        R
                  " XS/5      $ Nr^  r   r_  )r   r%  ra  r/  r   rq  )r)  r=  sz_0s      r  _lenr    s=    j%2B2BA32GHID**1QC88r   zaten::thresholdc                    [         R                  " U5      S:w  a  [         R                  " SSU5      $ [         R                  " U5      S:w  a  [         R                  " SSU5      $ U R                  SU5      $ )Nr   r   znon-zero thresholdznon-zero valuer  )r   rJ  r_  r%  )r)  r=  r   rd  s       r  r   r     sh     y)Q.--k;OQUVVu%*--k;KTRR44r   zaten::leaky_reluc                "    U R                  SXS9$ )N	LeakyRelur  r.  )r)  r0  negative_slopeinplaces       r  rs   rs     s     44U4;;r   z	aten::gluc                    [         R                  " X5      nUb  US-  S:X  d   eU R                  SXSS9u  pEU R                  SX@R                  SU5      5      $ )Nr  r   r[  )r5  r^  rF  r  )r   r  r%  )r)  r0  rB   r  firstseconds         r  r]   r]     s^     33E?H!|q   DD%QD?ME44udd9f566r   zaten::softmaxc                   [         R                  " U5      nUb  US:  a  XB-   nXBS-   :g  nU(       a8  [        [        U5      5      nUS   Xb   sXb'   US'   U R	                  SXS9nUS-
  nU R	                  SXS9nU(       am  UR                  5       R                  5       S:w  aK  [         R                  " US	S
5      nU R	                  SU[        R                  " U5      R                  5       S9nU(       a  U R	                  SUWS9nU$ U R	                  SXR	                  SX/SS95      nU R	                  SU5      n	[         R                  " X	U/S9n
U R	                  SX5      nU(       am  UR                  5       R                  5       S:w  aK  [         R                  " US	S
5      nU R	                  SU[        R                  " U5      R                  5       S9nU$ )Nr   rE  r+  r  r   Softmaxru  r$  r  r  ro  rp  rO  	ReduceMaxr  
keepdims_iExpr  rn  )r   r  r7  r&  r%  r  kindrh  r	   ru  rz  _reducesum_helper)r)  r0  rB   r  	input_dimis_transpose_requiredr  r   parsed_dtyperM   r  s              r  r   r     s   .  007I7/C )1W 4 i()D"&r(DIDItBxDDeD9Ea-C$$y%$4UZZ\&&(,<<*55eS'JLdd ..|<FFH  G !dd;d=G DDttKuQRtSTE
$$ue
C

+
+AC5
ACdd5##G""$(88&11%gF$$G+";";L"I"S"S"U  
 Nr   zaten::softplusc                    [         R                  " US5      nUS:w  a3  U R                  SU R                  SU R                  SX5      5      U5      $ U R                  SU5      $ )Nr[  rE  rn  r  rF  )r   r.  r%  )r)  r=  r  r   
beta_consts        r  r   r   C  sU     11$<JQttE144
ADD,CDdKK44
D!!r   zaten::get_pool_ceil_paddingc                   [         R                  " U 5      nUb  U[        U5      * S  OS nUb  [        S U 5       5      (       a  [         R                  " SSU 5      $ [        S[        U5      5       Vs/ s HB  n[        [        R                  " XV   SX6   -  -   X   -
  [        X&   5      -  5      5      S-   PMD     nn[        S[        U5      5       Vs/ s H%  nXv   S-
  X&   -  XV   X6   -   :  a  Xv   S-
  OXv   PM'     nn[        S[        U5      5       Vs/ s H.  nX&   S:X  a  SO X   XV   SX6   -  -   Xv   S-
  X&   -  S-   -
  -
  PM0     nn[        S[        U5      5       Vs/ s HL  nX   SX6   -  -   X   :  a*  X   X   S-
  :  a  [        X   5      O[        X   S-
  5      O[        X   5      PMN     nnU$ s  snf s  snf s  snf s  snf )Nc              3  (   #    U  H  oS L v   M
     g 7fr  r!  r  r  s     r  r  (get_pool_ceil_padding.<locals>.<genexpr>P  s     1St)S   r\   input size not accessibler   r  rE  )
r   r  rW  anyr_  r&  intr  r-   r  )	r0  kernel_sizestridepaddingsizesrB   r  ceiled_output_dimpadding_ceils	            r  r\   r\   K  sI    --e4E$)$5%W
 4C
{c1S111--#%@%
 	
 q#g,' (A 	DIIsvGJ.?5CSSTU
	'   q#/01 2A $&*fi7SVgj=PQ  1$"%& 2  * q#g,' (A 	Q  F'*n%),q0FI=AC	 (  4 q#l+, -A 1wz>1{~F  ?[^a%77 LO$!+, \_%& -   U s   4A	G ,G5G
)AGzaten::max_pool1d
max_pool1drE  )return_indiceszaten::max_pool2d
max_pool2dr  zaten::max_pool3d
max_pool3d   c           	        ^ ^^^ [         R                  " SSSSSS5      [         R                  " SSSSSS5      U UUU4S j5       5       nU$ )NTFrZ  r*  r  c                  > [        T" U5      5      S1:w  a  [        R                  " TSU5      $ U(       d  Un[        T" U5      5      nU(       a+  [	        XX45      nU[        S [        Xt5       5       5      -   nOUS-  nT" U5      UT" U5      S.nT(       a  U R                  " SU4SS0UD6u  pU R                  SUS[        T5       Vs/ s H  nSPM     sn[        T5       Vs/ s H  nSPM     snS9u  p[        R                  " U U[        T5       Vs/ s H  nSU-   PM
     sn[        T" S	5      5      [        T" S5      5      S
9n[        X
U5      n
X4$ U R                  " SU4SS0UD6n	U	$ s  snf s  snf s  snf )NrE  dilationc              3  .   #    U  H  u  pX-   v   M     g 7fr  r!  r  ar<  s      r  r  1_max_pool.<locals>.symbolic_fn.<locals>.<genexpr>  s     %U:Tae:T   r  )kernel_shape_ipads_i	strides_iMaxPoolr^  )r^  r  r  r   rt  )setr   r_  tupler\   zipr%  r&  rv  r7  r   )r)  r0  r  r  r  r  	ceil_moder  kwargsrrC  _flattened_indicesr  rf  r  ndimsr  tuple_fns                  r  symbolic_fn_max_pool.<locals>.symbolic_fn  s    x!"qc)"11$
EJJ F)*0VUL%U#l:T%U UUGkG&{3!&)
$ iDDVDJA#$44+0<8<a<8&+El3l1l3 $( $ A  --!%*5\2\a!e\2HQK((1+&A !a(G:Y;q;F;AH  93 3s   E5(E:E?r   quantized_args
parse_args)r  r  r  r  r  s   ```` r  	_max_poolr    sT    8 ##D%ueLT4tSA2 B M2h r   zaten::max_pool1d_with_indicesr   zaten::max_pool2d_with_indicesr   zaten::max_pool3d_with_indicesr   zaten::avg_pool1d
avg_pool1dzaten::avg_pool2d
avg_pool2dzaten::avg_pool3d
avg_pool3dc           
        ^ ^ [         R                  " S5      [         R                  " SSSSSSS5       S           SU U4S jjj5       5       nU$ )	NTrZ  r*  r  r  c           
       > U(       d  Un[         R                  " TXBX7T5      n[        U[        5      (       d   eUnU(       a.  [         R                  " U SUSU-   S-  SSSS9nS[        U5      -  nU(       a+  [        XX45      n	U[        S	 [        X5       5       5      -   nOUS-  nU R                  S
UT" U5      T" U5      US9n
U
$ )NPad)r   r   r  constantr  rD  r  mode_svalue_fr  r   c              3  .   #    U  H  u  pX-   v   M     g 7fr  r!  r  s      r  r  1_avg_pool.<locals>.symbolic_fn.<locals>.<genexpr>+  s      8$G&1$Gr  AveragePool)r  r  r  )	r   _avgpool_helperr6  r  r  rW  r\   r  r%  )r)  r0  r  r  r  r  count_include_paddivisor_overrideadjusted_paddingr  outputr  r  s              r  r  _avg_pool.<locals>.symbolic_fn  s      F!11gFd
 '5))))" #@@ 7*a/!E  $c'l20VUL/% 8$'$G8 3    0!3#K0v&#  
 r   r  )r0  _C.Valuer  Sequence[int]r  r  r  zint | Sequence[int]r  r  r  r  r  )r  r  r  s   `` r  	_avg_poolr    s    , ##D)T4sCH // #/ 	/
 %/ / / / I */b r   zaten::adaptive_avg_pool1dadaptive_avg_pool1dr  zaten::adaptive_avg_pool2dadaptive_avg_pool2dzaten::adaptive_avg_pool3dadaptive_avg_pool3dzaten::adaptive_max_pool1dadaptive_max_pool1dr  zaten::adaptive_max_pool2dadaptive_max_pool2dzaten::adaptive_max_pool3dadaptive_max_pool3dc                T   ^ ^^^ [         R                  " SS5      UU UU4S j5       nU$ )NTFc                  > Un [         R                  " US5      nUS/[	        U5      -  :X  a  TS:X  a  U R                  SU5      $ [         R                  " U5      n USS  nUb  [        S U 5       5      (       a?  US/[	        U5      -  :X  a  U R                  SU5      S 4$ [         R                  " TS	U5      $ [        S
[	        U5      5       Vs/ s H  oeU   X&   -  PM     nnUS
/[	        U5      -  :w  a?  US/[	        U5      -  :X  a  U R                  SU5      S 4$ [         R                  " TSU5      $ [        S
[	        U5      5       Vs/ s H  n[        XV   X&   -  5      PM     nnTS:X  a$  T
" XXS[	        U5      -  S[	        U5      -  S5      $ U R                  TUT" U5      T" U5      S9n	U	$ ! [         a    [         R                  " SU5      s $ f = f! [         a    S n GNf = fs  snf s  snf )Nr*  z4adaptive pooling, since output_size is not constant.rE  r  GlobalAveragePoolr  c              3  (   #    U  H  oS L v   M
     g 7fr  r!  r  s     r  r  6_adaptive_pool.<locals>.symbolic_fn.<locals>.<genexpr>  s     5A4ir  GlobalMaxPoolr  r   z-output size that are not factor of input sizer  r  )rE  F)r  r  )r   
_parse_arg	Exceptionr  rW  r%  r  r  r_  r&  r  )r)  r0  output_sizeoutput_size_valuer  rB   r  r  kr  fnr  r  types             r  r  #_adaptive_pool.<locals>.symbolic_fn|  s    (	)44[$GK 1#K 000T]5J44+U3311%8	)C
 ;#5555qcC$444ttOU3T99"1115  16aS0BC0B11v&0BC1#C. qcC$444ttOU3T99"11EGX  49CH3EF3EaS+.()3EF9adSXotc#hNNdE(1+RSUE  	 #44F 	  	 C	 D Gs/   F9 G  G3G89!GG G0/G0)r   r  )r  r  r  r  r  s   ```` r  _adaptive_poolr  <  s.    @ ##D%0/ 1/b r   c                p    [        USS 5      S/U S-  [        U5      -
  -  -   nUSSS2   USSS2   -   nU$ )zGenerate paddings in ONNX order based on pad in pytorch.
Args:
    dim: the dimension of the tensor.
    pad: the paddings in pytorch.
        The order is dim_n_begin, dim_n_end, dim_n-1_begin, dim_n-1_end, ...
Nr   r  r+  )r7  rW  )rB   r   paddingss      r  _prepare_onnx_paddingsr    sO     CF|qcS1Ws3x%788HB(26r6"22HOr   c                   [         R                  " U S5      n[         R                  " U5      (       a\  [         R                  " U5      (       aA  [         R                  " U5      n U Vs/ s H  n[         R
                  " USS5      PM     nnU$ U$ s  snf ! [         a    [         R                  " SSSSU 5      s $ f = f)Nr*  r  r  r  r  rD  z)The sizes of the padding must be constant)r   r.  rG  r0  r  rh  r	  rI  )r0  r  
input_listrZ  s       r  _convert_padding_noder    s    ..ud;G  ))o.M.Mg.V.V$11':
		GQGQ!**1c9=z   N7N  	 #CCq"I5 	s$   %B )"BB B $B=<B=zaten::constant_pad_ndc           
        Sn [         R                  " USS5      n[	        U5      n[        [         R                  " U5      U5      n[         R                  " U SXXCSS9$ ! [         a    [         R                  " SSSSU5      s $ f = f)	Nr  r[  rd  r  r  rD  z*The value for the padding must be constantr  )r   rh  r	  rI  r  r  r  r  )r)  r0  r  rd  rK  r  s         r  r2   r2     s    D
**5#w? $G,G%o&F&Fu&MwWH77	5%SU   
 ??1bF
 	

s   A $BBc           	        [        U5      n[        U5      S-  S:X  d   e[        U5      S-  nUn[        U5       GH,  nUSU-  S-   *    nUSU-  S-   *    n/ n	US:  a=  [        R                  " XSU-   /U* /[
        R                  /S9n
U	R                  U
5        US:  d  US:  aa  [        R                  " SU* 5      n[        R                  " SU* 5      * n[        R                  " U USU-   /U/U/S9nU	R                  U5        OU	R                  U5        US:  a.  [        R                  " XSU-   /S/U/S9nU	R                  U5        U R                  " S/U	Q7SSU-   06nGM/     U$ )Nr  r   rE  rt  r4  r5  )r  rW  r&  r   rv  r   r   r  builtinsr   r%  )r)  r0  r   r  r'  curidxpad_rpad_lr  leftstartendmiddlerights                  r  _pad_circularr$    s   #C(Gw<!q   w<1D
CT{!c'A+'!c'A+'19"00a#gY%zAUAU@VD NN4 19	LLUF+ELLUF+,C$22#gYwUF NN6"NN319#11a#gYs%E NN5!dd88g8q3w8= @ Jr   zaten::reflection_pad1dzaten::reflection_pad2dzaten::reflection_pad3dc           	         Sn[        U5      n[        [        R                  " U5      U5      n[        R                  " U SXUSS9$ )Nreflectr  rD  r  r  r  r  r  r   r  r  r)  r0  r  rK  r  s        r  r   r     sH     D#G,G%o&F&Fu&MwWH77	5%B r   zaten::replication_pad1dzaten::replication_pad2dzaten::replication_pad3dc           	         Sn[        U5      n[        [        R                  " U5      U5      n[        R                  " U SXUSS9$ )Nedger  rD  r'  r(  r)  s        r  r   r     sH     D#G,G%o&F&Fu&MwWH77	5%B r   z	aten::padc                    [         R                  " US5      nUS:X  a  [        XU5      $ US:X  a  [        XU5      $ US:X  a  [	        XX$5      $ US:X  a  [        XU5      $ [        R                  " SU 3U5      e)Nrf  	replicater&  r  circularzUnrecognized padding mode )r   r  r   r   r2   r$  r
   rk  )r)  r0  r   rK  rd  s        r  r   r   '  s     %%dC0D{q--		a,,		q44		Qs++''*DTF(KUSSr   zaten::upsample_nearest1dupsample_nearest1dnearestzaten::upsample_nearest2dupsample_nearest2d   zaten::upsample_nearest3dupsample_nearest3d   zaten::upsample_linear1dupsample_linear1drz   zaten::upsample_bilinear2dupsample_bilinear2dzaten::upsample_trilinear3dupsample_trilinear3dc                   ^ ^^ UUU 4S jnU$ )Nc                &  > [         R                  " U TU5      u  pE[         R                  " T5        [         R                  " U5      nU(       a  [         R                  " TSU5      $ Uc  [         R
                  " XUT5      nU R                  SXTS9$ )Nzalign_corners == TrueUpsampler  )r   _get_interpolate_attributes_interpolate_warningrK  r_  _interpolate_size_to_scalesr%  )	r)  r0  r
  rY  scalesalign_cornersrB   interpolate_moder  s	         r  r  !_interpolate.<locals>.symbolic_fng  s     / K K!
 	,,-=>'99-H"11$8OQVWW>$@@+sF ttJ6FtGGr   r!  )r  rB   rA  r  s   ``` r  _interpolaterC  <  s    VH r   zaten::__interpolatec                X    [         R                  " XX#XE5      u  pU R                  SXUS9$ )Nr:  r;  )r    _interpolate_get_scales_and_moder%  )	r)  r0  r   scale_factorrK  r@  recompute_scale_factor	antialiasr?  s	            r  __interpolaterI  x  s4     #CC	$dLF 44
E$477r   zaten::bitwise_notc                    [         R                  " U5      (       d  [        R                  " SU5      eU R	                  SU5      $ NzOONNX export does NOT support exporting bitwise Not for non-boolean input valuesr  r   rS  r
   rk  r%  r/  s     r  r%   r%     sA    ##E**''+
 	

 44ur   zaten::bitwise_orc                    [         R                  " U5      (       d  [        R                  " SU5      e[         R                  " U5      (       d  [        R                  " SU5      eU R	                  SX5      $ )NzVONNX export does NOT support exporting bitwise OR for non-boolean input values. self: zWONNX export does NOT support exporting bitwise OR for non-boolean input values. other: OrrL  rT  s      r  r&   r&     so    ##D))''3
 	

 ##E**''4
 	

 44d""r   c                   ^  U 4S jnU$ )Nc                J   >^  [         R                  " T 5      U U4S j5       nU$ )Nc           	     R   > [        5       ST 3   nT" X" XS5      U" XS5      5      $ )N_cast_F)r  )r)  r0  rA  to_cast_funcr  to_types       r  wrap_with_castGwrap_logical_op_with_cast_to.<locals>.decorator.<locals>.wrap_with_cast  s3    "9vgY%78Laa6Qu8UVVr   	functoolswraps)r  rU  rT  s   ` r  	decorator/wrap_logical_op_with_cast_to.<locals>.decorator  s(    			W 
	W r   r!  )rT  rZ  s   ` r  r  r    s     r   c                F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                6   > U R                  ST" XU5      5      $ )Nr  r.  )r)  r0  rA  r  s      r  wrap_with_not4wrap_logical_op_with_negation.<locals>.wrap_with_not  s    ttE4%011r   rW  )r  r^  s   ` r  r  r    s&    __T2 2 r   zaten::__not_c                    [         R                  " U5      (       d  [        R                  " SU5      eU R	                  SU5      $ rK  rL  r  s     r  __not_ra    sA    ##D))''+
 	

 44tr   zaten::eqc           	        [        UR                  5       [        R                  5      (       a^  [        UR                  5       [        R                  5      (       a1  U R	                  S[
        R                  " S[
        R                  S9S9$ UR                  5       nUR                  5       nUR                  5       UR                  5       s=:X  a  S:X  a  O  OUR                  S5      UR                  S5      s=:X  a  S:X  aU  O  ORU R	                  S[
        R                  " UR                  S5      UR                  S5      :H  [
        R                  S9S9$ U R	                  SX5      $ )	Nr^  Tr  r_  onnx::Constantrd  rf  r  )r6  r  r   DeviceObjTyper%  ra  r   boolr  r  kindOfrf  )r)  r=  rA  	self_node
other_nodes        r  rK   rK     s    $))+r//00Z

b&&6 6
 ttJT(LtMM		IJ~~:??,@0@@G$
(9(9'(BIcI 44KK(JLL,AA**    44%%r   zaten::nec                    [        XU5      $ r  )rK   rT  s      r  r   r     s     aur   zaten::gtc                    [        XU5      $ r  _gt_implr)  r0  rA  s      r  r_   r_          Ae$$r   c                6   [         R                  " U5      (       am  [         R                  " U5      (       aR  U R                  SU[        R                  R
                  S9nU R                  SU[        R                  R
                  S9nU R                  SX5      $ )Nro  rp  r  r   rS  r%  rr  rs  INT32rm  s      r  rl  rl    st    &&?+C+CE+J+JVU)D)D)J)JKVU)D)D)J)JK44	5((r   zaten::ltc                    [        XU5      $ r  _lt_implrm  s      r  r   r     rn  r   c                6   [         R                  " U5      (       am  [         R                  " U5      (       aR  U R                  SU[        R                  R
                  S9nU R                  SU[        R                  R
                  S9nU R                  SX5      $ )Nro  rp  r  rp  rm  s      r  rt  rt    st    &&?+C+CE+J+JVU)D)D)J)JKVU)D)D)J)JK44%%r   zaten::gec                    [        XU5      $ r  rs  rm  s      r  rZ   rZ           Ae$$r   zaten::lec                    [        XU5      $ r  rk  rm  s      r  rr   rr     rw  r   zaten::__and_c                    [         R                  " U5      (       d  [        R                  " SU5      e[         R                  " U5      (       d  [        R                  " SU5      eU R	                  SX5      $ )NzOONNX export does NOT support exporting bitwise AND for non-boolean input valuesrR  rL  rm  s      r  __and_rz    o    ##E**''+
 	

 ##E**''+
 	

 44u$$r   zaten::__or_c                    [         R                  " U5      (       d  [        R                  " SU5      e[         R                  " U5      (       d  [        R                  " SU5      eU R	                  SX5      $ )NzNONNX export does NOT support exporting bitwise OR for non-boolean input valuesrN  rL  rm  s      r  __or_r}    so    ##E**''+
 	

 ##E**''+
 	

 44e##r   zaten::__xor_c                    [         R                  " U5      (       d  [        R                  " SU5      e[         R                  " U5      (       d  [        R                  " SU5      eU R	                  SX5      $ )NzOONNX export does NOT support exporting bitwise XOR for non-boolean input valuesr  rL  rm  s      r  __xor_r  0  r{  r   zaten::logical_andBoolc                &    U R                  SX5      $ )NrR  r.  rm  s      r  r   r   A       44u$$r   zaten::logical_orc                &    U R                  SX5      $ )NrN  r.  rm  s      r  r   r   G  s     44e##r   zaten::logical_xorc                &    U R                  SX5      $ )Nr  r.  rm  s      r  r   r   M  r  r   zaten::logical_notc           	     t    U R                  SU R                  SU[        R                  R                  S95      $ )Nr  ro  rp  r%  rr  rs  BOOLr/  s     r  r   r   S  s.    44qttFE0K0K0P0PtQRRr   zaten::__rshift_c                j   [         R                  R                  U5      n[         R                  R                  U[         R                  R                  5      U:w  a  U R	                  SUUR                  5       S9nU R	                  S[        R                  " S[        R                  S9S9n[        R                  " U5      (       d)  U R	                  SU[        R                  R                  S9nU R	                  SXB5      nU R	                  SUUR                  5       S9nU R	                  SX5      nU$ )	Nro  rp  r^  r  r  r_  Powrn  r	   ru  rv  rw  r%  rz  ra  r   float32r   rx  rr  rs  ry  )r)  r=  rA  r  twotwo_powrshifts          r  	__rshift_r  X      #00;;DA!!,,UK4M4M4W4WX	 !++-  
 $$z5<<#G$
HC!!$''VU)D)D)J)JKdd5#%Gdd'')  G
 TT%'FMr   zaten::__lshift_c                j   [         R                  R                  U5      n[         R                  R                  U[         R                  R                  5      U:w  a  U R	                  SUUR                  5       S9nU R	                  S[        R                  " S[        R                  S9S9n[        R                  " U5      (       d)  U R	                  SU[        R                  R                  S9nU R	                  SXB5      nU R	                  SUUR                  5       S9nU R	                  SX5      nU$ )	Nro  rp  r^  r  r  r_  r  rF  r  )r)  r=  rA  r  r  r  lshifts          r  	__lshift_r  u  r  r   zaten::wherec           
     @   [         R                  " U5      (       d)  U R                  SU[        R                  R
                  S9nUcE  [        X5      n[         R                  " XU R                  S[        R                  " S5      S9U5      $ U R                  SXU5      $ )Nro  rp  r^  rE  r_  r  )
r   rS  r%  rr  rs  r  r   _unbind_helperra  r   )r)  	conditionr=  rA  ra  s        r  r  r    s     ##I..DD1L1L1Q1QDR	|A)	--!$$z5<<?$CX
 	
 44%00r   zaten::log_softmaxc                >   [         R                  " U5      nUc  [         R                  " SS5      $ US:  a  XB-   nXBS-   :g  nU(       a8  [        [	        U5      5      nUS   Xb   sXb'   US'   U R                  SXS9nUS-
  nU R                  SXS	9nU(       am  UR                  5       R                  5       S
:w  aK  [         R                  " USS5      nU R                  SU[        R                  " U5      R                  5       S9nU(       a  U R                  SUWS9nU$ )NrB   fONNX and PyTorch use different strategies to split the input. Input rank must be known at export time.r   rE  r+  r  r   
LogSoftmaxru  r$  r  r  ro  rp  )r   r  r_  r7  r&  r%  r  r  rh  r	   ru  rz  )	r)  r0  rB   r  r  r  r  	return_opr  s	            r  r}   r}     s$     007I--7
 	

 Qwo%q0E)$%"2h		48[%5!m\55I""$(88&11%gFDDIK$=$=l$K$U$U$W  
	 DDiD=	r   zaten::_log_softmaxc                "   U(       a}  [         R                  R                  U[         R                  R                  5      [         R                  R                  :X  a)  U R                  SU[        R                  R                  S9n[        XU5      $ Nro  rp  )
r	   ru  rv  rw  HALFr%  rr  rs  ry  r}   )r)  r0  rB   half_to_floats       r  _log_softmaxr    sq     	%%00;,,66
 $$))*
 VU)D)D)J)JKq%%r   zaten::_convolutionc                   [         R                  " U5      n USS  nUb  [        S U 5       5      (       a  [        R
                  " SU5      eX/n[         R                  " U5      (       d+  [         R                  " U5      S:X  a  UR                  U5        USS  UXU-   UU	S.n[        S U 5       5      (       a(  U(       d   e[        U5      [        U5      :X  d   eUUS'   U R                  " U(       a  SOS	/UQ70 UD6n[         R                  " U5      (       d-  [         R                  " U5      S:w  a  U R                  S
UU5      $ U$ ! [         a    S n GN>f = f)Nr  c              3  (   #    U  H  oS L v   M
     g 7fr  r!  r  s     r  r  _convolution.<locals>.<genexpr>       "Cl9lr  DUnsupported: ONNX export of convolution for kernel of unknown shape.rE  )r  r  r  dilations_igroup_ic              3  *   #    U  H	  oS :g  v   M     g7fr  r!  )r  os     r  r  r  	  s     
*>a6>s   output_padding_iConvTransposeConvrC  )r   r  r	  r  r
   rk  rH  r  r  rW  r%  )r)  r0  rB  biasr  r  r  
transposedoutput_paddinggroups	benchmarkdeterministiccudnn_enabled
allow_tf32weight_sizekernel_shaperY  r  r*  s                      r  _convolutionr    se   ( "33F;K"12 s"Cl"CCC''R
 	

 ?D $$T**,,T2a7D &ab/ #F 
*>
*** z6{c.1111%3!"	
_HHHA $$T**,,T2a7ttE1d##[   s   E EEzaten::_convolution_modec                J   [         R                  " U5      n USS  n	U	b  [        S U	 5       5      (       a  [        R
                  " SU5      eX/n
[         R                  " U5      (       d+  [         R                  " U5      S:X  a  U
R                  U5        US:X  a  SnOUS:X  a  SnUSS  UUUUS	.nU R                  " S
/U
Q70 UD6n[         R                  " U5      (       d,  [         R                  " U5      S:w  a  U R                  SX5      $ U$ ! [         a    S n	 GNf = f)Nr  c              3  (   #    U  H  oS L v   M
     g 7fr  r!  r  s     r  r  $_convolution_mode.<locals>.<genexpr>2	  r  r  r  rE  validVALIDsame
SAME_UPPER)r  r  
auto_pad_sr  r  r  rC  )
r   r  r	  r  r
   rk  rH  r  r  r%  )r)  r0  rB  r  r  r  r  r  r  r  rY  r  r*  s                r  _convolution_moder  	  s5   ( "33F;K"12 s"Cl"CCC''R
 	

 ?D $$T**,,T2a7D'	F	%ab/F 	
V%d%f%A $$T**,,T2a7ttE1##O   s   D D"!D"zaten::convolutionc
                2    [        U UUUUUUUUU	S S S S 5      $ r  r  )
r)  r0  rB  r  r  r  r  r  r  r  s
             r  r<   r<   W	  s;     	 r   zaten::conv1dc                    [         R                  " US5      nUS;   a  [        U UUUUUUU5      $ [         R                  " US5      n[        U UUUUUUSSUS S S S 5      $ Nrf  )r  r  r*  Fr!  r   r  r  r  	r)  r0  rB  r  r  r  r  r  str_paddings	            r  r8   r8   w	      
 ",,Wc:K'' 	
 		
 ",,Wd;
 	
r   zaten::conv2dc                    [         R                  " US5      nUS;   a  [        U UUUUUUU5      $ [         R                  " US5      n[        U UUUUUUSSUS S S S 5      $ r  r  r  s	            r  r9   r9   	  r  r   zaten::conv3dc                    [         R                  " US5      nUS;   a  [        U UUUUUUU5      $ [         R                  " US5      n[        U UUUUUUSSUS S S S 5      $ r  r  r  s	            r  r:   r:   	  r  r   zaten::conv_transpose1dc	                2    [        U UUUUUUSUUS S S S 5      $ NTr  	r)  r0  rB  r  r  r  r  r  r  s	            r  r5   r5   	  ;     	 r   zaten::conv_transpose2dc	                2    [        U UUUUUUSUUS S S S 5      $ r  r  r  s	            r  r6   r6   
  r  r   zaten::conv_transpose3dc	                2    [        U UUUUUUSUUS S S S 5      $ r  r  r  s	            r  r7   r7   $
  r  r   zaten::batch_normc
                   [         R                  " US5        [        R                  " 5       (       aL  [         R                  " XX4U/5      (       d.  [
        R                  S:  a  [         R                  " SSSSU5      $ [         R                  " XX#XE5      u  p#pEU R                  SUUUUUUSU-
  U(       d  SOSS9	n
U(       d  U
$ U
u  ppnUR                  UR                  5       5        UR                  UR                  5       5        UR                  S	UR                  5       -   5        UR                  S	UR                  5       -   5        U$ )
Nr#      BatchNormalizationr  zaAll input tensors must have the same `dtype`. Turn off Autocast or export using opset version 15.rE  r4  )	epsilon_f
momentum_fr^  zbatch_norm_dead_output-)r   check_training_modera  is_autocast_enabledargs_have_same_dtyper   export_onnx_opset_versionrI  _batchnorm_helperr%  r&  r  setDebugName	debugName)r)  r0  rB  r  running_meanrunning_vartrainingmomentumepsr  r{  resnew_running_meannew_running_var
saved_mean	saved_vars                   r  r#   r#   C
  sP    '',? 	!!##44D<
 
 --2?? C
 	
 />.O.O	&/+F, $$x<!q  
C 
HKEI  !2!2!45 0 0 23 9J<P<P<R RS89;N;N;PPQ
r   zaten::native_layer_normc                   [        [        U5      SS5       Vs/ s H  of* PM     nn[        R                  " U S5      n[        R                  " X5      n	U R                  S:  a  U R                  SXS9n
OBU R                  SUU R                  S[        R                  " U[        R                  S9S	95      n
[        XU
5      n[        R                  R                  U5      [        R                  R                  :H  nU(       aR  [        R                  R                  U	5      nU R                  S
U[        R                  " U5      R                  5       S9nU R                  S:  a  U R                  S[        XU5      US9nOLU R                  S[        XU5      U R                  S[        R                  " U[        R                  S9S	95      n[!        X R                  SX5      5      nU R                  SX5      nU(       aR  [        R                  R                  U5      nU R                  S
U[        R                  " U5      R                  5       S9nUb(  [        R"                  " U5      (       d  [%        U UU5      nUb(  [        R"                  " U5      (       d  ['        U UU5      nU(       aF  U R                  S
U[        R                  " W5      R                  5       S9nU R                  SU5      nO[)        X5      nUU
U4$ s  snf )Nr   r+         @   r  r  r^  r  r_  ro  rp  rC  rn  r  )r&  rW  r   _generate_wrapped_numberr  r%  ra  r   longr   r	   ru  rv  r  rz  r   r   rH  r   r   r   )r)  r0  normalized_shaperB  r  r  r  r  two_csteps_cstr	  	numeratoris_type_half	eps_dtypevariancedenominator
normalizedinput_dtyperdenominators                      r  r   r   |
  s    c"23Q;<;1B;D<66q#>G66q>Gww|ttL%t5ttDDU\\$ejj%IDJ
 Ad#I 	!!,,Y7$$))	*  --88A	DDIK$=$=i$H$R$R$T  
	
 	ww|44c!&@4N44g&DDU\\$ejj%IDJ
 q$$uh89KeY4J !//::5ATTJ[%>%>{%K%U%U%W  

 No66v>>J/
LO44T::J-

 dd**;7AAC  

 ttL+6!!1t\))C =s   Lzaten::layer_normc                (    [        XX#XE5      u  n  nU$ r  )r   )	r)  r0  r  rB  r  r  cudnn_enabler  r  s	            r  rq   rq   
  s      )3CTWJ1r   zaten::instance_normc
                   [         R                  " US5        [         R                  " US5      n
Ub  [         R                  " U5      (       an  U
c  [        R
                  " SU5      e[        R                  " S/U
-  [        R                  R                  U5      R                  5       S9nU R                  SUS9nUb  [         R                  " U5      (       an  U
c  [        R
                  " SU5      e[        R                  " S/U
-  [        R                  R                  U5      R                  5       S9nU R                  SUS9nUb9  [         R                  " U5      (       d  Ub  [         R                  " U5      (       a  U R                  S	XX8S
9$ [         R                  " U5      nUR                  5       nUS   nUc  [        R
                  " SU5      eUS   nSUS'   UU-  US'   [        XU R                  S[        R                  " U/[        R                   S9S95      n[        XU R                  S[        R                  " U/[        R                   S9S95      n[        U UU R                  S[        R                  " U/[        R                   S9S95      n[        U UU R                  S[        R                  " U/[        R                   S9S95      nU R                  SUU R                  S[        R"                  " U5      S95      n[%        U UUUUUUUUU	5
      n['        U UU R                  S[        R                  " U5      S95      $ )Nrk   rE  zCUnsupported: ONNX export of instance_norm for unknown channel size.r  r  r^  r_  r  InstanceNormalizationr  r   zJUnsupported: ONNX export of instance_norm training for unknown batch size.Reshape)r   r  r  rH  r
   rk  ra  r   r	   ru  rv  r  r%  r  copyr   r  r/  r#   r  )r)  r0  rB  r  r  r  use_input_statsr  r  r  channel_sizeweight_value
bias_value
input_sizeinput_size_reshaper*  cweight_bias_running_mean_running_var_input_reshapedr{  s                          r  rk   rk   
  s    ''I"77qAL~11&99++U  ||EL ++66u=CCE
 j,7|//55++U  \\EL ++66u=CCE

 ttJ
t3##L11##K00tt+UDtPP$66u=
 (__.qM9++ 
 qM !1 !A1qttJaS0TtU
 QTT*ellA3ekk.RTS
 DDU\\1#U[[%IDJ

 DDU\\1#U[[%IDJ

 DDU%5%56H%IDJ

 
 AsADDU\\*5MDNOOr   zaten::unfoldc                f   [         R                  " U5      n XR   nUb  [        SXd5      n[        X6S-   U5      n[	        Xx5       V	V
s/ s H  u  p[         R
                  " XU/U	/U
/S9PM!     nn	n
[        U5      n[        [        SU5      5      nUR                  UR                  U5      5        U Vs/ s H)  n[         R                  " X R                  SXS9U/5      PM+     nnU R                  " S/UQ7SU06$ [         R                  " SS	U5      $ ! [         a    S n GNf = fs  sn
n	f s  snf )
Nr   rE  rt  r  r   r4  r5  Unfoldr  )r   r  r	  r&  r  rv  rW  r7  r  popr  r%  r_  )r)  r0  	dimensionr   stepr  sizedimlow_indices
hi_indiceslowhir   r'  r(  r   r  s                   r  r  r  <  sX    --e4E"
 Aw-41d3

 {7	
 8 ))	{C5t 8	 	 
 5zE!TN#DHHY'(
 	
  --44Q44yk 	 	 
 ttH;y;;;--15
 	
1   

s   D &D(50D.D%$D%z	aten::eluc                    U(       a  US:w  a  [         R                  " SSU5      $ U(       a  US:w  a  [         R                  " SSU5      $ U R                  SU[         R                  " U5      S9$ )Nr  r  zdoes not support scale in Eluinput_scalez#does not support input_scale in EluElur  )r   r_  r%  rJ  )r)  r0  rM  r  r  s        r  rF   rF   `  sq     #--4e
 	
 {c)--@+
 	
 44uo&=&=e&D4EEr   z
aten::seluc                &    U R                  SU5      $ )NSelur.  r/  s     r  r   r   p  s     44r   zaten::index_selectc                0    [         R                  " XX#5      $ r  )r   _select_helper)r)  r=  rB   rj   s       r  ri   ri   v  s     ))!3>>r   zaten::index_putc                   [         R                  " U5      (       a  [         R                  " U5      nOU/n[         R                  " US5      n[	        U5      S:X  a  U(       a  [        XU5      $ U$ [         R                  " SSSU5        g )Nr<  r   rh   r  rD  )r   r0  r  r  rW  r   r  )r)  r=  indices_list_valuevalues
accumulateindices_lists         r  rh   rh     su    &&'9::&334FG*+ ++J<J
<Aq''++KBEr   zaten::index_fillc                    [         R                  " XX#5      u  pV[         R                  " U5      n[         R                  " XA5      n[	        XUS 5      n[        XX&U5      $ r  )r   _index_fill_reshape_helperrK  r  rO   r   )r)  r=  rB   rj   rd  expanded_index_shapeexpanded_indexexpanded_values           r  rg   rg     s[    +:+U+U	,( --e4E..u;EA&:DAN1C@@r   zaten::index_copyc                N    [         R                  " XX#5      u  pV[        XX&U5      $ r  )r   r   r   )r)  r=  rB   rj   source_expanded_index_shaper"  s          r  rf   rf     s,    ,;,V,V	-) 1C88r   zaten::bucketizec                   [         R                  R                  nU(       a  [         R                  R                  nU R	                  SU R	                  SU5      U R	                  SU5      SS9n[
        R                  " U5      nUc   e[        [        SUS-   5      5      n[        U [
        R                  " XU5      US 5      n	U(       a  [        XU	5      n
O[        XU	5      n
U R	                  SXS9n[
        R                  " XS/SS9$ )	Nr4  r-  r   ru  rE  ro  rp  r  )rr  rs  rt  rq  r%  r   r  r7  r&  rO   r  rZ   r_   r  )r)  r=  
boundaries	out_int32r#  out_type	new_shapetensor_rankunsqueeze_axesexpanded_boundariescondcond_outs               r  r*   r*     s    
 **00H..44 XqttGZ8!$$w:MVWXI "2248K"""%;?34N 	))!H	 !./!./ttFDt0H ,,Q!QRSSr   zaten::type_asc                    [         R                  " U5      n[         R                  " U5      nX4:X  a  Ub  U$ Ub  U R                  SUUR                  5       S9$ [        R
                  " SU5      e)Nro  rp  zUnsupported: ONNX export of type_as for tensor of unknown dtype. Please check if the dtype of the parameter passed to the type_as function is correct.)r   r  r%  rz  r
   rk  )r)  r=  rA  
self_dtypeother_dtypes        r  r   r     s     55d;J!66u=K Z%;tt&&(  
 	
 
#
#	? 		 r   zaten::cosine_similarityc                n   [         R                  " U [        XU5      U/SS9n[         R                  " U [        XU5      U/SS9n[         R                  " U [        XU5      U/SS9n[        U [	        U [        XU5      5      U R                  S[        R                  " U/5      S95      n[        XU5      $ )Nr   r  r^  r_  )	r   r  r   r   r   r%  ra  r   rC   )	r)  x1x2rB   r  r?   x1_l2x2_l2div_tenss	            r  r>   r>     s     --	3qb>3%AE --	3qb>3%AE --	3qb>3%AE 	43q'(!$$z5<<QTPUCV$*WH q""r   zaten::pairwise_distancec                   [         R                  " U5      (       d%  U R                  S[        R                  " U/5      S9n[        U U R                  S[        R                  " S/[        R                  S9S9[        XU5      5      n[         R                  " U [        U [        XU5      U5      S/[         R                  " US5      S9n[        XU5      $ )Nr^  r_  rE  r  r+  r  r  )r   rG  r%  ra  r   rC   r  r   r  r   r   r  )r)  input1input2pr  r5  inv_p	summations           r  r   r     s    $$S))dd:u||SE':d;		Zqc!EFA#E
  11	As1f%q)t"--gs;	I qU##r   zaten::clonec                    U$ r  r!  )r)  r0  unused_memory_formats      r  r1   r1     	     Lr   z	aten::absc                &    U R                  SU5      $ )NAbsr.  r  s     r  r   r     r  r   z	aten::logc                &    U R                  SU5      $ )NLogr.  r  s     r  r~   r~     r  r   zaten::log1pc                    [        U [        U [        R                  " [        R
                  " S5      U5      U5      5      $ )NrE  )r~   r   r   r  ra  r   r  s     r  r   r     s.    q#a;;EJJqM4PRVWXXr   zaten::log10c           
         SnU R                  S[        X5      U R                  S[        R                  " U/5      S95      $ )NgUk@rn  r^  r_  r%  r~   ra  r   )r)  r=  _ln10s      r  r   r     s6    "E44s1|QTT*ellE7>ST%TUUr   z	aten::powc                   [         R                  R                  U5      n[        R                  " U5      (       d8  [         R                  R
                  nU R                  SXR                  5       S9n[        R                  " U5      (       d  U R                  SUUR                  5       S9nU R                  SX5      nU$ )Nro  rp  r  )r	   ru  rv  r   rx  ry  r%  rz  )r)  r=  exponentf_dtyper   s        r  r   r     s    ''2248G!!$''++11ttFD'8'8':t;!!(++44""$  

 $$ud
%CJr   zaten::clampc           
        [         R                  " U5      (       a  [        XU5      $ [         R                  " U5      (       a  [        XU5      $ [         R                  " U5      (       a^  [         R                  " U5      (       aC  [         R
                  " U SU[         R                  " US5      [         R                  " US5      SS9$ [        U [        XU5      U5      $ )NClipr[     min_fmax_fr  )r   rH  r.   r/   r  r  r  )r)  r=  r   r   s       r  r0   r0   ,  s     $$#&&		!	!#	&	&#&&'',,1M1Mc1R1R"??%00c:%00c:  Q	!3 7==r   zaten::clamp_minc           	     :   [         R                  " U5      (       a-  [         R                  " U SU[         R                  " US5      SS9$ [        R
                  R                  U5      nU R                  SX#R                  5       S9n[         R                  " U SXSS9$ )	NrO  r[  rP  )rR  r  ro  rp  Maxr  	r   r  r  r  r	   ru  rv  r%  rz  )r)  r=  r   r  s       r  r/   r/   B       ##C((;;vt?#=#=c3#GVX
 	
 ))44T:dd63__%6d7;;udb
 	
r   zaten::clamp_maxc           	     :   [         R                  " U5      (       a-  [         R                  " U SU[         R                  " US5      SS9$ [        R
                  R                  U5      nU R                  SX#R                  5       S9n[         R                  " U SXSS9$ )	NrO  r[  rP  )rS  r  ro  rp  Minr  rV  )r)  r=  r   r  s       r  r.   r.   Q  rW  r   z	aten::maxc                0    [         R                  " XX#5      $ r  )r   _max_helperr)  r=  dim_or_yr5  s       r  r   r   `  s    
 &&qBBr   zaten::maximumc                    [        XUS9$ N)r]  )r   rm  s      r  r   r   h       q%((r   z	aten::minc                0    [         R                  " XX#5      $ r  )r   _min_helperr\  s       r  r   r   n  s     &&qBBr   zaten::minimumc                    [        XUS9$ r_  )r   rm  s      r  r   r   t  r`  r   z
aten::amaxc                $    U R                  SXUS9$ )Nr  r  r.  r)  r=  rB   r5  s       r  r   r   z       44T'4BBr   z
aten::aminc                $    U R                  SXUS9$ )N	ReduceMinr  r.  re  s       r  r   r     rf  r   zaten::aminmaxc                    SU0n[         R                  " U5      (       d  [         R                  " USS5      nU/US'   U R                  " SU40 UD6U R                  " SU40 UD64$ )Nr  r  rB   r  rh  r  )r   rH  rh  r%  )r)  r=  rB   r5  reduce_kwargss        r  r   r     st     "7+M##C((((c59#&%h44T3]3QTTT6*6  r   z	aten::expc                &    U R                  SU5      $ )Nr  r.  r  s     r  rM   rM     r  r   zaten::dropout_zaten::dropoutc                l    [         R                  " US5        U(       d  U$ U R                  SXSS9u  pEU$ )NrE   Dropoutr  )ratio_fr^  )r   r  r%  )r)  r0  r=  trainr  r  s         r  rE   rE     s7     ''y944	5Q47DAHr   zaten::alpha_dropout_zaten::feature_alpha_dropout_zaten::feature_dropout_zaten::feature_alpha_dropoutzaten::alpha_dropoutzaten::feature_dropoutc                J   ^  [         R                  " SSS5      U 4S j5       nU$ )NrZ  r  r<  c                F   > U(       a  [         R                  " TSU5      $ U$ )Nztraining mode)r   r_  )r)  r0  r=  ro  r  s       r  feature_dropout-_unsupported_dropout.<locals>.feature_dropout  s"     "11$OOr   r   r  )r  rr  s   ` r  _unsupported_dropoutru    s.    2 VS1 2 r   z
aten::normc                R   US:X  a  [         R                  " S5      nO4US:X  a  [         R                  " S5      nO[        R                  " SU5      eU" XX4S9nUbK  [         R                  " USS5      nU R                  S	U[        R                  " U5      R                  5       S
9nU$ )NrE  ReduceL1r  ReduceL2z)ONNX export only p-norms with p of 1 or 2)rB   r5  r  r  ro  rp  )	r   _reduce_op_symbolic_helperr
   rk  rh  r%  r	   ru  rz  )r)  r=  r=  rB   r5  r  r[  r  s           r  r   r     s     	Av66zB	
a66zB''7
 	
 qC1F**5#w?ff;+D+DU+K+U+U+WXMr   zaten::conv_tbcc           
         U R                  SU/ SQS9nU R                  SU/ SQS9n[        XX#S/U/S/S5      nU R                  SU/ SQS9$ )Nr  )rE  r  r   r   )r  rE  r   rE  )r  r   rE  )r%  r8   )r)  r0  rB  r  r   convs         r  r4   r4     s[     DDeID6ETT+viT8F!F1#uqc1=D44T)444r   zaten::_uniquec                0    [         R                  " SU5      $ )N_uniquer  )r)  r0  sortedreturn_inverses       r  r}  r}    s     ,,Y>>r   zaten::_unique2c                6    [         R                  " SSSU5        g )N_unique2r  rD  r  )r)  r0  r~  r  return_countss        r  r  r    s     ++J2uEr   zaten::_cast_Bytez8Avoid using this function and create a Cast node insteadc                T    U R                  SU[        R                  R                  S9$ r  )r%  rr  rs  r  r)  r0  non_blockings      r  
_cast_Byter    %     44G$?$?$E$E4FFr   zaten::_cast_Charc                T    U R                  SU[        R                  R                  S9$ r  )r%  rr  rs  r  r  s      r  
_cast_Charr    %     44G$?$?$D$D4EEr   zaten::_cast_Shortc                T    U R                  SU[        R                  R                  S9$ r  )r%  rr  rs  r  r  s      r  _cast_Shortr    r  r   zaten::_cast_Intc                T    U R                  SU[        R                  R                  S9$ r  )r%  rr  rs  rq  r  s      r  	_cast_Intr    r  r   zaten::_cast_Longc                T    U R                  SU[        R                  R                  S9$ r  )r%  rr  rs  rt  r  s      r  
_cast_Longr    r  r   zaten::_cast_Halfc                T    U R                  SU[        R                  R                  S9$ r  )r%  rr  rs  FLOAT16r  s      r  
_cast_Halfr    s%     44G$?$?$G$G4HHr   zaten::_cast_Floatc                T    U R                  SU[        R                  R                  S9$ r  )r%  rr  rs  ry  r  s      r  _cast_Floatr    r  r   zaten::_cast_Doublec                T    U R                  SU[        R                  R                  S9$ r  )r%  rr  rs  r  r  s      r  _cast_Doubler     s%     44G$?$?$F$F4GGr   zaten::_cast_Boolc                T    U R                  SU[        R                  R                  S9$ r  r  r  s      r  
_cast_Boolr  &  r  r   zaten::emptyc                    [        XX#XE5      $ r  )r  )r)  r  r  layoutdevice
pin_memorymemory_formats          r  rJ   rJ   ,  s     5&==r   zaten::empty_likec                    [        XX#XE5      $ r  )r  )r)  r0  r  r  r  r  r  s          r  rI   rI   :  s     avBBr   zaten::new_emptyc                    [         R                  " U5      n[         R                  " U5      (       a  Ub  Un[        XX4XV5      $ r  )r   r  rH  rJ   r)  r=  r  r  r  r  r  r2  s           r  r   r   H  s>     !55d;J&&:+A5&==r   zaten::scalar_tensorc                    [         R                  " USS5      nUc  [        R                  R                  nU R                  SU[        R                  " U5      R                  5       S9nU$ )Nr  r  ro  rp  )r   rh  r	   ru  ry  r%  rz  )r)  scalarr  optionss       r  r   r   R  sY    &&uc7;E}))//TT&&{'@'@'G'Q'Q'STTFMr   zaten::tensorc                   [         R                  " USS5      n[         R                  " U5      (       a  Uc6  [        R                  R                  [         R                  " U5      S   5      n/ n[         R                  " U5       H  nU R                  S[        R                  " S/5      S9n[         R                  " XU5      nU R                  SU[        R                  " U5      R                  5       S9nUR                  U5        M     U R                  " S	/UQ7S
S06$ Uc  [        R                  R                  U5      n[         R                  " U5      (       aH  [         R                  " U5      (       d  [         R                  " U5      (       a  U R                  SUSSS9nU R                  SU[        R                  " U5      R                  5       S9$ )Nr  r  r   r^  rE  r_  ro  rp  r4  r5  ConcatFromSequence)r5  
new_axis_i)r   rh  r0  r	   ru  rv  r  r%  ra  r/  r;  rz  r  _is_listrH  _is_scalar_list)r)  datar  r  requires_gradr  r   shape_references           r  r   r   [  s    &&uc7;E&&t,,=--88,,T215E 
 --d3Add:u7G7G7LdMO//oFAVQ[%>%>u%E%O%O%QRAa 	 4
 ttH4z4!44=--88>E##D))++D11..t4444,d14KD44;#<#<U#C#M#M#O4PPr   zaten::as_tensorc                    [        XX#5      $ r  )r   )r)  r  r  r  s       r  r   r   w  s    !5))r   zaten::zerosc           	        Uc  [         R                  R                  nO[         R                  " U5      n[        R                  " US5      n[        U[        5      (       aP  [        U5      S:X  aA  U R                  S[        R                  " / 5      R                  [        R                  5      S9nU R                  SU[        R                  " S/UR                  5       S9S9$ )Nr*  r   r^  r_  ConstantOfShaper  r	   ru  ry  r   r.  r6  r7  rW  r%  ra  r   r   r  r  r)  r  r  r  r  r  r|  sizes_s           r  r  r  |  s     }!//55!//6--eT:F&$CK1$4Zb)9)<)<U[[)IJ44aS(9(9(;<   r   zaten::zeros_likec           	     `   U R                  SU5      n[        R                  " U5      (       a9  [        R                  R                  U[        R                  R                  5      nO[        R                  " U5      nU R                  SU[        R                  " S/UR                  5       S9S9$ )Nr-  r  r   r  r_  
r%  r   rH  r	   ru  rv  ry  ra  r   r  	r)  r0  r  r  r  r  r  r8  r|  s	            r  r  r         DD% E&&!//::;,,22
 "//644aS(9(9(;<   r   zaten::new_zerosc                    [         R                  " U5      n[         R                  " U5      (       a  Ub  Un[        XX4XV5      $ r  )r   r  rH  r  r  s           r  r   r     s>     !55d;J&&:+A5&==r   z
aten::zeroc                F    [         R                  " U5      n[        XU5      $ r  )r   r  r  )r)  r=  r2  s      r  r  r    s     55d;Jaz**r   z
aten::onesc           	        Uc  [         R                  R                  nO[         R                  " U5      n[        R                  " US5      n[        U[        5      (       aP  [        U5      S:X  aA  U R                  S[        R                  " / 5      R                  [        R                  5      S9nU R                  SU[        R                  " S/UR                  5       S9S9$ )Nr*  r   r^  r_  r  rE  r  r  r  s           r  r   r     s     }!//55!//6--eT:F&$CK1$4Zb)9)<)<U[[)IJ44aS(9(9(;<   r   zaten::ones_likec           	     `   U R                  SU5      n[        R                  " U5      (       a9  [        R                  R                  U[        R                  R                  5      nO[        R                  " U5      nU R                  SU[        R                  " S/UR                  5       S9S9$ )Nr-  r  rE  r  r_  r  r  s	            r  r   r     r  r   zaten::new_onesc                    [         R                  " U5      n[         R                  " U5      (       a  Ub  Un[        XX4XV5      $ r  )r   r  rH  r   r  s           r  r   r     s>     !55d;J&&:+A%<<r   z
aten::fullc                $   [         R                  " US5      n[         R                  " U5      (       aZ  Uc  [        R                  R
                  OUn[        XX4U5      n[        XX R                  S[        R                  " S5      S95      $ [         R                  " USS5      nUc  [        R                  R
                  n	O[        R                  " U5      n	[         R                  " US5      n
[        U
[        5      (       aP  [        U
5      S:X  aA  U R                  S[        R                  " / 5      R                  [        R                   5      S9nU R                  S	UUR#                  S5      R                  U	R%                  5       5      S9$ )
Nr   r^  rE  r_  r  r  r*  r   r  )r   r.  rG  r	   ru  ry  r  r   r%  ra  r   rh  r6  r7  rW  r   r  r  r  )r)  r  rd  r  r  r  r  const_valuetmpr|  r  s              r  rX   rX     s:    "225#>K  --38=))//eAeV415$$z5<<?$"KLL**5#w?=%3399K%33E:K 11%>fd##Fq(8DDU\\"-=-@-@-MDNEtt$$Q'**;+<+<+>?  
 	
r   zaten::full_likec                v   [         R                  " US5      n[         R                  " USS5      nUc9  [        R                  R                  U[        R                  R                  5      nO[        R                  " U5      n[         R                  " U5      (       aY  [        XX4U5      n	U R                  SX(R                  5       S9n[        X	X R                  S[        R                  " S5      S95      $ U R                  S	U5      n
U R                  S
U
[        R                  " U/UR                  5       S9S9$ )Nr[  r  r  ro  rp  r^  rE  r_  r-  r  r  )r   r.  rh  r	   ru  rv  ry  rG  r  r%  rz  r   ra  r   r  )r)  r0  
fill_valuer  r  r  r  r  r|  r  r8  s              r  rW   rW     s	    !11*cBJ&&uc7;E}!//::;,,22
 "//6  ,,5&9TT&*3H3H3JTK
1:ttJQt'PQQWe$ttLL*[5F5F5HI  
 	
r   zaten::new_fullc           	         [         R                  " U5      n[         R                  " U5      (       a  Ub  Un[        XX4XVU5      $ r  )r   r  rH  rX   )	r)  r=  r   r  r  r  r  r  r2  s	            r  r   r   %  s@     !55d;J&&:+AFJGGr   	aten::eyec           	        [        U5      S:X  aN  Uu  p#pEn[        R                  " XS/5      nU R                  SXwSS9n[	        XX4U5      n	U R                  SU	5      $ [        U5      S:X  ac  Uu  p*p4pVU R                  S[        R                  " XS/5      [        R                  " X
S/5      SS9n[	        XX4U5      n	U R                  SU	5      $ [        R
                  " SS[        U5       S	35      $ )
Nr4  r   r4  ru  EyeLiker  r  with 
 arguments)rW  r   r  r%  r  r_  )r)  rY  r*  r  r  r  _pin_memoryr  r8  r   ms              r  rP   rP   6  s    
4yA~04-&+"44QA3?Xx!<q7ttIv&&
4yA~370eV--aQC8--aQC8	  
 q7ttIv&&))+s4yk7TUUr   aten::slicec                   [        U5      S:X  Gax  Uu  p4pV[        R                  " US5      nUS:w  a  [        R                  " SU5      eUR                  5       R                  5       S:H  =(       a(    [        UR                  5       [        R                  5      nUR                  5       R                  5       S:H  =(       a(    [        UR                  5       [        R                  5      nUR                  5       R                  5       S:H  n	UR                  5       R                  5       S:H  n
U(       d  U	(       a0  U(       d  U
(       a"  UR                  5       R                  5       S:w  a  [        R                  [        R                  R                  :X  a  [        R                  " SU5      e[        R                   " XS/5      n[        R                   " XS/5      n[        R                   " XS/5      nU R#                  S	UUUU5      $ U(       a  SO[        R                  " US5      nU(       a  [$        R&                  O[        R                  " US5      n[        R                  " US5      n[        R(                  " XU/U/U/S
9$ [        U5      S:X  Ga  Uu  pEnSnUR                  5       R                  5       S:H  =(       a(    [        UR                  5       [        R                  5      nUR                  5       R                  5       S:H  =(       a(    [        UR                  5       [        R                  5      nU(       a  SO[        R                  " US5      nU(       a  [$        R&                  O[        R                  " US5      n[        R(                  " XU/U/U/S
9$ [        R*                  " SS[        U5       S35      $ )Nr2  r  rE  z"step!=1 is currently not supportedr$  rc  zUnsupported: ONNX export of Slice with dynamic inputs. DynamicSlice is a deprecated experimental op. Please use statically allocated variables or export to a higher opset version.r   DynamicSlicert  r  r  r  r  )rW  r   r  r
   rk  r  r  r6  r  r   NoneTyper   operator_export_typerr  OperatorExportTypesONNXr  r%  r   r   rv  r_  )r)  r=  rY  rB   r   r!  r  is_start_noneis_end_noneis_start_onnx_constis_end_onnx_conststart_unsqueezedend_unsqueezeddim_unsqueezeds                 r  r   r   N  s   
4yA~ $C))$419++,PRVWW

))+/?? 
JJJL"++E
 hhjoo'+;; 

HHJA
 $jjl//15EEHHJOO-1AA*= +<xxz $44++w/J/J/O/OO//E 	  $3#D#DQPQs#S !0!B!B1A3!O!0!B!B1A3!Ott"$""  'AO,F,Fuc,RE  $$$//S9 
 ",,S#6C"00seUG3%  
TaD

))+/?? 
JJJL"++E
 hhjoo'+;; 

HHJA
 #(B(B5#(N     ++C5 	
 ,,3%se
 	
 ))-5T:9VWWr   zaten::hardtanhc           	     2    [         R                  " U SXUSS9$ )NrO  rP  rQ  r  )r)  r=  min_valmax_vals       r  rd   rd     s"     77	64gB r   zaten::hardswishc                <    [        X5      nU R                  SX5      $ rz  )rb   r%  )r)  r=  hss      r  rc   rc     s     
Q	B44t  r   zaten::hardsigmoidc                $    U R                  SUSS9$ )NHardSigmoidgUUUUUU?r  r.  r  s     r  rb   rb     s     44tU433r   zaten::tanhshrinkc                :    U R                  SU[        X5      5      $ )NrO  )r%  r   r  s     r  r   r     s     44tT!]++r   zaten::hardshrinkc                   [         R                  R                  U[         R                  R                  5      nU R	                  S[
        R                  " X#R                  5       S9S9n[        U [        XU5      [        X[        X5      5      5      nU R	                  SUUU R	                  S[
        R                  " SUR                  5       S9S95      $ Nr^  r  r_  r  r   )r	   ru  rv  ry  r%  ra  r   r  r   r_   r   r   )r)  r=  lambdr|  lambd_opr/  s         r  ra   ra     s     ++66k''--K ttU*;*;*=>  H aAX.1C<L0MND44	LL+*;*;*=> 	 	
	 r   zaten::softshrinkc                `   [         R                  R                  U[         R                  R                  5      nU R	                  S[
        R                  " X#R                  5       S9S9n[        XU5      nU R	                  SU[        XU5      U R	                  S[
        R                  " SUR                  5       S9S95      n[        X[        X5      5      nU R	                  SU[        XU5      U R	                  S[
        R                  " SUR                  5       S9S95      n[        XU5      $ r  )r	   ru  rv  ry  r%  ra  r   r  r_   r   r   r   r   )	r)  r=  r  r|  r  gt_condgt_outlt_condlt_outs	            r  r   r     s    ++66k''--K ttU*;*;*=>  H (#GTTAX	LL+*;*;*=> 	 	
	F #a*+GTTAX	LL+*;*;*=> 	 	
	F q&!!r   zaten::aliasc                    U$ r  r!  r  s     r  r   r     r  r   zaten::unsqueezec                0   US:  a{  [         R                  " U5      nUbJ  [        R                  " S[	        U5      -   S-   S-   S-   [	        X#-   S-   5      -   S-   S-   5        X#-   S-   nO[         R
                  " S	S
U5      $ [         R                  " XU/S9$ )zbImplement unsqueezing a pytorch tensor in ONNX by inserting a new dimension at the specified `dim`r   z)ONNX export unsqueeze with negative axis r}  r~  r  rE  r  r  r  r  r  )r   r  r@  rA  r  r_  r  rQ  s       r  r  r    s    
 Qw//5MM;c(AB == *	*
 cj1n%& ;; XX	 *q.C"11Dd  ,,QcUCCr   z
aten::sortc                    Ub  [         R                  " SSU5        [         R                  " U5      n XR   nUc  [         R                  " SSU5      $ U R	                  SXUSS9$ ! [         a    S n N;f = f)NSortz'Out parameter is not supported for sortr  TopKr  k_ir5  r^  )r   r_  r  r	  r%  )r)  r=  rB   	decendingr{  
self_sizesr  s          r  r   r     s     &&=t	
 !2248J? --f6QSWXX4434BB   s   A$ $A32A3zaten::numelc                .    [         R                  " X5      $ r  )r   _numel_helperr  s     r  r   r   %  s    ((11r   z
aten::topkc                    Ub  [         R                  " SSU5        U(       d  [         R                  " SSU5        U R                  SXUSS9$ )Nr  z'Out parameter is not supported for topkzAscending TopK is not supportedr  r  )r   r_  r%  )r)  r=  r  rB   largestr~  r{  s          r  r   r   *  sO     &&=t	
 &&v/PRVW44C4;;r   zprim::convert_element_typec                    [         R                  " US   SS5      nU R                  SU[        R                  " U5      R                  5       S9$ )Nr   r  r  ro  rp  )r   rh  r%  r	   ru  rz  )r)  r=  rY  r  s       r  r;   r;   8  sC    &&tAwW=E44;#<#<U#C#M#M#O4PPr   zaten::toc                   S nU" U5      (       a  U$ [        U5      S:X  Gat  US   n[        R                  " US   5      (       a  US   R                  5       R	                  5       S:X  a~  [        R
                  " US   R                  5       S5      n[        U[        R                  5      (       a7  [        UR                  5      S:X  a  UR                  5       n[        U5      nOUn[        R                  " U5      (       d  [        U[        R                  5      (       aA  [        R                  R                  US   5      nU R                  SUUR!                  5       S9$ U R                  SU[        R                  " U5      R!                  5       S9$ [        U5      S:X  aN  [        R"                  " US	   S
S5      nU R                  SU[        R                  " U5      R!                  5       S9$ [        U5      S:X  aN  [        R"                  " US   S
S5      nU R                  SU[        R                  " U5      R!                  5       S9$ [        U5      S:X  aN  [        R"                  " US   S
S5      nU R                  SU[        R                  " U5      R!                  5       S9$ [        R$                  " SU5      $ )Nc                   [        U 5      S:X  a  U S   R                  5       R                  5       S:H  =(       dp    U S   R                  5       R	                  [
        R                  R                  5       5      =(       d+    [        U S   R                  5       [
        R                  5      $ [        U 5      S:X  a  [        R                  " U S   SS5      nUS L $ [        U 5      S;   a  [        R                  " U S   SS5      nUS L $ g	)
Nr2  r   prim::devicer4  rE  r  r  )r     F)rW  r  r  r  isSubtypeOfr   ListTypeofIntsr6  rd  r   rh  )rY  r  s     r  is_aten_to_device_only"to.<locals>.is_aten_to_device_only@  s    t9> Q##%7 @7<<>--bkk.@.@.BC@d1gllnb.>.>?
 Y!^ $..tAwWEED= Y&  $..tAwWEED= r   r2  r   rc  rd  ro  rp  r4  rE  r  r  r  r  zUnknown aten::to signature)rW  r   rG  r  r  rg  r6  ra  r6  r8  ro   r  r	   ru  rv  r%  rz  rh  r  )r)  r=  rY  r  r  tvals         r  r   r   >  s:   , d##
4yA~ Q%%d1g..Q##%)99",,T!W\\^WED$--tzz?a'99;DIE E$$U++z%/N/N--88aAE44__&    44;+D+DU+K+U+U+W4XX	Ta**47CAttFD{'@'@'G'Q'Q'StTT	Ta**47CAttFD{'@'@'G'Q'Q'StTT	Ta**47CAttFD{'@'@'G'Q'Q'StTT,,-I4PPr   zaten::repeatc                    [         R                  R                  n[        XU5      nU R	                  SX5      nU R	                  SX5      $ )Nr,  Tile)r	   ru  rt  r   r%  )r)  r=  repeatsr  shape_s        r  r   r     s@    %%++Eq5)F44$'D44&&r   zaten::repeat_interleavec                   [         R                  " U5      n[         R                  " U5      n[         R                  " U5      nUc  [        R                  " SU5      eUc  [        R                  " SU5      eUc  [        R                  " SU5      e[         R
                  " U5      (       a^  [         R                  " XU R                  S[        R                  " S/5      S95      n[        R                  " S[        R                  S9nO[         R                  " U5      nUS:  a  U[        U5      -  nUR                  5       n[        U5       H  u  pU
b  M
  S	u  Xy'   X'   M     US:X  d  US
:X  aB  US   S
:X  a9  Xs   S:X  a  [         R                  " SSSSU5      $ [         R                   " XX#5      $ US
:X  aZ  Xs   S:X  a  [         R                  " SSSSU5      $ US   c  [         R                  " SSSSU5      $ US   Xs   :X  d   S5       eUS   nO[        R                  " SU5      e/ n[         R"                  " XUS5      n[         R"                  " XX5      nSu  Xs'   X'   [        U5       H  u  p[%        XU	   US
-   5      nU R                  S[        R&                  " US US
-    5      S9UU R                  S[        R&                  " XS
-   S  5      S9/nU R                  " S/UQ7SS06n[)        U UUS 5      n[         R                  " U UU R                  S[        R&                  " U5      S9SS9nUR+                  U5        M     U R                  " S/UQ7SU06$ )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.r^  r+  r_  r   r  )r   r+  rE  r   r     z3Unsupported along dimension with unknown input sizez*Unsupported for cases with dynamic repeatsz2repeats must have the same size as input along dimz%repeats must be 0-dim or 1-dim tensor)r+  rE  r4  r5  	allowzero)r   r  r  r
   rk  rH  r;  r%  ra  r   r  rK  rW  r  	enumeraterI  -_repeat_interleave_single_value_repeat_helper_repeat_interleave_split_helperr  r/  rO   r  )r)  r=  r  rB   r
  repeats_dimrepeats_sizesinput_sizesinput_sizes_tempr  r  repsfinal_splitsr_splitsi_splitsr_spliti_splitr_concats                     r  r   r     s    "227;K#55g>M!33D9K''U
 	
 ''U
 	
 ''S
 	
 $$..QTT*ellB4.@TA
 ll1EKK0//4 Qws;"'')$[16;3K.3 2
 aK1,q1AQ1Fq "CC#E  LLW
 	

 
	q "CC#E  #"CC#<  Q;#33 	
@	
3 Q''(OQUVVL>>q4QRSH>>qRH.3+K&+!(+A}cAg6DDU%5%56Fyq6Q%RDSDDU%5%56FQwy6Q%RDS

 44686A6GXt4!11DDU%5%5k%BDC	
 	G$ ,  444<444r   zaten::pixel_shufflec                   [         R                  " U5      n[        U5      S:w  a  [         R                  " SSU5      $ [	        S USS   5       5      (       a  [         R
                  " U [         R                  " XSS/5      U R                  S[        R                  " S	S
X"S	S	/5      S9S	S9nU R                  SU/ SQS9n[         R
                  " U UU R                  S[        R                  " / SQ5      S9S	S9n[         R
                  " U UU R                  S[        R                  " / SQ5      S9S	S9n[         R                  " XSS/5      $ US   U-  U-  n[         R
                  " U UU R                  S[        R                  " S
UUUUS   US   /5      S9S	S9nU R                  SU/ SQS9n[         R
                  " U UU R                  S[        R                  " S
UUS   U-  US   U-  /5      S9S	S9$ )Nr2  r   only support 4d inputc              3  (   #    U  H  oS L v   M
     g 7fr  r!  r  s     r  r   pixel_shuffle.<locals>.<genexpr>       
'h9hr  rE  r  r  r^  r   r+  r_  r  r  )r   rE  r2  r  r4  r  r   )r   r   r+  rE  r   r   )r   r   r   r   r+  rE  r4  r   r  rW  r_  r  r;  r  r%  ra  r   rq  )	r)  r=  upscale_factorr:  
after_viewafter_transpose	reshape_h	reshape_woutput_channels	            r  r   r     s(    ,,T2D
4yA~--4d
 	
 
'd12h
'''$44--a1v>DDa^QPQ%RS   

 $${J?Q$R#33DDU\\2E%FDG	
	 $33DDU\\2E%FDG	
	 ..qaVDDaN2nD$44DD&&&QQ	   !

$ $${J?Q$R..DD&Q.0Q.0	  
 
 	
r   zaten::pixel_unshufflec                   [         R                  " U5      n[        U5      S:w  a  [         R                  " SSU5      $ [	        S USS   5       5      (       a  [         R
                  " U [         R                  " XS/5      U R                  S[        R                  " SSS	US/5      S
9SS9n[         R
                  " U UU R                  S[        R                  " SSSSS	U/5      S
9SS9nU R                  SU/ SQS9n[         R
                  " U UU R                  S[        R                  " / SQ5      S
9SS9n[         R                  " XSS/5      $ US   U-  U-  n[         R
                  " U UU R                  S[        R                  " S	US   US   U-  UUS   U-  U/5      S
9SS9n	U R                  SU	/ SQS9n[         R
                  " U UU R                  S[        R                  " S	UUS   U-  US   U-  /5      S
9SS9$ )Nr2  r   r  c              3  (   #    U  H  oS L v   M
     g 7fr  r!  r  s     r  r  "pixel_unshuffle.<locals>.<genexpr>I  r  r  rE  r  r^  r   r+  r_  r  r  )r   rE  r  r4  r  r2  r   )r   r+  rE  rE  r   r   r  r  )
r)  r=  downscale_factorr:  r  r   r  final_reshaper!  r  s
             r  r   r   A  s>    ,,T2D
4yA~--4d
 	
 
'd12h
'''#33--as;DDU\\1a=Mq2Q%RDS	
	 $33DDU\\1aArCS2T%UDV	
	 $${I>P$Q'77DDU\\2E%FDG	
 ..q!QHHa#336FF$44DDQQ#33(Q#33(	   !

$ $${J?Q$R..DD&Q#33Q#33	  
 
 	
r   c                p	  ^ ^^^,^-^.^/ [         R                  " ST-   S-   S-   S-   S-   5        / SQn[        [        U Vs/ s H  oR	                  5       PM     snU5      5      nU(       a  SOSnTS	:X  a0  [        U5      TU-  S
U	-   -  :w  a  [        R                  " S	SU5      $ [        U5      TU-  S
U	-   -  :X  d   e[        S[        U5      U5       Vs/ s H  nUUUU-    PM     snm-U
(       a  T R                  SU/ SQS9nU(       a  U(       a  [        R                  " SSU5      $ TR                  S5      (       a  UTSS  R	                  5          nSmUS
   n[        R                  " US
5      m,T,c  [        R                  " SSU5      $ U	(       + nUn/ nTS:X  d  TS:X  a  UnOTS	:X  a  Uu  nn/ nUc  [        T 5      OUnTS:X  a  / SQm.O
TS	:X  a  / SQm.S m/U U,U-U.U/U4S jnU U,U-U.U/U4S jnU U4S jn[        T5       GH/  nU(       a1  US:X  a  U" U5      u  nnnOU" U5      u  nn[        T 5      nUUS
-   4n OUS:X  a4  U" SU-  5      u  n!n"n#U" SU-  S
-   5      u  n$n%n&T R                  SU#U&SS9nO*U" SU-  5      u  n!n"U" SU-  S
-   5      u  n$n%[        T 5      nT R                  SU!U$SS9nT R                  SU"U%SS9nSU-  SU-  S-   4n UUUUU/n'U'R                  U" W/U Q76 5        TS	:X  a  U'R                  U" W/U Q76 5        U(       a  0 OSS0n(TS:X  a-  U	(       a  WU/n)OW/n)T R                  " S/U'Q7ST,U)S.U(D6u  nn*OGTS:X  a  T R                  " S/U'Q7ST,S
S .U(D6u  nn*O#TS	:X  a  T R                  " S	/U'Q7S!T,S".U(D6u  nn*n+U	(       aO  T R                  SU/ S#QS9n[        R                  " T UT R                  S$[        R                   " / S%Q5      S&9SS'9nO[        R"                  " T US
/5      nUR                  W*5        TS	:X  d  GM  WR                  W+5        GM2     U
(       a  T R                  SU/ SQS9nTS
:X  a  W*OT R                  " S/UQ7S(S06nTS:X  d  TS:X  a  UU4$ TS	:X  a#  TS
:X  a  W+OT R                  " S/WQ7S(S06nUUU4$ g s  snf s  snf ))NzVExporting a model to ONNX with a batch_size other than 1, with a variable length with z can cause an error z9when running the ONNX model with a different batch size. z4Make sure to save the model with a batch size of 1, z=or define the initial states (h0/c0) as inputs of the model. )r  r  r  Affiner  ThresholdedRelu
ScaledTanhr  r  Softsignr  r2  r  LSTMrE  zLSTMs with projectionsr   r  rE  r   r  r   zRNN/GRU/LSTMzdropout in training modeRNNzunknown hidden sizeGRU))rE  r  r   rE  )r  r  )r0  )r  r2  )rE  r  c                    U VVs/ s H#  u  pE[         R                  " XS/XB-  /XR-  /S9PM%     nnnU R                  " S/UQ7SS06$ s  snnf )Nr   rt  r4  r5  )r   rv  r%  )r)  wr*  	intervalsxyslicess          r  reform_weights$_generic_rnn.<locals>.reform_weights  sc     "
! ))!aS!%PQPUwW! 	 
 ttH0v0a00	
s   *A	c                   > TU    nT	S:X  a  Uu  p#OT	S:X  d  T	S:X  a  UUUU4S jU 5       u  p#[        U4S jWW4 5       5      $ )Nr.  r/  r,  c              3  :   >#    U  H  nT" TUTT5      v   M     g 7fr  r!  r  r2  r)  hidden_sizereform_permutationr7  s     r  r  B_generic_rnn.<locals>.transform_weights_no_bias.<locals>.<genexpr>  s#      $OV!q![2DEEw   c              3  V   >#    U  H  n[         R                  " TUS /5      v   M      g7fr  r   r  r  r4  r)  s     r  r  r>    s,      
+ --aQC88+   &))r  )
layer_indexweights	weight_ih	weight_hhr)  r<  layer_weightsr=  r7  variants
       r  transform_weights_no_bias/_generic_rnn.<locals>.transform_weights_no_bias  sa    ,e#* IyF!2$OV$ I  
+
 
 	
r   c                   > T	U    nTS:X  a  Uu  p#pEOTS:X  d  TS:X  a  UUU
U4S jU 5       u  p#pETR                  SWWSS9n[        U4S jWWU4 5       5      $ )	Nr.  r/  r,  c              3  :   >#    U  H  nT" TUTT5      v   M     g 7fr  r!  r;  s     r  r  :_generic_rnn.<locals>.transform_weights.<locals>.<genexpr>  s#      6OV!q![2DEEwr?  r4  r   ru  c              3  V   >#    U  H  n[         R                  " TUS /5      v   M      g7fr  rA  rB  s     r  r  rN    s,      
8 --aQC888rC  )r%  r  )rD  rE  rF  rG  bias_ihbias_hhbias_concatr)  r<  rH  r=  r7  rI  s          r  transform_weights'_generic_rnn.<locals>.transform_weights  s}    ,e5<2I'7F!26OV62I' dd8Wgad@ 
K8
 
 	
r   c                J   > TS:X  a  U $ [         R                  " TU S/U/U/S9$ )NrE  r   rt  r   rv  )r4  r   r!  r)  
num_layerss      r  retrieve_state$_generic_rnn.<locals>.retrieve_state  s<     Q 	
 !..1A3wcU	
r   r4  ru  direction_sbidirectional)r^  hidden_size_iactivations_s)r^  r\  linear_before_reset_ir  )r^  r\  )r   r  rE  r  r^  )r   r   r+  r_  r  r5  )r@  rA  dictr  lowerrW  r   r_  r&  r%  
startswithr  r  r  r;  ra  r/  rq  )0r)  rI  r0  initial_statesall_weights
has_biasesrW  rE   ro  r[  batch_firstbatch_sizesonnxActivationsact_funvariantToOnnxActivationMapweights_per_layerr  nonlinearityw_hhunidirectionalprev_outputh_outsh0c0c_outssequence_lensrJ  rS  rX  rF  rG  rR  state_indicesweight_ih_fweight_hh_fbias_fweight_ih_bweight_hh_bbias_binputsextra_kwargs
activationh_outc_outr<  rH  r=  r7  s0   ``    `                                     @@@@r  _generic_rnnr    s    MM	)
	 !	! F		F
 A	A J	JO "&O<O]]_O<oN" (Q&S->O1O	M2  --f6NPUVV{z,==]ARSSSS q#k*,=>>A 	A--.>M [%	:5--6
 	
 %  1'!"+2C2C2EFq>D!66tQ?K--15
 	
 '&NKF%7e+	F	B!,!4F1I+M% 6	F	 61
 

 

 : A%4Ea4H1	9k'@'C$	9$Qiq1uHM A%3DQU3K0[&3DQUQY3O0[&dd8VVAdF+DQU+K([+DQUQY+O([$QiX{KJIX{KJIE1q519,My)[-PnR8-89fMM.<m<=+r-1Qe*L9
*^
!""" )(" "K !""" )&'" "K ())))*+)IU)%K  $${K$MK)99Z)9)9*)EF	K *99![1#NKefMM% _ ` dd;IdF AoU144+L6+L!+LF%7e+F""	F	$/qttH/Pv/Pa/PFF** 
o =s   R.R3c
                    [         R                  " U5      [         R                  " U5      p[        U SUU
UUUUUUU	5      $ )Nr,  r   r  r  )r)  r0  hidden_vweight_vrd  rW  rE   ro  r[  re  hiddenrB  s               r  
_lstm_fullr  h  sU     	$$X.$$X.  	 r   c
                ~    [         R                  " U5      [         R                  " U5      p[        U SUU
UUUUUU	US9$ )Nr,  rf  r  )r)  r0  rf  r  r  rd  rW  rE   ro  r[  r  rB  s               r  _lstm_packedr    sU     	$$X.$$X.  	 r   z
aten::lstmc                n    [         R                  " US   5      (       a  [        U /UQ76 $ [        U /UQ76 $ Nr  )r   rH  r  r  )r)  rY  s     r  r   r     s7    &&tAw//A%%%!#d##r   zaten::lstm_cellc                   [         R                  " XS/5      n[         R                  " U5      nU Vs/ s H  n[         R                  " XS/5      PM     nn[         R                  " U5      (       a  X4XV4OX44n	[         R                  " U5      (       a  SOSn
[	        U SUUU	U
SSSSSS9u  pn[         R
                  " XS/5      [         R
                  " XS/5      4$ s  snf )Nr   TFr,  rE  )rW  rE   ro  r[  re  )r   r  r  
_is_tensorr  rq  )r)  r=  r  w_ihrl  b_ihb_hhr0  r4  rB  rd  r  ro  rr  s                 r  r   r     s    --as;E))&1FDJKFqo//qc:FFK$3$>$>t$D$DT 4,  )33D99uJ$	Av **	A3&&q1#67 7% Ls   "Cz	aten::grur/  gruzaten::rnn_tanhRNN_TANHrnn_tanhzaten::rnn_reluRNN_RELUrnn_reluc                   ^ ^^ [         R                  " SSSSSSSSS5	      U 4S j5       m[         R                  " SSSSSSSSS5	      U 4S j5       mUU4S jnU$ )NrZ  r  r[  c
                Z   > [         R                  " U5      n
[        U TUUU
UUUUUU	5      $ r  r  )r)  r0  r  r  rd  rW  rE   ro  r[  re  rB  r  s              r  	_rnn_full"_one_hidden_rnn.<locals>._rnn_full  sC     !--h7
 	
r   c
                V   > [         R                  " U5      n
[        U TUUU
UUUUU	US9$ )Nr  r  )r)  r0  rf  r  r  rd  rW  rE   ro  r[  rB  r  s              r  _rnn_packed$_one_hidden_rnn.<locals>._rnn_packed  sC     !--h7#
 	
r   c                d   > [         R                  " US   5      (       a	  T" U /UQ76 $ T" U /UQ76 $ r  )r   rH  )r)  rY  r  r  s     r  symbolic!_one_hidden_rnn.<locals>.symbolic  s8    **4733q(4((Q&&&r   rt  )r  r  r  r  s   ` @@r  _one_hidden_rnnr    so     S#sCc3L
 M
6 S#sCc3L
 M
6' Or   zaten::_dim_arangec           
         U R                  SU5      nU R                  SX0R                  S[        R                  " U5      S9SS9n[        XSS S S 5      $ )Nr-  r>  r^  r_  r   ru  r2  )r%  ra  r   r   )r)  likerB   
like_shapestops        r  _dim_aranger    sZ     gt$J44*dd:u||C7HdIRS  D !1dD$//r   zaten::detachc                    U$ r  r!  r/  s     r  rA   rA   #  rB  r   zaten::contiguousc                @    US:  a  [         R                  " SU5      eU$ )Nr  z-onnx memory_format support is not implemented)r
   rk  )r)  r0  r  s      r  r3   r3   )  s+     q'';U
 	
 Lr   zaten::_pack_padded_sequencec                   U(       a  U R                  SU/ SQS9nUR                  5       R                  [        R                  R
                  R                  5       5      (       d  [        R                  " SU5      e[        R                  R                  U[        R                  R                  5      [        R                  R                  :w  a)  U R                  SU[        R                  R                   S9nU R                  SXSS	9$ )
Nr  r-  r   z*'lengths' must be a Tensor for ONNX exportro  rp  zprim::PackPaddedr  r^  )r%  r  r  ra  r   
TensorTypegetr
   rk  r	   ru  rv  rw  r  rr  rs  rq  )r)  r0  lengthsre  s       r  _pack_padded_sequencer  3  s     [%	:<<>%%ehh&9&9&=&=&?@@''8%
 	
 	!!,,[..88	
 $$((	)
 $$vwW-H-H-N-N$O44"EA4>>r   zaten::_pad_packed_sequencec                b    U R                  SXSS9u  pU(       a  U R                  SU/ SQS9nX4$ )Nzprim::PadPackedr  r  r  r-  r   r.  )r)  r  rf  re  padding_valuetotal_lengthr  s          r  _pad_packed_sequencer  L  s:     DD*DqDIMDttKit8=r   zaten::randintc           	     0   [         R                  " USS5      n[         R                  " USS5      n[         R                  " USS5      nUc  [        R                  R                  nO[        R                  " U5      nUc  [         R
                  " SU5      eUc  [         R
                  " SU5      e[         R                  " US5      n	[         R                  " U	5      (       aF  U R                  SU[        R                  " S/[        R                  S	9S
9n
U R                  SU
UUS9nOU R                  SU	UUS9n[        R                  R                  nU R                  SXR                  5       S9nX:w  a  U R                  SXR                  5       S9nU$ )Nr  r  r  highr   r*  r  r   r  r_  RandomUniformLikelow_fhigh_fRandomUniform)shape_ir  r  ro  rp  )r   rh  r	   ru  rt  r  r.  rG  r%  ra  r   r  rz  )r)  r  r  shapesr  r  low_ihigh_ir|  r8  shape_constr   	int_dtyper   s                 r  r   r   _  sz   &&uc7;E&&sC7E''c6:F}!//55!//6}//	3??~//	4@@,,VT:E  ''ddLL!EKK8  

 	  
 	  
 ))//Idd65':':'<d=G$$vw-B-B-D$ENr   zaten::randint_likec                @   [         R                  " USS5      n[         R                  " USS5      n[         R                  " USS5      nUc  [        R                  R                  nO[        R                  " U5      nUc  [         R
                  " SU5      eUc  [         R
                  " SU5      eU R                  SUUUS9n	[        R                  R                  n
U R                  SXR                  5       S	9nX:w  a  U R                  SXR                  5       S	9nU$ )
Nr  r  r  r  r   r  r  ro  rp  )r   rh  r	   ru  rt  r  r%  rz  )r)  r=  r  r  r  r  r  r  r|  r   r  r   s               r  r   r     s   &&uc7;E&&sC7E''c6:F}!//55!//6}//	3??~//	4@@DD	  E ))//Idd65':':'<d=G$$vw-B-B-D$ENr   zaten::randnc           	        [         R                  " USS5      nUc  [        R                  R                  nO[        R                  " U5      n[         R
                  " US5      n[         R                  " U5      (       aR  U R                  SU[        R                  " S/[        R                  S9S9nU R                  SUUR                  5       S	9$ U R                  S
UUR                  5       S9$ )Nr  r  r*  r  r   r  r_  RandomNormalLikedtype_iRandomNormalr  r  r   rh  r	   ru  ry  r.  rG  r%  ra  r   r  rz  r)  r  r  r  r|  r8  r  s          r  r   r     s    &&uc7;E}!//55!//6,,VT:E  ''ddLL!EKK8  

 tt))+  
 	

 44%%'   r   z
aten::randc           	        [         R                  " USS5      nUc  [        R                  R                  nO[        R                  " U5      n[         R
                  " US5      n[         R                  " U5      (       aR  U R                  SU[        R                  " S/[        R                  S9S9nU R                  SUUR                  5       S	9$ U R                  S
UUR                  5       S9$ )Nr  r  r*  r  r   r  r_  r  r  r  r  r  r  s          r  r   r     s    &&uc7;E}!//55!//6,,VT:E  ''ddLL!EKK8  

 tt))+  
 	

 44%%'   r   zaten::randn_likec                   [         R                  " USS5      nUc9  [        R                  R	                  U[        R                  R
                  5      nO[        R                  " U5      nU R                  SXR                  5       S9$ )Nr  r  r  r  r   rh  r	   ru  rv  ry  r%  rz  )r)  r=  r  r  r  r  r  r|  s           r  r   r     ss     &&uc7;E}!//::+++11
 "//644"D2G2G2I4JJr   zaten::rand_likec                   [         R                  " USS5      nUc8  [        R                  R	                  U[        R                  R
                  5      nU R                  SU[        R                  " U5      R                  5       S9$ )Nr  r  r  r  r  )r)  r=  r  r  r  r  r  s          r  r   r     sw     &&uc7;E}))44+++11
 44T;+D+DU+K+U+U+W   r   zaten::rreluc                    U(       d  X2-   S-  nU R                  SXS9$ U R                  SXUS9nU R                  SX5      $ )Nr  r  r  r  )r  r  r  r.  )r)  r0  r`  upperr  r  r  r=  s           r  r   r     sL     #%ttKt66	 %UCA44""r   zaten::bernoullic                   Ub3  [         R                  " U5      (       d  [         R                  " SSU5        Ub3  [         R                  " U5      (       d  [         R                  " SSU5        [        R                  R                  U[        R                  R                  5      nU[        R                  R                  :X  a  [         R                  " SSU5      $ U R                  SUSSUR                  5       S9nUb  [         R                  " U5      (       d  UOUnU R                  S	Xg5      nU R                  S
XR                  5       S9$ )N	Bernoulliz,out parameter is not supported for bernoulliz(generator is not supported for bernoulliinput dtype not accessibler  r  r  )r  r  r  r  ro  rp  )	r   rH  r_  r	   ru  rv  rw  r%  rz  )	r)  r0  r=  r  r{  r  randsprobr  s	            r  r$   r$     s'   
77<<&&G	
 _%=%=i%H%H&&CU	
 %%00{((22E ))333--5u
 	
 DD!  E o&>&>q&A&A1uDTT&%&F44__%6477r   zaten::log_sigmoidc                J    U R                  SU5      nU R                  SU5      $ )Nr  rF  r.  )r)  r0  r=  s      r  r|   r|   ,  s$     	
YA44q>r   z	aten::erfc                &    U R                  SU5      $ )NErfr.  r/  s     r  rL   rL   3  s     44ur   zaten::flattenc                   [         R                  " U5      nUc  [         R                  " SSU5      $ US:X  a  [         R                  " XS/5      $ US:X  a  U R	                  SU5      $ US:  a  XC-   nUS:X  a  X4S-
  :X  a  U R	                  SXS9$ US:X  a  X4S-
  :X  a  U R	                  SXS-   S9$ [         R
                  " XX#U5      $ )	NrB   r  r   rE  r  Flattenru  r  )r   r  r_  r;  r%  _flatten_helper)r)  r0  	start_dimend_dimrB   s        r  rR   rR   9  s     
*
*5
1C
{--7	
 	
 ax..q!==
axttJ&&{-A~'1W,ttIut77A~'1W,ttIuq[t99**1YMMr   zaten::nonzeroc                8    [        X R                  SU5      5      $ )z/Emitted from `torch.nonzero(x, as_tuple=False)`NonZero)r   r%  r/  s     r  r   r   V  s     QY&''r   zaten::nonzero_numpyc                ,    [        U [        X5      SUS9$ )NrE  )ra  )r   r   )r)  r0  ra  s      r  r   r   ]  s     !WQ&H==r   zaten::isnanc                *    U R                  SU5      nU$ )NIsNaNr.  )r)  r0  r  s      r  rn   rn   c  s     TT'5!FMr   z	aten::anyc                   [        U5      S:X  a
  US   nSu  p4O]Uu  p#n[        R                  " US5      nUR                  S5       Vs/ s H  n[	        U5      PM     nn[        R                  " US5      nU R                  SU[        R                  R                  S9n[        R                  " XX4S	9n[        XU R                  S
[        R                  " S[        R                  S9S95      $ s  snf )NrE  r   rV  r   r+  r  ro  rp  r  r^  r  r_  )rW  r   r  r  r  r%  rr  rs  rt  r  r_   ra  r   r  )r)  rY  r0  rB   r5  r;  	input_sums          r  _anyr  j  s     4yA~QW #G((c2"xx|,|!s1v|,!,,Wc:DDW%@%@%F%FDGE11	I aADDU\\!5::5VDWXX -s   	C0z	aten::allc           
         U R                  SUS   5      n[        U5      S:X  a  U R                  S[        X5      5      $ U R                  S[        XUS   US   5      5      $ )Nr  r   rE  r  )r%  rW  r  )r)  rY  r0  s      r  _allr  ~  sZ    DDQ E
4yA~ttE4>** ttE4$q'47;<<r   zaten::narrowc                :    [         R                  " XU/U/X4-   /S9$ )Nrt  rV  )r)  r0  rB   r   lengths        r  r   r     s)     ((	ueWEN3C r   zaten::argmaxc                2    [         R                  " XX#S5      $ )NArgMaxr   _argmin_argmax_helperr)  r0  rB   r5  s       r  r   r          003RRr   zaten::argminc                2    [         R                  " XX#S5      $ )NArgMinr  r  s       r  r   r     r  r   zaten::scatterc           
        [         R                  R                  U[         R                  R                  5      n[        R
                  " U5      n[        R                  " U5      (       a  U R                  SXXBS9$ [         R                  R                  U5      nXe:w  a  U R                  SXFR                  5       S9nU R                  SX[        XU5      US9$ )NScatterru  ro  rp  )
r	   ru  rv  rw  r   rK  rG  r%  rz  rN   )r)  r=  rB   rj   srcsrc_typer  s          r  r   r     s     ((33[&&00H 
+
+C
0C  %%ttItCt<< '44??E'$$vs)C)C)E$FCttItIae,DStQQr   zaten::scatter_addc                ^   [         R                  " U5      nUc  [         R                  " SSU5      $ [         R                  " USS9nU(       a1  U R	                  S[
        R                  " XeR                  5       S9S9nO[        XU5      n[         R                  " XX#U5      n[        XU5      $ )Nr   r  F)allow_nonstaticr^  r  r_  )r   r  r_  r  r%  ra  r  r  r  _scatter_helperr   )r)  r=  rB   rj   r  r|  r  to_adds           r  r   r     s     "66t<K--7
 	
 --dEJEj%++eCTCTCV*WXA[1,,QCHFqr   z
aten::log2c           
         SnU R                  S[        X5      U R                  S[        R                  " U5      S95      $ )Ng9B.?rn  r^  r_  rI  )r)  r=  _ln2s      r  r   r     s4    D44s1|QTT*ell4>PT%QRRr   zaten::is_floating_pointc                    [         R                  " U5      (       a%  U R                  S[        R                  " S/5      S9$ U R                  S[        R                  " S/5      S9$ Nr^  rE  r_  r   )r   rx  r%  ra  
BoolTensorr  s     r  rl   rl     sS    d##ttJ(8(8!(=t>>44
E$4$4aS$94::r   zaten::__is_c                   [         R                  " U5      (       ae  [         R                  " U5      (       a%  U R                  S[        R                  " S/5      S9$ U R                  S[        R                  " S/5      S9$ [        XU5      $ r  )r   rH  r%  ra  r  rK   rT  s      r  __is_r    sq    &&##D))44
E,<,<aS,A4BBttJ(8(8!(=t>>aur   zaten::__isnot_c                    [        XU5      $ r  )r  rT  s      r  __isnot_r    s     %  r   zaten::one_hotc                   U R                  S[        R                  " SS/5      S9n[        R                  R                  U[        R                  R                  5      [        R                  R                  [        R                  R                  [        R                  R                  [        R                  R                  1;   a)  U R                  SU[        R                  R                  S9nU R                  SXUSS	9$ )
Nr^  r   rE  r_  ro  rp  OneHotr+  ru  )r%  ra  r/  r	   ru  rv  rw  r  r  r  r  rr  rs  rt  )r)  r=  num_classesr  s       r  r   r     s    TT*e&6&61v&>T?F  ++[..88 	!!''!!&&!!%%!!''	
 dd6;W5P5P5V5VdW44$VB4??r   zaten::gatherc                4   [         R                  " US5      (       a  [         R                  " SSU5      $ [        R                  R                  U5      nU R                  S[        R                  " SS/5      S9n[        XU R                  S[        R                  " U/5      S95      nU R                  SU R                  S	X7XbS
9UR                  5       S9nU R                  S[         R                  " XUS-   /5      U5      n[         R                  " XU/SS9$ )Nr  rY   zsparse_grad == Truer^  r   rE  r_  ro  r  ru  rp  rF  r  )r   r.  r_  r	   ru  rv  r%  ra  r/  r   rz  r  r  )	r)  r=  rB   rj   sparse_gradr|  r  depthr   s	            r  rY   rY     s     ''S99--h8MtTT ++66t<KTT*e&6&61v&>T?F!$$z53C3CSE3J$KLEDD	XuV8""$  E
 $$uo77#'KU
SC,,QSEaPPr   c                2    [         R                  " XX#U5      $ r  )r   _var_mean_helper)r)  r0  rB   
correctionr5  s        r  	_var_meanr	  	  s    ++AcwOOr   z	aten::stdc                B    [        X/UQ76 u  p4U R                  SU5      $ Nr  r	  r%  r)  r0  rY  r
  r  s        r  r   r     s$    a&&FC44r   z	aten::varc                "    [        X/UQ76 u  p4U$ r  )r	  r  s        r  r
  r
    s    a&&FCJr   zaten::var_meanc                Z    [        U5      S:X  a  [        XS US   S 5      $ [        X/UQ76 $ )NrE  r   )rW  r	  )r)  r0  rY  s      r  r	  r	    s2    
4yA~4a$77)D))r   zaten::std_meanc                F    [        X/UQ76 u  p4U R                  SU5      U4$ r  r  )r)  r0  rY  r
  r	  s        r  r   r   "  s)    )D)IC44d""r   zaten::logsumexpc                $    U R                  SXUS9$ )NReduceLogSumExpr  r.  r  s       r  r   r   (  s     44!54IIr   aten::arangec                  ^  S nU 4S jn[        U5      S:X  d  [        U5      S:X  a  [        U5      S:X  a  S nOU" US   5      n[        R                  " T US   US9u  pEpg[        R                  " T US/5      nU" U5      n[        R                  " T [        T [        T XS S 5      5      S/5      n	T R                  SU	[        R                  " U5      R                  5       S	9$ [        U5      S
:X  d  [        U5      S:X  Ga;  [        U5      S
:X  a  S nOU" US   5      n[        R                  " T US   US   US   US9u  pEpg[        R                  " T US/5      n[        R                  " T US/5      n[        R                  " T US/5      nU" T R                  ST R                  SXV5      U5      5      n[        R                  " T [        T [        T US S S 5      5      S/5      n	T R                  ST R                  SX5      U5      n	T R                  SU	[        R                  " U5      R                  5       S	9$ [        U5      S:X  a  U" US   5      n[        R                  " T US   US   US9u  pEpg[        R                  " T US/5      n[        R                  " T US/5      nU" T R                  SXV5      5      nT R                  S[        R                  " T [        T [        T X/USS  Q76 5      S/5      U5      n	T R                  SU	[        R                  " U5      R                  5       S	9$ [        R                  " SS[        U5       S35      $ )Nc                4    [         R                  " U S5      n U $ )Nr  )r   r.  r  s    r  _get_arange_dtype!arange.<locals>._get_arange_dtype0  s    00<r   c                   > [         R                  " U 5      (       aG  TR                  STR                  SU 5      [        R                  R
                  R                  5       S9n U $ )Nro  r  rp  )r   rx  r%  r	   ru  rt  rz  )range_tensorr)  s    r  _float_step_convert#arange.<locals>._float_step_convert4  sX    !!,//44V\* ..44>>@   L
 r   r  r4  rE  r   )r!  r  ro  rp  r2  r  r  )r   r!  r  r  rn  rO  rC  rF  r  )r   r!  r  r  r  r  )rW  r   _arange_cast_helperr  rq  r   r   r%  r	   ru  rz  r_  )
r)  rY  r  r  r  r!  r   r  r  arange_tensors
   `         r  r   r   .  sJ    4yA~Tat9>E &d1g.E"1"E"E47%#
E //3<*3/'77wq$q,tTBCaS
 ttM(A(A%(H(R(R(T  
 	
 
Ta3t9>t9>E &d1g.E"1"E"ET!W$q'Qu#
E 00D1#>//3<11!UQC@*144qttE37NPT+UV'77wq$q,dDABQC
 UADD$DeLttM(A(A%(H(R(R(T  
 	
 
Ta!$q'*"1"E"ET!W$q'#
E //3<11!UQC@*144s+BC++71d1lGT!"XGH1# 
 ttM(A(A%(H(R(R(T  
 	
 )).E#d)J:WXXr   zaten::linspacec                    [         R                  " XS 5      n[        U [        XU5      [        XU R	                  S[
        R                  " S[
        R                  S9S95      5      n	[        U [        XU	5      U5      $ )Nr^  rE  r  r_  )
r   _arange_helperrC   r   r%  ra  r   r  r   r   )
r)  r   r!  stepsr  r  r  r  r  r  s
             r  r{   r{   {  sk     #11!DAL	AEAadd:u||AU[[/QdRSD
 q#at,e44r   z
aten::liftc                    U$ r  r!  r  s     r  ru   ru     s	     Kr   zaten::masked_fillc                    U R                  SU[        R                  R                  S9n[        R
                  " U5      nU R                  SU[        R                  " X15      U5      $ )zImplement the masked_fill functionality available for a pytorch tensor in ONNX.

Fills elements of the input tensor with `value` where `mask` is True.
ro  rp  r  )r%  rr  rs  r  r   rK  r  r)  r=  maskrd  s       r  r   r     sU     447#>#>#C#C4DD--e4E44AA%NPTUUr   zaten::masked_fill_c                    [        XX#5      $ r  )r   r#  s       r  r   r     s    q,,r   aten::indexc                  ^ ^ [         R                  " U5      (       a  [         R                  " U5      nOU/nU U4S jnU Vs/ s H
  oT" U5      PM     nn[        U5      S:X  a  [         R                  " T TSUS   SS9$ [        U5       VVs/ s H$  u  pe[         R                  " U5      (       a  M"  UPM&     nnn[        U5      S:X  a  T$ [        U5      S:X  a  [        T TUS   X7S      5      $ [         R                  " T5      nUc  [         R                  " SST5      $ [        R                  " S[        R                   S	35        [        U5      n	[        T T5      n
[        U5       Vs/ s H8  nT R!                  S
U
T R!                  S["        R$                  " U/5      S9SS9PM:     nnT R!                  STU[        U5       Vs/ s H  ofU;  d  M
  UPM     sn-   S9mT R!                  STU	S9mX7S      nXS      n[        U	S-
  SS5       HD  nT R!                  SX7U      U5      nT R!                  SX5      nT R!                  SXXv      5      nMF     [        T TSU5      m[        T U5      nU['        [        US   US   S-   5      5      :X  Ga1  T R!                  S["        R$                  " S/5      S9/[        U5       Vs/ s H  ofU;  d  M
  X   PM     sn-   nT R                   " S/UQ7SS06n[         R(                  " T TU5      m['        [        SUS   S-   5      5      S/-   ['        [        US   S-   X-
  S-   5      5      -   nT R!                  STUS9m[        US   5       Vs/ s H  olU   PM	     snU/-   [        US   U5       Vs/ s H  nXg;  d  M
  X   PM     sn-   nT R                   " S/UQ7SS06nO:T R                   " SU/[        U5       Vs/ s H  nXg;  d  M
  X   PM     snQ7SS06n[         R(                  " T TU5      $ s  snf s  snnf s  snf s  snf s  snf s  snf s  snf s  snf )Nc                  > [         R                  " U 5      (       d  [        R                  R	                  U [        R                  R
                  5      [        R                  R                  :X  d  [         R                  " U 5      (       a`  TR                  S:  a  [        R                  " ST5      e[        R                  " S5        [         R                  " T[        TU 5      S/5      n U $ )Nr  z?Exporting masked indices are only supported after ONNX opset 9.zExporting aten::index operator with indices of type Byte. Only 1-D indices are supported. In any other case, this will produce an incorrect ONNX graph.rE  )r   rH  r	   ru  rv  rw  r  rS  r  r
   rk  r@  rA  rq  r   )rj   r)  r=  s    r  try_mask_to_index index.<locals>.try_mask_to_index  s    ''..%%00{00:: ((../ ''..ww{//U  MM=
 $33Awq%7H1#NEr   rE  r   F)apply_reshaper&  z9operator of advanced indexing on tensor of unknown rank. z=Exporting aten::index operator of advanced indexing in opset z is achieved by combination of multiple ONNX operators, including Reshape, Transpose, Concat, and Gather. If indices include negative values, the exported graph will produce incorrect results.r>  r^  r_  ru  r  r   r  r+  r  rF  rC  r4  r5  )r   r0  r  rW  r  r  rH  ri   r  r_  r@  rA  r   r  r1  r&  r%  ra  r/  r7  r;  )r)  r=  rj   rC  r)  r  r  adv_idx_indicesr"  adv_idx_countshape_tensorrB   dim_tensor_listcum_adv_index
multiplier	adv_indexcum_adv_index_shape_tensorfolded_adv_idx_shape_listfolded_adv_idx_shapeadv_idx_permutefinal_shape_listfinal_shapes   ``                    r  rj   rj     s   &&u--!..u5'* 299# %G9
7|q--tQ
%
 	
. &g.
.&!o6N6Ns6SA. 	 
 1$K!Q&4+WQ5G-H  #33D9D|&55!O  MMO445ii  0M+At4L !; 'C  DDU-=-=se-DDE	   '   44&#DkFko-E1kFG  D 44	44>D $B$78M()<=J=1,b"5DD0B(CZP	 !UM ETT:7I'J
 6  4M:D)9!])K& $oa(/"*=*AB# 
 DDU-=-=rd-CDD- 16d0;1?W&O&-)
 ()tt(8(AB($ '66q$@TU q/!"4q"89:c5!3a!79MPQ9QRST  
 ttKotF 27q7I1JK1JAQ'1JK123 "'q'94!@!@A3 +*!@ !  dd8I.>IqIdd.	
 "'t!,A3 +*!,	 	 #221dKHHK :0
: G6$ LsN   P!P!3P!/?P'	P,P,	P1P14P6	P;&P;&	Q 
3Q 
zaten::linalg_normc                r   S nUc  [         R                  " U5      (       a=  [         R                  " XS/5      nU R                  S[        R
                  " S/5      S9n[         R                  " U5      nUc  [         R                  " SSU5      $ US:X  a  [         R                  " US5      nOkS	S/nOf[        U5      S:X  aW  [         R                  " U5      (       a%  U R                  S[        R
                  " S/5      S9n[         R                  " US5      nU(       a  [        XXcXE5      $ [        XX#XE5      $ )
Nr+  r^  r  r_  rB   (Input rank must be known at export time.rE  r[  r   )r   rH  r;  r%  ra  r/  r  r_  r  rW  ry   rw   )r)  r=  ordrB   r5  r  	ord_valueself_dims           r  rx   rx   B  s    I
{##C(("221RDAD$$z5+;+;QC+@$AC"33D9"11A4  q='223<Ia&Cs8q='',,dd:u/?/?/DdE'223<I!!97JJas@@r   zaten::linalg_vector_normc                2    [         R                  " XX#XE5      $ r  )r   _linalg_vector_norm_helper)r)  r=  r;  rB   r5  r  s         r  ry   ry   e  s     55asXXr   zaten::linalg_matrix_normc                   [         R                  " US5      nUS:X  a  [        XX45      $ US:X  a  [         R                  " SSU5      $ [         R                  " US5      nUc  [        XX45      $ US:X  d  US:X  a  [         R                  " SS	U5      $ [         R                  " U5      nUc  [         R                  " SS
U5      $ US   S:  a  US==   U-  ss'   US   S:  a  US==   U-  ss'   U[
        R                  :X  d  U[
        R                  * :X  a  US   US   sUS'   US'   US   US   :  a  U(       d  US==   S-  ss'   [         R                  " X R                  SU5      US   /US9nUS:  a6  [        U UU R                  S[        R                  " US   /5      S9US9u  pU	$ [        U UU R                  S[        R                  " US   /5      S9US9u  pU	$ )Nrf  fronuczlinalg.matrix_normzord==nucr[  r  r  zord==2r:  r   rE  rD  r  r^  r_  )r]  r5  )r   r  rV   r_  r  r  infr  r%  r   ra  r/  r   )r)  r=  r;  rB   r5  r  r<  r=  r  r  _indicess              r  rw   rw   r  s     **34IEas44	e	--.BJPTUU#..sC8	!!388>Y"_ #112FRVWW"33D9"11$&PRV 
 q6A:FhFq6A:FhF I$(($: VSVNCFCFq6CF?7FaKF//ttE4 #a&g
 q="j%2B2BCF82LM	 F   #j%2B2BCF82LM	 F r   zaten::linalg_crossc                    [        XX#5      $ r  )r?   )r)  r0  rA  rB   s       r  rv   rv     s     5&&r   zaten::frobenius_normc                t    U R                  SX5      n[        R                  " XX#S9nU R                  SU5      $ )NrF  r  r  )r%  r   r  )r)  r=  rB   r5  sqrsumsqrs         r  rV   rV     s7     $$ud
!C..qcVF44r   zaten::multinomialc                "   Ub3  [         R                  " U5      (       d  [         R                  " SSU5        U(       d  US:  a  [         R                  " SSU5        [        X5      nU R	                  SU[
        R                  R                  US9$ )NMultinomialz*generator is not supported for multinomialrE  zGreplacement=False when num_samples > 1 is not supported for multinomial)r  sample_size_i)r   rH  r_  r~   r%  rr  rs  rt  )r)  r0  num_samplesreplacementr  	log_inputs         r  r   r     s    
 _%=%=i%H%H&&G	
 ;?&&U	
 AI44++11!	   r   zaten::baddbmmc           
        [         R                  R                  U5      n[        XU5      n[	        U UU R                  SXVR                  5       S95      n[	        U UU R                  SXFR                  5       S95      n	[        XU	5      $ r  )r	   ru  rv  r   r   r%  rz  r   )
r)  r=  batch1batch2r  rM  r|  	batch_mulmul_amul_bs
             r  r"   r"     s    ++66t<Kq&)I		VU!6!6!89E
 		VT 5 5 78E
 qr   zaten::meshgridc                <   Uc  SnO US;  a  [         R                  " SU 3U5      e[        R                  " U5      nUS:X  a  USS S2   US S& U Vs/ s H=  n[        R                  " XU R                  S[        R                  " S/5      S	95      PM?     nnU Vs/ s H  o@R                  S
U5      PM     nnU R
                  " S/UQ7SS06n/ n[        U5       H  u  pU R                  S[        R                  " S[        R                  S9S	9/[        U5      -  n
Xi   X'   [        XU R
                  " S/U
Q7SS065      nUR                  U R                  SX5      5        M     US:X  a  US   US   sUS'   US'   U R
                  " S/UQ76 $ s  snf s  snf )Nij>   rV  xyzUnsupported indexing: rW  rE  r+  r  r^  r_  r-  r4  r5  r   r  r,  prim::ListConstruct)r
   rk  r   r  r;  r%  ra  r/  r  r   r  rW  r9  r  )r)  r  indexingunpacked_tensor_listr   r  tensors_shape	out_shaper{  r  r  
t_reshapeds               r  r   r     s    		%''$XJ/
 	
 +77D4#72#>Ra 
 &	 &A 	''!$$z5+;+;RD+A$B	
 &	   077w!TT'1%wM7X88a8I
C'"44
EJJq,L4MNQTR
 
 #%
)!X0R0RPQ0RS


144*89 # 4QQAA44%,,,% 8s   AFFzaten::remainderc                b    [        XU5      nU R                  SX25      nU R                  SX5      $ )NrF  rO  )ri  r%  )r)  r0  rA  rC   quos        r  r   r     s/    
%
(C
$$uc
!C44u""r   z
aten::geluc                   US:X  Ga  [         R                  " S[         R                  -  5      nSn[        R                  " U[        R
                  S9n[        R                  " U[        R
                  S9n[        R                  " S[        R
                  S9n[        R                  " S[        R
                  S9n[        X[        XU5      5      n	[        X[        X[        XU	5      5      5      n
[        X[        X[        XU R                  SU
5      5      5      5      $ SnU R                  S	U R                  S
U[        R                  " U[        R
                  S95      5      n[        XU R                  S[        R                  " S[        R
                  S9S95      n[        U [        XU5      U R                  S[        R                  " S[        R
                  S9S95      $ )Nr   r  gHm?r  r        ?r  g;f?r  rn  r^  rE  r_  )	r  r   r  ra  r   r  r   r   r%  )r)  r=  approximatekBetakKappar  kappar  half	self_cubeinner_sqrt2rL   erf_plusones                 r  r[   r[     sa    f		!dgg+&||E6V5<<8ll3ell3||Cu||4Qd!34	AS#a	*BCD1CQQTT&%5H)IJKK#dd5!$$udELLu||,TUVADDU\\!5<<-PDQ
 %DDU\\#U\\%JDK
 	
r   zaten::group_normc                n   [         R                  " US5      nUb
  Xr-  S:X  d   e[         R                  " U5      nUc  [         R                  " SSU5      $ SUS/n	[         R                  " XU R                  S[        R                  " U	5      S95      n
U R                  S[        R                  " S/U-  [        R                  R                  U5      R                  5       S	9S9nU R                  S[        R                  " S
/U-  [        R                  R                  U5      R                  5       S	9S9nU R                  SXXS9n[         R                  " XU R                  SU5      5      nUb#  UR                  5       R                  5       (       aQ  [        R                  " S/[        R                  R                  U5      R                  5       S	9nU R                  SUS9nUb#  UR                  5       R                  5       (       aQ  [        R                  " S
/[        R                  R                  U5      R                  5       S	9nU R                  SUS9n[        [!        SUS-
  5      5      n[#        U [%        X[         R&                  " XU5      5      [         R&                  " XU5      5      $ )NrE  r   r^   zunknown input rankr+  r^  r_  r  r  r  r  r  r-  )r   r  r  r_  r;  r%  ra  r/  r   r	   ru  rv  r  r  
mustBeNoner7  r&  r   r   r  )r)  r0  
num_groupsrB  r  r  r  r  
input_rankr8  r  r  r  norm_reshapedr   r  r   r  s                     r  r^   r^   +  sj    #77qAL(A--- 11%8J--l<PRWXX
BE$44	!$$z5+;+;E+B$CN ddEJ++66u=CCE
  G DDEJ++66u=CCE
  E DD%  M **1QTT'5=QRD~1133||E22==eDJJL
 j,7|tyy{--//\\E22==eDJJL

 ttJ
t3 aa()D	A_66q$GH))!48 r   zaten::_weight_normc                6   [         R                  " U5      nUbj  [        [        U5      5      nUb!  US:  a  X4-  nUS:w  a  UR	                  U5        [        XSUS5      nU R                  SX5      nU R                  SXr5      $ [        R                  " SU5      e)Nr+  r  rE  rn  rF  zDUnsupported: ONNX export of _weight_norm for tensor of unknown rank.)	r   r  r7  r&  remover   r%  r
   rk  )r)  r  weight_grB   r"  r  norm_vrC   s           r  _weight_normrt  h  s     ++H5D E$K ?RxbyC a1dA.dd5(+ttE3))

#
#N r   z	aten::dimc                J    U R                  SU5      nU R                  SU5      $ )zFImplement the dim functionality available for a pytorch tensor in ONNXr-  Sizer.  r<  s      r  rB   rB     s%     DD$E44r   zaten::__contains_c           	     b   [         R                  " U5      n[        S U 5       5      (       al  [         R                  " U5      (       aQ  U R	                  S[
        R                  " [         R                  " UR                  5       S5      S U 5       ;   5      S9$ [        R                  " SU5      e)Nc              3  N   #    U  H  n[         R                  " U5      v   M     g 7fr  )r   r  r  r4  s     r  r  __contains_.<locals>.<genexpr>  s!      1>A$$Q''s   #%r^  rd  c              3  l   #    U  H*  n[         R                  " UR                  5       S 5      v   M,     g7f)rd  N)r   rg  r  ry  s     r  r  rz    s&     X-QO--affh@@-s   24r_  zJUnsupported: ONNX export of __contains__ for non-constant list or element.)r   r  r  r  r%  ra  r   rg  r  r
   rk  )r)  r=  elementunpacked_lists       r  __contains_r~    s    #006M
 1>  

&
&w
/
/ttLL))',,.'BX-XY  
 	
 
#
#T r   zaten::__getitem_c           
     b    [        XU R                  S[        R                  " S/5      S9U5      $ r  )r   r%  ra  r   )r)  r=  r  s      r  
__getitem_r    s)    !144
ELL!4E4FJJr   z
aten::itemc                    U$ r  r!  r  s     r  ro   ro     r  r   z
aten::takec                    [         R                  " XU R                  S[        R                  " S/[        R
                  S9S95      n[        XSU5      n[        XU5      nU$ )Nr^  r+  r  r_  r   )r   r;  r%  ra  r   r  ri   r   )r)  r=  rj   self_flattenedr{  s        r  r   r     sV    $44	j%,,t5;;*OPN q!U
3C
QU
#CJr   c                L    [        XU5      n[        X5      n[        XU5      nU$ r  )r   rM   r   )r)  r0  targetdiff_exp_r  s         r  _kl_div_log_target_implr    s(    5!Eq>D% FMr   c           
         [        X5      n[        XU5      n[        XU5      n[        X5      n[	        XU R                  S[        R                  " S5      S95      n[        XXV5      nU$ r  )	r~   r   r   r  r_   r%  ra  r   r  )	r)  r0  r  log_r  
output_poszeros_mask_r  s	            r  _kl_div_non_log_target_implr    s_    q>DEQ&J&Fq!$$z5<<?$CDE1Z0FMr   zaten::kl_divc                    U(       a  [        XU5      nO[        XU5      nUS:X  a  U$ US:X  a  U R                  SUSS9$ US:X  a  [        R                  " XSS9$ [        R
                  " SU5      $ )Nr   rE  r  r  r  z4kl_div with reduction other than none, mean, or sum.)r  r  r%  r   r  r  )r)  r0  r  	reduction
log_targetr  s         r  rp   rp     sy     (6:,Qv>A~	attL&Qt77	a00qII00BE
 	
r   zaten::mse_lossc           	         [        U [        XU5      [        XU5      5      nUS:X  a  U$ US:X  a  U R                  SUSS9$ US:X  a  [        R                  " XSS9$ [        R
                  " SU5      $ )Nr   rE  r  r  r  z6mse_loss with reduction other than none, mean, or sum.)r   r   r%  r   r  r  )r)  r0  r  r  r  s        r  r   r     sz     C&)3q+@AFA~	attL&Qt77	a00qII00De
 	
r   zaten::as_stridedc                   [         R                  " US5      n[        U5      n[         R                  " XU R	                  S[
        R                  " S/[
        R                  S9S95      n[         R                  " U5      (       d  [
        R                  " S/[
        R                  S9n[        [        X#5      5       H=  u  nu  pS/U-  nSX'   U[
        R                  " U	5      R                  U5      U
-  -   nM?     U(       a  Xt-   nU R	                  SX`R	                  SUS95      $ S n[        U5       H  u  pS/U-  nSX'   [        U UU R	                  S[
        R                  " S/5      S9U R	                  S[
        R                  " U5      S95      n	[         R                  " U [        X	S	S S S 5      U R	                  S[
        R                  " U5      S95      nU R	                  S
XR	                  S[
        R                  " U
/5      S95      nUc  UnM  U R	                  SX|5      nM     U(       a7  U R	                  SXpR	                  S[
        R                  " U/5      5      5      nU R	                  SXg5      $ )Nr*  r^  r+  r  r_  r   rE  r>  r2  rF  rC  )r   r.  rW  r;  r%  ra  r   r  rG  r  r  r  r   r  r   )r)  r=  r  stridesoffsetr"  self_1dindr  r   r  r_sizetmp_inds                r  r   r     s$    ,,UD9Ew<D--	j%,,t5;;*OPG $$U++llA3ejj1!*3u+>!?A~S4ZFFIT*//7&@@C "@ ,CttHgttJt'DEE"7+IAS4ZFFIZqc):;Za9	D &55q4t4Zf)=>G
 ddwZvh9O PG {dd5#/) ,* $$uc44
ELL&4J#KLCttHg++r   zaten::__derive_indexc           	     F    U R                  SX R                  SX5      5      $ )NrC  rF  r.  )r)  rj   r   r  s       r  __derive_indexr    s    44udd5%677r   zaten::__range_lengthc                    U R                  SX!5      nU R                  S[        XU5      5      nU R                  SU[        R                  R                  S9$ )NrO  r  ro  rp  )r%  r   rr  rs  rt  )r)  lor  r  r   rC   s         r  __range_lengthr    sL     $$ub
C
$$v{140
1C44'"="="C"C4DDr   zaten::linearc                   [         R                  " U5      n[        X5      nUS:X  a  UR                  5       R	                  5       (       dq  U R                  S[        R                  " S[        R                  S9S9nU R                  S[        R                  " S[        R                  S9S9n[        XXXV5      nU$ [        XU5      nUR                  5       R	                  5       (       d  [        XU5      nU$ )Nr  r^  rE  r  r_  )r   r  r   r  rl  r%  ra  r   r  r   r   r   )r)  r0  rB  r  r"  rM  r  r  s           r  rz   rz   )  s    ++E2Dq\Fqy//11Zau{{)KLttJQekk(JtKqu; M	 &)yy{%%''&)FMr   zaten::hann_windowc                   Uc]  [         R                  " 5       nU(       a  UR                  (       d  [         R                  n[        R
                  R                  U5      n	O[        R
                  " U5      n	[        XSS S S 5      n
U R                  SU
[        R                  R                  S9n[        X R                  S[         R                  " [        R                  [         R                  S9S9U5      nUSL a;  [!        XU R                  S[         R                  " S[         R"                  S9S95      n[%        XU5      nU R                  S['        U [)        X5      5      U	R+                  5       S9nU$ )	Nr2  ro  rp  r^  r  r_  FrE  )ra  r  rl   r  r	   ru  
from_dtyper   r%  rr  rs  ry  r   r   r  r  r   r  rC   r   r   rz  )r)  window_lengthperiodicr  r  r  r  r  dtype_r|  n_arrayr  s               r  r`   r`   9  s,    }((*V55[[F!//::6B!//6Qq$d;GTT&'(C(C(I(ITJF	44
ELL$L4MvF 5add:u||AUYY7WdX
 M*FTTq#a.!""$  F Mr   zaten::mvc                    [        XU5      $ r  r   )r)  r=  vecs      r  r   r   a  s    !3r   z	aten::dotc                    [        XU5      $ r  r  rT  s      r  rD   rD   f  s    !5!!r   zaten::movedimc                   UR                  S5      nUR                  S5      nUR                  5       UR                  5       :X  d   eX#:H  R                  5       (       a  U$ [        R                  " U5      nUc   e[        [        U5      5      nUR                  5       nUR                  5       n[        UR                  5       UR                  5       5       H  u  pXU	'   SXh'   SXy'   M     U V
s/ s H  oS:w  d  M
  U
PM     nn
U V
s/ s H  oS:w  d  M
  U
PM     nn
[        Xg5       H	  u  pXU	'   M     U R                  SXS9$ s  sn
f s  sn
f )Nr+  r  r   )r  r   r  r   r  r7  r&  r  r  tolistr%  )r)  r=  r%  destinationr  r(  src_dimsdst_dimsr  dstrB   s              r  r   r   k  s4    [[_F""2&K;;=K,,....""$$006I   i !Dyy{Hyy{H););)=>S	 ?
  (5x"9xH5'5x"9xH5+S	 , 44T4// 65s   0	E=E		EEz
aten::fillc                    [         R                  R                  U[         R                  R                  5      n[	        XX#5      $ r  )r	   ru  rv  ry  rW   )r)  r=  rd  r|  s       r  rQ   rQ     s:     ++66k''--K Qe11r   zaten::index_addc           
        [         R                  " S5        U(       aF  [        R                  " [        R                  " U5      5      S:w  a  [        R
                  " SSU5      $ [        R                  " US5      nUc  [        R                  " SU5      e[        R                  " U5      n[        R                  " U5      nUb  Uc  [        R                  " SU5      eXv:w  aB  Xg-
  n[        U5       H/  n	[        R                  " X[        R                  " U5      /5      nM1     [        R                  " XB5      n
[        R                  " X5      nU
b  Ub  X:  a  [        R                  " SU5      e[        [        U5      5      n[        U5       V	s/ s H  n	S	PM     nn	[        U5       V	s/ s H  oU:w  a  [        R                  OSPM     nn	[        R                   " XXUS
9n[#        XU5      n[        U5       H  n	[        R                  " XS	/5      nM     [        Xb-
  S-
  5       H/  n	[        R                  " X[        R                  " U5      /5      nM1     [%        XU[#        XU5      U5      $ s  sn	f s  sn	f )NzyWarning: ONNX export does not support duplicated values in 'index' field, this will cause the ONNX model to be incorrect.rE  re   z
alpha != 1r  zXONNX export does NOT support exporting 'index_add_()' function with unknown 'dim' value.z~ONNX export does NOT support exporting 'index_add_()' function while the rank of self tensor or tensor to be added is unknown.zoONNX export does not support exporting 'index_add_()' function with duplicated values in 'index' parameter yet.r   rt  )r@  rA  r   rJ  rK  r_  r.  r
   rk  r  r&  r  r  r7  sysmaxsizerv  rN   r   )r)  r=  rB   rj   rA  rM  self_dim_rankother_dim_rankdeltar  other_dim_sizeself_dim_sizenew_shape_axesnew_shape_startsnew_shape_endsr+  s                   r  re   re     sO   MM	< (()J)J5)QRVWW--k<NN

*
*3
4C
{''#
 	
 $44T:M$55e<N 6''H
 	
 &.uA#55?;;EBCE 
 %99%EN#88CM")B)++>  %./N#(#78#7a#78@Em@TU@T13hckkQ6@TNU--	nNI a	*E3Z11!QC@  =&*+1177>?
 ,
 qYq%?GG! 9Us   I9/!I>z
aten::rollc           	        [        U5      [        U5      :X  d   eUn[        [        U5      5       H  n/ n[        R                  " XX5   /X%   * /[        R
                  /S9nUR                  U5        [        R                  " XX5   /S/X%   * /S9nUR                  U5        U R                  " S/UQ7SX5   06nM     U$ )Nrt  r   r4  r5  )rW  r&  r   rv  r  r  r  r%  )r)  r=  shiftsr:  r  r  r  r8  s           r  r   r     s     v;#d)###F3v;--TWI	zl#++
 	e--TWIqc&)
 	eh888   Mr   zaten::crossc           	         [         R                  " X5      n[        XS/U/5      n[        XS/U/5      n[        XS/U/5      n[        XS/U/5      n[        U [	        XU5      [	        XU5      5      $ )Nr  rE  )r   _get_dim_for_crossr   r   r   )r)  r0  rA  rB   roll_x_1roll_y_1roll_x_2roll_y_2s           r  r?   r?     s     
,
,U
8C
 AqcC5)HAqcC5)H AqcC5)HAqcC5)H q#a8,c!x.HIIr   zaten::cdistc           	        [         R                  " US5      n[         R                  " US5      nUc   eUc   e[         R                  " US5      n[         R                  " US5      nUS:X  a!  US:X  d  Uc  US:  a  US:  a  [        XU5      $ [         R                  " U5      nUc   e[         R
                  " XUS-
  /5      n	[         R
                  " XUS-
  /5      n
[        X	XSS	S
9$ )Nr  r[  r  r  rE     r  gư>F)r  r5  )r   r  r  _euclidean_distr  r  r   )r)  r5  r6  r=  compute_moderow_size_x1row_size_x2p_floatr"  broadcasted_x1broadcasted_x2s              r  r,   r,     s     "66r2>K!66r2>K""""""((C0G"--lC@L#~ [B%6;";Lqb))++B/D$66qtaxjIN$66qtaxjIN	>% r   c                   [         R                  " U5      nUc   e[         R                  " U [        X[         R                  " U S5      5      S/SS9n[        X5      n[         R                  " U [        X[         R                  " U S5      5      S/SS9n[        X5      nU R                  " S/[        U [         R                  " U S5      U5      UU/Q7SS06nU R                  " S/X'U/Q7SS06n	[        X[        X	SS5      5      n
[        R                  R                  U
5      nU R                  S	[         R                  " U S
5      UR                  5       S9n[         R                  " U SXSS9n
[        X
5      n
U
$ )Nr  r+  Tr  r4  g       r5  r  ro  r  rp  rU  rP  r  )r   r  r  r   r  r   r%  r   r   r   r	   ru  rv  rz  r  r   )r)  r5  r6  r"  x1_normx1_padx2_normx2_padx1_x2_r  r  r   s                r  r  r  $  s    ++B/D//	A?;;AsCDt	G q"F//	A?;;AsCDt	G q"F
$$ ?;;AtDbI

 C $$x
;2w/
;
;CAIab"56F%%008E
$$88C@uGX  C 99	5&BF !_FMr   z
aten::lerpc                   U R                  SX!5      n[        U U R                  SX0R                  S[        R                  " S5      S95      U R                  SXR                  SX45      5      U R                  SUU R                  SUU R                  SU R                  S[        R                  " S5      S9U5      5      5      5      $ )	NrO  r  r^  ra  r_  rC  rF  r  )r%  r  ra  r   )r)  r=  r!  rB  diffs        r  rt   rt   N  s     44s!D		VVTT*ell36GTHI	UD$$uf34	DDUADDU\\#5FDGP	
	 r   zaten::broadcast_tensorsc                    [         R                  " U5      n[        XS   5      nU H  n[        XU5      nM     U Vs/ s H  n[	        XU5      PM     nnU R
                  " S/UQ76 $ s  snf )Nr   rX  )r   r  r  r   rN   r%  )r)  r=  all_tensorst_with_final_shaper   t_lists         r  r(   r(   c  st    !..t4K#A1~6  :  <GG;ai01;FG44%/// Hs   A)zaten::is_pinnedc                    g r  r!  )r)  r=  r  s      r  rm   rm   q  s     r   prim::ConstantSplitc           	         [         R                  " X5      nUc  [         R                  " SSU5      $ U/XB-  -  nXB-  nU(       a  UR                  U5        U R	                  SXU[        U5      S9$ )Nr  rZ  r[  r\  )r   r  r_  r  r%  rW  )r)  r=  rb  rB   r   rc  rd  s          r  r   r   w  su    //:D|--!#;T
 	
 \T/0F Hh44c3v;4OOr   prim::ConstantChunkc                    [         R                  " X5      nUc  [         R                  " SSU5      $ XB-   S-
  U-  n[        XXS5      $ )Nr  rZ  rE  )r   r  r_  r   )r)  r=  r`  rB   r  rb  s         r  r   r     sT    33D>H--!#;T
 	
 #a'F2Jq
88r   zprim::shapec                &    U R                  SU5      $ r,  r.  r  s     r  r   r     s    44r   z	prim::maxc                0    [         R                  " U SXSS9$ )NrU  rP  r  r  rT  s      r  r   r     s    77	5$B r   z	prim::minc           
         U(       dU  [         R                  " U5      (       a/  [        XU R                  S[        R
                  " S/5      S95      n[        X5      $ [        XU5      $ r  )r   r0  r   r%  ra  r   r   rT  s      r  r   r     sQ    **400!$$z5<<;L$"MND1|qr   z
prim::datac                    U$ r  r!  r  s     r  r   r     r  r   zprim::layoutc                J    U R                  S[        R                  " S5      S9$ r  r  r  s     r  r   r     s     44
ELLO444r   rX  c                    g r  r!  r)  r{  r  s      r  r   r         r   zprim::ListUnpackc                    [        U5      S:X  a>  US   R                  5       R                  5       S:X  a  [        R                  " US   5      $ g )NrE  r   rX  )rW  r  r  r   r  r  s      r  r   r     sF     6{aF1INN,1137LL ++F1I66r   zprim::TupleConstructc                    g r  r!  r  s      r  r   r     r  r   zprim::Uninitializedc                    g r  r!  r  s      r  r   r     r  r   zprim::unchecked_castc                    U$ r  r!  r  s     r  r   r     r  r   zprim::dtypec                    [         R                  " U5      nUc  [        R                  R                  nU R                  S[        R                  " U5      S9$ r]  )r   r  r	   ru  ry  r%  ra  r   )r)  r=  r|  s      r  r   r     sE    !66t<K!//5544
ELL$=4>>r   prim::tolistc                p    [         R                  " US5      nUS:  a  [         R                  " SSU5      $ U$ )ztolist is currently supported only for 1D input tensors.

dim_val and elem_ty_val represent dimension and type annotations
that need to match dimension and type of the input tensor.
r  rE  r  zdim_val > 1)r   r.  r_  )r)  r0  dim_valelem_ty_valrB   s        r  r   r     s7     
*
*7C
8C
Qw--nmUSSLr   r  c                   U R                   R                  5       R                  5       n[        U[        R
                  5      (       a  g [        R                  " SSUR                  5        S3U R                   R                  5       5      $ )Nr  z,output type should be 'DeviceObjType', not '')	original_noder  r  r6  r   rd  r   r_  r  )r)  r{  r  output_types       r  r   r     so    //((*//1K+r//00))
6{7G7G7I6J!L	  r   z
prim::Loopc           	         U R                   nU R                  nU R                  nU R                  n[        R
                  n[        R                  n[        UR                  5       5      n	[        R                  " U S/UQ7UR                  5       [        U	5      S.6u  pn[        X5       H  u  p[        UR                  5       5       H  u  nnUS:X  a0  U[        U5      :  a!  UR!                  X   R#                  5       5        US:  d  MD  US-   [        U5      :  d  MX  [%        UR#                  5       [&        R(                  5      (       a  M  UR!                  XS-      R#                  5       5        M     [*        R&                  R-                  UUR.                  UUUS5        M     [*        R&                  R1                  X5      n[        R2                  (       a   [*        R&                  R5                  XU5        U$ )NLoopr^  n_blocksr   rE  F)r  envvalues_in_envparams_dictr   r  r  r  blocksr   add_op_with_blocksoutputsSizerW  r  r  r{  r&  r  r6  r   r'  ra  _jit_pass_onnx_blockblock%_jit_pass_fixup_onnx_controlflow_nodeonnx_shape_inference(_jit_pass_onnx_node_shape_type_inference)r)  r{  attrsr  r  r  r  r  opset_version
old_blocks_new_op_outputsnew_block_contextsnew_node	old_blocknew_block_contextr  b_infixed_outputss                     r  r   r     s   ??D
%%COOM--K"7755Mt{{}%J4=4P4P	655$($4$4$6Z51O ),J(K$	 !!1!1!34GAtAv!c&k/VY^^-.
 AUc&k)"499;@@VE]//12 5 	%%## 	
' )L6 HHBBM ##99=	
 r   zprim::Ifc           	     h   U R                   nU R                  nU R                  nU R                  nU R                  n[
        R                  n[
        R                  n	US   R                  5       R                  5       S:H  n
U
(       Ga@  [        R                  " US   R                  5       S5      R                  5       n[        U[        5      (       a  [        U5      O
[!        U5      nU(       a  SOSn[        UR#                  5       5      U   n[$        R&                  R)                  UUUUUS5      n[        UR+                  5       5      n[        UR+                  5       5      n/ n[-        [/        U5      5       HF  nUU   U;  a!  [0        R2                  " SUU    S3UU   5      eUUU      nUR5                  U5        MH     U$ [7        UR#                  5       5      n[8        R:                  " U S/UQ7UR=                  5       [/        U5      S	.6u  nnn[?        UU5       H4  u  nn[$        R&                  R)                  UUR                  UUUS
5        M6     [$        R&                  RA                  UU	5      n[
        RB                  (       a   [$        R&                  RE                  UXy5        U$ )Nr   rc  rd  rE  TzThe sub block ATen output z is not in env.Ifr  F)#r  r   r  r  r  r   r  r  r  r  r   rg  r  r6  r7  r  re  r  ra  r   r  r^  r&  rW  r
   rk  r  r  r   r  r  r  r  r  r  )r)  r{  r  r*  r   r  r  r  r  r  	static_if
input_flagr  	block_idx	current_bif_output_listcurrent_b_listfinal_b_listr  onnx_br  r  r  r	  r
  r  r  s                              r  r   r   4  sg   	AGGE
%%COOM--K"7755Mq	 %%'+;;I4 %..vay~~/?IPPR
)*d;;C
OjAQ 	 %A!	$Y/	hh++ 
 aiik*i//12^,-Cc"#-//01D0E_U"3'  ,-F' . 188:&
8A8T8Tt9
9
&'mmoJ9
5+X -0
<N,O(I(HH))!''$ -P FFm
 ''HH==+ r   r$  c           	        U R                   nUR                  5       (       a  g [        UR                  5       R	                  5       [
        R                  5      (       a  g UR                  S5      S:X  a%  U R                  S[        R                  " US5      S9$ UR                  S5      S:X  a%  U R                  S[        R                  " US5      S9$ UR                  5       R	                  5       R                  [
        R                  R                  5       5      (       dN  UR                  5       R	                  5       R                  [
        R                  R                  5       5      (       a9  U R                  S[        R                   " [        R                  " US5      5      S9$ UR                  5       R	                  5       R                  [
        R                  R#                  5       5      (       aH  [        R                  " US5       Vs/ s H  nU R                  SUS9PM     nnU R                  " S/UQ76 $ [$        R&                  " SUR                  S5       S	[(        R*                   S
3UR                  5       5      es  snf )Nrd  r   r^  r_  rf  value_srX  z"Unsupported prim::Constant kind: 'z'. Please send a bug report at .)r  rl  r6  r  r  r   rd  rf  r%  r   rg  r  r  r  ofFloatsra  r   	ofStringsr
   rk  r   PYTORCH_GITHUB_ISSUES_URL)r)  r{  r  r  rf  str_constantss         r  r   r     s   ??D $++-$$&(8(899{{7s"ttJ(A(A$(PtQQ{{7s"ttJ(A(A$(PtQQ{{}''
 					)	)"++*>*>*@	A	Att_-F-FtW-U V  
 	
 {{}''(=(=(?@@ %..tW=
= DDQD'= 	 
 tt):M::

#
#
,T[[-A,B C''1'K'K&LA	O 
s   J
prim::typec                   UR                  5       R                  5       S:X  aN  [        R                  " UR                  5       R	                  5       5      nUb  U R                  S[        U5      S9$ [        R                  " SSU5      $ )Nr  r^  r  r   z,Device type cannot be statically determined.)	r  r  r   get_device_from_valuer0  r%  r  r   r_  )r)  device_valuerY  r  r  s        r  r   r     sw    !^3001B1B1D1J1J1LM44
CK488))6 r   zonnx::Placeholderc                    U R                   nU R                  nU R                  nU R                  n[        R
                  R                  XCXV5      $ r  )r  r   r  r  ra  r   '_jit_onnx_convert_pattern_from_subblock)r)  r{  r  r  r   r  r  s          r  r   r     sB    ??DGGE
%%COOM88;;S r   zaten::resolve_conjzaten::resolve_negc                    U$ r  r!  r/  s     r  r  r    s	     Lr   zaten::_conjzaten::conj_physicalc                |    [         R                  " U5      (       a  [         R                  " SU5      $ [        X5      $ )Nz aten::_conj, aten::conj_physical)r   is_complex_valuer  r  r/  s     r  r  r    s;     ''..00.
 	
 "!++r   zaten::logitc                "   U R                  S[        R                  " S5      S9n[        R                  " U5      (       d  U R                  SU[
        R                  R                  U5      R                  5       S9nU R                  SX25      nU R                  SXA5      nU R                  SXQU5      nU R                  S	Xb5      nU R                  SXrU5      nOUnU R                  SX85      n	U R                  S
X5      n
U R                  SU
5      $ )Nr^  r  r_  ro  rp  rO  r  r  r  rn  rF  )	r%  ra  r   r   rH  r	   ru  rv  rz  )r)  r=  r  r  one_sub_epsself_less_equal_one_sub_epstemporary_selftemporary_self_less_epszr   rC   s              r  r   r     s    
$$z5<<#4$
5C##C((ddCk77BB4HRRT  
 dd5#+&'dd9k&H#g'B+V"#$$v~"CDD1G
$$uc
C
$$ua
C44sr   )r  r  )r)  jit_utils.GraphContextr  )r  )T)r  r  r  r  r  re  r  )F)r)  r/  r0  r  r  r  r  re  )rB   r  )r)  r/  r0  r  r   r  )
r)  r/  r0  r  r   r  rK  r  rd  r  )r  r  rB   r  rA  r  )r  r   returnr   )NNN)r)  r/  r0  r  r  r  rB  r  r  r  r  r  r0  z#tuple[_C.Value, _C.Value, _C.Value])r)  r/  r0  r  r  r  rB  r  r  r  r  r  r  re  r0  r  )
r)  r/  r  re  r  r   r  r   r  re  )FF)NN)FN)NNNFN)NNF)r)  r/  r=  r  r  r  r  r  )r  r  )NNFN)r)  r/  r0  torch._C.ValuerB   r1  r5  re  )r)  r/  r=  r1  r;  r1  rB   Sequence[int] | Noner5  re  r  r1  )r)  r/  r=  r1  r;  r  rB   r2  r5  re  r  r1  )r)  r/  r=  r1  r;  r1  rB   z	list[int]r5  re  r  r1  )r+  )NF)r)  r/  rY  z
str | None)r  )r)  r/  r=  r1  rb  r  )TNNNNF)r)  r/  r  z
int | None)r  #use_mm_for_euclid_dist_if_necessary)r)  r/  r0  zlist[_C.Value] | None)r)  r/  r0  None)r)  r/  r0  zlist[_C.Value])r)  r/  r#  r  )r)  r/  r0  r  )r)  r/  r=  r1  r  r1  (o  __doc__
__future__r   r  rX  r  r  r@  typingr   r   typing_extensionsr   ra  torch._C._onnxr   _onnxrr  torch.nn.modules.utils
torch.onnxr   r	   r
   r   torch.onnx._globalsr   torch.onnx._internalr   r   collections.abcr   torch.typesr   r  partialonnx_symbolic_onnx_symbolicr"  r  r1  r9  r  r   r   r   r   r   r   rC   r  r   rX  rj  ri  rS   rU   r   r   r+   r   r  r   r'   r   r   r   r   r   r   r   r=   r   r   r   r    r!   r   r   r  _apply_paramsr  r@   r  r  r   r   rO   r)   rN   rH   rG   r   r   r   r  r  r  r   r  r   r  r   r   r   r   r   r   r   r   r   r-   rT   r  r   rs   r]   r   r   r\   nnmodulesutils_single_pair_tripler  r   r   r   r  r  r  r  r2   r$  r   r   r   rC  rI  r%   r&   r  r  ra  rK   r   r_   rl  r   rt  rZ   rr   rz  r}  r  r   r   r   r   r  r  r  r}   r  r  r  r<   r8   r9   r:   r5   r6   r7   r#   r   rq   rk   r  rF   r   ri   rh   rg   rf   r*   r   r>   r   r1   r   r~   r   r   r   r0   r/   r.   r   r   r   r   r   r   r   rM   rE   ru  r   r4   r}  r  r  r  r  r  r  r  r  r  r  rJ   rI   r   r   r   r   r  r  r   r  r   r   r   rX   rW   r   rP   r   rd   rc   rb   r   ra   r   r   r  r   r   r   r;   r   r   r   r   r   r  r  r  r   r   r  r  rA   r3   r  r  r   r   r   r   r   r   r   r$   r|   rL   rR   r   r   rn   r  r  r   r   r   r   r   r   rl   r  r  r   rY   r	  r   r
  r	  r   r   r   r{   ru   r   r   rj   rx   ry   rw   rv   rV   r   r"   r   r   r[   r^   rt  rB   r~  r  ro   r   r  r  rp   r   r   r  r  rz   r`   r   rD   r   rQ   re   r   r?   r,   r  rt   r(   rm   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  <module>rK     s9   #    
  * (         H G ' 8 ("
CL ""<#=#=QG ()  *  ,-$ .$  %; & !; "#%# & $#
 $ $0 $ $* , , ( ( 9 9  Cc3/F 0 !F
 Cc*
 +
>'0 $%) &)
  !( "( #$$ %$6 "#$ $$ C%#0 & #0L C%3 & 3   
A A ' ' '  ' Cc342 5 2j        KCH I               *  KAF! G !!   %K &K ?88eLM O99,OP %%&%	
	 Cf-D .  D )*H +H '(F )F 	2 2  %1 & !1 %& &  && $%%& & &&$ !"d+' , #'" !"%Cc34++ 5 & #+0 %&%Cc3S#sCHPP I & 'P( e<6 = 6 !"%Cc*
 + & #
"  C&0 ' !0 %" & "  # !#
 $%Cc3/M 0 &M$ Cc3/M 0 M2 $%HL>> &> ()CsC0R 1 *R /0@DAA 1A Cc* +   %Cc*7 + &  7( #  #  ;J !;J| ' ', 6 6 E E % &  %! & !       9 9
 !"Cc* + # "#%Cc*
 	<<< < 	< + & $< C%7 & 7  Cf-; . !;|  !" "" -.2 /2j %%%((**0088!E	
 		 %%%((**0066%	
 		 %%%((**0088!E	
 		767t ))HI!&&		  ))HI!$$		  ))HI!&&		  %%lEHH4D4D4J4J4R4RS %%lEHH4D4D4J4J4P4PQ %%lEHH4D4D4J4J4R4RS4*4n %%!=%((2B2B2H2H2P2P	
 	%&	 %%!=%((2B2B2H2H2N2N	
 	%&	 %%!=%((2B2B2H2H2P2P	
 	%&	 %%!HH""**#		
 	%& %%!HH""((#		
 	%& %%!HH""**#		
 	%&3~3l"" '( )$&R ()()() * * * )*)*)* + + + TTT 
T 	T
 T T( %%&:AyI$% %%&:AyI$% %%&:AyI$% %%&91hG#$ %%&;QI%&  %%&<aJ&'T$ %&88 '8  #$ % "## $# 	    
d+& , &2 
d+  ,  
d+% , %) 
d+% , %& 
d+%  , % 
d+%  , % %  %  $ $  %  %  #$f%% & %% "#f%$ & $$ #$f%% & %% #$S %S !" #8 !" #8 Cc3/	1 	1 0 	1 #$Cf-  . %> $%Cc*	& + &	& $%c4tS$S#sC" @@ &@F )*44 +4n #$Cc4tS$L M %< Cc4dC@ 
 
 A   
F Cc4dC@ 
 
 A   
F Cc4dC@ 
 
 A   
F ()Cc4tS$G H *: ()Cc4tS$G H *: ()Cc4tS$G H *: "#Cc3S#sCH44 I $4n )*eUE:CsC5I*I*I* $I* 	I*
 I* 
I* )I* 6 ; +I*X "#eUE:CsCc:


 $
 	

 
 

 
 
 ; ; $
 %&Cc3S#sCH\P\P \P \P 
\P \P I '\P~ Cc3/
 0  
D %Cc3/
F 0 & 
F % &  $%Cc*? + &? !"F #F "#A $A "#9 $9 !"Cc3/HM T T 0 # TF   !( )*Cc3/# 0 +#  )*$ +$"       Y Y V V
   > >* !"C%

 & #

 !"C%

 & #

 C C	 C  d+) , !) C C C  d+) , !) %Cs+C , & C %Cs+C , & C  %Cc* + & !    ! Cc* + ! " ++,BCD "++,JKL ++,DEF !++,IJK ++,ABC ++,CDE						0 CdC5  6    !Cc3/	5 0 "	5  Cc*? + !?  !Cc3/F 0 "F "#FGG H $G "#FGF H $F #$FGG H %G !"FGG H #G "#FGG H $G "#FGI H $I #$FGG H %G $%FGH H &H "#FGF H $F Cc3S9 	>	> : 	> "#Cc3S9 	C	C : $	C !"NS>> #> %& ' LQQQ  Q6 !"* * #* Cc34  5   "#Cc3S9  : $. !"NS>> #> + +
 Cc34  5  !"Cc3S9  : #.  !NS== "= OT

 
0 !"
 

 #
>  ! HH "H  V V. EX EXP  !%Cc* + & " !"%C ! ! & #!
 #$KAFC 4 ! G %4 "#C , ! $, "#C% & $( "#C%" & $">   !"C%D & #D2 Cc62C C 3 C& 2 2 Cc3V<< < = < ,-Q .Q
 
GQ GQT '  ' )*DHd5d5 +d5N %&C%C
 & 'C
L '(C%@
 & )@
\ _+_+ _+D Cc3S#sCH I> Cc3S#sCH I> $ $ !"7 #74 ?88?P ++J79LM ++J79LM?		?D #$C%0 & %0   
 "#C% & $ -.Cc*? + /?. ,-Cc34 5 ."  ' !'T $% &8  2  2 "#
 KK $K& !"
  #& Cc37# 8 # !"8 8 #8< #$C  ! %
 C  !   eU3Cc*N + 4 !N4  C ( ! !(
 %&> > '> C  ! 
 Y Y& = = Cc3/ 0   Cc*SSS 
S 	S +  S Cc*SSS 
S 	S +  S  Cc3/R 0 !R  #$Cc3/  0 %  S S
 )*; +;    !!  "!  @ !@ Cc3/Q Q 0  Q" CsC0P 1P  
  
  !* "*  !# "#
 !"Cs+J , #J IY  IYX  !	5	5 "	5  
 #$V %V $%- &- `I `IF #$CdC5AA
A 
A 
	A
 A A 6 %AB *+CdC5YY
Y 
Y 
	Y
 Y Y 6 ,Y *+CdC588
8 
8 
	8
 8 8 6 ,8v $%Cc*' ' + &' &'Cs+    , (  #$Cc3/PT 0 %.    !    !C%- - & "-> !"# ## C%
 
 & 
4 "#eUE:Cc3S977 : ; $7t $%Cc* + &.   #$ %& "#K $K     Cc3/
 0  
$  !Cc*
 + "
 "#%CdC0), ), 1 & $),X &'8 (8 &'E (E    #$Cc3S#> ## 	# ? %#L 
    " "  Cc*0 + !0@ C%2 & 2 !"BH BH #BHJ Ct, - & Cc*J J + J" 
 
6 >'T  ( )*
0 +
0 !"  #
 %&
P '
P" %&9 '9          5  5 %& ' "# $ &' ( %& ' &' ( ? ? 	  	 	  	 1 1h 
W Wt  ! "D 
 
 #$ % $%#$ % & %&, ' ,"  r   