ó
    Eñi@ý  ã                  óØ
  • % 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rS SKrS SK	r	S SKJ
r
Jr  S SKJrJrJr  S SKrS SKJs  Jr  S SKJrJrJrJrJrJrJrJr  S SKJr  \(       a  S SKJr  \R@                  " \!5      r"\R$                  RG                  \!S5      r$\%" 5       r&S	\'S
'   \(\)-  \*-  S-  r+/ SQr,S SK-J.r/  S r0 " S S5      r1 " S S5      r2 " S S\2\*5      r30 S\Rh                  _S\Rj                  _S\Rl                  _S\Rn                  _S\Rn                  _S\Rp                  _S\Rr                  _S\Rt                  _S\Rv                  _S\Rx                  _S\Rz                  _S\R|                  _S S! _S"\R~                  _S#\R€                  _S$\R‚                  _S%\R„                  _0 S&\R†                  _S'\Rˆ                  _S(\RŠ                  _S)\RŒ                  _S*\RŒ                  _S+\RŽ                  _S,\R�                  _S-\R�                  _S.\R’                  _S/\R”                  _S0\R–                  _S1\_S2\_S3\_S4\_S5\_S6\R˜                  _ES7\R˜                  0ErM1 S8krNS9 rOS:rP\P HK  rQS;\Q 3rRS<\R 3rS\T" \1\R\O" \Q5      5        \U" \\S5      \M\R'   \NRm                  \R5        \,R­                  \R5        MM     S 1rW\N\W-  rX1 S=krY1 S>krZS1r[\Y\[-  r\1 S?kr]SS)1r^SS)S@SA.r_1 SBkr`\P H  rQS;\Q 3rR\`Rm                  \R5        M     1 SCkra1 SDkrbSE rcSF rdSG reSH rfSI rgSJ rhSK riSL rjSM rkSN rlSO rm SwSP jrnSQ roSR rpSS rq0 S\Rl                  _S0\R–                  _S&\R†                  _S%\f_S-\g_S,\h_S\i_S\o_S)\j_S*\p_S+\q_S6\c_S7\d_S\e_S#\k_S/\l_rrST rsSU rtSV ruSW rvSX rwSY rxSZ ryS[ rzS\ r{S] r|S^ r}S_ r~S` r\	GR                   \!   r�Sa r‚\P H(  rQSb\Q 3rƒ\‚" \Q5      r„\ƒ=\„l…        \„l!        \T" \�\ƒ\„5        M*     C„CQCƒSc r†SxSd jr‡Se rˆSf r‰0 \rE0 S5\GR                  _S\Rh                  _S\w_S'\x_S\y_S$\z_S"\{_S\|_S\t_S\u_S1\ˆ_S\v_S(\RŠ                  _S4\}_S3\~_S2\_S\†_E\‡\‰Sg.Er‹\P H  rQS;\Q 3rR\U" \�Sb\Q 35      \‹\R'   M     CQCRCPC�Sh rŒSi r�Sj rŽSk r�Sl r�Sm r‘Sn r’So r“\Œ\Ž\�\‘\’\“Sp.r”Sq r•Sr r–Ss r—St r˜Su r™\‹GR5                  5        H  u  r›rœ\˜" \›\œ5        M     \”GR5                  5        H  u  r›rœ\™" \›\œ5        M     Sv r�\‹ HT  r›\›\Y;   a  \�" \›\5        M  \›\];   a  \�" \›\5        M%  \›\[;   d  \›\Z;   a	  \�" \›\5        \�" \›\5        \›\_;  d  MK  \�" \›\5        MV     C›Cœg)yé    )ÚannotationsN)Ú	lru_cacheÚupdate_wrapper)ÚOptionalÚTYPE_CHECKINGÚUnion)Ú	sym_floatÚsym_iteÚsym_maxÚsym_minÚsym_notÚSymBoolÚSymFloatÚSymInt)Údtrace_structured)ÚShapeEnvÚsym_nodeÚobjectÚ_NO_HINT)ÚSymNodeÚmethod_to_operatorÚmagic_methodsÚ
DynamicInt)Úpy_sym_typesc                ó`   • U [         L a  [        $ U [        L a  [        $ U [        L a  [
        $ U $ ©N)Úboolr   Úintr   Úfloatr   )Úts    Ú[/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/fx/experimental/sym_node.pyÚ_to_symtyper"   A   s+   € ØŒD‚yÜˆØŒC‚xÜˆØŒE‚zÜˆØ€Hó    c                  ó  • \ rS rSr% SrSrS\S'      S^ S_S jjrS`S jrSaS	 jr	SbS
 jr
\S 5       r\S 5       rS rScS jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rSdS jrSeS jrSeS jr ScSeS  jjr!SeS! jr"SeS" jr#SeS# jr$SeS$ jr%SeS% jr&SeS& jr'SeS' jr(SeS( jr)SeS) jr*SeS* jr+SeS+ jr,SeS, jr-SeS- jr.SeS. jr/SeS/ jr0SeS0 jr1SeS1 jr2SeS2 jr3SeS3 jr4SeS4 jr5SeS5 jr6SeS6 jr7SeS7 jr8SeS8 jr9SeS9 jr:SeS: jr;SeS; jr<SeS< jr=SeS= jr>SeS> jr?SeS? jr@SeS@ jrASeSA jrBSeSB jrCSeSC jrDSeSD jrESE rFSF rGSG rHSH rISI rJSJ rKSeSK jrLSL rMSM rNSN rOSeSO jrPSfSP jrQSQ rRSR rSSS rTST rUSU rVSV rWSW rXSX rYSY rZSZ r[S[ r\S\ r]S]r^g)gr   éN   z˜
This is a type erased SymInt/SymFloat which we use to do actual operations.
End users don't touch this.  Magic methods are NOT defined on this object.
Fr   Ú_optimized_summationNc                ó0  ^ • UT l         UT l        UT l        UT l        U 4S jnU[        L a  S nO Ub–  [        U5      UL d1  [        U5      [        U5      L d  [        SU S[        U5       35      eT R                  (       aE  T R                  R                  (       a*  U" 5       n	XI:w  a  [        U SU	 ST R                   S35      eOU" 5       nUT l
        UT l        T R                  =(       a    T R                  R                  n
U
=(       a    UT l        g )Nc                 óâ   >• SSK Jn   U " TR                  5      (       a  g TR                  R	                  TR                  SS9nUb(  [        U[        5      (       d  TR                  U5      OUnU$ )Nr   )Úhas_free_unbacked_symbolsT)Úcompute_hint)Ú%torch.fx.experimental.symbolic_shapesr)   ÚexprÚ	shape_envÚ_maybe_evaluate_staticÚ
isinstanceÚSymTypesÚpytype)r)   ÚhintÚselfs     €r!   r*   Ú&SymNode.__init__.<locals>.compute_hint‡   s`   ø€ ÝWñ )¨¯©×3Ñ3ØØ—>‘>×8Ñ8¸¿¹ÐQUÐ8ÐVˆDØÑÜ0:¸4Ä×0JÑ0J�t—{‘{ 4Ô(ÐPT�ØˆKr#   zCannot create SymNode of type z  with incompatible hint of type z != z (for Ú))Ú_exprr-   r1   r&   r   Útyper"   ÚAssertionErrorÚ_translation_validation_enabledr,   Ú_hintÚconstantÚfx_node)r3   r,   r-   r1   r2   r;   r<   Úoptimized_summationr*   Úcomputed_hintÚtx_validation_ens   `          r!   Ú__init__ÚSymNode.__init__]   s  ø€ ð ˆŒ
Ø"ˆŒØˆŒØ$7ˆÔ!õ:	ð ”8Òà‰DØÑÜ˜“J &Ò(¬D°«J¼+ÀfÓ:MÒ,MÜ$Ø4Ø�hÐ>¼tÀD»z¸lðLóð ð �~�~ $§.¡.×"P×"Pñ !-£�ØÓ(Ü(¨D¨6°°m°_ÀFÈ4Ï9É9È+ÐUVÐ)WÓXÐXøá“>ˆDØˆŒ
Ø;CˆŒð �N‰N×M˜tŸ~™~×MÑMð 	ð (×3¨Gˆ�r#   c                ó„   • [        U R                  XR                  U R                  U R                  U R
                  5      $ r   )r   r6   r1   r:   r;   r<   )r3   r-   s     r!   Úwith_shape_envÚSymNode.with_shape_env²   s.   € ÜØ�J‰J˜	§;¡;°·
±
¸D¿M¹MÈ4Ï<É<ó
ð 	
r#   c                ó4  • U R                   UR                   :H  =(       ay    U R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )r6   r1   r:   r;   r<   ©r3   Úothers     r!   Ú	_value_eqÚSymNode._value_eq·   sq   € ð �J‰J˜%Ÿ+™+Ñ%÷ .Ø—‘˜uŸ|™|Ñ+÷.à—
‘
˜eŸk™kÑ)÷.ð —‘ §¡Ñ/÷.ð —‘ §¡Ñ-ð	
r#   c                ó†   • [        U R                  U R                  U R                  U R                  U R
                  45      $ r   )Úhashr6   r1   r:   r;   r<   ©r3   s    r!   Ú_value_hashÚSymNode._value_hashÁ   s,   € ä�T—Z‘Z §¡¨d¯j©j¸$¿-¹-ÈÏÉÐVÓWÐWr#   c                óL   • U R                   R                  U R                  5      $ r   )r-   Úreplacer6   rL   s    r!   r,   ÚSymNode.exprÅ   s   € à�~‰~×%Ñ% d§j¡jÓ1Ð1r#   c                ó   • U R                   $ r   ©r:   rL   s    r!   r2   ÚSymNode.hintÉ   s   € à�z‰zÐr#   c                ó   • U R                   S L$ r   rS   rL   s    r!   Úhas_hintÚSymNode.has_hintÍ   s   € Ø�z‰z Ð%Ð%r#   c                ó�  • SSK Jn  U R                  c£  Ub{  U" U R                  5      nU R                  R                   Vs0 s H$  nUXC;   a  UOU R
                  R                  U   _M&     nn[        U R                  R                  U5      5      $ U R
                  R                  U R                  5      $ U R                  $ s  snf )Nr   ©Úfree_unbacked_symbols)
r+   rZ   r:   r,   Úfree_symbolsr-   Úbacked_var_to_valr   ÚxreplaceÚ	size_hint)r3   ÚfallbackrZ   Úunbacked_symbolsÚsÚreplacementss         r!   Úrequire_hintÚSymNode.require_hintÐ   s¼   € ÝOà�:‰:ÑØÑ#ñ $9¸¿¹Ó#CÐ ð
 "ŸY™Y×3Ò3ó	 ò 4˜ð ØÓ,ñ  àŸ™×9Ñ9¸!Ñ<ò=ñ 4ð	 ð  ô ˜4Ÿ9™9×-Ñ-¨lÓ;Ó<Ð<à—>‘>×+Ñ+¨D¯I©IÓ6Ð6Ø�z‰zÐùò s   Á+Cc                ód   • U R                   R                  (       a  [        U R                   5      $ g r   )r,   Ú	is_numberr   rL   s    r!   Úmaybe_as_intÚSymNode.maybe_as_intê   s    € Ø�9‰9××Ü�t—y‘y“>Ð!àr#   c                ó€   • SS K n[        U R                  UR                  5      (       a  [	        U R                  5      $ g ©Nr   )Úsympyr/   r,   ÚFloatr   ©r3   rk   s     r!   Úmaybe_as_floatÚSymNode.maybe_as_floatñ   s,   € Ûä�d—i‘i §¡×-Ñ-Ü˜Ÿ™Ó#Ð#àr#   c                ót   • SS K nU R                  UR                  L a  gU R                  UR                  L a  gg )Nr   TF)rk   r,   ÚtrueÚfalserm   s     r!   Úmaybe_as_boolÚSymNode.maybe_as_boolù   s.   € Ûà�9‰9˜Ÿ
™
Ò"ØØ�Y‰Y˜%Ÿ+™+Ò%Øàr#   c                ó&   • U R                   [        L $ r   )r1   r   rL   s    r!   Úis_intÚSymNode.is_int  s   € Ø�{‰{œcÐ!Ð!r#   c                ó&   • U R                   [        L $ r   )r1   r   rL   s    r!   Úis_floatÚSymNode.is_float  s   € Ø�{‰{œeÐ#Ð#r#   c                ó&   • U R                   [        L $ r   )r1   r   rL   s    r!   Úis_boolÚSymNode.is_bool	  s   € Ø�{‰{œdÐ"Ð"r#   c                ó¶   • U R                   S L=(       aE    [        U R                   [        5      =(       a$    U R                   R                  R	                  5       $ r   )r:   r/   r   ÚnodeÚis_nested_intrL   s    r!   r€   ÚSymNode.is_nested_int  sA   € ð �J‰J˜dÐ"÷ 0Ü˜4Ÿ:™:¤vÓ.÷0à—
‘
—‘×-Ñ-Ó/ð	
r#   c           	     ó°   • [        U5      [        La  [        S[        U5       35      eSS Kn[	        UR                  U5      U R                  [        XUS9$ )NúExpected int, got r   ©r;   r<   )r7   r   r8   rk   r   ÚIntegerr-   ©r3   Únumrk   s      r!   Úwrap_intÚSymNode.wrap_int  sN   € Ü�‹9œCÒÜ Ð#5´d¸3³i°[Ð!AÓBÐBÛäØ�M‰M˜#Ó §¡´°SÐPSñ
ð 	
r#   c           	     ó°   • [        U5      [        La  [        S[        U5       35      eSS Kn[	        UR                  U5      U R                  [        XUS9$ )NzExpected float, got r   r„   )r7   r   r8   rk   r   rl   r-   r†   s      r!   Ú
wrap_floatÚSymNode.wrap_float  sN   € Ü�‹9œEÒ!Ü Ð#7¼¸S»	°{Ð!CÓDÐDÛäØ�K‰K˜Ó˜dŸn™n¬e°SÐPSñ
ð 	
r#   c           	     óÎ   • [        U5      [        La  [        S[        U5       35      eSS Kn[	        U(       a  UR
                  OUR                  U R                  [        UUUS9$ )NzExpected bool, got r   r„   )r7   r   r8   rk   r   rq   rr   r-   r†   s      r!   Ú	wrap_boolÚSymNode.wrap_bool&  sW   € Ü�‹9œDÒ Ü Ð#6´t¸C³y°kÐ!BÓCÐCÛäÞˆE�JŠJ 5§;¡;Ø�N‰NÜØØØñ
