Files
DS-LLM-TEMPLATE-FINETUNING/unsloth_compiled_cache/__pycache__/UnslothRewardTrainer.cpython-311.pyc
T

199 lines
41 KiB
Plaintext
Raw Normal View History

2025-08-13 23:50:20 +00:00
§
5$hL¡ãóDdZddlmZddlZddlmZddlmZddlmZm Z m
Z
m Z m Z m
Z
mZmZddlmZmZmZmZmZmZmZmZm
Z
mZmZmZmZmZmZmZmZmZm Z m!Z!m Z m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0mZm1Z1m2Z2m3Z3m4Z4m5Z5mZm6Z6m
Z
mZmZm Z m+Z+m1Z1mZddl1Z1ddlTddl7m8Z8m9Z9dd l:m;Z;ddlZddl<Z=dd
l>m?Z?ddlmZdd l@mAZAmBZCd d
d d
d
dœZDejEd d eD¬¦«d¦«ZFe8Gdde¦«¦«ZG Gdde ¦«ZHGddeH¦«ZIdS)z8
2025.8.4
2025.8.5
4.55.1
0.21.0
__UNSLOTH_VERSIONING__
é)ÚTensorN)Ú
functional)ÚAnyÚListÚOptionalÚTupleÚUnionÚDictÚSetÚCallable)3rÚBaseImageProcessorr Ú DataCollatorÚDatasetÚEvalPredictionÚFeatureExtractionMixinÚFrozenInstanceErrorrÚ PartialStateÚPathÚ PeftModelÚPreTrainedModelÚPreTrainedTokenizerBaseÚProcessorMixinÚ RewardConfigÚRewardDataCollatorWithPaddingÚ
RewardTrainerÚTrainerÚTrainerCallbackr Ú _tokenizeÚcompute_accuracyÚdecode_and_strip_paddingÚ defaultdictÚdisable_dropout_in_modelÚ
gather_objectÚgenerate_model_cardÚget_comet_experiment_urlÚinspectÚis_peft_availableÚis_rich_availableÚis_wandb_availableÚlog_table_to_comet_experimentÚmaybe_apply_chat_templateÚ
nested_detachÚnnÚosÚpdÚprepare_model_for_kbit_trainingÚprint_rich_tableÚreplaceÚtorchÚwarningsrrrrr'r.r3)Ú*)Ú dataclassÚfield)ÚVersion)Ú nullcontext)ÚDataCollatorForSeq2SeqÚDataCollatorForLanguageModelingTF)Úepilogue_fusionÚ max_autotuneÚ
shape_paddingz
trace.enabledztriton.cudagraphs)ÚdynamicÚ fullgraphÚoptionscó’tj| d|jd¦«dd¬¦«}tj| d¦«dd¬¦«}g}t ||¦«D]\}}| tj¦«}tj|d| d¦«¬¦«  d¦«}tj
|d¬¦«}||z
} |  | ¦«Œ’ tj |¦«}| |jd|jdf¦«}|S)Néÿÿÿÿér)ÚchunksÚdim)rFÚindex©rFé)
r3ÚchunkÚreshapeÚshapeÚzipÚtoÚfloat32ÚgatherÚ unsqueezeÚsqueezeÚ logsumexpÚappendÚconcat)
ÚlogitsrGÚchunked_logitsÚ
chunked_indexÚall_per_token_logpsÚ chunk_logitsÚ chunk_indexÚselected_logitsÚlogsumexp_valuesÚper_token_logpss
ú`/workspace/Fine-tuning/DS-LLM-TEMPLATE-FINETUNING/unsloth_compiled_cache/UnslothRewardTrainer.pyÚchunked_selective_log_softmaxr`"s5õ”[ §¢°°F´LÀÔ4DÑ!EÔ!EÐPQÐYZÐ[€NÝ”[ §¢¨rÑ!2Ô!2¸QÀaÐH€MØÐå%(¨¸Ñ%GÔ%Gð #—¥u¤}Ñ Ýœ, |¸2À{×G\ÒG\Ð]_ÑG`ÔG`Ða×iÐjlÑmˆÝ œ?¨<¸Ø)Ð,<Ñ<ˆØ×" Ýœ,Ð':ÑØ-×5°v´|ÀA´ÈÌ ÐUVÌÐ6XÑØ ÐócóšeZdZUdZedddi¬¦«Zeeed<edddi¬¦«Z ee
ed < d+ˆfd*„ Z ˆxZ S),ÚUnslothRewardConfigaI
Configuration class for the [`RewardTrainer`].
This class includes only the parameters that are specific to Reward training. For a full list of training
arguments, please refer to the [`~transformers.TrainingArguments`] documentation. Note that default values in this
class may differ from those in [`~transformers.TrainingArguments`].
Using [`~transformers.HfArgumentParser`] we can turn this class into
[argparse](https://docs.python.org/3/library/argparse#module-argparse) arguments that can be specified on the
command line.
Parameters:
max_length (`int` or `None`, *optional*, defaults to `1024`):
Maximum length of the sequences (prompt + completion) in the batch, filters out entries that exceed the
limit. This argument is required if you want to use the default data collator.
disable_dropout (`bool`, *optional*, defaults to `True`):
Whether to disable dropout in the model.
dataset_num_proc (`int`, *optional*, defaults to `None`):
Number of processes to use for processing the dataset.
center_rewards_coefficient (`float`, *optional*, defaults to `None`):
Coefficient to incentivize the reward model to output mean-zero rewards (proposed by
https://huggingface.co/papers/2312.09244, Eq. 2). Recommended value: `0.01`.
remove_unused_columns (`bool`, *optional*, defaults to `False`):
Whether to remove the columns that are not used by the model's forward pass. Can be `True` only if the
dataset is pretokenized.
helpzvLLM SamplingParams)ÚdefaultÚmetadataÚvllm_sampling_paramsrCz8Chunk size to reduce memory usage. -1 is most efficient.Úunsloth_num_chunksFÚnorDéréúç-Cëâ6
?ç{®Gáz„?çÍÌÌÌÌÌì?ç+‡ÙÎ÷ï?ç:Œ0âŽyE>çð?çlinearçš™™™™™¹?ÚpassiveÚwarningTÚstepsrIéôéO
ÚO1ÚautoÚçÚ
adamw_8bitÚlengthÚ
every_saveÚlastééc‡ ó<|dkrtd|d¦«|dkrtd|d¦«||#dkr
|$dkrd}d }#|ƒ€!d
d lm}ˆt |ˆ¦«d zd ¦«t ¦«jdid
|d|d|d|d|d|d|d|d| “d|
d| d| d|
d|d|d|d|d|d|d |d!|d"|d#|d$|d%|d&|d'|d(|d)|d*|d+|d,| “d-|!“d.|"“d/|#“d0|$“d1|%“d2|&“d3|'“d4|(“d5|)“d6|*“d7|+“d8|,“d9|-“d:|.“d;|/“d<|0“d=|1“d>|2“d?|3“d@|4“dA|5“dB|6“dC|7“dD|8“dE|9“dF|:“dG|;“dH|<“dI|=“dJ|>“dK|?“dL|@“dM|A“dN|B“dO|C“dP|D“dQ|E“dR|F“dS|G“dT|H“dU|I“dV|J“dW|K“dX|L“dY|M“dZ|N“d[|O“d\|P“d]|Q“d^|R“d_|S“d`|T“da|U“db|V“dc|W“dd|X“de|Y“df|Z“dg|[“dh|\“di|]“dj|^“dk|_“dl|`“dm|a“dn|b“do|c“dp|d“dq|e“dr|f“ds|g“dt|h“du|i“dv|j“dw|k“dx|l“dy|m“dz|n“d{|o“d||p“d}|q“d~|r“d|s“d€|t“d|u“d|v“dƒ|w“d„|x“d…|y“d†|z“d‡|{“dˆ||“d‰|}“dŠ|~“d|dŒ|€“d|dŽ|‚“d|ƒ“d|„“|‡¤Ž|…|_|†|_dS)NgH¯¼šò×z>z Unsloth: Your learning rate of `zi` is too small and less than 1e-7! Consider increasing it, otherwise gradient updates will be close to 0!rIza` is way too larger > 1! Consider decreasing it to 1e-1, otherwise gradient updates will explode!rwrxÚunsloth_training_checkpointsrir)Ú cpu_countrjÚ
output_dirÚoverwrite_output_dirÚdo_trainÚdo_evalÚ
do_predictÚ
eval_strategyÚprediction_loss_onlyÚper_device_train_batch_sizeÚper_device_eval_batch_sizeÚper_gpu_train_batch_sizeÚper_gpu_eval_batch_sizeÚgradient_accumulation_stepsÚeval_accumulation_stepsÚ
eval_delayÚtorch_empty_cache_stepsÚ
learning_rateÚ weight_decayÚ
adam_beta1Ú
adam_beta2Ú adam_epsilonÚ
max_grad_normÚnum_train_epochsÚ max_stepsÚlr_scheduler_typeÚ warmup_ratioÚ warmup_stepsÚ log_levelÚlog_level_replicaÚlog_on_each_nodeÚ logging_dirÚlogging_strategyÚlogging_first_stepÚ
logging_stepsÚlogging_nan_inf_filterÚ
save_strategyÚ
save_stepsÚsave_total_limitÚsave_safetensorsÚsave_on_each_nodeÚsave_only_modelÚ'restore_callback_states_from_checkpointÚno_cudaÚuse_cpuÚuse_mps_deviceÚseedÚ data_seedÚ
jit_mode_evalÚuse_ipexÚbf16Úfp16Úfp16_opt_levelÚhalf_precision_backendÚbf16_full_evalÚfp16_full_evalÚtf32Ú
local_rankÚ ddp_backendÚ
tpu_num_coresÚtpu_metrics_debugÚdebugÚdataloader_drop_lastÚ
eval_stepsÚdataloader_num_workersÚdataloader_prefetch_factorÚ
past_indexÚrun_nameÚ disable_tqdmÚremove_unused_columnsÚ label_namesÚload_best_model_at_endÚmetric_for_best_modelÚgreater_is_betterÚignore_data_skipÚfsdpÚfsdp_min_num_paramsÚ fsdp_configÚ"fsdp_transformer_layer_cls_to_wrapÚaccelerator_configÚ deepspeedÚlabel_smoothing_factorÚoptimÚ
optim_argsÚ adafactorÚgroup_by_lengthÚlength_column_nameÚ report_toÚddp_find_unused_parametersÚddp_bucket_cap_mbÚddp_broadcast_buffersÚdataloader_pin_memoryÚdataloader_persistent_workersÚskip_memory_metricsÚuse_legacy_prediction_loopÚ push_to_hubÚresume_from_checkpointÚ hub_model_idÚ hub_strategyÚ hub_tokenÚhub_private_repoÚhub_always_pushÚ hub_revisionÚgradient_checkpointingÚgradient_checkpointing_kwargsÚinclude_inputs_for_metricsÚeval_do_concat_batchesÚ fp16_backendÚpush_to_hub_model_idÚpush_to_hub_organizationÚpush_to_hub_tokenÚ
mp_parametersÚauto_find_batch_sizeÚfull_determinismÚ torchdynamoÚ ray_scopeÚ ddp_timeoutÚ
torch_compileÚtorch_compile_backendÚtorch_compile_modeÚinclude_tokens_per_secondÚinclude_num_input_tokens_seenÚneftune_noise_alphaÚoptim_target_modulesÚbatch_eval_metricsÚ
eval_on_startÚuse_liger_kernelÚliger_kernel_configÚeval_use_gather_objectÚaverage_tokens_across_devicesÚ
max_lengthÚdisable_dropoutÚdataset_num_procÚcenter_rewards_coefficient©) ÚFloatingPointErrorÚ
OverflowErrorÚmultiprocessingr†ÚminÚsuperÚ__init__rgrh)ŠÚselfr‡rˆr‰rrrrrrr“r”r•r–r—r™rrr r­r¿rÿrrrrrrrrrr r
rgrhÚkwargsr†Ú __class__sŠ €r_rzUnslothRewardConfig.__init__Ysl ø€ðT ˜ Ð Õ'9ð;VÐ]jð;Vð;Vð;Vñ(Wô(Wð"WØ ˜ Ð ¥Mð3FÐUbð3Fð3Fð3Fñ%Gô%GðGØ Ð  -°7Ò":Ð":¸zÈSÒ?PÐ?PØ7ˆ ˆ Ð " 9 9¡;¤;¨q¡=°!Ñ àŒÔðD NðD NðD NØ#˜ðD Nà#7Ð#7ðD Nð D Nðgð D Nð
$˜ð D Nð *˜
D Nð$8Ð#7ðD Nð+FÐ*EðD Nð*DÐ)CðD Nð(@Ð'?ðD Nð'>Ð&=ðD Nð+FÐ*EðD Nð'>Ð&=ðD Nð$˜ðD Nð'>Ð&=ðD Nð *˜Mð!D Nð"(˜<ð#D Nð$$˜ð%D Nð&$˜ð'D Nð((˜<ð)D Nð**˜Mð+D Nð,/ð-D Nð."˜ ð/D Nð0!2Ð 1ð1D Nð2(˜<ð3D Nð4(˜<ð5D Nð6"˜ ð7D Nð8!2Ð 1ð9D Nð:/ð;D Nð<&˜+ð=D Nð>/ð?D Nð@"4Ð!3ðAD NðB*˜MðCD NðD&<Ð%;ðED NðF*˜MðGD NðH$˜ðID NðJ/ðKD NðL/ðMD NðN!2Ð 1ðOD NðP.˜oðQD NðR7^Ð6]ðSD NðTgðUD NðVgðWD NðX,˜^ðYD NðZ4ð[D Nð\"˜ ð]D Nð^*˜Mð_D Nð` xðaD Nðb4ðcD Nðd4ðeD Nðf,˜^ðgD Nðh&<Ð%;ðiD Nðj,˜^ðkD Nðl,˜^ðmD Nðn4ðoD Nðp$˜ðqD Nðr&˜+ðsD Nðt*˜MðuD Nðv!2Ð 1ðwD NðxEðyD Nðz$8Ð#7ð{D Nð|$˜ð}D Nð~&<Ð%;ðD Nð@*DÐ)CðAD NðB$˜ðCD NðD xðED NðF(˜<ðGD NðH%:Ð$9ðID NðJ&˜+ðKD NðL&<Ð%;ðMD NðN%:Ð$9ðOD NðP!2Ð 1ðQD NðR/ðSD NðT4ðUD NðV#6Ð"5ðWD NðX&˜+ðYD NðZ2TÐ1Sð[D Nð\"4Ð!3ð]D Nð^"˜ ð_D Nð`&<Ð%;ðaD NðbEðcD Nðd$˜ðeD Nðf"˜ ðgD Nðh.˜oðiD Nðj"4Ð!3ðkD Nðl"˜ ðmD Nðn*DÐ)CðoD Nðp!2Ð 1ðqD Nðr%:Ð$9ðsD Nðt%:Ð$9ðuD Nðv-JÐ,IðwD Nðx#6Ð"5ðyD Nðz*DÐ)Cð{D Nð|&˜+ð}D Nð~&<Ð%;ðD Nð@(˜<ðAD NðB(˜<ðCD NðD"˜ ðED NðF/ðGD NðH.˜oðID NðJ(˜<ðKD NðL&<Ð%;ðMD NðN-JÐ,IðOD NðP*DÐ)CðQD NðR&<Ð%;ðSD NðT(˜<ðUD NðV$8Ð#7ðWD NðX(@Ð'?ðYD NðZ!2Ð 1ð[D Nð\*˜Mð]D Nð^$8Ð#7ð_D Nð`/ðaD Nðb&˜+ðcD Nðd"˜ ðeD Nðf&˜+ðgD Nðh*˜MðiD Nðj%:Ð$9ðkD Nðl"4Ð!3ðmD Nðn)BÐ(AðoD Nðp-JÐ,IðqD Nðr#6Ð"5ðsD Nðt$8Ð#7ðuD Nðv"4Ð!3ðwD Nðx*˜MðyD Nðz/ð{D Nð|#6Ð"5ð}D Nð~&<Ð%;ðD Nð@-JÐ,IðAD NðB$˜ðCD NðD.˜oðED NðF/ðGD NðH*DÐ)CÀfðID NðD NðD NðJ%9ˆÔ!Ø"4ˆÔÐÐra)†NNFFFriFrDrDNNrjrjrrkrlrmrnrorprqrrrCrsrtrrurvTNrwFrIFrwrxNTFFFFFFryryFFFFrzr{FFNrCNNFr|FNrNrCNNFNFNNFr|rNNNNr}r~NFFrNNNNTFTFFNNr€NNFNFNFTr{NNNr|TFNrrFNNFFNNFFFNFTrƒTNNNrC)
Ú__name__Ú
__module__Ú __qualname__Ú__doc__r7rgrrÚ__annotations__rhÚintrÚ
__classcell__©rs@r_rcrc3s\ø€ððð8+0¨%ØØÐ+ñ+ô+И( 3œ-ððñð*/¨ØØÐ*ñ*ô*И #œððñð ØØØØØ$Ø&'Ø%&Ø#'Ø"&Ø&'Ø"#ØØ"%ØØØØØØØØØØØØØØØ!&ØØØØØØ27ØØØØØØØØØØØ!'ØØØØØØØØØ!"Ø%)ØØØØ %ØØ!&Ø $Ø Ø ØØØØ-1ØØ!$ØØØØØØ%)Ø Ø $Ø $Ø(-Ø"Ø%*ØØ!%ØØØØØØ!&Ø(,Ø%*Ø!%ØØ#Ø#'Ø ØØ ØØØØØ $Ø!Ø$)Ø(-ØØ Ø"Ø!&Ø(,ØØØØ%)ØðOYYYYYYYYYY5rarccóÔeZdZddgZ d!deeeejfdee dee
dee d eee e e
e ffd
eeeeeefd eegefd eeege fd
eeedeejjejjjfdeeejejgejfdee fˆfd
Z d"deeejfde e
eejeffdeejeeje e
ejffffdZ d#deeejfde e
eejeffde deee
deeejeejeejff
dZ!ˆfdZ"de#fdZ$ˆfdZ% d$dee
dee
dee
ee
dffd „Z&ˆxZ'S)%Ú_UnslothRewardTrainerÚtrlzreward-trainerN©NNÚmodelÚargsÚ
data_collatorÚ
train_datasetÚ eval_datasetÚprocessing_classÚ
model_initÚcompute_metricsÚ callbacksÚ
optimizersÚpreprocess_logits_for_metricsÚ peft_configc
óøt¦«s| td¦«t¦«rµ| ³t|t¦«sžt |dd¦«st |dd¦«rzdt t
jt¦«j ¦«v}
d|j
i}|
s"|j tj
dt¦«n|
r|j
|j |d<t|fi|¤Ž}|}|jrt!|¦«|t"}|€z|td ¦«|jŠt'|¦«}|jrD d|_n!#t*$rt-|d¬
¦«}YnwxYwtj
d t¦«d |_nd|_d |jd
<d|jvrþt5¦« ¦«5d|i}| t:d|i¬¦«}| t<d ||j¬¦«}|  ˆfd|j¬¦«}|`| t:d|i¬¦«}| t<|d |j¬¦«}|  ˆfd|j¬¦«}ddd¦«n #1swxYwYtC¦« "||||||||| |
| ¬¦ « tG|j$d¦«r!|j$ %|j&¦«dSdS)
Initialize RewardTrainer.
Args:
model (`transformers.PreTrainedModel`):
The model to train, preferably an `AutoModelForSequenceClassification`.
args (`RewardConfig`):
The arguments to use for training.
data_collator (`transformers.DataCollator`):
The data collator to use for training. If None is specified, the default data collator
(`RewardDataCollatorWithPadding`) will be used which will pad the sequences to the maximum length of
the sequences in the batch, given a dataset of paired sequences.
train_dataset (`datasets.Dataset`):
The dataset to use for training.
eval_dataset (`datasets.Dataset`):
The dataset to use for evaluation.
processing_class ([`~transformers.PreTrainedTokenizerBase`], [`~transformers.BaseImageProcessor`], [`~transformers.FeatureExtractionMixin`] or [`~transformers.ProcessorMixin`], *optional*, defaults to `None`):
Processing class used to process the data. If provided, will be used to automatically process the
inputs for the model, and it will be saved along the model to make it easier to rerun an interrupted
training or reuse the fine-tuned model.
model_init (`Callable[[], transformers.PreTrainedModel]`):
The model initializer to use for training. If None is specified, the default model initializer will be
used.
compute_metrics (`Callable[[transformers.EvalPrediction], dict]`, *optional* defaults to `compute_accuracy`):
The metrics to use for evaluation. If no metrics are specified, the default metric (`compute_accuracy`)
will be used.
callbacks (`list[transformers.TrainerCallback]`):
The callbacks to use for training.
optimizers (`tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR]`):
The optimizer and scheduler to use for training.
preprocess_logits_for_metrics (`Callable[[torch.Tensor, torch.Tensor], torch.Tensor]`):
The function to use to preprocess the logits before computing the metrics.
peft_config (`dict`, defaults to `None`):
The PEFT configuration to use for training. If you pass a PEFT configuration, the model will be wrapped
in a PEFT model.
NzvPEFT is not installed and you passed a `peft_config` in the trainer's kwargs, please install it to use the PEFT modelsÚis_loaded_in_8bitFÚ is_quantizedríÚuse_gradient_checkpointingzÂYou passed `gradient_checkpointing_kwargs` in the trainer's kwargs, but your peft version does not support it. please update to the latest version of peft to use `gradient_checkpointing_kwargs`.zYA processing_class must be specified when using the default RewardDataCollatorWithPadding)z°When using RewardDataCollatorWithPadding, you should set `remove_unused_columns=False` in your RewardConfig we have set it for you, but you should do it yourself in the future.TÚestimate_tokensÚinput_ids_chosenÚ tokenizer)Ú fn_kwargs)Úbatchedr4Únum_proccóht|d¦«kot|d¦«kS©Nr2Úinput_ids_rejected©Úlen©Úxrs €r_ú<lambda>z0_UnslothRewardTrainer.__init__.<locals>.<lambda>s3ø€c !Ð$6Ô"7Ñ8¸uÍ3ÈqÐQeÔOfÑKgÔKgÐkuÒKu€ra)r6)r4r5r6cóht|d¦«kot|d¦«kSr8r:r<s €r_r>z0_UnslothRewardTrainer.__init__.<locals>.<lambda>s9ø€¥# aÐ(:Ô&;Ñ"<Ô"<À
Ò"Jð#GÝ Ð"6Ô 7Ñ8¸ra) r!r"r#r$r%r&r'r(r)r*r+Úadd_model_tags)'r'Ú
ValueErrorÚ
isinstancerÚgetattrÚlistr&Ú signaturer0Ú
parametersrìr4ÚwarnÚ UserWarningrr"rrrrr2Úuse_reward_data_collatorÚwarnings_issuedÚ column_namesrÚmain_process_firstÚmapr+rr ÚfilterrrÚhasattrr!r@Ú
_tag_names)rr!r"r#r$r%r&r'r(r)r*r+r,Ú_supports_gc_kwargsÚprepare_model_kwargsr4rrs @€r_rz_UnslothRewardTrainer.__init__xs5øø€õp  {Ð'>ÝðIñôð
õÑ
Ô
ð  [Ð%<ݘe¥YÑ
ݘ5Ð"5°uÑ[ÅÈÐP^Ð`eÑAfÔAfð[Ø*IÍTÝÔ)Õ*IÑNôNð+Ð-IÈ$ÔJeÐ+fÐs°4Ô3UÐ3aÝ œ
ðråôððð
s°Ô1SÐ1_ØPTÔPrÐ,Ð-LÑ;¸ZÐEYÐZð Ô ð $  Ð .ˆ Ð ØÐ ØôððœˆJå9Ð:JÑKˆMàÔ
ðFØ16.øÝFðFðFÝ" 4¸EDDFøøøõ
ð\åñôðð -1ˆDÔ )à,1ˆDÔ 48ˆÔÐ  ]Ô%?Ð ×!
ð!
Ø(Ð*:Ð; Ø -× 1Ò 1Õ2KÐXcÐeuÐWvÐ 1Ñ wÔ w
Ø -× 1Ò 1ÝØ Ø!2ñ!ô!
ð!.× 4Ò 4Ø!5ñ!ô!
ð Ð+Ø#/×#3Ò#3Ý1¸kÐK[Ð=\ð$4ñ$ô$$0×#3Ò#3Ý!Ø"+Ø $Ø!%Ô!6ð $4ñ$ô$$0×#6Ò#6ðGðGðGðGà!%Ô!6ð$7ñ$ô$Lð;!
ð!
ð!
ñ!
ô!
ð!
ð!
ð!
ð!
ð!
ð!
øøøð!
ð!
ð!
ð!
õF Œ×ÒØØØØ!Ø*Gð ñ
ô
ð