
    +j                     n   S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	  S SK
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJrJrJrJrJ r J!r!J"r"J#r#  S SK$r$S SK%r%S SK&J'r'  S S	K(J)r)   " S
 S\*\)5      r+S\4S jr, " S S\	RZ                  5      r. " S S\	RZ                  5      r/ " S S\	RZ                  5      r0 " S S\	RZ                  5      r1 " S S\	RZ                  5      r2 " S S\	RZ                  5      r3 " S S\	RZ                  5      r4 " S S\	RZ                  5      r5 " S S\5      r6S \64S! jr7g)"    )cleandoc)Optional)override)ComfyExtensionInputIO)#StabilityUpscaleConservativeRequestStabilityUpscaleCreativeRequestStabilityAsyncResponseStabilityResultsGetResponseStabilityStable3_5RequestStabilityStableUltraRequestStabilityStableUltraResponseStabilityAspectRatioStability_SD3_5_ModelStability_SD3_5_GenerationModeget_stability_style_presetsStabilityTextToAudioRequestStabilityAudioToAudioRequestStabilityAudioInpaintRequestStabilityAudioResponse)	validate_audio_durationvalidate_stringaudio_input_to_mp3bytesio_to_image_tensortensor_to_bytesioaudio_bytes_to_audio_inputsync_oppoll_opApiEndpointN)BytesIO)Enumc                        \ rS rSrSrSrSrSrg)StabilityPollStatus)   finishedin_progressfailed N)__name__
