
    Li                    @   d dl Z d dlZd dlmZmZmZ d dlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ dd	l
mZ dd
l
mZ ddlmZmZ  ej*                  d      Z	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ 	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ!	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ"	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ#	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ$	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ%	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ&	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ'	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fdZ(	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd Z)	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd!Z*	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd"Z+	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd#Z,	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd$Z-	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd%Z.	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd&Z/	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd'Z0	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd(Z1	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd)Z2	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd*Z3	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd+Z4	 	 d3deeeef   ef   deeeef      deeeeef   ef      deeef   fd,Z5 G d- d.e	jl                        Z7 G d/ d0e	jl                        Z8 G d1 d2      Z9y)4    N)AnyOptionalUnion)	urlencode   )_api_module)_common)_transformers)types)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.tuningsfrom_objectparent_objectroot_objectreturnc           
      P   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      $t        |dgt        t        | dg      ||             |S )	NsamplingCountsampling_countflipEnabledflip_enabledautoraterModelautorater_modelgenerationConfiggeneration_config)getvsetv_GenerationConfig_from_vertexr   r   r   	to_objects       R/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/google/genai/tunings.py_AutoraterConfig_from_vertexr#   #   s    
 !)	+()5%&[?:K(LM	+'3^$d;&HI	+()*6&'k<L;M)NO	+*+,8	%123Y	
 
    c           
      P   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      $t        |dgt        t        | dg      ||             |S )	Nr   r   r   r   r   r   r   r   )r   r   _GenerationConfig_to_vertexr    s       r"   _AutoraterConfig_to_vertexr'   >   s    
 !)	+()*6_%tK:J9K'LM	+'(4]OT+7G%HI	+)*+7%&[;L:M(NO	++,-9	#234i	
 
r$   c                 X    i }t        | dg      t        |ddgt        | dg             |S Nname_urlr   r   r    s       r"   #_CancelTuningJobParameters_to_mldevr-   Y   8    
 !)	+x ,VV$d;&AB	r$   c                 X    i }t        | dg      t        |ddgt        | dg             |S r)   r,   r    s       r"   $_CancelTuningJobParameters_to_vertexr0   e   r.   r$   c                    i }t        | dg      t        d      t        | dg      t        |dgt        | dg             t        | dg      t        d      t        | dg      t        |g dt        | dg             t        | d	g      t        |g d
t        | d	g             t        | dg      t        d      t        | dg      t        d      t        | dg      t        d      t        | dg      t        |g dt        | dg             t        | dg      t        |g dt        | dg             t        | dg      t        d      t        | dg      t        d      t        | dg      t        d      |S )Nvalidation_datasetz<validation_dataset parameter is not supported in Gemini API.tuned_model_display_namedisplayNamedescriptionz5description parameter is not supported in Gemini API.epoch_count)
tuningTaskhyperparameters
epochCountlearning_rate_multiplier)r7   r8   learningRateMultiplierexport_last_checkpoint_onlyzEexport_last_checkpoint_only parameter is not supported in Gemini API.pre_tuned_model_checkpoint_idzGpre_tuned_model_checkpoint_id parameter is not supported in Gemini API.adapter_sizez6adapter_size parameter is not supported in Gemini API.
batch_size)r7   r8   	batchSizelearning_rate)r7   r8   learningRateevaluation_configz;evaluation_config parameter is not supported in Gemini API.labelsz0labels parameter is not supported in Gemini API.betaz.beta parameter is not supported in Gemini API.r   
ValueErrorr   r    s       r"   _CreateTuningJobConfig_to_mldevrH   q   s   
 !)	+,-.:
