
    +j\v              
       .   d dl Z d dlmZ d dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ de%de&d	e'fd
Z( G d d          Z)de*d	e)fdZ+	 d#de,e         de*de'd	edz  fdZ- G d dej.                  Z/ G d dej.                  Z0 G d dej.                  Z1 G d dej.                  Z2 G d dej.                  Z3 G d dej.                  Z4 G d  d!e          Z5d	e5fd"Z6dS )$    N)BytesIO)override)IOComfyExtensionInputTypes)Hunyuan3DViewImageInputGenerateTypeResultFile3DSmartTopologyRequestTaskFile3DInputTextureEditTaskRequestTo3DPartTaskRequestTo3DProTaskCreateResponseTo3DProTaskQueryRequestTo3DProTaskRequestTo3DProTaskResultResponseTo3DUVTaskRequest)ApiEndpointbytesio_to_image_tensordownload_url_to_bytesiodownload_url_to_file_3ddownload_url_to_image_tensor"downscale_image_tensor_by_max_sidepoll_opsync_opupload_3d_model_to_comfyapiupload_image_to_comfyapivalidate_image_dimensionsvalidate_stringstatusbodyreturnc                     | dk    oat          |t                    oLdt          |                    di                               di                               dd                    v S )Ni  RequestLimitExceededResponseErrorCode )
isinstancedictstrget)r!   r"   s     ?/home/wildlama/comfy/ComfyUI/comfy_api_nodes/nodes_hunyuan3d.py_is_tencent_rate_limitedr/   &   sh    # 	etT""	e"c$((:r*B*B*F*FwPR*S*S*W*WX^`b*c*c&d&dd    c                       e Zd ZdZ	 	 	 	 d	dej        dej        dz  dej        dz  dej        dz  dej        dz  f
dZdS )
ObjZipResultobjtexturemetallicnormal	roughnessNr4   r5   r6   r7   r8   c                 L    || _         || _        || _        || _        || _        d S Nr3   )selfr4   r5   r6   r7   r8   s         r.   __init__zObjZipResult.__init__1   s+      "r0   )NNNN)	__name__
__module____qualname__	__slots__r   File3Dr   Imager<    r0   r.   r2   r2   .   s        EI
 '+'+%)(,# #\# t## +$	#
 d"# ;%# # # # # #r0   r2   urlc           	        K   t                      }t          | |           d{V  |                    d           t          j        |          s9|                    d           t          t          j        |d                    S |                    d           d}i }t          j        |          5 }|	                                D ]}|
                                                    d          r|                    |          }At          fddD                       r                    d	d
          d         }t          t          |                    |                    d          }d}dddd                                D ]\  }	}
|                    |	          r|
} n|||<   	 ddd           n# 1 swxY w Y   |t#          d          t          t          j        t          |          d          |                    d          |                    d          |                    d          |                    d                    S )zThe Tencent API returns OBJ results as ZIP archives containing the .obj mesh, and texture images.

    When PBR is enabled, the ZIP may contain additional metallic, normal, and roughness maps
    identified by their filename suffixes.
    Nr   r4   )sourcefile_format)r4   z.objc              3   B   K   | ]}                     |          V  d S r:   )endswith).0extlowers     r.   	<genexpr>z/download_and_extract_obj_zip.<locals>.<genexpr>T   s/      hhSU^^C((hhhhhhr0   )z.pngz.jpgz.jpegz.bmpz.tiffz.webp.   RGB)moder5   r6   r7   r8   )	_metallic_normal
_roughnessz)ZIP archive does not contain an OBJ file.r3   )r   r   seekzipfile
is_zipfiler2   r   rA   ZipFilenamelistrL   rI   readanyrsplitr   items
ValueErrorr-   )rD   data	obj_bytestextureszfnamestemtensormatched_keysuffixkeyrL   s              @r.   download_and_extract_obj_zipri   @   s      99D
!#t
,
,,,,,,,,IIaLLLd## N		!De L L LMMMMIIaLLLI')H			 /"KKMM 	/ 	/DJJLLE~~f%% /GGDMM		hhhh4ghhhhh /||C++A.01G1GeTTT'!+'"-$ $ %''	 KFC
 }}V,, &) )/%!	// / / / / / / / / / / / / / /$ DEEEL	 2 2FFFY''j))||H%%,,{++   s   7C=GGGTresponse_objs	file_typeraise_if_not_foundc                     | D ]5}|j                                         |                                k    r|c S 6|rt          d| d          d S )N'z)' file type is not found in the response.)TyperL   r^   )rj   rk   rl   is       r.   get_file_from_responserq   l   sh       6<<>>Y__....HHH / SQYQQQRRR4r0   c                   ^    e Zd Zed             Zededededededej	        fd            Z
d	S )
TencentTextToModelNodec                    t          j        ddddt           j                            dddgd	          t           j                            d
ddd          t           j                            dddd          t           j                            dt           j                            dt           j                            dd          g          t           j                            dt           j                            dddg          t           j                            dd          g          t           j                            dg           g          t           j                            dd d d!t           j	        j
        dd"#          gt           j                            d$%          t           j                            d&%          t           j                            d'%          t           j                            d(%          gt           j        j        t           j        j        t           j        j        gddt          j        t          j        g d)*          d+,          -
  
        S ).Nrs   zHunyuan3D: Text to Modelpartner/3d/Tencent3Dmodel3.03.16The LowPoly option is unavailable for the `3.1` model.optionstooltippromptTr)   zSupports up to 1024 characters.	multilinedefaultr}   
face_count    ` r   minmaxgenerate_typeNormalpbrFr   LowPolypolygon_typetrianglequadrilateralr|   Geometryseedr   _Seed controls whether the node should re-run; results are non-deterministic regardless of seed.r   r   r   display_modecontrol_after_generater}   
model_filedisplay_nameGLBOBJtexture_imager   zgenerate_type.pbrr   )widgetsaw  
                (
                  $base := widgets.generate_type = "normal" ? 25 : widgets.generate_type = "lowpoly" ? 30 : 15;
                  $pbr := $lookup(widgets, "generate_type.pbr") ? 10 : 0;
                  $face := widgets.face_count != 500000 ? 10 : 0;
                  {"type":"usd","usd": ($base + $pbr + $face) * 0.02}
                )
                