ð 	
r#   c                ó   • U $ r   © rL   s    r!   ÚcloneÚSymNode.clone4  s   € Øˆr#   c                ó   • U R                    $ r   )r,   rL   s    r!   ÚstrÚSymNode.str7  s   € Ø—)‘)�Ðr#   c                ó"   • U R                  5       $ r   ©r•   rL   s    r!   Ú__str__ÚSymNode.__str__:  s   € Ø�x‰x‹zÐr#   c                ó€  • SU R                    SU R                   SU R                   3/nU R                  b  UR	                  SU R                   35        U R
                  b  UR	                  SU R
                   35        U R                  b  UR	                  SU R                   35        SR                  U5      S-   $ )	NzSymNode(z, shape_env=z	, pytype=zhint=z	constant=zfx_node=z, r5   )r6   r-   r1   r:   Úappendr;   r<   Újoin)r3   Úreps     r!   Ú__repr__ÚSymNode.__repr__=  s¤   € à�t—z‘z�l ,¨t¯~©~Ð.>¸iÈÏÉÀ}ÐUð
ˆð �:‰:Ñ!Ø�J‰J˜˜tŸz™z˜lÐ+Ô,Ø�=‰=Ñ$Ø�J‰J˜ 4§=¡= /Ð2Ô3Ø�<‰<Ñ#Ø�J‰J˜ $§,¡, Ð0Ô1Ø�y‰y˜‹~ Ñ#Ð#r#   c                ó"   • U R                  5       $ r   r˜   rL   s    r!   Ú_graph_reprÚSymNode._graph_reprI  s   € à�x‰x‹zÐr#   c                ó"   • U R                  5       $ r   )Ú_absrL   s    r!   ÚabsÚSymNode.absO  ó   € Ø�y‰y‹{Ðr#   c                ó"   • U R                  5       $ r   )Ú_posrL   s    r!   ÚposÚSymNode.posR  r¨   r#   c                ó$   • U R                  U5      $ r   )Ú_round)r3   Úndigitss     r!   ÚroundÚSymNode.roundU  s   € Ø�{‰{˜7Ó#Ð#r#   c                ó"   • U R                  5       $ r   )Ú_truncrL   s    r!   ÚtruncÚSymNode.truncX  ó   € Ø�{‰{‹}Ðr#   c                ó$   • U R                  U5      $ r   )Ú_addrF   s     r!   ÚaddÚSymNode.add[  ó   € Ø�y‰y˜ÓÐr#   c                ó$   • U R                  U5      $ r   )Ú_subrF   s     r!   ÚsubÚSymNode.sub^  r»   r#   c                ó$   • U R                  U5      $ r   )Ú_mulrF   s     r!   ÚmulÚSymNode.mula  r»   r#   c                ó$   • U R                  U5      $ r   )Ú_modrF   s     r!   ÚmodÚSymNode.modd  r»   r#   c                ó$   • U R                  U5      $ r   )Ú
_float_powrF   s     r!   Ú	float_powÚSymNode.float_powg  s   € Ø�‰˜uÓ%Ð%r#   c                ó$   • U R                  U5      $ r   )Ú_pow_by_naturalrF   s     r!   Úpow_by_naturalÚSymNode.pow_by_naturalj  s   € Ø×#Ñ# EÓ*Ð*r#   c                ó$   • U R                  U5      $ r   )Ú_and_rF   s     r!   Úand_ÚSymNode.and_m  s   € Ø�z‰z˜%Ó Ð r#   c                ó$   • U R                  U5      $ r   )Ú_or_rF   s     r!   Úor_ÚSymNode.or_p  r»   r#   c                ó$   • U R                  U5      $ r   )Ú_float_truedivrF   s     r!   Úfloat_truedivÚSymNode.float_truedivs  s   € Ø×"Ñ" 5Ó)Ð)r#   c                ó$   • U R                  U5      $ r   )Ú_int_truedivrF   s     r!   Úint_truedivÚSymNode.int_truedivv  ó   € Ø× Ñ  Ó'Ð'r#   c                ó$   • U R                  U5      $ r   )Ú_int_floordivrF   s     r!   Úint_floordivÚSymNode.int_floordivy  ó   € Ø×!Ñ! %Ó(Ð(r#   c                ó$   • U R                  U5      $ r   )Ú_lshiftrF   s     r!   ÚlshiftÚSymNode.lshift|  ó   € Ø�|‰|˜EÓ"Ð"r#   c                ó$   • U R                  U5      $ r   )Ú_rshiftrF   s     r!   ÚrshiftÚSymNode.rshift  rê   r#   c                ó"   • U R                  5       $ r   )Ú_sym_notrL   s    r!   r   ÚSymNode.sym_not‚  ó   € Ø�}‰}‹Ðr#   c                ó$   • U R                  U5      $ r   )Ú_eqrF   s     r!   ÚeqÚ
SymNode.eq…  ó   € Ø�x‰x˜‹Ðr#   c                ó$   • U R                  U5      $ r   )Ú_nerF   s     r!   ÚneÚ
SymNode.neˆ  r÷   r#   c                ó$   • U R                  U5      $ r   )Ú_gtrF   s     r!   ÚgtÚ
SymNode.gt‹  r÷   r#   c                ó$   • U R                  U5      $ r   )Ú_ltrF   s     r!   ÚltÚ
SymNode.ltŽ  r÷   r#   c                ó$   • U R                  U5      $ r   )Ú_lerF   s     r!   ÚleÚ
SymNode.le‘  r÷   r#   c                ó$   • U R                  U5      $ r   )Ú_gerF   s     r!   ÚgeÚ
SymNode.ge”  r÷   r#   c                ó"   • U R                  5       $ r   )Ú_floorrL   s    r!   ÚfloorÚSymNode.floor—  r¶   r#   c                ó"   • U R                  5       $ r   )Ú_is_integerrL   s    r!   Ú
is_integerÚSymNode.is_integerš  s   € Ø×ÑÓ!Ð!r#   c                ó"   • U R                  5       $ r   )Ú
_sym_floatrL   s    r!   r	   ÚSymNode.sym_float�  s   € Ø�‰Ó Ð r#   c                ó"   • U R                  5       $ r   )Ú_sym_intrL   s    r!   Úsym_intÚSymNode.sym_int   rò   r#   c                ó"   • U R                  5       $ r   )Ú_ceilrL   s    r!   ÚceilÚSymNode.ceil£  s   € Ø�z‰z‹|Ðr#   c                ó"   • U R                  5       $ r   )Ú_negrL   s    r!   ÚnegÚSymNode.neg¦  r¨   r#   c                ó$   • U R                  U5      $ r   )Ú_sym_minrF   s     r!   r   ÚSymNode.sym_min©  ó   € Ø�}‰}˜UÓ#Ð#r#   c                ó$   • U R                  U5      $ r   )Ú_sym_maxrF   s     r!   r   ÚSymNode.sym_max¬  r&  r#   c                ó$   • U R                  X5      $ r   )Ú_sym_ite)r3   Úthen_valÚelse_vals      r!   r
   ÚSymNode.sym_ite¯  s   € Ø�}‰}˜XÓ0Ð0r#   c                ó$   • U R                  X5      $ r   )Ú_is_contiguous©r3   ÚsizesÚstridess      r!   Úis_contiguousÚSymNode.is_contiguous²  s   € Ø×"Ñ" 5Ó2Ð2r#   c                ó$   • U R                  X5      $ r   )Ú_is_channels_last_contiguous_2dr1  s      r!   Úis_channels_last_contiguous_2dÚ&SymNode.is_channels_last_contiguous_2dµ  ó   € Ø×3Ñ3°EÓCÐCr#   c                ó$   • U R                  X5      $ r   )Ú_is_channels_last_contiguous_3dr1  s      r!   Úis_channels_last_contiguous_3dÚ&SymNode.is_channels_last_contiguous_3d¸  r:  r#   c                ó$   • U R                  X5      $ r   )Ú_is_channels_last_strides_2dr1  s      r!   Úis_channels_last_strides_2dÚ#SymNode.is_channels_last_strides_2d»  ó   € Ø×0Ñ0°Ó@Ð@r#   c                ó$   • U R                  X5      $ r   )Ú_is_channels_last_strides_3dr1  s      r!   Úis_channels_last_strides_3dÚ#SymNode.is_channels_last_strides_3d¾  rC  r#   c                ó$   • U R                  X5      $ r   )Ú'_is_non_overlapping_and_dense_indicatorr1  s      r!   Ú&is_non_overlapping_and_dense_indicatorÚ.SymNode.is_non_overlapping_and_dense_indicatorÁ  s   € Ø×;Ñ;¸EÓKÐKr#   c                ó$   • U R                  U5      $ r   )rÖ   rF   s     r!   Úsym_orÚSymNode.sym_orÅ  r÷   r#   c                ó$   • U R                  U5      $ r   )rÒ   rF   s     r!   Úsym_andÚSymNode.sym_andÈ  r»   r#   c                ó$   • U R                  U5      $ r   )Ú_bitwise_andrF   s     r!   Úbitwise_andÚSymNode.bitwise_andÌ  rà   r#   c                ó$   • U R                  U5      $ r   )Ú_bitwise_orrF   s     r!   Ú
