
    +j                         S SK rS SKrS SKrS SKrS SKJrJr  S SKJ	r	  S r
 " S S\R                  5      r " S S\5      rS	\4S
 jrg)    N)IOComfyExtension)overridec           
      R   [         R                  R                  U SS9nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S	S5      n[        R
                  R                  [        R
                  R                  [        R
                  R                  [        R
                  R                  [        R
                  R                  [        R
                  R                  [        R
                  R                  [        R
                  R                  [        R
                  R                  S
.	nX8;  a(  [        R                   " SR#                  XXEXg5      5        g 0 n	U GH{  n
 [%        U
5      n/ nS GHA  nX+   U   nUR'                  5       n[)        S U5      n[+        [-        S U5      5      n/ nSnU[/        U5      :  Ga  UU   nU[/        U5      S-
  :H  nU[/        U5      S-
  :H  nUSR#                  U5         nUSR#                  U5         n[        R
                  R1                  UR2                  S   UR2                  S   5      nUR5                  UUS.5        UR7                  U5        US:w  a&  U(       a  U(       a  UR7                  X   " 5       5        U(       a  US-  nUU   nUSR#                  U5         nUSR#                  U5         n[        R
                  R9                  UR2                  S   5      nUR5                  UUS.5        UR7                  U5        U(       aA  U(       d:  U(       a  U(       a,  UR7                  [        R
                  R;                  SS95        US-  nU[/        U5      :  a  GM  UR7                  [        R
                  R<                  " U6 5        GMD     [        R
                  R?                  U5      X'   GM~      " S S5      nU" X5      $ !    GM  = f)NT)	safe_loadactivation_funclinearis_layer_normFuse_dropoutactivate_outputlast_layer_dropout)	r	   relu	leakyrelueluswishtanhsigmoidsoftsignmishz[Unsupported Hypernetwork format, if you report it I might implement it. {}   {} {} {} {} {})r      c                 $    U R                  S5      $ Nz.weight)endswithas    ?/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_hypernetwork.py<lambda>)load_hypernetwork_patch.<locals>.<lambda>.   s    qzz)'<    c                      U S [        S5      *  $ r   )lenr   s    r   r   r   /   s    +;S^O)<r   r   r      z	{}.weightz{}.bias)weightbiasg333333?)pc                   &    \ rS rSrS rS rS rSrg)3load_hypernetwork_patch.<locals>.hypernetwork_patchP   c                     Xl         X l        g Nhypernetstrength)selfr,   r-   s      r   __init__<load_hypernetwork_patch.<locals>.hypernetwork_patch.__init__Q   s    $M$Mr   c                     UR                   S   nXPR                  ;   aC  U R                  U   nX&S   " U5      U R                  -  -   nX6S   " U5      U R                  -  -   nXU4$ )Nr   r   )shaper,   r-   )r.   qkvextra_optionsdimhns          r   __call__<load_hypernetwork_patch.<locals>.hypernetwork_patch.__call__T   sb    ''"+Cmm#]]3'1a4==001a4==007Nr   c                     U R                   R                  5        H.  nU R                   U   R                  U5      U R                   U'   M0     U $ r*   )r,   keysto)r.   deviceds      r   r>   6load_hypernetwork_patch.<locals>.hypernetwork_patch.to]   s@    ]]'')#'==#3#6#6v#>a  *Kr   r+   N)__name__
__module____qualname____firstlineno__r/   r:   r>   __static_attributes__ r   r   hypernetwork_patchr'   P   s    	%		r   rH   ) comfyutilsload_torch_filegettorchnnIdentityReLU	LeakyReLUELU	HardswishTanhSigmoidSoftsignMishloggingerrorformatintr=   filterlistmapr!   Linearr3   load_state_dictappend	LayerNormDropout
Sequential
ModuleList)pathr-   sdr   r
   r   r   r   valid_activationoutr@   r8   outputindexattn_weightsr=   linearslayersilin_name
last_layerpenultimate_layer
lin_weightlin_biaslayerln_name	ln_weightln_biaslnrH   s                                 r   load_hypernetwork_patchrz   	   st   		$	$TT	$	:Bff.9OFF?E2M&&.Kff.6O 4e< ((##XX''xx||##88##HH%%
 .szz{  S`  o~  S  	T
C	a&C E75>L$$&D<dCG3<gFGGFAc'l""1:CL1$45
%&3w<!+;%<!)+*<*<X*FG
'	(8(8(BC
(8(8(;Z=M=Ma=PQ%%X&NOe$"h.&O&6&G&IJ FA%ajG ,[-?-?-H II*9+;+;G+DEG++IOOA,>?B&&)W'MNMM"%&1BFXehh&6&6&6&=>Q1 c'l"4 MM%((--v67G H 88&&v.W Z $ c,,y	s   P  P&c                   T    \ rS rSr\S 5       r\S\R                  4S j5       r\r	Sr
g)HypernetworkLoaderd   c                 J   [         R                  " SSS[         R                  R                  S5      [         R                  R                  S[
        R                  " S5      S9[         R                  R                  SS	S
SSS9/[         R                  R                  5       /S9$ )Nr|   zLoad Hypernetworkzmodel/loadersmodelhypernetwork_namehypernetworks)optionsr-   g      ?g      $g      $@g{Gz?)defaultminmaxstep)node_iddisplay_namecategoryinputsoutputs)	r   SchemaModelInputCombofolder_pathsget_filename_listFloatOutput)clss    r   define_schema HypernetworkLoader.define_schemae   s    yy(,$w'2L<Z<Z[j<klz3EtRVW !
 	
r   returnc                     [         R                  " SU5      nUR                  5       n[        XC5      nUb"  UR	                  U5        UR                  U5        [        R                  " U5      $ )Nr   )r   get_full_path_or_raiseclonerz   set_model_attn1_patchset_model_attn2_patchr   
NodeOutput)r   r   r   r-   hypernetwork_pathmodel_hypernetworkpatchs          r   executeHypernetworkLoader.executeu   s_    (??Qbc"[[]'(9D44U;44U;}}/00r   rG   N)rB   rC   rD   rE   classmethodr   r   r   r   load_hypernetworkrF   rG   r   r   r|   r|   d   s;    
 
 1BMM 1 1  r   r|   c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)HyperNetworkExtension   r   c                    #    [         /$ 7fr*   )r|   )r.   s    r   get_node_list#HyperNetworkExtension.get_node_list   s      
 	
s   
rG   N)rB   rC   rD   rE   r   r]   typer   	ComfyNoder   rF   rG   r   r   r   r      s)    
T$r||*<%= 
 
r   r   r   c                     #    [        5       $ 7fr*   )r   rG   r   r   comfy_entrypointr      s      ""s   )comfy.utilsrI   r   rM   rX   comfy_api.latestr   r   typing_extensionsr   rz   r   r|   r   r   rG   r   r   <module>r      sG        / &Y-v   <
N 
# 5 #r   