depends_onexpr
node_idr   categoryessentials_categoryinputsoutputshiddenis_api_nodeis_output_nodeprice_badge)r   SchemaCombor   StringIntDynamicComboOptionBooleanNumberDisplaynumberOutput	File3DGLB	File3DOBJrB   Hiddenauth_token_comfy_orgapi_key_comfy_org	unique_id
PriceBadgePriceBadgeDependsclss    r.   define_schemaz$TencentTextToModelNode.define_schemay   s+   y,3) $"ENT   
 	D"Nopp\6tQQ%%#..x"*:J:J5Z_:J:`:`9abb..% "~
TcGd e e "
 0 0 0 F F  ..z2>>
 &   "!#!1!8+/H  	 	- D 	  l ;;###77###77_==	 	.	+	#
 /8l8l8lmmm
 
 
g>
 >
 >
 >	
r0   rw   r~   r   r   r   r#   c                   K   |}t          |ddd           |dk    r-|d                                         dk    rt          d          t          | t	          d	d
          t
          t          ||||d         |                    dd           |                    dd                     t                     d {V }|j	        r)t          d|j	        j
         d|j	        j                   |j        }t          | t	          dd
          t          |          t          d            d {V }	t!          |	j        dd          }
d }|
rt%          |
j                   d {V }t)          j        | dt-          t!          |	j        d          j        d|           d {V |r|j        nd |r|j        nd           S )Nr~   rO      
field_name
min_length
max_lengthry   r   lowpoly>The LowPoly option is currently unavailable for the 3.1 model./proxy/tencent/hunyuan/3d-proPOSTpathmethodr   r   )ModelPrompt	FaceCountGenerateType	EnablePBRPolygonTyperesponse_modelr_   is_rate_limitedTask creation failed with code : #/proxy/tencent/hunyuan/3d-pro/queryJobIdc                     | j         S r:   Statusrs    r.   <lambda>z0TencentTextToModelNode.execute.<locals>.<lambda>       qx r0   r_   r   status_extractorr4   Frl   .glbglbtask_id)r    rL   r^   r   r   r   r   r-   r/   r'   r(   Messager   r   r   r   rq   ResultFile3Dsri   Urlr   
NodeOutputr   r4   r5   )r   rw   r~   r   r   r   _responser   resultobj_file_response
obj_results               r.   executezTencentTextToModelNode.execute   s^      8dSSSSE>>mO<BBDD	QQ]^^^ <VLLL4#$*?;'++E488)--ndCC   5
 
 
 
 
 
 
 
 
 > 	pnx~?RnnV^VdVlnnooo.B6RRR(w7774//
 
 
 
 
 
 
 
 
 363Gchiii
 	S;<M<QRRRRRRRRJ})&v';UCCGX_         )2JNNd",6J$
 
 	