F  
+234@	[567 
+'3
L
MM	+'37[=/* 
+234@C[567 
+567C
O  
+789E
	 
 
+'(4
M
NN	+~&26[<.) 
+()59[?+, 
++,-9
E  
+z".
G
HH	+x ,
E
FF	r$   c           
         i }t        |ddg      }|d}|dk(  r2t        | dg      [t        |dgt        t        | dg      ||             n6|dk(  r1t        | dg      $t        |dgt        t        | dg      ||             t        | dg      t        |d	gt        | dg             t        | d
g      t        |d
gt        | d
g             t        |ddg      }|d}|dk(  r(t        | dg      Gt        |g dt        | dg             n,|dk(  r't        | dg      t        |g dt        | dg             t        |ddg      }|d}|dk(  r(t        | dg      Gt        |g dt        | dg             n,|dk(  r't        | dg      t        |g dt        | dg             t        |ddg      }|d}|dk(  r(t        | dg      Gt        |ddgt        | dg             n,|dk(  r't        | dg      t        |ddgt        | dg             t        |ddg      }|d}|dk(  r(t        | dg      Gt        |g dt        | dg             n,|dk(  r't        | dg      t        |g dt        | dg             t        | dg      t        d      t        | dg      t        d      t        |ddg      }|d}|dk(  r3t        | dg      ]t        |ddgt	        t        | dg      ||             n7|dk(  r2t        | dg      %t        |ddgt	        t        | dg      ||             t        | dg      t        |dgt        | dg             t        | dg      t        |g dt        | dg             |S )NconfigmethodSUPERVISED_FINE_TUNINGr2   supervisedTuningSpecPREFERENCE_TUNINGpreferenceOptimizationSpecr3   tunedModelDisplayNamer5   r6   )rM   hyperParametersr9   )rO   rQ   r9   r:   )rM   rQ   r;   )rO   rQ   r;   r<   exportLastCheckpointOnlyr>   )rM   rQ   adapterSize)rO   rQ   rS   r?   z3batch_size parameter is not supported in Vertex AI.rA   z6learning_rate parameter is not supported in Vertex AI.rC   evaluationConfigrD   rE   )rO   rQ   rE   )r   r   "_TuningValidationDataset_to_vertexrG   _EvaluationConfig_to_vertexr   r   r   r!   discriminators        r"    _CreateTuningJobConfig_to_vertexrY      s}   
 !){Xx$89-,M..K./0<

!
"
,;!5 67K ++K./0<

'
(
,;!5 67K 
+234@	 ![567 
+'3kM?)KL{Xx$89-,M..K-)5


C
{]O
, ++K-)5


I
{]O
, {Xx$89-,M..K456B


O
{78
9 ++K456B


 {78
9 {Xx$89-,M..K789E

!#=
>
{:;
< ++K789E

')C
D
{:;
< {Xx$89-,M..K.)*6


D
{^,
- ++K.)*6


J
{^,
- 
+~&2
J
KK	+()5
M
NN{Xx$89-,M..K-./;

!#5
6
%;!4 56	; ++K-./;

');
<
%;!4 56	; 
+z".
Dxj$AB	+x ,A[6(# 
r$   c                 6   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        t        | dg      ||       t        | dg      t        t        | dg      ||       |S N
base_model	baseModelpre_tuned_modelpreTunedModeltraining_datasetrJ   )r   r   _TuningDataset_to_mldevrH   r    s       r"   *_CreateTuningJobParametersPrivate_to_mldevrb   a  s    
 !)	+~&2[M4l^#DE	+)*+7_%tK:K9L'MN	+*+,8[-./K 
+z".#[8*%y+ 
r$   c                 6   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        t        | dg      ||       t        | dg      t        t        | dg      ||       |S r[   )r   r   _TuningDataset_to_vertexrY   r    s       r"   +_CreateTuningJobParametersPrivate_to_vertexre   z  s    
 !)	+~&2[M4l^#DE	+)*+7_%tK:K9L'MN	+*+,8[-./K 
+z".$[8*%y+ 
r$   c           
      *   i }t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             t        | dg      $t        |dgt	        t        | dg      ||             |S )NmetricsoutputConfigoutput_configautoraterConfigautorater_config)r   r   t	t_metricsr#   r    s       r"   _EvaluationConfig_from_vertexrn     s    
 !)	+	{#/YKT+	{-K!LM	+'(4_%tK.9I'JK	+)*+7	$012I{	
 
r$   c           
      *   i }t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             t        | dg      $t        |dgt	        t        | dg      ||             |S )Nrg   ri   rh   rk   rj   )r   r   rl   rm   r'   r    s       r"   rV   rV     s    
 !)	+	{#/YKT+	{-K!LM	+()5^$d;8I&JK	+*+,8	"123Y	
 
r$   c                    i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | d	g      t        |d
gt        | d	g             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |d gt        | dg             t        | d!g      t        |d"gt        | d!g             t        | d#g      t        |d#gt        | d#g             t        | d$g      t        |d%gt        | d$g             t        | d&g      t        |d'gt        | d&g             t        | d(g      t        |d)gt        | d(g             |S )*NmodelConfigmodel_selection_configresponseJsonSchemaresponse_json_schemaaudioTimestampaudio_timestampcandidateCountcandidate_countenableAffectiveDialogenable_affective_dialogfrequencyPenaltyfrequency_penaltylogprobsmaxOutputTokensmax_output_tokensmediaResolutionmedia_resolutionpresencePenaltypresence_penaltyresponseLogprobsresponse_logprobsresponseMimeTyperesponse_mime_typeresponseModalitiesresponse_modalitiesresponseSchemaresponse_schemaroutingConfigrouting_configseedspeechConfigspeech_configstopSequencesstop_sequencestemperaturethinkingConfigthinking_configtopKtop_ktopPtop_pr,   r    s       r"   r   r     s   
 !)	+'3	!"[=/* 
+,-.:	 [/01 
+()*6&'k<L;M)NO	+()*6&'k<L;M)NO	+/01=	"#[234 
+*+,8	[-./ 
+
|$0ZL${ZL"AB	+)*+7'(${=N<O*P 
+)*+7&'k<M;N)O 
+)*+7&'k<M;N)O 
+*+,8	[-./ 
+*+,8	[-./ 
+,-.:	[/01 
+()*6&'k<L;M)NO	+()5%&[?:K(LM	+x ,VHd;9:	+'(4_%tK.9I'JK	+()5%&[?:K(LM	+'3]OT+%GH	+()*6&'k<L;M)NO	+x ,WItK&:;	+x ,WItK&:;	r$   c           
         i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | d	g      t        |d
gt        | d	g             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      $t        |d gt        t        | dg      ||             t        | d!g      t        |d"gt        | d!g             t        | d#g      t        |d#gt        | d#g             t        | d$g      t        |d%gt        | d$g             t        | d&g      t        |d'gt        | d&g             t        | d(g      t        |d)gt        | d(g             t        | d*g      t        d+      |S ),Nrr   rq   rt   rs   rv   ru   rx   rw   rz   ry   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   r   r   r   enable_enhanced_civic_answerszFenable_enhanced_civic_answers parameter is not supported in Vertex AI.)r   r   _SpeechConfig_to_vertexrG   r    s       r"   r&   r&   0  s"   
 !)	+012>	[345 
+./0<	[123 
+)*+7%&[;L:M(NO	+)*+7%&[;L:M(NO	+123?	 ![456 
++,-9	[./0 
+
|$0ZL${ZL"AB	++,-9%&[;N:O(P 
+*+,8%&[;M:N(O 
+*+,8%&[;M:N(O 
++,-9	[./0 
+,-.:	[/01 
+-./;	[012 
+)*+7%&[;L:M(NO	+()*6_%tK:J9K'LM	+x ,VHd;9:	+()5	/0)[	
 
+()*6_%tK:J9K'LM	+'3]OT+%GH	+)*+7%&[;L:M(NO	+y!-VHd;	:;	+y!-VHd;	:;	+789E
P  
r$   c                 X    i }t        | dg      t        |ddgt        | dg             |S r)   r,   r    s       r"    _GetTuningJobParameters_to_mldevr     r.   r$   c                 X    i }t        | dg      t        |ddgt        | dg             |S r)   r,   r    s       r"   !_GetTuningJobParameters_to_vertexr     r.   r$   c                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             |S N	page_size_querypageSize
page_token	pageTokenfilterr,   r    s       r"   _ListTuningJobsConfig_to_mldevr         
 !)	+}%1*-tK+/O 
+~&2	;[<.) 
+z".8,d;
.KL	r$   c                     i }t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             t        | dg      t        |ddgt        | dg             |S r   r,   r    s       r"   _ListTuningJobsConfig_to_vertexr     r   r$   c                 T    i }t        | dg      t        t        | dg      ||       |S NrJ   )r   r   r    s       r"   "_ListTuningJobsParameters_to_mldevr     s8    
 !)	+z"."[8*%y+ 
r$   c                 T    i }t        | dg      t        t        | dg      ||       |S r   )r   r   r    s       r"   #_ListTuningJobsParameters_to_vertexr      s8    
 !)	+z".#[8*%y+ 
r$   c                 *   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      2t        |dgt        | dg      D cg c]  }t        |||       c}       |S c c}w )NsdkHttpResponsesdk_http_responsenextPageTokennext_page_tokentunedModelstuning_jobs)r   r   _TuningJob_from_mldevr   r   r   r!   items        r"   "_ListTuningJobsResponse_from_mldevr     s    
 !)	+)*+7'(${=N<O*P 
+()5&'kO;L)MN	+'3	 [=/:	
 "$	;?	
 
	
   3Bc                 *   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      2t        |dgt        | dg      D cg c]  }t        |||       c}       |S c c}w )Nr   r   r   r   
tuningJobsr   )r   r   _TuningJob_from_vertexr   s        r"   #_ListTuningJobsResponse_from_vertexr   )  s    
 !)	+)*+7'(${=N<O*P 
