+
    UV-jF ã                   ó
  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^ RI
Ht ^ RI
Ht ^ RIHt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#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1 ^RI2H3t3H4t4 ^RI5H6t6H7t7 ^RI8H9t9 ^RI:H;t;H<t<H=t=H>t> ^RI?H@t@ ^RIAHBtBHCtC ^RIDHEtEHFtFHGtG ^RIHHHtH ]P’                  ! R4      tJRtKRtLRtM^dtN^ tO ! R R]P4      tQR tRR tSR tTR tUR tVR tWR  R! ltXR" R# ltYR$ R% ltZR& R' lt[R( R) lt\R* R+ lt] ! R, R-4      t^R.RR/R/R0 R1 llt_R2 t`R3 taR4 tbR5 tcR6 R7 ltdR8 teR9 tfR: R; ltgR< thR= R> ltiR? R@ ltjRA tkRB tlRC RD ltmRE RF ltn ! RG RH4      toRI RJ ltpRK RL ltqRMRRNRRORRPRRQRRR^ RS^ RTRRURRVRRWR/RX RY lltrRZ R[ lts] ! R\ R]4      4       tt] ! R^ R_4      4       tu] ! R` Ra4      4       tv] ! Rb Rc4      4       twRd Re ltx ! Rf Rg4      ty ! Rh Ri4      tzR# )jé    N)Údeque)Ú	dataclassÚfield)ÚEmpty)ÚQueue)ÚEventÚLockÚThread)ÚCallableÚ	GeneratorÚListÚOptionalÚTuple)ÚHTTPException)Úmake_logits_processors)Úapc)ÚDEFAULT_KV_GROUP_SIZEÚDEFAULT_KV_QUANT_SCHEMEÚDEFAULT_MAX_TOKENSÚDEFAULT_PREFILL_STEP_SIZEÚDEFAULT_QUANTIZED_KV_STARTÚDEFAULT_REPETITION_CONTEXT_SIZEÚDEFAULT_SEEDÚDEFAULT_TEMPERATUREÚDEFAULT_THINKING_END_TOKENÚDEFAULT_THINKING_START_TOKENÚDEFAULT_TOP_PÚBatchGeneratorÚ_chunked_prefill_enabledÚ_make_cacheÚ_merge_prefill_prompt_kwargs)Úgeneration_streamÚwired_limit)Údiffusion_generation_familyÚstream_diffusion_generate)Útop_p_sampling)Úmake_speculative_prompt_cacheÚrun_speculative_server_roundsÚspeculative_hidden_stateÚspeculative_prefill_kwargs)ÚThinkingAwareLogitsProcessor)Ú_ServerTokenStreamerÚmake_streaming_detokenizer)ÚThinkingBudgetCriteriaÚloadÚprepare_inputs)Úruntimezmlx_vlm.serverg     À‚@ç      @Fc                   ó   € ] tR t^:tRtRtR# )ÚPromptTooLongErrorzCRaised when a request exceeds the configured server context budget.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r5   ó    Új/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/server/generation.pyr4   r4   :   s   † ÝMr<   r4   c                  ój   € \         P                  P                  R 4      p V '       d   \        V 4      # R# )ÚMLX_VLM_DRAFT_BLOCK_SIZEN©ÚosÚenvironÚgetÚint)Údraft_block_size_strs    r=   Ú_get_draft_block_size_from_envrF   >   s)   € ÜŸ:™:Ÿ>™>Ð*DÓEÐß(<Œ3Ð#Ó$ÐFÀ$ÐFr<   c                 ót   € V  F  pV F  p VP                  V4       K  	  K   	  R #   \         d      K3  i ; i©N)ÚputÚ	Exception)ÚqueuesÚitemsÚqueueÚitems   &*  r=   Ú_notify_queuesrO   C   s:   € ÛˆÛˆDðØ—	‘	˜$–ó ó øô ô Ûðús   Œ'§7¶7c                  ó\   € \        \        P                  P                  R \        4      4      # )ÚPREFILL_STEP_SIZE)rD   rA   rB   rC   r   r5   r<   r=   Úget_prefill_step_sizerR   L   s   € ÜŒr�z‰z�~‰~Ð1Ô3LÓMÓNÐNr<   c                  ó\   € \        \        P                  P                  R \        4      4      # )ÚMLX_VLM_MAX_TOKENS)rD   rA   rB   rC   r   r5   r<   r=   Úget_server_max_tokensrU   P   s   € ÜŒr�z‰z�~‰~Ð2Ô4FÓGÓHÐHr<   c                  óî   € \         P                  P                  R R4      p V R8X  d   \        #  \	        V 4      pT^ 8:  d   R# T#   \
         d%    \        P                  RT \        4       \        u # i ; i)ÚMLX_VLM_TOKEN_QUEUE_TIMEOUTÚ z<Invalid MLX_VLM_TOKEN_QUEUE_TIMEOUT=%r; falling back to %ss.N)rA   rB   rC   ÚDEFAULT_TOKEN_QUEUE_TIMEOUTÚfloatÚ
ValueErrorÚloggerÚwarning)Úraw_timeoutÚtimeouts     r=   Úget_token_queue_timeoutr`   T   ss   € Ü—*‘*—.‘.Ð!>ÀÓC€KØ�bÔÜ*Ð*ð+Ü˜Ó$ˆð �!„|ÙØ€Nøô ô +Ü�‰ØJØÜ'ô	
ô
 +Ò*ð+ús   ¯A Á,A4Á3A4c                  óÒ   € \         P                  P                  R \        \        4      4      p  \        R\        V 4      4      R,          #   \         d    \        R,          u # i ; i)ÚMLX_VLM_SPEC_BATCH_COALESCE_MSç        g     @�@)rA   rB   rC   ÚstrÚ%DEFAULT_SPECULATIVE_BATCH_COALESCE_MSÚmaxrZ   r[   ©Úraws    r=   Ú get_speculative_batch_coalesce_sri   f   sT   € Ü
�*‰*�.‰.Ø(¬#Ô.SÓ*Tó€Cð>Ü�3œ˜c›
Ó# fÕ,Ð,øÜô >Ü4°vÕ=Ò=ð>ús   ¯A ÁA&Á%A&c          	      ó^   € V ^8„  d   QhR\         R\        R\        R\        \        ,          /# )é   Úprompt_kwargsÚ
batch_sizeÚsequence_lengthÚreturn)ÚdictrD   r   rd   )Úformats   "r=   Ú__annotate__rr   p   s0   € ÷ 
ñ 
Üð
Ü(+ð
Ü>Að
ä	Œ#…Yñ
r<   c                ó<  € T ;'       g    / P                  4        UUu. uFp  w  r4\        V\        P                  4      '       g   K'  VP                  ^8¼  g   K:  VP
                  ^ ,          V8X  g   KT  VP
                  ^,          V8X  g   Kn  VNKr  	  upp# u uppi )rk   )rL   Ú
isinstanceÚmxÚarrayÚndimÚshape)rl   rm   rn   ÚkÚvs   &$$  r=   Ú_sequence_aligned_prefill_keysr{   p   sŒ   € ð
 #×(Ð( b×/Ñ/Ô1ôá1‰DˆAÜ�aœŸ™×"ô 	
ð �F‰F�a‰Kô 	
ð �G‰G�A�J˜*Ñ$ô	 	
ð
 �G‰G�A�J˜/Ñ)÷ 	
ˆÙ1òð ùó s   ž$BÁBÁBÁ4BÂBc                ó^   € V ^8„  d   QhR\         R\        \        ,          R\        R\         /# ©rk   rl   ÚkeysÚnro   ©rp   r   rd   rD   )rq   s   "r=   rr   rr   }   s,   € ÷ ñ ¬ð ´T¼#µYð Ä3ð Ì4ñ r<   c                 ó~   € V'       g   V # \        V 4      pV F!  pWC9   g   K  W4,          R RV1R3,          W4&   K#  	  V# ©ºNNNN.©rp   ©rl   r~   r   ÚoutÚkeys   &&&  r=   Ú_slice_prefill_kwargsrˆ   }   sC   € ßØÐÜ
ˆ}Ó
€CÛˆØŽ:Ø•x  2 A 2 s 
Õ+ˆC‹Hñ ð €Jr<   c                ó^   € V ^8„  d   QhR\         R\        \        ,          R\        R\         /# r}   r€   )rq   s   "r=   rr   rr   ‡   s,   € ÷ ñ ¬ð ´D¼µIð Ä#ð Ì$ñ r<   c                 ó~   € V'       g   V # \        V 4      pV F!  pWC9   g   K  W4,          R VR1R3,          W4&   K#  	  V# r‚   r„   r…   s   &&&  r=   Ú_drop_prefill_kwargsr‹   ‡   sA   € ßØÐÜ
ˆ}Ó
€CÛˆØŽ:Ø•x  1¡2 s 
Õ+ˆC‹Hñ ð €Jr<   c                óÔ   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        R\        \        ,          R\
        \        \         P                  3,          /# )rk   Ú	input_idsÚinputs_embedsrl   Úspeculative_kwargsÚprefill_step_sizero   )ru   rv   rp   r   rD   r   Úobject)rq   s   "r=   rr   rr   ‘   s`   € ÷ 3$ñ 3$ä�x‰xð3$ô —8‘8ð3$ô
 ð3$ô ð3$ô  ¤•}ð3$ô Œ6”2—8‘8ÐÕñ3$r<   c               óº  € TpTp	\        T;'       g    / 4      p
\        V
VP                  ^ ,          VP                  ^,          R7      pVEe!   V^ 8”  Ed   V	P                  ^,          V8”  Ed    V	P                  ^,          ^8”  dè   \        WiP                  ^,          ^,
          4      p\	        W«V4      p\
        P                  ! V4      ;_uu_ 4        V ! VRRV13,          3RVRV	RRV13,          RV/VB  RRR4       \
        P                  ! V Uu. uF  qîP                  NK  	  up4       VRVR13,          pV	RVR13,          p	\        W«V4      p
\
        P                  ! 4        Kÿ  / V
CVCpWŸR&   \
        P                  ! V4      ;_uu_ 4        V ! V3RV/VB pRRR4       VV3#   + '       g   i     L¼; iu upi   + '       g   i     XT3# ; i)zHPrefill target cache in chunks, capturing speculative state only at end.)rm   rn   Nrƒ   ÚcacherŽ   Ún_to_process)rp   r{   rx   Úminrˆ   ru   ÚstreamÚevalÚstater‹   Úclear_cache)Úlmr�   rŽ   Úprompt_cacherl   r�   r�   r"   Úremaining_input_idsÚremaining_embedsÚremaining_kwargsÚsequence_keysr”   Úchunk_kwargsÚcÚfinal_kwargsr†   s   &&&&&&$$         r=   Ú _run_chunked_speculative_prefillr£   ‘   sß  € ð $ÐØ$ÐÜ˜M×/Ð/¨RÓ0ÐÜ2ØØ—?‘? 1Õ%Ø%×+Ñ+¨AÕ.ô€Mð 	Ó%Ø Õ!Ø×"Ñ" 1Õ%Ð(9Õ9à×$Ñ$ QÕ'¨!Ô+ÜÐ0×2HÑ2HÈÕ2KÈaÕ2OÓPˆLÜ0Ø °óˆLô —’Ð,×-Õ-ÙØ'¨¨=¨L¨=Ð(8Õ9ñà&ðð #3°1°m°|°mÐ3CÕ"Dðð ".ð	ð
 #ò÷ .ô �GŠG¡lÓ3¡l —W”W¡lÑ3Ô4Ø"5°a¸¹Ð6FÕ"GÐØ/°°<±=Ð0@ÕAÐÜ3Ø °ó Ðô �NŠNÖà=Ð&Ð=Ð*<Ð=€LØ$4�Ñ!Ü	�ŠÐ$×	%Õ	%ÙÐ$ÑI¨LÐI¸LÑIˆ÷ 