r0   N)r=   r>   r?   classmethodr   r,   intr
   r   r   r   rC   r0   r.   rs   rs   w   s        ?
 ?
 [?
B /
/
 /
 	/

 )/
 /
 
/
 /
 /
 [/
 /
 /
r0   rs   c                       e Zd Zed             Ze	 	 	 ddedej        dede	dedej        dz  d	ej        dz  d
ej        dz  de
j        fd            ZdS )TencentImageToModelNodec                 T   t          j        ddddt           j                            dddgd	          t           j                            d
          t           j                            dd          t           j                            dd          t           j                            dd          t           j                            dddd          t           j                            dt           j                            dt           j                            dd          g          t           j                            dt           j                            dddg          t           j                            dd          g          t           j                            dg           g          t           j                            d d!d!d"t           j	        j
        dd#$          gt           j                            d%&          t           j                            d'&          t           j                            d(&          t           j                            d)&          t           j                            d*&          t           j                            d+&          t           j                            d,&          gt           j        j        t           j        j        t           j        j        gddt          j        t          j        g d-g d./          d01          2
  
        S )3Nr   zHunyuan3D: Image(s) to Modelru   rv   rw   rx   ry   rz   r{   image
image_leftT)optionalimage_right
image_backr   r   r   r   r   r   r   r   Fr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   optional_metallicoptional_normaloptional_roughnessr   )r   r   r   )r   r   a3  
                (
                  $base := widgets.generate_type = "normal" ? 25 : widgets.generate_type = "lowpoly" ? 30 : 15;
                  $multiview := (
                    inputs.image_left.connected or inputs.image_right.connected or inputs.image_back.connected
                  ) ? 10 : 0;
                  $pbr := $lookup(widgets, "generate_type.pbr") ? 10 : 0;
                  $face := widgets.face_count != 500000 ? 10 : 0;
                  {"type":"usd","usd": ($base + $multiview + $pbr + $face) * 0.02}
                )
                r   r   )r   r   r   r   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s    r.   r   z%TencentImageToModelNode.define_schema   s   y-7) $"ENT   
 w''|d;;}t<<|d;;\6tQQ%%#..x"*:J:J5Z_:J:`:`9abb..% "~
TcGd e e "
 0 0 0 F F  ..z2>>
 &   "!#!1!8+/H  	 	3#J 	  l ;;###77###77_==-@AA->??-ABB 	.	+	#
 /PPPFFF  
  sJ
 J
 J
 J	
r0   Nrw   r   r   r   r   r   r   r   r#   c	                 0  K   |}	|dk    r-|d                                          dk    rt          d          t          |dd           g }
|||d                                D ]d\  }}|t          |dd           |
                    t          |t          | t          |d	          d
