
    3ja5                        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\R                  R                  5      r	 " S S\R                  R                  5      r " S S5      r
 " S S	5      r " S
 S5      r " S S\5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r\
\\\\\\\\\S.
rg)    Nc                       \ rS rSrS rSrg)LCM	   c                 T   U R                  U5      R                  UR                  S S SUR                  S-
  -  -   5      nUR                  UR                  S S SUR                  S-
  -  -   5      nX2U-  -
  nSnUS-  nUS-  US-  US-  -   -  nXwS-  US-  -   S-  -  n	X-  X-  -   $ )N   r         ?g      $@   )timestepviewshapendim)
selfsigmamodel_outputmodel_inputr   x0
sigma_datascaled_timestepc_skipc_outs
             A/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_model_advanced.pycalculate_denoisedLCM.calculate_denoised
   s    ==',,U[[!_t|GXGX[\G\?]-]^

5;;r?T\5F5F5J-KKL%//
"T/Q/1"4z1}"DEA#5
A#E#"MMzF000     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r   	   s    1r   r   c                   <   ^  \ rS rSrSrSU 4S jjrS rS rSrU =r	$ )ModelSamplingDiscreteDistilled   2   c                   > [         TU ]  XS9  U R                  U R                  -  U l        [
        R                  " U R                  [
        R                  S9n[        U R                  5       H@  nU R                  U R                  S-
  X@R                  -  -
     X0R                  S-
  U-
  '   MB     U R                  U5        g )Nzsnr)dtyper   )super__init__num_timestepsoriginal_timesteps
skip_stepstorchzerosfloat32rangesigmas
set_sigmas)r   model_configr(   sigmas_validx	__class__s        r   r+   'ModelSamplingDiscreteDistilled.__init__   s    1,,0G0GG{{D$;$;EMMRt../A<@KKHZHZ]^H^abetetatHt<uL0014q89 0 	%r   c                 l   UR                  5       nUR                  U R                  R                  5      U R                  S S 2S 4   -
  nUR	                  5       R                  SS9R                  UR                  5      U R                  -  U R                  S-
  -   R                  UR                  5      $ )Nr   )dimr   )	logto