&àÐ#Ð#Ð#÷) .×-üò 4÷ 
&Ö	%àÐ#Ð#Ð#ús   Ã&F/ÄGÆGÆ/F?	ÇG	c                óH   € V ^8„  d   QhR\         R\         R\         R\         /# )rk   ÚseedÚrow_idÚpositionro   ©rD   )rq   s   "r=   rr   rr   Ç   s(   € ÷ ñ œð ¤cð ´Sð ¼Sñ r<   c                 óP  € \        V 4      R ,          R,          pV\        V4      ^,           R,          ,           R,          pV\        V4      ^,           R,          ,          R,          pW3^,	          ,          pVR,          R,          pW3^,	          ,          p\        VR,          4      # )l   ¹yn< l   ÿÿ l   kJ× l   5.e i-5ër¨   )r¥   r¦   r§   Úxs   &&& r=   Ú_position_seedr«   Ç   s�   € Ü	ˆT‹�ZÕ	 :Õ-€AØ	
Œc�&‹k˜A�o Õ+Õ	+¨zÕ9€AØ	
Œs�8‹}˜qÕ  JÕ.Õ	/°:Õ=€AØˆb�…L€AØ	
ˆZ�˜:Õ%€AØˆb�…L€AÜˆq�:�~ÓÐr<   c                óˆ   € V ^8„  d   QhR\         R\        \         ,          R\        \         ,          R\        P                  /# )rk   r¥   Úrow_idsÚ	positionsro   )rD   r   ru   rv   )rq   s   "r=   rr   rr   Ñ   s4   € ÷ ñ œð ¤t¬C¥yð ¼TÄ#½Yð Ì2Ï8É8ñ r<   c                 óÂ   € \         P                  ! \        W4       UUu. uF.  w  r4\         P                  P	                  \        WV4      4      NK0  	  upp4      # u uppi rH   )ru   ÚstackÚzipÚrandomr‡   r«   )r¥   r­   r®   ÚrowÚposs   &&&  r=   Ú_position_keysrµ   Ñ   sP   € Ü�8Š8ô   Ô3ô	
á3‘�ô �I‰I�M‰Mœ.¨°CÓ8Ö9Ù3ò	
óð ùó	
s   Ÿ4A
c                   ó~   a € ] tR t^Út o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )Ú_PositionedTargetSamplerzCServer sampler with stateless target draws for ragged verification.c                ó<   <€ V ^8„  d   QhRS[ RS[ RS[S[,          /# )rk   ÚtemperatureÚtop_pr¥   )rZ   r   rD   )rq   Ú__classdict__s   "€r=   rr   Ú%_PositionedTargetSampler.__annotate__Ý   s+   ø€ ÷ @ñ @¡uð @±Uð @Á(É3Å-ñ @r<   c               óˆ   € \        V4      V n        \        V4      V n        Vf   \        V n        R # \	        V4      V n        R # rH   )rZ   r¹   rº   r   rD   r¥   )Úselfr¹   rº   r¥   s   &$$$r=   Ú__init__Ú!_PositionedTargetSampler.__init__Ý   s/   € Ü  Ó-ˆÔÜ˜5“\ˆŒ
Ø$(¢L”LˆŽ	´c¸$³iˆŽ	r<   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )rk   Úlogprobsro   ©ru   rv   )rq   r»   s   "€r=   rr   r¼   â   s'   ø€ ÷ Hñ H¡§¡ð H©b¯h©hñ Hr<   c                óô   € V P                   ^ 8”  d2   V P                   R8  d!   \        WP                   V P                  4      # \        P                  P                  V^V P                  ,          ,          4      # )r   ç      ð?)rº   r&   r¹   ru   r²   Úcategorical)r¾   rÂ   s   &&r=   Ú__call__Ú!_PositionedTargetSampler.__call__â   sT   € Ø�:‰:˜Œ>˜dŸj™j¨3Ô.Ü! (¯J©J¸×8HÑ8HÓIÐIÜ�y‰y×$Ñ$ X°°T×5EÑ5EÕ1EÕ%FÓGÐGr<   c                óz   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          RS[ P                  /# )rk   rÂ   r­   r®   ro   )ru   rv   r   rD   )rq   r»   s   "€r=   rr   r¼   ç   sI   ø€ ÷ Iñ Iá—(‘(ðIñ ‘c•ð	Iñ
 ™•9ðIñ 
�‰ñIr<   c               óœ  € VP                   ^ ,          \        V4      8w  g   \        V4      \        V4      8w  d   \        R4      h\        V P                  W#4      pV P
                  ^ 8”  d:   V P
                  R8  d)   \        P                  ! V P                  RR7      ! W4      # \        P                  ! V P                  RR7      ! W4      # )r   z5row_ids and positions must match logprobs batch size.rÅ   )Úin_axes)r   r   )
rx   Úlenr[   rµ   r¥   rº   ru   ÚvmapÚ_sample_top_p_oneÚ_sample_one)r¾   rÂ   r­   r®   r~   s   &&$$ r=   Úsample_targetÚ&_PositionedTargetSampler.sample_targetç   s’   € ð �>‰>˜!Õ¤ G£Ô,´°G³ÄÀIÃÔ0NÜÐTÓUÐUÜ˜dŸi™i¨Ó<ˆØ�:‰:˜Œ>˜dŸj™j¨3Ô.Ü—7’7˜4×1Ñ1¸6ÕBÀ8ÓRÐRÜ�wŠw�t×'Ñ'°Õ8¸ÓHÐHr<   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# ©rk   rÂ   r‡   ro   rÃ   )rq   r»   s   "€r=   rr   r¼   õ   s3   ø€ ÷ Qñ Q¡B§H¡Hð Q±2·8±8ð QÁÇÁñ Qr<   c                ót   € \         P                  P                  V^V P                  ,          ,          VR7      # )é   ©r‡   )ru   r²   rÆ   r¹   )r¾   rÂ   r‡   s   &&&r=   rÏ   Ú$_PositionedTargetSampler._sample_oneõ   s,   € Ü�y‰y×$Ñ$ X°°T×5EÑ5EÕ1EÕ%FÈCÐ$ÓPÐPr<   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# rÓ   rÃ   )rq   r»   s   "€r=   rr   r¼   ø   s3   ø€ ÷ Vñ V©"¯(©(ð V¹¿¹ð VÁbÇhÁhñ Vr<   c                ó”  € VP                   \        P                  8X  d    VP                  \        P                  4      p\        P
                  ! WP                  ,          RR7      p\        P                  ! VRR7      p\        P                  ! W4RR7      p\        P                  ! VRR7      p\        P                  ! V^V P                  ,
          8„  V\        P                  ! V4      4      p\        P                  P                  \        P                  ! V4      VR7      p\        P                  ! WHR,          RR7      ^ ,          # )rÕ   )ÚaxisrÖ   éÿÿÿÿ).N)Údtyperu   Úbfloat16ÚastypeÚfloat32Úsoftmaxr¹   ÚargsortÚtake_along_axisÚcumsumÚwhererº   Ú
zeros_liker²   rÆ   Úlog)	r¾   rÂ   r‡   ÚprobsÚsorted_indicesÚsorted_probsÚcumulative_probsÚ	top_probsÚsampled_poss	   &&&      r=   rÎ   Ú*_PositionedTargetSampler._sample_top_p_oneø   sß   € Ø�>‰>œRŸ[™[Ô(Ø—‘¤r§z¡zÓ2ˆHÜ—
’
˜8×&6Ñ&6Õ6¸RÔ@ˆÜŸš E°Ô3ˆÜ×)Ò)¨%ÀbÔIˆÜŸ9š9 \¸Ô;ÐÜ—H’HØ˜q 4§:¡:�~Ñ-ØÜ�MŠM˜,Ó'ó
ˆ	ô
 —i‘i×+Ñ+¬B¯FªF°9Ó,=À3Ð+ÓGˆÜ×!Ò! .¸iÕ2HÈrÔRÐSTÕUÐUr<   )r¥   r¹   rº   N)r6   r7   r8   r9   r:   r¿   rÇ   rÐ   rÏ   rÎ   r;   Ú__classdictcell__©r»   s   @r=   r·   r·   Ú   sD   ø‡ € ÙM÷@ð @÷
Hð H÷
Ið I÷Qð Q÷Vö Vr<   r·   r­   r®   c          
      ó   € V ^8„  d   QhR\         P                  R\        \         P                  .\         P                  3,          R\        \        \
        ,          ,          R\        \        \
        ,          ,          /# )rk   ÚlogitsÚsamplerr­   r®   )ru   rv   r   r   r   rD   )rq   s   "r=   rr   rr     sZ   € ÷ ñ Ü�H‰Hðä”r—x‘x�j¤"§(¡(Ð*Õ+ðô ”dœ3•iÕ ð	ô
 œœS�	Õ"ñr<   c                óÄ   € V R,          p V \         P                  ! V RRR7      ,
          p\        VRR4      p\        V4      '       d   Ve   Ve   V! WBVR7      # V! V4      # )rƒ   T)rÚ   ÚkeepdimsrÐ   N©r­   r®   rÛ   )rƒ   rÛ   rƒ   )ru   Ú	logsumexpÚgetattrÚcallable)rñ   rò   r­   r®   rÂ   rÐ   s   &&$$  r=   Ú_sample_last_tokenrù     s`   € ð �HÕ€FØœŸš V°"¸tÔDÕD€HÜ˜G _°dÓ;€MÜ�×Ò 7Ò#6¸9Ò;PÙ˜XÀ)ÔLÐLÙ�8ÓÐr<   c                  óz   € \         P                  P                  R 4      p V f   \        # V P	                  4       R9   # )ÚMLX_VLM_ENABLE_THINKING)Ú1ÚtrueÚyesÚon)rA   rB   rC   ÚDEFAULT_ENABLE_THINKINGÚlowerrg   s    r=   Úget_server_enable_thinkingr    s2   € Ü
�*‰*�.‰.Ð2Ó
3€CØ
‚{Ü&Ð&Ø�9‰9‹;Ð4Ñ4Ð4r<   c                  ób   € \         P                  P                  R 4      p V f   R# \        V 4      # )ÚMLX_VLM_THINKING_BUDGETNr@   rg   s    r=   Úget_server_thinking_budgetr    s(   € Ü
�*‰*�.‰.Ð2Ó
3€CØ’;ˆ4Ð,¤C¨£HÐ,r<   c                  ó@   € \         P                  P                  R 4      # )ÚMLX_VLM_THINKING_START_TOKEN©rA   rB   rC   r5   r<   r=   Úget_server_thinking_start_tokenr	  #  s   € Ü�:‰:�>‰>Ð8Ó9Ð9r<   c                  ó@   € \         P                  P                  R 4      # )ÚMLX_VLM_THINKING_END_TOKENr  r5   r<   r=   Úget_server_thinking_end_tokenr  '  s   € Ü�:‰:�>‰>Ð6Ó7Ð7r<   c                ó$   € V ^8„  d   QhR\         /# ©rk   Úmodel©rd   )rq   s   "r=   rr   rr   +  s   € ÷ ñ ¤ñ r<   c                 óš   € \        \        P                  P                  R ^ 4      4      pV^ 8X  d   R# RV 9   d   \	        RV  R24       R# V# )ÚKV_BITSNÚqatúModel z7 is quantization aware, KV cache will not be quantized.)rZ   rA   rB   rC   Úprint)r  Úkv_bitss   & r=   Úget_quantized_kv_bitsr  +  sF   € Ü”B—J‘J—N‘N 9¨aÓ0Ó1€GØ�!„|ÙØ�„~Ü��u�gÐTÐUÔVÙØ€Nr<   c                  ó\   € \        \        P                  P                  R \        4      4      # )ÚKV_GROUP_SIZE)rD   rA   rB   rC   r   r5   r<   r=   Úget_kv_group_sizer  5  s   € ÜŒr�z‰z�~‰~˜oÔ/DÓEÓFÐFr<   c                  óJ   € \         P                  P                  R \        4      # )ÚKV_QUANT_SCHEME)rA   rB   rC   r   r5   r<   r=   Úget_kv_quant_schemer  9  s   € Ü�:‰:�>‰>Ð+Ô-DÓEÐEr<   c                ó$   € V ^8„  d   QhR\         /# r  r  )rq   s   "r=   rr   rr   =  s   € ÷ ñ œ3ñ r<   c                 ó¦   € \        \        P                  P                  R ^ 4      4      pV^ 8X  d   R# \	        V 4      e   \        RV  R24       R# V# )ÚMAX_KV_SIZENr  z. uses QuantizedKVCache, can't set max KV size.)rD   rA   rB   rC   r  r  )r  Úmax_kv_tokenss   & r=   Úget_max_kv_sizer"  =  sL   € ÜœŸ
™
Ÿ™ }°aÓ8Ó9€MØ˜ÔÙÜ˜UÓ#Ò/Ü��u�gÐKÐLÔMÙØÐr<   c                  ól   € \        \        P                  P                  R ^ 4      4      p T ;'       g    R# )r   N)rD   rA   rB   rC   )r!  s    r=   Úget_configured_context_limitr$  G  s)   € ÜœŸ
™
Ÿ™ }°aÓ8Ó9€MØ× Ð ˜DÐ r<   c                ó0   € V ^8„  d   QhR\         R\        /# ©rk   Ú
raw_inputsro   )rp   rD   )rq   s   "r=   rr   rr   L  s   € ÷ Lñ L¤Tð L¬cñ Lr<   c                 óf   € V R ,          p\        VR4      '       d   VP                  # \        V4      # )r�   Úsize)Úhasattrr)  rÌ   )r'  r�   s   & r=   Ú_count_prompt_tokensr+  L  s+   € Ø˜;Õ'€IÜ$ Y°×7Ò7ˆ9�>‰>ÐK¼SÀ»^ÐKr<   c                ó0   € V ^8„  d   QhR\         R\         /# )rk   Úprompt_tokensÚ
max_tokensr¨   )rq   s   "r=   rr   rr   Q  s   € ÷ 	
ñ 	
´Cð 	
ÄSñ 	
r<   c                 ó®   € \        4       pT \        ^ \        T;'       g    ^ 4      4      ,           pVe!   W28”  d   \        RV RV  RV RV R2	4      hR# R# )r   NzRequest needs z context tokens (z
 prompt + z% max generation), but MAX_KV_SIZE is Ú.)r$  rf   rD   r4   )r-  r.  Úcontext_limitÚrequested_tokenss   &&  r=   Ú _check_configured_context_budgetr3  Q  ss   € Ü0Ó2€MØ$¤s¨1¬c°*·/°/ÀÓ.BÓ'CÕCÐØÒ Ð%5Ô%EÜ ØØÐ ð !Øˆ˜j¨¨ð 5"Ø"/ °ð3ó
ð 	
ñ &FÑ r<   c                  ó\   € \        \        P                  P                  R \        4      4      # )ÚQUANTIZED_KV_START)rD   rA   rB   rC   r   r5   r<   r=   Úget_quantized_kv_startr6  ]  s   € ÜŒr�z‰z�~‰~Ð2Ô4NÓOÓPÐPr<   c                 ó€   € \        \        P                  P                  R^ 4      4      p \	        ^ \        V ^4      4      # )zÔMax per-token top_logprobs honored by the server (0 = disabled).

Set via TOP_LOGPROBS_K env var. OpenAI caps this at 20. When 0, requests
with top_logprobs>0 still succeed but the top_logprobs list stays empty.
ÚTOP_LOGPROBS_K)rD   rA   rB   rC   rf   r•   )ry   s    r=   Úget_top_logprobs_kr9  a  s1   € ô 	ŒB�J‰J�N‰NÐ+¨QÓ/Ó0€AÜˆq”#�a˜“*ÓÐr<   c                óh   € V ^8„  d   QhR\         \        ,          R\        R\        \        ,          /# ©rk   Útoken_timesÚwindowro   ©r   rZ   rD   r   )rq   s   "r=   rr   rr   k  s)   € ÷ 	'ñ 	'¤D¬¥Kð 	'¼ð 	'ÄÌ%Åñ 	'r<   c                 óÆ   € \        V 4      ^8  d   R# W) R p\        V4      ^8  d   R# VR,          V^ ,          ,
          pV^ 8:  d   R# \        V4      ^,
          V,          # ©rk   NrÛ   ©rÌ   ©r<  r=  ÚsubsetÚelapseds   &&  r=   Ú_token_window_raterE  k  s[   € Ü
ˆ;Ó˜!ÔÙØ˜˜Ð"€FÜ
ˆ6ƒ{�Q„ÙØ�R�j˜6 !�9Õ$€GØ�!„|ÙÜ�‹K˜!�O˜wÕ&Ð&r<   c                óh   € V ^8„  d   QhR\         \        ,          R\        R\        \        ,          /# r;  r>  )rq   s   "r=   rr   rr   w  s*   € ÷ 	'ñ 	'¬$¬u­+ð 	'¼sð 	'ÄxÔPUÅñ 	'r<   c                 óÆ   € \        V 4      ^8  d   R# V RV p\        V4      ^8  d   R# VR,          V^ ,          ,
          pV^ 8:  d   R# \        V4      ^,
          V,          # r@  rA  rB  s   &&  r=   Ú_token_window_rate_firstrH  w  s[   € Ü
ˆ;Ó˜!ÔÙØ˜˜&Ð!€FÜ
ˆ6ƒ{�Q„ÙØ�R�j˜6 !�9Õ$€GØ�!„|ÙÜ�‹K˜!�O˜wÕ&Ð&r<   c                   óŠ   a € ] tR tRt o Rt]3V 3R lR lltR tV 3R lR ltV 3R lR	 lt	V 3R
 lR lt
V 3R lR ltRtV tR# )ÚServerMetricsStoreiƒ  z=Rolling request metrics and lifetime counters for the server.c                ó    <€ V ^8„  d   QhRS[ /# )rk   Úhistory_limitr¨   )rq   r»   s   "€r=   rr   ÚServerMetricsStore.__annotate__†  s   ø€ ÷ ñ ¡cñ r<   c                ó2   € Wn         V P                  4        R # rH   )rL  Úreset)r¾   rL  s   &&r=   r¿   ÚServerMetricsStore.__init__†  s   € Ø*ÔØ�
‰
Žr<   c                óD  € \         P                   ! 4       V n        \        4       V n        R V n        \        V P                  R7      V n        ^ V n        ^ V n	        ^ V n
        ^ V n        ^ V n        ^ V n        ^ V n        ^ V n        RV n        RV n        R V n        R V n        R # )N)Úmaxlenrc   )ÚtimeÚ