d           d {V                      et          | t          dd          t          t          |||d         t          | t          |d	          d
d           d {V |
r|
nd |                    dd           |                    dd                     t                     d {V }|j        r)t          d|j        j         d|j        j                   |j        }t%          | t          dd          t'          |          t(          d            d {V }t+          |j        dd          }|rt/          |j                   d {V }t3          j        | dt7          t+          |j        d          j        d|            d {V |j        |j        |j        |j        nt?          j         d!d!d!d"          |j!        |j!        nt?          j         d!d!d!d"          |j"        |j"        nt?          j         d!d!d!d"                    S t3          j        | dt7          t+          |j        d          j        d|            d {V d d d d d           S )#Nry   r   r   r      )	min_width
min_height)leftrightbacki$  )max_sidez
image/webpi]n)	mime_typetotal_pixels)ViewTypeViewImageUrlr   r   r   r   r   )r   r   r   ImageUrlMultiViewImagesr   r   r   r   r   r   r   c                     | j         S r:   r   r   s    r.   r   z1TencentImageToModelNode.execute.<locals>.<lambda>~  r   r0   r   r4   Fr   r   r   r   rO      )#rL   r^   r   r]   appendr	   r   r   r   r   r   r   r-   r/   r'   r(   r   r   r   r   r   rq   r   ri   r   r   r   r   r4   r5   r6   torchzerosr7   r8   )r   rw   r   r   r   r   r   r   r   r   multiview_imageskvr   r   r   r   r   s                     r.   r   zTencentImageToModelNode.execute>  sZ      E>>mO<BBDD	QQ]^^^!%33GGGG 
 
 %''		 	DAq
 y%a33GGGG##"'?:1tLLL".%/	( ( ( " " " " " "  
 
 
 
 !<VLLL4#$*?;76utLLL*!+	            5E N 0 0$'++E488)--ndCC   5%
 
 
 
 
 
 
 
 