+()5&'kO;L)MN	+~&2	 [<.9	
 #4K@	
 
	
r   c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        d      |S )Nlanguage_codelanguageCodevoice_configvoiceConfigmulti_speaker_voice_configzCmulti_speaker_voice_config parameter is not supported in Vertex AI.r   r   rG   r    s       r"   r   r   D  s    
 !)	+()5^$d;8I&JK	+'(4]OT+7G%HI	+456B
M  
r$   c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr*   modelendpointr,   r    s       r"   _TunedModel_from_mldevr   X  s[    
 !)	+x ,WItK&:;	+x ,ZL${VH"=>	r$   c                     i }t        | dg      t        d      t        | dg      t        d      t        | dg      (t        |ddgt        | dg      D cg c]  }| c}       |S c c}w )Ngcs_uriz1gcs_uri parameter is not supported in Gemini API.vertex_dataset_resourcezAvertex_dataset_resource parameter is not supported in Gemini API.examplesrF   r   s        r"   ra   ra   g  s    
 !)	+	{#/
H
II	+123?
K  
+
|$0	Z {ZL9:$: 
 	;s   	A*c                    i }t        |ddg      }|d}|dk(  r(t        | dg      Gt        |ddgt        | dg             n,|dk(  r't        | dg      t        |ddgt        | dg             t        |ddg      }|d}|dk(  r(t        | d	g      Gt        |ddgt        | d	g             n,|dk(  r't        | d	g      t        |ddgt        | d	g             t        | d
g      t        d      |S )NrJ   rK   rL   r   rM   trainingDatasetUrirN   rO   r   r   z1examples parameter is not supported in Vertex AI.r   rW   s        r"   rd   rd     sR   
 !){Xx$89-,M..K)%1

!#7
8
{YK
( ++K)%1

')=
>
{YK
( {Xx$89-,M..K345A

!#7
8
{67
8 ++K345A

')=
>
{67
8 
+
|$0
H
II	r$   c           
      F   i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             t        | ddg      t        |d	gt        | ddg             t        | dd
g      t        |dgt        | dd
g             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      $t        |dgt	        t        | dg      ||             |S )Nr   r   r*   state
createTimecreate_timer7   	startTime
start_timecompleteTimeend_time
updateTimeupdate_timer5   r]   r\   _selftuned_model)r   r   rl   t_tuning_job_statusr   r    s       r"   r   r     s   
 !)	+)*+7'(${=N<O*P 
+x ,VHd;9:	+y!-			d;	:; 
+~&2]OT+~%FG	+k23?	[<56 
+n56B	[<89 
+~&2]OT+~%FG	+'3]OT+%GH	+}%1\ND{m$DE	+y!-	wi()[	
 
r$   c           
         i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      ,t        |dgt        j                  t        | dg                   t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | d	g      t        |d
gt        | d	g             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      $t        |d gt	        t        | dg      ||             t        | d!g      t        |d"gt        | d!g             t        | d#g      t        |d#gt        | d#g             t        | d$g      t        |d$gt        | d$g             t        | d%g      t        |d&gt        | d%g             t        | d'g      t        |d(gt        | d'g             t        | d)g      t        |d*gt        | d)g             t        | d+g      t        |d,gt        | d+g             t        | d-g      t        |d.gt        | d-g             |S )/Nr   r   r*   r   r   r   r   r   endTimer   r   r   errorr5   r]   r\   
tunedModelr   r_   r^   rM   supervised_tuning_specrO   preference_optimization_spectuningDataStatstuning_data_statsencryptionSpecencryption_specpartnerModelTuningSpecpartner_model_tuning_specrT   rC   customBaseModelcustom_base_model
experimentrD   	outputUri
output_uripipelineJobpipeline_jobserviceAccountservice_accountrP   r3   veoTuningSpecveo_tuning_spec)r   r   rl   r   rn   r    s       r"   r   r     s{   
 !)	+)*+7'(${=N<O*P 