started_atr	   Ú_lockÚ_latestr   rL  Ú_recentÚ_requests_startedÚ_requests_completedÚ_requests_failedÚ_streaming_requestsÚ
_in_flightÚ_prompt_tokens_totalÚ_completion_tokens_totalÚ_generated_tokens_totalÚ_request_time_total_sÚ_decode_time_total_sÚ_last_request_atÚ_last_error©r¾   s   &r=   rO  ÚServerMetricsStore.resetŠ  s�   € ÜŸ)š)›+ˆŒÜ“VˆŒ
Ø'+ˆŒÜ D×$6Ñ$6Ô7ˆŒØ!"ˆÔØ#$ˆÔ Ø !ˆÔØ#$ˆÔ ØˆŒØ$%ˆÔ!Ø()ˆÔ%Ø'(ˆÔ$Ø%(ˆÔ"Ø$'ˆÔ!Ø15ˆÔØ+/ˆÖr<   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )rk   Úendpointr  r–   ©rd   Úbool)rq   r»   s   "€r=   rr   rM  œ  s"   ø€ ÷ .ñ .©ð .±Sð .Á$ñ .r<   c               ó  € ??V P                   ;_uu_ 4        V ;P                  ^,          un        V ;P                  ^,          un        V'       d   V ;P                  ^,          un        RRR4       R#   + '       g   i     R# ; i)rÕ   N)rU  rX  r\  r[  )r¾   rg  r  r–   s   &$$$r=   Úbegin_requestÚ ServerMetricsStore.begin_requestœ  sO   € Ø�eØ�Z�Z‹ZØ×"Ò" aÕ'Õ"Ø�OŠO˜qÕ �OßØ×(Ò(¨AÕ-Õ(÷	 �Z�ZŠZús   —AA5Á5B	c                ó    <€ V ^8„  d   QhRS[ /# )rk   Úenveloper„   )rq   r»   s   "€r=   rr   rM  ¤  s   ø€ ÷ Wñ W¡tñ Wr<   c           	     ó°  € \        V4      pV P                  ;_uu_ 4        V ;P                  ^,          un        \        ^ V P                  ^,
          4      V n        W n        V P                  P                  V4       VP                  R4      V n	        T ;P                  \        VP                  R4      ;'       g    ^ 4      ,          un
        T ;P                  \        VP                  R4      ;'       g    ^ 4      ,          un        T ;P                  \        VP                  R4      ;'       g    ^ 4      ,          un        T ;P                  \        VP                  R4      ;'       g    R4      ,          un        T ;P                   \        VP                  R4      ;'       g    R4      ,          un        RRR4       R#   + '       g   i     R# ; i)	rÕ   Útimestamp_unixr-  Úcompletion_tokensÚgenerated_tokensÚrequest_elapsed_src   Údecode_elapsed_sN)rp   rU  rY  rf   r\  rV  rW  ÚappendrC   rb  r]  rD   r^  r_  r`  rZ   ra  )r¾   rn  Úpayloads   && r=   Úrecord_successÚ!ServerMetricsStore.record_success¤  s<  € Ü�x“.ˆØ�Z�Z‹ZØ×$Ò$¨Õ)Õ$Ü! ! T§_¡_°qÕ%8Ó9ˆDŒOØ"ŒLØ�L‰L×Ñ Ô(Ø$+§K¡KÐ0@Ó$AˆDÔ!Ø×%Ò%¬¨W¯[©[¸Ó-I×-NÐ-NÈQÓ)OÕOÕ%Ø×)Ò)¬S°·±Ð=PÓ1Q×1VÐ1VÐUVÓ-WÕWÕ)Ø×(Ò(¬C°·±Ð<NÓ0O×0TÐ0TÐSTÓ,UÕUÕ(Ø×&Ò&¬%°·±Ð<OÓ0P×0WÐ0WÐTWÓ*XÕXÕ&Ø×%Ò%¬¨w¯{©{Ð;MÓ/N×/UÐ/UÐRUÓ)VÕVÕ%÷ �Z�ZŠZús$    CGÃ7:GÄ2:GÅ-:GÆ(GÇG	c                ó2   <€ V ^8„  d   QhRS[ RS[ RS[RS[ /# )rk   rg  r  r–   Úerrorrh  )rq   r»   s   "€r=   rr   rM  ²  s*   ø€ ÷ ñ ©#ð ±cð Á4ð ÑPSñ r<   c               óZ  € V P                   ;_uu_ 4        V ;P                  ^,          un        \        ^ V P                  ^,
          4      V n        \        P                  ! 4       V n        RV P
                  RVRVR\        V4      RV/V n        RRR4       R#   + '       g   i     R# ; i)rÕ   rp  rg  r  r–   rz  N)rU  rZ  rf   r\  rS  rb  ri  rc  )r¾   rg  r  r–   rz  s   &$$$$r=   Úrecord_failureÚ!ServerMetricsStore.record_failure²  sz   € Ø�Z�Z‹ZØ×!Ò! QÕ&Õ!Ü! ! T§_¡_°qÕ%8Ó9ˆDŒOÜ$(§I¢I£KˆDÔ!à  $×"7Ñ"7Ø˜HØ˜Øœ$˜v›,Ø˜ð ˆDÔ÷	 �Z�ZŠZús   •A:BÂB*	c                ó    <€ V ^8„  d   QhRS[ /# ©rk   ro   r„   )rq   r»   s   "€r=   rr   rM  ¿  s   ø€ ÷ +ñ +™$ñ +r<   c           #     óÈ  € V P                   ;_uu_ 4        V P                  e   \        V P                  4      MR p\        V P                  4      \
        ) R   Uu. uF  p\        V4      NK  	  ppV P                  pV^ 8”  d   V P                  V,          MRpV P                  ^ 8”  d   V P                  V P                  ,          MRpV P                  ^ 8”  d   V P                  V P                  ,          MRpV P                  e   \        V P                  4      MR pV P                  p	RVRVRR\        R\        P                  ! 4       V P                  ,
          4      RV P                   RVRV P"                  R	V P$                  R
V P&                  RV P(                  RV P                  RV P                  RVRVRVRV	RV//uuR R R 4       # u upi   + '       g   i     R # ; i)Nrc   ÚlatestÚrecentÚsummaryÚuptime_sÚrequests_startedÚrequests_completedÚrequests_failedÚstreaming_requestsÚ	in_flightÚprompt_tokens_totalÚcompletion_tokens_totalÚgenerated_tokens_totalÚavg_request_time_sÚavg_request_tok_sÚavg_decode_tok_sÚlast_request_atÚ
last_error)rU  rV  rp   ÚlistrW  ÚMETRICS_RECENT_LIMITrY  r`  r^  ra  r_  rc  rb  rf   rS  rT  rX  rZ  r[  r\  r]  )
r¾   r�  rN   r‚  r†  Úavg_request_timerŽ  r�  r‘  r�  s
   &         r=   ÚsnapshotÚServerMetricsStore.snapshot¿  sÀ  € Ø�Z�Z‹ZØ+/¯<©<Ò+C”T˜$Ÿ,™,Ô'ÈˆFÜ-1°$·,±,Ó-?ÔAUÐ@UÐ@VÑ-WÓXÑ-W T”d˜4–jÑ-WˆFÐXØ!%×!9Ñ!9Ðð &¨Ô)ð ×*Ñ*Ð-?Ö?àð ð ×-Ñ-°Ô1ð ×-Ñ-°×0JÑ0JÖJàð ð ×,Ñ,¨qÔ0ð ×,Ñ,¨t×/HÑ/HÖHàð ð +/×*:Ñ*:Ò*F”�T×%Ñ%Ô&ÈDð ð #×3Ñ3ˆOà˜&Ø˜&ØØ¤ C¬¯ª«°t·±Õ)FÓ GØ&¨×(>Ñ(>Ø(Ð*<Ø% t×'<Ñ'<Ø(¨$×*BÑ*BØ §¡Ø)¨4×+DÑ+DØ-¨t×/LÑ/LØ,¨d×.JÑ.JØ(Ð*:Ø'Ð):Ø&Ð(8Ø% Ø  *ðð÷/ ŠZùâX÷ �ZˆZús   •AGÁGÁ.EGÇGÇG!	)r^  ra  r_  r\  rc  rb  rV  rU  r]  rW  r`  rY  rZ  rX  r[  rL  rT  N)r6   r7   r8   r9   r:   ÚMETRICS_HISTORY_LIMITr¿   rO  rk  rw  r|  r•  r;   rî   rï   s   @r=   rJ  rJ  ƒ  sD   ø‡ € ÙGà,A÷ ò ò0÷$.ð .÷Wð W÷ð ÷+ö +r<   rJ  c                óh   € V ^8„  d   QhR\         R\        \        ,          R\        \        ,          /# )rk   r-  Ú
prompt_tpsro   )rD   r   rZ   )rq   s   "r=   rr   rr   í  s,   € ÷ &ñ &Üð&Ü$,¬U¥Oð&äŒe…_ñ&r<   c                 ó:   € V ^ 8:  g   Ve   V^ 8:  d   R# W,          # ©r   Nr5   )r-  r™  s   &&r=   Ú_prompt_eval_time_from_tpsrœ  í  s#   € ð ˜Ô˜ZÒ/°:À´?ÙØÕ%Ð%r<   c          	      óŠ   € V ^8„  d   QhR\         \        ,          R\        R\        \        ,          R\        \        ,          /# )rk   r<  rr  Úgeneration_tpsro   r>  )rq   s   "r=   rr   rr   õ  s<   € ÷ ñ Ü”e•ðäðô œU•Oðô Œe…_ñ	r<   c                 óš   € \        V 4      ^8¼  d!   V R,          V ^ ,          ,
          pV^ 8”  d   V# V^ 8”  d   Ve   V^ 8”  d	   W,          # R# r@  rA  )r<  rr  rž  rD  s   &&& r=   Ú_decode_elapsed_from_metricsr   õ  sP   € ô
 ˆ;Ó˜1ÔØ˜b•/ K°¥NÕ2ˆØ�QŒ;ØˆNØ˜!Ô Ò :¸~ÐPQÔ?QØÕ0Ð0Ùr<   r<  r™  rž  Úpeak_memory_gbÚfinish_reasonÚimage_countÚaudio_countÚstructured_outputÚthinking_enabledÚtool_parserÚ
tool_callsc          *      ó®  € 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\        /# )rk   rg  r  r–   Úbackendr-  rq  rr  rs  Úrequest_started_sr<  r™  rž  r¡  r¢  r£  r¤  r¥  r¦  r§  r¨  ro   )rd   ri  rD   rZ   r   r   rp   )rq   s   "r=   rr   rr     s  € ÷ Dñ DäðDô ðDô ð	Dô
 ðDô ðDô ðDô ðDô ðDô ðDô œ$œu�+Õ&ðDô œ•ðDô œU•OðDô œU•OðDô œC•=ðDô  ð!Dô" ð#Dô$ ð%Dô& ð'Dô( œ#•ð)Dô* ð+Dô, 
ñ-Dr<   c                 óZ  € T	;'       g    . p	V	'       d   \        R V	^ ,          V,
          4      MRp\        W–V4      pRpVe   V^ 8”  d   TpMVe   V^ 8”  d   V^ 8”  d
   VV,          p\        WJ4      pV^ 8”  d	   WW,          MR p/ R\        P                  ! 4       bRV bRVbR\	        V4      bRVbR\        V4      bR\        V4      bR	\        V4      bR
\        ^ \        V4      \        V4      ,
          4      bR\        V4      \        V4      ,           bRVbRV
bRVbRVbRVbRVbRVbR\        V	^ 4      R\        V	^@4      R\        V	^ 4      R\        V	^@4      RVRVR\        V4      R\        V4      R\	        V4      R\	        V4      RVR\	        V4      R\        P                  RJ/C# ) rc   Nrp  rg  r  r–   rª  r-  rq  rr  Úreasoning_tokensÚtotal_tokensÚprompt_eval_time_sÚprefill_tok_sÚttft_srt  rs  Úrequest_tok_sÚdecode_tok_sÚsliding_decode_tok_s_first_32Úsliding_decode_tok_s_first_64Úsliding_decode_tok_s_last_32Úsliding_decode_tok_s_last_64r¡  r¢  r£  r¤  r¥  r¦  r§  r¨  Úapc_enabled)
rf   r   rœ  rS  ri  rD   rH  rE  r1   Úapc_manager)rg  r  r–   rª  r-  rq  rr  rs  r«  r<  r™  rž  r¡  r¢  r£  r¤  r¥  r¦  r§  r¨  r±  rt  r³  r¯  r²  s   $$$$$$$$$$$$$$$$$$$$     r=   Ú_build_metrics_enveloperº    s<  € ð. ×#Ð# €Kß=HŒS��k !•nÐ'8Õ8Ô9Èd€FÜ3Ø ~óÐð €LØÒ! n°qÔ&8Ø%‰Ø	Ò	%Ð*:¸QÔ*>ÐCSÐVWÔCWØ'Ð*:Õ:ˆÜ3°MÓNÐà1BÀQÔ1FÐÖ-ÈCð ðØœ$Ÿ)š)›+ðà�Hðð 	�ðð 	”$�v“,ð	ð
 	�7ðð 	œ˜]Ó+ðð 	œSÐ!2Ó3ðð 	œCÐ 0Ó1ðð 	œC ¤3Ð'7Ó#8¼3Ð?PÓ;QÕ#QÓRðð 	œ˜MÓ*¬SÐ1BÓ-CÕCðð 	Ð0ðð 	˜ðð 	�&ðð 	Ð,ðð 	Ð.ðð  	˜ð!ð" 	˜ð#ð$ 	(Ô)AÀ+ÈrÓ)RØ'Ô)AÀ+ÈrÓ)RØ&Ô(:¸;ÈÓ(KØ&Ô(:¸;ÈÓ(KØ˜.Ø˜Ø”s˜;Ó'Ø”s˜;Ó'ØœTÐ"3Ó4ØœDÐ!1Ó2Ø�{Ø”d˜:Ó&Ø”w×*Ñ*°$Ð6ñ=ð r<   c                óF   € V ^8„  d   QhR\         R\        \         ,          /# )rk   Ú
model_pathÚadapter_path©rd   r   )rq   s   "r=   rr   rr   J  s"   € ÷ Rñ R¤Sð R¼Ä½ñ Rr<   c                ó”  €  \        RV  24       V'       d   \        RV 24       \        P                  P                  RR4      P	                  4       R8H  p\        WVR7      w  r4VP                  p\        R4       W4V3#   \         d<   p\        RT  R	T 24       \        P                  ! 4        \        R
RT 2R7      hRp?ii ; i)zV
Loads model, processor, and config based on paths.
Handles potential loading errors.
zLoading model from: zLoading adapter from: ÚMLX_TRUST_REMOTE_CODEÚfalserý   )Útrust_remote_codez(Model and processor loaded successfully.zError loading model z: iô  zFailed to load model: )Ústatus_codeÚdetailN)r  rA   rB   rC   r  r/   ÚconfigrJ   Ú	tracebackÚ	print_excr   )r¼  r½  rÂ  r  Ú	processorrÅ  Úes   &&     r=   Úload_model_resourcesrÊ  J  sÐ   € ð
RÜÐ$ Z LÐ1Ô2ßÜÐ*¨<¨.Ð9Ô:ô �J‰J�N‰NÐ2°GÓ<×BÑBÓDÈÑNð 	ô  ØÐ8Iô
Ñˆð —‘ˆÜÐ8Ô9Ø Ð'Ð'øÜô RÜÐ$ Z L°°1°#Ð6Ô7Ü×ÒÔÜ¨Ð6LÈQÈCÐ4PÔQÐQûðRús   ‚A>B ÂCÂ6CÃCc                   ó¤   a € ] tR tRt o Rt]t]t]	t
^ tRtRtRtRt]tRt]tRt]tRt]tRtRtRtRtRtV 3R lR ltV 3R lR	 ltV 3R
 lt Rt!V t"R# )ÚGenerationArgumentsih  z#Arguments for a generation request.rc   NFc                ó    <€ V ^8„  d   QhRS[ /# r  r„   )rq   r»   s   "€r=   rr   Ú GenerationArguments.__annotate__„  s   ø€ ÷ $ñ $¡Dñ $r<   c                óŒ  € RV P                   RV P                  RV P                  RV P                  RV P                  RV P
                  /pV P                  e   V P                  VR&   V P                  e   V P                  VR&   V P                  e   V P                  VR	&   V P                  e   V P                  VR