bitwise_orÚSymNode.bitwise_orÏ  s   € Ø×Ñ Ó&Ð&r#   c                ó$   • U R                  U5      $ r   )Ú_bitwise_xorrF   s     r!   Úbitwise_xorÚSymNode.bitwise_xorÒ  rà   r#   c                ó$   • U R                  U5      $ r   )rÚ   rF   s     r!   ÚtruedivÚSymNode.truedivÖ  rå   r#   c                ó$   • U R                  U5      $ r   )rã   rF   s     r!   ÚfloordivÚSymNode.floordivÙ  rà   r#   c                ó$   • U R                  U5      $ r   )rÊ   rF   s     r!   ÚpowÚSymNode.powÝ  s   € Ø�~‰~˜eÓ$Ð$r#   c                óV   • U R                  X5      R                  [        U S5      5      $ )Né   )rJ  rõ   Úto_noder1  s      r!   Úis_non_overlapping_and_denseÚ$SymNode.is_non_overlapping_and_denseà  s*   € Ø×:Ñ:¸5ÓJ×MÑMÜ�D˜!Óó
ð 	
r#   c                ó&   • U R                  SS5      $ ©NÚ r   )Ú	guard_intrL   s    r!   Úint_ÚSymNode.int_å  s   € Ø�~‰~˜b !Ó$Ð$r#   c           
     ó&  • SS K nSSKJnJn  U" 5       (       a3  [	        U U" [
        R                  [        S U 5       5      40 5      5      $ U Vs/ s H  oUR                  PM     nnUR                  " U6 n/ nS n	U H-  nUR                  c    O*UR                  UR                  5        M/     [        U5      n	U R                  R                  [
        R                  [        S U 5       5      45      u  p«[        XpR                  [         XšS9$ s  snf )Nr   ©Úget_proxy_modeÚhandle_sym_dispatchc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr   )Ú	wrap_node©Ú.0Úas     r!   Ú	<genexpr>Ú"SymNode.sym_sum.<locals>.<genexpr>ú  s   é € Ð6²¨Aœ9 QŸ<˜<²ùó   ‚c              3  ó8   #   • U  H  oR                   v •  M     g 7fr   ©r<   rx  s     r!   r{  r|    s   é € Ð!:²T°§)¦)²Tùr}  r  )rk   Ú"torch.fx.experimental.proxy_tensorrt  ru  ri  ÚtorchÚsym_sumÚtupler,   ÚAddr2   rœ   Úsumr-   Ú_create_fx_call_functionr   r   )r3   Úargsrk   rt  ru  rz  ÚexprsÚoutÚ
size_hintsÚout_hintr<   Ú_s               r!   r‚  ÚSymNode.sym_sumì  sò   € Û÷	
ñ
 ×ÑÜØÙ#Ü—M‘MÜÑ6±Ó6Ó6Ð8Øóóð ñ "&Ó&¢˜A—”¡ˆÐ&Ø�iŠi˜Ðˆàˆ
ØˆÛˆAØ�v‰v‰~ÙØ×Ñ˜aŸf™fÖ%ñ ô
 ˜:“ˆHà—^‘^×<Ñ<Ü�M‰MœEÑ!:±TÓ!:Ó:Ð<ó
‰
ˆô
 �sŸN™N¬C°ÑKÐKùò# 's   ÁDc                ó8   • U R                   R                  X5      $ r   )r-   Úevaluate_sym_node)r3   Úsize_obliviouss     r!   ÚevaluateÚSymNode.evaluate  s   € Ø�~‰~×/Ñ/°ÓEÐEr#   c                ó„   • U R                  5       n [        U5      $ ! [         a    [        R	                  SU5        e f = f)NzFailed to convert to int: %s)r‘  r   Ú	ExceptionÚlogÚwarning©r3   ÚfileÚlineÚrs       r!   ro  ÚSymNode.guard_int  s>   € ð �M‰M‹Oˆð	Ü�q“6ˆMøÜó 	Ü�K‰KÐ6¸Ô:Øð	úó   ’
 �"?c                ó„   • U R                  5       n [        U5      $ ! [         a    [        R	                  SU5        e f = f)NzFailed to convert to float: %s)r‘  r   r”  r•  r–  r—  s       r!   Úguard_floatÚSymNode.guard_float  s>   € ð �M‰M‹Oˆð	Ü˜“8ˆOøÜó 	Ü�K‰KÐ8¸!Ô<Øð	úrœ  c                ó„   • U R                  5       n [        U5      $ ! [         a    [        R	                  SU5        e f = f)NúFailed to convert to bool: %s©r‘  r   r”  r•  r–  r—  s       r!   Ú
guard_boolÚSymNode.guard_bool)  s>   € ð �M‰M‹Oˆð	Ü˜“7ˆNøÜó 	Ü�K‰KÐ7¸Ô;Øð	úrœ  c                ó&  • SSK Jn  U R                  5       (       aC  U" U R                  5      (       d,  U R                  R
                  (       d  U R                  X5      $ U R                  R                  U R                  U SU 3U R                  S9$ )Nr   rY   Ú:r  )	r+   rZ   rV   r,   r-   Ú+prefer_deferred_runtime_asserts_over_guardsr£  Úguard_or_defer_runtime_assertr<   )r3   r˜  r™  rZ   s       r!   Úexpect_trueÚSymNode.expect_true3  sw   € ÝOð �M‰M�O‰OÙ)¨$¯)©)×4Ñ4Ø—N‘N×N×Nð —?‘? 4Ó.Ð.ð
 �~‰~×;Ñ;Ø�I‰I˜$˜˜q  Ð'°·±ð <ð 
ð 	
r#   c                óp   • SSK Jn  U R                  5       (       d  [        S5      eU" [	        U 5      5      $ )Nr   )Ústatically_known_trueúExpected bool type)r+   r¬  r|   r8   r   )r3   r˜  r™  r¬  s       r!   r¬  ÚSymNode.statically_known_trueE  s+   € ÝOà�|‰|�~‰~Ü Ð!5Ó6Ð6Ù$¤W¨T£]Ó3Ð3r#   c                ó‚   • U R                  SS9n [        U5      $ ! [         a    [        R	                  SU5        e f = f)a  
Like guard_bool, but if we encounter unbacked symbols, if those symbols
are size-like, we will treat them as >= 2 for the purposes of the analysis.

This CHANGES the runtime semantics, but all size-oblivious sites have been
audited to ensure that the runtime semantics don't change in a material way.
Acceptable runtime semantic changes are, e.g., squeeze() no longer dropping
an unbacked one size, or a tensor reporting as non-contiguous even if it's
contiguous if it would have been reported contiguous due to being empty.
T)r�  r¡  r¢  r—  s       r!   Úguard_size_obliviousÚSymNode.guard_size_obliviousL  sC   € ð �M‰M¨ˆMÐ.ˆð	Ü˜“7ˆNøÜó 	Ü�K‰KÐ7¸Ô;Øð	ús   ‘
 œ">c                óp   • SSK Jn  U R                  5       (       d  [        S5      eU" [	        U 5      5      $ )Nr   )Úguard_or_falser­  )r+   r³  r|   r8   r   )r3   r˜  r™  r³  s       r!   r³  ÚSymNode.guard_or_false`  s+   € ÝHà�|‰|�~‰~Ü Ð!5Ó6Ð6Ùœg d›mÓ,Ð,r#   c                óp   • SSK Jn  U R                  5       (       d  [        S5      eU" [	        U 5      5      $ )Nr   )Úguard_or_truer­  )r+   r¶  r|   r8   r   )r3   r˜  r™  r¶  s       r!   r¶  ÚSymNode.guard_or_trueg  s+   € ÝGà�|‰|�~‰~Ü Ð!5Ó6Ð6ÙœW T›]Ó+Ð+r#   c                ó&   • U R                  SS5      $ rm  )r£  rL   s    r!   Úbool_ÚSymNode.bool_n  s   € Ø�‰˜r 1Ó%Ð%r#   c                ó   • g)NTr‘   rL   s    r!   Úis_symbolicÚSymNode.is_symbolicq  ó   € Ør#   c                ó   • g r   r‘   rL   s    r!   Ú
nested_intÚSymNode.nested_intt  r¾  r#   c                ó   • g)NFr‘   rL   s    r!   Úis_constantÚSymNode.is_constantw  s   € Ør#   )r6   r:   r&   r;   r<   r1   r-   )NNF)r2   z!Optional[Union[int, float, bool]])r-   r   Úreturnr   )rG   r   rÅ  r   )rÅ  r   r   )rÅ  zbuiltins.str)rÅ  r   )F)_Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r&   Ú__annotations__r@   rC   rH   rM   Úpropertyr,   r2   rV   rc   rg   rn   rs   rv   ry   r|   r€   rˆ   r‹   rŽ   r’   r•   r™   rŸ   r¢   r¦   r«   r°   r´   r¹   r¾   rÂ   rÆ   rÊ   rÎ   rÒ   rÖ   rÚ   rÞ   rã   rè   rí   r   rõ   rú   rþ   r  r  r
  r  r  r	   r  r  r!  r   r   r
   r4  r8  r=  rA  rF  rJ  rM  rP  rT  rX  r\  r_  rb  re  rj  rp  r‚  r‘  ro  rž  r£  r©  r¬  r°  r³  r¶  r¹  r¼  rÀ  rÃ  Ú__static_attributes__r‘   r#   r!   r   r   N   s  ‡ ñð "'Ð˜$Ó&ð ØØ!ðS4ð
 0õS4ôj
ô

ôXð ñ2ó ð2ð ñó ðò&ôò4òòò"ò$ò#ò
ò
ò
ò
òòòò
$ôôôö$ôô ô ô ô ô&ô+ô!ô ô*ô(ô)ô#ô#ôôôôôôôôô"ô!ôôôô$ô$ô1ô3ôDôDôAôAôLòò ò(ò'ò(ò)ô(ò%ò
ò
%ô#LôJFòòòò
ò$4òò(-ò,ò&òòõr#   r   c                  ó(   ^ • \ rS rSrU 4S jrSrU =r$ )Ú_DynamicScalari{  c                óN   >• U [         L a  [        S5      e[        TU ]  " U /UQ76 $ )Nz9_DynamicScalar is an abstract base class, use DynamicInt.)rÏ  Ú	TypeErrorÚsuperÚ__new__)Úclsr‡  Ú	__class__s     €r!   rÓ  Ú_DynamicScalar.__new__|  s+   ø€ Ø”.Ò ÜÐWÓXÐXÜ‰wŠ˜sÐ* TÒ*Ð*r#   r‘   )rÆ  rÇ  rÈ  rÉ  rÓ  rÍ  Ú__classcell__©rÕ  s   @r!   rÏ  rÏ  {  s   ø† ÷+ó +r#   rÏ  c                  ó>   ^ • \ rS rSrSrU 4S jrS rS rS rSr	U =r
$ )r   i‚  zú
User API for marking dynamic integers in `torch.compile`.
Intended to be compatible with both compile and eager mode.

Example usage::

    fn = torch.compile(f)
    x = DynamicInt(4)
    fn(x)  # compiles x as a dynamic integer input; returns f(4)
c                ó’   >• [        U[        5      (       d  [        S[        U5       35      e[        TU ]  U [        U5      5      nU$ )Nrƒ   )r/   r   r8   r7   rÒ  rÓ  )rÔ  ÚvalÚobjrÕ  s      €r!   rÓ  ÚDynamicInt.__new__Ž  s@   ø€ Ü˜#œs×#Ñ#Ü Ð#5´d¸3³i°[Ð!AÓBÐBÜ‰g‰o˜c¤3 s£8Ó,ˆØˆ
r#   c                ó"   • SU R                    S3$ )NzDynamicInt(r5   )ÚrealrL   s    r!   rŸ   ÚDynamicInt.__repr__”  s   € Ø˜TŸY™Y˜K qÐ)Ð)r#   c                ó2   • [        U R                  U-  5      $ r   ©r   rß  rF   s     r!   Ú__floordiv__ÚDynamicInt.__floordiv__—  s   € Ü˜$Ÿ)™) uÑ,Ó-Ð-r#   c                ó0   • [        XR                  -  5      $ r   râ  rF   s     r!   Ú__rfloordiv__ÚDynamicInt.__rfloordiv__š  s   € Ü˜%§9¡9Ñ,Ó-Ð-r#   r‘   )rÆ  rÇ  rÈ  rÉ  rÊ  rÓ  rŸ   rã  ræ  rÍ  r×  rØ  s   @r!   r   r   ‚  s!   ø† ñ	õò*ò.÷.ð .r#   r   r«   r¦   r¹   ÚandrT  r  rõ   r  r´   rã   r
  rþ   r  c                ó"   • U R                  5       $ r   )r  ©Úxs    r!   Ú<lambda>rì  ¬  s
   € ˜AŸL™LœNr#   r  rè   r  rÆ   rÂ   rú   r!  ÚorrX  r\  rÊ   rÎ   r°   rí   r¾   r	   r
   r   r   r   rÚ   rÞ   >	   r¦   r!  r«   r  r  r´   r  r   r	   c                ó   ^ • U 4S jnU$ )Nc                ó,   >• [        U ST 35      " 5       $ )NÚ_sym_)Úgetattr)r3   Únames    €r!   ÚfnÚ_get_sym_node_fn.<locals>.fnÔ  s   ø€ Ü�t˜u T F˜^Ô,Ó.Ð.r#   r‘   ©rò  ró  s   ` r!   Ú_get_sym_node_fnrö  Ó  s   ø€ õ/ð €Ir#   )ÚsqrtÚcosÚcoshÚsinÚsinhÚtanÚtanhÚasinÚacosÚatanÚlog2Úsym_rŒ  >   rí  rè  r
   r   >   r¹   rÂ   r¾   >   r°   r  Úsym_log2r  Úxor)rT  rX  r\  >   rÊ   r	   rÞ   rÚ   >   r  r  r´   rÎ   >   rõ   r
  rþ   r  r  rú   rí  rè  r   r  rj  c                ó   • SSK Jn  U" X5      $ )Nr   )ÚFloatTrueDiv)Útorch.utils._sympy.functionsr  )rz  Úbr  s      r!   Ú_sympy_float_truedivr	  "  ó   € Ý9á˜ÓÐr#   c                ó   • SSK Jn  U" X5      $ )Nr   )Ú