( > 	pnx~?RnnV^VdVlnnooo.B6RRR(w7774//
 
 
 
 
 
 
 
 
 363Gchiii 	;<M<QRRRRRRRRJ=   -*6+?GGKU\c         "'1':'F
##EKXY[\^_abLcLc%/%6%B
!!TUWXZ[]^H_H_(2(<(H
$$ekZ[]^`acdNeNe
 
 
 })&v';UCCGX_         

 

 
	
r0   )NNN)r=   r>   r?   r   r   r,   r   rB   r   r
   r   r   r   rC   r0   r.   r   r      s        K
 K
 [K
Z  *.*.)-Y
 Y
Y
 {Y
 	Y

 )Y
 Y
 K$&Y
 [4'Y
 K$&Y
 
Y
 Y
 Y
 [Y
 Y
 Y
r0   r   c                   d    e Zd Zed             Zh dZedej        dede	j
        fd            ZdS )TencentModelTo3DUVNodec                 ~   t          j        ddddt           j                            dt           j        t           j        t           j        t           j        gd          t           j                            dd	d
dt           j	        j
        dd          gt           j                            d          t           j                            d          t           j                            d          gt           j        j        t           j        j        t           j        j        gdt          j        d          	  	        S )Nr  zHunyuan3D: Model to UVru   zgPerform UV unfolding on a 3D model to generate UV texture. Input model must have less than 30000 faces.model_3dz!Input 3D model (GLB, OBJ, or FBX)typesr}   r   rO   r   r   Tr   r   r   r   FBXuv_imagez{"type":"usd","usd":0.2}r   	r   r   r   descriptionr   r   r   r   r   )r   r   	MultiTyper   r   r   	File3DFBX	File3DAnyr   r   r   r   rB   r   r   r   r   r   r   s    r.   r   z$TencentModelTo3DUVNode.define_schema  s   y,1); ""<r|R\R? #  
 "!#!1!8+/H  	 	$ ###77###77Z88 	.	+	#
 +EFFFE#
 #
 #
 #	
r0   >   fbxr   r4   r  r   r#   c                   K   |}|j                                         }|| j        vr;t          d| dd                    t          | j                             d          t          | t          dd          t          t          t          |                                t          | ||           d {V           	          t          
           d {V }|j        r)t          d|j        j         d|j        j                   t#          | t          dd          t%          |j                  t(          d            d {V }t+          |j        dd          }|t/          |j                   d {V nt3          j        dddd          }t7          j        t;          t+          |j        d          j        d           d {V t;          t+          |j        d          j        d           d {V |          S )NUnsupported file format: 'z'. Supported formats: , rN   z/proxy/tencent/hunyuan/3d-uvr   r   ro   r   Filer   r   r   z"/proxy/tencent/hunyuan/3d-uv/queryr   c                     | j         S r:   r   r   s    r.   r   z0TencentModelTo3DUVNode.execute.<locals>.<lambda>  r   r0   r   r   Fr   rO   r  r4   r'  )formatrL   SUPPORTED_FORMATSr^   joinsortedr   r   r   r   r   upperr   r/   r'   r(   r   r   r   r   r   rq   r   r   r   r  r  r   r   r   )	r   r  r   r   rG   r   r   uv_image_filer   s	            r.   r   zTencentModelTo3DUVNode.execute  s      o++--c333R[ R R&*iis7L0M0M&N&NR R R   !;FKKK4"$$**,,9#xUUUUUUUU     5
 
 
 
 
 
 
 
 
 > 	pnx~?RnnV^VdVlnnoooA&QQQ(x~>>>4//
 
 
 
 
 
 
 
 
 /v/CZdijjj ( /}/@AAAAAAAAAQ1a(( 	
 })*@AUW\*]*]*achiiiiiiii)*@AUW\*]*]*achiiiiiiii
 
 	
r0   N)r=   r>   r?   r   r   r0  r   rA   r   r   r   r   rC   r0   r.   r  r    sz        $
 $
 [$
L .--+
,+
 +
 
	+
 +
 +
 [+
 +
 +
r0   r  c            	       `    e Zd Zed             Zedej        dedede	j
        fd            ZdS )Tencent3DTextureEditNodec                    t          j        ddddt           j                            dt           j        t           j        gd          t           j                            dd	d
d          t           j                            ddddt           j        j	        d	d          gt           j
                            d          t           j                            d          t           j                            d          gt           j        j        t           j        j        t           j        j        gd	t          j        d          	  	        S )Nr6  zHunyuan3D: 3D Texture Editru   zAAfter inputting the 3D model, perform 3D model texture redrawing.r  zA3D model in FBX format. Model should have less than 100000 faces.r  r~   Tr)   z@Describes texture editing. Supports up to 1024 UTF-8 characters.r   r   r   r   r   r   r   r   r   r   z{"type":"usd","usd": 0.6}r!  r"  )r   r   r$  r   r%  r&  r   r   r   r   r   r   r   rB   r   r   r   r   r   r   s    r.   r   z&Tencent3DTextureEditNode.define_schema  s8   y.5)[""<6_ #  
 	"^	     "!#!1!8+/H  	 	0 ###77###77_== 	.	+	#
 4  O*
 *
 *
 *	
r0   r  r~   r   r#   c                   K   |}|j                                         }|dk    rt          d| d          t          |ddd           t	          | ||           d {V }t          | t          dd	
          t          t          t          |
                                |          |d          t                     d {V }|j        r)t          d|j        j         d|j        j                   t          | t          dd	
          t!          |j                  t$          d            d {V }t'          j        t+          t-          |j        d          j        d           d {V t+          t-          |j        d          j        d           d {V t3          t-          |j        d          j                   d {V           S )Nr'  r)   '. Only FBX format is supported.r~   rO   r   r   z&/proxy/tencent/hunyuan/3d-texture-editr   r   r+  T)rA   r   r   r   r   r   z,/proxy/tencent/hunyuan/3d-texture-edit/queryr   c                     | j         S r:   r   r   s    r.   r   z2Tencent3DTextureEditNode.execute.<locals>.<lambda>E  r   r0   r   r   r4   r   )r/  rL   r^   r    r   r   r   r   r   r   r3  r/   r'   r(   r   r   r   r   r   r   r   r   rq   r   r   r   )	r   r  r~   r   r   rG   	model_urlr   r   s	            r.   r   z Tencent3DTextureEditNode.execute%  sB      o++--%g+ggghhh8dSSSS5c8[QQQQQQQQ	 EfUUU4'&K,=,=,?,?YOOO  
 5

 

 

 

 

 

 

 

 

 > 	pnx~?RnnV^VdVlnnoooKTZ[[[(x~>>>4//
 
 
 
 
 
 
 
 
 })*@AUW\*]*]*achiiiiiiii)*@AUW\*]*]*achiiiiiiii./EfFZ\k/l/l/pqqqqqqqq
 
 	