__module____qualname____firstlineno__r&   r'   r(   __static_attributes__r)       ?/home/wildlama/comfy/ComfyUI/comfy_api_nodes/nodes_stability.pyr$   r$   )   s    HKFr/   r$   xc                     U R                   c  U R                  b  [        R                  $ U R                  b  [        R
                  $ [        R                  $ N)nameerrorsr$   r(   finish_reasonr&   r'   r1   s    r0   get_async_dummy_statusr8   /   sC    vvQXX1")))	
	$"+++***r/   c                       \ rS rSrSr\S 5       r\   SS\S\S\S\S	\	\
R                     S
\S\	\   S\R                  4S jj5       rSrg)StabilityStableImageUltraNode7   @
Generates images synchronously based on prompt and resolution.
c                    [         R                  " SSS[        U R                  =(       d    S5      [         R                  R                  SSSSS9[         R                  R                  S	[        [        R                  S
S9[         R                  R                  S[        5       SSS9[         R                  R                  SSSSS[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSSSSSS9[         R                  R                  SSSSSSSS 9/[         R                  R                  5       /[         R                   R"                  [         R                   R$                  [         R                   R&                  /S[         R(                  " S!S"9S#9	$ )$Nr:   zStability AI Stable Image Ultrapartner/image/Stability AI promptTa  What you wish to see in the output image. A strong, descriptive prompt that clearly defineselements, colors, and subjects will lead to better results. To control the weight of a given word use the format `(word:weight)`,where `word` is the word you'd like to control the weight of and `weight`is a value between 0 and 1. For example: `The sky was a crisp (blue:0.3) and (green:0.8)`would convey a sky that was blue and green, but more green than blue.	multilinedefaulttooltipaspect_ratio Aspect ratio of generated image.optionsrC   rD   style_preset*Optional desired style of generated image.rH   rD   advancedseedr          ,The random seed used for creating the noise.rC   minmaxstepdisplay_modecontrol_after_generaterD   imageoptionalnegative_promptzhA blurb of text describing what you do not wish to see in the output image. This is an advanced feature.rC   rD   force_inputrY   rL   image_denoise      ?              ?{Gz?gDenoise of input image; 0.0 yields image identical to input, 1.0 is as if no image was provided at all.rC   rR   rS   rT   rD   rY   z{"type":"usd","usd":0.08}expr	node_iddisplay_namecategorydescriptioninputsoutputshiddenis_api_nodeprice_badge)r   Schemar   __doc__Stringr   Combor   	ratio_1_1r   IntNumberDisplaynumberImageFloatOutputHiddenauth_token_comfy_orgapi_key_comfy_org	unique_id
PriceBadgeclss    r0   define_schema+StabilityStableImageUltraNode.define_schema<   s   yy3:1 !23		"l	   
 "00::>	   "79H!	   "!#!1!1!8!8+/J  	 !   		% G $!!    # F!  ]7r ! 		..		++		##
 4MI
 I	
r/   Nr@   rE   rI   rM   rW   rZ   r]   returnc                   #    [        USS9  S nUb  [        USS9R                  5       nOS nU(       d  S nUS:X  a  S nSU0n	[        U [	        SSS	9[
        [        UUUUUUS
9U	SS9I S h  vN n
U
R                  S:w  a  [        SU
R                   S35      e[        R                  " U
R                  5      n[        [        U5      5      n[        R                  " U5      $  Nw7f)NFstrip_whitespace " total_pixelsNonerW   z3/proxy/stability/v2beta/stable-image/generate/ultraPOSTpathmethod)r@   rZ   rE   rM   strengthrI   multipart/form-dataresponse_modeldatafilescontent_typeSUCCESSz&Stable Image Ultra generation failed: .)r   r   readr   r    r   r   r6   	Exceptionbase64	b64decoderW   r   r!   r   
NodeOutput)r   r@   rE   rI   rM   rW   rZ   r]   image_binaryr   response_api
image_datareturned_images                r0   execute%StabilityStableImageUltraNode.execute   s     	7,UKPPRL M"O6!L \
 %R[ab7, /)&) .
 
  %%2D\E_E_D``abcc%%l&8&89
01DE}}^,,-
s   A)C%+C#,A8C%r)   Nr?   r^   )r*   r+   r,   r-   rq   classmethodr   strintr   torchTensorfloatr   r   r   r.   r)   r/   r0   r:   r:   7   s     J
 J
X  )-!),1-1- 1- 	1-
 1- %1- 1-  1- 
1- 1-r/   r:   c                       \ rS rSrSr\S 5       r\   SS\S\S\S\S	\S
\	S\
\R                     S\S\
\	   S\R                  4S jj5       rSrg)StabilityStableImageSD_3_5Node   r<   c                 6   [         R                  " SSS[        U R                  =(       d    S5      [         R                  R                  SSSSS9[         R                  R                  S	[        S
9[         R                  R                  S[        [        R                  SS9[         R                  R                  S[        5       SSS9[         R                  R                  SSSSSSS9[         R                  R                  SSSSS[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  S SS!SSSS"9[         R                  R                  S#S$S%SS&S'SS(9/	[         R                  R!                  5       /[         R"                  R$                  [         R"                  R&                  [         R"                  R(                  /S[         R*                  " [         R,                  " S	/S)9S*S+9S,9	$ )-Nr   z'Stability AI Stable Diffusion 3.5 Imager>   r?   r@   TWhat you wish to see in the output image. A strong, descriptive prompt that clearly defines elements, colors, and subjects will lead to better results.rA   modelrH   rE   rF   rG   rI   rJ   rK   	cfg_scaleg      @r`   g      $@皙?zsHow strictly the diffusion process adheres to the prompt text (higher values keep your image closer to your prompt)rC   rR   rS   rT   rD   rM   r   rN   rO   rP   rQ   rW   rX   rZ   YKeywords of what you do not wish to see in the output image. This is an advanced feature.r[   r]   r^   r_   ra   rb   rc   )widgetsz
                (
                  $contains(widgets.model,"large")
                    ? {"type":"usd","usd":0.065}
                    : {"type":"usd","usd":0.035}
                )
                )
depends_onre   rf   )r   rp   r   rq   rr   r   rs   r   r   rt   r   ry   ru   rv   rw   rx   rz   r{   r|   r}   r~   r   PriceBadgeDependsr   s    r0   r   ,StabilityStableImageSD_3_5Node.define_schema   s   yy4B1 !23		" v	    1   "00::>	   "79H!	    R   "!#!1!1!8!8+/J  	 !   		%w $!!    # F!  k>@ ! 		..		++		##
 //	B	[W
 W	
r/   Nr   r@   rE   rI   rM   r   rW   rZ   r]   r   c
                   #    [        USS9  S n
[        R                  nUb+  [        USS9R	                  5       n
[        R
                  nS nOS n	U(       d  S nUS:X  a  S nSU
0n[        U [        SSS	9[        [        UUUUU	UUUUS
9	USS9I S h  vN nUR                  S:w  a  [        SUR                   S35      e[        R                  " UR                  5      n[        [!        U5      5      n["        R$                  " U5      $  Nw7f)NFr   r   r   r   rW   z1/proxy/stability/v2beta/stable-image/generate/sd3r   r   )	r@   rZ   rE   rM   r   rI   r   r   moder   r   r   z.Stable Diffusion 3.5 Image generation failed: r   )r   r   text_to_imager   r   image_to_imager   r    r   r   r6   r   r   r   rW   r   r!   r   r   )r   r   r@   rE   rI   rM   r   rW   rZ   r]   r   r   r   r   r   r   s                   r0   r   &StabilityStableImageSD_3_5Node.execute  s(     	7-;;,UKPPRL1@@DL M"O6!L \
 %PY_`7* /)&)#
 .!
 
& %%2L\MgMgLhhijkk%%l&8&89
01DE}}^,,3
s   BD
DA8D
r)   r   )r*   r+   r,   r-   rq   r   r   r   r   r   r   r   r   r   r   r   r.   r)   r/   r0   r   r      s     X
 X
t  )-!),9-9- 9- 	9-
 9- 9- 9- %9- 9-  9- 
9- 9-r/   r   c                       \ rS rSrSr\S 5       r\ SS\R                  S\	S\
S\S\	S	\R                  4S
 jj5       rSrg) StabilityUpscaleConservativeNodei[  :
Upscale image with minimal alterations to 4K resolution.
c                    [         R                  " SSS[        U R                  =(       d    S5      [         R                  R                  S5      [         R                  R                  SSSSS	9[         R                  R                  S
SSSSSS9[         R                  R                  SSSSS[         R                  R                  SSS9[         R                  R                  SSSSSSS9/[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                  /S[         R                   " SS9S9	$ )Nr   z!Stability AI Upscale Conservativer>   r?   rW   r@   Tr   rA   
creativitygffffff?g?r^   ra   aControls the likelihood of creating additional details not heavily conditioned by the init image.r   rM   r   rN   rO   rP   rQ   rZ   r   r[   z{"type":"usd","usd":0.4}rd   rf   )r   rp   r   rq   rx   r   rr   ry   ru   rv   rw   rz   r{   r|   r}   r~   r   r   s    r0   r   .StabilityUpscaleConservativeNode.define_schema`  sL   yy6<1 !23w'		" v	         "!#!1!1!8!8+/J  	 		%w $!!   5"H ! 		..		++		##
 3c4
 4	
r/   rW   r@   r   rM   rZ   r   c                   #    [        USS9  [        USS9R                  5       nU(       d  S nSU0n[        U [	        SSS9[
        [        UU[        US	5      US
9USS9I S h  vN nUR                  S:w  a  [        SUR                   S35      e[        R                  " UR                  5      n	[        [        U	5      5      n
[        R                   " U
5      $  Nw7f)NFr      r   rW   z9/proxy/stability/v2beta/stable-image/upscale/conservativer   r      )r@   rZ   r   rM   r   r   r   z2Stability Upscale Conservative generation failed: r   )r   r   r   r   r    r   r	   roundr6   r   r   r   rW   r   r!   r   r   )r   rW   r@   r   rM   rZ   r   r   r   r   r   s              r0   r   (StabilityUpscaleConservativeNode.execute  s      	7(YGLLN"O \
 %Xagh74 / A.	 .
 
 %%2PQ]QkQkPllmnoo%%l&8&89
01DE}}^,,)
s   A!C#C$A8Cr)   Nr?   r*   r+   r,   r-   rq   r   r   r   r   r   r   r   r   r   r   r.   r)   r/   r0   r   r   [  sw     5
 5
n   "&-||&- &- 	&-
 &- &- 
&- &-r/   r   c                       \ rS rSrSr\S 5       r\ SS\R                  S\	S\
S\	S\S	\	S
\R                  4S jj5       rSrg)StabilityUpscaleCreativeNodei  r   c                 (   [         R                  " SSS[        U R                  =(       d    S5      [         R                  R                  S5      [         R                  R                  SSSSS	9[         R                  R                  S
SSSSSS9[         R                  R                  S[        5       SSS9[         R                  R                  SSSSS[         R                  R                  SSS9[         R                  R                  SSSSSSS9/[         R                  R                  5       /[         R                  R                  [         R                  R                   [         R                  R"                  /S[         R$                  " SS9S9	$ ) Nr   zStability AI Upscale Creativer>   r?   rW   r@   Tr   rA   r   g333333?r   r^   ra   r   r   rI   rJ   rK   rM   r   rN   rO   rP   rQ   rZ   r   r[   z{"type":"usd","usd":0.6}rd   rf   )r   rp   r   rq   rx   r   rr   ry   rs   r   ru   rv   rw   rz   r{   r|   r}   r~   r   r   s    r0   r   *StabilityUpscaleCreativeNode.define_schema  ss   yy281 !23w'		" v	        "79H!	   "!#!1!1!8!8+/J  	 		%w $!!   A(T ! 		..		++		##
 3o:
 :	
r/   rW   r@   r   rI   rM   rZ   r   c                 0  #    [        USS9  [        USS9R                  5       nU(       d  S nUS:X  a  S nSU0n[        U [	        SSS	9[
        [        UU[        US
5      UUS9USS9I S h  vN n	[        U [	        SU	R                   3S9[        SS S9I S h  vN n
U
R                  S:w  a  [        SU
R                   S35      e[        R                  " U
R                  5      n[!        [#        U5      5      n[$        R&                  " U5      $  N Ny7f)NFr   r   r   r   rW   z5/proxy/stability/v2beta/stable-image/upscale/creativer   r   r   )r@   rZ   r   rI   rM   r   r   z /proxy/stability/v2beta/results/)r      c                     [        U 5      $ r3   )r8   r7   s    r0   <lambda>6StabilityUpscaleCreativeNode.execute.<locals>.<lambda>/  s
    '=a'@r/   )r   poll_intervalstatus_extractorr   z.Stability Upscale Creative generation failed: r   )r   r   r   r   r    r   r
   r   r   idr   r6   r   r   r   resultr   r!   r   r   )r   rW   r@   r   rI   rM   rZ   r   r   r   response_pollr   r   s                r0   r   $StabilityUpscaleCreativeNode.execute  s/     	7(YGLLN"O6!L \
 %T]cd10 / A.) .
 
 &??PQR6@
 
 &&)3L]MhMhLiijkll%%m&:&:;
01DE}}^,,;

s%   A*D,D--DDA8DDr)   Nr   r   r)   r/   r0   r   r     s     ;
 ;
z   "2-||2- 2- 	2-
 2- 2- 2- 
2- 2-r/   r   c                   l    \ rS rSrSr\S 5       r\S\R                  S\	R                  4S j5       rSrg)	StabilityUpscaleFastNodei;  z
Quickly upscales an image via Stability API call to 4x its original size; intended for upscaling low-quality/compressed images.
c                    [         R                  " SSS[        U R                  =(       d    S5      [         R                  R                  S5      /[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                  /S[         R                  " SS9S	9	$ )
Nr   zStability AI Upscale Fastr>   r?   rW   Tz{"type":"usd","usd":0.02}rd   rf   )r   rp   r   rq   rx   r   rz   r{   r|   r}   r~   r   r   s    r0   r   &StabilityUpscaleFastNode.define_schema@  s    yy.41 !23w' ! 		..		++		##
 4#
 	
r/   rW   r   c                 n  #    [        USS9R                  5       nSU0n[        U [        SSS9[        USS9I S h  vN nUR
                  S	:w  a  [        S
UR
                   S35      e[        R                  " UR                  5      n[        [        U5      5      n[        R                  " U5      $  Nw7f)Ni   r   rW   z1/proxy/stability/v2beta/stable-image/upscale/fastr   r   r   )r   r   r   r   zStability Upscale Fast failed: r   )r   r   r   r    r   r6   r   r   r   rW   r   r!   r   r   )r   rW   r   r   r   r   r   s          r0   r    StabilityUpscaleFastNode.executeX  s     (YGLLN \
 %PY_`7.
 
 %%2=l>X>X=YYZ[\\%%l&8&89
01DE}}^,,
s   9B5B3A8B5r)   N)r*   r+   r,   r-   rq   r   r   r   r   r   r   r   r.   r)   r/   r0   r   r   ;  sE     
 
. -%,, -2== - -r/   r   c                   h    \ rS rSrSr\S 5       r\S\S\S\S\S\S	\	R                  4S
 j5       rSrg)StabilityTextToAudioiq  zFGenerates high-quality music and sound effects from text descriptions.c                    [         R                  " SSSS[        U R                  =(       d    S5      [         R                  R                  SS/S9[         R                  R                  S	S
SS9[         R                  R                  SSSSSSS
S9[         R                  R                  SSSSS[         R                  R                  S
SS
S9	[         R                  R                  SSSSSSS
S
S9/[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                  /S
[         R                   " SS9S9
$ )Nr   zStability AI Text To Audiopartner/audio/Stability AIAudior?   r   stable-audio-2.5r   r@   TrB   rC   durationr   rO   8Controls the duration in seconds of the generated audio.rc   rM   r   rN   $The random seed used for generation.rC   rR   rS   rT   rU   rV   rD   rY   steps      &Controls the number of sampling steps.rC   rR   rS   rT   rD   rY   rL   {"type":"usd","usd":0.2}rd   )
rg   rh   ri   essentials_categoryrj   rk   rl   rm   rn   ro   )r   rp   r   rq   rs   r   rr   ru   rv   rw   r   rz   r{   r|   r}   r~   r   r   s    r0   r   "StabilityTextToAudio.define_schemat  s[   yy*51 ' !23/0   		D"EV!   "!#!1!1!8!8+/B!  
 D!!  	5$L ! 		..		++		##
 3i7
 7	
r/   r   r@   r   rM   r   r   c                 ,  #    [        USS9  [        X!X4US9n[        U [        SSS9[        USS9I S h  vN nUR
                  (       d  [        S	5      e[        R                  " [        [        R                  " UR
                  5      5      5      $  N]7f)
N'  
max_length)r@   r   r   rM   r   z:/proxy/stability/v2beta/audio/stable-audio-2/text-to-audior   r   r   )r   r   r   'No audio file was received in response.)r   r   r   r    r   audio
ValueErrorr   r   r   r   r   )r   r   r@   r   rM   r   payloadr   s           r0   r   StabilityTextToAudio.execute  s     51-VS[nst$Ybhi1.
 
 !!FGG}}78H8HI[I[8\]^^
s   2BBABr)   N)r*   r+   r,   r-   rq   r   r   r   r   r   r   r   r.   r)   r/   r0   r   r   q  sf    P8
 8
t _# _s _c _ _UX _]_]j]j _ _r/   r   c                       \ rS rSrSr\S 5       r\S\S\S\R                  S\
S\
S	\
S
\S\R                  4S j5       rSrg)StabilityAudioToAudioi  z]Transforms existing audio samples into new high-quality compositions using text instructions.c                    [         R                  " SSS[        U R                  =(       d    S5      [         R                  R                  SS/S9[         R                  R                  SS	SS
9[         R                  R                  SSS9[         R                  R                  SSSSSSS	S9[         R                  R                  SSSSS[         R                  R                  S	SS	S9	[         R                  R                  SSSSSSS	S	S9[         R                  R                  SSSSS[         R                  R                  S S	S!9/[         R                  R                  5       /[         R                  R                  [         R                  R                   [         R                  R"                  /S	[         R$                  " S"S#9S$9	$ )%Nr   zStability AI Audio To Audior   r?   r   r   r   r@   Tr   r   -Audio must be between 6 and 190 seconds long.rD   r   r   rO   r   rc   rM   r   rN   r   r   r   r   r   r   r   r   ra   r`   zUParameter controls how much influence the audio parameter has on the generated audio.)rC   rR   rS   rT   rU   rD   rY   r   rd   rf   )r   rp   r   rq   rs   r   rr   r   ru   rv   rw   ry   sliderrz   r{   r|   r}   r~   r   r   s    r0   r   #StabilityAudioToAudio.define_schema  s   yy+61 !23/0   		D"Ew0_`V!   "!#!1!1!8!8+/B!  
 D!!  	 !#!1!1!8!8s!  	K/b ! 		..		++		##
 3}A
 A	
r/   r   r@   r   r   rM   r   r   r   c                 ^  #    [        USS9  [        USS5        [        X!XEXgS9n[        U [	        SSS9[
        US	S
[        U5      0S9I S h  vN n	U	R                  (       d  [        S5      e[        R                  " [        [        R                  " U	R                  5      5      5      $  N]7f)Nr   r      r   )r@   r   r   rM   r   r   z;/proxy/stability/v2beta/audio/stable-audio-2/audio-to-audior   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   rM   r   r   r   r   s
             r0   r   StabilityAudioToAudio.execute  s      	51q#..E
 %Zcij1..u56
 
 !!FGG}}78H8HI[I[8\]^^
s   AB-B+AB-r)   N)r*   r+   r,   r-   rq   r   r   r   r   r   r   r   r   r   r   r.   r)   r/   r0   r   r     s    gB
 B
H __!$_-2[[_DG_OR_[^_jo_	_ _r/   r   c                       \ rS rSrSr\S 5       r\S\S\S\R                  S\
S\
S	\
S
\
S\
S\R                  4S j5       rSrg)StabilityAudioInpainti  zATransforms part of existing audio sample using text instructions.c                    [         R                  " SSS[        U R                  =(       d    S5      [         R                  R                  SS/S9[         R                  R                  SS	SS
9[         R                  R                  SSS9[         R                  R                  SSSSSSS	S9[         R                  R                  SSSSS[         R                  R                  S	SS	S9	[         R                  R                  SSSSSSS	S	S9[         R                  R                  SSSSSS	S	S9[         R                  R                  S SSSSS	S	S9/[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                  /S	[         R                   " S!S"9S#9	$ )$Nr	  zStability AI Audio Inpaintr   r?   r   r   r   r@   Tr   r   r  r  r   r   rO   r   rc   rM   r   rN   r   r   r   r   r   r   r   
mask_start   )rC   rR   rS   rT   rY   rL   mask_endr   rd   rf   )r   rp   r   rq   rs   r   rr   r   ru   rv   rw   rz   r{   r|   r}   r~   r   r   s    r0   r   #StabilityAudioInpaint.define_schema   s   yy+51 !23/0   		D"Ew0_`V!   "!#!1!1!8!8+/B!  
 D!!  	  !!   !!  ]7r ! 		..		++		##
 3MI
 I	
r/   r   r@   r   r   rM   r   r  r  r   c	                   #    [        USS9  X::  a  [        SU SU S35      e[        USS5        [        UUUUUUUS9n	[	        U [        S	S
S9[        U	SS[        U5      0S9I S h  vN n
U
R                  (       d  [        S5      e[        R                  " [        [        R                  " U
R                  5      5      5      $  N]7f)Nr   r   zValue of mask_end(z$) should be greater then mask_start()r  r   )r@   r   r   rM   r   r  r  z4/proxy/stability/v2beta/audio/stable-audio-2/inpaintr   r   r   r   )endpointr   r   r   r   r   )r   r   r   r   r   r    r   r   r   r   r   r   r   r   )r   r   r@   r   r   rM   r   r  r  r   r   s              r0   r   StabilityAudioInpaint.executem  s      	51!1(;_`j_kklmnnq#..!
 % &\ekl1..u56
 
 !!FGG}}78H8HI[I[8\]^^
s   A&C(C)ACr)   N)r*   r+   r,   r-   rq   r   r   r   r   r   r   r   r   r   r.   r)   r/   r0   r	  r	    s    KJ
 J
X #_#_ #_ {{	#_
 #_ #_ #_ #_ #_ 
#_ #_r/   r	  c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)StabilityExtensioni  r   c                 ^   #    [         [        [        [        [        [
        [        [        /$ 7fr3   )r:   r   r   r   r   r   r   r	  )selfs    r0   get_node_list StabilityExtension.get_node_list  s)      **,($ !!	
 		
s   +-r)   N)r*   r+   r,   r-   r   listtyper   	ComfyNoder  r.   r)   r/   r0   r  r    s)    

T$r||*<%= 

 

r/   r  r   c                     #    [        5       $ 7fr3   )r  r)   r/   r0   comfy_entrypointr    s     s   )8inspectr   typingr   typing_extensionsr   comfy_api.latestr   r   r   comfy_api_nodes.apis.stabilityr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   comfy_api_nodes.utilr   r   r   r   r   r   r   r   r    r   r   ior!   enumr"   r   r$   r8   r  r:   r   r   r   r   r   r   r	  r  r  r)   r/   r0   <module>r&     s     & 6 6    "
 
 
    #t +9 +D-BLL D-NZ-R\\ Z-zd-r|| d-Nv-2<< v-r3-r|| 3-lK_2<< K_\[_BLL [_|t_BLL t_n
 
  2  r/   