+x ,VHd;9:	+y!-			d;	:; 
+~&2]OT+~%FG	+}%1\ND{m$DE	+	{#/ZL${YK"@A	+~&2]OT+~%FG	+y!-WItK';<	+'3]OT+%GH	+}%1\ND{m$DE	+~&2]OT+~%FG	+()5&'kO;L)MN	+./0<	!"[123 
+456B	'([789 
+)*+7'(${=N<O*P 
+()*6&'k<L;M)NO	+012>	$%[345 
+*+,8	%123Y	
 
+)*+7'(${=N<O*P 
+~&2\ND|n$EF	+z".XJ[8* =>	+}%1\ND{m$DE	+'3^$d;&HI	+()*6&'k<L;M)NO	+/01=	#$[234 
+()5&'kO;L)MN	r$   c                    i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr   r   r*   metadatadoner   r,   r    s       r"   _TuningOperation_from_mldevr   d  s    
 !)	+)*+7'(${=N<O*P 
+x ,VHd;9:	+
|$0ZL${ZL"AB	+x ,VHd;9:	+y!-WItK';<	r$   c                     i }t        | dg      t        |dgt        | dg             t        | dg      t        |dgt        | dg             |S )Nr   validationDatasetUrir   r,   r    s       r"   rU   rU   ~  si    
 !)	+	{#/+,d;.LM	+123?	 [456 
r$   c                      e Zd Zdddedeej                     dej                  fdZdddeej                     dej                  fdZdddedeej                     ddfdZdddd	d
ee   deej                     dej                  deej                      dej                  f
dZdddd	d
ee   deej                     dej                  deej                      dej$                  f
dZdddeej                     deej                     fdZdddedeej                     dej                  fdZ ej0                  d      ddd
edej                  deej                      dej                  fd       Zy)TuningsNrJ   r*   rJ   r   c                \   t        j                  ||      }| j                  j                  r5t	        |d|      }|j                  d      }|rdj                  |      }n7d}n4t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||      }	|	j                   si nt#        j$                  |	j                         }
| j                  j                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                         	      }t        j0                  |	j2                  
      |_        | j                  j7                  |       |S zzGets a TuningJob.

    Args:
      name: The resource name of the tuning job.

    Returns:
      A TuningJob object.
    r*   rJ   Nr+   z{name}r   ?rJ   getresponsekwargsheaders)r   _GetTuningJobParameters_api_clientvertexair   r  
format_mapr   r   poprJ   http_optionsr	   convert_to_dictencode_unserializable_typesrequestbodyjsonloadsr   r   	TuningJob_from_response
model_dumpHttpResponser	  r   _verify_responseselfr*   rJ   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr  r  response_dictreturn_values               r"   _getzTunings._get  s    33O   6
4l &))&1	""#345
4l &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''t\<PH&mmBHMM1JM  ,];m$$+M:m??11'A'A'C 2 L &+%7%7  &L" 	%%l3r$   c                Z   t        j                  |      }| j                  j                  r5t	        |d|      }|j                  d      }|rdj                  |      }n7d}n4t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||      }|j                   si nt#        j$                  |j                         }	| j                  j                  rt'        |	      }	| j                  j                  st)        |	      }	t         j*                  j-                  |	|j/                         
      }
t        j0                  |j2                        |
_        | j                  j7                  |
       |
S zLists `TuningJob` objects.

    Args:
      config: The configuration for the list request.

    Returns:
      A list of `TuningJob` objects.
    r   Nr+   r   r   r   r  rJ   r  r  r  )r   _ListTuningJobsParametersr  r  r   r  r  r   r   r  rJ   r  r	   r  r  r  r  r  r  r   r   ListTuningJobsResponser  r  r  r	  r   r  r  rJ   r  r  r  r   r!  r  r  r"  r#  s              r"   _listzTunings._list  s    55O   8
4l &))&1	&&'787
4l &))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''t\<PH&mmBHMM1JM  9-Hm$$8Gm//>>'A'A'C ? L &+%7%7  &L" 	%%l3r$   c                   t        j                  ||      }| j                  j                  r5t	        |d|      }|j                  d      }|rdj                  |      }n7d}n4t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||      }	y)	zPCancels a tuning job.

    Args:
      name (str): TuningJob resource name.
    r  Nr+   {name}:cancelr   r  rJ   post)r   _CancelTuningJobParametersr  r  r0   r  r  r-   r   r  rJ   r  r	   r  r  r  
