+
    UV-jíR  ã                  óØ  € ^ RI Ht ^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIt^ RIHt ^ RIHtHtHt ^ R	IHt ^ R
IHtHt ^ RIHtHtHtH t H!t! ^ RI"H#t# ^ RI$H%t% ^ RI&H't' ^ RI(H)t) ^ RI*H+t+ ^ RI,H-t-H.t.H/t/ ]R*,          t0]! RRR7       ! R R4      4       t1 ! R R4      t2 ! R R]24      t3R R lt4R R lt5R R lt6R  R! lt7R" R# lt8R$ R% lt9R& R' lt:R( R) lt;R# )+é    )ÚannotationsN)ÚSequence)Ú	dataclass)ÚPath)ÚLiteral)ÚImage)ÚFlux2VariantÚget_variantÚvalidate_dimensions)ÚModelConfig)Údownload_modelÚvalidate_model_layout)Úpack_latentsÚpatchify_latentsÚprepare_grid_idsÚprepare_packed_latentsÚunpack_latents)Úencode_prompt)ÚFlowMatchEulerDiscreteScheduler)ÚTilingConfig)ÚFlux2Tokenizer)ÚFlux2KVCache)Úload_text_encoderÚload_transformerÚload_vaeT)ÚfrozenÚslotsc                  ó^   € ] tR t^"t$ RtR]R&   RtR]R&   RtR]R&   RtR]R	&   R
t	R]R&   Rt
R# )ÚFlux2RuntimeConfigTÚboolÚevict_text_encoderFÚevict_transformerÚbucketed_seq_lenÚautoÚTiledVAEÚ	tiled_vaeé   ÚintÚmax_sequence_length© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r!   Ú__annotations__r"   r#   r&   r)   Ú__static_attributes__r*   ó    Ún/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/flux2/pipeline.pyr   r   "   s8   ‡ à#Ð˜Ó#Ø#Ð�tÓ#Ø!Ð�dÓ!Ø €IˆxÓ Ø"Ð˜×"r1   r   c                  óü   € ] tR t^+tRRRR/R R llt]R+RRRR	R
RRRRRRR	RRRR	RRRR/
R R lll4       tR^*R^RRRRRRRRRR/R R lltR^*R^RRRRRRRRRR/R  R! lltR" R# lt	R$ R% lt
R& R' ltR( R) ltR*tR# ),Ú
Flux2ImageÚvariantúflux2-klein-4bÚruntime_configNc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   r5   ústr | Flux2VariantÚ
model_pathú
str | Pathr7   zFlux2RuntimeConfig | NoneÚreturnÚNoner*   )Úformats   "r2   Ú__annotate__ÚFlux2Image.__annotate__,   s:   € ÷ Wñ Wð $ðWð ð	Wð
 2ðWð 
ñWr1   c               	ó   € \        V4      V n        \        V4      V n        T;'       g    \	        4       V n        \        V P                  4      V n        \        V P                  V P                  4      V n	        R V n
        R V n        / V n        R # ©N)r
   r5   r   r;   r   r7   r   Ú	tokenizerr   Útext_encoderÚtransformerÚvaeÚprompt_cache)Úselfr5   r;   r7   s   &$$$r2   Ú__init__ÚFlux2Image.__init__,   sn   € ô # 7Ó+ˆŒÜ/°
Ó;ˆŒØ,×DÐDÔ0BÓ0DˆÔÜ'¨¯©Ó8ˆŒÜ-¨d¯o©o¸t¿|¹|ÓLˆÔØˆÔØˆŒØTVˆÖr1   r;   ÚdownloadTÚtokenÚrevisionÚforce_downloadFr!   r"   r#   r&   r$   r)   r'   c               óH   € V ^8„  d   QhRRRRRRRRR	RR
RRRRRRRRRRRRR/# )r9   r5   r:   r;   zstr | Path | NonerL   r    rM   z
str | NonerN   rO   r!   r"   r#   r&   r%   r)   r(   r=   z'Flux2Image'r*   )r?   s   "r2   r@   rA   =   s�   € ÷ "Oñ "Oà#ð"Oð &ð	"Oð
 ð"Oð ð"Oð ð"Oð ð"Oð !ð"Oð  ð"Oð ð"Oð ð"Oð !ð"Oð 
ñ"Or1   c       
        	ó²   € \        V4      pVf0   V'       g   \        RVP                   24      h\        VVVVR7      p\	        VVV	V