IntTrueDiv)r  r  )rz  r  r  s      r!   Ú_sympy_int_truedivr  (  s   € Ý7á�aÓÐr#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚFloorDiv)r  r  )rz  r  r  s      r!   Ú_sympy_floordivr  .  ó   € Ý5á�A‹>Ðr#   c                óv   • SSK JnJn  U R                  (       a  UR                  (       a  U" X5      $ U" X5      $ )Nr   ©ÚModÚ	PythonMod)r  r  r  Úis_nonnegative)rz  r  r  r  s       r!   Ú
_sympy_modr  4  s*   € ß;à××˜A×,×,Ù�1‹yÐá˜‹Ðr#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚPowByNatural)r  r  )rz  r  r  s      r!   Ú_sympy_pow_by_naturalr  =  r
  r#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚFloatPow)r  r  )rz  r  r  s      r!   Ú_sympy_float_powr  C  r  r#   c                ó,   • SS K nUR                  X5      $ rj   )rk   ÚAnd©rz  r  rk   s      r!   Ú
_sympy_andr!  I  s   € Ûà�9‰9�Q‹?Ðr#   c                ó,   • SS K nUR                  X5      $ rj   )rk   ÚOrr   s      r!   Ú	_sympy_orr$  O  ó   € Ûà�8‰8�A‹>Ðr#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚLShift)r  r'  )rz  r  r'  s      r!   Ú_sympy_lshiftr(  U  ó   € Ý3á�!‹<Ðr#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚRShift)r  r+  )rz  r  r+  s      r!   Ú_sympy_rshiftr,  [  r)  r#   c                ób  • [        U 5      S:X  a  U/$ SSKJnJn  U" U S   5      U" U5      :  a  X/-   $ U" U S   5      U" U5      :”  a  U/U -   $ S[        U 5      S-
  pTXE::  a:  XE-   S-  nUR	                  X   U5      nUS:X  a  gUS:  a  US-   nOUS-
  nXE::  a  M:  U R                  XA5        U $ )zg
If new_arg is found in ordered_args None is returned, else the new
ordered_args with new_arg inserted
r   )Ú_args_sortkeyÚBasicéÿÿÿÿrh  é   N)ÚlenÚsympy.core.basicr.  r/  ÚcompareÚinsert)Úordered_argsÚnew_argÚsort_keyr/  ÚlowÚhighÚmidÚcompare_results           r!   Ú_binary_search_insert_argr=  a  sÜ   € ô
 ˆ<Ó˜AÓØˆyÐçAñ �˜RÑ Ó!¡H¨WÓ$5Ó5Ø˜iÑ'Ð'ñ �˜Q‘Ó ¡8¨GÓ#4Ó4Øˆy˜<Ñ'Ð'à”3�|Ó$ qÑ(ˆà
‹+Ø‰z˜aÑˆØŸ™ |Ñ'8¸'ÓBˆØ˜QÓØØ˜aÓØ˜‘'‰Cà˜‘7ˆDð �+ð ×Ñ˜Ô%ØÐr#   c                óÌ  ^
• SSK m
SSKJn  U
4S jnSSKJn  X&" U 5      -  nX6" U5      -  nU(       Ga  U(       Ga  U" U R
                  S   5      U" UR
                  S   5      :  a  U" U R
                  UR
                  -   5      $ U" U R
                  S   5      U" UR
                  S   5      :”  a  U" UR
                  U R
                  -   5      $ [        U R
                  5      S::  a\  [        UR
                  5      S::  aC  [        U R
                  5      nUR
                   H  n[        Xx5      nUb  M    O   Ub  U" U5      $ U(       a;  UR                  (       a*  [        [        U R
                  5      U5      nUb  U" U5      $ U(       a;  U R                  (       a*  [        [        UR
                  5      U 5      nUb  U" U5      $ T
R                  X5      n	U" U	5      U	4$ )aÓ  
Custom optimization for Add used to optimize incremental binary summations of certain properties. The idea
is when we know the expression is a summation of unique symbols all we need to know is the correct order of symbols,
and no other optimizations are needed. We pass evaluate=false, with the correct order of args and save the following.
1. Avoid running other optimizations when the Add is constructed.
2. Manually figure out the order of the args for the new expression in log(n) comparisons instead of nLog(n)
(comparing terms is expensive and shows in the profiles).
The function returns a tuple of (1) a boolean that indicates whether the output is a summation of unique symbols,
(2) the result sympy expression.
r   N)r.  c                ó\   >• U c  [        S5      eTR                  R                  U SS9nSU4$ )Nzordered_args is NoneT)Úis_commutative)r8   r„  Ú
_from_args)r6  Úresultrk   s     €r!   Úmake_optimizedÚ&_optimized_add.<locals>.make_optimized“  s:   ø€ ØÑÜ Ð!7Ó8Ð8ð
 —‘×%Ñ% lÀ4Ð%ÐHˆØ�fˆ~Ðr#   )Ú_is_symbols_binary_summationr0  r1  )rk   r3  r.  r  rE  Ú_argsr2  Úlistr=  Ú	is_symbolr„  )ÚlhsÚrhsÚlhs_is_optimized_summationÚrhs_is_optimized_summationÚsortkeyrC  rE  Únew_argsrz  rB  rk   s             @r!   Ú_optimized_addrO  ƒ  s’  ø€ ó Ý9õõ JàÐ">¸sÓ"CÑCÐØÐ">¸sÓ"CÑCÐç!×&@á�3—9‘9˜R‘=Ó!¡G¨C¯I©I°a©LÓ$9Ó9Ù! #§)¡)¨c¯i©iÑ"7Ó8Ð8á�3—9‘9˜Q‘<Ó ¡7¨3¯9©9°R©=Ó#9Ó9Ù! #§)¡)¨c¯i©iÑ"7Ó8Ð8ô ˆs�y‰y‹>˜QÓ¤3 s§y¡y£>°QÓ#6Ü˜CŸI™I“ˆHØ—Y”Y�Ü4°XÓA�ØÓ#Ùñ ð
 Ñ#Ù% hÓ/Ð/ö " c§m§mÜ,¬T°#·)±)«_¸cÓBˆàÑÙ! (Ó+Ð+ö " c§m§mÜ,¬T°#·)±)«_¸cÓBˆàÑÙ! (Ó+Ð+à�Y‰Y�sÓ €FÙ(¨Ó0°&Ð9Ð9r#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚBitwiseFn_bitwise_and)r  rQ  )rz  r  rQ  s      r!   rS  rS  Ç  ó   € ÝBá  Ó&Ð&r#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚBitwiseFn_bitwise_or)r  rT  )rz  r  rT  s      r!   rW  rW  Í  s   € ÝAá Ó%Ð%r#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚBitwiseFn_bitwise_xor)r  rV  )rz  r  rV  s      r!   r[  r[  Ó  rR  r#   c                óâ  • SS K n[        XR                  5      (       aq  U R                  n[	        U5      S:X  aV  [        US   UR
                  5      (       a8  US   R                  (       a$  UR                  US   5      nUS   U:X  a  XCS   -  $ [        XR
                  5      (       a  XR                  U 5      :X  d  [        XR                  5      (       a  UR                  U 5      $ U" U 5      $ )Nr   r1  rh  )rk   r/   ÚMulr‡  r2  rl   r  r…   )rz  ró  rk   ÚaaÚcoefs        r!   Ú_floor_ceil_helperr[  í  s¶   € Ûä�!—Y‘Y×ÑØ�V‰VˆÜˆr‹7�a‹<œJ r¨!¡u¨e¯k©k×:Ñ:¸rÀ!¹u×?O×?OØ—=‘=  A¡Ó'ˆDØ�!‰u˜‹}Ø ™e‘|Ð#ä�1—k‘k×"Ñ"Ø—‘˜qÓ!Ó!Ü�aŸ™×'Ñ'à�}‰}˜QÓÐÙˆa‹5€Lr#   c                ó   • SSK Jn  U" U 5      $ )Nr   )Ú
FloorToInt)r  r]  )rz  r]  s     r!   Ú_sympy_floorr^  ÿ  ó   € Ý7á�a‹=Ðr#   c                ó   • SSK Jn  U" U 5      $ )Nr   )Ú
TruncToInt)r  ra  )rz  ra  s     r!   Ú_sympy_truncrb    r_  r#   c                ó   • SSK Jn  U" U 5      $ )Nr   )Ú	CeilToInt)r  rd  )rz  rd  s     r!   Ú_sympy_ceilre    s   € Ý6á�Q‹<Ðr#   c                ó,   • SS K nUR                  X5      $ rj   )rk   ÚEqr   s      r!   Ú	_sympy_eqrh    r%  r#   c                ó,   • SS K nUR                  X5      $ rj   )rk   ÚNer   s      r!   Ú	_sympy_nerk    r%  r#   c                ó,   • SS K nUR                  X5      $ rj   )rk   ÚGtr   s      r!   Ú	_sympy_gtrn    r%  r#   c                ó,   • SS K nUR                  X5      $ rj   )rk   ÚLtr   s      r!   Ú	_sympy_ltrq  %  r%  r#   c                ó,   • SS K nUR                  X5      $ rj   )rk   ÚLer   s      r!   Ú	_sympy_lert  +  r%  r#   c                ó,   • SS K nUR                  X5      $ rj   )rk   ÚGer   s      r!   Ú	_sympy_gerw  1  r%  r#   c                ó   • SSK Jn  U" X5      $ )Nr   )ÚMin)r  ry  )rz  r  ry  s      r!   Ú
_sympy_minrz  7  ó   € Ý0áˆq‹9Ðr#   c                ó   • SSK Jn  U" X5      $ )Nr   ©ÚMax)r  r~  )rz  r  r~  s      r!   Ú
_sympy_maxr  =  r{  r#   c                ó4   • SS K nUR                  X4US45      $ )Nr   T)rk   Ú	Piecewise)rz  r    Úfrk   s       r!   Ú
_sympy_iterƒ  C  s   € Ûà�?‰?˜A˜6 A t 9Ó-Ð-r#   c                ó   ^ • U 4S jnU$ )Nc                ór   >• SS K n[        UR                  R                  R                  ST 35      " U 5      $ )Nr   ÚOpaqueUnaryFn_)r  rñ  ÚutilsÚ_sympyÚ	functions)rz  r�  rò  s     €r!   ró  Ú_get_sym_math_fn.<locals>.fnM  s/   ø€ Û+ä�u—{‘{×)Ñ)×3Ñ3°~ÀdÀVÐ5LÔMÈaÓPÐPr#   r‘   rõ  s   ` r!   Ú_get_sym_math_fnr‹  L  s   ø€ õQð
 €Ir#   Ú_sympy_c                ó,   • SS K nUR                  U 5      $ rj   )rk   ÚAbs)rz  rk   s     r!   Ú
_sympy_absr�  ^  s   € Ûà�9‰9�Q‹<Ðr#   c                ó8   • SSK JnJn  Uc  U" U 5      $ U" X5      $ )Nr   )ÚRoundDecimalÚ
RoundToInt)r  r‘  r’  )Únumberr¯   r‘  r’  s       r!   Ú_sympy_roundr”  d  s    € ßEà�Ù˜&Ó!Ð!á˜FÓ,Ð,r#   c                ó   • SSK Jn  U" U 5      $ ©Nr   )ÚToFloat)r  r—  )rz  r—  s     r!   Ú_sympy_sym_floatr˜  m  s   € Ý4ñ �1‹:Ðr#   c                ód   • SS K nSSKJn  UR                  U" UR	                  U 5      5      U 5      $ r–  )rk   r  r—  rg  r  )rz  rk   r—  s      r!   Ú_sympy_is_integerrš  u  s&   € Ûå4à�8‰8‘G˜EŸK™K¨›NÓ+¨QÓ/Ð/r#   )r°   r  c                ó^   • [        U 5      n[        X[        [        US-
  SS5      5      5      $ )Nrh  r0  )r2  Úsympy_is_contiguous_genericrG  Úrange)r2  r3  Údims      r!   Úsympy_is_contiguousrŸ  œ  s*   € Ü