r  r*   rJ   r  r  r  r   r!  r  r  s
             r"   cancelzTunings.cancel%  sQ    66O   9
4l &))&1	))*:;8
4l &))&1	))*:;##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLHr$   r\   r^   rJ   r\   r^   r`   c                   t        j                  ||||      }| j                  j                  st	        d      t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }	|	r| dt        |	       }|j                  dd       d}
|j                  ,|j                  j                  |j                  j                  }
t        j                  |      }t        j                  |      }| j                  j                  d	|||
      }|j                   si nt#        j$                  |j                         }| j                  j                  rt'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |j0                        |_        | j                  j5                  |       |S a  Creates a tuning job and returns the TuningJob object.

    Args:
      base_model: The name of the model to tune.
      training_dataset: The training dataset to use.
      config: The configuration to use for the tuning job.

    Returns:
      A TuningJob object.
    r\   r^   r`   rJ   z6This method is only supported in the Vertex AI client.Nr+   r   r   r  rJ   r-  r  r  )r   !_CreateTuningJobParametersPrivater  r  rG   re   r  r  r   r  rJ   r  r	   r  r  r  r  r  r  r   r  r  r  r  r	  r   r  r  r\   r^   r`   rJ   r  r  r  r   r!  r  r  r"  r#  s                 r"   _tunezTunings._tune^  s   & ==')	O $$OPP@
4l &))&1	&&'78##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM  ,];m??11'A'A'C 2 L &+%7%7  &L" 	%%l3r$   c                   t        j                  ||||      }| j                  j                  rt	        d      t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }	|	r| dt        |	       }|j                  dd       d}
|j                  ,|j                  j                  |j                  j                  }
t        j                  |      }t        j                  |      }| j                  j                  d	|||
      }|j                   si nt#        j$                  |j                         }| j                  j                  st'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |j0                        |_        | j                  j5                  |       |S a  Creates a tuning job and returns the TuningJob object.

    Args:
      base_model: The name of the model to tune.
      training_dataset: The training dataset to use.
      config: The configuration to use for the tuning job.

    Returns:
      A TuningJob operation.
    r4  z=This method is only supported in the Gemini Developer client.Nr+   r   r   r  rJ   r-  r  r  )r   r5  r  r  rG   rb   r  r  r   r  rJ   r  r	   r  r  r  r  r  r  r   TuningOperationr  r  r  r	  r   r  r6  s                 r"   _tune_mldevzTunings._tune_mldev  s   & ==')	O   
I  @
4l &))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL''lLH 'mmBHMM1JM$$1-@m((77'A'A'C 8 L &+%7%7  &L" 	%%l3r$   c                R    t        d| j                  | j                  |      |      S Nr   r   )r   r*  r  rJ   s     r"   listzTunings.list  s,     



&
!	 r$   c                   | j                  ||      }|j                  ra| j                  j                  rK| j                  j                  5t
        j                  |j                  | j                  j                         |S Nr  )r   projectr$  r   r  r  rB  _IpythonUtilsdisplay_experiment_buttonr  r*   rJ   jobs       r"   r  zTunings.get  sn     ))f)
-C%%$$0--^^""** .  Jr$   SThe SDK's tuning implementation is experimental, and may change in future versions.c                   | j                   j                  rx|j                  d      r>d }|rt        |dd       }t	        j
                  ||      }| j                  |||      }nd }|t        |dd       t        |d      }t        |t              rt	        j                  di |}|j                  r|j                  st        d      t        t        |j                              D ]Y  }	t        |j                  |	   t              s!t        j                  j!                  |j                  |	         |j                  |	<   [ t        |t              r||d<   n||_        |}| j                  |||      }|t        |dd       ||_        n| j%                  |||      }
|
j&                  d|
j&                  v r|
j&                  d   }n5|
j(                  t        d	      |
j(                  j+                  d
      d   }t	        j,                  |t        j.                  j0                        }|j(                  r6| j                   j                  r t2        j5                  |j(                         |S Nz	projects/r=   )tuned_model_namecheckpoint_id)r^   r`   rJ   rC   zEEvaluation config must have at least one metric and an output config.)r\   r`   rJ   r   zOperation name is required.z/operations/r   )r*   r   )tuning_job_resource r  r  