&   V P                  e   V P                  VR&   V P                  e   V P                  VR&   V P                  e   V P                  VR&   V P                  e   V P                  VR&   V P                  e   V P                  VR&   V P                  e   V P                  VR&   V P                   e   V P                   VR&   V P"                  e   V P"                  VR&   V P$                  e   V P$                  VR&   V# )z8Convert to kwargs dict for generate()/stream_generate().r.  r¹   rº   Útop_kÚmin_pÚenable_thinkingr¥   Úrepetition_penaltyÚrepetition_context_sizeÚpresence_penaltyÚpresence_context_sizeÚfrequency_penaltyÚfrequency_context_sizeÚ
logit_biasÚthinking_budgetÚthinking_start_tokenÚthinking_end_tokenÚlogits_processorsÚ
apc_tenant)r.  r¹   rº   rÐ  rÑ  rÒ  r¥   rÓ  rÔ  rÕ  rÖ  r×  rØ  rÙ  rÚ  rÛ  rÜ  rÝ  Ú	tenant_id©r¾   Úkws   & r=   Úto_generate_kwargsÚ&GenerationArguments.to_generate_kwargs„  sµ  € ð ˜$Ÿ/™/Ø˜4×+Ñ+Ø�T—Z‘ZØ�T—Z‘ZØ�T—Z‘ZØ˜t×3Ñ3ð
ˆð �9‰9Ò ØŸ™ˆBˆv‰JØ×"Ñ"Ò.Ø'+×'>Ñ'>ˆBÐ#Ñ$Ø×'Ñ'Ò3Ø,0×,HÑ,HˆBÐ(Ñ)Ø× Ñ Ò,Ø%)×%:Ñ%:ˆBÐ!Ñ"Ø×%Ñ%Ò1Ø*.×*DÑ*DˆBÐ&Ñ'Ø×!Ñ!Ò-Ø&*×&<Ñ&<ˆBÐ"Ñ#Ø×&Ñ&Ò2Ø+/×+FÑ+FˆBÐ'Ñ(Ø�?‰?Ò&Ø#Ÿ™ˆBˆ|ÑØ×ÑÒ+Ø$(×$8Ñ$8ˆBÐ Ñ!Ø×$Ñ$Ò0Ø)-×)BÑ)BˆBÐ%Ñ&Ø×"Ñ"Ò.Ø'+×'>Ñ'>ˆBÐ#Ñ$Ø×!Ñ!Ò-Ø&*×&<Ñ&<ˆBÐ"Ñ#Ø�>‰>Ò%Ø#Ÿ~™~ˆBˆ|ÑØˆ	r<   c                ó    <€ V ^8„  d   QhRS[ /# r  r„   )rq   r»   s   "€r=   rr   rÎ  ª  s   ø€ ÷ 	ñ 	¡Dñ 	r<   c                óÐ   € RV P                   /pV P                  e   V P                  VR&   V P                  e   V P                  VR&   V P                  e   V P                  VR&   V# )z,Convert to kwargs for apply_chat_template().rÒ  rÚ  rÛ  rÜ  )rÒ  rÚ  rÛ  rÜ  rà  s   & r=   Úto_template_kwargsÚ&GenerationArguments.to_template_kwargsª  sn   € à ×!5Ñ!5Ð6ˆØ×ÑÒ+Ø$(×$8Ñ$8ˆBÐ Ñ!Ø×$Ñ$Ò0Ø)-×)BÑ)BˆBÐ%Ñ&Ø×"Ñ"Ò.Ø'+×'>Ñ'>ˆBÐ#Ñ$Øˆ	r<   c                óB  <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[ ;R&   S[;R&   S[S[ ,          ;R&   S[;R&   S[S[,          ;R&   S[S[ ,          ;R	&   S[S[,          ;R
&   S[S[ ,          ;R&   S[S[,          ;R&   S[S[ ,          ;R&   S[S[,          ;R&   S[;R&   S[S[ ,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[S[S[P                  S[P                  .S[P                  3,          ,          ,          ;R&   S[S[,          ;R&   # )rk   r.  r¹   rº   rÐ  rÑ  r¥   rÂ   rÓ  rÔ  rÕ  rÖ  r×  rØ  rÙ  rÒ  rÚ  rÛ  rÜ  rÝ  rß  )
rD   rZ   r   ri  rp   rd   r   r   ru   rv   )rq   r»   s   "€r=   rr   rÎ  h  s]  ø‡ ‚ ñ Ñ(ñ	 ñ
 Ñ,ñ ñ Ñ ñ ñ �Nñ ñ Ññ ñ ‘3�-Ññ ñ Ññ ñ !¡�Ñ.ñ ñ &¡c�]ÑLñ ñ ™u•oÑ,ñ ñ $¡C�=ÑJñ ñ  ¡•Ñ-ñ ñ  %¡S�MÑKñ! ñ" ™•Ñ%ñ# ñ$ Ñ3ñ% ñ& ™c•]Ñ)ñ' ñ( #¡3�-Ñ.ñ) ñ* !¡�Ñ,ñ+ ñ,  ¡¡X©r¯x©x¹¿¹Ð.BÁBÇHÁHÐ.LÕ%MÕ NÕOÑVñ- ñ4 ™�}Ñ#ò5 r<   r5   )#r6   r7   r8   r9   r:   r   r.  r   r¹   r   rº   rÐ  rÑ  r¥   rÂ   rÓ  r   rÔ  rÕ  rÖ  r×  rØ  rÙ  r   rÒ  rÚ  rÛ  rÜ  rÝ  rß  râ  ræ  Ú__annotate_func__r;   rî   rï   s   @r=   rÌ  rÌ  h  s”   ø‡ € á-à(€JØ,€KØ €EØ€EØ€EØ€DØ€HØ*.ÐØ-LÐØ(,ÐØ+JÐØ)-ÐØ,KÐØ!%€JØ3€OØ%)€OØ*.ÐØ(,ÐØRVÐð  $€I÷$ð $÷L	ð 	÷E ƒ r<   rÌ  c                   ó0   a € ] tR tRt o RtV 3R ltRtV tR# )ÚGenerationContexti¶  z*Context returned when a request is queued.c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   # )rk   Úuidr-  r¨   )rq   r»   s   "€r=   rr   ÚGenerationContext.__annotate__¶  s   ø‡ ‚ ñ 
�Hñ	 ñ
 Ñò r<   r5   N)r6   r7   r8   r9   r:   ré  r;   rî   rï   s   @r=   rë  rë  ¶  s   ø‡ € á4÷ ƒ r<   rë  c                   óv   a € ] tR tRt o Rt]! ]R7      tRt^ t	Rt
RtV 3R lR ltV 3R lR	 ltV 3R
 ltRtV tR# )ÚGenerationMetricsi¾  z<Runtime metrics collected while consuming generation output.)Údefault_factoryrc   Nc                ó   <€ V ^8„  d   QhRR/# ©rk   ro   Nr5   )rq   r»   s   "€r=   rr   ÚGenerationMetrics.__annotate__È  s   ø€ ÷ "ñ " Tñ "r<   c                ó„   € V P                   P                  \        P                  ! 4       4       V P	                  V4       R # rH   )r<  ru  rS  Úperf_counterÚrecord_result)r¾   Úchunks   &&r=   Úrecord_chunkÚGenerationMetrics.record_chunkÈ  s-   € Ø×Ñ×Ñ¤× 1Ò 1Ó 3Ô4Ø×Ñ˜5Ö!r<   c                ó   <€ V ^8„  d   QhRR/# ró  r5   )rq   r»   s   "€r=   rr   rô  Ì  s   ø€ ÷ Mñ M tñ Mr<   c           
     óB  € \        V P                  \        \        VR R4      ;'       g    R4      4      V n        \        VRR4      pVe   W n        \        VRR4      pVe   W0n        \        VRR4      pVe'   \        V P                  \        V4      4      V n        R# R# )Úpeak_memoryrc   r™  Nrž  Úcached_tokens)rf   rý  rZ   r÷   r™  rž  rþ  rD   )r¾   Úresultr™  rž  rþ  s   &&   r=   r÷  ÚGenerationMetrics.record_resultÌ  s™   € ÜØ×Ñœe¤G¨F°MÀ3Ó$G×$NÐ$NÈ3ÓOó
ˆÔô ˜V \°4Ó8ˆ
ØÒ!Ø(ŒOÜ  Ð)9¸4Ó@ˆØÒ%Ø"0ÔÜ ¨¸Ó>ˆØÒ$Ü!$ T×%7Ñ%7¼¸]Ó9KÓ!LˆDÖñ %r<   c                ó†   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[;R&   S[;R&   S[S[,          ;R&   S[S[,          ;R&   # )rk   r<  rý  rþ  r™  rž  r>  )rq   r»   s   "€r=   rr   rô  ¾  sR   ø‡ ‚ ñ ‘e•Ñ:ñ	 ñ
 Ññ ñ Ññ ñ ™•Ñ&ñ ñ ™U•OÑ*ò r<   )rþ  rž  rý  r™  )r6   r7   r8   r9   r:   r   r’  r<  rý  rþ  r™  rž  rù  r÷  ré  r;   rî   rï   s   @r=   rð  rð  ¾  sC   ø‡ € áFá$°TÔ:€KØ€KØ€MØ"&€JØ&*€N÷"ð "÷Mð M÷ ƒ r<   rð  c                   óD   a € ] tR tRt o RtRtRtRt^ t^t	V 3R lt
RtV tR# )ÚStreamingTokeniÛ  zÆA single token response during streaming generation.

Diffusion models stream block-by-block: one StreamingToken per denoised
block, with ``token_count`` carrying the number of tokens in the block.
rc   Nc                óÜ   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[S[ ,          ;R&   S[;R&   S[S[,          ;R&   S[S[S[S[S[3,          ,          ,          ;R&   S[;R&   S[;R	&   # )
rk   ÚtextÚtokenrÂ   r¢  rý  r™  Útop_logprobsrþ  Útoken_count)rd   rD   rZ   r   r   r   )rq   r»   s   "€r=   rr   ÚStreamingToken.__annotate__Û  s’   ø‡ ‚ ñ �Iñ ñ �Jñ ñ �Oñ ñ ™C•=Ñ ñ ñ Ññ ñ ™•Ñ&ñ ñ ™4¡¡c©5 jÕ 1Õ2Õ3Ñ:ñ ñ Ññ ñ  Ñò! r<   r5   )r6   r7   r8   r9   r:   rý  r™  r  rþ  r  ré  r;   rî   rï   s   @r=   r  r  Û  s,   ø‡ € ñð €KØ"&€JØ6:€LØ€MØ€K÷! ƒ r<   r  c                ó   € V ^8„  d   QhRR/# )rk   ro   z%Generator[StreamingToken, None, None]r5   )rq   s   "r=   rr   rr   î  s   € ÷ "ñ "Ð(Oñ "r<   c              #  óz  "  € . p^ p^ pV  EF)  pVP                   '       d   K  VP                  '       d   VP                  VP                  4       VP                  e   \	        VP                  4      pVP
                  '       g   VP                  '       g   KŽ  VP                  '       g	   V'       dm   \        VP                  V,
          ^ 4      pVP                  p\        RP                  V4      VRVP                  VP                  VP                  VR7      x € . pVP                  '       g   EK)   R# 	  R# 5i)aT  Group diffusion engine results into block-by-block streaming tokens.

The diffusion engine emits a canvas's tokens right after that canvas
finishes denoising, followed by a block-boundary marker. Each completed
block becomes one StreamingToken; the final token carries the finish
reason (plus any text flushed by detokenizer finalization).
NrX   ©r  r  rÂ   r¢  rý  r™  r  )Úis_draftr  ru  r  rD   Údiffusion_block_completer¢  rf   Úgeneration_tokensr  Újoinrý  r™  )ÚresultsÚ
block_textÚ
last_tokenÚemitted_tokensrÿ  r  s   &     r=   Ú_diffusion_block_chunksr  î  sü   é € ð €JØ€JØ€NÜˆØ�?�?ˆ?ÙØ�;�;ˆ;Ø×Ñ˜fŸk™kÔ*Ø�<‰<Ò#Ü˜VŸ\™\Ó*ˆJØ×.×.Ð.°v×7K×7KÐ7KÙØ××Ð§:Ü˜f×6Ñ6¸ÕGÈÓKˆKØ#×5Ñ5ˆNÜ Ø—W‘W˜ZÓ(Ø ØØ$×2Ñ2Ø"×.Ñ.Ø!×,Ñ,Ø'ôò ð ˆJØ××ÓÚó/ ùs*   ‚2D;µAD;ÂD;ÂD;Â+D;Â3A;D;Ä4D;c                   óB   a € ] tR tRt o RtR tR tR tR tR t	Rt
V tR	# )
Ú_TokenIteratori  z»Closeable iterator over queued tokens for one generation request.

close() cancels unfinished requests and is safe while another thread is
blocked in __next__ waiting for the next token.
c                óp   € Wn         W n        W0n        W@n        R V n        R V n        \        4       V n        R# )FN)Ú_rqueueÚ_uidÚ
_cancel_fnÚ_queue_timeoutÚ_endedÚ_closedr	   rU  )r¾   Úrqueuerí  Ú	cancel_fnÚqueue_timeouts   &&&&&r=   r¿   Ú_TokenIterator.__init__  s.   € ØŒØŒ	Ø#ŒØ+ÔØˆŒØˆŒÜ“VˆŽ
r<   c                ó   € V # rH   r5   rd  s   &r=   Ú__iter__Ú_TokenIterator.__iter__#  s   € Øˆr<   c                óÀ  € V P                   '       d   \        h V P                  P                  V P                  R 7      pTf   RT n         \        h\        T\        4      '       d
   RT n         Th\        TR	R4      '       d   RT n         T#   \
         dG   pT P                  4        T P                  f   RMRT P                  R R2p\        RT R24      ThRp?ii ; i)
©r_   Nzwithout a timeoutzfor ÚgÚszTimed out waiting zq for the next generated token. Increase MLX_VLM_TOKEN_QUEUE_TIMEOUT for long prefills, or reduce the prompt size.Tr¢  )r  ÚStopIterationr  rC   r  Ú
QueueEmptyÚcloseÚRuntimeErrorrt   rJ   r÷   )r¾   rN   ÚexcÚlabels   &   r=   Ú__next__Ú_TokenIterator.__next__&  sé   € Ø�;�;ˆ;ÜÐð	Ø—<‘<×#Ñ#¨D×,?Ñ,?Ð#Ó@ˆDð Š<ØˆDŒKÜÐÜ�dœI×&Ò&ØˆDŒKØˆJÜ�4˜¨$×/Ò/ØˆDŒKØˆøô- ô 	à�J‰JŒLð ×&Ñ&Ò.ñ $à˜D×/Ñ/°Ð2°!Ð4ð ô
 Ø$Ø�'ð 7ð7óð
 ðûð	ús   š&B ÂCÂACÃCc                ó  € V P                   ;_uu_ 4        V P                  '       d    R R R 4       R # RV n        R R R 4       V P                  '       g   V P                  V P                  4       R # R #   + '       g   i     LA; i©NT)rU  r  r  r  r  rd  s   &r=   r,  Ú_TokenIterator.closeC  sT   € Ø�Z�Z‹ZØ�|�|ˆ|Ø÷ ‰Zð  ˆDŒL÷ ð �{�{ˆ{Ø�O‰O˜DŸI™IÖ&ñ ÷	 �Zús   •A3³A3Á3B	c                óL   €  V P                  4        R #   \         d     R # i ; irH   )r,  rJ   rd  s   &r=   Ú__del__Ú_TokenIterator.__del__K  s"   € ð	Ø�J‰JŽLøÜô 	Úð	ús   ‚ ”#¢#)r  r  r  rU  r  r  r  N)r6   r7   r8   r9   r:   r¿   r$  r0  r,  r6  r;   rî   rï   s   @r=   r  r    s(   ø‡ € ñòòòò:'÷ð r<   r  c                   ó¶  a € ] tR tRt o RtRRR]]]^ R3V 3R lR lltR t	R2V 3R lR llt
R	 tV 3R
 lR ltR tR3V 3R lR lltR4V 3R lR lltV 3R lR ltR2V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR2V 3R lR lltRR R!R"/V 3R# lR$ lltR% tV 3R& lR' ltR( tR) tR* tR2R+ ltV 3R, lR- ltR. tR3V 3R/ lR0 llt R1t!V t"R# )5ÚResponseGeneratoriS  u@  
Continuous batching for concurrent requests via a single GPU thread.

A dedicated thread owns all GPU work (BatchGenerator). FastAPI async
handlers submit requests to a queue and read tokens back from
per-request queues. Multiple requests are batched together for
higher throughput â€” same pattern as mlx-lm's server.
Nc                óJ   <€ V ^8„  d   QhRS[ RS[S[ ,          RS[R,          /# )rk   r¼  r½  r¹  z_apc.APCManagerr¾  )rq   r»   s   "€r=   rr   ÚResponseGenerator.__annotate__]  s3   ø€ ÷ "ñ "áð"ñ ™s•mð"ñ Ð/Õ0ñ"r<   c
                óÖ  € Wn         W n        R V n        R V n        R V n        \        4       V n        W0n        R V n        W@n	        WPn
        W`n        Wpn        W€n        W�n        R V n        \!        4       V n        RV n        \'        4       V n        R V n        \        4       V n        \/        4       V n        \3        V P4                  RR7      V n        V P6                  P9                  4        R # )NFT)ÚtargetÚdaemon)r¼  r½  r  rÈ  rÅ  ÚsetÚstop_tokensÚvision_cacheÚdraft_modelr  Úkv_group_sizeÚkv_quant_schemeÚquantized_kv_startÚtop_logprobs_kr¹  Ú	tokenizerr   ÚrequestsÚ_stopr   Ú_readyÚ_load_errorÚ
_cancelledr	   Ú_cancel_lockr
   Ú_runÚ_threadÚstart)
r¾   r¼  r½  rA  r  rC  rD  rE  rF  r¹  s
   &&&&&&&&&&r=   r¿   ÚResponseGenerator.__init__]  s¼   € ð %ŒØ(ÔØˆŒ
ØˆŒØˆŒÜ›5ˆÔØ(ÔØˆÔØŒØ*ÔØ.ÔØ"4ÔØ,ÔØ&ÔØˆŒÜ$›wˆŒØˆŒ
Ü“gˆŒØ04ˆÔÜ"›uˆŒÜ ›FˆÔÜ T§Y¡Y°tÔ<ˆŒØ�‰×ÑÖr<   c                ó‚   € R V n         V P                  P                  R4       V P                  P	                  RR7       R# )TNr2   r'  )rI  rH  rI   rO  r  rd  s   &r=   Ústop_and_joinÚResponseGenerator.stop_and_join�  s0   € ØˆŒ
Ø�‰×Ñ˜$ÔØ�‰×Ñ #ÐÖ&r<   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# )rk   r_   )r   rZ   )rq   r»   s   "€r=   rr   r;  †  s   ø€ ÷ 7ñ 7©±­ñ 7r<   c                óÔ   € V P                   P                  V4      '       g   \        R 4      hV P                  e   V P                  hV P                  V P
                  V P                  3# )z6Timed out waiting for generation thread to load model.)rJ  Úwaitr-  rK  r  rÈ  rÅ  )r¾   r_   s   &&r=   Úwait_until_readyÚ"ResponseGenerator.wait_until_ready†  sT   € Ø�{‰{×Ñ ×(Ò(ÜÐWÓXÐXØ×ÑÒ'Ø×"Ñ"Ð"Ø�z‰z˜4Ÿ>™>¨4¯;©;Ð6Ð6r<   c                óž   € V P                   ;_uu_ 4        V P                  P                  V4       R R R 4       R #   + '       g   i     R # ; irH   )rM  rL  Úadd)r¾   rí  s   &&r=   Ú_cancelÚResponseGenerator._cancel�  s/   € Ø××ÓØ�O‰O×Ñ Ô$÷ ××Òús	   •;»A	c                ó    <€ V ^8„  d   QhRS[ /# r  )r?  )rq   r»   s   "€r=   rr   r;  ‘  s   ø€ ÷ ñ ¡cñ r<   c                ó¢   € V P                   ;_uu_ 4        V P                  \        4       uqn        VuuR R R 4       #   + '       g   i     R # ; irH   )rM  rL  r?  )r¾   Úpendings   & r=   Ú_drain_cancellationsÚ&ResponseGenerator._drain_cancellations‘  s2   € Ø××ÓØ'+§¡¼»Ð$ˆG”_Ø÷ ××Óús	   •=½A	c           	     óÂ  € \        V P                  V P                  4      w  rp\        4       p\	        VR 4      '       df   \        VP                  \        4      '       d   VP                  VP                  4       M)VP                  e   VP                  VP                  4       Rp\        P                  P                  R4      p\        P                  P                  R4      pV'       dy   ^RIHpHp	 \!        RT;'       g    R RV 24       V! WvR7      w  rZVf   \!        R	V
: R
24       MW¦8w  d   \!        RV
: RV
: RV: R
24       T
p V	! WV4       \!        R4       Wn        W n        W0n        W@n        WPn        W`n        \	        VR4      '       d   VP0                  V n        R# TV n        R#   \"         d   p\!        RT 24       RpRp Rp?LtRp?ii ; i)Úeos_token_idNÚMLX_VLM_DRAFT_KINDÚMLX_VLM_DRAFT_MODEL)Úload_drafterÚvalidate_drafter_compatibilityzLoading speculative drafter (Úautoz): )Úkindu!     â†’ auto-detected --draft-kind=r0  u$     â†’ drafter requires --draft-kind=z; using z instead of u/   Drafter ready â€” speculative decoding enabled.zfSpeculative drafter is incompatible with the target model; falling back to autoregressive generation. rG  )rÊ  r¼  r½  r?  r*  rt   rd  r’  Úupdater[  rA   rB   rC   Úspeculative.draftersrg  rh  r  r[   r  rÈ  rÅ  r@  rB  Ú
draft_kindrG  )r¾   r  rÈ  rÅ  r@  rB  rm  Údraft_model_pathrg  rh  Úresolved_kindrÉ  s   &           r=   Ú_initialize_modelÚ#ResponseGenerator._initialize_model–  sÎ  € Ü#7Ø�O‰O˜T×.Ñ.ó$
Ñ ˆ˜&ô “eˆÜ�6˜>×*Ò*Ü˜&×-Ñ-¬t×4Ò4Ø×"Ñ" 6×#6Ñ#6Õ7Ø×$Ñ$Ò0Ø—‘ × 3Ñ 3Ô4àˆÜ—Z‘Z—^‘^Ð$8Ó9ˆ
ÜŸ:™:Ÿ>™>Ð*?Ó@Ðß÷ô
 Ø/°
×0DÐ0D¸fÐ/EÀSØ#Ð$ð&ôñ *6Ð6FÔ)XÑ&ˆKØÒ!ÜÐ9¸-Ñ9JÈ!ÐLÕMØÔ,ÜØ:¸=Ñ:Kð LØ*Ñ-¨\¸*¹ÀqðJôð 'ˆJð
IÙ.¨uÀ:ÔNô ÐGÔHàŒ
Ø"ŒØŒØ&ÔØ&ÔØ$Œä#*¨9°k×#BÒ#BˆI×Ñð 	ŽØHQð 	Žøô! ô "ÜðBØBCÀðFôð #�Ø!•
ûð"ús   Å	F7 Æ7GÇGÇGc                ó|   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          RS[S[,          RS[S[R3,          /# )rk   ÚpromptÚimagesÚaudioÚargsro   r  )rd   r   r   rÌ  r   rë  )rq   r»   s   "€r=   rr   r;  Î  sW   ø€ ÷ "
ñ "
áð"
ñ ™•ð"
ñ ™�~ð	"
ñ
 Ñ*Õ+ð"
ñ 
Ñ Ð"2Ð2Õ	3ñ"
r<   c                óT  € V P                  4        T;'       g    \        \        4       R 7      pV P                  e   VP                  e   \        R4      hV P                  e   VP                  e   \        R4      h\        4       pV P                  WV4      p\        V4      p\        WtP                  4       V P                  P                  WVWtV34       VP                  4       p\        V\         4      '       d   VhV\#        WXP$                  V P&                  \)        4       4      3# )©r.  zFStructured response_format is not supported with speculative decoding.zIthinking_budget is not supported with speculative decoding in the server.)rX  rÌ  rU   rB  rÝ  r[   rÚ  r   Ú_cpu_preprocessr+  r3  r.  rH  rI   rC   rt   rJ   r  rí  r\  r`   )	r¾   rs  rt  ru  rv  r  r'  r-  Úctxs	   &&&&&    r=   ÚgenerateÚResponseGenerator.generateÎ  s	  € ð 	×ÑÔØ×NÐNÔ*Ô6KÓ6MÔNˆØ×ÑÒ'¨D×,BÑ,BÒ,NÜØXóð ð ×ÑÒ'¨D×,@Ñ,@Ò,LÜØ[óð ô ›ˆð ×)Ñ)¨&¸%Ó@ˆ
Ü,¨ZÓ8ˆÜ(¨¿¹ÔHà�‰×Ñ˜6¨}ÀFÐKÔLð �j‰j‹lˆÜ�cœ9×%Ò%ØˆIà”NØ—G‘G˜TŸ\™\Ô+BÓ+Dó
ð 
ð 	
r<   c                ó    <€ V ^8„  d   QhRS[ /# r  r„   )rq   r»   s   "€r=   rr   r;  ò  s   ø€ ÷ 
ñ 
Á$ñ 
r<   c           	     óú   € V P                   P                  P                  R9   d   \        V P                  RR4      RJ MRp\        V P                   P                  RR4      p\        V P                  VVVVVR7      # )z9CPU-only: tokenize text, load/resize images. Thread-safe.Úchat_templateNTÚimage_token_index)rt  ru  Úpromptsr€  Úadd_special_tokens)Úgemma3Úgemma3nÚgemma4Úgemma4_unified)r  rÅ  Ú
model_typer÷   rÈ  r0   )r¾   rs  rt  ru  r‚  r€  s   &&&&  r=   ry  Ú!ResponseGenerator._cpu_preprocessò  s€   € ð �z‰z× Ñ ×+Ñ+Ø@ôAô �D—N‘N O°TÓ:¸dÑBð ð	 	ô $ D§J¡J×$5Ñ$5Ð7JÈDÓQÐÜØ�N‰NØØØØ/Ø1ô
ð 	
r<   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# ©rk   rv  ro   )rÌ  r   r   )rq   r»   s   "€r=   rr   r;    s!   ø€ ÷ 
ñ 
Ñ"5ð 
¹(Á8Õ:Lñ 
r<   c                ó€   € VP                   ^ 8X  d   R# \        VP                   VP                  VP                  R7      # )r   N)r¹   rº   r¥   )r¹   r·   rº   r¥   )r¾   rv  s   &&r=   Ú_make_samplerÚResponseGenerator._make_sampler  s7   € Ø×Ñ˜qÔ ÙÜ'Ø×(Ñ(Ø—*‘*Ø—‘ô
ð 	
r<   c          	      ó¸   <€ V ^8„  d   QhRS[ RS[S[P                  ,          RS[S[S[P                  S[P                  .S[P                  3,          ,          /# ©rk   rv  r�   ro   )rÌ  r   ru   rv   r   r   )rq   r»   s   "€r=   rr   r;    sN   ø€ ÷ ñ Ù'ðÙ4<¹R¿X¹XÕ4Fðá	‰h™Ÿ™¡"§(¡(Ð+©R¯X©XÐ5Õ6Õ	7ñr<   c           	     ób  € \        VP                  VP                  VP                  VP                  VP
                  VP                  VP                  4      pVP                  eJ   VP                  pVe)   V P                  W4      '       d   V P                  W4      pVP                  V4       V# rH   )r   rÙ  rÓ  rÔ  rÕ  rÖ  r×  rØ  rÝ  Ú_prompt_has_open_thinkingÚ$_wrap_processors_until_thinking_doneÚextend)r¾   rv  r�   Ú
processorsÚrequest_processorss   &&&  r=   Ú_make_logits_processorsÚ)ResponseGenerator._make_logits_processors  s­   € ô ,Ø�O‰OØ×#Ñ#Ø×(Ñ(Ø×!Ñ!Ø×&Ñ&Ø×"Ñ"Ø×'Ñ'ó
ˆ
ð ×!Ñ!Ò-Ø!%×!7Ñ!7ÐØÒ$¨×)GÑ)GØ÷*ò *ð &*×%NÑ%NØó&Ð"ð ×ÑÐ0Ô1ØÐr<   c                ó<   <€ V ^8„  d   QhRS[ RS[S[S[3,          /# rŠ  )rÌ  r   rD   )rq   r»   s   "€r=   rr   r;  &  s$   ø€ ÷ 
>ñ 
>Ñ(;ð 
>ÁÁcÉ3ÀhÅñ 
>r<   c                óð   € V P                   pVP                  ;'       g    \        pVP                  ;'       g    \        pVP                  VR R7      R,          pVP                  VR R7      R,          pWV3# )F)r‚  rÛ   )rG  rÛ  r   rÜ  r   Úencode)r¾   rv  rG  rÛ  rÜ  Úthinking_start_token_idÚthinking_end_token_ids   &&     r=   Ú_thinking_token_idsÚ%ResponseGenerator._thinking_token_ids&  sˆ   € Ø—N‘Nˆ	Ø#×8Ñ8×XÐXÔ<XÐØ!×4Ñ4×RÐRÔ8RÐØ"+×"2Ñ"2Ø °Uð #3ó #
à
õ#Ðð !*× 0Ñ 0Ø°5ð !1ó !
à
õ!Ðð 'Ð=Ð=r<   c                ó@   <€ V ^8„  d   QhRS[ RS[P                  RS[/# r�  )rÌ  ru   rv   ri  )rq   r»   s   "€r=   rr   r;  2  s)   ø€ ÷ %ñ %Ù'ð%Ù46·H±Hð%á	ñ%r<   c                ó°  € VP                   '       g   R # V P                  V4      w  r4VP                  4       P                  4       p \	        V4      ^,
          VRRR1,          P                  V4      ,
          p \	        T4      ^,
          TRRR1,          P                  T4      ,
          pYg8„  #   \         d     R # i ; i  \         d	    Rp Yg8„  # i ; i)FNrÛ   )rÒ  r�  ÚflattenÚtolistrÌ   Úindexr[   )r¾   rv  r�   r›  rœ  ÚtokensÚ
last_startÚlast_ends   &&&     r=   r‘  Ú+ResponseGenerator._prompt_has_open_thinking2  sÒ   € ð ×#×#Ð#ÙØ9=×9QÑ9QÐRVÓ9WÑ6ÐØ×"Ñ"Ó$×+Ñ+Ó-ˆð	Ü˜V› q�¨6±$°B°$­<×+=Ñ+=Ð>UÓ+VÕVˆJð	Ü˜6“{ Q•¨±°"°­×);Ñ);Ð<QÓ)RÕRˆHð Ñ$Ð$øô ô 	Úð	ûô ô 	Ø‰HØÑ$Ð$ð	ús$   Á2B0 Á:2C Â0B?Â>B?ÃCÃCc          	      óü   <€ V ^8„  d   QhRS[ RS[S[S[P                  S[P                  .S[P                  3,          ,          RS[S[S[P                  S[P                  .S[P                  3,          ,          /# )rk   rv  r”  ro   )rÌ  r   r   ru   rv   )rq   r»   s   "€r=   rr   r;  C  si   ø€ ÷ 
ñ 
á!ð
ñ ™¡2§8¡8©R¯X©XÐ"6¹¿¹Ð"@ÕAÕBð
ñ 
‰h™Ÿ™¡"§(¡(Ð+©R¯X©XÐ5Õ6Õ	7ñ	
r<   c                óÈ   € VP                   ;'       g    \        pVP                  ;'       g    \        pV Uu. uF  p\	        VV P
                  VVR R7      NK  	  up# u upi )T)rÈ  rG  rÛ  rÜ  rÒ  )rÛ  r   rÜ  r   r+   rG  )r¾   rv  r”  rÛ  rÜ  rÈ  s   &&&   r=   r’  Ú6ResponseGenerator._wrap_processors_until_thinking_doneC  sq   € ð
  $×8Ñ8×XÐXÔ<XÐØ!×4Ñ4×RÐRÔ8RÐñ (ó	
ñ (�	ô )Ø#ØŸ.™.Ø%9Ø#5Ø $÷ñ (ñ	
ð 		
ùò 	
s   ¹#Ac                óP   <€ V ^8„  d   QhRS[ RS[P                  RS[S[,          /# r�  )rÌ  ru   rv   r   r.   )rq   r»   s   "€r=   rr   r;  U  s/   ø€ ÷ 
ñ 
Ù'ð
Ù46·H±Hð
á	Ñ(Õ	)ñ
r<   c                óø   € VP                   f   R # V P                  pVP                  ;'       g    \        pVP                  ;'       g    \
        pV P                  W4      p\        VVP                   VVVR7      # )N)rG  rÚ  rÜ  rÛ  rÒ  )rÚ  rG  rÛ  r   rÜ  r   r‘  r.   )r¾   rv  r�   rG  rÛ  rÜ  rÒ  s   &&&    r=   Ú_make_thinking_budget_criteriaÚ0ResponseGenerator._make_thinking_budget_criteriaU  sx   € ð ×ÑÒ'ÙØ—N‘Nˆ	Ø#×8Ñ8×XÐXÔ<XÐØ!×4Ñ4×RÐRÔ8RÐØ×8Ñ8¸ÓIˆÜ%ØØ ×0Ñ0Ø1Ø!5Ø+ô
ð 	
r<   c                óP   <€ V ^8„  d   QhRS[ RS[S[P                  S[ 3,          /# r&  )rp   r   ru   rv   )rq   r»   s   "€r=   rr   r;  f  s(   ø€ ÷ !%ñ !%¡Tð !%¹5ÁÇÁÉ4ÀÕ;Pñ !%r<   c                óP  € VP                  R4      pVP                  R4      pVP                  R4      pVP                  4        UUu/ uF  w  rgVR9  g   K  WgbK  	  pppVe&   V P                  e   Ve   V P                  VR&   W(R&   V P                  P                  ! W43RV/VB p	VP                  RR4       VP                  RR4       / VCV	P                  4       Cp
Ve   \        P                  ! VR7      V
R	&   W:3# Ve   \        P                  ! VR
7      V
R	&   W:3# u uppi )z?GPU-only: run vision encoder if needed. Must run on GPU thread.r�   Úpixel_valuesÚattention_maskNrA  Ú
_image_keyÚmask)Ú	image_refÚ_apc_image_hash)r±  )r�   r±  r²  )	rC   rL   rA  r  Úget_input_embeddingsÚpopÚto_dictÚ_apcÚhash_image_payload)r¾   r'  rt  r�   r±  r´  ry   rz   Údata_kwargsÚembedÚ
gen_kwargss   &&&        r=   Ú
_gpu_embedÚResponseGenerator._gpu_embedf  sM  € à—N‘N ;Ó/ˆ	Ø!—~‘~ nÓ5ˆØ�~‰~Ð.Ó/ˆð #×(Ñ(Ô*ô
á*‘�ØÐGÑGô ˆAŠDÙ*ð 	ñ 
ð Ò$Ø×!Ñ!Ò-ØÒ"à*.×*;Ñ*;ˆK˜Ñ'Ø(.˜Ñ%ð —
‘
×/Ò/Øñ
Ø*.ð
Ø2=ñ
ˆð 	�‰˜¨Ô-Ø�‰˜ dÔ+Ø7˜Ð7 u§}¡}£Ð7ˆ
ØÒÜ,0×,CÒ,CÈfÔ,UˆJÐ(Ñ)ð
 Ð$Ð$ð	 Ò%Ü,0×,CÒ,CØ)ô-ˆJÐ(Ñ)ð Ð$Ð$ùó9
s   ÁD"ÁD"Úidle_timeoutgš™™™™™¹?Ú
coalesce_src   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )rk   ÚactiverÁ  rÂ  )ri  rZ   )rq   r»   s   "€r=   rr   r;  ‰  s+   ø€ ÷ $$ñ $$ñ ð$$ñ ð	$$ñ
 ñ$$r<   c               ó¬  a aa€ . oRoVV V3R lp V'       d"   V! S P                   P                  4       4       M#V! S P                   P                  VR7      4        S'       d   V^ 8”  d   \        P
                  ! V4       S'       g$    V! S P                   P                  4       4       K+  SS3#   \         d     Lai ; i  \         d     SS3# i ; i)zICollect the first queued request, then drain immediately available peers.Fc                 ón   <€ V f   SP                   '       d   S'       g   RoR # SP                  V 4       R # r3  )rI  ru  )rN   r`  r¾   Úshould_stops   &€€€r=   Úappend_itemÚ@ResponseGenerator._collect_pending_requests.<locals>.append_item”  s'   ø€ àŠ|Ø—:—:�:§gØ"&�KÙØ�N‰N˜4Ö r<   r'  )rH  Ú
get_nowaitrC   r+  rS  Úsleep)r¾   rÄ  rÁ  rÂ  rÈ  r`  rÇ  s   f$$$ @@r=   Ú_collect_pending_requestsÚ+ResponseGenerator._collect_pending_requests‰  s¾   ú€ ð ˆØˆ÷	!ð	ßÙ˜DŸM™M×4Ñ4Ó6Õ7á˜DŸM™M×-Ñ-°lÐ-ÓCÕD÷ �z A”~Ü�JŠJ�zÔ"çðÙ˜DŸM™M×4Ñ4Ó6Ö7ð ˜Ð#Ð#øô ô 	Ùð	ûô ô Øà˜Ð#Ð#ðús-   ‘B1 ™ B1 º"B1 Â C Â1B?Â>B?ÃCÃCc                óè  €  V P                  4        T P                  P	                  4        \        T P                  4      pTe   T P                  T4       R# T P                  e$   T P                  R8w  d   T P                  4        R# \        P                  ! \        P                   ! 4       4      pRp/ pT P"                  '       EgŽ    \%        T4      pT'       g*   T P                  e   T P                  R8X  d   \'        4       MRpT P)                  TTR7      w  r‰T	'       d   EM/T P+                  4       p
T
'       dQ   TeM   T
 FF  pYµ9   g   K  TP-                  T4       TP/                  T4      p TR,          P1                  R4       KH  	  T'       d1   Te-   T'       g%   TP2                  '       g   TP5                  4        RpT EFe  w  rÞpppTfß   \7        T P                  P8                  T P:                  T P<                  T P?                  T4      T P@                  T PB                  T PD                  T PF                  \%        TPH                  4      TPH                  '       d   T PJ                  M^ TT PL                  T P                  T P                  \O        4       TPP                  ^ 8H  R7      pT PS                  TT4      w  pp\%        TPU                  R4      RJ4      p\W        TR	R4      '       d   TPX                  TR
&   T'       d`   \Z        ;QJ d&    R TP\                   4       F  '       g   K   RM	  RM! R TP\                   4       4      '       d   T P_                  YE4        T Pa                  TT4      pTPc                  TPe                  ^ 4      Pg                  4       .TPh                  T.T Pk                  TT4      .T.R7      w  pTP1                  \m        Y¿R7      4       RTR\o        T Pp                  \s        T P:                  4      4      RT'       d   TMRRRR^ /Y[&   EKh  	  T'       d   Tf   EKŒ  T Pu                  YE4       EK   Te1   \‡        \W        TRR4      4      '       d   TP5                  4        R# R# R#   \         dO   pYn        T P                  P	                  4        \        RT 24       \        P                  ! 4         Rp?R# Rp?ii ; i  \         d     EK²  i ; i  \         d   pTP1                  T4        Rp?EKU  Rp?ii ; i  \         dÁ   p\v        Py                  R4       \{        TP}                  4       4       FF  p TR,          P1                  T4       TR,          P1                  R4       K6    \         d     KD  i ; i	  TP                  4        Rp\        P€                  ! 4        \‚        P„                  ! 4         Rp?EK6  Rp?ii ; i)z?Single GPU thread: owns BatchGenerator, runs tight next() loop.z*Error loading model in generation thread: NÚmtprc   ©rÄ  rÂ  r  )r@  rò   r  rC  rD  rE  Úcompute_logprobsrF  r–   r¹  rB  rm  Údraft_block_sizeÚgreedy_samplingrŽ   rß  Ú_apc_tenantc              3   ó‚   "  € T F5  pV^,          ;'       d    V^,          P                  R4      RJ'       * x € K7  	  R# 5i)é   rŽ   N)rC   )Ú.0r)  s   & r=   Ú	<genexpr>Ú)ResponseGenerator._run.<locals>.<genexpr>  s;   é € ð *á!>˜Að ˜q�T×KÐK a¨¥d§h¡h¨Ó&?ÀtÐ&K×LÑLÛ!>ùs   ‚?—(?TF)r.  rl   rÝ  Úthinking_budget_criteria©rí  r-  Ústreamerr¾  r™  rþ  zError in generation threadr,  )Drp  rJ   rK  rJ  r?  r  rÆ  rÇ  r$   r  Ú_run_diffusionrB  rm  Ú_run_speculativeru   Údefault_streamÚdefault_devicerI  ri  ri   rÌ  ra  Úremover¸  rI   Úhas_workr,  r   Úlanguage_modelrÈ  r@  rŒ  r  rC  rD  rE  rÂ   rF  r¹  rF   r¹   r¿  rC   r÷   rß  ÚanyÚunprocessed_promptsÚ_flushr­  ÚinsertÚsqueezer¢  r.  r–  rë  r,   rG  r-   Ú_stepr\   Ú	exceptionr’  ÚvaluesÚclearr™   ÚgcÚcollectrø   )r¾   rÉ  Údiffusion_familyr"   Ú	batch_genrÄ  Úactive_batchrÂ  Ú	new_itemsrÇ  Ú	cancelledrí  Úinfor  r'  r-  rv  rt  r�   r¾  Ú
has_embedsrÚ  s   &                     r=   rN  ÚResponseGenerator._run¯  s
  € ð	Ø×"Ñ"Ô$ð 	�‰�‰Ôô 7°t·z±zÓBÐØÒ'Ø×ÑÐ 0Ô1Ùà×ÑÒ'¨D¯O©O¸uÔ,DØ×!Ñ!Ô#Ùä×-Ò-¬b×.?Ò.?Ó.AÓBÐàˆ	àˆà—*—*‘*ð{ô  $ F›|�÷ )Ø ×,Ñ,Ò8Ø ŸO™O¨uÔ4ô	 5Ô6ð ð ð *.×)GÑ)GØ'Ø)ð *Hó *Ñ&�	÷ Ùð !×5Ñ5Ó7�	ß Ò!6Û(˜Øž=Ø%×,Ñ,¨SÔ1Ø#)§:¡:¨c£?˜Dð%Ø $ X¥× 2Ñ 2°4Ö 8ñ  )÷  Ò!6¿vØ$×-×-Ð-Ø!Ÿ™Ô)Ø$(˜	äGPÑC�F¨°t¸VØ Ò(Ü$2Ø ŸJ™J×5Ñ5Ø ŸN™NØ(,×(8Ñ(8Ø$(×$6Ñ$6°tÓ$<Ø$(§L¡LØ*.×*<Ñ*<Ø,0×,@Ñ,@Ø/3×/FÑ/FÜ-1°$·-±-Ó-@ØBFÇ-Ç-À-¨4×+>Ò+>ÐUVØ#4Ø(,×(8Ñ(8Ø(,×(8Ñ(8Ø'+§¡Ü-KÓ-MØ,0×,<Ñ,<ÀÑ,Aô!%˜	ð* -1¯O©O¸JÈÓ,OÑ)�I˜zÜ!% j§n¡n°_Ó&EÈTÐ&QÓ!R�Jô ˜t [°$×7Ò7Ø48·N±N˜
 =Ñ1÷ "§c£cñ *à!*×!>Ò!>ó*§c§c¢cñ *à!*×!>Ò!>ó*÷ 'ò 'ð Ÿ™ IÔ6ð!Ø37×3VÑ3VØ  )ó4Ð0ð "+×!1Ñ!1Ø&×.Ñ.¨qÓ1×8Ñ8Ó:Ð;Ø'+§¡Ø+5¨,à $× <Ñ <¸TÀ9Ó Mð/ð 7OÐ5Oð "2ó "™˜ð —J‘JÔ0°SÔVÔWà  &Ø"Ô$8Ø ŸN™NÜ6°t·~±~ÓFó%ð %·J¡jÀDØ$ dØ'¨ð	#�F”Kñw HQ÷L  Ò!2Úà—
‘
˜9×-ð Ò ¤X¬g°iÀÈ$Ó.O×%PÒ%PØ�O‰OÖñ &QÑ øôq ô 	Ø ÔØ�K‰K�O‰OÔÜÐ>¸q¸cÐBÔCÜ×ÒÔ!Ýûð	ûôp $-ô %Û $ð%ûô| %ô !ØŸ
™
 1œÞ ûð!ûô* ô Ü× Ñ Ð!=Ô>Ü  §¡£Ö1�DðØ˜X�×*Ñ*¨1Ô-Ø˜X�×*Ñ*¨4Ö0øÜ$ô Úðúñ	 2ð —‘”Ø �	Ü—’Ô Ü—
’
—“ûðúsï   ‚R Ã
AT& Ä'T& Ä?T& Å"T& Å3S(ÆT& ÆT& Æ#T& Æ5ET& Ì
T& ÌT& Ì8$T& ÍT& Í/A%S;ÏA&T& Ð;T& ÑT& ÒS%ÒAS Ó S%Ó(S8Ó3T& Ó7S8Ó8T& Ó;T#ÔTÔT& ÔT#Ô#T& Ô&W1Ô11W,Õ#0VÖW,ÖV$Ö W,Ö#V$Ö$AW,×,W1c                ó    <€ V ^8„  d   QhRS[ /# )rk   Úfamilyr  )rq   r»   s   "€r=   rr   r;  N  s   ø€ ÷ 'ñ '¡Sñ 'r<   c                ó$  € VR8X  d   V P                   MV P                  p^ p\        4       pV P                  '       gœ    V P	                  RR7      w  rVV'       d   R# W@P                  4       ,          pV F^  w  rxršpV^,          pTpVP                  \        WÉR7      4        V! WÇWŠV4       VP                  R4       \        P                  ! 4        K`  	  K­  R#   \         dX   p\        P                  R4        TP                  T4       TP                  R4        Rp?Le  \         d      Rp?Lvi ; iRp?ii ; i  \         dE    \        P                  R4       \        P                  ! 4        \        P                  ! 4         EKb  i ; i)a%  GPU thread loop for diffusion models.

Diffusion generation runs one request at a time (batch size 1).
Output streams back block-by-block: one queue item per denoised
block, plus a final item carrying the finish reason. Non-streaming
endpoints aggregate the same items into a single response.
ÚblockF)rÄ  rÛ  NzError in diffusion generationz$Error in diffusion generation thread)Ú_generate_diffusionÚ_generate_masked_diffusionr?  rI  rÌ  ra  rI   rë  rJ   r\   rê  ru   r™   rí  rî  )r¾   rø  Úgenerate_requestÚuid_counterró  rò  rÇ  r  r'  r-  rv  Ú_imagesrí  rÉ  s   &&            r=   rÝ  Ú ResponseGenerator._run_diffusionN  sU  € ð ˜Ô ð ×$Ò$à×0Ñ0ð 	ð
 ˆÜ›ˆ	Ø—*—*�*ðØ)-×)GÑ)GÈuÐ)GÓ)UÑ&�	ßÙØ×6Ñ6Ó8Õ8�	ÛHQÑD�F¨¸WØ 1Õ$�KØ%�CØ—J‘JÔ0°SÔVÔWð	!Ù(¨°jÈ	ÔRØŸ
™
 4Ô(ô —N’NÖ$ó IRñ øô %ô !Ü×(Ñ(Ð)HÔIð!Ø"ŸJ™J qœMØ"ŸJ™J t×,Ñ,øÜ(ô !Ý ð!þð!ûô ô Ü× Ñ Ð!GÔHÜ—’Ô Ü—
’
—�ðúsg   ¿E  ÁAE  Â#CÂ>E  ÃD=Ã&D8Ã<"D#ÄE  Ä#D5Ä.D8Ä/E  Ä4D5Ä5D8Ä8D=Ä=E  Å A
FÆFc                óD  € VP                   e   \        R4      hVP                  e*   \        P                  P                  VP                  4       VP                  R4      pVe   VP                  ^8X  d
   VR ,          pV P                  p\        VR4      '       d0   VP                  P                  V P                  P                  4       \        V P                  V P                  TTVP                  R4      VP                  R4      VP                   VP"                  \%        \'        VRR 4      ;'       g    . 4      VP                  R4      R7
      p \)        V P                  \*        .4      ;_uu_ 4        \-        V4       FW  p	VP/                  V	4       V	P0                  '       d    M3WPP3                  4       ,          pW9   g   KF  VP5                  V4        M	  R R R 4       VP7                  4        R #   + '       g   i     L"; i  TP7                  4        i ; i)	NúBStructured response_format is not supported with diffusion models.r�   Ústopping_criteriar±  r²  Úall_special_idsÚmm_token_type_ids)r.  r¹   Úskip_special_token_idsr  )rÝ  r[   r¥   ru   r²   rC   rw   rG  r*  r  rO  rÅ  rd  r%   r  rÈ  r.  r¹   r?  r÷   r#   r"   r  rI   r¢  ra  Údiscardr,  )
r¾   rí  r  r'  rv  ró  r�   rG  r  rø  s
   &&&&&&    r=   rû  Ú%ResponseGenerator._generate_diffusionw  sŸ  € Ø×!Ñ!Ò-ÜØTóð ð �9‰9Ò Ü�I‰I�N‰N˜4Ÿ9™9Ô%à—N‘N ;Ó/ˆ	ØÒ  Y§^¡^°qÔ%8Ø! $�ˆIØ—N‘Nˆ	Ü�9Ð1×2Ò2Ø×'Ñ'×-Ñ-¨d¯k©k×.FÑ.FÔGä+Ø�J‰JØ�N‰NØØØ�N‰N˜>Ó*Ø�N‰NÐ+Ó,Ø—‘Ø×(Ñ(Ü#&Ü˜	Ð#4°dÓ;×AÐA¸ró$ð )Ÿn™nÐ-@ÓAô
ˆð	Ü˜TŸZ™ZÔ*;Ð)<×=Õ=Ü4°WÖ=�EØ—J‘J˜uÔ%Ø×*×*Ð*ÙØ×!:Ñ!:Ó!<Õ<�IØÖ'Ø!×)Ñ)¨#Ô.Ùñ >÷ >ð �M‰MŽO÷ >×=ûð �M‰M�Oús+   Å#H Å9AG:ÇG:Ç H Ç:H
	ÈH ÈHc                óÒ  a aaaaaaaaa€ VP                   e   \        R4      hVP                  e*   \        P                  P                  VP                  4       VP                  R4      oSe   SP                  ^8X  d
   SR,          oS P                  o\        SR4      '       d0   SP                  P                  S P                  P                  4       S P                  p/ oRo^ oRVVVVVV3R lloVVV V3R lp/ pR F  w  rš\        WjR4      pVf   K  W¸V	&   K  	  \        S P                  \         .4      ;_uu_ 4        S P                  P"                  P$                  ! S3RVP&                  R	\        VR
R4      ;'       g    ^ R\        VRR4      ;'       g    ^ RVP(                  RVP*                  e   VP*                  R8¼  d   RMVP*                  RRRRRSRRRSRV/VB p\        P,                  ! V4       RRR4       X^ ,          P/                  4       pV'       d!   SP                  VR,          4      '       d   RMRpS! WÞR7       R#   + '       g   i     L\; i)a	  Generate with a masked-diffusion text model (llada, nemotron).

The model's own blocking generate loop runs the diffusion; an
``on_block`` callback streams each completed block back as one
StreamingToken (models without the hook fall back to a single final
chunk).
Nr  r�   r  rX   c                 ój  <€ V '       d   S
P                  V R R7      MRpVP                  S4      '       d   V\        S4      R pMS'       g   TpMVf   RMTpV'       g   V'       g   R# SP                  R4      ;'       g    RpS	P	                  \        TV '       d
   V R,          M^ RT\        P                  ! 4       R,          V^ 8”  d   SP                  V,          MR\        \        V 4      S,
          ^ 4      R7      4       VP                  S4      '       d   Vo\        \        V 4      S4      oR# )	T)Úskip_special_tokensrX   NÚprompt_timerc   ç    eÍÍAr  rÛ   )
ÚdecodeÚ
startswithrÌ   rC   rI   r  ru   Úget_peak_memoryr)  rf   )r¤  r¢  r  Údeltar  Úemitted_textr  Ú	gen_statsr�   r  rG  s   &&   €€€€€€r=   ÚflushÚ;ResponseGenerator._generate_masked_diffusion.<locals>.flush¼  sø   ø€ çIO�9×#Ñ# FÀÐ#ÔEÐUWˆDØ�‰˜|×,Ò,ØœS Ó.Ð0Ð1‘ß!Ø‘ð ,Ò3™¸�ß§ÙØ#Ÿ-™-¨Ó6×=Ð=¸#ˆKØ�J‰JÜØß(.˜& ž*°AØ!Ø"/Ü "× 2Ò 2Ó 4°sÕ :à8CÀa¼˜	Ÿ™¨Ö4ÈTä #¤C¨£K°.Õ$@À!Ó Dô
ôð �‰˜|×,Ò,Ø#�Ü ¤ V£¨nÓ=ŠNr<   c                 óŠ   <€ S! V 4       SP                  SP                  4       4       SS9   d   SP                  S4       R # R# )FT)rk  ra  r  )r¤  ró  r  r¾   rí  s   &€€€€r=   Úon_blockÚ>ResponseGenerator._generate_masked_diffusion.<locals>.on_blockÛ  s=   ø€ Ù�&ŒMØ×Ñ˜T×6Ñ6Ó8Ô9Ø�iÔØ×!Ñ! #Ô&ÙÙr<   r¹   Úblock_lengthÚdefault_block_lengthÚstepsÚdefault_diffusion_stepsÚ
gen_lengthrº   rÅ   Úeos_early_stopTÚ	visualizeFrG  r  Ústatsr  ÚstopÚlength)r¢  rH   ))Ú	thresholdÚdefault_diffusion_threshold)Úmin_thresholdÚdefault_diffusion_min_threshold)Úediting_thresholdÚ#default_diffusion_editing_threshold)Únum_to_transferÚ!default_diffusion_num_to_transfer)Úmax_transfer_per_stepÚ'default_diffusion_max_transfer_per_step)Úmax_post_stepsÚ default_diffusion_max_post_steps)Ústability_stepsÚ!default_diffusion_stability_stepsrÛ   )rÝ  r[   r¥   ru   r²   rC   rw   rG  r*  r  rO  rÅ  rd  r÷   r#   r  r"   rã  r{  r¹   r.  rº   r—   r¢  )r¾   rí  r  r'  rv  ró  rÅ  r  Útuned_kwargsr‡   Úconfig_attrÚvalueÚ	generatedr¤  r¢  r  r  r  r  r�   rG  s   fff&&f         @@@@@@r=   rü  Ú,ResponseGenerator._generate_masked_diffusion¡  sI  ÿù€ ð ×!Ñ!Ò-ÜØTóð ð �9‰9Ò Ü�I‰I�N‰N˜4Ÿ9™9Ô%à—N‘N ;Ó/ˆ	ØÒ  Y§^¡^°qÔ%8Ø! $�ˆIØ—N‘Nˆ	Ü�9Ð1×2Ò2Ø×'Ñ'×-Ñ-¨d¯k©k×.FÑ.FÔGà—‘ˆØˆ	ØˆØˆ÷	>ô 	>÷>	ð 	ð ˆó!
ÑˆCô ˜F°Ó6ˆEØÔ Ø$)˜SÓ!ñ!
ô ˜Ÿ™Ô&7Ð%8×9Õ9ØŸ
™
×1Ñ1×:Ò:Øñà ×,Ñ,ðô % VÐ-CÀTÓJ×PÐPÈbðô ˜fÐ&?ÀÓF×LÐLÈ"ð	ð
  Ÿ?™?ðð  $Ÿz™zÒ1°T·Z±ZÀ3Ô5F‘tÈDÏJÉJðð  $ðð  ðð $ðð %)ðð  ðð "ðð ñˆIô �GŠG�IÔ÷! :ð$ ˜1•×$Ñ$Ó&ˆç ×!<Ñ!<¸VÀB½Z×!HÒ!H‰FÈhð 	ñ 	ˆf×2÷- :×9ús   ÅAIÆ A"IÉI&	c                ó²  a a?a@aAaB€ ^ RI Hp \        P                  ! \        P                  ! 4       4      pS P
                  P                  pS P                  pS P                  pVR8H  p\        WT4      pV'       d   \        S P                  4      MRpV! ^ R7      p	\        4       p
S P                  '       Eg®   . p/ p S P                  R\        4       R7      w  r½V'       d   R# V'       g   KI  . oB/ p/ oA/ p/ o@/ p/ p. p. p\!        VR4      '       d   RVn        \!        VR4      '       d   RVn        V EF  w  pppppS P'                  VV4      w  pp\)        V4      pSBP+                  V4       VVV&   . SAV&   R	\-        S P.                  \1        S P2                  4      4      /VV&   VP4                  S@V&   VVV&   VP+                  VP7                  ^ 4      P9                  4       4       VP+                  V4       VP;                  \=        VVR
7      4       S P?                  V4      ;'       g
    V! ^ R7      p	EK  	  \A        SB4      p\C        R V 4       4      pV Uu. uF  pV\A        V4      ,
          NK  	  pp\E        V4       UUu. uF  w  pp^ .VV,          ,          V,           NK   	  p pp\        PF                  ! V \        PH                  R7      p!\K        VV4      w  p"p#\M        VVVV\N        R7      p$\Q        4       p%/ V#CVCp&\S        S P
                  V!V"V$VVV&R7      '       g   Rp%\T        PV                  ! 4       p'\Y        VV!V"V$V#VV%VR7      w  p(p!\[        VV(4      p)V'       d   V(P\                  MRp*^ .V,          p+\_        V(P`                  V	V+^ .V,          R7      p,\        Pb                  ! V,V)V(P`                  4       \T        PV                  ! 4       V',
          p-SB F(  pVV,          pV^ 8”  d   V-^ 8”  d
   VV-,          MRVV&   K*  	  \        4       o?V,P9                  4       p.\E        SB4       EF  w  p/p\e        V.V/,          4      p0SAV,          P+                  V04       V0S P                  9   p1\A        SAV,          4      S@V,          8¬  p2V1'       d   RMV2'       d   RMRp3S Pg                  VV,          V0V34      p4VV,          P;                  \i        T4T0RT3V3'       d   \        Pj                  ! 4       R,          M^ VPm                  V4      R7      4       V3f   Kì  VV,          P;                  R4       S?Po                  V4       EK  	  \A        S?4      \A        SB4      8X  d   EKÇ  \C        V@3R lSB 4       4      p5V?V@V VAVB3R lp6\q        S P
                  TT$T)TT,T5T	T
\        PH                  T6\r        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      V*VV!V+R7      p7V7 EFO  w  p8p9\E        V84       EF  w  p/p0V0f   K  SBV/,          pVS?9   d   K  SAV,          P+                  V04       SAV,          p:V0S P                  9   p1\A        V:4      S@V,          8¬  p2V1'       d   RMV2'       d   RMRp3S Pg                  VV,          V0V34      p4VV,          P;                  \i        T4T0RT3V3'       d   \        Pj                  ! 4       R,          M^ VPm                  V4      R7      4       V3f   Kô  VV,          P;                  R4       S?Po                  V4       EK   	  \A        S?4      \A        SB4      8X  g   EKP   M	  VPt                  p;V;'       dq   \w        V;4      \A        V;4      ,           \A        V;4      ,          p<\y        RVP{                  4        RV R\w        VA3R lSB 4       4       RV<R  R!\A        V;4       2
4       SB F’  pVS?9  g   K  VV,          R	,          P}                  4       p4VV,          P;                  \i        V4^ RR\        Pj                  ! 4       R,          VPm                  V4      R7      4       VV,          P;                  R4       K”  	  EKÀ  R# u upi u uppi   \~         dÚ   p=\y        R"T= 24       \€        P‚                  ! 4        TP…                  4        Uu/ uF  p\)        T4      TbK  	  Mu upi p>pT>P‡                  T UU9u/ uF  vpp9\)        T4      TbK  	  Mu up9pi up9p4       \‰        T>P…                  4       T=R4       \        PŠ                  ! 4        \Œ        PŽ                  ! 4         Rp=?=EK¬  Rp=?=ii ; i)#a!  GPU thread loop with DFlash, EAGLE-3, or MTP speculative decoding.

Collects incoming requests, prefills them as a batch with the
per-family hooks, then runs the matching round-loop for decode.
Finished sequences are filtered out automatically by the round-loop's
``stop_check`` callback.
)Úmake_samplerrÏ  N)ÚtempFrÐ  Ú_position_idsÚ_rope_deltasrÜ  rÛ  c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irH   rA  )r×  Úidss   & r=   rØ  Ú5ResponseGenerator._run_speculative.<locals>.<genexpr>R  s   é € Ð@±-¨3œc #Ÿh˜h³-ùs   ‚)rÜ   )rm  rm   Úleft_paddingÚ
make_cache)r�   rŽ   r›   rB  rm  Úprefill_kwargs)r�   r"   rõ   r!  r"  rc   r  )r  r  rÂ   r¢  rý  r™  c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5irH   r5   )r×  ÚuÚmax_tokens_maps   & €r=   rØ  r=  ­  s   øé € Ð>¹°A˜n¨Q×/Ò/»ùs   ƒc                 ó’   <€ SV ,          pVS9   d   R # VSP                   9   d   R # \        SV,          4      SV,          8¼  d   R # R# )TF)r@  rÌ   )Úseq_idxÚtoken_idrí  Úfinished_uidsrC  r¾   Útoken_listsÚuidss   && €€€€€r=   Ú
stop_checkÚ6ResponseGenerator._run_speculative.<locals>.stop_check¯  sE   ø€ Ø˜w�-�CØ˜mÔ+Ù#Ø 4×#3Ñ#3Ô3Ù#Ü˜; sÕ+Ó,°¸sÕ0CÔCÙ#Ù r<   c              3   óJ   "  € T F  w    rpVP                   ^ 8H  x € K  	  R# 5ir›  )r¹   )r×  Ú_Úpending_argss   &  r=   rØ  r=  Å  s+   é € ð (á8?Ñ4˜A˜q !°1ð %×0Ñ0°AÖ5Û8?ùs   ‚!#T)rm  Úfirst_bonusr.  rò   rÒ  Útoken_dtyperJ  rÓ  Úshared_kv_statesÚeos_token_idsr-  r­   Ú[z] batch=z tokens=c              3   óH   <"  € T F  p\        SV,          4      x € K  	  R # 5irH   rA  )r×  rB  rH  s   & €r=   rØ  r=  õ  s   øé € Ð%HÁ4¸a¤c¨+°a­.×&9Ð&9Ã4ùs   ƒ"z accept=z.2fz rounds=z(Error in speculative generation thread: )HÚmlx_lm.sample_utilsr7  ru   rß  rà  r  rã  rB  rm  r*   r?  r@  rF   rI  rÌ  ri   r*  r9  r:  r¿  Úidru  r,   rG  r-   rÈ  r.  rè  r¢  rI   rë  rŒ  rÌ   rf   Ú	enumeraterv   Úint32r!   r'   r    rR   r   rS  rö  r£   r)   rQ  rù   rñ   r—   rD   Ú_stream_textr  r  rC   r[  r(   ÚallÚaccept_lensÚsumr  ÚupperÚfinalizerJ   rÆ  rÇ  rë  rk  rO   r™   rí  rî  )Cr¾   rŒ  r"   rš   Údrafterrm  Úis_mtpr@  Úeos_setrò   rÒ  r`  ÚrqueuesrÇ  Ústream_infosÚprompt_tokens_mapÚprompt_tps_mapÚall_input_idsÚprompt_kwargs_listr  r'  r-  rv  rt  r�   r¾  rí  ÚBÚmax_lenr<  r>  ÚiÚpaddedÚinput_mxÚinputs_embeds_mxrl   r›   r�   Úpolicy_kwargsÚprompt_startedr†   ÚhiddenrQ  Úsample_row_idsrO  Úprompt_elapsedÚfb_listÚjÚtokÚis_stopÚis_maxÚfinishr  Úmax_tokrJ  Úrounds_iterÚtok_listrM  r¤  ÚalÚmean_arÉ  Úerror_queuesrG  rC  rH  rI  sC   f                                                              @@@@r=   rÞ  Ú"ResponseGenerator._run_speculative  sš  ü€ õ 	Fä×-Ò-¬b×.?Ò.?Ó.AÓBÐà�Z‰Z×&Ñ&ˆØ×"Ñ"ˆØ—_‘_ˆ
Ø˜uÑ$ˆÜ3°JÓHˆß+1”#�d×&Ñ&Ô'°tˆÙ QÔ'ˆÜ9Ó;Ðà—*—*‘*ØˆGØˆGðmà'+×'EÑ'EØ Ü?ÓAð (Fó (Ñ$�÷ ÙçÙà�Ø�Ø �Ø!�Ø!#�Ø$&Ð!Ø!#�Ø "�Ø%'Ð"ä˜2˜×/Ò/Ø'+�BÔ$Ü˜2˜~×.Ò.Ø&*�B”OäGNÑC�F˜J¨°t¸VØ,0¯O©O¸JÈÓ,OÑ)�I˜zÜ˜V›*�CØ—K‘K Ô$Ø#)�G˜C‘LØ')�K Ñ$à"Ô$8Ø ŸN™NÜ6°t·~±~ÓFó%ð)�L Ñ%ð +/¯/©/�N 3Ñ'Ø-:Ð% cÑ*Ø!×(Ñ(¨×):Ñ):¸1Ó)=×)DÑ)DÓ)FÔGØ&×-Ñ-¨jÔ9Ø—J‘JÔ0°SÈÔVÔWØ"×0Ñ0°Ó6×OÐO¹-ÈQÔ:O“Gñ# HOô& ˜“I�ÜÑ@±-Ó@Ó@�Ù>KÓL¹m°s ¬#¨c«(× 2Ð 2¹m�ÐLä>GÈÔ>VôÙ>V±F°A°s�Q�C˜, q�/Õ)¨C×/Ð/Ñ>Vð ñ ô Ÿ8š8 F´"·(±(Ô;�ä2NØ&¨ó3Ñ/Ð  -ô  =ØØ)Ø Ø!-Ü*ô �ô %:Ó$;Ð!Ø C =Ð C°NÐ C�Ü/Ø—J‘JØ&Ø"2Ø!-Ø 'Ø)Ø#0÷ó ð )-Ð%ä!%×!2Ò!2Ó!4�Ü @ØØØ$Ø Ø!Ø"Ø&7Ø&7ô	!‘��Xô 2°*¸cÓB�ß;A 3×#7Ò#7ÀtÐ Ø"#  q¥�Ü0Ø—J‘JØØ*Ø ˜c A�gô	�ô —’˜ V¨S¯Z©ZÔ8Ü!%×!2Ò!2Ó!4°~Õ!E�Û�CØ$5°cÕ$:�Mð )¨1Ô,°À!Ô1Cð &¨Ö6à!ð # 3Ó'ñ  ô !$£�ð &×,Ñ,Ó.�Ü'¨Ÿo‘F�A�sÜ˜g a�j›/�CØ Õ$×+Ñ+¨CÔ0Ø! T×%5Ñ%5Ñ5�GÜ  ¨SÕ!1Ó2°nÀSÕ6IÑI�Fß'.™VÇ±HÈD�FØ×,Ñ,¨\¸#Õ->ÀÀVÓL�DØ˜C•L×$Ñ$Ü&Ø!%Ø"%Ø%(Ø*0ßFL¬×(:Ò(:Ó(<¸sÖ(BÐRSØ'5×'9Ñ'9¸#Ó'>ôô	ð Ô)Ø �×(Ñ(¨Ô.Ø%×)Ñ)¨#×.ñ' .ô* �}Ó%¬¨T«Ô2Úô Ô>¹Ó>Ó>�÷!ñ !ô <Ø—J‘JØØ ØØ)Ø +Ø&Ø#Ø%5Ü "§¡Ø)ß$'£Cñ (á8?ó(§C§C¢Cñ (á8?ó(ó %ð &6Ø")Ø"*Ø*ô'�ô* $/‘K�H˜aÜ"+¨H×"5™˜˜3Øš;Ù$Ø" 1�g˜Ø -Ô/Ù$à# CÕ(×/Ñ/°Ô4Ø!,¨SÕ!1˜à"%¨×)9Ñ)9Ñ"9˜Ü!$ V£°¸sÕ0CÑ!C˜ß+2¡ÇF¹ÐPT˜Ø#×0Ñ0°¸cÕ1BÀCÈÓP˜à �×(Ñ(Ü*Ø%)Ø&)Ø),Ø.4ßJP¬B×,>Ò,>Ó,@À3Ö,FÐVWØ+9×+=Ñ+=¸cÓ+Bôô	ð "Ô-Ø# C�L×,Ñ,¨TÔ2Ø)×-Ñ-¨c×2ñ9 #6ô: ˜=Ó)¬S°«Y×6Ùñ? $/ðD ×(Ñ(�ßÜ! "›g¬¨B«Õ/´3°r³7Õ:�FÜØ˜J×,Ñ,Ó.Ð/¨x¸°sð ;"Ü"%Ô%HÁ4Ó%HÓ"HÐ!Ið J"Ø"(¨ ¨X´c¸"³g°Yð@ôó  �CØ -Ö/Ø+¨CÕ0°Õ<×EÑEÓG˜Ø �×(Ñ(Ü*Ø%)Ø&'Ø),Ø.6Ü,.×,>Ò,>Ó,@À3Õ,FØ+9×+=Ñ+=¸cÓ+Bôô	ð   �×(Ñ(¨Ö.ô  ñu ùòf  Mùóøôj ô ÜÐ@ÀÀÐDÔEÜ×#Ò#Ô%ØAHÇÁÔAQÓRÑAQ°v¤ 6£
¨FÒ 2ÒAQùÒR�ÐRØ×#Ñ#É'Ô$RÉ'¸J¸FÀQ¤R¨£Z°Ò%7Ê'ùÖ$RÔSÜ˜|×2Ñ2Ó4°a¸Ô>Ü—’Ô Ü—
’
—“ûðús›   Â=%a2 Ã$a2 Ã.E0a2 Éa'É9a2 Ê	$a,Ê-G6a2 Ò$A9a2 Ô"Aa2 Õ,A#a2 ×B'a2 Ù:A9a2 Û8Aa2 Ýa2 ÝA9a2 ßB
a2 á'a2 á2eá=5eâ2cãeãc7ã6Aeåec                ó  € T;'       g    / pVP                   ! R
/ VB w  rVV FU  pVP                  V9   g   K  VP                  W'P                  ,          R&   \        VR^ 4      W'P                  ,          R&   KW  	  V'       g   R# V EFu  pVP                  V9  d   K  W(P                  ,          p	V	R,          p
VP                  pVf   V	R,          P                  4       p^ pM[\        VR4      '       d.   VP                  4       pV P                  W›VP                  4      pMV P                  W›VP                  4      pVP                  pT
P                  \        TTTVP                  VP                  '       d   \        P                  ! 4       R,          M^ V	P                  R4      \        VRR4      V	P                  R^ 4      R	7      4       VP                  f   EKX  V
P                  R4       W(P                   EKx  	  R# )z,One batch generation step: prefill + decode.r™  rþ  Nr  rÜ  rN   r  r  )r  r  rÂ   r¢  rý  r™  r  rþ  r5   )Únextrí  r™  r÷   r  r^  r*  rN   rY  r¢  Útoken_logprobrI   r  ru   r  rC   )r¾   rð  rÄ  r¾  ÚkwargsÚprompt_responsesÚ	responsesÚprompt_responseÚrrô  r  ru  r  Úlps   &&&&          r=   ré  ÚResponseGenerator._step  s¥  € à×!Ð!˜rˆØ&/§n¢nÑ&>°vÑ&>Ñ#ÐÛ/ˆOØ×"Ñ" fÖ,Ø<K×<VÑ<V�×*Ñ*Õ+¨LÑ9Ü?FØ# _°aó@�×*Ñ*Õ+¨OÓ<ñ  0÷ ÙäˆAØ�u‰u˜FÔ"ÙàŸ%™%•=ˆDØ˜(•^ˆFà—'‘'ˆCØŠ{Ø˜JÕ'×0Ñ0Ó2�Ø‘Ü˜˜f×%Ò%Ø—h‘h“j�Ø×(Ñ(¨°A·O±OÓD‘à×(Ñ(¨°A·O±OÓD�à—‘ˆBà�J‰JÜØØØØ"#§/¡/Ø>?¿o¿o¸o¤× 2Ò 2Ó 4°sÖ :ÐSTØ#Ÿx™x¨Ó5Ü!(¨¨N¸DÓ!AØ"&§(¡(¨?¸AÓ">ô	ôð �‰Õ*Ø—
‘
˜4Ô ØŸ5™5“MóE r<   c                óB   <€ V ^8„  d   QhRS[ RS[RS[S[,          RS[/# )rk   rô  r  r¢  ro   )rp   rD   r   rd   )rq   r»   s   "€r=   rr   r;  C  s.   ø€ ÷ >ñ >¡ð >©cð >Á(É3Å-ð >ÑTWñ >r<   c                ó2   € VR,          P                  W#4      # )z:Convert one generated token into a streaming text segment.rÜ  )Úadvance)r¾   rô  r  r¢  s   &&&&r=   rY  ÚResponseGenerator._stream_textC  s   € à�JÕ×'Ñ'¨Ó=Ð=r<   c                óP   € VP                   '       d   V P                  W4       K%  R# )zFDrain all pending text-only prompts before inserting an image request.N)Úhas_pending_promptsré  )r¾   rð  rÄ  s   &&&r=   ræ  ÚResponseGenerator._flushG  s   € à×+×+Ð+Ø�J‰J�yÖ)ñ ,r<   c          	      ób   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          RS[S[,          /# )rk   rs  rt  ru  rv  )rd   r   r   rÌ  )rq   r»   s   "€r=   rr   r;  L  sA   ø€ ÷ 
ñ 
áð
ñ ™•ð
ñ ™�~ð	
ñ
 Ñ*Õ+ñ
r<   c                óà   € \        4       f   R# V P                  4        T;'       g    \        \        4       R7      pV P	                  WV4      p\        \        V4      VP                  4       R# )z:Validate request size before opening a streaming response.Nrx  )r$  rX  rÌ  rU   ry  r3  r+  r.  )r¾   rs  rt  ru  rv  r'  s   &&&&& r=   Úvalidate_context_budgetÚ)ResponseGenerator.validate_context_budgetL  s[   € ô (Ó)Ò1ÙØ×ÑÔØ×NÐNÔ*Ô6KÓ6MÔNˆØ×)Ñ)¨&¸%Ó@ˆ
Ü(Ü  Ó,¨d¯o©oö	
r<   )rM  rL  rK  rJ  rI  rO  r½  r¹  rÅ  rm  rB  r  rC  rD  r  r¼  rÈ  rE  rH  r@  rG  rF  rA  rH   )NNN)NN)#r6   r7   r8   r9   r:   r   r   r   r¿   rS  rX  r\  ra  rp  r{  ry  rŒ  r–  r�  r‘  r’  r­  r¿  rÌ  rN  rÝ  rû  rü  rÞ  ré  rY  ræ  r“  r;   rî   rï   s   @r=   r9  r9  S  s  ø‡ € ñð '+ØØØ+Ø/Ø5ØØ37÷"ò "òH'÷
7ò 7ò%÷ð ò
6
÷p"
ò "
÷H
ò 
÷(
ð 
÷ò ÷.
>ð 
>÷%ð %÷"
ð 
÷$
ð 
÷"!%ò !%ðF$$ð "ð	$$ð
  ÷$$ò $$òL]÷~'ð 'òR(òTh3òTEôN/"÷b>ð >ò*÷

÷ 
ð 
r<   r9  ){rí  ÚloggingrA   rS  rÆ  Úcollectionsr   Údataclassesr   r   rM   r   r+  r   Ú	threadingr   r	   r
   Útypingr   r   r   r   r   Úmlx.coreÚcoreru   Úfastapir   rU  r   rX   r   rº  r{  r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   Úgenerate.commonr"   r#   Úgenerate.diffusionr$   r%   Úsample_utilsr&   Úspeculative.utilsr'   r(   r)   r*   Ú
structuredr+   Útokenizer_utilsr,   r-   Úutilsr.   r/   r0   r1   Ú	getLoggerr\   rY   re   r   r—  r“  r[   r4   rF   rO   rR   rU   r`   ri   r{   rˆ   r‹   r£   r«   rµ   r·   rù   r  r  r	  r  r  r  r  r"  r$  r+  r3  r6  r9  rE  rH  rJ  rœ  r   rº  rÊ  rÌ  rë  rð  r  r  r  r9  r5   r<   r=   Ú<module>r¥     sŽ  ðÛ 	Û Û 	Û Û Ý ß (Ý %Ý ß )Ñ )ß =Õ =å Ý !Ý 6å ÷÷ ÷ ÷ ñ ÷" =ß WÝ )÷ó õ 6ß Nß @Ñ @Ý à	×	Ò	Ð+Ó	,€à#Ð Ø(+Ð %ØÐ ØÐ ØÐ ôN˜ô NòGò
òOòIòò$>õ
õõõ3$õlõ÷+Vñ +Vð\ð $(ð	ð
 &*÷ò5ò-ò
:ò8õòGòFõò!õ
Lõ
	
òQòõ	'õ	'÷gñ gõT&õðDð *.ðDð #'ðDð '+ðDð '+ðDð $(ðDð  ð!Dð" ð#Dð$ $ð%Dð& #ð'Dð( "&ð)Dð* ÷+DõNRð< ÷Jð Jó ðJðZ ÷ð ó ðð ÷Mð Mó ðMð8 ÷ð ó ðõ$"÷J=ñ =÷@H
ó H
r<   