ˆe‹*€CÜ& u´t¼EÀ#ÈÁ'È2ÈrÓ<RÓ7SÓTÐTr#   c                ó´  • SS K n[        U 5      n[        U5      U:w  a  UR                  $ UR                  nUR                  R
                  nU HI  nXSR                  X   UR                  R
                  5      UR                  X   U5      -  -  nX`U   -  nMK     [        U5       H-  nXSR                  X   UR                  R                  5      -  nM/     U$ rj   )	rk   r2  rr   rq   ÚSÚOnerg  r�  ÚZero)r2  r3  Ú	dim_orderrk   rž  r4  ÚzÚds           r!   rœ  rœ  ¡  s²   € Ûä
ˆe‹*€Cä
ˆ9ƒ~˜ÓØ�{‰{Ðà—J‘J€MØ�‰�‰€AãˆØŸ™ %¡(¨E¯G©G¯K©KÓ8¸5¿8¹8ÀGÁJÐPQÓ;RÑRÑRˆØ	�1‰X‰Šñ ô �3ŽZˆØŸ™ %¡(¨E¯G©G¯L©LÓ9Ñ9Šñ àÐr#   c                ó   • [        X/ SQ5      $ ©N)rh  é   r1  r   ©rœ  ©r2  r3  s     r!   Ú$sympy_is_channels_last_contiguous_2dr¬  ¹  s   € Ü& u²|ÓDÐDr#   c                ó   • [        X/ SQ5      $ ©N)rh  é   r©  r1  r   rª  r«  s     r!   Ú$sympy_is_channels_last_contiguous_3dr°  ½  s   € Ü& u²ÓGÐGr#   c                ó~  • SS K nSSKJn  [        U 5      nU[        U5      :w  a  UR                  $ UR
                  R                  nUR                  nXsR                  US   S5      -  nU HM  nXsR                  X   S5      X   U:¬  -  -  nUS:X  a  XsR                  XaS   5      -  nX   U" X   S5      -  nMO     U$ )Nr   r}  rh  )	rk   r  r~  r2  rr   r¡  r£  rq   rj  )	r2  r3  r¤  rk   r~  rž  Úmrš  r¦  s	            r!   Ú&sympy_is_channels_last_strides_genericr³  Á  s¼   € Ûå0ä
ˆe‹*€Cà
Œc�)‹nÓØ�{‰{Ðà�‰�‰€AØ�
‰
€Að �‰�'˜!‘*˜aÓ	 Ñ €AãˆØ	�X‰X�e‘h Ó" g¡j°A¡oÑ6Ñ6ˆð �‹6Ø—‘˜! Q™ZÓ(Ñ(ˆAð ‰J™˜U™X qÓ)Ñ)Šñ' ð* €Hr#   c                ó   • [        X/ SQ5      $ r¨  ©r³  r«  s     r!   Ú!sympy_is_channels_last_strides_2dr¶  é  s   € Ü1°%Â,ÓOÐOr#   c                ó   • [        X/ SQ5      $ r®  rµ  r«  s     r!   Ú!sympy_is_channels_last_strides_3dr¸  í  s   € Ü1°%Â/ÓRÐRr#   c                ó"   • SSK Jn  U" / U QUQ76 $ )Nr   )Ú!IsNonOverlappingAndDenseIndicator)r  rº  )r2  r3  rº  s      r!   Ú-_sympy_is_non_overlapping_and_dense_indicatorr»  ñ  s   € ÝNá,Ð>¨eÐ>°gÒ>Ð>r#   )r4  r8  r=  rA  rF  rJ  c                ó"  • [        U[        5      (       a  UR                  $ [        U5      [        L a  U R                  U5      $ [        U5      [        L a  U R                  U5      $ [        U5      [        L a  U R                  U5      $ [        $ r   )r/   r0   r   r7   r   rŽ   r   rˆ   r   r‹   ÚNotImplemented)r3   r‡   s     r!   ri  ri    sq   € Ü�#”x× Ñ Ø�x‰xˆÜ	ˆc‹”dÒ	Ø�~‰~˜cÓ"Ð"Ü	ˆc‹”cÒ	Ø�}‰}˜SÓ!Ð!Ü	ˆc‹”eÒ	Ø�‰˜sÓ#Ð#ô Ðr#   c                ó:  • [        U [        5      (       a  U R                  b  U R                  $ U R                  5       (       a  [	        U 5      $ U R                  5       (       a  [        U 5      $ U R                  5       (       a  [        U 5      $ [        SU  35      e)Nzunrecognized return type )
r/   r   r;   rv   r   ry   r   r|   r   r8   rê  s    r!   rw  rw    st   € ä�!”W×Ñ !§*¡*Ñ"8Ø�z‰zÐØ‡x�x‡z�zÜ�a‹yÐØ	
�‰�‰Ü˜‹{ÐØ	
�‰�‰Ü�q‹zÐäÐ8¸¸Ð<Ó=Ð=r#   c                ó   • [         U    $ r   )ÚMETHOD_TO_OPERATOR)Úmethods    r!   r   r      s   € Ü˜fÑ%Ð%r#   c                ó†  ^ ^• [        S5      " T5      mT [        ;   a  T  S3nOT nSS jnU 4S jnUUU 4S j5       nUUU 4S j5       nT [        ;   a  [        [        SU 3U5        g T S:X  a  UU 4S jn[        [        SU 3U5        g T S	:X  a  SUU 4S
 jjn[        [        SU 3U5        g [        [        SU 3U5        g )Né   rŒ  c                 óT  • SS K n U R                  R                  U R                  R                  U R                  R
                  R                  U /nSS Kn U Vs1 s H  n[        R                  " U5      iM     snU R                  R                  R                  5       -  S1-  $ s  snf )Nr   z<string>)r�  Ú_dynamoÚ
eval_framer‡  ÚfxÚexperimentalr   Útorch._dynamo.guardsÚinspectÚgetfileÚguardsÚuninteresting_files)r�  Úmodsr²  s      r!   rÍ  Ú-_make_node_magic.<locals>.uninteresting_files,  s�   € Ûð �M‰M×$Ñ$Ø�M‰M×ÑØ�H‰H×!Ñ!×*Ñ*Øð	
ˆó 	$ñ *.Ó.ª AŒW�_Š_˜QÖ©Ñ.Ø�m‰m×"Ñ"×6Ñ6Ó8ñ9àˆlñð	
ùÚ.s   Á B%c                óN   >^ • [         R                  " T 5      SU U4S jj5       nU$ )Nc                óÎ   >^^^• Uc	  T" U 5      mOT" X5      m[         R                  R                  R                  (       a#  Ub  X/mOU /mSU4S jjm[	        SUUUU4S jS9  T$ )Nc                ó"  >• SS K nU R                  b  g [        U 5      [        T5      :X  a  g [        U R                  UR
                  UR                  45      (       a  g U R                  UR                  UR                  4;   a  g [        U 5      $ rj   )	rk   r;   Úidr/   r,   r…   rl   rq   rr   )r   rk   rB  s     €r!   Úget_idÚM_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.get_idJ  so   ø€ ã à×(Ñ(Ñ4Ø#Ü˜H›¬¨F«Ó3Ø#Ü# H§M¡M°E·M±MÀ5Ç;Á;Ð3O×PÑPØ#Ø!Ÿ™¨5¯:©:°u·{±{Ð*CÓCØ#Ü˜h›<Ð'r#   Úexpression_createdc            
     ó  >• T[        T5      [        T5      T V s/ s H  n [        U 5      PM     sn T Vs/ s H  nT" U5      c  M  T" U5      PM     sn[        R                  " S5      [        R                  " S5      S.$ s  sn f s  snf )Nr©  )rÁ  rB  Ú	result_idÚ	argumentsÚargument_idsÚ
user_stackÚstack)r•   rÓ  Ú
structuredÚget_user_stackÚget_framework_stack)rz  ÚirÙ  rÔ  rÁ  rB  s     €€€€r!   rì  ÚO_make_node_magic.<locals>.capture_provenance.<locals>.wrapper.<locals>.<lambda>Z  s{   ø€ Ø"(Ü"% f£+Ü%'¨£ZÙ6?Ó%@²i°¤c¨!¦f±iÑ%@á/8ó)Ú/8¨!¹FÀ1»I›I™F 1žI©yñ)ô '1×&?Ò&?ÀÓ&BÜ!+×!?Ò!?ÀÓ!Bò
)ùò &Aùò)s   ›B
¶BÁB)Úmetadata_fn)rÅ  zOptional[int])r�  Ú_loggingÚ	_internalÚGET_DTRACE_STRUCTUREDr   )r3   rG   rÙ  rÔ  rB  ró  rÁ  s     @@@€€r!   ÚwrapperÚ=_make_node_magic.<locals>.capture_provenance.<locals>.wrapper>  s_   û€ à‰}Ù˜D›‘á˜D›�Ü�~‰~×'Ñ'×=×=ØÑ$Ø!% ‘Ià!% �I÷(ô "Ø(÷
!òð ˆMr#   r   )Ú	functoolsÚwraps)ró  ræ  rÁ  s   ` €r!   Úcapture_provenanceÚ,_make_node_magic.<locals>.capture_provenance=  s&   ù€ Ü	�Š˜Ó	÷(	ó 
ð(	ðT ˆr#   c           
     óú  >• SSK JnJn  [        T5      n[        nU R
                  b*  UR
                  b  U" U R
                  UR
                  5      nU" 5       (       a'  [        X" U[        U 5      [        U5      40 5      5      $ [        U[        5      (       d  [        S[        U5       35      eSn TS:X  aÚ  SSKJnJn  U R                  n	U R                   R"                  (       d)  U	R%                  U R                   5      R&                  S:¼  ac  UR                   R"                  (       d)  U	R%                  UR                   5      R&                  S:¼  a  U" U R                   UR                   5      n
GOËU" U R                   UR                   5      n
GO¬TS:X  a:  [)        U R                   UR                   U R*                  UR*                  5      u  pjGOlTS;   GaG  SS KnSS	KJnJn  U R                   R4                  =(       a    U" U R                   UR6                  5      nUR                   R4                  =(       a    U" UR                   UR6                  5      nU(       a  UR                   R8                  (       d"  U(       a€  U R                   R8                  (       ae  UR:                  UR<                  UR>                  UR@                  URB                  URD                  S.T   nU" U R                   UR                   SS
9n
O<T" U R                   UR                   5      n
OT" U R                   UR                   5      n
 [L        RO                  STU R                   UR                   U
5        T[P        ;   a  [R        nOJT[T        ;   a  [V        nO9U RX                  [R        L d  URX                  [R        L a  [R        nOU RX                  nUb)  U[        La   Ub  [        U[Z        5      (       d  U" U5      nU R                  R]                  X@R^                  UR^                  45      u  nn[        U
U R                  UUUUS9nU$ ! [F         a.    [H        RK                  STU R                   UR                   5        e f = f)Nr   rs  zExpected SymNode, got FrÆ   r  r¹   )rõ   rú   r
  rþ   r  r  )Úsymbol_is_typeÚSymT)r‘  úfailed to eval %s(%s, %s)z%s %s %s -> %s)r<   r=   )0r€  rt  ru  r   r   r2   ri  rw  r/   r   r8   r7   r  r  r  r-   r,   r  Úbound_sympyÚlowerrO  r&   rk   Útorch.utils._sympy.symbolrí  rî  rH  ÚUNBACKED_INTrf   rg  rj  rv  rm  rs  rp  r”  r•  r–  Úsym_node_logÚdebugÚalways_float_magic_methodsr   Úalways_bool_magic_methodsr   r1   r0   r†  r<   )r3   rG   rt  ru  Úopr‹  r=   r  r  r-   r‰  rk   rí  rî  Úlhs_is_unbackedÚrhs_is_unbackedÚ	rel_classr1   r<   rŒ  rB  ÚfuncrÁ  s                        €€r!   Úbinary_magic_implÚ+_make_node_magic.<locals>.binary_magic_implk  s‰  ø€ ÷	
ô
   Ó'ˆä#ˆØ�9‰9Ñ  U§Z¡ZÑ%;Ù˜$Ÿ)™) U§Z¡ZÓ0ˆHá×ÑÜØÐ)¨"¬y¸«Ä	È%Ó@PÐ.QÐSUÓVóð ô ˜%¤×)Ñ)Ü Ð#9¼$¸u»+¸Ð!GÓHÐHØ#Ðð=	Ø˜‹ßGð !ŸN™N�	à—I‘I×,×,Ø ×,Ñ,¨T¯Y©YÓ7×=Ñ=ÀÓBà—J‘J×-×-Ø ×,Ñ,¨U¯Z©ZÓ8×>Ñ>À!ÓCá˜dŸi™i¨¯©Ó4’Cá# D§I¡I¨u¯z©zÓ:’CØ˜5“ä-;Ø—I‘IØ—J‘JØ×-Ñ-Ø×.Ñ.ó	.Ñ*Ð$¡cð Ð?Ô?ÛçJð #'§)¡)×"5Ñ"5÷ #¹.Ø—I‘I˜t×0Ñ0ó;�ð #(§*¡*×"6Ñ"6÷ #¹>Ø—J‘J × 1Ñ 1ó<�ö $¨¯
©
×(<×(<Þ#¨¯	©	×(;×(;ð $Ÿh™hØ#Ÿh™hØ#Ÿh™hØ#Ÿh™hØ#Ÿh™hØ#Ÿh™hñ!ð ñ!�Iñ $ D§I¡I¨u¯z©zÀEÑJ‘Cá˜tŸy™y¨%¯*©*Ó5‘Cñ ˜4Ÿ9™9 e§j¡jÓ1‘ô 	×ÑÐ+¨V°T·Y±YÀÇ
Á
ÈCÔPð Ô/Ó/Ü‰FØÔ0Ó0Ü‰FØ�[‰[œEÒ! U§\¡\´UÒ%:Ü‰Fà—[‘[ˆFð ÑØ¤Ò(ØÑ$Ü˜x¬×2Ñ2á˜hÓ'ˆHð —^‘^×<Ñ<Ø—‘˜uŸ}™}Ð-ó
‰
ˆ�ô ØØ�N‰NØØØØ 3ñ
ˆð ˆøôW ó 	Ü�K‰KÐ3°V¸T¿Y¹YÈÏ
É
ÔSØð	ús,   Â4B?Q Å5Q Æ>Q ÇD/Q ÌQ Ì"Q Ñ8Q:c           	     ó°  >• SSK JnJn  [        T5      nU" 5       (       a  [	        X" U[        U 5      40 5      5      $ U R                  nTS:X  d  TS:X  a  U R                  R                  U5      n T
" U5      n[        R                  ST
XE5        [        nU R                  b  U" U R                  5      nT[         ;   a  ["        nO.T[$        ;   a  [&        nOT[(        ;   a  [*        nOU R,                  nU R                  R/                  X0R0                  45      u  p‰[3        XPR                  XvUS9$ ! [         a    [        R                  STU5        e f = f)Nr   rs  r  Úceilingzfailed to eval %s(%s)z%s %s -> %sr  )r€  rt  ru  r   ri  rw  r,   r-   Ú_simplify_floor_divr”  r•  r–  rô  rõ  r   r2   Úalways_int_magic_methodsr   r÷  r   rö  r   r1   r†  r<   r   )r3   rt  ru  rø  r,   r‰  r‹  r1   r<   rŒ  rü  rÁ  s             €€r!   Úunary_magic_implÚ*_make_node_magic.<locals>.unary_magic_implç  s,  ø€ ÷	
ô
   Ó'ˆÙ×ÑÜ˜4Ð!4°R¼)ÀD»/Ð9KÈRÓ!PÓQÐQà�y‰yˆØ�WÓ ¨)Ó 3Ø—>‘>×5Ñ5°dÓ;ˆDð	Ù�t“*ˆCô 	×Ñ˜=¨$°Ô:Ü#ˆØ�9‰9Ñ Ù˜$Ÿ)™)“}ˆHàÔ-Ó-Ü‰FØÔ0Ó0Ü‰FØÔ1Ó1Ü‰Fà—[‘[ˆFà—^‘^×<Ñ<¸RÇ,Á,ÀÓQ‰
ˆÜ�sŸN™N¨FÀgÑNÐNøô% ó 	Ü�K‰KÐ/°¸Ô>Øð	ús   Á2D2 Ä2#Er
   c                óŒ  >• SSK JnJn  U R                  (       a  UR                  OUR                  nU" 5       (       a6  [	        U U" [
        [        U 5      [        U5      [        U5      40 5      5      $  T	" U R                  UR                  UR                  5      nU R                  R                  [
        U R                  UR                  UR                  45      u  px[        X`R                  UR                  XWS9$ ! [         a9    [        R                  ST
U R                  UR                  UR                  5        e f = f)Nr   rs  zfailed to eval %s(%s, %s, %s)r  )r€  rt  ru  r2   ri  r
   rw  r,   r”  r•  r–  r-   r†  r<   r   r1   )Ú	pred_nodeÚ	then_nodeÚ	else_nodert  ru  r‹  r‰  r<   rŒ  rü  rÁ  s            €€r!   Úsym_ite_implÚ&_make_node_magic.<locals>.sym_ite_impl  s  ø€ ÷ð
 *3¯¯�y—~’~¸Y¿^¹^ˆHÙ×ÑÜØÙ'Üä% iÓ0Ü% iÓ0Ü% iÓ0ðð
 óóð ð
Ù˜9Ÿ>™>¨9¯>©>¸9¿>¹>ÓJ�ð #×,Ñ,×EÑEÜ˜)×+Ñ+¨Y×->Ñ->À	×@QÑ@QÐRó‰JˆGô Ø×(Ñ(¨)×*:Ñ*:¸Hñð øô ó Ü—‘Ø3ØØ—N‘NØ—N‘NØ—N‘Nôð ðús   Á6(D  Ä AEr°   c           	     ó(  >• SSK JnJn  [        R                  nU" 5       (       a  [        X" U[        U 5      U40 5      5      $ U R                  n T" XQ5      nUc  [        nOU R                  nS nU R                  b  U" U R                  U5      nU R                  /n	Ub  U	R                  U5        U R                   R#                  U[%        U	5      5      u  p«['        X`R                   XxU
S9$ ! [         a    [        R                  STXQ5        e f = f)Nr   rs  z!failed to eval %s(%s, ndigits=%s)r  )r€  rt  ru  Úbuiltinsr°   ri  rw  r,   r”  r•  r–  r   r1   r2   r<   rœ   r-   r†  rƒ  r   )r3   r¯   rt  ru  rø  r,   r‰  r1   r‹  r‡  r<   rŒ  rü  rÁ  s               €€r!   Ú
round_implÚ$_make_node_magic.<locals>.round_impl;  s  ø€ ÷ô
 —‘ˆBÙ×ÑÜØÐ-¨b´9¸T³?ÀGÐ2LÈbÓQóð ð —9‘9ˆDðÙ˜4Ó)�ð
 ‰Ü‘àŸ™�àˆHØ�y‰yÑ$Ù˜dŸi™i¨Ó1�ð —L‘L�>ˆDØÑ"Ø—‘˜GÔ$ØŸ™×@Ñ@ÀÄUÈ4Ã[ÓQ‰JˆGÜ˜3§¡°È'ÑRÐRøô1 ó Ü—‘Ð?ÀÈÔWØðús   ÁC. Ã.#D)rÅ  zset[str]r   )r   Ú2magic_methods_on_operator_with_trailing_underscoreÚunary_methodsÚsetattrr   )	rÁ  rü  Úmethod_attrrÍ  rê  rý  r  r	  r  s	   ``       r!   Ú_make_node_magicr  $  sâ   ù€ Ü�SŒ>˜$Ó€DàÔCÓCØ˜ �l‰àˆô
õ",ð\ õyó ðyðv õ"Oó ð"OðH ”ÓÜ”˜1˜[˜MÐ*Ð,<Õ=Ø	�9Ó	ö&	ôP 	”˜1˜[˜MÐ*¨LÕ9Ø	�7Ó	÷'	Sð '	SôR 	”˜1˜[˜MÐ*¨JÕ7ä”˜1˜[˜MÐ*Ð,=Õ>r#   c                óÞ   ^ ^• UU 4S jn[        [        ST  3U5        UU 4S jn[        [        R                  [
           T 5      (       d#  [        [        R                  [
           T U5        g g )Nc                óN  >• SSK JnJn  [        [        R
                  [           T5      nU" 5       (       aJ  [        U U" UU Vs/ s H  n[        U5      PM     snU Vs/ s H  n[        U5      PM     sn40 5      5      $ U Vs/ s H  ofR                  PM     nnU Vs/ s H  ofR                  PM     nn T" Xx5      n	/ n
S nU H-  nUR                  c    O\U
R                  UR                  5        M/     / nU H-  nUR                  c    O'UR                  UR                  5        M/     U" X¬5      nTR                  S5      (       a  [         nO["        n[%        X�R&                  XÛ5      $ s  snf s  snf s  snf s  snf ! [         a    [        R                  STXx5        e f = f)Nr   rs  rï  Ú
_indicator)r€  rt  ru  rñ  ÚsysÚmodulesrÆ  ri  rw  r,   r”  r•  r–  r2   rœ   Úendswithr   r   r   r-   )r3   r2  r3  rt  ru  rø  ra   Ú
size_exprsÚstride_exprsr‰  rŠ  r‹  Ústride_hintsr1   rü  rÁ  s                 €€r!   Úsizes_strides_implÚ4_make_node_sizes_strides.<locals>.sizes_strides_impll  s‚  ø€ ÷	
ô
 ”S—[‘[¤Ñ*¨FÓ3ˆÙ×ÑÜØÙ#ØÙ,1Ó2ªE q”i –l©EÑ2É7Ó4SÊ7Àa´Y¸q¶\É7Ñ4SÐTØóóð ñ ',Ó,¢e —f”f¡eˆ
Ð,Ù(/Ó0ª 1Ÿœ©ˆÐ0ð	Ù�zÓ0ˆCð ˆ
ØˆÛˆAØ�v‰v‰~ÙØ×Ñ˜aŸf™fÖ%ñ ð
 ˆLÛ�Ø—6‘6‘>ÙØ×#Ñ# A§F¡FÖ+ñ ñ
 ˜jÓ7�ð �?‰?˜<×(Ñ(Ü‰FäˆFÜ�sŸN™N¨FÓ=Ð=ùòE 3ùÒ4Sùò -ùÚ0øô ó 	Ü�K‰KÐ3°V¸ZÔVØð	ús$   ÁE-ÁE2ÂE7Â E<Â8F Æ#F$rŒ  c                óD  >• SS K nSSKJn  [        R                  " X5       HŠ  n[        U[        5      (       d  M  [        [        UR                  T5      " U  Vs/ s H  n[        UR                  U5      PM     snU Vs/ s H  n[        UR                  U5      PM     sn5      5      s  $    TS:X  a  U" X5      $ [        T" U  Vs/ s H  oBR                  U5      PM     snU Vs/ s H  oBR                  U5      PM     sn5      5      $ s  snf s  snf s  snf s  snf )Nr   )Ú!eval_is_non_overlapping_and_denserJ  )rk   r+   r   Ú	itertoolsÚchainr/   r   rw  rñ  r   ri  r   Úsympify)r2  r3  rk   r   rz  r  rü  rÁ  s         €€r!   Úsizes_strides_userÚ4_make_node_sizes_strides.<locals>.sizes_strides_user¡  sö   ø€ Ûõ	
ô —’ Ö0ˆAÜ˜!œV×$Ó$Ü Ü˜AŸF™F FÔ+Ù5:Ó;²U°œ §¡¨Ö+±UÑ;Ù5<Ó=²W°œ §¡¨Ö+±WÑ=óóò ñ 1ð Ð=Ó=Ù4°UÓDÐDô ÙÙ/4Ó5ªu¨!—]‘] 1Ö%©uÑ5Ù/6Ó7ªw¨!—]‘] 1Ö%©wÑ7óóð ùò <ùÚ=ùò 6ùÚ7s   Á DÂ DÃ	DÃ)D)r  r   Úhasattrr  r  rÆ  )rÁ  rü  r  r$  s   ``  r!   Ú_make_node_sizes_stridesr'  i  sV   ù€ ö.>ô` ŒG�q˜˜�\Ð#5Ô6ö
ô6 ”3—;‘;œxÑ(¨&×1Ñ1Ü”—‘œHÑ% vÐ/AÕBð 2r#   c                ó,  ^ ^
^^^^• T [         ;   a  ST  3mOT mSS jm
S mT [        ;   a  S mOS mU 4S jmU
UU UU4S jnU
UU UUU4S jnU
UU UUU4S	 jnS
 nT [        ;   a  U" UST  S3U5        g T [        ;   a   [	        UT 5      nU" UT [        X&5      5        g T S:X  a  U
U4S jnU" UST  S3U5        g T S:X  a  SU
UU 4S jjnU" UST  S3U5        g T n	T [        ;   a	  [        T    n	U" USU	 S3U5        T [        ;   a  U" USU	 S3U5        g g )Nr  c                ó   • [        U [        [        [        45      (       a  U $ [        U [        5      (       a  U R
                  R                  SS5      $ [        U [        5      (       a  U R
                  R                  SS5      $ [        S5      e)Nrn  r   z*expect to be called with constant SymBools)
r/   r   r   r   r   r   ro  r   r£  r8   rê  s    r!   Úget_constantÚ&_make_user_magic.<locals>.get_constantÏ  so   € Ü�aœ#œu¤dÐ+×,Ñ,ØˆHÜ�aœ× Ñ Ø—6‘6×#Ñ# B¨Ó*Ð*Ü�aœ×!Ñ!Ø—6‘6×$Ñ$ R¨Ó+Ð+ÜÐIÓJÐJr#   c                óº   • [        U [        [        [        45      (       a  g[        U [        [
        [        45      (       a  U R                  R                  5       $ g)NTF)	r/   r   r   r   r   r   r   r   rÃ  rê  s    r!   rÃ  Ú%_make_user_magic.<locals>.is_constantØ  sC   € Ü�aœ#œu¤dÐ+×,Ñ,ØÜ�aœ&¤(¬GÐ4×5Ñ5Ø—6‘6×%Ñ%Ó'Ð'Ør#   c                óŠ   • [        U [        5      (       a-  [        U R                  R	                  [        U 5      5      5      $ U $ )z;Implements True+True=2, which works in python but not sympy)r/   r   r   r   rˆ   r   rê  s    r!   ÚpromoteÚ!_make_user_magic.<locals>.promoteû  s0   € ä˜!œW×%Ñ%Ü˜aŸf™fŸo™o¬c°!«fÓ5Ó6Ð6ØˆHr#   c                ó   • U $ r   r‘   rê  s    r!   r/  r0    s   € ØˆHr#   c                ó,  >• TS;  a  X4$ [        U [        [        R                  45      n[        U[        [        R                  45      nU(       d  U(       a:  U(       d  [        R                  " U 5      n U(       d  [        R                  " U5      nX4$ )N)r¹   r¾   rÂ   rÆ   rÊ   rÚ   rã   r   r   rõ   rú   rþ   r  r  r
  )r/   r   r�  r   r	   )r3   rG   Úf_selfÚf_otherrÁ  s       €r!   Úpromote2Ú"_make_user_magic.<locals>.promote2  su   ø€ ð ð 
ó 
ð$ �;ÐÜ˜D¤5¬%¯.©.Ð"9Ó:ˆÜ˜U¤U¬E¯N©NÐ$;Ó<ˆÞ–WÞÜ—’ tÓ,�ÞÜŸš¨Ó.�Øˆ{Ðr#   c                ó¤   >• T" U 5      n T" U 5      (       a  [        T5      " T" U 5      5      $ [        [        U R                  T5      " 5       5      $ r   )r   rw  rñ  r   )r3   r*  rÃ  rÁ  r  r/  s    €€€€€r!   r  Ú*_make_user_magic.<locals>.unary_magic_impl0  sE   ø€ Ù�t‹}ˆÙ�t×ÑÜ& vÔ.±¸TÓ0BÓCÐCÜœ §¡¨KÔ8Ó:Ó;Ð;r#   c           	     ó  >• [        U[        [        [        [        [
        [        45      (       d  [        $ [        R                  STX5        T" U 5      n T" U5      nT	" X5      u  pT" U 5      (       a  [        T5      " T" U 5      U5      $ T" U5      (       a  T" U5      n[        U R                  U5      nU[        L a  [        $ [        [        U R                  T5      " U5      5      nT" U5      (       a  T" U5      $ U$ )NzMAGIC %s %s %s)r/   r   r   r   r   r   r   r½  rô  rõ  r   ri  r   rw  rñ  ©
r3   rG   Ú
other_nodeÚretr*  rÃ  rÁ  r  r/  r5  s
       €€€€€€r!   rý  Ú+_make_user_magic.<locals>.binary_magic_impl6  sÝ   ø€ Ü˜%¤#¤u¬d´F¼HÄgÐ!N×OÑOÜ!Ð!Ü×ÑÐ+¨V°TÔAÙ�t‹}ˆÙ˜“ˆÙ˜tÓ+‰ˆÙ�t×ÑÜ& vÔ.±¸TÓ0BÀEÓJÐJÙ�u×ÑÙ  Ó'ˆEÜ˜TŸY™Y¨Ó.ˆ
ØœÒ'Ü!Ð!Üœ §	¡	¨;Ô7¸
ÓCÓDˆÙ$/°×$4Ñ$4‰|˜CÓ Ð=¸#Ð=r#   c           	     óØ  >• [        U[        [        [        [        [
        [        45      (       d  [        $ T" U 5      n T" U5      nT	" X5      u  pT" U 5      (       a  [        T5      " UT" U 5      5      $ T" U5      (       a  T" U5      n[        U R                  U5      nU[        L a  [        $ [        [        UT5      " U R                  5      5      nT" U5      (       a  T" U5      $ U$ r   )r/   r   r   r   r   r   r   r½  r   ri  r   rw  rñ  r:  s
       €€€€€€r!   Úrbinary_magic_implÚ,_make_user_magic.<locals>.rbinary_magic_implG  sÊ   ø€ Ü˜%¤#¤u¬d´F¼HÄgÐ!N×OÑOÜ!Ð!Ù�t‹}ˆÙ˜“ˆÙ˜tÓ+‰ˆÙ�t×ÑÜ& vÔ.°±|ÀDÓ7IÓJÐJÙ�u×ÑÙ  Ó'ˆEÜ˜TŸY™Y¨Ó.ˆ
ØœÒ'Ü!Ð!Üœ 
¨KÔ8¸¿¹ÓCÓDˆÙ$/°×$4Ñ$4‰|˜CÓ Ð=¸#Ð=r#   c                ób   ^• [        U TU5        U4S jnU [        L a  [        [        TU5        gg)z�
Registers the SymNode magic method on SymInt/Float/Bool,
and optionally registers a corresponding wrapped method on DynamicInt.
c                 ó  >• U  Vs/ s H&  n[        U[        5      (       a  UR                  OUPM(     n n[        [        T5      " U 6 n[        U[        5      (       a   [        U[
        5      (       d  [        U5      $ U$ s  snf r   )r/   r   rß  rñ  r   r   )r‡  rë  r‰  Úattrs      €r!   Údynamic_int_implÚ<_make_user_magic.<locals>.setattrs.<locals>.dynamic_int_impla  sk   ø€ ÙHLÓMÊÀ1œj¨¬J×7Ñ7�A—F’F¸QÒ>ÉˆDÐMÜœ#˜tÔ$ dÐ+ˆCÜ˜#œs×#Ñ#¬J°s¼D×,AÑ,AÜ! #“Ð&ØˆJùò	 Ns   †-A?N)r  r   r   )Ú	user_typerC  Úsymnode_implrD  s    `  r!   ÚsetattrsÚ"_make_user_magic.<locals>.setattrsW  s2   ø€ ô 	�	˜4 Ô.õ	ð œÒÜ”J Ð&6Õ7ð r#   Ú__r
   c                ó²  >• U R                   n[        X15      n[        X25      nU[        L d	  U[        L a  [        $ [        U[        5      (       a/  [        U[        5      (       a  UR
                  UR
                  :X  d  [        S5      e[        [        U R                   T5      " XE5      5      nUR                   R                  5       (       a  T" U5      $ U$ )Nz9then_node and else_node must be SymNodes with same pytype)
r   ri  r½  r/   r   r1   r8   rw  rñ  rÃ  )	Úpredr,  r-  r  r  r  r<  r*  r  s	          €€r!   Úsym_ite_magic_implÚ,_make_user_magic.<locals>.sym_ite_magic_implr  s±   ø€ ØŸ	™	ˆIÜ 	Ó4ˆIÜ 	Ó4ˆIØœNÒ*¨i¼>Ò.IÜ%Ð%ä˜9¤g×.Ñ.Ü˜y¬'×2Ñ2Ø×$Ñ$¨	×(8Ñ(8Ó8ä$ØOóð ô œG D§I¡I¨{Ô;¸IÓQÓRˆCØ(+¯©×(<Ñ(<×(>Ñ(>‘< Ó$ÐGÀCÐGr#   r°   c                ó¢   >• T" U 5      (       a  [         R                  " T" U 5      U5      $ [        [        U R                  T5      " U5      5      $ r   )r  r°   rw  rñ  r   )r3   r¯   r*  rÃ  rÁ  s     €€€r!   Úround_magic_implÚ*_make_user_magic.<locals>.round_magic_impl†  s?   ø€ Ù˜4× Ñ Ü—~’~¡l°4Ó&8¸'ÓBÐBäœW T§Y¡Y°Ô7¸Ó@ÓAÐAr#   Ú__r)rë  z2Union[SymInt, int, SymFloat, float, SymBool, bool]r   )r  Úbool_becomes_int_magic_methodsÚunary_magic_methodsÚunary_nonmagic_methodsrñ  r   Úbitwise_opsÚreflectable_magic_methods)rÁ  rF  r  rý  r?  rH  ÚorigrM  rP  Úmethod_namer*  rÃ  r  r/  r5  s   `         @@@@@r!   Ú_make_user_magicrZ  Ç  sP  ý€ ð ÔCÓCØ˜V˜H�o‰àˆôKòðB Ô/Ó/ó	ò	õ!÷T<ñ <÷>ò >÷">ò >ò 8ð( Ô$Ó$Ù�˜b  ¨˜OÐ-=Õ>Ø	Ô)Ó	)Ü�y &Ó)ˆÙ�˜F¤NÐ3CÓ$JÕKØ	�9Ó	ö	Hñ" 	�˜b  ¨˜OÐ-?Õ@Ø	�7Ó	÷	Bñ 	Bñ 	�˜b  ¨˜OÐ-=Õ>àˆØ”[Ó Ü% fÑ-ˆKÙ�˜b  ¨RÐ0Ð2CÔDØÔ.Ó.Ù�Y # k ]°"Ð 5Ð7IÕJð /r#   )FFr   )žÚ
__future__r   r  rè  rÊ  r!  ÚloggingÚmathÚoperatorr  r   r   Útypingr   r   r   r�  Útorch._logging.structuredrã  rÝ  r	   r
   r   r   r   r   r   r   Útorch._loggingr   r+   r   Ú	getLoggerrÆ  r•  ÚgetArtifactLoggerrô  r   r   rË  r   r   r   ÚHintTypeÚ__all__Útorch.typesr   r0   r"   r   rÏ  r   r«   r¦   r¹   rÒ   r  rõ   r  r´   rb  r
  rþ   r  rè   r  rÆ   rÂ   rú   r!  rÖ   r  re  r°   rí   r¾   r_  rÀ  rT  rö  Úmath_op_namesrò  Úsym_nameÚpriv_sym_namer  rñ  rœ   rU  r  Úonly_bool_magic_methodsrS  Úalso_bool_magic_methodsÚbool_magic_methodsÚonly_float_magic_methodsr  rV  rö  r  r÷  r	  r  r  r  r  r  r!  r$  r(  r,  r=  rO  rS  rW  r[  rW  r[  r^  rb  re  rh  rk  rn  rq  rt  rw  rz  r  rƒ  r  Úcurrent_moduler‹  Úpriv_sympy_nameró  rÈ  r�  r”  r˜  rš  Úinvertr   rŸ  rœ  r¬  r°  r³  r¶  r¸  r»  Úsizes_strides_methodsri  rw  r   r  r'  ÚitemsrÁ  rü  rZ  r‘   r#   r!   Ú<module>rs     sA  ðö #ðó Û Û Û Û Û Û Û 
ß /ß 1Ñ 1ã ß .Ð .÷	÷ 	ó 	õ -ö Ý>à×Ò˜Ó!€Ø�~‰~×/Ñ/°¸*ÓE€ñ
 “8€ˆ&Ó à�%‰<˜#Ñ Ñ$€ò K€õ 1ò÷jñ j÷Z+ñ +ô.� ô .ð:$Ø	ˆ8�<‰<ð$à	ˆ8�<‰<ð$ð 
ˆ8�<‰<ð$ð 
ˆ8�=‰=ð	$ð
 �8—=‘=ð$ð ˆD�I‰Ið$ð 	ˆ(�+‰+ð$ð ˆT�Z‰Zð$ð ˆT�Z‰Zð$ð �H×%Ñ%ð$ð 	ˆ(�+‰+ð$ð 	ˆ(�+‰+ð$ð Ñ*ð$ð 	ˆ(�+‰+ð$ð ˆh�o‰oð$ð  	ˆ(�+‰+ð!$ð" 
ˆ8�<‰<ñ#$ð$ 
ˆ8�<‰<ð%$ð& 	ˆ(�+‰+ð'$ð( 
ˆ8�<‰<ð)$ð* 	ˆ(�,‰,ð+$ð, �(—,‘,ð-$ð. �8—<‘<ð/$ð0 �—‘ð1$ð2 �h—l‘lð3$ð4 ˆX�^‰^ð5$ð6 ˆh�o‰oð7$ð8 
ˆ8�<‰<ð9$ð: �ð;$ð< ˆwð=$ð> ˆwð?$ð@ ˆwðA$ðB ˆwðC$ðD �X×%Ñ%ñE$ðF �8×#Ñ#ñG$Ð òL
Ð òð€ó €DØ�d�Vˆ}€HØ˜�z�N€MÙˆG�XÑ/°Ó5Ô6Ù#*¨5°-Ó#@Ð�xÑ Ø×Ñ˜HÔ%Ø‡N�N�8Öñ ð ðÐ ð $Ð&<Ñ<€ò >Ð â!6Ð à˜&Ð Ø,Ð/FÑFÐ ò JÐ ð 7<¸T°]Ð 2à#°4ÈÑN€ò XÐ ã€DØ�d�Vˆ}€HØ×"Ñ" 8Ö,ñ ò
 HÐ òÐ ò"òòòòòòòòòòðF LQôA:òH'ò&ò'ðØ	ˆ8�<‰<ðà	ˆ8�<‰<ðð 
ˆ8�<‰<ðð 
ˆ:ð	ð
 Ð+ðð Ð!ðð 
ˆ:ðð �<ðð 	ˆ)ðð �+ðð �<ðð Ð)ðð Ð%ðð �Oðð ˆmðð  ˆmð!Ð ò(ò$òòòòòòòòòòò.ð —’˜XÑ&€òó €DØ ˜vÐ&€OÙ	˜$Ó	€BØ$3Ð3€B„O�b”kÙˆN˜O¨RÖ0ñ	 ð ˆˆoòô-òò0ðØñàˆx�Šðð 
ˆ8�<‰<ðð 	ˆ)ð	ð
 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð 	ˆ)ðð ˆ\ðð ˆ\ðð Ð!ðð ˆKðð 
ˆ8�<‰<ðð ˆzðð  ˆzð!ð" ˆzð#ð$ 
ˆ:ñ%ð& Ø#ò)€ó0 €DØ�d�Vˆ}€HÙ% n¸À¸vÐ6FÓG€M�(Óñ ð 	ˆ(�M >òUò
ò0EòHò%òPPòSò?ð )Ø&JØ&JØ#DØ#DØ.[ñ	Ð òò>ò&òB?òJ
TCðn "×'Ò'Ö)�L€FˆDÙ�V˜TÖ"ñ *ð *×/Ò/Ö1�L€FˆDÙ˜V TÖ*ñ 2òLKó^ €FØÐ(Ó(Ù˜ Ô)ÙØÐ)Ó)Ù˜ Ô*ÙØÐ(Ó(¨FÐ6TÓ,TÙ˜ Ô)Ù�V˜VÔ$Ø�[Õ Ù˜ Ö*ñ ð Ùr#   