VR7      pV ! WÂVR7      # )Nz%No local model_path was provided for )rM   rN   rO   )r!   r"   r#   r&   r)   )r5   r;   r7   )r
   ÚFileNotFoundErrorÚrepo_idr   r   )Úclsr5   r;   rL   rM   rN   rO   r!   r"   r#   r&   r)   ÚspecÚconfigs   &&$$$$$$$$$$  r2   Úfrom_pretrainedÚFlux2Image.from_pretrained<   st   € ô  ˜7Ó#ˆØÒßÜ'Ø;¸D¿L¹L¸>ÐJóð ô (ØØØ!Ø-ô	ˆJô $Ø1Ø/Ø-ØØ 3ô
ˆñ ˜4ÀvÔNÐNr1   ÚseedÚstepsÚwidthi   ÚheightÚguidanceç      ð?c               ó<   € V ^8„  d   QhRRRRRRRRRRRR	R
RRRRR/	# )r9   ÚpromptÚstrrY   r(   rZ   r[   r\   r]   Úfloatr)   ú
int | Noner&   úbool | Noner=   úImage.Imager*   )r?   s   "r2   r@   rA   a   sd   € ÷ 
ñ 
àð
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð (ð
ð ð
ð 
ñ
r1   c               	óF   € \        V P                  VVVVVVVVR 7      4      # ©)rY   rZ   r[   r\   r]   r)   r&   )Ú_to_pilÚgenerate_array)	rI   r`   rY   rZ   r[   r\   r]   r)   r&   s	   &&$$$$$$$r2   ÚgenerateÚFlux2Image.generatea   s<   € ô Ø×ÑØØØØØØ!Ø$7Ø#ð  ó 	ó
ð 	
r1   c               ó<   € V ^8„  d   QhRRRRRRRRRRRR	R
RRRRR/	# )r9   r`   ra   rY   r(   rZ   r[   r\   r]   rb   r)   rc   r&   rd   r=   úmx.arrayr*   )r?   s   "r2   r@   rA   z   so   € ÷ J(ñ J(àðJ(ð ð	J(ð
 ðJ(ð ðJ(ð ðJ(ð ðJ(ð (ðJ(ð ðJ(ð 
ñJ(r1   c          	     	ó¢  € \        WER 7       V^8  d   \        RV 24      hV'       g   \        R4      hT;'       g    V P                  P                  p	V P	                  WR7      w  r«RpRpVe   VR8”  d   V P	                  RV	R7      w  rÍV P                  4        \        VVVR7      w  rïpp\        V^,          V^,          ,          VR7      p\        V4       Fš  pV P                  VVV
VVP                  V,          R	7      pVeC   Ve?   V P                  VVVVVP                  V,          R	7      pVVVV,
          ,          ,           pVP                  VVVR
7      p\        P                  ! V4       Kœ  	  VP                  VP                  ^ ,          VVVP                  R,          4      pVP!                  ^ ^^^4      pV P"                  P%                  VV P'                  WTVR7      R7      pV P                  P(                  '       d9   RV n        RV n        \,        P.                  ! 4        \        P0                  ! 4        \3        V4      # )©r[   r\   ústeps must be >= 1, got úprompt must not be empty©r)   Nr^   Ú ©rY   r\   r[   ©Úimage_seq_lenÚnum_inference_steps)ÚlatentsÚ
latent_idsÚprompt_embedsÚtext_idsÚtimestep©ÚnoiseÚ
step_indexrx   ©r\   r[   Úoverride©Útiling_configéÿÿÿÿ)r   Ú
ValueErrorr7   r)   Ú_encode_promptÚ_ensure_transformer_and_vaer   r   ÚrangeÚ_predictÚ	timestepsÚstepÚmxÚevalÚreshapeÚshapeÚ	transposerG   Údecode_packed_latentsÚ_resolve_tilingr"   rF   ÚgcÚcollectÚclear_cacheÚ_to_image_array)rI   r`   rY   rZ   r[   r\   r]   r)   r&   Úmax_seqrz   r{   Únegative_prompt_embedsÚnegative_text_idsrx   ry   Úlatent_heightÚlatent_widthÚ	schedulerÚir~   Únegative_noiseÚpackedÚdecodeds   &&$$$$$$$               r2   ri   ÚFlux2Image.generate_arrayz   sO  € ô 	 %Õ7Ø�1Œ9ÜÐ7¸°wÐ?Ó@Ð@ßÜÐ7Ó8Ð8à%×PÐP¨×)<Ñ)<×)PÑ)PˆØ"&×"5Ñ"5Øð #6ó #
Ñˆð "&ÐØ ÐØÒ H¨s¤NØ8<×8KÑ8KØ¨ð 9Ló 9Ñ5Ð"ð 	×(Ñ(Ô*ä;QØØØô<
Ñ8ˆ˜]¨Lô
 4Ø! R�<¨E°R­KÕ8Ø %ô
ˆ	ô �u–ˆAØ—M‘MØØ%Ø+Ø!Ø"×,Ñ,¨QÕ/ð "ó ˆEð &Ò1Ð6GÒ6SØ!%§¡Ø#Ø)Ø"8Ø.Ø&×0Ñ0°Õ3ð "/ó "�ð '¨°U¸^Õ5KÕ)LÕL�Ø—n‘n¨5¸QÈ�nÓPˆGÜ�GŠG�GÖñ% ð( —‘Ø�M‰M˜!Õ˜m¨\¸7¿=¹=ÈÕ;Ló
ˆð ×!Ñ! ! Q¨¨1Ó-ˆØ—(‘(×0Ñ0ØØ×.Ñ.Ø°Yð /ó ð 1ó 
ˆð ×Ñ×0×0Ð0Ø#ˆDÔØˆDŒHÜ�JŠJŒLÜ�NŠNÔÜ˜wÓ'Ð'r1   c               ó$   € V ^8„  d   QhRRRRRR/# )r9   r`   ra   r)   r(   r=   útuple[mx.array, mx.array]r*   )r?   s   "r2   r@   rA   Æ   s$   € ÷  ñ  Øð Ø36ð à	"ñ r1   c               	ó:  € WV P                   P                  3pV P                  P                  V4      pVe   V# V P                  f&   \        V P                  V P                  4      V n        \        VV P                  V P                  VV P                   P                  R7      w  rV\        P                  ! WV4       WV3V P                  V&   V P                   P                  '       d2   R V n        \        P                  ! 4        \        P                  ! 4        WV3# )N)r`   rD   rE   r)   Úbucketed)r7   r#   rH   ÚgetrE   r   r;   r5   r   rD   rŒ   r�   r!   r“   r”   r•   )rI   r`   r)   ÚkeyÚcachedÚembedsr{   s   &&$    r2   r†   ÚFlux2Image._encode_promptÆ   sç   € ð ¨D×,?Ñ,?×,PÑ,PÐQˆØ×"Ñ"×&Ñ& sÓ+ˆØÒØˆMØ×ÑÒ$Ü 1°$·/±/À4Ç<Á<Ó PˆDÔÜ(ØØ—n‘nØ×*Ñ*Ø 3Ø×(Ñ(×9Ñ9ô
Ñˆô 	�Š�Ô!Ø"(Ð!3ˆ×Ñ˜#ÑØ×Ñ×1×1Ð1Ø $ˆDÔÜ�JŠJŒLÜ�NŠNÔØÐÐr1   c               ó   € V ^8„  d   QhRR/# ©r9   r=   r>   r*   )r?   s   "r2   r@   rA   Þ   s   € ÷ 1ñ 1¨Tñ 1r1   c                	óÀ   € V P                   f&   \        V P                  V P                  4      V n         V P                  f   \        V P                  4      V n        R # R # rC   ©rF   r   r;   r5   rG   r   ©rI   s   &r2   r‡   Ú&Flux2Image._ensure_transformer_and_vaeÞ   sD   € Ø×ÑÒ#Ü/°·±ÀÇÁÓNˆDÔØ�8‰8ÒÜ §¡Ó0ˆDŽHñ r1   c               ó0   € V ^8„  d   QhRRRRRRRRRRRR/# )r9   rx   rm   ry   rz   r{   r|   r=   r*   )r?   s   "r2   r@   rA   ä   sH   € ÷ 
ñ 
ð ð
ð ð	
ð
  ð
ð ð
ð ð
ð 
ñ
r1   c          	     	ó0   € V P                  VVVVVR R7      # )N©Úhidden_statesÚencoder_hidden_statesr|   Úimg_idsÚtxt_idsr]   )rF   )rI   rx   ry   rz   r{   r|   s   &$$$$$r2   r‰   ÚFlux2Image._predictä   s.   € ð ×ÑØ!Ø"/ØØØØð  ó 
ð 	
r1   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r9   r\   r(   r[   r�   rd   r=   zTilingConfig | Noner*   )r?   s   "r2   r@   rA   ö   s,   € ÷ 
ñ 
Øð
Ø%(ð
Ø4?ð
à	ñ
r1   c               	óü   € VR J d   \        4       # VRJ d   R# V P                  P                  pVR8X  d   \        4       # VR8X  d   R# \        W4      ^\        4       P                  ,          8¼  d   \        4       # R# )TFNÚonÚoff)r   r7   r&   ÚmaxÚvae_decode_tile_size)rI   r\   r[   r�   Úmodes   &$$$ r2   r’   ÚFlux2Image._resolve_tilingö   s{   € ð �tÓÜ“>Ð!Ø�uÓÙØ×"Ñ"×,Ñ,ˆØ�4Œ<Ü“>Ð!Ø�5Œ=Ùô �6Ó! Q¬«×)LÑ)LÕ%LÔLô ‹Nð	
ð ð	
r1   )r;   rH   r7   rE   rD   rF   rG   r5   )r6   )r+   r,   r-   r.   rJ   ÚclassmethodrW   rj   ri   r†   r‡   r‰   r’   r0   r*   r1   r2   r4   r4   +   s[  † ðWð '7ðWð
 59÷Wð  ñ"Oð )-ð	"Oð
 ð"Oð !ð"Oð  $ð"Oð  %ð"Oð $(ð"Oð #(ð"Oð "&ð"Oð %ð"Oð $'÷"Oó ð"OðH
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð +/ð
ð "&÷
ð2J(ð ð	J(ð
 ðJ(ð ðJ(ð ðJ(ð ðJ(ð +/ðJ(ð "&÷J(õX õ01õ
÷$
ñ 
r1   r4   c                  óž   € ] tR tRtR^*R^RRRRRRR	RR
R/R R lltR^*R^RRRRRRR	RR
R/R R lltR R ltR R ltR R ltR R lt	Rt
R# )ÚFlux2ImageEditi	  rY   rZ   r[   Nr\   r]   r^   r)   r&   c               ó@   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRR	RRRR/
# )r9   r`   ra   Úimage_pathsúSequence[str | Path]rY   r(   rZ   r[   rc   r\   r]   rb   r)   r&   rd   r=   re   r*   )r?   s   "r2   r@   ÚFlux2ImageEdit.__annotate__
  sn   € ÷ 
ñ 
àð
ð *ð
ð
 ð
ð ð
ð ð
ð ð
ð ð
ð (ð
ð ð
ð 
ñ
r1   c               	óH   € \        V P                  VVVVVVVVV	R 7	      4      # rg   )rh   Ú
edit_array)
rI   r`   rÅ   rY   rZ   r[   r\   r]   r)   r&   s
   &&&$$$$$$$r2   ÚeditÚFlux2ImageEdit.edit
  s=   € ô Ø�O‰OØØØØØØØ!Ø$7Ø#ð ó 
ó
ð 	
r1   c               ó@   € V ^8„  d   QhRRRRRRRRRR	R
R	RRRR	RRRR/
# )r9   r`   ra   rÅ   rÆ   rY   r(   rZ   r[   rc   r\   r]   rb   r)   r&   rd   r=   rm   r*   )r?   s   "r2   r@   rÇ   %  sz   € ÷ C(ñ C(àðC(ð *ðC(ð
 ðC(ð ðC(ð ðC(ð ðC(ð ðC(ð (ðC(ð ðC(ð 
ñC(r1   c               	ó~  € V P                   P                  '       g#   \        V P                   P                   R 24      hV^8  d   \        RV 24      hV'       g   \        R4      hV'       g   \        R4      h\	        VVVR7      w  rV\        WVR7       T;'       g    V P                  P                  p
V P                  WR7      w  r¼RpRpVe   VR8”  d   V P                  R	V
R7      w  rÞV P                  4        V P                  VVVR7      w  pp\        VVVR
7      w  pppp\        V^,          V^,          ,          VR7      pRpRp\        V4       EFž  pV P                   P                  '       d/   V P                  VVVVVVVP                   V,          VR7      w  ppM)V P#                  VVVVVVVP                   V,          R7      pVe�   Ve‹   V P                   P                  '       d/   V P                  VVVVVVVP                   V,          VR7      w  ppM)V P#                  VVVVVVVP                   V,          R7      pVVVV,
          ,          ,           pV^ 8X  de   . pVe    VP%                  VP'                  4       4       Ve    VP%                  VP'                  4       4       V'       d   \(        P*                  ! V!   VP-                  VVVR7      p\(        P*                  ! V4       EK¡  	  \/        VVVR7      pV P0                  P3                  VV P5                  WeV	R7      R7      pVe   VP7                  4        Ve   VP7                  4        V P                  P8                  '       d9   RV n        RV n        \<        P>                  ! 4        \(        P@                  ! 4        \C        V4      # )z does not support image editingrp   rq   z-At least one reference image path is required)rÅ   r[   r\   ro   rr   Nr^   rs   rt   ru   )rx   ry   Úreference_latentsÚreference_idsrz   r{   r|   Úkv_cache)rx   ry   rÎ   rÏ   rz   r{   r|   r}   )rš   r›   r€   r‚   )"r5   Úsupports_editr…   rS   Ú_resolve_edit_dimensionsr   r7   r)   r†   r‡   Ú_prepare_reference_latentsr   r   rˆ   Úuses_reference_kv_cacheÚ_predict_edit_with_kv_cacherŠ   Ú_predict_editÚextendÚarraysrŒ   r�   r‹   r   rG   r‘   r’   Úclearr"   rF   r“   r”   r•   r–   )rI   r`   rÅ   rY   rZ   r[   r\   r]   r)   r&   r—   rz   r{   r˜   r™   rÎ   rÏ   rx   ry   rš   r›   rœ   ÚcacheÚnegative_cacher�   r~   rž   rØ   rŸ   r    s   &&&$$$$$$$                    r2   rÉ   ÚFlux2ImageEdit.edit_array%  sÉ  € ð �|‰|×)×)Ð)Ü §¡× 4Ñ 4Ð5Ð5TÐUÓVÐVØ�1Œ9ÜÐ7¸°wÐ?Ó@Ð@ßÜÐ7Ó8Ð8ßÜÐLÓMÐMä0Ø#ØØô
‰ˆô
 	 %Õ7à%×PÐP¨×)<Ñ)<×)PÑ)PˆØ"&×"5Ñ"5Øð #6ó #
Ñˆð "&ÐØ ÐØÒ H¨s¤NØ8<×8KÑ8KØ¨ð 9Ló 9Ñ5Ð"ð 	×(Ñ(Ô*Ø+/×+JÑ+JØ#ØØð ,Kó ,
Ñ(Ð˜=ô
 <RØØØô<
Ñ8ˆ�˜]¨Lô
 4Ø! R�<¨E°R­KÕ8Ø %ô
ˆ	ð ˆØˆÜ�u—ˆAØ�|‰|×3×3Ð3Ø#×?Ñ?Ø#Ø)Ø&7Ø"/Ø"/Ø%Ø&×0Ñ0°Õ3Ø"ð  @ó 	 ‘�‘uð ×*Ñ*Ø#Ø)Ø&7Ø"/Ø"/Ø%Ø&×0Ñ0°Õ3ð +ó �ð &Ò1Ð6GÒ6SØ—<‘<×7×7Ð7Ø59×5UÑ5UØ 'Ø#-Ø*;Ø&3Ø&<Ø!2Ø!*×!4Ñ!4°QÕ!7Ø!/ð 6Vó 	6Ñ2�N¡Nð &*×%7Ñ%7Ø 'Ø#-Ø*;Ø&3Ø&<Ø!2Ø!*×!4Ñ!4°QÕ!7ð &8ó &�Nð '¨°U¸^Õ5KÕ)LÕL�Ø�AŒvØ�ØÒ$Ø—M‘M %§,¡,£.Ô1Ø!Ò-Ø—M‘M .×"7Ñ"7Ó"9Ô:ßÜ—G’G˜VÒ$Ø—n‘n¨5¸QÈ�nÓPˆGÜ�GŠG�G×ñm ôp  Ø =¸|ô
ˆð —(‘(×0Ñ0ØØ×.Ñ.Ø°Yð /ó ð 1ó 
ˆð ÒØ�K‰KŒMØÒ%Ø× Ñ Ô"Ø×Ñ×0×0Ð0Ø#ˆDÔØˆDŒHÜ�JŠJŒLÜ�NŠNÔÜ˜wÓ'Ð'r1   c               ó   € V ^8„  d   QhRR/# r¬   r*   )r?   s   "r2   r@   rÇ   ª  s   € ÷ Gñ G¨Tñ Gr1   c                	óÄ   € V P                   f&   \        V P                  V P                  4      V n         V P                  f   \        V P                  RR7      V n        R # R # )NT)Úinclude_encoderr®   r¯   s   &r2   r‡   Ú*Flux2ImageEdit._ensure_transformer_and_vaeª  sF   € Ø×ÑÒ#Ü/°·±ÀÇÁÓNˆDÔØ�8‰8ÒÜ §¡ÀÔFˆDŽHñ r1   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r9   rÅ   rÆ   r[   r(   r\   r=   r£   r*   )r?   s   "r2   r@   rÇ   °  s4   € ÷ 0ñ 0ð *ð0ð ð	0ð
 ð0ð 
#ñ0r1   c          	     	ó
  € . p. p\        V4       F¨  w  rg\        WrVR 7      p\        V4      p	V P                  P	                  V	4      p
\        V
4      p
\        V
4      p
\        W P                  R7      p
VP                  \        V
4      4       VP                  \        V
^
^
V,          ,           R7      4       Kª  	  \        P                  ! V^R7      p\        P                  ! V^R7      p\        P                  ! W¼4       W¼3# )ro   )rG   )Út_coord©Úaxis)Ú	enumerateÚ_load_reference_imageÚ_reference_image_arrayrG   ÚencodeÚ_crop_to_even_spatialr   Ú!_bn_normalize_vae_encoded_latentsÚappendr   r   rŒ   Úconcatenater�   )rI   rÅ   r[   r\   Úpacked_refsÚref_idsÚindexÚ
image_pathÚimageÚimage_arrayrx   rÎ   rÏ   s   &$$$         r2   rÓ   Ú)Flux2ImageEdit._prepare_reference_latents°  s×   € ð ˆØˆÜ!*¨;Ö!7ÑˆEÜ)¨*È&ÔQˆEÜ0°Ó7ˆKØ—h‘h—o‘o kÓ2ˆGÜ+¨GÓ4ˆGÜ& wÓ/ˆGÜ7ØŸX™XôˆGð ×Ñœ|¨GÓ4Ô5Ø�N‰NÔ+¨G¸RÀ"ÀuÅ*½_ÔMÖNñ "8ô ŸNšN¨;¸QÔ?ÐÜŸš w°QÔ7ˆÜ
�ŠÐ!Ô1Ø Ð/Ð/r1   c               ó8   € V ^8„  d   QhRRRRRRRRRRRRRRR	R/# )
r9   rx   rm   ry   rÎ   rÏ   rz   r{   r|   r=   r*   )r?   s   "r2   r@   rÇ   Ê  s\   € ÷ ,ñ ,ð ð,ð ð	,ð
 $ð,ð  ð,ð  ð,ð ð,ð ð,ð 
ñ,r1   c          	     	ó  € \         P                  ! W.^R7      p\         P                  ! W$.^R7      p	V P                  VVVV	VRR7      p
\        V
\        4      '       d
   V
^ ,          p
V
RRVP
                  ^,          13,          # )é   rä   Nr³   ºNNN)rŒ   rí   rF   Ú
isinstanceÚtupler�   )rI   rx   ry   rÎ   rÏ   rz   r{   r|   r´   r¶   r~   s   &$$$$$$$   r2   rÖ   ÚFlux2ImageEdit._predict_editÊ  sˆ   € ô Ÿš¨Ð'CÈ!ÔLˆÜ—.’. *Ð!<À1ÔEˆØ× Ñ Ø'Ø"/ØØØØð !ó 
ˆô �eœU×#Ò#Ø˜!•HˆEØ�QÐ*˜'Ÿ-™-¨Õ*Ð*Ð*Õ+Ð+r1   c               ó<   € V ^8„  d   QhRRRRRRRRRRRRRRR	R
RR/	# )r9   rx   rm   ry   rÎ   rÏ   rz   r{   r|   rÐ   zFlux2KVCache | Noner=   z$tuple[mx.array, Flux2KVCache | None]r*   )r?   s   "r2   r@   rÇ   ã  sf   € ÷ ) ñ ) ð ð) ð ð	) ð
 $ð) ð  ð) ð  ð) ð ð) ð ð) ð &ð) ð 
.ñ) r1   c               	óp  € Vf€   \         P                  ! W1.^R7      p	\         P                  ! WB.^R7      p
V P                  V	VVV
VR RVP                  ^,          R7      p\	        V\
        4      '       g   \        R4      hV# V P                  VVVVVR VRR7      p\	        V\
        4      '       d   V# W¸3# )Nrä   Úextract)r´   rµ   r|   r¶   r·   r]   Úkv_cache_modeÚnum_ref_tokensz*Flux2 KV extraction did not return a cacher¨   )r´   rµ   r|   r¶   r·   r]   rÐ   rÿ   )rŒ   rí   rF   r�   rù   rú   ÚRuntimeError)rI   rx   ry   rÎ   rÏ   rz   r{   r|   rÐ   r´   r¶   Úresults   &$$$$$$$$   r2   rÕ   Ú*Flux2ImageEdit._predict_edit_with_kv_cacheã  sÓ   € ð ÒÜŸNšNÐ,=Ð+GÈaÔPˆMÜ—n’n mÐ%@ÀqÔIˆGØ×%Ñ%Ø+Ø&3Ø!ØØ ØØ'Ø0×6Ñ6°qÕ9ð &ó 	ˆFô ˜f¤e×,Ò,Ü"Ð#OÓPÐPØˆMà×!Ñ!Ø!Ø"/ØØØØØØ"ð "ó 	
ˆô �fœe×$Ò$ØˆMØÐÐr1   )rF   rG   )r+   r,   r-   r.   rÊ   rÉ   r‡   rÓ   rÖ   rÕ   r0   r*   r1   r2   rÃ   rÃ   	  s»   † ð
ð
 ð
ð ð
ð !ð
ð "ð
ð ð
ð +/ð
ð "&÷
ð6C(ð
 ðC(ð ðC(ð !ðC(ð "ðC(ð ðC(ð +/ðC(ð "&÷C(õJGõ0õ4,÷2) ñ ) r1   rÃ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r9   rÅ   rÆ   r[   rc   r\   r=   ztuple[int, int]r*   )r?   s   "r2   r@   r@     s2   € ÷ ñ à%ðð ðð ð	ð
 ñr1   c                ó°  € Vf   Ve   Ve   Vf   \        R4      hW3# \        P                  ! \        V ^ ,          4      P	                  4       4      ;_uu_ 4       pVP
                  w  rER R R 4       \        R\        P                  ! RXX,          ,          4      4      p\        WF,          4      p\        WV,          4      pW3#   + '       g   i     Lc; i)Nz5Both width and height are required when either is setr^   i   )
r…   r   Úopenr   Ú
expanduserÚsizeÚminÚmathÚsqrtÚ_round_edit_dimension)rÅ   r[   r\   rò   Úimage_widthÚimage_heightÚscales   $$$    r2   rÒ   rÒ     sª   € ð Ò˜FÒ.ØŠ=˜FšNÜÐTÓUÐUØˆ}ÐÜ	�Š”D˜ Q�Ó(×3Ñ3Ó5×	6Ô	6¸%Ø$)§J¡JÑ!ˆ÷ 
7ä�”T—Y’Y °¸lÕ0JÕKÓLÓM€EÜ! +Õ"5Ó6€EÜ" <Õ#7Ó8€FØˆ=Ð÷ 
7×	6ús   ÁCÃC	c               ó    € V ^8„  d   QhRRRR/# )r9   Úvaluerb   r=   r(   r*   )r?   s   "r2   r@   r@   !  s   € ÷ 6ñ 6 ð 6¨3ñ 6r1   c           	     ó\   € \        R \        R\        V 4      ^,          ^,          4      4      # )é   i   )r½   r	  r(   )r  s   &r2   r  r  !  s$   € Üˆs”C˜œc %›j¨BÕ.°Õ3Ó4Ó5Ð5r1   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r9   rñ   r<   r[   r(   r\   r=   re   r*   )r?   s   "r2   r@   r@   %  s2   € ÷ ñ Øðð ðð ð	ð
 ñr1   c               ó–  € \        V 4      P                  4       pVP                  4       '       g   \        R V 24      h\        P
                  ! V4      ;_uu_ 4       pVP                  R4      pVP                  W38w  d,   VP                  W3\        P                  P                  4      pVuuRRR4       #   + '       g   i     R# ; i)z Reference image does not exist: ÚRGBN)r   r  ÚexistsrR   r   r  Úconvertr  ÚresizeÚ
ResamplingÚLANCZOS)rñ   r[   r\   Úpathrò   s   &$$  r2   rç   rç   %  s’   € ô �
Ó×&Ñ&Ó(€DØ�;‰;�=Š=ÜÐ"BÀ4À&Ð IÓJÐJÜ	�Š�D×	Ô	˜UØ—‘˜eÓ$ˆØ�:‰:˜%˜Ô(Ø—L‘L % ´%×2BÑ2B×2JÑ2JÓKˆEØ÷	 
×	×	Ó	ús   ÁAB7Â7C	c               ó    € V ^8„  d   QhRRRR/# )r9   rò   re   r=   rm   r*   )r?   s   "r2   r@   r@   5  s   € ÷ 9ñ 9 +ð 9°(ñ 9r1   c                ó&  € \         P                  ! V 4      P                  \         P                  4      R ,          R,
          p\         P                  ! VR4      R,          p\
        P                  ! V4      P                  \        P                  4      # )g     à_@r^   )r9   r   r÷   )N.)	ÚnpÚasarrayÚastypeÚfloat32r�   rŒ   Úarrayr   Ú	precision)rò   r#  s   & r2   rè   rè   5  s]   € Ü�JŠJ�uÓ×$Ñ$¤R§Z¡ZÓ0°5Õ8¸3Õ>€EÜ�LŠL˜ 	Ó*¨9Õ5€EÜ�8Š8�E‹?×!Ñ!¤+×"7Ñ"7Ó8Ð8r1   c               ó    € V ^8„  d   QhRRRR/# ©r9   rx   rm   r=   r*   )r?   s   "r2   r@   r@   ;  s   € ÷ ñ  8ð °ñ r1   c                ó¾   € V P                   ^,          ^,          ^ 8w  d   V RRRR1R3,          p V P                   ^,          ^,          ^ 8w  d   V RRRRR13,          p V # )r9   rø   Nr„   )r�   )rx   s   &r2   rê   rê   ;  s_   € Ø‡}�}�QÕ˜!Õ˜qÔ Ø˜!˜Q    Q˜,Õ'ˆØ‡}�}�QÕ˜!Õ˜qÔ Ø˜!˜Q  3 B 3˜,Õ'ˆØ€Nr1   c               ó    € V ^8„  d   QhRRRR/# r&  r*   )r?   s   "r2   r@   r@   C  s   € ÷ (ñ (¨xð (ÀHñ (r1   c               ó‚  € VP                   P                  P                  ^R^^4      P                  V P                  4      p\
        P                  ! VP                   P                  P                  ^R^^4      VP                   P                  ,           4      P                  V P                  4      pW,
          V,          # )r÷   r„   )	ÚbnÚrunning_meanrŽ   r!  ÚdtyperŒ   r  Úrunning_varÚeps)rx   rG   Úbn_meanÚbn_stds   &$  r2   rë   rë   C  s‰   € Ø�f‰f×!Ñ!×)Ñ)¨!¨R°°AÓ6×=Ñ=¸g¿m¹mÓL€GÜ�WŠW�S—V‘V×'Ñ'×/Ñ/°°2°q¸!Ó<¸s¿v¹v¿z¹zÕIÓJ×QÑQØ�‰ó€Fð Õ Õ'Ð'r1   c               ó    € V ^8„  d   QhRRRR/# )r9   Údecoded_latentsrm   r=   r*   )r?   s   "r2   r@   r@   K  s   € ÷ ñ  Xð °(ñ r1   c                ó`  € \         P                  ! V ^,          R,           ^ ^4      p\         P                  ! VR4      P                  \         P                  4      pV^ÿ,          P                  4       P                  \         P                  4      pV^ ,          p\         P                  ! V4       V# )r9   g      à?)r   r9   é   r÷   )rŒ   Úclipr�   r!  r"  ÚroundÚuint8r�   )r2  Úimagesrò   s   &  r2   r–   r–   K  sw   € Ü�WŠW�_ qÕ(¨3Õ.°°1Ó5€FÜ�\Š\˜& ,Ó/×6Ñ6´r·z±zÓB€FØ�s�l×!Ñ!Ó#×*Ñ*¬2¯8©8Ó4€FØ�1�I€EÜ‡G‚GˆE„NØ€Lr1   c               ó    € V ^8„  d   QhRRRR/# )r9   ró   rm   r=   re   r*   )r?   s   "r2   r@   r@   T  s   € ÷ "ñ "˜ð " kñ "r1   c                óZ   € \         P                  ! V 4      p\        P                  ! V4      # rC   )r  r#  r   Ú	fromarray)ró   r#  s   & r2   rh   rh   T  s   € Ü�HŠH�[Ó!€EÜ�?Š?˜5Ó!Ð!r1   )r$   r»   r¼   )<Ú
__future__r   r“   r
  Úcollections.abcr   Údataclassesr   Úpathlibr   Útypingr   Úmlx.coreÚcorerŒ   Únumpyr  ÚPILr   Úmlx_vlm.models.flux2.configr	   r
   r   Úmlx_vlm.models.flux2.constantsr   Úmlx_vlm.models.flux2.downloadr   r   Úmlx_vlm.models.flux2.latentr   r   r   r   r   Úmlx_vlm.models.flux2.promptr   Úmlx_vlm.models.flux2.schedulerr   Úmlx_vlm.models.flux2.tilingr   Úmlx_vlm.models.flux2.tokenizerr   Ú)mlx_vlm.models.flux2.transformer.kv_cacher   Úmlx_vlm.models.flux2.weightsr   r   r   r%   r   r4   rÃ   rÒ   r  rç   rè   rê   rë   r–   rh   r*   r1   r2   Ú<module>rO     s¿   ðÝ "ã 	Û Ý $Ý !Ý Ý å Û Ý ç VÑ VÝ 6ß O÷õ õ 6Ý JÝ 4Ý 9Ý Bß VÑ VàÐ&Õ'€ñ �$˜dÔ#÷#ð #ó $ð#÷[
ñ [
ô|C �Zô C õLõ$6õõ 9õõ(õ÷"r1   