startswithgetattrr   PreTunedModelr7  
isinstancedictEvaluationConfigrg   ri   rG   rangelenMetricmodel_validaterC   r;  r   r*   	partitionr  JobStateJOB_STATE_QUEUEDrD  display_model_tuning_button)r  r\   r`   rJ   rL  r^   
tuning_jobvalidated_evaluation_configrC   i	operationrK  s               r"   tunezTunings.tune  su      			{	+!&*I4P---'}
 ZZ+-   

 IM# 3T:F%f.AB
)40 % 6 6 K9J K#++&44  .6678 a+33A6=-2\\-H-H#++A..''*
 %*;F&''8F$(9
%ZZ!-   

  3T:F)D*
&""+ # i
 
			'LI<N<N,N$--l;>>!89
9$>>33NCAF??//j 4++44//(oo 0  r$   )__name__
__module____qualname__strr   r   GetTuningJobConfigOrDictr  r$  ListTuningJobsConfigOrDictr(  r*  CancelTuningJobConfigOrDictr0  PreTunedModelOrDictTuningDatasetOrDictCreateTuningJobConfigOrDictr7  r:  r;  r   r?  r  r	   experimental_warningrb  rN  r$   r"   r   r     sV    :>	I I u556	I
 IX EIE @ @AE##EV =A	7 7 u889	7
 7x #'=A<@G 3-G   9 9:	G
 11G u889G GX #'=A<@I 3-I   9 9:	I
 11I u889I IX EI @ @AU__ :>	  u556	
 $  7+ =AM M 11	M
 u889M M	Mr$   r   c                      e Zd Zdddedeej                     dej                  fdZdddeej                     dej                  fdZdddedeej                     ddfdZdddd	d
ee   deej                     dej                  deej                      dej                  f
dZdddd	d
ee   deej                     dej                  deej                      dej$                  f
dZdddeej                     deej                     fdZdddedeej                     dej                  fdZ ej0                  d      ddd
edej                  deej                      dej                  fd       Zy)AsyncTuningsNr   r*   rJ   r   c                x  K   t        j                  ||      }| j                  j                  r5t	        |d|      }|j                  d      }|rdj                  |      }n7d}n4t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||       d{   }	|	j                   si nt#        j$                  |	j                         }
| j                  j                  rt'        |
      }
| j                  j                  st)        |
      }
t         j*                  j-                  |
|j/                         	      }t        j0                  |	j2                  
      |_        | j                  j7                  |       |S 7 wr  )r   r
  r  r  r   r  r  r   r   r  rJ   r  r	   r  r  async_requestr  r  r  r   r   r  r  r  r  r	  r   r  r  s               r"   r$  zAsyncTunings._getd  s     33O   6
4l &))&1	""#345
4l &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t\< H 'mmBHMM1JM  ,];m$$+M:m??11'A'A'C 2 L &+%7%7  &L" 	%%l3's   EH:H8C%H:c                v  K   t        j                  |      }| j                  j                  r5t	        |d|      }|j                  d      }|rdj                  |      }n7d}n4t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||       d{   }|j                   si nt#        j$                  |j                         }	| j                  j                  rt'        |	      }	| j                  j                  st)        |	      }	t         j*                  j-                  |	|j/                         
      }
t        j0                  |j2                        |
_        | j                  j7                  |
       |
S 7 wr&  )r   r'  r  r  r   r  r  r   r   r  rJ   r  r	   r  r  rq  r  r  r  r   r   r(  r  r  r  r	  r   r  r)  s              r"   r*  zAsyncTunings._list  s     55O   8
4l &))&1	&&'787
4l &))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33t\< H 'mmBHMM1JM  9-Hm$$8Gm//>>'A'A'C ? L &+%7%7  &L" 	%%l3's   EH9H7C%H9c                  K   t        j                  ||      }| j                  j                  r5t	        |d|      }|j                  d      }|rdj                  |      }n7d}n4t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||       d{   }	y7 w)	zaCancels a tuning job asynchronously.

    Args:
      name (str): A TuningJob resource name.
    r  Nr+   r,  r   r  rJ   r-  )r   r.  r  r  r0   r  r  r-   r   r  rJ   r  r	   r  r  rq  r/  s
             r"   r0  zAsyncTunings.cancel  s_     66O   9
4l &))&1	))*:;8
4l &))&1	))*:;##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H s   EEEEr1  r\   r^   r`   c                  K   t        j                  ||||      }| j                  j                  st	        d      t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }	|	r| dt        |	       }|j                  dd       d}
|j                  ,|j                  j                  |j                  j                  }
t        j                  |      }t        j                  |      }| j                  j                  d	|||
       d{   }|j                   si nt#        j$                  |j                         }| j                  j                  rt'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |j0                        |_        | j                  j5                  |       |S 7 íwr3  )r   r5  r  r  rG   re   r  r  r   r  rJ   r  r	   r  r  rq  r  r  r  r   r  r  r  r  r	  r   r  r6  s                 r"   r7  zAsyncTunings._tune3  s    & ==')	O $$OPP@
4l &))&1	&&'78##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM  ,];m??11'A'A'C 2 L &+%7%7  &L" 	%%l3!   D)G1+G/,CG1c                  K   t        j                  ||||      }| j                  j                  rt	        d      t        |d|      }|j                  d      }|rdj                  |      }nd}|j                  d      }	|	r| dt        |	       }|j                  dd       d}
|j                  ,|j                  j                  |j                  j                  }
t        j                  |      }t        j                  |      }| j                  j                  d	|||
       d{   }|j                   si nt#        j$                  |j                         }| j                  j                  st'        |      }t         j(                  j+                  ||j-                         
      }t        j.                  |j0                        |_        | j                  j5                  |       |S 7 íwr9  )r   r5  r  r  rG   rb   r  r  r   r  rJ   r  r	   r  r  rq  r  r  r  r   r:  r  r  r  r	  r   r  r6  s                 r"   r;  zAsyncTunings._tune_mldev|  s    & ==')	O   
I  @
4l &))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL%%33lL H 'mmBHMM1JM$$1-@m((77'A'A'C 8 L &+%7%7  &L" 	%%l3!ru  c                n   K   t        d| j                  | j                  |       d {   |      S 7 	wr=  )r   r*  r>  s     r"   r?  zAsyncTunings.list  s8      