r0   N)r=   r>   r?   r   r   r   rA   r,   r   r   r   r   rC   r0   r.   r6  r6    sx        +
 +
 [+
Z %
,%
 %
 	%

 
%
 %
 %
 [%
 %
 %
r0   r6  c                   \    e Zd Zed             Zedej        dedej	        fd            Z
dS )Tencent3DPartNodec                    t          j        ddddt           j                            dt           j        t           j        gd          t           j                            dd	d	d
t           j        j        dd          gt           j        	                    d          gt           j
        j        t           j
        j        t           j
        j        gdt          j        d          	  	        S )Nr=  zHunyuan3D: 3D Partru   z[Automatically perform component identification and generation based on the model structure.r  z@3D model in FBX format. Model should have less than 30000 faces.r  r   r   r   Tr   r   r  r   z{"type":"usd","usd":0.6}r!  r"  )r   r   r$  r   r%  r&  r   r   r   r   r   r   r   r   r   r   s    r.   r   zTencent3DPartNode.define_schemaP  s    y'-)u""<6^ #  
 "!#!1!8+/H  	 	$ ###77 	.	+	#
 +EFFF? 
  
  
  	
r0   r  r   r#   c                   K   |}|j                                         }|dk    rt          d| d          t          | ||           d {V }t	          | t          dd          t          t          t          |	                                |                    t          	           d {V }|j        r)t          d
|j        j         d|j        j                   t          | t          dd          t          |j                  t"          d            d {V }t%          j        t)          t+          |j        d          j        d           d {V           S )Nr'  r)  r9  z/proxy/tencent/hunyuan/3d-partr   r   r+  r,  r   r   r   z$/proxy/tencent/hunyuan/3d-part/queryr   c                     | j         S r:   r   r   s    r.   r   z+Tencent3DPartNode.execute.<locals>.<lambda>  r   r0   r   )r/  rL   r^   r   r   r   r   r   r   r3  r/   r'   r(   r   r   r   r   r   r   r   r   rq   r   r   )r   r  r   r   rG   r;  r   r   s           r.   r   zTencent3DPartNode.executet  s      o++--%g+ggghhh5c8[QQQQQQQQ	 =fMMM4$$+*;*;*=*=9MMM   5
 
 
 
 
 
 
 
 
 > 	pnx~?RnnV^VdVlnnoooCFSSS(x~>>>4//
 
 
 
 
 
 
 
 
 })*@AUW\*]*]*achiiiiiiii
 
 	
r0   N)r=   r>   r?   r   r   r   rA   r   r   r   r   rC   r0   r.   r=  r=  N  sn        !
 !
 [!
F 
,
 
 
	
 
 
 [
 
 
r0   r=  c                   l    e Zd Zed             ZddhZedej        dedede	de
j        f
d	            Zd
S )TencentSmartTopologyNodec                 x   t          j        ddddt           j                            dt           j        t           j        t           j        gd          t           j                            dd	d
gd          t           j                            dg dd          t           j                            ddddt           j	        j
        dd          gt           j                            d          gt           j        j        t           j        j        t           j        j        gdt          j        d          	  	        S )NrB  zHunyuan3D: Smart Topologyru   znPerform smart retopology on a 3D model. Supports GLB/OBJ formats; max 200MB; recommended for high-poly models.r  zInput 3D model (GLB or OBJ)r  r   r   r   zSurface composition type.r{   
face_level)mediumhighlowzPolygon reduction level.r   r   r   Tr   r   r   r   z{"type":"usd","usd":1.0}r!  r"  )r   r   r$  r   r   r   r&  r   r   r   r   r   r   r   r   r   r   r   s    r.   r   z&TencentSmartTopologyNode.define_schema  s=   y.4)U ""<r|D9 #  
 "'97   
  5556   
 "!#!1!8+/H  	 	!8 ###77 	.	+	#
 +EFFFU+
 +
 +
 +	
