ó
    UShÔW  ã                   ó’  • 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	  S SK
rS SKrS SKr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rS SKJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S SK J!r!   " S S5      r"0 r#S	 r$ " S
 S5      r%S r&SS jr'S r(S r)0 S4S jr*S r+SS jr,SSSS0 4S jr-S r.S r/S r0g)é    N)Úcalc_cond_uncond_batch)ÚBatchedBrownianTree)Úforward_timestep_embedÚapply_control)Úpatch_all_precision)Úpatch_all_clipc                   ó*   • \ rS rSr      SS jrSrg)ÚPatchSettingsé   c                 óh   • Xl         X l        X0l        X@l        XPl        X`l        SU l        S U l        g )Nr   )Ú	sharpnessÚadm_scaler_endÚpositive_adm_scaleÚnegative_adm_scaleÚcontrolnet_softnessÚadaptive_cfgÚglobal_diffusion_progressÚ
eps_record)Úselfr   r   r   r   r   r   s          Ú1/home/gothic/public_html/Fooocus/modules/patch.pyÚ__init__ÚPatchSettings.__init__    s6   € ð #ŒØ,ÔØ"4ÔØ"4ÔØ#6Ô Ø(ÔØ)*ˆÔ&Øˆ�ó    )r   r   r   r   r   r   r   r   N)g       @g333333Ó?g      ø?gš™™™™™é?g      Ð?g      @)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__© r   r   r
   r
      s   † àØ #Ø$'Ø$'Ø%)Ø!÷r   r
   c                 ó€  • U GHÇ  nUS   nUS   nUS   nUS:w  a  X'-  n[        U[        5      (       a(  U R                  USS  US   R                  5       U5      4n[	        U5      S:X  a  SnO[	        U5      S:X  a
  US   nUS   nWS:X  aŸ  US   n	US:w  a‘  U	R
                  UR
                  :w  a1  [        SR                  X9R
                  UR
                  5      5        Má  X%[        R                  R                  R                  X’R                  UR                  5      -  -  nGM'  GM*  US:X  Ga  [        R                  R                  R                  US   UR                  [        R                  5      n
[        R                  R                  R                  US   UR                  [        R                  5      nUS   b  XVS   UR
                  S   -  -  nUS	   bð  [        R                  R                  R                  US	   UR                  [        R                  5      nUR
                  S   UR
                  S   UR
                  S   UR
                  S	   /n[        R                   " UR#                  SS5      R%                  SS
9UR#                  SS5      R%                  SS
95      R'                  U5      R#                  SS5      n X%[        R                   " U
R%                  SS
9UR%                  SS
95      -  R'                  UR
                  5      R)                  UR                  5      -  nGM<  US:X  Ga{  [        R                  R                  R                  US   UR                  [        R                  5      n	[        R                  R                  R                  US   UR                  [        R                  5      n[        R                  R                  R                  US   UR                  [        R                  5      nU	S-  UU-
  -  U-   n	US:w  a’  U	R
                  UR
                  :w  a2  [        SR                  X9R
                  UR
                  5      5        GMu  X%[        R                  R                  R                  X’R                  UR                  5      -  -  nGM»  GM¾  US:X  Ga‚  US   n	US   nUS	   nUS   nUS   nUS   nUS   nS nU	c©  UR
                  S   n[        R                   " [        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      5      n	OB[        R                  R                  R                  X’R                  [        R                  5      n	UGcŠ  UR
                  S   nUc›  [        R                   " [        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      5      nGO [        R,                  " S[        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      5      nOC[        R                  R                  R                  UUR                  [        R                  5      n[	        UR
                  5      S:X  a   U	R/                  S5      R/                  S5      n	US   b  Ub
  XVS   U-  -  n X%[        R0                  " U	U5      R'                  UR
                  5      R)                  UR                  5      -  -  nGMG  US:X  Gan  US   nUS   nUS   b  XVS   UR
                  S   -  -  nUS	   nUS   nUS   GbÄ  US   nUS   n[        R,                  " S[        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      5      n[        R,                  " S[        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      5      nGO2[        R                   " [        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      5      n[        R                   " [        R                  R                  R                  UUR                  [        R                  5      [        R                  R                  R                  UUR                  [        R                  5      5      n X%U-  U-  R'                  UR
                  5      R)                  UR                  5      -  nGM¼  US:X  Gaø  US   b  XVS   US   R
                  S   -  -  n[        R                  R                  R                  US   R%                  SS
9UR                  [        R                  5      n[        R                  R                  R                  US   R%                  SS
9UR                  [        R                  5      n [        R                  R                  R                  US   R%                  SS
9UR                  [        R                  5      n![        R                  R                  R                  US	   R%                  SS
9UR                  [        R                  5      n"U[        R                   " U"U!5      [        R                   " [        R                   " UR%                  SS
9U 5      U5      -   U-  R'                  UR
                  5      R)                  UR                  5      -  nGM»  [        SXƒ5        GMÊ     U$ ! [*         a  n[        SX>5         S nAGMë  S nAff = f! [*         a  n[        SX>5         S nAGM  S nAff = f! [*         a  n[        SX>5         S nAGM5  S nAff = f)Nr   é   é   ç      ð?Údiffg        z4WARNING SHAPE MISMATCH {} WEIGHT NOT MERGED {} != {}Úloraé   )Ú	start_dimÚERRORÚfooocusg     ào@z<WARNING SHAPE MISMATCH {} FOOOCUS WEIGHT NOT MERGED {} != {}Úlokré   é   é   é   zi j k l, j r, i p -> p r k lÚlohaÚglorazpatch type not recognized)Ú
isinstanceÚlistÚcalculate_weightÚcloneÚlenÚshapeÚprintÚformatÚldm_patchedÚmodulesÚmodel_managementÚcast_to_deviceÚdeviceÚdtypeÚtorchÚfloat32ÚmmÚ	transposeÚflattenÚreshapeÚtypeÚ	ExceptionÚeinsumÚ	unsqueezeÚkron)#r   ÚpatchesÚweightÚkeyÚpÚalphaÚvÚstrength_modelÚ
patch_typeÚw1Úmat1Úmat2Úmat3Úfinal_shapeÚeÚw_minÚw_maxÚw2Úw1_aÚw1_bÚw2_aÚw2_bÚt2ÚdimÚw1aÚw1bÚw2aÚw2bÚt1Úm1Úm2Úa1Úa2Úb1Úb2s#                                      r   Úcalculate_weight_patchedrl   4   sw  € ÜˆØ�!‘ˆØˆa‰DˆØ˜1™ˆà˜SÓ ØÑ$ˆFä�aœ×ÑØ×&Ñ& q¨¨ u¨a°©d¯j©j«l¸CÓ@ÐBˆAäˆq‹6�Q‹;Ø‰JÜ�‹V�q‹[Ø˜1™ˆJØ�!‘ˆAà˜ÓØ�1‘ˆBØ˜‹|Ø—8‘8˜vŸ|™|Ó+ÜÐP×WÑWÐX[×]eÑ]eÐgm×gsÑgsÓtÖuà¤k×&9Ñ&9×&JÑ&J×&YÑ&YÐZ\×^kÑ^kÐms×myÑmyÓ&zÑzÑz“Fò	 ð
 ˜6Ô!Ü×&Ñ&×7Ñ7×FÑFÀqÈÁtÈVÏ]É]Ô\a×\iÑ\iÓjˆDÜ×&Ñ&×7Ñ7×FÑFÀqÈÁtÈVÏ]É]Ô\a×\iÑ\iÓjˆDØ�‰tÑØ˜1™ §
¡
¨1¡Ñ-Ñ-�Ø�‰tÑÜ"×*Ñ*×;Ñ;×JÑJÈ1ÈQÉ4ÐQW×Q^ÑQ^Ô`e×`mÑ`mÓn�Ø#Ÿz™z¨!™}¨d¯j©j¸©m¸T¿Z¹ZÈ¹]ÈDÏJÉJÐWXÉMÐZ�Ü—x’x §¡¨q°!Ó 4× <Ñ <ÀqÐ <Ð IØ $§¡¨q°!Ó 4× <Ñ <ÀqÐ <Ð IóKßKRÉ7ÐS^ÓK_×`iÑ`iÐjkÐmnÓ`oð ð'Ø¤5§8¢8¨D¯L©LÀ1¨LÐ,EÀtÇ|Á|Ð^_À|ÐG`Ó#aÑa×jÑjØ—L‘Ló"ß"&¡$ v§|¡|Ó"4ñ5“ð ˜9Ô$Ü×$Ñ$×5Ñ5×DÑDÀQÀqÁTÈ6Ï=É=ÔZ_×ZgÑZgÓhˆBÜ×'Ñ'×8Ñ8×GÑGÈÈ!ÉÈfÏmÉmÔ]b×]jÑ]jÓkˆEÜ×'Ñ'×8Ñ8×GÑGÈÈ!ÉÈfÏmÉmÔ]b×]jÑ]jÓkˆEØ�u‘* ¨¡Ñ/°%Ñ7ˆBØ˜‹|Ø—8‘8˜vŸ|™|Ó+ÜÐX×_Ñ_Ð`c×emÑemÐou×o{Ño{Ó|×}à¤k×&9Ñ&9×&JÑ&J×&YÑ&YÐZ\×^kÑ^kÐms×myÑmyÓ&zÑzÑz“Fò	 ð
 ˜6Ô!Ø�1‘ˆBØ�1‘ˆBØ�Q‘4ˆDØ�Q‘4ˆDØ�Q‘4ˆDØ�Q‘4ˆDØ�1‘ˆBØˆCà‰zØ—j‘j ‘m�Ü—X’Xœk×1Ñ1×BÑB×QÑQÐRVÐX^×XeÑXeÔgl×gtÑgtÓuÜ)×1Ñ1×BÑB×QÑQÐRVÐX^×XeÑXeÔgl×gtÑgtÓuów‘ô !×(Ñ(×9Ñ9×HÑHÈÏ]É]Ô\a×\iÑ\iÓj�àŠzØ—j‘j ‘m�Ø‘:ÜŸš¤+×"5Ñ"5×"FÑ"F×"UÑ"UÐVZÐ\b×\iÑ\iÔkp×kxÑkxÓ"yÜ"-×"5Ñ"5×"FÑ"F×"UÑ"UÐVZÐ\b×\iÑ\iÔkp×kxÑkxÓ"yó{’Bô ŸšÐ&DÜ&1×&9Ñ&9×&JÑ&J×&YÑ&YÐZ\Ð^d×^kÑ^kÔmr×mzÑmzÓ&{Ü&1×&9Ñ&9×&JÑ&J×&YÑ&YÐZ^Ð`f×`mÑ`mÔot×o|Ño|Ó&}Ü&1×&9Ñ&9×&JÑ&J×&YÑ&YÐZ^Ð`f×`mÑ`mÔot×o|Ño|Ó&}ó‘Bô
 !×(Ñ(×9Ñ9×HÑHÈÈVÏ]É]Ô\a×\iÑ\iÓj�ä�2—8‘8‹} Ó!Ø—\‘\ !“_×.Ñ.¨qÓ1�Ø�‰tÑ C¡OØ˜1™ ™Ñ#�ð'Ø¤%§*¢*¨R°Ó"4×"<Ñ"<¸V¿\¹\Ó"J×"OÑ"OÐPV×P\ÑP\Ó"]Ñ]Ñ]“ð ˜6Ô!Ø�A‘$ˆCØ�A‘$ˆCØ�‰tÑØ˜1™ §	¡	¨!¡Ñ,Ñ,�Ø�A‘$ˆCØ�A‘$ˆCØ�‰tÒØ�q‘T�Ø�q‘T�Ü—\’\Ð"@Ü"-×"5Ñ"5×"FÑ"F×"UÑ"UÐVXÐZ`×ZgÑZgÔin×ivÑivÓ"wÜ"-×"5Ñ"5×"FÑ"F×"UÑ"UÐVYÐ[a×[hÑ[hÔjo×jwÑjwÓ"xÜ"-×"5Ñ"5×"FÑ"F×"UÑ"UÐVYÐ[a×[hÑ[hÔjo×jwÑjwÓ"xóz�ô
 —\’\Ð"@Ü"-×"5Ñ"5×"FÑ"F×"UÑ"UÐVXÐZ`×ZgÑZgÔin×ivÑivÓ"wÜ"-×"5Ñ"5×"FÑ"F×"UÑ"UÐVYÐ[a×[hÑ[hÔjo×jwÑjwÓ"xÜ"-×"5Ñ"5×"FÑ"F×"UÑ"UÐVYÐ[a×[hÑ[hÔjo×jwÑjwÓ"xóz’ô
 —X’Xœk×1Ñ1×BÑB×QÑQÐRUÐW]×WdÑWdÔfk×fsÑfsÓtÜ)×1Ñ1×BÑB×QÑQÐRUÐW]×WdÑWdÔfk×fsÑfsÓtóv�ä—X’Xœk×1Ñ1×BÑB×QÑQÐRUÐW]×WdÑWdÔfk×fsÑfsÓtÜ)×1Ñ1×BÑB×QÑQÐRUÐW]×WdÑWdÔfk×fsÑfsÓtóv�ð'Ø 2™:¨™?×3Ñ3°F·L±LÓA×FÑFÀvÇ|Á|ÓTÑT“ð ˜7Ô"Ø�‰tÑØ˜1™  !¡§
¡
¨1¡Ñ-Ñ-�ä×$Ñ$×5Ñ5×DÑDÀQÀqÁTÇ\Á\Ð\]À\ÐE^Ð`f×`mÑ`mÔot×o|Ño|Ó}ˆBÜ×$Ñ$×5Ñ5×DÑDÀQÀqÁTÇ\Á\Ð\]À\ÐE^Ð`f×`mÑ`mÔot×o|Ño|Ó}ˆBÜ×$Ñ$×5Ñ5×DÑDÀQÀqÁTÇ\Á\Ð\]À\ÐE^Ð`f×`mÑ`mÔot×o|Ño|Ó}ˆBÜ×$Ñ$×5Ñ5×DÑDÀQÀqÁTÇ\Á\Ð\]À\ÐE^Ð`f×`mÑ`mÔot×o|Ño|Ó}ˆBàœŸš  RÓ(¬5¯8ª8´E·H²H¸V¿^¹^ÐVW¸^Ð=XÐZ\Ó4]Ð_aÓ+bÑbÐfkÑk×tÑtÐu{÷  vBñ  vBó  C÷  Hñ  Hð  IO÷  IUñ  IUó  Vñ  V‹FäÐ-¨z×?ñA ðD €Møô{ ó 'Ü�g˜s×&Ó&ûð'ûôb ó 'Ü�g˜s×&Ó&ûð'ûô: ó 'Ü�g˜s×&Ó&ûð'úsJ   ËA(wß9Aw6î <x÷
w3÷w.÷.w3÷6
xø xøxø
x=ø%x8ø8x=c                   óN   • \ rS rSrSrSr\SS S4S j5       rS r\S 5       r	Sr
g)	ÚBrownianTreeNoiseSamplerPatchedéº   Nc                 ó   • U $ ©Nr   )Úxs    r   Ú<lambda>Ú(BrownianTreeNoiseSamplerPatched.<lambda>¿   s   € ÉAr   Fc                 ó  • [         R                  R                  R                  (       a  SnU" [        R
                  " U5      5      U" [        R
                  " U5      5      pvU[        l        [        XXsUS9[        l	        g )NT)Úcpu)
r9   r:   r;   Údirectml_enabledr?   Ú	as_tensorrn   Ú	transformr   Útree)rr   Ú	sigma_minÚ	sigma_maxÚseedry   rv   Út0re   s           r   Úglobal_initÚ+BrownianTreeNoiseSamplerPatched.global_init¾   s\   € ä×Ñ×/Ñ/×@×@ØˆCáœ5Ÿ?š?¨9Ó5Ó6¹	Ä%Ç/Â/ÐR[ÓB\Ó8]ˆBà4=Ô'Ô1Ü/BÀ1È"ÐX[Ñ/\Ô'Õ,r   c                 ó   • g rq   r   )r   ÚargsÚkwargss      r   r   Ú(BrownianTreeNoiseSamplerPatched.__init__È   s   € Ør   c                 ó  • [         R                  n[         R                  nU" [        R                  " U 5      5      U" [        R                  " U5      5      pTU" XE5      XT-
  R                  5       R                  5       -  $ rq   )rn   ry   rz   r?   rx   ÚabsÚsqrt)ÚsigmaÚ
sigma_nextry   rz   r~   re   s         r   Ú__call__Ú(BrownianTreeNoiseSamplerPatched.__call__Ë   s[   € ä3×=Ñ=ˆ	Ü.×3Ñ3ˆáœ5Ÿ?š?¨5Ó1Ó2±I¼e¿oºoÈjÓ>YÓ4ZˆBÙ�B‹|˜r™wŸm™m›o×2Ñ2Ó4Ñ4Ð4r   r   )r   r   r   r   ry   rz   Ústaticmethodr   r   rŠ   r   r   r   r   rn   rn   º   sA   † Ø€IØ€DàØ26Á+ÐSXó ]ó ð]òð ñ5ó ó5r   rn   c                 óê   • [         R                  " 5       n[        [        U   R                  5      n[        U5      nXX-
  -  -   nU[        U   R                  :”  a  XX-
  -  -   nXs-  USU-
  -  -   $ U$ )Nr!   )ÚosÚgetpidÚfloatÚpatch_settingsr   )	ÚuncondÚcondÚ	cfg_scaleÚtÚpidÚ	mimic_cfgÚreal_cfgÚreal_epsÚmimicked_epss	            r   Úcompute_cfgr›   Ô   sx   € Ü
�)Š)‹+€CÜ”n SÑ)×6Ñ6Ó7€IÜ�YÓ€Hà D¡MÑ2Ñ2€Hà”> #Ñ&×3Ñ3Ó3Ø¨T©]Ñ ;Ñ;ˆØ‰|˜l¨a°!©eÑ4Ñ4Ð4àˆr   c                 ó�  • [         R                  " 5       n[        R                  " US5      (       a_  UR	                  SS5      (       dH  [        XS XU5      S   n	[        U   R                  b!  X-
  U-  R                  5       [        U   l        U	$ [        XX1X&5      u  p«X-
  nX-
  nS[        U   R                  -  [        U   R                  -  n[        R                  " XÊS9nXþ-  USU-
  -  -   n[        UUU[        U   R                  S9n[        U   R                  b  UU-  R                  5       [        U   l        UU-
  $ )Nr#   Údisable_cfg1_optimizationFr   gü©ñÒMbP?)rr   Úg)r’   r“   r”   r•   )rŽ   r�   ÚmathÚiscloseÚgetr   r‘   r   rv   r   r   ÚanisotropicÚadaptive_anisotropic_filterr›   )Úmodelrr   Útimestepr’   r“   Ú
cond_scaleÚmodel_optionsr}   r–   Úfinal_x0Úpositive_x0Únegative_x0Úpositive_epsÚnegative_epsrN   Úpositive_eps_degradedÚpositive_eps_degraded_weightedÚ	final_epss                     r   Úpatched_sampling_functionr°   â   sB  € Ü
�)Š)‹+€Cä‡|‚|�J ×$Ñ$¨]×->Ñ->Ð?ZÐ\a×-bÑ-bÜ)¨%°t¸QÈ-ÓXÐYZÑ[ˆä˜#Ñ×)Ñ)Ñ5Ø/0©|¸xÑ.G×-LÑ-LÓ-NŒN˜3ÑÔ*àˆä5°eÀ6ÈhÓfÑ€Kà‘?€LØ‘?€Là”N 3Ñ'×1Ñ1Ñ1´NÀ3Ñ4G×4aÑ4aÑa€Eä'×CÒCÀlÑbÐØ%:Ñ%BÀ\ÐUXÐ[`ÑU`ÑEaÑ%aÐ"ä <Ð6TØ&0´NÀ3Ñ4G×4aÑ4añc€Iô �cÑ×%Ñ%Ñ1Ø*3°hÑ*>×)CÑ)CÓ)EŒ�sÑÔ&àˆy‰=Ðr   c                 ó\   • [        U 5      nUS-  n[        U5      n[        U5      nUS-  nU$ )Ng      P@é@   )r�   ÚroundÚint)rr   Úhs     r   Úround_to_64r¶      s4   € Üˆa‹€AØ	ˆD‰€AÜˆa‹€AÜˆA‹€AØ	ˆB‰€AØ€Hr   c                 ó$  ^ ^• [         R                  R                  R                  UT R                  5      mUR                  SS5      nUR                  SS5      nUnUn[        R                  " 5       nUR                  SS5      S:X  a?  [        U5      [        U   R                  -  n[        U5      [        U   R                  -  nOTUR                  SS5      S:X  a>  [        U5      [        U   R                  -  n[        U5      [        U   R                  -  nUU 4S jn[        U5      [        U5      p2[        U5      [        U5      pTU" X2S	S	XT/5      nU" XTS	S	XT/5      n	TR                  U5      m[        R                   " TUTU	4S
S9n
U
$ )NÚwidthi   ÚheightÚprompt_typeÚ ÚnegativeÚpositivec                 óì   >• TR                  [        R                  " U [        R                  S95      n[        R                  " U5      R                  SS9R                  TR                  S   S5      nU$ )N)r>   r   ©r`   r!   )Úembedderr?   Útensorr@   rC   rH   Úrepeatr6   )Únumber_listrµ   Úclip_pooledr   s     €€r   rÀ   Ú)sdxl_encode_adm_patched.<locals>.embedder  sY   ø€ Ø�M‰Mœ%Ÿ,š, {¼%¿-¹-ÑHÓIˆÜ�MŠM˜!Ó×&Ñ&¨1Ð&Ð-×4Ñ4°[×5FÑ5FÀqÑ5IÈ1ÓMˆØˆr   r   r!   r¿   )r9   r:   Ú
model_baseÚsdxl_pooledÚnoise_augmentorr¡   rŽ   r�   r�   r‘   r   r   r´   r¶   Útor?   Úcat)r   rƒ   r¸   r¹   Útarget_widthÚtarget_heightr–   rÀ   Úadm_emphasizedÚadm_consistentÚ	final_admrÄ   s   `          @r   Úsdxl_encode_adm_patchedrÐ   	  sa  ù€ Ü×%Ñ%×0Ñ0×<Ñ<¸VÀT×EYÑEYÓZ€KØ�J‰J�w Ó%€EØ�Z‰Z˜ $Ó'€FØ€LØ€MÜ
�)Š)‹+€Cà‡z�z�- Ó$¨
Ó2Ü�e“œ~¨cÑ2×EÑEÑEˆÜ�v“¤°Ñ!4×!GÑ!GÑG‰Ø	�‰�M 2Ó	&¨*Ó	4Ü�e“œ~¨cÑ2×EÑEÑEˆÜ�v“¤°Ñ!4×!GÑ!GÑGˆöô
 ˜“J¤ F£ˆ6Ü"-¨lÓ";¼[ÈÓ=W�-á˜v¨a°°MÐPÓQ€NÙ˜}¸A¸qÀ-Ð^Ó_€Nà—.‘. Ó0€KÜ—	’	˜;¨¸À^ÐTÐZ[Ñ\€IàÐr   c	           
      óH  • [         R                  Gb{  U R                  R                  R                  n	U	" [         R                  R                  5      R                  U5      n
[         R                  R                  R                  U5      n[        U SS 5      c<  [        R                  " SS9R                  US-   [        R                  -  5      U l        UR                  UR                  S   /S/[!        UR                  5      S-
  -  -   5      n[        R"                  " UR%                  5       UR&                  U R                  SS9R                  U5      U-  nX-  X­-   SU-
  -  -   nU R                  XUUUUUS9nXë-  U
SU-
  -  -   nU$ U R                  XUUUUUS9nU$ )	NÚenergy_generatorrv   )r=   r!   r   )r>   Ú	generatorr=   r#   )r“   r’   r¦   r§   r}   )Úinpaint_workerÚcurrent_taskÚinner_modelÚprocess_latent_inÚlatentrÉ   Úlatent_maskÚgetattrr?   Ú	GeneratorÚmanual_seedÚ	constantsÚMAX_SEEDrÒ   rD   r6   r5   ÚrandnÚsizer>   )r   rr   rˆ   r’   r“   r¦   Údenoise_maskr§   r}   Úlatent_processorÚinpaint_latentÚinpaint_maskÚenergy_sigmaÚcurrent_energyÚouts                  r   Ú!patched_KSamplerX0Inpaint_forwardrè   )  sŸ  € Ü×"Ñ"Ò.Ø×+Ñ+×7Ñ7×IÑIÐÙ)¬.×*EÑ*E×*LÑ*LÓM×PÑPÐQRÓSˆÜ%×2Ñ2×>Ñ>×AÑAÀ!ÓDˆä�4Ð+¨TÓ2Ñ:ä$)§O¢O¸5Ñ$A×$MÑ$MÈtÐVWÉxÔ[d×[mÑ[mÑNmÓ$nˆDÔ!à—}‘} e§k¡k°!¡nÐ%5¸¸¼sÀ1Ç7Á7»|ÈaÑ?OÑ8PÑ%PÓQˆÜŸšØ�F‰F‹H˜AŸG™G¨t×/DÑ/DÈUñTßTVÑTVÐWXÓTYÐ\hñiˆàÑ Ñ ?ÀCÈ,ÑDVÑWÑWˆà×Ñ˜qØ$(Ø&,Ø*4Ø-:Ø$(ð ð *ˆð Ñ  >°S¸<Ñ5GÑ#HÑHˆð €Jð ×Ñ˜qØ$(Ø&,Ø*4Ø-:Ø$(ð ð *ˆð €Jr   c                 óÀ  • [        U [        R                  5      (       a¾  [        U R	                  5       5      S:X  a¡  [        U R
                  S   5      S:X  a…  USS[        [        [        R                  " 5          R                  5      -
  -  :„  R                  U 5      S   nU SS S24   R                  5       nU SSS 24   R                  5       nX2-  USU-
  -  -   $ U $ )	Nr"   r!   i   ç     8�@r#   ).N.i   )r1   r?   ÚTensorr´   r`   r6   r�   r‘   rŽ   r�   r   rÉ   r4   )ÚyÚ	timestepsÚy_maskÚ
y_with_admÚy_without_adms        r   Ú	timed_admrñ   J  sÂ   € Ü�!”U—\‘\×"Ñ"¤s¨1¯5©5«7£|°qÓ'8¼SÀÇÁÈÁ»_ÐPTÓ=TØ˜e s¬U´>Ä"Ç)Â)Ã+Ñ3N×3]Ñ3]Ó-^Ñ'^Ñ_Ñ_×cÑcÐdeÓfÐgpÑqˆØ�s˜E˜T˜E�z‘]×(Ñ(Ó*ˆ
Ø˜#˜t™u˜*™×+Ñ+Ó-ˆØÑ" ]°c¸F±lÑ%CÑCÐCØ€Hr   c                 ó²  • [         R                  R                  R                  R                  R                  X0R                  SS9R                  UR                  5      nU R                  U5      n[        R                  " 5       n	U R                  X(U5      n
[        XS5      n/ n/ nU R                  b5  UR                  S   UR                  S   :X  d   eX€R!                  U5      -   nUn[#        U R$                  U R&                  5       H9  u  pïU
b  U" XØU5      nXÚ-  nS n
O	U" XØU5      nUR)                  U" XØU5      5        M;     U R+                  XØU5      nUR)                  U R-                  XØU5      5        [.        U	   R0                  S:”  aE  [3        S5       H6  nS[5        U5      S-  -
  nUU   S[.        U	   R0                  U-  -
  -  UU'   M8     U$ )NF©Úrepeat_onlyr   é
   r#   g      "@)r9   Úldmr:   ÚdiffusionmodulesÚopenaimodelÚtimestep_embeddingÚmodel_channelsrÉ   r>   Ú
time_embedrŽ   r�   Úinput_hint_blockrñ   Únum_classesr6   Ú	label_embÚzipÚinput_blocksÚ
zero_convsÚappendÚmiddle_blockÚmiddle_block_outr‘   r   Úranger�   )r   rr   Úhintrí   Úcontextrì   rƒ   Út_embÚembr–   Úguided_hintÚoutsÚhsrµ   ÚmoduleÚ	zero_convÚiÚks                     r   Úpatched_cldm_forwardr  S  sÎ  € Ü�O‰O×#Ñ#×4Ñ4×@Ñ@×SÑSÐT]×_rÑ_rð  AFÐSð  G÷  Jñ  Jð  KL÷  KRñ  KRó  S€EØ
�/‰/˜%Ó
 €CÜ
�)Š)‹+€Cà×'Ñ'¨°7Ó;€Kä�!Ó€Aà€Dà	€BØ×ÑÑ#Ø�w‰w�q‰z˜QŸW™W Q™ZÓ'Ð'Ð'Ø—N‘N 1Ó%Ñ%ˆà	€AÜ  ×!2Ñ!2°D·O±OÖDÑˆØÑ"Ù�q˜wÓ'ˆAØÑˆAØ‰Ká�q˜wÓ'ˆAØ�‰‘I˜a gÓ.Ö/ñ Eð 	×Ñ˜! 'Ó*€AØ‡K�K�×%Ñ% a¨gÓ6Ô7ä�cÑ×.Ñ.°Ó2Ü�r–ˆAØ”e˜A“h ‘nÑ$ˆAØ˜1‘g ¤~°cÑ':×'NÑ'NÐQRÑ'RÑ!RÑSˆD�‹Gñ ð €Kr   c                 ó  • SUR                  U5      S-  -
  U l        [        U R                  R                  5       R	                  5       R                  5       R                  5       S   5      [        [        R                  " 5          l
        [        XB5      n[        UR                  5      US'   SUS'   UR                  S0 5      nUR                  SU R                  5      n	UR                  SU R                   5      n
UR                  S	S 5      nUS LU R"                  S L:X  d   S
5       e/ n[$        R&                  R(                  R*                  R,                  R/                  X R0                  SS9R                  UR2                  5      nU R5                  U5      nU R"                  b5  UR                  S   UR                  S   :X  d   eXàR7                  U5      -   nUn[9        U R:                  5       Hq  u  nnSU4US'   [=        UXþX6X¹U
S9n[?        XõS5      nSU;   a  US   nU H  nU" Xö5      nM     URA                  U5        SU;   d  M[  US   nU H  nU" Xö5      nM     Ms     SUS'   [=        U RB                  XþX6X¹U
S9n[?        XõS5      n[9        U RD                  5       H’  u  nnSU4US'   URG                  5       n[?        UUS5      nSU;   a  US   nU H  nU" UUU5      u  nnM     [H        RJ                  " UU/SS9nA[M        U5      S:”  a  US   R                  nOS n[=        UXþX6UX¹U
S9	nM”     URO                  UR2                  5      nU RP                  (       a  U RS                  U5      $ U RU                  U5      $ )Nr#   rê   r   Úoriginal_shapeÚtransformer_indexrJ   Únum_video_framesÚimage_only_indicatorÚtime_contextz<must specify y if and only if the model is class-conditionalFró   ÚinputÚblock)r  r  r  Úinput_block_patchÚinput_block_patch_after_skip)Úmiddler   r  ÚoutputÚoutput_block_patchr!   r¿   éÿÿÿÿ)+rÉ   Úcurrent_stepr�   Údetachrv   ÚnumpyÚtolistr‘   rŽ   r�   r   rñ   r2   r6   r¡   Údefault_num_video_framesÚdefault_image_only_indicatorrý   r9   rö   r:   r÷   rø   rù   rú   r>   rû   rþ   Ú	enumerater   r   r   r  r  Úoutput_blocksÚpopr?   rÊ   r5   rE   Úpredict_codebook_idsÚid_predictorrç   )r   rr   rí   r  rì   ÚcontrolÚtransformer_optionsrƒ   Útransformer_patchesr  r  r  r  r  r	  rµ   Úidr  ÚpatchrM   ÚhspÚoutput_shapes                         r   Úpatched_unet_forwardr2  x  s¬  € Ø˜iŸl™l¨1›o°Ñ5Ñ5€DÔÜ<AÀ$×BSÑBS×BZÑBZÓB\×B`ÑB`ÓBb×BhÑBhÓBj×BqÑBqÓBsÐtuÑBvÓ<w„N”2—9’9“;ÑÔ9ä�!Ó€Aä,0°·±«MÐÐ(Ñ)Ø/0ÐÐ+Ñ,Ø-×1Ñ1°)¸RÓ@Ðà—z‘zÐ"4°d×6SÑ6SÓTÐØ!Ÿ:™:Ð&<¸d×>_Ñ>_Ó`ÐØ—:‘:˜n¨dÓ3€Là�TˆMØ×Ñ DÐ(óð FàEóFð ð 
€BÜ�O‰O×#Ñ#×4Ñ4×@Ñ@×SÑSÐT]×_rÑ_rð  AFÐSð  G÷  Jñ  Jð  KL÷  KRñ  KRó  S€EØ
�/‰/˜%Ó
 €Cà×ÑÑ#Ø�w‰w�q‰z˜QŸW™W Q™ZÓ'Ð'Ð'Ø—N‘N 1Ó%Ñ%ˆà	€AÜ × 1Ñ 1Ö2‰
ˆˆFØ(/° }Ð˜GÑ$Ü" 6¨1°7Ð^jð  eyñ  zˆÜ˜! gÓ.ˆØÐ"5Ó5Ø'Ð(;Ñ<ˆEÛ�Ù�aÓ-’ñ ð 	�	‰	�!ŒØ)Ð-@Õ@Ø'Ð(FÑGˆEÛ�Ù�aÓ-’ó ñ 3ð $1Ð˜Ñ Ü˜t×0Ñ0°!¸'Ðeqð  l@ñ  	A€AÜ�a (Ó+€Aä × 2Ñ 2Ö3‰
ˆˆFØ(0°" ~Ð˜GÑ$Ø�f‰f‹hˆÜ˜C ¨(Ó3ˆàÐ#6Ó6Ø'Ð(<Ñ=ˆEÛ�Ù˜1˜cÐ#6Ó7‘�’3ñ ô �IŠI�q˜#�h AÑ&ˆØÜˆr‹7�Q‹;Ø˜b™6Ÿ<™<‰LàˆLÜ" 6¨1°7ÐQ]Ðlxð  sGñ  HŠñ! 4ð" 	
�‰ˆq�w‰w‹€AØ× × Ø× Ñ  Ó#Ð#à�x‰x˜‹{Ðr   c                  óà   • [         R                  " 5       n[        R                  R                  R
                  " U 0 UD6n[         R                  " 5       U-
  nUS:”  a  [        SUS S35        U$ )Ngš™™™™™¹?z5[Fooocus Model Management] Moving model(s) has taken z.2fz seconds)ÚtimeÚperf_counterr9   r:   r;   Úload_models_gpu_originr7   )r‚   rƒ   Úexecution_start_timerì   Úmoving_times        r   Úpatched_load_models_gpur9  ½  sj   € Ü×,Ò,Ó.ÐÜ×Ñ×,Ñ,×CÒCÀTÐTÈVÑT€AÜ×#Ò#Ó%Ð(<Ñ<€KØ�SÓÜÐEÀkÐRUÐEVÐV^Ð_Ô`Ø€Hr   c                 ó”   ^• US-   n[        X5      (       d  [        X[        X5      5        [        X5      mU4S jn[        XU5        g )NÚ_originc                  ó˜  >• S n T" U 0 UD6nU$ ! [          Ga/  nS n[        U5      S-   n[        U 5      [        UR                  5       5      -    Hæ  n[	        U[        5      (       d  M  [
        R                  R                  U5      (       d  M@  USU S3-  nUS-   n[
        R                  R                  U5      (       a  [
        R                  " U5        [
        R                  " XV5        [
        R                  R                  U5      (       a  [
        R                  " U5        USU S3-  nUS-  nMè     [        U5      eS nAff = f)NÚ
zFile corrupted: z 
z
.corruptedz0Fooocus has tried to move the corrupted file to z?You may try again now and Fooocus will download models again. 
)rF   Ústrr2   Úvaluesr1   rŽ   ÚpathÚexistsÚremoveÚreplaceÚ
ValueError)r‚   rƒ   ÚresultrW   Úexpr@  Úcorrupted_backup_fileÚoriginal_loaders          €r   ÚloaderÚbuild_loaded.<locals>.loaderÎ  s  ø€ Øˆð	"Ù$ dÐ5¨fÑ5ˆFð" ˆøô! ô 	"ØˆFÜ�a“&˜4‘-ˆCÜ˜T›
¤T¨&¯-©-«/Ó%:Ô:�Ü˜d¤C×(Ó(Ü—w‘w—~‘~ d×+Ó+ØÐ!1°$°°sÐ;Ñ;˜Ø04°|Ñ0CÐ-ÜŸ7™7Ÿ>™>Ð*?×@Ñ@ÜŸIšIÐ&;Ô<ÜŸ
š
 4Ô?ÜŸ7™7Ÿ>™>¨$×/Ñ/ÜŸIšI dœOØÐ!QÐRgÐQhÐhkÐlÑl˜ØÐ!aÑbšñ ;ô ˜S“/Ð!ûð	"ús"   … �E	šAEÁ)"EÂB5EÅE	)ÚhasattrÚsetattrrÚ   )r  Úloader_nameÚoriginal_loader_namerI  rH  s       @r   Úbuild_loadedrO  Æ  sF   ø€ Ø&¨Ñ2Ðä�6×0Ñ0Ü�¬g°fÓ.JÔKä˜fÓ;€Oõô, ˆF Ô(Ø
r   c                  ó  • [         R                  R                  R                  (       aB  S[         R                  R                  l        [
        [         R                  R                  l        [        5         [        5         [        [         R                  R                  S5      (       dA  [         R                  R                  R                  [         R                  R                  l        [        [         R                  R                  l
        [        [         R                  R                  R                  l        ["        [         R$                  R&                  R(                  l        [,        [         R.                  R                  R0                  R2                  R4                  l        [6        [         R                  R8                  R:                  l        [>        [         R                  R@                  RB                  l        [D        [         RF                  RH                  l%        [L        [         R                  R@                  l'        [P        RR                  " SSS9  [U        [V        RX                  S5        [U        [X        S5        g )NTr6  ÚignoreÚtorchsde)Úactionr  Ú	load_fileÚload)-r9   r:   r;   rw   Úlowvram_availablerF   ÚOOM_EXCEPTIONr   r   rK  Úload_models_gpur6  r9  rl   Úmodel_patcherÚModelPatcherr3   r  Ú
controlnetÚcldmÚ
ControlNetÚforwardr2  rö   r÷   rø   Ú	UNetModelrÐ   rÆ   ÚSDXLÚ
encode_admrè   ÚsamplersÚKSamplerX0Inpaintrn   Úk_diffusionÚsamplingÚBrownianTreeNoiseSamplerr°   Úsampling_functionÚwarningsÚfilterwarningsrO  Úsafetensorsr?   r   r   r   Ú	patch_allrk  è  s€  € Ü×Ñ×+Ñ+×<×<ØAEŒ×Ñ×,Ñ,Ô>Ü=FŒ×Ñ×,Ñ,Ô:äÔÜÔä”;×&Ñ&×7Ñ7Ð9Q×RÑRÜFQ×FYÑFY×FjÑFj×FzÑFzŒ×Ñ×,Ñ,ÔCä;R„K×Ñ×(Ñ(Ô8ÜF^„K×Ñ×%Ñ%×2Ñ2ÔCÜ5I„K×Ñ×Ñ×*Ñ*Ô2ÜMa„K‡O�O×Ñ×,Ñ,×8Ñ8×BÑBÔJÜ5L„K×Ñ×"Ñ"×'Ñ'Ô2Ü=^„K×Ñ× Ñ ×2Ñ2Ô:Ü@_„K×Ñ×$Ñ$Ô=Ü5N„K×Ñ× Ñ Ô2ä×Ò 8°JÒ?ä”×"Ñ" KÔ0Ü”˜Ôà
r   )NNrq   )1rŽ   r?   r4  rŸ   Úldm_patched.modules.model_baser9   Ú4ldm_patched.ldm.modules.diffusionmodules.openaimodelÚ$ldm_patched.modules.model_managementÚmodules.anisotropicr¢   Ú!ldm_patched.ldm.modules.attentionÚ ldm_patched.k_diffusion.samplingÚldm_patched.modules.sd1_clipÚmodules.inpaint_workerrÔ   Ú.ldm_patched.ldm.modules.diffusionmodules.modelÚldm_patched.modules.sdÚldm_patched.controlnet.cldmÚ!ldm_patched.modules.model_patcherÚldm_patched.modules.samplersÚldm_patched.modules.args_parserrh  Úsafetensors.torchrj  Úmodules.constantsrÝ   r   r   r   r   Úmodules.patch_precisionr   Úmodules.patch_clipr   r
   r‘   rl   rn   r›   r°   r¶   rÐ   rè   rñ   r  r2  r9  rO  rk  r   r   r   Ú<module>r~     sÎ   ðÛ 	Û Û Û Û %Û ;Û +Ý )Û (Û 'Û #Ý /Û ;Û 5Û Û "Û (Û #Û &Û Û Ý %å ?Ý @ß fÝ 7Ý -÷ñ ð$ €òC÷L5ñ 5ò4ôò<òð@ moÐuyô òBô"ðJ -1¸$À$ÐPTÐjlô BòJòóDr   