jjj''	  	(s   '53
5c                "  K   | j                  ||       d {   }|j                  ra| j                  j                  rK| j                  j                  5t
        j                  |j                  | j                  j                         |S 7 swrA  rC  rF  s       r"   r  zAsyncTunings.get  sz      		tF	3
3C%%$$0--^^""** .  J 4s   BBA4BrH  c                  K   | j                   j                  rn|j                  d      rFd }|rt        |dd       }t	        j
                  ||      }| j                  |||       d {   }n|t        |dd       t        |d      }t        |t              rt	        j                  di |}|j                  r|j                  st        d      t        t        |j                              D ]Y  }t        |j                  |   t              s!t        j                  j!                  |j                  |         |j                  |<   [ t        |t              r||d<   n||_        | j                  |||       d {   }n| j%                  |||       d {   }	|	j&                  d|	j&                  v r|	j&                  d   }
n5|	j(                  t        d	      |	j(                  j+                  d
      d   }
t	        j,                  |
t        j.                  j0                        }|j(                  r6| j                   j                  r t2        j5                  |j(                         |S 7 7 7 ۭwrJ  rO  )r  r\   r`   rJ   rL  r^   r^  rC   r`  ra  rK  s              r"   rb  zAsyncTunings.tune  sn       			{	+!&*I4P---'}
  ::+- & 
 

  3T:F%f.AB
)40 % 6 6 K9J K#++&44  .6678 a+33A6=-2\\-H-H#++A..''*
 %*;F&''8F$::!- & 
 

 ((+ )  i
 
			'LI<N<N,N$--l;>>!89
9$>>33NCAF??//j 4++44//(oo 0  o
<
s?   A(I=*I6+B'I=A/I=I9I=I; CI=9I=;I=)rc  rd  re  rf  r   r   rg  r  r$  rh  r(  r*  ri  r0  rj  rk  rl  r7  r:  r;  r   r?  r  r	   rm  rb  rN  r$   r"   ro  ro  b  sV    :>	K K u556	K
 K\ EIG @ @AG##GZ =A	7 7 u889	7
 7x #'=A<@G 3-G   9 9:	G
 11G u889G GX #'=A<@I 3-I   9 9:	I
 11I u889I IX EI @ @A%//" :>	  u556	
 $  7+ =AG G 11	G
 u889G G	Gr$   ro  c            
          e Zd ZU dZ e       Zee   ed<   ede	ee
f   fd       Zedefd       Zedefd       Zededee   defd	       Ze	 dd
ededee   ddfd       Zedededdfd       Zededdfd       Zy)rD  z6Temporary class to hold the IPython related functions.displayed_experimentsr   c                  j    dd l } d| j                  v r!ddlm}  |       j                  j
                  S y)Nr   IPython)get_ipython )sysmodulesr}  r~  	__class__rc  )r  r~  s     r"   _get_ipython_shell_namez%_IpythonUtils._get_ipython_shell_name6  s+    CKK%]$$---r$   c                  <    t        t        j                               S )N)boolrD  r  rN  r$   r"   is_ipython_availablez"_IpythonUtils.is_ipython_available@  s    55788r$   c                       y)z8Returns the HTML style markup to support custom buttons.a  
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <style>
      .view-vertex-resource,
      .view-vertex-resource:hover,
      .view-vertex-resource:visited {
        position: relative;
        display: inline-flex;
        flex-direction: row;
        height: 32px;
        padding: 0 12px;
          margin: 4px 18px;
        gap: 4px;
        border-radius: 4px;

        align-items: center;
        justify-content: center;
        background-color: rgb(255, 255, 255);
        color: rgb(51, 103, 214);

        font-family: Roboto,"Helvetica Neue",sans-serif;
        font-size: 13px;
        font-weight: 500;
        text-transform: uppercase;
        text-decoration: none !important;

        transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
        box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12);
      }
      .view-vertex-resource:active {
        box-shadow: 0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);
      }
      .view-vertex-resource:active .view-vertex-ripple::before {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        border-radius: 4px;
        pointer-events: none;

        content: '';
        background-color: rgb(51, 103, 214);
        opacity: 0.12;
      }
      .view-vertex-icon {
        font-size: 18px;
      }
    </style>
  rN  rN  r$   r"   _get_stylesz_IpythonUtils._get_stylesD  s    1r$   markerresource_partsc                 ~    t        t        |            D ]&  }||   | k(  s|dz   t        |      k  s||dz      c S  y)z,Returns the part after the marker text part.r   r  )rV  rW  )r  r  r`  s      r"   _parse_resource_namez"_IpythonUtils._parse_resource_namez  sN     3~&' %		f	$Q^1D)Da!e$$% r$   texturliconNc                 "   d}|j                  |      st        d| d      ddl}dt        |j	                                }dt
        j                          d| d	| d
| d|  d}|d| d| d| dz  }ddlm} ddlm	}  | ||             y)a&  Creates and displays the link to open the Vertex resource.

    Args:
      text: The text displayed on the clickable button.
      url: The url that the button will lead to. Only cloud console URIs are
        allowed.
      icon: The icon name on the button (from material-icons library)
    z https://console.cloud.google.comzOnly urls starting with z are allowed.r   Nzview-vertex-resource-z	
        z-
        <a class="view-vertex-resource" id="z" href="#view-z;">
          <span class="material-icons view-vertex-icon">z</span>
          <span>z</span>
        </a>
        z]
        <script>
          (function () {
            const link = document.getElementById('z');
            link.addEventListener('click', (e) => {
              if (window.google?.colab?.openUrl) {
                window.google.colab.openUrl('z8');
              } else {
                window.open('z', '_blank');
              }
              e.stopPropagation();
              e.preventDefault();
            });
          })();
        </script>
    )display)HTML)