r0   r   r4   r  r   rD  r   r#   c                   K   |}|j                                         }|| j        vr;t          d| dd                    t          | j                             d          t          | ||           d {V }t          | t          dd          t          t          t          |                                |          ||	          t          
           d {V }|j        r)t          d|j        j         d|j        j                   t#          | t          dd          t%          |j                  t(          d            d {V }	t+          j        t/          t1          |	j        d          j        d           d {V           S )Nr)  z'. Supported: r*  rN   z(/proxy/tencent/hunyuan/3d-smart-topologyr   r   r+  )rA   r   	FaceLevelr   zTask creation failed: [z] z./proxy/tencent/hunyuan/3d-smart-topology/queryr   c                     | j         S r:   r   r   s    r.   r   z2TencentSmartTopologyNode.execute.<locals>.<lambda>  r   r0   r   r4   )r/  rL   r0  r^   r1  r2  r   r   r   r   r   r   r3  r/   r'   r(   r   r   r   r   r   r   r   r   rq   r   r   )
r   r  r   rD  r   r   rG   r;  r   r   s
             r.   r   z TencentSmartTopologyNode.execute  s      o++--c333w[wwDIIV\]`]rVsVsLtLtwww   6c8[QQQQQQQQ	 GPVWWW4%&K,=,=,?,?YOOO($  
 5

 

 

 

 

 

 

 

 

 > 	hfx~7JffhnNdffgggMV\]]](x~>>>4//
 
 
 
 
 
 
 
 
 })*@AUW\*]*]*achiiiiiiii
 
 	
r0   N)r=   r>   r?   r   r   r0  r   rA   r,   r   r   r   r   rC   r0   r.   rB  rB    s        ,
 ,
 [,
\ $
,$
 $
 	$

 $
 
$
 $
 $
 [$
 $
 $
r0   rB  c                   L    e Zd Zedeeej                          fd            ZdS )TencentHunyuan3DExtensionr#   c                 R   K   t           t          t          t          t          t
          gS r:   )rs   r   r  r6  r=  rB  )r;   s    r.   get_node_listz'TencentHunyuan3DExtension.get_node_list  s$       ##"$$
 	
r0   N)	r=   r>   r?   r   listtyper   	ComfyNoderN  rC   r0   r.   rL  rL    sE        
T$r|*<%= 
 
 
 X
 
 
r0   rL  c                  "   K   t                      S r:   )rL  rC   r0   r.   comfy_entrypointrS    s      $&&&r0   )T)7rV   ior   r  typing_extensionsr   comfy_api.latestr   r   r   r   comfy_api_nodes.apis.hunyuan3dr	   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   r    r   objectboolr/   r2   r,   ri   rO  rq   rQ  rs   r   r  r6  r=  rB  rL  rS  rC   r0   r.   <module>r[     s           & & & & & & = = = = = = = = = = = =                                                       S  4    # # # # # # # #$)C )L ) ) ) )Z SW %25KOD   t
 t
 t
 t
 t
R\ t
 t
 t
nj
 j
 j
 j
 j
bl j
 j
 j
ZW
 W
 W
 W
 W
R\ W
 W
 W
tV
 V
 V
 V
 V
r| V
 V
 V
rE
 E
 E
 E
 E
 E
 E
 E
PX
 X
 X
 X
 X
r| X
 X
 X
v

 

 

 

 

 

 

 

' 9 ' ' ' ' ' 'r0   