log_sigmasdeviceabsargminr   r   r.   )r   r   	log_sigmadistss       r   r   'ModelSamplingDiscreteDistilled.timestep%   s    IIK	T__334tq$w7OO		""q")..u{{;dooMQUQ`Q`cdQdeiijojvjvwwr   c                 J   [         R                  " UR                  5       R                  U R                  R
                  5      U R                  S-
  -
  U R                  -  R                  5       S[        U R                  5      S-
  S9nUR                  5       R                  5       nUR                  5       R                  5       nUR                  5       nSU-
  U R                  U   -  XPR                  U   -  -   nUR                  5       R                  UR
                  5      $ )Nr   r   )minmax)r/   clampfloatr=   r>   r?   r.   lenr3   floorlongceilfracexp)r   r   tlow_idxhigh_idxwrB   s          r   r   $ModelSamplingDiscreteDistilled.sigma*   s    KK(..*--doo.D.DE[\I\]aeapappwwy  @A  HK  LP  LW  LW  HX  [\  H\  ^'').."668==?FFHUdoog66__X=V9VV	}}!!(//22r   )r.   )NN)
r   r   r   r    r-   r+   r   r   r!   __classcell__)r8   s   @r   r#   r#      s    	&x
3 3r   r#   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	ModelSamplingDiscrete3   c                 "    SS/ SQ4SSSS.4S.0$ )	NrequiredMODEL)epsv_predictionlcmr   
img_to_imgimg_to_img_flowBOOLEANFT)defaultadvanced)modelsamplingr(   r   ss    r   INPUT_TYPES!ModelSamplingDiscrete.INPUT_TYPES4   s*    z+p*r'0eQU2V&W  ! 	!r   r[   patchmodel/patchc                 <   UR                  5       n[        R                  R                  nUS:X  a  [        R                  R                  nOUS:X  a  [        R                  R
                  nOuUS:X  a  [        n[        nObUS:X  a  [        R                  R                  nOAUS:X  a  [        R                  R                  nO US:X  a  [        R                  R                  n " S SUW5      nU" UR                  R                  US	9nUR                  S
U5        U4$ )Nr]   r^   r_   r   r`   ra   c                       \ rS rSrSrg):ModelSamplingDiscrete.patch.<locals>.ModelSamplingAdvancedR   r   Nr   r   r   r    r!   r   r   r   ModelSamplingAdvancedro   R       r   rr   r'   model_sampling)clonecomfyrt   rW   EPSV_PREDICTIONr   r#   X0
IMG_TO_IMGIMG_TO_IMG_FLOWre   r5   add_object_patch)	r   re   rf   r(   msampling_basesampling_typerr   rt   s	            r   rk   ModelSamplingDiscrete.patch@   s    KKM,,BBu!0044M'!00==MM:M!0033M%!00;;M**!00@@M	M= 	 /u{{/G/GdS	+^<ur   r   Nr   r   r   r    classmethodri   RETURN_TYPESFUNCTIONCATEGORYrk   r!   r   r   r   rW   rW   3   s*    ! ! LHHr   rW   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	ModelSamplingStableCascadeZ   c                     SSSSSSSS.4S	.0$ )
NrZ   r[   FLOATg       @              Y@{Gz?rc   rF   rG   stepre   shiftr   rg   s    r   ri   &ModelSamplingStableCascade.INPUT_TYPES[   )    z(/SUZcg1h'i  ! 	!r   r[   rk   zmodel/patch/stable cascadec                 $   UR                  5       n[        R                  R                  n[        R                  R                  n " S SXE5      nU" UR
                  R                  5      nUR                  U5        UR                  SU5        U4$ )Nc                       \ rS rSrSrg)?ModelSamplingStableCascade.patch.<locals>.ModelSamplingAdvancedl   r   Nrq   r   r   r   rr   r   l   rs   r   rr   rt   )	ru   rv   rt   StableCascadeSamplingrw   re   r5   set_parametersr|   )r   re   r   r}   r~   r   rr   rt   s           r   rk    ModelSamplingStableCascade.patchf   sw    KKM,,BB,,00	M 	 /u{{/G/GH%%e,	+^<ur   r   Nr   r   r   r   r   r   Z   s*    ! !
 LH+Hr   r   c                   :    \ rS rSr\S 5       rSrSrSrS	S jr	Sr
g)
ModelSamplingSD3t   c                     SSSSSSSS.4S	.0$ )
NrZ   r[   r   g      @r   r   r   r   r   r   rg   s    r   ri   ModelSamplingSD3.INPUT_TYPESu   r   r   r[   rk   zmodel/patch/stable diffusionc                    UR                  5       n[        R                  R                  n[        R                  R                  n " S SXV5      nUR                  S5      nU" UR                  R                  5      n	U	R                  X#S9  [        US5      (       a  U	R                  UR                  5        UR                  SU	5        U4$ )Nc                       \ rS rSrSrg)5ModelSamplingSD3.patch.<locals>.ModelSamplingAdvanced   r   Nrq   r   r   r   rr   r      rs   r   rr   rt   r   
multipliernoise_scale)ru   rv   rt   ModelSamplingDiscreteFlowCONSTget_model_objectre   r5   r   hasattrset_noise_scaler   r|   )
r   re   r   r   r}   r~   r   rr   originalrt   s
             r   rk   ModelSamplingSD3.patch   s    KKM,,FF,,22	M 	 %%&67.u{{/G/GH%%E%I8]++**8+?+?@	+^<ur   r   N)i  r   r   r   r   r   r   t   s*    ! !
 LH-Hr   r   c                   2    \ rS rSr\S 5       rSrSrS rSr	g)ModelSamplingAuraFlow   c                     SSSSSSSS.4S	.0$ )
NrZ   r[   r   gGz?r   r   r   r   r   r   rg   s    r   ri   !ModelSamplingAuraFlow.INPUT_TYPES   s)    z(/T#V[dh1i'j  ! 	!r   
patch_aurarl   c                 "    U R                  XSS9$ )N      ?)r   )rk   )r   re   r   s      r   r    ModelSamplingAuraFlow.patch_aura   s    zz%3z77r   r   N)
r   r   r   r    r   ri   r   r   r   r!   r   r   r   r   r      s%    ! !
 HH8r   r   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	ModelSamplingFlux   c                     SSSSSSSSS	.4SS
SSSSS	.4SSS[         R                  SS.4SSS[         R                  SS.4S.0$ )NrZ   r[   r   gffffff?r   r   r   T)rc   rF   rG   r   rd   r	   INTi         r   )re   	max_shift
base_shiftwidthheight)nodesMAX_RESOLUTIONrg   s    r   ri   ModelSamplingFlux.INPUT_TYPES   sz    z,3cZ_hlz~5  ,A-4#cZ_hlz~6  -A(-4SXSgSgqr/s't).DTYThThrs0t(u	  ! 	!r   r[   rk   zmodel/patch/fluxc                 b   UR                  5       nSnSnX#-
  X-
  -  n	X9U-  -
  n
XE-  S-  U	-  U
-   n[        R                  R                  n[        R                  R                  n " S SX5      nU" UR
                  R                  5      nUR                  US9  UR                  SU5        U4$ )N   i   c                       \ rS rSrSrg)6ModelSamplingFlux.patch.<locals>.ModelSamplingAdvanced   r   Nrq   r   r   r   rr   r      rs   r   rr   )r   rt   )	ru   rv   rt   r   r   re   r5   r   r|   )r   re   r   r   r   r   r}   x1x2mmbr   r~   r   rr   rt   s                   r   rk   ModelSamplingFlux.patch   s    KKM$1b =1R7!;,,>>,,22	M 	 /u{{/G/GH%%E%2	+^<ur   r   Nr   r   r   r   r   r      s*    ! ! LH!Hr   r   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	ModelSamplingContinuousEDM   c                 >    SS/ SQ4SSSSSS	S
S.4SSSSSS	S
S.4S.0$ )NrZ   r[   )r^   edmedm_playground_v2.5r]   cosmos_rflowr   g      ^@r        @@MbP?FTrc   rF   rG   r   roundrd   gMb`?re   rf   	sigma_max	sigma_minr   rg   s    r   ri   &ModelSamplingContinuousEDM.INPUT_TYPES   sb    z+p*r,3s[ajoz  NR  6S  ,T,3s[ajoz  NR  6S  ,T  ! 	!r   r[   rk   rl   c                    UR                  5       n[        R                  R                  nS nSnUS:X  a  [        R                  R                  n	OUS:X  a  [        R                  R
                  n	SnOUS:X  a  [        R                  R                  n	O{US:X  a;  [        R                  R
                  n	Sn[        R                  R                  5       nO:US:X  a4  [        R                  R                  n	[        R                  R                  n " S S	UW	5      n
U
" UR                  R                  5      nUR                  XCU5        UR                  S
U5        Ub  UR                  SU5        U4$ )Nr   r]   r   r	   r^   r   r   c                       \ rS rSrSrg)?ModelSamplingContinuousEDM.patch.<locals>.ModelSamplingAdvanced   r   Nrq   r   r   r   rr   r      rs   r   rr   rt   latent_format)ru   rv   rt   r   rw   EDMrx   latent_formatsSDXL_Playground_2_5COSMOS_RFLOWModelSamplingCosmosRFlowre   r5   r   r|   )r   re   rf   r   r   r}   r~   r   r   r   rr   rt   s               r   rk    ModelSamplingContinuousEDM.patch   s7   KKM,,GG
u!0044M!0044MJ'!00==M..!0044MJ!00DDFM'!00==M!00IIM	M= 	 /u{{/G/GH%%iJG	+^<$>ur   r   Nr   r   r   r   r   r      s*    ! ! LHHr   r   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	ModelSamplingContinuousV   c                 <    SSS/4SSSSSS	S
S.4SSSSSS	S
S.4S.0$ )NrZ   r[   r^   r   g     @@r   r   r   FTr   gQ?r   r   rg   s    r   ri   $ModelSamplingContinuousV.INPUT_TYPES   se    z,:+;*=,3s[ajoz  NR  6S  ,T,3cZ`iny~  MQ  6R  ,S  ! 	!r   r[   rk   rl   c                 4   UR                  5       nSnUS:X  a  [        R                  R                  n " S S[        R                  R                  W5      nU" UR
                  R                  5      n	U	R                  XCU5        UR                  SU	5        U4$ )Nr   r^   c                       \ rS rSrSrg)=ModelSamplingContinuousV.patch.<locals>.ModelSamplingAdvancedi  r   Nrq   r   r   r   rr   r     rs   r   rr   rt   )	ru   rv   rt   rx   r   re   r5   r   r|   )
r   re   rf   r   r   r}   r   r   rr   rt   s
             r   rk   ModelSamplingContinuousV.patch   s    KKM
~%!00==M	E$8$8$Q$QS` 	 /u{{/G/GH%%iJG	+^<ur   r   Nr   r   r   r   r   r      s*    ! ! LHHr   r   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	
RescaleCFGi  c                     SSSSSSSS.4S	.0$ )
NrZ   r[   r   gffffff?r   r   r   r   )re   r   r   rg   s    r   ri   RescaleCFG.INPUT_TYPES  s)    z-4#cZ]gk6l,m  ! 	!r   r[   rk   rl   c                 X   ^ U4S jnUR                  5       nUR                  U5        U4$ )Nc                   > U S   nU S   nU S   nU S   nUR                  UR                  S S SUR                  S-
  -  -   5      nU S   nXTU-  S-   -  nXeU-
  -
  US	-  S-   S
-  -  U-  nXeU-
  -
  US	-  S-   S
-  -  U-  nX#X-
  -  -   n[        R                  " USSS9n[        R                  " USSS9n	XxU	-  -  n
TU
-  ST-
  U-  -   nXVX-  XD-  S-   S
-  -  -
  -
  $ )Nconduncond
cond_scaler   r   r   inputr   r
   r	   )r   r
      T)r;   keepdim)r   r   r   r/   std)argsr   r   r   r   x_origr7   x_cfgro_posro_cfg
x_rescaledx_finalr   s               r   rescale_cfg%RescaleCFG.patch.<locals>.rescale_cfg  s1   <D(^Fl+JMEJJu{{2AQ1GGHE']F %-#-.A4-(UaZ#-=#,EE%PDVO,!c1Ac0IIeTF 4=99EYYt$?FYYu'4@F6/2J :-z1AU0JJGEMC4GC3O!OOPPr   )ru   set_model_sampler_cfg_function)r   re   r   r  r}   s     `  r   rk   RescaleCFG.patch  s+    	Q. KKM	((5ur   r   Nr   r   r   r   r   r     s*    ! ! LHHr   r   c                   6    \ rS rSr\S 5       rSrSrSrS r	Sr
g)	ModelNoiseScalei3  c           	           SSSSSSSSS	.4S
.0$ )NrZ   r[   r   r   r   g      P@r   zJAbsolute training noise scale. For example HiDream-O1 base: 8.0, dev: 7.5.)rc   rF   rG   r   tooltip)re   r   r   rg   s    r   ri   ModelNoiseScale.INPUT_TYPES4  s6    z.53s[_im CO8P .Q  ! 	!r   r[   rk   rl   c                 "   UR                  5       nUR                  S5      n[        U5      " UR                  R                  5      nUR                  UR                  UR                  S9  UR                  U5        UR                  SU5        U4$ )Nrt   r   )
ru   r   typere   r5   r   r   r   r   r|   )r   re   r   r}   r   mss         r   rk   ModelNoiseScale.patch@  sy    KKM%%&67(^AGG001
8;N;NO
;'	+R0ur   r   Nr   r   r   r   r  r  3  s*    ! ! LHHr   r  c                   >    \ rS rSrSS/r\S 5       rSrSrSr	S r
S	rg
)ModelComputeDtypeiJ  zmodel precisionzchange dtypec                     SS/ SQSS04S.0$ )NrZ   r[   )rc   fp32fp16bf16rd   T)re   r)   r   rg   s    r   ri   ModelComputeDtype.INPUT_TYPESL  s$    z(KjZ^M_'`  ! 	!r   r[   rk   zadvanced/debugc                 r    UR                  5       nUR                  [        R                  " U5      5        U4$ )N)ru   set_model_compute_dtypenode_helpersstring_to_torch_dtype)r   re   r)   r}   s       r   rk   ModelComputeDtype.patchW  s-    KKM	!!,"D"DU"KLur   r   N)r   r   r   r    SEARCH_ALIASESr   ri   r   r   r   rk   r!   r   r   r   r  r  J  s4    '8N! !
 LHHr   r  )
rW   r   r   r   r   r   r   r  r   r  )comfy.sdrv   comfy.model_samplingcomfy.latent_formatsr   r/   r  rt   rw   r   rW   r#   r   r   r   r   r   r   r   r  r  NODE_CLASS_MAPPINGSr   r   r   <module>r$     s         1%


"
" 13U%9%9%O%O 38% %N 4 :8, 8! !H+ +Z :% %N . ( 3"< 8"<(2*&* r   