rP  rG   uuidrf  uuid4rD  r  IPython.displayr  r  )	r  r  r  CLOUD_UI_URLr  	button_idhtmlr  r  s	            r"   _display_linkz_IpythonUtils._display_link  s     6L>>,'1,}MNN'DJJL(9':;I			"	"	$% &--6K~i[ Q99= ? 		D 	 3 4=+ >. /2U 3!U # D" ($DJr$   r   rB  c                    t         j                         r| t         j                  v ry| j                  d      }|d   }|d   }d| d| dz   d| z   }t         j	                  d|d	       t         j                  j                  |        y)
a  Function to generate a link bound to the Vertex experiment.

    Args:
      experiment: The Vertex experiment name. Example format:
        projects/{project_id}/locations/{location}/metadataStores/default/contexts/{experiment_name}
      project: The project (alphanumeric) name.
    N/   zAhttps://console.cloud.google.com/vertex-ai/experiments/locations/z/experiments/zruns?project=zView Experimentscience)rD  r  r{  splitr  add)r   rB  r  locationexperiment_nameuris         r"   rE  z'_IpythonUtils.display_experiment_button  s     ..0<<<  %%c*Na H$R(O 	LJmO#4A
6	7'
#	$ 
  13	B ''++J7r$   rM  c                     t         j                         sy| j                  d      }|d   }|d   }|d   }dd| d| z   d	| z   }t         j                  d
|d       y)zFunction to generate a link bound to the Vertex model tuning job.

    Args:
      tuning_job_resource: The Vertex tuning job name. Example format:
        projects/{project_id}/locations/{location}/tuningJobs/{tuning_job_id}
    Nr  r   r  r  z?https://console.cloud.google.com/vertex-ai/generative/language/z
locations/z/tuning/tuningJob/z	?project=zView Tuning Jobrb  )rD  r  r  r  )rM  r  rB  r  tuning_job_idr  s         r"   r]  z)_IpythonUtils.display_model_tuning_button  s     --/(..s3NQGa H"2&M 	Jxj 2=/
B	CgY
	  
  13?r$   )open_in_new)rc  rd  re  __doc__setr{  rf  __annotations__staticmethodr   r   r  r  r  r  r?  r  r   r  rE  r]  rN  r$   r"   rD  rD  1  s&   >$'ES)5c?   9 9 9 3s 3 3j 3 S	 c   1>111!)#11 1f 8C 8# 8$ 8 8: @s @t @ @r$   rD  )NN):r  loggingtypingr   r   r   urllib.parser   r  r   r	   r
   rl   r   r   r   r   r   pagersr   r   	getLoggerloggerrT  rf  objectr#   r'   r-   r0   rH   rY   rb   re   rn   rV   r   r&   r   r   r   r   r   r   r   r   r   r   ra   rd   r   r   r   rU   
BaseModuler   ro  rD  rN  r$   r"   <module>r     s  $   ' ' "      . . % 
		1	2
 /3;?tCH~v-.DcN+ %S#X 678 
#s(^	: /3;?tCH~v-.DcN+ %S#X 678 
#s(^	: /3;?	tCH~v-.	DcN+	 %S#X 678	 
#s(^		 /3;?	tCH~v-.	DcN+	 %S#X 678	 
#s(^		 /3;?KtCH~v-.KDcN+K %S#X 678K 
#s(^	K` /3;?_tCH~v-._DcN+_ %S#X 678_ 
#s(^	_H /3;?tCH~v-.DcN+ %S#X 678 
#s(^	6 /3;?tCH~v-.DcN+ %S#X 678 
#s(^	6 /3;?tCH~v-.DcN+ %S#X 678 
#s(^	4 /3;?tCH~v-.DcN+ %S#X 678 
#s(^	4 /3;?jtCH~v-.jDcN+j %S#X 678j 
#s(^	j^ /3;?utCH~v-.uDcN+u %S#X 678u 
#s(^	ut /3;?	tCH~v-.	DcN+	 %S#X 678	 
#s(^		 /3;?	tCH~v-.	DcN+	 %S#X 678	 
#s(^		 /3;?tCH~v-.DcN+ %S#X 678 
#s(^	6 /3;?tCH~v-.DcN+ %S#X 678 
#s(^	6 /3;?tCH~v-.DcN+ %S#X 678 
#s(^	  /3;?tCH~v-.DcN+ %S#X 678 
#s(^	  /3;?tCH~v-.DcN+ %S#X 678 
#s(^	: /3;?tCH~v-.DcN+ %S#X 678 
#s(^	: /3;?tCH~v-.DcN+ %S#X 678 
#s(^	, /3;?tCH~v-.DcN+ %S#X 678 
#s(^	" /3;?tCH~v-.DcN+ %S#X 678 
#s(^	4 /3;?0tCH~v-.0DcN+0 %S#X 6780 
#s(^	0j /3;?8tCH~v-.8DcN+8 %S#X 6788 
#s(^	8z /3;?ttCH~v-.tDcN+t %S#X 678t 
#s(^	tr /3;?tCH~v-.DcN+ %S#X 678 
#s(^	8 /3;?tCH~v-.DcN+ %S#X 678 
#s(^	&Nk$$ NbL;)) L^x@ x@r$   