ó
    +ýòh¾  ã                   óL   • S SK r S SK Jr  SSKJrJr  SSKJr   " S S\\5      rg)é    N)Únné   )ÚConfigMixinÚregister_to_config)Ú
ModelMixinc                   óV   ^ • \ rS rSrSr\SSS.S\S\S\4U 4S	 jjj5       rS
 rSr	U =r
$ )ÚUnCLIPTextProjModelé   z×
Utility class for CLIP embeddings. Used to combine the image and text embeddings into a format usable by the
decoder.

For more details, see the original paper: https://huggingface.co/papers/2204.06125 section 2.1
é   i   )Úclip_extra_context_tokensÚclip_embeddings_dimr   r   Útime_embed_dimc                ó´  >• [         TU ]  5         [        R                  " [        R
                  " U5      5      U l        [        R                  " X#5      U l        [        R                  " X#5      U l	        Xl
        [        R                  " X R                  U-  5      U l        [        R                  " X$5      U l        [        R                  " U5      U l        g )N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚzerosÚ+learned_classifier_free_guidance_embeddingsÚLinearÚembedding_projÚ0clip_image_embeddings_project_to_time_embeddingsr   Úclip_extra_context_tokens_projÚencoder_hidden_states_projÚ	LayerNormÚtext_encoder_hidden_states_norm)Úselfr   r   r   Úcross_attention_dimÚ	__class__s        €Ú^/home/james-whalen/.local/lib/python3.13/site-packages/diffusers/pipelines/unclip/text_proj.pyr   ÚUnCLIPTextProjModel.__init__   s    ø€ ô 	‰ÑÔä;=¿<º<ÌÏÊÐTgÓHhÓ;iˆÔ8ô !ŸišiÐ(;ÓLˆÔÜ@BÇ	Â	ÐJ]Ó@nˆÔ=ð *CÔ&Ü.0¯iªiØ×!?Ñ!?ÐBUÑ!Uó/
ˆÔ+ô +-¯)ª)Ð4GÓ*]ˆÔ'Ü/1¯|ª|Ð<OÓ/PˆÕ,ó    c                óZ  • U(       aR  UR                   S   nU R                  R                  S5      nUR                  US5      n[        R
                  " Xa/SS9nUR                   S   UR                   S   :X  d   eUR                   S   nU R                  U5      nU R                  U5      n	X˜-   n
U R                  U5      nUR                  USU R                  5      nUR                  SSS5      nU R                  U5      nU R                  U5      n[        R
                  " X³/SS9nX:4$ )Nr   éÿÿÿÿ)Údimé   é   )Úshaper   Ú	unsqueezeÚexpandr   Úcatr   r   r   Úreshaper   Úpermuter   r   )r   Úimage_embeddingsÚprompt_embedsÚtext_encoder_hidden_statesÚdo_classifier_free_guidanceÚimage_embeddings_batch_sizeÚ#classifier_free_guidance_embeddingsÚ
batch_sizeÚtime_projected_prompt_embedsÚtime_projected_image_embeddingsÚadditive_clip_time_embeddingsr   s               r    ÚforwardÚUnCLIPTextProjModel.forward7   sI  € Þ&à*:×*@Ñ*@ÀÑ*CÐ'Ø26×2bÑ2b×2lÑ2lÐmnÓ2oÐ/Ø2U×2\Ñ2\Ø+¨Ró3Ð/ô  %ŸyšyÐ*MÐ)`ÐfgÑhÐð  ×%Ñ% aÑ(¨M×,?Ñ,?ÀÑ,BÓBÐBÐBà"×(Ñ(¨Ñ+ˆ
ð (,×':Ñ':¸=Ó'IÐ$Ø*.×*_Ñ*_Ð`pÓ*qÐ'Ø(GÑ(fÐ%ð %)×$GÑ$GÐHXÓ$YÐ!Ø$=×$EÑ$EÀjÐRTÐVZ×VtÑVtÓ$uÐ!Ø$=×$EÑ$EÀaÈÈAÓ$NÐ!à%)×%DÑ%DÐE_Ó%`Ð"Ø%)×%IÑ%IÐJdÓ%eÐ"Ü%*§Y¢YÐ0IÐ/fÐlmÑ%nÐ"à)ÐHÐHr"   )r   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úintr   r8   Ú__static_attributes__Ú__classcell__)r   s   @r    r	   r	      sS   ø† ñð ð *+Ø#&ò	Qð $'ðQð !ð	Qð
 ÷Qó ðQ÷0Ið Ir"   r	   )r   r   Úconfiguration_utilsr   r   Úmodelsr   r	   © r"   r    Ú<module>rE      s%   ðó Ý ç BÝ  ô@I˜* kõ @Ir"   