From 5f2d8f7c2afc41953d1c9ea80f7eb72a9d39fcfa Mon Sep 17 00:00:00 2001 From: arxyzan Date: Tue, 2 Jan 2024 07:16:31 +0000 Subject: [PATCH] deploy: 613fd34c29e101827de3b0ab8901a23e03efc046 --- .buildinfo | 4 + .doctrees/contributing.doctree | Bin 0 -> 36955 bytes .doctrees/environment.pickle | Bin 0 -> 9936697 bytes .doctrees/get_started/index.doctree | Bin 0 -> 3197 bytes .doctrees/get_started/installation.doctree | Bin 0 -> 7510 bytes .doctrees/get_started/overview.doctree | Bin 0 -> 7229 bytes .doctrees/get_started/quick_tour.doctree | Bin 0 -> 27394 bytes .doctrees/guide/advanced_training.doctree | Bin 0 -> 2978 bytes .doctrees/guide/hezar_architecture.doctree | Bin 0 -> 59984 bytes .doctrees/guide/index.doctree | Bin 0 -> 3547 bytes .doctrees/guide/models_advanced.doctree | Bin 0 -> 55439 bytes .doctrees/guide/trainer_in_depth.doctree | Bin 0 -> 38265 bytes .doctrees/index.doctree | Bin 0 -> 4189 bytes .doctrees/source/hezar.builders.doctree | Bin 0 -> 41985 bytes .doctrees/source/hezar.configs.doctree | Bin 0 -> 211685 bytes .doctrees/source/hezar.constants.doctree | Bin 0 -> 169396 bytes .../source/hezar.data.data_collators.doctree | Bin 0 -> 63442 bytes .../hezar.data.datasets.dataset.doctree | Bin 0 -> 33604 bytes .doctrees/source/hezar.data.datasets.doctree | Bin 0 -> 4015 bytes ....datasets.image_captioning_dataset.doctree | Bin 0 -> 49296 bytes .../hezar.data.datasets.ocr_dataset.doctree | Bin 0 -> 57248 bytes ...datasets.sequence_labeling_dataset.doctree | Bin 0 -> 52058 bytes ...tasets.text_classification_dataset.doctree | Bin 0 -> 40639 bytes ...atasets.text_summarization_dataset.doctree | Bin 0 -> 53488 bytes .doctrees/source/hezar.data.doctree | Bin 0 -> 4058 bytes .doctrees/source/hezar.doctree | Bin 0 -> 4256 bytes .doctrees/source/hezar.embeddings.doctree | Bin 0 -> 3776 bytes .../source/hezar.embeddings.embedding.doctree | Bin 0 -> 92330 bytes .../source/hezar.embeddings.fasttext.doctree | Bin 0 -> 120286 bytes .../source/hezar.embeddings.word2vec.doctree | Bin 0 -> 131419 bytes .../source/hezar.metrics.accuracy.doctree | Bin 0 -> 36519 bytes .doctrees/source/hezar.metrics.bleu.doctree | Bin 0 -> 36339 bytes .doctrees/source/hezar.metrics.cer.doctree | Bin 0 -> 40021 bytes .doctrees/source/hezar.metrics.doctree | Bin 0 -> 3968 bytes .doctrees/source/hezar.metrics.f1.doctree | Bin 0 -> 49260 bytes .doctrees/source/hezar.metrics.metric.doctree | Bin 0 -> 14002 bytes .../source/hezar.metrics.precision.doctree | Bin 0 -> 55322 bytes .doctrees/source/hezar.metrics.recall.doctree | Bin 0 -> 54752 bytes .doctrees/source/hezar.metrics.rouge.doctree | Bin 0 -> 44003 bytes .../source/hezar.metrics.seqeval.doctree | Bin 0 -> 63146 bytes .doctrees/source/hezar.metrics.wer.doctree | Bin 0 -> 36322 bytes .../hezar.models.backbone.bert.bert.doctree | Bin 0 -> 29911 bytes ...r.models.backbone.bert.bert_config.doctree | Bin 0 -> 45802 bytes .../source/hezar.models.backbone.bert.doctree | Bin 0 -> 3854 bytes ...els.backbone.distilbert.distilbert.doctree | Bin 0 -> 26472 bytes ...kbone.distilbert.distilbert_config.doctree | Bin 0 -> 42273 bytes .../hezar.models.backbone.distilbert.doctree | Bin 0 -> 3938 bytes .../source/hezar.models.backbone.doctree | Bin 0 -> 3881 bytes .../hezar.models.backbone.roberta.doctree | Bin 0 -> 3896 bytes ...ar.models.backbone.roberta.roberta.doctree | Bin 0 -> 30420 bytes ...ls.backbone.roberta.roberta_config.doctree | Bin 0 -> 51374 bytes .../source/hezar.models.backbone.vit.doctree | Bin 0 -> 3840 bytes .../hezar.models.backbone.vit.vit.doctree | Bin 0 -> 31099 bytes ...zar.models.backbone.vit.vit_config.doctree | Bin 0 -> 49490 bytes .doctrees/source/hezar.models.doctree | Bin 0 -> 4422 bytes ...it_roberta.beit_roberta_image2text.doctree | Bin 0 -> 48968 bytes ...rta.beit_roberta_image2text_config.doctree | Bin 0 -> 172081 bytes ...zar.models.image2text.beit_roberta.doctree | Bin 0 -> 4014 bytes ....image2text.crnn.crnn_decode_utils.doctree | Bin 0 -> 8090 bytes ...ls.image2text.crnn.crnn_image2text.doctree | Bin 0 -> 46199 bytes ...e2text.crnn.crnn_image2text_config.doctree | Bin 0 -> 40720 bytes .../hezar.models.image2text.crnn.doctree | Bin 0 -> 3961 bytes .../source/hezar.models.image2text.doctree | Bin 0 -> 3964 bytes .../hezar.models.image2text.trocr.doctree | Bin 0 -> 3914 bytes ....image2text.trocr.trocr_image2text.doctree | Bin 0 -> 47200 bytes ...text.trocr.trocr_image2text_config.doctree | Bin 0 -> 159592 bytes .../hezar.models.image2text.vit_gpt2.doctree | Bin 0 -> 3958 bytes ...2text.vit_gpt2.vit_gpt2_image2text.doctree | Bin 0 -> 47956 bytes ...it_gpt2.vit_gpt2_image2text_config.doctree | Bin 0 -> 161436 bytes ...ezar.models.image2text.vit_roberta.doctree | Bin 0 -> 4000 bytes ...vit_roberta.vit_roberta_image2text.doctree | Bin 0 -> 52014 bytes ...erta.vit_roberta_image2text_config.doctree | Bin 0 -> 166827 bytes ...ask_filling.bert.bert_mask_filling.doctree | Bin 0 -> 2653 bytes ...ling.bert.bert_mask_filling_config.doctree | Bin 0 -> 2690 bytes .../hezar.models.mask_filling.bert.doctree | Bin 0 -> 3501 bytes ...distilbert.distilbert_mask_filling.doctree | Bin 0 -> 2713 bytes ...ert.distilbert_mask_filling_config.doctree | Bin 0 -> 2750 bytes ...zar.models.mask_filling.distilbert.doctree | Bin 0 -> 3561 bytes .../source/hezar.models.mask_filling.doctree | Bin 0 -> 3486 bytes .../hezar.models.mask_filling.roberta.doctree | Bin 0 -> 3531 bytes ...lling.roberta.roberta_mask_filling.doctree | Bin 0 -> 2683 bytes ...oberta.roberta_mask_filling_config.doctree | Bin 0 -> 2720 bytes .doctrees/source/hezar.models.model.doctree | Bin 0 -> 114227 bytes .../source/hezar.models.model_outputs.doctree | Bin 0 -> 93663 bytes ...beling.bert.bert_sequence_labeling.doctree | Bin 0 -> 41806 bytes ...bert.bert_sequence_labeling_config.doctree | Bin 0 -> 57726 bytes ...ezar.models.sequence_labeling.bert.doctree | Bin 0 -> 4000 bytes ...lbert.distilbert_sequence_labeling.doctree | Bin 0 -> 40023 bytes ...istilbert_sequence_labeling_config.doctree | Bin 0 -> 59155 bytes ...odels.sequence_labeling.distilbert.doctree | Bin 0 -> 4084 bytes .../hezar.models.sequence_labeling.doctree | Bin 0 -> 3960 bytes ...r.models.sequence_labeling.roberta.doctree | Bin 0 -> 4042 bytes ....roberta.roberta_sequence_labeling.doctree | Bin 0 -> 51377 bytes ...a.roberta_sequence_labeling_config.doctree | Bin 0 -> 67642 bytes .../hezar.models.speech_recognition.doctree | Bin 0 -> 3863 bytes ....models.speech_recognition.whisper.doctree | Bin 0 -> 4208 bytes ....whisper.whisper_feature_extractor.doctree | Bin 0 -> 49755 bytes ...whisper.whisper_speech_recognition.doctree | Bin 0 -> 74548 bytes ....whisper_speech_recognition_config.doctree | Bin 0 -> 110646 bytes ...ognition.whisper.whisper_tokenizer.doctree | Bin 0 -> 73328 bytes ...tion.bert.bert_text_classification.doctree | Bin 0 -> 42423 bytes ...rt.bert_text_classification_config.doctree | Bin 0 -> 56340 bytes ...ar.models.text_classification.bert.doctree | Bin 0 -> 4028 bytes ...ert.distilbert_text_classification.doctree | Bin 0 -> 39008 bytes ...tilbert_text_classification_config.doctree | Bin 0 -> 55013 bytes ...els.text_classification.distilbert.doctree | Bin 0 -> 4112 bytes .../hezar.models.text_classification.doctree | Bin 0 -> 3986 bytes ...models.text_classification.roberta.doctree | Bin 0 -> 4070 bytes ...oberta.roberta_text_classification.doctree | Bin 0 -> 49194 bytes ...roberta_text_classification_config.doctree | Bin 0 -> 65028 bytes .../hezar.models.text_embedding.doctree | Bin 0 -> 3204 bytes .../hezar.models.text_generation.doctree | Bin 0 -> 3875 bytes .../hezar.models.text_generation.gpt2.doctree | Bin 0 -> 3972 bytes ...neration.gpt2.gpt2_text_generation.doctree | Bin 0 -> 47007 bytes ...n.gpt2.gpt2_text_generation_config.doctree | Bin 0 -> 90233 bytes .../hezar.models.text_generation.t5.doctree | Bin 0 -> 3944 bytes ...t_generation.t5.t5_text_generation.doctree | Bin 0 -> 49107 bytes ...ation.t5.t5_text_generation_config.doctree | Bin 0 -> 78002 bytes ...processors.audio_feature_extractor.doctree | Bin 0 -> 60338 bytes .doctrees/source/hezar.preprocessors.doctree | Bin 0 -> 4326 bytes ...ezar.preprocessors.image_processor.doctree | Bin 0 -> 69964 bytes .../hezar.preprocessors.preprocessor.doctree | Bin 0 -> 34895 bytes ...ezar.preprocessors.text_normalizer.doctree | Bin 0 -> 51559 bytes ...hezar.preprocessors.tokenizers.bpe.doctree | Bin 0 -> 81614 bytes .../hezar.preprocessors.tokenizers.doctree | Bin 0 -> 4084 bytes ...ssors.tokenizers.sentencepiece_bpe.doctree | Bin 0 -> 91881 bytes ...s.tokenizers.sentencepiece_unigram.doctree | Bin 0 -> 93634 bytes ...preprocessors.tokenizers.tokenizer.doctree | Bin 0 -> 240150 bytes ...preprocessors.tokenizers.wordpiece.doctree | Bin 0 -> 75488 bytes .doctrees/source/hezar.registry.doctree | Bin 0 -> 52095 bytes .doctrees/source/hezar.trainer.doctree | Bin 0 -> 3748 bytes .../hezar.trainer.metrics_handlers.doctree | Bin 0 -> 81953 bytes .../source/hezar.trainer.trainer.doctree | Bin 0 -> 109493 bytes .../hezar.trainer.trainer_utils.doctree | Bin 0 -> 61620 bytes .../source/hezar.utils.audio_utils.doctree | Bin 0 -> 124910 bytes .../source/hezar.utils.common_utils.doctree | Bin 0 -> 27667 bytes .../source/hezar.utils.data_utils.doctree | Bin 0 -> 46052 bytes .doctrees/source/hezar.utils.doctree | Bin 0 -> 3949 bytes .../source/hezar.utils.file_utils.doctree | Bin 0 -> 11384 bytes .../source/hezar.utils.hub_utils.doctree | Bin 0 -> 31182 bytes .../source/hezar.utils.image_utils.doctree | Bin 0 -> 58243 bytes .../hezar.utils.integration_utils.doctree | Bin 0 -> 15096 bytes .doctrees/source/hezar.utils.logging.doctree | Bin 0 -> 9322 bytes .../source/hezar.utils.registry_utils.doctree | Bin 0 -> 30201 bytes .doctrees/source/index.doctree | Bin 0 -> 3401 bytes .doctrees/source/modules.doctree | Bin 0 -> 2746 bytes .doctrees/tutorial/datasets.doctree | Bin 0 -> 12340 bytes .doctrees/tutorial/embeddings.doctree | Bin 0 -> 15618 bytes .doctrees/tutorial/index.doctree | Bin 0 -> 3219 bytes .doctrees/tutorial/models.doctree | Bin 0 -> 20049 bytes .doctrees/tutorial/preprocessors.doctree | Bin 0 -> 15220 bytes .doctrees/tutorial/training.doctree | Bin 0 -> 18069 bytes .nojekyll | 0 _modules/hezar/builders.html | 667 ++ _modules/hezar/configs.html | 986 +++ _modules/hezar/constants.html | 727 +++ _modules/hezar/data/data_collators.html | 836 +++ _modules/hezar/data/datasets/dataset.html | 605 ++ .../datasets/image_captioning_dataset.html | 617 ++ _modules/hezar/data/datasets/ocr_dataset.html | 697 +++ .../datasets/sequence_labeling_dataset.html | 676 ++ .../datasets/text_classification_dataset.html | 643 ++ .../datasets/text_summarization_dataset.html | 650 ++ _modules/hezar/embeddings/embedding.html | 900 +++ _modules/hezar/embeddings/fasttext.html | 755 +++ _modules/hezar/embeddings/word2vec.html | 772 +++ _modules/hezar/metrics/accuracy.html | 580 ++ _modules/hezar/metrics/bleu.html | 580 ++ _modules/hezar/metrics/cer.html | 614 ++ _modules/hezar/metrics/f1.html | 603 ++ _modules/hezar/metrics/metric.html | 535 ++ _modules/hezar/metrics/precision.html | 608 ++ _modules/hezar/metrics/recall.html | 608 ++ _modules/hezar/metrics/rouge.html | 598 ++ _modules/hezar/metrics/seqeval.html | 619 ++ _modules/hezar/metrics/wer.html | 592 ++ _modules/hezar/models/backbone/bert/bert.html | 588 ++ .../models/backbone/bert/bert_config.html | 520 ++ .../backbone/distilbert/distilbert.html | 575 ++ .../distilbert/distilbert_config.html | 518 ++ .../models/backbone/roberta/roberta.html | 587 ++ .../backbone/roberta/roberta_config.html | 522 ++ _modules/hezar/models/backbone/vit/vit.html | 570 ++ .../hezar/models/backbone/vit/vit_config.html | 516 ++ .../beit_roberta/beit_roberta_image2text.html | 608 ++ .../beit_roberta_image2text_config.html | 586 ++ .../image2text/crnn/crnn_decode_utils.html | 534 ++ .../image2text/crnn/crnn_image2text.html | 633 ++ .../crnn/crnn_image2text_config.html | 513 ++ .../image2text/trocr/trocr_image2text.html | 608 ++ .../trocr/trocr_image2text_config.html | 570 ++ .../vit_gpt2/vit_gpt2_image2text.html | 608 ++ .../vit_gpt2/vit_gpt2_image2text_config.html | 571 ++ .../vit_roberta/vit_roberta_image2text.html | 619 ++ .../vit_roberta_image2text_config.html | 571 ++ _modules/hezar/models/model.html | 1062 ++++ _modules/hezar/models/model_outputs.html | 610 ++ .../bert/bert_sequence_labeling.html | 646 ++ .../bert/bert_sequence_labeling_config.html | 523 ++ .../distilbert_sequence_labeling.html | 642 ++ .../distilbert_sequence_labeling_config.html | 524 ++ .../roberta/roberta_sequence_labeling.html | 673 ++ .../roberta_sequence_labeling_config.html | 527 ++ .../whisper/whisper_feature_extractor.html | 692 +++ .../whisper/whisper_speech_recognition.html | 705 +++ .../whisper_speech_recognition_config.html | 543 ++ .../whisper/whisper_tokenizer.html | 1236 ++++ .../bert/bert_text_classification.html | 639 ++ .../bert/bert_text_classification_config.html | 522 ++ .../distilbert_text_classification.html | 623 ++ ...distilbert_text_classification_config.html | 521 ++ .../roberta/roberta_text_classification.html | 651 ++ .../roberta_text_classification_config.html | 525 ++ .../gpt2/gpt2_text_generation.html | 604 ++ .../gpt2/gpt2_text_generation_config.html | 539 ++ .../t5/t5_text_generation.html | 623 ++ .../t5/t5_text_generation_config.html | 524 ++ .../audio_feature_extractor.html | 841 +++ .../hezar/preprocessors/image_processor.html | 761 +++ .../hezar/preprocessors/preprocessor.html | 660 ++ .../hezar/preprocessors/text_normalizer.html | 655 ++ .../hezar/preprocessors/tokenizers/bpe.html | 616 ++ .../tokenizers/sentencepiece_bpe.html | 621 ++ .../tokenizers/sentencepiece_unigram.html | 619 ++ .../preprocessors/tokenizers/tokenizer.html | 1338 ++++ .../preprocessors/tokenizers/wordpiece.html | 604 ++ _modules/hezar/registry.html | 699 +++ _modules/hezar/trainer/metrics_handlers.html | 715 +++ _modules/hezar/trainer/trainer.html | 1282 ++++ _modules/hezar/trainer/trainer_utils.html | 702 +++ _modules/hezar/utils/audio_utils.html | 1066 ++++ _modules/hezar/utils/common_utils.html | 652 ++ _modules/hezar/utils/data_utils.html | 724 +++ _modules/hezar/utils/file_utils.html | 552 ++ _modules/hezar/utils/hub_utils.html | 672 ++ _modules/hezar/utils/image_utils.html | 757 +++ _modules/hezar/utils/integration_utils.html | 556 ++ _modules/hezar/utils/logging.html | 518 ++ _modules/hezar/utils/registry_utils.html | 679 +++ _modules/index.html | 577 ++ _sources/contributing.md.txt | 102 + _sources/get_started/index.md.txt | 8 + _sources/get_started/installation.md.txt | 41 + _sources/get_started/overview.md.txt | 20 + _sources/get_started/quick_tour.md.txt | 214 + _sources/guide/advanced_training.md.txt | 2 + _sources/guide/hezar_architecture.md.txt | 289 + _sources/guide/index.md.txt | 12 + _sources/guide/models_advanced.md.txt | 267 + _sources/guide/trainer_in_depth.md.txt | 167 + _sources/index.md.txt | 17 + _sources/source/hezar.builders.rst.txt | 7 + _sources/source/hezar.configs.rst.txt | 7 + _sources/source/hezar.constants.rst.txt | 7 + .../source/hezar.data.data_collators.rst.txt | 7 + .../hezar.data.datasets.dataset.rst.txt | 7 + ....datasets.image_captioning_dataset.rst.txt | 7 + .../hezar.data.datasets.ocr_dataset.rst.txt | 7 + _sources/source/hezar.data.datasets.rst.txt | 23 + ...datasets.sequence_labeling_dataset.rst.txt | 7 + ...tasets.text_classification_dataset.rst.txt | 7 + ...atasets.text_summarization_dataset.rst.txt | 7 + _sources/source/hezar.data.rst.txt | 26 + .../source/hezar.embeddings.embedding.rst.txt | 7 + .../source/hezar.embeddings.fasttext.rst.txt | 7 + _sources/source/hezar.embeddings.rst.txt | 20 + .../source/hezar.embeddings.word2vec.rst.txt | 7 + .../source/hezar.metrics.accuracy.rst.txt | 7 + _sources/source/hezar.metrics.bleu.rst.txt | 7 + _sources/source/hezar.metrics.cer.rst.txt | 7 + _sources/source/hezar.metrics.f1.rst.txt | 7 + _sources/source/hezar.metrics.metric.rst.txt | 7 + .../source/hezar.metrics.precision.rst.txt | 7 + _sources/source/hezar.metrics.recall.rst.txt | 7 + _sources/source/hezar.metrics.rouge.rst.txt | 7 + _sources/source/hezar.metrics.rst.txt | 27 + _sources/source/hezar.metrics.seqeval.rst.txt | 7 + _sources/source/hezar.metrics.wer.rst.txt | 7 + .../hezar.models.backbone.bert.bert.rst.txt | 7 + ...r.models.backbone.bert.bert_config.rst.txt | 7 + .../source/hezar.models.backbone.bert.rst.txt | 19 + ...els.backbone.distilbert.distilbert.rst.txt | 7 + ...kbone.distilbert.distilbert_config.rst.txt | 7 + .../hezar.models.backbone.distilbert.rst.txt | 19 + ...ar.models.backbone.roberta.roberta.rst.txt | 7 + ...ls.backbone.roberta.roberta_config.rst.txt | 7 + .../hezar.models.backbone.roberta.rst.txt | 19 + _sources/source/hezar.models.backbone.rst.txt | 21 + .../source/hezar.models.backbone.vit.rst.txt | 19 + .../hezar.models.backbone.vit.vit.rst.txt | 7 + ...zar.models.backbone.vit.vit_config.rst.txt | 7 + ...it_roberta.beit_roberta_image2text.rst.txt | 7 + ...rta.beit_roberta_image2text_config.rst.txt | 7 + ...zar.models.image2text.beit_roberta.rst.txt | 19 + ....image2text.crnn.crnn_decode_utils.rst.txt | 7 + ...ls.image2text.crnn.crnn_image2text.rst.txt | 7 + ...e2text.crnn.crnn_image2text_config.rst.txt | 7 + .../hezar.models.image2text.crnn.rst.txt | 20 + .../source/hezar.models.image2text.rst.txt | 22 + .../hezar.models.image2text.trocr.rst.txt | 19 + ....image2text.trocr.trocr_image2text.rst.txt | 7 + ...text.trocr.trocr_image2text_config.rst.txt | 7 + .../hezar.models.image2text.vit_gpt2.rst.txt | 19 + ...2text.vit_gpt2.vit_gpt2_image2text.rst.txt | 7 + ...it_gpt2.vit_gpt2_image2text_config.rst.txt | 7 + ...ezar.models.image2text.vit_roberta.rst.txt | 19 + ...vit_roberta.vit_roberta_image2text.rst.txt | 7 + ...erta.vit_roberta_image2text_config.rst.txt | 7 + ...ask_filling.bert.bert_mask_filling.rst.txt | 7 + ...ling.bert.bert_mask_filling_config.rst.txt | 7 + .../hezar.models.mask_filling.bert.rst.txt | 19 + ...distilbert.distilbert_mask_filling.rst.txt | 7 + ...ert.distilbert_mask_filling_config.rst.txt | 7 + ...zar.models.mask_filling.distilbert.rst.txt | 19 + ...lling.roberta.roberta_mask_filling.rst.txt | 7 + ...oberta.roberta_mask_filling_config.rst.txt | 7 + .../hezar.models.mask_filling.roberta.rst.txt | 19 + .../source/hezar.models.mask_filling.rst.txt | 20 + _sources/source/hezar.models.model.rst.txt | 7 + .../source/hezar.models.model_outputs.rst.txt | 7 + _sources/source/hezar.models.rst.txt | 34 + ...beling.bert.bert_sequence_labeling.rst.txt | 7 + ...bert.bert_sequence_labeling_config.rst.txt | 7 + ...ezar.models.sequence_labeling.bert.rst.txt | 19 + ...lbert.distilbert_sequence_labeling.rst.txt | 7 + ...istilbert_sequence_labeling_config.rst.txt | 7 + ...odels.sequence_labeling.distilbert.rst.txt | 19 + ....roberta.roberta_sequence_labeling.rst.txt | 7 + ...a.roberta_sequence_labeling_config.rst.txt | 7 + ...r.models.sequence_labeling.roberta.rst.txt | 19 + .../hezar.models.sequence_labeling.rst.txt | 20 + .../hezar.models.speech_recognition.rst.txt | 18 + ....models.speech_recognition.whisper.rst.txt | 21 + ....whisper.whisper_feature_extractor.rst.txt | 7 + ...whisper.whisper_speech_recognition.rst.txt | 7 + ....whisper_speech_recognition_config.rst.txt | 7 + ...ognition.whisper.whisper_tokenizer.rst.txt | 7 + ...tion.bert.bert_text_classification.rst.txt | 7 + ...rt.bert_text_classification_config.rst.txt | 7 + ...ar.models.text_classification.bert.rst.txt | 19 + ...ert.distilbert_text_classification.rst.txt | 7 + ...tilbert_text_classification_config.rst.txt | 7 + ...els.text_classification.distilbert.rst.txt | 19 + ...oberta.roberta_text_classification.rst.txt | 7 + ...roberta_text_classification_config.rst.txt | 7 + ...models.text_classification.roberta.rst.txt | 19 + .../hezar.models.text_classification.rst.txt | 20 + .../hezar.models.text_embedding.rst.txt | 10 + ...neration.gpt2.gpt2_text_generation.rst.txt | 7 + ...n.gpt2.gpt2_text_generation_config.rst.txt | 7 + .../hezar.models.text_generation.gpt2.rst.txt | 19 + .../hezar.models.text_generation.rst.txt | 19 + .../hezar.models.text_generation.t5.rst.txt | 19 + ...t_generation.t5.t5_text_generation.rst.txt | 7 + ...ation.t5.t5_text_generation_config.rst.txt | 7 + ...processors.audio_feature_extractor.rst.txt | 7 + ...ezar.preprocessors.image_processor.rst.txt | 7 + .../hezar.preprocessors.preprocessor.rst.txt | 7 + _sources/source/hezar.preprocessors.rst.txt | 29 + ...ezar.preprocessors.text_normalizer.rst.txt | 7 + ...hezar.preprocessors.tokenizers.bpe.rst.txt | 7 + .../hezar.preprocessors.tokenizers.rst.txt | 22 + ...ssors.tokenizers.sentencepiece_bpe.rst.txt | 7 + ...s.tokenizers.sentencepiece_unigram.rst.txt | 7 + ...preprocessors.tokenizers.tokenizer.rst.txt | 7 + ...preprocessors.tokenizers.wordpiece.rst.txt | 7 + _sources/source/hezar.registry.rst.txt | 7 + _sources/source/hezar.rst.txt | 35 + .../hezar.trainer.metrics_handlers.rst.txt | 7 + _sources/source/hezar.trainer.rst.txt | 20 + _sources/source/hezar.trainer.trainer.rst.txt | 7 + .../hezar.trainer.trainer_utils.rst.txt | 7 + .../source/hezar.utils.audio_utils.rst.txt | 7 + .../source/hezar.utils.common_utils.rst.txt | 7 + .../source/hezar.utils.data_utils.rst.txt | 7 + .../source/hezar.utils.file_utils.rst.txt | 7 + _sources/source/hezar.utils.hub_utils.rst.txt | 7 + .../source/hezar.utils.image_utils.rst.txt | 7 + .../hezar.utils.integration_utils.rst.txt | 7 + _sources/source/hezar.utils.logging.rst.txt | 7 + .../source/hezar.utils.registry_utils.rst.txt | 7 + _sources/source/hezar.utils.rst.txt | 26 + _sources/source/index.md.txt | 9 + _sources/source/modules.rst.txt | 7 + _sources/tutorial/datasets.md.txt | 59 + _sources/tutorial/embeddings.md.txt | 128 + _sources/tutorial/index.md.txt | 10 + _sources/tutorial/models.md.txt | 138 + _sources/tutorial/preprocessors.md.txt | 82 + _sources/tutorial/training.md.txt | 112 + _static/basic.css | 925 +++ _static/check-solid.svg | 4 + _static/clipboard.min.js | 7 + _static/copy-button.svg | 5 + _static/copybutton.css | 94 + _static/copybutton.js | 248 + _static/copybutton_funcs.js | 73 + _static/debug.css | 69 + _static/doctools.js | 156 + _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/hezar_logo.svg | 25 + _static/language_data.js | 199 + _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 247 + _static/scripts/furo-extensions.js | 0 _static/scripts/furo.js | 3 + _static/scripts/furo.js.LICENSE.txt | 7 + _static/scripts/furo.js.map | 1 + _static/searchtools.js | 574 ++ _static/skeleton.css | 296 + _static/sphinx_highlight.js | 154 + _static/styles/furo-extensions.css | 2 + _static/styles/furo-extensions.css.map | 1 + _static/styles/furo.css | 2 + _static/styles/furo.css.map | 1 + contributing.html | 702 +++ genindex.html | 5432 +++++++++++++++++ get_started/index.html | 528 ++ get_started/installation.html | 589 ++ get_started/overview.html | 538 ++ get_started/quick_tour.html | 775 +++ guide/advanced_training.html | 522 ++ guide/hezar_architecture.html | 820 +++ guide/index.html | 530 ++ guide/models_advanced.html | 863 +++ guide/trainer_in_depth.html | 740 +++ index.html | 551 ++ objects.inv | Bin 0 -> 15197 bytes py-modindex.html | 1229 ++++ search.html | 502 ++ searchindex.js | 1 + source/hezar.builders.html | 650 ++ source/hezar.configs.html | 1012 +++ source/hezar.constants.html | 1289 ++++ source/hezar.data.data_collators.html | 630 ++ source/hezar.data.datasets.dataset.html | 635 ++ source/hezar.data.datasets.html | 659 ++ ...ata.datasets.image_captioning_dataset.html | 641 ++ source/hezar.data.datasets.ocr_dataset.html | 684 +++ ...ta.datasets.sequence_labeling_dataset.html | 641 ++ ....datasets.text_classification_dataset.html | 620 ++ ...a.datasets.text_summarization_dataset.html | 641 ++ source/hezar.data.html | 604 ++ source/hezar.embeddings.embedding.html | 819 +++ source/hezar.embeddings.fasttext.html | 948 +++ source/hezar.embeddings.html | 670 ++ source/hezar.embeddings.word2vec.html | 1001 +++ source/hezar.html | 1121 ++++ source/hezar.metrics.accuracy.html | 624 ++ source/hezar.metrics.bleu.html | 615 ++ source/hezar.metrics.cer.html | 637 ++ source/hezar.metrics.f1.html | 648 ++ source/hezar.metrics.html | 708 +++ source/hezar.metrics.metric.html | 573 ++ source/hezar.metrics.precision.html | 655 ++ source/hezar.metrics.recall.html | 655 ++ source/hezar.metrics.rouge.html | 644 ++ source/hezar.metrics.seqeval.html | 654 ++ source/hezar.metrics.wer.html | 630 ++ source/hezar.models.backbone.bert.bert.html | 618 ++ ...ezar.models.backbone.bert.bert_config.html | 656 ++ source/hezar.models.backbone.bert.html | 587 ++ ...models.backbone.distilbert.distilbert.html | 612 ++ ...backbone.distilbert.distilbert_config.html | 644 ++ source/hezar.models.backbone.distilbert.html | 584 ++ source/hezar.models.backbone.html | 611 ++ source/hezar.models.backbone.roberta.html | 589 ++ ...hezar.models.backbone.roberta.roberta.html | 618 ++ ...odels.backbone.roberta.roberta_config.html | 668 ++ source/hezar.models.backbone.vit.html | 584 ++ source/hezar.models.backbone.vit.vit.html | 617 ++ .../hezar.models.backbone.vit.vit_config.html | 638 ++ source/hezar.models.html | 789 +++ ....beit_roberta.beit_roberta_image2text.html | 667 ++ ...oberta.beit_roberta_image2text_config.html | 959 +++ .../hezar.models.image2text.beit_roberta.html | 646 ++ ...els.image2text.crnn.crnn_decode_utils.html | 551 ++ ...odels.image2text.crnn.crnn_image2text.html | 691 +++ ...mage2text.crnn.crnn_image2text_config.html | 614 ++ source/hezar.models.image2text.crnn.html | 593 ++ source/hezar.models.image2text.html | 644 ++ source/hezar.models.image2text.trocr.html | 630 ++ ...els.image2text.trocr.trocr_image2text.html | 667 ++ ...ge2text.trocr.trocr_image2text_config.html | 863 +++ source/hezar.models.image2text.vit_gpt2.html | 631 ++ ...age2text.vit_gpt2.vit_gpt2_image2text.html | 667 ++ ...t.vit_gpt2.vit_gpt2_image2text_config.html | 869 +++ .../hezar.models.image2text.vit_roberta.html | 633 ++ ...xt.vit_roberta.vit_roberta_image2text.html | 679 +++ ...roberta.vit_roberta_image2text_config.html | 869 +++ ...s.mask_filling.bert.bert_mask_filling.html | 521 ++ ...filling.bert.bert_mask_filling_config.html | 521 ++ source/hezar.models.mask_filling.bert.html | 553 ++ ...ng.distilbert.distilbert_mask_filling.html | 521 ++ ...ilbert.distilbert_mask_filling_config.html | 521 ++ .../hezar.models.mask_filling.distilbert.html | 553 ++ source/hezar.models.mask_filling.html | 578 ++ source/hezar.models.mask_filling.roberta.html | 553 ++ ..._filling.roberta.roberta_mask_filling.html | 521 ++ ...g.roberta.roberta_mask_filling_config.html | 521 ++ source/hezar.models.model.html | 827 +++ source/hezar.models.model_outputs.html | 726 +++ ..._labeling.bert.bert_sequence_labeling.html | 643 ++ ...ng.bert.bert_sequence_labeling_config.html | 674 ++ .../hezar.models.sequence_labeling.bert.html | 592 ++ ...stilbert.distilbert_sequence_labeling.html | 636 ++ ...t.distilbert_sequence_labeling_config.html | 674 ++ ...r.models.sequence_labeling.distilbert.html | 591 ++ source/hezar.models.sequence_labeling.html | 597 ++ ...ezar.models.sequence_labeling.roberta.html | 600 ++ ...ing.roberta.roberta_sequence_labeling.html | 679 +++ ...erta.roberta_sequence_labeling_config.html | 692 +++ source/hezar.models.speech_recognition.html | 576 ++ ...zar.models.speech_recognition.whisper.html | 672 ++ ...ion.whisper.whisper_feature_extractor.html | 628 ++ ...on.whisper.whisper_speech_recognition.html | 721 +++ ...per.whisper_speech_recognition_config.html | 794 +++ ...recognition.whisper.whisper_tokenizer.html | 679 +++ ...ication.bert.bert_text_classification.html | 648 ++ ....bert.bert_text_classification_config.html | 668 ++ ...hezar.models.text_classification.bert.html | 591 ++ ...ilbert.distilbert_text_classification.html | 642 ++ ...distilbert_text_classification_config.html | 662 ++ ...models.text_classification.distilbert.html | 589 ++ source/hezar.models.text_classification.html | 597 ++ ...ar.models.text_classification.roberta.html | 599 ++ ...n.roberta.roberta_text_classification.html | 679 +++ ...ta.roberta_text_classification_config.html | 686 +++ source/hezar.models.text_embedding.html | 543 ++ ..._generation.gpt2.gpt2_text_generation.html | 666 ++ ...tion.gpt2.gpt2_text_generation_config.html | 743 +++ source/hezar.models.text_generation.gpt2.html | 607 ++ source/hezar.models.text_generation.html | 582 ++ source/hezar.models.text_generation.t5.html | 596 ++ ...text_generation.t5.t5_text_generation.html | 667 ++ ...neration.t5.t5_text_generation_config.html | 686 +++ ...preprocessors.audio_feature_extractor.html | 677 ++ source/hezar.preprocessors.html | 669 ++ .../hezar.preprocessors.image_processor.html | 684 +++ source/hezar.preprocessors.preprocessor.html | 627 ++ .../hezar.preprocessors.text_normalizer.html | 649 ++ .../hezar.preprocessors.tokenizers.bpe.html | 769 +++ source/hezar.preprocessors.tokenizers.html | 791 +++ ...ocessors.tokenizers.sentencepiece_bpe.html | 781 +++ ...sors.tokenizers.sentencepiece_unigram.html | 781 +++ ...ar.preprocessors.tokenizers.tokenizer.html | 1133 ++++ ...ar.preprocessors.tokenizers.wordpiece.html | 745 +++ source/hezar.registry.html | 673 ++ source/hezar.trainer.html | 648 ++ source/hezar.trainer.metrics_handlers.html | 748 +++ source/hezar.trainer.trainer.html | 826 +++ source/hezar.trainer.trainer_utils.html | 700 +++ source/hezar.utils.audio_utils.html | 807 +++ source/hezar.utils.common_utils.html | 620 ++ source/hezar.utils.data_utils.html | 623 ++ source/hezar.utils.file_utils.html | 563 ++ source/hezar.utils.html | 636 ++ source/hezar.utils.hub_utils.html | 653 ++ source/hezar.utils.image_utils.html | 650 ++ source/hezar.utils.integration_utils.html | 578 ++ source/hezar.utils.logging.html | 555 ++ source/hezar.utils.registry_utils.html | 641 ++ source/index.html | 532 ++ source/modules.html | 601 ++ tutorial/datasets.html | 606 ++ tutorial/embeddings.html | 695 +++ tutorial/index.html | 530 ++ tutorial/models.html | 692 +++ tutorial/preprocessors.html | 629 ++ tutorial/training.html | 692 +++ 572 files changed, 170894 insertions(+) create mode 100644 .buildinfo create mode 100644 .doctrees/contributing.doctree create mode 100644 .doctrees/environment.pickle create mode 100644 .doctrees/get_started/index.doctree create mode 100644 .doctrees/get_started/installation.doctree create mode 100644 .doctrees/get_started/overview.doctree create mode 100644 .doctrees/get_started/quick_tour.doctree create mode 100644 .doctrees/guide/advanced_training.doctree create mode 100644 .doctrees/guide/hezar_architecture.doctree create mode 100644 .doctrees/guide/index.doctree create mode 100644 .doctrees/guide/models_advanced.doctree create mode 100644 .doctrees/guide/trainer_in_depth.doctree create mode 100644 .doctrees/index.doctree create mode 100644 .doctrees/source/hezar.builders.doctree create mode 100644 .doctrees/source/hezar.configs.doctree create mode 100644 .doctrees/source/hezar.constants.doctree create mode 100644 .doctrees/source/hezar.data.data_collators.doctree create mode 100644 .doctrees/source/hezar.data.datasets.dataset.doctree create mode 100644 .doctrees/source/hezar.data.datasets.doctree create mode 100644 .doctrees/source/hezar.data.datasets.image_captioning_dataset.doctree create mode 100644 .doctrees/source/hezar.data.datasets.ocr_dataset.doctree create mode 100644 .doctrees/source/hezar.data.datasets.sequence_labeling_dataset.doctree create mode 100644 .doctrees/source/hezar.data.datasets.text_classification_dataset.doctree create mode 100644 .doctrees/source/hezar.data.datasets.text_summarization_dataset.doctree create mode 100644 .doctrees/source/hezar.data.doctree create mode 100644 .doctrees/source/hezar.doctree create mode 100644 .doctrees/source/hezar.embeddings.doctree create mode 100644 .doctrees/source/hezar.embeddings.embedding.doctree create mode 100644 .doctrees/source/hezar.embeddings.fasttext.doctree create mode 100644 .doctrees/source/hezar.embeddings.word2vec.doctree create mode 100644 .doctrees/source/hezar.metrics.accuracy.doctree create mode 100644 .doctrees/source/hezar.metrics.bleu.doctree create mode 100644 .doctrees/source/hezar.metrics.cer.doctree create mode 100644 .doctrees/source/hezar.metrics.doctree create mode 100644 .doctrees/source/hezar.metrics.f1.doctree create mode 100644 .doctrees/source/hezar.metrics.metric.doctree create mode 100644 .doctrees/source/hezar.metrics.precision.doctree create mode 100644 .doctrees/source/hezar.metrics.recall.doctree create mode 100644 .doctrees/source/hezar.metrics.rouge.doctree create mode 100644 .doctrees/source/hezar.metrics.seqeval.doctree create mode 100644 .doctrees/source/hezar.metrics.wer.doctree create mode 100644 .doctrees/source/hezar.models.backbone.bert.bert.doctree create mode 100644 .doctrees/source/hezar.models.backbone.bert.bert_config.doctree create mode 100644 .doctrees/source/hezar.models.backbone.bert.doctree create mode 100644 .doctrees/source/hezar.models.backbone.distilbert.distilbert.doctree create mode 100644 .doctrees/source/hezar.models.backbone.distilbert.distilbert_config.doctree create mode 100644 .doctrees/source/hezar.models.backbone.distilbert.doctree create mode 100644 .doctrees/source/hezar.models.backbone.doctree create mode 100644 .doctrees/source/hezar.models.backbone.roberta.doctree create mode 100644 .doctrees/source/hezar.models.backbone.roberta.roberta.doctree create mode 100644 .doctrees/source/hezar.models.backbone.roberta.roberta_config.doctree create mode 100644 .doctrees/source/hezar.models.backbone.vit.doctree create mode 100644 .doctrees/source/hezar.models.backbone.vit.vit.doctree create mode 100644 .doctrees/source/hezar.models.backbone.vit.vit_config.doctree create mode 100644 .doctrees/source/hezar.models.doctree create mode 100644 .doctrees/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text.doctree create mode 100644 .doctrees/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text_config.doctree create mode 100644 .doctrees/source/hezar.models.image2text.beit_roberta.doctree create mode 100644 .doctrees/source/hezar.models.image2text.crnn.crnn_decode_utils.doctree create mode 100644 .doctrees/source/hezar.models.image2text.crnn.crnn_image2text.doctree create mode 100644 .doctrees/source/hezar.models.image2text.crnn.crnn_image2text_config.doctree create mode 100644 .doctrees/source/hezar.models.image2text.crnn.doctree create mode 100644 .doctrees/source/hezar.models.image2text.doctree create mode 100644 .doctrees/source/hezar.models.image2text.trocr.doctree create mode 100644 .doctrees/source/hezar.models.image2text.trocr.trocr_image2text.doctree create mode 100644 .doctrees/source/hezar.models.image2text.trocr.trocr_image2text_config.doctree create mode 100644 .doctrees/source/hezar.models.image2text.vit_gpt2.doctree create mode 100644 .doctrees/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text.doctree create mode 100644 .doctrees/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config.doctree create mode 100644 .doctrees/source/hezar.models.image2text.vit_roberta.doctree create mode 100644 .doctrees/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text.doctree create mode 100644 .doctrees/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text_config.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.bert.bert_mask_filling.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.bert.bert_mask_filling_config.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.bert.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling_config.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.distilbert.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.roberta.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.roberta.roberta_mask_filling.doctree create mode 100644 .doctrees/source/hezar.models.mask_filling.roberta.roberta_mask_filling_config.doctree create mode 100644 .doctrees/source/hezar.models.model.doctree create mode 100644 .doctrees/source/hezar.models.model_outputs.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling_config.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.bert.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.distilbert.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.roberta.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling.doctree create mode 100644 .doctrees/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config.doctree create mode 100644 .doctrees/source/hezar.models.speech_recognition.doctree create mode 100644 .doctrees/source/hezar.models.speech_recognition.whisper.doctree create mode 100644 .doctrees/source/hezar.models.speech_recognition.whisper.whisper_feature_extractor.doctree create mode 100644 .doctrees/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition.doctree create mode 100644 .doctrees/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition_config.doctree create mode 100644 .doctrees/source/hezar.models.speech_recognition.whisper.whisper_tokenizer.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.bert.bert_text_classification.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.bert.bert_text_classification_config.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.bert.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.distilbert.distilbert_text_classification.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.distilbert.distilbert_text_classification_config.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.distilbert.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.roberta.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.roberta.roberta_text_classification.doctree create mode 100644 .doctrees/source/hezar.models.text_classification.roberta.roberta_text_classification_config.doctree create mode 100644 .doctrees/source/hezar.models.text_embedding.doctree create mode 100644 .doctrees/source/hezar.models.text_generation.doctree create mode 100644 .doctrees/source/hezar.models.text_generation.gpt2.doctree create mode 100644 .doctrees/source/hezar.models.text_generation.gpt2.gpt2_text_generation.doctree create mode 100644 .doctrees/source/hezar.models.text_generation.gpt2.gpt2_text_generation_config.doctree create mode 100644 .doctrees/source/hezar.models.text_generation.t5.doctree create mode 100644 .doctrees/source/hezar.models.text_generation.t5.t5_text_generation.doctree create mode 100644 .doctrees/source/hezar.models.text_generation.t5.t5_text_generation_config.doctree create mode 100644 .doctrees/source/hezar.preprocessors.audio_feature_extractor.doctree create mode 100644 .doctrees/source/hezar.preprocessors.doctree create mode 100644 .doctrees/source/hezar.preprocessors.image_processor.doctree create mode 100644 .doctrees/source/hezar.preprocessors.preprocessor.doctree create mode 100644 .doctrees/source/hezar.preprocessors.text_normalizer.doctree create mode 100644 .doctrees/source/hezar.preprocessors.tokenizers.bpe.doctree create mode 100644 .doctrees/source/hezar.preprocessors.tokenizers.doctree create mode 100644 .doctrees/source/hezar.preprocessors.tokenizers.sentencepiece_bpe.doctree create mode 100644 .doctrees/source/hezar.preprocessors.tokenizers.sentencepiece_unigram.doctree create mode 100644 .doctrees/source/hezar.preprocessors.tokenizers.tokenizer.doctree create mode 100644 .doctrees/source/hezar.preprocessors.tokenizers.wordpiece.doctree create mode 100644 .doctrees/source/hezar.registry.doctree create mode 100644 .doctrees/source/hezar.trainer.doctree create mode 100644 .doctrees/source/hezar.trainer.metrics_handlers.doctree create mode 100644 .doctrees/source/hezar.trainer.trainer.doctree create mode 100644 .doctrees/source/hezar.trainer.trainer_utils.doctree create mode 100644 .doctrees/source/hezar.utils.audio_utils.doctree create mode 100644 .doctrees/source/hezar.utils.common_utils.doctree create mode 100644 .doctrees/source/hezar.utils.data_utils.doctree create mode 100644 .doctrees/source/hezar.utils.doctree create mode 100644 .doctrees/source/hezar.utils.file_utils.doctree create mode 100644 .doctrees/source/hezar.utils.hub_utils.doctree create mode 100644 .doctrees/source/hezar.utils.image_utils.doctree create mode 100644 .doctrees/source/hezar.utils.integration_utils.doctree create mode 100644 .doctrees/source/hezar.utils.logging.doctree create mode 100644 .doctrees/source/hezar.utils.registry_utils.doctree create mode 100644 .doctrees/source/index.doctree create mode 100644 .doctrees/source/modules.doctree create mode 100644 .doctrees/tutorial/datasets.doctree create mode 100644 .doctrees/tutorial/embeddings.doctree create mode 100644 .doctrees/tutorial/index.doctree create mode 100644 .doctrees/tutorial/models.doctree create mode 100644 .doctrees/tutorial/preprocessors.doctree create mode 100644 .doctrees/tutorial/training.doctree create mode 100644 .nojekyll create mode 100644 _modules/hezar/builders.html create mode 100644 _modules/hezar/configs.html create mode 100644 _modules/hezar/constants.html create mode 100644 _modules/hezar/data/data_collators.html create mode 100644 _modules/hezar/data/datasets/dataset.html create mode 100644 _modules/hezar/data/datasets/image_captioning_dataset.html create mode 100644 _modules/hezar/data/datasets/ocr_dataset.html create mode 100644 _modules/hezar/data/datasets/sequence_labeling_dataset.html create mode 100644 _modules/hezar/data/datasets/text_classification_dataset.html create mode 100644 _modules/hezar/data/datasets/text_summarization_dataset.html create mode 100644 _modules/hezar/embeddings/embedding.html create mode 100644 _modules/hezar/embeddings/fasttext.html create mode 100644 _modules/hezar/embeddings/word2vec.html create mode 100644 _modules/hezar/metrics/accuracy.html create mode 100644 _modules/hezar/metrics/bleu.html create mode 100644 _modules/hezar/metrics/cer.html create mode 100644 _modules/hezar/metrics/f1.html create mode 100644 _modules/hezar/metrics/metric.html create mode 100644 _modules/hezar/metrics/precision.html create mode 100644 _modules/hezar/metrics/recall.html create mode 100644 _modules/hezar/metrics/rouge.html create mode 100644 _modules/hezar/metrics/seqeval.html create mode 100644 _modules/hezar/metrics/wer.html create mode 100644 _modules/hezar/models/backbone/bert/bert.html create mode 100644 _modules/hezar/models/backbone/bert/bert_config.html create mode 100644 _modules/hezar/models/backbone/distilbert/distilbert.html create mode 100644 _modules/hezar/models/backbone/distilbert/distilbert_config.html create mode 100644 _modules/hezar/models/backbone/roberta/roberta.html create mode 100644 _modules/hezar/models/backbone/roberta/roberta_config.html create mode 100644 _modules/hezar/models/backbone/vit/vit.html create mode 100644 _modules/hezar/models/backbone/vit/vit_config.html create mode 100644 _modules/hezar/models/image2text/beit_roberta/beit_roberta_image2text.html create mode 100644 _modules/hezar/models/image2text/beit_roberta/beit_roberta_image2text_config.html create mode 100644 _modules/hezar/models/image2text/crnn/crnn_decode_utils.html create mode 100644 _modules/hezar/models/image2text/crnn/crnn_image2text.html create mode 100644 _modules/hezar/models/image2text/crnn/crnn_image2text_config.html create mode 100644 _modules/hezar/models/image2text/trocr/trocr_image2text.html create mode 100644 _modules/hezar/models/image2text/trocr/trocr_image2text_config.html create mode 100644 _modules/hezar/models/image2text/vit_gpt2/vit_gpt2_image2text.html create mode 100644 _modules/hezar/models/image2text/vit_gpt2/vit_gpt2_image2text_config.html create mode 100644 _modules/hezar/models/image2text/vit_roberta/vit_roberta_image2text.html create mode 100644 _modules/hezar/models/image2text/vit_roberta/vit_roberta_image2text_config.html create mode 100644 _modules/hezar/models/model.html create mode 100644 _modules/hezar/models/model_outputs.html create mode 100644 _modules/hezar/models/sequence_labeling/bert/bert_sequence_labeling.html create mode 100644 _modules/hezar/models/sequence_labeling/bert/bert_sequence_labeling_config.html create mode 100644 _modules/hezar/models/sequence_labeling/distilbert/distilbert_sequence_labeling.html create mode 100644 _modules/hezar/models/sequence_labeling/distilbert/distilbert_sequence_labeling_config.html create mode 100644 _modules/hezar/models/sequence_labeling/roberta/roberta_sequence_labeling.html create mode 100644 _modules/hezar/models/sequence_labeling/roberta/roberta_sequence_labeling_config.html create mode 100644 _modules/hezar/models/speech_recognition/whisper/whisper_feature_extractor.html create mode 100644 _modules/hezar/models/speech_recognition/whisper/whisper_speech_recognition.html create mode 100644 _modules/hezar/models/speech_recognition/whisper/whisper_speech_recognition_config.html create mode 100644 _modules/hezar/models/speech_recognition/whisper/whisper_tokenizer.html create mode 100644 _modules/hezar/models/text_classification/bert/bert_text_classification.html create mode 100644 _modules/hezar/models/text_classification/bert/bert_text_classification_config.html create mode 100644 _modules/hezar/models/text_classification/distilbert/distilbert_text_classification.html create mode 100644 _modules/hezar/models/text_classification/distilbert/distilbert_text_classification_config.html create mode 100644 _modules/hezar/models/text_classification/roberta/roberta_text_classification.html create mode 100644 _modules/hezar/models/text_classification/roberta/roberta_text_classification_config.html create mode 100644 _modules/hezar/models/text_generation/gpt2/gpt2_text_generation.html create mode 100644 _modules/hezar/models/text_generation/gpt2/gpt2_text_generation_config.html create mode 100644 _modules/hezar/models/text_generation/t5/t5_text_generation.html create mode 100644 _modules/hezar/models/text_generation/t5/t5_text_generation_config.html create mode 100644 _modules/hezar/preprocessors/audio_feature_extractor.html create mode 100644 _modules/hezar/preprocessors/image_processor.html create mode 100644 _modules/hezar/preprocessors/preprocessor.html create mode 100644 _modules/hezar/preprocessors/text_normalizer.html create mode 100644 _modules/hezar/preprocessors/tokenizers/bpe.html create mode 100644 _modules/hezar/preprocessors/tokenizers/sentencepiece_bpe.html create mode 100644 _modules/hezar/preprocessors/tokenizers/sentencepiece_unigram.html create mode 100644 _modules/hezar/preprocessors/tokenizers/tokenizer.html create mode 100644 _modules/hezar/preprocessors/tokenizers/wordpiece.html create mode 100644 _modules/hezar/registry.html create mode 100644 _modules/hezar/trainer/metrics_handlers.html create mode 100644 _modules/hezar/trainer/trainer.html create mode 100644 _modules/hezar/trainer/trainer_utils.html create mode 100644 _modules/hezar/utils/audio_utils.html create mode 100644 _modules/hezar/utils/common_utils.html create mode 100644 _modules/hezar/utils/data_utils.html create mode 100644 _modules/hezar/utils/file_utils.html create mode 100644 _modules/hezar/utils/hub_utils.html create mode 100644 _modules/hezar/utils/image_utils.html create mode 100644 _modules/hezar/utils/integration_utils.html create mode 100644 _modules/hezar/utils/logging.html create mode 100644 _modules/hezar/utils/registry_utils.html create mode 100644 _modules/index.html create mode 100644 _sources/contributing.md.txt create mode 100644 _sources/get_started/index.md.txt create mode 100644 _sources/get_started/installation.md.txt create mode 100644 _sources/get_started/overview.md.txt create mode 100644 _sources/get_started/quick_tour.md.txt create mode 100644 _sources/guide/advanced_training.md.txt create mode 100644 _sources/guide/hezar_architecture.md.txt create mode 100644 _sources/guide/index.md.txt create mode 100644 _sources/guide/models_advanced.md.txt create mode 100644 _sources/guide/trainer_in_depth.md.txt create mode 100644 _sources/index.md.txt create mode 100644 _sources/source/hezar.builders.rst.txt create mode 100644 _sources/source/hezar.configs.rst.txt create mode 100644 _sources/source/hezar.constants.rst.txt create mode 100644 _sources/source/hezar.data.data_collators.rst.txt create mode 100644 _sources/source/hezar.data.datasets.dataset.rst.txt create mode 100644 _sources/source/hezar.data.datasets.image_captioning_dataset.rst.txt create mode 100644 _sources/source/hezar.data.datasets.ocr_dataset.rst.txt create mode 100644 _sources/source/hezar.data.datasets.rst.txt create mode 100644 _sources/source/hezar.data.datasets.sequence_labeling_dataset.rst.txt create mode 100644 _sources/source/hezar.data.datasets.text_classification_dataset.rst.txt create mode 100644 _sources/source/hezar.data.datasets.text_summarization_dataset.rst.txt create mode 100644 _sources/source/hezar.data.rst.txt create mode 100644 _sources/source/hezar.embeddings.embedding.rst.txt create mode 100644 _sources/source/hezar.embeddings.fasttext.rst.txt create mode 100644 _sources/source/hezar.embeddings.rst.txt create mode 100644 _sources/source/hezar.embeddings.word2vec.rst.txt create mode 100644 _sources/source/hezar.metrics.accuracy.rst.txt create mode 100644 _sources/source/hezar.metrics.bleu.rst.txt create mode 100644 _sources/source/hezar.metrics.cer.rst.txt create mode 100644 _sources/source/hezar.metrics.f1.rst.txt create mode 100644 _sources/source/hezar.metrics.metric.rst.txt create mode 100644 _sources/source/hezar.metrics.precision.rst.txt create mode 100644 _sources/source/hezar.metrics.recall.rst.txt create mode 100644 _sources/source/hezar.metrics.rouge.rst.txt create mode 100644 _sources/source/hezar.metrics.rst.txt create mode 100644 _sources/source/hezar.metrics.seqeval.rst.txt create mode 100644 _sources/source/hezar.metrics.wer.rst.txt create mode 100644 _sources/source/hezar.models.backbone.bert.bert.rst.txt create mode 100644 _sources/source/hezar.models.backbone.bert.bert_config.rst.txt create mode 100644 _sources/source/hezar.models.backbone.bert.rst.txt create mode 100644 _sources/source/hezar.models.backbone.distilbert.distilbert.rst.txt create mode 100644 _sources/source/hezar.models.backbone.distilbert.distilbert_config.rst.txt create mode 100644 _sources/source/hezar.models.backbone.distilbert.rst.txt create mode 100644 _sources/source/hezar.models.backbone.roberta.roberta.rst.txt create mode 100644 _sources/source/hezar.models.backbone.roberta.roberta_config.rst.txt create mode 100644 _sources/source/hezar.models.backbone.roberta.rst.txt create mode 100644 _sources/source/hezar.models.backbone.rst.txt create mode 100644 _sources/source/hezar.models.backbone.vit.rst.txt create mode 100644 _sources/source/hezar.models.backbone.vit.vit.rst.txt create mode 100644 _sources/source/hezar.models.backbone.vit.vit_config.rst.txt create mode 100644 _sources/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text.rst.txt create mode 100644 _sources/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text_config.rst.txt create mode 100644 _sources/source/hezar.models.image2text.beit_roberta.rst.txt create mode 100644 _sources/source/hezar.models.image2text.crnn.crnn_decode_utils.rst.txt create mode 100644 _sources/source/hezar.models.image2text.crnn.crnn_image2text.rst.txt create mode 100644 _sources/source/hezar.models.image2text.crnn.crnn_image2text_config.rst.txt create mode 100644 _sources/source/hezar.models.image2text.crnn.rst.txt create mode 100644 _sources/source/hezar.models.image2text.rst.txt create mode 100644 _sources/source/hezar.models.image2text.trocr.rst.txt create mode 100644 _sources/source/hezar.models.image2text.trocr.trocr_image2text.rst.txt create mode 100644 _sources/source/hezar.models.image2text.trocr.trocr_image2text_config.rst.txt create mode 100644 _sources/source/hezar.models.image2text.vit_gpt2.rst.txt create mode 100644 _sources/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text.rst.txt create mode 100644 _sources/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config.rst.txt create mode 100644 _sources/source/hezar.models.image2text.vit_roberta.rst.txt create mode 100644 _sources/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text.rst.txt create mode 100644 _sources/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text_config.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.bert.bert_mask_filling.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.bert.bert_mask_filling_config.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.bert.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling_config.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.distilbert.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.roberta.roberta_mask_filling.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.roberta.roberta_mask_filling_config.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.roberta.rst.txt create mode 100644 _sources/source/hezar.models.mask_filling.rst.txt create mode 100644 _sources/source/hezar.models.model.rst.txt create mode 100644 _sources/source/hezar.models.model_outputs.rst.txt create mode 100644 _sources/source/hezar.models.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling_config.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.bert.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.distilbert.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.roberta.rst.txt create mode 100644 _sources/source/hezar.models.sequence_labeling.rst.txt create mode 100644 _sources/source/hezar.models.speech_recognition.rst.txt create mode 100644 _sources/source/hezar.models.speech_recognition.whisper.rst.txt create mode 100644 _sources/source/hezar.models.speech_recognition.whisper.whisper_feature_extractor.rst.txt create mode 100644 _sources/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition.rst.txt create mode 100644 _sources/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition_config.rst.txt create mode 100644 _sources/source/hezar.models.speech_recognition.whisper.whisper_tokenizer.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.bert.bert_text_classification.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.bert.bert_text_classification_config.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.bert.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.distilbert.distilbert_text_classification.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.distilbert.distilbert_text_classification_config.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.distilbert.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.roberta.roberta_text_classification.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.roberta.roberta_text_classification_config.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.roberta.rst.txt create mode 100644 _sources/source/hezar.models.text_classification.rst.txt create mode 100644 _sources/source/hezar.models.text_embedding.rst.txt create mode 100644 _sources/source/hezar.models.text_generation.gpt2.gpt2_text_generation.rst.txt create mode 100644 _sources/source/hezar.models.text_generation.gpt2.gpt2_text_generation_config.rst.txt create mode 100644 _sources/source/hezar.models.text_generation.gpt2.rst.txt create mode 100644 _sources/source/hezar.models.text_generation.rst.txt create mode 100644 _sources/source/hezar.models.text_generation.t5.rst.txt create mode 100644 _sources/source/hezar.models.text_generation.t5.t5_text_generation.rst.txt create mode 100644 _sources/source/hezar.models.text_generation.t5.t5_text_generation_config.rst.txt create mode 100644 _sources/source/hezar.preprocessors.audio_feature_extractor.rst.txt create mode 100644 _sources/source/hezar.preprocessors.image_processor.rst.txt create mode 100644 _sources/source/hezar.preprocessors.preprocessor.rst.txt create mode 100644 _sources/source/hezar.preprocessors.rst.txt create mode 100644 _sources/source/hezar.preprocessors.text_normalizer.rst.txt create mode 100644 _sources/source/hezar.preprocessors.tokenizers.bpe.rst.txt create mode 100644 _sources/source/hezar.preprocessors.tokenizers.rst.txt create mode 100644 _sources/source/hezar.preprocessors.tokenizers.sentencepiece_bpe.rst.txt create mode 100644 _sources/source/hezar.preprocessors.tokenizers.sentencepiece_unigram.rst.txt create mode 100644 _sources/source/hezar.preprocessors.tokenizers.tokenizer.rst.txt create mode 100644 _sources/source/hezar.preprocessors.tokenizers.wordpiece.rst.txt create mode 100644 _sources/source/hezar.registry.rst.txt create mode 100644 _sources/source/hezar.rst.txt create mode 100644 _sources/source/hezar.trainer.metrics_handlers.rst.txt create mode 100644 _sources/source/hezar.trainer.rst.txt create mode 100644 _sources/source/hezar.trainer.trainer.rst.txt create mode 100644 _sources/source/hezar.trainer.trainer_utils.rst.txt create mode 100644 _sources/source/hezar.utils.audio_utils.rst.txt create mode 100644 _sources/source/hezar.utils.common_utils.rst.txt create mode 100644 _sources/source/hezar.utils.data_utils.rst.txt create mode 100644 _sources/source/hezar.utils.file_utils.rst.txt create mode 100644 _sources/source/hezar.utils.hub_utils.rst.txt create mode 100644 _sources/source/hezar.utils.image_utils.rst.txt create mode 100644 _sources/source/hezar.utils.integration_utils.rst.txt create mode 100644 _sources/source/hezar.utils.logging.rst.txt create mode 100644 _sources/source/hezar.utils.registry_utils.rst.txt create mode 100644 _sources/source/hezar.utils.rst.txt create mode 100644 _sources/source/index.md.txt create mode 100644 _sources/source/modules.rst.txt create mode 100644 _sources/tutorial/datasets.md.txt create mode 100644 _sources/tutorial/embeddings.md.txt create mode 100644 _sources/tutorial/index.md.txt create mode 100644 _sources/tutorial/models.md.txt create mode 100644 _sources/tutorial/preprocessors.md.txt create mode 100644 _sources/tutorial/training.md.txt create mode 100644 _static/basic.css create mode 100644 _static/check-solid.svg create mode 100644 _static/clipboard.min.js create mode 100644 _static/copy-button.svg create mode 100644 _static/copybutton.css create mode 100644 _static/copybutton.js create mode 100644 _static/copybutton_funcs.js create mode 100644 _static/debug.css create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/hezar_logo.svg create mode 100644 _static/language_data.js create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/scripts/furo-extensions.js create mode 100644 _static/scripts/furo.js create mode 100644 _static/scripts/furo.js.LICENSE.txt create mode 100644 _static/scripts/furo.js.map create mode 100644 _static/searchtools.js create mode 100644 _static/skeleton.css create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/styles/furo-extensions.css create mode 100644 _static/styles/furo-extensions.css.map create mode 100644 _static/styles/furo.css create mode 100644 _static/styles/furo.css.map create mode 100644 contributing.html create mode 100644 genindex.html create mode 100644 get_started/index.html create mode 100644 get_started/installation.html create mode 100644 get_started/overview.html create mode 100644 get_started/quick_tour.html create mode 100644 guide/advanced_training.html create mode 100644 guide/hezar_architecture.html create mode 100644 guide/index.html create mode 100644 guide/models_advanced.html create mode 100644 guide/trainer_in_depth.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js create mode 100644 source/hezar.builders.html create mode 100644 source/hezar.configs.html create mode 100644 source/hezar.constants.html create mode 100644 source/hezar.data.data_collators.html create mode 100644 source/hezar.data.datasets.dataset.html create mode 100644 source/hezar.data.datasets.html create mode 100644 source/hezar.data.datasets.image_captioning_dataset.html create mode 100644 source/hezar.data.datasets.ocr_dataset.html create mode 100644 source/hezar.data.datasets.sequence_labeling_dataset.html create mode 100644 source/hezar.data.datasets.text_classification_dataset.html create mode 100644 source/hezar.data.datasets.text_summarization_dataset.html create mode 100644 source/hezar.data.html create mode 100644 source/hezar.embeddings.embedding.html create mode 100644 source/hezar.embeddings.fasttext.html create mode 100644 source/hezar.embeddings.html create mode 100644 source/hezar.embeddings.word2vec.html create mode 100644 source/hezar.html create mode 100644 source/hezar.metrics.accuracy.html create mode 100644 source/hezar.metrics.bleu.html create mode 100644 source/hezar.metrics.cer.html create mode 100644 source/hezar.metrics.f1.html create mode 100644 source/hezar.metrics.html create mode 100644 source/hezar.metrics.metric.html create mode 100644 source/hezar.metrics.precision.html create mode 100644 source/hezar.metrics.recall.html create mode 100644 source/hezar.metrics.rouge.html create mode 100644 source/hezar.metrics.seqeval.html create mode 100644 source/hezar.metrics.wer.html create mode 100644 source/hezar.models.backbone.bert.bert.html create mode 100644 source/hezar.models.backbone.bert.bert_config.html create mode 100644 source/hezar.models.backbone.bert.html create mode 100644 source/hezar.models.backbone.distilbert.distilbert.html create mode 100644 source/hezar.models.backbone.distilbert.distilbert_config.html create mode 100644 source/hezar.models.backbone.distilbert.html create mode 100644 source/hezar.models.backbone.html create mode 100644 source/hezar.models.backbone.roberta.html create mode 100644 source/hezar.models.backbone.roberta.roberta.html create mode 100644 source/hezar.models.backbone.roberta.roberta_config.html create mode 100644 source/hezar.models.backbone.vit.html create mode 100644 source/hezar.models.backbone.vit.vit.html create mode 100644 source/hezar.models.backbone.vit.vit_config.html create mode 100644 source/hezar.models.html create mode 100644 source/hezar.models.image2text.beit_roberta.beit_roberta_image2text.html create mode 100644 source/hezar.models.image2text.beit_roberta.beit_roberta_image2text_config.html create mode 100644 source/hezar.models.image2text.beit_roberta.html create mode 100644 source/hezar.models.image2text.crnn.crnn_decode_utils.html create mode 100644 source/hezar.models.image2text.crnn.crnn_image2text.html create mode 100644 source/hezar.models.image2text.crnn.crnn_image2text_config.html create mode 100644 source/hezar.models.image2text.crnn.html create mode 100644 source/hezar.models.image2text.html create mode 100644 source/hezar.models.image2text.trocr.html create mode 100644 source/hezar.models.image2text.trocr.trocr_image2text.html create mode 100644 source/hezar.models.image2text.trocr.trocr_image2text_config.html create mode 100644 source/hezar.models.image2text.vit_gpt2.html create mode 100644 source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text.html create mode 100644 source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config.html create mode 100644 source/hezar.models.image2text.vit_roberta.html create mode 100644 source/hezar.models.image2text.vit_roberta.vit_roberta_image2text.html create mode 100644 source/hezar.models.image2text.vit_roberta.vit_roberta_image2text_config.html create mode 100644 source/hezar.models.mask_filling.bert.bert_mask_filling.html create mode 100644 source/hezar.models.mask_filling.bert.bert_mask_filling_config.html create mode 100644 source/hezar.models.mask_filling.bert.html create mode 100644 source/hezar.models.mask_filling.distilbert.distilbert_mask_filling.html create mode 100644 source/hezar.models.mask_filling.distilbert.distilbert_mask_filling_config.html create mode 100644 source/hezar.models.mask_filling.distilbert.html create mode 100644 source/hezar.models.mask_filling.html create mode 100644 source/hezar.models.mask_filling.roberta.html create mode 100644 source/hezar.models.mask_filling.roberta.roberta_mask_filling.html create mode 100644 source/hezar.models.mask_filling.roberta.roberta_mask_filling_config.html create mode 100644 source/hezar.models.model.html create mode 100644 source/hezar.models.model_outputs.html create mode 100644 source/hezar.models.sequence_labeling.bert.bert_sequence_labeling.html create mode 100644 source/hezar.models.sequence_labeling.bert.bert_sequence_labeling_config.html create mode 100644 source/hezar.models.sequence_labeling.bert.html create mode 100644 source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling.html create mode 100644 source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config.html create mode 100644 source/hezar.models.sequence_labeling.distilbert.html create mode 100644 source/hezar.models.sequence_labeling.html create mode 100644 source/hezar.models.sequence_labeling.roberta.html create mode 100644 source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling.html create mode 100644 source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config.html create mode 100644 source/hezar.models.speech_recognition.html create mode 100644 source/hezar.models.speech_recognition.whisper.html create mode 100644 source/hezar.models.speech_recognition.whisper.whisper_feature_extractor.html create mode 100644 source/hezar.models.speech_recognition.whisper.whisper_speech_recognition.html create mode 100644 source/hezar.models.speech_recognition.whisper.whisper_speech_recognition_config.html create mode 100644 source/hezar.models.speech_recognition.whisper.whisper_tokenizer.html create mode 100644 source/hezar.models.text_classification.bert.bert_text_classification.html create mode 100644 source/hezar.models.text_classification.bert.bert_text_classification_config.html create mode 100644 source/hezar.models.text_classification.bert.html create mode 100644 source/hezar.models.text_classification.distilbert.distilbert_text_classification.html create mode 100644 source/hezar.models.text_classification.distilbert.distilbert_text_classification_config.html create mode 100644 source/hezar.models.text_classification.distilbert.html create mode 100644 source/hezar.models.text_classification.html create mode 100644 source/hezar.models.text_classification.roberta.html create mode 100644 source/hezar.models.text_classification.roberta.roberta_text_classification.html create mode 100644 source/hezar.models.text_classification.roberta.roberta_text_classification_config.html create mode 100644 source/hezar.models.text_embedding.html create mode 100644 source/hezar.models.text_generation.gpt2.gpt2_text_generation.html create mode 100644 source/hezar.models.text_generation.gpt2.gpt2_text_generation_config.html create mode 100644 source/hezar.models.text_generation.gpt2.html create mode 100644 source/hezar.models.text_generation.html create mode 100644 source/hezar.models.text_generation.t5.html create mode 100644 source/hezar.models.text_generation.t5.t5_text_generation.html create mode 100644 source/hezar.models.text_generation.t5.t5_text_generation_config.html create mode 100644 source/hezar.preprocessors.audio_feature_extractor.html create mode 100644 source/hezar.preprocessors.html create mode 100644 source/hezar.preprocessors.image_processor.html create mode 100644 source/hezar.preprocessors.preprocessor.html create mode 100644 source/hezar.preprocessors.text_normalizer.html create mode 100644 source/hezar.preprocessors.tokenizers.bpe.html create mode 100644 source/hezar.preprocessors.tokenizers.html create mode 100644 source/hezar.preprocessors.tokenizers.sentencepiece_bpe.html create mode 100644 source/hezar.preprocessors.tokenizers.sentencepiece_unigram.html create mode 100644 source/hezar.preprocessors.tokenizers.tokenizer.html create mode 100644 source/hezar.preprocessors.tokenizers.wordpiece.html create mode 100644 source/hezar.registry.html create mode 100644 source/hezar.trainer.html create mode 100644 source/hezar.trainer.metrics_handlers.html create mode 100644 source/hezar.trainer.trainer.html create mode 100644 source/hezar.trainer.trainer_utils.html create mode 100644 source/hezar.utils.audio_utils.html create mode 100644 source/hezar.utils.common_utils.html create mode 100644 source/hezar.utils.data_utils.html create mode 100644 source/hezar.utils.file_utils.html create mode 100644 source/hezar.utils.html create mode 100644 source/hezar.utils.hub_utils.html create mode 100644 source/hezar.utils.image_utils.html create mode 100644 source/hezar.utils.integration_utils.html create mode 100644 source/hezar.utils.logging.html create mode 100644 source/hezar.utils.registry_utils.html create mode 100644 source/index.html create mode 100644 source/modules.html create mode 100644 tutorial/datasets.html create mode 100644 tutorial/embeddings.html create mode 100644 tutorial/index.html create mode 100644 tutorial/models.html create mode 100644 tutorial/preprocessors.html create mode 100644 tutorial/training.html diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..19a85665 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 46dac3e782f238b726e25024d3fa6112 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/contributing.doctree b/.doctrees/contributing.doctree new file mode 100644 index 0000000000000000000000000000000000000000..15526f400872092bb12bb0c50f195363a9715b45 GIT binary patch literal 36955 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 literal 0 HcmV?d00001 diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..6519348ed8f7cbc2b748557d3337ca9a4d524da2 GIT binary patch literal 9936697 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

e~8E zx+8UL{TAIVqRVg7h199_CAwQqmoL+WG@|u8bVnM``U>4$N0;BF3+XHC_vmg3U4EY~ zqksITbc^*hy4yvUuhWIJhV_SZM{2_Q2HowZ%OBC@47&U=T^7^jo4DXZ zeB-0Ejm&!aUA^2KCSUFxS_0EY9Qqu*L@*-Gc)?eX_*(z0c%mtGA)qw>NaUa(4ud|l zGB^O*f6ZEr@^6d53U`O2X87kJ`^9MIlFp$s5NDz`PwdpzIkYrUKbaRO5N{SX{K0GE zLhO=xFd#OP`(kw?Da)V<~HY)G2Z8DAu!Et=DX^1QHRscV=H?-KE zXDw~=K^qT39n-05-Wk~H&08aEpQ_Ef;$ZVY+B*gt?XnSoXfYf$ic_V4=abk`0l7wS zRtk3YL5x;~&i2D+e~){s8#vXCcGBV<*F2mOBM$n-YbP&Ik;g{2IB0e)<&5l#aTtdZ z50xWjFZRolfdaDt2T3&ZrtS_g0GI>?+Jc85Q8@+DTC+|EItJTI8{hQSqJY>8=mc#R zMM$G9EU=@F`gViA?Iw;D8R9*UkhRY!;haC-s21Bgd0W`(#7DvSmY5<4#ojU%bbnLy z#4@qvo7j=aSYrI+NpFpRXcwr5P!1<-!g8M5awUci*iW`H2jtc5YzLCVtw?wg1o*PZ#skrPpoY zG%}~!xo>~_EPlG2(>}Op8$Ye!r$c`!p2(nT=l=JpvpMZDPWza14nL9U)Xsfn-MRck z##K9a{m!TJ6B$_T+`$7o_-PxL`~Amu@)Mau?c9x(OZbV5t#)qlif8Z>8C>n$t3M>3 zuHbTgwOyR{On&;G+Xwh*J3qbe_2Q|YpT7Kfp3}$(Yv;cCNP(Zo5Nqc?^X%RHL?&1} zck=!{{Ir3~wKwhMCsOn6+{d1O6+e;r)XshGCE|%pvUcw8eoj1*(bmp={@8V#^9F|U z4;Nj}PtV||AKfCJuI8uQvKu&U9Y1*=7f(;)rwxB5p2(PM=g$7q8#yN#bnVqw zUU25^{B%7(<@bxH^Z2Rlh$k}q+POXV-@!S__-p5`eDQPmiHyB=?tSkTPh{}5bGers z;WRS(+PQt7znh;{aoYF3Bc90kYv;Z=bT6lo0ocx!-+v!JkrCL=efFE;i44JZ?#bVH zKBt|mrwR4y35l>_awsY^gMLg}`oO_-xp2%Qq=MImECo&7$x!1l_Jdxpu z(f=CpM8;z~SAU;)A``KlyZ3YAiHyj0?l-?Gp7!z6(Qk<-G8};=uf#1QtTaT=Mb;E8XG zCo)&tIpb>&aT=MY!2G|9Co)386I&kUG%`-xxr;6rPh`HfbMM{s2&a(=+s?IyALS=9 zS=%|iBc8}?MQ-Mx_@(?r1})`0$xmd|0x#FS zil4}wZRd9G@c4-g*>MfZRfWC;_LW{Oxt$ug@5#Vej<~%om+nX8~KTh-FB||+ds!oWbk4% ze($aPM5ZZtY4qp$iA>;jZpB~y0zZ)%3|a8-+xdx1;dbuV?|KJ6kvR;F@MiHuCUHCW z!9(xlG%}0Zxyy#$#ZP1!w{u%RC!WYWhV=e}_i!4S$nD%q-S_en8OQD1+O~Ki1G%01 z%h!u1GLk`~&xcE;JEk}doo(x2gz4MOnm%B=nVhXM?qj2Z%ePnO{2cLu1y zyLMJ^u@ibtpqI=nYTtdcf}@^BFUUt$xI#lu&la}thb%-tR3KdRgoIwHN3ECLAToH( z9@QZxYRP?nxYAQn~bx&o2oi3C?X;>5OYyMG1wy(i|X9@kw&Lwg`pSj9CHo3 zUf7qvD!=E-!imc-EmY0Hf^di7Wnn^n8!*fK$O>}7^wP@7PR2!zzf;&?C}$=Ic!3x@ zFvh-fW((m38PtNkH_Jvr)IwZZh={XsUi|DO<78*niXQlD^Q7*3#FP(YfOMfoLZr(e z0cv$`jAS#jMk@>dg?QW)_29HYK7E}KGsx>bB2y3^1>4-;e3K=}fmu~ZB0_HL&rq`9 z*+4_mvK2$kZv3i-Gp#wCmT8KjJ+%${pETjt^BJ8t=W-?sOC_o_l@LTyI^Fr%yq`un zNUN=-3<7vyI$pr}lh< zB9~4N+PT(v?yP3EQ#){ZZENB+rqg5gCt}P}d?Ah5?8q5@fl~i+ZDY zk7YK#BA5wo*#XoO)c7Y4^wh;f0jZ~|$j{F0rns1T!-aFR&N2tQp2@00i_gm$D&h14 zd?r~ihKi+z$&8)}o?_rRc)ntf)_srdIDgyLOTItNL=Tmkk#q9G+c^@L*-W~#6EUi1 zpJM&zMr-#fT<|o5Ps-p6oBinH5@NqhWVud=kh|Cx`~&fLlxGiq4$Q@)nVE||POuOy zHykE2I=esuAHLXsm|#CY^R~+^kO}y`nFFV-jC<2;ff@#Wf9B0bWEAhzOih1Y=FoY^ zYy$n<%t2!h?cNZQHt;6My;7I-`CBiowd@6zA_se;E3+T$kx{dd^;ag*z0OEgFE#6d z;))*<33eXmoh^FFcfDbZEW8o*sykA^C(v~VXAtWJ5=up*lw6CXt1XY z-b2B?kjKtA@6mGV@$^ps$7RD7*;`?~R^IeQ`l-ioJrzDZGwrhBvEG<*bEmdx*8}3X zp3?BNV?{a6jO>DO-s0=j8|%HE^7oVvPY-!wJlf3U)MLEt86)Da$sYLW`Jp*vmiY`v zA?|3?oL+KWFMWl*nR}kL)3N7iFI{1@Gt;TTa>?)9dc$(V8Td)1OE>TaB|d)rNpXAh z)*HT%ZIN-_O}3Xqr#I}K{e<6Nb~!Dpdn~JIr#xb~S7sog#Mc;No9jYCJQe7e6TTD^ zX|!+WkU7i}>_u6(Bz8VR!MzOs7h`XuEqFBR76cnyGH$TpXdyhIBywA<@;*hGI3W~T z_~&khBw$Q?S@$zR*GT6gw@LbQbDqq+If+At3i1FT|F@VtD=5kc4`tmV{=$1Nv0lMH zRWZ1U9~L1^-2RpWQx9QX~Xy7_T=n`g`Qpds)`VWbwhDZ3pwM zaC8abqNXy7ziuv?kuFglXqz%L zLir#>b(6T4_N2$*u}cLy>yA90xw<1FG=po4%7^#P@M)94wu!*!KjsJK!j%1C1 zi6k7?HlB5DX>302!Ou+^&ALg`(J@?e=JsZU-jO4IS-bk`EzA<-ya#)agV6Go7T)7o z*O|0qd=tn2O)+(t5Km>^6#c;#c3IVn)zYAj&GIKQb`!>8lqgo#tqMjan1h)jVsku} zb!CaJMNET48dKpFy>CL?=t^%$=7v&IBBYBb)%HA*H9lBYMigY~B#=q*lB}x^#g3u~ zm4}FB#EqzC-H3qyLs=9V0U1Ub32TQfe(p);;x*_=Dj#v3FU}f!5fV-|Z;MK>%sF`S zen+c*BRFkSNqqLqIX_MXdcyXB)Ff~iH zIh{ge?!E}979SfCt8I>r#5whrjPuc%G}h<1mvhCQ+3mBKIt-#RWt@*D%}Q?a7Z-F| zoZfT_e%-XRCpfd!{(GFZEGuE z7UE3KLA$O;7QEHPpZT-!#`zTL`NDLsxOM*U>19!Mn$(W4YaqMBcg(kQqn5G=g_)v* zs@V|hWsme!FBJ!!4EocmII4Tz~l0$=^t4 zy*ZwW(Sf#v+FnWUES90uq>PV2Rm8}*EJd@Jw@+4cAiblN&W-5KqHF16(MPNNjWTAB z$dd)m(&Rl6Cy@1cm_rjii!P-(VsV$>@#j%D^ar$A~f8rMRjEDd6GDV`Hd);&p7V|5m~hWA`a&Dvy!16 za=l`n{M1L6FPISLaqGv@23|-saeByz(GLz(qj@37pmA$ukB#Xp;$zaxG{S3QomX1B zKV?pwEWYMQL-BFbG3|O05%lmKG>a9Tf1{I&wDdWgZ)CTBznn+&Ptk6>7%zbMVkdBOF3GS?jF z#-1Pk+au*OKfKsObu(`LWlz^~=97;z(IVs4k0gTT*X5OYKtM$J3O`>|`g*-&^oiYy zTsm&F|)ijNbeXl?6Dd&0>8b&8VNp6}vgG66SuL?k8xT+{?AW|6LF&F%$jX zo6z`iYn4=FS@5v3upQCc82v^5idj+J3t?4qJ{O0^tuIOT>{X=SLcs6>RB~CEsA)=$ zSv>Gu(G&X@e*$&td=4A$v_c@rlsMzTh0uwV=oOAV93XF`w| z_#v~Z7c2H?y=s>#TublfZ{F>*8d_z$TGh)gf&(2Tq;=eSzmzuFh|%n1mb7E}CmP>3 zZhca=ICGJm+QlY1Z<^hY zer>kUwr0$H(vf76N!XPcW1(ymJ#PJGuY4;LAVuNVg(EoTpC`txtE6?laIn&=^`l-n zhYOW9~Asa}hwdU<6VYj3X4HzZ%Ha zSuf|Lzbi$@U75*J;c5}fcG)aj^h&HPu%R+;eN7T$0i7XP&x|kRY$WA4OGUXpIR_Qa z=&0~<>s)DzE+DcjI4pTDng_bM_K03LAJUsFCbM^uPkqSzkX~|IO}&U?-oQ z_#EOQI(Wt{O|oh)Lp(Bx0f;!w>FA3{)JqoY078jIqZgb)sZ}xUVmiT&W=1e!nu)sj zeu1%OHX6A%hR(RPwZ|U6UQJ|tg`zGq$+ye_r*(&3Hi}Jbc{N-&DbgkC>Yp1&U#|yw z@1tunIgudEMeOr$;2(~%Zf^#APh(pD@D!NUEI1Qx-1 zIlA4sXcdp{=tSCEAVOt9G3~guS5D6s2zGkq7tX>1k!EExo2gSodNqeO#T-mg<~R~@ zL5+}8F(~o#r@&NcVG+4UVrSg?HA#xhH$0ibI8Zd-!nI=;p3O9F{k0_7!fRX4z8+n; z3^I=alyl<}m;?2FI#hASp^D!>1vF@nbe6YZg~7OWrJSsc&czJUcSb0xbRoJy7S=3( z^(ngE=aXBV%*nSrpUYxfsu0kp(<6&u-1@8}NEUmBC0*QlZBVaNu-lBX;xKOgy{t9!RWqJDNA{p{FDtm0 ziN%KSZFITik)GHaVO<5@@scj_RAY1RMM4%+u_W;$NJu3EBVeT02#DHv{RLLuQH3uqe{zky5xSak4sa1L+ zi8I>QM-x^H+xhGA39VFwo7F((;K>HAt%$&loH&WUGRZQ zkw{gJUUzW_y52B#YysPLpRZ>#pgYm3yfQPpcrr=P-{IOedZrykaaO)h;CQnI+{(_&ZPU(Z0o8g~@zc8?y91#o?Gezgza+|YhekLO$#t4x^ zO0%&*vxt0%P`HAf73s8G<+F&)k0br24BP0HuX(|XhlMvEnuB4i%)c{=LF$!R`_Ga? zdj=cbsy;Akhz0Ph`%CAQL@?5$%OFN~^Q6t+N zS?tP0#PeYG@e+*~8@CG5-kcjUk6YiKTee!r@_QmPy0=3i3#JvHPK)Ivn#LFCLZ^<) z4eGOCrf3}qqQfcegLbJ|DU3EvS5}inR|FCKv5_2q+0_vs%F$hiF@~ESN~gK8-{;KM zJ)D8CbswzM3XWT0tY;!wCpMllL4OSVkXhA>6??Q!V~soUf()<{l|yB_R>PL%VPL`Y zGOIv-T*W`s_HpauQWs=5#wHxcfEErvkUqV%$6A(nZ8JQ}yYD93S+sW5IWl9q9= z$uVwyU3MvJ)TyIy+*&SslyyCE68*pF?IIT0`8*5Al}^-$1{ zTT5i0vhcq~wTZv>7E1l`mbb#Jm#eLcUg=mXmMvOjt-|Hyog*D@O;c~`rAo0>9W9MH zohLi})>1UgI-f2(=#rz$hk+66BXs#4x_pH$`zYaixEuGj6dPuFq^eh78GxJP zOQVk6YL@km@rbvgY?#$bQ?GZ9cD%Ke+cm3BUKBUpu`z;0#1Ecb8YQb(n1|sQWRWzH_qNdxrs8ryd#>ryir2S+>Z4G zRkxD5EjnYpm|iTG-8k$mt->ACIouj7d3_~URFCdccbAwIhx(S23$%2_ZAEUViuaMIyr&hY8xpC#t~OE z(sK|WY*2Rk!-K$q&%IX0sFVODQ zwPEm@TOHF%4SYvbHcPIqje({bsrjbvxVX`xEuhk_VLBSVe6#ejtHEKV8G5xrL~1!& ztu&%*rmN}4^}1HGn|j~zQnghYta81sp=)=-y=9gNYORLPzud9BcCVo$rAamKXzE%? ztDtz*Zs^Tj8XBROaGWaL+f5BrG+HR{xVuC{!^YWlM+2Gr%z98I8XsxfaMK>;_L?=c z{#gGFZQ|$c;^&?G)3V-; zU+cYe;Rc?;gcB`JAGPm8ULj6}(7X3WeF%ewSX*=4Qqxri-!83D)k_YB5{D5a7qmD6C=9xT+b za8Wq$?3)f2pM7)jz_SnEbkBjip`LaItR}^2|8!fX%8I{NdaN=}x&WNI#8T?}460$< zWF_=CP=_y;Rh8Vxyh$J=F;*W} zXb6N%Ul?t;6$T2VdB9n)8KdGTC0${k^H*jnaYKQ$CQkKpm6~SM$+buHhTUYN{>Ij@ zqxLYKsB~|)QmHBvW->Y?Q-|GK7w_JHQd5e&{iEB4SVyx#T`D(i2ezj+*cv7qwN=+o zG+-O+6>U&AO238^L_V_S|{0ji|O9l8q{ucoR+TLje~_p z^yV~#vPt=!oy0z6vgw5x?UvvkM>EhcQC+_8HZkvnVGm2A#vjdTPOEHaCFg3N7*clM znRPE!p>Vx|WtE=kGJfh3D||f8psF8Y#72#<&1od?Q6n0bo<-r-!;|!GCfsVR03dJ2 zlyY1!KvH6Fh%>i}L|{8axsx)eg5ng2!7M2*_f;Wp zrAYLM;hw-*LLjhhuxhYXt?F*EYC54`B-O*QlCl)BN?TK{h`=&USaeU@ua#l!H+jMe z7fiWnHe3^vR`!(yR+eDLsWK~A8_S3>6VshDBQ)jd&T*wCI8|nD^}7Uu86*My!5DO_ zg%^==JTY$1xy#iX4lz80V$+5dAY?DZWDK#B=2WmcuCzuKX0zybIEma6$LbSGO-U%4R;e1;4KWNRlNJ2^ zn$oKb@wYXOzfUVQb&0oLU6 zpqzs7Zzy=k5aZk882_45QEXlQ5C0Fv^b=@^#H9;oRk% zIHUYfsVO;kdENll0&XqAk|+u9zXmU132sA}8d@DrMA$w)^zc^RLH)q))rtxA4# zC{BY+6Ue#z9Q_RImRa!S2MU3^i!Gfj}_D zMW)Q)5A7*rWEb1UBn@R2Nk_eoKz>Xr$QbeaD?BX_s-q>bW&`)4TwtbEO|z+E8J6U)1J@A=B$Bw= zs9dxq-i6Di(Q+@icCdMU->vXT?{HW)`T}cMr`6iycJ;VkxtcTGg!N-U7^E)`AegbN z+Nj!N@CVUiz}4FQzE6Qyn@eV1di+gWIQm1c(*zlIve+iCl~_P$C4$F3TDYdQSg4CK zTv3ptSfwK87A1sWCtP8mfCaI_Km~S^$VMDBtwj@*rfs|ApXGZv(em2Ox?b%YLLovv zma>6KMpzkSfa)PtM%sw5%S}TrUc{ED&TEHl*W^hc8X7d7!Xyx8P1W8}YK~BlDfJLO zv%Gd27O-h0j*t%*pWX-f=qKw>xZHSh8Lfg>tF;>G9~t;T&9C`gI%d`@`U$L`9MdRr z$bao1Y(RD%okTD66D87rzRuebR7|+wlE=^lif>?8+)rIQ2G%I@a-vQZFfv7hsOf|= zM4*~OV@k$C*d$WU;5>m-s-=(O8K?tIJ+2*_QajG!fKc_ver43EmX?T;Sc1S6)eYk< zrSYQLbK;dEdJatjdM2XBTQ1nBV~lw#Pt>YcJB#12lE5~ZM3&3|zt2L0BQBU};YXZmM3O zGD4NWeR=*(lMCG$AT#clK7R^%t@7`bxfRxaI3p4WZ}pUQC)O1&jIcTT4pq+e`TML1 zG|mjLn(CWYYm2l+^-XULbVE$B&7l4`RhJS>m2~2jLZ8=WN}qzyNz>H8zB~%ofu~8Y zr%y|D&j5SfQ18)swGig0lh=1=h|HjsyabY~(x+#oYD}LZx>eXSDr1MQ73ThQM$9dx z$|ngN58P>T>E0O`T~Ll)BzUuUAD(U$xsxiqh}Do9BL?JDG{z1uiy6a1mJdDpJz3DA@Vo zJY#1gn*hpmWCl3tMt`h|&UzG_q>ScZ{KvgDGx7x`1X$cB5r^)b4T(X%AmO^DJJ=T- z?4I#0+GU z^a7?Ams7tIl2>UfY8cpnc&GO& zHKEfDtS?0LO0de_KmGOh`wrF}ETF)-4@Zq%*R}2V;LSEN*}WDxBZSgD8n5SDkG)x~>06JzW%hL`6uC{oQ`Zy; z*Z+6NDRQ$?Q?U5hO}m9}L>vRIJ#rG`6AxT(FoofIfSgU$_6bZC13Jd4lLQYG5+JzN~=!yq+`^3co0C#OT;1 zEQKjjcPeJS*=vHNS&;5 z$*yS@TB=vZY4(4Vnz|hQ3FzO9L7%>*dix<=Z?I>{kyNIyBsEx{ATC*@ zSeh@x>cm$Y{Ph<;Umnw7onloN>QcLGH<>pyfuo)J)Y)pbpcT6PKXL2==(DHWwFgQKOeN?z#w7KKZWWuy1x0RQ<|t#CFuYB>5~EXhpcJ~SUY)4}A{_J zLuy*GV$3rSyw?=GtwLQQqiDn} zMg3ui%3}#0%+IVYm4{xbATY*5@dfM^elt~zJAAEZsV64^J&P5RFs9&!I2Wj$z=VR= z7|+-hTeeoSP1RSQ46(ijua&;O?G)&1EV?01+??b!wZFkzrMn;b3FxjIPqFU$Z*sRwH0)pE`{JK~gmv&@)dxrBSZG|dn|5m|dO!~w_ z5_7TxG4Ax=D%|;DT(Q?^N=Gg3gUDVc$d8CZ<^OF zA($_gVQy8bOvDwOWeGNaoFIe03n?N=nqw2>N$k(jcaY>0@1CZL$!LNiMD9s4RS+aL z6G<7JmoT>;Ndi{6br#U?B$y2Sj;Wwq&q0pVu@K*-ZW-fDMVEZ1V5*v|G8;^pNx%ye zQ>$+BcYLwyD!!By1#2%&b}k#NJ(dK#FtN7wp!hrvqmow9Rm8;;72Lfs*~M&d_qrtD zxy0Q}6uguxhp5Fo@^9@y+iwn_PpxC6XeXEV1X8)*x*hP+WKaL}rBd$L)!0Yk>SF=B z#OJ2VI6X+_>AifXFwvKi`09pQN=!)nKY+@)#J&|XM*^|FY}z!oO> z>Vo&a^g|aZHo?V-DhOSy)vzY`5CQJ_%9Vod^1^THNbj=E@jGSesiqV-BRq+0=N%Ulc_kT_TUYK~_6ABhBAORf< zNWtES;=(t%{P7{3UuL?d?o6!z3W4~U9we2DGcK(VvTt3FrgaHXwp^*HOHsB&0XFBN zY~ky@700fw={0*2rMFyUP?^bpsqo09No033*hAas)(GKP-R)Lt>XJtW6kw66GEsMz zOa*=V>JHw=r{1E{LA+9^@SJ3Y-B2M^b%&FHGZeWQ;%OsI=19@;$ELi&qKdV&3=i+JMt1wL6uo*bEeb_sR7F!wQQQ0c;USXCGB(a_iv)mS;AnUUC zDm8ViD43}tbKxH{(! z6Q5`J>I`>c10~*;UghRVb1GQ<>tyG%!RlWm0WVCfUL1-I?KXKrFLvueOzbdyxPYV3 z@R9B$%WM|~5@nL&DtV??M4{7vpO>g;OUdd*bOXQZHhHmRWSN}DQB8&jzPoO#)t+IK3W`izFv}N8$cEZ`;Ki7Qnj2t{`;Ki`*@hW>xwL9861S z7YEEvve4x5+wo6E|e^hGfQj-0h0&LDD*}~U$YmQxw9SYo{ z+Zvo~PPQtNOXV>oMPZq(8+tT5yFEfjR(_k6n!03}4GOSGRhcNiwNpW#k@9=@`&43J zc7|696)sCw*v-HVmEYbZ;0y(IhIrb1H|-SZ@5!2~_R_N`c)UH?-E8o9TN3cX#N!oF zQK8XNW2=shmPmX!V!I^@?(k#w{mI%Sn(nfQP?niK~+|2 z>QYc0Q-IC6pj!C44Uzk>&_)npJ2J^^t}o1_vQ{)f;g?q@5uXje+z}xnE4C+;n!4nd zwgN0tRVIqkRen(2~qNAN=;pgl0Q*^&ABL9_^M~~v8ziJ>^Nv1*NcPLHWa&4PNIS~CNrz- zl$Jr^qrQzjnrj`75SLZba;2s&`Dlp(EK*e_DrwPF&}XEQ-up?FCQwOurBGoK#!&~d`IOYtL zTCUwGS#QIxXh%EN+r`g2`A5`eyj2`vdLTkz?qqytwRoSrEsi+bW2$pV{Cx2T?u04Qb9o(il*m89s z|E&V+f(G6OWTE3ml`Lt5d6OW_nmAz|2e@#{IP5?;{lfuQ--QDUXbq;M-FZY6b83WyH7OR66eN5>NceWeEu{FeY;gKm3$2%IW)9W~o zvq>Q&#VS_cCfwVoHNi=X3H+apeZWT;$+zkcmFR%IhV7X6v@m{D-eegS9DSu%IJ!HI zqc15n%}P1CbdnQOAOZb1W6-C6M$EngSdhkd79~EhYp_|WmkstN^Tw=lXM$b4$qvlP zU7GHeV>|fI3W7p~zfoGBA*bFGr@~(;HFZga1oYWcVdEX85nb+un|e}RS_TD&KT>*@ zAr7A#$Kih}HFb%@1oYYCaF6_Ah=j0u@&sfszA&!RF;`-{;ZzjQqP#+Z4V$8xF+&R6 z8>hfprKT<^kbpjW3e@E}v~o{peCDGJAsy7B&7Y@5yiymJhj@7Fato=w+oY2k3& z$R5(1C67&*jn-h^v1D|F@($mCUa;NF%#d%CckH6FO;@BA!YAzLtar0EQMAK#i zR%l}++VgY;V_oum0{ZNEejjX-n%vl&xap`l}1KmWo))NvZczyLI;mOmEk za?mgAzb)w?RCYb0^k2oa72nBmDb=oWrg)_=;qxZ}ITI$7Q^(LVa9^C6)W-YFbcWX7 zMISd(A63k%JxEXG7A(4HS36K$oYE@_Z}K6@Gz zkF;>;7E^%ETdR>_%BR@l&~rMl0mP``m>tK-YyEePm~_6R>F~6cs1miWV1@B9g=YP@ zU6r3_IDzmJvajd0Db#(3g7XZidw-m|Z&PaOlDY}#v!`zL+4y7`lfCHiUgG#>G2f#J zHj$l%+?_|j2Q{3(haov?g8G9n=-|jjuPJ!TkU~e}6#9LorY_y+|?8B*f~accanQd5`INI;KMVRaN5=Z@B~e6Sp4bMA8EO0(nN#9dvQua=azpYDYN7 z2TC|pJ>jLecfgj>4{kA3cTvkV(77TFZMRd{C8=1komp`ZR(oM+Z6HKq9J zfBr@|<^44fIfQul2)}%3xT!+~(uuOtQz4g2Oi0H-(^W;+DasZe|2~q4_wR3%FqPBx z=67onGZDXqa9BW+77X%EmrU_n7_8cZg&IEUFWi3HfrE$dI+*ZW9Lc`D>dfK-1!L-X z7IxU;zL}O-N*I|zp}0$BV-lIM`CCc`h2!>2(yN)+>cWY#H*lg%n~?sv|1Vk-<8eP2 z=T#N+{>(S-Mp1LA^odJ~8M#ps?U{1yyy#vXW}Q7kYXH1WBaFM0Q9?!oR=}`zsY&J` z=g@~x1~vrZBQR^AaVK;ZWR^XuH-}nPZU1dBJ?ttkFcAOTNfDH#dLP*z6wN+%fzJcd zH{#Amb5yQ=)+B6}K6s`s5$&+T(~}kLiWBrWXT~`p4&BR137Akuk%UR~P(p0S^-!Y1 zGovz_*0EWR2G#d_Yq4qbUaNGXXbxjv8tCPV|TyZXrW9Y@P zrS6%?6qpBgt67HTd=H>_n_VodIhaX7#S~$~K?6BX2WL`y%Us(nRXc|kd3}B!y@JP< zv?*Rh#n+ZwO`LP<7A4Tb-fI619Yo(bZ2i+xWZOW?9@x&)$qzN5{$NnRVtH<G5>`<=c%U!-9k*0#;9-@h4U4z+5j^(E$5yk7r!}r! zMrdVugi^6pIUS_sZ5*;~w~jM+BPoX#dutq+tT3jECmBJc8s#-ln}fKKY=7prOUx9JwE`f(lTJHz^KVBpX)Zv(#c1fJZI+j9KG zW!|!ij$=XqXDwtJ9X*L0Sof^q%}SuXtW!@qk6S+k5aXNPxn>qJ8>sJ$&K37eM753Is zYr##90VGt>`i`}D85;f>ZxaMEA{2@h9n<^@ZB9nWGR{Ib%?cP#8n4#Bpr6)vh-cPR zTD3;e(OvpFmN31RUzlK@X1#>apu^ree#6{J^b21#9KBVsizjNt5bO05SdG_<(UMH& zvRgcE@-jWaDppK~&R_=Z>q91yBANqjbgcj4BL6`}{*#KVbW4NaM?OPwh4GIkz4gvm-Gvx3%weO7f8d0rRl7di zvCaS)9=HCNiY~&fcOE`>1A76Nf){}uZYF&bgF_%sT0cV8lOTd!HtRz`r5qsE|D*TT zzY?JD(&c;n{BO8EZvB|v9Uf$3iu7Em>C4U-VnAPahV8nLi<03Opyb!yv4B=;yK#B-j<#iSpXjpn3A7}&M_)!lizqzg7x$La00y-l?RYtQDen6%8(A%j zF54(ZWD8w>fhMDGrOSWN8xxST_mH&T|@(d7&D_<6egEImF+mo)^m zk1jf0261V5E2(ap8FQbw_LE%mNv`!I*Lad^JIOVj0>`>>n3#C_mEJ?_I^>InCNV+pwrJPW5jSY-XQ zyfuNo0%94hYsw~62aT2B4Y@r1d}2&R--vt|X%GsvLAzR1vTlyO405kjvaR%MW%wHv z_)uj{mjv9Iaab}1mIGuv4`#>#YdOiC+yNTfczg=H^776Rm`XT92hv#{u`KEdM7r{N zRq&d{$||#7uC^)=t@bcUl)eh77%82@NIad*(5Jw|&vd<=K0pi>#Km?N=Ld`BfH0vkwHMF0jTURU11Fl&5;;7zQ19Y44 zfY%qI8(t2E7i@6LJ1Eq7)TW**Ym^8RsBVh$ER=~I%M4$;7&ak6R7nXuuuZ|&aAIyZXbJD23 zkZNU(avt6B)cp*B4h=6RbVGXUB=QGFo0$D#d`uSHY(0&Drw}|*H8y{U9jNTB0xkz6 z`-D>4_JsC2VS59!a%iJm+8^I`vwzl;a+>>c-{TyyE{sNoYdMl+^KhM{<@%0z@`gXp)gRk%8>$`BZ7=iER z=l9U_d+EYPuJu0LqO0%6Pl_>X{UYW309|4>tMx%DNXDx5Axi!wy2OlA>zDCTTA&I5g z(uM!;oO|zk@7(+5&GJSP0jEW>-n;KE=bU@axo5jg0r^sl9IGRiXmQ2A;}46URlh!` ze(k}l;tOfY#m|RNPSmun#jlDah-$@uR`0*4etikQfYyIizrL(~eO3MXy887E_3NAX z1)}*D{aR7{HhvZV13#3;QT#6ciGEgM2>d!5zxEbasXtcp9|7kno{PU(XZU!JbcVHe zMP-vv8ssaXHM|MaP+G$q=wCh88lKy+)({HVPC(w+Cz*Xve z2Cg7j9B^wYIpqregioDLAY8__Vb_*ns+w{2D`B!)=_jYZQoNtev4`

#3h0ys@6jJA?JqbDM0C_PN02njZNK=N-cZ zi2N@YQKE;drmX}%|1p8GlC3`y4tl}iK`RqkH*pUn;}ad2ei%Q%5@KR=PJV3 ziT}VwhR`TYIDUQzv{Rn&hbVOBSb;O%W*Vh>VHUyeA+*6QGHS*(3h>Y&#JUrO8Z3p) zi_C^5b6{IwN}jUUm%K*J4}x;Ex9mlW0s_fPzAEt04lil_#oQ>816=>mWqMy zN{>siv66t6icy~5@y5F4B}itR$dwI+dlf#K=SsmQA~yrmrVpV=wKw5IE>PTP#Y%Nd z*OdU!y7l0VtU~rgSqmd|*R=%DC$R;ha^tIx+&Ek=%^vZ*>%2R$Vd2VXK;(Fa)0>bw z(kR?7$yZV-2OpD72o~Wm&aq&=IslYM^%F1P=5%Ff+prcG>j-3 z$x#oEo@JlBoC#f|Cp3&8gPGyk`PqUq71KnWGj)@MSP|#=m*R|j$zAH`uf{e}7*WkO zwuPYTm-d#bL#_5Io2p+TMvBpD@7#r5tl}10?ii4+oG%hnWWEd728MYrWT{i_BdJa!YngsMS0rYn!blQahAWR~?)&{zqzBzYY-VAJF zmhxM5zuan>J{yGki0dS>)T)`}vRT=%_~e=;(mOjoSVy%717Q)ND%GdhP|MYyyD__YOLmjBy5MPa_Mc2M`!EK-5ty7r$JL44Y-YLug z{6TOEpS@|b6{^QiqMYDA+u#JQ`#E;^MS=+l!tFYSH%URba+8*e*iLZJr~c%l;R!3{l))_kBVQUA1|gK2k6IM`f)e?SfC##=*Q>j$3NglLwk_b zrziNc6a2{uZhnHBM#A{GbLMBjI zz2;s>bB>%6T5R}OXec)UValAjnf}#t-}8OnUw*F$EeP{^UOX}IyLORlp zwO!{>NVKkrRdU_ysS49+&?SAzu{!KTAV${>IJ zJaWrM_S~Z{t0aGfajPLW4V5U$8{oS`$~%33w2UH{GY#0mbK}U<@aEus+fd6)Rmf-p zV+v<{^5D~zN)ni z`SK7*kin#3uJ9=@KzU7&gM-@y>NTui-35(*A$3FB>?>9Lsq6CLS~E16K<*BnMJw~^ z!{URB1Io|6@=eLWM1z_n_ahyXd+RTb_YPq+;r3Cs2umyS9$^Q6;8MJ&r<5Ufd=hX| z?fBK|)ZYG%U$}zzx(cI-3X8z-p}1l5W@2FvCeT?I=7`V;sqN$m3!6ncLc}W=L}d53 zUyO6>IIICv#N!auOR-B-bBE;FIGrsi%$&1pciqKuP$$ny)wH`V1Pp(Cv0$iO&mjyK z#7Lc;HFd;DSQORi{e;zf`*_%)6cuGf2eiqfjo^`Jco|fS1_g8==8HIYjf20?OkyKV zM*=7B5Nna@LMpmmYj4=Mijh*{#Ob|zob0M0UlVctHPjuV9K$K9EKKDZ>eJo}8dFmw zyYECUB>ouZ?Lm77*eM_*UExonrU(5A4E>IPTMsd$OK^v~<~PMiDKX^q-aUo}rYY{y zCS8Bwl{I2G>?1~gRL0@Pfnt}{rOr=lpwaAyVbVR(l`BFUWmh zH~}auF6KZ2r)OQ!Q}acrcRkJCi{I@fPMzMn$LV1*eQ0?U1fA9zxFvwY%jpOUeO{rL zj(!M0Emh{J*a1$Dh!>rvoNx%SAr7ybDLlX)P;+;WIzrsP}xq#S4v5p?{wu^0u4U3UdLd@yihFB+u!s3@HG5ag{p>^~M z{mo}vM@MgE5L&q9ATH2A`m9HW8bZX7vcS}-E-4+24s)U@Hddp0q(4kLh23%>z?n9O zc&+-92m2Qa2uoZRITv>=RoTFv9X*b0ahXgI9RE1Cw>Sg4mP|Itg!7h)Y4nAltwRa( zX>tbWUs%OcTUbTe*(XiXXl(2~O;K6t4!Q$L`$Ut`;uA&B18njr8d@lyTsRw<(I*$^ z2@+Ou#yz>vEN2+?JxrrQ9+}5f`hY$zl6ijNTzW~R`HFeWmD{5H2nrUV>c?Z6>h{wr znCdRI_m0G@2_;y0ZTtA|WIyQngfh*UkG%`*-WS#wb9|!PH`=PT%QsY$*yF%1U;0;P ztR&0>=KjvOe7kq~G5~)tT)x|_OyILO;fZ2)iUqw9o3~ZyO6M+Lf^ctKzHe`5eqH1O zs~IM_d`}X?i|M)eHoS;;`4%6+tKzF@$|e_>o`ku;^r}cqXnAvinGXei*gx!%A2#zt zREYwzAC)MCCpP**2-;5(IG7)Pl>XIoU+gU%`eKDvqf3Z<7zo-6HcApq2#<{%rAl)Pb$65})HoBtSUbo<0uwC?+e2f7fiTbvl{UYRJ7*_QkGdCN{Hj=7YA}Y1g!Zp?0LIb5 z!LPjKZ9n4}O!pz9XmD_cci2QqPb-ruS?jVB6;skSEO#6KKB(@mH16q_3pji?0S>AJ z4pr8pLTXY~zOw0*B@HLE6Z2SeWl#6_YU+*^&2wzBmMb=j=2<(e!nv}UBoOB=qGu+f zNP?tQV*!_|dIT3$P`B04S}pz-iW;>EJzFjAC>FuN&1VHQ#;}}c-Q$xde=b)#%3k~W zbhXl$nnqv&VqE;=D3S?xgvCiV;2Y*6t-ca~AL$X`os-77HbFXzZsxUY-&wY6aPT1F z5WL+~o3k*9t0Bmg>Gh+aIi>Z2`{rQSoUavNwZuDrs#1*_w+03W4avqbjok^bDV~d$ z5ufYA&Qvoo^H4$|WnTipFHBfOCx>Z`;E>~-XCqjGOLH8H56d=@9!&f}s*UDM>3L%D zogFXrfH}uQ~PW zr=B?V_N{hH6ca^chypW)|EoPOl=!yaBe$xlwb^Ym+| zIllY!dq1;q>PfUZ_4ujx(|6wK*PMRr)CauNkDU4q^zzuL4}E5#??^`ZgLa~#0sKN) zy04|bkCP2ho*os`>cf+{;b5Z<=a1GV`vx+qc5Mw4<*1v6YUcwX zpWc)(omBGavWRrygPvS?ynK>vB0cm(J~>nRak2Q6^2zCaAw};A^2r&em3%rh2m5|2 z5e1$w+K$LTyWvu8Vs?1j#*Ih&2B^}-K16a;P`9cukwIP5wt7N4#DLG_%Bq*Ws4R?1 z6VM!S%O4dppHda5GhC6KMAG5DQy+l*gV2lCnrWbS74Q&PH42%Q1ik=nXKxdIx3_V0( z9Nk$TOS7}u)bFlsvZd1Nch?UN-lL21sdE$ScY9z$_U^=1G`nX-^fK1$JJ}}ELr*k2XG(u37N1hHb9(BnG=xP?A`E|joPv5K37r26p(j$#nbNRW zd`c*u@LyFK& zN|m6`1Ci8cTzn&R=Ulxug14xhIjSFLXJ)qq=l)1fwyb*UOgqZ4?g!SF=xn^X3FERQ z&I{>C3`ZkLmD7)TT{#FN{R|saooG+*W z=&=1uV)~bSKemNn{EsFKn2Pb=5@FlS_~p{#8NX~3>7gf#-+d}5hyZ*T@c-iM zRNoPEP?_xGalL!_a#dJ>xks}7W+HRjy?^iC#HmeG%VnArTa*3#@XgzY>0-&IGi*7* zaDFs)%=E;DI|J%P1$9(7{0es05((IyO=N^EV1GuEa75gyL;fQWpdWx_h41CbQ}0FO z!l`$X5GH~98~EpwctJw;^dlr<1-Yf`N|5Nn_v|dA*!@r%?6xWT?`ncp`=*?iTzfbS z+r({nRO@!SF^-toDqXk@UmF5EXH0~rzQ>T#bw+Fj*y4Ucu&0XMJO_1paE*xw-3+s! z+P{`?;p|4WaB|_G33Ke_l#zjyE7ea?X zH`nh5Ed8$esB(vQ@SV^FzmhPyRJ!23Hj*S5;&nmUCelMsbU|lI|0EXQ6;*~oc24jA zn4T(s+wBtk-FgGzF|iyP=ZRf<9Y_}8CeW7h2sc$P&b$&y#cAN!KL9S+YnqjRGUW8 zGK6Vil69`7!MO~&va~$Wo`F&`C`D!TC08$*2DYz>sJ5tk;hKn|^qJrI%m+`s|1%%N z|9yylx^|0}t)r{GF3oD&)JX1YvP@eend+HFlDGjw{pA0EeMQ2=yU|LDe~msC#(Sca zB+mL|@ia!l6hDn$51lOj4Sp4GCG53UO*W%h&s3B9BQlE>ABQ=oS54q*x0D3+=WccT za~rPqJz~kp8p#{aS^@Ea{}#Mfqe_jWb#tMJ988!~Dn;a_HcI5`;}sFvCelMs6cJ}i zFBFSUsfakeKR-q935tj_jzjAop3!*Q9}7n+ig{3D|4}VX|im zLejQa1pOe_6a64*(y{8nTM2iq)q|f-!8~>Eq2*#KB1z)a0~@Qy?&At{DF0oi6Uragx1R*dkfF-=BJ_!&p!|&LE%cT1Fsz%yc2i( z9)zKxMNrKtF}Nff$Gf`5bSeQEJ{A!C`-HB$pvW*m^{5R&xrlg`Rkn%r&=Zx_nbKd1 z#ivwRo!JhlpKdX=IR161Lrb^VThqwwpJZ%qq9#P1`p`TAtRu zo}%>T_r|o|OhKJy4x6_p^t&-SgVS#fTiPK!-@nU@($~dl=&MZ?z1D=V(#yFk1_w#R zZ+@{q;q@OlT9_S13GbO!9;Xdhb7<0PA@eSc8$imx_$ERYW)p@?B?}*jNHSKL<>KOH zp==ZBp(nD?nbP%Q@hN4Y)BCk4dQXsr&Nwak;*;&lLgG`KkAY-&hPtUG3r&;Z8i<-` znuOw90e_%u0>zm|WgPl3?bC?Hr{Mgfoa~1{2TNqCd9VpXv$dnYk&^PJo1#*R0$@m< zg%Ze;mN(vb(@hbn_L(O?^S*?(n{SM?B{Po+O|^U7-oCuPar?&2kzP;#E}N2mgCwvm zEx*5)8l|&b8aiuJV!o;gfu)z2mqaDz?%VFYua&SoCfI8WVaZ2oC5^dnDJPw`LPS24 zFiDi z8>4NaBF+|^8#hIdq==(fP(9kB@cV0NQ962G8airI^!;QL0qN7ru&U|cHXZNlui4TW3a@-;7=+Neg z1_^!<$8C_pFS6!#eI2MIm+-NmkuUX#Ml_B?Psp2W9DhNK1RUF&{v|KL#jA+2_NeM0 z+;{U-vYF~HoBK@-6F7{5%#ocPTX=XtU5SKZYn8d+W=Or2``aBzlHa$*0$S|fvoS}B z0DdB1zw#N)O;w%m&yLII{+x{=xj?fE*9u6A1;`I1MC>io(S~%U<`9piavb_u8RttR zV;mKFKV&jN-O5o-QLwG(mzISlXsIh)QoXWWoYg3c*6Ocue;PTdC;SZ6IBVHE7eb?o zXkjt5U7jh~X9@&5T^}#i8Z#~X=2lRcRdqBq=L3xy+!dv3=sNx8O0%dvhCH>r;u}qY zf?Q{cL$+d|k8RRJl_{mp={=jxTCv7wFom1WQBC!G5>sk>D=qCRu%{(DSiD({=4;`SvxT1<#2!DzWIZdDr)~5vYe~tW{HgX zHbbQ6Pf+=3UF@F&=^=d(7lKr$JlzbR;~`icAv^@NWy~e?fyg8xUPK1gU=pVvFR9@5DY;hqMV8lgk@c}Q^D`(L|8RV?D zC3S8$dPS~;yX0Am;k&9)6JC>Q4WvckMsz=crpa2Mov13}H#O;mi^L~(Bf#>)-jYEW zG4u|b3>>gnqIuyU@5^B7y2dqu$B3LvM!$vZi9QcYPul`n%9KSKBFYR8Egds_qD^M_ zK-`JcCb-D?IKY58PeycTpJh_>)3NzB{%pLl=}ZLGhI5gea5{ljo!cxfGE-@CERK0E zHpXniV4d(sbtvB6_MzBJn<3~PiGR)BRuU+NyV^%$*{X-!&zXE)daXIQ6jYx^Ny4mgAZ@ES~&(AS{}y~K2Mhl<5gTQ8(6rM;91g<1^6Eq zK#@e;$(GdM4`tPRT7ut_Rfis1l~D8gHq=D4k7+|*+|%8a@?>Eu6LE+TGVB9sHSVm-sC{<>7;0c zuhUANQ!`Zls!%pE+dd|0YU578=yA7ZePFDA>s`@_{`XB)NY(RyVRbus#zponv~sh#4Zam0a6W``yP8yS&u}JCRKUN^aHf()*^0Q%a3*lYGn{GBIaBmx z{61)JOJpW|pE?=0RHAp@hm0}0=X0v!<&ib!S8w%pPy4vk6_S-z;KS@yt{v&mW=Hs+ zBe*i&KTemx2Wqi4>|NWkGkKc*{RC~ccmQ_@M%=t%VS)SPi-px{g7Wxc9t!RGqY2|R z(VqK@6Lgm$U4`D}4euXu2PuYECv|!Sc;trnVg-{B7rdVz!Nw*ZnU77^cJB*oSXrP`ZBC9P-Xt8co%5)D#CC?v@Lj^gb-E1M z4BB5TT?+D+t%jBQY&irDoe9y`I1C5J^HZ$E>&Kw8h$kN zt@G;B6a3i;{^SHVKfz5;G>X4~S!1HAbLM5-ITz#L&N+~WJ7@bPbzUSk+bI4sud(<= z_3KOcb>w96U)8TKt6yJLzrL=1eM9~FCVt($viL3fwW9cK{3`wjemn#M+JCb6UHlXM zth|hWosD06i>uThtND+B(G`Px>;D^~toTY9{}n0*?O)S=(XRY43PQ*$lY(RXjCn5< ziMxP8l{vMW{?+qa?02?vi#-MVjpXz~Mvc6KUZ$_Hzf(*y#(?^a+ba__oV91Le%!oV zDZ?05&%t`yfXg^=+A5Q0i?#wfhs40Cp%WS@bx!euJgucLTXoTe#j zp$Q*#1rWYdf(ii05lt6sOE<_0x>WCt0RDFru_1uL0 z*rJgT4j&{SGKYMU{?&8Q`P{ZeCkJPb<|4}pW#C?_?u(&5qd~} zvu%5D5LHW1O1LmyfP;vh!Y2t)ozG@er_<;(=W##2H}BWI$&!D(FkV6wuwN@ol|49+ z>VB0RnYlVg3nN|&DF7%3G=swTu(e~lm}mj{j=I47hWg@0|C7k*x_lRH>ESJ+ya>GX@)rREi#POyz7shwjIPSts2xHFa{@GrNY z2tSC?Em+cytIH7@iu$ z+ft$jv)+jks$^$Mg`>VVwuijJV?*B9?J6jp{<()e&h)Q?%4bUdj5^%MhBAJA!e-T1 zC(K6T^{Q){OL28&!5V*N780sZleZRdQ8cVd?pCUZMh^v=u1^@F3x3>3-7yiJYx85d z8pDsTXa;yWP5H5;CPk|@iMRgZ97b&iXS+*9dBr0yy;lu}l42t@=A4wH?EIt=i9e9oa_?fftz;~M<3&T(E@?;ssQ(OCWM z;SWB1GU#B5z#9r3#pR;NThh&Ho=@|@@fB)S+4m`y7tsxL_@+czGb4Ry$GKR|l+V0K zLq>ENTH}!J<7how!NuN$EL`V=40&V)(jR)%=%JdESnwPp(~{7`KFk1l_{s)=Nh86k zRDfN8!GNjr*;|F8Qv3z$b2y@xO89(iH?M1q)(`zo|E1bw0E6JnuLq$>J=Fov2`z9( zbOFg*d39?aPD#}qh5Afa@+zH64GahkQC(lGlK)8ocmy>}pTLZ)T)c*om~p2;sL1=1 zFm-UG^w=~dMT{uO)UvblNGW3zLxq;EA%+jCg=4vT;TTK|8D$hGf2j4fGeYLd-;Q0#|xRKC_wn588FN7N-} zsY|r9Rm8bF7_0m3akkgo9dz=y>V*%0FJL`P5&%{X|@kRjV z*2N;KOC!9I{S(g-BXt(V;AECLz2B6+_wYJJr}u4E@9m>*ow1;{Lf!@1>=cJS>zzR0 zn3$SW8&fgK%WMR`RE(4ofllu)N#A>jK&SWa5qPOEaks+a#Zik(94g})2z>sifI|=Q zx!%U-Lt>jx zHMY#Gci%L^kl2Dq7RMZ4My9_B%$Y+dVhBqz^{s4;nVi=s7hVP%aXB~Rd;N$$BIDsK zYJ|bM2}9!;Js%qwLfxy{ENsji3z3te)M*WW5sRGScBKvglMx}sRN+3i?=vS^hM5I?qJ~Vu=TuU z#@5D;`II2Gqz%!D6mkp$4kKtKdluFoM4mGIM@Uuy|M!pQ5JKzQRpFX75{o+2TbzU; zVAt5(t>vPQ-{aTe5kx>&1B;qRVc$8Ol08SFQwv8(EWc#=33tu;1PC@IX>Xy5L9W$t z{U<~cJbAjH5qh!3tL; zBb+uXZ%jwf77LKwN-2|SQ#lK8=ahQVg0f z^(n1lh@u+&QYMpmUihK%Oz)YG;#oECk9<0?gRAtgUWei(GxMW4Mck??Qy*0oX3dL& z-a*y~B9Ky8`J3TDC*963nc#pLcZ=>=N!)?_HY&H%r#tUcC4``?QMDy#kwJr*O4T=0 z=);2IR-xvvXATY38y)4ML8JXOzcd*Zu^AjZir~(vnr=zeh`3Z)|3EhQLTygU1JG@G zX4LdL?{;>yvr1XY%~MHMs`yVeziHxFQe$$`!@vCC8>%GCf6%OSY^k19p*-8D*CGQc zz^jpV=W2~yDJTW2zto`vqIa=V&yWyf;tUCaSUVsg#Sm3S#G_#7trFE_@b$u)Qm#DJ z$W8et7go=5xXsDp{ZxYYFn(xd;}hU@5suD|-|N(f4qvnmx(jc-FIT7|1Q>@xh-W?< zGJC?VxE1HudE7PEKui${Y>G1?uB48sB(dpyN(av{80l7y=BZ61+6J4qHiw;CsAWb? zKu~yCoQL$D8O?e)9hO)#$dkrXD5L*EJ;=({Au)b9NtWGy?<#s@qnesLY5 z4I=Vr;YtPxuf_t3U^+?dgs6QyVY*%D3Sk)ejtFJ3+e|Lg=n7XERPvG}GQ~vY=RMR3 zoQc}BZ)+S2&xAapu*Km`!%8x#sKsH(R*qUUNhuDJcxN+-XzNABvGc zNj7u(`au%-TtB>2A)DKzN7WMzyu*k~s**ROF9=Z)W;2|%$kw`ioVGYHum@^U2($YSnhjA_AjBxD0r`jRTUO17{XF+`rBdIJ*~ zg)wrhC}m7SpUxqfC5M{Um7^ZaaP$%1NRp|QDVDJw9`iKoJHA{XklgUk1*+t(jpv4~ zznEQWATPp_;*2lng}4+OD+wYtZ|W!^>(-VV%RUWVaL$Sq*LnBwwL0o3(cGQLRP6DP9=3 zMx!D!8M>NlwgArtupfP6Q8*JEvG;%gc6s;V(|z>mK~vEnJC3I=bgpRW zwtaWR^j@1Cg@K-Kiymz`Kz-Y=HSYs(75PvLckeY|^jd3WMV;tUa30?sLK(N=dh5yJS++JMc_8imGm z=nQ*|0R9Yne9GSB71_Ol3r2UacyWe3Y6f(MJxcbd6j^0c`YO%>OJv2`twwBlP~3Z< z64%YWYsRP270TI1`GR4 z=WN>OMfc)Zu(GdtWJ4F0o6t#@Yk4fN&)c{zUKip!Ep@bpfQXYR!ZVB)KGQ-fF#Uc@Ru>oO7nsiu?~{gnXrrgW&6e>26`GZZ6WH*6%nQXr}zo0UQGG~nDys1)U z9DWjGo*WHLy?Xm(D6)usgs{ozW|aO(7wzeSO(uD>FhTk|3P15cv=J+?D%0MC>lUZ4 zI=u)?$!2@96=f*+i({5lNe|A}obqu`0%oYPY*DC-yun;kBKDTodwUEbX-*hUpwOai z{k_P6uG|bU@5Of5mM~Zs+aa{}`u28^%QDv9iyT~a0F2nc7C8>jBFKkP45G0t)V2ug zlB_~4E++H8HAL)+D=}ZhjdeXtieAgTBj_!r=KwpYc%4IU4zIIKSHA#Wcbzgo)eO^_ zSLCQ7Wz-cvwNb;jaQb|Zy}EoY%P1X4N13q%7N@=)#uz@Y?xrC>v2p^amOD93E{jL- zxo2Z~$dYM*f5i2lB?A;4XQiP_T{lBxDQ7}Y#==E6d?Qi(knjW`U^N^Vwd^LUg<0aw zJNpjYyXOvX&%L+bagTTV9S3&rziZ#YyYAiV;SixB2nN)5eY^JF?j5+-yLT_WiGU7& z4rCs(j?!n)l}H-j1L#s4T`Af=nEG( z0Pkuj6|Cpiye$#kVuv>t-DFfKEV{u_$pI&TvB-89v*VbrY&s7qA{q&z*@+8VW0oMr zfB0B%;fE5s?n3H^+4&7y>dQqKsegSta83b@wNVsFh{#t0DnGu=P;rWTN#I$kj2&FN zHcE!pn#C)z=3idsHJ`)#B?YR_k8Cx$YVk%a`u)qiX#1+wBs`~5ik$7}C`CO;;ciF< zxWjt^PGocnM4cM)#|1Tn5Z^-&6)|SL7x8`7d|1>+w|RD=lVd!Ga>+Ph&U+J8KPaNh z;R(982vhCNM)=FcqKRWROZ=1=$*{z!rGlH-334uy!=$1-XVo9KR^5e|3Ddot-al&f z-hLK)MT&EQg-B`>vngGUYZgSU0@y-w)})Th*;#9dzR)$in2_^Hbla8C`i@w+#9$XN z4n_H#O}GCpMly7pTYQKKij}jF>rF+m&U(LYt+xwkh7{}c-aW-WM`)K(@JB=;1u1DF zL>@$8lJh{y3DhT~W$|I$8H3Aa*uWy*2wYrqT~7_pA?+QvY42(=lA*n9hl>}JmtFRd zketb1VNE_2AvwLnY*D&H9&s-yqmP@YM~!x;k`&$r8HC<1XMPe%dVZGoOSXxu&{Ul3VoIUc(wS0A%KQ_)$b)VsfuBnk=`_2X zs&q!ZVmUaz%CILv&IUZno5UkBf$IE+$wmoXm6#dQh3eGUkd<;4qdq;KYBC{fJz%L^R?wbS*in;2{eJ#5fcNT%SYYqRHxa0)N*=S0x$V>jV)=a&UIUMQpns zF;fFT4LI2T+amS;+}oc;GK?XpcY^VIpyk zpJ%m4hXVacYfQDz9rQc!CA`hT1)AI(S(OMr}y8o zdT-zCV0jUCaJHMG6J<(hPA$@cEskpPl>qs_h^b1DcL9`8GkKLwJ^v&|GSqW%%o4=} z|*&LO*p-GPZOK1gZ;hiPDNNs^juG&EyQM&-q4&%#Hn2niFhMW zuQU>}9uCp_d5-3x}g{VM=ekmx8q0UEL^&pVCMSxl&wF|I^XM#s;LUh1k zM~Qq2Q6h*(hz2_Inu9cjJp_Rv6-Tn0EykI+dJYsup&-! zflaO(M4|*%m$A(A%mGDJlIW+}5-7HW^u33Ob$ag}u@{GkrMNkyA2-M8(*m68rV^d*Yk|pM6%gnlCV#=k z=oa(&_!& z^u33ebb7Zj*&{2BqiZ>43EN8ZjKRU@`*pgA(A#w^S13g<$!y_1&k6|1J?ps7uWUMs zq^^W^g3Puh4BmxhCv-qRZj+f@rZzEJ4rtjX(nC)i(9V=vV)exbD{wyJ&Qss3Aee?~ z>1ji+%7x4YsOExDig8!xg=4dX7{o@sfRdidRGh0@=DEchMBw?J-r_m5;Jqz^C3f~Y zK(#D*3!mp|t?axuRS6hAnanJVnDu`CBU?i4`OyHr%J^059~ek#G+Xr%xlCp35uene ztyX$lHB%zERjWYj;)Z0>lDqK-W66r(l)dGC(AyGOc;4Qog{OaTa5n}05|4(Fm`dxZ z+k5vL%gX0f_gvG7^6=^v%$*$9daBBK zEvIrKOo?-y4w1{Ck`p>S>X+djsAj#Fp!gs~r{}5YDg1-5{UdEZVEj5{@_E73xBx}x zlat{kk0sE76Ft;kjKfbPblC-Ig$A1^BZR?XLr&g!Ap02b44r16?*Im|u|9HOo>q_n zt*yLmB3Eq6q;5OWQk?)#2Xf91um$d4hXOZiR1_n5g~$xtP8mwI#+HC@iE8x4H#*#h z>SUt<(f1vpG-~w`5;8I>c%s7|f{&<&jH-SX^jhl=UbCE)jPv_;l~J+!KJ3RO607fT zQ>^~Vt`cr$Z%j>-)(bv||1Vcm;5oD0AayLSqpwtPl5u|`hg*vjTP{_|d5uKf#uTC| zJ!svkoR8{JWuw6fGw0JqM`+0P$|*+Eua*&yF$t;8I{Kupe4=lnr?`yK@kXJ9azV9G zyY}?UlP1nAr{&bSRacXjTXFqE#T_DI6@J#0s@n>gfw|5q}A%O(C;1J z*r!7->4;q`)%|1y1i4u#hiNHh>f>ZG~htvxK6kWO0L;mLUZu7TJ=AMw6;OGm^smL-c z9=aK^_@Qmlm=w(+3HCcgpTm4;9%T6+CXSt6j?N$pca(B+q38Aud678!od}>G^1_(= zo!by>zi}Xg%Mp}W(CRg6qwMb^)tN3q;JY8_gNU7SAXA?h)$TuccKStsUraGb%y2eW zpWfNW&dXe3gf(MXh)v z0Q1@20wz>wK4AmqZ^TGlarqGJPVcAF_a4d+r}w|IdT;+MxK5)^Gs@=3yFejNx0C3z z-U$S*+|baG;vVhP>AV$a+%1;R zpbxBIU2L3?ul|{h##_ZmDbeWkeoOk^Lo_q`J})@;^Cf3p{=i~gD1@zJtBrw*~Tom+7b z9$4%T4A{0#*=GFRf8duRibQ-iA%V%O#iReu60##xUFDAJor#GQ~G zmKN>VwV@{(>k~cUKhm71fG|fMvd;l!fopaQ!gRLvF_C>a1_D<4M*Z+fj9<& z(Yf24@y6&Hy6TRs5~3ILDk!#~{WI)-Zq#s*5WLeFnqGwC&?GA;O5t(31G#)udFaTb zjZa*=hicdAi{UYq5}C#kr9xBkaS1(cg{%P-sMp2;^xg{^;}NGN2k*V{AXd_t%lvDBc9ppSUb$Cmh)IiV(d3)!or~L3++4o_vWlm&1yz6>Q&SYV zaAyuT?_wK!cflNs3vFp{OO>_luLQn6ny|&XIE#cg+5f$buaAh4;Iy(ewO8F$RzZhD z-W@N#WB*GmzS@|jn+R2Pa#V`SSLVw4LBJRtU=fF>5Ox3BAWwn0x{d`xO3HL4U(0}R zLiE%sc2xQC<(iRX7N-T|q*52p23vn|UbtpK4@qCzJ527N;#<{zdOQDe_U~s~(nAl7 zp~uFEB;ax0^&>-+R8|dEVb$kRmL+wvQsQr5y z>H=zVEfQ*}*ti3=TP&z`fs>GpJH6Xmr<1uS1cf-_qNPH7{@~y}P#>WFw@7A~67Z0a zcaj;-)qTp%5IhwqEhlu`1<=D(hJUg*f?R^$2v$u4*(TCMPf{72DYe4Sp}#n5#fn{E zajZz{Gh?W5k_blDD~>6i(n^g=O3m|HMxy~PoUX!5g|efydSRj#Fw5F-i;7G_ogr*vr`(=xIphn|{9(7l? zamlFf^#sg!VE`y+aVYJjR;TOH^0*b-EL5HSv{>*<)}n2&Qa6=?J7u%%Rfl^qNQuWYoz_K7$a z5SD`b(y*aavT&_1j$78KMjZ^PbUKS1kJRy^>X&f1L3{w)a&cCG0LhSJL1!gv=LKDX zhGU#JMkkyx*mkSPR>nyY@kx3>K6{Y#;WOwYuBXOZJ`Zs`1CA4+?XA`r*A3?A>Ndn0 zs1r&)qr4e7ed5G8&s~}Gsqw*)&m`+bbTJ%3RO|-XiYd+1RBWP%37)_hu2%@2j;I^v zys?9(-Pnd&MnaTl6&#wzqH(e~ajK=!s%S)Yz#I$u&lYQy@))ZF;loh{_w0Ob24_|_ zis$MX)l*nliVlvHTT4(J3t$w5HVqn{l1F%Tx)^~vfHLsa33;kOlcPfx^;hA0ZtMfq z(|47cQ<>zY0|`6UJx38_BpXoHeZd4aC3M*Z69~^yUyE#EK1a#Pn{yQWy6kohEhX3p z0YRtPK^=fDRt(Ac#vQD#YQ9H17~D}Dh@vdK@gsq^yO$kri^YFB0A0Iyi&Gz7v?y$@ zgUQ=?zd&$ENdVS6K?(jcQ^IN$RF-1p=LKRwt~&ButaxsjSGk*@@iyk*(p5UZr5fWw7SzmbrzUkX?}xy-OQhgGo@ zOTR2wdQ^*(5NOgy0OF6984zoX-q`^xy5t`G+0&EM+YaVnZ^`ol%~;|f@?60EZGgN9v?Mh#l|8{xpj#bT7uF9B?n9^rdjM7JHv%YHIE%lLfEmZOaIxFH#D81^ z0j>W`7_N)sMrd>RmVMli3yZfo$TpE4dSY{MrqmLFKk2~N3ipLk0r4<14cHgh1xTk# zK60x=l&btxDdX6lFHBCty9)P1Nj1NAl~UW7kPI$5#1?5+y{2+5cjRP zJQ;~^3T?&JLN_Nx1cLIr96X>T4E)<5j|F@0AO=2W)AuG)N(0-&s zslvV3+X&dC;19CAVSkTTDZrCz{^pQ61X~~FDS7>fSkM7*syy(u1GMdPRE3>08xbYp zPap#b0SJgXfMIb81+X6AFlO9*n%&$*my+)bLg}B}9DAz%(d46_k z2u843-=CO93G0cYfc| z8MP(^70{6p>s1jGluN}ofYf|MUlgh;f;ES`X2&UUt4aYC4dgeGy^$?t$n-+S70GeV zpCaoYI-8`>lW~-x_p5ex(|m6r%vFgygR$gWw+U)sS_ym)@uB;zzj#(#SnOaPwyt-v zO8{~g#x)SzZGXbDyV!1_jq$toc9Y;THpa7ttU_I~nS}>?{TDf;E|(wkUaUU9%&Wg% zY)sH_+}7-XK4Rr-3`FCMZiS`e00IXw(+f79Emu3rV{s_36~kY6>uz)REh6vWc!66< zuw~|JW>2H+A^b7{56^q!NLVopTJuNZefbL93?wOLeAEqP$0#|Rl;es%7@`bQ^yME% zTp9ySmLL!KT{(TX8(eVxX!<(aai$%hlRQ9SQ#{l!p6KoJy`)Oi|;+H>|wo2l6( zWp^Jcf?J0P*GhY$EJvTpzYVj%C*8?b1P6>F2(>HxP>}}OL+y%unxG0gT2Bg9Fvwfn zwj-L{sI-WC317Iypi-(C5>=>g`zwLNwXbR0wB353j23Ey(Xn=O%!j@VyTW)SX58ea|0$};YDfUkL?GK0)E*83>36AoEY zte_g9vs?-J<9XcAqqe`&xJ>YG2G>7u&V8Xi#=&4FSi?DkPG68Nj*&wI#{u^%R1;VmR_35Cg0;N3S z#B`;i6Zxq>W@TV-1Pv8>TdQa0eK?gXvyD=&Y9CPNJB1l7M=wyHK)oWI)SXf0kmYYmH5k!c>SmwrjLvg$pm(Q-P*}Q^y2qYj6+>3Ydaff!)zv4-{$R)fzK1 zbUH@jF0lqw<~Mn|d?y66$RK}P$%q#=>6SS_haC&peW6F2z>X-}v$i$tdXOdkw!y(Y ztb+~??(n=jP+EIlsQ_d+M6}Vg{{Z-`Qd6_sax6$*2qQHhm#Dl7bXsrU{J}~U7Rs@5 zncCy#sxfb_nwy=4>{coG$Dvo4L}NN(GIqk;G+qN+^_~kHyvh|AhIDBhJ|wS@A6jz8KFMC} zqEdn(u7Lo_WxWMSaFTBuBsa82dMSW(UO=@HHj(E7Bpa3+B)igYF0r5_lCqB;ot%|p zaQtntal0yM7i4b6bpP*G_w8rk|Ifj}+jBS)`E^`dxS&mazoun z#JNRf97l-yIq*$7iYdjH?7TrL84acVH<3~l(m|BWCtr|2st%uAqbF>gw8F=NXzoqu zIu)9npuhl0w%fM!X#vt?ZV{MG0bww2~vP0 z2?MEkiwlxF1oTt#7PtHEc}odi`sjVy#9%0=G8*Ls#S028p1_BT5^xlSJwd({nE!HK zwKC2*rrJToj^H4I4z871#B*2X;w*WV-t;N~B5OaKd!;-OULYndw}SOfp!`I_AgMUR zI)^jJ^%%}@crn2%mMX`W@JvPB?owYNpqi4p-R`@m?ned(@0c0)^OT3qvXe+VsEe%V zIuE;asWJ@0W43QzjrtJ)|R`P#0a@NAeFXBO(tW3hesBQ=B^3V6_?U z(lSio=!gwehCE}B3-1!JlW20pU?yCR=~NvVqAvs$JekmaDuRESL-2AXhT!KE!7n|~ z1sLSqB$QKa1{VxZ2#BZL3~u+`Z-)OpICxNb+lk5Rf2w#Koui}DM95cTOzp7MvXh&V z|M}2OM9%gMDmsRp!=;E-C5Z{hfy#_(2H$reBe=N=1~P-fI*k3n$L}2WRGqepE;WEn ziTy-}{StzU)WO@-9VO!mf`TlEx+O>cOu%2F+SyR&>KV!16g(9)bULBqR9opHXDi7y zn631?PjRdXXv!r@G^N^+E;K(O5SMaCy4`obBi{&P7uVll*`)u;$`%v9z5!dO=%IKD zrS8%0AY&B&fh`GxR&=u+m?#`A)Q3?QxLQV$5dUTVF^XN`U>N#T2kU5YhS(JrTePuw z%OjK}d3SwBz*3^k-CcS~*6uP-1wE`BS|t0{#m?@MYcRX(wL84;84L)>$mvRur`jnl zWWFh|n{ubP-P=2*li4?~UKL|&v90>{K%tX*TQoRvm?Y9LM~4lw6VP!|2hoaf2uFew zBVlFAdze^|H^w8I!bg3z30K^XI~E&N_^E5N1zmShZoI^ng5);#b~A>)=*yhVI4p+3 zX0&1w7oJe+#vJ_4RP2MI@5qTvENk3HFrE%lBz?lCKtE=EMn|WpKWfdYM!xa@^m@`Y z3gtYM6}T4Am}^u)|1ZNs-Kb9ZnObGCj=Jvb-KJ4?-9^EJrF@pbJ6@QYqG3@nDF8FE z?7+XH!&F|@!L(HvRN9G4^U`w#TqV~~X9n9b+4_qcy9JFPuB377joOh(cYSN(>Vb#q z?!(X-%QbQlLs}l`pRU(uYdc0procNI<5{S-BRY^)aH*tlQJ&dA-T zIY1Fhk{?MrPDL&5{O+^n*9pY*@WuPEdBiqZ>q@pZ$Y7bdc>jYR1Wx3sVPg&az-&q2+#M2eM*?Z5vkxBXoQxi8% zqNa1Wg`_3@Ou+tK0w5Chod8Es(zP*+iYFb+-ld=;UvNcm0E>uSNAHh}Tj;K3_yRc|RJrnT$qyU11 zcP9X8PBU`GF3mjMp_z|~Idyel3huGm<97eQ({~?AB)9wS@xJ5mJ&pWaVJa5!C4M!G zo0HYQn02W3iK1w=Y9lGZJQSqxH365jq;Opf`>@yG62mhbV)%bzR)&FGKmsUSy;z6* zLarkf3vnm+C2Mk>>==iIxZQV8N;e&TQMqu>o>)qnDNIx=bm$mqlnbR9rO}vYhE80a z<{a+PyjL2HekQ;(z{{aBxBKp??B>HS$UQIjX{?8M)otWYo#*6C5S3P0F^u+XF3JrL*#ew-3WQ z4rfVd^>&;iSDOqzcp}hPn8=eIBCcD&c8E9=y9B!c_Sa#uctPGz)EiYlm{EVRbSYH3 z8T{~z`Vz(U{DI1^kl!RE6FMaM(s9We*1d<`D6U^$LYmc#s9(}cb`-I3Hs}t;!pCcpW>fyz|Y5u-^TmtQ^k|` zqxeSp@zeCBqPD&A-#bZ_GcZyv-l()o+y3?f1fD+I<;R}{15))%hcp6^y91i_t)_AvEqNyzo*}`7p&|3XuY@i z0sK62viLvn3#eaM2gg!=qS7eWhv{F4ZvIWYiTVLnZQ8nNi^anEk>Y$R@$6&ZMy+mF zcE`%a-ir7kOn_M@!?-cNa8WqNnL@cy_hV+c@Bk@)t~bz+571{%a_66qba#TgI>FtX;4V(^=O_5n6a3kUM)4Q0orxvz;LHMf@ONB; zPI+*?*_;RGf;>DpXJqr>?DnR?i^SI(#eY`o`l9;vCHw;I{j2)*W%cW;>etuRuWzVd z-^4Fa_P6NQisHBNtN0)I@eq)@|77vI_$T^Vc^UsY8^87zSE)Z%^B+G;yo(v-x%m5` zlc4@TJsXc+iRTg8#{Pd8PtetCn!M;QF32|vPrF@5YgWDIH&9l_$_H>?3k6|K7PH{l zokjnmRKOswunP$uxU~T*>T6-s$TR}mMyic+*{_aZ-y9v8rhGO1GhdmgjZD$BN8o_= zk7s9a{U&E2o+Bm(c-c+Wql%oyDwYf)!YIGw+JMa6H z?UqORX9`+SJy7&QwTw6;@`tmpItctxn&Q$7De!Z-07Gj01eVpi&sH35J@p?C@M}P+ zv9x)8vlnj$#%Zt8o&^ny8=EC(RYUR?$fCC+C;RsW1Mv7LV0 zgdcwKCcFd{-;7^-i#zc1MDaQN^A`TO6FV((#iMHLb1jt0GD8+OjHK%!LAl>nb{m z^g!XdVwV;^O5dU!nYfho=FNnFe*=M%Ipyo=Up-gAp3}AhW{K8N75fP>#TZp=UajBj zR}~6HMS`&blTTqv1Li3o0x{Z9yp)!OQaMx;3keQ27%fo0aERg-k(MNtwK^G4pqWw2 zjOxNlr(L*EPDGki9~aAzkajNTSj%dNuBsqei+m-J`L2W^y3nSBj8dbm{WA5higbvP zfD^7ea$lFgh6yMU+#LWiw*E;X==qCt4MGJxlfJVxoFsKq>ramM8^W_CjemG=1(lY# z+)OfSd^rtKNWOrZOT|$YW>BQF2L5otPWh!{HBn0laXRiBMavt?>S$YLB-#b#R?|D z59+zkqz1zWS6cT;%2txfQt=UIJ`Nvg-;lHJwnm}Eq4#^3BS^||-U=c* zX9N&h3@ze38{lV&kz$mA$9FL^+<=@cB*JrYJo7`8yko{WTLJ%~OReWoBx+pcS3;`u znpNqJsy{`gTx<09X| zE+9_mscYMJ>sg}aH>{MA1bcOTow~PNeHdKFHl{yPsm10mPqo5mv?}qrS~4u5l;KS4 zRGRUql{dg zfMdB`29mamT~uq0ArG_b)rJZm3$ovo&~+y=QcJE-gTKHgd$|ZBxo*(6Gqs@M6!2KB zkRhRA9tv3OUS?Q$kxOA>cW4Jth*c#e3gX!A-rn+n4km1qvB8jW5b=V{LxHv<%Z#>l z5wsD9>tNCCVoB<*YC~U4g`OlM?O1CvYWZA+$!RY0Q}rC1AZ88t@dR_3gE1c zgNu16KyqT4L9$v&!X;Vjo0oa57YI4u!IIPLy4^icCzfccYn0%tS$9n&3V|M<^?$!} z66yS`|2ys=l3#YB$0VQio4ah~p?~3-fPI24crukypiR}vHVPymKGg}wnNQ0zbKgM~ zmQX^@D&5FUCyQFSfQr0)We%#v1-bM}*tPS4V8s9A5=ELgkI<5OiLKWO9Fdksged zFBMrkQ~IWWa%WC{eLf0O@!SRfTZ-PB2mHF@IQ05SL|H`QUJm{1Su0kcs5uG@;hc{! z*-Z40Y#Am6SOvGl$XsnqQh6^2&{w(FsJd zm*D}}xkdk7f=|J(?cB6ce@EZe8i-fwAIJvZ4{(?K3O%95LiyMxZzm>_g>rUmbG|>? z^^muH$lGRpGK)JM)E9el$M@k6e6)GU+iW$Xo;Qo0(buM!{w62%1nxnpzg)F{({^vr z+eZIG`^_7zZYL*nr>6DhjYHl|Tb)*0)X=)sO_qy$I$~pJ4*{D zq)ax->^sSovQ@v-;7=3)`;QL{gfnRW!_Dr8Oe$HVT;sm8a{qCFV8FZ1(|@z6C11dG zAT_u?LEj9`Fg z$o~xax7s(~XXLLWymFjf4*}mQZbi=%Cdi9dWt>FWLPW=n0WKQ$7*I2!>v` z^=d>%9;Mfx)(sAFIID89w9uV)B&alw?sR^nU%@sO#2cYA?MfJ+lcR}NAwr#LB%<+f zkc3=Hyv`)sM0)6n&g4w#MzQ#mI+N4;))c)b=uFNy4vpG6(`|6=az)_4D2EUUtv3aa zGD4FQe}rlk_Yw`pG2O6%Zb*?dR33PAhH%N&6t2(ntLoCzOy+svSW)F{uU}VR^hd0G zT4N~V9#;t7z8b4>qh-I|#}YECPH~|-G};orQ97G>v1ud5mXqm^_Bf>dETcTDol0d4 zW`)cC{MtmdFiWveJNx#)QK~N0fl>+oQ=Ovd`v!!%iEq_f^eSRhP3Uoe(GJfVETSkm zI;Q$$r}`Bt3amWfp`~z|#~39Wh1U0#^64y6A^waas&v*CN^2@b^bAiq!&A&z`3z5q z>^J5~XAZXvk>JeU^l%&1?(@)>mPotb*hIUx)7lOmsHnIl4k$$qH=;6d$vmP?D9R*{ zK$eO}Ax#u;8iq(ArUDm{A{}lvS1(XaY_9IAl=DK(G9E9^5JJbV3q_Q*>fV@}e<-4% zvyShmq949knD2s=%KrB4&BZ+xRX0Mo}JhR0l!rX0_g7iHw@=rvxrQ{BC^==4*=q#e| zZ+BV}pHB)nNFL)*@i~0bGXpCpntmoI_d^MtrlQ;fHs#9c8_Hb^T;K$&V4h;Vk=qc( zo{c;g>;C96uX|T|q7v(o(3QlIYO_0de2;)!%FXWd-u-6(=X=?H!0LlZh%hFJ=$;L> zDN88RLRnD8Air>RZw}53Pvv&8XPQhTV`M0a#?Vr5ExlE{T?f5_lxJC8;h6BMN>b4l z9J;P!ByyWgzpcKE;nG=uY{(m+%(`Lnzz8mj|BLxSZ45@HDm=*NeXMRWmeICw${jx#2N>m0&A3URSs`B zKf|2(3+2`p1bTC#iuOtko5~$9O{i5KDDFv$2yDd;Vnft;TABJs}t+om! zf8gIk_FCciNgOg)Q%Rt6@k6_%{uswlm9yq3@b;0_p2EU9y48g;!6;V(ks(2;4pX=- zXrQw`ldE$$Ib11{)Yh{eUGw&{rv=x=9GHiUw<;<&Ya|G2rniJ1Rvx;~7Jo%C62zZv zb9qm&ni{W$($J898|3M-%|&JDjw7v%3UlI_>?X=n=aICpb_bChzsX2lWX-l6N&9r@*BnV3M;qzlXb;&NMq41;TK0sm}Aein`A| zr%x(u4aq@StWSIWrOHIEM3;Qx!p#9BXwhBp%%Hs)T%DDfhUP|=Ksp_%j68ZwiGjhP ziBb`9M5>fI6|n$IqPC6b!Wq_?D(m&@5*X3IVE;I~rYRNgnD20d2bU29l0E#IyL$o~ zurk2dNv*BFxGg=9JD8-M6x80?=C>2p-3h~RQV8$2_osxH*`Fif*`_@L5{y;$*~8uJ z%)aGrzW!hZft#TrK6flvD49z>sbmK3>a<)N?R_E^{1?4NR~Q+8#7391U@K~7VQ(bZ zrBN?ng*s%W1ld0tEMM7XYMIPz6{+<7u`l}(94duruRB*jR9>ym0ftNDNBdzlq65qJ z>nvPrtFUwl>=>)u+UjKhr%g(i#(f~!$Tt#*$UPQD#xg@GhIoGTjiA#1N*Ev&Q_0&@ zDwpC`5^O_+hq}1a``5%eVs!DpIY^E&7OS;Ut@X~2LHHJ^a3?fx^Nd6%KLe*~uZNhCQi}!v(fSQY9*O#rd@iUk4n?toLhK5B^w^ z*Auw(USAQ+NP?tS9jkjZ{mEPd7jcF@4sw5xfDfj7)StJ@@2sM=NkS4&I!t zYKyB^M#NP>=2~J|l$ptl`^cZ!srF2`u@Cpr^S&cgXbl@t#Y6U69|w(;vaB090&e-I z6BUU!V}C7?NSsz8(ZQE(=6Kn?My)hYg~wpy!2hG5PGbrICPc)g3jDu#P@=3u z=vI7IQOs_}M;yB)CAEu3zoLT*GvY0Z2_gzNj62bSbXV#L$nAVr0uOVTrI4+{Co0~E z&GthH1EgY-Gd7cyOEFCHx^`eJW-R-W{3;cDaAxd~TeCcc4gzoPP+r9ysF-7-YhsSm zFuK+#h5=GvDGCui0a7+7fZp%WKzj$c+G1h7Y-7D5Mlx6*Y=8Z7KgjMR@*P-Q$Xqr6 zozxxdmx9I~5wn)Vq}mm2!si^1u`K44wDeST@64$rR-e*6;q+dxdT&3t=bAAk9>;L! zz4rWT4OKli2zGacsUjnoqIoEw{4O!O9%8;??~Hedk<8AxyxH2sEakUymZ@mLndMup zS$0AFVFt9*d-t?3H8wbS6m{^XYM_QYj-xi7F*HUFC@@B1AJJ7Nk;q1_vjn?hbq?`h z5a>82AxuCWZWJ9w&Nz|tjBP4gVr zTqudP${EPDrlL+~tsk-0+65#->U4Uysk4*0C*+zr9MRD;>|@C8$T5VqRkjGIg#Cy; zB{+gap7pEahixkBNskKYN;UsFFtJ33ftR&=70+&zrNI%MxXWHrt@T5i&VsW<76H(ki*{qkrHMKyQcxcw%3*DlTw(QSMk z=wgYs@m!nRc=NqgwRv^)<=k|I?3v1jskg5>!kelW!9G+Hxtk6Ik!|ViW(oZ#FSj>K zOCtN3Hi<0KOqrUDpXIhY_8;8MuuG5@LtfadU(;l6qQ0|l3dKbFB$?i{b)#da`ktL- zl+<@E9jQMQPwKWlv2cyTl?jEJABN3pm}y&uNjXtc`h(B}Pe!hY^iPhOa$Fa-%gLGG zdV7K@n#h@#ZWqogXqRxsk`vXGCWz~<@+3;rBaXzo!P|$_Cgm@Ys`~mSjl|~9_jdD# zj-!X|&7Tt^K~mb*&Bw`RMQbZg2P zORcCX03?OIWBfTUSgb^PF-b2HJ)BCSk zy|-@yy>iS{fg2bb8JqGE8<4B}z~i7nk!$=sFZjf?QF?LYxxnFHi`hw*k%|*OX5;YB z#Ylz|t{jm}PqvctaoBz)go#{j^o3aN7sVuG_e-+e!SxwZWt=lno`u?Uw@U7jA8CVM&Gc6E=}JF1Ib>8$@8_oPJ;b5YyN$z6 z=r6$n>M%q{(Alc*vj?dPH`28AEnps{s62i!dPAo*)49Eco9MlRk$B^Lkq2yZ!--)H~5fkbm-e2Ex>FM>mLq}1|SE_hB z_+}uETnP^r91f!iMLEG{$jUuY^`TE7ys(OUD$Qw<4~P7LDxeB1SOJI>!jR9XQzXuZ zsPByY$AQECDoOgG?;Agzonc)3YLDp7MpgW|fxsRAy5S2-Lw zwre{o`U~RQI1Y7eeAY)Ix?Vq}rWa;%Q@#<(l`0<5iVcTx)lPXz5JyA#N^CyAx0^3? zO#GO=`Ep_;qkK*;)ozhWpPY>3If|RvnIx^hxS{2K#C>q~T@i`h+GoUb^=39ipk^98 z6^MO>0JmIWDut^}#M-BdjuyJcoGRo>!^dK&Ke^0Hy+sSet{Cbf(51{MR7CRNGV*O+ z;v4^DB`)2=e-EAPSLXRdiikC?#e5OB*7fmnq60|V8?W73Kkr{=N;DVtC?S|)!4Zj3 zsme_#Ux|(Q;bmU_^U@0X4j`6>K*twfpXgvEHnCqIR1t}M>z%;<-!C)vof0B3>>^AT zwO75)(zoQgows7;UtQ*vuhzPum{ij0JFzS1q|xv=?I-|0ESBGu#U-?fIK3aXdT-x& z`&YJIYX_9>+APYJ zYB-kAF)rs#H)e8WIFfUDN++cQ!%VK8^(Z1~hBL!CD9WTjG&`P{8;xsq=>A?I>*E}R zSyIU?N;GeE1h6e|;t*iJ6vVQA+aj6g-e4aCE*2x1V?bfaP$L3yD}gI zoy6E*OR| z+xiwAw8n;JHlT5`RzF@MyacYy+Pz+%m!H-C5R4IAA6dTLs;ktwR@|sIiW+ffb(rCy zycgL*elx#3Z2CFE#}xAy`GU;9Yay8QZGilSyOrf+&QQr2D#3<`p%TT`l+pMJ2)HFm znD{w0qQl+nScx5mQKQcKEV*&v`V-0zZ;o6LEgYkZD7l`dBfe>Nn#A5hCmdf___i+`=Twz4N9j?LeTN<9sfobYT@Qj+UN;1Oi zBm)g~l#M>u^{iq)v6Fqir)L`70v}$wE%2TuTfoBdp*=WsM3vGSQeIRgrG6H2hXYa9 zzri3wJNQQf2mgklpp|!v#}putS<5<~Kx{Sgg-W(*pV|8qRotnf3GOh#1au|(#^X0m zZr`$L`(%D%e0-z#+<|cXaF#;mx1M33LDYgdp$9XI+xFdY(75=68EoA$F}`Wb!;BF!`4rRWpv@@&t*8{JQTnPxvtf2DYT8#l53M*K#y_3(u&Av+LH7IHQUF5}P@ zC+CNnN-+~@nvnM6m=tV-ku#}hgcE`hdYBZ_Xv|wq2Hh{n<|A(NgvmM4YNA@UPPU+Y9#;ibC{8MpDvoPHl)FaN*oBt`DwMe=i>pT=>I!LD zv=1VPHR&dE1;nA@=1>YE!$~NEST>Z~LxEkKbiCShrBOmWBX$t*9@OvixJHHPp`Uui zrXub`5n0+dG)4t`g==ZdshNAwFW%%ZwVw)1C-Zd%Z!tnqZB=Q?b(L zFY`)Q(Oyr1+qF^ajl`~eC06~CWnT4J;Adh&N%*zZ1*r|lo9vxf0*4p0lpr@AXv_kr zd|PD@<*X_O!WB=~SVlxh)1&syPA?pr*-k$KFfZ#ZroxlSkQ2Q{NEpxj$2LM95hHcw zEe_G`^!}>!y@xS1PVcX zhAuvslFKNW3m>dD5EiC0WoQF%z2HOYVNv$G&3ky(}o&BlJ4&}lFc4*x$CtFGIbh6nUmDQP#O_p}= z3s(}qCCiyIL{Z|L-tLZ3?`qvNVzV-wVIaAET7lgk4#^xrJ zP6*wJ-1kV9S-_)K`ccZg8RJl=ux>HSxzEe}ah)kFD%lkDX zBIgzP>4f+qZu(XvZEvp;YuPHAZ)}YA%rU%U}3q#x$y0> z%bxIYEU?SH3(ImY1PFm}|K595)zz=6yJxC;B!}M@{n69v>aKeAu6p(A)vHo{Uu2sq z`QT1!2WURLUCa={Im+^FE|mS{svvyIXt_0|Vh>i;GsMrCwB%h-1JxCwov|BFOfU~S zXrCqy_=9oMl#ZmM162l#a6VxPbS6tj80O6gh0C=mPPw zdO?`A>LDY>M^ieVNsPX3iqVHyOG=EEMEk=a zzy~X1(qRAP#@w}|uxf$%#^gEk=1e7DUx!+(Qf=h&^4KL>@}T7+#XL5Ttt1|cwx!;c z3d}BN!{$SxbuBF3gG<)*Idi?@cCUX7y&1(Hjq3X=P^B?$3NT z43NLEe{ZQ=#GSXmdFo6!+(r!hUP^m0y`IdG2bl*C6fy5b9YQc+FR<9g8|6PyU*C9R zAhKj;&Qj!|fvQo?f@UG3Sc&10Q_KUWn*Y9K@?Vj)r1wG3jwBWgq^*o~_TDAL2;^qPL@T(bObjX9p zG~S^h6t0<3E~udi$S^xbD{G4Uwt=-ctXI7w46Dd<#v1>@5Y$1|__irmpJy#8xq=y? zd+%8fc)h#_nV8Ay!Do#gc!-Wx>sIal%yd=s5Y;Vu(~Hzc+N*@tygmRCtt!c7)|-lX zYzET@qcYc%e$0sTTZS@D91rwqd+C2n_IjMPq}c07Pqu7rzlLHt-RLC7DOm>H>o{(1w(j-D45)wW)2pQ%F@u)L0bYK-U%pFCo?JZS` zy^V&*zfhjQRPFEzL|uZP7Be^Y<#tu^1za$Ny!k~qgMy&0QMCnmJ40J9o-4&c%G4o>2_$LkP=D6n+ zpJd6GrRk0Mr0eE@rWcW)`D?dawd2Yim#@PG7)VSDdub*~^-{bmXhh{Sf@3a1ZyV@G zP@N6PJ%gK_)t=}P(2Er~>_Qwc0uk}3MN1W}M^EU!QfOaVl7O_gq(5N@7=p8ZNV|@g zLGgo*kE&C#et}^x-B(5`%OU+X=5E;2y&YoB5nB0REoJ_Kd|!~8MF79HCl`G?`X+NenZv{tNA@uEs(k$CWy9h**DPvM#lrbW|y|YBt(}71#BEOZjWKRd0 zkIODd)01CBSUm&PFTYF{oI?Ptaq7jo;@i-?Bx>qYc8t_?zz1Fq9h zeM)Xia8wd_x$5082$B5aE3lvg%ZcI8(}OA0Anq zBMZ(b;LAp>Dyk0S94W3cgt@y>t%i~>Q?*>tDLin?=EDsCh7q>#DSSWG0)atpuBwNO zfj*v6t%nuA000sDqJC~N5buDp;$hPc@<=NhJK!SLgyoGJ*b^q~q2r<%=vZ5(#xSD+2ZHF16PRNIgwqiJ5ARn^M|D?05uP3m-G+Fe#wUy@rX%SAHyw2kH_Gm zsrW0CitAZRii*dA*FLFh3{d_#2h>C0G#xEK*BXF&ph5fLt=dmAYHvRp@SFh^#R8!- z;HNE?Ax4I5F3;GQMXEl|CHgTVz%B+jCx8cvG^hO9>^tk<6syviVQ?v^=u%+TxL(}Y9{Hhh_j9LJmWIERlC1*Tp*X(BNGT7 z+lXTr%{rnXi88QJ34pCdSK?=EgOqw#m@P5oj8R_7(A7ak`Hd+xx3iX%)PNT-65pAM z0|qy*jl-RZp)9yxWWenqK3d&cwfi&F_LvANrFG?uH9-r>Ku7UX-%N%|y^GmOaXR!0eW&=y6vQF!KCfTy6 z_Ey&OjLO=o-IOgC*i%9ZER)GJtj%_sD^Rbch7{ln4j~2BB+Q%}TOcfh7SMevTx*us zQWm%6w6y$s8Jw1@B8g7W;|AN3`1lp~0u!Fc84G0=9zD_hy{TdzV=aM-F(YX7%ZJ*O+QfeJ*N>M7=`NiMoI>Ccjp-zYa?GzIfUjF{D#BIaC+nEO~$ikQ7_oo2xE8aqgM8~9NJcn?MoC#2i$ z>WfD8e>4ujX$Ckafd`Jl$>#RMEdIHRHKq8+-2=$$;UHTo(ai(+W(Fd!dRDMu&MMRT znn^X<m_$gbX>r~1Gv zKQ>ls^pC-jN`(>3B5*N10Jj1?kilgz(L=;4&af@#<-8vCqM(pj$jGpErub)p#Xl#q zrj({Wu0@|2w7iNAGK~#w&VV)()7aJfGff#zDJkuTD0bkMT{6*x+#Wn7JqxN+>w5g-;pT zwlQ3CvU%WD8`}#lCcA<)rI>7JHc-X7%;Df&&ZOS#E?;VN*#o0mz1h{9oazF7^1?{W zT+;MWm<=_LLM4dl;vt(@+5*WjG-fuc{qSD<>m)J$I@7yqL9_~6!j%#L3Va<1n6+A> z-cjxm@lHyZxwV#HE}2+hJYBBWsA%&DRB;fYClP=a`BKp}13|H(9|&Vh_^ed!8M4_g zytY;t&s{xkXc6_4iPXy&pL3D&;Cbz+U2JKQJ6ThpMNCKS-&~2#Ef|+aCQ8F%E9rqk zc^^1p8>2Papo*@q;Ub*+Tc%j>QU$VA!ikPNQ?6djflR8=RQI@>MD1jSb$VL&DL!wa zG+rF;rmZD(OmJ@RL}f^v6bT1L%2@P42z`guB5ZI(I)QN$N%6+D z2iWay zDu5M%)LkXpZRR({*=q5a!tnkA?4Ta*CGPL7R?L;+d{90D<|SirDF$zZvrG0&H^Z-l z%%FQXTwhMnh899z-WQ$mxXloo3+k}%dI;7E-iWnK0(=Lj^TEyVyLC=*3;j&Uvn!sD zN3I-%M>~RB>H5QY@Zbe-yY2!Gx!4*&w<2h*E@sX;{E75cYqFmAH2OIco?pGrh^Z_4-m1r;y|@FJXD>i zGlt&f?>fcqBA}*dzEU&|9sxBie1n?lucP3;>YkBOFf* zHdksG$4ZrnMllA;uCqCa@P8D(ueAeTOgrsCI1zj$5uKlemScPHRVbJUzCj-b|0RCD zC8`NN3T45E@iKBcT!!)T+%w^F175Dd%Pzbej@d|;;pL}z)bfw<@_oE~2QQ1TU_M@6 zf>pf`FAw1cgg4>kWW21w%L90M4PJhRQ5%ooM!PiQoZX zNmM?B9MaT;oVgnSAVN-nxFY2I4DSdzboLP;hYmL<!OD z{y#Vk8sKY(!K2&Yc|^WJ2fi4dKvnIBP8_ux_w<61b!DY@xHt|=pO>Q<$R#l8C1yx0 z+5`|0q;v7^K7eEg?PmjpmBpq7ykT9<3pR{a$BG+j6BPh=1L%=`;;1%x9j*@5H_#xy zfi@NwYjE0LKXs{ZY@Zf9AsxpMTGbxK%=_YWSG$8K_ z9FpD*77Xq1t`v*I^@yv4_V>+0jBw-jXog5mY-zXJ9M za#3&;)_)J)@h$)_P+!MpmEaCYjoq8c`(Thk?9H@T3ifHt4pYrQ=LGp)1LWH}M^S9K z!Mlu|(hy`$23%%0HaoRaEzPU1Es`{2SR^PF*f2egp-%K$67eO)8zD*xe4Ln*UZjPA zQ?J2cUdDJ6%6>$u4gDN4^-(CQf_tyMwkXNl;Z_(@FYm03hQU5t7nm|?A+`O1ZTXcI za3mDUrJE>vjO!k=kah36&UPIbS5 zWlXMtP8)E0K?oT{%Z)*Pj==y@$J8O07WlypUg>b%4264H$GBed(Bhgy7Pmy9do)`p_9R&KoDxfYZP{Cjk zltSdh64d>pw=kOAltPoh%!067wJe}Fq{k>^&AcF`84uFytO!d?((?|f;ouB+O7Ve; zSIc?VGHsSgRK%glC}UWTzL52mHiZDXAExFP`Dc@C>PG?PMD4Eux1G#(+edKUtCj=!#BT}IdGpnU1m!8hgnNX%6HEQ zf>;-M!@P@`xXJ3`2aGOyATV6@+-lYSKBM;b<646OoVRjbRLk^gR;x}+BrZh5wAcr$ zaRUul)ah60;fBZp8-T}fnnZDEv>#ZwI)c_rwE|C(IThR4yg3hHP{qQ^6^|IPzQsDp ziRFP#&5z4Xe*6Y&N%7;Ej33)W5?8CdUfu(1*jXKeUyh^LHyFx(&N{*yoDG!C?J;}` zP8e8avl2%@+zYJ#3pRrjpmY8zXO>wYIiCTQhJ#E>$KvC!GV*)5=(N(YYWG(IxW)qdBm-yCQh-y-EV;Ffeg(lR_*?r^6Y^k zoIKF4>B)zQOYv9&vE5iR3_o6xu^L1xW27+*1}W3)6-JYsx2#e|u{SY1a*BE2R5RFW zlfhocT2c&l8q>{fpoi;OUMUCPn$<+5Os!;-dnj7Ku=6m3nO8p>*jb8!=OF_y(9(LI zNz^RD-OrGa(UP}n_ZPL|z*yihS-^t9 z)21Qy9>&BB;$kU;xK}{Ch}qe|M59!$_myGqP=7&v1KZoEZb&ktc*-^-7s{8^8)8Bc zK4sKgbKwkmp^h{a&2g+HrD&crlPKh>i37m(h^3m2OUFJ(ZL60V#?NAS;9z7@XDuzWP2Dct^A(FyC+6tFNhv|*cbLhBMd%(VHQ-@%JGu<^97A=P z%MZ|RANy+4COGG(Qj8wt9>c|-VCdn5u()`I0Ws%atCUgvlPL{l;@qd0oXfkUICoPt zn=wNap_dZRCnJ~}p}YkHX=Y-8W0Psa@t5`@L*>^yi%RXzYZH}bI-E3gWD;fzo{zJh zXB1|uc2k&LU{5i>ECZ=!#O@7SAS$#1Ta*iUURO^JvfaY^VV&*2&`XZ6HrSBiTXgmo zM9qY!=!vKqIT^j^(yMld;hn2zwxD zDRvaMnD>!U zROz~P-BI#ETT#LZ+*tjUs1#MfCz6P=;qDy#>A=ZNYlsee3%#0j1;~;xSufQE4SVPd z3}*wB+wpO0MEP)We`%<=Y0c2Ya6vw@miJB4h%fb;)~0jC6CM4s>1^>tdZsqrux9V+ zK$$gw6ybKqe+olG6Scz7B;Lbw*lV_CPfzzc$x;w{6QUqbT@i?ph!_9JR?xKBL{t?I z7;QME#0yc@+7$gq6eHXA4?%+90))Qu@B3Jpcs)w$P0@d_H*Dm7QlS*fPbw5KP)NB} zD#Kti!QW3R6d9WLq(Y&&A1M@JEQwvEE5KH2l|6wU%-dW9M{$o#K+e4B=7RCb#%Q%N z9bDfHCf5yckv_Z6fE^SumS_j$(?yGx&D8!Lxg!STkk;1^o24Osu0OJ_VY%d2*)KC) z+KhXF8Iq@T){xY*pDhvG(B|GXtR=76hTgYl)qcEDyS10&++A>NHs-abTy(Up6G9C~ zAz>Yy+b-w-5}V*07*NTFQt;t9E}ZuGj_9 z_2ViTN(FMX$m}%~^JkSZ?0t~+se{}E? zZ5;p)xllR4tiuMA`c=W`@M(sf4$|QYlMbI`EoG#GRl7eORtYXfF9dDhDApjQS(K6E zUSK%l?WyGOXyFU(d0*4sOHHQ92TJGI;Rjv+OnK5B#jbpU+>kPlY zWxehoe*eV8@2^-(8S!h??vLMNwOIoyLdMyGW&p=C$86e*45zEN%+Qj+RuiX(vz9XA z)T-Sdr++F(FBxk%3QD(_-_S7u~s;|{HkD7eF?*L2dTQ# zq^gM!6YtHX5)r-V-nG(duacz^_it*3?X8w4)O0>u04&FbBWc(QJj-6wE>B6IZ6#34 zkRR^w-D+p3jMn0^YZo&Tzqzv{*1qPeOcFoHT7p5&$VmSOrs_z4A2I=xSG?GQI} z9%cyR(r1}DD-2w4Ca_8w4}3JGA&((Y8#=p89^hS4hR!*DbaTKKIbzI>@EjNezx2h{ z)|?@-RJOw#4CQHUo2rK^8ouUcx%n-Ww-mdtKx)Q94pNxcM~me$*z|EysH6(cDuNu0 z<3$Ka0*NVCtK%$<34SYLVB|rwTB0b_nG7~~sX`$*xRD8Jf!w|FZ6h$6oumv=977Wj zHi2JIGjhIyCZISw1ua2g5<=#|iE_hA|JyheJ>^{bwG>ek!?ww#t-mNLw9PCo8ULn1 zm5G0^F;#}ezwNIIAAUM07NyNgmAzH26zyWx#m7=e<)Ibz$oOoti$7y6#f*%vyoyG@ z!6L*~ikzuZ+pE!$1OoQ_S%X&(N*9fXFhWf<#zD$OLRCaZt}qDCNSYuSd0(!3_h=E4 zgHw@6#0r}UG5sp!`9*0j?Zd`P^)P-@j&sFX0gnsPVHYL)ZQ=!~^%wcJ`_C99t>R3w zaD7WgF{4T+51TV*eaxR0gDa8lF>kEzhDf+)5r^b1QK=a>!nSpc$xMy~9DuKOgDVK$ zjEMxq((M>R2gUKRkNC!wU|55Vg)Cl&7ggXWwJf7S@wH1Ro)8wO;2n%9q^6a0Um~JU zp~#M#m1TK~1y!}{*hUOXykOcj zJQTif!H^pwNkg%QZDN!&hxnKob(bijLuB4(K1=k6Q*Hw8fz)Wg8pYP?EsHf zufU^Jg3%GCx24K{*fl~Kc?SCE&3@JYe(ZmqQgp5x5Lgjs>DW`<5{#v^S%;>@qeZdv z0!MIMSC@Vc{Zgq>FP33vB}`l6rquv5YzP5QuylqMEz`TlrC;2F-okK37!8j(vfN8g zO+g9gjMO(7dt8|UfCqbMx6^);J$P4@+eu1TyQFl$UaY%`17YBszSyZ4u4Bx?@SO&L zsh^yDP8Pl`ar}o>Z1-DuzE{5epvVt_b%`lPaVMMd4yiOVaY zUZgXol%%Vt{rEIi#$jA-z!(YwIsubub#^m|{eePl7!nrOF|}4123Q*RyUSI0FjO4_ z#Ua!T`j!U^L;LjW_yn>k!*UXM!a)zIxjUVHC5Lyp?xfsp2m#fMo&-Gjt_r=vhthfw zUO98^=)^Wq!1?+O4BZBonh61(+Lw$yt{zg~WPJP96aX?QhMP>qz`Lpx!`a%HbD+8d z5@VGEhs8iUeR1&6@)e^|8nl^oi$$Xc7&m0pEmrORy5-g_BO|rqNN7iB(L`mT&xu#^ zAr`qP(5M8bk?k+m1|cpEEfD$=PAIFvjyE{cI|t_#!@=@&0u~)w1Lg_IIT-KIBB+)@ z*yzuN>rey3c;j=7Vw{sbloPqD_!6U&q0_K-Yde;TRm{p9UN4rHbH{K!{%1BO+di0LK?{-0TOKK9~y;;G99ci zB(hu#=&&rgS~f7#aPSdr!Nn;HWu{qhL|hlR%8Gx55q)_|lOBphPwby>5}kKW83Ja#) z+p3i7%ss3R2D6ys#?$-K;Nb&Ei+7pgE~WsHN#b5;N*wR5lDMvo?IR@DUuDyr^37-QP-xi>#yC97~NjPpy$lvK{q{>c#%oB+gM8(1=*_opiz6GAX~xA zPrF#gD@x~23Wn2PWq5rJgQtUdeX)txdss^u@oLrXkJo2uyp9xMIZw{xWoR301w`vz zc-FxCr(S`HyUI^ms`u-s)?T&qysPJm;yny~oKTkCvYO!SV~}y38T$s~j1Q+Y=pk|1 z=6;FE8N6$urZjRZ@V7VuGHFT+o_DgIXXI3?c9T5vD0Vrd^%rZ~#Re0lw0bkK?j5EmEoFVq$hubTChNMu?&qAgW~Zi) z$^@ZF2lR1$wFHXU-1WHoTG$SiGxr{na~c<&B4`H9F$}BWksVqPqX%1`V0$BO z(!e0GafsG0MWV!nS7&CLUK`uEHptXykw|oWJP@w^N&S9YdaGO$52PU2vR>47 z=m@}ELgHRv^c+oT&O<=-bfRg}lXpy6E{j9_WLlJ22y997=4_2|Hou?snbXda_NT?`n+*gfXYKS?89P6i0zxJY@N!cF@Xjg? zV6roRi=!kHJ6rJF%X*%Xovqsa*||s@rZO2+iU;&6wP7j9{m*a?0*zl6@47~+Q!prY z7b|eo&qY;?fQt-Yxc7-hDa9~yklH;HjdEuH1j9F{ti|jrB(p1c6}ZCEu}T?Be=4P+ zOf3Bhlcjl=CI&Mxs8##NSwAu|s8zekpf0edc)TpV-qJF@aEr`$1KX6rJj3NLh{uKv z&>{f=#B9PEMreQOBO+jn1{^qI?fyTxt?D>y{x8FH3)WmISyMy8nKP!GvFFcI8q36< zcbV+TyQMVlLWMU56@Qnbz=bueOcfSXCPSFDH<#CG+6Qw|G3hhorEuOSUWv>M3vmfE zM(-DaTh?^VoR?ZK9IhgRdgY!Rd+U~ZL+#p0pBh_vax$a>T1CqGl-$mV`Y0;@D<%dx z3&y>`sD1pU$qpY69@G=#yG2C!x7{I*j3OqKc zCns_N!TcG6xPbN$m|4q>Q}CGgiyohyeb7#Azx#iEzuAR?Xis6?2D=q%v4}4ICw=9(J0rTCiH&)BzvTg#(yhVgSx2MZPQ4 zMv4$GsuF3S1`3%{rSFs8B}rRFRQnY6d04S37J5rOV%Xb1QKM z^@G>mK`yZRQ8oJEArE@V)vCR0)ZV_^Vx@E`_M?lj0zt_GA@R+)D>>f@-wa=*wHd3F zA^Ls>AV;(ZDzs|2&t#Z;SW8~>6+P-%wNGcSU6awO-Jgty50Hl`q)jpvm-81n5zRtI z!;iAQcaVm!F=_ZA)>1|qTD8AFd+nNrR_*>YJX+FF%1~IS+)N%d+nNNR_*>oJ8}TG*h8*=I6)H^c1RwR$+tS@ZBEG8HyBBezpSJ4 zVLeDbV3PEytfh=3wQ4^md+nN}R_!K9U99yKm!V}-S$4a*m_G0<+>WWTm=2)HJ)rUc z<3D0nM>@I(+%x)odq~+JSPR??$XY5qEnBRFq{UR^?*w|0uh(_8yOln z6I(LBB+?l!`mBUe^tO}+GHHM}nH1$+Q5xVhMVPjc&cNrDa{QQL=;Y$Dz&9Dvti4G% z?rl_ift4&7r$Thvh{BXi{+1+|B5pN&IB6H8eNyYI@C{hP5K__x5SDX2!y3W~TZZ=+ zDnqckM&4i%W_K}&VHHlaqTLppSKD}>vB29q%fVVFJ!Eq5TUkpnI_W>rVMV9h8%u*2?uFV!p#mQqC`>}^9k_~NCB0CY%nddPsGRK~2Yu!#khIz@)&QAhy? zUr@cn;7Oc-d{?vsy`H-PmPU$u@&!q>FlSxgm_8&=8Y{E`{!nz6>&Oo?vTz+ByqjhU z^wwWo*)e=Nz`E<0_@rjRwY;D?4{5}uMm%DI@u?KNB&ha$Fa%8n!*D4EZ(KBI&YtPG z)y`lH@?eU*l>cHk5*)P&O6i=MId0RA=3>Z=FHxG#5}UL({?64udKdVj<<-lhx6dU3*dI$3#Rd_7t>Q5I(7sv zq5IqEdIw$ar0W!1gPqIZ@>00l+7-M^{4}Zb<#c@oU0;a>bA#VOBU|SOcj15YgI7_} zpV9ShxZWB33d%>n6imZE!K?A|=XkjXFZYJe?!&v+;N^b2ycREA^Wnpf1rNaej?trc z1h0b|NJsM{?9`9(@_H-@-aywk()CSreUPqyLDz@q`ewKa1ipp-e=Gj~mw5R-RCH(X zHn@eZz8!wHAHFtt3?A+X9>q3(j+ei}H{XGm$EoBO`0$r_c_)6jX!HkD!Mm{d-FTS` zaNimH0gLCrZSWp=I2HUF{+|loi|=;@zoCB~!B>8Qm!H!AKZEO?!Ef&x zy(4%SuAtyP06##)=86Nb-aAx zIkpE+fr5$P8}woDU*hLmqMG2>IK2E4FK@szEgqnQE%5ScygUW{ibvt47nAj@$IH*~ z@(5ney#y|2<7FkjvK%iDVO4L!%P?LFczFOXuffaD@bU;;CW3EA0GOi2r-FN-%_(Yh ziW;1v#-^yDDQaYj8knNWr>J6h2kM)e2p#|iLRCSXA)QK{p<}|RGjw7Zb%tVwL}##< z)EPdW8&wR@B@iIcKZn83j$oenX94{as^?%K z{C{v7r0)YTEC;s%J|eOeW^fJK_h6iGZLtj56=8K8B9kzD2aXXPt`1G0#Z4276Sydx zXueOUf*M~i6Y4TxO)(RzN&0EA&`Pg>nv(~XOW?yo+VFB5)=bFaQg5|p&tjX$9}r_H zxe#$It@kpepE{d6QGQGgPW(7-V2!mPRot|k+Gzz%<1N_^c$bWnxFMw(PVK0^C#QD) zQ#(T7{|i&Qxo4iijYWJQw5t%QzXLXGb=Hgf#18S>?!@ji4q(@548DJB2R@I9oq#ZH zV)t=qId)?AIqY2Q#4dO*6b0`>kmXE^o=nx{G>M7=)ME8RI&UE@6wX`zxkK}oWn|++ zy7-}ekm;FI)hJ`*`|lBHq!S;_>6|>`OvYMw{(cjw57w4j6o%2#2n2Y7sm#R z!?+Msr@|vxp-f3bC98P}9;GNgIhGYfBU$3AlpbHIauxd$Oem^Rn^31B`g-xQ0WYWH zzmTKNXb+<>-rb!f zl?E@iFJ#>yWDw6VQAU^Hix<(PoTj|d0w!YHkUBG=Y_7B`j&y7FArP@683zwelrV}j zj_qaO2eJK8>?0_F*$7PUsEk(#hXa)AjoKs>X{i`NER^uF4=-bI>980aDa7D~WG3W*{P&{W!0Wb3w0_2wVgYl7Mh3&LzPrW#aHcq|!`?!}INmBjRuzbnw-MM7&4u88s6jHHX_!GbVZ%?UHr-q%2y}jq#_;LpQt^MU_;>V{9gXRN za59a4O7K$*yx}QtrY6h>uY=w-SIA103k1Y~IRw=UnlMRo#WwUJV9W%gDU7OKWpJ6y zXxLn-jg#fY`5;0ruzXy6QF@|Eqt}xYRsV@9Ay7|L!RP$Pwg4%Y&SK|F`QRO>CfOwYGuQjedqO^e(r`F&pB&Dxiq+8oSwqN4RtsMQ^|N;E_3w5v3;dRe}CWjzT#mx&`=b);4#$@y^sJoM+XYg96uz8fgp&UE=RNK={ z+>Zsw6@#dL9yglC^?JNx+^;~2=Y9j0dH`0UmFwNxqBV=Bz+yPjigmh}TQIUWVYJ{N4 zYOT=?>nbJ8(Exe2>f_Z4ML7pRn*kxw>(hvlfCa z$?gV=2LZ(}$10vaglk*!14!o$i&%vm?uo@%%x*k>uL_6pp(TQwHX!$dyu%~=;NW+t zh`yy&FtP8NuYFy2;vX-{z-vEyNMl-M?v)+YDzvzVBT3MO6_f8qDtRt&!17{bt4$0- zD(Y!AvNac7dShX1+?q1$$E**lI@^cCu{yGMImlu$NB3)i>ccV^-yk9gj;JkHhxQp= zdEMsCn{#_>)iE*fg`zK|O)zyo32HaKN_V+U(dYTK!!V64l?NduXn&)4BW#*OaV$ZI z00mpD?a7sf&nOq*fay&)pSCf#wnB&E?Jq*X>G1D(6$WTH@ow$Gb=1T-48;wRG%rk4 zEY?Jy=)elH3*xK+G9@kxG#5&m!0K7tLX~v@e6CHRF9xD_dQgMO2-rqo6ExS8itCpf z*z)Uga2Bdk=-iB0H{E<1eLeS|vSn7dVgE&i?dT_QH?T`bi8Ex8>SX}^hndUAD$ z7H&j85w4!TUHE)Agcj$F57w_2!$ru~66mD_bYXZH0Wv^dVc?OQW>zUvJ=@(?PaeFK zr4h(EMF}Cm5rCkPKoe{#P?uZm7Qb!{`So%egyyZYZO9nRClx=)3c665iwXNNs9(mo zg(Kc5V`v|+`y4WIf-RhHE<&^u5Y0shkPEt>n}+US50;9tPIY+|bs0}Nhed#5tqcm> zV7nW!{X-!e3e8NOLr4uM7l%+9pAp-l8t5lHaxE~Ao-uc~c*Ll9t2-5&T^M&Cr_trK z=9Z99H^QBw#t}pf1a=&4X^{}!=qVf!#Q-)BjC!RHwBzZ}zC0G%P{a1u!Et7)tFD{@ zXHKq0=f$}A1|K*Nq{I0-6V8M1ATqCO9tJ8t1S@ej4Xu07tBeoc=MHf!3$RTr^I

  • +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%0DMT9! z{3m8i8w*5AiN3FsJHDS7L_e0wdN4m0QZyI0`^Fe-I258ZXwJ(djYfTjZQzGT2jEzP z4WU-sTfj$Alz}s$NW17Uh9Rbr6f1 zbbsnxfsN4@X{R$}S|)w9Ut7%+lT22o7KF)IBNlg}v?=DFsgd!p<7iL*hjlyE_Q4Ft zBq9$>WwtJc8gK)E+*=UZt#+Q6#I?mLe$4-j0{Pty9E) zqdkHI*e%$nF;=OK?32+2XgA#JPsQp|nUYrDNI!BMQy^piZh**f%)mOd?>LMM#ExUnPO-`mRH)-Ps8ht2yC>KAMaZ>D zojHaG?C#ydPH{^r+E@q`BRTe*wf`$RMfj_`C+61{A!gMQ9}IVjRYu0CeN9YrHt9}$ z(E6)6K~E~h4L*3;`^XVKc-f6Tyyu&hZ!Wa(TXJh2{=y$E92f?Y&}bnWA58398}y*; z&Sfl$gqvHKIcMPY#p+Om3ns|i9Jl}zok~=w*Z5dQNgmRT(7te-N;X19ok0& zan2{veJ10b*4z54-Gh;$q@uF6Ju9DF*7^>yFmhx2!-CyRa2S6fZH)z!P{CwJsZ#IY z`JKNmR;eSS{Uz~H8*SQ0is3;;bdu*Ee8(=MeUowa zO1A%t(eUUb&!6bw&-N$pW}aGYjE{{ZX70kLOoDrE@74@SBWb9PrtS8?j3v`{iL*qS z`y4+4CxX`-m63re9;b+>E91s7)xluaE$m)v#c$^WR`+?u)}1DfY0P^rWGw4(8umqc zgY4_J-fXM&req(;$Wj;&7Z=OJNPk|58RyZTF!Ck9Q%-zB4Pf{>tKRDhs-7=~h$1)y zK;kUY9S`e`H28GiEFuj?0T!ac9!+?(Ej*8o;9&_K8Am(Y@_?A6rcQO%ysQV5wl*7^ zIZvv?DM`H>-#btTX*WK)n^e2;6>*+3Y;1dICpX*+M!3@s7j|uJn{vQ#(9BS4l9JBa zmD^CJjxFpQhMQ+|vs>)qnjhW_H;xOAOb$=~&e-5K^FZFRy(@c*&B8usvnY(=b4Wx9 z7DjvqvWHk3X|(*eJg5>xfE%i^J)=Ghn5pl7dXUvB-X^g!jz?XX6Nz&Nv6>27%O=kb zMrJgWOwQCk>``C2a%79aUV`$h2UYo`Kr|F31gS0TxP!ROlzUGLJfol|%w(tMDydyx?m?BD zSER!!3*wPz7i#U6_F3ip3+QI2)>AaI`UbSj;sd~vsFU7I!TrHz@*jjZ%`i{2&LU=5 zI%fGM=F>rMUF$6JoXWxr(S6q#CGNg!`=_$piK;@UvfPDt)P1G9&U9Zbt!N#h8g=Eb znP#cA`XoLJT0BSYW^er&v{AYH%=yoUtoTC63c4$T6)TZW93~4pD@kI@>N0qzxeuNA zJ|7n>&;^gy3U21F9UUAWu0jt%Ts%=$7sBt7De5Bn88;SoDG;MBhDUws61x6z zIy|@>Zs%S;fnQxgPv1g}do$f%N!P3Bx{j7X8zt)VI?0ZFGG* zCQMU*heDRjP}kspGt@gM>78_a7hE^0XCQs(r)mQJQP<+--FUeUFV~09-h+4V#mfzN zc^_V;&VUa;r*4G%zM01 z@FVp9t@!_ai{SDP$Y`Uw4gQC!-VQ&@cABG}fQNnRF)ZV8yxf7We+(~AQ_7S0@F~1} z96y{j^oLFA6PSD_UZw%v8`X1|JOysmUGQ*|`YZguN!^X_PgT#-Kab!mf5ywB^#5Pr zx>5ZN?}t9#2hHFo;q5+k4_raj?uDO=C)CgM&jb4Bm-^>H{quD+wXedZu6`Xo*;H3I zg2+(;Finy5pn0gT00)d}yb0b2mqsOXw}jV68>S&IhRyn6E) za0!N0w3QMU!oeuSO30CS;bmkxTN^O|2(RH9@9Th=%1(H2Xy3V{F$PjfgklOTrP%K zh*Kxjb8rj!Ox=}!wt}BNHC_L+HT@H>)4y*8A72J?NR{$cj)bym@|5OFsU1zUiM6$r z)zx$Q2P$;_Mr~yEIsL)PFw;!3(Lr|}Q(}2cN#?=2QGY}Ir3yZYcgzL2#;el0QASO% zCDhvRjGb}wEOt!e`q8m9=8#5W#)84of%*d7IP2$W?1|MZs94Wfyn2N^aG*Ah6o7^>X281->ssEt90R#~5SQyUTS0uIJmDB)dCdg-Y{_$kU3G3R)wOPaNo z)hl^Q^Ro0J%X%SDZ|RZ(=+^-f^GX!wcC0>GCx|7P8w?-X$Kf2BI1WdC5RSo@%=&wF zbX&i;1AatCX0E10(5XaPon4AlADS^baiC3W^UED_tS&R}S+}7Vn>=V}Mpk2JLIK(p zcw}e>mnM{3)C47BB81;E9b00vIhB3bn+Bq8X9 zS?37tmTvWdE$X3s*GsIbXZloi4U#_GepO#5sA}@8p`mWIWC8Qa)_D&51tg?%T{n-> z=hoIV`t#rgEu5{*Lne$-xiBP$39W(b5#xe1V$P*GwZ;74#U4}%#sdvi((%Bzcu*y1 zx(!uHS-z+p6=-p+P<9?nA#U`jWE#|EK{%P`4J|I9MK=bKG3C&lCn;v48J%y`XHa`| zw$Xb?s~yd<+&q$lNPJ+35BXSadUQ0*YNE<&N@hnGDrgVvBVgKHA$Pxrb_jN|`n;}! zbVIrCdr&3V|I1M2w{_bC9<=4(x=oYZS;Z=3>$ayn*dq|#V_Kn-ZECPf8yhGH9THmBw1XH9M49IMdf0Wz34TMYZEE8Bbv{O0d`%nIha8>Oa-{hHJ=3)NsP1|c|xULt@oCCp}R!` z7rp1D_T!Btddw)td67$@dCZw68@_(($P6P&BA4dDz9gvoW;2wjj>lr-dqSj#9WTtF z&SBzZHLwQ=dfK`T1Qh0HO-dQDeFlirQhGU*C!LG|<%Ul1ghG90$Z8p67VVzXG{YB! zgA&{8tgnoXOl(pI;EqkCUvuz|bngBYkn6r__$VRnVDCDDLNw04B@G8?@u0HGMo^4| z!@cZOKWdcjN$Wfh#|Lr4Oq$=EldB`uvC43X8n{w4wjC_LD3OXK1{~V{in+8^jF{Ym z*C)^6|AW+g#7k0Bbx#b2WO*xVPQTZgF^2J<@|&ka5u9r!@(fo~;LaWixYeg8~yO)&j3m zIjxW98dGtE7L+Otn2TLG-l#&X!fOi1Fl8xVT4+Zm2iuQcaNy1qA`EaUTT`JaamNf~ zrKB^PJv*ZXa2Q;k^@yk2#WjDt1ULq9!6^HjqZZVsm^n4rcWSOogr4>lO&{6`%iVh88tjL-sDtWK5C@|(QZLFf0l@@0#o;qbpR{hJ3N_|bZ-~#5#a05RW zBV7THS8P~UEgf45ZhIClJO1R84qb8587t<|IdHuteb^QbtHXPGiA7@+9CPgr)vIIGdfzjddwIe$H*wUQg%F62SoOz|Sl?(cZt0SxN)7nS_cJb%ASL=;_8tU(_ zLm|DTRj|ci0}4O5=g@h2=DUC0*yupDULPHUGDcR_R)@7)H&zYP>OFeQDtw@as+I@e zF4Q}Xvf{hGYGfl?onxXw+_S$XBeMd44$|suZ&GLVG9cj>xWDPOh z3DLZ<(NTLD%44KbF8423cHyZ7J3rrza9mW$wLrQUZRdQY>m#92H zuz(o+4~>V0YEs`|=5n+L<@pz|Xf{jw*A^m;Rz`h^48>X*wY#H}6L830CN&+u2$GE_ zp+}5kD?B(Ru-4^}y@w}R=|PpilNhR`o@AW|RRX&(R3$yh?5OV>NVDvYwyA`P@AjywKuU%xYn;8sWZH*4s1j(jC$H}Ipi0iGY~+)&o!}Qe z$P#L+I_*_vbxH%`^{S1Drluno$k9@8IRbgJDOLTSdGJjjPSZe1LC)_ys1kr2&&K>o z531z6N`f4=BdT%AIPS&iaVGGUJZ|-q>zpcJy8FlJ*ku1jfVjJ$NXv)3uPjhm*L} zgDQcOFjPrfkGFbIC9nuXRnke!j^fV(nYJ9^hfnyJ(FZ(8&*?0XhFs&NH)!3FO6ijx zRTW6dP$ljBe#wI>fku1s>U$nk$$6EHY*I$}f8jxvP+L3F`PEWzxdwT&DOLTaJoqLM zr)i+1@Mgwta%?StH=d38^F64N^C}5%+8g2D+k>|Jz(zCDrM+qPCGY&csF4vl9l5up z58N^FS@5O?H&!Y`IK3Xs6qxD}ki7@OS>!>Lz#kZ@qz%YxJ*W~Gg`p}b-5C@;AIdb_ zU6_}dh=)ALPSfZ1yTXQwT=-^?G{+TQCRahJu;1vxHMy{*-r^b$ss!G`(=gueL6w|W zNpGrfmEI*S4{m{v zc~mZ+_j#F)!j>;2%hw@)M60A!_%nBx<9~th4OP+(`K}&R2@J)PSNnQUCFfN(!b<6o zAL2olP{ljaA=grHxhZ*TELHs_9()ss)3ke1h;^n1RRW0R=_6KqP$lP85@NO2As_dk zEkDT8jC5&lntiqGko#rkI8veYI>OEENQFHLztz*?2V_c3IgsZp#TDmsIu#Z$&;5<@6FKw>}hbZWU#qAxX zaBGH5C08&s%l1(U*+pANDBO+3#rG=O-t5q;Y37jbo($R?9rj!YDclL=x#z{xES+mH z8@Tv9WF|jIfwYPaQXoyEgB11*SNp;K1qmVB2PkZLE914{prXpQ6fnjZo+qHbkNOlp zM&V|B5I4r;F$#xjwG8%)*C(*zcJb7IO*vK}+D};bVSO@S{oDUwB=UV;9X61kvEqfcq-bz(j{1#5tcl{2-I@#KN?l&Rc)AOR8?N1~n@a3t6__ zev7;d?dCN_ED6K1XoK^=gK>khwtddQVSKesx`~GGlvdS-vrarnF3({&Et$x8x}sR^ zj;wb%@zi0xnAjcbt!0!XF+C&j$a+^%{Ulk$tydiapVQ=5;%Kf0?A0|fbRoTKmQJcQ zScmqlH_rK_^=2~OX}zt#+B0swNwsAPmz7s8BVHyJNNyuODi%~8S@1&I5v?>*SzFcT z6G6B-?19#%(`Di4%#K+Km??H?-y$kk=1{j zgy67xOw4cf>5+Jh2kEac4m^}Wi^QO z_H9SunP9T=%+)@8Lo66a``|%Ebo}REX@Fg#9)^nO_)naG^O}c_j{p3PFBQ@8pL~{+ z57wz`I&%Eyu&cQ(;K)v`r|cxq^9sv0dANg#V4p}kXd{!a?H>wy*y6R7)zyWSb$IMB zxD^)U;-beiqW1ZqE~mm;UDr#@yia(c+XpzTBF{;o$Jxa-f4Rk++~AaBcy2-R(9okU z@eUaemBWg#Zn5F}Yit>Wk#r7`OHLMjHDnJ%1=5h*0S~GKVWx(v>6rI-RhY#rBzHb1b&FoWcnl3DG)r7hS4hvM@gglJ-M`!rOtW!tQ9nItf z%I^wQ&U1zzFNA6jeB8Gb**de9ku|AlvSh9BJ(ac~_0#%>&3S0nhHoLDRj zBs1)NZeiJKjKrz#B=A1CHSkUl69TLL#356ulc)@Gr@q1P_T$WicsI=fzVhJhKikDM zf3bz(?WFjecw)Obro#%e>vMvsCONK{xu@G(IYg)gzH%$b-UCOqwNR~V|KxME)q zs^q*PT*0Nwj1GzKFuq7JG&K#24YbknT7Lx7>>j@GXa)&f91nG91ujxsy#QI902x@w zBE}hwEFNaN4__$E^D{uPqOfdx zB4Rs{y-~JgCYyl14OSZ4K4dpqQ?% z<<2t}hGYzirI?(012V>`pg9M{KI6f4fi8RsviAV5U-O_!0A3AMQoH%F2UT)jxdz3M zXjkLkE$y?)833ZX2U^?rxr9|81L9g?)wr(>AnN1rodr>2R;VFrmC2(+5S16AA!>}0 zA|UGY7lB?8M4f?m1X1bkp9xW~oiYWEvWCBNCsamD+MHP(X^hpX^@(#Q%IX*xpJ|>& z3u4NJ!AXWv`wGjp2g&RtKHWPLpHk@|tVs@RO^+w*U?Kg8q0twkx^xeXzR)hN`Q0rC zjcS%V-F$oraoL_^YJo!!v3XY{4xJC#d*INQdr&3tr-rH)I26{b^F2kDc~F%ThawHR zaj34Y<)JfL&kP)zVr*(2GRCQ(&ohIm17S!@jv>`G9x@PU#%jpk1C?&@ph|#B4OLQ9 zdX)!Na$XTCO_MQm30MV}OX!wnTIK8tM0F3Nw&QmRo!$&&wL+)b>jt>=7Wl%#r7^42 zxO8_WgAU=fP1b-3>?M z$p((nBi8nOpXq(aXHvgy7q=zBQO$Cvx6cPhe`WKoNI3f6ki7>Sebj?0fg?3kN#W>o z9#m}(a8y^jmeG{xA|1IQSsg613+-D@v5kSSnJ{{@h}2LL_DgDL?4HB?Cf=usY2 z3GBvD^-3BFFdFcKvhGP6srEwgDN?%;^C)8y3B}>c$eGgmNr`D zYyhG*7s#qT0YTPnUfc#`rS}8KIvc*QAZyGLHDtYz$)H1!l^3ERYmAa2AnOaEwi>eT ziFX89>26X%)~dDLPGJ-6Z2tbt!m{m2P~1r%J1=u8KS@XkhLW@T)<#3-O$~3YRMuo2 zj>^?Nq>SJ`sveo!{W`qT-?8mF4Z55SZ!pt{_H?E-bU7_#?3uy6OEN`PPu zRZ;|dqX$)TUJ-&Np)xOkG`qY&w{*`c=O7@ed%#ubiwVR28&KG4*wu2s0i69Td~Ctl zm^ErRJD*9WLvWTCqTy_ek|N;jx3L~H0{b1jBRETUlM2pO*oN(eVNM2RUsG7N0A(*| zn2o4A31iDGU~EK$6T-5+=^1=wDXh`@4Kt07#|1oS7uWppmIPg6VshgFjA#s{C>@o3 z#%5uWp!EsJ-UGDGe2Lrn6)+`isLBSd6n4S1dsh#t@BO-^}ksg-yy)t3(8@6&fLd=sK zd`+H?#=vVbk+ogdqh57y=yk#_uKCj~2)`!e*xb_G=zgZ4MAtSJ!gueh@ar?9?sD7^i~fjBtI(gX;oa_#epL1HV4zL6rc%8mgrD zb!ti61WR`KGE})DTrt_@0J^1pRyl76qPhoOWj>hj>q|gpt?+Bo?*AYGw6KwiE8Qr=tIAwmozJm3t2&TMX=(T9e{SW5onSXWwrZ`ptXk)OrAej zX;kP^uQuxQYq($h{AhJ;kTQSm=-~Kp73#$JXfo-+Oz47{nElA3O!_eyQc5P1in?hQ z?YVF>{b=?N-Jp5@B+}1;sG1G*Y8N$ae5Gp?EY(?WT^}7E8-UnN%3{MVQ>I)DTR2<@ zze}d5i|A+Ei2qU`MqLb#`qU+K{o{0aa5>!0y?g?{x`Lj*1zzh@Z>IYz>3S7iH_~+z zT-EaJ;c_+HEt#s`qJNr{`c}HWjjnIUglX#UP{@)Q>KgoShI$7jy_2r*g6l^045SbJ zR87D?>RPNFL&VUAH&Pjl=37#d{b7^(1Sa2!muW!vM)e#fPk~!?7d+gg z{tEwZQg`F~Q`NKd&m;KCpYif2{r?xZZd8B6`=O8bK|}dTc)L&C16Np2c`y82JfVK3 ze;&|3ztleu>YtO*7*B*tUHv+GvZ=0a1d*cxV45QPLIYA?0S*||coV!49n5}%c^|)n zqVeUxiKR9P%^9^in8w6LqlsUJjLC$XcTA=((S$*f+K!1&p&f%b_D7x_h?i4$hRf-A zxfC1PEAWE*UMt$H9e1cyw6P^_`=e;DDqLKxXtw}d^P*^}42BXaiigFySw-OlIM}6V zj0};3LbyAweyfG~d;RlA_yM6jtbZQSKac94$Mnw=`sXS50d0F4e?ac=qn?G!#jugX zsT1lsxP^SC?n*yf!B3x>uK(GZ{)yN92vpO{Kpj%`{pi@5 z1yogY9UL8~FVIc7ev!G! z(i7#II*OKA)%MT3IXfz*46*#HYO8xoWi@W3_e zD`TtcbEBEYo)XaI|Dm?jjYC#Hw7vkjh`${?B3oomp~J=BD8*;>Bu*2R)sp^5NlbT0VJw3;ga4# zu_Utu-=}_2ie%I`kc4pfC^;ZKJ2Ea_(Rc!@(ocP=v<68WZof*e6IAJZcsJ&@o2L}q zumpT5tM!SJ_6SOfn5bK*=#z^RpKPr^30}}j6+C2o{*#=~Y7>-JNi}EVN9#79WJ#8)ZRUYAXf0?*a{yW;W*N2SYIDn%Wt%`BpZO) z^>xFw1_6=4qRT3&CNt=zAl={z{fx=|cn`S?_;D;TR*k%hx0X|n<&?qyjH**SsComG zk=YEbg%@-)WT-lQ4^9=E)zB={j~H#|deC;AleXsb>*MRzjgB??>uW1xjq}GxVS&cP zCZnNiVI$Hw$(>cKSpljIgj2QzH|@X!gG9|Be8AZAdJpypL^q}tDyi;UYdFqn3m!81 zuJE8wpzxZ$LgnO_nYs=Jt^++<7q%&_!PVjnN4-pnp_tOf<{=y0cpk zdhIamyTFY7))&N}_C#|Ad{!HT@i=Jsnp@MMgaZ=_he?b*Tptd`r_>|FxE8}c4EY6P zZDn;EW^y}R97y*Qkks0r3|$DE!Q;}1T1E3dccE?}@mHFo%<$fj9vx*C!^YaSZ-KX> zF%`f^uA|I=cIY3*gws6o1Qwuaw5rWb!+U?`@iIn!jrP5Iso zQ%RzY=E1%ssQYHKI;k&WvAQFy+nAY#YEIq#8Pqv@IRnt-H>a)JKyYAw){Kl1+h>3{ zEv3&xd2Wo5iiMa8v!lGf4Vg7(qLttt5>3<7CxBDE0NndPtue8QUVveSk%>*}fTchO z>DL^*L&Z|}uYk(zn+ALm;+`;-A;5z}c9W#%tQn7LC>usF)%_^cRL@#IfV!f)qdLz| z;)8G)6HG2?ST8)e3S*9y;S#{@l3{0w^ra`T9j%;MFEYpT5GykG$Z1%)NhQlxd_Utf zKs<4l8+24JHP(-o&{*m?2tyN+r3O5K0k%LqJ*87ds-;@Jv}$w=(oBrr{FTr`4&o$Z zb-0ehmg|RV14E_8P_;y1*!5CntU8-shue`sN*RUZG0bXUs4_Nxxcd6)aElyD_3FCH z7%aXSEUnx?pH&7LkVlXs^uS+V9m8axx;9wvnZ05N@?TjUs=U4i^um38U3H+gs-|;5 z`p%=pF$CKCvFhg``MN7_YB5k5fhtMx7BtTx&-!h7FIIyfymP3Fz-MC>Lph=@K zram`O`)>AcU!U$(Ck`sHoEUncWXTyw8>7vpJMpa`|chbS_^K5Q~Jz19<5Dadg z1KEQ!kPdE-cu*x6+%{BY4_Qw~M)OwhA`h}syJl?xO`?B^b&<zyU*@GLljJ(A} z*lr$F3FK#}k{bDb9#qMBMg7+l5i@9uHHZfCI56*)URvdx2wGeGe1jhJ#VLnoi+%)6 zMw|egX~qL;nkn6cVAaV&c-df*ul|JzgowNh{9CmktpK0+_r}Z&UlL+nl)2ix;ACp zWVW}o!t6O-IySuRS-kA{lTSKy#YtzZm{-En6M9S7F+H}V!&DRFk2>+9(h3-sJPiki zaR+nEE&hMcic^-H)VKJoljcQ(=(NzCXI&dSl*Z3{ODEO_8fVu=8W17d7&{lTJ7yJ( zeUFZ9fPhybU|@83eCUMV^Qy%z>48zIrPk=Iv-YlHnb+(v`wFuyqrJ;CsW zF&K{@t5^Fm^WM_R(a~WmX|T4s)`0I=BF!4~uNxa3sMhPFW3cU%js>Pg_RE9EMu9X7 zyB^TGm-|iKtXdf{Rvq41Rvp|0R=v>OyL2+Goo|ehV(d<8*Od>k zFYPQN7j=P=yQO!#UEygRHTx|P8VrR>@8DB5zEMG6^ z0$*R?9OiLyw2e=Qml^LdE>3ioi`R64i+cuKOc@b#^0BRth?ALbGG5-%Szg}S1zsNJ zF@WggajwjW_g*s9T}8(_$@DN$;>dFvz8vz3&lNbjhh>#x1=K&p z_RJNRt$^ANh?lQ`BCVnoP^4+J0%}hk?VHMJd*#z)np4mwfhs7QW-(?KE)h~MMorNJ z^*YbTm|BCGCD%XguZ?6JmbBDHVb#fSrLGs`k&!(}Bp_^8cqmuumCC&7$3$1tpL9zRN4JHgqcMeQ z#`hW51=+E_Dx)NalgTpB*|>U@;$&7+{Ulk${fAz}yDhAsO{|xt1+_yL(z|8}x*Enh z><=Yx)az)u7cosov>QmA^Hb*v7*DdAQF`#QcO{k}Wr~Zw+9g#tnWklBV!^yNSNxD9 z`oxkjENg%rYGE#+EZR5B(-JcxrSgh+3<_B*1*gDbPkdExzSh7!xXKF`9e-;7Y0H-` zUV&@9f@qbwp);~A*;+GgZr_;bDz$z4-kvd)H)V-5 zR_9M=lrAw?qb8Bf-$QklWD&P{bt!zFwnje9=0AgVXy4}J(n#8TrZAi~-}P(?6lsbi&&IKsZ2G*f{%Z_tCY1x^KcUpGqul9_4^Q77`h0Dq- zml6NA`$qhVV6L}R<}sn<&X-lztuuRQQs8K5@rkgj!)UZuLe!nKJ@~93YwpCN$Be1H z#cFxvvyUJxcUUnd=C|VM$U0t2{fO1@l#H@++3`}Up(G1$JAO6Rp?y0xyifFD)I-++ z291xHC6`dH?i8yGLC&>k2}+w=L69>SEInazUEe8U8{L!Zh9czJoHnn-nS~D+uioA% zUWo+@;|rWtyBqz%P7!-!_XPW)A_S|Bygq5Li8YJ=+9_5UxsqQ`A^}WuHr`Go(E6)= z+i`nLt+VpXg$NE4Yf5fde-w4|br4O2=@-&^kkSYYOzORwu!9d<8?`qq#}58vEk8?P zJpFZsbS1vdFeCy5za*YI00AaCb*g>0(MId?Oh!o_^@}>}Pg4CPS$M;NXR!|L!+|*G zlg6CMc&9P9{%XIrG?!^!R;IbE`4?iz88rQzzxYM4>oeeF5>%;juBX03&XrqxX)Ck|Y*r1RNRh+o*n$EWC~Q zU08?qjX2Kvq!DK_-f6_GzuJ9SC0$jSvSsCy%V5XF!pLo~FSEmuOJ!W8N0y5_YS9L& zdX05^gKy8Xv*cEs_5x$@*NfHm$eO=G40c#ECg!*1>Bu}@U;T*H@D~|nNsQ65=bupx zC0Tge^M7L<+PCL8@00eN$$Fg}s z{_(m_r$?-Yb2G~FsA1%y51<-KvhX(PgRliJcAaAeOq3Cj5r|4!n=uBk9BCjiHOT4*+gWD z#@R%){%YTL6rKqtE6-f*! z-af4Pg5*wUQK@FGq^yz~^+Zt=Y&s=+%uMSC@-{EeX5!zqi|g0{=f{ zL>f7ql-QZ6bKL;K#jJe$0Ba($_5j9+^!WDGvBh#xT)L^SwTEnrJ;ZnQsIOc(vc+IW zy6o#gRX!;Y4ILB0yo80$;}&|PM|I^wkZ$CAk_S~qTc{l?bD9TLIaLGa*gK{g;jYxC z@lM3MtoEp`ST!VYGg>%puxqqOcZxSwzrEj0 zZ`0mwuo>Z-U>D>!!kebb(Jsib>glyE-(qeJhN?QT3obC6*C-F`2Dn~g zoq{`1gJkO_@^lJrwTo-sHwiY2?MYYG*dDUUE<*YsR47pk3%2Mee8Fa1ksXD9gY2O} zl){kjcu*yPA%?1KgqqH1rsV(SL1sQ&l1@}^prRRKx$2BHqZyDO#TM0l$f*DlsH9G_ zbJpc2bv)xC27$Ib0oj8NTb9-0q>h;fid#S>KyijDsb%fzL6w|Wx~EN>V={w5qFr90 zTiR!pa}yBNQ9#Fnhp1S;Q09Fr&?<}wyGdvAeZ)PIs5Lo4fXs{ZiqzJHj zA}TV0)syg!z$)EMDzLho{C_fnR*E&*F!YJiuQdkYG;|WC?w1Zz69j~aCOJ5r8t=;h zYU&%T9eN$AO!v^~S$1*FPfr?jniP!Fjc+%{pjp@^Wlk{qC3olN+uUjiNd+!yEoATE z&M)<#O5n~7RZ@5URu8J=ydrnbrOV6-iFcWkEd@^9P>Kb7&49y*qTMw4_Ge8^MD9@|U17`d`Z@R%yHdYKfw^@we)xtQX7203 zc7Zm$1hV&lnTL2#C9oVrmDF-x?m?BDSFTYbBsxMk+(5deeO5W&0p08;PT{X z)nrakd9)Z*Mn!iLOzvrc$ym8g5E)-I%D`hhfq}-2s0CrCi8m=70F77J#Wg=Z89-y4 z`%Xt3-^WOf6>qS4QzTZr4zl;aiXZi$O5pJfRoPh4j*aBsRLObeLW)SVt6A@s_F3gz z3Pg1jDP}uOLWn!gOGk)t2N@v4o#0&y8O97uBg4xXt2=}Yc_A7Z#waNQ8J3{78X4}5 zcZ3Y-Zc-t`<7w}#vJ};^iNlvlzwW_8JBbE&wa_4y=){53{g7bwGP=w_E8pKiGc^3{PQsgRG}2_Rns-m)NH%&0Wv zdx*8!9fEwk5DocaloSE^u0S;*$oFQvBgjX0lM3=J;k)wX1b;6V5A^ZkI|&0{Vh#Bv z%60<61IK;rvRGrBh*_+GoX=G~KFKrkr@w-b(UrzjsAyvt@#k$CZAki7?9 z{DKEn0(WPq%7%$4n^JzqgRFdmgPMrkKv7rNa-n`eF~z3T9mpBCj^>LV{G$ik1={di z$le1eKI1`^04N%&q(E_IkGOr6bg&FnE})3XuGYO<+Gmw>EfCdFpxD}v5@g&TM3V*? zlm0RQj|af}7I=&qng);8F_w1-Jn}*`c#Kg}1b93G6_>!{k$6Yok?tlHcw8L#Z8|qO z-yHF=-p~;X?<8>C%LyE*WG8IgF3z1`(V`wtMFy83F zc7Zm$2eS77jJJDGB>;?uDk)(6j0aV6Ubz4x676c+yQO_rIVS^A9R-Z7{3pT1{{Sk| z;3D^w0a*MgylsKSn2~9)xR|lKLtv2?qQPQ}k|Mz3@30;O7JrX-1QzLTQh~+e8r6&u!71N1E)G2B%y3CUhtJ45y!0B~OqsswJ#P?Ze;Bjz&IJ;Z~wd>}9)B=^Xn zuDInQ{eWPKRjHkjJ5GHy8=)MEeVRFu&PqYfDIOvaXvY%B-UASx>p_(O5E`nayjtTy zm7G@u2)T5b(ID|128J!Q(bD>7z$26X1!A01-g=acThyB>Xl4GP__r%KXBrJT9 zHD(wu*oh9=vGQ!1nWeC{;~rFn?hP2;X&2Z0#AFySWCC!y;C%6jU$dE08qOPvxE&VWJiZ!YGkugpMojGT?va&jy10GI2 zSlnPpCQbjYl~lT^@s1u;3E-ijN(vA6@}Np!I)*BOhoNAZmEaq$*1cOgXq9t25YvBI60amNIkf^h>qxM-!a)@2o{ zNB6MfO1rq`CnpVdj0?l*o}UlvTT2&}RzMf$G}PRDqmLVGh82k?$02(UJb9G|RRX7I zsFLEzYdxsi9Pp&45I*WrUAYh}6n7DCUZ!5e7nFb6gDL@v^W@c6J*blNDqCT<=S>1@ zhJWZmUq01MP?LM$TnokmihiA<6gQz7$RcN}J9|!JbWL@n_J(SXe$k^IQV?j#!;n2R zww6V;IPB#)52^$fWvG(&i?%;R3>+kVNJAC%i{i3nR)a6Oz)QC@(JJR$AgZHXqc)Ht zb&n1L38i(9EI=4^k>Gqm1=DgkORRApmJdvN{D9#rK+l*J6L>*`uw)elFe z7?c`B#yAx;=NkW;Jh(2_p-Wlf6##$1H+YieWIGW z{manr=q1gHzlE%zyCPU|K?&&W#!=I%cq1ALy^wR`=J}RR*fPrSO%~oa2r=H_D6}RihgWFzQZCaZj+zcl+n3BYf0$-ZYrdF!o6DWi3MYVpNsmY-> zw?Z{>NVcrb020-ia7k~CEa5D{_o)#~5so?pNeCK2)t{(-Vsw-RVkOd8#a`i4u{B8O zaQhW|ouFdpCn`3B+J#Vf>$8(D&Q8|NfX1`U3Jt3kEBV3SH{eMtuS7RojnG;Gc=+jIrvf+Tesb0qWh{8vYp^ z9hgu@OrH`Uxa&jkkW!D(OfB579pqO$b_Iub7t({&D#E63!aMx;$_aH(kYs_+n0afR z*#SQby=(^fEUVjq_c7r#drkn()q6|5>o)X~uk1Y!=6KJW7k_X`b!2>P&q;7OFEFmM zZW?ErulY3DMn+Bo1p#yIW%myn1-dO zvZZLBMlFgf+H_QXPQYjIozUXAig!ZOK1JMcvxh+UQ6E+F7a0)BhLCye%Q8 ziXvH!$!3ZcldoCCn&zAzU z>$6o8FBA1zd!j;9JFvX&Tn7Xl*gY7%@j}BsZxW`@j#0*%qj&<-*XQK=nrB_@vvzUK z+c)=aA!B{mMf%~HOre|G%^4V~jKN3&#JJ^%xp>}TVlN@-n+IAzI6eT&aJ zDUZ`VLgsXXB0K4FcjGQMEYj(4XC+_JosZ}-Ybn;F$fZ31|Ix6zU0m~{o4vD*I2tr= z)>wT!04@}b)OlQOb0-|kadnym&f`kR-ow#e??IKo(Hg3xyt>7MDmkyn(Z*%Vj0Z_~ z8IR@uGCGJEZZ^eW)SI!`KohNUMj*ALZr0f%k(2!j6mL1%sPPG0>{sD6%f-ejrd{kh ztZCRfb;!l?LbQvGQBs79{V~>qTyh{CpUL5B{02$LawzG1i&ydhk2C z;CDT-vHOzwuA*+zL%cWBk7n}F4O*+mand~0YR%zI_>63Nnsg|(J~}=&0J|qq78`ca zlM@%h?~*C%BKjFOLcSDn?8We?PhCRSKf;uPx*TrJSo#(8^eymOpL#RhUrE=i=(>@v zo8YRJZx5HN;cm%P^%nipq|~?4^=)*0J0?t1e}_Vr%uv_he>2oODCwPaeHUCes%Id5 z=%;D|{!!QB<=uF>4lmb-&)$P~@5RdvczGXQrp|y5Kc{Yl`@W&w`_%j41_p5+#!CGO zFCV}Z^+CG+3tc}%*PH12VY=Q-*IVGK8Tb+U|5p6}zD02P2V}HS-3I?dRd0u%WjoDL zPr$=I^%$1%I9~3+*FT1rrzz!0eE1YzK8_#G8v4T~^$ASA6ED+%?v3g>Or8R_>MnS= zN&OZ6-=yxw_ou37>7PgNl|SRhWA4s?}O&>lkj$*x(BW>5p^&8Ts)zE zrhgvLKflyJ59*(X(d7OBm%93O^kh?==CW{33)2)?5t@nm3UDAc&Egy(!xSWNT@8IPJc)??#6`f^{2L&oR-xAM{QFQDKZV;|$S9{#~QPFm# zxYduM9fELax1wDMa3zDHr8pRurYM*aXZaM(3u2F3QAZs?fkG@Xu70Zp|9k!ONB9BV zd078EqJJLMKac63C-l!#@B^CpH2zFc&%lp*7A_aVjKZlC>N&WDe5US7KU=|1pPH`! z*_!?d+dJUkEL7>sK>De=b(JHbteQNfnc7{eSI-}>jto@K>8CvyY9p)931(J<)|rh% zW@a)a%w$S36NUu$J{Lqs;Qa=*X(t>fX{Ng;Zf7!e-WvokVtH7bHGF4F2m^Qm4uqn~<;O>6W2b;z~5wH%^9 zAXEk-KfuIFqpM_XjMGNKzP3t+;PuEfI1CD*VFl^O%;BuF`5h{nLpSn-=cR~OjUoxb zFoYGJx4XmoIS-s~vC3ZJQ(6B(%GQ-lhU}^CHE99=$|@NcxPL%|gY&wfjJ{7s4sNZ# z4_?s2#=%1-j|sUvB(a0nK=yz?tO>zhPTJI79?bF~52^&?l!hv4BYvj`Rf0y`P?ePB zUTx`sN<^_m{X1%)T4cgh;(m{6rU76UOEv?J+l?Z8hAw3BluKl7Z#F|R_Etz=KTtP- z&H~XCf2U&*C;AMWr|2~bbN)Q3wxfZT+emVBi;q_EF(}JMy! zRGkjdi?Ob5ldWLXEYpt|ZCkxm-lx3INn7*z_3?GP zFBlbtkaY}%za1`)wK1Q-5Ekk1#)aUrDfk{~*TMIvqu$}aLGV4^n~FryEHUt|?S3g{ z5RPDh=6@RKi8WdwHn4;5kFgT#vro@UbP#lPx?in`lNFds=sd= zytYECx3uvAZAYlDvQZUdn^Ac96{u9YW3BT%6CcEFGZ`LUJ-!sQZ>3<=yJU2|L~B8M zW*=Y25s{J6^`*v8t*)Pz;HEaxsE!O)2TQ9)$AWL_rRoK>dV@w$M&SKwY0>z~y}8rt zQkl%BzJ)O&_b_|N@-0&pEw%ZUqe)lacO;b6k9kUS_VUVDWo@-l9jkM7h$k?aeXv-W z{RjxsR&gU{Ore>PGegMs5GOfwTx#7mE{`_uNU_#oyh4wWl**ai$+@NZ^Gn8Gl*|{S zD^+!%5iZ;)tH(K+&0wU3d7a=PNzAunzk}$s6^eIPPf;WzkqdTv}7-3WP=Sol$!5vUercqh*SizS_;9)l3#y z*;pW%#n(vZn zZg*5<))8)_lIWbNXJpFLA>+W5(?pHwPHQGnKR>O)OwL((q3WzVu!6(YO4VfjS?yv9jmRbjZ}usyBP{$4SDERHhRoBdq{?KJlGPc z#rzg(f$7<5ag;xESQWEM%B4I97NtBMRE&o0%*TD3s$YlR81ao)PvU!F7Vq_?;+tU> z97J-r@4=yHWeXp0NCLU3&YG9iLr|-rx0*hf0^1(pOFHDXfjUhgw{+(pXG)B-k#(UQGJhOq`h`e5BCX6LFMH+d(8}EQNvTOdgc+c+oJH1i*H^ zQ5k`t+~8Ev(y^uBw&%2yUj3Sr`WBwlzx4PMPFlLS@8o$U+>y1nq|XDu*b#VLhmi37 zGSgqFtgiR3s#S*v)01(x>#P^nRxaotu8yom3ZNGbClW9Uz|V}1Rr_nuIln-^aBOM* zAqO8kPj~VAE5pP6L?!Hdv2t{D7;8E<4$&{QdVg(nWq*BOsJgZiroFNhp6Cssy1vhAOFh`hy2m0{3L7O3E=h zSvzPvvZH#U_gR1JZyv8D!CRU<0V=Jy6opcl^|Ne(_#+wpi0iGWcbYsgO=0o5CqMo9-Ya0kr~e`JnE4@ zR7W#i(h0ZlY7_(Z|Hy2t7_i+P9i)I!c0ky4{31x!eAJH^$IkTNm>@dlHITiBUs>%z zmB6nUs-!K-xCd1ND=}0h{mSg9QyfUM?4IYLA!Bc?<&*xQ$hFlKhOwbIrn-{B>*{|jrmtRsFL%_59Iv7gSPx2 zM>Eo;y=nF(2RVB+vL>Y60B3geUGS0~w}~e(VDm>09tteYwkyH-R`!10@AEmwHeo05+bD`CC1xlJm+B*xcYj zTYg}p8R^pAH2abRo0sS?H)pI}fLiRysO{ok2Cr#w!;=`ixyOT(0z17EviE>D_j^z! za0Z4dY3uQQ52^$fVW{c|ym`=r^fZO;CcJq->yA`PPkK~UASFYU6y8kll|y5JMtkz= zc^*{Bc_oH7B@eQM+S(C#qov?-5b|bIs`|Yid=rS%G*D7_v&e%g0le{S%wOw4m7G_8 z@Mh41w*2r$Gt#BKY4#i6CisJT(iQ1DuEX;R7snSl^#?HOuZsM7Bq%*DsA9CfBiur9GJd=xA>K)$aL6yKec$&m*9#qMBWqAi&%pKYUMH5b^ zM@;ws)q}SD-a#|6v)*AZ+NsX9j6GnC-R<2e`Cag;b`y3o?=k^D=RtHnXQ7G6)%$&x)TRJ$;VJ1C z9MjRhgrQ36E#`PoCGZxWyn3kzRdTDayan#<5n6@z7W9ZI|3VMi@_P%-$j*9;Ju`MS z3D{!$itX7~!F$?KB+?ik&+*`+z)PF~*?V{iWdy!$$6FZ5;JI*C*IDPXRLkut_OAb z{e)&^p?<50>q>II|$7R^gsV7W=M%{JM2!0n)C|EchF$BmNtl zS%CLuPt)kkg4oVVdNbE6F@yNN=#_8dEB_@~7 zH_P@}1=&SgXB2FU#l_Dk*xu~Ut7+zQg4<`%=I|)FPAb?2$}8-og54oA`AG$&RdiAT zX&RkWuxGgG3>-n35VCzj!4|n;o3J={}QgLbbRnCm+jsSXpg9+n*K`9DVWlVlN} zSrYB}zaHxl+w-6MEYrqBd;Z5cpWO35lkp_0w2k0ff3-`hZn8EtD-#Q1N_PA|Q!EL? zvS=sx*HRYk@A!Wh-zp;AM8kJVt7^kp2LUAahhQq5Ok_O$7-~jwek!uwk7|abTQ4TM zN-frU@6RYnVtPj4k@bFo>Le~D_Dp2tvAm3r1fSp-f6w9zuGfy zy-BrY3YV2vE+f80ERftrd}OqwIWpi^;#S?I5jehx&bq=^VBc*z$f32%jjx4fMjTII z{CozLqZ0=F1o6}1elgKiYOw~q!*TACB-Upc@V1b#ute9{C)sL;D6D=X}zjGa2tR=+_Mq;b(M$<;!2*QLKVT2K-jy zqQihOu>b>(2T+ps*>RG$WRxVaKFcHDMD>$o;cdXTVjbEy;5g@#2As)wrvbPA>IH6P zWk#EoQ!b;uS}cy-MtgKT_&PG%#dtUkj$7&EzylAD*6XEJ<0At&%$s4te$n2)C|1oQ zGyYHFtHX>ju{&n`myD7mHfWjgBUC?07T#w3IM$(kGmdjUX~vn1cbakQul8?Gd6`LP z<(kW+eI2j?>IZ6`DC&waVu1SMK+SQi=o{*bYAKpPYD8$OR}CACcnUOg_O zERPySgJMTh4JBE4oBk`X4(*$MocBr7&t$#R^jm**Tu%K)t-N;H6gbid{w|&<>shj_ za&t8f`-p{?yKz{^0w>d21~?SnjGDn{+VJq``Z~1;i%&VBq)(p9Xa*9Ym#hs)q_GBI zyjb&y8i4bO!w%1niQQ@duFfb+V!f8{zlv%o$-=tg0&7$Qfn*TCU({<+)%(p zl_09yP?f#r%^vsL&4a3Ziy4T9tQBt<#}YfHkAi!Rzlx$+baf^E%CfuYz}*zPQ%|50 zITci|whdbw>AIK0J-9B=g@Yk`=#yGo&m7C6`{Cd}hEGoLph{pjhAJtqmU~bo=aueN z+iR$iXcvI*miAfYJOH}c=}3DrJ9XC*IC4tlfbWJc)Ch2`+2Xw7giF3^LfwO(j>4zL z+N1FOm@#Tk`AgQsgRZ;6_tg!vbT|7(_&s+*wT>XW7pWk3%nQ*`o-sjG zUl^MjdcO{#*J`52Um(h4@b%0BGwxwDcM`uI)B?ZO`)i{s`}M#_&_LS&HZiu*_PED; zP_H7zVCvw29eE(^wRUmMpKVzXmdncx5#oCh$U*EKHX}nbcF0W$obj!YJv5tAXMCRr zRRU*hsLBShDP!MX_aG}Difz4dLt8LbSJ-m!8D1&_#-`Yw`UrBysiS<&XIZQczwzL^ zKph^0>^*So;~rEAOvg|qHJxe4iyLAk=anAV)Ju68xJRm8exO_WXO(je5YEAzyJ zWJ@5mmPj_?n*%7jH+*YB*_c6Ul=)63m<~Z%UWkUWF-nSnvWK946O=s^?+D7$-K2uD zL-x#efuNJ2*>eiaxF<<=Cjo6wHlVdg35QAgp_4NA@(G;vd=qp_n)aMMgSB=tYtfdV znspD^o@^J_{KXc9Y;D0gfddOkkb~RT*}Nn=BLg?&bW0nzU`G9+g|U%c7ZlbK=vNk_7)GS1lZP4CB?S)cu*zhl^&zD zcP>MsU5=nz+Gmw>0ua?jXe;)~gl>NTM7Bh?wi^xr?hoN}3*g3#QUlx*nRq$`aCspb z;KnE^0^t4%>p=kb*LX(&m+mGNz+D+%LQx$WkVQ9bcc~^OYO6?{BiIST|}+|$4i*?3gB5w%o=ya z0a|@Cd}yK7m?3Jk`Xuv_9YU+T5RF!2loWwhuSL}&wEAwmBeY6)lM1b#LtAc?3xtyl zr!Frr;~pfnlL&R6Y=lb1JF)5Xc(PuspdYdJ=o6?a-5XN9-7c>A?^_fe)m(Qv`uJ95 z@=?_LZT1y8iu!rT-UEq#--9ZFM>SNnK%%fW9*=E&z=NusNEB(v9p|d6Yx!tDB${Gx z>T}2#r-D9zPQ7~mcy(l;8ZJAS6U8V=!PehAgdk9jry+X}U^;uDxY3hz=nPd-UhUyQ zm7G@uOjCu-`~ud&eVbhptYHWHd z6GMlvDKA80(-K4*6R{~3@5ZL_WP?rV z5o?1gs4CsVrsvwlZDH6{bKU9s^I_A5&AuYB={m^X1Dn3lgDQbjHB?El=`|iyZ4TH} zSJ(2(e%Lg{-qa{E#;Kq=M@c{K!F7Qy+y>cufYHx-P$d{8HB?E#=r=v6lJm+nN{U3g zTK;ZnpH`wBybz5(W0Vwu zKA*vQ5c>Qp-VyqwyGeyUSH`y~?i2&J=}vTfu}W8NfGJ^9#m}( z2vt|t^4)$2HO1=G-pClIg62f1=Xr2lpbO_f_8tgz#DgjULN!!L5$Z)ARLObeLa0b| zhY@N^?X$FeHW1ZCgeq{ngj3%OT61qV;&z#?Ic2NF_A#UJF)5Xc(NHQrAG{pew8Ud z>18WylLwD}$u4dS8!OdZcRKnPT%vnma0+L=Q5k8}dscuFt=O2q-rrv z?d3DpKed_KN`{hY$sa-X9{BV(9#jeZtf49!pUw)I%as0c57P31)IFS1&pq$28DaT! zKjfNXpX!ImEvG`KP6>yNk`$ah?<6-oa&(U+OW${Z>^*>N$%85ZkTq0EdDY`VmB7FZ zRc+4un*$_IxMU--$wUSO)}wNDFH)dx7uWo+Eh>sNDKaN)$TuQ;wav&P5$~0dy$9mG z-h(QELpD@pBVOVw)A3t8sLBU+iH6*`R#(^Z>3+C2#q!jfkugpM%{e0b6%Vcpbm5DT zy$6u}fd^FrAZw_S0@+`BP$lP;YeW`_cKLvAX`fZj2oTjpyB(}t`N$(q= z+2`P63(dw1Qlr^*Of(%rv%C@hYQ zi$t(5gX}#J?5jMe5_n=ml@!6A;X&2rfM9iXE#K~kU{mZ)9f^!_Drimw`+5(q3v^)& zviCr+S9nk*K(K}?DS~~c2UT)jxezQ8?eYNK(mt!45)joz1S@jDgkSFj0$bu&?so(9 zdKY|Zq1Tu(YV`X5vG?Y2b`@p*a1yeR1Ox;mh~Q<-O-wqn8EKO!t6-o(2m&HDo$j0T zt#rDZzPEuu*hYjzE{fU;vWS4Vps2Vn9FfGDoK&+}BBQ|CE# z>fHO(xwq5F=huInd-^POo_dygzV*~oRR=M#bO^ojk7)Foprjq>^-EX}La$%OGeWO) z)*1BbXi`plX@p=mVz}-_jwz`3a>)ExD@v(jw z7pEdN?WK3;xEy|0Pg9%eXWS^jRX~io0xtEaE9v;?Ot^3joSH>sucfOuz+*k?^>lt6 z9j~Y37CLT)qdH?(IJ^PQR!>(q=${7Ny^)S@q~n|L#tij0_{i#6>L&bemU=VYdJ7%j z3db$#PjG+m`)UIIQE$V;+wpKS9&U-Ry#vo~#lvlQxE&AEXTgh~S9id9&)_~i>YZ>h zxLN%MEA?AE+=+M8yXbfq9q*>&J#>6G9q*;%d*G-U_+I+|efa-pPlm(ap`b15KKLK1 z`T_VkZTE%hDY)39p2Tnb9uFVH$M46(({$$#c=3;T_z=Fh^Wd+yst@DskKkbj(7i=H zgSV%_sd@k|ZdHGV|F^1-;`7thU+AC5@R8r);c@!^2{>+1f5r2`5A{G(`7wC9M|~WQ zuoKHC;pd78^#lF$BmMJZ{qugiZT^( zkXF&yE(X06MQRZ|C`7#D>K9s^ztTUC!VgI4H~Qx>{qwl~c~bv8rGNeiKcH_<;}6gQ zKk6@VxB^mV&YV!sz$uh7eQ)~N34VIiO#RPn`X^cUKkfuCUkx(N)R^l%H_EEP?=)VV zHA+{nTv~rkFZrG7x@vzPZf5_QXv4;+)s3{15TLi1X{lnSrHf&4gI!(@Jf>>S#xv%4 zB<-|Od~92_?#y)yZd|ZzaAad;+1U8-aAj;6?BBg%88O2g2S)m9%XD+EucX`(GAUKL zsBT@bH@MMVa4_nolRaWe88-8U+^03>REA+A%t~$I0%$mHhXNbRwfB2T$tOV%aTARf z={J{3U(DJiGlQ{l%%J@hUjd`6jWuh4^T#77ik0&OfE|E1N@dbn+>l*ZH`rbD6yYmf zUNSO+dbx~heLK;u-mjJ+eQ#ZLeRs)Z^C1+oASzE=y+s~RB`zt|Mu)2PmAC-hlG5VE z8!qV^TVGog<^PpcdjHEK&R=mbey_WTN~}`uXLB!c=@V=r+}NS&HWqj;gzC?iGEdL)0HsoeQ4=VO)gXh~U}3sq3( z!6AFwJV(&0@p;|RTxoz4;ctE#lhN^QGaH`nwlV+K|#5nfb z0NQT$($?6sHa8z(h;An+9^6q{-Dm4=2d6E%$mrWUfIfl3Yx>$Mr?A4*&9K*Vq(`H1 zo6;Oqy#wA$fGTgGF)tpGbPF%;)d7WC6gh#O=Q8Ym;vm4Xx<5`b(U=9^r8+R7Hh{@B zW|JT4pHLXwGA;Nm@qX4B^@_o`!@#4VyeLLmR`+2cAAo}gl7AR($^FgX<-j@IVw|W~ zG=O&;>K<0+IK|gfxrEch+QE$8Z z!ps1Gkw=#am0TDZlId~JF~x9Ge|e56rLj!og`p&<&(32Csa}bnHNkHRFU~PkbL!5@ zq0Zy!%c>t-g5KeL=h00|iDRCzH6ymq0C8GMr^EN8<3&l8CM*>JtqY(q3$&t9J_1CQ zOCjFUU#(AUr3WC~GCZ+W9d;_vLHe~2&rq?{m)AgL4$eYlDRECE0TB%a?2r)zEhp4k zS@gwl=lvKjM((H)R4v`@)@7c67vjh?SZLY~*B@KLmaaq^6$d6uMh^ON*SuqE7&#dp zxujGdtk(3^5}Z_r>y_bw%0Ow|$XN7FtyHC%$%ASLt8$XZqD zuXjakE34mgLK{&ehWVlBBID_M+RM`?W1ij(1p^Do1I{Rwx%0!Dwn5@Hn0C#U>+`{N zB$TevG~&Rj-}Gt5m(S%;=yA_^0jqiF^+?w~O?;6Qk@URU`OgQ(obt075fAlwtiz%3 zS@jSF01nwqRUU>& z!@23+nwQnLp;l2JHao~N_)B_7XR7w1PE*n@orPzrQkoDsBFe8|2}9~8NRvr`9gBiO z^KK~pak~?b;?Pn9DnSZQ%>($Qo{8qx=WC7P}*F=WFukH?@O3tf%WzEQZ{73*}f6Y_xAy` z6^AjJkv{FsvM)J|Ik0KWG-^g&K$BiDk3pOCO$KsyT`lhp2&{E36dwR`_6wj&;1Uc~ z(l%sK0969JFjRE}wjiVpxb z_XkiVa07-aX}j^c0ICGGV5sT{u=!R1=~=2gnZV{7T6d&U`rm-63Z!JHk^-B@0;m#b zbRe((7C@DpS7Kl@|Fn+7@Qwf*Ed`%zkT;uB)ju?VZvt_e21*KSjtrnm0Biyq^J4?3 zlJhDI*qk0fTXA5c8R^sBEN>71Y;tq$Bg~QkZ0vi{Lk8F+ZZKdo7{Eh;g$_XR0l?h&USC!tE>ztJLYcy5++u#31QCZ_3iEH1(V z;)Nps3AVn7+cNJWZhE2{+bBB}b(a`EsHB_wR!fhwxg``!c7j8RR>*x3wZF6FlWW#0HFmUc!&aDbwUE2KG>Nz*#m8Z`$U7TUpvE z+66<>%cfEKDRXx2%%3mhd?~=5?eb^;NcEExk&I-BmOuLv)*-R{8TVnPrLl{wCpn*9 z{w$aAB&)2&kD9-=SEg>VmNl;s2XsmnKf6aP3BxkGuF<=wh}IWBJCf(|XPapJOle(p zC~r-)bn-q^>GVy;(?6nS#BP<_kwi5OL#*{asTq=Oy?E32)%IHNE~opy6i`2Fy>p>p zArejQ&+r}KK-MC`S&J7w3+vFj^(Hx=w%%OEd#$(mTl*!gH?6iz;quBVWW>KCg$s~r zxDj_J(oL-epH!_34U~pqL04J@n4ZCvfoWO0=3bX&sxm`ncNkNTZ?BeHD}E_yxyJ|N z&B?Lib925FAaQHOXH)$oMI?Q&l34Mpu@0?Uagy_CE6!!S*NU6Jb!cm<%TzC~)I#>W zLM)oXPIHp5Nr9`9H+I*5X7!QBgUgfsN`#s{J$9VB( z8;lnRzgZjQ4$1#6=SvdHbBy;lR6j`(!N&Up)}eLdO>#bMyt$0`8gKKr_VKAIQ?|Tv z3K{Ho#KQ0xYycH@ncq7?@w{E;7b9*#acH~D@77Q%>@vSRtjW9B>ZXpYZM&XzOtSWs zA*93iIEij-a5Ley)ZcnEk)GiZhbs1js_7^?CUqTI0g<^Za)@->*B&)wCO zXvoXnI|l+Z5ui8Bt_($}( zaDoyqY%S}7zqv68^Xz&E`!xIv>#^oEKn_30Guo$t&f2k01L3gA*r#Eg?S+@hZAP06 z%D%eIg?CxPJBef$H$$=sGJHVxZ6BWo`xnDsBN^IYfHrx9;n`=HweaqZ2NV^-vwv|v z*ZA)p5YHy1=0yt>p^1g+xaDph&zauMCs;iDm3|lGk(>n1J`0KufU~6lsswJ?P}Ky^ zI+Ibl0;nnoXPZq%X$j8i>N<`-Cp#hs&Su!2+7%h&RnUTP_S68b3v}URC_VtrzB+&^ z0h~2dN#X2Z09A5c`QR)P-C;P}RQnt){{#4nNrkf_UrcEBI^bIiXg2A6BQSeCyy}42 zggI(3`!w^H9RjobBO1&mC}{_ny%`mZ!0at}MqrlCwkt4uA*F?M6vnP;H;hG+I|*P9 zX$D}4fEeZULMSw`8(d>%^0po!)0Y@ZeE^k4mgiOkrQYv;uJOGc5T$C~d)ED94|n_yEAV%bDWFPtwsdR7nBra|5W7^NIkgN6gGa zU@d$eVzTtp`Of=*s7XbzEjnYut}g}wwt!u=H;z#2G4PUuS`$X9QR{t77#%{b{39B* zCManKYCQ#YoKWj4@QhF^oo!#JRnH=7Gq7aA*S4cpBzc>nRwBTUT9da8YNbo8P3lLb znLO0m>wa#BM6H_lUQkdBwO;Hpv7M-O42lmxt=9%nC2+QeDk*AxO8`|<0k!JtI^H@A zwPskIx(FHLRnUS_)sF;lU7!megyI80>OTcgC5WmTs-z(G-vX$T^U4=hMWTJ}|72;O z^PN`%QBw<(>h_#4>92vfRxl~O5@FIu;Ux!?CQMLc($_FybO@93k7!Jqprjp`^e$R>mpiFBvjaF>1N;>{uc3Im_qy zLh%8hb~J!00jM=pNqKc;09A5cwH$fHT67rYHq}qZ4t4>erWVT89)eKr?Lb^BD3@M| zQ0^V@l7n&+MygTnvzRbCgmU>uG|Ej-(hih+Kh}d#?uYP~mEAHoZ$eh=t zu)M&bSakLWE-RZ!PBIkwT_`>P^Zqh`DuF{bROMq{;w#hgKLk)!4DJ#Qg>wpYbsdi$ zhHNuzPd$u`@hWJ+=3t&%dpf-8VAzB?Y7F~D)^K$Q!}5=444a^& z9T>J36^t^-46EYx;CeCY-r1P#YulWp(8Y=GB$n-3lfUjlniMadO)vP! zFm3uK^Z1)k%_cA3VBGy&<9~O+EZLL}`JqEGY};_z*-mV`1&R;AwzmdQCGgRPDk-*o zUjS880o&^8I$l2v+h*9Gx*i$RDQx?-0Imyk;mc5b0Ji;30968PYp9Z9+eZSZlJm-k zZINi7CzvelbG|bQL`^ET6}x1@x6{sU3E!qYafETF!|M*lO_-&|xMNH}9m2T$BO2o- zC}{`A-2-Z?G48YRj4&>pbq3=)I+fFM8X?#<8~DyJnjLm6|LJ~q=!Ifu(KG}9dJVXm ztY*dYV^+{vJ6JLI&h2_uz%ju#BA1^0bcC2K|=~MUYJZ;(q6Y5_2(Lxx!O>6yZtOWbZE0 zJk|{1g50xfBjaQJFoI4+Y}#wuv@0gc>T>v9Jxy(*@SDI$lr5Ep*%pM|H-oaCifpt)8xK&_4~jdm|m+NXIwfjT!21 z@R8NC)J^!`EcIr(^%gq56^>ifpWy!B_tgaaquz#xx8vbvJlqmrdk3D~iig|qa62BR z&w>{}ukL{Jp22;3)H~q>wn_L6R_eESxD)TFchT`KI^Ipkd+7LXI^Iji_rOsz@V)f^ z`|$tIo(zY-LqS{Aeege2^#ky8+U^V0Q*g0IJ&E7=Jsv)YkKd1nr|Hfg@Zulw@F9G0 z=fPiZRUgLNAHl;6pnHpY25(P;Q}qB`+^YTz|8G?v#pkE1ztBIA;UmAp!{hY-6L8$3 z{)*>=AL@bT@?-FHkNP+qLDfD9KUYksALySS>7O6#pGWjh8BOv~IMmcn?Uk)Hbq9zX z)due=vNALy^;O_NVw$4egCezN3_cwBw9I{A8ndc3FpY^VMiak+tVKg^e02NkDoq$@ zsjZo~67Sh7$+=^y_v%N4GQBejh4%jLh=fx11 zqR1Hn28AehT>U}|?N|EeQTPG5|3?2jrhgvSKTqnPr}WPs;Rm$pY5bX{{scejFL1a5 zrr(`8p`L+LC};ZK^s^KE^r)HopV{;es~xK2)gZY{y|~_UqpTYIPGh+*#_^io+W5we zePh+jXb+^8~x*O}f64<$M^2qN;U`)nM)0$cLz#PWH$s zWxLGbaktf&QyGR;GAp%-3!rVd9SUr`NISTflzigje2-|GXdJCyTq=BTaC1+6qR;rx zfAexR4iU7!+ACn7wQ(kfwa!ZFrn73|E$v7BAj#N#EG|+9I1D zm|hI?i1Sw*jDW1Ww2&mRaMhC1ih)Y4zqeLh-&-5)>#uZ|;zvpgSFM7kPVWp@)&t}Q z(XtldjjrKZ?nyhrZ_g>r*SrWi!APqYwP$+coYisO;L_UoMkif#wvvo)>c)l;8lU0y zxX5|CEX4+ePEF-cNE_QoiL?%h-)7qO0hj5qws{n!tj>iBsPo`ZX-&qf@%fw4HD$&o+5*x$*w5AlL=R|HjV>~gJSZ255^SseO(;GqrrBg|xBm{HN)XdDR7sojM+2x5 zH0Oq@v@8#3O$q!Pk5Q1cSt(2@{uWTtELhz7>c^+Gshu~5k&}ee=#qVEBC+OjkHPtN zz2!fVetVi~xuK+kT0AJlF}mZ+FOJ*!uM<^Hvog;jtf*xutF*e!qKBgU1}N!kOh*oS zmAvaDXgCgl;-TS??tK5k0ICE#-y5pJ_LyH4KwI%W<~7NkRji#OxE`rZ*%91~#fzhx zTBq;=Q>b$S*dq|#Sz4je>ONcdGdOM0MMhsGfIfl3Yx>$Mr?A4*&8s2IXj;0_xJ_ve zrrrVXCBT$7W|$Xuz)dFW(DAF(CmPFpb>yHH1xTRdy$pMs7>i$qT|ZyQVHT899hgv` zgLben8~%YV#e_N<0$8S6w*aYLNE{<@hkvh!@}g*GS>1<)d;ks}9R6XrCH6LhmjmA( zz><-8MI&-=LCwQ|uQLmQRfkUnAzJm(&#cVkqaX;G9BzWrWkJMH|H2q8pSkT7)pZr>^xQ{br*hC_y2VZ zG{;cQskKUV(2rTH4CeJ{b5!+{gI4z|+;d|17pQJ`JjCDU0)|i7f zgi|XUCcr^xsB$TUSNf~%;msV?aimd4UTu&ZfdthX<+9)RL zqs+B_jj^I|7(QnD4j91l=*~C6VwCZLxlvXR^E-`sXY`H1TB-HQSdFVh@&*&z z58ErY@1WPCIMw&DV6qzP)UY@3GfuLt<>=h(>X%#J()?H*GAWhwyW6xEqj4N1^UBCt zRq4;$iZP13F!vK(WGwwdds%9?V0;1!1`bjzU`DCTeIDMlO%b=hv`4l~pAQ}*p>vI9 zAqH0aW)Cy2%shDJ@JYp331X0pipxC5ATpnlRpQjH%Y4Gj>d-2wgo zw33f|S_22>K9AxWrKL+t=L}Z+2lWV4sXkH~uT^q(R&6yza(sK$)*ACmNo}<;XNel` zd+nJ-y=PX1nVj>=C?w|zy)Qqp=fpFQU31FmJxfYBXRo^i z`2?lSB}^@WhjoStpVgH4$S5GY>ZO^tDEdeXTV&qWUG`1A{wM0y`cNh3zTH5p8~gHU z>hZRYllJNj;WM6^^xT<$L0gO?8oV_T?*;npoWguwQZU$xw949FXS~gBl=@Yd*2aT7 zOzw;sQ?*GVQz?VyXD;jG_`OF>ie%7aNLu|AN$_USH0$Vw_llnksd{)eP4lX!vT4p; z4o&<2YrBKm?kEE1<_0a&9F06)j`Oo+qz64`Vj0nG-B;0<7>J*HuD?0=n3g2tVHOk* z5h>}ikNX5rB}ff2R7q2V4h^76;H?Z*X*up3X+bQ@{E5W&c_!%P0mK(e_X%4Va(C$P zNh;Mo-IQvNiO zoXZ31P&}hYGhEU=cc80H6`KxKfL1u2fx3^U-xRUQ%^RCZYmzfGqc1UzO$2aEkVJEn zu8q{E+#Nubz^53hq^-$E0;m#Lh@mR&Q|8&evK4l|TXEN3`*Hy3#XL&Wwbz_pQ(&#< zLGb|{=M4c=30#7qO4^2O3ZP107lx{ifSelwNY7Ghmccm-VrDjjbMSKJGm3+p>$UDk zrF3UNRRvNqR7pY3{Q*=7G&+!1p9`Q$&MPs<`9=U)LT&8`$k9^pxe0l*DOLTS1n^BD zPSZe1LC)g=R0%*%U}OGF09A5cg@K%1Uo8ju#X*i{q)&UZ>`M-E_Vtca`@zj@{Z90N zhKA8a24)Tm;G4iI4}#(Yz|2trR0*1XLzT3xI4*!Hf&Lq+Is#_a1dyJkzLN=N&d|Ce zmC|59RRvNqR7t_i#Q{_aG&+!1*9K4}=am@Dyd{7vp|*Ae%xEe2+=0B=l&by*1NbHo zr)i+1VCJ&{R0+ULU}OF-0aVF(6$WO$8$ereFryji)7~uml7pH3b2IBAyy8Y{lG`n? zNKNtv12&HZ@K9i(k3#VQz~*lOR0-UGp-S3r%s*cao&~mGsOku?**}2vELEONV6!jK z47wwg(%}JB6-dcYB?UGw4WLS((Sf`=Er2RHuf)LS`~b3q+S(Cdqov?;4f1AFs`}#r zd=rS%G*D7t^SS`41i&V+F@JLaRdQa10h>DmXe$nEG$Vc5n`K{eU}L87`{xAsvCXb* zIzjZDj@hK{F@*E!0A>nI_2W={0K)lN0968iV5pKdAm0g~N?;U*s*WI>p9hehrPGs% za30aRBbCyh1F9;JlA%h9aCUx;932ZZI*?b-37|^OD>1@3B!DcTwsr*JXes!7guL05 zs{X0~z6r!>8Yn5kIW>SP0m2Dv%wHWqm7G^$2xl;Ww&Dm!Gt#HMS@tDII0xjuQZ1bi7ssx_EP$g|T?g*etU=D_=j$oS)2aukn z&6A03KA?3+Dy6RkR8=4)LzNWU{6_#)0*wyj)&B%gCFhkG+x#YgETOh`1lwpS_`HL> z*_5jOoD1XtS|Co-KuNL9-T_nzuuWiNesBO)a$bdDo5KTWD~@e6BYoPNWnXe^vw!Y- z3=wE?q0Kz|Ui6SgHpv?d*t{ZuhXM;d35pK@Hs=OVC2#|VDrvj1E`Tb5Ef}gCU}M+g zh-6y!uaZae33q~5c+UN$0id%jkV`~_ya8x$Xa zb`A`nO5hs|Rno>}SpZc612I&kB|NVkXy@1f(zEn?GSSXTtvgaFogGkBfs_nYQnb?_ zK$SqF19^2(09A5ciP6qg0b~iawIgUpOTp(aup zP>Z%a(u-rZw(-#)a_lM{Kx&lTjgRs_?QD27trx1F-0)~uv%bGs(31i28TfF_E53HC zXF;_>+aCQLcp=<*fo3tsdQM+auB{+V+SvjkZ17Pj7pa$!T}HqaAgP zS8YD1uCgU^lY2VQ_ALjXRwXw*dXkv{m}Gj>qocHPj*s=#t0Ti^KcjUcV>w$P)#8=; zb)Pe=2xbk3%B>-9!x6h7(T=S#j&!%lwnW|S6`tLeXgL;4dTm_|h8H@yEzv=^tX`=M zi?Y$qLucTBW`7E^t5>Z3W%YZ$KT@N$HTlkNFTd=56t9GWfju+=;_NwuH+>E#?F{XD z`{_N0Xhjs}`1<}RJMu6&y?0xhw`=* zO0OryR62c=@$_!g3>k3C({5|M@6-&*wqCsH`)Yfw_ft7vl9-+mxV7GoQ~e}GB&}Cn z1+Qlz%&fh?K7(~=-FlOpPg`#;6*A)6!~!X7#7F35P!h&V zTYk`{na~Fqs3Hi39iY}%hASG8=6Ks^`4ncm(M86>-=aQr!e)O>EcAF>yy^RDdu?{7 z3;kb`7@T9X)1Y8suQ9P-pU7rsVI5kx*(B%FHk-?Mugx}p>!355Yb(>cydn#k?k^_a zbeG$O0<8I-RILmRl!jp&Q!-(E1a{A%-Q1d^<>X2M%!ZRU7(ct)tLN7DzKHbPW5;-N za_so@oG%r!<5Q`Ak|KhA?<=tmt=n;u^JzQIWxUspo4<8%D{9LWFR#o(hJ2)0Fok{a zN;bRIYs==T*3CIJGnQF&>K^0mb?sGpYt;Why!9A0-kcnxzAfiV5{q=4^DR_ANfE(D zeFxT|b)!ylK5f*wjQ1LK^S2I58MRM;neOEkTga}j63eErT_2N})#bHndZu-oX7jp6WJMq+G&vN3W6wXO`bmliw&!1A9a^{NBrkd!@VYcA8gyh00E^EbtkDQwLzuoD?dWk?C5X!L1)msU59Z!GC8C`%*jXp|Sx1SFQocO ziU_veqp=RHTW^x{Y3t2pyw`f0zqOA~RhhEol~c%I_Yn)Du))5}$;{2Q+rdgn?vhYgR(yC#`H&p zQeiiy=a~dN9ZB8Pk=@t_u)#D)rmWL|FlN|g0*AFO3OMR+T=gVwPi=k7hoQKxdx9?ODkR+ z^=|=G2@-Khs4qfg|0KMF6Xe&AZ;fP9}l!5s4S z6YAsm<^a5DjNK;ICu~t0?8B@r1y%PY)~nmVu_6Mv1AZ@?&!yvebbK`(&!^*S@Mw7T zG6WGep@Zlr=!My$vGeN?aNUs6({C%tWcanWtwj?a(SZkpy*mkGUzl$a8N|dOD2-+_ zVjK+AX544k_Km1;R%4i+cpQHbZ2JcHbB+Jq5wR`TB|m~F2669l*%@28M|w)&s_%f} zp;eW->JJA{C2-Y-Dk;SMd;nEb0pjZFI?g}Gh2=op4Es~JBV#%Raeo-Vb%8E?4~h?f zxW5XZN?}iS~Jd$Ue9FIA;8N&q5*G$l6C;z!=Sbr@GitN0=#s#T>;+LQi5j(W3*?s7vmzi zorJXqH-WYEeJ_%onY^vX&h#aQS6_zuGI@A)h5Nb2cXl+qN{oNov}v&AH~jgbKys2> z*$pc-3CEu0va+36^>ipc0IT)|P$lrWhN>o56=qfP5Zp)rRRyss(vY_*V@u&!U0uhE zhhfzW+fzNr7%x`cYhfJ*z~yb|BX8V?8KD`(JoQh?UN^FT|>6@wXLLvZ!pE5i63rEfFhy-;Y?6 zw+&*YOROz=f>{7hA@RiMibPm{>wa#>L#&$dUK~&isLmSjI}eY*Btg~bP<#MT-7|nH zfrB+vNrCEt0aQ%|psK6uxacsTnqhKk8ZySKpat^=UK+r4fiAoRiVpy$rv*?Y0H%g2 zDKI@hfGRn!d_h$ty2C)UsrETq{wr`1QwfOb)|`OoCg4{KK$PByfaqoLjsrv!_NRg9 zqs%XM2#E5JXds%Pq#Z!?4X9BBL~p<|0-|)bT>;SxqXjQI2SwMkwdgKQa3{g&p-sZ4 zh5|1fjh6Ue3;@LH5EXquCC**!$4_<(W#FjW4sDl5R^V1z;%Hx{052-0Hx0aP$dAR zhAJs2-L)cafR&tAK2VB8`0;c>U8ki<1X$LS}fjUjVbS0htpn;qa~a=IJkd)d+{lw zyOS_=NfVgL3Gt%U)Y3N$w5IMc?D{HHuF1o$XS$zj{P&KAT~i|SB7|ZPw(7F7oe;JH z#RovxO9H48xMD+<6vDnffU2ngVRdyK=N<-OGi*-{AY;4=S`fnC6To$WF5C&l2SC^d z0;m!|SVNT*!hRuuDmkxw5EhB{d4b8&KIc290a23)VTGQUknDd0jm?p4$^l1!_DArt z185T#sR8ZjOg0??wEQC)&?YEp2cZ2e)`I};V|Ye@md>^-K>J!)0ANF@gE+R$L;gr^ zC*foB!ubgl>|tx}VF}b^_LYp!fj5x+s7uf#Wq)SNtDPMn7lF#W5{eJNwfzB9 z32?2UO3JH?0;rPnig0a)h?zNI4LS^Ro9d;b|IYvxnoN+}n!hG&`zGL5b8M?!cm!#0 zf_EH9o3Km`X{R$ubO_S&k7!7nprjp;_FY&Hg0y$x89`b)+pZw(0A=}iJV4v#6|yYR zorJf|R>(?F;RU(LeFj)uHhF`!RG($`L8{vfDHQ>{pL9RB7>vy@JoPWg7_WjB zjL6Pe?}tF1p0s43d?zSA0J-iRK$QTw8mgqo_22-i1a@Pn@Y-gJO#!WK1f{TOStIs{z#M>KFvP|^-ayLg>_zAi|$HL-AU-Wcunr=wTuiec4hl-F!0LmFxNhWDm8g2 z1%vMA8b938QVNnf<3|U@;OkW`BijjIFNfj-;OmV6R0-U$p-Kv0ZwsJmD!^A=UB|J9 z!PgASQi_Ukz1K`1)`FRdQbW;42dC^8u5kea?6K zfvCxZuObgj`1MJkusMEZt~Ua(zlT>H0GqHz4PYxwE*%1}{39B`CManKfSoxA`b7YC z7M>A+rL*k{zz)VcGWX&XyiTSSyr#_!m zn+(q$fEqS=c=oyO=NdoS;qYuqYF@-p4ALI%^0J+fb}1Ae0BK(uK$XBX8>*y`_Ot-1 zrUInZ)peYG7^KZGKD7iH<5kdt5!np^To>rVdMG{s(ryZ%N&smMRZ>WMeE?N*Uily` z676#XlcjymclHLNCKJ+1y)mKMdx6O2s5b3`BVhX;c-sNC37gcwb{{644gp*K5e;k; zl(YlbeiG|J!1hykM!=TNIs1Dd@*|m}Jv3|(!q#`!$rFZza9DY|%Q=92$+^E1+K#aNqF7>D@>Gm4E*Y<<^Xuq%Jsr2uaVs3v8N0&a4RE%4y1GICH0bV)bbKQn--I`2sK3ES zR?kv5;eWH#o9WhD==fGRZc%@N`-9(C6Y!6E8y?<{hnw+mOMLAecy=ouZo|Xvc$hv5 zUi`ee1I~K}_vumZgpNi-a-{Rp;yrbSl$GhlwHy!VxN%7E$SJ(Jq=FP18{Mx`ZN5$RecnnpRWEw|2&3|{0;U64mI^tdu3~lHiW^A zVepy=%2^*&*S>% zN&WMb{`n*PfW|$IKhxBo;79!h4p+cZyk}0RXW$gdnZ7su>;ykOYNq~YHvN;V`_ntY z%U6R`Gj-;A&yBKb@H-8Y&Rp5JwlXkK9bR86jrR3#=vyBrvFj-Z{>NAxV0smJL}dO2 zxy77^q@^{gi>;%U{ok=TUT|a8vcZv!m1Se&!^4%aWtWVMZCFN*$Q%bo`fJN{gRQT0 z*-Cbe)nI?>$Oov_*){L1@wM9T)S~2Q&7kBB#*#fd#gg6Kg4J$#jjA;Z?Bn^MHJR#h zi0?+KtzrI|yICz3(!ws%(Q;4YKp(eb#!p-~(bFjT9$VK}t0Qd4e+mRWaKy!xet4>) zUZlURy0GFe#KRGAsHhji_0==gG4Ru)y5YE0y@ZY{=(rM&V1cXXpO?b%f(fH?2g5%a zwOU@z(UmAY2LNzSJu)^@ZDlbC(&!%TY?)l$!>eve1~*Mx5XloT%V#U=TN*>@kSe^}aC& z>N{4g)Fv(fAAUO&*jS(&gqM_b{5V$j+C*a?eQT+6Cu_&r4Ekfnq*bD<`k=Or-Awth z9MYKDJYWTti$!zw%s;-LbEaf9mhV_WHwt#li9M#McI5#rO!WK{Grwfp$8B2z~T zZW;FD!zq*E4%rX;uV@?Ww`RVqx3@Z6t@rkJjc)2jqy=r_@cPooI=2yI7@oIr<7>Aq zmd3^f+`@xx!qNw(n|X^kqhLkUsiO#L3(qsp`EFDgY75_qXYE7Rcew>OPA-71V?9aX z?9TY#gM9wivVWp+pvMy@p2_mb8JvlIa{J-L3fN4wvFyaCFIFm3_^(tQcC5;hy=bCw zh+prz;=(cqpmVEtEKrlxeJHDw_?^a8@mI=#MAlW;cbDwsX!y5g$vB?wFDb<;0?S?v zRk};ifRr|udPasTrIqxvqy!khJ~CGGKd^Z5hD-X!*4GwA@UyJa`?()+{)&UKOVM3g zNW5IQYDsCuK&95-TdS_`tpQkpZ^w_67Oq+aJ#Za(DeI1%3BfW${H|*+Rx6}KHb2TK z%-3fY4A~&9E^y!-7Et;8#cQERaB4?k7oS4tLnX_+Pk$Pjcej|E7Yg}}Z$zmV5 zEYw!`T5c?2Gd!S`X-_B~%tX3S#i0RI2}ZvSRnn&P$N;JYO{t+OEz8|JQdjxuCC+P1 z>?a0PB`ZqOm^)TkH!!lXuR1)TX2E`YjX7|kj;oXmUQRdlzR?qn{dLQz71Qz9c{{Z= zp6hQ^CmK6L4?z!O_Lz{(nF}KAJC?N1(?-hGI31o4dAW;Yo7j!0a;*Ho*eUrSNo3At zmDZ7G@pq#KwcV$0GDT1UiXgE6b-J!n`@b}RDuMkQs-*URT>w=A`!`gjWjoJe*GR7A zCbmy0drZu?1dv|L-ie01$-d_TNx9YwV^!!oq*D4|Kve}&GE_Mly*Uz&HoEDX`39Ju z4WLS((Sf}BmjJ5dyvlb}I(?66>vsdl5^AeD>lNUv(0fG=O4HE>jrF++d9x{1{oe)f zO(0IwKn(-u5*_!(^pz>qU&&Sf?*UX@2H(hqm>b~%4KV{7^IbNGJ0X&Z_=c);0E;Af z#d1}3OOc`f&kdmMW-rGYd)CHBM@PnBAK8t4WA%&1N9r)X1aai|;`sMQ0BuP|`m{I8 zzMNiUQ;_rgCQ+A2lU#_iOY+U=G0j1Ki?t+225?efr^}%DfbPw)0aOW`fuTy;dYm3W zm7w)7RCNU2^aYTfrO>T+XNtp{3$*S?r8FK;Re_WYRZ@8Kx&W#K8Xd^1HwRE9=am@V z+!;WYP+L0!Z?qJA4np2+N>%?e0elmP(=G(vVC*MK4JoVp zu#gYH!85M(VYrnWupPV{`0)Uif`lrXp0pe_3je)sLVY~CWvD(88IQRL$w4SxjR)Dl z80hq;;N2|71KChO;!b1Vp3i13Ax0hsaGIp#rbqAPMtARU`) zJlp>f_1SrhE_D(XY%=pHiDR}Vi+}#)oX>lr-DTAeUD3vj(M=RGUz#`b$8i2LK$~Xt z3Gh9CYHC)~$rX^n>NBA*J4z7EL87=z<>C`Xd`PH+6hJ8Uk6v0P27qlGSA%gBRlT9k7P9&L4oP zT+%ro>qf>(eM3VwPomZpDZchf%^qeRVFUYg;mo19l2du`-^288dYT~hZO@IedYIp7 z%sZoRtZ!qbUKvXzJ|}N5{$Jf*{(lDu($%{H3r;n@2p)dMNwywtbS`Vp;u~c(?z!Wr z=}YwxVQJ~o(y_y(6QgV;J>*@|&0(oNf;q=9GBVy@FVzPtR*_>pF00>jDjU%NIB#I} z=Xe8qTYDM$WX#Z;pmHPK5e|Y zjQ1LE^SAa*8ZTE^rfzv96*ApFCQ2Yc}-)Ma<${ultRF_ds%ns>2g^98;OY@0=5Oa;$@%=f?hR3xQ$%lWx`?;wu zqt(+vNa-y78J73yRZMdFtj?g0jqGPIMtu&M70-Owrjh-|ZYkZH;89lN%59iGqdxvH z|2jm#LN=2S|uS_aNVc#U~@5zHtC2 z*7V%tu$fGS2wnVU7U7Hw;o}TvI1N&?xM?3e=|GG` z%{0W=1*_T;#AvN$vwO!|C{_qC!OyLt@BNOvW&qo$WXZwVxh41N!O{>TK#+&+qxj9 z!?{bcfXEkUhs9^_@_BmiO-FluhsEV`Lu*pi1Dq4OLR_ z{Z9c@3B0$VDxF?AH$&Rq@mX^HGw}`1&~FEjo|&EHpSA5Kj?YgtKzY-&DMc$Wp_BUm z#>d$y+5hHIrSns&bUv^7PXlT$P$ffEzCheD@h1YP63Qbri@xc!6U>tf7DBu@jc#eC zU%-Vhdn5^hT5=SU-IcWv92{w4d4ddLZGygnvIO7&UptZQR#I4BBbr~BCxbY{1FCnR zD#cD_+r}B6lZ{B4g&Q-f6+0nE8284+{3TB7eTYo!zKL`awbqQTL z$vAk^_V78^TTjN(ppA|AW#G7La=s<;G{)R)I?k0;LrD?IbR1DG-RrOpiF6!nYE_(| z@8CYe`&9Ch`q|A8U`oz+n4SWDw|0tEh9EEGOHtZrB}ekUP7(WFC|EYala#A^JG|a% zn$-uf4u$2q{Fby_Q&{rLonlqe$kTaWxi(JCLRL<8^S7RrY66*W&3oN}ML7f4N#9Dt zUKO!Ym?CU`40;4_STS#0(&op!GL#CNAH&@)Z+ZhbWJfhQHcPuc$SLrYUe*@VbW{`V zN=H-wif0r}rL*lSntBZ8#0L&#I!n)Ir5ANYALwKl_1PA~$Di{KUhbTJM1ul*nOX4O zqafTk_|Nsz<7G z5GWp?p>%xmMFCU^!cvARX@v8H0ICELPD2&>OGm)WaPUc=;dq+fOsC_7XY9CShOwxF z@w1UmI^Wp^?sh2h(8z3rC=#(2zRDsIwylXqBKzSHRqHtUN3`QiP~vx-x(m_DNMsG`K_iiMJR{#pXWNQzALe8}mvz}ezI%_0uWD4DJ@4D6fT;uks=v^Z@ zBvu*78^jfkUdj5cFJ6p-2sub3uSOAeUqv8 zLG5L#9U?gZ3I-mM19OH*@TRqSF3Q%2NLmS`FVFdsueYBw1ZD?Fj-vWWibw|1MFS+q zU>y>HbZm}u21t^ePsgou8Bemxid#2-tM$bO^2&1DTMjlzwx<-t-cKwLQ-ob?U;!1; z`T{fYVgr5?=5x2>Fk*T^84mH7`SM%Lct=n%V%N#dNTQjB5!QG&XhvikFW&ThwY|oB zZO)eh>SvAj8mgb9h@|nVQ{nYiN5QVcI<#)QNzSK@H<$5V<8A&{tBVcfl~l-d2gTy> zm~H?Sc9!_wp;XvWFhmmGkX9Znw4-3tL#eQ%U>vUTW+8w>HkikudKxn2je?QIG#v%Q zr*tImVLYQq9-VDhk-X#9SL(gPBV!vY1HGpCmxuJ0w-nNIztn1MuW|1bj8tV*hkEj| ziS-BAo~T=(o$2jPM0~dUcpTB9<~8d9=8zvlwUs&KBIA3Hx}V#w_m)Xi-Mx{L!MHL9II#E!t}gI7-o?=fN3^7G;@D6gFyRtj5vXVXTDYba3LA z%n0&^vC>J1&wDv!&0<5{H&ne0mJ*`mS<_<2*@wCZoBt?l0}eq($l8EBWDsY-s$W>0 z)ipnmeMuI^Hhi_dowHH<_5`oJsHW9<`!7LaX_RgSo{?{-v$pzn%cRcD+wZOp4^%Ea z0<}f%*O#^A*Xs}0oq?7=1r21cGPApz5!_P4*b-FOPMSL{wL2LTKx)3hrE*7CKK~RW zqp&RO=+eirU>aSr3Y$B+l!mGMk=B*KG1qC9%qhd8GWZh)z%zUjgC0fp!4G*$AjEASRmxoq&PQrqV=nfmW_s*Ns4LU4T z!yEM1wy9dl)>!=kjJU-SJu`o=_2&51q%Q&1YPI&9&?0P0heB(M)&?}$c4&%&J?{4d z3bx@Zj{VcxnKv{=qHj7hg-_}5)tgcOD11d{Z4F<=9W-@QM;3GL9)g6qmV;J$gQs{! z=S3}ruJ8+;3|f8E_Jyf3gX3#^N5*=GM*91POnP~0^~04tBg2&?b}e~IvNsn^v^ROF zHokV<$k0G#%skTH*FRY49jHeCFJ7$oHv}xcs&r*5Jc%G`S*2$+z4-hU2iGf?*1Jm! ziP@Uh3s)^Etr)1(`g?2D^}V&xzWz#gDSoiDaMh}Kc@?v_-2BAbytTX!wKeV&bAuBv z?fB80!hG$UU^)=eDr=&gFp-_k^B$Mh#?4bO3P|>115N3bzh~PiLhqyR(%agh~s7HFy^LhW~SEo(y`M$9GaqMo%stnj}l7BxXmXx`Y;vd%wpIpt5uB{=B_vAtdhw#5Fi>v3Jd^me+_o2($aQ{CT^ zdTdMyHq$j!h3$j9M*wZb_d(VqOJJK^?e?t1bH{L&F!^M^)+JJ%@#*M6J%*dU$#iaU z00#y0j1Gh1As8mrxfcgeCD1uTRhZ756hK>Xozo@C5;|HT>bOV>T&a`bJfOi6IyD3cD?hc?zplyb#Fm3xt0Byy!O_LmJTW6GvcV{C7 zavQd}@q^JbM#=1Trexm;V3|P4{y9v^z8651K*o44ko>XycHULVz^5P#dlE zSJzehC$=``j&ACP?V-l8lhV>k%ZEY53ik0I27&0Di{`@Hwh2$q;z8bKsZJTyiNjxx z(%%K$|4yYkoq^g%sZQs@8B2B2QM)L~X?I@1tn{WtKurtn9u^i6r8liQ6(`E~4cj1i ziS{Pb^WbFCa#z$ ztJgszVzjFr>eZ29TDPHuD`Ms-kP{4N>f_vHJpD|L3 zvEPU!dTBUeO?L(q9JTw7>Eg}FG2Q)gz7$YDYq|@lev%@RrmKDey4GTQqPLg>q?hY>w~Zv5%#=V>S!f~x0shrTxXnoXL~i; zTI{XFNsqOY1CYsgUH@1F!V`aEr%ZWufBe&XI>}AHi7oi$>lFKD}XsT{a^#~|9 z>cVD)F7dwa!<;7MZSCcu)sCJGK>_w^_4xgvMOZyXF}6jI0~&2RQIZb~^AXvAg6%{}o<)$>*Sv|66gX`< zQ4*ih6D5CwT1XQm>1?~2D7j+eNUaXj?>1J4`o>zGFd0vkJiL{hpswUMIyq%Bu_sUR zlVwDO-6fb{y#xlvM|+36Vdj3lw6b(`&gx&gBuj`oecFfdTdYC)E2@GFC>EKY_O$!C zDY<_%=cRY@+`e8xMFMbl=9wG6W1mUqI?lvrqT5=A`Vy1fo|lScCz-pp8x#*v-`Ov( zn-ey@n`eg}7(kU^zdS>gbicf10aOVl$Qr8BaxAo*!m$A)XQloytdN^9N#qvJhg?Z| z;{ywVL|e^NiBHX$+A*J~awbnci?^?lYP(tYv*^L-zP3qojTvPnKxzV>^yz9yjj|R% zmB1(sRZ^q8CV(n|Q5vcoqfD+%l@H_HMXTN#KypE&L~;uo<(o)v+F+D{qP{#IsCZ*ssu9`0(td~0IKA?N>7cMel%~~;D6SzeJ_Bj;*(-D3)|`g!V2?Dw#Wdq zY94Yb#*EuGUq7*CC&RRj*)VBhV5EOSJ-E}fXiM5#R!7qiGOFdz+kX;3eW&vF|Bk$* zy#3jmQhEElR}7Yz*ILB3|yh;tCOsSH+`1kpUxJN7JXLEmjcwlCTpER^^+8l?DvV%qR+-U zBvL=H<;_WpPI5jyhMdcI?-+9Px8^5RlG$P2yAscD?9c|Vmx~2pim*e5M^O>2?_zf( z^*QbO!ad`#XRa73K_` z?3rPl5pUe_lV|a#qX%_|Eq#-*>X^>5>S$d%Y3TUn0aOV>$A+qOkai}nn9O;nFENgt z9Y9<0P^~6e;{S7o>pVKwv6a|{16U>)wo_qBwmE<*fsz@j!j$X{0kjoYGEH)4m26iA zC?acfo3x#y=b}e+V`eWiqr4}8UjhxgGfcxC2%t)!VTP(O4f{d>ZN)WAliXPi+dDZ| zHpZxt8o8Rbd;0n4QLSO!V!28TJ-xgq+ zISB+dn`1kP0cruhg>eA{xJ{Bd?qgK&0S;euE=LwNnd7}!FeP(X)kPH3$z+bhP23VE zAD?mpjvj|EsTc<{qiJwCA#q~%o-7xHMVP4zjR23$&Jz$I?t+;pFG$d)NY`X=M!Z*#;Gzyzxo zzt&732|Fo3c+;yC-YoEt6ri0p`@a-WKbv1L4GNY8^^^Gpq7n}*j0^}HOtlM_6rkAu=ovpbpCw11%xMQw(b8^h} zjGQk8h}oL!X;eQ+5lM4Z3*hxu(}B*!I<#)CNzSLuHJ9;Tb8Y^XaIvPm0t?yiQDUh$ zsX$U^yEGanux_>o(iI{kX1g2sT#n1N0}IUA+RLm3ydHI;6KQ;}BMy4(7H|5#DoEqQ zy`@?}Waz1Uhxs3PPZS%MG%TrY*ki4=A zne5eKffP2`Bhv#e*`{lrqQy;f4A&i>VY=c^fcjYseK^%mQbe!`zXa>*;QkO2>f<>E2m04nS}m`{g>(Cj=I97icQ z59ZyWRM>eie6WfS69sU{&V%8@nCStdym>GbHEKE!2A|UNVEzNmhvvc1*>*J#=D4xS zMdPql*g)^vzWxoB;elGI+{)yZQePb=ORgQS!-S8uca-?%i@*P{^qhMPT=tQR>7i8e}dwn?;u^YY5tXBJyC+yX$)1~ z5jpb1Gm+7Jd76C#$jTbBXFw!(wKPpc;gy+8g`E|>&W{vFoA31Vd3~1#)K{(?`C@Q` zvM&jss+bhovu0hOEu0=uUAZkdsXlqz9}A#LATUFf)T+M}K$Vq?f(EzScYu|>^FI~>c{Y`>EEA-lYJ>KF=1EQ_Yr zI2SkQy@T+sYMugTJG}fO4kg~MepzQV&5e6>6P3)hXa;|&euvt!<}|41<9Mdme!#Qs zs?U2=t?%NBe9?zRE%kD->`r!UZ?GL(s>Uen{7uW8Lw{+c)`j~5om$;cSwiEfI4w@! zTv@_d&xv&(QkQ}1UcI_QcM0R3uu%G%v2l1Iwd6zcwVb6MW)d4%fLLE*jnBNR{Ed&N zb5^9gJlp+TBxbu z(3*DO1v8ZPhvKt28+(QRz5{*wJ)UrQYiO`7K z_dPwJ2E}?2?dkij)@mdbSbsou1p+fvIVibF-}j;bsszd%$g8UYsFL$4zwbLgspPDg zx-o#dVv5UXDcl3rLUE9|!Jpy=)mKnfm7Pv&V$~erDzwg*q{8%jMaiH^G-4Z_bOU9R zI~gFcmzg9V2#}q4<`xn=t4ECqq0+>4<``B4a8BSDUJS(t^h90}K$XBT z7^;oJbK1QuYZYO7;V0VGca$FPp{rVWlEP}J83@J%jisbhFc0969V5Xh@{1yCjD zRhVP=PylVk9fM|MXC1==45(#AH~n3P`H5Ger*w#l-C_RW>j4ZD_=m4R@d5tf;Q*=x z{=rZs^$$M@ph{o}hN`rG;2FL7J%@}`-=_kIF6JRL5rsSVkCW=O!9@g0d$()kC|xdX zsf*Y@fGUBD2;|iZ0;rPn%5f1m*uxvTnRJP@aK{ADR@_BsMt0Uk?3Xjl6|u!#X>GUE zThWu+Q#f}SFV76%rNCSCK=A?I;=%x`1m40>CG{4=0aOWW!cdj=7KOr0R|k+>%vZE0 z%(R*GrVXwlP}H{u@J%jisjGNj096845y-1g22dsEmE$T}T0Z@&0kjo&6`GN4broTS z`4&lZgQ#i&UW*6&x9uW{&*I4?O;<;Bs}qmSJA9iC4|gc3OFfF(M!8#0!Wqlm(rG8r zvWUC$3TCc{XyswnLu9oCr|L`Ia(A>`dKUCNed{6im1?7v{_47FWuSzq5b=~t4IhN> zGH~&i0PD;0J|?rxu7fz$(`B^8o@UhtiEWbw5O@Cvd9No&2zCL)U9n)j0Aj4G2=+R; z0OCs2P+Gu)=b6!L;xq6btni6JlPqnIHQQYRueBtg7qpj^b{g?QC>S`Wb7MczWJ zJK+`9x}Dc4ZW)@qfuS_9ECqv&A+bA*c-1N5*B27CIvZZ6KvU(?(V=R8wLY=60V|cR zt8W^GeAdfJE$V$^>nrsMHH38#i<*oqJzqT6#^{Y%rAMxQYf1x}zja{qHi?NPuS5sR zG|$Q=k9jlXaH~VaVsWO6A4o;CzUAq*Su5=>R0`SL*UU6?Q+?Y;-=V9Y-A3b0-&fn) zMt?HrOOgiG)X%ojAEWw7ib%H6BE$VO)}eL7O>#bMxVen?8gBEqT3;(IudG5Qd#hL= z#Z5NOU9gL!oi)C8-N?`YtkQBxwLVxKCS=7r3ND;V%B(Y{4Kl0l3#O~=H(Sx$e521 z%cZa}PnA^;U*BF`x7K_O@zmpx@n&&rW&>uVh;)VN%&j?Jk{F`nkZ-2?Ns0)z<=e3i zt=n>v^J!boWxUsxo4?iKDu;Om6|&$f#nSLtZ~zr{k+cIsL4jQ)4P&j|nbUdw*9TWe zD=*9orNS=Z$IpaIAv5j<4Id73PiWfCqBn_X^6UHA!qoE1obhceh z81JrCH&%!G#;WyA@@eDCTAMZ=f1#6;$Co6Azv2&;FBusdIGl3kmz41Q2s+Q1-969p zgU4!2$b70aOX{lnhnUJf-CUR0$F?3{`1K zGT7xEyYS$#QvyiN8hK)1DtF1Z_T(v@NP5#Y1(d*yocXGI5>?K8RWeB3szwIqCKHnJ z9TDA67~~Or^lM{)!~}_hRb2(CL0%p}mB1hkRZ@f88bFo6APrS*HOSinNS+D?c{Axv z8w^r2wXFsjR+uM;D+61oXQR-jNDkLtSs1TbCRawKVlVG-?=Jx5JC(`xE#xF+ay<-Z zER!ne_^yQU04aQg)Tv}VHUs9>S7|kUk zgrRG3lvlUpExyB`*MB1~ViI|;&u3^^O@ZlJ+bpi_0}5+7{eUq69;=E))!mAsp*$ z(}FjBrqbRtfP-?r6kwD#4dD4yKS>cu%q>dQIt1&G2w-AUo0F=Q1t-1BHr|UwY{b|lJg~r9XVqOLsUOW5lK^2%i;A_Q|T_kI<#(zNzSKDF_-aP zQ*8d$E=((#E#|#k$QI8MOTc4`0aV!WgK42u*zp7O?*+#X{*Q`~XrtkU9Y5e8io=%x z4%zVoj-t~*CU5+JjHK!K0Y0V2559U;Bn|@jnjb;5?3YkH0C*>|*ksN2KL=1Hh%6eaq>;s)uM;b)WCs^R z6?ttYTxK!&l+R)$&AJoOw%Z0|Sc&=tem2rY=R4nqyB&%SHL@EZ3Kty)0%75zL^BgD z*1iy)F}~3*)}E-1jyOETxC$EUiwqT6tet;EJI(|pUdSL=tbIAEC@t3hVmu??NoU)Y z?|f-}WUPO%H*VkL1Mo++7*M?Y(bFvDnu^5?sT`*v(b|}BI4X-4aF-_0VdD2 zp5}h8arYE-tqw<{Mop#1;AdFL2&~>|S4VM+2$~j@!6Ma*Y>P?Qwll%^wNNk3rN(TS z7B(=_KcODnX5NTluqiCXk|_=KZK{mL zF-v;_+1`irW|gg+*ZpA8x^dY4E{na_->6eK4ajQNPB5)^yVU7^~+8+gnc? z*?m70JiazSYi%3{S>**~t>uBfjfxQH$b79MC7OcEy3p(n|OIdHSO8=-$l}<)+B?BsrEDDoRU35S>11vv)+d=wiRs4IQMOYO_ z3AaVX9WUQ}6vl=sd27oXyMTgisFM5Uv?}L?D*q1{(`Xv1#HVz3>)F@C8FjblY`f}i z9bF&ms}9RMS&LiiWMSc*>{?lH)TJvj&{yxPRq9JhmC=#@!CFrLY8Jf^H%WTHL|Txke!juc$&oyqDihU^(t?j;~dr-TjBoQ&%O<$g4o{XMQ>HIq90g_dG zl}YP3mwj<>#3L<9`tm9$UedrFbRqbbn zq{X+K^1lJ+v{6YI9axPzdgo$6^{jZCDT_7*r}J#Evf zM*ZtOQdP`K)k}y(cfbz8;^P)q)T>^&2Aid}oUe^Gb2r!RCDt+o}2tk?(^EInl2A+$hfbNzH+AxR3~(#DO7| zj;I`>ojnS?XB@_K$4VpXtl0I<9H~ccp9wv>$e8x49M<=}ZQ8Wy)9_Ca>^9L+EBv47 zs(Xcx_w$AS+#D9L%H$PQNCO_BIEBz3KtCd>ILK+<#8HEvv zO^YTPOIqsQo8nvT;5Tlag8kU24%8{=0q1or-+VG|y36V$ey5QDw{a=g(mw8GmCo2X z`ur6K*DIISyGsirHZNSYq_kq7QtR)nRoC~{M*I3<@9y}i(!y1%E{OVoW$heyj$Y+6 z1YeFS8slYdWlEapa(Yf-zIIWN6ojFB*QVOKy z9baY6Z@{f}+zs?ds7OF6gUPBNNr-yUPD8#D?sll_nQ3#>6TK8Z%6g(P^P+5^P4I*> zq?@RT?$x{us}>s*h{~G{l!kH#M$^RlhK5Q;o~6FAvA#{q>XqTzNP6V9h3A>vuV$2S zGxx~7rT(URDHg1ysd;b(`;si)WjJhIHD{=H)d{Y98v~R1WZS$-W^D$4scuGc$ywim zXXLEutgX)4vI)J!O(%N*{%zm@u9zsRJIE2JobE?sPGz`0R;|<~E`aA(K#R~g)~HQy zwBd1!p1ZFO1+5*gSHN{2EpgrPhg$XFaZ4lclh3t5pmhDLgG;xFyZav1O{068*~$Y< zgIltdB5maT?&li!OkJ>Jr5-op4q!RJrWkjvtqylxa&ecDNZ0V_riE5;Qh@PQmshb; z`I<2S!1y8*5B4d|I({gCDnZtu^up_q#BmD7q_&UQMZVMFwk!Rph2Z$uz#Mo3iTlGygQzecc!zpdgr(a>5ykW`r?uPzO^m7N{oaTofCoWk1R;gD9ZVP<0FoM!eg zm)5DSUzr`~Sxk8}Ml{!$=X$wY-?-`U$fgJ|%wVrN2}y{&n1j2Xb0wtz!H`ea3Dy4k z`L+7kl2UcJo`?iF$fi5OV!GDTyLoizJb8_k0NI=k#RJ}wBAfLAR0)ucp(;Pma3->t zGiyA6tgLaNWM-k71!F6AZxwacE8yR`xYdf@UZpWVA@PaAoBx`sJ8E)%N=?q^HQyRg zbGe%23&dSM_~rnrg!15f-89;>T%At{OHx8u!iDgGfa=PHAhp%c1W?s(Tipp7LC&kM z2T)Z|HIRmm*=O9un`Zn1UfmxCR9CDTZR)!<^?J^CN>IB__1#>ANgcMQ;FGMwX5d29 zOZx-dcY0|F->rLT2Q#rq!o_<=;bKBAcF|IEHrFeJ>GrhAmlL2-T?Gdr*m&SqfRHCwYAe}+0?m^a5pU( zR2?3uTq@7fUe;19*nXkaE@%vy!=k|UgR~ZPPLj4>NtJ5PJ!kR;Gl?#gx2GrPF^M7o zf3f?yDY^2rWqHoZ(=+j@n9rA_#whvSbdol|OCd#liAm=~mtCeUdbI&LNxr=X zXUw-Jn+xOM8;P|M;N{H=e&ivIR=hLea<}#jSm9@cd^S9<;7MLG9(C)sN?6!A10g0)kO3nuL{|*x~XvRV&%xss}-)EiMDw z(A2ly;vN~Qa#m|!7+QpF%}{7<(b|A!*-k3pSdO<@0R`JkMGouJ+L<${K#RWVqykhB z9h6e2e-xCWv$h7M;=Y%kN+x{*2bMvFnuzq`H3)EZz@o>3x7`Mv*>;b zzr|ebyIdy3rtA?|k-%jJ&()nsLKKQ}n$pYQZihlQ=~#@lLkj179KOuLIh>8rh|MS9 zF@v=1a-WGh=}^FCtYmCuqTr30Qjh|o@l__ye`KHGUdkiRy#7EuG_&0phUWHX7#rFY zc$w+0kTrA7rqK!?G5rtr>B17Q*!ADBV8X8dif3dn&={tJEsdQq*0-UuXiZE4ha%}70f#mO-}TQn=~PL^>@Hai*dh{TF=r=$o{~af=vh-P1~9fLsq&8 z38=K~RdYwpn~Q*gZLgZ+E!}V=K$({*Wo>ya%>P3R)&1&?sKnH-rnAoUs|#`C!75M~ zqfgC^C-9mVc5BTotKSYmJ2b0*sIOM@Pqx5^G%GHPSwUy*V8vZXCt66{FG;hatiAxx zG!CRb{?bacM@7w^E`CV17?xtl`i{=J;gPV@s&PxkDgO`Fa2m2J9wKm(RXI> z^`kLgXUMF#F}pT0KGt8EP*lXGz4VmM%i(wRG_{$2#*K@=3W!lxz@;8_B^@7~2^X$` zQ?vfdwRH6cV%zKK{5m>bPsc5E+zLl^#;$O91Dvg%u5Qpj4Z3?H9p6aDH{p#L>TmFo z)w9%1_}?t`X1etjI=&T-ThyQ6{^0l31pK4khKIM~;buJC5?^}vO~-ra_-;DhOUL)XQ8Vzp^#A+t z|IeNbhrdHXThx8novKab%fzr(}h^#2oZ+@k)9 z=Yt=@G_H@q(>?0r|37>09VbU|<_{y3kOT-YIhX-#G=Q`cl1U<&oMjGigwx4lv^$cv zwY#&PnMDXhaKd1Z4K|Ab17~C7956O#8z&sj=YS&^$8-3}$2o8g95|iN_WL|l)m{Bm zb=CA!-Lu;Ld|v%A+v-sD)Dyq;RDxfak@*q$bM1Ka1NrC2^3PA@pRMxG%hAwofS*?M zpZd=|}u4z|EF#&1%Z_<3Y4nrG*x z$&x#XlO)nc1rHM62dw@Y^5Zf5dD}4jyc>V!j=;}+{COGvyb6DI9EG1<@#huzb2I)t z`4aef3V+UT!p}e8&wVZUc?bSHvk89wgg?`+hM!sZ^Z%}epZ~(2Y1iXD{K2DbBXJlm z9%B-T(@$`Z`bg|*k9+7vV%I&~(jXE$A>b;*NGwjoIjhm3_=A&LA~6jHb0pFA@G}Pny4fh5h=Y8$cs6_3c%T2i2%UpL8l#&URg`)yC~iV&5DO z#E1dj?yr;n>qpT(1lbSb6$vmL6vL#@8J(S2}ys?ux-Eaj)!?>QT6_#heej(0P2yra0k$SI!8)OiM5 zl7L=*W5m7&i_Qdnxfu1ODgX@5c5)I8t0oV2KJ1H2;x{e-#y&U4l~mz)&UJ(9mshUq zP7s{u0I$Nv!!ha+tL&FoU1(lkmhVe@`my^=f#ZXnEPd4zl~i@%td>D z?mc75Vunjkr#~>Kg3pp4#4pGMR(z94<#4`KIMcxoh2p_jtfi1$R?Hq7Kow)Dm7FR@uyt$q4;rr*XdO8Yk-5|y|%KqVNA+brA4^#iX7po-xK6jfY5a903T z3_qZ#GX20@4P#@uR=YR>do}la14u7s`CV6YZv>LO*85I)0b&SON{<9Il_4cXm8H>J zV&O=mo3@1x8GS8)DuzY}^6G~HRPlM$Wkd`+Xp~vM3?PfCt@d6JGXx!;Fcjs~SXY?f zyG^d@Pk$Y|=fF8CSvjZ?*hM3i*6K_<(NO&psWf*Dpz3OLXBf6f zNi))=y;=6f2RR3(_m<4a(8QW#L!2GcU&gOVUrQemPM#USNrs)C3dIL>b1n{`iV+MH zRb20}Hh?OIMJTFz0&m&@q-QB~{*Fy?crz+>hbyI<0-DN@lA?+WZ{8R{6+@!~d3ApP zReWBt;mwBv$YN@1PvDJ|f-6Aq-6mJ{zZ$?dhB%dj;=-FB1W?6*H-XOl7Xei9c@+k4 z{t!T0ad;yc>C)aT`{Ki!9pd4m7@$-mQ=PUy{P6gpL@#)QV3zr}@KHQNq2@vHfLY8q zJWGyyQQG30guVj;=wmnsNnfdQ3M@+8^US{!Fn$2&7& zTf;$^<+~^Jo%OaMI1fPq{X5}YbmxdqGSq0X>ZdR~7f*(PO*OEP_ri~3nCSs{l_(OL-g^vq;DBrj`gOOJk2>H z9uTJluJRD*NS0Tle(1@{wF!`MU*ww%sYLfMkS8T|Db&ZE1_;^=W3=NDDlkFibtp`4 z=^0PU%$g<+=`il=?htR3Ss;99~VyxHlyhkF;b)>?=^OBOL zP1<<{4nDiK%3-WnNpFZloJ0BnVg7C9GG8y=x)lpX6G}}lKqTVaDQ9#Jad4^gz;Yk* zxI_+!SE{jw$`SO#@YF|nIo7PT2jPU;#@YyuY)cf@KIStXMkid1ZxRlEpj-~>eRtji z1p~vxK(Dp$4nEXYN{z-0I|(bJdEgV%2}*PPn6%b>NLu}QPyLRl;v0O`yYYNRw3<^y zI$&_t(?wsvHl)_U(6EsX1!C$RK*jH8|BYsvWT!2i& zjd*c-@Fv@Y<84j47%&~{Av#ST5ni5Eu5xSRJxwULBO>F&i80=P_S6(0Xl=Zgi}rDf zNXK55@xB<_kl%RIoHvcv%Xp{pcK>RhwDD4fCF@hyU}vhFNghR>a*EHvuaVBU}x`YI} z@wK5;=tbK!Cqm(1bSo?)N_DDqZ_8L{=z-oDN0csGJ2p5pP(3VT=dU;o+!uFqD`1lw z8UwJPC&vujK2dPyvL0_U^Dpb!C8kSO1zSC<$X&G-7tEBzkjSp?5kuMPu}DX}Dza(Q zkL~I@w@tU0WG-Q(TheVNC z!zPEEiVjG0xMO=xC46Cwsy>uNdKpS{eL>86FKl~x-E5uuo!rJMWwSeJJjlkC0Io7J zz{&Q*#HA*83HKKg0%%loI8|Q`Pv?FQ!-7TbS1Y79_nT*kAxq=3h8Wa)q@^d8+ft!t zB1N_w3g)Fdl+9{{gUl+3a1IqkFtmhhL`*b=JRv;%r*e6ywdGPQxQMpwY5}4caJZ9Z z0>x*1NSfRzsmbYHGABdb$sjP@X~uvd_kP21PNi9TLDWWg9Hg9Dzc+*yq4gWZTZ(=M zbVW3Rr_Pr8x`2Z9wo5d^ntJTp%=lVhOsDH+#`u=pY3OZuB{p3WSK&JiiR~YR`x1a3 zO)o({J?hQC66|_wq`hXi*6!cH?bLX7h=`F%U%LEW_H7nt)+mnGf+;5PnX=~(w#1pT zt36$x9SOxk@d`dqjSZ+YC)?&xN@d)9Jne#RHPGCUkdMiT(cqsA5d$R#b6k z0RJ|CD#ol# zaft0P0nKF#!3CSx?#fkAmH@2ulwN87s8Cp!6ZIG7nEjg({-Up-S4x7+HqChLkqJh| zyCl9c8kK|~OB5f5*7hjz)sIRl5?>qPDxLVE_$SVP?UmWutb+toB9f_=e?^%ksEL&Z zJ1Ra%5Q8~n!)on{z#9u-Pc{UzB0<(@Z@@7z*lnv;8G>M7B*u<$l(F@OyZogP=+Fu< z>MX5So?a)*rUamqf*d70C@E)_o*YTsYWe{Y#Z80^+MDD!ASDW&3wb3LEOH@QhY`>@ zXHA-!vqJ>ttW*;aBPKuM|KhE|edDuvQS80twqK9T-US6ib47N>n)8ScwG~sYyE8rJ zoW~gg9uYaqTSUSi^3)X|VLiv<0ntKE5oyf9$sR=yVH;9&EYQt*(nX5*2EU>w?|?bH z1Z=FLSohIhu}Tr-#Cis$5^@nzZ6Nr=UJ?5}D43UQOUpI-B7B~A;@gj~4Ta@;%$=rO z4G{TEuUM5fa&t0|*T#ig$eOUx{i~e~7f6iV_qm0LJj3|u$SU${Z)7WlDnh4EF(MR9 zpT0~K!5AJ$hKqn*LY2XvOenPmX_O6 zon&7O1@l~or6tI$iPjP_R75m|JR#chqH=ktfz$a|a1m`Gv!Rb!Z6R zl0!pxp#F)WA#pXOhK7z=*K7=n)gIh&p@r6x&UI?L^kimSUs8B42Zfd-nTe#js$N|( z3QJe?Uex$MIxqy(DbOWh|9^@Aw+B(p)4*J0j8#)IBxSJ$~~vW*9&SeWGL%)y}j zee#J}Z|~8YT2X|8j9;|&S8%;2;)nT=2=t3Khm-7_L!g|kdOr`v^RR{|Go*$Oa9!?0+ymlm{Gwd(=G_oX7^lh4u-pzJ|-LlacElTv= zV%P^2zSD{gk}1vMZOpzvR4Qu@tJD0y;9$drlcooJ|xP0M!8JYS?p7wU}qK^AG%B` ze-@i`R~^05fAZAif)btqBb~#(RJ4y%M7m?k%3=RAwjtH8Md$3vVW&B7rWU=77c9(5 zEq4DZ{~}*sSyrs$jv;aV$>>S{v{EqJ5kq(#9J#;Pbo#74OD2jB!n`oUO zgA*j$kSBzP``+Fo-PsEZE}}bGD@4>_y?+oR<3rNq#U(X4GH6xAYaD8Bng2ddBj-zsnblA1z9rEbBb+TpfGuk3DoOo_@{(T4zhy!Y$ zU7lVWZ*NMloBeu{=oe5k>jmOGx1hT6IwwU&Wv;TTn>sQ*5Bx-A4$qXncR>b=qE{o^ zCP(6YKaZ+*%b;g8&7DDSLYsS(LB9{#DKhBqhO2Z2JoJMI3!hR3MgZXk-vCe*DIuhhkr--rYO;N>N z#kxlTRg6`viYil%WPHe<39zR#E(jnwYv73V{psq}o~)KU1n72$LAC;N`o?z*m@Z>DPT((hO9zYetC>2#)qg)?A z6~ibMRhCggAWh`h#VGMrBHqmbBo{PFq@nOS@-d+|B}9clQQsE8H@>LNgP*z`lX_nO zRg7bw0(td709AZmndgX2J1Q{>kzRrS6V3lr09D0L5R)t{H3ozg=9mhYfo7xMAudZW z<2IcNsMn?wMB8O;dPbuXU}JHNnh$!aVk=C4i{T+`e^oaH>ELh~6w6^xknbvmzTL8+d>S=xZiX!q)>sux|mX#_%f3b7KiZM75(BBRaP&_#Uz_N#Y<{+h;zL)h3=>Uv>O@7;t-jlho|*#M zr%m+bqJ5kq(k2?MfY0+z=DP{okl#epoHtF>%Xp`WcK_;mxwMtouCLHSwi~e}X88_v2K99dskfXIA7r8Y89SHysqYKf1~6J{7&3aIHH^&lBk_qmA->|zK#+8?msBAT{8 z>dC6pLCsdR+RcR(_^E8EtQ%_7+N+bT0;}$rCVXzjE=W7yS&nUm2Az)DtSNuknF|!h zn0%VCQ4v0Kd5UhlLEh4=)bl*0am*o{H-aWcNY3Pq?9t+**4i#ium_5kZ)+aNVXiRs z*nVM!O0THLyA%^gKlsP!0IWqCD6IM-x{*0j9^Ksz0H zX9Ek}gPooZz7D(?cS;Go0S(d9lW8`McK!ki)>E2jX4MR^zUj%LU(|I<6TT&)%)(8EEA?a;(;d-v8RMb{$R~dqIxr z$yP1BoY}N*GM&<{R)IZx+V8H;cO@9lcuwHq$N4_3$ZV#M*wuCJn`{%gGgz7oPd$D) zIXADfy8y8gx}K_3F$G?^vw^;5^CvMS7d~T5Joqvc4?vSU@!*F6R536y)%9!5rt#|Kcw=apY!cZj_*W!O0Zq!rUzO-Na)Ybi+* zcx3EP;Cof#_tgPyW-AE?{95x5AA{&BY0Ur%(U;KwIV16|t71v_opr{FmFHZLaHGl& zcw+&aVkquQpm+$wmi$gMjQm8Zvo8;ziXlHm71zjLA3znKSE4_fAz}h%u?4PN*+l83 zRnLQ)G&&=rgD)Vr9=~@k(@q#nqJR1}|;ZuB>xc z^DM~G@x^j`+1Gt_($^I&!0mX%x)4a=HClZa!hg>n+*n^Iw$U1?4cFzv6DunkBXGAh zwsu`(XrSISZUfP4V5Dl@;QHm2wT;FQtpB;VIR+odn_|CKvoz28pc#S-WSm9bB2MQA zs6V`E07ZJx-?6Lfj8C>6v}9Zos?Bvk*K9+1$062UX|$JvD*c5yHGT$u5kHogOWq<1 z^0Y0nu6=sO5{F+y@mXM^%jtQ4=Til9KBsMm|2PYf6nR`!vD2H_RuwT&g`&z7=&mx6 zlX5|^bi0j1+Wq1K16ok5hfz+yct4;!AV;(;pt%fzDXJ{U+@)W9N&r<1$Q;P47X?to z=as)-JTI-}#9yrrpstwW5?TuPj-^m69IoatvOTM-psXfa9a_Dh?w8U{n+xi8$E|No zOro8R>7aIqUyomrQAghL57n6H3bQGYprZ+ua67uS6^fGWn~xsIW(74>x9rz1n(C@_zh|j0>szgmXLI%}3V^ zyW9ba4+sqV22jNa42mkQx2OhC#jpTHRjGktc>u|iAut>*^rnQs5Gd-41Ng=lH8(J< z4WNn<7y@}U8bB4FS7CwSx&YdW2L{Q=-Uf!fF|(GHBQZ zvNsdDqEDcziHTdEhpY6&EjjTd-nnT$Xu8CXrj!j3egifc} zvMH|CJnTho+|(Ma_YbZcgiWb&UWBnKJhTvkG#(8w#jH@IW}Jz2X<{FzNj-x`3h+y$ z?I1wc{!NT63(~tZ#iLLHF{d983H+2$LD#*xLaj#vdO7)zuwb#AT&pg^zFuzMbRz1h z*uII*I}@A8T!_zLLo!UC2<6v@I}SGn>O+ZsXKeA5YhKV_%4MbAKjx26FmO%?(%Rw) zAG)TixtCJUJD)ClB7jmJZ+2vk$O#!N+_m9~L3g#^$O^xih<2U)SC|3e#J!5o*z{HR0%#@#q9>16$NW_sy+>yf!Aj$lA@T`&S2b_en%7 zz7j21!`b8OS>a&7(keBox2+BuW6 zq;21`N34!R_go7_BSFyE^9u|u2@X`2iVtn+Co|*#0t9|s#Mf*5KqaEZd}S3f*@!I=1(FMxY%(iB+w97C>V9R@V0**hh%jD+ zOCC6tn#DkDHg%uy@Kfa~wKm#^1rHrYiw`HpXdm;`#IZOfU~RPD5bfg>5p1;I#x~?P z+BD})qxCZ0X|&zH+SjA2MBjWx6|&inu;o$MW{*vc7FVh`$S68Pmu{#-lx>p!kQ^}> zYu0d^IFI>~VP;~$$Ws%?5Uqf`UbK%> zM6fLnVH@(>a+>p|EqfX7wB_z!?d{ZBqHVr{3R&<9wlo|T96*KM9rrh(eQ&*m8s=J^ zi>NbKOsj_I-En^qN`>A+jV82dDmj2ddigjV>M)bazAe;5zNqUKYWS91JN^kY8nJd< zTurI94kD7$id%2GMh8Cdws2y$+pDtY>JRiw=KPkK;-&bx z!~^Oc5!+KXACqxjSCnPURQfp-51k8Zk!qKv*nbY7iZN43QN^99H2ckL73ZwLR#cgi zByh_)W+6a?J>s-a0LfW{lLSP0H-r;36rR+&2hi;v&|)hfCwO{Rto}@Dv$dVUAf`8Nediis5K-%;I`Z2E6Mwmn)-5NsPC6_b9ZrM{~LE zMco&3x!w*}>A75KR2k3c(kBmUESfd1Dr=Li|J$L(@< zS?*W~LQmd$1Pd0Ex3qpD67J>Xt$hXN*D1|22b*x7B;HI^)*k)O+fn#Yxt!7&%kM+M zz!(8wt+`qF(ABFfcW&1IcxnpJ1U>rjThTsF5oxf^nw#}3wjq_VL^tc1o0aCgnX&XT z-kGuN{?)v+QWBr&`__t5oT)kAVGF=YQa&z<$bbCaerR+{wI!~s!??phE>q0WML7H| zZlmDnnQEps#Y3TBrzzsYi7~~KJv9ZiPn+TiqJ5kq(xw>AhR^fPojV2Fklz&3oHtF; z%Xp_LcK>QeqLsuJeIFOH#Y5N-4;Wy4FF0WEN$FI+d0zH>ziRXZ zebSkIQN2CZ9BI)cLUNZ#@D-?kymYK@m_q}bmtw&jU}H{O+;wG=6|IOk>XQH)&9CSy9pve=$!w;3qL#-VTV8KPSBRQFNu~Zh&jnL!h)@NIPT! z1?wSDniVj0)Hehw!hY8wP<%@cf&MREi6KyNHKm3?m$jR4s3~{!vzlY{Qxx3GfzRWU z%$RJ$K&@SC)!WM}*TLEbIHt8PK9^|q!b*L#(Z8X!yaFdY!;aWTc?LpfO1g<(RriQT zea?L#bY8qIvgh@DySmQplWq7@u`WrRnj@b_Fhmq%9(y=+x1^Lr!1`q~cRyRb9KRtU zM{<{l^l+QUN!rxqtQjLQheGkt+2Rh39veUvVl z#+g}{1(2SV0wjQe4v|JH&)sf2@mwvf>dZ^|r18R|r58I?smtkELjf&ksFI?}FA#gk z`sx6xnDU_O+&bk9S-XUg9J(WYjd=vo>jIj~7J>^ovE7xcpezA+2GS3f3TqCe&o|<7 z?4|9|^jY%F_yx(@_$Kk&3qmKo!G_E2>N{J{?e4 zBFHY@0$(NK{Xqc9S<341-ln%e8VbAY?+Cpq0Y(Ih`q==!@kPzuif8+`vQc!z*or5R zSGxpI#pji|70I=t{Hg=)y%bKr|l7^fLup@Cr z&?U-0U*nLAF;I?4O%QZ^Tn#)E8J(=>WIOCusw z(4?R%gnC4v)79&-V3DrYT8W+VUe3}uTBRT=)ui_-7L?-uaPNjzeWYC<>94mc>l(1U z6crq^S8*_~XK*Ch3zDQt?h<8wWx1TxL&q>#)@tfPQ$i6#iWJY)X zO`f^}bVUyy-yvGaDI$$2S@SsV!8WAE576m)=5Z+A8~lo%yaNWc)HsSn5UVJH_;9aS zr3i9jd4p2f0Vkx|X@Sr8irCLU!S1Q%S#BgP*XRNGJny7{FJK!A%k`K$O}Vb7a{Xbi zSd}(%bC!bF#+|bix_@1kTmB_d-XEjX|LVC+Sj9{L>|7P3YqG5YIU+xd zW+O)A#nqG=kw5CndVjmoY*lg$vR6i%jnR6uz4@^5&fz)6#>0t4=tiUB3#Z5-f-ryx^pTl@kW)t^PHw z!S!oeqqTlGkUM#+vf!kXl3|~!>=f+~e@e01t57u^^9CYr{{9wEVXpYZNK_)NJbz>j z0X+t+m6?T?+q6z{{W=d^QnbcUquGY`NMR>;NyNL~ZgP^%bBL$N9FYtTM{h$C;#8>R zy|0C*y~!YEnVZNbehjKi=Mxjosf=RuFub7R^BKT<875NAklJ(uwkt6skdrHi7@5;i zcfloJwV|Pk5@dp$T(6 z=w3Og)YI?l%!ce+bFkhTUk&e{01DSxc4ec#ww4=yb42StQE=|yJL#r(N%8|iuO0+Z zMQn?}`#;2K^gW z^Y2f`1uA8SV2Xs?4BkdNBMHus`wNgpk3z0xW+LDo0_3CvuHsr8Zl4E_t#F%af(%Aa z5gp=$+xZx7h499PYR%0?w6&fRVIIL3W~Ond_UT~zD{M|W*j7nR1%oYRmJGHjjyerH zf3Q6j$rZu&G`teQR$P@EY!f#1F4!)|g_CO(6ywI+#W}jX>GE@j-g_onzn8QkAOh>X z6=+G@A`q`8wnkkvI}q1Bg*p5^XNxAJ)oHJpzQz-XFSlv!OaV>HjK@1>>5&Y}^bv9B zSKA!uWrsL};n8L!!5N)b!qXl_XO{_zApJV1HyxxY593&U3%q5;>QsYdtiA+W7}Pc1 z6=O9D*3mc4cuvIoMp84iY?m=+jkj9y`X902biBTe)KoBDQ-;ZSo#Lv~{`1G{_anI? zUVi|uM7$PP<;LrTO%SiGT#u&{toW_d1zS656_Om8`PxJV&eE&V_ih12p4mTCYqiFm zxdMDivf~p8JH%BP?05)i$0$iIzls4cIo z8*0?>r6qk!mcrfPL8!PfHUf!v`SFnpVRlq~AoXAHP8)&5_|7uA^hX||DWtdyP9DcIBv;||&!}rCu2^ms|eupH) zsLC2MNfHw=bJCO4%!j0De-CNeMkIA8f74#fXqvI4^|IyQN&kP>8R|Oq99MH?*umYI zsy{Xt810_*as0aMq-4KBbZ?KhgHAhQt;4J$#zL}Pp?FB7aTk&u5GNkwo~`l5GT(-PvJu^KuEH zS14$H(cZE5JsF60_jmaE$CdQz0H*OJ&0R;fF@P$@I)cY-E>4>g0wfn7Q(F>mZ;#yh6Jj9*h}E%JzP@+|?J zWLWAwvX$IO@qqxU7?DCz#q}Sb44{f(6N)M`Qp|0&o2s)KOSS4=h$1Hx!zXm=*4G0_ zFBUJlZdA}UTzp094p&NB1DeW^lA_Ae=q<5uq{&U&LIv=<0IC=o9muP{1yIH3RTp%F z`4`Hp9pAx+uS{*Vw>g<1=qLnmq!e5Mg6}rDs()wz-x%Ul4vGtKUJyVP1KT0vCCU1mz0@Xe$nHBqLqgn`K{oc(bP*E;rMxvG24|&AikH@mtcvk|%_H zg8}Sg7-t=d59s}F3ZRM+0TfkSm+{H~su*UVs4_7PSp(${5BB1yI|4|~(%$@iUqM5m z$Z(s`nG#Yjfnt6zfM%f!HGM>vHdWBvf^<; zvaz>uVZJfU7IVT52(#py@e48*#5W1Io(fGS292;|je0aWpMWrl%nJ87*8 zpsIKXkSy$N2-w}839&TUR?LnAGsWvP45)h~3S1w+Fh&%(28s`e0|&8XQBkN%@NS_wC3Fb_h5f|Ncr1`C>}@RA ziA<-CxnPHZ8TelOSVjPOi}30806sCC|LdXn0O$X<0IC?yUs1(%{tpIF#n5y`RjJPZ z^8qApYv=!n(3ujPf1sFu6u>jSn7PjXsQ{`N&OeY>e-5CE&nvF;pZ#t=qAl+HB@27& z{C6=I&%_Si_W!fhtMMB$1SEG!6sQC+j1dL)hvEaGKwkh=j3}U};zofJ0;poByrQbq zD6k@cBnx{R1@^%Vk3CEP3npWZ*x^8Ae=^1jQuj$ncy9pr7$M=EP<%j0csPJ6Mo3Up zaYMov1E^x?zoNVHS)Hq88l!F!CwD*qeZ@nBWM*$e#BtWb`SSFdiqXRh22q#OS_<(S7dH_|7aH6Q>`*{>3mUOoTH?vh46o?H3 zw1*jI>}3o)C#SUvwfCO>*L4Zb6%O_4a#-tC0S#xUm!hhDHQ7S7GgohZ5z9?lX!-#$ z&Km>hya8&hW$yl<*1NXg1-aXRi+c+xdD9kBwHXhfiqAc+alSQxDu!`7WI9W3Z9*9q z-z2j9U;uq3$THbFU8R$rv;dN`w00sF9i1$6 zri6?^pqN(&@Qg2JZgkifKoui81oCQg09AZmnbD!!Y?4<6P*pq@NEY@s7R)zx!i$}} z9SGtB=t%U8Z;}x3mH=)sLcl#xd_V~JKmb*Y5TK~yhJa57P{q)9MOCRG;OhY-Z|e~7 z6`?aFgn&RX{~~~Ad@*xFz#jsrVuXM|Ud?zPA3^eYWrcubjg9KT9!0Yey9H2HJOoG< zmKp-W3XASIZ@cYoR;iuQWcQ}-8%f>;-yQbSaXiZB<*=h~&;dVln)P+EHZ z&2VF2Y^dInCkHI9!}+QM18~}QYw@~TtBq&Ajdy0k2ZJ#AaT@IF(wPPS8EEv6M}M8Z zUA*`9oj{dyE6il)O^a2J!d{kT?kx`7cn~Q;IwP@*_zO|Z@V_^XM-Ro16x;P#TB*G{ zWh=f$Hra&e=sHWQY8|F^ zk#CD^C9;QsNGYKUpg#AK*Ub1x6qj_ERzYEUhr)QXZm|rje%0vEVEP>p66T}sR5N*8&0EJJJznlR`HA6J4MHOA;0RwN;3D0 zr>&$SW}KZmLsSqu$TbkbQ&Bm3BkEDwdCJ#`uHDJkwIb(ojoZ~lFT;DnET?Dq(p%su zFFFgCxZxV<4>1yVo|7dO9hy7lR@WWLsQ7q~_W}u4v`$ei9n|Yd(^%1Z&lRYQc%1x( zy7nlBLvg)C#Q7mY1l6k|t|KL+nXJt+NUw$HysbE(G&DZX9f)K)?*+d z5&Mjb@fK<0zmu8^xAEIRgly91v0w~{sn%jr;z@%{vHN3eSVqW*zJrD2TJ0^0Auao1 zNi9pm3W;py0bDjfgy8jtYs9-T4wo%Uooi3gMH)DWE$6>i62Vre*48y!%I4cpQ-*iw zet3#L#T~^Pgdo0w8e-^$BI`4R0YL=n1Kz1gQN^};E!|tLkByb2kFXsi4w9mPd3rQ zp(wXBTA-g1M^(jl6W~lW)e&ZjpoZt!)umkYoD8!&5WXmi8ul|#0}+=GJy6EQDB^e^ z$%7*1NI!QFX(|gv?0z8}|5Ir<1d33^8WeZ2)S@@D$zSs74SdUT3iM zSwR+pP-I<57!X9DMiA7bsA4-}ypL>+AgEh1RUAC9qx5RD8QPZ%LEwuLLA)8S1cDG( zQwl-6Ftw#`Ab@y5ZUB+0tC#qJY(^Y=CKEn<1cjD{59BKnVm^kiP8@o8$gVCGjOJ&U z+yn4MQS`8{fgaMb@_`4!wir7+3Iutu!+h!C9wZHAVTXNI!qI?n2EudFsOLQ*;>QRn z)DbxVqR$Z}Da@4Mc9o6(2B~Rm?d>zSgOh&X-^3*({)>=MxUm{e{0s}u11I2A#w2ZG zCM5oVh2(=1SPT*4UrK6OIGhkI%b$?=Q%MAS;KXyJ-aQL7Ww;IwoIvq9Bd5!*YPK?G_zL2ZjFwj<#C$kuRzdMZ=J!6iFNuSRn|kP}YeixN&O#w!6Q#MP976UWO9 zp#zbG98K>_jZv*rqv?G{bW;0HZ`iV;JzkT_zu~J=(M9sb5v>_R74a_Cu`4q1!x8!IQZJ_JBpqtQat? z0x~>+VGk+VQ%LhzfZ@59ilc)oc%*OzM@0J@BREY%98=yh(hl8TCL&%-h@wu%A!47? z$$}1h$>y&iHBDp!;!09;;Wlc-(87X?B8D5WkU+%nnvz;JVTj?Tk_h%7hJB>Ey#i{= z@E9D#fZ}xqN1qjBAqGX(C}BVlff_MTlcI|4i0MAEHDaKy%2aXi#E#Od(OuBKTnPw# zQ6h#%@Jb*CaW$n7!*a15NFZS7%bj|Vn~wAlFBn^(n{eSfD55l6$l4zLd-&4Cp@nbT z)uqtFei^3q4fvucTG-uya%wvm4_HvFim}2|K!gV?>?gg~w@BkySYhY$>o8#rW^-0x z9#!4I2IfP81^$OrO5I6GSl|HJyx)?VCK3zGdVsB@K9{Mnz;rA)2Np24oH6qUdtx!U z(10q4NN~TBS{IB5;@0KQA?#fe$sR;-pj5iup{5M4z(E8kWM}a6=}8tMP-JaK7!X9D zMg-Kbs0lk_wvTL$2&h9c6&<{-qx5QY7_=`JBET0VB6tyA2}B^SrW7JLDcL$c5EU%V zjS7;QdN~}C+VVd3OC~y4hvG`3gVZ;~J#D}jCk`PD*wv*F!a*6Pwg$c^iV*fT5Q3JH zZy+MYvKT2`1H^cc!a>rj)kq^*Na471){iur^;V@eG$b<#l}&>%si6kb8rrp?%DQI# zC1drG{>_!4#-@4`W;)bH;AhZGI20&{sK?7lQ>gPQ34a_SnRY#?X(I8*8%fQD+omSV%7PA&Mc=dv8fC3&tL@W%-fEyGkP1gFK!u)$M+$DZ|@vkOzv_ z8DxDSJPUa!vTh{|2qI7;4{B0Wu^rgJN47>D)WMl54qn_*dNq0&+LsG?;ENJ@`~33V9rdrxgT(j{J)(#E}R+%tX*L7fh(}2b515YGjgJE%Q96Qys@M7YIF{?FBe+C7bRL~;FUlN;%Z8vg%i}-7J-0aN$xB~e1=93 zF+*}9N9>JE*l;5XDh(TwFGxta316Eyh^C?Q-;^z zAO{q$Gf4VEa29ecA#dgGYAK4l?P-kVTICx`6>DB1_(7s&A0bi8J z;qQ1Qkb}6IQpiD!a1@#Mz#HM{`P_%p@h!1WGV#Nn4{CoUHtb1#Lqf~m_~OJNh~4e# zQV3#MhN;bmFNz|FtPzgx^B__zi&4Z8K#T`PER$YsSJFrpirDjl!I8n?vEj;)XHJCc zB_i0Rgb3<(O2Q0B$>uI5HBBUDIFr;|xQ!Y!oQ4JGzzp&10fh|A(TPj2m|UnKYi`7< zl3Evx8{*dGAECIcB$7SI;TWlO7eh@M-hzW1P{__8=?lSG$U%|yLc)L`0yT1=hDFue z5!-!aYve#3l&R?8g&n0=qd{n2F64kOO5|`0UJ2wNuBH@nINdn?CNTGKZ0_8HQC~0T zNmyt1#GcB;67N6(rgIV2mn87K3tyi&L~*}eT?$bgmt}(RMNvfYTq7r8%FUOXu-F%) zi%$Sy9&~Y>^nCY`2D8w`l8c))z!xynvNp87(S)fJ!wV~Q_ygk{`T&^EKu_2QRD~i~>1WAKPN$mH)!RrKN|R`t(#u%?^ev$zfDce$es@ z57BC0;8j$EyMM9s)*J4L8Nc<0d%2%)zp%pnWG>Vw?TuZVd2o-fc@AXY!yQ@a#uKH1 z{wJ_L%R|E^YoMiB8>A}#s5jj}gKz>CUlCa-PLcIZq7gv^Y7|GE5OoCs+|($J1_IM5 zK;(0jUXA_??aPJY@I{H@mVF4W1d0<^QwqhMlpI?Vh~M((f0CMdiQH1h@Wi;x#BArH zxYC#{^$kI5=i`eLht|%vt4pD^lQT^1H29(@S~K%MT1q~gmSS0q(AEGk9)xzX^lE32 zMzRoE1=jSo+O?6kn2B=QsV};;uX1{QU2SZrT^Vdujx-Qi_t%NA*Ac>~D=GQ^mn2J4&xc_d@$};Rt+D z;)u`VmB10=YD(dVv8y^D0VP++fc&s0f(4bF>3fNkl{fMXGkCR1Zf@%HB|N76Oo9*43DIf zpogOj^pO8EBKAKJLa8Gv2}PVGS@I02X(Ca?+z+!=+vjXGikOWB7ex{KVj+Pj;=qzx zHeo1Y|B?vyponv%y6p`$Wq1(|ia_x?1ExK?G_PK~0JpuOrU;$kr%= zx-V13!8<|O1u&%LR?KL6j5jgj_HE~OL_?m9J@tGUsH_?oX|0L z;Se)TvUb`SA}UO^&Ji+-?8~*muC8Kuu@rFjLT_0#S8bkfH{tflT7jABEXpAgg z)^}Xrk;g8+>gX3N9vWP`cvReln~Ph6?fRn8TK~q{df(||eQ=Hz95>d2Ltr5E!W7Wl z1Ab~6iad4*BHZJblVdVE@fdt8f!EPPTsqU1Cp$X|?!*5{u)f}AMRL@cgYyyN1k7uo zc%b^tCRG)KDkGi!+5oB;$Ned)R>H|$nMaODJzY1{s2Lkt-W@Rhhx0vfI`VL@5aS>HJu&eliK6~cPf~PGrGi48?wm`ADijH ztuw?Q1J#p(FvEVLtC2NsHC@uTWNC7mVwJ5B4+k)wp%DKH#efrYBP4`CS-u^aD}6o?d4kr;i>dr$aeHqFA~33{-3H zwrFgi^ent&b^lW4ByFxv*b2((I?XY<8%D?QXw7@&C|P%SszDm9M1r&wC2o)=j|s|i z(#wp8VvsfyuLMXFS5pe46&^AIpmt<0ftqJXBZdklSWAs(#GOZBsU0~ahHZ#hEZHu7z0N8eN09B00qp0%3HhWy;f&i+D zfi^)yVaO(%YlSk8Klebk4C{#&B4eBiI_=09{P5x0#sHQx6k$CS9{|@j2T;X;Yl2&lcfgAlWJ{To zglu~e_Vx&}(Mlv_OHon=WcvuVw12^bvt?-z3`E^PJmP?dm#jot*HEp48_Ikm++=`3UZ3Hb2Tla6f_K0}$NP0aP)9 zk)o;#f`c?EjZ=RQpsFB(LmCPrIN4k)!i6EY3osNK8QQuU)|`y zl^SN~!ah)Z0EjyxfGP%vQ&e$5+;IU^@p&acoRlhYpJv$Xt+pqo9yasDtV zpxmXv5*y0Va2TVx%ivuL&819BqPZ^P<#Mhds_fijJTty>Vns-bN?O;psFBVLmCR>HQ8J%l7->54AY5jMaDQ4bXtJ{ z(r*N?oS_JhLh%7$?MDGrF~FLliVN1B3ZRP5E17XSiuPoXVwd}#D7~}l*$hPW2&uUO zp}=T!K9Yse;;= zodpx1mMkeSQu@*W&NDRPS|~mMx7`vz6$7^^s<^oA-T`&9o4A@%knOmU+HgG_tsUJ_`DJjEiGH(&XIJNJD(^`wCcG9i0Tnm%MOVG zrX2|4uwj}EfiXg>z&jQ~OPQ5KXs;(s?GZwwl}Ln^qNEIjwgeSaAhaX#N+2|GHMJ00 zffH>ZpLWbdA~bmbt7|lro@y%$JLBZqb5T|khtSTntDCF{O>);60E^|$R@;0i6QNxW z#Rnj?jR90KVvM4y3qrHzs%;LSsvtruWv-fRt`)Ds5L$-eM3*6BoC;bbcXmer%NdGr z8x$V^%-$YA6$6+ls<^=H!vR$Bd6k(vLyBF_d!qEts^=6SYJ%{XbkPEjeG6*Mz+>W# z7>_*$?^t*&WkeE>okp12BRobck$5acNf~%-E4D-6v7h0Uz+>WSO5w4R&hG(ec5E-9 zS=ZBKTqw;tN`}l_v!0Uf*#8kt?fKy6pX};7Z=ammHR~`RXOukTy7uN#Jl*$v*e9-8 z8(O7L(OIa@&`C~P;V&Vb|FGLZy9Of}5o;b49{}?X2%w4)u@qH)n3o*$LNxk_0Lqw9 zFIssnZ00tnSzp(#HP_c+O~TGp1Bx$FPzJu1sQ)`+*?S=o3@b7+g}wx6`y-ta5xx172niMna+}j ze^G|TH;F7a1<+T5EEAWiEMYa3*88Mc6`G?L!qu3A@3v^4%1Ky*Fos&xg# zqSy9a;ELUAvruo`f%_i3Zgt>N#wG*E?+H%rQ3sAzB0F#?O3LWK{Q^}+bl`r8SE2(a zuBKE6?uA#@``eA?n%3ae1!g`R*UQe^zQ$3YDT?C|YHyr9FXJs4&BzlHZMXlp+X*W263;3 zS1k~iGAjw<{z76`k3bx)M1r^!C1rrPH=(Ks5O+6T2@of)rWA-fe$(K{Kx0$j%+(pN zlXg$fJTdn$kko2NyvA5%G>g6{OQUAE8uqRokJjOT#0&qMJ6VC{(jsu)p6QN;yoKMSC0GJrMNTq}@;fwc_Ni9Uyn zaVlt$&3vYPg6$VLvoZfF)zdPXE~lN$51@(x)f81+sCGaARSct1RLKbv#%4bF%;ml( zO7E;aQ53GT_lDh<=twX_0 z97J1dSJ%0BawgRhCOSi4v4q-Yn-yhZv@s|?0HeJsfGS3~QB-j;+U)^UO$Ll6n`_0e zFpQRAJ5d`M<5bXT%e0f=;*Jjou$-X?4?yvto?MLf*#N2-7)?>d<<&O=sN(ZVVzgy6 znT8a*{P#rZomJ0jAgV_g%^3^@Nc%NZY=g8U^2I3aH}IN;(o&`*QQ8{9+8&`aT8Tty zDN4#fX@A3Z2$c4Byb>r)T=fQ}S=!+7c1j5PfWEKYZ>e+iJG>YBI7jJKc|hOH{-Ii{ zHD1r0E4ASl(T<;tS+Nsd308=!GFb6Y2a3d_&66;05?hTPgLgXeblgSt;kEUF0hm46 zS`@DaU8K%Dtw)4u>We=8MPK|yMSW3=-X@Pje7pD~8N1WS`l3*exI5FH(m;t>Rj4a zh`X;5OnarczES+XO8nj=es6}~=)#@g=hbj^-n8g7@=r%ReXaO?o%p>4A8a4}6)HJz zW^^n5Z)Ws*@#qcW_cr*wDf%-!-|)R?9R3sCjz4e2pF8m9&g9-*c=aayxf_4(!Jla} z;locw_rmpx4STJK{sk^JY>9r2jrtA#ycwTFZxO%uiQl)1-?xe1`^E3u#qT@dS2FOO z;{Wf$|9|{!`1uKm4CL%KYOB?JqLbT z(SPbYH@C#$op^{RK8u9qplL+^1{}ydve-EE6JL%aOs27SW)8N%G{$dIn)rESEgEO% z#>vs$7*{S$TBzVaVxhq3pCUJ&#Gmiq3O_%_pAWwtem;gj@4O9u-iJTU+u`Rb{P{lq z{1|^8yc2#tfusT+|vtOIv-j>IP9 zxJ6(j_O`^GXCkp-4X$gB#KL@BQ4@&;U^rnb67#%pv@a3^)R<0+MD`OwON1DEEc&@r z)nCd#Pr)D1_Fv0Czm#B=|W7crvY387amAX%A=F1$WMZ)9Z)pi<@I3BlYHD?4BBy zso*J7l@rCEg%vr~s^xy+@WVH5f~66y!*tjCaX45$WyYPQt4=rs_x@N8OJoqQE;wmn z<%EHHs~@KMtzXj`t@T6Q$t#rwC!GXtBW|$h1uC3NY;lWiGFmsdJ=#}z3Ue7YqeqLh zI=eQR9>R0<>s2t>zKB{3sR{bhT^mGgIy**JQ_e1BR{C9;(F8X2T;ZEriv<4mOEz) zJ@O~t&98{ip9*M5u{^xJH*?~JjplhyN9ye3^s(ce9l)E*w9yI$LoeDp*213)Ep+%y zzB-%vAe!Z&xYBaCS0=XcuYxMe*bnLoUt+VaMwYJ7Z{ruG{qJl%Br37Xr}$j}h9B4w ziVyGu&kdl8;Rh5|TtBcdfGUO`P*j<+ovUGNEZ1rmCm=RZBw{`(fb?RPFKF->b@Vqd z1F!Wim%781(nSGHWk^X;WsQ7oiG?GLZrT<)&~rrqRSb;|8rYN*2tHHYB^ z2{i+q`G*3i;`8cKz#?g0ku$HQr^wL%&jiqRhm&KS=d{K~M;p!dn$~cw*?!4bqYde< zn-y9bo<FbV#bznA*cxS^F*MB%y>9y$ zcZE08fo9Mhu9Wr*XevWWiYhL=IV^xGhDHbS>X-nk_`G7nn==B)Vrpwo;Ej}mD?sqw zCRg>>1n`X^PUWDu@MbuGDh9j>bmrFtP{rp}7`(YTfVSfBMl#Z+y;=6fhc`RK!$&bd zsYa$cZGZUT@k5DT@CLywZw+7%L!tf!iifyk#^G6V+>6o{-z4;XFn~UWbCC3vDyOi* zqC3umi8Bf&k0$B6?&BqQ!FMUppA2_KjA7~Y9&HD&kt5PAHB_GD^ID7JZ0dMtCIFSe zf$`|wm{yqu|A8T{@d)Q3s21D_R5?d{k^v@*RV^qlo~l!g-h+j_7k(VWOb@^#U%Ga~ zHNcGru@Iy)60<&kg!+X4y>UExD1M}fJ_Ff~^AgfSQnD3eSU@s)0W|uf@NE{`fodoq z^`vv`skK(UwY;)C&K)nm!X9Q$xZHO}Jk#%r*gC4xbZ4t_sQqsB*oT?8>l_(OL-g^v zq*c*>W4&^mS&}y=A)FHU8xMhwWO+5}hn}pQr3o4LMZSreN^}ncc~Vlpg8I0V6w?Y! zQ2C#rFpbJPYA9W#ZR%Hz4h{AXw#RQ4FTgnd$oS3Cq2~h~LdO>1mC(D-T?~zRo;9kF zA@Xt68ZoFKCZJ8$v1!R`R6gF&ylUXP(a40Q&3y#)NDltWGJit!1uV_9r+wnF96bf2 zA~d8gHW;app7%(E*%c{BOuO*Bq@-z+c3y#l&yPAhTJ%lFgKG2yebSkGVXX;gS;6+M zEh>xj1H$}6%VqwzfgstuL$F}Omm?B+l9H^$<>(yZ;F1T`Xw31%(#$1tK)h0oHB^qE zA68kks3I@Nnzi;|W2Dkp8^K;(iNaQ+XDL~oco?0y*!U*l;3?&D@R@{zCqlu%FfoT{ z`%0C1b$sYD8Z+!9tc>P?PfUkKbNraJ)_h1>eTk=jM^wq2Dy00;Ty)lAg33zKYEBX9 zfFWbnJcuVoc*w}=M3-S3o)0zOlodA8p+HcUmdCWi7~+t#z$#mBxUItdYL9HSC8F@D zf(7tAlOxliK{R+dTNJ8@HW;jw<}sp({1&_{3Cd#9UZo0&H(|aP*4i5??M9`&p`Hpm zIP=eA#O7EyRc~4qmCWly zyva6U^+u(O0n@P_V!red;pGodF?wOV-x0iYL}YyEs>620@4RLF)OXN#k-4WAz8 zHW53Y0xKU8HrIwK3So~X{fx@`!7J+{m0GK^vA!7-R27&|KQ;{OELxt(Y^6@6QR&-+ zv4?)fZCV^9Rb0{0_+ThFhS)PR02)4b+O*K9V}p4^TIj2&km?*LS{T426T<~i(MVw6 z3qlq6Ka<`N_9uf<9p6ZbsDx7Sm81xo9HF_2=+?7I?@D*O7@1(QKuN6WS+;g;aA=@< zSjLVwaXz>&?(bHh@4ulj04sZPOvUXJ1!u1B@isI6`kq~4x@1+=)H0hj=MY|XW=dj6 zh*$TBp^SMf(xK%=_LY8#U0vt)Nw!=?$x*N1Fqb@RuNlu6l(5Fb^q@!vSE83Ar;Ug zkDsKZA)(?37M@^YhYo$O9*L3HKi%1Qh1JP6B@t3l>RWt&rX% zaGtS-ERD+=Yf$fzmVUF`mI^%+U9qo0!Msr~WwRRLAhQZ0oQFjb3@w=_wWK2QDWCK}LF-%I5gP_W({i3VI# zt*1F#UX6AE73<8BNZ!3W622ujiaHvv#O_GqDtvb&u`PrUufYFki3t$uQRfDhX4hLI z?KQ)-cK-%$AIGzEL=05=(&hKEtFt(>#_A?Wh``hnee!0jy$XgjR(pCvI}(zKPo|HE zUwRSWFBRz*oo83qo88-yfw%!mz%qU+d)+rNyGMJwgp|Y$bEWn!>WlLSl{n)!?S%|8 z#jEji36Ir1BENMuLlfI`d1}TqyR}d}084A4cb65~?EtD66TKBx+?l~I3!sWI+f`9z zPMMsOA#FdPn1Nr=amDcf(z7P3rs0FJbitksJ`d2HJogvK@hy47c~hxHnxb!Np@&-? zs?_Dk*LMZ9oS{mJD!)MNanO$hP{ou7cPU9BAtZaxNKZ4(IBoPR0nKF#!3CSx?#fkA zmH@15m0p4WVxh1uC+aWEF)KJD{6(vgx053Qw#TJv8z>qAyX3(#8kK|~OB829YkQOj z`vWpk|LTB#-= zM$D?h|KXlk;$fnk_H4+!D0WG??bidf3!z|Wt{8H)=0f5_ZN-%9`Db28v_|Bd0pQN? z)D>WCdfwxyqJ^9y(io7FLW<79Hl(IppquriixlsTxuemOcfcgS^a6xwt0>leaj#gV z2y$XQgVIi(32`I6B6edTxkmp4pXZ$rH;Qd2EZ1Z1H05f5$Qygbs?{fd=2uko4&Wqs7oeWBcz>M^Cy3HfkBf~6(MtclhVGIB&T zg*+kJvb9_uYHj%m7FCa@fDcHl+Hs=$t({>@?@i)S{R1f`wU2!@7T!fAO!c zEGyP=@{HeN3q;9Oum1YFC?fv~{$%m5+l1*7N@bU}0aLU`%$GhQ#{2w#bDI%IGZiDW z@g4*PJB=3~PK@y`_tX^7K5e|mi1u-cNE>goJ$#;bpyC8 zT#u@lAa5FVIkupfuL0B+ESLkJ%n|z|E~yQT)z4@)8%9cQb0e$UgHUcah;T)f|gh3R!T zQ1C8nM}F^ftDsKyn6iKXK6h!5{OSO|>g>U-L+!kS%`&3oc^I73`$f2P$!Tpv(Hn?yr+}|G3BbP4(n6YN0(HyQ1tWka4Ds%geqjC&k+O_m@Ec1XkcJis3E*72dc z*{@T)ne_tkPXEmJPDO??FSD!bymhh-Wo9uo8R{{|G)v$ABZEazgltPl*ruaR`*~Eg z+ptqc)7-;OE1}Ij8g_aqvQrE@-3(XhVW%v6iN~M17^#YQdYh1x(B!bjKVr2>cNo%L z`3Iu*KMNK_px3Jn4PFgccN5OCQ|>S6pvn%B|5alAuO|f2P{x5K>0pm&Y$}X8V%PQqFGFx69?B){$>v!9{dr`Y9uu6X4XG?|Kp*2dSLa+O45QXstz|m7=u)ofh32qK=dLt$>1cZ-@pVYz3!a$@Bu&uq>e(W*kM!#cj3NZuUi62XFD{m3OU0`!E=~Orb z$C4FaMEKnleYXV5lno*lZ z2garzM!r;#TX-jrO+s%hEXc2ETe=#n#i$>QR1sayk83-xu8)Z z4TX*J%R+BTFv>tt|2%+id{LX{WOh4M{`Ub?F;2-0qvH@Ad=aqTv>a?R0qY#J@ z{!cW2*8r-DAGj)6SZWLiE6lM%A_L7vr=wOSm~ortto4>X1krX`B$3gm1Xxaa6X&V*mObg#W-XOSiAbhF7ZXpw%1|GH8EQO03M;Ls9;w{> z1do=gsiQ0q(i;hD)|bQ>&kiugtT1HduP5E+JZVXeE31+sJA?3`q|9}C4<3@7Og|u^ zSWU>t)qVD@S<$)4f5L)AZc=M2cF3HY^OUewLUd^L3W;+@M#tJhl@raiCsgO_tX@?v zoAfllHWUn85i!f!!v`O_avSBYet4~?CKv4TSfrjn{c6!ZP7&!2A156g-GXgMWrNY{ zda}W3&YKgcy^I&K%9`}p{i}Itl_YlP`_>9toYf95VGBTcRlV9_L==&KwZk&ev8+@9 z`il*v(M{Y^%L*^edb>GTztVSJ;mn*}*Ds*Bd5J)uC(|bSS=sz-6UB$FS{Wvq z?$n8jrdxftA9!lw*q0KoHqq~j_Hl|xn`rb__&o0#hyTDfs!GTv#T-M@NX zE^Q^Y>npU7?S7gq8Heo#P@$JQYz(DBk9i>&C^+VIsVIUmQkzVNCO{~;OC)&Um)us& zF$~3ije_>af;lM29K~N2Z^bn**e_0-19#cN1LxYc!4cTMxUv9|`GQJqWT3L3)!%5= z7bIXuqKf0Ym9X`OJFyJd%1M+0{}tuH|BXGJmXymSJ*v703Jw~W)f$G3o@fmVnG0}1 zxjfXGb}klNMAP<1Jy~@+s2Og?zYquSDqAY+h8nf@>SPCH&srMcb2B!FTw79$LxWC7 z?O~Ze?7Ud$lC&Oc|3*)1-0@!W26;=fQdfCOy~i6{a5BFEmasM<(#`poDzZ7~1`w!X`vLim+xncn_-W1$Z-4_#s-{$G0_i z6j7npW9%U6<&IF0WaIj@y#+u!9e7s(3kwEbj60MW)+iK{6!o#}tNPe8+!k1 z$J%u`oAm`b7I#>+^m1mC*y>bli)UA>x)k=pj$NJaN;r}6oCL$2zw8bl4v$}CHq%_Y zy3T!*ZCOVKOOxTL$1kS~xOW#IRzlZPl`5vdD|h0-K{kJqp(KYmBF4mn1E6?F{&FWC zEDoTGF~X{-^3N^E0Qx5ekd>7~CSZ2vG+34}yIEf+4r4TC{751S&n{36wv?mG;XVHl z&|bcB_{Ctu=`{gV6_bLXp)4VAZJ`y=T)r(>srCke{N8YvfM` zP{rq!=#OTIn1ESqfh!j>QF>|BGZTpF&4izhx5pqR0!{x4od}fC9Z<7@q8ae28cxtl zQ&T1UJk1C7v|LX8Tdu~SYj@Dizvt$w#2&j=^0BLPJ!aHz(kirg;xep#Q+nE zDlV9)1yIER6N)NRj=ReIP0I7cLhUyEXm^KO0WB!ju_&iI+>mO-71*l+n#&NFqRK+b zUAn`!2T;XO?m%9>Er2RMul(KNd1)mlZtB4R>WV2Yp`~!ASPI30-wJoK9jdFKtR`Fi zSiO$!MBplTXY=g(-Pa8c)lDd(osQ|Cc8Fh(Uy;E^-zJiLB0!Q1{(MU|$+F2V0q17{ zR55H)QN{INPX|!Nut`OgDNo_DV_@kwSUbW@f0PY4Gv}S=PkWaWVg4@k#x;t;S3s_) z4+!8JU)0<+bw>nH#aL4pXcor>P{rq!xu$LgcJHW*ledU_J1c;;;w$SUBYPVa_Q>qm z#tg9+SNi9|@p}5f}n_^=|=G@p%;%7#<6tt$1LNjO=Y- z*c%gSS*gv~@7u9qUh0$hEg2oi6A~Yu3Sb~3KKvYt4~P$c4xow=9~4#G_%Qpcd=$dEwzXuTRo;S+ZL9Voy1u%{;ZElD-C4eeM zhzPWd7X?to=am&AaHJ=(47vV6+#&|BI)Jv~Awn{;w;^Ib&lp$C7CTDJH@=GBl##-E zN_cr?052Jq+Jxc*qQxr$sA5D5MHSb7ydi)phD|7{%xF<4&2)bN$;DztIccW12)!wx zHxVf6PY3XgFKTY6_-X)Ej8GBCs~-eV#pjh3DsrWnei1-h@lYWdS!$>VE6lNhQ^xdz z=mgB6CxiXlbOWcI$h?wn#|&gNCK;Kxxb}Q#WpCzjMf1M~3>5RV_JXVQ#!Yg*NxWgx zeA2qCjha%Tkn^<`kns(Or>^;0)yP~4e)LM{bc&st;%dzUv*dnFtmI}3n573K;#c^icRK-hnn6dmZRay<;gv9Mhb9$(smG_>%alVP6g@Bnc`6>ftb?| zhy-3hsG!T;T%k4#3|RXW9Ek;sRpeTA5%%?R*QOIuPsOfHbh???JLW=s2K$g<`a~$d zKI(e7F;E{$^gCl`r(Dy4UQ{kC^|mqRLBYT|AxLXyCw%BKA@>UEdFRvBP6SYjio_kF zDg&OH0#rqB8&ebQ;}nrjWV3d5T8C{&Ezm}{?Ah5#ao*w>q58-|Sk_72S$$V2fJl zzPUq?*T%#bS(|uu|LUObK8c9MSE2=Ly3fnjtGCZ)i$(c+y|vdFqKN!kdo7A*zUW={ zR=|8<+}jKHkkrl@-}CrpJynM2w!Td`_ytso@&JeS(Vvyg&-T&y&{b=>KKciqnm7(t ziC6pR?~3+uiU>B`|G+lnH{3MmO~dsv-f6hqzuM2Iszl*@Wfd~nPqPJ5++>qk3EE~? z#xwRSn+Dq(21kVPB3$yAY-$z*vDwsp!oyv^?lvEeMk)qqqumJ#b^Daixlb zjG{Ai>4rK)*(T`^$q|FGW({|T^O!FgW+nzqo)DIgXHc!{R1Phh~KW zW{ki#J#}#`(2Beb(LzoU!A9K1Hsm+rH1AC#_Ojk-#NEF-IEUsE&GQvm$e1r-%cZa} zA88Eg=`ehnSRAKpS1hip;3Ra961;3Ro4Tl8>P@y-) zJv9`_>n%$$*Xmq5?Ms+{3JiEHin2yCwS-ZNV`G289M z*mLy<`XzII%S`c7{9NJzb&rVcWSfu4IIkf&i)*GnEuo+?h(N z0;pn4$xu|8k|c1;Ic6b1ggxRk96)l{F$C{EaDs-ylUfIb-jt?*oZ#tMv3iW4%3851 z3{tw(*x>Bxgu?ii#?Mm*xs>i?^!fmaF%0sxvI$&+d~*O*41-iuaSihQ0aP&zQc+c^ zK|T^d@?GJr*NGzx8U%;I{^rOEC<8eDWagfF8>NsPC6 zcObO2M{~KJMmCDMTz`hE^jxkqs*GoJ=>rEf7R{R1l@gAe7IY9+lORz*ANl8XJwHBx zPghx4TW@cw*I`&@Q$rrbm!yQG6VLe#L0!|nnI@5T^jtQU2Icx zTywXoJ)OL@XSssVM}RyB3l@{Nw06zuJ*#C9y@{$AxTh6I%ifTMVE=4;VZzlnOmyfbqTHfWa=J z2nM`K&dVbMjmcdi!S6xgE^Fl&fMUM}Hcw!|9AIOvo!E6{(s8MX!|f7qBJp&_bJDV3 zmfJEth4a6JJOY@bwE~$l(OMC5^4+X&^+-FWW5GqVBR@82f4(#8B&z*NYFeo0 z@5C+0@BH@yl6h0Ql~rop-95Ajt-C0?Qgk=KHR~Zz+ApNoCZJ$F1WL04rjGiCKtSsNySmQp zlWq7@u`WrRnj@b_Fhmp&oY=#myCtP00@g2^x%=7b<@gN=Ig-0Xq}SOzPSU0>l)xB? zxf+TO7#i&aP{kODQB-k9V%`)$6=NhuQDsVVPKLz&h#}*stoH?wo|TIwfPoH?Mk~*S z6}5BlmJ0X7daOC4o0r3a%CRBXwB<*i#!NZf=pU-JTI12X zKM7hBy%W$;bkW}N)T4JfRH@6MS)U1LIYX5cRepikL)Kpppo%FE$fTLYTQ7J>^ovE7xcpezA+2GXyT3TtltJl}}Rv6r?-(`U&y;};}rlw{GV(IcRYRP0IC>LS5$Gm`2GP@F}%2<%JkyX0fi-k?BXr(RU+QL0Ftwm z)#JTQZ-F!vcG-sm-R?dgUjezIK0APKd{J|^;<+S%D#lhkfo3rfKoy@?=2kq@j!KL| zBzfWgMDv>gR2AQZN3yWgFc4OlWBNu$$0!=Z5S#Quw&^B3JJU{Tw_SKLT9b4^EVjKE zn%Se78+W0uiJ2Ss!Bu+ZhUyE)lQwpt?aP|4k&=c)Kv$r6lCCprzQ!RJW4gk-5s#5w z&h-Vcvv&vBSyqHe=j<>;I?4O%Qa0}(jR)DdrfD#SG15Efki1Iz0TIEc2^BOc=<11k zM4$&VK7j>`bhXw>?3DL%md4R41yQLcy;rfI6#s{NH?-;_?fOW6y;WJ)faRsA;F!IN zgMmGRBgtM6W+rzDC%<1VC-u)0A8HGy^27^Oa`-Ce9?H$Jo}dtU~Ya^9@l%{z*iK%N$3g3LQ=n zAy$kHuZ0~4aDN{a71Th6Cpg485n^5OO~SfWrE1OX)3=+p9sY}SjJOnPaK;FHSUg6M zT!PR#afdW?)KgO-w>K=>$0;J%lQgjn`8`RR^QPf?8SgaQ?qBWeQCA`lUr~i@_F}d? z95x$3g`RBm)lko&hvpHc795)YSSS^GXrA^3D2fZ&^D&!^S&@=NOzsP_h{erk13r<>CIbopQ>R;0uT)(C@TI+{%uambb3r;#I8D^=< zPRI`Nrxf%405u>!uh!PDMk>^d3dCh~Xl zzD@IY3FlM>FWM1aP+{;4;Jx(5sb)xRdYrHpKwbVdR=eODtJ=^|MM*LNuhMSq$3&*j z0rFh->yW8$`wqQwYO>pc{_9lS^RZx& ziqp!5y#;3~&YV}g<0(#^qK`;>jw`o4dPe5aP%tm8psY^AK4b~c|EnVOrZfkOA{fcp zklDnSl*>b{6DzUcB090t$k_1c=Dv}ETC-W(9H&s-DM!)WF+L*dvazJ5raOL|)L_RT zF5L%2*Y3#@u7}4#3aNE^AhZar(#huqi>B`Sx-y%A zF)-0f;r8)*X4Km7iwNJ7otZb|mFUcft0~o)S$1WkzqXd!mC4cb=@SL_vLmC1aAj57 zq#N@wlzmyyJ;BEA6Bq45ymUQ$hvAo@XUQ(`=< z&dYr4yofr-hHA~tM&HGHN~HNTsg?#EmziY^KdA=luFIsG_)qj-^87cX@!O!|GV6)7 z&AK9MIxm-Z^RH5%gW4h09HL=EwfAv}L?bz8O* zMfAAa@`7@Cs5Rn9EVzh9?0ouQe|uG{-CT$(lv0^Z=ZL!KxXi%MXu9*9lG+&DUy(GW zyD8|xJ>8Tur07M1rWq3!@R@ep)P}os>g)*xS9l8JxZ^ZyqD!IBoU;MctcTPf9)mO6 zFRV~O7h#Pxsrt%o&Ke{sRB4Ra5I)XWfTnvVQoG7iflCElC3=cdTxCE*bZ?l(W@=Ue z1?%201zM&{^!0{?9p&f^<9o6<{C>O=yM8F? z-%F4A(MJRw|IFqVr5@L(HssCWNP zTK%&<`%0l$p^oy<$MY zx-Uh;t!W9qzEm9;lV@ZR-;;f**Wi`tONp!A^rZ@MV+^*z(BMOI<4(Nigj`aHFu&^& z;Koe3n}&0c61~ z6FakE-B@$5-Wp#G@1Fouw>rx%#a&3jt;tiODpk>HNGVpFT}GHMnq!bvmY3O)6pc$z zq0!7!=w!a6nbqh_`sA`#!r}o+eRb{TQP=?mddbZeoUXX0e?z^0dxh$UtLLeCw!% zFhOl}Lv49w-B6>3FD>a?vJ~zP4?@L_u@RV>DnCAQA*|P{52XGJuy!Mm7~feYKeCHk zvIM^EU)$KUX1HD(iC>3%#vT|8gF9s&3u)&bjw>lK2<)&i73IUC@mrc3Pw998Rg8E_LSDT`Koy@?c08r2s*ga;ow-NsTd#n+{Be~uD>;2) z2gRHdx%wxx4YkAT?bf7w6!OLmx3^jH%kVYrG3X=0$<+c*GBkB1WH0a(mkFq1cnU)m z*Hc_Cpo*arhAP`r%z!mUri&c5YMH%|<_-br`TT`i%#+Jq+@@uR+e+UMRF%<6hAId9 ztO^@Pt6aw_>af2rpo$^ULSFqsKoy@?P0$UF`cP*5SwI$3THSEJQxqKqNUYC6@XaPy z^f&q$A7C?@(-)AYea5uD_E~?oy@j>{Owy@+0!8FGT*vC-Lqab?$ra4VO6~hAtE-uG2BYBfUuc&`ro#8 z5DZmZH_$1dis1%?ygE=o6<;N6H_$Ai{Luoc^1A@d!uGm=ZQb=3`$ggPT|Y2Yy-wYL zxktRfKM5Gd@B;6J>;+yR5KzVN0){HC7dTfy6+`3=Rkjxh4`Vcw^4Z;iwBsZ%6_B0J z6BsITbqOw3l2d>$5H|K_1YF}cHrE&2E1-(u3xvG-rhqCwuWVm1Rjp{VOq{+)Ox(i) z>hk*p&C2%rgst7hd?7nrkFZJfa`=w!93<`&wmmLj8^bgF99uHB_MfS8~+=X%oNZe5H|Du0-o`knQQzX6i~%5 z{z6{;w}2`>ueiqlF#%QijlX7LdyW5=_LiN{z`OQ;x_LExL%V?JF7X1d2^hxk0! z0xz)XFZf`a;ROs;TraSbfGUQ_8>$NR0&f$Lyso`KC(v9-7eLs|#|U`FZ)UC+I8{Iu z!wU#`RS{6d=au6H_NS(;V}IHO7#2{K-wS9Kw$}^ngd;reGy!bW3_0Su12y`SGFOne zPh7$p0rwa#;UdUh;1WJ2po-xV3{_m0@EHMB4EZ-y*)AdXe8HCmWao1WMa&o6t0bp@ z?t!qee<+^6tN#;F#pjjn7^cD8K*AQ9r7`9vF>-$s(3jsuXlAz8 zMQrVE*U#_`(aYgGX2u}CPuRB2FZsZn;TvW`_5$CqyMQW&Z!lDGeZyPfaG=U0v=Q{Q-BK)HuE0^JmWVr*9E*Fpo-xFguI&kD?Wnc^U84n(KMD%LNr@h?k+NejbU>*q9Lq*Q4Ym9}wkSDWLO0D7BJ$ z4xkBtQ-c?D+%g~cW>fMyW>c}bL_igvdtBwbMnDxqIX!JUO@~gT3=40Pw!B3^Ujc0y zodaYv!8+&U9syPCw)A;az8~QV#dieNV+e(@*jyy|V*ynRBxtDO^6Ga2s`$LJkzmsH zkM{8$A0l8CF3+s}x!8rmIq0AbTaUg2BX1du0$vm5`K z-xpx$@D#{ifCaY~P{lA&hAOVMyj4IILt6}0HWu8;D->ZH%aGvP1+__&`HTn#ZAOCo zd4#J85`3qi;tb(3RM|*y<4&W~VXJA)jBgXQe6N5;26FImt_ccUDxiwbIj&mP1ynKA z($k*PbPR0Tn&C~-mLC+*S3p}fL4j8YsA9LJ&v)`Y2v;aRBd8ujD2%PP{E2GP*_3_3Yi{V(Dv4Lt$pC&lBI=H0T z+Y5s`wYjk5xpzN^lr`R%3Lo^t_LpBnc+ti*_@j5YXFS+x%B1kLu`=F(6b{PRx){H zU4 zeUQ#b@2Qq~q&RDsHe$dA(auhrwC8Z5Lxw7Y)mF~B)e=yu)ZuiaC1dp}98omKf6PcI z7y7F%EF|@uB3et@#6ipF6g8%(0zw117+guh2?VF093_pXex1nLX?$6OL#)teiB17I z*)1+O4DTtm+$hDCE`+B%@2pH>-}%}eq9<-_lh!P;Yi`)*q!_-22a+xW5*%-xpjsP~ zlStKA-g^6P6vpADrFvgAwkVcC@x4TvbBGW@>ydRYfsoAv! z)hr1sSjRK!n(YZ_Voe&lNCF3SUeS0#1Us%eZh+}p+^&FRafdM(Xs9v|LFO_N;}u)3by%fYQszs4q!^BYe;(W>uH z>P3BI;X}w0b$X+^D&ojO93HceVq`{Qq#87`A9U_rn;)Hl9DD8L2Uh75cT3Z zSTTZ_i5cfb5PM)ILIlxSP|YR`LA2i*6oNP+ zaj1h3KpfCAfJl_pPW(WQqX;dN4If6a(US0id_`PL9be^{-#qAH#4Rr2jAo{&+;aFL zFM4>Bg&vY^l?5IM+d}Mc2@sTl9cF3^H%KbV!VWu~3P)0hBM>WKaMK)BU9$j0#(SiR zKT1fUhR6dDvkXx*gqdi#t#qX?BPC5Finy7SoV$)OiufdE+zN_-L%_pn8++(FxEC{N z4Mku!r1id1P|f5hLe;GGaftg0A~*v@Y@@~PZYU|mVsKCdHm}!VW@$khiZEo|NEjd@ zFh&tnrKn(g{CpPKF^ZrD$`*03#Gc&C!FQm3Eujc}QKN__@k*fxb+tjEi23>?5Fvoj zljvQEsVTJRIEmh6IVE%8NZ+dN`glbPf8Y1Cpcgbl5guO>nj#xEO#WSLrqr2X;RnPZ zO~JP&4lzt}i%U43?NZe1RS>qkh+(_*#>oN;A+ti9umcdDffKgVP5T;ZM#N1PPT2MI z{-NIC6{Q-&1)K=&86K)v&#jkG!fde6>}Ar#yShA&mTVM+7Ez7cm@#nFtZXaRt?E!Vtqd3L-cIG3=zp?Fc9-#bR&}12(VMIcB-uG{j)Y znoSrWA}~e_RHdk3dwhBp*)d|Erpgv^u*9C+%fY*$ek~yed{HBY^YKa{26eSTA%=M> z4xA7$bhSLet z48F*V7Phs}f{6ndtv7TRH5gWfSm8DxA_FVztgY8aNaa{qVT%*1uucsYah72DRMi?t zupbgE@I_K+OAVN1PSQpXcG1HF5$M6Vd(-Imm z8IczJpMq*9#sgvPS|3CBNkJrMAcEbr(ESifO0fzYM1YO#b$(g8kcJ2hS^q{DAR;hE z1XQu8czb+y7TGZ(pa#hnbg;Ib+{?iqpnfeO0(?;;f=wTVD}@Nu)dqzK4vWqV5~70r zT1Ev?N$s44NSt*P+9ewu?19adL~SuNU$tK3I_o(8AxGwZPj)mm1H4>Lrz#WG(1|Zl_~=RdL*H=q94{WRA4njy)sZ* zI$Aw@tUA=QvNSNfqB;r-94bSQ^xFdtIr1UmaTuuzHC`S7nPt4v@W)#;)8>%Z3{FV*4baM#@24_u)GehcfPV zi%X!4&J?w}1HQz9N9A_8Ny zKvjwgw#T1mksYH2YO-t*2W#xfy&O#aeT!%TU({&fZFr^7g1XwE(88fGb-cVfS`z|> zeOex+Fy*v!j3PRUEwn~9Y&Z%VDhV5+FNjNd2fj9O$l(aLxCC;TlcHkt;fuV;VS8(Q zB5a?m(TRv%A$~X=2+654&}1ya2m1LqSC_p#tS%^wDSmo?5-q^lj42 zXA-ig@hJ#7%+(B7L`s@SA@L1yEkD5* zCk{dU&@C>3AofpDwTIw~ya*y~hNJm9hy=?*6!AC^lYt`k*H-QOq>?NYvHeN?L;Zte zgQbCtH4(m-NW(r&h@fVtAk1)}uI`hhq>01~lOJOXZd-oJh)QbbxWguKDWP4mk;4*fE`l85Z-|5G#TO?IIh^Gdmp~4Oq}YN*@I}$cA?8Ka z=tF|dA#zv&#AG0cL$p;pgH)1*97+&MtX8iK)zuuv(MP@O^sdr7s!JGj0J*WUh3$88c}KOSmf? zZY!u}VkE&`>F}9?2+qI}3$(a>3Q9_`9UL5i&FgiUSq?c3M;NjigaIM~V;n(MiVC*J z(`S(#;|OZ5Y!L^W?8&_x{4>$kyizzqU2RY}V!l3xQwSnj->0dIX(xgR zPXrB3kqsZ7$5u+hhwua9PF}#bCJsA1>lT;54u_|x*OTx?UhH7+(=?5f1spia4Mkf-_LW(OTU0fs#_J2nR)A^Lia- zmKLO;2t(GJ2?Im~#wdcS6cucbpU)yYMiJC}*&+_s*^_%YI0ow15{keVHHuh{R|-X_ zs|^Z8yu&(mRR|{zZh0kyRbD%Bg>z~_n791i~Sp+mN8;+jJABMNrhS1W1rJTD=^yu`#viJ%Z5i` zBgf$EQWbt+)n$BeX$cll=p!#J403SB=Z{`^U2S>)$g-_A6n8}8oKzu# zYd!L3qO5kJH*&&jh|X-}wih;961kDD2x=?is}qOX-s%>YKy3?CRBku;A}?yQBY!5_ zDhsg@wuNYIJ`j|F))s0Dw>zmQ3#}b=?C|JdMb9n)r3l;b6cRX(tvV3HHgn3T0&N)Y ztJ4B)hqsaoU^SgjjNLFV7rPxrszZ$#AG=*Mc~ZwD{1>G8h?6u24<|)VB#3(tDLHRt zgBZk}iW#>6;-aH~_t33_5DwcV1HvuEtn)y)FKM^J$YrlZ+K|#{#}Q3?R)UtbKicz+=2cjb4S!&xH-4hU$4#?sq`$bEXz7IwhPWb zg=1oCaCjd88`#6s@))UEN34&F1U&HL_mRW(8sQ?!umwI!58rEa%%eMl;BNwjf8(;E zX}nX$N!h=E?1Ab}+EkS+s;m)!rvy|n4sAA6StrHD#|LXUT{YPD5GghCl zs}CkNSY4g1s*Xt0Rrc7}RLA2S_WTHlo_2&O`V;&dS>qSeeY*D9@4&Fp%WQ$z>2b)N z*JBG90?eq#ZVqY6<2u<6i~(ImDUm6ti+-q)xM^hDEV{B zc>tu7*P(9gb;bt6uZc2?o z8ZAVFv;-x7kfx7!Y~_T$UKEehP6AU>#VZBU)YS$B(hiGO>I%o$0I2QTPM~J*Ns8zV zEm}FS!CGQjF&Rfo+$V~D0k$8{Cg%Zd=efl-KDmB^wgj`i9x=HZx9obJCa~>Fml;LE zwvRye0@(IR0aXmoW2nl8ZSL~qI|Wqb18s_i+>lLI*KuVT!wngbEk%2R1~SGgpdI_h zrh*GW9ulyeAqf8o*$d#>{|cyLz%@e^msgJqsN(ZV!8K@7V!@GOp9P;NxpT@H1ESgl z)iRu-f@@R%lm^!l{x6&knFcR9kS(E38nUe*>}?ZdqlIY5mY}2v$hJMyRztQO@Jc~8 zb+ti3wjvHy2Gq7+J5gKqS-;^Jj}6@DLB9mM(MLr2_rbQDIQTZ(Ev|9%`U&6Y3Cmsw zsZXg78^swrXoBF5cKJ~xf;$|t7a+KQ5KzT%Muw^;2o8oxsh?UbpeiSVLmF};I9*-G z!^sd_iUI|PA!ED(I;DGfs453>s|8$V$ihmnCap_dkZ3;!Kt18*zKlUvBpcak(kb%JM6h`a*Ykz;~%u7KqX0P;4-UI5k> z2&iI!HA58_tSuB!#pjhCaXXOqWRT)EBekY-=g9Z}f>gE%srekC!f5@#3>Tw?ZZAY< z0lej)vxFjPboL8kp4)`ZXdxP%B`7IktnEA$5QWap$18=-)YS%s&T@yu1b}uxI{}(K z5{!pZnWa`fjFyPkNMKsxK0#{Z*nSf?zIKIM-1<5_nqaoq7v^2pcALwNBH`LCki7t| z{j-27hUYO;;?XypgnbO}0 zIM0xXUqSW)-1dxsDh6&dRB>_JYXYkHyi&L=Y*(TsNVd!sU>?0JnWwKotYG8LGIr?JfaTd|sula6^iH z7JQ=Q&M9XB5H*32&Dd!L*}e}&yF+dX{})2Ghv7vBvL)0>L$<>Sd)oxrXdxQ1B`7HZ zvi%zCp+?<)gI5Z&sjCeNvK=y18LZ0D+S}WS*6j0HkyJlWo05F2F`B+b;MvPW`r1Ah z`hr_rb7VM~>5#nune8N?is57oRZWnYvvRFdKvhm; zR>;aVU0ug>$&gu!;sn!>FF*@Cuz{^f6m0nSdAMIi=Dk1qC2&m$#ncbe#w9%pr3vZIP+*3eb z0c{zXQ=uh4RGTxmZ!e^m?K@71v4zd??$KEHP ziqUL_Dy|AH6HvwHmFkYgElZRP3HPD1iIPI6oKJ&{wy86g342wa?8Cqjw@*g!ZP+!t z7+!U{W(ft;PU9BhliJiZqlM_MS%Q)xx@I3kQBhs9Yw=2T&D7Nf)ipb$R;~8R2hR^~ zXP?X-DL_&~N9o4#nUZ{L2G7+kqTqL9TTNW|>kDpi>+9gTW}nv;=3CbAfXjy>dsg3o z>;*lm9|@>p_!~o2cF)RP*6YJYWevKzj`xybwG_n(zK)FX3TU2X4X+7U z&JcuGAbSBw+w>{6t>W~P3{_l^wv&J=KCe=jH6X=4<2_Mw=ah3B5Y;AhmhJ!*EISBV z!G&eo2Zng;V0g#DV+keFcj1L%eU+yV4k z1(j!vK^dy-0oNJvA&6mLQg;@U4~W_Ml7LRez^jjYO$O2bT|gC|dt7k%0|8ZhRkPc4 znl@atJ;R%%Eq^7TuYk6UOltZd`jY~x*lpb$P?mj`>-J=uE*Bv z7Pr1Gb|TF5y3Txq?&rJgD6%)U0w>w21G@nxDLEhC{A5%P$+KxivFSA;T6J#5eVSgdd!g>UrtjS8{);*!GqK2 z3mUeCH;Jad2^($V5Zm@{aqDZK)sTgLUx>jtqX7 z;dKmET(EY6fU5NYtm*1Hj!XvDQdB1>BV)V*nkUfeG6BmOg3trm3!vJVfGP%5GgNV* z+J^*G@p+|JNLYbZkz$|uo+!C<%GnBtY7+MR59F*p^A&qUKLQaK43ImUB`#XFj|W41V2Z{cm=d$|JX=yamP;2`klWo zLJ30PTk1@FasimQ{ymiP>Mst=u38y*|&fyiSj zinzVYn9Gnlo3nvAu)X$h{*!Kf5!D_hG9bBN&C#S%T55VQD4~*ki7pc3KDW-i` zU0rE4J#PTm}nOW|r^M{t?`X{e_kQRzojdO1Fr9J~gFESwr#fqzX6u2he% zQt8!@t_fa&=Y2m5#^I0P8caTh$+ehV7u~xauRe~+4Vc`BNyk+9@N2+fa&)_T1V)C5&`*}#$1b@ftzAtuz3H%bg-5uNq zDTvya;b--D@N@n1YyIb2j&4d#9P4vNN?Ll2Xx?2W1YHBgQ5HAWI2fQ*%LHZER2x*Oxhq-hOR9Eda& z7+phdoQui8Hz7G2lVkrKl7*PedjOKdF*)@+kh~X@IsXC4ewa-CFGyx!vgdap*&CDH zegMf^F*)-`kn~{kqaQ=^-6G-mEqG{|}H{ zh{UTRM0Bi z`W&cz`?$>}P`ko#6<45^A>s^RpeC(xh$&Dbq6lOH#6M%f<63W`#M zJhc&gd?6@6s)k(Rc~A}-^hsko9gBRh3W3IZYNe4%&+^K$D3YWeE%3ZU#t!aA-BkqM zj#tF>aXgAqQS<^@8}4*7Zp@$CH#}IKJ32NrR2`j*o%6Y>8Yb->?y1eyj!EC?GS%xE zt-(Y}=;(shxisU{u_fBM*1}$tW=-+|;m5aJvLh&viyz-`GY-Cv_f)l}g1OiYge6rf z-s*c`8B~HdD3;J|qJ*zYiDtRGu}dneD?L49qm`bO;}?&2H+D*WWywHwOg-K)^>I&i zR6X4x_36@m)x(`rAL{m2FYKE7!pLZ~r@z)eJd}|Myiyq$P%peGHIvcdF;Eq(-aRk0epUGp;d6*lB=F!>!OzsKYcm^_ZjpD}q7lcz9w29j!UFnqdj zN^l7LbO-YwT^r0->7goJ04dm-!_*&#Lwd%zQL(qcAG(hbi_di3zCVPV{Xp;?@L^^g zpItHMYf*zUg%vP_4T>8xYO$hOKHYkj0dZ4IhNU8{YyQlW6bdi(3=h?-Lv>62ou|YG zOnDAksU0@4!_7ER!R^5YTyea|2DGl~jp}{0zWmH$sMu?X(S?uRATFRUL0^ ztMAVtz9e;*U<&1tS+s?r9PA49Y|J#7M=fA?h|CLd6J_>)vV{Y9XOm%EXo(X@!GMdyQV%?>ZCqawjMtYl#-+Fw%moomo0swxWnItTTxgS&M5fY#f$rg z`s<4qca5x^hforX;Lx(t@KVd_kvYhz2+Z65*63OIrPE~t;N3$g26A+igHo5F6n z8k27FF7b~Q6cJ_p7U5NKeTFmLj2rKe_8G$JTAhdXc-UQ2J#57C@y0G`t~P$&x2n57 zUeO4z?|T}ArEnwixy1v8Lt%wrWA7sk`Y)B$C~T>Jh-yznF&u2QTe^64g?Xd`iOfnJ zNmnUGBS+=nSo)-KR9HwE;KkDZW%EiGG@<5b_1^5#-g_@!Q5juUn-z8l%gzDm`z<>3 zEf_g=9_)X|vFOgjW|t1_t=4*A56`m2H2@OTd8O!;Qs-fZLH9q5Z=kfvjA0Y4x!M)( zxH-AARX1d0=If?1W~-1^7g5mxZEEO)f1CmRhDDH=ZptI?3p*2+yR5VgLi!OFpVfuP`hkfcwBI6Pm7@2d`6 z3eSVPkc4m!Ca@QrY#eG7tzCSZROjoG>MTd{23oJqnT+b34eurfPZ|eH?Lt`naE#2>7-KA5II2w%|R65b^2{0X0(!CELSvpc^EUNGYVkUhvZcLnmJ0;(7j z^*_{9aZTT|0;(9M&roHz;+D@{}f@>GT$f^;@k*MjL zyT|L{yF`;mP}H8p%ouYgLF#u~tTm`+<~qVoYb6|RZ%hTH>xXcr-vqI2OoKn54?C{< zf`eN@ z@!-Djk)ik)WH@#Ylh{L7p@A7heMpeyufVry3E!A^J z2KsyY>)>0^RY8AjXnbw3*NH%f5~ohQQX=-P)1WdtQ=daxH=Gqw&IUzoJ?vU&=Awl0 z`c$TUK935dwCHk_2aVu$p1pV@sYSM~oD{nDlIB`z>F{W2Xl$?wv&N;$=xAkSt+WK@ zjv?gpl9i=Xd-|96*XImWp+P!prL#igw7AwYJX$@g%hII7#F;;O;q|o=mGzI2s?b5D zU_a06ENn^&zl~Fh@6HfWDrt^{y2+a9fv2FbmAV@3T{g|=k z*|72dKuL~a!^kE?f};oJV9fKx^?SNISt^HWr~99?N^|CvwD-WNG#Csk4KE2G=1iy) z<=_QMRU_KKGWP5bX zVl;;y?<_rf;nkKw&um2X)wZcpOIji;6RF))E%76EOBj~bL0xrYKCH56U4KsqJC>-h z$DCUqt%UkI64^Ca$W^O>Gp^K1x-VC%50}P9dMov6soqyLANV!f>AY%p6yGM?-SaPg zJ>v+eVNI;vyFBWfv#7Cqkj-(@f9f*-;J`M_{MTkR~%0~ zQRM77g9l_4kD8p@uV;90WUO8-&kA?BYD`~qCp8f5_YL>LBwZ)%JB7fwE5s08Cezf( zy39(pK3TWIF02g8_adQlwxD}>s5-l(5AzHE8X6uQtPDWFJoB_x85|j?E?!aX zU)EPQ_l6et!U!e27Jf85RtNShUS3_P?<8jU?8%PlVXX-!i0%?q{~%x0^X#s@z%8zE z<$5z)7Kuwdkz~)jR41fyV;5+T-)?D_AHQmkmu{MPHGE4Oee#5e!}V_aL}PD0>&h58 zy+)a7XT-T<0i_TACRE)fpo%fxY^XXNhL(~DdkX3E^ZY z4J~5PUBaw~1aiUh&$3y1`IW!e%`q0(Y>0eGIF10Avr{O|DftRzMX);0#qVfjdn=TYiDlB)3=KW?H~Klp7DBv1H&iZ9?cD{frhMXCyWOBAvKwEw}(i}S{Al2MK2dnYg7J!a;Da%JOx*ccm-=C8sITO zWExxB6)evR7Zk*6R}!tEyO!sZ9tQxA*4M5abF?1AQ-k@HaIw9bURP7|IL5!M|D5Vj zDKRursw{)GeYJWxNEXe*Ya3Nip2WJnDA3ik^&!rD_4+%MrQ7y-QgLWo-@J9XtrOQX zUgY=CGWZ`)Tu;Z0)x>oy*6p6S-a9GFF!yz2X`mmZ8FpsH4@v`-CDnmwUf-RwCL?lW z*p@sYQoLueTujVwLB^T$TNwpwrQJD;38WIcXXNGB)E1YHs4380RV94={S0Y}XM}dv zd}w(IL)nak;S6ZZfMu{Df2g-qA04arHI;*C*o??PbeFKMJA-wCddKbmPF-*B+&4bY zp5NRhyZWRWS-Itsfa6p(1e}md!2Z!t70STreK1c|9mPrR_&)l;{vnvksg-cC+Hl4~ zmc#%T5r@Qm!pRjG?IK`9ED*IO0)fx71!Aujc|q!vm2ED`7@2s<*p-Yep>&+8X8lTf z)-UXrxt_rqcp`#eJtNHfR7RWR5{4U_2m?OP7KY7f)d|^IU*~G`>nFa=4~a*3u)&WV z7_QWD)Aq7X1{sCA7s`^m+NeL(Y{USj|afnQiCxm~`XS7W&p?JE9 zP~h`yq1gV|^!gL}v$Dz6{!bRw{sJoEg+x0_sfZU6VOJ>ULZT@u3r0_H`YF}=*yvCs ztGY7~-6btJ>#u%65J+I$2iyxY=JWyWT?Km_Su)FaDx)j0ABT`lFGebjR%>GecD$ul zJ|K0US8UzY77EqrIS4Z5ZE-O}7_rG0Ov zgzufEm!A3K_x51Zs!+zgc%?!at1Ef@UKNH!HLqH+hN2w}I|l7pjJII4diGd9EMr@& zw$BXpMn_Nh7v)vz5RzsItl)!ndHXh7m*?c)&J}uZipD|RVvWCa&wt&@`>wWXDbI{fI4Z3w9fiBMK>QLR zNVxm_uW&gNsgI{2IHy=NAbS`rkSgn%l>K7T`%cQ=U|+nIulrYr5fARsGkEG@aQ zBYW4rCL&`~zS=aI*nqF*LX6vrcX*fzJHoLj#LZf3I~LLUep66iMi7XWnqealbxPI4 z0;=-0f})|QM&Rngqk`)4b-@vhRhDS1qK)vZfGWOdaC!B*fGR$(vhBvkp;e{~+w3K_ z$4lLM+PdwC2`Nf+9U+MvkFg(T&^ng{b!H0*2k<(}eB($}DG(vJ48_UoiMLu5wshC2 zN1w3pgwrB!l-UmNU;(EXf_ngD4{q3Lza}foj}=hGXg@<0SIJKkP{rq!!T>2vOkgb5 zzz1U|N-mvp>L9gkSX?o);7o)(Aw5>>Z%A+CVe4Jz>{4RbeO{?P23zppg>q-OZmDzj ztl6b_1_#1r!mLdvymA2C4tMa)D=irw9)O#tjgG-SKQhTTuXF;8<5%E3fkjJk>gNo2 z4Yw2}cJA3--}c1jydA~RGZex0 zc0jX#`i!x^LDmqo=B}AK z3HEElKi$(iLqKr;4I-Mmo(@fGcq-l~{(Egx?TzAlG)K}Qvx?cBbdG?P4DB6->;CNI{eySkH(){7FD< ze(#}K+g|UnUFsN1$QjpRBp14d;8d|M`GD}Q;}t%7X6Wi`&@=*fF;hSl!(AAvxE5p= z0aXmGFjP72LXEA3Z64ImqhkY8>0|9Q^gYtha|Og-2xVo)rLVyY8o|8{vM;22AZ(kX z1=ZuX4cEH=gMccAbrypo(F{4OLttezSlohVUDzY$HAer$WL8Zvy%C zyQG2d6A+yb@oOS-0sgy{*c1Txg)RNCfNA`e=DLJm3aDbZ1R<}U5KzVEmF*Iy;LKp8 z70N5tb(wu0>AlFY=dmM?cu$~c)ZuPgeg8t1Rdx5{$O+XdH zUl^*m{$h@RDu!kls%(ET)0!TSWgvU5VdL;SimeV8R3e}MhzZH%L*{!#smapiQw8;9 zh?1cyyD6rsg$=YFDgwIlwS%FeEsYSZcuZgaIVPwqyAgZ_ngMTxhGDIsdVIscg%{Tf zsA9kiA+K%~P{rq!120+%Qv4+WZTaDaW~5Jg({$ch%VWJ%TCx5cXEz%d%49m#@Dlzt%k4Bicfp7b8>lE+1KDK0`iHlIWDPI}lYEdRMxp0DL3e6RMqV_dt;id)<9Qd%kds z+r99P1M(9(rBTUS2uCwOex5CEv=F_gD?y1DX_>e#t!#1o7S=;;aeDx-)D|~&Rm8q7 z1#Ko`U)TI-qE>?7^!e^x-Y763f(!RYwG+neXv4UuP%oBCOfC~Zm$*-i!7qvEwjI^| z%q^~Q{d$M$Vm5m{Cz%T7W4mWuJ`{=Vo`mcL*zPp}RSfTBsLIB6Df8x={@w4ed_XuK zxNAOd-V(ag6?S}`4Be%uPVfXam|sSd6SMqy2D1cgXGp`Iki7uc9VDQNf$I!aTwHgI zfGR$(d~@qabej=fQ|WW0{Kp`h?Lc%HPEok|Gi#CE;#qJ!-c8l|z_Pl-)z z6Skv;Xl$3DqzG(RM;TGrZVay!wo_Ld7PgDFV73w4MP*DRwu=k(V>{=a?ER-7#fF}^ z5xYy>;?_TGmtdjSZ{{1e`?Sl3BB9+)ki7uf-6f!k;h+pv+0f1%w)>iZs(i?Vl$f|yhJJO1bR`(wUlBbe0-Jo|;NGEbaqCe$<}_w|{VCnc%^%G>)n!GIkndfPy#Vr61XMAc zmZ2&e@)^z&IUN?zl@Ii_u<^a6@jP8+#|g?{UyA+&-N+iRm|DB1BjdqEGanH&07Ed= zLiPgWcY}Z`2J$mhae4K50abinDdcB0FVPvK-e=nE51pw961_b~QCp)Sn z5ODw2*5Q$I+6e;RY|Z4-f+I_A!$52M7XgCSGh!~DC*s`pS>31I;u<%tZ?n1<%e`K9 zhYRW}N8k{x4T_RU{1JX;53FMx;J2&iIsHbYf5JdF33 z5%Jw!KpGPv2B*Gr(j>KpTOVmV-k51M`*`lfeTD^&xHQ@JcA%j4d~wNcn6zzgM+@j; zwo2dmq)A%X_SO<^_ccV5t#79bD$H&O2UW>>6DcM*n1u9u?c9{)zAFCefMEf180KR+ zWH0DMtQJtkXfi_;w-a%hfGR$(^y&cBs>GTi(QWQKG?hL_%Kr?Ip&fmPCO}K|9zG8Y zaeEIIo(lU9x5LX${~@7Sy8rMbK|pQlKhQ#S{~_<|Q4Ur;2V%O5 z>d4G7%Tecqq5J0y4)=}?RDpWJG4r~!dbMO;uLQTi*^1!yZdE^;rF}PO8CIt-((&V9 z7--NgWHNWNTy1!4vxLVi|T&8~->gh*R`cai$ zjt?dWuR$RTrv_KxUsHoC)uXFadNrhLf>+>q-_L?^_#?OmlaFC?Ehg7R_pZmQk7IHJ zCO2ZzF%>@iT5uCwclYhk9ee^VU_a?oSgEHm`6NCGKBdx6tMq1--lEdasPtBqeil;A zz}wW{pTocJKOU0TA)__H?eI5L^$z$sY0J*wMY!1=`~}N+0h2G_>vv-EvU>7Yy!jF) zU&IeL?t5Zwa2Gzl8#)Rox@q1QuV4e7GEwm3SD-1(@KWL4i603->|?YWFnms|eJ_AY6|Z zsAYUOX&b0j2RMQksDWto#{s(WvEXst1b@~)Pr?td@+tlEjQ)8}|NKS&yr_R(f*+8P zm+@y(@Cy6{uR^jKrm;^M58i-F$fsjF^|KNDbO%%PAJfzy$=dy5Bl!42XvEZ3zQpsO z95m>Y#!hq?2o5S43r!&zOUZbTK&feO0GAY@lkke{X7Kgo)4D)L+|Z)w_T9+MxN*eX zzTv^@+|jY2q3Y<|6~m*;_1*-N_73;d=4vBr?ODKTc8$WpmyzWzew*x#$3yq|P1>!@ zFS%?UZ|tNW&PjQec0NuD2ckK&;>kZ0=35(k9ChL`@Ae-1gIt6iy*s${cj0%bqlKB3 zXnp(c+p&Oh&+yRF{$=w@7kDVpQ=GF)d+)t`MP+nZZNg98IoK82xXHMEq$4si^Qji2 zkA$>(5n-xt$k=FkfJR*}sqx6ld8p`c@bu6!JgMCy3!%3F&tRXivrWn;;aH|# zKbramv3u`!D;%}7r*ZO}t&_sv;4~y58qBZ<%BLumBsN{&BGu@TRAae#3w!fw*yrf% z!`1n)A>AWxwhpsG&S+B+zibC8o2Fk5U(jL^-Xtts$!8(wOq(&t9%R@VGHo)#eu;o8 z#;}i}ifhuY5m3c2X@)AhEoZn5Zbx>B0kd9mnD~M;_HBX+q`@5$D`hGi84|}zu||A# zcQ@+4DifHXE@Mc(v9)XG#uNMR-Lr6RQL^SSUwompJMgq;PCMR?Z;7Koovo+}>=Q^f z4!wM+qvgO3DmHoVy~BrEf$;`u&+iG^lMz86F%Nt5?gj?Dbs{ z=tHUL8}5ZcnBAz(MQ?POOi~A9sA$sGV#HGWJPL4FP z3CuVHJG-Qpl{9&2MYVrfU%j@VyieDD2hJ|pDLI~bfzCIvYr)(Jkzr!|$L=0a5BWr_ zd~}xx`C`71mjihxd68ROAnVeLgeWjw}B&Q=rfuOP(KRU3q}ks5>Uk$F)&ndM+~kKP{kNAFjU#Cx=pmwF}7o2 z>y~Y}X^kCtR`7jBP?3Bi2QeWTg9HlDB?bjlSHXDWI4IwzJR;R(-QK?l>dX)+Lsj;= zJ$H-se+a0`*Ah*)SR<+yHv-HdCVMI!XV6Z{&jr=xHv(6$|0JM_q1QfvU1jlV73I}m z1yr@4S5rEYJqiljeEx#ZE3O)CEud=sQ6pyv#$a{6pXEyaYysaGt!X@(Jrvrpz>@q0 zRPyHusA3F+3cdgF0;>4DlAW*c9szCn&sWfl^hs};er1fT4}rM@q-c+t zq4z&hKoy@?G9>&i0d4t_ux6xBdeiiakAzFjrXxa-n*xK)r{Nn028VYE4DJ&!kfENv zkUhX)t|FWxpo*aghALa+cJ$5sP)7P+Bb>cRP>1}YsjJpr(VRK7xVPHVKUf*4sada( zJ+36qh~Erf(!!X0K)803fNKnSyj~`ccL=Cr$fKdkmPfKFSo2NaA{_gwfVTW{rb%wE zoNZ}OuZA+@3L1$vL&l`Z6T-Mh1dL;d+QTwY`>lW~hNu~;WTN)8fVTXirb%wEs1>rJ zbNWVnFwSVYjUapQrS>pMxOkIDeRz`y{B{ER7y_^9E3}G|i#;w*fJX%#t-0;@2{&T8B zrNnxPQe|1Cf2dXuR|Z)t*ow%IsNO<>>ZSD~oW*ME*XkVIlE;(ELQ6gbtA^7St(Aix zdY}B1K55K2xiSg|b=Iq+wGajvD4BRbczzZkqqVuq44(f42-5XC12e|$rU~si$3U4`OjmWIhoH?bF^@6x+Z>a`r{HjAe)mjNwdDe%QSBGkm zjF*EKD5VXuV2C&p@`SMW{9@Vrmx#S9AYHN7IEOy4AUh9J$r#mv{D_&Z-;J1{U9fKU@n`lNBF}X!Cr&U92($dB;aBN*ijlpOEUV z#`$Wyi2X8T%v>y=JnHmT_&jYfd|JEyE7l=zyEZ1DQKCi_Zx9{$QM-7RE@_R)t89wk z2BGLTZKkMDQG2#s#6ATXPmriRk9A;+nlj@ZvuN98T55TRCNld29dY#=SCW|_t0qq&iR#^ls!-J#D%7>B{8XPw|JT}w|J2}SceN1!^ zEubLwG`dTe+BpS;B-(;P{WHhW8IHuL;4P4`7Zu<`U#aav1&3yoDX3|T3Jy^<Cfbzqy2R8){@#l5JY`B%F)_kF~NW#yO)7?jw}k{cMj+syiw z%Js34fvOrMI9+daQ=?-;bC$ud3J#6+^w(e`-Rx3tb!la6pkC^)m3;G|86yeP!&zpE z6~eoO&yN%<{xMc~Sn=62f`AY6V+DFjjV>zfe3i#DO5?bABM31{cuduilZ6;1{2A-e zx{4>cZv+2K=6hAV`Bz63Ak#!Pvx>}R10G_xTW%XLKc0mzmHUV4$_R9i4KAsUVic=z zE<}Pd*?#-F2#8^EiU+^bOtw8GHK%_%Oe|Zv=d!LnP`B zso(w?B?;;m>-s*bew-}Cx_%(mp>uVF zU5SMeNymO{{{YO7s7WyWMrnCUx>M%b?wsfTYrx~mZ_In?l*4+H81Wi$JD{WEz2K`qVMQ|*YQI36qC_RXsNxR}x zM_22$6)2esm86E`AAvgZ21HD4VkJXan`kB5R4Z9Y&HNFNO`Z^Cn=;MsDFw|LD_aL< zoJZNFpsGbM!#k3uBtySTDz;NW6_a|@hM~W8pSm4TERwodaJQCb5eqK1TOoog(7^9T z4u&oYq7y@cjN_9>=(;gmKs&rOFYB3-X*#Zz|L75%Ptm8aoQMLbPGM13@}oyoyn1Dq zR9Gw$xjwj}EfKyB9Ic)`)(^{r7B8vvz-pjg7~S*4@hVm75FTs^gad^wS9`;h=fu`jv8j2}n0exERovnlm#^EnTPX~T*2(_Z z!X4Y5*k7wJf_Oy`cI_x5UeShF{t4day4;A?xcWR8V*_X%vWL+k?v}xe1ynJ%!5ONW zctvD1g-qiDveFi(5wDoJrG1JbB6naXQ(-5%c$4kypA*!VFC5v;;4UTmvVf|5t)OTq zsu8%l@LfT5`MThUMw5->KNC>J7Y#12{wSb|&#P>K-8i($)ONfeAT6KN#)K3lx{i=U zjz@cXJ0{u2)7hRqU<(Nc&^lX#ABj59DX<`@VVik9@ytbGOLujjc-q2<7yKhdO9DPI z#P-dQJvd>f^%g|^Lp?xX#fs_@P{n9HLlsxW4;4_w=apiJ)4&9_BK@Z;(bX8{nDdYXA&a`GV9xy6to_K*_0Z0 zVre0|6PuvK--*?m05*xbZ2o@ia+D2qn&<#tseY`wYEM7b5rgI{Xk&KJBLFlz66XXo zV@I>oL{~e#V~=+c+5Q>+gYYIbf~lapN7N5HjydfGq5M3#q_1XYOE zeNJ_r3C`U)SUIZVj=j`NY`n-}_t5jN0DtBUZ@y^*K_V&CI%*DgQ0}?T|?H=iV ziw=DY2DG17>QpDob{;mnbZBq2*0Z?Qzie@Bq|yUKM6Z-O4?8U3DwUx%GDOVl)hI2V zQ2};;@`jAee7#(T(?D9idXgFlKLdzd?$X-$&^jHT2oKSUkWf2LTD#k=cC&$qJSVNC za5=aONr)=B*c#?aJ6=jjZ}I^V;jc@ov>b{J1|adA3iFRM;Q1m*j9)tw-&f($5O0V%S7OmEEFhC?%X-%kD_KBR`Wj_WJ~%8PC^;ZaVUFKOCTx277N(OP}oI~y}(-x3aDau3quvxTbwVT zilG{YD%)FFYY4ObMcS5tj|j-l=P?WwSwpT(ea2cPIR*F(VPoGW;2OWNxjy5c1ynJ7 zhLBee2&m%o%JvzXM7{OUBpP5G-zOg9M*=GIdkoFe_IiwM;tdzkU`5Ci*G(k%ON1y? zcjDq~=)BDn0?sj<#2+Dhfs=SyKo!GD7^=8VV%jEre9q7XLzV3$$aaxz7vb(B*-=1p zJ_n&_$mJfk1)BX!-T1=CZRY(1JmWVr*F78|po-xhgeuW3po-5c+dXs~5SlEG*O=$TIT;Eo?r3woZZ;2H%9fQj<`HDWpfErw)%Uh5QPcBn*$CMgn!5 z!b?%G@XzoVYP@#l{SpJMdg!u&8AOBq8S{Q{YBmJ(N`@Ef@*YFoGd#4ke_73(KdlF` zqlNlqtr*kI*Hk?&&rlCL#7U#mJ%u{6Wakj->#?+Cps&qNQio8RVRwS#Zpfg_(_hGS z6!o=Gp5N7^I>Kq*qo{9%%=kx9E0I#s)0CL0qp07cSIVaGIgEa(PBp}-!S!nL#EjG{ zt~z?zeAYHTkNPVp2zsuMIQrnGY_{$aO zX}o`a5@gKu7>Rg{tT>xfu?~qHLex_j3lg7hn`{Sr*KKAq=rsx{LGqe^wO5O>OWGzY zTdC7fGsKT8Nfb1194zlKEzB(k%X>#+KtH*Cej#r0tPhu##@pz%YM0DbQ01ER#~G?k zc3Kh;MV=7$&M#KNw+6(uWU3WB6v3XHQJSFrWA#2s)sd40+3c_* ze6GemS_q?i3f7@@^-gl%R_{#ad)2%7S95q`OvErN_gq?j0K18dskF6RKt;UO{&!Ma z6K|$O1j1WZWhxSHwg0}9ig+_6g?W~TzM?G~2)i^4@@xmxIG*er+#~ZgChy38)R<$Yr630 zQm|}^g-2@8&4IkSx*R+1EZK;6$fT%A@UO@iuYgX|ONzrT34deE-voSTNW)(td+3>Q zH^ywdDcd}8G{;cIot4>MKoy@?3M_@~O7IMl?K9dFC4o*kp8=u@8R}O0rB3B(xZX}} zggF5C-$<7T5U5`hd_9to3@qd@ya)t$L9#Z3walE5mg*7Ye9iI2%J17p8qw zKve-S?V65B9h2~1)~b${@S3i-rh+RPUl23`Lo_}I z*$Xh+{Q{~O3#JTJTwXmWpo-5ch1rsAOH4VE?la{RC5cWs?*XEU#%&&#sKDDFp*#xS z5}q$aaF4@F4uVT)ltysxCH!m?f}@3K1ec(s2n6>M)(JC4&OD6UC{m_bEk2#(A-|Ns-KY5F|&Q5CgE)W_|qK`cY^?b^zBRm^BF?%kC43p$qfjoVjwv~6&J~!C!mVYD~03|O-t-J zQr>1D*HjK2dEXd_DjLXny`qA0*FlLC$`RKWg1PJAH3!TkbV`G{8HA^80&}zw4dxP* z6anTwkM&Ss?smLVU`}1N2h2HQkYV;rBg6q|=we{aj(7=LR*+e>x}aG=8hlB!;wup= z)Kw9za0AlVtSAS&meHv!R&G0K((3VYa6bGl zoD{55KVzmT-w(tDtKn96aDhsnoB}sK0GDRr_C@OMW$;>e@L_d*u}Uvd=^B-;g)}&M zb4V_QtA!oGW%{R~o_<87A64n)_+WDI8Wgf{YH$VqH8r?WJ-SMzS3|lccmaw8@kQ{ls}1vkNUci#@(!6)DXmf}5ym3kVJPvVo{ zQ!4$mN^e%_Eh_ztN^e!^XCc)LyiNW6IsE(n;~{w+GFlVd4u3;c?|`3^w(JaEgqz*L zU$Bf9F!=($ekUd`t0#ZOn=fJVMf`B%z9-fOcj4o^F_{c>uL<73$CKbPxCd^o4gLmy zuMO_S_d9}D)gRB`E6-x`ocjBDNY?~^$Lqc?c7xIT61?3V+y^O$+Lz&H^?2}e{qt-6 z^IQG%sQ&pTD%RH^sRfV4ch=T|o1n>2Z17p2bOn_m_%?7Lv8F#>=V(Rw!k0s5lDcZR zF}1%2sxiLCNa6#?TD1uL+;uftJZ>`IoU=X)J#UsR> z8iCr|ffHGQnt{ckkwA^@p>GY)C65J^CwLW-)iC{i%6RYwTtYq_+o_+8;HNv7qW_qt{z%s3AQYerp@CCd@)FO3 za?qep8avWXdJi13W2_zN&-z~@py&nUks|YHydslEp3ZHmWEp`%o26UwIXC0R;dA?j z2di^O$A*TgqjOgbk1n69Dr3^#;hx%DZASH-$fiRjyG9|}aAcZ;!WS0Zcsz_x@1!|7 zzvS?Eys@KxHphLG7P2g*`cXHwc;XL*VU9-W=wnXt244dXLIm~g9OAp+qtp?a%nG!= z^l5*{zucpC8qF(RkXpPRUYK3ld++5dDx=G46CO%!ug(2Bz@GW(%E-*8P>hZa(&`1g zshXKF1G0xpYva7a9RVuu$jW)B-4M%vXc=x(NEL+86@b~dBdBfdeh{vj(d&uRULc0< zXt%DBLVDUIPyDnL)&@r*3DJmzJv6xyY9cY=>JF*IKS(OE93!BKBBnL3gdH)hi>K;g zecgCyTZI_`SG0kM-?cZmPt)&)FKB@XZxa433-BUd;h$kx0K7KD#)}~n_(AuvcEiu2&Kr0h-(pBNEWliESb%UG zP5+wc0IkIZ_#2^zb|!5z-YC0q0kVsB0s~Ch0;-=33^45^6&Qfpj%oN-#3V|T$A;z# z2{0MT4l; zD)nkNvG~0bMvh}D&Y8TV6 zJU(p`=>@*3`rGGfX4SP{S9%6DI~;8)4Uw`VP~HB)D#Qu{?~oLN7}w zh!gVwANo9&?MCCd06XSEN>3`Y!*pRrsRCmVZ;4*5>dMI?=>l014?c)>NNkCwj?h?) zIO0LF73?k1nT?UT1pk?pqJeuhIR1{=!(iBXgSWoKZM=D z(wsS^W6rIQRxGU@0lx~Mq&iwFjZ|tiIM%vSE9njx#z7bx=|xYAM`CM5&CqYB%c&hv ze4B9jUr=Uv_%O=}#yWnVW|3D`@VT#GP4Qv*7)70ZW^wlE-5Z~!xg6nsO;Bh#2?HO_ zs0T;u9TbsCaVoaR`XZOc+@so3P#arg1XRQ^1J0CE5yuQb=Pkn1am;{sN~wrr22cb} z`((itFcX(>*RhAQX1g=6VPkrA2<959wed4xHeJn*!6ek+2%IBao@H-U!}$q=(ffvb zVV2A~p~yUkp>35x>TFqNg<7928v#1Pa>^rcLNXju-akB4ThKi`RGnR_!}M6S9{vRy z+5vg|^M%6uaim`JSz?K|xf2@W#8jI-9WgzuE9-S!%@@a|f z+~OJ^TzAt}VS^>6uk2}&o(X8nu)F8ZrEF=J9=~c2d2X6`HGE5(e)5F0{yuJVL}O^4 z*5?dT&xY)wcVQ12cPyav!QX_c!vs_@hKvnWc3{~lsHl`MeT&d`qJXyi;bk?+90!y! z+F#bKVvqK3mNZczAKWnG)6Hw)8(PGoyM$R)0karm>lIxQu6Wf1R58TMP$d(u4+v<> zFJ7AD_KMf`={_$MBUjLH8ksuD@Ler(DbI=UeO$mwhVXq%CVZb0P{j~FLzPVUzAT_E zzwl|2+beuCEnpQ&k}GxmQxtw6;2J~D9+Jt~uLM*v%qXY)c!j z`vr~c+#o=mJRv4+%9d=f&Vg%_AbSB^+gd;sL(~jaGEplDXv;5Zn&kG1T0A6Xgh#SC z;}8LR7)^Je7AU)?60XA_QXk$V0)L!9R2(opL$R79&_5G6=$o*RR!hFX`|h=xMUj=9F>i5it> zg>&lh@{I)3^*rI$#D#&;Y<>9#tcg^EQ4k{-M#NJmrE#ikmWmRLuPlS3u7^sA-hHXE ztkOSJtA~S1(RjKB#_cG8Xys~wR;I1bbEbjUqmdxp%;%AsLNoiOgUf9VgntzwgO0iS zhG{Yw9?u6~jv1@@;8?=jJs-SVQj%dt>0~`t3bRIPBs3CcH`qNH$0E*yJR!1rXR)k{ zr-(ie8G}H0r-<-*_7u^UPR$ABSs6H%Gh;wKsby*k@w19@f!xFsBDd(uw>*Wos~I%H z8N}m8hsTDXu}8=1eNCG@8doCC9o;1i`|k{n3u+rT^&`5r-loRq*-gDoTBQl`S$X7Y z?H?%O1@)J=_Cjamrc_=sJUpP*eH=SbS%$O1iFdRVl$KOs!4}RDqkB{fwqQmj?m*c~ zK~lzlh>)Z_CmeqxqtyiLipAyCgt#~hMDU?kR=hz(>;)oIkewlGv<=d?NDa5$%3qeC zhVinHtsrCOI>|(IVAisb?XeDtWg&>-f@poDv2F3PkRO{8+V*SAwq<&QWcAm|wNYk)KK`-IF~l86^oCJXY*8RsA?wB-eWdv*7bq zkHF}`I<&6XNzU7foymBwVmJS)vsKY03Z0d2E`>gZ-8jZP$`v{p3@&-Z&9U*(HhRRf zv>Xn-$7Cf|j1XkC+&+_yD3llfjvZvNE{K7l0ymz7U0&ApP{7#__PP!TUd`;-(A z#7od{yddWiw1&!pF4 zuzU6z)6LIH&}1z%^&9j}Gm79?Dx)0no|R166`$;#ELmR&luYedQiCg#ppLw*k*Q6r zWGHJBtz?^OB~xcnQbi+Ah_dZhY;(rSHWxF_qij=9)uL*6d(}!Z^t+^D#}!mDsYh)X z`djy@M@ywH7ThDGS;T^i?N*533N$cYpiIZ?>0r4a<2ZO9o%68;G%I+Y>K9D|YY&T* zAqHOB(0t#YRPRYg?>i3#Pz5qnSMun6Dln9?OKO!f>QprQ7F^Mm#oGIiR?i;mhcW%d zODa9ft3$mt-=ghG9oBg-fpy)mZreInBwV-c+xEo%T7413AS$gY9c9D{qPOV{w+U1t1Qu2MMY!UHf)Q{IUP@EH?|c}#phMFz-}B`Wy-KU1f=DY+L(}{ zMAs3L$nhBaaR#mP+XZ!I+Yb(qb+&@U=U%2@g5cArdR|Yw<)W~qyWV-i>BpQBF@qn2 zzgxg4hTOgrvIj5hG+&d=NB<lJ3lm3#74V_fiIPgEoJ&Dw zi(NR_@bw1NTEaEJ1hbYf1?7iv_}9W)29?B12@~q2*O)bks{@JkEhP+E-$ZLljr*>& z5Z!l8P~z>iGmgc)9tA_i;r}>ZsqU+~YESpok%8t*pkj8==v$f{aYU4?uKYEygSycy z4nMx6S#ev$3UyTkD^zsfiRj7i1^wZpRruc~p^2^dRHpN;KTYkh7ZjlQ;}L=7=&;Ip zCF~_GD0L3@5A_fBpI7aiog6=(S5lL3@Itv0=Zva7tqwpw5Zoflxdd4zRxjxd-1ADfBnQ4d78W?bh(^>mwY#$WEjsiqxX^K4sk3JQ zqGfa*HoJ6aZ?)F5xYoaHac!j1Q=M0eUMY1Rc38s2Dg$k#k67hzqMUig64)Kl2QxDB zb&na&25I#goYcXw3d4=o{0GF?4)+IJB_8#t?GboL}viIX`5`7iEqkA@q`^4CEZ0k2R zKKsDfmGc_NLmF^z5{h}IfGP%XH&k(f`z`{i7`D_OJengi-<$^xSQk2(vHx)C`?M8 z5H2oOh{P{nW=LS8*9po-5c+huGVjuC_wQN!Z+HqnCD z1vKV&7n-5%br;*DjF5yZah(KzyT%UNwY5L74P-BH5qk=#Vz>xH71u@VFQAH{35F`$ zMUYJ?*$%?pt#XWjtSLX|;;`7RO z4jl)CCeTa+A3&#p*9xf0?+!Ez+v^T?$s8LGx#Bv8t=;d!mo*F1ULY>^W&uwbeTh#% z_5w$7w}2{!qcBu)9mUrLR57%|P~|uZn0<*FwTYv^S4s2!P(X4{M}aitaunZFGE;z~ z5H|A@0-o`knd>NC7Er}-6hdB2+n$dz`Mk0n#YUZ_&PXNHV2QdzB!620W%-?jW@CGu z#coYzN<+@L?jj|A0~vBkc}{pbN5E5tvzP_h3!KG#0aXlVVW{FdixUJ?F*L(aWjhNR z#Uk5Vq=dIvBp^DUyU;}B@)xHou_?e`2wQqgz%+hKbN$7K1XMBng^*WQ3aH}q%Jvsi z)e4f(E^1_K?h*U;Nda~FeTHUbp*};FnI~jo^V$7%5i&7&3MOKjL`qDdJX+V`u;?q0 zUl9u)!}BbWJ{>0U`zTiUXLz0^UOTH86DvUUOw(5}gJ=N~I7Z(pM)y3+F7J7kfE||h zFRPh@EcM!&Xt!}$tHyNmHSJ0~lA#=S6o*Eqdz@uv$E4Dw1PtCH! z{>_LPM(de;Kx%tzM!5nVjpGX)t!m53BDw#Q6$0>htV1Fe0(B?Gdc@m4lkH%~7s_k~ zy|_B%WXR@U?b({>lBUVZ)xmqsH#fwQ9QI~6jp1P&C#+Lt(fSdQ$Gb!Or811IDz$z` zxPo4}t6CM0i&XJF!;fl8!|@oj$W^()f72!h2bzM(#-q!U@#(Q@ypc=%7@$HoR*B@v2d9sq2 zIC%1e*wyWK^y?c(fE~}iHDv6?^!PBpmRqZDwTPxf3VmBfX@WY&dR|s_i7^qwtlV>H`Al{bd9++WMI1l$tx{VPM~K6*2GPh_e1!Fu zQYzvIadbe3b_9Ye+7cD*5E$sBhgo`}qUlk-QZhE$96eO3jcKimY_Em`jIDfAH(Y1d zxb-uxcaAn(r<7}KbxNExmqudOn@!}e;ak2uandewi)&o9u6Got@jKdpYi}_pz>yyv z?FN?t(L|KbO)!=yT&s*3dsF)71ynI6V+~d8MF?LJkd->=k~knE$c~Pt&i=?+gn$EN z$>?Z_8N7IyOjnrW5S)ExaU7u(oe4gMobk#io#o~S5BjNq?+kJH5o8a*j~hJb_X4UI zs$;0)uI_nGKoy@?8g%K!3j`J+)jpg&QS#@M^L`+zhzWExRj!U2Y-D>!6*p++PN12I z_y~;@-xo#?+7jM1FfNWBlu#-?Z}$t6^}JRFU?a$`l<{Jhn$7B4)m&QY3Xq}S;sNAdZ%>?F6!MdGp(AbYSMT<5Y# zKo!He7^<>ync^$)IsF2v^1(7iLvB>2tLu2HjOo7&RF;`2(QGTp31Ly&5py`CufbIRElh$>4a%CDV6YTLvpEH2MGl$MCdMTXE4_lc7KACXWB6+J^ac|h5p+~OLS zu5(b9;H%g1BD0+ZRILxlOjp8$&nv7BvnFlW9I7GmEhD00)*$d#=aRRCs@XS!f<<+|dRPlMG;90V5iTOs- z+lT1!w; z1X{ZYg+igV595_WYwBu)LTmezRU{cOj0~8i9}}hLOp|BTwiB^oVEB|0Bcr?+qVLW6 z!1(I%a_}MCyh4_(5Y$GV5XJulw(P_WrhVKkZe1P?mBwAKW2Eb6_@ip~xOFcQyWI)d z3$WWa1XMA+kD)3XyQPKt`@Vp#eCVx(P=77Wcj_uT-b{wyQWPfm0B$zK@|wp|`kYi3!J7d?tLNq|hnn8X&4* z?B;Wa3cc+K%|Or_ad{zr+Y8=u@LNKiG=965FtknhjTWNuTY{1z@Y~x_G!=e32(J`= zQ&$@lew!C=-iZ&$XnokND+BL!xf!<;&AmBBb14N!w%P`DX`77*wo7|~*oTv`@h1-A zo#+q7I5(e=0tC=%x_hU^76?`#2844-bO%Eo!_?CJXjROLf?#mt`S z>N;LehVfD~CO8ur;}_6Gq%Z#5=}iKrGeqHf$X)>N?hsJLfOm!}F1-7yfGR$(6ufhT zwIR(u%RN!D=ah3C5LGa;YvLLe!22I4mH@mozZc@XpTWxx&P%A2#(5_Y_O=P<(LyxN zOHfh-&ifPAL*cwXZ(0B&yk1>t7jS^J`ayZ@6qgtqd{byho?68HaiawU(&4j zYs3n5RRk;C^YCm|l!KXge$0*vb|^~EZ^M5Sv~x)##l+!l}U(_}A3nO7-X}m0k_$n&1_9-uJU$9R3Kd z!Q^9@T#Lzd(Y@>O>f@N)fXR)RbWDX0zZTpC*WGq+T$rtg%jr*Qh8{CDD@5W>@(7h&j10PR<%itckxiW?@RD@cW@u1AZlNRpVi~R&-Kr*_0Mnh z&!hV14OFYYLsAPKi|?$h1vf#HquAiHKxqo9Lhxd#=b1`np4wb(R`s38#4p{qYqVB3!ULAN z_-%kU9uIRtJ8CyF-&**+bl>sD4*HR`*$KRNboX zbMEcQu)p8@al7Z<+f}E|yQ)r|!vMbf`1K=BU0s2bg^(a{D7rkSZ?%imAFW)uZF{w` zwK?lGS!*tXW<;XSc*X;b`NW7Y;}NiWo!(r{ABa1yy0Eslmu?O~WT$ox36X9!>JwW< z(y$yZNbCWKv|WmIKj-x%@L8qx$a#)5+w0t6ru6lYq(~vw9IVE#6(FSR5%wbG0uVr? zvBeEEgzGs&*v2ls+Ia|e>D7LUgeQZo#CE~EeUoNRU9HqY_Ntwfda-&nc|oy4auXr% zy>#TogaqU7g64s1og;`H%AkIn0Tp4vMngqaUteHAMNnTFDw~!|ZF2jQ@2IW3^nFC= zZ!&<-b74^4jNlpHr#h-Bg)DHyq`j~Gvl-(Uuv;|sYm&n}s*294_Ou&Ms`13xu^w5? z%C}3X91&ic*zrU%E3utre8I|<$wMW!;s&DRV+=|X@{B*CK)2a&v2s8#Y{^Xo-;$@( zon?YbQSg;YCthQoF!U;DFPT(BHf+(z-EgVpyIJ?Zqa48=y(CH9Ex=Q$yN?pwBmPZN zcZ=^D*6awe;WMa-)T>1U=?o1_j_(Muo4R|IH+6TicBVdc2Jh~2cOMfF0$YK%D{k)Y zaMw=q?vq4!X7cXEXVt)?9LAdClmJj34O%E|_X*G+b-^%6+bviW*_xL^V_C|@wqCBy z%gG2crHPqc@!{)$DJ46}wB3@$WZLdSu!TX?b@O)bZl_=Ix8Nt*+(yexmae-hsIUBN z)#eMu4O3?9bloq7>9WF(OnX+ls5&;SvYyJ!-SsVXNC#A(oQS4sjV+Un@#@5IEt+nM ziA;0bSPjU~*Nir8S-r72JlUviG7_dqPvz9Y%|CF(t<4DY_$V3_UaEWeK)DK0(`Ge*qevm32Bjs@GJgwb`tVMAc@bre`8| z>Gae{wFN~8pb&u)(|~k46H;Y@vfBvDj|!ei9R@6G6sFZE$|U?Z3PoOC5zl=cD~Q(= zLlm~S!R~AyV(BJ@<#b-407~>GLg3!d@Q;Imz|4OLLY(VWgnm&-VtyrQ$rz0-F$^fO zJfC;uLUGfAdGqIqztFOd=FTkPr!e6x-#bhAxhof(E}+N~eqwJO3txOaY|I%}+q)MY za1Yx{Y7;PJtTksYfW3CPU3U2Jv3UCr4o0%$iZjr;zPY{y2B< zFF2U)x6j^j>guGM%2cB^QXdx6k>>I1CnswCk;=!P{5MwJTpLUNnVM{FlsArF-5*si zsx_)xYx-Bs>iE=HZR7S@ed}mT-@CZhnA|v0zo_1X=8x|a6U@H;Xad5jz z4Q=+Sz2dsucr|%T*%tH!vC5=NyL1iDr;-V4uiKz`n7i0(*7J|Y@WKBGs>>Kq5mu}< zRCW!@g+dEpz|<`S+Z!0L6|X?4K&Du@z-Gf%MHPF$a4%E;C3tX46fe=QC2uGeOYb6N zy_zjzT z{*8et0&m^V=hKk2qk1${>&RYuP9`lyrpCzp0^46Z|Tgf|$y^Q;a!=Cg^ z`s|CqVauR-hH*TU0TqG6G*mW+&9|az;D3axl?Fy_t<1*J0{aW&d zHjBw!gshVo$RaS-i+POoG6qxx#?nyPjMbgjwUGf^arROm_m;h$?9Lw(7IK+vZ}f8V zo?gk+de`uaDCwMLcDgvu%sCcaQdOuZCFRzmcrjPsOrXW~B>TqRHAZ-#Geamb^c z?uO{I_wBv1;Z#;6k$PEBsDW=4TJ$osKmu~ueNgC2PExy9Pz@CJ(P6JkhOo&nIB{cZ z{h}I#y=7ZYQFUvzKGAF?n@;JTyE1jfn?qVFX2@V(Fu&gFOk)J+%s!8z-&QnCpr0=^ ztP+0>hb^TWpq2Q3{G`3?>@<8LF(uj^F&-dnzXpMUcV2y)DgkU~v0;~rhGlG6#=62> z^fERKF)aj`oUM2mf=JY&Y|6N9^?J1Jgzc*#33wgpZRO%F3mJJUGz_TnhKz{k;gFI2 z+@T|~hgxtnVqjz46fzl8bfW~F!8uuk#Pw?Q(|dZh{q0EJXX;HJ5mIzoV{&?8Bx*IL zTce$co^Avof~R*8#=aQ9Ib*mPu|KDV>m{~$9wznyxuZtVhZ-qF?@vqU83^Fh`)DQ1 zg52xsV3pupslEdNV)cpPvFVW-e5xR^>e%q~m<;3&2!Hn*IX@2&gMoyM3x3jp3&is< z7Yxvlf!HI|dLj1s;q0@=s&wZhs?;Z1GCX*lh>sDBBK#Y8UT=Yq6UjjT09zP)El5Ea z_YoEke3qX^g_vVMXgIM4PLQy8=;e&AgM{}0RAHAv-a+GA8R&^IzAQAjPmYh$1Uodi zUyQ*B4Hh1GoSvc4<}3>hHZgC91_u%ERp*_5b!d=V5k*3c6_VR0ktw24$5-n|>FuYe z0{H@@)SkCy`3_s61ecQ5b<8Y z?fk35x?xyEm{6OApM|I|p|X6k_>an%+hu{bHa`iiA2s z{&_i4N)v1$|64JJ?uA^_z`|Sn!pDe$&M3Cg?IqICXM)KOs~HVHLY$eg^7 z%qE4+$vU)OpE-r+!kMvFZR<{X8mw89HblHSkQ`y?k49=+s?%ewsNRg8EsirhJK!en zjk>{-Xgx!yUR5reWiI3MpkeP^PdqGcSIj)^%7D2U#!n9PR7i|YkmI8?!L}x+iZOI= zO-#(&0v<%XSHL^}>KGb3KXAqEf}tO{;tuN^eW<5Gl3yW{tFYuBo5fUQD>&@RE%k}&nA*b%2)Y@Nft&;L0TS^`$`yf3#J5YFdR#~GumlnBVmasfKu;9; zbS&i?<@hK~utod^F^29%+{C;s;z7iFMZEK``nqLZ#C)N43kh_KOq{|3Z5IBEDy?Za zf+%N$r`E?{jwly&R3J>Wt+ulnkYN<+f`k}7L5Tcvxm=z}@fRf`JyI+l7MEgNI!|?# zSM=@w27052p(DxvCdWu=f-TA46=UdLl1=Q}k{m?7SCTvb>L4G(B8CgKQ%G_@PbP*( zav4x$htJ>0-OrP3+;PcM%1jb(mjxDYBr^pT$Hx zLo`f@iLkf2Pdg#f=fJCtoymTd&SKT5HDS`z?2oqBVeeaL(x^EFXSlc2A^u@Aygl85 z^X?lh6)VNz*aFSs+4qqF)HxZd_TFT`WTlw!EA*j27YyoTc_xCeOFY@xt3tnE2$>93 zl2H_^V2rfna+=pNArrhd+d{Tn30Wl9@3DP0pCDnYmP^h|*j_CfE+T9Tg{Yv? zIYYgR26jq1DqBvYFRnM%WF z{ScHwj#!uK|At`2XjO^h`2v$RxOkk(~0q;Y{nEziZNFIA!zr=4D=Y&ig8 zc-;=QBCN!Ao|OH(?^yU2Z+e1 z4X`U7T^gOJ*$GOvs2w7DLGt@uJfz~_Q=Wtb?q7%IVF8$$!2Jgds0az%HB=p}pg=Ts z2p?vEm8aQ|6%3|kUnqeHWMP+ibB(;~GE!grPg&%T9{Dmt#h47)VZ z${1lUV}MqSYcoK~VqJ$xQp2P5hqZlOV~m;1BoqhM$<6dHX=3Lbhamo%(Dz`K=77=(v(I;T#ep zr&Wx==d{iiUpoEV3tU_3nZLGYDj-h*{xzULodV49@RM4+pM;mRQ<9wmG^9(NBKs6_ zuYg~DrvPKCaAfB*J=v5MccP}O1|;6edPOB|-ZPz~`Dd+vC%8h^;{AK^P0m{7x8BTJ z9R{GF1DE4a=*aS)hi35KgiNVPaR=`NUc97G@vRgU@>?0GkaY=XV*>x2Bt3h$CSjnC z61l8m_o-FyOMt7W6!CBvWGE8z!{ejA@#>EHc>UrUtA7J zNF9RHMlE=BRKGY|qH?b$_p%hMMi0Y{NoXF$%R-4nST%(h_rWB(Q^(E1oK@s{gyzME zk#*IcFCa;|ymTyJ}+R;n;b7Kk`J=JITz}P5OIC zU?|zI?EJrbroT$wQPUygK2k$R&?!o(kJk^)=Q;ZwN;$4!Kt*u&HB?k*e;orVf|k`# z*%XxvKFOY6c)IVdPraG}a;VBm~SW@^6T zs~J!cvimSaVuk?~9anbFp=FsfiM5>h0I9imG2kqoe@G#fGADBUri+B}lv{)q7y_tL zJ7M>sA!jKE*&HA;a2Vs{uL-Lmh0z-!q^h*a{65Rf+s711f@GXsB#kVZ}9u ztwmnI<4+l27qb@{iqNufM~m@8$vGuh3?{MnIGpU|$8=&-EyjKfs0bE=iK}NaprYf- zwirwF>O!Irl~bJFMYdvq0by}lq0re|Td{w303=yPIV!=3Ya-0^8;SoZmov-<2y>@0 zFh?*DCqna#$;5dKs0ao^Lq#3U8Kwk^xn5bD&VzTXXPa zcTwGM4UF7O$QT&+kuCT-18oFb@XydZ!xnsx0Tsa(XsD>R;1>+22#l|xD%BP|&H#CL z+k!txo+-f=Fv3ksdRwF~`LFikLsCP9_EmSkm;Lo*2L8A9xj8HgoVjvqkt z49oEd11f^$&`?n=#~ziQx|bR%+j2Z5pCd9>2(L1Ea_$|-7z@#)#OIzlZ=O8;qBCK( z_pt)SidmTbUt;H4`x$zqz z5`>NRyQnt~H*{vxT)mbj7V@1O@z+dPmf;JJ(|mwNI}zyDV>UwanH5Lb zCPzzY!n6p=C@lwzVCjEpAn+PQJSE0pB>KX3L2HgIw~0vyJ9%c143ct-q6eokOOKMqyUn=%uoWxa%T?yRRzQdj)UM+@cVFXVUyG zg@Sx(77u;Bb}!8+4p4UFhWmXg&=W=YG>J3${iGZpr3q7h<169kdH!3T{C-A^p?mo? zF>lLn5b<95?fff3RkBcHh2-`fWQr7)+uc}|?AL-RdLg*KlxXyrVe!z{D?xD0jd~@x z;to>pOIG@OqDY-1xC^0S;>2uEu(KnR<51>$h9tOqiZOIAxF+Up!3`qbE4ZD1MXyR0 zYO|31J~;dGJ2$J6ttprFGn+glS>Get;$d;o&bC6)!c2A>3HiB!J_`x?*>a?mCfL^b zs1HDm9fa5BDU5=5` z1lx*yON^m=D`H~b7VIGMy@K8OR|7OQMr;^ry^xfDl1w6xlrx~n%ATy_x~^Gbd$EYj z+TZx9*esOE6<)-JB1>$KSL)@WcDffDU*D5t?gMFM@0<+nYX2ola|A*n_h)%u8`Lf3 zCUFmrto!6}`zFcZ($2IZb`!W$4i~I`o?l^l^iPpw?E`Li?W=Zc`mzk2X_hZLg`JGq zPq9tSuyL|GyTM8V1v{ zOBh1IU1HC|NVp^;CA22bb}rO#DVp2~k;(EG=g3I>Vu2VhgQj8iDU(v!;c^Dz3G8q& zG!IPbh)##B#cc*ugy2XG6%|)+V?ag6m6VW_u*jzoaQmFx+2TQ`p9%m~LVS`6OcEhV z?Hr3I^Avv)dNMLEwo`MLKD3aPdnrFCP3;X@* z+e36pzAFtC)%AKZ1FE^;da2<$<|q(%5pcb71SEb~Fp-x*7mB>wNk|X9TEr0ytP^~R zerTTIcdcPSMew^cR8+rf9Rn&luB6|ksEV8}0d$X@u8!R2aQSzDH_LUpZ2KlXt{BE{ zdR)r5CGOTXc;EEM+#`1jccR=a1Clb_txE(SNO$W}@lCp0^4k;2-CC6< zy3Q?Nn6vtInBV70+v?@|*OODnE9)+u?rya5vK#rj^*d_6z_^cu`zAq3T1-n3KkO}T zckOF-uODV0)obgDIb-j42VJH!_HJmN;f#HP0TschXsD>p*q0bk%>`#n4c9SKJZCIN zO5(c&V!RA$Ca_L*1J%uVfPs4gM|>BWXSig)Vn9W3$uv|{T>TFNDmt#DOJ>p*>23kK zPj}B2Cp!JK0jP2vvt0Wpy|Y6Huy`~e3LGk{Pu)$(N?3F4zKrx7RK^wO)Fn+&}glfZWZdaWUjVxbq5{&RQWWjbts2F)`ZwowLD1e2qo3Oj6h zx&JR>z*Wp;>mv7mSDTk=$c_o)Ic+)862Dxa#>=K@8u?U7P`!{D2I>hcaXmE8@YvqP zfQsO;X{e~U`UnFmIS3yPkYZ64?6v<0ieot*F1JmI&5Eo-pu7RWa<)^ z?W^#T9WahPbinoJWbi1!xmUo zOVf+@(p}4D6eRQHNU$Pox|V1 z0)1YtQg4Xyt6qqJNzD<_^U-KkFi+%oVo#pm~P#_D>9` z2zE$A6?Wb{$F{%20FCIuxd~uNiLJX@anmSp*rh{q>t8ZPPjFkhB23pwE!B2on> zmP(F-7xt`ugy@jqdf!!Kok=;;qo8v9A)ddVqj2MU1;M;}4&|byyZjXfatP|nA5_*y|TS`%M3Aai7!AyMQ;#_4>W8l=S>J0}@Qn z-}03b?|&FxbG&~;j+FQRZlno&3Ta1;h3p`JvD_dYj_g z0Rab|1jHwZd(ucOAZD#v+?-8aB%>*K5B_p9ag8hO1|UU$JYK6`JtTnFFQ&X3=q zKHBo>8|C#)^7>}+U_tyR=w$7p_wDz&y>L|se4qUP{o?=oPKV3?KttEYAB6v5sCUE1S^M_IkHF3K@oz*Q zzZI9i5U+noTz)T~{7&3_R9rqRezXS?Ei#N&^M%L0J=+W2wtcpiL>KMFT@#s3Ze z?}|Sr-k%@;LH_fQc;#2(^055>*KoZy{-gLl`r-AU@ct6sULSuPuE1)afRD>&;_s-B z@2ZdgR38thkL!d`T?3b9{9oCfUCsCoAh}=w@hp~dA_O7+5@0~H#+C3!mT~nq{l54e zbS+*^%t&tD$o8Uo6GUU?TFr@HgodRkwp+VnIy$5MF(r?3ys10_T3;o`UKN*@J_9c2 ziOao*!R52!B67pWGMl_Og&E5O#Nuc`EKd}OShQFMQ;KcQSnkk^wY69-$q9QK3ny_p z{;?v!Pu0hR@BxVYh5C3%eLSo_exp7fQ6G=O2XM&m#mBt(G5Co80GG?a+c;+?ejL6+ zJM#~eAA7*Z`go!GXR-Xp9OttIYh3{(%%$-)o(Gk5W!}Xl*3;CR!=^ ztl&fm>?g%Hq_%xqEqT)%&2U1eDQbVpZMc2ns?o{u+N#F%#6+#JYWrkk+bTIEeI1z` zZmv>lR^3T8z8dOaquJ6d1=_p(1RA%W4hM7(RrowM%0u={`w;bbAopqB5zQPtq{|`Y z58*gCGtfT#ELmwFsz@(DXYs80^LZ%u!6+(@lCys=r|y0JM`9j*;U=_^s+ znl&K1s?ve3zn~o^BpSbRIXI&nbyD>EKw~~RBTR|}tX`)u*Hi=!4F24OwS8sj_Cw1w zl*O%Jh6QX7kibJ8PP!aT-hRUWTu27S>K;cz*{2N5@jf_F$IYZrN>IoH)2`mJ+56IJZvaXIQ zJ~XplJ7ifppAC}Te71(nxAvSKPucOj+_5zmrD|h^gvycWrHR!~#IzFImDm=nT$wyn zGAwQ&a=xBHPC_lVD-`H9PcByO3WhDYiQv0|0Uv=*3cgb5#B0n`;;ggrE4#$m(>E&b zy{RW0$^~hzQlB&JMUa`iJ~9(O9SD=vj}p^2Elszi3v@Zar_P~+r5}SsmCW0ra+ql3 zZn${dg?r$UN5DrfNlKjw5LKzO&xvp1-=x%;_^#p2G6fl4g>pT9ikv*KL%vKwZmF}U zx~0z4N!#wKnte$C?3r@fS?}9VHmaIgoj3)|z9Jen3z#idzrb4IYk}@P+ObgSvVRif z*z9RJ*I~r0hm6U0pfP&sGRY#cbeUuuS-LF2jcF&u?0-&q`ifNr!_X!-dQe%hvY!j0 zE2mnu`8VQ5%7noFcCoTmqK3|9DDk9AKN;o9s$*mNW>ZYAPp@5EZKR2Yl`SIw8X1P) zAm9ow%A{zRgS72LhgZI2KCA`H^^9gzZPcP>eSB)H7Hw}-r>1I+rp)yWmAIy>W03y2 zIVkwzGeio&&i3cV>_XR z;mPsw+Qdk0WZA@IOJtdD)anx#)h6IO@Wb}eT5W7FI%7*zP1phofmO$3&yj=-e%-2# zM4NX;O<3!SVC`XBb!)9Z5-`u5C=gJ zrlwo9$_hKcP%)rhk`e4UIynMsiPoVH^j6YX?wTUj02p;~_iKu$pCy$<(p6=uQ5&fb zi$asl<3*G}f7F6i#9Ax)FPUIKrN1>%5(IZL{33DO-Sl@$G)|H?l&VkfB8GS_ogs=O zUwM|>T@NAoggr@_A*e{luFRUQOOobVN@OEst}N zoBI0Io9530eF}e`jGBZA+l!zdK#)Droqs$A6#hrxof!hp0~KMKtD)i*_kJY74TQ>GuVFw% zU@r|7kGF&?Bs>ru%@0I7M*lQ-42dH8srBj3O{x1x?6W6)ji1X$8pn(J@ zu(lnG)e18?y|JE^t!95k@*ZVX#ZmG119Fv5-I)-(X(h7#B<$7B;H4pFRWfHFsi)$w z?xBFfl2#?<`eQ5-oX5Wxyd{HB=N&0lQPluu+NqnYgHPN0;-OVm%s7jdhA=2XJp(Z= zY0>h_C#eZdGH<`AIyPOCs|RBCytNK<{K)VPqv}>DP}x+|er>In4NX;HPHnz66rG*U zGa}h!GkHt@Xec_ZF*yw@4Xws>Yt(w@RV!bmqZ@{zQ+Bi(RhZUqofb<7&1j@H1q%^! zR~%Le(wRSYBw|3^*sJM2fQ)p&W5sUsOCa98y2R{)I$Qw@xm*hd9W(fu%#Oq zP!YnGG*sb$q=f>}cuDV023UET5A7WXONJ>R3Qx=QfF0)Oa0vM0jPVj;+PWfxOazX! z#upe+6{CWLp)4X$W#LoSbg4pz5rWzY9i7gvUzMWb z>J%07TN$X3huqL~-bO_w{x^u8)yL=3^Xsq%(Wnpm&amg6wd?8}yIg3%lh^p4MD(sS z80>TGvWfry96SFUyF}ps>T~RG7Q)qrOL~r7+%e9vi)XQv7aA%3mOZTZ}*-=7diwWtdw*T-Ktd!`)0%S zCWP80`V4LTcX}DQL0=RcC6(Q0#5bgdeal1v1D%~m|Ge99`xNeZ^mM?pawPqk`A5=I zAZFUn$UT*wy^wb>JqID_f?SW*ulvtV8O3)tJ%t%UN}q)fxuuT=(`Is)se=RSKA`lJ zv={rFx-#_5!5o0p;nUrCX#EkF%`>V}=Rh%P3?LuH${jdvbyIs1m z$VeUzg3aDbxhOFnpoZj(Q79WRafUqdSN$w!e@XpuAQIf#$<6CkAP85^ww+j|-~ zF^_8*_tAhN&VaUwBc`mA?41W>hcFK%C(v~w3xa}3DC`C`ACxqjVoNEP>=#bpo%%)c zf?6ueJ=y+3Iz}lc+mD3ifz6#op$;e8Pi8oY|509Qae$(m~YE!5vGc_+1`(SLq`!A7~2sX;M7VMsSU*(>9x6HjV`#PqkyR-0rFNWcn?%JxpT`|tWch$9X zLjD_~JJaP#!gGK)dd@6u;-@q zM6*ucc2-%P$)n47WA688qTucolIS^#Zrx69v&(elfOx$*Ix(?CxWves^DJ5!%PQaakY(iiqd%b zI)v-CGi5`=b)F&)dT9UxhQe3|pecp1PL7+>glU9TQ1)`jrc~Q8HC7+4w`O)_HW`<_ zh+ihg@LcHm+W2tMKQ_f$m1PINOp453K_G}!ev6_9uDCIx{_4;m|00Tnc!H}qSq8=fe=w75>mgGnfBCL)lVF{MUp`^xxJSWX2WFo0HBX!VIBrchr8iDjA z^1O!nT|m~I^RCKRWw#NQuMs?xdLLNwC`_wSl*#**3PoOC5zl=cD~Q(=LlkDsV0X6f zv2>Hdays(}ECAjS7zYD^nWqtiIM@FO{i2Y>Tp?-67>zA43@9d3p&Q^rk)8b!=A7lf zXJ>z&%7r33`-6QZEOYVoJxM}yls5@Y>PBY^iCHR|6~671)HO-dlH_fS1_#>x{^7fw z-a2MF8LMutjU@?c(lWcpukMekkkkp%Na;*AsJNTHcX6#TxpAa^k=%#Z_a-)uz{dP| zHEnZpx&=vnHg2o!RJ|BEwe3xs^t>)|N7B1U9sdNl%cm7R@>k?|&40PwwP)tiR$t0q z*&dj^W%L%{V12AHA-Fy;tZ6svypT*<+?}W%r`LJhC1<*>=;0p9X4D^~>LX{>+53fL zo{kBN=^83t+LJ>VuoX{xqCln?Lub1_%lrGNqRK2})j5iREW)nC5zsu$5UE*pPGmqu zU@r|7kG;-jz*d~S6v(}0ujPhT&GenKqov+TUeIo|zKIN9oq;I=Z`F9bwVeSKfwweN zJl?vB0b6n2QXu!3w+x3ZVI4Ogm{EfpIabDf#9?n|;ETXvZ{u;;UofB|aF~Y5<}fJm zj&Node7}zYRdL=@!1k86_A>qd1PLy4Ezz$fZz#=`-bIY{4F<9ZjP+F>V|||i6@jrd zR5oLw;;;&7>K4M-Lk!r8vzG$7x9s&~cS4!4kjrFNEm0(q)-!~@rAN~pY68P8gytE3 z*i#r#5g1NG#bdbVFkmara0=ueGn~6x5nwpjsXA0!r^4Y%j3TwhcE~70sUQOOooQ9qtR(l@@$bYkYTOf>Z?pxI~3diL34Rk}YDRq7Kh z8JE0H1l%M!rQvzK1$p4r$%Ft~7<)CyA{h4(7T*(~Q6c7dr@>e|ZOu@4i4!jPYer$bT)zM`?l`h5TtT1|tetxbSg$AjpYAHZgBUAqNrfRp*_5 zb!d=V5k*3c6_VSxlPTgvAyduxv3gT0sz5GcDYfVAoPrvPP=iqh#fhUr;%Jdj>r?5O zBY93JAj9dV7?R-hF2d%o%jNG(x&KmPQ+Z~N{ECMq$S)wxl3#HLjc>^@{+=kpr%9d3 z??Pypc(89zI5aRaIS#cqX5y~`2IRT$E>02bDaO#f{F<1zExpzI7A|q0oif+J;0T zZaqVYUQ@0hWP&~<1;Hce;$d+?Uz%VNOM7-3jr80=pA3G;ME-0!Qc4r1$tH>X%f%SF z7kNzs%fX3%crzT2F^@#g-+;B_wqBu11Jt!Ewn&NyCa=DSXnRSo0Nycsw7skp+8%w2 zOWARbRJy6LCwZ-9pCYXfn4Hb`{S=(E!q6gyI!aY?NVv z3R|t()}7L%h<68)0~7sFZfi?*daNaCZXYptM8I>jLJpAbu%01Af393!%Z$sXB%(dW zMLaBSTx4AWG*Y)(!Z!mwQS5=^MSfk5kJ1F&qjfa_8!1=SWU}2h#P+1 zD{N_)O1CP1>J`BMJ$vMRoJC%#l5Hg(lq;_i@BFLholDSBh@(Pn7gFS(BonBxB0n|@ z!pRov)=!Ubt~JEOKRMNwP7SuyC#qv=D>IwI@X(X@q1t`v_<_ z*~xKc{^DT?I=hRNyE6hkF~*lo15TCWqcp+R*=xlZy4Tqz=53)4BHk<1oqyHWE$brY z3$g5l@7x@ zr2AM~1jsCT{rt{(fSf*ZD~gnq5$F&IzEpK`@(MAlJ*Y}-C*sMee}^2Hoaaah zT_SiOjTy&m?9r}8lJjhLyKBFFP9^7YX`UT>uuE^2Tm<_~E^<;a^3Z}(1p7K@9#)m8 z6%KA^Kt-r4SMA7p@)7lMwgXTc)aA~|JyDb#+E*^6i7=@0F9WhpB4fSvLe z9g1LomN8yJ`HQZ|;BM>u69cMZRFE(P>Osg1q1_UJDhvO~7%p8F9MFP(lGz_quYGuDxu!^je{W|eY zPJ!jO-b{fVuIPL;E?W-3HE9$&jKVd3bi^ZY9Jt-7RoaNJ?7+K$#x)F)?3eQWxo<3?)D;f>Au z){V`n>M#sHeI@E!v&Jyz(imvAMh4*hf`L6t8RS{-M*@xc=HdjyCSdi7ZmzExaF^cg z!rH!JE-k7kp`5i6r+@3>qtiM{krJml=#Rf7KuEpSjbKt&ymscYnM!;mtc?~b>hTTE z;I;{y&MJ4>d2n{_>VNp(qr#HC9XILqA%Q_=zp_)u?wS57c}LCFjQdEV{gh5?O780) zLi2eukq(7eA7wyAn2Bhps56m8$NRN^2?|?7Wm8nHMkNdG;k5{N@$4W5$UR;>+m2T- z*E_41`vc7WEkHsxDJGd$GjK+*%NiGaDL;(9(5B!|`^>IX+8FXF)2lKh3}z zo!C^v@ed5B2!?|x7~f_L zH5leemBcBP%O&Omgt^BVm?OyQAE0@Lx!8LR-Iphr3k?-jgB-$uiXaslD%)J36gy#K z;pW~MV1QiAR7e;K8HyDEb15?nCYeuT;EYaYs-bu}11f@{VB%_+0TmrrwxO7RRH6d) zR`*dj#{5DCRK?AKLSb*s!IRx}`~(%QH82v6A!A_NN4DTP2HFU=;A&`|VGC|yKt-?x z8Y-$ScrODg0^@6_O0@-_WPrT8ZNbMS&y+A}V3PS?7&xPonQ9CElK~aM7BF%3O9oVQ zTsgL&L)E80GN3AM3ls`_YYU#DGv8VJw|;w&rmsWRAiaxh!GSNPd*B3Hupczfumy)P zpd#1;4HeZEtY$z(V0;agV++jGeI4cnPENm*7$6t41p^z7NmP7@r*+F_2DY$DG5Ei!!3Z1>R3(xH;ekZ|^ zJ8iI1AR=R7Jwq71lYvo!$+#VwXPAr+GoT`v3=I|4WPF+d6+u2URJO_3#|q`jcpz*) zJXs>Y!Wcv`Ba#79$ddenhm|^hK_N+nN_jvkCp!tdlo317_aAUU?7tqs;_|N8JY zf>3CvY|1VdvFbYdJEMQtl)3S6yBM(NF?ILH@+1s}%-B_md8lN%gE3SBnKV?+8M6)t zN$+MrMPO+ruI^<(MaNZ`S@Zm^FEijO#;#@fU5W@k8$nl_RL=iC18W3oY6V60a2{en zMeuN#%KT3ZsOY$|J)Aw@@J^z{l@l)SpvnI76XCiNJ>V&dPcXX1~q zh4U-oyK_d>IB28JsJ>G)ke&hqzs`3?wG!LO^9E0>HfznHXei0xF|_G&l_Y3bo+@k( zo>gl#>ci?dQ<{&iqSqPqud(mCCLk!WWpmnn#Gd2(mZ5`1@#&&Bvs}eqCd3%BGXs!$ zR@p1@@WF6=X~ERa8IfUQK&3gU<(^m5l)4unRD?Md`t!&2 za>*%I>B(8;fVNi~6EnNw!`A^ElBHzXF3DzJI1dK%G(UxB%+n9z80%a(UKf*WrUe4&o6sWy)lH%y7L-qe%gFc|(XdQCkg0VsHScBh z-Ne!hyhQVH>JndEoUMQNzo|L+U zuz5$h*v#@z-wF)_@?-$8lSN)U%!C@tkZqU1Hfx(=*Roiap$(7Ie1Jy#u|U5bs}qvl zET{ZEa`c@_GN_a8 z(F0f97-7@h`B%?7kHEl)K%ur>9}tWpEZFB6Z_}y;qCW@MO>Unc-;ZJ;NL@M%(K@_V`*AEgPl{GKJo(7hQpF>lLn5b<95?ffft zQP)t@g`{~EnLdT3c}^E~eOqqCVFvfImHZwEde> zXnS<0qOSkiD^!^RZ`+rkynF3S=U?%Px`x^OSmc!|*;e8~x$-LU&cEUpbq%#$NRj_>_7(Zb zMye#U2IN{%r>r#@ZOLjuss;I^o|)WfQa=u?#iMdzNUfnK$Yb77F8^ohyCwPGqrSz% z;_BPVGNjm3Rf|Mpd}E+DhKb5l_;qrOlqT4-f;WpXbg#lq?AtOPM7~$XJO65c#>R+5 zq1FpY`GsT>dE7My6j{B<>$&TTSw%3hZ^+v9{;G&8k-HO@a-qm7g5k|syyhQY-;*j> z*+OZ@VpeL8J~As{t?KeegZiX#ZuP6+s87I&Z_|lxB|a5DX&;ov3MfF+KDDlPD_^At zmytG4?;;WU8C}a2sdDurx4ZV+=3YYP4997vVmni}ISZ(`H7hz~iv5#|hcuqdXBi0b z#E(h+MNaL#{A9m@^+835s?<<V$p+_}_K8BpczyCN$ZtY;-*2nD|%13J;Hq+|r( zW#z2Ya48nRiOI|gzvKu`{CmMfUItB1_ojM+8jyT61MviQcs?`_8$M1beur`|r!b%* zh>nJeimP)OP|7)4p&t#UVb>axcU0x?xL>70sQhbxe zUF5eiDw;@dhgH$!rbYAS&l7)fp!!RDNo@imjBCxA3!qlOao{7hU!>yGx^&f$f7jpT zj|OF&T3(ftlAOB(Z0F7ljB`D^?&9Wd7u2O~(HHUQZgIP7-#iC>I)z%Vy)5R?-Qyym zOo#4nXdV;~)hd040Tsb2X{e|U-9Iv*nhOq{8m?pH0$MBJ(B()?{6T>jFM}>O${8gw zrSuwpKV=}Fz!E=%<{3`iqYS7BPMwB|Dn5%&AuH0Djw|WZA>ty(PQdQd=Cj3%PCqvS zP(5+%JO)vEb%y~ta=bca6cd;3Iq;I>(iwuKT)LYOQhVgm;ZBrGXFyVhOLvsuQ0daW zKzx%fo&2_YT{@yCcYIp?r;AecIm>mcyLIQ%etNlJ_f*@b%X&?x;v20+KBLYNTC_9n zBc-rjPlqw9W>v9_d_XLi(8JcIfc^_avMR4;pR8(C3H3KR- zuB4l1(iSOn0lH72&lV>-{hR_o^~B2ynMmpC-48wIxO#>;O#HoX!JCf1X9$?`_fA9T z?UBESJ5m0g0ZAGD-jBpMq`&uL@lE=B^4k;2-+M8NXz9{~&SFr2z!_&i^9(O=0|P386ltiaxT-UtqT@<>fi``S zf*0WT*c0r?kq+lS3TB`uo?zH;N?-6AKuC@+h)iVS4PFcHI^LimY|0ya3>mc^d4sqU z1Q4@oDL%9a>K z!uUP|s$$-sgrRWQo*J%W0eQY(j_Aan7l`pP==`*76Mb*@aR$l>jPM6&p5gB8eHvL? zQ6^0qDyqA82m>lQuB5vMBt`05K~dg9@Q45IY!jsZ&K_;-f!OT4=w zc+>Ij3~^H4-Q5ViJ@W2wC(64sASuJUJ5z9|^zPP*Z_>My-=0w3-3h4Z4$s4TLAR@Y zsIOjnc~7_ZcyZ5OPtPh7guFfL8B!S|f&*sHQOuKHP6_Zn4yeIF^%0^&O{BkP446y^$Cctu6>@ZL+z{}4wHhk8L!T{tpMe~L z()bT(o-tc^hyfLWWEv{!Y~fD~sOY$ovjs&}Wc>xuKI=bQ+~@SO0f6esgrSpfB_|Ds zoSr*ruzaXw;&3Ru?MxgD;ZhTa3lN%nG;zS4sELCCNf{G|ei*HqI1Gqya^fJrJ+USZ zR{o+c=Kv^7pzDbP>T6af4!CFk#3A=Rl_?vKwCsPSr7vz``x z{_=GO+6nCN&(J(${_;HrR0Pq{P*LYEzhFQ`$CaGFxFyj9%swAvws_C!=Xd~WcBU_u zuOX)|%g@N4zTkJ0>C0a5wljS(L`zLyUX0M(qv;FoL``1|NXnSL915dV)0d}BcaW8j?-yJYe3u%OHKkCGfd+ zUVN$inASvn4FD5g2DjG7m&@ye3*p9V;p>Xm&WK;VUfz8JytY2RN`AjuUayhYYvpwp zT;sF%hRb#EZSDN{4eFyUpT1FE-z2YZ77rH0e}YcdE{d-g|1FB&A|Kr#uQ$T=+W0Ye zKKku=2L6d}5|_7%%gy3)OM35C@$GHma+|o^E-v#I!4E$Z-vQs(j~=u>emi`DEMvbA zgZiboyhA*R@08bf%Imx2^)7jRx4gbbUf&B>g~0d8|KBhEzwdOo{0}sAZTvy_ABK82 ze4Mp!U;GH%Tp#~N^zmD9`3v#-hs5Rg^2zVS%}2%M!{UcaM}M{}zDGR%h`1~OxUY>L z7mw$`*Z8Awb65P|@c*v(W8(e!@gL+r4~bWPB`y!k|9=hFYvVtP@1q}H59;qP;qCSD z$KeXA#GinV%Vy&5sE_ZekN;F352%ml3lTd4F3tGAvOBw)@f|>N!2se}ETu+>Mf@ee zfM$&=;f*wfo1Fzlyqs8?+=4*uMfE0##>};v6Tc`>E34|gZujrGCDHUsI_2n7=>#PI zTwvm1arxd0;PPMM(l{0_+r{M_qU5BkohdQ_#WIPNI65B7><8j_Q7q5LiSW``Mx}}{ zgjhz+i1o!-E{Y3N9SiSrI{vXD%um(FgYW^g{e}8?NPRr4K7OM<9#J2U!Uu59@5RTw z_%Zm1{{WZEATZ;cnfP(|3hm54P=4$IAM4|V>Yv5(A9KWi*aLoi1rR)!_SbkGRN^*% z(mn()Xn|6#j*TTM5^W3z-$biDTLp(oV5{OAQtqC^A-No>8BypuMfVZ6;r5BEMkmK> zs~Xc26Sc;w?URjdDs7^^j!X_WS1I*trBhTx9c(mPnz=x$m!Agm_R}Fp(4orY92?~! zd!~JedOVQ(G%xK>4j$5#obrbt(;OXsj^d1p^c5ngu$Kqz3K&e@{XzBX+$GK6V7gCG zd7SE^GAv8M4n?{$Y-0X3wbe`NbX0$|a^*HCKf1NKB1>dqpVc{X!*PeTYCBp(QJ)-n z-NJ4IP895^$byoGxKw~~} zBh0DZ?S8fCOW^Qs}ZC_csdC|m%GQmRpAz|0VR#7N2#F^Rhz&a}_!hyLzONgx2 zzCG_Cnt#F_dP;K-nJV!s0hsuFxa1e{buhhFye|{x=3qMhD*-~f4zkf2=wc-tcx1^< zG?XuKhO$k7HrD-6UQHOvh1O7x;%I?n;FWm0)!YF|bEf*pUcbzGeX)8yc|oyAauXr) zJ9I?GyP&sfuH0#Rc`3Z0c;H*mJQy`+-L=C;!A}@a5f+a$R8%$hI|ft)HK(DnX}MP( z$^Et7}xLv;AuXd#5?-%qEr_CMahCK+Dj83Ad%KeJaH!Ss@n@zu1p>(Q5H84RR54 zit#wSpu~8EL}+ZY=3?c%VAztI2)<((@Db>w;476*yvE|2VM%P4X2_|O^qo!Nt?;|t ziPUW{_YjkAG5H3^F0d#kB~n))Za;maa_O6T7NWh-RSoGx&$JgoF`W9yO#FX zWt`!eSj_1(@VBIEdpW?TZi9oR>!H15l3$5GC>psNE*|IM9(d#t@XpIq_X5ON zt`?69E)xG<4JDS7M;hKNZ>`~DDDJ&MG?2~)!5sPW)&jtQWrGauRVP9L@8(c61fHDK zHba{%w_YK3@T?j*dBd9$QP7_E68&>5tm6S;uoZi|LhU-fZy6dxyj^ss%X3TXuvh_$ zf!Y}W%Ih2s9}M(cFtt;v;{m0P^GU6#bT7cBh%ycR`E_*ewjg3tWPh%N#@b7Oi)9tx zww~}vt728_hS}D{%&z$GbpVHCr#|sbve*~SgTYvnM?~EjJqT%N85z0xoxZlWa(>0o0NLm*c_g0)HWH#dL-YTSxPq#TybmDs+N8` z8X#USijO=WiBtPY7|2B8m0{k?8~_%ucLzH02w2F+UJYO=@(AcbsYw*gAHSG-Ow+2Y`*JX?mLZjvcJva{>5Lx{V=&5WVFPPgPs!3I zE$lK|K~hLnwRpDTXMlTY}x$KE~2bO0%Z(35CL3Re3^S91H|z zenk-CTyG=vi$W6f97#*YXl#jLK#|p<`#M){vpRIbinHAFtPb60xKLzu=&(a?*}3aa z&-WYb?fihZm{X)=aCmYY64TWxE9|4s%4631b7BfHIynNnc!%XJ`{}om#&UP_f`jXR zH}Bob=SjM%K=jT?eOSz3n#Zr7oT&9jYN;jpZ>+kxHkSO8W?<2;>hgH{KXh7G-$Ma! z`rgFG5r{Avucpl!$rR-)#;&2gm9j+R8@sLPU8I8BbPZA@mEyH-ckMUKfgQMn)JdcV z7!P|_XJ#&PK|*48*JxiG-0W3*DR;T?YVwvcI_L@Fo4Z^>rVE2UT}@cjeTP)~&SLod z<1u{jKZ5F`45$c8;Toz}z{-~~xoo2|s0wj82N*xcfbC{jh0kB6Z|~ono|>9$v^F-! ztBux$(~~Wz3ze)sk3%sj$eQpinEsjxwq`K+%T^R@3`ExSiP0Jpq*xY z6Y-^4t394&PXdcW5mA4LIKtK+$7E+Spdv7thKk2zuV%njoXHf(y=Ah!%qf7M#nQ^0h{4jkh`qKm zkVRmxCXc4W{R-C;Q$h~E+C%bb>Ka*L>ArPxs&k)1?1p|EqhI>Dc z;qGHVMPN7$6_4TmjsaV7hEpK-nBm+7ivYu+my`FDdlpLC@O=jQ2n_chJcfIS0TqGa zG*mo>`x67U;tZ!i?k&UZW37fIT;#fG%d$6~4Lli|XUqnk!+?sw zXBsLVpB>47tvH`4kbBE#``U}F2@ko9hBEIXD~g^VR$I$J96_a>#$&bf8Bh^eO+&?F zwXF=;inE#mxl~r;HRg#Z%~?c`-zJuS(!&+IDWbIfB)oAl(;>PvXCUb!vV*ZJVT2_` zm#UaQ8DRP*!C^AM^sVr%og6r6r@JLO|3G_RJhaM+BqA^iJ~e2d7GJMIYjR))x(_}* z`6RVx)|C71s_#gK#>o&nu^GR$eo+lV>axA5sJgXUpJ=v{-Klh+UYWphnnW7y?F{+M z3-5G7%;w^rkfP~rXvjcQU#M9n?q#gmUm`H@Hm+|GGl2Ol*6bsqVHs7ao&Q?4PfhcPIHf7{WY=@Ph9V%>x4avZ}L|-WvcUjoUKS0BPDsPCAcpeTr+0Pw1 z61Y$cj>Zh^(whP&xJ0ksd88h%<$P`Rk{@uRq7Kh8EU*v1l9;f5j+9U>n-qk)S-d^TNryXNI@9) z5f;w~(1?M8j5$s*n8OJ;77x9g(RIMFS<6Wo9=8h7s{=hT#+QW`Z;<1oG{Fup-Xz9g zgcl2MJxXmggG0yQyjhZhGC?^WlWe|2b(TM@^F8Y?8XCz2_mQOB3t7wO%tr~eBjWJ6yb(S<00oU0Rc|;ypZ^&cM&SzS}t>E!h3^6rIIN}c*VmK zgcmTDEHP=}6?f41?hf=skvvW3OnBcf$46bzo5{o}EXSvzZN#W@2Aq7VZXT;`*fKU*ZCxNG``qgI)L1Rr zUaM~%Z8fQ4ZS5~2;kKS3EI%OFCq08$c&?j?_;)3iJt8h1`g*lb>Siae>;pkrAr>^; z>^2(dqk%ptlIjTiZ{rQD* z#Jd9{^^0U`)&6Ltwxv2f){5%Q=!n510uG}UNPuL~dWH}^TrQ(!mSv-qNsna_4~ttC znX(^^)GZ{iBhXVJB{?m}M`?m>Pc9Z?=w9b&%v<)Py$3Lz9@;e`b=kkQ{vR4v&F*_bT%w(T3Sfl zLF4;HpeKsLbsXED$?;K|VC(FM#2C8Q*(T;~p$;P6E7YBT)z>ZSBI1PFEhNxiCljZz zKo1(xPEn;b4KsV`k)2u}gQ>qvur0G7MJ2h5?5G`^*uDkV*F+UXo4h+makazE_ev z|LPzg!y;mY+9@QtPbU+@Be@JHvit;p!`;u#@)L;2kAnFLJ|vqU1imaer`DQoOjsF~ z(z}R)mzOI}S;)&JqG3wNi=6}Qv=btoAE4UUnQT`=HUr2C7&U55n8G&uqwRGFZ4jC? zYEHq?{w;L~Z`llQPq!d9!bVHQN^v;0K(pAVcyj=CPLi{|HyJQlSxEc}{pLUy6iuat zBTGdRgk9pvPJ9;n1w+VWc03s*(}pq9R@(GvG9eSZHrqnBTnSkuw`QSwa;n@s_G$wfJT5O&0W$ z-}qImWO);*mt@)-AyaAebbNhJGWi_Ss9iW+hv>|Wo2$dyY7-;Pa7LeM3vA$KNc{sz zeR2zoBuRaoc6*uL=U^Sm?RKh_Vg?xzSFIQ1JV#pRnS$uFEzBZmb`Ej7Yu_{% z((L4*F+H?k7e6^b1jcQEfCyNqJyElpQQm}FSKvq&C#ksjlq;dGz#uda^G<4AftN6# zBGeVoP<6190@2uET+aY2PxB!wxd^h-WSN?A{>b)12}Gb6fK1ukUYaE1R_V*Nf0YG( z=>a>;u_5&sl*?%CCU0hpm(CnvGPv6}Qw*qzQ9;5`77?hj@Os8@>9XLkMu$4kH!z^0 zvj!DccQT-&<0{OsOB1b(b;pMppcUiV43M%|*I|;>@F;sf--=lH0%Oc%CZRaEP8P3! zNppthI0x~7fZuD0_uG(Adhpzn&RBcKc_}vN6|29)z!ZUTzXi>M8FuK`A#vPK7*G-D zr=g+>`R^D|(QzdWVh)Ls11m=0b6{tSFP(m#0zj31B(xov9>{~D2b^Ob6wUGclakd3 z!i(BL$qtDclBNz69*i&xyz4t8N=U-0d(Eb|xDz$KH6Za$>?&*<;VTR79-7<9GsxS&2M(G$oI^v~pq&KNC;+^b^mlP_VpQ1v3D+3j> zV&!a1_WRW|S!Mo@I+ot-qSP0;nrQbad+#@at*B}Qa8_t267$F7qrUO#j{120;#yz7 zx#B()$*nwiq0*<$CiL~M=#R2UhaotS)`G`J^^4<28|8VmRF~BPi@Z&H0GOd6Rekj)hnpE z%Wwgo=yVs>_O3awV4{T2$V%L+`k-|e0i9Myiqr?q!FN0=KuCSijZi?%OtOp1XP{jS z{0O-%+d0G923_-Ng?1j6omKkF|4UR=vb^FZqCO-r!t7UePU=0=UnTFTiI;I75&DgE zLQ`s)?tuCnlNiXW)!ZW@?_}A26UIq?=;m>R|>{bX?gyf+2t^wUfwqbjuSAm6MC@;B)<+ZV4iL z05s3A7l$*TBG?NJ71drG#ej++92zRyURY6|!=ULlIhp?r1eml$=u@ z3sQ-_iGejbv8h&Lf&mr5YA^-kQU+9XT-jD*xv^G}C`IKQqbJC2T*rX4xZO}_?XBI| zKWDKf!HR1t%u^+aFDlo+%?Ai`cQG(W@a^6K%`*(eM;TBN426b@syjZ%fQldw8Y65v*ei)Oazn64>E8@Co|PVJjQ^EU?P~fT5=xU&!pqZ zHWBlWN>rfUu09HH(I3cws<=5&DD15{c(S`ppP<6E21Y_KWDJb^$QBGT&_=KYE1`LY zEjW$=6~Pv0sHnE!Oa@d0#@A4lY71V)0C{)Yf>%nODZv&n$$Sw5XLK@CZNcjqP!Vha z6IVAdprYf-u?4FW1*mPoYHSPcWI$Ei7AO?<))qWPXQneYfyMT0f)3Xnq#5RrHAwFw zTW~J}Z3J8JSI|7e7JQij6~Pv0sHnE!eg;$o#@A3ewm{_4ODNf4ULamYCPPC- zH5r>2P!Z%qLuH$ceXK~Wj0eK@!;{Xj!5Bm_Ba#79$dXKWSgFG)nyVS(C9sl)Dol#J z)Qd9=xQfw1L(vl=q`~*vpSO-8yq_^xG7)?Vny#*>is93Y;n5WX)yen=22=zmgQ-Nn z&47xIE8EFfD1uuP&8c`)-9pCjM-14CyB7+PKJLwvc}65dr?B1xH#wdK`f2i>!eJL%w5=8Y6&^*Jl*!$1u^8tb;(oj(q$RP}<2tuKuvOSCCA`V>#cPDhM_|r&BU(yYO z8(_em$JE^)%Pk%Tw*p`W=An}51jbMaWYSPM=fpZ327M_5DgsM0adiO$Dmt#{e%Cez zT*cV648Kbe!Dl1rYLm+OS23_gpr%$(R1fDy22=zOhpEip$$*NEE8D}_1J33oN?aLd zc?bD7_b?zU?%yah`gk`_wmSMZyv97GOFJKs*iEHNYZhkFSNuTJhaEYHA#)QK7e|hz8Q*U0{@bM@=iSo#Jlr z#A>tF9EygL{2N1?E+4I3Tx|>vPfl#9Z*2~qCG*{>150VvxQY^wCHmKRjs1auh}f=C zyN}p&eBUy3fGGaC=*_Gsv6l%khU}LC$UN)om3a7INN=)WYUhkN6)-S7R&6#tr)4#z z?ga=HVSWbv(GtsHRz?2Y@1e0Q%}R1uRW3!;c1(@chwH7GUGjzP)yBlkuK4hE0Ec8L zSx`%|*%!`(!92}R;iUSl%)BB_qt3zOatgPC%V_5WHF;$EG?}Sx*(-o`)X6l}=JybP zfFRl8a=4O%X{c>bpPWz?>ttqZbxbu<$syC6x=KpA{SmS=`w7@mnZ_B>Jgk~~IMN>U zoTaCOdtU)wLK@O#XIC3lph>M^Wg;~nAhaJ|F50vFh=+-WCD&!@8~C@U^>>e-fWb!< zr4L0RELFx0YA%YDks_g~;@AF2v#+eu2~|0U!6>9m>=x%;DB8u2lDdUZc|y6U%u+!g z4-Et6v%-u=%O>Kk>nrcRf~s#4{864w$|U+ag@SyE77u;Bb}!K=np`cz zIVBqI3iLz~KuzLIhVPW)tKPJ59;C{HKSIhEQ<&pz&`zGimnY2c5rgSom`xJc!W^W4 zSC~8hicncK)L0<_zDALTK#{@%yqhblen&7yFQoWe5|tjiEFSuLB}lOu`=zAV3GsR; z&{H8P{<$0IGf1^jq}WrHY(!&R9q5fQ#!Q6|$}v)! zV5{)wi!pSs!cFYkG9E;}SH?U4YJkSZh(w{*3rYEbWD5vwDBnJT0~ZsOKcai zcDKJO!bW65wulQwR+bCz$>L4u`1+odqI!Wo+#4)FrFP+?GFPVXX_c@tf&6)81!o!edeEpsMw za!SiAv9O&<+w}G;ZsCXy8D8J%4nK_v^H~5wK=2(>PmzPC?_oei2#eHEdA)9FE!;WN zXBbfBg)Aa#87wL#VF(?<5hF5ACW!=-3?C#W*3zLFy^@$CXJY36I2LDS>8 zsd}JB6#qK|@dS4GS7;u5IwzLCL(P?+GN2-ej)sbgt4A47(QzduBqc1;-vVx*6Fgfy z==5_H098^ntCTSr(AxG`L0M(xz&{7c#F^dOsliJstULu?(vDeHVa1Rp<=|X{FbbUN z3wxz+?q(%La3?B)%Yek|qY)~s91f#ZWkveLH(6mtek-G_h;(dbqpZl0D%h-}8-~2L z!#ln{C}Yj?DvXrmvh9alHZ!u#_1C%!e0zzYB5i}ch^Ka(+g9*&`PXccNT01Claav~P=XoOc#1 zt^J$$CS5f7?Fr?g9i0~6p{}kyud|<)w%yD1wWlCwE$cF!LT|LnOBr>A&>EX@9|`}j z5yRpYPtUqf5#Q~XZg=e)=Z^1YAlPdki#c$MHu#mT2j4Nl2+fD)84le345$c3NJB++ z;GV^RYA!f%YPgO`<2i6S5);o8i19M0S#&4W6I8e4#SGjNIO14np5els#ej++JsK)1 zt~M~BqT@=sa3*b$9v7hZ*oo`Ni4MpA6tsQ$PMp^!N>6SlAj0+K3GR^Y+#AF<>CVY-Pbhcp7!+U9(L+NEZv!1)A2eF; zrAw#Fa_cQqv(r>r+fE&dZ$WMydV&?^-=0uz-qC64qaLiBv2!aC zUd4c_m|NGe5@ANq#Ei})V4BW_oia;_A6?HQ3P6kwTT*=8mPU#>4bdTo)9l6ip^2fpXEPp-_bf)B- z;B$Zsdrn|^Ov$|9^YE%OFEC_E%?suu?DlA0fICt10t1pV<^^99t>T7qpxs(M%!? zFosL;8#Gi7!*(d@bu0raf{(?-)fo(^=(q|qY~HNt6%4qFv20nhCPfIxbK}iVa#Vi& zd!hNf+SRNYMW3EbGtf?8hYO*3#`NS$22=#m(NIyRCvRauMaPw#p16g-1k632opj_q zhsVDUoZ0KyiRER;*~vYC3}<$NUrc5vAAwh$*@+=hYIgDizm~D&Emm=_)pNu+C}m8;=e`lTjZk~0l zUK>9K&qu!<&%i(NP2%!aak*JsZb|RmD!#oVo<*nmv@LK@tyMePI-Noyxt|R@0Qp1$m@IIsu1`-`TzUH|M#5^m;Zr=u8ltk z|HDx4hL5xM?Ta6Qo9pA>h(3NRE`K3j|B$%+UOxGqxcR8Kd|3Q&>FCdP#rKHE9}$-Y z0Qa@=p}7T zCA_^p{y1EL)jk0qm(9fAQ6Jw`AOER79#9|uDunBsaB0T>mEGCZjPC%F3kDF+Vks{| zAmT3p1~hA232$UIkZ#lOi{C-l;^oA&Bh<2UN#5%uvX zd;rhn;X5*l4yiXMr*=KlkD7 zr$ed5LzJaCHnO(;1pqVcr>Up*$sPGHFF#HW64LdW@&|An9K3En=bV?m{IpY|iu4R3 zs3w;)5XjZ|)STOc@~62AmBE2@pPTU**+XSm)-@f9beU7cr3wgj6sbR2xpEs+(%jly zk!Aj{Pskj(;kd(EwH>XYs85c$Z%u!6+(@lCys=r|y0JM`9j*;U=_^s+nl&J{s#vKm zp{l(oBp1iK?3+=JI%zs3(3nri2$LoOtJhP^wHtx#EXTO8wy!APm`H(!g118ETaEg} zR#6Jk&y(5If1QXh6b3RU7)0x0qMaH(~Nk?Y)EuySScP)V`4 zfk^sw21zf5UaGmOTqATGUQi1BpB3mfS1wlG3WhDYiQxMl13rR=QSg;YCthRm&5#Uz zm&V^zO8U+Q@K*R;?rh1LBcs(L%z9EBTi`y{S~KlKH!9z~sV5uS>0H%Np8X;y&s!gv ziDRHkRsdei+cfOAq)FX#U{8Go2T4akd&v~O5`R!MayMK&9>YEGC||rsFM(BpkBXlQ z2xGYdyw@i9CjPy8CjNNxNQ0Z@Y&HA}#k(&Q4Wv^(utUC_tpKkz|6FwziXfM$}$D+EQ7)A;Yo`Tvcy4V1FOW?6AO54`+o4l&EFu9tT*%cqY4&adN)F-}47W=|^(5hOxO;=+Pb!YS-q?r*5 z2Xkkhpl~V}i#9LPBa*eH#fai#1RE%)T($WmaU*3`5FT4ZPLft!S9Omlv>_#Qgjc1h*w*N1l&F zq`fx+ClO*LEz1o^aTlity6}ih$k?t1pcKvp?0{*Bi}{1N)6lpaWgM^-Hs$9UFFSnq zkD%~#?c>)x4=VBf_(^-&+0{lBM7q|13?!yTG#?J8kQ25nJYo_ zA7YTRmGY@Q^M_yQzKHu#YC0HI48MCtG%ye;dl0F|(+wr3Di5C_n!m-MwUdb?!enw2 zVexh4VlgY=cex=b3!(~^6!9?AT$Tp##;VvQ>2l{?9i~?|2YO~GhO8RYj2the3DZm} zOT8S-WNpXPSbezOn%R|E&CyFt_c6XzjKQb|g^i_Y2_-+9l(4Ho1qmThxhQ(ziW?&W z`Q)z-4e~AGzz_&rttrQS37H}qbuEx*r3!Y)Cb}2nmnG9hA-bpRXf>*q1-BrJ3B^{~U2>oXD76qeK`U}{@y z&RhWd`f|sue|T~nGP%_%E1WX~a+f3Z-bW`#VCU^wIjeVS(`!&Sl)D2L99Z`|aFY_6 zq^HVMqc&0>788-?@#`liYWEJZq_zdw{C6JwpLq{4gJc*#*x}^eY`rByk%qz z)UPBu+1R(UcQlqHqeTu=dKYQZBdUId<`JDr%-_}Mce`s}ySw+m5}GB!72qA)dn=oI zP0nPR;O@liYj>T!YA=#5H(pKNQbqthK@4!3OObTV&BFkcW$lxodBCT=%sl^i3?KZD zpn5q2D#9YOhUyits$^)bHad){5SMe3Z%!^D z7O22vU3Ywb;=C!4DW)i}Kk#Bj6?@ZfFH=P&1ggX~n=R3=C2uH9rFRh_FJ&N$uo}NZ z4TQ>G*D;_Xu$P94$6mKEU@OjE3gq6h*Zw&+FX17V%btYaPF_^ZWHgfrGS@ve~lHxV<0phbCF|bD9vj=#5 z_FD#21U}PH@%U`PX0o>#7w0nta&P%;U)xhpc*tcml)DtU=;#SzwL=()Be2>*&^*IS zTfu;ez-k&Q9;+SAfUP*IDUf^1YT25YW*$xy$Jq?@5Jyw*^;a|;w zkHGK>zEbJLYs?eHkuy(@*9gU)hB5A*D312tXq988LqJE)Fw)7TgRedqUpWCCYMWig zbi7{hk&NkR!?(5$>};otA^IR+dml8e%8FzQK8yA+(65%$S0Fa+W3kCRVQ3tLUO zIIfnlz$p^vIttM!RyD_KWM7t@uOQcjad24@&Dm>0a~>;TWX z6(2>=x1jL?L47;HmAIE%!5=_i;DuJ-icA3Q*;ep-MZ{rZ{TPEp>_&U{YP>D3>@&Oehyx@i7J~XC&y&;$Ejmg z2-KR4Y7^DXWB-r6cL9^Ds1nCBA#VtTHwfqjgy~>1fruhQhyoIjz{pDh15P?KolM`% zi|(F;KtNao5@_W$yk8>n5JW@~71w1I*WLZ8>-)W{E{douiwG!)$p4&Ebsy)}t=oO- zc2C0o&G)7H&aJvtr%s($Rh>Fj@<`!4B!f6v&^ic$qnqXnCsp|QKNJX{=90wKd1h%dx3MvrGOoc6Vr1tKQz zC7deOGngDR^D}w;5)0LkdHup!87)cpQxAB=;$zf5NfmJx_um1Zr#VHF*L1@F>ul^p z^DG|6e3Hd85pQMj#$RpnuHg^MxM)@t(bMC3i2^y=id463Hm?#KITMr#r_ zG&uRo)JI7b&Yb);>_hXM9LIi=lQWTT<>ba+?YzW7u#Dic>dD2q_lO6>!nqDmL@sHc zbDb1KE@`-wkkcjY4yr=1k~00oQf;g7iF2`^~$M{6k4uwuy?O7axT zQHOcjFRWNuhsF>t_Nmi9Fy*Pj?58@{_&d^8M zu`^9;5tAXUO*E5jshG?oOO5O2cn)K>ceQpnBW7EI73X2LDadN!MA(0)VhYhd7b(`A{hrBiU{`<*D4~y#c^v1;W}_&mB+#tT zf;2Ch2GSlJmLWc0+NwRo7Q|92w&0aWfD~qtp4?*#QV1%NOXTg0JQZ%l`B${XdHbMB z>CCY*Ecf@WDE6%`4fj{GoVbfM@cmu^zTV)+{U*B~w^3(1J-T;RdxB=0S}qp+r04av z*0Rd-PswKj=UyCd*-R&oH}+j-bM>n>xi@wS4#QpVWQeLAjxASf%OK8?x86HklUXbX zl{5~_mrR6&Y+@6tf;cc=fa+msSQ-cB>kd!};=pLA8fZsEG&dA~;s92f#ADiVDmXmb zjtbVN5D*ywT-gsyaX=7(NY^l*cb{fJ%-lnjo7a%xqWefX#NDD5^BtxgBV>)joxF z`@Dc04Q~TPgpP(O7JqPez(=5*woM{0!x)n(r?fkmeh0d>c^Uf6AGOu3Ml)L8h?>#H zAhFKn3o6pX%y9N*pVWQ|$%F0=co3gxQcF+mnbaDT(AZZhLI;oIrO**YPsy6#e*#UP zMt28bA%%*63Q<8%tw06E6P}3q{eCn%K7s-cHw=p0Fe;-s#&h!rv%eJsw4j2`fNyQL zhqJ~*z0RTHS>>Vf*`>~T@%8m?k2X1>K%tZ3G93W<>Se`_CZ=p}pA)5ia9rwOzs`O@ueYIYTS&&<$WL`Rlb?*Nq?SIHx-vmz^$OSyOk6LXh3z?uJet3s+|Ze^HPYe0{yne80t0*KON z5R!MqJW8Cb@Bo9YIeC4D1EK{7QEyX7Fcza4=#vK>pc3d44V6^TJn8_IfO#}jNqv%V zvCP&eX}*`=aR57?PSH?gtwcA}D&Hi^X@OR89PFnYuqGdDsaAQ(0V;u3am3a1RpN<< zWYq>`Sp@QKzsGl_9<&S0oF`a6F-s?*t)ce9?xKy z>vF)HK+)_6)jLdF7CAsAP&67UsiHZ?0V;v)(NHB74LgyOt!B)lI;T5;oKMLR47pUy zsYEj^P%)0fyv6}%@?n;$m=8KYB~USrxVp*#Dmku_DyHMWKm_VN?*sXs_eUI{%C8O- z3frp=cD1hR2N*Gx!j`dbf>H`^EQhIuFF0UOpcXz0)jOz#e|3OLpcXV#Qnl~{2dD%* zprJ~t1%4VkTQ8&>(|*zc=zNMn0g+2H{EEn?1)9Neq&o)MYEWyaq?%zH2dD&^!4X$` zI6x)milk4p0d+g@#J1DV94xCEy7SRf{!6#R2F|t|^9zY+9fx97nqDfHe6?OEtxf z4p0d+g(I%+aezvWtE8rwg5EBHKvd?idc~yM!w#_J*Aohn?bQ=IrTh5=7%^4E%)3>qq_VtC2{Dgg^=W<)85E?3}V%Wz4DuH5f#MPS}pptWin_@W30k-^#K_RlGiovZiO90`Ks9`6(*LhHo?9 zNl=Y8mwodZ=q~Fu(CTits=ohOd4YxjH!^R5u4OPtGLTWd)4T;bvt{EF=<~3(_?4$y zsml|!-zqaq&d-3%q8M^r1-%~Hlf~rVl*&%3UJ8{(CshNde_B;b+oBW1R=^YFZ9!J7LrKz6g$u4hhzT_6P+k#*VA~(fv zJ!Y~Yp22Yb`PSk*3Munhte8T|L}D9fFYUYzdC@T31??4-96Wj5s0y8TGQ@qtC_5Mf zO3~^(Pf>1p7=l8Tt6pERS_GP%$8moEnS}n3x$c zFXx%0&ans2n-!sq_cNZsdi&dqb{%*%3W)gx^;S|vTv>=NME*VYAr|t7s|+ngqG$&3 zaY%;I%Nzz8xwH$B8-LZ=Eb+3z$*R||>l&Zei$WHCLp(Sdi&2#8f2S&%zZ?08*j8>v zh-*CcRUTgDtsQ{N9MrX(_$Tps25YnJU?wqH4#TeJ+gVORw;DAOqwfwCTNxcQ^D{c% zLM6gX*(rTXMq3U&jF@{N^-xkpoVop1fOgXCzO-n!2VozYXYM%elgyoodMk4`{%U?Q zpmjD8Ga}5YJr|4bDjuTTEdCk^WIxziu88=4fKYBx@R&JKe1AbkTN0+#6cO?LdDKHm z70!HrA@-qpzK`QR$@iJ4xAJ}CuUZwz9$UI*$|MNn1pjO_l1mtr#N(D*7#tn$xuj_O z@-W1iEY?b18BBTe{tB;HDd9~{Rk+|hL+Qu1ZH#6FD=wZb8|Breoslu7@zlD8hp7GaC35_^Sg0g)gFG zMvGaEQqY&b1-X6qlro|`qaR!^Su*i(jSq?+* zl+|{olTfk2>XV>it8I^&`B^=2JWJ6j1=rxN!n|EoN~&;X_T8`#%`b*9yCA0J-=LJ9WJED7 zV~nKsm`4~&flh4>GI?TJ@$2Z4I1sd0f1_`eU_s1$TWKZ8cUdFO6dhw*{7g@VU@+0NLgij zGDNn?D&vhPt1JddE3C4A#(t1h_GNq`tBjsrQ&!nq!nmgy*JimasD<@T*n(QrqJ2Tl zD5JI?ZBbr-%4n6Za9Wml@|bHsG@ILO7Sv*xv#P{=Hrvx??^|iJ{SK;ku-RUAfJ&fv zG*nWXZRU_&8(9c5)mfZvL1kWw)f$^kb=S~iZZ=yAyZFDw;j$8FJkDt-B&4QDrvvT< z6tOo{?_jpQ#Q`dT*`}eA;_3(osN}dJvn@Wh%yL7}+ibZtq(p<_zXNpIa?6dati=R2 znQuivL&AKEslC94TLGmE8!pCF%7*(M6N+uJ;dmp;hKoVc3LCD1q(L@Z6`#n4qo>!D z4R;XpBx$f_#unJ@SD-4BuPat_JMB1i)lo{Dp^)xP-pde&jBSqE-COE7#uK;rw!v&} z(_edRk+(s47Adsy9ugyu;}i0fJ&f~G*sCZU0QtTFFL@LZym0Q_|Q$Q z#HlVDI?m0iOJN)TMnsL3OhsXYLy00aWq#r?JOZ-$0aWi`_C4tUmB8%NP)Tw1f&)}? zT#?x)8hmCKV&81)V4`T*Xy-xzs^xZ}UA>ZJxc#tU88Rgr*oHemIm0%Lv8J*OFJfqI zlWoWwQMO?Wl2+J;Z-m||+i)LzBHNIjUQ@PVH;)b|Tjc9%U`uxK%G+rnzAnBKn`kx^ z=}99o8OM;>iOEbR8y4e`Pn@aPZ8lfGW;5BRO(NT>hI6{ponYdimB!+6P`!h(*y{k5 zK$B^xvW>-*Gpa)lVCAzF6%bj`e48>ARfi3==VmIVu#JB#V#ZFR`P}I)b3nU*8ZLqA z9c;iG9H0`|fEp^P4S2T$RB~L|-02W#n*g6E>NDDT3joz}<1SM(l706t&}?GmFRAHL zjq>>aav!`y9q=w7hl8Pd2a9g015^Um(NIY(y3-t>lH-ajy0j}C5b8FYbPegxpz|kz zI$Lhi+4UjWb87(+344xdy}+0|3(6VBT#TKRG50&Br`lx9@kW#}7lWh~#@q%Z4>IO9 z;u9Hj^wb_>&Y*-0iKhqQ;qdS+58bNJ5d{kDu%kl-ftpG|D91~wEm+MZHrI8op5H?~3n8V@#HYVXcmgRr(;>Ayu(%he?yp9WVIj z!0*yY{(AZu(}Vc|0LDKTUiJ9rQTo&rcyR$d&b?q9zxp7(y$p)=_!rUh#gtw`=>|$S zLh2ts8oYLg3x>_dWRcBS%B>H>hZXe=qzEUA+%}j+@izzW^_L z{O7QZ=P~&N7QY{p7b)jY`0~$~d=fvLG4T71{sWl(DNH5<+#CE?F?$j``VYd(js9QY z?~VSav3!UBGX3!k7Wo4v&(hz2gmi=dS9~7$WDkhF&p_!O{~<_$)EC_rglI^;?~?tzGbgE8qWLNX7N+xsE8 z3lj{k?Nc~zJaFjKDOq%F_vusyx=Q)vVTGGxKJ5?VN{Ua*f2e?c)Z1hJlWG`#r+%J- zA3*2R>gO5t^Q`)LPW`-~e*O$UKqoKa&m{jP`0-zcqNqd(&Pd}<5$_^=F%rrA;z4;h}6(PlD zy$OZC?rc}3TGLboV!ZY7ByK($&Z6$2bj%@MD!#|-yQ}>9>Dg%~4^vPPZez5*6N|tt zs$MurlSe@Xr-s13sqjJ^j6G5_x^xApYdo19YCiVG+jSd-zLDXTbE9>LWEh8q%NFfjE1gyA_ByHmor~vri~38|zTRqiRd02)*jMWI!XjSh z;>EzuDs;RKXs_)l#w$}t?Ytrm$}l^lG8^LwW=;sJ)n-i9AsHv(I!svG5JEg)^3iqO zC<$s6j8_XGsxyfqP%XWR2Ewu+@v z2f?@&{I!V+cMK}jSWg zA`O*vsc3}*R04sgp-PVB?9?&0hl`}8ro=~V$ZHPWNHdt4KW4Lcx*X#j%h-jl@0eP_ zcr4CMk2c?;7&oItdKTd(r{Uy!0H5pg*}Nec*M!1kF+pW8_>90L2w1k@CvU%+yx)F7 zrs8LO!3OpQhk+H`e|3!lJxQO_lr6(y3tlq#?skArAZrwSEgdJf$}HDPHCBqPzE zy~@(B>gkDIiCR!qruBGzYNfQY+&}IwgprA^>%sY+W~b}J)x8wxLkq${(_dlg6ioNw zq9&~5K1eKf!~>9JWATA=f~%zvMs>B+_wfn;46c^KXAN)^IVWasD5KX7OTk0p+4a>weDcp^mFhSXNJg3Ls?HxW>Hro>-Ya#8*6I3I9*XJEB zPKj#8>guXDR>kM#x~t1$VSmYlIY3+$r{oz3yp6pUp2jWqnIRZlk4@Lm@v7%!R4pN8 zjqn2i7=>Si8L&$I@95%&>6S0$80{wmg>iGBK56olWGiKKEv{?jR(hnB1pRpCwhqm89r8 zts?dz7L%K+N-asEDOY?nk}c#ofdwa0~C5S(Uj;P+IOfLOdcG zb~%sX~v>=B}A)H6!H4i3Po00!F*f83gX525XDI|v$>>w zF=M&HayTkoB>A_`iM zirmS{j)Korz6a`G0egZmwQb#_&#)Qm)8YD^O1V@WKLdOKXn$^hbt7M? zFgNL*txe`&{|%=C10(&gPqz=BR3*xF=?YW#>oPmo{C?dp^_(JTs{l6(!SzG6^2l)Y z(4LXu(ma@(R92O0!C%#}l`G3>cW4EuVycrY<8KMo!wf6A ztln`bhY$W{Q0?IWm0(d_Lv_k7Oh(tIprqk|saFiPH#xv|-7%A3X*P8~XZz~d=;%nL z)>|DaR%&OCjnqKkZ`5|!5Zp)J51Fn;CAs0bRa^`QcqsTuGMlc81tk=T zg>M8@Wg8e8XpF#(N@DH@aRreER!m0&krLnYl!zs3P7!EU;SDk(A8dH&=sOJo|;Y$)Z3 z`rQsdr^?!yu=CbGGE^)NkNcS+DjOeB$3>agPB`t18A~&F5b0QqH;Ec`9PKYVAWlBo zQtA6G2dD(n*AZ9$jZ_!_UeS4)wE7c!_fTF^RPhdn|fgiei39V zt)N~poiL@^Rjd?Jdg$AmD0td5U zUg!XNKF!cDcyUvTp-a(^bflIzbXPD^8Y+XT*9QZn*sWtdpRAqi0F{8M9dWh70V+AJ ztQ%U&mZ1qHqu5agu!I!rp9Hf_+I>zzm z$YWyVn+_-yFzmlW^$zyV&m5oY0Kca*g}4 zLl4pjJno{2Z@o@LX6a0c)00S?`j4}z4L-|hgFfSGLs+rT6~&H<|S<7$}$RB~Kpvr)>1O4$J{ zAs@BPBv$lcGb-d7R!aUCI^a$)q*|9rP2wvZpc0tGj(Yz#2dLz@ax;nVcYrOwNvsfQ zquw+glbghEXy9=XXnu30Z#MffD5sQDB9Ga^Uvt2vfK$H$)jQb2-*39;hCY^O)#pBj9_!=?|BEv(C)d$ z4p0e*+7VZ8bbv~Zt86>RoGvVMfGQ`!;*=%#bU_V*O-aZFrPkq|FDvS#re4(C8SP1){;QxT<)Mp(Zo*xg)1U)Z|WiaI5!@%HYP;F*;2J)j=8FymE z6e}a5YBUAf87qTPGMunKUY!$#Q}h(XrW#Un!B0lTUkRa)8YKEA&T|x0;U5Wf2g-?#h<`!#erzT?To+Qk5xwXQ z`ZyWJR5%L4^$+)ZwaQp+pz)xGN6y%Qhi@6i{wD+H4&99g`?spQ*1^X7?7`k4wbu;# ztV(i?_Y(xY0|MN~`v`T0%PZjVZVH66WUvU~sYc+qH5?1a02yls;PiS)={Uvu-av6p z$x~mJvIIf%$HsPCYabW~ghUjvEmRz^zY!h>Gp*!cT{cRF$KeO6l&>*evBjunzl^pV zdKd-6>7*V?s)#R4iGtzG!#>1<;h>%7hjHVK6IXHECxhW+qTb5CjlWvxK)-C9vYN=n z-CK*tNh8#qyAQxX#{^A_Mv%})?<(mf<M!Tc>AS+gVIGp|Bi$2H-H`nh(YD$eXl-I2-bR^8F~tKBojB4hom z%5rImWnvP^ttEQcF^8DC2%Y4W(m06%`*-l&!bBcJ_ODt? zWRXVs1tHs_Q806&HOh+_ZA#REp;2C-o=U24)+m3$J~XdU^caXW%AB+8!z1aZfhrA9 z(;7t`31P&Xa!SN&7r1*s#S^4c_QF22e`Md*E>uZJmU$77UNIfXj&2vQM^4 zZD=bjZx^a8BBUWeLv03#NG55#Ah1@oVl`eGf7RKndSebhfm70y=6r?3yr>o$$~gw;~t0*)5*r2~4y zsNrkv!j^`q`JqLxGe*Rwdiznkfc^f&4ed{yhBj4rXY!O)csKrPZu8QK(Nb2;xy1KX z;^E0Hz7L7~aJ>SMCQ0p{v7r^P_W(Bt27zG1{q~h*2tBJd;WK1*+=-XbdOU;SbnA6? zxhWAv8X=Lio&^Nvd#`*85-|nwQpb%qQ)!OvGDR zy75$293n8zh! zVwS@Y`M%atdBnxv^OHA$ z%w8UYDRCW$U7&w6qX~(m(##Rv36cpr;VF3!S=JX0Oh!(Ya0q>)6b*?IwVPPF*!> zUBlnJPMr!6J5gOkxRYJ0hzJ+QttEu(z=6>8X^SM(O(~T}J8Ym}*h-4!o#2 zy1a^jr@Lp6r@}J<{uOPxQs}`cPvhPd#lF?0;r?o)t96Ps(1I(#Hy>`-QFr`y zDaBar(i_vkEj(RD-R-<*XV>6}g4wE`!4&-7#2xqBTFa{GMoK;tJ@1i=o;;Ve3QFqvg(b6Dz;`I*wl@mwyFqjT+cR4_n zZxjfI+|f`RdEpUOl`119)gSbyRByiObYp?*Nrx05w!nE}!QBl^j=ukhC#o zRxEZQHUVMNj)|g7qn%@cZd-rkxt=vkpp($Y05W1Hp;Kl6`b@OH6iVtTTyzLJ#%^jF z+QZ}r(68+fw0{#!_s)f@PH%x<;KGcnQFW`)T$eYZ=DIOR>~mdp7-?oWr?XFYmm!hR zboX?8qUkO@wP(6((1QdWe;Y9f+K=wM&zkzz;K+J?YTqE-UTsGO7E-7vhp3>ZR-oeB z2s>lJHqHElS^5zp!z;_HyaII^4k3D}H|D}*fA7=`UQOx*pSlz+aPZDGf06EA^aNi4 zTo_s5m*5uNHE=C1&Lj`@I){p9m50h_mpbRg*WkN7+T4Qzh0bDM-&m#Cw+>2lR!V)v z!9je22m*a{Auj&0@_^2{^SsD2BDeM zNY}Ozld8H)Gb*!9&jqRuVYLdl)JsP*EU5ELSnKu8V}(VLee6=;V-t&6JEij{w~lOu z*zn(GVxiH3O2I!BmoZO+Bz?uyK>AWFPm7%?NcV3=5JI!HH__GEOcd}QCh}Ov?sw_f zY6Nt!`HsC`(6Qvj&QJaSNU8u=_MQ>LV{&4UTw3`k zRG&6o>E_UNbn`j(cO0M+Ojk5iQW^dW2dD%xTtk%{QRWJry<%Z5u|4Yma=yiihD&Uh z@LN-Rv>ksUT*R#;;nPGjHl-*C1voR+O#DC$bFzWg@30@pS3H(FK$Tw|C=|9=9qgbYHu4>V02!t}Xg+vjzXQqy zthgMichCbB2dD&kKtm-J5a&BUB_MhYRZYt88LTx#N7916V?8b-Clb;o7Mh1)D~&$xpl3 zl#>3K1KtF~sRfkOqPfrkDuG4gD9o>PfJ%<5q(!5Movq%b(En`?u;sUB6e4ZZo5o-A zJ-B^YDBEr?j9?3KxtcO>5@Bc=CKGwgMEtx1N(Bu25LEAA=X}ipDuGteP)Wte_Z^@T zu!e>zY3IyI(n7P=PD(J>-#GLjjlf%ZYOSI6c-%rm4Nk26#i6eP8q!c@>u_^zdd3Ij zwsO7^$iFsi8-UOSRxd~WNSSy)2dD&0Y{OLpGx%)|P_-XdOB|q*<0_kl zQp|vp9l#RuP+QDkMH@ClLatS%q(AI{H^Fdf{UtSn*E>KZFoPX+{iP02$#Lao24C+0 zTYfWGA<{;@Y5XNOgLh|CP`2FrWwA=ieb8UUMS zkPA#H)gR=5Gr>q|(ImBNj&y)ZVAnW`@sk{&lH)3A*K~x+TTd1D=Tu*GfGWR5qflt0 z+cd6fXwkS;X1S)l@qxZgbxphf030P~a5H-f^x^4815N9ozE*`PfJ=huT6Tm{UCVws zk{AAY@wopGMz+IeBj!NttfV?dbPiS!9^VB^&K7f^U|dJsb$GE_s&;$bqwBiqKyml- z^VGT0J~}5}?K+O4psLfTVJy*tVvp(iYtAI&8BCHiit3%hmiMBm**wA4|dSgX3B%Zo-Vwb@Q`g1?Z9b0zjw+=4NQm?kt(cxSUp*C3i1W7Tq!# zL@gkNn7D>=ZLu;uzR}y~RpfhTCa)0wY4z19OgeE%* zu1ARCYGUvFe?*E<=Z;mKSK^B}FC{|-cPdtZxB_&$s|usAa-`zvGs-$_aCl>a;*_Sp zVn)_u3>Y3J!a}d9C*YIa-kb;37=W*XAe?)_IEG5O5QZ$eTK(IWjDr6Io>QN7e6do5 zsFkHkB2INYgJJ&1t;Kv4J@*G#F_B&*#&Pof1P3|l<><`x?ic)~@0?#e44wB1N-mxZ zF@))sfRiD_H3k&MaMyqv2z5O#q+tjPQX7EFn)*OHgp^$HpXWfP|P&VZ>< zu~3=B?zRiZ{Hr~#s2hJZw|Vkq!;@9B zVeK^zLKH=4{vRSnhY^l$AOD@A=cf7kov{P4@%ulPVvPFQh_^DjRzWd%5X+vf_)#Bc za5oDT&rB?q!_fPV)>41O>x+o`ExeAI`FTBYU{n#Ox+#S9@jV%>IgEeA;U`ibB~>s3 zaS!-B%^akt@rhf>Pr*Jk&*5?GCpkP5`Bn~Z{MCFJ8M7hEsy!E%A1odsEiK)-{0Mcb z#4D^A85vaf`wSLWA%B;LA(B4ax#+DOD8Ypl>c*eJ;)>E>)f*_TDd`ASrL3!enm>e6 zN0JFGW3EsoG^-I3vGxYSsfD#M)7EP9YMdX>Afik;g>idETMj*p82eW0p`;3D#=Zml z&^%+uai3)DOw?N$yYW{Gm&oatad%b|xw!ix@i^t??gR0FK<@{Az#9=FG%*Njx2&S+D@k9wRV zmi|5UR8oaAOFx5sXr86@7$jyg{u9^1az}iftYaCsxu^bveRw4OG*G1hvhFY?Ag$A` zBm>plE8VeOz-|W>yU((Gi4C?h_96GU9&~+jTodkX^V@~0II|~pM<%aZbw}f`cFz=x zjP=!3)T>rTxaLg+O~>slw(U{kfU zY8@?4W6AmbX!ELy`TmB~)zPqryxp zp*5}Dnwc-XF{34i{zdcPJ*j_^Dx9sBeX$SCTP+&%39F^P1)NmmO9%9ZvD~6|VN1i* z{Lsc6ij@s)s<-3X1?({sH?;3|8roFhoyk*H;obPFxy?%_MoU>W=MvvD#KU6|-wsej z*Ovdrb=xz#m=;|koZNW61?~vSYv;SJP(&Bga=#P4z2RSRbh;CU;1Zwu^wKamS(K{d zXMiWmB8ae3*K5D&_c*XC54`Zk9=MpL(8LE_xMrMsJ4E?iaUh2F(n zcIwToO5ZCNWO;5^y~}K_e&yzL_lHJmcq>NoE|}TDN;q9Y6X-PgeX3tF5fM7T+7!Fs z*uxh{PKm?7eBA*mfdjaP%BqP;Q<&?{KXHI6)z35Ln&W3)r%Etn9ecPOWM3UzQdR05e`rZm`6h;JsNd_ z15|Qckx)6+G|uGu-Ep2B8I&dV<)AouV(0MlfA|pQTAF4l2+Jj3z0I(UVAe>k-bJw zuPJ-&;P75kubGuzX0*+3!piFk>u=}!@XmaFIBL_nNF2Mjl{s|8-ZLR^ERONS8FELP z&DF2ntd@&oIJPRweAZmAiGx;JbIYK52WxJ~0V;t)(ojjQxpN$#+8nGo)m=loxmj~5 zOyj=~5o0CL_`Rl~sF0c{H#p#4KoQqK^$zCT-40L*%sCB}6jz^hfJ%-lGUwuB%S1VX zZWHAbMTtf`M*vW5u;=WGk&L?UL92#Q7gK?OW%qq3XIOSI)>4+;kqohIvg~*x%Cd_= z(hAG&*VqrT?4H0Uvh3*THD%cy!p>_qVX86PZb1_tbj4a|r**e$!nzx)jgHlNSHrpU zXb#?+Z~|b5#+il3a+qNF8>3&ojA+?Y%d=Sb7qhwg^_!QC7ss?!iSm=|@>RQSFSg5L z3)+2wrkV}aJJ@+|aDYmnsWepCc3#>&(eoYP%4g{{aZhwp`>U$UhURm#^-`F}-wIJ< zB~!tL!p^4PQis725Y16gy@M%ungdh<2GdYUO~F+TP|0ycrl4TxnL@yxwb@c^NXG`h zyZ~yW4VGe-k|kU5B0z>=D>7voSc?}!NyA!DycUUs zti|i_iL6C>dQDl2hbGQ^HevoTd+~rKKImd?w9{hTja!Vo-B7wGZN|irQ)V?L@|c+T z6ps7Etqp#{Y_5LeW@R@f@NHGe+lM}-(aGY-q&Iwxx`RBm-QLm7Lkc`*;-!`Ag^xn@ z4tC^s9H0`YISo~|9hq|c^cN0be_%@1b-jpeC8-xaTAMNPSUHKqL4bi+9#@`DNO zT~OAT(8kzGO=v&POpG>7Xn7-QLK}mm6%*Qrkx*zt`#F4~2`xRnrY5v+4FXvHwC|l1sQHtI({u=cTH{ zhJtf5<5HN$|2bmDN~2Sk6bGwebbR^ou{}13rGmuIc2}t0!H#>A15^S#PD3TN;|_L! zO29fADzfABure0Ge47BDDEc$n`B$LMHW+diEl3vJDS!vVf(!IuV7i?Og$&az#!AX` z`*$XF+GM)%MwICmgQOLv+W?XVnQmo#BGZkYUQ?#qp^3OnO&Da%f@^9og0<03LoP8F z;qBV@B2vq#h3`bzDJC5L0mpsfth@8f<~Fmvhy)(33N-CbRjH+Sjfss`T6$MP^$wQa z9S%?l)Rl%R+tM@7pFQXRRX#(HV90IfIS#_VICNJ&2nNA6SY-a515^V0$`M!p?EsY= zR}Bc(xP$f?2dHuqY)kfP)F2oJo7==BMc(^YAY!a?HM-BB9Xqf+%#mW#B^wbJee0v12%c6ZGQBm;!7s}Lk zr>WI^bzfU`epTK0G9SYEjSZH@OFl!GF5RU|cj?leE?xBRfD1Fh1K>{jQ3xHlNm1}O z5h6Y<@&6m&k=~dr3k+PJRvj6u^ucNuRk3b|Nt5ut&U4^*=_G$W{fy}W{Qv;tp9`;g z{PQS%Y6`r#03LP7zz@>f%b-|~e-S-jOz9<*ZlH7{r2g@LKeu&Z! zQ+hdOO!i-aMwU+XufV^i`d3ocRg_*0=?4EL$RGHzKMsHR*I;rjCf8wdefaJMe7X^n zn=rWRL5l-@z<$0)s%(z_s4 z2)vvAz6bw)11g|3P@U(f;cjD87ST3KLja|+Qaa3?zsO`_49M}^Go&fxcV7E_8Nqw>i;@=v$5*m z0z-~ugLyu246=m(Rlq}O zw?D?Uv8FhadLD8nAo#C{g^p23o;eee=P^0bPHG$td`Bo>Sk2FI26CJMy$_WUi$4V$7<#1L=~$yak__IJX^(Nt#J=@aWD)z*;T35G);jZZ+-OIn~#R* zwYw@z9^x4|9ryO~rS5TLC!)3=t7a+{;j>gL_ z_(N@vx& zy-w<9=i+(ZqW)5~ueVxW)mt4c_LaK5u!z^Wcrmc2x*)8eRyDQ7#CYHbCaFeaC7mJt zS4L$vh7!z>5LT;In5rQ%0uz15gtdNl%hd)lFNAVM?uKB|!>jOe?o>huR0gp3v5AA0 z+nFB(1FOb0tpFS3Kbn0F2iY<%1^-k4!#@p@Qgf(Xisi3E8JL1v|5*efT*By0ba4yh zL?*)N4eP|DOU2SU&)Lz&oj5bmi7pwd2mLMhYZDc18&m{XQ34_=dv2oaG*vbzpa>#( z$?&(69Dn{sXswt!{95O&hXQKQw}a||c#ZYZ2Cf@#bbv~*)T5!23bKU`PzeN?hAKIh zGmY`K--t`gM6nOpP`}dw{4~R+d8hZ?Oc@n*CSymSzOC`$cr5sJk0!Gy@bx>0%q&7n zPOr&XJD-p9`L>}<)`Y~rH9=)C@{B;O2kcq!hmT=KaDDQA`vsYbcku-q%(BB^o(-*J z^6d~5P<&fbpeJc@nzBbYY{5$g-&zOw1ad{e*V1uvtIWR+uBX_j334wl*yU^!5q%>c?GLkoW2 zE--kLN7s=co}abKsz>Py0Gk?=2cbRbN@JWxnZkJ#DyvV2?Ap4~5>U2+gp^6?tkJ=8 zU%58EkqW@nX?T32zwfaC2a!`JJ`st1DWlg6%d3!PLK}c{n}ldJiXtBGQz)|13g+7yRuC`F zhbT^(naw3_h#AY3I1H_Q1yCS483NDE=!XLWBP${k;#Aur>x*0*vz*4#p*Km6aeyMa zj&imu6w!5*sJxx5=;%7im#7K{TtwGVatn#`oPWj9>E?pqKAn{7C}Hbq2*Nm)3UiZz z$8lFeo96=~{jfK-hp`HW`LLi(6{PNwWp=3fJ+jeQJB86oslVKZCQbEF3_&o@Q)?c< zU%;V#AQOk-e=lx@1@DJ@`%8W0Avm96?JD45oYL4$7Ql>rv6iXy{T*P-PhJY- z_LA35={heUBa_f@^O!5ipsXUflzc{f?{Yw;K(-y}Mtr9@KqVkP4V4@5l^kHpPkajG z_7dMV3BxL&B$Mi9MJ0nmirnHEjLyz;z?y*0&UT}-x&u@KI@3_O(bQ%MMTpNKHfKMrz-3fGt0%DUjPsYSEII zCLR};jNdw-M=*51Rs@waAp`FVM)koO@1*=El!nra@a@EB6Y#w5%bqnd?w*BU`wxb4aF6$`_oNa@*;J0&!_b>(qUq!Xe zjME$&_0C1K!@C$OrXAjhX4}2P`-V8l!XDA_YV{NLfoN?rq}qa?+|FeyQ%oJO97e0B zw-$BLrq8KRaj>zQwn2#bHYQOFImhTZgFLGOLl!paK0%v;?;*$?=qB3YI8k-J>0SNT z>t!I^6FjOiGByl@T^XwlG#v79rHBo8_?98;q6~~X^fnsm3si5d`+Jz5J=EK$b(#U6 zRY$JTK97KR=)e1D7mc+TuYdvh$dhBqU~v`h^OlEU&jWXQ*AA3GomKE%>^nsn-ip%7 zkxGe`^E;z^CLq>q^$EW(n-l@uT$9YIvU zLDpUMiuLfZjJ6zl7`cD^GxbnXg|qv|zhEC??jLBa`Jwlt;rZ~WDf zts!(abXl$D5)yZdhtBX5k*b74qNOvh0P$!@IP{DStpHH~r^SMu&CuLkSspG9deuG< z2N~=iUw31S5YJ#ZeHlrob;fMO@P8(pDphYVJZ9QjZQk>X?tNh0G;e~K^I>~S5?<8< z9QBhhUa6?*AAtkml5!=Iyl|_Mv%pk7GW`?wN?UvU}sNI-4b3MtoWI z=3?mQiTE7G*Inz!FYWXSwXxB`l2Z8PL2zcJ>8o1r^zees3?61HnvA+x4nyQot)=pa zi;o~Gw{S6L=I3I5&82E8?SjVBGg@;P>4=k0qdrQih%0UpC%+&2&^#x{v7hAROypZR zx$##!FR>6TBe<-3a&hiE#Dif`#STzJ4ruRol^>A<8m=wmbU-_Vst_!#Oh2(y8>eyhdI?r2MhUqg( zQm;A+USKQBuz<1xN=G;A#zZW!!y!4Uh(?Nc%6d1 za8o-OFlq<7@)hC^dF#EyHCe?%LP;aFyvIaE$QCvsDu~o_0#py%NYY3xeGX6wBDH9! ztSiq-8zQ2)VR)tkSZNZDX~WEGM;l-Mibn%uu~lfdU)xbpd==ecgE$&o{(6x^f91rH zJq%_9{HqWD6)pL{0J3~Qu7^W@IF7`&}T7`NDNuyAjo&aP!B0Kfqy*0Z`H(e zmIWi-bqJqd(aymDRBPP^>$cedc@iE3!=XJ1Q>^?TUjN&ml(tGDN5U9;DSxy> z7(#(!ZH|P3Bec5JXzt1zQFGTAB-UAbK}B$w8P3)0)7PVsL@8eXyYPvouk_TO>8n8l zjoqapbnu8<3LQ~Al&q=zJHhQUh~H$L$zvgfiuZ=7pr=-#fWv0W7GnG2lJh?cpr(P_J{SJX{_spIz#l7hgZ`_Gl9m z3KTj4&dzyr=XsISLN|CY)gbS{d2zQTbw0b>Lw6_0q`Na?XRniU)%FB89zjB~EEb4o znrkyEv(0}6+5};>N|e;quM87qwFzte{7tuPp{Y7DkXj$&xNi2i(dtB=5XUJ9_Af&a zLL0CbB1Fc|NymZ^v8{sGduB4+=+dFp(5OEMNxGCZDCYfGo|ZZrcPM$ne{`b7N3b_x z9{1lZ1C;2iHV@fJ&e>G*nWpaf$;} z0v6FwCACJv?J!$!r1>M39l*|~IW!bmtF;YvM~NuMCJ*H#C>`tz9k3=JY^my`+Z>>h<0_#$>NA4rejpK*eH^`J>f(L}81t(Oh0yk@i|tbuI|7uLN+N#1BCthi zjX0jcF!wbF%nA7OD^R_Iiuk?*R00*Dp^{3C#~q*&aDs*^sUq0?EuMQLn+p7-V5Idclw#*&i#Z(O`XKtB>NXci4;sghr3KYe0P`!hq=yiZfpeQs{ zQbjT30F{6%G*n4N!A~A%Yl@U3$sce4I-jagK;+UD=MdSnKvy`9^bHP3laI7iSKRFY zl|WZG;_9;wP|0zX)D=@{`!A4-N?+)AOujwl09}5ap-|aUo#9rQC7e~`t(i>`&dR?T z*47$Cu}XnF+>|p=v=ZuTg*!@c!x+M+LRdYEWQBhQH;m!4;bRipzEfLb16V=0dkl)v z=3`>sFxF+gVGL{sxDL3guNG4qqv2Vw%nQc;l))Uy<2vIsn!hLHU%r?mXLbI@c5qA;xUTiZ~{~eXruK=BNhv0+T?gr!`N@(niV08_cNZs zdh2JjYtbKBJQ~GwSVg^+R1sGVqI+FEU1An-L2BH)yzkI!YaCE;LACXo<$hMHJ}iXjdqr zP#!o*ahgO&Hw_->3PlvkgHOBpYK(tHTf$cy3~L_z&LKO0X}Zp%U*$UhV)^yZ0k; zW*t9<9$UpC=B9)%<{-Og^ z0@l$`Nm=LL9iWoqN*P^hACs9y2(`^lo+$b=+BpS)YQ^xgNMfU~AynhR2wXq%@^NulYGXPe3VnTWH^^VEWPhQY=xJ1?VP7cGMitnaCf7Zn){d?RfmBVoQaZ_I5S z8FTR!chi1rZb5##YwTQZu^RGNXVjRq4e~-^uN=eatSm(k|N*s&}x< z-s}LCK)GnBvh6bSsN!J`P~|hr8Xi?_$|_UcHMCX6zCngnmck>xhlsHf=v0bc5Nt}x zt+HMRv;`Cv8DdJw1-93XkZssrG1gIvcuR)DHrZah5oLSDAZdl|buadVY_I$9iEJ-= zdQI702ZX^2nqOMmC(8f}>ucwd+V+tZ7PV(xN{aw$aj+AQ@^)0R_xZi>bQ6T00iX7}i>hos_lqB_?>LV|>XLTZsb z=74(vO*{(KJ6Lbuaezu-y=kbVxcY?yRB~LA^%jjR6X6KBO@vPr6&mdf0Z=Wr-E8WR zthZO7J!ZWzl^57=e}htn{T5>_*6gvpv5-Q=?jb7ZsTHU&16n6hQSkq1 zBhcqAWPQ$8&dSyK5Wji;&`AH-UFJV1{|>kW3vMmAlYSH;2X0c7 zOV?#_YtDZVT2|U(ve5ZphewR-2*VE6K9>@;>F#fsl zs>eT%(x;}tiwodU8>kR*9>P4%y&tg9%!8qy8^OOQYCV}Bg}@UOw-T1>9PBlI&lhV5& zRS3MB{=NtQe&lFK{st9o@b87cp{w`7&vA1){TJY6kN+ID@jND1xzYa%{JqitG?wr1U#35v!6JXapV_ZcYN<39u`klMrWbMCnRQ}y$6_47;h^SJui2ia;bNUHv?qc|6_+JGK#O5y15w@FjdHfEV#=?OfNj*hVpIWX0Ym9Hul=v7_OyZ-y zX49+(k89IRaU_ov4~YE+_WnDVJc>c~zlsUo{@~M9CV24Pr=$AlHsq7H8*Wwkw8Mo9 zB0jC7pnCPuHXQSxROtSl`gsa|0BujJpJ&w1v+CzL_49)I`7`_gJ-moNll+(9$A1}; zbKx++iR1pO@CfyE>_|Ubz)z1qMg1|2{s^TE^y!%`;N$aQz*0x_5=%zGuk)Px4tjPz z(q9^^dZTbpT5(n4fM$9TW)Gc)lt$p4gip*H$F}yEHgnJfg)&Qx<$KMF>)i_mMutiY zDr3XLrOJY}BbC()s1rKvAL*+uP-0ZQ=>l4X&UIDbma>1stzzzXZd_GZ?>r97m@e0`M-g;#jwK z*aZB(YZ_gXh$UXy)0*9@)^Mv(EF$`^V*kDdNsGyPCq<2)gPL1H)|umwM%J@{tOFWK zQZ>(WCTbl0=81Zn<7nQ4x75^1!?gru8@Y_Ue`Zo)Yt-3~&5C2>y$5vgilZ&+ta+_f zpAP-4luOm|Gr%go87i#rpoZpUD4^OTA5V(@lXpL`YJ?75o>Vm-TIQ z-68&y6Hr|s8lcR1XSTcp%q79lrXEgz!5W$$n0iUtOt^=o11pZ&10vG%#*Ms`#z~l~;Bp<=#2bg>plfPo}5+q}KhO9o=NQF02!HraC<5)Op zrpk!9s4_BVs4~(3SeZ}Ek38Myg&_9^vP>!#Gi_zQY_;g+*nZ*SM=x^A2+ zfn*$Bh2ebSGeJJ1=F)C##ipGBqqqUZaDR(tzVkttq6Os&GCjLB+9T4Iz(BcSJ+ zr$WswG0HQ?JIyF>(Offy0~2&MF=qMsI8N;lG3S~U$2vHtZD#o%X=ZsSlgI13r`YFF zcABA{(vwiuBrW8EedZUVAPeC2@LgsU#%8<1ErK{x|3?+6cih1XVaZn z{_m!{yXj5{{J(9we;j4ZU6`DW$y!Wq$K+N>B7+@^ZKNU_DLZDW)5pYK^f74z{MaX^ zM_z8)K*z$42KptfHqZlxZ_ZMW#2?!P<8p6Po9rlNKxzE6MJD@RsU~|D8b0ZEdov#} zM9&G_>DScaZ`HC4!@btnK-kb~%j^CcUr#2r4zvCP5YxV{Y$>qtp(e@Orc2SO>Rmo4LJLrn#*syS`_Z z&8^C$8Qv*<3WY?{;w|`x00vrZcxRIhU^NLwU8xDf@J6n+THnp6mP`|z6bz@T*x);x z;3Ne8Zi2g;;Do^c+a~xiD0hy+WH(H9!Q^mE-VRA*f@86bRAeJ%$4qegm>7*dCjEdP z`^5gp)lHk=SlH17zp`y6II_Ob4p$42^E1CEwe3~ z{fOC}=OHV^&;0t|dk}S$*8`tUVjrosCtw*5~^+)aQ1ko`$FvhR;+R zRDpTDfS8Xkn6*_EPJjt)1v_yc*rUdsD<>c39e(7ACwnX4nhI~QIJ{~MywH$BOM_nF z=&@C+U@vS*v9IKvTqzD$;WCz?Ql&cATU#lPj+Xkp73;jBcXa9OV#Pa-zEM8#jI`U+ z1Y?AoO?nM&D~AbKbcxMPSg|_hr2J?2fVaaCT?8j8>kDX53hD|RxJsmfNP)PyZ){Mc z3u{b0DayOVrHJ2rgteWpfr6UL&GYu#Z}r+@WmR=<6kaJAxOL&OMSG)9VYk;w{p?&k z&s)@As`m9(%d2{;;Ez%2_QE1w=i({l{4sa1giVihT0skDEI6&Np)WcxUi26w8zEXUdrPKSL0dNP+Gr&reSwHf8cty<*+?y-PP%BUppY zcjNtnZk!2aV?NgPIY~JXaqikg(P?`5C+KtX3e{vj9YYLWGOSFxQEmH^cQ9IsEU zlvbAe$Nm2S`iyQ##Ho>XY`-3Y|5}AxC`%25Jq+~)lUcYQ6Dzq75{pEA03!^)p@Bs+ zK5$NOwBW zE;5gsyV>*94E{)7wNl^5yxB9OUE^NQ71&n%UeBonC>JRG830+#pj;PvE{FDHl9rPy zyRc~(DwAL6NpwUPdJ=8Xg`Vo@Y;bytu&jnPI8G8>=efBXUW)3G&}8wXbUufHW6~tF_JXzwwUO1O;ofq8bsmNR0vCNaVbzOAz7FkylVkJXx+%=Z%Oo6Xg4+e~L)0l@`6&7kfQ_WP;RfHwb5j<|pk*s}%0R-YLnC@5pt#3@B+ z`VxE3i1srk6@@01g=l?&W&8kCFVm|TGno6RG6O5yhddvNpa4Gw13_E!(m_Eru}Nk! zRDHd@sQOpcyX54n<4_JF{LP^Hi33!Esh5W8lwJ62dkX3Y4w!nyV0+R5w(E|uopY^k zUmY7A9Rc@^>QJ##J9BIV6v#O2gx!s2)rUZSC>uk8Y|ICk=R<=vu4p!9qq!8#7@#AC z=6LC#pr*M*Cd1&Qo8q=jQ#wV$o_}?txvd?b640E6%8llBcYrNF%_)%EOLN;AhF3sH zCdF+PFB=q7^v1IowY|jwcLHT_08|f}Un=2_aDYlcZ5k>!YCFLJw*1tlKyEL!ZOv`^ zfQC#`n;8}i$|yREy=O$`JD^NJWGmf>>?{YU1VpBxawD>f9bn5(WD4Z=64`d7NZaJM<2Pe5=txe?s`4p0dQPDABJa9?zQEkD62klRaeud}a01O#Og z-j1ms1?3e1TFNj&{JsNP1%&u*H$r^e0V)9@YN*@@@edBLX!++MQVnlIr8 zWMmTD%&=fkMv+?VJtMNJ1Ih$MHsVHP7dSvAATkY=8Se@;`^!tZ25^#f!to=+ts@H7|@hS ze>cR6vD4aihYg9H0_Vp@zzh3SV-7Ek6}1klRazE%ET%?iTrc zK`?Y%L-jCUaQE=@9N-fWyn?T#Zl`%niJ>A~(R; zn5fOlYuFYkut4)}fNxu(9Fjb>F6z|=DkEd72H-b1PE#E2_bR2@SY_B799dPaftydM z)|c>Scdv$NocB5~V44SW(%rz(DhS1D#h=?;G4f{IklFcC~gK~ZyVr77; zaDd`lVHG8X*yb5$`iUg{5?m9$Ww^U9V^kbE9;sze$BwtrMyKrheq=MoTPrAarg=T}WNXq-8J&7Uj3hK5 z%VLcFD$+pcInT-1!likxL4Db5uKuyj)nl1qEt*Cp+?MM*TgECF1Jj9jHv1wdXH0!9 z#mJ~glY^-uN1hB{Slb9u|i; zuvYEzjwlWe(qz$FUM&r->>7osBN)hqxyjRxN3@^`K6k5Ru&uxFG&a|-&#{50W_eq4 z;CVx5XEbEd&8e{h^i=Ku08Nb;_Q1)44v*lywv@K&^$0`fCR>-ehJn$P#g#Rx(IoRK zte7U55sTs?gmqnJbS9(KaKWbFk6ChzrJT9UlEJkcdJ#@iYa^bv(E}^TT)Ih^GVGXL zB9EClpK2{4qs5y~K*d>$H<)j;nH5{_V#NaMK~_Z)Rcox(e4KjVAR}rp@QPdRQb=f; z5)KZIQX&yRfSpRwgOhAyLwL!RR~;?&;r)GZnv@px;1Fne4Tx_RxXGjp!wOW`jb1Zs z{v=~q98eL_!w(cHtc!V=pG^<*We8#2%BnpVk$jiB<$#$akvKpx64Kcnu24h^LMZs0 z)LFD3bU9TaSdR}E5Sh3N-?9;$bDNz$9MB(0{MlHsMB?8ItM;*-i29M*I09CTODspn?s`IjS)!J(z)$ffv1%aQc-np%$RhWUp!bmWVX{DR~lKu#1$ zQ3Z#HT4?7|a6@!_{$#@21^nRp)iCd0b zZZ=o{=w`bd84ij)hC+SMhT|1TYjat0XUn(I7sgtb`XVTx6u>n7k`3%RCZ@wx5t|Ma ztaYu0>cM3H@VmHv>*(g7!QTw3jSf)V2yJBE!u%m9ploOj)on?ryaZH<&Ee}Dpb`Xt z)KDeIa+?H)2QU_r(VxP3q8jck;5&}hk2}DhwtvhbDousM{ZT}vfpaLc22+euZM;q} z)VG8%V!=#fd}Dnk#H$6XW^53m6kuef`V4rXXB@ErT@*iwHm~kfL?j)qFFABqFkBic zgS6KN1EhwbV?7^)uRA~`AZ(N7j=LVCAD&1w^Yz)*y~$ z3F27B`}?v(f91rHJq)JYnE4U0@=skE+eC817=$o#u;$P+_#o`z&|UE$*ld5XZnagE z#s(StNL8RbP}FS+L3)S-LIwMM2SN1!dQxu&(MFkp8@y!J#=9Kg6O5CBuchPUR+(kL zFU8pQD=3IIr~STd67!!%yL~C03hi10d&{7=ZQbn~K?={gL053G}seHmwu;4rFRf=o1gXcWh7zn1!v?i=(4YcNjImJo|Uk`cc z2uh1nomFqS_5+1&zR-nPhh;x1e*=%7e?v84ihm%3WsSYQEo0zu{W~*+o2!6JGOD-D ziqZtGvBQUO!}!pWbw?L(G^%$Q%BU!X_NAUH);xX6m6M^B?(lTEvFgJTy;; zPn!2O=G#`O6wl2u`pqEEs=$>6X$t!YLGC~_(VoudROg%C_&Ytm@pmL`{Hgfs#;zaH zL6>(@i6na{)PpIz+6~n59;APHc;!ey2`0Hjn}E#lie58>|2|{H9IzFU%5N05tb2o) zpG_(!ig8AIDidq0?^z(^BDP;q-yP7GBsK>qq7B4{T%m}za8OR>+`{%EVi!Dy+SJArhyR+rhNR<{M?7NKpeWfkkE ztu5Vjxz+(H!A63HDtiSxWh3EZ4q&BC=$l`{ZqY`9?y#|j-C!f(^A7!$6G!$i%m_%G zFLQj&0knKW5do5WU&oOve(KO?Iae4&(qJp{w+>Lri9{+v{^S6a99P+-Ywm$f`KVY4 zZWeoBHu(`M9=#Ts*aO?ep}S(zkQl+n*41~zQxho$gMT3skyR7VTNa3>u9HtZtmmX9 z?>_OkBTqbOo)^7-_tGPK-t|6s86v76)`j~!AW=Zc^Pqar&<58Z%4c@TTPYShKqVMj z4V9GZk9B}bjw@OYl8rtyg|TxsQ+T4N*=T1FXuX}gS9R-*L!Dm(oCG^sDN_l(vE{FZ zVtP9yin$YGQ?>Fx%!EHsw{0iOzX^6W&K)oKx4cZM4+>DYV(7eF|+Y ztEbRrK9d{QAQ4R56#7cDxy^S9ZKBSuxDQ*_sWvO<`nrC&j=tIj(E!3b?>gssopcYi zEkB1gzsE#s!}+#ALwyXYchKe!J3uAS<{B!gHvg&vRB~LAHg5q*FjmDL+gR05y%}03 z!(dHePyY^VHZWL?cIuGZP8EMm$0Ts$g@0Ptr|=}{`o{r|P}iG<0$u+rC}!yTSPzx1 z|1fqr6pC%q^}G?K>tm3#Lf1cs{UBZcJU)@Gr>EDHu75k-byhwbt^pl}fOZaw{>@FT zmGfrWspVDJghYE*6~A?QL8af5nM`8Lz9UY@e4od%5Su4d&rGwq`dypr`gjtlfrRsu zi{m?Xt{tiLkCsb)rQYzP&R`}hpL=^ImRhN;cZcd7v~`yQR03_Sp^|FrMGjC2w6%tc zw6$fJ89!n9NH1`HGBl%`22SB2e>ZG4piiTnDUjPv4O~x`R-|>`2W8U*`*PwT2@9Z~b*4D$Wj3K~Jqf#W@Hk`k{ofGl`0Ve*=`M?@PLW zK26T5^H;zg=L)!mc0SIzq>bsQd+R+&ezbo=vVHJ`GZcE)O)*?$EZ zSvu9f0{@!oUrAY4QF=9`8~m3bf8fXdIQ-#XgUPj+T!+c^;kz5~=|)U$!sKR5I;O&h zU-EB(=bnL`d;DAB0nTVWjh*^mOm4#*|09&%PU%M}y@S$^QF#1Cf-{C=bV z0A_y*lgR-02LDyeo&=BngYa^r{}=dsqyK3v-{HSZe>{Ul{(#A|^!Fbj-QfQfp9enK z1N!_kP`bx|2vS%mco=@p9ru5#etxcgeyM&QS3egb%bgEN)&F($W@D9BC2@5U^L)ic zNRVFz48-C*L7|6xX$geVRq1TJ}+!kNHok0r;Kzc?y1D z44+m%�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ΠCe2C!D)Tl23_n%7t*k z=|hqP;d~V9K_1UvVvGnU#hQw69;^8ja$?MLX$p4`#Ozet5?cEo&nxRXV#1xelDk9tF=TL3q(vjSB# zNmX}(e!v1%Jc^pkPEcN5#cp zKu-lKQ+oPw3smN^;yXdHQKf+&F{eyU>*}7O<9`LsY#ccquN@|qS_XM3ELCe`9lBb9 zrxd#C>wlcCJ|&InDbZEA5KdQpNRptdXP{0IT|EPc@WFkt%X<6qa|7}h&`A^cYay2%5K3@D^PWh$#Fe=;6!O-`2*sE9)PnpWy5m_|3^ zH%bqcaxMl?jU$qwc9dA-4$wXdYvg9rp@=&|5``lAdKssPmr7Dji6Y8{aEjnb)eu&?mQQXHk($%X z&=k_xb13RiQ`CF+&~j9hwLp_=dBi~3|OZ?Wy(6g zZh^{NR>V57O{F0pA?t?xMroc>&O!jyIJ!9=t4r+jHvmgvpP^ROA)}AO6ABsi^*T;Q z50cs-B{C`(!pW!)NfKoA?^q8aqt9TB$SB2{ii{qCW?UTnL%ZdYqoQ%%Xjf3BNkjwh z*QsS|Y3MXI7O2c+6;41Aa>@j>uI4Ek{sx$Z#u3o^)|Tk!7)VN?pCR_tA)n_! zdWC%YdK@R8Z%Gy~CGsg3!pWx(NfPAqbEro|KCi$Skxz;>75O}TB-fX%6j$blvxUCI zT%ZeMESmcPrAay8FE5@;#cJ8+`eDg9(UfmV9P=JjkjA+=?^26v>JPBXGS^z~c=Yo7 zs?d`3Z$1RsThPnLEKnI3N`cChUjEer)w_XS^6Dza*N$F>^fLA!3P!7-tvlN77!}tpKWVB3aZUZYkhUeXHb346GFPecOOlk1LiQG<^lS@M2KH5; zszXYZ9iJClpo&RK6WQ^}tE(7oJ5n0b;aCL)qgBwU?YW+Ead5PfZ+Ez!`T6l*wvfGn zM%)S6gPxkQ)9+ZIGGM0yl_@*@nFT6ySrI$+x2IuGuQzh?nw8ojCGsj4!pW--NfPAs-&hYKukT=t$ScK~io7na zhDg$FEP?=K6g%+sZ4OEg>S23)1R5GM@u^mw`S_R#teK0rN zKbq^$XNQV?`9YZY$KaHCi$*X|jT~fe!70lYs0=uzKxN7)Pq#p2E-T`cp^YqA0jxvH zMu7)_j=o8ME5tNyTwUsYEmueIy(7S{h)m0P`LGTFEJTgcvmcs^%= z%D`d@RCS1_^5W1N7N}wp&qQ7v;?-4*t{w3V>1gb66pU6u<1DOC|Er#@Xy&XY3+tOe z_7*gA2MbgNG*h55rJ1`}pfcz*0#)e3I^Ii}RMyoyMZdoTTG=>KS*HzMRO6mJuB9p68BO13bev(>T_2DKalRjx{t@Nax zVsX%0V^mi2<~sLyOSR6Gw^n^d6K05y=Rp||w?_-RpB*oI9l8TZ<42Gf+?p@r{ z!exHWuM{n3x8rZl5U9z$qdH+^Rju0AJD4k%Yk3xC8wUQ)e&vedF;^56OF|S!BhJg$ zX=!n-d=P90I~meccOeGbNqd*dojtkUl|9Abe5W`O*}e7_hgTH(G1=%~9_l2?QDoA^ zGwE_N=@OYZ*DTK@BQnXc>j2*|HFg7CxcCRI;Icn5MD|0j>?e%&=$5I%gk7CnE{>LZ z!N);atlG4tWlgPvodVazEo?PiMn&_V3Sih8_^F$HlEUXE!4IcHbjIm5eCiDP^;{C| znG`>Z!m}w{OW_!V?9dG$I0s^jTiLn%Ql-1+QFuOupTQdw*xOLZ;x={x{@2DXq+6e* z@FED;vNz!Vz~ih2|FDZOxCDbsF}TeA?Q)EL4udN&xDtcbHhA!Ub``|C2c~zkt06M5 znmvz|`UeJ|$2;sA3a_Q`3lv^Q;q?^WK;exLasl2%|KE)N-?s>Ye?vxV*)8xtRP|Q4 z9K3Nmdli1{W-ntIuV8Q+Cchnn*Xhnb@yFLNxC0+tXW-c}b|>Dx3xf%Odo6nhZ?`~{ z-3>pEu{YuWG4>@)-^$*ie_p^O|A)bg^#4l`u4Vti_`n_AFi?IOQg^d^AOuyr7cOgR z?05X~M}GM;zdRv+#LoD82+Hh9@0YPMy9$~d6#(xs>R;G_*ux+Jp&Flt6d>F)-~we` zA=2Y>@GmBI%v0!)P;D!ep=;FE3Qc@y5mXAhaP_ukn%mUG@W}fy$;q7=LUXJ|nVpBh z3%`co6%4NZ4For0aQNd89DzaGZy}h9!B;W(CI*GyK`@NL2YwGh27{kq@F)iOZE8jz zRL9Q+GWyCTew&5SCtdJxZANFqL2wCN6) zJQ=N&qO*#ThZWfdLy|nop5|)u48J@F7ijM1`Q-(Ed68dU=9gFb0#47WM{Q z*jo^+fhB;YHTDifA)nUG=rR#5-E0#7XEOccm+Ji!;o;LjS3))MY|V`hR+aBmw+Z)W zoKUD_M!+<{E?0-&bC19{(o4kgeNTbZ2>ALKlMIx}h%UMaj>25eHc~ULE}S(`9Lmos zjSdgzOS4WamR8Q9>WQ$g*jt{(4Fms0v0qT_u2Q)oG#ZQ!8^0u{9zNQ`4P99lng50) zo9)#qxW+q{Y_?G|W*PjAcuX5qYim%bP|ew1cOx*kNpwKA>%4tPLAywOJG!ge*A+X6 zzIIlvyZYhrq!h#g9>}xZc^T{@SiyZE$g@4+r^S=lUU2DVb0HjKds8@%!ub$F|J#TD z`3Qu^)P#C%2mf#u?1^g%ug@IFSx-U^fCv9SdtU-4S5>9oojoBeku88g2}pM!=|FH; z+7M+4iwP};3_Db+yDQ!G(%scmRR;oLQ4ta>R*Owg5Ck0=MI}9mg3N zMP@{iO*U8fpS!%}y!-B}I_JIDO&jz3<<;x=?z{K9=bn4dchB7lk&V2Lc`p(3%|d%) z3kU31n6}mDRDHz?*^|(_7fRDEXv=yj@M^G#w(>_wQ&v*gxev)`dd`xe|yf_ zqBiQ92`{n-8Qj=YYZR2y3_hkbCL%{(I}z5FPG=PIU*BGVS>zQ_n851*ei_D+^LXt6 znTBC#yJGY*pq4Lk?MhgeTQDuLAf)Y9r)r*uo^N+b4qCbG7m5z`qI0lFYE zdd7|d98o=uPUkrMrhXj6->E!?-MLF*<*WI>Ky-}sQ!dOMaKO6r3zdQD0=M(k>3shT zlyrT`Sxfh=6)&iD=Q^ZFI+iWWE$uH>`(QECK)wpRq}ZMFg5)}uEd#Qtd^?@0_p3d; zs7n2>sri1fQipk-iHXeCB_s^<2&^Vq!@gZ?E1WauK>KzUTy#g~dmvOrOMh-+t>2KT z0TD{rvhDCx*7M#wD?=K$SFDnCxrMLFzFA+|G77rvp6a47fy(AQ(llLWGxn z%7~(H+64r6;KIp=vOZN*W@Js|6O@S^IGI={Kn=B?iE{~=I4_imqY}3kt_V7v^FwjZ zbK~~f7(eXAp|CSlST}&u7xy6&>Hc()I-4Q2Sl_}%2%z*}ABY|}33bx(+Zd<_L*5z{ zwJkiFfr`);YEpt9b;DC-L$mDp-M3;|TN9#hc6 zsyah49*oU>i11y>z(*)2g)h}|;zj1%3}gAwtNw&=w2pd3-`qUj3g1Ps)bN;IjN2Pk z#r?(JATV%V)k6>PS8=Gi*c~We3`|D+hdBdKe@p!h=S@&T^%=6J_cdgvQs?3pZ+1dN zE1j+i4DtS`d1QQ`;W5JBKgec{oCYO&g#>vr3p?lripASK;(l92Zr zw`OSeK2v{->+VA$50)-*xaqIIm6WdYF!1I8dgp5*Ej?PS=2}Uh7|=h(0J1cyolYOL zzG@Ze~>RZ=l>MF>W{2MKNnh|=)8*a3*v#Nw^v6>46@u-`zjGFl#jM3ZrMy%D5#b2o+6|EXQTjFM%H$M-#z=inOyzDZ@lilTiouf6sQ>CZsX=R zj3)R7%IJO?82zwe9ym7`)(xhZDt?93XQy8V+mDvihtd_@0ip-lhq*MIt$(fMYfPtw;NMZ*uu-$BB`Sl&EW22+xN-bXvpgjg_JKXt?Bc z7&>~YomY?zf)~R?4M&mR37V@)C9G{bMKy%3JUX4Q!fhW4?uJx4XS_v1Jdq(pLRVzD z${^^+i1$eO9%P7;pnUi9l<%ty zR0QSIsCdfvZ3edF%BLV_t9-jz`v|U1nfkX=)HiN$rGn8xkQP40kSRe6pX6!bD-2Ww zE!3!ZS~%?~Iw4N3g$i=ETDWIychpraQxoUgzH>iO+Gr1kG;&XddoBFt8=pNCi1njpRjU@#aT3BAjhRyW$OYPqa6`zD>aI)M(-+lyg`v8zuOQbERMOV{ z{f8f?+>bDQ34CzXTy3yY9vc{h-=dfkR~*U}M*4G=Vr{H4k{c=ylxo$5xniv^GOPV#xlYzwiLn5mGB*rmIxfMT>H)K~pQm^TtY* zV!x}!;N=ZyaLDJ|>AZv!tIrL_iES@_g=F;MbY=9SC!?DnVi1WMz{)*w*@tp?08700 zM<#ILsIL~ZE)1b-MP=nP%G489)RGNF;%Zf^;x42SU+RqWkF znR`RxSZyt}GRav9JDbVX?|K7{h#C_0I!fUg^7A@EVLM#5LEj~Gp(!1&-dGBQvgLdy zL=PmynCjYOe6gE>iZInxqoPiAJ%NFWFx6F~l7uayh*2F9VQqDY()1gHkp9AfhyNNwtYYD)Vbc@*~jkq}tc` ziPmBwR97(iERE|9Mq*aWIu~I=voP>0)E-=q)HZXQdbOEc{f;-FO~tZw8!ltX*>r=?n_w2g4;a~{7lNU%8(n2q%)EUgb^<-Y zK$X41KF>f!msPyN&hlCVq_wXxpe55~6}9z0oPml^nKUZdYcUEKRUHx1 zr`EX8#!DxSbT)y;X4q$mAbzsLaw^C|cUUm1b9*bNK>(w-5~yCPw{jI~jWX)3;6zk! zC4eN2-pYVb4cS{66nC<>BJU zi<2se$M9k^xi@6*2FubjyWxcti;2bO6-#*jxf;sPdwSrPzb<(9OLLCWwg`h8PI1!E zJ5=(wm_^aFLq(X4)PU%t41JSs-n|S|1VgV;Q4ReT1}cJ~*Qmm)4CcjXK|I5rCcebo zk$+}nfyl0%Q(&zJS_QmKpgD_MZ7(KBM$QQ;rBTHfh}lPf zih+t)9--Y4(&?ky3SnWW5EkM>_!A?$^g^K4>p4%8tskYc(~@e;P%S(b*L()BWZE$| z$TPC5tKNoE+G%nQ&i6t_zR7B0^i*^&oowA~5k-}RF&yNtNxM$AYZkT@Irqko%rZqZ zf@e9`iYn+)nF*gFD*JDUXEm888j&ZDuoxwA0c1A2&Zl#_&{NsnTmyG*cN67CcQ@;A zGB|(4jL|^ZsP5;5sJ)EoewsT(oN}_7Hle47x-*Ib(?kcyh6^K$DzM7C&^sh1=T*ms zYSpgXF@>QaIY%$Irdk|Y+cgR^_JBxqE(mWVaZCzH;EF#OQ}LZ8p?&Oju)$M}%61q$ zPG~eHAxah09)yFv-QYwHtR42qTCAh+wm6tHJt3u{MI=d3(TSM}`#}Vwr571CyDUJRxg5-%l@GjWfwgi@Pl|HsmN{8A z)agUxoS}E9LwIkxg7l}$-UShZ+^o}O#e16%LVY#gDg~5-xQGl35#yQ*WWb|r+CHQ@+%TP~pluxDqbkb_;$#)idy^SSD1v9GkY)RzN&5DNkNiVtS6uMdl80zuh|i#?H&d{btN zA(^m}Fi?~|J-d~Q!k>aG8a|dK^CxnDKt|zYGm(47Z|wTP5WnBzPZbeUTKw?Zhvk|V zK~)U4SUI)lj$Ek&J7umfR%#Fe>TWaSWVCCfzfh?ZHh7OZP89RsJG{Sx zzL|3(xBAYXh`48cP9T$r0R~^7HsMU6F5@>6bgG$L{UdL{d2T^Ddd`#ZIM68>6s~Ip z%$=D}Of5A(jqupR43&l(K$#-^w4=QW?wZKN4k`Oir`4p zsHpzts~M;W<477+xGaxK+~l}w&>7wj)a&Ca1(_yN!v2;!7+H?;pSC_1QGrN2qw6+{ z;x!p*)nY=zKd7~zME?9vN?TKj*&Kt-tiHd!^9r}_c| zRra!aoq>ujtN3aZ(VA`h44EWFIvXcTYxWjKe(A~)Ukr16f{abeVg|Tmjam>&W(KB7 z+ja~i*YqNxwr%fWprY4Tg9SEe+wu%l*~@B}fr>7x_(~Pgwq3-4m8?2VEK|FdkzcxU z)Govw^O?GD?^0?-oV};0YxNNZ!pk7N*i$vC5I_w{*a$AbNlv z_IkPJKq2q9`w%Jmat1y^IVpUpmJ=^B%Ur<-PrNfIy5F9=d&1`mZimNGn(ZhVkt5F~ zZHVqYkkt%l3a%5%C1(m&;ZDyK3=YD$^90p=NPoO2VwPZ_R1||d1$jxJ64YZh@BhFP&*VVKXJh*30A)MoXi0e)81+t-!q$@Xnve-iqv0HJbN9?sJ-rI() zRdw6J$TvbB7Xi2SsonA`KHCzi%LR z7ZFnoM0oPyKK?GUn!0&RO;luYhM`-9RsC$`1EjrO>E_*^Hh3UJoN(Hp5ML^K!>9oM zv_Z^bFnwS|>`xoSOh2qA$)^pTCW=;08$4ay$!UY~Zce#FCC<9uuqVRzv9y(ywiXSoZ zOs^G&k~EnG@gxHkT}h}d$Zr{_=(37eU2|KGw&%(AFX05QbS6sL+7Hk0DD&SQ+HYYe zMs~@nK_R}z5S70xVgy%kE)_~-wZuoBbINh=UUky)Ri`Y>`H$bdVtLPr zXX1w^pSW`6yHE2Z$JqIuAytBEcS7`FvW;foNZh>(pDf+YKt(8Pjf&a~oWMXumzDGh zB~%B*lSOWAJbAqI-AHE;YD0EIS#?`qMC}s~0@0&e5q%7I@5KQKrN>76o#F$PSd9fZ z$TWbe+lIB0>=cg^Q9bGa600vkpTyGAPVquX)K2l@PVE#g?y~7r8~V_EtjKpTJpR9i zLObo^*gCg$wZyK)FLlmDC*oEuN>llT>b~^tKVe0$I z-u)u!{H`wQg)UkzoO{1$eW@n@!}GDBBJBK+1gF31QeSnsUv!Y5Cx7N~7f&I=EZyd{v;9(w#!{ebr}F%VU*3*i2nUv08`&PDLMqRrVT zf5vnzyA;4U7sI0-=Ms5+dKx@%?Evo$KYR8|3vvaNXqm9^McB*lEBY z&W+-7lepY0F1L8kZWVVQ7MI(^<#ustpAH{B;(P?|dj@yyaXtz+um+0Ca-tN>)rDDae2K*Uhjpg65uD~-=7qJKYRjQUW14>IiG^RA*=Vn&q+IUI4{G) z9_K}o#!KSz_agYG#pQSM%`4*JtK#w*@!_n&UvGBq7q34nE>i&aCg*kWx(#lf2jJmm z=MV7rX6JJve7o~U`Nwl2$n)azg8cipaNXqmN!$;9rU#nB2O)Hivjwi8YF~h#iyO{Q z)X(GU=V$8Y3H5WWsBU$*RGlaNC!4FzN1(`s0*H5xtU;oRI9~?|Xw`T>gzy)5-KN8f z?;vRr*tIp0mA*c`RE4V1*rYY_YY?%lr1fjwSPq_sZsJr;m6GskDhT|)g;ahnF5>J_ zN1j$Hj$?7;DK27@V@K}SEq0u8gQGX0qyvm_<_{n$N3{%E{4wbs)qAA+(JC2u;>^y97u(mYdwu@-~Rs5%Ip-&Ox`kK&FnVm<(9cu1v zey}Kif>uY-;;9nEY-FTZS$uxEvTm_79s1f|?yD|Vjj(!RGY&dK zT@_ds>9zIFbthQLAXLYY8N%kJK2vP!kKXK+d#Vocmy-qz+N)Hzt{?=OzztECHz-7wHz%N?0J?9js(=0?Vb^ZMOT zVFMfu>%KjBiFyfV6@e0z$|Lzf*vbvPmgkla!|rW`S`o#3$U%p}*E-rlU#(ksry<3T zf#T3uhxeu*P7#2OdtjY-RoGkFt@b7SnUHS1NrJ`p%3Emg5)}uErXW%a%g5m4ONp86iG(S+RJ9^ z^GsY;+S8+eW~l;dP*od7u0dWOy=WGJ-9$LUu?qy5*W`VG`nyOqe? zAZ3^6a`Hb2uNBxP@PQjjsVjPe6!uWM!a9Ui14|%!XkQE`ZWkK=Lf->R zOFlt$Lln}Eu6MKpV-*<$C+;6T} zOhd6_#CL9JWhx>=AgP|jkSd|Ro(R!1`W~benD3FH_%TDG1Vixyh@N36{*Qr*U??;ys-bv^fr?NoG^$h$#f%r}40)mr z#T3AtO0R-h%sGb4=*3Jm6kQBd1Vh1;)lvp3x~#&6VwxDB#_gPXgqpT@F|Z{!7D|xW z8jJb1p?Oy(rk$AMf8qvG1|s+ZiLZ|#K7wV)L-Y*Ga2^8{!7^x6RLgKF0~MhfXjFz} zfT3xxFq;frh@hx=uV+9`Xc+{Cn4yd2{-&#?&ZN+VU>5Uz44Ki3nQ9pxVxS^e2BxgO z!9YcqRoF7jP*aq=S|MlDxDS#3|B!(%xph#&%+@-%6Su5$u3YJuR$@nOC4!&2p|$HN zDg+Yjvkbu!?8dJldWPNj69W~&ZfI0gyD{e_Iz1;;5{)WsH>S%ObY8i}TMiu<74e%H zu#?#ijUtitm=CB^=~pld`%s3|=!H$S9>+3J5v&JOR;w7O=&}l1kEt+s)vFfLbjT-2 z_t!9xCAS+&jM>_a1^!q?lS#X-j7$Ua=D0ZA&y*#J4~k^Ifgy8(Ng0Fa87AdQ1}cI{ z(Ws~<HS=`}T1k;efxJGDMh#S@$*9gByCS%&mbY@L38Ep_f!(_aP zfr?-4A>KIEFO}YlY+5e7WRKIq((1ns(@f0q!@Gf$ zi3q+xvfG^@JA!%G1)^t|hfW46f_c!WsOI5N1}Z`=(5S-ZA<-hf6Bv+_nTBSI_?nM| zA1iex1;fBB=3a)(=*3Jm45JKG1jE3T)g=s6bXkQB!&KM>1GjJT32NBt3}nfTf)Zo4 zMq#I@?LS;`MA!sBxEn~@gun|Vx_cO+BiMwGLG%op@E`*f!6s-_RGaWs1}Z`Y(5OtEZ}2y2)b3)SN^TUC2s1VcksJTH(lCv}EH}IxL>UDCF_POqFyuxs2495e8OGpW z7^n!wK%=4>ga2TlB51xw6*dOb#CDHfS;kL12sU#T`J*aK!s zPyJn{)K{aT+JkuvR0Mm#l-1r0RP>GBc%L`7}%0q1trLAt-^fU zzOSxKOvA7p{=^Na%tQDk660|UF%pc#(GWeuNUUa{A{YscifSZ!8K?-=L8A&Ai9~}7 zH3sBlCPKo!vAqqpM1y~cOvR{Fo)k<4v%Ifi2#;RgR8w&~0~NtkFlF^A1}eI&!lt6R zN9jupT*=LZ5@M=mf)|-{^9neXLvK?!O4wQWR`@RR2nNFT|FbK_wY5TJpjd0v7v~M zJGmjX-@uOE?vWs!&Zk5q_rb-o+4TMJs>Ll$2QPxn^dAuM3CNB-Z|eVq@`*pMXgFKk zR~o;6v{Yb^YL%g9(XQiQK5a)!K?Y#!_CPV!7ad)w7GWRxZg+px?lqUF-M-a<7uBwl zgy7W{;cHx;ptpXXsXxZu@26vGkQ3^&)c2<)>^wXN;dfpZi3PXf-X?$-<9am)m&Imu zI(@K{Xno4)hKAT!aFN=9HoEL}F+BtTRjIrP>DkxsMH)?{w`h~y_TPhA&lL4z!)UQl z*C$g+YgxQtbg0xyt0B|JwNMp0J|4P6i^{GSLNgaE1HDqQtYwjGbr+4 zqXGp{k6)&Tnu_?KsMoVtCTWy71+O5+N_{Sl81JvEE_Z}=2R(T!)*Wb-H3YT94SQO zod6P6)8LY8`Wd<#8Db}>!vzq1l=Gy?PVrYUP!Xz*Mn$bUw=huAWo214FEHEM`|;8} zBc1&LR7PD9#ScYqq;(4{dn{i7O!dI=H%;uXdt~kx;WJ&e{eDfL<|!uEiAo`+UqfJB zI#vISSe%F?F1QUa%0aa?gd=mmA@U)Q%>AaglSk&tJN`Mb^0+|RAWGte4i3zSoSuk% z#);_YkwiL*lg^TW&i4suC{Zir4ExIw$qc_lwDRXj!7*vJkd`F0@~38U_0LZdS{W`3 zyM-2~-gsq2Js;vFQ$%Uf$mbz?292EZ2fI14=n3WE0F5f1MoK?D(%u~ysFIP$rV9~T zqL3=PmS&xL;$K9aa-I`PWL40B51P&(yBIPju%ZJXdIp1B%0NY6kQx=0LB5NDiY_b3 zAdQKs0&>O#vZ>}78vbL@%j^kcj0KgHaS%j@me#v`U8`M5C#jtYHOzkwj8GW6z?^~lO`Fw3!-O`!7U6_ z1hb}5H6eq>{>+auP$eXT&Gu(*i43aj8m5xxPmHKf&c}pctP1Mx_3O1ERFd;EhTI9- z@ZS(UgAhK;Kt&*g8WmMme`27b%SsYLw_H){E@0bQ_wmv|Bb}=NRQ9CMVmT!t-2IOs zLKrlUE*abd0vTj5P`4BrtRo3$L;Vq)6bF~?rG3Nl(N^xhk0Te+n6sGdNO{@@hCI7`ooipIpVUhTIi$$)2Ew~ zN|QvchUgh2axDWD!4zs#@gy>8V7kV@m5fHFH88ERY?xObk&LKb&M87PRy9pFFnt3< z>;!eV2BK%M$U7OR2rN>gqO!=(Fi_EDWf_X{;y%aF`7B9%B1MJfYG(jb*T75R`J#>d5-B$e`RQjyBzG^wnX zE-WS@lifTrDbmf7MDA>mNSUIQJZ=+^hdb`6)^VXXs3ZC+(&)^`onJJQtAB2CkwsMo zcI%sH(0R_E?2Wo@c$Z-3Wp&lMK9(VLf-1ZdqG!;ERj%D!Qx`JrsqC8g_v> zV|v(B_Y56>7MlO;>7mVTN?Ldc$OX|tWE)*NcqxQ3=wP5;DLVK(vSu04L7a%9g8?LI z(7|hku1Gp~ow$>9P~J@{I=I~59ybviqz*Xy$!19g18(y`f>tgV+!9y^QdBVb0yP+a zCyIXj+=lm<$xWI8=U@TY?Q9|<_+?W(Y5EGk1kp2y;J-3Z5iFWUMJ0kiW}tc_5J8n) z!$|UoU_^a#z93Pb1wRroDL&me-+{!DJfC~LnoDk>3t69W}pR*DFU zLPhPmz-(*R$4mE&bnXOD*%LvF&6GUwASe^W1A~UqrGW=SAcF=5YL%jacOeO9L<4am ziUtOdq(K9Z5^5@G;L+kv(m;7Psc7Iz>R*~9KEsGovD)LL!^4n)tOj2juK2)0k7il>ZG!^>AOa3v#+ zX$>!{EE^`3M;jw5ms1j=v8pLLuzY2^{fh-&5RAp~P5kcS*}n0HDroj{(+kUBvZ zPKD?h1agppia;PWDk_0o&p<_&l_HR`R8a#jKxa%Kn`)n-<)A8 zVYS9dy^h~Ah19G}C?jtF4$(6RCiiYJUwUdLw{xRO!Ew7iZg%Z54Sk;aIc z<@}ovja^OAY2kF%IQMls7qN6UDf=ePg6J8nad!qP0&CQ$sI0M*fr?OhG%Cp&qYiu* z?=z;2P4&;v^DlsQW=|Vqtf}OT$AM@NXAGN5moOd=0S&?!s9}mQehIZk84*UDh$4&u zBxw-F(}c!I!g#v4lY~*;O)A3pj*-G}vUMzn5XY)Tf?1No?fl_snUs|hP7A(PL{L3K z^zS@TxZ^kOJZvUczi*O^J1cowt!c8&a4t6mlP2Z645DXHz8e^*2v$p@il=;1u1II^ zWS~k$_#}q7!;@Ot3`b?xFoQh07g3X(ONC&p3Oc<5PIT$uFH`w{46zfG;bDlLLH8bG zpd!#cjfzV5e!@USmzAP>s#sAC5vXmg`grM|k8BK<6hUtocLRLWK!xMNIcMGGTCp!Q^6p(o?V68AQfn>5?sL`vIglamcBA8N`e zP13joqGyoCV;QIjwojvKLK?+FA*8~q7^o7GMu8zQX;j%Yj46*aMpP{4U?CW*f=)R& z!LafuL*@ic7=q{-jPVi%DgtBFsHlvw&Ok+%m1K;fOi|qskZsNTcxj%I&h7vzd%D=n zs!I0wDS(35W2D7&$>e3U;h}1gs z;pFd{$<-g6EdE4P3|0%Aj3Pc|3MfsA_#{Nnpop(9P!WusMn$EF)7tH3&^Dg=Mxcl) zyM_VfQN)NE<@`bvmsLUA4{=)u`VjIy43QHQVK0cD!4MB(pdv6tjf%<;moZS$WhEIR z6e()e1>%eeVpF{{^!qW;%IpcE)ow~=cs2+IF+*$`T}pTk1T!dMpjIhL`0uDy%!m@= zL=+_qAW4G~4hwCOlyF4cNlGa1CKV-IDfo}x{ZG#PO2!MRi&c!&vm}RswOMAmR)#pw z8dlN7i1(;fxl(Ay_<0rIZzeZs7OO-^+G>xJ5ylUjQc9CB-UQJz2;(Ois0g-CqoNYV zFECKO5eTEou3=DlgfXI8IX4QySQRvpPw@u~nG-bOI}kmCF+RaSMPQ5?6_qhQ&p<_& zRkTl0K(;mR?vcsHI=+^yD1^w7-1`2^0+;OHOOP2hAHxR8IpHKyKW6whW^$8e-^8G7trj;KC0uEWCrwIt0z}WCgl95P5saHgMWuv;3{-Cf zN~p4H7)%}|jHpk}@j@_G1x<8n^A!x46Exv{5IutuHW;V~lu)ChQo_3!sOYlNl<-jO zMHG;2t@?Oro{`Q$04jS*Xt9`*3w{L;fCVREEny z5Jmp{$B6npjZ`@E0pwqr$<^C4T&;F>T5q{Lrr`)X1)*t1DwgUq`8o z=5U7C3EJ>Bh@Qdzj$@!Aus@B8Dy!8DRCHNM_BTzIDykp?bjJLzsrDIK{sib|_WUo> zU`qB^0ihuF=i5b>`&A)`!TkbtN^!p@QCpo6_rr-O?iWCk2KRfv&=Sf0E*E!_`^md( zxSydAG0mPXgfFaUYg00R_IYESl{4>!z#=?L?49)~qZ=Ca>3u_mYPC^xqRhbHQ_l6C zC~ojXA@9-<#a9IOTW7Vkc@{kkw$phW!qg9x1a#4GxgX|6F6u4xt?Mn16c@o_LixY1 zJhHYlAYP9R6(KK3e){7s^>LT`aTk0n{^!-lIsI|Lxf}4D({S#QKT6z#w<%da5+UpF zif7WWOd0F7nf@r@)@M}9W0gKIJ2Hw5JGHf4+~{;Jg5MQw&PMq&ri=Sh0OMQ?k9wR- z=?A4KKOpa~kk>2ab(6eqhO2Y(ws5%$?pCxrA5=ee`Sxmg zy+&TI6)&bZe}+U>On0sme@%C;m#=P+*AKyUlk zcMDvq&XfL=%~j_kP~<`Z#5+gUCsARXuY&}%YP=spfN(E|A4uyq9bS9~e~Q4a>4|It z>eEYAs2Yt;S`)u^0%S^5+4}8ob3IjWrCdB;K8XJ}LPjr$%l^NI%YowZV{!SZ zxLoxIxLhkP;@n$D9@Q+4ICJF5XyS|uM;^-}HZ6AKPTOMlIY(|!w(eJGwSC#_49)I zc~SkmtbSgFAJD?ziJvy-_weKV5iS>l7i?9-c^z&cp7x#P&s6y7ai*z1X2?H+GFmFs z_cAEyNIkmJ@}kqJ<2Uuak@G;Fv9zRCyr7mFg=V}k;L&c?C2txU(YbHSY5@s4|03>? zDWSB*TDe90sWj#>GvfO4#e?PH;^N8}%+RkaKEGU9w^(LPU;E2_)y1kwS5I7v<7c_6 zQmtvt1Y_Z}F2ik38SB;Js=D12B`@>_$>!%~7CbYXNH&j~5j#H>&!iQc4jJ1Ulqphc z_OrbRHA~2VV~ecHM=EERRNc;=`hiWv-dhAaUn%z%E44!7ibhX;-zFdQRYpc+!2Oy8 ztX0Z=6&bRlNk~C821aX3WZ(l@2<+o6I)|#9I)4&keob83rom;3xJ-jf(K#GKteEB; z0Y5!XH(WP6Z!>q5qO*NqJA^Q}58N=5iYH>(YTd#uKpCs934(MX7I8qB$L*p%~ zio1z&l5K0s&D1Vt#DNUXgQ|Gl36`qZdX1~kg#1=Y#cJamAR4zrg!R1@TYh`a(zZA1 zd#MnMYyk#0_S6~$r744tDK&}6jn`s@Rix871oB?rUMJ&~N|^lX0DiH>68w0D0eOaD zXzS+oO#G&Pk!#(;+S}B?#R8Q2gEc8o;OriVtoncLf$)1EQh9Akj?V-<}t62B0rW@Onxk_g80~x6<^fnmisLtaHwWsnqcp@ zd@${Pi(ly%=kwxZsC>R_bVIk`gV1b_4CKmdt?eZ0rr`E(taoC&0ivk^1M;V-V8B!8 z2G}e?mmp_nyX-8wQxN-YoAE8Oz3YWq$rf`|+@;q=sG1SiS0(Qv1i31^zc2^-3(7Kv zcuMdE64NF#H=gZH)LZy~8L@M@cs7o`1*yYcZ{e6GsuqdT0 z8kR4b5eG83U1p?yp(+|Hsh2Ia+t@bh2WskVVfZ+76y1-=r`P0!d3LAs1CUDEbU$8| zK+<6t^@TFG5p-X)6N_}0-OByd*Aaf9U@PO9z}Sv}G-g=)0!qT}2*}3buN?t?M?ebj zFS{e~3(-FPOkB2z%LC%_U*hs(xcD6b5p1&zvRS?kbOhwbvhvA~r5zC;JF-a-HNEAI zfCwBiC9QS@?#Zwt5UkMTUIA`8Q5ONXnG@Yb5RDL+quD8q6dV_4O1v%t?l7DkAZ6|t zt~=HxCxOI9>h&FDq~2d`5s@Ocyz6vOQQ7*=6L;x#Dt0m>t~)7rDuTKh$Y`juk&WZ< zSPI8L^&o(>Q9p*jJ*=@ragqr6dz>VFU+PjgLZ^Pt(Lfzmslka8hhac$$!ak=)+r}u zDcd^~Q?sD12CuHy+*T9Eac3H%F$}sb*<( z=PpT-8{OH8&eSn-63N2c0SBx*zfc*dE^r6hI-T#Ift={|C1)+&R}5ix=Q?C5bu3$$ zTiRc&_Q7hqfqWHQzs2sH7bMrQY#EHYssZ>;HEgG+-JnM0M6>Sux<{R6_nw%@Z2ft{ zG&_OSq{n#T4YtG1nRCFAbQWCn@X+@_sLJoZ+{9XcV!VvAtu<`XgNG^(`Xf*aqZQ7b zqW~6kWvCM1gTZ{a14;n>5lqe1HKl3^<3cLB)+{McMJ-y@>6{LkbIyQE^dvJwF;f`$)DxA|>Qh$rbUyeC=9(||x!2+#Q$&9RxED;QhvuTx-*DDL0oG^8hNZ6|T_ie_ zw|G?qto>-{P9Tr^tf`2K#Qprm6l`Qo7E=(7g$ucREB`dgitCMopJM zF`xx8fGkaNr_%>*w_3pg?fRm)MI5?#9s+2pG~Np7*~kAP4J6WIX%Ss>c?d-2n@e{& ziChm@ykK;w)K{uCHp>9esUB%;cJ^NhIHVqRh&!oUkFJKy%tz)eP^|7uMQN^tf^AKm zLseu#XKCGSUFv@)>Z7cb%Y~Myev^uGck#fh2T&=)RWEn+^3v+ufw@)XqnEE*UC6C1 zS8}pB%+<;{;r?)|n=-M@gChgC5+#qTp+)QCCYyR0-TIWnD9F@Zx6)7P^p%H4$7;p= zP`O&|ToBr!-nWy;ErI?B*vV**NN%`T8!Y#O(=rj!j*h%5h(FSUi3N#O(rMj;S%~Zd zq2xP<$^)eun6*o48c)Y^OAUjI~D8uH1Aq8nm8RJgy3;FL+=Mb zPsiEms60Z_?|7QfUg>wt!(H7nZd=D48@*#qeZS_S>RjNumVDo3pk^wiDIp6%@?CZx zqk7Ca(PPe)M{>2nqL`yr9Lkl)YS5Ri<_ZHa=v1xAHv^^h#Sz^F^eVmd8YYPdal3(( z+JmrnX{+tNDIMuYVg()fmes%g9qXGP;y3jqNc`rJhG0Pjn`?#PqB5TN^MY$8j9e5mtk3{$$ zwU5KCR&HJCbY8-E>N8XvZUEis(GQX6ZcbNpFM6W;5JU`;QqKR}6PJA`hsnBl?|Wf! znW?Y#ZkBzNk+}Gb<~^n-6RhEKF3xo_BNS?>qo_fND>b@W$)aTyn6HN2t2xkt)p7)0 zD}h^}W{J<#pSU5E2)(CBR9}e^JtLofnSWX3(^}@@eSDd3i?fSh$9T<`riLk+jsH~%|W6s_C`af!H-`yk3Y{^oyjy@V`Y zIocwW)$4vZ*$iA2Vc-%5pZl{OvpN$EV5c%5)}^6mIb8K}bVtb*+Gy#5;!u8lVQ8#a zU6|`H_Cf!p0^1w_CCiukt4H?0MvVURLJb;^TB$seA1+ka>6gV3^^xxM=%=HFYAwI6 zxIxDqib#>Pd~vw9=p`~%E#~_QeS<|ER>hb1(saS-=lbBpYOPQ!y06@+V}Z&2;UTn{ zuFTQsnfDa6eJki~Uy^~dWwdBz8BSk;Ay zc#mXuVYV_`ud*4Q=h}WGMhSl-RGS#62(w%@s?%UDT42^&eVVWd7?^s5u-(MKcC&Q` zZhgn<*yw1vQp;C|3zgb=V`XUc8}7u?VVKmd`k)Fjg>})DZx2_OJj>);Lsu-O26`%s zzj8lNYG@0DBzr$YvV{73A5Rw_VW1-DqDIBj#cwgNCD%m-Ia^)aDT;i#I%O*1_MzZz zNTq$oTcmbRGK5G_yPxsY?zaq71hvzscxu-+o8EO!u67D?#%dSE?v*m#IIRs@WB4a_ zlMIiHZy)+Dq<`VJNdI_@sPWh&p!ksrC?RTF3lgA}ocAy$GSzKf@bXERU{6j7t%DWb!`mRu1Pfi1a`DahF>*)GwZFjtXG zWt(Sw;D%L77x5k`-|R(GqbQ>Omy z6!nc8T&ZAm5Tu3AFl0*5!e8;U@Q(~s1TEC4cv?7n&O~%L6y$8RFqK8&`!K{qD7w8M zdgwuf`#kRYZ#3TEK12$C5Cb1U;T67A%ZV46WhQOJ@P~7T=-zw70&n#Bn|sENwKbc% z8Iga_FK-C?Xb{ZAP2D_IXsVpLc`n>pr*3+qYVNGfy<-IwHDNQL0LsIAEOPijeQSNO z`QgW@kz&|&P0l^54OYry1A~Ein}w17Tt&|GfZ1na3E#q8vDVjxO&32JRNL1wYJ1GA z2!Dm_Rybs+RHF|`6jWnk=4oDpVBq;6w(+%?g7xSBTp%Kr^MCwWAuNt{o@RLd&k=HV zvKrl2)9zr#a;13QSgBI%cWVWV#s+GHH#Y0;Zx^0~IX4(5t|<5wQvU1Gm61O=uMQD| zNUW3d#CzN1EcMlb)h!DJWhpLZqxq&x&D<=r#LygnqLk1a>vW;Gb@%?1xiKZ!Y^Kcp zLrkeKGVWKIFNuhgRG9@w<@!r~HF3y?>eN(oL#1^^&pe2^|4~MQ@Ey{k$I_LAKi%$M zWce|K>1&Y?W-405s1E*gJKW0S=9Lk#Kiv*9i?G%tpKkZEC|Wt)?iFz-r`yT9Nj2SW z?LZOEM}#?7Sd9{{%w(J8Mv1Mi z{}?qa+iznxe3n)r$y~N=%;f4%Zv}JN{4()+t>MXRT{I1FOLu%HiS2KepVt|+s0(Ey z!F?e5)Fz4TB_lH@iAC2fU!Gx4%{=1+H>`G>o9|H-Tb8ZNx>Yu*Bh)Jys0dy!jf&^6 zJd=Sfx!YVprf`LrNn#e|OT}SXWr&ARbY-Pb;cDReCYw7f-^;*9a9ApQsg@HjGK<49 z!p1p!3XynC{~O(5xmP?_Y38wv5P)YS3`x%b$xNKb@)M$5q{s4pxU+gJee&eGEOYT9 zith06yMty~$A&)w)*Q?H}T{$p0VZ*mvwFs+k%emE+v0~R8;r!?=!dE4513{;^Hdv~<3B%o3 zbqtc;AkW*al!u1EZPdFVx5kaQJhBGPx2nkQvbP$(qbh>0Ee&{nRK0=c2`=2EdBd}! zzlfxbJBZGb&{+@Lhvb4S{wx{H_b@q*TiZXMiN9xxq5V zLYm{3K2G4f;~}BFOoe;mvRi$XLkul0%SMCMqK{5^m$u5TjcVJrphBK7r~C5=2Cnps z+UR=_pAivD52D|!i|T20x~H%?!f8RDx>z26lH6594_gTbyKIQ+**t&dK(D15bErm|}toD%Qj)q0+pX#_nkhD3$^ zb_qR&!e*fGcaL}t8e^K<$k;PLwC4#2F@7zh$Y}S74KX^v5WjE8){BTKhAcdKysOqd z;QVSREOI9aYbd0rSEZXvf0*k^uAchCTtZN(Xb3~q{b4T5tFVbYU?kiTs##Ei@4@dcZJJ=GvH~sj#LV3t?)a$L$ zZjvwp%`DBG&9}FNREFAkiyD)E6ME*kS8!FaG?__;w*JLTuKwGtU}(!IAOjb? zVj2s@on#vFZc;IgA>?DuoM)`bf@cJW7P4d+`&w8AO5e&cLf(Aj85y_5(Lt#dI#CfVh<{|4U} z95+xK6~|qM$|WO?ixW{CH-ID!j{8%Q59v*NT--^HEAJ*1$6Y6uN#xg#_s!Vt>SzMQ~-A7uwAuQ$!*N7 zgbK4-98vETHkIej+0Jg6Y>qR6wVnadGkETN1}cKJ)~Mon?o<#l?i1|KK$VQtpRGd`x(%ZX{`?=CDk>k zE3bnVVN;yxLORwC+V&lN6~RehJM&6;bVGsxiuW-}fuJClK=h2h+I0+6gvz8*QTu8i zWuT(VO7_)^0!CFw;Lo_*)>J1A-G3IC(ZqGzT4J8E*Y;%)p0(G8IjGxddjvi)I&Fa( zsyc1YBWjpYrwu2fI&A?YX>{8DO=y?wwEerdlbtqsH>o;p&S)8qaL_X#vR>_*MV~E* zKg&Mb+oMM%g2{KPNuhcRfrUAD9%IZw6?22%W9Eckp@!|3LgB`5tl}4Da$7}b4wsF` zGQvxJceNC|Tb$;a-fhtrZa8C8F-tIM`9klIdc0=)Fzz+3sD7dsx4LK3(QJ2R$@ zFxENlV1uW8G23DAIHBH{glwL~C_jVl0QgH&L=LQcJ8oMlIp13@ynAjdm>3bP2@Tx@ zDwRJCl?7@lc_;>R`ZmUIQ_uRLl%#2`0GhN2eKiT8fniAzv@HQy=)M6BW>GK^LX z-_UJ^zp&$anFB_1Z&#S3bcLJp289vcRqVKwJYP7zDz#mY-K zHW3bZ@6YuO6{_Abv8HAi>{UtEe~hI0)tF*oh{D&0N0cb6`XJuN>%$_NKv1^gVo#(b z56f&ZBokH=1`2J`zvpByC*4P%rR#Uh;`;SPr#5Zq&aEs}YiGg4gLA~>4sky++BMQ&s8k9Yyhj}; z4i^TB9p2xya;0yuYjtr179gI}lGAujAlry_24A3dXeGTJO0szF1T(q%Gh0I+&eI6D z2M2UK>@Gef17&e7ndxdiF}2kEGz^cYO2ZAH%;^mM5b0r`sTiKO%f=`O9?v{P4-z-# zq%>J9a2^8{VHjPbq7I{9%0NXJM%SpqWqDNMCd^fXPA7i8%QTS^?ipXt$a0hqim(tt zf=E2ij$8dZETnDgWwWS~k`3hB&~vlYTQp+YzZ7s59f z*`*f(wf6szfr?Q3ZL(@Id+!$vRN2ew1qLd*tm3OtL~Hgs16Hznq(DqmYqsM&dS{oe z9P!04$0yvlmcNAoE?Hp&p=4GhP1?4&8!_k@ASAYqO_Y`%lu4N#+ z4ALva4boL1fEt9f5r!rW&_@`k=yIbrK=(0F(JK|T0eXmmDtlRdgMo@JD{=$$Lk6tL z+yMQGkzcxU#23TdpsNzot5+HDk`)IAGf@OURE=e3Q4kUe9zh@wg&X3pkW(6IqG z+xaJAYvm7bCz!LjfFV%AoXxjF^Z-5V^=kbzjKdiC2<4>krCLtB$SiXYS%f?5jLqP%kvm`0Hnr6o;fR{8 z8PEj98kZv%2vj`VCS>Mp&G#G+Gi^q4mBRV@%+iH0Bg-ADl#_AP0D~Ot7jFs`c?QO? zJUTYVX2{#^uS-_!g&o$$6by=a`_X8V)K+5dFl=>TDnwc>V=Lq5L^M*Nced z93Q_`5E_={tj@ilwFn%1yb9V5H9ZIqP?{6==J+4tdKi3xy4&}sD>r}A-hB|UTM?rs zafYyaoK6n#6<%~{kI>3;WM%I>HO)%BPV7f~1{$nKYAIFp!Lt4J7{6I;|I=@rA zk5`pdWSL2m7b`WC_c#cNlr{P^AqsV9y==M9> zm53pJ-$2Y25mO9AcoOJ7{;A!X3W`H>RD-YSlUs#V{cPm}q`kRx^X^aI+!G>BIDJ!y zFBQFEQ~-baCT201J}@Hor*Gn(Ls(CePv1OI6s?@T`7UuMr*F!;Ni}^F`aS23m0&em zzPHe~t~ke$n>g#j&DQTRX-58*It#Wxvwrq>EXNt(ZIkXPFa}qAHRFW@}3jV#1BtCaplT)pXN!9z8m{q45<=Sdv}N)Ot#Ss9O;q_ zUDik926-U^6`>i>sHn|AHv<)2R?@GPP#qBO7P+!u@FFFb*T`JEGh{- zlfDH<+)3Ypyqi?Mh2dHmJPM@?iV*zI&ORvIy(O!iR0IN%3yXb(*D1=|4 zM(zDV#m3K>aH*MG{e`W-nGh}?D}UL(qj$8J_kwr0_MOg1ZZbvP)QLc_vNu5V3`X*C z1}Xw0(Wt15jBq>XvWxG+M+UnHNJO!VjY33TLzxk~z=OB?^O2InQ~bc-|9*yh}qA zI|-a(e9~)l!=mVPmOz;LF_O3}k^_&`MechNr!0PBM{EY}l!-O{`+M2!2%?Evp}iEz-yp9ag6k&d_wau3$4&$OaBdWro5ba2ak<5NcB{Diu(;eNF1L$I z`*is55$7Xt-!r&tkMmKu8QkbRBQo`@xZEM$ICskH$K>@cdA(a+KQ6EL$m_juRRa8k z{QHyQ?}tx-%WDwPCg)S|H)Qob_&I5Z4(DZf*yFq?(s)T+{$2$Cw7C3EzIjDFd{taN zBR-rp`0LHi{o?g!#bpZM-sHS4Ubn%m^8h^D?EC@#-t2r%gl~8LDF1j)1bJRuUXXwP z7OtC|KZ*On&-6e;`XGevakjt}RP77!b8*A@iTZh5{rpV*JfVJmFDmORaH%>^`cF1j zosU3~3$+pN99jQF1#`X*5(q4d0^wc`0U@o>$+aS|Yvv-GjQaFa6{<#Klh(wq3DL@# zh>!gxQCN5L5mnEn9D{c6okFI|#bp2vS#*ZP<>*;(IbK|5Yy+2V#6=vW?8x(%#ZhyP zJReb55!)yj@-Rg%yD+)tZ3oOaHPvmFb+o$l`-d+s)&E3ex8OOD7k0U&vWYM z1@-fy`gvLXyb3>{gTE6$ZO-rE$N3{%E(QnLs)qAA+(JCA+57A4K)ZZ)9(E;LTN-fNXIGCUuZ)en4Mpz# z)fR}nEfhJTrHgik@{l6w5O>I|*#;z|T;#gqh_+d2*8yh4_45`FmWPXrD`O)g#meII z%awJDrQr0nzuZ?{tjvXa!nATazg-pBMnn+`Fj~%aCs>L()L0;Mi|u56rZ_OBRIE16 zfyU@|h_JpwS=6`Z;xqu2k^4uWgf!qr{aq@yMQKDfxUr|!C}`9En6*$m5|h4wmcsOi zx)bUDI7X>^r0)1hqw zPhSRh;;+V_H{k6snN(Mc#vr^>dF}WZS=WFV%ZUYhOD)Ov$b+(39Xs$>aj3f3ABR{RG~ehC z)0Q{t(<{ZbrT&If2SNLLFbLnB_B!3NB8EeHl+_UGsSuy*7KVKWL?rjY#X?-~hgZo) zUtBlO;6>mDct9j4a-{ZQ__MeZe_qjWwz#i!_WYSq0XnQW^XcL<&wUp&c4_XTu;}PQ zwOH-WbwjsE_I$h7T%x)qebPBo?K(*mo9ax5&$F7TKgN?1r|c3$gPn=tO@HhA(-L+b zo`d{%&RmgLkmGL?z>9Hh7lX^%k?ETcmmVHMcFZvUk}&V>(cg1OSfxP z^R#5k{#?&VOg}qUsDVSJcdS+f|LZ^+evO#Kx^%80{jgZFq1LBmKWu&9R?_!8fMJ)! zOcx<)n!KlommDW_!)v@TU~99)cQqVsCRcxL>vYX|dgS|-!hYdZ+88SCLY-*gR-9vl z{%@C-)0YjNVHTZ7Yb=^VS=sTo5It}QvR|5kir|;lsNxs>Y>Op~>emH)DR z%l{4`C$G7W;p*Y(D=|f-Q}rj-;Y6fOX;MHccET!#dqqCvJi||jJ2}r#-ti~b$+-to zTcr_4vk)>Gm#%78?_U@}(z%*2g5;)eCrF_XYV>NR`xG_cUqLk{bAt3`Gr6snAi3q? zHSA6{1ZjD2A_AWvecvp)GzrqTA$kTu`Z)s?fgovAO$ZW}FsfhAG4Q|2$A{)R@`=+) zW*MeQoKA%38N}%<1}Xw^(x~Ez(+-A^QC%xBASUBZtJ7!~jZ7t`PfD06(Wi(e#W_Jp z+O1GVItRns38zmjxAl@iZ3f6qTui|x-X&32!Dj}E3J6D$s6&LbJR6V^iNc8}5*0v_ z28sHx$cOYY-6rlNiIR7dibRc$6o!lAOP><$!|9G&#Bmpqr7Ve4^g$eI9zvH)+)A0I z1z#)Al6r)i?k%W_WKNSlYbIC!<5tR%RQb4#xxtR)_Gw<}8hc_jIj;K~rl8a0GGBw} z8C>Rv3{(Uzqfy0k8FOpAUocQ5qc2Uj#%pObOJ&z!0X%0-M9p*_6@sxU=x!ao(G$-* zd^=mUr1OVMCW<+E!!u8P7*m;s{JyZ6=Op`?{RziQ+6z z6!I<&QOI??<1zGnHk#p)OM4M?29r?8Ysp)lZg={XQ`*{)JUUC&e80N}xwl*%${m?o zT^TDb%oY0k^L>?awVH=Hhp-Y~E*-`p+~@gG*a-*Xsgy^{V>S6#cW&)axln`H4(d91 zVXn7aRhzNpOa0w&tdD%LFjtItykuccPP#3vEy13LI!-^jp7IEQ8>kfeO8_e0H(2aj zH(G`mVVP++q$6{1Tw$mRp$1F+{l$?yEVk|zJIMo>j)CIPScmr}2C@FO3Og^lfDb$L z@P&ZAR4WyR{;Ccs*3uAU1L=SBCS& zQJ4D>eYvmDi*g5%j8%*Iz5k{RQ`k zQTsOOmxW(%mR_@Nc9Lb`5z69RCm?v8wD274(40^-b{2YvnEV}_jICoY{cfJI@Y3%K zz*hd%I!4>`zgov^t)uHL=rqgea` zb(FGh`~ip_dWwd#q>1P8YYbEbXNg8db(VaWfr>y0G^%i!P7{pRE6sSnqza1)_!kV& z$sCgkM9es7I;%bd6ZLy^zgaG~lhdC6N9vu8rx7+jV5-V%45`yqW#nCG31=OAj>tHN zeUNi^vlC>StS*E!3Xz0V3w;;@Cp>Jh3voeXR@ zTP0TCu{t(7TCUXc)!{;=cHUUI27BLab_EHIdr*)R$B{9E(%)_4)3PcUR;Fq1-<3_L zv8&3C5sm{lv@$o5A&_8?VhEN{ZI6WL8FuI03{(WWqft@q&N&QJgbJcjrEGV~4A2?d z9p@FO3bAHmom3lJQ%Ki8YDsTq2#sFSRI_n20~Nt+Fl)s<3{-Sk@yy193~b5Gh7x49 zW@CZpDsJWyb}fQwKi(V{hx?f_B=JF!MR|-Nb3%>&CPdG$C_iDKB3KlSirUUR#Xv=< zI~rBkqD+^*aIb*lyD~a3D&jvdU?;OF8bwTJrnymhMQTn8Mul0}JMB(q{q(}78kKz* zs0c=dDXW7RsOYi^8%G#_(=;oV@$ zT;Nwoey1_yM=%ekK=cgrP-LJYma7?{O;2SaA`Vx}5~Pcu*v3+msQv>v>)VE2x%7JZ>07A z!a$YWC@2wTY!o6Vj=0i@Fbcu&ZZK^W&?_XrCm8Z07=_0ndWKPWo`H&B6f`QTQFx7k zickYIs#J}_4tvmzw=rNRvlnUjmu{AtlR`IwS=gUvNR3|DREzO71}cKZ zV9M&d3{-Skg)PQ3F{K(ecj^&p;Qoh!ExFxLg3Q)#?AOXAbx!eXfc={P?-y82x<^3M8Bw2>I+H@@f?3SpV#thM%v9U(pA1w4+rX67 zFBz!lvI^UV8EVBPZsOdBsCj#tfiJmrP{PdCI=Jglt*cF4>6lhxM{Om7pSqz{LlPMR z33j_Z=>(o&H|9X}47>4W1}cKx(5R?(;{XOKLM73t!geFEYicP2b~4+MhHL6@sW~ZF z4`yMX%8(kpu&LIgpMi>CJ(#kpFi_ED6}BF&OnthHfh@V*P-4v1ZtN1h%F=EBO>41D z-~%_5vJ&VGvJSU0#7D3WH$wCb>+lH%DuQ*;sHoQA^9)pkN}y4NtwW-jPv2lbPG%XB z&wTot)R`3Q0<)NZ&X5_sn5lN*IR+|%U0}-U&kR&_Ss8W#wqn5z+*I)dHEi4LMW?;V z?Sc|xwsv99*ga@mxtQi*p7EUiLqZc#PR9whFMKBdiS#4sVqRT35DyE5jxo|tD z9-*e~CI+_T#zF})b7K*+Bbh6hNMjND&JF7si|~6S(fb(^B^ZnQAbN(ec!Yt9U@SB$ zsAz=2RBrF^hR$hRo>2Of?e+Gf)xC1XEV;V4$MQif$%O zV&F<{CX^7fH4{5Wo^Rzg`lf-H8w~FTQ?>!WLS|ttLw*Fa&!i-4(0gDO^Jf?`qZc#PEPR=PieMI)viesBD!Qz~W}!W_ zg)IDy8nquYP$f4CN`%=Og#|62Zs=M7(@^YciNpOuk5$-0AxXc$kTk)3JOj})%*X2t zR0Q*(QBlpuw)@a2I-#y;REGJ0vqHU+ZL-y@2#Sh#ZwBOq=0jjewAJh$fH{?31+$os zV91PK%vAGnJOdTMd@yD8w+vKtS%uBVoDS~{Sg&TtJ!gY2P(A2l;7o2%lu)xZDD!P+ z;JT7A?Z@_^Pu!5oZWwQoAU84uNw60eK=cfIaTNmP!mV4Q4Taogp)NF;nfu_ZX-M_JS#^pD|F;Wfis;&AJ=UGEgPA z4oZaCT8CYt&p~%veA70}_C9dKD60^7j_kqAed(N-U=OB3^bC8jGXoXD9%xild$2D9 z6+!tms<1ssxJ%&QFhD1>2r29mc(7EP6ifoMq~FaD8oi{cCgB_gDuPL1%4!`06fL5VU|)4+?& zxp_rfn|m7g=!x!W;G^bQ^3HYQ*@tJfwXJA}=K5CnE^xNFzY*ze5aQxSr}Gi`J*VN^ zp?<6lMy*g8D1zr;Wq!EaKQ>gXE*>miSg0(9zluZE#iilGKygW}ctLG(Z?RO%SIWJ` zO09tY$oqlvedUq0rGZ9$dZoCw)ZcJECXQd80e|$D`x?%^)7skf$>+BKes%JBL|%Jj zK6}P`4WX`s_zF5xozAC3B=^Ck7lU}p}~tl!Vie# zM2?)#iMu62b;X}oG@LE&E1kXNq9|_#*$0bF<#$*_aEo}=v9q+iUxaU?iW2e%p#pE} zi;gZ-i`DL2_vnUhdALdUnoCsfl-#RbCy8P^Mi#;vmtJ(L+BZ{wj7K&Oi>ZI%-EQmq z(-L+bo`di^M~TEPR~jiD&D#X;Ii1APN#1^l=qa;4GnSP_aZ5wMzm_^VtNPw zs#19eq-P&3iL5?It?RR;k`EV3BMs*yh^#&n9taOHR0f4adgqE4j1HChO0~vj8Q}av zWu&p$*?%SAkowdi?xc=Ax*9UGo3(fwIt!~H&r;LsPc1Hw))o(ztF>Z(ty~`JEA$N( z7oWVLHdr26d`Q<3T?Ze&_<}>(XrXT%RP5e)W5D{i+!Nk6{Xn?-3+Rd6B-=RQp7ZTT5^9U>Y%Knd7*5oX;pE)O*{zJ z(d$k?n#^i$XBJ05CdF#w9B7`GLIY7huh8G0@2ixn)x38;cCIsZdF3GTN~w3OR$S1i z7gLYED@UbYVO3`~Qy>k=@B+%A*67F=4!*A+uLCO%Bx^84ToqXuq z9iyta5~+3L-%JBm&!s@zOpcoeF@Om=2U;wW1Hzk_DGttSN7W`n)Z& z_l^AbNtboxzDHrWrtD<*c2m z3p3keZI(XF;8V_ykXvW2Ssh+BB7qXej%;0Fsn|7&zTpP$(=5!#nwZc<5bYjP4Ko*bOQZO zQ|?~lVJT(`fnEyHGYE7K0~LV=XjJh8T1ysHinAHGk}>EO_RwmHLaQtr_$hxHIWgF$a%pdv76jf%>kZ(^XL%Stk6S*WOf2+TI4FhYKm}E7aeq`;8BuDSh@#X1Bxz9Ue-inS zl=`2=out(AZc zHTxe_L9jc(!i|zp;Qum{tG~R}@Lya)b|Mj&)r{`Gq~>O7^nzlTce8Sx>26puP|^WW4md2c2$-QKEUI<5%tr# zLx{$zrqg=LBMBx)JkF3iK_7ks(K9ITZy2ZulvksoQrP|;z1g^y8w&-(|7if}jSA4OBkGVwa-A$cV+_L==k+AW4J8 z{+Gyy^yB`wxRWea-c2eNTN|hp`b#h;HV-Qj`__$?Vc1nH4$OF|+hF>>+~|yC$!zz- z{#*+HE63d>{sYB!ZGjN)eHm4$%;zt>U?x|8eXH^9+DgqzFcPkOo7HJIUbaaC1ZzGG zqGwRxT^Ohc)?A~Cr@#>_-}Ym`O2&axTKT3jY>)&V367|s&Qu{8tBy`Tt}s+h;N3l% zA$Nj0EQ9D7MEGO|DnixKsHjBvTm~w-tRxZE#fprDK%FreZmNHVp8p0+%7l~Q7VWvD z#T!A21}(N3YnLEj3?CT;IZ!bbL4FpQ*Ng}LSHRwQhav$q}T_aB@v#FiEtoMEBT#c22zAK_yVz$||GUBf|5yf8vNYdc1?+^+t`RhByo#e0bZc_2r^Ry`+&y5>0*vKp*7g;je z&_-rasavV-jxnJX$Bhhu8nZKm#*H7@{aZ7+t!N{&$nvt1ilozZhfG6GNqo(X7zAdUp%^dSGtxO3KutL7ZN-F3`uj6LYtY|F6YcWg zpTidh4-QmE#e-L&qREH{<3tn>4j@T`2frZlA$jm`#hv8A@@`V`;F7lT;yjS79l7UZ z=ExQ3v*f+IMS5~&s#dYYbF$St&*<3Kf|KfjMJF+f?@q z9iIZACY;g68E464Zvd1AlSM|@Ww0NDkOqSdR6oUFr=g)s3PV5vEBQ)cWFT`M3sZvOz@cR4^WgJAx{N$z$!7P)Y}QQM z%4z3W!zyMQ@g6l|kD!_(mAV-nO2Tg+GLx(SVXNV{5oKj35s6stcT71qD^|+L>thf- zgXKQXKt(Xu8Wol0{)U0-jlgnMb`1u=W4RF()A^PVj8#FW9n^JDf)#0V4z#l;OUIhB z#oP>to>x_ABQ|&Xfd<*F2|7Y*b1LP{I z#sBOHA%sm9S+q4sCYVe%2r>f79=3>K3j~<-%ycqcndu&;dmsUVAP9-H8etF+L6C>C zDCpCt0`AN2r-Cc`dn!)^)UP661w?j~-#Mr1F6Y**+g;W7_GB_|{;0mw_jc8(Q>W^D zs%|YK&bjs7Hqq{ppg@gwV;r-`yhp+F8uNxKqh#JMvt}zJ=H-b<<_$@b2J@bZ=0(hV z8eS3e($#2V-fCg6ztB_6R||BObJkT4jA&I;%mbEsuG%=AD@L1&}q4d81Ez%=;oduQ6|^GD_y{WyO*a^YTO_^M)iz zgL$XU1@j{2orYJ$ymXZ<^Ikh?92{T;e|Wh2WpFB+e?qRs8Fe-N4C3A*oVO-VSI(Mx zGgx{S2%jbHM&`DM67_+nGji1Ibp0U-xZxYD*?J3FQ|rifZ#}s&wDc@oI%Z<%f>YFk zm%+A7yT7jCG?{h*MDM_~hdW4R;hU9I$xIuwr@~1NVl@Y~Deb8sGpzZ0H>!=Plwv+= z#%!a_ohDpzP`iaS2#DT+YA6x!q-T4jA&I=h2V zBTlsm-kEUr4iHkq*{~b-IQC9>P~+H8^^+XC2P=q-IF=_OIW{Co8XS8c=7Tu)e!L=% zrK@Z?Hf4P6>&vf)nF^)yV1H*}pprGhu1bHh0?$B}7`qprsSrunh_W-|ACx#7y~*0F zhgnt0e1gJH_2g1qL%(CY5-N-hkZi>gT$joNCurP0769cw62gO?$#9k1+1KPGbNM(Vx zN-A5lJ=j4idtDLQPL{>W`~*s!G27O)Kh4g61lBp?Y+J`=6W^W*+SB+p>X$vnT?r3s zj2o(ml5rnmjcG=V%M+1|8F@qq%7e*Xs&T6OD%uLWu5|M zHhGFx*`AipMIh9OBXOhtoY;6qdkh;JeYFS4+rh6iNDfs?3CS0;BFYGoc_I>$Lz1Kc z$$LX?B_zKIuLzRqYE(gTS1I40`C7Hp(kEgRJ4^iCiQ_LNXJp+;;oA~y8eeWSC5A19e8zxgH#rdS4mZeS5dFb>Q_5R)g-T? z3{7v3E3>QlayMR$sf*$$RE*I;cb(l;C{{ZM%Uy-RYTlb_HrpLxFLx*h3+uQ9qIW>p zs~x1WKv*S}EyCX7AeFtY2w_d-%<2$k!{j+yWuaO+?I6^MQ*Er9CWQS4h^GzjO0Vqk z>NnvLjaNg}Qu68oru>X}l_w&3H6%$Iy!unj2My}}46le+>1tH*>ba$%{?2^03a6ss zsBUi|-;?=(ZU$TC#^fSPnvLwY7niybZg)<2TC#5J6RZJylGUNiXEgjtPi_otnHyVP zM$l+(UNmYl0aWe~633hjos!0+?8JZ?xnO)8Q zyOD5A)f6wH5g841LNl`&mN@9#!V(ri^bXW}q=Qrz)T^YjrQYQZQrYW@s29tW)eRIm zW5TU#d76bk26j2(gxiSgCg2?a6>7j6>zY0OJr{nV@o%UyO8$LnfksV9)w2kDuqw!hEy)pM$ zqjn?OS?dOTuhWwoLz^zdl$8-Fnq%I3bUmlZymvwL4$S*C2dON)x01@1d4J>})t11# zGP@cPxG`@`#T0j$_|s-nT;GX~Y}jls(>^1)zscZXTAWW>8X5y`tD zNz&lm#c0~ZyZhr6@h)ABD&7?X`JT>dc`cmsTkOetnc6w&&r=ACpC#q)!RITmWQ~A3 zBknQDw)_^u+7r>7T8FjA>dDofA2ah9cnKMSp*f;mrK>niqCE?ucOcr5gH#qAqolGW z+KU{d+7gIXW>@p~ZbTbXC&fxsjL|^HFLa-}@Nox~TNuK}AbJO&y~9B&3!qg}*#hmC z9i+0?6#*?2Df0^`vB@vA%I>sujs&4boM#iAGokD+K}-#0xexXz_E+$zMzNvFCn@%5 zRu~ykEKfvIY)FzcDE3d752D!rgI7ecbTz6dc1T}_)>&OYkom;h43?r9a*`$6My9Tt zBrsy`ZgqYkiP!iPYvf*M^(yn346o|Rjjg3<#-cNl#>A$k_U^RM?8Hn{2Q0k$Oo-kA zg>w#4S$K6NRUH)8ruMcwNYx|?r!uuyW>-T6Hx!Pkp<+8!jL|@+&(3#M%6&uC!fbaY zKEXlv78bD-qIY28GaaO|s69$5TPE&xkjh?H#KhsUWqt!i&lryDTB2t0FMxL$aX4<& zyAvm00czAZ+32}FWWEx9r6F^ul1gNLiTT=$keMeUkvSwu8pwPdni?VV^>{_dOjn}{ znfsBCJI^b3=et^RwnRStvEN7zvP9&)`S5QvWg{AIZ+KE7v38d=XS=k(-i zFO8XTV6B{tc+uQY@b`2rr#Te-Er{NMe}Ca1m4ydaQq|#KZ9?y34pKGAzo|^R-ns-^fQD#mD_%?t(q+d<_PhVTkR?|{8C7FoB1Hb)OCscf-#4+p92brm}lj1rq% zL#ymgOXm&{YQ$-`o}(tpeFv1BM!A|Z_UQH?cv_>|P!*JPdlxH`jOdmpBI!0HNg8x} zELt_u?QwWTbW2yGif-2oRSKQmd6-+9^_+&4>2s|wdzM7I8z`ZE=pE4YatEm_ys(lg8C_!z zj=0)EtmfD?rGq16hBfEz2Cp%7Qk;vLG23W!2St8`e4PHY&*u&PR;5iLjLzPcr z>shQAGQw7#h{V>ABxzvltC$bM*4OZgu$8Vx6}I-aZag-FQ_lk7vjo@3xhkPVeX{9{ zo_eM~B++$x=mulgT^5^LC&O#%HnA3x6@3sCM4T%ZXHJLvDT6@nQInj3a)(-oX1yY2(gJFx2#2dOMPu#zg7T}iLZ_K$RsD$d?(+YA;~_mund z#nP~t4EsCRrotCE&_3LIA>FLz2iFu}2L+O$>3tMrb~T^wMy@e6Qp`fd7|C_={)-kY zSl~Y6pvyt+7RGQ6MDKvE0}fJIpsSL~7F{oPkjh?Hgs!SsSq(v{GiKMi_NUqT3=nF> z*)_pA6TE%`gw)_Q?1epgy$K%F=rvRUrQe*%3L+zV<%vjo4M~y)y?ze!LG*eLUJivs&z*oiB zd{xj@8micD7m)J?ATHnei_J^Njhl1naLVVuopn^HyWCS4Jfd7$U0joEqfF!)4%z;>&u!vpey6rQOQ~&6;3FSCgDJnZXyw7Ps)cpc zj@)e0*z7~+<__*DRJvh`%9_r~K)$=sk@FwP%|7(dvxCTFb1lt_HP^pFLo#K<*7f`@ zAu>bHz-C1=%4%#;8tYd40+cG7$Dix6*8Z{;4~a878}=I{aYDo(k4&Tbc!no?lIcXr z%=RC8>G{o;!P45q3hYy!0YQ8NtMx&T$LFaJ8e=TtSrox**G05jy_c*ShfpN@0IowvDl;sU**;IHfi2d)sOiKy?rqgCPx$LhS&DBOIX|w z14kkG#R5z$T;;Y6$;;(hlpvR}!gcQsJ$6F2X#?x$Nw*r`sHkGP4~Ms?DQSoFhPn(f z$2u`?)@+AMhgn-2KtKK#p>`Tdf@#0U}<=h*!KjGgY0QGUXhJ`=M>1y z8;!*~tg^5i@=Sa<_S~c_IkaFq{7{;^6Ka?28ZAR(lRiVnISaq=YX#KNY>@kcVAtXS z*w($$*)v!kC=XRT@xOFtfiQoUgY*WAU9ijqfV`9jQLyOSld=;_>s-%~ZcgL0zMq8{ z#u4|u5~XL&R`R0^90ao@oWW7F#mQEh-jttXE&_JxMSv8@Azh42dYmq)vExBd%MoPa5Kh;1vq$KHt zyHRUlC;Sx@Qt_;JUNbr-6VT+2?eK84Tc7JA`%Bek{H244GnJNdsOrA;14h# zG*bFQyrPj(x=LeskUVHBh6e}oL+grt#r)v<&hFlPsRX^ltO=zj147X)sw5eI(D!lrf9teUudwg=zt|&VYUfd z2l~9O=rm#DS%}^NHYOerZmb)!HkN-A4j?dTwt1#Bp(By3=zvI>ZI1OLTUqCr4{ z&q{!em`W#}!DKz#)6)43+#PY)XrNsr#F!7ory)jM!{>p;0{DRj79oX5uy}+OOu`6U zGho3Jkzf&$Bn_~5H(ED=#bJ0wU_n=-3M{H2PggE==c}E?(!fwPYq;pm6fQy;$r3R3 zF#<+d03&4V8n1fKH%ZViJ;d6&GtmHjR_AS92C#9Oo?Pwqu?QQin7u|{1CGf@=ld!J zuUPGoqhD8dn#fUv=pB&bLI8lp16hrZpaZ+@5E!6tY>># zIzNQFBaR%6wUI;|Z-x@oh{MnVdccu`-)O)QQi}wR2U+oC1ROjO2^=9w(g2PHXyXJN z3-OA8gRVvuaGV=BK0KZb=53vq`FoU94y!h~dp{Rh!p2+br*1@zontiac_j%Nu}?6} zI1Vk&hj!k?WiY&Pw4U5neOPq^rRz2H8e}xHb=cXup3_8(Gaz~g#8~Sfl?7rbscaEr zy@OO1;~GjTLX7As5_r#4`!vVz1{g6lPOQLWJ-gG=ISlTOIAAo=E)rf`2hwVI5!>#0 zaB)5SLW7HtN+etyfjaUV#*E;CCnDh@BuN@@aR=su;NniaBDkQdQ3V%$IDfQrAYbk6 z9L!f!+DD8v&TIzhs`Q63cm}dWioICA+9L@YX<}ylgAyd7HyJ~GhgFr#8R8pyaEU+GFt6Ci#L(K`Ud9~`8z00FBC^bl?AJaE_n9@fAiqzDNP z53mBs2po7K5*$L3qyY{&$gKp2x8N0l16_?OaOmwV_VmDcs`>8B-+iRAi4*tTf$&)Z z!|ujJjj%91B$;|hf18tOh{<`2obIXA+-U9a5LxO!A5vc!-J3lBpxhAjri?gMtHyzk$4c2 zBn>>c9`ixt3OC>t;Q?KZDm*w>`7!KOwQ6~41}`mQa*-u4LUPBhXs5?8zq(rR20+d6uH zG435PfDuxO1dO{`(PRV|JP`>PAxY8zj2$4i5-@heD*_C<8dZQ%RLy6lctPfGEzVB= ztwl)sEP>*UvE5hHSEhyBo!eE8An-&aAcQ1I0}wW1K4=7D6J8M@(AB5{gkIWXFvU}UnJZpO?)1cHKM@{aCgMf zAfeqOGI$z<)W{&*@_AtJ3_PfTK}Z1-3~oe?WDN#95eWt%Nzwp=aR)&@2n@#K6@dX= zjVdrG7fZ!zG2aKB;6a%5SXz_$_yHWydO?1$U2c%vPE9mzklY^LAesH6Z;;G4vTxV& zkR>L(nW0Zi+D2N~QJ0gAD8$@nP1qi2XMWA$O;`rw3cKpb)m|Ah;|eilwohC!ff#@9=;++msSuli>%9bIHb&$$}A(T|a5VBNR4aD1~8kiD9#MC;` zhRJ%?r=_za+#PX5X z8c4AY^Fc_l9tISv6;D|(+b zXjikElQ~j+SWj+DAw{$-{6<|zip2{KYyv56*A<;6QrrsBJ0Qgu9i*~A3MG{-QheJ% zDhs4gQc0wsQe`y|ZwJ1M*FeqHyNyf4)H-nsCTm2BO>lS1Lkg|-5K{aeWQ{|L=+hoj zJO&%go((e zuLc2(P_b+B4n$K!ZK z;6YcT3Ou?>`Too?tq4YCdcmFi$H8REl{1vTS4ynC`R;eS?=+r2Z~gf&!>HV0vC1JMHv*t*?4 z9i*~wyGp9adEvnUjnW^ZUYV}uI7oG?Jmc{;`Efgau*0|UxZB|H?cNLNrgzN!M3jLJ z;;sx7x{Ire-Ea{1HgKFeOy?TvgLPDR2zL!m50~ew%LD9{-=dSY>9BB_UCoob5kpK} z6w^>KMg!e-c6h2;XQ9*$r@jx)_UzJri;`m;%E7`qj)3SL0QOV|sVo3iN_FkHabPd- zXI-Vb9mKO&8r2+AfwRhl`3cyGH$1H}RV|%o!O@I3+{XHALfK0}XBx^%_w0e|`{5A{ zTtoF!g6nh4p@OkzaaJu)M1pHbk~F~eYBVAO*K6>Kz?H5>6}X;@o012|x%U?GJ(<6A z%V58fm|SFuwUIUXaj6?AcjttsB`3u`!5Xm7qQ&{0Ki+_4z`%Ft$&I1?N@B~)NE{QI zc@y_dUD0U{k39gY6L?bOD@x;p@t;Q3vEuV)MufQ)fya=g8;>GQ#Bfn|P2rqad5-&oM zq=6UH4~BdYUTlk3gco!*s_;T!>?nRCTC8H|sG#Lp5a_K1v=g_AXs#Eh_V zy)Lap2!4yTUHhOp`4uE{cF5_;)t(7r^yV9A$kX9 zILbjP3uaJK*)qe)4pLb#gOZAv0g9AWJG^JAcA6`9Lxz~DCKh3`p51Bb>A92pYZ zK4OJ)K}?MmcoXMA!XP}VK|)9g5)$@Ct@v$VMv%Z0k&qCQBn?P-KjwoV;WE4;NT91x z1qo&JV`_6JnvakAXXh8>O1N^pp|&ziAMu$q%OJzTFRH-=Ub z#gvuTlxqml)VRaFx|-8uh`S+r2Zs2%gH#p_p`@~9hzA{{vS0`$Rs6UE-VFQ}uYHF|Jg?zINF5R%~$}vAd8tNMx`>YDoGl5hAinU^rDHJZu~D zl*9&hhXKPI4hh!{-ehI)s$vH{xiPduDk~qa!PZb=yOoRQ<_?&fJ8*7p;li`sM;>PD zx=xcCW(+nA@+SVH&?V}nVDhU*4zq%vTGae8uNXe=RI3Vsueh3A}V!UBt%%KgH{!=E&WE zA*TL`oiJG=FuV$`X2gLZsWl{GcrWBZBL>zUddRRGp45;bqymWy|7ry?@I)jsgd|A= z8M?4+2^qTaijaY>Minxws}%b4rE0Oev#(sKbQagZR%W;vNl#&2t}XQ$itId=zSN^{ zH)keGplIXMArpi!^2HwYe-chTP;Jl?8?Fhog37(#{0>LT7X)y0(P zBc}d|4`Q;O?P=*$;O>aihegv#F!DnXT7!|KHqm2~AHfebHVG+6vdIu?%x^To__J8; z$rF)m5|ShhHu){)gV^K|ydpNCt5L-!7Y|hmo%yaxxo-&eYab|A;6Rvisk6}ERp{v{ zmeyoG#xa;aq14M#mYfnfoTjcQMq0@=`cug)^&e-g^%$!`F(UV)T%~&Fr`i1HF z5RG3ZAD!>3gbpdT^~zJ<6>e`EDr#Zjl_x^<4g|A{gH#p-qolIc)hq|8>~%#1ql%T) zN|ZWqjl8Hdws0FkiK&TV0w(L(pO(&3P1Ju$Ett<8w^MmU$5?tY zA{ds5ESV+8$5wO=2Hoe*$cA1!nID#1688XW^ZL-({O$m6^D-Di>D7~~y*g$FP~u9< zYxp(rm~_hEP!rtoK3&skj+|Tw(K~R*ha9A`;0`5~EqC1LAe9AoD5;1$WT~<$h__8u zP{RQ??1-s$;sQ+8vpy}IZn!(**wH}CNT6{a2&;icT+`>F#r^OD4J|?nk!Vps4f$dM3Z9?WnIr{a>QDQ-hm@FI7nqN7NMlF<%p{s zq_W@$C6#F`0&kltpyuA)Fe0YX34zIa)~BU>a?;jHufp5=h($qG}+aH+mjQ+y#$o zC=pVIM2S;TJASK}5lZkxBua!NNdqPB$9xbsn6}Mg9QMJD|w(4pLd5h?2?{MJ65=_B#z#2%D)ZN-E=!2Hp?c9#39l1UD9m zse|GPOxCkMEu9D9?ufI9Me|8i@)jsajY^W*MUPM33P05NB%~n8CqHHdl@XutL?oYt zBuRr$7NNZppDe~J;uE?WRebV3Y*#D2`N2ZZ2w_Sko3W3?JY`8M^Yy`yWLb>R@|L<~ z!-q>6c%C85323)|Pk}d?8H}GS)stH>eXPwZtz!zFCrO=TI(6lzNir)TdIyr}caX}0 zWRz64By*vIR2G9ON-87C;C)lI)Cj|kWMZnKI1`ig>`zPQ2)H}qBxB#S642ZLvTH!o zKx64~&Bx*Q8rOu>CAsD()Sus)X2dl-5y>?nNz&k&yD%TbHFx6`aSdIKDz520uiTyQ z8m$|G1;S@ZDv_;mLWvrYWV-&495)HyV36@WRxL7zjBn}5jiC*}!lmOil#jzBp!z79Z2F&4pLc=gp$gZB%X7S%7P@6RPyx&=q2(iD*zxcfVhA^J9vbWf4{B%-Qh-E*ud{;42n~25 z5)DFs&S;r3_O{xD zf%U_+$=!YVN@chp;!ff2{fk)Ot74(A3c5-|75nW1a^3(3e)|op*t~SyxH*>&Zy0V9 zm%)wT!0{X5Km7J4_=Fvt5>!;1S}0Wqi-pSY+3@_qusEdFc}$^H7=(9I<zq#6$}F zaP<{RYpT7S1BFt)ue!b?x4N&K$MhDpLyG$29K+KMLbH&)+Sa!R>c_*#QPM@UXI7-$(6;}i&%{!c&?FW6t}PO?44tgy>lbk`|}uSl08Fi6X!=XuuH54g6B6xo}UqZ-g`{e4}Oao!d3Q$ zAT~kD`PddwwSyPI1JbUqgy`eCdL3NA@g01x;~N~Lvgqn5scaq4XB?!m=;|q{qUAaf zaKzWv$-6VR?L&?%XL^(s?|lv;$Kh~oo58~Bo^pS_SQ-|S;f+phDtu90KTsI%y^wAK zBCRP@hifE5ZCkio87OoYR~Ng7H`TToSl`iK?iuQX^{X%J4jr#)@P*`sWy)rjL(Zhl z{1@4bp^4jstX{E#ERMv53q`AtE;CS zq_Wr5>D=mT;}=A9wSepDUk*}TXVg_~=gQE)KpA=fm44_4oI6ymLI-P;vfF;B3}F@8 z^k_98IL~i5FM}*V!x?o7Z?4lN@$}LrqRq&z@xSzbAR7?VL(CF)J;Dt2Db(7XAbJOv zv5$jP7A`|cWm`WMIY?zuKa^C_vTn*{9O)qPNV|-8lg*@Oe741Wj)TtZi`mv?^f^dn z;W8Yn#03sg+3U*IWo&eis(F_oRhX^I*fU{}%4_{~cQKRy%6m|{iRew{9&UBeq(zV7 zCWzj_J>2Ucm4$myQrWf}Uw4qoqAn<@qV8c54paIin%t$3&$0skse{nXIS464Q=N(j z$!t>a5RN7Nq=VAzOWM{$yyzg6g@nC=JeP7`<6S{|(5q{o#OzMr_VvWaK2mM)ihc<}b!8>#~NM+$2lvK9fVX1>u7WF_$ z74;5Hbso-i5V<+u(ENDQX=F1gxCX~!t~%(`SMZB8x%Z$RW<~rb2eF%T5lV`t`VWtj<)q*w z91Ht(2d&u`wyl%c?kIaww{Q}Uy4ur0Dtlc;oy0_#z~fg7dWA#ZFx#KwAX)Q{LaH%a zNAZTZnMv z7mm7G=pdE7uA=T@{9@kD!T+pLdzXV$%{vRJ!fc(zPWl=KPZhd{*v5a@dq%p2(DzJj zD;(5j;R{ZI=pB5)Y6qz-e1Ve6))!PAq_Qx4B~_}v;0gzkN7@&>pKK-tU*K5Gw>ap` zzL;%&!95OAS@;4+U46|#DtldNz97dFu zPQfiQaUJXp;4RD;@Yhn*UtD0F$2FZ^-zM&Y2ttKid*k8xN&(i)cX(^jI#!jtM4`L7%By5;k|L(62YFrF zm{8Y5{90wD z`TIaNsp!p+p4mCYx=v=PYz5)X5LvK-(A$ZFUeFiT4fGYei&a=Ph)WF5&kvS{H;H{u z06EA+X5$r^&38_L%y_y9uOdWC8I!B+Wl5o7+HGW@ly@iAFsf#sN8^%9&t;q+z%Rnp zZ1YlPw828urZy|-53gZP=R}_9GWlG-3Ol594OI)UbxA&ry$GTyw1+bhyN?Oirt>}~ zdnc!C+~JKc2WL$Uzr{LC4>1$qLK_>Lwb*hyZ5i+bJ-OOTV`v8rZbiX95YdfW!f)N% z#D_uOVIKzz>sk3m7ux?`*RqcbhC;PDI`0vP9(=NGfAen+Qdz*Yk}Be(gC^GjZ4FBr=d2-X3L*lAo{pLnmSAIXFEt`F-W7NvaK`+I7nqtX_QoQZ-U5rd%PFW z0WYRj*`1cocfl%0rgJ0l6#F-|dM=u}J|~0vYWjvfHSUbP{RmHir&S#f`bD8CD1q(! ztg%Yy7m3D!O{E%az{eAza_5bKRw!%(zHNLIGjGDzgQi7W6&LV|_9LXLG&bQQ4r|3G zeCNk+zR&`~U7HEv#%Cu>)}5`fu0aMP^_up!V0>hHh=IVxXo-Gjh&OizXlfJgBz%FM z+=>ZX_n`_67q*c)n#1Cc>MBnYi$4U>J7DoA9i+1G@JcFMEdHE>R9gZT%j_CFRP63% z30NFcM@0=4V>Hlau=qg-m0K9X{|nJOVDWDpq_V(bC6z4}|Jgw*dtJq1F-mOm6Rom4 zEuA3{YQ(X)ac@q5Jo(soKsI@650$6D?=(~nRZEG==d)tU2$gvv5|u-e7{_bXUe%4D z@~)6uiORd-6`?X+jVe?w^NnX(fXLmMATrNJmT3HDjg}&58<9A=j}JrP=uL*e3(&$^ zhro07srNQ86i5jtj?d@Yf9(;tZ=rqCiT@bwk_`cUcDhnU3q)G+AZX?1mbyFOQnlalb?vL-im#`lc-r%5i3u{;p(L2!ZRSr^F(65rp zmVR$=kjh?HM87ecC85wJFVQON)6$s@LX9{8*Z0{3zFz@Z<3@&~zS#rbufp>h@P;a* z1l~EUSTX`$o`?kAkR)jU?+-8^G&cN0ydvPGt5F5K{o#GIT7bLR%y|fBB1_oSU#PH@ zji}4FBx9heaeV~=YEJgsqUs0vE1eS|ga8F4L7L~?CNk~FyX0yHh++6(cDxR$O)71x&eK7TDB z+iV7Mc{Z|STfI{lN!v)b?i(%+qlL9@Aa}E#+}Ik(jh3hpA^1Lv_9MBU(KVeW<=zI- zJ5cU_IY?#Uu$5HFlpD7x<#!$AYL0Uo*p#v%(v?}(NWhJBW2&e46spE(rr})=?OFG6 z2en(6!|xz^2iASsK`IN@RZ`iq?!O$Qvey-{uD)?4%4~8It+G8WovT2o5vSeyPMdgl z&*S5HH|n`P;@u0L*N8V%6(#Y0h!sml#LE+r#2b<%4dR^(xs}8_53h)L>1tFF@7iEf z(-zQfXC~7Yf-Gc7x_fF<7DDM7DL1?~EE~ZM-(bU6N24{hj&2XvldHWjmZm9$OVNxB zp#x3rx%LcQ$7yoysSv#b*RFAp%ECD-sgk)?AH5xNkg7SVO=t90W>@p~ZcH0fDa9$M z7^8uPc5Sss+G`wiZea-@f#@BO_Era}ERa@7Ws9`;I!I-&D?(ar<6RWl|lqCBuRva0TEKfv|Y)FzcNcK_82aVnS z98hn9d+oe&us{g@&K|Z{-&dPjD8b$caJcc=!)@YVSV~?Sirb921#nx;1a9Lp zlO^W9O~c$+35>uSzt1&8-}pxu1i!?pR_2o!{;4Oo0zqIUq|lO3e8s5D9{TOiImNM)}pIiDf2w>V0iF%Q?ZJI%hI246DbJlv=k zCo+B?s48hoS z+$}md>pp)QD4UqFW}ET?oY%hq56b?D6X&cvR!pQ00^SdK)W@jQEu&BKb8W zNgDimINCGu>k)WG{7P4&ieLM~$7ZwuVY69x7S2SL6su2aXDR!BBnq0npI}q(x9Hg=sr&Utf>gxLrQrYWD5^dy& z7nIoK8d_y{S~@3#P$N#X^;|ST?H@qWIH={$*yGwi!qXbphN__C+EZDPWW=>R5y`b7 zNz&lje_}p}YoEs};##`OhHEt|N@yijAp~0w^K)OMI#%OZFkaheh+XZcHaY3+lit6G z3ClcHOvEcv1zn|~iv4zhDA~5dQDNJ}Qh26z9F6+UlcxvG3l0XFho=Y4Q>O>afN zv#fY0en%xW!S+mYQ@sr_)Ul%vQ^|IdGmWi9;0?sV>8)oY77<>}%h+8PUmBLR^cpHWPLE-Hbei}ll zz|YYCci{i`FNNUW5Ya|)7yJ)dy&FDG++ntO9==>Ap2IZ$iNR;_@y}uK65V+LzkCsc zd+>+TdjGmf+>5tAkHG|xd!u+AZ;yjZ@dfyDlXwOG-z5GMpC2z?rGK8rN1nmpS^EDU z5N;H&;dSpl%b;2PB0RlJddAtGC(kt5wR9@cZ@1o; z1jDN7m9?I<>eqTGywgy_D=|1^R|pQr;42t>4TFWdL9hgayD|7Y25WbRU;u-`eIPg= zgMHox!5j?!KMWqhVB@|JdL`1`KY-V8??X*cF3K7Gx|g0^4AjlBfz zMu*!V2--aXmxu{k)reDT1_cG8O ziQj=&3~WsE&*J*(sKRl}d%d`RA7h*Qz5HDXa70V8qIN zi3sxh7{I~Iw+~jTs=)#R5sj;K`pH9Gl6op!ap4I|8f8 zkgYd^WyPA%KBgNHPsfmvL!K-mveb66Ayo52 z>7RE&c=oWe-&ydF?2iP6F;!}76~t`j-6P?L`Bg&ZVxqT^HM{N zYP{m`S@xfR2y6Su7Ui9}r1pBaHcLJ>FY&3~i(SDWsj|_J z$xq;q1vLR!vm5T^;=_^Z#RL z^_ACj4#3ELWp1w6v#2lMRp>ipS-Di0o9pV!m)0J#V2;L%;OBzyMO zzh<>~m-krL;x@4YG9b=?ApVSb?L4jH@pX-gS@(mlnPQe_tC(dnFQwyHpSd>v5H1}2&!k%AAk_tsMq+XG!vnIolvJnh z&ZU}!tuPl%e#K-fImmXMQMTI7m7#%w@?f>I(w`r!o;y^o!s2_t`On}OXg@5P4vQS^ zBJ&rzoXzbmY^w4Xs;+gA%EGFYR8gx6PI;92 zg8!MWZgY^Td3%z=rfN@ak%{ZzkZjN12mD5`zQ?%%eiu8kZ7~kF&0t}5H9xqfP#vxv z*eMCRqTVLJe}%rv{9vqkKEeS7j39?=lOdL3&#>4RO0qTu{(=7JFm>cqHNGB1HA0Q= zw>ACEfcU)bcbm8iBe@#_14-Qrw`%Qn^gG;pAwVl0Q%=GQnjiIZG)TcGw}<*y9d1U6^NzDqEea+X8-U+$yP*Tt8xHW@?LeKhiI#&nV znO8eYJInsn9F|gBp}$zEK;d?JB)O&ctzKbOrlAp%X8Kky=*iW-G3xqOtjxW+Co$ct z?II6e4rm20;;F+BxyL;7HYbJKu?7oeExNEi2n@~inbYC^N(fYoc8>4zVhTk}LlKOf ztUb(j?lGF)yV_Cvk@u|Dl}LD$loxZKDe%qq3bg5U?FrGR*6Z4hBGYRW8&?ZPl?0gP}423_&MfuGs0q?h{WQMBq?C=W>kgT zx&^NYi$982*N0vBy zfFR%R{>UPD7GG46A9tQTKvDef>;d=L1Ej#MdG>(#I99{!An<3q<2Rw%?s!j7*ApvI z!}9>}VXx7Rot224aoJ`iO{V` zVZQMGb$j?{g%$yM?ID{pP(O-sF;TFN!%xsosR{i7Ua@f!!|SbByHtIwU_SAKdc?Ie z)0{963>UU!y1@R8PZtOz8?G&Gc(Op~S8-DXV)W^=TSfy~M<20#*|KB%VcPnlQwr;< zxi(tImxCz-bxk*9b}&=moi@+6^HgKUvJ#ci_*{XtJgGLhh_54ev5mZHese_ZBg&=K z#Wizt`|Y>(d>Hnwgk~B%dOTxw(UT3YG58N^wnR1!i9s zI&%Iax!H#v3PUP#WTj0Gt*8Z-tYVLQueo9i+a=i35+XCT5*ACaQC1@_$2K?GE4N>O zQl%q#EvDgV&1{CC23t*)lXDqDKjv2Hxk+$6(K#xKlasY*J)@B}WBFTVTYKA^Lo;Kj zF(oSYLJ|Doy67~InNbyn2O^_4S=Qd}k~Q~{$og4}PWM=uVI$>Ph(46LmzOG6tZe0i zpG7B+Op!nH9*~yjeaZBGn7!U@1~3nS=%E7H?)Lp22dOMJ#86V%w#H{WNM+F)E2*Mo z`G%yT7s-3h#Q&BVK-nQvanpTj_@=q1+@CL&hQ(x<)lr*@ub$Tr6yOys-Sl2VFHOtK z4=0?UUYl!^%5ZHO%z~5KB`i}&y&UGwNYA#GjM(IFEoODd5{{1dI8Jdnh@{en^QU>_ z<5m7P5gjp~u-|^(P1!Qw7tAPz9gMBx0> zty9M;-bbP-JnbjqM4nY%y-}T$sp_}9X8#iNU>J9ZI+NPltkMc{-icF3Q5oVjG@tO)te@i-zJWt+i`J>7hvi^t!ce7}L$Jc} zy+U7Zb$Kw?-J2iGcUKF8xxT`A@ZEckSf1;G`qz^ymvYtKLasbmTvIIN`(RUnfx=+B zSKp)$O)pyJ=_W1@XQ%0LLSJ!Pkrinrp3O9~le^3P14GpU%($vla0w5qv7zdM@6@zG z01olF{zA34+yg^&RxlhH>uL{66gytWRl}`EG(KK;ESH|8i;I1VRq#<4SIdLlz3rzI zN|o~9+#Id?iGCd#jf)N)%wU;eZiC-q)nm4O^=M|5$Sgg%+7DXt{wHK#_Um;*KTasg z(12HT@MEq`A$#qjKAJJpi$)qr@SxTckPmtfsPPN+B{P6S^%C)^(SQ#&;};zey~Fs$ z2@XHTCzDb!M_<5X*@TV#guqZo`4 z2Vm*>FLt)D@uS+FN!-Fa=-R+iOm2Nd(A4@SP(#K8OS0EbOOl>JrPGq6m*A=veM1K8 zl0tosVYOj%ZSMqS#Ld$T6|L-d=P=oDAGz@nsg5J0L^II;f^+@G^bc1)1NmlcPw7zs?-b4Rm-q-7>ycu^~I|MZLm2fOSU#e#^F7na9DlG zRJR~q)jj8{ZZ1R&nxd62lXFj8a!rn79NrJw4PMpcuijiQ`z#|#@o6n{0^^3OE)DX| zp^P}x{wkEXG^2f`E*dt0-R0}eN)Bw`6k2erjKC{Uy~L-gpLkD575d*YRh^NbdWU=l zWqzv6r?JfOesY;_$Fs}CPWp9ICA^%(cF1|OgdL=r!nxK`cZ68 zQCPIrQ~25+L^U13jZFBpz!;x$FP5+=)c z3(k56H=jHo`3b2isH>oAz1;SKMSoZF~|CTiae?$xMJ3!pX4RyGg*9MR2 z$<@9)nqM3Es`dvAqHhd#jW0j1oz~wC%n1L$drVue9sd-;3%|vR`&C{4emyo6x6Mm} z7a@APDFxaz>R?sva}=32D4WW(uANV@HhW<)t!sOT9=Z?O&|<^Wy58a-pT#h-l+VVA z)h#Et$PB}BG0lYd2b!*5%eJ&(xm_b8QC_=HXGAV0qketVH2Mf=pmig1$Dj$)h}?VN zN*|H){fRdiw|l$_;>O`ZWhwiZzr(`y-4Ilr#>e5_akS(FSQSJg57pkm^3a-I8g!Gx zarshDZjd-1#vbq${oGuk+8vp-;vNlaU{80bxDAcLZB1TMmiZ}6RZ!+5GyK-a#At|s zViyFdp_iarSHy^^TNju+dIjU~TeMqu5ScIReeI2?odV;?gN1X4ii0o}OMMLuO~}-} zX2)Nh6&+if5suS`3yBTv7PIP0)74Qh=CT1I29+4cT=0I-F7U#UznasyQdpLfV%Az- zn-RAQC`%@oN~r5W{}(OC*b7WDzF;I|wNz~5b znJP2quv|~EyNY|mdoN-7ifapgyN~Z`;#z-;-!V;mJzY%%qbT=N`8g;vup(4uDpurB z9fDC5-pcbD>=1D$#NX!Z4nOj(rgR&s}qJ#rg=Z$?lJh9wE*KzHG3#S^=)PVXE6lX(17(JpxWQ}u>TcC#;Jn_-ikA^OyYO}1|$GDCMf#^}UM zREb|?TUvK~H$xjRT&F)ClT&kl{6(mXt?Q2;f(obp_)&1B_s4_w$?K56(V&F59(kxZ zW$)}|*3ek>$R9dJ`W)DlRZZ`wRVDepzMQJtGeyodd-a=m%D#yK;qij~gb z7prplDxCb&1uGA7l>*ExDCbTY94fR=#~wge0e)44z7UXKwYOOD5{9dx$`B;Io{laX zEcf+6->GYTZj~2txwHzFu?!M3VxrUwnq9%iVgC$<8T|Tk471Y~J{Mf)lZDd9&`@ zomdpvu4DU%Ubvsyjwy{Nb812|24|Jj-B{>vd4ckK{kRiTEhnA|$+Q*dQCN<5=l|L5|Fj(iKb$-sf?sW zGK`q|$3c6I_0Bk?l){Xz)5F6;IH%`CS|=D9ehTW+T)(l!mb3!%;Bxs2Hvae`7uwWt zR9=PDX9Ky7QQexZ(t|Oon;>GZZHt==hWCwaH<9Hbt}3Hefj3ZzsYN}-%vE8H`|G0R z$Qf5NYjeJmkR=BL4*W!t^sbE=O-uMV6_SH&!7QljWH~oH&uwq-RXkRT5Ek&4e7bpS zFEC|s1YfhF_;tEP5t#KaWp<52uXsP%tasEi%|uU%p{c_DIfOnDo2l_D6T z!}h$%A-YQ_ij1bbZGW2C1{~BMIIoH)N->n0 zuvj%Z2+>1tKwDv3=aj?C9i*~YVXLIF)z#GwQrYW@5HqHTS!Kfk1^cqb zR4{QaChOUymd=@Qw`C)|wYrTQjsAWfWYR}}wU$f`0*f!eFh(27%@l9d*8-)T;{3o-^P59zyA(ik-w*_QRVMXWka~> zdHZ9V^7i4e_$+<>UQu7q5;l7J$hf!nnvfcw$UWBZJi<($v#r5jG~?y}TTia`!%^+! zdGUB{sfhacNnPb~U*Og?2ioD?lV~=+gO7XtUDsP(w{GD;{|eDVvuEo-UvrSk!htHO zlDD>%ie)xE{q%5i-jGelzUN_E{3UK>D}_kdhPJWoVPu9iKb$cCF2Uc&R5kG=7MR&a z@r9yihi%r@(B`0a3v1X1qIW>gB@R+q)Ep(1ZOu8-K`MJ)QR_d6N|jX*6guD?UO`%A zeOfxd0NZRGZPszK#F|~8CY?1S-qa(_Zg^ND%}{-lr1?wMVrE2|JP}EnAxY98%?er& zk!BUIh&1VHRFURsI3c!kb*WRnv`7y%k81`sxlmcMW^@CYNXkaog#G)%dh=X{M3?AI z*7AG^t;O$Y@s=k8+}xxmSNqXu#?7eWjlO*5kuVW_Wu*!`a2{4#A3CtcmOO9KRhTAu zegdL*AkTXoq_XgzN~${Ki7Mup{xt`&;?_i1kS7VzG|Znq0(Ur-n+{zM&-k}S-)IlnXQdCmeR`Amtq_Wo)bzzMK&Daw2VPeZx z*{GJz($l+dg|6zK~H+OHj3?Dzjg?o*7~)fdMW$0S1=!xQNNZaBKx%=Nz&-o zegJKV`n6Z!74>WBYE<=WPw~15C7grW)By$lTc>8vC>Lo7?z*rS~h_n7pl z{1$6*K8ZHcy58)KdUB(Cb5gE!qo1D%grB=8cLEGLoPy`b`K73JSL(b)`A=PeY4&CB zf#@Cjvfpx$%EFNnv@+2;R%QA+82Umuorp8toZ#R&hO7S zNM%8Oj=K7{gH-mqN;cSOerv#5scbt>M>|MmuPf?2sbXc-1f@2CORMZpOXp)? zovrICC37NmlzKo*dPj-#pw~?*z_VI6DOBHNH|cuTa%R*`;)%#^Qb>|Cx=BN5Kh#Y+ z53i`3L|3D#n{@I(xl;A!m8Z5tNK+@dg(b?emvm%gmRUI6wqQkLr`kqnuG&Gav(jB2 zEL09TI^S0*By1uwBOD(`9Da+nN*_U6YF&5gDm}T;-JRk}_x*fyLy_4HmakWC`W~%2 z=`nZ@YrB3XJxl&6?g3^NpVrH%Zm-Q^H_%T(^mfaXv`JUNuB|syWZJH+JIf6iS@rQW zrk|&^9edh)PWBKY_n4x-k*%WcmwAhxB0j#(-2aChq_Ws-R!Ma_oCF*?bGSB{nkcS2 z^&QjMZylt&?znLPDzTm2ohw5F1LeVLXQdxD)i`&kTrE_FHz_daAMYJ1A%)fm$cFTz zHs=f zMp-@;jA{o%g&&IB{w7qkl2bRbT9Lr1`cdU4pCs4m$=we8eF#Il(Dn}X=S%Yj3;CXW zS08TaSsCi9!d5s(z&y!eE|0Pgc%lXbNrS2Y8RR#Qb>Z2v+Rg!Hjsz5 z0nH93@nj1M0)4b6N@Dz;!T`9h4C7Ly0n7zawS+!bYx+*rfgWE6IQpfCK|4x3Y{<+`2+ z);EIKj>X|UrznTtV;=iG=_)eV65@D>81yCwO=3>H!u!TXf_}BTQ41^wNfBxOCV>f5 zBM_{(UrIS}Xh(u=K#r11Xm}ftgTmW@6xLM-^Eo*5YN)?Zf)fBM1BLG5>S8x;R)$;R z^b`hR@3WpqDJB%MX-Iy;jU5yn?qp3=j8H&eWKebij1}oxfdcg*@uJrgBJg@7_m)@ zAKgCWC1r@&D8EkS?obGU z^Y5%BmO1+H4b~n^Txs2+HnUjyb+k<0E3ExL zqj~j6SmFLiPIP#9hiDOc?Yuq?96hQwy4`g2KB1KNB`euI>`T^Wi|Jh<`qajFccRF& zG2Q@A{rO4Jq0$Na?dK^|b~Eq`riVoidaxKQZI_~J<-|Abld?@wUo!dL?I54USiF?a z#&IQ##mjPXi_9=C8q*?(9Z@BIZQ9btMWef5hnj#oqoOf+HIItE0!?M>MnzYn%4t-z z1Xuc~XxM>xW1`vsap1G&3~O)hLxn0wkzQlIz-mPFy~jYOx0D;qpRZ0WnhS#?9yULkggR}v7KkXY%fDW6-u2TER!fBx+n-o(VkJDyA4D~N68M_b0-(%@ef|Z?>|PPrphOPhk#XYWzQ0HbJ1v2Dn9s{Dg5z-5_8a2 zU@E_p+A@xz;{9Y(S#GT}@@0uy!@OTRejL1xhrbQOZL+yblBFrD`z}r?G$@0};A@zi!qnjJm2mo7&|OX8Rr9?feH=-i9<8%d=<2bqxqd$x1UNIHFBNZ zz4=n9&^K4j3kd#STNs4zJ1fNt3UDAPtothV;Ke|`r>9t216N)7YIkpEsXW- zh{?{gszuyITmF`r)pfdd{TgSmgf_7PgcoN(5Z^p%g?T(aPyL>l!W17v5xiDebVd}j zjbE2}rbFMe4BhUMp|vPrU*j1%$09?~*BUFbYLYzt=&wh%V@Z0?X*1*vk5Qi~a*wI} z0eh9(yfgU8VIxgEKw&iT98iZVlaFdRm;Vp5~LD^piL0Ye$Y%8935IS~|&^CjG)jj3@e6chvn%q|W z{m`|pO&eI>A^XkC)X>XvSPdn~?`$%g6q+u_lD^PEY4#-@ooG>SP1+_0sVt^hIO^&; z2dV6J<+@Vtb_eO2UnwV5X&5w$9VMzup>B~GW`xx5S#4o6Ld0i)LF!EXh{=@SJJqyz zF2tAd)DIYQ`oi(hqM_(=-p9jejQH;r!{STcEo~M@sEe!KXk!HaXby}Am=5~U*R?G= zJYOkPI&vLeW81On;%a%YySKemYKM1qLw$vc`fNXu{*5kMo2p{qQxbliP_3dqs`hq= z)W!YN*#Mq+0#m#khB;yUi@bsxwk zi{>#%&yEAR5wk6m{|=GWrh=QT;(lQ@HLyn;^c2<&^cA~{)!|L_036L+8r~%KJptq( zqneFZWN6O2YHzs*#@G+F8XfdU%-X#-dc7Ads}AR-YI+}vQ$yr+ zL*rxZZ_rX}TbHmQ$5c-wR`LCBSx06sEIGfC`e^8`RoA_Uy zzl4y8z)n*=(_u)@j()f+XFbzT zL1gwlQ}nAM(lhmX?aDLwJ*- zY_u*-rQj>D3<$-zw;~4-D1Dhzzd4vp$Vo>=9>O7G>}mqt6xn$-pAr3I%mz&+{0Uys zWJ0=1V+I}d@mn#2?s(W}1kQW`*J63Pf#1mwA8hb0$9}#iMC_zGKHkAGLNwmd-zflQ zKRMM#wrR6=rbQo-l|J~IRk}Z;0r*hOB{Vjq?j8L<=*iW-IZ8YFfu8*?W^_Ixd)wG% z{o?i&U0Z&C&rmqR;>GO?5Iy(=+ZVUfI;~B{=2R~wmG!IHT^+>A`qeCsCWl_lQhzz@ ztI3tf4BL1(ZDb{wvKdps#PeuIo{ehhJPLPPHcn8BZOUleUiF^E zD)~{PyC0(P!xVl5Z%h#Xf<%s=EH>kRlf_5r*3}eV1K~#TGTiU|wHStf#I+cF41?=1 zxZeNn2E6(>1~+2x2@J+hh97=i+yvLldUsnUZiWkZ>-;y&)Za1qB;FCXPpn=ecmcNW7+7RQzo=b`y39U^oR-kGOZ&a4} zT~sZ4gW6|D6HI!G5@bE*D{!DVUPPU}hQXVbLof@2M^1*|F$`Wj1%lTwI1>+)@5JC2 z82mQ|c;=v><23O|4M8Wt;I_qrHaf-zz2*MGd>oN249-8l zJh*l~DMf`nns!R6UY)&#;+kGqLnyyqyvY0h{9;eF*ZX?mqIb;A_2&l`RSM_A zW*(hAMOdaNf3ax6{-JxYyd`{d$^LMVN{K&zz!E%M1>R{@3UCw+?RXAvXgcLeMz!=& zX2g3+t(oa5t|?X_1EFU^6F{P)5!tMc{J!4M1a-i6Y~jZVk(ru9i|MZ@tFbQh6Yu4;LN0_}Np+2sB%Y51>w=tYEE z6wH4XhB>WkF6~DiO{BgYq z_L@3*SrQ46aNMcgK$r4CG-uqnj%k6xe12vKIkBoy{@9G9w&uCP5KV`6|0fIageR~HIGt}ChLu>@mfzc*m>jM(0c$@i!L_U zQ5zQVDy+U1ewz2J_lROo|7)hRe>mvOqDKB5qIY1=ad~?pwrFsaRJQHJOb4kfY+p$g zWlw?uuX(m*mz;yhaVFb1ZZ^*@dx6a6SE2UCXIso24mz_hW?Of#)Ill>ci>nhPIHjT zURP0fFn$4V+u(oJsP#BV)x0B+D$Ldq>>M)~?&(5z1=EA4y@#YT2;X3u+u)!%iyFBe zqIYlyS2;*!;SQ8kw(Z0X4pLdzzLF|ccW}3Z$Rq6zK0`KR7$LS<7wK5c-*?cNeKFg* zgNGfYvTz5Ex_aC}DtldN?qDHr-NrBE?%-($shW2OQia*NgI(iagL>-FJ;IFe54^{u zPvEzhSD4mikK-0zVG=~|;1zatkjla2)&!nV>c&=0()q+4KjnEI}9P@jcY_y|Pr;1zClkjla}Yc!)h9dIt|N*Fh=^522*8 z^$;BnQdv|7B~_{(;sghgN7_RyC7VgXLpT=mY6qR!7qhL0s5(ex;UOG#^?nDb>~$6O z5R-6HIB(?SSFCB<>>yk7K0+!oTOaX8uesNz!+T26UBvd0-*`_-AEDi4n!M9NlNL_m zc8K1=NqogYDhnr}q_TAq-*=G8qDCmGQgssl?I7|Rnxj>Y_}gU;-W+15$C z?jV(glW^44c0Km6Zm+ATlbEn%f8NI77pz&^(?PE09fVY3whm$^eNmLB3*9qJRS$bl zNRQxu%T%_%gUT#C!2*ch!4n+rAeDtDP*T}?f|DGivM_rkRjQt#%R%Ik_5|mU&7|N7 z9EjMudAphn7HVGCA@K?Z&<_jX$Q%g_XSdo+4_Qg zyk)LQi(x(W=-y#B!_U26NN-_$iYfV<4obH09uGkD4&LL(4pLco4<(hY_jtrXDvPS3 zq>6eEw#Qn%rBk?2niJLE9E5Jpe@KCwT5<6tnN11~#IdBO7BapWIFNM%t?lvF7@k97`0kGS)wlG&u-JRD2WdGj}0(UkZ# zh|k-^5028qLu~Gbz;JH;y>QEI%Yfbsy`up!2l5P>zoKd4zuwV+c&)M%>>L}~xJB-n z_6>}{-;51hYvV@)&Wkx3P;QVT_mQjMfq;cRxm{Odrvg5mP`{%6oZ7zOQvvHItQ`pW zGA0&Yt-WnXUfyGRH9;(%=!_{Er)~5oJJ<-_< zWMgzH;2Vuv)(-^STDOIg)dmgKZdWZ;6@!xkcY|V4dnm~`|1UE#sEVm?CrG>Lo$ak( zwmU;0Y0E4)NeZ^%>KdvRU|+rWx@?jaw_{YhCur;jdt6(57fFkA2KG))S+x%_M-KSH zu_h!~GtPQNi?OWzR+bBEY(LiGe&2l%82rbXc!=mq2$X4^gU{3U>htyFYQNsfwrLBj zBiM*6y8B;v#kc)Y1V`&y^j*K9&}@z(I2@vfN^aX}JjFpO3p`d**)EUoa*!(4jWv8o zeBI^o=)gi-`w$zcni8B7FSDzG9NWK~Z$z%`IT0L05L4~MVW=2?r@W|v2J5fetPSB3 z2bEhG!bK2$+(^qId`t+AoM$cFhaIG{7->;b*;blQI7nr$E840ox`ZAjHZ}dNvO6uE z{XnSJbX2I?(J|(=dajm^#JC?MtHtjQSqq%2cRI!c@U+&)2~|1i4(GBWNa*84H)T&~ z22`rSaS%Kaa`C+KYlR?VR|i-%ayrI?m=8J~;~~7F(=q7E{YVJfft#3tc#7@CofUt2 zdpB%}xdntZR3OCXtPxt`AeCi#^j^pcBb`2isSxUH z0eYN6cI^wnmV{S0NR@V7ov3XAy4pdiCQYN>7NAYl&pO+HUf_^jYtu0BrtOyhF}_?p zhi=H|_1HWN`+n`!4$85x&<{iO4*l9&9Hg=+G9{I5ZNA4rDtleYEx2jtP}ZQM&>44a z>sp^?<^Kb=xrKCX145*(?L(k0W7pPy*6Z5-7@pR;wxNnAyS9%qAk3(1%M+1Z+mIy2 z_aGKs+uxxnQP=iSyrQlxU5%=)Z9cpyR7Ty~Q&W4r5*9YgF78`mU$L;%jon@D7G7RP=il5bm+8IM1!wchWeP;^(7)Z?K`IL`tE5Wq z-|F3|eI2A~l9};Dhoni|4KcIKuI9HB##$3zxx`dGF&PzOG|NCtaW<;nw5lN^aNzx$HkDy5rp>D=2B2>B>RfM`qx^dc`E+ara zC1pUBTj|9eMVitSpj-l(R^A5r?>0L)gIY8;Zzlt(e*dS zreD()ndZBfuR`<=Z2BVysVuy#lFF7%f9)XEmcXVmyPD^AW7C+LC%%G;F&k)TPd$4$ zeZfKL7N+nIh~5ECCl#%mJDV<@lFAlNcXE)*URMOC`nHHDv&jRr%J#H$ZULcMPNxmH zUV_sFP+TTBWuDe!(}nN@jZH(9PqOK!SV3gOraTeJrXfkvVAI3Unu$#h$17q}x*An% z+U@OqCXW`+2v1K>4NtkaS&pF2iY3%Y`o=NT=+2^yQ=>N-s;)$9Y8|Sct|wP}bZbM^ zXsMZD07u*WLe-{#)H!sxr0X(GS``qz1Fc@IWU9+7f70W>@p%ZnPRx z`9u*FV>D2rv|;;5QnzhAN??)>BwIdA30#LkKohuXKG!4H zYvD&4xrVBsB-bgdKr$j%o`@vZkR)l4>+P5iBG*sj6_G1ljVf~O3=Xx<2wG204O#M+l@_QDxUZ;D#mD_aO$?-&e-DC zjJ0OuF?4%{g&|CX=pE2>4+p6%&{RoftE)B#sqA${Xc|389VO0~OzYa6X5U{1t86)$ z)_1uCrALFpOi&tju^x{e1J7$b8me}ZN59G%sEl}&Cn9+?BuN@PdODgD@#qS?A|9oy zQN^QYl=A(Bj7apv^hgwh%#uOh7|)=Xs_zw|1ErHtbKY&a5s3VX5$CyR8?Aer->)ZE z`{hfPbHNt zd;ZozDtlcKd&U$oa|@UQlUrz&U25s{f>14I(InSP6#5cKWuj2&a6SHf8J^VmGgK8N ze+s7hjQEo$BKb2UNgDjQO&^#L@#l2BBL1YSQN^Dk_6U@Wfb^WyfHYR>ED3eLSVD~# z!)Ko;vKr2kQO`?;H9W&wuUTktt%KS(>&eyrw6#I4p(u?I!Hy%d-)DJ=uG2IzcM(MI zfVoFHNM+%nl~l=?D;3M^eYt~J&2eu1v)dY4_AfK6IeItHjj4uWA!^2KqqKdI-yGTU z+JJ-FEv%srqIY21iyfr0U|S`Xt*&YgQrYWDPFB@7r9z=i4xv@nr=_z82-R|&wer)% zw|9Y*5Lc=uw3lM(RpL?rNrBuN8!AHaMN@O}-i2zcpgQ~__F z=jbD6&Sr$Xt5Qeah}>C1@7zS_jSAxXnJD%ePvB+XYkZ2Kz^_peu3ML@%}~EYMSu-M~L15eqV5q%EE;!sjT65Qoq@^o8E435%4QBtYLv0 z{Kiy7@dqq0vyC9Ojn}{fX~8rUp>YCjDYu~^nh2&nI+)v6%V*7VV`fJKs!~b(0gqtM{fOZ8L(c7 zrqa5x+ROChYX7~}0jpO)M(1yu?|SXHapT9~pImG=zRrdMAJ?^+Ca8W4qIUq*I~=64 zaJNdTWKbmqGeiHfgH+9ND#_6F)~qtSnge&k)R^igu0_R|Ep^cWOT2c(e)_>L9h7ci z3O|GB9Vqn)2dOM5RY_$_sn0k_Wv?ru)QMQAtahNxCO6P3+tbpy7=&s$q}K7d1f?@e zW+?UDtOudn!^0YchAN$e&`VeWWCWo+5ecCoNz#DOH$!eEgy!&yAe64Mfl$q6652&o z2*L4y{G4^Ej?iK3_0%!ByDwj<49A}Y-1`?X&sRmeuL`#Fl`l9>#`UzSU&i)--dp}qoSjj2<`)h^>|4}R8;aZwPO zwWbcI&Z)Ta{K!^W7`-=2>!%|RIfaT_F^A-rCfFXkUMUX^cEjXbiemj6#*M@63oeAu z0@Tp1g#iekmHa)nUzP$<_TP8k0*H=(@C50O)+ytRG zX*&o$2v^6C7gx!T8r}U6g&(HyBY0zi_!lH{{A95i|C=m6O1G}2@EQm=ikIPj@2|x$ z{3EW#;A0qEhr#v!cQ@eG$1%7OgHK>Eelq;<>*6N3Ue>$YGI29p^j;+XhMD?12A{+` z;uZ>TrSMY}-bUenP@H6!P9r*wKOCk6-M6^-d1^+`PcbF}nhcB0j z=P-?bV(?jf{Bsz*M0Z}mFJHvq9{l07-oI`V_u}o(V=w{a-Y8zj+vDI;d;z}PBwm64 zH;Mnm=f{gz>7S?Zk!LV?mj3?-gd4?cc-?!?GH5ox2v08)UxE7F zkH_T46Y}FgteX2nP!WF&zS&d}H$jo3+2B1vwGFG2_#S8=v>yg2_i}g;(z;PSkH3R| z@nO$*#UAfen_R3w)fnEWEb+S#F;(c={iC-(G^{{U)@st4U#p>TzJ?n7HU@aut)R1+ z@oXSLM+)Iy?1Bytz$O0|Ah1Y%0&3_C14z})^nxdMw_VdJGHl&1~96FR^w8atg;gGFq*2tyuqukEY$Axbz2}0+;i{mcbB?%z3_XPfs(jGR6`lp*X}J^P~{c9X2gwU^Li`& zrFqq%fq_zW-o{FG{XCgXeeJFkYx7j2u6~K2AesG+Y7O@1b4kM)zEx+OHq@nvs^<1~ z)Tl}D0kY49W;R;(y`%b*hJDU6BX%~6-(Mp|&oS|2Yz_XEn8v-w6LvGS4^Yb}GkLL(F!WaSXgzh-}7n%&!wM%QKr} ziw_toEYlh@YQF1*7$fxTHmF0;-rO$#sDxbs6;Y`|PBZ+vu=7b${pE_4fqH469;y(= zQ&cPN6{VC#t8up(aUg>;p;labf~8gr-}xKcL4K>{QmuIwF#pXEVdEgxD!erp+w3+Q zZ&Kmr#s`Z!F(D#nUPBUgmUibmUS3w$ZJa-k^ohL*a^q9EZAub;mmmiAD z_u(?6`wuGE78zuVe7t4I>rBX(Wp$G;ORf+vJF*cFb$i$y3=ud~zc7>AI~ZFt>|n?S zU|v379w^uI`HsQOokF}pqdL%&tE_9$ilW{FZWo8TMpwm)W(P=SKhgC}LB%hM<%tey z#kB!3<&L7by-hicJDf-+L_~rZd&demoor91iM#Z4{&X|q#@e)WepqaVgnu?#V9~I& zfGWIz*_(~Sh9eHl_oCE7gjGGYkiG<344ZE@PFz(z`RJ7=_CvRF;VKw8%(csb&s=#R zzB(Hjn%!(H9fscrOxF=gI&!i-)+9&a{Y$;^ns(&{CU z`q47BIk`g)S--JR?WxUn`W@Ts^elJvyBcACaVNiQ+DFfXv}so z=TUZ=SQ}r>oC1v&ibRD*-3hysJJJT6v^?a>R4)IP=C+l({k|bL$1zzTs!?Y(nPF zg|LBvpvKwRHd(H%+MSJ|gb#2N4p~<-irP5e#6U%8oHeR&S?&>A_D=kI9m~te1@2*FD{92G zF}+$^*Inr^ln0v5R9J7-*baWEZytm_gwB@_>p;*YI97RCip(E(NOPlumQb^?J+O(I zeqNzRAXo0~`tlvpmo2R=y;6h+e@HC6!K+~#B`Txk*xuDcZX3|<47?q;YLgB*#C@n5 z2=N2*j7J%saUP@++c@+?0M$4=qM(Nzewq?;7@PYe!uM+iK0@QA@TFQ#yvUrb%V02G zJLI5O^sQO?26!((WS&Y7&#J~uT%d}3cwY6mYI*_*{s*fc=J_iY=1CQ#u7UnWvoRH# zf^v7$Sr0|lm?j&FVpDeeb+)bts8;deX&u9Uhe3Sqa80{&r-lJ5aJLI!+QLa*kVfbhl+Y{VuNEyNWz`VDJbyKWY%l3G4 z1f$SWA9$1_aPKTu`Ui*VrF>tdR%@Sa|1?IjTFbG6Tz{$FTj_@3IHJG}4?=VVaYc^J zVFO`Da)v)Pwls#0f@FP@rO7yyuWE1&%3(R8i#G$PPB}o2F5ItkO;@u2Xgz*ZEiaK6#Jp&bCyh5Wg$`TiL zSV{VQ5UB&F>CmWavlxxEtk=QZV#KjFMNW~TyCXl*Ks}O&v;N#MbQu9Zn*AvrU zGe&j&p@OmP$InO8yZ>0TOEIcU4BHql&*|pd!>#jfz@J zpJ$*V)KZPgC`(+}oLc%12JmgFmcAt2D1}<8Y@BK>I)%f_q=E%1E;B$lhFRWB;rr)N#m)Q= z4CX~-*wbrl zb8{z(yIft4Smf#zSgpnIbFM`XH2x~BWHXS%B(Vz87N zCeJa7D?WglfEE>#tlza=FY1h2(VDvuTTL<7a^M52 zrIwRR9U4-W(?Nd-cWhiU43;;Q`tlnJeM6<%oLo0diguT(@GT06tbDnHl7+ zLvtXeO!NJP+Is!4G@xG6ofQ4+V4+seuP<%Zafc#OvMXQe?<#qT4An~cVxibu(qUD6 zc`r>DjQ+j1+}&Lo$k*zHddYp{E{zH-6%Q|G-OjZ(nw|1~MXlMt2uJs3m~maTG(|}! zrWTvYHNHLOC#F1mdqYy;IjP6TrxUuIX)gZVF_>XDm@z0H9ZCvG{0RB%>82BTZK}m* zDJvXLgXj~EnfcQeC(Fo;X^TChn<3Xw=JdrZ;{`XYlKc_RkFPNydO}OXu6q^(BvYe6DlL%k)6cW$|0?3(AhRK*+KmV_23j z!FDUp7w>1FBKV?4#q-6lGO#80MFlxqU)()PTDd-DI^oWt;BH9eea2Jdc0Xenk>GZZ z@!alN1}cKvX;eJ7`zr%ma<@~EGj_Wu?e02LgxiIJyCJpPg`Xm~n^_|(Y>HZ$0nx*N zE0uZoXP_duokqoTyF(b*lDnOPoUPmK>oTv|IdomhbiO?zUvk4M7qo;yj(9Y~tc3RO zNS-5}%0NYMM2(8)h;yK@U7}%0KpMspN^X+3DLv?-1^uOJs-f@E~7mN;qyznW8O$lE3B+m=~$UsH# zLXC>&h5uw=OYVgVa<*QW%9qT0)#*J5LecF8(L)cySY$iwFPRTw;3GJ^!k20}@glP< zP>q<=a8`((vo{;C?JbMk%Q9KkYDHv3UcI4r!>EUY5k_)F*q1v~g(GjRY!~Y)oh~v~0Eo_%17k$-xtCgXi-oSFm!az5CzbTej zz_Ks#CEJ`_sb1{BWWepV*9czKZY@VFA~N~#fuo#!C%FOTY22PG9va@ zv0>d1_L}6Y*q#?fD_60-AnxQUHhDLuRkspmnQO12YmRTv@JPrk;{`XY z9+ozrqY89rwlW?)M`AgCZyxIJd=mBsl|84&Dcn1@hw z-O8cD)xh1w5Unb9e?$(yfq{=OAgJ)AT28#kECYfO4Cd@AOyV{D+unfS-Zs_IYD6$1 zvmPNBR(%Bo=}3+U-Yl#xM+83xcM&6kzT|O-1oyQWB5F)9P^xNZ=vAS(z2)?zF~NtA zSArJ=o!*N}ZtGU)>+_`E2K}*gtt00K_I}Fs7T{idPkm0gmUkIxL+P9xtk!#xMTqUQ{E!*yMst4rCLrn10*}`7%XFKq#1tc;{?7n5*B)$>2OcI>jvND z5Cz3$*=UxAIZ7tSw8vjpMET+!s0hI;M`uv`83Y55x-jaRKSKAEh**x$`Hi-yeAYqj z6u#*{Jve49zUn?nZgrt2eZ&B`U!mrBEv{%zYp@eSu22&UAU@@ThBX+KTPw})!SPTy zQfl}Ssw@*W1X(Mw(fv{Ke}K{525xG^ZUExBPnS4h)wf#0HJNN0a4Qv?T9__oo)fgV zw<)ng6=Tai)3v2f7IEmgEt>o=_3yHf7?sQa4*qYdoQJ*B!2#|dm8cW}ZGe{?nC@-# zo>X!8KO?t3Jl&%3-TF|7IL@ub^LV$OWo8;dkBcEuVb7P)Qz&c(3V+jsKXYBqpCl0N zdBRD8Un#H6W~yl*#s?VY_la!1h?qiT;n~@}wC{nUS5r-q8z5LiAwRu1-CX+9NEdMZ z)b|i!s8l?J;p+Z064q6i;usP8(@40h8TN?e(@38bMJuO~?hto!8cE)bscEFua<78? zAe@6iMPr2deg8|_KJklNg-@m&MF-k9@Yq_t+k@L;q}gzkcxVZr>J>&NO+Dn z9D<$S(g-G*I{LDiT;qphe(K1uzc-8+J|l2eTPSRs-&3IO?E08#OK)7yQgjYsXV)J= z^dO;(U2t1`F#a0`D#9+f8Wq)6e`27b+e)rAiYQ`K<3tW@HI70z#>~c}-l$bXEpvV- zl6C#kNaqXibOeWe8?75VIVQaG#>g>Yqe;_4!_F=cUaxWVx5o_RTn(gr36%i&xNTV| zVV57Bs!#qn5k>w1Bv#p@cS4%(v6y``q#Wc{@&D_^o#cOcH>UXi3^cBrD*G=_%KpJ& z`YgHs0E7Ec%2wtNjftbtq|h_e26YO589CNpWG2^mWbCs(E+e;XHO>W|(p9PS`8013 zYNz{5>9vWScuedh(|9duoa9Aq=U+^!OJo89x?nMQQw>sgk|hLDrOvA zKWry^!<7uP6TIP4h@K%uuVbJh)Ete9T61n=prYGKO3^8@R8a*HplvPxNO_-;&H?~6 zlIpV+-Ae8GH2@W{9w9`luJU{cLL166Q0J8LJQP_!Bjt$`QOYxbBn{>HsK|#LdHS)q zlgd-xjVa}Mx>&NGUpJ5+5OaC$$;6_+I3R@s+JeBc)SbrJ3n*c$?A$Rbn4Wh-k5JR| zJLLSC4>dh!CN~bY{72@s^ZCqLy_&lqw;UXNl{g{WD@v;Re9g3Cn(Ffvh@PQ7ciLoU zu@r{BG^%*@IT=ihmHK`RRLR7r#E@8fG7DiIBfA74qfr?Sdx7iBy1R4%E`%ivR0Pq- zwAC^OD!Q%W9d>)KH9*bsnG9&jyw(SjlIt3RlGkmDU<~JF(f(PxO*^+0t3pG-e$>^< z;N}E_`5PIfKyZ*6M9=6!UCuy7s7x9awFmV91}eI(WDm+HU{rMk{){_QEq&7P{ojDc zj$~)5g@%-Usr$fC5q&AFBi*jl{SesbN(Jhn>PkI>gh@tSDV&JvN(GRl(Up2g_>k;M zeO=tiu9UnRQ(dWd4pv~NeLaVt=J%jUkGc-x%CaYQSa<|Km~gvVsHi_1pObUf*2SC< zuw(Fjta$Jv)FAy*xX{Rr>px*8Hx9a3*zz9thd&10%TlOrVVPfj?u6cO!x`H;S%OJE z3Oz%G|7Wu_T6Wb4-*o)}qEGF^&lhB5#)qH&GEuL?8vbZ<(jkX>7l#{||$O4Ka_V=e(<;083^6gzjqv1R+T-U2<+upZ#hQ>i{ zM2j;@BQosOOT)5121|^fdUK8x&L}n7@o*QV(NI>kMl;VS4Tg&P4lhu`O20iOirk~B z82#369K?9qDQc}?_*_zdL$2PT{=&fAYN^m&=;{+28`XyT>hMk8(eS~X+}|j7POa3p zu452(JAyr3+Gl%T59rU~j!q#7+$xS%h^IC%Y zpErmcSQT&F)3UZ`(u96Kj`O8-DD|;UXJVz4m~=bXH^l5VU4oKm7Tw;y&@u( ztJ?j#EQm16&$DJD#UwsOkw17FFu|v?y3gTi0`rTMkYvJZWKjIL9$k~JA^mStwm`&S zHz{7CKDiRl{gx4zpn7X>s}+zCii^k~o)~?gTLORS{}nO^jK;+O9_dnLgkgV=^cJ_z zB%GkMsa`GQ;QZC0ei(VH<=llA;?rsIZ62H+2j^0E=ZbxWns@%C=^2LFRMz!>M%H{V zrdSxJ@crR_WeTf5i0ASCFqdW!l&!ef6FJGfGFuGGgq?(e!vBuxU0f9YS1O|6WAUE9 zWnQ0*BBR4wUxdhQ{=qQ6-{L0pIrIXd%=o&v!Ikh@54$F z%ky--E*^Fo=cp6Wk$=4xcq2Z?;U|rXF|_I>+pa#;@60VP*XnCvLjEkV=t0~M40a53 z7pm35X78uA6Z;E2r8e*X^-8ta+p(%N03V&5HLO9|8G#HV9T|LpT9%`P(^*VlX%>=v zUbVzbuJOIG-{wvf?~RQ75*$yXiZ2Fpb=W5vsFIaJ zI;+EMg>Y7=5YEDd@NbOl(hGrF`@hRTMX3EYTeVoT_5=e}_O|*j1}eI(;;T_aYxWlg ztYq~_ff%jUZ2R-c64IeNM|?5N@Z~hF<$E%~B`b^|l+22xMcZ}=BiHmIp|)*DFi_F! ztDyp0v~9;RP-SncRSZ;gTg6wZh_5%{|V7y;Z z*Xl9`!goP>g}6zz8U#>7BsRg&q5*n80~OtF)CTBQ1}b``qBcOEVxY?2R{zF8MYk2X z0s1Zj)>v+Uo@C^g?i}&Ouw!r_63eUKG2kUD4h&|r1lEKLMnLo0<}C%|9UB;C+ZY=D_NSx05pw#P$k#CpN>~%QFGLT}!=qmA(F16#-2D;J>>LI@ zLOCgXsg@HjGRvCCh;e)8WYN#vhSx+I+wcb_M_R0ijL5DxUTxU*2(ZIQu83SITv4uw zTn%>-D-C4X8@CEvd}akf$CGYh4C%)xt)7ZsQzS z6Xnj!$>lI=%0N!HizkJuJcXcN9$p~lYZK616r#15QjT%HWS9_E58xo&bi&fzJ?&!chz z!;a3X$t?&5o~mZJi@%2E3K6kfL*v(Z;XhffntUC!1%aboS3=96mfzqBMRP&i4F5%3 z%YqLOZ+|RZyZMXaZiR^5Y8JIfQara!tgFhoi;-`HJT3xmU6q@)-y)GSoW@`GcB9Jt zuop+J4K9v6RxXZI`?MP?Bc&g7VI$<&jH8 z(aPnKM~XYSJW}3`spXMt-IMF{U4`QM(m;1D)!n>KNw`eXK$qo*=&uj2mNZlM#*y-& zp{7~Zu&U*Vc#ay1GlUO~+-k>FW^#>3$NXx?h%)d-fx_F#?=F{>z0Gy{3vyx!tlQeR zlUMAmHx25I%h*VcFdE(i(SxR^PAhF@pdw6_XjJiI^bvElS2AEljWCS(sydxvV;-%= zs=AvP`K3EYd@*eAx;h?rxq|^MSyA{v5>JsZYsJ4a@=UK4hLf~d?eRSZD!P+UTaceI zP|71s zm#lG{rjAuBk6LlsaVM`l>DZO0&B^&cpS*Y%p&8Jq;GEcOOH`vakQT za9=-^w6&u@GdiGZ%)<{+W3)*)&B%4}>t=F|AB_1fe%Sg}Rk3qh*I+5{1#fd%m#!18 zHVxUbYfs?5D)Yqo{l8*w`}Aj?SB(cMbLh@Eps{lTM*pf{6M}H=btMK;Wc){;QZ?*O_(@A z{Bv&Ee!>Kh^)ZE_llRB^acYYE1CY`n|Hnm!B>DeT+)476ciE7?;X4#_99{_;UzuaI z_|58>Dt4`frmD?J_1QcgVm9S&!XgX9h9e(%@8I8K;{h!6`popg6+@{?0 zcKJtnWbaMN`KLwLe_zl3lW6mHjcK*YP_+mLQOGDZ?>=F|h0S*7eE7R;f^&iVGo)+8 z#Q?^+5Pn+WTqLhAOo1ORf!o=aG{sw&$zQLQ=Dl3rUm>qo%Ij6~x&^MzDLcXC-Eg;T zqI0$S(~wWEk=OUg>wCq6NzSW~$g-)wMo%hK{@0ZsP!1XHU@9@0$38xAFajp}W z4~olHak<|6?FMmoqqy88E;ozI#HsM&zdN_U{fgebRyZGm8`$mQMUkoBi_3?_6X#ZW z{fNANR9bBT$DbCLNr3w*=QZ(o0^B&r|Bp??r`t0WLM?Y5$ikHQA^N2N2I3S;s^ra=rl;(5`VQIEA;BNVq2^ z0=vu=*(@}smTOQonpbI0{JJo$T!8oKv8FlQoibEimbMBK*wlf;*2gw9xNv|n0Ms9^kTD8M{aK_7U?>2S+5uvaOC)z5DJda z7emgosu+K({=5Kxz!P3nfBvBU{7L=!v-Ju z;%Z&F$8B@bTKM5aHX#t%givHiExzGmu(!V@kye?3j48a?^IT1h727GYTAjb~MWz9SBC`s7b7GhP|KE8COo4Faagj4kr+I zDY89?QW zy`|#%!3xA!9_aD#9are9L8#txcXw$ZUntf)#p(b6)7De!8*1~O#30u1)?l2?1$_9T zBjy11a=l#Wlf!S-!a$GrbbiNtfDS-P)qdDnxlk|VgD)RC|8RKRSJ*6u?JCv&d}*-e z=W0P|?gDt+U)Yp~U3MXb%0Rx<-&N}FhHODNWwFB+ym?M;V5mRul}Nr9_IdW6izvin zja?>&9u5||jbeb(F_X;K;p8;WXoap?rEjQS0>g>l^BXF~LKn&%L^4z><%f`GNBv!Yex#u37v>(Glp(waE(EwscNzad)X!gd}_NwZTFW((r=h+LkT_ zCcF$9L(#aYrLd|4geYQ_*^>Ls3w4-eZA@e~z99^g2&~pVZ=`&S8Rj^}#M*dx#5JAE zZE!fSAV^@Nfu3At9j~PgHJDzv*jXN0)wPJ%9=q}G|6yTs&hQauru8`!dn|mT;h3#RJHJbRQkVT zpdxH+z^q6wGf>fObvpP)U^J^SMRYc>xzta{V%xuqK1{Ur?Y13_8oSko1_vwEdcM|Q zsMgONs?=eGWsCOSewYnYT1*)-JPU%SG4O1JA?*B}GOm$T!PqIIWp~}RO}nvE#cmNj zeK)isn8*;wu&-wrmavD#0T4ZdY34Cd5tv4!qBbT=7^nypM59WXX-;N<&X{SO$Dt}T z;%H-;bej}tgIUsLhSBIHO{I;E3{(W#VA|?(1}eI(c(m~W2Daq1p$wTVZOryZ5?hSn zx{P4*$Nq6~xUVT9i4Tex|8)#x$tgvdF`1?e*> z5CgNAFJ{<`Ud&WtxQ2m>KnzS<-NZmew^f)JCeHUNgc{JBj|cSbV4zA)3d)2TlS1T5 z57!zIq!0}62GgW~9-&s_A%^`3r0`{koXN|hA;$bdZB zr0_fGGbxY)vzTZ6D_xhxuVQKMW`4W zRhTOhk1w6ifSrsl(imUbC_N_y#$XoqbquS~3!BOqw=qx=7=vl6`xvO`whA-G6tM;x zH+SkM)WCg(fh{?2C_`q;8*duU>TlORCU@)^{kr>t;tyLOWa1|nCMIymPat{*hx``< z6@f!EDk_Kkg@KAtRWzzFha_BIHSJQmdQQe53UH!vs7V0Y{)H;t|EMLMV;GHI(o_QJ zV4xxp2(wl!W}u?mDoh|#<@YhT!PCE?_U-Kqbjc}1nKD}n+1vJMkZTl^HfH#*xPcT^ z1Ro&t6&dCuRL?v_&!C5M8K?;Kpixm9jf)wm2o*u23e$t!6wv)DwZ$9-e6oT&=I>)b zPDTzb_b_a^BI+9HGbwZ~n8kb-!)EkirgFm<7^n!`z_itWFi_EL73PL%>Jv%a#JNAB z=It>CzU1tnjF~MvxF3#MKM!@SW3t3@l3BPvxLtY)AhPzBRgy$n=zTZO4&ir7dCw{z+z)U<72U`tLG%8;3pMa&jru3;j{ zBJ`dc)+3AXb7ax?GAv3Ui>o1e23g#~Kt&)6jfzSZcQH^AYKBIYDp~wH1M+B-#TTT{ zq(BzTV*V+^X7pmFlEpI&R0OhM+Um~?RCHSzWFfXy#O>S^`4ei|CSF0;!O6)&88TzC zh}}@qHH=9XGx2+FK*bc{hsc)uGHgkpi9I2D22HdxP!VWCqoUHpA_gi#ozSSlG?936 z;sgflWK@yHF;n^D6$UB-e=uz|{Ytu^ zr`sybACqDKb==s=Ur@ug7Xw*x?oejTmOBoJ-FV)$i%A>1MZD*RR+JGL0$FuF!>R=wc}Y6@e}^Dk@zpXP_d~4UH;Qx;UEwd9>+bwe*=3=z>|yn;15u7c-SEu3(@d z&;`?0O$I8ut-^FMX+daYO8kJDwU07zB_|7I#B9l8znEi4+{WLeidn{6Zdg5qVLnIp z{1U^S1e*99M9-j!?=VmiXhNf+(!@_0s0ejJqe_(~e#?M7+BETu^qCZBf?3RyugX*@ zYgAO4n8iRvpb4g}4rHLBR|z^z%w^z8P7}(A+0w)wkq1(_jlM|`I|jqM!4x;(M~D`V zW7v;C3vYwy8MLs9fr>y28Woimx)`VkbwHy^l@{s@$fHdQgVJYGpao_zzlUKndNEUJ z;bsOZ0xd9YbteNA-Bw{*m>AkZ7XFVKwa+t9B_{=C!fZ)l_OOp5bQ!=TioGmxxNqpW z3R@^-=^rsHO`wnOL-Y*#_!R>cfj%@UDt)}jKt-r48kIpG;@fQQXWXwbASa{`0XNYW zAFoKCNr66?#k|j!OnVg?6_q~P7^n#J!L-$33{>>}@-=*0qeuA3KL$aYHKJFrFequ4NdKz!zsg^bEdm7^nz*p;1x!ViN-u zp>k+c245uEn*7}i$O-vEz)i##S4f{pfiIZF{4s{j=*3Lsi~AX<2z=HN&K&P^o2eYK-F^ooN<}@lQB`jf}B2WU; zR?8Tu=(Y+|!tjn%J(GbgIWZ_hW=jlvZKxCrUHMx1JUAm9Bv@`q?#&D5&-c#oFqvV7 z{|2Up-~+@BRfhEl+%N#qGq~Yh3{(Ve(5R@~@E!&#LM_m!!rYK(9qg?P$jO)?`8wE} zrO%|$S6~+N7a2CA7c-R@zRf^IAO@zb9%rDU+bT>9Q&BUh#IODhHEvHc&?Tn^Wy(~k zfft#xb=iao?rGqIC%UJBpJJYm?hK0GZrpytgk=+#f2F?KymEh`r?jwM+Ekxc zuU3jxb*IBV=6>e?ru7lhy$0W!GF3d#isMxS?AXSVs+MeMDA9| zoUIt@GR(LP;w$KEv^#f-NbZ75$%$$MoqOR?<1m?p4wZ!tA8Uuqg1Sazq4#{S;(a0k zkq75~akuN$a3}tIMbmk}eWWvVtSGJ6h^|;9epV9vTVR zv$qr4(YA3gEn(-2GZ22~^&+v$l=I2Kwd6vc2cz9lAus*N1QmdD` z>y=7hu~6(S%{ygty|*$j@6e97bSyYx-lj!wp4V6Inl~tag&*hD%JtIR!9sC8RAy!c z?*Mm%8V$2j<$<1DWnGR{$2yKF6~TL}%6pr-Ia8%0yfmWze^|LvROx8z+#%|jtcOPm zhf+n#GwcIsSFU@W?PER4ijtHd9-V0XLn+0Xf-iM% zZYJ0G^?0hX(Ix1qk{_Rm9HW5-&Dx#!gi3f~r^{c8zTp3;^af0GdcLPl%71ywy=g$g64hvW>uL#tDLQ1sJe%YqY8 z8Zm&xsy5qI2V=UYzAQbA-shY@i+rp)2~zxvxO<0p_fELm;+!t8XUOZB^151H*U0Ny zan-2*MTiJbsw(_az6xdQv0g?3w$GET`N3+XtCkNQO_08lJtq|)lkBLDyc-?G*mnpDPf$5Qo;cwX(-{_ zMLwhw{MN)c;J&#<@gz~MUow+x{A^q)S6m8q2@qK2PS>fAnr2K>r#=GFGj!^&8K?+k zt5L=4RJp_kdHC-csFJDFmdkvGrBPLO4gTh7)QEcLd|w#G>Yx(?OX;YpYsYKs!pG96 zI0Q%79-?O`)O{JK2ntoBqS~sRfr@S`sZgOvQOyvDGuEdq{m$_32f-^xL7&D_uGFK) zfwc@hika2bpT|Q`Lw^RUo6?`3M-5X(`V%Lj^k)D`8v65e;YLz_o+0j}{*-rPN`H3A zbtL6=HKWkqEm!8(F3Gwe?Ahc80(46*t!0~JB6YE)FQ`f~;;>#GTZx@@`CN*R`c>f9x~}F-yG~>d2vFtx9#rs9<{R6g@)i z(Hn)!jGQ_>&`fTejh!M>+X+AT)gOKAbdhPsG*#(Bh@PQJk71x9FsnutuS(6a)0GTV z$uwy?W2Y*+23PYGX+*tq76`*w73oB8Z*ltU{vgBT1V`wD=oxbKA_gjg9M!0(a{*m%KBb|K#)F^1tSjv?u^iBX~s8CG0uKv6Wf*SfWP~DXN+#i`g zBmIdJQTj80Bn|!fC6N!QKmSeKN&PAB#+3eC*HbNYmtj$89zKdIt{<$x%;Xxs8CT<}wvw?*gM=Su zJ!e`pP4W6PM9&bfe`BB`@UTV|FJ2=)%$o9EJ4ah)4fRE7}(4O4y|gRCHTO39E}05rROSv5al$ ze}3(uxgMRvO>W!um(^RA%gyC2FzM(e%qfV;G`U%7C1aJ5u zM9&bUPccvt1gS?g)^| z-c}Jvv(%!Yy{)2Bw~Er;VnQo*8W{pLQEw4mHF7fbFf+MvwzpMenONmO(q*a3O?#%P zSWkfH8H#l^0~LXHHL7^U8nrC7mw_vpW=(5Zs>-s#1*s~#22b;} zXhgMh{w|!z?x2S+I>K#3=u1+MU>Kd?3U7w!8Cvu>1}cIU)u^aibQJ>?-BwDAib6%r zzrdWa7H#Q!hL1l5o;eCyG>&qm2Cagz3=N8?)zzLg2x(}~K!sD<^J&zKXQVxGB1(G( zkffnKFBMKCwdZBxPHIniH>R{F92HTnmkWI$?5g={VW1}i1^SLO6sUnSOC5S3)}dzF zRy8`y8dho2i07zjx<&ZX$c>raU?$gia$G6Xi1M)0e^8%ZH)#UwEf4?9z0F&k3h-&u zsA&q-yCHgpQ2jCk6@hUzDymR@n1O0r5UMJ>28r{8YD6t`?h=Nvdg_$<9rF`>JoP-o z>I7f-FNmI@R9|ACA}CdjimFtny`S77Q#R?+sH9R=rHc4KJht({NO_-;P7^?lf>dqI z%2Ket2@1>*tP#BH%GQG*ydhfy)lbRR52Av|NVeiclxz(kNkg_CCfr%d)BB)i3imFyW&p<`Dl~Sv+R1pmb&^8(v zDep7VISxQ=3u@J9(4|^^9MDCn)o^H6t^O3k8)`LB{ghfg0To0>Y85A<)M@}p8fx`f zkq@a>pA&adt;)MGrB+v$;lL_&ux$D=HIJTI zB9N&@6)!>~zSp16fR#*zrgV_1%CJGuJQ*5M@tmE7W$Zqh>>$+@46_rw;q4GTLx!$p zpd!dnjfyHm9R@18t&|LvrHUv(fX-Nkw)8&3%U=Sb7zG&`!?{v_UIn%?^kPSUM#2*(qJ(DvNgBfQ2H`?dc-|=Pr0|q?V@i0Q-B;KQ^ZEmoYJa{o zSW91gu1sTUAA`(NfbNgy^+O3;Md-}vfJ%slAEK7%Gs1aBZd~+UGr7hu#?^FwxFoD( zpY-deZ<(e{b6E5th@PQHf5JdT;8l$(UXez9{qz(AS29VO*4Ixe%LZHXG-*WrbG{}_ zV|UX9rMU|djEzock{cMx?DRjBn;PA@C2m(wwSg0t;02a58K?-NRHLGb()}5z2$e^p zlA?5~Dpte=;<=3rM#}$;bnXODqo7J#5V2IIolsncG7Yn>t4`kvfem#UsCr7B-i?YN zBXx=sQR*~+Bn@@COn9x?#X_=){!OMu z(^Rx|h@PQnuVA1ekg`Sl(r2ZNkiMdD)J$sf`rwms1o*F3{-Sm zNeL^;6p?^{oUwv!>3N2S&je7TpkRkX$Wpz22=E!|HIi^$<@#ZG!%(h)>Zg?JE~qdv zQm!}=rCb9@(onAVihM}r`e|_|m8-lPQ_8g<_+0O)BxhSQ(5i}N)oM%6Gd%pO;FqJIR$CLX)T*a|$qcO;LA9<@ zJr%+mN;OdRlu~^NHBuQVRh)=YssSWvDAj^+D5+Gt#GO>C@@`Bi)wP3#?tHzn9*&(V zcc;I$^^`Og4Fn-(sZT>^3!`MM(sakDU`mzZM@W#KFI;Bi76NQElWY8JTrC8^rC_D{ zWLoq+rWw=JqVI<28Cvva1}XxpYE)D$dM5+bwxC5-b`7THY0-#!=WG#%u{!9)1^l`H zZ!=6zaD;C_^b9HbI0F?yifU9;Df%=672Q@+ib9d1wqGE&wf!UIcSbr@05u9qG?sFu z2%WSwLWE*wb@k_D2x{ohKy_34vyRN4k^aPqDE%2gl7{}=4RWjW=kDT8>Q8w$ru1iz zxpp;Q-#nPX4yviFU$vmkQk8}l$Jh{91?pZc-q7n;ZJ|)pHCK4r$jR2(W^&_f{i@CC zc7c%W1l4~rEt;l+T@2AP6zmEHDgqg6R4o*&IK31(`&tI7gbFs56I4}p4Tk3_*oZ3V zyj2*+s$gfd6}oDbzM*=ljW1=-W7wYH5gQa>6uLhpm z9)2kH6>7DnbIHXXgRR^f&WG5#JzP|F4Ibwy*NCd;yeOQ=>Yz!+Ugt1OP7q=35IsY% zb}~>A1gl0x6|5&PP|erSfh}>C!WYYNdR!Q0&cM%=M%+ z6sdUa$~30n8`IBA6LpVV1Fy6t4%k(GBmzh zZt zb{|c)rRtLmvlG1G=MX(ZdH#-pil96-Dys5)nSqLKE2%uEm|Lm}&^87bDep7Vxe7py zg7~!at(2X6-w+`?1I+3Q&V3-9AvgooO$p9-Bg1DTIB_CMa0Za1AvkA4Zk6CXMBGWi zDeuOV;9Q;M7-%Xx`TGE~l$@bmg#(FtdL4V_`A*Y_X{yeZ5IsY6b~8{BxKpEwSDn(X$iJ%$RLMlA#E^KXQ)Sm+W1i-W zsCCY%!Z23NIrYs8=g*(dpP#>$VRnKuG$4A0===}^6+v`rR8-Mc3!ClErSPEl0<8_5 zo8W)q*IVH4SxqO#M2+oW1FdSgRBN6E;TMCXY^*qTpjhcHRgbO=tSk5A+GVD5<$)Y) zymof8aWw124g@1oYfF<@^s93emdBoP+MVO@lQV9HW9U(0?Rs~HTKT+EC*-`ITar6` z(GhcU#+U8x(*+CF!_bCg!N(8{K2XfULv7xZ?rLSQ zGE~nGRx4edxpjS&f`A3bl+Vfesfvei6q-F~c>p#8F7!dhs`+YRpa=37hzfAv{r~-^ za=-04xpIG@N1X@k!e6-X&2w^tg?h19u3T|{Ua&}6q}W>+7%27C+}{tKlRJ0)hJ07K z06&Q{tsoO(G-OV$q}(nKxi5Enc3-e)wy#8fd?s@E#=Ko}QjYx6wjYccs*EuS|?+_DN3X1>)R%rTp>xRD_D z%h5fi-8loY=1at4W(Qb zJwXn84BcU!Es$;@vfL0qHX~;XrpjYB4t$Hlr8wz}r#7+<@b6+^&sUxfMDN=SBvq^B|4birNnW zP(`KM>XQsqbX%PcDKf}3u@RNWFXsWwO3=e+R)%&rCQI|`U}|R&FauX|vQS3M zm@HzaZen^B#(Qp9#kaG}=ZGktVOW$Hg4zCPpD}- zoq;VmStvthOBQ?ECh}dIn4?cK{8!vSiXegykog7~<|8meA4Jb!hKm@e2+W{SQJJB^ zKt-qq8kNBeVz(x@W7uM1LIg#{`ymG8gv=l?#I0LxIWcjg^qCZxfmzI-XV{Eh%v5Ih z76TQ58JM>E2?G_~R$*qCrWQ1LwL;G1xIZHQe~N)GIXft0X3GxlGB4{2E!R3GOYEju zBKWEsTG2&h2xQn-7=|VA#{WR{4BnW23thVtctfM2^2S~aRD?>RQH6P9s$7ldm1{h6 z=)kCmXER_Y;|`4?5qlg2s8i`zFbn%=hSlhWO=XW$8K?;C!L(JLfr@UcFndgfm9Ad3 zkklc6LB8M5K$e_0lo_+-joJQOMT;fAu8m9r**`80_cg^N@j;QzuVC1mKq>zU(K9He z$v{P*6pe~XDIaB^BGep>Ds@VEfB}2-Ddp4Bb5iJ#Fbn$;hSlhWO{J7yGEfmHg=wqj z8K~&C;!w&<3}neEMVT>MN;$B_rywpPm_!2e7NL(w+_2ufM)*0Rj9DL|>wN-c>;%y> zDC0l|DgtF_R8-2C%Roh_85&jUlyM{j_UKc_TcziuKpD)!K9gZJdSO#3qlbZtKp9M1 z4KYyBZ55`BDbNcE&u++{Py=@<16y*^P=?HwG!BUUJkX^9lQL%F_uPPrFTxLzEpKMn zl0X*ML-Y)?xRZg3Ko%Mml`KBbKt-q%8dd6K@m&V&(I<;HU zQWOzzb^`-ha#B!c%$5{( zkJ>E6HAe&|_`%&kniB#Kkm>Gcn2x{+pMvNaobXi!Dgq~HR8&rQgn^1s0W_*qIpNm~ z$fL~(zmz_c0w*ww`DKR9=*3Lsgzayo%W?uIFm1Ib0~Os?VNRH|U=eQK#1E)hdlLg! zaz;=_%$5=M5MSdN8%4S1FezcjV0br}A_e>i*>4HMegs;03q;SLg=Gv>1X|FjsI+h< z0~MhTXjG}v!g>be(WZqS=`$(N0<)MeXV{Eh%v4(V00R|)7MQmB2m=+}R$*G0cqne) z;Qy#myO)6~IVmU;W=sl^+XTASFiBy1H@q7}5rY3SvfH;Ab|a9%Hz0Zj89dHFMIZx> zib@7gGf)vcU!w|>0Xm(h#okU42hRMB0Xi8Sv_5dAwXki^LlJ%c0)3{(V?(5R>+QDLAWR0oYJOcIGE7cOByPDT;QCl@Z1 zK9d4NFpK#nhRx{3Ol62W7^nyg!L-%q7^vvB3Nu9OfuwITa3yC4WyDn3fft#x70v^2 zcPAY5HWX~V5AqH0USOw1Z%28`cKc$hPn4lC+ENyifzs3 z)vJ|aRbBJ`&-tR=K=ST-c0gXQC#8>gy0s{YIn(hpv}vHS3hSd zu6E~6h#*jqjk#|t)Jm`&eW!Z_dFMG7sqMg(rE480iK0;lBAnw22)%>+cKT)9FMlbf zj)gljje}_kJ71iE@H>+}3Kk3Q!o5QPFUB=R1jSptdwyVHm3F5HTa2m`FyN5(xp9YJ z=wkW;092(i0n)R7*cZvB$dS?Bx-%g%e{Ws)I1c&YVQJG~U%6PW!^!eu^WBYw>Ogag zbMSJ&A^oXM+({pMXcc5;A8YY8gIn$jPaB^*;H%ORUP?PXKwIYyQ3Yi^%n655Tg9t5 z|B5^x>fyB~Aa7+go8~DceQ{s2<=T0>`J;{P#jzUIa@SD31ZS9>lR|_YagZYqIKj3I zo&GZH15O%;pnS!{(CtXOvFm^QH-V`6i4TgpSc^IB(R#rGtTO?QFq3Qic08SM(V}p@ zGabSwso?L<+a2m&!zY`DZN)1Np;NjHqKBr0+9^GYfr_BOH7fc?`s*3EBDr$dJI@c} zBYnY>fxYJ?TL#Hco))6AY$(Q<6Q+zky#4cLB5I@ac3~Q;n+CrEZzsFM7KYgg?r=Fo zA2puSV)Oc~3{-@wqft?-&g~3TbX!?I${XMDjG!Sts6RXBkVm zQ8eqTP)-cZx-$b6fp|5lc+D#3DUgpJz(AEuv9_Em8J1pE*)_PFr&l9tp7Re;8?6o+ z7>uXO)weQiPVj`oA$o>fJ&}QmAXhais$4ytfr@S`DOZh!xdL*=YPF^386N%&_~j_5 z)fVI{_304U%h0D`hIJL`1_*2@(m#x!D@qowyk^bFh3FaT^A!dvg8I~`sJ5E^F>)L1 z&}}8vr(3Rw0|aav2aJ>l8tH5WP{UN9*G-uKr-Z`4vzpGmV$kz27RkeLyMckz81|Ji zv<(W)kfA}EbtPy!1T-XQp!O*VdIKthj3g*dL`l#9k~Adf5yF?H1bvIRlM+ntF9O#4LsD&j6nxTqB9sRj@yYHw*I5^n#uMXFnW~bqQ+=XI{Jl&orm07FgXkH0^dJT*0;y_L z@p{yp#6OgQDw!HhXA)m!*WhWM7LBNO&aT2Rb_YFt(GhMNLZ8Jym0@&(E1U$;Gqh-) zfr_9-H7cqW?Ps8(+e&FsQK+c-7nn2FqAh*T@bOnb!Hj|yjiX$tL9Yg585$H(tE)X5 z5Yo_|feNRz=c^;3J#ivRdj^oCp*?RFP9(MGE#gjUPkA?{wC8GnALjI>XDSo;KEN!M zXJ`r`kf>F726w7PBcs6wsNH!`ILgQkh~94|H_j&TgT-Vg^+c-kJEjrSRGr_1=ozZ> zrwmjC`qZeXs`D8Js%=4as_Yt!%u}5awa)p5FpS+n1DizCRp;c7lN%MvjPz^DL5&sH zEk1Rc#Xv<+of;KYbsoq-MW{9!l~SFeP*LkIp4wXfk@7twoqGV(D5%aDx|O1H2^5qe zI)l9GYR;t)(9oQL>ZUa3y~y+#jd$Wil;#W|Nken45dJGQ=gHzuYEF4KrZi{4I8`ux z>G_T{Mm-IjSt`&2@z|%CwpEBGJ*BZ%_|nM9(rz=k#*^b}G&G{@tmL0`mi~OxnrZ6O zjSxLUpKf8GA`q=c6|YaDX6d&wa3xcyY0c8BEF1jI)2I93ow$ewJZ( zfXtrM9MIDOUdg z=nSzMLCUUX{Ud}oG;5&xDa~3y1(A_v#fd1*8bFeUW}WZ}a44x+CyG0%S>@eW)2#JU zwZGI|F4Rl;Y-Z|H(ySqzBdS@$X~$_+OIS5`57j6995qw>3SSyI&AO+V+_=-MVSC%f zfSl{~iq;q!>U5`2RZ&jt#N!}yOah@PQVhZv{`YE`46s?|#wsOYv* zYE_mhq5%QgMgt?|eMUO70MxdiR*eQ-s@0DGx+t|84(+Pdk3x7utp=)}Qmeb6g2+g% z;zX2M4IoKFt==#4A=T<<#GO>D@@`D2)wBBwn@iRFK&9HBFAdhxA6`vmqbLkAOPw0p zt0I)Jr)2V>kDz8o2UM~q{1CNE52NZJJ++m_NwUE7+h%g(Y@?`fNm!{r>3Hg|OjEWh zIm%X1zkui&>hwhhDgw)DRPpLGYCQE72CiiKG_CPem1Tpwc?vb6{y9Gvrm?%}g3{at z2_))1pR@}f%L;bNtp6SmJwu|lF;EdCszybXsE0975h{;HB_--qRjh~$#Pf_bYD@n! z{QT?Soui;pTM)4nsHcIw41pSETUVW~g20A44OBg)PQQtosf^SqPDH8G0FpG+X}54C zsZLAcPO4LRH>T8SQ5@>)?~vbHDs*QcQB(P1KLTl%IyLlRU{vZ>vASDKXr)*qL!hSW zBH>jdH>!G`ncO)0Vn4D>tfC;0=(duQ zRg@_r0Rh=Y0wd*lMmj?PY83S9a0pq7)~Rqb-<87Wts zh*GWrBxxwuJt4PBx$Y(Iq;i#aV@kQM6?|UoEes66@qOu!s-BX@qSYY8EVb&sc)co0 z)+$nWj0&dIDSm`nr1`>SMoyN_F_UZjY+Nl+#id}S`(%3bXw!^o>d_-1dWIf7m4S-D ztQr+nkLDSuwgo+^vTLw4Pme~_J7=jdjMYIW9_lVNp-=K($S^s<5jI2g3^{r=0~JAz zYE)D?dIJL$-BwbLLXo1jUm&)%{UhafMmlW(Y82FHEagfW`Z)k*jGba;b@k`xA*i80 z1JzCG&)LZQ8R<`)h|-?{Bx&f+Z;O1$k<;&pJE=eA-I&s!1wq_;zau##nt=#SWfiJ{ zGfO2JTBdELZIz?5tYMWVjd+e4r>9Wu$b6drNi(@|whA?(JgnrOOr8GKv}Ky=^iL2y zL!C~()6RA&OzUb?RCPLwfofY&rz*P!d-K$3MCEh-D4fXZpovCH=P_(fkX-)@j8D!Q$rM@t3djP+?t&oeyyXW*Bkpif&9u@tFgFqt7zBdFF@st$xV zlxm>rDW&=g)SzdiRB<9osRodwp;XTk4keZ9`QlD0Re3k2l?`F1 z%u<_%Ho6ETY89n3%s@(w1|J|9+7ym5a^s`dn#ql`eWijWV5RqD`tuW}5!2M4w?Xs_ z{rOo2Dgu*gR8;->bq1@LIQNHu zhT;rVHl;YPL8i}0apFXj;tU{3LvhZ5+$zO6SKLX(DeuOV;ymNr^&9eCjYAjVS|QwLNlV;Ije+a>^{1xIs{NJ+g=>&NS}%S0K@DAZ+I_6 z&yboQVW1*NO^u2wHScAhqT5PJ%_*`}Q3Vm8Z3Hk<-e;t<1VD{~*tBx3l$zfMP{tUi zPphubd<23SLNid=l+Zj9nLQ(+i4##mGk_!wq4}i9haB4cmAI2aQ{H7GG!0LQX%BTF zJP1e9Dx3e~2E)~z18;=i+*Z&MdwXNj;O1syYO$|St2Ikb6hHJn=lsqy#fzRP}b@9@RV7o`BBx?7cv@*3L~3>_TX?Z;_3+6Jw&rcBO%OwOpz-MI*l$zLjsB zdVFc1R4vrYm4Txx1MA8?xptZFTzMeJ(#*4)jpJA^c7%~c%4}&Ei-2{G!e9S;CTe$% z!%rH24=2{%RjK9cmGz~8e7U<5a$nCa$<3dW>n;^5-LMfutzM|sqXLu))xOQ}xH33c z9_Z=J39$#Sik5dyt`rgJ!a2FV(m+qWH$PY!DD>4gcjnghRSF`#g&mM$e_>Nz1#n?3 zdh?vzKqX%-4VDV^{6J5&&@YGO-RFnGV^~$vRVwt?+~44p!9uqIc)@I+H$RVpQC0IZ$;8_D!5HuRglkRHYfGKw zp&GV`*9f>CrFya4NRS7<(JTnh11(O|?wkSHan6KGbo+0V`!W%JE408)M7cX}5D;A2 zaq=Nk?P8i$RV!r#^D)Za0#5eU3%Gs5&)(UD?429R-n0LoG_9`dwmTa`7T6=w0)F@l zL*aJ}hIfN0XTXn;BOFh61ZNART!?JhbbEFI1W&NdIs0j5#qY9UG zBFdO>kG=0@Ym`TuGX5cb#)gjWeAHszmtiw{F;gj{oq>u#8O$oNh=Gc3D=K9i!$6gs zGL#9krHuVz2Aka0-=vF~_$@b}qKWWBL=R^%EJ>)LXF~Lh9>sbFDgr%dRMd83GXoW& zE@)I?dO&l_ExHsD)1_B4Kqn)J*3+deI~7+-w@HB^m?eEX!)Wx9rZU857^nyg!L-%a z7^vvB3NwV7_jKn+Y*V2>U|>tm6Uva;^28pI^A2vqZ!*M=!SHS{J>G;KA$E9^1`gDJT{-FXN-M3$^EEJ>h;3PjJKhf5f!2=t&)QR(5m3{-@=pizbC0dKV5qW2KBcl<{f zu#-{5F!qjb*?+i2dQJ)?!7S`AF|0-}Y${27hk=Sf5=>kDl!1zFt1wAShJ`q|rIWv) z=It2>jlO$u)<`5HtMXZXm@D!3W56|74hszzi=#^bBU$@m{(_CoqFX zMP-J48K?*qK%)vXL!yqu90ufMtdP9p&<>bW={PWp`8bBn=*3LsgjEbw1WsVus*8b& zZmTdSOj`72+`Ne&P_s73z?Ga4lo7LKgacw%pSor-sbTl1_uSx$B%*^LyKZ6Fl|UDl zL-Y)~*vddfpbL$PN*A{?P!Z~eMwKdEe2xKmwCUnA(q~fWLNJT@M+}?Mi;R*(-XN|hA8&wxDIr0^Z-GbxY)vzVV{ z*o?{%jsSUCApVv@JeM7vXjkEPUR6!4MV+_?QHwB^45*p#7{LwfcJ zjYxV#zKOmPTn&-=UkSQ9W5_Q9OPdD!%EfXW_B;}w5pFD02bx=)gO>vi=^}07PP)xQ zs~|J3ZGvA43QrlgU&gD_5Y9*2SU?--4pEC_Rq7KCq&^{6aULap2v((RHVDZFzeVOA zm>2%QJqKq;SIb>P^%86savE=^fN-20L7xA$s6XYX9#J1}cKs)u^c7wttR+Dw4y}`?g)MSK!-r$zeg(l6!rq>>AQ6 zW(y|cJ7Isrn24(9d{7w1+c+fbp#I0x^ey`yW0;)a2tR`8qXtb{d>a271}Z|O(Wt1E z=1&Y%bX&>qRKnlC3&cLl?hHdo6)Vr=->;s1Ra$Erd>{PSxM84kw~SUjT_!KI-l2rhAggzGYnwa;tXl zd%d`myZ6bvG`6gh>S`pmtSd)ve~^hbJu4+`8Vxy1mD*;gR0{^HUbXEYft0H)5Yn)n z!rQ#A3U0(KQmEbGYuH6*a*h8QZyMHCnpUxpOwFET+B8iydm=>7P_t_os0hTYQBl=w znSp9sP_rt#2HW%0Y(yn=P7sE%I%pC#dnLo<1V^|OqGzbt>lmmAYF4A7s@dBZsOYwe zRI>uHjR;1{?~HU70H{$=v%@E7scXLmD5G?(jeuQ+`w+ZmDBM6rR0{V{R4^GST%3qf zxB(<-DBMRyKIHz?KNfdV;mW%)rEm*)$CgZ#E%T6QLsep^St{BCTcvGPvf)i`kb(_A zM9TGds9t2QT%R+O8}r9Qw=6ZQAV8bj&<9{&GmV+1WPJsqXGqqaK4YgqOJB$#u&+iH zFIgjY0@{xOE170(y%W%|hG12O4N~Wc)`LPI(K%>;!K(45DY~*5etd z2)b3HqUzRnFi_ELW!o)CfX-ODw)8&3%YOsDISSIXH4{t8S_6|sN!Bpqx>B_c;SH%8 zsD4VSK7*R|jHD_~L`l^Ek~F01Wx}DPRJ~l>NvSID#*|de2lt1{M5v~x#ZS;01=s36AhAM9&bW ze`lZ~2vd!UDonR~fZPUCx^xwS0n*WjVJ0qRz0Msa`(pJPPHR(Z6R#BQ1 zv#+a24~Ec&A`MhJrAW7;LdZyw;zX1p4IoKFkuDN`EEVbD;!Y}3c{ipMX#sCamx(4# zYw#39%~F+`UA9o#R$a>90q_*zMI)z8mz&9rzroXRsaeS%Z|+AQJuRBnOjDocA$o>B zJ(q!sAWJl=czqhR6XL}TT*(ybFm^&5mPS=sHaMK8Q6s9LbG9&z)lGw2?a@{0Eex|0 z+~Ed@o}p6jVxS_ZRE>(NQoq1JMYokyspf8p0<(<@M#}e$bdCp5qo7k;Q?XR4KLvDA zN;S;Ku2y{l!W&vOQ2CTrJrNZ|Mp_joqO@uNNg7)9Igt;kRevk)q*j%8V@j)@i}AlZHnXvcF-#+ZKeZ%C154JRuuV7oCTMVXU6&Z$C`e zu@fI8H#C&#>{pea8nvgz&Hy_zP!V*jMn%=J2QX0iwWnpJ(Wunae`p73@yx~tBjtBS zI(Gr6QIN62WoRjA-wI_GC1|5L*p;@6;Vnbj1}dSFw)dby$w=DbM3l4*AW1{oE*E|+ zrR_=LPD)#OH>RZRT5ospO!Vw2Y3bRa{(M)d&|k|^#O`Z~ST9*m(&R&1Rt2_UM{+gr zJJP7@gtLsCM(r|_Yy527X;iEuD$ov^8 zPn?KSo&h9jD9?Y2d`RW_nz)n7Q{Ig!<(Us2WRQvYOzX3#AkZxJr@1;CrR=doSc2kn zACL;gkB|`E`*ZfjD1#~f-Oc32-)B*{ysT88OpE>>(~@aw(Kd*lp+(=qKt-Tcjf$#8 zk7uCT7PP3!uEEtjEgDhvoP&j7tPTn%EqJXBRbQ1DCMP&T0itJU(Ha94L5pfsR9jub zKt;Ee(xRcmGX&y{wP;JfGyHpJ05u9)v=#A6Ir?G179~e9#kz|0RtRk<(m8C|Lq$0gf+(|_$@3K*(hTp`ri@Ff}O=R);8p<4R5QlcSt)V4$ zy@~A9xHBetpL4$Knc^#+Ddb%mra16oz&R2d$i8z`_2i>ho+wXnSp_G!94$|3$+gSO z=gI>)*0?U5WU!3&Vn-yLNG&c+WEo#|hJAv;8M9%|HZsxn(m)Z;x2bmWOwe(xdR-fI zNpA7FLa|<{ZeBVkr}r!6#(Ydk0*i{dr!-Ki7V72705|gR(0DF@e6}wZ!rQMeT(kI% z;sl`1T$^;AHpu4U?ozFoua$f9wZTHM)S2^wbJwXEs2#?JE4gv%mc3*x$!Isl0q z339`~nx)aIBi8PmA(nfb3769F3V)dhFHcg4D17HH0)k6iPIzEo4~uPsM=@E#po~ub zyuH3zsz{Qr0a|DDT<+E<|2E8uqoW(fQ5IyZ|GJ`cXcn!xa8JT0aKvsIg?gE*os9YekWRMFi$kqksj(`iCovkpm zI>Jb$E8QXM#E?^*n5|PBo4!+6y1OmZiRJLo*3`Yt9zHr1Oxxn{(TLo6g3mDH4?voY z)L52#_^8N(I(&44xD)?%4<8lx#(-2nJ}Qm*BP3~K2BgfxN9US{k6xstx;o~y)^UW=VMT2EhF z$v?sLHsM&RJE!8@B!2K}0My58Pe3PTvd(Vat~3BgiGB(MFE{VT*+ZONTxF*Ek?PWp9is+~wZR#fF*^?^mQ1zJdxDL$y@)B;D#S znaPd$8Tb~ZZis*1E3?2D&*n7Tw=$>qU zG;gdC=OJ#7R6(o3BUA$_O>(Ck_)~^61ZK>nmoXUNAE6r23OL^vhIQ+TkmXoqGzX0~L3}H6BR@a@B-5Ej~8aR-7#krqHZWg0~lN@D<6OnCyi(*j4 zO*qQ(K*+6{l+B4dIVmge(wK>qG&>SAk$F8(IYy+3Mmq}9#7)^QO+q2mObCcUIc_8st$=g9FsxOY%!jAjjx_P=wv;AU0XDldal^XO zWDA5gq)8z2N}4Pb*6^C;jHC%pL`jnX66+8LL7Lnk@*&rY-6-y)G?8~>N}6=}vnSc9 zlXvpEAkpI42b`rq$+b+}s!?VH5TX&3-~-h1eg;*E%$3T$W^#>RjmH%@9l?@t8(>4M z9M2p_Io?~4rsf0qdgWVYfuyNd9)jo@dgUh!R0O@EQN`<(T?`|mit`i$Vlv5c9Iq)e zvXNM|DD$PHS|VBm=WD{YZly8Oxf7m_f@&E?vn++nq%Xz@mtZ^WYM06If}vdkCQ#bt zZscznX&0P`(k=lcX=s<-Ah$}p>@M!4c9C~uO1rEbDD;=IQ!UJWKca<$fSRRV**7Lx zt5TUFQ6Y_@enO4xT;U>~V9#8g%r=u7^Sgb-6^`4)8oFe1tzPA8ihnW9n5L#!4AC<* z#R>*0f~L@@;x&b|EAsHQ3{=Tvgv5|o1E}m8+{_!fh^TkYTZLh)4!UcboM;S8F}C^s zN}aenk5L8$&)5LbgTGR@|G0{Qitx#$Mn$#N2N|g7wvuz1QDuzkj>v+I9Y)GCjdb1w zphiKR#*(nqr4Ilw>wuc#URRNR7J?dzG*BUxB0U(HKO;qo6H$sZfFun?`c07!Ihyt@ zaVHh2yvs(B8XgnVX6i!lzrMr^43#+os}Nh6qt(}!KlV)V6VDX#E)7$dUtfkz(e5mP zFEksAWk+|eT3j;MUtBU*w)y%R_*pHG6yb;ZO3jjk460-6ATCwO>DUTUo6h#$q-wza z;(JmoPo4SVH_2O*sA~>um7!{})KpPy-hIM^3t@rT`S5qy1m^Bi|taoH*^ z*L%O+AntAymz%`pW^tJ~6<+*z=N7nM(Yx0Q=RVt z^)`9^n7rODuOEl2GTO$KW=eehW~GI z?ib-FIdX@7Jao_u?70`5k212iJ9)K%+!1*Bjxv=T{T>W`c z{rR=}^OXAYpQ3vH94Os-c^7c<~-2 zEdsmj6}>WcYPkkgqj{C~#IHldvKeZ8d2A2kx}Qv{nvFk$h5}k9taysJth^d7r;E#! z23)3#%Y)+bC2{G!1}^>LvhRD~a-g_8EG|D1my6yDmrKQE{Rb1};09@`Bm$gl}6vSobb#U2DT)rwU-xQbX2jQ|&T;8-5F0;ku zadG*DxLkETT&@w9&Kuxzq`15+F0YBpp&y0I5#sWUxI8Z|TW^EQ&Ej(6$KbL;TwW2E z3Ae-L9&x!}T=E}>OSibp`UG6|6qm1y%eTd4=#y|cPh8sWfXf_l`I)#pDK1yv372cd zWyxJ|d7HSrDlU`mhRenG!R0b>S#UpG7KzJm#N|105oZBA^5|-D+L|K|2oz^sIP!=L zv0bnucefTBwK;NML9tDSv%9#6j|?37S%O%l<;cZdVp7zRbE#sW(UIemLex2;monr$ ztE$^?)t?vO4^*2M)t^78KYvnx{;dA|RsH!N_yg_1OXAN2=kM^xc?B*P!orc2P3JYZ zg?J|JA^%KOa%ue>|1}U)(`7B=3R>8(E{Tv^;2c8u&?LwrxOpL%F^--!oWW zn1e6O*B5$#lY%SzPJGA`Cwrn%1udACL!EUOy&NL%#teDqZ z=`YQz4h_J!`|~zds_W;;?CNWGrTG8YyYc`zigLfXLkQsv_c4l+4JMld1YHv3J`5~Z zfN)MGyOZ7N?9MDRvw=WBR74`9BCaBWC@SC$DvF}`6vczXi>FWJ5IMvHL~g+cyzi^3 zKB}v$XTPtzXS3_eAHALKnyO!Y^;P|Tb#zs2fh1h{Btjs78ANV6sx>%N%H?!tCnlDOq4Stc6P&OB3o0yt9AoFi*%?r*j|LVLz7*)Y?8$! z{I)}Qb$eH1zmZzsErvj6fB53zuEs$LBFIb42=Nr1eIz1he>BGda49-(fk(?GJ8y+Q zT}~%lH#qx=>k@HY3RkGa`-}g)4X$UnUu^6S|B zF=nxzHMS^0OoUZ+V@Az)!w|WL-bEa+;A-87Iu>%Ek=KjOj}}rr2Zd0Fk10Zx!+5LJ zkQ1?#vS>t(HzN*Ya2C{%)IT1%`UqG&-7Z^*{j3|Jxc)!fm?MMEk7>6>gB3a2ACW(= zX$iYbyHf#cG&Wc1dF2%DTd4qkLB@8M;#~+V9EQAqfHqha3BiP)9`mx^I0~eYhZ1Y2V$l-bC2h(-!H=Ch^VfaVM3QAAaoe#r`IH zBiLTgwMJCNV0S(13ahx^br?V* z_S|#L*@bFvt>wGaJ!;ln->0b4mQTb)W*d4SOj{yWQ@-jG5jtPSd}8>JiM8?bR*Q?WpHy&2G`)OSp9Gr;r4rHVt6rX(L95pUFjODThp+)R%H(|d(S@hxIClY`A`vvYIP#LYsbXQ5aRj=JCzg-)0 zZ%o{CPxqy4GVp=sC+9HyTr9HTMtH?+Ao|XO#SFOPg~)>3z3uDh zg_t9E_cpv&`8gC7363xX<(2gQ2Q=Xgw0R3e8#N_n?%p=fx_g@}5IGPnw{RQT=561? zJXpp=!j#i^qq%uoOuEM2ZMS1u!5Q8uN243*P0x>F09l&gb|=BEZQsW-WA569{;N^p z&ml5@o0^7N2Pf#Nc+Oydsk>Ak-XH=%XSY1O!P(;|@DSlgV%IiwAV=)lw!KDU!pgE( z-6=qS)3$NiX_J)&{gc+^RTa?RuI(W-s_fs$IKP1pJfDXO_=V7lg-+07xi{r-+$XoX zQq75GE?2MQaFhI;|H);pUB2lq4C1c+Fc$0$Ur1t25|KuDk86+<4_$i38LvHlOF^eT zOe)3*&+M)Y3=Y+c`Tk0+);`z%y_U<7QJU8ry~qs|>wT3T7%*gsXfwi&AkN6qL%n9` zZZ`5`IT~jeeHkt3_Wnw5sa}JjL^x8TyRTz;v0STE=jHkft3XtQ9?#9q-(L^t>ce(p zC;gdP1~sbDUukt~)7yg0fu3nAYtUf5x+>MuPOANfpGp|wIjmH|B3XvoZ9gBLf9Av9rNP(pMwjDd-xgd3&ik4En* zZmHd=GeEhX1{a0OADGxtpfUy~X1UF~UU2P>QL-{%xRwfX(EAE?MgbCr0S0A8sH2+i zVxS__QiY0IOD|)fBGgia$|y^{usOB#(+uDnRV}?nxKRqVRN6SzTFQ&eGAtFLY@8ji z^t{QX-xjoyj>cx10`zKp{7`pfTYmRg_mZE+dP$T+8*{tA0qe?+PxF%4NCyZTyT*4N zhMNo?Mr7R6ZHBK;1e3RD@KBB#it)o|&{M^yvMnIXt5*_Y5HyA_kx)jQO7NA>AOED@}JNhlm75p*dOk)jz#~{`sO$Ko5qY| z3su+*re3UumfQzlXeGH_x+VGF07&L<8;n>C!~0bMdtQ&}kp14m;3gVFc`w?XAVwXJ?ojS z10n`Xi7GoK_wa=u>SC-}_C8Ui;*)c59Y>EhBO98BKRg&m=hhE0%=3No2&PzoM8` zMNx+mmu}Q9Z82gO*j{c;U(10HEQe)nMb`=30yRr~n)-6iJ* zGN0Bm$M^ANzL}m~4R+kG6P56C0h^KYa0xR|R6HknBNxS^UY*0{iZ$Eu3onW-MHJ4+ zTkC1Z7wbdSa;T~Ho@ym{IYe$Ne}?(}cKU-DF{PajPuXmG6si*0(&|-6d!yy%GwJ3= z=m*i_d`gr7!yvvVpg~gc1cpoB={b`w5A-&k5wX9)h^|A!B|pKMbG3W%R5>*QUsXmm z-*CSB-B`3@vz2@BPHeU!?)W>5h;If&@rqdz?dt*OGWf(UY6_ol_(Wrxap2P_F!=}* z#XVWfDRpTR%>F_SZ*I!F2`uD@m{U>^vz$(P+U)qah8ZlKQ|!;LE%Xl+Yu?f9@R1J4 zu6(JdwzR8KF8a?4b!Z@PrZzuNsI5^i)gIq@)rnD02Me`&eob+miaQjM6k_?}z^bB` z$WX1A?=E!r6;)UnU*1d81*4w#m3n%L<$SGPs2AN=?$Rx97TKKQn&#SDo89uBYVF&f z(e=H~o?d$`jZ>17s~$F!Yy5VcO>BAA_lC5>b6US0pDyWgs=0i5W-!BUFk?_ZI+PHa z`YX+YUol6#3IEqn?an|&SW&7_oeU>g257i38QXsyn0%yR zTg1S2g>|)SW9!<`;9#X%&({VD)%saO6=>jx;d|K|a5dln9AqZ@loB#UMbVvaC)bxe z7V??THH+zip3CaLa(^J*&=yFu?AsZZB}~vA#`DD$3{(VPRH%5qxSD}2xi3n{+4|x( zQ9{f0Dbooz4+VEaO7An?YHs%qh7k#FcOK8}-p@cqa65&H=XO^yuqAgp2{~i8i&FBg zGex*vD7YI^xn20J=5{wTj7V_1n|N+_I|CKL?G!4W+x?P(ExFrC$l1ExjxO_>T}9WW zOy`>&`6D;HbU{lP%@O~~Fe||kALBXViwsl*M^vbIjyUD}bkUsL5hdho9dVXEF5x

    Vk*6X>`0V)fx$5Ex<;{cUCuH3wyPddPs-Rt3q)NyZ`eA#}6_e$KNTpt9g-M_jFSfXW_M)_%_E4q#bwYghan zP6eH%uveS5tp8#MyjhS_C@5P$XVd{I3qQwEneT9b${ts4e$I6cux0miI3ji2n_f^JqOCFtvJQjx^4-N67Vbkx`4-lXBCFv)!@_;| zTiKYJ*j~dorXGO}L>s}t!@K{yS+ka3J9*V)A$Y|;vt~ufZMhfjyWb!iaz3b4;l9sc z!^y2dsfGLg#n8Pbvmw(FO8*S~+3hx`97r6tuR>$?h5Hzbu)=+eZOn!H-aLcK6wqB? z$r5|WM0R@vg-FC@`+k6okZkkgcq1ticYz!vM549(3{OA=hXvuz*;3srdV|$Uqgbjy zL2KAQ>Wx;*L#4`yS0DEWOT(o>k8KvmJ8Y+D9X6$UjZxog)ZiPuJzlF0`gLfiGKB5b zi#z-wZ|A6A>4|rt!h3ymPB^`wkO}Bd2-@hDQjI{RZr+p$G~>5taz(0e&6hQbG6y(TU1mg>c z&_oXkK~wW2kmc+swk6P8xzgLztkrzj#m#S2nqvcgEfj=8@H+}atJAH72j80%^voRl zM1-sZpkcrbD{V5@+jGquJi1(g&tnZkJLX>p?lBJO+HZ!sJs>6&Ac<~i>S|3=; zsyAG$^?F$10c$#Ni#*&cmtzCV?icWlfnsBDG*NOv)*mDno3IdhLJ&V{AfyAR-l5B>cLD2aD z4o4=zRXP?LK|RPp(GC{6W9>)vBCKJJLa_Z@n5LHD;-|)+l(mq{@qIQk?o+#Ky>Eub zNmT+wRkh^v>DUT?L?2~Ad|l`;@X*BUbu^f9mWq^UB}7Amz+yrC3}_x=DYh%9TO6RW zSQQjdnHR(vUWsKWIzW}SUPl%K%$q&i?ajeOf#k{4iDjdU4-FZg57)+OC{pzG7ln6n=0;8`dJP@<-2;z)@j+fEv+_2lT|1F1OU*Y^$lB!)f7dFg9qScW!X0& zUfhx$PY?~JYAqITE%z>M|}DH*f|SnPI*=%m=XHa_B$Dq`~V5ubqO9el*OAJbbK z4R-_nC2|0F^zibbcZN-DN+qE%zy0{$1eBuK9^=O(^pew*y{e zPcg+thQ4AMURQj@gotrp@%u!1cga_zop4_<0ZAUd;%;Ob<||%>znHJcem$*x#dSOf z#?3!89`{O|G+vE6?XV|f)U@+x;Q=Y#MgE2C2X>m#^Cl#0l)Be-fA95bcQfk1*EAGs zjc2loSwW3vwDIshprRsA5AQwDyn}~#zXMbjR!Tr+_VCo=wGTQ#mCe6nFqrmmb>!Xg z;VO2|&AUsHo#5Sw7%hX&UK0k?>_dP*azMESBm4lGcW~_v-d)1 z-oe=`IY4D$w**wS&fZQ3sAht*$A_yJLpNtHMS_ACAY!x(8W)hYclO@sfN~2)cpWtF z;OxE20V)e;Pe5hs?A_}Cl|8PwvnSO6Mu>GE}5BRM(t6gLz~w-`AjXIebT~ zVCeWg1TQL%UqYa`<97x@aF-lE+6j035|FfU{5taY9>H<2z}*k=7xVYnucwv2w-Js8 z9cp(_d(waM2Fpd*5DH6lqtziu`dittw}(A->gKg>pQ)Y<8wIlvn}K&bk1QUNL}DMq z`Z#1bCw5!N32>)ey8hUPzY9)zUB+Y&%PtjFY{dR0sZa;JEW<1Ix)# z=sBDtlcfdtEiySd)Sfz7at=}u92|lmM6Q*5+UOjVhLCfW1Ka3RxrP;e%9rO@a|8u_ z_9(D9CUFHcZ&yk|S!Lc4<@6qxp)pN;llCN;-ufo3{S^&4NsCPg-{LJ%s(i|jq8Xp! zLp=^M-z^_1*owTxyrq}GFWFn-@+jP-))Hl$h2@iq-;|IR?l=98=q!`pB=1=F&Iij2 zwICW;)d4C&@bVDDwd$C+4aH1Kyb*zA9_y>|7xP%zuUtLWAVLy4NVl9rxF9OHV3EPunh!-5Y9+ruc^Q=d zSr0n0b)m=*gPJD&(q0nJEoix^V>edcb*Ij4q@yg{$7Mum7+}zbG);SQNrcn%B9YX0 z5$31vqefD*_!M`l-L*bCQ>O_g3PnDU?D1#Y@^YVwpNP{mHw8R2vk62D>n=8143wgE1fjkor%?k&SN&P;o~p;~pkzXJ7<)_DWfYT4W1on0)~VYj)~&z-|zAn`DEi#Px;Kz_7S zuUUN8i`DL)4n$-DM>$e=l#wzqVRlN}rf8JTErvIy;xUqbomI3bj9r4}?I!Vt7@p4> zQ$m@CXjnQ%oQ#?U(HG%6Jb040Pk8&4-9^&1d|Zl~)g~AB4GvIQxLE=!TQ}<+4p3RR zSpq7VqH|D}MZ`2uUiiC&z#nq}I@|1p1Ccpb_rr{Jau8HUYJb%MarV@s7@GlC(+ zR5YWXQENQREo-yJlQN{p;w!j2AI93P8Dens{eVa|`8y7N$&)|scBZfKFn=~>jVD1G zKJUAbaJ6aPC$I4ow!r*>)qCWtJ5Zgr==Dt$$I9Mtsq90Yru4O*rR~3?k+VL;g2r)n zUh_HG(5TK@q!~0Z$Box~5L)d-HZ^NNG!d`)Y>wrJ6X|#Ytev~4Ou{L}`6N8S7FyUl zUGv$3z_JinQuo$;&LGv8-Bx){>UfnW*;%L4@<=aPtm_;`CcdOs z?F^Tej3#S0^bxU`V}xzHzFJdKyKB9Brmogdyhp}TS)VCY8lh`qzZvlw6(bSH=#-qr z1ZX!j@321e8V9H>+&lr5d5WWMM!ektsx*UOu|9*e%{;;3!&Uqe8wWAYQcDq`;H8Kd zErVuUpLxIm>lVClA2jc^_?81y_PElm&mhn`FKnu~Pw8g}fa;d_ z-7*qdY7GYY7WCSnBT*j!Vx{A_>9bZr(6KvB?+Dum(drQ6OpO{&lhj zGxr}t4{#p-Vjdv-m8%CBS+Xvz!K~vaE4Zz~tm@e9!KXKTVs?U+h>}RPPjlRx=KKr8(~wDY*zCfPrXgJ1#IZ{aWI zZnIxcD|h>OoJDzZea){o%Z<95@4epA_a%0l z7x@NrSuF|u7SmTmsJJdd1^bl?D&7NdPQ}R=r+~*>E${IA%hi#gQVkv7QpJPw2b+*d zWAJC89LfsA<38GKx^s(Tr1Xh&gGE}w(X^`q45S}MvfNv_5xm#LDdp!&N!mx6;ExO& zGhOCaiAlQynL#ruO&F;VT!L#eFM><@IV+0Gavr|VPDHy^?XGp}4Dx0vaT303zeJ72 z@|($B4e~>R@eisfi1r1vY=LbCgDI|k z#rwg(*=KxW9XDW`g<*^jllxuB1_aIhm&@~ovZ{T z?Hta1hMN_LG*v5lKkG=u1#>x%!e7kgWWSzPe%8jFHCPMnZ&dpmex+Wm4OELYR*bGw zZ)>&5TS;rYn?Bb-T89O8v$oEAS)*DT9PMj1O67WAVz_<$g}yD#v9V%p;)RHjTCWGz zF-i!)5WzYR^3xJA$Eoq#PDbX6q=ow4S}(%gZ(FN&*Sd2C`E6+gHh6CbroW%`;nH6r zuFF{}QX)O9rGdLAmqLT!Oawve$(_$RI3E@d-9a@Tdr;U7k(Bs-**%=c-w$8l3%lV> zg5gW;F>K=;z7U!RLu0#Nvg81jMWTg($~Mtrrvp?Li53DXnU;%EY2L;!l|CXQztLeB z**w%<8~txgL~iTKzLGJVMmN}VuHx)<6x|g*ah#s9g+ZmPBlN_UE)>;*vdRJl^hWC8 zV=l@379r|A4n(y`g7^R*fUO*V(g7+9ITlda%JIKCKxHAv0xDUKGbT)Z*8%8kQrkXZ zs;xBsJ7b$1q>Z zFdpFmm4z@0sAOSGp0?4(l&TwaRyu&3O%xdnnL<3v0cL%a&YJmhl|;A3G~vGXKKwL? zpPmQO+a~;!GKOf{qabS~wAY>R6GFba2}AE-eU^m_G3!)GBN=npSry z2t_;LL8t^IIRv4ah!MW-iNE-|C;sYA5K5+cA^18hmbI3$7|_ZFFK!(DWr3EJe9aEx zXvAj~-}H%Z!oU6O8?nweSq$FAYpT76{o(%X=xv;W_o~Zu!Gm~@&64-hYnfCXIImu9 z)&~7a-o(U#yrkPp;qQ5~g5B&-Q~1+Y12Dl=aBFk$GIssN9Jp~U{1mm8uVZ&_g4Z?& zuVlZkXV+J;>kaIBBV2=v7QyA!@aw$U!A<;6i#@%WU0=hluf+#@1%H7~&YK(Dg8!Nu zypBD3J-faEt~UgKgy*B*4kqCr!5i`NCcL~EFK>zN-HN~7ikI8)aywpT&xH>^72E;8 zH;*2&Id~iVfXMH!a8SR-%boZncsskkgI(XruJ2;kceCqz*!8_|IfqncAFCWC$@4?F-*pvUpn@{59L-^r7qd&hf z_%J^H2wwIAxNiua!pF1VXK*jvyfOG6`1g&$NAdmH!JpVa9>Z6DgO|tIzkdtY8-hRM z@6iw8X8Di7+na-r!xhT+-3NcJnhd_f|NJNa^9cX5hyS@61#CB5>cOM&og3?{0w7ib z#Am_Bkrz=sg3kd45@oox1(@;WP=%%zMrh3~)j^ylZxEdLFNj)Pjc>hr=7i|NXdIVP zhJ~b_eFQP`W4wI#y>NL1FDJYYE~nt-CwTb2A23 zgO}Uz@^-u&hB*{R<7GJ>Ox=eUJbF7|CwAjujR8Ab6i@OA*uhg+k3L`(?6Iz8z>2YA z{gQxHJi)z`0owqKncV@)1;LJFB(re9xh{4pj&1tGJREdlC6M zK&=kjheDGPbdH~%EzJRL+N7vR@&UodgDTLGJCz9=pH&+UK7;qzu;zk>I|kS!l^>p^ zd(ioYT22whc72Q~3!7UW<^_@)R18KjY;%{O7T7X^I&Rf9*#0 z%8l&tjm>Df!#-xB#6D&^9zPD4fTP@YJO#p+C268D0R0rGp4$|N3HPf0{!*pX=oF;&mE&D_h^?blGfQ4bGr4I9 zd3nx)lf;xkb_lFYjxZJ@7u7sv6PprvtWl3irq?KL_bVPhJPqQ9l{%b3HRjjq$rj}U z)s8l|LrV=@qq0rpm?#A{58u`n2EJT=sO~-5`3;879j1wKAx<2X>e0}!ELFC`eUA%q zUX8HvEF`Y-C_i<>&t!*Y$2 z3v2pT_j+TcNTzwK8&oIyrGB6T-u-n74WZ*me!*-j{KEfbQA&?Uo57l8S z{6z4v_BEo^@3rUSEE`VlQM+rse)=_=!f8T$Kvd+NCi_W@Lb0wqCCL7?I{HXsX_Q8m z8dE9A4*ogT4KO%)uSt0-xjw|4n!$J=0YgY#{JOk8zi;C8@GUL`6S8-QZ;94LG(fR z4wvM_eL~>n4g|Kq(X$z{t>yS{9H6q0V*!<|9G~R?m4zG&sAM^w%RHorn&vHX;$=eO z7dn8Qwm#Ll3=1esIaG%LP)0G`0x#qurjEqE!U1dc#Fh)h&E60Zn&msfzX>g`c7V#F zJe(u0Zgzmm9#`@SE_=h2fntl@A^5t@0kZ6;w{SFe*D@Tcn=6GVNwE#lC*eE7HpKS{ z@;>f>JPX_K5oq4Q$NQ`UR2H^DKxJzi9&&)nLIeaYmqZ)~Q!tcUYxQ&Q!6Z}2L0e==I;xuU9!9-l(0F{M_5K!5gh)W%yvXBG;m24sw z@&GH3mxeSgv23$GEcrFq@_a}S!q7?s&Qb8;SRW2Yrim}7g3dVDD^FY2 zf6xJM7UUFa%GSC0h67X<&W)o=|Dgj^_PCOr8*=y(*AyxI|Cj@8*|x$-;#Dv`%A*_sQgyfic!d={ed@wP!sE)q!sZ^24YEXOwm{%9>y z;n?>>dtt&?A-D@0xf?E;dV?Rvnp4`vjnS8e6{`?RzGd(<Ary03M8YGsFCYt+4B#f$p(5(|qS92DCa^}Qi~ur%P8 zz4~CW?Du(FM@w}`V;viBHvGD`ZS87r1(qaQvpShT;H`=?29|H@^_q1^QtKHg)=Pu< zauG@yjgEQawdy#4P=a#!Bnr~G29R`7lr(V`LJ%k0;8=lASg886EOa5Bn+b!8Xp#Mv=ERX z3cClV43w7>i3G`Oj6(9wXmbqG%ePT#Be@C3d9N%v0i8l^Fi z(_-BlYYvWj*y6|pRvxQ*rAA*5(+XogLd75~qkHY`06}MCuEU$*H)F*K1~%^pz~WyF zm4;c0QNt?@GwAqp7%~nG;TV9eC>3ufs1DH|Y9T1}SBG6L9%>Sf-Z4nSLnwStMc}Ys zY&78$Z>-pWQH)h62E^MMcQj^PxDPwCgANfDCv?z61Uy0K~^v$A&Ra zI+1pT_U6YFg`ErzYp>)=_8_l*^IB_|Bav8%e@=)oS);QRH4 zH(snY@IG(lf+pM=@V${57;(Rb{Z+gx{aV!^zKJ9%BD{(Fgu)Ny%j2==eua~VajYV` z_^@NqoxhEdOOo2O`2QY5vktr#3oIE-uOxfM!5n)GQTMH$6(Q3}$1Ls>-lu~7yL^YV z6u{x)lN{3iiU3d`j3eYpK#~?~|3#V>YyZ{xc?zY)AlJT#lJOukC$dCK9J(as724$i zpVo^(W`5Pm7bDpEOzMZI5EIoh8Hs;oD#QU1?ndJAD9@;!k?>cZ6!}|8)3CDy^E*)5 zgXPlrIG;{7Fn|ONm&Tf7FheXieRu)lKkyO@NwMi1XnhfPs`nyoiaV+$m;@HLV;l)4 z%Z1g;F%*T-DQ2p0>IxYICqWy;02QO2;DwcIR%b9J5iV$OXF+_Q@WJ2Y%gwPVIRP5h zdV%;*%j&Y&c5X_}H8ktMk+CTugON>%aWGj;$)))YDK;g^AuXn+gz7uv@MK!e+lK5d z>C`!Rk2X4%@37J-C41?{k!Zd2_FwrZ;ayiJ6oE#lWUB15jq4(bF7xHj)tEcw#9OCtyr*Y214NaZ(38oeuLcy^t%*j`SI;)Z5fn$|(kHfni;cM5C`#hF|f)Ez_{-`MHH{%E+}Gwv6+3)5eO zSTnv^AA@)+PWre&gHs8jY!P`#yZLjz=#SkDBm4}-yQWRG5CvfZG?P)dA5fc%QE-5w8pRW@ zbDeEI8ilKIF~F&?!`GrF##s|V=W8MJFZN-9uOcmkM0W`VSA9mWY#p>>yb98b4cn}O zNQ=g;BbY^u>oFwlE}eZE-z1|wJ>Su?MJ^V+-T)0d@oUT}h_I>Vlzlm;c#Vm1semYX zLU4FlzBr6I=Ec}>7LG}-+Jx?ntnFPEeQNoRIM(x(d>fA0aXU1eksXm5xv-;y2L4i{ z`)FzjUC?uA_`axNnl&b~-E8g1#X-*myKB96 z1{CK>k}#}W4k6$EbLq0nLi%2^2sV90jM$gdK}UJ8S{!eOuHDXmPQh{TuLuIK*9F6p zYx1nNW!jiKY9o_k+)yX!B4`+e45U05hOlhk3^eouHS>^0W->WqjeOp+3V=6 z?AH!ZS!_2FP}%NJ`LhF57JDuPR5Be82)EJ2N-sp7%VxU8pS9LZsimho-w2RLO^zOb z8u-YTVoMzcYe6vqmBQU^Hq)(kfXafq9dWhM0V;c3nK#oVy?>&n&UXMVEswl&u1$iH zX;&R5htAQp*j2~%gRY^p(JGr@;;K*I=89RiGY6-8Q?bI4wbO#=gYX@0Y7+MeA;%pE zX@R3MH1A+$QzRdyTG|uf@P8kfD z1oW+pXEYw8jkDuO=6`U&nLU|px4nMe0V<1aua3C-rUO*=xRSTM&Sg`|NGSLM3BO0U ze~$xn**Cs&ROV_I+#1ttd~H8*k~hBQ?DEe3m#3r4`xjs)2bcFChrwD%h=9u0RLR zT{{K-C`_fG=%dhH{@b+?O1@pYj7)|947Y19PKMsn_G%|WTs*`4N`Cjd3 zi(Sufwt#;{6RNOJ@KXjD4454YlZkq?3xZE1I{b!+PAw~ih$8k>^n8WB(NVZE?$QXv&F@jDbYlBb5q_{WL1%3=HcG{XyqYF6OWh~b{^GW zS8=&ff(=3uk3&^}UR?L)OkOzW%Hu-9X6B3_r)%f*U6vDBa@64A9VNrKTfai1XmiF{cxRv3?Q ztfeaqeAuzVn7a+IC?)Qx@uj(+(>Lir{#aR%fyfD<#(`u_06iq%A;k%x$srl{Zy1Ls zC*RE9#u!zi)Pgp!xm^ zRV%U#bt#tAYM?#aLj5MO&_ZA#uK5%$`n%~H?(DwKiJHlT{gP=?2OTDxFb62&Y}q%u zLJ{XcqL;2sy)rraaklKWtcfmV%ifSLGsV-BS7O69(-S#c_L)f^3yX<~`bnsAcm*UH zg6`mb;sxBA@5tj+#Wz928B-Mzc~i|bBtMq;QRE51;eGkyFy@|*VZ&LtX9>>}0S7Xk zqlWxa$S^L}B*pX_Y8^GMtDx)X(dZ z4wqmTW2ec&1zobR++a5ohR>8cD~uN#qjjDZyxTj!RBv1gbIi+ny*jI*RT+VUJsWVY zClvp~V?a+{y?XWXSYvkg^v>guO`<3|4W?<-OqK-UrD}JrH_U(pVVPuxB;jYM?PXg6Z;xdU6mr+Xm%3-MOD4`HQH}|o~i{{2c*H9Yr4Y}i+V9;QtWvAnC zy;~h3Q9bl)5&0;5kF&k>j5s3ue%{)DwsAz}L-P)f$YBmpS+IkE%GSCqbAZZ1V+*Kc zM`Ul9Rz>t|qeAdiLf%syKu+Ug3*Q4_$fV3qVmzanOgJ!~Et$7C;LM)Pwt3`52dFIa z$Q?zZ>Hw8Ju9Q4-7GsEnf-gn#dxZP1a)2&-9yv#4t~SE0F-;zM`#JSACW8JA*u*x8 zpegW2AqWLgM?rh}CxRlBJQ4J6WHJ0_mL4(_% znEq9hh2ReO3rt^uwGg4m#I7F#G%B<`kC{-Yk3nsc3PglY^7Gj{`T`XQ3 zy)Ftx^up;VyHf5Fmosd&S{n-^#ha@Y9|FSo2b$2Amqpc>oR zPkKFklS`}el!)qi4z#qu*7F$J?H8IHpt2BE0hO(&jyOPNA*uqZTt#)l0p#fx)h6Q^ zjn%iY6C9yk7S%L|I21rtR2Pxg!}mlOmOdk5dWQoYEyVOzhH`5$z1smQ3o#W?*^22W z9H6ogQvsDMrlR^%nBHg(#HO9T^koOIvx#aR1*5*eI41{TOLf+*(-w;sBL}unMSbg>~OA+B@YI!YZK3U09ED0DJm{^)P@s z7blpbwY$Q4fEqpuMKDEF$;;t;LR9H9BC2ON(9uFvH!y@-i|U0AP+5qofXY@>FLQv( zLR1A*vZ!X7sa738&L*Y|+)T@x+ZoT~U{N_jyDOxJRMO+Qp#-XuItRZ9A9Dfaw}@Q6 z!GUlVa`{?@V{5s5hXYg=aw(v)mCFx1KxHA90xDT9dwBjM2Jb^^+NVB##sTz<@(EyP zOF#G&=N(%rJ?t=43n~eyY*Qb9HL#7OeBa=npRL~g$d$noH`iK2%SABe;pllOnmN`IWkuc+^%ujNF%7XO; zRC2-$XR=0l$rgQ>lx4FFwbx#^Sd2zW>02Y ztME|=s4T34Bd$K}0F^ziWUJ6=Io^MBfG)dT;Hb>iF1R(ONuz9^Vm3OYa+FZr?Y+)+v_BqwGc?fTQ2!L z?4H_G^I=1I-76-Fyg}w79O7Jo1Ayx#sOK_PY}87-u;LpW7hLtK1C1iQP{cIDxP=*_|F{cdqF5;LPEk9mQIy+Jslfpy=e7UuhH@*pI&pcF6U5 zJ4Z`{qvG^pEJBIrF@ih{z;VRYVbL0tr^MU!(c-v|ckv&*AMs>oaUyxMr&zS+ zHfw-Wcnk1V93QV$;Xr3VGapN}va(#N_{Ewx+Js)balba`k24gAp&)`dPN4hoQUma@ zvjnh0qX+@E%0?WPq)n9FV-t?cx=K~59X;gYi2rCRSRfag+h5^`FyO_*mzdd@WEk32 z!O)e?`ASo8qU>f|b`Hk?K0o5_l1o4+{*O&T`j}zv!Aqsn z2b*SU)iLG^Z7Plp)Jj7mzIVp-4vpjis5qJvY7w>N24)>t*!mISe7hJEw^TRKBiJ zStpvwX~dV)FGYOW1KRuzhUOhuJ{DhuI~3pJQG7e)B_idf(dQ)PJzUCnGk6__oI%Pz zA9C1r4vsP*}{0f@jEvynbdPE@gr+_D~ z8eS%+XmgpEvMDLIxTqB3Y2mg@*PL)duXpk(C!LrS`*2!ZEZ3{h&0x7Xgn9+$(cm-J z#){?Am2B>&7ytid;}d$}`k6sBD#v#j$w`{NOtW_)Z?Iq@TpHr;WzQUA_9mOhT{IxR-S}KX(G)ST%?A)d2Bnn5#XDQ63XAfxe-!n9y zNzf7QP|#Ccdeg9SlHA2yav$ox~;5Tp)As$xrU7FX6*+|=v$`@I5daybK zffF#-L&b3je{k<&1!#%EQC35C1ycko%B6u?wO(A&2RrIn*tQ5kSBNnW`NKsxEXf-$ z){0|31Y1~SCjNX`y=NOv`ym4E_YY&pyS^KF3P^MzHAYwU6{lP6_1{HxU_?P3>`SgM;x9-$V2&<%Lqg}wi?-jh`4lE z^92cL(}z#Rm`<`~vpv_`TJNEN8gU>O8Q))FQi=-G8P?+p%G0Cgas&RG{5Fbg+gS=c8&itoV&rfE5aMj@agS`Bp4h;!z>tg7RQ> zY`iHJN7?#jtvUkc70xIdtv1U;-T+@Wg)o~Bvw57^*BiqP(~*Q}RW-tVG`2vR_5xwX z8}p@2eEQfcq2bV$DaRG!L+x6stiRI1WaD zxhW_5wg2j(ycvnASt9^4`scynZ^JVF=iois=-+pf09s~YNZt!%gfN3?fUYW*Ro#6# z<7x+filc;AvnJ$-f3zH@taF`)3MXD=g=xF0ZQyZaXd!1}#D|Oyh|x!pIrT78rNReM z8_H9H-S6Z}=~!oci=&3q)GJV$;zKPP$V}Ur&iJLFNe3FoIwLs{S!Wo>q174fzgimW z3@tklGMbvqBqZNpWOP8FyO69Wbuh%4z|16{U)|}~8*~jC1PJm9;4YZh#PXFYC9b76 z4*QCpR~_&YOUOacu-2;L!;U4S^Fx4-H#F-om{>}ZgOR1gI2NsxwEybZPWXX{iK)#@ zVsZeZr2_`t#bksOT}+C}Ii-=&c5=d3@PxBksWu>yanOg@Qn)V6j_mPPd20=JXAyyb z&c>x@gbJ7B%Y?B+ZDmy80a3+I#fM#xsKC&y13$zPl^l#LQO2=oC93^b>$9*9HSxyI zWD~z+o5FX}Bw>H$1=`(p-6VsSZ5XQMqf1RA&!lAjma(@3Q@JadQz_abcXbP%?B#pm zqBI77StuGZjCc5uk}_se8>CH1ZO~^#ZG0eK631%eJq)iJwSf<{^q2X#GgtMKh9(`T z8>@`uKxCC+9EVnAwEt>p2dqHIXlgQ(c)XL5(E)+(;xU2A6Vkc#%u_vgI67Xw7q$iL zD8UL23JGjVC{{+AWyqsP$9|^|rn*tb6cBt$lKb&FrgnG*HBG}5N9wG=#!vI*!C06c zWmM1z6F#&MCRhQN%z(P}@_!6XI`Bd)Ok^PPN%h8o$QuZHR#e$eiDG#L)pq-Y_o*#g z_*FfY9EKFHNhOCQ>j&eAwECg_S9^mf(BT=sku|Ez!oYF);*YX~mVFtHUeG0JCmPg* zz)TwShfH=ISj=664uG2LXUley8U;l1b!)aCY3XQV`%-vC@1VG^`B;;6p9f$?`H6BE0RD=4FN^ z9mpR`2pNd1G>rqvsx+(l4k=ce$ssMKTuJqsadXGY4%*p)YVi)h3zTwJqWYbtPnXofqjCMQ6#nQWM!W^Jr znOL_&zpllL#PZr7>r6Y}{ec|vfw_}}zCmV-kSbMwB~a29SpwK5*o)WGa-UOgb?)F$P?rsW}b7L+vN zh1=prr3rRV{Dhj}WAnvO?1CI)XjqUfF>nf$@mtws9=Hux-)Xv!H2StFHYXW?b>I^l zEbJw_(^iAupA8=8J7PPwG;(v6!1JbW*s@n@8nuJXjtj{F;j!zvrzZZ9?p#)JCQ*JB%WJ{;DT@IqUM>c$&> z!gas?HDbRfkzF(eT{L<*%VB-DsNJ<*J3|V1M7$CoX4fy_eqoZ-6yNj_!STD)K}Wln zwK(1mT?b{j_^ERirEJ&b_&)PKQ*a!-6G70P(YM-`X~Utbr{*21YbyRkE+9DvKM5am z=H<5t5^Ir~wNSobvUK%uyV|{+a`N)=He{vYC1;qqZ3U}|OVmEs?JSI0>~UpgSnX`@*$%*E75QBr*UrQ)`fwa zNkHq2XEYw8jkDuO=GQsk%%04)g{SXyfXbrqv?H$Wae&GmSFVMpKj{En_QKN~mATpl zx5hMur`u1Q+=5D0V)dv>xiqK zhwL43dt5oXyoWjfmyK(4b9p&A+?0q|{*KF~w^tw2ST6lN;6}G8m!1ND6sA&8bQ83f zf4Ovol9x+A3z-W48J0_5oD99C)k;r`*7N0+@Mmvg1<{i` z=2&Gqj8tL591BoK`EfjE)!{cJsC8aWq9a#9n6WWcPMLGauz@nuQ<7mD0fVmh=)CMS z#U-#GuU%h;4YRfDm?_ajcC#eIX2zQZ9)p7{&Uob^%KnU2aCp6G#kr;bY3pu1!yeOlf!35LiktmWxQBDe34@+T|MB#j@3hF3E}@~Xwre?v1%X# zkuz9~1Id~Y{+oP<6eonI4~e@3_^dvVqN5qVN;x+R_FQv2>}%L_%^h^TVz2+Fr*Ce= zkky%y7Fu=I{wvFDZ)1aUMweX@{gK^7t5zNv>QaoN)j(acz5AwbxN^3)X{?!S(t{vw zPB~k$O>%%D&i1ajLJ?<TtafDNnt7Sgy8VC`Qk99Y^f?S9&h9-2)V$8waA-Kr?xk@?S<3Rr?)@=x4a@HR3I1Z)z3kW1D!X^h zI8-64VSew>K&Q#Q$Lf+@6K!=fxA&$*KZQiO(sdp^a<&&vYh*{b4f3WI?wjX z^HA^2jEgj?*Pb11oE<}A=8+7lKo;7A(+y!LkcB`d@Pg=r@EtC+iTi|>I~-_fk(gQI z!?G3G>l~o65Lp40t;oLK0V)fT6;R0(6-h;%32a*G|GOQ)&L*yTPYN= za=@BBv2D{czv2LuMS7+quD;^{l|8QH^vu0sMnIJuyF=95PaPo3o|?(g*j>wTsBS70 zq9nyOM4yE32-^_fC&-)q4QtQZ#(w?4W}+1iGq9H6og0RdI+wqcb6 z*wb$tjt8jqQ8Wwp#F5zNI$+J7*tWLeg$__z*ak;j`3_Lo<4U#-bJt*0h^jepkEpo1 z19aK#14m_d?ZZ*VfLMqb)ky3Ueiy#NZA5&V;IHL?KMVQ10h)I(5pQ*X%ECklsBBHd z`yHUNkOTphY$6th`-m|d8q%~7nCJaz(})Kgz@L6oaUbU(TUz~_!(c6FC7@EK#cg&F zf6oCb3%+*5)z2NEvd5K~VdpUJCaUQV4q#dGYp~_{vu3d)8wmdP}Hq4&921u%Qy0_#Km-NGBlxWENFV<{89&+q~UCOBIhpz==IaCG&mL7 z#{0Y46Ji?ocRd3_6K(c)rNFP>-}T?HDx3fQE`*Zr@45l`3jZ1I?^={tNKM<`l~}Rl z8N+`d>&D=7cfP&r9b$VIoDA-FIr;bB~Gt9Yz6JIfw27qduGgQ?53LDt^80!N zv;)p++fglp%wcgY=fldxf-e+hW z74vTAdV8*UgLGzC`>$TI6*!@5>_jY&2^d$M#I{&J$=JaG_3?JL-*Jv=E+F~6QH>DU z(`|h@n&^oWgki(EIINDIbp$ydtOCOpAI>X8spGg#3OLIT=i)k8t%1WfUabtl%T;f+ zH}u>-?`)VQ`n%Z4p*Vp7Uv<0>ju1}HJeT9!b-&SrJ)jGT=NOL{YmK;-3z~3i!1qRK z;1>Ed?62Zo>DQ_WgZevKB85e5;FR#nV6+g!ZLTgkZ$rM45exjO&~Rw#6oJQw9SeNt zdy_6SH0!`?@syMdM&8?P98A`|-Nk%|6z}a$4rzZy0H{A?93j(WvhHjDMVjtw|JC_< z3Z=y$<*j4~;khERL`$3Am!!NxySzGI;!=Lq$`>Qp`b_GF7zq>AG8u`J0X=rXU=f^g zHxf@od1~#91SWq(g?f^LQD{x-Xyw$ zHvmd*lAMf5gpJV46viaJPdMS-`SNpYOy15ofp@ML6MU#;c3E&cHzxNPn$2WP$Y5k+ zVjN6XWAep(hZGx=pKV+nNrail@6v{U*GY}axd}m;4Er6x6jN;2e-P#zDt4XD^}wfNR(fcnQXDG{dThflR@w+{voyJb#ek^g z4c;lROBm;K;bOrc8v4dg-)Ac(J>!0HyRiRw+&#WoAA>kPPW`xBz?_GQzXN7_;6kwY zKb!TP;%>y_v`UiB5#J^>KR#dXjZOG6XjnTR#D`kemeo(^CVYdT*-WBH1|yqr<6yFy z@C)-DQf$JLLy|3>aYR~6*Z!;Z(QM8^?5Hv~b|!Pse%px5N_K1!c}Tk{<%|B<(J;c# zP`qo}R0~lMCO|V8g=Yb3b1@1IP{b9k9(N5)#AF4;w<8X-K8^7sh+{qf-FzF4+40-Zu#@_X*%7Ic3p+Y! z;JEA)OGct;>|cP3^@HUiWD72XT-))9J_g?jYnN@D#wuF{6zQp} zvh^&ryBSesDzKIrZhF2NNQl1lRUDaJ| zO-uo{_LJN;Ev~dLGE6B?37+2AT|B*R3h;E4(VNv`t;5e44%@s-FnUjSG5Uci!02Ht zyEpWvBfmLWLrN~4(7`7RlZN*Q79Z>`7C+;L#W&8G1+EkP7hKviYnDjTX=^i^^C#ZdPcTxMyDM0P=jzc?I z96L0@kZtiD!TN^oV*S)9!1|%OD47|*Qy3%U#L#r(vn_(EY{FYGQtKFr*zvfQ? zn+4=J%Bd;z)P4n_n}wc!;eh5;j)SeL2Sm^0gn6S1f^ppaBwDP5J z>@m<@{)L_pN?z#c(Eos6_|K@&Q)0y~tS0%!!71xfd?2h+0jUGPY&3T5GJ_3Kd{r=WVlAf;YE9;&vS~0HVFJeD_c{ zIv_gnXhdH$c$&VVS;g$ASjS9V{N*G+f{YqSE~oZwU=?_x5<-KplX;MBYi3#S!_{)R z3QImC9_)65jnuGlEkXObbox%lwg|aa62S8#SI~Kj z21A+#G0lU$4bwLI3T|Y_tv{F>vdx1EN>G!j(!kE)27MJOrtN_I6>nQ2Xc0ELva`26 z+#(Tmx4b9ve#SLB{tNPP>#b);^)e`Q6nRm@63+%_BMEu#f~Z_`h^9g6>YroaDW#mn zA_7bV3-itRiDZxsgG&g6Z7(!*;h<&W{6vI3+@>LK12BzCF;jQ)lhx8Z4!ML{LRRK- zSviwI;V_VR=kFPOAX0gV)-$=>B(zIHmYAGGB#_ymia00iuq351N~bIE8;vzEumS=S z!9iI89?>p#8M<)5V9W{#yN(r1Irikl-edG*uNMErf|iA$U;U?Fou{f>@;oqONOQ$P#E(9!W{BK zPwX1d-c19`i7EEsO!3bQ9ETCLWr}5;IWNm2YREkCb0h)biNmx_QuO`OKs<#n77@=Y zf`;3Ygi}Vlc*4+y12$v+K-fe6klhN?xN>3(QTXns3<`&Vv}KERAZ}UxT8UFyr#iP8 zl3RGKM;RNU9B|NgtQ?jEC&>;=;t}oQC_@(xw27GvVGo&XE}K5kj;+RKr&w1_#h7Hl zF^wlD!Rg`pbbp3f2ja+rV*^(37)MU0lc$X+b%~bl&53@_o93mCa&okqh=weoidE|Fyv&M;dF>Itl_mXc%{22 z!UiL&W5G$>4pa457AlX;l&*xSeKIR`8{h$JS3*f6tYKGT#fdRwSB5gutfcw`{h-J5 zyp@R^Hru>9E0sj09omGVD$Eo!BRqY}UY#gqo1Ml=Nccy=%o@$qtT5FRiH zi{3yJt2DFt5r;9_v9qnO=L9~;Gtb_NtwLobD9ZqmCLcTFEkZ-A*S?+;`MXfs4?2ff zBn%9Sy$^1WyGl$U`{Lllg9oISBUFPEuiOd)nL>o8V>>hzO2BSrfhR24YFnI915h&v zo#H_)rVJh-iqE%_%uhSH($I;6293=dLLZv9V>^&H3YOK_k04`*0AHL_Et&bll87KL z((YSRft3Z35}}=&#%^Pg41ue~T-jC_jU31v8_MmR%yQuB@4BKBBd(U5&)|bdFEULz zCocdfZ9ZgR3`HgvZi|!FB}VLtpU@8e-q3*qp<;PN$U}LQi+P(yl@rH3gLB+n3<`&V zwB@)0D%(zsrIv{vM$~gA;;V0+H%XkOf6teMY0lFA9Gl;Z#1+)E35PHqil;79fBc0|6Aau|SQ;NH)f**o9!sLc7@SWOuB0wyD~t7| z%o%3BwKr636nnY93x4m;(Gs390>_<hYg>NQz3RR z0iQVWNe`z!hZ=@4=k@{COq00D#H&B8zb#QtFwR+fq$^s&A*9rl$-X3Mt-&eiJz^T>`%FoXgiBu7 zeJ(kabIF#xxWvY1>L@fT6wcAE0H%3LqD{p(OFVYT-e8>1MT3NPgPc;ut0;;9B0PmE zGmyq44sc_qYpjGllu&vHYp^rNr~$$P!AW7u!;^Rf(*+qlJ*Ws!Mh@HsoCP8|G!U{Jf*+XG%Jo8%FW4Hl%h?Sw9ZH;PeaJ1MQDpmW!zKZ3(MwkR# z@7of)rEtt^vD|=OMn>UmNajG}Q4COeYZvQe2##j}*++>A>o_+c>v#eeL!#1@^&TPN zaDoF=?`jS<{Glk-SVXHY=@tek7r)uS#fs1@jtS}|H{K71xl)bRVZ^MSz8TrV5Eiaz>N1nN-{s2&ReJt6&~RvC61&IX z&5kp4eM-sx)$)N%mNSl4ui`MbOit)+Hxh}5HoLMYy1|>@;eX83%MCd_@5PD}Il5_^ zi?x62xYMA^&#n$ksBK^MHKtT(?N=n!9yC^QoL>sP&}JIVJ19OV$2RGPB|Z@xGcV#D zOaTcUGjy(KbMby4_UHsSZEzE}HKc(T{sWt8R7wyftru&Xg!e2qyq1Abh+<-uRyj!O z1&6T~ZI8&HfOHV>+)7YaRSfg6Z5l?^Y83T`(cc6ZwlRoe;uakd49u0&joN&H5jSb! zMaKJ=xO`aLmiuiI=zqB{^UivN{i^FV(jaZrb zjl+OI8RP%1{YERUgM~gw)r*|Z_*9b~-h#+oB}(WioQ^|(IX;zfJv84mE{C}&nA?JG zMdg4*`3lWQ zU!c2_z3MyRLqgZ%HyD*4&Q~CmrFoF3Y_K$V(1CNt?WLqy+d(TYgctrpkj zi;~)EF^-aMo~#%d%~SigZXxp&OGewql#M%8R($l%X8uUZg7|sKh42&k@>6v;R%nT5 z3#1*%fTiz%_>!5!T2G3%(J52cwhVCG%46DFM8SnV+L=i8Yp|VBX?>BFjKOde%C=BP z2b~G+0#z$DrfZNci9JcTJt|1pFyWvzfXlhK$}lS&_-wJ^g#WD5>r# zj?$8ZKywpj#gI&&-odqhBW?1g{adf@ijp~C>)S2;I$u7jZmB)Zo@22e%of<1%4E53 z0_3-{<^Gh|R-({{d-0hpH*U~Jru+2q5?E_U!K>nSePp@AN$o-%lY}6RpGF4-$|MqP zLpD>fR-MKz-ZACBQCJaMKuN~?c!*1a^`^d>~(xls%85v;(*2oTygxlI9I{MCTM<KJ9k8n($Cgn^k;UHs77Ta!tIF(lc{Dd1I9aza2u(K)eihF|IozD(V~ZJIS0py z(+ftZBhb+8p^LoPOJ)wsg<(I%A#y^ry+~gHA)|FIJ%sV)Q1jZ-2P~^Zw-eodU~1Fk=X}XvQ$`7_69uEFtMWf)&KhZlG{V z6=r`hIi0HN(ptz>h5aclyjW@MU+6=>krLN2zo@>vzp#I4Y(r`PUUdWim#^dP5DIz~ ziVNY)_hh+NgDmy2@G;8(e_@C#cL~*H<`n*Wz5=J5!Y>n-4a0oAY3yh8{;+2Rc&6FN zxp0ZA=ua(8W^xG`BDzaxMI@_B_+Y*$DVH#glGP=&qNnp|yOBtAHEu12)!ll3g7xQZBk(O5#o;9%j9 z!V3xq_lAv#S{(84A|^l5^2zASmC^=SN@@9W>;qc6p*NX~KrRd^6FwrGK6RPN#AW%4 zu5vgpg@%n$NW5w6!1OM+((kbcpqkkLg&J6v9f%H&@O2m`Ytic5 zUtbc*bZ5I57`(q_cUYIZ-7n3ZpGQBXy4(fOu(8Xw%0iqNQ^y%$A5Xj2V>hK6w(*e zLMqoV`ryM@Vy_=FyKv*RVPQ%zj+{uQhTEZ~Sy!xVq@h54n#|1@6pxU0rwCRCERHlu z_#kFC$ldsg`d)4}QxpS7Gez+`jE86EE9%M=y_R@r2sh)+j!luzBL9lz10Hgvj8Yse z~j=LX_wmqe}4-x{QtquXaI39{PftMf%k+2=TSb^C0^$Y`J2zjelG z;A3>hQZP-oL6XT@zZ$r)m3_a{$(~JAVHt_;`SFCBgG(z97CFBsL%?QodQ!~SVRa57 zxhk6qX4jUbyD0i1x2&=2jN1Q}uZSwU`dOm3!LH)Xj_qpaF5dSn&1SNu3>n>oSdqzU zLVlGmO3H-9QQ9R%7`bt_;z&kCH$&~;NXyr4|JL(6QxGQPwpKHllz%26_Yf^_2k^DC zp+cqHqfg68ps^%vErh|_3T&byDn-ZFwt>S2FBj@i{4t(_AUr~ugMbSJ3VmbM%Cbh- z4rUj?dytfXyWjNUXtPp;g$7s|y1JoQgG__T<@CtG2g!$MNV=|AN5d9-2pSrD89WjJ zScR1jqvds_iTd(^!ZA?&lEU8WO1&y`Labu|*Aq(sB6JqtGTOh8t)q*sGO^h8f6Z3N zgQv>&?F0=QhqrjMW82qR3d4bxCOr^QUL-?Aw|iDZvf8~P@hW8NU(@V0QOiT!ghiP2OpFm!?`m@hJ6JYjGaaXI?Nxz9!Dd>LLkD}%MujW zJaZHnaO)E@5M+Va5L%;1+ETt7W{w;S!;-%l5bf0NeR$^3)N^NTc0H4)x)^ZW%7fo; zK;~Yl2Ah3=H`&p0*HcTdV1brxCg78Myoa04r!`d8H0zbg@X!XFB>Re zp@!1=v|9}=nJ!eO1}2N=_r=;+j!)N14f0+ms?%eoI#fN!rBhKWC(G)k8=$yfR2dMn zZ!Hezq6kZEz^$$`r}KOH3Y&5|zeOB247l;8u?N=uh0X`uzp^x&$?;^!=#HlqnXHcI zei6ft%w&F;39%6_Qz!9tG9ey>@DFFa3c?w%N7S$|@NN2uC`gK-=$L62>u{j* z|L8<{Y6>##z@pP!6|@`+rpmc;5qhXYJt2H9j6OhRA1E(-ZnX?=7dJxATrZ3i`VNAi z1okaqnV;B4u@n$g`WIyzFi=Y|T)lgOc`*qCJOQB))m;@Uy{WYvM7x3>(B$EIi%}z9 zy;VeOt+!IwnW!C+ufnL_>M&^77$U)&Ms3n9L+8EKD=f`=2)!ELGGz4L%8E?Z-stx)NFSvVq$ zoyM5?;wo==b2m9-)Ow=+iq4HOhuMi33r0E>(i>)u6hnHqkgcQ1K(6^nuERCSnTOYS zqaU6*VjZdztCK#I^@BD6%H(n#3{=_5q06KVyUXhfQOm0fM?f(ua*)bmb6AK1gr!g6a_`BH;pDetMBu;rEw3Gl?Z%rj=wVV)`R@YL$kt9BtCz}Obas*Hb66V3SS4w-pZZA2gh(H zbIK^CGnFOEb3-7+Lb2RK524QDSlAi7KyP9JTy0d|C{^m!8fBA4Q~09#APvrowGFU? zCgi-s%zk-8g{l;UeSv_6x&TN8fRD;Lg)cnJ5{m7ix43PW*BIXp%U5!hVLu2OHV$g> zrqLGaYT1k7E<#7s$c5o`u8hZ98qcJR3?<#XTT#kt-d~$9O3J*)QL+wgt?20-qwHU) z8XC_~e&rp`wIE*{c|!t z=haFZreTk5HU|N-1oVC{EqkCeY+AerOK|whn9v=YM~FEzy14@{K!U9)^uq8uSLUDR zOMlg$++%52jAIXg5KB~Tz(80IthG&@68osdCn;RfsIzyp@Fe9~4#XoC#4`C!R_v&o zcwQ&6#G$n|s*`LlL9#SK)abRRQDXV$=iF!ZV7pALrIJ_)-C_2}MjsEW`9ZLZ!gl`{ z#KfxyQMMaRST45P1Cg&s=6|oBnpx=4@Ta4O_xo|8;XrL(JllwQUvtjXrdD%dxXEX$ z6x<4AKc^MkE`IKypYi*H!%_N9I~iE=LOgqQboLrJ+Y+2k$Jf&F3_6}k$Ft~oHXh~X z^e;UT+PEHhd-lIVL$oXEFrHxtGZfr_M;OIjc|v*@8QcgDV8?kg`~sY}h@Uj5n+srg zTZ1**t#jb{BjLNv!^KvL!y&$X%W;<|tQ9y7r2xlE7Zhs)(~a^(eSmhQAExu=t>!Yr ztpTmQ*7!w3jaE^hI{wWVb_!#T=g|OGx+`!zztg-{`&OU)UvzJ)AZ-hF>Va5sX%%j0 z1o5P00aSdkfSh$VkktMx`{tO2APEslA9z6Jppp_QSCzci11blV zlu+q>q=Lg8s$`-z@naq!XH-dqA(KizLNb$sN_w(+hhIatZE$u?P`R_Y@(N~Lo3mGQ zU4{RdqVDYh)dlbkYu`Bu4+uNxNvjneP`T6Ublwp)=ZkRxCs=rqQSAs1_^vZjt+@*p zwW-z`!;orHYrKBC3WYUW;jnNLda5`vyW1D+mO3U1Ns{ai7KYDBUo?#vahPZ_jmzZ_?vIlJ0dj&zr z?)D1%wh4)aq)GM<+sEGw9}|59zr`r|KOU5H(9@ql^B(=g?>wM#=qDspuGZrz52ze8 zLPDkY6TJ{rm0{74t9^m%$iDYC?k;h*-Xij-*Qy?o<>Gl4#Z_yvW>`J3J`nppUmg^B!)@Cp@5XF!~ZIS1a*F52zd@UqYq3 zF&T%u-}eAIO=QXBcQiGT!*KUIBsMt=cRe}%kO$G+IqljXJnaFMLx12&t3|(c_mJIb zmFN#T8tyLjfGvA}APAXjf8f_xa2+HWg+bb>XpSuw2ZZ(%05@}#E94K)&Hi1wEAIGy%lq>xAEv?{_`1TSlho*0NOHP6xhpIq1(Xm7o z!IBfOy=V#yT$g`>rqXk~^hD{RO!tOu#R`dp>2QG;%+%wqw&luL^}Kl-7nbZ2tt&g|X?`53%xQQ5@8+W7+5&^eX!?}z|z z^!1iTO+9~_9gsX#8P^CcFpfy1FO;xhl8{(SdZPR&rMaRYZOiFpLa^5}asz#I@m+oz ztU+8~oq!E=FpW)0CFY(`apQuV04$AZNktCtv3}sK3?QCC>cRhr6~Pv4n3B)t8c;tH zQh8%K-7KywjO@Rzdj4p!w*SZ~s901hjW%GJKP^-cgy_Xb#*33s>}LZ$gZg}e_*arj zK2fQt+m%XqFVcpoMJ97H&F?hZf)ur>aWc3S2_W(X`x5Het1yikAXV8O>Us(qBx-xU zFJD$ERlOY=4pnvcbi#9^fiEcY%!MY4{>Fr+M+nU=1e%8+s)AlO3G8&n?%PI?BDUy! z{Td=~;wx-w8i{Ar0x=eMf|j=uoc)G{o*uX>&i;qModDQ1OImm%F>aVf1xu@}+kcUYPhV6UBcfvR)1@?x-yJqaEL>m57-2k9Bm;ze>XRd*yU%k{nhz64jGq_>&q-M?XU zTRUIB*n3K`2APyl&b6+ITI>ev)AzgI%w-QzQ>z&F!G<-D9ea*n8_*0o?q}7IO4rSo zh@O8~tkJ-=CJidwfPRv^CM!2cUkMhY)TxfHZI>A>OPob$wR?=TN9IdfRe9kEXgKVH z=M?(5+Tu-<+9q6!o)I9Cwm>eKD?Mas(nCg+If^5quiUrdL7h}ujo0>XJ+C8SV2rdi z>SA)@Ll9c^ayT*4gM_MQJ4DEW=CPPn3*iX>J*K8KBuEC~B@StktQHyy~ znaIo=P?s6Kf1ac5LS6k0A9lJC~A*`-r8{Oooo3q8mCZDp?KP zoCnNw@<2%$x;RQ!LuW-#H+1tyP?mL0(cBsnx?S@{OBuL0TDpO=Vq!FK?ceHmQd>p` zTjQCG-H%E6JS4>5*nK{p_e#SXW$z+~jSqB+mEy!E+&i6Kh1zp!#8Wt>Rz0^oR)XlM zC_)OGtBc3N0TdKD1!EZomZ1?*wX_DiiolEs-lA6J*s8x!$4d0DYe~5Q?@UbKj0kQh z0?V<-V2;FMPkGiZv#I0oWlq`V_Yh|cJ}=%h z3S`og>dfc;w58EZ)|sKATW2dOS*`PbPtp6 ziP13MQM=7QH8OLEFExoa(`XwlJglLrV0k!T?q!peHAJJ3i#7B>L{+flNdlRZr&I+? zo;0glzdR~fUW3v{6)anLMingStUDDfbuz;WE2whW+=ud!S5g7Ml~e#wp39J{+VQ1E6te+wNir{iWi zZh>QP%3?UY70%Yo4z3VCO}hIwI=-Eb@4y>#g1^B>*7O8d;(tBCRdnlWI$i_E&B34H z{`gOV7W@;u6A#zo;W|8AA6!NXH@=Lx*{Bp&X<7Z;BIZcFe{y!|me%mKJJ2hZT`S#TQM z4Hvfre}VtE1RuxeX9rKyKM&(0kKo~t^#7mWxHH;=<%5_ks)@CV*Uq;fRFV+0VnXld%R_henN!Ul)2}J$?QsN_c`1lv$@K1Pn z?pNWkKOVmEH8^}14_AB}4p-vgiSNPTX*}$U6@Z_I2V5i(;IfM8;J1SG4~U-!;Rm?) zkob96{QOb;JSu)37e7zJ56H$-_%kc`GyDWk!{K7+&eyhrXW$gtnY|nR%!Qw!V4nDA zKK&ENX%-6Ar9l5w?p|)V(HAuNohB=Y3Og-KRx4+V^1PuXWFC9U8K39NW<)qe69`4;!scRBPo6O2duP`3-Z`=Q!+8_W3{)Ua;3kti4XL%zcGN99(M!VfG-0 zoqPc_@ts$q?q@CZAxWv`bU!%RKo(Jd`l7-y_|Nh%?K4>)dQT&D!*|4}&GH;m;&~4` zD{++cgbsE_5RBEKpKBG#5Yc2E z=S9(b>Y2n^dVD6lEd+EPU1B6!?oJ|?db!Vs=0Rl>g>bZWReG`J7kNPCP!mByZ4vh zn&o5F#H!|VPYm6r{RpaL3Fl=05^7?yfJqNM9Nrh2Dz7nBy~u-?4&_VE7pSRUaa za!^$Xm8+^=?*WyAs!FJIRoxEKo1qFD`4b^O+m>NVq(pzn1NQFfY!CoQR_%NrJOFmy zl}(@bK-Gaw5~_qqw<*K+O%JFXMB0;9_jo|%PAhvEwjLqc%q-pS0arG0l~7nZnN9`P z)C)M9O;bZ@h_>xc{2DV9Kxyxk=3RGVztp-Lyr&NfZ|nxbqY7_e3`T~-RN;*j1R^Is zL8-q$7$Xe3by#@A?2o9*8wjSTys_W!;SB!`D{t&by|)^%C+lv+h5#bg@;4T10kdhU zyOF3{aOcruV`A)DzM$ABS1a((7}P9)8X7naitarY+JMyz(~YTV+A=x34tb?eT%$f+ zt5v5fV_5Zo0GADf8!FQ^Q3IhkH8lbCJ9^oyf50aUYRT=d06PfS0Iuy?-y+erv6&7Pf% zXEb|8Xa2Ki6l$eqhZGT{golVs-P;3hpmcs|bhuHTgcQX-+Svwk&`q%@hyos9x)*Dy z;}GCGa-M~V+yBl(fQkenitHBu+g`m61(9Ujy)XDaqzT8O{LMqoI`RM!P+3M~UUpP} z;Ycv6qr>&`hT%GFi3VHMMUNDg9d#7UDulHuM4p=1c!>E$8<^hkP`$IGT(vZ2vKS7| zAHr(Xz0~QegcI{$KvZEcMw75Mw@qoHV57bppe2gSW^OFcF*&#_Nsh>WF|aO6v^RzN z!J80-Ck)h{@`o&5EBM_otr(ZEJzrL=m+Gqu ztHSu+s*&ot0P0TZPT~UjAa|GknSEKaq}qVBxwH8r!Do6IT)~&HVPVLH#LpLC@y~z7 z@_C~IkHTg~a?jeSO)EwBkY4^zQvP26HbLkw!1vtTEG~X5R{L#eOl_>!>=BUA(7ALz zIQXOG25hE>JMW!WtW{cDf&)(iI7md6;Teg|mres@LfS}pX>&cwSJ+l@1eW)W7N;81H5{z3`MSU2BA;&6B5K6ZcEH1TK}~0 zxbsD&8BPLqnF0QIzJTu(h59+u#n43|GY<^nej4DfJnE>U#IRfSurQ@x1oop-zp5AS zsj>8)J65SC)M|yMskC6u}Y*p^93o;6=nfnlAM6EM1dLkOAb5Pc()Pe^H~d&VbYIl!pmdBqvKFfY!nNMMT*<~)RMzd zI-{PcBeR`luyJtmbK6L23FAwc&ImSIAN(xV9*lc~+CA3I9Gk>Ea_J3bGfQeo3Za8z z5QJz{r*AyIJ9-~USq%HoWKM}l4hg*seQJ~6rJzSjHp!XpRB@TQe+@M6<{2mYBQMVQYA*JmMl$0cf+()dx4(GG5zsCJwB+C zeyp07N$6tWBOb04F8R$rI=kyD+eDlAHwGwz&4`3!!p26jPHkD zUOpElfQp5Qa=n2A8PcJG>H#6)a=bLU5lb3WaVdRcyjq9qDYX)eZ$>Aku?#$fw!^8a zNaIM4@@|}I;T;U;j{3{ahB+&-;rN*GHufbqD<*|cdApod!rP7Uvz@oQFswt^GCI8f zir~^T%IENm99}xh*Wr!G)IEoHC1}EQZK7jOcVFWyifE`)7dNs74hhTKOIWe*-ilu1 zkC<$Bqy<^L#{Wuwu6e~aG2J9Nth_4SU7R025%&|ri_Eh8I*DW?5nXT)Q)n98haeao zMDEd@r^PP#T|aN|X?GI1c!N(u^KN!jc_q@KDsS-742>CFoc1i4Nf+n0fN&cZCk25> zgcB~#x1hZ)xHt%=aB=$n0B87b=;ADt#xiBAo0#Ma-{w2mOh>*==PQvCy)yrZ=#^uT z2x&mQ@)3AOy)vEU+ABv)4zA35y%sHUIs(GmlhcjT@K|}YF^oQA$DQ*EW9OV` zv(tXMdF?jQ^(5gZ)9n_H!kVrcWg{A|DqI2^+(3%fz)3*yv%-Il1sk-A1|NrLr!7?pCL`76aF6(T#(1%D-l z=)nkrVDwj>-;pFoNb3&GZn4)%0Z8z}$CIlv7Ddm8&xmQ4*mXv~^W5p@;_TF+c^Hx> zQrX)qq!~#tZ_d zE6j-cT48c#pTn{KZx5`UnUQetWwh5}X@t;2Q$uNdunf?uB)Ep2C^aUh8Z!*g+V?^F z-mv?|y(X)V`C@dZS2Y}4?DYhfrBVZsO-$36|1Z--_HXo zM_!CyNQ`O}Ya2?9RdpXH2jLhGs2m)Gj>KYKvhRPD z2Uw1B(apZ!BqD9Po013C&LWbjmr%P*w>RlC8FL#2BiSbAmV!Vu3`@}H1Zb}dF*gKL z#N3+5di*zxx$Tk|Wu{Fn#s+dC{I&*Lj7Id9sl{aO@QaSAR?aQe8nM|$9GOAdWU*Ej zOW%rx=*lLXeVhQNUE9UayA{?iTM~=%0~RKFP%q77$gNg6B3^`52?pF?3#!Ddy0P`n*J;jr1f-j$GG^l$O=Zwou2UI7 zWM8_MU~puu1RYepGz>9w2(QDe#)fjE-tm;ifN@GAwcU=VHE!4@rZv)W@R-`zE43xc zxZR4G5__SnMve@($p&@Kk}0t?`MKsc&)3xHiQQ7!$H%6IXP7-*k)%lE9~&9qzw|JL z0l{(v!8lF96DRap2!2jmnaLqu zKOo#@h?jyuB*F=wYzeg2g&`h-DTa8Hc!vLmL%gM_nwmDuiz$K_=Ix4YMb;5~r;ZDo ztXM1hP+9^<9cZCm+AstQ}c$n@_47vt6*^_*ia= zeaTI=q|>Y%GfraRn8o;zgJbqq1eYAMEAWgQGdj!HF^kC5J;&^rda+V&U}>H(-*tEj z*5tq*wcxIG?4KQO^v`U~cj~4^n(vS$I%NBBAL6>Ia15*^Ev}m=^%n?bSbU8!eke|N zGSu|}FSWn0V#P*S^1EScu1 z@DoWgMN-)XmnwxT!N(BIs6-P8N3kafuUvzLvlN>5(A4D~P&sI-gvwP@U*rLmgQiNTbWPoXJ18Mf+ttsV zhp+Jg@`)bsXH!-IL?%T&PDqd|ug>wn)qz(MszeXerh@K952zgE+LKnBJfL!?mA!vi zApLJHv6p*5mQ7+KIC2nLQ>WmNDkf}#si8Df-FugX;fP0>mdYzwL8#`O6)VDz8I=;*uskpzJKw6&w)<@zFhg_*O(zV z*nV&^lfl7Hf!ot2IGBP!G#E=z>PBd<3&BAIQv?TpgVKcmhQYyoY$MRL7-4K=CnWr4 zY&>$rEHT1lD#-caGIN~a$C-W=&B5(Lg^u(WHdUvg&=%~{Ufuw;wy;hy)F&>Fj>FP( z$QPNMhAe?~C3v@9hh^uoa`Fg{?M4dgpibQwJXe4Tyk02&St(+rT`U9`96JJP59a6PjTh!Y?Ne?4VCb-6E;iC+pwpnF9-dRJJz3#VP9h}JgM`MgIffJ^8pxMWDk*3MG#n~XT2c_+ zSLTy*NT}W}Y3MSov$f%?b(9pejDYtrA`RfFP=x0R{5xjy3K0Q7HXluyUs}IFRqvr3 z$#lt*5*9`b7}vv#jC7}4$nSx-;`^xrZ(}kT-na9;J^l<6TZ5T|;1t5dgBboo@FLOm zqY$hqZGw#|$Dp>%hG{W<*cgYxn^FIuW@SFHm$8vEf-T04&KKCnJ38|(&#EvqOU^ZCRz3%zw$f2gblm+ z9eTFsO6*OiYFLpst$W#6+623$RK~F4Rji88Pf+>d~xby<}mPAEQ3Y{Gd zO%j3M*ex0w!2b;I)$Vw^Ol!Uvns-ZBvxMben4vL4xVJqYW-{En0uXK!?oB};lG{Wl zwiC41g>Wx|DZ;%0p5eb?xOaP{h-tyyn8=IK`_9-vWac1_VN3wcP-csNMD))wNOI_( zHz69-KVN`n)IZZ%clu|Y(S5=1VH38dC`7puwuqRhuN3vo)ATNeXL%}6A*?Zie%r@ufq-yWs@Fmk%LQ zf55{ncqe!d9dD)MZFIbyj_;-89dvvj90dX2Pyc@a|Njg)bHU%Cq0PaE;D12%PWU-_ zr)9z8aB(Pj6uHBlxsrS%pX7+P^f z+I~b>pfFH_`c=X!1q+`4K=7s$pm5bbqI-D>+nZ9s&}u$cJg`z{ihwb7yq7|ah|Kw; zL1igd!ic^k3;VsMPRv`)7Z<<(OYSta^qhY|3rWk#}@%&EnV$(V@V(k`ig4S`CERt9W!`Zx5&((m*9tt|_xCJfLz&1C>ze zJf-wzVPrY;?fIf9>CH!az@L_+VOfh{u0loG)|Q;n=I-ehzSUe9ZvNRClD-dZAxV=G zM;PR*P4&1}c~HVZz9dw31|_S<4SPW4$RBO3NZaahuLO|17|^DAT-^gzcLumB_!~W- za!~Nj!~&F@8^d>aK;0p8)Q^Z?6IT9X}~fFn~^C%9nh3*617 ztLVSngKiG&lm<#)`ZRlWXqRM9zM6CM)gDkeEPV1b=A#}^xzp|CfGxXcBS1DuZ<>C!^=$kaGbAInpPI@$8FAlXF|l5k`2dvSFsNn+Tg{$Y zX?=OD75oLJ$W$sKW?4wbQEh0R0)8}+m!Q)xp}jD*1{P|s0q^rpIHYeU9efmS87BtD zFN6f1yRiiXQY0ddqk!SRVItylOmmiLX^FAFO;7N)*=mDt(T!MlLLLZ`3j^v`s`0O3?^=R9A~DZ-9n@ z$j0Ticwboz&TjG65H1YMk!lQY+vgLum?Z(HW%vea_1ATTw;?;mmZzpxG`0lkI$oi@ zjOH*%&R|h)sUbuL^Qy4;hP3N&8rsdI+;ln%^6wU=d7!MM<;wzPqqN|CyR__cnjLq> zeOq&xxc>#h!-Ew5+&?r5`G_U@;U+C;Rw_`6w~j)9&qztAgYhv-LM%|k3`p!cqvRtN z#(0oHNyP8lNCe)uOT>XkM;q2yX~FQZHJeE?9>_~FJfKi3ov-qRLaj~3?$o#f#Ae{s zO6QBIi7u^lUiPF}Fgzqu`4P{OKYXp;Tf%! zqBH-sQj}OPcA3I~8%wbdu7r&9v>a%C@rT7LYA%3%1#t7Y);X}agmS+RUO!Q6G)fi9 z`Zlj-RzqvZ_hxIE)t!NOQ{Bw*UKRgPA3Ep5;7vi*v#8cPChNiY6)r6=tUQV;z>9xX z4||f99BfRzX8o=4DW>-qqCiB$Zq7%8t;>?2eO~f&&9}{Xf_9uqmZa?M`E&6^Y<`PT z_^nBlqnM46!W)6*e#@RyC>(4-5RA#!``E=Yl*2@>REO^+rx>@3eK2aB9CvnyQSm+Q zRCHNHeG@bfW6i{jOq=BCyF8$Bn30iCxrXrn)dMPru(X6qpJrTwmJBwpPzEjJZQIF4 ze1%Uoe%k|uw2+#^WFrBQX|nO_LWo@1b*~4m4(yUpB}BVT8r35nP&tUUC$0YO0hK$g z?30bXF$rfjYWt_0`_k0WPUk`!2PFs5HMy}4vyQ?zm>Nn`QOg9-^`uaSPBN8rsxiX^ zQ2XxjM@8nmHsdr79V|})dEv8HKn?-W-G*_B6>>nQb^veBgqfR#Yl6(RnT1OMKl11j zl3#=Na-W4mAjK@)D2f#R8_vS*5O-43X5M1XpqRaBU}Mn`0KA~iXWo__FNS0=+W>W& z8!$J4wsBAy$O13rD#G#|zs0O;IVa^w%(88p;}5}`^$cm?&CJZKUBbZVXq1?0o+a&7 zMC?Lrm?C0IEYT4+&aCMXv1MZ*aB@s7qStl_OwL@eF-K_N+l)r8$(J4~X8jIm7|=J) zV&HwHtDF(ytv!x5=^)c4TSEyOW{K0pwTZ$(O~SyX&z4Q7cpnNy#(3ZPf{x#Xl!dfF zRA2Bzey17Lykrs(U1hZUyoCuKh%0UQEH<1)8>pJ4>;S+R(Q`^9`oK?m!3SL z$4?=1DSG^8Jfr9_ojt3f$1jFy?cqwbGF*Y0)3x#_RmSKriu{7~_0j`rO?ESyd}!JS z`^I>Ykp3{^VfAUX>C#rJ^Re@v&Ha)=d$WX*cSwG&`OX;+Bd2l45>DPV{rPxUIsFl4 zdiP6`A{vYsDeoU%PN95IKoE@K<>y-EGwg$sRXG;Gd+5ulC-jKpY)G1nQw#oQq1|d)NfXX4TCZWY#e;ngp~yE2L|m5|T;~Cm!%_nYRU)Y$J8Mp~d31?U><$muvM2Qm zkaHC;zs3wP-S&Ob%!LyV0FJc@C#HZO_23CQErRxP4<{m!BAobrJi~v(aN_Q1PD)x> zG3EpaJF*=%$F}a9vZzYhATE0r0>>__8Rt-GCbKqeXl` zdk`Plioy7QMH!ApUR)6kra4P6{-2YdYhF3y!FXgN`C`MQ3zj(ij)_O(K6v6T>lMC{ z#623j8%gaSeNQ2E@O1>i7=8cI|4mH_yYb|-!M<$}R&VOT==tK!@B!f=gcljt|JR-C zF5%ptLGv&$ah+Ir*aIqui3JIj>%_v}Y*4*(!7M0>27iW?K@Kwv5G(dMR@(7tXY-nx3}u;h&?fHx;;OZb#5~?;6KS>rG>;YC< zi0;|Ig5x}J&6@>t!O!7JaHwu7HoqDst$(Bq?v8jXH0uQ-ePU}sWr{O6OdAVF!qiZj zP*^6@e=1x#z0CZ9;jq*`d{s`0?$&G{Zy3bkX~HK;D{38$Dplp5-M7 zX_DSF9dq}44hr3tPQ&r4_tSgI$j!l~!pAfZh;A|Sa)SqH9TfLkXx_sE`hW*i4jqMr z%GI2F+5;*F6_HTseBHw|M-%e6og=hBHo%>s|L{O2P3Ajyh9WpJ^(kL5NK~7+-T!!? z>mX4Qs>TIud0lgXoJ0#*CDbvx$~5tJ9uQs%-z%oZQf01P9Uc&QY$m$3*(~oV52)Pf z=BkPF|JGIa*1*mAVsex-GrY)nxvK|!IqMz|p4OgLfp$B^I=GoQT zJJtg#2XD`_D_iRUl{>9;Z!a=@%;Af!G8G!}fH1qyC&+1%;k5qG-RGkT^jJbgXit)B zN9Kcf2&ot019AdZUS!nT0mcwRh(PG!zP{v5_bWd2-8oMgYyt6mQu5`9Db z1|#LXzq>ok4*kO{Xx^iL*x3UrhyFoA<=Q_KJfLz=1__nkKP*XzLCD&6BM!kRJ}ahC^Jj?$W}u^`~c!MvLM8u!lL)lUD1 z2i+XlDZ5oyfBZ)tP&xSH5-L|(-RA+7JFRqoTnJe>Mx~N_Df0g(57@GM<${nV=}prw z_rT0P@%1Xw9h3ezRi2QPN%6j7JK=SC3HB)w_+)z-Q3Ys^qjs{Ja1nhWO8rUEU zsZ#ai>PBdxJXWWL=UDk=5~{4$;SH#+EOXkhLRGO*+OVm2)l{)ooD{WTU=91x;fKT4 zZQt#q4^P0NLwpK<>&wFi<%i^&_ftfUc=Xx+La7XZ)ne<_3s8h+qFUJirTO(XL;~LF z@H}nt3T;Jr5Sk;nFn$CZ7@@WDBmIT3()!}`1neOUyMfA!u~uo#Jir8Z1+BCf4jKs` zR?+-bg_Dct%Njajg?*v89#-gwp!5TICpHy|Q&SV=(IW7raNaoZA*4e{@WSfVh5c2l z`-dM=qmfkwz?6ssu*=I(yk~u(2wbHSK63kHlFUN6F348H`eT(CL6v8W!^PJg28&n! zzi_z=7mwaQZ0Ur8L(bqSX7hz$hK!Is8wx9L^hryjrb*hgo<}B@9SmRyTZGVp1rp%` z)DQk$Cu9~#HR9Oxkizk17tLB2vw$6ybg<>grK7V0S6L20mk`@)Yaq5Fvv&%%RFN+(kGv!D&_h+^i~IPxWaLrg>n+G! zD)MzXo>7r6I(t?X`8vKB2}zwSFSgVGrFui3Sqm$Ov5DsJB4g3l+*#z3 zSo|eu9t1Bjq12{4!w)>5a+pw(P`OUN-Rl9BLsVTtrSoz}EJY>iQIc#buD6+b!uR;l z@-Ytt(gG9?Go=JXrlguj3?kHKHR8hA&YeTxAVLxtL1(xU z9N_^~HVzOBUD1Iys}WD~K-HZA3FF=dsx!9+RHkvE!#uUH$EJqTL?Ypvs2z?zFRa)$ zQk3a@4;DC3t^v(^^!jh{fXYE!B~-4xe#-+YhhASorT6-I7G-*$2L`voTodT=?c(PS z`suve&t8=2Hh>vK$dy^2@j%sqSrV#*#cNZP=|4Q6au94!TK&iaDtB7hJtS5Li49Ed z^MLNwOhU_G$<$p7hM0N|cSGu`1%LOTodaj3$#PAV+J26^NA8d+Z>!4_8_H$qOOMKJv^RQdO+pSF-WLf&Br+&P&ufC zgeu|jVZOK|`@;G&52)N}Wf#_z)oBlUfaNHyU0J{& zB-Z5DxOeuhcDiS-yZ`IJPT8%xdgZ%#K;__-OQ>9FwVwx6?zHmr$_G7Q%kGs6LYkyE zO~2f|@~yZ!^8^nfI;iNe(7cB~{u&Rc9QpwXm8&w0c|hf$3=%5cAJ1uZ=D8lgr%Cfx z^~7sJd|VmzRu5bq7$u={b#AWrfXYFrJ!$nm52)N}tCVFtgldb!H0qQ664`PS-(uxv$PdAjRs;1Lxrx{2Q*$JfLk7V%mDm zSYDq<{<{Ic5G8|x?`K-C8R$vWV?b~8>p|i9F7(M7As@1ReA;5 z@4Fr*XNk31xwgz^$NG_q5w;zrzNThV%8Y+nG(Za@-i2fo`I3UJ%h{K_))T0Nd(I@0 za3ABOaj8LHbI#PJR&(Kc*z6ehI&P)shK}DK9E0Fe!u_#$MhW+HmTSU&5RnPfxUW2c ztrv{axD6YOrkS(mf>NbXE0^l6b6S1Dk&x2bd{KS8yuL9^OIz#1v_7xHEc@k#Ec;}G z9jDb_GvjIXDZqQ=(VvxUMkLO|5;+ z`D(L_hG&PK+e|HX4l_Wk<8?vzk;B->aSm8hTvj*cYo%Bi&Ze9ZGwv_;75a_ z1f5QU_Hqv{B9J1u_;!?Y{5K3P?wTC?r9~5Cqbm{hIvtygIy{$X;<8gQY!g=a8mmJ& zF|2lm^~taf*m$Wxp_~D3q&t3#S?yL%YMqDzz6Q~cM***5U&!6%N)X3n zj=p?+fF2*f$A{^(ARjOC1v!Fm<2MSKy&Jx#WLA*%t9XqVImeA@&H44}bZr!NxuqsH z?K*1~hO;h&-!-#>i|A)s%FP=f#uZ!)mxh8%==k6~xbQ|el|it}=;{^l*ii6hI)4it zFQ?;XI&OhuaLQshycN#Y%nq&)KTW#(HafnYj_<%5bArFYN7nQNSK@y?!BuqYYC2v6 z$IZc?;r{qff)@M}yb}-C;^8_xTpwL~7oOdKha2&56CP&wz>A*?Zie%r@ufq-yWs?4 zx(^{zf55{ncqe!d9dD)MZFIbyj_;-89dvvj90dX2Pyc@a|Njhxi-W&ILz{yS!T*5j zo$zz=PRoMF;o?y6D1PHHJbV}*{|FwQqB~FE#V7G_7rwY~{C8V|kK*l*;b9KIy*YRW zZ_k3$;BL6MCHM>cza{uMK0iBnn*MnhA9(~1f29Ba1jo(6U-5kWE(~aY0-hcUJ_$!y z0`_V6xwsYFBYu7^ets!_?iD|uLM8h+9O}V+>dKaSa5JzR#Rl&MpF~+ir3k(P6o|z~ zjRA9fIP5J_r!Sg4zaRJTWVb>X8XFDDIRuK6C@$(@30G}QbKM#waKZ>76#n0p7=Slbh zDR>HhW(9wSpWtaYTnr1O*S3OZ;1t@Ky&L_^g`c5dp7>`z{S$|OK8nw!z}{3oUT(P2 z7c}{u=05Sz`11=NC!VxRgK1@73i$Bad#|Kd62;^Vk8A?UumzccDG@nzRY&WC!k~&P(!wLc0)>GZ6l;hqb&&g% z(oH8oTx=iFjl86w6J5a2YCcyyu+ngU{Gy>ot0;S&ZyKo)kvV@fXlCpM8>TB4l&8$I zVT!EF0jG3i21FyNGhk^PzC34xqF@}D+O!G<1m^!L8?XYe9bgg?x9U-QNrKgDqfoG` zF^=k)++uKQ^vjLJ1b+BS*tygpKESg3{0J=nlELN8NKi#qvs2f z2u50GFm8RpMy!insq532ZRi4TSpi4Ad< z_CmaM;w;KYwwgUKQ-!-vuLRnuI14&g((Sl@P3U%{fFG%Rf=)X_d!gst7kmgCxf2fQ zX*0n`;Z}3^^lk^{(7->x8(TmiMV#d=c!vLmah8Q)m)w$YABVPvGKyk$LU;_j;meU@ zW{Ir;;F`DCd^L9bP*#6n!v&D81;yFd*Q%3+k{ia*-Gc*{tnMNujE z@Yz*`Q=luvhr-6fy28;r>Jg0F;AO}V!~7%qcBq$qGR~e38!tZ8WVmyuG*NfFSK$?Y zOMJ>;^;(w34V^;js7kU>73@Z+flp*ycG5|l0m1EJ?BN)iOxXLj28yo=1tC9CVRqOi z1PM)M@gZ*UB%f6B-mXZUc-U?WBNwnxSEz++OO5GTrLIk+s>=-U&$H&Z^m+(b8sI&` zM(BWhkVR!3a)XnwO3B!r>}ER8I{YCLhT@Gs!ZV6D(wTp}kp`_)){;geWJ)9cb}#Gj z@QEtS{|EJIWf=A>Szq4J;V5fadhaoyH`noa>#7+aZzVwY7jT&aomAdf+DhZFN8B|y%Q)=!$pyBCr<3iI$2QG4VmU;6$% zc1_F&5u>{Ym|tXx042t&yPX8XlL8J;3SxM|A~7ODVR(iq?iUdeM}H$tk`qJl`<1^X zaQ!^{lACDD*40Rs6Hbg|W7N%IB>NKtmqxNb#WNbo(pkPE*@#Tt9?5PhPEO=Fl8rU@ zY#YhOLH8cX#u}O7k?f;PuR0nrWEsgmoc!FjGLnt)BuqL1lRB)eK@>w(_UvU4U5A7Z z5!NL`9>2}(<(!4i_A<*zHig>3Yy@H3AIa|FPAQkE$6cX$kCE(w9#A4B;Pvm{imqtZyvQi0M1qJqgDh`j9Nd3XZSB4wZ@#Cv{7r!-w-3Y-!m7`Wz@P4jau=0B57f| zPMLm_r42b+iJ6=8U;C1W#hNGBMJ7 z1qe0q|5t$cuK*ze{-0g}avv($|H2_!0fJXzD?spGK$#4v6v0;@9X)mBz>P2_#T6sC zasgp>C%w??@p<{9JQO&KX>a9<~KD z>M6yT&=P}9)5D^@@u%Ve(fAEU*)x);wx{eyq?FgvixkQRuSF1yq0j?66T?ublB+Sc zk2jzm)8lARWr@T+d_oLgqN|K(Rd=GfL`643^T6Ch@JLH*oxO@DD_`sZl|%4ILggB0 zyTSu1hv1QfO6MkJ>4Xc9?2)BpLeI?}Ag6^`@(Y7DcZ(;aMn(Z@h+6V_-bG?$Fpuu? zs1FD`TfHJ}t4fL3Ku{$X2<^c8mrx6n8F-7L2g7HCrpB%_UHy^=GaUkNpBL!3>gsnr zpmNYv36-m^{@ep92VIp=<*KWXc!1npT@5}4AXydj_wax@8~79&_)*VI2`ZcAXLL zE(`HJFjrjvkigu?b-Zuq`krR=849+RGV%ZYgn|bZbpCrlQH@0Cd|xQ;i!>1JRdS}% zHZYaC@SUiMF>1oWTrZGoj6+csnjBqa9Q-vjZjuEL@+(7qFE;FAs6PaKYpkPcJ_kzx z2(JKRx~Pm)%n{U(BW8P$;rc|rxRNtK*6LAc*gRUYSSuwbNUmJu#6#e}9*G+F9(aG? z(Xh&+=T4(87qg9+cfKNg-|ax&DF2{_} zK3s;?;KkALQs43dY?mT)5z?n!U_R#gsiC(4t*vfO%JggB>cepos%<~{`op+6!0Kf% zpeju)+bYvBFGeAVMk!p94R$R{w))}8&o$pZ!_zSuODuCTJ0>2DPs}9lGNXDz67y(i zYb3P)>`V%wgO?)+#@U&@ETR~8B*`h6h2dM_BZ<&W@(FUd)MZAd*SV9)CH{RTH1E~} zseDN3aH#nAYpAhA{Cf$FXyTe2(k3MY9z7dABb*S}IRr*Uv{eWr&$-+kpgfRhoG&r`88$;7PdDMGZrj- z1u(2lurLMs$f735bP%+ccd!s)6v4tT;2HiK1`C&HJw;l?FlLU$Nc<3NCF+YU5krUl z`=rrQ9wz^Y@GxVL{ID%xxpsw!1mvDeAvkDfc zb3Q?}Rfjku9?Wx?z&~4HC8RA^z0b%wbjsQGYY4dB$FvMx!S+RJ;0gD{FA&WBLE@ZWHV6NbA&2RT__Ip!3I0nWYHS|W)Nx+6 zaWPoFZ91reWglTUgHtmzc@ke`V07lNSxB#@-@b$m)AXB?R`lJvnI{oNTAdOllq<`` zT3u$c`pbL?rY6n*2O0+Y7$?o~zS42dDe;y)Rl@du!sJ<;nz)kD+|*AAaFc^&5f(L7 z{v&~V$EgwrMN!;{(-_h%Oh8>-oU1BLz=kKVms-8l=r5ESqtV`b$uyZ*K$x*VcAfEm z(PA?jJZPZ!-vbTX_>cGP{6AnVWr)}b!H}`FnMo$*5HcS0&}G5{3Y9+beP78`)8c5x zjG?>K^{G-nRQklf3E}QM+bv3zU;-IkWgL8|MJhbVuk80~Y}mzq>**7VPpeH+lG^db zi8|~m7HPvFt83So0MQs;giNfH+z zb18&i4 zLigY{1i={I-Z?3dVLy@#XeaWW^~h)Rz&q#6nmr5uSf3Q#W;FU2cN)3G6h8&c=ax2c zH#L@sDaJh65MiA(DUZ-NBzB!q<$K+w%D3{Tic7z!!nTIkS9?jGvDnugK)N=uuN3Gb zwNH@g3TQ9y*cZYmVqbs9GyFGZ3 z(tTl4tU$@WxT_dip8}36`(^3r=^AY8o=6JDwEaTq+)`~*V;rk|l?FES7cLnbpq_q^ zMx*t?BgvHEx{aek6D9`jTl?cokLT?WCt626uWigjzBUEkw&ng*$jfYoI>^h+#NYO0 zU}WZi8o%w14b%8dsS3syx*31#`Z}e<@}-svz8nM%+k!86Us)HagJjAm-WIM$qkqWmr3BwXdzU@-c8-M$9wbogKSPkf7<=n~-pg$lhb^MyhMThM}K47Th-O>}AHQVSY4 z355swmFd0;8+I|>dg$%B;p#cDdWjZtm{vBod6voS9rqVi?n!% zy$a27uY&gz9u2F|9CvSZ>Bu8A_ibb@h33A4XB3*Fvu9Ok?j<;Ys5gp@((qV$v@wjk z1$Uljy3!n-OKG#40lF8P@W8Y^4AEh6N*qo=)w$_)>#GxErP}HtC~mM-B6jzqghYca zF6IU;&JwY^FZsFVwc9|%E=?v>G)vDyU20%y=pP9`()bj!#7`zE5{==F4Db)#r7$3P z0zoi_?kF?WCZ{3R$w1zGA>!c!iFHrN=y%>h99!#e&1G36g6( zpmIo%lu+pjlJl@H;baq+7{$);fGvA!qyX8)ol+59IXi#uiD8uvp?7|b8N$Qut>uh` zhyM&lyG?jF1^TFKNs#Fm&|co*VT4hHhc8F*!hgf?@ScV)G%Z3L>z_o#?|-q~$Z2tk z5WkwXb11?l-r!imNNTiEK*v%mBz3~^g%hUN4HQnV);3bsWU;bI1d%J%!ep@ld6pu4 zTwYfz);2{+Nx~|1=^IR6-{zsOmIN*p@7>0|F(CkNW!TSH$oDn|Mn}%GEs&?;2Df0t z6gN<^k5SEThJ5!F&RV=;5lx%eDpQ5NS~weNcHlmjFR4_(?_Z!{Tf7(VD_g;NB;&nd zj3q>uDVpv5gb{U#_kNlHH@NsVF;UUIPYB#Qj`uz{bU~5Hr^Lg<>#z6{IBVV;(l+ee61;;Ep?)dEkM*V*Yl}uuaeLzMc8|w4njR!`56T zNmxjDc#uMu1P>@wQ2%4T@~FbJ*hggy)80f)bSbERyhR{9$geu*W3XYD&RGxY?{ReD zluf5qYop_FH?+Dg2raPam&}hbNj*JZJXI+FG+#+oGJ>SaMMgY?U4`Y zpB24Y%6&%Qe{(0WOQip^&^)-2u5~BAK{BnpJ{b{iI5#vE}iOussooKREdt~ zqL4YFdz^g{uNztPfXYFlJ!w_-fXba#c41AK#Jt!8EJtY#PJIPbqkz>k>l?5iWU0|= z3OJhE!KM0CX|%k)JlfjQTm)N{LFVZ61WdiQ-6BbF!PGA}RPOOKP}h0T&4HZ~D%a`q zJ3OFrm@fCE)h9fla;KHwB>opYV9P#Op-ZcGc>(%%*W|+ipKZcsIN&Gv(hify5 zp8|a};7pL|Drhh7NqmG+OyWO`;)VZ)llV)tfppsBeQdNU=5DXS_M%V)IC-5f?|Q*W z5JxH$Cnjjps$PH@j3Q3d;|4k+L7I~FX{Mfct4?pS@#y0oI+Z5#@nS0&Jlkf6`~}!B#qgDU;(()@6YK+t$Vhyy9d0Ty#+m3)fRl4_ zDIpX#HO>}8$_RY|^NfJEB zugv;CV#6+GJ!NVZeVRgbedK0PZj82BAxzC09%GVvZN7M_so86YJ07G`GJ>SaMMgY? zT}{n$KZExO9u2FhS?*=(GLgsB?7ty%X=?Thct%sRboQ*8nte&FRIg5)TN<9Kl^V4o z6b~J9sDWfyWo2lyn^Uzb4Bt#n*>08j*q@?EM1veI*9NuCG9UZHAgQmk!aX#WWYvTOE3Y4QtBuo5w>_;wDur{0l{w(1miqyijy9?Z|6a? z@$CyOkLp2x%cEDLUzT#8k?rs9WOJF;`3p3k+d8W!GBjog6}4yMjD?DR2iUd=6{SEQ z$$X+S{VueZcc=(q6rrLQ>;h-_Zx|}t)1cdFA)}b$h-k!rVY`tvbqX2nuwuor$DOkF zxMPk!?YLuCtO$ou!Gb-Rjs=Gzz;QFvt6t+XGKb@n5ilK@_Ec*k148ow5P{{v(6F0w zBw|W4y?DdGy7ft$J${2wsf_`TsbstaCY$F+Q{AL~E9U6R=_GY3CY5Y-Ylj=j4m98t0yg4bwPR*-Ee- z=J2JiV$VwmKE|G?@=Yf@(x@Re^?W5lFmmGTtHrX)nEQdq2^| zy2Kqf65s~U)YgBf5j_e;#u5GLf_&X6aDB6d_8y2UZMXp&&Y}$v&Y7xJr(jX18U<4) z!)>+sF(%x1<%_3^`rJv}@gS9w5hPVEGU6fZD(W*}p^!(zD(b@>MO`NHi2D2(L8qwC zPw$8s@trbZj>kLE5Ve@GnsHw3Yg`QPY=-3Gzmp#awqUs zF}NKZk#kzX9rPo7%JCaTM@svab7wa=5Fik}?Ho6EwK>0Dovw{SMhrEvY1dh^E^hS& z7sBtFS;0m0GcA4EHvllf#c*jTxP*=m&VvhYgi|>(zKpJ30gnv@Z>ICN(D8CQZl>cF zI0mOIhQnLoY|ZT83h~pVyKkf8+v)fYyfG*E8+>F#dqb`QMxx!`6v9~xge6ucWw#xDvULZtqH zhgy7mojKOYl*={V_bu0k}5@&*1G@a2nhV z7q7n40a0F5NH2i=g ze2@6~x%l~|__R!iKR~pH#LvUx=a1s& zQStM*_<0h3KpLLHA1L(zKf%**xEKb{Yg@rHa0>0r-i?0d!p~4JPy92V{)uDqsk!j- zrNFLKeqL_4(HAuNo#wvr8erwg;)c@M!_4%BB0?jvMQs)2(wr8E=9HoBN9X=Otp$n*^fO+($gYrVV0H zrcMy-oFqs@>HHBn5@N5-BVhCoRiGQg0yeCP+Gkv{7K49ztI2kSh}{}UHrXk*&3EQ( zcj90{nktG9a1!cW!>ngQWu*M1fKTFtru}FhuZ~P_UvNCX)2t+$=_6=X6)IB$m9b*2 zR@?+h>&s3=ZCwUu4O}KWa9XKSuh#ktBIkA(84|9vqbE!8J3xz zJxq9N9>4K1W(-cSh^WCBWSQ+bHu<@2T1M7@;~nTV^ma~)0;hf21B~jYC&>^Q1|!w| zr+8AR9=rxYFi!ED**(z?NtIl%x1#fpsz&r_q#kM{ye|SH@)~2oq&o{-ri;qZJcv$W z&BQ7W+3Zz3LVuwLR1Rw(1tcE zh(7NDm4h~T((0QYP`T5paRKvln+v345lXzUY|&L_+wSpz@KX3*F?CcaWvmVl2tVJG zZufgYZ zWEgmKSh6PiEmK2j_$JbD&V^BiP^uDu4Gx2zKr`SrZV0VIa+UOUv4+B@gbiVLm>qec z2b&$}cL+4^;UgXE0hNQsN~m0W(6t^=IcTheO81d=6f32p(PPNjcK#3*LSVce^MF51 z#5;F{2!>3WJR$_hl~w0^pz6RX36*O{^cD}O9K_m_RxJ;x+-YU+h!!dFW+Ho=2W;6y zHU>!!f@|tI+)b#f2K=iB92c0<*;hn)3E=<11fh~>8qx9jAUK}1Vh6v zy6nVVrWe2QfH?bFYC&F;OsDBxTW`p(F++lE`yg1}39^M@F=tShQyw&dGf43%5t?o_ zd!Y0JRw+IMo!0sA4@9(E0nQ@HQP=frLI*Jg{wQXcAk#lTqLenwC^2QY}w9 zM$B{+h@h~jX&r5oIZ!xtdTOd#gYv+Y>B*^01q#gf7pBS+6V>zN!?>{~jcy7J3eRg* z(DQAY>E?5ga1p+lC*MAZlW&wi^im|Gi02B*E@fYGOLvgMr?OKxo5UAmyfo(J^fl*9 zZGwo^`svCjR`G46OW^qZ!NCYFWv3j1XOx{nXa3nKG`)EpQivwvIGJ$vC-=ETnu1%s zzFZj_#yr|eX`(({JilBYu9wF;o`*9|gc{oIbTTfo77nvsuQYr!ocg+ibS#|y>PMA} zFkb~l4jLU7l+1TpYYh|rj?^s6wARa$pKIQ*4NQF+xEH2lfC>z2)0|6f-?{V<1E(;sq0u(aFpWE7fa4y?I0VJ)4}RNecayZEY*}d30-EX zCZKtb2+SoOP&o`$B~-41nx+R-4vxBnO6TMPjn{1^qN2x{ro7t&^fZsU^We*3X1H6K zMzc4N6d5$yT^tk6tRs1gCyecNK;=#=d-yb^+T?%-SdP-_Q*E;C z)Scjhse^Dgo35gNf(P9k*eMN^YuxlT9#A>NO+AhImwPu(x#l(7Kv+-bpe3HSQ}Wq(ATN2F4PJkeBtWEGhVg!1un}{byh;(J&^!1s zf?$l`9UTVTq9quvva5!Cdg|4ZMBD0FeGJ)YJns+g1a%3Z{0^G;i0A#)11g8HlZ49E z+3wvV-sg1`!w(!BNC}nB$#{Bp=tkPdSMfKP_U!F}K$;iWc~mbBN~X}j9ss&|%Ftn; zC8(V6zWhRZzY*fCE9!tKoYQG^YKw5Fl4p{i6q}4y=+;xd!>J^nl7i ztUYPMnw@4cbQ&1;sJ5?2%sRZNv6~E&JqC>-jH8oh6rH$ z0oV*i0Pg|suT2Cn1^#Hfnjq8{puPMffC#0C0PeFVoZ-J=1aN14ES?tni;Z_h=x6d;z=jH^7O4%isI!c7m=WMG~Uk=+&d=ux#rupf#9CvmnE#%8-FSu z(2L(-9o}n_=tico3!%Ie>ISby5R9R`!@Z<49Hu98@#bNB;q5>l6!N>|Fo;WxXcO*4 za|zdtL-Xb+i=#U*MvW!%od#nu4SV4kq3$8YQdW@0S_+?P7ah5*y9B&c;G7snw#k0F z+5;+wVWfo0b-?i+52zfRXbF|B2>C@vKJEd3nv8cI?#vz?xl0I;E33ZdfvN+mBvc8p zZj%D_0}rSi#M+Zq_j*9(PAk9Y$Ri%GWfR%Fq9cMCi7}0gt2;zTJdIWFbDW(um&q9k zm1}fl4-cpuq9dNPI?w|u2Mv%=>Cus$PQ*fVSYB>`_w1t2PTppo&tV=gXOE8vR7_Hx zrg@h5h;WGf8Z*R4+IzJ#7$12p7_&C(!i&g+0x=-21f8M5Q#|m z4I^M%JuFqk{{n0nn~RNbF;Lgd9eJOFqucl zfh;uGPTOM_?<;-g3=(hcdd(*_QW%^}nB4OYxNeFTMx(+#e6~XQyCTfG#w+r;A z7co;5m7Go3sMWFYHgcN!^FnpH0XqZHQujjN{$f@8{{4mhX+0O7(7N{hV^O=uVCjC` z_OV?$L@~+)-nYxdsua51d+AMrGWTA3bAJK;BkF|z5QX5M z<$MW`?Nga#=QD((2bpx)@qj{Y&U=L~6lx0&G<3$P0GqA+4pxsKJvxt?=+frAPeJ1* zVeufpvha^%!!8zH_czv@HeQN+3#r1whC$(KtO;EJAALYda!pjO2v^nP-s-FrpVZkt zVH5Xj+cX#RMSGcv6dZDfW-CS_xJJT$MSONqbb~j)#L~P64-N)^gydM^76DwO6opGd(jsnZD`i9=dyy3@^b&AlkmiCn^f7toT;khu`{NKUa6x^|?Ow z3%c%yxZk?!s_WtdS9krNbE@jzd#die-Bq`HCQ61lwsI(Yjog05UB(yhc7Qm0B7;D05>3bP zT}x}ot+RwghSm$PIZR}DHJCyz5*cFP57w&&qNbp~&L=V;lp>MgYe-`FRV6Y!E4l`c zOJ#_xb!AutJ8LJE!G8c&$asdZJQKKe3^R1^?PV_!?!5>kiH^~DwckvUs z_vq6h<=(rnf>|Hs(yf-|U6v(z__Y4I>EwI0_O3WT-$b!cS>ugCwhfkN-rOkG3d7~% z&Gf_0ey`pbO}Q)UT2onTl~2Aw*1BE?rLMO_rE56PblF%5&h1?m2}5tuJUX2%`1~7t zF`var__X=D=IaguC!sd`DSpCZjHXdnp>db#)T2(1N-G|KNLX}c@fOA)+wVaT61|0Y zQfxJPGH<^(i&U>7rRJuTZq$@H(|$H=T#ctg_YSVc7T1=aS${_I;e#O6XfXafz9dY&d z4p72&%c?E_bG?*+7n3nRK&@S`OmdB zxnmPD+t>RYlpV$-?9?V~WQ@`a1E98GWz?E$tI$?z*O+pJRNb4k=g{ItM#=^Us4S@4 z5mzs8fXW_M>6-D`29-0)9drOO8|9h+WindC)Fdesd%0>W!KNJ$Xfel9g4rfy-RA(6 zMM9RNw10yGRQ9;i6S9tw;e93Eg#r(LW$f^<1BBTVumn1jXgH4DS{g-eoh2k-wT@}e zVFK3C-~?@vfE5FOast*q1T2J7Bw+nLk{Etf30OyiO9i}98 zuU4@)sq8ELfN>g{OtPA_6siBT7sOdoq<&$(uKAjSAVrEzP)dT-(OSc(FI~IG^xcsj za9xnf+4bb87&QBf5ro9#sIz2pR2oq##cpOWJxirljTUNf3|`n!UlF!@B-R=B__9eB zITgBhSlbUcKxMJ|kx=e2?z znU+MGiHbUqyChJ|P02URn>T+R{sV{PgOJ`0f8s`-VxXQx;2B9wOQL!vg;S}Sx-V?` zh2l3hg||3Np~Y%(LJY$2Q?$rhdWi#67Mv=fvgOoQIzVN?sS+xkQ>C}OJwA+HDd&l4y+l!hp3=64YcK0fJBej^qMdbf#rUDfpmW^L1iqEPe6NNji>3;kfrtcU4ZS?ZLv@mKd}ki=P-d5 zh-rwi*shcBb%4r(PbE~gd^+O*l?9(lsPuU}CUM5oU0Vz3Ii9Tk9)}UU%Z^?B?a!Y# zkJ!0UsO>5?W|~W)mf%b#*VaP-f1KEFk)rqshhbZglY}aLIt~ZxmrusuIzVMP8RNIH znIIUtG6DTu(9G}WL;XjGq1sP?EkFOj0V)fAb|j0Z9iTc`$)ZKp>XKe#9TT`%l00PA zWRawmt+iNEM{&qc@qZ_%cMQ{o>te-DW>V^6)lM}Lsy+OfsrU07Fl>RCbD?{X$F}K7 z7dt>@k)9->(i4Fepf`bIP5i_#w#fmu>?uG3G^7t)= z%RvWRT2SB3g8FQY%LxalEToQv%2pZO<^Yw2GLlf~#^n;Vbv()&trDQ)f-$dj06$J} zw!aYUL@;K*pdj11dY8jsE#^u>WzcntomwAqfXafd9dY$Z2dM0Em2P{-i22VufMrRq z=1NGwk;woTvyh}H?1iT->Hj|myje`A6jQba#ZwMYSr`8e-KxLs5BviISWTOLA7K|aG(rukc4PZ5=>1reL0GsL;Ie;HW+wI#rrz8eFv-#7m zC#p(XYTJ{iEg?)gVA7rtY_-Xq4p3QW6Gx_LIzVNQD_xry1&bByv{BCZtqu@p*D(UU z9n~>zoh9T&wGJ%LVP4d+XSU3Xih)0H+8Ky?8Zs3+pBIHtioB@5MH0iWDlh6;(cFT# zw5Ui7UnEofCrhRP9h6a3L}lFLb*KcP1TEaPaN?X zo}38BgJ66vm(S<>f;1K3Q0YLgPu}$&=#?q0FF7z{oYIP(HjAfB9<+%kVs<~zh7Gej zH|IHjmx0mNMvK^_Ac_6(w9hB7V><0KBy2PkyLq1T@s#L-$NX-cnwXpx1Rq+{`We3M zZm#(6&f+LMxA#AxV?YUMthlqB@xGQ$6-YGk)KSraGPX*4){urN3G-35q8zVZ63|Je zSqf){2l4()jJxeaoO@9s;k2&v8kn``!FjK_y`|B{c)vGZEbSU^1d=M|yzaKr4VImq zjB1CmhI4!tbeuNFct3rPpOZ3bHsxtuWtwu2#^8Vk_bGpYiYDQ-gEqqm6eMHf+3Zki z-GjCC82o`l%!3nj^I@w#ZwwBxovhaDC8){n?J1O}iuGhU5QeCj4H^E-u)Hm0!W>W( zQp%PVl!EuuDdox#1z8ZqhMV@*OhmPL_KE81Xs`$g>$=HCX`*y%p;4+wbe3OVv_lLVSX%#?DCU7qQH%o=)gx7^{7+rYsPG_dG_e!+t)yA$Uxu0t zViodjVTpYup-4l{{|3L)JVMNApiPAt8vM#;@bMH1aUjibZSfD-vCZ1zQCJW5-93Xx z{`?^>4VUf!9wi|U(w%r!SqEY~G56WXe$d&Gg~zLZ&y_YqszBs)gen}!J3L;UFK_v} z(xKz<{3Y%c(W#&l$EzQA4p0~E<2oKc(LOHvbV%*vT2UXb?zKByy*H`wN7z+2_i$|q zU!!(#E!#X%*i~ExHSrqN+Q@i*N3l`|%l>w+GMTT4+6katON}z*pJVMjI5J5*5mB<; zJu+zkNrdls3YO>zGA>I!kUsNu%~u`-^+3X@OW9u46K!>m$lfO3NAw1hvzM8}ZH?XC z&ReTuuGHs zbI!H4*KG`)6QO$tLnr3|l?5M4sBBg4Y6qw+_)tQn8#+`$Tsc3}nba(JezgP0arD~0 zYRO*kd?V3J!eY^Z_-vsXx6TrB+gh*e=Pn`M4b)&bw0NZp%l4opFk4BuPV1~N$A*# z%WR9dP{b1OT;}lag9fz{q4o>f%nCDNjLBl*J<+%Cn2cUYk z6>0?t)fa183@Unqq5c~T3Lc6`(z+?A55rJj#f~Wq6;e1_f89)R+eBVLj5=?QkUd77 zq0m@8%!ZLnpuFTBc+J^@TpCzrx>UO!!+-BAR>L%ye}j$ziHS*Zcs~>#d^*KbYqOz- z5l`CN48d!YM)!RhrUU(jIaU86Fx7S%U7prRD(|IQDU?O*gi>BGYhkih+*2y<)r4aV zjkLMgI%Qe%R5^@1q>&S#<1`w<`{^`t4yLuVMggORv|cmO!m%_Q2aM>n-~dIKk?>tt ziVS1VC=oNpp1>q(w~b)#M7HHt@JVzNx{-EaZYwS$H-&m#J>kYNQ{x+E(6(f!WwFYXU5l; z8eoNOb)RIrM)3pob7AA)dlPgIW{(l&X%R+$uLD#T-en1ut=sWW9iXysrAestnT!Tg z+H*2TpJ0slIfntntt;F2HAg|o6bbq)5mJJ5u%}2Hqbem5^m>BIhy zs*PA8Mt)~=`Xh%qwFsPjUyRU}fq(4)l?4M!sB9Vd$XxOwD~Yr$7+6B3GjPYx$UW6z z7}?l3d&uY{fEg5l?TjsV7^=mLNvI6!ZjnQ?)&VLD>UPA{H4aeO<0?JAX&y<-gw;(B zAZDXn6QE3LNK8$V_OO<#Ngc(F*SCy;z z+_WHMT=r%pxF@pus@S<(_U8ZGP_67K)*6t%DHAqTet?ILdJpphys=t!!po@}{T@~# z#7a+ClCa-XzxQEE+n!P#$~!?SU?I1_j0uyjA-~R zMmLp|>2p9yNH=~9y21PDbkm1)(;iaTkkWe2L@2vvpHQ|j7owsRv2CDKDK$!v_8m}5 zXmz*s+ae`KVUQ?!1s<_m&#t zB>hLkG7C%!#_38E2y4scL57R}+gV(^7X~C&5&sAsCm(yAVyK67gy`%D9XT*WxC4PN zhq$Th&~dl}fv>%Fy6MCYgvI{@=#h3H9EqQ32LgTS&JF|}8##Z)@!(;3E+zjDOf^d7 z`T&Vz`B`imm?`?q$d~Q&)ILw`2kEoiW-wFm9~Sk--c5hRYJ22mG|vzmu*%TmV1Z z4IgDCjC<(US3t9^{>$j|y>z{guJ_Y*KV1E7N5kdi@adZQ{wu_vCf$7{U0+4lSL2Pt z{QrWNT(i)B4Srkbzm{&jj;^nV>;3+(;Qsgle+ItzZ@|kN@$x3TygB&oE%@oJczFOX zZ^O&{h4A1f{kOyCt>Y(c_1^&>#&7q3goFAqULM3d{yXXVF1kKM*N5r)M|6ERUEc#& zfxt)T`yb=?Ph1U`|Avn4_aBAtFx2Oz3xYd6O-|;iNydRr?054C|onPRO zzr@Q2@xjI8KiKbo2ycHFFNXo#_xr!a+we}kXLKe!dvz8{0uTm8r23I`1T3H-TZ#{Z`H^H1W>6XMU4;?J?jV#mOx z?*DW6%l^9mc9?P`8@%Tqi?oPr;eQ4&5Gj%Z$d#K09+2(vIe0ZTR$j%}s$9*5r8=9xQ{|Y)LY0`Y@-0!bYTPOr~(&(e^#>){C8}YLKM7UgqmrtDpm(Swm@>Afl0WVXh z!sS-HJarmep2o{h&w$G>@PY@x_;h3pZkP9IgFQN9eRSVW`QH=M@qO{7M`6tky!{N_Xe}VY2 zh`vO}xfTiSE|}2R8NV;#M$T{YJI!<0Myg7qxT{75&tJ?%q#`9+wkJI^k3YlAf=x)P zG=MAc6WTO^-`l}NdIdZ$C}4xxar2txK858X@X+4<81SZO| z!>(bzuKA8mYXE)v^OMtSkU@b<;D`lqUZv8zK?~tdvq5btkI|-*&x3K7A^tuS6Ri=y z8vyXja4E)WStD-x2iTrY(TPF4e=mZNxQ%YHqRU`ZddW1Sg_&P=ICK&`Pm-Q~VVHQk zJtl0n47~-q2T5yW+qBrk_C5!wEV6ARRJNHIf9?R4MRtLNO3x*u4J1lmr>EjjQ#QSy zcK|tV>1~mJ+#+wRd3vehxjtDLSk2M12Xj3N-T2JWlSpIXMiA&1z>`{0rwY(E6IT9MNDZD0v}1Uo`lMT*42 ze)xo6Rf@z?O^w85MMPw^5a_pHe}VN20xqehmEXQ8DX|y2fA~v;`zHcPqT?&qJZy3r z_-JgZGJ<7Kz<&})gX90|ACJf&_saPE1=fIaA9P3 zu`)VX*i$H#3vdpYoq@V4RVL-*UeHY|_2Re}=HwXHcy|hD!S7pd6e^8+e!UodeNK$n zJd#ep3vI0gvly}GnXhX;e2^Kjanq;#93U)oOZNEq_R$g%@lBYjUuz;J5Vi>#Gv~Y8 zv@!GGUxpwg+O)l`2{^D;b!&HN@T{VB)zmb5kC1Iu3lRVbeq~78ZjUq@Gvhkw-ogAW zI6!4#{z|B9&EKj6R2Js1gi1Gm7wZ%5r`y0`dp6N`I{+W2HQP6YPfn83sk1dbU+Ae9Z= zp9B4M%LGPPWkpx~gkO~jd}5sbiL-+v@?F@$%do3J_ovvw=Bec?HjEcXc6%jpgrXGL z-XvHua0rwK>A@wmZpvjmk+bGis^GYdDn$FonK<|q1H3JxCDw?Rj6hLsv~>?DQ$)<+ zCmAYW4(BGD_Ztk1%rg?^TznNf#<_`@C#aMYvw8KLi<1;_LIUSDNuL#{N~;LcOtlMa z4MwuTuZ$9Z(AjZ^33mSi9m6ma6EpFC$h#cj;;AKUv<&LBhYhioqEe##L#xK`64XiR zEl!chF2bx3obbfOaT*tgCuM$F;I92b#X%kspK*15Cd1tc1IdVY7D1F%t z<8Ul89<>d5aS>4*tg2&0aobNZES%d}EQEPQXF~+l9t1l}W7C79#Yylj6)PhU=e6@ItxWeT z#q{4zw^HnQs>6OioP191v-%ouOR3(tSuMHXghTM=?`&Oov{lrTNyS!;nV2Xc{R9>! zXMzM_nZ>(QG+)sG{yD4I+*qov1RrYAIS+Ktxy0=qo;Tl`2xNyOKFLh>= zUp%KRNuaP~`ra0+=T#G7Nrpc&guSP`2zyA3(Kh(}m;+Q6-Zu%At@rKI4p3Qm-y~Ez z*&iRL57gY|TDamC;KQ6nzV0xJIHSLPH=F<>t#VyUm)lno=;&sJ2tnlYZ{}nDSBJ4$ z(2<17$s76$2hg%jL+F<6#8lWaPfy<3itsI%Cy78>)WSU30V;a}vBlN74p7sHhXVHHuU$B^9ctBP8k5VNq23tB~1jw0YOjC}?!1*@RdWkJviB2(lg ztrc&XqH+#VCy`gEK?qBWUui{avUSClQJ-+higI^!vrbqIMr#MJ&N!^E7$vcAl~ zXv=Ap7MBP;{9nM1$-^H~HTVRQV_B0&#&2=S`E6G)SqXj)Ral@=s6o1<2fq|Y8dyDP z1cSJFFZaUw6mZ0}S1*>wB3WoZgXGJ|hNfmaUX&kn7I~3?7<8N(5KDQnSmB+6yRTc~ zfLn9_lGf|0n>c_@F^yfqvMW!B8E>1^FIV0xr1y1R8Qd4RV-ZaMU{hnkU-mEeH0+Q14Y)zm(9`d>H%DAmZ{Tnk>B z0;U7Kgw&r3D^dRfobL<+>={zTqKz{2k1$fWb}ojRiEW=tH0Cf3I@>xx5f&-=wyW?6 z(+E)4W()#{#-{32 zW%SBg4Oj-`X($~NeLuRna9m7Rsv9AXVp}jo&2$z~p)h@|HK9kH)?$ywQLvY$xNovt z8Ywkq_BW4!uc%mN{11L+{yb_ftc@A}jW~>RwqOZ@bK&aKa%dTRGB-)Rk^mFMq|xb~^x1u7gk0PyKlL5lh%+KImfI3JdxNt5wlt;VE-^c9u5+u# zA_qDvHCRp+*yJ@>Bmgtb=ZL$kDv7!|e*4zOOhMQs<6lTbLV#WWHCHniPEdQqV&^X} zB1837&e;NF0g1Rd+6j+!USntmDyzg%NM1Y}n@JcmpW#s2FQc+dydsD05GtS2@0E*t zisiLitCeEEH#X6rPZ3Yx*ECPps+%u6t5Mw7SmQ0DAuhYT-@6P-Bagtb@w*1=kbDds z2Ti@$;6-5FVAFMOUH5{I8AbfL5XGu(D5qv{f?Mz)GlJ(WVZ@1QjwRv}k z#lK{c)PgRmjU>S^V^1%tb9@XvYY~$8CTza{z#Mik-w9KcB|9_*%l=LTAxKOdgrX2p zhxa0dh-koH{m6z=b{WcUtU=*alBV@gZqbHvMhj+Fs>?il{m9_Su#KK*wgB6x+k(Nx zPYg*fwMUXohUJ~mJ?MEOVWUO0n%6i$Ws$HUp|TZU?{I+1LVQW6^m!z2t#WcFI(kF` zEmn$Q)B9lukmCZGQAdlva6W9y3p^|1w?*A5%~nZ1&EsO^RC3 z%8jJXb$~59NePfUN>Xl}C8TAwHg`ImmUUWeJuPV;&jeMpDj)&EWGwVBNS}CEMJopO zz{oX_bTRa&+(m6x(TY`ZVeKr0P^4h(K+?jmG6jo1OK`75OO(P!5rbGPpVwdqfpY@b zEvZR=r z5qv{SBfppeM}ozW^GBfkoh<1!IXxg&z40Zz%fcM#L8RE3a45=z~78+8` zg#r@Fkk(>YdkeM7%zhE5BBH@S6;X@-=^ZebXYo0lk#JL;Kcu09Xz42Oi1cH(R+mEx z3PbpJvgC^bD9+)JUaefeFH zFGOw)HcuZn5f`ZQ1RY?rYWxUvZzu8%w_>*e{D15_4X9toALm*@KqP+53+BvksWX7cj<+5zP5dU<>_QX*B? zqK0i)eE65pD4DY?R-FQ=hUuP?9NUsb-8xHHEX9a+|NS^=ft!177E8@j5*6+Yw_Bz4 z6|SLTh7<^019vkp*3PV`lqc9w&}u?_shRN55DcN9HJT zJt6BiFA{cma`omN2rL!Zc_DtHR4@AEp6W%}0~Git!=2Xi0g}KtHdrM^W*PY4egJ`w zh_fKEcZm1`a2ndX@>S#DaJxMa5&%mkLQ|C+8OyIq1ua0qAz$*G)NWRDM^Z{`j2=0SKL z{x$zc95Ko{(ff~eRi+NSeW&1N{bkW4xd43Jm`!}XGhcEIgO@|>PLb!y63xsxTe zB{Q98aZuq{rCO*@E8YpTzo67(QEb;s?q&9>1nka?S7 z{W~TaT4UWk>njH9{u2m7u(H=(q!*zBQ>J(ZNNR(66&ad7)Xrst{n8$JHlEa{pnI5b zTR-8#^X+w(g`ZGDW$PzA&H*Y5KcR%Gqkh7396*j!{w#=@EgOuj*aCJS@sgetb|#D^ z*_~kFI~0i47oUzvVLuTRt{1{QH5i#-^y?#9DdcN?u8(F|H3oe#W*>dri15_4VETPh8c1auo=xGz-#)sEo1fM^{CVZd6AhPlGX~JF# z56of%N~`g9F~AxL449j38_=L5j4g2AQO0)bEFmb++H~l2P~fcC45~oNNU5uiBm6GN zvM>mMOI#xe5Hp0p*fMbSIp|M$B-%`*O4ANuJ{1Bg0s$XEM!>JCq}8#yEg9$LkJxL% zY5jTZFjypm#ggRaH}k8OT?N&A#LCN~l^0Y3uj7d;6;I)rN}h0O-u6?B?fIhReEsGT&YnH=va}kS)8Z6w2kj|7Hwf2iSI(kfTh==){HCHfcHc8=JO?>O5q`L@7E+eMpRs3g@OTB}s44F6({ zCaBgWgJdX|t3khfmbeu*&ct4$hHln{NGsf6x(_Wg1!j7cTIv`A^Fb62Y`a<7y zrSq`95Q@vhm}eTRgvS*9wP2O@>kHW&Q*>1d**Ks-)Ds)AV;eo8XD9Tnlg7$OwN@+E zC#w}?TP#P29KWly2XYhy-zzQ_a?;{CM$0#L789Yge4#5Xhg5{f>%vH=1_3kR;QYjf;nxUfqgelE@e@?6hBcG1$}Z)8=zPfWl>N}fkmzS*K{R>az%9I zP_2x?9(v12N|T*|9q3fyI#1}mn{kwF3GX~a!YL0RF$Ie<&JhXHGfOz-P3G&G?>s2O zDG}mKiK?8GF#BAfC$?hZ`%x1&!LmPbD%@i%F;n5c7eP2AV=SMtN1jcL)u@_ov9UFu_3%YmUR?h({3vQKA*>Y>%0V)e_l~C#2%Htx+d5~Tx zgFnM`+Z7Ij$i}~2jHO&gh5KC!oBFt?p<^3SbTEtRfh7cH42CiNQ z{dFalf`E!x$}}$W`=>$)><*m zKNx!2UW*-*r!Ay#RN&o=$ec|PnH;17_p!K)@+h!)qH8ebL!HG~=u3YebPNchV9a4& zj#rVuo1s+T^OT$paTL@(h?az7_By?YeqjvynUpsr>Bl&=E*Z23%P){a>VMPtY`TbM zPo))jNaKq-%Rr(1vmHCOv48YP<7q0=s7`zmiG&--v=1dEQTDU-w%mBwl`=?O9yL!` zL(!WxL(%sIrLK(PQ@3E>(Om~iqR(+S>M3v}(0Zm4R8@GNr4U;L$DoW>Aq4}o_?Sq$ z13I%WK^0maqWl!cj#Mi_@hSh6KfwS4R5%%(hGqAl=lCMrqy zka5f``Tqw&NDLWYk(KNfdd&TK$C_P-jg4?dw6SU?P`-rSV(9&`J$h}zR6l_3!HHuV zRQ`36*V_s^=nWf#F+(sU%eTye^m&&!LSl4TZVnH15_3a zE1}XEmdA+OV_g0WW8jLzAhI!V7vsu4kynD=woxns_Z?+yx6Tsc%B}5)xs5A-6J%M7 zxN^)80?W(5)u*7puEdoQP!U&t1Q`Lps=0LDuD0p?4t zq6GKI<`(i5;i{)GRTI_ulu=E)p-N+3aUay?(T)|)&<_(8ALx*%kZun0l%UV<5L~B- zxqXx&1m<>bqRO9UU~vCTk}Ql9;c{L=uj*f7$K+KF$r|nLZbp?iMi&#b$1B|1B{r_+ zYK6Tb*`nX8R7DB~g`y$zqB`ssM;eiWIzNNzn$egnU#lqXNp4+!i&6f!JB#5ku=O}} z3}A=BLdwo`NO07V#6`-&?Rp${H~ zU`8MOUkD=ZPE2iW3Jo|AUnu?8V8=GnUyrGskF>{k?%|$o%#cHyMo9C7&D%n_IrYHk zduwO06GnHgfsT`X2r23{q%1^mM<~mIMZ)L~H)6Poap*XV?r_Ujr=*nVPTM>B_TuEy zj=p{PiFWkSr$Z{bb17SAOjb*kMy?NQa;q)v$q^g<=oTgDBh?UtpQz(*MsT*rj3anE zFup@=xriY*8IdZFg!O}RxuMZ4ztwgIc#fq|DtVGGZ}_q zw-|E&de-m;HE_h6>lhG9PA0F{MTS3+g$)%~giR2E)c36(ytELS)^3S%Y_|FZ+g zaTW^8z)20l5Db}OFi#N8ByhGp@!41^DKVH25>#`%w{P(!)@sNGVGE#p2W~yl0V)e_ zl~CDo>)8%aS#Ya_O6OJ{Pf=c^bhhQsF!8+FVG!B)w~H~DRYYDLU~GZ=jxx4eX9+Qw z)+WT<#$X--S=J&36ElRs=rVA1KlIm?7z_d`VlY)?1pKOEFvrKNDf-kYqTxxj5z9?@ z=3kCozFArFAnn?Zx~#iOZtGL#6cm>$PI$x9p&Jdo802w=HCn-|PZmc?W2KScJ~zuc z&>s^PQymf(Mik~ySbB)rtuYk9?9NTx<>d?v?m0=4e{o{lh`Zc}9lr&sHzaIS+1-r0 z3@CCRMCy*#SyYscK0DP&k+`{cXo+fq{itRw7bx%UEGk0}`n#ZGz+7U01@DJ~g3qCN z>Wpit;3U;tj70_G&b0mviE0x|c?S)|fvmz<$^!xyZO2kp22-i(EecdX?M-zD_dYiY zrAiT8y13a$nnEU79Ic+9xQuEiFs$8U`214J{5T*ZB#gfk$Vem%yq``Oy%EAtqto%h z#*)@$CffKL8jAxublPx$B8;`X*%gY=BaVVEqeuK6>Y_{gmlm!`CJG1ihq0E!u;aH_ zNPIokvUHtyz1rL6B#4}jP=y0|hj9{abZ|}K&~X?i z;kK$y1)YeKJP#+A;v`q#CyJBMr$Z`Eazz;qUwdZ2u(3qr~d#n zx??8iza9SWoUuBZX3_$LxpkxXfQ}Y!lo%`qlV+%fZO~s=+$adBaHG5)KjBy9MoAGg za`74ZQXCnt?Z3DDWmgl8a01T@}tO?ayL zy5@rit0q)b5NZWIA@0QZNmNrPbYM~=rU3IMVggy(1qB#05B>mx@YY#VfUQB8TLriR z(9uEx#tb2tG(!QN2>o?M0V1G60p5h4@T*dQ$wJ1^ev#Q1+V5oSERYOcS`hM=2<;bv zqyyS-9EU;LuY{jS`_ZREO8Z@|3mQE7%traGuuy)~cQaVOYhoo3pF_YlG20@rTz1JFq zxz&5G2XwU1doe=@Ce6@$)6id6^d15#^xj|KC;Y1PUZQ|8)Lvxrh1$Cf`|7sZ<1Z0v zF9Jyi)ZXWD7^L>TfS*Y1(WgU7?Omx!ndk|hHrnr^_O%~-MK_h;bJNGBMCt74!vDvp zzU#X1JLc<}?><;{A*YB?Q|K!3w6qCT(D^f3){Cm_LEq4+1QL(GRmr=4vjgSEp(tkQqu{ zOdl^Y25y7D*Ua;8r$1AYrd|TT_;w{cT6X<>m0{n)&`K#GfYJeI;FAMb}s3jl=x^f|p#g(0>hnTj;-*ZoQ7K zuZQdX{;%Nv_yK8*Hq055OD%lw7#;3xgJ!{@EzCvElL z0UyS1_kVH03ZK1A1t>H0@>eK%d-16P5-N9g+>R=2Mw9+`8k_W*^Kx5m`SNcJnDvhyF*OJeIg3^Jxu- zs>erVHRXR#OvU%bpC7^>n9U!FKR*$Fek%SvCI0+e{P`vP0a|$)|IG7$1%Lcs!{rXB zQh)u7|6BM7{megs{u~Z}w)zXimqqj?I=b&24iDc2^AS7S_a)rO`AvSO38zbp6>G)H zNYPujZ8NvLw0q3dDkI$yKx6m`DI?I@38q#ook{XS2`0@ZL1n9!k5?y(%WG2=$fRGs zw_4l1oaDZ|LW%tPav?{Tmnx&heff#e89@jo1{n~7o*29Xi?Cn^-Z+fhE5QE~)q0~m z4TX~7Wrap@)Elc+C#WP#bqw|~l?r7~ybQA0M~hxnRGOQBG=FcnR;Y}OYsZ##=M`)M zZezpDJOPxROm^$x)R%uN_D>mc213sOYK$ejvy*N-0Mi?hK1@4v#VcM()SV~V-`ZRv z=b7ez=H8itznbp&Zv+qv{>AVGl-4EiXRE&kuKWE<>3SJm*TNN;?Q;6^Jh<*uo8``e zFOjj*;1`Ma?}wg~wfaVQu#iU0&&8f&aA&;DG|HN=^+Ph`Kw+{3gB8fi`DGLr6L3)} zjgh9FXc}+A(7@(L-c67Z+Xf7rJlMGHS)mC-RPu}o<8Hzb0wX5OdvTTzH4`S+JO(86 z=ty;{(ip%`P;T=RFp!9lXdbrmBCcKV2O-e}t9%@Iu0EWuJIwdQ+U@?IBNl1%2;z5Y zxVbchZ=zJ0Y7}E2oWFtt2;ZadeYPF=V&2mpgj3QCj6>yP@aEVNd8STv%iJ-B-JW|CVa^=(T~`U64ub{uZ%B+G&9h z0rQ~eWKCqDc4P4G2XBLQnC@Co)Sy{MP; z4u57M{z}9Fap&{!Q%6L6#Gr0o)P_`VOf{-CSVJyX`}4xZ>UsuV%wl!u>f)`1nm1Xi z?kSBH>)vp+G49EJRK3uN$#QX`2)oYlzu8arM-$U8Tw{Z&Lw$K{#Zjqmcr5 zIEr4mS{Q|v{#3o;l}o$9X;PUEs4#ebSRf5I(Zwuhmo2nzq z8S2$E@x@5%<_rb*bQT36^&O$3;BNLNpuVqwH6LC0{Vn;@)Tq4D#ALMwR0N|}`;~io z>L9&JD8kfF-dffo*Gm?Cp|m_`IWW4rKGxgUQ?8FpwtNa34NO++0~fAXu^S%RSFTS@ zw0w$M4U84wfqXvS!zbi-XIO%8gqVCC%x0@aICt1J7nci_T~mc!#hK=!$?3*896o7m zul+JQ#ArQE5}6dJJYZC(AHy^!LI6Dmj507TWE9NFNO3@sRNy01Ry#c*SxY|Q;S)+? z)!~VFgPs60NZb&x?Q{9bQ7$J5ERzQ%@fp;tRBI#Sk^U7|LaYoxh6mwI(ts=$ z>Lqy7Brr4Bk&P-831rWsm@L*Lh=CcI6B%H;W(j@#u<*|_5y*wDfNOq_?GwkxO^`(= zpXlMX)e&-Txi$%YWy<4QDdS1^y2mL?|IYyw;k-LlR~{U5pghO{yS20QXMr_(eH)YI zhsFsyEaW7z}3U9Bs{YV_8{e;CO=M1d;eQs@Z4)-9oSoRvc(8L5`b1sGpXUr!HOlc2W*U}9W332nbOTxg7p57y!RYgexB z_v+(QV`Jsw+8wp2Vn5__U@yhNvC3Nc0F8f8_1@Q0YGB7u@wS!|uj%WVtl^0y6);b8 zaJR3IFAbl;KA>t=u^+Vn&j8slODovtwr2r0x334ojSMv;AawYoxPAJg)*etkIN+|{ zq!=y`&Vh*}v{YB#z(nry&WhYnxb^GSgCX2BgSz>H?Nz`7Sdb9Mua6hY<$iKUGAF09 zJBechH`^v<%7PyqrUZ{l+*1O%v!__A7tZX-tuKxg&|xmRDp#w!>s}Qaq9t7Lh9pgc zY^aQtcIBrF6XhZDs}nd8k7%tpSw;0(sa6IUSapO8Upov-SCm-+XtV~kM?T}dgF_TfgkQ?V3VwrnG2_+I zx}oBVvobi&%I{yJ}9&ZJh(*NKJ?L8+BRLUdV-HdaUQ&Nckd6X!cn zhXqvn92^xPEY8I24rAa?&+%L=BnHSZ=p!WW@Bs(EvcZ0RjtAQl;co_58Y$^Yge#2} zJ`#f?T8h!Tx5EY#ueh&(=`&#GkI}+QN>af%=;wyrAw!9QsG)vwGcMwT_Y#6kaI4rD z3D$7Z&E3~FK%9#HEoHI|@pVe#SU6p!v||(cvy_)-5^<|_5yywAMBHKhUIuKOjM#{q zJdTXyW(*gLp4TO}WCwAf`M7n-dQt+#a(pDVV(2(|j?uA5av1}PQxVr?nFNqAN4fyg zdv6{iWzB#xM|CqhBT`FA6 z-eg+KH{J=Z@EeL=16;=tb_B~5lGnUCWFeJ{-Za?8leNMK1wtV>*#IYRMRMl&gE` z=Ur2fq^gotAosu}o zoOx5)F($q#1yMGt-Cukp?7!LA32IeaH=l-~i{SGmxdN-e%CBwxZPc|D>;PoS4t5p;CrMU_#Af43JBA7&At)d9J_1wJ#Zs_ z*KE$e5AON*;H8NR+x>WX1XFVU2ru{G*Sqm@AvRfsmzUt>cDPK*jkcnb{nWvJdU!uQ zxSt-{PY>*$3JSQ;%Sf)#%Z7uOQDQW`i~<1kGFnsM%X}2ab6bdngki9C_fv;=W_MT5 zl@r6oQM8z~B}eoIQ-NPYbdXT~B7W-l4zEjWc6fzndxU$uzQO>ES)%NQC5lSugf(k` z0Iy!G;c^AGZB1213$(?n3>ho1gQ5a^CB$y7J&*z_@3)FtQt#IdF*dRrsO_1P@bP}r{5#YQNDHW8W3cHl56Qx@b$OtlFK}8_x z>yf>4gnDj?KFNrLQ*r#Nr1cZ~=4x`gFf{)=h#+oc-#Ujh#6(cqROlwEl@%_xG1Ay6 zIB3X{_P3%uXA5{DFr6qA0Tl6rr99W*X${%155J;Il6R3^A zd;!mkh-LvKA)J2#UJwvB;l0qQ<3V;0dR-tDzMle|b+3-?ca1k7@n>%VBpe7a*mnyV zhO#mPdS`?%>A4An6M8{L#;a9u=76lKd9YEpRD-vXs1s1&&*(Hk0fjCC%#Ej=l(74x zx_6D50T~L|H&?^qoV%2vy&a*{`iV^)LKvgOwAW^0K)Dwzg%Y*Y+va#Aoi?DhAeT1a zy`COaovZc~MnFG}Gp8}FJdpcf`oKC7kh)Jb-QqO*L6pIqiQI^`q zs7%o|#WQ9o=nQtrv4QlftE>So+Tt28R;qTEmBMJ#i8?El*_*%)Y2WSDD+oie1oiVY<*(n7I%N=u~aV&sMpNf5I`B&{X&f=ZuB+5;bZ{GJ1kJpMA2 zvMZH`=LjKfkfe@Xkj1N4Ub1@S#TS@D zI=B%X!~3(0p-mwzcZBG`8$!A#oK-_8^Lr^m*kI!f(&?nDAQZl%Iyq4BwhKAs-5}~X zMpI-HTQL^=>&~)ZD7VhkS@5sen_}eF`I}&CGsLWMTv+2*$t_{#VKBQ8vHNI2rU@yh z9vC{l&VcNoMCxsc4xML8v^JR}!J>BeiElkUh#uG^NA_`4P(^=dMj>Fevi3p{Q$kKf z+vzfD7T+7?_$RY)d^^QVLhI}-A+-#G)MwxyZoX|9>4Ifzyk%r&UbL*=TZS4Fe>w1> z$M64E^T5XrJi6=-*gC1VT^Vf~waH^zpTBB#wDp0HANWvAt5p}V_dovsfgZXyq3w#5 z?EMEm29Q#(J2eUXyE@1yZT&|U+GIr4oP)b9^ z>13;=N8t^zn?=uTfl3gKK*xX^t>A5eUBKKVJ}Idc6RbQWva8vNy%(nJT1v z5N^TTEz=02_@(WEpj=?!w2=^T4uK4;tWkv&W84o2#W-Mhh43-bl!VW;Hl%0$?Q9yJ z!;sTK{U#F{L*JV*4Z3vQO1O{HVu)y{E=Fk1-Q0WNgDB@7zmF{LM-Ds+-(D*G9N_VI z4E!AT_U_b`Sf@LWN|PMmaF*=r^Mz1piOZvxJ^nIUeeyxd z7K{zA?<^aJR`(iR8eYfV6eA5!M_@5a6c)NL5{eoZM5uUpTC=ZPv}HpaVlVEXq`9=^ z5OqoOTsgFGMW5>pmhrmeXw^8%Kb0)}V`sBoCfKOubZ$`*n?f1(w41OJ2NI_@?k+2IIrHEofMr9Di z$13UdB8UkOPeHh7n#;6eEh)tHF$xV3$L+f)#Y+PPe_| zRmkh#6AV)AI0)hfB7CiJY$rNo$oe=NLI;KVl`WB_3-yx-8Bym4{h%2?iLIi1_gAyW zcbf#?8KlsDXyUYx(xnu~ECo7NOW*jD-jq%3KXi6tLoV2?Pwdy&n_{?N9oJwWU1)H~ z3DPbBlaCCRkQ=~m!P+pO$!hhY#snSckD=ygU@?({WP$r$B_ew=>#% zgb9+ffm*tf3%y;JA7`>R#mL-^hRh8MhlD0ZxiAe`brhCB`5WG#)rBT@JJTgY*eW&* zYss4|aCfvsm@XJL27@0ISc!;UD&sg9G{`Bb8vG(2(FJU0x{QjWE3$|qyXEN%g;X*K zO~>0wSE_{h+^P#!TzJ7n{obk-D|A#Owu+8!Tb9waDQs_wAC@7}&W0*;QefaYE`^2JXO+6;b-Vy~Sm)1w(dB&dF6Tf^=2k_o3|; zJt(s`tiSFCs3V1?s2bxFVp~W-x&B7+RF67t9RXV#*izqoacj3g2iHLh;CZU^T@1-w z5ybDmX#K=02lOx+OM8XRg;x6tcDAH3P0HSQlBy_7l?6gs5@a^tfU5(bkN$vCz~X^2 znV4AsYzAut)gnhVfz>zBO8ka}goV3Dl+6@ zp!zVAAkQEw1yNC5`^GG~*3Oa`6e_o+9NmC<-XaY=bZg^QGc0NcrJ%$a337*dzlWLS zM1rVTuf(4q7SJ!Fr_wp9EIddN;#Cr$wlMGE&U-zPN%8ap(nh-gqEeDzFDq;(uqj zWg<^#&jq(&)8u4zWW0{)NQ@f~Rv4p<@Yw7z!el%n=&Gc7sv>KiM^1v=uw~LySXy9y{s*h8ma!{*=6Ge-*jNiW8S$+%6ynQ;qeSy6x#>`uR;%QoL zH>*=2BN*%?3|1I(LeD}@Bbpts*G!W|_K!0}e4ByC4WvwhXSyXKG+U%O3hJ4*PUR5` zxnA{EY?A_`0g|VK?Nxb1&|srF2%8#my_W(0Y6IhAcrIqG0$ZvtUv4}tPJH7eGdr)0 ziiID}o>;h5hy|Sh4Y6=Kpd0uKgu>_mViiBb(iF%oc6W(vPFo&jb6k@mb++7KVsM8p z8Vulig0)QOij1rM!rP_96lL|7F#U+i3j~D*T&urOf6r8Zaj*VD2>ku1{&I;{TjlUo z@Jm!koV=lRbils)3u3r4)n9V$z~@l?ML?KV{pBQhb8PjOWpE>@`paUt=P$%d36u86 z@KQ#-SHjDu@are>vIygKhvQ`nUN+<9U3hs1UY?7MPsPiLcsUL)qj)Lc<#TxXYrM?E z7yTD}3M3X`{~8|>81PWh5PAc`{_md=_UK=1^cP<{nYV(>NHYah6Y2jlLkY( z2Wc?m)T6=BW)&I?Wv|mdErU?|2#gCXZE4Tct1I2a$*$lO+@AweBf zrum!0J5!lv@eWy^?cvYGUY^u^wh%PKh^8yANSej?>BYVeh zSB3GHCr>aPJ7JLzg>@fC5g-Q++ zV;_MZlC6b}@L(Ypb8=_*bFpVC{=w(Xc-z#lVH7P^I0{y6aVAl;)x*)b6A+9)Aci9i zA{rmTLzErRc=8bA$fCKZ4wm>xamJ_qo-v5r4I)C|?}I@ErR9`h616$GG4v+jvsOv; z_Qnumw_Rgsg$CaWW~@EZ4tx&Akbp4F7KMZuuyY>i+k{6Wla;1MauYe zsvnu2{~Dr6EDG^c$MyV$HhNxY(@@cWg#j1iQhIQ+tYg$K!g}Jo16-jurYG@q;NYwm z=z0o|Ng$tZU7VZ%y44$l4nL@Vp4-D89MHG3t; zxP!|v^t~<=w$pcl!9C61WHq>B)?+vw-OX__!??=^xMX9Ogomon5)AN2_NEv~uzgEu zHkVn!rw4T*3t{ZbzS-yUpg#3%Lw3+u7|)o!og zT=*O|5Ka@uVJAzX&?#9Wc$ME`v(lUL3J0e3`amF zjyIq)Xh!$L-x4WxCMZA^6<80Mj@Lrb(M?dqlN5sXgGvp+qkkbYK)VZPMY6|bihzF3 zZgURaFQ!6B#5F)Ct?bQg#m|sXXeB9&pBXcv9}PEnlMD~hR;>|AzyR$`KKBA7kHJ}N zBdD&i?CQvPp|T6*7OHz#KTl$IDkyS@xfX;q0DBQd7ot*Oy{bi&3LSkL=|TN{jP#%1 zS;h=w->PIuWFWhx2MD2Jws$s9jsF z430xQ9DeTWNnir;20frXn=g(M`;D_l?6ORoF$X%auNP;r2yFyZO9eUML~kg@ISdpH z0V*iL2}ULurjR&PLE{vD2y%@fLKcAnSYQY5!cKcGEXX%>n_Ohd|yCRy8liVgeK3>a=2I2bOWd^|}fH)Ghke0+YQ zX>cvBtb3Huqic%ug2PgMmX`zFn~c6!Q>@t>Cy+ zsN}vIR5WVrpsF4eD=tpLZ&jJti#LhK1DcYn=LOgwx28XkLNSIly#PVsRyCqfRqvYuC~^m0pFu|e>zIVb6&)oNL748ov-&mPN8bqZoJIe!X{QHq@R z6x=Zm2!0*P93m2FrHqwer|%FE1wXtVv!x(M7cD|O=RP1EwEW72dR78}6V;xfQ!O8sqS`!V$;3^CFpIUx$bhK@IFB4T;wOfWAI&j7j*la> z45MCZ&?rYi%zcKB-_9{UmYN*J;Nw))L4jq^?^hTm?1FyM%h&)xCf2n^?_bn@55soRT!#OJCxl^Z?53T2phn8||LkC{UsoJ|T z*(GR5y<;?ZIZYdP8O7vMUX)4VdAh{oLsAm26-D!>I!Mt5e5W%^WTa@LcXx_@!A7}i zC5jD57o2JqF8NX%L>8@&Znkn;DAu zWEfPrSiEdfE9w{i%;@k1DP3oxLshmgSgY|tC_3!7LLdX3cgV4l$x1Xp-^7rVkwlH& z-AVNCH;Yr#;gr~M)YuK!W(hGwh$2LDa{7rfqrU(F-vBw>+e*ce;*RR>Vx@Fzv1UqJ zkm0b251ctj-sH@w=6iC=>o{7f7w~9WyeZuWVHyy6IP0=t`Ovkv<`k<;gtVU?8H@t7 zb`y9^i+w}7p?Zn)067EI*aUJ?F&OAr6E|G4$2DM-d27n+GBK5^IUFz*ADCjQa}0AO zZYnKM6nhpcf47EIdSaD5u~-15AD-UVHl6Y5w0Mrq^2{91^8CK`k(Egv8dO(hBhM%g zjox*6Xajq5aS`17kUarwtObz40y`CJ#j(=98Cb3_!VH%q;3Dnd&%jbY!4B5l0y+rd zm=AR4LifsPn&jH0V?GibtZnVV54b&pm-ocYl`%LC9ClKA=X%@VbSzPjjB`R#BS!Y0 zWs}d@-a)v9-raMkFF#BR_%wSH2shnD_b0d|D+qei;qp>d$q*WBjIV-co3ds~umFkb zoI32y7uhp-+9Do959zBSQ6`AGLr@M9YbHRYdPUfE1G{bDPfsa8B?as7j7QXiu(=YG zX+}WXNym-UeDGF8w{j!ucHq>UjDpLKuQ62fNsZ60Y5hcB+jz2oMHl)afh8|d%*k21 z$Ef(bDFb$(;?Pfeu1>`qQA$NGmVVNF`(xLIkd^1t0IMZ)Enf!~+$~ciGRg%wCl5uK ztWE(HrKX^W1)7GKw}QULz}+p##rkPBJHPJi?1Z6|K7Do!H0Ys}CtHP5Cad*9T5>@q zMZ^N>rR0}FX*s&S@bEZjH&CvROb%SQV#V&>KF>SL+g5;E)v*CMMzuIH4svC33WOAF z$?iSy*ny9H^SuWi^+dHY4~jttHA>+(c{JG09(*~tj^%R!D2gAT2pry0^@_%Nw_Ue= zjdxq*sXL7G#C{(JEQn16f{xrYYoVv}#2Z`E+}miHZid4u8n`;6qbVdo;Gq(Y!Y=%2 zYY|SAfI}*RHnOr^T8ju7MS5EIe6uS-Vv$B$UwG}ZJ9g@aO&r{yM(6pIEc2XRT?!2} zN)%cZKf$`>ZXO?~Ml>LmEvA?7J27YlHXCdAaPl@0!-~paG#rp^Vg_FAoqM_%X=2Co(cIhzG~eR=~Me z-%V;y(|BEd6GQJhHfV0FIoK|tcD$%1dUfsizC`VKeH9g7fu$juzip63ifW=Y=svSe z&iqL{mZNHuqE^xB74Q#I6lF)UG{MC5fc(KwbB7e)%321o~m%et0B)`iRCt%S=CSh#P%*nDXWcFSN| zXTOpk=B-3gV>VS1$Gjs252ljRny9{ZRYd4u(qmBTq)^*8eQTkzTneB8ESH4k_@GFW zRwe0oc$`teb?@v6uJuB28BC>9*l#v(-E`d=?}d}XZM0@cs+#19hwP2Daz+OmKz@T1 zybkEEZ^#=MxZE2`oP4q6nxz5tXh3+$P~~UrRK)zsOc0PYbYOG#~NT9Ei^l(h2j=6eW4<6d%^9Lmm8bEj9roz zJKHu))fPgy7n)kL>z0w%E z!Iwd9;#dKWB`pZtuz87%hA$rBjE+ROkr4R;L9HzH$T~8O-1;4EBjR9_*Pd$uk2IjtnT9&wAu{ zHuL{6$Ha9ZW8rfUbQIE29!hJd@t5SWTU62 z=ZX*lp?^Y@%QX?bKz!~K1!&P&1&>ZIL{a7J^ipA33Q7#t#|x9iHJBy`Z7!f2B9g)H ztiqRbaB|TeVaFNykc1(=RtKxEM+Y}YfJzX1dj&`k>w=L3C8=O89gI;aHlRG^Zh{S4 z(udLFm^U~G_3RsigHQvvJf-gL?9QljE{&00J$JV6?THc!ZgddmHpnp%D!Nv`=BKapi)sygL}0i z?2xT^`$AYCTGfDTu__dSu1kO>Fr!QbzG5Mg-LQsvShi12WBp?$C7xkCBov4fKErs= zFkZJAPbgop`aJ_Q;w)|Ydx3bPp@a2|qPOknZmUcPcnk6?n&I9 zRq(_rOlUo*zfr{{Q%$bZFqni@*S#VfBr^@GCCHx;${XGxM7Og2dq7Y^#(3THVL@vY z|EV{o#>Vulq2-p4a$9pbGe)?5XDp?Til}xbIh*Vbv#Tyjc|oRS)n47M;zLo(sx|JD zVS%aGyjTv9hFf~#tahfGp);+|O!l~e&Xz24iK>H6`F4d7RLh9$0v`ARl&wq@%!Mn6 zssMr^0tyxxLK*sDsJWrDlom!qZ`CQyK#gX>H$P0~1{gP?6`Bh_3Mr9;ctKz;-3*4& zs($bMe(!>vJwgd%{ttDNki#Qe^@(#`!Z;_Gnaapk_gFYWr6aL+oSP3l@T1zKID6XU zwghdW)5G81eDlD{{EAC1Jb&fNRbT<Z zq7Zg3LI~}591|+|-5FMtex|a}Pn&N4KTIGT-3+;FN7XCC`mX|_01S}AFmOEySFlO& z;Dj<{qKK_OBr2$CkZ>Vmg#r+}85jj8$+)*`sx(^Mnak&w(b?QcIhVZZ$i{6_PX#4&R5meP(Xlvk%fm0-H$ z{1E`kAB9UXt(fox9OETOplQBDWWG}#SxUj;*lNBoqCQ4ue5~TxJOXdhHVPaRwS{Vu<}A%Kyf{enc#i7 zt}6M=nx&Dge1=Bvx+2yspyqLffjW5x2SPz-M6Hf1K%q=>`mjbRu`9!;r#mkVK#m@v z2vyS75P4g2XnJOh5nIv&XU5AH3C0fw9#?!iY?CtX`TF#JaYNK=YPSI>EImy-J)S8& z?OuAC5cvC0diwD5S82ta>6fVb{ze<>+rIoXVz}M%)2q0;nZHUZJ0bA@Upw$Ql%Ez5 zrj?)mI=nfy{PaJ=jrj7@Isdb8&;K-DK8j(o58>rDtPZgcFMo;qGyVcE19;;+yo}QRuv3|w+~BlhH2pSJZ_l`vcg4~Zc)IbUcx=_Sbdwkd@_F2Bio|O z58ffy`^x!Os(H1-UiA3U=0fnDpam-&j^t>BuhW=#f!@Pu^sT@~t1(ecF|c(5Z;GrY zam%a^lH2kgn*~lO@jD1xKcP^b0gWOYo{mUH@o7-$7M7J2D@%Hxfq0^l-Yx0&UQTqS z%1C(%_LeF~8}0kS$_)uSSu3z}wNRD~ij5Ib9a;d& zRagg_#ub20X!SXOij&%EYf@|d#IZ5sW^|F(MJBqC32`ZOaUbmViK{%9^PBumlM1^b zw?s#yiTi{$Y_Qj*U^rn3oVM%@6XX_)l|(q$E$mG(!rR|eEtjis`n0H&JW`#QfK511 zM+6-qUID)BB974Ict6Jhw5eBBaay@aoT}tO$RE=b_7KI%I5OY^j_}Cu4C`<05Y{Dv!!*|RXsdZxzgFAUYP2WBGCCi5LK}vK_s=mF7D>^> zfJ(zeCdP}Ntn@>Y*S^Nqz_{$`2@Fw808{0} z(yK~`wkbZt`qLg%+ow=bh>FxQz&r>~iK;EoMJ%LRPkSL>9X!1Qb+C%dqN{v9ujPV0 zgP|A<333+l^)tX?T}|2vbnJtv~VNC~cHZ?a1{kc--|@V(Ld`C9Mo7ruYc znAv#yMpR*r&MmXDHVC@FGR&|}fql9({a6`lfb2*)_Y@u)ua-yaJ;egFV)Owum$ArY zu$K!{2m`043=?5RWlo6gg3ATOHij@wSMQ!Q={M>!~`m z@!=`mx~$E)u|QR5 zHg32~Y`syJw4LR#_IdyriN&%)}A>*`mufKY;X|57oEz7 zvrJ_>_1eN2UDn==-gqrI%%am#4|KBFaC~#H8#lL1O@ZNcT^4Q}_AY~sa<>+0xMd~G zlF1v7)br%-$|v@jzd`tD^^hN?vJ0+Uxq57LWO#UmcX?m<{t(LH$s!csk`A)g5C%;_ zHi$P5LJtax_1mu8q529SxZwPe;g#o)U4Re}ns)YR1o;elaZ4B!Q)i+#6MCck^sy}b z)TU@0h-W0-&S;*1zE$w*Vinhr@PmYFRRB>nW9E8`LWoADgpn@Pep<+>vW_cM{%=tc zF}0&vP2*p*B8Rc83l6 zi05~d1;gcVn-hDaI_p(C#2{^cbrEWnLTSKdhz5O0@QqfsD~~o-nj# zgsXGB2k}I%GPZj}9%|JWc{<##8}ZNrB`CgZ^H^pe+d)I+RWi}Ay7NeXV^`n3)gSDZp+3iukY;}3W!O!`6!(u?a|;#!eZ;@ z46n6rk>*C7G%M^)P9Ea-Vge}THyFL|&fa?%Ei!r^*LrV1TGUGmjI`-XnRyhaX^(0% z-?BNI`PZ{CafZw!l&;ig{?+VF8E4+;y_voDaOREP-Dkcpx}Hp%#bg3l7Bvo2ga@aC zwx43;@EAj52gzZRP7WVtZ^}pxM(-cU-g`(6M(;W~*r=YAK$IbH3?=law(+OD1I#OF zOr_hMv{w=LVW4;riHBaUTpa;xY8o>NDXRty)oLGFTy@Bl6qU;;3Js^gRrhM=-puZ+ z8IgXSO>Sl)4fV;@I*}R^pf5DPs0#B)KXQ;|-1Fqj+n$`c3;q+xj+Xw{??J5{_-RHq zkJ^^xX%2fbJnO7itjHO*4Sd`&ZPcrRHhI5Zg(|XKg8Yt+O^}dS<~<1%2v1vv35!;EPz7&JyQV1y#NX! z@b{ts%Bl-5TB=D2w2pe>h(L24f4K!OMT6z42?j`~oje!6htbf)DJc#`~$^ergmcSVEnV z1f$LAaIqL8h$tLkFj@PtnT6Zoc!5bScjRwuFfUD^3kPr5D*{jD5&B?W z!rl}kF+RQ-au*~x+DM3n%fsF#3#D2e+LX(%`2aeii0bxAVRCX) zwK}?dV`*1uccEPHVDn%NnoXcEGV&xQ%t46CJY5+EXNcD@47bDMt)JN3IYcqKOM7!B zCX(qyArl#N*FF=SyjdJd6RB&DJ6DUNoUf9bu_3=VWqLBPT93|Z?_qC>VYLf30jXm` z5U@hs8^bUCP=^=Qn5Y~^xk9z#EmI||m&EJx3w5zNp$ih6DV;Es{3!#JQ>+6@Lcf-* z7!Xo{ffC)X^?xD>6eLapR7hz8hdg5j#0Kpc*0j4at0K}f9xkL%yb(TwR1)VLiL_D@ zaUfkJ{>XGF!huKfgV`VR0;tEfMZ)izhwFECl!B~;1M0ItRnESyb`p_8n?df}*QraF zV9k@oj1Gj7WI#$1{fJ4~GJ2Lq&@#nwW5|FEVsFXD;ux%5X#12_Q;XkXy!=FGdHEHA zC2^cC-oDM=6eHd)k`}ob2If@YPB1#W0n<~E34!sTnq1%x=9QL&gu5g#1FidEi1{%C zw}V3N_?C##h1^3M*X>xh{mLDK+t%&48Zx|kl`}uEf(Ax+*T;H2?<|ESv55}MD8w9` zyxp@NIvBk6x{X(EF?ty#yK5LEB_5zkRZOraFqo+3p0d(Lb`Rrz(7i?6*a^!ou)>0g z(B##j0B}_F{08QFmPC&%9H29UA$pcT!V!8Rhy{#{ZFyJndaCc-;6q)+7_VLkTn38} zUBm@Hr^qv7`H*2Pv{-6dO_qf}Gj=^=OP3rkr|9f@8hcZW9J}xatf*4)if|e+1T8U_ z1}c-(Acd?>c9{}n;b}|2pn(HINHNDg7)k~hpdFN8awB4BrWq*FCD=#FL>iPM2N5Rc zR&2D2iZ{qOf-?S%wY~I2Z$#J+A}g%bI1B?H^EHn((@KEvmiBvhb(qYn@hVX)Ba1NtI7pPl3B~dad1wnybC9Q zaYW6*`=he!4*@^3B)jCEV|_*p*>wzY4P`$F!qSZ;(SWRP)gVQZ86;safBQ6l>=v{) zkmLi_=d&5tfKmQC7(HfY?U3@%)hYi0_NEvacj1ocIJEl62v>PnH@z!*FOFgrlJ_<=%d9Yk7WRsrs)}s|UjaX*(I<0mBEM3rr{tA~*k2!$R;& z#oRMC*QlIwLeSh(l_zPU!xLUzo1OJ=gLvtz4(n*Z`Xv{6JYYM_e8?90SD8H94@--i zu?c?q#NCe;U-2zzuN$ox*xBvbG>a*$OzLJ2JP5E2XC`Vat2OUr8C3oGd?z)j{_FGk z^LRz4^prOC8@yVbXC2MhdmmUBV>{sP8y&>^^|BYG_-lAHXVkqoav@nqv0+zwzR=R$ zuqNuMj^3jbU#O(khmz>u7+ta?;ZearF;(LPmCV|Ip)h(`1>LLy$f6*lRhyIo$l5B9 zMo~z8jOr|_2m}-YLo|?+o_!l@*dvJNo#E%V(A}Zv1|GLT~^mZzee4P-i z8@j*Ql`5utk_DD4tXb*)m;S-NB)eRa?kTKU?*11xqVw5wVa;of+`jn8^W?wc)hnKS zX7Wkaw`(UG^=lTn-xgRtvS!&5_b)ltS-X$F*2sqR$YZV#Y%doBw{$$YAqS+gY5 z=snHFoMc_QQ+w7VN&?e88Qv3`$zc2XgXv5%*Pk5dWxtsk^yIP4nj~xd?cVA4V6Y1` zO!v$MYZfmAJ%Ik_vHt@ebBDWIPHko3YnX~4OWY?0M}07+3{4P2p7oe_ry;QJDt+%w zlkEEn%OH>!Sfo9ZJNO2c$OybJq)rx^@0G~9qqo3M~6VWk<=N-cEJehGV&%fgvPGaBAuXcI4;!fVS!W1J7D$v#G$6!8{B@yoyV+A7x zrk|m2ctn)bjyvJF*71s+?qA%{D6+jZ;?w;PLO^L3Nv)2$|G>Y?w8sAz_iH{Gu(_|7 z#pGOG{r!aUo%_%I=YQ6e3l|_t|9?s`e=xgp_=4F+H<$$n8VF{S#o%!(Np9)_;+gwT z#Q5?ES2?7C(QXmaCUmgZr5D|-iVb`D#_2899j7vwy(*aZ-l#l@1+(Bdo#dG< zA%4yeZZp8I{hYaP_&C$B-v5us^R@ zyz0EM&1~0ukS$&Ncd(20w8t)4wde%)fA&!Jxbj1nu1u_0rap9K`H{;`T*@BlYP!T; z(?vc_moExDbkT{v$JRp8Rf&}W>#khtQ&m{kRduPos*8Q9E?XH;b;Yu>s!Nxxtc|X# zg1Vl#-1pEGWw$P~)OE$`bh$2s`6u(EIF|jx~@#D3=-I{>&nGtU6)(x z$_DEazh8s8E?ZjGb@6g;;;IkURf!W9s|H@V(l>6Fv4<*C#Q#E-VNm{Gs1ozf%KwF` z>dv+Q3sr71vrL34p66Y=e;unLvj1JW&rQD`v`P3X_P!8HOL2K{n?BP6tAhyzo_;rq zyp^Zl!Q&q8_vLkY<#ho_oGsP`qrJH$(1KR}XJsw$q>`aqui52VAQfB-d{23jW-Tza zv=-otX_m=mz;ZzQFZ?TlU)m6ac44H;MggSD9Imj&_*b*f(;nCgdO!r=GJUu`^t z9J(33OTf?_T_PA5wEk}@R3-tpgToa(@?ekK;EBF3Dm)Mzps+X*GI1;GY2&+Z^Tw3wJwR1->QAzjmvB-miE?L8UkB!qPUfS6y8=Hd9QOE2-Xw?Im#n3hbmR z##4iO$fj-NZ;TQuD{MHb!Y>6!0O`O(Hj)j&I?~Cdxq~~Fy-y>_IyK2|)L~nT;)+zT z=42Av~SmF)Op&n2bfSZAqU42|Nz)fvS7Pl{{$D?BU2HS?V`dz917 zJ~H0fN!?zd)5lf_F86oBhp0V4LY}0RJ~Squ+1{P&V~2diGRzfkxgfd``+xm+O3@{E!H6e zLDs1bW31C2LR0^h>egU1AjM>WCpZd%(uXFeyaCO3gWUlgTqKqMi5&A4;|&;!!FU5e zOcO(iEzlap-AS*DQwfKz%ifIAZ?Mi!>hDxY(Dn;@OZ0jwcYQK#wj*&VQi{TF{a@(~swqtX$2yFG5<>a^SYJO-aZyFC|SrFMHCW>40(+xr~* zBCOrsZR|VeX8tjoA4HzPKb~R6aGv5HllfmK@QADFihn%8Ki+Lw7mk> zUIA&ZfU{RX*(+e|6%h7{$L|%7X8)Z%XRmnVUh%lS;!*6sbD4wA%`7G0sew>lL|~!3 zxJ53M7hN=j^5RmvP+naA6v~UM6GC}$sY)m>ZgmLd#Zp=*FHRc?<;7OLP+n}n3gt!N zMJO+lUaq{ur=)nB5sI*1YDPFXG@2b1WM}+}seR7q1KG?zhJ6f;;_pb__bxUz+nEvn zb^tf#&=~%v&vb6EzsR$$p#%9}3;Q--z5md`ecArOVy3Wf(*c78=d4h{*dPDJLK12)O>xn{Q5tduMd{bUcizZR;l$v+x&(D z-R}=(5C4Yd*Qd!}pQHKp4Wr!e4`jdoBlzo^4?V#BeiZxuQ}Fvu^-}zAG+$4aUoV7D z-}F28Yi_vD!{6TAu%Gj8Db+;o4<>kar!#;>h64&UFcwW5wC`bD=W%eF|93nuF&S=eA&cu zQ%=(e6o+hN=jz277S@K#KTjQD`D{K0BAz|2rJt4W`PnRX(qDOa!t&vKghf1jbla{> zepfcLTY2zFmJjA*H{!u#Up2_DGj+1_g36;$w|q2@3lWc&i+8c`?qP8~M_|pa95O0^l(; z0>G?tnMFLG_f_1?Yo#iXODuu#U>yO(ZJx{Q&{C?22tbNG_FBT=b3z1+hO;ugtOq2& z8|}tHL6PoUdXV2f5CP%{1=G7NF?~H6(|FO%iQOJb?@aAbDSD^n(?1dY^y%X132~pD z-&|tlady){vB5_yQ9K=uVw#J>Eyrs?JY)&tPthP|ltHlRf;9=%+2R|PFn%5lV~Pud zCz4uHJY@;t!Dt9aNC@Kia$Wgsv(_lTv_v#5I*`o`AY!L=SvzXYka@up%Q4Yd-1ck2 zFyez_Dg8mmng3Wq`fjwtmTSzD$o8>#!d#bPSCDeNpLt#Bgu4#qAzST|z!lMkJ64A> zm(EwjHOms$=xAIkbhrwvjcSHfGV79}WlEI!j<$sPk7y^a)WPJ};+T(>_NEo>xx^Ca z@@RXW7!I^B*w>fJv-_}|k`-~DYKiluXoJpjac26uGTr<&>H3J$Y6;}AXdqs^l|T~Z zKkA0+IhKh29gV0yXqv?KRH4YprUSIy642~uPC-DtXtHEiCanWhumtqSXbX9XlXpE- zI~QGUiQ>s<6!Tm^c_Ml)MQ!|uEf>X6)EiR8p+x_Cpo zWS2Bsd1y>>k0p>(qk+s+O|pHl4#y`faU2kT=w4w7>$GSV zCn8|+b$0*u><--^TW1OH_-J_Z_3-3@I;}gmS^`@g4Qxpiu!Ikz#4aWw&A zB{w^kP!EfSdbA#DKF3F_zUH*s64kGxhwQ?Ns1hY~8t-0Z3GTPi;Fh7lRr2dQEkQmM z4bodh2IKIqtUe6iVu|ReXr>*dHycBg;HWgd{D38>YxWg5T zi3;8lvFg^%?O(CP^RH-5HHP3}vuKvpol2uphwgDpbYr5ewE=}r#afs2SyjWppIE|f zh=#qz5_Tny{=pLdDbeuNQ7x^RNay?ewJE~OmZ0WEgYs&QUhoTm63AG!F_UHqVO^3P zgVh!1 zZ1%28?ieU8(fYg764@gbhAboFDUXXW%I_&lxF3mz8#;5ALF(aF@_)Z2?5Cn(tGSzR ztP9wcvXP4|!JQOM&h-_^>49_2>is2(2yeCoJu@0~s}<-o2K^7gpBxUWERD^I#q`NNjDj*a%STAzTp1h~4S@`Wz@c+e8+ zH=|9sR-vSVNTAd~twh8}EFm8rZC!Plq(b(UrgXl4(h}XMXmo0@4@2jxp&@wi3rpA^ zi{^p4OrpcC#EIuE;lB_K|F{Y?t~68q+Y;Kr(S$fH8d|B~hM>aO4!c#;(rCb^8w0LH zf|-`Ue-}-H(vG;h5g}#;T~s~F63GXmkp$*S4yZ2aw&d2Xg%?{wx<49{I#yq$a>Iia~r2^BV6*#+U3REJ?kfkCo zMw8`)C`Bqw{nuOK`%W~zGm!Y?{Ey?v-Imb56%D<;3eYRDufCr8ElYs)(EvAL0hWNWN!_jGu=tH7_$Q(%+etUP27IM)_g70L zz8|fGT2j#9D_OquvyQcu+L`I+FK*G1X1`9mCC@LTA*-cs-7$Y{te9Yl>`T$e)Kg44 zWZ?<&TuXRMqDPy$Rt$ybrO3MPbsnE@3H%Guc2$!&9WZ~Itoy#wC|ho+z{AlBsC%0_ zfWG8Y%igt?Ab%DOQjKR3AbogQM9^Hd(NU$%Qi;DtD{-z8ly$&-$bEm*D^ZCy=UOVW zGJ3!+j#j2p(wwzKI4&BYT8Y$}+e0YRX5GKiv1OMf{O68jVV=JqJ-GLO06aZwYNu^jK1B z&st~#Unx}ijHyY0KWz#4$I-Ub+%PKEfVmUC{+g?_v zU`eC~yR$j$68*q!cB`%N(IAg^r$`l~IA2niWbYYHX9@*<`Cy7Aw#CudyloN{oBwaR zwBm3}T#0C0TAR58q(7JMOZA4Wo)=nTn-Go7y8z_3QXx@Z((A{umpcaFK>r1kj?O(2q8c_EP);!4b+=FLQNO|I@q7x!CuR) z8zSdhf}Ii#*4qsT1zR?-4qu-oz8^%-6H)m19ed$%9lnb!@%?@3T>V3qU_KoUra=p)!ioO}EHS+tjcKZj$-Q)-Tcv*862n)bF?iRC1cp-X6?zNe z`<8g>qPgsK^KkL7hHQPj8B8dkpIZX@UbKO{mIN*!-g>J7oIhK_IVjpb3LO3(lL~PD zWeMl+(bnCfZqE3COihmZeE7;c(j< zg`#S(MD>ekD|wwHTvWZe9Xt4;XiZdJWC`VfXajji&s->_xx500)>uN~-G3t*L5^?F zY-caCUge}aKArcaj(ED;<&_7TW9m0#`!kK+8#w&kfA6w`F*r1~H`l)-*aMrl zuy*@U^M=x*GrGgOJBudh4sW;Yh@Q#3`>`Wh81pW~j%X#!8v%=cxj0xyd|z^ zLhkUcw4&X(!+XIxqMyzPu5ddKi?FOF#0 z!W*nOqDu@J0%b=!U=> z7&xK}0q+{%h^znnioPT6+4IZsj=15@FQPl*HaWlB?T8E7{F<~Q?mF|k$&R>S%y0iX z;tDUnV(W-|vi$z4BQBxxJEM-c_{pzjI^u36zwzjZYm5Abp(Cyd^2>XUxPiy-!#Uzo z8^3(!h#O@5MwcV5W%27#j=1B*ZzVb6Y7xH&26#O28BQ7KGYXgor`_IqgJK|71Kj7|&Q|kPHxg$=A^K;#fIGoK-Qaj=}G(WcN zh_lE1EU+UE^zwtXjyN65&#yY-5Gp?i>bR#l`JcpbNPcF~5eE(exAV*hZ6Xq0Y~io^PP7`Y@hROYe(!o^X*|r?D6uQR!3}?^36&|>^SlrLPu=# z@m)DbY_0K4Fh}fU@!cgyY!UJ88b|E8@cj`-Y;y3;2S@B6@QS`8%JRIP?ueo|FIqdI z^2|%bj;QnUqO2n-tGop2h&m>(Iy$0s$g6ygDAn;Ynj>mqyhi1SLKCkBIijS)>n@Hc zp77d-BMKP2{@{or0$=hwV%^Ty+m2W?^Hr`Rma2TM>4*g*U*$Pssm7OAj#wk{m5n2o zCwx)ih?N0P=pB)j^Hkaq`7lpk9g&0b?9mY^AWzyHk$Le1$`M%*Pih>IneZ$_yjQ{D zlfENnZaxc(mnArSVid1MaQGx8UZCahd17#AR56$Kz3O0KOvtMa21CA>@4Sw^qhM$< zTVt}NcQHAT%BNU*KG4Hn$)SB`!ppWVQ}_bI9rfZJ^<@e}qxqsC-_MeiH;cE34d%1^ z#H&Jv#paAM)4+ri*RjN?KDWJ|y_ceUki8qlpB(&@$*hU-h9))e-Vcqr?fm^@;<><@&k9pm zS@RiF5k!^fB?yfY0&vE5Q%g!`q)kPjonao!*Rhg0YoI3HOv<_) z1YRsNR5K?`VY4WIa-;9b!1jAh4JU2?Mj>Jtvy#~x2K&>zXv;d>c4Z2zV;;XTl4a*U zl>Fqrnpt*E!}cMrH{l{)_M0nbobF&V5Ft^xlf8imiNa0a3`9s25vj9j$}z4Z z)6ZWIQJ<>c+OC9yv1ivRX&&Fe&av=^Hl|o0fH~g5?8%n-@+eagH8=Rdtt{~N7t{qx zW6f+mx`DlxTRaa0+T%=ZB**x%rXqr7HW(Umbh*oX0}&F%r%czj97X9ZkzuQ|&~<`w zjuiUF$xM}q^jWt16jh+Pf~~oO@*AJrk6`%SFwW5dHb9z*^iz}oO^hAr-6Oz z+{pgK-yh3g<;%Xm)%|h1`$Kupxm$wZnmGynnY5F|=pRZ$&b}lxxjbycJ8!J|yYlDKZ zTD*UB_*fnOF4H@hBGo9JafPC2eXFU_B&}}}B0^~$UUxJO2$Q|nz}9ci=lbfm?%A4E z=JGGp%6>yr8nW&SXdC&H8wd6bWZ{JVu)RqisBF^E5Nnzj&Gf%lw|*CUt(Q3VqOO>J zRx`8CDw$P0wbA!{FpdA%-nc(B6(J|kADD`e0nc@@Rlxg$l& z&Z$v+8k$xjf;+yvX9E(9X8h!ZXyL^fF(8!SwzOu(pVGkIR$pvX zo(xRC$kc9fzGyTR5j4HQ;F06cowW=^NEFxGL;;p?e26D!xPla70b5E07u@FdZc z?z&TZpRAS5h7N9E=W+SV*g?Sjn7!>jY$`&M{yx|I)h_T(Jd52bst-96`h%KTdr||x z&D2=#7@#rx_f2gkDf_soh?<*SfBg5An%R3y1HVTh&Km=Mzhr79Y3RS1im1JzJM*b5 zf8Vx}f*tni>g2y5^bU<_5SOm_1A(FEvZq=my|YY31PyJFHp$G(oeB&@NEBC_GRB+3 z#j#=X9Bw)lO>XMm#ZG@^y6d%cI7zFFGX|zOWHy=eAapdI~{bWDp zHPy)-!8|b}{j{u+CF>p_KAZ%g#_-JYAcn~@vpm35M9uwF9!<+v`v*_`?rgEAzOC59 zxl7!_HT8I3VUNFg39pO~;susJWNsmPXTx)%9(I zdFH9YK-Rr`t$L=dW}cZ_j&my-*`5clgG&g&8?C0Ml-_7D6%q7?!BR@D#@tNMK!ikb zp=prz()n)~)xnL^`AO?DyE45w-T{5%V75Du z65%d!retw~ZD5EqC9C52g zH;{*Kr8=uzX%Nh=XKx`835gm*zs!`X#`zMiTolE>U}``~@rQ+oP>NT7>tN#A!ECQM zCaN*sFKT5xcCW3=d#;x#{+FSEkQxP)WKjS(iY%yvam}j`=E-gRz)OYMD6f=EF zW_HlIHRA5jOm7RPwD8>1Sa2T?=Kcd12FrZ8PKXHQbQRBZ%y+I~NA!lK1#Qb(jnylb zJw{m8`Rv%>Aw==}hX`&a`}k@?`L#yRA^fPK^WVknL!4H;pNS!yR`h0pZg&>Ay*vwW zP=j5R5U#(13qsXUJ#aU(2)l;IM!q}zUy1^ViUHcK*nFJUgpjemIB#NmC!lS?ydQA~XVo z&uYfub)IY}!#0>s*qReJlSD(@;11X8Yi8lY8kk+Zwl?gkjROG`z|@!7oBEQEp$6AGgh9iC>o{qXTwbC2y`CdPbWJU{i>~huMpurCC8;97k74)Z_?oD=M*-jh zr-TY@0G`vpsvUfkm75%~zjz1$3vLxitwQfjrXpm}yWUiU481NFDfR@RcaQ6}u=I<* zOX;NuQ?{lG1vVz@ckWK*cNBPs0fh=bXU{Ekg>iTc^CS<}^A{+;^jq;uDRGm**>8m% zfj<`{Fo#r|^k7cIfNPCL*BZR*fu|u%41OYDSh4d*rXnOeU0xVaOS1D^vONJiYn2$( zccl1b^@a7Vxs+I&vGicD(8Kx4h|0D`6xtnjUaeAu!x{<#NMo;yqjA7R!3n~4L?Ail zGANd-g;_$xaOMgVN>75Dnj}2i$a^+<&jnNbYXm~8 zAbPf`2pL4Txpu1FesW0QZ@bCgy|{TWAm(OWZGF(0pN%qq_LVFl$W;<8L8pGYRTzR6@@-hah2 zu$cGfpJp}hZ)$R<{TXYR7;*gQC9(XuNyJiyidjYQdoTH}aD~(*B~U2pP`) zY$`$qRhL3mLG>|#B9v^#3-L*%i&%Wqi@y<6iF=EZ)k)c*? z6ZYeT2!lvynvzUfoG2f6XRRx?=M;Nxt(iS1NPCK>0%LBrH|80pBIID&==!7DMa3CQ z5^VbJXOnp8Y=3=kE~n;&g__x(_iAC!F5fF)8zSu4zykxO=93e9pQ(tNdtl1aM1AwF zRPUge|DpBYT{G)XYRHtI8)Er)nVL;n{vDAbUZP_f9k==-gj3(@!iF zR7;Nqod1-m*`(z^ZYm;Zd4u^^PT}rEVjx1IsMQoch1JqC%=f(frrQC2u4ew9%>B;_ zuk690o4&s?b)RIw&xMF#oW#coi+WkNGL}Z4U#o~)MMU5-O_h%* zU(qP9L5`_kH&`g<`gCQ4SJ#XR_3SMSZd(eO!le})U|u`R)VGozou(p!jxq49q=#E7 zG7uqAe8gsf%<6rg8s2(e!&#YL_QHpZm?|?DrQCKFrPpqV^z{fO=3i4K;&DBrihpl6 zC57bGkPs0%Th`(pobaHy2Y16pRyGp%;O^po68GTtC-hdnoBft|17eI@i0b5WL?P;Z zrnZr6cWqGh%L81aC|*BmYBkC0M}&w_ zUe}8E_;b1pBjN@`dcsMX+m>|pW;M&G2Jp9TvZ&-qCJdVdQF0x}wpg~Xr)4C>u zc<2yL#nK}I6YEW_EeG^GAtH1@*OrOf%S_A}F>ydLae9!6t4(bqndsW4mP|Cw+9z%n zEUZtn7awN&17|nSt{EH0^Gk}1{f+Kh<^dnKnc7_PvE5XJOoiRiZ{RlRd3TyK5Ft@~ z)pVBNC|HUjUIIRRDav%=(uBBh%FbceyN*^;@OM;+S6s8GROM<@8b~I+MTiKEY~iVj z!JzaV6XW~8>>VlI8&kwNt%>esWv^*zVBh#-WUG3^PF!gglkSJf#?o&N1IG-_Yfx$7 z@+0YK0t+_x(UD9o?92`%3#^ABdq-Zff3UBM72e+L=_tKL zvg`J8Ti}4>f5PC~2Xun-2JW zT$i=q$1oAJGBnojhwAZ(;3Ul{huD*V*E5W$zzL2)__=>`rk!nv7Ullv8dGl z4pSD$WbsxZ!XWiGsSH)l{SRWDB$-u}h1A!`*7SHTQ~ocLjf8Xv>p7#aA>rW%^S~GA z2#{gmVN>r_J%gX(DxYviMzXkPK<%>rg1saEL^tDT-sL#Y-Y35A%|i#}GusFA*?kTe zSwlx?9jWL7ocen@8l+R7BTELc{Z~SS)%xw)y1M=9`2R|;GWC|}mB;XSj|Q54B8R1| zlli$!L^YCm$bdO|25>dtv_6Xt1L^wdWXZK~J;~#xfzMy7nbf#_lfBzdCtC#@!Aom* zH)<8U2%aeG0)5|1$Aa|zTC(KWeLv0{?K?8T=0O+Qdwq~>53JW`>jyj20{S~oM}hQr zjx0HLf0v^B&di=dVDWaBy~FPy8wBg{km%0UfF8e<4g=}&o5+$!jK?)yZyvYz_+w;) zSbChR0X_aG9R||lkB}wD?(svsnBLFY{U}SZ|JwWeUu1Jw`dcXBnN-&0UZ%r9`up!> z$+7!;n&o%kY2x(EIGvM2DNipes`;X1|nqn{ejAbqUslU$FFzaN9%G>NiaTVPrV1pelew< zs)pxXnPS{e2ZE&Dr-WpKf_>FXzOxk@DAiK`8@YaK@77<_t%Mi=1yNpv(w?~f--9%&Cfg+$jL{#J+NE_UFaAAU~vWYTJs`JTOxze6`HGR<6C*~fbAfaAYK z$A@(MH^`Df-1(XiF?<>4+#o~Tq5wR3Qn%eY_53&4JlMg1Tm&)vN&!CnlMV~XhkuYI z$IgdoK|X*rNTWRwj$ycI!`eXVTfeRIl1(;UNaf@{-zT$)>@M z?qezu!KV=5!KdkvkUaPVS#s<=n5^<3ctYZL_6+z9*(g{B)K_ExR|WX~mvk^l-~Ws( zIdX^C1Is{B(B5IRi9$kq5QXjyA$#g_W7EB;Zj-3T+PLLZc z4h$BP;vAu$2kY&5&_uQkHV{G0?=+Z9R`wiMIm`4tTkr(ED*ZXxX0e5@1@%kxzqp| zrsSof5ODA9bVx||-a?iPqRNdz#PF>&Ci!^)Dp*f2G?q(@?~-kT9n-{1`+3YA!7LEnwc8w zfhnh(fwG)(Qe@L$r<`EU5vCB}!E5P|kUV$|S#k&u45ke^^SGhMKtzl)&v@_s1)53c zW_uFeK=uokguz4Usv3ZL*U^C>skcu^9trc!EX4+iu2eDIlPqK}QmbWOv-j$k>BdCP zG{GuKs7AoSU!Y?`I{0C-WDr{(5F&jsoiykXMSQe`U}tXPOtt z2Eq>Vg@MGQvRZ%>f1(3Ja^m-7$+2@{cEEVzG7mhrb41pf4~H=kwOMHd?+t{j1h_Dl z4hqSIS!Btvb77ilxbDoZY+9Wqw%F5P6WK1v4LF=dySl~D10dulvR zwiA{b!IR)9?Epg_qvJy|hAcUDKFkQ1F1G^~A=y8yZwL^ogq*$?ds(vMW<4 zCi_HVfB*LAr|fC*ak81Pv{+J+7JB6XKR!Z-hvdfx$&zE|$8;S()N}v8uxG?i$%er) z;wS_oG(9k%r2|58;2E;y*f|iWO7vwf%ycIQ^6U->zlyA^E+*}?UR{i5B5IRKR<23} z)dF#0EFBn<69hE?8l?A^ktN6O{Xk8M zy@^e{=Z$xl&E%82bNQXDO@R^^9D6?OAlnJchsrgn5bXd%y6O0k3`vnC$Ig(z2?%b( z%s?*Pqq5>Udsgft+Xl;u$|oRv8UZG}la2|=gtw6;$IgVAYIMyF6tjKoB#gS){IWd} zzCbn&mI%R9c3}zu9z0Bkgyg{kWXZAfAP^C}i&nuyFfZ5>;ZJ1SV2MyUBKR}{O!z$= z6OswfktN5@gg`{#9gEpMMdkt}VK}VUdL=QJiKxv=qH;u#3IQI>qC-ORU^-cH>^ump zAqttmk%vw86gZu16>Kc1yoM0E0Pi=`(ICCQmMnRsc^`C5ywKkJgJi2z$NT!OiFrC2 zr1x`V$+3GsP*)r*WRmHDL1hNG%boytkPU++K;^n(NgWUYZlwc4a^NPiL3&*{XVIU%S3&%i& zMB%>S)j)(qag*sADLIP4F6U3f`;y)n<=3(niYa#0pq_2xvHe|TP|fS3=GXcW!BvZT zP467`ELtM&u~ELJccu_waJQ%WZ*UmBHkIC)>F-ucS*Mci>FFq6)O#}7Oh}gu`CjS}fb~tCO&!gh9g6?o&EQzx#d;UnDA>__ zq}!W{3Z0z7{U9SqX*H~SLaZ<80(}2XIvS+!zfP7MyYFRw*WR{mqgvAW zkG1^B7 zyrt#U&FyLx|6}$9_%PWlSOQeo#qp^F7;qmQ5Rw7+k|oE^fa&E3(AnO!rDH=|`{p1A zeqzsoACV1%<$&)TX)p*V3IP^8O^1YJ!INakv9myC{bx08S-)1v0LBeiCx2s@h}tB7 z6|#O;6X5rQ=va_`KY%Pb#P0?NZRA-U_lSUj2)UEIRBTIx?j%?LJjkSVJ*ocwOmCs- z!fc@<+pV6nX|^ZeTC!`f@du`$Ko>y4Q|V}s6g*i-HaO!`_46S!f@Vl;Xld_Imz6nt z$M(`qi990WyQ$($EFl^J_h#vsknY`1mJA|HT8Ic8+g0bmbYQjCrT`6YVvsCPid;`N z40e3O{6en~V8OfTkdQ2R7g=%$3k)U+InTJE#y~`j^UQ(ka=khA+T{1`$@e(fA6W9u z0LPSE1pwI|qeDQF?NK3lB+Mvdh3<*9t=rTZ#eeNR_%FKokh6&ImB^)8gj3Mf0=V&I zIu4{8|4x<+V#Z&Dh~b+#O8#zZU9YT17G7XIT`XWCYO@{*^*7f7`1=?-4y3;u$dX5j zzt^49v_53I-M>9g*Hrw8!)Gjt?KpFc&GJW_n#(%ID7 zvQ8Q0}LHc|YS@KBn`4+Z!6gWMw+TQ0UlI>wT&OJSV z&zI4WAbq}=EID?ck8xvrd$YPY+hOnUZn8134)?t>T*=+I62RLjIt-+@UrUx8ySFF0 z-eyNcn%i4jwx|V|efBdHH038X^=bs@<4)M7`sa;m<-7>C$h#0H&Y`NIKJ-efG&w#og{7-x0 z{e$cjEb(;9#j+NFc7LVgK+^67A$cU!?b+N>GC*Q2yC<$J3XUpRFA9!eB5JcJ(9IpH zD!`$K(ZL`cI+rXN#F1G-#PC({r};d;uDzwRxxJ-LE%m*MA+p^1-9oktb}0Mal~PU@ z%kG!@01j-TBSLcEbh6~wIWWb?0k5@!5&&Lj&wz``R>3j=o-o#E1N?s>9S_p~gJj9E z``;e}nm4a)UcbI&%SMF(AFyY@`^a{|GN57%koo`)+(k!(2O!hHhb8}~VphSFN z(K;R2pNXhVHVAtLL1lpV|4a7K5YqeqB1?|l`;+_zYg^x}-ZWcc@B9;L=6uaDU%9H; zEOY_BUr0xT^!);|420I3h)z&Uh8NDiDy zmK-|={CU9E_U5haZR?slI@(kk4B69QFWEF$8dS^!6qNuI-be?9WWtqX$+0uRzba(c zwAhYd0tuhZ^sd1{`0*T&ip*Vkm z;?P3}t(O+FnTX+9S^#z62K5X&9HdvLk|l$HGRahg3@9$Q{%-}8F)e+m9T~7=wT)TB zvdrC1HYhflz*7-Y2@p!!=rE9^YZa11L&^N%izO4w`X{z*+q_jht9qHeD=(qj5P91K zZde6X0S?_m2ZMCzF0y10MG8X1@OgfcG?%95-F*y=-zTD!dpyAl5<8A9W8zc^A(A8KlO>06#9$hcGm#sP3`E2@ z6OC@o6$)Sqy2GB1w~}3gr6YVjQ&|T3CD%Q`xe&09L#+XAJmV|H6Jp@E60 z&6)zX-wM$P@SvWK3CV+bWXZAfK+Xf}I@RmA9roVeO11|!4pf*2xE{dgo9Rf9K0kvj zId-2bx3sEftuD8B{-tEYV4V+JuIUv5EVzgc3CV)pWXZ9!;E=M> zS{EzJ$`9K6{{3WgV0{nUtN7Ib9>0eU1nKejk|oFPaT)732X0wCWAE~($o9axyh5z! zdH|n4K}Ul0`FF{ZN085hA^zYCt+TsPOhj$6y9z$%dH|pAM@NG6`G5ZJ`FvtIBr;ni zm#7UGmf5>~G2Ph6<-KO3z^gPRJXL__6Lc_0&mT{g9Q$aWR`&eXwib4B7AAHnd-uPV zY!_^#hli-O`T!2RhK>lyfwReyW9NWe*|Y02TU(oxo15A^{b8j!$`}0q9J0kN6_#z;kI>52NrvpMd z_Bpa-5Kn$3L=4~V!9<_Q*0wgQThWK@v0hBfWg=>`n1ESjP!-_$S#&T+&rc^yj@|PU zeCApgxQMgK-tniCErJc>@Z~=NO@QB<=~$3{UrUx8yWhwAthGU{5ngET_Cc~iux^L1 z^;Q)DUeD8^AibU=OOD;^(|pEaHx}2mbOf97+-2|lJ5;+|dqCZOb^L$M&7i)Rh{c)%J<1X<7%L2HV)G7wZaH|Rpg9u56o5+%5C&Of)%@`M&0^3B7+cV)YvQe-E zfc+StGQj(f(%~Sz{|H%f?B1W`HyC)^_kZo3|1Yvlu+E3q9e^&t_b=1YAbtOLvgFu( zKgDOS(z}x1unuaG{GoGcl{l#d7z!&f?-3N3b)LV({gK$d5Ye@!+Ec1XkGu}&SpfM3u7 zAsO&fvgFtqFj+NO$9lEJ=ZuT3{Xdn7s7*2n*O5>e;QdK-I7si0Crb|TzCl7Da|(BI zF%S`BPI1WARCjl_A2y6{v!`Dx*(=!a15Z5q)d0k6p#wn@Z-bCL67q?uJ_{sT+qP_M z4!kjXkG(^8(d~##DBygeQwKP;PFZh$wwR#PDSlGyEpo+;n!bwRy|N&eN5o z;%(BF@D_H@$=Mv{CcU$nGGe_&cc$s~# z{f*C#4f*04_8UV1|8LkD@c#;X|1Tw51v{dn{4cZt{$E7LgY?# z!#{2B{`1L3!MY!=RiQG#`{&W&Aie);vgFvkKS?#%mNv!t@343N)nuDsoe%dsfiA%J zZ=s_>`u82G1B4W%Y$F*m6um-jHJs_EU#GZa%CA$SnKX_+L(F0KL zOLQbi>U~~F9tpYR48I8y@||G*o%FxhJN0?GDUrnrxK0hx2)Or;bWBM1{*EjeM3&zO z5yMxnn5I}w_nx!*ORZNG^O%U*tSaDHI;}o{19RwzkQ|svmK-|=)L0Ja{kJELa}Ey$qc?fC0DD0U;T13t4jP449&t47~U333~#3 zmuwX*0bspJqYd!?x9ND0{{JRfa_s(B^8)#gttzmv5 zyvCjgXOr!MjR_Ge#*#jO1Ka3`kQ`_yOAg_HK`~L*Bi+)JfruFEk)zu)136HO+-Fa} zcamL#r5|kfT-E_l?rn4wNXorcNFE7w$Vnyj6S~^d!}hLxfNn%&1rqLR09}AfKSM`@ zbm=F_l0g*tm=H01wZ{o%d%5o+_Rk@|XIL!HNIgfk2zC&|n>+zcfZu;b$Aa|x&&iTQ z{B98X(1jfJnglS%;69Y%+NB;8ygc_hpq z6UzE0n$K)fdj)T?_v9wJ36Zl0j3EI{fICm8V?nyJnJgK^khMa@FwPy)TAjf|))zA@ zmUG92WQ&;39RW>%-v{YfkbcjTCCBdfi9T!b*KaF_VBTl%_`Ap^!8#r`dkU%oJbwor z4AS$rk|mEM&$B?^qBf8HzP;xkC!3@io_AFNo_~xE2I=`n$&y1nZ;2}5Tyk>Rcx#*1 zZCcy5MSbsBhQYB+C%ec-!Oku4Ts2e%ct1&pgY^EnWXZ96e`?uaEt{J*HZSRHKD$%N zDzCBk|J%uC!TKMbbI_>+7%)T!gk->8vgFtqFsE#?)}}2Rw=ohVMM1J_|UPnxq02`N!D<(ZR3^}kTcG{!a7r!!9>(%EwC^=Kxotg zjF?IXhGfJfvgFtqacG$lJX@%=jM!jLiFIWAU}HpMI3;v?0ZyDoM~39Y8nWcrIWbe^ z#QNsW=5-)K6zu6RKsF7Q4)Y`EAXNfP=%a%|GQlBBj-3g!R3>a}-qPF-3kLne{Xin)=tl!rYiMk$Ki!kd_owxqzN93@1An$bCG zdby>B*OtR;(s2*tx6{DBCGg+%oZx+e|K`Hy*vAU~rxW;}Ry8 zB=LE&_*}z2H`O_(h`*f5KAlDEw+5XX7?Mo~JJ+)x&IB$;^szp|)HX6kxVEv15&OC3 zt@>ad%edH=>mKaQs8l?aJ+CH%c<2yL#nK}I6Hhj^wq)We*Hobav8GHsm-9w2G0Fc# zX5#tmw>&0J3^MUdQ`<-;y0)n$6HRB8iJJur>(jaZVy3^Svawh*Hcn}9sn{qdHQ4|A z0#n0FQudpQkZFP&0t|d7-S5tI1|lSipPSCOUb6Dw@FpuqNWY4Vr7oGy_4cNUxqPAC z^}I3z-&ZA~aV?{AmwQbqAz5{|5D_}*hUYE@qqK5QtXb=NQu)@*u1s&+y7u)fHC*SJ zSuyXo$>#MYi2GSXE_XWqCfREG>=JlrXsNgC=83J~ilj;+R68(%eVvXEx$61~S+WOC z4&E;c5uq7v)mbsOrH`!+)}>gh{#-w6tQ$&?E7Mzv9P`;q!IB(DGZC}}4wf7zRv<@34FNljq+>*~ z<8ZR%*x50sGjm~aW2QfoPx06h8aTGubEBPX9V|DNSKvkk{QxuC=m?R_XeCRIof$K^ z<-A_Vp|p6tJuNOHn+8jZB@wjHDF--l2^}7i6MM*#LpWiu&X7wLH?=hoA+w!3O(#Wf zsWNR8OFBc#2vsk|%ndA63YlU-TVVYHncRA2a{ZzfDG!^HK`v4r5F$bi8NNs{F0h6b zwSHPF!$lOep0zjPGnI{4i}I?VzbLOhx8HtVQR{E~PvoN3-`Q`e<<)O+IikG!4^!L7 zP~qCfDpWk>nm24r8!U{(R!PO8)^t_}r=_*XVLUV!7PZ8JmPZs=-I~I1&~jrh-pe6A z(Nu&C)~*K(oG5wV1{wnq62)h1*vPixjv3x5<4DbvQS!8|ytTPXl;dhf%^YW#azfH- zqYx1~bA;A0OeT)X<*kExrpbnnQq9Vdt?3OMSx>)hs^vOWa75 z)B$N_mJSG+R&KBC%}M_6$4E8BOMx&3BMyt9_dV|e}i>on8!rWl5s2(Mm1!+7s2d* z4*h{h|IQ>!j@`eg_`liS%V&^HL-F!r=;e*{2O_<^o-8?bFHb1N^WI#ld;S6?m|tY? z+}&i0V4Yh!4O}^xbFCl)igZ*+23$av96JM$D}a0K$?#sXaj<0I@q7vN^X>EpBK>>| zS#pS<4JtIU$m1>}4MfOQMcOp+kSN^BgcXYQHYixB>AS;wkZQTE)Rg7NJJ^w`@&S*! zB#%vO&7rG4y+|HT`mw+@kE%ZX*_5oZ`t%1OBDDGxUa+Ws`DupcmtDed@c z6sOpe;Uv0kwY4iqhBK={28{s#Jyz0HK+vye+tt66BYKoLsk>W8vJ z^?Y6@3T{e3+s&X^*4c_=8zX0&p);z%VNYqm+Y9Khk-Y79-5qwQA$(4&dZ~43B_1TQ zJh4a)ptq>6! zXR1!GMbY#sBnMK(o&rDRJ=oW;aO>L)t!3!>CfR1#(DT}Ab1Ps7K&-FRRY4N#D`d&B z6YJQD#Oh03m}FZus@;cllwo!8q_=Q6U9;-HSu98l*HI(8&=_K+pVPMw7nC#+(oP)rv1 zdpweb>_uunkPq9l=svQ&uq=9Y73Z#?5dfj?rK^D?)ZJvsu@fq!u<6!B5=C~&N4GNj zkv*B7Cff>2rm7S+H3k4gdXlaJl1SepOOBmL$5)O_Id-y>g`~V#?JLvUm^WJ|)dw*V zwMnYasb*kOZ2;(W09^|to$APvL+E5spd* zH-bCEyT}&x2BEyCP#_x$>6D>TzijnP6C+7^GuWpUh+G47T*%1PSJ|(_SIIt9>aW@J z^l$p!X7A^l>Gss_h=9R2v_?Ch>HVzH6L|gxI#Q(PuOmwabJjjn5puS0`DZm-I08i| zQ>!0f}KL_ z}#ncaQeS%=JbD(C4)Hh50^Jpyw+U#X5F!n9nl;4 zi|o15STnAiZon12%78h?(Lp1_#j#|`u`}l=J#zwE)Bfq?JbT)_nrtWRbkb}{n}EK6 zGiT8eBRSJamK-~08X#x-ccpr>-N`g-Mwm($GkNt!?_2CC^Cq&Hu$0jsk<};2UX3sd z)dh^XiVhgbm@CMVV`t1<`n~`aqlo^<#gFL_k*xS3S@H;E1vq9g`7PEfo(W7uZB{%6 ztk9pPID`%n$%@fr$+5HIa1bl>2D6O*;MFyBh)7nvoh&(aR`~XRG)F`HikK zohvYFEvm?NABQfi#vmn>}-2_ZX^2z8_D#o*ZidzRWU%ub~-d98QX+pgF{PIzo$7% zu|ZB+42BUffH^h~&lHWXU1C zFql;2yyONX0};V_$v}ie;hyC*5Ft@)GCj1xQLq!bqlfo|?h4%r-GcXGrn;m!*u!4U zRPn&>KgmN-KYqCCQ3rPaVair{VE3;=#7LO?X6oJ#6+FCq=#X`Qo6SU2BLfEx8rq

    zrR#uX(hFqCu`}t&%1i=B{f@obdYU_miKxxu>s3|dkp2|l5p?uO_8dl*Jkr?%js$kv zv*%T0D`6v0b=jjoEx3h_9?70fWXZ9!Ct?;WrgjwA`=&Cz-AbZ;g*}H}N46D~L)D$d zd=>z+*u``mkW9LeEID>2Ma*L0(AbCUIrIUtm9QMDZXD8|Cwm_qJ(4|lktN5@o`scj zpuh1=H8$*{aROj7Sr<*LxEkJd!%s zyM7-5d%ed;5W?F>fJK8x?aA>7-M-q*UJ&$$&aE~%6f=Mr^HsVcNTPg+EE&X@&kGTu zF{bMKy~jl{%D0o?U-`Yva9T#2zmu(njW+s~pGCAu_^bf<^cT7wNIpGJmK-~uj*8+F z*ikv=?bb|cU?Qrq=7XV0|0Wb0Ch2!o>ggIFIW&(fdE|2_xUX{U{&oA+@&7p;_GH>h zHW)T6Ri8}yO_t4c4Ul9ygDiRElL-{ZFSqB=rDQwB$02=z{35yrNDl2LOOBmGkx7!6 z5Mb8*L3<{>pKL8Gld7L2`K;i%Oum=*9=aY#KE0PLId(oJqLQS*W`jTRe#V|tPmwK# zw@Ifcgd1Ncx6yumL+Pp_Fy0)Shg|{AyK#$R09zb#Tlk+8Lv>j ze0Z-xofuvyFAVnerSjQ}qU+>Gzk|B8(GN7PdsLnLNcJq+8pxxotdk!uM2v(wxqAoL zZ)aVZd?VSsp31UJzMgC~q=$y|ZGy!VsSrr1l6UA-1~IRR4jLKrP9aMMG4CWHBD8>2 z{UZ5cd@|J;PE#WK1!q+(@^swmuGm{gD3Pfk7y7iQ%^ah%N7-Yk}m*wPeX4wp=4bgvOSt7snSN$W%<_ zcVvpXS3G}{p|uP)UnkoP8*I+6Zm+HAGMgl*wPRXVc%v zX2P5f_2lxUlq@-R z0v#O@fd=xK?OFB8c)LA?+Q^2&QmDf2ib?vM@bm}MSSwuvB#Bzcl4B>)!Uz(%mfxc} z>U)_zmo6dO3(KVnCsK^Kq?!RxY7bozB&BwdCC5&wsLTlL*WG8&qz=l!(UW9jVQEzD5`fPJAR2v-t_6}z-yutmolIiu zw?k8w^=c`_Y_T_^Vbej^SZCV@FcG!Mw)O2$1SgE9H@^`8o$BanAnEk)|9f<5jL4S) z+nxRr)wr{4dE7RT0+FTau2U6*ssU2#&{MV6(qJEy| z%0=z#UTn%oxvzVn5Mi*dYqD9#p2c+P80_lHbr1Gt)Q(O!*UE51hcp!ABSE;h!QP11 zRW_n?)bzT#1y}65bl-gEDrSQ7_BmIwA3c{i_pl#M1N+vwk^PB(f3y4jt?rN8-5+nn~mB1>YNq)Ps{k9Ry8B=LE&_*}z2H`O_( zh`*f5KAq+4w+5XXn9xlJJJ)mB6S*Amluwx2M#c%(Hdb+BpKIPKzL%H@tQ(rRS+KA^ zo$D`V`U5ZEdYt_e+6E1B7!S>AaM|A&3@7^lH6JrIzZ~C>nu?HN+BLs{2PFyIC}SW( zq8Kz)#G5Q08{Wy{h@f{9<$0st^}lkfbL_jSLpQEv)U0tZdlqf&;1N@@YLpNWI%|aP z!kSDPmER#grnxj7EB0JSwx_3~JpQwQY$kmK04^Ci+S?H;Gom2Lk&ya;aBvJA5i+rD zsO-=Ap$@J3w)*6<{)w)^Y;X7c1&UwKwD)TV-HO_U4)p8sD8IUT!C=3YjtlAC&1A_Q z^nY8qAh7VAJ#V><(5&>CJ$R?<*NB+AIx*`Q>EeV2Al~936uCfnk3s9U+n! z7m+2$PK;TS7~Q!{p}&~yOBK^SfiUqAdtQ8yY#S^umf(2dR}V&u_tW7aNpTNZa_pp- zB1xeQ6VKYy;Tf`3uyiQB_$gCLWVG2pqO2H*4^PpdA*t{LS#s=DnC_!OKG!FvjX-c1 zyU%*kIGBl`rO;S5oPY}s+e^B^$S{hI4M~Un$dY5H!(oyR{3IrO-9cZbJGm>9F6Q!u z0549o=fyIzg|NI>iQ@%S5)x!F9VC(<39{ta2{JOoR`h7J!&icgXy$4-iwGBOMd z7JArQNs>K-T>(z~-kuZBkxhf;#9~~4@M#Ar@hdtyBqe@MmK-}J=1NNB*=rE9d6ryu zu}$Gjf4921IqO>MHOF)&qBd)e(u+qkl~k!NBFrO8j-3c|WZvKzOn)Sz!=4da$=1OJh7}}6NCg2kHq#*@sc{Bba_rQY z=%Yq1o$68|#O3yUxRh)XEFX{)#V(;0Ai+g+Tu2h^CQFW;1ipnP-@;lVHhcm}!w2oT z@P4vouv|bcG^KJdbGU~N4oQgjk|mEcLXIVr|GU|B$k?dKteBR@wJl=n}5D|L3Km0g&_0RW@-oVVtFUBfy zYa`j7o{sW(|9Y~SkS-Z&fJttN8;PU=-`lyxRxwAc1BDqGopN|H9&`N+SB3dWV>MLps8{}I+QhoT=)td z8IlWMBukE+3-iicfG1f4qn`#(#;oY+z%#&S|A1L^7j=EID>&Oe`})bNK2qrjKQQc?sDhSUSwdEH(5; zulCSEAsMiXEID=tOqUFBk8i`1SNGZT;9jy}usqOQ41{5!(z&a<>CljDxRWe7b~eb` zgYG!R)AmGol57(!5m2>5zZqU20J03R*{NoAR@e)4i3qOv&fP|_+YS|D0d{?O%DSRa$oc$ zQ6LGej8}iJs~niz{=v$Q*Y);%d^g!KSUzGB6i+8W#COqAA&K}7A=zLTv+Da^Q%f_B zYlH;oWAr6^?|z%)11^4u4h`wz&yppBSo3KiB6O5joeOgVTbiA(9!>$dY4cMmb~kEVr8-@67F1GK4eiNwJY^7;L=2 zWUQ)cfDh~G;E;T1B1?{)59K{`&uFRMfu58?hu!vcD3a}hrGw@gA*g03ngKRkK*xq; zLqAz^>};47$SL}={mFE0uwOki_g;HO+)lO)mJv%4n;sq`q;`N6x6tt+S#cv-a_p=K zt~v^tOt%suzH3j2Zfj-3^U1>%I*RZOOOcjWTfVo#qkeVlF2jcsHLVdKRrd_ED>5iq2kjuOd` zHnQZ{84`>e>8{-FWM3xLuW;iH_S|?q*)~{i5aNc^4zS`fIzA*TE+I>fofX0QL}nnD z?orc=kJ(e=!(_u?DM6@Dc&Y(D+(!q8q zPtzZWbn%m9$+5c_HxZ1x$vS}?!$j03f#hyp4BdPX{eeg~A3&BIyPMJbRjcehy@G5W z%79)1J-w9vK%}P^ktN6OX~Z19-QLG(vSBDbUJ8ADKK+46AD>5-9J`N$L7Uf7;i~^# z_HKR$*)|k6FN1Ern*Knfo8Ll~JR;o;Hv~R!@8*ZdwxPIrIdt=9=?_G@`O{>{vAa1~ z;Rol6{%G&v-;vEi@$d@h;os07i1hF;$&yE$hru4s9QMLs%L468CZcxv^@-5K)94RG zdU!Hfa_k#$eAS&QwN3Lf_D=1h8&P|62#hmb(>&nRu%>xQ zIx3`V&m~I+bI>_LL}-AlItON!IpFUr7ifHR4FhFa3V1u&G}!U2*OOBlp)5?q}x0Vag;dAzMc#v!tEFCmW^B^6{nn5nyPe+F2!l%fRW9P!WG8bS+ zxd18tU{8wQk`06J47m8CbZAHye~2s@#F`HX5uu~J>Rgx`;DXXq&OZbFk^!^a1N#}-JlGMB zsc(CnP!t5*_%R(Kk{drHOOBlzEMujSWcE4J0Hq>=AO~u#kZaI zbm$@51xp7_(>%Uh;m7C7N2Co1Xms4!qr#o3Gqd;S+Im4tUB~f^FBw1hUCJ7WXZ8} zVMZWAu(1W2=Dlc7hd+}ogQbI}Xy^f# zOhj!~8pJsxq-ox4IzA*TW{@S1I9AA}Vg5{_)t(hCWZPgP1%VY(I}j^2(D5Nzv5qV` zc2)#epPH6vd+aH(i)$h z@hv(+Bs0E2mK-}XqAOQ*cUtG1|0df7%ZZS7ivOfP5b5H7kR`|N;^5Lkrdj@pq0!#W z$1xGLSz3g&Q#_XbK%|?GB1?|l&FG!XSKE8~EV6kh16tEgv6KElq^Dm+mK?jM5&8d{ z?0tL{*)S9zYuYJZL4P39$FCzxj@`$>psjDG_z8PAf0S$+ikmg<6hB0NAkxhrAWI&R zZiej?e`fFIACqlEakHkK;t%N$M7sG0WXZ9+Ik@)&PMl46uXU1r2oq7e>`T*5aWwsb zNDm)KmK?i>u`BG8>>a(5Y#qu_)^t@|PJbZM(M!mZV|R3LD1&X>9(xaG$Y!BO_Ej=`?JT=!saMtwou8*62_p+g!9@{!)Sl=sZ9v^V1A zm5t~eHNAX=@+!Bt>y>V&*L&Cxr-6OzuosZk@fNVGK`-z9%5JFhAMA)8|G{cG{0Dmq z|G}Eh);WUs3I3ZudVaq;X9fS$3;a(j*`GFza#pb)Tb$MGbFXuf_&iyBu3?{>>YP)= zUruG8&Wr4~1|9YW-MUQ&JJ)mB4|6%5+`qxBth zUuN29Tk8rUPTVY5Sf9@I7c>1um5mRuXVPx6A&2qM^ahvxjY=$molrhwYI`}jKWQpL z258sz2JVv#a6^oN2#Mmgriyse#FN82P0UkVn@FY8gZWf?kFLw|U#i42u3^-4@w}-O zC8Pc*L=4k(QTgWi=qAss%Je(^ZtA%8CIs1Kc?uIzjl31OWT@VIE3%hAl!=ijs{&@H ziF7c?ly;nuY~aeOUoW0gQa_Q-^$iRbGlA}ir`r4UWV#u(H_f3>OP$X`eOgiqM)*~9 zP)OgdAWH_zm8C+&@ZB+=QzilI8t6ZQ)5~ztCT1|evt;Y&=XOYjB~b%B0hI$oemfl= zk``&QIz5sHM8(`0Q@d9s;MVyAn0jAgh?F`=plsBtMBAd(svktK&v!(izlS1)e%Y9J!G zdNB|oQMh$D0}&F%?@X(KUQP9f!&_6Gt=3e#dNYH%dg`~yLrgzDxOP$X)Nh&+Qr1(y zE<_j<;i|vH9ksT#d7HAZeV%MfZ@|e~>L1A_Lb_vURv=t)LL`I=ASC^c4gwjHeq-vs zs;^)saMeqt#z6ga&ikyB)R{~~HIh^?tUyh??8lNaux>hy4hHGZ$z;i3ikTop4Bygq zhHyMAEBb4u8yP0cRmys@Wv~PJxUhkYsg*X-VIiq-3R!Xp6$~b6InTQR#z2Ie=YQ$O zsIcAh>Q5wNIU~KYqMwDA+q3XevQw}uJS>cbo+4mUxrh!0$-Lb{vO!Kz^+{!-^dzi} zzTe)R_t0&qt&PH2rJ=GrU2T9*-%H1X^y%$n$sn5CB18<|#4^q2d|4s#59p^DBFkyz z39?g4d{ft%=@ zCCtC>VjiDKVY=zMw!4>cz$g|2j=@5|NsK?ZIRZlv{GtEnD z|3D$*Mtdi|hi*Y_$_a+lP;dp|IkBV)bmp~mC`e~sLze6@O~%u=3lX7#uj*c(&b?l_ zit%*@$uiyi3fVB&AskFMOWubnfkFL6Iw&L$K1Y@u!UKb;Sv z^T!xQM{nitU-9hserpQ;hwKw91rOEFBAyz6cCXNZAZhoK>#Y%Rz-w;VjVuiJr&H{n z2m61rn7J@;-Q#$B$IfRWs25o z*pRGvk}Nrd6$VQOx%zOEQ3Dad)rWxyiNY<78HkW5Hjwjm&zxR`^VH$3aL!aKoZA=c z3Y^D%fSPaV2L{(Is=#?HdloG}_v|MNoJR=}Bci~$|Axg%lxihg($h}XH(SUCLONq; zS|D@XzBs|)djMp0a|0a!G8C;dbzId~ALBMGE>#2r#m!yz9xTues4Z@S;WQMiEeH>m z6oH-`paVgAvX3m;qnQk(ju0_?3(jfG<**FsFDu>25LqreZzJ0UJ9vZZ4%hWiAuyb8 zrb9xK;0Chf5E2+n$Z}41gNlI&NyXEIBB4~QeqD3)hQ;nuL76;$#9&zR?`g72u>6~& zn>;)v0Oy{h!$5NGd#Z|`z_@=k9T1WLXOShxP5_ofYHECb3S4bZfwz$D zf~9~qiPR_rNbn{)BqRy0B1?{)1TqQ?Tn2Pk~R9t%9XMr6?fP0R;F2 z9T1WLA0yHD!u_wVV$(F&AAh>-Y7L#5aP*nm%_!%7(k_bO0OAaA| z!CFu*C*1{xfr#L8(m;en;g&cJL`W1zm}b>pq58<-EmY4{3)SvUimq6_$`>L7PRtWM!)ABpcIHP}ZwoMYa*rAE4Ulaw6fW z0V2~DIuK-J+Em$x;U}uAzV4jlDqkx325Q%@v-jr3bR%k)o?vth1rra&nOb975sAW`wyaPrut71{<;)-61mrL^0U5|=(%C{b*RRV# z{?1gRjWGT2;3`JtAb&A6qs&2`7a~G)kns7d`a2(EwwCOw*A!O)cwRn!f`H$y$52o=Uf)HX#8+Z76sn zRpZu@S}-j+nGOr--c@ADU=~^-L=0bAGFS2dPT>B`B*%c!;wBj8y=3!Xhk3B`nvM@p zJuvXIbbv@^Y$r<&VTQr9E;9o+{1}Lk`N=q;NGLz6KkG~^6V%(W_LK5`42>lz?;?8! zOUhuSPD4shB|yYG=%A29yw&yJ2-t+58E|ZQ``Yi|$L$^b7~Pi0St!^YHq^mo)qtZP zrGrB{`Vq2Z5OKaLM1+p@s^=urf{Xwg^#5guEXVu5$acYw_r|~`Z8#nD+x0Kgks-P8 zce3QzxiCA(1-Z@bj}Hq!Y)yy-Ohj!KAHhb!;e?RNfe3L79UhVu4P?o&vqEO8nw@Vy zFV3;&#hGODU;_mrTh*usn9)H8h-AiAvgFvA0pf++5cl)qjrP2_l589-FYxg~DhF6` zIUOF76_=7F$Igm*!C6GzA@?)m2-!ebW~@M`7OH}P9Ur7aM6%=kWXU6s9T#Qt zxny^Cmna@9Mb4kvv*TH^fvV3ARYAaxXXp@-?0AYSIfNYs#S2;ga2LM@B7*e~0}&F1 zThccWAyNF%bYp>|VEZ$#3~%T8zyT4qjgac?)osok{}F0BuOA~^zo^Zb`RrM=yx*gw z+?+XDh%hMUSHDblP`fay60|mxt?6kfcV^BY8wu$Ua6-f-MZ!}9gr<#jAjr_P-qeXz zuYXK(l`rjF1U6)L+k3M}H=?!_28I_nA)D7L+WH90E6e5PN{58vS zKisJB=c(^ys4Pohx07vy9n`@SA}S4_VqloxLWhPV#EoRhA%rlPxaHjM1{(tra_(;u ziiFa#`cum|mzSFDmuDFiOD;Y`b_F`#vZLoBxn1E^&1B7@p9U77lZy-yKoe*ktked#E zIy_)chtH5LgQWu|I!Ltu89qq|h9tws$dY3x!yIL*Q1==9gm})L5WgZ@2TO?HksV#y zpsEH)@pC#jBq@GEmOR2pp>8kuNiqFn)+>rBOhj!~6c|#dssU0=q=Q3}VjNj=2q_GT z4zh0Hu3im91nU+CA|wj8-fkd5qBzoYnda@BJUhHQCv()BE&1Hwj*M>OL-xwj;AU~*jgqiMhW}6a-P!2ZF4Mq9BMU2*LvuML`fj z5JgcQyjx4pty`z6`uy*$>O1;S)#U28F{2{*~i>GW(Ty!)n%w}{#Q zr@)r2_rDSel07U&HAuwd(3ya9%M7;w4xeE)dbT z;Dm;v0T2<-2orz8+s0(#kFaIyOehh;Rj%1`hK3@qMVj_)yG3Z& z1aBCVhK*p$2{dR7D&@G;AE0QMh>lA&OvqOF)2JFIWGgJ;pq(Be$0Hl`mVtH_Ed6YX8hac9r{1Gim|g6`)Ehk=A$G~*T}>E z6y7){6HmaF6PVCQ;j#+wLym?CSp|I5b0m?>>~qX|0h+x~RpBNZ9tH8o3YOrlVp7l#TeeQY zCTc8@6U*U1|6k@Pd=Zw0i$ZiGd3->Sj*+PF1-xlY9xj3{Tj!x&iN;JWhl%)!IT1gG z#o-dsp%RU8jWF>eym3q>egIpx&cx68hy|XDkPN>ciF8+!) zkIBVfV9VCI*eJrq$l}G-m)=X zgt`Sk93hT22jWOro@^t8>Kx(XFuZw8E)Ib$Cvc%L0U_rw{9&wyiRc`Lh6&jUe-d89 zglt7ocS&H%2#(y-pVu!qvvc z-!U#fHxwqaC_icMM_)S7?tSVKd8pUN8^z>cJ=k&r2O6naW_LfdXqb@M{ibvpv(F!E z3mjwCNRBi|@G!VfxLIV2_$-pNHgX8w5GHo-_bhAF0h#BL&BwY?gyCAb)N*R#|B5YV zd8?_E2P@1wb}6nWGqXhJM1$B8%zRPDNQ7zPO=EWTFl?Dbm?6(Z_cF~pB@<+oC|BbhX+4EPxmaX^vhO+170z$aL_=S1*{~VTu+x^kKIcgM; z4w0w-r+AZ?3_Ji^w$6ZCX9j_@KGGT_&-<}E(Hm7W{gXOgMZs)G#4i;ZK5Sn2@blr8|5J=Cc0M-MzsZ1#?+qsY6Gtb@gOVMDxtMLCakpl3p(e$^R=T(Fk#X`MwQy@7CQ zEE>p5xzTlJHACM?f<>RXjFog52WC&{>6v%Ns+Fte4xA-KIBC_unc}1W^nq)|$G|M{ zuLEBczq$W@h5zqY`X5*MA7A!AuJJ!E5g!8{`33hc&%R{!o`Id+-!684+g1FwaKgZD z;^T;c-Nnyy2lnuO?&FNybzk@#aR67QEJZX6}?7F}&5iM}>@lBhAN_k!Z&!#xUThykt`w?_u-kLE_> zMzeerw-2W^I(z%DuJjVihjdNIQo#=b8oeh0@UxwU3E7JMbR7u_mK(ZTuuKd0Y@t^a zEWP!b6I;2gds{X^&-JiV<+8T;F2l;@9iEACQMqiJmvWsdm$~LL&PkUsk9^@h0$$}( z`9iyL8FGJvE0>!1E46ZYziY>4Wsl`n5n<&sOjI7NJC7S#)RkVmJ* z<%_YXLKDYHx_uxM$A@)I$dK*#fkrn<68vDJVM4ZI4P8fq#PMWz6USDuiKEc#G+MFQ z;|m!<=epS`dt9U|rNrt2&qOz~N77j1J9!D$VXX0Oa}ob1UBo7g%Tl zc|o@$3^F#d-7SY7p??D0u#m`LTWR7BQD~_Db){xru$LQNgEo6b@Zq&<8vl&6*3eg}eQIqHUGFTSw^F4NADIJBddz6Pu@a8djSOr_Q&cnNW9vV(O z4G);pa33rRmxi%ZjU8whbB?m`L%eZJ7QPQ#w$8%F9t(80ZFqanKg@yn8>|c$h+TM@ zf_fN8|4(;~(wpRa6>lSxisDjq7r!>5fZvDU~y67kehg!*s_aw*vC_fhyVUyRe|aqbMgm?tpb-_Q`0+ zK~X@8H}?@ZN5a^xc=MQH?B;0iUNoU+wI26>?Y(OLgi{x%Lbj3JTqw2NjWJbG(})pJ zZ?jlw)Q82cX79fg2A(%(;8|Sc*f|pNT#g>uDVb3Q(mf}DJcGBL3CPp1Ws>K9<(cT- zEXuSHK;^+wvsqnS6$Mbhj)KjUJB#$4- z!O~x?RGeC|RBkDd>}L+iKCm#{{IZt@Bq2Wu9DCv|Wx}x=Y}q;-TT(a@Gf>@}l0jG@ zE+y~Rr$lj>;8Mk#%*16eY}q<4-V~i*!xe&OtSQFcN-(+H9Ft37Ww@B^t&fT4D8b`m zys1n)E`%*x$7737G^y6At!in|o0(~pYLVka_nSjys}kQFjR{uiy=4qVf`K**Yqlg`&z}X@xt}TW<^% zoniHG)2zFUM>;cviF`&n@6!k=5nl-;)9}_ZA(;wWwhqZwAxMTw%Zp+SUgRG!t>O&z zI+aSb)~C{PlsPSj!zyv3%Ap#xBsop6ITUX;6Ptrz%hs`(9KwdIAFVWJGy-AAJ=Q9LDpyajjTC=-x>!p86 z8<{|S5VmX`h^e7O;|7i5(t5enODEROGiT!*SRF1K`)TBwsIvrD6icp7gh6OLcOmJ{I6*qbW1xB7eJG)%}%wm0hTqLQuf_hA~f;zE;Fh)uTJ zc6XEQ-1tqlm1?t99ZbBE;@#gv$B6OIjq7Zu?X}yB@4^O?0iSYv?R?Kf;`Z9)eV01N ziM><9Nmo)FnU`=KuB153T*O1tMa<($3h!C)uB2G~ruLN-6W!n7D=F3zf2CeY@rN6Q z9q**mVqI-y-0-zAiW~3u)KR&1l|h}#O0Om^>XGFi|mnG|Hl$DP`^Gb0{dw>zbk+jOOsnBC%; zNK7kg=|!G*7IK zx0TuHZ^JkRLdwAXrq4}=**rY}Y!;#;eD^~Hk@uP-vH+Jo_5=@&2T3b{9T5pTOgY&B zZ!nXS?O@B+IoTx4$=IzB5lVW^DJjCza05xwtZZjW#@wZhoQOA<$;k1rW$TP=5n_a1 z6cN4(wlh+=4fmNy<&IlerxCSN2}p&$-2SC^LDeg4YK%OZ0C zj>7ef9chtAGx4s3*ld>sK-hD_!r^$^nJgR%TMim06V5@NiNxu-%%^U)qR@<8xe<3^ z!pBAXuxWV`JXXRgaf8RPNLiiC4iSJLbQ`9UTsXR5AzYWLPV15IQlFw3Q?S z!RZ9t5hhN@!IrJ#M5~@!ksg&j-yEOwU~RbgWK;FD-6pu4gEyRs%h|AH>$rs0D}u3< zxXs(W)I&WjdxtqMx5DCZc{x0ja5LsN0p@1BK7KRH8 zv=W*)WfOmM!!vlRnV>ukTec2LXyrVJEaD#BVfQNCQd7O|a>_l%1F8*#iF^iBM`aRR z!mg9}G8u0?6PtBm%hs`(M&gTdWIbF1?`O`mEen#HhX>(J0@h8)?y+#HunVPUwqWK+$= zAL73lZ#5H?3t`LFL7{1>RdtHXoN8Zxt65YQpYAsY=3ZDJE-=}oCB=6VVeY|O&jjag z*s^tSXj%%LYz|j5ubX4@8Y~YNn{3ij$a4bCD|p+P(7Xg&PJl*ZOP$=6=WpB5Fd?^U zOw(N-k*)Bzj2X4!E#0k_ZY#vzz%9GGH*ik;-azqk7pKuG%@{6~my{xxVZZN(=y){# zF>*cav<+}?@m<)!HGorY1Kh(ik+=;oc|(}a(Yw?G-KXRwT!#bQCz*@*;dBx6IMD4q z2;PD2|GB??p!*j0H~2vJcf?<*2f8nG?RW>em+5LFgNCn-QPB91FK>oNz&sEqA6~DF z3_3H)^_u(ICUwsGBJrKr&N1d=EZ!^bzf^wv)YwAzTU?;q7xH2MtgZ=}M*P0e=uSz5 zA96HI$X4vC>qwABo?An_F>F|*lzC^YTDfYj`tq>E?Tp$XZ@bj4F0|8$&xJA^_-RHM zx(;{BCJ*R}DgnFCGtnJo(~ogZJi6|l;Vvm^{smSu$d__2`JZ8t;^PA8kkLZIoL@jk zo03A?F;WD-fH#d<1V5MFt;t0~<{N0G>lCc{~#+a9siy^#~OfCjs%htKrtjz^I zpd6l5`)_kNu7Jhi!m%$12X!^*26-0yGQ6=&MlOLZj~_;wORB@gCC-XwQM`a=uwGK{ zc>k$6BM-phupEwr8Sy(=t<4n0o8Y_;)0I zSG3D;YUU1D9c~OsI&2*&kK*A`TqdyGiZ_}G%gwOm@dk^N1j~!&usjc|(-l}0mkBJ- z;*Dm)@(gU*IxMr*$kNv+RjOk7wpi|W%1egp)mlruA67|Fo8D&}W2OibSV_ml=4g`y zmEb%9Xal_YOn@fCmaPM{sR~eVTwUBgq(F0^IW+sh+Hj#sx@3=)m_iN{Q1-!_%migm z*s^s{X2yaN+yg@E;D$Ldbyy@WF-dzc5n>e22|9y#+nMN8VawLhX|FH@hu4Bfu30@z zeJR(K=Ez(Qi^E0cAd}1#_L!h@Dc)u#Di_0+t)ntsjWYBGjPPvogXX~84@<-aCg~_O zE5=a22{!lQEoWkL4{Uk-VbgLNLr$eyYB}`nkZ+h{^Exb1m#~TYO|W?lZ#fg2S76K5 zvDre6Hr{Ow#ag{FRCI>b9k5&f*m%@5OPI)K)Rgo_Vpgb$I8A_=fj658%rw}tbztVG zz$D$P6HZc#%*iu^K{*|m|OqFi~RcTe45&dT+$NL*Ho2HA0*lels%-gYKB zSHqUAqZ1i9xdH~m&X`N6o-_yNaabZQI7TBU>NmmWQM~0$Y#xR!TgN7{G^yN@5-wvV z-fvt0PY@>ZDS(ZZCKZguWuext2C^|#EPNgDNnu@Iz!|J5o zPUhU~h<5>VKZH^Fo8&z~sDQVhiO{yNW$W=KQvQ-VVoK(`oD8eN%}hq+Z~WCTC*X}` z!f_mI**YB4)UlBpOp2kKF2ecfd~;6Dg9YMpve0B$9rc>TlXLKPGm$wPwrm}lO;lt? znohA?D)*~N=nivOZiS`c!g8PqEYe?s$<26+nV8%NTegl#WSc`mP|H_cc>o<@#y>f(mz@qJyjy%1HWUrOl!p?w_e>-nN=V+Su6=RFq(vjW z{;e45+SJi`3D@DSpd-yiJS<(rJnjne9s=*KpuL}M-xajK`x|^$&;jDF)VqRaxOTj| zf~vaO$bjK%V-zqB@#XF6T|u7`--+#EXFkTGGt=)15^;r|^gc_sALN66hOP;jKKy>r z=t@b0A8s^E$X3kPb;NCjNFTGid)?gZ#Pm^cQ%KDHK;O#5S2>5(Z3y3YUz6>kKJ!pTe8N zEOMVn@5bapAoJT_))St$FUpBr?Xk{J(5Os0bS+^5tC_eRI=^#=w%wu~yC&W&X2-4$ zTMjgnA@^;cjSLfT`h&coOF(rTo`s>z@T_WNGRfMW0G(pY}q;q8@MEd zZ_A1#hzrbF_$;hSmMnyQqgi4UZyS?^b79NYS@5F5@YwxW5fZ*XG8_* z8Rg(Myk$%dZh;%lU~gmga^{?>24Dy zR^kn3GI1JgIcS_rC(Aq&i4&ZePmFCU;c;r^dc|oJo2^E*qV5v;mS`2WazUcR4X`%c zD6w~XtwV8%I7$Gy9&aiWkZWPf)&bc_0upSRkKTasYjZfBgmvM{WS?uyd|hiz}w42Wi{BcbyVEZbcY)* zb}>g}Cs-IRB1v~dCKe%-EHui%B;)V=(XdCA(i5vUi?Pa2}Cv4d|DjSF5hPYRv++V8IoI&*zLc^Sq zI;;$rkv-80)n#PNO#;Ut-cTkSRoJq1I6`9>dih2;id<<<$mOs+TteV64E2>@aw*l6=4HI(R_;B3? zB-sjouZmGC3MQ=(+mQC`?lz?9$~h`;YIZ@(Sss4~_kf?Fqrmtl#r3h%&ZGB<@4|+Q z0hV&-(cYek#GOaU`%`qzP+hQ=@M#@!2zR(tULuZIs9~y{mvW=)&T59flf;cv%w;?& zUB*0);d&2&cMSL6Ypl^Tu=A9jo`H8v5Wm64a3_ktQjg*O+O_B%!#zz`8yPTsZHxlO zhkbc7JO$*TIQj5;Wn|EqQLfio;+-!lj$aVpiEUa$@Z&RUd%!c%%~XQ-A6abDrrv7@qmfHoB_&GyQ2rx?QX$@ZGRj(xx1TvXGm=h1@)$PrZSu2YwJ4P9L&GED zMLO&RKr>&(Hp1{XH=garlT6m@Pc6EGApXioYP?hKQXD`Cq4!ZJx*?wLr8EScjp zJszjU^~SPNqY@$MG0`}z%pf7=5m+K_h&dq-k^&tlL_fp*U_$gDY}q#a2o@fr#@vux> zph~#_rD#ELIu`eaiPIw3vUQxcipNR0>nOaf=3H}{J_)PDr74#hT#j@M2l;TbvJW)MJ!kdJ9 z#KdYMY}qhv6M)iK zEt3mw{*1eZ2|1VA(4F~^t?*ZXj9RhCq!nT_$*k@!`yFAp?3Z?B+Bxu39RCQql5|@B zJ6o4xx%~GD&qU(#U-F_)_UnI}$0p*KThy+HB@P~5xe9nKtQ@nKM$HDA?E{2qQjjot zHSP>EOkSl+N9Jod@pD_jcKwRu-KC{06+dbY$-}s=u`7b)Q6B9#%BBoR3T;UUEDzyM zF=6=$Y?I7u-6@`VrL9x-`38n&Fklg407j_3TMO~Zs7RsL6c9?rh@U+)0Fgo~;6 zSD7>XdAMJ=3?H3IWK^9e0q}gh`AlHX^DJwO{xYxcXDS*LN|j2n+;HC)Q); zMbS>f4S>(XYH{ODJrA_flp%~gi~Gi8>>1dyb;hQujP=%=MQ={KSgk14{icr^Gc`q+ z$fvq5=D?Jq1Yu|c+!rQ8lVQu&8JeLoR30ofo7Kftu|gDtD21d0%}Lr1)`%OOvZ?4h z>Opwg2lt4{)1I(p>pVqbl9LpZ8s;R`VRg79%^t0nnQ+5(1dVxDee`MtBYaF*16hLnQF9Z)-&W3(f# zH*=%FhjPFue$P_@_kqdGwy5;wKwF^d!@2#G=`;4U$V zIu5pMov6qh0DUD#n5Xm2c{&f4h|5zRa{yEhLen|8Lrj{^hAmsCDYAk)T&l$HD!IcP zq+4NixFF@Rf~zP&7`hqvg~`y3ux0BEMJjGuZ5LZBhSl4Eo;SzoSy(78PI*+^Num(4 zp26K>lJzuf**aO%)Qa21sJOIVF7?tEDNT9Ycnr6JFpos3_{Xm+#M!K z>%x|;leCFS(n!-OmP_S+H7f0A&d@%vG~B3Uc9UW}LsAAp&z`s=OnP>MEnBB2GPj)& zg6ih@48q!Q@yTOuJEQ~Qr;2;R|1AtAo{2V};nz8}kO`w?*p=Pe8p1Ys8H^*_<)x zs0ZQc4csFpPp`w4t@AWHQNMbvTxu1oHSwYbWqbPngJOD45OuaF!;7tF3Xb zm|V?*EnDYmR+5I^O}opSYG1#K)$!(79Sh6E4OQ9P$HI|>P_+nmib>T`ux0C1%}kQe zU6?4>YfIIg2cI-&>P%Q9E>qd8_jMM85cP4~B_>fTVawKu+Cml3J%CUY?^*9Jx~~FJ z^4?A6FntTwhYM3S`=U~{AROI*d&A`Ddf2jcjy6@b3!MWBFBt#UoS|RC+He`lW)3S+ z2g1*jxF<}09)~Sk=O>cc;*S4>L0a#Bjf?O}!bCnrcpjN8P7p%WMBF7NQ4?Ux)`{9I z_DLk?p>{VXX%|==Zb-`JJXEp}grJ>pSC|Ct2wS#JP$Z}MuW%v&^_c@yfwkcRlt)er z=|K1?;hr%0IT^NWouBFIgGUdLg)`bJbBsO@OT@(}o4s_M}h!%vS z=W%bC96bwLw$4#x{lwR|(cQa0yTQj{PJ zU5@+0Wav`ZvUP?cvjFr6SvV&B%p9Z#VTrgP0a2fb($ix+Vv54 zi&CXpcGQ*sH_bVE0~UwNQ696}VIc@Xuj8&T33?5-Y@MLUthQL}FZa^}PxGEK9;Iz9 zOyo04%VSnMqyyn+7VZg?pBb=a>-#Rl2qj+kLok{6;O6uEFer-2cg6CQpyTmaX#?S(kJ58!9!I z_}8W=`Eb&&j4Sks!bCn5dLHX?5iJNu6L4>s9IXahw$9O(GzShjrJBfp^}*;HFLp5} zX(w1AZd5Agl=Bod2unNS{xDf8z?QAE6sgzU=dj@nmRi-Np?a#fT2cpq6?3XeuvT2E z@~GESbRm45jC;o9>jc=cb-s3>v8vf$YB&`RW}i35?0i@*jcgtqf=2br{; z16#IETV(z-bjwJ1A?Ca0Slt0@!^J9(`OlCJgr8e+Pni7N3|mg%N8_p#dE1JAg@%R+ zi?^+;e~?pi#34O#@pR0EEB`RZ_iu35aPj?MCQ*_2Pq2Lz_kfA*%bw-&aOcXjs0;<= zg{9$;HuKlU1I8_diF^i(+1z25E(QT)bKD&!Ae+LLNnD%andsilD%%k8D*hWbip^H3 z(Tcyg^$5{O!wXgx!cuYL%wR5YrjQ^Dq3dAWF(zFH!j`SmHJ#Aqlp2F81Y7mt;pl|K zN6e{O4ok$PDw|y}o#Y@ijo=P3X==chte+C2ZL`Ni;4EI<-D=|HZIVD-E_*C{yl_nX~i=ED@KboZ?bM4notlDo)6xHftDs2x$Y*Sq&5idwQ3zS{aJQIbZ4FztPS#W^qBzpf>y(DnwVM;o zaXKDWhZ~-3>}1e|*{hxW@YkZeTsMTf+m&!{@ed;mnN8x8P z{=sq`9i3FFmHX=r@04!;>4f@+b=kaAs4;MfaB$!u&qSi4bF-Ip(xQ=Gq36h8)n zc?mbV&a9^VN+RMb<|4k7F5vq8`@vp%1;P;#N92DHY96Vx;o`Id+ z-k>byZCwTz#iVuJ-wfMiJuF52KM&;V;}Kzpe6olWZ*KnP4n$Py+!#xUTi2GezPOYU@YIB9> z*aSTDF&>>g%cp<)w9vAOU^+*)E9A4jm97aHzWuJy=uMeK{D`ArLbl>3x{qv-M5c8& ziR_Zr(_SX&3EsNiQyghk2b(i|LX??}Q!)b5^}SPGIY}23$=ZiK6B>C%BU9f#DIqX; zDSX{>s~pHXcb+2YCtyi~r}8%Og?@DV7_3x$m>|6}x_jbekz0Cr)C6An%oL=XGxjA%fwzN6N;x4i?8A> zWn%Fa*m43E8hJvd8b1hWn2>OONY{}d)qH&o5h{k0Dwm{^Mti)n6C>5gQA}K(d09A& zJpl3ax{i0sGcW3jEA!0ro{2<-vmL*rCz^NefAkSY95N&ZgbR)lLqsLjtp8h7RT5U# z6DG2lMVMeq>-46Oi z79)4y4QE1gD{R?1G+RWWX%>UWO&mE?ka^i0nHOPwxX2u8hK%Ag0p@wU*-T)bg)LhL zCR*ltH_0rn6_<$GrB9tO-~4yRrOT$mL_Q;&g+|0gye7y@!Q0J5W&_x=b!0Y=#F(~t z^rm5RU=D=k;f5HqagpLP!DT&;fXjENMzBj&&~V1c>=OxSB$ z_}1}OGl3a|En5dB8efLR22Q`~jo|Vnb6l>3<>BITkWoUCK2umO$J@+=g%Wd-}}q+TtYf()|YO%@K6t~i9xlYs?5+8Xae2JDFp*DrypLvIw|%8i=?GW$XRs9Ndd58oMk`p3>2yp`@3_ zfpne#aSz^nCJ=YSmPs1C%QKM}Il4qnwX$Ha)awi?5#)8zG{Z&m*I0qG6(2zSR-!uNxlM3?i!a{`BD>?50LLa;pb4?113KQ z!IrJ_Gb@&#q0;bzrgN%z<3_Pk9a0clX^zlouuNQpj>|3vMI;~;EyJB)Qq+PiTc>Dt zDn;&lxS|+cZ;sKmuufczj?W&Wwg!Zwt8p)w99;!lw$9P?SdMDN*cWU*ZjR8SutZ#h zj>!(8ko$z5hj9m(^gIMxwoXrE18OjWC!04W{K2@2UQL+Dr;0uzLvBh#4qe@N3+~rZ zCNckpEn6pMer&vHI7^*|c%gxa+2UY?NL_u^$O-Em%@Hc(hEVcdIB*>uuLOxg+v2`3 znVJh*w$9XcsZ5FO58}Q0u*R`@G-My+U>v_jmd^snwN(#}a*q-}{^e2v&Em3|37i}4SV>uIOe*k9$o-E#B>v8evtU(&NGEstoB@j!A1O%3j3#e+^@#Dg31L%+dP)lB zkK%1*7R(<>@9*S-BJ*7uTSin+Zh(lKzxalE_kRtSGL;fkztn~6A8iYx>cmfuO8!nR1>o9pqy#C@byvKZg*$7xk_3*K-hG&jMPtwTfNj6CcgLFNT>WS)cd;UbfK zM-#IMmTpsEevdbs3CwR{%hrLJ8BI(L=hTs^*dkHv6|X08Y8CaKrj7q-JapPnn8;`7 zl)SLbq=x!VQq=l*>zVMZ2V1rd4@pt2xsN1gcR$45;QCeC zvGw!eCp7-?awX`rj&+_cwQ?Qn9M44JI#%+!M)nI?>mA^f#XG(l!Qt)jaPC{MsKMhY zm$7buwPN;5%AL&dVXuASOLdn7yX)}=GlSi=x_zGcvcyb9gF>lNDV7`cX0upoxvzr~ zyGxagrB9k;@Hnn&>;xitJV%qyYylX=N22>k_R91OmuH)Ykq{GHaYGM zhP};VrBNSt4=uU>rNA`tdE+8{f-sRq5l&%B-lYt|l%@rtYBk&&CRK0!=TS9PrK-2y zEPB;x^a_og%qiLt*PR)X(4kyxW-2JY6KV>0>zUMS3tP4xi)N_Qlm|=AW_58@jO2na zq(q>SIXfrA8gZ+d4}l9C@$AGXKnOYk_kl^!aj<3U1V!SGlN5K(H)rQOSRF1q*~A^i zcS6lMc3=%IXQf=gsMP7S@JK54w{hK68aUC&WC1x1CAM z)39ah#6-sMfo_Szt|>1V54$!HCh{3}Wiy74lYlTZ8Fzxo(7Lc?>kMrc8+Dpu4MZuJ z_cLc_A6Oi2*f}bbq!qB^xlWkb6K_0|ncZN^)|r{EG9#{ZZdFTz-m+PvRO?g8shg8C z2us8zC;7%XWU_|}K=`TRE-?973|k(5{Is0Lkhs*KBwis(BG2XK{9Fo4)NOvE0uX*K z#$90Yb0KWmIzN$0xhkfb{q-v)W!-NM&b_cUTyV0fltZ2qV(!7)&Lrk;*s^tEwoo(H zU}=TB#iQOBDmugJ2BFu@sd)|7hfB?(ObVTd_k^5R@b)vwc?q^`ot!x;IYXu8MX{Yz z6g=Yk9cQT5sZ_-Lj*8H%KN*j+W(X7cjI&P61fe7u2uss&N0=;4g)LiWDKcKKjSR`v zc5zvADY94bD07YuhehIsqHMiYHO=v)h{!$l{XRW8MMLe159>zUMC z1zWaGO{5B<6;QFYVpyH`dE6YJM`5A30A*7JCCNZodKht)Af z67xaWasn|LM`Glu8h_Khh6#DL=j!yG)j6EVIIxyRpeaSA8%6B+Xr4GLrDFgop~|Gqg7-^Jx+?t|9dO%G^6V7UYLh6&59uw@d@ zZuU%c?~KM4s*;W$R*KD5qgqkRrk6#_3~wNN5!QzrS9DiCQoSeSJdd}ZNzSvdW$WZ@ zs%jU^GDi0!ZvJOuYBm)n@)@G()=r6@6Jn;|ZD$g*0c_biF*9RzOWcomusJ#h!Xj}4 zj_&$KX9);H`{7P78QKT7Y@MOaVg)3-f=0~QX~5!e+0osPnCv=Xrj9qB$;=>Z**Y_k zOyyq(NRauGIWkwm+HjG{CR2qxC&XNix1CAMrLbk|#7tKoHM)T_dgtF48Je8yMVjLIY46LMzZ?ProR1Ga3PoX8j}ZUa>qpJUDOSp}3#!DQ%g*s^tormD%`6)^Vo$Y+|v^Kn=mEfKq%X)U3o?&!pxw*s^tM zA~iGJco&X4-!ez%23R64I@#3BQ~<)y^|%X6ey)WrTjwV-N*^w@%Kdc9&#%qFc@ox! z3r;qp^pNL-n8)$9Gl_W=wrri4jn!Cv>XN0!-fBtR;ymeP{y|R7X_VXpLNV8A?r)CkzHrxY!yEdV zr#7y{V*=`4c$=A^?(SJ05BoQ!MP*R0ZwpsPL*^6=;EFQ0Z0PQ5O?RIl(T6+0M4|#) zCb6sJndsgwjctf{75_xD*r-uzwBnCwTqYW6xMAZGSSoHTIazZf7*`0w(<2iOt}&; zoXh@ZPS2~bKwNq<%VmoDgq@dh2bk=<2wS$!4vjs7POY!iUmSL7rNPz;<&ut>e=*Ks zTM85T4Bs+~JrMy2Kbzw&F!|XOwrriB%}MBXZyWF>RMlnzk*wD#4XLw_*O>!!4Xh3qAl((R6yFIoU&33@q~=Q4vUO@`)vR1G5U!dZ zGY97pSRgJqnN`h-`-GjJ;SMm_c@Vaoz>db$vz)#5rzSN_Se(6{5_z3s%oO%JUokG( z*AXW2DcR8%{I;jCsgb>NHQH}~JK@c;cv z|KlqEZ!9Y{DiLxf{}nA8NC;V1n81p9ZU{*}@dJ_* z_)ei&8*e)kns>mKtwXZ~g(jH)b0XC2X->^En7!u zdJIC%Vtesnsd`oB#pVEA2us8T=!1zn4^e;={|P>y!#!Z)^BLH(b$qs@__#%KadE9k zmLKjhr{`{1Auc_cmCB0y1fIKa2bl2O4qLVkPs~V5yjrB?Ui|E4uSn(dia9+ zf-PG|XBJIc4d>L6YQw1%d&NqfQ;WQl@KAGp4uWOk2A|`zs(h#hB!L}(d%?u$eXwQg z7{w&8R$aj3y%L_(Kg-M+YQY+D8A?9$1;(I=00f{@aTk~X)nLmB0BI~X$@MCKB3r|R zoU;77?yRS5g};zu)QZoTv_kB`_*QpU&EB7~M(Xduh+j493ARGVt)Be=eq!SvH&=>I zt7qTSrB|+=-RYS~Ts=!(L($pzlD>Slp7O#nWftlWu&BXfDwocF2W!Rbm(fGDQfYfP zz3MaxeZRq*%?y1{>Gpi)%O8<1Mj*AXVNsLRPiI+}c! zM_Nvdg`p591Oa3%+!ZDuYr>XEZd~0n(Y=MV$UE!=Keghp`%(=BpglyZu+29ln(PW| z!;L0-Q<4b)N&g8q@5Mb}a7C`pwC4V0F0U=&gptlcOj=*y+W6 zV6sz$En8%}iTl80=Qh}~b#`VeqlSXGv7=HIdyK`^FvPyl76)g7EYL?hTWt=U~g$d77^Bl>UyNE&gs?K5r&Wx7mo@WwM~xeT^!otBNFw74Tz1(%x1Pz%eX!;6$4kFcQhE75b6)-h>tcr&&v(MhKk(KwdHEY`**Y&% zqVc6#6EC|^0?ho^jYm@32ow2?r1W-}CFLXEc|y!=y!lLGX2O=oA2Hs@K_TWt=ENKW z3&RaD*%ISBPl)*d-h3u8N5Gb?6SG+~#)z%JRrhr|>TLsOnNxEHEDo0%yz5%PkMMm$WX#z5?=Y*B7;caKKavf~hIxCSV z({P&AxFyctm?QHPEDjf$ETc?V07A|axC=~j9)m4gCnqu^+#DGiDm7LVOXXH|srTA9 zrMOw=AI9bITEav=<#3iW!ZA7!j@HCIVRE!OY}qRl_l znxphySSD^PIwix!g?K3lO$%^mm^AGGTeeQqCMr!MO{Z8ciKTNT7&+zy^}^C{3DP@x z8eafO_X#yc+yN#vC&HGkQxjR0T3Rocdg*IYE-=UDv#>T?Y_eRH3i(gC8O1$da&snWw$9I{s&@U=O2w(U(*sH*I?|k-!(eT=`N^!NO7x#_a|rGMlbiR$ zmaTI$Ggh}?B7ml{)6D@|0gJ>1$n3;mXCVklOL142BsF2n)=AndR=}pXjX?=PUo|J_ zE3i0Rg3RW&lLa8;d>MCvNzQ-6maUT$$zA>xf&`pjnuGHTSQ{=lS>~>g|Ad>L;~p@% z`6+DKIyckR2aX;x2p|4hL%d_aux#!TCh{qp&CXhMl7Ue4e{f%qGAa5OYIC@KS?Xg=-;lcH^4%hoB1jNjFhDoO!#k~u;jhV|j*u`I{$ z5e*1GAHuz0@^cJq**ZTPs6m`uU-oHpYChFbm5bKtS*^$YpLp?+@+u=PK4#mAVk98Y zoYm0@(sm{^XTX-NLlYUi*Tmc6<)pN`v0UA}_#JbGz731SMJLO_dz=u2r2oNPVUqL> z*s^t!rbeDUK~lNDB(~WPstEnT9HHOA>TnS$SzzK4qTZYIA6>g1d$b?cqky62A$q z|An`liR%|V%j01?(X^-x1?8^5@Z|MF<}CaKSCqMf=);+^po&1i_%ZGV6O13hmPs7@ zfoGz7n})U_1XY}}xZ|ZE_6?O9t@xWa|1BD6xDfJBSSoH@sbtGif*gdZzvB)usroBy z**aCz2~|$1F}Ol7RUaOX-i9~#-^Mh}5hljtc&?KSgrco*N0<~%hb>#Dh-NqCR?2X8 z`=B{PN5cYfBT~lMO%Z_*bR_Nulc2+3%hm~^acIz~^|kto!%nR<*jk}f%bzf3=wq-% zT!ze+_emUz$UrDM9e0FD(F)k|IHYK(w7ghzmig6@I#KXVbBewWOJs?nhzx|Hui}m{ zDf$X***ZmY$U|7G7sc!DoKmY;6Bp$U(W%N`nX~l2uuxoF}> zcQ(i8J+MIBD3oz+t%yJfdN=L{lc4Qk%LxQ&Okc|xaDQS`!-T~d@J+~@Kw~Dt>*fd# z!ac-A*zEp*B=-rtRonq4yo)`{<6%C0dV(5-U=~jq?_FvR#l^U$%o%aB@m?nx2pkvU zjxgc)9Bi3Hw$FGbx;H1DNRi_osZ}VtS2WIWF8m%?B5r8OhoZI&grd7~N0=1d1zWaG z(N;+hVc*!2tpd_(<{-TStHcGVXf)VkC_z|y3HOD`(w|_<)>+yjNkOv7d&d76hofo2 zL_T9Zv!em28W4V_;$ATM*#x$nz>h|uEo*hZ=+ZC|t<^P5$X57oEY>g~TX7rwQr$pK zw-w?w)sJ`gHPzdtzNT8-;^H(~r5VGe@{&@YdTe9QFQe|)WmLY5+VM(io3>}1e<(+61}+i*Pycx+xPLim ztqDB?JG;M4c7NMd{I+nyz;5E>h=JY3&vOU%@P6*;{oG6ZT-YM+v;*G(DIMO^?(u?nmCV?G^c1}#{tH^p^41KW8f7r? zkBlI7h3J%P{-!Io1n*VPM0XUweNsZVdXN4_qRKqlPvVCRi44Br7@@Et?PhPG&wr3u zZWCYZ2hWX#i7YB?(mSK+@2v`Ahf7kMst`woSl3Bb+z@X(v#?&@vz$o5-0sZ)&5Dzv zP_7RRkBB4vgY{-}?mPvG{mr4+7uPj*E|Ef!ep|K%6p9iw6YYh2!X#vO*m8icObxqu zCc1}`J9H-jC3Ze~ShNf)EJ$D(g7t~7O(;XhrA`3pFw~xsCjn*vcY=veA8dJ?;?tgi z4R3+G!W^H=V14Z2)0TkXa|!MQ6Q5PEW$XBC85?~T*Bi@9jY=ekJzx&deXv6I018B) z>FbBM6HI`<4_melkh>N}(^s&B;Y0}fhdDuigC*h;ls@^alfl|5P=sE^y!7|xH zDXavomaf4)VWRXU*s^t$;$zaVI4BYe(i7$&JqC-!1?hy$Cyk^I6r)FQKbRQ(47O|? zqpf38Tf;eZq}p&Q#a^*L!Kp#7a)ln`Wv)fT42u84!QA^zN1lxr-%{+rtNTFnDJ>IY&iiYjYW64ZtpMO zX_%0UGwbQjZpc>nOUXv9cv*KrJJ>z2Nq2V-9A>n8peJ~9Qrs?rmGA=`Um3W9blOF5 znl8g~7r`>mgvR=@&c==OZ3OEb;NPMXa~A1JSk&NQmHP)ShqYq%i_!jp_A9tl*GU+> z6mL8;3|_3;{~G(m(z}1AqCuflsT9i%cUocWZe?Zn!2RY(+>5IkyL*5zEXIg5RGG|y#uKIJKnR+Kd%`4W zDs0(0K{Hf>%7dk5v%0t{28O|_0F{(?lsQL-!y0iTQ#td<6r%>A=}_DsCQS#ymaWqi ziATzvXW?B>E6q7N4OWNCQTFjj(SZ=O4EKadPz$zfouJujJQ6o7RjQ(DDwg}5@{-|t zRTNM)^}6Ki%~`q@)``nf`b)NT%J2k52vt|(J~64f3bt&Ws!dg@5?+%0xH(CW!rE|2 zGFg?0uaZJ45PBZQ{b17b5Nz2xJ&}2VK)1wKB~Mu0xY%Azn8>Ht&VF7XP7cD;TX3&) zmt_78Tei;AX0g$TymE3!bB+qRag=^XiB4h*IPzp5{A`Om!i-0AVawL}nXdAa{`%XK z%_%womWZ3wOqPe^lNuF+uyh>m4wI!1!j{J$OVPK#hKFtEnX_~bERju?qGAx1&c@wg zvh)eqvUQdsRkqmNTk+S^lsTkZ%^|uO)`kmF_EmOB1wzk_xF1YFHDMl1zWaG(HxZ`_pWoXjkW46yE#L>PNgE| zkJPI{Hdw=Wyf#^w$Y;FPpZTPAk|czyb#bSdT&)dTw$4>#4j}GD!{HFMk2zC&!Xj}) zRQ7WKadHrzcEcTF^0YH-**Z^=F&uqqY?!7&bDFBKL|mG(AHz{G2uq7`cbF`dVawK8 zimbXRx1onIy3`z_i(z%R7-hferszNjx)Aq-NzmtD%hm~sR86#EDz;V(s|PgiHHYaQ zSST(`*;h?Tk`S)$#+_nvbr)>eI#<)wYTSjWxU^m__0qTIyk^eRE3iOZo=i@U#}DeF zQV@<_!kuAq^e5P|b&fVsIT~p?#d1k(2~Z}MW=t?1$4wI^@)^gazwtz8y+n#Y*qMsE z!DMF>*s^tYBD0bS;pcF3cn*cN;f9~=XC*@_5PA;6{b15_0Bkvd9*u)S@~n}6;6THK zJn?j)w^cZCCwUGhQx5cBVi9vP<&);*o(cC0mt2#ZE!&Axb)De)alG+NTvvLQHBKgF zellggqCsKoJW8jN1m7}e;|5$_<`I=FP7(mR5OA)?J!67%Eo_;@xvM=Bi4i7q!nRPA zbo_85Uj5yuR@5@<*P>;Hr&FGU_2I^wELLAql^_&7j{Cx-=uz0Rb&57swF~Vq49`PN zTGN=IiNZuag?bjXR-y`oo(Z@gOnO#>EnBB&W~^?B`z&`c$7m;5ByJ$eVvVJ<9E7JG zafg^Z6=2KOdD<*iK(f!WV$M+s7Kh7G7W*udWgz^Vj61^Q=LFcYb$%k*%)juF;PZKN ze9nip;o_5hHVdgh=s6GfgGtXhux0D?OjjQ}x-m6e5`EVkqB~%TxDaKr!rMsnue^`jOp*VURX`hw(UV ziZGGSI4%2;enbgE(FV9LOo}GMmaS718LP!@01KmZpgBtW!6I>EQubrDI5`MU```{S zdD;`UY@Mg6YJuPiSne;?YR;g#S+`*hQXN)@3sM$)m{N2g1P$VzFbS%{maP*MskiAS z!f-sg(j249VTrgHWnXVoF$hbS;_fh6x)`=>ou$agf4I~t_tPy)51K=CKdcQGqU=Zh zAr%Nc_u_sq>A45CY@MEs)fj&2lBLDoYDvvwZ2uLgo%8Hg^MycFGaj3 z&~Asfp9$?e&+>TKb22R|LqWM#FI-KXXimiOxT4H$CRyy=O_ze;aV+i(6OTo(WfIel z@=SDZXUR51yo!G+Tx>2WHCjdQ0`_9HqU_~8S2WUalgTGxskrHJAcq*!ez$B?6vEb- zxLZuNJ`P*9&en9omQ!jBt`H*DhlisV#oc1g)J?ENT&A)Z^K}w~u=Fk59VSaRz?QAE zMDv|;ZDTm!{ob6U-@*cMNy;VPDN+!QevLcBbo2|*az1$TwX&`z*r>kQ2y($(rk@nSls)GF4*ZL&jjVspTprao9GE=^gS?d3^A zxT@ezF}W(imaTI&m5L}9?RuTkkUG=;fni*<`8`!7KjT`E)};T1>xwsxHC+S?tm>@=V&f@0vk?iq){tYs^wO(T5G>! zTs_D1syR|G!&-5XT9U^UQ<5r#t`~8?m~=f4TTY-$V?jl($@r7(8YV2R$xMxVHEhi4 z%>1>DN0i$L6ZwoNvq-loIuMX&5rB@5D?R91$H$Cv~10bEw*VvUnQ z++*lLKsf^UhzZI<*fNQD2YV*Ew_=kXJBXdx98m7b``%ZoG`GP_&8!q}DTTax~M#c5)9 zr!Vh_hya0#fqa3OcOAP{{6D-Qyovn_@7bPwc)c<*=*%eBYwqi;RUA(f--(R`m=E&k z`m=_-@7;dvdkK=ubY+)Mc1zcU4As8u8a*dF-;XaECS)t7={gc5jGMZfFt$lf7=>P^ z(TdF)H)aHz>uaa1@l9PlC0k$jOms7AOcGhce`?gH^x?dO8(qgu8ttzn59mYYBK{;@ z#5{6__b7NdqxzwC&ZxP+!8xNY{z}am3tc;2&Uju|8yPlyZH&Ukk9~Q&nls+9PBuA% zJjR@yv4;3^!)mZc*MyALzU&%3Cp+JdE*d6eE52%ipcrIqGeJ~A!%5{v)=cf*A!T@Z zqo=42KK#(6%rots5q_@sowCRtx~Rx3va7BM+0XCQH4)SXKhdfUG;XZ)>dpN$`nf0A zH8vxrzpEMbx2r;@{$8xBwCwM)t_j)Sr|6mp`g^+8bFDpjuzgC0SE|icbuh6aT$NGZ zx*m7x+t2H&D*N_)&qQL#%wZlOsUo~7FX1{=gx@k3@rHB}^QZ{D2g0iemmJrw2#4L@ z;EM26@mFd^c(`lFs|X*^)kYQtzBWch!S%kpS!eImS%l}scV;n*KptaGMfj|)?DDyO zM%RRl*}m)=JtsTgk1iS}WGl|obtK3f6SOjiZl&;kR^lkg9Kxs$XRMnIimno!GRidZ zU4~-4DUAB^cC}1=KzwHwWg>Zu zIc4H~y0XjX`iHtEWWe@i*XTLf`F?cKFd3+x_wgGE|4`3 zcO_L8Qci=l3>JuQ6W`?5GRt6z;IcS`Wv0v~^BtFHNLolTcL2Yrh&)uLYE+~oYnSNL_39GTmL;Vme4ELd)mqvl= z69M5Tc&nHo{1~=u9RznaUc|$4qbgpdATE9M0>MQ+J*)M&|694rkIrwIv+!?N8!ij8 zQdk&si%{@Sygf_`{tjEVPQki91r=v$wXE*X-u9iwQDCkxfmN~Go}ZE2^MNa*+vnho zVRrjgux0Dr9z6Vu>y2flMkP`O9B1D1AA}|0_WaD`o)5gC1;EjGYnWYsBy8Dw*RStC z@xci^C(`$4oA>=EU`@Dvzg2SIx80$g|1rEd%+5a@wrsugH}pHd+H7BsQC+G={Tt2u z|C_KZ-2UGtx&KvlgyirUH-VIx}j==`) zh~R5RrhyilLr{iQ;X;ry8QA99bBG{t3f?3p0w=+its@Xbf+2S%D1I*RLURZ{2kXLx zASDt+Tp}2J25%G-gHOYj#|sAT3&Vy>;&NC=%m}Ip;cjyb?t*p60E3821cTf0Mlmt? z4s6*v23z_G!PTtQC{=5v-a#h`h?mTP_!F!U7l;MP6+)tO1dTu9&10hR2iUT8G=fAi zTyM6D!;N~`Axno-*Eb$IY$8nLGjvF)7Q!ykal=Mf?(2kxZ%VM9S<_^ z{{vu2xB($$(m3#jcK!SC)-bz%Z`iW+t`EivLag|wzh&P0r^2dmdw+IvI*<-g0BU%H zm;fw+Ess9{>J4S*$W`V5{1>bW7l5?zKSs20C{X#I?#({lKI<>yO=2SO1=zB61cJ4L z;gM#)cz;{5f221ud-#w!13!Uf;W98MB?w55C;~smTf{`*N3dn<2n3VJ4d>L6s;B~r zz2aUsr&dwNivKpp;GeKGTnx5N#(;W7;=$kXb}?c2D{R?148bx|v$Qn2h&=aQ#$$mw z!bCn}fs|z=*A*H8w!)jj?DXldW$T?DM1ba!>Tq$1v!Yq7*ThCrvHBK%amNSE`~PTI znhYWU^@>D*Bk^`IVK@x7oB)Hyv7WlPz{jt6{N2hLCghIRn(i(**$RKpyHP8SG--vn z*ywBBJ-ZOOJ=L9%?f5VSh{PW?u+366&6}n`~LkyRBCK3-ZByWP( zIVYUH3x54WhQw903yyJ?w~qAmRYKPfU|oZ!P#$Rb9xNBLYeu(=DPG!;6o^|ScHN0L zj2XLb)9v2Ox3_N`m7&lq*Bj~{r$3wb@e8<=v8No!<2M>Ncb(YBfpes%pTnES?CIab zmPwZSt!JW(CmskAE%EFtPyJ>a7#FM?3lmustdxiyk*B`k`9^@)5N{n5i1lI12|#FM zds#5}0Z7AyEL(0#$1?jwwDDo3THlDsMc%TTxF$U&9UW~B=8xRtwhl>B3~ANH46IVj z{L-9|U%>is3DJomzKaBppW}^W;_*}1vUNO?Vu+_*v8v9`t+AnT4CxUj@+o(9V#t`6 z1d{)QyKF$IwoGEo zhdmSBD`x#&0s#o(YJs8X9U~Wt1{oHxpMz!LmM7b%6|i9vJkKZ!pTS$kMB&r0W$P#? zF~MCdjO-V=+nj{EU{$yzuw#Pj7zN>WykSfbz5`pf4uZdXIEV>LOM@d$6or?}QTP+A z3m1g~Hz@e7Q5gP+H;oCyA7IM~FlbbevIzCd5DgO+i_nc11@jJvm3kfbC6zJt=++w< zr>a@PL_XuB)Y;br=Yr0c8ysig&0~@|&9ginO4F(FVid&2HD%u9DD&Pv9G8<>qVAj) zgHjwMJ$@+OL}rg41Y0Jt=m5_|_lngm5|kTsV}b(5O3^aIs`WHjA8vw5om5M8k>Ifm zZzL0s7HoOk;z73*TyKuYwXi;U;^DhU@VFXpBomLTV9Vndk5;Ln?k{-U9FIp~eR9Ra zbCKZjFy2Te9uL8m$1NUo#b&}3()mNr^0-J_NpckEJk3AM z`}}XXq*gv*%xiEt9zPqGzIeX=}?w_2^v9?2U~R*Gyp|pV3xoWz)e) zg2 zMD#Z{XpIkyuCJYrP5(@nEqQGELC-{DK+E>n^abMDqtSI1jr0zSTV2GlG<81c)x4A& zU3XS9^qnMKylgJxi|I1v@g89BVesAqJp1eI_W*C}{szAXcsub|>U)6S;o9-;r&?EcQvc}#XNixKR%slk^H6lJ8yp#QW|Zr- zmQ!n~IBqRG&*ecL-FnuL_r2T4#+R}1LU(!1((MfSywA`zA)~n885;d5k?^CAh6&k< z`*k1MAeY?R-CVL=Y+uVEyn#bn>89I{7I{Ctn>)C#!U|k+H+q#wd2Qe0jT? zPHq(6nMFDwkMZcXymaD47@AYQsoNv+k^j1`2^r1(9?|Gj$%P+yG)%}=d{EbsAgAo6 z^$v2Kdmp^=I%^**ZfgeYzf{UJQInzCUG`KNAdJ4 zpElZ0r0?iHNJZLpH$|WSppcf=KCLZGWHBd9dS~<~bta|_%UCJuLFD}y14;f{tm|Zu z^$xu8%t@LxJj;m`BoARVh7IWy%!-pjd3AK;eA3S5P`n4%HFkQALUB^oP$){!O!RKt z6DA?s!iqQsZ5o`gHW z1n9%CW$OUN$D;7NC?c`wbLJF%29}9SQTDMYtOSikpT<35qVy@)vUQYZ#>OJ~VuJ`s zcbS89J1i0xq!Tg^M^Xoh(RXk^m>7K40RG9Gr9Z+-aarokoFyto z&};HMNz?`S|!7_0}R59}q6;Xn~v^VYx6Q(_2%hq9<7Mt?CS09S~1Iql+ zspc5fV1c+89iKf$?&}|24G2I>a4(nu^~07E0MeLbmh;s9bd`n)IT_KTo2g|h{Har; zR{TzP0ymf~->JK^<%b!~miH9JCV|D(zPL9f+zCIr@z0$rNT*rz+jJS0v*x#WCKBgM z6X&?HpEaKv7asTbbXH>HZ(xCg2UpIWKLzW??4wbWsfhrpLW&L~K0bka!i76dlhQdnrd9=uPIDqQRtH=d-ODejM|x+ zbdd;BtK)7mk$M}3m89G^eJV3ttWRIW**=B6a&RC_i~|Df6yn}%PTT^#D`J;(C~?F2 z5*H&4;cN%oIVNY@!IrIaHYbI%{%WP-)QY9DddWwxIbTIsC~h9?&zG-|B!sIIai^GE z9S>W!&Q(e=Q3ym#OqriG2W%8pj0@PQT>(tdhLCnH?j4h~Pr{b1lNLLn@0agw(wbt< zOi7Vn7N;b+Te7VFR+Nl?C)r_6z1%JqOFg#cFZB zSd9rnnEE~L5|gRl!j`QwwOvZRC8i=<)zY9h!QT+?%u-|4#+w@tBsUZ$@)=0hbB2p3 zLnvDx_l-%}da&hjPFc%o3^|o*spS+&X58PLvVCE_xFIZe%A(2;%J#y2V^X#|Y}q%hp*+n*pnh3>D=HQomEGsFCX*=4ky5R*Z{Q z&NE|NbzSXNeRL*8^VLYasDNOuFjwz`!gt9Gh-oL7oMk`S&I;!ZKSIvBQWovUq9YOdi@rRZ(- zjK10Rqvm9N1eS_R)YdP)~ldTchvURr7Mv!#$SZu8rR_9#5W{%l)uxeb) zavnh@=|hOS2KSIj+?Qa>)`{COEt)mNtZUiZH0GU$@FJU20{jxo>KD6Si!f zrTHnb%T0~NrS)>Dm#!HtFvn_#+^`zTH)ut5A%ty*d&Z1b^I*%?37efl*hteUmP_S+ zwE`=evvne@6E`9D<;#{-giv)n?h})$V`0nIsY;ufNC;V@=2)Ez3&q7M=b4F+B!sI^ z;!ZKSIuo{>z?H^nF?rz3KU|_=LLPg2ME5X(Y=wXJ$*2`KnY2P&Vtq$DXJP z+H6$^dy}poeH?yX;~zHH?M{c=9@QmP9&UTsGm&_>E%^+S&gnMq7QUqGM_rF=QzoX)h6N5HqC8st30SxI&_eoXwBy8-1S-T<%oU|6Vvs`oW4JraLj3e}I+AOX z%x{;Rmn?{KNoV9{w{M!m@^xI@*z>IvmX2GL&0$frp;_#!xNl5yz5-h&L%1({CK4l1 z=7`NsK`j0n(_e`eVkHU*MgI%y#0^CqSC%uNEAe8}U*c{t!TJSk**aKhu`7J3XC!v5 zJ>8hDcL)<%tiafbU14o#>{~rRveFheb%UQ==@ELFx(S|_wY1}&|WS@d9TZe2`N<53b>+&vh zyl#hO;^MWW)6#MlcqQI``5oLZCRpEwEhm7bF}o=zNc}kw4HI&LbcODiMYh79r!#8B zhfP``rfH{icbfLN%%*A6Zo*t^20F-!e=1#ZI!)KEDZUFEjRic*>Dtvj6XRjJc1Cgt zjkynVJ}h(Kx}3D#23C*RQ=?hU!?n*sc2p+tO;&)jao?CRbY?m*U7W$)wv#Lcad}*I zY02I5tW5YHW6sV8aD8LvaLH5N`BqG3?&Y!*7KvbV1nwpiqlK{Lpm8z@9_*Ru-gNGQ z&b*D?%Nlnz<{6^BhLgJ=g;nE*tTQqy`S{ootq6S|!M$bDw;Z-?oxb;Uq%Y?B(eQxw z8|L_Z4VI0I-zU0_UyN9Uzw2;!nfzS?Tei+$%3@YxW%z=9X)`<&Tv)jPA z>JY*n!~J6t_6Tg*I$?7=M!2}Fy4FnNth%N!feoX$lr8HzW&Ta@l(f}xADN`R{hvqL zP8~_>bW8Ai&8b^}_Xu+cab~xvi&Kllx*c$TnFMYJTecqSQWhoB?s)Ar$F2yA#SM1L zyNzA)t*-6o~ zG1n&D78oA9-f7O@ZLoG+20zv9z?Y;LA@LU6XC{d^!IrI)*m-%o?-vo@z=ekFIu?r+Z7zOYc-ke1aJI`%?D{B5#(;SMqx+a0!Sow3d&KY;to1g{UaY#qFm zZNkAciFobhu>0oAQd50T+!f~JT?XsLCGR8M9x#Me3OZF1cM0w%lekr|W$VOk-!Yvk zH(-W?-2>*x-3JTCMeg)&Bd5qjnEN5_D3iJG!$EEL+ zU8gTzFv8)hxXVlqUxqDP=dg2`cWNp2rN6Uh84p}%3KRJZT)ST8g+wB}ZHc?dlv9wXeU`EGqk# zK5EX|M_|FYtaZJfQ)D7>Z8`2JlerPtvUTR>cdX~+<(lCV?rY}2T?ebh1#U&ROE{?! zq3s&nOD1h!f-PI8t#j2Dx^pv(+Y{!vJqF9g#jWdATSz3r+atJ}Ox}J5TTb9j;~<|r z3+SKe(J&zoV{ECr3sAPgKZ<75innzSc)G0+CldeK-HS+v0zm;^qyoBp;E9pMwBJP=CT43Hv8Uz`-XS}7`De|d5Ro8^fEPkhG^s7X}k3AYDWGklXIuc}-pLaL2 z9Lmfrg`o4fmyv!mBU)WKIwhU2>q;*1`>JQ6OG)SUNj*LD&RDf_)!czI*Xrr%KYidV z@p00s0q<(!&5rhS`Tm2YX0y7uTK3K*A1vO!s!TdO3=14&T6wPhAy~Kgh(h{k^n^}h zz<{PURWa9)CaXZI?w{a(Fstq#>td1l6_K+N^(e&O5czL&KK_a88hh}B@=?x_kG38( zP5mABhsnubVasH6_7~4Y_YSFVl?+tuJw$WopydaNH*|) zm_SX3Ehhk_QOn43$Pa%SCS*DEqjaow#%$^7bCZDUMb4=sPOa=5R_b*ItF=BQd6vv! zJ{j&IF3iVg1~bus5PSme1(V?8Jj)stRpzO4>jWZ{8>%B0l%8h}$T_&Q%1H$W6g zXaYSOcZo^MCt%AY-hIq7(Y*vZGYPBsdhAxwJZ$(Lcqr@jn_-c-A*YldQHd9I--vs| zgz1~GW$Q2{#;EX3)R7qVtT|E7z)Eq6$}vWTC806uY1}0yR=vOPW>tM}D zN{eH&hhe1dHAm_mSR*b{9p5BpfK=jL?swzvFk!k2wwwTy#yqH;O7*A1G)zRNQZ-D- zR`|=D8YW~bzM{L-5v*_jw7cuuM`y6Uopy`+yS72cOYx7PD@&(!?stms!Uk3W$#R{0 z9nVDKtZd@!S@!ev(-Hz^%oXnMfi({NmQ!c%hNWY6)2R7GNBdZKx*&l|a@epv?h-R% z&QFIVc?VwRQ}?^4YEmeTT@5`fa#FK>L=@Ju8|tIRo^pUz=#y;=0C&$hCZB9~b`-3@czk}7{($=lmrl>Y;Z}!Y6pN6y{jO~hh$7Jliux0Cv?Z{#*cryhZ zqAoFqtsfSR3tPuSw%Nj_h(xG!a5tIM^}?2|Q8ljN(;j~{2kkGgWL(fX-iDnOXtipqS{f8_zENzHYT^n264CyQJIN&O z1=#ZVC$8l*hMY>Z)N+a>drqHcJP_SNn8;@!+CAc;5)tAy!<}Rjw=rzlI&s^j$2jkr z|6;A)7%Do$>UIBznd5c{tQR-HjdZD4i|9jGdq3_WlePU}%hp-@f9}pbUaslx|3|4? zQunwfL?R?1BZLToy5C79E=7zvXZAT~PUg&<%*;t7jk?$EP$iVQm-1*ST1u%)DG$9X z)oPVeN|o}|Q>CpwzqKzjYp?y?d*=IDYtO9o*FSRdJYM;n_5JMk{;tbj>$`St&RWv7 zFyUTxi8*wOVB@&ZeZE7`B^gENtKy+D=^KKTt`owycXt6V#a zZdC(ymN3m6wW&g)J(JQ-eXR<4Lm1lzkB-UMRl##-$9P%h;NPYaGWr|ekREp9^V z)UFT39m3f>JU%98pMjOFbJk)eD$a6?bxU!g&l&7?@_Di2BU@WCq<*V9*BrUCVdJ>S zb!sM>WE7$A3_MgOeV>Pwt<%?H&yhIvoiFrw{CNi{y*<2YuX>L;e0RgXapCLKo}&bx z2z%eeBW1Gp4OrPado5N$$c-hhn3MJr>=Ku>POXB(UsUp2JT4|zzlN2qb2Y8`+OFGu zWnIbIe(3)=4Adc-VnyR@#vV0Wntw6 z#x%~M%cJc6Ayo|td5Ulw-9r?z75;f@qgJeL(h6}E$uBy4pnkG?pnk}4diuMv6{n}% z=WanNmtyZA`8NEz#=mQBu&s{C-=)i^JSKmKCy{teKKTT+&N+Fn>iejhFZ)E21y)nuhPy6Ce;OJOR5IbG9SsTDim#iHDSDH!s|e7C#3fg;7gQvn zrk(btx9UwYi~9@JA*T}CtL&8$jBe1adX?F_gh9S>;=L1IpK{hZ^*&|9{Ttk;TqORL+NU_Kj@PFQ>v|*ehwqJ1 z{y5sVH|a&!sI1`)Z`MBCqi}prxl|K}d{r7R6TcIyk`dphkk@!*duE?f&oZ=cxkUG= z$k+ZNT?v`h{imYwU?m%V^3jlxt(d7Bh}#O$w~X&>-*PCoZ>c~1u57Q9s|{D2uB>y4 zsN2_5D_6$*=~Fp8_oI|}b^U17?L4LHx#aH&PohKJPK(Pqj`e%<1AL$Nue+?+`wnbx zFr1U+zTSdei_a+J35^^dSv@4f(>hG`pLM1rQkf(Z$Q0}iJPhU<&TGw?=v-x`9TLpQ zh=WY!?4Xk?WrxMOLUvKE;vJ5Nlq=t88rpRbRyGh4*zAGJO7t9SimW8rLp!i_@$i@o ztpzIw-pd|kl&*yA*L;$V`n6a5mmz7)qcgc_o(9JyK<{smSCZiz;Se@9B7h$bo6H6L zQ!DfQL*6;_s-v$7bsH@3HmfzTPU@X_$>}hTY<3qxKV~_(BM~ z5s!>X*mbb7b;2e$&td)Lp|}k8oH<|5z+Q3ritd3*aX1&8j0?F!==v!h7n80Z!OGU@ zn%JDKQnt5OE#6U?DH4mOILr=oYwq@Sni zmXJ(!G#(U_tD|6L>s+-My$2?W(R*IaSm&9;bq?$n7q0e?-W6X6VQ1ozF$p^jR<=&q zwyex07G;aWDq{DVBla!WE-qrFws(qk#C&52V|U`AF&VoZR<_RAjOL709PuTt6e{R2 zn5!;O`pQ?$S$i3_jmui}G(-A*WxPRzxfk&enasTaD_du-MP94s28W978Ptj>`=+qA z_V&i}$I(KfJ%j!B=QY(B!q^&kXiUadg_RQ+)A&GC7P}VwtvUXu0SyWHrOW@uq#+?& z;eW^1kdUo-4E~@T*y*-H?BLkAvpYBr!*_6qy@F&zddwD%;{{jPLUw%OcMWN^h2vQ9 zyRa8OFkNopnCD3(ew#}CaFG6|%Z-Cxd#>m6QF7bAk}j9Q_68x#EgVZ=*O*UeEk@vJM!UJI@$7*vblJ}FQ{>5^eBq}mJ<-wt0QA4#@u2v&^H*PV9 z9**aeJ@8C3F^*JTSUB!rib-X!P$HF#o!NNaU zB4E`Wp-9ccBVr=;8CcmmQd=ixtUjlf&5H>iO;_idQ*}1%6qhRet0hKN!xReE8F)}k zus#nfui#+C_k;JCgLOCT)QSUEU6XW*4Em=c(yo7NVI2Ej~`Y- zyGddXg>7{_JSJ?Pgq5wsmOK(GRI|Zowy;S3PPw}|VzXeUxan-5tqT&WDZ$f|%kVqn zVKLF#5mvU2R()q8oj1Dc^x57LT}tgYC(D72;*!-k-f^5 zM)z1QMHavwGiU7)*gGz3(My2R9q%`_iNg0iJWM8h--VT}!2 zOIlxBhhowbiq)U+n3!1o5mvU2RedKv9fwt%g~J7LJwdiR*R#MW<<*KwV|O&3Np2z} z+B1{Hw<97mNoq{+6y;EVLp(GlV(Y`o))Ct=vD>UT?#0Gg@6wCp1+s(9Q9A&3jhn`5 zZB1hd2GN|hFCHKhxKG2%)`3f2Bddz#Sh5Hd8J{gO$E^x`#>K6@Yh@R+a- z!phcROP+6fX-(ueQ8p@ia`z^4#%_SE;xg9W-4zj6NY{BS9v2g?ufWRI;o35>>lDQS z3#I7U-JhFd^%K}6E>`W`ThZ`?0QEyWA|_D(4J#)ArE#L7+&CKI@4?oPkUMIJbhow1 zR`}-wj9T#-lU9hMAM_+8j!EMQq4 z5gFr2tO!R$Hcv{MG3D*{fK3hpmj^|5gS}%ur&P`W)GvQ;;R(r`yWmkV^X5*?LFwSB zk$UYouE435ODAs zJ`wUR#v^5tcOk57oxGMAZ)m8vBrBFfd$PIVzClqbUjgs?=HNXHo5lsNlNpcNM7Vnp z50uH>{jjoi?h@DJ>KU)*-pb(K!yVVr{>2=-Kf|7JvHM&HJ6hrrq3%sQP9}A)!^+mF z+o}1WH`DF(6-wFa@R0akD0Usi+`hfpPR2d$#zF#{T5-uct#jnXJ4NUlgU8CGZ#`Jq zI(_w8FG;hD?s9-!wvbnP*@MiX+aI=z3mslph<;pU4(}9$2y6S`Au?Ip3s$zyTD_K4 z5^FuhT(w&0Er_oXVzbBqEv!9k&RhkyjmzBUJD2EUjUw!o@lcuU6=7xT>?Lj!55{)+ ztf+tE6qOYBRdd{~hn?c$md2?UW{RtOLkPPDkB&*$Rj{&k!e+J@#|4K%L$&()om^zc z($CC^`!Vbsm$)-Jm*A4TA_P8-N6RGeNm$uBfr;go>N(ComMqG?iy3TTP|0=wGAHjN z*fB17OFB_Z!$b zE_xlD#3p$~lHITHXqf~)2P<1Au+=2C?rMF4cFyuMmY=%ZuRy-$Oydc~YC@tt6N(N_ zVxt}r;#R?U$tZbdQR+HGeoAHy_UCf!=3HFSe?K(J#r7jWbcEICgQkQ|1ty9-( z607*BPGa-s$mL+exX5*I5*x9I@OBa&B$KxjU}fvPwffNSBz@@rk~wV`!*+3L>)?le z#UR4kg?NZe*3N^Kt+SSR-Z1zOAx?$WvelZpq2yt6&K`uV;&PV8nO5f4)`mHRvHS7x zn2g;ED_du*)h1z4=&as91ncX{w}(HQ)AlB88ke>XZW4~MiE#Hi9w?K$S7BxA+_gFu z;aK zNeBCpIdmVuhH;_m;Hq%MBEsAIc#urq-h-9@19&?nTXGi1ojTllmhnV(qL66MM7E>6 zDHajl#^XUUc^d~STj#CS5wOABDcNdyxYFZfMbYnqd)Qi?!Ok_OZVqf4H_LVK2w1F9 zguTP@P?_u<0xSPVuqSqKx)=V$vv;~Vd#A#-t)T1?qX>IT@lcuUEryk?vzK@UWiX2+ z)i>`jXYK2-OLxi>y@EDo29S190r>)g#hiXr*=*VkF z6y7d2=j}q+F)nW%Jnazmh!A%k9wn2wb718apSUK4<{mUB?ta*@6_L1zM})Y0@hF+Z zeG68$PF&*kUBTK%tz7Bp&*p1OhSdJ_O>^2_huz}RHr%=XH0%!{?NvNNCTTCj%GODn z++yrDTy?TNxt@NNvoX6FPe|7j6789gRy)U;bcay3HXa|7veB@zb;?@p!*qRI>=gR? zYvN);Z^cbiZ&j-;?PHGIUa)c8)Yid$m1wnCanUyQ61B+q^3?C(!M zlqHoHVPAu{R9>|70&Exa(Tp4l4+R?x)t8xM)FkyikGGqd`kvK&`l&zs`kh-18#1}P zxI4Oj@>xM))!mI}1uF}QG-d_lEgku6iYP=pAYgRiQ82;y7)FltiU07~8W!DCY%)kY zebg_zR0$F{GxQe3#5Mtt%wj zGwGU>X6}jK*Sr?qcqT8SU}fvP)c4HGxmKy{9wrsFqX&nATgj9m&)(+r>c=Bt zlH|b3)=8pSNi2Kh3q7Lned3X`QvVP)$q(GgKi zlx$MydCHugCtzc^^rSi>@jmw zg-znJlj=;2*g!aX7Y~HV(c7@Hb&kf9(U50gQJiRq!DzxB#*?xwghYELWhbOL7K*w+ zC>o2$!K7#tSlK#7^c%)-X+aD>N1F3<80-!=4W;@GL&i_YIT(+CNzMVVasoLT8*=2H z9{(f1hJ@T%^z-K5a?{@nvc61%^U4dHQeml6Q997`%*j0memY!ok4Po+$-oJ+XW~s~ zB72&rtg#;`^&KH&V-U#r^`a+FQCRqvISY5yy$sw|Y$dK2K4iZE&cTE##{amR=Sut#;=It`69SQhm$h+eKMg6_13;(#o*1b(TV_2GYS`uU5?+_ox-tb~OiSCTtQn zIi<5|kYq#fsN~&{Gw?u|98HInt#dRfE+k%mBRhD|qS?Ym};<9vd z${iiGg79=Q9t@MG`LMEep6a&*DdVTATYb;pPV48U$k6FBbD}PRt+GWFF@yGW7vaG$ ziMjw*P9RESQ9!OM_)|p=-OcW9E5wPV*E)M*X^L`Uspgzg z>&o^NbJc30x6qSw>#~j)yWJN=HxIr9zn<~$mK$xWgGs;D1ymkP`n4yau@IrN80DQm z8Z~#gJ1|b|DnD+Qb0ecCRzts&^hy6PxAE`IZ5-HYOyhV)aC$2^%jI3gJyHBuU@Gii z_3OP38TViQwDQTWftl{#e(C;gmiXJDs|@TaejG8doA~qmf!)17XM2C{A^tqHYhX|B z|JY0XIqOK?s z(%-KuAv3!FOf(*=B*RZV8WOSuQFFu%-#6YXdVbU82R;U zjF3pEn_@DP{_H*0&!i8Lfv+erQE`lNU> zGCktE=&;ypRxDSepGNmFhhs0?+1StQ6po(uz@hj-d#BlWJWNt{g_Q%0Wp^>tljz(> z_wflx^_DA(bCrB#wYV%=hYdMMswu)A#ZQDOO_9C#X{DM>UY!sKKcIBq99~7x8@OYR=T?Q*#M`~h1ZW7bF9H=K@ zo47#b+SJ)eHz-bzoalGvbC$am(){&>56qc*ANGpNRDYY8qLu_t zPj2OS4-blo);qBB3X4{CL18Gnz*$nwmc?aJBwxJ}&Kcr-O$NVI3-)-JTDB?PT; zcu-8VHiea~qm?wS@^*8$JM6Qh>cbp!t`3Kd;-;*~cG%QL=@CB&REOXZF`+sTR<;h+ z771OUIIvYHiBtSanmW}Sr=_q(T%59P>H!;05Rew*u`ofZ!O96BX)IXFHE(~pOG82~ zVvN@9!DTD_C0L_Yyra7i9IU*5zq4O-=NPZNi!Z?CQg5LzuEOzC@Jk&32D+xST7iE; zmt(mC|ClF{xaOL;KBn{CqxlN_*!WZ#Q|$OH*y7;zmFw_tz|JwB(unDDM!gt(Q#VMi zd<~C>nJZsu4oC+V<#%mnNhViw_X3ISeeN1qcQu=@l!wa0-ilba(#vkJkMU$+T_KUi zWPrTmBatgC;6WRQp5|5&wAR9dWui3-Rwmu>>YhYmmP-A@(DqFktnV`wbA!3p6wwo#vsDm?s$ky-e$qd)_L2eDR05$*twpX!dc0jvjwnKT+Sj_ zu(yY^kTHa>empcLUkTIAx`wt}WOM2Nc_kC92-rLeMf z;u1a%_{026@Zwg*dYh8co-!xx3D_$xX=THu5!RqB>sM?&Ta}>z?RH#Zs;_*zI`L&Q;)UGY9S#*f%b4pX&s0NiGrc zZo=bal6M2FY@NIr6FYK`RXp zX62WuekT{HGqm!4#&d!$A<>>WK}S~5;v6Db>|>aV5hii}fR(Ki*L)7@`WdVhd7~1w z=bUcN+qAav){$8O^@q?l6_1cf+cvPWb=sPLfpXpSmeW+s=9^=7JZu%W=j_NAsE{#) zuVeAhn0(EHm96tNrRkVVT=L@=W*5b1l@;3y%n3UeHj7KxP$#AUiZz6>v+>}VjGX~1 zTW75KjFZkbv$Z8d>i4Jn%yGL1_Kk~MM`oN!E)nwX#^Yp?_f1&YI(f}!oaEA^*UT|{ z1vZI`Sx07^@s}yRga^fB>bJ16b*8p!+GDz@E4!%Nlk2A61lHZ(c(%EgkZ8|rv)YMH zGwKe>UZe2%n53-^D_bXR>!zd)SDkE6uBTt^DfcvIYTwyrlahxpzY<&Yoy_9j&()HwUny1Me32cRMw4@x}rrqczrIGVek*SW{f29;&`JZy3B{>h`cIoP@Q z6hofU2x9?DVih7Rwp?aYOM;+e5ucOrpqK;m6PiVLlFQySr|fmuE-q!A%VlAQXfAsd zkC2Jl%doO_)TT7eWwPjG1hg>+8mF`MgakHO;)2HbmXlIClm1Z5*2d#wVm2C9wvJh* zDQ2_|Ww9Ouu*!(<}2E39lCx#pc{q>f;ix3W2J zMc6JbZ;V~hDe)F@h`?6BV`ReC3oBcPZBo=O>dt$0fz0ImI zz5&1D@$aW=P^%^1*L0bdOTMpo5-Y-z?}TRQG^Qrw8V4CqM^+UQX-r4Rvl>Zr-djI6 z$MA>b)0OcEnfbKKQ%(e@gR8*PS{suQ1xo8Ddms%r~|` zwD@?yXDDnH!D$*EEEA`xurleMxA7!8wTFIdreV zhH;^@G_ng>MKawhc(6?FUV@dabJuhkxmi`m4GuOQ(5)*Z+A}Bpyq#1h>pWiG)wNQW z`@ex(R~LWCZy0OgF*D&C1uI*Jk29^HWevlt%zK+txF_rzH}_eZR#3-C3fvu!nMvU+ zSlK#-yDLS#Q4Ig>~SR<=$gXZlgf(t=l4n-h2? z>=u_mOVf|KPlUM3@kp7(T?#8(Cyp}=6nB5-mN*r)7|~Pa$UOnu#YN82FtA}1VeTwez{=K{+lJBalCqJ1Gw1EEuvJ{%(%dZttRu%4l6)5rlgZlKu(Ea5ILj-cs$$_` z-GoDoC%Rh*iS|r%EiJEvtRgvXEFLVAyG>wa>)bWn7#b|Eh>P@w+`II0RrRK+BhA4( z40ep0>dvq;p9p(J$U7L1mPy_Lu(EaXwrBLNN|n2C&Rb@V-V)d{E_!F$K~FJ@u(t>g zm&slgR<_O_r?*|0i@nD2HgocBfequ5XQ{UhSw*S!9Rm8AE~xSl&{sW)M0=CZa%lUT zRD1Bh+htsf+JiqZH}U(;O>9T)LGPvTY7gG_&3f&@Z@PbjYY*Nj{*_vL@IqI|t3CLV zt~WA)_}&;LkcWMHJ6e12U*dOS=QEhE@yK*`?ZF_;(4E2`={^?u-hZGgA$u49v1mM5 z35TD3G$dpzuGbC3ZH4GvMt8P%IfC80WP-=fFFCl=Vd*gITGFcP*+Kj+Y+@aZktBi{ zPohIzPxESWn;hl$==&CP)oP))(BqvKJV@N2r%Voyfej9VmIVjr!oJ1l74nQmvaQ#` z0;1|<#g-aOc7lw+=isq0N8pF+qLF&>w~2{#^skpDP=SnFfeQjo>?g{O( zmf|rnSy>D#li6C$lSrIOqz=`DWT+bTF~Um&cZl|3gAtNslNXX&QAzmPfXzR@4cwOl{=aib-ohn`FA4R(ik^Tex zjJQar+m*&RK}h~R9t)G?-}wL}t)C=M@KeuvlY^{B{ZOjWMoJH^bGR`mpAr(-Sd|M( zG1dOGg)y{KT@w$CNzH1oGRc3dcoK=3Cw08)BefV8<40@-pxqs!w1uMeB|I!9S{K90*3sHF87*2`Hayw#VAw> zOg3Y>Me0rPB;}Fyhwt$_Y?utf$H)S${cALn68) zt05s<;eR^SkdUp|7G7}->96^3kvP|gDc*cP>~a8}{D^)pY##GLjij?UQa`KS$`+D6zl8_J%$|2P zhoys`0cN*wC6jBEfgKV9plbb8Qr7*yly69{nv?W0Zg}jccJj)PFpegPc-(EI&9-AO zNowvH!R$pmY9?kcz{)}6WXJTpCy|)FQvYtST`L~D%hjwmmd+N`?LccEX*|6cEhN&I zUQqrRwRBVDPw|NGwgw(0lebl2W$V1{*owE{G-ko6)Kj05^=6w>w=3)#xBomXmGxh4 z){Ak9us0KrmC4==SlK#zEpwfdl^w7%CS^wL+;+$#++nlXn^H9GASaI-2hi+#(EKg2&5b@FG~*I)hVN zF&Naw7Wc#`+&ym2-J`HuT<#e60;V{+3pqqsdkBw_$=U<3vUS#GFj))kN}yBP_spSt z2eyq19peyi`p_v>5&GW3gJsh92CQtIzT{8-L1nezJ+2m(I!dY=H^+D)yQz?9&qVf= zj&`wOiwJES;XyKK+W=O!PFwOP*=E-y9Ab{zfv{KH1jo3#FU15WZ%2q;im)FZA(OMc zVP)%_?a-=ErS<*8A8Hqy16PAh;{wMh$ebo{r9!QcD~jx2$yRbDQMiC)xP^GAO!7*w z@_zz(HK#J@@6YdZVYx!=R$FFu%rN5|xA z0<3JEua+xxZYh7c1BKoxbeuVEN5i&pGhAm^=;Ev*+3hGiSSEc(!phd^YdM#7Ee)2S zVlEdt$DF-0Vbi$mb#^XGjUwcohKI@|ZyBs?oxGM`!CXU&xo)SZ&L+NPj@+HFTU_Ki z`xPwY5Mk|hJVqvKx53KRS!=n=M7cU5JbifCoVFKXzqqt@c9)6b5#j9xJW3{S&%?^r zd22ay6(`cg%BMJm=nQr{`MlU+lC3QnQon(XKFW9+v4)Un&orX5GuI@$2!*TS0W&FF z8CJGVVau5-x!+({bL3{iK5?^MXJ@YQ*BZ>gqhsSeM%aZy{=(RI0~O(d(Gj0ei3Za%DRow_Nls2i?2*`8cazuKE#X3pCsuvuK*7Il<2 zX%HdpB0NMUX&1oC)=6tQLrq9+kD88N{vUVS=oWPpKdFHYx z;_a8J_YXK~NXV0Cx9c8WldbU2rZ+T_%UmZgNok$BWoXC&JP!z@jc~IO`MESm*b|k%e#?@ z$=4Dz9w*%|w2isHTj@&37k5it3HjpsPub|j{e(#?#Ebi8XJ6b&F)wbPQ*tU^?fcj_ zw_8MrRm_ZkbKOW=y}4OkH|3jqq9>8~<|dzc*Qt=;y}P644tEEa0;%uq8SQdzWc0*p z=y#HC|MTWHey+KV?YP~>dlkIfZNB_W{dSvc+`qxM+gvODm3q6)5?9B&-R4SNZ)Do= zy)jA~r}*}E^md!?h~L?k7kOl>VN+A54qah(% z@mbwK+*XKw)NOp-22`_#O2 zUS48ci;L3M6u;MSEWMg1k!WH&x)Seg@Vb&&zo>U5d$@mtyOKS{zf!xBOD!#oP?Mn6$zcY=lgwi;L)0KGnh4v?V={^tn!q3)~s5RCk{O6(ZNF^11 z+R>1Zt$1BG`33#SI-R{C?bEIM6Yrtd??sctit&Tq%vm|wxKupFH1KpyXw}Os)+I(l zSMwy26J*k>tute3eviv~2hN$dqg(p%z{Z?VG4>kR*kEoV%eY+y`xQT(B+q8#keC&I z$%%)L_lJK2TIj#T1Wl$?SK!TNuB2Yp{OKo8ST)v~nm_$5sS(XCX?fBdhR1PNV=J*y z7>-R32E_x~>pY6bz$D`#SUJG9*655L@FY4{S8Z$zLh%=|yf0dY%qEe^zkU?Q|1tZW^jEn*NV zmaEllZz)U8o-H*eXfbRNm!LGqJ&FSapc)y^b44Y&F zp|A(E8@myYfr-#{u(EZ8;&PC@_$mU>bLId&16#xe=;#!CG3fxs=cjlCOniO>D_h5B ztC%i~-fI=!9=y^q#^dOJ!#;5tIx$6ts12ku`zIa<6QvJfW$P%#b!L%!g~A+V%sJXt zNVI1@_SqCUig-XEnv6%mglH11Y#pM_V)9Y!rAjB5<8vHr4>t{^Ih}7rPrx}EZ$A^9 zqhRF(a5O$f$?sYI61Rp#t+9}KiSCk?Y=!@s#i$hvOK1dN zZi0>C64kaGrPx83x&aS}$<(#5vUR4Cb5wnwLAj)iqngTXcT%y{Rqe5m7o_>Od z!{q6Qu(EZYwoe>KCEWKF&Q@K=8IRFFhArc=RchCWD!~}S*+1~mn4J9`R<_RB)I`pj z-=Hzg9I>fFqCL~VLc0*7o)EgW!J}f*wH2&vovv*Y=~Aok7mAVI@pyB*j)m>wX0U;F z;T2;F;cFfq7L%{fz{=M7N*;BIQ$J3T7IZwd$MQMJ!Qk3rlq3D}Pz7`dxebj#jv@lco?{TfzYp*eEzpinqk>$AplzEMJ=Jp=MKa^x97 z^3m#eC`^t%2`gLYDCPi6BOet?qPUX+((dLU&4NARCZufp5|Zx(A!%nk7A8qM!pbW& zN#5i|A*tV-BnS3r1t7_Hf{@gW$HF8j3oBbEDP}u*BPZ2M&8yYYE;py?QrIUhO+D?) zOVSNO)EDu1m_&`h%GQaBIU!spDmSQ}@qEl2rAJ_cxG3qKY-qVTD*ht4@8N+k8Tu}) zY@MOxtW8uw*umzA9RNGV&0T}-8d1gjLMYo8kBmv#r(tF5lubyaOkQLW-hi;koUAJB5|^x8 zyU3DW5SoVYXqYq&!phcZO8#mWx~n3L(@o|$-2mIf#i?yy?LuY{p035iVe<49SUG_w zje~UZES`S^M?*rM2>f32lN9Nn-dg9tMo~n6;;D4DFPby_0{m#W3?FHl5~Gn5V4ug^ z&II;ZPg&#qUh1c{#zg_hD4YDl8Ew@Qj7Rq?3yJoO?u}OR&c+w)ioBdFl*pLm0|CJz_6QC0niKDz&UvV<1~l zzx~ZHr)fI=5SWMkdQ;9VnFK=!SJUv2m|RVTm92BN1>wrcRfZeL~mEjgNkh`a&#=LY@H+8$0>(I!hPID<`i838^on3^*&CqfiQF~ z9te}6vtecH4AERvbV_}-{_K!b$`xx%lw9@soAG(j=m;s+4#L!0ctA|1M#0L~nc9>xH9VN@c5;Ji zTH4zjq&;DGxM@kZI9_8b0s*Pv0ikDiJPIZ~vtVWG^w3fEP%a-o_b-_Pv;a1U3sCB# zY{dq`P(L0BlOYFIPGCr5Nn5Up`%9e~646z04GGx_zhIh%glxsNYN4ddSLs@*%l+TL zwf?Hw_5P0={U0~^KfdPu2z+&$BMRni+1YETCO0pbSKB%EQp4}UuW0=HzQt@ucO}ffth2( z`?SdY8+@tZV)3ukOAY6`I^Ly*@9KIZ6NvAPQ3CmyZ*Pjr@~y8~|I~bR%+Gv{N48;I zYFOKuo|jrvv0G?yKoa$aL;M4UGpXneda2hJM9C1%8o>G`?gG z!Ns_zv7c5c1fNL*0wsFd!(52Bo=L=cuyTN_O!?<{5{Vfjb#yi*=)_-M_^@b~;pK%7 z!tQWW$6={ZlXz|6{dmKfz}yQfTL)${0!*L3CKkQ4@XzMNyb0UGCFbx{h^a?TbIj{_ z%bCc$3M*SjW^;m!dQ)Hc6Z^&|8RwZXLIRsXaH(l=Nh)uMl2L;v1D5sh<}=Y*8&R<@4K z1kzQ}Tlm8L)sM~Dc^YLRR z&ID#0tegOh#s?$$&B*_$I(zNlep+9?nq4`# z5PnVLQ?qMCt1nN<0lu7+*0$dY0NVd+Xd6edfT z!^+lKnw*fAdL2j1S<02gxr!)QTPY7HW2hgQ1N9W_6&I)$^=fsJ6Lo`7^#mRdld8vH zW$RQ;NuVlx^IfkfSzA^wjrhPXlun>mWwLAW{$4~WUt!LafQ%T>&^oZ&J0Y35ulgUzzYRg4{kt0j0qOs*Ee z%GSBsGGR>R7U}T|J}G(Xc5|L?gH7V{)S{w;&R8mB1L5cvJP;;FH^Is)E=Pq@97ivh zbM!oHl1+}J4TPg-@j#dy{Tx=d&Qa3$I`4v@aL=}CxA7Q!Wg*d?F?buk*TvtE)P;w@ zWas1mJa&@C-X&4lsa}}Z8z87v|6c@p9_za9xx~AKG-HMNo`oIRE!`j-Ghh1Wa(~L z**Z%z6MD9aQxv!UEpoECTFoid3guGPoeAd);-ZIAkGiGc4RgF+gPr5zwJ`nuu9Y{0 zxL5G#n8dvVD_bXSXFhRmkI+5bv%smT1FQ{tjAwr93W@g2{DwLLT-X}I+gf;VOx{Mp z%GP)}6Ll)-;A!~O$A|_e0U}fuM zCCv)uO^e|{Sjn8H1+Yh4p4u=glr9j8`tdlJ6gjZ6b&8T^g`o=;!x&v{j?tB{NnDKD zFe?n%KsdS_4}{6lrLb}WM;a$5<>5>J0G5V?JOX;I?x73W3jaKyQ7igQS|N^r-rw0H zpqu$eKxMg%a-|wuJNu9D%NYMAx$(6++4%=uB<0D@-+K~?Cp(i5^yw5g^-30xnmgP* zlvPo6)hF}l5T5DW$mogH(C;KU;}hZ+V*~#{LfZI$&24N)^=$72@TzA&l&M$G ze$@RNTs`~y;$NxNv#)n`yz1Fwb-j_v!uQ4~S^UelH>rBIHj7Dh+;?jmilbZ<#VM)b zqM)CUxQnjalEj@niNqJWy(GTVAn^k&68|nqTzlXuaecyoB=Ix4-bfOCZ`w(sMgiB> zb==Esqj58}j=R#kQ96sdPe9UH(3OzG7e5zhJVeQX-|1;c$X5JLx9fFVA%-uX>}>7! zonnSBncQ%`Q0~h1ifhA$D^6F|IYpFKad*m(_Y;(|$?MjXAanz7HLkf?ml6rujh;ke z8ccUw)4XW=n7v(}5Aa>yzwWVO?$fZjLDwNGRy+xN7C(9-&u3(xU|~tg4n90}b|gBP z_+Uv-_c-2M<~;3D-6yY+yPH4wNwHpt^5v!8LSMGGAhuHG2G#E-@0)}09`0=Hwi60M zy*{o12qbs{#yfcPnP9vHD+i5}S^o`BqH~2R#>Nv=Ea&o(QkCN!bn-+p$T%T^O@p`@ z1xTW4ir0xQGS zesT3@wtu)g!pyDa%-jsy#AW7)G?3LHCQ%M({R=|fRJ=Q9s-l3dtv1j zo1|)PaHuFcG+KP}&*mh(37gevBsi_BhpQ{OA6eedu5_{+)8;ZS}c- zhWK6BR5w6We(s;{NoY(D(_bW5>tNU3IdyZDA^dT$t3jmlJO9zJSOec}J~f`=U7~FTh4|IXOg!lZ2p2MtL4@Hj|uZ zVP)&&jE#~bKSoBr!>-Y9oLE*B64;oH3(Q_xz{ptXr?i#vwlXQ{f|adPGCo2Hy~H(q zv~Z?5DKlV?xTNf_Lkf+TWR>Z7iFgI-J6;F{kq?`0;S*+*Kom z1u>Gebp_r^CZ3mh${MRHsn5K(h0Z$?^JETs_Cb6^(I=PavEc3o-mf<}6J=h#>hS*b|6E9Fg$UAsb znS{IrD_bXIvv@)Zl}hBknDGT;M#c$=_Dq>RZNP{hDxqXkys=D5HiDI{Qxcy?=vfML zMh=0^=|CQduQGig-c%+b`@zcA2^klgM=Fl@*;gHvEH$TOF>DZ*lK8Wp1^0_q;y0jR zuS6qQl1plMbD5+pgq5w65?Q5_=8@s+t>&QI4Ew_cWpDj1M}XqRN;tU@Z!MFP>tJQ; zoW%DzWMA=f=8!xCo5O{~VC?DzN(lKW-c%+bKZ2F56S8q^pHr>nmC4OY1I7c_f5YBz z0og-8i@0$TKK_Zfl*z}3uyO()8p~^Ph0b4y(U6F)&}m4>R`{E3G$dpzrs;lO3${`1 z(AjNN+r(|73V)=GtC(^a{N}~KHg2q~won}`eit^k4Dgg&s1EQXG#2^NU(_8vr{Xkr zrzzR21bZ69DK}6pfUROamXSL~GkrO_4>$ESx%I;qcpE|@AE&Q0 zf5eyLKE|%vk~c45k6hv-PT25rDc(NjbN(W%OuDHNPoi^+v=bE|!d511cX>iI&~Ul- zG1w+<4v7CI9ga%L0h#cB3B^lN!y|Z$naF$(R<@4JrYbUW??)t+{MDS4cVTz9r0j`jW?5t$Dd$j>v(Lg;6XQhguf1NvA{T)j1>~t*o%uu{JMTPWvI!7hD!3t zCU|3+plk>$TL(oQi^S|~In11ngJD~^bj0u1Po^V&Q_BH(`pc&oM{yO!xtD(Tv}8m5632M3S&h!yC!u zbD5{CG2u;pPPA40^A30Uk&(@v=1>22+*sx$DSm4U3PxR_v=guLxFvGo4)ljy*_Q6BV<&vZZomFjo`>e`4!qZ&O6yzW7(i zjknb*@K)k?VKb2cQMn4dr6-}$DW*RPT5F!L_lSnM$~y4Du&Y6&avk^p*evFQNmwLw zVF|I4i9{E)Pu9}f7jGXklYLtE8K>ThjZsaATMn+8Kj|Ud$=Hz&c?Cz}$GOd)bi$hO zAl^vk;~s#ONypXaNpx;>GbzG_OtFb)t8WlZG#uqz3me7F2=Rv?TX2#PG)WX+!JEw_ z=gYA23P(<;e-DJ+W<2RLap1B_=dGL4RO=Uj#Z^FtXFMY$4 zNX!VGBBXagkFx&unrN2cZ2J}19Bx)HA;b-o5b_ez0fOSxZQ? zXXtB2NX)^5QFv3CgscuLTPGy4de=DOHdM^@h+~AgTFt4H)Vsg;G^b^E*eGs3(OJDq z3Yz4WS$MOVgU66Vf-uPhT7^|a02=}O2H?mrBT=P8l!bB>0DY{luifdn1Nw9a-UQ<`@qneHJc z?)2jr(b_a1bfaz6m#im#7dBA{MmmzNwLOUr^(D=3nOkF@Is3;f#O(qb8U!h~yzB(~ z6rUK#GZ~o{dzeLL1ecPGjEjtdcfec590g}|AFM`dZvI>+Hsa5?w|mtJWI}Ncth^#Y(Nm0r;z4sL?uTt@ z6BIH+0>!;}8<|ji3s$xcMW}n}5hsQUrD6BJEpcPO;&LS~ig!7^g;SKw@uoQ>ufsNR zApyIW};{^WGx=rkr&g2`;Wu}n;M zg_W&i5*n5|vBT1`IUPmV7A_s&uvA7!peW#NWJ1vkD_e(RJ()XthpSF@xU@j&O|CI# z;wsn`E)z4c-lP#ALE;L$iA*FegO#l#v8hC&P!dZXVxc2f9O}&B5gx%qy zk+55!@hweV+{%zZ2_lcs1u-jN6Bim!QpO93_DoU|_D?6}j!=jMi*a}(nOJNJE3a5s zoRTd%rM_CfGTNA9j>X}yFWig)W6=naU~vfENG28s!phdM*eH}O3Z-nXdtAjS^(;}y zIMtktr6FrB|3ueHUGD$fulv{fpY^Zzf86N*xXJ(VHSY%(k=?OQWl#y1P_j7GU}ig+ zl+<8l>y)e|DIt5`zitl4t*|3pCU(S_h`+ewX1sY!6mEo-t)mcH?;6VG#pohCI9#k1 zhKi0@`%<#Tugt-C4)%u&2Dsi86Dr9V&)|(^V)9d1**Yen^)BB#v5!)rW0i{WAao@m z(VjslxZWirBvAYtesm*DDExH~%(ICe0HBhxlG5)OwlX1^3@clQB(wrnx2{^N&19?n<;CvpYklJ8 zEOm$A{pMiY3tPhl1DwFBQ4%=5g}0Ll$DOdUbvV|MBM;G;6!PjZp4ZK(cop`9OT|vu z6gCKt;P5iuKqd|^!phch*j(aJs|=TVa_$H;VJx~{)p(+^wvcGgL?!@SG=`MP-eo))+d$>@{N9uC^%ls*S zgd52`FUQ?q7zvRcrTzeKBJ)|l4=a<*^PVS>_|B&eg*)?+j?vL~1fTDYvzd zusic<7A#2%6Y=IUQ5g>_TSvwHS|i=7x&1`8kgsOR4uE6KIhhOF!|g1%UuzO0C6LU) z+scIGa9G(oBwJHR+;TbLs`G@Gv&?xp9d?S#OG53c`Y5Sd-@6>)B{pb+&Z&5_ndmHq zm93+*MFKj#1+h6XH>fVr-eu0r9k4}QX7)t~q_Xr&wh=9XvTZlKBne$4z0HnTt-Ga!;ajYl730QDPKb z`>ANH;h^eAuxH#P)14+$31$$up2EXn!u15KY#pxg32@2MW#J{~f11PeA?y(srlV4W zNd`~g`5WGRCOm(Il~-7JWQnsdJd+n0XQD|$B8}-C?cLIYM+Q&enSeK+3C|X=vUPZp zy0zreXJMF*Hizjb*fVY>O0Qc>HiN)*BpwbEuEStu>u_zJ(5=;rriD>D(;TJKV28LU z%}K3OtA|d&S%x>B3CE zszRbYqwCM4mVp|v6LeO_ThBzN3s$y{PSWxtspS?%Xr?(rGhnN@=_kGAN8$lNX*wPS z6QyaevUQXuC1jyU)weK6J?0>t3>(D->DbhAQN#g)(R@4xCPv4@%GNR3G6ADdg}5+6 zmzX1T5o{6{p}DCc6pEhUa{=CdCO+rF$}2EFjY@K1d>%5#=Ko_GXC;CQ4YxpfRr>F#b#HA>`}ke4dXP*LoV9TXd>m0hwQnp5;Q*d;DS^HR%5;qVDSf5ih} z0`xAdY#pGaQIRao7*0ZymKaaYCJ2f4OwQ6970KWUJX_$+XTmcUR<;gL(#nupzA+5Y zQRV<03H!v&Kk2OusRj^;4#PuWLUb^!Y#pL;30+uF?J-QxY3B4SgAL-+b7X40R}eYD zW(nSQCN_&;W$V~%n}AJh9mp_5x0^$B8*CRBqWP&o6zc;)>J~f_CQ>)S%GQyZ+8U|Y zso4wWL_H6?#U<**b`aIDfdKU^9tabtpTo-5fl3-&%Mz2}#I)*C5^q<*5G`SKA*sVd zW_r@T=0!dq7Y#K$zW*p}7dNS-Fw<-114%Ov;gK+rdH`0ojuiQvE3K?07Xy9IoTqnS zuedy=@Hscp1On4rco@!!#pth!d)XC=Mg{7W!mK#PHC4+~G<*Ws}+!MYk&P5?_|(Mhgb`RfoG647-l4GGx_zrdx2glxrOx@D$yR>ROqYZ2FDMU^TS28xZ=C;3mgBoxdybVW%{-*v$B@ypF9bTg|GD2KQ~qK zU1mH7SW8HxF$W+IX#^~!6M&@FG*v?P_&9MlU!%g%T-Oj>q?l}V4ey(iJR_0gS@Q;ch6LTS%1 zU;U!Rh6|+*>>IO(7#U~>UkRoV(7N%kn4o20W$U1++db9%CCh$>!MfZWtV>~^xL|=R zri{cTO&}nB5f6h2(g>`)LW3krfQCVO%p9agV4v)PBuyY7eGd-v(* ze}=(&*Bq?3Vc)o5rQh`>n?gYQ6CM^5v_Hbi)*CPeGQ%GM#8)?}a_QynzS)4}FE9RM4~O;bIo^AzI-L2F+;9wu6! zhLx?O)of@kONNGtT4YXC750fsRQf}6X#xRh2oHk^(jcsC9i)j(a#W*!Xqcm$%sILN zwu#FTcrKkW#cOy#FuE3xf{D>rU}ftVseAU+@e-*a8pi48<~aQXwu_5X`b(X}3xd@T z@o1P>{Wq*^9V@jYl!{fPqG%YZkIkX_2W%D>D)4(VBS%G?AV~ckkA;cU|H8`Fky1MCk}v**Z$<2K7i*Qp%2oX*%1SrZZr#xHN&AJvoU8#e1{0)Dz{=J^QV+?fU7YZ+NuAbN=0NQX`^8OB;DwlsaT7IzfVCqY4il{HVP)%J zHCxQAd)cUn6CRH{=3I5dc5%5%e=(DIL9oi=(J-+(5mvU2)z(cuwS)_phKah=oTx9t zPH~9>OHDB{RoDgs(+D026Q=WFW$Q3C8%4=-reTyGF-Pfpuuoi+(jP@h69`D(#lv8N z^c`5)I!Mh{p476YVVK@Fhv`qSS6rCVUwKlEAVB>Q4}}TTA7EwcK&i)!)nR#1=`>8z zCZ`)u?lu$>?U~$x_a8EPxWEB|(E4}`OoY~fm8~PB9yV4Himh`R2I>HFp!S6==PHM^atkB1On1m@GzJleHm7^4pOs?Dxs>VVUm7gPSOuy zqqroczq=sh0zv7&@i>?${Qy=@KuM!Cg{*GjpK{lbkku_d=^e{SJhz;FZ3Ok^hhSLO zC_<;yhh6my<5|JVLZUsh076$;URZGRbgTc@l}aCG}Dpu`@<#Ve`7N^F?C~%OM;OTgL4+ zQ=Bn2^MjAt>YE@sae`tORgb%fjL{}!hUhtO7T;3q8S9Nv+;14V4VRg zTL){GxNm|HFAGbZO14=&+55~Hy9c(8%h+IgYZ4q^2yS=dkuh=mCai27x9MEm8YNZ3 z)63V)IeP{6jLTVXdpTtY%bvK4+oQVj{&ia+X>MGb1tuGiVxv)i|* zJ?l-8+>vZtx!LpKcQyV+b7O8*ZuSehn96dqXL%AD>u2dNsjkr&6D!N7-+&Db-o@{( z+0`}h<<-R>{{{QRd?q6^S|z^*D;XJG(7q4drg`oA8s0u;BKxZD<4t{4Yx73@UX9f1 zkkeDh6~*BjaYCXR>F<7N{>XoUTN=AAN?yZ}12i6aOvto5`x)M3CIvr+l}UH@v?tNI zMbHgZTw*c##979p?f-+F;bw+CbusZnrFi@cZz>ayk6>l%c&sn+kcCUb^ZV`1+1O4< zq%jktDP#{FHe{Tn|CoZel!?aHu(EYDLYbpsS+ z@WwI$nF}jh2V~t)?iel<^O3>F`Q~hV0XBup#;#gyxKUCl&ca*CgyM8q**X-V4n-C) z4tFTuF~{QDuq|9Hv^o?SC&?Fg;VosNaR;ny9gR?j(y%Prq5Q#|j^D%1aOu$MP?S&! zAiu*K%LL>%u(EYPwv-);__Vpmsni4>RkyB$KbDVlFzcLcJZ<@ukZ8})^kAJ1CN^r? z;jD?bnhDKnu=0usjZcfqjld@Y%^v2^>;{{}O)y5#C{a^rcEMZCgk~pL**Y}q$xM@X zddhhxLdk$RC4I0fTuOG+NiBYu6pK9GOePjNSlK!jp&5n=LkpvpxgYy7~RkMG0oaQWCrhYvMeipj%xbD5Yt z2rFC1WE{ano|KD_@;~OJ`~^0MOUnKRq{xUVEPuvZ%!K7lSlK!(p%I8viWz}yeva|v zW-}qtp2>~Y2*eMQVzDvaOePj%U}fuAgqF|bZ583=vqR0fI0&|dn>n2_O}`u}nb9u(EYP#>nwUZ$)f^ zbhjr*#vNZX=i{reFPm;1l@%Ll$Dwkgf8w^Huu z>-2_@%_Jp#PAw~HVmkS(cWOGq$}h}W`5D)zhCN(X_SG4qM&hkM3)$cN7;i6=n5SW7 z>*-{o3QEn}V3zgXw{mZ9)u~07R{zf&n18`Gae+Bh7nqp1DL5bD?Ph}W0jz8toKQdH zzHxE6WxFpJ&u*p&iT2EHwECe&q!f;=@s={-m*03yF6`Q~#z0YUO2{{IK zhnq~a*3#5)DJFCA<}xvv11np{WFy)66ug@SyfhqP|(R ztxP~pg_W%XvW^6#Sk6WFo_*V#jJse@xMa-IA;S%lB5?=aNG1|rhn1}(v4KP)bX{3^ z@$C2JSo{w5g^PvOM)y#lf&X$g^BcUWOgMf8D_e&n)S*bvqRVHWI@fqux~7n5&#-iF zowT9GN)TBMZ!Hs%RbXZ7h^!sTA7V>LQTg`2n>iZ0z?N`Rht_W9K`%yv#7=lCnMmva zD_ch*wB}waCw%qqGbbYtJHsVIt5cDo(h)}vZz>aylVD}*cx)mwhVV>&`;N?0mYWmu zCD#(wQSVEgeT#-fBu0GWd~mI=t=u(EYPwwCLvVl!%J z^*x&_9A8=V2;pPSWOO{c0H%!O=se>6jrv5PiU8FeMw$ai%=%LcbU_2 z2W$+N7OiyU(2M||JBk~5Ljku@(c9>T6BB-%5C)yg8FSZOD-3f@*GAS=Pj z)&U8fq47*>d2P=w=CJGp+r&*MT3>#X<0iRf2fXD>bTY8Ab#%tgb3fm?z+|L_jT>je zbL6}^Gdb8FE;CwHzGDI=u$+W9nF-4Yu(EYnLR+8ZE+l27@+EUfE{1*KLZY=xEfgq$ z<3hZtOgPSim94`O+NCyJ>d94WUJ0WG&JuOD^RPJ~55nef3DG+58;zD=azEZ)CMNg7 z%GNOnt;Ndg*u(wIpUnYz6Sjp5h}P~A87D#Gb-blaG+u?3t)mfIi)~mIU5nlLLgQ)9 z7$MP~X^z%ftP&~#WIepGOhDF#m8}C3Iy&JU_g01;`WjsWVm?hq^%%ELgv@-Rx-)_s;8`RDPHQg zrcG(AruZ(n7l{>Wg>p$;omT%S;;lNUbE03GGw=)CUFHR9b2Yvfwv3+8@iV;rOgerH zE7QE?Np$WuH93_IjBMPDr1Wf`7%?6T{~v4)H+AStrAf2|lYimuWn%IXti0l3(zpaf z!DM@LOtupe?U^zeU?QU>m`uUj%fw`BSb4?6q*3fr!Q@19Og;;n(}8Rvqa~OegSVH7 z$y`|3IwrDYR*;5eQ3r*S^UXQ=0_+Z#ll}AuE1_@+C}-gfW`c4$th^$Ea!R)7l=^D@ z3Mk((2j$zaI~@U~5iSAcF1*1^Q0{=0t%D-hW`c}DHa7ji9FgC{zHkxIS(^z5O5pe% z-c%+Wzk!vl!!aQ`RrXI&W(S9hwZf3N{G{BgWRrC+GM?;wN=US46nmI{w-XaK0cTCT z;Y@H=gO#m=Lng<*gV96idzkaG8*C0YwHVBLWV8g6UGVlYG1&=LwvLIsxJ$W8uk>YeY?i|& zbq1SA)C8L^;q7K(b1|%J9h>nnqZ!Y@YORv1IekkMYJOl&&G%uCxYQhCG?r0=CeS>L zH=7B~gRru7Xvj#WaV$@v<$ug+`3r0gmllJOjEt6G@@KrgOibQ{m91kUw?zegy2vSo zym~@t^NWpVN1F+W_RNlSwneF-5R<;h0JUc`^j2*n3V$RMmY!jCqowGwt;wI=+@Rl>tDZ|Rv z(IMlP##UBk{PHz(V7>~Q!v)4*{34?zm|Tyymx;+WuyO(>8e8Z>yYRft5*iZGU3eN2 zvK41}8~HROWGhbhBys~+i(B(fT|Rl>TJQF}f$RMrH~K$r@_#5d>$$BM?jHE{%3WQF z8_yCq4C!n!yi_z|Wcz++X|9qPsyIWHa*tE3mMc|xZm*hIT(0DY3QmtRUX)!QE~;b1 z_u%(1{v~o_9$7P2>gg|6ye~Ta%g77xjxMI(J7)E+fiH_#2j21|63v~Qs=E)Y+0`}W zjO8u@XNh0lzii-a|Dk)fuYIiWb&l(+-&ZK?8lJMoqfUPVXT$~O2F}^$4D5=#8@qv%GSG4ZXCeblq9=6B#M{rLV+O2D zy1eP0L}JEB9ivU67|FeA;iGN^(X48>M(^`ok*@qK*$bP)OzI;oM@Grm$Y=>BJ$QSW zn4AnNTgPO46q7

    =qY$#dF1>{#>_HQ#zU}%xSp{_J~VM%T?oKT1e0YnoICzGoiT% zR<;h!=22*hg~5WjVL1+&$IX#>6n2P<%t5U_G$bPv37G)%5Z-7eFb}}W)`8hH3QTCH zW4JeZ&m5L_V0XB%wA|R43`;0n0?J!>gPEYb0V}VFpfq+mhCvy3iSe*yQz6lw8IKVt zjc^Gl8{rLRg0cauY#o$wB%>5c;>vbs;jp+lM*Y-%h&d|t&Jzk&$j)izrnQ)X~W$SQEh{6%GAvWCk z+-#1@jj&5xR9fx>PDUjrYy!@8c*B|CTn#H*2ZyY&G&XoDv*u^adHE@94wn~$H5M5y z!Q@AHdzqL#1uI*}WXt&cBDRai?gRd}IWGT%P2%FxavyN3^b(GmVDll~ZYDN=gOyiE zY$7{i!@bhBUoxH&O%@XEnG%^{6N#E&GYM}u6PpRJvUP08impi0>Xz6rHOHA#b2RJ` zH`y4h=#robG)LjhW3`R0CT7t=Gczcw z_{-*;ya+qP<)r1d@#N8N5Gn!W1-!9LK%R${tpl=E6p+~6)8QUy^rgn5+%<$mdq%k} zw~Z&`5*s*yXH~rEOn6p?m94`wu?ak}+s1b_XJ;mC6F1eg+&0c)rx7A81Bkw2_`4w?PX#zA6B-G3E8#~DtjB|m92w9R(Ko9x+-QzPH*89Wp4DSIWG^vCUJQ&SgNB@6Ko#9 z+s(x0K3F*c8;#Q(WpNb4-wf;TBiE3S2SQf$w(TVD6xKPp(fn+|dX0fp;}oZY>qq9e zegHolF0QjRHc-eg37_xd4Q2BAo~OJboG_5xTEmD;_i&+@kKE@s@iODN)_5V&p1D@b zJ0Ba#NFFPRgiEjV8;3WS`Sdr1l}UEm$dgFS3#p$Vkdt%io4dhERH4adyK_C_OJ3v} z**T(xhKC6bhkfEE3Z2P$v%pE}I0SDx6P^QMW$W?~9_IP(!WMl7!{JJ?ox59pL2|C7PkkZ5e0@KZS z2uzr6gq5wsG^r^}u@wEvoTBGoqqr0unG!{f$O%5r;B9B(^HW&aIzDm3WKl}3P>Kwb zS6Oa6>RCxhtcb&8FI+lI{x|$EN0^xW6IQm4$>g{!<6dL%f3~k7QEMzE`RhO$60#M30SgTY*@`!G z%V@Z*5amhU?reFIF@AZHiqlsR-@=x}6(LzB0KsOd@g1}qS*s!>OLSqBMMxHT5*q79 z=`R$nepFzqvOIVl>}T-8$r1ur!!|J=$;ie*DysvLX@n3o;zPI4i&yRCO1u%wlytf7 zBTRiwXG}f(OfZ+~Ddr*@x1KV8oKN6R#ugGGZ`jDBq{peoL!Rwpc#D|N_7PZ_bT{Ag zBs#aSw?PAfyi@I|6oyDm>A#5JG#V1M#<25JkLJ#0 zqxJl**{NjnxmvF3)FLyb6U;e04t_S=Tr@tKi=x5Mna|O9W0(jY1uGK-JN@uCX!zv} zc01lVmB`~i&;0S91N*{#{1Xx%ezm9zL<-AjjJo#76pZv?PC)_8$dGeEYL!l4; zMZ77@2mb=BZ2iG+)OhgWDzcI1zxEZz!_Uz|qC>;a*oY_wYv3(nVz4T#oPdGG*ijBY z{k19$2|4_%>Q1JD^~O7`tT%ceN}S60A+aqc*QXXeJ_05=J`K5%wOVgHR2Kue-guBF z(V_K5ueR};bBDYAX`6b4aIjs*jf|RDmA^805#&PPfVqi%%}pHGYD}Zpb5P|usQG-W zyBs-D{8ykJxW9bqfuC{z<%#oG>l&Ep{;kLT+br?7LsuEtRs1+&U^nsS`2)Lqf6n&) z+(Z0%XxG4=-v6Yfd(J86)$Lt-p+>djiEoA(6)XgF^8cV<@80)81x0 z-g+h^<6z~$TABVg)s>K)kdLZSC-k0Adz!sP^OHIo9Xu#z7dy^#PO16%EH0g8g*Vth zg^+t9Y%e#R?b3?eqzFk8`z+o@CZET6${Iac>YwYUB)AcMdn38)d~*W6fV&&}37_V! zdhM0O4viTz%~)sQZDta2I;>1G)~TLE=Q_YiNj5IZ6$|-#r>BgAz9X7wm^i)-8^ui= z`)ekSj2bUVBX{8~Wb0JZ~Bq`$4cte?p>;Wq$AfnOR z$PUX-R2mW%JFLy;`WH_)hlwk*iiJ|2O0F`>I?bHbW$=UIvf47CwFs2Zx&&`3lh#F^ z@`})*O>b^Wiw^EKa~^KNO=eEk>WAhNa~Bpm?eK2Go6h9p23VP7vuizx&UJX(wQy7I z8Nwal^P;7O9pJODU)-cpzmh^1A~kH1Vt$S{oQcp+VC4jaGM197iJePiJG3yR zMVGj%IS?~(lbKy&{S;Rl)1*7 ziK}p%nMtjF;$NGIXz(S`k(lUF}wc< zKPE1_Ef;E=hDk{M7v4}NsULaDD?+E}<*}qEAMFz&9pZN8EKCs+?V0wqT(fA#LNsvN z8E%a?oXN&SSeaz8@t#EII>V_=y;N6!!X4pfMLP{U!ed~!xXGk`cUjXBRpOhY22E1S zT)f##eCEK)3HWIAV6qeR6P$)bv=h{jkgf1{G;2u6Ry+gmv<>WZTOq0^z24c=Ok>q; z>H)iPo6~QG-@W)3#|^O6=JXqNnUtH;uk$1ld(6aKr?cU|`4-OA=DFq3oQm>I@JZOs z028?b{c+eN<^vh2A9k&0vii?@Akpk}`N~}@b-Di=coc6FGfh3z{CRe8SzugXLnb#k z2r7iD21yj@HdHh`6_ zv#?p6g`mbwxRkZh6C7d=#DTCq+@7FSj))5`+B*#Fhc}PO#on;8buPv>xNv%N!^K** zSjkp<`knl+I2EXXvDh4p8te}jj2SI5MLsS%LdHV8eM~Y+u(EYBHi?o^7G?Sd3rizd z+-#1;jj%afET%KDkf9MKuEQJ0Wa4UA**X&wqD<8MxkR>F%ZY=GZe4dJXFOvL$4_CG zxNz*sgd-+KLdlQtRx&Ah3RbpG$$E849I=WtEWn72Isa`=#Xn(JxKwP@f{J=fbiDZ? z-X8vp8IdHMp$H1wUSmA{m@FjPGyRAjrU?>3CW3c8G)lxIylG4# zCcw(piCDL8TW`6tI9G|@^>&;&2}i@GaFfE;Es{bI5+&d$yh%&~j)ax16VO%elI1@IAOGB$!XiRvNjMMPuG09j4D_bXHqk3*AmUH=RPj!)C zqA$8s^(}KI?u4!3GO=BY450)@X}BG47?XzEU}ftxY_8DYU1HPI@ANDfDi=!8;><6b zL-8W)5EqJ8s}dd*k@zSZFW~KCvhh5uY@LlyNjCZ-W69Ci8jmH{5EAVfOV$fDd!3$B z$<%*_!l6%oRlGUOC%-bRZ2ieMMh|Yy)?CHO7D}RelDG%9*3%y$VOMh!X2J$>lR~S} zLri#-j2U?Im}E?cm93MpLH#8fs)!CkaM4?i0MTm>L=Wr>7lh7K|+%E8HatC$?j zhn1~!Fs8x5aJ4^MD`)$MyCWc6W)8w7urXW^rnUk>hDAxZ2yYgXgbQG0>m;mIC!v~K z6kUCM)Et3_U`MzJOl*OG8xMW<58&-#KKuJ%W$Vv=?fSE?x!)!t@BcgI5C1LL67IvV z-z()cJZ6mO{r~CHe*GWLX(t&`FC zQdRd(ROat37xR&Q4mEQu7Q*Imv1ql=frdtyDB+D`GO++ww$4OjJ=!zQ{YDY7pJd%$Eq<_w1 z^xliaao9dbRDz3iWoun;JoFtUB+?lAlE*TVuo~tQl2KwJec0-FtC(5qlb*81b4`6y z{{~?TG8Kp3S31l5@$QTp8GFiuKHlx)GeFGa^<$%5(~fxCm=Ae-SebN9+j$b5JK`}$ zp<#GPY=DohcR8X-hKE$UVPlv{cqC!q8i#`)9OWU4H;&1}iLi144;nqZ93=RuM?*pm zRX*Vbl1OFxea{;E&OPR^a-TSXrfdhkPPD@i#jD|G!bLG*k5_=A42bkPSK>`#0(iOq z+~8ZHQtx!uZG@j$Tq%$g^OX5>eF8U;+2bV4grd*Y4~(Xl$MA+RpY9{DGD$Dr)0L3v z#b@k4E4|dq^Ute@+b$zHW~Cd9bIiYCSGhSR;Xq@+Vo zswQM|i=x|nwl#milZ8ZkW-rZ$w=_1IZzkbwV?N{wurkRvTX+(Q1Bul8oed+7#Z7mP z6KygaR2&UE!+qg*Xgb}Ai;fa;6y7=}5l6zx)`{3C;#usJ=Nxk+&V;SuB9ZWIFSZZJ zBu#ow!<)xsVi~NQz=Xz-LXJxO4oO48;-qJ^=(yd&Ds$blkjlL0VRIfIgdYo+$L0%e zN=#%#azEZGCWiNV$}7T%r2ggDd#ssmr&`PQGJ{4EnFlL&dSFPFWk`REcXh$X-pO_gO#nbu#Lh((9w!R=GkV$&!^4#coMdX z%g28Fl+h$yl0hEF8_cBUQCQhJHEITlIr{K{IU(=Ewr~jnGD!R>i1+ZOF;EyxJ*A`I`GFpb?RC73% z!Y*;)*n^)kd^nUy>8Nxu-clwhHCQ=;6pcl4xz6q{vua4N*V$A5Cb*8kvRqu`xFurp zg=mTE@0ip1ZTQJ>>1_V_UyX~hco*I-CX08#%7n!hTg+0YU_);ol6%Oz=9H@CN_Ux- z6#IiY3%`e*;j+;D%WzzDl!)Kqtz#1L8(2Ak2#wStvy;D@UPD4=r$6ZK>33Tp&PROI z+4B+W`}be?$03Hq?k2H;Um37ZxCtGw#{=oc)#^ON7UFkdBl`dXc^+b{C!z5fPiIf+ zrK`I!%^mI@EW72a)tS!T?J{m;)I@P&u>LCp2jnT-J!;z$3ofm_9ofrOav^u2SwIE!Bx*pgU2U#9`w|WJ3BmM7J z`d>HvuYVPG6AsC&JLqRObN1lu3HGnRdhx(5AUgxALN*7Y{j0NQNP8pc@L2A!TQ*t~ zA(u@=O++`jcnfjCE2XFupHi6X2G9Rx7hGjo`J#J416=x4 z{dk8OTTSMTHZ%i6B6osx%Y_oI6NK&u44E?f!0px(6{Zg)TUNg4K2Vp6i?$P_?!e#x zQzCbO`z@D9xDF7y9|+8mx%Tg~o}w^o|8C357rpkQ@;&2dxB4KXz-5tF{u0Xt5^m*- z-Q>(&KtP7fb^p5c1ch1m3oR>O{JQt%OPRg`&!_@duHnM}Ci1%f+H!$JUiSeRGS~fA z))N$F-G6Rb`J&f-gK_S>EYCRS$ilo#AHMNosQ=mvA|C$LfJFHW|3dfthD@1#psMvm zh3Ny8EGvib0UNVD+Juoj#b851n=o2n_hv?!Fse`mv!Iq=>bE^39vwJggiogCdh$w` zF}lsNUk7iLD3hhl81=R55!#GVJeLSrnxQvbD)SkmdYPUaPXWGuCzJvB&4*=nhZ=g;iK!oFYCGdCmW9xh%r1 z`Don~vF^H;Gh?puAFU@Q%ql-+S^1(@d82%(Ah!_Tyv=fF;-lGaud&CEekI~o|8hu_ z#r=V4C{`pEq6O*kP5ClA!ll;J6{aIJv#fm49idr)gnc%>5?j?_8>R+&|9HQ!NOa*DPN%HiA4GC>FDc0`bN1099ePNd$ zT@g5&gzaWsCCnuqx9riu-I20b+Fa66yZ)ffB^}}t{~zX(F2$ljj4G6`8_HwMEZ>BD zW0O(i)rbd~RUuIpgG^H$seAj%{Rg>n_@b`;Y7{Ww>ti zomwR=D6Km($K}J@4%{6K1Bot?J3?pcWgT?uA+sas`;Gud2+WYV@~^d?pfD@{8q3P2 zzT-kye$!Es&za}RbLJIde$k!j94$>SjwUlAcLJy7k_ofLE)v`Dnp%Tk88bV>FzX2m z(;0?ZR=()Y&>$aQN#`HFbz(E-T%#X69=RVBSuT`t{XjqE7|<9P@?>@azx6bQ=>pR% zD_?XMXeHhj z9JQXTFdgBLW#tf#VB^M7yZ4lDS8PaVL)Zg$N5RUyXSEBvl0kRxiAA|m3HP4u7FxYE z3htDY#nSFQTO%%O_fU#IX!o8ixy1j6d(Rr93iBqq^9|j{ZI+8u$)dJ^p|9mq3bRIv zuFyTqBF9kfH07+An}&GnNeQ!Qh_$S2Y8rZRi3_)GL4MJJd2w@rX@`++NRay#8xqSUPoCr~z>ac;aYEHaR*Td$PN)P4YonVMaNea^g+FMq>=pIl{DJ~2aQG|wz-x+!R53^h( z;a>durx2$4mosFp{h`(q6lU!Ywyb>7Yo9-b$nj)iGf{s1W3JJcZE%93$eqA%xn#n1 z0{y}_%?aosgfU-cUzlb+U19pdgO-&qx-T@RGV{{6Zsh0FBMUsaLE3~hk-Nhx%Y_rJ zJBU4pjeSChteHJxx%H%l=@D;QR=(&S(SVl0@?g>XN7fQIE5NdQ_$dcIu z4p~o9m>zJzvhqdufac!VC5th}&O3c4+~+_~73v4ly5RLjmCyp5tf zmNu!7V%H(GNrfaX@&92`p|M!>#!J{4WVxHqa?vXOuRVkqW4Xk_tR2HU6>=WrafLZw z=0+pWdb+}FG)7xiHZ>aAT;jq#k!U^=uioP;d#=1ZDaY${Vba0rb!Qo;8|ETe)~4@F z?(l-;!U@+M#5VP^3k14Dh|HON;#up73)3f_wyb>7eWD@u;F#d_;?`4g^3pWicJ7Sa z89uaJD&abVemkx}XE5f<>;>Dbrz%V@*lbz(qI*Fd{#Y+q{r??#{r_dTJi@L2R=SDj z!1~wnW3Kt%t*0lNuiu9Xs1=f9F zj?A^+(t3)*to_Bc&jd$0}P7X0a7g&O1Kxleu+Y$0~j)8_JI`Z zi3-yPk}NA60Qg6Czk>}K$j(R{oi9fNnzIi1k1`7z5eT> zutGHeOCzuT#gFcxrzp(Yf5o!$MX&uj-fV2f7Oe5#A9>yHwOk(I z)_v%apOznU&3|D%Jz>`TZp+FSz2>jLOmdz#--A6CN}Up@xj5pHU^PgT&qz>wHrYHS zP*M)f-ci|l3d8h{3YL{ac!!PIVQqq0o|3d7p-nI++P%S1CYXC(*oEz_1J|s%^L!Gf z1!&L75~i8^S@!hcO%~;}v}xu9yKbRPGxz2a{~xBA8}MiS?hGew+hX3=lUXiTk`PH<*P`EUyC)k$;4lwZH)KPdrI9mQtnC|m}mEW-1+y!?`%3f)s ziVBF!+CW?J1#MLEFRz7=ql%DSiJiTaOWvHLS`rG?u<>ha%Y~_AP#a3Lv|L7E)<;nb zT|=R`ghR=Nk`8UZ*DI~3Bg_`zGOldB3d?-|<`#0^9ViNCVLpE@<1Nh0l)T3FKPB>N zO|o8`LHAlQU1o+6qP|*#WX;_6Ct6Qhm^IzUva+e|kFzVGwf(ZcMb!2;k31D}!xd2~ z&PCV*RlcydxGe*FpaN+WmWmckDB=Eg4hq@Yz&m)$N7*c`Cwj_mg=#&~EG`kU8M}b{ z&^M&}Te)j@X6Cp|&DUDX1#9Y+)>tmDFzd#!OOSArfV0bgp%5erb{CBk4BKNHqsB*KYHj!v1+d58TQgLYIcL4XGxv3ahq2%ZFHU=xkuz$E}U>ZqQuT5ME=Zf!K|k*Ot%yR z7Cb|jNwb4oVLg#yI!Fu4${`%Y#@wZ+Ccb<5R1H9$Ewdq^J%F2G_s*MAQJBF_T-XP2 zQK`~MsQ}NDrRdm!iMnTQnWz$L6EMNsD#}r5GoAmlTm9Nh=Ws3&a;B4A-9+8QehTV( z_$>Ay4%zpxSE=S(;aB!7{&(-JcI0>_d{`hKxV!MWa**Zh9yKbk8|i;f z)Bn2RfBh@5n{Y^G-9bOQnX?CHPq2Rl){6&j0ogOKDr9q@-M<=p1_w5gba*Ti?3Rs3 z^=r9oBJ%4yBS{7P`p|{->#BTOU+2#+AqQpQ&yJ|{h8Mh_vbo2 zg+JG$|8ak=V!@y5!%FezDzZPHSN(aF-Lmnh{w$YGME?9#B&mQuUvps}Q`Lx9CN^{~ zeE^v#3zw$Ml;+a=>=u~j(qD3kkS-niVU(S95i`+>7S-ujm=PVc=>93MqAQAOh5egi z#6*;N5Op^4g8aj7LE3nj!^<%`$>Yk3F7(p!oPLG!GMzpy3>wsIPMvlCtb1q4J=SG! zmXljzr$kx+5yKM_lPxDCW+W0)LU}hwYOIZ{m7%5PxJ~U!Xyd|0T%s(Wvhj+!B(P$n ziLL_S?Yeg2mU63*=DG@@1c;h2JAMzlrKnZJO?D-W6=9?A@TlF7eEHds&{ApBw-%4o*Vnn>kC8Vv?8f~}cw93!6D^c#n-ar(4x|Exb zuVEPqenze8WX1Cn5qMvS8!dUb+E*kB+lgAG>B(zlQ;n$tZ!mXZC zoRkU-`!-zI+n8Dj>Vpg2rM$h2Jc_bY+Q4s%-MZJ@=L0TbW8i0ZymBe;7F~JKYWYRe zK9Cr@Wa!HAyYebWtYhUP6<1!2`s^u&l7LZ5hPi9}Hu5q)Vpl@DI1b9y6sl9QJqmBA z)`B-0&m*!uS^AEt_Oh}WFPgl$s8K7m^t~}6YEuJQ1Mx>VLafRq!uRmm(G@CIpnsTv zQl_KU4X#n4Jq@DUiJ2+ohqJho3Hk%?@@u8JbMcB$f!jAh=h_|1tx#*X@@i3<3bS40 zh1uG!gyzaE<@yNa%68k8W_=}Jbh;-$CNEkk_UIv=0)smzms`nS(h6%|Vtf>Tj8X?N z<9Ph0YUppb47FCfpIwRauZASa<@Kpm;LeM7MJHk9uI>UDQ;yY;L-DIs;LeM2#n9s- zbHkozw+yvv7;RUg+^eAxT@B>_Mx?!E`b?# z3r;Kh$LvakUH0}nRVsX6wiG=W`<`bMq6g5o|EtTb>>J6gP_`5^R*TwH`YY@fomTqG zxJ1ZKwah0|F4KxKn!8rCD=#Y=dp=6z4R>^3mRsRo-byP}xowX@B4R`$OvSt>@?zd) zS3-00opvR(n>)F(Bf7aOr%wOsIQgsRH2LZCpsN`;A>C7unH`;%=TJwsx^}PHTje#N zZQV-QwH1lMKmh$t{sgqTnb|RU0e2eaeyB216yXrJf?WyCP2>u)QOBB_$OCN~5?U%s zxy`XVHf)hjJByQ(=b73kxw;zZg=mT0F8#$`Tt>b{nJI0i?oqon zuQ|^nTq5+4s~lF*@M_|#4m@#U)xkviA76D)(ZZ^OyJ4lQI;bSCI>;a$zKZ4*yJe%f zv|Kh3x%5Mkqyp2=*In3E2i17zrJt<(7+ENbH3yWH(j0n+-Qv<5dMlR*>Cok{<{(Ng zwCLV0FV>aodj22EtL%#Ew&H!fHzq@l)zsIYjJzn1+bv4FBdU763*9+c)Nu##!#c~$ z$q$R_x5`lBjgbr0JaVdu$Riw1SFR1gN!v~a77H!Ic74bT6 zzP8+IKz?|FB*X+HA!KD-W49!=R-(OKiE^)uripoCfo_}Vfdx{QJCkO2S$!Uc@)2@WE@NEo8wK1*Sr`wRwQgKus7KD1#W_yA=Dz4D$ z!!!FJm)+KKtNyyJGI^{aJDW{*t4*uAY~0Ef1EoaCx4gUiW=gq8~Vp2voSRu-G= z-Y!roaHCr3!rrJxVPvGeou?ZdbzD(4_X(7v((YH=A+88-3tDrDkc~s=`&GL)SxsoE zlrq{6QG~aZR}mI9<*THWfqp>jrWT@a3}^Vm>=vcg367GBG9P6dbZt|p;e=f`Z{5d}lO+{IV|%y4OkZJv z6zv(wAD`p4CcyCmUt@T*+zPu*tC2i4F=}dJJR|u-0exyrm%$^E7yLtZC4A~-FvYHf z)+v{cBAtqlpSELuiV7U(D|Uf7PZsrrzzO>`f82RX)9NRKRaJ?1WC zsVo{9%35hX=1#lCr?n&>atRwfrtRjsYMSIL%-5CK&*fESMb%niKO@9uY72ghyy#BZ zEjqic@Fj`4`JMt_w1oY>C;0d?**rZwbi*q$RUT_il`GW;d`%AbiT`%t)JDszT65ws#O+`G)9ipRN&XyEiJ7r zh_NeSEN~lrg4V6bmz50(Efpu^E3+`v@W|$3@!+o!XOvr&*A(w3dCl#Y({5d9)jiCv zMA!vwzmMS4R=Q?wYPl72HTmhExr`sMTR>VFPvR0bx>vhRll;_=kInhqx2_Bqlv^1p zPyP5PT#nb&K+TK1G+(qUp?U0ca)lI@ansO{zcNM3qkJBGdIn!K)UV~! z_^VR1CQ6IiRQQ|imYn9w@7t9y7QT(9UF#j>3(AIsmWon(2iuKSb$)kXsQ5q2t>SCQ z%M}ryskVQ!TUA-%~YPRbE$5JyD1;SQ$*wn#!^<;*M}2 z+rX}b=CgIVM41m{8}NHE-dhB7-tOgA?hWPpGTvYKXytD(H|}b;+%z}7!LCHP7k%9{ zp9}YLyx5I%2*b;*-0QXSQnd2I6pGg5?|0fQF|E*t*p(>vLa&i9)|FF;Ee3SMqRHh} z+%;QCB0^I^-)py&w1S>!SHf7(Hu_VoOP0F|8xmS7O6ihq4~FT1K)`f~uGW{9TdmjU zs~`eqNz7N-V!Jh`RsJHo66Id(4Pvv#y09r?Rx~+Tb~<)#(=M|LHQMQ`Jx(XKmr>ehyYmWpjFYz}TH6@?jvMfH51OlMwUu2agxM$mZA zk6yt49jop8*Jkg~p(5K!hpKFe9C}|4{U?XoW0Jdnb+$teT}q(_Y(ItSuvPNOZFH!@ zR?wju+e?S;>?b;S*%A4-weoL`$-FXaLx-Ad7oCh^H&UoEt3ih-_9vaJ#k$C$zbI6h zeL{z3>|Z*xWzFfg_UuRbw=d{Wi+xRp8mue*R*T(2huW+q9jdT)bg0Arra!5}4$z@C z`(6$;pxtyq*>9-oJ105Q$9`axQBmY*DLUmXxIwY`O@^6>RhsE?Kb=g5WM6q+SK?~X7JcYWj z+VWp+r%)aCCLL~MU&?=ZGyPVVHKW6g>?8T)a{17fPF7?eQm7)kQdX%VpL|O``HTFQ z)#a1d%ZF2R@)Gts9WG;Q}%ji!kvuHZhWtY&Q3EM-zb!4B@p&2_S|K$hrp)>tSEw+(DP1$<+z$}ENstynEOv}Ud4Lqj_BVPBETmFx#P)M88NP?=pzzcpsx zQs@%4nhwp_S^2lkbg0QH(4W*~yD3ziRijW9_6LP(u$6SE&FE9oI7uI+gC>1=3o+2% zt*Bz!@)8Hy01?+FZ6Jc&(i!W z?Tb^-6J8|DCA!5>69-A)EmuM(q#%nZu1!*AY4c5^sCx{DGfw>LB4T;V9u-!U@7j z!uNz938w*xw=`rr?Wsx?*u#WJ2t|a)2*re%gjs}5ge`!?TPHG=p2n$B1UF$cAn`Vf zeysHjPSpV<-eS?I%FA)8Dj@OpicYPivlFxbkV6pgK_Ez;TRw>YRl+68-i0gfW%ueI+b$=PUQg-qjro=()SVyU)G$C|)QHikzfa-RzktM>Fl@B^ZM~`$ zT#Onr`h80MsukEY!o!3|0EstY^y4Q5IJJwg8;}^aX>`88i&H*8;w>7TN}h>R0|AM* zXLRbdB{;Phka#mjr=H%0Q*!``H)(Y0rq6KdW>J^xi-~uGxbkX@k@8Z-E!ZE^e!gqvI zgdYe$5q<_F-c+F!pTrKjF5X}v5QPnPUA&5Bi%WY*Xi@% z+gkj!7CyeA2Iz4ZQiD{?TOut)O_CO(CW%5cz$xZ!lNO>zN()hIrG==qq7aRNig~l8 zg{b|~Le!9HA!^aI5VdF&q86^0H*H#o+Bhvljhz;vR!<92^QVQV9n?b9AZj6M8MP2K zky?n_N-acfC531JSIiqtEkunbg{ToN=B=j|qGnVJQG2R|sA1JY)WT{ZYGElvEp9Py zYPArxxmt+YTnf?nub4N!T8LUDNNk2WTPc473pS3R;MI1q#s^wwQMhT8R1y zEkqrL7NQP=LNw?t<~@fNqMn07H1;j#U5FNN>)bUV=I-+9U18E`Zfha^hQZes}v=H@4T8R223eh0D zn0HQEh&m?<(OA2f_flGjdMOIgkh_?7S6Ya=D+e^KMTIQMX4S z>IRE>|EGnh|DzD~hsC@j)I!t~Qi#U(#k?n^5cQ13yi3$V)HiA&>Lj%gb&?c1##N}d z)I!v4Y9Z=2DMa09G4DUM5cQuFqC13Q-jQk{>PRU>HwwkPN7X{qqf&@&6yOuO5OuBe z8{It=^FCG!Q6Ebox`{wqbRp_&={LHUDCWJc7NYJ~3sFC;g{VW;LewEsh;BDgu%+_4!(e zI)5!hqW~>L!vQTs;{giMEeszcz}3;`(H7duG zfguCGgYnLKd{$8d`PN3t(w(i9<;lf^58C^eMioUBGx?!*fyd)>dMD&&cyea3{iuwh zYH4!liCM~GUwS7$xu}lUosok%{MZc7SZS6P?k(kb#vxqQorPH${HJ!7gq?*8T>RC? z40Gm?wyxxJ}aMyCCZzo@1&GaGLYZSvpx8qKG*CkoJwYUiA6Pe4pRzJ@{!BBViVti$ZD>a3PhZVEf|F` z`rKWjS_r*;rl+zE`l3#c*-=s6rXLg+pMn2`y@WdZk(21a>+YGZ(#yukN_ z=Y2p*A#m?lVAVJvdpvOI1YjRw{XIbby+F(RfIWnLlYp-#1NYnyI356gBFuach@S#f znF{>%4Di|}(B`;HOJ_Q#5x4r`W zN;vW=Fl-@EcM-6GF#a{5!|PO3KPg4kX)#VE6K;D0c%RUH3Gf!7!%|=#;nFvOnS@%) zfCmWY2nBBerwAF#fqjJ36~I@77ghpIR{_rvGFAio2&r!aI|#kk0PhewzXQBRX!$NM zhtO~>@HAn>I^YXJ@_Jwkq1SuBDuQDJ@CxCIjlh$H%iag7eE>X6NZtf&A@te|Y$80e z1*o(Yc$kp94cJ2HwH;VRaO?nHAzbkx@Fbz`N5C|~e}pL?1Gnu2-Y0bb1bBCfMUYn-M~&lpFO}wgqfcMwY~s~34^}`b`tu01*|8;?*(e@10EopBNTiM zoFZiG2lf$C4*)v|1HS>99t0jEG(H6EBcvV%b`W|W0k#nyI|@`g2HZ#ZgOK+vaGWsW zIPe7_`Ghvb!yf&PF4MJ&Q+vpsLXss4niHv$K50cP9^#Ki)?6JG5N42=V7#{=sK zo&?~kKBPp`^;B%_`r_1$g#1JxVIc4)VbSftU8z7+8t@)rOgfp;6hE1cAB0oW2pfg~ zdt4OE0J>!YrwGqw0m%|jVI=StA!`)SG@F#L%=_TqQk&tM}WnI9!G(X2*Zv6KM?Nu7KlC$Y$A+30kr!L*heTj z3G_Mz{7jhlJ+SZx;Laa`|NR6sJPm9D#KbMT@)vTIFO=%K7a=yCF!2mf_y;iWPoU-B zz#hW1e}HcP0;d3pKW?I$Zh0Q3t|JVofa%lW)qv^Mfd#dIA+>>;b!bYpt5Tfxqj2g9 zLW6q1^oGFOjeyCQ0G*oy#|Tee3iNA1rt~n2;!3#;r-l;-UIDz*3OI2!(7q$^HQ~`~ zfLmgKUkEQd$ex~pk^R1Faq2t5<(&X`XZo?7^5enlaq36Hp)P>;X5ghBz>zp$Ry@!r z0r-pXS|4CoU!Ye%68T#x$OjW~Y6f9Sf1ugzKzu4NZ79&~PT&;bxx0YmVL*l9z!5;= z&*dnYZJjvPh0x9g%*z5kk$}9>Ky(i98DUB;aAO|u9U$=sdSrjvgH!(!ejWo1m|!z4nF14-mPKTds2*f1UF{x~qI7`S5=P-`}@mXP-( zS<&LIGn*=9vJo_kUJN6bRJOk zWzxM>NzHDA*kQsYuK+s;_q+-?76OL|GZz8zuK|A$7QPPLxfrPP2C$xxzXWKx6xc(U z_9oD68E^^^PYYNVO!>I@Q%)*}ClF$95*}RvytN8w_BPP&9iZR4WJr%f>2I5^#i^?a z9oGW~2#>!9#BKo25Eg6%hP)5d`~Y~Dkh=-Eax<`t@Zc7p%U0k7;hAj|1im&$${O%<5_z-w;Cs5^6pvh-Im)*b{fW+vrEE(Lr2dDgmpT7X+eF>z01ytJ$ zyiH*HfXluHb`mD<2Ra`BjuD>x2IzMXI7e7~2pDk~sDA`_pWr(Rv^hr6(&QHsJ?2|V zG(8NaG<<>(J3#pTIMCoE;3rHt1*HA}xKERH2gTsv&p7oXq3u~#*4%P+Y>jQT+0`6{1^7LGrL=v0e)DS|iroh{T&dq?ugq%wN z@6|x-*1(qpe;eTDw!n{s7ux~1w+AYB09F!4bp)DU1AIuhHwL)Y0URbgaV?N=9q=b% zQ77Q8&Op@lz{iA)8-RU;)GojdLhl=acL<%k0bnF{PrqhLC4*I-~b zVd@azsXKs&h5~=z2^0(i8jk=D0uo=5K+!C9;?z1q$C1DR!s$`K+-xAt4OC^oYJz(- z&>{!;m@p}ql+MYQ#*REnJuPh@*>)cMej{OcKG3ZI_{RslGZyGP4md{GGak5UA~5h? zApbs6Jg;Q6*Cd=uBBV_RsulsO3GPRM7LNfR6DB0Qlc4K*LvoO@y%vfp&|4 zeT1UdfL^Zy{}Co*c9C^{3phr2ayig%1#phAcqK4m6;OXQ@F`*S+d!u^!0Uw8?@)=* zyfvDie9Ymx*mk9Ob|S>~6DqF*zF7~<+X(y*Q>g4K!Xul2iJO6gTYx`c%9?&iif<|+ z#}Hz_67s$TqQ3$@BTU%~+_(?;jxgtIAZb7FAK}ddK*l#fN`wiE9D6^Jwj5+-0_1nY?96d0KR&tsVkn}Ss!>_5VIEX82I z0^-p%>xsK67o*iTTO_pj!%X zityY(Ao+HnLMreUp&$(ynhxwH3>XA#1;o+-WhDTkRZZ}8I3ykDi3tvhatJH_2e>nU7MVciXy9xPP&*I!o8a{T zpAb6c17iz-^W%UkCITx6+a?3w-4FDdM%j2>NkE;4aH>7wE6oQ0H;rAHomC z!2TJ)zL~(MPXO&^0h0+|5qixAPR#-KJqvVr9+>z7z+MEly#%y>8AzND^j!dqe-+4H z2#j0=?0k(9g%*SgXXs*bXS4tmIL8Aw@nUPo?sx-#Tu69s2{7(W;OgZ-qgC|3w}JRI zz*@o$?~v#XifNU1ajGF<#yTKwJ@7l>)%Sp*8-UsyfprAW`@mHn0J{lOHvwHY11Aa3 zZUF{t1X$TB;*uAtop~ml{0O4Gk@dMtArQ+0|uT4DpkM=k`;uJ6@g1C z0XqoyR0bSXfJ20tRe|_wz#oK#)qy)}0Cj2t>k0X_fR?p^J%m+tfb1yX(z?J$fVzyP z2_6E9Wi;#^9*9yife<2HmB8v;>HfT5QHwOat|2%gJ;t1bt26Q*7PbiEQdNq9Dz zBDzG8d-*DyT1NP)C9wQzpkr&`gLXiR_Q3bo0C6$EvxEi?z)fgzEl~S9Aioo^uQTve z7hv^`z@)CgX~L*(6yqMHzPjFoQwfCmJ%Pc!fEu>|?+|is1)9bJ+XxeT1J}d>-w=x9 zf!+zgZ-iI+0C)5SYV`xw67mv(=-YtL2vhn4Hzon!5#|g4l9GY{2ydnU83TdFw*y-U z<5PhSX~2HMW9h)HgMeQN^9KXdh5+5}08SB}8%p{6T*=@3J8|kQ!u=zF>z%;2gs1)o zB)WjV32$To&P<>|7VrU~Py*VH1ojf9j{^E<1H;|GSEGSXatOJ=>^xwlhvLTIfUfJx zcn0iJ7E-bKJkVLG=Sn{O@s)(f3jsC`_PIzcOaMJ?dd&2Xt04c8m6&C`_3DP2<*=xXd!riX}F^hqN zgc)y8jNN!Kv;9jb(RGwE@4ghj4n9nXIC^*GgpuxSG@b|cX4ePAD<=mVhFCg5knyv;!R7NFWz;B5li23)os*h!eY z1L*uAaE$QeM?k-ifpdh#JAo0O0QEnmRJTOU zK%d`$?Pr0z&jB%i0|yB+{sH3t1%4;I`X4a#JSF)mx$fs8Y_U=ra^g6C=AzGo;CwUpvGItQnIAzbnTu!FGpMPS5BK>fME`vl)Spv}v` zSA<9A1639Ps|eYz0GGZBd_=f!A#mLy;0R&XYe1jZfxif^Ee3|Y0n}XrY#?0Jd2YS5+{7jg) z0Z88nRC^zoOz8XpaE$QeCZOMD;2dG`7GT6yp#C=CeS&X0&}Ikl72%N&fgT?LKM`K~ z82H~#pz5czMZwx>W{d5#p->S=E8en!tO67PWwRQNVwMv2}r7^?+3b zM}1%up+^JYX~J)WfenG)jet3=fqU8jj<&!d!pwF+e0$&z!om)~ogINX*8uAY`7uCC z2e5}Q?OLGQb-*b=;;*I9CHhMzoH|cfasyD@1?YVvu$GY56^QNzd`6gZ6L4d9;5)*c zn}MVrz<-1{djc7~fX24~TL|NC1v+R8U2BU1Ase|f!k7m&j=5s0?~tjcZL8X?E3|Hc5`0^mU(u&EGOF_!)}9;iBz zV#cHuZ;gB2jZ^&ze?161IR$uX8c^>c;32|!!nlWlCVrsRbf9e!Fyv97!()KE7??H_ zIQInLng#TH9_aECP-7l2neZ1O|7A)5<^_2Ib}zuG!-V~>05`k}oFH^u1ax@~_<<1r zI`ACf(#1fBw}AbG$Cd-Pt^j@|Ji8JYunLe?1I^wBP7r3V0UYm8+-K!tk6uf~j+sQB zkoyo~iwMg%0#|GXKH35l?F9bZ1w?-d^gTur6_o4$$5S}Fe}RqIyJ_rTL^JYfsM^5*c=$!0{HDR;MXgG zv(Z57)<9lcvd8Qix6kN^Q~888*8r{<`Vn)X{Kt;h;nYop*`4ToWyNT1XPnwWc;W_N z#$0YH7}0@JTh=I@8$ut5%Ol@Hf(b^d-Beyhksg@r|xnEVdu z5iG{T%VE{AnNT5K!BAHbR>{SlYkZZU@)uFrF0WG>gO~d8VF%e3GqPCKhiPhXC+8B* z_c<{mi}URfp`WkK^Yf*7e!eo#&)>N4^L2TCz97%f*W3B|QZhe(U%}5;0Qvd*34Xq^ z$In;l`1vXuKVSah=Sx@od=-kHuORXBr6Yd6h{Mm9Klu4O27bOyz|SA~`}uQxKYt|e z=MUEX{0X|BKLYpjXV`xJB-+m(CHwiKVLyK+?B@@I{roAgpFi65^L6!p{;<{0AEWyD zlTJT>#OdeHE&cp4qMtuM^z(;;e!g_-_PjA-_P&i{rr~N&+n!E{NC8l?^pf&M%B-6 zGX4A}&(H7f{CrKfpWn}6y(uply2tVJn;SpBJMr_o13$kl@bl5UpO3ozd;sm|gI_-% z_4@f3($B|Xem<7*^RCvF3w7pI^%ULcS)LRjnv5nw78B zc12aQrHQVBSw&5}`Pja4yhC0B?RDTYoY~k`zo>Q!UsRlcm&qs0dIHVoHWU?mp&zic zKZ?sY>;746OCp_nyJm%U{0e2~bw3wf#^Z4C*R}A9sr(-&EwiSj$$^HwNN6C|*mB*X zD}owIcu_Trw)obWx?#m)1`5*_K}~Zdyc3_Pv+D^HRxwT3T^ihue{eD|r43-g&J7Y~ zR|Pc--2GS=X|2Jq-g$>&&5Fk$D3>3esG%zu3aG_f)L0gm_e1hJ;^cji0u8p4!SDGZ zHPOKg9J0OBHz8jViQ%y=zZ1rT?h?k$gBsJPa&%S_4A>dfN~tP+8XY4GJh@JjY2{%s zy=J(G@RFbr;>+;5_)*)G*6cq&Ir6TCXB!(`QdgorA*6>Zn1v$_ceY;tDFR(!#J zU?mj8fOXCiR>3QQwj-yv7qbg9bW!$(9m^jrjDsf>AK%nh-DDWB!5(3yIK80~3iENP z>Fq|sgq=|R#b6gNUztJttSUKb&R7v&TYb&x>_WO*H!n2y0rE9&C?>szsfWf+ca8doD4fQLe2W+`mC$pO%76M_rQp4pCF>`T%x5TV?w^m z>vdv7VK0VHc=YZOJ-Xqi?p}V#~NrB(tXz50}1E7LZWpE5_wL%LgUVL;X7}E*Qp1_tigRk z;mVQ}=%t)M+pA#4K2UA1F2PoQ8^>+9Vt13k_DLf0l1ji+=*utkIZbWaURbj=Y9Sh$ ziUHJB1u6P3VZaVNAR;!Fn`RZV- zA8D8ykGo*b{#7*$jfY+%OB(CW)Mq8?IhZd6$4(uj&qK4`?8&*By5pr>{wetiEUQpVoItdd|ch< z94EO)WuuyCq@>H>=cF|5MUgN=Gp|orj^rw!&mK5U>3IkOto=(u#n4_ER6L{1?s5}s z+1IK-yOJ`LQ{eQ%^=NuP?{nXi$cJ-9Dms-UA`j7>BRvJq49V+rV!8p}dJnAnuOYey2s-sQH0?Xu4D6wnt0-k(HmDs?LoRsg$#76mn61Tvb z9abd_t)o6Wo_wD>mv5;YsPGFZ?7|CxVI)H7+>EW$VOX>N3x!09iJ;Lit{Z8LE*p2j znEk6NlvpcXe5*lc9JL6>O943tB^sMXi0_f{D7@<^8<*&pg-nO~@jd>l+!bG4Hw z@lunU4I1CLCg?=k!=8Ppiqumt4(u|D?m+x4R#xIk$6`Rc&D8G0@2;} z05aOT!kkNkks~%PE+Hu)H8wp#7il8B>bVS%OG&wL&csY1PoNs9BR)1gHZ37NO=rE4 ztlKXs-8x}#Y|yQikYk zXOQh#)i!jJ2M$e7Nsa5LGp@M|#$y1vibEGwYRaI#dhfWOOi!w&q0^iem)JisT^H?H zvUTB=VB^JWEUC1F+sQq2#$)JJ;=QV|Hl#5brwmGt?~|CMPxnbOzkRugTf6p+=IJT@ z6Ot3}Oi0!HwF{WvSY`)y=i#CUuXO!8Bbp&a<26}O3IDKjy{R0Y5IzLekCNTsuHHmnht`T@Yd5eW*<|79ois>a&n|k2d^;ffSSYiU zqjHB-EQa-**7&IL2tL6>^iL}B|6v*)kPNz3${o# zQ>JaTrkR(bqhCU7yrF?xLxxwqBjO8Tn3x`$lo+Rru@h|AGo=|O!`%&+>mo92@UDna zy9d^lOlpF@8m@u?^Q%^-)%|Ao76;+1`k;kD4rlzz3Y}f?VFo?_0 zHuvcPv$EVlpCYr`?~5D;Nvkk(^hQ6aE7sxbV7nQRy;K|ZtEHpb#-%2vC!{8(=pE>D z66m>J2$)(!`4*SbEV^l3`~zUgR;uPD#h);scS3x8Vsc-dz-AJNc~8Wz-65JYkd*37 zi|dyVKL}$DokmZXvjwV#X`m61hXD!csRqwnN!FKd5GgRXiTu`>m%xCO_ym1t5(7In zTQx2z|0x6069-U#piBD#5{TL;VlOHG15*WY-xV`E$KX?18Fl27k+H_$j z=DJ2nrig&$v7sQh|R;Ko-ktz zLfa;#rir_0Q-(hv+i}=CL{79eJD^-323tp5N*Zd|nWV2{{}!nH0>~;i7`siQ3fj{_ zairo*Np=oQ!tgqFkgo14B1O!tCd+h3k>v4uO?i2UjJzL6^I$+hDj7 zkdv?7Fo{A?Vk1N6ki_(U&ZLySiH19h%_I`DU5J>*FKX;@7@DU!6Oz+YQw$!|6V_~j zDiJyZaq0T*ZzUOCjy+!F444K!YTSKe2c@MY#wI(HlMF2ljM;2e!8Afp6_PsXDry1Q zMSUn@4xQuyhOXsu*s!T#7#dSLn+*R|4NaG*no<}#JL~)HDBA6&5Rl8s)Sjxg15*;w z4w{Q;Dhd3k3WTm?^aBHv5}X5KQ~M_ByTpG_Q+H`SKjJ}q89&P#wHdqcH0HD3c=e4&Ra z(;t%Eq%T6II>646l#<*x!EnDg<8#=b1>{_t+Jiv*0kL;DlM<5qrW+YDCBU&4GHAg8?)^F9L&<{y)Jm#>7mslxQJ z_Ziqt7kL5<*&C|0>GINBC#UF)*O75+HRGmECsi8d#?zh&rV@*T4ZGzVk!DkM1sXbn z-_g|E2Z=F&TxzCfNhhI9J?avFKM9;v1xijs@VlC`B;op6q`@?3)1@Kgea#pMu)V5^ z>5A2<1i7<0N%ptz7pXA$kKW#NZ{va`+pe0ITn@qSZuXKy>;aL2lFK3F{mtzVU~5#B zl4~^B9nN+V=%jj;X|S4#ha@IfOu^r?%7;YSO&5SL3VL7M# zF!z|2*e5YAHr+UIdGsiheh1{*HMOj&Qt#Nf{=HKS^Gj8a!8#X^txcD;YMnSBwr@h` z^n^R~lc@KS{kN)p2jjh*YM&IF+;05m8eneGN-dnaJF zOy9BRLVqv65%4qa2?NiF08%>Y)_}Ar%)xj8*+fDBc)aF%7Q@Ncc2Zk}E@^ z&67h)Hh~&j^_!4XW-BPW#zdw|<9&VQLlyfT7v4Y#46C+mJLQrZJGaU{pHjsG|(O#w@( zx&32g|6W~@9AlLRvv=TGdZD`j3m!5IPky=L+$bn6Qx&fdl0jpN#8NE!Xh+}@2(GuK z8uT31MGBRcx5OMeGF_S3Qs9~!(2a*6s+QJzy5O$(1@5+Y!|qD8*`S7xy|{t3Drxjxx-r2g`+MRT#f4beF^9h>vv= ztpL0BDg@=ml{Ug=PvVz=##I@0>KkxRW`WwCDr1>|Hk8ZECz*^^B5OT@Wi7Z&=%$hj z$G3!Vx+;8K_`>=Yk&6{ThyBw@r1B=KVh(p!=NuX=i4x|j+uK3)iS|OZuXR=4d4+0D zc^of8o+We;am3q;BY3OHBNzm2woZ*8XeS%I0u`rs=V7g{I}5K(;FA-XzJO(tT>oRz z_h2h^`5M33at6$eFV~#}Np{sWLO1AOtHg8%wy|8X6U5l=2owXGQm%NE6sN|BG~Qx4 z?*+JvD8RbKEcYn4HkReuvmwj6I)rvl+uGD<>D;<6MA=DI*?P$aw(~r#XG!tdYeiZu zG!mg3RxbQHG}(abgz&AF3xT)TazEhS6g*DL+RM{q6oT`Rs=dFM_j*HEan)Pq^;}Y$@_yuN2sF4TSf+*N0eMCG#JA2DH5pC_LJWm0A5jIO2FG`n3`pqqfbn>kt z(x4+L+mU*mZhXv%-ZRKmXH0mk#fT7_F^O1*m0^)OcpW=kIXQTB6Js3pMxIC98*yR- zC=v1CvW(c=-|#4ZqbQ&3EutJ)mQeJLUxZX~+UP;4B231}pO-q!L= zc?)xMT?Oum<~AZN@E1c9!Q+_9MYaj@wUO|D!_IfhFM9uXb~-InE!(&Q8weg$3_BtRh*u@#|gG(q2!^LPg!N_JX} zw~VVXuodLdou}yLjuhD}2v#X@V08;;FHIii3nL$ zwM7Ve*AhXjL2vqb#7z(F z!&rGi%ZqQuL~^=BO(Chz#|WveVM$SIkDLEoJSrZGPYz?9fll*V$gv&;Li5_NH2FM2 zXT035-ktF(NP-NT;T2lSVzE*RE%4zkSD6a|c66Lj39lk^J@niLFS_GX&AR-Zfe`y; zf>2W)2b7YgAUi+tq*a^bc}$sIgz}6O!STS>WbUa>6D-<@*PP zN_e%X6qnnlzLw6l{)Pbgsw^)l z$z0zzagn{n5P5lq5HS~?DGk_*(cF=6t>utmPdy>D%&unEGBy5O=v8R2jM+lS>}qDA z&`m#AEPxo>t}2F;&0x)}Tx6s*7az_I)t#GD7qVUCg3IV5yc_WmURh9C1XyB42DXY^ zV;6nH_uUtShPe|rC(7I=a-|O;!p^-Ul)`Z${RIM-)q`%$fA|H}S)LN0NFzQOVlMcMG z`|t^n9b98hBAB-UShQ-GBZ5moVk)q z9q(|tCgi}Y)rt+@-}HM=ajgls4p)q5HV-hEE25$=30Fq!#aE*w9NgtSRT9+|zKSDiQId&_7Sq3@ux_H(%po##mg?a*sxihUga7S&OjsU522yVbA;9i z*#UAjAB5NxHATvXAtBY|i&~ebxiDti{}bs^`kPV|bQ?PJgk1GEWIh1o`cXWxR2i!1 zoPeE;xz=vdD*VTymT7x!t~C`htnI%-tF+=)TD>4UZF9A*5Mp~(HRX+`(sJo_<>upA zkGw^vuJBKi-n*jk**oVElzkOnPR9ab3ahSM)J*5}j*J|s5F65Idwg)4YsqF}^-4-b z82nqcG5RLA9bBOjKIBzR*ecV+B72%`NT1{?!yv$N)D$QiA(&M3zQ`>ffe~9>N5rp8 z%Z0Gi`5-r+Ukm1aY72A2<*6oL)G_~#Nx*jOauL9s{iSMzDgvQl-jSWF)Ic8CYa%0T zVHARLy>_MBmwFV|>a~f!UNfZvN5J+g+~RVwc(swpnxRY;3uB#f%lh?TIkBOzG!%-k z3|XUG;}Mv%Icn_6t{kFX6b*fSa=XQRhmN zE`icj&4rTkmVI!gz_A`T?gTrwTQxQ`lDgzOOsxo4I7$jrFBQ=TFT~J3!8K;XoOM+T zLm7ev&w^LVLs4X6X+7S6&2{6o1<`D9slHHQCxsL{aT$WLd)-3rl}usHy_6SEMNA_* zIkX*m_}>qszyIQDkvl{6^1nB_7Pm{e0(Og92|Gi%%61_giz}>wG25=j++2Sla0R_v zajWAnVE11u;#Jf_Q47)v=ecKUNB~dRD}{!kni!zE75hC|C#J(Iz$Q#jvP?nj-Z_u zPs2QzGoL7aR&X7HviG$l@7s%C0=&=QO>#Lq2I#)K#O+Ry-L&gP(hOPC*%`f&+h5iR z_IGp^_J+nrZy(Ytxl%Sn*m#i=Htq%lFSL{iF}V`)Ei!W%E7winCCi1LfClT5AcPF#ztBRaet@eb zK!}}C)k-h+(3dmU`;+vZ>0>!{ri+`aErJm1-&d$9a~h==TF^_KE8Yb$7SqqNB3}9Q z;I*)^x^Ew@)+EMaXd z@&N0Q*96y@3kkMNO@-l}G$8HzD}vkZgc*C%Bhp~JBD6Fp?vq=X<8wQ)QdYDNTqSoj zRO;mj6=gx9>dq#W!0UkvTnSsYQ57gP8K$d&tL!2bZ>~s2=mHIWEpVL&A;DVb2_3_| zgsDIs^mP%}s8I#dDB1%^S2A6o!oF0cN=*_;d3{oDu69qtlXQY~{Gy)NL-`2G?)yEt z?@#z8zX9%qe4hm z=2}URVZ+qa7&;n*mfoGY{REh@k$#aD<++S-#Gv*L`r?tUNaj8Wk^84u5()HZo{|}` zXV*^^B8HYZcuGuO&6VOH!oF3NN-p2fp3Sv>C#|QZiBuWJYr#_$w0-7kuR@5een_Yp zCO1Q<6^;y8WzS`{LV>v-7BXQaDriH`)h0lQ4HYiHhCG6xe5Ev?+l%%1CE!XiOb(61 zl9tLuNtgEFj;}8zzVJN`aRFH?BDw#;*giv7vd<8=Ksp zE4)hz!=Dri!3#08+jEUvn6r9nVboD(7U)xF>O|OSYDa&^-vsdv{)hNdVCLuyPoCOX zyg?Rop4M3?`&9F?5ic)fy?B%WD(TZZ>prY;Vn7G+RJ@`R~y%>f;we6YQ>5>lTdnwExc}}_VF{4&<4V# zRjDGueN5j9akWFF_RL$N%#s5yJpI+dtHG@1aABcv9_@ZeE|Y-|CKh<|@%)H~g!k~M zn!SRk)&O!#qimKFvc`i%CEk0+hDu5-x(K#Y1fyRS5hxp(ScxFpos}i!Ik8cWPWWzU zvdb3=;RNf2qzH#Bn;3|*Pt+KC+KwUcGpW4P50dizi$vPvtSi%JIooDTUDr7f&M9DV6MHJvNi_g=U?ljokw+k-W8H;uc~XK{SA@elO#M{?WDv2*U)Rymyz8$ zfdjdY)L-7P9L8FIDQ@sX8avE7-AQMrUMEC-YsLXOj(DE5z+oPjTuPGb-W3%Q;u&npJyS=!fvo()CS)L$2Nw!mQalLcL#b4=q(a zYncGh>-uIq}v2R(#nB`VqDBy8C26=Yf1`$X9GKoVTPU}kVRz$&$sPU9Z zMTrrrAxpnfRI@gUER{(`g&a`wLY$AtSfBSrjCYkqA(k>qRXJ4q1lu6t6!ijVCSirs@>EK06K?nK%g!Nz@D_5~=iGoJ`qkS3(8X}HHl zD}M^nDxV3_Tdbuu`dbdsOkh6na`v%Ce=Tz+wH$0&VBly6P3oj<&#;QAn znEy2h8-|Q0$wMbXBf!VQ^8(TOD~_rkDRS9|N%r$&qELr~RbfG814eD3rw@6Yr@ug) zGrkmYh8VyFFB9R{%Ahm@YXf=d2h1GsIOam0#eG#4aY&)!NP|54U5(@R2+D3$fh)_6 z$ye;|EoF|*_qZ_+o2P#8f#;~|Uc~k)Adfae+~kB+YUasN9>Z#iVdy>)Lx{HCN({kf zNqJOm#KLNSEu!iZLD4Ch37l@^QM7jhJ~HuS1>DF^=aXU zurxd8oVnBQwBGLm`&N8dt>%6;l;#jeEYmzpG>z{GO~{H^Syj{Lk!6BBu+>JopRT3# z_Yc3BVLO1UCpCj?%kvCe=cV;b?tU7UbbNqV+LNVPKEzjR3&^%KGJnnp?vh=5e$Y68 z;|Heo;yK5DlVYFxrC3$As)fh)j-MIj8`9KcxuAqBvl73p!TbD@Oo$k5Jpic%8Z91N zpxkI}c&k0poJqKwCx$wmpjtl>VP!xC4dxkY0Z`PK&jc!DnCVu94db50d{S(9U?RfKm%23)TFu@YO0GgQ$EgLx@v+x{8}XT747~b0o`9pAppgtE^(z z^boI)t=tDy*65Xaw*MYHPvOIAQ9>4YLwRr*3gtJ4ork%!vl)(&UnAs2D+GDBqD9M} z0{^IvQO^XR8vKKxj;#(gXe7t*djMH2)9@kll2CI5jNTab3xYlOf1m;SN#d#*WjbNQWrelW8^yt`QV=gxp366&YwT{ANH__i6Z$CC|_-BzU}_l*zcZqcQF?gqvAOWLH`= zLI-UOejIRBY-Itjv^3*(W?b>;E6u|Is9w~l_Wh<_4^F5lj+#3!(U4ARS2HVpmoQJ( zt*9K-wz^!dRU_z3t8|HbP$NEaRm9O_0J$UA*5Sm#wj(?fXODpd;D0oTc-a6@Pp<|% ztCLuZ@JG;h2j3iyhTt1y3D+Nug@~D!4{;Jb3pT=iCnD4BO>|#wD47Mv|Dt4$w=TEk zt)T&%z+f=Gl%$g#tk|WN*XC#Lmes*MVol*bv<}>!&4o-m7L4jYJ%!d>sc{+4or4u7 zxy5?4R_`-l-qm}7_l~uNx1kQnW%aTL(m64}^pAmA4PHm+=hTBfpRiNzI-k$vdw^Fh z)8zFiW%%Ou} z7H}xImC`LsvJL`*UD3?G2*m1LVORh86~0=n>^9WO?z<7bJFRR@WkQAtfsL&>c4zJb ziTf}JvPL&8wHT%h?s!v*2jS8Qv4+tbL<B=q3&JM8ME+7is9biD*#uwu3ZHS$+Q@ zn_@T=s7tksnkq^;+2I~TvViMJz*JoxOwW3S{gDV5Z{>MF>6=S6;l7b#^;8sAH`wCI zCcN93BR_!NsA=STZd)kWa63_use^(t_I9)Bw}lGzgqC8zms5N&7d8|KG<`g1&4#I8 zA?gL&ixna%c4j_=Z#!oJr-NG!>MsK7koKUpB&Hq(R`sT)ZjHVK6klRu5ucHW-wcrS z+b?!RnfHDl1rz@PoNDiZLR^O$XcGsyF<8M2kgI=d1vQOIf{T5Cr-PYS9t7sA@nQ8l zSOBbkx)IDA>b7A1JBa_l9qP&-;@M#SW>Bj&2Md243SAmUSpquzUx8EoO%vBN`VTgI zu-AoC{dXd78zQMrN1y8@7T;LKF%Y1(ii?T^qgUbU+T&nT|In0msOm*LNSx^ZBLyc8 zl|@F#-nD z&k)=2v0~mxhO!1*St~W1@Z^q=vIHMi&l<^i(j%pFLAouS%q{f!lv%**Bw)-=A|R4M zU8n#)SdJ&FaZjr;x7Z*2>K-j3lDT!52zEG`w}Y}FmXLB~^|A&Ry@e#=9W5e~ zVYOKTe8cLmi1LEnCEazX>7|C%SAksh+CvmXGOYC^I$-UV?Y%iz)k&JV4mGa$i2efN z|3UNDp^>9&81R-+x-n&TYrRH;IgbykxYwbP^RGR#$xkBUPc?BJlH8Hawk5clnMwYE zm>c($B)3H|XEn=NKGmMY{_93wo=v1%aNz(|^`?}5v6xMehX%D&3&}+T6m_mRX%yDwrHEMIj@yZLZDvZ2VbZR`+W9IuuHx&!yUM0C%3NEV%b?u#l%o$jC8b zhkShsWxh3;!vncx=otqo>UyoG4h>YutoL3b-bT+uXGdX(iPjzlTo4j4@f`y$waPTH zd?a2CFJbuF$)gj&p4wN~=hh>+vTTaIi^*KUckYJEUneA}O(uzsNV;O56;jDu+d`Y8jKcrG-%b^nmZETqK`Y1MWfS^O5%-ftY@_wd*avv{~{IVO%V%3G79ypz(BMi zm25W$CRcz}jhiae^(lIxuH9K6R^Mv&Ey5ar##}}(_U}piJ}yU-<=XdQZozh~wNu16 zeb|dBiB8kjW)IvEJj^>It0Fh4{MCON3oRo1;%k#Y^rHt z5b#$7eBKNjSe>{(zFHe%ZlGO>%Ms!-jJeY^Fg30p$IYBJZIW+)A>)2WxXHsMJ?0^C z7ldPQ*N-M{;6_3w*=i<8o}MKn<4PMXoW!$ZknxuST75KI@WV&!k!sf`vvqEw0Ue%<>|!6b_Qqn8%PROpWa7n~OUl zTXY3vnv=nxPCZy?YARYn<90PL$!~$L<{c6VNzg7qCOH-O>XSo-#5^Ecp~3vy0hwY2 z(A6wm56x?!N>aeXJhm;{I9Hk~hCB*r>cE7k-m|j8B#_=yOborjk$`>NuNGIegNFow>4Dz>J@I6vJ~XqA%BgqMR$jZF)od5=IXNo-GcjKKBQ@W0?0 z4t+@zbIt^v`bKjeTuGHEYF6PSubY>2RRz*(@L`plS&@dnBa?$gwvuA{1{(FMSH z%2#{3kFPNKGen+gmvo!=>C{qmd93Uyv&Vr)#dI^bWmt9=aA~uC-e3i_!b=dzX@%88 zS$wq`>CI{E-JiZY+qXlz9tMu{r~91B?A-KmGbi~5tPH&qL4R@YG@ z-2)cYcfL@Ww+>XEoWSub6AcH4dPx)2S_Fc|mdx`W@jSXf5>zWs(D0IZUIK+0ut<19 zNBw1%1OEtO^KZ-g?E z^aZ(SnQSxgsQWZo=n2b8(pP+IJ<~ozw3%}xjTLqZ!FlN4^utugfknm66{<+;N0Dtl z%sC8n>P5|IULIMpBPyCa_x>8@dY8CPK2OpYI-9B_2Saz%Fyms7sh!V{m@#Az4KwZo zGWD@$jHI~ux4|>je~Idn3nX!&r>iS5XYd9cruz$+)Re_S7rOnn61oyw-I@1rP^zCa zZzQ#%$d(x9T=zn7-hvOS;f|!FhVDdR#)pWp;kUvVNmClMIuyoIt8z!2!-qzXTDd6Z^7>*ofVF(f*Utl&Tn+zyU$FggG3F|Lz_sdy?=e2 zsYZcCy{W0H9HkjsB#cqo3c~;VdNEp+BPIjCtexMSxRFqfAs>DLHVm94Xxtm5N{1jy7%*G9}(Y#h-CWa@U!7)eDa(z!oM zbg4f}0wXD%r8?P8(5X$X6V58TJTn`K)9a1pGSeSCYKbO`q|6lW(O)OVqyHkwi=;yM z_jGdN&H{@XqMPgry-Cu~nU?fkGQ>oq!J*#PL=`&vgvh%s!{~l~B#H;`60=n~M(|RE zPn(aw6?}bf6TZ;>u*JtDK0f>0YRHZ&Hs)}Us+Tl#l||CW9K6Sh8Q&wuQ*M{EMrGU3 zDf@+>QoGzCd{Lz^cpnv~a3aXma?KdJJXm3F`gcw-+xNtF>0c#%RgR;5IaqA36!TsW zN;UOP;jOae^z(XmM={wE;88zovZxA8=;Wj~>b|;FHvkoSlBJFDEQ^@y)|{^AiRb0N zi4m(zS0InJrUYr9Ut@eJy%FtwH%0qTEoMw90ZB zOzGau!uhu?c+?Y`EEcv}gKP8>EggjsqO=z+x@GT0WbNu!&G+G}?cK5Br{7=khtGOn^;2sVPIZ zXjDoWv^y5+U1+D2Z-$GES=bjM0&`!I;^!eBJ zm~9z|)Cc&d=o%lBev41Fny&4kBcTdOgV*|)aU+naV}(&2^9;UPE!-{C z!o5eqx&iD8T}Le@Nc!5q6+dSAida_rP;4DKxUQI`*t#Dxx4#PJ-meLBRh2X_edNo+ zQ6loWNRPsVTZ2nItO=`Xh=K`&uH9nF7l<Uv}UYoq#VNN+PTS8ONr{(ck7V2Tq>UqYQoP3 znHu_@FhuL&~Y0pL>KX~LRDbA}t(sEQk5AgBKJUrAPTsTp_B zlvT`Vu#~kv$O)bH1tfflj~WK=!4hm2if5IONqhVYq*vm@BCRPq&2;$>oUtR!-J2ZK^Qr+KTI?*>;Hb1-Q%70Zb9*WXBDYwANyBfI^8oW66x zqDFixR1sE|A`6(zJQk$tea&3cbjXv)fMrak{Dvrh`yWYcgoQVBF_U?(0j1jaJK>G6 zmim`8nebq6sTGh`Lr?)$U6U zsihC~5(O@Da`LA91lBL`VfA34mpfFGJX!1rS?Xl|pNRkRpM}4sV(UwF@Pa4v-U3QB zvqycb9qO}a0HIoSC1H&=wZV&@oZ1aRsqU;3FD-#)QuD3LL(B=&6U5uPvZOck{)DPZ zSFy!VPW1v1tIbvs_L^E@U)iEo(YP>zDF=Z~J)iqhdD3d&{Tv@wV^tU4l(}Ha>HU#-TUHm|&|{S46yvb; zw)hrKnR-50)jOKHrZHL=wQu0`6_H+`^LLwKU6JSUFF4nGs6Ez1e7%IAM&hj+dxc?l zT4KG#2<|HC+LQNH$+Y&rJu9i9FMl!DpNVU~O(pA!dNr!x3S3oX;^!&RmtaZRDyyOU z=3EKmS#g<(^wtmN{0r#Rf9l8SsT<6>`r6=}iH|y^)3c1soDIaeac|))S}Cf@RJ$(f z^<*a99(?NM^@Oyjo2nYpkcDODejl`IN+01aI+Ll2J7|TOnGXl4`bjfKUVnm?nwfar z^+EgvKCE&TIdRaMGZX(r#Ak0P#G$9js;#*G#b>6y42+zNqQ#g?X-|E}%8f5`U2AA03v>7p0HU&irN7LtYr)vLb@6l%3_lWisJXCA7^O4uNBF9{r|3Xl!U3L)uqH~IBEN}C>z1z$?5tM4V=B=T< z4>otG%bD4~C-zGRORDR@9^!ar_Ul2crVbJI$cvi)SS-^X0Y>$+rmdlq3pRPM*PE$( z$3cB7KCDt6`eH}5?OKWBvaI1@($F|mG(=w0ia5oYKM!iP(J2hS38Ul4K>VNf=hnLQCsHT z9kl8#&0W+bR!sxzTWDw2&x!S%k&@!bn;8FcJJbFVjB1P?LDt~f5JMYF6ygnIt^{b* z%zY$@5sVfMuCkWiS;+73WV{+RT7*QG(JTFff?LV$WytB9az`&0z4x-s96ZJi>{+%b_gb;MoxH2tKS)dVK|?%zXna;6)O! z#{nWBf~r@<0xiA`1gv2S=+&KCLj=uU5e@F01kC;fvA0SYQ2QK)uh!zuC$v%E$V2g6 zZxrbIl~G0bU{HK&w#m7Aog>{#k#0X#th!xTq`ASOwcW z;O;V;_tgO=o=cIhnj?|>h7#Ka%A~#>5!JyB5_|j5*nt-hvw&8_Ry`X9V#`p7wyg6U z9mm`Zk<`q&5;HvCC?@SX#2b6mHX6ojKz#Lan}GB$LZ8nknllOWQ4SXJUqn|c+65!L z2nH>0GeXY{5I(_&m4)FdI6H$&;0nTM$d<;S`9?<)k1M565cLi{){#SW^?=409%>E3 z;Fl(n4R|Fr1noIO+pI$rh1(@)^_}$$LS&W72|{?$wy%FTvbGcP)EDz5@;0G~@vp%% z`A>+d)>$O+i^#`|Rk+PPmCrjj05HOqh^(&C2-}7$=*+ib$7G_lv%yHh?F4YwuSLS3 zP=L_&eAe+K5Y($D2uye#%O~fV75pPaQbTm>8ZIC|H{Fq#n_8GpWHWeH(^FMP13~>s zVASoW;j7i~Ur!BxFZ%8@{5$xQX+JHHk2_751FOX!R>Zpz^SLt6U-{4GN$Xz z7|x@mKvef?s|NIDy7+M31Z2$Xh^>ZPD9VbJWEVu--7T?{=Pv-xCW{4UaFNV#<6vmv zyjjOU{ehvf8mL@BRFe&pA5S<>YMdcu3gV};O{7-|X=`nwVwH53U7)7WgFC@BVKji$ zU6+fYb}FJP7%iU4=o8s&vE`Qlaml5ESggQ?AR6xjG3M)lQ=48^1E#-u8VER*{zEO8 z^vb7^%L@Ug4*6pZnEuL|2AsN1=g^2^Ini%12- zbwWMV_eOm6^NoPB212{h_Qr$gy8~}77ze{MN5UUA7Syvm?Wag#t^#pg|2HwK=?U`V zQBo@53Y>2<@ufF`xcL?#KB&0)nX@8d&mM8+oCi9!!R^8sd18ZRFigA+IMvE`3bDC- z6M>cea~GyvAB<{)yM@;D^F%-!I^VDo4PrI&p1QGzPBxf*9EjERn%!I@jUes8yO){z zUZUPc*C}(=EDGve606gh7Na7M1fRN0la8srKG};2g1#d)Nvqrobf-zGq2|a^MNrFR zI*ggP4-tR)v=pL+H76?`PF&XR7FKoc{ZKXH0a2B$tE%w*$*g58WT^MG7So|zQE4lk zHF5vm7uN6%Y547fVvmlx+M~$sT^4fXz1vFAmwxt)Pa)}%~7kc*3Qtl%uM?TVBQbM-Qu#^l`sP!HdDRb*; zmEe6etRn^q>JhD@P*)u#b^^1Y7fDdzF)>UHV}&xB5%0x`PQ?IcF79 zAV7VgRn)h_l-NJbf_@@Fmp>(D$=9_8+bbJz2_$&f%cD;-n{I&=wb>HUQ{M_)NappE z=xmKaAXd+4c5~x#)P*EuYdH&flY|`icQJ!`YAR|WzJ2B_;WuDc!}OT7zLnO$>6|s} z4SMyi)-bR{>1;~p3+XnR-OI2a7mj0#&@({M!+v$%v-oN`DmJEB!Ez(Gt5lJ5NZ{%g zz5u7icn%C2r;9jdU!BxUd0le4R5R^RR?8mf%wQ>7JqIbvpBE{mn#c&Gc-$MT;(G{C zgI^RC-C&R)hX+g911i+!{}d^unu7=o;&*|tkR6~w4SrRGlxn3T5EAMXu?zz#YRYS( zr_?|v0zJWw3KnxXbg0L)7;`t8zpacyjK_7sGF~Pbd+Lg8KD<}8438UQBWkd&28q+2 zbwyM|WWYNcxHp;Ypxl-c(dskW2@He6AC48JwSbW0bu3wkk zZ4_-&%U7ijqkAr9WpVG3xKrK|aVK=MxNtuVtGf`w)Go_JU9OweHKp67cVsyep+qg$ za^`in9P?sbmh?SIy7XE8*2(i4T*+#&<X29e=E8JIGN_YE2Q1lFDxO-R>aP^D60C_`cYvyE{j}BZO6*0YPeq4@A|XZZ7Xx z-s*;JmU%r%V_CaHk$OwZI=Y)>1$k^(*XN|`oDaoZr*yZjT#7bSg}6*u;U6JRt@V*8 z?CxTARMLC@JgeFig4DfQRd-iLw`+&>JWYDqKNc%>clj!$Q;GShbW3X?pD;!^$3l|Y zdb#LY(9Pw`=lfw}4TT={f)>@?Mau6DVpZ>us+06&!`##8pJCajD#hBkiX3z3PXVD_ zL0x;7u(lk`wEyq-@(B1p2>eVFywv`PlHl=~)>$NTH`TuAiw)XqiT35sr39HbONE*x z9-5|bTJNa~PIdcdpr4}Y&9l_e((^8T*Ome1KOEHR3C&+>pF-JIpB1v{H5GZ)fa(KSDa-AC{Ry*Uw;{)8ojbKM0YnTCgb+^_~%8_4#29N)b*`Ffz5xPm3SZjr}=N;12KTAE#?*Q-WzG|*@ zGPjv&bu`|hZ#w)~!8N4d=-#W@v*l9WkCHYnOF>y%npoatKSADJKT9zz<-UqYUeKkF zEN42DsIRn~QiHpQMgyd{_>TZn9C(?FB67c9L_zN+Rc&i0VyPe`b~G zc=2l^Sy&31)EX;`uu_X05oMl#ZyJl)1Ul3`T1=@Cd9-4JZfjyyOGwq+Rm4O`bx+>e zCUWmqV>L%Zh}v>hQB!JNBqAGmJ)SIO2vn%&wUkosv8bek?O$U}Z=#$WbF#7fq%1!$f4K;2mu&XdJYt5450TyQf5#a00WkZ%NrjYlx|89&eV{^SYgy zEaO@zP?Oda8Qs(n71`{@st$o5^@CQ`O=UZD*Bfiaxrr}8OopCJeB@*_hwZ&xJRR7(6 zRF?5qC{PEjBQiR>r-2OFE60jjAV#gVt|%&Xj3J^v#OF9=Et^7yx>sxIraJHUm$I0r zNld$*tC<(EE=Iwd(07O8kTNNRD$$%u;*O|P0_RP0*a(u%#SgMX>|+H?kl!U?%(@-1{%=Dm zEuJB3Xu>LIjpGzSHqo9+W)htkmnG&UbBRngr}sConm?=$HD72o<}F_SED{y+|MG2M zPUV?d{jAM-6UsZ$-$dJ$O?Q|9cA5xNWpPWAlM>3H;0fL z@L>t@G_lcJq&3?SWRLqu#*tfy43C#5dKsBSbF*HIWkX~@uGZU96qxsmMPDrA?olQS zh=E%@q6K)|iP4(?0~NYo+$feWl7_-oVuZREOIt$%kC^L&M{JCfp+RlGwFqgiTSIAA zR1v}#UKl3X86wncT8XFgk3L)MTL6=KLtVRT$3ENUV^VZxtlMmpPquf^^&L1LRxoqv z5{OWHNOP)o?}x8eZ}%(e?XERwl1Se1^kKK-OXaVyKb70EMwkVhL%K~vP)3Xey*g8C@XQ*bEsrfJx= zDVLC#9&s^9#RKF@GsWHzrr-E5)vO00>R_$Lb0#HP(*$1Z$Tn#u6+MTFP3qc+23@RZ z)fVup72PAkSarW}(;h4Jp#R+cS&sB3l>C7vyK(HbL{ zqS=)7Qg&F&awnvy%r2s*t}RO*&0O)8AQ=bh@mXCvVekGa z7SIfC^$#szQl+yCe|h!nTzHxMNjvWb7RT8WK?^GD7h$7d)8oM+#*>K2he`qT>;bK& zLX;=Mbxz5?yiDKIiVy)!dokZN}1;v9JT6NqwhJ?!-~n4XDxj&`xEdq~z{dyA~&BCAT`*__2mb4~T^ z8GA#j1()RKJ3G)*;%aB}Ts=#h3sq{hF(R$vnR{q0FDWf+>v7#s%8E9E7IQMmxW(LcW{^d_MWT)$FBa>*#z8E`+Y6|DFf#HSC{n{G zh%C<%bvM|`JTb+l8Us1%J+0~ZZfmf_RJh4LSFlHoY3(FoZC{hN3-=Lwbz?0w4}G$j zKS76@I8nrOUoEuV1&Ly{@F3_?-)nK*R|`d4P%T_*Ux>OMAKl$Wi>TmQcrVF1Vv@+} zzFKI=(moC@TuvQeoOs&iwkdEr&c?+{8c!AX9CyRZ$ zZxjlLkYt<3b;wpa36j)yQ$$zy4cloIL@)iC3#u$^CumZyYGK{itQ*4GF(joQ%)u+fKG&+cxrDK* z;9UHXg#B^4n5+AmQO8`qEW8c z(2b=mYakScD5L*`xFIjFl8H^4KZry0iwurWkwxm zTY(z{Skhilqu$Yyx^I}CZ%pE0E4{#G%u2r^Q5PI2cIrk^MVwVvL67P@NJM!~1=KO~ zu!*p-HPJ-7O${rZ0xhcl!6GPv{R?F_NxogCT#|Ny67{;4(|zMRl4IRskZQ7SV1d(7 z?`ULg%Sqc=hlr^nSad4WRQ^q{tmjflQKPlbf453q9D3?F%aP ziROzkC#~0sXq0KrKRG8?5by6BB%Pk8UrM*%MM{u+jK*9yfJRMg6s{v8v}qiZr66V7rWR@M6O=;}Ur^|l~;`P9(Zqvk3CfPoRl5i4kFh4@fO({uo zlo{(jXu=s=0FBzXS-7GsyjTa%tZZ5EejqCb-mK-M4t|E3K}Q&d$zFW$5_?BWe4A1TUXPnl#O1zmIJY9-ao_ zlXHcz;yo2X?T$5JysJ z9AdlcX7lI?ASd`aP^yzN!dvk<7KWsP;~FzKyrJ8in0qm3)z#TLannYk@O0k+T6K^v z+A*WCpjY$~vf6Atg(t=IeHuiroJVA5Pt10uBJ;~(g77F0Lk$FVT>*gBp7Rm3=X@pl z?hqVM7J>CXS%7wabIAW1p9o^ct%z~>36dA)T~tAsbXj|)jDh>inf^DOpg&~3(3?GD zWb~d}%b7V1QuW3nVXjlcjcu9koc;vN>hxoTeokF-I*xjPc84B^HZuKp;8hnNC*O-Fb3S}IxWC_EiO6% zp4*R@`W~X*Mpyg^wG}{n$}gqtVQTBn0Jy6$tFeZOQ-R)Rn2mPYykpOtiZlI1MF0MI zlDVeOrDEHbLtoadN389qlc4SLlSP~9eyxu->DKU4mS-m%E4l?@)XY;vk?F&)k0SrY zIjp1sBGjs(PCCLa%V9x-phZ2?&4NO1%3(oolAzW|@oPUs< z+__>B^J;+l$nmWNvXB#@L2au?rQK1H{OfG2WJicluV^JZl$-!KZvn|L{{b52AAde@ zw9i7Fasj?tE{%66_$?#2t8`&>Xxxwc1m%(Q@X>7Fgg_*+h83jYpg&0Nmu^m@(GckN zU_ojz1nu-&5mdSni%5{i5yDy~K!#fIJJHf@#tCwbu%OeSMQwkH2rAulL}VPlvxMdB z3?*up--{e`qhV07j7UzX`-D|Zgdla$WumI|pd}(z!Ojep)B-i?c`eD@|6fN#c@Igl zn72vHBwgkAub_1+(d>9!9p6wRcQc5bHn1zgIwV8d@o9RwvK;3J3%Z{K?R}FJkJ8SM zvWrLgf?S6vr8Q=4YhM9vH{rt?!I|$j)l^O@(H3?tkR?7q66ahg63tCk-6hd=Oo~Ny zK#yAgDiLMwE$%i^=2;sS)(@K0V_MiRQ`qF0HRnA#*7h=Kn|HMs&D_u1T}JbIP*~Zi z5TyqENtFFE)gbhxHI}$5)TuYL#IDF2(Rk@*EndQnz(PMEpVFY&<|C!uB`(NO!s<4LFm<<9_se9f|J^gz_7rJT*Nf#& z|3w0VUdfVPi=97i2P-0tJ}%Lss=-ldQPkQWeQ!;Lv5^X8L9jAjbgK3 zrqKDFFRblc$WkNp_C zwD+p!00MdD!(6|0zmdk&2NLy3w@T)j_d*51)I;baru!xNrB@m&NWPys&{xJfp1KV>F1SN!9huZnR?h+HapNPfm10CunEvB?{zc$MR`{G#11EgeoU3nvIy8=o|VB57b=+)&~ z!{jKsCwp!oz0{ZFd|Uki@aP4Iu1IR9%wc9)@2vTgY;HJW9UGF42mc{OvGhQ)jNC6% zM_D_MSmdJ*L1gM-5n0-^6`@FdsK<4)6pQMF9<|9MBFemmtIBq*T+4;;i(+a0p-L^$ z(z?}N`b?77Uaym=qaPJ}ofu)wlHplci7)XE8{6zGC{sfo6M3cACL%0j{!L{pX*ATR zx3#3wbAjk31??_lZT})|=RGdwGOuQ+bLkIwnT<7F0Xb^i6QZf~f<}b)@_I{I&@5u4ibbC8l%=aYb(&xljM|Wqt6|%RDbzKihYU=Z%tMp-l2%CA|CO1}e1jMMH zwW4mVetw55OX`hznYvX^&NlaFp6|Mq2WfIS;045UCYM|I$}cFP_xw{R1Geo{nJ}-1m)VwpNbUc+u+5Av zfwoG0DGk#l!KB`JL+B2QjxO*a4Ced>h2s~Oeqva3d@yOVi02Bq5m9pODVx`YNh6Pa{p z@Tos&(g>@G*Kf#lHxb>hq}fsb_=ec;UaQ9dwTzm^;}GI%k*h4xG9dRifu?7VDZ7Yr zC+M)Ic;?F!W#@J&O1^BTF_*=C@cL|sbP6nEn-3u4aeP=ZlGSB?X&Hq=Ceh)(4x8Ek zN$m4K6n66suIP*q+3syDhUqT&lfj~s57FUG6C4)=&Az)TNX!x66-tdwmJs8}VUv^YuzLJpdNe)7?+>iLZpdUX2^Bp=?j)7AEizczT{O_hchv zAwc!{x2Om>uop?*i;CuSE{{v1%+2jAq%Sn6N41cEi&`QP;&Y@h`AbCJ`L$S~UQN8; zXTt2KfLQg{!`^8%wzS&G5HP}?K!f}>d#rAk`C99mhbkUAsC?>s@TwJJVDshf%7+tP zUb%HF_|+6P@*)#r)q8|8IYilvn9D(0!SYA7}L&Qpt9+1HA@(YTuuQH0lBtw5q|0Js6Z~h34J5 zXuDO|Ns35c@~mEkHpuZVs7qGDSIhaZ0R^u_-yL`GxDwFu!cIP?>+GFo2fADtzc=B} z=_Bpnj0o@povlo^^U5GwX;mQ$*r4U=+6p_BlNhg?m3jJrLiJr!c&0>=C|j9!urkqb zaHzM}5~AYX<1!Nz=vrmAe}PDy*HhRc$*UlzDwACS9(6*mNXdfSsZ4ercvNg1AuHbT zmuW}8BbBL!fko}zTc`qVJgmG7hPqIhaR$iLob`mUxHq%R#05J~nXUs&>NQOlN#Xap zO_}IpBAO{phuVLAe6?Dx$H;AZH$q%3R~4mIT7Pc?W)A0=>99Tyu{k*meY;!TO> zW@)#X@!+k%xB?&6q^TZ^bLSb1J+}tq4fwDai+8Dk<)~yDjmIT9nfDRtkuf0+*wv4NG82Qn&BS90RF(q>ju%V^(H^_u37 zKFj%`c>CI3Bjq0x^O@V$G3B98#&OCo0kzs=yZZ5mJ9(LZ3aHf=n!orMx|*D)NsIX+ z0Q3Gtyq9k;>8=AW9-9l`y#2SAXBRj5XR{17HtRa_}gdv`-Li>p)3%^cigJgIk!&nY;@?sWuxVywNu$LDNDu z^dOL`XEbxbX0jUl&Rhyl1*GStoaI|Qr?>#m9iubNIB%!0m^VqxaXW|^0&akcUJT_( zLucdMRKd)W-#~^MHdwR-T!UPr7Cxez%{4if)|mqK2Df@w3y8i7_`Iu}2mdD8#X}_B z(N_V#UzK^U2Bq3ZkB&F6=EKeeDeF|3yJ_gY%~1Tkb~>odhT*FpgYbXLDW3jafnJNft+`h6cbjyiLx3G%CSz>Izlp+7xZjAYNL4Y8G>!yl1pPPZhQ z(`f#a?RtdAYMcz`6)+Ns}MWz%IrqQ2i&8nm?A>BDWQoNQZ?@`@;eBPo;bTDf5oWgmVXmr9yvuY?aj#*$#?%T9xQBV z&bGlRVJOdlK)s?__N+pAKr_b)_>iFQm@Wyh@6~W?%6kp$$L=G&`B#Me=%IqVSM|v0T+Z=^F!oD;Rh@?kcJ->=g9S!D1)!?`;es4E zl=D<=Psy|Gjm;f+1kYpbT>z|J*XVm!Z4;pTvT`|rpLK*tuihx`ClA;tmjYB>cBCNh zQMK%RK@Xf5_(ou=s&5TBu6+i?mEBYjOsZ?#Ga z0{e$hB%^_4xW**l+EM}+*gl2BxkLPID-#?8Z1uh-*sY?J#{-&GM*W6RH*FEwfmPBi z&ah{Ai^|vo0jqYa*23<_l;I`;NjE`j0BBe);tNiqUWUmVV;FpPOONls=3GjK#w0@D#6G?rqPqd=fuuZhK-KmNMO zEX#>y{|-q@;JBwmS^_F4Lnnc%zAgxKV7pQRI&|E_1gms{V1t_S)?GRoa~r^^&oyS? zxTm;ibKJwAz2*b-hhxPOft^`7pmBE(&&azi1oBdR6dCc9hul23(Wp3|67t!LB0<*u zBx}A5plYw91-XjqqemqjZFodF(Lv{1avALeWR~e5P@ij?Zxz((=yi4-bzN$Let#UI zI`gl7#iPa>oX6saQ1lgM^ueX0$9=DVGtipHL&rfEh@k@gBTf=XhXX{Xf6{aWGueix zwo{F1{Gb0;CzUCFJ^>UjoG27KSEAL~1}O!HA>RR-I_ae9ARF5}FD*0V1wd0foh*=* z8KM#0XFAgf#|AZl^T}_Fb`ejI8>%M&U45h}cC5${o{he&`8xu<_!Q9`I6Mi>yi}$s zk!?<}*nDTRSL}6wRg+H@?8QrPp3SP9)npT9XZ_f`R-XArCxVkaw?0Yg@WKT?oeA4UlT7#tj}Tgeh)M<~^@0 zb20doFwZ_iv{s7gT})-n%K)eLI#V!5Rh0gAER;4=znaQ4>g}uyI~|DXD-AomB3O6N z#Aqv>1+=U1VP$`1<=xi-)1=ouZ}c_3 z#}Uhinq_Q-nHT2-FpGCtl@swFf8RH?aw zBK4$ZvvwGOm!Go)Q_6VzDA|?I$vzc%*5;51mc_VVKv_N z=GRDx1Iy}z#GAZXcq1!2zKJ%c@+c6g4fLoyvM$O$2WPr%z@#46boxm## zpJ-NlGkgv8!oyn36~F>kkbs82O0tiLt_(TzPv7QiX3l|By`h<-ELMgCfyq80vgLP5 zGLMWhnc=<#rv4tR>c4jhb*ZHzbE@8%Nz)YzQXjV?|H6@|iZ1^`Wz#hq(42}NV6m7> z)6CUIT+^Qu@%DW*WtPvAxrXOP`SRM&5Mz{2k1CJqXp*Cxx{#k98SV77v7P1(w;50I~X6vq#>B2)lPq$>hDC z0{N}@sAeu(M$!ZPAk6zP@is0I-pDiB=MQ1lJP6fBe;3xsD{`P;gqgPksd`c~SLS0b z!_KCEgehMo%7sr$Vk?`Dl|fm|Pr?Gu0JqxV84+M#4-nlj#3dlGZ0`#O?d+$E^kWkffDhHx;9nBwc(|bGu+1nH++LN?D`gX0H4dNHTu;5 zbl})061*py8FqUO40qwfs?nwP3x+Z9?|K&=BR@&V6J8hOz%xA>F3=SI%@hoL05H`R z8o1PEPtD;niuRJYUMFSjTM7F|jlFA$5*CQ<-ap2m>%0NbSMg!lxEf3N94rj{5dn`} zD!|oPLIZm(F%Gcm9F4ti6_$X1W?m{+;Js!g~URqn;)_F-GZeV$XboOXH*DNL%8Jh-&_3Ub;%aPxyUK%_)xH2# zX^mWsEr1--q%I`zhc$SqomD}GrpwdJF(8#dGyq2Vdx40~SRwYQrgMOC5?1@&lxRp6 z8e0v5i-E1OE6ZrMnkr8OoI(TmcwnlhHE=b}xCZtX#ifMZe-#m3O+O!0WOf0fI!VJ; z(~bljh30a80YQ&kT@+W7kD-%rCKv~7HERtasHUNEABASjM!>0=YYApGWy9xjWZ(v1 zs+%-$HDyBsd&|ZHgx#~Jhz`8HOxMTYDGvHYSH({xaTYVExNHUzb>2F{R84V_2EaQ! zz5=M~a}8Zhf5~Ztam*tqZ2lh!J+*Ev!Yy#}I(3+ck1EgGD;OhFd^sPBAyN(41R6O7J`M z5#iNTTb~n`EwVc>)oB{Inrf?oz18+2!hTO;k7%&fFA;6^?U^Ida`K1zfJHb3=s9D&ZC9rg)^Ww@XrIZ8aXfueDCT!XYM#a zs}D4O6-D39T=!x)BY#WC7Y!2S_A4);e(rF~Si`%ZGv3T|EhyBa9fYU);;Dy`Mg|-L zWc7oFuVPAV8%V<^=uJy+yVh$kXl}%Z`fL6VCjRN1> zXEOfQfL0G{{8G0J711BGb&V-rAd38Ml7v#-ayW&%TV~{w0IIedCCH_^<#6QiZkc&@ z0)={2^Hg6ObiZlT?T-lljNK&}rTWWK$)IZ(Jl!&<;$kqU-S>!uCb(N>n#o{LpKF@x z>o$xP*ex^5kHqrF(UO?zv&7deGyKg!R{QTM@YPp~z>Q!`kp#M0WiO#9)$@nvy4mwH z_6C4ef7RHfdj4?iVm&`IJx)w5drK-x_55Wqd3$~)nhy@O=@=oZKEr)IKf@0MvU*y> zSKp5NC(n$(l<%P(4g2bxW8AbH*OCW!cqeqNV~;b?hhd zOF8F?;hNjISoOch1O2`Uf?h>&)vCkqxMikiK%(Bm+2VH;HQezLL0_%7U@CiqU5SSk0Ow=%vnq z6;DX`CMxD?1dVEtQmsCljIY)vs?TU3{}e)81Nlv?*+4GUl12-)Fh0}%hg1}flO&9X zr;Ge;L*mE-E{$zT=h83+xOOT4CQTE7ZNdPWaDR9%-Qm8*i{l@HsA{*;0P~4+tiuk@^aZ~LLDdX7vs@?}k?5)CL zx2JG7n!dP|qi&5@>bip@>XxBVv8AKUkbDm!sRIs`nBEN2$#pw>41g5ks;>_hfORZt zF4)d<3pZ1FI`;_trM_ZSopvO?TE%TB?b-Xn2=201Z*3sl&QFQXCt9&I(?&-;_}QUx zRDROUY3pXUsn*}@YyF9+WbpqH_>`omw9lnh53XNCwsjd~>&yY!o|??Q?JbmypYa$m z8~0gT2?)}EIMCGDDba5a$SQ>_s=BQa6qhv#g}q)`F$LaQ!On^xv)l-5b-Yf)5Tm5{ zGq^}@UIq~Lh!UyxlqyuJiB!}GSF{58#k3&X1Bh~w!_)pQAk`gZE1qTD)tQ=tdr;fp z0yI-#6t))us#eL0Vteoqs<=3EQQN%R2Br-%!emc3t7Qte)i$6|-)bIvku{vBBb91w zory0r zRbv-T$B6}S-QFo&rOH>Sbi~8+{ZWvp3w5eW)jeXGn8FhYcrY=WDU#{815&-eNK#O$ z+!n(vYNEc%>5|lqCbiJ;b!yfi5bV!Ftk`-KqlaY$_yT&(i>0(H0t4;008&3`H2YY9Bu)Nr8zq zscl%#y+xI+_Y;9OpDqHoFD@{Js@ds!FPkCeA+}oe41w@;+Fo5Y1nMIsr8bSwqtI zh_7ZW7Lb9(?HsV1j-|{2fEs+6p!6$_;@;QB(f2@1we95+-JVuT3grKi68>%^Vn;+( z-(4Z`OW4)M3vGwixDsetd{_-fi6W!XtkUPN=EoDZXEAR-&_zZo^Cur&rLwpoe$bOa}Qs z0(s?H(Hajd69FJ_lDTH?47KzcKy9O;f=w6%)!BhgM;{DetdW3GPid^+hR((sH|xMD z*%nvl$p{}3!nS{rgav1U7a=}Bhij0f)H2SX>wvSd#tH6(Z5(?5H5;$`&h^-NML1L zLqXfwD`LKZ%CJib_SoA6wrI8*T2mcaY$?C+ja63aLI1hy_1S<^L+=nw`(CUvq_(tW z8|c{@S3ANY_X3uBM*{|rKZ4TkK7+wXUlG!oe-&xtiWNO0xwZi@B1sg>rAq*<_PA5< z%U9~|tXSz3fT-Db36g!)dKpG6WDBq%XOAAEFk%zHaND0C7H!^)v13_*1H%V*JCWf0#J_eM^ zYkY%-@0W3b_d07uQcSHOB%g@*ejA^o2Ev#syL-|1-=ZWhB=tGj!gf{!(VyZXCe z?3d52u8tnuOcy$vQlzO#znsk&e}UB3CL-nf-W25O6Qdz#&{ah)zQxhMrcY1 z1L@!diM1KvEW}kGz90bhXwILKj_iDz0{Be%A4FBXUo9D*_UaetX%pwNKIY#VQPs}x zOZ-qH%ui>U@H$E}wr;x@Di~uQL|2PHu`!hT6kn|p(}TR>pCQC4P+j)a%}OF>%k7w9 z$(Ocl4%5j5O~u7Z46%YBrhXQ`m1`&GK~uUBlXWak84~sd zf?DZIfw6nJ0GM0~<4nA1Mf(YO(`8HAX`on9AE2nSG?d*g2SDYM3eihE%BEo5Ds|b-z9pD^ zCAtV%2gLcPm}SN$+Cd{!jP-wn)$m=QR2Nor8$HaIVH6{N4pG(j|CRXmnAWF-&U|K2 zxN%l4g#{nur~~U*>wDl_wL)-=Qt8q`TaB#rU{KtytH3~4l3u9)2R zt2{CQ&b{We9=tQghlKGuB$a`&FxlP~gt44bv~*2L;4N$6tChh2P>CH$-<<@;+#O|W zXM+^jwrnPqfb&9o8aVP8iX7`D`s|69WgRDSY5|&vJp2@>PK~X)kTb$CL{|UM2u6MM zA;3uZO$q_W|38X<^g5!zXtSL7RL0w~c>dZ_fZ|lpCo~!6EFh@o*A*ChDCtcI!B~zz zZu!`$8FKgj}y*^^*KY%F?>HqQ;y zjJ_EYt|YvKcz-g9LV;7}&V>hzH5M@HmQ4i97%{oAoTup%{IenGA;eelO$EgETv=&x zgK*XJN8b}MRcdpIZVZ;((cAfv`2hY-#8vNYApl0rcLV6>i32dcMs)Sg)`DRaBR2+$ z0ln%TfbbO}tB+%X5Sk1iP{--F!+#N1ZMdBPgqo3e9QvbgiE?xrrc?(I zail!$Oa~Zk4uI5)L&XY@4#QWgPQOQWdJuhgtgxB8Imgtk1p}?P>Hp$ryHd2q5u(vB zo*9iC;EB!-t~>e8#zxm0gp9O!IFJqyB(>{Et#1{|rF#+L(q{}xWTTTSi-I-{G0qag zIdMl3Y~)c99PVPxJxC09K9JNcI}4n>5^Cj90G$2_=Ry+=3lpI-9|ELWu&dx2cGVyj z4RtR1Cu5a@6`l?dwf87NDwbgGTy$BKeN(!VVYnGUQdem>qjqW)mM{;T-b!Tx-cEq4 z?=Jd`QeGU;^7fc$8v{tCHJa^G2+R+UJih+I1Y1a8&uB3F*nT-+?mbv0=9`2$bPqeZ zo$CC%*XnWX;sNSX{9pYZA6>ns@`kqw8EoBKd;x--9?+>LCgG>M zpINKN0Cfk2{%nMvdz21+okF)i#2q(r516dDUr^|<8{DCH|4oO!OQBsKyF*V}u95Gf z&`*reXPmejQl0I$@=7kvo5Bfc^KMU}zcxZ|>8(RwAmmN(-AV7zzB+Vgiu>D`JM^DB z>d-YQbPs%Y;yyG{hki%M{qfxiUGG30x)a5ne}FsmFZXI|{FmY;)9%oNm5%#7g+6G6 z&OKX){z#!OcDdvJbe|60lz3D4?x$tB_=rKm<-+tDiODVK3 zzB|Z&UT0;=g{cA(H5Z+C}o z?1YY@(DRMZ9h}hK6uQxU?zl-ObSnydZ;3m!$qD_CG>`eaJM5kj;L2ZpaD0JkitGIH19VhgE#QU-l`t)k6 zNO@k1;*P*~r{w(SS2}bX3f*@jcj!tFY2H04^zv!$&{dt#Eh+RTBlN`mHS!IlYWWOz z+=+8^=-U)}Q^Fm3xP!ccLYHLRp$}zs+|7x%KfXIDdgXW>`ZL8Hjqgrq>|vdvUKBTb zuRF9EZMNM4FQK^48llHLqeE|@(D$Bp$Nk7bew9M^KuhcJj)d)PHlE-J!RirbDl%&|diN#GUr2PVYSwdhiYI(EXjzCn)rLBlPDR zHS%tx>L7e~kdJcW?nt4l-0Kd#(+PzQ;c9%w9eUog8hK-iyW9wU$%(rWghmOgx=C; zHOb!?g>HiHj;(g@r$c{5p;z{GhyLgwzf8P4@8%9Y?s1*oe^TgGhq^-_bwb~#(3SJ< z&?lVGM>(z$dR;-Q8bPX7!gojWhfdswDef63xI+g#p;bLVp~s)^4n5@pjrSLp*R1*9rt7>bXQWf^d@)cX-??c6uR5Z?$Dc@&@Tyj^#|Oc-#eiXQs{se+@b$- zLO-U^B}VAaPUx)^s$O)*O}?blyB?`}$_V|(H#&3~#Xas_cic0d)Ryc^aj)vJx+@nh zSqT@MS!2-+D0C%!ck*ce^>yfDgnV}&cjyWS`ECl`W~e)Kvtc^!YJ_}(5qil49l8$l z;=99p+#DS`oI*cHxI?#S)1h$+J!!5x^wOtvde^1U-yi1={eu%aghE#sp=&JBarx;g zddb>RHO~p$coEnROmR76FTf^ z9rtFkGaU|bLiucn6<41PaYA{|s}=eI#ic#3PAG3RvO;+Ym$n)?q2D{adg0ay<#k&t zE-%v2x~&t+Yjjp9uinraofFE7FIFhK@?XS)i4)46d@EFY@|{q2gIl5ObR{>q6Uv@a zE0o=mR?I<&L(j>$bbyH?3zMU5tt z@7_g|O8durp^1L%>eYeuQQFd)&E)Ze{YPD^!|?>aD*wrvEh+54Y)UOytp57!TEOpG zC*RSU&MbiQhP;J~yZR)s=^&HG(h*>07I&>SiD6D# z+;H0Bt~D{YwqPM*;Sl|;^%!+GXe7G&8@_a{ZB2h;Zh+PEsbr4sMtqD_1;pw#i~k}v z1D@u^7OO#}mRRZ8V8+5iYc><}kaTwSOkyp|F$JgJHo~ck)dPsF9%Kl7BNet3d?REV z{?x^s6J4ue`4B5v$1d*d>{^{YocYCFy=+sG|6p;~di!7zi0%nEAd^07Jk~=kJD#(+ zp=*t%Hd^O_-{7Bs?pkMjc7BH3W)vfD{aM%gSV@LY4hs{uQ#Y3eUDsMzLF-`04SnmC zOEuHV4zD-k`-Tb2j#yDa9%CK3K!6C?#0(&IlEz^hnPKh8jt=+&Dc0s@2*Y8Axeou8 z8J=vz9sy11iEJst)3Z79TLOGzGjg^;(K=^HkQUpA9JV>j(DtGcur_l4n#P($rjUhi zg_7V7A(STA#ueVHeIaf3vKH97HsNnrAkJemm-S=39ox$mcda|MX$Jp1&iYfX6IAJX zTg&(D$=uuo%GbihXLPOE(%dfp?qgpLjWv0!GIGs4XYqj6Nv&gA_i5d`b!_WitrJ_v zx9-`xZ|k_$39X~g?OL}fo#&h7@(VMCBr0lOw5wg~lW}qUXl_11P&pI~F!jPhJ#UD& zvT^`!na^85l1M*jMM!2ETeDbApWLIXkNlQz z>uljAcaW{sTEGG%oO#K`YIg$LpgEf@WU|;Nz%G71DYW?XuJz~yEzXidKzllaZ3K%a zKZW+Gvmp<1R4QuL)K~&o7eB%g&X=L^I{rk4CHs(zyt#AHqJ@^V0K0xuJC?r^Fd+7S z*bTtxU47iY<~#5%viDD$Q2(&&;PkEytUqnacG87^=?rL6NdLO_CMrT#$f(o1dfWfB z+{h@)t$*o~0)XYs#<>mI1^D%h)eE*p3 z5Ju7owkaFSXXCL6So&Bf5n^zMBRMgu%t%60PpijEwt<(H$zxek!2g;%KbdP`ASR1J zUJUIF%6q(L&j|}?hgT{;s%Os_{@ZiUJ!73IW6M6{}sS4fuNOKuyDY z`3ErBz@9xRcUdP|OERymZ#sAT$+n(Wpxt=oC3pa%jknH8TTR$t{%L|7e|G;kmA9!H zzfi*6Kg__2e=bXFJlUN5KG5N&QiWWy#m%CfbhFXA+kYTle+jqL(T)+i6J4)$SPGq0 z1y6vzI^g}4%dO`}qY%5oV9%ZjY8es<RVwj~G^7quI;9Nj<+Ek3sLw4*jJjLlC`lbDaucnE|;?Q6Bt zi+Dg9>&&3aGEm-PO!9Uc04#jS?nwtTx90E>~#-LJbbW5uvNzRRmp_#}f1;p8% z1_3Z8wcBJ1tL4_3tVGOA6*_YnS31U6oF*GJ86=aNjX1AvNzDsfBD1iaWkSxeJc?Z4 zUk|Was&unuILc4h%NyG=-R3MTcM|LD&4l2>S@Tk+hm?(^vOa-;x0Pt6SPNSy*sH8%f z@K#lI|5mJe&G7X(T+94Fo5i1se$|!Dtu3_9xfPh)26$O6O^CG%BXYNKjj5*KU(mRm~-C^fg=~Tb0}XTC84=cMnUs zN*lkJHHu0Jn=EE`*Y@AqKVs5Ay`?U_RabmlcW9j#TA4vHWBJwHhWFKU`Q2a1B_z0h zJAI-2UFCJ#j#;c)yZ^+j(L!5JWtP7!qaF+4=vY{!z}m|tB&2J$fsFdA$Ld9EuxGO5 z)L|)Qp`&n(UsYvwVnaeoRgOg~oqj)-ao< z*c8;t#xkmuO@c{iaFoCvPcqdSLCY+Z0eZ5xxR=YXwYX~)%;6SK9yobVtlq6}g}4W| zi`Dket<_`ln8^nrd>t#??lT-#=35q8Mgldm{!aVITd zHqZ`N-rIW8RQcCIGvr@8%#wd?d!YTVPIb%V9z6=sWBI+U`8T<}=k3*_2Nkq&?1!;@ zLF|W0!36;S3A(y{Q;U+hcx+4?xryIaA3|GiPvY&J5QSlfGjulr9&* zKiTnJz{x-AHR0rT{4_n23Qq} z&O={J2UE-?P2&+yTzQ0( zE2DSWc~`4CkX#o^oR0Yq=trMTtg+wVm@J8o?#GJkCBZnIowMCaUJ%#yIGz+YcIFG& z_L87fWZ4o4tXRQol!6!9_L$=+6z&h;C9j@6?ccI_`4_DLlU^&fE*$WtO7uJ(LmSLv zW-d3BzEoS26(NOHKKaWD__y_I2d^{8?;YfjO%|*mbE$#WvIobeV4Z_Lu@;$Z8?3$5 zgJZK%>{9kJL~AFXD{02+8lBG*aBKYuEn!C%8P-fe2^`MmHE=1meEiL#&$eTcgz{hF zlLD)ZfS3a5i)-b>Tz#E$Ot!PmU9wgA>T5EB~I2BTy;=>a<^sXAKR^(`Qv!^EL<=qnB#o; zc`7&QIzCo1=qOMshsMB4$$&(HT%3snD!py%aZ|?3nw2G z7`Y#C?0QER1<+5j+W=9Hwr1GwgpP_?63DP|&RBcBCLrm?-_DphVaCkq<0j0SHQmnY zex^-~zn(pF%%o`(4d3cCyXCIY1%~lkH^u4K{*r| z+o;ALkDEDZ_Jo;}rcbl~*f78Gms2Oqo;hjU;GW0!w9E%H+6K0_ZIB`7jf&0X9%Js{ z*gOo^V)8d0qsRHU_JD!MqWJBtTbZ6#M`Y==hE+1i8;h3STJL3etgG3b1RAD{-342n zfYlGvBCXY1=h1MrVP#4BIa>au)eo#Nr?3Q!>8jPHqE&CwOG~)jwqP$5Th|`iT{BL- z=h6+>KY$K(Hg2rIGI7pcENaWsiZbAMJOG~&Dk`olmVOk@OzOa>=cmqL4)>OGTn+sk zd-aG?%;ix#@?ltRVh7MV)98JYZF#KD*^ctjV!8aj~0 zD2sem)fqO^pJI)NsNxCUfW+kh%{2Ozd?IleVH^=B{MhKxvDvv!EM!7TCVNy;a}fyr z=UW5v{RRD1b3f#sGth#gnK+J}LrV343ujC_vDAsArLZdjO;9GA8A2*3ku=8Y%-Ef2 zs;O_x@iY^G{MX#?@XR6E&X|n_17pyK!C4F=I}3Hx;hC_gwkl*~|D(}-lSIyt!EDum z$M&BS7L(M4h1sZP8Ij@?LWI2qNViq?1_rR&<%d#@B4Qogj?rL%w@A>9lc~JU2r3pl z#zh-JA!KyUd>UB{7#O$P244X|zi00$8DLt2!3GYF(TKxUSS1gz^6xU8&5Q-IK$L+- zRlr~QD}g-&vd1x;BXLW*5f>UMC3bvR5MNyCa6->ap$+S@#9HWoSQLaZNS$lxDhXx_chB1p=$p>TbED?zW_!!InFvl2lSx>rt{w)!lN_Y`i>| z19^B2Cxj3-tRZ1Z!qX5EAcVl?oZaJPA-s$ik^^CLfDOAWWV3tNWcT;`zWd$B|51|q zF*7|QoijcE`rpU@-tT_*yWjir+pv)uZ>^*OzI~69^sY~4$H-TMJ;b;X#nd2bWUAkT32GMZT=gf7w zG%Uc2^xUD-c!HNCF`_|+-dh0s3fzn~V&G%LM!!+E)aoGmLq#Yy& zL`LpeJ!|PI24_pGs0T9KubA%@-XGhb9VjA6-PpO_+HuDyu_JZF;2TV9G#Z%ij%B9i z80HRpLMhW`tFt8>1_wmBg#v$WDtcbCk3FIegmd7u44xf#;iaNJC|BSC3ujJ%;MnFG zL>o6JKh7BROD?@(&AI9LN~EvGe=U_#(^c`0G13beAjpNyro*?e=A0b=lo_u(@Wa6Z z1je08AT3!UGZa%9(QwS)T*bRst>LvDBsKaG{Wm4soKPrt+k{Y5;D1m)tvUR(x*%=yQf@;6hE4ug*i<0IQ-g5w^zT2pOaADgxV&-M=n#CwO0lEPxxf3yH%uo zns91jm-YQf${PC5+99158>Z?2hbqUus!~;kt{PS>MwLl$p0-CtEpQGJGq6Oa4<9OU zU)(=yaNb!8JE=&Nm&ZzHphP_WJ7r?vX-|45W3zr@~MzvXIBk3htjA^V(h0H0|yAbbE@hpSt^ifq@l93DV<*k4%g z(w{h}#KMk7MiartsGm-cqj%0w@{y?evj1EMhwE1UdqW~&iO-npI_wROT?K{ljcc8) z?gmdJWtltxSciYhRax5ko4FZ*kh!g5`-rDeglZgq<)$scEu!9f2RGSltUQu3=V4w) zxEI-lv<0{YIXjU@qn?rOi${gVsrwyUVTbt%&~1($bA_`{S1zL{Q?-^(U;oX`JU&-&O5&tB#qezQp-{$}QE*|kuY3DJJ6N1Q9qV5_n!PdhH!aLkE zjvkzR<+K^VQLh_RwR8l|@ELuXR92;ls_|=4kD(F7C%W?!4P2)}jvP-USRrE-F`OQp zxI+fM*#?QYjd>~7$txz>u%qG!6h4~$nELCc`z3$!N8g%{LRx4@=a-lz zyv!kJ93S}zxyVhqOnamPWi1j4IR8xhM=*cn6^}-lPKZtRqb-<^dYYFbZ2l%c5J^;= zs=SM;f=Z;Do!{l(a@E^$mO9JJP$q3`hn<{$&7TltjuYtmKJek7@1)@7aY8?59&r5S zYGU-jPGCooV%X7Lr%t_m6dO#hgcH7HB>Gqp9C#uIAP$*V|? z$r6uP&c(5U+G+qZ81=>AlW6k|S59MZSH4#MHzq*bRqja$2xB``*gPgiKNkp6Ij@qY z4o$U@P~LSR&5+{<--QxV9Pfb52p4W_np>7D(8KjQP&L&(jN+61NF|lMJc{(hl2=iw zz&DNNYjT6JBN0EBhz^0^l?oA&O6J;8fuA0`s)Hx8UK7%qP#<}nV#S`3@>;-0JSt=b zA*+`I8nQS31%lwvk>_C^CABhy!!Y5wRWkRkdo+$P5mJZ;>JbQh>)_X%W*S;i;ow@= zx;U|EIuM?sQtNNDZ!pO)7TVM&rw%Q_M=(lMu&5&dordEKi2M!_DVd?mI{Ux~t4IB{7PB$!?0Du`22TVoV= z6Qg>oolWME<)t{(6-V_Ky4^LdA+^QYb97q7`)G!C0P;@rk0~g{Fbe`twg9X^OQj@{ zCIZy+f{#E$XDnTM5kOnoa>@UVMKS}6evFDa4^64(*(5me8caAQ0yoQOW?E(-Q>hUk z@Zfpw3hesOWwRI5VOP|n5aCoC3&D???rq;+3@kq&KsG$9RA4jo2uXx+iqQZ#U|w$3 z{HNH(5ir$@Ye@38zPp&2&I8QoFJ@C?0|nq5Htvf3$juQ zO!9nLnGFIBYoVZ5ON1LX;ZjF34b;!V(looPBgDC|zooK>y%`aypqC=aD6pDr;7>x| zZA6buEyCgPi#lI!)yU8kxchX+I!QxR4q-0_RK2||>Y4FqZ#vzHx?=8A%O$7Gjxu2=b5W=hQeQRN`X42k{`@0!;3t%@Ic{b{PNg$ zcxssgFAIwmArjS`bd+7YJ0Lh5ms{CUK^+b??svL$dslX{o<@;nE zLwTOG`i~#60P8LA9f-5$ynJEg`%+^8ZtW)5?lg^&SZvT8aZoEIT}M1|++N=lV!4U_ zD0Py-AWaD$r{2pnL7>^@G;bB=O{HP!ebk8h- zq+pU1Uk9@5D?02NiBT=B=9XI57fbGE$3BXdKdF$;AA^af8u|*5bb0{%FO!j1T&PF5 z2YBx1jRCi6L-5Mk1_KO%lhYYV&Qv!I*m|N(MT=M7K_qh2sf~%e=BT#qP4O1-20lSn zdW?wsoulB&Q?P-6gIm#*?f25zLR^UoCzW?B+SlB;F)eETg`HyT0aZBD)3H0)z9z{f zg(Ciiou6~X(j9^EK;SYLJm?VUyf|mSDS#+8`8@|_jMt5d-wsk?z%_xB8o3F_*0s&* zaHV=)SOYz_*n6!vgd+@e$tI6SdOt%~)ZMDyl8$vO+&G5AWOs|UPR4U=U(oli*e@*n zy?>j|dSPc18WYQ@u9vF~SI7sJ13$wZ7OX-fCg}$%INlalDJmgP6@1E`fUn8sj@~;^ zff9#4nSjeW7NN5M7wYYu>MbRog?k|Ov)j`m82^WJS4f$-NxrZPp&o&{3aavg-GA5| zcjv0>xNd>&tMtW0)*XE|qp9F6GQIFhQW(@Bx^w4X1BsI_mQFC3M;LCIfh*lQG-t!m zg}?=@@>CIKCtj9&0x5YI!g5yms-Qe>8H53*>}+iekk+;Yq~rdO|c}az~L*z zW0kBw?KPdUn34f-$T=LguuYr{d+fkGY{@y;X&5{7>@Lxcc5bMznKJAx{T~$-iD3GD1Ob;3{w<*cu=M-z4I0PdqKb`lZo_f6pK=d)C(;R8TZ4M|vUY6<6)u3?-6 z^uiFJu60_nfb%WfoPpcTv8c4yEv`ZpqSTu`u6J%AgB{pNjW4Lwz>tPe0}y5mD6#x6UShUukCV$KW*G{L0KNd1lY!g_Q-}Ej3h}{x zIRlSTNn=AAi|?`{PC1VaD{$(j3Er#|ho>81Mz&2Wc@m zLwQv9cAO3Ek7LWp2*XE&hmvbXBs*Zyp%forW`faMbY!%4;S9$y z%NZ=eCmXe3A`QnWG%-;}RNLN)j$O#Hdm0Pt6%GOgdmo5>%|@_K`LpWa?>yy{Crtdv z%4Js-l&RjUyQmY#xhW3@u!!s+7)Jg@B?<6jj^B|2xKmY(8s zEEFHF>!;(>$v%}iU1EMU&~+QHpJ?Xf$dyNAyi9~4G+hjc44tIgWXj#en$yv-BDlnT z+v#mQ3NPCJCKD}U3+=SGAE`XoeiWP`87Nk{0#;GDOVVJ-`O1lS-Q)o?8lLNmw6 zaHZfF0U0GoVxZv=Yl7eOvzDpI1dGoGUy-&JsplxF$`Nw~#5(?*R+d{H<+5iXhK83_ z_eroB@b2mL6vI7%v{gGHpUsdK-$(Rb+uPRnHTc45pJ<^O7(YJ#=CW>q9Xnmi}DN|1r%@6-g)&P|~Wy>F!p{&LHsGe=Lx1r5oB zBPS{(sw?ev#u}09(?p}t`{5jiAGvQA0}0rSpn@T&A>(MKz;RF^PcY>hPHf28F47-PAm2YcfT*GX7_kTz_pRi3zFy!Qv|J5o=}6;{ zoK|x6-L$dQWu!y5BGVa1kjzdvKN&(HuGevbZ*BL;Z`C4vuMUx0+G8_8m+DXkQss@Y z0hgn1)fGa8!$Ybc$t>_@1yj0=F5drq<1#VC5S4htd*J`8Dj|!;Ka0S;JH&Eab2+$SJz5hhx zCf+~bdeYzvS9GiKSEIft%esQU-uNF;@J83hdo;Py&o%x{)Qt4X75rY~Kcm2)5t)Lu zeCid4rfP>!<1cB)pT2UlF{*EPpP1#D#OtZY4^5q9&4)qNy}H@AntJ-s)K{|jfzyz| zAt8s7uRb*OA(lLtQ9!cOsY6p=!?M>;MX|pum^(DpX2ClgF>&)w_OzSAXAe#Nf_yot z%1*9mi6n+N^id>ykZaBU>p6S+qRaO5Q~v3}zijUgE%>L7JykdC>GhlT^cB1|O?v*Z zYxeZuC+z8gPukOwueYZUe4~5nU#(zRNIrqA*UTibi2W`(ZjpZC*@ra!#5o3*l7wsA ztCT~CwjfNE|w;YEGQSuC$~IRaY=(vFa#; zjRrW|-ndq)W&+ungy7MeX2XGl6X-UM@vU0*>#9Syo~Voat|~|$g$^`zIcIo0zpPTo z=5{qx9!1gnYR(%}6DRokj+t%FTsn2;!sO}kY1UWLl&h2JRca0Hb!_I@=Hvwp=l31s zK!UUS3Vcg@*TTU4KxRj0$0h#XHvj>l#MI6VJ+_pj~9H8a!o4T`_uEHv3!Is-~^8*f$c zE9cD}^@UC}s8BI8C|`fK4Zef zlITM@!l^`YF(@A_46Y)#1pmS4_;>C{b2sYJSh&U;WC+#GaGi7ALO{0`_i96MV{{`v zrMKDkYVpur*T&b4g7`tL(1)KE;vwv=+8tA6sXhYt>u!NAGC==4JtSP(Xz$!6%<#I? z%u}t|z5#85OWLE^myofmt!W;~_G;b}YR(XD(bif7>8wnAtJ}x@;yq?=3j4xowLQ_(XOq`h*8=Xb+41T!PU+N$w2Hm%P zPJaE?snM~rq^k>9^yM-RxfLMPy*NHTcCI-+K6c^k`3W08 zG?4AZD{y66?5%sID1PpUQY2N}az7pm_-??4Fw{DZ@`}hcEVS4a#{+`~mIHJ}98%^KB z65%BbaW7n)otWYg#}com(l7dqD=b^I+$>r)Io+H=nxNB{urXO2Yo4@*+FV(ta#MiP zv3M;KX=s_#0F{S9bZrFNiOwo7IVK06+pPQIHN49ffR!H{( za$JdJ1WYGF$8{uQpuscE@$<9O7cPE8aS3y6fWsdj zMJRkG(bpDzX7u!^oE`9yS=WyE<~jDwSJ(C3%xR&Fy(Q2>qZt|fY*FXa*k>e|(@m`B z#Yr3!qnFq-xQjjjj=hJ4MHK#ayVchZja`^QwkEV-wME>gg200{oK^NwpJ==2b0QwF zp_5I7wzxwpoLG3FA{oxG4k%SbhG*oEKVh3O;1No_=n&(K zp#HK$eVhcNiv6Je5HWSOAdO=aGmbceE~+umfxP6v9aFlsXoS$6>Hb7NH90OYMpTo7 zX?hTcnN7oXR5q_NVxA>&2BnF09GGRDoxe1t`v<(T?VG@#DBq@&&hls0{TKq|H{jGe z3jg961a23t{+WqsUB6`n6ZrF8Ux8(amh@t4iMNxK4R>nvYnqee=g-axrwA9DCUjRT z+m2nFym0>Pxa$>G@B~-Jx@))+qkz9YH$Ljb=8qkJ^2xamJnin6GNt2q#??JLJw6`2 zKIvY6WL(&88{P-3YwT-3ybsv;(1&aTj^P8GiK-W4Xh6vrs}LV)RH1r$D5*ictJA4{ zdE>oQS;fWBHZ>~p`ZXrb@RepleU0&yd^Otm5E?t3AXl0%rz9il>*I5ruRq#YMBUfe zLB?0hk|6bggi7=Mwx}8(NXRPR-)wvxx_B@{6It@f#@D0dwVrVC-8V^w)x&|b@a4BR zzLTS{UCCG9)%b3<^_z?D{tk1nLP43?5iI&l;|Eamx(L1b_6Hk3gtuQTxXIuDsPWS- ziR;(@1L(*80RfzR60ul%GveeP%M>BGNZPZ$1$J^ieI`hR}Ozx$W=^wXcSr(gP2 zdph*%_Vi1?VNW}sx2JFXU3;4NH}>?Oe$PGiul^#23jN*NRewkRvd({?2Ux@L!TalQ zf76hgxsC>xumt3#zlMC*vYu3nFsP(*^t1!$Go?kXyX&z@GX}IM$jp1SqWVDuvk;P}_PEMXeMKxsU$68{d0Ldz_k zf!l`3$gpf}z%dcFB@ux#zJRt6m6~4@NsTQkSl?d9#reIv}t`K|EUvH2K+aIxu$nuf-=P<>vf z@1v$GrnGUMIPIl+V0$jvCDntU@(lhyby@0XGqk_MtR}cx2&L79?MdnBl9*qDQvOut;WVC;o*_QlR>7 zU_{V5kw#K9nSSJ83;eT(l2nO@k6Q81;);UWp(1~#6~iRZU-*$$N@s$K>5C9mD1#IO zJJZ)7W8VLM%|Rgz%e_E&{7 zuL~PkYd=z%z@b4G2WU6pX_I^u^hMle#6rKFrE(eaR+NymI>D$&5|_B&bVz~BbAW<9 z5hR^Yl>kbK2IWPc;u6Y6*o&8x`-rxo9m4E#G*EvY2I@3O3-`{IA_8Tj#lmFe6)u9|u=fXghc|p7J@k)VVq^m!A|r|gc$sPyQ|Jfem1PgKgs8meqv*@zOmHW+G_1& zrlKwE1EpPBnk0m?i~vXs9a4s?a*Ui8AfFqBJ0rNtbAt}iIaz?qmn)Bfj%YF_ckir? zjsJHb7dTWNw*yF$^+@OLYq%l;oH0)%WoZIFACpKgy6sm2%q`GMT~N$T7{JZF^M^_SHAelEJO|2uAW0R7ZUnCG z{rQ)RB;~@~C>)^puG$6-L;HqNJ)r7UT^83(~o}Vm^nfyyXX<_BU%uzY~NGqju9u?CUsv~)E*g0Qd z>0H4r8O*5GbN0J(Q(mx2s`0~24<7!~g_vbr*x+3F#ATsp?tRW0cA2)TP&rqg{WLM& ze>NjU2cHJ8BuSXF-0G|mkk^sFnw|!3J>X*ipQIhhH$a~WI>nix-08xR9wZzt9DcfK zM##$eCGxj`C>o^HCt`SPNqzm)0;!)+^Jvgq%0j5UmUjz^+e-Fo8{>D(Qb-pd_*&N0 zC95V~q=wmg54Z5O=S~EBDh5{|9(wa$I#lg3;3ti3a~^jHFaC+qR4NU@kf^3fZ3ATR z9y&BfB1Y4qxWv)h**dkYnwsUA`#>JjZ24gpOgnu$L%oB+J)X>yOv>P)dNA1*V~YP| zy>QEjx>V>};#OhANUEza@;fNz{4YCA!3_72m=zTcg0(!^A)l{^_cXhLf+YT(5^qY_m%w=jG ztsIX?ayVwt1Af$S&pRDlco%fkh0+{czZ2B9bP3bfXc_sXcme<_pUgC9jZ*^UJJE;1 zPA9JN^XpnTeGg@Ku!L>`TpSIG+G`j}g+36( zR-kd@4qZ1m1SAL4j^PwPEW79o)t407{KJ;{y-HAqH+ggug$ z=S#}IfKg06rj;avPW=xN_3|@}%K802vZuzM*wg>}=l1l+f8n0`SAQQ(5FPW5Omqw~ zC-fvt1`mjj`Q_KY;uR7)&}=UEC5=eaB447Li4R-Aj3u{$4xi_Qi;*BiLB17V$@MZO zZ{tdg1>rr_+Lv1EEGLc&Xp9qMZXd zXD=?AUV>19m=dpAbc07+OMr)C1nj_+s}&^6fe2|Jb8_HwHA&PZ2Bwe`QaGvKtv=h; zzM4B+-DnsOq3aUPYP+WnHffMZUEBO6-1bp_Yj`+HENKW%y+tU@5c3mfbTx3&=uHHo z%wsLUHnnl77fWV5~dffIn6Yc0x%T_y#)^M zOnz_p=i>N-$LeJFNi4{`$SVM_q z&)`liB(Jdx5^U`wcC-M2-KF)y_vYXb&R;3lj{*$(V3#3gFHu(>I!eP71CD%xR3NVU zFu%eYG8vS}|6|6xFaeLl{iaj2L<5$qm3?wPH+EL@Y>Bm%oYYW|!6BCI!}J~dG3bUC zULi4Z(|Tg}x8@$zJbf~OTaSXx8$_L3my>f~Z0d+nSTeqJvj@vTL6y84f({&wlFKEKfy_7oKahB>Wwu85xe9UK z4}KxL0CpgGd}bpiPRmsEUxV7hV`zDZoAlrzijUZ{@5jx6~n-;%T8fnoQV+3&O#4%Dt*AZ>hW-SHY}JwMEmWCEd5IM&kf>p3~%2brBF=9lpC zwM=tP;iy}jk+jS>6Nku#a$zLyfOV}@wtwSkhb9?W{=JRIA*ekVN`)VAqWiJN@w8A* zR9ASiF^s}Dg_iy(auvR^aTXO`Zxy2au@jQL_SLS066TxvMkKpmeC456Tz&5sL2Ub} z!|thn^}Annh_c(!BH69OtSZe#AO3HW5rnzF_Mj8ymN0pD*qY?yUwK(h1T+;^Sg4|e zib)*1^}Cy37H3WHqK|GKFLt?^D{9A;Qt8aN<#5}NuN!~GcPnazi+25*_KvoeD8M(i zE7T1Z`Wx9n-MoFpL}Hti3<$u!E1l(Si=Gvid8^Ono()Y$Rh*u|HFTe~;W+3(92}5z z0U6>n1)~=Pr(BgYYRB2#RJ2 zD2ybVemFfudBSFol;|)Hhmd$#Fw=&xAVp1l4WW8bOK8%#4*m5FYlf^E{6(^&0vtn@ zz={@rStitz&-QldN9WEtVZBSbixi%j0G5d9#(3fh^tPKq-(d3O)i~}>pUMn>x$}=H zsFa%u4P`jEJ*JC<2}pHdhe>UML?W{@z!Rh^O4-`YM>_~^Np_?P{9tj@?}R1S;AIev z_!d6g`t2^QsD})Tau5(+F*heK{c1)mXCx(Whefrf&Hyg0Wki`Z^8@AgbckUs%wprk zaKbYJdVB$eUUZ?8&H@+WKml;E8Kq2Kn2lvIk$^#EOvu?8GNN^kgPucX0GX|U`#3oytyn6DZW z1TBq3{CEm11rl=B#tSB>%yYyb;dX40kQC=lt_ye`i6b$k@#4bXG*{2B;;IP2XjWGY z6U(W9GLYvOj0z?m*Z`)0g@BzC?b&6Yb=-&?>luxb3gAQf0(D3r;!D;87j$mc~)24&Gf{En{tNd`06lDt}pNsh3EYS*Td)PcGL zRCopU*}bYuI@s+L-Q@Tu35Vejx6DD$2BM2=Ael;gumYvbDdKt1o-BhoH5Wtik`|JL zlxmggZ+)Nq`}gGEzt4X^|8w&E-^sr}B>(;c{`=eCB+vg){{2Vt?+?qrKO+DBsQmk5 z{P(y2rab?+{QDD@0ra;%E5CnI{{1QW_aDo@KP~_M6aM@8Ps+dlCI9{HAC!OP8=wCM zdH;>_uZ-jK-y+Z7%zwY|ZTuJ6&@LawOp!~77lYu)n5%w4M)d_5)fZ$uU%+_KLdNn1 z8Os-BEMJhZd_l(Yg&#rwC-h_~=2F;If9vnEi{JW;{QCp)?|;jGKmRvevz_&Y?wStZ z2^Q4&&k+B4oc|o-Kg0azw`Aat@UbqxznlM#@Spd{@9#yAFn`8VI>CaI{O3vj^A!Ji zn*Th*f8NJ`-p_wNz<-XTJ$=WL8Kl_ocqM|F{3w{VzIXF_9JzOFNQVzkoIWYHL;&7o zt!kt|aw~8x{V*KkEXDOKHqwk)%5pc#jGe=sH8U3{^=1x^T-6y>y05Qyd)sU3yucFJ zrRgsV%Ifah6~wlyN-!i%k_B~Bwsmy%$uVB`uoQPvpl)>8Wc~SODvB{tEMycF`ZBL# zL?_0&o9K{=4df3^*LRW6bhMAfA2J5~6Ivv^yT&2c5|~0KMkA!C*vP(0MY&+S7C{$! zGJ{lfO|j>Y_N}k%ES(fiMcr`0Cxa_>=D#Tx6gy&1@%oW_rb5NmyDM5# zo~;3&%~GFWHMVo|yKdMkn?A)`)2&j_C*5E~2y*>$KdFjKuq=Gg`*_R;f-^7u8dgKc z2l5uM8lw@utLAil&1HD-!?9{)t+l?e)PlOr5k?gWBCNKt-CezJ9_t`D&;cz{J{xLr zF#gV4!b4_irHXj@@?w;_4aG5W#`JYgSDYoUrXLRPjo@ZTt?7g#(weA&)rh7!$8O$x0t8Y7(oHfoRoOXW&h zc1P@T(G7!pfsjw91Kyy#up`YRKt!}r>=6n(re;SmP#V&o?tJlD3K#JrRkh3XExoYa zdlp|ZZ-nJG&Zm`;PXpTQExGGx;#)SC8q_GW6t8$jPaEIWJuj`vc1^0R!*lh zud_gv>UP@-Ohz|rjrVRTU_boxs>Il0URn?FTQjov*CGcaiD*;o;a{xl%+ILZW+XJO2p$Z}|!S4xrVYAlB))v1PGtg_IXnP(Oo#s4N=YyRld?G?H&CJT6sCo6Wx+i z=gVGl)r|%9ABv7Y+gS-DEY_?Ob}Q@UcP!s#09DY|O(jz?Gl<=?-@{Ry_PJ~)x9t07 zQUk|@`$5T-kX>;LUX(R)xr*%eU~j>F%6Pu=!b2iKRl8}T@0 z{sqtosN*(RSvIYs0Nv+??6HrPGIf(>2%ji6p2;zW8yK9ah2ubUC{QZ`ZG5zY6(P^3 z35uy1kc&DHRU+yO1(>1?E=~qxn4XdY`5r-N7coLcXRCEx+DDD1i>zsCgsJ?&=>b^8ArKxR*q>u|0#3%R=PL(XKf+6Mgza^UtM_F{ zO>pL0Dn$9&NM`q#+GSB7$J_-K)?WBp!|0IBn!0T(n zl~sY;s!J0PkKa@4T-E@7)q_zpl%T`88ycD|`Sm%dfpDLMJBMz!nsyZcpC|7*PLMQH zNK}sB8_~ENcj9E$;MTmwU2zJInCa(Z7R?*e?r&cJzw9x|O3!_g2~z*($r%7K`hHLz zfduE&C>72SE?mHfduW3$wG4m9N8#nozgwTKecJ=G7>^grXg_^V<53u7-Ey)HxjLaQqFv6w~l;S6~o+hTiXg|A;-EI_aMJSAX=8L-d0`R%9d&`B~f@cjmzZ zlkt(a?a2||Ta0mXdiU+v87TO^>vs2*P6MUAg~P0wbbw18+RY!<*N9#7d}p&JA^U1~ z;;?R=aMyXc*?((L=(}slhGZpN$h4d4VDI$2*Ll&0Jj6^zIkq30kS(~L4CGVo9cR0>(nH)3dN$^=nZ~41(?vT_Mu}ZvnF@(D)&U-v?|OZ z75aye*Xb@ady5cOTKUe=fnn$}JVm?LC3RM1;=-wlHqoAVB*{@=F6@Rrnj!`0vzs+$ zX8gmK#?SMr>d{l=ND};8`|7p?tB&lYEhYN0BI37}huEydE#36_QDn zF=kiDTPS9?`l@wLVC;*};AS;30$u9$8Mw9w_%rJ+htgOA^Ux!!t;VllBqm=lnOi^V;N`{-~LeQV9t&FmRf zBo_L{51h>%+8|2$#yaf7AW_nZ2RDUwU7GvRI$;nNL^$dVAc2z=X4eR$lWfaF2%6wJ znNZE;jf(DzlYTs1qY96#d{cus{rjka=@@)jDs%dAd7cD)7OjLpsB ztb=-_V@Y=^X@J{irycVnKcfbPIvt|Y^($SZ7I6TN8W;&;-_YW~SONPl42WQ@nEdfN zveIxbu2a1cQ5_tGs}&@|R6D4eUe^$7URmrR2jA6R7kR+i+lzIdKoWf{K{2vjfekVu z2>}CQe)g_9w}bRYGHn(yxOye)a*7FlgbI0Fi2zp&X&#f*iKyzVs9g+j!$sZa!5pQ> zvzHLLHohyMvi&&G=FdC2j9G#9h1VZo~qzgGe(F1fw zly3C~4bp45D+WJoUpCfwxJUDKJn5KVL*%xFC$6*UZUay+2 zSDu5-gOU{(4EZV=RV2lHr6>HmW{Ph0x4Y|rg5;U;^WX}=k55b`-aJ?$%gbsZ8@0j; z!`A_%LuVyFce8rNR3a8e!ve6`k^D@=PYm;lwE%D~Ya@^@qX=LJV)XFCgQ+IBN_!Zq z?wC32CW@cZF`mI$DMAtc!4o%tsBLt0j*{2Pt%mdZVzb5m))q2ixs^g+x>B0zPX)!y z;`nuq)hNqrE!+yi5!qj!xnN0dDYDbcn)|dtq_APX%Fo+TCCH*mp>zRr;KrsfIEJm0 z-(Wf>xi;F5*Uv4(57@ShPZY05-h+i?)~K-4;*%k8pJ)kBK+efh8-pS+*sr(hX}dDi zVKR9tEy}Xt%8WTdKy?-o&q3rD*dc=w0U>IWBe)n1k5*$L9J^I&HSzWe*@m8Xi%v1c zV(m37sRN5P*Wk2w6$xQL_c77UQeFR0<1y&)3xze*%i113AjXNZUK2yZhZ@hJ<1z(F zPS|uNg^x5kX!U5xuDDyeqG};Xn3Tw zVa`1A1C1X?gSVA5An=c|hS*B}%2Tk5yoR=tfAWlb>R)~CX|a$zQDh+zqm2Z^b(V2P z@U)C^U@=v)F(O33 z%NYs+TyjNW(q<+Qp0-d$Uo^vvl74nDs+yXe8@m)@7TZlP}rAt7C%@)JLgJ3)R%!DB~%+ zhqm!{@iJMeit>y>hF`!}!(q>@tD2}JwO3jpsQ8&X2JyWsJ0sOK&C!PmZ1uKXz7!(_ zW-YKvnPT_BG^10g^+2cES)vgj&CewzymgGm`4KJSu!gAZPA-j9$b?I_(3S5ts2dAZ za_`=SC8l2J;l_KQIjWY{%&O&{YK)_PdC!Sr?rdWgl^+|>dB)uD^k2_5meFo#Ks(?; zKY1^L&);R0Mj0&YHIR(Pb zKsRVtr?ijl&h}b+U=LEGw0)2>_oCS2dBGM)S_m@XQpFBv2<3xTMHm`)xVzDVe5V|O ziGDD_i9M+Y&yK^Z_Rds;y7W2KUs%{&QL<{e(r7($WdYWSKCuv}NsV%iV+ykZh2u== z=8g4@MYRU289G0zB544=W3d+&-ZYz z^mRcn$Q`umUQu|$CRzBij*Fp7&B9S|xDxQUq1p3}cAm#cIT8oFbjZ7^EW>#3DhLuj z>CWiL(0;_DZvD!*(n*B{&mMY~tTduJ7uA80h7sw?d`(Nj(}K8m`cZ!GS* zSWWpcNspkJ@Crmrj7Ur#PIsuu6281_qNttKHr{A_7l!pEWi8aL4^>3j_)jlE#rQPc z`u@Xn?x}zEQ_qUB@k>?N*hZdix#6Z)_m9YO@FmCgmKfi;;Nk9ebLMNWZ}Of<)v`g4 zO($h@)I;3BQAxk+k{?{@uOL!%1xZ`mP2Ozk>YZC2-RvB#Tv_JJ=2G|i2F><9VS)fY zcZs_nz0>byZ*d>DiK;*r)k^a!=w`KR+{dR*jh{Y^0PXxm?)fTbCML&qTj$GWE}c4a zVe<6&v{uMot}Xk(ZrqD5dM~^+P*h8ug(h?6K;4G)H-#6#54iCUQG-xDEwmBh4h;aK zz!)V4=j+wh7Bhdvo%Kg?{W6M?NBv6cnhPde>#TQpejt)i0t@I(=PEI4X?Fv` z-AG-^CBtD8GJ+vbTl?^l3e<$?7@^*X|JmH(&^ZVC`LI$QDzO+=ij?Aa^!_$b9 zpO_v$-GnA1HrtlYF6hRri? z8DWG-J!|_#P@s=MRPlWTqS%rFdgt1oXl?N#2Dv|yIOG8^9bOqF>!nEdbIOc9FU90rQaFYIi>o7eU}@|y#<#nd>j3lyy!cCRvv8rg#&Ac+QU zZ*2jq9Iq+3uv8B~gG#|&3+O4P@}lMpafF@Exz{#x2`+0`TT?gn`Maz)?FpK>k?akt4O@Il9_N z_GoQy)vsTxyDIgK%^h8Cori#>^aEoT&Yzh$+w|Y*^%syD1@}T>g!$q4Q!e)LD9rVc zK?DTK7`>74#I^yRZ(#w`5?iE*x)mIT&O<{KiMa(3kWmuC?vxMM z_nj&?5jK8YU5~Ew-EEv+Yi$zE_L3Z70pY?t_}Lh-G<}>Q6MvNqYSOMB%#5ibhIAz^ zUUErk9p~g*m1ceNH8M1Zt>f_(Q8`zhX}M1zHF3)~vMe>d?-Fx=>el*N;m}Et;E7VO zzv3^Q#fjv{!$XBRL?wvNY}K4m9zsr0KpGCJH;JS-@;w-rCwvdJUUVS}yRotCIV1aY zQM5Nd76P6bZ)h_p#yFsR2U%@#qHip=k<^NSg29QFaE}5UotqNqwmtXEAVZ6LcpfWYQrnUqlO$#Z6Lj zO-BZ1)dHdw5ZAhkt%d%Y*xda>=BF(P;&_b-kDC#s3Xx1w3TWyx2L50a?5AYff~87> zWl(j<4K>z3ifG@+!Xpzo$pXJ?p=;b__A>s(E~1Egn{?J-dS)bSa+&9)%V;wB`788% zGB7o`{;tL+^`(+ebUG?gTsP(bC9ySg0{b>aLJ!{)&O z+QF)Kws#^FIw7PF(byR9NqOD{tf3dky4%;=$l}lYOxS)fVijaWAVI&C#vwc6YP6VNN4Y@3Ok=s^YrR zQN^1^SHeRpzh?wi1vJCxBmXbsG0&htD03eLMsIbH9r?DwLL~$;Td#9ZDH|=o82|y+ zZt?yWMY_Sq<1WbeK@k+!+qmFjNgzgDiUi?!_${vWf-am2zwQ>2ih(^5?kN;yq?Hlz z_VB&) zO|}3IOcq)5D(6%kij0SgZTwh3GIA=x{2cR`mID{O^CE#*dtT~n$-?jO8zjED?`+{% z?sXs|JO497)C|atB8?^Saw1hzehete_I|Pgb!+NDCG2Y@-z;7#YxJz*ZCMk)gjRpX z%cxYbImV}Sj&{qowKf0>1|Y|S1D;<6PR_94&R9_o43J^fmijkNF%m!;<5PB7Ox6=f zizJVQ#?4&cp6dsGzzBqT;D0T=N}s`EuJPP#G56yhk#CPHXuwkNBswf*eW$3~d3HNV=0T##!GX~p0jOT(OH&`YpiTf6=D zYAw?~^Eqa6BhT1)Qbjb!l%GwqlC0vFEA-A+0oJUSFfH<33FR3HKZ&?$ z)fhM<_9I`-=y_-y?N29E_|HVL1WZ+7I-+j!5a35lp@RK+5kDu9Y%_ep&{ivHKCn>g zakZovUq)p023((fisdv7T84JzyNQTOe7MZ0p)WEcIBrG6#&DG(=QofyVFfu;q2Y-D zzyJc4pgUUngdy>u&8q&mlMGIFKA*>_B02?dGNB=Bh0~JlJOr)bj8Q=`E;_bAr@{L6 z$5A=Z<}-vxgH`~$tO4n#GqAS-jP1rZ#p|#OV@*DKv){Xd{7kfxmti5f9;B5Ecm?|$ z%(qQsxa_r7+8L(TgDmsjmLT)m_ESl51`3(Rn_Hc0P>_#EdT$+H2}WMTG>g!LC{)DG z4#Y|a5Z(-HNVE@jIEGzVRlcn_h^C0(0cw>Caj=XvHMm;iy<&cLU5eVfIM^`g^I>!9~whXT*`cq%(X{`qouLE}0GO&tL+g|v}Iq0N} ztnts%I9u0uk_A#B3ocz`Y6gC_wb{YpD84RHs_P?_#jQ5>1;Diq6R|+ee-%yYTHGWw zYYv&g)iG~;v#W;Sz%nrqEKbv{@cCd@T$XX9TV2sNIV!P}W0kj{a+4pHren^rFxngmI!~ zrVczv#Cc)3a%q$Li0CMxJzrPNMPaeIVjhl$!m$~WMXYwjW6CPHBSq<5#9c&4QZFRv z{JJf)pEO@)Fe}h_7Wz#RjU#C-T}qsBRhBRl(ro0}{XgwIg(Y~jm@bB@(JYC%eF3!a zY~i@#Sl#SK3TH`_q)Lb&hPS{-BJ1QaEn0!2o)`>;G5PNem^#1M*^n(Z0wcNy<*g@z zK|KSm6a)hx!te9XrSiuAnhq|#{vz(r?4_U~HIgw%hJ3xJyV-ZRP{4B3AWwE zezK(;jKU!m2#$;!=URSfb@4#JNh@~R_EOD#CiIe(D3Kr?K+ti0aC57>i3>(|gjy5+ zG$-s;cMr?gFzyz_ojRK>9HeGd8Pr8#|p{XfWdV8oOdp}S{SMkE3sgJT^G^uzCyILPRG}U6QheCI5qqqu-ho-KuLbQZ} zv#$8+p{Xv5U+de`_y4H86zBg}U4_g4FTV=T|G&C!Pba(f^n083^yV#l`jmgV*td88 z`G!4x<4t?|<4@Yt=f1(7u6>g|{grRFr`2zDPyMU!TRX(t7T=x=I#_P?wi(@on1ffn zbH6bM;*LcZ6gf8GpXbQDe^nHPK+7|u5O5DkYt080fSIO?Pq?emTrn+Bp!D9vwjE_w zGx6ESeFY1xMPz-)6%f~2@H|+s*oY8sVZ-(-c{H4lI8mYFgHNvbA?5q3**NR!D(wzt zfsDEf*5&y1urYuiJ`4s|+_smjS003Oa_nR}J$e|vsQG&s&tUBsh@xYx`QhttHxi@0 z`qGkY2LEB}BnV*UKrw1}hW7#`Cv$5WiSvAR?lpc9!V%|OlS+N?a;{6d{oq3I348(v z2sD*5e2zSL>?{jkxemIBAPQIiIsGMFxOhAwch<9^wYGT$*AFg}-N08S+pR6}reZ3p z(DgcGkVQmeY+LUWl1d+5s5n$fQF@}tgfq`}7r_WHC+mfDI}k1qNr6)iHfMT#hc0`J z|FgOAnSg*05=PUK>+7lKuv&# zn8u^l;89w=A7ztA!^rp(I#9sJO$pd3+g|`OcIv`&^~&k?a;v{47iXLZE!Ba|ngvMM z?42K8()?*{&Yd8;OOO}}2-}M4jUD4_tgV+O5pJ3j%aiU#M#VsT`?ORSs1H{J!LX^1 z*N>mn0*_Nx|Af>hUZii_%G%2(rJ7&Rr0e6ywUf-^(YL5{@i3^cq|&!v68offs_?dV zPm>J!`yc(LuLV$MQoI;-aU{t_HrU%hvNFWVDg>frsas^MsUyaskmyRy8o6%`SMWH3}m;o=6OM88YQMDn@b=UNZ*)K%qL#mk4k9d=z7WuD)S?$BY z-DVmgl^o5x3BSvZMXFl|0ciQIibR=!X)1|BOP=jA)jCDgCW$tV-Um$qzo;}QsjIKj zYQ2?_6Lfco)m0g)Q5lITgN7CyPkV8sDgBzBP-#V>f=M-blUDLHEve|=<}1sQoU1Hv zL*)UozN|q&ATQTBpT)3PRMrJ_MH8jv)hFW3-K_J3Bq@yzPdLK}q#TWEAfBZLr64krHI}Pm-9GM^WWSUy$zCjj z?K9R;l+G3S$Oob@h1>dA;Ta6-Yu< zF9XzQ4gr2)Tq8QXv`CnL+)N}lNcEI3=^)^F4>g9$5Jhc3NO3n_G#b}Hdz8}9EK&$l zaZ-i|L@GU+6R(fZ4|gCL;N<-F;PkeZlH%Z-aj)E7%J7cf2FRSU*&FWFKvrV=RuLb%si-}opj(vl%;bWp)rD^jmji+cX zwF0l#Q+sG*ym1D_zMV>7uIyanYf$#EZ|Zd}uKc5o^`xyxWv;B-_$106@NLO9xuUOc zd=HA=6pB1U;VOJ@<3~{8Extlbv|W`SYy50dCEh%)%0FxTPpI+^-%B2kUB&;o@#{%n zF`Bw6zuEX-Q00xjFNaUA^miM-kJ13c$ll!egT^1B>^0VsEAl?R5?k|Iza5s||3q8! ztN(^QEq=_%U9cfP$F+O5y{P*<7-aOf(-PUqpfAm!5^TuUNzi*9*pQWl z_x3)sSibaa$lj1>QwG-DbK5SVEvLrwV7wN=9Ts;aV2BLl3mveuJ2a2e<3P;gXS5ED z^JqhIOTxwo@xPTRN_nTTZxbGgjN4e~B2YJ(iehx!BxXu&(>GYe%aUwal&- z7}lzLS7ze&3y?8!8}V}#)0w#KZJ?+bT51&n&D?{D+Zq{lJ}_}_EcJAs3@~x0P|F&i z6HT{C3ZlwPOT6(pFyAja6SvJYLMmnQ6-L}m(?vK_d^`Z%c$Q|VSV^{n$)_~8! zv?U+Kp1SThL*HdETd;w0zvA(g7<8le!EnI_2X^ikg`L|FB&@ieYAay*9wII9vtjm&)`8Kx?9RpyhDg#%sYT)H;GtbeB`^#otzR+HAnzvIP*vtz| z;2AQ<%^F$73mQbF;mC;XX)k4)c^Tdv*v#pM{ru&OFhedlAOC13Yx{iKizsh1hgpGcU@DP43fzo8nx<PF# zo~37j%f)VlZZ`lIISrT`qUvdN8h8d)>xZl$>ojn-agGLWUmQo^e@HHXd)Sv{od!PE z*h<>QP6OMGZ$jAvzHQ_*@GXt+L(!W;QPyeTGmX!p!drZW0;hqWYWzY{rNC+67aRWy zRo>xyDRmn7^~UcceO<>PWWFuVE#O}_{vE2k(f8#xgDd^R#-E}zz%X_i__M}epzJl) zk}L87z7nT_AN(1Z_TSFi>HgNw+tdH`&+X}N{tJ8hkAH1JjpJV%V%R%fwSZ!IpuioCc3kAZ*x8s{-UJ;;9I$R`-w$Y^ej z`|hnuOl#eJ!eYAZOHJ{eio?wj*6o9`r(|4;wiZSX`K&l1{b)t2&%(9SDwjs5>u_8( z{b57XUSMv@N9}>8X9B@z#wHpQvn7GxqYj)pftq%#Kb+OcSrN5_1Fw&cja`}^9s7t- z3iW2~T=P)@ycZiA;}dN)H}b@hl;nxmzcj_Qa<~bmsX11lMs=$)r+$B!2vdRSNBY~i zzMu(G4>!|oWL;{bv{tnhsvd1|1472=W~Im$NJJFZ zI?!+2?z5=rQ4spWYynHW(`;t3v)b7{CTNA2pm`gpqSCyR*iwZakcPJ**X%>K2o7c3 z44n6{C(>qG8m^4r02#AdQB-Jj!IfNSM6HJ2a3nV6dHwFZ^k|g3D7`=))poU>rBf-q zlBU!SW)q7PameHZEGUm(*+K?7aS-ig5>{%0rR-aenVH%NT4u^NnoEcx0YYax>jn&s znm8Qd!Dyi6^O#OV;BTnmJTxU7AEy2l?5GU{kNGK8S}TaJg72xDOeFQEc*GAx?Z8%4 z))3i6|Jm>wxtnl>WY41!8@Z0-1}k!k4iPP@S27D-+bKah$t- z^1%eqP*4atz)h0O?37dtP)GbMBLL_Sv5Ab?xYEKchX#fLa0uu_aI}(a&dUCx1wtpC zH4qyap1!Y;wCrN484do&$j7gD!#HBVq|$5K0i5w-2WX50zgU7J4ixc~{Jaz3kWr6` zWwv=z=(`ADL;L7Q_S+t(eai?~Xd3^@w2g`a^wigQq++P8R4=vPI%Eq9cdk>w&*)wW z7I^TC_@}gG0)Ua^SEv}N3f+QXayP>%GF%aK*W?~GnZ?l22yjEU!W?00i{>8e`W$W4 z`RZ`xnxN(?!hz|2?aJ!Nudv>$$(3xl-xPPR2Ko_w#WDPbUXs4*4JlP6WA;$vZQ#`& zvVttD{GP^p$prdhM@JnKSZiD)qi3b;?@Reg7`>nWQ?O&dLGRE%_;Y*u&Hw10`d1hJ zPhrs>PFXZ?R(-H%Kk?eVIdn?Gn>%FT>e)Mkm0i&@)Hp4iba$IAtM4^qkRuc>%aM)_ zJPXjMD9unv4Rn5Tw&6|@fz!s?_G%pm{YDQr*tY8gwQetC4P7883--ny@(U%*;i<{- zOA5jw#?XkI*2uedvbE!u++o$ieTreL2xI9wCSS>{Fd*Ozdm?#Nh#jp+HxgM4yZRz- zFb%SCv}r0eVGGd*Q~(IK>e7s2G~NN<_9f3)ZK_?_MDm<2zb!;@H!e3CNz9;f70Q@X zElU~G0B~bU`KFj56}Y&WaYk(>57eVk5*LMRKC50TR9j~8!`Y2NL zr2j^#O~auZF@-!LB7Dh|7~iYM)?fw_c#aJth@fZgUFRMvwE}=(lU-EC6w*!z%?A!{ zcabhFQay624zy)GosC({T|0B254-(2mj{$H-#ErJQ{*BR5!FfjhG(B8f+}0AKutK< zuwdqb9P&gBVl~rVqSXx}E#^5RHoj0rNQs6Vxet9SVLfpH97mrvP@C)5XffOb{qY< zrta=$0>&8G=uEA-T1Vs01Ne%DBkuntoTiZc`-96o9B8&GV=G`1AK=R@cllW3aTL8? zic-$pqTywdC1Ysb#5`%kTY`W6h=~2Q#Btl+q#LX^4J*DY2dv%#m2@{H;+&&MA z#+XdO6o*pIG*zMOkuzoI#f+()W00)ZpbI5*T_TOs{sjTpC6`CB^9thMA;*r*1sfIwq}DB}Zdu$R=CaUC(*K>njcA)HWmlXJ$`${1(n zk@V_en|6Sdxz1Nz(xqr>I(e^1miuS)D?xgW*>8}HGVWW7Qsx^&RzxG;&|BQqkZu0uC2b(O?@J1s>$kM)DQqN~S+ zW&M|klp9uHfNo1j%E%y&$H~0SZNyA@U?VdH5wXdX7?SQ?*eTpbdR&p9QXaaCs`DV` zWGFIG!9i)bl87(`6?1^QWAe?<2XMcPM3p=!<@%<~=_n^FQZgv<EhffmdZMQe z?*3=K&6S-^-um5x-qF_@*l4Iu*3u6we>G@l0|FB7+6BQq?(1>z;#!}3%Z(bQbrd>r zHw$u8p8#DAg*~Lcf!46S-HS9K?3sVa0^RFFsfQ2j3C3*Wzm*3Ji^G?T%YE}b!j66N zZ{I*?qmbf+zxWp*{rHHVejO>!dfT0Cuz65$R~`=q;6B^AmoOsYjuKW)mWti$a@~H{ zS30nPCB51n2m^mYzY?mMR+gq1a%K02eEeF^x~O>k<&=T(E-M|MYMtl1AZ*oultN#JTkd5D%%ErqlAR7NyuiuMkELH^Q z*eMb?QPEU=TtA05UKxSe~ zz01i8#w*`b#QEJDG4qVZ{_kd<@gPi71~?dbiF3WRxYbp+r340%4Pno|Ny{h7L{FBa zlBeOGiI-|Nm;7ECJX`tX4IEKJQWZi^{B`fu;$;d_?XGczio*l+!swT*qDf>iw ztJ_@aToa4PNEI$%8_`{HL5RpSi*{~Q5;0+>2_UVZhz-XqHAfj0@C4?b$YTn!K(jcE zVu7rvroIb_1@$*L6LMH<{UyniM_Cg0axKEUnY$|emS3HH5oM0@4hS=wCu@C2#F@P% z*kNY{lpD}AuIvyV(Dlkfvf?pAqr|YLD3wAdpp}8=Wne}NC@})(G&{31vZyccY_j14 z{H5HHooV7;`vxfn+?SqVb_N9kN@OgQfg@TP$RKO$o*mKur9~ddBmOC^;6OU!{+|{m z@GbKt;|P+?Gm`uYJw~QL6NZF`aQm5Ze$Fc9~Lkn|cm za4F(E)TmMtI&&f`A{}p>K*3=Yq!QATjTO9q<(U&~{T}`h0qIlkgfR5g6p%hzv8Q*w z$36A0KJ_jUklvgMNa`m8A?dAOybq_eR7_&%3vZw6ZQqqx0JBjh9%P^Zo#h=ELpE{k z927f9bPF#rO_!%?f7LPB={t)vY5_h`PX16KKnOPTi0Z7xqI9nPiI&~fsvW^12>TE+ zJky*0`c`WbT%+>xaI)&dhZdKaFYO%L?jGYAU|oq15#*F!sQ+CwK{XCv}_Xa^J=Zh*D0Z{wb8@2`qlTk zxHk@Z`Bg|ZN9AnlY(FAiV`7*@n;zI-9^=+dzKi>rudw^>QlHlZp?_2f_jYg?Hb25- zTdr|mlHq|E=vAn&45)f}nfEP0i?^yr9#=v>k~4`Yd%;Uh;dErC&dX3%%{do?0ePo% ziBuwuIMASAJW?6E(q4q?DBy;b<`irIuwDi1kwvE8IBL07An7W=Gci!W)q=Tftt)@M zU`)kW0jf`$r9}CP2V4*i2hMhFRU!-uOc25!N7^;V7aPe}7Be_{*^RJazJ~A|ykj>F zUG&mi6K4l-n}Cr!V*FW}8r#@;bl!M3C(2avl~iR`%x@M{G&6_U;-Jw) znu{u=8oG<=PBBHDe_gDv^Tl>laY=7eZRdxk6lt*b&VN`p_DjlVBr~@{?&t-KDs*Bg zLsx?k=*7^xsmn`05mYXbzK#q{v=^e1y=d}0q?I5ZDD?7H76RDRHqOJZ+|uH=aQ1*< zFNxM+A9}rkohHQcZX7fmX~47t9@I;FAO)HPvu^^=p(6`DjPYPRQAJ;mUxeT zF+>dhMbrl8ar`Tz)r^XQv|}1FkJNhD9jFO!M@{H~c%NtsAH0|{S(GK;B*Nvxz9cJ{ zKGk>{g6Tt{Je5t~*H}aGYke`h9O63>PpeNsD6LUE{iFBU)31M}d+J~PMHE9&eRC?P zVvJCwKuZ1W3ooVWSYFa1>a>9S_T^J;e;0&P*U<|ind&-cxrW>27>avK4uZSEDntbS z-pHg7Nk=Cq?`wfnm!eD>wbE1+osM>d$)WnLSP0d!yC8w;aP}g8CPREFIgrE?yUzsA zR9Z9xX!p0I_KRxjyBE19iSFF&`N4@ME4~k@v%JRyPwvJ!!eIskI}kY!L{3e><%QLV$lQU* zsTh4AZwkegyhQS}54RMB;C&!$e#bw5;?OJjck9!&Z+rc8#7_m0^Fe)GEN{NS6&4Ab ze@V+yN%Oy-fK>Sx40!*mQ}(no?VkEquY5=(%{OHv&2E3C4MB5ePk#O8PNJ6i=Q};+ zJr8-GzHsU6xMLh7gaK(oR@%BUz5$u8q8iDZ|uI}l|Fg1aHfN4BSUv%UqBm;?I%5q9VogSb*ow zhVz8xPnlg{qu5hxWd+$yTia0m)fT$lHQ1pnVBI>S>l;!VYCZZ{kk?yxA-Hg9agkwB zFuW8ZslalsPh3Jw4|q85B70Q63vq?ngr5XFFTyzE)8n4xkP^7;NlJ}?Ul8M-0@PQS z-Rf(OR1cSYQ8dTc94h;T!3b4(I_aM#!xJ(@m5Qg_N7+z@2*-C1qnFAhQfq|lf)kP1 zlp(fh>M9GQk0`)k18FqOmy~fdn%92h(}Gl6WV`vNAcZHS#97WMs_X%2LPWZFlnFDz zyj#%{A>y7WG(#G&mFoDTuZ~2|!J^8cMf*hqSoQ3yNAE*}0;e?3LEc&PM!GR0IhSJ$ zl1ru_+LM_Q^A^*w?@3se%_1NU(O3f<;cj18b_wI!5k2NCi{<5#$|<~ZRQ&c&h7{f} zBT3QDPaK^H2T;DJeyZEuhVN->bJU;0waAT==PV9U&0}SO*KQq?;^62LfHWkb8Y z7ET?%n^=o~f{z>!9Y*EHmj16PjcWeuX`FLDzI$sP5s6!v$_-B2+vs7Pp(dyyTfMi4j3VTCG zH<3aX6mVmycI{~8sUaQ5T}vkWy6C{5$nxgKd+6vXZ?m$`lZ_9c>;WxHMW3%|ETHI% zrHI|s_*-mjSDTP>eut9JH!RrG7cIM|{?*sdi{$f`RPyPyKhEPGvd_;xcn@7c>B@h! zazWDkwASv5Q~yzyoQF;zCXwwe!G9`2O?FpS+7M!jlEb=w*EJ74Jl(rn+wQY_$tXKB z{^9XwM<-)h%E5c^1qg^)U2FAvKFSmA{ed7+<@9T$y&3?2}8H#Wj?Cv;S)HPCADv-1p3V3>#(G2@OxM}8i_X~TPDGmg8ojI6C zyh5RJ7@e`Jy}G^12+gHkV(UkuO;>lACbf3+Q;pUvmWx{MP7INPL_5SMNRH~E&L0TD z(xXAw%8OhfB^e<*?1_tj9w<+HiwrFRZ&WXUH?Ez)&75AD{+zWdBMqm~nj{@bnIYR_aa6q9%lmcLxLZXhou6Jav5{m5WZUF8w( zL7;gCTT|;_ImQMlYR_mJnhe0*^!q_nvMdd0d9+*aSYmRkq&(_9mYIsohQ$I?QO&z| z81QJhg9AZMrsNWeaIgfbbsL8QJ5G?qtcJI9Ft9WJ1!Q^|$$<`6AaW@OA?Lb})xuhzWi)j~fzp2)02U)@T?Gclr z{q%{DJ54YUOC$WpT~ZWCB+GSiM)ZGakt2L;H$ru9TFSK=;Xmo?WFhWC6g$VrKZQqq zv%6WtO<%~D1ON9G#|&l5H5)d3EYd0rrG*crGu}{ErXbVa#_eIgV^ zjgre>VRwMwKRit0#Sc^*EihlD{CG|m?A0&-qv^w3WGPg_gPKD`$g06 zpp|BI4cF21)vl189c$o?Xd6y$LbLG4)HZzmHGBHuo9?N9_193GPb`k?hR`&8)9dz< zJyY&3DR%u>ueyA`xQN$(Ri5{X{z{Zz_2p0&~NoMb8==;svjU8ELbd;jhAr=GD zW#8T4h^ob6F2U&(YSe~A#>On7r%CZuQcHaeF>y)R?Z*Y4Sfk_JxGf2{LNJ)3&G2Js z0<`=ZJP?H!3?(`GR4>1Ss_45#im=APKR0 ztyf<_#;FBp?&}N4oGt%AVEFyRuXqIyfYHjS@#$I3!nM}gSm`tCF6D9L>pj4$~h+Is!T~6Q8OH7$KvMLY%ce=k>tGDG%v^22GVGW z^#-ZI3bHv<7w2u6axZ4_rI#kk)ax?XAj@zVp|IR~nbu3vm<=#n5`<0VY-~n^- zd$C{6PLH0SIdfrpYJ7SoHe$klcd0+#`u+0rB1}mhorw;6G)z70q5~jGv$Q zD8BC;Jrzdnt)@V-R^=SCrk5~Dv%Bz3O-AIVk;}RT(LaBCk}ytk(H;^8Zi(#_^{TvA zV6)TaRRFw%k7X{C@oHyNZccA@H=4LSc?q@Wsxs1gdwrq3v;++8LHp8^8=RV*r5-I@ zg6d`Emn)Scl`~*)x@$`?L_(j#`}SP!_tLaxcgQgskrsav4i6LYi(2E8E_Lm($084v zp~&$IyAKJ0EbGKDcbGeuXBSg)u* zy(zmXK+kpugB$kSR`W_{33&nGqYFRRvN{6?jqBjIi4IN8QYUDo7RTCsSI3*QzuOea2KEz{R&(=0ka`8u7r>xx2F+b_J6v)UNI>7MJl*SH!I9V#=bUL?N|;4mG-&Qd{cvltBh2nrR6s ztv&^BSoBb(P}cM}nQv98G7{VmW9x3E9fsPrPvW|Bxh}&8li`GJYC5n0FWCw_HVQu= z!}C?-)Cr&Pv-K5R@4VXu+{*?OKpVa8R&S)b$%ApJeXXv>)&<#0 z*G-PFrd!{_)k@F`(@I*@ajQ(NnpDBiXmSpN@jHjqsi1Wz&oy=9Lc5I30!~!h2^j}R zUeI;ETGnil4t=>^fXTiM31_JT_9XfKlgHnueYnr# z%2As_b)~)5S6E^T!;v46PV7hu@~(<+`$b-nB(jDY36=HS}vts6~$cn5ygX7;q3 zns9M>u<4kg*WT{5)<_(ikTO;P)i9{zT1NmTM7`PG1X!%XiS{w~iA`{Q%5QX*?DM)L z`SCS59uJ__La)1q3lVt~ra)&u0? z0LhGW9AN2a%;Cerg;;LpX6st31J9wgb}dM#`;d`c|6Y7LS_yB28r^$&Im{i$C@3e) zCrv@+k?iD6b`J0Fu>>u2?|G4E0}#M7xcOmGWC?2Fw>u}EFB#X%G#Psa;?bKNc`gu=-qmYq3aO~{NaHD#za=Wq2~5v4z6w>|7FWrOO&@HWL#4x^ zk_u0FDZ!jy=m`J_Xy(w&v%+1;)FGI6nn#q_cyq+eo&j;qc?OuSFKPNyzbGF90 z1M^;y4bJZ!dc>rbK}Btv1z!T@y*E0}q}amupp~YQYqjw~O14%Q_MJ22ooajtot!`{(7G4?@J zJ&LZySmzT?AitH%rQu(tZgkK}`zn!{F1X4q?#JfmX6+c4sK1Qa&mD^U7gD|F(q61& z3%IXXkHf5Os$Ec`7O$19)=~%FQBAlDEv{~MVf%w8nU~)}Dg;N%@4)0|r$K?uvOo%U zi4p3~GPk=;a(CO^u5$EKasbhQ>WN0NOudVVwMc+gv!`c5yb*Jdk+8&`sa^R4+%J~5 zAPy3?A4qUkCGB^rr2TWhh7I|L*i*f$Kl~fAA>UQJA+L3|>-Y~6_9tL1lpVN#7uVC# zO}uW;0`i+Xl~%8^v3c0NLfXm2E9n;A%@g)+JG(mHS|cnfld6vZfRGWApY7ZuFIe9( z;p2Za1!H9}MXs}`=S1jTt&JBaCMPdE7yIJkjm>#t9sbZ|Cd5L6C0un2JZ-~E{T%Ml zJ^aC}<1K)imBjsgO$x`0+m*nPFcvvyofi_kU*UF}d8K4}t=sE0mp8m`E<&2|0;Cdt z4Lk0-;8L67a9E;3t^M9Ztmyg0KVj|w8jROgwdTRnylr>c&CZSX|IgmL$4Hu8_hDQ~ zl*HA865pgm^4o4wTfOY5otfPwsnPb5v$M0iqn_Cr&GeEKo1^OL?&|KEuCD5>$ISHZ zj_d$&WJiP%!&Gc324cfblsJ+V2kO2kAV&QX+~J+l#}KjMLeV9KK{{mu)=!H1{3 zKotv>H?lkGsg5XRj87X)J`_ z!pYlf;zQWrmswev4QHIvdW}AewyHs}kt#}sgHxj`G~(&X&`<$#atFq9u=#IInI~!) zPRiK1e7v>v`k)RScC3k0OL|^7#PWp;ks_krJuxp*4<;kNdN6sBdN4ttn$*KczE=Ru zcWeAXaKZAK=i{pkHTnU5$(wwATDu6Y<4!((lv(>_XEV$#3ywWRJN0PZ=OA?=ZnMcbZam3 zt30DdIU;jw520ZQS99CqQ!)du?ceTf_Pcn?Z3!Yk5cOR{2$s`lt~&62dH)yc24TCgaa`g~c6JRIygHj6&ZeebNU@n9uyllY9ym9PNQ9%S^+AW$ zMM;T`Y8!DI;X64##8)r%hDiIvSgLYi>v6;D7f0g@-Pxo&xO^o7`vRgcM#GC56!k(+ zVxyAwAfS8;omv{^wtSMAGr4}YsV$P7c06Ul^B4PT#iw9PQ}Z^qI;<*2u1-giXhe7i z3(EuiR(EaskY_aEA@>ooDBw?UcnXT@aD1vUbH2qBRxO^4{)!;o#R!~+Ggopx6EsnH zGOh|Fu@Rxk)|R-muJDC6lApQSRtKSqguuUTC22sh#gVK62bV3I5=5(?Koog+6FqRA z4A_mUsAWBJ`x8TUWR0yj;3(Ldloa^^TZ${S{@7$-I${v3iJtWDar>=_zqC#|2Tjg+ zL}AI8Rr=};WEQznnV=>sy|=Sf=v(=GYu{b=sXM1SjVYdLMf}QyMGVXE($jZ6l36Sp zry#oWCeBq_A&gFAD!o?zIqsG1JHa{Hk{TdzdxGTkTv-M3XZNR&=h9Om-gY-d_DkO`6{nudibak_ zc;Em+WLx7tqIR&KwiI+5`S$j@hrQORGl*?u_WqP_v<>YHae_&t9W}Ynqsw!qvp(4i#Zx}JoK7wEv>_) z&*hbcs3nLmUGiEfUJ3;RbFUPOoLwm*;6B5wRqL6eVdXe%RGLXQq_CGfRMBwSEfN*E zY{V%%>Ukn9LScCSF{VLW@zoTS18_W-)f0-8!e(_Lr3$A|(iU0kfZ>3?!L_#zXRW2S zm^$$9bTohuYb#k{k+#;O_anudSHFa^B864E94E<2e|hz0 zb5Byju=1VNEtG$MZO?gPF8E!vJh$KZ-S4>dE^2wc_MU_T4ZP@Rs(t=mHs5vD_A~l7+;kNH%11-sM9vaAlF6x;x-|hzTnw4--)f4x( z5=>~;l@Mhs>@J@@^OLGUbP*FuRlN2Pf{H#B-ivOYm}x*v5K}-ztyQp@g)XQt0sZ^QM|6IMp?G16~$Xsh*I9?VN(5F z@H#rG@RP?{*9DDN3XglRH1=ZlQPo;025A~;zmdx6*wX5WGC^in{7b4T7!S;rG;X@yv4ZndRcl8Qt$$ z1qrj!DEqz+ssHS9fl{B=&w`fO-Tt889UqBTOA5RjzKBvr<2a;ay5!?`S5V{Q*=KZy z;z!Y7kA}C|1B>$yfVU(It||-gIZoK5chH5`(Uu&KI{jUwHzD4(dv~RcXXqmky}5*G zSHyKa9W*;Y*;d4qOUPU%5*p6Yt}a)C?{&w6Ba|2&Qa@eYkeZ#S2EE}fCi4)t-VLTl zF$tz@P22o(f_7g8~!5kgi@R#)f*;I ze)atj4;Lv={*@2;(|0}XPj{ZTr`fGPLO}?R?Iz)IYdjpb`5zOvI+DW=Hks=HeymyL zQSo3w+IxCEj%PSD>*0U7*hCt{{gu-$@Ad8=j*Q9)V0T?P$|902kD+YFB?Wek&_p&4 zh~>BYqZvy|x(Z5BR832L9#<4lJkaCVuiqY9VU|*<9KW*qFf`xp9%7koYd7P8oQ1q9 z+7)opnME9q20buY8IQb*z&I9dIqP3iAnlq!fX5QsvV&DDiM2;m;tJ&6_K{6Rt9Q`H zU2BrDZ&!BFGFlZA=mz{JaGxjmL|vWk-Tq|d)EOOZr~=N>G;7jRE$;dnnLF#`)^y8z z2wjnG@3^II`>eoLJzHu1D6p9XFHh=(hiMUhU*AWK4`c6qmt&$eC?oN?Y32DLj}O~u&&fuJW;eF zGK*8hLJM`45(Pto1z$}pk7&@&6f;HoqKbX>Z6hD?EQy%Po*5Mf8r|m-ABm{f8d%u&2IezysS8d$IVEXo^rnU5`6EI?+JWQhM~4s zd32leaF`s7zbV?0y7Xs84ismDSOu)E8i#{7(O$5SI>q}KgZ{d)UYX(;KEa(t2zB)RTkaRJK` zjsp|B8B+FxKx8Oz7GIRmF87BxEM?SW-?2Kt3=hoWw57%v|Hcz6KBn!073A$ekUe9K z+*rF(+k}D1+YkYm4R7|h`;d(2qS77cEL2)Jo3wBiTc$1}?Q8&4`*I%i#c;b=Z=5$7 z6^$AG8k^>(oi^_h0XA^~OlD&`cqxZ`_=zF8mbWa*^lp+1gud~7?Hr_)LP%!_N%!Sa zu0p(fLtPWHjD;*0d%gbd9xh_O)8C%%0q)&4Wwhk#Z8mlnQ6s%OE}&Um;6JMz8`mn} z`3Fdw$HfTg(WGF~W$3=qSL<$4Rpm$-9Z71=x3k%|fD*eVxi>C<#!}pw4UNFs6niJ5 zohe24yA*B%hCrt9{L+m>O|sZA?%oUEOSTz#&xuVfCN{fT{Y1v%xSK@z8e>ujIwuJV z^)O+&33gQlzb#x<&fK;`Zg}BDh^4!7W~sdc{TC#|WNO2aL?2XcofJ6Dr9>sNomBufRhP&z|-daz)eR}C8NF|OcvAc7t4ii_hgS$B!2b{Dyf9=gD(EP}BQWJOL z_@Vu^uH;Kt{&J6f|R;g3QF$iR!h_(X55-Ft z7csZ$>g#gU)sR#q_p{znkgP}bcJlx+w66~hX7*5=r~c$%YyIc3|MmW1 zjtd`KX##j|;ds?Oz(gJ2sn`449X+|@fl!mSB9(H`V#CMbWTAZv!M81e8kaXqfJ{;z z;73nedwTTDrzU~xrL%*o_z_eZ(N(T@ZYHV@0^^@enX3#gmCmfuH^K0=A`_925P?+5 z=)OQF(8}BAqiPt4;yFd;(e`Z6vw5pIq3MngWEjI}_?;Ygz+&~Zg9k+S%558|xF4(q zHQJLfI5i-IuJb-5i5Lf&WDA#G>Ha=sF1dXHFTN_HG1%bY4 z2g>K!l~>RcG>{{wQ~^e@nRe%T@A9kc%mBCLnDi|@uZpa9ll2rtIV_{wsles5pW!7Z z_E2|onAQxh*|+qA5zbvz{(mq(orj4r71akR_G=1rulFQTHN}q*ek0)Q`2aTkIRkK9TfcG93E{EKPVsG6G*c>^joVV zRQ%ESJsSVy=olGr#l534CTuQJ6)iFq|*Z6@onP!-*!xIWUE~ zsv6U0TLA7$Q&zvpy73LgA`4;X7fy5&t1TE;T(WlKqM9?Ke#hUdMOMWiJ#zV%r_@}p zpX3PVU!Z1@e)t()&-ecI?CGcT&)^a~;`?_qbK05O-@4t{_a+cG{WWPQ;cggsX&9gv zG#+GIp2tE-F@`(6uMXj)%kNu#uSP!o^9~5=|Bws^zt@{@S3{Wh))@8;{5J{Jfqr@W zVXTuLZ0E;1l`&V+Nw1Be=Z!LiE(j>4MJ9ewS<#~!^re#NH@a_|TcLKK^7_TEBW{Tj zO$fY;5b;V(0s02A@UcUE`=n$jPiEOPP&=D$8z_COH4aD_F$ate;R*s}KLuem3((HF z%gY-^Lt#b7>;At*1DZ;RGLo!wly9&UB!_9i6e-cXHLzbe0ea|BpwUv;k=00KZ9Tlu zhGMHFSr!g0TSp~`RzHC#Vx~})bgUr`@L>cKXONy--{kAuWTqlFWv^0waUSCkNRP#A z>ecOwsxA*ci*F)}Oe;k9LkSvlIQi?msu8ZMUp(&3f9Hiup-S`9CVK0tv+@fQYTxFq zs7CZ*=#u5Zh$pvsD%)!4lF;A7m?a6kc0uYb#w;mH{qXrPSSd*f6%};f1U0hwjs%uf zxA}+oB5a+qk4EKy>%~KnZ}niM50zx1vXVl>ls;H4m8&W=Krdk7>+MN_EGF4pmFn5aPFBzNMOZE-Rf>`h6IrQiDs96}UDKGC+ z-#Kw9$kbaCm-6w|Hs069rJNDt)cb2OO!?xukjU;|`xB5B{y&;*PXCHOJp~hvzI*3? zVNbJL@A*ZMC7y1QC72X<_i%caDT3u8ktm=)|5Fe3=O@vh*C5YNex`Vb{_dq~YiHjM zN_6(4tU>3y%U52;{lbabn;M?Rghf$x5>%7fs|3!smioMAF3TG9hRJjtdgXJi79FLK z4vdHwRl1n-=+Y}bCU%H{7QJZcm#r>z?V}+A7}T8qZL3(XVDIgyS}&~^*Q>{+buy*8 z)7nG5`ZluP<_cR{iX%sP8|c-2vL33|OEdLQwH|UuyQgyQ{{6tRf;kC3)UH2B?Rvnf zs}3J3*dHp`C64xOmJRG971^j>#s1-HxjH5L$Ew8|)$BD*`)bJ)?LS_H*`R8#X}wX| z{-YJBxw`#F|0^7L|9c*X|M_qF(;xh8e|rAE@uz?M-}=+P{O{~(cI!VyWq2$8)Yo%F zj!O4yZwIBj>s*|pc~&pgxtu7ISG{V~^21E0h(4h@F;xuew>nMPGvZx<+mmo7Nqw!l zG%Z@|#HqaQUnAKcjD~Rl$Z~XAn^bEa?{SK{RH#N2dGOGj-VN&6)0Q57NcVz}n#Q&D zdbx8btp1uqNKMFZ>2HI-q}}=K?_D<>vLS_JGH1L|gl-^Ep#h_l*}(ym20YA^cwByaa!^UVVe7g;`X5q{o7NAUZWMRV-sqJ z@KeM$FY6N%#E3CIEID80-|);&mHq8lwR&Ljq8|DV%lOo!S%0!gvwn8pZ@3X`5t{YyLIY+5y9cyJi!5>nsU!Qr^}vm z4f_Y)ZN~chzm)Gg={Amf{8g3g=Gppo(6eVwwo#L1uM@A_`0YDW+g@E4H468JiA{9w zl@fE*?%$!eaDe|+u=I9RuUjXRHR2j}`(oSU6Hj=6CG+B&1X1=}Pguu8J^Qzao_(y_ z=0jEcx4)`gZhz2VLFBa)jlo;btkQf9hcXP$JJK#?u&rSy>kH`((Md*-`}2xVxR5g{ zPwo{}F5k@iJc1i?t*7!rekD}&x<+7JG*$h)1$zAO*<#af0E1(mW@G}WJ>NIMqeccaD# zvMJdg>c?leH^6(Vw*a`lq~X;{4pxUK`M$dTs%-_IB|F6Ld_NQ(KgCdn|N2pXy8Xlc z^!MKFPk-&b{`5CLU{AAKe-hWQz_xP!>sOIP3(H@AJ6KpAhBZ74YuN6Y%_iuH&1jPf z8g9=~;|~_K-c|u~QBN`wbuv4X-+`g_5Ps@Jsn9{Gp{>CvLjkE;@b^&K5e7MnS-5VY9P?W7{pDYA2;&F_8~ zGRFrgrTo&<{`41L^rv6FVNbJLcRnc+$$K)1L@fUZclhYfyyG2otbV!odUvd8&nHL- zxQDwsr;^@$vpeZ&=HOyOJlr?h#d&`$kX9ZE<9G>Xx43q+HX3j36)1(Yc697UB*36| zfSljBA!9a1)|6pydS^7=pA?(3X|dOxJUSWSatzu4-zs7fTWll9 z+}Is%<3f+=-Uzo4^xC_~b2ppp@eU%ivp3s>8{(+Tym!UUcyyp|deg1;qmN#^+hsQ_ zW#DtqJ%@bKmr*tplrsR|YfU1eE$9Iv4h~1-DM!>Bgktgyha`E647=U!)`H-++kcX# zuTw6ztY$FwkVup|4lR zP;6-jgV}4ho3szqdP-lXStXi^50JEw*d6I$#n;t zv;F|x4}+249YMG@-!=_WC?S)e%OfeloTbQZY~5F#>I)ZNJpbzDwa%5RFI>Fbxp4KB z7cafkdGXTai)xI@KgahkU;Og<>zxbdFT8xQ^TMU;TKM_y7E~?U6a94=sd(2Q!04~* zyYT9288()0Lw-CYl1ONyGUd{b^vm5jt}YbXm__aUWS5bO7vj8 zbtJ(gQte{p?(m8i-a`XEi?w4A1dSfL?|=kmw+_Yc0d|5u?-}>7o~0dThqDcFX&hNTmQB5#Y<~1 zcP?Lj>C)N_frFA?>`(WAMKH*kIv1{Ay>X*+@s+jfSFio7)VP2gx08!Qgbp4a)l^u! ze(Bofi=8XyufKHZ6{)Z`?t`mMui*BF{;;OTg|!O`c)XQ z`uWK3;Xzq+2jto*^NyQ@vTU$e);o_|D55fHOR@=`!%h)o3Abxv5) zx-YZhO{O=ciZk5p^nzaFg-gA#)zH^UFLzQJ=S%aysxE73T6-ZJskUIk9&~t%#SPh+ zj+pP3*M3M#y79Tj^tQci7ngSA@{Q%B=1<9Yw4IuWpToaY#ddB zqa)XabOhJQ+V$u7tZydZ+~KWs8lpr*Ifp9+{iU}oDAr`bY}GKAsVvc*34|^Q7+`xd zs5)`eRfpR%E5z>Ol1B&uOs6|u_)6>X&&3`+{<*I#oh#OV?kh_-KlPQRuS}j$?!XZd zO4h)**PhHaTLx^oc>Hmu7EcSs7EPg=e>OEL>9)V6LS7tZjwnY*AWI_3U)EDxf*Y(| zFDuJ_IFbvh!#sq&Epjp$akmd4_zO&8e{nn>jaxelmxjn1-rp`lRarU3#v3X8dz6)L zcl$`QHNYZzL+;WJH9});u1(yreGd{No8zB>!OT?4Qhjz+WC&i-(8hjsNVsX5TmDmOm4mk}4)@)?1T zex26KJj-qNwji&ui+C@>DS8M=q&v9N#jdy63ypehJ2zsOb}bj+Jf;*+WaQEb-_+1G z$(dLpOda5$f14X>1W7b2(zpAQeZB09(D;|rK0JB0aPOpT$)(u}-4FHhRq(|C2QpdmW{O_$iw^!MRs@O z)-=UHR$0WXok%PYt%yc-GEvMwVtqukRfBF@IoKiQT7PYP*n#Cg5mo6g3=MDQd+ z*D!xOGm<&c50Vhof_5?VBVAgHu!B$0;%(esO!*FHvfF)D#LWmK23@G3suff|z`W8Bbdn~>6mGG2~o(Lu?dw0Quj9Qc(P+KCaHr#Y5 zTk{M&3uD&~X5^<-4y<4l<@2vO&9zy9LWmy4#qzL{9?aXK1xP#iG89ZWO3)+Fm;mXV(~mx9R~eQf6qo50I`q^ z6oX8(Ao=*T@kBBX)vFg-lzWEjj{+h?f8)->_W7q8fi^A~WFm&#J55XA_S}V^CC`T_ zd2l$zTsqh4+6ZR2MP?VGQHq&+8%2~T9T5NBS)gu^Sk~bK&l_)4C=u1cW-vW89HBsU zDEBsS=TE>#-U1F`GL5>kXgjjMY+`N=W*tawfY^W@tHO@Qw~)aat{~vPBEj9@zT=+MTEHDe3yH6=bX}M~FP?|`mVjIFG4>DBt1xONwmlu; z4qi5pm5%~K=zUlkZGLQp60x4`l0vaOBHHb!5O)F)bVaB%6^HU(rC)%iYYCu+oeujN zr8S(7DNP6(lnUnWYH>WJCexpx<96~Dq^khKQ@o5NqTIC?VLHyaT7ErfP!cW@2cC*E zFAlKMH%QbLw2Fit zaRt=SE|aLcLh~s$NHBh3WknN~=mrR!8c!MRP_;Cb@)6-I&OdN3@LoH}+g4 zMbt7Ok>bE`^jbI6g7qM8$W=HMY6(s11yEbl(v_mUyIZ}(X>lDFCiV|hd67eoGoJ7O zteV7(l<12%kjZ!}FDh!PIJop4HI`4QO0I9YB#nTsS-PccqDzj^X06(30LLM|mwaqwjKju_FI!@wRS5ppGDd z$wtb$)lGzN`L_tGrV2lk(TwLuk`|>-9k=M7$GhPd)?~6|EA0^CvHgrFsI8wiAhYKe ztl3b_f1OS7&sc_(v^!2s`&cI3+KvS()_cmb9@#ohTaZIA7k8zXHPd|(Np|5{cgzc_ zjdzmyaW4uSPK7C9;b3=LdmuPyRK{R!b~4!Q-|m5Tko=V0f+;qLp$loJA1l5xyrhbJ zQOh`^1f2`(q*4W!mJO+j!2RC6Q_~scar6#cQ~L9jVO1*Sj8Ih>aZQ4P57!%M+cH`A zn(JSQ+W@Pk6Hr?#32BghKFlH+MHH+kt<2RWx|Elz)vEe8l_Qc}KB?e}$6Sl3=caIY zP0Cl)hzTL3o63!-^9aNN5>UY0W4kJ6i{Kr3T~!UGSU7K`gZ_gcI4+%AoUY{@yj+M& z1Ed8d;q8#9=(pN zzd%i)3JwDY-F@60HlENn0?}L!V4cx^dh;N$mb9FR#;AyEKUmLOENfj7=Bs^BY9JC< z!r4vEA~~EWP3!r9)zkzPH%@M&C7?-jV8+^3y6nQpIVP5%AuXjoig-LGQZ-iHRx8C7 z7wme%Qt0-BoCWkSiDySvjfBXl$6YSMT;f|t;=I+)j+ZFlxZ={EbdX7fChl`^0Fx(7 z)|2io%tEQrpvv72$4qLH7IUbHF{Ob^T?4L?HO@`SO`<|mqFm)-0W#yttTL&9&^1>j zv|#!I`SXJqzOWOks+5q3MgNOfSMI^z(a7wjDmcHOYRdZ3H7HMb9=}3^o1Gr(*;_gd z5I?75SUfMlTmsKGn;a2LWsfD)Y+yDoMT^scib)UD846o~mk~6TIBd$wO2hxgvZpYL zMVJ=pwS`$c7|A~=$BYhLEt`HZ>W);Gx*)6pTJDUc!6{Fvb;bToIEJxnS_lpfg~Mx&(Nz{8?Jj`!X4h)2m9N6PEI4jFobu-8VR#>((~OjaOf%h28HO2=0Vy%Gg~-c%j{Wr62(|dq$66j* zWPhP5HKr>*e;JT`SOAq`B0`G0M;J_Lxdo`er;H>0o-_Uju}!3?a_p4mu{@Z$gsSd} zHjBh;7>|iFVk9nav2`>UQI)tr#%+spLNcd;o$ZV^Z>^+FM4X3`@IL1dSA4?rA~yOJ z$3o~h>*w=X#z-idtXVrU;h&E6e=^(J!oHOcfyS1VorO1qd^_rh*y#kL!o8Lh(9cHQ zd~m0mQ(ZlW_|pfnv|BORu! z_(g?*gEda#JnoH0v)$?@N`(dxeMP4&aIrIz^|C(s>~rr)b*1+NPJ>N4vKzzAf4+Rg<6>;GhR(GA3Lk zEW=7Um{jKtXG4`H*LuUrXgntaY}$_t+6cN0*8!6u6bnA8?k?P5VYeWD^mwhe)K~9$^$~LWbCQIE>gz?Ic`gx2+_B@Gl+S3DE5RejaA*4z6%n-!3+fg6AVtz#CwL@UxeiwhG|9V!R?w zL3N_@rFBL0!O5EPL63%TLbpzEcwf;!f;2Oa{*zXQ*#Lj1#79pW`pK! zH8s99N{PFu)5^Ge$I@lM)fO6jxM;$}w~oh~3CC+76;V|If~{%_Z!RG9ZgDoYdGMLizg!cqC|x#o{JC`LirIBDD~ULjh>RL zcPA86*8L1woL_{!&1qkX_*VRU7XMwm03TDX0HGNDTwbm6uhfYeT! z4IHI)rfiwPHFIVmL*OBB5;m`ddNhP4YUVYYFYV0db!tFTh_e~OYREEnDv@b790stm zb%tL`UDf3p3Yei4N@ThaYGe8i5@+stI2#@!5T#@E88`t?q$r!~JbhuQ3Iy#}gD6c}29jGl6+b(7pywtmq&QNKr{#2o}$aaQ1P zuG@sMBI6EO!{*)x;|eMech-%Mo`;f1Q4wP zAH!gZjo1j>kDQwL=tG1k1w?J6djp)rdvKl$#EPq*=@B=L>T5PEW7ryv=^*KN>dvO4 z1NzL9D3b+M%PV#1hC_qx0bznt=C@e9DxAfn9L|$=5zFQ<)QDs4=q@d86r`B&I~}II z1Y^>3qLE?b4^{yF>aNKfruW^aOn zMW88-7|4eoq6NSqj8KH`$Ylcy|Gi@L!AxjhV2eg$O6 zeDZZ_`bVuGPI3ijq@&xavA@bS!FCx1#h%JsW&J|Ls`F5;D(xazfilC;zp#7S18^f< zE)}cm6gGFn1ZYQTb6v4s+@a23Gl=#Ds&_UkvTR^h6wRjp=jXVh{5tD<2)qT zRX0LJI#GIBG+&tjR_3E<8QII~fw$~z5QD&p(a<94$$mgMQ%vVhS$(() z!FmLNsDvF%62ppNcLc!ty(f&Ci$$lw_74m_bQzccZ%Ai}6p}C8$TO-=7IOg~2R3vO zbPdLE${0h1vh96u+l73eyp)~fmuv`~SD8&5%2>}B70@P+(q>l;o2n<=63NyJa#uj} zqBD@vrrw~hiR?iN!gpL-LjgU_0?&C=fy+c&)kCz%bc@aI6dNBomu%WR@iXYzRVvaZ zRBVL`^q~=wi8jm#QvoZg9Xf8~cvJ3E?RIzr8c1gz#Fe-$Qz)_8Y=eL4z6f5Qkh$YB z9af3)8?H#iR43NCO7;fzP<`3NDPnH|z&E(*CGf}-lD^$W=xKuOC1nozE@^!-r>VH3 zRacH`vAz)F-?EutzjhWbbcZzU5|!Rd%ChR7&3}xmFTr&iEPCS&#WO?X@|{P)T~hrk zqlXoU#LvP%y9d!5a@R&WybYzMTyBFr4Rz>-Y>Oq2?aISp8lcRpBDomPeh{HX40jJBP z6>4xyX24MjoS$BCz4GgU8JjiF}3Y7D$O^| zxFI4JEJo^GrtJy5db@OCV+A<-J4r@Va6N{)!gexQTR)|;_HFo^OYByG z7?ay=28A3&?m}?Bp|Q0@#iL&ERl3wPCRkH&xI@g0>h@adj!Z3^dl3h@Id;B62jc7o zBuFSOV(cN}2LO(`1mm&(lFQv;TGJifs@^a3WY@34&n26afKCZ5!iyaa0=ab;c;JNE zaS6z1?Jw!%f`wCalOKPy3n0~fe%4xXV)O3K2c4Il54Q%*^MTh?sBa-4#_6#<;1e+o zlfr7JX&dnnJCXD-S@{S=w}6qRk%fr#^56`raI%<6z`%rBZJ3a->q)=J zz`_Spl8dmHpsXa>Pzn)0;iL$eN~u-Qh`!152Pp7>ld|+BpO=}$=89z1IkpX{kbs+% z9NQ|Q6C|aO3qmRvCCR3%nFK^W_LN#1p+nFm?Ly3YLwJ-9=H6q-8z5cye1!<(8b;Ov z;zJa_*8-s<7tsYzG!!MxY#vh(p&924qj7mQ)8grbo=fxr7~7lK&)5mqN2gu9nan~; z#OGnh!>Ukn@&yCdqDM$9sI)I_&EHVPcG}W1{dP?ao4$vpQ0bL~hD>L*_ybea18~$B zroF8t;}lXdN;Y$tGy-ByOGb1h-caQ_>p~qCIV=IObS^B@Yi+OU&mJf1&=XH6RVHhq zwhf~B>l*PBPrPxMj_O=-D0>!FK{~v9asQX~Egh=&@(-(3B5)O>$@pM+gmk>6PTZ4|Mp^n|qc|8VtR;Qfzk)x$a%^?8mKa z)1lsq|J_Hf{GTlTgIZk0C;Rq~AGz{-{Pu4B7DN{N{QHkw`9pp-q@^pxO8n6ySKjko zC}D($;0{Z1*(+@PP47m~vK55A1_pTGCrNDg}b zrayi6hCi)#{pnWUpY{g+^yX{+w0PT}ilgxKC;aIhf6AU_xBkoZ?|BE3o_|C$#~g5t zc&xf9a*=9u^ZPZ`=nFkYFo_&1C4>JO^g6wmGBYHOgGJ90Id&0-&dinJlV&!AEF?BU zO;-7W6uFG;CCy}6O=>G>Q=^zlKE7GkWWduAJgmk~V_A@sy>-W~2d;n*C@op?qJ z5p(8spj~By_prfdLx-WVE?=BFvwDoQ_Bg8tV9oQwkAkyyr6z+78)N`VIBBh*T?sQK zQrn5ETWOaWNPk2@Q~esU$r4{P=3%^IQK-5sE_a8!Gq_^N8U(*l)}c4<>9f&K*7(#{2>{f)fum-cZeid zLrvU+MSfDQ9sWT5!e)WbtzHC-_Yp>!;`#aI)t|=a4>r&%OI%sKh7vzgrXqg2vHAtO z!sq9H0kY|TMEUpUf6<@b{pbDZkHXWdU-Ngr9-iL$Oa5*Wp8n`B`@1*)J%9Rl{zH43 z-TKI%5&1X27uorIM;H>gTbtS8b)u-pD&)jczsQkSaLe{!phkw>M|o3 z+~XuW%gdUP{Y7MChs$SoIKg@D07k_qNgtDZz9vgN*R!UDFXezYL0pZmLnxymWep$o z6y=hgojS0Xd)-qw$0DAT&4qgX4FThT$A(xg%XbdD*rw)O?{qz(YA7ld9h}f~{wcU( zSnunJ)9P@Js?!s$`O`DT^C(n?0-X!4WQ7zV>aJ>cTaJqM+V%6V+<5Wo^(z;z-!Pd$ z=OCFq9}Zhm$jb$vb$E{=2<){Pk|l0?J2dRAi(pXOjC%dXPghqjzH;fyXn*-pq+)sW z^Z6vS7V5Epc+cjM`@O__K90&|G~q;1H{dE3q)xcWPLfvxF$*+wANG52)(+oP zjaEtULo{k|Bn+2!aS@WB`DI4^?Fo<|=xO|ZlX+ZTgi3D2y9}6+e*yu^?3@%#U3(<* zuSchzn}ga~hXcX{2qD)^T-SO zqgCxksa7n2p`hYrC?mRKPpoLo)1Sa+hMG#{;puIyb%-mSDKUQOr;RLvab2{y#HB_0 z+h=97@B(!w!!JZPoQ3C+hpX6#fX%zu!Qdxsf;J>?FFH5H~}V5V|hDv zC)MI1-gKOiatR>@k@|Tn$$QOomPnd~jQI!M$^J?nc%kKKgTo%Oi_)h(L><(@ zQ~#rmaGWwYtU36ObwYm{zB}PE^-#HpJK2aD@Vv7_}gCo8U{nBye zKO=@Cgn+diiFwfshv|>JSj1;|$_wO(&3@$tt5~kQsjZNs-Rfj7W3@=CF3}m*LEdo& z)=wwN(W(W7^o=`$g{vyT;KT+rG#PMprPxtl6g8z9Va03TDM#eq^$QAX;hcvShZ>yI zg>0-W6iBI^eTrz1YJpBBd7b#aR6(ePg%fX;1$$|E^hz~GJ3BD9l&jcVzr?1Js5v^c z7(X$*L|&4bL~ILJ6y*WXxRI(0t;Wg2qJvQZQ-FP`d?QR^>Xl&WBcAK1DStAS_TF(HY`IgWDExv-JXvyfV7jx6wE@N`SGn(|=lay#g{em~|(DanIF2 z_(FE4l!~q1!EMEkYQ>_36nrr5r~`t zeG_X8tc~S!jN~`$R7#1y2@BZ*E9(<41(ut2W!>55&GuxpGd<|uZJmt+)(Ha@mFnpG zg-A9wbJdd0u=JPV^>oPqhd2Ibq>?*CLo6%Aq>)FfD7MExI zI*GlCyNg}nM6!icreX!sMvJ{JR^ z&zWi<JY7YEVr={YwmlWSGia3o#B=`*ug+Vy^Qh*E&6 zh0|x_PRzrE1=pnSlZ7!wV=D3?r+_uwzH#wqUcLCrg^Qib=byiL`O+&dNzr)1_nV!A zN1dPV&#Biya!Xp%9o}3(euRLqCc9??6c${$NmiK9R_1pld~`3G|}Ptuv|g{ z`VZi?fg^K=8Xt%7)alRYCFTYnSC%*e7Iu4snd%PhW2&i&S7e`V>)qwC2fCllFOB^< z#3QISfYMm#_cJy$IYL*_rhR@e7kk%T?5-Dwhtqh_kIuW;9q}>WE_1PBHR1XJi8txsR$5plj#dWUgU#(OuCH5Izj5)}O=@h{FI>KH zbKxfZ`R>6_sd0oI*9(QmjZXdZU3vSNSAGK+0Awk9~xqSlZqi`yMOSO4KVJ}NlD^)xo-=x!;lhS>oUuf96{rJ z$j!Z(J;mGzv3bjlaFU3~vkHlCC62y&ThE3|ILL&?2Kjdh$r+iZrVKKIi?u@jmlD`0 zQ*D^VpM$V1PY-w!F$4!sZL}!P>A51Fwo*jkP?nxMBX~F9RBSvxFfS0{vcXD((>K8? zl{kA=dS4x2-v0(Y@G_WkdpODb&GE&D^p~PHCj;7 zb?WIFMz*MwBhf{%TC8*V&%9{FMtI5#u$boLLS z_B^x^4JOHzEBT{@M|9xm9nog*{ zY<+bx9$Cv;m$IekF^Lpt&#TaAFM2}kMGJH4maRsw!c_D4obolcqc5(08I?Xcr&8RS z%_Q`d)q`W&sj(xCR{u0AeWbY^wI-pESd*UpE$DtfKx@(u|9yY@>Ob(Ov%l?6pZkaQ zG`saXsDdciD-T9T94$+GZxhQ>GwSTrn;5T3_NDDP%5b%&e50*QFb(h`EjV=6m~!Iz z(d;wP65)m%=%d^`gltmPoGxB#)-^hZ%gw~qM$8vS0!{c5`9dKME~R; zfdRZm!TE`Oj$j z;EK%Co1uGVuZ-7mQ154*8d5)bqx#5T4_!k_`ODqn|>0yiy zBY)gw{9%lb5{%NFScW3ojLH?+)ZpMCnb#l2_>A^@ypH8zjE@qJb1=Qa@L`M(1XB+; zdKlxQB%*t%WTJ?HKM!MkVkl;`i9L+*`A&`TdDQ%2{isttg~AmQ=ib?%XR^P4*{kDoEs9-FRkC4gr;udMby4a*>MzStDxvGu?j) zTcm4xLcllPMKIpSZ=)0r?82XA z8L^7~@Bb9Wj{k{y)&9}{UwW&C zl4v7+1O^x}LWEGen&>;VGeD<99j+wv9k#W9I6^JVORzFZ zl)bPv+iKoI6kf7fxyjUxxYg|`+I~Y6T8%;1#@IgXQFlm#J2#e4EVh!$qSHHs;J$`9LW)%SHh4=fxwb96>;`*Gb>#O+PGF4_hya#-_A}?F3;*9OUYP*4-wh- z*vE_&oy5L+zwC-RS3*ukP{JYZKt?9D!$;H1j0ro7TNJK(ah`V`R;jU%DrXd5xB>JzPQsLZjbJCc95ThbF};@gsexQ97Q8oUfNo#BY9Xl9e(?KK)T7| zU({JGW5ihW9JG{JwoylwDwJhAv818KpH(i23!89}HEdX8#3DP3I`e5dQ*cr2jSf3V zn6^9JOTNh$$;Vsz_LNo{c6N5)2%?PYX@g|WyTJ!$FdE`^@u_yuK6WIPY~)a<+X~P> zGs%1aFz)Z}S#{HEN8ZHPj1oUjb4{ic(^_aoo}Vwwl00{|+>+c-s8u_e@t`F*Jzv;N z=|zoR!BnGgNT&~DShaY6h|3IkbE(KA8?~)&*d_H?1A6J{0g@kBEX!@-3N_LiitQuiYG%=GRt(~%|yw*V<@Vvnlu!YiR8NKyq<+EU3 zawub<)vwat>Q* zn@%O;?vY!KSgtAM>l>TTmUDRJ?STZX8&87y__DrJ*<98a*&fBDZUF^(R~qfs8F;ST zbnoO%z_J>Rn6r;z!s)M()k*?LqvC}NrBV`inl{4EtFn3}I5u>FU;S@qfw!`V9}b+R z#z+%%I2wwhkzA--x5Jz(-jHs9w5dVtbf5;{$+6S9SKNU_DA!}bF-dcTcXfaF_Wa+S zg@6Y1bSjBp6>J^$?u8_>`K`cmE4W8A7aMUg)m?DLrgs)ZohAL0X+S^k;96%JQf=E3 z*2@cB-pD5IUb{N7sPn4cWUXRh`%ZT}gtQg;fn#Lh(v(roIA%aDf}V}C{{ePL`gmb3 zczd!8cO&Zs^X%^8Iy0o72@_`0Xx;7B3omy26!utndsN`sW!?>~$)O;w;X)tomql+p zrp(TZmx}{RS-cErkN$3~*V~-!mIiMek7JR1>DZQ$AY8Y4s1T7Yo*r{sy;hteTy+`v z-ICxKO();mlfCX?Z>e~$&_kWT=1t=&u?O&U7HX<_HeVK%C9$(`l`--Mqv7b()*h}A zhhn?S6N=2l?C=oMh`HD)-C+1arT5Z&#i2*w2$k-EDdcnAfQ*)=p_6;0mlPkZ+M)=+ zT`pP?ckp$k9tjELa6Vf~vVf&?lH#q56W@T)`*ncrPGk#et?Rag#^hMEf={y1Jau-d zy`~lcmG3|{aaN=CP3}MBvWX}OE2(y189~hHWYWjjZcQ%(zboIgn%0VVRGi0eZ5cKR z0cGTwNEZ}*`su`sLAs2!fW-I%xa5g4)C20&JiY zEB0^xF>dKA@sXQf@{8P5_r4(1=0KuUvl1WkB51rM*RVgOS9z6M@nxmx<;av$O4@KvC&YM|yY=#fGm)Zf z`PuTZo?<& zGjM=)jqPb`zjX|{;PZR8KUq1Q%~+I3$biW&zz|i6hq(hM)HqXgZwku|?Pkrjc?o)X zhL+lpriPHoU^hFvT%2Am&LoZJ>lXkujcR9j=vu+f4$tPH&DI@U)X84y-KYMGJ1mJ&gByv2Aw|0@| zYip5m6HkDuX;E>qXg$r-=Mn`a?{(`bz6oSdLzCroP^OLbg>s4YbIZj!9J-Qh+woYR zPn`|Ln2&5|b~|A{o(x~;0dG9S%5Zt$w$jZ0a&epVl9iTBtdrJKp6)d(0)UXNYc;O< zvU3{9yPcyC6J%%H467B)auk&kEQO)nZcj%@-*>ye1tBx1@Y|57m~^haCRwGI^p=p@ zLW*<8Uui4ZMs++n-V$et<~7SXUdD+~C1Iwr_;25~YyOoaozFggI!>B-3f zClG8c1M20raLS+>+ZAu&3?$+QE5lfIf^D*n6jjQ`3~eb$hmz<37>{iv_%O8V-02d zg{8cnXv<8+knJp5DU66{jB6_^8DHn14@Y-;5{AiW-Fj-QO0tcPx!}>XGheXpoR%) z-34;))}Z5VJ41kMMR%jzrpqPS_iaViG^6fOADwIIpso6Ya!;f){1;0m+p_D=X}NrH zPH6~AgK*d7bE|&=oOa|3zk$bC2>tu+O{99GC^j5phTx(##(@j6npj-EfL3l_<+Jkq^=`O@>( zuiiM{aP49<_R8VZ^U+tbf>)4S8&GW^%?`nBs5^tLnBs$5krP)K*|UPHG1QB@c7HMU zVC0GSB;R#ttm0OH*-6b$%_FEkEIYlUrBXtb|KbJ9P@PJJnlNeR#p~=0L(#1BNv7_J27^+Gv4An~@hA$h2kOwe3>QQPWUR+QU@B z;E|{bc7yt=UmvcCXyf z2a~w;&tg(a4KPJY2iGZ^6ju7`eHX-lHh2$c`AWUu-Bzlr?M45*ay|R*4v8nYtuG2q zHWm;@N+ryl|PKO26~MK7yRUYTxD+^+vf8$#E_tIfkdaW|b~0Z)z*# zgjz?vv09=OHObc~HfmT>AA5^8#d#HuQg89@Jj-?}>muBvH}_h+=!1IS*W%eu*NZFf zWDFI2cnjyhFwYgH;#(*#9o`UZ*n}mk0r#U59jS?-&NUrSI^!+v(r! z;0yrG2#qd?aOGZDDmFQSerUV1dpIjIFP+uS6rN#_Tn`S*-x+^Y0tT<0-C1|HS9%S3 zL3~?i2A_2YrLP#^!Qr%KSMl9dX)f7g6U-USmAE7n`^fqZABQ+;TsOJ`=d#HJv`tFo zOD$EsVh2OYcitQ|W8I+m=4&<4=~94L%h$+9w<>u~->n*rioO$wtiz<&l?u=d%_O z5uWk_WsH=5=Y>lM%75lXb9AxaiJ%SRAx;t^c*^E>3^vo^B`AiylS1+02^5$Ma3oSD zpIjwno9?i8hmJwE2Z)cJXk^vmf(X=$6nd$^jp8Tkgs_m{;A*Fpc2j$KOO>^i1C4?L zabwa(Z1W`O0Bg9#nh_LIfi!@EqBa{-GG7_l*Fz}PjSaHzO629P7pI;xqgDv=jrgrw zaJ8V4S%x=m53}4rblD(EMH3)g)hbdLb?C0B-lT6*8C>#+jcb0W0_8Lx9@H)Yq9%4BFh4ksQ-?TZzU&%GQhE8iitqhNunyAuN z*?jQ$>JoJFu63#wM<1w1G7bKxRU<`;7R%A&jaBol#@hSk)n7q-i;a~c zAGQjAY4zVng=PXvd4yH@4_1E-RX)_z2F*%8#v)=?`rXH1Li!NRN`G(BpWf5*r{51x zzx649_n}k%bQqp~H#|Mp_OG{3`_pfn^`~Ec+Mm`w<4=FbpJuoI^nw_%F1>XlR*Z@N z#P^;cCf;wP)eOE_XuKM<Uv?k8>Z&C24CNV(JuxnfMwVAj5+gt$b+`Oo42eJd} zM3Qa%%rj5ry*%!_jF1^Xsu7&t#0iQ(!GpM5*)Nlr{%1~~edaTQ>TvD~;XA?RlSvLf z4KbJ%hkQr4^`{CVW@`^|y&l|@+`zltk&W4#IQxtuswOYHddbM?MgxokG;^m{+KThn z2qWoPV;QCk=uD>D*#u~w0P$6f95swQW;>wA^#mc8TfJ}MYW@R66_lHErnCRrWiK$wPH`zVkkeQ+f1 zZm^5*GJ2;55KT)W<5BCnnN6s&oLInIS0J0oE!0YK@iT)b`76wm5`+|R`MlDGj5;gQ z+=>IKG~_+G+u@Pb=gi{5K`cz0@Uf;nQ+YIZ&hJ}2qj?iv|4D3Mzb$zawpL`@`pNs< zwt^fEmy37x9>g|f4h$OYq$v@C9|JF0KhD)6iXTa$gy*ka)bTGDcwF<8kP&cWzWNkg zES_aUxU6{);BSUtsx9c^;h%9Ekzw6UCZu^(4$jptt>8+qc6IgQE0?}}@%jzhL3IoF zPKIm`ASyK%Oit+55a5cJ0<_mnnG`Ocf90iD&%bo>29~|L_%8H@h+x5gcL)8+p1Dje zyuQbmTYLRsZ_@LZ+daMn=mQ>Oh0qszjDJ~}9Cn9E?eUB+$FqqZc(vsIh%fg?WB9Cj z?VT~-LHHbQg{E(H`R-O1Ad|Lnc*R==md$o&$@{55n9j!gN&ANbEu4;MOTZ%SS{Fxh zZ+|ESw`T|;@>g8}*d2E_`&<5Qa+~lbFu^2^^rc6Az>`zG4zj<^l1y)b&L{8p`g{*` zZucGNj=b8z-L?tP+w$^uzc;0D6;Zz@sNd^tj(c|;z-*r|XZr}x8zxQlWK6qIGwplH z1DT`)jNHSq7q;Zp*6YYL;HAbgK``WCE+dMz1#jEg{O-y8?#+g~;-~2VrcxAUrvAWR z4Fx9L>F!`_i9n}9UWk(n*q900XXEXeSKX60F#5usCDz>B<)AlbgS_d1OvV7m`&rie zfplpA5Mj;_1jPqkIAVKK2ZA!e4{&tgueXla)*W~u1{_TU=aa$cb~j*mDswaK4M3S* zbw}C_Djy||fshe8b2}Z7EWb^xKM;~vpUBuJz42yJvimx_(}mZ}X19L}!wjXR`|K3* z-$qpJ3*>#caCb3@zFq}UFb0m&q6adpgD$Ly+51iD2Z#>E0|c4;&F%zQ4E$YRs0rSx zSX)R5If=^n1Upl+reZ9LM=jAoQ z%>ZFLN%hGczMb6Z?jd^DJGHCp1C2x96Gn9)BR#;npJJ^VvJQ0?XTw|I2L5s)^n=jc zJ$gkdSd>7)l+OMBYuX>S7nWJ2IM`aeu!H1(HJ? zZSnPJYYR*#bbMd>xZ4|z(**{lB8qNeKEQ>OVNPZFOuM)GfqW;zvM`?QIB*a$s_)Kj z5g%dXSQ&WRJwQZroZ}-w$59`qhqz1zGN?g!gZxri^3?O>QzTQz5fy7t4CI>m?5a{bV$| z-AUlZT^Sex)iahql@7z*C^od$6@tb;-F`Bu0~s$3^9e=n$B+i8mbTIR#6_DdEEd)|-R!)N9`eK~p}e8Tbo! zN(>FNV=pCvjjV6H#@27IcaS`Xvx%43`t7Ar8($(XlD!=CrmrJlALq3Rc1U~zQP?MV zS&#zp4ixF{y2>N?GPHIu8f_4;1=YrB{J>P^yL<5~J^f0X{(8K=K)b<?rQ*H3@#WWR1_zxJ}R&-T-Ly{s<>8D6%s zU*ilf+u4ZrG7L_$Z^NwKG@F%KHuk;j*XC~8&q0QXLDs@SHrj)1L|aEGlu0)BX@-}b z4CWx4hs|LICF^JR_3T^L`hHfgmyO{d>&s>avzOtspUuNwHlkrRhJ&oV&8*&j*52f` ztk-waU%S~D4zivdW>}hJnBPB0p-i&A9A#86$$oWr(t4w<^w)mY-exx1X+|NFY<28r z80=;}JIZ=J$oewNW^*U|wwKM{VTRplhTUN{_Jge6BpcCSGac(hKzvaxsb zzGUrTt4^C3WL?|KI?IT)**Y7Jwz`K5tjNZL zbQ-~VP};-3(wL7iXkS|4slirIG$D(4guP-Z~yl{%RO7ZlgS77j*#!szW4A2Zf@M^$CMzgnAnDCo*i_uC9?tFZK5; z+;PpCqBgxTFr@?_|CzX6NJj(`Ga&d(fV9Mo21-}tU<|MG!knE_LB7fhRcEVIrCK1m zkf?2`$pur!L=R&XQe_bP{lm&yNeMC*HG90?VF87HeJK(d>3<7;Ors(5B_>%IwR>eB zk|t0-d)kF$4%1NPs|b`HBR8x0URwH4kVDZMQmI@-s+Ytz*8Tca0F>d0?HSZgttH$8 z!9!FlqOI1?rN;NAj$EMHZWw-;e@=*XVLf{p$j$tt${36j&XWG;{f<-UU-)lnqVk{h zRcc1MQuD4_Il2LP55%>HOBUoPjy?7q?{#3w=!V9WCsSl(MWCI{U_cNMTO!Tyi7>3V zFCusfNL~tLm)zlfY3c0dI9SPl=3_9Qqc;{fUpUC}9~>SHC|=l8%u8Z5STL^Fruif< zF`g#twU+RNd!tl!#fe)hTn3{@V!CA3TpCfPIYF9%UeVoz?o;v%zz2bDT=wzt0uzMe z>Mn{PFBFURccB(Sayn=&Hf)J3ZM2IuM8W#<)7Nn_nbiZ{Tb$&HDmmC|NF9i$@Ym3? zju;xYy(j-EG=V8{#dC0@%X^g@7TB ztGi4cnH195 z=*lHd@=KKY#@X$pI_Gp107uXw5gL}(q+MKqnifeeN1IHDjfOOPDKma-cn;qUTUT)* zNP`)16s-+$>)2Q>Hb!y?=??G=k*SM>x?E)iH{%2cguy@NVI{V(%pugWAfy=POVadG zO4@kKGO-6KM{&$y?ZlN6@Bu=H^Ry-n2`}SZ`|2U13t2Omd{Y<>B;d%Rlgyksk}LT& z7l_pnQ*4?g7&8j};4TCLnMeeJ;tfZXc=Yn8@T3RBQ6e}Qb#SufKxwq$AIMoY{c`*N^x2cU4|~n zRhEipaal)>>&2o6Ej4nZ^FP=X@c*F_hw*cI?WUiSb}=Q;WGmU}e{H2Fbff7zn+DB+ zkr8olXcuYkVC0DSDtGk`I=GEQIUsS^iMgve5+(DNWX&U#?f^#h?IU6GmTM>LX3~U_ z^Wh=R!L8)IWWcGPskGC^#5j5+F^0>OrKo9~W~qESt}9XQ&yX+~x5#Mac_@$)9`}f@ zhXuGETR*pzf{QJ&kDwba!3>O~#?3L!qL_Yq&pCpFlNMUds$&Ml0wH;yVsY8UGo%wJ zJw##|_xq}Vy#5d60Re!}PKT;VRaFj)f*0HCq75m`=kRHO!!^%Bl}n$wL*2}2@1*d%Qu00T3I zoK_iFY>9MNkpy-YE+RT{hASj_W+8r@$s2K0lF!2oZ{gzJapjswKQG-w{`F*T^7#*a zW`8AzBTks|uiPo+DSYiy?7A(599TAIx;*Mr+rjS^g#QhA9(D zxF%{<+?|tkwAY;&M9fDLmFB=Eur7zFweV792|vwK3W0=C>P8?vkVb4J-%#+WzMC?8 z4nMCW^WTFjgURh&2pKg^AI_a#$n^%^YI53^J}O}_i&Hxd>;c!6HDeyENCvB|T~nu4Y%{s& zpa+{3v|sApz2Xz+&z-g_CW0yF9{QIH4Ts(SxVic#oqGcYRmW7S5y?hABxbLZ!b++{U{y`l3BXk=MS$cHaysR84z1`Wgk(`j zt(@$2ShF(zI;IlwM*f)>GqicNHgmB+!5)|nYgAzmi?Yj8-Ue$qNX0<8yoNS=nJDtG zrW`Z#ZsHtOhJfUk12{{!l6{et`R8C0nCXCK0q`V#FRFRe9j>lOwZ?C*02UNjjjy5*sDC0BG zwMHXeL{%R~;5QsTFJ}qerGhqGG?M}r-N>he zKqn^kIAk=NT-4(2&c|q7n{^B=g9ge?UFlThDDg*jCZG$oIa@Lq@aVF|I+WwA)%B># z;4<(oU?-CjMKvBcT`n|P6}!G4JTc*BPj)QY&mm-d*LF-a-aS&745TUp64fjGPxQ@P zaj>$#l?J{-q+|_6lr7q3rpFVt<50^?Wf#&epDV%<)TfIse|XCVfgO2fU*sW0;G53{ zd@mNzp~0v9@hLLF>t#;>j;zXT1{0x;Q=b}?GiPw9|kH;bjr?B^6 z7eWIb1rMoU#NVP&k*d01`w*uij_UsUkK;WiSb#~-dEloZDs)5Nnw0K)d?qJk2WBho z1OrOp^2P;HxQh~6NweE&`U1YR7i2^|glcI3t8GMTb)#W-GBy$|rD}L0 zsz?HPhF6i;NW0Ovl=g)46jLC2QylgWv8@h!?c!w^ z3z2XadR3@gMWH&KLif(}vinHyPZQ$~QmkTX?r8GdFd2A-ocX9M^_a$dG(*mRb*mB< z;fHhJa|GDD`|h=~_`fD`jnm3u1h9+POT%A5uK|Pz-AP}rBxO$(P$n{SS^=vltU(xs z*`TsQGCH9pF>10ylFA}0bg_$@LWSbw%Ck)k6eSy5#Q#qPIYP@MRr%4R>e_FC_tbx- zrlY*vP8DB-LVRm$hD3B69j8WABDx}?b!QQ6qv!+|^ulsQ!o{iy#FTXM6fPTvbqQ>T zhV?=3Zhv~jN6fv1=20^N>4vuBq<#P(YC)3>{H@R%XZx`C>#E5a zWX97H=H&Avi;2QnK|T==oM;yjD|)qcwKVuEr|l5GxPlOWJ{rI%nD89{a?57c_eDi-T+swC%Omu} zXPRI9Z>K+oO)4!Co|Qo3Vqp~sZ3{Y%1zF+8_ose+?X!>dXcur%EkHZl_0$WcL%9Gb7nQ#hjvtCFr| zsASRFbrOa}My-{lT#h4FUo2KZ4MK+ZM-W>1i@nETWes%v%GI^VnL+In1p1IXwh^p$ zgsa;S?gAMKRVu?+zJ`nx(+2q*83t++@R3rwI{ohEG59jw?3?!vkT6af`%=D?oE6tW6e zvmDhSWS_tM#q&RVBa%pD9CLwTNVzI8ZONZYTm!A~Od>nA7is#JRC#j$rsCO}bvC#E zb7srCgwWe=bg}if>A$7%nT0YTBh1UXP;C7ms}thI44C5;yLys zoXFJcFK+XWK{oT$lf{~^&DtiOezLgU+l9=DwFkMhQYI`d;H)HX)UV>j;-WgCxbO#= z6JjPXBD}xS0DCKfuBjsR@YYi6P@FW9{k-SMB(Qvl-Z=*Wp=yyT7voPR6YkmPO%0E_2QSi2>;b1u_B;B=^9n zF|u=!b;LCkdpRPODRax-THROJNB#*aAgP4Tk<)}9xUXCmb$G$AY*x<NT zUmu&v)2?vKnL+(rIT#b!5)T|v3?WJZjx7U3>%-%W&Ws4$586T+JW@ISq%H8om(zEt z_4$AV<&bazMlx8&%6QW_y&R}cRzMHZTI`pEVn>JnyI8z9KoGDp9*7ul-GQdMi#yM7 z@?j6=wpYTBvSSBb_isL9Cn(P$pjh2mt_KOphBPt z?ek!caUg(LhX$65(v@_MIOicjtW+(9$c7N{aIm#0lWm&3lh{w$yrgsiV@<2a8if)z~p!~q= zn9)Ampu&LrOpk_WuFcKf7P28EoLdJ+HJ@B4PSwer9w1Y}SIvMNDR5b4ya_=( zTRyJT2x$(}+RQaA{*nJmqt0$!a1xyY@l64sncV8DY2ZOE?vLXh&N?^)RP#|;VKk)# zEG^c8=2$4Y$ufqUAGszrkZeTFBVlbGjWA^4T$?j+C!B`7x}COEsnFQILJ_}PJ@mp| zWnWI(7{oR#+I?iKqCyV>#xX!(w16%J7m85u!FdfUEE@Xw1+>>pX{F)de91GkpYOnp zdgH+nJ0@xgV-|CJRLhUq4FBd&D@)W&2mGezPzo#YZ&Bqx>1&VqJLV6%v>OL8z?_Qp z$TVN{h@yt5*U-s_Qj$!>x4e|pOr|)}Ca1#21sAA3+ex#u#ZQ@J!<5_Z87PofniqjUA+ zr;K|t;(M+(ak01z)u~vebkx}((Q@9+D);?5R;z4RJU+F$!=u)rh#im&a20#$oKmwV z(nbx$wibkv$x^(M&syu^D=#c1Q8>ba@E>7c$H?FgtJdHV0A-8_5L4X^FjfMRqYU3q zaA?$gk!@s(A7Y60Dz$|**;MXumw`cTJchsl?F#fca5KpN|?f8aZRpF z;tZ4FYz<&V=MUumqO9e1^RiH|GlT7o90{HFSjfCj!H&k|sGW!tS4X=PbB&<=keU;G z4aB?vDGQMAL!Bc1f`{v2E0GOjH=R_Qw+bJ#ONKHTQ}I@;eyRe_ds{zj??lp9FIeJD z9$bkzc?0=fA@VZ$oIczOYp^<)v|cP{R_rj-Fos(2rs|hJ52>?ym;HS8k$at`isZ%O z5*&EsFa_Jd!3;`WBq4-M3JwDIp5kh2xD?KJI08u2D83C~s=(EFaZ8l_7zx2~gB_wP z<@$L9%Z^6dWMkrLORfg+km-@0R819AM0OA8r!hmG+IU1|kt~M#G>alXa}{7yotrdvFS_R`l#0PWsTXlf~_HZvz?? z?gg0C4)QnEE*cUuYGG0KVSzq#8h=>2+31wsZw#1`9~_XLI->#XL-2w#^%w-V#9`7b z?#P3Ro!=IH4M5R@-09;q19liyZo~mp4@h`AU{gC#XV8oRKM=%+V`$th4*IV%a(`F@ zwO+@k98pwhD`ZhEu$dIKaNx;jf@8Ky(2k%Ek}@O}^4j^t;55?!3~)kT00nNmcHNqS zy5(GG6-K(s_>6e+f%MU0(zohByjB=VN=ML?H`GYGYaqP84v`)9=h0zZk7f7d302%D zg>C1%o@w8h$QB6;UQae&&H?`*&0qxy`j?8wbc>TlYnA}ZtBd<}x`iC{F7nt>e?DPZ zJEH`3oSCt)p~IXo_H-{D_JF}rAL4(&a#93&CA>ty~09rHTZmCQaq4RIy1xN|% z2{V$D7mbOVU9JqVEJD<%uUs?zw(IG{;7$y|3E8)zqtXW{&+U>#FB>M-cpr=eE51?~ zX!b&$iz3v2j*F&~O8`2&u;Y8#3S5?B?eg|7+C^JP)Iq{wmmEf&^5T!tVF?ks4o_ZN z1|OQw*Ho&FEwP-G&oGmQIDpg5EeJ*8Dm&;NW+SFtRCH(C{ZSO-hykvH%%s5#LC}oS zONJ@bwkao)Z}WJ>)g0O>fhT_qWo+?KJA#hnF>Z^d%$L%FTGw>@2(Td0ygj|S(N`CbJv-d8*ac0?h*phm!S*z7*M_TPmyFH+^)7ZuI47oci8D2~l z1A;T$CP)eZccrDNMiXd|O#)~v8X$*D(Y9neeoZPBdsK>}$Vxd%>~cA>B*&5>%d(w{ zUnR@7EIXExvK85mRf^?!V@Xcz#HD=SdED3k{|%7C*_Vi_8UFqM=bn4-x#ymH&bjBF zJKcKbnd0n@j;EFK!IfhEqrP0OsCHlu!VPBCx&%@=3EV|2gEq)@SeqF^>Aez~R2+Ym zV%a*KAxc>A2#rgi&DzNeop|-T|Miz0djtROzuJD~Ew-H&5(@GjmjAHymB(<)*}LPn zRr>to=wuIb33m_m^ggtuuQ|5#cEY~14pv=#2KmloOCKWS2kIa_%D%Yp(29Qe*wP}4 z`Xzg5V#7|EoXE<&cx>rYEHhPCU7qv6N{o*!{ce_cvaWYr`G;SEtMPu%4S)Ln zTmJL|TmJO>w*6^t&z=r$e)QYF><#;`zVdu_ClEb1J-?L+yHHTkI@fR*RsN@`8uG8W z80aV8`i3{~;KF?Cg~jDn+ba^eL^n_ljy>h!7Gr6+roD7<9am3XKZ}&3tyL(@V-$j? zdwhb}BwDA3YsGLle$eZ+?BXCxxrTP(njDSj$u7e?17&ljbsnB}T+PD(4f-4R)^8Xr zA05@sj$yD{^ROW8;9P)}^80(@tw4>J2+8hPgv)LZs=YNx+KpOuTg@t5LNwS`z#^ag z8dY!8DhRp&AL^JVQDkr~>fsGV$bqUGBTR0l_;f5U0IZ5>L12z_q0#dEg_W}xmzT;b zjglcu>r%|PnhEu4Cr|Y1QmE?rYo~i>HK|6|#rP?|`sl<*b!Y~AdeNNS1Ix>F=5QTG zJyDQ2U&*5EJ~xRf)0Q8$9;PjwGF8?OBF%H}mG?1kv_A9wKkz*%dkY~ZPZQN~@`P>L z+F8kccIO7XT!up5Lupyxg3^L%h5P1kWQ(lKa0M87t|Q>qA!x*v<_N2)t`p85)s0Ve z&_uzIJsqxUa#t^OwW&LBg6$3wf}wjH{H6*rqYQdHIom_%81H}vbUbxGr45OfaWlh! zBu8e1DaH#b*jcDMxJd!sU=*}S0qSP_lacN;mJZ60RYSfw1lry_|oI+U}rcCDs0im6(zg{ornrMB2`T)|EQ3_gi= zwWUR=2!I}=;CY;Z>g$n1rnzCBV`~EqRYdjh?7Ds6y`Q+$4UIPKPsY85(kzr1t_6J} z8q$R{5iLHgX}ED(Dsq6x9;A2WeD~A~h#P9HMZ{}@am~@-Cu|Vb)M;H(yB3taEoa#F zq2GJVy_y=^PbQlKMcW-?rNy!C`ZlM%OJLQ~Pd|DMaoot^zCbCXFUUZ(-~axkV1ze) zJSnEalB0!SE@ZsKQ5}Sx+c{Hgb7Jcd*>1V=BQ43!c!X#!9q0V5soYce{tw)i`l$!BXyfc;eRO)f?F!>aI|L*R9g^G`<6fQpT{$05(vv{xf#OwX3 zB|4bN&~*0vj$JI1xSXjd?=TY^jaZ|7t|mQAcu}ChHg9hoM-2wWdyUQN1s*gZ&B@x{IazjG&kG2CA-GK;xw-rBEAmoQnKbh<7g5z8<+G)4i?8KJmmoS zU}e8@Kp&NyHnnf-3+BC<^OE`Nyl6Sd#qS(Aj(K>>0jh&vc~e^;?{OWApba#^Ykw%W@)VL& ziin4lMT*8=ko|D6Q7nvhQ6|2R1?~q4Wm3?Z8U-PYeJpm2 zMKOV|{HuA%zC#SbD~L+Q@oAs6`O=+aiPMr0(ffM|47;jdKp$M5j0I*KhX)I&oIdCw zR2>^0qUzFrD3p(F8zp(oi7-O@D5bD^pdm#WE6kb`(X_Q;kq3fSUR!}QFMx>R9;*nw z4FHBcBxJB$fOAv0pq07#Zev$?PB~MaV>4{n6lF4MBZ%&N+(h|zu{n!lJGA5BRPNoH zJCzKF&Aq_lS+Oh5v9U9ew~M`U!+^2MP(~q6N>fASyinlI826xY?+Mqw&pmxA_L87u z94;L&!5~#guA(R=#Zd~fe*;&_!3PTaOtY>8#%9^Q5z;!OiKzLKRvS*;wFPm+i%dmn zQVu2?t5iLm5R9n!2TmPwqd`cT_fi3nqo(%Up>_z9!a2$GWmn~pl~;Rg*=!^29j~;H zrAZ=#%KA@0(7IN)`j(?jB5N3lxbkHLbv%?(au|x7FjPtNYyq5Rc^QKKzTPzZ4$H-*wxcWyfQXr` zCP;9`(L~I>gR9V?SD`M~U5iyuC$nl2^fpQ9ro!ZCc2vn!Va_8@w&|63Ru{i@wYPA7 zer4s{*>el?y!BClqhTTGQ-M9$=00mx!lqwt<0i0cJ=(=y=tHLwOCSh+sZTzB(}%w~ z)McM>lpjtRFMUeWz_Bf1Y41@5Eg=wVi`&JKJ_~w8R{sZ|{U*g>_z}Y8B*2B_TL#&U5rWA&-@|@x1UNN#+N!|)UFt-`isIGlkW||z>3Rc!`qw1jVxU9{`fy0d zy1I9uQEky@;#7$Z5w?MReC6Gfn3^KsE4uIg1Fw$nzk2g$z7sS1uVN04Z~oNpm6`pq zLuWS97b5}0HAvu2e5~_iV|sttSNm?m87cL6&w<+)pR+xO$>ZgY9TUGcVzn!+iCpa3 zKv5a@t|18x^rarIC>~kah=vqwAO=Rv*K&6GQ%;FfrRc;x( z^wNNd^1M=sqegT#xlPNW*l%1OoWIk;{KW$8*BA0WpUo-;S~gM4xC-$kd) zW4HBwl8H08oWZ|770pjP+S7dG0pzjU8ha7g>y{1fF#jn79=olXvdp~1&PnU4Ub+M9 zi^FaGjZr_Vnk1$3y4`&me%xm#7in~1Khu2D({9#Pq}xsmM2X^S5@d zpx9Fri$(cqg|2o7ht^f&+P*Hn@OMwDOC8*BnTvz_**^yN)-N&S_LJZ3Pe1=X{xtW; z{pn-hYflF^|2~Sq!Tl|d&J7lw-M@PLbL{M%L^-n=*3tvtLf z(X_#N8okTGVsKkDI!E2N41?KSv+fi(rLGEVDr!369| z`q%yhrsA)QNBVF7S27jP96A-T?+XuMzhnQ_u_t`d>rc2ZdU-@YbU&sp6{c^sn?l^D zTX*)DokH&+!1?G;BhRRo5qsseguov$_#M0J{hb^6Mp(Ydl~1G}4j=4|u$gNCYCkBw;L z$QNon{56DC2CGF^wc1GdLj&M_ARFV>#o=+b8Y4g1vHc)U>p4}UlOnh90tZvrNPJDC4Xl~y7Na`Ww7JT%ddJv<&Ny5CMht%y|n~AySSqYH^hI58R zEmwlW^PjPHf)=FAf99YeM1e8o>5m*N_^s!{Qx1^%tmm>{IbfCal{d8oQpfRlu5N(x zV(IuK&k-oy^U{PrwQ;^_4j^&k_}E2Z2Z5F$NKPheJHIf)c2l#z@PMXAFsP#<^I>^_ z(n)RFE$^cX&-D2OeereUh2bQP>pdI7-ww;PjBHGALL}p zv}Q=N@vU(uocwJJe@T>$NJRSexX;Xe0L}&Cr(<>=D^D*BtU=4Y>KMGrrhS3?#^H<;OPnQje8uO?uStH$>yT@ z2FHhGgX4Y8;HjFE?QVQSbD5|vWLp~(YH8fpct>L`VN>H3r|Uu{6(~DOy58%4S3;Z` z_?$Suulq*;?oFtIvk5N~M)p-+`Ezj6zKI71{@@S!)8G1GfBNx1?@vGWqyF^nANQx} zpRlKcn?D0I*lX!N3I}i8W%RfTbwNVY+~9^73`^-v(AD2S=(RP$LhmO zG7@b+_I-nf*!%QWaNkzZi1z_5!gl-Bzvy1V^}YVa5Ov_z)xr9$U0j~Yo14R~LcG<& z487NIkibpFnv)RK6(H_<#Pb)`V*zL_ge{Ub`oV$2jzb)NY~av+q7TX1#w8}&`n0~w zvl)c2F6Wy^6V4~-iHl(Ghw~GY&L=b+rBGB84lhjFCwlK8vqm?G-m9BLANwiDkk7~_ z(eM2$B11l0l_7TJH(0rIeRuz~{7+|A{DN(vfBz=ilzs5@MKyajarXt9$`{54&5Hvh zCaLBpBF##26}vJoURpiP6+U86srIP1W1?5AtSLHi*cPole|LU~tD}fq{Q#d#H8&2X z^cCMg%X1mE;_Hyd2&rZ&S&XLY=vD65G!e`Z@COaV!xVMjWHL)gySCt0?lu+oF)Zmm%~^5jsk<&iqXt}=AgMdeJ=l*gN6n6 zv*lg)bRDh&X}ovs+q|U?l6U+_=|3cjujC2RH1bn;$}6ohR^?4?fxLHCCVQC|OSvz3 zjzH0FHiMR_4cf+ni3~|?MROEeY$wd~*O0tONeEuo2V4Q~Nr^OZLu}v4*2;|`^VTwl zEw4e)JBmKil52C=>{d+JJtn9{pAxz3UtGaaM7SE5=xFvTPfhO+uOEyK(hNyfj?tNt zSwSAO9Ihy+FLScBpqZW2v(EA7pCwz8IUF-Cr44fzJ)HSTb2~ibjBHHP@a3n?ap=Pw z`nF;YY?PvOuU(9i6l1>BLVrBi#aZ-0`xde|;p{nf?C;%=0}+c-rlSbL&Y=hK67iW<#9)=qRo+C@#>xhvHAF8}bYVD&pwhv#ILd~HP?L&>OXrB} zAtJ!{S@G+dw{8y)|&D#57;oi`@$VuB+W?WPq2ts{s7^8my7u4D{pOZ)<2kjpOY~w+G<2 zR`Jr>d@yX#Fq2Xpf+ba(xef8b9){PX_wGr!8q?p{ z=&8*Ww6H*`=pU;7o@vK(4&G^IIMMY|=lXR!IzW=iO98W!a+T3S6YZ}sWcg{N%Qq$UYKyCsc|gQ^Q7z;zkMFJAAj7hO}QpXdPsI9ApRD9PT02Ph+Th(5nNV zgehgR6n-#R=7nB@szhKQ<)!Rg4MtgVXO2BDdDc(}Pr=a}u?pq*5-(HoX%Jl?! zqWgZ6rT^nUg=G9EJd$zm*X`-x=0E%AA|p>vl#%<-b@rbtJyLMs{oGeQv;*&qn^=31(y`B;4}*DG|;9<>W^^*O~m(^`G*>}U@^HY8bee=BlSlVeUqQ*^^62}RUy zi=TprZstU-kFH9L(nD8I4foHLUo-EVClghd%iC(BY2-Lq%M8e&iNywYN2PHw*u{sp)&oPa^aJm()u;Q!6B-AHq z@P18#39C|pSKIQM{D{tHDgq?NkkWis?OO5>0!z%BlB7JBWZ7BM#oSJle`jCe_1?ZV zKz>Mrh(;o-IEjh9Z?+clKT3c{OO$l+R4~8)*0#68E*p|7aRQ?gOIBfO{rA-0Atf}O zqGvm2F&j|K5t}U!=oKv(GXEJpVzn)ttF*bkK#nw&%3tS2Bddp}9Kfp%p99+PCNEGs zN$Ota#mb3O{LX>Pc~tz)f%7So{mKEos~Je>ZuT}WSS!Xjl5s|cr@Ul!YF6IV7Ra2g zheTy3VbPPltl0!0ms=DSCrPrv7!sQXovf4)N#LW$D|JP@p3d8KSTBP#-@Lj{O)4S1 ztF(AskGiLpCN8&ZJ&nsDgP5pyo?4>Ykgnc-Ck|7s>b1K{^9ifcyv~1$3*IiCx!777 zAP&4`?ovcdj1mRNqW$Q%1`FG zpuwbFV~k*>VHJ07#27g{y2FgGl~y&*TtMR9Eg8vVCP_NKp#(0h4?-eoc!Cocijgn` zl^olO7lUIDaF(Y8)B)3PVGvNOzR6eDSjpzpJq5Ub@8$bbqF%p@Hdr&Fb2F&8z9^#9 z=XF97X8>{f=lEpc>fK?loY1SEcgEn+CYi-Kwp+#&NyV-2>=bN}P1Hyq%xK zZM}Hx%inPG3A(M{_a*-HonPTkfB%jC^i6N_rGWTMM@@zF(M z)_7dY&Z`AF!QWbA{fh{y`cXf4`qZ-@ly9)g=xTJApSuk=dbe)-yAP{>aih1n>90;d z`=OX`xi%D!p?a>}H3CqdjXp*7P3{eFa@1j!|4$XhHqt7=0iNQnxGlA*=RvRJ`$Y z%;y33h-=+Otg3rcQd8g#Gd0whvmaEbxKV?)8@>hqXsUQQMO5?h0RpvnEgd)5p!SfA5-Jx;Q#b#QDrb8gHxTcXhzNN8=*@zpuvp{huT*^6l@D`TGH# zzfsnV_QoB#FSoae?GWD92>;ZcczxkZ{mu^_VUtN?91#Rc`_}J6M1BnX4A(fyhGwge z;~TqSGfD#asqtAE4eU>w=FyX?5(mIb$tte1JORvuEYB>Soxgm3wRd)Le)aP5Vh=gj zm**E&FD~~ME?zi$?#15ObLSVmbe4x1b>fz~edIF6&CPNdOmBmMt_GYo(>sv1t8Pzd zp7#=;RWdI+l}${gW%ZS*SUxOiZuhVQfor>W<>s>1_-MF~R zFwuj9KU3$06&_!UW;6Bm%A|9KZju-@S4cMhTO28X#7Z{AbsLMQqzvsxoN%>w#tK9M5Ay@ z;g^e|srazJhs)R{M!5K(!n3!1u(dx#6MLi00zhr^WVNb^ku(^;s3!VP6RX2Hi`~2= z*SRB~UP~_%<1Op-z2TZk?p{fRP9K-PV6l$CFsE}3`d$D7#Z9@xPdG9 zcCO;iE?91vK~cRLhp5MB;0Rdu54G0%O%CRfK|wslFbLPDL=!Z9nv1oqjA zpP_C+;gcKPm#afDQL$cLzuUTVV~C#8j=nZ%t-LKUIM};091o(&%JxSd znr(gJ#(+RVVr4Dd!j5)3B|v>#QkgZi%4xH$bG+?xzjbE_`GW5<7Ga1;&6YE!-^Gq` z;9ZLw$~h`~*f{>xvg&LrZLE2kIOf5l&>~0IVlsxtEwFNv;n)v~a#?Bhx7pvdT^XpI zT@Daqf8zM09ADcsNa_0bh0R?H6lm*13X9zaw@KTswI#ncn0hz8bmVXIVM$L^g7R#OE6q4I15#y)8E_c-)&zRyv%iSa0RcginqXC zfW2xkUe(Yk0M~y<^E&vL#znHu=-UBB#K%!tyLi!RZI!vBqjHI8pf&5^-{#b%Qdn#s zjQ3kN`k0sf*4n+=`tPriFi-x@9bGaNmHuB4>P%qQW?T0p@T^L1>-qHk97pED#j#Y( zdjw5T2FpcSyy7iccQhAlNglhgmkk01A#~bd*HchU^9HPEb5a4YmYs7bqO5l1O6eA) zn>9Jb&r*uKrf?MQ8i_H`^;qU$+W$1=bv{$Fa^)n++kX;K84UOEO17DKkHQ@yez3i} zf49ZadPXJ~8Eibltwe(j_*~bac#Y{>y)$TG*Y}!;L_r3Dy7ROaHnh3S8t!Zicvd(% zokVty=y{{7n$jrYtDNF@!_Dj3eNDcZ7=5R-x(|s z?kb*(kB@i`so_Gi0UfT6SX_)T3KUGxLE8koErXbprpA7|UT$?%;X;6F&af2;Hnl>Q z#6`T@u;NrnQh&AF6^K|Q1U|X++89E`*n@IwDw}ixG3~hQk4gg49VC=8EyBf3O(KpV zE0jx|+ObnbdrjfOQi6NBZeJPdDsgM3vER~@_H>l_WY3d{P7^qg9~6CWyoIY4F&HA8 zd*1S>t`n4h3LX`AecP(%nkpE$499d$ir}K?aDt_`!=sL zA0yHiN)IMGO+t>T(M)c;gqoLgCP@KaMhOv{0MEv*3d{l-i0YvgUBeJdD>}01FvcbWyNjq)ihsFJyxL6SQmCWCs71w%+^ z(lUc}65fxTPX0)AL11fKjWblf5Zm~gF_kpZb+sJ7RxEy&jP*GiB3IO``(YL(d>>sA zq+f;8E1yfQ&H-vUHSw276cbNwMV?BHz)SA-7-J-%Ubk??y)}tWJJm~=MG_rwDHuBS zdb%XSOovZHB~on97lv;FWGsg6^UJvqhH+U^O^qXikS|{lPnR6|gS(5XBH02A;(otS zJY}a`nZ~rN&WVO~G0yD=TjS%zLTz;#YG^0$Ccu=6Sp7Mf#F1jrUu1y>jSM*)2;W{e2N6x!Cn^=q4cf|#7w}T1V>AlHkH=b z(5Cf~gd!0?2vsXpgicezMi1gH84ChNWGu>5&P+I}sYVn)ut&kQ zC>`1=QS$oTAQ0s_8I`ANnT9jK|3D7WdeocW;WWU02#)(~Ko5uRDWQ~w=E<^6WX#*; zwH%#3Xh4mLS*0f20ndVFW(cjrYZmAgD)qkH=)-$R2F*(-if7?(D~Mo1K+Zh1o^PGf zL~2FpYIW{!3Y!NF!T?RdD6^v#9Bg{d7&9W7WJuTz1W{q6WCu?J@#Rsssm6LoeKC@v zs8lM-sWsRtC{SU8t-9G`lQfQ>Y2BQ zYhJQUrR(=uxW8nvUmxx5VT;DG1l=pNE-i(rVbdWq#<}0+@3Gvj;=bvecwr8?qM2Co zp(0NBhPkK43Q)60IcgCTee4&tK2C#7HaOdxQ!9ggCI$=5!hX)$y|Nkiv2St>Ugx!9 zfTX%LF05;;aP7&|ha>{Rd&^}Zt}%sFKxg7NVmo5%L*v)1n#6)$lLl`M`nTD;wTOR> z@e>tLi^1v6? zp4em+Ev+8T+8_rSEzl<-YM3lwXl`KB+Q%k^Y_-H8bP`{W@9jns9nFs7Q517> z78}snSjMrRC7%tq4{%z<_McUe*Aao%NQb{Db)#LuyoIe#=Kt6gdK?ZmV3PGn4v;=XlJ^CKF%C@*(BgRkAzu^yA*{Oqe&2}$wi7Y za#bGtG!hvQiwkLEt@TsAx_Dq88@n$isMgjZzPVLM&@~9B(yN(vP2`is9b``KTxr4# zKk_;p8I^lTSRm5+=r!HPYw$niQo$f`=eZ*Fz8I`88yhje>g=oMF;u=u6R8MNq}ED6 zlC#^9hvz|t^2%&%Pz-S=|DsV9(++OQYAfF?i&OTzfz+U96$W3ZQa$=D5D?L+ie^0h(!uW+NBo)NQ#VgQ=Npoq(4|3;^^ zdIKvj!dSMkJBDz8aSQUQzeSi4gJIBeF4{m8`n%@#RS0Rb0O-!${`S@yrrXwFa%d2G z%;+1AARbv43DnS9q8o?GNsBwy*S@%D4O6>T1!7# z47DpzPVRnaX)3%!i@|B}85*eA7HJ!M;d4M#3_VbkZyZtaK2B<>M!$B17fE-fPJvuN z2kl^T;4b8y3TzmjO!+4}?;ebAP?p{}xYoqgAo~cR!$)E4?d{=yZyWIw{p*8-uQ^7$ zd%XIvd|PxgDbp|)E}^}XxQiUvhvB|UrWe4M4z5jPVe8&(3xHa1xDf`7Ee~XyZLK&h zozV+^n!p2Vt#;1Axn_(b8VT)YnT8C%TSiMgl+THd?q`iNvWmx-B0_q;F@hGub#L&p zXkJ@;2*$^r(Rg>TKHOx?okg&rz&gGmGE)mmTn;uW4J!>RpvfvMMvN_`br~42jv_@F zl4A1Ai?sQCntE8e@?omiv4c)ZAqAqKS>H;+dLe>( zqdg@0LxeH>&9zHu8sQx)EcmMdsE?f8h>gcUz%v5T8|^NVr#O=zwU3ko&vX3x)e+Ql z^AsSMG13894kyZ;N_R5}lq1T9D2y+oaO08~<&@N&6{!#?nY6Ml=FpK+muyjA=PUSl z>8nACoebP5m!vOPuG{IEua8e}jjr7U)_^jlcj#)l*n)97k7BJQo`N`WsnrjtdO}=% zCueAKQe|Kxqw;g;(`%ckG9qN>x$qS0NxXX%L5u!W53g7X;*RP_+VM#_PE1j*Ah(=+ z69~pLKVR8>0w)09Qwvodl6+71y^~<|G=d#Md{Pqqy`vs4j79_dhVFk1l<%wu<4%{s z{lV^E0^A20;ObnWR`4%({~ijyx1pfhVFvv7yT9Jt8fth3_ivZpcnp9~)?-Z;3x!`g zacrs00uB8n-x}omk1d@iA*mbh*VApUPN+XZdG5&V6hXY-|&^p3_F3%b$NA3|tLKDZ%Xr06L z2K{SWQ2Nh94MO%N#&mzqPkHI;=LdeyEzQ5U*t@iRaba;~B|qt<)7b$pEiXo>mCG-j zy?Fl2;)LgTBgl~M5v8H)f)Y)4k1H%^gV)j zkuMQbbkLJe`j(uR{@xz$?P1+dAk>CMFlhP`>F7#K%utsD!Rfm*#+l;*F6cnm9o)!0 zxF*N4i5kg~cG{UGT}p8t?xgSxPhMQ><8RdW^ z{`|#HNQ$rCnZ=cb<#U%-&t1F#p}fb1Z{D&DeV8;03XCvZI6g%4}8FT=XRF(Cs>e4)Tq0H;k`w=9eVT4DXlmx2NsM;31qy$k2}bAcO>JPx?hVDS1Da1s-&-0X zO;Oxx-x+Sud2wUFGXm37_jQET`cttGjy%V#l2NJ@A2EO`=Wv%>I>p-+iu#psJuy+{ z@kFs_r=7#VM=Jo2Qu3B}EnAegY4X%lDyHXL5f$?1dO z#zliW=v=tu2tLA^=@odjy7jfLev5Wpz0>a2@JUSZNc=*ED3#;>4msc3ii5Za-O-&c zhTh)63IA4q@A?4`!P)>4-se4^8;;^8Cu>szs@5Cr=zJej8i`|3qV)s{Xb%2*<5z`? zCr!u=<1uAR{ij;dqH|dKgvA->2RYREmY7r{46xWQ%VyQ8Q+s-kDEVIZ>u#G0_pAAgwls3ye1(CwziI&VX_~h9ZC~ z8fIFu3L+#)R(D1>>8FVQF&>McUhRPj#SndB9>pF%GT0k z8lpETgzZDKi-%($ej3Pgl+IzXS6 zA(yDC`7vQV5RfewYykh9(`Q?f(gBVlBorUOOhRLWps01;NMtucYiwzP!`RrCt5a-c zD$<1IaAbwt2$oAXF8D6gNAAL23jSX};Z*=qzM*>LPX(~O4h4i$fR^l3fbv~{Lpf1` z6tg}S@D38n*ifTyV!D+0^=*JoMt&}3gQAuQ7Keg6xNzeq2auKOGcC7mr&)Q;cVUgt z1dhFp7fy2MQ+Dw1JRO?`fl4jVq>uAVu6^WtcM(~%=GrgE>o35LIE2WHA*LjzGif29 z*f@>kd|9Tg=0g+pCTrCK&V^{Jgu&z1VXWTfPGY3A<)h!7E_O?73T2;sXM~Jm$!oN! zn9jjKMGz(qQd}i+;zkH-cIzoLSXp_n$EQn$?d6$zrcHi}Zf&xT2$NzE8Zp`67SWfC# z5x>gZ6z=lf#}q$|k!9haU&f1%TlC9B4i2Oc>!-nk zQf)yvDt6@&$QD?UT$<;ARP?d@G=X>8E0Sg<>6_a3;IViamqm#3HHHnXBX-}>x=>N= zHu3s{{Y>8v9aJ&3JA$GiDr8(`G65!sig|UH-Py%}okV)yhG0$Z2s1H$TNuEPAZsIQ zPSa^~trJ@RXK#}bEV@2`X)G#~sxxV(wP+4tG}7!$ZZqU|Mc8zy|LlsEnG~(3pEvhM za3&?ex~bA63o#U?bL5Qxtow_7+rS?}`{Mp+qO(=a+sZB!&$nrW4pmfqrskk~mHa== z)u_jjCBjCPE1E05#f+pi`!^us>pcQA&L*Re86R`VYPbdbC)C(EFyH(l80@_duPZMF-J~qiuku&KJj(im*sC zm1T5pNk~>8Tke->h-oPNrv;-YUmJX2D;{u{kBxXQE7-6o9@qt$+S-zUz)8S= z!_fFVd|=s7bkp%DM>WsqBh8KpVOU{k%KDo_@e1}yU7rD4YTOD7$XG`*B^=xsi1Ya! zl_yA@q*BQA{443!6&k;Y*PL)4;pDJ`an_ zTt5g@A9DGG|1XWJi?ve!wvsuzk_FA5^942q!W@92SdbJQr`D7k9R*A!JWi%tvO^};GG4AO2A3?m%6_RxHso;?93T{(5&8z2nG2{29L~s%%9$H z!Jl6J7JvHE6?;N1Zxlf;Z|o8B3d(c~D~|v}yvUz_;%JwtS$N23tN{<}qpdAwiNs-E zm?mN%UED+1{$PVAp%ey294EMarl;OA1K&8fejQ)n;T|xC+97Ui@>g$TbZ3X8RwT$O zb-m9??@$-{f`cB?4D;&{*YsLNX;6YPhsS6Dus(TkL!3zKrNvLqBa!g@!b^+2Gv}6P zka$5i3};%)gX`$f-rZGLs{FM(;*-~uMT0Qt3Fl`I5YZu9r!(Row!E z#uy30nO_MRu!o2t@LarUe^e^?dR~)smz&6t12MwUoz%Ipqa-V0ArX{;XbGg(Ru=c#us~DLi4jGbM!%ZK7^QiCIHUOT8;9N2Nd0%AWy0 zL$c_S91tcSV5o$*Bhkc;fF=>vO`FCtg9DJdC*x_lV!-znoJF-aWuCFSf7Dw8*q5--P394%g2)ENb54%z?hT$|&< zC>|wFYfopaoLjR#h*!VAg(RSG?T;Y+_K^MrS<7&I?cka$IoJY+qX?})P|{!z7b>H* z>@fpCpl})psA69b6}!v!ZkfRq7bcSF8-)fhlq$m zeH0(TUQW*tv5mBd(gx)gg1EFTdzXzYn@~Bm6HoHv^ovQG@JsLQfBqh$55%mEHZXFw*s9pGvhPp zd=!V7Pi?Mx;TdHM)hTo>9XHi}P?FnFi9Xb>uuQ{=JaP&DQl!kSm{MU3MPVOjEeCta z#cbpv?$~A}wK>HyxY^q5Fp`zt+xCoWOTcw=R2b>eE3-!+?bgLG!&{KuM z)o%OkDZWBtBO35kc*q%k&l$|ym9j9*1afg{H?&!rD~4JgPMm0mbW%H}T0g5wt3eg% zPu8lvt`2*Y3(3&M2_Ff5c&+0r>;|ocwDJlYH1l%9UbhV)`4BtT$-p5gdN|uD>C<)j z5L@SNYmKduY%x9(7$)wvr>z@H#^h77In3CS>JpQ+-_{sPwH!^%rkv%lHu$W@TJtZF zWr?+IlEp>(yhTq#UB7{&^p({T$t3UcW#vJQFK`|*$?e4(OOVz%kzZaD zDR$A+jZBe1)eJJ=iiyYmI&Fq*xJ4ad6+`6mp{?u0U(`hYg)#E{^Ur6+uT1fh?Oxb` z-08iwe^bbK zgg$Bf=g?YeAe1=RKevQRi6ZM6Y{dpqnjH%+PYHwhH4%XQJFQ0szxGnX0HvezU0vJ} z_DTt&jt6s6wz_SAe07E;@nOEd`vH7@d-gf$ks*1y`&ad~O}{JBpqW|z6C0_ZTQ%F}B+ z;`a#7^qn7FM=mWK>lyp8kzTM1&F#CJaC4nE8f!Wil^O(XcP!&HSa&m_J$05MF9B?kjcreoy}V~eqn)1VSUHj_57{0L^U2bJoa&)4KlIlEp5q~ za+1p_v>do_LSQe=ZTM4g?L^TJ(RTvaK96xkqZ@-Se&R}@B-l`NOo{e{YSAenlV(wW z5pHthUh`I#C1x7#Sz>V~K4@3mio>r|6XaHq+BOGOHrEqakbeO+u7tTAv=IFU&rV(6 z&^@^2aA8eLuen@7klUFBw-BeFtNS+IXH;iOkV zaju(s)%mE3ZYn1pWP60g_S2PW2wO7L` z43g_#Xg-ehtXR&<$hI!HvW_pS>~G6b+#c_(BMbWe-gWIce#)<4R@u;&jk{WFnC5Pj zNOy1W5vUy~Vy3Dh(Gh+<_K1?0J5o!#D}GHX0_9hC6&LS)zDeWdc8sZ9FeMSdMGY9k z@(sA1KCL*ksmKiU30_HHh|gBGUQ~y&S|bYPty~b1`1u~<8R>!!yyoc6h%L(h#N3K= zDPID>(Rrf0Jk+T^QalV({pW%Y>VeFZ4jN$;{D}y6g@7D=iCOewFOAzoUz2OgTArv^ zf)yqGB7HG09W|96#L1|IyyUjWgmQt+bV8+x!^&iL8E8VDYJy17>)5c^m8@`ucmYK$ z;C*+ee}*6sHraL4gn8VqRYwM8G&)NUTXfE5iT47^bO=Jn%Bd=g;*sWRkVrsLbTzE5 zv7?#52u(t}b1vlyQ(avOm`c!ItR{)nJK2KGz=MU_xKL-h?AJ~!@`z0)oPR1N6+il5 zRkB@%ItUd=oH+V3fV@|wrz(IZu0io@h7bAlhsOV?vcHz2`M~4L?(;8@;9&w+h`gRcm1f=q!Y>&Szziff|l>)yV?~qCYB2K1%;rK+V9Gm(GTtB4-+WW*dX` z5n@ykZzhVDc5%V+D$BYxLH^cCEyyEf`S2FuSycMu;36uSgy13-MV>oGzCbGAxWoZMCFwC@b{wW_+8n+dXk-N1+31Zndjc>%*sKC<9w5;h z=n@p)m?Y{pjx=7AYomNTKKLyDr2g&UPH&S=E<`6|>=8$Xb}JKZ4Vi_xzqNa#e{F!a z>$g*0l5QfTXi5OKAn#CGGh@O3+CSLZ?`gi1yL0@gtK|5`=njvIUB_{55G?iQHv0$j z>Er$_^A3hN=q^FL2(vNH%c?gJ#|=07NJ#X;-TlGSTi8_GYN05cy(T(Z2V(}Ye&+js z;Co)u;P$idZb$iNJKRSI!p1nmn--MxP=gEtwG%gyEvWXH?fwoE)?2x7;{UK1ZqUEU zJsIjub!B%i=BtdfD#B|cCKpTAu2>qW(#Nv%fM!hzKEBCf5^B7bkkLK>Ql~l-0)-Mg zuF+{(Ajp5#`ZUE*7GHaUKa@lJlf@_+y&O4RbUI+1{5`+f#Luokvv<)ONh~m@WP&p8XytNFc>c*g}e9UhB18lTbf=o45}Zv=C{OYa~g7usm;r{+q~WGA5cd_a36U5&`|^1Y`)sR@(A5?`fGBoRfz%qI5eO}IW}D6L@2EOzen zs95mh5E=I9ahBJz6=_cxf!%>rh<(Y>EAoF_r!wY=uV-qVs@W2jmCU}>7tR)=tZ??F zp)l_d2y1^{I{Q>#yj(%&nmD!Ni*OsR=rZ6b&K>$)uwH3Qa9hT#Ztp@qfCaC}LyT|| z%T@Il?gMvZyc~@U9&VTy?KyD+$Q$SoqwOAIm7qk9^r}7NJ>Q=d*k*Zj0xCH{20V({1s6f6Sj|zuTV{|F}P`{ulOiaPu#J zr?@SiJ;ZG>MovxW@q^vr05KTq#JK#H$4(61m8XYU!vKB(Ix$T2J}Sq>iZRP2G7GqM zK`fMLE$MI56WohY;jp+~d~y0Te(U-y4)f-`cAo~eGZ-w!Ou)h0(Ni`mRrB0Uz$LS4 ziv%2s!flRF^oz?OGHE6j?veVL?!J=pYY>r96qpcj0{~%E?l{Q`KlYu_Lm#~#)S}a! zMiZh{m&;?{$z$IMWtxkuOo#WE58^wCThOrc;tvVxLf}=!h78UGCKZWGdewQdgcC&K zD`{77umg!i&-#$OpJ|n{J%cPi1_wbjb7Ny`+%cca28OmicF`0EvNA_ZHs0BndIRrFj$f5n0W?%kf{me0ee zmvQFMuTI8Ej-G7N*E)L)BCN;{?(i`TF<#?wz|3Q(j~r-*>mUu7u^1WSm-h4|7ew?| z6wZrqeyi5^aHaMwy%G^293b2Kb(`n}<6j1PwhLcL)u>a*9CkT7Gd9(_cY5aj6v|Gu z`2TXto*1eJ#3s??v0LWh{YGCzZW))@8ieskqG$5>)yy}Of2wEW*W{cj9Vl7t<;VK^ zLv&nLHoUDCdhC*6AnJn$Z9QhaGRst8vIl3q*UKIA&StYOx@6v02NaaRdbiBU$z^ia z%w@Pt4k?hjXFk#0K!H<}YiM@SY<53|;$J_pxVmWoCvKWQ`QvcEd?Vd7-~D&|>Ga?8 zr@4RNPv`%kJssR!`HSMFX&>UI30o6z&HVbU2hH$fF)GL&w#(2wJ&042k=;V;nXE)% zg7J@hun(OT$j^g@{6L0DZZ70$oSoeh-a_7brByfNeAk1alKT@^TIUJiXY44X#CFH? zQNlw>CLHtbK(}PZnRZF(=n(iC;F(^sB)XkGKrApg+*`iJB-&EJ+CFCERJ+_)KKu|FX3F*)`=4jmd(gx^vvCrl0aV-;SBmRT(g4= z0StVO0#SD=@-rUW;pkSYjdL-$d3FgG@ogV$TL7cq*5U$T1NlAVjE!GfP7@$GwuJ*j za{9_|UO{%F9leK)36t~_6ZaUt;)b#WQ8=JggDHM%Mx{r@yi+T3U`$V~C|Qe|!HU`G zF|XCw|0s=j6tQ)7_lx6*ADWvDB=Ax8wsGQUhy*_fqW3NU3#f)8>i$iK1}D4aBEgtr zT2bKOk0fBlITgnc@7@6jd#j@$*RaOoAyCXo@B)ry?(7g8jq%afqOnvs_vWP*k%4;x ze9$=@{_@VP9bBwY;tj{*9ByU6BSeVJE+Ip=9TEhKos2CF$K@Pu0oPrQhnsTW4|5xk zKO%TMK=iYEcipv#vwv8Na}ql~xD# zt9%KJR{0WGtMVnVQsqlvp30ZVCzVf)%#j=@fQLv(>6faky6~Tr22Ac(2|S`{bvvyk z9MNI={1Kw3H}sZ)S=mdOUHe@Dc-(;sq<3wIB*bAB9B~M>u35(Xe6hg#4wH+w*#|&f zb8w_m4{OAE6KWFe$mhA6(?R8nG6K3#+FJ zfup~V`vUf^^BNQ&CeCdh3ev_G6RnaJEe=V;)iI%ElTQ(THUj7B!jXA#kS1gV`ijU8pv!f4jWX$itQ*RbvY2Y5MYd+JDvxL7bI}PhM5u?~g$_0s zf;`Pb@=}l>SerqDglz^1qP7_%$lPX-Abguaq7;rW@nBdDZG@MiUI>{{p&%lj6bj#j zG;)qFNt6eGlw^(KKIPOrxm?f(S^tr6<>fiBp_xo2SM5f%01Fiq=|DCh9$hD$u|L6} zVGgO6LMV%fc_6CA>iINkzN_AMkJ1Fu*!c=1wy3!J=xI}og~8#x-tmtxw^wgM&? zh#RocvxUOB+1k`PqZutE101QAqjw5s)=K4Ow1gP7TqCO&b0A-hG@+kQE{?(tepJVJ z1wgPu6H3SSq(heno@!s}P6ZnwvF_gdK{9`L-OR6+!v;t3}1FCS&`$KjJh^N zj^O%Rw!`MH$oUwMgj;+#AJicRUkrIp9B1i#sG9+anxb*!KBYGN+&mOvHuKhSx579{ z(vm|bkGi{(sUr;9I(H_$_p4@VY>dqcW;Xr07Hqr0 z3ad-IlLxMxU+GVmYdO)MIDkumj&k-qwiT(R%?kN^_U6 zi@;BI$vT#Dg$i0=m=8Jr#Vvrw7#Qy}$F*`gA(GKwuCqb8fa|aYH7NEb<*`DP*y7cu zz=5pdEdz*@LXN65uZPZA5rcN4N5a4yH3h)DxraW?wyq5H?xidEbyZ9@djUX$)z|nQ zUjcuIBxq0HR||ufGm_2aKcV_1mknf)xGO*w?b7Lju&Dm+5ghG)EoBQ=TtWhbVG2Eg z*29|`Dm!Fhz26`k%}tSTaNme@Wb5bBb|i*b%1spdiAbRiOEiYsh>(<}(Fxo$Hn9T{ z>n~Ws2pe6~rbI29WaS_AI^=b9h8HO6&BVfFvUk?3cV;y(o-N-QgSvz`5j>q8yn z7J{N#=0(egPqJH5X*ts;uLx%i0L7Ixf_jKnwJs+B|+oa0P-uLLvd#cA`P zY@CbDBe1g;u*sZw-~2x6FvfMOzba(nGV{wC%6k|h88!yDhwI272>}jZ)u!|v`kpHY z81sp0b7+(gEpW<4XOTNTjz-u;DInr7`o2frlANBt&tSqLGy~PA$uVP}Vcm>(x8Uf- z!a9-+jL@NLO=K>}Hs!cYvNu5H$UYKhB2Z-)s}#-jK?gUdsGSEv3iH!tF;uqkEhLZL zUr&^XW)(8(BY6|(XtQ>P-ccacO}fPR!{^fW!)gZ4XNIJlkh5@oAhQ<^O`vDUM@1bC zFfMOg5c1!e$y!(1z}$V4)t=7grBa8bq6m`vc6wA5Sa~_mGxbsiYX4wQT_J`EUDiwCFI)gE}?WJVQ7 zfRNcyi=<9mRS_jnIzMW0)k?A|vcen4iCfpbij=EjGLX8`F7>K~gl)`r%e&!X%u>bT z*7@rPOrkT!44~rF(!1y(r7%~JOc)o^w}#hov|+Fjm6GK;!)0EsPZwt+uDvgfUa-ln zTtVfmyO$((g|(sD;+O)|?9U$h2tQh>k4}Qc1+Mo4wNl|+Z!mGPs-4759OjPGIhROy zkq_cr|9F4vV6aF-qdn!a9v8~=cUab94PkS&5QVvaS7yeOQ;GUt-vZ3zqB5KHi61j` zsFbg!HgY8f9u4+_d=Q(-wj9eM0auN{1-iPo1;!eXfHaC=;7WcJDB_n;vMRN-bA?tE zuH=Z_DIjz~~CK%)JJ(Z~x0ln-d5 zq?MILlWz?cP9%0}wgkenH|Ro%S6@}yUl3dDrCe`~MWV$cE--K@4MQ0f^@-&ppnM;T zvtd=OWUl%uFH&qN%+;)}u|Q1|C5#sBtl7n9N+$6pg#P3`V2l0JoIk|M_?ds%+KQ`L zs9S)p)aWMzhvhUY6y7!#4y&ZBqh2_F+gLbR8Lg3yp!%f|NzKCPSZY2sqA6BPM^U_P zEUrtYm(pL2z-}-&xc|-zL(!=B9P8HFg<0>5Y7*4h>K{Li>=Pl&-r@NQCb-ICW zOX0Infbov*w;5H@uoz;2yGk`WesO5?EA>t(kp4eR^KqY9_p!U$)9N@C@5QCkd{bGY zWhO*-UhX|Y*ueTNPLqN3+AkXqJ=SR?1R+v>7e8Vo00~xUmHHYXC5S$X@{_G|yvEP9 z@PzYBTbpU!!39rUV)C*;> zY}*t~YPFe=lf=JMMk*4_H;Mfso$`*8Fhf{#+=8TF>?!4;jd2-o$M@ulLO~$mCe#I| z>6PKt*84@BiHNRDiGZbhZt7~zw$)LXYQ{gsZIb5Cam*s&+(S>_qBvT`h%ve6236gK zS(S#7X~W2n4*bLXnAQ0KW~CpKdYqUv)2-*>*(}`P@&%A;s!gkRvuXhmv&{;deH@}n zi`;pewJPy^$JyqKhw8Z;*Pb|^+ZCKhfGu8WUmBD|sXI>=(ZVYp#}p(m*IINq_$FD4 zgRr}wT${*_##Y|LJs`KSb=g)7691Rv2ESeGgc|jfQlJxQWXPN{2{CM98i2A2qy3Je zq_N9U_6AkzVO@U#0TrLzf0n3J;!V!KMs=#*L#K*U{Wnxf;ot`faM+*E_L5|1nfupUC}A;83*1S-@N2-fEVn2!C6*FYH==x^NH4TJ-t}K z*~EcCmJW=QM@9snZoAE9)Dti)}5p}d+8F`U$ zE|2}S8ez$-hyE@XV_o&w@j(Z#sDGFGAm0be;LUE=~SECTJ7GEicPyjJ7)EeYjwMKaq%~1x? z5OIO@&Qau`m{ybqI~Tn$3pJldxuDNQe9}|l3E)crM84ES=W09H_2^R(f6C6rfICMF z#f=0NEb@inT8z#DRE2qJ!eZ5L;5dbt-m^*ttOV4m24ZPjU5b_?B4>P*uGX&DFdIch z5E%}^#YJ!ohX#6)j|Yb=AluCQYf@ZaaWo#v0-LY zxh@(c6Ne${i@_vNkpWXmZ{Up(RqeUzKOid-Ziury=oqHSvjqZO+?&2q2!sY)xio*~ z>QpT6DxM;aYH2cS8^*MW1Z-~T_*{63ReFEG<%!>9;>ME~X^7_&Dk>2ajXu{^30hc9 zc*+5k6ufWjdU|7h!j91p7FIl*MoEDLP1PV5wn>azSs&=fdRCq^7OuGN89v3~-ayU+ z%^6=E-k@sL(L@fFsxKy~884&>X_cY!q+_|$h@CpTMR}P78Mg&h{MfwLA4iseNqH+7 zWiG$D=+ElNUp`P>dC_+MGwGMqM-gwPz6FQL3_Ws%DH3^3DoEELWh|2%f*oUdsAxKx0fV&G`Y8NsNa3Jsp{u^igQ78q6{B5UEW|*MYyIW{4#P`_ z9uSYLuwgk#Xbn8~ga#DzREww}$qTN*rYFT}-B(Y0PDw|v94H-o7`-wk;gj0pROvBh z#}XS<*)tvA6%a`S(6EDu{-*;j2-eh3bh^e(F2%ePIR~j0Q~uQq?1aPh??Aw#AnrU9nMo;{f-3Kh1Nibl3Xa&|Al| z?M$)fxDRBNS2jiG_pTS}vi5En$8ss#;cw%MKnYG5>EJ3=1wLkoSwPCxr0~Q8 zw7M_xW-_06_-8EheXYQ39XXGnw=3G20svJ{-@lr4Nv8yaNnvVfISPmZLoQeKBX(W- zdl(1%g?tA2U}bVk07C@XFpTM{N? z+2cv);(4YQs>uu?)ZS#CBuN2*DfZIAHA;lhc!)zGcaxR6DwjZ?*_LDvLy1iUsN%-j zxGHeGDn#R9I;~}_qO7P|CXAAG4LXjzGW{Mj%(&PGFUu}~?L3Y9O~_pT<=(>l!b^+2Gv}7$3T8t-7r9_Tn4pu-_F8_8lboNO1Llg3^)`@wksL8cRWz?J zQX;er+$YIqvb?s)p&~iCDJA?ykCL);0fnw2AuU6!BwejIB2k?m_iuZ`7>+Oo5HIXz zQf)T^-v|5qcjZUI9jQoIK^f8JLrc`Piem@be#@YmNR+DV7X}OYJvCzx8#cR^o zx+CbJc+mn@_%7;}hSDP|C*A61?s8b>J|QiQD4 z8tl_WPuzy_E$^;PCcZ+}%iPG3*5iP%!`y|T=hE#uiDNvv;Z&MIoW6uy7y;96Yus#DgwtIiai zzc_1-RhJ)Hlv&dr#Rj5<(PbZV!a(U0LLtqh5K5gHJh(=pX9WY%V4eF~!{%}TrOo8n z++eNJ6Cq6qR`dAFc1?pFEMTnb0?rG$U=oFw@5hn1(E_H^3zGn=7#QX zj}RqKD#V&3^_*mhZ}S6Z6|zbs(vuTa8QuPkqzl5OwZFY9Y)uj|5g3ihjHPrvH&Ns1 z^*h_QHu#*xq6L($9B1+>QZvXA&?eKBVnvCpESGYbGJys{NRduyVG~b@dyCwHwIZKV z43(i+$(M}+20KtM4L;q+X5!^tYATT}5@BE&lv&G3%gGf~b0Ys7X0Y!VGV zB^mCM%{YD*e8U}?33HoM_kt+6|BU*7GY$KGQ9368h?_1)u^o{fnol2w%=Mo2e|)gM z4yl}zfQ%}w;bPnCiRYu&!xKOBdiUD`a4+QxzPUeLv`<4VMQ@$Uri(L46!NumCGCO? z+(+%Cz1qlh{0dQZe~z2wQ*v=Y;?ywRSelw>1yW3f)ko#IgBW%kb(dOlyfa$Itm95r z+ghv;4T3RT{?*WO&G)sJwEc`;k8pVFt*Eu%ew95)@nb7baibS!tdI^FkSoC@CEx->23=5Y|`BnsUK%9ME^-QwUUHgDar=wg#I*bso17g!w@HaR_#{o zk5#AvOR`u}k!F;VMJQFAwE~2MeGPTV4nI}6hMH2r6JVQ=g`~|#Ko($|kcITlM?e-} zn~;S>&__TPV4IM|OwLEZ7J-}4h1}6cz!qSekcD*CM?e-}n~;S8_bv4Xfs-;~EyI}c zSDnCt3m&qDP`mjQMw3f*te_c*Sq%s z{zL>1d9MxNe)kUnAhx6ad$3-d*e{_k^mBpenSh6es)$CmzL12}-VmT4&i|4YY~{yM==M(mC8msaF& z9$WfbERqabSdIG7pE5+Iqd#3b#?!%wWhiQ`M($O3PU7-^K+*QbszeQWWRwxoUi zfBN{+pW)}EN2b>szz-c?`jG+vGn+@X4B)>% zzVxF6NSLWI^gn)l=_iUtq-6cc<4ZqPpoogHRr6PlFa0&bB%O7xh_m%?9AEld1WM*o zPzemrPaj|UnF1uN$p-Rwk1zdf0TLEf1Nph*OaHI{39F)k{G;Pbzd(?LE^$>enE&3NErs@=~t(e9!-k>pS1dYd*j4=l$sezu-^5*`zr$6IQd;i9t#=quIzvI{a=@);)pDzA8fBIA5 zY4q>?-MQcNr+@mTUtv9Z;*I`v=PUi`iLdgfJ5Sit!OhX$U)T-|OG*54RY5 zXOJSk>1}hgfxB=oYOd3LuI|(HmYMLzAuN&d_!lvS$kB)d$|vAS{L}#=#i@_2L)Fpq zH)3ZyAv>!VyNegjeR6SmW#$BI@Dm>m<9$M0eXUP`DK3#IREKRB{WpV)E|+p= z@#Dhz75f;4ZTz}4zv77F8e!)@^A>ZFm#FLVF0V86aWr(dIH&XjsyEppR1_;g7Z>PLuc_lm!=VQuaj71h9 z*NGg{?P*%fyL0@gPVelN`s`p6`My?iv}+mK!!y(wK3B|;>2l(P858G@%^LUA%_CA3 z!KD4YjX2$s4H}IE{>=CP!1ug#a2<(_uAl9%CwJ3grgQrs-?W9qmFosC!M(mWqFW#P zVfxaxTrJR8f<#!Je=)*rk+I3oATId;X_TxSFAqh~BV`ML*?M`X6EjuWqpEG;6AEy$1>}IH52&ZI!E2(>BNVPEm43+! zVTSO0EkqfkG|5s_*sz9V)mB(7B8l6W*bYyQ9t#^_+r4teT0UTiugF6@Y%FXNm6eXL zK-db|Yb@Nh;BiDZcin``}j?Ac)1lF)oK1j)%BGdAae{^i`8 zjd%Vj4mJyxyqgs)KjuYq?#&A3pNe8B`{t$6FL|Ly$k?@y8lYs}7_Kwj z6+peO23O7OvND&u*HGrI)iN~uXZTU9{tumo?fdgz0;~V`F8EVx(VsqW&YxyKW={t< zw?Fh1w2|L@gHbXaw<}=@|Iv56;SGCSStNd@buh+>oW2>FFg(Y1VQ+4OKk@QT9~Teu z4rK-(^>=uWG$N6(U>)FC7xQMTkrspm;+${=09Q38=LTAyc@b-tSvJQfggtS&dZ?|_ zT9r$Uta-d-fU!Qv4Qk^?Ofe35xrN{TgZ&W#X>l9;7VcoW!^@KHjt<;Z70NPfETJAMWn9UL z6N`F3k)7Ll{`u#js_;adnYDoevJmq#H#*RObg;Z4Rg9p4s&60^LG&1sMigIlCAs(1 z2JD34)-_%*w6*=zZ0p`rI&P}uHiHwNSNz2Pn`J#^|Rzc5Vcj2MsbRYn&n zYM;8Vs*;WgtVCs{0n7s79WYWs(m?QJj1L$QwrTTI?-gwfRY z-CqCBU_3(9k-WwgPbu~0mhR5$XF;yrW~@u-(A?D0-Il@NqIa}_Io-Lquxr|x97$WC zOc4bs2%8xU+JM`W%}!5HQirp^WiXFue?#l5PK zIvaK>XzQ-bOp_Qe8FtojC~6Z2Z+GO>v|LRp(%5GF_=GCUi3ISep`rk-SyQf-Vo-qB ztY`;WD`Tu}Yt6rRcJHoBwVv#D_SSHnEN-TG@&rY%`sKKg$uL2#nZGZ*Qi$9Kx%zFF z7JE3-v(PW(Zxb~k>t*?B&xP5IP zdne_Gr2*Vi>y@`;%JOAu!KdG#jcOw^ujcvD_3J$Kal*(*l~;ItDxXvqofqGx4%5m< zQz0tv2j0KR7x)R#L4Un$qS$}S1Re(o?XS}|RKHpysvklts-LtO*?V|7HS`grQEIh4 zm=PqcIzYYc$`@!k7IPKYh!rObacZy2!kNAXb_V6j*F*>aHta}3X)j9aKOy8 zyaj|tp6_}pO(;+y+yvMfT26p2$vXk`#0im{DHno}I-}s##K{8CQYVzc?7=Mf3x2i15mkPMIk?iJy%Gi0kw>VeJltdB`HIf+C6Mg1k+3{-8=QmM z4k_qVfvKIej*FQ0BgX&f)at;4!#kGRn^SA|k}~(#M9sB3y0tWP-;GY|A|f*G?7;yI z6{^$myH+IDT@FGENjuVeWDHGE#;ReYW8FzI0fb(26gC+S430~wFX(uRe@%%c_}4_G z=DB{vP$MRL$eavR=-2LnPh;To+V9*^H#f2KZ*ywdccYXqvz}L>@1+A5@k%40e`a5a z@P4dL2j8iGB_Ri8gg1k#ZV*;;XndhDr8VT5Qo<0FiJZAUSgL%f7A-O0I{yj@sB;e# z_w@`DFxAC;uYe-5oO`B<(IY9271ffU9?+UG6UtyXc6_Hjv6nVu*U)<$J`Ib^nyRt+ z%oP~xhP1ZA9&#brn%D(?;aCrQg}4uW=lWXUu#}WC&j(w;lr>8cQU71jZI8iuL$e@@ z#~Rf-o`Z5Pdu#gu`x;RG${vPV$#rT$Ngj&6S2&d2*7d=Y0WulTxB_t+L5)wo3A`v= zM4b+M8|-5P#ZN|6RoyAag}Vxh+n%J5H)p+!7osFH$1!l}SlMr9y^<4cU2_M=Vcd8o z)zKauKUyn}!jYAQxRxgk%DQ8%Zs1F1)=;fu2tR?GP+f}$XLGKMm}>ZP6^IsS&jmaN zestyx%ti(gdHtH0)5!1$+0!sakpMPSo_O6@G}YDG>5s#h^-{8Lr$g}QI5us^QP?(x zkHo9x-4xWinD(TBi?1O?ao8?t%sdGqM_ zKn_^E(JdYB{>*jfu{HFTQZu!Uqi%PAuWxo$Qmq*KcB6ZTCBrvU3he8r{|WHi~jVz%l`D+ zFZQiFI&>E;f~s+L?2 zS6X-tP`iV{`i*7Sxz`bYgbkT`u=#_H;V9S5>jBSgV<+k~+o<1b8vo(|j&~X13JOMl zs@9%=QU{CsfL@?)e_N+_%ecy9AAKZrnSjz@8H2$N!of8`3#Yvpw6a&pn~LdmAvE@L z6d!gS2H3&ekW8h>E}~gtVEqn}Y62-8X`0~5p7E_(C!8TcaT zE=ip&9Nb5)$Y_G9LqONfStgnOW=&V(NwhtzPgDj<8gv;r09woF@f<&|_WN3PC zke*RWWE)KyTap)}`|>-iA1oYxga@5S@Vr=qCd9CD7uL|D4H|oZFqVT|Z>!NTNn0X7 z-qjF16{zE%Im3WbJLywSf@QqINPQ`zLo!5?7jK9Xn4&6tL&AJ!q3eL+br{wNJJkm*;LFpxX*{e_k zyq(DOJswM`vbyN!BpZdVXvGw^5)m@{=|S`lR+Fv)cPQf>kldw~I@4JzG={bCZ?aca zVd(q3SE9d9S1+sRE7O}qFb6ZfaVFzN@Jfxuxj7YL@?Da^CCXS{FLBv>Wz#1#W$gy&IQ)>E8&CD=c@BX_z;?Ej;Z)TzQ~NtCk?sKm7mmqW_9}A zLdor|_63deCkU$~Wh(}fL}g%)0VG_`{#o178bZ4%qVE9D|C)Xf6^S7EBnsdGD0&JkkUKw5Wy?a9`>AJ1@-fE7eiWHsGSa@~48ies!7 zFX<18*i;iSD&{-_?`|y_mZVK8RtvJT%9`rLo8M5Ud~?U>oE9$IQQo=8Y7VC!)V6^q zIX1ixN60#63cOw{-xdG~{n#Rqu-_n_a{TLomEPow(18Sr1Sch* z9HrIXLcoL*UY7(S%)R`4lVC)))!0U>(<3jilrTDh8Vt6w;9Sr6SL>c_y|_0z;MT+5 z0kRkBOT`nQ)86TLT^Q}3<88!LeFhtgdwU~p)2qgHm|odd#v7YPXH?ACA8Z}3IahEh z1)ceYh0DwH3*Q!F6_St3iwpDT&)0ssgm33o&Rx7v`}OQ8ef>J?Dhaz(qU@Eg$2M=` z!6%P_OcaFI#;6JBfXF+$o&Mfl|1Q0`&gav3bsg7fv`YBFy0Z8!iyxmq|CpCx0*(VOou2NDKXot|e0p#sUW%|`_)cOccpG;r zwn7p@xh=vkC_!ig^B+vBfZg3?GWWF?p2ilv9<;cI-RvEagk(T$ehwgT0&=iF;`PC( zQ&3mKJ;M^%r9t#PbECKxh4Yrf(Y4+fiOIM7ss>NJ@N`uFAWR251>ln^6KLefD^N1E z*895ryZSDAdZ=dOv`nunyI1c|$<%4@g0*q^^-k;4!`+1Ajp5~5>@D6y`ZUg%#ghT7 zk{yptvI131VWEptC*qNQ1sM=!^h0!M>vPKP$|iG&3yB zuZ`tbCVLy}S^xENLVaE+b|xEOe5ZPNlZ&*TKouQ4(QB43UVd>glMXMOU%dQSJPfuv zkHv$izeiKyYu3g`FCGrvWvJ)>-y#A+wi~}r=eAqn<=MFRb>EL&zLOeYb+!BL!1wH-#p+wL z*4;$u)?uaDzRLpo)MWFrY~5CO8~8hi6sm9AsQXj?vPpkXc8s5D zg064NAL+h|wtQVfAvWUo3q<>nb-ZlMf8PD$!28T$rRp2?z1{y3h2MKfVK(l21o9g> z%uNeu*|I;`{jY(1W@3^0X8kwaA4JJ_Pb$eaeZPRc|4_+RHta{be;(*h9bT@!b$_Az zqbUC5p~cz6A116ESv~#j*vfx~iK_myHGle}eSiAQx0@LsjL-6Nzj}}8_opOslwzXvXs3OWqM{_h@hZMn~caI`nZknlpGlk6eBTDA3r6 z1Ws+AYa^z3F`}#-Y;WVn(@)^gLn!g74V)y_Oji4N4xtpfhJ;9pRd|%KkFWa>7Uw|! zM;<4kXKOsS%9;7q`IW`hUXmh3UAPXgx;%gG!Xj?LN)mC2#ZduR`FQXAMN8FH3$d~~ zzq+WYyz0MSe&OuJ^Jic>%jcK!+qd-P>bIO(>b-zlxz1i(UYcLkm!7stf1O`mfisCm z9QNo()R#Qe!p+d+)had`6=2$l#c`9t!(toA$^pc0htX(uACDzQ0Qe`UUm^Z76u*?b zoZ%Kj1i?t@nMX&EMWg5`G;RcKjrP#=-ae!#E)cCrP==kjK4V1yDaIk>Bn5R(07wpQG=OmgDMck`lN7|2-URG%$)FnHj$M_|17M0 z+(~XTX$6-%LCV0gA8p}MEbROs`PWQ~2a*_>i~*tRLZ&ZlMYuaNX{8Q#p?x1WD1aS- z&51tmZ@Aq9#5kP^&xF>W9y}a5--`2J=0(QJo%u8KOT3+i!bgBR^BetbB}NtU6IIYp z)WNQtc`=7vdGXB5iTfwE_QX>wlPk8Um~oxu#WR-|7JKKHdlxVCE}h4$pTC@=OYwA; zF*pa#V8%0~fa6up zfZle0R~8%Ws|aabBy?66zZEj^{QSzwxwGdM=2x-dg`dH`Elk)BDo@-`?BD zNOooSVVsq`D^Xf=m&;vhrPboGM$A+*lDcrn|bQ zX1cptUDY$wY_?{doSTK_Oe&^$Uy!Wc6hvaTzWgEMkSMS}AbI(2ZoO91P_grRt(1S~wwt_D??W0!l zww<15&WUy8(!im4oSj0Xi8@((qqzYr^>=W4f;co7QDzPeo>(7At_s%cZI6Zp{3iR% zAPDcsArG_bAuJqK2W=rn4P0N6TkIFO`mb2WNiC$KFm6&Go+c4w&9$xwlJ0FL!szO1 z-ra5CCB#^FMlaaffq1vWSv<@}T#1v04wwTh93f%ay;UzLn%1!@1Z;#=h%zl;m-0y) ziL_t~{F4scT~jno40*JaAv-7o z%ngBXzyW9*&;8v8gZ<$y0}Z5ot}l6ziN=||aI+93QCYjY<+@o`L+MDA;F>y#%9z(0 zJ)kU|SS?W`rJl`pdgWl!Ta5;*wJhUf7#)TAq&}l+n$->Si2lMXi*uS{H!GS>FiMw& zSDi>qLKQvLpft(FM}LR%X8zhCmvG|J3<-?riYC@R4N`-XhN;fGc%MaHgB@3>RwUW9m z7%{6ef+G5mO)63Un32hwgnWVwinZEA8LQ~!; zPzh~fIP!xXFgTd>s)xa&6VAf{+OfxtRtpm72uj}aLe@sW2CGz~ zVfhxzWJhOq)nro}hec!J3FWD+8t`};4%;0Nuj zD6-kPB*A?YCQab;4~T%$z8~`Qr-xzbX zXW3W>ai2FALDUgoL(7E}`q#H5Dr28EV2}GI!ekAAegh*A1xIA{a2K5FaHiM>d=*(M zJ%&mKLCPFT-G`zh)dOfSmfkj!jaLjrx|6>a$#BqrhpJ|m~j5y&R*-y{ockc!Ee)svta+$kdg^T z*G~m#L}p=bu$m}#zE!v}3S83voE znE)RcWFt~Nk1OL!%tIJjX4q|_E?dQ2sHts9=`D<@JSf$h)l?L$RcuPor^!hD7wm>8 z&WyD@+N9r%3_AQm0QfZ-mtyW&k55e9Qjy!`fuTqjGMtKD#-*`|b&R~|OwOmZZ zbZp5G@)I1!U>$|At(S%4=Qvz}g3=WEsxD+rjGhz-D-Q9&>g2#3oT7eF<>Dy$SN)Q8 z7!)d^*RrSBW?+Ulny$$1AhhOo6SjOAW(bN%(LPik5rbr!F&=k(lUsJ7FOEA8`-82! zW4)tDvNCBNZQFO-qJy0>Yf@9|1OSXNa_w6z&0rj}kEGzCTLr3C0j#KEjjoi&fj~=v zqrh2aAEP(V-pJv@n);%!CP{}5=r6qmAM&e*ARl!(kyX2tC7aU9T&jF3puJ84~-uHrlQUa*Hir!02 zMpo;sNn7VLW8{#ibHk`|fs(q~a6WbghD3}DI=F>rBydyL8{b;aDPEHdRQC43*)-$L zf{NwXnzl3^DwkC%jbHst3l~$eGuI7Gs%nywWZjA1aqTj+P_73mfAJZIEvZS|j+B$q zJ#;}h5JhQrmA%kB^yjGZ>b}na!oFe0Oov3_O{kIkyOt1_FXV5rfO3h1WVA?rP(aMGG^Cnu3Q}b#j(|PIV%jKHRvdJd=!iF9FcClAMRnTcl#kqFm$B>k zx>`kThp_7GY87@Db{N&-6dcIb!IObm7ktmEIwUVrt-k?5k3i$mcmm;$?jCGzZue`x zMl!1|d7ZK zR7D3>?8S-9kS~?uHyXfGULC(wTl`%y{ZPc9(S_8AK@{o2hN&T^2BIrj)R7ockgeonOum>w773bgmTOs((@?`%8Cg@Z(vS)Uqe)&=_-?Yt zCQ+P?oBGFC_p*JsSoIR&obo>moUEAEnb4VTTlTXyDD_e3@C=k+uCktGtCZCib>!*^ z!_X?cc$>Pt+!(TnyW+e`l_U%gUF<)k1xgO1!m|M%2+I*Z~AZqq;&c(cuVrmHlk*XN=5!IUV|Ps-;!4?jV0p^jYxI0CCAB!J zlSG2}==pB~1kkq_y?s@ZE!na%@+y7HDUAK#qKdt^ayt(PjBEW13vFG|nn~Ifmn}>dLC)aOj9}Q^dPlWnxMi z&uUd(xv40E)Q8YtQG=!(pI4A~;hWPz2P0RM?zK{IvD^;)=o(t$33o&0qD-@8cuE*v z3Y;3KLZBWJxiZv>#is=^tqBDhURgLEO)E8s#!7G4h35^)nTKL1rV3&w6R&nFwHhag zOIPnGiZ(f!9#|=ZrB;(azhB%L4z~fK*al>GENOSb&5UAFPgrY;xohZ0)g(}=SPMqU z1v`Zqw-PPVuG&%7oWK&NysFTp5Z{2+fdn7l1vB?ym|K#mV1Vg^=8Jdk!lp`@R4 zNLRNQK5f2|H{yA?4ED4JMhLx30{>U#Ai@M^!xFZ{h*gG*S~7gP1`kDPC;>_6QnkZl|>W(RbV;)IdvQE>vR7=XYbB`pLXCa`0!#+(%=SOaw(-JdTWfO3Q?ERay- zYm%DpK~57UR3FH+BCp~D3|B|21m@YH5QFceY*d4H@5TwE|T%JV2;fY=B{Z!4F zz(W?{h{ENM+*7g&+;dVzX^inVBtVV7d7O(29xjr)w1>ESUc-~M8Ng53!2~>$n^tjM z8W-?gk$D^pJ5S=Gs{CE4$Ss&L%F~}LJ(m%i=se=73?tw~Y?uL5*Y}-GaPjelSA!e} ztO&$tm25l30%DQwY+iV^K@({PhXpCAilvQOn_0IOZRBI0&`shQ54P9|MG4XFFyGZz z5v>3P>}DVdHe_K6N*9u0Rjna{wgvfb^`i~WL#nb~DonZrWLyHqP--}HT)HU@-stb6 z%1+LXki|IiT+0y{;8_NR=qVJrGZD-cd_j(`gwrQtlEHSHX^}NH1L0Fh)ILC>EZ+bp zE9x=qcsa7-$OdZJ?h3u*g$85ADARPfSaJzBN|;EAFGXZ=f~`fTJCQ%lq;i~|at_X< zke&xlSP@&c=~AIe5k2jsq%v0Ny=4`#2an=7f-w>3+1b3uSf$D-9&eGuMQKU*G4Q2V zXmA;qUk^Ig`gl&Hw1$)lZ^X`;0vmV2or9AN5s`bn0kW<$LO`?ykX61c1zQcCgW3Xr zJR$?irl6EUHx3L_PL7&PyG>{9gj5DCSFlB@3c)>bRBXMg09nh>yHlfri7cl}SxFRE zeiEPQlWoDu1a~aJ^A8EYg>Sm<2=D@=r}EI zovk%=d`Qv-U7lB>+3jB(z5s9XSyyY?LUVRD{b>y*HYg((wi5ZeSdy?}U`p!mRk?e5 z>tsp`w@V5+G89bE!&gE1yTZyvwdYEtx+}iZ1S0u;V#-Ol15@0GmgT+dv}9b5BM1SF z19xf#*W-~pauA}4_D80@H9g-+FeMoJjZ9;zQ4&jB+18))dt;dyyNMvDvz<?aE33o82xBN=o#TT$7UNK;9V-|p2a$4NRtGHwrtE*ZtB-hoSC9+G05 zaQ9RssKlcYMCBRSyevw!$lDg^;oTtuSEUb;hlm{%La{&&Sf4;S>RIHC5eK~GT{lm# z|7;^JYi5wA;%8Wm`DO+kt*(7u>-|ikD zmVcok%+D?cjPj=@UfZ#DBm6tB^Rz4zuOTsqO<7$(_>liV3-SXNmmxbzEmo zO^W40ly$Lu*+FBd!Vf z{&1B$qH5$&cr%%5E+zhbxP{Lak~Qax@`)Ee+c{l0vSj^FVF4`dtJ2g4PExAbCO}n} z5$o%Y3IHd3Kvf8s_Q$>TyUm#v4wmA-V1Rpv39YcU|LN8ktt9=$z4Mc_#N&N({li2a z!#Bd({4%7^jJ$Jfy+?1+ZU3gd_71`<0nb|YNY;p1Yag^Q57+DcN#0EEq zLuekT*O+af67R~=rjoW#Bb5|e57`5D##`qW6QooJa9R91NGam2sdHx<468I%k$^Aj(K4?Y^p|K3#5t%Us0lV_LZG#~!?IpEQ3ToMKo?`2mG#fDyaMJXTz@oKWzRkNc%AvNHzL z8p|3fF7wbqsj2kX!L*iSr!Xp2j@yH2Rp021;jz61lU1p@Y)s^+-?Zv)h0WTHkjv5= z(hU>Ah-WlT)|LQ;g)B7G9i3?urov_lF`DaYA1> zpNBI8kc{wA4R^6L&?}8XxHyYMCJmIr^9W>)lp2f}LXuEeZsVh#CRL)IhW$YRkXtJ0 zm-Z86m)Ppd8fs-I&oz$7(ZyJhV_jEo4zaHn+^p`G(+Na%HbX^X0FT43>eNuoqyhVq z-fzYVPBxRyAmtFVhP0LzS3ga)XWwHa7-W4JArqz0sB*N~kl!u4fmGC`;|2n9b3b^#~By_|MBcxB0U~&P&Sgu&6;df1zAUsx8Sg4CtIupC_K51`F3voWJ}=^UOmrJ zmYCslwI&T(3o?}aTZuYOBbx0H2c1T+2q$68+3-QLx(r`5mZxD`tO7aK|7iwnov#uu z(kCHJ9}CsRr3y}?$naAUAuK*$ro@HL0@`clEtf{5>t(p5nJ9!TQeo&XILS#(kOt4M z3pZ}8x^}(+^JzHuK}n8cCdVU@r9O4~%`3fC3vhC#xg4$`P}$~ss@0BB|2S0*PMzfN zCa(Bbm*86&Xi^$`C=S-JLbxL0PuM_dfq@}QD}jUpkO;vJFLnAuDyWw9)jWFK;;m`? z7AaQ-fnBjI(!3L0x1_^-p?WyH2+>eQQD?+fCeQj(zCAJ+l0!V@mFJBc-I1VjxQLZl ziOWV5!}v<|ikJ|KiemgKI^Fb-(;Eo6b4wXS>2{`hJ*l0PNNg#o8m1Ei6~ZS+Qz>nO zUSPuEfe}$MR5MJpPac7gFT_nDaor?QhJztm)Z%dBDL7MP?ISIwdNCiA2knF1X0NrO zq{phWO;NuX@I_WQpC`|VOK6J;Wh>3ENC>08 zmQJcQ!(=9zn(=OK6Sl0xG(@7TnO`t1opi%{btLIrm*9h@QGSEzkTvhCB>5h26CkD% zb#O-k4Q2?h8NP&iHQ=L#y0;ER&9|s`DsPHHu1RV*8xXLNfX?XxPjXln!c*j;(wfY8 zOBQ>nv78qC!t}U^^?RwyQtN^lxB2*8v2~r*40{6ff?G1Ey@SzR9@s_Ft;j!fK7}PW zMCieER;4@Ka-wEwU4|G=#^%|yqyVJuXu|g#ef6ExqOiVbn7{hZHTcuj4l^()F6YMZ z9PA($-41;FaJAPrh%LzjY;(il^q8z5e*#y%f%(9;!afrUKW>FTetm~{G*1HpVPn@7Ps7cgR9v+j~;%5!V15Q z+|zNkO30vOh*-&nGm$PXS9xd^i)BKA0}F%$1yBe_Hf7w26K7ekfp`)WTDC3bau&*h z`nWfgSREwP#u>cbGvlKF2>J9q^-pN=UqW`ywHL%g%^buPaoW?6?c>sLT+TqOgpns# zWWn?!yo}f7;DP>yg@zCuER2G;&hWlwMso}=7^aiW1U5_z_Abq9=ug*M${fHu8glu^ zeDU@kO;TaMt;Cl2wNBfeU0R|c(2C01tK?AnKz!9$uRIxE60D;3yd6m(JhWZQ-d z$4UM%#|L^!Q4ousM7Vvx!PU@6?3eI=8wVH=nGi~tOd+vQ0`wyTl(+fDI?*O3;(!CG zon(Fp6D^GgJtId03zj5;rqfJ!0HXT@m|2B?`K(TyWG(y{f=MvtC=pd4>l7Iyv0!8% zQ9%jKL)>*>WZ|e`EU~O0aob5HNz4<~@l#KOI~s^Xa_#ILpg6O{PjQVA|9P66^!TDjk7{}#%9zEmy*ntQSTzWsmKG?$z- z)#g@Com%;!Qz-exQiCOHn3ewFQ!A%g`U_sV&cttJUp%$4%(9=&%G%T!m@Dm5EAOz- zk9eV)s2pqWYo}JWvZ6I7O|9tQ)XEWyKI5&z7RWGt`+R(A<t}p%3&ph>1yqZ)_aB+o7E+^Pk z>{AcvO4gB@Cww~b&7;!daHqf3qlEDGuJgquywFP^^<;%!Bbrzny>ymE9+wVwI<%5^ zpa!i8BUB4)U$d@T;B8}3W0qHVEsVdzkNv^=2ouVy0{m^rD(^4qESdfdR{Z2%M7+HX zfPNz4MU!9|$=qV@W|hdUFE4tEcr`w%vlFP%J26FjM{Kw_(d0br=3pHv9NMQ_O#po|16c`67lkaDSq%5wZRP?!;yO@N~B z+(WP%j&qnVBEkU}!beGBu+w`a*Y!4H8G@lnOfas60v9Ua@CSHG4AqmP;iYyEE5>Vo zr?vy5c?|8Yp54QG&ToXmq3qC0Jd)kV`A3*Ix(<4m`|B=m;UWOtvvR5$5eSY1WDZJ? zFargm1y=}(>z|~WV`4&C&+Mlj)IbV4h0w7}3k-N9D~Y>(MWLjM8SYy~KyAyE^a^+- zV)-_}6`VavQ)&g4RP4J%i{}fRmKX3A#DH)iacR+t*DG3wy`62@)Jc*jHrovda}gzo zqvQgnRPc)*FtR>OTLdLkPpe7NmTWPqUrpAo9*;>2I%EAy2IAhl0 zu*vG@l<7+8bP^%mZ4MJyFdr)Q8%Lb7j$9--V@Xi3%$amO>|7C!##a5Ue zB3;EUw9r!I4j77_Mbktj2Cxr1?=bHu9*NI7(bp9n$X30DHzn8-Or_yr)^|Xj!&0xK z*;m)}tbNA0pEB=N+ee zLy@S!*xE{}g@qLMwiDM7O{5Hd7R@}rKuumH;}t659;P-#%Nxqui1aA6H#RW{Bn-R^ z8^aYwqBoC@6C`U~4@*iEa@Yn?VJk;Kd88as-(Ug6CGwxRn7xFP5VexE2e&i5git&E z0TN$%`@@H2K)tnCC>s$(HLhT4YTVui;71c6P;b!6G6f>@B+Ac#N*@2+=s#LebqRb~>Ij;jhW3gL4Rrelx%K)Y!5HgNY8g06c(CFYW|^H8>#F-Wmi5}OFm zyh$`YGYCO;Xv=0u8V$j8Rl>WisXrdTFK6Fj=#bw^+#b3sB_u>cKDKs;4{<^eZEx~R zv+?4c7dJXDUY&b!W$wjWcCf$}h3k+Kw`GulLhS}VX&3^mBce-SYi&_M9E~|z9#Z=T zZRBnyyhTOI$VttF?V0u*jD&90Neg6~Lo0o*y@1kgRM*lZ1N;1X`_0N{Dvb7dx&5!< zv)ePJHm#D+$?MOi%(`sMf2aLZsQGMGL|B})+-+~*`)9K6s-{?h&GtPMcrGi@f#nz~ zgO%8B?-IDQ1c6(X*UztH61@!Ge)~Pt{cNdF2EhC6KS%&dMba_+q4pm}iDyeCz!eR^ zpKbpfzW?6*J3;(u`S5Jum1XFDzWocR_)PpROT=3JlkGo)kKZ3Yvca#*yXWdwu+{o= z?LSXg@|9!X{$l&z`=j3w8}sLW1=ifZK^yb;|NH***TT~m{))f*7k|~C?)|Dieg2#N z^wZ(#ABCsuzvf?8f8C$H_&5CN@BB@FdiQVn(_afuZ~kq2cX03P01!6j=heon2HYMp zC=G*s`J1<&dWxF`>@Rk3z*s&OQqVGo3LEG`uI-M%sgU$w)Jj_DKF!KfrqkIxz%_6< zuIJ1`ZVc00tWTRE`EZYxJ!2-<5V&ww?y%<_$h9VGt=6JOHX0+)Fj&0(Y7;8}3t1l- zgd~TLLT`Q4-HT#%z-{ChjYA_b!(f>e^EFp^M+YszB5rG@0eH-OAH5xa1rO2oV0^IA zXOPv#9e=$ye26T)*{g>TDZ_`r*{&oH_L4jOZSEprLP9RoU7Vy83DtlVXZ)Vtw6N{( zSQJglC%l89nZo<}kcUA~ukve=2R^9;!Fu)eNj?l#w zkrs^D%Euz5krN2Ox~=;{f9`^fg9-*pBps68Gh|=@nj0c%z|jE1sTv-WZ?W->J6J9_ z)|9kfGaShSE3@k9bTJeu_wvQFPfOyyI5ySI$YM!QmwMal2XfN}j9m#O6->b@z8R;c zC zOHv0Dofnk5DQ)_ZL4SV>$2O58DgY0v$Sc5U_W+~|YkA5fheCgvq4Okf`Niha-;bU*`cf{Gyxk16*`;7qU#4p>##3hS!LUru^i?5>{8oBb23h^@ru@f ze#RU)GGOQj*t>*o6EZO}e+RBcn69yQc*7G8NRl7I2RMG%M}~BI^CGP`?%>AW`y=G6 z=AjPKpZL~c+$KzT`S9)l4>)ZFM-|UCpiK@FG(`gySaY1zIhj*r8Q(qxv$JvF9iBN_ z^ec!#qkNVv&j^Vpcxr-^$(Pdz!cn5#D7tLA@;;}|8{H2Nh67(-Fkj+WKkw1Xo4>*- z(#*^iCX3d zVuyI=G8MfJXPbZtBQt#MjbJRrd;@Zvcw-L9IY=Yk-+?zWDbhL?i{ckazW5@?Nvl{C z61SSx`g)Ia0r#JH{YiSmouaEBgT~gJ>FVgqI1#Eqb!^S4jbRdXpn1|nzT zPC!lyTr$sqWJ7Yr23z$_+|>);f*_+S@gAb^w!FXIHe=ybY>ZmB;+(;W*xSaAoN4FC zqQD#Ioq!hbNIKfUK~zi#hZmQ~!`>lzT2Pzeca!$@#o!ki$L}rV?Z~g${Gb6x$E`yhv8o6?>A^LVc9Jcn>f~qhOW+B2JNt2w2_|#S~Zp z`>(@)$}7sN5lbFsaACKjR`Cv#_nPVrU@%SiUvFDz2h0RR2C}+Q#qHW4P-Yav!3iD2 zAo$Q|2mey%fEWsr4foFn#d$K&&=RQ&xU3lIr9n&rnJ?;W01+`k;#m(k$jo(1ZG5(d zL{o7<=3){w#f?zy3HU7MFj;3H5+wK_bBxnQ1YH5|5KaQ53J)Q(1-2sx!4U*e*o-gn z+TgC}TxX$cg3;&n6kFF?&8}#;ptCse{O%oWHA97_hvD|f=Dnu(;}-93envU=8oH+DP!pJuv3}llhYg!GP0sv4xZUNH- z>XQSI*NhNW&~5ZLw)%}255aN9V*F?Ucv9FmqT19*+u9lI??XCmc)>`gzEk~xvy9o$ zyCH|WCT9`dt2B!wmdK$5R^ckp03YbaHySMM<$wcf9Ykcp+lq7Nii=Ewkq_USRIN&g zLeHED4-|?HaO@(ab1EE3cijN2wH)arZrg#X>Z7)^Hwu8+qK1Y!U}F$xD%p<#f(f#hnL~)24z*4A@9{IKHL>z77I3424L}m^WjjywRbJSoW@S$*_ab4#sQZpobYN(*tA@|1pR8aNWT0qS z!XgriCNeGHWEx1BEy;33)drR#_jZAnNFfwZyFJ*Ax#Jja_4cvkcV@8I@#DgIuOh{G zkt2|i6eCmEc!PzkE8-uQnGbj~!%PbX6Q<0?f-Gr533C!LA-sv&w2Fr~Q^6Q?l9{SV zuv>j>O*uf-Ia6fn)Cu!nAMRrtyEmk91>m1AHr{B7K<+;hO-KZ6K|)6qUo&ZB2D^P; zS{DOy9HHAoSfFtzkT!tW=87q~7NQ8qfF5$!INo63I>C6mVpl5*0j{0|MioNXfvj&2 z_V&Pd0kJF^^pw!Bt#zHn5x3>ZL_!zw%_+zSj4>miE(oQ0o_jGWF|MX0An3jk9$RL; z<1WDf2YF_Q?-dRc%7D(|MD%vE9&7Df+KWyrJNQz!+<@zHYN53=y3m2CL9at=w`O zv>8Ec7l*vwh{n=)X4wQ)#Vr}}Ms&vLh2$H836mY8Vu`hrm&I#IW3iE%=;y3f^Ct3pvnJLAoYrb-J_ddGjc1kg$<0>wY$c8X z&kUwy%lhM4vZe}R8c9*<2pFjF|8%tGj)E&{uv1{P7p4wzSxkXpKO;Se=}n|ACLYWL z20U_fION1S1By8E3N3kcob->CGZ@+0K~#FvOC~(8I>t-6gCMu?h-RV(xHYH*>Ht+a z+CnzGXB;SpiV9v;-l91b=;w$Fl#{&<{EoOFXxvPvN_2H7J@xNrqVLiN2j2+BjV8lz z8SN|`Xnvdp{1P{tk>zP<%0oH%4#_Bt@6}g;U&;ALR=7FVO}Tv{Bz@cx3}=9hC+XK8 zTev`ycdM~B{F&odUr|NgsCL1YL0vIv@-&1#Jrv#^yG&gb8GdNrkXp*q#GRp6VPC)& zM?pZOf51jd3?g$GXP7~lY@}^ZR$XP1z-=?GY@HhJqnJb??D^;cP8f~AmS_+sFm--8 z$5PE~Lqb8aQ%*)}{c`8ez&o_8QPz|eIw6A%afXYgkc=!@ZQB0Yd^&-2nEFJodF%83 z0PJRk-9aeX60ySz8$2L_JUN#SRAH^p3#Cry5Sf@%pY?KZ#-<`;uDB4FSkfH4|Fhs{ zaC9ZDMBwTNiW<5EV!?zk)&drZ5}(1QHWhcm5i<)3&1#FMi31ovW@kwlI|p>KCDei0 z7R5y78YHV$ty;__a48M-?%;mGXk$+()0a4V)#htRKB?MTRbT-Clmm-T5p!&H0+VVA zhN-29fksX4da)gcN;e$q8`(UMTC3n+5msN%bt4wr36y?r=!vr`2&m=XdDSbPOGmAe zo)kvzA(EGI>g4QEsWEIzqaYxGB{f5H7tWusLF`}i*20(pI}D)t$7*+BH=^N1X|J@M zS}+6Th{rB~4lGb14wKEwP?f&WGwi94>siWv_+Ceec1Sq*SCR3X4eaGP)AZx}e5mQ6 zICEq#j?ZAR!eXd{IFf&;TxgpdVY#oGe%{`_kMLCqz7-17PH-!ccj7t&TdmAI4lUAS zlFx!j1Y^b)6qHo7$e{8(mRDpo5GYJ;5{)uFQsqnPboBY39H=rq3`Na4G-6JO`GDw` zjig#)3b{1UJZ%(;Vv_7$JYV3x16p}fY(cDtanVe7K!=>*0_GoVYEeOLL{x!rCU8u< zAq5≤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�B2zKnPU4ep?5-fWtj;60U#P+u627l)WdA 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 E0|%R-I{*Lx literal 0 HcmV?d00001 diff --git a/.doctrees/guide/hezar_architecture.doctree b/.doctrees/guide/hezar_architecture.doctree new file mode 100644 index 0000000000000000000000000000000000000000..429154e10239b0f8a24cc2f69d4a3c32a300f35c GIT binary patch literal 59984 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 AaR2}S literal 0 HcmV?d00001 diff --git a/.doctrees/guide/index.doctree b/.doctrees/guide/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4916133169a6a5f5c5e638cf8200717d39298d21 GIT binary patch literal 3547 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 BiC+K! literal 0 HcmV?d00001 diff --git a/.doctrees/guide/trainer_in_depth.doctree b/.doctrees/guide/trainer_in_depth.doctree new file mode 100644 index 0000000000000000000000000000000000000000..aaa8862815eae40835b4450baf3a31665d6dba02 GIT binary patch literal 38265 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 D)tfa) literal 0 HcmV?d00001 diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2ee06a63c23ce589d8d9a4e4ac5c105c518ad9b1 GIT binary patch literal 4189 zcmb_fPj4H!75AS=wq#khvzxR);;f8d8wb0R7MmW51&Tcs1r{)>Lr}DbBA8M$)R6Yf za7uDwsX%~T6lrUKw`C7K?Pb4Dze7JseE@Mxe*O1%F1@uu_jXC3skZFIbfSi_WxJ+bTQo8EGG0(SsiwqqiPn-& zD-BOL%XfLAoRxcVMw9{(->rh=;cGvs%GF{@;wwpK?o4I&G)di-Wk>AE#Wp)NpNtvI z9LuUGs2pDlc{OIv-ui#2rpCNT=zNqXmOWxU_L%KfQyAWX2_%)IWb2M2XTN)O&a^Jo z7vpitHLIp0I5My!yk?8YjdQ|_upE^|`n#z-AvD^lHEO~(3bn&p=9gblNe2s2 z4Pen=h8Pd%YbqCmlGB*N`2$|e#DGjir3WO-2Aa_UQ6NN2cZL8)yQHCHEL|J~1aL)sfOf zYMKNDuz$7_)7O<25>>fIJ4h>@&^1CYfY>_4dDKG~oDD|Q^mq|xRYGSx3nJM!>`&}1 z`wP3FW{IihmZVUb*D@-lNF`OF^|Z9mBn!T+&v;i?PTscZ$CY%A zEn2p*UPB4(%_iLTM=qNW`~Vtt|R&lA&=v=mZD89)~9+c8~+ zj?ye!=7i3DlmSL&fp^`1WQ*r4%w^=wlgj8exZRv9{(YczTUX%X6{jbYo|O1^b8T2c|0pnyZg* zZ*1H&$IbvGnqu%z27|0Q%t(<|=S!g3^u|Y zJVBxYP3Epk_X$ucT9M2SM{XS^RbEER{DW6LfdlJhK{Chi$WwgwyV$QtrJ_|LqIvG} z>6p$-p=h*z)2B$Rqt{&Vke^3U!j9Pq)dG*Y7o&pbYBpn zsC4*;z&LIR;(Y)lTP~5GC$6}VHbsgo%y`bV{nha^(=TZm!6|^lBK8jJIm(nkcUKwa z$IUDRvKo~O%|tO0G96pURMZ7^NCQ9>h3x6;X`BS%kNa zLs_r(Nj;n(S+iNdv>UTai`VWwVDprXxcSZO~%_ zb{}E9Ph!jtdg#8Cd%pZ=^C&O4Z?+8pV^rLE@p&@`xz8}nut%4N+gn>|qiOn1^^TzR zu5@{TYp!3yl9QE2IWPSC=CX(F<&?VpStA)=OTnji34Ra1J49FJ{w>SHgULOv-ckOt z3vusN^)WUo7mitT-LxGB!L@HNPdQ@vX5X{#l<7EvUX%#&8_T}GQS1zVzhgaR4%f5Y z-#&~vYR1J690SFHT5~SMd7To@VNO7Gj#tBye literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.builders.doctree b/.doctrees/source/hezar.builders.doctree new file mode 100644 index 0000000000000000000000000000000000000000..27211409aa4661ff898fd75a733e6a09ed7ab57d GIT binary patch literal 41985 zcmd^I3y>T~dDiPrcPHueuykN#*=vl^$=2NgHrSRQAb~ytnUeK`n@ha44IBu&M*q#0z{dk(HM{X;e7wy-Fb|Z5A zPSV^NbH<(Zcl2kS$#^Vsqn54Rig!5nTdZJyu?LcN5Z2m$vxgeg0QJ}1Y9A*?%BtPh z=NyiAE$|cdovra?JrTfJ8;=XV56A0TZpZE)?k!sJlodsRyV#2$FUhyoZH6Sv`bNtN zLloloSjTGfUlYw(c!ulq+FDx8P$<7KmnnC~4@Z5g=Und0X%cl8{B8uP z!pLq$zTawC4aZ)%X(e*}&cYS**UZ24>V@O4xN@Q8E-rLgDGC=tH?rrt(3iDrheCL1 z=lSl+K2ii2?kv~*r7VBWg|HMHU=oJ4mIJHnXo|S);?=8G9pD~QTk3U~zlAlpK&=qRxkI!X+JqTBBJK{ORPwj0zMeh}DU*Y7mxu5g=L+v@bJR%>OxcB^BDc1;RPT#25; z-L=48c1dnKB(hDv7W(tGgGcRPMK-7{+Y!X6k!wMO<`lG#5oNW|Z)eGczK8?%>&P)H zSZ0J+XEm@_^A|k~!FfK0W^TLW|E{v0di(p%p1MRVf!pur1Nks>LaTJZ(I|PPv&*>w zLw22f#1%IG~w6W_3CU$Oi@+#t9HF!KD)aK$8}qab`aGg1m-$(e0Rxh zSmd9(_txCz%Uaf=-Map*FWFby-LaQ(EbC~G)XH<6 zO>Qgb-U=7fo)NDXy6;=5s62VR-P#u-3}W(}K&T1r;Hcdv->GLzI0+NZ^C?%(nWes$ z4))_A!VqT7_%ap+>P;)MLOYt>Q=4@=GUlZt{hoe&LAr!bL$YnZa3mNvSN8xQ>4WV$ah-Uk0Z{sZS;1oR7l!Td4fjm9AaOG`Q?C9xb`E%|eQej8|Iw&?GL`JI+|VIinis zp1E>0cHdP#c4y-a(8nB%&-#fsQMYXDuxnfQ7pLpoMa~h!IUW=XinpEZ={M^Nh;Q)C zRq-U#S5{e@Qf8H^%9JWaeZ-`w2~rf-(gbx@uAmPo1vww22+TO##yF%!L)(t*poM^? z+x0lnI~P93v_dY&heyJo&fH|eTvD5P3Js<@Q-tQB>sW!9OZbIS@t4X~9Ix)A0~9&i z7of|}G5u|4`lAlJw65y0z^*g7dY?2feyJY6YU;6@@A1n?k4e0!^B}3oxVo0~Rnz+V zzNxQc`M$m<`ud`bt?^m}9ZniCplh>LT>Utf^_rw&wLQZtD@lJ=-n%}Iv1ziGntt1I zJN5xQ| z$;v)X=rGyv8A$oB*xjV3jK5AzMw+edbUke!AtTTeAov+L#h)Z(ETOrZ-NPoUDZ6;pq7K3vBRx@!U=Xry#qt%Ya z`Ux}j!R#Eb#U?QwfOtQnTQn0;jKj9l_>Y){ELNe239I6*$t31??ZArsK#S|~>gyAi zxL(ui9~rxhSNpk%#e1BZBqO>~sJ}4w;24FPjK|#$%V25qBR82`17!T<>&D(_4Z39Y zT2cL|)#}-4+2ZrUUYD{R^{{OP(Oo^CGG!+)dw5^dMb4O9bG`C8x#*Jbqy&UK}L^@k(!)Tr)y^6U3Ezwq*4v6qt`AlSxg@ z>35o$&@4LCq;Y;SX=L|gBTX641DAtL84G4H}K&cQG1LOM}s846c?;_%M#u%Hb56Wh~YpA5Pw9Aemffl}!)#8tHpq0*UN$ zPtFg6Muc}8yC|6-gb07Di(s4=K49#{`)*c{>dAn!kg=xbROOSwgiOissFgOvn#(Se zVV{1gnEzR`1SV5Fj;4qtDt?ahl#uL5UaHRi(%4za1jD--SR>|&@%e4c({7z+|9X-* zz$H=}G$%Ws#zsw~iex4PM&r01vb6I@UHe!ASVuqJEPvL4h&ZWbQ5CqP?+Knqd17oz zv!D)kw%9qi&AxLo9>*^vL;*AvLS2*q^`0c%CcN|9qNa;qw+P|_Jco2dKc1q@5QjGU zsf<}XUbaPMyBTLZo>=O&T0CEJGM=hOeuMNFg?;ZoiG!2(VQ)kinQ?VDX>KMSt3CDhhqdgjm(%V{yudui z>?;}+ykh84n?5qfBY1?_>0MKyO`4dl;)=hLRrRjMKQfMsX;OLp%XoUTHk-=Ju@PWp z@}%-4f>`YA*T}{)Eh;wi@=`^DKC#5kmka<)d&0rr!vx4VI2G%(vJURurn8pGI0_Ck zrHawVGQ`XMmNYF~{9}yK@~XOvdmU6}K0BC;|30dF0scJbh4ho=d@sT;nKt(lHKm+6 zr=Zy3-v!HGE$V4S6 zkIZSLz#|Ll>?pRba>s0&YIporg?5Gvq6g$YkQNTuvILe~04Mt$oN;ojh@J5w-{hyf zw8cb`v!=I~a4=P%gx|X^?PldB*IafMjo8W|H@(rFl-JJ0uNYAx#bcIewSg{W44P$0 z#S0@z?`1TEc6ti~n0<~{rA26O(Mmq^H?g??SCCUVpQV6D6Hw$(&p( zMKvn77fE0wn96-y9O|!P&P?0 zl(NlsIS(4pHbKs=+}1q5w(|amZ|2$FSnidxJk9dC8~bs7W;45y7kD|ZwH}*&hL?LE zfOt5UjN>5sb;qCMCuFg}?fCNNv@D*Z)37U8{caRD<@Hw75IgoTskFJ{%Q9JyC{cen zNEKnD&T}pIvawBPeT7m+JF(^56Yu3&2D`mzH|Z2<#bK=r)9}AIp_8;W9@qMf%&>AE zkOlFZvs}DF>OWMY7KSu|sH1qHSN*`9r$S7V$5s`dSEtN99k_c3^1(9|?5lB0|3jm=C7IXnqY)-%4b3S$ujD;#CSHu@2;xsB zS}Q)Fgr^S!TTj7h>Hm1gDcx^%OBm06#~l3c-ru6DhH zX5z)JCx}r*H)?~a=@^|b_zZDwdx*W8sL%y=FmoX_?@iql%$ zew8X-F-ugeVnJMsOT`D19xxLxc8)j&eIHfi3P|jaOCL!b3N`k=hWR}Kj=g_DKa_IeD6z&&b~oxhfp#1#_MS!~?-~3_ zt%SY*KuPWdwSb4cpHmy^+xrFmx)z3Dm-qL*|E6|ZGfQ=a2q$Z4EKWWL0<`GsEqbeR z83Y{(jt(S9ur0SzBVoa+_26jmx#?Va`F^vPYvUQFXNd4~WA6q7-ym3rfw$)kT%Eqs z5nd4m^dhCBHw>dA3Hshbjdn?gMC>WZV|iB;@NGo5UYW*p4->*Ga5~NVII5czw7??Nxl6Serd4<1J5J zF_dYnYrAC-pyYrlc&X3tJkmGbPIrV2c}pw3Q{^_7~kEvr5Fi3%MJ>A|m&Sycka z4h{#9C2^T=-_yZ3y)Z6;$fnk(-LTyBnoEzPQ87eDcT!$G6JI^DOv*@Eveiaf%UCo^ zlL|9Nk`g3q4q$qL+t8$)#Ypsr2uYm+B)f@KtzKm$pqLo^$+c3{{*3<33J@UK4b-S& zeW4w9+`eB$)f`e*d{Z%a^DqoDtnBpzSW@Vm1Q|-_W}^$NOfC*3EM#uPv9e^#p!AA| znA0t1c>paz%)F1#u7yIZ_fh)wR>K#rgdwo|7u|4M#kt_K(qQrzc!;;?@8Lm z_nad%OIjrhWo^{;%_bSlBk4jlwofK<3=d){9e5ulGFcGomrjqZMVec|45K1gpEJr@ zlG6EOG#UiK`YSW>;!Lq1UYY0ohM9PAo>LH4Ij)bawU)#VvOuztX-keL~a zbH`llblBD>aXm5lX+~B9M_(urtnwfv+)=5u6296nkzQa8B*uC)8pQ9;Hxn=RJ3+kC z?{=Gs7yF$ct`u}$fii^_^DxFny|M;eU1MftRF8Z?8n{YzJ_>5}a&ERt&E9Ahr&zOs zcqM9eyP0^gPYlYrYbI{wJa6tSYIV#^eLypxM%0R{B@<4HBhR3t>bJ}?7Hg0b9|*Pj zkdeL-CmB?PPZ_%?L9K)cgQHfTH}*0LYQl2)QtPZ>KaS>o_+hEa;SZW^^JTqT}C)ap^p>7}TZVkU=Ly%X(D6}6(iIcl|e z62ItDqE^%Ts$7GtWz%4@~ZkSYglyZ zS3z6P;j_?`LZ=dyq;mK8QYs3+g;?e~HbNin6V$9rm3S z`Wez;_n!g`#iK9ZhL3y*j&5OUy#D^E>9@C;bIyuyN`H&ct5J;IPOS9TM z-yGIFMv@YMx_SVr0t}%UISV=HxhvA80H9vPs-6}AYR6Ps`DR-R0BRdGs#rW|0Mu4F zoYKJ)b}qQ1Z200~SYy!BC1{a5>z-a9dP3VI!cf{an_ECna?Ljs^dy)5N}~nP6APF| z=!t4@=;`&4jYCiD*ExcoX2qt5-t1q2Jc&dcYoH-d)N)kd>1Mt60k8<_>ny-dj?t&h zuv0T>8{d7dU?*;pEb4@}mf(dt{EhW&R>9Ctm8n5}ED>UO%tAnRs!MQV>@OE45F`r+(Qz0f(yL@)gvx@gIvKr)caRND&#UJ5~N~@K7jPIFsSuDkOIAY&@ zYidqqoES!fn?7L{!UQ)xf~Ld4O`kP(RSe zT_f>wM5e*rVQn8VvG2}$oru)ych>kDJ!hSn+h_^;|6D;x>4*AT1%I3g3@R}lZ^>$s z?-nQH_2MOt+PfRQr-=@IdvXRZiWRDdJF8v8vzd<4>vep0k$px+eDS5bGDlWSzvhN= zYCk0^JH3CyKc?JKdYq@$eQP!%45&}atYiHYWw-Hxz)t@JfAt+3wG4@2wB$EFCZwcn z*ggX^^W5+Cp&hcR0M6z$3uH}Q9;~5h!e+f4&=qamLGz!4`OY{%`eN#{{2d_LoJ{^8 za-5e?qg^s+Lip1HkX}V83I&j|EAbE?3pT09b1LxY{-Iy$!T=TuBW|@>hJu$xBp{!j*Cw zDS$N!>Reu7?-Fn{OQ~vJ^@G7)>^z)Rold-v-`tBqwfMA zx|5X~oR}95`N%$O{%syncE1eJ@X z4*s^a>?fhTM^WAEz=?`d4xH0afdd!RnXzhx23H!&Hmdg32P)Jvq_4h8$3=&H+an9X zJXtgXEc$H-qI+Gr#WfH9dnP?RI0uW;9i1HNTse|F$~ak))yDbyu*NZxl&I*H15gz> z9Zkan;&e4u^|YX(TQ{Y3Z#Jb^F-%jViWP%~if#ca%6CQLtJr)kJQL?{C=0%D7{(YT zdJ$Tf*0tn|Lf0g~P`Wl7TVSGcnKu+BDmSP~p9PpGiEQtEcr_%@cT&e+HqdvZO!YFY`vhhAN!gfZ(Fp5E~ z-!T&}#xMl&$_)IYX5z&ectKo&T5403$2Bro>J#P;wcT!N;d#ce)Xy+0WM{^LrUt&9!DFmRc2}gi|WzRzj-ZF{`v#m~V0hE4}Z>X5z)(Cx};i-?L`o#oi}~ zD+Qfjs#2lLyi;z=H_`G&lhcE)uZHr`TKa*$0v1NWS;xRE!bqjAcbSDM*0mt6c}X$O zdbyc+v6l?W`88(ZM$Yr5&*H4FHB%ojAe}~>m8&HaW{iWl()N~F#$pZfaW)Xn>Ko}B zan?aY#XZI@N^n*o!r(aTJB_`Jg0pfKGS<|b$~b9^hO<6m7Q%$Hei%&=OjK;Ge5~(r zV`n8xAKuL{N-@_>|?PzzZI4kwdan|p_5FTAh zoOOGC{jR~Sa&?U)@*QYIshldfHGa#11Z(YT8?BKb*A#&~@>=$d!gI-j+Tr}r?DX33 zh9|Ix{+=^iJlOjw!TlLWwtha0nk2IIEH&CCcYlaRrv=$!hi{9Kt+Xfd2LSc5Q^C1* zY#wwasU=;vqEP|PMa8L%Yi4aTFwS*ZhEQhnllETu7~pQkRC!f>B|I$7wHLH?n1F?{ z)MJ2&N>VUEP9p_*>Vi7_F;IbP>Xw%9rd}47pk7(Jt7=BQ zu9K+OO!LWOx==A7JSK3!9hTSN8nb zFl;i=?CHTZPvQ)vd9&#SXeL*XLxE;;o1wH@0GhFIY6Q)w1_#Y9+Jax~9hU6Zsexun z?pf!$cn3?>&9NO69{HOC^p3CC<8+?*oSmq^UqXorHBrHGcH>0go;%p_xG8)9el3py z&R!rHYfM0AJRbVJpkeo&z43N@*0K|}*iq1WH}IDO90u**gAd$~MSf(p`iEAiZA-+);_T#NhztM}_Rye5$ZB_Sv4MAp4}*7(;Brb_ z_JS6!Hbs7;zGyX$&|P#q#=n~vZ(H*H2nSD zywyIAqqC4E>V>k>SUlFW7kkT~H%&()aZH!KHEvsNluSbX4V#4OKNwHD9q6cTcN#t& z=IzImy=ZCf>bcOx?+em5>vjc^Y8rZp;Kj7mS=mAR84;oX99 z5KnWuiU-;Hg7l3{<9G|n0AC9osHg>*`thcg)miRY%QiIL#Pu4x(~r*!?1mpS>rJ~0 zPeC^>)3gL9pb@tTU$vLq)`nrEdKc1mq=p?j*$n`t04N+^t@8;MxovV@akQQ|qo@R*p?CUY2(N$z$F}Kv_d6P> zb);^$Ew@#-noSC{jP0#NnM@wqttB4TPQ+{N&e8ti-eNq#!wJSOToK3WV2#WTS_j*X$Uo0`Fbkkzr9(S>n_EgFlHb%``jpK zvKuEt=VHtb>^{CXdYv;FkBbxA5BJMHz;hi-J?f`g<1shHJl21Z7P#+2UpU^~J=;eU z`uzAc#9$do=hvMF*;jkmSA9Hs6PibFO7rL;6^|Zb@hFYzQJS?EZ_-_s>2OoSh2xVE zpjTc(kxAC$#?ni8J&b+0cze-rC8K~<-JU5-YEPypPRd?cqirerm}G*8X0;tzTH+4o zcErtw-=o;pk2f^@R*O3$=Fau67Ud7a`1kd1Mhw7*uMth)OCh|TcbJ6FRPlzSm^tnS Zx6^3#nlwLO(J`OU9h~tP3qx{dg%e%|Fb?V;tIw}62 z|Ig3I@cPxe_uRAG^F8<6?S{E`9WZ0&4E$enS$(`z9^2Db7#<$04j1cF&H2OCp^4Gr zSYztWsWmrFT|d>+Tu>|Qu2&~&L&d4)4ESQGRIUuyieppTrkYFf^G3N+?-S+c)r&)o za&;^zUYc9#D$UzA)l*u~oZBcjDn;$5=7FW+wS`*WP<3piyrUkCR);6x1N}Ho}_2%ZBN_ng}wRvK&&|Fw(G-~C+i3V_s z+|4cz*O8NXLzP0k4lm((?pR@zKg}PW7*~G`7KV1#iX-^VL~~xFumgXZDlIFmEG;e_ zR+?Q})jYkwR2?n$*CxisinadT)!NQ}#-jKanpf}V&Ejt)>wUF4aB%oVvnB>hGn#YD zW5dNgnxME0OGiM9OGkomj)wmq1OM-a|F6N;g8*t}*5;n(obf`rHq|_cOY`)|kTFP; zzh7&?2PqS#~Z*>y-^%)RI8Pt!ceK$zh$yfs*d%a*!RM|b*J_3 zIpw7ON_nt_bih}F2#;h-c?{Q}Tw zVMnbnUebhcRWF$Bi-f6w&Z9yjYLtr6P!*n`stcGcMdws1{1xZ39#zUai_!K?VBnSQ zz0vk9wc>cKI#jIJt2O+4Ypnp*fse(;P+!z2z}HZ1xfWp~MvIMNt-i2Oj|xyLnkoLL z!HPt?OXZ53d{zh-Q`AUVPRrVxl%6FCL?G;sXAPbMxe4vwJ;2V>y7G#UF^RTqek2rmJ@4XD`|7_3x>cIxy8Hg4P)jnt~6rZBEfybJb> zRyNcD>mWFqKVB==i?vM5tKVM5nx=mYR5_8f)(4l_v~)fM9}J+ER0r;N>?yGQ7;WNssjKvmd=JI>W%7Xy9%X3|9>up#N7VTHn-B( z3^ObJL+MeMO)UYN>XSAV6eD)kA$)*PyLkk+vZ#m09_2B!53jMK?>_$hlrvrw!NH8? z92iXKE=rC8X26I6egWHr*ts!LGopt1yy_m_-+LeqUdBEyjEz+r5Iq^Aist&O&p5gP z1B4AxH*0$L#@^@*S@{6#k{hDrlc;;+Mu?T!Km_6uRzgFZ-|Nm12q&%N73t1yW+bf_ zo)Y&O&w|)guf%d6Gk2Sg1GE|AC=8s$?>bj5z$!!oH=(kfKk@$$qVbb|@*dp5`L3leOSg8KLG9q{}qN{x0f{SjZ`U0hg%| zReUi1Dcik(wcBpA3~K~*%0E>jan#XTvpvoE*ht>O`ADI4f5z^u_jrQ}-u9@x=1ss>ckQxLs)m(^TsSd`F512Ak)$HQUnQAUE>;>Ax zyJe}XIe%oLQelGRjavw4Gc*9>u||C=ei<}_y}o%0M*R4L`Vzh5uS=^E#Y4Aw5|yVJ zF2HC*PjILV#o5x8HV-)$VvqWUXafvaS)(>==d5f`e8@cUiRJ?eC?A#wNF3qf@!}Yc z*ar51cs2bs_is@(41VWTVEkMwRJ70IQLGx%A}g9*La53@ud(Qwz6TNljCga__#_4? zlWVz{4W*!Zt60s-cqjY^G9@iT)5KEZi{VR1524+R!hm=xz7Ai^gBOj-aj;*Z&*ma{ zQ`|FNDG!w!Q@61Xb{A@6@VEfvE3AR36`RKeF04|wW63zSwTx|D)k#+fl0tn`&Kr#p zg82BY*jN_F$FIUiZjZ{^R--9JOe<`ZUtk#wo)QB<=6Mb2P5nMr#_UMCv~_;F!fW1u|=h*k|xDEWIrGuRDz&3szVAc;*ltX#lz9a#28CT7NBE6 zk_=NNqlGa@PKi8^N(uHwTT776h=9bxLZx2iRWSub_3`3Rd89lf6EYj3?Ko(`6cUEg z+gaLWyA~R6=Lm=in7f{r?blq_eU_DI8I3N^rnJ8~$h21S0jnf!Uy#j-krw!4E1|<) z8{ShTRl2x@lO~|NwI+NidlTj|t!Z@;f>>fGS2kvmrg5#FZ)b1Q%s#CiyFD7-T1jB( zZSFPlbBp z)8HQiD`l+7!@2l>QQkcJe`7}?b5kHZ+I=Pw$85;8Gcn+R>Od9(Lu58Ejy`cBHL9Aq zL5d8Xl%NhG1=XB6o*vyCfJIiu%iuo~gYisVLoJ3-t4Sj95~#u$6=NL0$54_=tWgmW z@(Kt?K>&)C^&}O2OreK1Ja|e%oA^qg#D14SHlxBK9f=bj;SF-YA{i;C*1cOB2x=A= zFGX%_m3MVx>a3e<-AnYBl0qRxzX^(hf)9lMBsMqm%*2Y$)I>i(Q;Fc`l!ApB2`WBj zG)hyU%!pIL7+XkCnGOD=qf-t|siN^S%%*YF6mNmY_)_@C@HO!jXlT|ziCG^T0mWD0 z&o0LpzZ~nk9a`O#L)xa{8E=`2uf|WB@CiZ(j+&%3LBIV2{Kf;-cpE%Q)wUUTqCvkB zOR5UAYVBCLhxe)l34quGMLDi`H?lDg#yxCY5x)ojWMggp@3HDyK5YskjIpYGTq<9$ z#VOKB=#-1akMi&3@CCpFjtT3@N6W^l@}2w+YeIVUVxs{gx~bbxYQJDMA&^!?*x6EY zfVHcK%R`NxH7#J4&jSL+9^yjbJ}jF9T$j9v;XJEGX5dU*ox>^cK`8%2b&tOVmFV3g z6O#UQQc3gL&LAmgQ6`M`XK0zs0$0i~N3W&3W(hg994X5{;Ty=;%2=@%|0BL(Wa5qf zy~_Zcc3GX~B2A-H=Aa$BDNp8Tjk5DO@q^Gvp3=$ToZ`o!7VeCmf+yvSxCIF>)U?b` zIwUD4klyD|WNhT@a7aBRHJZNYvLa-b$8bQ1YXjJnJx`fLY!)AN47p^STJOOH8uh3; z7LCEg7K{{=Nq9C&tR^#0(^{wMHO~m1-0`O#i=aRtmC*5i0gCu-q6o-UEgUHqE5id; z*AOTHD}LC|TBngweNvL8?zB!dPiRjD5Xs+4YWvToe2pcwct8AlWxNFcvr2Y69DgQF z7_1IYrkbc3)RB-Apbbej*5gaX#xWsmfbv(yM?ncHGl$(eQtaArYfEMk|8%}btzG<6 zsd{OzDw45RBw@_;d+A-IF|h5T0&} zKg9mMm;HMm`}f1_-;c0=KZ^fi51LlA?#CJL0rVy`_zc_G;3y$%P(Yp zZxIu`uqM^x%4o$}e%@Fl&O zO2juOY`C(`o*5M-i})t2j|WQs1ie@eLz>>^#afH04?d-v1aq3hZyrwDYElK8fW*0L zKH;RH)*`J2DIepVlF<7}2{mVqrBf;I#Ud-?KZpOMM%wOt%>yKnm>OvdDn29ahiEF) zNLx^OAJmZOba~24aLLEcw9Xv-T1zf`gKUi6?ex4(d^T8>nzBmgbvT(EiJh-QyF3$M zKP6cpU5%h(W?`}*3S}FDic{+gQR^H+G?tdkF&(?TF(Z#zs=1WrYPetxrk{l^DPA^bu z^yke(MkgwbG7N9Vin#iKuLkF%9SkUAF|v09)?ORg?`H>Ft%vujWvSu)0JFfHxyQH+ z3gg53Yv4%@@3rVaj`3xhGKnN0e}YjtW*#NZgWU|GRks@GYs0e9i(w*Cj?1vls1P9x zuVw4~`G~(S+RO*`Lo5#f%k6P;7bkXM3jlP3$|P2>3szUc;GeIchjsrfdV~x>c_bRI z*6ZcLN-Rjd}2d3_LO7DCV0Y4B3UOikA^i-EeCALQ0)cIp&BlyG8R4t&0nq(-4+|LvpCrc z+d@VP;9t(%TpcTlVUQVg&t?R9#+5xQbNDD}4xWMby-6j_$<7Qh8H0}aetAkj9LP+R zn+;#F_a@3DuVE&KJu9(&DdE^PJ|XetAt*}q9}AT~$38dP3o9p;#sxzLKF$*#NPtZK zRvbK*orCZ2Cas76B!NPUsk+B$DjVVFRP?eA%dCt!6-cjjmB-k=J8hga2Tffv$Nx~A zJwwvO<)2J=1G@^9iJ}>HzyivNaolV$P#=Xwg4aw`aep6!=>OJRMZ-NJx`?T`_UO;! zS3=c#7@)dS{8vbIFDLjHDu2>C08nj81ps$L8}sM)kC-b1fNpqF0RZz?68aabrfQ%s zg#<=(56Y`0=(pPUhzb*sB`W~PlGTPo)@jHKgRB?g6N4=FlmoK3*fYb`YH)G&_ITx< z6U4GP0838F@Foamv#D)WS>%}FJln)~1^Ixs49{!g(I zZ%3~7vU`y8f2{p2=l@irQvTsWXk>o>up4UO1BBPYlkyMTbfkl@Oid08q@2J*T!bRa z;~``P;2~tS;U3~G$PEu_@rehu_|!QMaU9z^*J{;(H3i}J6KqLm_Q3Yj!n?DEz@D&y zYHa}a2o@?ZW^R-=M6du0lK<6u-xm1uV%UwX_M2^pE*WRDv6ZXgt8LMl5k?5Gzj%gQA`j8o!{aP)Tb+ z#b-j}4>T1jX)UOj5=}WiA$MnL+ghi(sEdl8^!^+)pOJT+>O5$c=XAyqBnPAm6I6Vr zGuF~nD9Z@o<#d_~Wf_8sQ|F5`P}Gv{7n0O6>)xQ2V?u*-WDbr!I=Wdv=fX;ze24o5 z!>z59JJe-3fpLPscb7MtFTa;gOubOPYm}5T$x<1Ldit(c(^M!66;ynD*KITv%0dMd z!*?y@zAMSs^tfkXEvNM^vJtw<_o>r*J6D#E7#|=xAf1+=;^VX)qNz|O5x~pWX)2US z2r5peW#{c4BguFwy*V3ZY+yexZXOl;mN}gqeu^_;x*eZR?PDjuC7CAeM07WwH0-Q- zR1gqTY1jbQu^&x^vJ*k&caXkIQp#kK_i&olEO7lsV!3^0mp8%GvTk%9;BuHY+*E## zK$itc0SPbK8-*{Y(#%q808WIWp7?SeO@(qMf{Ks9Urtk@j6_hG27D=!jnK8ePw}O| zmE|MGNsN zhe)1DGZ9pL;N|Ny6$)MgczKMbLYax6;twy6)3h?c3vYs{W!>gH;N>7^veGqbf$&G9 zH4|J>ZxpV~m`{cU6t4U)2*?vxmeN!xCnBi$IK;zfDwK5yDh95w0STUz;x%6BBZ=#3 z-luqS95l;bYCw9H0C`_PvP^mwLB+?jyo{zod6ocPhG{Auw&U+vYBa43o`o}-&$Bq^ zJDi>+`7-e=>W%U&x6@owp5+!O>gieDNmHRbi=g7;S?;5$P}U)+?*_A z3r5ZvFDHBCr@dZf;@6^qXd5?Mo0M4l-tol@ppf07(V&oduo7RUN5u~Kc(LQ%a_wDn z;TE~!Bstexf2E{zM~HOfe)uL9S|!~Qdfp>7;>ia7MT2k{6#lVSTxa|JJlMycx#y9_6=v~ zv8IsyApQ_<^#|Ce@xAaLsgIO?j*_#bs209HY6A9%!7&-h$>3s8@qkth9MdX}4VPmI z^+GZC7&gPV^TtBd-(iggF{VU~zv$J$H!E7SShc|})Ly{fVhxx!0iT{s7@&mZnm4t~ zjhp{&cKD>~0C+C}oU4ik-4h#<*QOhUxod9}-?J8)!lL;Rvj0;{+2b#k?E3cnwM zpTt7#!bcVVEk8#@70ESOviCZEQB8X|q-pGkq%V8uP)HkD2$D9fZgE7CjQZtbZ@Q4& zyyVIgm?hiqxBV6H!?z|pg->j20(@gJM>&gZUAwl^A(VhOP}oV8k!1~aTQdYiwUd+il>rP^yJh&o$%uvm_1%^jL4Lg;2M}%Syj9O zxv{mYmS6RF3H}OFBxKtDQYZ@QHCLp#&;A{vsZdisf{Kq3T|-l$jEGY~SHRZ1Dp!C% z=&?u+EvcgMbKs+MZ>~$u_+ z>82Qs2>g;2Ktv#`wUM>WS-Hr+a0w_#DjdYs2z7*{HY zz}0xCI_Kww>B?{`6Hb3NsifJV6Z|!u;w`{<`kryz-IxA9uV^u{H1>2X*0~ZN81sK{ z-aagcDi6!SLh`pVfNv(ca|S2W4B(?sG=*O75a@?A6$-rs6(96^lBPnTm!M)uFA4L! zmO?#864!%~eHs}(%amkxYjP#l&LYbzZlEXAFC5d;;G&eCN1#2~zY3{9^ z3KOJ=$qsi76N5DfaJ$jh(^M#16;ym|^{q4&%2ovx!&bBHgu91qM8|CQeOy^SVtkO~ zfE*VJD(1M*eH!V*G!@Du0(kj0O@%TELB*L|u!o92Cdv3JefoDQa2`y@kQ1L>TkCJ43l|KCl!+9`$4~Z}Vz3uNv zo=GziRD2NTTQn64VFGyh5lw|M6G6p5n0X>wmn2B!-^%a)il&$WXLv(QUF(+TfitUp zl8Y{|+0QO0IZywfL@;kD89Y$XGaHI}LeD`o70S;DDn35*XqpOTK!S<^J&UxQu8_Ce z58-#(2{k8^&CsnO2z=%+GC7urIW3#3~SRD96qN}38~6#={yX)2Ue2r6!^ zTT@|ml8mp`ryqSd52i;V(I=q8y@}+RG!sF^2Yuc}Q=!l&fR~TZR46kMR1EZ)gHu4# z0rNkU(|wSpl>v8n6HG1ZHs^smhf&j2F1(p13P>)KzZIkZL^DdE%RfL-PjvYKO@;C! zf{Kq%{3T6=G7v#!TF~WBWHWS~?^|^FAFeMSN$$Ulj5#Pt3MxM6646vBs|etwkEY_m zix;|_L6Y&+`t+jT&!38o)%~FzO`?cczoiy(h5_~6YGG!@Du z0(g0brb3y7pyGu$bN8bl+E?k*k2jnL(+`n&6VTg^AbBRuL{Ra;o3%6*3U2~sSPOAx$d-+VCcrTGnmOi8l1-sq+Wa!nXKpxV(q2EZb{4>g5G*`f9e8 z8|ziuQXA_(32n{2HZ~pymGLF9d*Deei8WRd%Kh~RIu=)|+v%k6V6E(@P>!vxq0qP4 zAF*Yk4x8H4)#13PNZc_O!FFhg@@>CUuzv$-gu3zYZNjUbFUuK0Zr6*pL+p{>4c~qr zlfLs^%rfe)l#K2Qk&)aC|7TcemFy!JAEh_L$9Kb)D{}*N551}Sc(Hmh>Vf6AaPx%N zV~Q)XanpNwID+lfXdtltU4(_k9^YiOqhL7sTXFk|Aa2Dr$B#iFwy$(n)T5atsI~Fpt5)sivMI}U1y ztF;J?pk;;hRG*!~Mo?TTuG73%2(EyvMJMKhj2I$dA~kdoTNxwqbQJKw`vV11WQ7 zY2}>W+T|W!hP2A{@g)ZP~ai)bY)JDMc&Q*`K$! z%RfN#DftB2WxqO4Au&w#3bvBh3%dYq6ZCcYSM9_EVF=nA#p}gE<{-@U0%i^=GsV}_ zWu^tIF1q^&Gkq0nSL;vnnCTGI?PaEka11lGW#cka$2V$4ECyG$+LapZqU}xgyf(55 zG}(>G+A0+gY@Hm3SYU)1D*hZf&z`7{7lxc$^R9KyQO zKPYkhdyp{+BmWVTNXp3Zb&!$sbqk`E{14T#KUlT3wq4E4f5%$Z`qMmS{w&n(W#)-^ z3^TW-<1%x{H*5TDLdnjqr@fJXzm4DmjeMJ!0Cw3nL>J6yvr~iWrRqclj>Rj=Es?^& zqn`4Pv1$!Y%!70FFd*T6o}H>EcR!lLzV=hjC+u(9XKOP-ZiTJ)LLtYn4_{B8t)FMr zMz>73^mAFuT7R0y)?Wg3d)ay-9>dmc>9}m&@y$hvtxJXHuo2Z8Y)b8W!v%zL^|WGR$Z-)SM%v_ zX6RQ5nf;X8)ah1>Qx#;YS!E_+U$|Maho=&{Mj_g&4o?;J zmhvMN{tX(*k5u>xS_nH*fjxEZNQKonNNazVg8QmsESuvHg&RelpEUvhQFjHmyrI}W zOhKM_Xx&(xIxZpk4x?hc+8CG1Nys;kBH~;@BnL?=4qT_6XMkmxDz{xm{U?tHI@x8IsV7~mG{Ro;H7KY-F6Ijy@Cih3^9h-fO* zyu6^|v&Nv0rb11)3Mz*Dmh)3d^ea&LV9+^xZzXBZCflO>K?7CKo&}j#m`EAHcx)=Z z5;FVjcX{U^qhd}A+}2z$KDhx-MVY8TiI-uC`S5~WtUhJW5uCww<|ECmBnRYFyrAN< zVq=h|LRm%tFXJ>7$}$8Mr_PNFYgM0m4M{Dt?hR_WZNLO-kB)8@(7CXd0xSgf!7muT zYnqO%_y8$cl8N{7R+%>GJ_g_uG!@Dw1r?wE^*1yX$|eOB!&@bT0oS}}YP$2ENaDJ3 z_o;jO2c{%5g7DC4F4I&AddK-sE?m`SVZ``Qd!xL-Z%Gl8T>YAf!RyG1SqGB%P1&lT z;$y4((Nri~6;upc&9(^gD6$b9v)RL;S>Wz`#CQtH0ST#sis`=GM^?O;rb3xS056x( zR49`WRGg4%A6c=TB;%{}>0boNc`zN1PoMTNlWR$yNiz|>&1Vthtuz&C5oCbpcpFWH zG7~|?e-Y#dX<8W;LGmV;TGnmOBl6j|TZtc{ML?~*{~Q$c9L{~6rb2lbLB*#VJVsNY zOh-^LKqu=~;$M)>(5)dTRLZ@T_;Ic;A4xt(vOqc%LB$7mmK>Bh6bayEB~6903PHsS zch-<(e6>FPxWjocJrapK0Uho|B+sOo2r53fb16-Q!kqwK252gjnFuN-?oeBaM`>Ca zaECX+)Us}KPTZkCPc6PzDc5)b4psK@;(K}AJuuIyC5m0t&{qoWoMWmZfP)| zRJsuOMcQn3{vdb5)wtJgWoxsUhQ<*t=T@1k|}#m;Zk~MDTL?|JSh4D%ndh zNSlu3|3}E_0bKdd%q_Xth~4%jQXj_J4>f}zG9T)NGJyXG;!(_r{{#xTFO$Mw^!X*| z9S69Ys~TXJXlH>d;~z5WWG|4b(*KQpO0P;kOdimSqUElH_nKVm(U+|-1wl7g$aN7E za?2HevE;g6s;x?>_UG+|I-ilITPc?M`v|p9t)E7NofsUcR))nAKIvk)gJrUInXi_o zqcV4=S(2ey5Q09brJ(T_OVCHQZ@!YeUB12K*G;eFpI-|p3zj&&w6jfW$J~~IuXWWp za_8o@400jmE~_@WWnytzowcm>r~05WbPv%Us9RrjgCUP|>rf&dW6_N*9q_!VtwWA) zGA*RE>uGP~uV^DUZ7B|SFJzT+Db8aaNFbKtAS~MpUaZhbF2#A+qgJsLM@Aw+OL1g0 zs-gtPQk>gCU`=8v4*t%U;(QIC*isz!)VZZN$4-pH4VNB^aaNX!*A{Ah-2d16IF9x4 z(m9sn2=Epa^}t0Y!{s5kZByP`=v*z+CCT#jGV)L5(0>f#)xD0{`8`+6d_SqAd0l^X zywP8()*Hp)2CU^_7f$wXnS?c0WBn)gy|8cHY5jXnIjO%=9_$}yZ{cNs9WF&)3p+P< z!p$f3ekQ+uDL+_0FkBsi^$)lx9`=8b(sitvS)P)VfMa7)c%Jx5{AOh9W+s^Z) z?-Qt zR1$nCDZ!Y^WS!5Lj12{L?c80c?MNQSXZ`9D#4) zeKcGx)^V3pRK)!raQP|Q0g_yOS!efWL6NAi5NvY{(O__*5y6eqaPfB|DvV9;E==~x z-toL@lj=5aCcBO9=ww2w^MDGbaJy)>GbPnCjYm@46Cxj(lX^cES|vL=0_$|-q?Qk3 z#^fB$f<SnEh#M$H^^hW&9u`YX*Ln zCCY@;r`e};!s!edkfQi5Do*yZJ&cgXE7zc-@?Jest&L(Vm+}WL5u1Prtg9D_?Z+(% z(d-C;|CF%F`~pyR%LU9xl$nmI6!ZNd%(E-Jd!d9KpW0nl=o5t$ zq)*zQM20{DLr{i51{O+Z=?no+FA*7ntAHP#A$U1Hu?zuw%AFyg8Rr|0N>6g{5Fd=^ z-LUA=EGF)7oy(WLJ2o4QB<C6r4y?dc1k;iwlhc1XDaPjCxqZ(O(C>~zG%M0sHF!QvU5YU75-)0{jZBIhKTTL`8RG4!o$`fAcSd3zEGCG z5h)Pu`tJ2tpK)}fxTmop>ShdeZ|sfE7%tX_2I}P<1MIMf4N>w*)V*;dNC$V>BPej) zss4EbC`#wZYn|n-Rw2`)kqa4+9@S;VV3OT*eO*FkpQm69-N`Fi4}pG>sCTJhLrIKo zzgCidPr{8WwbBzG1GUG;!aqjGl7s6PV4qwWE0M(S#`^de(AZ42#A-Xwl38z6v+i%x ztW&XBr?qO6$!q|e459pZ77(U2ZtCJ{=_h7htu_B#viW58nv#;TU*(Us zkfbt8N|BmQY4Ionf{dBlG-(Z!EOTuur$$LpO^ub>SV29CnLqD{rQ$P#Nq1 zPd`Od@!-W=i^*>N5#w2VzsLt@S{c@2az;%p>y|AeAaP;$=eTP&!h!wlpxFuh$pSzy z(K+l7)zQ8{vqh!;AB3Ww!2bwMh4SKpijQf3m!?9QgP>vnf7r&yCrIMDUV~=6SR*nz ztDi9iS-9+>Q6E{)J~T7>3t9WPk>xZM%8dlr%@H&e54-VqBWr0|8QchGG|-LEpQmQv z+@r6(b)I_sad34lr`=RrQqyj`p0VTKKmdB@(_g$+h1b@#9Bv!3# zr>SzoP40rC>i7zo&0&7gI`tZ-6Q^$DCt5QVvJcv@MLj`M1d43KM`n;(p8QxerDzz^f;<-plQvPIQekf(Q7EQ+ zlQjaqpQ}LP4nb9B2u(xL@lQ1Q`5|9TSXq;;C-TKj1MH-`9@D&xlvI?=e?#WAoA^*H zH)A!LS=dCmQp_bH5qpS1-K-STqOp-aTcoiehkwR9rRz_Ty7pXW_CQie^VWU5&Ww-? z%PVR*=OhU1@j5l(?-Qn6xlVG>_hl#w7~&Ir{XaAnDqs;*oaqY2tJ3mMNGf`dHe7YP zbzE&DTJ+jlvVvhSqKHUQaSrGJ23^eWz!fSRi@${2*xFstjUEyFU$+=I`AC1pO734} z7c@N`ISKH;(1_HK=}g(%U@Wbqzm%pz4VeTLA6^clsZf^0sX&yX2~jm4f7Pc~a_CDH zjXw&tW(@FnWQQ?clkkf?^xFVZX<8EpO~V(8rC0Ik@Ff}>#)Q(s!0tXKxOc{crB<_e zXyoDuL|K7WtsMo3Ny!BXsJKo+ya?LICsr@UCpNLlp0Z3#a`0KjJzM6v$zFE%hc`}| zQ*m{@x;8ha3aEv(TJ$4(Ck2rEyJ|}#f|dg@vS& z=8YZ2Le8n}CIdlmPr^+w2sWUoCkWn5Q=wd!pyC69QzVs+fgtBVc}9CdfIge7j4Q4q zH@0@w{ck;9(Z^qsA|dhbFQBL={{1aYg~C5U#RvcXk)}c!5vPJ4!MZFSf6zTb4lSvo z@hhR${Lts}cpUS73H7Hik2^aFc2B}566~ZUfyaH7;5Rea$qE4MWVM;V?vKzA4t9US zCkA%xse@pL>Go)Pz>cT!rwiKP9O6fZh2dm5zZO=Ro;F3hb0|#m68wwsu3oZkQAa33l6| zs3+LfXet!g2`WBdcLPm@G9pgJ0e1L9IM_M0q!b)4g<7W_>{xf_VE10AKMi*50||ET zgHI&bNlOB-+fVSD8SG>Q0Cuw4Okno_G=ziQC-8}Z9ee5^*x?GZX#zW}Do5(migS2v zj*(sR1DZDbLyhbn5vrCW$xLAPa8gN!!H#okyTi7N+st)A?qiMrE#Wa30{;bydP3lT z(o`t#C8#(dP%Q~kn*TjXDl-l$Qq+WgoAhUZ#1^kIeY0u6Bz6fZruN;Z!X8Rfp|C4} zmmZo*R_)s>^iCnkWY&E96?%SJH}&COrT0>j1#${P=)=38Tt$+~EUoG6C#J;QEA=WQ z8y*rKU5;8BK-i-hzrxX!?GdN_$=$p(&CN z4^5p~QVNd$7F0Lwp(z7r9-96Qv^pJ{vJYfv`bGFehNjYzAT<55K&{N7sjL7(Q(0}M z(DWP7J|3F>6F#xfls)ARO_d((jt26Ob0=~^4zMAY>9k;@^@gtRCoKFRVSznmVPP6J zboHD!I#?VYhJEsFw{)#C7Zz9r&6wJMQ`d=BJw1byx6Pip_Himl8^R0M^Iw&s>ADEY*6xE-m$5#p*}3X`0tIE_c(6ZCppSH+VLW zZ(dL1TdK!AvE@J)F}X~@{iBk|X{1EReFP^#(NtXE9`v10Q=#GlLB%I7*h*8O;sQa% zSkkRd*)!Hnirux40zm(zEy5Tf$?Ls8XbDXFBie}#JA+I|W)JjHs*kvDAo(Rnj6&Q# ztGeGzQ=wLM2bj*gX(}G3W31|)%P>v$LGhRBbRVUuWmwnES#2HhSldHRfCf;DYw`2c zx^B1M+iUB(S3?`kMZOreoyk`RtG4hglHxr66~Jl6m|L#vM$$aM{ug}0Kjpe^e3s#~ z1SSZle=RWF8BXg5aZk&-?(ah*jA%w5glAjV{Ww<1@v|$nuKNj#p6O4*)^-031vqHd zVED!^wwrZmD!v$(U+H^W{|kzSuj^(iWb3+_TB&v2a^2vn=S3g}W`&BT!br44IJ-Qa zdjt=Wpvb=pUBPie>fjS*b&dtyMLAHgmvs9VP+n~@HbOi0p|y@hv!5?g)?g z?&;5Ncf2Q)DK#;IUSD4qE^u3}3+FtjsKL$<>Em-{aq&iE$5yZw?D?&UyPgyZ88}Zu z(bSmBy(av2nhG`M5>$Nb=$$kb%8ob{$i=4OWBf%&k{o(cMdNO$HDh4NLO{0Xuj%JH zdGz=oP;92s5ly$BlnL9vf?upOlcQGNRpKXWyOBabcMT1?TCF*-cBPHAMzv{(HMR~2WHsI?K>dlZ2?_aT z#N`R7KS(NRzOloAYDmU*vw=(P{ySkS7)GClqMk51J2E|$sR7cJ3o1?+WxOgqFDI#F zMo~s32Z(YGl!v82R9RX4Yt)Rb-9_EWSR`b7RX-^iQvSz7QBNp6lcqvJsi5Kmr5Dju zC@AGr07?xpDg(mb!vWQ)Go|kMF;HZFKqdVn$I&u0-+`lsSCsG>!?zMXrKJIUeowfA z%};Ij`m@`T{#Q8aGyeL=?Bb2-G8NJR}!53~W3 z*Ox|0a;w!8NLM#`(=&Tw<6DwSny>FLHcrcCtNRjufN&_}Ei!;8VJ=I~&MDF7%NzG{AxDiW5*AKRSYS_CSeS-|KF4e- z!a>eMFRG4>ly?vZHy>)^wO+~`*!nN=*`-&~!w*x3Yd~-ih#Ck^^#GJ*QHd(L6Xg-@n39XnPL_G)_j9ZAH4YcGhJbCii|0T3m4`44EPE<%atk|_{j z@=A$tf12)Zpwb{2x_4wmG!?4*$&+Rf-tfD z_B;X*@8-(#5##5`=9A+JLB-t8=H8I`RhkNA5&^t?ho(ZAgrMTo_*^z%)Zp}|B%RDE z7j!ZPL7W5A{g5CN(AWM*GE5qYpyC5Ei;gDa2MS~YcsYcoLK%sm;tw+2G_4FE!<%4g zSvNQjkU7AS@o?eFLiL@575$Y$m9uFsDO5QFih82TW||7+LIf2bclb)03S}LFih(M# zA)~~E=ib}FepZ4UBZ=#34uTR!C8Jk~nS!iH-b154vc8pMm-H$^);?b4Z8R0is|481 z2WcuEc4K&znJ39E2T#gC{*tDW!Jlvz1N{m8d1^<8J6W}HrW)(DyGl?`7OWT;tqxCA ziuHb$Ztmx+dFoTmxsXvP4^PE6LSWr;M~7+)PYEhk;)~cg5pFT;iMK%8;!EKlQ{lbkmhhiA+q!XSPVKJK%V`hRBGkKvWF?dW(4 ztK=Ea^p1|FEqbOO3ER=}B-E90N5`{JROO$1PwHnXWIH;TTK#r(bUbMeHicTI^8ILr zxSeCk>ck9xA{1q8=jgT0=jS~wlE?IqvRNT}OGj8C<=PI!#sqEacs__)lUvq39qYB_ zi1z9jeO|%X$8l`ysW$UWePelyY^~4om>1}@%{tRdWQ-+J^kUM}NIiQlm^mq_qC`8ddG1tp!DpZ^zs5pnnj91l}caT)F2eOc7 zpP~X;blLiL3<0`wI|k=KLB2hYuTO+36N}GBZfxz&@8Cd!67N6rH}d$!GJ0tN_4WR%-_WUYjre2^zu|(R>r1*diMC zlw}1<%wQ+)=8JVI8{v(T#}Fu~sx#N7@YZU92(^avU;`xeD$^LL=S~Df>aSD}_)lR4 z5~b~+*=vEoeQ>N2riXp$W9+p+k^gr#7B`~wvA1jt3lnEuCu<9Rd{3K<0z zA7s3ora~bjrvk`mWPR{$I3zmtqf{IJ7?hSD5?gvej)>Pl(``i5y`J1oQG@R!AWCZj zK>Vrb@|giqRset~tIY(6uY>k+KzuzuF+gNbodd+9FOLaq5B&*ASl*c}amu))sUJh2+SkT56h z2w?6m!EI)klNA8W$!asf+)2R~BPF?Tzw~n?c&Txo5(^mnM}oZ|WreX#%m`q~~&Eb48JRky#<(HW(ncK~YbD ztkP5{fD}}m0GTX!Rwi&gNhvc(CX{lF3I!*oR@}?0-%4^pCb0z-dkL`I-XrJ3-K(hI zN7JR206V#JFQfiAO@+c!LB$78zd%#*usK_X$(m`IcXBSHeuSnQEJOD)>hIE2+RISk zITf%eXBfW{DcYVWG+=v*ZZ@TqUqDgMfbEYo6-qdQijRRU>ZZ_!4A?joN5F_{2gt_SCu1ZN0WI-8*=rX12BZa)fW@ERIoUI)F14(hK)#yi*9i738jWflNW% zmZXx-&TJcEv7M)Dt-Ki>xMQ{*33I_Q+Yl7>jM*k=DwL}hRGcxJz3%_@B$>(`B=vTZ1ri7Z6;tc(wf`TYsZgL6z{{s-Dp|FjTKoScl1^r|d#wHU(z^mrDmqeL zCLTn7><%6p9sQ6L3Ta5+gQA|%(UUY4%8&#VpXlgWnhIq|oQfkl!XI>K$e|@wG`Eq5z?XXp^T8ERY8QbN${RILXs6gge0rY6d@f4?c)*B@%Y3d zB=(d$LQ*=hI~~YFo(v*a`T`qr{cj64TAvJZTEfB$6BgK078a)AWRTUHs>8)f+k-(4 zu@Z8skQv7Lp9``?Biyr>kL$P$M6GvTuXT2>unL*MAn6g2o^2UAuIQ`OHYa47*Y4|_ zpRPp)An_qH)sp_^Qd8+Ne`CK^@pCod#T6ZTp4OoR5|3ehykW*nWUGvKs!7+k zX_D7c9CwrU+V+RnLYrG|e^71VGFF}|z7Wb~L=(CF0ZDVvcrQNTpK|*HK1*-Y|07c%9kIV|S%Pdw~yC0Hm59s&oT@QXA zE64IJK~Y+wX&Jh=7tQUsdpE_Db+f}dYO{j^6l3X%y^2$PX0E?CwmL|aN&(ZWI9pZe z$OmZ*B;cXHQ#$?~sbkMYEx$=B+4t)>TS>(pEe0-aS+IupHmMrZ_Q^S-xlq(I3v@6| zg&M{QD$Xnr<5lVS7?O(KkHdECwp-eQ&RO5+AmCMQbl@B)aJPpgdI+g3ES`hh*xH@f z4f`#Nm5_Z7FCwKv2ES)PQO|V1r8E^P9U!Rqqyq+MDwG{@Di9eYB2BL;8v_?wcTPM=zSsK#WlDkLGM8*>Ir&}&{QaA zC8+p--gikV9Roeif%1kF=qb~RKa1Sh+6_&B|2HWT67imfqMnF1`#7pskwzq__#obL znhIq^oQfj>jz8%BAcvMz(fEB(Yks&(dpnME{U8Sm=gifdC%^|1;G`7+z}+o)%?xm| z0suH!Z6<&_8`{SK?i_q#0LPwk1Dw)<-N`^6GT|+AJHUp___Sc7b;5gd!onp93+yQi z3)7JBK7LEBI9{s`73=kCt!>^rG7&mmHf#F(z;so6I}2U{`RhH{D+@ku6*9vB(k&uA z+gx;L(T6a@37O`N`#4ZYD`I+%uD&T@$rUenCc~9n;x}M@4CTzDtM_*?!1I}|pVR>6 z&NdD7N{zc4xYttScR`z5rp8rUQmOF)D3=juWNI8qb6EK_KH;A-HIB~`Mx>emMhfs6 zJDd|nrad+OIYCV(Wu_rD{uQjURcicUi=OEj!cya3g1R!M#=ikY!&Bo-g)BAB)asWS zf1Y?Iuq@OyYZz%K%7e-%Z}W3OUz(?BE;=rV z#y?+xz?5CqwE1aThS^?8nRehtmY}y?3}R$>N=D8=YF$d5N}?a0ZiiWOI)e~!YS7~2 zx&6tOnELn3C(KVOX}+oBVS*_fd;A%gT{t4)%oQz=1H+Y2)HA!VmZm}t3!vsx*GAB+2@(i{l6=L8g`gkRW=2X#mHq@Fi5@azSPq4T1l{`?q6KFME zLAX2JJ_Vo4Fj86_pwC<(2WJ@RlWvz4KtLd?wSxz*bo&RPAv_!LA$(%l2=y(z>;&I{HC2H)WK3&So{yjjji3#RQ#e|)A5_3 zA_;g$HrppZS~hC-zgyUT$*WMW=s zmVgbJZ)(9t>%{zU!a^}&fjwnmVHy(i$8N0^%45a$Ir)|5c-SbGF&%%^9kXW4Fe>U1 z+vkSMwG9!h<>`$Yh5AnRi1$yz^H#VCtv4Dj?kW$#ZIyBjx7m7<>)exElkzi{%}qMtxwURvncE`OjEvxX>t6s)gZVZD4n`wzF7EsyLxH zsuzpH$sL#Ld!y=jgI$-&+XxN2M83e*B^P8?iiO%(d2Gi(tXrA6602UwY4?@AC0mTuf;{8SEJIdi}bTV)U~7h%K=z3IxtwQH}J^% zVnwQ}TM&aL_f@L(I;gx}*i{6T7O#=quj`FKPD4A#t8k=WeLxx#G`L%P4<#$r9p=yY zqI)lIiFgh4c^yN%CWCIa3IzZ&(z9KZ9^B~h#I*^T=5_lx%VYR}>6r(5SHg`eSoNF- zQX+}}9P48tmN^f!#A-Xw+goqd==vjVn&mb7<8GFIiRo20fM@-`zV!e4((+K}d?{Pz zZQXCX%rZ*xjdAzSLiLSYDXza#o#~5YXCm+L`T`V9jab~9?;oY9P$L#W#b?CwJ(>zN zVi8mf874z}V?I(`7qg%%t}|JsI%P&-^BSaT@8sgyf2sq^yd5cCfAVH<(s7O2;sZho!sQ7fOhiEF4F$yY%e+om*Z;-@w{q8f={5n%m0OAD5`U#R<(uoNw zKDQ1&LsOw{9Sq=QZXb!!9(H5gI@rZCP)VN?f2uxr08KB${ezs@TrOpWJ74BBbpC5d;$eLTYy6yQDrWPQ*HWJuv5YajPyw(u8{K|r)q-0lnqqx3`=9=;_TcN0@hZ&)%P##85@$oPX znhIqpf{Ni`4&bv;#-c4DY3J00HCcKy*_!MwC&yUnbzEaUvix(h^<)4dsQ64peVC>~ z*+l>^pQWi#b|I)Z^}WQj4ArOpj-;1a^A^2~<7Li~>6FOHoPZAa1CnvlXap4>*!d+* zg@T;`UjB!sLK%&qV!#fWotwXogzF5@!<%4gSvNe7nZ(1Wb*V1ISz;8BsAIiVz2r!m zX$pB(K~YcS>8Ghs9!5~{@s?-OR48K+R1D;q%hmuh3A)pA;sYhjOUMT3nh%;|6m&AW znv0m40wUZ1iI+)+NmnDN__&(gG!@F#1n_bbO~u1{3|BLktsIyAPyD4!Kmx|wy(fm?==EG3b)6aaKrb77{LB+?N)6e`X z*?+toq#H zG^GqahO?Q=#~kOsU&iTl^x~55#l}k|fKzD!P)_GWDC+5S&ZDVNPDfDjaXOdNR4B6% zR1Bwc5Fb`s8B? zXeyLt2r5o}FSBh!^{abGikWqvqL|ALOfN+at^>N^LnP~@;Rq@|Nc44@3WY=gygWuz zp$tb*F_4HHTt80J%78_@38t2H)AJZyuW)al9a`>6gk;FUVXFkIe6fl$ykoC7oc1b@YsQCDq zAJbGQKNG;qQ#2J1yYcrkf23(;@H3pzTz+PK_}LIn_hVI)xF7qyaz86h${gnG4@EuQ z&uW?q<$eSeANRAKrb3yKpklb6LtCHEA%yQ7Z!Iy3X-gtrOg1mGgR%JdQQ zRU{wW^V~Ia2HdU*|I^vRLw)cyYy=kMdFlfM6wrjk|PeC({;>)(=Od=>ulE;vbSL9IB_DAaZo z8&geACRbNC@roS%1i0XTCHW;yL{RaGN`6jLp`wxiUVcYYp-eg5b%XG70NOM z6(i7?gU5C;(Yez;8r-Rx!lUp9;es2oXiS$ImvvhpOrK|OiP1u zK_7&oo-XLKG!@DP2`WA==sUqDl# zx`v=)NR}ZD-pJ@qidb;>3X-^P7eP6ZJaG3irl5fFNPw&xB)cR&3MxKs=yfy|$_)kZ z@)nwkhus)%XnE?udf6Ktzo?%0Ub+<-926HpE(f)L`lNlA6IzgbCRx?qC>9^2S)`oJ zr=X~(vw4`NLOB~j#mCuvo2Eh;ji6#Wo1i6aKO>1}cQ!eWPx&!ZP=K=uko9vUyQH%b zRD7JxlGDg&gmN|kysV_Dc-W2MY-X;LJr15!Pg_G%$>2;li@BW1YV9hHmREGR+{-en zpkz7qUJ2k_S^$)**$72FUCkDn3gv196(3jgDw+yqGJ=ZfYH+gNJFXcgiD!2;IaUl* zn1TXaO@OT5NU}@18bQU!)x3kILb;j%Uhbu-c-W2MYL*yR>Bv54y;VK%(=_!AE{L<9 z%LT1)-~Z!sI`ieHl2i3UG5ILXB;{rvfuf#n=6f_1%FPHWK5pg-nhIquf=UiI^DIfc zBW~syrl0^f6Cmq@UP#6o9FQ=za>-sN|5SbMESg>h z$HJKnbS(7e@hj)dm~k5}IQ$0O$pi}y-M2Swgw=>^Zk)P)s;4wpT+?y{{&6JaB#(yw z9|QmIhX1eGHf5~8T7g%j!9{WPes(`!Kfmz4KGmEHi?qtaQ}O+9(Mhul{ur(fO~n@j z8Eng$eDR}d3%?~xu@X-}xr`T6mb%z=&5Sg^fN~Tx#s0i`D!v*>vu9{W>DO?VqP$uQ zWV0KH;{9mg4!5NQ(o;HHN~qa$ZlPX;3*|P9Pi`2h6zcU2+h1c|Q23(i*hqQDcJ9#O zW;^?hQ`-nmHZB{F5Uu--fJv+rbp?CUkx=iXN^xz;dSb3 z8Cz3DUGu29Dtv@i1a;XPhxAWPl^dC+TcK!k9@+oX(8C$vPd2o>&hziwAU4n;pcoy0rst2xk zgCbRYWOk_8+_7ju5uO^$Bo@IXg;AkWi5mO{%}91Vp?}}cl|Q>%P<3BCt!q~_`S~GV zC9HTJT&^VhDEDIV;?%32c)9kjxo}INR)E|!+_@=Tz5Ysx=d&T=iTC68JbelaB|Zk@ ztRpqzqK$Viu$$cz-K-smSdC?)_wUm-a=QChCo7 zuox90xGJ+e9I?C8@fOmgWFL1@@dFykCV9uyH-kj+7f>%4^`lT|Vh~*6tf)uxO8DBi zlQKQ08~^=&NV;~+ zej7}kwH6+-DCE2Z3Xzb3f*Y=m!hOI~@w3393ldt$d4H%oK+a%NS=c#)anQLPXZA+n1iW=3Z0geqW(=84)s%y%;>DI2Vy?tNSMu36#eG0!BP1*JZ zh1xKLxM0}qI`OF3w*zjEhP%W!z{Rm}*EQU3-57Ejw7gYK7_h?0^L^y^a+p=*Pvg4bBoT}HHajJ|0i22*O zi6rpQ#sAhy{~$!l3>;GQz?&H%N9qIBpt;+@R+HAuhCj5X{CYZ?(j|I=vTwUN?K|^( z+Za(`XWo{&F-Y}m>7@!0yFNZ*!S-+&B6b+DT`)0-@Kvc6h8d_~J>^0r;ztkG*~iX4 z@3@IbbbrS$N>T@%ZuZ{R-3TQhJi&4(lfHHLp1_uk%M&=hId>Y2MJd}R(7szNZ6ndZZn4RI8BWv#6Z$Nk+dMHkSgb|W5thin zUI2gXuGV(K@Vgg)aHKF%Y1FZYoD?~`L94rQL|Z+tyn_Wfn6uGU7Y+4mP&yIOym$G-m#>h`klL^y_h z+p=-lx8s|aOqX3K%eSetxBPqCh&9mi$C5iiq8{V&0`Br5yDBX|`LH)C>?)Kig~3XZ z8-6`1j}28OhKrFJ%)_h5s4pr4zBs#tb_t0<0_}|w)gOY4P;`#}X3|P^4tyQdIjoBo zL_4jws;x`UFzavK3$zZi2ny}3B-?&aw^xTr1ZH#?TVAdXh|iDiGYk=Y0JmeD;?kTc$R}Zmv-6qHvH~3!V0wESLr9iM?Kb&*345QFV!)~ zDM|mzU3DE6FXK`jST!(Og<*$Pv~_G{9!4*XU2lixyPpa&C}HfsU@}S>JH8Gw_SAXX zqOqy>N}+SkG-(UkCNO{ftA8cJG5VJ+ z8(05wd~={v;YxjWk@i-4ej6DD;>sn~fz8TP&%?x20U<>*Rx?+tS$KIQ!rjkKV@@6Z zEZwt3TXQn+3^E@9CwDQ?q|6#$PnTK$g;iH;Th(CWe%7wmpXM>^Pe9#XW}OJfFl$>j zF0*!gbF_zXXxdEGpde%Mc4b5fTDV=^w?bskfFebAMRP%vSgPuU_IK@j;h(ipX<#qh z2GfL%T6u7yfvIFX4Ua{1SC)z}$gbhE2%Ikn3t`kpZ1pDs3Ct~yRU1*yu5y7TnF~Wh zMF{qAkUm}*+F969T;m$aEYd2ItIdpeN;=Pk$X!Cre=z~2`Xas#>Wk`VK&Z<;2XOI5 zv$ob9~5MbY0|E~y+hjEMxKH3!s{?{hTyz7u)EwS z4eTh6al~&KI>;}2*5KqCX6{7|=%nh6;<$(-z%5nBDw9!R9CzffX*%3*B8rz`?JZl| zRA1u^^jn=kDqKLTpOs+$PmryOu>bFwY*T&z}4 z$56MImrBHA^deh2u3qH$W|{i!HIz0+!$eU_=U*1`ihvnV1(cSZAp zX)|(Vnl_pCef}$Lv>({#Z{`PW)gk!{;{ewYk}Lu_C#t~DIPosN?~7hs950Ryv%v!I z`)o(hfUHkAg!(uHEhFWjXj2h}B182H3S+~VH5Q9kSR$iXbN2h>2vE_{lfRYtdP4Ln zBa+on$gv&~Ux)Q=7OGdw9K@5{m@m$n^E;#=L9xNy+%&1xSvtF<^)g#yQA+YNV|;NueGwN}@ctR}bi zLJ}fV)K@h7B}DqVeIg+#I6vv#%q zG!KgX5$g6ru|zmVd}_1N$RJ)?~7X8CEk_)uxEy?+X%AhZ2I~`%9 z#_SgYv3jEbOXMLcgRxt&HrXg)M8_W4uE>FrTJaiT_D&nujzknrRePg^vHon+DqEWe zGAYJjeNe~|sp0GCvhbH!bK#R5~=9i$4(=>L5sDKU5QdD7Eb7G^)=IqbfcfjM@C^oPIzQ#J?FTJY^b0*qH z-LM3*0-IR+*x3t(p~eJY&PW+f#EEv7;dBl-c>#qw98HYjR+m?+P0rW%zgnvY&mp|t z*`>f*!?BCn>{M*{tMPSb#mB;M4yF5D!%%vUp!Mndp67G(!&h-;LT)j|T`&S{7 zmtFfmnW$1-8(&XX*PeZjSy$`+s&(xdP>322D6Poe0P1+O}+5UEA@^d3x7I zb+_o#wAE-mEk#51>qD%5omf}Wp$|4Ybn<~#e|L!9SWiy1$m+@V@9lf?5!7gMW;p>Es<3$H5Q4##mBG z^OpYVc%#2mg~_eq1}vx z*NPxjOYmPLMM56< z`~@hQI>GnM#E8z+jObCC3Uz|7pyFdh-=nEeM#QOr#n|`e;17DRl0!?XXk3O`GafU_ z52CzkCRkK!Psq<7{R2>GE-~EYR8x0d>j|EMAY?*xI#@^7qHkYe?CU7&;0?Ju&pPG!+U% z1r;9*eG^TEvL;RiFw_#HG9vsU988^hQ!0;FLaq71w2i;yhZ%SDG7FY`jx_;-7^z$f0j02>n)4N%PjuLZ~hm+rb9H=MxE2!SMMr zDC!BH&(KsThbO4`z~|f-nV!$oa>wA4bD(@F1)s{s;(te(+1g#u-QY*UcQcFk8-5;5 z%7ui^BcP}!bgrYRP|zu;_(11bG!@E{I2C|SO^C`x;IHAZ>C~4}b^ItOF+Xe)evw1w zHfVebG7VoS;qq1RrG!gqVE~uk5FIo#T*?XnE@icu;BpMw$KkSyPYf>EQ|I8aPaf_| z0HBecJ&O2HRF(rI`F7)Cjpv1v`qKC)j}8_iO!=oW`CCE4y2+dV(sN+>hNP0_>pO~y zTuW0aml+6%?@IUy2E?~RQBOep2u+1@V}gngAU;S^=@=k#4wRRq08yD&{5Isq2E?vz zJR&&+4ZlMQg+#+|LQzjN{3%U^LPJ5t2MwR5sZeIbsQ?;E2`ayUKk0rUho)4~__a`L zekgQ%KaPUSUhF_Y>GmW5?gt-90F)L50C=O|IWqvt3IG6QwV41gg7$F$JQAN60J5jf z0pN++K63vQEID4(YRmzJR$OFMn#Mz8>$?C&lwXD~B~nVu0;D`qaGx0|Wd(qgvf4~Y`7LM&N6K&G z6GKY&)H$R))jI9SA1%oVORLr#h-oF@Qx&ICGsD47zZ4ddE8F_>q>>I#Sf*rTJJ`Ur zKF=kL1q0}_P}CDZmz-z%C^Lc~ow%Ul1W;?O&q|U?X8dGSa=<6&K>1b*K9!xt|AU&b zwHvzD=Y^z5NWq^BMLp5;B{UTZJp~mX^t^(mLZK(80_bV4^}!#)!PBWFrQrCdpt}6v z*~U9^0IdT9DF97*NeQA2_*#Ofv@ZbBp9v?B8AN3T0HU(mOd$FOXdegBoA8N&D0}K0 zh;BrW>pJ*^NUIw8*Y(7QeeTM0K0Qb6@t*nH zKTj%Y-r3RoZ7ad095NoACx$aVYimE5Fc^%tABUozc>6_~3gs#V6(`=>1J*}LGMNE4 z_kfl2pd2!VxXR+EL9Ig}hUL>@Zg5FfUIZ*cq6LlR` zrvcY-nWDg2$1ke?YyrjS{U;O5UYu0Yd~-)()*&g|0SC^Q4kfGw1MC14^#s^!Xet!I z3Mx*3WxOg~zm}wu8DANd90OX;f%3i-yednJUxnP*+6^7hzK0YE2}$pSqMq=2KTU;# zS3$)GUOz`up^S)AaSUkj2i-m7(2^<|zXWQ{53g;#BuCco0W&jm*azH5OLU~vULY1w>`yoFm9j`C0J>lelDb-6zsgM|Y5ft^r z&}}po3PS}I9}L||Q=u%0Q^6@!EeQ1`ar_7H8Tmn!^o|@rZ-eHi0Mzo5 z5Uk}cYsV7`H7^G=1rZ&$V42r>kJ%Qel_7J zcx?F06>)0W&*^Ep?w?>H{lZlME2A< zKs-smq0=7}sWfh%US$qoJk$cl+CXwSsR)>jvx9;zARPhu>s=ueNDd~IG;ixHNE)KC zUFkuvX&>&Hu`b&TnD?Aa_zZ^52`K6bowv|bD4!>&_(11fB$bXqXMmhOLUKUjoSNhgair*xyp9_=w4{p0+o0C` zArys|Jd8RXB$5iFOx%>AR4;rgLn&!l5K0XQ{xgSCvH}RDWVM+>sWYH`Jd`>UpI9ix zo;nvwoyo7r8GtLW1_q1u#sIrOz(1y1M|4Kjy8j<7S*Ry5C^sX61q!^U)2!g zWuPp*|7420E=wwD{#i%kt`@Seop4~LqMWc79Bvh%sAssfo2EiRub|=+Zrwyu$qcu7 zGZmZz<$)=PRn`^{BR95omv@WxhHyDvU!__PN?P1Q%7?_L_d!uly!|9ig~D4w#RqS{ zNK>IKic)p>PY&DdG4BP)5SBv_gR6 zON2x+!?COY;8<3h366gS4dHP76h1LHW>1}i<9_a);nE)hSB=%)M-w0RiP~~N?m;fd zt-Deg$&Gj-&7b_O`ojE|ntdS?kj_aeX};lk0Hh!b+qu4=)$N4=>5G*Km%(^?FckH~ z(={{|%KHf_PCT{mA3T*LlNnGsnH+;w!Gk&abKfp_5y=9%Oo5V=HAnJtl1gSl<&8W9 z2R?W@N^(HP22O3b6Fsk{sZg;&057-ERI>JtR`(jdog|l8`6jvP?k(=y3-2dc@#rlo z)S;qW1qJa6q-Ze7p3 zyt)jZSiH)fIv1~=I$GXS93B|2!NtmTylCA!ZY6j8TeaqhU#&f@sfyFdqGhgcpfjZ2 ztGKoY)S>r_OmXe%q>>Kr_)qa~yVXOtNOfN^B$dqC&l|r7$mt^_2h*kV2WcwPr1OVqDp_@IAL;OIl8mp?f8GTl z%7R*Pq*18tC^n|V$q~7Gx(c+YNLqnUdc~u)$l_Q4U-^>B?+R}mZ zoa6^Ic=m@1kzWSV)D1pUhu;N3J8 z3IqieX8>#kJ~xq6d@=A!xYEnOz`TJE=RkQ#3IdgJ#ly&rtzGTde6C|3?6`-N3yB@? zgQA`|_(_@yg@b~M4=-P&sZf^0seoJ1gs6N2{;K`9x#2~fdrX4sPz-~=ev#Y|PPj#ln<=iRTMu$TbFCq4m+Po0Ckjbjs| z1H*+zp;9ftt?~oAtF@iQTEKiLdHR*R@*L1;9pKWc{xn#wAU=hD(&}f`Y36S-J544) zos(43;nS~LNyB!+frm}5O!y0i*n^>{C&aFysZfqlP;o+T|vr&gw{);s3)`z(NrjC6;yn9xrU}fSrDfJ zE(3(8yaT=shg7G2lxpMW02}f{s-Mr~AbSV!kpkIP&QZedTcD7HU1?`Hk0WG~8Fpm_ zIFEyMWrf}MLtzfPcjFU-UG~&D*jwxCZCY5yf9(J8;+o1-+<)aBt!EpHq6!nD5@6l8!XD6umz~vJp6&<1W z={@Y61Laex5vek<_-n|Gt=-V1?7Yn;D3~E5iI}sYs3&3`L{p&4lo4?% z;2rElKK>96nocb#1;?KR)#V4x)}D|9S0 z6!nD3H_=om4=1R&VG?-P1`6*Ysd&QVUH5I6!TuLddj>Z^U=NV2knkp`_$*g=h^9ip zTL3R#r>SIB{u0yVRo8!vq~~b{Y3*C|a-=dk0ag%aE@wLd8-Tg!3re{dukcRbN zP}DPSntKW5eaSVmf{IVvbO23-GAvHT5jWuvI&S39k}4VxL9O}Yrj{_t!=`m0j#SvB zfuoF?*28x)YLYeuQBzTHo;hlg6+qM^tIZTOoeS;bQPYd?iA7E9sdG`&`szeue4>E| zjroU7WJ*C*m?Lho0%^U@bl|km`WaIS+AHNhUkOszyFjMU>8hlX4yP0}7E{hMaFV;4 z@Dv;??S!J9vC{Q470Rm#Dn7B&?Ie}VAencPn{%K%Ck2hl#NrsaVbG|G#+Sp({7$!Z zALCy4exQ=_x_ZZwZuevGp>(^lz2J7Qz@{Honw{D0$_l{k%4##Y-M@y0aJTyqJ~6k; zo;v4t*VPNVig0Z~@fv@xOAc0(`f@m33x%~R(>`~B`6~`q)f?q;|5?~Tt|acal1e%} zSXCUR9WGAL`L8N^B4H`m;r<%~Qlqcsvc}>dU zDhrGM9c5;ZMP{xGnDRWDlm|HwIRc7;Zp{&{`=FzBG!<%uE2#JkM9!kAP!`0gfMWpR zDTjb>^$;wFepJ!;QBYcbKy2y%I38|;rl;^w^Li2vUj^SuIF!}|aQF?;88gG7tN`Fp zR+|Y9$Dn;24y*XY;E+9a4i0ua$ZrL? z>PDVvobiUFk`6DU<(%3sF>uoIT?seAfcJJN>Irxsp{Y>rN>K3uya!1t9Robhf%1wJ z;3?yZ--g`S+MRXM`T)fH4k-{4@xBQ~JrVDxG!+W*1Qj2|dzz*~nGmM}{s5(?yaB$} zy+IBQsiN^~q1OD6=kj(O?Ur5YKs)Z}B+%^#pGcsSRs=wIqu@6)(8&q_=w!8-fG&de zaiBXApBT`wrw#&Lqfp;DO+bfLO&`$l+8jWa{D45m{!pg90pzNib|#=ZC8?ytK*u?? zUExwb4Y?Jh9XJEIDPb%a^DcyU@4;*lIx zybfMYJDxI+!twO0P=9Ll$o;9r)33oN5>I6t0Z&iF=H|(x$_fBaWwn{`^k1MM98Vv^ zCx)l&sdISRKT$6Z42@6tLn?U^pQtSds#*u!Bo(HCb)NnkU~BTX>U+Ntn$MLz{Z&#) zhfm^5__Yz1U+nFlJe_+P6?Kqv@H3&PC$1hqQ=xpUpyI?;`?B;SNiv!JYwpX^IS4-6NF3X}eDNSy@Mr&pN+6Rq0=%v#gHxH$Cz z^Z@gv>IfeM`Rg4a(+KqaNhKY=ZO7z1S9Nw* zd>|-fu?|97kX$4nId~BdDu@RUdi3H+4+ub!FR8E+mu?2oRms_WI? zS5?zn{nd3|TB{qr^Hli9gXr#x8wsTfxqCPXZ;YYNj4qpSY0w0F^cy}0;*a&>g};RO)6W%Dfk}VCA1{^OKZBNz z<*ngKad*>9Ri%06Vr_oL9MG9aR3tP!gu+*7+Q}q(;w3n#sOS`~9*VU)%w#_e{>Qp@ zN6zy0n1-8YnM}0P%d2Uo`;sVtx5=iNP*Uq4>8QfYd8wQ0AW|#sEKRgbyuwtU5m7Ex zajiK0sx7cu?rkiZ{!G)-&&}oL8YVbON18_v#MPRBd&_OBd2u}8bc@`m5*Qx8Y zguBjI6kI_Kv#r9+x6@Q7sg}DU*Y=pYlCI`gnwvOeCoUl2i{GH@xM>{YR)s7VN{Ni5 zl{g!L_8qG*s60yS-9Qbpg6Rw&>t@=Chz7xmnUk9VdQA(RtA3)2sd%!L zcaUFWLu3hh4Jk4yVn}M}epj+l#Z}V?67JlUiJN*zRhU|?+sh9us{q$Wh9e!BWjH&? z7l{{1ym76vsxDj#%=C7V?&MOjxfEt`BxWRw@MTzmX_Wc?`|cyd5hFL7S+)VXrhIf! zgf({m&Y+`|G8Y0)J zvm-KN0o1GR<#E>;s31Dl3b4OOW(j_oBAXd2vC7TIza#1@nR}_T8B?WZ>rU5gXMq?C=!P*((>b+!6JBZLY82KSyp%5iA zYl|{rZXO=_R3Eg-RCDZ82t^+595?1M!nn+1Ypzbsd zbJ*9qs~%cig;=e0x3rG~X40&)T9|`OX)Az~j+QYVkH+JefPDGHy=T#%jjZjCWKYRX z_9y$<(?twb7S3T-0;$`!3=9CPzK$alR@0&dEAq5otWB6j=wysDu6pJ=-)R1j6 ztF{s?HXT3c_!0i-e=$m_`qL^FFtq1$*tJ4O?YH4F=tQY2dR@Ed`U3UAgD>q3y==P> zcdzGN6wyHKbfD4ye5_BeR!S}M# zTd0CB;WKjE9CVRt-I1{fB1d>02U=V0Ip)maSIMYd4r|+HTqakFX5KOr z&exx#EPv4?|L-@6_HYnPo70>&^Opa!e=EF=l|%R^@iAxrPYGunki?C>z)j*}1!xjC zh?~UUlfd37-~-|#;?_KHoA~+=@GY@%7|ek87)0Ny4poCGcrYfHdo;^HZwN&G_GBHlR- zyh}KD10FGc4=_P|NPI%%SY3rL5W&MhLM%K293#FYz9L>Z54=X)_b6~b@dNP_@zw?4 zI`Q~pz!Svp#9stYg${YhcgVvHL!MJD7SeN^^^FqJ zfr|a$JLFg4_7kR%U!&Q5^&vOk+YN;wcZJ%079qFG*#8iP{5O()PZsi}r~N4q@;6;> z>bnOnYe{uC!0<;?gmsk?&QJYxrOED=l<6=7V4#azX*3uMZPEiH!a?fVP>!{JsrIJ% zq5QGb$TZhB2S@Yj#bAYp+0#vP&W-rTteZwrIV52PweNgSehovw>%~);3A!S~oPrTW rVeBgl9897^;;Dhy4qsD2;zqg0;j+UiZxXMqQmpaNSy=R0D_r>pyn%vU literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.constants.doctree b/.doctrees/source/hezar.constants.doctree new file mode 100644 index 0000000000000000000000000000000000000000..afdcdcac2e3e04af1798e4ece77382e79f5ddc0e GIT binary patch literal 169396 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�VW=+1meA%w9Dowa#9eF1!f}N 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.data.data_collators.doctree b/.doctrees/source/hezar.data.data_collators.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e6a0ba83d14a173166d6ee9874c9128364a26644 GIT binary patch literal 63442 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 b)Oky*+h`A(Xg(_lfm2PyeF2eN`t$z};+sA& literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.data.datasets.dataset.doctree b/.doctrees/source/hezar.data.datasets.dataset.doctree new file mode 100644 index 0000000000000000000000000000000000000000..938d0aa44505dd96a203585c6a2ef80840e64a3e GIT binary patch literal 33604 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 P(~#8b{1@7kayt4iy$&EC literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.data.datasets.image_captioning_dataset.doctree b/.doctrees/source/hezar.data.datasets.image_captioning_dataset.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8dcc5da9b1af964f04585d0690a0f5b7e55c4263 GIT binary patch literal 49296 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 M9K+z4`f&390BT$2QUCw| literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.data.datasets.ocr_dataset.doctree b/.doctrees/source/hezar.data.datasets.ocr_dataset.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b3ea63852af80aab716b3dbca410ab41cfc2514a GIT binary patch literal 57248 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.data.datasets.sequence_labeling_dataset.doctree b/.doctrees/source/hezar.data.datasets.sequence_labeling_dataset.doctree new file mode 100644 index 0000000000000000000000000000000000000000..84677937210423af74ad38f149d88343366a307d GIT binary patch literal 52058 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 Wt+|7)3 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.data.doctree b/.doctrees/source/hezar.data.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6a6de533aa8d065cf847f95f599dd72f8cc4fd48 GIT binary patch literal 4058 zcmb7HTWci871pjaBhBbC(%QR(?8=b|j%94k*w~njLoVRF2~RFg9Otq$HQhCHdez<4 zuBu**0tv~3gNM|cD;Nxc{DS<0eK7dNV93w$Yrg90?&%rrE?6+4>(r^LQ{VZ{rT*6W z*Z&3^<)0a-oZ@UgWKoofh%0M$A`uoT&$Rv2zVdhb7kg@Yl3glM$dFsJ0gaI2B$7O{ z53D(G>N-x;uv)*Zc&KBMHOr|(UD|$NPpM}*I@SqqO_^K7|IFktVw#=gEWBVdZk;xi zw|>Lt&Wb1Md~CgK-JHP^ZRyDLg2r^(G~LSLvDr%EjN5TBVW!Wtmhq&}xT(9@W*jMZ zi|sIBNk2dMp+#iuh`A8O7#^vZz z$cs^Vz3M;AQzLJdmz38YN(J*@IKNp;XxAgYgzT^unBDh_Nd=Jd2;EtgRfxcx*S$Go zdcj?qzK5IAi-7d|_`QVR%lN&5ThObe^=Dq4UV{-G7}0}=MVgBui&~!YPNWT7U4&Zl zwim0pryWFh&C#`M19bRJ#wFBa^WAF-B{+&}W&dHB*^9F))6&>3Xii($?}{_%ho~u3D&hhhEsUs6tk;Zer2_f*2OKC^_PTeT=op! z^ue1{M1_N`46Hk*En2cB|8}fNTddg!YkpcYwIajM*TzpL2aV|$5A4{SJedMPD3XL} zAxk3A`ylT>8U6Nri#{0B?-umof_}fCKb&vS9~bl|PwU!aE;#?X?lEFd^ib9@ zN9|BOHCs80C9<-|D?%@Ut^DxESB6%M2u<{&Jjt7(Cc2SmnRE%BAi>>w@bIGdqdA2s!NDoX}M z)^tB$Nr7;03V2r(Ixn;x(_n0RGmh%y0t!3#01H=|r8x$>{=fjITwvI*hJ{Qp+DDoT zTn%)yIJo0-Eh$9dcC3bG9YYteUMX(f^n=!bx9~EgH zH2edqr65M~k{L_fhJ#X4vfufBDasWuA`#3}$EQO+&xPVadu2(HPzR4<6?=XTf+$vO zlDLahR&LjEff(DvWfUTz3^HuGU#SIkn_%v^FC3z{ECZ2eZnp^j-bI~{VzaqGppXMO+MGjmm1#B)D4tP*AIQ6v2*>+9l`=%xM+Jgf z0jTH7u^$GB2$}D|%yCEz_Q3Hz*nn~gAy!`$IgW5|gR-@%k^uTJNaAb?4%AuUmdg_; zuxom8>d2c2=0nl7@D~=GLDLo?ey?BxajtR5?GRcQ0Z&<+1bD`{EL)m=R6RsM)@15) z+QMw|?2&s4m>r)>5WJuw%3+M)(1B)h<~mM11CC%6sHO3^LH2kNZwIcP81BkKP zv>9|=2;p4;`L+}K?^F7kzM_XTqtEFx`jWmVOwY~gs~qOK7X9l5JzUV|3;J?V(2Gv; z6_kl4-2vVgH|iFkm=tEeP0tdq{V)c}9pJ#wOI#MJ^}J)+60Zk$fzIhf zBn{(B)#ulQjdpKk$6kGEx#-r){-`EWyYh8=eXnW;&j;kl5U(W!f;GFYTLqPH2NcQe zcPsg)@bJg>*NAt#SCKjJ!c<_mKd?!aE8^WoT#|IRdcq(mW{#iz$Yt{?@wxt_m<<09 DT+AXz literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.doctree b/.doctrees/source/hezar.doctree new file mode 100644 index 0000000000000000000000000000000000000000..35f66441e20a77f42d8ea571b3796929f8822382 GIT binary patch literal 4256 zcmb7HTZ<#d6`tK0X-1m+?9L`+cQ$K+<1z6_4mQDYAPG2cgXJX7g%Fme)LqgkPj^?R zs(MBW2_z2=R;V|(2_fVM7z}~@g8YMhF!;sb-;%Gox?3&n1w5dk>(uSkIp6utIe+PV z^2yOg`DYJxMk1XJSQMo);<~Uqkqq;Mr>6M0c=fNvpNn(bQ|v~|T!p-_8(0yNh$F?* z;&EXQ+;SsgJ*f6?YaSXQ(`Gw$s7u?Ai*xGPju9s2ttq=t{EtjM%2;^Cro3E zeC8BbpZ>7$8g(;<`%OW|wih%C)28iKdXDT?EK**K@-ef0W{eW!+~9rgJ)0uZPWSCF zW?Dmt?@r1R|Fsk4*>W(3Vv0}Pn%r(1Hg!`49nyW;qX)D}XZDRD$%GG8o~B$4Z=|{! zmXE6bLp?q8YI(^(X=wiN@^(I^U2o#0jgD%8-F-hFS7y=PF85Ytl`){n>t2%)J#_D- zZ{v~l5)Anr{9eZI75rYs1L%9D;un57y#^&ZP@)Hy$|RF{8ns;Gy+#{&wG55oZMRi( z&%223+r9RSVQP3wiPFI5BYWJQ97N2p;%~*seq%+J z0OQzCd~0PQQ#?~L z>*5xu`pal&K=lG-_krw0M!BF+4DTU!cTT9V?rVKc$@s_ zQOV|o-SguMKcw!+6wJlq|KNj41<%0CP&%h4_ORO4yq`A_RZT5T!`f869#weS^5iNr zUet+m>9@6v`qYt|Eo&hKJwIJE$&_BRcfpRSj+vvg05m#P;L$Rfc8oME_MBC%DJd*> zrnzMg!d$sj9r&04%kR|^pP=oI=EjsXZ;zW|Vxmg4M1}4ChQ&FEqNzr@GB;UniV+=- zY;VfJ+000VlY7V{9I=*U80`8B1Ke_jVZR#YD#mCZ1R1#0?q*T+bR4_R3wtt=(xlSx z*5u_ayYFfm&~q@GNR=Na=TlsFaKlszt6_!WEP(3oY>dV0AL!N=X$EOQRUM0&aJ?)fD#7Te@{hr#z*wXKOQS zM|{w`wXtCj{JBdV>fH}kC)PIGBliYiO%qHM<4p*~n5EMk1tKgSVSF1Y)ZS4%lqw34 zZ#lv}4PAXPvRzNb&LScLR*|e{1$FHK%Z&_{B70i^Ui(p=WI+Q#7`7A$aFt3K3WE)Hj5EybSIdIB;IQ}H7cS9Um9fZEcUlCO@1jV6tNaiUJ$CU0(%%Hmq4*N|qCev>ZhY;&QHa8^GfmG9BVNc!4QURG2w+GiiE&xaurZ=2a<$Zs zJp(3_pb5|B0f7bsa@0sidY&3K3rI{U#t-=2ilu}8o=zA7?GHKPTEkFx%CR2?u?(57 zWIh^Q zb8=MxGp@!(2+yGcac*$QX^2%<0Z*8S1GHt1XiK$^tHugojVGSg7Iu@T*RIL2JDyGu zzknjLpFnV!z%VuCpeHmq$50B;GAL$2;V5ApecO{2sc(BA#%Ysg&~+h%jtTN@C-mRv z^c8(c*QDt)`joz)&vV;zvu2(_UDttpwV>+-eYT)47CF7-BwwOu(x^K>r8#|$ocRQ; zN7w7v@O#|~HRUKhX>wbg9g*KPvTE@Wa?A(sfosr(O@}fw=)|<)k&!YESx9{N^Af(p zHwHf(eE+TC><4cSV=*3jP(wIGT=F`H>Z)N2;CN7P0PMdF|2j5Ir;p^Mssqq8-KsNw zKF;la8miTpW5xEjOL4 zoR2i3jLTc6>t|In=s3WPAzDDdzp%TZjAH-@Z$Nh3ey5Uu48ML@{1Q=){u_LOj#&fO j{=$YJSH!!GxP<0z)%740rVf?;$Z>c@cdjtW$AkX^;`DWX literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.embeddings.doctree b/.doctrees/source/hezar.embeddings.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f8fafab7c8305c3d38d013a1c3b76b65fc138355 GIT binary patch literal 3776 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 W?^JQBPohp)UPT+l)H#)t(f<#09;T20 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.embeddings.fasttext.doctree b/.doctrees/source/hezar.embeddings.fasttext.doctree new file mode 100644 index 0000000000000000000000000000000000000000..07b51177c6bd5d3a29216cc2347fa598ed42a519 GIT binary patch literal 120286 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.embeddings.word2vec.doctree b/.doctrees/source/hezar.embeddings.word2vec.doctree new file mode 100644 index 0000000000000000000000000000000000000000..462a5e5f811bffee4ad1f4f426f2c1ec7f735da9 GIT binary patch literal 131419 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.accuracy.doctree b/.doctrees/source/hezar.metrics.accuracy.doctree new file mode 100644 index 0000000000000000000000000000000000000000..236f4e376d1402ded1d5eac3673e8b08eb521fce GIT binary patch literal 36519 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.bleu.doctree b/.doctrees/source/hezar.metrics.bleu.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f4592e6fad71e1c22acc25a4d1ca6c5f6106730a GIT binary patch literal 36339 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 z zwS1MvP1_y7JZaiAMJDarF=UeVO$rd~+Y_R@0 z*|)0_z7wO_N=(a&wpejvsPAK6g^gn|(s>Y5R&EGC&D%kEy$2+fqj}2qwz%wbysava zBxzl#xrGLpyS+bd+7Q<6eJC`DwR_kMJYSOu;8|;z@o;_C41W08o2X$_i^nln`q5u zt6+*M>fZ~fXT#nVsW)!%rl->uFQMk7&6`0sY4fBA!REbHw0vZnCjr3bNw6c?yo-S! zw|N#lF`LJpR&DbXN76lve4Jt@i(I%@OK3S;u9*kBcq0gX=1rK3o4}q%X@c4aqVO-d z2cj1;+dIb>D1tfKD={Z7Ja%OJM5eOHRHjUHL2I{8S3vE?PO&}5*lP9^E;C-w1>c>8 zQdwtSf9KaX_uSd&0_}>|O1slq#!5-hy9c*3kAqo1!)f4epqs4J>ATT5 zADQ$P+?j=FQrt+}>HzX&&Bl#Zq1|ZXWfQNEuFpP>*D3MZ?bPwMg)V!hz2o#16_4?~ z>(REQRx51cUM%h7;kD700JlyzyN${UF2!y1kTMNNp4YD6Z14t(1^~H(r#N+orBvuh zj|y8*2lA*<6sX$)E`mnF=8nVe;;K6*9FT8aH09d3w@bW^MO&Q}4^#{7up6kH*iW8%UW1`Kt~!s&_h?_L_9#DNgZd(N*@i-?|$v&0RgmuF}3J`LW`3 zI;~E{wVSoN1NY=Op<2b&^D|-$sGy87D7ch9^(6(ux6vP>X%07A`l95ARN?46Y6Gql z4qT9^jyCn8Ep@xO+_je-P@FC_U*|M?(fK&6uGOjGvez~w1=Vo#pvn^gPPR5J1ifP7w!t zLa<{a(&sL{axdsP-C3%pz*C9>f0+c2&T5m$9(Our&k2`U9Z&%CZrG@!vdPe1L@%m^ zZtw8MXeVT{QHi@}d`3+rXp@ATiOvg7HA8!);^KDTI^7W5i#F8hwDD*&yY8+c?z=mU zyLr_0ca?gpY75ftthzYQy$Z(j{st;D5+e8UZW~oh13P|14%Y)`AU&78Jt5`Ll-^;6kNxl8_SF>eK-@iFM@So-(lGf z;B=vJj*NDw5MQ-cj^qPu@RV>wjd=m=Sno7h?vJ4^T)e*WTsafjPB<9Q&166^Dn9HU zVHZ!ZJ2TkkU$%wYr%*(;TaCH(*-{L1h4|zzVS_}UhWFiQi!RQLzFTl>J?s0_g?I{S zEt!vLfUSB8&jE9|ouslEr&o8kYD1yAPdO z#bMCsI9S`Nwr~XjzwEmgO21dX&`3-dIYa9R;`KTO>r_4>P=p= aTJP4V6D^Y>oWjwKEgrXqp#bAZ`Tqf~Az%{# literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.cer.doctree b/.doctrees/source/hezar.metrics.cer.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ec1d621d12f3ab75fc4e638e3aba65ab8e0bd313 GIT binary patch literal 40021 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.doctree b/.doctrees/source/hezar.metrics.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c59748b82fac4bb8172d1c0f5c45a6e4d39051fa GIT binary patch literal 3968 zcmb7HZEGaQ5!RiwEA2|!mCkn;CwDrZ365oA?byT^zd#81mYmgT9SrG0A6z^SV& zm!taqeMu9Q@v?oLby%0}KegwqXF4iVIbGQ@_Za;v5u<`CktOnRMUqQ0qt?9u{k=cX zxpU+uwXbaOuv-!Mqbxf$y|@j4?V4`w_t@;^SxN0!Pl)Lgh0`WlAzl~XZk9?H%YKp* zDIvsjrzAyqI!JZ3Tuk7gpi`%#&AuWtw`JLoJzz)dA=_nV=EI2bf<{7@B^A*X7nhL_ zvi=YEWE9*Ak|y|(kci;XliPa24nyjfxjShDrvHha6g<^A-1BL=zb2|v0)O5L{*2ip z7d3kYp|V$z)}Q0|8h)?i_XfgXzx3{31a}71w3Da$(^v*$!goi4t`6 zGV8sY4q^|?-EDCr@whvY`E;L;&Dl1k5lIp)NV2eB+p+oSR+ULkwcmbu>vlqg-~Gwf z-RawY^TF2508g**XsbdcXp%_>d*|MEBTylE?iGHv)rjC4(02wNZrzvkbNY+~3)@4y z@*z@ll$A-YQ##EYN*woo$39_yWS_Fn*q_-`7Bj*UY7PoAPidu?eX>3dpBUgitv_E9dD7wX{k5j*p++6O9svx!AB ztdVqaB}i2v07EC1x}42z6<>uJ0Fh8@OoN!16wC z=o2p-vAdE@6w;f^UfUYjo93<(q?9>v@Q*9OXM)Pm8aj$AFwSGV*71*Y805!=q zo;dIo%spx(q1~7RNtMdV89M7}+bXBRqbaqf`zMlXP_*r}U9MH7l^wI;*z{%;Ercj8 zV7ZqPG%Q7m3X8*VV2o2PvFz7NEpn`mL8#a@Dz}S+JC2PDYwk=rS0z_;W%J1`bL=`c z=p4_dToe|PfkZj3Vw8V32uPTG5F|9GUJ_qrip5R4#EJC_b^k;f1g*GGaZaC6r0=%r zGm^KD)WWe<|XtBF47pqnW7eyiEEBy(*^6M zh!N??QUDe8eQsIT42V`dUW&}^4A?qOby3AF{*YBK$WX{cNpfd!=p`Qg?(UbON>ZKj zcwRU>ozQv3C5>0#^bko@{0v<$;By$KnI!1J2&DFMzu^Tqc7$LgnBYkUqsO&c-1I1O z-#y_FNrfjOEuFO#_kDo|b?;dyfCBc_TRhxHVhfI_Kjya(nCfGpycn{5EGL>Z)Ls3&q! zDl(5*He)${0PkMT9qx~0LBO)lHApRysF(aYEaRMG-hdd>>{-GH{K3TsvLVYpg?Rf? zS2)6r@xF=IMF1TilB}Ep15H)9@wrSKhs`i-f_)oycVO&TV6h+%EoF1n6F82%yOcf#;|&VFP+urJtxeb2trrssCl zqJpb#g#PiGeR0jczt-$kxBLNf{{qv=cj%hWF*J9BV{JumM)-DMVb9yH*7Qeoe2Knl zzd={|%PY5bcJLK(74b^pOF}A|D$etSB#cJC^_Y!*HF|&a_IuI%-FKoqn?wQ05Jn&) zZMvtdKRD{98pXJE6x|rW{{WZk>R>s0%%>X@0>=Ma%?zL?+8nPU)2He<$$)Q{Yosqo zTmfqI!kw&2f*x)PNG>KkZ^7CT#cG!mg)=eoCPtKPwkit?D? zV+I_s<}l%T4iq5<^vC^=YWcUg;IHiOL3MmjqG;d?Py*cHz_v=Ri4R+`$LC=^CxZ_& S2hD!!3VB`g+-RaFqyGZ>ArJ5X literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.f1.doctree b/.doctrees/source/hezar.metrics.f1.doctree new file mode 100644 index 0000000000000000000000000000000000000000..290b86977e3790ef9b7493837ae5c89a83d3ba02 GIT binary patch literal 49260 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 OxigwBF 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.precision.doctree b/.doctrees/source/hezar.metrics.precision.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0088431a6f40cf607e79bac368bed20fc97fe373 GIT binary patch literal 55322 zcmdsgeUuzmb*Dzs%xLs6W6AaikY$?V<7gz$^dKGoiHY4g0c;WzNJ2Qt?g17%&K}^O5VGU|Cwv6&A!HpVSvG+rea`{w$Az-kE&n4ci(;Y-uJt=-pB2?PyX`UlN-o?$y_w>{Qjw?)9LiX zjvI}WEuFAE>bd=R{Lpy+edBw_3(3sTIT?kcVcQ)i8=ywp^Shm)+aKRKPG+%s?02Ik zYd;;i?br|dX>)JVoARdb94~k?$z<%uU03=lx!7~>afZ#F8xQ?<)Eo@mwjV+BMlbA) zpenY6hMRA5Pa#Kz_1`(BJWmZA;4mJ0JCm7KIwWsXGQ~!6G}+ws`|kMYXvImkIx+OW zGKxV0IO0uyC&JN9x4TXhK_NU(_MIMm+R_;f#D^89eSGMyVx3Vk9Xo6I)!3W!_ITU9 zi@Z(V-sHMvFYLL?!%@HQ4wp}c!{f_j*z7N`7cEn^Xh~Ka&0z#%x%kM&(TcYrne_V| z_mm_?Dq-)%z`OSn5ZEQ~|E2K%KKOq>jsrw7^a=M1$>xFM568)isf4d=c#$#vXUFI!`!5;N429bJAYCBx{C0Uz_{QeqfJz2atHG~DCgNEPFV|4#Gc}Wh7 z&6Ld8#_Wbp&j;D{k21lw-qvS4XL@0BFT3OLB{58aLydhz9Q$6q*f`8NYefU6?H+2RRT}$V z{c6xWnRN5XBxx~bGXpgBW@?s9Q_>JAAxR9$M1#)2d3+KSIx+=EQEoDEa_q>)hxW08 zy^dB~rKVgdnK{+#9wOrafB_VU+~Em#jBS4w+TO+{QnDNlVwg-(>~`WX?6#e@=PuuT zI`+c;^2?h)**ti~@~Kx|zTEX!mItI13YQ~4c9%dz$DK7dVsnlG&N6gG0jD`QeF!Ha z%#;3FBV5h1Hrb>uJ~Bb(<94b!z)+m}95=nm=%uk?IN53oP%s*ci8m-2_+F9sz3GE4B-lCmd8zN@c%=yQ0*lcc$hQ z4&0#=heJv9$;JZ*xN+fQD)3<2#D)#|GEXMLjDZC+*kn&I3I8beFh!js?}vXBeZ9!q zmuD0Z>!!4f>=lz2_D0>x@69TfJh-d-wX5c(U?2nkM7#|$_e%P%xMD8)CD8Pwd`&>48Li7#L6K-7Pz zafnaGLw9MB9gQEFH<9<2yV%T`Po`NzX;$2!S*rIJ>C9WGL?5`F?m{Rtbh;9+fs6F< zEonZPqU=bW`&#EJj=;MB!Bq--fILeSc@(Xo{@0Mqo}dl?WUxqvQf^eibx@O_CIi+W z#)2%cB1F2U23^1H!>l0{AS&*wXi3yA0V7z2Z1#IpELAi^BFLxU73|!L96_FF8n&ny zMgJzKCV&vHK+_4tKqQWo^ZMtA3#t`l#9-YgbNLT zcBs$;$Z;DZeDP{T$Ga{_e_zzNYrx~;R@4rM?p@8)#BVxV-8}vF_eau8MetrWE^jY; zGnq-|$a+BwjRZnmSbvZLznvK#xwn|pn3v|m2edxa`5=eODEs$e?LCAsfD?EJYD%PZ zb|pO2UcZGJ&rLHF1_cnab=7yf9qPt}w3!=%6&&)lqzC#9LMdyhhrwHK=AnDU6(ko4 zm;TvGy7@HK&F|ws6#6lONV!-EJEt>T!q?kYz_+-ud3?knpaX9K%=R+P)#-Kx4euKZ z>3pDX2KyUJOAQLd4O(RcArvlYQJ=_X61;XWG;hI6XV_np`b+rB0ta?VNV2}CD+%i< zDy%<)e~2M(Y%EB$uvm`Ugok2k-;kWgS#^5@&x!m+vFgfilIg8Q-e2VoLpFdn2boY-#@AuPKz zo__m7GQMTRJfB=-wG$yOy=e)o*%SQt0&yWMeFMj~C-@qv8axUAaCbsgubTWV{7nH( z{JK-|(9tYB4TGb`02fX>4JT^QP`(j|jnSav#BL+@T-J`wh2SrwjuZ8L1YlPb2#LIG zqiVDHR)NE0_TPj?#Qrn7!Ecl)FrU17eFKz?Lnj`*Um5OQbaK-m5~H}xWPhE;oqe#( zYw5k}{!9P9lucbmBxvtnu_-&%uYe%H{JsqT*y2i5;TLID#QUO<>Gx>WPnDqhNm`YA zz%=xzwS4W}kX+sldjr@;SlHiKP{YzRCJ_sW7^Zn)2iC9m7uIbu!sjLL z`i_%+7Fh6*b$Tp#4||U&Z!~-<1lAja2hz65_*`0C<|@KXA6%jRP%4mLI_H$eUJb;G z(s??ItcFMwEMACL-e&k10VBB&u{UG}MBWs_yjKAu@;!+FW-CT9m43>~agF!fq zTTu@dMeZJjxM_(CPQf1{)ja{_Dj#^c`NK+J@asfQ(qiCt82~bBgY8XR1Wg0^^s^Y+ z)7GKoEX@5mVWX6~zGtOxRTt~!^FSdr3agraZ13x<@U>zZ#k!#^)YQ#3363+WnWA5E zi{l@KVs>v*L!46c=zM52S}CQNORe;+iebH!SIo=pebrD5WudNOB-fZx%uM&mO=%~twW^{`$P^-LV(qk$(e3eVn44aLyTYbs{D9HwM6GtIu`BS}At z@!V$}PmWgZEw7aatn{r~VZA6?v7*@r?S0kI4P~LGZgypZ#*Bt`D0R4=v{Iq1$E+jF z(bgx*YwHiJ^sU-ry_DD1SL}V&&=zH(uC}t_d{$dZom5+DsnFJUtRu|P*0;-R>lrJ3 ztF~A#<+U}v+2&k>8rq^P)YR6T_M(+h)mBk~>q#yWN@`dKmZPMLpi#-Fp=qUWRTAr^ zypj&v`>LTN%0f*gou|M2X0)_Ts=?KylnFh((K@yqJ>61XPi-rGtDaad<@I#8y{{U2 zqAXO=lf7 zY{BAN;VXd;WuZggz7O6*-eYhFKez!Z2RFhWWx*sk3MKhxR$$Zq!Qf_W`99EGa0@;? z3Qvi2SPYKR(v`9CyT-vWBzJy>`Gx&tyB4MMmI63O2f`F6Yh_4g^S;4!o9%At>8d!QcAx6_pHnJRn%Bfysw9iZ#?+SN?^av z@3*_7j*DmS$)26lZI8NSFWYF`e9ei8oqrT#K2S&MKLL%*CXL@{QeUbz2*H|8tCTt} zA*|VLr<%Dhr;A061-~DYvjnflO&C-R>Hxm?WAI<}Fpp6U(()41gj6C%d`y#`eHd&C zyn!o2JwbrQiYC%CZVX_5AOS4guEC2rbUTMU3#L4cke#XT166Q9E@3LaYVC6Y0T2#$ zLHxmv17J|29S2ASq8tav$ir|Pz)R^roeZ_4Nf(s*cT9vh}mZ0vuo=rg|Hk znnp{dU*M54Jc35-mPe{I7Bd=dy8gy-o3GD_kw03=KA6!yLPieZoNBaKT)}8zjH%J$ zvta5|8likkL>V)q{RCkuzp8As!M#wK98l5DN}3L{JPvgWj5ZaBVze1~7>w3X=RgIe z3z_MJN}2Hc3uIQ^gl|+97#j;W;PKj(u6xI7H+14ViBTUTo7)Y#xgAxqXl=r_A0j-7vAwX)*qG?8&Tf)e67Q3J68#>i)9*fLWIHcYTc(ROWlAp_ z;t8WWC7E7bXKblCE7+8=W&<`E>g+2!cZEW9Dy4wwuM3R41~4hB=ETD`-r69xL_rA- z-^K3QX#z)BcZnahS!}S=0}VfFytMgJqpRJakmuH^l?tJRl{CqK={T{{3@~AFd0^U< z?{?pz5h?{o_YtP@tJa=6_XFVqIHCek;b;?Rm5ZM|3!y(!XM9ZP>w%=-t<&$vo-Mil z=dyA|^pTI`X6(!W8HPHS9jh?2gtBx>rC`G=5L$KExKixvh!@DCquz=;#JHTFzDt9c zRlo0aEg`wQDa4`|xk!xvuPPZ0Lx`uy_%jHB#T5`D|84RajZpryM@h4Q<^K?-@~hTH zh#vys0)$8fqF8c99tKM`)Y(^7??Q_@l~Pvxtpb5nx8kO>@6}j{M{u^3IK7|tyAYp~ z_eol#fd@y84o=x7W0tFwi9x?~S~a(P)#FH*=`KPevMQy%Q(|#>)14$k0RVuZTRXP zj2(ALeWw>Oa`58A8maubhNkpBx<;w@kI{;Jn^6DWZXRsA<$b`3?L83tXGVvbEO~FD ztkG?wM%JKCb?#b}2UVh!g-sm=J`g{Xl=n^h8s4W-h3g;BP5Tj=e z;CIN$D(E!aq9hg`VT6C)9w8 zSC}XuN-NFvLte(~AtmfDa$~$yO;bJGM0`HGn$52-*S$mZnxT95$cL@j7N!=1{3lVF zyF_UQGq_Il^5W}6nLgHWv1m_v(4uJ|3&618iTgY|%~fE68om*;^%bCOIj~aai~Wwz z!L)7itLM}mAA>09ZJ#&sQ!dE`xS@FmEP}u~!PU$hcxtcDq_xcHeuCGf12J`Vr~gsgmt32?uicy)mg`sKLcIY&?4C*4R;~7(KUSM=hCI#aeQ#JLPG&Aw_ip98`fJ8PE(%ME>p}e=j0`_maOClfN&f>}5U!*k-P2ZRap_%&tzhLm~oREK#;p1a;a`ekWcdJRds+9;Dswsd+w zTS8gOE&Ok4OfAr?FmR;nPy@rfs~Y=y&MCj=-{bCEl$S&fHOOiqR9M(I;HPQ!E$&}z zh&BI1a8xgb8kaBPK{0w;pO=YC`%*{kVFZWX={TOFe(|UibK>uYoWe0CJ-LJI@_(Z~C5) zpKg{dk>^(sF5~CZL7Uzx7Q8dwdlYcs-W?Lp20~!L+mHkI$?OimKDEJ!!~_gKcpDvNv#GihZW{YWK37az9jBIg#;uR$X<#4;wY z4L)usZVs^+@xl=6vv%U<;E)j)ViKnnvTp&}``n+{JCwqVk}tSL?{nVwr4))hw`}l5 zB76-P%{ev7it;=5k=aC9D$&3*R{GYfXk~{my;XHJntZH7Q0}>H70#Sb9Jxr$oC~cz z*114R$C@AZaahJQAP*BOkig**X+I<{@W_CKvR`7~b8T9On*$UFpivp1IBX|w1`0;J z5GZc66E~X%BQAhK-ucZ!MP?`X-`P8@4i>Bj%Tj?EE`FA%K${L`xF{>o6ZWy$1X>C% z-eIM0g^RL7c+lEKPMk@J2MS!ws-ZoH482&u#-rAr>%azOt0rumZ+I2Sz=V8&h@pgB zBnJ0{b#OT#@hNCj1|&XjCvFA_M!XOtzHTROwrNIOfP}awlZ6QF-pse{9aaYjLccOR z{3Q{7DR?L=%86|?TrnkH3LfUH^sVqvb_jc|UF5(68-fB46PI&DfG06eF0<0F0|K=3 znjo+%yY!I30O>{=g8->SjO<$L$Z`8K>cp(DZWhZV%07kqP0u1dP zK353PC&Dj<0A)p)*hgj)Whn&sfR(-#0m=^Hqt-5R5P%X_1B9HkTaQ`k*FgZ1SaGueJ772Ms7AHPPVGQrim|aL{f^vM@m_6@z}Wb^>7yCVLqAh89T!^d1w>cyq;6moWEk{!)DHF zv-LCLg$RAnPTXwLjJQDPZMeP9Hq3L;S=%ML#@@4}+h=u`=rvReg@XDSJG*87P{ai2$O~r|Sel(GU*jlC}`m2)k zSG|Z*@mIZwHiLH|uP>rkW=tYVe?#(IJ>muShlXG~w1#Iq$tAMAK?79>=dPgD|7PX` zR;yg%+)wq*f47eOZX`(=ke*#+zc5L!X~Nx|3N3^Y?Xwz@eCAHDf6kt>Q^lE0gj#%w zS5A7$_eG`OP84!GTuE;1Hsw!ZqrLpp9T>~m%7gk-_=As)1qu|m!Ob|D2@Y}<;x#$E z0!**}E@Fn%Hu*Iunottb)3o7dcG*>5^*7)))1UUGAVfci@&8Pv@v{s2$Dk3sNa#u6 zuvi8%fuN?$gfF*^5J;BWda>J_M0FZ|<-bAVvW}STw({O$S zIFb!8U;Q`?X3US0VPuRMi)C7NV;08?=4nb!p@t_kLUyK@`94ON%C9P$Z*U(}Hu-6C zl~=vG7yMVKTWr3mOce9Yh{RyNhB{?4aq3M=+3N=j1XbN$pNCAG--AKOwwAAV$!@<( zMxL=-ES6~%*loHc26n4%flbb-gzQW)yWI$ltnnvi=jV6OtJv){5H7acR3?huW<+AJ zTSJ|C$vAaFrL6dG&bk$!Tgf;NSF$Ar%vTUw${08nmp5>+dBVa#Q6M1t7L8;nQ$I@B z%dc7+qK^ULVpFHmQ4-(3Y1da&EBYNcs$=pIX_)V zlMJAqAVSFi6c(2UDB^Y5q}4p|S2RNTScBqc9{9_Isr;(7Vd-l?xEPkGOjMMxihUO?M4 z@u7%juGfg!8Dp?KP<+ z4xoRt6E_{#~S>rjYj8axbC*S85zH)ZkXB$Hfp zqnq=Wfk=`}W{4z(I-c}r5$b_QBT0X_6@hJikO{!JXJ01i4<`WIYMiX@(-z7k{W%Q$ z(Y!fV;S)*vL!Rp7&7tmNy{U7qpqqLn9hu_&7E3m2(k;HJqw&~5?JR*xG7jA0`YzC2 zU%F)|r<=5HB;F3|CDn>rjkn8r%d_&zjpaBOCR3--3<|K99m2cX)pe zmAJ#>b_D491~&BC4v!N6hsVj*a(I6aj8KR75BNkJ9(j8H9NtxFf};}2mJRQG2g`cB zv>z?uauwJ2Lf!RAM78%mDNPewu$4;0tk|+kofTC);pVh$^2j;p2_@O+a9YJ3?ny^k z!5!{~MrGXLemik9(lO$N?(kK1;?J==q+AQ=w7ElJS;0IGLf4<1N~z=v;2Z72FiZLt zXjH} z63lV8_+F^V-6FRqaElX62({fJCjf4dlda_z9|cCJTl^3{5w}R5oq>ocx z2aA7;fUR6gJ*~qvihRK)vYK#Vx z#A%YJ=g(xDJqLO(gi)pb3{cA`>Lv!wmm1` zCB<+v5SyN+FX1MCJ{@HRH~AK5RK`vIf}OY-`WW%7o7D0QK5Qpm-ANYZ8MN*sQmzG% z+FYcttl%CTgzh3)W~~x?h)>vMU>5MFpivpG_<1{VvsYxq3%%mk?ZmB|!x657QnD%R zQl8}NP=aV0w1MhbbA%RTqi*n@p*MpYlwgiK!GD38+zE2)0Vn7(A=Gw)oB%jMPPUd4 z+LYRRaWQ`Aa@W4su2 zBhQ&Cj`2ll+vL%6aFJD$lMb#q$*H82ALb)B2h&kkaFk2XsEnh0jh(m|4H@yQqcq*o zxXIo_b#Ey;sry#R_?IMa&aUOySvUKkT;XJHS%h}-)g@D$55*cuWW{1mvh^SAeA~n# z+?*{;5%WA)#J=>IBr-~sh*Tc7b8EKnUx7wtB9-5^6E};35ig8X9=8*>at=TBi@#SS z1uNLA47}@5g=iXF2vpBnuu|Z8Xu$Gy=+O|cXby)5Eq@BNdCFhgCZlI4Op}@ z!pnBz)jjgM&Ip$k$u)Mats;?>X-+tIi=DXH!_tE-Jktp1b1)851fk@cf159Hzo2+It zt=V8T9d94h+9*C|<87j|!dnEC*=WrIG8KiRVcQ*hi^&D?(CJ5AC-%dBYcLGg z;HG9YzIVI;7aPOa>5h+VNVf7iZU;V&&JKd2RjUO7*->6Kc=&_0MQE%>OGPCCP-JuhQ zL!dO%abh=$o!$UGY@;2vpqJzDaVz^c8g}8+jyP<$R-E>6{1!T%1P+I%$H}hMFpT?Q z>`GrAnMig-ZaeOedaYBd;jlM`l3B>Y;tyKwu-Aj85s=(NOWdwYN?IrV*lQ6Z0_LGd z)}ZS|5h>U{bO+%uZgt%gE{Jbqvek3C>Bq@rr+dl=sl`q_f}gdel_rzPj=M5i1A4QV z-VdY(HHNO!gOV8#f7``Djo+Qj`u)KuZn^z-*nwK(WM&kvE?uz{`S5&^`en-<4#Q!~ zbNZdG3qOA_g{-#YaWcmas0b>PgvvPCt9_%92wpG`pfyYBW?NsRexWr^&ciW)twkP) zs0(8nCp)@Me{JNfxghZleBS8x$I1CHDZ*i=)o}-4DbS5i1UuCxIVDjdeg|yTUG-1F zyGAnWjN-5*ijs{!nAeWZs5fY(CJ2Hh1@NQ7?y&E4QFU{qgcvufUla`@chm`6r+R2o z=Rx|#FmhXROJXJMxOD<@z)=&OYjym{S?S_HF!LoeoaR#lrrCBFOazmG%rp3I2dmbC ztI{wynC|oV1f4|gkjzE5kJLJ#@@+%sBq*GI1QXqf^9wAezXpcbg`ZcB$2Xm~FPR;< zgBA$Ig<09AmWU-Qke9B7lOuV77srF>(DE`AN6o?M*bDp3aJaTSPA7uZ2E4zO8Ni*SoY#x7do4XofVix zo!A>6*^=x9o9wmH>6s3o6%Eir&LrnWr~9#Us^$4>UKjoc``z3P(e$@RJqIS*-6NRS z5eVvh@|k{Yb;Gv9M7y``IlvDnp3XOrG7%xPK0X>i7qh@!?8hK~iUViBdcwBfUj-ZB zz_1IUA{wn|_52UBrTsMYJE^I@s<1M%6_}!M%=^)S& zws#_Bgx|>Ru2NV#lWcPPC&oudE6ElLCoq4(6#ah3hshDQVrRJK0z84?>;$I3v|_+l zpwV$x5x$dMN-18UA;my#HT^J!Q>a7Ar?HSe2Y-j&?{DExl+0i;<}t%c25XTeM+{RsTn_}%Eke-1ze-mCxp^S>EDer6h6 z>2`Fb5H=t2ZVTRnKL!5){#k?{r4J6`AI#57egK+W5+qkU$-RjHZ@rL1qXC{QC8uEm zJTgPJ0|VT+C2MT~u8oqIGr+)flfwhz+?RSH_7C5Usp9#y?uLhFG+z=Y|o zgxz#bk*XJHg=y^>h2jkFl{DI=&cSjwZc565Twsz28FleQk GYyLmnWc^pGE4m@hD@^56_x0$#0+6F<0P7llVnC2 zqnW+WN1cy4b?W0a@Yb*vukStgoPGA$d!OIlbv|~zd-7MGetHA>FWDIlJimW>(dl&h zVaJWe$(Byo9`)RQJbq++@PYCD<7P55bWTO#XxMhg$p)y=_WW*V==R5Vjgwid9{b&B zk+q+W+;;4T{j|9^=}mdlca59gOfnh!ao3f8O7?l~z0Pp4=f*?79W4&sw$tr4dSPb- z^{^SV+I+iv8riW|e(#uaJ2h~Cw|MOBPG(x^V7yJq6dS{_WOLW=yW?Y{WhdF{#L)Bd zD2B1)SU35d2*)+u?mAHfh46W@@AT-WEuGOod|7tdCx-3{))^(!v9pRljlG@TK5x5s zk+;d)pIo=(g*|s^IO_M^;nJyacw&hRnEeIzq9w`}EztzAIE-K*7a!d?TJ|<1lYYPB zo|dFX1?#;G824TdqPhhBzZCvI0RJDvL4X{FK4HC?Y#uoNaGYF3WqVD-BzO=p{dvLo zt2cEl9y=rN3U5J-@tAipNYY!R#=^B-lBuc4@2`TUlgnQYei%F2>_}dD=iy6Yu<%2T17z?AUO(SB%o%D$1E=jCYNS;f2VVbr zP%oKKbIBxWF=n<8N_hu0Jf;+BWR#FJ`edR(C)gZ*5)?Wz1xL|iGI46`$QFjCu#CNq zmR+T$Tq&73-RmAA;{fm&4Bf~bo^;39_Gh8(?QE+2!csVhVY)=I+lj-l+jiQXyL8K$ z*bDnhuUdTF;+3ymI{lifmb(7((twmg;Zo$s?gEJDgtO{KY*sNaS)yRFI5=|%=NZg| z{%Rv!F&b8CKo=jKAaiXyRT#h`&S?&X-ej`ZsDCcWoL_}>-<2=jX0i<|Z~+8F`b>5p z3q-%RiIV3f?|w<82G_Mj6|JFG58qH$7ev~e-3el3WiT+WXOymA2j&{|4ktH8zAi8N`<|JdzaLRcc=Cg z4&0#=heJu+$;Qhs=hlQDQ#l9QCN^xy7j-fbW-Kb0!6y5HN%%)GfGO(lct8BB=<7mj zU!GAwtees@vR6!A+8cFazlEV+D@6+U3OIBYRreT3n)xCQrOA0LJO=N)c+z)IwIN0x zCp-DameX&0inNO>9*ax2SEI-4+-z7^B}Adk-g5@CjTP1V5Ho5glsq8loUR4jKhW zayjZ?j0jOKfX_JDijW>I2N1B274MQv*{$CDdv7Y)vNGy+32Fj|TU&A1MzO}xICu*( z@$iFVh`+Iv)j=8G=Iy7l1zEoZZI9p~^|b)7vHaMGW&uy{F8wo892E)1#g6!1S1)Y1~C?7 zVH9D}Jw539Z678JsQ~e9Uqwiwb_ox`Dr9Td9`qE=kXY~;cwAaHF(8N$Ey5PoqQu`0 zb-ew-S^NirFKBfKek6t+yaPU_M)Wr7Xc~0fjg@fNa8Ej2^!*T(5{07EA)!D6P#h}s z0A1Y12%nG|(TT1L57qhwj~rsZHN>PC9t@-5-vmhk@XOY&hP2_Czt0 z>?F_dEi?&;RAEg(isEKf?zlhLF7qte{YNzFs@==+E(-fYSbHB~319=BS{5ZzI-?Tk zX-~yMZ|ln3gy8^!Y+do)ZihN2AztQOU>Sw{ED4_ef=J0)>e1}hTX^6daiz#b!cl*z zl1jcnRq}iI4@Gv23sNqY!_Juum+{Z*;6ga`Z_v?(FU;-0M}sb{F9 z{v7@x#=Ei6lxShG9Eu6=!*sqO*~M9Pdjrpj{77b24W${&YN1f^b6RKiS@%QA_&*ZH z^Q+2kggPpN(;&gQ_xG}22!0HN)wuip!F!>MxRc;P?EPVwvKUzhsq`ie+JpzoB8_L? z{fLZX83E5F7g;Sth)Zu;0$KJ2|G7Y12twb&vF!`KNva0lhJU!Xph{OQ{Z=0KqjA6S zbUbu4+fHNJs4>8$%TB|I8Z<6%#9?DJ=s2<4h&`9JW3wRmOR3{TeYgOS6$L^fuiU6w zYra+BFq!2qLL*}N8QtJ7it*1SuV32$CF9VE2On03dpDidG&ICTk<2uIlg6EWu*^s4 zz3Sdd|Gkt=T|p#h?_aSgJJqj)Ai(^-2LITiMO5KeXjO#yqKN2sY1Pk{p!zvll{>yP z#Hh8B?A@3ww!_{47V?`18%@*0I$Ptz5X=iZu#|j>r4}cqE-9zsUCQh+b20 z`m0{d%I4BDl0$!dtT zxouJnu2ZE<==Ia7ZfLNtL5+El<~Io{1zTYMZq5+)qMfwDj#OK;lm31=-XRSlaSyTH9 z!bT}|{lH4!sxH>cQ$Qg#3agraYVYeC@UvnX#k!#^)YQ#335zqTnW8^(i{oE~VlLRE z1~jGS(Rt8lv|LItms;st6~lTdub5Za`>LTB%0f-W%&LAdqnnxZcdj0(L}=*E)=}k5 zoi~-&&^xU3tr}vzl-H1F@2iG}C<`?;v|Wx=GWwZjzjE!Q--T`-u#P83H}{v<%|llD zR^6~(%IoH1_P%Q9hO$soH+!;iV@5+elsa5bTB*?1-N5CXp6E?S6kVLKC3OIPO2@nRA}pa))D4t>$~N(^_-QyRa>l=^4gl-Z1b`~4Q){t zYHDkz_Nq#yWN@`dKmZPMLpi#;2VbMz8swCD+c_kgT_f6PfPi-rGtDaad<@I!ry{{U2qAXO=lf7hkVhHZ zg%56o%E3+WM_DZijzLMzaTC~he>k`Wn|%lr7Tk)T9)nNmVJhmBGTLdWw}sdKh{@r_JTvv8L~F&fzDxP`8n!e$12=r(Rz zD9c%Fuu7R2?YAq9mTg^p6B?PfF7Ov^>tc77WzoG}KOgcCOo(~z3;u+3uPq`-=Q*${ zTlfDesah!Im$Ahq+)BD(7>@d#Mm!wFo=wQ<0u&Q)`dy4}Vp5fcon5*dIv%3l~@L z&I>(ZMm`IsJdKc@sUHGWa6m3$D!*#&4gUZL2YVpkVEg5hwA&%QGed$eqt&L% zYaF!s@|zg;W0j19S?ov2upxd^Ef$L_SS$=MwOITtnEJd%DBlcGz|3MlOPI>9DqC!D zKU5~iPPB84rXwm(K-~h1O$DM@Y(^dii#60aP*&qYU^HC+_4!gim5@FRe2+ zCVH!nnn`v!H1iF1IH2K2 zjaMwb!sualDCD_mYNbLbVI?&(R60RSG=oZ5TppD+<$K%rXoN~((F263{HnF*&4WO= z0E?(VR4m#ATIJ#=pM}srT4#Jr=xf2F->K8@r=Ksm{`<0WMd*>w*JkX@fER{3R~)Y} zvxKsAN~K`KD-c?B*tkaQ)`*A3W24@(JH%L=AFE5lmleP7bm=mv5hvuW9u~UDMPmGa zRmo@=LOesppFs#Lu7D8vPms@Pgz~37N}5G0|A#P@U$r(u{1^xqAVew<#ga4fFj%so z&VjOe7h2S*l(ORQ6bP)k6)#G=S&e2qfHRCe3z0c_hNLwbcp}tjxXR`ivs|T2 z4Ehz*s=4K>9!J7VcODv%l_>R55{t{5?j#u+hky1>F!n}`n4K|ZzSj}P@~hT1-y48% zf%&FFQOq|Z6NC90>RgbgZ6P4NRVi~lSRkN`x!S3+^XPwEVl|eZM<-S7RM~m-CrH(x zaNA`1HWw0r^u@7D{$0rG1C@-4ZJ4|d8x?JsC>I8ActeAo7I%hc_(CPSJqRf@;LK_? z-#F#NqCHOC2D`Nm8zsw7Tb%M{a~fR3HESR!J%~K24PU)bvEy#3@AOth4qkjhBb7hb z(3Czz*CqA-FRd)B`-mgHM(uo$QpF*i7w$PWy1LW zsFKK-@jZo&DjDBqG(8HZS^x~Ov;#vH&#yjA+JgL`>h`E>V@~8--U% z-*$szmtOexF26@&Z*)5~eZEUCbO~1$)Rs-UusKEVxaha~`898{_&E)iA&JEWd$zz@ zC`sxffA5D2G~X0l`0j`N<18;;z}!-2;0pM5_9Oqk8*0EUD!j`drImK}Lte(~AtmfD za$~#$O_MO(Ong4OM$PXW*S!$*x}kf|$cG)|7G~;#Y$TEWVo;h24DJRQ6JW6$M3ALS zqq~M%LN8(GGYm8V37Vd`nX}tm1!kn-7co6w4ce6>DRqL_Z|hu{woQI@J>1qYNPynk zc{@L{lAMp5m3P8o2doEN$JEaAWqmQNWzMh@yeS>8@dnHvDR&USDR_`#C%7IOK?GZr zWhc19PTZJihZ8rTFpg95%N;v)>AZl9!rl)=x(D@QZnBwlpkB>YQsQJ2KA=RN5fYKa zZC)roZRgo4?yN+}3YW0^2kpeG3xv>Li#!S~$U zr32#bJGnF$j~}`5=#95?G%Qr=5A3X)mHK^X1ZXJ9<=WI7<;#FSwG%hXg%L00eEW>e z=b3Yw1&lbj)2zeP>RB3LewVVn~@`DL_R`ha^i#RK42pia`(clWG zh-i-IM7dRgtu3;_8_$WVInSgCiBC@~gyjSzvY8N;rjM9OqcJs#4d#G{;2PjBxBx#L z#!oLvKfM$_oeeG|fA^8U7m>gF$={2~-f^pOzVE(qt`g zEbCAM!?|l42YSwFzvtiU9+;PxI1V+)>K{~S9-t>;4$L2%Z-@o_LvYqEhM%vR$CF<4 zT0Jkja-N;5k$Y(mL+C;|%W$Z{clFs>2B1eT@hcmElvTFB2vuO)kYBMEA?mqI_!=yO z3CVa=9ES#43-y5@2OO~*-O%$q($A$GBxl#bQv(b_mm3RhOd4$2tV%%Gp-ovH8T2i^R;?YwfYlT~0dI{9ulwF{b8t zlvsfT4u#Q01|gIk4*M?YqIIk}C~-M7DuWV-?ZnL}!H5^4#7%bMX1id-1xm`OJT)(tn{r|QFaIqTf4{!CMoei z!HR8C@Xoo-{H5As_Z(_#hXF!98gmTn;>Z9vYQ_ho|hs z&G5j87sA8ScH(AhX2bAD z!%i!GD=?HD!hUNPIl#b%pa8?fRU8iBlb9!0Sn1aR0or*@5ZIGlS;%03bYqM`fK(zz zcD;3EISBACp-~wGxXn)7i~x*yAp+cOCvHXnM!XgR4DB7hPzcZ`!Y_pYWks3TM`jac zDFpb4mA(}L$`0XE)-G}ofD%_jgNZ9s1h`T{fXA)$>mUH_ye0z7vAcEBY9+2CW>BES zoxHDEN0x&Ce+-SvAi#I*#LWo6h!-Nj_w2;YX3L062$0@YFvI}(n*ht7*gLF&07$=b z4DcKgeklYfE6NMD*N6cq@lptIsg=GJ0m=^HRn{(Y5P%Iqi2x2={N+olH^3!(m)kVU3 zI0y1DpRV|#onf0iw25tA$ti2jU$^sNGv`uZ{fw2q6|Bn+;qR%fm#ux&fqTk;rc23`vT$#&tLBw7o`-n8^GXH}!3Jb*E=j>s zCYR*fq1{?e4NlQqlGr^xANUWTF2c=&G!^VSq&Jga>Md6s%HLf zIPwlga-W}`LS(OMq!%b5#4B4}Sj_>e)ySvk1mo-N#GER>Y%0>?E46akQNHsjy^Tu@D;vAd10!$$l0DLSx@bCrqoT6~3Kqe%hbcDScTbFo3zHN3Qj7jo%k-1!DG7n08r zGR3svrL^qUt@>`Y&GbdM6lv%eG5EJt8a%r@e;gXYbAq0R4U1*85-@2>9Jo~skvnm@ zNU+$|$ZD&dk`G36X1C~l!eV|^8Q&_sH?R+cGrqonDKI|?9Ld&~uX`K@v*gFfFfx{m z#WF3sC5xj2b2J^MP{WfNAv;sdb{{89;bOQmbCA3;rY2Ewf~sz>FLV~nAHWD?L(5mXWVGKW!_F8j7R$5>j5git0;5&; zwkCI~gzQW)qumINtl=dlzULRgs~GJx5H2>_R3?hiW<+8zT0@;0i7<64rR?{w&$<1s zqePg8D_If4QS7 zb&XIy(4hF4E6;px;B#a~ z6=x9mvYohj^P3UZf(P)bTJZG^J8@~5S%yYSA}d1Qasn;DrDN%KaJuP<3&@n~eB|KU z&6tTtm{ags9E7gF^wcUwoy}q~|1Y~F%wqmqXr!JUGUwm@8Bn38}aAzJWfx{vR zcewF@Nqvls+qltQCgBbz0DEMdtnRX!WfJZj2L1w)aOYb5L=x_hPjzzEP*1Vev^B4! zJ9LHKN^x$N6;@xQ+jLXM;<1AoSpYR;e6q!}?N&Tny5}cnaDXwI1 zCTuC_;2?DUZQ;q5*s;z+Ie)?~3bUMl9U7H!XP>bXH@h=NypZ!R*@;^@pG$va8elLe>PuhG(@airraCTT4=0#iz|FK24&iJ+Db=k=V+r zR3fZ@%O2JGtGKw$Y1`zH_2c3sk?1&C#n0_a2Uo$*T>y>B__>32;${?M#0&l0)pp`9 zu%Dw`3uLtUIbl%291cR)pPaF%4C96u4SM?SrHUhj3vUP7TGQy$}N>G`RflwWY8Y3zOTX# z#_ut!;0vWy{NLkg+jWtW-y|3vL8Wbz5-XQqNe5WL2mU8$RK^GXnVq;9-x%?%56tWU z{k5HZbuY+zsJnVeITxsD^Mk^$fyy0!YAN7XE@e}ceF&DZZczG_U&|qKY^wPHL=^0RrGJ~Dz$@CKb@8{FORq%iBghplj z-!IvTn_-O+&-y1i;H1s>34;pm#X;!4k7b}Lv1j+BT?S?W ze;yi@@pwyr98LSpaju0Xam)Aa&w zkBEy3{WbWy3zhXwjjHDFwB$_8=V_(F?_CVakmp7fzjtBUHu<&nv-YWpN5{^b98FT@ z3-bwdsJfQuk?)@h?fNx$cn|BYw8#5eA~n#yqGNt5z{-E$G-HLBoZr?2t*#Wb8EKn zUxP+v0+HXg6E};35iblxp0E?Qat?2&#kcZE2_msq8E@C13ehy!3slcdEMjvtG#+^x z`qJYO&AsrLQ1lR@p6gcE?6gp;imll*sJgg$qF7eA4hgnW7tV-h8w z*YgmQDD=-+OrlZMW0LI8aL_V0N!fKv&Oll&92EpPvNib=Hb>qu(IN+x+lb3AgM zRY*A}YIj1TGV#dE?ZnNP$B1X+5$#0nlAU;Uhr6Z|wPi(e#Ll%F)w#y_iHb!yM_Y&^&?1<{VdxVxO(j+$!udtJ9L!>VA2ccx z;e6Om+-x9>cwvO|TXy1B&f&Z~rdtyal-OzY0LQ2Zp~K*Z0PD|3fTIF44RF2;Bgh0e zYDFI4`~g(u0S-4H2ymWbPN;T(!wEou!^zePaQ+ndqXEvh@DmAe$fq?2I6^o2`~rFK z*Q@fpY%mO-tt~SQnyF-xq`NY`S`~9b&>{R)It22m&Je`gNd^B+?{Kn@tmQ1wJA%=| z&}}>2?m{o@jJhr`bqPFy0gkb1i>%rrt=3@G9Pa>BJ9rmKShm&M=WU|Xz?%nH*=Wsy zF%^ZQVcQ*h^U3+~(CJ5AC-%dBYcLE~;lg4xzJJ_=`+Z^TbjL?GBwKkMw*y~CXn+&R zYWU zVXp^GBOtktmbhJ)l(bIyvDYHz1I$B@tU=d_B2ut@=nleR-0Hd~T@c^KWUJ?N)31}s zZuhhgQj48<1TSNyl_rzPj=MZs1$wiXyAGrVHHNO!gOV8#f7``Djo+Wl`u)KuZn^z- z*nwK(WM&kvEWCCh^5OGE>W?jVI1Gm^&*^u%E@bteLRQ=HIN8aLo(L+FgvvPCul=Ht z2wpM=ST#%OW?NsR{-8BZcHtPn)*=r?)P*sPlO0{BzdCYOU66POzHfB<J3_{34&lr0lW&= z9rm3rs%|GKA;yjB7e#}}9d*Li=^mQYF32qyMs7=PNvxzDw@&(zPfc`ZtK&z`au)}J zX&s^AG@lwU&9=i}BA5(hp22TBShW`17>2>YT%W^F&`IPD$y{{%NUZ}Z-!^nkfx_um zFwxyOzrb?(t6+#-cq4E;zIoSyWOm>VS|Ah`W@VdNB9<&eKDHK4j^rg?91o&HOG{83 zEe_7aUf5p@hpS8DWG~hv3_#6R?DjxCF{on;lrLQRimO1Lv%{6PMjlH9`O7$Yn5+(( z>=>q^@$%}hk=xio-mSGlkVsCtOOR^tqve!zdXF7mZG(ZbEo9v3t^ke6A z%kx*gF8mMnySW>p>2HsE4otLrMli1<5Y&0(JN??~hJdM5wENqh1N?yE>3jnz6A?n| z6QcoiF$>(qehl)bIB*uMCv5xu6|eyg40{kNqS3Ne&+nn}LMjqE8#fbF0-NbAyB(Oq zXMhFIbz|scZyRczXt_Pd@3x#y2Z5Hby&EYb{6=nfg~Hm|WRu%JIX*U8PPR}uf%yxj z==VE5Opdq}JHu5M;0X+8H!uaJ6$8EkjgGs5@SW^YO7RK`DF$jQ>6a;-LLE{*jfM1c z@VDsq{s#U;$qW`_3NNfgemEO>F9+{Heh2S%*qceFC^IRLdy_QJp17ZNn1oVt#>ZsR zkHC+O-;dt==KxgT`T4#Vb4{PT9~qqJc66c;As_W_4?ch|Dt`$7;QQ%=EAbEJoF(rs zCb#Fvokw!-Ai(<~ol-lmL&ekbS!VcUZ})S%9mYB)kkT1|20kWYZ_Q*wOZ3 z0--WNKePl9j@P3~mrH0pFa?+@z2&f*&L&dze6298J)=;Z;k}YZdldTMtcEdq$Gti& z_6x)afWPf cOn_~Ezug^maKf#k?QiX%r(mE;HMjWx0IOp2Jpcdz literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.rouge.doctree b/.doctrees/source/hezar.metrics.rouge.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d81fd694eb5338d95ad76ce580a7c66e3a0d5010 GIT binary patch literal 44003 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 HzUKcAV=#Ov literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.seqeval.doctree b/.doctrees/source/hezar.metrics.seqeval.doctree new file mode 100644 index 0000000000000000000000000000000000000000..10bf520a1045ba2743636866bf6160967fe4d84b GIT binary patch literal 63146 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.metrics.wer.doctree b/.doctrees/source/hezar.metrics.wer.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5cf44ed60ff9ff5cac42fc9bcdfc7252aa71e72f GIT binary patch literal 36322 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 arPi*}WLhJIIF7Ub8~jpkxCD$h3;zdMNjXOV literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.bert.bert.doctree b/.doctrees/source/hezar.models.backbone.bert.bert.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f966ef5de1e4c7b288e4893a3afe8fe06131e700 GIT binary patch literal 29911 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 }j-oTdsA7RYo5y>H#(aG2JSn%YSctFD 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.distilbert.distilbert.doctree b/.doctrees/source/hezar.models.backbone.distilbert.distilbert.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9ee27588f8779bdf848c83dc4588760c73b521e7 GIT binary patch literal 26472 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 Qi%|X`uTg zHHvHhyR=Kbi$4)7Q8WKE9G&=sOObo?^Y~1Ko?|b(7hk$f$a=^612_34Qu6y2_i{fh zwFQlP5q81ui?quhEn%)Xc5VH_MCzv$o^~Bx5Qi7c@#z~){|)*>=Z<_jm&Ef9JORc1 zQlFgH4%=ahJ?Fy?RL&K9F?b_d$hxV1g5hQhsU&ZOnlzV#Mxsf)ac`zE>5Zc_Vn5{F zN@`VpwwA=#YKvvTd~h->&iBqrv_=c~Z8&3<3IF_cZJX wP94D_K^`OeO%O7DdlD0zYTlMKbK&3SwQ7w{os?~rMorggmyiZkc*&Lj17^-oL;wH) literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.distilbert.distilbert_config.doctree b/.doctrees/source/hezar.models.backbone.distilbert.distilbert_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6591ad74ab91ad5c4991fc68e8b4372df3b09c0a GIT binary patch literal 42273 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 P+fk>43WGWC_45A$*NUv| literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.distilbert.doctree b/.doctrees/source/hezar.models.backbone.distilbert.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e486eba7ab02ea3a9938303cbea768b779276a7b GIT binary patch literal 3938 zcmb7HU2h||74@zy*^+I^-eiLSyG}MJ(sj^CleR&T4kM-I9*Z!OhT+ebV=*E;gXY}7hPYWClA9Ipj%$20moEtcuQ*9rVu#qM8 z!3SLI{f(}|-Ckkmw?4k3UlQEfdUomtY4=RF>-x>>W^PY#N&T#v6E`H*YCf+lq7tI8 z%X1T6yq^hT42<~Rlcb2>4)Us855hY%U4%82+qYyHraT+7d+dnaXS?jo%@U>xn&?VO zs*_8lFOoVG&3|0aB=K6&@+%>lYJ*3;_2_mrXNNIo>!6>s1~>ewnj_AYz>Vu*zH!6U zLPg7fs@F_CBuA!xaWVh$>1|$$TTz z5d>@p;ZT{?bQ1;5-181%_uRvm3Nm)|u$#zyh!@iBI z0tK`~fg74Nj7W=#E$aqChHK1s2>BI|j=!i8`T)VScvOefXY6aZ>Q{rS+JNf_aNTh| zE_1qi7OT(0;|+|ty^?SZIf~T!^udb+&AW$j>EwkgS$}3d2^swcQEVi8J$d_hKO`j?R^p+cCl@8?~jZ_Eek6KGC0`9<2 zYq?yaDxP*_ZlP;r=HB)HPDBNIcXhI_DqB|8&)9h821^QICst{A9^?dN#FC=K;4mJT z;*<*vht06k0;6M)GYydrvpBdHn0@8lorO|XDoZyeAKh}tq1r+k($zxg!oxB$kiQaQ zRD>dK;PPIyP(f=;ddV$I+aiV&n+;7>Ll`tImA0v%k14`;+YK2J-LU6Q>53z2me|U) zi+Zk?(|NVTaidG3C8CBEnvw#R0aBFF@F@Si8*zykrBr4r$13jzm0e6enixo@yMJ>s zrCKYUG9q&UokH62w#<4rj*;H*(yP6AceXXN<%0dsjiS@_1=_9mZ%%CObSL2f0GeTl zkHCYxI~GJPD>NqvcaHIGXt#S!(@g0+h0s&zip)YWnz?>c9uN+m1E{DCE6@6FL@KM& zwaMM)z}9hI6=mAt4^gcR9HOWt5y9cOw$$hkxnG+~L#te+t0Lg(gsw_uXu7$xhDc`9 z$K3FU&v6P)leq{Fsf*am?YF!D$BytA^kcFn8Jr$B%hI;Kxi`W$9AeP11tL-zyyeLE zA*xe11U^p#xd0ov1PTQ&xb}G&R8Kjz zi~0<(KVh~IIBa0a92Ck!5kGKe0A!JN-0U8Z8Ym-0aXv9u(vnrm_>u{H0Ny>J0`8AY zLBO(qRUoxNpkAxTahM8~k=Q!8vy2hk2Z@hlLzL?fV)sQ=;)u|K*9}1<0_YxK;c@{C zw5o6?=mZM));eAU@CrpD6+`!X;ei>n8aeoTg)1;hEe^SxVbw)S3&KT;UkgEH>uaAj z{XW1d7E#l#-7b}nLl^B1qLzTXfFjB)2RUqNiC$7@6FTTqTnf;#_zeNrpkoT!?e5&L z#=aV6cw2OXexMLqa@hBSF@8U1zp$T}V4VHPo>p!UX6#jotA;N2mun`j*^k#1dnXKk zLO0IQ={!YkeS*HVA1~G^dfP>J%@2Fh6}q;HqI)nXkp6pAm4A+J?d+hp|2a{mMSpKB z&8<=*BN?N~Uuw)If1G|i{ryMD>Q5ggg3ptPWEc~Wk+ucZG(Q7k=}p?wo2*N3k^%_O z;S^l>1o;lqD3=e^;>8UJ`t)0EKT*vqcf5(;I-tiH2Ma<*5aehHGS#k&ncK9)b;u|1 zUd)x~C{ZtceaqOb9^CLaXiu#--MQf(Ht%`JIs_2z#86w zD!Tu9V}A-5eCz)TLBMZ8NDF?w8Bib|*lFnv^I>PMQGD2R=3vb-0C<=Oxo?y)G%(eC F`hQPI|KHYD%&->2bd;fVh+^GND(3FhJ z#hB!|R5>-??c^$}3M#F?_3!?}|IMGffhJc*RXU^IZ9pSqT;!Tc|G9UELEUm;#?AZN zhGv#4*}cwstk1ST_vdWjdX`&3SGL?KqkkoOT;Ot?F(ui>R7rYP;(^Sm4=>`qtv}L5 zFzAQWzx2`Keo0`T_3YRU(#|2a>H3Wy6SpO}q<&IOiQ6UCYCf$j{15(a^4tX9wlhJD zfe_CPOg-`NNT5> z|1i%a(X1$055`yr#8BhWv=?;ZSJ;P);ZV(-j}2 zLps5ZtO{5{bN_0??bg*~loZ#{-9?oyqZD%YlAYE$+eXTNyPjw_Y|=Ek(xfb@_GCTx zzrlMexd&EghZVPHR^Ucj=&XxZkhHrji4IBkzLC4^dT9XVy1NA zAvrW)!7>H=h7N6TFEot|VbHWx+NOeDQiSiJ+hs&_%bq)? z3y!E+Vk^@s^;|Ef(`t_E4zGxoh#E9BB?Tk{q$s1oDgTu_)kL$dgYW}eF{ozZD;KW_Fs1x4_zA2zIt+ZW9?0M z6dVB13`2Yb9P;i!5IL_fgdp5G)(^qR?y;ts(s>H{rr-*hg`PBVeN^ELJ|Y}E2T;NK z3(xxQkW^NsOOboXfvtnQD$2COAEH_dIEYS5BEo^gT2iAw3QPalb~4}0L|3W0_m|x#}4G9cRu(K@jTSCZ0-0USswqh_IOk( z33$Drdd#Vv)pwx!6J`s6%LbNAQ9^lW%{%TCfGpCkHaiDW13IK=xku(&TCzwPpEH3U zz`G?>!2P}{2&(Lh3Po)YsK@m>E>od05{CkJnlS=-C_u~N0|BtX zEEKrgJ-Q=}qcp@gZPqRNp@cAnL%tn^@%fy6$G&AHE7&*e>&gwnj=e5nYM5ZZyJ6)G z`{t%%&%^Rt4B!Rkm#@)9Z!xp>qhTGRw=;A%(y-gEyS4oi6M;c1^k1Q?{N?e3jSYd z2%ri+pkHpkY~;5{_?P| K!>CeC$NvKx;^)=? literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.roberta.doctree b/.doctrees/source/hezar.models.backbone.roberta.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1750deef2e1036baf265e65e13144e7dd0bc5346 GIT binary patch literal 3896 zcmb7HQEwx+5%!%e*^+I^zT|=ecTO)zE^*M4HbsIWO@X379*qcXQ{*jJP`i}KnoDj; z?pZESAbCg-0|f5j*z_Sl{!jl^KQ4DyvJQ8>7?2?jhr{8_H{XoD>HT{$-l_lG*p!UR z)s*D9R5>-?9poyj3M#FC?mzt2|I44dfhJc*RXU^I?LZ@AT;!Tc|Fw6cpl-P^)8_oX zp_%1McE?$d_1XT{{+tb5&vGm1#+G}`=s$^`7PuTX<|MnED@mtX&8fEJQ3(NAQXdT9 z{NCT_DmeDK$G-FN1^tr1U+dYa8>HO>*{ zc#Lp2dDsKW7rv*%P?Xg9`%yLlvc}WWJH$n0vN^ zSg6cux|#fD?`0RU2kyPsi31XY+-hE@<9z0xyw0H(Vg7qRb07bb6KSU8f-iB9x+5+# zQRQ^OLv#bi|H8hc?w}y6oR*gPi#?!*lyyM>V@sjt{>Jqg&vVqzjXQ1(bbyrNA~`-oijIXB0jm&q%5iSWIK(2#JP<$BJH$G zyBnG{Zb%D)E$Id%hHHd(kaz_u$6wTte1u?HJgS4{3-UES^)JJx+Q8=s_}p^YaL3mS*qK4K`7Ri8y=m&IOuoM((k09-$_fq>-@haU%%kO?nX91STCoSj*{6E z_omfE8bLz&q@`9%O--cao>i8JSR;*2T{2Y&*h1H6%)RS>MMQ;??s{NfRkp0GpRw`G4VDztO{~(eJje+eg(XFa#bLZK#Vwau z4x44A1y;u>$TY+_?Be2HsOD?$?k$wEQdzpOd2z=bhfWGQNLLG`3lGW2faXdNP!Srm zfyoC^LItfQ=@qvuZQB%XYz{Pi3t`Z-RNAJ3KBWlXT{mPzbjzMQr7Mo8Sz;^GD)n41 zr}Juw>qb{ZOGFJCnvw#N0aBFF@F@R-8*zykrBr4rhn9DP$}T3KP7LVMJ-oe{QmvIv z8IidFHzDnKTV}l*$4GBj>D5-eJKNgXGQs}qM$zcnf%fRb+Z$Ua-AQ-=fMyutBk&;a zjs=m+3bO~oonw6$eC^)QG*dcHLGBb>BD2tRX0G3~1cZa<04n;y%Co*3k;)Y7)6xwpbMTw*Yhg+in$mKI2lMLG^3pFIBP6U1|*7ulBiAX%G#zcr6aB>}IOR8Kjzi~0^! zf5L1baM{3;IZ7xGjr+iz0gy%7)n@mA)PNQ#8uE#`mX@qi#+OXs1Muz%6>xuK3W6&8 zM}?v`2-F+(IxbV8G7`rHca|{%e~|cCY>09lLY%&=N?Z}f>v{-iNB|Q9BwQ|lftD5S z1)e~&-qPbm0IyIamSUK1FFi1W@ghh4Uc&`Osl_GtGiY6=v>;rh_$3fnws!lpndJdi zv51^@<94Zh8s=no5V-`!3n-$saukP6EzwH~Zo-Uw3a0=qi{A%;4W^{P-R|BkX`GxP zhP6ev=!X)*&<**15XSH4>}U296O6MT+4IT`!j8Qz;c6IFf4*VjhW&U`v3J7qC(PR% z)6H{q)n^z^`_ZwE(c4kE8+h2WuFJLk6BC0$YxF;$tNeX@XJ-e~`+pKuT1@c9(%dQ~ zGLkWx{JF+#^6~Wd)8BrYtbX@NBKSOsNQN*$G19i1nr6_CO*d(qZqhW}Bn1jU!YK;j zGbB6kqFg>wi~lomU<|+0&JfkSa>tvLHUrdNEg` zD~4M2%`IW4J-B6Y(B4`fx_8Sy8jZH0v)$je)$Cvf27PAuQGpuq?l4nA0A+Xs`se=V zjr=(P@SXoFr~tq7Kq~lUW&r+pVaKAk#D|@@#_wS>hofGW0lLFH5PidmVRWhH)Bgd< CbM3GI literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.roberta.roberta.doctree b/.doctrees/source/hezar.models.backbone.roberta.roberta.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8bce6f8072d958101ff52de06c84faa22d40d315 GIT binary patch literal 30420 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.roberta.roberta_config.doctree b/.doctrees/source/hezar.models.backbone.roberta.roberta_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ea7ea4d3e14cec41b8498b2dd6fc94986a2f5be9 GIT binary patch literal 51374 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 Y*PGo2O#<_DK5l4GdijZ-N5|Cv1N~VFBLDyZ literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.vit.doctree b/.doctrees/source/hezar.models.backbone.vit.doctree new file mode 100644 index 0000000000000000000000000000000000000000..829f2e106f5dea71421192c06622398bec5b408e GIT binary patch literal 3840 zcmb7HQEwx+5%!%e*^+I^zT|=ecTRn1(>O?^O_88T6QC%Nhdvx4v`x{sU_tFtB5N+W zCAnugK!NljMGO$Qhhy>*ApfU7sPFx_++E4KI=LE{Dm86a%EJdGwR(AG&06TuBr52csB~_mJ2g& z&hHzVS*~Pvob_0r?SJ7f*ueEHw}NhLxhIT%N%XY9<*+d)+2veGI(^3Nd5HyCQXdZE z?A~AKDme8jN51ya^L|O-r}gaA4btvmY}fUh_sra$;F9`TH79OJtkry8S;Qf{dza@X zym3Dh#25(iy(dW#za8XNxn2a%HC+Uq%I#aS3|pR!*&}wu9({d*sf4Dh5aha;kZqhKrf|W;X~ zM3vJ850MNQ{uBG0x`TqOa#~vEpY8!2q^toCEG>na`y1D1JkL=dH}1GG&z2$Mg9L_QEgyx1T5~j9+x>? zy$r;=z;+8qZm%RQvP@S}vF9 zV5eP6TId>mxp)1)5>cUqyPnopl`SjlXKXxkgCzwe6RR{V4|0MAU`bJ8aTqU5amyu^ z!)94&fz>ezFb%N{ySTU)s`uKv2MeXFRF-aRKE3CTLuW+!r>lk1g@#to17 z9H%)qWG=!(>P9tl`)ysI#*Xk9gG#823`UO|wY2SF?v3ybml&$+LZmWS%aQLxbRgs@ zE`iU}P+WkGTmprH7igoOoxJTvB`s3~1#L`bb-<2-WKQ6Fs0{ZrW^HLcP7;XCw7j-V z$*I!I#Jh(Ofb&AV=pQ<2s`$=gsWi;{o#g*8}{8z#h!%a_n4zO zrkNM$rq3~W_M>ARqqk#lH{h`6U59J?CME=fmgv7hSNYrc-p&rD^5=;vEhckgX>OGg z8Oaz;{#au+`C$6n>90RZR=@c$5qzFRBtw{>7-`!{O*6p9W}CFlHbJvZQXl{XoT3Om zMxp~J%H_FQ{K#~H(fVFHGgR}+9d9DG4&iaef%}jHgf&V6F|~RzSDTWkhYSMY#axN5 z2x`^Ww}hSc;FiTfdux5@!7ck}FxrNW_Hf%)vx8X|w3*?D0&2s%!%PVQbm0x?oBN+O z@)t<_*Z$9-0Q_zPnc$a}0qEm}9edsqA9mszw};KVjXGHd$PV*B@C_G+k)@hX{|m7C B*S7!w literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.backbone.vit.vit.doctree b/.doctrees/source/hezar.models.backbone.vit.vit.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c6d1346367138ea171e7c698c35a077209b434f5 GIT binary patch literal 31099 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.doctree b/.doctrees/source/hezar.models.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8cda518ffa8d899014a806469c3d7679dd5d8992 GIT binary patch literal 4422 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 JY0A06{{v=U!-D_- literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text_config.doctree b/.doctrees/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..468b21571bbac936ee9f4df6a8c1a6d78e26b283 GIT binary patch literal 172081 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.image2text.beit_roberta.doctree b/.doctrees/source/hezar.models.image2text.beit_roberta.doctree new file mode 100644 index 0000000000000000000000000000000000000000..752d258e7ffe184e64ec473a7cedf2d79521f3b9 GIT binary patch literal 4014 zcmb_f(QX{K6_qXRO1qMFB_|FF*h(D~X%yJIlO{otra)1^Z#A-LlcG-z2HY9$k`-q- zB{|kAK!EfiMFbG=gW0?U$V<_W>0kAboS9v%VYdcqK*sWtyd>{E=iEEr^#1YB@lN<> z$GT#?Tun)ymolf?*@IkWbwNwxp1b$|=Dv34cA&_mmbJ>LvpZOkF)ngNOZTO-Bfs2m zp{LFMeN8jNW!Y_KJ=SOYU%GQPusy?#pc_+m!su5-O$!_jAG{z-`k|pKGo4dz{+uc~ zr^=8A70E6z<-8;K+501wz|E_-@4T@6TNhu{uL$mM96Pmxw0khywf*LuGrK2vN!_fT z6FVfvC_b+Z;^X77%X97DzMl!AHH`S(D@hT59prVj9?WrZMHhZeZTAgX`YFf8>>fK} z_t`Exv!5qS7Bo?HSyGi;N_CNhpfvyEdOC^Mik6oIt9|TLX*}%hC%5Z4JB%4zr{JVD z*x?uT98s?YZXKff)(uk=DO~e|c+DAm+XsXF6cJ$WAPYak-@EvG4}b6Db?jky)g&%w zk8p(^t}p;zWKqew%s28LA;ESK5}6rAH!;!7z3d=%&pv#Oa3D>{wBjK-=QI2GHTDJ& zwsB3@;B0->6{#w!9NEtOZ?JD8_rMD6uwsXL4K~suXUn>Qqv4tz9gbcBuXTNeg8${x_a=!g?2YG1qFP$UUgE>9@#gIBBd6@Q!A~MTq>%g z)c1@uL`42HYXY5WAJ|)Vl-0@?k~C@oRN<(##PVSeG&P2oOH|g=u2e2mKx*!6|4&5J zpnF$q`?5AwZQP8FXLhipC<(+!146>%a@c3CA z-1AJoa`w(bN>fThHzuFlvd6w+Ln_kMLaM^SGSU#t3gT4wMnJ>my=b9=21|O$4NKed zhZCC(O+7>y6s@E(si03O!gt#a84=yEXHV&hBWi}2TDOaOwwKd+y~J^&OQK3d4J#BS z1uO%kD5L&S?mIi;C1RA)GLt!0IXkG$V)DsELrU%ao0BP3N~)BRG8fP-q#bX|jI-ky z=?yQv;KkXqt(h$s?B8}2ovts?ZoPkVVr!>8@ecsdG(&s@9^~w?Amy?~Z-a2>7~h7L z+cy-=q{>qWKZVYenJ-^6+i%JR!ohO@6}4jJSl^CFZDhJO+1ni0I?n5&N;~`^s=>e^ zlBy)aI~)f~K)=uZ+Ei&;=Q3Rt9#1E9RY^_L&7A=vnMt2=%_Ba?Y0fp73;&Q%)Mj?S z==eMlY3aS?$oCuGgmm@KDKEfZ(&`jz1VSeY7H zAUy`@IDmcf?gt+uo+Gu$w%mKm+WpU4_h2gVc)g%%%Bfj|Gr<0YnL^;Ofgy8HDECGE zz@7n+McQ$*dqAq8jugfEL|>JLtWw68OyCdT-4oK|{zw-DEcQfmb2jWCYGRLG3P zR>GcTjNm>bDcghm9=O~As-1u)R6!X2*@DCAq~g0$l>5~=9> z<_ibRp!LYX-z!{!QEG6=-3+TPQd$r$QhafEl?~TEZN3=*R~fI9q=u*^g*Ku0KEI zIs1|Qzy#y$d-lAx13zP~DqPj~zCT_wam~KJuGu?&_yhWQj?U*fYV0#~yZv~vPSM-m zyK9Env#!{+)fC-?Mxk`yp{o34d~0V1Uj_e4WM%MWpbgE9lp-S;qsi|BW|NPmzncEy zlVtVFj}yV?NklS?3CKv>qNgwk#jGP?q^w+}&+o%?!F_h-rpz7BI%y!%PYR%;62Fru&Z@`*XnITlYDH0bi4l o7<~U}=y*J^)6^U0!_FMgeAsmCV9(M6d6;|IZxqruGWC4=A1r4a?EnA( literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.image2text.crnn.crnn_decode_utils.doctree b/.doctrees/source/hezar.models.image2text.crnn.crnn_decode_utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2cb1e7df30eb402069910392ce0f05bc28475602 GIT binary patch literal 8090 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 UgNAD~ekQ79ZG>XxUiZTP0g=M^Qvd(} literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.image2text.crnn.crnn_image2text_config.doctree b/.doctrees/source/hezar.models.image2text.crnn.crnn_image2text_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dbacb49e86cc80f065870bb7523ec2cbd03290e9 GIT binary patch literal 40720 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.image2text.trocr.doctree b/.doctrees/source/hezar.models.image2text.trocr.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f277f7d8870b3644ca78005789757c8497de026a GIT binary patch literal 3914 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text.doctree b/.doctrees/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text.doctree new file mode 100644 index 0000000000000000000000000000000000000000..775f5baf479ef0ed4583367c01dc4ff8cb2ca7e2 GIT binary patch literal 47956 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

    JgObSuHkLIWQkK`0I%lDWmIH0>bX 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text.doctree b/.doctrees/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text.doctree new file mode 100644 index 0000000000000000000000000000000000000000..66655542fe33abad8829c8a28be2c0e0ca9fa517 GIT binary patch literal 52014 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%0Do`QjgJ;jXRNfz9R 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 QHOSL!YsNsjt^I8BFIqM;fdBvi literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.mask_filling.bert.doctree b/.doctrees/source/hezar.models.mask_filling.bert.doctree new file mode 100644 index 0000000000000000000000000000000000000000..45f0cbff647a683c00020c443f96c4408d2335e8 GIT binary patch literal 3501 zcmbVPU29u67*3PeiJjO^(hml0x|Y#4WwqUl!NxAipqE(=42{Mnw)8P8?|k|dc- zsCITck#UjI%(%Di;qUHOcVt_NoN8I9m^!p7l5N;#mD|W};#lfN#hBPOF-GxmVNeragAJZ& zpYK*Ih}JOTdm|%h`E5HX^2K0`kQJTyHHF#>_`m)&9;?9hHYWHO~gRb&}e z!&9kFhM^GEe}t!pWmu(Uxj>iF94L*HZXd4~W42TFYfH@Pmw#ji^_k7&pmt|;PVi9vCl(3{c<^bgb*4Cp#^lvG?zt|EOogA z09!*bWNZ{&MnE<9p@Y~>d+(zPf!3hAiid_AjqH~nwJTsO^01p%)&1c{_R0U;9K|x5 z@F{#yyUVj!6bS{I%b3`A>^ZgDDVZfSH_RPx0!<_jWC8Z3LXO>qZ8DxD;MRrhR1Rvx zc2=a|1WnxWnr#OvX_<*LtZjp$i}ZbWp0dNxl`S;&o7Gm@Ue$>HsUmq!l_RU&eS&>U z-31zGjRxD+3pkNEHdd@lNNF#SUn6A&tZaeR-m?JIJE)~WPBmcPu`f`o{u^rL5^B54 zwXwaDB>npAMRwKHA}q2@hSe0|cBx+X1G)R9%Jn_m`jyD_y~y?FBDXlL-0?x$*RuFd z5F1OmK@>hr;ad0DBYVv#l4(Ia7NcCrsiL~ny@rv7h!Swsnt;E;W9*9U#)a~#8kK|r zb#~{LQcLZ&rp7?cakcE%cf~}7-X_jAem7~zx?4BOSPPy(Y4&>eXd_Om#+;i+-v?7>7zlSxCDCXcV!j=!?Nt!Orp zDs`}QHIyU=n^S)iYPh^vTBxAG5}k6xqWN8b6RQo?<$y9MnoDIOL0?joZ{4;T5%sWP z_vwtIYKE9X&lfdpBcbDBisQPcL}jQNRwznRSXyXNOnp-BPut}gY825dmI+ol+bYbY z|5aZ@d+e>tlMz))s)&&+5ggUjRWz0=iJ+7;gB-?Q*GINl=_|^?695(B zI&-XPyQDBOTA1uQ2evv%k>*j2KU6gsIAld-M0kh2U8G}NJzXiALApn_1H8<-7A`M-nxZU>jS!T#AVtmR3 zJ^=5gkRJEDIwfG)&jm=WQK+k7Tn-~4V^Wp&FlGetpz$TyP~}iU>^>=S9O2)w;YO`Q z0M{=pJevRmb5%I-I)R&SWgSmFc!eY-75yXf!~rw7s}u0|3?VQ|4Gy^;W7SDSQ^G}r zC%0GG5cYocXa-otq|~$vyFs&;{xNE|ODzF;0Y#oA9ON*OA!@$| z?EIo&cm41+9<>}#g;z`#wzJ&D;I>wH}q|FWfAhpf=`bSy;;jIi|D zim_hZy5zAnKQ(MRxa1$AtBhCq>#M%189c5aB{3ecz>Bjxu@nLoM-I44ww_k@w^P##z-$|dtoZ4SNMsUCR1&eXTDop{l!^ub@_#dz>9oI72Z literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling.doctree b/.doctrees/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling.doctree new file mode 100644 index 0000000000000000000000000000000000000000..41336a57fb39b431c7c8918856e1f52d0d58822e GIT binary patch literal 2713 zcmbVOOK%%D5O(ZHvSdrP^C$`=?gK@d292a5=%MH}KrcppD2kpE5Y#Ruvf`3kK4Q5* zfc6le28dq5{@;GwU9Bad$e{*obB4p2;Wyt5_m9p$e-HMmpKxMJF4Ss5^IYki*%%IU zo%w<(7vINcf5x}*tI#*}%4%;i7Q-GaGA?9pn2N7s7$tKjq@6V9dzNKRXw@F)9p2@= z*OB)_#|bCd#!mQwv)`$i6o?HM1+~jpWGYB9-$h2t4BZe#h1Y#DuqlO8Uc0C#_8 ztCaYE_}%-k-@VFjYqa+JF4hoqONtA-$j?Hbvz!+<(x#LPPY zngBcyxlLg8GD)q466=nlMZG%AeR(U)Xtp$Lo@{*RIl4$&k)QBK{Fp!H2mCzzI_0`x zQ{$ClW_qQ~a$3RI{6%_pTBlWOHsSp+3Ka;giLtowCl~v;68{wU;GZM!msO~7U9oX0 z#<(fi__ko1%Po_pT$FzSLOf~R{m%^7RigYU+&u$g{A)e{QU^6s{P}MB>$vL!ZT9i-*L@mf=JA{<)g95{{s zI%^wdZnSbtz_ZrAx)X!bm7!M3~BS4yzdY-p$9~jjh1?@%AQR#%M!0Rk>sa zh^JID7sE-7^oEyC})H_XXRbgL%Tf^KJ zC29EwR4au5^^Br2IXtN}6|+D@J6GE8r&Flyq`Y=qtBE#?X$%jO zWt9LdiDL!I<4}%6=*LgK`4)JN%skt1pES4bzg)XVr_#jNB{LJj+`Ni`?w@j3NCfLU zIztQPj>n6`a1KHir0vc20>qYyAvfXFUMojego_22_yu|IN}YIrYzvAm`^}@NEr7aT z$+bwN&S(SedB!R7LE-CW1IiVIIKA{GLZrvMdZL>la0B+}OsF|Hu$~I{(wwk!`)bKWMg>Gsg zywK41lCoa&7kp|%KPlXGi45OH{^G{+&+&iCk8K!k7OOfv%mhlF!oy>&Nj;9I<{yJ)P=-!rp%vR&lFn_q~tJ%SmhKZ4BpXNafN12uq zz~T;gGI}o?{d-*gUHl2`$9E9=2wyH1^{xZ9gJVm5)T*nJ9SN05pC^heQndzonr+P( KNUyb@P5uS{%s#dN literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling_config.doctree b/.doctrees/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..39a437a54f5381c990a480a777d4c77dc954b666 GIT binary patch literal 2750 zcmbtWOK%%D5O(ZHvSdlN^C$`=ZW|P78Z?rMpogN@-fC2bqUb3BLG4l^AuhQgxv^Xz zKzj&K1H6U(CH;f_xGzgWkxLEOCWpg$eDlq4|LFYv&)}f^@uxQDLT#orO_ffW4gNUQ zNs%$-!iVtu&+smM?fZsaSzVZf1%CjIgbSG(ro!vs$5Gu0X{Yu5o@I#>TD8}Chj)4J zb>My9al%Qqb>ioo{Z7p^gKwC~s9nDzOChCDt7$4M3@?~*Tgz8uN9h$wv|5VQ7qC#k zbnWQwuWS<&_z(LBAGd!{+HaK(_Uyk86(rr90st5Ix$lz}F@EH`HBfVZ7fG-%FBa4f zsB=av3I~8AphqIL5xia^skIPd-BC2FR>x_P-)59WkhU$mx^Q{n!knMZeSgJJeCo6b*rXIx zb2Q7bIjI~Hcv)jRsJDfY*o~Y{NTgUih2st)G}po3TWal;c5LhL@{S+H=2k^UHcM@? z0Lj>b**U0@#hGDY@=+yWl9dv2B^)OW(c!VaP&0q-hlb_aI3n3w2KWyBfK%CSJN}$) z1W&r z){l1&2{T3;!l_CnGeA6snz-OkE2OuqbV@71U+kUinc%PexH5VhKy&r+?!n$oe-;w} z(JTi(5(x!Al2okJ9Gm6S+@U)ba%#O9c73G!{sV18&^689ia%~yezFATv zapbMAqT=T%!AzhF854=q8y9;`U!cc^NCu-{l}(1TQLPpSQ8gkzi7Pm)GPylCUGo7c^t}d4Ef~gx8DKJu~{a2=A-1+{8x>6bSjN}T{ANk z%q>eF=>8dZnS`^xqYJc9>Ug+3_7@;zM%vzN6CgH^47u@V_F6f*AzZAu#4pHuSL(?7 zq0K0|>`j5DwgBpWxv#cF>V($NUL>3%9u&T6HlSQWh}-KThl}{)m+yEz1a80{od~rA z2b!sHFU|>DEcWz77Rf6$ty(d@km~@>WDAy}f3Fb&XUxIL!vtDu!ZIo(!N*CQvSrxk z_2&i1DwowvyYWX%y^SxeKdxp8nio_QDivrBM;tXPhS`J%0`fxo=5{0aWg_|W>%cCpIaqeP(O z(LF3ylGu}tUKQrHq|!t1C~mgUvaNrq`e0AkYWH_6_8YI|rF%Q}F{x9%ReCb_u&_?A0J2PBYe(S)Vp%n4vro1Nh>Z(b|O?F Wi!@SX6{|H!<7}(PKzyx>#q?jaLrqfv literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.mask_filling.distilbert.doctree b/.doctrees/source/hezar.models.mask_filling.distilbert.doctree new file mode 100644 index 0000000000000000000000000000000000000000..94b49bf9ba6dfbca8250b4a346d7be0fc915b9c4 GIT binary patch literal 3561 zcmb_fU27Xh6m@J%vSdrLoev6$(}a@7A(51aK9oL`Lf&d3Xj1yru#9#`nnANW+nL!| zE)?2;OC2Upnf{mln*Nra*EaS`3oO!WN6V9JHy$!r*L4b2m(%$<~kb26jO zD}tWw@9DxD_@3(<|91V{6&^KH0{e|)2eutl4zn%WEd3nYZJ0paIGYgLA;u^^$qeG- z3a zRF))EjZUSSkMf|D|6!gU6=oHZda&N(>`-YqcKc*Ao3Py?gR2zmF9o*qJewfunSj-K zRBv1om63v(j|(%$?6waE`xFsicaeq9@VST2eS99kJN7X5YET?!k6=OrCbWSU8K*K! zqFUYyNU#lrM21GuIws1!4?VrqYsgMt+Y9(se46bCC(94tw3^=5JJ zKM0~C({~Kos`&}}_;9gTJjou}Yetbo3*vDZq)N^d)df#Bj5I_P;49DMSj;@$uGn6f zDbK<|QAjAMy``k!Ub~~IG3W$nO9xe-nW{X`k+aPoh{#YYRikRk%%qudW7Z$r_Kbp0 ziIEDL+YteK8xp5j>=q9Ocx8@dr(9-AVATcE1JBxi7Y{dlnVdO$IF-^Q($L!G$rao6 z?GAMoET&S$4w9Y*+oY)M*mqG4l{X6s6*QLwr`)h$**oxJd7*432!o=jR3;GgB}Mo) zZHEz2EgSZLE;yoQh{^QwP{TGNI>}~uu6IgQf~etyq9lf-jTD8{JLUecJ)R&&0Zl>~ z;gqxO%uEMg4m5bk-nzUQP^F{_7)c_5qDR`{TWFl^7m==MY2;d*JzCpYQ^EeSy+Y~A zfaTR&mp9gK+I{Z;fTkJZBjAv;T|tsrhQR>gjUSU6%fv!P`{Z&Bs9TGu6cpaet^0r6X6}nJHptumUV#|+k-Qhg_69;ptM^a^9?C) z7WRh!hDS7}C0~d%@!BHfdlyt+ErHJiUtEAqG6M<)kGXMA_wU_Os-VndYk5aRYc zOYwxCf%EQKk^ovUBs`e{14~vo^gMwsxOR@m9=t-5q7?nmId{Me`gVl+J%b61QiDgX zhd4D4XiT^WFs^%+&CNb22X25>ObbrCuv;{F>4#UlQ*a527f|F$#8Dh3FhtELxCw*n z0gM8)42F2X2IGh4ZhLr1T8y(0L))}kG<^wS5{A6xg~j({_J+M?f^l}vUS+oJcg$G| zQ~luh=7Na}c7BnuyMFl^LomnK@QTUIcI#Qp)pkP;EO@){R3Y)jx;$6dUzZf;;1#kS zPo$`TksrObCag}kFKKKqU(GKaUeXWJRmQXY^>tn44hAhyNr-V5cyV?<Lil@BzJ~ z^`w-)MKI3YGn55>h@imm(?J6W#e)^2ToUhA;yjnT<**0r%zPRTg literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.mask_filling.doctree b/.doctrees/source/hezar.models.mask_filling.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9bba3294bc4957becdba9a9da628b2e5a87d9949 GIT binary patch literal 3486 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 EUk8CPv;Y7A literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.mask_filling.roberta.roberta_mask_filling_config.doctree b/.doctrees/source/hezar.models.mask_filling.roberta.roberta_mask_filling_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..beef27f86833a08009a4233915128c1daafb2249 GIT binary patch literal 2720 zcmbVOOK%%D5O(ZHvTRGX^C$`=ZW|P78Z?%QpogN@_E5m64@J>a0)pD5L_%D0%SS91 z2+$q^)BtZ`{%=3-%aYJsYCzuQ%y4G-%{RmStM}oT1{x4E1feN!+x$a zUohq3`}q9t_%?nWhK62Q?M=pF*nvgHh0G08@pTO2WbTBtlV<^ z@?q#X;Urtrgr7P4lbT6^*l(QIkhJlXg#aCDJWkstF%{D?p1d;Bac zr(73oYP?d+Os}+oAVJyuM|yTzr&UYVA^sQ+6%4Ji0byb+PW;)$F3!Y1$3gfLB>qzs z>%1=8d8*5KQ?>J^YTa`~S(hyBOC_WHOVHwJ=kNdK*iwM4E|79P3>S*>K;mOq-nKtOQLEMt~!ip4RP&FBJqsA-^pL!sElHL%+;tEKO$W-!{quz(O zjk+cHd77FFv{4JNP>Mph_{+(&FfLh10187(W))yZNiw6zJ#|L-lsi}2AEr}??WDYR zT&syTi)joGlVz0vEQwfNm-vCacco6eKe7cy zm;K?<)D}S9uh#XFNS)CJ+Ov#P`+l2|hp4l&#V}Z9X7C zRynU{+D+JF>P@;=!+t$W(7d3cP`N;JIO3>TFw7=gC8tOV)N=SJ0d4Yhi@wFQ+mO~b zEyVCP?-u>kLb#+MA0%P@&R_DW4Z|dG*CjH18~Mu{%b(ymzl*GMR9 TMXJ_8o@QG!2GVWqXOn*c=%YYU literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.model.doctree b/.doctrees/source/hezar.models.model.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4483888ee2b1c0a9b5bfd8f6f37d18eacc0a0ed7 GIT binary patch literal 114227 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.model_outputs.doctree b/.doctrees/source/hezar.models.model_outputs.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9c362018da8effe8816ff16b311f37a3351bc642 GIT binary patch literal 93663 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling.doctree b/.doctrees/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c9f2eb5bc050b6f02e192aa51b4dd43161f7660a GIT binary patch literal 41806 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling_config.doctree b/.doctrees/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..612a16da3caed771b1630cbf7c5f39dcbaa38b0d GIT binary patch literal 57726 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.sequence_labeling.bert.doctree b/.doctrees/source/hezar.models.sequence_labeling.bert.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a894ba29bd303db9e16c0a35bddb8b80e62d4dca GIT binary patch literal 4000 zcmbtX-HRN@5kKi}_ipcF_fEDXSfk`ZOc7j^lwB>3S15wnto|%nbE(bg3PGkw_c1af02Rksc_c>h#|860{xrf+PBnn1zJ_oJ6n_GX9$`zZpz-a-z3hQGJ*_YVHv#pBrH`cdPk&Yr-9 z9$XjzEV8JiE%UXcM?A0{L_}sr(RDyHd$(Q09=P{jJsL<7@~n8Bnv1FX{i`3XahJAu z?1Jq7>8I`w|F@YmljWQ*V2!$CUS`7Pbk0LI0#80=pHX*EkY!FQ!~D}dV2xBYsesId zkTZYd`i$o}IC$eu8Uvl+ptJ>OLv#Oh#~s#`)3OxT&^-i|S0M>$`DouOf47}u zH)=98zEY&BsPbex?Z3sjwX_2!w1bH|)GM5k7BpMZH3%K9c+o-VM^HTaq=xV#1k>PA z9h6^^ukft?H$2NVJP(2A9oOS!PM0r(`8L3AAkghqge&hJNACUR(SI#|9oT9NdiP$` z9>0n*>rag*A+KK{mW}(7y{oibu;*^n80}(5yYw_$tFV%Fns4U_VOd#rk83B#FphFQ zZs{{_tNA!o^Ko0vSBQwme!R4GP2eSWcGt3m!gqU_>Iyu2;$An3lvsh(X{-XM2gj`>HVt>6sWIqX=%!~~dz`BprMY+gKNDd= z^{&76r8Si`e#%BuH&{?K0%D|syM@~~N2C9paHQPa?F!Y(fE z1(siXcW*AGDW#!nn@{h!lhCD6Cer0xs=`Au)F_k{3R4l9zlO;NQ9=c+CFvD6ENz<} zZfp)TT@YbVw35oCfN10yPV1$J;XF-6%$S z%}TGf;@$by&Xx)GZ#RraR}QpCA8u}Joph(+0RWn2h>yU7ygL!3Tv!Y=2zQS4UDR>+ znxdIhd5WS>QDe$1w5_S@H?0EU;5mSbKC$$y?}o%0nXW|cE(f+wa$8hrTMhmY)mp$& zAXQ03FgU6uHTpyDSE5Q&o6B@r1U#M6WhFID*H6|E$xQl;Yaa1AN^`EsOoWHj4Q=Z7 zTV8-;$9Rke6Kayd=t-lNw!O~15q{wkjk*wsNXuX?N4}5Hsk$Zbc^1e8*pv&PQ1F5q z|H>iM66i13ieX6fZLzXGy3nuUf@a_p2aDS`|0+xMgL28Xay;iT|G8Hl- zag1>186)rqiH~GMl{3rfzo- zYYE5;D5B+Zki(>gs0BrB!o+3!n#4&G1nDb4I}RlH%#2H?`|x6D=fdq^v*H$yg-M2jv==n9qTH3 zJ92k}5PRPBy0({MlF(?A{u^|azmD$g?BHAAUx};?z6Z3Sxsg(2Bx5xBV~yG5my=&l ze(_P^?6e0P z76~~wykCdb23V4h7T3+#k-?S3IW974d|u&A2;$B0K?b*Pbdrc rf<%GAH=hO(;)PvB-4Gvj;u_0G&8!aYECP%V^HB7g`WVI-JDdCmW6~JY literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling.doctree b/.doctrees/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a2511597cdc33135bd6ba060e70cf58377f2fade GIT binary patch literal 40023 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 UY1yuj=p8GQz7e9C(`N4f0f*%1-T(jq literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config.doctree b/.doctrees/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b692819abcc9e64209724b680e89289f79a61633 GIT binary patch literal 59155 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 i5A1mKn)sj-*9bmn=5bWaJb-sU4^-cK literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.sequence_labeling.roberta.doctree b/.doctrees/source/hezar.models.sequence_labeling.roberta.doctree new file mode 100644 index 0000000000000000000000000000000000000000..af792ac93e49db5a5f3c11408246efd513950735 GIT binary patch literal 4042 zcmb_f&ub*d71pjaBh5&fk=9-l*p;&;IF^ZL+9Ad`4upUYIV>KM*yI$`)O6QORaD*8 zt{Is-S7_Q@RQ!-l1UUZUtZa=vBWW@WFU?>IP}&G~0Fk#@CtKg9X&j z?3}nEF-GyZHHcA&$u7@z@P9uOL~97~yH}DT{yNBQwO-6&x}uA4#=3n&mSM}YF?+<0 z*kiWK&fKR7lLbwbElaABOQ|kmV4DA7o=&1!KOV4K?oO44Yp*}OZ|CeV=5d{flUCq{ zpV&EKZw2hGBm3G7Q4=c|`ffCI#$FHMU_VC;*c-^iFYxy!{@%jh+whP5s`hIVkF$4R zLJuYkfErm;(w6x~_9HOZ4uT>xqv$3wn!URoVvpS9r2>LfA=`@A2|Ay-KfcuM7KUky z&@SNq8$WZi|C6#bljVXhp_95JUS`7PbiqS%0)PI@KB4ZQAgi2KhWV#^Kp&}UvH`10 zA?N7|aP!(7HwrqzL1_z+iRS+4jvLlg)Up&;I6DNz*Wn3S{D_^^+1p3*|FE5M zH*OL(xm2X8sPbeR1;59=4HN)1v_p*>>NV_0i=i#)2BL;*rgVtng}rPs+hXV2ZZ(c49kc1dcs*1;v4+~3X=g0t4_rnQ~HXcYTN zOQlI$>nBaEpR~1p4UKqnyG`7RNY^E98MV8SG1SDnD_B?l**or4qe!U*2^32!C6|io zSpIuP8X_W(nlm-6YzXc>H_EIE%_WU>0Ttq?mBg0f4m33e{S6)Wv}>UYRU-NEu<%Kg{DU$42o7#nN-kc6ydw?hKz`A*>k6K#St|_jMeR-p6lgwZkKp&bV*c+sNsa7 zq=00A6lF9x<-c_!ULr;*CJ341ly?Jb7LyMq8YR^|zPXuFrKCz3DRY7Pg|x%B%y>7B zk>1eKtF?G{wzadRg8j#hqSCbi?bXLOH@0rNli&b=rWxWR;E;F6f|N^(i3j1%vA&O* z?p{$elPXWq04VBBnT2*XbN!}mARIggP|-71p7q^`SR>Q5$ld3_)^To&3XQD6AEH_d zIEtkzi3keEwWLOW$o*PWX=-zsu8M%C6S}ITrs?L*8X}oVpK;A2KF4X!HJOXxNZs6K zZolOPICcbQG?-A63`&oiV`+-u<%9?_Ts0}*K%wB^Y6A-Yz#1U^p#xd5AT2^0!m zaN|EddCQF|TBQgIS|4W1;LK5w%n57{%y2(r##H*lB!O5@t1H7~IhAUec=s@ztPQ}) z)X)OyF-XS&K1kN;f7z-BQ%S(<1yxf{&7yt->`#~}1Rfh0G6#k7 z(A*E)830+N9XC4%QjPjZ(X>zWRcXj7Wqip5{s7)RAp`D@bV0zf&n-x;5vW({bzG)G zW+aXj?kr;j_8{?*Y>09lLfpQv6`ly=eLW~NMF3L;B)nVz18r4!5b6XP`qnvK1n>$; zA{E0dec^!_j37Dqdj%61r3Q~Y%y8-=r3K+4#g|B^vbEW#&9?-=Di*P(UAtXcJ_|Fs zJBYOe+O=W^q#z&mp(KeleG#qep%8)h%In zdT>MIpnbKz^x%emv>s(buY0(ytJ%TijDnisO9rg*?l6-=0C(^K9d-YsM*aej_}c#k u#Q|TLC^Psj)SyFru&b*##D|@@M)YAby@Nr^0OnyHN`F%&!!Tp#)BgfhjVi+c literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling.doctree b/.doctrees/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1c345e56fc6828d3af7cf1172c22249c65885852 GIT binary patch literal 51377 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 OQ%%xELTqyy*8Uk^{C8&n literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config.doctree b/.doctrees/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..05a0ee4e9fc877db5df52912017b952e580b4a59 GIT binary patch literal 67642 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 W(Wz64S)($sw@$UuFC#pPD*ptK_N?dt literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.speech_recognition.doctree b/.doctrees/source/hezar.models.speech_recognition.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4cd80fb70f1bdf32cbaca5b6448d777586c2aed5 GIT binary patch literal 3863 zcmb7HQEwc#5tc38Nhj&Xwf{RhyeN_2>TE;|0jPdAD6p(tFzrC0!}y%hr{8_H{ZHg`??MRVJEi08!XLq2HFfLL>3-^Vy6R&Q#(DUZ} zzNU%cvgnSp0UNUYFWfmB*@59k(B76kXY?OL&2wB18@i-4VV}o}CNe9yxAUMR$py)% z^EO~&?=!mgzPLRK`(fo&dItp$D$;}Y;-#J$rZ+i3b?P|%6LdrHVKWPQ_=+kQ1#8QV~ zzHw95gb6;rAADS}H+>}7ukn2L7NY+)KJVc32%mTHH1?bNNwc8N-h&eZI57f5WM0au zNPDRcC}2B?hfIv3eHb)*ueylcvk!k>ERY^#Sn)b33p@XLr{(ak9X{0 zjeji*aRuE&)YZmYAI(qLSslfFB;ilnp|{f}aI;HAO7AY&&c+{cu9ppDk9OI!N4f_9 z(k63T+{^9Z2CiLh{|~^XPh?sN`XG^o!LvG$y&&HJt^8#`%X>f@186&Tz>AcwUqsof zkkp6Ax!o%XSI#~H`@r!(Ja`Eg^$X3}he31pQ;KZ3Fpl_){tGc|+z#cmNys^SZl{gG zE@rgLOS82JC+XMSc5V=kjb;0&c5nvcVAWY*)me{JXDz92U=WVHnq@j3e!-31URJcF!DBMlLuS{j|Ycq$*xTXvFE%CmUfarSX53EXWD zG&P178JgK?*PT|XMrG>k@NYy^sO+x24P|A@%D4raF6=0y;A3K>a#*AU>~Bb3VsR8M zjB(2amWR!j(w8^F~sYYRJns>qQP2a z4Bqs;SHtAJAfbZRlK7Gv7Pq|zH#P^FX0))!ik4EDSkPw_;k#`Q84=xbU{C3qBWi}2 zO1DY_J4orW%5dG}lBfbvgNC9chh&5lCDcF4eQhVaK#XEqBr=7Tv!lwaW*^No$M^d; zH)E=lR52q(D!@`mJKmNUXQv_3Ju8FSinC{1J6k5$4|WoaZX9Tj-oLrAb<&>r2LNcA zAwB{Ra&|08kyV%}5bhM~+hA_{nlBHP#-Mo$PAL-KLl$<3%3R@%2nSCARJ4V)V?#S3 zm67pAWN&j|Yn)bj8F%mYV`ZuZ$zc0RVw3k?(uX&*QL}n?w_n7 zl9>1z*F4~J8mC;7rSK1Fyxec=0yTDw$7obSU1TsiZq(wowb?iPH(a8rstb`8-dc)$ zAE7rPPhkmsp8DbfY>Esh6g=m~Jvn(~CnYUGkt;N~BB=v*>?KPA-+g7+Uom4!{c#jQ ztmoyGVX~M@l||0p^_sN<(2NbuksgC|96&yM=lu^5&xu+kTjsrFWBy@l9+gTwUN5Mc zb81%g9jN|@nOxwqks(WzQ0iOwfjt8t^SGuBKR=DGN0&ROskLMn|LXuF5erUaLzzhbB6!m)r7Z{}mm)uRDbrI8?a1mq3_bgkx zecFua0IOI9PP?|dw0P!+UwaU^1jP#|qQ!C)hlveQ83i|C@I8f7fR@4N5B|omJ~#^LYSl>-}l1s{hWQzzGF{W#vJ>mvLnA^u1dJ-XV34i+0$$0t}FJI zUw(%nI>Vgv4La*{Oq;{tSjXt?^xKU-?0MJc+8&C@L8CpouhCVWj&JSkU?l%vBuj&_ zTpOAiDMdmOMx#I1n2mln|NZ>8A4TgAKZpchMghqXMkq$w_EX(V@1gNVq4D-dh$sdQ zK*KRg;bWxRGh>lGkgK1ZJuq9}YG;XRS=n(Py>&Rp2}ce1d?3U@;z_F23wi5Hf*!I7 zwC77Hx`L=xU*8gT+M^p5NA0ckp*uJ1quD6qyW8DuTg?t8Vo+#;Uka!bXO9vo1dxU| zpoi{%(#XFB2)=TE1s&iA9Eb%!xiktOT-Y(`4e?PYt}%SnOy#JV%)|FE^<>}hq90$X G<@`qkH{+%N literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.speech_recognition.whisper.doctree b/.doctrees/source/hezar.models.speech_recognition.whisper.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e6c7a7abc252b93e3b246c69e97436035a1a9ad7 GIT binary patch literal 4208 zcmb_fU5gwy79D%0d!~D4x@YV-EZCDcgd}6u-Q|!FvRPOHdD+FJ$@jh_6zVEnAR=nO1k%)bFaSZ{D&TGRsZZz z7mVkNF-g;0rc^t-m&&BfXl~qRYINJ!i4pnE zuGjBsniwwgb~)>?F5CUeowA5(Uy$kp176i92jvd=x++Le)+irc^iQN%Ar*2YC ziR}|(6rYv`QSwpQ=Bf4(*i8h{8b^3`K zci1*Nv7bjwW;9Y|o>LW_OLZ1ip{f7J@pKf96)fu^d(wT!O5<)XJ-l8{*?vgnG8adU z!S+8brwD&3aPTU&FRq#DVBw?>!bvCWB_9v=GJ?QfK`vg!-)s1L1Aq5$LH5V$Vxusf z-Nz9+I6@D=ky#Dlq_)=0Z;0rR_4FrqGT{dssVZ z4SRW+O{t=(d$?u$l~ib%iwn%{LxPs6^AP)hom9};1v1~?#G@V7Xd0a>Qb0W%*@Wm{ zuxLEPAvOaB!ccRcGaoV_uV(&W<6m5&dv z*+buLKsMsVOsdSmGSCqC0+N^cCPu^M?O>sTR+jjj8x}W38#~qu>MD*fC|XEmVnH8K zgzviTGa}ky#~#xKN7M{zfNmyrY$v7Da*pi==S1a*8fGX;GFW=PN>G0(_k$hq95IS% zp2!rlob8onHhOoYA<*{D`p1|mB~{Ewo(gCf(vG_&#@S(r^oo~G<;B^PjV~K6*#GPx zI9(o~S$b#v!^TQ`X+T*%o&LGpQtrVQauF}@C6w>LdqR2riQP-sq`_;Ne3 z-MR=N96SY3Q9Blnb?tzZM#f8%z0QHH!?etbxWyl$S{XP5Q{_Z>hr`NJq2K3zX(}`= zQyDKZkEbKLD5R$G>dFctiHRR^%>zD%amqEB3V)HRR8H(}!wYci0GH8VLPat-J*=n2 zP5rYk`d`>YQ&ka>=H6S1eD9-jAx~ild>(sp0XF#@C=@*7#(jA7h8+~NfP~Ia{_>;> z*nzi93C`}BVgJC4DfD|$1hXC&7lxrXmTDe3d&|$P4uF}lp&8O+kd8grN3T728}S^d zS+e2YTbAx$Z`^~a#N+jhsxhZ#R_y`yN6cgboAnHtfjaAW#yp;R@Cr!+6@9mV=71TrAu0HKfg>e$Eidk0_@v!H30cAMsp{Hww41uX%20Y#Kx4sw{-5H+XJ zCcGGqaVS8`;0*=+Mn~nf+um5ShIa(a@HT4)T~8rAL15qY#_;=;{lb1`1I}&^v1th~5 zfsC}NtGa&nghCuW-XceJA&z3;0dgFJ67M1HULo`OT{(N^9tF>nYfZ0FPD^{ZismZ3 zhY1HKe0~t}VDX~W%nNy3wS;-dF3_J%rDzFKO?_d**v{^)dF(a2R*P<|`A6|l##g&r zo4)EV=$|2}2_9SEjkEiS6avV@9Z*wuKd9|j0LAz26UYNz!Vns~T{Q?1Hf)u3&Ai{5 aD@^a#Jv=xx_i*l~Ui@pF^zBSJ9sdg3xN!CW literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.speech_recognition.whisper.whisper_feature_extractor.doctree b/.doctrees/source/hezar.models.speech_recognition.whisper.whisper_feature_extractor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0a734f577c543598f1e723b2964495b44076d5ec GIT binary patch literal 49755 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 JgtOM1{XdrQ2$=u? literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition.doctree b/.doctrees/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition.doctree new file mode 100644 index 0000000000000000000000000000000000000000..00c3f203d9b06313275531e4743ea50b6d726998 GIT binary patch literal 74548 zcmeHw3zS?(d8S@7n$cqkd!Sp*r`Y2E3*Gq66PE^II%VNVhsfh;zg7qEM>WH&4% zkp2F8+^YMkzI|IWqs`docyzmN)n8Tr_gDRY{q^6f*A2aW!^=jL0bnoj1W0c*m z)x9ZEexqks{93aS7I%i6VQ1rg-AQLO81id=-PT?Ow>kFxR(omzm4k-Yvh9jj4fR^X?jGvQTEQmE_uIAEjt}kvw=X-mt~2Yb35IHos(nU7lLPHM7u|F&2NGA{ z|2_DBFaF<0T?W_MHP+F|U_;BQwY$M9ICMW(N)d!e)iF6pXUhy1S9 zabD;gP~1M`Tn0>?DLycyWasSguvcr$Lr8YLI2W(~e9AZ_lc1veInK)#hhP4-Vd=GN+Z< zv71;``%70|dE&Iyp7-{#S%q4@jkVlrG@8B@o8p3>Id=7{={jcd}%g2o5 z`F7QBHtQ9u;@H!7F8WThG5xbs*G|3Yn&~qydGU0;Hap#7sYsmmYQB8{EIMJ$+n$)X zxJH=flf6C>OpA#?{+lupOtltgXyU_U)0i(c=gz@s$`lux4%f2ja0?d?Xi}P_rS^1& zf|~{x+9`?hIiaQGK>C+_S@E_!&!9hCsBAniGuT*kTIi- zF>$V3oHf{GSF? zRB5ZzsQ8`4#JYAyR*NT9Io-wpox4uSEQ?fnez) z1xnBMyMZ(Ktd&pIc7x5R788A?Hdm{3&jzEIzJ);_yln7RkiJ@+;X3vZ%~IcnEPNBD zc~sf`ZUS5(rP)eRPJ90r1m6QG_;;Zcj7aMt99=s?L2qI;WBJXthI+8>$}6Rq(_;v( zyBQ0$YY&4j4Cqf}(KJA{8Ck~z%n8Cj3~sp`7aSeKK^AW=NMf^h~xuT{IwBf&79V4`5ja?TcKWQ@5lVc<(1aSKx8`9X^oWmtq_#_a~1NI^Dd zU98x<5q%yEpUd&*{J&8I#Vp@{id?ttPsGy*LClpCO`7VE*8_2D)JE8hn)$I zGEl#RMgdb9+|GhZ@^vqTT#S*MVU$E?zHPM}eT?mYnT6%{Old~W1~bQ_%L!(3PTfwf zh~r}1jt3h>DQ!$1i;WZK>2Tcd$xj^Z+*pU<+qUXjD_xt2lN$r;0@f6*;##cY=nRG> zHB%;ha>tx^fX{gmWJyNmiOg=df`1aTpsp~ajJh`?C({i=eYid)B-IDaTF=k|7TIfV(&{;cJkvwZ^yM@mQs63?N2=XIi8Yxc4BBGvS`4f3Pw^ zsb8Q+HhA1u<1v&~xuhZYmR&E+HQObtrKy_+*g{646fwbS~^+fziDghEc>>EMUvC3 z!tHbpEJrD1cgJ01Q+ki0KB!R8rF=Puq^wI1^xZNcsAhE|Qo&@sIbZXkGaiJ!R&l0| z*bT4Q-e0O)vv60(lJ}Jk+z`zul*q$jty`k4=hJ*NQ4N>>U>q)!&cAlv8JXIpHHyWo z`{A%`@Y7Z2l8Hbl{WI?lLD=69r~*P|*^kN6To%N8wf-CC@8xVMe=1m?3ZY4z1=FqU zFQ5>NpHGFINM9DaUpEu~Vq%Shb+Idm_gWgee{Ck7x;mD`H3n&nQ?j07d6~lgH zu2#2Lv?Z?dcgjF z;cCe+=1-r8D0pcoX!0NivU`%+uB%{;SME!}HaUr}xE~_elgkR~hTaOc5+viCyBRcj zhR49fLLa|5|2@kC!ULw1^)NGV|#}>=5X2*xc z?v<>0IBGqgy_v6_vKzwalvDj6B$RG_f@GBi5~Lapfd8XzgZFsBsnlx z&so%faFvy@soQMKYZU~;oSI~k{HYl9y}lUqx12$LiGRQqc;QOVyzWtLZ{4Lg`j|nU z=l1G`YD~Ozw)zc6+-~<7)|i+95F4D|=I#C#%j!Ojf1*=R6oQNSHjh^V21nSAj{t#l z-2JXro+6KEPbieb@VDyLuJuu-nA<9Nyd8zoc}#C&Jl+~@rm8xgHy1~@vZ~FkjBwOU z_0Ku;zs8tvrut_*D-FP2zP!)yte;|8-Ou8mD5R6_7qqls<6&Wd3IB2UTk+~(jIZXV zin-$DR7jsI+^=fY@`)@eU7K$sy~ani9G8(a)uMa*Y7z5p?so6Vfu7(qHNG!Cn}PlW zdXDK+&i!&(WiE7tOao;hC|)9PBwBKkJMV|NFDa*3czhll@r|Z@9FxfhC>C!KuK6wErTo1EImG6Q7iQYlXv#F1k0?=np6&bC$maWV zx3fVje9pqnTiAQ~;GE4u#LC#&Yg-kp+S%sN(t0t&XiYdW+e_#!ol5WA04~kxOyf1H zDi(jHyp!XGd{A;(uhm%o00dE=wWG6(*<<;>uV9|SsFMKO9xkiqLw`1@pRUG3;X*p`}^^p|>fPPJVF8?e|duP)m*9U^lRpI+#J zwsI3t{@c%H;FRc0admd|Ftk9nMiabZOFuagdizTN9rg)68!0bX-ihlEH5>N+QWX*Q zRl8m0neq8WEIqZ5V_VfUBJuP}8>Vg+@9nUVaKx#pO)1x|hUnLEZ?$oMPyMcwWg-=dI5gCpqgV~kR-xwmrcO%2! zYC60eLqwkr`%&u?VcFnEt5BzNF-`129=!^}{jBU_oJs-BA-lr3(Y9iv9OTA`+WHww zdp#b+la-ub6Uu6;Rg}KH_hJ+>MNvr$fwuRqVtKXgy`AA0R#T1Wrq+*WCTVkx#gbJ& z?kv)e+gRJ&O%Tk`)Pz|lTnP~a?-z~q-EokJ?=#DwR9*|5iSW{~Pvn%ZG}u71wXBf; zP!gnp<}8Gc@<}xs6C3RGI;~c-?U%g;L>!*%H0e`3Qs8c#sP1-otCXo0|8UKS z;dr`wNx+Bz;FubceNB0zI{uKc;~7D@zk))Y*<4^gW~6TfQ`E8m3ZcjtL42>du0_0# z2u^S0coPaDw_73-9Z5`OCg2NUj%Jn^X1!KGe$v?a3?P3Og>nMNKs3EAir*| zs{oL^2?c>1i&|a@>_)@)5-u%8A@l=duQCw&pZO75Gi0)(j0lNZ@*^~6uB!k-ya@#n z3WrCCMEWQTr@}CwL@ecvLT<0Iw;9M?fkHXQ*40M(M&v{-`H{QHTvq|)coPaDcS+^~ zCo#-+rDc`)rN2}V-fQf3282iRL+Bdm8zB_6SS|@% zB3)tjHe)|CFne=;%>Ip$z7aD~OMc9rFxOQ8Gv0)vn5DT1l9*s z&*sPMPmJ`9n2B2QWA==>t^%0xCKSZ%QfW^noj3{PE=S^1IkjP#AjiCXd__j+?(1(4%S zD2Uu8nQp!Wc)QZFO8nAaDhPkW*zF7mAIlHn`;GLC5Q~OnFhJZh>7Z>Z=2hj5F%6+KDeGuanDB2se?6`GJ!44IO> zA~mmNAAj?$aUKkeFA>`I$xf|pSEYbri&zs*eZzP%8YsL)rzVwkG*R{N`o4N7LWZwJ zq4bbpdZP<8BG&dD$=w;%tT>(QX+9hnyWN+tW<@u~<6}q!q!LE)n3Z@|5%~K&mbJG~ zg@L}=fxk|SJLaYeak8mUU*fdy#!|Ib@#)MpZohe@dhLWA&SLbvOLQ*lqlCg}v9I2U zpy5-Do92!SjHu&%VPqB(5i~64j=qA1rD9Py^c6JB!=2uP{_t?8-=rrN?!=x}F5Iaz z*S78Z?XvJXE?d--yQEQ1kvUiQVp)2Ng$7XB7bro}>h49PV^AETARMky#(;tSOOBSAe#P^=`Nk&P=a z(|09YMf{k!z#?M*k)D`}U{5QjBAW9y&a_4pQX8P*_+~O;piUBv6-4d(w~gR zz3r!yoho*<9PT)Tfu*7Zh0F32K1H-BUvrjQ?PkUHaNvzd_WWk6MQ2u4+H`JN%@XN2 zB6hBJrfk*g&C{sIZ=S&CoaMQOEVkI7>gQV>8SKZGwq?JDL(hF{p(WFO6|-Bn8uJ|- z2P|mRyfQl(5HVv&u7?%lGirQs8g?i<%ymR^N9seBpfusGk>Z+gdssI3@#<59io5)C zmGHEkqw65D&kCfl(v~iE^@XAM^%1+e7lrc1u3o|NYO$*qWlSrgt15o=f@DTH2-9Av z;doP#KK(1!&Zt{DBaZbhBYmS6U(}M{i(fX^RltkSn~=Tml!he*9w)#XPoMe|*zHK< zlhCESQOKP!_BO)<@8?JEjYj%Ln&p9C)DjY94jV{bE%`-}X@ z{hg7%5jjyye&l{?uB!lYya@%7n=qQU2>>t7$}Vxt&YnXu>@m_e z!YOLW59iOC>nZ>zZ$d#hw|lYWNCLslS`GhIK4bSPOmo7H{v8}$&Zs` zuB!k}ya@$y8c$y&CeYfE$R{yNd83efy|K3$$h|f{at|Bn8<7*W8oQAJ$w%@-@}G?KjgW|1@=TJg9{6P;^?FIV2TzIPYrUzG%p4|_91G8M z!tHTrFje9>oz}u{#x3CxIXeCGNV{WCZK9|xoQr3jsv+(SkwiYuyOI^-spDY>sJ@7! zLUDp!6GxI(OS6lmm#g80YHD*|SoPa_5T&OC zKA1I@Hu`mRv&le@3%Uqb9Hv4OQfHA3n-cx{&6KF!UWetrN)KzL6LW88HztYjZESCa z^I)^FKb)Uv#`AD>Xvy+uzNE9gFb(OXxXm~~2<`LxVv`7=Eum0)2ra$QBf&6BUSG7U zY~*P}J5D<~M~ofU`ND5sL+x3i!!xml=9&lNEyywGce@jeS!Vj;oZw4Y)}ALXPsktz z5+qFrXVcol0hC?*cMrZ+KB*pY0ksy?1S7juuW>ib}> znW{L1`JxEy0AmVL+OGS7#2<;{gm+P%^E+YF&jx!qvx+6 z1KH!;99aEKST^{{Y78d}As8^ETJh2S-^9}M(U^Y_Nj9#YdPh<}pZd=t zsrS$mQv&R1g_Xc^e`&MiNDYw2L#?t;gchD8qfom+||MGg}sH#_km^i?7t?Y8BiVHQHL7;X>Zcz9IRy(aId( zmdM*u(>Zv4-IjWwuW2EB!KV6}(A94S*OpyZe;t)_UHvqkOu9OKUXn^X`>vU^A*X3? zIcA`}A4UrX(%zB)w6`SNzxMtCafE5_zo#drz1h>sY3~P!hvH1M6;R(Nms))%x;B9R zzREaI6E&rH`7TW5wp7m(IWhmrs^j3nE? zhIs|?glU+A^u#m_ds;aS(}_eKE#EDhwWU-okvkj^kn3;Gb9DmQf4_zMNCHW^R~mHtS*$uH9fcBUSp^87)@jbjZon6;}EUmL3Wr ztfuD;mTxc@9owg*siHsf5>U zQx_8WQD~^ZuP2Lt$IOIu7C(VPz)us7^xLmKZ6=;B9D;bymj9udxUuCB2F4^M3{nys;GMmRF~U^Fl^UH2R^qmzK157?2Op_E9?vR`zR(Y1}TM*&HDr!3vVk*0FTo=A`DHan=#LCmmVnH2H`$}JMQxu4*Nou_F*{e zL7_Z`!%NM?({+O&o-`cRqlcQwbF-Ov|8@hTU&w68%a41^O*ZmF)AA35Cg1}aKjzKE z)3towmUqm=jV(_iITA{#niqcATtokGs!9gHR2dOjH*AtAsOBa2`P7ZLDY$Jfzh?}W zAGe#W#l3m0!grf_lFs#ap->*H@VCvx)8$1F?`ai&(oEdg^6?Scf-cT8DZClh|jq>tf#rC#TDAN0P@r zZ_$fMl@?7@<9>Ksblmr2Hm(cHu12#l%4M#a!ox0ui!$I6DoP#yxHXcI!=+A4OnW;X z#8MTS6Con0R%iOX<(HsPj{SLujt{($<<-u9R39L*)5oKyEoNQUlLvm1UVJiYey2(eLWj$Z>a3>zMSMXO{qFtI>$$XT~9_ zJ|^~_egdVm+-8AW1EaalKZz%!&X06ZZaHNicdlpGVi_c|7&iZGG7MsO0^NNlKWv$Q z9~xespP#W`yy@PSv`fB z2J(1Huo;Hx(tf@D&c5&zA2_~)3QfqF5zwBiuebL_bS-^#%M!vdhI1!`fy&i%^n2`> z)|DH05t^DPf2^;ri_dVML?J9PQ$E9`H~In%c`nXuy;6ShV%b`XK7JA3ZGM=w!aVlG zr_N8XtUW(xgPvoK`MSzRsFv?nML?Gga}4^apcL6`$zR zuich2;V_DD1C(;*fkMiBj05OB?qC&l9kjN*}Hw(oGvC~IY>6BIP*j|aWFOH2l zWw(9gfSji5U~ayT2j_^Il98BFzs%Uh z0bC^S&32I(nHpYnLf323?I8PcFc92OC+x*CAKBvmknkpN@mqXXB;73{6{l1|VbLWi z3+jFnso9c_7&T^vI>=fD@2pT?0jDLi48{^I_Se+g4>LX%8sk?wk5@N)9)1 zG^fgrMD1Kyl+zu+q7t>_KP&U2=DG@;mC2ist#6H(jYVg}1X`ov zdx?{lq7eEcW3Mv&ZcpV$=vzkmMubEy`4Re_xvl~T@g@{RXjhtkO5n6DmP?|QNLQF` z*kRH!8JMj>AuQ52L9xiF#2{l-U0|ed#7xwZAG4CVt^%0xCKSYMXNvWZfNU(9Ng@_c zR)Ae=>|_RDSLX-p79)KlV4{}%fW6XOR{_9y6AA*RoC^JHZ8XfCFdZ4}GFbXKGWY>w zWf|!6YWiV{Id61pLs^>cB2Aj-fuVAf8Nn z9X(bba`WSwVjRakNUREFS~yHX5`c?9l8rkrdLPd7d&DF5-OVTHiMa^a)5^IB zPSPrc@BS>CKVWXD{QHP_KUpn5fh0+jP|r*3Y!kvlzcz28iHFkBxp6F0UziR%W^uNtC{nW^`WD6e1; zEH!o?lXLdkV_KU(Xl}ES-ARtr3eI zviq_E2m$wHb@62KW$CMP>9{gPF^8*r%}XUQg_r8fVwIKZrHaMu-gOHC)*7X@b-Kh? zhKMr=$+MU?p3LHi=ndjPD0zWhpTz=>a3RcbaW@PCcGcxnw+v1?egVrnW5X&MwYyns zhBOC8!pjnSX z>Cn)d7&M3b?kk&JjlEUi#w*MP?i$v9b5|qanyHGw->>8l84(;xqd3055})2h;O{57 zbbVGk@0K4>H0gdpOA9t0w*5}K!K1qYcKBQI>V_CNW(J4}=jW(UuL&m-`1`yYOZ1Tp z-4Q8tG<2PqOoY~x(?y=Fs{MEL)qWAOds_~y1uE3lzEClXg$UV|`lPRrU1=&Q&KC&T zJ%j%6{kTPXV*7FIY326g7Tfm8P7PmCm1nKW3A<7CmhUXQg{9n=OZ01i?YS#6x93u7 ziJfq>BRvZygp@aGXgvY}(dX^x)L@Q;eM?yO==xO|37f)lzV)V#$lJxXOkXBt{sG!m zG!swvxe4M)4^!Od_8BvE&9jp8JoN#5 zZlckek15@C{io(O8`+)Y$cO}8TbzBzTtoj{QI!;OTj!OPADY{3logHb>7M1G3r$my zV`O_zDc@-(ZftoH)0iLiax?M%;VkY)P0Dz>AN6W;lTFOdHhQFUlnxqFO2K`cq$WNg z-f&Egi>V`rZ#;DO&);$Q_L~piy}zWA?>Kn#p<7=aO}y>ammR+2?i=OQ*%SBM&HYTr z{Z2jm9z&Y&AV14dqT(IQ9q3+pJH!sZERl3ZIJD9X<`Yy@we+*- z_^q()(a}}9=tzY)d6&b^6wo z(-%cwH4{%)zJhp9<@=Xr;_1p)5Ldgg>oL4Imr_hfdZ$?RLvw`%Oh}?%Xfg2j41nlZ z%-9&_JyvSnbfnW~(#UH4BI7Z-F|3BT`}@QmzA+rR`0IJei@#DQu9UmKM%C1&V7PqT zG$ZLA+I-8^w?F5KHSE9O^29x0iG~(JYXU9K@hPdi3M`$c=hszW**B47shrH6ch%j* z&ie--Qp;_Dy0-u=Zdu-eCzEBFsXpa4{Ll2Q{P%UGJt~J2?9mU=$QtCv7D)j1s3e|k(t$}FpL|Nsjrn~l=>Q{ z*pY>)5mk`BErg{HQ}WFyltVYNV>r*|$Qw0Jl%%*1QR}#Qa(=1O>}$``Va`;fs&qc18LzRLT|Ur}1P`q#3h?RHNC(MkX3^3J@!`&VJvqia^Bt0m6t_+G|Edrvzx#4EMSvn}DhB$40Cl;ULXE!dxg3{F*U z>E4DPp-|LMlD+Nfx%_k+X?*AnM z3@}yHeHw|&t+ImLgPrTOmx8q>y%rzqa^K+^l#}Z`*?F+!JA#pg_Z=hws3=J`Lq(bQ z9bS(1aV>Q#JuxlCo>opvwQzW9tpO+Z^2H)mmsCHA?hK%rF3%LYGQeINFR%uH;h_jUbdCuCx(u1R;BpG2WNu|&UYCZ4Vi z1o5PcJbwM=+sxE8UvfU@thnE^klU3vTB(#Q&o^l!CAV&ix)9e!_aJfEwNZ`%&h^mm zpmioaq(-^aKp#N~sexpN!G>eh_dym(k^nT2BwI)WeHIPj8t8NM#553l8dw8m%LDk~ z^3!;oJNW$Pye2LPBtv5Beuy8`o#H9|@_>>3N9VoAMC=E+VJWYJAM|21kGc6 z!Rx*j7!3JM->P>Ht_e2DJa!d7J0#X?gRx4d-Nv!CWkKsuutlcSYYn@5C>VkBz=uKM zb#Z!Vv(oWvb#H2}-E82r+bRyd`UQ3dcK6XP*Pg*}v*Y7D-R>c0+o51|-fq}!3mZnD zG+MQM+w-l37Jh8z6_!!U3H;n7esjxZnKo~>6-79nP}P`)hG(kq4F$Y z3%w-;=RS$m-1v~6BHE_+h{EjCx4FyA0d$uzVdSj=pHko0_fvY$c zkTMGPSL|7Y&2}FO#@N>cWp)H3MI;2H9e?h?H3z&Jo}UwaS+?74oCfXSl<~UV2FIzX z73_#^oi^OFt+2B33xqPJMu^c@9`qN1wXE*1FZ0 z?^yFTI9|o?b#|j0?4$wFu9mBI3zC9rYK*bNI4OM&-2_K!Rb2UH&(+Srx(mjvj^D&7 z%rYrhSA%$Mt#%e#IB_3mcoRa;8#g4&+b&4F}L;OQu6yFt{dfP6E3VJ3eMeIX0rkd^f>27c#Qx>;Psyl902(c5kuaTW88nZQiNlf5`8KdXq$di??85pq=bsTzg>DPWGGsEZ3VA zOR#pL;#g=8;N#;BTxKjp=@Xq6su)A-{F)E`^LgMbq^DV-Ps-H9Z~;vfUS~FzueLzK zTW?w{J_s$NSqU;jAww9#i)eyl+de9}u!3AC;Muoo^|Dp1(nQOey@Mzd z>+Qy=?xD_XFv6!3j9-Xitx?5yBM>|v*Id{>6Pz7r6hzC%{0bUXdyb~>;DShM!&*R9 zNCvgJ@W(I>p(;z?NQwN}{RZjOui}pvj8d|X`)Mf?dvVrtE{Aqt@1Z%bb4G(<-k5MA zcZS5}@y|s@=W-~i>zHMy?|247H4l2M`w-a#2QjHQ6T#R1rLJdKI1&`}7H;`D2c0AC zhu}nXKTLlfr@i0z(VvSq;Lim8d2%EEe4PGl9>JgO^ygcf@#h)(bM+SdnV~;#razC+ zpY?QK_Xz!=+tb-?_w1TXcG;;*H)FYUbCyfzM!Iyaq)T7jyYy8)i$i6x$}YtNxD+qo z(uRgh8y?J0#GFYk+33uW?*v=*0m~$4Yo&%^Pa+7Z;wdyQ%Y0l^^%R~DGam-{!fdl1 z&H*gzu2^E28{drcse)x2m9?^87eweo#kPIY=@-Uni8ruppfxJZ4$bU{6RI?E(G?qt zupBntB+?&+=)a+R7&9P?1}tMFc^LD&!ccick~fFRY}jtDH7fN^m8OY#n(8;vIqa}) Nz$_R$Y&9_T{{UK5Xv+Wq literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition_config.doctree b/.doctrees/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..01e8f005ad5ff316eaf9d3dd064ea104b6abc43d GIT binary patch literal 110646 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 bsHOF0rO~aDf;dH_mQ=||?hkq_-$(y1pQX~g literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.speech_recognition.whisper.whisper_tokenizer.doctree b/.doctrees/source/hezar.models.speech_recognition.whisper.whisper_tokenizer.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ae383da78bb9c9cef7e8ae1e50ec68fde68e686f GIT binary patch literal 73328 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_classification.bert.bert_text_classification.doctree b/.doctrees/source/hezar.models.text_classification.bert.bert_text_classification.doctree new file mode 100644 index 0000000000000000000000000000000000000000..60d34a5a6475f7e5b2cf8c1e5e7d48a352218a72 GIT binary patch literal 42423 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 l4Kl50a{7sGYqf9*={|sTgCbs|p literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_classification.distilbert.distilbert_text_classification.doctree b/.doctrees/source/hezar.models.text_classification.distilbert.distilbert_text_classification.doctree new file mode 100644 index 0000000000000000000000000000000000000000..82e73d240d1fd359434bd79d8fc563fe379a1453 GIT binary patch literal 39008 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_classification.distilbert.distilbert_text_classification_config.doctree b/.doctrees/source/hezar.models.text_classification.distilbert.distilbert_text_classification_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..49e6665f516bd1020d91e9e9f75fa33426b3edf9 GIT binary patch literal 55013 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 ve@21VS#ik? z$@S?11V{qpd)r;%IJwS)$>~J`odFGkfFFQ}a8|>77ZeU8r zVpy3*!u^RVB&vl-Fea0Z+yH-w$=VT#%@n=N&UE*5O+wd)qGM} z#3jUGm**zjdB1iLLOgdQDdN*XUX`oG1Ws!@4LX(Ew`3Mxc{X5o*fG1ycG*$hiUb z+kG#eE*16=97f$Smzk(?I^`mI%>KqcVgID=pdgE!mX`TPd%zqi>#_nuXF^T1qZS!a01Q!qaAlx7oAa3TtW8`#k>kn$lr(Tyw2M`(*D=&WV=C=s^O(3 zWl6Os+xhu#>99hC=TfBy*!&QZ}X!-?64?a?PCFs3ONsDW>uzpUy zg0}ttp#9kzvtotE_&9s#i_25nS0m$7ZDXoyzQ%9RoSw# ze#{1A*PBta0b-Sg6p-|gqKt-1 z`R`qyOT;LpGE+IUyz5nVI(%`X<=hy`pKRbe@9h zDR@O@p>d5}7qvOX9T5(m1E}Z^3(vZ)Pb#a@mB`)Xz}87#6=mAu4^gcJ9Hgiv5y9Y~ zmelAExnGG&L#te+iz49ZlrBnTXu7_$hDc`9$K3FU&q0dLMj8TrsPQJS>oO8pjkTr&D7EY>9I)10p!EC z-hK!1?CWW^Wj;t&=6|;|k4hy0uXCzLoZ4x92C6?{wh%b1XUPO5l!rEc;LZWaB5iB4 zy+CTfj1=wp)LcnR7AfO1Ch!Az_k;?#KQ;wHm3>yBs0{-3O1+NDRH%%^@xh&EjKCix zJ{B9IT!#?5=T(U#!pL5a1Puvbet?9_DKM~Pg9#*A;s+ET3U^pJUc}ir)GJGj2CJ)-w8X=5EIy_M~le z%PxxP!Jt9<@6lEMb9Q5A2VVlu5>;A!4H!#vtCYw{#%S_!joIW+qxVODcrRJJ`%WVG zB#B6dFhMcWWkWU1M?-AANoc)WV?>ey2;kuqweSJ*9jH;x?y2do4uAOTC!6bxG7iK7sdQqC{H~wd$)|!dAPtVX?P7wcd1V!#>&# zhI#PE?QL7l8_dNZ(F|WGs1)yxG9?7ChC85(?tj?Ge*g@=@qY&);L8!zf^R*85{L)3 gT)H7XYQ;5*kDA#WRWl0!KFkB%H_R9Ym})Zm8MXozfdBvi literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_classification.roberta.doctree b/.doctrees/source/hezar.models.text_classification.roberta.doctree new file mode 100644 index 0000000000000000000000000000000000000000..24544da156feb9995872d3fa647321a55fd4a756 GIT binary patch literal 4070 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 Dfrr2H literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_classification.roberta.roberta_text_classification_config.doctree b/.doctrees/source/hezar.models.text_classification.roberta.roberta_text_classification_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2c28991b6c1f9f2352e2aa995b6631a10c875000 GIT binary patch literal 65028 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 x{}qLgsTnNVp6P literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_generation.doctree b/.doctrees/source/hezar.models.text_generation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7c051f70dd2f61578b71f716d6590bad0335502a GIT binary patch literal 3875 zcmb7HTaOzx6yA0>+09;(-9iykyHHdLiy#^9;vyj=-l&MUi6_v=nQ>yXp7CINx>+P7 zcmT1Ir9RZ~g2eyfU-5Z7Gnq|kRaVL>K0ZD^KIc2%Ir+Kw$Frl2>d%gJ!Fax$kTlI@ zO0}~)sZ7d@=Egm6ul(YEawm46$eEURj5g1}$n*pVH??E~4S?bq*`+AYCz>Zaw4*j-|b;8*HE5WSi{Rei|{E(MXj!o*A7< zbsAMcsQ<$~9R;_7q#K;hBPUAZLC@X2TF%&B$kZy-hmFAQeO1otDC!W#XD-X?7{S5U zgM(A{oDTzg9&cwaAnv#Exr5Kk_`HI5u~)12jDtFR4Nmmn!~n>USs}|j?PNG4pKTx* zGBJvFvtRE$>LPZ--hP5WATh|T;#E3MruO6s&P*1CdDH#oruL;L(Khcum)d=vC!$R0 zoQrT7`+|K%?M_CPDJ=|hceel%QdIZ{q!vQX+=cBko~9_53wux-XazfYna!x8sk^&j zcdP2qG8gC2-9^={-sOY-2|KQWy^UObyq+ODs^dF8Q=}-Ua%4SeAK_dlX-G0{lWg~N z2PdS-`MS6Rf!!6PTL?S`hojGAS_*nAk-5RMS}Z;!U*S>xKRn6~9*4l=hVAh@rOSuG z_$a_#0+QV-2v^R&2yTMoAKrS1sXE2z?Cqd7eykSjPmLo!mp>zVwZoy_R;f5)_wA^* z)<%oA8L78cfh66+T+a#uv9fGmth^h;IM{aV*>=1l+i^p-tLz8;M-Wg;&JQ`T*~tXx z>Csfu@-KVMK5Z1qwWxSME|gp-sssP_j5I`q3aNFff+>9!+h27VV8_k1m%J9}*|rOBnCoz1&f?168aAcJ^0mnw6R3^h2d zh(W2o8*7-n5hPU5N)n%O!{VkV;l}zv-J}o(MGL7+Ea*Lo@LjdLjEHvGvqyBv5j8_h zsT-x9?WJ^9E^yuOjHnz@gNC9cgJggdCDcF4{ceXmM~q^cCo+YWvxCyi$M20b$M>6; zH)E=lR52rYD!@!gJKmNUXGbB@9V@-cinGUSJ8LG`KXw?5t{iBN-n_iAcG4dD2LNcA zAwB{Ra`r%wd{JW1K)6$^uY#@ZQ;H^1r7@_Tf=BYicbKW|qbBEgBf`N`02SR}=~&+m zNoi!f64|R9*g8ndtcY9uA*z*tg9KGhgf}>w!?xJF@l1omM2xf_Pu0A;JdF3`z$l2&>ut* z#ClSk8z%FKREx;j>t3^R0GhF(8Pa2rjvdIycV2%R@f@movS!{(R_0%7%%f6?$LlFo z6Hd*%x&zf8F_Q^gHZWv{5=wpB-m%93WEQuz**+lFU`2{{e5lWJLzXe)3nuUZc(;V~ zxZl?qL6!YbqNp_j^;ESE%UH;SgkixRCyc-!Bt8@yqFjX#r%%fQSNK`F8Ubn&z`Otn z&*#8E!wT0tPoPz=>G8~iS4a{{(GRny4w%7kk)nRj;R2)7;F9YJv`%B15iVkk{hnnj zw~y+<9bgsnz-bqDljisQP;7Ssm!Nn7MYL6p;xMrxYC*wG7>JMH6rg4BV*s$hjO4l7 zUb`d>V=~0BHg6YwUqYC$A>a1G@co4S&HiG7arP&BP}+gtG3Nzb^<(MZ7ff8RKQBu5 zf?xiH;hJN%d4QgJAA@K=IMy z00+mYgAb5vPmB5DmYhF+*ucPjrI{bfS!oZtxUB+tkZ_>iX9B?u5>HQ!UdUKi67-Nq z;5?g2(UwA``t+Kx)gD~3IB0II4qdxsA8ke%-`B3M+p2dk|AIUd{Cq%#IJ=ifA%HQw z0o`-^lUn`&>HpPz2_nExI#3FJglRxOT-b8xCGlP>uF$(z&)}$*g$M3#>S?}aL_fHc Gv&p|4tLP&D literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_generation.gpt2.doctree b/.doctrees/source/hezar.models.text_generation.gpt2.doctree new file mode 100644 index 0000000000000000000000000000000000000000..26e50929f768cb0c686d22a3c95472fb62a1b448 GIT binary patch literal 3972 zcmbtXQEwc#5tc38Nq3U&Bqt6E*h(A}Y2-F{o3=rbrf3i#c{6fJnxan)7Q9{Fkrj8j zCArqAK!NljMFbG=gW0?UNPbWMRX>uud#7`qxTpac$Kh}|ocX?)*)Mzlx*G3>@|>}!-bwU z=l3>bw;g+5023VB^1>-FfcWuUvdfzasG5ICg3WY4=pNYx~U$XLe8UlDb(vCw54T zQG8w-M8-#Am*?8QdOs6HYY6eXSCS(BI>_s4y_mymMHgPDw)=)G{gz{6c8?vg`)rq; z*-sKC3!139#DkMdsV!~UBvF$^B0W;5`-Kp9@26?v%i1Qg8^@;N8v_z z-9O#Te)NBtNHbY3_!5?=J>q31>YOgP&w=N~XY6xo4+^r%X=RvuvEPM}cjLwd`OvRe68kw)gD1{}4L*dXkIrpEAciLQCtwZVl7=**q%|A~ki6z}?I zU)H9ojhnIY%nq7ZNd?P;oS?-RQdC$R#tT#2a)ITrS=LHmbqs>0zP0#WT-@{QzH;`? zLP}FgLpL@b-Ll8N8>2j=tA$jBgJh&p7%LQ{!Z&#hllP*83K}HoB{wW>8ys$I4m2GP zVNkS^%A|rmrU>6{J7h$3%bq=@D~_lcVrtzg^=vPv^LmNvMwdjDh#E8$B?Tk{q$s2Q zQSNIy;w55~(lV1dw45E(W-)npqESBW{hOO9RZ6Oqkun#kRY*JDmKkTqG141Wdclgb zXInd4CfL92C>mWm&>p>ib7SkIJ@F3!&@@AQ1Rmt4!)BD}$I zkOcJm+^?{5kF40u^zJ|njYdP|Lhz`{)fzMMJX+_;ZV-n65N zRw;slHdkgLU`JjuC-B`f!~TRBQ|b4T1Y$j{t_;KYDAh7?_O90q4nPy#y+C>l(s2O! zj^h62}L7mN5c< zkoZV8L^*^Ir!VRXSNIV<3 zK@O7|qLvi33Dfl{oC35AzA*qBOijLa+dDU;apr~?))w8O?ckEjx z7-!$Gr?nmU9dlK|RX^ZhC^NA3fZ?ZM9CcgP5DUg6doPrGRA>qC@mdgin@d8r_hWK0UOi|Bk zd%TI@5Ypp}g9kn*2y>M9Le=WU+-*vt9x@8V7jr2(QUukPw}hSc;D*IPduup!=Z1YW z9A$imySr_x*}-g#GMeF&1YB|UFq1+6ZFmFv=>CU|{3(F&mHPuq0=^VcT<~qDL4tT; hS50q-4?A(d@nJKcgEvbL;bHCzep4I$2vg6e{{euO4Cep< literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_generation.gpt2.gpt2_text_generation.doctree b/.doctrees/source/hezar.models.text_generation.gpt2.gpt2_text_generation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9e436cd459b55f8e902e11e30c9d0778aaa2e595 GIT binary patch literal 47007 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 PpRp=g8=;sv=jQ(p0V7=RYV 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 QEPNjvc>*AdN9Fkc2l?xjIRF3v literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_generation.t5.doctree b/.doctrees/source/hezar.models.text_generation.t5.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bb89b7cec09b81a1b1fe11117b86569a308cec37 GIT binary patch literal 3944 zcmbVP-)|hZ5tc38Nq3U&Bqt6E*h(D~u@y9Tn;>zKq(BiMkA@FzQ}n6Eg15^%vf?f` zB-c6x2#`FahyVh9Fq;?EJwX9V}o!x;(#<<88E!{I`2VUK9p~ubn zeN8jNW!WBQ9oA+0&)hld*^c2x(6udl&gj=fjSE~38-^~--_kiPsUqIU*gSqvk?exZ zsq;2qV(%}|frbBYa_5GV-@EvZZbjg=aqQIg()O8b*LIuNP3)fFC3TZ}N^GAPqxiHo zh>DNGF3+`p@qQ+V))3-*rzA!Ec97TAYB7b+iq5=FZTAhC`z^>fK}_t`ExvriKy z3!139#AB07sV2`N>jX`(M^mgt-=Q zIK=X;4N(&$c=$o|aKhg9abUm3tk0p6u9upp=%SxPopUR9%I@r|1iI7E-g1%znO|PdjX~F}hTw zs;F{gJH>y%xwRAn610Vc?duh$$Pyr1(lxmBSNLz?@?Q`;d>Y{T0KqhPR14eJknbXDVz`Y5a8;G-e72(R+N0Dd0fACsyTZ0%-=j_9%Ir=$8)}0tf zd_KQL3>&v2Ls#iIXD{rqG1$h8wrOd$R^cS;RNl@F!m+Y!9|Z?TFpe@k@?;sUs`SV_ z9xbc%3I*}V&1I`C?60}8yOtFcwVO*&Te#W#_D!QmsYPfTX{F>`Q5_3+$4Em&bQNZNKcw+Elf1 z6E>XKUK1y&V7ZqQv=c*$3X8*dVTxNWuS_!ONWV^8UVBWi}2S}&D4wv*FoJ;!x}OQK3d4H}A)0+Jq5lu`dE_k$hq z5;00?naLbl&h~0E8+|g;D4X{F=4MKjk}74S%mr!`(vG)f#@S(v^qQ4Uu;T35*3Om* z_Afh#Mpq6jkKW(h*g9!X`~v_q%@7}f2RVBzNI9=Dq#)cm*0)i&?Hh__QspU%JVi|@ zGvAgbw%fD@goEb*D*D30v92AE+Q@VzvbQ;~b)45lmA3dpRD*z{AgYoGZ*UkS0sTJr zD^aCsoy&Alcs!lZMI|*&*G~qBWF~#iH8%mD!!+lbOoe|)XkZh&zvKltc7(@hFd>i( zMvoh{blKbNTmBm^(Ny_z^0r7g@PB{xThzN?4Y7milCsq zm01Ybk(W#feD}<-zhcHz`m-c~SdXhK!!RaFHBX$q>otP|&_qWskRF3{96&yL_k)iS z&w-j{TjsrFW&YvPJeW#6UN5K`b82Sc4zNFArVzNSXUG&3%6$Vrux9{dk+$4yACPJk zMvBIKqOVFr7AfO%Ch!4x_k{GgKhgyO%f6~XYK=g>5!P{;3Yn2OHrTU_5%`0|N3tQx zA%r-6QCGOakK$n%Xo>(P2S|810|u5=;f}8pXxdwPyzt-^l0+){Dfq$xGZ-^+@b?NX zFiH(Bxtl@jBBcf4BE_!;UuA>ar_J0Cu!>o%Y1ej_me2h(Z4Y8C0eJyMv{(*unA8w8 zr>ISsq)*`#pk?q|0zsYZqNlA&lmb?|WhVe$IYkub5z*{m5R{ zw&!=uRRvf5IQ!Ez6W8p=>zcjem#;9Db4)oe(OF+$fbB-d+KRp$r`y4Yy=eQ~vWH@F z&}fhD2XvLc4{z=4V8(xy$jV^O*M{asN|BL_(d3T-v&l!}PsbmAk}Q7raU%FMiAaVp z0U7DCpX%o4Ky19p)|8r<$4LqtpbV#=!e>aguZ-pVft>y9?16Fp)^e7pr?ov^M{fw{ zamK*`pAUpMN_>%8>czaROQIgK3A7heDOy4V)i<|J?n literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_generation.t5.t5_text_generation.doctree b/.doctrees/source/hezar.models.text_generation.t5.t5_text_generation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f2ee97bbbfc2f4a453cfc272ee7dcc685ea8186f GIT binary patch literal 49107 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 NN>)ZFWX`#{{{?1Xrd|L5 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.models.text_generation.t5.t5_text_generation_config.doctree b/.doctrees/source/hezar.models.text_generation.t5.t5_text_generation_config.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9880d411ea632452a27e2c67760bae7de74e81ef GIT binary patch literal 78002 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 R4Vj#iO_&Q7i1wZF{}0KJ*opuE literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.preprocessors.audio_feature_extractor.doctree b/.doctrees/source/hezar.preprocessors.audio_feature_extractor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3a070ae5537edc3bb93cef0f001d09bc683d7eb6 GIT binary patch literal 60338 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 F{~ww=7`Ffb literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.preprocessors.doctree b/.doctrees/source/hezar.preprocessors.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3dc46736cdae87abbe62e51b9e4440c180bf97eb GIT binary patch literal 4326 zcmb7HTWci871pjaBaNidW$j&zcjc@xo0Su5#z{*!AMAs{F9yHnw*>N4-==4FrC`B`u2ZL~PM!0e@0|KW z=O6z$SS$YQzRpObvjK~uR7PAoyA{bWPk3tFNABf6y5G5D+f(dZ%Up%r*)?c{B;rW% z)V=5Io>w;_)`M#Orskm$GHsSqhq|=+o;#+V?HFNV-kP$viNDX(AX7Y3GUQrIrSE1e zJY!St{4%WCc!$rtIae!x;7V(|8G~)c(V^`H&1GoacB?y#>_#k7?ne2T*==Tw664(9 z?*6XpBGUd|n_Xc6dRUrON|qflP#X7m;q-bwrkyev3vV9O0=x5eKCWD*OP}3Z zmQ}8SU9XmQjpzk`d-@8lOfSO8FX49&zx(*TjO)hubX=)i~`f-jRy=4sRl zVi{jrgAZhA6mJK(n!D^Ex^17o{Qd|7BB?~-{E@wPx#qygGoFg~xzg^>j@ez2hH)P8 ziHM8E^b=;c5;lu?X2_jxAigXsUxzn+a(c2K=s`AtJRHQE6tNJS3Gj3Yj(Q; zv6g9k0o`pR$HGYOxCeApIBXOC{=ur3?SAE>lXJzgj4Q`h9sfP7YdIc);!U9Jj&8-8 z)p1)Dx5Bu+Kw}feE3mW;EG06^z1xcPyJg#=1(LEahoq#1q&|@J{TjU$Kz_6`z8o+# zqPM^%Bm2!O;K1@o$Y8>m$rTSkABu%WDqv$|zjnnsk$`uChKdUP`&a0khTG&I?xLoElaO}k&odOFxr2!z|h@LrUu#3VCf0@0#N_@a)A103sBF& zm^IrGX~btw^3r8cYLm;c-N=|wC^4l^zI*p6b;;T1%h{8sO;UGc9PB`(>xp5=fAKBiNqY5+60~kaMHQ%r#!(gX8 zFu*Bi7;aa?T*Vmm!PtSX^?nuycRbx+ID2CvrAejXt;y4Cw(lDt)Qey?L8?1Q_B3i( z7NBzazDi@u+ogoZypROv!cb6m95}IBP_-a%1KK00Oc3)&9PYbrw~58guwxJTOu%af zbf;^jj_pKzoKJDw-Z@h#yao-$SprGV6C(GQav$0~k-|p-PeU0&%h_ITCMU0-Xo2rL z%aZ|DN~(ZZ8pWV6gdKMajkEiur(3&pid~#NTA5kdg8pmw%1svr)JyLyPpqu82mS&8 znkM)s#)X{i$1I)Zp2Tq(jIX1h+h-IHrHTSne-4gFL*G%1Y!?|g!5!fa5do;^7G{pR zc8}#o1`CnBE`Y6mlqXrx;16Cc1Of!7QWpCS_X|mZejodVDAPQTWH3uSo(}jdlbQ$Z zl?6mX6Fd@Hl=$2aBB9wh_7|zF+^q8gIkt<-XkWZ1M{sReb%V{iE{9HO}@5|O8V zw+QjxLCb8M>+O-L z%;WWptAXHVQk;S8ACgI89M&^zj1-D|XSZdK0LUb0aB&HPO z2k>sh(&K(tCk$Ek+Z;));izYdaXAcP8M3mOv_~N^-%xN>CL6q5xDcz)@(f4#S5eU= zRwRIy5)zS4fPtD7Zg`$R5njInw0#*>oM=60Q@kNlIzZk1eu~^&rHu`_*H59QIi|-=nXAhtngWe- z>pnz*dHCSk+8W+ue;Ufn;9aH-kBpRY$U@@79~bZ)erxcZ!8cwX&c6NHFc#xs32F$3 z$V*@TiUT#pIR)sv9v$xi!#2T-CW(Pn!(!$ ztQq2Yh}3X)CzNpvaN!Opo0|_R`A3NP2kxg}0KC+}C3stF5O#TBL!L|Gokm>1cBguu VAt$FEvD=a7_lgRA$C8f+{{uICm8<{& literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.preprocessors.image_processor.doctree b/.doctrees/source/hezar.preprocessors.image_processor.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5886a3ad78488c1711938c7a25158fe3270b3f87 GIT binary patch literal 69964 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ɉ^PRzWIVQsrviV0 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.preprocessors.tokenizers.bpe.doctree b/.doctrees/source/hezar.preprocessors.tokenizers.bpe.doctree new file mode 100644 index 0000000000000000000000000000000000000000..32855484946aa6bb66d0f6d00eb6fa502ce23a00 GIT binary patch literal 81614 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 Qux)vXxYDN;KCl`4e-}bkDgXcg literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.preprocessors.tokenizers.doctree b/.doctrees/source/hezar.preprocessors.tokenizers.doctree new file mode 100644 index 0000000000000000000000000000000000000000..aa83f646163649aa4c802e58c29255990b30379f GIT binary patch literal 4084 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.preprocessors.tokenizers.tokenizer.doctree b/.doctrees/source/hezar.preprocessors.tokenizers.tokenizer.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2341ceb24dab301b1706c0b08e06ccd549c8be17 GIT binary patch literal 240150 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 sxfdPx# literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.registry.doctree b/.doctrees/source/hezar.registry.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2d5cf39aaa9b264927fbb13ff2d62ea2f3ffc5e3 GIT binary patch literal 52095 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 XuYn6{8I9rudqp}33&H|2OLPAR3`-ao literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.trainer.doctree b/.doctrees/source/hezar.trainer.doctree new file mode 100644 index 0000000000000000000000000000000000000000..204459e113ec9a4e739c924afbc5ca547ce1151d GIT binary patch literal 3748 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 literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.utils.audio_utils.doctree b/.doctrees/source/hezar.utils.audio_utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ed03dba0db7c958db1bee35a320f94459cd34e7d GIT binary patch literal 124910 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%0AcX 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 AbN~PV literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.utils.data_utils.doctree b/.doctrees/source/hezar.utils.data_utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..903f14e8a4dc80d050eb23be33619dd3c03e7b85 GIT binary patch literal 46052 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 F{tx<13L^jj literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.utils.file_utils.doctree b/.doctrees/source/hezar.utils.file_utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a55593f4fab7e2069adf76b29574cdfe3af8bd75 GIT binary patch literal 11384 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 R>C&iKo1%Lb2sJKk{tq%PI{g3u literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.utils.hub_utils.doctree b/.doctrees/source/hezar.utils.hub_utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..437f658f5519cb59f549311e4e6f377b65f76202 GIT binary patch literal 31182 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 AeExnHQJ#9<>zVG> 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 X>9;}i1&gRK*R^q#5DJy^Yxe&E6nj6E literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.utils.integration_utils.doctree b/.doctrees/source/hezar.utils.integration_utils.doctree new file mode 100644 index 0000000000000000000000000000000000000000..afe2e80a5487e2f3f8aa5e14d01927ee88ab1002 GIT binary patch literal 15096 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⁣r|nD7@?i$l1ukd+eg~ zpVsYfKn-3?Z@?O$`VMvlS{2bfFEU`4GecTxzL+&j6~5^BJum6gk~yGJi+!^7+ANX- Ilk9K(AA|ZjN&o-= literal 0 HcmV?d00001 diff --git a/.doctrees/source/hezar.utils.logging.doctree b/.doctrees/source/hezar.utils.logging.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3143031b17b465eb80b23a6ca306a99bacd94644 GIT binary patch literal 9322 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 T18s>)ZLQJ_A;DBckaPbJCG3h{ literal 0 HcmV?d00001 diff --git a/.doctrees/source/index.doctree b/.doctrees/source/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..80bf6c73c516e9a26a5c76804294e88f88c98fbb GIT binary patch literal 3401 zcmcImZEqYk5N?y+G^enY($N=>zV<;8dRHFPdAPvp_H!R^)GZ0lSkHD{ zKWQ(_)?K%`=aIW2xTOB5nh>{1tkrx{S;QCOS?8Gvci%__F$O|>cO)s|S1+r|v&Dp@ zGfnfLQ@IUGreVvo9d`HdGTU?`8#DSN(arz3nitfu(L|=~ASU;g`+tl#r9p7x5FFb(Vs}IK*&9eXyN9yAiQilJ zy@TJoNGE%b?IVp)W$&NMNiS7JsVbQ*r6gjAT|y01YBgO3QM30dN9?xSUakQO5A0}O zm;0#QtLx@}@x*O&nTjf-ITy7KdqiBXAoGltmifaq0Ed({#sRabP!oUZx{PNTC~@ir z&FNOqlT|T688d%)$!*pQFiMIO=x%~pXLku1`LfQ&-NP<2^7(4|+)fkx{xJ|!QtioV zMn7F-a$%>M(6$6_04PVc?URz@G-`6+4K1BN{GQAcK9x#?MXBQecg=6wq?r?}(^S-?q(lRb|V{`Xjb;9J8DSTWJE6KK-d)R;vQk;Pw0U^h4MMX7Jd$~?bm1Wx z8X&Vwz<|($4NTsS5-MmdNshT?$)a>e z8X~Dpo^r!&jnADVpiuCFTmQ|~ciga~Wzsg65X^RvObG5CnBiV$)|Tdz@fc!r zP@Y((>o2*2srCoG699M(8zmk4}dI^mYZz=i75j@PTf^=A}u;2<5MQ^19-0p6>z_8 z3Idk>P=VA2iMn2|<1!H{CGqWWdnv;UpQ7-QY{+t*LY$seC0v9Fs(uujCV&?N5-xLK zV9^z>g+5`b$%-B?0(gZYk&0pDnR#Fa&rJsYp5O|MQVSJMz>D^`xnPiRFL@!$v&Em`1w;(H zXLl*MtcO7MSDb9&@$!R(LwvRV{=LxO1(q)ISh;KGLXE>@7(8FPF#F@e>-|%O%;$@P zt{d77viJ<6OAy9yHeC93(%v)QR(_wYAo+r|x+fnA>-q#X1JrGmvM3H@uK z7fZSnb2KpEQL2@ zD^)@Ogopvp>&90BW01c<@X!6X=oFZz(Q`1%8*n2!Y@6&k@m4FY;l0(2ZJ^UMAbT?l Z??BTs!$jjYixY!~Q&gBJp80BW@E_rsKrR3P literal 0 HcmV?d00001 diff --git a/.doctrees/source/modules.doctree b/.doctrees/source/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7bf61ac402543aec0291537534769b063e3c6bfd GIT binary patch literal 2746 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 literal 0 HcmV?d00001 diff --git a/.doctrees/tutorial/training.doctree b/.doctrees/tutorial/training.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0f37cc1ae7660eec4ed02bb36c2b8e48cba5f8ed GIT binary patch literal 18069 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 bai@%Az-=-clM + + + + + + + hezar.builders - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + +

    + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.builders

    +r"""
    +Builder functions are used to create an instance of a module e.g, models, preprocessors, etc. without having to import
    +their corresponding classes manually. These builders use modules' registries to do so. Every builder gets a name and
    +optional config or config kwargs to build the object.
    +
    +Examples:
    +
    +    >>> from hezar.builders import build_model
    +    >>> model = build_model('distilbert_text_classification', id2label={0: 'negative', 1: 'positive'})
    +    >>> print(model)
    +
    +"""
    +from typing import Optional
    +
    +from .configs import (
    +    DatasetConfig,
    +    EmbeddingConfig,
    +    MetricConfig,
    +    ModelConfig,
    +    PreprocessorConfig,
    +)
    +from .constants import SplitType
    +from .registry import (
    +    datasets_registry,
    +    embeddings_registry,
    +    metrics_registry,
    +    models_registry,
    +    preprocessors_registry,
    +)
    +
    +
    +__all__ = [
    +    "build_model",
    +    "build_dataset",
    +    "build_preprocessor",
    +    "build_embedding",
    +    "build_metric",
    +]
    +
    +
    +
    +[docs] +def build_model(name: str, config: Optional[ModelConfig] = None, **kwargs): + """ + Build the model using its registry name. If config is None then the model is built using the default config. Notice + that this function only builds the model and does not perform any weights loading/initialization unless these + actions are done in the model's :func:`__init__` . + + Args: + name (str): name of the model in the models' registry + config (ModelConfig): a ModelConfig instance + **kwargs: extra config parameters that are loaded to the model + + Returns: + A Model instance + """ + from .utils import list_available_models + + available_models = list_available_models() + if name not in available_models: + raise ValueError(f"Unknown model name: `{name}`!\nAvailable model names: {available_models}") + config = config or models_registry[name].config_class() + model = models_registry[name].module_class(config, **kwargs) + return model
    + + + +
    +[docs] +def build_preprocessor(name: str, config: Optional[PreprocessorConfig] = None, **kwargs): + """ + Build the preprocessor using its registry name. If config is None then the preprocessor is built using the + default config. + + Args: + name (str): name of the preprocessor in the preprocessors' registry + config (PreprocessorConfig): a PreprocessorConfig instance + **kwargs: extra config parameters that are loaded to the preprocessor + + Returns: + A Preprocessor instance + """ + from .utils import list_available_preprocessors + + available_preprocessors = list_available_preprocessors() + if name not in preprocessors_registry: + raise ValueError( + f"Unknown preprocessor name: `{name}`!\nAvailable preprocessor names: {available_preprocessors}" + ) + config = config or preprocessors_registry[name].config_class() + preprocessor = preprocessors_registry[name].module_class(config, **kwargs) + return preprocessor
    + + + +
    +[docs] +def build_dataset(name: str, config: Optional[DatasetConfig] = None, split: SplitType = None, **kwargs): + """ + Build the dataset using its registry name. If config is None then the dataset is built using the + default config. + + Args: + name (str): name of the dataset in the datasets' registry + config (DatasetConfig): a DatasetConfig instance + split (str): Dataset split to load + **kwargs: extra config parameters that are loaded to the dataset + + Returns: + A Dataset instance + """ + from .utils import list_available_datasets + + available_datasets = list_available_datasets() + if name not in available_datasets: + raise ValueError( + f"Unknown dataset name: `{name}`!\nAvailable dataset names: {available_datasets}" + ) + config = config or datasets_registry[name].config_class() + dataset = datasets_registry[name].module_class(config, split, **kwargs) + return dataset
    + + + +
    +[docs] +def build_embedding(name: str, config: Optional[EmbeddingConfig] = None, **kwargs): + """ + Build the embedding using its registry name. If config is None then the embedding is built using the + default config. + + Args: + name (str): Name of the embedding in the embeddings' registry + config (EmbeddingConfig): An EmbeddingConfig instance + **kwargs: Extra config parameters that are loaded to the embedding + + Returns: + A Embedding instance + """ + from .utils import list_available_embeddings + + available_embeddings = list_available_embeddings() + if name not in available_embeddings: + raise ValueError( + f"Unknown embedding name: `{name}`!\nAvailable embedding names: {available_embeddings}" + ) + config = config or embeddings_registry[name].config_class() + embedding = embeddings_registry[name].module_class(config, **kwargs) + return embedding
    + + + +
    +[docs] +def build_metric(name: str, config: Optional[MetricConfig] = None, **kwargs): + """ + Build the metric using its registry name. If config is None then the metric is built using the + default config. + + Args: + name (str): Name of the metric in the metrics' registry + config (MetricConfig): A MetricConfig instance + **kwargs: Extra config parameters that are loaded to the metric + + Returns: + A Metric instance + """ + from .utils import list_available_metrics + + available_metrics = list_available_metrics() + if name not in available_metrics: + raise ValueError(f"Unknown metric name: `{name}`!\nAvailable metric names: {available_metrics}") + config = config or metrics_registry[name].config_class() + metric = metrics_registry[name].module_class(config, **kwargs) + return metric
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/configs.html b/_modules/hezar/configs.html new file mode 100644 index 00000000..15f4c29d --- /dev/null +++ b/_modules/hezar/configs.html @@ -0,0 +1,986 @@ + + + + + + + + hezar.configs - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.configs

    +"""
    +Configs are at the core of Hezar. All core modules like `Model`, `Preprocessor`, `Trainer`, etc. take their parameters
    +as a config container which is an instance of `Config` or its derivatives. A `Config` is a Python dataclass with
    +auxiliary methods for loading, saving, uploading to the hub and etc.
    +
    +Examples:
    +    >>> from hezar.configs import ModelConfig
    +    >>> config = ModelConfig.load("hezarai/bert-base-fa")
    +
    +    >>> from hezar.models import BertLMConfig
    +    >>> bert_config = BertLMConfig(vocab_size=50000, hidden_size=768)
    +    >>> bert_config.save("saved/bert", filename="model_config.yaml")
    +    >>> bert_config.push_to_hub("hezarai/bert-custom", filename="model_config.yaml")
    +"""
    +from __future__ import annotations
    +
    +import os
    +import tempfile
    +from dataclasses import asdict, dataclass, field
    +from enum import Enum
    +from pprint import pformat
    +from typing import Dict, List, Literal, Optional, Tuple
    +
    +from huggingface_hub import create_repo, hf_hub_download, upload_file
    +from omegaconf import DictConfig, OmegaConf
    +
    +from .constants import (
    +    DEFAULT_MODEL_CONFIG_FILE,
    +    HEZAR_CACHE_DIR,
    +    ConfigType,
    +    LRSchedulerType,
    +    OptimizerType,
    +    PrecisionType,
    +    TaskType,
    +)
    +from .utils import Logger, get_module_config_class
    +
    +
    +__all__ = [
    +    "Config",
    +    "ModelConfig",
    +    "PreprocessorConfig",
    +    "TrainerConfig",
    +    "DatasetConfig",
    +    "EmbeddingConfig",
    +    "MetricConfig",
    +]
    +
    +logger = Logger(__name__)
    +
    +CONFIG_CLASS_VARS = ["name", "config_type"]
    +
    +_config_to_type_mapping = {
    +    "ModelConfig": ConfigType.MODEL,
    +    "PreprocessorConfig": ConfigType.PREPROCESSOR,
    +    "TrainerConfig": ConfigType.TRAINER,
    +    "DatasetConfig": ConfigType.DATASET,
    +    "EmbeddingConfig": ConfigType.EMBEDDING,
    +    "CriterionConfig": ConfigType.CRITERION,
    +    "MetricConfig": ConfigType.METRIC,
    +}
    +_type_to_config_mapping = {v: k for k, v in _config_to_type_mapping.items()}
    +
    +
    +
    +[docs] +@dataclass +class Config: + """ + Base class for all configs in Hezar. + + All configs are simple dataclasses that have some customized functionalities to manage their attributes. There are + also some Hezar specific methods: `load`, `save` and `push_to_hub`. + + """ + + name: str = field(init=False, default=None) + config_type: str = field(init=False, default=ConfigType.BASE) + + def __post_init__(self): + # Class variables cannot be init-able + for attr in CONFIG_CLASS_VARS: + if self.__dataclass_fields__[attr].init == True: # noqa + raise ValueError( + f"The parameter `{attr}` in a config should be either non-initable or unannotated! " + f"\nYou should define it as either:\n" + f"`{attr} = '{getattr(self, attr)}'`" + f" or " + f"`{attr}: str = field(default='{getattr(self, attr)}', init=False)`" + ) + + # Convert enums to values + for param, value in self.dict().items(): + if isinstance(getattr(self, param), Enum): + setattr(self, param, str(getattr(self, param))) + + def __str__(self): + return pformat(self.dict()) + + def __getitem__(self, item): + try: + return self.dict()[item] + except KeyError: + raise AttributeError(f"`{self.__class__.__name__}` does not have the parameter `{item}`!") + + def __len__(self): + return len(self.dict()) + + def __iter__(self): + return iter(self.dict()) + +
    +[docs] + def dict(self): + """ + Returns the config object as a dictionary (works on nested dataclasses too) + + Returns: + The config object as a dictionary + """ + return asdict(self)
    + + +
    +[docs] + def keys(self): + return list(self.dict().keys())
    + + +
    +[docs] + def get(self, key, default=None): + return getattr(self, key, default)
    + + +
    +[docs] + def update(self, d: dict, **kwargs): + """ + Update config with a given dictionary or keyword arguments. If a key does not exist in the attributes, prints a + warning but sets it anyway. + + Args: + d: A dictionary + **kwargs: Key/value pairs in the form of keyword arguments + + Returns: + The config object itself but the operation happens in-place anyway + """ + d.update(kwargs) + for k, v in d.items(): + if k not in self.__annotations__.keys(): + logger.warning(f"`{str(self.__class__.__name__)}` does not take `{k}` as a config parameter!") + setattr(self, k, v) + return self
    + + +
    +[docs] + @classmethod + def load( + cls, + hub_or_local_path: str | os.PathLike, + filename: Optional[str] = None, + subfolder: Optional[str] = None, + repo_type: str = None, + cache_dir: str = None, + **kwargs, + ) -> "Config": + """ + Load config from Hub or locally if it already exists on disk (handled by HfApi) + + Args: + hub_or_local_path: Local or Hub path for the config + filename: Configuration filename + subfolder: Optional subfolder path where the config is in + repo_type: Repo type e.g, model, dataset, etc + cache_dir: Path to cache directory + **kwargs: Manual config parameters to override + + Returns: + A Config instance + """ + filename = filename or DEFAULT_MODEL_CONFIG_FILE + subfolder = subfolder or "" + + config_path = os.path.join(hub_or_local_path, subfolder, filename) + is_local = os.path.isfile(config_path) + if os.path.isdir(hub_or_local_path) and not is_local: + raise EnvironmentError( + f"Path `{hub_or_local_path}` exists locally but the config file {filename} is missing!" + ) + # if the file or repo_id does not exist locally, load from the Hub + if not is_local: + config_path = hf_hub_download( + hub_or_local_path, + filename=filename, + subfolder=subfolder, + cache_dir=cache_dir or HEZAR_CACHE_DIR, + repo_type=repo_type, + ) + # Load config file and convert to dictionary + dict_config = OmegaConf.load(config_path) + config = OmegaConf.to_container(dict_config) + # Check if config_type in the file and class are equal + config_type = config.get("config_type", None) + if config_type is None: + logger.warning(f"`config_type` parameter in `{filename}` is `None` or does not exist!") + elif config_type in _config_to_type_mapping.values(): + if config_type != cls.config_type: + raise ValueError( + f"The `config_type` for `{cls.__name__}` is `{cls.config_type}` " + f"which is different from the `config_type` parameter in `{filename}` which is `{config_type}`!" + ) + config_cls = get_module_config_class(config["name"], registry_type=config_type) + if config_cls is None: + config_cls = cls + config = config_cls.from_dict(config, **kwargs) + return config
    + + +
    +[docs] + @classmethod + def from_dict(cls, dict_config: Dict | DictConfig, **kwargs): + """ + Load config from a dict-like object. Nested configs are also properly converted to their classes if possible. + """ + # Update config parameters with kwargs + dict_config.update(**kwargs) + + for k, v in dict_config.items(): + if isinstance(v, Dict) and "name" in v and "config_type" in v: + config_cls = get_module_config_class(v["name"], v["config_type"]) + if config_cls is not None: + dict_config[k] = config_cls.from_dict(v) + + # Remove class vars to avoid TypeError (unexpected argument) + [dict_config.pop(k, None) for k in CONFIG_CLASS_VARS] + + config = cls(**{k: v for k, v in dict_config.items() if k in cls.__annotations__}) # noqa + + return config
    + + +
    +[docs] + def save( + self, + save_dir: str | os.PathLike, + filename: str, + subfolder: Optional[str] = None, + skip_none_fields: Optional[bool] = True, + ): + """ + Save the `*config.yaml` file to a local path + + Args: + save_dir: Save directory path + filename: Config file name + subfolder: Subfolder to save the config file + skip_none_fields (bool): Whether to skip saving None values or not + """ + subfolder = subfolder or "" + config = self.dict() + + if skip_none_fields: + # exclude None items + config = {k: v for k, v in config.items() if v is not None} + + # make and save to directory + os.makedirs(os.path.join(save_dir, subfolder), exist_ok=True) + save_path = os.path.join(save_dir, subfolder, filename) + OmegaConf.save(config, save_path) + + return save_path
    + + +
    +[docs] + def push_to_hub( + self, + repo_id: str, + filename: str, + subfolder: Optional[str] = None, + repo_type: Optional[str] = "model", + skip_none_fields: Optional[bool] = True, + private: Optional[bool] = False, + commit_message: Optional[str] = None, + ): + """ + Push the config file to the hub + + Args: + repo_id (str): Repo name or id on the Hub + filename (str): config file name + subfolder (str): subfolder to save the config + repo_type (str): Type of the repo e.g, model, dataset, space + skip_none_fields (bool): Whether to skip saving None values or not + private (bool): Whether the repo type should be private or not (ignored if the repo exists) + commit_message (str): Push commit message + """ + path_in_repo = f"{subfolder}/{filename}" if subfolder else filename + subfolder = subfolder or "" + + # create remote repo + create_repo(repo_id, repo_type=repo_type, private=private, exist_ok=True) + # save to tmp and prepare for push + cache_path = tempfile.mkdtemp() + config_path = self.save(cache_path, filename=filename, subfolder=subfolder, skip_none_fields=skip_none_fields) + # push to hub + if commit_message is None: + commit_message = f"Hezar: Upload {filename}" + upload_file( + path_or_fileobj=config_path, + path_in_repo=path_in_repo, + repo_id=repo_id, + repo_type=repo_type, + commit_message=commit_message, + ) + logger.log_upload_success(name=f"{self.__class__.__name__}()", target_path=os.path.join(repo_id, path_in_repo))
    +
    + + + +
    +[docs] +@dataclass +class ModelConfig(Config): + """ + Base dataclass for all model configs + """ + + name: str = field(init=False, default=None) + config_type: str = field(init=False, default=ConfigType.MODEL)
    + + + +
    +[docs] +@dataclass +class PreprocessorConfig(Config): + """ + Base dataclass for all preprocessor configs + """ + + name: str = field(init=False, default=None) + config_type: str = field(init=False, default=ConfigType.PREPROCESSOR)
    + + + +
    +[docs] +@dataclass +class DatasetConfig(Config): + """ + Base dataclass for all dataset configs + """ + + name: str = field(init=False, default=None) + config_type: str = field(init=False, default=ConfigType.DATASET) + task: TaskType | List[TaskType] = field( + default=None, metadata={"help": "Name of the task(s) this dataset is built for"} + ) + path: str = None
    + + + +
    +[docs] +@dataclass +class EmbeddingConfig(Config): + """ + Base dataclass for all embedding configs + """ + + name: str = field(init=False, default=None) + config_type: str = field(init=False, default=ConfigType.EMBEDDING) + bypass_version_check: bool = field( + default=False, + metadata={"help": "Whether to bypass checking gensim/numpy/hezar version compatibility"}, + )
    + + + +
    +[docs] +@dataclass +class MetricConfig(Config): + """ + Base dataclass config for all metric configs + """ + + name: str = field(init=False, default=None) + config_type: str = field(init=False, default=ConfigType.METRIC) + objective: Literal["maximize", "minimize"] = None + output_keys: List | Tuple = None + n_decimals: int = 4
    + + + +
    +[docs] +@dataclass +class TrainerConfig(Config): + """ + Base dataclass for all trainer configs + + Args: + task (str, TaskType): + The training task. Must be a valid name from `TaskType`. + output_dir (str): + Path to the directory to save trainer properties. + device (str): + Hardware device e.g, `cuda:0`, `cpu`, etc. + init_weights_from (str): + Path to a model from disk or Hub to load the initial weights from. + num_dataloader_workers (int): + Number of dataloader workers, defaults to 4 . + seed (int): + Control determinism of the run by setting a seed value. defaults to 42. + optimizer (OptimizerType): + Name of the optimizer, available values include properties in `OptimizerType` enum. + learning_rate (float): + Initial learning rate for the optimizer. + weight_decay (float): + Optimizer weight decay value. + lr_scheduler (LRSchedulerType): + Optional learning rate scheduler among `LRSchedulerType` enum. + batch_size (int): + Training batch size. + eval_batch_size (int): + Evaluation batch size, defaults to `batch_size` if None. + distributed (bool): + Whether to use distributed training or not (via the `accelerate` package) + mixed_precision (PrecisionType | str): + Mixed precision type e.g, fp16, bf16, etc. (disabled by default) + evaluate_with_generate (bool): + Whether to use `generate()` in the evaluation step or not. (only applicable for generative models). + metrics (List[str | MetricConfig]): + A list of metrics. Depending on the `valid_metrics` in the specific MetricsHandler of the Trainer. + num_epochs (int): + Number of total epochs to train the model. + save_freq (int): + Save the trainer stats and everything every `save_freq` epochs. + checkpoints_dir (str): + Path to the checkpoints' folder. The actual files will be saved under `{output_dir}/{checkpoints_dir}`. + logs_dir (str): + Path to the logs' folder. The actual log files will be saved under `{output_dir}/{logs_dir}`. + """ + + name: str = field(init=False, default="trainer") + config_type: str = field(init=False, default=ConfigType.TRAINER) + output_dir: str + task: str | TaskType + device: str = "cuda" + num_epochs: int = None + init_weights_from: str = None + num_dataloader_workers: int = 0 + seed: int = 42 + optimizer: str | OptimizerType = None + learning_rate: float = 2e-5 + weight_decay: float = 0.0 + lr_scheduler: str | LRSchedulerType = None + batch_size: int = None + eval_batch_size: int = None + distributed: bool = field( + init=False, + default=False, + metadata={"help": "Distributed training isn't supported yet! We're working hard to solve some bugs rn :("} + ) + mixed_precision: PrecisionType | str | None = None + use_cpu: bool = False + evaluate_with_generate: bool = True + metrics: List[str | MetricConfig] = None + metric_for_best_model: str = "evaluation.loss" + save_freq: int = 1 + checkpoints_dir: str = "checkpoints" + logs_dir: str = "logs" + + def __post_init__(self): + """ + Perform some argument sanitization and filtering here to avoid unexpected behavior in the trainer. + The need for having this method is that some fields in the Trainer's config have correlations with each other + and not controlling them can lead to conflicts. + """ + super().__post_init__() + if self.task not in list(TaskType): + raise ValueError( + f"Invalid task `{self.task}` passed to `TrainerConfig`. " + f"Available options are {TaskType.list()}", + ) + if not (self.metric_for_best_model.startswith("evaluation") or self.metric_for_best_model.startswith("train")): + self.metric_for_best_model = f"evaluation.{self.metric_for_best_model}"
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/constants.html b/_modules/hezar/constants.html new file mode 100644 index 00000000..ad3abdd7 --- /dev/null +++ b/_modules/hezar/constants.html @@ -0,0 +1,727 @@ + + + + + + + + hezar.constants - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.constants

    +"""
    +Home to all constant variables in Hezar
    +"""
    +
    +import os
    +from enum import Enum
    +
    +
    +HEZAR_HUB_ID = "hezarai"
    +HEZAR_CACHE_DIR = os.getenv("HEZAR_CACHE_DIR", f'{os.path.expanduser("~")}/.cache/hezar')
    +
    +DEFAULT_MODEL_FILE = "model.pt"
    +DEFAULT_MODEL_CONFIG_FILE = "model_config.yaml"
    +DEFAULT_TRAINER_SUBFOLDER = "train"
    +DEFAULT_TRAINER_CONFIG_FILE = "train_config.yaml"
    +DEFAULT_TRAINER_CSV_LOG_FILE = "training_logs.csv"
    +DEFAULT_TRAINER_STATE_FILE = "trainer_state.yaml"
    +DEFAULT_PREPROCESSOR_SUBFOLDER = "preprocessor"
    +DEFAULT_NORMALIZER_CONFIG_FILE = "normalizer_config.yaml"
    +DEFAULT_IMAGE_PROCESSOR_CONFIG_FILE = "image_processor_config.yaml"
    +DEFAULT_FEATURE_EXTRACTOR_CONFIG_FILE = "feature_extractor_config.yaml"
    +DEFAULT_TOKENIZER_FILE = "tokenizer.json"
    +DEFAULT_TOKENIZER_CONFIG_FILE = "tokenizer_config.yaml"
    +DEFAULT_DATASET_CONFIG_FILE = "dataset_config.yaml"
    +DEFAULT_EMBEDDING_FILE = "embedding.bin"
    +DEFAULT_EMBEDDING_CONFIG_FILE = "embedding_config.yaml"
    +DEFAULT_EMBEDDING_SUBFOLDER = "embedding"
    +
    +TQDM_BAR_FORMAT = "{desc:<16}{percentage:3.0f}%|{bar:70}{r_bar}"
    +
    +
    +
    +[docs] +class ExplicitEnum(str, Enum): + def __str__(self): + return self.value + +
    +[docs] + @classmethod + def list(cls): + return [x.value for x in cls.__members__.values()]
    +
    + + + +
    +[docs] +class Backends(ExplicitEnum): + """ + All required dependency packages and libraries. Note that the values here must be the exact module names used + for importing, for example if you set PILLOW the value must be `PIL` not `pillow`, `pil`, etc. + """ + + PYTORCH = "torch" + TRANSFORMERS = "transformers" + DATASETS = "datasets" + TOKENIZERS = "tokenizers" + ACCELERATE = "accelerate" + SOUNDFILE = "soundfile" + LIBROSA = "librosa" + WANDB = "wandb" + GENSIM = "gensim" + PILLOW = "PIL" + JIWER = "jiwer" + NLTK = "nltk" + SCIKIT = "sklearn" + SEQEVAL = "seqeval" + EVALUATE = "evaluate" + ROUGE = "rouge_score"
    + + + +
    +[docs] +class TaskType(ExplicitEnum): + AUDIO_CLASSIFICATION = "audio_classification" + BACKBONE = "backbone" + IMAGE2TEXT = "image2text" + LANGUAGE_MODELING = "language_modeling" + SEQUENCE_LABELING = "sequence_labeling" + SPEECH_RECOGNITION = "speech_recognition" + TEXT_CLASSIFICATION = "text_classification" + TEXT_DETECTION = "text_detection" + TEXT_GENERATION = "text_generation"
    + + + +
    +[docs] +class ConfigType(ExplicitEnum): + BASE = "base" + MODEL = "model" + DATASET = "dataset" + PREPROCESSOR = "preprocessor" + EMBEDDING = "embedding" + TRAINER = "trainer" + OPTIMIZER = "optimizer" + CRITERION = "criterion" + LR_SCHEDULER = "lr_scheduler" + METRIC = "metric"
    + + + +
    +[docs] +class RegistryType(ExplicitEnum): + MODEL = "model" + DATASET = "dataset" + PREPROCESSOR = "preprocessor" + EMBEDDING = "embedding" + TRAINER = "trainer" + OPTIMIZER = "optimizer" + CRITERION = "criterion" + LR_SCHEDULER = "lr_scheduler" + METRIC = "metric"
    + + + +
    +[docs] +class LossType(ExplicitEnum): + L1 = "l1" + NLL = "nll" + NLL_2D = "nll_2d" + POISSON_NLL = "poisson_nll" + GAUSSIAN_NLL = "gaussian_nll" + MSE = "mse" + BCE = "bce" + BCE_WITH_LOGITS = "bce_with_logits" + CROSS_ENTROPY = "cross_entropy" + TRIPLE_MARGIN = "triple_margin" + CTC = "ctc"
    + + + +
    +[docs] +class PrecisionType(ExplicitEnum): + NO = "no" + FP8 = "fp8" + FP16 = "fp16" + BF16 = "bf16"
    + + + +
    +[docs] +class OptimizerType(ExplicitEnum): + ADAM = "adam" + ADAMW = "adamw" + SDG = "sdg"
    + + + +
    +[docs] +class LRSchedulerType(ExplicitEnum): + REDUCE_LR_ON_PLATEAU = "reduce_lr_on_plateau" + COSINE_LR = "cosine_lr"
    + + + +
    +[docs] +class SplitType(ExplicitEnum): + TRAIN = "train" + EVAL = "eval" + VALID = "validation" + TEST = "test"
    + + + +
    +[docs] +class MetricType(ExplicitEnum): + ACCURACY = "accuracy" + F1 = "f1" + RECALL = "recall" + PRECISION = "precision" + SEQEVAL = "seqeval" + CER = "cer" + WER = "wer" + BLEU = "bleu" + ROUGE = "rouge"
    + + + +
    +[docs] +class RepoType(ExplicitEnum): + DATASET = "dataset" + MODEL = "model"
    + + + +
    +[docs] +class ImageType(ExplicitEnum): + NUMPY = "numpy" + PILLOW = "pillow" + TORCH = "torch"
    + + + +
    +[docs] +class ChannelsAxisSide(ExplicitEnum): + FIRST = "first" + LAST = "last"
    + + + +
    +[docs] +class PaddingType(ExplicitEnum): + MAX_LENGTH = "max_length" + LONGEST = "longest"
    + + + +
    +[docs] +class Color(ExplicitEnum): + HEADER = "\033[95m" + NORMAL = "\033[0m" + BOLD = "\033[1m" + UNDERLINE = "\033[4m" + ITALIC = "\33[3m" + BLUE = "\033[94m" + CYAN = "\033[96m" + GREEN = "\033[92m" + YELLOW = "\033[93m" + RED = "\033[91m" + GREY = "\33[90m"
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/data/data_collators.html b/_modules/hezar/data/data_collators.html new file mode 100644 index 00000000..bbc522a3 --- /dev/null +++ b/_modules/hezar/data/data_collators.html @@ -0,0 +1,836 @@ + + + + + + + + hezar.data.data_collators - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.data.data_collators

    +import numpy as np
    +import torch
    +
    +from ..preprocessors import Tokenizer
    +from ..utils import Logger, convert_batch_dict_dtype
    +
    +
    +__all__ = [
    +    "TextPaddingDataCollator",
    +    "TextGenerationDataCollator",
    +    "ImageCaptioningDataCollator",
    +    "SequenceLabelingDataCollator",
    +    "CharLevelOCRDataCollator",
    +]
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +class TextPaddingDataCollator: + """ + A data collator that pads a batch of tokenized inputs. + + Args: + tokenizer (Tokenizer): A Hezar tokenizer instance. (only its config is going to be used) + padding_type (str): Specifies padding strategy. Defaults to `longest`, but can also be `max_length` (in this case + `max_length` cannot be None) + padding_side (str): Specifies from which side of each tensor to add paddings. Defaults to `right`, but can also be + `left`. + max_length (int): If `padding_type` is set to `max_length` this parameter must be specified. Forces all tensors to + have this value as length. + return_tensors (str): Specifies the dtype of the returning tensors in the batch. Defaults to `pt(torch.Tensor)`, but + can also be `np` or `list`. + """ + + def __init__( + self, + tokenizer: Tokenizer, + padding_type: str = "longest", + padding_side: str = "right", + max_length: int = None, + return_tensors: str = "pt", + ): + self.tokenizer = tokenizer + self.padding_type = padding_type + self.padding_side = padding_side + self.max_length = max_length + self.return_tensors = return_tensors + + self.field_to_pad_id_mapping = { + "token_ids": self.tokenizer.pad_token_id, + "token_type_ids": self.tokenizer.config.pad_token_type_id, + "tokens": "", + "special_tokens_mask": 1, + "attention_mask": 0, + } + + if padding_type == "longest" and max_length is not None: + logger.warning( + "You passed `max_length` while also setting `padding_type` to `longest` which are " + "incompatible! Instead leave `max_length` as None or set `padding_type` to `max_length`! " + "Ignoring `max_length`" + ) + self.max_length = None + + def __call__(self, encoded_batch): + """ + Add padding to every item in the batch + + Args: + encoded_batch: A batch dictionary + + Returns: + Dict: The same batch dictionary but padded + """ + encoded_batch = [convert_batch_dict_dtype(x, dtype="list") for x in encoded_batch] + permuted_batch = {} + for key in encoded_batch[0].keys(): + stack = [e for item in encoded_batch for e in item[key]] + permuted_batch[key] = stack + + encoded_batch = permuted_batch.copy() + if "label" in encoded_batch: + encoded_batch["labels"] = encoded_batch["label"] + del encoded_batch["label"] + + labels = encoded_batch.pop("labels") + input_length = self.max_length or max(len(x) for x in encoded_batch["token_ids"]) + + for field, batch in encoded_batch.items(): + padded_batch = [] + for x in batch: + if isinstance(x, torch.Tensor): + x = x.cpu().numpy().tolist() + elif isinstance(x, np.ndarray): + x = x.tolist() + difference = input_length - len(x) + paddings = [self.field_to_pad_id_mapping[field]] * difference + padded_x = x + paddings if self.padding_side == "right" else paddings + x + padded_batch.append(padded_x) + encoded_batch[field] = padded_batch + + encoded_batch["labels"] = labels + + encoded_batch = convert_batch_dict_dtype(encoded_batch, dtype=self.return_tensors) + + return encoded_batch
    + + + +
    +[docs] +class TextGenerationDataCollator: + """ + A data collator for text to text generation + + Args: + tokenizer (Tokenizer): A Hezar tokenizer instance. (only its config is going to be used) + padding_type (str): Specifies padding strategy. Defaults to `longest`, but can also be `max_length` (in this case + `max_length` cannot be None) + padding_side (str): Specifies from which side of each tensor to add paddings. Defaults to `right`, but can also be + `left`. + max_length (int): If `padding_type` is set to `max_length` this parameter must be specified. Forces all tensors to + have this value as length. + max_target_length (int): Maximum target length for text generation. + return_tensors (str): Specifies the dtype of the returning tensors in the batch. Defaults to `pt(torch.Tensor)`, but + can also be `np` or `list`. + """ + + def __init__( + self, + tokenizer: Tokenizer, + padding_type: str = "longest", + padding_side: str = "right", + max_length: int = None, + max_target_length: int = None, + return_tensors: str = "pt", + ): + self.tokenizer = tokenizer + self.padding_type = padding_type + self.padding_side = padding_side + self.max_length = max_length + self.max_target_length = max_target_length + self.return_tensors = return_tensors + + if padding_type == "longest" and max_length is not None: + logger.warning( + "You passed `max_length` while also setting `padding_type` to `longest` which are " + "incompatible! Instead leave `max_length` as None or set `padding_type` to `max_length`! " + "Ignoring `max_length`" + ) + self.max_length = None + + def __call__(self, encoded_batch): + """ + Add padding to every item in the batch + + Args: + encoded_batch (List[Dict]): A batch dictionary + + Returns: + Dict: The same batch dictionary but padded + """ + encoded_batch = [convert_batch_dict_dtype(x, dtype="list") for x in encoded_batch] + permuted_batch = {} + for key in encoded_batch[0].keys(): + stack = [e for item in encoded_batch for e in item[key]] + permuted_batch[key] = stack + + padded_batch = self.tokenizer.pad_encoded_batch( + permuted_batch, + padding=self.padding_type, + max_length=self.max_length, + exclude_keys=["labels"], + return_tensors=self.return_tensors, + ) + padded_batch = self.tokenizer.pad_encoded_batch( + padded_batch, + padding=self.padding_type, + max_length=self.max_target_length, + include_keys=["labels"], + return_tensors=self.return_tensors, + ) + + return padded_batch
    + + + +
    +[docs] +class ImageCaptioningDataCollator: + def __init__( + self, + tokenizer: Tokenizer, + padding_type: str = "longest", + padding_side: str = "right", + max_length: int = None, + return_tensors: str = "pt", + ): + self.tokenizer = tokenizer + self.padding_type = padding_type + self.padding_side = padding_side + self.max_length = max_length + self.return_tensors = return_tensors + + if padding_type == "longest" and max_length is not None: + logger.warning( + "You passed `max_length` while also setting `padding_type` to `longest` which are " + "incompatible! Instead leave `max_length` as None or set `padding_type` to `max_length`! " + "Ignoring `max_length`" + ) + self.max_length = None + + def __call__(self, encoded_batch): + encoded_batch = [convert_batch_dict_dtype(x, dtype="list") for x in encoded_batch] + permuted_batch = {} + for key in encoded_batch[0].keys(): + stack = [e for item in encoded_batch for e in item[key]] + permuted_batch[key] = stack + + padded_batch = self.tokenizer.pad_encoded_batch( + permuted_batch, + padding=self.padding_type, + max_length=self.max_length, + exclude_keys=["pixel_values"], + return_tensors=self.return_tensors, + ) + padded_batch = convert_batch_dict_dtype(padded_batch, dtype="pt") + + return padded_batch
    + + + +
    +[docs] +class SequenceLabelingDataCollator: + """ + A data collator for sequence labeling. + + Args: + tokenizer (Tokenizer): A Hezar tokenizer instance. (only its config is going to be used) + padding_type (str): Specifies padding strategy. Defaults to `longest`, but can also be `max_length` (in this case + `max_length` cannot be None) + padding_side (str): Specifies from which side of each tensor to add paddings. Defaults to `right`, but can also be + `left`. + label_pad_token_id (int): Token ID for padding labels. + max_length (int): If `padding_type` is set to `max_length` this parameter must be specified. Forces all tensors to + have this value as length. + return_tensors (str): Specifies the dtype of the returning tensors in the batch. Defaults to `pt(torch.Tensor)`, but + can also be `np` or `list`. + """ + + def __init__( + self, + tokenizer: Tokenizer, + padding_type: str = "longest", + padding_side: str = "right", + label_pad_token_id: int = -100, + max_length: int = None, + return_tensors: str = "pt", + ): + self.tokenizer = tokenizer + self.padding_type = padding_type + self.padding_side = padding_side + self.label_pad_token_id = label_pad_token_id + self.max_length = max_length + self.return_tensors = return_tensors + + def __call__(self, encoded_batch): + """ + Add padding to every item in the batch + + Args: + encoded_batch (List[Dict]): A batch dictionary + + Returns: + Dict: The same batch dictionary but padded + """ + label_name = "label" if "label" in encoded_batch[0].keys() else "labels" + labels = [feature[label_name] for feature in encoded_batch] if label_name in encoded_batch[0].keys() else None + self.tokenizer.config.padding_direction = self.padding_side + batch = self.tokenizer.pad_encoded_batch( + encoded_batch, + padding=self.padding_type, # noqa + max_length=self.max_length, + # Conversion to tensors will fail if we have labels as they are not of the same length yet. + return_tensors="pt" if labels is None else None, + ) + + if labels is None: + return batch + + batch.pop("word_ids", None) + sequence_length = torch.tensor(batch["token_ids"]).shape[1] + if self.padding_side == "right": + batch[label_name] = [ + list(label) + [self.label_pad_token_id] * (sequence_length - len(label)) for label in labels + ] + else: + batch[label_name] = [ + [self.label_pad_token_id] * (sequence_length - len(label)) + list(label) for label in labels + ] + + batch = {k: torch.tensor(v, dtype=torch.int64) for k, v in batch.items()} + return batch
    + + + +
    +[docs] +class CharLevelOCRDataCollator: + """ + A data collator for character-level OCR. + + Args: + pad_token_id (int): Token ID for padding characters. + """ + + def __init__(self, pad_token_id: int = 0): + self.pad_token_id = pad_token_id + + def __call__(self, input_batch): + """ + Add padding to character-level OCR data. + + Args: + input_batch (Dict): Input batch containing pixel values and labels. + + Returns: + Dict: Padded input batch. + """ + if isinstance(input_batch, (list, tuple)) and isinstance(input_batch[0], dict): + input_batch = {key: [example[key] for example in input_batch] for key in input_batch[0].keys()} + input_batch["pixel_values"] = torch.stack(input_batch["pixel_values"], 0) + + max_length = max(map(len, input_batch["labels"])) + all_labels = [] + for labels in input_batch["labels"]: + labels = labels.numpy().tolist() + labels += [self.pad_token_id] * (max_length - len(labels)) + all_labels.append(labels) + input_batch["labels"] = torch.tensor(all_labels) + return input_batch
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/data/datasets/dataset.html b/_modules/hezar/data/datasets/dataset.html new file mode 100644 index 00000000..230da8cd --- /dev/null +++ b/_modules/hezar/data/datasets/dataset.html @@ -0,0 +1,605 @@ + + + + + + + + hezar.data.datasets.dataset - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.data.datasets.dataset

    +from __future__ import annotations
    +
    +import os
    +from typing import List, Optional
    +
    +from torch.utils.data import Dataset as TorchDataset
    +
    +from ...builders import build_dataset
    +from ...configs import DatasetConfig
    +from ...constants import (
    +    DEFAULT_DATASET_CONFIG_FILE,
    +    HEZAR_CACHE_DIR,
    +    Backends,
    +    RepoType,
    +    SplitType,
    +)
    +from ...utils import verify_dependencies
    +
    +
    +
    +[docs] +class Dataset(TorchDataset): + """ + Base class for all datasets in Hezar. + + Args: + config: The configuration object for the dataset. + **kwargs: Additional keyword arguments. + + Attributes: + required_backends (List[str | Backends]): List of required backends for the dataset. + config_filename (str): Default dataset config file name. + cache_dir (str): Default cache directory for the dataset. + + """ + required_backends: List[str | Backends] = None + config_filename = DEFAULT_DATASET_CONFIG_FILE + cache_dir = os.path.join(HEZAR_CACHE_DIR, "datasets") + + def __init__(self, config: DatasetConfig, split=None, **kwargs): + verify_dependencies(self, self.required_backends) + self.config = config.update(kwargs) + self.preprocessor = None + self.data_collator = None + self.split = split + + def __str__(self): + dataset_name = self.config.path or self.config.name + dataset_size = len(self) + return f"{self.__class__.__name__}(path={dataset_name}['{self.split}'], size={dataset_size})" + + def __len__(self): + """ + Returns the length of the dataset. + + Raises: + NotImplementedError: This method must be implemented in derived classes. + + """ + raise NotImplementedError + + def __getitem__(self, index): + """ + Gets a specific item from the dataset. + + Args: + index: Index of the item to retrieve. + + Raises: + NotImplementedError: This method must be implemented in derived classes. + + """ + raise NotImplementedError + +
    +[docs] + @classmethod + def load( + cls, + hub_path: str | os.PathLike, + config_filename: Optional[str] = None, + split: Optional[str | SplitType] = None, + cache_dir: str = None, + **kwargs, + ) -> "Dataset": + """ + Load the dataset from a hub path. + + Args: + hub_path (str | os.PathLike): Path to dataset from hub or locally. + config_filename (Optional[str]): Dataset config file name. + split (Optional[str | SplitType]): Dataset split, defaults to "train". + cache_dir (str): Path to cache directory + **kwargs: Config parameters as keyword arguments. + + Returns: + Dataset: An instance of the loaded dataset. + + """ + split = split or "train" + config_filename = config_filename or cls.config_filename + if cache_dir is not None: + cls.cache_dir = cache_dir + dataset_config = DatasetConfig.load( + hub_path, + filename=config_filename, + repo_type=RepoType.DATASET, + cache_dir=cls.cache_dir, + ) + dataset_config.path = hub_path + dataset = build_dataset(dataset_config.name, config=dataset_config, split=split, **kwargs) + return dataset
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/data/datasets/image_captioning_dataset.html b/_modules/hezar/data/datasets/image_captioning_dataset.html new file mode 100644 index 00000000..200b4114 --- /dev/null +++ b/_modules/hezar/data/datasets/image_captioning_dataset.html @@ -0,0 +1,617 @@ + + + + + + + + hezar.data.datasets.image_captioning_dataset - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.data.datasets.image_captioning_dataset

    +from dataclasses import dataclass
    +
    +import torch
    +from datasets import load_dataset
    +
    +from ...builders import build_preprocessor
    +from ...configs import DatasetConfig
    +from ...constants import Backends, TaskType
    +from ...preprocessors import ImageProcessorConfig, Tokenizer
    +from ...registry import register_dataset
    +from ...utils import Logger, shift_tokens_right
    +from ..data_collators import ImageCaptioningDataCollator
    +from .dataset import Dataset
    +
    +
    +logger = Logger(__name__)
    +
    +_required_backends = [Backends.SCIKIT]
    +
    +
    +
    +[docs] +@dataclass +class ImageCaptioningDatasetConfig(DatasetConfig): + """ + Configuration class for image captioning datasets. + + Args: + path (str): Path to the dataset. + tokenizer_path (str): Path to the tokenizer file. + text_column (str): Column name for text in the dataset. + images_paths_column (str): Column name for image paths in the dataset. + max_length (int): Maximum length of text. + test_split_size (float): Size of the test split. + image_processor_config (ImageProcessorConfig): Configuration for image processing. + + """ + name = "image_captioning" + task: TaskType = TaskType.IMAGE2TEXT + path: str = None + tokenizer_path: str = None + text_column: str = "label" + images_paths_column = "image_path" + max_length: int = None + test_split_size: float = 0.2 + image_processor_config: ImageProcessorConfig = None
    + + + +
    +[docs] +@register_dataset("image_captioning", config_class=ImageCaptioningDatasetConfig) +class ImageCaptioningDataset(Dataset): + """ + General image captioning dataset class. + + Args: + config (ImageCaptioningDatasetConfig): The configuration object for the dataset. + split: Dataset split, defaults to None. + **kwargs: Additional keyword arguments. + """ + required_backends = _required_backends + + def __init__(self, config: ImageCaptioningDatasetConfig, split=None, **kwargs): + super().__init__(config=config, split=split, **kwargs) + self.data = self._load(split) + self.image_processor = build_preprocessor("image_processor", config=self.config.image_processor_config) + self.tokenizer = Tokenizer.load(self.config.tokenizer_path) + self.data_collator = ImageCaptioningDataCollator( + self.tokenizer, + padding_type="max_length" if self.config.max_length is not None else "longest", + max_length=self.config.max_length + ) + + def __len__(self): + """ + Returns the length of the dataset. + + Returns: + int: The length of the dataset. + + """ + return len(self.data) + + def _load(self, split=None): + """ + Load the dataset and clean up invalid samples. + + Args: + split: Dataset split, defaults to None. + + Returns: + Dataset: The cleaned dataset. + + """ + data = load_dataset(self.config.path, split=split, cache_dir=self.cache_dir) + return data + + def __getitem__(self, index): + """ + Get a specific item from the dataset. + + Args: + index: Index of the item to retrieve. + + Returns: + dict: The input data. + """ + path, text = self.data[index].values() + pixel_values = self.image_processor(path, return_tensors="pt")["pixel_values"] + tokenized_inputs = self.tokenizer(text, padding="max_length", max_length=self.config.max_length) + labels = torch.tensor([tokenized_inputs["token_ids"]]) + attention_mask = torch.tensor([tokenized_inputs["attention_mask"]]) + decoder_input_ids = shift_tokens_right( + labels, + pad_token_id=self.tokenizer.pad_token_id, + decoder_start_token_id=self.tokenizer.bos_token_id, + ) + inputs = { + "pixel_values": pixel_values, + "labels": labels, + "decoder_input_ids": decoder_input_ids, + "decoder_attention_mask": attention_mask, + } + return inputs
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/data/datasets/ocr_dataset.html b/_modules/hezar/data/datasets/ocr_dataset.html new file mode 100644 index 00000000..7dd4e872 --- /dev/null +++ b/_modules/hezar/data/datasets/ocr_dataset.html @@ -0,0 +1,697 @@ + + + + + + + + hezar.data.datasets.ocr_dataset - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.data.datasets.ocr_dataset

    +from __future__ import annotations
    +
    +from dataclasses import dataclass, field
    +from enum import Enum
    +from typing import Dict
    +
    +import torch
    +from datasets import load_dataset
    +
    +from ...builders import build_preprocessor
    +from ...configs import DatasetConfig
    +from ...constants import Backends, TaskType
    +from ...preprocessors import ImageProcessorConfig, Tokenizer
    +from ...registry import register_dataset
    +from ...utils import Logger, is_text_valid, reverse_string_digits
    +from ..data_collators import CharLevelOCRDataCollator
    +from .dataset import Dataset
    +
    +
    +logger = Logger(__name__)
    +
    +_required_backends = [Backends.SCIKIT]
    +
    +fa_characters = [
    +    "", "آ", "ا", "ب", "پ", "ت", "ث", "ج", "چ", "ح", "خ", "د", "ذ", "ر", "ز", "ژ", "س", "ش",
    +    "ص", "ض", "ط", "ظ", "ع", "غ", "ف", "ق", "ک", "گ", "ل", "م", "ن", "و", "ه", "ی", " "
    +]
    +fa_numbers = ["۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "۰"]
    +fa_special_characters = ["ء", "ؤ", "ئ", "أ", "ّ"]
    +fa_symbols = ["/", "(", ")", "+", "-", ":", "،", "!", ".", "؛", "=", "%", "؟"]
    +en_numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
    +all_characters = fa_characters + fa_numbers + fa_special_characters + fa_symbols + en_numbers
    +
    +ID2LABEL = dict(enumerate(all_characters))
    +
    +
    +
    +[docs] +class TextSplitType(str, Enum): + CHAR_SPLIT = "char_split" # mostly for char level ocr models + TOKENIZE = "tokenize" # mostly for transformer-based ocr models
    + + + +
    +[docs] +@dataclass +class OCRDatasetConfig(DatasetConfig): + """ + Configuration class for OCR datasets. + + Args: + path (str): Path to the dataset. + text_split_type (TextSplitType): Type of text splitting (CHAR_SPLIT or TOKENIZE). + tokenizer_path (str): Path to the tokenizer file. + id2label (Dict[int, str]): Mapping of label IDs to characters. + text_column (str): Column name for text in the dataset. + images_paths_column (str): Column name for image paths in the dataset. + max_length (int): Maximum length of text. + invalid_characters (list): List of invalid characters. + reverse_digits (bool): Whether to reverse the digits in text. + image_processor_config (ImageProcessorConfig): Configuration for image processing. + + """ + name = "ocr" + task: TaskType = TaskType.IMAGE2TEXT + path: str = None + text_split_type: str | TextSplitType = TextSplitType.TOKENIZE + tokenizer_path: str = None # if left to None, text_split_type must be `char_split` + id2label: Dict[int, str] = field(default_factory=lambda: ID2LABEL) + text_column: str = "label" + images_paths_column = "image_path" + max_length: int = None + invalid_characters: list = None + reverse_text: bool = None + reverse_digits: bool = None + image_processor_config: ImageProcessorConfig = None
    + + + +
    +[docs] +@register_dataset("ocr", config_class=OCRDatasetConfig) +class OCRDataset(Dataset): + """ + General OCR dataset class. + + OCR dataset supports two types of image to text dataset. One is for tokenizer-based models in which the labels are + tokens and the other is char-level models in which the labels are separated by character and the converted to ids. + This behavior is specified by the `text_split_type` in config which can be either `tokenize` or `char_split`. + + """ + required_backends = _required_backends + + def __init__(self, config: OCRDatasetConfig, split=None, **kwargs): + """ + Initializes a new OCRDataset instance. + + Args: + config (OCRDatasetConfig): The configuration object for the dataset. + split: Dataset split, defaults to None. + **kwargs: Additional keyword arguments. + + """ + super().__init__(config=config, split=split, **kwargs) + self.data = self._load(split) + self.image_processor = build_preprocessor("image_processor", config=self.config.image_processor_config) + if self.config.text_split_type == TextSplitType.TOKENIZE: + if self.config.tokenizer_path is not None: + self.tokenizer = Tokenizer.load(self.config.tokenizer_path) + self.data_collator = None # TODO resolve this in the future. + else: + raise ValueError("No `tokenizer_path` given although `text_split_type` is set to `tokenize`!") + else: + self.tokenizer = None + self.data_collator = CharLevelOCRDataCollator() + + def __len__(self): + """ + Returns the length of the dataset. + + Returns: + int: The length of the dataset. + + """ + return len(self.data) + + def _load(self, split=None): + """ + Load the dataset and clean up invalid samples. + + Args: + split: Dataset split, defaults to None. + + Returns: + Dataset: The cleaned dataset. + + """ + data = load_dataset(self.config.path, split=split, cache_dir=self.cache_dir) + # Cleanup dataset + valid_indices = [] + invalid_indices = [] + for i, sample in enumerate(list(iter(data))): + path, text = sample.values() + if len(text) <= self.config.max_length and is_text_valid(text, self.config.id2label.values()): + valid_indices.append(i) + else: + invalid_indices.append(i) + if len(invalid_indices): + logger.warning( + f"{len(invalid_indices)} invalid samples found in the dataset! " + f"Inspect them using the `invalid_data` attribute" + ) + self.invalid_data = data.select(invalid_indices) + data = data.select(valid_indices) + return data + + def _text_to_tensor(self, text): + """ + Convert text to tensor based on the configured text_split_type. + + Args: + text (str): The raw text. + + Returns: + torch.Tensor: The output tensor. + + """ + # Tokenize text inputs if text_split_type is set to `tokenize` + if self.config.text_split_type == TextSplitType.TOKENIZE: + token_ids = self.tokenizer(text, padding="max_length", max_length=self.config.max_length)["token_ids"] + # Make sure to ignore pad tokens by the loss function + token_ids = [token_id if token_id != self.tokenizer.pad_token_id else -100 for token_id in token_ids] + labels = torch.tensor(token_ids) + # If split text is not tokenizer-based + elif self.config.text_split_type == TextSplitType.CHAR_SPLIT: + if self.config.reverse_digits: + text = reverse_string_digits(text) + label2id = {v: k for k, v in self.config.id2label.items()} + labels = [label2id[x] for x in text] + labels = torch.LongTensor(labels) + else: + raise ValueError(f"Invalid `text_split_type={self.config.text_split_type}`") + + return labels + + def __getitem__(self, index): + """ + Get a specific item from the dataset. + + Args: + index: Index of the item to retrieve. + + Returns: + dict: The input data. + + """ + path, text = self.data[index].values() + pixel_values = self.image_processor(path, return_tensors="pt")["pixel_values"][0] + labels = self._text_to_tensor(text) + inputs = { + "pixel_values": pixel_values, + "labels": labels, + } + return inputs
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/data/datasets/sequence_labeling_dataset.html b/_modules/hezar/data/datasets/sequence_labeling_dataset.html new file mode 100644 index 00000000..703f3585 --- /dev/null +++ b/_modules/hezar/data/datasets/sequence_labeling_dataset.html @@ -0,0 +1,676 @@ + + + + + + + + hezar.data.datasets.sequence_labeling_dataset - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.data.datasets.sequence_labeling_dataset

    +from dataclasses import dataclass
    +
    +from datasets import load_dataset
    +
    +from ...configs import DatasetConfig
    +from ...constants import TaskType
    +from ...preprocessors import Tokenizer
    +from ...registry import register_dataset
    +from ...utils import Logger
    +from ..data_collators import SequenceLabelingDataCollator
    +from .dataset import Dataset
    +
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +@dataclass +class SequenceLabelingDatasetConfig(DatasetConfig): + """ + Configuration class for sequence labeling datasets. + + Args: + path (str): Path to the dataset. + tokenizer_path (str): Path to the tokenizer file. + tags_field (str): Field name for tags in the dataset. + tokens_field (str): Field name for tokens in the dataset. + max_length (int): Maximum length of tokens. + ignore_index (int): Index to ignore in the loss function. + label_all_tokens (bool): Whether to label all tokens or just the first token in a word. + is_iob_schema (bool): Whether the dataset follows the IOB schema. + """ + + name = "sequence_labeling" + task: TaskType = TaskType.SEQUENCE_LABELING + path: str = None + tokenizer_path: str = None + tags_field: str = None + tokens_field: str = None + max_length: int = None + ignore_index: int = -100 + label_all_tokens: bool = True + is_iob_schema: bool = False # Usually set to True for NER & Chunker and set to False for POS
    + + + +
    +[docs] +@register_dataset("sequence_labeling", config_class=SequenceLabelingDatasetConfig) +class SequenceLabelingDataset(Dataset): + """ + A sequence labeling dataset class. + As of now this class is intended for datasets existing on the Hub! + + Args: + config (SequenceLabelingDatasetConfig): Dataset config object. + split: Which split to use. + **kwargs: Extra config parameters to assign to the original config. + """ + + def __init__(self, config: SequenceLabelingDatasetConfig, split=None, **kwargs): + """ + Initializes a new SequenceLabelingDataset instance. + + Args: + config (SequenceLabelingDatasetConfig): The configuration object for the dataset. + split: Dataset split, defaults to None. + **kwargs: Additional keyword arguments. + + """ + super().__init__(config, split=split, **kwargs) + self.dataset = self._load(split) + self._extract_labels() + self.tokenizer = self._build_tokenizer() + if self.tokenizer: + self.data_collator = SequenceLabelingDataCollator(self.tokenizer) + + def _load(self, split): + """ + Load the dataset. + + Args: + split: Dataset split. + + Returns: + The whole dataset. + + """ + # TODO: In case we want to make this class work on other types like csv, json, etc. we have to do it here. + dataset = load_dataset(self.config.path, split=split, cache_dir=self.cache_dir) + return dataset + + def _build_tokenizer(self): + """ + Build the tokenizer. + + Returns: + Tokenizer: The tokenizer. + + """ + if self.config.tokenizer_path: + tokenizer = Tokenizer.load(self.config.tokenizer_path) + else: + logger.warning( + "This dataset requires a tokenizer to work. Provide it in config as `tokenizer_path` " + "or set it manually as `dataset.tokenizer = your_tokenizer` after building the dataset." + ) + tokenizer = None + return tokenizer + + def _extract_labels(self): + """ + Extract label names, ids and build dictionaries. + """ + tags_list = self.dataset.features[self.config.tags_field].feature.names + self.id2label = self.config.id2label = {k: str(v) for k, v in dict(enumerate(tags_list)).items()} + self.label2id = self.config.label2id = {v: k for k, v in self.id2label.items()} + self.num_labels = self.config.num_labels = len(tags_list) + + def __len__(self): + """ + Returns the length of the dataset. + + Returns: + int: The length of the dataset. + + """ + return len(self.dataset) + + def _tokenize_and_align(self, tokens, labels): + """ + Tokenize and align tokens and labels. + + Args: + tokens: List of tokens. + labels: List of labels. + + Returns: + dict: Tokenized and aligned inputs. + + """ + tokenized_inputs = self.tokenizer( + tokens, + is_split_into_words=True, + return_word_ids=True, + padding=True, + truncation=True, + ) + word_ids = tokenized_inputs["word_ids"] + + previous_word_idx = None + label_ids = [] + for word_idx in word_ids: + # Special tokens have a word id that is None. We set the label to -100, so they are automatically + # ignored in the loss function. + if word_idx is None: + label_ids.append(self.config.ignore_index) + # We set the label for the first token of each word. + elif word_idx != previous_word_idx: + label_ids.append(labels[word_idx]) + # For the other tokens in a word, we set the label to either the current label or -100, depending on + # the label_all_tokens flag. + else: + label_ids.append(labels[word_idx] if self.config.label_all_tokens else self.config.ignore_index) + previous_word_idx = word_idx + + tokenized_inputs["labels"] = label_ids + return tokenized_inputs + + def __getitem__(self, index): + """ + Tokenize inputs and return a dict containing ids, masks, labels, etc. + + Args: + index: Sample index. + + Returns: + dict: The input data. + + """ + tokens, tags = self.dataset[index].values() + inputs = self._tokenize_and_align(tokens, tags) + return inputs
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/data/datasets/text_classification_dataset.html b/_modules/hezar/data/datasets/text_classification_dataset.html new file mode 100644 index 00000000..c4e5d033 --- /dev/null +++ b/_modules/hezar/data/datasets/text_classification_dataset.html @@ -0,0 +1,643 @@ + + + + + + + + hezar.data.datasets.text_classification_dataset - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.data.datasets.text_classification_dataset

    +from dataclasses import dataclass
    +
    +import torch
    +from datasets import load_dataset
    +
    +from ...configs import DatasetConfig
    +from ...constants import TaskType
    +from ...preprocessors import Tokenizer
    +from ...registry import register_dataset
    +from ...utils import Logger
    +from ..data_collators import TextPaddingDataCollator
    +from .dataset import Dataset
    +
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +@dataclass +class TextClassificationDatasetConfig(DatasetConfig): + """ + Configuration class for text classification datasets. + + Args: + path (str): Path to the dataset. + tokenizer_path (str): Path to the tokenizer file. + label_field (str): Field name for labels in the dataset. + text_field (str): Field name for text in the dataset. + max_length (int): Maximum length of text. + """ + + name = "text_classification" + task: TaskType = TaskType.TEXT_CLASSIFICATION + path: str = None + tokenizer_path: str = None + label_field: str = None + text_field: str = None + max_length: int = None
    + + + +
    +[docs] +@register_dataset("text_classification", config_class=TextClassificationDatasetConfig) +class TextClassificationDataset(Dataset): + """ + A text classification dataset class. + As of now this class is intended for datasets existing on the Hub! + + Args: + config (TextClassificationDatasetConfig): Dataset config object. + split: Which split to use. + **kwargs: Extra config parameters to assign to the original config. + """ + + def __init__(self, config: TextClassificationDatasetConfig, split=None, **kwargs): + """ + Initializes a new TextClassificationDataset instance. + + Args: + config (TextClassificationDatasetConfig): The configuration object for the dataset. + split: Dataset split, defaults to None. + **kwargs: Additional keyword arguments. + + """ + super().__init__(config, split=split, **kwargs) + self.dataset = self._load(split) + self._extract_labels() + self.tokenizer = self._build_tokenizer() + self.data_collator = TextPaddingDataCollator( + tokenizer=self.tokenizer, + max_length=self.config.max_length, + ) + + def _load(self, split): + """ + Load the dataset. + + Args: + split: Dataset split. + + Returns: + The whole dataset. + + """ + # TODO: In case we want to make this class work on other types like csv, json, etc. we have to do it here. + dataset = load_dataset(self.config.path, split=split, cache_dir=self.cache_dir) + return dataset + + def _build_tokenizer(self): + """ + Build the tokenizer. + + Returns: + Tokenizer: The tokenizer. + + """ + if self.config.tokenizer_path: + tokenizer = Tokenizer.load(self.config.tokenizer_path) + else: + logger.warning( + "This dataset requires a tokenizer to work. Provide it in config as `tokenizer_path` " + "or set it manually as `dataset.tokenizer = your_tokenizer` after building the dataset." + ) + tokenizer = None + return tokenizer + + def _extract_labels(self): + """ + Extract label names, ids and build dictionaries. + """ + labels_list = self.dataset.features[self.config.label_field].names + self.id2label = self.config.id2label = {k: str(v) for k, v in dict(enumerate(labels_list)).items()} + self.label2id = self.config.label2id = {v: k for k, v in self.id2label.items()} + self.num_labels = self.config.num_labels = len(labels_list) + + def __len__(self): + """ + Returns the length of the dataset. + + Returns: + int: The length of the dataset. + + """ + return len(self.dataset) + + def __getitem__(self, index): + """ + Tokenize inputs and return a dict containing ids, masks, labels, etc. + + Args: + index: Sample index. + + Returns: + dict: The input data. + + """ + text = self.dataset[index][self.config.text_field] + label = self.dataset[index][self.config.label_field] + inputs = self.tokenizer( + text, + return_tensors="pt", + truncation_strategy="longest_first", + padding="longest", + return_attention_mask=True, + ) + label_idx = torch.tensor([label], dtype=torch.long) # noqa + inputs["labels"] = label_idx + + return inputs
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/data/datasets/text_summarization_dataset.html b/_modules/hezar/data/datasets/text_summarization_dataset.html new file mode 100644 index 00000000..42137f27 --- /dev/null +++ b/_modules/hezar/data/datasets/text_summarization_dataset.html @@ -0,0 +1,650 @@ + + + + + + + + hezar.data.datasets.text_summarization_dataset - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.data.datasets.text_summarization_dataset

    +from dataclasses import dataclass
    +
    +from datasets import load_dataset
    +
    +from ...configs import DatasetConfig
    +from ...constants import TaskType
    +from ...preprocessors import Tokenizer
    +from ...registry import register_dataset
    +from ...utils import Logger
    +from ..data_collators import TextGenerationDataCollator
    +from .dataset import Dataset
    +
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +@dataclass +class TextSummarizationDatasetConfig(DatasetConfig): + """ + Configuration class for text summarization datasets. + + Args: + path (str): Path to the dataset. + tokenizer_path (str): Path to the tokenizer file. + prefix (str): Prefix for conditional generation. + text_field (str): Field name for text in the dataset. + summary_field (str): Field name for summary in the dataset. + title_field (str): Field name for title in the dataset. + max_length (int): Maximum length of text. + max_target_length (int): Maximum length of the target summary. + """ + + name = "text_summarization" + task: TaskType = TaskType.TEXT_GENERATION + path: str = None + tokenizer_path: str = None + prefix: str = None + text_field: str = None + summary_field: str = None + title_field: str = None + max_length: int = None + max_target_length: int = None
    + + + +
    +[docs] +@register_dataset("text_summarization", config_class=TextSummarizationDatasetConfig) +class TextSummarizationDataset(Dataset): + """ + A text summarization dataset class. + As of now this class is intended for datasets existing on the Hub! + + Args: + config (TextSummarizationDatasetConfig): Dataset config object. + split: Which split to use. + **kwargs: Extra config parameters to assign to the original config. + """ + + def __init__(self, config: TextSummarizationDatasetConfig, split=None, **kwargs): + """ + Initializes a new TextSummarizationDataset instance. + + Args: + config (TextSummarizationDatasetConfig): The configuration object for the dataset. + split: Dataset split, defaults to None. + **kwargs: Additional keyword arguments. + + """ + super().__init__(config, split=split, **kwargs) + self.dataset = self._load(split) + self.tokenizer = self._build_tokenizer() + self.data_collator = TextGenerationDataCollator( + tokenizer=self.tokenizer, + max_length=self.config.max_length, + max_target_length=self.config.max_target_length, + padding_type="max_length" if self.config.max_length else "longest", + ) + + def _load(self, split): + """ + Load the dataset. + + Args: + split: Dataset split. + + Returns: + The whole dataset. + + """ + # TODO: In case we want to make this class work on other types like csv, json, etc. we have to do it here. + dataset = load_dataset(self.config.path, split=split, cache_dir=self.cache_dir) + return dataset + + def _build_tokenizer(self): + """ + Build the tokenizer. + + Returns: + Tokenizer: The tokenizer. + + """ + if self.config.tokenizer_path: + tokenizer = Tokenizer.load(self.config.tokenizer_path) + else: + logger.warning( + "This dataset requires a tokenizer to work. Provide it in config as `tokenizer_path` " + "or set it manually as `dataset.tokenizer = your_tokenizer` after building the dataset." + ) + tokenizer = None + return tokenizer + + def __len__(self): + """ + Returns the length of the dataset. + + Returns: + int: The length of the dataset. + + """ + return len(self.dataset) + + def __getitem__(self, index): + """ + Tokenize inputs and return a dict containing ids, masks, labels, etc. + + Args: + index: Sample index. + + Returns: + dict: The input data. + + """ + text = self.dataset[index][self.config.text_field] + if self.config.prefix is not None: + text = self.config.prefix + text # for conditional generation we might need a static prefix + summary = self.dataset[index][self.config.summary_field] + + inputs = self.tokenizer( + text, + return_tensors="pt", + max_length=self.config.max_length, + padding="max_length" if self.config.max_length else "longest", + return_attention_mask=True, + ) + labels = self.tokenizer( + summary, + return_tensors="pt", + max_length=self.config.max_length, + padding="max_length" if self.config.max_target_length else "longest", + return_attention_mask=True, + ) + + inputs["labels"] = labels["token_ids"] + + return inputs
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/embeddings/embedding.html b/_modules/hezar/embeddings/embedding.html new file mode 100644 index 00000000..17592afa --- /dev/null +++ b/_modules/hezar/embeddings/embedding.html @@ -0,0 +1,900 @@ + + + + + + + + hezar.embeddings.embedding - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.embeddings.embedding

    +from __future__ import annotations
    +
    +import os
    +import tempfile
    +from typing import Dict, List
    +
    +from huggingface_hub import HfApi, hf_hub_download
    +
    +from ..builders import build_embedding
    +from ..configs import EmbeddingConfig
    +from ..constants import (
    +    DEFAULT_EMBEDDING_CONFIG_FILE,
    +    DEFAULT_EMBEDDING_FILE,
    +    DEFAULT_EMBEDDING_SUBFOLDER,
    +    HEZAR_CACHE_DIR,
    +    Backends,
    +)
    +from ..utils import Logger, get_lib_version, verify_dependencies
    +
    +
    +logger = Logger(__name__)
    +
    +# The below code is a workaround. Gensim's models have this limitation that the models can only be loaded using the same
    +# gensim & numpy version they were saved with.
    +REQUIRED_GENSIM_VERSION = "4.3.2"
    +REQUIRED_NUMPY_VERSION = "1.24"
    +
    +
    +# Check if the right combo of gensim/numpy versions are installed
    +def _verify_gensim_installation():
    +    if (
    +        not get_lib_version("numpy").startswith(REQUIRED_NUMPY_VERSION)
    +        or not get_lib_version("gensim").startswith(REQUIRED_GENSIM_VERSION)
    +    ):
    +        raise ImportError(
    +            f"The embeddings module in this version of Hezar, requires a combo of numpy>={REQUIRED_NUMPY_VERSION} and "
    +            f"gensim=={REQUIRED_GENSIM_VERSION}. Please install them by running: \n"
    +            f"`pip install numpy~={REQUIRED_NUMPY_VERSION} gensim=={REQUIRED_GENSIM_VERSION}`\n"
    +            f"and make sure to restart your runtime if you're on a notebook environment!\n"
    +            f"You can also set `bypass_version_check=True` in the embedding's config so that this error is not raised."
    +        )
    +
    +
    +
    +[docs] +class Embedding: + """ + Base class for all embeddings. + + Args: + config: An EmbeddingConfig object to construct the embedding. + embedding_file (str): Path to the embedding file. + vectors_file (str): Path to the vectors file. + **kwargs: Extra embedding config parameters passed as keyword arguments. + """ + + required_backends: List[str | Backends] = [] + + filename = DEFAULT_EMBEDDING_FILE + vectors_filename = f"{filename}.wv.vectors.npy" + config_filename = DEFAULT_EMBEDDING_CONFIG_FILE + subfolder = DEFAULT_EMBEDDING_SUBFOLDER + + def __init__(self, config: EmbeddingConfig, embedding_file: str = None, vectors_file: str = None, **kwargs): + verify_dependencies(self, self.required_backends) # Check if all the required dependencies are installed + self.config = config.update(kwargs) + if not self.config.bypass_version_check: + _verify_gensim_installation() + + self.config = config.update(kwargs) + self.model = self.from_file(embedding_file, vectors_file) if embedding_file else self.build() + +
    +[docs] + def build(self): + """ + Build the embedding model. + """ + raise NotImplementedError
    + + +
    +[docs] + def from_file(self, embedding_path, vectors_path): + """ + Load the embedding model from file. + + Args: + embedding_path (str): Path to the embedding file. + vectors_path (str): Path to the vectors file. + """ + raise NotImplementedError
    + + + def __call__(self, inputs: str | List[str], **kwargs): + """ + Get vectors for input words. + + Args: + inputs (str | List[str]): Input word(s). + **kwargs: Additional keyword arguments. + + Returns: + List: List of word vectors. + """ + if isinstance(inputs, str): + inputs = [inputs] + vectors = [self.word_vectors[w] for w in inputs] + return vectors + +
    +[docs] + def train(self, dataset, epochs): + """ + Train the embedding model on a dataset. + + Args: + dataset: The training dataset. + epochs: Number of training epochs. + """ + raise NotImplementedError
    + + +
    +[docs] + def word2index(self, word): + """ + Get the index of a word in the vocabulary. + + Args: + word (str): Input word. + + Returns: + int: Index of the word. + """ + return self.vocab.get(word, -1)
    + + +
    +[docs] + def index2word(self, index): + """ + Get the word corresponding to a given index. + + Args: + index (int): Input index. + + Returns: + str: Word corresponding to the index. + """ + keyed_vocab = {v: k for k, v in self.vocab.items()} + return keyed_vocab[index]
    + + +
    +[docs] + def similarity(self, word1: str, word2: str): + """ + Get the similarity between two words. + + Args: + word1 (str): First word. + word2 (str): Second word. + """ + raise NotImplementedError
    + + +
    +[docs] + def doesnt_match(self, words: List[str]): + """ + Get the word that doesn't match the others in a list. + + Args: + words (List[str]): List of words. + """ + raise NotImplementedError
    + + +
    +[docs] + def most_similar(self, word: str, top_n: int = 5): + """ + Get the most similar words to a given word. + + Args: + word (str): Input word. + top_n (int): Number of similar words to retrieve. + """ + raise NotImplementedError
    + + +
    +[docs] + def get_normed_vectors(self): + """ + Get normalized word vectors. + """ + raise NotImplementedError
    + + +
    +[docs] + @classmethod + def load( + cls, + hub_or_local_path, + config_filename=None, + embedding_file=None, + vectors_file=None, + subfolder=None, + cache_dir=None, + **kwargs, + ) -> "Embedding": + """ + Load an embedding model from a local or Hugging Face Hub path. + + Args: + hub_or_local_path: Path to the local directory or the Hugging Face Hub repository. + config_filename (str): Configuration file name. + embedding_file (str): Embedding file name. + vectors_file (str): Vectors file name. + subfolder (str): Subfolder within the repository. + cache_dir (str): Path to cache directory + **kwargs: Additional keyword arguments. + + Returns: + Embedding: Loaded Embedding object. + """ + config_filename = config_filename or cls.config_filename + embedding_file = embedding_file or cls.filename + vectors_file = vectors_file or cls.vectors_filename + subfolder = subfolder or cls.subfolder + cache_dir = cache_dir or HEZAR_CACHE_DIR + + config = EmbeddingConfig.load( + hub_or_local_path, + filename=config_filename, + subfolder=subfolder, + cache_dir=cache_dir, + ) + + if os.path.isdir(hub_or_local_path): + embedding_path = os.path.join(hub_or_local_path, subfolder, embedding_file) + vectors_path = os.path.join(hub_or_local_path, subfolder, vectors_file) + else: + embedding_path = hf_hub_download( + hub_or_local_path, + filename=embedding_file, + subfolder=subfolder, + cache_dir=cache_dir, + resume_download=True, + ) + vectors_path = hf_hub_download( + hub_or_local_path, + filename=vectors_file, + subfolder=subfolder, + cache_dir=cache_dir, + resume_download=True, + ) + + embedding = build_embedding( + config.name, + config=config, + embedding_file=embedding_path, + vectors_file=vectors_path, + **kwargs, + ) + + return embedding
    + + +
    +[docs] + def save( + self, + path: str | os.PathLike, + filename: str = None, + subfolder: str = None, + save_config: bool = True, + config_filename: str = None, + ): + """ + Save the embedding model to a specified path. + + Args: + path (str | os.PathLike): Path to save the embedding model. + filename (str): Name of the embedding file. + subfolder (str): Subfolder within the path. + save_config (bool): Whether to save the configuration. + config_filename (str): Configuration file name. + """ + raise NotImplementedError
    + + +
    +[docs] + def push_to_hub( + self, + repo_id, + commit_message=None, + subfolder=None, + filename=None, + vectors_filename=None, + config_filename=None, + private=False, + ): + """ + Push the embedding model to the Hugging Face Hub. + + Args: + repo_id: ID of the Hugging Face Hub repository. + commit_message (str): Commit message. + subfolder (str): Subfolder within the repository. + filename (str): Name of the embedding file. + vectors_filename (str): Name of the vectors file. + config_filename (str): Configuration file name. + private (bool): Whether the repository is private. + """ + subfolder = subfolder or self.subfolder + filename = filename or self.filename + vectors_filename = vectors_filename or self.vectors_filename + config_filename = config_filename or self.config_filename + + api = HfApi() + # create remote repo + api.create_repo(repo_id, exist_ok=True) + # save to tmp and prepare for push + cache_path = tempfile.mkdtemp() + # save embedding model file + embedding_save_dir = os.path.join(cache_path) + os.makedirs(embedding_save_dir, exist_ok=True) + + if commit_message is None: + commit_message = "Hezar: Upload embedding and config" + + self.save(embedding_save_dir, filename, subfolder=subfolder, save_config=False) + + self.config.push_to_hub( + repo_id, + config_filename, + subfolder=subfolder, + repo_type="model", + private=private, + commit_message=commit_message, + ) + + api.upload_file( + repo_id=repo_id, + path_or_fileobj=os.path.join(embedding_save_dir, subfolder, filename), + repo_type="model", + path_in_repo=f"{subfolder}/{filename}", + commit_message=commit_message, + ) + logger.log_upload_success( + name=f"{self.__class__.__name__}(name={self.config.name})", + target_path=f"{os.path.join(repo_id, subfolder, filename)}", + ) + + api.upload_file( + repo_id=repo_id, + path_or_fileobj=os.path.join(embedding_save_dir, subfolder, vectors_filename), + repo_type="model", + path_in_repo=f"{subfolder}/{vectors_filename}", + commit_message=commit_message, + ) + logger.log_upload_success( + name=f"`{self.__class__.__name__}(name={self.config.name})`", + target_path=f"`{os.path.join(repo_id, subfolder, vectors_filename)}`", + )
    + + +
    +[docs] + def torch_embedding(self): + """ + Convert the embedding model to a PyTorch Embedding layer. + + Returns: + torch.nn.Embedding: PyTorch Embedding layer. + """ + import torch + + weights = torch.FloatTensor(self.vectors) + embedding_layer = torch.nn.Embedding.from_pretrained(weights) + return embedding_layer
    + + + @property + def word_vectors(self): + """ + Get key:value pairs of word:vector. + """ + raise NotImplementedError + + @property + def vectors(self): + """ + Get the all vectors array/tensor. + """ + raise NotImplementedError + + @property + def vocab(self) -> Dict[str, int]: + """ + Get the vocabulary. + """ + raise NotImplementedError
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/embeddings/fasttext.html b/_modules/hezar/embeddings/fasttext.html new file mode 100644 index 00000000..344de326 --- /dev/null +++ b/_modules/hezar/embeddings/fasttext.html @@ -0,0 +1,755 @@ + + + + + + + + hezar.embeddings.fasttext - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.embeddings.fasttext

    +from __future__ import annotations
    +
    +import os
    +from dataclasses import dataclass
    +from typing import List, Literal
    +
    +from ..constants import Backends
    +from ..registry import register_embedding
    +from ..utils import is_backend_available
    +from .embedding import Embedding, EmbeddingConfig
    +
    +
    +if is_backend_available(Backends.GENSIM):
    +    from gensim.models import fasttext
    +
    +_required_backends = [
    +    Backends.GENSIM,
    +]
    +
    +
    +
    +[docs] +@dataclass +class FastTextConfig(EmbeddingConfig): + """ + Configuration class for FastText embeddings. + + Attributes: + name (str): Name of the embedding. + dataset_path (str): Path to the dataset. + vector_size (int): Size of the word vectors. + window (int): Window size for context words. + alpha (float): Learning rate. + min_count (int): Ignores all words with a total frequency lower than this. + seed (int): Seed for random number generation. + workers (int): Number of workers for training. + min_alpha (float): Minimum learning rate. + train_algorithm (Literal["skipgram", "cbow"]): Training algorithm, either 'skipgram' or 'cbow'. + cbow_mean (int): Constant for CBOW. Default is 1. + epochs (int): Number of training epochs. Default is 5. + """ + + name = "fasttext" + dataset_path: str = None + vector_size: int = 300 + window: int = 5 + alpha: float = 0.025 + min_count: int = 1 + seed: int = 1 + workers: int = 3 + min_alpha: float = 0.0001 + train_algorithm: Literal["skipgram", "cbow"] = "skipgram" + cbow_mean: int = 1 + epochs: int = 5
    + + + +
    +[docs] +@register_embedding("fasttext", config_class=FastTextConfig) +class FastText(Embedding): + """ + FastText embedding class. + + Args: + config (FastTextConfig): Configuration object. + embedding_file (str): Path to the embedding file. + vectors_file (str): Path to the vectors file. + **kwargs: Additional config parameters given as keyword arguments. + """ + + required_backends = _required_backends + + def __init__(self, config: FastTextConfig, embedding_file: str = None, vectors_file: str = None, **kwargs): + super().__init__(config, embedding_file=embedding_file, vectors_file=vectors_file, **kwargs) + +
    +[docs] + def build(self): + """ + Build the FastText embedding model. + + Returns: + fasttext.FastText: FastText embedding model. + """ + embedding_model = fasttext.FastText( + vector_size=self.config.vector_size, + window=self.config.window, + sg=1 if self.config.train_algorithm == "skipgram" else 0, + workers=self.config.workers, + alpha=self.config.alpha, + min_alpha=self.config.min_alpha, + min_count=self.config.min_count, + ) + return embedding_model
    + + +
    +[docs] + def from_file(self, embedding_path, vectors_path): + """ + Load the FastText embedding model from file. + + Args: + embedding_path (str): Path to the embedding file. + vectors_path (str): Path to the vectors file. + + Returns: + fasttext.FastText: Loaded FastText embedding model. + """ + if not os.path.isfile(vectors_path): + raise ValueError( + f"Could not load or find vectors file at `{vectors_path}`! " + f"Please make sure it's been downloaded properly!" + ) + + embedding_model = fasttext.FastText.load(embedding_path) + + return embedding_model
    + + +
    +[docs] + def train( + self, + dataset: List[str], + epochs: int = 5, + ): + """ + Train the FastText embedding model. + + Args: + dataset (List[str]): List of sentences for training. + epochs (int): Number of training epochs. + """ + self.model.build_vocab(dataset) + self.model.train( + dataset, + epochs=epochs, + total_examples=self.model.corpus_count, + total_words=self.model.corpus_total_words, + )
    + + +
    +[docs] + def save( + self, + path: str | os.PathLike, + filename: str = None, + subfolder: str = None, + save_config: bool = True, + config_filename: str = None, + ): + """ + Save the FastText embedding model to a specified path. + + Args: + path (str | os.PathLike): Path to save the embedding model. + filename (str): Name of the embedding file. + subfolder (str): Subfolder within the path. + save_config (bool): Whether to save the configuration. + config_filename (str): Configuration file name. + """ + filename = filename or self.filename + config_filename = config_filename or self.config_filename + subfolder = subfolder or self.subfolder + + save_dir = os.path.join(path, subfolder) + os.makedirs(save_dir, exist_ok=True) + self.config.save(path, config_filename, subfolder=subfolder) + + self.model.save(os.path.join(save_dir, filename))
    + + +
    +[docs] + def similarity(self, word1: str, word2: str): + """ + Get the similarity between two words. + + Args: + word1 (str): First word. + word2 (str): Second word. + + Returns: + float: Similarity score. + """ + if not isinstance(word1, str) or not isinstance(word2, str): + raise ValueError( + f"`Embedding.similarity()` takes two string objects!\n" + f"`word1`: {type(word1)}, `word2`: {type(word2)}" + ) + similarity = self.word_vectors.similarity(word1, word2) + return similarity
    + + +
    +[docs] + def doesnt_match(self, words: List[str]): + """ + Get the word that doesn't match the others in a list. + + Args: + words (List[str]): List of words. + + Returns: + str: Word that doesn't match. + """ + doesnt_match = self.word_vectors.doesnt_match(words) + return doesnt_match
    + + +
    +[docs] + def most_similar(self, word: str, top_n: int = 5): + """ + Get the most similar words to a given word. + + Args: + word (str): Input word. + top_n (int): Number of similar words to retrieve. + + Returns: + List[Dict[str, str | float]]: List of dictionaries containing 'word' and 'score'. + """ + if not isinstance(word, str): + raise ValueError(f"`word` must be `str`, got `{type(word)}`!") + most_similar = self.word_vectors.most_similar(word, topn=top_n) + most_similar = [{"word": word, "score": f"{score:.4f}"} for word, score in most_similar] + return most_similar
    + + +
    +[docs] + def get_normed_vectors(self): + """ + Get normalized word vectors. + """ + normed_vectors = self.word_vectors.get_normed_vectors() + return normed_vectors
    + + + @property + def word_vectors(self): + """ + Get word vectors. + """ + return self.model.wv + + @property + def vectors(self): + """ + Get all vectors. + """ + return self.model.wv.vectors + + @property + def vocab(self): + """ + Get vocabulary. + """ + return self.model.wv.key_to_index
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/embeddings/word2vec.html b/_modules/hezar/embeddings/word2vec.html new file mode 100644 index 00000000..833e1895 --- /dev/null +++ b/_modules/hezar/embeddings/word2vec.html @@ -0,0 +1,772 @@ + + + + + + + + hezar.embeddings.word2vec - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.embeddings.word2vec

    +from __future__ import annotations
    +
    +import os
    +from dataclasses import dataclass
    +from typing import List, Literal
    +
    +from ..constants import Backends
    +from ..registry import register_embedding
    +from ..utils import is_backend_available
    +from .embedding import Embedding, EmbeddingConfig
    +
    +
    +if is_backend_available(Backends.GENSIM):
    +    from gensim.models import word2vec
    +
    +_required_backends = [
    +    Backends.GENSIM,
    +]
    +
    +
    +
    +[docs] +@dataclass +class Word2VecConfig(EmbeddingConfig): + """ + Configuration class for Word2Vec embeddings. + + Attributes: + name (str): Name of the embedding. + dataset_path (str): Path to the dataset. + vector_size (int): Size of the word vectors. + window (int): Window size for context words. + alpha (float): Learning rate. + min_count (int): Ignores all words with a total frequency lower than this. + seed (int): Seed for random number generation. + workers (int): Number of workers for training. + min_alpha (float): Minimum learning rate. + cbow_mean (int): Constant for CBOW. Default is 1. + epochs (int): Number of training epochs. Default is 5. + train_algorithm (Literal["skipgram", "cbow"]): Training algorithm, either 'skipgram' or 'cbow'. + save_format (Literal["binary", "text"]): Format for saving the model, either 'binary' or 'text'. + """ + + name = "word2vec" + dataset_path: str = None + vector_size: int = 300 + window: int = 5 + alpha: float = 0.025 + min_count: int = 1 + seed: int = 1 + workers: int = 3 + min_alpha: float = 0.0001 + cbow_mean: int = 1 + epochs: int = 5 + train_algorithm: Literal["skipgram", "cbow"] = "skipgram" + save_format: Literal["binary", "text"] = "binary"
    + + + +
    +[docs] +@register_embedding("word2vec", config_class=Word2VecConfig) +class Word2Vec(Embedding): + """ + Word2Vec embedding class. + + Args: + config (Word2VecConfig): Configuration object. + embedding_file (str): Path to the embedding file. + vectors_file (str): Path to the vectors file. + **kwargs: Additional config parameters given as keyword arguments. + """ + + required_backends = _required_backends + + def __init__(self, config: Word2VecConfig, embedding_file: str = None, vectors_file: str = None, **kwargs): + super().__init__(config, embedding_file=embedding_file, vectors_file=vectors_file, **kwargs) + +
    +[docs] + def build(self): + """ + Build the Word2Vec embedding model. + + Returns: + gensim.models.Word2Vec: Word2Vec embedding model. + """ + embedding_model = word2vec.Word2Vec( + vector_size=self.config.vector_size, + window=self.config.window, + sg=1 if self.config.train_algorithm == "skipgram" else 0, + workers=self.config.workers, + alpha=self.config.alpha, + min_alpha=self.config.min_alpha, + min_count=self.config.min_count, + ) + return embedding_model
    + + +
    +[docs] + def from_file(self, embedding_path, vectors_path): + """ + Load the Word2Vec embedding model from file. + + Args: + embedding_path (str): Path to the embedding file. + vectors_path (str): Path to the vectors file. + + Raises: + ValueError: If vectors file is not found. + + Returns: + gensim.models.Word2Vec: Loaded Word2Vec embedding model. + """ + if not os.path.isfile(vectors_path): + raise ValueError( + f"Could not load or find vectors file at `{vectors_path}`! " + f"Please make sure it's been downloaded properly!" + ) + + embedding_model = word2vec.Word2Vec.load(embedding_path) + + return embedding_model
    + + +
    +[docs] + def train( + self, + dataset: List[str], + epochs: int = 5, + ): + """ + Train the Word2Vec embedding model. + + Args: + dataset (List[str]): List of sentences for training. + epochs (int): Number of training epochs. + """ + self.model.build_vocab(dataset) + self.model.train( + dataset, + epochs=epochs, + total_examples=self.model.corpus_count, + total_words=self.model.corpus_total_words, + )
    + + +
    +[docs] + def save( + self, + path: str | os.PathLike, + filename: str = None, + subfolder: str = None, + save_config: bool = True, + config_filename: str = None, + ): + """ + Save the Word2Vec embedding model to a specified path. + + Args: + path (str | os.PathLike): Path to save the embedding model. + filename (str): Name of the embedding file. + subfolder (str): Subfolder within the path. + save_config (bool): Whether to save the configuration. + config_filename (str): Configuration file name. + """ + filename = filename or self.filename + config_filename = config_filename or self.config_filename + subfolder = subfolder or self.subfolder + + save_dir = os.path.join(path, subfolder) + os.makedirs(save_dir, exist_ok=True) + self.config.save(path, config_filename, subfolder=subfolder) + + self.model.save(os.path.join(save_dir, filename))
    + + +
    +[docs] + def similarity(self, word1: str, word2: str): + """ + Get the similarity between two words. + + Args: + word1 (str): First word. + word2 (str): Second word. + + Returns: + float: Similarity score. + """ + if not isinstance(word1, str) or not isinstance(word2, str): + raise ValueError( + f"`Embedding.similarity()` takes two string objects!\n" + f"`word1`: {type(word1)}, `word2`: {type(word2)}" + ) + similarity = self.word_vectors.similarity(word1, word2) + return similarity
    + + +
    +[docs] + def doesnt_match(self, words: List[str]): + """ + Get the word that doesn't match the others in a list. + + Args: + words (List[str]): List of words. + + Returns: + str: Word that doesn't match. + """ + doesnt_match = self.word_vectors.doesnt_match(words) + return doesnt_match
    + + +
    +[docs] + def most_similar(self, word: str, top_n: int = 5): + """ + Get the most similar words to a given word. + + Args: + word (str): Input word. + top_n (int): Number of similar words to retrieve. + + Returns: + List[Dict[str, str | float]]: List of dictionaries containing 'word' and 'score'. + """ + if not isinstance(word, str): + raise ValueError(f"`word` must be `str`, got `{type(word)}`!") + most_similar = self.word_vectors.most_similar(word, topn=top_n) + most_similar = [{"word": word, "score": f"{score:.4f}"} for word, score in most_similar] + return most_similar
    + + +
    +[docs] + def get_normed_vectors(self): + """ + Get normalized word vectors. + + Returns: + Any: Normed word vectors. + """ + normed_vectors = self.word_vectors.get_normed_vectors() + return normed_vectors
    + + + @property + def word_vectors(self): + """ + Get word vectors. + + Returns: + gensim.models.keyedvectors.KeyedVectors: Word vectors. + """ + return self.model.wv + + @property + def vectors(self): + """ + Get all vectors. + + Returns: + numpy.ndarray: All vectors. + """ + return self.model.wv.vectors + + @property + def vocab(self): + """ + Get vocabulary. + + Returns: + Dict[str, int]: Vocabulary. + """ + return self.model.wv.key_to_index
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/accuracy.html b/_modules/hezar/metrics/accuracy.html new file mode 100644 index 00000000..7317e88f --- /dev/null +++ b/_modules/hezar/metrics/accuracy.html @@ -0,0 +1,580 @@ + + + + + + + + hezar.metrics.accuracy - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.accuracy

    +from dataclasses import dataclass
    +from typing import Iterable
    +
    +from sklearn.metrics import accuracy_score
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from .metric import Metric
    +
    +
    +_required_backends = [
    +    Backends.SCIKIT,
    +]
    +
    +
    +
    +[docs] +@dataclass +class AccuracyConfig(MetricConfig): + name = MetricType.ACCURACY + objective: str = "maximize" + normalize: bool = True + sample_weight: Iterable[float] = None + output_keys: tuple = ("accuracy",)
    + + + +
    +[docs] +@register_metric("accuracy", config_class=AccuracyConfig) +class Accuracy(Metric): + """ + Accuracy metric for numeric arrays backed by Scikit-learn's `accuracy_score`. + + Args: + config (AccuracyConfig): Metric config object + **kwargs: Extra config parameters passed as kwargs to update the `config` + """ + required_backends = _required_backends + + def __init__(self, config: AccuracyConfig, **kwargs): + super().__init__(config, **kwargs) + +
    +[docs] + def compute( + self, + predictions=None, + targets=None, + normalize=None, + sample_weight=None, + n_decimals=None, + output_keys=None, + ): + """ + Compute the accuracy score for the given predictions against targets. + + Args: + predictions: A list of prediction labels + targets: A list of ground truth labels + normalize: Whether to normalize the inputs or not + sample_weight: Sample weight + n_decimals: Floating point decimals for the final score + output_keys: Filter the output keys + + Returns: + A dictionary of the metric results + """ + normalize = normalize or self.config.normalize + sample_weight = sample_weight or self.config.sample_weight + n_decimals = n_decimals or self.config.n_decimals + output_keys = output_keys or self.config.output_keys + + score = accuracy_score( + targets, + predictions, + normalize=normalize, + sample_weight=sample_weight, + ) + + results = {"accuracy": round(float(score), n_decimals)} + + if output_keys: + results = {k: v for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/bleu.html b/_modules/hezar/metrics/bleu.html new file mode 100644 index 00000000..93e0dbef --- /dev/null +++ b/_modules/hezar/metrics/bleu.html @@ -0,0 +1,580 @@ + + + + + + + + hezar.metrics.bleu - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.bleu

    +from __future__ import annotations
    +
    +from dataclasses import dataclass
    +from typing import Iterable
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from ..utils import is_backend_available
    +from .metric import Metric
    +
    +
    +if is_backend_available(Backends.NLTK):
    +    from nltk.translate.bleu_score import corpus_bleu
    +
    +_required_backends = [
    +    Backends.NLTK,
    +]
    +
    +
    +
    +[docs] +@dataclass +class BLEUConfig(MetricConfig): + """ + Configuration class for BLEU metric. + + args: + name (MetricType): The type of metric, BLEU in this case. + output_keys (tuple): Keys to filter the metric results for output. + """ + name = MetricType.BLEU + objective: str = "maximize" + output_keys: tuple = ("bleu",)
    + + + +
    +[docs] +@register_metric("bleu", config_class=BLEUConfig) +class BLEU(Metric): + """ + BLEU metric for evaluating text generation models like translation, summarization, etc. + """ + required_backends = _required_backends + + def __init__(self, config: BLEUConfig, **kwargs): + super().__init__(config=config, **kwargs) + +
    +[docs] + def compute( + self, + predictions: Iterable[str] | str = None, + targets: Iterable[str] | str = None, + weights=(0.25, 0.25, 0.25, 0.25), + n_decimals=None, + output_keys=None, + **kwargs, + ): + """ + Computes the BLEU score for the given predictions against targets. + + Args: + predictions (Iterable[str] | str): Predicted sentences or tokens. + targets (Iterable[str] | str): Ground truth sentences or tokens. + weights (tuple): Weights for n-gram precision, default is (0.25, 0.25, 0.25, 0.25). + n_decimals (int): Number of decimals for the final score. + output_keys (tuple): Filter the output keys. + + Returns: + dict: A dictionary of the metric results, with keys specified by `output_keys`. + """ + n_decimals = n_decimals or self.config.n_decimals + output_keys = output_keys or self.config.output_keys + + predictions = [x.split() if isinstance(x, str) else x for x in predictions] + targets = [x.split() if isinstance(x, str) else x for x in targets] + + score = corpus_bleu(targets, predictions, weights=weights) + + results = {"bleu": round(float(score), n_decimals)} + + if output_keys: + results = {k: v for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/cer.html b/_modules/hezar/metrics/cer.html new file mode 100644 index 00000000..718e3f67 --- /dev/null +++ b/_modules/hezar/metrics/cer.html @@ -0,0 +1,614 @@ + + + + + + + + hezar.metrics.cer - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.cer

    +from dataclasses import dataclass
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from ..utils import is_backend_available
    +from .metric import Metric
    +
    +
    +if is_backend_available(Backends.JIWER):
    +    import jiwer
    +    import jiwer.transforms as tr
    +
    +_DESCRIPTION = "Character Error Rate (CER) using `jiwer`. Commonly used for Speech Recognition and OCR systems"
    +
    +_required_backends = [
    +    Backends.JIWER,
    +]
    +
    +
    +
    +[docs] +@dataclass +class CERConfig(MetricConfig): + """ + Configuration class for CER (Character Error Rate) metric. + + Args: + name (MetricType): The type of metric, CER in this case. + sentence_delimiter (str): Delimiter for separating sentences in texts. + concatenate_texts (bool): Flag to concatenate texts before computing CER. + output_keys (tuple): Keys to filter the metric results for output. + """ + name = MetricType.CER + objective: str = "minimize" + sentence_delimiter: str = " " + concatenate_texts: bool = False + output_keys: tuple = ("cer",)
    + + + +
    +[docs] +@register_metric("cer", config_class=CERConfig, description=_DESCRIPTION) +class CER(Metric): + """ + CER metric for evaluating Character Error Rate using `jiwer`. + + Args: + config (CERConfig): Metric configuration object. + **kwargs: Extra configuration parameters passed as kwargs to update the `config`. + """ + required_backends = _required_backends + + def __init__(self, config: CERConfig, **kwargs): + super().__init__(config=config, **kwargs) + self.transform = tr.Compose( + [ + tr.RemoveMultipleSpaces(), + tr.Strip(), + tr.ReduceToSingleSentence(self.config.sentence_delimiter), + tr.ReduceToListOfListOfChars(), + ] + ) + +
    +[docs] + def compute( + self, + predictions=None, + targets=None, + concatenate_texts=None, + n_decimals=None, + output_keys=None, + **kwargs, + ): + """ + Computes the Character Error Rate (CER) for the given predictions against targets. + + Args: + predictions: Predicted texts. + targets: Ground truth texts. + concatenate_texts (bool): Flag to concatenate texts before computing CER. + n_decimals (int): Number of decimals for the final score. + output_keys (tuple): Filter the output keys. + + Returns: + dict: A dictionary of the metric results, with keys specified by `output_keys`. + """ + concatenate_texts = concatenate_texts or self.config.concatenate_texts + n_decimals = n_decimals or self.config.n_decimals + + if concatenate_texts: + score = jiwer.process_words( + targets, + predictions, + reference_transform=self.transform, + hypothesis_transform=self.transform, + ).wer + + else: + incorrect = 0 + total = 0 + for prediction, reference in zip(predictions, targets): + measures = jiwer.process_words( + reference, + prediction, + reference_transform=self.transform, + hypothesis_transform=self.transform, + ) + incorrect += measures.substitutions + measures.deletions + measures.insertions + total += measures.substitutions + measures.deletions + measures.hits + + score = incorrect / total + + results = {"cer": round(float(score), n_decimals)} + + if output_keys: + results = {k: v for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/f1.html b/_modules/hezar/metrics/f1.html new file mode 100644 index 00000000..cb4e652f --- /dev/null +++ b/_modules/hezar/metrics/f1.html @@ -0,0 +1,603 @@ + + + + + + + + hezar.metrics.f1 - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.f1

    +from dataclasses import dataclass
    +from typing import Iterable
    +
    +from sklearn.metrics import f1_score
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from .metric import Metric
    +
    +
    +_required_backends = [
    +    Backends.SCIKIT,
    +]
    +
    +
    +
    +[docs] +@dataclass +class F1Config(MetricConfig): + """ + Configuration class for F1 metric. + + Args: + name (MetricType): The type of metric, F1 in this case. + pos_label (int): Label of the positive class. + average (str): Type of averaging for the F1 score. + sample_weight (Iterable[float]): Sample weights for the F1 score. + output_keys (tuple): Keys to filter the metric results for output. + """ + name = MetricType.F1 + objective: str = "maximize" + pos_label: int = 1 + average: str = "macro" + sample_weight: Iterable[float] = None + output_keys: tuple = ("f1",)
    + + + +
    +[docs] +@register_metric("f1", config_class=F1Config) +class F1(Metric): + """ + F1 metric for evaluating classification performance using sklearn's `f1_score`. + + Args: + config (F1Config): Metric configuration object. + **kwargs: Extra configuration parameters passed as kwargs to update the `config`. + """ + required_backends = _required_backends + + def __init__(self, config: F1Config, **kwargs): + super().__init__(config, **kwargs) + +
    +[docs] + def compute( + self, + predictions=None, + targets=None, + labels=None, + pos_label=1, + average=None, + sample_weight=None, + zero_division="warn", + n_decimals=None, + output_keys=None, + ): + """ + Computes the F1 score for the given predictions against targets. + + Args: + predictions: Predicted labels. + targets: Ground truth labels. + labels: List of labels to include in the calculation. + pos_label (int): Label of the positive class. + average (str): Type of averaging for the F1 score. + sample_weight (Iterable[float]): Sample weights for the F1 score. + zero_division (str): Strategy to use for zero-division, default is "warn". + n_decimals (int): Number of decimals for the final score. + output_keys (tuple): Filter the output keys. + + Returns: + dict: A dictionary of the metric results, with keys specified by `output_keys`. + """ + pos_label = pos_label or self.config.pos_label + average = average or self.config.average + sample_weight = sample_weight or self.config.sample_weight + n_decimals = n_decimals or self.config.n_decimals + output_keys = output_keys or self.config.output_keys + + score = f1_score( + targets, + predictions, + labels=labels, + pos_label=pos_label, + average=average, + sample_weight=sample_weight, + zero_division=zero_division, + ) + + score = float(score) if score.size == 1 else score + + results = {"f1": round(float(score), n_decimals)} + + if output_keys: + results = {k: v for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/metric.html b/_modules/hezar/metrics/metric.html new file mode 100644 index 00000000..111fcd2c --- /dev/null +++ b/_modules/hezar/metrics/metric.html @@ -0,0 +1,535 @@ + + + + + + + + hezar.metrics.metric - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.metric

    +from __future__ import annotations
    +
    +from typing import Dict, List
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends
    +from ..utils import verify_dependencies
    +
    +
    +
    +[docs] +class Metric: + """ + The base metric class for all metrics in Hezar. + + Metrics are simple wrappers for casual ready-to-use metrics like in scikit-learn, etc. and it's strongly recommended + not to reinvent the wheel. If a metric is already implemented by some package, use it! The only reason to implement + such a module, is to make sure the metrics are treated the same all over the framework. + """ + + required_backends: List[str | Backends] = [] + + def __init__(self, config: MetricConfig, **kwargs): + # Check if all the required dependencies are installed + verify_dependencies(self, self.required_backends) + + self.config = config.update(kwargs) + +
    +[docs] + def compute(self, predictions=None, targets=None, **kwargs) -> Dict: + """ + Compute metric value for the given predictions against the targets + Args: + predictions: Prediction values + targets: Ground truth values + **kwargs: Extra arguments depending on the metric + + Returns: + A dictionary of the results and scores + """ + raise NotImplementedError
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/precision.html b/_modules/hezar/metrics/precision.html new file mode 100644 index 00000000..5ff03313 --- /dev/null +++ b/_modules/hezar/metrics/precision.html @@ -0,0 +1,608 @@ + + + + + + + + hezar.metrics.precision - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.precision

    +from __future__ import annotations
    +
    +from dataclasses import dataclass
    +from typing import Iterable
    +
    +from sklearn.metrics import precision_score
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from .metric import Metric
    +
    +
    +_required_backends = [
    +    Backends.SCIKIT,
    +]
    +
    +
    +
    +[docs] +@dataclass +class PrecisionConfig(MetricConfig): + """ + Configuration class for Precision metric. + + Args: + name (MetricType): The type of metric, Precision in this case. + pos_label (int): Label of the positive class. + average (str): Type of averaging for the precision score. + sample_weight (Iterable[float]): Sample weights for the precision score. + zero_division (str | float): Strategy for zero-division, default is 0.0. + output_keys (tuple): Keys to filter the metric results for output. + """ + name = MetricType.PRECISION + objective: str = "maximize" + pos_label: int = 1 + average: str = "macro" + sample_weight: Iterable[float] = None + zero_division: str | float = 0.0 + output_keys: tuple = ("precision",)
    + + + +
    +[docs] +@register_metric("precision", config_class=PrecisionConfig) +class Precision(Metric): + """ + Precision metric for evaluating classification performance using sklearn's `precision_score`. + + Args: + config (PrecisionConfig): Metric configuration object. + **kwargs: Extra configuration parameters passed as kwargs to update the `config`. + """ + required_backends = _required_backends + + def __init__(self, config: PrecisionConfig, **kwargs): + super().__init__(config, **kwargs) + +
    +[docs] + def compute( + self, + predictions=None, + targets=None, + labels=None, + pos_label=1, + average=None, + sample_weight=None, + zero_division=None, + n_decimals=None, + output_keys=None, + ): + """ + Computes the Precision score for the given predictions against targets. + + Args: + predictions: Predicted labels. + targets: Ground truth labels. + labels: List of labels to include in the calculation. + pos_label (int): Label of the positive class. + average (str): Type of averaging for the precision score. + sample_weight (Iterable[float]): Sample weights for the precision score. + zero_division (str | float): Strategy for zero-division, default is 0.0. + n_decimals (int): Number of decimals for the final score. + output_keys (tuple): Filter the output keys. + + Returns: + dict: A dictionary of the metric results, with keys specified by `output_keys`. + """ + pos_label = pos_label or self.config.pos_label + average = average or self.config.average + sample_weight = sample_weight or self.config.sample_weight + zero_division = zero_division or self.config.zero_division + n_decimals = n_decimals or self.config.n_decimals + output_keys = output_keys or self.config.output_keys + + score = precision_score( + targets, + predictions, + labels=labels, + pos_label=pos_label, + average=average, + sample_weight=sample_weight, + zero_division=zero_division, + ) + + score = float(score) if score.size == 1 else score + + results = {"precision": round(float(score), n_decimals)} + + if output_keys: + results = {k: v for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/recall.html b/_modules/hezar/metrics/recall.html new file mode 100644 index 00000000..b3af472a --- /dev/null +++ b/_modules/hezar/metrics/recall.html @@ -0,0 +1,608 @@ + + + + + + + + hezar.metrics.recall - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.recall

    +from __future__ import annotations
    +
    +from dataclasses import dataclass
    +from typing import Iterable
    +
    +from sklearn.metrics import recall_score
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from .metric import Metric
    +
    +
    +_required_backends = [
    +    Backends.SCIKIT,
    +]
    +
    +
    +
    +[docs] +@dataclass +class RecallConfig(MetricConfig): + """ + Configuration class for Recall metric. + + Args: + name (MetricType): The type of metric, Recall in this case. + pos_label (int): Label of the positive class. + average (str): Type of averaging for the recall score. + sample_weight (Iterable[float]): Sample weights for the recall score. + zero_division (str | float): Strategy for zero-division, default is 0.0. + output_keys (tuple): Keys to filter the metric results for output. + """ + name = MetricType.RECALL + objective: str = "maximize" + pos_label: int = 1 + average: str = "macro" + sample_weight: Iterable[float] = None + zero_division: str | float = 0.0 + output_keys: tuple = ("recall",)
    + + + +
    +[docs] +@register_metric("recall", config_class=RecallConfig) +class Recall(Metric): + """ + Recall metric for evaluating classification performance using sklearn's `recall_score`. + + Args: + config (RecallConfig): Metric configuration object. + **kwargs: Extra configuration parameters passed as kwargs to update the `config`. + """ + required_backends = _required_backends + + def __init__(self, config: RecallConfig, **kwargs): + super().__init__(config, **kwargs) + +
    +[docs] + def compute( + self, + predictions=None, + targets=None, + labels=None, + pos_label=None, + average=None, + sample_weight=None, + zero_division=None, + n_decimals=None, + output_keys=None, + ): + """ + Computes the Recall score for the given predictions against targets. + + Args: + predictions: Predicted labels. + targets: Ground truth labels. + labels: List of labels to include in the calculation. + pos_label (int): Label of the positive class. + average (str): Type of averaging for the recall score. + sample_weight (Iterable[float]): Sample weights for the recall score. + zero_division (str | float): Strategy for zero-division, default is 0.0. + n_decimals (int): Number of decimals for the final score. + output_keys (tuple): Filter the output keys. + + Returns: + dict: A dictionary of the metric results, with keys specified by `output_keys`. + """ + pos_label = pos_label or self.config.pos_label + average = average or self.config.average + sample_weight = sample_weight or self.config.sample_weight + zero_division = zero_division or self.config.zero_division + n_decimals = n_decimals or self.config.n_decimals + output_keys = output_keys or self.config.output_keys + + score = recall_score( + targets, + predictions, + labels=labels, + pos_label=pos_label, + average=average, + sample_weight=sample_weight, + zero_division=zero_division, + ) + + score = float(score) if score.size == 1 else score + + results = {"recall": round(float(score), n_decimals)} + + if output_keys: + results = {k: v for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/rouge.html b/_modules/hezar/metrics/rouge.html new file mode 100644 index 00000000..bbdea5ab --- /dev/null +++ b/_modules/hezar/metrics/rouge.html @@ -0,0 +1,598 @@ + + + + + + + + hezar.metrics.rouge - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.rouge

    +from dataclasses import dataclass
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from ..utils import is_backend_available
    +from .metric import Metric
    +
    +
    +if is_backend_available(Backends.ROUGE):
    +    from rouge_score import rouge_scorer, scoring
    +
    +_DESCRIPTION = "Rouge estimation. Commonly used for Text Summarization"
    +
    +_required_backends = [
    +    Backends.ROUGE,
    +]
    +
    +
    +
    +[docs] +@dataclass +class ROUGEConfig(MetricConfig): + """ + Configuration class for ROUGE metric. + + Args: + name (MetricType): The type of metric, ROUGE in this case. + use_stemmer (bool): Flag to enable stemming when computing ROUGE. + use_aggregator (bool): Flag to enable score aggregation for multiple references. + multi_ref (bool): Flag to indicate if multiple references are present. + output_keys (tuple): Keys to filter the metric results for output. + """ + name = MetricType.ROUGE + objective: str = "maximize" + use_stemmer: bool = False + use_aggregator: bool = True + multi_ref: bool = True + output_keys: tuple = ("rouge1", "rouge2", "rougeL", "rougeLsum",)
    + + + +
    +[docs] +@register_metric("rouge", config_class=ROUGEConfig, description=_DESCRIPTION) +class ROUGE(Metric): + """ + ROUGE metric for evaluating text summarization using `rouge_score`. + + Args: + config (ROUGEConfig): Metric configuration object. + **kwargs: Extra configuration parameters passed as kwargs to update the `config`. + """ + required_backends = _required_backends + + def __init__(self, config: ROUGEConfig, **kwargs): + super().__init__(config=config, **kwargs) + rouge_types = ["rouge1", "rouge2", "rougeL", "rougeLsum"] + self.scorer = rouge_scorer.RougeScorer( + rouge_types=rouge_types, + use_stemmer=self.config.use_stemmer, + ) + +
    +[docs] + def compute( + self, + predictions=None, + targets=None, + use_aggregator=None, + n_decimals=None, + output_keys=None, + **kwargs, + ): + """ + Computes the ROUGE scores for the given predictions against targets. + + Args: + predictions: Predicted summaries. + targets: Ground truth summaries. + use_aggregator (bool): Flag to enable score aggregation for multiple references. + n_decimals (int): Number of decimals for the final score. + output_keys (tuple): Filter the output keys. + + Returns: + dict: A dictionary of the metric results, with keys specified by `output_keys`. + """ + aggregator = scoring.BootstrapAggregator() + + for ref, pred in zip(targets, predictions): + if self.config.multi_ref: + score = self.scorer.score_multi(ref, pred) + else: + score = self.scorer.score(ref, pred) + + aggregator.add_scores(score) + + results = aggregator.aggregate() + for key in results: + results[key] = results[key].mid.fmeasure + + if output_keys: + results = {k: round(v, 4) for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/seqeval.html b/_modules/hezar/metrics/seqeval.html new file mode 100644 index 00000000..4aeb5a5c --- /dev/null +++ b/_modules/hezar/metrics/seqeval.html @@ -0,0 +1,619 @@ + + + + + + + + hezar.metrics.seqeval - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.seqeval

    +from __future__ import annotations
    +
    +from dataclasses import dataclass
    +from typing import List, Optional
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from ..utils import Logger, is_backend_available
    +from .metric import Metric
    +
    +
    +if is_backend_available(Backends.SEQEVAL):
    +    from seqeval.metrics import accuracy_score, classification_report
    +
    +_required_backends = [
    +    Backends.SEQEVAL,
    +]
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +@dataclass +class SeqevalConfig(MetricConfig): + """ + Configuration class for Seqeval metric. + + Args: + name (MetricType): The type of metric, Seqeval in this case. + output_keys (tuple): Keys to filter the metric results for output. + suffix (bool): Flag to indicate whether the labels have suffixes. + mode (Optional[str]): Evaluation mode for seqeval. + sample_weight (Optional[List[int]]): Sample weights for the seqeval metrics. + zero_division (str | int): Strategy for zero-division, default is 0. + """ + name = MetricType.SEQEVAL + objective: str = "maximize" + output_keys: tuple = ("accuracy", "recall", "precision", "f1") + suffix: bool = False + mode: Optional[str] = None + sample_weight: Optional[List[int]] = None + zero_division: str | int = 0
    + + + +
    +[docs] +@register_metric("seqeval", config_class=SeqevalConfig) +class Seqeval(Metric): + """ + Seqeval metric for sequence labeling tasks using `seqeval`. + + Args: + config (SeqevalConfig): Metric configuration object. + **kwargs: Extra configuration parameters passed as kwargs to update the `config`. + """ + required_backends = _required_backends + + def __init__(self, config: SeqevalConfig, **kwargs): + super().__init__(config, **kwargs) + +
    +[docs] + def compute( + self, + predictions=None, + targets=None, + suffix: bool = None, + mode: Optional[str] = None, + sample_weight: Optional[List[int]] = None, + zero_division: str | int = None, + n_decimals: int = None, + output_keys=None, + **kwargs, + ): + """ + Computes the Seqeval scores for the given predictions against targets. + + Args: + predictions: Predicted labels. + targets: Ground truth labels. + suffix (bool): Flag to indicate whether the labels have suffixes. + mode (Optional[str]): Evaluation mode for seqeval. + sample_weight (Optional[List[int]]): Sample weights for the seqeval metrics. + zero_division (str | int): Strategy for zero-division, default is 0. + n_decimals (int): Number of decimals for the final score. + output_keys (tuple): Filter the output keys. + + Returns: + dict: A dictionary of the metric results, with keys specified by `output_keys`. + """ + suffix = suffix or self.config.suffix + mode = mode or self.config.mode + sample_weight = sample_weight or self.config.sample_weight + zero_division = zero_division or self.config.zero_division + n_decimals = n_decimals or self.config.n_decimals + output_keys = output_keys or self.config.output_keys + + report = classification_report( + y_true=targets, + y_pred=predictions, + suffix=suffix, + output_dict=True, + mode=mode, + sample_weight=sample_weight, + zero_division=zero_division, + ) + report.pop("macro avg") + report.pop("weighted avg") + overall_score = report.pop("micro avg") + + results = { + "accuracy": format(accuracy_score(predictions, targets)), + "f1": overall_score["f1-score"], + "recall": overall_score["recall"], + "precision": overall_score["precision"], + } + + results = {k: round(float(v), n_decimals) for k, v in results.items()} + + if output_keys: + results = {k: v for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/metrics/wer.html b/_modules/hezar/metrics/wer.html new file mode 100644 index 00000000..ed876ce6 --- /dev/null +++ b/_modules/hezar/metrics/wer.html @@ -0,0 +1,592 @@ + + + + + + + + hezar.metrics.wer - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.metrics.wer

    +from dataclasses import dataclass
    +
    +from ..configs import MetricConfig
    +from ..constants import Backends, MetricType
    +from ..registry import register_metric
    +from ..utils import is_backend_available
    +from .metric import Metric
    +
    +
    +if is_backend_available(Backends.JIWER):
    +    import jiwer
    +
    +_DESCRIPTION = "Word Error Rate (WER) using `jiwer`. Commonly used for Speech Recognition systems"
    +
    +_required_backends = [
    +    Backends.JIWER,
    +]
    +
    +
    +
    +[docs] +@dataclass +class WERConfig(MetricConfig): + """ + Configuration class for WER metric. + + Args: + name (MetricType): The type of metric, WER in this case. + concatenate_texts (bool): Flag to indicate whether to concatenate texts before WER calculation. + output_keys (tuple): Keys to filter the metric results for output. + """ + name = MetricType.WER + objective: str = "minimize" + concatenate_texts: bool = False + output_keys: tuple = ("wer",)
    + + + +
    +[docs] +@register_metric("wer", config_class=WERConfig, description=_DESCRIPTION) +class WER(Metric): + """ + WER metric for evaluating Word Error Rate using `jiwer`. + + Args: + config (WERConfig): Metric configuration object. + **kwargs: Extra configuration parameters passed as kwargs to update the `config`. + """ + required_backends = _required_backends + + def __init__(self, config: WERConfig, **kwargs): + super().__init__(config=config, **kwargs) + +
    +[docs] + def compute( + self, + predictions=None, + targets=None, + concatenate_texts=None, + n_decimals=None, + output_keys=None, + **kwargs, + ): + """ + Computes the WER for the given predictions against targets. + + Args: + predictions: Predicted texts. + targets: Ground truth texts. + concatenate_texts (bool): Flag to indicate whether to concatenate texts before WER calculation. + n_decimals (int): Number of decimals for the final score. + output_keys (tuple): Filter the output keys. + + Returns: + dict: A dictionary of the metric results, with keys specified by `output_keys`. + """ + concatenate_texts = concatenate_texts or self.config.concatenate_texts + n_decimals = n_decimals or self.config.n_decimals + + if concatenate_texts: + score = jiwer.process_words(targets, predictions).wer + else: + incorrect = 0 + total = 0 + for prediction, reference in zip(predictions, targets): + measures = jiwer.process_words(reference, prediction) + incorrect += measures.substitutions + measures.deletions + measures.insertions + total += measures.substitutions + measures.deletions + measures.hits + + score = incorrect / total + + results = {"wer": round(float(score), n_decimals)} + + if output_keys: + results = {k: v for k, v in results.items() if k in output_keys} + + return results
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/backbone/bert/bert.html b/_modules/hezar/models/backbone/bert/bert.html new file mode 100644 index 00000000..1907e594 --- /dev/null +++ b/_modules/hezar/models/backbone/bert/bert.html @@ -0,0 +1,588 @@ + + + + + + + + hezar.models.backbone.bert.bert - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.backbone.bert.bert

    +"""
    +A BERT base language model (HuggingFace Transformers) wrapped by a Hezar Model class
    +"""
    +from __future__ import annotations
    +
    +from typing import List
    +
    +from ....constants import Backends
    +from ....models import Model
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from .bert_config import BERTConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import BertConfig, BertModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model("bert", config_class=BERTConfig) +class BERT(Model): + required_backends = _required_backends + tokenizer_name = "wordpiece_tokenizer" + skip_keys_on_load = ["model.embeddings.position_ids", "bert.embeddings.position_ids"] # For older versions + + def __init__(self, config, **kwargs): + super().__init__(config=config, **kwargs) + self.bert = BertModel(BertConfig(**self.config)) + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + encoder_hidden_states=None, + encoder_attention_mask=None, + past_key_values=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ): + outputs = self.bert( + input_ids=token_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_attention_mask, + past_key_values=past_key_values, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=True, + ) + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer(inputs, return_tensors="pt", device=self.device) + return inputs
    + + +
    +[docs] + def post_process(self, model_outputs, **kwargs): + hidden_states = model_outputs.get("hidden_states", None) + attentions = model_outputs.get("attentions", None) + outputs = { + "last_hidden_state": model_outputs.get("last_hidden_state"), + "hidden_states": hidden_states, + "attentions": attentions, + } + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/backbone/bert/bert_config.html b/_modules/hezar/models/backbone/bert/bert_config.html new file mode 100644 index 00000000..29fc1143 --- /dev/null +++ b/_modules/hezar/models/backbone/bert/bert_config.html @@ -0,0 +1,520 @@ + + + + + + + + hezar.models.backbone.bert.bert_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.backbone.bert.bert_config

    +from dataclasses import dataclass
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class BERTConfig(ModelConfig): + name = "bert" + task: str = TaskType.BACKBONE + vocab_size: int = 42000 + hidden_size: int = 768 + num_hidden_layers: int = 12 + num_attention_heads: int = 12 + intermediate_size: int = 3072 + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + attention_probs_dropout_prob: float = 0.1 + max_position_embeddings: int = 512 + type_vocab_size: int = 2 + initializer_range: float = 0.02 + layer_norm_eps: float = 1e-12 + pad_token_id: int = 0 + position_embedding_type: str = "absolute" + use_cache: bool = True + classifier_dropout: float = None
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/backbone/distilbert/distilbert.html b/_modules/hezar/models/backbone/distilbert/distilbert.html new file mode 100644 index 00000000..cc080b8c --- /dev/null +++ b/_modules/hezar/models/backbone/distilbert/distilbert.html @@ -0,0 +1,575 @@ + + + + + + + + hezar.models.backbone.distilbert.distilbert - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.backbone.distilbert.distilbert

    +"""
    +A DistilBERT base language model (HuggingFace Transformers) wrapped by a Hezar Model class
    +"""
    +from __future__ import annotations
    +
    +from typing import List
    +
    +from ....constants import Backends
    +from ....models import Model
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from .distilbert_config import DistilBERTConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import DistilBertConfig, DistilBertModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model("distilbert", config_class=DistilBERTConfig) +class DistilBERT(Model): + required_backends = _required_backends + tokenizer_name = "wordpiece_tokenizer" + + def __init__(self, config, **kwargs): + super().__init__(config=config, **kwargs) + self.distilbert = DistilBertModel(DistilBertConfig(**self.config)) + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ): + outputs = self.distilbert( + input_ids=token_ids, + attention_mask=attention_mask, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=True, + ) + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer(inputs, return_tensors="pt", device=self.device) + return inputs
    + + +
    +[docs] + def post_process(self, model_outputs, **kwargs): + hidden_states = model_outputs.get("hidden_states", None) + attentions = model_outputs.get("attentions", None) + outputs = { + "last_hidden_state": model_outputs.get("last_hidden_state"), + "hidden_states": hidden_states, + "attentions": attentions, + } + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/backbone/distilbert/distilbert_config.html b/_modules/hezar/models/backbone/distilbert/distilbert_config.html new file mode 100644 index 00000000..c19dcb58 --- /dev/null +++ b/_modules/hezar/models/backbone/distilbert/distilbert_config.html @@ -0,0 +1,518 @@ + + + + + + + + hezar.models.backbone.distilbert.distilbert_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.backbone.distilbert.distilbert_config

    +from dataclasses import dataclass
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class DistilBERTConfig(ModelConfig): + name = "distilbert" + task: str = TaskType.LANGUAGE_MODELING + activation: str = "gelu" + attention_dropout: float = 0.1 + dim: int = 768 + dropout: float = 0.1 + hidden_dim: int = 3072 + initializer_range: float = 0.02 + max_position_embeddings: int = 512 + n_heads: int = 12 + n_layers: int = 6 + output_past: bool = True + pad_token_id: int = 0 + qa_dropout: float = 0.1 + tie_weights_: bool = True + vocab_size: int = 42000
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/backbone/roberta/roberta.html b/_modules/hezar/models/backbone/roberta/roberta.html new file mode 100644 index 00000000..380dde14 --- /dev/null +++ b/_modules/hezar/models/backbone/roberta/roberta.html @@ -0,0 +1,587 @@ + + + + + + + + hezar.models.backbone.roberta.roberta - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.backbone.roberta.roberta

    +"""
    +RoBERTa base language model (HuggingFace Transformers) wrapped by a Hezar Model class
    +"""
    +from __future__ import annotations
    +
    +from typing import List
    +
    +from ....constants import Backends
    +from ....models import Model
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from .roberta_config import RoBERTaConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import RobertaConfig, RobertaModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model("roberta", config_class=RoBERTaConfig) +class RoBERTa(Model): + required_backends = _required_backends + tokenizer_name = "bpe_tokenizer" + skip_keys_on_load = ["model.embeddings.position_ids", "roberta.embeddings.position_ids"] # For older versions + + def __init__(self, config, **kwargs): + super().__init__(config=config, **kwargs) + self.roberta = RobertaModel(RobertaConfig(**self.config)) + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + encoder_hidden_states=None, + encoder_attention_mask=None, + past_key_values=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ): + outputs = self.roberta( + input_ids=token_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_attention_mask, + past_key_values=past_key_values, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer(inputs, return_tensors="pt", device=self.device) + return inputs
    + + +
    +[docs] + def post_process(self, model_outputs, **kwargs): + hidden_states = model_outputs.get("hidden_states", None) + attentions = model_outputs.get("attentions", None) + outputs = { + "last_hidden_state": model_outputs.get("last_hidden_state"), + "hidden_states": hidden_states, + "attentions": attentions, + } + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/backbone/roberta/roberta_config.html b/_modules/hezar/models/backbone/roberta/roberta_config.html new file mode 100644 index 00000000..ca807491 --- /dev/null +++ b/_modules/hezar/models/backbone/roberta/roberta_config.html @@ -0,0 +1,522 @@ + + + + + + + + hezar.models.backbone.roberta.roberta_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.backbone.roberta.roberta_config

    +from dataclasses import dataclass
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class RoBERTaConfig(ModelConfig): + name = "roberta" + task: str = TaskType.LANGUAGE_MODELING + attention_probs_dropout_prob: float = 0.1 + bos_token_id: int = 0 + eos_token_id: int = 2 + gradient_checkpointing: bool = False + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + hidden_size: int = 768 + initializer_range: int = 0.02 + intermediate_size: int = 3072 + layer_norm_eps: float = 1e-12 + max_position_embeddings: int = 514 + num_attention_heads: int = 12 + num_hidden_layers: int = 12 + pad_token_id: int = 1 + position_embedding_type: str = "absolute" + type_vocab_size: int = 1 + use_cache: bool = True + vocab_size: int = 42000
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/backbone/vit/vit.html b/_modules/hezar/models/backbone/vit/vit.html new file mode 100644 index 00000000..89cfced2 --- /dev/null +++ b/_modules/hezar/models/backbone/vit/vit.html @@ -0,0 +1,570 @@ + + + + + + + + hezar.models.backbone.vit.vit - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.backbone.vit.vit

    +from __future__ import annotations
    +
    +from typing import Dict, List
    +
    +import numpy as np
    +import torch
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from .vit_config import ViTConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import ViTConfig as ViTConfig_
    +    from transformers import ViTModel
    +
    +if is_backend_available(Backends.PILLOW):
    +    from PIL import Image
    +
    +_required_backends = [Backends.TRANSFORMERS, Backends.TOKENIZERS, Backends.PILLOW]
    +
    +
    +
    +[docs] +@register_model("vit", config_class=ViTConfig) +class ViT(Model): + required_backends = _required_backends + image_processor = "image_processor" + loss_fn_name = "cross_entropy" + + def __init__(self, config: ViTConfig, **kwargs): + super().__init__(config=config, **kwargs) + self.vit = ViTModel(ViTConfig_(**self.config)) + +
    +[docs] + def forward( + self, + pixel_values=None, + bool_masked_pos=None, + head_mask=None, + output_attentions=None, + output_hidden_states=None, + interpolate_pos_encoding=None, + ): + outputs = self.vit( + pixel_values=pixel_values, + bool_masked_pos=bool_masked_pos, + head_mask=head_mask, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + interpolate_pos_encoding=interpolate_pos_encoding, + ) + + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: List[str] | List[np.ndarray] | List["Image"] | List[torch.Tensor], **kwargs): + image_processor = self.preprocessor[self.image_processor] + processed_outputs = image_processor(inputs, **kwargs) + return processed_outputs
    + + +
    +[docs] + def post_process(self, model_outputs: Dict[str, torch.Tensor]): + outputs = { + "last_hidden_state": model_outputs.get("last_hidden_state", None), + "pooler_output": model_outputs.get("pooler_output", None), + "hidden_states": model_outputs.get("hidden_states", None), + "attentions": model_outputs.get("attentions", None), + } + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/backbone/vit/vit_config.html b/_modules/hezar/models/backbone/vit/vit_config.html new file mode 100644 index 00000000..4a7b6a3b --- /dev/null +++ b/_modules/hezar/models/backbone/vit/vit_config.html @@ -0,0 +1,516 @@ + + + + + + + + hezar.models.backbone.vit.vit_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.backbone.vit.vit_config

    +from dataclasses import dataclass
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class ViTConfig(ModelConfig): + name = "vit" + hidden_size: int = 768 + num_hidden_layers: int = 12 + num_attention_heads: int = 12 + intermediate_size: int = 3072 + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.0 + attention_probs_dropout_prob: float = 0.0 + initializer_range: float = 0.02 + layer_norm_eps: float = 1e-12 + image_size: int = 224 + patch_size: int = 16 + num_channels: int = 3 + qkv_bias: bool = True + encoder_stride: int = 16
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/beit_roberta/beit_roberta_image2text.html b/_modules/hezar/models/image2text/beit_roberta/beit_roberta_image2text.html new file mode 100644 index 00000000..4fd61e79 --- /dev/null +++ b/_modules/hezar/models/image2text/beit_roberta/beit_roberta_image2text.html @@ -0,0 +1,608 @@ + + + + + + + + hezar.models.image2text.beit_roberta.beit_roberta_image2text - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.beit_roberta.beit_roberta_image2text

    +from __future__ import annotations
    +
    +from typing import List
    +
    +import numpy as np
    +import torch
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import Image2TextOutput
    +from .beit_roberta_image2text_config import BeitRobertaImage2TextConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import (
    +        BeitConfig,
    +        BeitModel,
    +        GenerationConfig,
    +        RobertaConfig,
    +        RobertaForCausalLM,
    +        VisionEncoderDecoderModel,
    +    )
    +
    +if is_backend_available(Backends.PILLOW):
    +    from PIL import Image
    +
    +_required_backends = [Backends.TRANSFORMERS, Backends.TOKENIZERS, Backends.PILLOW]
    +
    +
    +
    +[docs] +@register_model("beit_roberta_image2text", config_class=BeitRobertaImage2TextConfig) +class BeitRobertaImage2Text(Model): + """ + BEiT + RoBERTa for image to text + """ + + is_generative = True + required_backends = _required_backends + image_processor = "image_processor" + tokenizer_name = "bpe_tokenizer" + loss_fn_name = "cross_entropy" + + def __init__(self, config: BeitRobertaImage2TextConfig, **kwargs): + super().__init__(config, **kwargs) + encoder = BeitModel(config=BeitConfig(**self.config.encoder)) + decoder = RobertaForCausalLM(config=RobertaConfig(**self.config.decoder)) + self.beit_roberta = VisionEncoderDecoderModel(encoder=encoder, decoder=decoder) + +
    +[docs] + def forward( + self, + pixel_values, + decoder_input_ids=None, + decoder_attention_mask=None, + encoder_outputs=None, + past_key_values=None, + decoder_inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ): + outputs = self.beit_roberta( + pixel_values=pixel_values, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + encoder_outputs=encoder_outputs, + past_key_values=past_key_values, + decoder_inputs_embeds=decoder_inputs_embeds, + labels=None, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + loss = self.criterion(logits.reshape(-1, self.beit_roberta.decoder.config.vocab_size), labels.reshape(-1)) + return loss
    + + +
    +[docs] + def generate(self, pixel_values, generation_config=None, **kwargs): + if generation_config is None: + generation_config = self.config.dict()["generation"] + generation_config = GenerationConfig(**generation_config) + outputs = self.beit_roberta.generate(inputs=pixel_values, generation_config=generation_config, **kwargs) + + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: List[str] | List[np.ndarray] | List["Image"] | List[torch.Tensor], **kwargs): + image_processor = self.preprocessor[self.image_processor] + processed_outputs = image_processor(inputs, **kwargs) + return processed_outputs
    + + +
    +[docs] + def post_process(self, model_outputs, **kwargs): + tokenizer = self.preprocessor[self.tokenizer_name] + decoded_outputs = tokenizer.decode(model_outputs.cpu().numpy().tolist()) + outputs = [Image2TextOutput(text=text) for text in decoded_outputs] + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/beit_roberta/beit_roberta_image2text_config.html b/_modules/hezar/models/image2text/beit_roberta/beit_roberta_image2text_config.html new file mode 100644 index 00000000..07cfa707 --- /dev/null +++ b/_modules/hezar/models/image2text/beit_roberta/beit_roberta_image2text_config.html @@ -0,0 +1,586 @@ + + + + + + + + hezar.models.image2text.beit_roberta.beit_roberta_image2text_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.beit_roberta.beit_roberta_image2text_config

    +from dataclasses import dataclass, field
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class DecoderConfig(ModelConfig): + name = "beit_roberta_decoder" + is_decoder: bool = True + add_cross_attention: bool = True + attention_probs_dropout_prob: float = 0.1 + bos_token_id: int = 0 + eos_token_id: int = 2 + classifier_dropout: float = None + gradient_checkpointing: bool = False + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + hidden_size: int = 768 + initializer_range: int = 0.02 + intermediate_size: int = 3072 + layer_norm_eps: float = 1e-12 + max_position_embeddings: int = 514 + num_attention_heads: int = 12 + num_hidden_layers: int = 12 + pad_token_id: int = 1 + position_embedding_type: str = "absolute" + type_vocab_size: int = 1 + use_cache: bool = True + vocab_size: int = 42000
    + + + +
    +[docs] +@dataclass +class EncoderConfig(ModelConfig): + name = "beit_roberta_encoder" + vocab_size = 8192 + hidden_size = 768 + num_hidden_layers = 12 + num_attention_heads = 12 + intermediate_size = 3072 + hidden_act = "gelu" + hidden_dropout_prob = 0.0 + attention_probs_dropout_prob = 0.0 + initializer_range = 0.02 + layer_norm_eps = 1e-12 + image_size = 224 + patch_size = 16 + num_channels = 3 + use_mask_token = False + use_absolute_position_embeddings = False + use_relative_position_bias = False + use_shared_relative_position_bias = False + layer_scale_init_value = 0.1 + drop_path_rate = 0.1 + use_mean_pooling = True + out_indices = [3, 5, 7, 11] + pool_scales = [1, 2, 3, 6] + use_auxiliary_head = True + auxiliary_loss_weight = 0.4 + auxiliary_channels = 256 + auxiliary_num_convs = 1 + auxiliary_concat_input = False + semantic_loss_ignore_index = 255
    + + + +
    +[docs] +@dataclass +class GenerationConfig: + bos_token_id: int = 0 + decoder_start_token_id: int = 0 + early_stopping: bool = True + eos_token_id: int = 2 + length_penalty: float = 2.0 + max_length: int = 64 + no_repeat_ngram_size: int = 3 + num_beams: int = 4 + pad_token_id: int = 1
    + + + +
    +[docs] +@dataclass +class BeitRobertaImage2TextConfig(ModelConfig): + name = "beit_roberta_image2text" + encoder: EncoderConfig = field(default_factory=EncoderConfig) + decoder: DecoderConfig = field(default_factory=DecoderConfig) + generation: GenerationConfig = field(default_factory=GenerationConfig)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/crnn/crnn_decode_utils.html b/_modules/hezar/models/image2text/crnn/crnn_decode_utils.html new file mode 100644 index 00000000..0bfcd3c1 --- /dev/null +++ b/_modules/hezar/models/image2text/crnn/crnn_decode_utils.html @@ -0,0 +1,534 @@ + + + + + + + + hezar.models.image2text.crnn.crnn_decode_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.crnn.crnn_decode_utils

    +import numpy as np
    +import torch
    +
    +
    +def _reconstruct(labels, blank=0):
    +    new_labels = []
    +    # merge same labels
    +    previous = None
    +    for label in labels:
    +        if label != previous:
    +            new_labels.append(label)
    +            previous = label
    +    # delete blank
    +    new_labels = [label for label in new_labels if label != blank]
    +
    +    return new_labels
    +
    +
    +
    +[docs] +def greedy_decode(emission_log_prob, blank=0): + labels = np.argmax(emission_log_prob, axis=-1) + labels = _reconstruct(labels, blank=blank) + return labels
    + + + +
    +[docs] +def ctc_decode(log_probs, id2label=None, blank=0): + emission_log_probs = np.transpose(log_probs.cpu().detach().numpy(), (1, 0, 2)) + batch_size, max_length, _ = emission_log_probs.shape + + # size of emission_log_probs: (batch, length, class) + decoded_ids = [] + for emission_log_prob in emission_log_probs: + ids = greedy_decode(emission_log_prob, blank=blank) + if id2label: + ids = [id2label[label] for label in ids] + ids.extend([blank] * (max_length - len(ids))) + decoded_ids.append(ids) + return torch.tensor(decoded_ids)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/crnn/crnn_image2text.html b/_modules/hezar/models/image2text/crnn/crnn_image2text.html new file mode 100644 index 00000000..353ad717 --- /dev/null +++ b/_modules/hezar/models/image2text/crnn/crnn_image2text.html @@ -0,0 +1,633 @@ + + + + + + + + hezar.models.image2text.crnn.crnn_image2text - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.crnn.crnn_image2text

    +import torch
    +from torch import nn
    +
    +from ....registry import register_model
    +from ....utils import reverse_string_digits
    +from ...model import Model
    +from ...model_outputs import Image2TextOutput
    +from .crnn_decode_utils import ctc_decode
    +from .crnn_image2text_config import CRNNImage2TextConfig
    +
    +
    +
    +[docs] +@register_model("crnn_image2text", config_class=CRNNImage2TextConfig) +class CRNNImage2Text(Model): + """ + A robust CRNN model for character level OCR based on the original paper. + """ + + is_generative = True + image_processor = "image_processor" + loss_fn_name = "ctc" + loss_fn_kwargs = {"zero_infinity": True} + + def __init__(self, config: CRNNImage2TextConfig, **kwargs): + super().__init__(config=config, **kwargs) + self.cnn = nn.Sequential( + ConvBlock(self.config.n_channels, 64, 3, 1, 1), + nn.MaxPool2d(kernel_size=2, stride=2), + ConvBlock(64, 128, 3, 1, 1), + nn.MaxPool2d(kernel_size=2, stride=2), + ConvBlock(128, 256, 3, 1, 1), + ConvBlock(256, 256, 3, 1, 1), + nn.MaxPool2d(kernel_size=(2, 1)), + ConvBlock(256, 512, 3, 1, 1, batch_norm=True), + ConvBlock(512, 512, 3, 1, 1, batch_norm=True), + nn.MaxPool2d(kernel_size=(2, 1)), + ConvBlock(512, 512, 3, 1, 1), + ) + # map CNN to sequence + self.map2seq = nn.Linear(self.config.map2seq_in_dim, self.config.map2seq_out_dim) + # RNN + self.rnn1 = nn.LSTM(self.config.map2seq_out_dim, self.config.rnn_dim, bidirectional=True) + self.rnn2 = nn.LSTM(2 * self.config.rnn_dim, self.config.rnn_dim, bidirectional=True) + # classifier + self.classifier = nn.Linear(2 * self.config.rnn_dim, len(self.config.id2label)) + +
    +[docs] + def forward(self, pixel_values, **kwargs): + # CNN block + x = self.cnn(pixel_values) + # reformat array + batch, channel, height, width = x.size() + x = x.view(batch, channel * height, width) + x = x.permute(2, 0, 1) + x = self.map2seq(x) + x, _ = self.rnn1(x) + x, _ = self.rnn2(x) + x = self.classifier(x) + x = nn.functional.log_softmax(x, 2) + outputs = {"logits": x} + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor): + batch_size = logits.size(1) + labels_lengths = torch.count_nonzero(labels, dim=1).flatten() + labels = labels[labels != self.config.blank_id] + input_lengths = torch.LongTensor([logits.size(0)] * batch_size) + + loss = self.criterion(logits, labels, input_lengths, labels_lengths) + + return loss
    + + +
    +[docs] + def generate(self, pixel_values): + logits = self(pixel_values)["logits"] + output_ids = ctc_decode(logits, blank=self.config.blank_id) + probs, values = logits.permute(1, 0, 2).softmax(2).max(2) + mean_probs = probs.mean(1) + return {"generated_ids": output_ids, "scores": mean_probs}
    + + +
    +[docs] + def preprocess(self, inputs, **kwargs): + image_processor = self.preprocessor[self.image_processor] + processed_outputs = image_processor(inputs, **kwargs) + return processed_outputs
    + + +
    +[docs] + def post_process(self, generation_outputs, return_scores=False): + if isinstance(generation_outputs, torch.Tensor): + generated_ids = generation_outputs + scores = torch.tensor(torch.zeros(generated_ids.shape)) + else: + generated_ids, scores = generation_outputs.values() + + outputs = [] + generated_ids = generated_ids.cpu().numpy().tolist() + scores = scores.cpu().numpy().tolist() + for decoded_ids, score in zip(generated_ids, scores): + chars = [self.config.id2label[id_] for id_ in decoded_ids] + text = "".join(chars) + if self.config.reverse_output_digits: + text = reverse_string_digits(text) + if return_scores: + outputs.append(Image2TextOutput(text=text, score=score)) + else: + outputs.append(Image2TextOutput(text=text)) + return outputs
    +
    + + + +
    +[docs] +class ConvBlock(nn.Module): + def __init__(self, input_channel, output_channel, kernel_sizes, strides, paddings, batch_norm: bool = False): + super(ConvBlock, self).__init__() + self.do_batch_norm = batch_norm + self.conv = nn.Conv2d(input_channel, output_channel, kernel_sizes, strides, paddings) + self.bn = nn.BatchNorm2d(output_channel) + self.relu = nn.ReLU(inplace=True) + +
    +[docs] + def forward(self, x): + x = self.conv(x) + if self.do_batch_norm: + x = self.bn(x) + x = self.relu(x) + return x
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/crnn/crnn_image2text_config.html b/_modules/hezar/models/image2text/crnn/crnn_image2text_config.html new file mode 100644 index 00000000..b6ccbdc1 --- /dev/null +++ b/_modules/hezar/models/image2text/crnn/crnn_image2text_config.html @@ -0,0 +1,513 @@ + + + + + + + + hezar.models.image2text.crnn.crnn_image2text_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.crnn.crnn_image2text_config

    +from dataclasses import dataclass
    +from typing import Dict
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class CRNNImage2TextConfig(ModelConfig): + name = "crnn_image2text" + id2label: Dict[int, str] = None + blank_id: int = 0 + n_channels: int = 1 + image_height: int = 32 + image_width: int = 128 + map2seq_in_dim: int = 2048 + map2seq_out_dim: int = 64 + rnn_dim: int = 256 + reverse_prediction_text: bool = None + reverse_output_digits: bool = None
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/trocr/trocr_image2text.html b/_modules/hezar/models/image2text/trocr/trocr_image2text.html new file mode 100644 index 00000000..1f0bcbf1 --- /dev/null +++ b/_modules/hezar/models/image2text/trocr/trocr_image2text.html @@ -0,0 +1,608 @@ + + + + + + + + hezar.models.image2text.trocr.trocr_image2text - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.trocr.trocr_image2text

    +from __future__ import annotations
    +
    +from typing import List
    +
    +import numpy as np
    +import torch
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import Image2TextOutput
    +from .trocr_image2text_config import TrOCRImage2TextConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import (
    +        GenerationConfig,
    +        RobertaConfig,
    +        RobertaForCausalLM,
    +        VisionEncoderDecoderModel,
    +        ViTConfig,
    +        ViTModel,
    +    )
    +
    +if is_backend_available(Backends.PILLOW):
    +    from PIL import Image
    +
    +_required_backends = [Backends.TRANSFORMERS, Backends.TOKENIZERS, Backends.PILLOW]
    +
    +
    +
    +[docs] +@register_model("trocr_image2text", config_class=TrOCRImage2TextConfig) +class TrOCRImage2Text(Model): + """ + TrOCR for optical character recognition + """ + + is_generative = True + required_backends = _required_backends + image_processor = "image_processor" + tokenizer_name = "bpe_tokenizer" + loss_fn_name = "cross_entropy" + + def __init__(self, config: TrOCRImage2TextConfig, **kwargs): + super().__init__(config, **kwargs) + encoder = ViTModel(config=ViTConfig(**self.config.encoder)) + decoder = RobertaForCausalLM(config=RobertaConfig(**self.config.decoder)) + self.trocr = VisionEncoderDecoderModel(encoder=encoder, decoder=decoder) + +
    +[docs] + def forward( + self, + pixel_values, + decoder_input_ids=None, + decoder_attention_mask=None, + encoder_outputs=None, + past_key_values=None, + decoder_inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ): + outputs = self.trocr( + pixel_values=pixel_values, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + encoder_outputs=encoder_outputs, + past_key_values=past_key_values, + decoder_inputs_embeds=decoder_inputs_embeds, + labels=None, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + loss = self.criterion(logits.reshape(-1, self.trocr.decoder.config.vocab_size), labels.reshape(-1)) + return loss
    + + +
    +[docs] + def generate(self, pixel_values, generation_config=None, **kwargs): + if generation_config is None: + generation_config = self.config.dict()["generation"] + generation_config = GenerationConfig(**generation_config) + outputs = self.trocr.generate(inputs=pixel_values, generation_config=generation_config, **kwargs) + + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: List[str] | List[np.ndarray] | List["Image"] | List[torch.Tensor], **kwargs): + image_processor = self.preprocessor[self.image_processor] + processed_outputs = image_processor(inputs, **kwargs) + return processed_outputs
    + + +
    +[docs] + def post_process(self, model_outputs, **kwargs): + tokenizer = self.preprocessor[self.tokenizer_name] + decoded_outputs = tokenizer.decode(model_outputs.cpu().numpy().tolist()) + outputs = [Image2TextOutput(text=text) for text in decoded_outputs] + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/trocr/trocr_image2text_config.html b/_modules/hezar/models/image2text/trocr/trocr_image2text_config.html new file mode 100644 index 00000000..5ddf78cc --- /dev/null +++ b/_modules/hezar/models/image2text/trocr/trocr_image2text_config.html @@ -0,0 +1,570 @@ + + + + + + + + hezar.models.image2text.trocr.trocr_image2text_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.trocr.trocr_image2text_config

    +from dataclasses import dataclass, field
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class DecoderConfig(ModelConfig): + is_decoder: bool = True + add_cross_attention: bool = True + attention_probs_dropout_prob: float = 0.1 + bos_token_id: int = 0 + eos_token_id: int = 2 + classifier_dropout: float = None + gradient_checkpointing: bool = False + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + hidden_size: int = 768 + initializer_range: int = 0.02 + intermediate_size: int = 3072 + layer_norm_eps: float = 1e-12 + max_position_embeddings: int = 514 + num_attention_heads: int = 12 + num_hidden_layers: int = 12 + pad_token_id: int = 1 + position_embedding_type: str = "absolute" + type_vocab_size: int = 1 + use_cache: bool = True + vocab_size: int = 42000
    + + + +
    +[docs] +@dataclass +class EncoderConfig(ModelConfig): + hidden_size: int = 768 + num_hidden_layers: int = 12 + num_attention_heads: int = 12 + intermediate_size: int = 3072 + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.0 + attention_probs_dropout_prob: float = 0.0 + initializer_range: float = 0.02 + layer_norm_eps: float = 1e-12 + image_size: int = 224 + patch_size: int = 16 + num_channels: int = 3 + qkv_bias: bool = True + encoder_stride: int = 16
    + + + +
    +[docs] +@dataclass +class GenerationConfig: + bos_token_id: int = 0 + decoder_start_token_id: int = 0 + early_stopping: bool = True + eos_token_id: int = 2 + length_penalty: float = 2.0 + max_length: int = 64 + no_repeat_ngram_size: int = 3 + num_beams: int = 4 + pad_token_id: int = 1
    + + + +
    +[docs] +@dataclass +class TrOCRImage2TextConfig(ModelConfig): + name = "trocr_image2text" + encoder: EncoderConfig = field(default_factory=EncoderConfig) + decoder: DecoderConfig = field(default_factory=DecoderConfig) + generation: GenerationConfig = field(default_factory=GenerationConfig)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/vit_gpt2/vit_gpt2_image2text.html b/_modules/hezar/models/image2text/vit_gpt2/vit_gpt2_image2text.html new file mode 100644 index 00000000..ebc1e059 --- /dev/null +++ b/_modules/hezar/models/image2text/vit_gpt2/vit_gpt2_image2text.html @@ -0,0 +1,608 @@ + + + + + + + + hezar.models.image2text.vit_gpt2.vit_gpt2_image2text - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.vit_gpt2.vit_gpt2_image2text

    +from __future__ import annotations
    +
    +from typing import List
    +
    +import numpy as np
    +import torch
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import Image2TextOutput
    +from .vit_gpt2_image2text_config import ViTGPT2Image2TextConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import (
    +        GenerationConfig,
    +        GPT2Config,
    +        GPT2LMHeadModel,
    +        VisionEncoderDecoderModel,
    +        ViTConfig,
    +        ViTModel,
    +    )
    +
    +if is_backend_available(Backends.PILLOW):
    +    from PIL import Image
    +
    +_required_backends = [Backends.TRANSFORMERS, Backends.TOKENIZERS, Backends.PILLOW]
    +
    +
    +
    +[docs] +@register_model("vit_gpt2_image2text", config_class=ViTGPT2Image2TextConfig) +class ViTGPT2Image2Text(Model): + """ + ViT + GPT2 for image to text generation (image captioning) + """ + + is_generative = True + required_backends = _required_backends + image_processor = "image_processor" + tokenizer_name = "bpe_tokenizer" + loss_fn_name = "cross_entropy" + + def __init__(self, config: ViTGPT2Image2TextConfig, **kwargs): + super().__init__(config, **kwargs) + encoder = ViTModel(config=ViTConfig(**self.config.encoder)) + decoder = GPT2LMHeadModel(config=GPT2Config(**self.config.decoder)) + self.vit_gpt2 = VisionEncoderDecoderModel(encoder=encoder, decoder=decoder) + +
    +[docs] + def forward( + self, + pixel_values, + decoder_input_ids=None, + decoder_attention_mask=None, + encoder_outputs=None, + past_key_values=None, + decoder_inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ): + outputs = self.vit_gpt2( + pixel_values=pixel_values, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + encoder_outputs=encoder_outputs, + past_key_values=past_key_values, + decoder_inputs_embeds=decoder_inputs_embeds, + labels=None, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + loss = self.criterion(logits.reshape(-1, self.vit_gpt2.decoder.config.vocab_size), labels.reshape(-1)) + return loss
    + + +
    +[docs] + def generate(self, pixel_values, generation_config=None, **kwargs): + if generation_config is None: + generation_config = self.config.dict()["generation"] + generation_config = GenerationConfig(**generation_config) + outputs = self.vit_gpt2.generate(inputs=pixel_values, generation_config=generation_config, **kwargs) + + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: List[str] | List[np.ndarray] | List["Image"] | List[torch.Tensor], **kwargs): + image_processor = self.preprocessor[self.image_processor] + processed_outputs = image_processor(inputs, **kwargs) + return processed_outputs
    + + +
    +[docs] + def post_process(self, model_outputs, **kwargs): + tokenizer = self.preprocessor[self.tokenizer_name] + decoded_outputs = tokenizer.decode(model_outputs.cpu().numpy().tolist()) + outputs = [Image2TextOutput(text=text) for text in decoded_outputs] + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/vit_gpt2/vit_gpt2_image2text_config.html b/_modules/hezar/models/image2text/vit_gpt2/vit_gpt2_image2text_config.html new file mode 100644 index 00000000..a3ff553d --- /dev/null +++ b/_modules/hezar/models/image2text/vit_gpt2/vit_gpt2_image2text_config.html @@ -0,0 +1,571 @@ + + + + + + + + hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config

    +from dataclasses import dataclass, field
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class DecoderConfig(ModelConfig): + name = "vit_gpt2_decoder" + add_cross_attention: bool = True + vocab_size: int = 42001 + attn_pdrop: float = 0.1 + bos_token_id: int = 5 + embd_pdrop: float = 0.1 + eos_token_id: int = 5 + gradient_checkpointing: bool = False + initializer_range: float = 0.02 + layer_norm_epsilon: float = 1e-05 + model_type: str = "gpt2" + n_ctx: int = 1024 + n_embd: int = 768 + n_head: int = 12 + n_inner: int = None + n_layer: int = 12 + n_positions: int = 1024 + resid_pdrop: float = 0.1 + summary_activation: bool = False + summary_first_dropout: float = 0.1 + use_cache: bool = True
    + + + +
    +[docs] +@dataclass +class EncoderConfig(ModelConfig): + name = "vit_gpt2_encoder" + hidden_size: int = 768 + num_hidden_layers: int = 12 + num_attention_heads: int = 12 + intermediate_size: int = 3072 + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.0 + attention_probs_dropout_prob: float = 0.0 + initializer_range: float = 0.02 + layer_norm_eps: float = 1e-12 + image_size: int = 224 + patch_size: int = 16 + num_channels: int = 3 + qkv_bias: bool = True + encoder_stride: int = 16
    + + + +
    +[docs] +@dataclass +class GenerationConfig(ModelConfig): + bos_token_id: int = 0 + decoder_start_token_id: int = 0 + early_stopping: bool = True + eos_token_id: int = 2 + length_penalty: float = 2.0 + max_new_tokens: int = 24 + no_repeat_ngram_size: int = 3 + num_beams: int = 4 + pad_token_id: int = 1
    + + + +
    +[docs] +@dataclass +class ViTGPT2Image2TextConfig(ModelConfig): + name = "vit_gpt2_image2text" + encoder: EncoderConfig = field(default_factory=EncoderConfig) + decoder: DecoderConfig = field(default_factory=DecoderConfig) + generation: GenerationConfig = field(default_factory=GenerationConfig)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/vit_roberta/vit_roberta_image2text.html b/_modules/hezar/models/image2text/vit_roberta/vit_roberta_image2text.html new file mode 100644 index 00000000..51dc0574 --- /dev/null +++ b/_modules/hezar/models/image2text/vit_roberta/vit_roberta_image2text.html @@ -0,0 +1,619 @@ + + + + + + + + hezar.models.image2text.vit_roberta.vit_roberta_image2text - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.vit_roberta.vit_roberta_image2text

    +from __future__ import annotations
    +
    +from typing import List
    +
    +import numpy as np
    +import torch
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import Image2TextOutput
    +from .vit_roberta_image2text_config import ViTRobertaImage2TextConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import (
    +        GenerationConfig,
    +        RobertaConfig,
    +        RobertaForCausalLM,
    +        VisionEncoderDecoderModel,
    +        ViTConfig,
    +        ViTModel,
    +    )
    +
    +if is_backend_available(Backends.PILLOW):
    +    from PIL import Image
    +
    +_required_backends = [Backends.TRANSFORMERS, Backends.TOKENIZERS, Backends.PILLOW]
    +
    +
    +
    +[docs] +@register_model("vit_roberta_image2text", config_class=ViTRobertaImage2TextConfig) +class ViTRobertaImage2Text(Model): + """ + ViT + RoBERTa for image to text + """ + + is_generative = True + required_backends = _required_backends + image_processor = "image_processor" + tokenizer_name = "bpe_tokenizer" + loss_fn_name = "cross_entropy" + + def __init__(self, config: ViTRobertaImage2TextConfig, **kwargs): + super().__init__(config, **kwargs) + encoder = ViTModel(config=ViTConfig(**self.config.encoder)) + decoder = RobertaForCausalLM(config=RobertaConfig(**self.config.decoder)) + self.vit_roberta = VisionEncoderDecoderModel(encoder=encoder, decoder=decoder) + +
    +[docs] + def forward( + self, + pixel_values, + decoder_input_ids=None, + decoder_attention_mask=None, + encoder_outputs=None, + past_key_values=None, + decoder_inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ): + outputs = self.vit_roberta( + pixel_values=pixel_values, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + encoder_outputs=encoder_outputs, + past_key_values=past_key_values, + decoder_inputs_embeds=decoder_inputs_embeds, + labels=None, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + + return dict(outputs)
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + self.criterion.ignore_index = self.config.decoder["pad_token_id"] + loss = self.criterion(logits.reshape(-1, self.vit_roberta.decoder.config.vocab_size), labels.reshape(-1)) + return loss
    + + +
    +[docs] + def generate(self, pixel_values, generation_config=None, **kwargs): + tokenizer = self.preprocessor["bpe_tokenizer"] + if generation_config is None: + generation_config = self.config.dict()["generation"] + generation_config["decoder_start_token_id"] = tokenizer.pad_token_id + generation_config = GenerationConfig(**generation_config) + outputs = self.vit_roberta.generate(inputs=pixel_values, generation_config=generation_config, **kwargs) + + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: List[str] | List[np.ndarray] | List["Image"] | List[torch.Tensor], **kwargs): + image_processor = self.preprocessor[self.image_processor] + processed_outputs = image_processor(inputs, **kwargs) + return processed_outputs
    + + +
    +[docs] + def post_process(self, model_outputs: torch.Tensor, **kwargs): + tokenizer = self.preprocessor[self.tokenizer_name] + decoded_outputs = tokenizer.decode(model_outputs.cpu().numpy().tolist()) + outputs = [Image2TextOutput(text=text) for text in decoded_outputs] + return outputs
    + + + @property + def encoder(self): + return self.vit_roberta.encoder + + @property + def decoder(self): + return self.vit_roberta.decoder
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/image2text/vit_roberta/vit_roberta_image2text_config.html b/_modules/hezar/models/image2text/vit_roberta/vit_roberta_image2text_config.html new file mode 100644 index 00000000..898af8cb --- /dev/null +++ b/_modules/hezar/models/image2text/vit_roberta/vit_roberta_image2text_config.html @@ -0,0 +1,571 @@ + + + + + + + + hezar.models.image2text.vit_roberta.vit_roberta_image2text_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.image2text.vit_roberta.vit_roberta_image2text_config

    +from dataclasses import dataclass, field
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class DecoderConfig(ModelConfig): + is_decoder: bool = True + add_cross_attention: bool = True + attention_probs_dropout_prob: float = 0.1 + bos_token_id: int = 0 + eos_token_id: int = 2 + classifier_dropout: float = None + gradient_checkpointing: bool = False + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + hidden_size: int = 768 + initializer_range: int = 0.02 + intermediate_size: int = 3072 + layer_norm_eps: float = 1e-12 + max_position_embeddings: int = 514 + num_attention_heads: int = 12 + num_hidden_layers: int = 12 + pad_token_id: int = 2 + position_embedding_type: str = "absolute" + type_vocab_size: int = 1 + use_cache: bool = True + vocab_size: int = 42000
    + + + +
    +[docs] +@dataclass +class EncoderConfig(ModelConfig): + hidden_size: int = 768 + num_hidden_layers: int = 12 + num_attention_heads: int = 12 + intermediate_size: int = 3072 + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.0 + attention_probs_dropout_prob: float = 0.0 + initializer_range: float = 0.02 + layer_norm_eps: float = 1e-12 + image_size: int = 224 + patch_size: int = 16 + num_channels: int = 3 + qkv_bias: bool = True + encoder_stride: int = 16
    + + + +
    +[docs] +@dataclass +class GenerationConfig: + bos_token_id: int = 0 + decoder_start_token_id: int = 0 + return_dict_in_generate: bool = False + early_stopping: bool = True + eos_token_id: int = 2 + length_penalty: float = 2.0 + max_length: int = 64 + no_repeat_ngram_size: int = 3 + num_beams: int = 4 + pad_token_id: int = 2
    + + + +
    +[docs] +@dataclass +class ViTRobertaImage2TextConfig(ModelConfig): + name = "vit_roberta_image2text" + encoder: EncoderConfig = field(default_factory=EncoderConfig) + decoder: DecoderConfig = field(default_factory=DecoderConfig) + generation: GenerationConfig = field(default_factory=GenerationConfig)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/model.html b/_modules/hezar/models/model.html new file mode 100644 index 00000000..d0eaffb9 --- /dev/null +++ b/_modules/hezar/models/model.html @@ -0,0 +1,1062 @@ + + + + + + + + hezar.models.model - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.model

    +"""
    +Hezar models inherit the base class `Model`. A `Model` itself is a PyTorch Module to implement neural networks but has
    +some extra Hezar-specific functionalities and methods e.g, pushing to hub, loading from hub, etc.
    +
    +Examples:
    +    >>> # Load from hub
    +    >>> from hezar.models import Model
    +    >>> model = Model.load("hezarai/bert-base-fa")
    +"""
    +from __future__ import annotations
    +
    +import inspect
    +import os
    +import re
    +import tempfile
    +from collections import OrderedDict
    +from typing import Any, Dict, Iterable, List, Mapping, Optional
    +
    +import torch
    +from huggingface_hub import create_repo, hf_hub_download, upload_file
    +from torch import nn
    +
    +from ..builders import build_model
    +from ..configs import ModelConfig
    +from ..constants import (
    +    DEFAULT_MODEL_CONFIG_FILE,
    +    DEFAULT_MODEL_FILE,
    +    HEZAR_CACHE_DIR,
    +    Backends,
    +    LossType,
    +    RegistryType,
    +)
    +from ..preprocessors import Preprocessor, PreprocessorsContainer
    +from ..utils import Logger, get_module_class, verify_dependencies
    +from .model_outputs import ModelOutput
    +
    +
    +logger = Logger(__name__)
    +
    +criterions_mapping = {
    +    LossType.L1: nn.L1Loss,
    +    LossType.NLL: nn.NLLLoss,
    +    LossType.NLL_2D: nn.NLLLoss2d,
    +    LossType.POISSON_NLL: nn.PoissonNLLLoss,
    +    LossType.GAUSSIAN_NLL: nn.GaussianNLLLoss,
    +    LossType.MSE: nn.MSELoss,
    +    LossType.BCE: nn.BCELoss,
    +    LossType.BCE_WITH_LOGITS: nn.BCEWithLogitsLoss,
    +    LossType.CROSS_ENTROPY: nn.CrossEntropyLoss,
    +    LossType.TRIPLE_MARGIN: nn.TripletMarginLoss,
    +    LossType.CTC: nn.CTCLoss
    +}
    +
    +
    +
    +[docs] +class Model(nn.Module): + """ + Base class for all neural network models in Hezar. + + Args: + config: A dataclass model config + """ + + required_backends: List[Backends | str] = [] + # Default file names + model_filename = DEFAULT_MODEL_FILE + config_filename = DEFAULT_MODEL_CONFIG_FILE + + # Specify if the model is a generative model. If True, the model must also implement the `generate` method + is_generative: bool = False + + # Keys to ignore on loading state dicts + skip_keys_on_load = [] + + # Loss function name + loss_fn_name: str | LossType = LossType.CROSS_ENTROPY + loss_fn_kwargs: Dict[str, Any] = {} + + def __init__(self, config: ModelConfig, *args, **kwargs): + verify_dependencies(self, self.required_backends) + super().__init__() + self.config = config.update(kwargs) + self._preprocessor = None + self._criterion = self._set_criterion(self.loss_fn_name, **self.loss_fn_kwargs) + + def __repr__(self): + representation = super().__repr__() + pattern = r"\('?_criterion'?\): [^\)]+\)\s*" + representation = re.sub(pattern, '', representation) + return representation + + @staticmethod + def _set_criterion(loss_fn_name: str, **loss_fn_kwargs: Dict[str, Any]): + if loss_fn_name not in criterions_mapping: + raise ValueError(f"Invalid criterion name `{loss_fn_name}`. Available: {list(criterions_mapping.keys())}") + loss_fn = criterions_mapping[loss_fn_name](**loss_fn_kwargs) + return loss_fn + +
    +[docs] + @classmethod + def load( + cls, + hub_or_local_path: str | os.PathLike, + load_locally: Optional[bool] = False, + load_preprocessor: Optional[bool] = True, + model_filename: Optional[str] = None, + config_filename: Optional[str] = None, + save_path: Optional[str | os.PathLike] = None, + cache_dir: Optional[str | os.PathLike] = None, + **kwargs, + ) -> "Model": + """ + Load the model from local path or hub. + + It's recommended to actually use this method with :class:`hezar.Model` rather than any other model class + unless you actually know that the class is the same as the one on the Hub, because the output will always be + the one specified on the Hub! + + Args: + hub_or_local_path: Path to the model living on the Hub or local disk. + load_locally: Force loading from local path + load_preprocessor: Whether to load the preprocessor(s) or not + model_filename: Optional model filename. + config_filename: Optional config filename + save_path: Save model to this path after loading + cache_dir: Path to cache directory, defaults to `~/.cache/hezar` + + Returns: + The fully loaded Hezar model + """ + # Get device if provided in the kwargs + device = None or kwargs.pop("device", None) + # Load config + config_filename = config_filename or cls.config_filename + cache_dir = cache_dir or HEZAR_CACHE_DIR + config = ModelConfig.load(hub_or_local_path=hub_or_local_path, filename=config_filename, cache_dir=cache_dir) + # Get the exact model class based on registry name under config.name + model_cls = get_module_class(config.name, registry_type=RegistryType.MODEL) + # Handle compatibility of model class and the one in the config + if cls.__name__ == "Model": + # Build model wih config + model = build_model(config.name, config, **kwargs) + else: + if cls.__name__ != model_cls.__name__: + logger.warning( + f"You attempted to load a model using `{cls.__name__}` " + f"but the model in `{hub_or_local_path}` is of type `{model_cls.__name__}`, " + f"so the output model will be of type {model_cls.__name__} anyway!" + ) + model = model_cls(config, **kwargs) + + model_filename = model_filename or model_cls.model_filename or cls.model_filename + # does the path exist locally? + is_local = load_locally or os.path.isdir(hub_or_local_path) + if not is_local: + model_path = hf_hub_download( + hub_or_local_path, + filename=model_filename, + cache_dir=cache_dir, + resume_download=True, + ) + else: + model_path = os.path.join(hub_or_local_path, model_filename) + # Get state dict from the model + state_dict = torch.load(model_path, map_location=torch.device("cpu")) + model.load_state_dict(state_dict) + if device: + model.to(device) + if save_path: + model.save(save_path) + # Load the preprocessor(s) + if load_preprocessor: + preprocessor = Preprocessor.load(hub_or_local_path, force_return_dict=True, cache_dir=cache_dir) + model.preprocessor = preprocessor + return model
    + + +
    +[docs] + def load_state_dict(self, state_dict: Mapping[str, Any], **kwargs): + """ + Flexibly load the state dict to the model. + + Any incompatible or missing key is ignored and other layer weights are + loaded. In that case a warning with additional info is raised. + + Args: + state_dict: Model state dict + """ + if len(self.skip_keys_on_load): + for key in self.skip_keys_on_load: + if key in state_dict: + state_dict.pop(key, None) # noqa + try: + super().load_state_dict(state_dict, strict=True) + except RuntimeError: + compatible_state_dict = OrderedDict() + src_state_dict = self.state_dict() + + incompatible_keys = [] + + for (src_key, src_weight), (trg_key, trg_weight) in zip(src_state_dict.items(), state_dict.items()): + if src_weight.shape == trg_weight.shape: + compatible_state_dict[src_key] = trg_weight + else: + # put the source key and weight if trg weight is incompatible + compatible_state_dict[src_key] = src_weight + incompatible_keys.append(src_key) + + missing_keys, _ = super().load_state_dict(compatible_state_dict, strict=False) + if len(missing_keys) or len(incompatible_keys): + logger.warning( + "Partially loading the weights as the model architecture and the given state dict are " + "incompatible! \nIgnore this warning in case you plan on fine-tuning this model\n" + f"Incompatible keys: {incompatible_keys}\n" + f"Missing keys: {missing_keys}\n" + )
    + + +
    +[docs] + def save( + self, + path: str | os.PathLike, + filename: Optional[str] = None, + save_preprocessor: Optional[bool] = True, + config_filename: Optional[str] = None, + ): + """ + Save model weights and config to a local path + + Args: + path: A local directory to save model, config, etc. + save_preprocessor: Whether to save preprocessor(s) along with the model or not + config_filename: Model config filename, + filename: Model weights filename + + Returns: + Path to the saved model + """ + # save model and config to the repo + config_filename = config_filename or self.config_filename + filename = filename or self.model_filename + os.makedirs(path, exist_ok=True) + + self.config.save(save_dir=path, filename=config_filename) + + model_save_path = os.path.join(path, filename) + torch.save(self.state_dict(), model_save_path) + + if save_preprocessor: + if self.preprocessor is not None: + self.preprocessor.save(path)
    + + +
    +[docs] + def push_to_hub( + self, + repo_id: str, + filename: Optional[str] = None, + config_filename: Optional[str] = None, + push_preprocessor: Optional[bool] = True, + commit_message: Optional[str] = None, + private: Optional[bool] = False, + ): + """ + Push the model and required files to the hub + + Args: + repo_id: The path (id or repo name) on the hub + filename: Model file name + config_filename: Config file name + push_preprocessor: Whether to push preprocessor(s) or not + commit_message (str): Commit message for this push + private (bool): Whether to create a private repo or not + """ + config_filename = config_filename or self.config_filename + filename = filename or self.model_filename + + # create remote repo + create_repo(repo_id, repo_type="model", exist_ok=True, private=private) + + # save to tmp and prepare for push + cache_path = tempfile.mkdtemp() + self.save(cache_path, filename=filename, config_filename=config_filename) + if commit_message is None: + commit_message = "Hezar: Upload model and config" + + # upload config file + self.config.push_to_hub( + repo_id, + filename=config_filename, + repo_type="model", + commit_message=commit_message, + ) + # upload preprocessor(s) + if push_preprocessor: + if self.preprocessor is not None: + self.preprocessor.push_to_hub(repo_id, commit_message=commit_message, private=private) + + # upload model file + weights_path = os.path.join(cache_path, filename) + upload_file( + path_or_fileobj=weights_path, + path_in_repo=filename, + repo_id=repo_id, + commit_message=commit_message, + ) + + logger.log_upload_success( + name=f"{self.__class__.__name__}(name={self.config.name})", + target_path=os.path.join(repo_id, filename), + )
    + + +
    +[docs] + def forward(self, *model_inputs, **kwargs) -> Dict: + """ + Forward inputs through the model and return logits, etc. + + Args: + model_inputs: The required inputs for the model forward + + Returns: + A dict of outputs like logits, loss, etc. + """ + raise NotImplementedError
    + + +
    +[docs] + def compute_loss(self, inputs: torch.Tensor, targets: torch.Tensor) -> torch.Tensor: + """ + Compute loss on the model outputs against the given labels + + Args: + inputs: Input tensor to compute loss on + targets: Target tensor + + Returns: + Loss tensor + """ + raise NotImplementedError
    + + +
    +[docs] + def generate(self, *model_inputs, **kwargs) -> torch.Tensor: + """ + Generation method for all generative models. Generative models have the `is_generative` attribute set to True. + The behavior of this method is usually controlled by `generation` part of the model's config. + + Args: + model_inputs: Model inputs for generation, usually the same as forward's `model_inputs` + **kwargs: Generation kwargs + + Returns: + Generated output tensor + """ + raise NotImplementedError
    + + +
    +[docs] + def preprocess(self, *raw_inputs: Any | List[Any], **kwargs): + """ + Given raw inputs, preprocess the inputs and prepare them for model's `forward()`. + + Args: + raw_inputs: Raw model inputs + **kwargs: Extra kwargs specific to the model. See the model's specific class for more info + + Returns: + A dict of inputs for model forward + """ + return raw_inputs
    + + +
    +[docs] + def post_process(self, *model_outputs: Dict[str, torch.Tensor] | torch.Tensor, **kwargs): + """ + Process model outputs and return human-readable results. Called in `self.predict()` + + Args: + model_outputs: model outputs to process + **kwargs: extra arguments specific to the derived class + + Returns: + Processed model output values and converted to human-readable results + """ + return model_outputs
    + + +
    +[docs] + @torch.inference_mode() + def predict( + self, + inputs: Any | List[Any], + device: str | torch.device = None, + unpack_forward_inputs: bool = True, + **kwargs, + ) -> Dict | List[Dict] | torch.Tensor | Iterable | ModelOutput: + """ + Perform an end-to-end prediction on raw inputs. + + If the model is a generative model, it has to implement the `generate()` method too which will be called + instead of `forward()`. (`forward()` method is called internally within the `generate()` method) + + Args: + inputs: Raw inputs e.g, a list of texts, path to images, etc. + device: What device to perform inference on + unpack_forward_inputs: Whether to unpack forward inputs. Set to False if you want to send preprocess outputs + directly to the forward/generate method without unpacking it. Note that this only applies to the cases that + the preprocess method's output is a dict-like/mapping object. + **kwargs: Other arguments for `preprocess`, `forward`, `generate` and `post_process`. each will be passed to + the correct method automatically. + + Returns: + Output dict of results + """ + # Unpack kwargs for each step + preprocess_kwargs, forward_kwargs, post_process_kwargs = self._unpack_prediction_kwargs(**kwargs) + invalid_kwargs = { + k: v for k, v in kwargs.items() if k not in {**preprocess_kwargs, **forward_kwargs, **post_process_kwargs} + } + if len(invalid_kwargs): + logger.warning( + f"Unrecognized arguments {list(invalid_kwargs.keys())} passed to `predict` method for " + f"`{self.__class__.__name__}`" + ) + + # Put model in eval mode + self.eval() + + # Preprocessing step + model_inputs = self.preprocess(inputs, **preprocess_kwargs) + + # Map inputs and model to device + device = device or self.device + model_inputs = self._move_inputs_to_device(model_inputs, device) + self.to(device) + + # Specify model inference function + inference_fn = self.generate if self.is_generative else self.__call__ + + # Model inference step (forward for regular models and generate for generative models) + if isinstance(model_inputs, Mapping) and unpack_forward_inputs: + model_outputs = inference_fn(**model_inputs, **forward_kwargs) + else: + model_outputs = inference_fn(model_inputs, **forward_kwargs) + + # Post-processing step + processed_outputs = self.post_process(model_outputs, **post_process_kwargs) + return processed_outputs
    + + + @staticmethod + def _move_inputs_to_device(inputs, device): + """ + Move all input tensors in the inputs to the device + + Args: + inputs: A torch.Tensor or a batch dict that contains tensors in its values + device: A torch compatible device + + Returns: + Same inputs moved to the device + """ + if isinstance(inputs, torch.Tensor): + inputs = inputs.to(device) + elif isinstance(inputs, Mapping): + inputs = {k: v.to(device) if isinstance(v, torch.Tensor) else v for k, v in inputs.items()} + else: + raise ValueError( + f"Cannot move inputs of type `{type(inputs)}` to `{device}`. " + f"Inputs data type must be either `torch.Tensor` or a mapping object like `dict`!" + ) + return inputs + + def _unpack_prediction_kwargs(self, **kwargs): + """ + The `predict` method can accept extra parameters for each of the `preprocess`, `forward/generate` + and `post_process` methods. These parameters are passed as keyword arguments so that we have to make sure that + each of them are passed to the correct method. + + Args: + **kwargs: The kwargs to be unpacked + + Returns: + A 3-sized tuple of (preprocess_kwargs, forward_kwargs, post_process_kwargs) + """ + # Whether to use forward or generate based on model type + inference_fn = type(self).generate if self.is_generative else type(self).forward + + def _get_positional_kwargs(fn): + params = dict(inspect.signature(fn).parameters) + params = {k: v for k, v in params.items() if v.default != v.empty} + return params + + # Get keyword arguments from the child class (ignore positional arguments) + preprocess_kwargs_keys = list(_get_positional_kwargs(type(self).preprocess).keys()) + post_process_kwargs_keys = list(_get_positional_kwargs(type(self).post_process).keys()) + forward_kwargs_keys = list(_get_positional_kwargs(inference_fn).keys()) + + preprocess_kwargs = {k: kwargs.get(k) for k in preprocess_kwargs_keys if k in kwargs} + forward_kwargs = {k: kwargs.get(k) for k in forward_kwargs_keys if k in kwargs} + post_process_kwargs = {k: kwargs.get(k) for k in post_process_kwargs_keys if k in kwargs} + + return preprocess_kwargs, forward_kwargs, post_process_kwargs + + @property + def device(self): + """ + Get the model's device. This method is only safe when all weights of the model are on the same device. + """ + return next(self.parameters()).device + + @property + def criterion(self): + return self._criterion + + @criterion.setter + def criterion(self, value): + if isinstance(value, str): + self._criterion = self._set_criterion(value) + elif isinstance(value, nn.Module): + self._criterion = value + else: + raise ValueError(f"Criterion value must be either a name or a PyTorch `nn.Module`, got {type(value)}!") + + @property + def preprocessor(self) -> PreprocessorsContainer: + return self._preprocessor + + @preprocessor.setter + def preprocessor(self, value: Preprocessor | PreprocessorsContainer | List[Preprocessor]): + """ + A safe setter method for model's preprocessor. Value must be either a Preprocessor, a list of Preprocessors or + a PreprocessorsContainer instance. + """ + if isinstance(value, Preprocessor): + preprocessor = PreprocessorsContainer() + preprocessor[value.config.name] = value + elif isinstance(value, Mapping): + preprocessor = PreprocessorsContainer(**value) + elif isinstance(value, list): + preprocessor = PreprocessorsContainer(**{p.config.name: p for p in value}) + elif value is None: + preprocessor = None + else: + raise ValueError( + f"Preprocessor value must be a `Preprocessor` " + f"or a list of Preprocessor objects" + f"or `PreprocessorContainer` instance not `{type(value)}`!" + ) + self._preprocessor = preprocessor + + @property + def num_parameters(self): + return sum(p.numel() for p in self.parameters()) + + @property + def num_trainable_parameters(self): + return sum(p.numel() for p in self.parameters() if p.requires_grad)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/model_outputs.html b/_modules/hezar/models/model_outputs.html new file mode 100644 index 00000000..d2ddc39c --- /dev/null +++ b/_modules/hezar/models/model_outputs.html @@ -0,0 +1,610 @@ + + + + + + + + hezar.models.model_outputs - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.model_outputs

    +"""
    +Define all model outputs here
    +"""
    +from dataclasses import asdict, dataclass
    +from typing import Dict, List, Optional
    +
    +
    +
    +[docs] +@dataclass +class ModelOutput: + """ + Base class for all models' prediction outputs (`model.predict()`/`model.post_process()` outputs). + + Note that prediction outputs must all be a list of `ModelOutput` objects since we consider only batch inferences. + + The helper functions in the class enable it to be treated as a mapping or a dict object. + """ + +
    +[docs] + def dict(self): + return asdict(self)
    + + + def __str__(self): + return str({k: v for k, v in self.dict().items() if v is not None}) + + def __repr__(self): + return str(self) + + def __getitem__(self, item): + try: + return self.dict()[item] + except KeyError: + raise AttributeError(f"`{self.__class__.__name__}` has no attribute `{item}`!") + + def __len__(self): + return len(self.dict()) + + def __iter__(self): + return iter(self.dict()) + +
    +[docs] + def keys(self): + return list(self.dict().keys())
    + + +
    +[docs] + def values(self): + return list(self.dict().values())
    + + +
    +[docs] + def items(self): + return self.dict().items()
    +
    + + + +
    +[docs] +@dataclass(repr=False) +class LanguageModelingOutput(ModelOutput): + token: Optional[int] = None + sequence: Optional[str] = None + token_id: Optional[str] = None + score: Optional[float] = None
    + + + +
    +[docs] +@dataclass(repr=False) +class TextClassificationOutput(ModelOutput): + label: Optional[str] = None + score: Optional[float] = None
    + + + +
    +[docs] +@dataclass(repr=False) +class SequenceLabelingOutput(ModelOutput): + token: Optional[List[List[str]]] = None + label: Optional[List[List[str]]] = None + start: Optional[int] = None + end: Optional[int] = None + score: Optional[List[List[float]]] = None
    + + + +
    +[docs] +@dataclass(repr=False) +class TextGenerationOutput(ModelOutput): + text: Optional[str] = None
    + + + +
    +[docs] +@dataclass(repr=False) +class SpeechRecognitionOutput(ModelOutput): + text: Optional[str] = None + chunks: Optional[List[Dict]] = None
    + + + +
    +[docs] +@dataclass(repr=False) +class Image2TextOutput(ModelOutput): + text: Optional[str] = None + score: Optional[str] = None
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/sequence_labeling/bert/bert_sequence_labeling.html b/_modules/hezar/models/sequence_labeling/bert/bert_sequence_labeling.html new file mode 100644 index 00000000..20e09244 --- /dev/null +++ b/_modules/hezar/models/sequence_labeling/bert/bert_sequence_labeling.html @@ -0,0 +1,646 @@ + + + + + + + + hezar.models.sequence_labeling.bert.bert_sequence_labeling - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.sequence_labeling.bert.bert_sequence_labeling

    +"""
    +A BERT model for sequence labeling built using HuggingFace Transformers
    +"""
    +from __future__ import annotations
    +
    +from typing import Dict, List
    +
    +import torch
    +import torch.nn as nn
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import SequenceLabelingOutput
    +from .bert_sequence_labeling_config import BertSequenceLabelingConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import BertConfig, BertModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model("bert_sequence_labeling", BertSequenceLabelingConfig) +class BertSequenceLabeling(Model): + """ + BERT model for sequence labeling + """ + + required_backends = _required_backends + tokenizer_name = "wordpiece_tokenizer" + skip_keys_on_load = ["model.embeddings.position_ids", "bert.embeddings.position_ids"] # For older versions + + def __init__(self, config: BertSequenceLabelingConfig, **kwargs): + super().__init__(config, **kwargs) + self.bert = BertModel(self._build_inner_config()) + classifier_dropout = ( + config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob + ) + self.dropout = nn.Dropout(classifier_dropout) + self.classifier = nn.Linear(config.hidden_size, config.num_labels) + + def _build_inner_config(self): + if self.config.num_labels is None and self.config.id2label is None: + raise ValueError("Both `num_labels` and `id2label` are None. Please provide at least one of them!") + if self.config.id2label and self.config.num_labels is None: + self.config.num_labels = len(self.config.id2label) + bert_config = BertConfig(**self.config) + return bert_config + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ) -> Dict: + lm_outputs = self.bert( + token_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + sequence_output = lm_outputs[0] + + sequence_output = self.dropout(sequence_output) + logits = self.classifier(sequence_output) + + outputs = { + "logits": logits, + "hidden_states": lm_outputs.hidden_states, + "attentions": lm_outputs.attentions, + "tokens": kwargs.get("tokens", None), + "offsets": kwargs.get("offsets_mapping", None) + } + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + criterion = nn.CrossEntropyLoss() + loss = criterion(logits.view(-1, self.config.num_labels), labels.view(-1)) + return loss
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer( + inputs, + return_word_ids=True, + return_tokens=True, + return_offsets_mapping=True, + padding=True, + truncation=True, + return_tensors="pt", + device=self.device, + ) + return inputs
    + + +
    +[docs] + def post_process( + self, + model_outputs: Dict[str, torch.Tensor], + return_offsets: bool = False, + return_scores: bool = False, + ): + logits = model_outputs["logits"].softmax(2) + tokens = model_outputs["tokens"] + offsets = model_outputs["offsets"] + probs, predictions = logits.max(2) + predictions = [[self.config.id2label[p.item()] for p in prediction] for prediction in predictions] + outputs = [] + for tokens_list, prediction, probs_, offsets_mapping in zip(tokens, predictions, probs, offsets): + results = [] + for token, label, prob, offset in zip(tokens_list, prediction, probs_, offsets_mapping): + if token not in self.config.prediction_skip_tokens: + token_results = {"token": token, "label": label} + if return_scores: + token_results["score"] = prob.item() + if return_offsets: + start, end = offset + token_results["start"] = start + token_results["end"] = end + results.append(SequenceLabelingOutput(**token_results)) + outputs.append(results) + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/sequence_labeling/bert/bert_sequence_labeling_config.html b/_modules/hezar/models/sequence_labeling/bert/bert_sequence_labeling_config.html new file mode 100644 index 00000000..758c93c0 --- /dev/null +++ b/_modules/hezar/models/sequence_labeling/bert/bert_sequence_labeling_config.html @@ -0,0 +1,523 @@ + + + + + + + + hezar.models.sequence_labeling.bert.bert_sequence_labeling_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.sequence_labeling.bert.bert_sequence_labeling_config

    +from dataclasses import dataclass, field
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class BertSequenceLabelingConfig(ModelConfig): + name = "bert_sequence_labeling" + task: str = TaskType.SEQUENCE_LABELING + num_labels: int = None + id2label: dict = None + vocab_size: int = 42000 + hidden_size: int = 768 + num_hidden_layers: int = 12 + num_attention_heads: int = 12 + intermediate_size: int = 3072 + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + attention_probs_dropout_prob: float = 0.1 + max_position_embeddings: int = 512 + type_vocab_size: int = 2 + initializer_range: float = 0.02 + layer_norm_eps: float = 1e-12 + pad_token_id: int = 0 + position_embedding_type: str = "absolute" + use_cache: bool = True + classifier_dropout: float = None + prediction_skip_tokens: list = field(default_factory=lambda: ["[SEP]", "[CLS]"])
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/sequence_labeling/distilbert/distilbert_sequence_labeling.html b/_modules/hezar/models/sequence_labeling/distilbert/distilbert_sequence_labeling.html new file mode 100644 index 00000000..2fa23290 --- /dev/null +++ b/_modules/hezar/models/sequence_labeling/distilbert/distilbert_sequence_labeling.html @@ -0,0 +1,642 @@ + + + + + + + + hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling

    +"""
    +A DISTILBERT model for sequence labeling built using HuggingFace Transformers
    +"""
    +from __future__ import annotations
    +
    +from typing import Dict, List
    +
    +import torch
    +from torch import nn
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import SequenceLabelingOutput
    +from .distilbert_sequence_labeling_config import DistilBertSequenceLabelingConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import DistilBertConfig, DistilBertModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model("distilbert_sequence_labeling", DistilBertSequenceLabelingConfig) +class DistilBertSequenceLabeling(Model): + required_backends = _required_backends + tokenizer_name = "wordpiece_tokenizer" + + def __init__(self, config: DistilBertSequenceLabelingConfig, **kwargs): + super().__init__(config, **kwargs) + self.distilbert = DistilBertModel(self._build_inner_config()) + classifier_dropout = ( + config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob + ) + self.dropout = nn.Dropout(classifier_dropout) + self.classifier = nn.Linear(config.dim, config.num_labels) + + def _build_inner_config(self): + """ + Build the inner config for DistilBert. If `num_labels` is not provided, it will be inferred from `id2label`. + If only `num_labels` is provided, `id2label` will be inferred from `num_labels` using the default label names. + :return: + """ + if self.config.num_labels is None and self.config.id2label is None: + raise ValueError("Both `num_labels` and `id2label` are None. Please provide at least one of them!") + if self.config.id2label is not None and self.config.num_labels is None: + self.config.num_labels = len(self.config.id2label) + config = DistilBertConfig(**self.config) + return config + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ) -> Dict: + lm_outputs = self.distilbert( + input_ids=token_ids, + attention_mask=attention_mask, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + sequence_output = lm_outputs[0] + + sequence_output = self.dropout(sequence_output) + logits = self.classifier(sequence_output) + + outputs = { + "logits": logits, + "hidden_states": lm_outputs.hidden_states, + "attentions": lm_outputs.attentions, + "tokens": kwargs.get("tokens", None), + "offsets": kwargs.get("offsets_mapping", None) + } + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + criterion = nn.CrossEntropyLoss() + loss = criterion(logits.view(-1, self.config.num_labels), labels.view(-1)) + return loss
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer( + inputs, + return_word_ids=True, + return_tokens=True, + return_offsets_mapping=True, + padding=True, + truncation=True, + return_tensors="pt", + device=self.device, + ) + return inputs
    + + +
    +[docs] + def post_process( + self, + model_outputs: Dict[str, torch.Tensor], + return_offsets: bool = False, + return_scores: bool = False, + ): + logits = model_outputs["logits"].softmax(2) + tokens = model_outputs["tokens"] + offsets = model_outputs["offsets"] + probs, predictions = logits.max(2) + predictions = [[self.config.id2label[p.item()] for p in prediction] for prediction in predictions] + outputs = [] + for tokens_list, prediction, probs_, offsets_mapping in zip(tokens, predictions, probs, offsets): + results = [] + for token, label, prob, offset in zip(tokens_list, prediction, probs_, offsets_mapping): + if token not in self.config.prediction_skip_tokens: + token_results = {"token": token, "label": label} + if return_scores: + token_results["score"] = prob.item() + if return_offsets: + start, end = offset + token_results["start"] = start + token_results["end"] = end + results.append(SequenceLabelingOutput(**token_results)) + outputs.append(results) + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/sequence_labeling/distilbert/distilbert_sequence_labeling_config.html b/_modules/hezar/models/sequence_labeling/distilbert/distilbert_sequence_labeling_config.html new file mode 100644 index 00000000..8d9caa97 --- /dev/null +++ b/_modules/hezar/models/sequence_labeling/distilbert/distilbert_sequence_labeling_config.html @@ -0,0 +1,524 @@ + + + + + + + + hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config

    +from dataclasses import dataclass, field
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class DistilBertSequenceLabelingConfig(ModelConfig): + name = "distilbert_sequence_labeling" + task: str = TaskType.SEQUENCE_LABELING + num_labels: int = None + id2label: dict = None + activation: str = "gelu" + attention_dropout: float = 0.1 + dim: int = 768 + dropout: float = 0.1 + initializer_range: float = 0.02 + max_position_embeddings: int = 512 + n_heads: int = 12 + n_layers: int = 6 + output_past: bool = True + pad_token_id: int = 0 + qa_dropout: float = 0.1 + tie_weights_: bool = True + vocab_size: int = 42000 + + hidden_dropout_prob: float = 0.1 + use_cache: bool = True + classifier_dropout: float = None + prediction_skip_tokens: list = field(default_factory=lambda: ["[SEP]", "[CLS]"])
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/sequence_labeling/roberta/roberta_sequence_labeling.html b/_modules/hezar/models/sequence_labeling/roberta/roberta_sequence_labeling.html new file mode 100644 index 00000000..ca3a1062 --- /dev/null +++ b/_modules/hezar/models/sequence_labeling/roberta/roberta_sequence_labeling.html @@ -0,0 +1,673 @@ + + + + + + + + hezar.models.sequence_labeling.roberta.roberta_sequence_labeling - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.sequence_labeling.roberta.roberta_sequence_labeling

    +"""
    +A RoBERTa Language Model (HuggingFace Transformers) wrapped by a Hezar Model class
    +"""
    +from __future__ import annotations
    +
    +from typing import Dict, List
    +
    +import torch
    +from torch import nn, tanh
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import SequenceLabelingOutput
    +from .roberta_sequence_labeling_config import RobertaSequenceLabelingConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import RobertaConfig, RobertaModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model("roberta_sequence_labeling", config_class=RobertaSequenceLabelingConfig) +class RobertaSequenceLabeling(Model): + """ + A standard 🤗Transformers RoBERTa model for sequence labeling + + Args: + config: The whole model config including arguments needed for the inner 🤗Transformers model. + """ + + required_backends = _required_backends + tokenizer_name = "bpe_tokenizer" + skip_keys_on_load = ["roberta.embeddings.position_ids", "model.embeddings.position_ids"] + + def __init__(self, config, **kwargs): + super().__init__(config=config, **kwargs) + self.roberta = RobertaModel(self._build_inner_config(), add_pooling_layer=False) + self.classifier = RobertaClassificationHead(self.config) + + def _build_inner_config(self): + if self.config.num_labels is None and self.config.id2label is None: + raise ValueError("Both `num_labels` and `id2label` are None. Please provide at least one of them!") + if self.config.id2label and self.config.num_labels is None: + self.config.num_labels = len(self.config.id2label) + config = RobertaConfig(**self.config) + return config + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + **kwargs, + ): + lm_outputs = self.roberta( + token_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + sequence_output = lm_outputs[0] + logits = self.classifier(sequence_output) + + outputs = { + "logits": logits, + "hidden_states": lm_outputs.hidden_states, + "attentions": lm_outputs.attentions, + "tokens": kwargs.get("tokens", None), + "offsets": kwargs.get("offsets_mapping", None) + } + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + criterion = nn.CrossEntropyLoss() + loss = criterion(logits.view(-1, self.config.num_labels), labels.view(-1)) + return loss
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer( + inputs, + return_word_ids=True, + return_tokens=True, + return_offsets_mapping=True, + padding=True, + truncation=True, + return_tensors="pt", + device=self.device, + ) + return inputs
    + + +
    +[docs] + def post_process( + self, + model_outputs: Dict[str, torch.Tensor], + return_offsets: bool = False, + return_scores: bool = False, + ): + logits = model_outputs["logits"].softmax(2) + tokens = model_outputs["tokens"] + offsets = model_outputs["offsets"] + probs, predictions = logits.max(2) + predictions = [[self.config.id2label[p.item()] for p in prediction] for prediction in predictions] + outputs = [] + for tokens_list, prediction, probs_, offsets_mapping in zip(tokens, predictions, probs, offsets): + results = [] + for token, label, prob, offset in zip(tokens_list, prediction, probs_, offsets_mapping): + if token not in self.config.prediction_skip_tokens: + token_results = {"token": token, "label": label} + if return_scores: + token_results["score"] = prob.item() + if return_offsets: + start, end = offset + token_results["start"] = start + token_results["end"] = end + results.append(SequenceLabelingOutput(**token_results)) + outputs.append(results) + return outputs
    +
    + + + +
    +[docs] +class RobertaClassificationHead(nn.Module): + """Head for sentence-level classification tasks.""" + + def __init__(self, config): + super().__init__() + self.dense = nn.Linear(config.hidden_size, config.hidden_size) + classifier_dropout = ( + config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob + ) + self.dropout = nn.Dropout(classifier_dropout) + self.out_proj = nn.Linear(config.hidden_size, config.num_labels) + +
    +[docs] + def forward(self, inputs, **kwargs): + x = inputs # Apply to all tokens + x = self.dropout(x) + x = self.dense(x) + x = tanh(x) + x = self.dropout(x) + x = self.out_proj(x) + return x
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/sequence_labeling/roberta/roberta_sequence_labeling_config.html b/_modules/hezar/models/sequence_labeling/roberta/roberta_sequence_labeling_config.html new file mode 100644 index 00000000..1549b4f6 --- /dev/null +++ b/_modules/hezar/models/sequence_labeling/roberta/roberta_sequence_labeling_config.html @@ -0,0 +1,527 @@ + + + + + + + + hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config

    +from dataclasses import dataclass
    +from typing import Tuple
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class RobertaSequenceLabelingConfig(ModelConfig): + name = "roberta_sequence_labeling" + task: str = TaskType.SEQUENCE_LABELING + num_labels: int = None + id2label: dict = None + attention_probs_dropout_prob: float = 0.1 + bos_token_id: int = 0 + eos_token_id: int = 2 + gradient_checkpointing: bool = False + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + hidden_size: int = 768 + classifier_dropout: float = None + initializer_range: int = 0.02 + intermediate_size: int = 3072 + layer_norm_eps: float = 1e-12 + max_position_embeddings: int = 514 + num_attention_heads: int = 12 + num_hidden_layers: int = 12 + pad_token_id: int = 1 + position_embedding_type: str = "absolute" + type_vocab_size: int = 1 + use_cache: bool = True + vocab_size: int = 42000 + prediction_skip_tokens: Tuple[str] = ("<s>", "</s>, <pad>")
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/speech_recognition/whisper/whisper_feature_extractor.html b/_modules/hezar/models/speech_recognition/whisper/whisper_feature_extractor.html new file mode 100644 index 00000000..83f78ffc --- /dev/null +++ b/_modules/hezar/models/speech_recognition/whisper/whisper_feature_extractor.html @@ -0,0 +1,692 @@ + + + + + + + + hezar.models.speech_recognition.whisper.whisper_feature_extractor - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.speech_recognition.whisper.whisper_feature_extractor

    +from __future__ import annotations
    +
    +from dataclasses import dataclass
    +from typing import List
    +
    +import numpy as np
    +import torch
    +
    +from ....preprocessors import AudioFeatureExtractor, AudioFeatureExtractorConfig
    +from ....registry import register_preprocessor
    +from ....utils import (
    +    Logger,
    +    convert_batch_dict_dtype,
    +    mel_filter_bank,
    +    spectrogram,
    +    window_function,
    +)
    +
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +@dataclass +class WhisperFeatureExtractorConfig(AudioFeatureExtractorConfig): + name = "whisper_feature_extractor" + feature_size: int = 80 + sampling_rate: int = 16000 + hop_length: int = 160 + chunk_length: int = 30 + n_fft: int = 400 + padding: str = "longest" + padding_value: float = 0.0 + padding_side: str = "right" + return_attention_mask: bool = False
    + + + +
    +[docs] +@register_preprocessor("whisper_feature_extractor", config_class=WhisperFeatureExtractorConfig) +class WhisperFeatureExtractor(AudioFeatureExtractor): + """ + A feature extractor for Whisper model. + + This feature extractor inherits from `AudioFeatureExtractor` which contains most of the main methods. + + This class extracts mel-filter bank features from raw speech using a custom numpy implementation of the `Short Time + Fourier Transform` which should match pytorch's `torch.stft` equivalent. + """ + + def __init__(self, config: WhisperFeatureExtractorConfig, **kwargs): + super().__init__(config=config, **kwargs) + self.n_samples = self.config.chunk_length * self.config.sampling_rate + self.nb_max_frames = self.n_samples // self.config.hop_length + self.mel_filters = mel_filter_bank( + num_frequency_bins=1 + self.config.n_fft // 2, + num_mel_filters=self.config.feature_size, + min_frequency=0.0, + max_frequency=8000.0, + sampling_rate=self.config.sampling_rate, + norm="slaney", + mel_scale="slaney", + ) + + def __call__( + self, + raw_speech: np.ndarray | List[float] | List[np.ndarray] | List[List[float]], + device: str = None, + truncation: bool = True, + pad_to_multiple_of: int = None, + return_tensors: str = None, + return_attention_mask: bool = None, + padding: str = "max_length", + max_length: int = None, + sampling_rate: int = None, + do_normalize: bool = None, + **kwargs, + ): + sampling_rate = sampling_rate or self.config.sampling_rate + if sampling_rate is not None: + if sampling_rate != self.config.sampling_rate: + raise ValueError( + f"The model corresponding to this feature extractor: {self.__class__.__name__} was trained using a" + f" sampling rate of {self.config.sampling_rate}. Please make sure that the provided `raw_speech` " + f"input was sampled with {self.config.sampling_rate} and not {sampling_rate}." + ) + else: + logger.warning( + "It is strongly recommended to pass the `sampling_rate` argument to this function. " + "Failing to do so can result in silent errors that might be hard to debug." + ) + + is_batched_numpy = isinstance(raw_speech, np.ndarray) and len(raw_speech.shape) > 1 + if is_batched_numpy and len(raw_speech.shape) > 2: + raise ValueError(f"Only mono-channel audio is supported for input to {self}") + is_batched = is_batched_numpy or ( + isinstance(raw_speech, (list, tuple)) and (isinstance(raw_speech[0], (np.ndarray, tuple, list))) + ) + + if is_batched: + raw_speech = [np.asarray([speech], dtype=np.float32).T for speech in raw_speech] + elif not is_batched and not isinstance(raw_speech, np.ndarray): + raw_speech = np.asarray(raw_speech, dtype=np.float32) + elif isinstance(raw_speech, np.ndarray) and raw_speech.dtype is np.dtype(np.float64): + raw_speech = raw_speech.astype(np.float32) + + # always return batch + if not is_batched: + raw_speech = [np.asarray([raw_speech]).T] + + batched_speech = {"input_features": raw_speech} + + padded_inputs = self.pad( + batched_speech, + padding=padding, + max_length=max_length if max_length else self.n_samples, + truncation=truncation, + pad_to_multiple_of=pad_to_multiple_of, + return_attention_mask=return_attention_mask or do_normalize, + return_tensors="np", + ) + + # zero-mean and unit-variance normalization + if do_normalize: + padded_inputs["input_features"] = self.zero_mean_unit_var_norm( + padded_inputs["input_features"], + attention_mask=padded_inputs["attention_mask"], + padding_value=self.config.padding_value, + ) + padded_inputs["input_features"] = np.stack(padded_inputs["input_features"], axis=0) + + # make sure list is in array format + input_features = padded_inputs.get("input_features").transpose(2, 0, 1) + + input_features = [self._np_extract_fbank_features(waveform) for waveform in input_features[0]] + + if isinstance(input_features[0], List): + padded_inputs["input_features"] = [np.asarray(feature, dtype=np.float32) for feature in input_features] + else: + padded_inputs["input_features"] = input_features + + if return_attention_mask: + # rescale from sample (48000) to feature (3000) + padded_inputs["attention_mask"] = padded_inputs["attention_mask"][:, :: self.config.hop_length] + + if return_tensors is not None: + padded_inputs = {k: np.asarray(v) for k, v in padded_inputs.items()} + padded_inputs = convert_batch_dict_dtype(padded_inputs, dtype=return_tensors) + if device: + padded_inputs = { + k: v.to(device) if isinstance(v, torch.Tensor) else v for k, v in padded_inputs.items() + } + + return padded_inputs + + def _np_extract_fbank_features(self, waveform: np.array) -> np.ndarray: + """ + Compute the log-mel spectrogram of the provided audio, gives similar results to Whisper's original torch + implementation with 1e-5 tolerance. + """ + log_spec = spectrogram( + waveform, + window_function(self.config.n_fft, "hann"), + frame_length=self.config.n_fft, + hop_length=self.config.hop_length, + power=2.0, + mel_filters=self.mel_filters, + log_mel="log10", + ) + log_spec = log_spec[:, :-1] + log_spec = np.maximum(log_spec, log_spec.max() - 8.0) + log_spec = (log_spec + 4.0) / 4.0 + return log_spec + +
    +[docs] + @staticmethod + def zero_mean_unit_var_norm( + input_values: List[np.ndarray], attention_mask: List[np.ndarray], padding_value: float = 0.0 + ) -> List[np.ndarray]: + """ + Every array in the list is normalized to have zero mean and unit variance + """ + if attention_mask is not None: + attention_mask = np.array(attention_mask, np.int32) + normed_input_values = [] + + for vector, length in zip(input_values, attention_mask.sum(-1)): + normed_slice = (vector - vector[:length].mean()) / np.sqrt(vector[:length].var() + 1e-7) + if length < normed_slice.shape[0]: + normed_slice[length:] = padding_value + + normed_input_values.append(normed_slice) + else: + normed_input_values = [(x - x.mean()) / np.sqrt(x.var() + 1e-7) for x in input_values] + + return normed_input_values
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/speech_recognition/whisper/whisper_speech_recognition.html b/_modules/hezar/models/speech_recognition/whisper/whisper_speech_recognition.html new file mode 100644 index 00000000..cb99dc61 --- /dev/null +++ b/_modules/hezar/models/speech_recognition/whisper/whisper_speech_recognition.html @@ -0,0 +1,705 @@ + + + + + + + + hezar.models.speech_recognition.whisper.whisper_speech_recognition - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.speech_recognition.whisper.whisper_speech_recognition

    +from __future__ import annotations
    +
    +from typing import List
    +
    +import numpy as np
    +import torch
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available, load_audio_files
    +from ...model import Model
    +from ...model_outputs import SpeechRecognitionOutput
    +from .whisper_speech_recognition_config import WhisperSpeechRecognitionConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import WhisperConfig, WhisperForConditionalGeneration
    +
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +    Backends.LIBROSA,
    +]
    +
    +
    +
    +[docs] +@register_model("whisper_speech_recognition", config_class=WhisperSpeechRecognitionConfig) +class WhisperSpeechRecognition(Model): + """ + Whisper model for automatic speech recognition + """ + + is_generative = True + required_backends = _required_backends + feature_extractor_name = "whisper_feature_extractor" + tokenizer_name = "whisper_bpe_tokenizer" + loss_fn_name = "cross_entropy" + + def __init__(self, config: WhisperSpeechRecognitionConfig, **kwargs): + super().__init__(config, **kwargs) + self.whisper = WhisperForConditionalGeneration(WhisperConfig(**self.config)) + +
    +[docs] + def forward( + self, + input_features, + attention_mask=None, + decoder_input_ids=None, + decoder_attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + encoder_outputs=None, + past_key_values=None, + decoder_inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ): + outputs = self.whisper( + input_features=input_features, + attention_mask=attention_mask, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + head_mask=head_mask, + decoder_head_mask=decoder_head_mask, + cross_attn_head_mask=cross_attn_head_mask, + encoder_outputs=encoder_outputs, + past_key_values=past_key_values, + decoder_inputs_embeds=decoder_inputs_embeds, + labels=None, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + loss = self.criterion(logits.view(-1, self.config.vocab_size), labels.view(-1)) + return loss
    + + +
    +[docs] + def generate( + self, + input_features, + forced_decoder_ids=None, + generation_config=None, + logits_processor=None, + stopping_criteria=None, + prefix_allowed_tokens_fn=None, + synced_gpus=None, + return_timestamps=None, + task=None, + language=None, + is_multilingual=None, + prompt_ids=None, + **kwargs, + ): + generation_outputs = self.whisper.generate( + inputs=input_features, + generation_config=generation_config, + logits_processor=logits_processor, + stopping_criteria=stopping_criteria, + prefix_allowed_tokens_fn=prefix_allowed_tokens_fn, + synced_gpus=synced_gpus, + return_timestamps=return_timestamps, + task=task, + language=language, + is_multilingual=is_multilingual, + prompt_ids=prompt_ids, + forced_decoder_ids=forced_decoder_ids, + **kwargs, + ) + return generation_outputs
    + + +
    +[docs] + def prepare_inputs_for_generation( + self, + decoder_input_ids, + past_key_values=None, + use_cache=None, + encoder_outputs=None, + attention_mask=None, + **kwargs, + ): + return self.whisper.prepare_inputs_for_generation( + decoder_input_ids=decoder_input_ids, + past_key_values=past_key_values, + use_cache=use_cache, + encoder_outputs=encoder_outputs, + attention_mask=attention_mask, + **kwargs, + )
    + + +
    +[docs] + def get_encoder(self): + return self.whisper.get_encoder()
    + + +
    +[docs] + def get_decoder(self): + return self.whisper.get_decoder()
    + + +
    +[docs] + def resize_token_embeddings(self, new_num_tokens: int) -> torch.nn.Embedding: + new_embeddings = self.whisper.resize_token_embeddings(new_num_tokens) + return new_embeddings
    + + +
    +[docs] + def get_output_embeddings(self): + return self.whisper.proj_out
    + + +
    +[docs] + def set_output_embeddings(self, new_embeddings): + self.whisper.set_output_embeddings(new_embeddings)
    + + +
    +[docs] + def get_input_embeddings(self) -> torch.nn.Module: + return self.whisper.get_input_embeddings()
    + + +
    +[docs] + def freeze_encoder(self): + self.whisper.freeze_encoder()
    + + +
    +[docs] + def preprocess(self, inputs: str | np.ndarray | List[np.ndarray] | List[str], **kwargs): + if isinstance(inputs, str) or (isinstance(inputs, List) and isinstance(inputs[0], str)): + inputs = load_audio_files(inputs) + + tokenizer = self.preprocessor[self.tokenizer_name] + feature_extractor = self.preprocessor[self.feature_extractor_name] + + forced_decoder_ids = tokenizer.get_decoder_prompt_ids(language="persian", task="transcribe") + inputs = feature_extractor(inputs, sampling_rate=self.config.sampling_rate, return_tensors="pt") + inputs["forced_decoder_ids"] = forced_decoder_ids + return inputs
    + + +
    +[docs] + def post_process(self, model_outputs, **kwargs): + tokenizer = self.preprocessor[self.tokenizer_name] + transcripts = tokenizer.decode(model_outputs, decode_with_timestamps=True, skip_special_tokens=True) + outputs = [SpeechRecognitionOutput(text=transcript) for transcript in transcripts] + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/speech_recognition/whisper/whisper_speech_recognition_config.html b/_modules/hezar/models/speech_recognition/whisper/whisper_speech_recognition_config.html new file mode 100644 index 00000000..be4114b6 --- /dev/null +++ b/_modules/hezar/models/speech_recognition/whisper/whisper_speech_recognition_config.html @@ -0,0 +1,543 @@ + + + + + + + + hezar.models.speech_recognition.whisper.whisper_speech_recognition_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.speech_recognition.whisper.whisper_speech_recognition_config

    +from dataclasses import dataclass, field
    +from typing import List
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class WhisperSpeechRecognitionConfig(ModelConfig): + name = "whisper_speech_recognition" + vocab_size: int = 51865 + num_mel_bins: int = 80 + encoder_layers: int = 6 + encoder_attention_heads: int = 4 + decoder_layers: int = 6 + decoder_attention_heads: int = 4 + num_hidden_layers: int = 12 + decoder_ffn_dim: int = 1536 + encoder_ffn_dim: int = 1536 + encoder_layerdrop: float = 0.0 + decoder_layerdrop: float = 0.0 + decoder_start_token_id: int = 50257 + use_cache: bool = True + sampling_rate: int = 16000 + is_encoder_decoder: bool = True + activation_function: str = "gelu" + d_model: int = 256 + dropout: float = 0.0 + torch_dtype: str = "float32" + attention_dropout: float = 0.0 + activation_dropout: float = 0.0 + init_std: float = 0.02 + scale_embedding: bool = False + max_source_positions: int = 1500 + max_target_positions: int = 448 + pad_token_id: int = 50256 + bos_token_id: int = 50257 + eos_token_id: int = 50256 + suppress_tokens: List[int] = None + begin_suppress_tokens: List[int] = field(default_factory=lambda: [220, 50256]) + use_weighted_layer_sum: bool = False + classifier_proj_size: int = 256 + apply_spec_augment: bool = False + mask_time_prob: float = 0.05 + mask_time_length: int = 10 + mask_time_min_masks: int = 2 + mask_feature_prob: float = 0.0 + mask_feature_length: int = 10 + mask_feature_min_masks: int = 0 + max_new_tokens: int = 448
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/speech_recognition/whisper/whisper_tokenizer.html b/_modules/hezar/models/speech_recognition/whisper/whisper_tokenizer.html new file mode 100644 index 00000000..38b176cc --- /dev/null +++ b/_modules/hezar/models/speech_recognition/whisper/whisper_tokenizer.html @@ -0,0 +1,1236 @@ + + + + + + + + hezar.models.speech_recognition.whisper.whisper_tokenizer - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.speech_recognition.whisper.whisper_tokenizer

    +from dataclasses import dataclass, field
    +from typing import List
    +
    +import numpy as np
    +
    +from ....constants import Backends
    +from ....preprocessors import BPEConfig, BPETokenizer
    +from ....registry import register_preprocessor
    +from ....utils import Logger, is_backend_available
    +
    +
    +if is_backend_available(Backends.TOKENIZERS):
    +    from tokenizers import processors
    +
    +_required_backends = [
    +    Backends.TOKENIZERS,
    +]
    +
    +logger = Logger(__name__)
    +
    +LANGUAGES = {
    +    "en": "english",
    +    "zh": "chinese",
    +    "de": "german",
    +    "es": "spanish",
    +    "ru": "russian",
    +    "ko": "korean",
    +    "fr": "french",
    +    "ja": "japanese",
    +    "pt": "portuguese",
    +    "tr": "turkish",
    +    "pl": "polish",
    +    "ca": "catalan",
    +    "nl": "dutch",
    +    "ar": "arabic",
    +    "sv": "swedish",
    +    "it": "italian",
    +    "id": "indonesian",
    +    "hi": "hindi",
    +    "fi": "finnish",
    +    "vi": "vietnamese",
    +    "he": "hebrew",
    +    "uk": "ukrainian",
    +    "el": "greek",
    +    "ms": "malay",
    +    "cs": "czech",
    +    "ro": "romanian",
    +    "da": "danish",
    +    "hu": "hungarian",
    +    "ta": "tamil",
    +    "no": "norwegian",
    +    "th": "thai",
    +    "ur": "urdu",
    +    "hr": "croatian",
    +    "bg": "bulgarian",
    +    "lt": "lithuanian",
    +    "la": "latin",
    +    "mi": "maori",
    +    "ml": "malayalam",
    +    "cy": "welsh",
    +    "sk": "slovak",
    +    "te": "telugu",
    +    "fa": "persian",
    +    "lv": "latvian",
    +    "bn": "bengali",
    +    "sr": "serbian",
    +    "az": "azerbaijani",
    +    "sl": "slovenian",
    +    "kn": "kannada",
    +    "et": "estonian",
    +    "mk": "macedonian",
    +    "br": "breton",
    +    "eu": "basque",
    +    "is": "icelandic",
    +    "hy": "armenian",
    +    "ne": "nepali",
    +    "mn": "mongolian",
    +    "bs": "bosnian",
    +    "kk": "kazakh",
    +    "sq": "albanian",
    +    "sw": "swahili",
    +    "gl": "galician",
    +    "mr": "marathi",
    +    "pa": "punjabi",
    +    "si": "sinhala",
    +    "km": "khmer",
    +    "sn": "shona",
    +    "yo": "yoruba",
    +    "so": "somali",
    +    "af": "afrikaans",
    +    "oc": "occitan",
    +    "ka": "georgian",
    +    "be": "belarusian",
    +    "tg": "tajik",
    +    "sd": "sindhi",
    +    "gu": "gujarati",
    +    "am": "amharic",
    +    "yi": "yiddish",
    +    "lo": "lao",
    +    "uz": "uzbek",
    +    "fo": "faroese",
    +    "ht": "haitian creole",
    +    "ps": "pashto",
    +    "tk": "turkmen",
    +    "nn": "nynorsk",
    +    "mt": "maltese",
    +    "sa": "sanskrit",
    +    "lb": "luxembourgish",
    +    "my": "myanmar",
    +    "bo": "tibetan",
    +    "tl": "tagalog",
    +    "mg": "malagasy",
    +    "as": "assamese",
    +    "tt": "tatar",
    +    "haw": "hawaiian",
    +    "ln": "lingala",
    +    "ha": "hausa",
    +    "ba": "bashkir",
    +    "jw": "javanese",
    +    "su": "sundanese",
    +}
    +
    +# language code lookup by name, with a few language aliases
    +TO_LANGUAGE_CODE = {
    +    **{language: code for code, language in LANGUAGES.items()},
    +    "burmese": "my",
    +    "valencian": "ca",
    +    "flemish": "nl",
    +    "haitian": "ht",
    +    "letzeburgesch": "lb",
    +    "pushto": "ps",
    +    "panjabi": "pa",
    +    "moldavian": "ro",
    +    "moldovan": "ro",
    +    "sinhalese": "si",
    +    "castilian": "es",
    +}
    +
    +TASK_IDS = ["translate", "transcribe"]
    +
    +ADDITIONAL_SPECIAL_TOKENS = [
    +    "<|endoftext|>",
    +    "<|endoftext|>",
    +    "<|startoftranscript|>",
    +    "<|en|>",
    +    "<|zh|>",
    +    "<|de|>",
    +    "<|es|>",
    +    "<|ru|>",
    +    "<|ko|>",
    +    "<|fr|>",
    +    "<|ja|>",
    +    "<|pt|>",
    +    "<|tr|>",
    +    "<|pl|>",
    +    "<|ca|>",
    +    "<|nl|>",
    +    "<|ar|>",
    +    "<|sv|>",
    +    "<|it|>",
    +    "<|id|>",
    +    "<|hi|>",
    +    "<|fi|>",
    +    "<|vi|>",
    +    "<|he|>",
    +    "<|uk|>",
    +    "<|el|>",
    +    "<|ms|>",
    +    "<|cs|>",
    +    "<|ro|>",
    +    "<|da|>",
    +    "<|hu|>",
    +    "<|ta|>",
    +    "<|no|>",
    +    "<|th|>",
    +    "<|ur|>",
    +    "<|hr|>",
    +    "<|bg|>",
    +    "<|lt|>",
    +    "<|la|>",
    +    "<|mi|>",
    +    "<|ml|>",
    +    "<|cy|>",
    +    "<|sk|>",
    +    "<|te|>",
    +    "<|fa|>",
    +    "<|lv|>",
    +    "<|bn|>",
    +    "<|sr|>",
    +    "<|az|>",
    +    "<|sl|>",
    +    "<|kn|>",
    +    "<|et|>",
    +    "<|mk|>",
    +    "<|br|>",
    +    "<|eu|>",
    +    "<|is|>",
    +    "<|hy|>",
    +    "<|ne|>",
    +    "<|mn|>",
    +    "<|bs|>",
    +    "<|kk|>",
    +    "<|sq|>",
    +    "<|sw|>",
    +    "<|gl|>",
    +    "<|mr|>",
    +    "<|pa|>",
    +    "<|si|>",
    +    "<|km|>",
    +    "<|sn|>",
    +    "<|yo|>",
    +    "<|so|>",
    +    "<|af|>",
    +    "<|oc|>",
    +    "<|ka|>",
    +    "<|be|>",
    +    "<|tg|>",
    +    "<|sd|>",
    +    "<|gu|>",
    +    "<|am|>",
    +    "<|yi|>",
    +    "<|lo|>",
    +    "<|uz|>",
    +    "<|fo|>",
    +    "<|ht|>",
    +    "<|ps|>",
    +    "<|tk|>",
    +    "<|nn|>",
    +    "<|mt|>",
    +    "<|sa|>",
    +    "<|lb|>",
    +    "<|my|>",
    +    "<|bo|>",
    +    "<|tl|>",
    +    "<|mg|>",
    +    "<|as|>",
    +    "<|tt|>",
    +    "<|haw|>",
    +    "<|ln|>",
    +    "<|ha|>",
    +    "<|ba|>",
    +    "<|jw|>",
    +    "<|su|>",
    +    "<|translate|>",
    +    "<|transcribe|>",
    +    "<|startoflm|>",
    +    "<|startofprev|>",
    +    "<|nocaptions|>",
    +    "<|notimestamps|>",
    +]
    +
    +
    +
    +[docs] +@dataclass +class WhisperBPEConfig(BPEConfig): + name = "whisper_bpe_tokenizer" + unk_token: str = "<|endoftext|>" + bos_token: str = "<|startoftranscript|>" + eos_token: str = "<|endoftext|>" + translate_token: str = "<|translate|>" + transcribe_token: str = "<|transcribe|>" + notimestamps_token: str = "<|notimestamps|>" + additional_special_tokens: List = field(default_factory=lambda: ADDITIONAL_SPECIAL_TOKENS) + padding_direction: str = "right" + add_prefix_space: bool = False + add_bos_token: bool = False + model_max_length: int = 1024 + language: str = None + task: str = None + predict_timestamps: str = False
    + + + +
    +[docs] +@register_preprocessor("whisper_bpe_tokenizer", config_class=WhisperBPEConfig) +class WhisperBPETokenizer(BPETokenizer): + required_backends = _required_backends + + def __init__(self, config, tokenizer_file=None, **kwargs): + super().__init__(config, tokenizer_file=tokenizer_file, **kwargs) + self.language = self.config.language + self.task = self.config.task + self.predict_timestamps = self.config.predict_timestamps + +
    +[docs] + def decode( + self, + token_ids, + skip_special_tokens: bool = False, + output_offsets: bool = False, + time_precision=0.02, + decode_with_timestamps: bool = False, + **kwargs, + ): + """ + Override decode method to enable timestamps and offsets. + """ + text = super().decode(token_ids, skip_special_tokens=skip_special_tokens, **kwargs) + if decode_with_timestamps: + text = [ + self._decode_with_timestamps( + token_id, + time_precision=time_precision, + skip_special_tokens=skip_special_tokens, + ) + for token_id in token_ids + ] + # retrieve offsets + if output_offsets: + offsets = self._compute_offsets(token_ids, time_precision=time_precision) + return {"text": text, "offsets": offsets} + return text
    + + + def _decode_with_timestamps(self, token_ids, skip_special_tokens=False, time_precision=0.02) -> str: + """ + Timestamp tokens are above the special tokens' id range and are ignored by `decode()`. This method decodes + given tokens with timestamps tokens annotated, e.g. "<|1.08|>". + """ + timestamp_begin = self.token_to_id(self.config.notimestamps_token) + 1 + outputs = [[]] + for token in token_ids: + if token >= timestamp_begin: + timestamp = f"<|{(token - timestamp_begin) * time_precision:.2f}|>" + outputs.append(timestamp) + outputs.append([]) + else: + outputs[-1].append(token) + outputs = self.decode(outputs, skip_special_tokens=skip_special_tokens) + return "".join(outputs) + + def _compute_offsets(self, token_ids, time_precision=0.02): + """ + Compute offsets for a given tokenized input + + Args: + token_ids: + List of tokenized input ids. Can be obtained using the `__call__` method. + time_precision (`float`, `optional`, defaults to 0.02): + The time ratio to convert from token to time. + """ + offsets = [] + token_ids = np.array(token_ids) + if token_ids.shape[0] > 1 and len(token_ids.shape) > 1: + raise ValueError("Can only process a single input at a time") + timestamp_begin = self.token_to_id(self.config.notimestamps_token) + 1 + timestamp_tokens = token_ids >= timestamp_begin + + consecutive = np.where(timestamp_tokens[:-1] & timestamp_tokens[1:])[0] + 1 + if consecutive.shape[0] == 0 and timestamp_tokens.sum() <= 1: + # either there are no timestamps or there are no consecutive ones + return [] + elif np.where(timestamp_tokens)[0][-1] + 1 not in consecutive: + # we add the final timestamp if it is not already in the list + consecutive = np.append(consecutive, np.where(timestamp_tokens)[0][-1] + 1) + + last_slice = np.where(timestamp_tokens)[0][0] + for current_slice in consecutive: + sliced_tokens = token_ids[last_slice:current_slice] + if len(sliced_tokens) > 1: + start_timestamp_position = sliced_tokens[0].item() - timestamp_begin + end_timestamp_position = sliced_tokens[-1].item() - timestamp_begin + offsets.append( + { + "text": self.decode(sliced_tokens), + "timestamp": ( + start_timestamp_position * time_precision, + end_timestamp_position * time_precision, + ), + } + ) + last_slice = current_slice + + return offsets + +
    +[docs] + def get_prompt_ids(self, text: str, return_tensors="np"): + """Converts prompt text to IDs that can be passed to [`~WhisperForConditionalGeneration.generate`].""" + batch_encoding = self([("<|startofprev|>", " " + text.strip())], add_special_tokens=False) + + # Check for special tokens + prompt_text_ids = batch_encoding["input_ids"][1:] + special_token_id = next((x for x in prompt_text_ids if x >= self.special_ids[0]), None) + if special_token_id is not None: + token = self.convert_ids_to_tokens(special_token_id) + raise ValueError(f"Encountered text in the prompt corresponding to disallowed special token: {token}.") + + batch_encoding.convert_to_tensors(tensor_type=return_tensors) + return batch_encoding["input_ids"]
    + + + @staticmethod + def _strip_prompt(token_ids, prompt_token_id: int, decoder_start_token_id: int): + has_prompt = isinstance(token_ids, list) and token_ids and token_ids[0] == prompt_token_id + if has_prompt: + if decoder_start_token_id in token_ids: + return token_ids[token_ids.index(decoder_start_token_id):] + else: + return [] + + return token_ids + +
    +[docs] + def set_prefix_tokens(self, language: str = None, task: str = None, predict_timestamps: bool = None): + self.language = language if language is not None else self.language + self.task = task if task is not None else self.task + self.predict_timestamps = predict_timestamps if predict_timestamps is not None else self.predict_timestamps + + prefix_token_ids = self.prefix_tokens + prefixes = self.convert_ids_to_tokens(prefix_token_ids) + prefix_template = " ".join([f"{token}:0" for token in prefixes]) + self._tokenizer.post_processor = processors.TemplateProcessing( + single=f"{prefix_template} $A:0 {self.eos_token}:0", + pair=f"{prefix_template} $A:0 $B:1 {self.eos_token}:1", + special_tokens=[ + (self.eos_token, self.eos_token_id), + *zip(prefixes, prefix_token_ids), + ], + )
    + + + @property + def prefix_tokens(self) -> List[int]: + translate_token_id = self.token_to_id(self.config.translate_token) + transcribe_token_id = self.token_to_id(self.config.transcribe_token) + notimestamps_token_id = self.token_to_id(self.config.notimestamps_token) + langs = tuple(LANGUAGES.keys()) + + if self.language is not None: + self.language = self.language.lower() + if self.language in TO_LANGUAGE_CODE: + language_id = TO_LANGUAGE_CODE[self.language] + elif self.language in TO_LANGUAGE_CODE.values(): + language_id = self.language + else: + is_language_code = len(self.language) == 2 + raise ValueError( + f"Unsupported language: {self.language}. Language should be one of:" + f" {list(TO_LANGUAGE_CODE.values()) if is_language_code else list(TO_LANGUAGE_CODE.keys())}." + ) + + if self.task is not None: + if self.task not in TASK_IDS: + raise ValueError(f"Unsupported task: {self.task}. Task should be in: {TASK_IDS}") + + bos_sequence = [self.bos_token_id] + if self.language is not None: + bos_sequence.append(self.bos_token_id + 1 + langs.index(language_id)) + if self.task is not None: + bos_sequence.append(transcribe_token_id if self.task == "transcribe" else translate_token_id) + if not self.predict_timestamps: + bos_sequence.append(notimestamps_token_id) + return bos_sequence + +
    +[docs] + def get_decoder_prompt_ids(self, task=None, language=None, no_timestamps=True): + self.set_prefix_tokens(task=task, language=language, predict_timestamps=not no_timestamps) + # prefix tokens are of the form: <|startoftranscript|> <|lang_id|> <|task|> <|notimestamps|> + # we don't want to force the bos token at position 1, as this is the starting token + # when we generate, so we slice the prefix tokens to: <|lang_id|> <|task|> <|notimestamps|> + # to get the forced tokens + forced_tokens = self.prefix_tokens[1:] + forced_decoder_ids = [(rank + 1, token) for rank, token in enumerate(forced_tokens)] + return forced_decoder_ids
    + + + def _decode_asr(self, model_outputs, *, return_timestamps, return_language, time_precision): + """ + Internal method meant to only be used by asr pipeline. Handles all the little quirks specific to whisper + to handle the various options not allowed in other seq2seq models + """ + + # =========== Overview ============ + # - iterate over all outputs + # - all tokens within output + # - Each token can be + # - language token + # - special token + # - timestamp token + # - text token + # - We accumulate the text tokens. + # - We split on end timestamps + # - Lots of complexity comes from stride and timestamps + + last_language = None + + def new_chunk(): + return {"language": last_language, "timestamp": [None, None], "text": ""} + + # Welcome to the state machine ! + chunks = [] + chunk = new_chunk() + time_offset = 0.0 + timestamp_begin = self.convert_tokens_to_ids("<|notimestamps|>") + 1 + previous_tokens = [] + skip = False + right_stride_start = None + + all_special_ids = set(self.special_ids) + # - iterate over all outputs + for chunk_id, output in enumerate(model_outputs): + # We can drop everything to Python list, it's going to make + # our lives easier + token_ids = output["tokens"][0].tolist() + + # Those keep track of timestamps within strides + # Which need to be skipped and resolve all tokens in a single + # chunk. + last_timestamp = None + first_timestamp = timestamp_begin + + if "stride" in output: + chunk_len, stride_left, stride_right = output["stride"] + # Offset the timings to account for the other `model_outputs`. + time_offset -= stride_left + right_stride_start = chunk_len - stride_right + + # Keeping track of timestamps within strides + # We're going to NOT split on those, and delay until we're + # out of BOTH stride. Otherwise, lots of issues occur and + # corner cases + if stride_left: + first_timestamp = stride_left / time_precision + timestamp_begin + if stride_right: + for token in reversed(token_ids): + if token >= timestamp_begin: + # There can be several token in the right stride + # But the last one is ALWAYS going to be skipped + if ( + last_timestamp is not None + and (token - timestamp_begin) * time_precision < right_stride_start + ): + break + last_timestamp = token + + current_tokens = [] + + # - all tokens within output + for i, token in enumerate(token_ids): + # 4 possible states for each token + # - 1/ Language code + # - 2/ all other special tokens (which we ignore) + # - 3/ Timestamp + # - 4/ Regular text + if token in all_special_ids: + # Either language code or other + text = self.decode([token]) + # Removing outer shell <|XX|> + text = text[2:-2] + language = LANGUAGES.get(text, None) + if language is not None: + # 1/ Indeed some language + # TODO Handle when language is different from the previous + # one, and we cannot use timestamped tokens to create chunks + if last_language and language != last_language and not return_timestamps: + previous_tokens.append(current_tokens) + resolved_tokens = self._find_longest_common_sequence(previous_tokens) + resolved_text = self.decode(resolved_tokens) + chunk["text"] = resolved_text + chunks.append(chunk) + + # Flush all our temporary context + previous_tokens = [] + current_tokens = [] + chunk = new_chunk() + chunk["language"] = language + last_language = language + else: + # 2/ This is a regular special token, ignoring it + pass + elif token >= timestamp_begin: + # 3/ Timestamp token + time = (token - timestamp_begin) * time_precision + time_offset + time = round(time, 2) + if last_timestamp and token >= last_timestamp: + # Whisper outputted a timestamp token, but it falls within + # our stride, so we're going to skip it for the time being + # and resolve this later + # Skip is necessary because timestamp tokens always come + # by pair, so we need to skip the next one too (which would mark the start of another chunk). + skip = True + elif skip or (previous_tokens and token < first_timestamp): + skip = False + elif chunk["timestamp"][0] is None: + chunk["timestamp"][0] = time + else: + # This is the end of the timestamp chunk + if time == chunk["timestamp"][0]: + # This is a bug in timestamp token output + # where we're taking the duplicate token + # as a stop where it should be a start. + # This is an issue in the underlying model output + pass + else: + chunk["timestamp"][1] = time + # Handling merges. + previous_tokens.append(current_tokens) + resolved_tokens = self._find_longest_common_sequence(previous_tokens) + resolved_text = self.decode(resolved_tokens) + chunk["text"] = resolved_text + chunks.append(chunk) + + # Flush all our temporary context + previous_tokens = [] + current_tokens = [] + chunk = new_chunk() + else: + # 4/ Regular token + # We just append to the list of all tokens so we can handle + # merges later and decode into text. + current_tokens.append(token) + + if "stride" in output: + time_offset += chunk_len - stride_right + + # Leftover tokens + if current_tokens: + previous_tokens.append(current_tokens) + elif not (any(p for p in previous_tokens)): + # print("Flushing previous tokens (END)") + chunk = new_chunk() + previous_tokens = [] + current_tokens = [] + + if previous_tokens: + if return_timestamps: + logger.warning( + "There was an error while processing timestamps, we haven't found a timestamp as last token. Was" + " WhisperTimeStampLogitsProcessor used?" + ) + # Happens when we don't use timestamps + resolved_tokens = self._find_longest_common_sequence(previous_tokens) + # print("Flushing previous tokens (FINAL)") + resolved_text = self.decode(resolved_tokens) + chunk["text"] = resolved_text + chunks.append(chunk) + + # Preparing and cleaning up the pipeline output + full_text = "".join(chunk["text"] for chunk in chunks) + if return_timestamps or return_language: + for chunk in chunks: + if not return_timestamps: + chunk.pop("timestamp") + else: + chunk["timestamp"] = tuple(chunk["timestamp"]) + if not return_language: + chunk.pop("language") + optional = {"chunks": chunks} + else: + optional = {} + return full_text, optional + + @staticmethod + def _find_longest_common_sequence(sequences): + # It would be much harder to do O(n) because of fault tolerance. + # We actually have a good property which is that the total sequence + # MUST be those subsequences in order. + left_sequence = sequences[0] + left_length = len(left_sequence) + total_sequence = [] + for right_sequence in sequences[1:]: + # index = 0 + max_ = 0.0 + max_indices = (left_length, left_length, 0, 0) + # Here we're sliding matches + # [a, b, c, d] + # [c, d, f] + # = [c] == [d] + # + # [a, b, c, d] + # [c, d, f] + # = [c, d] == [c, d] + # + # + # [a, b, c, d] + # [c, d, f] + # + # = [b, c, d] == [c, d, f] + # + # [a, b, c, d] + # [c, d, f] + # + # [a, b, c] == [c, d, f] + # + # [a, b, c, d] + # [d, f] + # + # [a, b] == [d, f] + # + # [a, b, c, d] + # [f] + # + # [a] == [f] + right_length = len(right_sequence) + for i in range(1, left_length + right_length): + # epsilon to favor long perfect matches + eps = i / 10000.0 + + # Slightly convoluted because we don't want out of bound indices + # This will be necessary for a small conflict resolution optimization + # later + left_start = max(0, left_length - i) + left_stop = min(left_length, left_length + right_length - i) + left = np.array(left_sequence[left_start:left_stop]) + + right_start = max(0, i - left_length) + right_stop = min(right_length, i) + right = np.array(right_sequence[right_start:right_stop]) + + # We can only match subsequences of the same size. + if len(left) != len(right): + raise RuntimeError( + "There is a bug within whisper `decode_asr` function, please report it. " + "Dropping to prevent bad inference." + ) + + matches = np.sum(left == right) + matching = matches / i + eps + if matches > 1 and matching > max_: + max_ = matching + max_indices = (left_start, left_stop, right_start, right_stop) + + (left_start, left_stop, right_start, right_stop) = max_indices + + # This is a small conflict optimization since those sequences overlap + # in audio. + # We're going to give more confidence to the left sequence + # for the left of the overlap, + # and to the right of the sequence, for the right of the overlap + left_mid = (left_stop + left_start) // 2 + right_mid = (right_stop + right_start) // 2 + total_sequence.extend(left_sequence[:left_mid]) + left_sequence = right_sequence[right_mid:] + left_length = len(left_sequence) + + total_sequence.extend(left_sequence) + + return total_sequence
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_classification/bert/bert_text_classification.html b/_modules/hezar/models/text_classification/bert/bert_text_classification.html new file mode 100644 index 00000000..75415f5c --- /dev/null +++ b/_modules/hezar/models/text_classification/bert/bert_text_classification.html @@ -0,0 +1,639 @@ + + + + + + + + hezar.models.text_classification.bert.bert_text_classification - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_classification.bert.bert_text_classification

    +"""
    +A BERT model for text classification built using HuggingFace Transformers
    +"""
    +from __future__ import annotations
    +
    +from typing import Dict, List
    +
    +import torch
    +from torch import nn
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import TextClassificationOutput
    +from .bert_text_classification_config import BertTextClassificationConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import BertConfig, BertModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model(model_name="bert_text_classification", config_class=BertTextClassificationConfig) +class BertTextClassification(Model): + """ + A standard 🤗Transformers Bert model for text classification + + Args: + config: The whole model config including arguments needed for the inner 🤗Transformers model. + """ + + required_backends = _required_backends + tokenizer_name = "wordpiece_tokenizer" + skip_keys_on_load = [ + "model.embeddings.position_ids", # For older versions + "bert.embeddings.position_ids", + "model.bert.embeddings.position_ids", + ] + + def __init__(self, config: BertTextClassificationConfig, **kwargs): + super().__init__(config, **kwargs) + self.bert = BertModel(self._build_inner_config()) + classifier_dropout = ( + self.config.classifier_dropout + if self.config.classifier_dropout is not None + else self.config.hidden_dropout_prob + ) + self.dropout = nn.Dropout(classifier_dropout) + self.classifier = nn.Linear(self.config.hidden_size, self.config.num_labels) + + def _build_inner_config(self): + if self.config.num_labels is None and self.config.id2label is None: + raise ValueError("Both `num_labels` and `id2label` are None. Please provide at least one of them!") + if self.config.id2label and self.config.num_labels is None: + self.config.num_labels = len(self.config.id2label) + bert_config = BertConfig(**self.config) + return bert_config + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + criterion = nn.CrossEntropyLoss() + loss = criterion(logits.view(-1, self.config.num_labels), labels.view(-1)) + return loss
    + + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + encoder_hidden_states=None, + encoder_attention_mask=None, + past_key_values=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ) -> Dict: + lm_outputs = self.bert( + token_ids, + attention_mask=attention_mask, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_attention_mask, + past_key_values=past_key_values, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=True, + ) + pooled_output = lm_outputs[1] + pooled_output = self.dropout(pooled_output) + logits = self.classifier(pooled_output) + outputs = { + "logits": logits, + "hidden_states": lm_outputs.hidden_states, + "attentions": lm_outputs.attentions, + } + return outputs
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer(inputs, return_tensors="pt", device=self.device) + return inputs
    + + +
    +[docs] + def post_process(self, model_outputs: dict, top_k=1): + output_logits = model_outputs["logits"] + outputs = [] + for logits in output_logits: + probs = logits.softmax(dim=-1) + scores, label_ids = probs.sort(descending=True) + row = [] + for i, (score, label_id) in enumerate(zip(scores, label_ids)): + if i == top_k: + break + label_str = self.config.id2label[label_id.item()] + score = score.item() + row.append(TextClassificationOutput(label=label_str, score=score)) + outputs.append(row) + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_classification/bert/bert_text_classification_config.html b/_modules/hezar/models/text_classification/bert/bert_text_classification_config.html new file mode 100644 index 00000000..f61b84a0 --- /dev/null +++ b/_modules/hezar/models/text_classification/bert/bert_text_classification_config.html @@ -0,0 +1,522 @@ + + + + + + + + hezar.models.text_classification.bert.bert_text_classification_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_classification.bert.bert_text_classification_config

    +from dataclasses import dataclass
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class BertTextClassificationConfig(ModelConfig): + name = "bert_text_classification" + task: str = TaskType.TEXT_CLASSIFICATION + num_labels: int = None + id2label: dict = None + vocab_size: int = 42000 + hidden_size: int = 768 + num_hidden_layers: int = 12 + num_attention_heads: int = 12 + intermediate_size: int = 3072 + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + attention_probs_dropout_prob: float = 0.1 + max_position_embeddings: int = 512 + type_vocab_size: int = 2 + initializer_range: float = 0.02 + layer_norm_eps: float = 1e-12 + pad_token_id: int = 0 + position_embedding_type: str = "absolute" + use_cache: bool = True + classifier_dropout: float = None
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_classification/distilbert/distilbert_text_classification.html b/_modules/hezar/models/text_classification/distilbert/distilbert_text_classification.html new file mode 100644 index 00000000..a919ac67 --- /dev/null +++ b/_modules/hezar/models/text_classification/distilbert/distilbert_text_classification.html @@ -0,0 +1,623 @@ + + + + + + + + hezar.models.text_classification.distilbert.distilbert_text_classification - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_classification.distilbert.distilbert_text_classification

    +"""
    +A DistilBERT model for text classification built using HuggingFace Transformers
    +"""
    +from __future__ import annotations
    +
    +from typing import Dict, List
    +
    +import torch
    +from torch import nn
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import TextClassificationOutput
    +from .distilbert_text_classification_config import DistilBertTextClassificationConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import DistilBertConfig, DistilBertModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model(model_name="distilbert_text_classification", config_class=DistilBertTextClassificationConfig) +class DistilBertTextClassification(Model): + """ + A standard 🤗Transformers DistilBert model for text classification + + Args: + config: The whole model config including arguments needed for the inner 🤗Transformers model. + """ + + required_backends = _required_backends + tokenizer_name = "wordpiece_tokenizer" + + def __init__(self, config: DistilBertTextClassificationConfig, **kwargs): + super().__init__(config, **kwargs) + self.distilbert = DistilBertModel(self._build_inner_config()) + self.pre_classifier = nn.Linear(self.config.dim, self.config.dim) + self.classifier = nn.Linear(self.config.dim, self.config.num_labels) + self.dropout = nn.Dropout(self.config.seq_classif_dropout) + + def _build_inner_config(self): + if self.config.num_labels is None and self.config.id2label is None: + raise ValueError("Both `num_labels` and `id2label` are None. Please provide at least one of them!") + if self.config.id2label and self.config.num_labels is None: + self.config.num_labels = len(self.config.id2label) + bert_config = DistilBertConfig(**self.config) + return bert_config + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ) -> Dict: + lm_outputs = self.distilbert( + input_ids=token_ids, + attention_mask=attention_mask, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=True, + ) + hidden_state = lm_outputs[0] + pooled_output = hidden_state[:, 0] # classification output + pooled_output = self.pre_classifier(pooled_output) + pooled_output = nn.ReLU()(pooled_output) + pooled_output = self.dropout(pooled_output) + logits = self.classifier(pooled_output) + + outputs = { + "logits": logits, + "hidden_states": lm_outputs.hidden_states, + "attentions": lm_outputs.attentions, + } + return outputs
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + criterion = nn.CrossEntropyLoss() + loss = criterion(logits.view(-1, self.config.num_labels), labels.view(-1)) + return loss
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer(inputs, return_tensors="pt", device=self.device) + return inputs
    + + +
    +[docs] + def post_process(self, model_outputs: dict, top_k=1): + output_logits = model_outputs["logits"] + outputs = [] + for logits in output_logits: + probs = logits.softmax(dim=-1) + scores, label_ids = probs.sort(descending=True) + row = [] + for i, (score, label_id) in enumerate(zip(scores, label_ids)): + if i == top_k: + break + label_str = self.config.id2label[label_id.item()] + score = score.item() + row.append(TextClassificationOutput(label=label_str, score=score)) + outputs.append(row) + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_classification/distilbert/distilbert_text_classification_config.html b/_modules/hezar/models/text_classification/distilbert/distilbert_text_classification_config.html new file mode 100644 index 00000000..77b241f1 --- /dev/null +++ b/_modules/hezar/models/text_classification/distilbert/distilbert_text_classification_config.html @@ -0,0 +1,521 @@ + + + + + + + + hezar.models.text_classification.distilbert.distilbert_text_classification_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_classification.distilbert.distilbert_text_classification_config

    +from dataclasses import dataclass
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class DistilBertTextClassificationConfig(ModelConfig): + name = "distilbert_text_classification" + task: str = TaskType.TEXT_CLASSIFICATION + num_labels: int = None + id2label: dict = None + activation: str = "gelu" + attention_dropout: float = 0.1 + dim: int = 768 + dropout: float = 0.1 + hidden_dim: int = 3072 + initializer_range: float = 0.02 + max_position_embeddings: int = 512 + n_heads: int = 12 + n_layers: int = 6 + output_past: bool = True + pad_token_id: int = 0 + qa_dropout: float = 0.1 + seq_classif_dropout: float = 0.2 + tie_weights_: bool = True + vocab_size: int = 42000
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_classification/roberta/roberta_text_classification.html b/_modules/hezar/models/text_classification/roberta/roberta_text_classification.html new file mode 100644 index 00000000..697b4400 --- /dev/null +++ b/_modules/hezar/models/text_classification/roberta/roberta_text_classification.html @@ -0,0 +1,651 @@ + + + + + + + + hezar.models.text_classification.roberta.roberta_text_classification - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_classification.roberta.roberta_text_classification

    +"""
    +A RoBERTa Language Model (HuggingFace Transformers) wrapped by a Hezar Model class
    +"""
    +from __future__ import annotations
    +
    +from typing import List
    +
    +import torch
    +from torch import nn, tanh
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import TextClassificationOutput
    +from .roberta_text_classification_config import RobertaTextClassificationConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import RobertaConfig, RobertaModel
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model("roberta_text_classification", config_class=RobertaTextClassificationConfig) +class RobertaTextClassification(Model): + """ + A standard 🤗Transformers RoBERTa model for text classification + + Args: + config: The whole model config including arguments needed for the inner 🤗Transformers model. + """ + + required_backends = _required_backends + tokenizer_name = "bpe_tokenizer" + skip_keys_on_load = ["model.embeddings.position_ids", "roberta.embeddings.position_ids"] # For older versions + + def __init__(self, config, **kwargs): + super().__init__(config=config, **kwargs) + self.roberta = RobertaModel(self._build_inner_config(), add_pooling_layer=False) + self.classifier = RobertaClassificationHead(self.config) + + def _build_inner_config(self): + if self.config.num_labels is None and self.config.id2label is None: + raise ValueError("Both `num_labels` and `id2label` are None. Please provide at least one of them!") + if self.config.id2label and self.config.num_labels is None: + self.config.num_labels = len(self.config.id2label) + bert_config = RobertaConfig(**self.config) + return bert_config + +
    +[docs] + def forward( + self, + token_ids, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + **kwargs, + ): + lm_outputs = self.roberta( + token_ids, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + sequence_output = lm_outputs[0] + logits = self.classifier(sequence_output) + + outputs = { + "logits": logits, + "hidden_states": lm_outputs.hidden_states, + "attentions": lm_outputs.attentions, + } + return outputs
    + + +
    +[docs] + def compute_loss(self, inputs: torch.Tensor, targets: torch.Tensor) -> torch.Tensor: + criterion = nn.CrossEntropyLoss() + loss = criterion(inputs.view(-1, self.config.num_labels), targets.view(-1)) + return loss
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], **kwargs): + if isinstance(inputs, str): + inputs = [inputs] + if "text_normalizer" in self.preprocessor: + normalizer = self.preprocessor["text_normalizer"] + inputs = normalizer(inputs) + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer(inputs, return_tensors="pt", device=self.device) + return inputs
    + + +
    +[docs] + def post_process(self, model_outputs: dict, top_k=1): + output_logits = model_outputs["logits"] + outputs = [] + for logits in output_logits: + probs = logits.softmax(dim=-1) + scores, label_ids = probs.sort(descending=True) + row = [] + for i, (score, label_id) in enumerate(zip(scores, label_ids)): + if i == top_k: + break + label_str = self.config.id2label[label_id.item()] + score = score.item() + row.append(TextClassificationOutput(label=label_str, score=score)) + outputs.append(row) + return outputs
    +
    + + + +
    +[docs] +class RobertaClassificationHead(nn.Module): + """Head for sentence-level classification tasks.""" + + def __init__(self, config): + super().__init__() + self.dense = nn.Linear(config.hidden_size, config.hidden_size) + classifier_dropout = ( + config.classifier_dropout if config.classifier_dropout is not None else config.hidden_dropout_prob + ) + self.dropout = nn.Dropout(classifier_dropout) + self.out_proj = nn.Linear(config.hidden_size, config.num_labels) + +
    +[docs] + def forward(self, inputs, **kwargs): + x = inputs[:, 0, :] # take <s> token (equiv. to [CLS]) + x = self.dropout(x) + x = self.dense(x) + x = tanh(x) + x = self.dropout(x) + x = self.out_proj(x) + return x
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_classification/roberta/roberta_text_classification_config.html b/_modules/hezar/models/text_classification/roberta/roberta_text_classification_config.html new file mode 100644 index 00000000..8e9799c1 --- /dev/null +++ b/_modules/hezar/models/text_classification/roberta/roberta_text_classification_config.html @@ -0,0 +1,525 @@ + + + + + + + + hezar.models.text_classification.roberta.roberta_text_classification_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_classification.roberta.roberta_text_classification_config

    +from dataclasses import dataclass
    +
    +from ....configs import ModelConfig
    +from ....constants import TaskType
    +
    +
    +
    +[docs] +@dataclass +class RobertaTextClassificationConfig(ModelConfig): + name = "roberta_text_classification" + task: str = TaskType.TEXT_CLASSIFICATION + num_labels: int = None + id2label: dict = None + attention_probs_dropout_prob: float = 0.1 + bos_token_id: int = 0 + eos_token_id: int = 2 + gradient_checkpointing: bool = False + hidden_act: str = "gelu" + hidden_dropout_prob: float = 0.1 + hidden_size: int = 768 + classifier_dropout: float = None + initializer_range: int = 0.02 + intermediate_size: int = 3072 + layer_norm_eps: float = 1e-12 + max_position_embeddings: int = 514 + num_attention_heads: int = 12 + num_hidden_layers: int = 12 + pad_token_id: int = 1 + position_embedding_type: str = "absolute" + type_vocab_size: int = 1 + use_cache: bool = True + vocab_size: int = 42000
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_generation/gpt2/gpt2_text_generation.html b/_modules/hezar/models/text_generation/gpt2/gpt2_text_generation.html new file mode 100644 index 00000000..c99c7833 --- /dev/null +++ b/_modules/hezar/models/text_generation/gpt2/gpt2_text_generation.html @@ -0,0 +1,604 @@ + + + + + + + + hezar.models.text_generation.gpt2.gpt2_text_generation - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_generation.gpt2.gpt2_text_generation

    +from __future__ import annotations
    +
    +from typing import List
    +
    +import torch
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import TextGenerationOutput
    +from .gpt2_text_generation_config import GPT2TextGenerationConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import (
    +        GenerationConfig,
    +        GPT2Config,
    +        GPT2LMHeadModel,
    +    )
    +
    +_required_backends = [Backends.TRANSFORMERS, Backends.TOKENIZERS]
    +
    +
    +
    +[docs] +@register_model("gpt2_text_generation", config_class=GPT2TextGenerationConfig) +class GPT2TextGeneration(Model): + is_generative = True + tokenizer_name = "bpe_tokenizer" + required_backends = _required_backends + loss_fn_name = "cross_entropy" + + def __init__(self, config: GPT2TextGenerationConfig, **kwargs): + super().__init__(config, **kwargs) + self.gpt2 = GPT2LMHeadModel(config=GPT2Config(**self.config)) + +
    +[docs] + def forward( + self, + token_ids, + past_key_values=None, + attention_mask=None, + token_type_ids=None, + position_ids=None, + head_mask=None, + inputs_embeds=None, + encoder_hidden_states=None, + encoder_attention_mask=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + return_dict=None, + **kwargs + ): + outputs = self.gpt2( + input_ids=token_ids, + past_key_values=past_key_values, + attention_mask=attention_mask, + token_type_ids=token_type_ids, + position_ids=position_ids, + head_mask=head_mask, + inputs_embeds=inputs_embeds, + encoder_hidden_states=encoder_hidden_states, + encoder_attention_mask=encoder_attention_mask, + labels=None, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + return dict(outputs)
    + + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + labels = labels.to(logits.device) + # Shift so that tokens < n predict n + shift_logits = logits[..., :-1, :].contiguous() + shift_labels = labels[..., 1:].contiguous() + # Compute loss + loss = self.criterion(shift_logits.view(-1, shift_logits.size(-1)), shift_labels.view(-1)) + return loss
    + + +
    +[docs] + def generate(self, token_ids, **kwargs): + self.config.generation.update(kwargs or {}) + generation_config = GenerationConfig(**self.config.generation) + generated_ids = self.gpt2.generate(token_ids, generation_config=generation_config) + return generated_ids
    + + +
    +[docs] + def preprocess(self, texts: str | List[str], **kwargs): + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer(texts, return_tensors="pt", device=self.device) + return inputs
    + + +
    +[docs] + def post_process(self, generated_ids: torch.Tensor): + tokenizer = self.preprocessor[self.tokenizer_name] + decoded_outputs = tokenizer.decode(generated_ids.cpu().numpy().tolist()) + outputs = [TextGenerationOutput(text=text) for text in decoded_outputs] + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_generation/gpt2/gpt2_text_generation_config.html b/_modules/hezar/models/text_generation/gpt2/gpt2_text_generation_config.html new file mode 100644 index 00000000..91e646fc --- /dev/null +++ b/_modules/hezar/models/text_generation/gpt2/gpt2_text_generation_config.html @@ -0,0 +1,539 @@ + + + + + + + + hezar.models.text_generation.gpt2.gpt2_text_generation_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_generation.gpt2.gpt2_text_generation_config

    +from dataclasses import dataclass, field
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class GenerationConfig(ModelConfig): + bos_token_id: int = 0 + decoder_start_token_id: int = 0 + early_stopping: bool = True + eos_token_id: int = 2 + length_penalty: float = 2.0 + max_new_tokens: int = 50 + no_repeat_ngram_size: int = 3 + num_beams: int = 4 + pad_token_id: int = 1
    + + + +
    +[docs] +@dataclass +class GPT2TextGenerationConfig(ModelConfig): + name = "gpt2_text_generation" + add_cross_attention: bool = False + vocab_size: int = 42001 + attn_pdrop: float = 0.1 + bos_token_id: int = 5 + embd_pdrop: float = 0.1 + eos_token_id: int = 5 + gradient_checkpointing: bool = False + initializer_range: float = 0.02 + layer_norm_epsilon: float = 1e-05 + model_type: str = "gpt2" + n_ctx: int = 1024 + n_embd: int = 768 + n_head: int = 12 + n_inner: int = None + n_layer: int = 12 + n_positions: int = 1024 + resid_pdrop: float = 0.1 + summary_activation: bool = False + summary_first_dropout: float = 0.1 + use_cache: bool = True + generation: GenerationConfig = field(default_factory=GenerationConfig)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_generation/t5/t5_text_generation.html b/_modules/hezar/models/text_generation/t5/t5_text_generation.html new file mode 100644 index 00000000..b2fdefe7 --- /dev/null +++ b/_modules/hezar/models/text_generation/t5/t5_text_generation.html @@ -0,0 +1,623 @@ + + + + + + + + hezar.models.text_generation.t5.t5_text_generation - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_generation.t5.t5_text_generation

    +from __future__ import annotations
    +
    +from typing import Dict, List
    +
    +import torch
    +
    +from ....constants import Backends
    +from ....registry import register_model
    +from ....utils import is_backend_available
    +from ...model import Model
    +from ...model_outputs import TextGenerationOutput
    +from .t5_text_generation_config import T5TextGenerationConfig
    +
    +
    +if is_backend_available(Backends.TRANSFORMERS):
    +    from transformers import T5Config, T5ForConditionalGeneration
    +
    +_required_backends = [
    +    Backends.TRANSFORMERS,
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@register_model("t5_text_generation", config_class=T5TextGenerationConfig) +class T5TextGeneration(Model): + """ + T5 for text to text generation + """ + + is_generative = True + required_backends = _required_backends + tokenizer_name = "sentencepiece_unigram_tokenizer" + loss_fn_name = "cross_entropy" + + def __init__(self, config: T5TextGenerationConfig, **kwargs): + super().__init__(config=config, **kwargs) + + self.t5 = T5ForConditionalGeneration(T5Config(**self.config)) + +
    +[docs] + def forward( + self, + token_ids, + labels=None, + attention_mask=None, + decoder_input_ids=None, + decoder_attention_mask=None, + head_mask=None, + decoder_head_mask=None, + cross_attn_head_mask=None, + encoder_outputs=None, + past_key_values=None, + inputs_embeds=None, + decoder_inputs_embeds=None, + use_cache=None, + output_attentions=None, + output_hidden_states=None, + **kwargs, + ) -> Dict: + + if labels is not None and decoder_input_ids is None and decoder_inputs_embeds is None: + # get decoder inputs from shifting lm labels to the right + decoder_input_ids = self._shift_right(labels) + + outputs = self.t5( + input_ids=token_ids, + attention_mask=attention_mask, + decoder_input_ids=decoder_input_ids, + decoder_attention_mask=decoder_attention_mask, + head_mask=head_mask, + decoder_head_mask=decoder_head_mask, + cross_attn_head_mask=cross_attn_head_mask, + encoder_outputs=encoder_outputs, + past_key_values=past_key_values, + inputs_embeds=inputs_embeds, + decoder_inputs_embeds=decoder_inputs_embeds, + labels=None, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + ) + + return dict(outputs)
    + + + def _shift_right(self, input_ids): + return self.t5._shift_right(input_ids) + +
    +[docs] + def compute_loss(self, logits: torch.Tensor, labels: torch.Tensor) -> torch.Tensor: + labels = labels.clone() + labels[labels == self.config.pad_token_id] = -100 + loss = self.criterion(logits.view(-1, logits.size(-1)), labels.view(-1)) + return loss
    + + +
    +[docs] + def generate(self, token_ids, attention_mask=None, **kwargs): + # TODO Merge kwargs into generation config so users can control generation from kwargs + model_inputs = {"input_ids": token_ids, "attention_mask": attention_mask} + generation_kwargs = {"min_length": self.config.min_length, "max_length": self.config.max_length} + output_ids = self.t5.generate(**model_inputs, **generation_kwargs) + return output_ids
    + + +
    +[docs] + def preprocess(self, inputs: str | List[str], prefix=None): + if isinstance(inputs, str): + inputs = [inputs] + prefix = prefix or self.config.input_prefix + if prefix: + inputs = [f"{prefix}{x}" for x in inputs] + tokenizer = self.preprocessor[self.tokenizer_name] + inputs = tokenizer(inputs, return_tensors="pt", device=self.device) + return inputs
    + + +
    +[docs] + def post_process(self, generated_ids: torch.Tensor, **kwargs): + tokenizer = self.preprocessor[self.tokenizer_name] + decoded_outputs = tokenizer.decode(generated_ids.cpu().numpy().tolist()) + outputs = [TextGenerationOutput(text=text) for text in decoded_outputs] + return outputs
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/models/text_generation/t5/t5_text_generation_config.html b/_modules/hezar/models/text_generation/t5/t5_text_generation_config.html new file mode 100644 index 00000000..575e5c5f --- /dev/null +++ b/_modules/hezar/models/text_generation/t5/t5_text_generation_config.html @@ -0,0 +1,524 @@ + + + + + + + + hezar.models.text_generation.t5.t5_text_generation_config - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.models.text_generation.t5.t5_text_generation_config

    +from dataclasses import dataclass
    +
    +from ....configs import ModelConfig
    +
    +
    +
    +[docs] +@dataclass +class T5TextGenerationConfig(ModelConfig): + name = "t5_text_generation" + vocab_size: int = 32103 + d_model: int = 768 + d_kv: int = 64 + d_ff: int = 2048 + num_layers: int = 12 + num_decoder_layers: int = 12 + num_heads: int = 12 + relative_attention_num_buckets: int = 32 + relative_attention_max_distance: int = 128 + dropout_rate: float = 0.1 + layer_norm_epsilon: float = 1e-6 + initializer_factor: float = 1.0 + feed_forward_proj: str = "gated-gelu" + is_encoder_decoder: bool = True + tie_word_embeddings: bool = False + use_cache: bool = True + pad_token_id: int = 0 + decoder_start_token_id: int = 0 + eos_token_id: int = 1 + min_length: int = 0 + max_length: int = 100 + input_prefix: str = None
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/audio_feature_extractor.html b/_modules/hezar/preprocessors/audio_feature_extractor.html new file mode 100644 index 00000000..2a10a14c --- /dev/null +++ b/_modules/hezar/preprocessors/audio_feature_extractor.html @@ -0,0 +1,841 @@ + + + + + + + + hezar.preprocessors.audio_feature_extractor - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.audio_feature_extractor

    +from dataclasses import dataclass
    +from typing import Mapping
    +
    +import numpy as np
    +
    +from ..builders import build_preprocessor
    +from ..configs import PreprocessorConfig
    +from ..constants import DEFAULT_FEATURE_EXTRACTOR_CONFIG_FILE
    +from ..utils import convert_batch_dict_dtype
    +from .preprocessor import Preprocessor
    +
    +
    +
    +[docs] +@dataclass +class AudioFeatureExtractorConfig(PreprocessorConfig): + feature_size: int = None + sampling_rate: int = 16000 + padding: str = None + padding_value: float = 0.0 + padding_side: str = None
    + + + +
    +[docs] +class AudioFeatureExtractor(Preprocessor): + """ + Base class for all audio feature extractors. + """ + + model_input_name = "input_features" + config_filename = DEFAULT_FEATURE_EXTRACTOR_CONFIG_FILE + + def __init__(self, config: AudioFeatureExtractorConfig, **kwargs): + super().__init__(config=config, **kwargs) + + def __call__(self, inputs, **kwargs): + raise NotImplementedError + +
    +[docs] + def pad( + self, + processed_features, + padding=None, + max_length=None, + truncation=None, + pad_to_multiple_of=None, + return_attention_mask=None, + return_tensors=None, + ): + """ + Pad input values / input vectors or a batch of input values / input vectors up to predefined length or to the + max sequence length in the batch. + + Args: + processed_features: Processed inputs to add padding to + padding: Padding strategy which can be `longest`, `max_length`, `False` + max_length: Max input length (Only effective if padding is `max_length` too, ignored otherwise) + truncation: Whether to truncate long inputs or not + pad_to_multiple_of: If set will pad the sequence to a multiple of the provided value. + return_attention_mask: Whether to return the attention mask. + return_tensors: Tensors return type among `pt`, `np`, `list` + """ + return_attention_mask = return_attention_mask or self.config.return_attention_mask + padding = padding or self.config.padding + if isinstance(processed_features, (list, tuple)) and isinstance(processed_features[0], Mapping): + processed_features = { + key: np.array([example[key] for example in processed_features]) for key in processed_features[0].keys() + } + if self.model_input_name not in processed_features: + raise ValueError( + f"Processed inputs must have a `{self.model_input_name}` key!\n" + f"Provided keys: {list(processed_features.keys())}" + ) + + required_input = processed_features[self.model_input_name] + + if len(required_input) == 0: + if return_attention_mask: + processed_features["attention_mask"] = [] + return processed_features + + first_element = required_input[0] + if isinstance(first_element, (list, tuple)): + # first_element might be an empty list/tuple in some edge cases so we grab the first non-empty element. + index = 0 + while len(required_input[index]) == 0: + index += 1 + if index < len(required_input): + first_element = required_input[index][0] + + # processed_features = convert_batch_dict_dtype(processed_features, dtype="np") + padding_strategy = self._get_padding_strategy(padding=padding, max_length=max_length) + + required_input = processed_features[self.model_input_name] + + batch_size = len(required_input) + if not all(len(v) == batch_size for v in processed_features.values()): + raise ValueError("Some items in the output dictionary have a different batch size than others.") + + truncated_inputs = [] + for i in range(batch_size): + inputs = {k: v[i] for k, v in processed_features.items()} + # truncation + inputs_slice = self._truncate( + inputs, + max_length=max_length, + pad_to_multiple_of=pad_to_multiple_of, + truncation=truncation, + ) + truncated_inputs.append(inputs_slice) + + if padding_strategy == "longest": + # make sure that `max_length` cannot be longer than the longest truncated length + max_length = max(len(input_slice[self.model_input_name]) for input_slice in truncated_inputs) + padding_strategy = "max_length" + + batch_outputs = {} + for i in range(batch_size): + # padding + outputs = self._pad( + truncated_inputs[i], + max_length=max_length, + padding_strategy=padding_strategy, + pad_to_multiple_of=pad_to_multiple_of, + return_attention_mask=return_attention_mask, + ) + for key, value in outputs.items(): + if key not in batch_outputs: + batch_outputs[key] = [] + if value.dtype is np.dtype(np.float64): + value = value.astype(np.float32) + batch_outputs[key].append(value) + + batch_outputs = {k: np.array(v) for k, v in batch_outputs.items()} + + padded_features = convert_batch_dict_dtype(batch_outputs, dtype=return_tensors) + + return padded_features
    + + + def _pad( + self, + processed_features, + max_length=None, + padding_strategy=None, + pad_to_multiple_of=None, + return_attention_mask=None, + ) -> dict: + """ + Pad inputs based on padding strategy and max length + + Args: + processed_features: Processed inputs to add padding to + padding_strategy: Padding strategy which can be `longest`, `max_length`, `False` + max_length: Max input length (Only effective if padding is `max_length` too, ignored otherwise) + pad_to_multiple_of: If set will pad the sequence to a multiple of the provided value. + return_attention_mask: Whether to return the attention mask. + + Returns: + Batch dict of the padded features + """ + required_input = processed_features[self.model_input_name] + + if padding_strategy == "longest": + max_length = len(required_input) + + if max_length is not None and pad_to_multiple_of is not None and (max_length % pad_to_multiple_of != 0): + max_length = ((max_length // pad_to_multiple_of) + 1) * pad_to_multiple_of + + needs_to_be_padded = padding_strategy is not None and len(required_input) < max_length + + if return_attention_mask and "attention_mask" not in processed_features: + processed_features["attention_mask"] = np.ones(len(required_input), dtype=np.int32) + + if needs_to_be_padded: + difference = max_length - len(required_input) + if self.config.padding_side == "right": + if return_attention_mask: + processed_features["attention_mask"] = np.pad(processed_features["attention_mask"], (0, difference)) + padding_shape = ((0, difference), (0, 0)) if self.config.feature_size > 1 else (0, difference) + processed_features[self.model_input_name] = np.pad( + required_input, padding_shape, "constant", constant_values=self.config.padding_value + ) + elif self.config.padding_side == "left": + if return_attention_mask: + processed_features["attention_mask"] = np.pad(processed_features["attention_mask"], (difference, 0)) + padding_shape = ((difference, 0), (0, 0)) if self.config.feature_size > 1 else (difference, 0) + processed_features[self.model_input_name] = np.pad( + required_input, padding_shape, "constant", constant_values=self.config.padding_value + ) + else: + raise ValueError("Invalid padding strategy:" + str(self.config.padding_side)) + + return processed_features + + def _get_padding_strategy(self, padding=False, max_length=None): + """ + Find the correct padding strategy + """ + if padding == "longest" or padding is True: + padding_strategy = "longest" + if self.config.padding_value is None: + raise ValueError(f"Setting padding to `{padding_strategy}`, but `config.padding_value` is `None`!") + + elif padding == "max_length": + if max_length is None: + raise ValueError("Setting `padding=max_length` but leaving `max_length` as `None` is invalid!") + padding_strategy = "max_length" + + else: + padding_strategy = None + + return padding_strategy + + def _truncate( + self, + processed_features, + max_length: int = None, + pad_to_multiple_of: int = None, + truncation: bool = None, + ): + """ + Truncate inputs to predefined length or max length in the batch + + Args: + processed_features: Dictionary of input values + max_length: maximum length of the returned list and optionally padding length + pad_to_multiple_of: Integer if set will pad the sequence to a multiple of the provided value. + truncation: Activates truncation to cut input sequences longer than `max_length` to `max_length`. + """ + if not truncation: + return processed_features + elif truncation and max_length is None: + raise ValueError("When setting ``truncation=True``, make sure that ``max_length`` is defined.") + + required_input = processed_features[self.model_input_name] + + # find `max_length` that fits `pad_to_multiple_of` + if max_length is not None and pad_to_multiple_of is not None and (max_length % pad_to_multiple_of != 0): + max_length = ((max_length // pad_to_multiple_of) + 1) * pad_to_multiple_of + + needs_to_be_truncated = len(required_input) > max_length + + if needs_to_be_truncated: + processed_features[self.model_input_name] = processed_features[self.model_input_name][:max_length] + if "attention_mask" in processed_features: + processed_features["attention_mask"] = processed_features["attention_mask"][:max_length] + + return processed_features + +
    +[docs] + def save( + self, + path, + subfolder=None, + config_filename=None, + ): + """ + Save the feature extractor to the path. This normally is equal to only saving the + `feature_extractor_config.yaml` file. + + Args: + path: Main path to save the feature extractor files + subfolder: Optional subfolder, defaults to `preprocessor` + config_filename: Optional config file name, defaults to `feature_extractor_config.yaml` + """ + subfolder = subfolder or self.preprocessor_subfolder + config_filename = config_filename or self.config_filename + + self.config.save(path, filename=config_filename, subfolder=subfolder)
    + + +
    +[docs] + def push_to_hub( + self, + repo_id, + subfolder=None, + commit_message=None, + private=None, + config_filename=None, + ): + """ + Push the feature extractor files to a repo on the Hub. + + Args: + repo_id: Hub repo id + subfolder: Subfolder to save, defaults to `self.preprocessor_subfolder` (`preprocessor`) + commit_message: Commit message for the push + private: If the repo does not exist already, specify whether the created repo must be private or not + config_filename: Config filename, defaults to `self.config_filename` (`feature_extractor_config.yaml`) + """ + subfolder = subfolder or self.preprocessor_subfolder + config_filename = config_filename or self.config_filename + + if commit_message is None: + commit_message = "Hezar: Upload feature extractor" + + self.config.push_to_hub( + repo_id, + subfolder=subfolder, + filename=config_filename, + private=private, + commit_message=commit_message, + )
    + + +
    +[docs] + @classmethod + def load( + cls, + hub_or_local_path, + subfolder: str = None, + config_filename: str = None, + cache_dir: str = None, + **kwargs, + ): + """ + Load a feature extractor from Hub or local path. + + Args: + hub_or_local_path: Hub repo id or local path + subfolder: Preprocessor subfolder path + config_filename: Config file name + cache_dir: Path to cache directory + **kwargs: + + Returns: + A AudioFeatureExtractor object + """ + subfolder = subfolder or cls.preprocessor_subfolder + config_filename = config_filename or cls.config_filename + + config = AudioFeatureExtractorConfig.load( + hub_or_local_path, + subfolder=subfolder, + filename=config_filename, + cache_dir=cache_dir, + ) + + feature_extractor = build_preprocessor(config.name, config=config, **kwargs) + + return feature_extractor
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/image_processor.html b/_modules/hezar/preprocessors/image_processor.html new file mode 100644 index 00000000..c510e104 --- /dev/null +++ b/_modules/hezar/preprocessors/image_processor.html @@ -0,0 +1,761 @@ + + + + + + + + hezar.preprocessors.image_processor - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.image_processor

    +from dataclasses import dataclass, field
    +from typing import Iterable, List, Tuple
    +
    +import numpy as np
    +
    +from ..builders import build_preprocessor
    +from ..configs import PreprocessorConfig
    +from ..constants import (
    +    DEFAULT_IMAGE_PROCESSOR_CONFIG_FILE,
    +    DEFAULT_PREPROCESSOR_SUBFOLDER,
    +    Backends,
    +    ImageType,
    +)
    +from ..registry import register_preprocessor
    +from ..utils import (
    +    convert_batch_dict_dtype,
    +    convert_image_type,
    +    gray_scale_image,
    +    load_image,
    +    mirror_image,
    +    normalize_image,
    +    rescale_image,
    +    resize_image,
    +    transpose_channels_axis_side,
    +)
    +from .preprocessor import Preprocessor
    +
    +
    +# List of backends required for the image processor
    +_required_backends = [
    +    Backends.PILLOW,
    +]
    +
    +_DESCRIPTION = r"""
    +A general image processor to perform various image transformations in a composable/configurable pipeline.
    +"""
    +
    +# Aliases for different image types
    +_image_type_aliases = {
    +    "pt": ImageType.TORCH,
    +    "pytorch": ImageType.TORCH,
    +    "torch": ImageType.TORCH,
    +    "np": ImageType.NUMPY,
    +    "numpy": ImageType.NUMPY,
    +    "pil": ImageType.PILLOW,
    +    "pillow": ImageType.PILLOW,
    +}
    +
    +
    +
    +[docs] +@dataclass +class ImageProcessorConfig(PreprocessorConfig): + """ + Configuration class for the ImageProcessor. + """ + name = "image_processor" + mean: List[float] = None + std: List[float] = None + rescale: float = None + resample: int = None + size: Tuple[int, int] = field( + default=None, + metadata={"description": "Image size tuple (width, height)"}, + ) + mirror: bool = False + gray_scale: bool = False
    + + + +
    +[docs] +@register_preprocessor("image_processor", config_class=ImageProcessorConfig, description=_DESCRIPTION) +class ImageProcessor(Preprocessor): + """ + General image processor to perform sequential transforms on a list of images. + """ + + required_backends = _required_backends + + preprocessor_subfolder = DEFAULT_PREPROCESSOR_SUBFOLDER + image_processor_config_file = DEFAULT_IMAGE_PROCESSOR_CONFIG_FILE + + def __init__(self, config: ImageProcessorConfig, **kwargs): + """ + Initializes the ImageProcessor. + + Args: + config (ImageProcessorConfig): Configuration for the image processor. + **kwargs: Additional keyword arguments. + """ + super().__init__(config, **kwargs) + + def __call__( + self, + images: List, + device: str = None, + mean: float = None, + std: float = None, + rescale: float = None, + size: Tuple[int, int] = None, + resample: float = None, + mirror: bool = None, + gray_scale: bool = None, + return_tensors: str = "pt", + **kwargs, + ): + """ + Perform sequential image processing on a list of input images. + + Args: + images (List): A list of input images of types torch, numpy, pillow. + mean (float): Image mean value for normalization. + std (float): Image std value for normalization. + rescale (float): Scale factor for rescaling the image. + size (Tuple[int, int]): Image size tuple (width, height) for resizing. + resample (float): Resample method value based on Image.Resampling. + mirror (bool): Flag to mirror the images. + gray_scale (bool): Flag to convert images to grayscale. + return_tensors (str): The type of the output images. + **kwargs: Extra parameters. + + Returns: + dict: Transformed images list. + """ + mean = mean or self.config.mean + std = std or self.config.std + rescale = rescale or self.config.rescale + size = size or self.config.size + resample = resample or self.config.resample + mirror = mirror or self.config.mirror + gray_scale = gray_scale or self.config.gray_scale + + if not isinstance(images, Iterable) or isinstance(images, str): + images = [images] + + # Load images if inputs are list of files + images = [load_image(x, return_type="numpy") if isinstance(x, str) else x for x in images] + + # Cast image types + images = [convert_image_type(image, target_type="numpy") for image in images] + + # Convert to grayscale + if gray_scale: + images = [gray_scale_image(image, return_type="numpy") for image in images] + + # Mirror images if mirror is set + if mirror: + images = [mirror_image(image, return_type="numpy") for image in images] + + if size is not None: + if not isinstance(size, Iterable) or len(size) > 2: + raise ValueError(f"The parameter `size` must be a tuple/list of (width, height), got `{size}`") + images = [resize_image(image, size=size, resample=resample) for image in images] + + if rescale is not None: + images = [rescale_image(image, scale=rescale) for image in images] + + if mean is not None and std is not None: + images = [normalize_image(image, mean=mean, std=std, channel_axis="last") for image in images] + + # Transpose channels axis + images = [transpose_channels_axis_side(image, axis_side="first") for image in images] + + # Return images batch dict + images = np.array([convert_image_type(image, target_type="numpy") for image in images], dtype=np.float32) + + images = convert_batch_dict_dtype({"pixel_values": images}, dtype=return_tensors) + + if device: + import torch + + images = {k: v.to(device) if isinstance(v, torch.Tensor) else v for k, v in images.items()} + + return images + +
    +[docs] + @classmethod + def load( + cls, + hub_or_local_path, + subfolder: str = None, + force_return_dict: bool = False, + config_filename: str = None, + cache_dir: str = None, + **kwargs, + ) -> "ImageProcessor": + """ + Load an ImageProcessor from a specified path. + + Args: + hub_or_local_path: Path to the hub or local location. + subfolder (str): Subfolder within the specified path. + force_return_dict (bool): Flag to force return as a dictionary. + config_filename (str): Configuration filename. + cache_dir: Path to cache directory + **kwargs: Additional keyword arguments. + + Returns: + ImageProcessor: Loaded image processor instance. + """ + subfolder = subfolder or cls.preprocessor_subfolder + config_filename = config_filename or cls.image_processor_config_file + config = ImageProcessorConfig.load( + hub_or_local_path, + filename=config_filename, + subfolder=subfolder, + cache_dir=cache_dir, + ) + image_processor = build_preprocessor(config.name, config, **kwargs) + return image_processor
    + + +
    +[docs] + def save( + self, + path, + subfolder=None, + config_filename=None, + ): + """ + Save the ImageProcessor configuration. + + Args: + path: Path to save the configuration. + subfolder (str): Subfolder within the specified path. + config_filename (str): Configuration filename. + """ + subfolder = subfolder or self.preprocessor_subfolder + config_filename = config_filename or self.image_processor_config_file + self.config.save(path, subfolder=subfolder, filename=config_filename)
    + + +
    +[docs] + def push_to_hub( + self, + repo_id, + subfolder=None, + commit_message=None, + private=None, + config_filename=None + ): + """ + Push the ImageProcessor configuration to the hub. + + Args: + repo_id: ID of the repository. + subfolder (str): Subfolder within the repository. + commit_message (str): Commit message. + private (bool): Flag indicating whether the repository is private. + config_filename (str): Configuration filename. + """ + subfolder = subfolder or self.preprocessor_subfolder + config_filename = config_filename or self.image_processor_config_file + + if commit_message is None: + commit_message = "Hezar: Upload image processor files" + + self.config.push_to_hub( + repo_id, + subfolder=subfolder, + filename=config_filename, + private=private, + commit_message=commit_message, + )
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/preprocessor.html b/_modules/hezar/preprocessors/preprocessor.html new file mode 100644 index 00000000..46bbbee9 --- /dev/null +++ b/_modules/hezar/preprocessors/preprocessor.html @@ -0,0 +1,660 @@ + + + + + + + + hezar.preprocessors.preprocessor - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.preprocessor

    +from __future__ import annotations
    +
    +import os
    +from collections import OrderedDict
    +from typing import List
    +
    +from huggingface_hub import hf_hub_download
    +from omegaconf import OmegaConf
    +
    +from ..configs import PreprocessorConfig
    +from ..constants import DEFAULT_PREPROCESSOR_SUBFOLDER, HEZAR_CACHE_DIR, Backends, RegistryType, RepoType
    +from ..utils import get_module_class, list_repo_files, verify_dependencies
    +
    +
    +
    +[docs] +class Preprocessor: + """ + Base class for all data preprocessors. + + Args: + config: Preprocessor properties + """ + + required_backends: List[str | Backends] = [] + + preprocessor_subfolder = DEFAULT_PREPROCESSOR_SUBFOLDER + + def __init__(self, config: PreprocessorConfig, **kwargs): + verify_dependencies(self, self.required_backends) # Check if all the required dependencies are installed + + self.config = config.update(kwargs) + + def __call__(self, inputs, **kwargs): + """ + An abstract call method for a preprocessor. All preprocessors must implement this. + + Args: + inputs: Raw inputs to process. Usually a list or a dict + **kwargs: Extra keyword arguments depending on the preprocessor + """ + raise NotImplementedError + +
    +[docs] + def save(self, path, **kwargs): + raise NotImplementedError
    + + +
    +[docs] + def push_to_hub( + self, + repo_id, + subfolder=None, + commit_message=None, + private=None, + **kwargs, + ): + raise NotImplementedError
    + + +
    +[docs] + @classmethod + def load( + cls, + hub_or_local_path, + subfolder: str = None, + force_return_dict: bool = False, + cache_dir: str = None, + **kwargs + ): + """ + Load a preprocessor or a pipeline of preprocessors from a local or Hub path. This method automatically detects + any preprocessor in the path. If there's only one preprocessor, returns it and if there are more, returns a + dictionary of preprocessors. + + This method must also be overriden by subclasses as it internally calls this method for every possible + preprocessor found in the repo. + + Args: + hub_or_local_path: Path to hub or local repo + subfolder: Subfolder for the preprocessor. + force_return_dict: Whether to return a dict even if there's only one preprocessor available on the repo + cache_dir: Path to cache directory + **kwargs: Extra kwargs + + Returns: + A Preprocessor subclass or a dict of Preprocessor subclass instances + """ + subfolder = subfolder or cls.preprocessor_subfolder + cache_dir = cache_dir or HEZAR_CACHE_DIR + preprocessor_files = list_repo_files(hub_or_local_path, subfolder=subfolder) + preprocessors = PreprocessorsContainer() + for f in preprocessor_files: + if f.endswith(".yaml"): + if os.path.isdir(hub_or_local_path): + config_file = os.path.join(hub_or_local_path, subfolder, f) + else: + config_file = hf_hub_download( + hub_or_local_path, + filename=f, + subfolder=subfolder, + repo_type=RepoType.MODEL, + cache_dir=cache_dir, + ) + config = OmegaConf.load(config_file) + name = config.get("name", None) + if name: + preprocessor_cls = get_module_class(name, registry_type=RegistryType.PREPROCESSOR) + preprocessor = preprocessor_cls.load(hub_or_local_path, subfolder=subfolder, cache_dir=cache_dir) + preprocessors[name] = preprocessor + else: + raise ValueError(f"The config file `{config_file}` does not have the property `name`!") + if len(preprocessors) == 1 and not force_return_dict: + return list(preprocessors.values())[0] + + return preprocessors
    +
    + + + +
    +[docs] +class PreprocessorsContainer(OrderedDict): + """ + A class to hold the preprocessors by their name + """ + + def __getattr__(self, item): + """ + Override this method to be able to access preprocessors as attributes + + Examples: + >>> preprocessor["text_normalizer"] is preprocessor.text_normalizer # noqa + ... True + """ + if item in self: + return self[item] + else: + super().__getattribute__(item) + +
    +[docs] + def save(self, path): + """ + Save every preprocessor item in the container + """ + for name, preprocessor in self.items(): + preprocessor.save(path)
    + + +
    +[docs] + def push_to_hub( + self, + repo_id, + subfolder=None, + commit_message=None, + private=None, + ): + """ + Push every preprocessor item in the container + """ + for name, preprocessor in self.items(): + preprocessor.push_to_hub(repo_id, subfolder=subfolder, commit_message=commit_message, private=private)
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/text_normalizer.html b/_modules/hezar/preprocessors/text_normalizer.html new file mode 100644 index 00000000..0d913b76 --- /dev/null +++ b/_modules/hezar/preprocessors/text_normalizer.html @@ -0,0 +1,655 @@ + + + + + + + + hezar.preprocessors.text_normalizer - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.text_normalizer

    +from __future__ import annotations
    +
    +import os
    +from dataclasses import dataclass
    +from typing import Dict, List, Mapping, Tuple
    +
    +from ..builders import build_preprocessor
    +from ..configs import PreprocessorConfig
    +from ..constants import (
    +    DEFAULT_NORMALIZER_CONFIG_FILE,
    +    DEFAULT_PREPROCESSOR_SUBFOLDER,
    +    Backends,
    +)
    +from ..registry import register_preprocessor
    +from ..utils import Logger, is_backend_available
    +from .preprocessor import Preprocessor
    +
    +
    +if is_backend_available(Backends.TOKENIZERS):
    +    from tokenizers import Regex, normalizers
    +
    +_required_backends = [
    +    Backends.TOKENIZERS,
    +]
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +@dataclass +class TextNormalizerConfig(PreprocessorConfig): + name = "text_normalizer" + replace_patterns: List[Tuple[str, str]] | List[List[str]] | List[Dict[str, List]] = None + nfkd: bool = True + nfkc: bool = True + + def __post_init__(self): + # convert a list of dicts in replace_patterns to a list of tuples + if self.replace_patterns is not None and len(self.replace_patterns): + if isinstance(self.replace_patterns, Mapping): + patterns = [] + for v in self.replace_patterns.values(): + patterns += v + self.replace_patterns = patterns
    + + + +
    +[docs] +@register_preprocessor("text_normalizer", config_class=TextNormalizerConfig) +class TextNormalizer(Preprocessor): + """ + A simple configurable text normalizer + """ + + required_backends = _required_backends + + preprocessor_subfolder = DEFAULT_PREPROCESSOR_SUBFOLDER + normalizer_config_file = DEFAULT_NORMALIZER_CONFIG_FILE + + def __init__(self, config: TextNormalizerConfig, **kwargs): + super().__init__(config, **kwargs) + + def __call__( + self, + inputs: str | List[str], + replace_patterns: List[Tuple[str, str]] | List[List[str]] = None, + nfkd: bool = None, + nfkc: bool = None, + **kwargs, + ): + if isinstance(inputs, str): + inputs = [inputs] + + nfkd = nfkd or self.config.nfkd + nfkc = nfkc or self.config.nfkc + replace_patterns = replace_patterns or self.config.replace_patterns + + if nfkd: + inputs = [normalizers.NFKD().normalize_str(x) for x in inputs] + if nfkc: + inputs = [normalizers.NFKC().normalize_str(x) for x in inputs] + + if replace_patterns is not None: + replacer = normalizers.Sequence( + [normalizers.Replace(Regex(src), trg) for src, trg in self.config.replace_patterns] # noqa + ) + inputs = [replacer.normalize_str(x) for x in inputs] + + return inputs + +
    +[docs] + @classmethod + def load( + cls, + hub_or_local_path, + subfolder=None, + config_filename=None, + cache_dir=None, + **kwargs + ) -> "TextNormalizer": + config_filename = config_filename or cls.normalizer_config_file + subfolder = subfolder or cls.preprocessor_subfolder + config = TextNormalizerConfig.load( + hub_or_local_path, + filename=config_filename, + subfolder=subfolder, + cache_dir=cache_dir, + ) + normalizer = build_preprocessor(config.name, config, **kwargs) + return normalizer
    + + +
    +[docs] + def push_to_hub( + self, + repo_id, + commit_message: str = None, + subfolder: str = None, + config_filename: str = None, + private: bool = None, + ): + """ + Push normalizer config and other optional files to the Hub. + + Args: + repo_id: Repo id on the Hub + commit_message: Commit message + subfolder: Optional subfolder for the normalizer + config_filename: Optional normalizer config filename + private: Whether to create a private repo if it does not exist already + """ + subfolder = subfolder or self.preprocessor_subfolder + config_filename = config_filename or self.normalizer_config_file + + if commit_message is None: + commit_message = "Hezar: Upload normalizer" + + # upload config + self.config.push_to_hub( + repo_id=repo_id, + filename=config_filename, + subfolder=subfolder, + commit_message=commit_message, + )
    + + +
    +[docs] + def save( + self, + path, + subfolder=None, + config_filename=None, + ): + config_filename = config_filename or self.normalizer_config_file + subfolder = subfolder or self.preprocessor_subfolder + os.makedirs(path, exist_ok=True) + self.config.save(path, filename=config_filename, subfolder=subfolder)
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/tokenizers/bpe.html b/_modules/hezar/preprocessors/tokenizers/bpe.html new file mode 100644 index 00000000..a6f3ab45 --- /dev/null +++ b/_modules/hezar/preprocessors/tokenizers/bpe.html @@ -0,0 +1,616 @@ + + + + + + + + hezar.preprocessors.tokenizers.bpe - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.tokenizers.bpe

    +from dataclasses import dataclass, field
    +from typing import List
    +
    +from ...constants import DEFAULT_TOKENIZER_CONFIG_FILE, DEFAULT_TOKENIZER_FILE, Backends
    +from ...registry import register_preprocessor
    +from ...utils import is_backend_available
    +from .tokenizer import Tokenizer, TokenizerConfig
    +
    +
    +if is_backend_available(Backends.TOKENIZERS):
    +    from tokenizers import Tokenizer as HFTokenizer
    +    from tokenizers import decoders, models, pre_tokenizers, processors, trainers
    +
    +_required_backends = [
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@dataclass +class BPEConfig(TokenizerConfig): + name = "bpe_tokenizer" + max_length: int = 512 + truncation_strategy: str = "longest_first" + truncation_direction: str = "right" + stride: int = 0 + padding_strategy: str = "longest" + padding_direction: str = "right" + pad_to_multiple_of: int = 0 + bos_token: str = "<s>" + eos_token: str = "</s>" + unk_token: str = "<unk>" + sep_token: str = "<sep>" + pad_token: str = "<pad>" + cls_token: str = "<cls>" + mask_token: str = "<mask>" + additional_special_tokens: List[str] = None + dropout: float = None + continuing_subword_prefix: str = "" + end_of_word_suffix: str = "" + fuse_unk: bool = False + vocab_size: int = 30000 + min_frequency: int = 2 + limit_alphabet: int = 1000 + initial_alphabet: list = field(default_factory=list) + show_progress: bool = True
    + + + +
    +[docs] +@register_preprocessor("bpe_tokenizer", config_class=BPEConfig) +class BPETokenizer(Tokenizer): + """ + A standard Byte-level BPE tokenizer using 🤗HuggingFace Tokenizers + + Args: + config: Preprocessor config for the tokenizer + **kwargs: Extra/manual config parameters + """ + + required_backends = _required_backends + + tokenizer_filename = DEFAULT_TOKENIZER_FILE + tokenizer_config_filename = DEFAULT_TOKENIZER_CONFIG_FILE + token_ids_name = "token_ids" + + def __init__(self, config, tokenizer_file=None, **kwargs): + super().__init__(config, tokenizer_file=tokenizer_file, **kwargs) + +
    +[docs] + def build(self): + tokenizer = HFTokenizer( + models.BPE( + dropout=self.config.dropout, + unk_token=self.config.unk_token, + continuing_subword_prefix=self.config.continuing_subword_prefix, + end_of_word_suffix=self.config.end_of_word_suffix, + fuse_unk=self.config.fuse_unk, + ) + ) + tokenizer.decoder = decoders.ByteLevel() # noqa + tokenizer.pre_tokenizer = pre_tokenizers.ByteLevel(add_prefix_space=False) # noqa + tokenizer.decoder = decoders.ByteLevel() # noqa + tokenizer.post_processor = processors.ByteLevel(trim_offsets=False) # noqa + + return tokenizer
    + + +
    +[docs] + def train(self, files: List[str], **train_kwargs): + """Train the model using the given files""" + self.config.update(train_kwargs) + + trainer = trainers.BpeTrainer( + vocab_size=self.config.vocab_size, # noqa + min_frequency=self.config.min_frequency, # noqa + show_progress=self.config.show_progress, # noqa + special_tokens=self.config.special_tokens, # noqa + initial_alphabet=pre_tokenizers.ByteLevel.alphabet(), # noqa + ) + if isinstance(files, str): + files = [files] + self._tokenizer.train(files, trainer=trainer)
    + + +
    +[docs] + def train_from_iterator(self, dataset: List[str], **train_kwargs): + """Train the model using the given files""" + self.config.update(train_kwargs) + + trainer = trainers.BpeTrainer( + vocab_size=self.config.vocab_size, # noqa + min_frequency=self.config.min_frequency, # noqa + show_progress=self.config.show_progress, # noqa + special_tokens=self.config.special_tokens, # noqa + initial_alphabet=pre_tokenizers.ByteLevel.alphabet(), # noqa + ) + self._tokenizer.train_from_iterator(dataset, trainer=trainer, length=len(dataset))
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/tokenizers/sentencepiece_bpe.html b/_modules/hezar/preprocessors/tokenizers/sentencepiece_bpe.html new file mode 100644 index 00000000..f1d7f693 --- /dev/null +++ b/_modules/hezar/preprocessors/tokenizers/sentencepiece_bpe.html @@ -0,0 +1,621 @@ + + + + + + + + hezar.preprocessors.tokenizers.sentencepiece_bpe - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.tokenizers.sentencepiece_bpe

    +from dataclasses import dataclass, field
    +from typing import List
    +
    +from ...constants import DEFAULT_TOKENIZER_CONFIG_FILE, DEFAULT_TOKENIZER_FILE, Backends
    +from ...registry import register_preprocessor
    +from ...utils import is_backend_available
    +from .tokenizer import Tokenizer, TokenizerConfig
    +
    +
    +if is_backend_available(Backends.TOKENIZERS):
    +    from tokenizers import Tokenizer as HFTokenizer
    +    from tokenizers import decoders, models, pre_tokenizers, trainers
    +
    +_required_backends = [
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@dataclass +class SentencePieceBPEConfig(TokenizerConfig): + name = "sentencepiece_bpe_tokenizer" + max_length: int = 512 + truncation_strategy: str = "longest_first" + truncation_direction: str = "right" + stride: int = 0 + padding_strategy: str = "longest" + padding_direction: str = "right" + bos_token: str = "<s>" + eos_token: str = "</s>" + unk_token: str = "<unk>" + sep_token: str = "<sep>" + pad_token: str = "<pad>" + cls_token: str = "<cls>" + mask_token: str = "<mask>" + additional_special_tokens: List[str] = None + pad_to_multiple_of: int = 0 + dropout: float = None + continuing_subword_prefix: str = "" + replacement: str = "_" + add_prefix_space: bool = True + end_of_word_suffix: str = "" + fuse_unk: bool = False + vocab_size: int = 30000 + min_frequency: int = 2 + limit_alphabet: int = 1000 + initial_alphabet: list = field(default_factory=list) + show_progress: bool = True
    + + + +
    +[docs] +@register_preprocessor("sentencepiece_bpe_tokenizer", config_class=SentencePieceBPEConfig) +class SentencePieceBPETokenizer(Tokenizer): + """ + A standard SentencePiece BPE tokenizer using 🤗HuggingFace Tokenizers + + Args: + config: Preprocessor config for the tokenizer + **kwargs: Extra/manual config parameters + """ + + required_backends = _required_backends + + tokenizer_filename = DEFAULT_TOKENIZER_FILE + tokenizer_config_filename = DEFAULT_TOKENIZER_CONFIG_FILE + token_ids_name = "token_ids" + + def __init__(self, config, tokenizer_file=None, **kwargs): + super().__init__(config, tokenizer_file=tokenizer_file, **kwargs) + +
    +[docs] + def build(self): + tokenizer = HFTokenizer( + models.BPE( + dropout=self.config.dropout, + unk_token=self.config.unk_token, + continuing_subword_prefix=self.config.continuing_subword_prefix, + end_of_word_suffix=self.config.end_of_word_suffix, + fuse_unk=self.config.fuse_unk, + ) + ) + tokenizer.normalizer = normalizers.NFKC() # noqa + tokenizer.pre_tokenizer = pre_tokenizers.Metaspace( # noqa + replacement=self.config.replacement, add_prefix_space=self.config.add_prefix_space + ) + tokenizer.decoder = decoders.Metaspace( # noqa + replacement=self.config.replacement, add_prefix_space=self.config.add_prefix_space + ) + + return tokenizer
    + + +
    +[docs] + def train(self, files: List[str], **train_kwargs): + """Train the model using the given files""" + self.config.update(train_kwargs) + + trainer = trainers.BpeTrainer( + vocab_size=self.config.vocab_size, # noqa + min_frequency=self.config.min_frequency, # noqa + show_progress=self.config.show_progress, # noqa + special_tokens=self.config.special_tokens, # noqa + initial_alphabet=self.config.initial_alphabet, # noqa + ) + if isinstance(files, str): + files = [files] + self._tokenizer.train(files, trainer=trainer)
    + + +
    +[docs] + def train_from_iterator(self, dataset: List[str], **train_kwargs): + """Train the model using the given files""" + self.config.update(train_kwargs) + + trainer = trainers.BpeTrainer( + vocab_size=self.config.vocab_size, # noqa + min_frequency=self.config.min_frequency, # noqa + show_progress=self.config.show_progress, # noqa + special_tokens=self.config.special_tokens, # noqa + initial_alphabet=self.config.initial_alphabet, # noqa + ) + self._tokenizer.train_from_iterator(dataset, trainer=trainer, length=len(dataset))
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/tokenizers/sentencepiece_unigram.html b/_modules/hezar/preprocessors/tokenizers/sentencepiece_unigram.html new file mode 100644 index 00000000..df0aadae --- /dev/null +++ b/_modules/hezar/preprocessors/tokenizers/sentencepiece_unigram.html @@ -0,0 +1,619 @@ + + + + + + + + hezar.preprocessors.tokenizers.sentencepiece_unigram - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.tokenizers.sentencepiece_unigram

    +from dataclasses import dataclass, field
    +from typing import List
    +
    +from ...constants import DEFAULT_TOKENIZER_CONFIG_FILE, DEFAULT_TOKENIZER_FILE, Backends
    +from ...registry import register_preprocessor
    +from ...utils import is_backend_available
    +from .tokenizer import Tokenizer, TokenizerConfig
    +
    +
    +if is_backend_available(Backends.TOKENIZERS):
    +    from tokenizers import Tokenizer as HFTokenizer
    +    from tokenizers import decoders, models, pre_tokenizers, trainers
    +
    +_required_backends = [
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@dataclass +class SentencePieceUnigramConfig(TokenizerConfig): + name = "sentencepiece_unigram_tokenizer" + max_length: int = 512 + truncation_strategy: str = "longest_first" + truncation_direction: str = "right" + stride: int = 0 + padding_strategy: str = "longest" + padding_direction: str = "right" + bos_token: str = "<s>" + eos_token: str = "</s>" + unk_token: str = "<unk>" + sep_token: str = "<sep>" + pad_token: str = "<pad>" + cls_token: str = "<cls>" + mask_token: str = "<mask>" + additional_special_tokens: List[str] = None + pad_to_multiple_of: int = 0 + dropout: float = None + continuing_subword_prefix: str = "" + replacement: str = "_" + add_prefix_space: bool = True + end_of_word_suffix: str = "" + fuse_unk: bool = False + vocab_size: int = 8000 + min_frequency: int = 2 + limit_alphabet: int = 1000 + initial_alphabet: list = field(default_factory=list) + show_progress: bool = True
    + + + +
    +[docs] +@register_preprocessor("sentencepiece_unigram_tokenizer", config_class=SentencePieceUnigramConfig) +class SentencePieceUnigramTokenizer(Tokenizer): + """ + A standard SentencePiece Unigram tokenizer using 🤗HuggingFace Tokenizers + + Args: + config: Preprocessor config for the tokenizer + **kwargs: Extra/manual config parameters + """ + + required_backends = _required_backends + + tokenizer_filename = DEFAULT_TOKENIZER_FILE + tokenizer_config_filename = DEFAULT_TOKENIZER_CONFIG_FILE + token_ids_name = "token_ids" + + def __init__(self, config, tokenizer_file=None, **kwargs): + super().__init__(config, tokenizer_file=tokenizer_file, **kwargs) + +
    +[docs] + def build(self): + tokenizer = HFTokenizer(models.Unigram()) # noqa + tokenizer.normalizer = normalizers.Sequence( # noqa + [ # noqa + normalizers.Nmt(), # noqa + normalizers.NFKC(), # noqa + normalizers.Replace(Regex(" {2,}"), " "), # noqa + ] # noqa + ) # noqa + tokenizer.pre_tokenizer = pre_tokenizers.Metaspace( # noqa + replacement=self.config.replacement, add_prefix_space=self.config.add_prefix_space + ) + tokenizer.decoder = decoders.Metaspace( # noqa + replacement=self.config.replacement, add_prefix_space=self.config.add_prefix_space + ) + + return tokenizer
    + + +
    +[docs] + def train(self, files: List[str], **train_kwargs): + """Train the model using the given files""" + self.config.update(train_kwargs) + + trainer = trainers.UnigramTrainer( + vocab_size=self.config.vocab_size, # noqa + special_tokens=self.config.special_tokens, # noqa + show_progress=self.config.show_progress, # noqa + initial_alphabet=self.config.initial_alphabet, # noqa + unk_token=self.config.unk_token, # noqa + ) + if isinstance(files, str): + files = [files] + self._tokenizer.train(files, trainer=trainer)
    + + +
    +[docs] + def train_from_iterator(self, dataset: List[str], **train_kwargs): + """Train the model using the given files""" + self.config.update(train_kwargs) + + trainer = trainers.UnigramTrainer( + vocab_size=self.config.vocab_size, # noqa + special_tokens=self.config.special_tokens, # noqa + show_progress=self.config.show_progress, # noqa + initial_alphabet=self.config.initial_alphabet, # noqa + unk_token=self.config.unk_token, # noqa + ) + self._tokenizer.train_from_iterator(dataset, trainer=trainer, length=len(dataset))
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/tokenizers/tokenizer.html b/_modules/hezar/preprocessors/tokenizers/tokenizer.html new file mode 100644 index 00000000..85172023 --- /dev/null +++ b/_modules/hezar/preprocessors/tokenizers/tokenizer.html @@ -0,0 +1,1338 @@ + + + + + + + + hezar.preprocessors.tokenizers.tokenizer - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.tokenizers.tokenizer

    +from __future__ import annotations
    +
    +import os
    +import tempfile
    +from collections import defaultdict
    +from dataclasses import dataclass
    +from typing import Dict, List, Mapping, Optional, Tuple
    +
    +import numpy as np
    +import torch
    +from huggingface_hub import create_repo, hf_hub_download, upload_file
    +
    +from ...builders import build_preprocessor
    +from ...configs import PreprocessorConfig
    +from ...constants import (
    +    DEFAULT_TOKENIZER_CONFIG_FILE,
    +    DEFAULT_TOKENIZER_FILE,
    +    HEZAR_CACHE_DIR,
    +    Backends,
    +    PaddingType,
    +)
    +from ...utils import Logger, convert_batch_dict_dtype, is_backend_available, pad_batch_items
    +from ..preprocessor import Preprocessor
    +
    +
    +if is_backend_available(Backends.TOKENIZERS):
    +    from tokenizers import Tokenizer as HFTokenizer
    +    from tokenizers.decoders import Decoder
    +    from tokenizers.models import Model
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +@dataclass +class TokenizerConfig(PreprocessorConfig): + """ + Configuration for the Tokenizer. + + Args: + max_length (int): Maximum length of the tokenized sequences. + truncation_strategy (str): Truncation strategy for tokenization. + truncation_direction (str): Truncation direction for tokenization. + stride (int): Stride for tokenization. + padding_strategy (str): Padding strategy for tokenization. + padding_direction (str): Padding direction for tokenization. + pad_to_multiple_of (int): Pad to a multiple of this value. + pad_token_type_id (int): ID of the padding token type. + bos_token (str): Beginning of sequence token. + eos_token (str): End of sequence token. + unk_token (str): Unknown token. + sep_token (str): Separator token. + pad_token (str): Padding token. + cls_token (str): Classification token. + mask_token (str): Mask token. + additional_special_tokens (List[str]): Additional special tokens. + """ + + name = "tokenizer" + max_length: int = None + truncation_strategy: str = None + truncation_direction: str = None + stride: int = None + padding_strategy: str = None + padding_direction: str = None + pad_to_multiple_of: int = None + pad_token_type_id: int = 0 + bos_token: str = None + eos_token: str = None + unk_token: str = None + sep_token: str = None + pad_token: str = None + cls_token: str = None + mask_token: str = None + additional_special_tokens: List[str] = None
    + + + +
    +[docs] +class Tokenizer(Preprocessor): + """ + Base tokenizer class. Mostly copied from :class:`~tokenizers.implementations.BaseTokenizer`. + + Args: + config: A TokenizerConfig instance. + tokenizer_file (str): A tokenizer.json file to load the whole tokenizer from. + **kwargs: Extra config parameters that merge into the main config. + """ + + required_backends: List[str | Backends] = [] + + tokenizer_filename = DEFAULT_TOKENIZER_FILE + tokenizer_config_filename = DEFAULT_TOKENIZER_CONFIG_FILE + token_ids_name = "token_ids" + uncastable_keys = ["word_ids", "tokens", "offsets_mapping"] + + def __init__(self, config: TokenizerConfig, tokenizer_file=None, **kwargs): + super().__init__(config, **kwargs) + self._tokenizer = self.from_file(tokenizer_file) if tokenizer_file is not None else self.build() + self.special_tokens = self._get_all_special_tokens() + + def _get_all_special_tokens(self): + """ + Get a list of all special tokens. + + Returns: + List[str]: List of special tokens. + """ + _special_tokens = [ + self.config.bos_token, + self.config.eos_token, + self.config.unk_token, + self.config.sep_token, + self.config.pad_token, + self.config.cls_token, + self.config.mask_token, + ] + _special_tokens = [token for token in _special_tokens if token in self.vocab] + + if self.config.additional_special_tokens is not None: + for token in self.config.additional_special_tokens: + if token not in _special_tokens: + _special_tokens.append(token) + + valid_tokens = [token for token in _special_tokens if token is not None] + return valid_tokens + +
    +[docs] + @staticmethod + def from_file(path): + """ + Create a tokenizer from a file. + + Args: + path (str): Path to the tokenizer file. + + Returns: + HFTokenizer: The created tokenizer. + """ + tokenizer = HFTokenizer.from_file(path) + return tokenizer
    + + +
    +[docs] + def build(self): + """ + Build the tokenizer. + + Returns: + HFTokenizer: The built tokenizer. + """ + raise NotImplementedError
    + + +
    +[docs] + def encode(self, inputs, is_pretokenized: bool = False, add_special_tokens: bool = True, **kwargs): + """ + Tokenize a list of inputs (could be raw or tokenized inputs). + + Args: + inputs: List of inputs. + is_pretokenized: Whether the inputs are already tokenized. + add_special_tokens: Whether to add special tokens to the inputs. Defaults to True. + **kwargs: Additional keyword arguments. + + Returns: + List[Dict]: List of dictionaries containing tokenized inputs. + """ + if isinstance(inputs, str): + inputs = [inputs] + elif isinstance(inputs, list) and is_pretokenized: + if isinstance(inputs[0], str): + inputs = [inputs] + return self._tokenizer.encode_batch(inputs, is_pretokenized, add_special_tokens)
    + + +
    +[docs] + def decode(self, ids: List[int], skip_special_tokens: bool = True, **kwargs): + """ + Decode a list of token IDs. + + Args: + ids (List[int]): List of token IDs. + skip_special_tokens (bool): Whether to skip special tokens during decoding. + **kwargs: Additional keyword arguments. + + Returns: + List[str]: List of decoded strings. + """ + if isinstance(ids[0], int): + ids = [ids] + if isinstance(ids, torch.Tensor): + ids = ids.cpu().numpy().tolist() + if isinstance(ids, np.ndarray): + ids = ids.tolist() + return self._tokenizer.decode_batch(ids, skip_special_tokens=skip_special_tokens)
    + + +
    +[docs] + def pad_encoded_batch( + self, + inputs, + padding: str | PaddingType = None, + max_length: Optional[int] = None, + truncation: bool = True, + return_tensors: Optional[str] = None, + include_keys: Optional[List[str]] = None, + exclude_keys: List = None, + ): + """ + Pad a batch of encoded inputs. + + Args: + inputs: Input batch of encoded tokens. + padding (str | PaddingType): Padding type. + max_length (Optional[int]): Max input length (only if padding is set to "max_length"). + truncation (bool): Whether to allow truncation. + return_tensors (Optional[str]): The type of tensors to return. + include_keys: (Optional[List[str]]): Only pad these given set of keys + exclude_keys (List): A list of keys to exclude when padding. + + Returns: + Dict: Padded inputs. + """ + if isinstance(inputs, (list, tuple)) and isinstance(inputs[0], Mapping): + inputs = {key: [example[key] for example in inputs] for key in inputs[0].keys()} + + exclude_keys = exclude_keys or [] + exclude_keys += self.uncastable_keys # avoid possible errors + inputs = convert_batch_dict_dtype(inputs, dtype="list", skip_keys=exclude_keys) + + include_keys = include_keys or list(inputs.keys()) + + for key, batch in inputs.items(): + if key in exclude_keys: + continue + if key in include_keys: + pad_id = 0 if key == "attention_mask" else self.pad_token_id + padded_ids = pad_batch_items( + inputs[key], + padding_type=padding, + padding_side=self.config.padding_direction, + pad_id=pad_id, + max_length=max_length, truncation=truncation, + ) + inputs[key] = padded_ids + + inputs = convert_batch_dict_dtype(inputs, dtype=return_tensors, skip_keys=exclude_keys) + + return inputs
    + + + def __call__( + self, + inputs: List[str] | List[Tuple[str, str]], + device: str | torch.device = None, + add_special_tokens: bool = True, + padding_strategy=None, + truncation_strategy=None, + max_length: int = None, + return_tensors: str = "list", + stride: int = 0, + is_split_into_words: bool = False, + pad_to_multiple_of: int = None, + return_tokens: bool = None, + return_token_type_ids: bool = None, + return_attention_mask: bool = True, + return_overflowing_tokens: bool = False, + return_special_tokens_mask: bool = False, + return_offsets_mapping: bool = False, + return_length: bool = False, + return_word_ids: bool = False, + verbose: bool = True, + **kwargs, + ): + """ + Tokenize a batch of string inputs and return the relevant properties e.g, token ids, attention mask, etc. + + Args: + inputs: A list of string inputs to tokenize + add_special_tokens: Whether to add special tokens or not + padding_strategy: Determines how to pad inputs + truncation_strategy: Determines how to truncate inputs + max_length: Max input length of the sequences + return_tensors: The type of the returning tensors in the batch e.g, pt, np, list + stride: Stride level + is_split_into_words: Are inputs pre-tokenized or raw string inputs + pad_to_multiple_of: Pad inputs by a factor of this value + return_tokens: Whether to return tokens lists + return_token_type_ids: Whether to return token type ids + return_attention_mask: Whether to return attention masks + return_overflowing_tokens: Whether to return overflowing tokens + return_special_tokens_mask: Whether to return special tokens mask + return_offsets_mapping: Whether to return offsets + return_length: Whether to return input lengths + **kwargs: Extra arguments reside here and therefore ignored + + Returns: + A dictionary of encoded inputs like + {"token_ids": [batch_size x input_len], "attention_mask": [batch_size x input_len], ...} + """ + if isinstance(inputs, list) and not len(inputs): + raise ValueError("Tokenizer cannot process an empty list!") + + if isinstance(inputs, str): + inputs = [inputs] + + padding_strategy = padding_strategy or self.config.padding_strategy + truncation_strategy = truncation_strategy or self.config.truncation_strategy + max_length = max_length or self.config.max_length + pad_to_multiple_of = pad_to_multiple_of or self.config.pad_to_multiple_of + + self.set_truncation_and_padding( + padding_strategy=padding_strategy, + truncation_strategy=truncation_strategy, + padding_side=self.config.padding_direction, + truncation_side=self.config.truncation_direction, + max_length=max_length, + stride=self.config.stride, + pad_to_multiple_of=pad_to_multiple_of, + ) + encodings = self.encode( + inputs, + add_special_tokens=add_special_tokens, + is_pretokenized=is_split_into_words, + ) + encodings_dict = [ + self._convert_encodings( + encoding=encoding, + return_tokens=return_tokens, + return_token_type_ids=return_token_type_ids, + return_attention_mask=return_attention_mask, + return_overflowing_tokens=return_overflowing_tokens, + return_special_tokens_mask=return_special_tokens_mask, + return_offsets_mapping=return_offsets_mapping, + return_length=return_length, + return_word_ids=return_word_ids, + ) + for encoding in encodings + ] + # Permute output dict from [batch_0: Dict[key, value], ...] to Dict[key, [batch_0, batch_1, ...], ...] + sanitized_outputs = {} + for key in encodings_dict[0].keys(): + stack = [e for item in encodings_dict for e in item[key]] + sanitized_outputs[key] = stack + + # If returning overflowing tokens, we need to return a mapping + # from the batch idx to the original sample + if return_overflowing_tokens: + overflow_to_sample_mapping = [] + for i, encodings_ in enumerate(encodings_dict): + overflow_to_sample_mapping += [i] * len(encodings_["input_ids"]) + sanitized_outputs["overflow_to_sample_mapping"] = overflow_to_sample_mapping + + if return_tensors == "list" or return_tensors is None: + sanitized_outputs = { + key: value[0] if len(value) > 0 and isinstance(value[0], list) else value + for key, value in sanitized_outputs.items() + } + + outputs = convert_batch_dict_dtype(sanitized_outputs, dtype=return_tensors, skip_keys=self.uncastable_keys) + if device and return_tensors == "pt": + outputs = {k: v.to(device) if isinstance(v, torch.Tensor) else v for k, v in outputs.items()} + + return outputs + +
    +[docs] + def set_truncation_and_padding( + self, + padding_strategy=None, + truncation_strategy=None, + padding_side=None, + truncation_side=None, + max_length: int = None, + stride: int = None, + pad_to_multiple_of: int = None, + ): + # Set truncation and padding on the backend tokenizer + if truncation_strategy == "no_truncation": + if self.truncation is not None: + self.no_truncation() + else: + target = { + "max_length": max_length, + "stride": stride, + "strategy": truncation_strategy, + "direction": truncation_side, + } + if self.truncation is None: + current = None + else: + current = {k: self.truncation.get(k, None) for k in target} + + if current != target: + self.enable_truncation(**target) + + if padding_strategy == "no_padding": + if self.padding is not None: + self.no_padding() + else: + length = max_length if self.config.padding_strategy == "max_length" else None + target = { + "length": length, + "direction": padding_side, + "pad_id": self.token_to_id(self.pad_token), + "pad_token": self.pad_token, + "pad_type_id": self.config.pad_token_type_id, + "pad_to_multiple_of": pad_to_multiple_of, + } + if self.padding != target: + self.enable_padding(**target)
    + + + def _convert_encodings( + self, + encoding, + return_tokens: bool = None, + return_token_type_ids: bool = None, + return_attention_mask: bool = None, + return_overflowing_tokens: bool = False, + return_special_tokens_mask: bool = False, + return_offsets_mapping: bool = False, + return_length: bool = False, + return_word_ids: bool = False, + ): + if return_overflowing_tokens and encoding.overflowing is not None: + encodings = [encoding] + encoding.overflowing + else: + encodings = [encoding] + + encoding_dict = defaultdict(list) + for e in encodings: + encoding_dict[self.token_ids_name].append(e.ids) + + if return_token_type_ids: + encoding_dict["token_type_ids"].append(e.type_ids) + if return_attention_mask: + encoding_dict["attention_mask"].append(e.attention_mask) + if return_special_tokens_mask: + encoding_dict["special_tokens_mask"].append(e.special_tokens_mask) + if return_offsets_mapping: + encoding_dict["offsets_mapping"].append(e.offsets) + if return_length: + encoding_dict["length"].append(len(e.ids)) + if return_tokens: + text = self._tokenizer.decode(e.ids) + tokens = self.get_tokens_from_offsets(text, e.ids, e.offsets) + encoding_dict["tokens"].append(tokens) + if return_word_ids: + encoding_dict["word_ids"].append(e.word_ids) + + return encoding_dict + +
    +[docs] + def convert_tokens_to_ids(self, tokens: str | List[str]) -> int | List[int]: + if isinstance(tokens, str): + tokens = [tokens] + + return [self._tokenizer.token_to_id(token) for token in tokens]
    + + +
    +[docs] + def convert_ids_to_tokens(self, ids: int | List[int], skip_special_tokens: bool = False): + if isinstance(ids, int): + ids = [ids] + tokens = [] + for index in ids: + index = int(index) + if skip_special_tokens and index in self.special_ids: + continue + tokens.append(self._tokenizer.id_to_token(index)) + return tokens
    + + +
    +[docs] + def num_special_tokens_to_add(self, is_pair: bool) -> int: + return self._tokenizer.num_special_tokens_to_add(is_pair)
    + + +
    +[docs] + def get_vocab(self, with_added_tokens: bool = True) -> Dict[str, int]: + return self._tokenizer.get_vocab(with_added_tokens=with_added_tokens)
    + + +
    +[docs] + def get_vocab_size(self, with_added_tokens: bool = True) -> int: + return self._tokenizer.get_vocab_size(with_added_tokens=with_added_tokens)
    + + +
    +[docs] + def enable_padding( + self, + direction: str = "right", + pad_to_multiple_of: int = None, + pad_id: int = 0, + pad_type_id: int = 0, + pad_token: str = "[PAD]", + length: int = None, + ): + return self._tokenizer.enable_padding( + direction=direction, + pad_to_multiple_of=pad_to_multiple_of, + pad_id=pad_id, + pad_type_id=pad_type_id, + pad_token=pad_token, + length=length, + )
    + + +
    +[docs] + def no_padding(self): + return self._tokenizer.no_padding()
    + + +
    +[docs] + def enable_truncation(self, max_length, stride=0, strategy="longest_first", direction="right"): + return self._tokenizer.enable_truncation(max_length, stride=stride, strategy=strategy, direction=direction)
    + + +
    +[docs] + def no_truncation(self): + return self._tokenizer.no_truncation()
    + + +
    +[docs] + def add_tokens(self, tokens) -> int: + return self._tokenizer.add_tokens(tokens)
    + + +
    +[docs] + def add_special_tokens(self, special_tokens) -> int: + return self._tokenizer.add_special_tokens(special_tokens)
    + + +
    +[docs] + def token_to_id(self, token: str) -> int: + return self._tokenizer.token_to_id(token)
    + + +
    +[docs] + def id_to_token(self, id: int) -> str: + return self._tokenizer.id_to_token(id)
    + + +
    +[docs] + def get_added_vocab(self) -> Dict[str, int]: + """ + Returns the added tokens in the vocabulary as a dictionary of token to index. + + Returns: + `Dict[str, int]`: The added tokens. + """ + base_vocab = self._tokenizer.get_vocab(with_added_tokens=False) + full_vocab = self._tokenizer.get_vocab(with_added_tokens=True) + added_vocab = {token: index for token, index in full_vocab.items() if token not in base_vocab} + return added_vocab
    + + + def __len__(self) -> int: + """ + Size of the full vocabulary with the added tokens. + """ + return self._tokenizer.get_vocab_size(with_added_tokens=True) + +
    +[docs] + def get_tokens_from_offsets( + self, + text: str | List[str], + ids: List[int], + offsets_mapping: List[Tuple[int, int]], + ): + """ + Extract human-readable tokens using the original text and offsets mapping + Args: + text: Raw string text + ids: Token ids + offsets_mapping: A list of tuples representing offsets + + Returns: + A list of tokens + """ + if not isinstance(text, str): + raise ValueError(f"Expected str type for `text`, got `{type(text)}({text})`") + if isinstance(offsets_mapping, list) and not isinstance(offsets_mapping[0], Tuple): + raise ValueError(f"Expected a list of tuples for `offsets_mapping`, got List[{type(offsets_mapping[0])}]") + tokens = [] + for offset in offsets_mapping: + offset_start, offset_end = offset + tokens.append(text[offset_start:offset_end]) + for i, token in enumerate(tokens): + if ids[i] in self.special_ids: + tokens[i] = self._tokenizer.id_to_token(ids[i]) + return tokens
    + + +
    +[docs] + @classmethod + def load( + cls, + hub_or_local_path, + subfolder=None, + config_filename=None, + tokenizer_filename=None, + cache_dir=None, + **kwargs, + ) -> "Tokenizer": + """ + Load a tokenizer from a specified path or Hub repository. + + Args: + cls: Class reference. + hub_or_local_path: Path or Hub repository ID. + subfolder: Subfolder containing tokenizer files. + config_filename: Tokenizer config filename. + tokenizer_filename: Tokenizer filename. + cache_dir: Path to cache directory + **kwargs: Additional arguments. + + Returns: + Tokenizer: Loaded tokenizer. + + """ + tokenizer_filename = tokenizer_filename or cls.tokenizer_filename + config_filename = config_filename or cls.tokenizer_config_filename + subfolder = subfolder or cls.preprocessor_subfolder + cache_dir = cache_dir or HEZAR_CACHE_DIR + + config = TokenizerConfig.load( + hub_or_local_path, + filename=config_filename, + subfolder=subfolder, + cache_dir=cache_dir, + ) + + if os.path.isdir(hub_or_local_path): + tokenizer_path = os.path.join(hub_or_local_path, subfolder, tokenizer_filename) + else: + tokenizer_path = hf_hub_download( + hub_or_local_path, + filename=tokenizer_filename, + subfolder=subfolder, + cache_dir=cache_dir, + resume_download=True, + ) + tokenizer = build_preprocessor(config.name, config, tokenizer_file=tokenizer_path, **kwargs) + return tokenizer
    + + +
    +[docs] + def save(self, path, save_config=True, pretty=True): + """ + Save the tokenizer and its configuration. + + Args: + path (str): Path to save the tokenizer. + save_config (bool): Whether to save the configuration. + pretty (bool): Whether to format the saved JSON file with indentation. + + """ + os.makedirs(path, exist_ok=True) + # save config + if save_config: + self.config.vocab_size = self.get_vocab_size(with_added_tokens=True) + self.config.save(path, filename=self.tokenizer_config_filename, subfolder=self.preprocessor_subfolder) + # save tokenizer.json + save_path = os.path.join(path, self.preprocessor_subfolder, self.tokenizer_filename) + self._tokenizer.save(save_path, pretty=pretty)
    + + +
    +[docs] + def push_to_hub( + self, + repo_id, + commit_message=None, + subfolder=None, + tokenizer_filename=None, + config_filename=None, + private=False, + ): + """ + Push tokenizer and config to the Hub + + Args: + repo_id: The path (id or repo name) on the hub + commit_message: Commit message for this push + subfolder: subfolder to save the files + tokenizer_filename: tokenizer filename + config_filename: tokenizer config filename + private: If the repo should be private (ignored if the repo exists) + """ + subfolder = subfolder or self.preprocessor_subfolder + tokenizer_filename = tokenizer_filename or self.tokenizer_filename + config_filename = config_filename or self.tokenizer_config_filename + + # create remote repo + create_repo(repo_id, exist_ok=True, private=private) + # save to tmp and prepare for push + cache_path = tempfile.mkdtemp() + # save tokenizer.json + tokenizer_save_path = os.path.join(cache_path, subfolder, tokenizer_filename) + self.save(cache_path, pretty=True) + + if commit_message is None: + commit_message = "Hezar: Upload tokenizer and config" + + # upload config + self.config.push_to_hub( + repo_id=repo_id, + filename=config_filename, + subfolder=subfolder, + commit_message=commit_message, + ) + # upload tokenizer + upload_file( + repo_id=repo_id, + path_or_fileobj=tokenizer_save_path, + repo_type="model", + path_in_repo=f"{subfolder}/{tokenizer_filename}", + commit_message=commit_message, + ) + logger.log_upload_success( + name=f"{self.__class__.__name__}(name={self.config.name})", + target_path=os.path.join(repo_id, subfolder, tokenizer_filename), + )
    + + + @property + def model(self) -> "Model": + return self._tokenizer.model + + @model.setter + def model(self, model: "Model"): + self._tokenizer.model = model # noqa + + @property + def decoder(self) -> "Decoder": + return self._tokenizer.decoder + + @decoder.setter + def decoder(self, decoder: "Decoder"): + self._tokenizer.decoder = decoder # noqa + + @property + def padding(self): + return self._tokenizer.padding + + @property + def truncation(self) -> dict: + return self._tokenizer.truncation + + @property + def vocab(self): + return self._tokenizer.get_vocab(with_added_tokens=True) + + @property + def vocab_size(self) -> int: + """ + `int`: Size of the base vocabulary (without the added tokens). + """ + return self._tokenizer.get_vocab_size(with_added_tokens=False) + + @property + def special_ids(self): + return [self.token_to_id(t) for t in self.special_tokens] + + @property + def pad_token(self): + return self.config.pad_token + + @property + def bos_token(self): + return self.config.bos_token + + @property + def eos_token(self): + return self.config.eos_token + + @property + def unk_token(self): + return self.config.unk_token + + @property + def mask_token(self): + return self.config.mask_token + + @property + def cls_token(self): + return self.config.cls_token + + @property + def sep_token(self): + return self.config.sep_token + + @property + def pad_token_id(self): + return self.token_to_id(self.config.pad_token) + + @property + def bos_token_id(self): + return self.token_to_id(self.config.bos_token) + + @property + def eos_token_id(self): + return self.token_to_id(self.config.eos_token) + + @property + def unk_token_id(self): + return self.token_to_id(self.config.unk_token) + + @property + def mask_token_id(self): + return self.token_to_id(self.config.mask_token) + + @property + def cls_token_id(self): + return self.token_to_id(self.config.cls_token) + + @property + def sep_token_id(self): + return self.token_to_id(self.config.sep_token)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/preprocessors/tokenizers/wordpiece.html b/_modules/hezar/preprocessors/tokenizers/wordpiece.html new file mode 100644 index 00000000..466d1a84 --- /dev/null +++ b/_modules/hezar/preprocessors/tokenizers/wordpiece.html @@ -0,0 +1,604 @@ + + + + + + + + hezar.preprocessors.tokenizers.wordpiece - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.preprocessors.tokenizers.wordpiece

    +from dataclasses import dataclass, field
    +from typing import List
    +
    +from ...constants import DEFAULT_TOKENIZER_CONFIG_FILE, DEFAULT_TOKENIZER_FILE, Backends
    +from ...registry import register_preprocessor
    +from ...utils import is_backend_available
    +from .tokenizer import Tokenizer, TokenizerConfig
    +
    +
    +if is_backend_available(Backends.TOKENIZERS):
    +    from tokenizers import Tokenizer as HFTokenizer
    +    from tokenizers import decoders, models, trainers
    +
    +_required_backends = [
    +    Backends.TOKENIZERS,
    +]
    +
    +
    +
    +[docs] +@dataclass +class WordPieceConfig(TokenizerConfig): + name = "wordpiece_tokenizer" + max_length: int = 512 + truncation_strategy: str = "longest_first" + truncation_direction: str = "right" + stride: int = 0 + padding_strategy: str = "longest" + padding_direction: str = "right" + pad_to_multiple_of: int = 0 + pad_token: str = "[PAD]" + unk_token: str = "[UNK]" + sep_token: str = "[SEP]" + cls_token: str = "[CLS]" + mask_token: str = "[MASK]" + pad_token_type_id: int = 0 + additional_special_tokens: List[str] = None + wordpieces_prefix: str = "##" + vocab_size: int = 30000 + min_frequency: int = 2 + limit_alphabet: int = 1000 + initial_alphabet: list = field(default_factory=list) + show_progress: bool = True
    + + + +
    +[docs] +@register_preprocessor("wordpiece_tokenizer", config_class=WordPieceConfig) +class WordPieceTokenizer(Tokenizer): + """ + A standard WordPiece tokenizer using 🤗HuggingFace Tokenizers + + Args: + config: Preprocessor config for the tokenizer + **kwargs: Extra/manual config parameters + """ + + required_backends = _required_backends + + tokenizer_filename = DEFAULT_TOKENIZER_FILE + tokenizer_config_filename = DEFAULT_TOKENIZER_CONFIG_FILE + token_ids_name = "token_ids" + + def __init__(self, config, tokenizer_file=None, **kwargs): + super().__init__(config, tokenizer_file=tokenizer_file, **kwargs) + +
    +[docs] + def build(self): + tokenizer = HFTokenizer(models.WordPiece(unk_token=self.config.unk_token)) # noqa + tokenizer.decoder = decoders.WordPiece(self.config.wordpieces_prefix) # noqa + return tokenizer
    + + +
    +[docs] + def train(self, files: List[str], **train_kwargs): + """Train the model using the given files""" + self.config.update(train_kwargs) + + trainer = trainers.WordPieceTrainer( + vocab_size=self.config.vocab_size, + min_frequency=self.config.min_frequency, + limit_alphabet=self.config.limit_alphabet, + initial_alphabet=self.config.initial_alphabet, + special_tokens=self.config.special_tokens, + show_progress=self.config.show_progress, + continuing_subword_prefix=self.config.wordpieces_prefix, + ) + if isinstance(files, str): + files = [files] + self._tokenizer.train(files, trainer=trainer)
    + + +
    +[docs] + def train_from_iterator(self, dataset: List[str], **train_kwargs): + """Train the model using the given files""" + self.config.update(train_kwargs) + + trainer = trainers.WordPieceTrainer( + vocab_size=self.config.vocab_size, + min_frequency=self.config.min_frequency, + limit_alphabet=self.config.limit_alphabet, + initial_alphabet=self.config.initial_alphabet, + special_tokens=self.config.special_tokens, + show_progress=self.config.show_progress, + continuing_subword_prefix=self.config.wordpieces_prefix, + ) + self._tokenizer.train_from_iterator(dataset, trainer=trainer, length=len(dataset))
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/registry.html b/_modules/hezar/registry.html new file mode 100644 index 00000000..6777f732 --- /dev/null +++ b/_modules/hezar/registry.html @@ -0,0 +1,699 @@ + + + + + + + + hezar.registry - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.registry

    +r"""
    +Hezar uses a registry system in a way that for any core module like model, dataset, etc. there is an entry in its
    +specific registry. These registries are simple python dictionaries that map a module's name to its class and its config
    +class. These registries are initialized here and filled automatically when you import hezar or a registry itself.
    +
    +Examples:
    +    >>> # read models registry
    +    >>> from hezar.registry import models_registry
    +    >>> print(models_registry)
    +    {'distilbert_lm': {'module_class': <class 'hezar.models.language_modeling.distilbert.distilbert_lm.DistilBertLM'>,
    +    'config_class': <class 'hezar.models.language_modeling.distilbert.distilbert_lm_config.DistilBertLMConfig'>},
    +    'description': 'Optional model description here...'}
    +
    +    >>> # add a model class to models_registry
    +    >>> from hezar.models import Model, register_model
    +    >>> @register_model(name="my_awesome_model", config_class=MyAwesomeModelConfig, description="My Awesome Model!")
    +    >>> class MyAwesomeModel(Model):
    +    ...    def __init__(config: MyAwesomeModelConfig):
    +    ...        ...
    +
    +Keep in mind that registries usually don't need to be used directly. There is a bunch of functions to build modules
    +using a module's registry name in `hezar.builders` module. See the file `builders.py` for more info.
    +
    +Note: In case of adding a new registry container, make sure to add to `__all__` below!
    +"""
    +
    +from dataclasses import dataclass
    +from typing import TYPE_CHECKING, Dict, Optional, Type
    +
    +
    +if TYPE_CHECKING:
    +    from .configs import (
    +        Config,
    +        DatasetConfig,
    +        EmbeddingConfig,
    +        MetricConfig,
    +        ModelConfig,
    +        PreprocessorConfig,
    +    )
    +
    +from .utils import Logger
    +
    +
    +__all__ = [
    +    "register_model",
    +    "register_preprocessor",
    +    "register_dataset",
    +    "register_embedding",
    +    "register_metric",
    +    "Registry",
    +    "models_registry",
    +    "preprocessors_registry",
    +    "datasets_registry",
    +    "embeddings_registry",
    +    "metrics_registry",
    +]
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +@dataclass +class Registry: + module_class: type + config_class: type = None + description: Optional[str] = None
    + + + +models_registry: Dict[str, Registry] = {} +preprocessors_registry: Dict[str, Registry] = {} +datasets_registry: Dict[str, Registry] = {} +embeddings_registry: Dict[str, Registry] = {} +metrics_registry: Dict[str, Registry] = {} + + +def _register_module( + cls: Type, + registry: Dict[str, Registry], + module_name: str, + config_class: Type["Config"], + description: str = None +): + """ + Add module to the registry. + + Args: + cls: The module class + registry: Module's registry container + module_name: Module's registry name (key) + config_class: Module's config class + description: Optional description for the module + """ + if module_name in registry: + logger.warning(f"`{module_name}` is already registered. Overwriting...") + + if config_class.name != module_name: + raise ValueError( + f"Module's registry name and `config.name` are not compatible for `{cls.__name__}`\n" + f"Registry name: {module_name}\n" + f"{config_class.__name__}.name: {config_class.name}" + ) + registry[module_name] = Registry(module_class=cls, config_class=config_class, description=description) + + +
    +[docs] +def register_model(model_name: str, config_class: Type["ModelConfig"], description: str = None): + """ + A class decorator that adds the model class and the config class to the `models_registry` + + Args: + model_name: Model's registry name e.g, `bert_sequence_labeling` + config_class: Model's config class e.g, `BertSequenceLabelingConfig`. This parameter must be the config class + itself not a config instance! + description: Optional model description + """ + + def register(cls): + _register_module(cls, models_registry, model_name, config_class, description) + return cls + + return register
    + + + +
    +[docs] +def register_dataset(dataset_name: str, config_class: Type["DatasetConfig"], description: str = None): + """ + A class decorator that adds the dataset class and the config class to the `datasets_registry` + + Args: + dataset_name: Dataset's registry name e.g, `text_classification`. + config_class: Dataset's config class e.g, `TextClassificationDatasetConfig`. This parameter must be the config + class itself not a config instance! + description: Optional dataset description + """ + + def register(cls): + _register_module(cls, datasets_registry, dataset_name, config_class, description) + return cls + + return register
    + + + +
    +[docs] +def register_preprocessor(preprocessor_name: str, config_class: Type["PreprocessorConfig"], description: str = None): + """ + A class decorator that adds the preprocessor class and the config class to the `preprocessors_registry` + + Args: + preprocessor_name: Preprocessor's registry name e.g, `bpe_tokenizer`. + config_class: Preprocessor's config class e.g, BPEConfig. This parameter must be the config + class itself not a config instance! + description: Optional preprocessor description + """ + + def register(cls): + _register_module(cls, preprocessors_registry, preprocessor_name, config_class, description) + return cls + + return register
    + + + +
    +[docs] +def register_embedding(embedding_name: str, config_class: Type["EmbeddingConfig"], description: str = None): + """ + A class decorator that adds the embedding class and the config class to the `embeddings_registry` + + Args: + embedding_name: Embedding's registry name e.g, `word2vec_cbow`. + config_class: Embedding's config class e.g, Word2VecCBOWConfig. This parameter must be the config + class itself not a config instance! + description: Optional embedding description + """ + + def register(cls): + _register_module(cls, embeddings_registry, embedding_name, config_class, description) + return cls + + return register
    + + + +
    +[docs] +def register_metric(metric_name: str, config_class: Type["MetricConfig"], description: str = None): + """ + A class decorator that adds the metric class and the config class to the `metrics_registry` + + Args: + metric_name: Metric registry name e.g, `f1` + config_class: Metric config class + description: Optional metric description + """ + + def register(cls): + _register_module(cls, metrics_registry, metric_name, config_class, description) + return cls + + return register
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/trainer/metrics_handlers.html b/_modules/hezar/trainer/metrics_handlers.html new file mode 100644 index 00000000..b0c14666 --- /dev/null +++ b/_modules/hezar/trainer/metrics_handlers.html @@ -0,0 +1,715 @@ + + + + + + + + hezar.trainer.metrics_handlers - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.trainer.metrics_handlers

    +from __future__ import annotations
    +
    +from typing import List
    +
    +import numpy as np
    +import torch
    +
    +from ..builders import build_metric
    +from ..configs import MetricConfig
    +from ..constants import MetricType
    +from ..metrics import Metric
    +from .trainer_utils import MetricsTracker
    +
    +
    +__all__ = [
    +    "MetricsHandler",
    +    "TextClassificationMetricsHandler",
    +    "SequenceLabelingMetricsHandler",
    +    "SpeechRecognitionMetricsHandler",
    +    "AudioClassificationMetricsHandler",
    +    "Image2TextMetricHandler",
    +    "TextGenerationMetricsHandler",
    +]
    +
    +
    +
    +[docs] +class MetricsHandler: + """ + Base metrics handler class for computing metrics. Subclasses must implement `compute_metrics` method based on + their specific task. + + Args: + metrics: A list of metrics (metric raw name or Metric object) + model_config: Optional model config + trainer_config: Optional trainer config + """ + valid_metrics: List[MetricType] = [] + + def __init__(self, metrics: List[str | MetricType | Metric | MetricConfig], trainer=None, **kwargs): + self.metrics = self._setup_metrics(metrics) + self.trainer = trainer + self.tracker = MetricsTracker(self.metrics) + self.objective = self._configure_objective() + + def _configure_objective(self): + target_metric = self.trainer.config.metric_for_best_model + objective_metric = target_metric.split(".")[1] if "." in target_metric else target_metric + if "loss" in objective_metric: + objective = "minimize" + else: + if objective_metric not in self.metrics: + raise ValueError( + f"{objective_metric} is not a valid metric for this task, " + f"available metrics: {list(self.tracker.trackers.values())}" + ) + objective = self.metrics[objective_metric].config.objective + return objective + + def _setup_metrics(self, metrics): + metrics_dict = {} + metrics = metrics or [] + if not len(metrics): + return metrics_dict + for metric in metrics: + if isinstance(metric, str): + if metric not in self.valid_metrics: + raise ValueError(f"Invalid metric `{metric}`! Available metrics: {self.valid_metrics}") + metrics_dict[metric] = build_metric(metric) + elif isinstance(metric, MetricConfig): + metrics_dict[metric.name] = build_metric(metric.name, config=metric) + else: + raise ValueError(f"Invalid metric type `{type(metric)}`! Available metrics: {self.valid_metrics}") + return metrics_dict + +
    +[docs] + def compute_metrics(self, predictions, labels, **kwargs): + """ + Given a batch of predictions and a batch of labels, compute all metrics + + Args: + predictions: Predictions batch usually containing logits + labels: Ground truth labels batch + """ + raise NotImplementedError
    +
    + + + +
    +[docs] +class TextClassificationMetricsHandler(MetricsHandler): + valid_metrics = [ + MetricType.ACCURACY, + MetricType.RECALL, + MetricType.PRECISION, + MetricType.F1, + ] + + def __init__(self, metrics: List[str | MetricType | Metric | MetricConfig], trainer=None): + super().__init__(metrics=metrics, trainer=trainer) + +
    +[docs] + def compute_metrics(self, predictions, labels, **kwargs): + predictions = np.array(predictions).argmax(1).flatten() + labels = np.array(labels).flatten() + results = {} + for metric_name, metric in self.metrics.items(): + results.update(metric.compute(predictions, labels)) + return results
    +
    + + + +
    +[docs] +class SequenceLabelingMetricsHandler(MetricsHandler): + valid_metrics = [MetricType.SEQEVAL] + + def __init__(self, metrics: List[str | MetricType | Metric | MetricConfig], trainer=None): + super().__init__(metrics=metrics, trainer=trainer) + +
    +[docs] + def compute_metrics(self, predictions, labels, **kwargs): + predictions = np.array(predictions).argmax(2).squeeze() + labels = np.array(labels).squeeze() + + # Remove ignored index (special tokens) and append `B-` in the beginning for seqeval + prefix = "" if self.trainer.train_dataset.config.is_iob_schema else "B-" + true_predictions = [ + [f"{prefix}{self.trainer.model.config.id2label[p]}" for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + true_labels = [ + [f"{prefix}{self.trainer.model.config.id2label[l]}" for (p, l) in zip(prediction, label) if l != -100] + for prediction, label in zip(predictions, labels) + ] + + results = {} + for metric_name, metric in self.metrics.items(): + x = metric.compute(true_predictions, true_labels) + results.update(x) + return results
    +
    + + + +
    +[docs] +class Image2TextMetricHandler(MetricsHandler): + valid_metrics = [MetricType.CER, MetricType.WER] + + def __init__(self, metrics: List[str | MetricType | Metric | MetricConfig], trainer=None): + super().__init__(metrics=metrics, trainer=trainer) + +
    +[docs] + def compute_metrics(self, predictions, labels, **kwargs): + predictions = self.trainer.model.post_process(torch.tensor(predictions)) + labels = self.trainer.model.post_process(torch.tensor(labels)) + predictions = [x["text"] for x in predictions] + labels = [x["text"] for x in labels] + results = {} + for metric_name, metric in self.metrics.items(): + x = metric.compute(predictions, labels) + results.update(x) + return results
    +
    + + + +
    +[docs] +class SpeechRecognitionMetricsHandler(MetricsHandler): + def __init__(self, metrics: List[str | MetricType | Metric | MetricConfig], trainer=None): + super().__init__(metrics=metrics, trainer=trainer) + +
    +[docs] + def compute_metrics(self, predictions, labels, **kwargs): + return {}
    +
    + + + +
    +[docs] +class TextGenerationMetricsHandler(MetricsHandler): + valid_metrics = [MetricType.ROUGE, MetricType.BLEU] + + def __init__(self, metrics: List[str | MetricType | Metric | MetricConfig], trainer=None): + super().__init__(metrics=metrics, trainer=trainer) + +
    +[docs] + def compute_metrics(self, predictions, labels, **kwargs): + predictions = self.trainer.model.post_process(torch.tensor(predictions)) + labels = self.trainer.model.post_process(torch.tensor(labels)) + predictions = [x["text"] for x in predictions] + labels = [x["text"] for x in labels] + results = {} + for metric_name, metric in self.metrics.items(): + x = metric.compute(predictions, labels) + results.update(x) + return results
    +
    + + + +
    +[docs] +class AudioClassificationMetricsHandler(MetricsHandler): + def __init__(self, metrics: List[str | MetricType | Metric | MetricConfig], trainer=None): + super().__init__(metrics=metrics, trainer=trainer) + +
    +[docs] + def compute_metrics(self, predictions, labels, **kwargs): + return {}
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/trainer/trainer.html b/_modules/hezar/trainer/trainer.html new file mode 100644 index 00000000..6c8f78d6 --- /dev/null +++ b/_modules/hezar/trainer/trainer.html @@ -0,0 +1,1282 @@ + + + + + + + + hezar.trainer.trainer - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.trainer.trainer

    +from __future__ import annotations
    +
    +import os
    +import random
    +from typing import TYPE_CHECKING, Any, Callable, Dict, Tuple
    +
    +import numpy as np
    +import pandas as pd
    +import torch
    +from huggingface_hub import create_repo, hf_hub_download, upload_file
    +from torch.utils.data import DataLoader
    +from torch.utils.tensorboard import SummaryWriter
    +from tqdm import tqdm
    +
    +from ..configs import TrainerConfig
    +from ..constants import (
    +    DEFAULT_DATASET_CONFIG_FILE,
    +    DEFAULT_TRAINER_CONFIG_FILE,
    +    DEFAULT_TRAINER_CSV_LOG_FILE,
    +    DEFAULT_TRAINER_STATE_FILE,
    +    DEFAULT_TRAINER_SUBFOLDER,
    +    HEZAR_CACHE_DIR,
    +    TQDM_BAR_FORMAT,
    +    Backends,
    +    LRSchedulerType,
    +    OptimizerType,
    +    TaskType,
    +)
    +from ..data.datasets import Dataset
    +from ..models import Model
    +from ..preprocessors import Preprocessor, PreprocessorsContainer
    +from ..utils import Logger, colorize_text, is_backend_available, sanitize_function_parameters
    +from .metrics_handlers import (
    +    AudioClassificationMetricsHandler,
    +    Image2TextMetricHandler,
    +    MetricsHandler,
    +    SequenceLabelingMetricsHandler,
    +    SpeechRecognitionMetricsHandler,
    +    TextClassificationMetricsHandler,
    +    TextGenerationMetricsHandler,
    +)
    +from .trainer_utils import CSVLogger, TrainerState, resolve_logdir, write_to_tensorboard
    +
    +
    +if TYPE_CHECKING:
    +    from accelerate import Accelerator
    +
    +logger = Logger(__name__)
    +
    +optimizers = {
    +    OptimizerType.ADAM: torch.optim.Adam,
    +    OptimizerType.ADAMW: torch.optim.AdamW,
    +    OptimizerType.SDG: torch.optim.SGD,
    +}
    +lr_schedulers = {
    +    LRSchedulerType.REDUCE_LR_ON_PLATEAU: torch.optim.lr_scheduler.ReduceLROnPlateau,
    +    LRSchedulerType.COSINE_LR: torch.optim.lr_scheduler.CosineAnnealingLR,
    +}
    +
    +task_to_metrics_handlers_mapping = {
    +    TaskType.TEXT_CLASSIFICATION: TextClassificationMetricsHandler,
    +    TaskType.SEQUENCE_LABELING: SequenceLabelingMetricsHandler,
    +    TaskType.IMAGE2TEXT: Image2TextMetricHandler,
    +    TaskType.SPEECH_RECOGNITION: SpeechRecognitionMetricsHandler,
    +    TaskType.AUDIO_CLASSIFICATION: AudioClassificationMetricsHandler,
    +    TaskType.TEXT_GENERATION: TextGenerationMetricsHandler,
    +}
    +
    +
    +
    +[docs] +class Trainer: + """ + Base trainer class for training all Hezar models and all tasks. Usually you can use this class as-is, but for special + cases you can also override any of the core methods in your own custom Trainer. + + Args: + model ([`Model`] or `torch.nn.Module`): The main model to train and evaluate + config (TrainerConfig): Training configuration and parameters + train_dataset (Dataset): Train dataset + eval_dataset (Dataset): Evaluation dataset + data_collator: Collate function, usually included in the dataset object itself + preprocessor: Preprocessor object(s) + metrics_handler: Optional metrics handler + optimizer (optim.Optimizer): Model optimizer + lr_scheduler: Optional learning-rate scheduler + accelerator (Accelerator) : Accelerator object for a customized distributed environment + """ + + trainer_subfolder = DEFAULT_TRAINER_SUBFOLDER + trainer_config_file = DEFAULT_TRAINER_CONFIG_FILE + trainer_csv_log_file = DEFAULT_TRAINER_CSV_LOG_FILE + dataset_config_file = DEFAULT_DATASET_CONFIG_FILE + default_trainer_state_file = DEFAULT_TRAINER_STATE_FILE + default_optimizer = OptimizerType.ADAM + default_lr_scheduler = LRSchedulerType.REDUCE_LR_ON_PLATEAU + + def __init__( + self, + model: Model = None, + config: TrainerConfig = None, + train_dataset: Dataset = None, + eval_dataset: Dataset = None, + data_collator: Callable = None, + preprocessor: Preprocessor | PreprocessorsContainer = None, + metrics_handler: MetricsHandler = None, + optimizer: torch.optim.Optimizer = None, + lr_scheduler=None, + accelerator: "Accelerator" = None, + ): + self.config = config + self.device = "cuda" if torch.cuda.is_available() and not self.config.use_cpu else "cpu" + + # Set determinism + self._set_seed(self.config.seed) + + # Setup model and preprocessor(s) + self.model = self._setup_model(model) + if self.model.preprocessor is None: + if preprocessor is not None: + self.model.preprocessor = preprocessor + else: + raise ValueError( + "You must set a preprocessor for the model or pass the preprocessor parameter to the Trainer!" + ) + + # Configure datasets and data loaders + self.train_dataset = train_dataset + self.eval_dataset = eval_dataset + self.data_collator = data_collator or self.train_dataset.data_collator + self.train_dataloader, self.eval_dataloader = self._setup_dataloaders() + + # Setup optimizer and (optionally) lr scheduler + self.optimizer, self.lr_scheduler = self._setup_optimizers(optimizer, lr_scheduler) + + # Setup accelerated objects if possible + if accelerator is None and self.config.distributed and not self.config.use_cpu: + self.accelerator = self._setup_accelerator() + self.scaler = self.accelerator.scaler + self.device = self.accelerator.device + else: + self.accelerator = accelerator + enabled = True if ( + self.config.mixed_precision is not None and not (self.config.use_cpu or self.device == "cpu") + ) else False + self.scaler = torch.cuda.amp.GradScaler(enabled=enabled) + + # Setup metrics handler and inner trackers for the trainer + self.metrics_handler = metrics_handler or self._setup_metrics_handler() + + # Configure checkpoints and logging directories + self.logs_dir = os.path.join(self.config.output_dir, self.config.logs_dir) + self.checkpoints_dir = os.path.join(self.config.output_dir, self.config.checkpoints_dir) + + # Setup logging properties + self.tensorboard = SummaryWriter(log_dir=resolve_logdir(self.logs_dir)) + self.csv_logger = CSVLogger(logs_dir=self.logs_dir, csv_filename=self.trainer_csv_log_file) + + self.current_epoch = 1 + + # Configure trainer state + self.state = TrainerState( + epoch=self.current_epoch, + total_epochs=self.config.num_epochs, + metric_for_best_checkpoint=self.config.metric_for_best_model, + ) + + @staticmethod + def _set_seed(seed): + torch.manual_seed(seed) + np.random.seed(seed) + random.seed(seed) + + def _setup_model(self, model: Model) -> Model: + """ + Download the model from HuggingFace Hub if `init_weights_from` is given in the config. Load the model to the + device and return it. + """ + if model is None: + raise ValueError("`model` must be given to the Trainer!") + hub_path = self.config.init_weights_from + if hub_path is not None: + if os.path.isdir(hub_path): + model_path = os.path.join(hub_path, model.model_filename) + else: + model_path = hf_hub_download( + hub_path, + filename=model.model_filename, + cache_dir=HEZAR_CACHE_DIR, + resume_download=True, + ) + model.load_state_dict(torch.load(model_path, map_location="cpu")) + model.to(self.device) + return model + + def _setup_dataloaders(self) -> Tuple[DataLoader, DataLoader | None]: + """ + Set up data loaders (train/eval) and return them. + + Returns: + A tuple of train and eval dataloaders + """ + if self.train_dataset is not None: + train_dataloader = DataLoader( + dataset=self.train_dataset, + batch_size=self.config.batch_size, + collate_fn=self.data_collator, + num_workers=self.config.num_dataloader_workers, + drop_last=True, + shuffle=True, + ) + else: + raise ValueError("Cannot create train dataloader because `train_dataset` is not given!") + if self.eval_dataset is not None: + eval_dataloader = DataLoader( + dataset=self.eval_dataset, + batch_size=self.config.eval_batch_size or self.config.batch_size, + collate_fn=self.data_collator, + num_workers=self.config.num_dataloader_workers, + drop_last=True, + shuffle=True, + ) + else: + logger.warning( + "Cannot create eval dataloader because `eval_dataset` is not given to the Trainer! " + "Setting eval_dataloader to None..." + ) + eval_dataloader = None + + return train_dataloader, eval_dataloader + + def _setup_optimizers(self, optimizer: torch.optim.Optimizer = None, lr_scheduler=None): + """ + Set up the optimizer and lr lr_scheduler if they're not already given + + Args: + optimizer: If None do nothing and return it, otherwise build it using the train config + lr_scheduler: If None do nothing and return it, otherwise build it using the train config + + Returns: + Optimizer and lr_scheduler + """ + if optimizer is None: + optimizer_type = self.config.optimizer or self.default_optimizer + optimizer = optimizers[optimizer_type]( + self.model.parameters(), + lr=self.config.learning_rate, + weight_decay=self.config.weight_decay, + ) + + if lr_scheduler is None: + scheduler_name = self.config.lr_scheduler or self.default_lr_scheduler + if scheduler_name is None: + lr_scheduler = None + else: + lr_scheduler = lr_schedulers[scheduler_name](optimizer, verbose=True) + return optimizer, lr_scheduler + + def _setup_accelerator(self): + if is_backend_available(Backends.ACCELERATE): + from accelerate import Accelerator + + accelerator = Accelerator( + mixed_precision=self.config.mixed_precision, + step_scheduler_with_optimizer=True if self.lr_scheduler is not None else False, + ) + self.model, self.optimizer, self.lr_scheduler, self.train_dataloader, self.eval_dataloader = ( + accelerator.prepare( + self.model, + self.optimizer, + self.lr_scheduler, + self.train_dataloader, + self.eval_dataloader, + ) + ) + else: + raise ValueError( + "The configuration for this trainer requires the package `accelerate` to be installed! " + "(config.distributed=True)" + ) + + return accelerator + + def _setup_metrics_handler(self): + """ + Setup MetricsHandler instance for the trainer + + Returns: + A MetricsHandler subclass instance based on self.config.task + """ + metrics_handler_cls = task_to_metrics_handlers_mapping[self.config.task] + metrics_handler = metrics_handler_cls(metrics=self.config.metrics, trainer=self) # noqa + return metrics_handler + +
    +[docs] + def load_from_checkpoint(self, checkpoint: str | bool = True, load_best: bool = False): + """ + Load trainer states like model weights, optimizer, etc. from a checkpoint + + Args: + checkpoint: Path to checkpoint directory + load_best: Whether to load the best checkpoint or not, if False, loads the latest checkpoint + """ + if os.path.isdir(checkpoint) and load_best: + logger.warning("The `load_best` parameter has no effect when `checkpoint` is a path!") + + self.state = TrainerState.load(os.path.join(self.checkpoints_dir, self.default_trainer_state_file)) + if isinstance(checkpoint, bool): + if load_best: + checkpoint = os.path.join(self.checkpoints_dir, str(self.state.best_checkpoint)) + else: + checkpoint = os.path.join(self.checkpoints_dir, str(self.state.epoch)) + if os.path.isdir(checkpoint): + # Figure out the epoch number + epoch = os.path.basename(checkpoint) if os.path.basename(checkpoint).isdigit() else self.state.epoch + if str(epoch).isdigit(): + self.state.epoch = int(epoch) + # Load model's state dict + model_path = os.path.join(checkpoint, self.model.model_filename) + if os.path.isfile(model_path): + self.model.load_state_dict(torch.load(model_path)) + if self.accelerator is not None: + self.model = self.accelerator.prepare(self.model) + logger.info(f"Successfully loaded checkpoint from `{checkpoint}` ") + else: + raise FileNotFoundError( + f"Could not find `{self.model.model_filename}` at `{os.path.dirname(model_path)}`!\n" + ) + else: + logger.warning( + f"{checkpoint} does not seem to be a valid checkpoint!" + )
    + + +
    +[docs] + def load_csv_logs(self, logs_dir=None): + """ + Load the CSV log file + Args: + logs_dir: Path to logs directory, defaults to self.config.logs_dir + + Returns: + Logs dictionary + """ + logs_dir = logs_dir or self.config.logs_dir + csv_path = os.path.join(logs_dir, self.trainer_csv_log_file) + logs = pd.read_csv(csv_path) + return logs.to_dict()
    + + +
    +[docs] + def prepare_input_batch(self, input_batch) -> Dict[str, torch.Tensor]: + """ + Every operation required to prepare the inputs for model forward like moving to device, permutations, etc. + + Args: + input_batch: Raw input batch from the dataloader + + Returns: + The proper input batch required by model forward + """ + # Put inputs on device manually if accelerator is not available, otherwise it's taken care of by the accelerator + if self.accelerator is None: + input_batch = {k: v.to(self.device) if isinstance(v, torch.Tensor) else v for k, v in input_batch.items()} + + return input_batch
    + + +
    +[docs] + def amp_context_manager(self): + """ + An auto context manager for mixed precision. + + Returns: + A torch autocast context manager + """ + if self.accelerator is not None: + context_manager = self.accelerator.autocast() + else: + device_type = "cuda" if "cuda" in self.device else "cpu" + dtype = torch.bfloat16 if self.config.mixed_precision == "bf16" or device_type == "cpu" else torch.float16 + enabled = self.config.mixed_precision is not None or self.config.mixed_precision == "no" + context_manager = torch.autocast( + device_type=device_type, + dtype=dtype, + enabled=enabled + ) + return context_manager
    + + +
    +[docs] + def forward(self, input_batch): + """ + Perform model forward on the input batch + + In special cases, one can override this method in their desired trainer. + + Args: + input_batch: Input batch + + Returns: + Model outputs + """ + if isinstance(input_batch, torch.Tensor): + outputs = self.model(input_batch) + elif isinstance(input_batch, Dict): + forward_inputs = sanitize_function_parameters(self.model.forward, input_batch) + outputs = self.model(**forward_inputs) + else: + raise ValueError( + f"`input_batch` must be a tensor or a dict-like object containing key/value pairs of tensors, " + f"but got {type(input_batch)}" + ) + if not isinstance(outputs, Dict): + raise ValueError(f"Model outputs must be dict-like not `{type(outputs)}`") + + return outputs
    + + +
    +[docs] + def compute_loss(self, model_outputs: Dict, labels: torch.Tensor, **kwargs) -> torch.Tensor: + """ + Compute loss from model outputs + + Args: + model_outputs: Logits from model outputs + labels: Ground truth labels + + Returns: + The loss tensor + """ + compute_loss_inputs = sanitize_function_parameters(self.model.compute_loss, model_outputs, **kwargs) + compute_loss_inputs["labels"] = labels + + loss = self.model.compute_loss(**compute_loss_inputs) + + return loss
    + + +
    +[docs] + def training_step(self, input_batch: Dict[str, torch.Tensor]) -> Dict[str, Any]: + """ + Train one batch of data and return loss and model outputs + + Args: + input_batch: A batch of inputs to train + + Returns: + Train step outputs including loss, logits, etc. + """ + with self.amp_context_manager(): + outputs = self.forward(input_batch) + + loss = self.compute_loss(outputs, **input_batch) + + if self.accelerator is not None: + self.accelerator.backward(loss) + self.optimizer.step() + else: + self.scaler.scale(loss).backward() + self.scaler.step(self.optimizer) + self.scaler.update() + + self.optimizer.zero_grad() + + outputs["loss"] = loss.item() if isinstance(loss, torch.Tensor) else loss + + return outputs
    + + +
    +[docs] + def evaluation_step(self, input_batch: Dict[str, torch.Tensor]) -> Dict[str, Any]: + """ + Evaluate one batch of data and return loss and model outputs + + Args: + input_batch: A batch of inputs to evaluate + + Returns: + Evaluation step outputs including loss, logits, etc. + """ + with self.amp_context_manager(): + outputs = self.forward(input_batch) + + loss = self.compute_loss(outputs, **input_batch) + + if self.model.is_generative and self.config.evaluate_with_generate: + generate_inputs = sanitize_function_parameters(self.model.generate, input_batch) + generated_ids = self.model.generate(**generate_inputs) + outputs["logits"] = generated_ids["generated_ids"] if isinstance(generated_ids, dict) else generated_ids + + outputs["loss"] = loss.item() if isinstance(loss, torch.Tensor) else loss + + return outputs
    + + +
    +[docs] + def inner_training_loop(self, epoch_num: int): + """ + Train the model for one epoch on the whole train dataset and verbose live metric values in the progress bar + + Args: + epoch_num: Number of the current epoch + + Returns: + Metrics averages through the full iteration + """ + losses_sum = 0.0 + self.model.train() + with tqdm( + self.train_dataloader, + unit="batch", + desc=f"Epoch: {epoch_num}/{self.config.num_epochs} ", + bar_format=TQDM_BAR_FORMAT, + ascii=" #", + ) as iterator: + for step, input_batch in enumerate(iterator): + input_batch = self.prepare_input_batch(input_batch) + # Training on one batch + outputs = self.training_step(input_batch) + losses_sum += outputs["loss"] + # Gather outputs for metrics + avg_loss = losses_sum / (step + 1) + iterator.set_postfix(loss=avg_loss) + self.state.global_step += 1 + + return {"loss": avg_loss}
    + + +
    +[docs] + def evaluate(self): + """ + Evaluates the model on the whole eval dataset and verbose live metric values in the progress bar + + Returns: + Evaluation results + """ + self.metrics_handler.tracker.reset() + self.model.eval() + with tqdm( + self.eval_dataloader, + unit="batch", + desc="Evaluating... ", + bar_format=TQDM_BAR_FORMAT, + ascii=" #", + ) as iterator: + with torch.inference_mode(): + for step, input_batch in enumerate(iterator): + input_batch = self.prepare_input_batch(input_batch) + # Evaluation on one batch + outputs = self.evaluation_step(input_batch) + logits = outputs["logits"].detach().cpu().numpy() + labels = input_batch["labels"].detach().cpu().numpy() + # Compute metrics + evaluation_results = self.metrics_handler.compute_metrics(logits, labels) + evaluation_results["loss"] = outputs["loss"] + # Gather outputs for metrics + self.metrics_handler.tracker.update(evaluation_results) + iterator.set_postfix(**self.metrics_handler.tracker.avg()) + + return self.metrics_handler.tracker.avg()
    + + +
    +[docs] + def print_info(self): + """ + Print training info + """ + + def _print_info_line(key, value): + line = f" {colorize_text(key, 'bold')}: `{colorize_text(str(value), 'italic')}`" + print(line) + + header = f"{'*' * 20} Training Info {'*' * 20}" + footer = "*" * len(header) + + # Header + print(f"\n{colorize_text(header, 'bold')}\n") + # Info + _print_info_line("Output Directory", self.config.output_dir) + _print_info_line("Task", self.config.task) + _print_info_line("Model", type(self.model).__name__) + _print_info_line("Init Weights", self.config.init_weights_from or "N/A") + _print_info_line("Device(s)", self.device) + _print_info_line("Training Dataset", self.train_dataset) + _print_info_line("Evaluation Dataset", self.eval_dataset) + _print_info_line("Optimizer", self.config.optimizer or self.default_optimizer) + _print_info_line("Initial Learning Rate", self.config.learning_rate) + _print_info_line("Learning Rate Decay", self.config.weight_decay) + _print_info_line("Epochs", self.config.num_epochs) + _print_info_line("Batch Size", self.config.batch_size) + _print_info_line("Number of Parameters", self.model.num_parameters) + _print_info_line("Number of Trainable Parameters", self.model.num_trainable_parameters) + _print_info_line("Mixed Precision", self.config.mixed_precision or "Full (fp32)") + _print_info_line("Metrics", list(self.metrics_handler.metrics.keys())) + _print_info_line("Checkpoints Path", self.checkpoints_dir) + _print_info_line("Logs Path", self.logs_dir) + # Footer + print(f"\n{colorize_text(footer, 'bold')}\n")
    + + +
    +[docs] + def train(self, resume_from_checkpoint: str | bool = None): + """ + The full training process like training, evaluation, logging and saving model checkpoints. + + Args: + resume_from_checkpoint: Resume from checkpoint path (if value is a path) or automatically load from the + latest checkpoint (if value is True) + """ + if resume_from_checkpoint: + self.load_from_checkpoint(resume_from_checkpoint) + if self.current_epoch >= self.config.num_epochs: + logger.info( + f"Unable to resume from `{os.path.join(self.checkpoints_dir, str(self.state.epoch))}` " + f"since it belongs to the ending epoch!" + ) + self.current_epoch = self.state.epoch + 1 + + self.print_info() + + for epoch in range(self.current_epoch, self.config.num_epochs + 1): + print() + training_results = self.inner_training_loop(epoch) + evaluation_results = self.evaluate() + if self.lr_scheduler is not None: + self.lr_scheduler.step(evaluation_results["loss"]) + + train_logs = {f"train.{metric_name}": value for metric_name, value in training_results.items()} + evaluation_logs = {f"evaluation.{metric_name}": value for metric_name, value in evaluation_results.items()} + all_logs = {**train_logs, **evaluation_logs} + + self.state.epoch = epoch + self.state.update_best_results( + metric_value=all_logs[self.config.metric_for_best_model], + objective=self.metrics_handler.objective, + step=epoch, + ) + + # maybe save checkpoint + if epoch % self.config.save_freq == 0: + ckpt_save_path = os.path.join(self.checkpoints_dir, str(epoch)) + self.save(ckpt_save_path) + + self.log(train_logs, evaluation_logs, epoch) + + logger.info("Training done!")
    + + +
    +[docs] + def log(self, train_logs: Dict[str, Any], evaluation_logs: Dict[str, Any], step: int): + """ + Log metrics results + """ + # Log to tensorboard + write_to_tensorboard(self.tensorboard, train_logs, step) + write_to_tensorboard(self.tensorboard, evaluation_logs, step) + + # Log to CSV + self.csv_logger.write({**train_logs, **evaluation_logs}, step) + + # Save trainer state + self.state.save( + os.path.join( + self.checkpoints_dir, + self.default_trainer_state_file, + ) + )
    + + +
    +[docs] + def save( + self, + path: str, + config_filename=None, + model_filename=None, + model_config_filename=None, + subfolder=None, + dataset_config_file=None, + ): + """ + Save the trainer and relevant files to a path. + + Files to save are train config, model weights, model config, preprocessor files and preprocessor config. + + Args: + path: A directory to save everything + config_filename: Config filename + model_filename: Model file name + model_config_filename: Model config file name + subfolder: Optional sub-folder + dataset_config_file: Dataset config filename + """ + config_filename = config_filename or self.trainer_config_file + subfolder = subfolder or self.trainer_subfolder + dataset_config_file = dataset_config_file or self.dataset_config_file + + self.config.save(path, filename=config_filename, subfolder=subfolder) + self.model.save(path, filename=model_filename, config_filename=model_config_filename) + self.train_dataset.config.save(path, filename=dataset_config_file, subfolder=subfolder)
    + + +
    +[docs] + def push_to_hub( + self, + repo_id: str, + config_filename: str = None, + push_model: bool = True, + push_logs: bool = True, + model_filename: str = None, + model_config_filename: str = None, + subfolder: str = None, + dataset_config_filename: str = None, + commit_message: str = None, + private: bool = False, + ): + """ + Push everything to the Hub + + Args: + repo_id: Path to hub + config_filename: Trainer config file name + push_model: Whether to push the model or not + push_logs: Whether to push training logs or not + model_filename: Model file name + model_config_filename: Model config file name + subfolder: Path to Trainer files + dataset_config_filename: Dataset config file name + commit_message: Commit message for the push + private: Whether to create a private repo if it doesn't exist already + """ + config_filename = config_filename or self.trainer_config_file + subfolder = subfolder or self.trainer_subfolder + dataset_config_file = dataset_config_filename or self.dataset_config_file + + # create remote repo + create_repo(repo_id, repo_type="model", exist_ok=True, private=private) + + if not commit_message: + commit_message = "Hezar: Upload training files" + + # upload train files + self.config.push_to_hub( + repo_id, + filename=config_filename, + subfolder=subfolder, + private=private, + commit_message=commit_message, + ) + self.train_dataset.config.push_to_hub( + repo_id, + filename=dataset_config_file, + subfolder=subfolder, + private=private, + commit_message=commit_message + ) + + # upload model + if push_model: + self.model.push_to_hub( + repo_id, + filename=model_filename, + config_filename=model_config_filename, + commit_message=commit_message, + private=private, + ) + + if push_logs: + upload_file( + path_or_fileobj=self.csv_logger.save_path, + path_in_repo=os.path.join(self.trainer_subfolder, self.trainer_csv_log_file), + repo_id=repo_id, + commit_message=commit_message, + )
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/trainer/trainer_utils.html b/_modules/hezar/trainer/trainer_utils.html new file mode 100644 index 00000000..a2bc2923 --- /dev/null +++ b/_modules/hezar/trainer/trainer_utils.html @@ -0,0 +1,702 @@ + + + + + + + + hezar.trainer.trainer_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.trainer.trainer_utils

    +import os
    +from dataclasses import asdict, dataclass
    +
    +import numpy as np
    +import pandas as pd
    +from omegaconf import OmegaConf
    +from torch.utils.tensorboard import SummaryWriter
    +
    +
    +__all__ = [
    +    "TrainerState",
    +    "AverageMeter",
    +    "MetricsTracker",
    +    "CSVLogger",
    +    "write_to_tensorboard",
    +    "resolve_logdir",
    +]
    +
    +
    +
    +[docs] +@dataclass +class TrainerState: + """ + A Trainer state is a container for holding specific updating values in the training process and is saved when + checkpointing. + + Args: + epoch: Current epoch number + total_epochs: Total epochs to train the model + global_step: Number of the update steps so far, one step is a full training step (one batch) + metric_for_best_checkpoint: The metric key for choosing the best checkpoint (Also given in the TrainerConfig) + best_metric_value: The value of the best checkpoint saved so far + best_checkpoint: Path to the best model checkpoint so far + """ + epoch: int = 1 + total_epochs: int = None + global_step: int = 0 + metric_for_best_checkpoint: str = None + best_metric_value: float = None + best_checkpoint: str = None + +
    +[docs] + def update(self, items: dict, **kwargs): + items.update(kwargs) + for k, v in items.items(): + if hasattr(self, k): + setattr(self, k, v)
    + + +
    +[docs] + def update_best_results(self, metric_value, objective, step): + if objective == "maximize": + operator = np.greater + elif objective == "minimize": + operator = np.less + else: + raise ValueError(f"`objective` must be either `maximize` or `minimize`, got `{objective}`!") + + if self.best_metric_value is None: + self.best_metric_value = metric_value + self.best_checkpoint = step + + elif operator(metric_value, self.best_metric_value): + self.best_metric_value = metric_value + self.best_checkpoint = step
    + + +
    +[docs] + def save(self, path, drop_none: bool = False): + """ + Save the state to a .yaml file at `path` + """ + state = asdict(self) + if drop_none: + state = {k: v for k, v in state.items() if v is not None} + os.makedirs(os.path.dirname(path), exist_ok=True) + OmegaConf.save(state, path)
    + + +
    +[docs] + @classmethod + def load(cls, path): + """ + Load a trainer state from `path` + """ + state_file = OmegaConf.load(path) + state_dict = OmegaConf.to_container(state_file) + state = cls(**state_dict) + return state
    +
    + + + +
    +[docs] +class AverageMeter: + """Compute and store the average and current value""" + + def __init__(self, name, fmt=":f"): + self.name = name + self.fmt = fmt + self.val = 0 + self.avg = 0 + self.sum = 0 + self.count = 0 + self.reset() + +
    +[docs] + def reset(self): + self.val = 0 + self.avg = 0 + self.sum = 0 + self.count = 0
    + + +
    +[docs] + def update(self, val, n=1): + self.val = val + self.sum += val * n + self.count += n + self.avg = self.sum / self.count
    + + + def __str__(self): + fmtstr = "{name} {val" + self.fmt + "} ({avg" + self.fmt + "})" + return fmtstr.format(**self.__dict__)
    + + + +
    +[docs] +class MetricsTracker: + def __init__(self, metrics): + self.metrics = metrics or [] + self.trackers = {} + if len(self.metrics): + for m in self.metrics.values(): + for metric_key in m.config.output_keys: + self.trackers[metric_key] = AverageMeter(metric_key) + if "loss" not in self.trackers: + self.trackers["loss"] = AverageMeter("loss") + +
    +[docs] + def update(self, results): + for metric_name, tracker in self.trackers.items(): + tracker.update(results[metric_name])
    + + +
    +[docs] + def reset(self): + for tracker in self.trackers.values(): + tracker.reset()
    + + +
    +[docs] + def avg(self): + avg_results = {} + for metric_name, tracker in self.trackers.items(): + avg_results[metric_name] = tracker.avg + + return avg_results
    +
    + + + +
    +[docs] +class CSVLogger: + def __init__(self, logs_dir: str, csv_filename: str): + self.save_path = os.path.join(logs_dir, csv_filename) + self.df = pd.DataFrame({}) + +
    +[docs] + def write(self, logs: dict, step: int): + all_logs = {"step": step} + all_logs.update({k: [v] for k, v in logs.items()}) + row = pd.DataFrame(all_logs) + self.df = pd.concat([self.df, row]) + self.df.to_csv(self.save_path, index=False)
    +
    + + + +
    +[docs] +def write_to_tensorboard(writer: SummaryWriter, logs: dict, step: int): + for metric_name, value in logs.items(): + writer.add_scalar(metric_name, value, step)
    + + + +
    +[docs] +def resolve_logdir(log_dir) -> str: + import socket + from datetime import datetime + + current_time = datetime.now().strftime("%b%d_%H-%M-%S") + return os.path.join(log_dir, current_time + "_" + socket.gethostname())
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/audio_utils.html b/_modules/hezar/utils/audio_utils.html new file mode 100644 index 00000000..aedcd5e2 --- /dev/null +++ b/_modules/hezar/utils/audio_utils.html @@ -0,0 +1,1066 @@ + + + + + + + + hezar.utils.audio_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.audio_utils

    +"""
    +Common audio utils taken from `transformers.audio_utils`
    +"""
    +from __future__ import annotations
    +
    +from typing import List, Optional
    +
    +import numpy as np
    +
    +from ..constants import Backends
    +from .integration_utils import is_backend_available
    +from .logging import Logger
    +
    +
    +__all__ = [
    +    "load_audio_files",
    +    "spectrogram",
    +    "amplitude_to_db",
    +    "power_to_db",
    +    "window_function",
    +    "mel_filter_bank",
    +    "hertz_to_mel",
    +    "mel_to_hertz",
    +]
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +def load_audio_files(paths: str | List[str], sampling_rate: int = 16000): + if is_backend_available(Backends.LIBROSA): + import librosa + if isinstance(paths, str): + paths = [paths] + inputs = [librosa.load(x, sr=sampling_rate)[0] for x in paths] + else: + raise ImportError("`librosa` must be installed to load audio files!") + return inputs
    + + + +
    +[docs] +def spectrogram( + waveform: np.ndarray, + window: np.ndarray, + frame_length: int, + hop_length: int, + fft_length: Optional[int] = None, + power: Optional[float] = 1.0, + center: bool = True, + pad_mode: str = "reflect", + onesided: bool = True, + preemphasis: Optional[float] = None, + mel_filters: Optional[np.ndarray] = None, + mel_floor: float = 1e-10, + log_mel: Optional[str] = None, + reference: float = 1.0, + min_value: float = 1e-10, + db_range: Optional[float] = None, + dtype: np.dtype = np.float32, +) -> np.ndarray: + """ + Calculates a spectrogram over one waveform using the Short-Time Fourier Transform. + + This function can create the following kinds of spectrograms: + + - amplitude spectrogram (`power = 1.0`) + - power spectrogram (`power = 2.0`) + - complex-valued spectrogram (`power = None`) + - log spectrogram (use `log_mel` argument) + - mel spectrogram (provide `mel_filters`) + - log-mel spectrogram (provide `mel_filters` and `log_mel`) + + How this works: + + 1. The input waveform is split into frames of size `frame_length` that are partially overlapping by `frame_length + - hop_length` samples. + 2. Each frame is multiplied by the window and placed into a buffer of size `fft_length`. + 3. The DFT is taken of each windowed frame. + 4. The results are stacked into a spectrogram. + + We make a distinction between the following "blocks" of sample data, each of which may have a different lengths: + + - The analysis frame. This is the size of the time slices that the input waveform is split into. + - The window. Each analysis frame is multiplied by the window to avoid spectral leakage. + - The FFT input buffer. The length of this determines how many frequency bins are in the spectrogram. + + In this implementation, the window is assumed to be zero-padded to have the same size as the analysis frame. A + padded window can be obtained from `window_function()`. The FFT input buffer may be larger than the analysis frame, + typically the next power of two. + + Note: This function is not optimized for speed yet. It should be mostly compatible with `librosa.stft` and + `torchaudio.functional.transforms.Spectrogram`, although it is more flexible due to the different ways spectrograms + can be constructed. + + Args: + waveform (`np.ndarray` of shape `(length,)`): + The input waveform. This must be a single real-valued, mono waveform. + window (`np.ndarray` of shape `(frame_length,)`): + The windowing function to apply, including zero-padding if necessary. The actual window length may be + shorter than `frame_length`, but we're assuming the array has already been zero-padded. + frame_length (`int`): + The length of the analysis frames in samples. With librosa this is always equal to `fft_length` but we also + allow smaller sizes. + hop_length (`int`): + The stride between successive analysis frames in samples. + fft_length (`int`, *optional*): + The size of the FFT buffer in samples. This determines how many frequency bins the spectrogram will have. + For optimal speed, this should be a power of two. If `None`, uses `frame_length`. + power (`float`, *optional*, defaults to 1.0): + If 1.0, returns the amplitude spectrogram. If 2.0, returns the power spectrogram. If `None`, returns + complex numbers. + center (`bool`, *optional*, defaults to `True`): + Whether to pad the waveform so that frame `t` is centered around time `t * hop_length`. If `False`, frame + `t` will start at time `t * hop_length`. + pad_mode (`str`, *optional*, defaults to `"reflect"`): + Padding mode used when `center` is `True`. Possible values are: `"constant"` (pad with zeros), `"edge"` + (pad with edge values), `"reflect"` (pads with mirrored values). + onesided (`bool`, *optional*, defaults to `True`): + If True, only computes the positive frequencies and returns a spectrogram containing `fft_length // 2 + 1` + frequency bins. If False, also computes the negative frequencies and returns `fft_length` frequency bins. + preemphasis (`float`, *optional*) + Coefficient for a low-pass filter that applies pre-emphasis before the DFT. + mel_filters (`np.ndarray` of shape `(num_freq_bins, num_mel_filters)`, *optional*): + The mel filter bank. If supplied, applies a this filter bank to create a mel spectrogram. + mel_floor (`float`, *optional*, defaults to 1e-10): + Minimum value of mel frequency banks. + log_mel (`str`, *optional*): + How to convert the spectrogram to log scale. Possible options are: `None` (don't convert), `"log"` (take + the natural logarithm) `"log10"` (take the base-10 logarithm), `"dB"` (convert to decibels). Can only be + used when `power` is not `None`. + reference (`float`, *optional*, defaults to 1.0): + Sets the input spectrogram value that corresponds to 0 dB. For example, use `np.max(spectrogram)` to set + the loudest part to 0 dB. Must be greater than zero. + min_value (`float`, *optional*, defaults to `1e-10`): + The spectrogram will be clipped to this minimum value before conversion to decibels, to avoid taking + `log(0)`. For a power spectrogram, the default of `1e-10` corresponds to a minimum of -100 dB. For an + amplitude spectrogram, the value `1e-5` corresponds to -100 dB. Must be greater than zero. + db_range (`float`, *optional*): + Sets the maximum dynamic range in decibels. For example, if `db_range = 80`, the difference between the + peak value and the smallest value will never be more than 80 dB. Must be greater than zero. + dtype (`np.dtype`, *optional*, defaults to `np.float32`): + Data type of the spectrogram tensor. If `power` is None, this argument is ignored and the dtype will be + `np.complex64`. + + Returns: + `nd.array` containing a spectrogram of shape `(num_frequency_bins, length)` for a regular spectrogram or shape + `(num_mel_filters, length)` for a mel spectrogram. + """ + window_length = len(window) + + if fft_length is None: + fft_length = frame_length + + if frame_length > fft_length: + raise ValueError(f"frame_length ({frame_length}) may not be larger than fft_length ({fft_length})") + + if window_length != frame_length: + raise ValueError(f"Length of the window ({window_length}) must equal frame_length ({frame_length})") + + if hop_length <= 0: + raise ValueError("hop_length must be greater than zero") + + if waveform.ndim != 1: + raise ValueError(f"Input waveform must have only one dimension, shape is {waveform.shape}") + + if np.iscomplexobj(waveform): + raise ValueError("Complex-valued input waveforms are not currently supported") + + # center pad the waveform + if center: + padding = [(int(frame_length // 2), int(frame_length // 2))] + waveform = np.pad(waveform, padding, mode=pad_mode) + + # promote to float64, since np.fft uses float64 internally + waveform = waveform.astype(np.float64) + window = window.astype(np.float64) + + # split waveform into frames of frame_length size + num_frames = int(1 + np.floor((waveform.size - frame_length) / hop_length)) + + num_frequency_bins = (fft_length // 2) + 1 if onesided else fft_length + spectrogram = np.empty((num_frames, num_frequency_bins), dtype=np.complex64) + + # rfft is faster than fft + fft_func = np.fft.rfft if onesided else np.fft.fft + buffer = np.zeros(fft_length) + + timestep = 0 + for frame_idx in range(num_frames): + buffer[:frame_length] = waveform[timestep:timestep + frame_length] + + if preemphasis is not None: + buffer[1:frame_length] -= preemphasis * buffer[: frame_length - 1] + buffer[0] *= 1 - preemphasis + + buffer[:frame_length] *= window + + spectrogram[frame_idx] = fft_func(buffer) + timestep += hop_length + + # note: ** is much faster than np.power + if power is not None: + spectrogram = np.abs(spectrogram, dtype=np.float64) ** power + + spectrogram = spectrogram.T + + if mel_filters is not None: + spectrogram = np.maximum(mel_floor, np.dot(mel_filters.T, spectrogram)) + + if power is not None and log_mel is not None: + if log_mel == "log": + spectrogram = np.log(spectrogram) + elif log_mel == "log10": + spectrogram = np.log10(spectrogram) + elif log_mel == "dB": + if power == 1.0: + spectrogram = amplitude_to_db(spectrogram, reference, min_value, db_range) + elif power == 2.0: + spectrogram = power_to_db(spectrogram, reference, min_value, db_range) + else: + raise ValueError(f"Cannot use log_mel option '{log_mel}' with power {power}") + else: + raise ValueError(f"Unknown log_mel option: {log_mel}") + + spectrogram = np.asarray(spectrogram, dtype) + + return spectrogram
    + + + +
    +[docs] +def amplitude_to_db( + spectrogram: np.ndarray, + reference: float = 1.0, + min_value: float = 1e-5, + db_range: Optional[float] = None, +) -> np.ndarray: + """ + Converts an amplitude spectrogram to the decibel scale. This computes `20 * log10(spectrogram / reference)`, using + basic logarithm properties for numerical stability. + + The motivation behind applying the log function on the (mel) spectrogram is that humans do not hear loudness on a + linear scale. Generally to double the perceived volume of a sound we need to put 8 times as much energy into it. + This means that large variations in energy may not sound all that different if the sound is loud to begin with. + This compression operation makes the (mel) spectrogram features match more closely what humans actually hear. + + Args: + spectrogram (`np.ndarray`): + The input amplitude (mel) spectrogram. + reference (`float`, *optional*, defaults to 1.0): + Sets the input spectrogram value that corresponds to 0 dB. For example, use `np.max(spectrogram)` to set + the loudest part to 0 dB. Must be greater than zero. + min_value (`float`, *optional*, defaults to `1e-5`): + The spectrogram will be clipped to this minimum value before conversion to decibels, to avoid taking + `log(0)`. The default of `1e-5` corresponds to a minimum of -100 dB. Must be greater than zero. + db_range (`float`, *optional*): + Sets the maximum dynamic range in decibels. For example, if `db_range = 80`, the difference between the + peak value and the smallest value will never be more than 80 dB. Must be greater than zero. + + Returns: + `np.ndarray`: the spectrogram in decibels + """ + if reference <= 0.0: + raise ValueError("reference must be greater than zero") + if min_value <= 0.0: + raise ValueError("min_value must be greater than zero") + + reference = max(min_value, reference) + + spectrogram = np.clip(spectrogram, a_min=min_value, a_max=None) + spectrogram = 20.0 * (np.log10(spectrogram) - np.log10(reference)) + + if db_range is not None: + if db_range <= 0.0: + raise ValueError("db_range must be greater than zero") + spectrogram = np.clip(spectrogram, a_min=spectrogram.max() - db_range, a_max=None) + + return spectrogram
    + + + +
    +[docs] +def power_to_db( + spectrogram: np.ndarray, + reference: float = 1.0, + min_value: float = 1e-10, + db_range: Optional[float] = None, +) -> np.ndarray: + """ + Converts a power spectrogram to the decibel scale. This computes `10 * log10(spectrogram / reference)`, using basic + logarithm properties for numerical stability. + + The motivation behind applying the log function on the (mel) spectrogram is that humans do not hear loudness on a + linear scale. Generally to double the perceived volume of a sound we need to put 8 times as much energy into it. + This means that large variations in energy may not sound all that different if the sound is loud to begin with. + This compression operation makes the (mel) spectrogram features match more closely what humans actually hear. + + Based on the implementation of `librosa.power_to_db`. + + Args: + spectrogram (`np.ndarray`): + The input power (mel) spectrogram. Note that a power spectrogram has the amplitudes squared! + reference (`float`, *optional*, defaults to 1.0): + Sets the input spectrogram value that corresponds to 0 dB. For example, use `np.max(spectrogram)` to set + the loudest part to 0 dB. Must be greater than zero. + min_value (`float`, *optional*, defaults to `1e-10`): + The spectrogram will be clipped to this minimum value before conversion to decibels, to avoid taking + `log(0)`. The default of `1e-10` corresponds to a minimum of -100 dB. Must be greater than zero. + db_range (`float`, *optional*): + Sets the maximum dynamic range in decibels. For example, if `db_range = 80`, the difference between the + peak value and the smallest value will never be more than 80 dB. Must be greater than zero. + + Returns: + `np.ndarray`: the spectrogram in decibels + """ + if reference <= 0.0: + raise ValueError("reference must be greater than zero") + if min_value <= 0.0: + raise ValueError("min_value must be greater than zero") + + reference = max(min_value, reference) + + spectrogram = np.clip(spectrogram, a_min=min_value, a_max=None) + spectrogram = 10.0 * (np.log10(spectrogram) - np.log10(reference)) + + if db_range is not None: + if db_range <= 0.0: + raise ValueError("db_range must be greater than zero") + spectrogram = np.clip(spectrogram, a_min=spectrogram.max() - db_range, a_max=None) + + return spectrogram
    + + + +
    +[docs] +def window_function( + window_length: int, + name: str = "hann", + periodic: bool = True, + frame_length: Optional[int] = None, + center: bool = True, +) -> np.ndarray: + """ + Returns an array containing the specified window. This window is intended to be used with `stft`. + + The following window types are supported: + + - `"boxcar"`: a rectangular window + - `"hamming"`: the Hamming window + - `"hann"`: the Hann window + + Args: + window_length (`int`): + The length of the window in samples. + name (`str`, *optional*, defaults to `"hann"`): + The name of the window function. + periodic (`bool`, *optional*, defaults to `True`): + Whether the window is periodic or symmetric. + frame_length (`int`, *optional*): + The length of the analysis frames in samples. Provide a value for `frame_length` if the window is smaller + than the frame length, so that it will be zero-padded. + center (`bool`, *optional*, defaults to `True`): + Whether to center the window inside the FFT buffer. Only used when `frame_length` is provided. + + Returns: + `np.ndarray` of shape `(window_length,)` or `(frame_length,)` containing the window. + """ + length = window_length + 1 if periodic else window_length + + if name == "boxcar": + window = np.ones(length) + elif name in ["hamming", "hamming_window"]: + window = np.hamming(length) + elif name in ["hann", "hann_window"]: + window = np.hanning(length) + else: + raise ValueError(f"Unknown window function '{name}'") + + if periodic: + window = window[:-1] + + if frame_length is None: + return window + + if window_length > frame_length: + raise ValueError(f"Length of the window ({window_length}) may not be larger than frame_length ({frame_length})") + + padded_window = np.zeros(frame_length) + offset = (frame_length - window_length) // 2 if center else 0 + padded_window[offset:offset + window_length] = window + return padded_window
    + + + +
    +[docs] +def mel_filter_bank( + num_frequency_bins: int, + num_mel_filters: int, + min_frequency: float, + max_frequency: float, + sampling_rate: int, + norm: Optional[str] = None, + mel_scale: str = "htk", +) -> np.ndarray: + """ + Creates a frequency bin conversion matrix used to obtain a mel spectrogram. This is called a *mel filter bank*, and + various implementation exist, which differ in the number of filters, the shape of the filters, the way the filters + are spaced, the bandwidth of the filters, and the manner in which the spectrum is warped. The goal of these + features is to approximate the non-linear human perception of the variation in pitch with respect to the frequency. + + Different banks of mel filters were introduced in the literature. The following variations are supported: + + - MFCC FB-20: introduced in 1980 by Davis and Mermelstein, it assumes a sampling frequency of 10 kHz and a speech + bandwidth of `[0, 4600]` Hz. + - MFCC FB-24 HTK: from the Cambridge HMM Toolkit (HTK) (1995) uses a filter bank of 24 filters for a speech + bandwidth of `[0, 8000]` Hz. This assumes sampling rate ≥ 16 kHz. + - MFCC FB-40: from the Auditory Toolbox for MATLAB written by Slaney in 1998, assumes a sampling rate of 16 kHz and + speech bandwidth of `[133, 6854]` Hz. This version also includes area normalization. + - HFCC-E FB-29 (Human Factor Cepstral Coefficients) of Skowronski and Harris (2004), assumes a sampling rate of + 12.5 kHz and speech bandwidth of `[0, 6250]` Hz. + + This code is adapted from *torchaudio* and *librosa*. Note that the default parameters of torchaudio's + `melscale_fbanks` implement the `"htk"` filters while librosa uses the `"slaney"` implementation. + + Args: + num_frequency_bins (`int`): + Number of frequencies used to compute the spectrogram (should be the same as in `stft`). + num_mel_filters (`int`): + Number of mel filters to generate. + min_frequency (`float`): + Lowest frequency of interest in Hz. + max_frequency (`float`): + Highest frequency of interest in Hz. This should not exceed `sampling_rate / 2`. + sampling_rate (`int`): + Sample rate of the audio waveform. + norm (`str`, *optional*): + If `"slaney"`, divide the triangular mel weights by the width of the mel band (area normalization). + mel_scale (`str`, *optional*, defaults to `"htk"`): + The mel frequency scale to use, `"htk"` or `"slaney"`. + + Returns: + `np.ndarray` of shape (`num_frequency_bins`, `num_mel_filters`): Triangular filter bank matrix. This is a + projection matrix to go from a spectrogram to a mel spectrogram. + """ + if norm is not None and norm != "slaney": + raise ValueError('norm must be one of None or "slaney"') + + # frequencies of FFT bins in Hz + fft_freqs = np.linspace(0, sampling_rate // 2, num_frequency_bins) + + # center points of the triangular mel filters + mel_min = hertz_to_mel(min_frequency, mel_scale=mel_scale) + mel_max = hertz_to_mel(max_frequency, mel_scale=mel_scale) + mel_freqs = np.linspace(mel_min, mel_max, num_mel_filters + 2) + filter_freqs = mel_to_hertz(mel_freqs, mel_scale=mel_scale) + + mel_filters = _create_triangular_filter_bank(fft_freqs, filter_freqs) + + if norm is not None and norm == "slaney": + # Slaney-style mel is scaled to be approx constant energy per channel + enorm = 2.0 / (filter_freqs[2:num_mel_filters + 2] - filter_freqs[:num_mel_filters]) + mel_filters *= np.expand_dims(enorm, 0) + + if (mel_filters.max(axis=0) == 0.0).any(): + logger.warn( + "At least one mel filter has all zero values. " + f"The value for `num_mel_filters` ({num_mel_filters}) may be set too high. " + f"Or, the value for `num_frequency_bins` ({num_frequency_bins}) may be set too low." + ) + + return mel_filters
    + + + +
    +[docs] +def hertz_to_mel(freq: float | np.ndarray, mel_scale: str = "htk") -> float | np.ndarray: + """ + Convert frequency from hertz to mels. + + Args: + freq (`float` or `np.ndarray`): + The frequency, or multiple frequencies, in hertz (Hz). + mel_scale (`str`, *optional*, defaults to `"htk"`): + The mel frequency scale to use, `"htk"` or `"slaney"`. + + Returns: + `float` or `np.ndarray`: The frequencies on the mel scale. + """ + + if mel_scale not in ["slaney", "htk"]: + raise ValueError('mel_scale should be one of "htk" or "slaney".') + + if mel_scale == "htk": + return 2595.0 * np.log10(1.0 + (freq / 700.0)) + + min_log_hertz = 1000.0 + min_log_mel = 15.0 + logstep = 27.0 / np.log(6.4) + mels = 3.0 * freq / 200.0 + + if isinstance(freq, np.ndarray): + log_region = freq >= min_log_hertz + mels[log_region] = min_log_mel + np.log(freq[log_region] / min_log_hertz) * logstep + elif freq >= min_log_hertz: + mels = min_log_mel + np.log(freq / min_log_hertz) * logstep + + return mels
    + + + +
    +[docs] +def mel_to_hertz(mels: float | np.ndarray, mel_scale: str = "htk") -> float | np.ndarray: + """ + Convert frequency from mels to hertz. + + Args: + mels (`float` or `np.ndarray`): + The frequency, or multiple frequencies, in mels. + mel_scale (`str`, *optional*, `"htk"`): + The mel frequency scale to use, `"htk"` or `"slaney"`. + + Returns: + `float` or `np.ndarray`: The frequencies in hertz. + """ + + if mel_scale not in ["slaney", "htk"]: + raise ValueError('mel_scale should be one of "htk" or "slaney".') + + if mel_scale == "htk": + return 700.0 * (10.0 ** (mels / 2595.0) - 1.0) + + min_log_hertz = 1000.0 + min_log_mel = 15.0 + logstep = np.log(6.4) / 27.0 + freq = 200.0 * mels / 3.0 + + if isinstance(mels, np.ndarray): + log_region = mels >= min_log_mel + freq[log_region] = min_log_hertz * np.exp(logstep * (mels[log_region] - min_log_mel)) + elif mels >= min_log_mel: + freq = min_log_hertz * np.exp(logstep * (mels - min_log_mel)) + + return freq
    + + + +def _create_triangular_filter_bank(fft_freqs: np.ndarray, filter_freqs: np.ndarray) -> np.ndarray: + """ + Creates a triangular filter bank. + + Adapted from *torchaudio* and *librosa*. + + Args: + fft_freqs (`np.ndarray` of shape `(num_frequency_bins,)`): + Discrete frequencies of the FFT bins in Hz. + filter_freqs (`np.ndarray` of shape `(num_mel_filters,)`): + Center frequencies of the triangular filters to create, in Hz. + + Returns: + `np.ndarray` of shape `(num_frequency_bins, num_mel_filters)` + """ + filter_diff = np.diff(filter_freqs) + slopes = np.expand_dims(filter_freqs, 0) - np.expand_dims(fft_freqs, 1) + down_slopes = -slopes[:, :-2] / filter_diff[:-1] + up_slopes = slopes[:, 2:] / filter_diff[1:] + return np.maximum(np.zeros(1), np.minimum(down_slopes, up_slopes)) +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/common_utils.html b/_modules/hezar/utils/common_utils.html new file mode 100644 index 00000000..4fe6f1d2 --- /dev/null +++ b/_modules/hezar/utils/common_utils.html @@ -0,0 +1,652 @@ + + + + + + + + hezar.utils.common_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.common_utils

    +from __future__ import annotations
    +
    +import inspect
    +import re
    +from time import perf_counter
    +from typing import Callable, Dict, List, Mapping
    +
    +from ..constants import Color
    +
    +
    +__all__ = [
    +    "exec_timer",
    +    "snake_case",
    +    "reverse_string_digits",
    +    "is_text_valid",
    +    "is_url",
    +    "colorize_text",
    +    "permute_dict_list",
    +    "sanitize_function_parameters",
    +]
    +
    +
    +
    +[docs] +class exec_timer: + """ + A context manager that captures the execution time of all the operations inside it + + Examples: + >>> with exec_timer() as timer: + >>> # operations here + >>> print(timer.time) + """ + + def __enter__(self): + self.time = perf_counter() + return self + + def __exit__(self, type, value, traceback): + self.time = perf_counter() - self.time
    + + + +
    +[docs] +def snake_case(s): + return "_".join(re.sub("([A-Z][a-z]+)", r" \1", re.sub("([A-Z]+)", r" \1", s.replace("-", " "))).split()).lower()
    + + + +
    +[docs] +def reverse_string_digits(text): + """ + Reverse all digit segments in a given text + """ + # Capture one or more digits followed by any number of non-digits followed by another digit + pattern = r"(\d+(?:\D\d+)*)" + + def reverse_match(match): + return match.group(1)[::-1] # Reverse the matched digits and special characters + + return re.sub(pattern, reverse_match, text)
    + + + +
    +[docs] +def is_text_valid(text, valid_characters): + """ + Given a list of valid characters, check if only those are included in the text + """ + pattern = re.compile(f'^[{re.escape("".join(valid_characters))}]+$') + return bool(pattern.match(text))
    + + + +
    +[docs] +def is_url(text): + url_pattern = re.compile( + r'^(https?|ftp)://' # Protocol (http, https, ftp) + r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # Domain + r'localhost|' # localhost + r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|' # IPv4 + r'\[?[A-F0-9]*:[A-F0-9:]+]?)' # IPv6 + r'(?::\d+)?' # Port + r'(?:/?\S*)?$', re.IGNORECASE + ) + return bool(re.match(url_pattern, text))
    + + + +
    +[docs] +def colorize_text(text: str, color: str | Color): + """ + Add colorization codes to the text. The output is the text with surrounding color codes and the colors are applied + on the console/terminal output like when using `print()` + """ + color_mapping = { + "header": Color.HEADER, + "normal": Color.NORMAL, + "bold": Color.BOLD, + "underline": Color.UNDERLINE, + "italic": Color.ITALIC, + "blue": Color.BLUE, + "cyan": Color.CYAN, + "green": Color.GREEN, + "yellow": Color.YELLOW, + "red": Color.RED, + "grey": Color.GREY, + } + if isinstance(color, str) and not hasattr(color, "value"): + color = color_mapping.get(color.lower(), Color.NORMAL) + return color + text + Color.NORMAL
    + + + +
    +[docs] +def permute_dict_list(dict_list: List[Dict]) -> Dict[str, List]: + """ + Convert a list of dictionaries to a dictionary of lists + + Args: + dict_list: Input list of dicts + + Returns: + + """ + if not len(dict_list): + return {} + d = {key: [x[key] for x in dict_list] for key in dict_list[0]} + return d
    + + + +
    +[docs] +def sanitize_function_parameters(func: Callable, params: Dict | Mapping, **kwargs): + """ + Given a dict of parameters or kwargs, you can figure out which ones must be passed to the `func` based on its + signature. + + Args: + func: The function object + params: A dict of parameters with values + kwargs: Keyword arguments that are merged with `params` + + Returns: + The proper dict of parameters keys and values + """ + params.update(**kwargs) + params_signature = dict(inspect.signature(func).parameters) + fn_parameters = {p for p, v in params_signature.items() if v.kind not in (v.VAR_KEYWORD, v.VAR_POSITIONAL)} + fn_params_names = set(fn_parameters) + input_params = {p: params[p] for p in fn_params_names if p in params} + return input_params
    + + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/data_utils.html b/_modules/hezar/utils/data_utils.html new file mode 100644 index 00000000..534f509a --- /dev/null +++ b/_modules/hezar/utils/data_utils.html @@ -0,0 +1,724 @@ + + + + + + + + hezar.utils.data_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.data_utils

    +from __future__ import annotations
    +
    +from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional
    +
    +from omegaconf import DictConfig
    +
    +from ..constants import PaddingType
    +from .logging import Logger
    +
    +
    +if TYPE_CHECKING:
    +    import torch
    +
    +
    +__all__ = [
    +    "convert_batch_dict_dtype",
    +    "resolve_inputs_length_for_padding",
    +    "pad_batch_items",
    +    "shift_tokens_right",
    +    "get_non_numeric_keys",
    +    "flatten_dict",
    +]
    +
    +logger = Logger(__name__)
    +
    +
    +# TODO: This code might be able to be written in a cleaner way, but be careful, any change might break a lot of things!
    +
    +[docs] +def convert_batch_dict_dtype(batch_dict: Dict[str, Any], dtype: str = None, skip_keys: list = None): + """ + Convert data dtypes of the values in a batch dict + + Args: + batch_dict: The batched dictionary. Each key in the dict has a batch of data as its value. + dtype: Target data type to convert to + skip_keys: A list of key names to skip conversion + + Returns: + The same dict with cast values + """ + import numpy as np + import torch + + dtype = dtype or "list" + skip_keys = skip_keys or [] + + if dtype == "list": + for k, v in batch_dict.items(): + if isinstance(v, np.ndarray): + batch_dict[k] = v.tolist() + elif isinstance(v, torch.Tensor): + batch_dict[k] = v.cpu().numpy().tolist() + return batch_dict + + if dtype in ["np", "numpy"]: + caster = np.asarray + cast_type = np.ndarray + elif dtype in ["pt", "torch", "pytorch"]: + caster = torch.tensor + cast_type = torch.Tensor + else: + raise ValueError(f"Invalid `dtype`: {dtype}") + + for k, v in batch_dict.items(): + if k not in skip_keys: + try: + if not isinstance(v, cast_type): + batch_dict[k] = caster(v) + except Exception as e: # noqa + logger.warning(f"Could not convert values of `{k}` to type `{dtype}`\n" f"Error: {e}") + return batch_dict
    + + + +
    +[docs] +def resolve_inputs_length_for_padding( + inputs: List[List[Any]], + padding_type: str | PaddingType = None, + max_length: Optional[bool | int] = None, + truncation: Optional[bool] = True, +): + """ + Resolve final inputs length based on padding_strategy and max_length values + """ + inputs_max_length = max([len(x) for x in inputs]) + padding = padding_type or "longest" + + # Resolve padding and max_length values first + if padding is None: + if max_length is not None: + padding = "max_length" + elif max_length is None: + padding = "longest" + + # Now lets resolve any conflicts + if padding == "longest": + if max_length is not None: + logger.warning( + "Setting padding='longest' and max_length is not valid. You must set one of them" + " and leave the other as None. Falling back to padding='longest'" + ) + + inputs_length = inputs_max_length + + elif padding == "max_length": + if max_length is None: + logger.warning( + "Setting padding='max_length' but no max_length value is provided! Falling back to padding='longest'" + ) + inputs_length = inputs_max_length + else: + if max_length < inputs_max_length and not truncation: + logger.warning( + f"Cannot set max_length to {max_length} " + f"while max input length is {inputs_max_length} and `truncation` is `False`" + f"Either set `truncation=True` or increase `max_length`" + ) + inputs_length = inputs_max_length + else: + inputs_length = max_length + else: + raise ValueError(f"Invalid padding value `{padding}`, expected either `max_length` or `longest`") + + return inputs_length
    + + + +
    +[docs] +def pad_batch_items( + inputs: List[List[int | float]], + padding_type: str | PaddingType = None, + padding_side: Literal["right", "left"] = "right", + pad_id: int = 0, + max_length: Optional[bool | int] = None, + truncation: Optional[bool] = True, +): + """ + Given a nested container of unequal sized iterables e.g, batch of token ids, pad them based on padding strategy + Args: + inputs: A nested iterable of unequal sized iterables (e.g, list of lists) + padding_type: Padding strategy, either max_length or longest + padding_side: Where to add padding ids, `left` or `right`, defaults to `right` + pad_id: Pad token id, defaults to `0` + max_length: Max input length after padding, only applicable when padding_strategy == "max_length" + truncation: Whether to truncate if an input in the batch is longer than max_length + + Returns: + A list of equal sized lists + """ + + inputs_length = resolve_inputs_length_for_padding(inputs, padding_type=padding_type, max_length=max_length, + truncation=truncation) + + padded_inputs = [] + for ids in inputs: + difference = inputs_length - len(ids) + if difference > 0: + paddings = [pad_id] * difference + padded_ids = ids + paddings if padding_side == "right" else paddings + ids + padded_inputs.append(padded_ids) + else: + padded_inputs.append(ids[:inputs_length]) + + return padded_inputs
    + + + +
    +[docs] +def shift_tokens_right(input_ids: "torch.Tensor", pad_token_id: int, decoder_start_token_id: int): + """ + Shift input ids one token to the right. + """ + shifted_input_ids = input_ids.new_zeros(input_ids.shape) + shifted_input_ids[:, 1:] = input_ids[:, :-1].clone() + shifted_input_ids[:, 0] = decoder_start_token_id + + # replace possible -100 values in labels by `pad_token_id` + shifted_input_ids.masked_fill_(shifted_input_ids == -100, pad_token_id) + + return shifted_input_ids
    + + + +
    +[docs] +def get_non_numeric_keys(d: Dict, batched=True): + """ + Get keys that have string values in a dictionary + + Args: + d: The dict + batched: Are the input dict values batched or not + + Returns: + A list of string-valued keys + """ + keys = [] + for k, v in d.items(): + if len(v) and isinstance(v[0], list): + if batched and not isinstance(v[0][0], (int, float, complex)) and not isinstance(v[0][0], bool): + keys.append(k) + elif isinstance(v[0], str): + keys.append(k) + return keys
    + + + +
    +[docs] +def flatten_dict(dict_config: Dict | DictConfig) -> DictConfig: + """ + Flatten a nested Dict/DictConfig object + + Args: + dict_config: A Dict/DictConfig object + + Returns: + The flattened version of the dict-like object + """ + + config = DictConfig({}) + for k, v in dict_config.items(): + if isinstance(v, (Dict, DictConfig)): + config.update(flatten_dict(v)) + else: + config[k] = v + + return config
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/file_utils.html b/_modules/hezar/utils/file_utils.html new file mode 100644 index 00000000..09e4bee4 --- /dev/null +++ b/_modules/hezar/utils/file_utils.html @@ -0,0 +1,552 @@ + + + + + + + + hezar.utils.file_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.file_utils

    +from __future__ import annotations
    +
    +import gzip
    +import json
    +import os
    +import shutil
    +
    +import omegaconf
    +
    +from .logging import Logger
    +
    +
    +logger = Logger(__name__)
    +
    +__all__ = [
    +    "gunzip",
    +    "load_yaml_config",
    +    "load_json_config",
    +]
    +
    +
    +
    +[docs] +def load_yaml_config(path: str | os.PathLike): + """ + Load yaml file using omegaconf + """ + config = omegaconf.OmegaConf.load(path) + return config
    + + + +
    +[docs] +def load_json_config(path: str | os.PathLike): + """ + Load json config file + """ + with open(path) as f: + config = json.load(f) + return config
    + + + +
    +[docs] +def gunzip(src_path, dest_path): + """ + Unzip a .gz file from `src_path` and extract to `dest_path` + Args: + src_path: Path to .gz file + dest_path: Path to the destination file + + Returns: + + """ + with gzip.open(src_path, "rb") as f_in: + with open(dest_path, "wb") as f_out: + shutil.copyfileobj(f_in, f_out) + logger.debug(f"Extracted {src_path} to {dest_path}")
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/hub_utils.html b/_modules/hezar/utils/hub_utils.html new file mode 100644 index 00000000..176270bc --- /dev/null +++ b/_modules/hezar/utils/hub_utils.html @@ -0,0 +1,672 @@ + + + + + + + + hezar.utils.hub_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.hub_utils

    +import os.path
    +
    +from huggingface_hub import HfApi, Repository
    +
    +from ..constants import HEZAR_CACHE_DIR, HEZAR_HUB_ID, RepoType
    +from ..utils.logging import Logger
    +
    +
    +__all__ = [
    +    "resolve_pretrained_path",
    +    "get_local_cache_path",
    +    "exists_in_cache",
    +    "exists_on_hub",
    +    "clone_repo",
    +    "list_repo_files",
    +    "get_state_dict_from_hub",
    +]
    +
    +logger = Logger(__name__)
    +
    +
    +
    +[docs] +def resolve_pretrained_path(hub_or_local_path): + """ + **DEPRECATED** + + Resolve a local or Hub path. If path exists locally it just returns the input, otherwise tries to resolve + hub_or_local_path. If it contains the namespace (author/org) leave it as is, otherwise change to hezarai/{hub_path} + + Args: + hub_or_local_path: Repo name or id + + Returns: + A proper pretrained path + """ + logger.warning("`resolve_pretrained_path` is deprecated! Use the raw `hub_or_local_path`!") + if os.path.isdir(hub_or_local_path): + return hub_or_local_path + repo_id = f"{HEZAR_HUB_ID}/{hub_or_local_path}" if "/" not in hub_or_local_path else hub_or_local_path + return repo_id
    + + + +
    +[docs] +def get_local_cache_path(repo_id, repo_type): + """ + Given the hub path and repo type, configure the local path to save everything e.g, ~/.hezar/models/<repo_name> + + Args: + repo_id: Repo name or id + repo_type: Repo type e.g, model, dataset, etc + + Returns: + Path to local cache directory + """ + repo_owner, repo_name = repo_id.split("/") + cache_path = f"{HEZAR_CACHE_DIR}/{repo_type}s--{repo_owner}--{repo_name}" + return cache_path
    + + + +
    +[docs] +def exists_in_cache(hub_path, repo_type="model"): + cache_path = get_local_cache_path(hub_path, repo_type) + return os.path.exists(cache_path)
    + + + +
    +[docs] +def exists_on_hub(hub_path: str, repo_type="model"): + """ + Determine whether the repo exists on the hub or not + + Args: + hub_path: Repo name or id + repo_type: Repo type like model, dataset, etc. + + Returns: + True or False + """ + author, repo_name = hub_path.split("/") + api = HfApi() + if repo_type == "model": + paths = list(iter(api.list_models(author=author))) + elif repo_type == "dataset": + paths = list(iter(api.list_datasets(author=author))) + elif repo_type == "space": + paths = list(iter(api.list_spaces(author=author))) + else: + raise ValueError(f"Unknown type: {repo_type}! Use `model`, `dataset`, `space`, etc.") + + return hub_path in [path.id for path in paths]
    + + + +
    +[docs] +def clone_repo(repo_id: str, save_path: str, **kwargs): + """ + Clone a repo on the hub to local directory + + Args: + repo_id: Repo name or id + save_path: Path to clone the repo to + + Returns: + the local path to the repo + """ + repo = Repository(local_dir=save_path, clone_from=repo_id, **kwargs) + return repo.local_dir
    + + + +
    +[docs] +def list_repo_files(hub_or_local_path: str, subfolder: str = None): + """ + List all files in a Hub or local model repo + + Args: + hub_or_local_path: Path to hub or local repo + subfolder: Optional subfolder path + + Returns: + A list of all file names + """ + if os.path.isdir(hub_or_local_path): + files_itr = os.walk(hub_or_local_path) + files = [] + for r, d, f in files_itr: + if r == hub_or_local_path: + files.append(f) + else: + for x in f: + files.append(f"{r.replace(f'{hub_or_local_path}/', '')}/{x}") + else: + files = HfApi().list_repo_files(hub_or_local_path, repo_type=str(RepoType.MODEL)) + + if subfolder is not None: + files = [x.replace(f"{subfolder}/", "") for x in files if subfolder in x] + + return files
    + + + +
    +[docs] +def get_state_dict_from_hub(hub_id, filename, subfolder=None): + """ + Load a state dict from a repo on the HF Hub. Works on any repo no matter the library. + + Args: + hub_id: Path to repo id + filename: Weights file name + subfolder: Optional subfolder in the repo + + Returns: + A PyTorch state dict obj + """ + import torch + + api = HfApi() + + subfolder = subfolder or "" + + # Download or load the cached file + weights_file = api.hf_hub_download( + repo_id=hub_id, + filename=filename, + subfolder=subfolder, + cache_dir=HEZAR_CACHE_DIR, + ) + + state_dict = torch.load(weights_file) + + return state_dict
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/image_utils.html b/_modules/hezar/utils/image_utils.html new file mode 100644 index 00000000..ccc72228 --- /dev/null +++ b/_modules/hezar/utils/image_utils.html @@ -0,0 +1,757 @@ + + + + + + + + hezar.utils.image_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.image_utils

    +from __future__ import annotations
    +
    +from io import BytesIO
    +from typing import Iterable, Tuple
    +
    +import numpy as np
    +import requests
    +import torch
    +
    +from ..constants import Backends, ChannelsAxisSide, ImageType
    +from .common_utils import is_url
    +from .integration_utils import is_backend_available
    +from .logging import Logger
    +
    +
    +logger = Logger(__name__)
    +
    +if is_backend_available(Backends.PILLOW):
    +    from PIL import Image
    +
    +__all__ = [
    +    "convert_image_type",
    +    "normalize_image",
    +    "load_image",
    +    "show_image",
    +    "rescale_image",
    +    "resize_image",
    +    "mirror_image",
    +    "gray_scale_image",
    +    "find_channels_axis_side",
    +    "transpose_channels_axis_side",
    +]
    +
    +
    +def verify_image_dims(image: np.ndarray):
    +    if len(image.shape) not in (2, 3):
    +        raise ValueError(f"Image input must be a numpy array of size 2 or 3! Got {image.shape}")
    +
    +
    +
    +[docs] +def convert_image_type( + image: np.ndarray | "Image" | torch.Tensor, + target_type: str | ImageType = ImageType.NUMPY, +): + """ + Convert image lib type. Supports numpy array, pillow image and torch tensor. + """ + if isinstance(image, Image.Image): + if image.mode == "L": + image = np.asarray(image) + image = np.expand_dims(image, 0) + else: + image = np.asarray(image) + elif isinstance(image, torch.Tensor): + image = image.cpu().numpy() + + verify_image_dims(image) + + if target_type == ImageType.PILLOW: + # transpose channels to the last axis since pillow cannot handle it otherwise + if find_channels_axis_side(image) == ChannelsAxisSide.FIRST: + image = transpose_channels_axis_side( + image, + axis_side=ChannelsAxisSide.LAST, + src_axis_side=ChannelsAxisSide.FIRST, + ) + num_channels = image.shape[0] if find_channels_axis_side(image) == ChannelsAxisSide.FIRST else image.shape[-1] + if num_channels == 1: + image = image[:, :, -1] + image = Image.fromarray(image, "L") + else: + image = Image.fromarray(image) + elif target_type == ImageType.TORCH: + image = torch.tensor(image) + + return image
    + + + +
    +[docs] +def load_image(path, return_type: str | ImageType = ImageType.PILLOW): + """ + Load an image file to a desired return format + + Args: + path: Path to image file + return_type: Image output type ("pillow", "numpy", "torch") + + Returns: + The desired output image of type `PIL.Image` or `numpy.ndarray` or `torch.Tensor` + """ + if is_url(path): + pil_image = Image.open(BytesIO(requests.get(path).content)).convert("RGB") + else: + pil_image = Image.open(path).convert("RGB") + converted_image = convert_image_type(pil_image, return_type) + return converted_image
    + + + +
    +[docs] +def show_image(image: "Image" | torch.Tensor | np.ndarray, title: str = "Image"): + """ + Given any type of input image (PIL, numpy, torch), show the image in a window + + Args: + image: Input image of types PIL.Image, numpy.ndarray or torch.Tensor + title: Optional title for the preview window + """ + pil_image = convert_image_type(image, ImageType.PILLOW) + pil_image.show(title=title)
    + + + +
    +[docs] +def rescale_image(image: np.ndarray, scale: float): + verify_image_dims(image) + image = image * scale + return image
    + + + +
    +[docs] +def resize_image( + image: np.ndarray, + size: Tuple[int, int], + resample=None, + reducing_gap: float = None, + return_type: ImageType = ImageType.NUMPY, +): + """ + Resize a numpy array image (actually uses pillow PIL.Image.resize(...)) + + Args: + image: Numpy image + size: A tuple of (width, height) + resample: Resampling filter (refer to PIL.Image.Resampling) for possible values + reducing_gap: Optimization method for resizing based on reducing times + return_type: Return type of the image (numpy, torch, pillow) + + Returns: + The resized image + """ + verify_image_dims(image) + if len(size) != 2: + raise ValueError(f"The value of `size` must be a 2-sized tuple! Got length {len(size)}(`{size}`)") + pil_image = convert_image_type(image, ImageType.PILLOW) + pil_image = pil_image.resize(size, resample=resample, reducing_gap=reducing_gap) + np_image = convert_image_type(pil_image, return_type) + return np_image
    + + + +
    +[docs] +def mirror_image(image: np.ndarray, return_type: str | ImageType = ImageType.NUMPY): + if not isinstance(image, np.ndarray): + raise ValueError("image must be a numpy array") + + verify_image_dims(image) + + pil_image = convert_image_type(image, ImageType.PILLOW) + pil_image = pil_image.transpose(Image.FLIP_LEFT_RIGHT) + final_image = convert_image_type(pil_image, return_type) + return final_image
    + + + +
    +[docs] +def gray_scale_image(image: np.ndarray, return_type: str | ImageType = ImageType.NUMPY): + if not isinstance(image, np.ndarray): + raise ValueError("image must be a numpy array") + + verify_image_dims(image) + + pil_image = convert_image_type(image, ImageType.PILLOW) + pil_image = pil_image.convert("L") + np_image = convert_image_type(pil_image, ImageType.NUMPY) + final_image = convert_image_type(np_image, target_type=return_type) + return final_image
    + + + +
    +[docs] +def normalize_image( + image: np.ndarray, + mean: float | Iterable[float], + std: float | Iterable[float], + channel_axis: str | ChannelsAxisSide = "first", +): + verify_image_dims(image) + + if not isinstance(image, np.ndarray): + raise ValueError("image must be a numpy array") + + num_channels = image.shape[0 if channel_axis == ChannelsAxisSide.FIRST else -1] + + if not isinstance(mean, Iterable): + mean = [mean] * num_channels + mean = np.array(mean, dtype=image.dtype) + + if not isinstance(std, Iterable): + std = [std] * num_channels + std = np.array(std, dtype=image.dtype) + + if channel_axis == ChannelsAxisSide.LAST: + image = (image - mean) / std + else: + image = ((image.T - mean) / std).T + + return image
    + + + +
    +[docs] +def find_channels_axis_side(image: np.ndarray, num_channels: int = None): + valid_num_channels = (num_channels,) if num_channels is not None else (1, 2, 3) + if image.shape[0] in valid_num_channels: + return ChannelsAxisSide.FIRST + else: + return ChannelsAxisSide.LAST
    + + + +
    +[docs] +def transpose_channels_axis_side( + image: np.ndarray, + axis_side: str | ChannelsAxisSide, + num_channels: int = None, + src_axis_side: str | ChannelsAxisSide = None, +): + """ + Convert an image channels axis side from (channels, ...) to (..., channels) or vise versa. + + Args: + image: Input image + axis_side: The desired axis side (can be "first" or "last") + num_channels: The number of channels in the input image + src_axis_side: The image initial channels axis side (can be "first" or "last") + + Returns: + The image with the converted channels axis + """ + if src_axis_side is None: + src_axis_side = find_channels_axis_side(image, num_channels=num_channels) + + # If input's channels axis side and output channels axis side are the same return the same image + if src_axis_side == axis_side: + return image + + if axis_side == ChannelsAxisSide.FIRST: + image = image.transpose((2, 0, 1)) + elif axis_side == ChannelsAxisSide.LAST: + image = image.transpose((1, 2, 0)) + + return image
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/integration_utils.html b/_modules/hezar/utils/integration_utils.html new file mode 100644 index 00000000..0a418593 --- /dev/null +++ b/_modules/hezar/utils/integration_utils.html @@ -0,0 +1,556 @@ + + + + + + + + hezar.utils.integration_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.integration_utils

    +from __future__ import annotations
    +
    +import importlib.util
    +from importlib.metadata import version
    +from typing import List
    +
    +from ..constants import Backends
    +
    +
    +__all__ = [
    +    "is_backend_available",
    +    "verify_dependencies",
    +    "get_lib_version",
    +]
    +
    +
    +
    +[docs] +def is_backend_available(backend: Backends): + """ + Check if the backend package is installed or not + + Args: + backend: Package name + + Returns: + Whether the package is available or not + """ + return importlib.util.find_spec(backend) is not None
    + + + +
    +[docs] +def verify_dependencies(obj, backends: List[Backends | str] = None): + """ + Check if all the required dependencies are installed or not. + + Args: + obj: The target object to check. (Usually `self`) + backends: A list of dependency names of type `str` or `Backends` + + Raises: + ModuleNotFoundError + """ + if backends is None: + return + unavailable = [] + for backend in backends: + if not is_backend_available(backend): + unavailable.append(backend) + if len(unavailable): + raise ModuleNotFoundError( + f"`{obj.__class__.__name__}` requires " + f"{f'`{unavailable[0]}`' if len(unavailable) == 1 else unavailable} " + f"which {'is' if len(unavailable) == 1 else 'are'} not installed!" + )
    + + + +
    +[docs] +def get_lib_version(lib: str): + return version(lib)
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/logging.html b/_modules/hezar/utils/logging.html new file mode 100644 index 00000000..dda4b7a5 --- /dev/null +++ b/_modules/hezar/utils/logging.html @@ -0,0 +1,518 @@ + + + + + + + + hezar.utils.logging - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.logging

    +import logging
    +
    +
    +__all__ = ["Logger"]
    +
    +
    +
    +[docs] +class Logger(logging.Logger): + def __init__(self, name: str, level=None, fmt=None): + fmt = fmt or "Hezar (%(levelname)s): %(message)s" + level = level or "INFO" + super().__init__(name, level) + handler = logging.StreamHandler() + formatter = logging.Formatter(fmt) + handler.setFormatter(formatter) + self.addHandler(handler) + +
    +[docs] + def log_upload_success(self, name, target_path: str): + """ + Log (info) success info when the file(s) upload is done. + """ + self.info(f"Uploaded: `{name}` --> `{target_path}`")
    +
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/hezar/utils/registry_utils.html b/_modules/hezar/utils/registry_utils.html new file mode 100644 index 00000000..97077c1c --- /dev/null +++ b/_modules/hezar/utils/registry_utils.html @@ -0,0 +1,679 @@ + + + + + + + + hezar.utils.registry_utils - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    Source code for hezar.utils.registry_utils

    +from ..constants import RegistryType
    +from .common_utils import snake_case
    +
    +
    +__all__ = [
    +    "list_available_models",
    +    "list_available_preprocessors",
    +    "list_available_datasets",
    +    "list_available_metrics",
    +    "list_available_embeddings",
    +    "get_registry_point",
    +    "get_module_class",
    +    "get_module_config_class",
    +    "get_registry_key_by_module_class",
    +]
    +
    +
    +
    +[docs] +def list_available_models(): + registry = _get_registry_from_type(RegistryType.MODEL) + + return sorted(registry.keys())
    + + + +
    +[docs] +def list_available_preprocessors(): + registry = _get_registry_from_type(RegistryType.PREPROCESSOR) + + return sorted(registry.keys())
    + + + +
    +[docs] +def list_available_datasets(): + registry = _get_registry_from_type(RegistryType.DATASET) + + return sorted(registry.keys())
    + + + +
    +[docs] +def list_available_metrics(): + registry = _get_registry_from_type(RegistryType.METRIC) + + return sorted(registry.keys())
    + + + +
    +[docs] +def list_available_embeddings(): + registry = _get_registry_from_type(RegistryType.EMBEDDING) + + return sorted(registry.keys())
    + + + +def _get_registry_from_type(registry_type: RegistryType): + if registry_type == RegistryType.MODEL: + from ..models import Model # noqa + from ..registry import models_registry # noqa + + registry = models_registry + + elif registry_type == RegistryType.PREPROCESSOR: + from ..preprocessors import Preprocessor # noqa + # Also import models since some preprocessors are in their own model module + from ..models import Model # noqa + from ..registry import preprocessors_registry # noqa + + registry = preprocessors_registry + + elif registry_type == RegistryType.DATASET: + from ..data import Dataset # noqa + from ..registry import datasets_registry # noqa + + registry = datasets_registry + + elif registry_type == RegistryType.EMBEDDING: + from ..embeddings import Embedding # noqa + from ..registry import embeddings_registry # noqa + + registry = embeddings_registry + + elif registry_type == RegistryType.METRIC: + from ..metrics import Metric # noqa + from ..registry import metrics_registry # noqa + + registry = metrics_registry + + else: + raise ValueError(f"Invalid `registry_type`: {registry_type}!") + + return registry + + +
    +[docs] +def get_registry_point(registry_key: str, registry_type: RegistryType): + """ + Get the registry item by registry key name in a specific registry + + Args: + registry_key: Module's name in the registry + registry_type: Module's registry container type + + Returns: + A Registry object + """ + registry = _get_registry_from_type(registry_type) + + registry = registry[registry_key] + return registry
    + + + +
    +[docs] +def get_module_config_class(name: str, registry_type: RegistryType): + """ + Get the config class for a given module based on its registry name. + + Args: + name (str): Module's registry name + registry_type (str): Registry type + + Returns: + A class of type :class:`hezar.Config` + """ + registry = _get_registry_from_type(registry_type) + + if name not in registry: + return None + + config_cls = registry[name].config_class + return config_cls
    + + + +
    +[docs] +def get_module_class(name: str, registry_type: RegistryType): + """ + Get module class based on registry name + + Args: + name: Module's key name in its registry + registry_type: Type of the module e.g, model, dataset, preprocessor, embedding, etc + + Returns: + A class corresponding to the given module + """ + registry = _get_registry_from_type(registry_type) + + name = snake_case(name) + module_cls = registry[name].module_class + return module_cls
    + + + +
    +[docs] +def get_registry_key_by_module_class(module_class: type, registry_type: RegistryType): + """ + Given the module class, return the registry key if exists + + Args: + module_class: The module class (raw class, not the name or object) + registry_type: The registry type + + Returns: + The corresponding key for the class in its registry + """ + registry = _get_registry_from_type(registry_type) + key_values = {v.module_class.__name__: k for k, v in registry.items()} + module_class_name = module_class.__name__ + if module_class_name not in key_values: + raise KeyError( + f"The requested {registry_type} class `{module_class_name}` does not exist " + f"in the {registry_type}s registry!" + ) + return key_values[module_class.__name__]
    + +
    +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 00000000..0184e51d --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,577 @@ + + + + + + + + Overview: module code - Hezar Documentation + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    +
    + +
    + +
    +
    +

    All modules for which code is available

    + +
    +
    +
    + + +
    +
    + + Made with Sphinx and @pradyunsg's + + Furo + +
    +
    +
    + + + + +
    +
    +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/_sources/contributing.md.txt b/_sources/contributing.md.txt new file mode 100644 index 00000000..642eb3a3 --- /dev/null +++ b/_sources/contributing.md.txt @@ -0,0 +1,102 @@ +# Contributing to Hezar +Welcome to Hezar! We greatly appreciate your interest in contributing to this project and helping us make it even more +valuable to the Persian community. Whether you're a developer, researcher, or enthusiast, your contributions are +invaluable in helping us grow and improve Hezar. + +Before you start contributing, please take a moment to review the following guidelines. + +## Code of Conduct + +This project and its community adhere to +the [Contributor Code of Conduct](https://github.com/hezarai/hezar/blob/main/CODE_OF_CONDUCT.md). + +## How to Contribute + +### Reporting Bugs + +If you come across a bug or unexpected behavior, please help us by reporting it. +Use the [GitHub Issue Tracker](https://github.com/hezarai/hezar/issues) to create a detailed bug report. +Include information such as: + +- A clear and descriptive title. +- Steps to reproduce the bug. +- Expected behavior. +- Actual behavior. +- Your operating system and Python version. + +### Adding features + +Have a great idea for a new feature or improvement? We'd love to hear it. You can open an issue and add your suggestion +with a clear description and further suggestions on how it can be implemented. Also, if you already can implement it +yourself, just follow the instructions on how you can send a PR. + +### Adding/Improving documents + +Have a suggestion to enhance our documentation or want to contribute entirely new sections? We welcome your input!
    +Here's how you can get involved:
    +Docs website is deployed here: [https://hezarai.github.io/hezar](https://hezarai.github.io/hezar) and the source for the +docs are located at the [docs](https://github.com/hezarai/hezar/tree/main/docs) folder in the root of the repo. Feel +free to apply your changes or add new docs to this section. Notice that docs are written in Markdown format. In case you have +added new files to this section, you must include them in the `index.md` file in the same folder. For example, if you've +added the file `new_doc.md` to the `get_started` folder, you have to modify `get_started/index.md` and put your file +name there. + +### Commit guidelines + +#### Functional best practices + +- Ensure only one "logical change" per commit for efficient review and flaw identification. +- Smaller code changes facilitate quicker reviews and easier troubleshooting using Git's bisect capability. +- Avoid mixing whitespace changes with functional code changes. +- Avoid mixing two unrelated functional changes. +- Refrain from sending large new features in a single giant commit. + +#### Styling best practices + +- Use imperative mood in the subject (e.g., "Add support for ..." not "Adding support or added support") . +- Keep the subject line short and concise, preferably less than 50 characters. +- Capitalize the subject line and do not end it with a period. +- Wrap body lines at 72 characters. +- Use the body to explain what and why a change was made. +- Do not explain the "how" in the commit message; reserve it for documentation or code. +- For commits referencing an issue or pull request, write the proper commit subject followed by the reference in + parentheses (e.g., "Add NFKC normalizer (#9999)"). +- Reference codes & paths in back quotes (e.g., `variable`, `method()`, `Class()`, `file.py`). +- Preferably use the following [gitmoji](https://gitmoji.dev/) compatible codes at the beginning of your commit message: + +| Emoji Code | Emoji | Description | Example Commit | +|----------------------|-------|----------------------------------------------|----------------------------------------------------------------| +| `:bug:` | 🐛 | Fix a bug or issue | `:bug: Fix issue with image loading in DataLoader` | +| `:sparkles:` | ✨ | Add feature or improvements | `:sparkles: Introduce support for text summarization` | +| `:recycle:` | ♻️ | Refactor code (backward compatible refactor) | `:recycle: Refactor data preprocessing utilities` | +| `:memo:` | 📝 | Add or change docs | `:memo: Update documentation for text classification` | +| `:pencil2:` | ✏️ | Minor change or improvement | `:pencil2: Improve logging in Trainer` | +| `:fire:` | 🔥 | Remove code or file | `:fire: Remove outdated utility function` | +| `:boom:` | 💥 | Introduce breaking changes | `:boom: Update API, requires modification in existing scripts` | +| `:test_tube:` | 🧪 | Test-related changes | `:test_tube: Add unit tests for data loading functions` | +| `:bookmark:` | 🔖 | Version release | `:bookmark: Release v1.0.0` | +| `:adhesive_bandage:` | 🩹 | Non-critical fix | `:adhesive_bandage: Fix minor issue in BPE tokenizer` | + +## Sending a PR + +In order to apply any change to the repo, you have to follow these step: + +1. Fork the Hezar repository. +2. Create a new branch for your feature, bug fix, etc. +3. Make your changes. +4. Update the documentation to reflect your changes. +5. Ensure your code adheres to the [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html). +6. Format the code using `ruff` (`ruff check --fix .`) +7. Write tests to ensure the functionality if needed. +8. Run tests and make sure all of them pass. (Skip this step if your changes do not involve codes) +9. Open a pull request from your fork and the PR template will be automatically loaded to help you do the rest. +10. Be responsive to feedback and comments during the review process. +11. Thanks for contributing to the Hezar project.😉❤️ + +## License + +By contributing to Hezar, you agree that your contributions will be licensed under +the [Apache 2.0 License](https://github.com/hezarai/hezar/blob/main/LICENSE). + +We look forward to your contributions and appreciate your efforts in making Hezar a powerful AI tool for the Persian +community! \ No newline at end of file diff --git a/_sources/get_started/index.md.txt b/_sources/get_started/index.md.txt new file mode 100644 index 00000000..df4c6cf6 --- /dev/null +++ b/_sources/get_started/index.md.txt @@ -0,0 +1,8 @@ +# Get Started +```{toctree} +:maxdepth: 1 + +overview.md +installation.md +quick_tour.md +``` diff --git a/_sources/get_started/installation.md.txt b/_sources/get_started/installation.md.txt new file mode 100644 index 00000000..d04666f9 --- /dev/null +++ b/_sources/get_started/installation.md.txt @@ -0,0 +1,41 @@ +# Installation + +## Install from PyPi +Installing Hezar is as easy as any other Python library! Most of the requirements are cross-platform and installing +them on any machine is a piece of cake! + +``` +pip install hezar +``` +### Installation variations +Hezar is packed with a lot of tools that are dependent on other packages. Most of the +time you might not want everything to be installed, hence, providing multiple variations of +Hezar so that the installation is light and fast for general use. + +You can install optional dependencies for each mode like so: +``` +pip install hezar[nlp] # For natural language processing +pip install hezar[vision] # For computer vision and image processing +pip install hezar[audio] # For audio and speech processing +pip install hezar[embeddings] # For word embeddings +``` +Or you can also install everything using: +``` +pip install hezar[all] +``` +## Install from source +Also, you can install the dev version of the library using the source: +``` +pip install git+https://github.com/hezarai/hezar.git +``` + +## Test installation +From a Python console or in CLI just import `hezar` and check the version: +```python +import hezar + +print(hezar.__version__) +``` +``` +0.23.1 +``` diff --git a/_sources/get_started/overview.md.txt b/_sources/get_started/overview.md.txt new file mode 100644 index 00000000..5154e93d --- /dev/null +++ b/_sources/get_started/overview.md.txt @@ -0,0 +1,20 @@ +# Overview + +Welcome to Hezar! A library that makes state-of-the-art machine learning as easy as possible aimed for the Persian +language, built by the Persian community! + +In Hezar, the primary goal is to provide plug-and-play AI/ML utilities so that you don't need to know much about what's +going on under the hood. Hezar is not just a model library, but instead it's packed with every aspect you need for any +ML pipeline like datasets, trainers, preprocessors, feature extractors, etc. + +Hezar is a library that: +- brings together all the best works in AI for Persian +- makes using AI models as easy as a couple of lines of code +- seamlessly integrates with Hugging Face Hub for all of its models +- has a highly developer-friendly interface +- has a task-based model interface which is more convenient for general users. +- is packed with additional tools like word embeddings, tokenizers, feature extractors, etc. +- comes with a lot of supplementary ML tools for deployment, benchmarking, optimization, etc. +- and more! + +To find out more, just take the [quick tour](quick_tour.md)! diff --git a/_sources/get_started/quick_tour.md.txt b/_sources/get_started/quick_tour.md.txt new file mode 100644 index 00000000..0891aebe --- /dev/null +++ b/_sources/get_started/quick_tour.md.txt @@ -0,0 +1,214 @@ +# Quick Tour +## Models +There's a bunch of ready to use trained models for different tasks on the Hub! + +**🤗Hugging Face Hub Page**: [https://huggingface.co/hezarai](https://huggingface.co/hezarai) + +Let's walk you through some examples! + +- **Text Classification (sentiment analysis, categorization, etc)** +```python +from hezar.models import Model + +example = ["هزار، کتابخانه‌ای کامل برای به کارگیری آسان هوش مصنوعی"] +model = Model.load("hezarai/bert-fa-sentiment-dksf") +outputs = model.predict(example) +print(outputs) +``` +``` +[[{'label': 'positive', 'score': 0.812910258769989}]] +``` +- **Sequence Labeling (POS, NER, etc.)** +```python +from hezar.models import Model + +pos_model = Model.load("hezarai/bert-fa-pos-lscp-500k") # Part-of-speech +ner_model = Model.load("hezarai/bert-fa-ner-arman") # Named entity recognition +inputs = ["شرکت هوش مصنوعی هزار"] +pos_outputs = pos_model.predict(inputs) +ner_outputs = ner_model.predict(inputs) +print(f"POS: {pos_outputs}") +print(f"NER: {ner_outputs}") +``` +``` +POS: [[{'token': 'شرکت', 'label': 'Ne'}, {'token': 'هوش', 'label': 'Ne'}, {'token': 'مصنوعی', 'label': 'AJe'}, {'token': 'هزار', 'label': 'NUM'}]] +NER: [[{'token': 'شرکت', 'label': 'B-org'}, {'token': 'هوش', 'label': 'I-org'}, {'token': 'مصنوعی', 'label': 'I-org'}, {'token': 'هزار', 'label': 'I-org'}]] +``` +- **Language Modeling (Mask Filling)** +```python +from hezar.models import Model + +roberta_mask_filling = Model.load("hezarai/roberta-fa-mask-filling") +inputs = ["سلام بچه ها حالتون "] +outputs = roberta_mask_filling.predict(inputs, top_k=1) +print(outputs) +``` +``` +[[{'token': 'چطوره', 'sequence': 'سلام بچه ها حالتون چطوره', 'token_id': 34505, 'score': 0.2230483442544937}]] +``` +- **Speech Recognition** +```python +from hezar.models import Model + +whisper = Model.load("hezarai/whisper-small-fa") +transcripts = whisper.predict("examples/assets/speech_example.mp3") +print(transcripts) +``` +``` +[{'text': 'و این تنها محدود به محیط کار نیست'}] +``` +- **Image to Text (OCR)** +```python +from hezar.models import Model +# OCR with TrOCR +model = Model.load("hezarai/trocr-base-fa-v2") +texts = model.predict(["examples/assets/ocr_example.jpg"]) +print(f"TrOCR Output: {texts}") + +# OCR with CRNN +model = Model.load("hezarai/crnn-fa-printed-96-long") +texts = model.predict("examples/assets/ocr_example.jpg") +print(f"CRNN Output: {texts}") +``` +``` +TrOCR Output: [{'text': 'چه میشه کرد، باید صبر کنیم'}] +CRNN Output: [{'text': 'چه میشه کرد، باید صبر کنیم'}] +``` +![](https://raw.githubusercontent.com/hezarai/hezar/main/examples/assets/ocr_example.jpg) + +- **Image to Text (License Plate Recognition)** +```python +from hezar.models import Model + +model = Model.load("hezarai/crnn-fa-64x256-license-plate-recognition") +plate_text = model.predict("assets/license_plate_ocr_example.jpg") +print(plate_text) # Persian text of mixed numbers and characters might not show correctly in the console +``` +``` +[{'text': '۵۷س۷۷۹۷۷'}] +``` +![](https://raw.githubusercontent.com/hezarai/hezar/main/examples/assets/license_plate_ocr_example.jpg) + +- **Image to Text (Image Captioning)** +```python +from hezar.models import Model + +model = Model.load("hezarai/vit-roberta-fa-image-captioning-flickr30k") +texts = model.predict("examples/assets/image_captioning_example.jpg") +print(texts) +``` +``` +[{'text': 'سگی با توپ تنیس در دهانش می دود.'}] +``` +![](https://raw.githubusercontent.com/hezarai/hezar/main/examples/assets/image_captioning_example.jpg) + +We constantly keep working on adding and training new models and this section will hopefully be expanding over time ;) +## Word Embeddings +- **FastText** +```python +from hezar.embeddings import Embedding + +fasttext = Embedding.load("hezarai/fasttext-fa-300") +most_similar = fasttext.most_similar("هزار") +print(most_similar) +``` +``` +[{'score': 0.7579, 'word': 'میلیون'}, + {'score': 0.6943, 'word': '21هزار'}, + {'score': 0.6861, 'word': 'میلیارد'}, + {'score': 0.6825, 'word': '26هزار'}, + {'score': 0.6803, 'word': '٣هزار'}] +``` +- **Word2Vec (Skip-gram)** +```python +from hezar.embeddings import Embedding + +word2vec = Embedding.load("hezarai/word2vec-skipgram-fa-wikipedia") +most_similar = word2vec.most_similar("هزار") +print(most_similar) +``` +``` +[{'score': 0.7885, 'word': 'چهارهزار'}, + {'score': 0.7788, 'word': '۱۰هزار'}, + {'score': 0.7727, 'word': 'دویست'}, + {'score': 0.7679, 'word': 'میلیون'}, + {'score': 0.7602, 'word': 'پانصد'}] +``` +- **Word2Vec (CBOW)** +```python +from hezar.embeddings import Embedding + +word2vec = Embedding.load("hezarai/word2vec-cbow-fa-wikipedia") +most_similar = word2vec.most_similar("هزار") +print(most_similar) +``` +``` +[{'score': 0.7407, 'word': 'دویست'}, + {'score': 0.7400, 'word': 'میلیون'}, + {'score': 0.7326, 'word': 'صد'}, + {'score': 0.7276, 'word': 'پانصد'}, + {'score': 0.7011, 'word': 'سیصد'}] +``` +For a full guide on the embeddings module, see the [embeddings tutorial](https://hezarai.github.io/hezar/tutorial/embeddings.html). +## Datasets +You can load any of the datasets on the [Hub](https://huggingface.co/hezarai) like below: +```python +from hezar.data import Dataset + +sentiment_dataset = Dataset.load("hezarai/sentiment-dksf") # A TextClassificationDataset instance +lscp_dataset = Dataset.load("hezarai/lscp-pos-500k") # A SequenceLabelingDataset instance +xlsum_dataset = Dataset.load("hezarai/xlsum-fa") # A TextSummarizationDataset instance +alpr_ocr_dataset = Dataset.load("hezarai/persian-license-plate-v1") # An OCRDataset instance +... +``` +The returned dataset objects from `load()` are PyTorch Dataset wrappers for specific tasks and can be used by a data loader out-of-the-box! + +You can also load Hezar's datasets using 🤗Datasets: +```python +from datasets import load_dataset + +dataset = load_dataset("hezarai/sentiment-dksf") +``` +For a full guide on Hezar's datasets, see the [datasets tutorial](https://hezarai.github.io/hezar/tutorial/datasets.html). +## Training +Hezar makes it super easy to train models using out-of-the-box models and datasets provided in the library. + +```python +from hezar.models import BertSequenceLabeling, BertSequenceLabelingConfig +from hezar.data import Dataset +from hezar.trainer import Trainer, TrainerConfig +from hezar.preprocessors import Preprocessor + +base_model_path = "hezarai/bert-base-fa" +dataset_path = "hezarai/lscp-pos-500k" + +train_dataset = Dataset.load(dataset_path, split="train", tokenizer_path=base_model_path) +eval_dataset = Dataset.load(dataset_path, split="test", tokenizer_path=base_model_path) + +model = BertSequenceLabeling(BertSequenceLabelingConfig(id2label=train_dataset.config.id2label)) +preprocessor = Preprocessor.load(base_model_path) + +train_config = TrainerConfig( + output_dir="bert-fa-pos-lscp-500k", + task="sequence_labeling", + device="cuda", + init_weights_from=base_model_path, + batch_size=8, + num_epochs=5, + metrics=["seqeval"], +) + +trainer = Trainer( + config=train_config, + model=model, + train_dataset=train_dataset, + eval_dataset=eval_dataset, + data_collator=train_dataset.data_collator, + preprocessor=preprocessor, +) +trainer.train() + +trainer.push_to_hub("bert-fa-pos-lscp-500k") # push model, config, preprocessor, trainer files and configs +``` + +Want to go deeper? Check out the [guides](../guide/index.md). diff --git a/_sources/guide/advanced_training.md.txt b/_sources/guide/advanced_training.md.txt new file mode 100644 index 00000000..0da1a2cd --- /dev/null +++ b/_sources/guide/advanced_training.md.txt @@ -0,0 +1,2 @@ +# Advanced Training +Docs coming soon, stay tuned! diff --git a/_sources/guide/hezar_architecture.md.txt b/_sources/guide/hezar_architecture.md.txt new file mode 100644 index 00000000..cd6a7e71 --- /dev/null +++ b/_sources/guide/hezar_architecture.md.txt @@ -0,0 +1,289 @@ +# Hazer's Architecture + +Right from the first lines of code, Hezar was built having **simplicity**, **modularity** and **extensibility** in mind. +Hezar has a simple yet flexible design pattern that can be seen among most of its main modules. In this guide we +demonstrate the main ideas behind the design. + +Going forward, by the term _module_, we mean any main class +like `Model`, `Dataset`, `Metric`, `Trainer`, `Preprocessor`, +etc. + +## Concept 1: Configurable Modules + +Every single module object in Hezar can be constructed from a key-value container. This container is the module's config +which contains everything needed to build an object from that module. In order to have a portable serializable config +that can be also converted to Python code, there lies Hezar's most important class called `Config`. The `Config` class +is a simple Python dataclass that is equipped with extra methods for importing, exporting, pushing to the Hub, etc. +The `Config` class is defined in `hezar/configs.py` among other config derivatives. +Right now the config derivatives are: + +- `ModelConfig` +- `DatasetConfig` +- `PreprocessorConfig` +- `TrainerConfig` +- `EmbeddingConfig` +- `MetricConfig` + +So every module must have its own config inherited from `Config`. When defining a new config dataclass, one must define +a unique name (as the parameter `name`), responsible for identifying the module type that uses that config class. We'll +discuss why this `name` parameter is necessary in the registry section. + +To give some examples: + +Let's assume you want to write a new model class called `AwesomeModel`. The first step is to provide a config dataclass: + +```python +from dataclasses import dataclass +from hezar.models import ModelConfig, Model + + +@dataclass +class MyAwesomeModelConfig(ModelConfig): + name = "my_awesome_model" # this has to be a unique name among all models configs + my_param: str = "awesome" + other_param: str = "more_awesome" + + +class MyAwesomeModel(Model): + def __init__(self, config, **kwargs): + super().__init__(config, **kwargs) + # Define the layers or any other stuff here + ... + + def forward(self, inputs, **kwargs): + # Casual PyTorch forward method + ... +``` + +Wait, what's that name for? Why would you need to define a name for everything? The short answer is +_Hezar's registry system_. So let's dive into it! + +## Concept 2: Modules' Registries + +There are lots of base modules in Hezar and many of which might have dozens of subclasses, but as you might have seen by +now, almost every module can load its class using the same base class in a single line. Take a look at the below +snippets: + +```python +# Load a model +from hezar.models import Model + +roberta_tc = Model.load("hezarai/roberta-fa-sentiment-dksf") # roberta_tc is a RobertaTextClassification instance +bert_pos = Model.load("hezarai/bert-fa-pos-lscp-500k") # bert_pos is a BertSequenceLabeling instance +whisper_speech = Model.load("hezarai/whisper-small-fa") # whisper_speech is a WhisperSpeechRecognition instance +... +# Load a dataset +from hezar.data import Dataset + +sentiment_dataset = Dataset.load("hezarai/sentiment-dksf") # A TextClassificationDataset instance +lscp_dataset = Dataset.load("hezarai/lscp-pos-500k") # A SequenceLabelingDataset instance +xlsum_dataset = Dataset.load("hezarai/xlsum-fa") # A TextSummarizationDataset instance +... +# Load preprocessors +from hezar.preprocessors import Preprocessor + +wordpiece = Preprocessor.load("hezarai/bert-base-fa") # A WordPieceTokenizer instance +whisper_bpe = Preprocessor.load("hezarai/whisper-small-fa") # A WhisperBPETokenizer instance +sp_unigram_bpe = Preprocessor.load("hezarai/t5-base-fa") # A SentencePieceUnigramTokenizer instance +... +# Load embedding +from hezar.embeddings import Embedding + +fasttext = Embedding.load("hezarai/fasttext-fa-300") # A FastText instance +word2vec = Embedding.load("hezarai/word2vec-skipgram-fa-wikipedia") # A Word2Vec instance +... +``` + +So, what's going on under the hood that handles module loading and initiation? + +**Registry System** + +Well, there are ways to tackle this challenge, but Hezar manages this by using _a global registry_ for every module +type. These registries are simple Python dictionaries that hold the properties for every module class, module config, +etc. +The general structure is like below: + +```python +# Models registry for example +models_registry = { + "bert_text_classification": Registry( + module_class=hezar.models.text_classification.bert.bert_text_classification.BertTextClassification, + config_class=hezar.models.text_classification.bert.bert_text_classification_config.BertTextClassificationConfig, + description="SOME MODEL DESCRIPTION ..." + ), + "AND SO ON...": Registry(...) +} +``` +Each registry value is a `Registry` (data)class that has 3 properties: `config_class`, `module_class` and `description`. +- `module_class`: Holds the class object for the module. Using this property you can actually create the module object. +- `config_class`: Holds the config class and can be passed to the module class so that the module can be created. +- `description`: Holds the description of the model if given. + +But how are the modules inserted into the registries? The answer is _registry class decorators_ + +**`register_*()` Class Decorators** + +In the file `hezar/registry.py`, there are a bunch of decorator functions that fulfill the task of registering any module +into the right registry automagically! +These decorators take two parameters: +- `name`: A string name that has to be the same as the one in config +- `config_class`: The config class +- `description`: Optional description for the module + +The example below demonstrates registering a model: +```python +... +from hezar.models import Model, ModelConfig + +@dataclass +class MyBertConfig(ModelConfig): + name = "my_bert" + vocab_size: int = 1000 + hidden_size: int = 768 + +# Below line is all you need to add `my_bert` to `models_registry` +@register_model("my_bert", config_class=MyBertConfig) +class MyBert(Model): + def __init__(self, config: MyBertConfig, **kwargs): + super().__init__(config, **kwargs) + + def forward(self, inputs, **kwargs): + ... + +``` +Registry decorators currently include: +- `register_model` +- `register_preprocessor` +- `register_dataset` +- `register_embedding` +- `register_metric` +- `register_trainer` + +**Getting Available Modules** + +To figure out what modules are available in a registry, there are also utils for that: +```python +from hezar import utils + +print(utils.list_available_models()) +print(utils.list_available_preprocessors()) +print(utils.list_available_datasets()) +print(utils.list_available_metrics()) +print(utils.list_available_embeddings()) +... +``` +**Creating Modules from Registry Names** + +So now it's pretty easy to create modules objects using their `name`! Let's say you want to create a +BPE tokenizer. You can do it this way: +```python +from hezar.registry import preprocessors_registry + +module_cls = preprocessors_registry["bpe_tokenizer"].module_class +config_cls = preprocessors_registry["bpe_tokenizer"].config_class + +bpe = module_cls(config_cls()) +``` +Although, this is not how it's actually done in Hezar because it's long and ugly! To handle this properly we use another +internal feature of Hezar called the _builders_! + + +**Builders** + +Using builders you can build modules from their registry names in a single line of code. +These family of functions take 3 main parameters: +- `name`: A registry key name representing that module. This name has to be present in the corresponding registry! +- `config`: Optionally you can pass a config object to control how the module is built. The config has to be of a type that the module accepts. +- `**kwargs`: Optionally you can pass config parameters as keyword arguments to override the default config. (The override priority is `kwargs` > `config` > default config) +```python +from hezar import builders + +bert = builders.build_model("bert_mask_filling", hidden_size=768, vocab_size=50000) +sp_bpe = builders.build_preprocessor("sentencepiece_bpe_tokenizer") +tc_dataset = builders.build_dataset("text_classification", path="hezarai/sentiment-dksf", tokenizer_path="hezarai/bert-base-fa") +... +``` +Available builders include: +- `build_model` +- `build_dataset` +- `build_preprocessor` +- `build_embedding` +- `build_metric` + +So why would you need to use builders or registries when you can import everything normally? like below: +```python +from hezar.models import WhisperSpeechRecognition, WhisperSpeechRecognitionConfig + +whisper = WhisperSpeechRecognition(WhisperSpeechRecognitionConfig(max_new_tokens=400)) +``` +The answer is that if you want to do it in a straightforward way, you can always use the classes directly. But the fact is that everything works with +configs and a config must have at least some identifiers so that a module can be initialized from it. The main usage of +the registries is to be able to create everything from the configs! So lets slide into the next section, the Hub! + +## Concept 3: Hugging Face Hub Integration +In Hezar, EVERY module can be uploaded to or downloaded from the Hugging Face Hub with ease! Modules have 3 main methods +to do so: +- `load`: A method implemented in any type of base class that loads the module from the Hub or local disk automagically! +- `save`: A method to save all the necessary files and configurations to a path on the local disk. +- `push_to_hub`: A method implemented in any type of base class that pushes all the necessary files and configurations to the Hub so that the module can be loaded from the Hub again. + +**Loading** + +All base modules implement their own `load` method based on their characteristics. But the first step in every load +process is loading the configuration as all the info lies there, and then any other file is loaded. +For example the class `Model` first loads its config and builds the model using `build_model` and the config parameters. +Then the state dict is loaded to the model. If the path contains preprocessor files and configs, it would load them too. +On the other hand, some simple modules like metric might just load the config to create a metric instance. +One important feature of any `load` method is that like builders, it accepts config parameters as keyword arguments so +that you can override config properties. + +**Saving** + +Almost every module has the `save` method implemented which is responsible for saving config and other related files to the +disk. This method takes a `path` parameter which is just the base folder path and any necessary subfolder will be created +automatically based on the module type. For example, if you save a tokenizer at path `my_tokenizer/`, the `Tokenizer`'s +`save` method will create a `preprocessor` folder and saves the `tokenizer.json` and `tokenizer_config.yaml` on that +folder. You can control the `subfolder` parameter and other file/path names if the base class gives you the option. + +**Pushing to the Hub** + +Pushing to the Hugging Face Hub is so much like the save method. The only difference is that the files are then uploaded +to the Hub after saving. + + +## Concept 4: Task-based Modeling & Training +Hezar is a practical library not a framework (it can be though!). That's why we decided to categorize models, trainers, +datasets, etc. under task names e.g, `speech_recognition`, `language_modeling`, etc. If you've worked with other +libraries, this might somewhat seem irrational, but trust us! For most users and usages this fits better! + +Currently, all models, trainers and datasets are categorized by task name, but this does not mean that for every task, +there exists a model, trainer, dataset, etc. + +## Concept 5: Integration with Other Tools +Re-inventing the wheel has no place in Hezar. It's strongly recommended that if something already exists somewhere, and +we want it, just copy and paste it into the code!
    +In terms of backbone frameworks and libraries, we carefully R&D the present tools and choose the one that is the simplest +yet popular. + +More specifically, here's a simple summary of the core modules in Hezar: +- **Models**: Every model is a `hezar.models.Model` instance which is in fact, a PyTorch `nn.Module` wrapper with extra features for saving, loading, exporting, etc. +- **Datasets**: Every dataset is a `hezar.data.Dataset` instance which is a PyTorch Dataset implemented specifically for each task that can load the data files from the Hugging Face Hub. +- **Preprocessors**: All preprocessors are preferably backed by a robust library like Tokenizers, pillow, etc. +- **Embeddings**: All embeddings are developed on top of Gensim and can be easily loaded from the Hub and used in just 2 lines of code! +- **Trainer**: Trainer is the base class for training almost any model in Hezar or even your own custom models backed by Hezar. The Trainer comes with a lot of features and is also exportable to the Hub! +- **Metrics**: Metrics are also another configurable and portable modules backed by Scikit-learn, seqeval, etc. and can be easily used in the trainers! + + +## Concept 6: Our Inspirations +Hezar was built using the best practices we've learned from working with dozens of industry leading open source +software in the AI world. Our biggest inspirations are: + +- [Transformers](https://github.com/huggingface/transformers) by Hugging Face +- [Fairseq](https://github.com/facebookresearch/fairseq) by Meta AI +- [Flair](https://github.com/flairNLP/flair) by FlairAI +- [ZenML](https://github.com/zenml-io/zenml) +- [Ludwig](https://github.com/ludwig-ai/ludwig) by Ludwig AI +- [UniLM](https://github.com/microsoft/unilm) by Microsoft +- [PyTorch Ignite](https://github.com/pytorch/ignite) by PyTorch +- [Lightning](https://github.com/Lightning-AI/lightning) by Lightning AI +- [Hazm](https://github.com/roshan-research/hazm) by Roshan diff --git a/_sources/guide/index.md.txt b/_sources/guide/index.md.txt new file mode 100644 index 00000000..e0368c9a --- /dev/null +++ b/_sources/guide/index.md.txt @@ -0,0 +1,12 @@ +# Developer Guides + +Welcome to the developer guide section where you can take a deeper dive into the internals of Hezar! + +```{toctree} +:maxdepth: 1 + +hezar_architecture.md +models_advanced.md +trainer_in_depth.md +advanced_training.md +``` diff --git a/_sources/guide/models_advanced.md.txt b/_sources/guide/models_advanced.md.txt new file mode 100644 index 00000000..091e479d --- /dev/null +++ b/_sources/guide/models_advanced.md.txt @@ -0,0 +1,267 @@ +# Advanced Guide on Models + +Models (under `hezar.models`) is the most used module in Hezar. In this section, we'll take a deeper tour of this +module. + +Note that this section assumes you already know the basics of Hezar and in specific, the models module, but if not, +you can check out the introduction guide on models [here](../tutorial/models.md). + +## Building Models +As you'd probably know at this point, any subclass of Model is a regular PyTorch nn.Module, so creating any model +is straightforward. But what makes it different? + +First difference is in the `__init__` method. Every model has to take in a `config` parameter that contains all the +necessary parameters needed for the model to be created and initialized. This `config` parameter is a +dataclass of type `ModelConfig` derived from the base config class which is `Config`. The `Config` class is the +base config container for all configs in Hezar. Find out more about +configs [here](hezar_architecture.md/#concept-1-configurable-modules). + +Take a look at the snippets below: + +- **Regular PyTorch** +```python +import torch +import torch.nn as nn + + +class SampleCNN(nn.Module): + def __init__(self, num_channels=3, num_classes=10): + super().__init__() + self.conv1 = nn.Conv2d(num_channels, 6, 5) + self.pool = nn.MaxPool2d(2, 2) + self.conv2 = nn.Conv2d(6, 16, 5) + self.fc1 = nn.Linear(16 * 5 * 5, 120) + self.fc2 = nn.Linear(120, 84) + self.fc3 = nn.Linear(84, num_classes) + + def forward(self, x): + x = self.pool(nn.functional.relu(self.conv1(x))) + x = self.pool(nn.functional.relu(self.conv2(x))) + x = torch.flatten(x, 1) # flatten all dimensions except batch + x = nn.functional.relu(self.fc1(x)) + x = nn.functional.relu(self.fc2(x)) + x = self.fc3(x) + return x +``` + +- **Hezar Model** +```python +from dataclasses import dataclass + +import torch +import torch.nn as nn +from hezar.models import Model, ModelConfig, register_model + +@dataclass +class SampleNetConfig(ModelConfig): + name = "sample_net" + num_channels: int = 3 + num_classes: int = 10 + +@register_model("sample_net", config_class=SampleNetConfig, description="My simple CNN network") +class SampleNet(Model): + def __init__(self, config: SampleNetConfig): + super().__init__(config=config) + self.conv1 = nn.Conv2d(self.config.num_channels, 6, 5) + self.pool = nn.MaxPool2d(2, 2) + self.conv2 = nn.Conv2d(6, 16, 5) + self.fc1 = nn.Linear(16 * 5 * 5, 120) + self.fc2 = nn.Linear(120, 84) + self.fc3 = nn.Linear(84, self.config.num_classes) + + def forward(self, x): + x = self.pool(nn.functional.relu(self.conv1(x))) + x = self.pool(nn.functional.relu(self.conv2(x))) + x = torch.flatten(x, 1) # flatten all dimensions except batch + x = nn.functional.relu(self.fc1(x)) + x = nn.functional.relu(self.fc2(x)) + x = self.fc3(x) + return x +``` +So what you actually need to do to make your PyTorch model compatible with Hezar is: +1. Move all the required arguments of the model to a new dataclass config by deriving the `ModelConfig` class +2. Implement your model by inheriting from `Model` instead of `nn.Module` and construct your model architecture by using config parameters +3. Optionally you can register your model by using the `register_model` decorator under the same `name` parameter in the config. This step makes your model importable/exportable (compatible with `save`, `load`, `push_to_hub` methods) + + +## Models Registry System +Registry system is not specific to models but all modules in Hezar. For more info on registries check out [this section](hezar_architecture.md/#concept-2-modules-registries). + +Registries are required for finding the right class when trying to load a model from a path (local or Hub). Each model must +have a name which must be the same as the one in its config under `name` parameter. (take a look at the example above). + +To see all the available models use: +```python +from hezar.utils import list_available_models + +print(list_available_models()) +``` + +### Models Registry and `build_model` +The `models_registry` (like all registry containers in Hezar) is a dictionary of model names mapped to their module classes +and config classes. So one can easily build a model with default parameters by its registry key. + +```python +from hezar.registry import models_registry + +bert = models_registry["bert"].module_class(models_registry["bert"].config_class()) +``` +Obviously, this is so ugly and long so lets use the build method `build_model`. This method takes in 3 paramters: +- `name`: The model name which must be present in `model_registry` keys +- `config`: Optional model config +- `**kwargs`: Extra config parameters as keyword arguments that overwrites the default config parameters. +```python +from hezar.builders import build_model + +bert = build_model("bert") +``` +You can also pass config parameters to the `build_model` method as kwargs to overwrite default config parameters: +```python +from hezar.builders import build_model + +bert = build_model("bert", hidden_size=768) +``` +Or pass in the whole config to the build function: +```python +from hezar.builders import build_model +from hezar.models import BERTConfig + +bert = build_model("bert", BERTConfig(hidden_act="gelu", hidden_size=840)) +``` + +## Inference & Prediction +The end-to-end prediction for any model is done by calling the `predict()` method on raw inputs. +The `predict()` method itself, calls three main methods in order: +- `preprocess()` +- `forward()`/`generate()`* +- `post_process()` + +*based on model type; regular or generative +### Preprocessing/Post-processing +These steps are performed by two methods: +- `preprocess()`: takes in raw inputs and processes them to create direct model inputs and returns a dictionary of named +inputs that is unpacked for model's `forward`/`generate` method. Each model can handle raw inputs however necessary. +But ready-to-use models in Hezar, all use preprocessor modules. preprocessor modules can be tokenizers, feature extractors, +normalizers, etc. The `Model` class has a `preprocessor` property that stores a dictionary of the required preprocessors +for the model. These preprocessors are named after their original name in config or registry like `bpe_tokenizer`, `image_processor`, etc. +- `post_process()`: responsible for converting model forward/generate outputs which are usually tensors to a human-readable +format. You might also use the `preprocessor` property at this stage i.e, for decoding, etc. + +#### The `preprocessor` property +The preprocessor property can be directly set on a model. This preprocessor must be of type `Preprocessor`. If a model +needs multiple preprocessors you can pass in a dictionary of preprocessors by their name (preferably registry name). +You can use the preprocessor property like below: +```python +class TextClassificationModel(Model): + def __init__(self): + ... + + def forward(self, inputs): + ... + + def preprocess(self, raw_texts): + tokenizer = self.preprocessor["bpe_tokenizer"] + model_inputs = tokenizer(raw_texts, return_tensors="pt") + return model_inputs + + def post_process(self, model_outputs): + logits = model_outputs["logits"] + label_ids = logits.argmax(1) + labels_str = [self.config.id2label[label_id] for label_id in label_ids] + return labels_str +``` +You can inspect the preprocessor for any model like below: +```python +from hezar.models import Model + +whisper = Model.load("hezarai/whisper-small-fa") +whisper_preprocessors = whisper.preprocessor +print(whisper_preprocessors) +``` +``` +PreprocessorsContainer( + [ + ('whisper_feature_extractor', + < hezar.preprocessors.feature_extractors.audio.whisper_feature_extractor.WhisperFeatureExtractor at 0x7f6316fdcbb0 >), + ('whisper_bpe_tokenizer', + < hezar.preprocessors.tokenizers.whisper_bpe.WhisperBPETokenizer at 0x7f643cb13f40 >) + ] +) +``` +### Passing kwargs to `predict()` +You can also pass in additional parameters corresponding to any of the methods and the `predict()` method will figure out +how each arg should be passed to the write method (`preprocess`, `forward` or `post_process`). + +Suppose you model's methods take parameters like below: +- `preprocess(raw_inputs, return_attention_mask=False)` +- `post_process(model_inputs, output_all_scores=False)` +You can pass in parameters for such model like below: +```python +model.predict(raw_inputs, return_attention_mask=True, output_all_scores=True) +``` +The predict method knows which parameter corresponds to which method. (see [issue #96](https://github.com/hezarai/hezar/issues/96)) + + +## Saving, Loading & Pushing to Hub +All Hezar models can be easily saved, loaded and pushed to hub in the same way. + +### Loading Models +Loading models is done by using the `.load()` method. This method takes in the path to the desired model which can be +a path on the Hub or a path on your local disk. +```python +from hezar.models import Model + +whisper = Model.load("hezarai/whisper-small-fa") +whisper.save("my-whisper") +whisper_2 = Model.load("my-whisper") +whisper_2.push_to_hub("arxyzan/whisper-small-fa") +``` +Note that the preprocessors of the model will also be loaded if available when using `Model.load()`. However, you can +disable this behavior by `Model.load(path, load_preprocessor=False)`. +#### `load()` Parameters +`Model.load()` takes these parameters: +- `hub_or_local_path`: Path to a Hub repo or a folder on your local disk +- `load_locally`: Force this method to look for the path locally +- `load_preprocessor`: Whether to load the preprocessor(s) or not (defaults to True) +- `model_filename`: Optionally specify the model's weights file name (defaults to `model.pt`) +- `config_filename`: Optionally specify the model's config file name (defaults to `model_config.yaml`) +- `save_path`: Optionally save the loaded model to a custom path +- `**kwargs`: Additional config parameters to overwrite the loaded config parameters + +#### Loading State Dicts +Although Hezar models are regular PyTorch `nn.Module`s, but for convenience, we overrode the `load_state_dict` in a way +that the user can load backbone models on a model for fine-tuning purposes. Also, our method can safely ignore mismatching +keys if the values are compatible. So if you receive a warning when fine-tuning a model like below: +``` +Hezar (WARNING): Partially loading the weights as the model architecture and the given state dict are incompatible! +Ignore this warning in case you plan on fine-tuning this model +Incompatible keys: [] +Missing keys: ['classifier.weight', 'classifier.bias'] +``` +You are good to go with your training because only the last classifier weights are missing and new for the training. + +### Saving Models +Saving models to a path is pretty simple. Note that this method takes a **folder** path not a file path because it saves +all the files for the model, config and preprocessors to this path but instead you can control the behavior of this method +too. +#### `save()` Parameters +`Model.save()` takes these parameters: +- `path`: A path to a local folder +- `filename`: Model's file name (defaults to `model.pt`) +- `save_preprocessor`: Whether to save the preprocessor or not +- `config_filename`: Model's config file name (defaults to `model_config.yaml`) + +### Pushing to the Hub +Pushing Hezar models to the Hub (just like other modules in Hezar) is done by using the `push_to_hub` method. +#### `push_to_hub()` Parameters +This method is actually the save method that is followed by the upload operation so its parameters are similar to `save`. +- `repo_id`: Path to the repo id on the Hugging Face Hub +- `filename`: Model's file name (defaults to `model.pt`) +- `config_filename`: Optionally specify the model's config file name (defaults to `model_config.yaml`) +- `push_preprocessor`: Whether to push the preprocessor or not +- `commit_message`: Commit message for this push +- `private`: Specify if the repo should be private or not. Only applicable if the repo does not already exist. + +## Wrap Up +In this guide, we walked through the detail and internals of the models in Hezar. Hezar models are PyTorch Modules equiped +with extra functionalities for better integration and exportability. diff --git a/_sources/guide/trainer_in_depth.md.txt b/_sources/guide/trainer_in_depth.md.txt new file mode 100644 index 00000000..ad6b6c3d --- /dev/null +++ b/_sources/guide/trainer_in_depth.md.txt @@ -0,0 +1,167 @@ +# Trainer In-depth Guide +The `Trainer` is the base class for training all the models in Hezar no matter the task, dataset, model architecture, etc. +In this guide, we'll demonstrate all the internals and details in this powerful class and how you can customize it based +on your needs. + +We'll do this step by step in the exact order that takes place when training a model. + +## Initialization +In order to initialize the Trainer you would need to have some objects ready. + +- **Trainer Config**: A Trainer config is a config dataclass (of type `TrainerConfig`) with a bunch of attributes that configures +how the Trainer behaves. The most important ones being: + - `output_dir` (required): Path to the directory to save trainer outputs (checkpoints, logs, etc.) + - `task` (required): Specify the task of the training e.g, `text_classification`, `speech_recognition`, etc. + - `num_epochs` (required): Number of training epochs + - `init_weights_from` (optional): If the model is randomly initialized or you want to finetune it from a different set of + weights, you can provide a path to a pretrained model using this parameter to load the model weights from. + - `batch_size` (required): Training batch size + - `eval_batch_size` (optional): Evaluation batch size (defaults to `batch_size` if not set) + - `mixed_precision` (optional): Type of mixed precision e.g, `fp16`, `bf16`, etc. (Disabled by default) + - `metrics` (optional): A set of metrics for model evaluation. Available metrics can be obtained using `utils.list_available_metrics()` + - and etc. +- **Model**: A Hezar Model instance +- **Train & Eval Datasets**: Train and evaluation datasets (Hezar Dataset instances) +- **Preprocessor(s)**: Model's preprocessor if it's not already in the model (`model.preprocessor == None`) + +As an example, here is how you can initialize a trainer for text classification using BERT: + +```python +from hezar.models import BertTextClassification, BertTextClassificationConfig +from hezar.data import Dataset +from hezar.preprocessors import Preprocessor +from hezar.trainer import Trainer, TrainerConfig + + +dataset_path = "hezarai/sentiment-dksf" +base_model_path = "hezarai/bert-base-fa" + +train_dataset = Dataset.load(dataset_path, split="train", tokenizer_path=base_model_path) +eval_dataset = Dataset.load(dataset_path, split="test", tokenizer_path=base_model_path) + +model = BertTextClassification(BertTextClassificationConfig(id2label=train_dataset.config.id2label)) +preprocessor = Preprocessor.load(base_model_path) + +train_config = TrainerConfig( + output_dir="bert-fa-sentiment-analysis-dksf", + task="text_classification", + device="cuda", + init_weights_from=base_model_path, + batch_size=8, + num_epochs=5, + metrics=["f1", "precision", "accuracy", "recall"], +) + +trainer = Trainer( + config=train_config, + model=model, + train_dataset=train_dataset, + eval_dataset=eval_dataset, + data_collator=train_dataset.data_collator, + preprocessor=preprocessor, +) +``` + +### `Trainer.__init__()` +So what does exactly happen in the Trainer's `__init__`? + +* Config sanitization +* Configure determinism (controlled by `config.seed`) +* Configure device(s) +* Setup model and +* preprocessor (load pretrained weights if configured) +* Setup data loaders +* Setup optimizer and LR scheduler +* Configure precision if set +* Setup metrics handler (chosen based on the trainer's task, type `MetricsHandler`) +* Configure paths and loggers +* Setup trainer state + +Now the trainer has all the objects ready (almost!). + +## Training process +The training process starts right when you call `trainer.train()`. This simple method does all the heavy lifting needed +during a full training process. We'll go through each of them one by one. + +In a nutshell, the training process is simply a repeating loop of training the model on the full train data and then +evaluating it on the evaluation data followed by calculating the metrics and saving logs and results. + +### 1. Training info +Right before the trainer starts the main training process, it simply outputs some info about the run. +These info would be something like this: +``` +******************** Training Info ******************** + + Output Directory: `bert-fa-sentiment-analysis-dksf` + Task: `text_classification` + Model: `BertTextClassification` + Init Weights: `hezarai/bert-base-fa` + Device(s): `cuda` + Training Dataset: `TextClassificationDataset(path=hezarai/sentiment-dksf['train'], size=28602)` + Evaluation Dataset: `TextClassificationDataset(path=hezarai/sentiment-dksf['test'], size=2315)` + Optimizer: `adam` + Initial Learning Rate: `2e-05` + Learning Rate Decay: `0.0` + Epochs: `5` + Batch Size: `8` + Number of Parameters: `118299651` + Number of Trainable Parameters: `118299651` + Mixed Precision: `Full (fp32)` + Metrics: `['f1', 'precision', 'accuracy', 'recall']` + Checkpoints Path: `bert-fa-sentiment-analysis-dksf/checkpoints` + Logs Path: `bert-fa-sentiment-analysis-dksf/logs` + +******************************************************* +``` + +### 2. Inner training loop +The inner training loop which is invoked by `.inner_training_loop(epoch)` trains the model on the full iteration of the +training data. This iteration itself is a repeating loop of the below processes: +1. Preparation of the input batch using `.prepare_input_batch(input_batch)` which performs all the necessary validations and +checks on the input batch like casting data type, device, etc. +2. Performing one training step using `.training_step(input_batch)` which is the casual PyTorch forward pass followed by +loss computation and backward pass and finally an optimizer step. This method outputs the loss value along the model outputs. +3. Aggregation of loss values through the training loop and live verbose of loss average up until that point in the progress bar. + +### 3. Evaluation loop +The evaluation loop is also the same as the training loop, but it does everything in eval mode (`torch.inference_mode`). +1. Preparation of the input batch using `.prepare_input_batch(input_batch)` which performs all the necessary validations and +checks on the input batch like casting data type, device, etc. +2. Performing one evaluation step using `.evaluation_step(input_batch)`: + - Perform one forward pass on the inputs + - Calculate loss on the inputs + - Calculate generation outputs if the model is generative (`model.is_generative`) +3. Calculate metrics on the outputs which is handled by the metrics handler (`self.metrics_handler`) +4. Aggregation of metrics values through the evaluation loop and live verbose of the averages in the progress bar. (the +final value is the total average value) + +### 4. Saving & logging +When a full training loop and evaluation is done, the trainer saves some properties: +- Save the trainer state in the `trainer_state.yaml` file at `config.output_dir/config.checkpoints_dir`. +- Save the current checkpoint (model weights, configs, etc.) at `config.checkpoints_dir/epoch`. +- Save all the new training and evaluation results to the CSV file and TensorBoard at `config.logs_dir` + +All the above steps are repeated for `config.num_epochs` times. + + +## Save & Push to Hub +Like all other components in Hezar, you can also save or push the trainer to the Hub. + +### Save Trainer +In order to save the trainer, you can simply call `trainer.save()` which accepts the following: +- `path`: The target directory to save the objects in the trainer +- `config_filename` +- `model_filename` +- `model_config_filename` +- `subfolder` +- `dataset_config_file` + +Overall, the `save` method saves the model, preprocessor, dataset config and the trainer config. + +### Push to Hub +You can also push the trainer to the hub. This method just calls the `push_to_hub` method on the model, preprocessor, and configs. + + +## Advanced Training & Customization +The Trainer is implemented in a really flexible and customizable way so that any change can be done by simply overriding +your desired method. You can learn more about how you can do such things [here](advanced_training.md) \ No newline at end of file diff --git a/_sources/index.md.txt b/_sources/index.md.txt new file mode 100644 index 00000000..dbe736fc --- /dev/null +++ b/_sources/index.md.txt @@ -0,0 +1,17 @@ +# Welcome to Hezar's documentation! +![](https://github.com/hezarai/hezar/raw/main/hezar.png) +Welcome to Hezar official documentation! + +Here you can find every piece of info about all the aspects in Hezar. + +Navigate to the desired section using this table of contents: + +```{toctree} +:maxdepth: 2 + +get_started/index +tutorial/index +guide/index +source/index +contributing +``` diff --git a/_sources/source/hezar.builders.rst.txt b/_sources/source/hezar.builders.rst.txt new file mode 100644 index 00000000..6eb0aa72 --- /dev/null +++ b/_sources/source/hezar.builders.rst.txt @@ -0,0 +1,7 @@ +hezar.builders module +===================== + +.. automodule:: hezar.builders + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.configs.rst.txt b/_sources/source/hezar.configs.rst.txt new file mode 100644 index 00000000..02b7dc5d --- /dev/null +++ b/_sources/source/hezar.configs.rst.txt @@ -0,0 +1,7 @@ +hezar.configs module +==================== + +.. automodule:: hezar.configs + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.constants.rst.txt b/_sources/source/hezar.constants.rst.txt new file mode 100644 index 00000000..441ee5d5 --- /dev/null +++ b/_sources/source/hezar.constants.rst.txt @@ -0,0 +1,7 @@ +hezar.constants module +====================== + +.. automodule:: hezar.constants + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.data_collators.rst.txt b/_sources/source/hezar.data.data_collators.rst.txt new file mode 100644 index 00000000..0e743e71 --- /dev/null +++ b/_sources/source/hezar.data.data_collators.rst.txt @@ -0,0 +1,7 @@ +hezar.data.data\_collators module +================================= + +.. automodule:: hezar.data.data_collators + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.datasets.dataset.rst.txt b/_sources/source/hezar.data.datasets.dataset.rst.txt new file mode 100644 index 00000000..6ebde446 --- /dev/null +++ b/_sources/source/hezar.data.datasets.dataset.rst.txt @@ -0,0 +1,7 @@ +hezar.data.datasets.dataset module +================================== + +.. automodule:: hezar.data.datasets.dataset + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.datasets.image_captioning_dataset.rst.txt b/_sources/source/hezar.data.datasets.image_captioning_dataset.rst.txt new file mode 100644 index 00000000..96b25524 --- /dev/null +++ b/_sources/source/hezar.data.datasets.image_captioning_dataset.rst.txt @@ -0,0 +1,7 @@ +hezar.data.datasets.image\_captioning\_dataset module +===================================================== + +.. automodule:: hezar.data.datasets.image_captioning_dataset + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.datasets.ocr_dataset.rst.txt b/_sources/source/hezar.data.datasets.ocr_dataset.rst.txt new file mode 100644 index 00000000..3af0f3ad --- /dev/null +++ b/_sources/source/hezar.data.datasets.ocr_dataset.rst.txt @@ -0,0 +1,7 @@ +hezar.data.datasets.ocr\_dataset module +======================================= + +.. automodule:: hezar.data.datasets.ocr_dataset + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.datasets.rst.txt b/_sources/source/hezar.data.datasets.rst.txt new file mode 100644 index 00000000..1e9678f0 --- /dev/null +++ b/_sources/source/hezar.data.datasets.rst.txt @@ -0,0 +1,23 @@ +hezar.data.datasets package +=========================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.data.datasets.dataset + hezar.data.datasets.image_captioning_dataset + hezar.data.datasets.ocr_dataset + hezar.data.datasets.sequence_labeling_dataset + hezar.data.datasets.text_classification_dataset + hezar.data.datasets.text_summarization_dataset + +Module contents +--------------- + +.. automodule:: hezar.data.datasets + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.datasets.sequence_labeling_dataset.rst.txt b/_sources/source/hezar.data.datasets.sequence_labeling_dataset.rst.txt new file mode 100644 index 00000000..ecedebcc --- /dev/null +++ b/_sources/source/hezar.data.datasets.sequence_labeling_dataset.rst.txt @@ -0,0 +1,7 @@ +hezar.data.datasets.sequence\_labeling\_dataset module +====================================================== + +.. automodule:: hezar.data.datasets.sequence_labeling_dataset + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.datasets.text_classification_dataset.rst.txt b/_sources/source/hezar.data.datasets.text_classification_dataset.rst.txt new file mode 100644 index 00000000..adcc0b32 --- /dev/null +++ b/_sources/source/hezar.data.datasets.text_classification_dataset.rst.txt @@ -0,0 +1,7 @@ +hezar.data.datasets.text\_classification\_dataset module +======================================================== + +.. automodule:: hezar.data.datasets.text_classification_dataset + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.datasets.text_summarization_dataset.rst.txt b/_sources/source/hezar.data.datasets.text_summarization_dataset.rst.txt new file mode 100644 index 00000000..36565686 --- /dev/null +++ b/_sources/source/hezar.data.datasets.text_summarization_dataset.rst.txt @@ -0,0 +1,7 @@ +hezar.data.datasets.text\_summarization\_dataset module +======================================================= + +.. automodule:: hezar.data.datasets.text_summarization_dataset + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.data.rst.txt b/_sources/source/hezar.data.rst.txt new file mode 100644 index 00000000..97106494 --- /dev/null +++ b/_sources/source/hezar.data.rst.txt @@ -0,0 +1,26 @@ +hezar.data package +================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.data.datasets + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.data.data_collators + +Module contents +--------------- + +.. automodule:: hezar.data + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.embeddings.embedding.rst.txt b/_sources/source/hezar.embeddings.embedding.rst.txt new file mode 100644 index 00000000..4a546f29 --- /dev/null +++ b/_sources/source/hezar.embeddings.embedding.rst.txt @@ -0,0 +1,7 @@ +hezar.embeddings.embedding module +================================= + +.. automodule:: hezar.embeddings.embedding + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.embeddings.fasttext.rst.txt b/_sources/source/hezar.embeddings.fasttext.rst.txt new file mode 100644 index 00000000..75658d64 --- /dev/null +++ b/_sources/source/hezar.embeddings.fasttext.rst.txt @@ -0,0 +1,7 @@ +hezar.embeddings.fasttext module +================================ + +.. automodule:: hezar.embeddings.fasttext + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.embeddings.rst.txt b/_sources/source/hezar.embeddings.rst.txt new file mode 100644 index 00000000..368acdb4 --- /dev/null +++ b/_sources/source/hezar.embeddings.rst.txt @@ -0,0 +1,20 @@ +hezar.embeddings package +======================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.embeddings.embedding + hezar.embeddings.fasttext + hezar.embeddings.word2vec + +Module contents +--------------- + +.. automodule:: hezar.embeddings + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.embeddings.word2vec.rst.txt b/_sources/source/hezar.embeddings.word2vec.rst.txt new file mode 100644 index 00000000..822452bb --- /dev/null +++ b/_sources/source/hezar.embeddings.word2vec.rst.txt @@ -0,0 +1,7 @@ +hezar.embeddings.word2vec module +================================ + +.. automodule:: hezar.embeddings.word2vec + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.accuracy.rst.txt b/_sources/source/hezar.metrics.accuracy.rst.txt new file mode 100644 index 00000000..5bef0716 --- /dev/null +++ b/_sources/source/hezar.metrics.accuracy.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.accuracy module +============================= + +.. automodule:: hezar.metrics.accuracy + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.bleu.rst.txt b/_sources/source/hezar.metrics.bleu.rst.txt new file mode 100644 index 00000000..6dabf497 --- /dev/null +++ b/_sources/source/hezar.metrics.bleu.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.bleu module +========================= + +.. automodule:: hezar.metrics.bleu + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.cer.rst.txt b/_sources/source/hezar.metrics.cer.rst.txt new file mode 100644 index 00000000..f1adc019 --- /dev/null +++ b/_sources/source/hezar.metrics.cer.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.cer module +======================== + +.. automodule:: hezar.metrics.cer + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.f1.rst.txt b/_sources/source/hezar.metrics.f1.rst.txt new file mode 100644 index 00000000..25117c91 --- /dev/null +++ b/_sources/source/hezar.metrics.f1.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.f1 module +======================= + +.. automodule:: hezar.metrics.f1 + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.metric.rst.txt b/_sources/source/hezar.metrics.metric.rst.txt new file mode 100644 index 00000000..3f0a1818 --- /dev/null +++ b/_sources/source/hezar.metrics.metric.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.metric module +=========================== + +.. automodule:: hezar.metrics.metric + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.precision.rst.txt b/_sources/source/hezar.metrics.precision.rst.txt new file mode 100644 index 00000000..45919a9a --- /dev/null +++ b/_sources/source/hezar.metrics.precision.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.precision module +============================== + +.. automodule:: hezar.metrics.precision + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.recall.rst.txt b/_sources/source/hezar.metrics.recall.rst.txt new file mode 100644 index 00000000..daafce17 --- /dev/null +++ b/_sources/source/hezar.metrics.recall.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.recall module +=========================== + +.. automodule:: hezar.metrics.recall + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.rouge.rst.txt b/_sources/source/hezar.metrics.rouge.rst.txt new file mode 100644 index 00000000..debbe8c1 --- /dev/null +++ b/_sources/source/hezar.metrics.rouge.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.rouge module +========================== + +.. automodule:: hezar.metrics.rouge + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.rst.txt b/_sources/source/hezar.metrics.rst.txt new file mode 100644 index 00000000..25144d29 --- /dev/null +++ b/_sources/source/hezar.metrics.rst.txt @@ -0,0 +1,27 @@ +hezar.metrics package +===================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.metrics.accuracy + hezar.metrics.bleu + hezar.metrics.cer + hezar.metrics.f1 + hezar.metrics.metric + hezar.metrics.precision + hezar.metrics.recall + hezar.metrics.rouge + hezar.metrics.seqeval + hezar.metrics.wer + +Module contents +--------------- + +.. automodule:: hezar.metrics + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.seqeval.rst.txt b/_sources/source/hezar.metrics.seqeval.rst.txt new file mode 100644 index 00000000..8cfb10f3 --- /dev/null +++ b/_sources/source/hezar.metrics.seqeval.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.seqeval module +============================ + +.. automodule:: hezar.metrics.seqeval + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.metrics.wer.rst.txt b/_sources/source/hezar.metrics.wer.rst.txt new file mode 100644 index 00000000..208bae55 --- /dev/null +++ b/_sources/source/hezar.metrics.wer.rst.txt @@ -0,0 +1,7 @@ +hezar.metrics.wer module +======================== + +.. automodule:: hezar.metrics.wer + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.bert.bert.rst.txt b/_sources/source/hezar.models.backbone.bert.bert.rst.txt new file mode 100644 index 00000000..9b519b02 --- /dev/null +++ b/_sources/source/hezar.models.backbone.bert.bert.rst.txt @@ -0,0 +1,7 @@ +hezar.models.backbone.bert.bert module +====================================== + +.. automodule:: hezar.models.backbone.bert.bert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.bert.bert_config.rst.txt b/_sources/source/hezar.models.backbone.bert.bert_config.rst.txt new file mode 100644 index 00000000..9ca103f8 --- /dev/null +++ b/_sources/source/hezar.models.backbone.bert.bert_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.backbone.bert.bert\_config module +============================================== + +.. automodule:: hezar.models.backbone.bert.bert_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.bert.rst.txt b/_sources/source/hezar.models.backbone.bert.rst.txt new file mode 100644 index 00000000..0b056778 --- /dev/null +++ b/_sources/source/hezar.models.backbone.bert.rst.txt @@ -0,0 +1,19 @@ +hezar.models.backbone.bert package +================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.backbone.bert.bert + hezar.models.backbone.bert.bert_config + +Module contents +--------------- + +.. automodule:: hezar.models.backbone.bert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.distilbert.distilbert.rst.txt b/_sources/source/hezar.models.backbone.distilbert.distilbert.rst.txt new file mode 100644 index 00000000..13320b45 --- /dev/null +++ b/_sources/source/hezar.models.backbone.distilbert.distilbert.rst.txt @@ -0,0 +1,7 @@ +hezar.models.backbone.distilbert.distilbert module +================================================== + +.. automodule:: hezar.models.backbone.distilbert.distilbert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.distilbert.distilbert_config.rst.txt b/_sources/source/hezar.models.backbone.distilbert.distilbert_config.rst.txt new file mode 100644 index 00000000..38be2504 --- /dev/null +++ b/_sources/source/hezar.models.backbone.distilbert.distilbert_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.backbone.distilbert.distilbert\_config module +========================================================== + +.. automodule:: hezar.models.backbone.distilbert.distilbert_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.distilbert.rst.txt b/_sources/source/hezar.models.backbone.distilbert.rst.txt new file mode 100644 index 00000000..5a14af8a --- /dev/null +++ b/_sources/source/hezar.models.backbone.distilbert.rst.txt @@ -0,0 +1,19 @@ +hezar.models.backbone.distilbert package +======================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.backbone.distilbert.distilbert + hezar.models.backbone.distilbert.distilbert_config + +Module contents +--------------- + +.. automodule:: hezar.models.backbone.distilbert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.roberta.roberta.rst.txt b/_sources/source/hezar.models.backbone.roberta.roberta.rst.txt new file mode 100644 index 00000000..bbc5d68d --- /dev/null +++ b/_sources/source/hezar.models.backbone.roberta.roberta.rst.txt @@ -0,0 +1,7 @@ +hezar.models.backbone.roberta.roberta module +============================================ + +.. automodule:: hezar.models.backbone.roberta.roberta + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.roberta.roberta_config.rst.txt b/_sources/source/hezar.models.backbone.roberta.roberta_config.rst.txt new file mode 100644 index 00000000..c00461ee --- /dev/null +++ b/_sources/source/hezar.models.backbone.roberta.roberta_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.backbone.roberta.roberta\_config module +==================================================== + +.. automodule:: hezar.models.backbone.roberta.roberta_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.roberta.rst.txt b/_sources/source/hezar.models.backbone.roberta.rst.txt new file mode 100644 index 00000000..02839ecd --- /dev/null +++ b/_sources/source/hezar.models.backbone.roberta.rst.txt @@ -0,0 +1,19 @@ +hezar.models.backbone.roberta package +===================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.backbone.roberta.roberta + hezar.models.backbone.roberta.roberta_config + +Module contents +--------------- + +.. automodule:: hezar.models.backbone.roberta + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.rst.txt b/_sources/source/hezar.models.backbone.rst.txt new file mode 100644 index 00000000..28549a49 --- /dev/null +++ b/_sources/source/hezar.models.backbone.rst.txt @@ -0,0 +1,21 @@ +hezar.models.backbone package +============================= + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.backbone.bert + hezar.models.backbone.distilbert + hezar.models.backbone.roberta + hezar.models.backbone.vit + +Module contents +--------------- + +.. automodule:: hezar.models.backbone + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.vit.rst.txt b/_sources/source/hezar.models.backbone.vit.rst.txt new file mode 100644 index 00000000..dc8dadee --- /dev/null +++ b/_sources/source/hezar.models.backbone.vit.rst.txt @@ -0,0 +1,19 @@ +hezar.models.backbone.vit package +================================= + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.backbone.vit.vit + hezar.models.backbone.vit.vit_config + +Module contents +--------------- + +.. automodule:: hezar.models.backbone.vit + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.vit.vit.rst.txt b/_sources/source/hezar.models.backbone.vit.vit.rst.txt new file mode 100644 index 00000000..42bebcca --- /dev/null +++ b/_sources/source/hezar.models.backbone.vit.vit.rst.txt @@ -0,0 +1,7 @@ +hezar.models.backbone.vit.vit module +==================================== + +.. automodule:: hezar.models.backbone.vit.vit + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.backbone.vit.vit_config.rst.txt b/_sources/source/hezar.models.backbone.vit.vit_config.rst.txt new file mode 100644 index 00000000..b5b6087b --- /dev/null +++ b/_sources/source/hezar.models.backbone.vit.vit_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.backbone.vit.vit\_config module +============================================ + +.. automodule:: hezar.models.backbone.vit.vit_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text.rst.txt b/_sources/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text.rst.txt new file mode 100644 index 00000000..effb428e --- /dev/null +++ b/_sources/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.beit\_roberta.beit\_roberta\_image2text module +====================================================================== + +.. automodule:: hezar.models.image2text.beit_roberta.beit_roberta_image2text + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text_config.rst.txt b/_sources/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text_config.rst.txt new file mode 100644 index 00000000..2e097b82 --- /dev/null +++ b/_sources/source/hezar.models.image2text.beit_roberta.beit_roberta_image2text_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.beit\_roberta.beit\_roberta\_image2text\_config module +============================================================================== + +.. automodule:: hezar.models.image2text.beit_roberta.beit_roberta_image2text_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.beit_roberta.rst.txt b/_sources/source/hezar.models.image2text.beit_roberta.rst.txt new file mode 100644 index 00000000..4ddcbcf0 --- /dev/null +++ b/_sources/source/hezar.models.image2text.beit_roberta.rst.txt @@ -0,0 +1,19 @@ +hezar.models.image2text.beit\_roberta package +============================================= + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.image2text.beit_roberta.beit_roberta_image2text + hezar.models.image2text.beit_roberta.beit_roberta_image2text_config + +Module contents +--------------- + +.. automodule:: hezar.models.image2text.beit_roberta + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.crnn.crnn_decode_utils.rst.txt b/_sources/source/hezar.models.image2text.crnn.crnn_decode_utils.rst.txt new file mode 100644 index 00000000..59c44cc2 --- /dev/null +++ b/_sources/source/hezar.models.image2text.crnn.crnn_decode_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.crnn.crnn\_decode\_utils module +======================================================= + +.. automodule:: hezar.models.image2text.crnn.crnn_decode_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.crnn.crnn_image2text.rst.txt b/_sources/source/hezar.models.image2text.crnn.crnn_image2text.rst.txt new file mode 100644 index 00000000..537a0ce6 --- /dev/null +++ b/_sources/source/hezar.models.image2text.crnn.crnn_image2text.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.crnn.crnn\_image2text module +==================================================== + +.. automodule:: hezar.models.image2text.crnn.crnn_image2text + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.crnn.crnn_image2text_config.rst.txt b/_sources/source/hezar.models.image2text.crnn.crnn_image2text_config.rst.txt new file mode 100644 index 00000000..709ae605 --- /dev/null +++ b/_sources/source/hezar.models.image2text.crnn.crnn_image2text_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.crnn.crnn\_image2text\_config module +============================================================ + +.. automodule:: hezar.models.image2text.crnn.crnn_image2text_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.crnn.rst.txt b/_sources/source/hezar.models.image2text.crnn.rst.txt new file mode 100644 index 00000000..6ed55675 --- /dev/null +++ b/_sources/source/hezar.models.image2text.crnn.rst.txt @@ -0,0 +1,20 @@ +hezar.models.image2text.crnn package +==================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.image2text.crnn.crnn_decode_utils + hezar.models.image2text.crnn.crnn_image2text + hezar.models.image2text.crnn.crnn_image2text_config + +Module contents +--------------- + +.. automodule:: hezar.models.image2text.crnn + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.rst.txt b/_sources/source/hezar.models.image2text.rst.txt new file mode 100644 index 00000000..ad4af596 --- /dev/null +++ b/_sources/source/hezar.models.image2text.rst.txt @@ -0,0 +1,22 @@ +hezar.models.image2text package +=============================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.image2text.beit_roberta + hezar.models.image2text.crnn + hezar.models.image2text.trocr + hezar.models.image2text.vit_gpt2 + hezar.models.image2text.vit_roberta + +Module contents +--------------- + +.. automodule:: hezar.models.image2text + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.trocr.rst.txt b/_sources/source/hezar.models.image2text.trocr.rst.txt new file mode 100644 index 00000000..2b05cfc7 --- /dev/null +++ b/_sources/source/hezar.models.image2text.trocr.rst.txt @@ -0,0 +1,19 @@ +hezar.models.image2text.trocr package +===================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.image2text.trocr.trocr_image2text + hezar.models.image2text.trocr.trocr_image2text_config + +Module contents +--------------- + +.. automodule:: hezar.models.image2text.trocr + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.trocr.trocr_image2text.rst.txt b/_sources/source/hezar.models.image2text.trocr.trocr_image2text.rst.txt new file mode 100644 index 00000000..490e8289 --- /dev/null +++ b/_sources/source/hezar.models.image2text.trocr.trocr_image2text.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.trocr.trocr\_image2text module +====================================================== + +.. automodule:: hezar.models.image2text.trocr.trocr_image2text + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.trocr.trocr_image2text_config.rst.txt b/_sources/source/hezar.models.image2text.trocr.trocr_image2text_config.rst.txt new file mode 100644 index 00000000..f692f016 --- /dev/null +++ b/_sources/source/hezar.models.image2text.trocr.trocr_image2text_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.trocr.trocr\_image2text\_config module +============================================================== + +.. automodule:: hezar.models.image2text.trocr.trocr_image2text_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.vit_gpt2.rst.txt b/_sources/source/hezar.models.image2text.vit_gpt2.rst.txt new file mode 100644 index 00000000..108f0f6f --- /dev/null +++ b/_sources/source/hezar.models.image2text.vit_gpt2.rst.txt @@ -0,0 +1,19 @@ +hezar.models.image2text.vit\_gpt2 package +========================================= + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.image2text.vit_gpt2.vit_gpt2_image2text + hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config + +Module contents +--------------- + +.. automodule:: hezar.models.image2text.vit_gpt2 + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text.rst.txt b/_sources/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text.rst.txt new file mode 100644 index 00000000..2f95efc1 --- /dev/null +++ b/_sources/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.vit\_gpt2.vit\_gpt2\_image2text module +============================================================== + +.. automodule:: hezar.models.image2text.vit_gpt2.vit_gpt2_image2text + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config.rst.txt b/_sources/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config.rst.txt new file mode 100644 index 00000000..cdc13a59 --- /dev/null +++ b/_sources/source/hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.vit\_gpt2.vit\_gpt2\_image2text\_config module +====================================================================== + +.. automodule:: hezar.models.image2text.vit_gpt2.vit_gpt2_image2text_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.vit_roberta.rst.txt b/_sources/source/hezar.models.image2text.vit_roberta.rst.txt new file mode 100644 index 00000000..cb71cb77 --- /dev/null +++ b/_sources/source/hezar.models.image2text.vit_roberta.rst.txt @@ -0,0 +1,19 @@ +hezar.models.image2text.vit\_roberta package +============================================ + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.image2text.vit_roberta.vit_roberta_image2text + hezar.models.image2text.vit_roberta.vit_roberta_image2text_config + +Module contents +--------------- + +.. automodule:: hezar.models.image2text.vit_roberta + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text.rst.txt b/_sources/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text.rst.txt new file mode 100644 index 00000000..826c0579 --- /dev/null +++ b/_sources/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.vit\_roberta.vit\_roberta\_image2text module +==================================================================== + +.. automodule:: hezar.models.image2text.vit_roberta.vit_roberta_image2text + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text_config.rst.txt b/_sources/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text_config.rst.txt new file mode 100644 index 00000000..39fef145 --- /dev/null +++ b/_sources/source/hezar.models.image2text.vit_roberta.vit_roberta_image2text_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.image2text.vit\_roberta.vit\_roberta\_image2text\_config module +============================================================================ + +.. automodule:: hezar.models.image2text.vit_roberta.vit_roberta_image2text_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.bert.bert_mask_filling.rst.txt b/_sources/source/hezar.models.mask_filling.bert.bert_mask_filling.rst.txt new file mode 100644 index 00000000..b9ad0d11 --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.bert.bert_mask_filling.rst.txt @@ -0,0 +1,7 @@ +hezar.models.mask\_filling.bert.bert\_mask\_filling module +========================================================== + +.. automodule:: hezar.models.mask_filling.bert.bert_mask_filling + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.bert.bert_mask_filling_config.rst.txt b/_sources/source/hezar.models.mask_filling.bert.bert_mask_filling_config.rst.txt new file mode 100644 index 00000000..be3dfef2 --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.bert.bert_mask_filling_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.mask\_filling.bert.bert\_mask\_filling\_config module +================================================================== + +.. automodule:: hezar.models.mask_filling.bert.bert_mask_filling_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.bert.rst.txt b/_sources/source/hezar.models.mask_filling.bert.rst.txt new file mode 100644 index 00000000..345f0036 --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.bert.rst.txt @@ -0,0 +1,19 @@ +hezar.models.mask\_filling.bert package +======================================= + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.mask_filling.bert.bert_mask_filling + hezar.models.mask_filling.bert.bert_mask_filling_config + +Module contents +--------------- + +.. automodule:: hezar.models.mask_filling.bert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling.rst.txt b/_sources/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling.rst.txt new file mode 100644 index 00000000..e11bc317 --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling.rst.txt @@ -0,0 +1,7 @@ +hezar.models.mask\_filling.distilbert.distilbert\_mask\_filling module +====================================================================== + +.. automodule:: hezar.models.mask_filling.distilbert.distilbert_mask_filling + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling_config.rst.txt b/_sources/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling_config.rst.txt new file mode 100644 index 00000000..c71af978 --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.distilbert.distilbert_mask_filling_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.mask\_filling.distilbert.distilbert\_mask\_filling\_config module +============================================================================== + +.. automodule:: hezar.models.mask_filling.distilbert.distilbert_mask_filling_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.distilbert.rst.txt b/_sources/source/hezar.models.mask_filling.distilbert.rst.txt new file mode 100644 index 00000000..15b0235a --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.distilbert.rst.txt @@ -0,0 +1,19 @@ +hezar.models.mask\_filling.distilbert package +============================================= + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.mask_filling.distilbert.distilbert_mask_filling + hezar.models.mask_filling.distilbert.distilbert_mask_filling_config + +Module contents +--------------- + +.. automodule:: hezar.models.mask_filling.distilbert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.roberta.roberta_mask_filling.rst.txt b/_sources/source/hezar.models.mask_filling.roberta.roberta_mask_filling.rst.txt new file mode 100644 index 00000000..324595d7 --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.roberta.roberta_mask_filling.rst.txt @@ -0,0 +1,7 @@ +hezar.models.mask\_filling.roberta.roberta\_mask\_filling module +================================================================ + +.. automodule:: hezar.models.mask_filling.roberta.roberta_mask_filling + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.roberta.roberta_mask_filling_config.rst.txt b/_sources/source/hezar.models.mask_filling.roberta.roberta_mask_filling_config.rst.txt new file mode 100644 index 00000000..d0a9f1fe --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.roberta.roberta_mask_filling_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.mask\_filling.roberta.roberta\_mask\_filling\_config module +======================================================================== + +.. automodule:: hezar.models.mask_filling.roberta.roberta_mask_filling_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.roberta.rst.txt b/_sources/source/hezar.models.mask_filling.roberta.rst.txt new file mode 100644 index 00000000..f245751c --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.roberta.rst.txt @@ -0,0 +1,19 @@ +hezar.models.mask\_filling.roberta package +========================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.mask_filling.roberta.roberta_mask_filling + hezar.models.mask_filling.roberta.roberta_mask_filling_config + +Module contents +--------------- + +.. automodule:: hezar.models.mask_filling.roberta + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.mask_filling.rst.txt b/_sources/source/hezar.models.mask_filling.rst.txt new file mode 100644 index 00000000..bf6c3106 --- /dev/null +++ b/_sources/source/hezar.models.mask_filling.rst.txt @@ -0,0 +1,20 @@ +hezar.models.mask\_filling package +================================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.mask_filling.bert + hezar.models.mask_filling.distilbert + hezar.models.mask_filling.roberta + +Module contents +--------------- + +.. automodule:: hezar.models.mask_filling + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.model.rst.txt b/_sources/source/hezar.models.model.rst.txt new file mode 100644 index 00000000..c5b23b97 --- /dev/null +++ b/_sources/source/hezar.models.model.rst.txt @@ -0,0 +1,7 @@ +hezar.models.model module +========================= + +.. automodule:: hezar.models.model + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.model_outputs.rst.txt b/_sources/source/hezar.models.model_outputs.rst.txt new file mode 100644 index 00000000..cc43a7b8 --- /dev/null +++ b/_sources/source/hezar.models.model_outputs.rst.txt @@ -0,0 +1,7 @@ +hezar.models.model\_outputs module +================================== + +.. automodule:: hezar.models.model_outputs + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.rst.txt b/_sources/source/hezar.models.rst.txt new file mode 100644 index 00000000..ac7553a0 --- /dev/null +++ b/_sources/source/hezar.models.rst.txt @@ -0,0 +1,34 @@ +hezar.models package +==================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.backbone + hezar.models.image2text + hezar.models.mask_filling + hezar.models.sequence_labeling + hezar.models.speech_recognition + hezar.models.text_classification + hezar.models.text_embedding + hezar.models.text_generation + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.model + hezar.models.model_outputs + +Module contents +--------------- + +.. automodule:: hezar.models + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling.rst.txt b/_sources/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling.rst.txt new file mode 100644 index 00000000..358123cb --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling.rst.txt @@ -0,0 +1,7 @@ +hezar.models.sequence\_labeling.bert.bert\_sequence\_labeling module +==================================================================== + +.. automodule:: hezar.models.sequence_labeling.bert.bert_sequence_labeling + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling_config.rst.txt b/_sources/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling_config.rst.txt new file mode 100644 index 00000000..a0e74aa7 --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.bert.bert_sequence_labeling_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.sequence\_labeling.bert.bert\_sequence\_labeling\_config module +============================================================================ + +.. automodule:: hezar.models.sequence_labeling.bert.bert_sequence_labeling_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.bert.rst.txt b/_sources/source/hezar.models.sequence_labeling.bert.rst.txt new file mode 100644 index 00000000..153264bf --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.bert.rst.txt @@ -0,0 +1,19 @@ +hezar.models.sequence\_labeling.bert package +============================================ + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.sequence_labeling.bert.bert_sequence_labeling + hezar.models.sequence_labeling.bert.bert_sequence_labeling_config + +Module contents +--------------- + +.. automodule:: hezar.models.sequence_labeling.bert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling.rst.txt b/_sources/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling.rst.txt new file mode 100644 index 00000000..7024f982 --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling.rst.txt @@ -0,0 +1,7 @@ +hezar.models.sequence\_labeling.distilbert.distilbert\_sequence\_labeling module +================================================================================ + +.. automodule:: hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config.rst.txt b/_sources/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config.rst.txt new file mode 100644 index 00000000..250d149e --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.sequence\_labeling.distilbert.distilbert\_sequence\_labeling\_config module +======================================================================================== + +.. automodule:: hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.distilbert.rst.txt b/_sources/source/hezar.models.sequence_labeling.distilbert.rst.txt new file mode 100644 index 00000000..2c9c5194 --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.distilbert.rst.txt @@ -0,0 +1,19 @@ +hezar.models.sequence\_labeling.distilbert package +================================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling + hezar.models.sequence_labeling.distilbert.distilbert_sequence_labeling_config + +Module contents +--------------- + +.. automodule:: hezar.models.sequence_labeling.distilbert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling.rst.txt b/_sources/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling.rst.txt new file mode 100644 index 00000000..665a7e9c --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling.rst.txt @@ -0,0 +1,7 @@ +hezar.models.sequence\_labeling.roberta.roberta\_sequence\_labeling module +========================================================================== + +.. automodule:: hezar.models.sequence_labeling.roberta.roberta_sequence_labeling + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config.rst.txt b/_sources/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config.rst.txt new file mode 100644 index 00000000..9bad047f --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.sequence\_labeling.roberta.roberta\_sequence\_labeling\_config module +================================================================================== + +.. automodule:: hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.roberta.rst.txt b/_sources/source/hezar.models.sequence_labeling.roberta.rst.txt new file mode 100644 index 00000000..183b9ac1 --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.roberta.rst.txt @@ -0,0 +1,19 @@ +hezar.models.sequence\_labeling.roberta package +=============================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.sequence_labeling.roberta.roberta_sequence_labeling + hezar.models.sequence_labeling.roberta.roberta_sequence_labeling_config + +Module contents +--------------- + +.. automodule:: hezar.models.sequence_labeling.roberta + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.sequence_labeling.rst.txt b/_sources/source/hezar.models.sequence_labeling.rst.txt new file mode 100644 index 00000000..5149a573 --- /dev/null +++ b/_sources/source/hezar.models.sequence_labeling.rst.txt @@ -0,0 +1,20 @@ +hezar.models.sequence\_labeling package +======================================= + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.sequence_labeling.bert + hezar.models.sequence_labeling.distilbert + hezar.models.sequence_labeling.roberta + +Module contents +--------------- + +.. automodule:: hezar.models.sequence_labeling + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.speech_recognition.rst.txt b/_sources/source/hezar.models.speech_recognition.rst.txt new file mode 100644 index 00000000..5133759d --- /dev/null +++ b/_sources/source/hezar.models.speech_recognition.rst.txt @@ -0,0 +1,18 @@ +hezar.models.speech\_recognition package +======================================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.speech_recognition.whisper + +Module contents +--------------- + +.. automodule:: hezar.models.speech_recognition + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.speech_recognition.whisper.rst.txt b/_sources/source/hezar.models.speech_recognition.whisper.rst.txt new file mode 100644 index 00000000..481aec9a --- /dev/null +++ b/_sources/source/hezar.models.speech_recognition.whisper.rst.txt @@ -0,0 +1,21 @@ +hezar.models.speech\_recognition.whisper package +================================================ + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.speech_recognition.whisper.whisper_feature_extractor + hezar.models.speech_recognition.whisper.whisper_speech_recognition + hezar.models.speech_recognition.whisper.whisper_speech_recognition_config + hezar.models.speech_recognition.whisper.whisper_tokenizer + +Module contents +--------------- + +.. automodule:: hezar.models.speech_recognition.whisper + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.speech_recognition.whisper.whisper_feature_extractor.rst.txt b/_sources/source/hezar.models.speech_recognition.whisper.whisper_feature_extractor.rst.txt new file mode 100644 index 00000000..29462dc4 --- /dev/null +++ b/_sources/source/hezar.models.speech_recognition.whisper.whisper_feature_extractor.rst.txt @@ -0,0 +1,7 @@ +hezar.models.speech\_recognition.whisper.whisper\_feature\_extractor module +=========================================================================== + +.. automodule:: hezar.models.speech_recognition.whisper.whisper_feature_extractor + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition.rst.txt b/_sources/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition.rst.txt new file mode 100644 index 00000000..7673fd03 --- /dev/null +++ b/_sources/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition.rst.txt @@ -0,0 +1,7 @@ +hezar.models.speech\_recognition.whisper.whisper\_speech\_recognition module +============================================================================ + +.. automodule:: hezar.models.speech_recognition.whisper.whisper_speech_recognition + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition_config.rst.txt b/_sources/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition_config.rst.txt new file mode 100644 index 00000000..063d4729 --- /dev/null +++ b/_sources/source/hezar.models.speech_recognition.whisper.whisper_speech_recognition_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.speech\_recognition.whisper.whisper\_speech\_recognition\_config module +==================================================================================== + +.. automodule:: hezar.models.speech_recognition.whisper.whisper_speech_recognition_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.speech_recognition.whisper.whisper_tokenizer.rst.txt b/_sources/source/hezar.models.speech_recognition.whisper.whisper_tokenizer.rst.txt new file mode 100644 index 00000000..88f92c65 --- /dev/null +++ b/_sources/source/hezar.models.speech_recognition.whisper.whisper_tokenizer.rst.txt @@ -0,0 +1,7 @@ +hezar.models.speech\_recognition.whisper.whisper\_tokenizer module +================================================================== + +.. automodule:: hezar.models.speech_recognition.whisper.whisper_tokenizer + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.bert.bert_text_classification.rst.txt b/_sources/source/hezar.models.text_classification.bert.bert_text_classification.rst.txt new file mode 100644 index 00000000..4da38eb5 --- /dev/null +++ b/_sources/source/hezar.models.text_classification.bert.bert_text_classification.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_classification.bert.bert\_text\_classification module +======================================================================== + +.. automodule:: hezar.models.text_classification.bert.bert_text_classification + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.bert.bert_text_classification_config.rst.txt b/_sources/source/hezar.models.text_classification.bert.bert_text_classification_config.rst.txt new file mode 100644 index 00000000..32cadb21 --- /dev/null +++ b/_sources/source/hezar.models.text_classification.bert.bert_text_classification_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_classification.bert.bert\_text\_classification\_config module +================================================================================ + +.. automodule:: hezar.models.text_classification.bert.bert_text_classification_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.bert.rst.txt b/_sources/source/hezar.models.text_classification.bert.rst.txt new file mode 100644 index 00000000..bcffc558 --- /dev/null +++ b/_sources/source/hezar.models.text_classification.bert.rst.txt @@ -0,0 +1,19 @@ +hezar.models.text\_classification.bert package +============================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.text_classification.bert.bert_text_classification + hezar.models.text_classification.bert.bert_text_classification_config + +Module contents +--------------- + +.. automodule:: hezar.models.text_classification.bert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.distilbert.distilbert_text_classification.rst.txt b/_sources/source/hezar.models.text_classification.distilbert.distilbert_text_classification.rst.txt new file mode 100644 index 00000000..60be019a --- /dev/null +++ b/_sources/source/hezar.models.text_classification.distilbert.distilbert_text_classification.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_classification.distilbert.distilbert\_text\_classification module +==================================================================================== + +.. automodule:: hezar.models.text_classification.distilbert.distilbert_text_classification + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.distilbert.distilbert_text_classification_config.rst.txt b/_sources/source/hezar.models.text_classification.distilbert.distilbert_text_classification_config.rst.txt new file mode 100644 index 00000000..5b532939 --- /dev/null +++ b/_sources/source/hezar.models.text_classification.distilbert.distilbert_text_classification_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_classification.distilbert.distilbert\_text\_classification\_config module +============================================================================================ + +.. automodule:: hezar.models.text_classification.distilbert.distilbert_text_classification_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.distilbert.rst.txt b/_sources/source/hezar.models.text_classification.distilbert.rst.txt new file mode 100644 index 00000000..d33274fb --- /dev/null +++ b/_sources/source/hezar.models.text_classification.distilbert.rst.txt @@ -0,0 +1,19 @@ +hezar.models.text\_classification.distilbert package +==================================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.text_classification.distilbert.distilbert_text_classification + hezar.models.text_classification.distilbert.distilbert_text_classification_config + +Module contents +--------------- + +.. automodule:: hezar.models.text_classification.distilbert + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.roberta.roberta_text_classification.rst.txt b/_sources/source/hezar.models.text_classification.roberta.roberta_text_classification.rst.txt new file mode 100644 index 00000000..80e28d89 --- /dev/null +++ b/_sources/source/hezar.models.text_classification.roberta.roberta_text_classification.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_classification.roberta.roberta\_text\_classification module +============================================================================== + +.. automodule:: hezar.models.text_classification.roberta.roberta_text_classification + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.roberta.roberta_text_classification_config.rst.txt b/_sources/source/hezar.models.text_classification.roberta.roberta_text_classification_config.rst.txt new file mode 100644 index 00000000..8541010d --- /dev/null +++ b/_sources/source/hezar.models.text_classification.roberta.roberta_text_classification_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_classification.roberta.roberta\_text\_classification\_config module +====================================================================================== + +.. automodule:: hezar.models.text_classification.roberta.roberta_text_classification_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.roberta.rst.txt b/_sources/source/hezar.models.text_classification.roberta.rst.txt new file mode 100644 index 00000000..d05f0dd7 --- /dev/null +++ b/_sources/source/hezar.models.text_classification.roberta.rst.txt @@ -0,0 +1,19 @@ +hezar.models.text\_classification.roberta package +================================================= + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.text_classification.roberta.roberta_text_classification + hezar.models.text_classification.roberta.roberta_text_classification_config + +Module contents +--------------- + +.. automodule:: hezar.models.text_classification.roberta + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_classification.rst.txt b/_sources/source/hezar.models.text_classification.rst.txt new file mode 100644 index 00000000..0c4fc19c --- /dev/null +++ b/_sources/source/hezar.models.text_classification.rst.txt @@ -0,0 +1,20 @@ +hezar.models.text\_classification package +========================================= + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.text_classification.bert + hezar.models.text_classification.distilbert + hezar.models.text_classification.roberta + +Module contents +--------------- + +.. automodule:: hezar.models.text_classification + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_embedding.rst.txt b/_sources/source/hezar.models.text_embedding.rst.txt new file mode 100644 index 00000000..0ba6ba4c --- /dev/null +++ b/_sources/source/hezar.models.text_embedding.rst.txt @@ -0,0 +1,10 @@ +hezar.models.text\_embedding package +==================================== + +Module contents +--------------- + +.. automodule:: hezar.models.text_embedding + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_generation.gpt2.gpt2_text_generation.rst.txt b/_sources/source/hezar.models.text_generation.gpt2.gpt2_text_generation.rst.txt new file mode 100644 index 00000000..5dee9bfe --- /dev/null +++ b/_sources/source/hezar.models.text_generation.gpt2.gpt2_text_generation.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_generation.gpt2.gpt2\_text\_generation module +================================================================ + +.. automodule:: hezar.models.text_generation.gpt2.gpt2_text_generation + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_generation.gpt2.gpt2_text_generation_config.rst.txt b/_sources/source/hezar.models.text_generation.gpt2.gpt2_text_generation_config.rst.txt new file mode 100644 index 00000000..f149635f --- /dev/null +++ b/_sources/source/hezar.models.text_generation.gpt2.gpt2_text_generation_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_generation.gpt2.gpt2\_text\_generation\_config module +======================================================================== + +.. automodule:: hezar.models.text_generation.gpt2.gpt2_text_generation_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_generation.gpt2.rst.txt b/_sources/source/hezar.models.text_generation.gpt2.rst.txt new file mode 100644 index 00000000..35269fd0 --- /dev/null +++ b/_sources/source/hezar.models.text_generation.gpt2.rst.txt @@ -0,0 +1,19 @@ +hezar.models.text\_generation.gpt2 package +========================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.text_generation.gpt2.gpt2_text_generation + hezar.models.text_generation.gpt2.gpt2_text_generation_config + +Module contents +--------------- + +.. automodule:: hezar.models.text_generation.gpt2 + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_generation.rst.txt b/_sources/source/hezar.models.text_generation.rst.txt new file mode 100644 index 00000000..89a04a68 --- /dev/null +++ b/_sources/source/hezar.models.text_generation.rst.txt @@ -0,0 +1,19 @@ +hezar.models.text\_generation package +===================================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.text_generation.gpt2 + hezar.models.text_generation.t5 + +Module contents +--------------- + +.. automodule:: hezar.models.text_generation + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_generation.t5.rst.txt b/_sources/source/hezar.models.text_generation.t5.rst.txt new file mode 100644 index 00000000..f798f702 --- /dev/null +++ b/_sources/source/hezar.models.text_generation.t5.rst.txt @@ -0,0 +1,19 @@ +hezar.models.text\_generation.t5 package +======================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.models.text_generation.t5.t5_text_generation + hezar.models.text_generation.t5.t5_text_generation_config + +Module contents +--------------- + +.. automodule:: hezar.models.text_generation.t5 + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_generation.t5.t5_text_generation.rst.txt b/_sources/source/hezar.models.text_generation.t5.t5_text_generation.rst.txt new file mode 100644 index 00000000..0567751f --- /dev/null +++ b/_sources/source/hezar.models.text_generation.t5.t5_text_generation.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_generation.t5.t5\_text\_generation module +============================================================ + +.. automodule:: hezar.models.text_generation.t5.t5_text_generation + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.models.text_generation.t5.t5_text_generation_config.rst.txt b/_sources/source/hezar.models.text_generation.t5.t5_text_generation_config.rst.txt new file mode 100644 index 00000000..e5a83769 --- /dev/null +++ b/_sources/source/hezar.models.text_generation.t5.t5_text_generation_config.rst.txt @@ -0,0 +1,7 @@ +hezar.models.text\_generation.t5.t5\_text\_generation\_config module +==================================================================== + +.. automodule:: hezar.models.text_generation.t5.t5_text_generation_config + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.audio_feature_extractor.rst.txt b/_sources/source/hezar.preprocessors.audio_feature_extractor.rst.txt new file mode 100644 index 00000000..8c4dbccc --- /dev/null +++ b/_sources/source/hezar.preprocessors.audio_feature_extractor.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.audio\_feature\_extractor module +==================================================== + +.. automodule:: hezar.preprocessors.audio_feature_extractor + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.image_processor.rst.txt b/_sources/source/hezar.preprocessors.image_processor.rst.txt new file mode 100644 index 00000000..705e7f9a --- /dev/null +++ b/_sources/source/hezar.preprocessors.image_processor.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.image\_processor module +=========================================== + +.. automodule:: hezar.preprocessors.image_processor + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.preprocessor.rst.txt b/_sources/source/hezar.preprocessors.preprocessor.rst.txt new file mode 100644 index 00000000..e9db0d27 --- /dev/null +++ b/_sources/source/hezar.preprocessors.preprocessor.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.preprocessor module +======================================= + +.. automodule:: hezar.preprocessors.preprocessor + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.rst.txt b/_sources/source/hezar.preprocessors.rst.txt new file mode 100644 index 00000000..e2db5f82 --- /dev/null +++ b/_sources/source/hezar.preprocessors.rst.txt @@ -0,0 +1,29 @@ +hezar.preprocessors package +=========================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.preprocessors.tokenizers + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.preprocessors.audio_feature_extractor + hezar.preprocessors.image_processor + hezar.preprocessors.preprocessor + hezar.preprocessors.text_normalizer + +Module contents +--------------- + +.. automodule:: hezar.preprocessors + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.text_normalizer.rst.txt b/_sources/source/hezar.preprocessors.text_normalizer.rst.txt new file mode 100644 index 00000000..5f8f2801 --- /dev/null +++ b/_sources/source/hezar.preprocessors.text_normalizer.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.text\_normalizer module +=========================================== + +.. automodule:: hezar.preprocessors.text_normalizer + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.tokenizers.bpe.rst.txt b/_sources/source/hezar.preprocessors.tokenizers.bpe.rst.txt new file mode 100644 index 00000000..8f8353f0 --- /dev/null +++ b/_sources/source/hezar.preprocessors.tokenizers.bpe.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.tokenizers.bpe module +========================================= + +.. automodule:: hezar.preprocessors.tokenizers.bpe + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.tokenizers.rst.txt b/_sources/source/hezar.preprocessors.tokenizers.rst.txt new file mode 100644 index 00000000..8c32edb2 --- /dev/null +++ b/_sources/source/hezar.preprocessors.tokenizers.rst.txt @@ -0,0 +1,22 @@ +hezar.preprocessors.tokenizers package +====================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.preprocessors.tokenizers.bpe + hezar.preprocessors.tokenizers.sentencepiece_bpe + hezar.preprocessors.tokenizers.sentencepiece_unigram + hezar.preprocessors.tokenizers.tokenizer + hezar.preprocessors.tokenizers.wordpiece + +Module contents +--------------- + +.. automodule:: hezar.preprocessors.tokenizers + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.tokenizers.sentencepiece_bpe.rst.txt b/_sources/source/hezar.preprocessors.tokenizers.sentencepiece_bpe.rst.txt new file mode 100644 index 00000000..547ae296 --- /dev/null +++ b/_sources/source/hezar.preprocessors.tokenizers.sentencepiece_bpe.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.tokenizers.sentencepiece\_bpe module +======================================================== + +.. automodule:: hezar.preprocessors.tokenizers.sentencepiece_bpe + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.tokenizers.sentencepiece_unigram.rst.txt b/_sources/source/hezar.preprocessors.tokenizers.sentencepiece_unigram.rst.txt new file mode 100644 index 00000000..20d06611 --- /dev/null +++ b/_sources/source/hezar.preprocessors.tokenizers.sentencepiece_unigram.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.tokenizers.sentencepiece\_unigram module +============================================================ + +.. automodule:: hezar.preprocessors.tokenizers.sentencepiece_unigram + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.tokenizers.tokenizer.rst.txt b/_sources/source/hezar.preprocessors.tokenizers.tokenizer.rst.txt new file mode 100644 index 00000000..0d7bcdf8 --- /dev/null +++ b/_sources/source/hezar.preprocessors.tokenizers.tokenizer.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.tokenizers.tokenizer module +=============================================== + +.. automodule:: hezar.preprocessors.tokenizers.tokenizer + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.preprocessors.tokenizers.wordpiece.rst.txt b/_sources/source/hezar.preprocessors.tokenizers.wordpiece.rst.txt new file mode 100644 index 00000000..09196220 --- /dev/null +++ b/_sources/source/hezar.preprocessors.tokenizers.wordpiece.rst.txt @@ -0,0 +1,7 @@ +hezar.preprocessors.tokenizers.wordpiece module +=============================================== + +.. automodule:: hezar.preprocessors.tokenizers.wordpiece + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.registry.rst.txt b/_sources/source/hezar.registry.rst.txt new file mode 100644 index 00000000..57ce1713 --- /dev/null +++ b/_sources/source/hezar.registry.rst.txt @@ -0,0 +1,7 @@ +hezar.registry module +===================== + +.. automodule:: hezar.registry + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.rst.txt b/_sources/source/hezar.rst.txt new file mode 100644 index 00000000..9b54c33d --- /dev/null +++ b/_sources/source/hezar.rst.txt @@ -0,0 +1,35 @@ +hezar package +============= + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + hezar.data + hezar.embeddings + hezar.metrics + hezar.models + hezar.preprocessors + hezar.trainer + hezar.utils + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.builders + hezar.configs + hezar.constants + hezar.registry + +Module contents +--------------- + +.. automodule:: hezar + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.trainer.metrics_handlers.rst.txt b/_sources/source/hezar.trainer.metrics_handlers.rst.txt new file mode 100644 index 00000000..b9a5a835 --- /dev/null +++ b/_sources/source/hezar.trainer.metrics_handlers.rst.txt @@ -0,0 +1,7 @@ +hezar.trainer.metrics\_handlers module +====================================== + +.. automodule:: hezar.trainer.metrics_handlers + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.trainer.rst.txt b/_sources/source/hezar.trainer.rst.txt new file mode 100644 index 00000000..271eb1ff --- /dev/null +++ b/_sources/source/hezar.trainer.rst.txt @@ -0,0 +1,20 @@ +hezar.trainer package +===================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.trainer.metrics_handlers + hezar.trainer.trainer + hezar.trainer.trainer_utils + +Module contents +--------------- + +.. automodule:: hezar.trainer + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.trainer.trainer.rst.txt b/_sources/source/hezar.trainer.trainer.rst.txt new file mode 100644 index 00000000..e5ae7f8f --- /dev/null +++ b/_sources/source/hezar.trainer.trainer.rst.txt @@ -0,0 +1,7 @@ +hezar.trainer.trainer module +============================ + +.. automodule:: hezar.trainer.trainer + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.trainer.trainer_utils.rst.txt b/_sources/source/hezar.trainer.trainer_utils.rst.txt new file mode 100644 index 00000000..90b1c358 --- /dev/null +++ b/_sources/source/hezar.trainer.trainer_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.trainer.trainer\_utils module +=================================== + +.. automodule:: hezar.trainer.trainer_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.audio_utils.rst.txt b/_sources/source/hezar.utils.audio_utils.rst.txt new file mode 100644 index 00000000..a2a9d931 --- /dev/null +++ b/_sources/source/hezar.utils.audio_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.audio\_utils module +=============================== + +.. automodule:: hezar.utils.audio_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.common_utils.rst.txt b/_sources/source/hezar.utils.common_utils.rst.txt new file mode 100644 index 00000000..ed9244c4 --- /dev/null +++ b/_sources/source/hezar.utils.common_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.common\_utils module +================================ + +.. automodule:: hezar.utils.common_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.data_utils.rst.txt b/_sources/source/hezar.utils.data_utils.rst.txt new file mode 100644 index 00000000..9f1e3bb5 --- /dev/null +++ b/_sources/source/hezar.utils.data_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.data\_utils module +============================== + +.. automodule:: hezar.utils.data_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.file_utils.rst.txt b/_sources/source/hezar.utils.file_utils.rst.txt new file mode 100644 index 00000000..a68e4d9b --- /dev/null +++ b/_sources/source/hezar.utils.file_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.file\_utils module +============================== + +.. automodule:: hezar.utils.file_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.hub_utils.rst.txt b/_sources/source/hezar.utils.hub_utils.rst.txt new file mode 100644 index 00000000..77284a45 --- /dev/null +++ b/_sources/source/hezar.utils.hub_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.hub\_utils module +============================= + +.. automodule:: hezar.utils.hub_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.image_utils.rst.txt b/_sources/source/hezar.utils.image_utils.rst.txt new file mode 100644 index 00000000..3b199808 --- /dev/null +++ b/_sources/source/hezar.utils.image_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.image\_utils module +=============================== + +.. automodule:: hezar.utils.image_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.integration_utils.rst.txt b/_sources/source/hezar.utils.integration_utils.rst.txt new file mode 100644 index 00000000..812aba78 --- /dev/null +++ b/_sources/source/hezar.utils.integration_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.integration\_utils module +===================================== + +.. automodule:: hezar.utils.integration_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.logging.rst.txt b/_sources/source/hezar.utils.logging.rst.txt new file mode 100644 index 00000000..eebc5780 --- /dev/null +++ b/_sources/source/hezar.utils.logging.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.logging module +========================== + +.. automodule:: hezar.utils.logging + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.registry_utils.rst.txt b/_sources/source/hezar.utils.registry_utils.rst.txt new file mode 100644 index 00000000..d4020418 --- /dev/null +++ b/_sources/source/hezar.utils.registry_utils.rst.txt @@ -0,0 +1,7 @@ +hezar.utils.registry\_utils module +================================== + +.. automodule:: hezar.utils.registry_utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/hezar.utils.rst.txt b/_sources/source/hezar.utils.rst.txt new file mode 100644 index 00000000..0d48f115 --- /dev/null +++ b/_sources/source/hezar.utils.rst.txt @@ -0,0 +1,26 @@ +hezar.utils package +=================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + hezar.utils.audio_utils + hezar.utils.common_utils + hezar.utils.data_utils + hezar.utils.file_utils + hezar.utils.hub_utils + hezar.utils.image_utils + hezar.utils.integration_utils + hezar.utils.logging + hezar.utils.registry_utils + +Module contents +--------------- + +.. automodule:: hezar.utils + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/source/index.md.txt b/_sources/source/index.md.txt new file mode 100644 index 00000000..b9ea22ca --- /dev/null +++ b/_sources/source/index.md.txt @@ -0,0 +1,9 @@ +# Reference API + +The docs here are mostly generated from the official source code on the main branch. + + +```{toctree} +:maxdepth: 2 +hezar +``` diff --git a/_sources/source/modules.rst.txt b/_sources/source/modules.rst.txt new file mode 100644 index 00000000..945e205a --- /dev/null +++ b/_sources/source/modules.rst.txt @@ -0,0 +1,7 @@ +hezar +===== + +.. toctree:: + :maxdepth: 4 + + hezar diff --git a/_sources/tutorial/datasets.md.txt b/_sources/tutorial/datasets.md.txt new file mode 100644 index 00000000..8ddf6a65 --- /dev/null +++ b/_sources/tutorial/datasets.md.txt @@ -0,0 +1,59 @@ +# Datasets +Hezar provides both dataset class implementations and ready-to-use data files for the community. + +## Hub Datasets +Hezar datasets are all hosted on the Hugging Face Hub and can be loaded just like any dataset on the Hub. + +### Load using Hugging Face datasets +```python +from datasets import load_dataset + +sentiment_dataset = load_dataset("hezarai/sentiment-dksf") +lscp_dataset = load_dataset("hezarai/lscp-pos-500k") +xlsum_dataset = load_dataset("hezarai/xlsum-fa") +... +``` + +### Load using Hezar Dataset +```python +from hezar.data import Dataset + +sentiment_dataset = Dataset.load("hezarai/sentiment-dksf") # A TextClassificationDataset instance +lscp_dataset = Dataset.load("hezarai/lscp-pos-500k") # A SequenceLabelingDataset instance +xlsum_dataset = Dataset.load("hezarai/xlsum-fa") # A TextSummarizationDataset instance +... +``` + +The difference between using Hezar vs Hugging Face datasets is the output class. In Hezar when you load +a dataset using the `Dataset` class, it automatically finds the proper class for that dataset and creates a +PyTorch `Dataset` instance so that it can be easily passed to a PyTorch `DataLoader` class. +```python +from torch.utils.data import DataLoader + +from hezar.data.datasets import Dataset + +dataset = Dataset.load( + "hezarai/lscp-pos-500k", + tokenizer_path="hezarai/distilbert-base-fa", # tokenizer_path is necessary for data collator +) + +loader = DataLoader(dataset, batch_size=16, shuffle=True, collate_fn=dataset.data_collator) +itr = iter(loader) +print(next(itr)) +``` +But when loading using Hugging Face datasets, the output is an HF Dataset instance. + +So in a nutshell, any Hezar dataset can be loaded using HF datasets but not vise-versa! +(Because Hezar looks out for a `dataset_config.yaml` file in any dataset repo so non-Hezar datasets cannot be +loaded using Hezar `Dataset` class.) + +## Dataset classes +Hezar categorizes datasets based on their target task. The dataset classes all inherit from the base `Dataset` class +which is a PyTorch Dataset subclass. (hence having `__getitem__` and `__len__` methods.) + +Some examples of the dataset classes are `TextClassificationDataset`, `TextSummarizationDataset`, `SequenceLabelingDataset`, etc. + +## Dataset Templates +We try to have a simple yet practical pattern for all datasets on the Hub. Every dataset on the Hub needs to have +a dataset loading script. Some ready to use templates are located in the [templates/dataset_scripts](https://github.com/hezarai/hezar/tree/main/templates/dataset_scripts) folder. +To add a new Hezar compatible dataset to the Hub you can follow the guide provided there. diff --git a/_sources/tutorial/embeddings.md.txt b/_sources/tutorial/embeddings.md.txt new file mode 100644 index 00000000..02007c37 --- /dev/null +++ b/_sources/tutorial/embeddings.md.txt @@ -0,0 +1,128 @@ +# Embeddings +In Hezar, embeddings serve as fundamental components for various natural language processing tasks. The Embedding class +provides a flexible and extensible foundation for working with word embeddings. Currently Hezar has two embedding models +backed by Gensim. This tutorial will guide you through the essential aspects of using and customizing embeddings in Hezar. + +## Load an Embedding from Hub +Loading an embedding from a pretrained embedding on the Hub or locally, is as straightforward as other modules in Hezar. +You can choose your desired model from our Hub and load it like below: +```python +from hezar.embeddings import Embedding + +word2vec = Embedding.load("hezarai/word2vec-cbow-fa-wikipedia") +``` +Now let's just run a simple similarity test between two given words: +```python +word2vec.similarity("هزار", "میلیون") +``` +``` +0.7400991 +``` + +## Embeddings methods + +### Similarity +For getting the similarity score between two words, use the following: +```python +similarity_score = word2vec.similarity("سلام", "درود") +print(similarity_score) +``` +``` +0.6196184 +``` +### Get Top-n Similar Words +Find top-n most similar words to a given word like: +```python +from pprint import pprint + +most_similar = word2vec.most_similar("هزار", topn=5) +pprint(most_similar) +``` +``` +[{'score': '0.7407', 'word': 'دویست'}, + {'score': '0.7401', 'word': 'میلیون'}, + {'score': '0.7326', 'word': 'صد'}, + {'score': '0.7277', 'word': 'پانصد'}, + {'score': '0.7011', 'word': 'سیصد'}] +``` + +### Least Similar in a List +To get the least similar word in a list or a word that does not match other words in a list, use the following: +```python +least_similar = word2vec.doesnt_match(["خانه", "اتاق", "ماشین"]) +``` +``` +'ماشین' +``` + +### Get Word's Vector +Get the vector for a word by: +```python +vector = word2vec("سلام") +``` +You can also give the model a list of words to get vectors for each of them: +```python +vectors = word2vec(["هوش", "مصنوعی"]) +``` + +### Get the Vocabulary +Get the dictionary of the whole vocabulary in the embedding model: +```python +vocab = word2vec.vocab +``` +#### Vocabulary words and indexes +You can also get index of a word in the vocabulary or vise verse: +```python +index = word2vec.word2index("هوش") +word = word2vec.index2word(index) +print(word) +``` +``` +'هوش' +``` +### Converting to a PyTorch nn.Embedding +You can also get a PyTorch embedding layer from the embedding model: +```python +embedding_layer = word2vec.torch_embedding() +print(embedding_layer) +``` +``` +Embedding(240547, 200) +``` +## Training an Embedding Model +To train an embedding model, first choose and build your embedding. For this example, we'll train a Word2Vec model using +the CBOW algorithm with a vector dimension of 200. +```python +from hezar.embeddings import Word2Vec, Word2VecConfig + +model = Word2Vec( + Word2VecConfig( + vector_size=200, + window=5, + train_algorithm="cbow", + alpha=0.025, + min_count=1, + seed=1, + workers=4, + min_alpha=0.0001, + ) +) +``` +Now given a list of sentences as the dataset, run training process: +```python +with open("data.txt") as f: + sentences = f.readlines() + +sentences = [s.replace("\n", "") for s in sentences] + +word2vec.train(sentences, epochs=5) +``` +## Saving and Pushing to the Hub +Now you can save and push your model to the Hub: +```python +word2vec.save("word2vec-cbow-200") + +word2vec.push_to_hub("/word2vec-cbow-200-fa") +``` + + diff --git a/_sources/tutorial/index.md.txt b/_sources/tutorial/index.md.txt new file mode 100644 index 00000000..9078583d --- /dev/null +++ b/_sources/tutorial/index.md.txt @@ -0,0 +1,10 @@ +# Tutorial +```{toctree} +:maxdepth: 1 + +models.md +datasets.md +embeddings.md +preprocessors.md +training.md +``` diff --git a/_sources/tutorial/models.md.txt b/_sources/tutorial/models.md.txt new file mode 100644 index 00000000..04834308 --- /dev/null +++ b/_sources/tutorial/models.md.txt @@ -0,0 +1,138 @@ +# Models +In Hezar, models are the typical PyTorch modules with some extra features for loading, saving, exporting, etc. +Let's dive into some of the most important ones! + +## Models Basics +### Building Models +Like any other package, you can import any model from `hezar.models` that you want. + +```python +from hezar.models import BertMaskFilling, BertMaskFillingConfig + +bert = BertMaskFilling(BertMaskFillingConfig()) +``` +You can also configure the architecture by changing the properties in a model's config like so: +```python +config = BertMaskFillingConfig(num_hidden_layers=8, num_attention_heads=8) +bert = BertMaskFilling(config) +``` + +Every model in Hezar, can be pushed to or downloaded from the Hub. + +### Loading pre-trained models +Loading a model from Hub is as easy as: +```python +from hezar.models import Model + +bert = Model.load("hezarai/bert-base-fa") +``` +The `load` methods takes the following steps to build the model: + +1. Load the config file `model_config.yaml` and figure out the model's class using the `name` config parameter. (`bert_mask_filling` in this snippet) +2. Build the model with random weights from the corresponding class. (`BertMaskFilling` in this snippet) +3. Download the weights file (`model.pt`) and load the state dict into to the model. +4. If the path contains any preprocessor, the preprocessor (`WordPieceTokenizer` in this snippet) will be loaded too. +(You can disable loading preprocessors by setting `Model.load(path, load_preprocessor=False)`) + +### Inference & Prediction +Now that you have loaded a model along with its preprocessors, feature extractors, etc. you can perform an end-to-end +inference in a single line of code using `Model.predict` method. + +A sequence labeling example would be like this: +```python +from hezar.models import Model + +pos_model = Model.load("hezarai/bert-fa-pos-lscp-500k") # Part-of-speech +inputs = ["شرکت هوش مصنوعی هزار"] +pos_outputs = pos_model.predict(inputs) +print(f"POS: {pos_outputs}") +``` +``` +POS: [[{'token': 'شرکت', 'tag': 'Ne'}, {'token': 'هوش', 'tag': 'Ne'}, {'token': 'مصنوعی', 'tag': 'AJe'}, {'token': 'هزار', 'tag': 'NUM'}]] +``` + +### Saving Models +You can save any model along with its config and preprocessor and other files on disk like: + +```python +from hezar.models import RobertaMaskFilling, RobertaMaskFillingConfig + +roberta = RobertaMaskFilling(RobertaMaskFillingConfig(vocab_size=60000)) +roberta.save("my-roberta") +``` + +### Pushing to the Hub +Every model can be pushed to the Hub. +```python +from hezar.models import RobertaTextClassification, RobertaTextClassificationConfig + +roberta = RobertaTextClassification(RobertaTextClassificationConfig(num_labels=2)) +roberta.push_to_hub("arxyzan/roberta-sentiment") +``` +``` +INFO: Uploaded:`RobertaTextClassificationConfig(name=roberta_text_classification)` --> `arxyzan/roberta-sentiment/model_config.yaml` +INFO: Uploaded: `RobertaTextClassification(name=roberta_text_classification)` --> `arxyzan/roberta-sentiment/model.pt` +``` +## Custom Models +Every Hezar model is a subclass of the base model class `Model` and the `Model` itself is a subclass of PyTorch `nn.Module` +with some extra features. So if you're familiar with PyTorch, this should feel like home! + +### A Sample Perceptron +```python +from dataclasses import dataclass + +from torch import Tensor, nn + +from hezar.models import Model, ModelConfig +from hezar.registry import register_model + + +@dataclass +class PerceptronConfig(ModelConfig): + name = "perceptron" + input_shape: int = 4 + output_shape: int = 2 + + +@register_model("perceptron", config_class=PerceptronConfig) +class Perceptron(Model): + """ + A simple single layer network + """ + + def __init__(self, config, **kwargs): + super().__init__(config, **kwargs) + self.nn = nn.Linear( + in_features=self.config.input_shape, + out_features=self.config.output_shape, + ) + + def forward(self, inputs: list, **kwargs): + inputs = Tensor(inputs).reshape(1, -1) + x = self.nn(inputs) + return x + + def post_process(self, model_outputs, **kwargs): + return model_outputs.numpy() + +``` +The only point here is that you have to pass a `ModelConfig` to your model and read everything from the config and the +rest is just typical PyTorch stuff. + +Now you have access to all the features of a Hezar model. +```python +model = Perceptron(PerceptronConfig()) +inputs = [1, 2, 3, 4] +outputs = model.predict(inputs) +print(outputs) +model.save("my-perceptron") +model.push_to_hub("hezarai/perceptron") +``` +``` +[[-1.0953112 -1.9854667]] +INFO: Uploaded:`PerceptronConfig(name=perceptron)` --> `hezarai/perceptron/model_config.yaml` +INFO: Uploaded: `Perceptron(name=perceptron)` --> `hezarai/perceptron/model.pt` +``` + + +To learn more about the internals of the models in Hezar take a look at [the models in-depth guide](../guide/models_advanced.md) diff --git a/_sources/tutorial/preprocessors.md.txt b/_sources/tutorial/preprocessors.md.txt new file mode 100644 index 00000000..d992a946 --- /dev/null +++ b/_sources/tutorial/preprocessors.md.txt @@ -0,0 +1,82 @@ +# Preprocessors +A really important group of modules in Hezar is the preprocessors. Preprocessors are responsible for every single +processing of inputs from their rawest form to the point that they're ready to be fed to the model. + +Preprocessors include all the tokenizers, feature extractors, normalizers, etc. and all of them are considered as a +preprocessor type. + +## Loading preprocessors +Following the common pattern among all modules in Hezar, preprocessors also can be loaded in the same way. + +**Loading with the corresponding module**
    +You can load any preprocessor of any type with its base class like `Tokenizer`, `AudioFeatureExtractor`, etc. +```python +from hezar.preprocessors import Tokenizer, AudioFeatureExtractor, TextNormalizer + +tokenizer = Tokenizer.load("hezarai/bert-base-fa") +normalizer = TextNormalizer.load("hezarai/roberta-base-fa") +feature_extractor = AudioFeatureExtractor.load("hezarai/whisper-small-fa") +... +``` +**Loading with the Preprocessor module**
    +Some models might need multiple types of preprocessors. For example encoder-decoder multimodal models like image captioning models +or even audio models need both feature extractor and text tokenizer or even a text normalizer. In order to load all +preprocessors in a path, you can use the `Preprocessor.load`. The output of this method depends on whether the path +contains single or multiple preprocessors. +- If path contains only one preprocessor the output is a preprocessor object of the right type. +- If path contains multiple preprocessors, the output is a `PreprocessorContainer` which is a dict-like object that holds +each preprocessor by its registry name. +```python +from hezar.preprocessors import Tokenizer + +tokenizer = Tokenizer.load("hezarai/bert-base-fa") +print(tokenizer) +``` +``` + +``` + +```python +from hezar.preprocessors import Preprocessor + +whisper_preprocessors = Preprocessor.load("hezarai/whisper-small-fa") +print(whisper_preprocessors) +``` +``` +PreprocessorsContainer( + [ + ('whisper_feature_extractor', + < hezar.preprocessors.feature_extractors.audio.whisper_feature_extractor.WhisperFeatureExtractor at 0x7f6316fdcbb0 >), + ('whisper_bpe_tokenizer', + < hezar.preprocessors.tokenizers.whisper_bpe.WhisperBPETokenizer at 0x7f643cb13f40 >) + ] +) +``` + +## Saving & Pushing to the Hub +Although preprocessor have their own type, they all implement the `load`, `save` and `push_to_hub` methods. +```python +from hezar.preprocessors import TextNormalizer, TextNormalizerConfig + +normalizer = TextNormalizer(TextNormalizerConfig(nfkc=False)) +normalizer.save("my-normalizer") +normalizer.push_to_hub("arxyzan/my-normalizer") +``` +### Folder structure of the preprocessors +All preprocessors are saved under the `preprocessor` subfolder by default. Changing this behaviour is possible from all +three methods: +- `load(..., subfolder="SUBFOLDER")` +- `save(..., subfolder="SUBFOLDER")` +- `push_to_hub(..., subfolder="SUBFOLDER")` + +The folder structure of the preprocessors for any save model (locally or in a repo) is something like below: +``` +hezarai/whisper-small-fa +├── model_config.yaml +├── model.pt +└── preprocessor + ├── feature_extractor_config.yaml + ├── tokenizer_config.yaml + └── tokenizer.json + +``` diff --git a/_sources/tutorial/training.md.txt b/_sources/tutorial/training.md.txt new file mode 100644 index 00000000..e737352f --- /dev/null +++ b/_sources/tutorial/training.md.txt @@ -0,0 +1,112 @@ +# Training & Fine-tuning + +Training a model in Hezar is pretty much like any other library or even simpler! As mentioned before, any model in Hezar +is also a PyTorch module. So training a model is actually training a PyTorch model with some more cool features! +Let's dive in. + +## Setup +In this example we're going to train a sentiment analysis model based on DistilBERT on a dataset containing +text and sentiment pairs collected from SnappFood/Digikala user comments. +### Import everything needed +First things first, let's import the required stuff. + +```python +from hezar.models import DistilBertTextClassification, DistilBertTextClassificationConfig +from hezar.data import Dataset +from hezar.trainer import Trainer, TrainerConfig +from hezar.preprocessors import Preprocessor +``` +### Define paths +Let's define our paths to the datasets, tokenizer, etc. +```python +DATASET_PATH = "hezarai/sentiment-dksf" # dataset path on the Hub +BASE_MODEL_PATH = "hezarai/distilbert-base-fa" # used as model backbone weights and tokenizer +``` +## Datasets +We can easily load our desired datasets from the Hub. +```python +train_dataset = Dataset.load(DATASET_PATH, split="train", tokenizer_path=BASE_MODEL_PATH) +eval_dataset = Dataset.load(DATASET_PATH, split="test", tokenizer_path=BASE_MODEL_PATH) +``` + +## Model +Let's build our model along with its tokenizer. +### Build the model +```python +model = DistilBertTextClassification(DistilBertTextClassificationConfig(id2label=train_dataset.config.id2label)) +``` +### Load the tokenizer +The tokenizer can be loaded from the base model path. +```python +tokenizer = Preprocessor.load(BASE_MODEL_PATH) +``` + +## Trainer +Hezar has a general Trainer class that satisfies most of your needs. You can customize almost every single part of it +but for now, we stick with the base class `Trainer`. +### Trainer Config +Define all the training properties in the trainer's config. As we're training a text classification model we set the +task to `text_classification` in our config. Other parameters are also customizable like below: +```python +train_config = TrainerConfig( + output_dir="distilbert-fa-sentiment-analysis-dksf", + task="text_classification", + device="cuda", + init_weights_from=BASE_MODEL_PATH, + batch_size=8, + num_epochs=5, + metrics=["f1"], + num_dataloader_workers=0, + seed=42, + optimizer="adamw", + learning_rate=2e-5, + weight_decay=.0, + scheduler="reduce_on_plateau", + use_amp=False, + save_freq=1, +) +``` +### Setup the Trainer +Now that we have our training config we can setup the Trainer. +```python +trainer = Trainer( + config=train_config, + model=model, + train_dataset=train_dataset, + eval_dataset=eval_dataset, + data_collator=train_dataset.data_collator, + preprocessor=tokenizer, +) +``` +### Start Training +```python +trainer.train() +``` +``` +Epoch: 1/5 100%|####################################| 3576/3576 [07:07<00:00, 8.37batch/s, f1=0.732, loss=0.619] +Evaluating... 100%|####################################| 290/290 [00:07<00:00, 38.64batch/s, f1=0.8, loss=0.473] +Epoch: 2/5 100%|####################################| 3576/3576 [07:00<00:00, 8.50batch/s, f1=0.807, loss=0.47] +Evaluating... 100%|####################################| 290/290 [00:07<00:00, 39.87batch/s, f1=0.838, loss=0.419] +Epoch: 3/5 100%|####################################| 3576/3576 [07:01<00:00, 8.48batch/s, f1=0.864, loss=0.348] +Evaluating... 100%|####################################| 290/290 [00:07<00:00, 39.97batch/s, f1=0.875, loss=0.346] +Epoch: 4/5 100%|####################################| 3576/3576 [06:57<00:00, 8.56batch/s, f1=0.919, loss=0.227] +Evaluating... 100%|####################################| 290/290 [00:07<00:00, 38.84batch/s, f1=0.875, loss=0.381] +Epoch: 5/5 100%|####################################| 3576/3576 [07:02<00:00, 8.46batch/s, f1=0.943, loss=0.156] +Evaluating... 100%|####################################| 290/290 [00:07<00:00, 39.71batch/s, f1=0.887, loss=0.446] +``` +### Evaluate +```python +trainer.evaluate() +``` +``` +Evaluating... 100%|####################################| 290/290 [00:07<00:00, 39.46batch/s, f1=0.887, loss=0.445] +``` +## Push everything +Now you can push your trained model to the Hub. The files to push are the model, model config, preprocessor, trainer config, +etc. +```python +trainer.push_to_hub("arxyzan/distilbert-fa-sentiment-dksf") +``` + +## Advanced concepts +You can also explore the in-depth Trainer guide [here](../guide/trainer_in_depth.md). \ No newline at end of file diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..30fee9d0 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 00000000..92fad4b5 --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 00000000..54b3c463 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 00000000..f1916ec7 --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

    Short

    + */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 00000000..2ea7ff3e --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 00000000..dbe1aaad --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/debug.css b/_static/debug.css new file mode 100644 index 00000000..74d4aec3 --- /dev/null +++ b/_static/debug.css @@ -0,0 +1,69 @@ +/* + This CSS file should be overridden by the theme authors. It's + meant for debugging and developing the skeleton that this theme provides. +*/ +body { + font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; + background: lavender; +} +.sb-announcement { + background: rgb(131, 131, 131); +} +.sb-announcement__inner { + background: black; + color: white; +} +.sb-header { + background: lightskyblue; +} +.sb-header__inner { + background: royalblue; + color: white; +} +.sb-header-secondary { + background: lightcyan; +} +.sb-header-secondary__inner { + background: cornflowerblue; + color: white; +} +.sb-sidebar-primary { + background: lightgreen; +} +.sb-main { + background: blanchedalmond; +} +.sb-main__inner { + background: antiquewhite; +} +.sb-header-article { + background: lightsteelblue; +} +.sb-article-container { + background: snow; +} +.sb-article-main { + background: white; +} +.sb-footer-article { + background: lightpink; +} +.sb-sidebar-secondary { + background: lightgoldenrodyellow; +} +.sb-footer-content { + background: plum; +} +.sb-footer-content__inner { + background: palevioletred; +} +.sb-footer { + background: pink; +} +.sb-footer__inner { + background: salmon; +} +.sb-article { + background: white; +} diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..d06a71d7 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..7e4c114f --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/hezar_logo.svg b/_static/hezar_logo.svg new file mode 100644 index 00000000..167c26ce --- /dev/null +++ b/_static/hezar_logo.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 00000000..250f5665 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..5ca2352f --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,247 @@ +.highlight pre { line-height: 125%; } +.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #008800; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #AA22FF; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #008800 } /* Comment.Preproc */ +.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #AA22FF } /* Keyword.Pseudo */ +.highlight .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BB4444 } /* Literal.String */ +.highlight .na { color: #BB4444 } /* Name.Attribute */ +.highlight .nb { color: #AA22FF } /* Name.Builtin */ +.highlight .nc { color: #0000FF } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #00A000 } /* Name.Function */ +.highlight .nl { color: #A0A000 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #B8860B } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sa { color: #BB4444 } /* Literal.String.Affix */ +.highlight .sb { color: #BB4444 } /* Literal.String.Backtick */ +.highlight .sc { color: #BB4444 } /* Literal.String.Char */ +.highlight .dl { color: #BB4444 } /* Literal.String.Delimiter */ +.highlight .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BB4444 } /* Literal.String.Double */ +.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BB4444 } /* Literal.String.Heredoc */ +.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ +.highlight .s1 { color: #BB4444 } /* Literal.String.Single */ +.highlight .ss { color: #B8860B } /* Literal.String.Symbol */ +.highlight .bp { color: #AA22FF } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #00A000 } /* Name.Function.Magic */ +.highlight .vc { color: #B8860B } /* Name.Variable.Class */ +.highlight .vg { color: #B8860B } /* Name.Variable.Global */ +.highlight .vi { color: #B8860B } /* Name.Variable.Instance */ +.highlight .vm { color: #B8860B } /* Name.Variable.Magic */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ +@media not print { +body[data-theme="dark"] .highlight pre { line-height: 125%; } +body[data-theme="dark"] .highlight td.linenos .normal { color: #37474F; background-color: #263238; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos { color: #37474F; background-color: #263238; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight td.linenos .special { color: #607A86; background-color: #263238; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos.special { color: #607A86; background-color: #263238; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight .hll { background-color: #2C3B41 } +body[data-theme="dark"] .highlight { background: #263238; color: #EEFFFF } +body[data-theme="dark"] .highlight .c { color: #546E7A; font-style: italic } /* Comment */ +body[data-theme="dark"] .highlight .err { color: #FF5370 } /* Error */ +body[data-theme="dark"] .highlight .esc { color: #89DDFF } /* Escape */ +body[data-theme="dark"] .highlight .g { color: #EEFFFF } /* Generic */ +body[data-theme="dark"] .highlight .k { color: #BB80B3 } /* Keyword */ +body[data-theme="dark"] .highlight .l { color: #C3E88D } /* Literal */ +body[data-theme="dark"] .highlight .n { color: #EEFFFF } /* Name */ +body[data-theme="dark"] .highlight .o { color: #89DDFF } /* Operator */ +body[data-theme="dark"] .highlight .p { color: #89DDFF } /* Punctuation */ +body[data-theme="dark"] .highlight .ch { color: #546E7A; font-style: italic } /* Comment.Hashbang */ +body[data-theme="dark"] .highlight .cm { color: #546E7A; font-style: italic } /* Comment.Multiline */ +body[data-theme="dark"] .highlight .cp { color: #546E7A; font-style: italic } /* Comment.Preproc */ +body[data-theme="dark"] .highlight .cpf { color: #546E7A; font-style: italic } /* Comment.PreprocFile */ +body[data-theme="dark"] .highlight .c1 { color: #546E7A; font-style: italic } /* Comment.Single */ +body[data-theme="dark"] .highlight .cs { color: #546E7A; font-style: italic } /* Comment.Special */ +body[data-theme="dark"] .highlight .gd { color: #FF5370 } /* Generic.Deleted */ +body[data-theme="dark"] .highlight .ge { color: #89DDFF } /* Generic.Emph */ +body[data-theme="dark"] .highlight .ges { color: #FFCB6B } /* Generic.EmphStrong */ +body[data-theme="dark"] .highlight .gr { color: #FF5370 } /* Generic.Error */ +body[data-theme="dark"] .highlight .gh { color: #C3E88D } /* Generic.Heading */ +body[data-theme="dark"] .highlight .gi { color: #C3E88D } /* Generic.Inserted */ +body[data-theme="dark"] .highlight .go { color: #546E7A } /* Generic.Output */ +body[data-theme="dark"] .highlight .gp { color: #FFCB6B } /* Generic.Prompt */ +body[data-theme="dark"] .highlight .gs { color: #FF5370 } /* Generic.Strong */ +body[data-theme="dark"] .highlight .gu { color: #89DDFF } /* Generic.Subheading */ +body[data-theme="dark"] .highlight .gt { color: #FF5370 } /* Generic.Traceback */ +body[data-theme="dark"] .highlight .kc { color: #89DDFF } /* Keyword.Constant */ +body[data-theme="dark"] .highlight .kd { color: #BB80B3 } /* Keyword.Declaration */ +body[data-theme="dark"] .highlight .kn { color: #89DDFF; font-style: italic } /* Keyword.Namespace */ +body[data-theme="dark"] .highlight .kp { color: #89DDFF } /* Keyword.Pseudo */ +body[data-theme="dark"] .highlight .kr { color: #BB80B3 } /* Keyword.Reserved */ +body[data-theme="dark"] .highlight .kt { color: #BB80B3 } /* Keyword.Type */ +body[data-theme="dark"] .highlight .ld { color: #C3E88D } /* Literal.Date */ +body[data-theme="dark"] .highlight .m { color: #F78C6C } /* Literal.Number */ +body[data-theme="dark"] .highlight .s { color: #C3E88D } /* Literal.String */ +body[data-theme="dark"] .highlight .na { color: #BB80B3 } /* Name.Attribute */ +body[data-theme="dark"] .highlight .nb { color: #82AAFF } /* Name.Builtin */ +body[data-theme="dark"] .highlight .nc { color: #FFCB6B } /* Name.Class */ +body[data-theme="dark"] .highlight .no { color: #EEFFFF } /* Name.Constant */ +body[data-theme="dark"] .highlight .nd { color: #82AAFF } /* Name.Decorator */ +body[data-theme="dark"] .highlight .ni { color: #89DDFF } /* Name.Entity */ +body[data-theme="dark"] .highlight .ne { color: #FFCB6B } /* Name.Exception */ +body[data-theme="dark"] .highlight .nf { color: #82AAFF } /* Name.Function */ +body[data-theme="dark"] .highlight .nl { color: #82AAFF } /* Name.Label */ +body[data-theme="dark"] .highlight .nn { color: #FFCB6B } /* Name.Namespace */ +body[data-theme="dark"] .highlight .nx { color: #EEFFFF } /* Name.Other */ +body[data-theme="dark"] .highlight .py { color: #FFCB6B } /* Name.Property */ +body[data-theme="dark"] .highlight .nt { color: #FF5370 } /* Name.Tag */ +body[data-theme="dark"] .highlight .nv { color: #89DDFF } /* Name.Variable */ +body[data-theme="dark"] .highlight .ow { color: #89DDFF; font-style: italic } /* Operator.Word */ +body[data-theme="dark"] .highlight .pm { color: #89DDFF } /* Punctuation.Marker */ +body[data-theme="dark"] .highlight .w { color: #EEFFFF } /* Text.Whitespace */ +body[data-theme="dark"] .highlight .mb { color: #F78C6C } /* Literal.Number.Bin */ +body[data-theme="dark"] .highlight .mf { color: #F78C6C } /* Literal.Number.Float */ +body[data-theme="dark"] .highlight .mh { color: #F78C6C } /* Literal.Number.Hex */ +body[data-theme="dark"] .highlight .mi { color: #F78C6C } /* Literal.Number.Integer */ +body[data-theme="dark"] .highlight .mo { color: #F78C6C } /* Literal.Number.Oct */ +body[data-theme="dark"] .highlight .sa { color: #BB80B3 } /* Literal.String.Affix */ +body[data-theme="dark"] .highlight .sb { color: #C3E88D } /* Literal.String.Backtick */ +body[data-theme="dark"] .highlight .sc { color: #C3E88D } /* Literal.String.Char */ +body[data-theme="dark"] .highlight .dl { color: #EEFFFF } /* Literal.String.Delimiter */ +body[data-theme="dark"] .highlight .sd { color: #546E7A; font-style: italic } /* Literal.String.Doc */ +body[data-theme="dark"] .highlight .s2 { color: #C3E88D } /* Literal.String.Double */ +body[data-theme="dark"] .highlight .se { color: #EEFFFF } /* Literal.String.Escape */ +body[data-theme="dark"] .highlight .sh { color: #C3E88D } /* Literal.String.Heredoc */ +body[data-theme="dark"] .highlight .si { color: #89DDFF } /* Literal.String.Interpol */ +body[data-theme="dark"] .highlight .sx { color: #C3E88D } /* Literal.String.Other */ +body[data-theme="dark"] .highlight .sr { color: #89DDFF } /* Literal.String.Regex */ +body[data-theme="dark"] .highlight .s1 { color: #C3E88D } /* Literal.String.Single */ +body[data-theme="dark"] .highlight .ss { color: #89DDFF } /* Literal.String.Symbol */ +body[data-theme="dark"] .highlight .bp { color: #89DDFF } /* Name.Builtin.Pseudo */ +body[data-theme="dark"] .highlight .fm { color: #82AAFF } /* Name.Function.Magic */ +body[data-theme="dark"] .highlight .vc { color: #89DDFF } /* Name.Variable.Class */ +body[data-theme="dark"] .highlight .vg { color: #89DDFF } /* Name.Variable.Global */ +body[data-theme="dark"] .highlight .vi { color: #89DDFF } /* Name.Variable.Instance */ +body[data-theme="dark"] .highlight .vm { color: #82AAFF } /* Name.Variable.Magic */ +body[data-theme="dark"] .highlight .il { color: #F78C6C } /* Literal.Number.Integer.Long */ +@media (prefers-color-scheme: dark) { +body:not([data-theme="light"]) .highlight pre { line-height: 125%; } +body:not([data-theme="light"]) .highlight td.linenos .normal { color: #37474F; background-color: #263238; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos { color: #37474F; background-color: #263238; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight td.linenos .special { color: #607A86; background-color: #263238; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos.special { color: #607A86; background-color: #263238; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight .hll { background-color: #2C3B41 } +body:not([data-theme="light"]) .highlight { background: #263238; color: #EEFFFF } +body:not([data-theme="light"]) .highlight .c { color: #546E7A; font-style: italic } /* Comment */ +body:not([data-theme="light"]) .highlight .err { color: #FF5370 } /* Error */ +body:not([data-theme="light"]) .highlight .esc { color: #89DDFF } /* Escape */ +body:not([data-theme="light"]) .highlight .g { color: #EEFFFF } /* Generic */ +body:not([data-theme="light"]) .highlight .k { color: #BB80B3 } /* Keyword */ +body:not([data-theme="light"]) .highlight .l { color: #C3E88D } /* Literal */ +body:not([data-theme="light"]) .highlight .n { color: #EEFFFF } /* Name */ +body:not([data-theme="light"]) .highlight .o { color: #89DDFF } /* Operator */ +body:not([data-theme="light"]) .highlight .p { color: #89DDFF } /* Punctuation */ +body:not([data-theme="light"]) .highlight .ch { color: #546E7A; font-style: italic } /* Comment.Hashbang */ +body:not([data-theme="light"]) .highlight .cm { color: #546E7A; font-style: italic } /* Comment.Multiline */ +body:not([data-theme="light"]) .highlight .cp { color: #546E7A; font-style: italic } /* Comment.Preproc */ +body:not([data-theme="light"]) .highlight .cpf { color: #546E7A; font-style: italic } /* Comment.PreprocFile */ +body:not([data-theme="light"]) .highlight .c1 { color: #546E7A; font-style: italic } /* Comment.Single */ +body:not([data-theme="light"]) .highlight .cs { color: #546E7A; font-style: italic } /* Comment.Special */ +body:not([data-theme="light"]) .highlight .gd { color: #FF5370 } /* Generic.Deleted */ +body:not([data-theme="light"]) .highlight .ge { color: #89DDFF } /* Generic.Emph */ +body:not([data-theme="light"]) .highlight .ges { color: #FFCB6B } /* Generic.EmphStrong */ +body:not([data-theme="light"]) .highlight .gr { color: #FF5370 } /* Generic.Error */ +body:not([data-theme="light"]) .highlight .gh { color: #C3E88D } /* Generic.Heading */ +body:not([data-theme="light"]) .highlight .gi { color: #C3E88D } /* Generic.Inserted */ +body:not([data-theme="light"]) .highlight .go { color: #546E7A } /* Generic.Output */ +body:not([data-theme="light"]) .highlight .gp { color: #FFCB6B } /* Generic.Prompt */ +body:not([data-theme="light"]) .highlight .gs { color: #FF5370 } /* Generic.Strong */ +body:not([data-theme="light"]) .highlight .gu { color: #89DDFF } /* Generic.Subheading */ +body:not([data-theme="light"]) .highlight .gt { color: #FF5370 } /* Generic.Traceback */ +body:not([data-theme="light"]) .highlight .kc { color: #89DDFF } /* Keyword.Constant */ +body:not([data-theme="light"]) .highlight .kd { color: #BB80B3 } /* Keyword.Declaration */ +body:not([data-theme="light"]) .highlight .kn { color: #89DDFF; font-style: italic } /* Keyword.Namespace */ +body:not([data-theme="light"]) .highlight .kp { color: #89DDFF } /* Keyword.Pseudo */ +body:not([data-theme="light"]) .highlight .kr { color: #BB80B3 } /* Keyword.Reserved */ +body:not([data-theme="light"]) .highlight .kt { color: #BB80B3 } /* Keyword.Type */ +body:not([data-theme="light"]) .highlight .ld { color: #C3E88D } /* Literal.Date */ +body:not([data-theme="light"]) .highlight .m { color: #F78C6C } /* Literal.Number */ +body:not([data-theme="light"]) .highlight .s { color: #C3E88D } /* Literal.String */ +body:not([data-theme="light"]) .highlight .na { color: #BB80B3 } /* Name.Attribute */ +body:not([data-theme="light"]) .highlight .nb { color: #82AAFF } /* Name.Builtin */ +body:not([data-theme="light"]) .highlight .nc { color: #FFCB6B } /* Name.Class */ +body:not([data-theme="light"]) .highlight .no { color: #EEFFFF } /* Name.Constant */ +body:not([data-theme="light"]) .highlight .nd { color: #82AAFF } /* Name.Decorator */ +body:not([data-theme="light"]) .highlight .ni { color: #89DDFF } /* Name.Entity */ +body:not([data-theme="light"]) .highlight .ne { color: #FFCB6B } /* Name.Exception */ +body:not([data-theme="light"]) .highlight .nf { color: #82AAFF } /* Name.Function */ +body:not([data-theme="light"]) .highlight .nl { color: #82AAFF } /* Name.Label */ +body:not([data-theme="light"]) .highlight .nn { color: #FFCB6B } /* Name.Namespace */ +body:not([data-theme="light"]) .highlight .nx { color: #EEFFFF } /* Name.Other */ +body:not([data-theme="light"]) .highlight .py { color: #FFCB6B } /* Name.Property */ +body:not([data-theme="light"]) .highlight .nt { color: #FF5370 } /* Name.Tag */ +body:not([data-theme="light"]) .highlight .nv { color: #89DDFF } /* Name.Variable */ +body:not([data-theme="light"]) .highlight .ow { color: #89DDFF; font-style: italic } /* Operator.Word */ +body:not([data-theme="light"]) .highlight .pm { color: #89DDFF } /* Punctuation.Marker */ +body:not([data-theme="light"]) .highlight .w { color: #EEFFFF } /* Text.Whitespace */ +body:not([data-theme="light"]) .highlight .mb { color: #F78C6C } /* Literal.Number.Bin */ +body:not([data-theme="light"]) .highlight .mf { color: #F78C6C } /* Literal.Number.Float */ +body:not([data-theme="light"]) .highlight .mh { color: #F78C6C } /* Literal.Number.Hex */ +body:not([data-theme="light"]) .highlight .mi { color: #F78C6C } /* Literal.Number.Integer */ +body:not([data-theme="light"]) .highlight .mo { color: #F78C6C } /* Literal.Number.Oct */ +body:not([data-theme="light"]) .highlight .sa { color: #BB80B3 } /* Literal.String.Affix */ +body:not([data-theme="light"]) .highlight .sb { color: #C3E88D } /* Literal.String.Backtick */ +body:not([data-theme="light"]) .highlight .sc { color: #C3E88D } /* Literal.String.Char */ +body:not([data-theme="light"]) .highlight .dl { color: #EEFFFF } /* Literal.String.Delimiter */ +body:not([data-theme="light"]) .highlight .sd { color: #546E7A; font-style: italic } /* Literal.String.Doc */ +body:not([data-theme="light"]) .highlight .s2 { color: #C3E88D } /* Literal.String.Double */ +body:not([data-theme="light"]) .highlight .se { color: #EEFFFF } /* Literal.String.Escape */ +body:not([data-theme="light"]) .highlight .sh { color: #C3E88D } /* Literal.String.Heredoc */ +body:not([data-theme="light"]) .highlight .si { color: #89DDFF } /* Literal.String.Interpol */ +body:not([data-theme="light"]) .highlight .sx { color: #C3E88D } /* Literal.String.Other */ +body:not([data-theme="light"]) .highlight .sr { color: #89DDFF } /* Literal.String.Regex */ +body:not([data-theme="light"]) .highlight .s1 { color: #C3E88D } /* Literal.String.Single */ +body:not([data-theme="light"]) .highlight .ss { color: #89DDFF } /* Literal.String.Symbol */ +body:not([data-theme="light"]) .highlight .bp { color: #89DDFF } /* Name.Builtin.Pseudo */ +body:not([data-theme="light"]) .highlight .fm { color: #82AAFF } /* Name.Function.Magic */ +body:not([data-theme="light"]) .highlight .vc { color: #89DDFF } /* Name.Variable.Class */ +body:not([data-theme="light"]) .highlight .vg { color: #89DDFF } /* Name.Variable.Global */ +body:not([data-theme="light"]) .highlight .vi { color: #89DDFF } /* Name.Variable.Instance */ +body:not([data-theme="light"]) .highlight .vm { color: #82AAFF } /* Name.Variable.Magic */ +body:not([data-theme="light"]) .highlight .il { color: #F78C6C } /* Literal.Number.Integer.Long */ +} +} \ No newline at end of file diff --git a/_static/scripts/furo-extensions.js b/_static/scripts/furo-extensions.js new file mode 100644 index 00000000..e69de29b diff --git a/_static/scripts/furo.js b/_static/scripts/furo.js new file mode 100644 index 00000000..32e7c05b --- /dev/null +++ b/_static/scripts/furo.js @@ -0,0 +1,3 @@ +/*! For license information please see furo.js.LICENSE.txt */ +(()=>{var t={212:function(t,e,n){var o,r;r=void 0!==n.g?n.g:"undefined"!=typeof window?window:this,o=function(){return function(t){"use strict";var e={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(t,e,n){if(n.settings.events){var o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(o)}},o=function(t){var e=0;if(t.offsetParent)for(;t;)e+=t.offsetTop,t=t.offsetParent;return e>=0?e:0},r=function(t){t&&t.sort((function(t,e){return o(t.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,e){var n=t[t.length-1];if(function(t,e){return!(!s()||!c(t.content,e,!0))}(n,e))return n;for(var o=t.length-1;o>=0;o--)if(c(t[o].content,e))return t[o]},a=function(t,e){if(e.nested&&t.parentNode){var n=t.parentNode.closest("li");n&&(n.classList.remove(e.nestedClass),a(n,e))}},i=function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.remove(e.navClass),t.content.classList.remove(e.contentClass),a(o,e),n("gumshoeDeactivate",o,{link:t.nav,content:t.content,settings:e}))}},u=function(t,e){if(e.nested){var n=t.parentNode.closest("li");n&&(n.classList.add(e.nestedClass),u(n,e))}};return function(o,c){var s,a,d,f,m,v={setup:function(){s=document.querySelectorAll(o),a=[],Array.prototype.forEach.call(s,(function(t){var e=document.getElementById(decodeURIComponent(t.hash.substr(1)));e&&a.push({nav:t,content:e})})),r(a)},detect:function(){var t=l(a,m);t?d&&t.content===d.content||(i(d,m),function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.add(e.navClass),t.content.classList.add(e.contentClass),u(o,e),n("gumshoeActivate",o,{link:t.nav,content:t.content,settings:e}))}}(t,m),d=t):d&&(i(d,m),d=null)}},h=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(v.detect)},g=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame((function(){r(a),v.detect()}))};return v.destroy=function(){d&&i(d,m),t.removeEventListener("scroll",h,!1),m.reflow&&t.removeEventListener("resize",g,!1),a=null,s=null,d=null,f=null,m=null},m=function(){var t={};return Array.prototype.forEach.call(arguments,(function(e){for(var n in e){if(!e.hasOwnProperty(n))return;t[n]=e[n]}})),t}(e,c||{}),v.setup(),v.detect(),t.addEventListener("scroll",h,!1),m.reflow&&t.addEventListener("resize",g,!1),v}}(r)}.apply(e,[]),void 0===o||(t.exports=o)}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var c=e[o]={exports:{}};return t[o].call(c.exports,c,c.exports,n),c.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=n(212),e=n.n(t),o=null,r=null,c=window.pageYOffset||document.documentElement.scrollTop;const s=64;function l(){const t=localStorage.getItem("theme")||"auto";var e;"light"!==(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"auto"===t?"light":"light"==t?"dark":"auto":"auto"===t?"dark":"dark"==t?"light":"auto")&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto"),document.body.dataset.theme=e,localStorage.setItem("theme",e),console.log(`Changed to ${e} mode.`)}function a(){!function(){const t=document.getElementsByClassName("theme-toggle");Array.from(t).forEach((t=>{t.addEventListener("click",l)}))}(),function(){let t=0,e=!1;window.addEventListener("scroll",(function(n){t=window.scrollY,e||(window.requestAnimationFrame((function(){var n;n=t,0==Math.floor(r.getBoundingClientRect().top)?r.classList.add("scrolled"):r.classList.remove("scrolled"),function(t){tc&&document.documentElement.classList.remove("show-back-to-top"),c=t}(n),function(t){null!==o&&(0==t?o.scrollTo(0,0):Math.ceil(t)>=Math.floor(document.documentElement.scrollHeight-window.innerHeight)?o.scrollTo(0,o.scrollHeight):document.querySelector(".scroll-current"))}(n),e=!1})),e=!0)})),window.scroll()}(),null!==o&&new(e())(".toc-tree a",{reflow:!0,recursive:!0,navClass:"scroll-current",offset:()=>{let t=parseFloat(getComputedStyle(document.documentElement).fontSize);return r.getBoundingClientRect().height+.5*t+1}})}document.addEventListener("DOMContentLoaded",(function(){document.body.parentNode.classList.remove("no-js"),r=document.querySelector("header"),o=document.querySelector(".toc-scroll"),a()}))})()})(); +//# sourceMappingURL=furo.js.map \ No newline at end of file diff --git a/_static/scripts/furo.js.LICENSE.txt b/_static/scripts/furo.js.LICENSE.txt new file mode 100644 index 00000000..1632189c --- /dev/null +++ b/_static/scripts/furo.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! + * gumshoejs v5.1.2 (patched by @pradyunsg) + * A simple, framework-agnostic scrollspy script. + * (c) 2019 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/gumshoe + */ diff --git a/_static/scripts/furo.js.map b/_static/scripts/furo.js.map new file mode 100644 index 00000000..7b7ddb11 --- /dev/null +++ b/_static/scripts/furo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader() {\n if (Math.floor(header.getBoundingClientRect().top) == 0) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader();\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 0.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","floor","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..7918c3fa --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,574 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/skeleton.css b/_static/skeleton.css new file mode 100644 index 00000000..467c878c --- /dev/null +++ b/_static/skeleton.css @@ -0,0 +1,296 @@ +/* Some sane resets. */ +html { + height: 100%; +} + +body { + margin: 0; + min-height: 100%; +} + +/* All the flexbox magic! */ +body, +.sb-announcement, +.sb-content, +.sb-main, +.sb-container, +.sb-container__inner, +.sb-article-container, +.sb-footer-content, +.sb-header, +.sb-header-secondary, +.sb-footer { + display: flex; +} + +/* These order things vertically */ +body, +.sb-main, +.sb-article-container { + flex-direction: column; +} + +/* Put elements in the center */ +.sb-header, +.sb-header-secondary, +.sb-container, +.sb-content, +.sb-footer, +.sb-footer-content { + justify-content: center; +} +/* Put elements at the ends */ +.sb-article-container { + justify-content: space-between; +} + +/* These elements grow. */ +.sb-main, +.sb-content, +.sb-container, +article { + flex-grow: 1; +} + +/* Because padding making this wider is not fun */ +article { + box-sizing: border-box; +} + +/* The announcements element should never be wider than the page. */ +.sb-announcement { + max-width: 100%; +} + +.sb-sidebar-primary, +.sb-sidebar-secondary { + flex-shrink: 0; + width: 17rem; +} + +.sb-announcement__inner { + justify-content: center; + + box-sizing: border-box; + height: 3rem; + + overflow-x: auto; + white-space: nowrap; +} + +/* Sidebars, with checkbox-based toggle */ +.sb-sidebar-primary, +.sb-sidebar-secondary { + position: fixed; + height: 100%; + top: 0; +} + +.sb-sidebar-primary { + left: -17rem; + transition: left 250ms ease-in-out; +} +.sb-sidebar-secondary { + right: -17rem; + transition: right 250ms ease-in-out; +} + +.sb-sidebar-toggle { + display: none; +} +.sb-sidebar-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + + transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; + + opacity: 0; + background-color: rgba(0, 0, 0, 0.54); +} + +#sb-sidebar-toggle--primary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], +#sb-sidebar-toggle--secondary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { + width: 100%; + height: 100%; + opacity: 1; + transition: width 0ms ease, height 0ms ease, opacity 250ms ease; +} + +#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { + left: 0; +} +#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { + right: 0; +} + +/* Full-width mode */ +.drop-secondary-sidebar-for-full-width-content + .hide-when-secondary-sidebar-shown { + display: none !important; +} +.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { + display: none !important; +} + +/* Mobile views */ +.sb-page-width { + width: 100%; +} + +.sb-article-container, +.sb-footer-content__inner, +.drop-secondary-sidebar-for-full-width-content .sb-article, +.drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 100vw; +} + +.sb-article, +.match-content-width { + padding: 0 1rem; + box-sizing: border-box; +} + +@media (min-width: 32rem) { + .sb-article, + .match-content-width { + padding: 0 2rem; + } +} + +/* Tablet views */ +@media (min-width: 42rem) { + .sb-article-container { + width: auto; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 42rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 46rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 46rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 50rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 50rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Tablet views */ +@media (min-width: 59rem) { + .sb-sidebar-secondary { + position: static; + } + .hide-when-secondary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 63rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 67rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Desktop views */ +@media (min-width: 76rem) { + .sb-sidebar-primary { + position: static; + } + .hide-when-primary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} + +/* Full desktop views */ +@media (min-width: 80rem) { + .sb-article, + .match-content-width { + width: 46rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } +} + +@media (min-width: 84rem) { + .sb-article, + .match-content-width { + width: 50rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } +} + +@media (min-width: 88rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-page-width { + width: 88rem; + } +} diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 00000000..8a96c69a --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/styles/furo-extensions.css b/_static/styles/furo-extensions.css new file mode 100644 index 00000000..bc447f22 --- /dev/null +++ b/_static/styles/furo-extensions.css @@ -0,0 +1,2 @@ +#furo-sidebar-ad-placement{padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)}#furo-sidebar-ad-placement .ethical-sidebar{background:var(--color-background-secondary);border:none;box-shadow:none}#furo-sidebar-ad-placement .ethical-sidebar:hover{background:var(--color-background-hover)}#furo-sidebar-ad-placement .ethical-sidebar a{color:var(--color-foreground-primary)}#furo-sidebar-ad-placement .ethical-callout a{color:var(--color-foreground-secondary)!important}#furo-readthedocs-versions{background:transparent;display:block;position:static;width:100%}#furo-readthedocs-versions .rst-versions{background:#1a1c1e}#furo-readthedocs-versions .rst-current-version{background:var(--color-sidebar-item-background);cursor:unset}#furo-readthedocs-versions .rst-current-version:hover{background:var(--color-sidebar-item-background)}#furo-readthedocs-versions .rst-current-version .fa-book{color:var(--color-foreground-primary)}#furo-readthedocs-versions>.rst-other-versions{padding:0}#furo-readthedocs-versions>.rst-other-versions small{opacity:1}#furo-readthedocs-versions .injected .rst-versions{position:unset}#furo-readthedocs-versions:focus-within,#furo-readthedocs-versions:hover{box-shadow:0 0 0 1px var(--color-sidebar-background-border)}#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:hover .rst-current-version{background:#1a1c1e;font-size:inherit;height:auto;line-height:inherit;padding:12px;text-align:right}#furo-readthedocs-versions:focus-within .rst-current-version .fa-book,#furo-readthedocs-versions:hover .rst-current-version .fa-book{color:#fff;float:left}#furo-readthedocs-versions:focus-within .fa-caret-down,#furo-readthedocs-versions:hover .fa-caret-down{display:none}#furo-readthedocs-versions:focus-within .injected,#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:focus-within .rst-other-versions,#furo-readthedocs-versions:hover .injected,#furo-readthedocs-versions:hover .rst-current-version,#furo-readthedocs-versions:hover .rst-other-versions{display:block}#furo-readthedocs-versions:focus-within>.rst-current-version,#furo-readthedocs-versions:hover>.rst-current-version{display:none}.highlight:hover button.copybtn{color:var(--color-code-foreground)}.highlight button.copybtn{align-items:center;background-color:var(--color-code-background);border:none;color:var(--color-background-item);cursor:pointer;height:1.25em;opacity:1;right:.5rem;top:.625rem;transition:color .3s,opacity .3s;width:1.25em}.highlight button.copybtn:hover{background-color:var(--color-code-background);color:var(--color-brand-content)}.highlight button.copybtn:after{background-color:transparent;color:var(--color-code-foreground);display:none}.highlight button.copybtn.success{color:#22863a;transition:color 0ms}.highlight button.copybtn.success:after{display:block}.highlight button.copybtn svg{padding:0}body{--sd-color-primary:var(--color-brand-primary);--sd-color-primary-highlight:var(--color-brand-content);--sd-color-primary-text:var(--color-background-primary);--sd-color-shadow:rgba(0,0,0,.05);--sd-color-card-border:var(--color-card-border);--sd-color-card-border-hover:var(--color-brand-content);--sd-color-card-background:var(--color-card-background);--sd-color-card-text:var(--color-foreground-primary);--sd-color-card-header:var(--color-card-marginals-background);--sd-color-card-footer:var(--color-card-marginals-background);--sd-color-tabs-label-active:var(--color-brand-content);--sd-color-tabs-label-hover:var(--color-foreground-muted);--sd-color-tabs-label-inactive:var(--color-foreground-muted);--sd-color-tabs-underline-active:var(--color-brand-content);--sd-color-tabs-underline-hover:var(--color-foreground-border);--sd-color-tabs-underline-inactive:var(--color-background-border);--sd-color-tabs-overline:var(--color-background-border);--sd-color-tabs-underline:var(--color-background-border)}.sd-tab-content{box-shadow:0 -2px var(--sd-color-tabs-overline),0 1px var(--sd-color-tabs-underline)}.sd-card{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)}.sd-shadow-sm{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-md{box-shadow:0 .3rem .75rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-lg{box-shadow:0 .6rem 1.5rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-card-hover:hover{transform:none}.sd-cards-carousel{gap:.25rem;padding:.25rem}body{--tabs--label-text:var(--color-foreground-muted);--tabs--label-text--hover:var(--color-foreground-muted);--tabs--label-text--active:var(--color-brand-content);--tabs--label-text--active--hover:var(--color-brand-content);--tabs--label-background:transparent;--tabs--label-background--hover:transparent;--tabs--label-background--active:transparent;--tabs--label-background--active--hover:transparent;--tabs--padding-x:0.25em;--tabs--margin-x:1em;--tabs--border:var(--color-background-border);--tabs--label-border:transparent;--tabs--label-border--hover:var(--color-foreground-muted);--tabs--label-border--active:var(--color-brand-content);--tabs--label-border--active--hover:var(--color-brand-content)}[role=main] .container{max-width:none;padding-left:0;padding-right:0}.shadow.docutils{border:none;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)!important}.sphinx-bs .card{background-color:var(--color-background-secondary);color:var(--color-foreground)} +/*# sourceMappingURL=furo-extensions.css.map*/ \ No newline at end of file diff --git a/_static/styles/furo-extensions.css.map b/_static/styles/furo-extensions.css.map new file mode 100644 index 00000000..9ba5637f --- /dev/null +++ b/_static/styles/furo-extensions.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo-extensions.css","mappings":"AAGA,2BACE,oFACA,4CAKE,6CAHA,YACA,eAEA,CACA,kDACE,yCAEF,8CACE,sCAEJ,8CACE,kDAEJ,2BAGE,uBACA,cAHA,gBACA,UAEA,CAGA,yCACE,mBAEF,gDAEE,gDADA,YACA,CACA,sDACE,gDACF,yDACE,sCAEJ,+CACE,UACA,qDACE,UAGF,mDACE,eAEJ,yEAEE,4DAEA,mHASE,mBAPA,kBAEA,YADA,oBAGA,aADA,gBAIA,CAEA,qIAEE,WADA,UACA,CAEJ,uGACE,aAEF,iUAGE,cAEF,mHACE,aC1EJ,gCACE,mCAEF,0BAKE,mBAUA,8CACA,YAFA,mCAKA,eAZA,cALA,UASA,YADA,YAYA,iCAdA,YAcA,CAEA,gCAEE,8CADA,gCACA,CAEF,gCAGE,6BADA,mCADA,YAEA,CAEF,kCAEE,cADA,oBACA,CACA,wCACE,cAEJ,8BACE,UC5CN,KAEE,6CAA8C,CAC9C,uDAAwD,CACxD,uDAAwD,CAGxD,iCAAsC,CAGtC,+CAAgD,CAChD,uDAAwD,CACxD,uDAAwD,CACxD,oDAAqD,CACrD,6DAA8D,CAC9D,6DAA8D,CAG9D,uDAAwD,CACxD,yDAA0D,CAC1D,4DAA6D,CAC7D,2DAA4D,CAC5D,8DAA+D,CAC/D,iEAAkE,CAClE,uDAAwD,CACxD,wDAAyD,CAG3D,gBACE,qFAGF,SACE,6EAEF,cACE,uFAEF,cACE,uFAEF,cACE,uFAGF,qBACE,eAEF,mBACE,WACA,eChDF,KACE,gDAAiD,CACjD,uDAAwD,CACxD,qDAAsD,CACtD,4DAA6D,CAC7D,oCAAqC,CACrC,2CAA4C,CAC5C,4CAA6C,CAC7C,mDAAoD,CACpD,wBAAyB,CACzB,oBAAqB,CACrB,6CAA8C,CAC9C,gCAAiC,CACjC,yDAA0D,CAC1D,uDAAwD,CACxD,8DAA+D,CCbjE,uBACE,eACA,eACA,gBAGF,iBACE,YACA,+EAGF,iBACE,mDACA","sources":["webpack:///./src/furo/assets/styles/extensions/_readthedocs.sass","webpack:///./src/furo/assets/styles/extensions/_copybutton.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-design.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-inline-tabs.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-panels.sass"],"sourcesContent":["// This file contains the styles used for tweaking how ReadTheDoc's embedded\n// contents would show up inside the theme.\n\n#furo-sidebar-ad-placement\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n .ethical-sidebar\n // Remove the border and box-shadow.\n border: none\n box-shadow: none\n // Manage the background colors.\n background: var(--color-background-secondary)\n &:hover\n background: var(--color-background-hover)\n // Ensure the text is legible.\n a\n color: var(--color-foreground-primary)\n\n .ethical-callout a\n color: var(--color-foreground-secondary) !important\n\n#furo-readthedocs-versions\n position: static\n width: 100%\n background: transparent\n display: block\n\n // Make the background color fit with the theme's aesthetic.\n .rst-versions\n background: rgb(26, 28, 30)\n\n .rst-current-version\n cursor: unset\n background: var(--color-sidebar-item-background)\n &:hover\n background: var(--color-sidebar-item-background)\n .fa-book\n color: var(--color-foreground-primary)\n\n > .rst-other-versions\n padding: 0\n small\n opacity: 1\n\n .injected\n .rst-versions\n position: unset\n\n &:hover,\n &:focus-within\n box-shadow: 0 0 0 1px var(--color-sidebar-background-border)\n\n .rst-current-version\n // Undo the tweaks done in RTD's CSS\n font-size: inherit\n line-height: inherit\n height: auto\n text-align: right\n padding: 12px\n\n // Match the rest of the body\n background: #1a1c1e\n\n .fa-book\n float: left\n color: white\n\n .fa-caret-down\n display: none\n\n .rst-current-version,\n .rst-other-versions,\n .injected\n display: block\n\n > .rst-current-version\n display: none\n",".highlight\n &:hover button.copybtn\n color: var(--color-code-foreground)\n\n button.copybtn\n // Make it visible\n opacity: 1\n\n // Align things correctly\n align-items: center\n\n height: 1.25em\n width: 1.25em\n\n top: 0.625rem // $code-spacing-vertical\n right: 0.5rem\n\n // Make it look better\n color: var(--color-background-item)\n background-color: var(--color-code-background)\n border: none\n\n // Change to cursor to make it obvious that you can click on it\n cursor: pointer\n\n // Transition smoothly, for aesthetics\n transition: color 300ms, opacity 300ms\n\n &:hover\n color: var(--color-brand-content)\n background-color: var(--color-code-background)\n\n &::after\n display: none\n color: var(--color-code-foreground)\n background-color: transparent\n\n &.success\n transition: color 0ms\n color: #22863a\n &::after\n display: block\n\n svg\n padding: 0\n","body\n // Colors\n --sd-color-primary: var(--color-brand-primary)\n --sd-color-primary-highlight: var(--color-brand-content)\n --sd-color-primary-text: var(--color-background-primary)\n\n // Shadows\n --sd-color-shadow: rgba(0, 0, 0, 0.05)\n\n // Cards\n --sd-color-card-border: var(--color-card-border)\n --sd-color-card-border-hover: var(--color-brand-content)\n --sd-color-card-background: var(--color-card-background)\n --sd-color-card-text: var(--color-foreground-primary)\n --sd-color-card-header: var(--color-card-marginals-background)\n --sd-color-card-footer: var(--color-card-marginals-background)\n\n // Tabs\n --sd-color-tabs-label-active: var(--color-brand-content)\n --sd-color-tabs-label-hover: var(--color-foreground-muted)\n --sd-color-tabs-label-inactive: var(--color-foreground-muted)\n --sd-color-tabs-underline-active: var(--color-brand-content)\n --sd-color-tabs-underline-hover: var(--color-foreground-border)\n --sd-color-tabs-underline-inactive: var(--color-background-border)\n --sd-color-tabs-overline: var(--color-background-border)\n --sd-color-tabs-underline: var(--color-background-border)\n\n// Tabs\n.sd-tab-content\n box-shadow: 0 -2px var(--sd-color-tabs-overline), 0 1px var(--sd-color-tabs-underline)\n\n// Shadows\n.sd-card // Have a shadow by default\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n.sd-shadow-sm\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-md\n box-shadow: 0 0.3rem 0.75rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-lg\n box-shadow: 0 0.6rem 1.5rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Cards\n.sd-card-hover:hover // Don't change scale on hover\n transform: none\n\n.sd-cards-carousel // Have a bit of gap in the carousel by default\n gap: 0.25rem\n padding: 0.25rem\n","// This file contains styles to tweak sphinx-inline-tabs to work well with Furo.\n\nbody\n --tabs--label-text: var(--color-foreground-muted)\n --tabs--label-text--hover: var(--color-foreground-muted)\n --tabs--label-text--active: var(--color-brand-content)\n --tabs--label-text--active--hover: var(--color-brand-content)\n --tabs--label-background: transparent\n --tabs--label-background--hover: transparent\n --tabs--label-background--active: transparent\n --tabs--label-background--active--hover: transparent\n --tabs--padding-x: 0.25em\n --tabs--margin-x: 1em\n --tabs--border: var(--color-background-border)\n --tabs--label-border: transparent\n --tabs--label-border--hover: var(--color-foreground-muted)\n --tabs--label-border--active: var(--color-brand-content)\n --tabs--label-border--active--hover: var(--color-brand-content)\n","// This file contains styles to tweak sphinx-panels to work well with Furo.\n\n// sphinx-panels includes Bootstrap 4, which uses .container which can conflict\n// with docutils' `.. container::` directive.\n[role=\"main\"] .container\n max-width: initial\n padding-left: initial\n padding-right: initial\n\n// Make the panels look nicer!\n.shadow.docutils\n border: none\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Make panel colors respond to dark mode\n.sphinx-bs .card\n background-color: var(--color-background-secondary)\n color: var(--color-foreground)\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/_static/styles/furo.css b/_static/styles/furo.css new file mode 100644 index 00000000..3d29a218 --- /dev/null +++ b/_static/styles/furo.css @@ -0,0 +1,2 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@media print{.content-icon-container,.headerlink,.mobile-header,.related-pages{display:none!important}.highlight{border:.1pt solid var(--color-foreground-border)}a,blockquote,dl,ol,pre,table,ul{page-break-inside:avoid}caption,figure,h1,h2,h3,h4,h5,h6,img{page-break-after:avoid;page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}}.visually-hidden{clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}:-moz-focusring{outline:auto}body{--font-stack:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;--font-stack--monospace:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--font-size--normal:100%;--font-size--small:87.5%;--font-size--small--2:81.25%;--font-size--small--3:75%;--font-size--small--4:62.5%;--sidebar-caption-font-size:var(--font-size--small--2);--sidebar-item-font-size:var(--font-size--small);--sidebar-search-input-font-size:var(--font-size--small);--toc-font-size:var(--font-size--small--3);--toc-font-size--mobile:var(--font-size--normal);--toc-title-font-size:var(--font-size--small--4);--admonition-font-size:0.8125rem;--admonition-title-font-size:0.8125rem;--code-font-size:var(--font-size--small--2);--api-font-size:var(--font-size--small);--header-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*4);--header-padding:0.5rem;--sidebar-tree-space-above:1.5rem;--sidebar-caption-space-above:1rem;--sidebar-item-line-height:1rem;--sidebar-item-spacing-vertical:0.5rem;--sidebar-item-spacing-horizontal:1rem;--sidebar-item-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*2);--sidebar-expander-width:var(--sidebar-item-height);--sidebar-search-space-above:0.5rem;--sidebar-search-input-spacing-vertical:0.5rem;--sidebar-search-input-spacing-horizontal:0.5rem;--sidebar-search-input-height:1rem;--sidebar-search-icon-size:var(--sidebar-search-input-height);--toc-title-padding:0.25rem 0;--toc-spacing-vertical:1.5rem;--toc-spacing-horizontal:1.5rem;--toc-item-spacing-vertical:0.4rem;--toc-item-spacing-horizontal:1rem;--icon-search:url('data:image/svg+xml;charset=utf-8,');--icon-pencil:url('data:image/svg+xml;charset=utf-8,');--icon-abstract:url('data:image/svg+xml;charset=utf-8,');--icon-info:url('data:image/svg+xml;charset=utf-8,');--icon-flame:url('data:image/svg+xml;charset=utf-8,');--icon-question:url('data:image/svg+xml;charset=utf-8,');--icon-warning:url('data:image/svg+xml;charset=utf-8,');--icon-failure:url('data:image/svg+xml;charset=utf-8,');--icon-spark:url('data:image/svg+xml;charset=utf-8,');--color-admonition-title--caution:#ff9100;--color-admonition-title-background--caution:rgba(255,145,0,.2);--color-admonition-title--warning:#ff9100;--color-admonition-title-background--warning:rgba(255,145,0,.2);--color-admonition-title--danger:#ff5252;--color-admonition-title-background--danger:rgba(255,82,82,.2);--color-admonition-title--attention:#ff5252;--color-admonition-title-background--attention:rgba(255,82,82,.2);--color-admonition-title--error:#ff5252;--color-admonition-title-background--error:rgba(255,82,82,.2);--color-admonition-title--hint:#00c852;--color-admonition-title-background--hint:rgba(0,200,82,.2);--color-admonition-title--tip:#00c852;--color-admonition-title-background--tip:rgba(0,200,82,.2);--color-admonition-title--important:#00bfa5;--color-admonition-title-background--important:rgba(0,191,165,.2);--color-admonition-title--note:#00b0ff;--color-admonition-title-background--note:rgba(0,176,255,.2);--color-admonition-title--seealso:#448aff;--color-admonition-title-background--seealso:rgba(68,138,255,.2);--color-admonition-title--admonition-todo:grey;--color-admonition-title-background--admonition-todo:hsla(0,0%,50%,.2);--color-admonition-title:#651fff;--color-admonition-title-background:rgba(101,31,255,.2);--icon-admonition-default:var(--icon-abstract);--color-topic-title:#14b8a6;--color-topic-title-background:rgba(20,184,166,.2);--icon-topic-default:var(--icon-pencil);--color-problematic:#b30000;--color-foreground-primary:#000;--color-foreground-secondary:#5a5c63;--color-foreground-muted:#646776;--color-foreground-border:#878787;--color-background-primary:#fff;--color-background-secondary:#f8f9fb;--color-background-hover:#efeff4;--color-background-hover--transparent:#efeff400;--color-background-border:#eeebee;--color-background-item:#ccc;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#2962ff;--color-brand-content:#2a5adf;--color-api-background:var(--color-background-hover--transparent);--color-api-background-hover:var(--color-background-hover);--color-api-overall:var(--color-foreground-secondary);--color-api-name:var(--color-problematic);--color-api-pre-name:var(--color-problematic);--color-api-paren:var(--color-foreground-secondary);--color-api-keyword:var(--color-foreground-primary);--color-highlight-on-target:#ffc;--color-inline-code-background:var(--color-background-secondary);--color-highlighted-background:#def;--color-highlighted-text:var(--color-foreground-primary);--color-guilabel-background:#ddeeff80;--color-guilabel-border:#bedaf580;--color-guilabel-text:var(--color-foreground-primary);--color-admonition-background:transparent;--color-table-header-background:var(--color-background-secondary);--color-table-border:var(--color-background-border);--color-card-border:var(--color-background-secondary);--color-card-background:transparent;--color-card-marginals-background:var(--color-background-secondary);--color-header-background:var(--color-background-primary);--color-header-border:var(--color-background-border);--color-header-text:var(--color-foreground-primary);--color-sidebar-background:var(--color-background-secondary);--color-sidebar-background-border:var(--color-background-border);--color-sidebar-brand-text:var(--color-foreground-primary);--color-sidebar-caption-text:var(--color-foreground-muted);--color-sidebar-link-text:var(--color-foreground-secondary);--color-sidebar-link-text--top-level:var(--color-brand-primary);--color-sidebar-item-background:var(--color-sidebar-background);--color-sidebar-item-background--current:var( --color-sidebar-item-background );--color-sidebar-item-background--hover:linear-gradient(90deg,var(--color-background-hover--transparent) 0%,var(--color-background-hover) var(--sidebar-item-spacing-horizontal),var(--color-background-hover) 100%);--color-sidebar-item-expander-background:transparent;--color-sidebar-item-expander-background--hover:var( --color-background-hover );--color-sidebar-search-text:var(--color-foreground-primary);--color-sidebar-search-background:var(--color-background-secondary);--color-sidebar-search-background--focus:var(--color-background-primary);--color-sidebar-search-border:var(--color-background-border);--color-sidebar-search-icon:var(--color-foreground-muted);--color-toc-background:var(--color-background-primary);--color-toc-title-text:var(--color-foreground-muted);--color-toc-item-text:var(--color-foreground-secondary);--color-toc-item-text--hover:var(--color-foreground-primary);--color-toc-item-text--active:var(--color-brand-primary);--color-content-foreground:var(--color-foreground-primary);--color-content-background:transparent;--color-link:var(--color-brand-content);--color-link--hover:var(--color-brand-content);--color-link-underline:var(--color-background-border);--color-link-underline--hover:var(--color-foreground-border)}.only-light{display:block!important}html body .only-dark{display:none!important}@media not print{body[data-theme=dark]{--color-problematic:#ee5151;--color-foreground-primary:#ffffffcc;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#2b8cee;--color-brand-content:#368ce2;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body[data-theme=dark] .only-light{display:none!important}body[data-theme=dark] .only-dark{display:block!important}@media(prefers-color-scheme:dark){body:not([data-theme=light]){--color-problematic:#ee5151;--color-foreground-primary:#ffffffcc;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#2b8cee;--color-brand-content:#368ce2;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body:not([data-theme=light]) .only-light{display:none!important}body:not([data-theme=light]) .only-dark{display:block!important}}}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto,body[data-theme=dark] .theme-toggle svg.theme-icon-when-dark,body[data-theme=light] .theme-toggle svg.theme-icon-when-light{display:block}body{font-family:var(--font-stack)}code,kbd,pre,samp{font-family:var(--font-stack--monospace)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article{line-height:1.5}h1,h2,h3,h4,h5,h6{border-radius:.5rem;font-weight:700;line-height:1.25;margin:.5rem -.5rem;padding-left:.5rem;padding-right:.5rem}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}h1{font-size:2.5em;margin-bottom:1rem}h1,h2{margin-top:1.75rem}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}small{font-size:80%;opacity:75%}p{margin-bottom:.75rem;margin-top:.5rem}hr.docutils{background-color:var(--color-background-border);border:0;height:1px;margin:2rem 0;padding:0}.centered{text-align:center}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}a:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link{color:inherit}a.muted-link:hover{color:var(--color-link);text-decoration-color:var(--color-link-underline--hover)}html{overflow-x:hidden;overflow-y:scroll;scroll-behavior:smooth}.sidebar-scroll,.toc-scroll,article[role=main] *{scrollbar-color:var(--color-foreground-border) transparent;scrollbar-width:thin}.sidebar-scroll::-webkit-scrollbar,.toc-scroll::-webkit-scrollbar,article[role=main] ::-webkit-scrollbar{height:.25rem;width:.25rem}.sidebar-scroll::-webkit-scrollbar-thumb,.toc-scroll::-webkit-scrollbar-thumb,article[role=main] ::-webkit-scrollbar-thumb{background-color:var(--color-foreground-border);border-radius:.125rem}body,html{background:var(--color-background-primary);color:var(--color-foreground-primary);height:100%}article{background:var(--color-content-background);color:var(--color-content-foreground);overflow-wrap:break-word}.page{display:flex;min-height:100%}.mobile-header{background-color:var(--color-header-background);border-bottom:1px solid var(--color-header-border);color:var(--color-header-text);display:none;height:var(--header-height);width:100%;z-index:10}.mobile-header.scrolled{border-bottom:none;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.mobile-header .header-center a{color:var(--color-header-text);text-decoration:none}.main{display:flex;flex:1}.sidebar-drawer{background:var(--color-sidebar-background);border-right:1px solid var(--color-sidebar-background-border);box-sizing:border-box;display:flex;justify-content:flex-end;min-width:15em;width:calc(50% - 26em)}.sidebar-container,.toc-drawer{box-sizing:border-box;width:15em}.toc-drawer{background:var(--color-toc-background);padding-right:1rem}.sidebar-sticky,.toc-sticky{display:flex;flex-direction:column;height:min(100%,100vh);height:100vh;position:sticky;top:0}.sidebar-scroll,.toc-scroll{flex-grow:1;flex-shrink:1;overflow:auto;scroll-behavior:smooth}.content{display:flex;flex-direction:column;justify-content:space-between;padding:0 3em;width:46em}.icon{display:inline-block;height:1rem;width:1rem}.icon svg{height:100%;width:100%}.announcement{align-items:center;background-color:var(--color-announcement-background);color:var(--color-announcement-text);display:flex;height:var(--header-height);overflow-x:auto}.announcement+.page{min-height:calc(100% - var(--header-height))}.announcement-content{box-sizing:border-box;min-width:100%;padding:.5rem;text-align:center;white-space:nowrap}.announcement-content a{color:var(--color-announcement-text);text-decoration-color:var(--color-announcement-text)}.announcement-content a:hover{color:var(--color-announcement-text);text-decoration-color:var(--color-link--hover)}.no-js .theme-toggle-container{display:none}.theme-toggle-container{vertical-align:middle}.theme-toggle{background:transparent;border:none;cursor:pointer;padding:0}.theme-toggle svg{color:var(--color-foreground-primary);display:none;height:1rem;vertical-align:middle;width:1rem}.theme-toggle-header{float:left;padding:1rem .5rem}.nav-overlay-icon,.toc-overlay-icon{cursor:pointer;display:none}.nav-overlay-icon .icon,.toc-overlay-icon .icon{color:var(--color-foreground-secondary);height:1rem;width:1rem}.nav-overlay-icon,.toc-header-icon{align-items:center;justify-content:center}.toc-content-icon{height:1.5rem;width:1.5rem}.content-icon-container{display:flex;float:right;gap:.5rem;margin-bottom:1rem;margin-left:1rem;margin-top:1.5rem}.content-icon-container .edit-this-page svg{color:inherit;height:1rem;width:1rem}.sidebar-toggle{display:none;position:absolute}.sidebar-toggle[name=__toc]{left:20px}.sidebar-toggle:checked{left:40px}.overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}.sidebar-overlay{z-index:20}.toc-overlay{z-index:40}.sidebar-drawer{transition:left .25s ease-in-out;z-index:30}.toc-drawer{transition:right .25s ease-in-out;z-index:50}#__navigation:checked~.sidebar-overlay{height:100%;opacity:1;width:100%}#__navigation:checked~.page .sidebar-drawer{left:0;top:0}#__toc:checked~.toc-overlay{height:100%;opacity:1;width:100%}#__toc:checked~.page .toc-drawer{right:0;top:0}.back-to-top{background:var(--color-background-primary);border-radius:1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.502);display:none;font-size:.8125rem;left:0;margin-left:50%;padding:.5rem .75rem .5rem .5rem;position:fixed;text-decoration:none;top:1rem;transform:translateX(-50%);z-index:10}.back-to-top svg{fill:currentColor;display:inline-block;height:1rem;width:1rem}.back-to-top span{margin-left:.25rem}.show-back-to-top .back-to-top{align-items:center;display:flex}@media(min-width:97em){html{font-size:110%}}@media(max-width:82em){.toc-content-icon{display:flex}.toc-drawer{border-left:1px solid var(--color-background-muted);height:100vh;position:fixed;right:-15em;top:0}.toc-tree{border-left:none;font-size:var(--toc-font-size--mobile)}.sidebar-drawer{width:calc(50% - 18.5em)}}@media(max-width:67em){.nav-overlay-icon{display:flex}.sidebar-drawer{height:100vh;left:-15em;position:fixed;top:0;width:15em}.toc-header-icon{display:flex}.theme-toggle-content,.toc-content-icon{display:none}.theme-toggle-header{display:block}.mobile-header{align-items:center;display:flex;justify-content:space-between;position:sticky;top:0}.mobile-header .header-left,.mobile-header .header-right{display:flex;height:var(--header-height);padding:0 var(--header-padding)}.mobile-header .header-left label,.mobile-header .header-right label{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.nav-overlay-icon .icon,.theme-toggle svg{height:1.25rem;width:1.25rem}:target{scroll-margin-top:var(--header-height)}.back-to-top{top:calc(var(--header-height) + .5rem)}.page{flex-direction:column;justify-content:center}.content{margin-left:auto;margin-right:auto}}@media(max-width:52em){.content{overflow-x:auto;width:100%}}@media(max-width:46em){.content{padding:0 1em}article aside.sidebar{float:none;margin:1rem 0;width:100%}}.admonition,.topic{background:var(--color-admonition-background);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);font-size:var(--admonition-font-size);margin:1rem auto;overflow:hidden;padding:0 .5rem .5rem;page-break-inside:avoid}.admonition>:nth-child(2),.topic>:nth-child(2){margin-top:0}.admonition>:last-child,.topic>:last-child{margin-bottom:0}.admonition p.admonition-title,p.topic-title{font-size:var(--admonition-title-font-size);font-weight:500;line-height:1.3;margin:0 -.5rem .5rem;padding:.4rem .5rem .4rem 2rem;position:relative}.admonition p.admonition-title:before,p.topic-title:before{content:"";height:1rem;left:.5rem;position:absolute;width:1rem}p.admonition-title{background-color:var(--color-admonition-title-background)}p.admonition-title:before{background-color:var(--color-admonition-title);-webkit-mask-image:var(--icon-admonition-default);mask-image:var(--icon-admonition-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}p.topic-title{background-color:var(--color-topic-title-background)}p.topic-title:before{background-color:var(--color-topic-title);-webkit-mask-image:var(--icon-topic-default);mask-image:var(--icon-topic-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.admonition{border-left:.2rem solid var(--color-admonition-title)}.admonition.caution{border-left-color:var(--color-admonition-title--caution)}.admonition.caution>.admonition-title{background-color:var(--color-admonition-title-background--caution)}.admonition.caution>.admonition-title:before{background-color:var(--color-admonition-title--caution);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.warning{border-left-color:var(--color-admonition-title--warning)}.admonition.warning>.admonition-title{background-color:var(--color-admonition-title-background--warning)}.admonition.warning>.admonition-title:before{background-color:var(--color-admonition-title--warning);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.danger{border-left-color:var(--color-admonition-title--danger)}.admonition.danger>.admonition-title{background-color:var(--color-admonition-title-background--danger)}.admonition.danger>.admonition-title:before{background-color:var(--color-admonition-title--danger);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.attention{border-left-color:var(--color-admonition-title--attention)}.admonition.attention>.admonition-title{background-color:var(--color-admonition-title-background--attention)}.admonition.attention>.admonition-title:before{background-color:var(--color-admonition-title--attention);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.error{border-left-color:var(--color-admonition-title--error)}.admonition.error>.admonition-title{background-color:var(--color-admonition-title-background--error)}.admonition.error>.admonition-title:before{background-color:var(--color-admonition-title--error);-webkit-mask-image:var(--icon-failure);mask-image:var(--icon-failure)}.admonition.hint{border-left-color:var(--color-admonition-title--hint)}.admonition.hint>.admonition-title{background-color:var(--color-admonition-title-background--hint)}.admonition.hint>.admonition-title:before{background-color:var(--color-admonition-title--hint);-webkit-mask-image:var(--icon-question);mask-image:var(--icon-question)}.admonition.tip{border-left-color:var(--color-admonition-title--tip)}.admonition.tip>.admonition-title{background-color:var(--color-admonition-title-background--tip)}.admonition.tip>.admonition-title:before{background-color:var(--color-admonition-title--tip);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.important{border-left-color:var(--color-admonition-title--important)}.admonition.important>.admonition-title{background-color:var(--color-admonition-title-background--important)}.admonition.important>.admonition-title:before{background-color:var(--color-admonition-title--important);-webkit-mask-image:var(--icon-flame);mask-image:var(--icon-flame)}.admonition.note{border-left-color:var(--color-admonition-title--note)}.admonition.note>.admonition-title{background-color:var(--color-admonition-title-background--note)}.admonition.note>.admonition-title:before{background-color:var(--color-admonition-title--note);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition.seealso{border-left-color:var(--color-admonition-title--seealso)}.admonition.seealso>.admonition-title{background-color:var(--color-admonition-title-background--seealso)}.admonition.seealso>.admonition-title:before{background-color:var(--color-admonition-title--seealso);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.admonition-todo{border-left-color:var(--color-admonition-title--admonition-todo)}.admonition.admonition-todo>.admonition-title{background-color:var(--color-admonition-title-background--admonition-todo)}.admonition.admonition-todo>.admonition-title:before{background-color:var(--color-admonition-title--admonition-todo);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition-todo>.admonition-title{text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:first-child{margin-top:.125rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:last-child{margin-bottom:.75rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list>dt{font-size:var(--font-size--small);text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd:empty{margin-bottom:.5rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul{margin-left:-1.2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p:nth-child(2){margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p+p:last-child:empty{margin-bottom:0;margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{color:var(--color-api-overall)}.sig:not(.sig-inline){background:var(--color-api-background);border-radius:.25rem;font-family:var(--font-stack--monospace);font-size:var(--api-font-size);font-weight:700;margin-left:-.25rem;margin-right:-.25rem;padding:.25rem .5rem .25rem 3em;text-indent:-2.5em;transition:background .1s ease-out}.sig:not(.sig-inline):hover{background:var(--color-api-background-hover)}.sig:not(.sig-inline) a.reference .viewcode-link{font-weight:400;width:3.5rem}em.property{font-style:normal}em.property:first-child{color:var(--color-api-keyword)}.sig-name{color:var(--color-api-name)}.sig-prename{color:var(--color-api-pre-name);font-weight:400}.sig-paren{color:var(--color-api-paren)}.sig-param{font-style:normal}.versionmodified{font-style:italic}div.deprecated p,div.versionadded p,div.versionchanged p{margin-bottom:.125rem;margin-top:.125rem}.viewcode-back,.viewcode-link{float:right;text-align:right}.line-block{margin-bottom:.75rem;margin-top:.5rem}.line-block .line-block{margin-bottom:0;margin-top:0;padding-left:1rem}.code-block-caption,article p.caption,table>caption{font-size:var(--font-size--small);text-align:center}.toctree-wrapper.compound .caption,.toctree-wrapper.compound :not(.caption)>.caption-text{font-size:var(--font-size--small);margin-bottom:0;text-align:initial;text-transform:uppercase}.toctree-wrapper.compound>ul{margin-bottom:0;margin-top:0}.sig-inline,code.literal{background:var(--color-inline-code-background);border-radius:.2em;font-size:var(--font-size--small--2);padding:.1em .2em}pre.literal-block .sig-inline,pre.literal-block code.literal{font-size:inherit;padding:0}p .sig-inline,p code.literal{border:1px solid var(--color-background-border)}.sig-inline{font-family:var(--font-stack--monospace)}div[class*=" highlight-"],div[class^=highlight-]{display:flex;margin:1em 0}div[class*=" highlight-"] .table-wrapper,div[class^=highlight-] .table-wrapper,pre{margin:0;padding:0}pre{overflow:auto}article[role=main] .highlight pre{line-height:1.5}.highlight pre,pre.literal-block{font-size:var(--code-font-size);padding:.625rem .875rem}pre.literal-block{background-color:var(--color-code-background);border-radius:.2rem;color:var(--color-code-foreground);margin-bottom:1rem;margin-top:1rem}.highlight{border-radius:.2rem;width:100%}.highlight .gp,.highlight span.linenos{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{display:block;margin-left:-.875rem;margin-right:-.875rem;padding-left:.875rem;padding-right:.875rem}.code-block-caption{background-color:var(--color-code-background);border-bottom:1px solid;border-radius:.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--color-background-border);color:var(--color-code-foreground);display:flex;font-weight:300;padding:.625rem .875rem}.code-block-caption+div[class]{margin-top:0}.code-block-caption+div[class] pre{border-top-left-radius:0;border-top-right-radius:0}.highlighttable{display:block;width:100%}.highlighttable tbody{display:block}.highlighttable tr{display:flex}.highlighttable td.linenos{background-color:var(--color-code-background);border-bottom-left-radius:.2rem;border-top-left-radius:.2rem;color:var(--color-code-foreground);padding:.625rem 0 .625rem .875rem}.highlighttable .linenodiv{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;font-size:var(--code-font-size);padding-right:.875rem}.highlighttable td.code{display:block;flex:1;overflow:hidden;padding:0}.highlighttable td.code .highlight{border-bottom-left-radius:0;border-top-left-radius:0}.highlight span.linenos{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;display:inline-block;margin-right:.875rem;padding-left:0;padding-right:.875rem}.footnote-reference{font-size:var(--font-size--small--4);vertical-align:super}dl.footnote.brackets{color:var(--color-foreground-secondary);display:grid;font-size:var(--font-size--small);grid-template-columns:max-content auto}dl.footnote.brackets dt{margin:0}dl.footnote.brackets dt>.fn-backref{margin-left:.25rem}dl.footnote.brackets dt:after{content:":"}dl.footnote.brackets dt .brackets:before{content:"["}dl.footnote.brackets dt .brackets:after{content:"]"}dl.footnote.brackets dd{margin:0;padding:0 1rem}aside.footnote{color:var(--color-foreground-secondary);font-size:var(--font-size--small)}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>p,div.citation>p{margin-left:2rem}img{box-sizing:border-box;height:auto;max-width:100%}article .figure,article figure{border-radius:.2rem;margin:0}article .figure :last-child,article figure :last-child{margin-bottom:0}article .align-left{clear:left;float:left;margin:0 1rem 1rem}article .align-right{clear:right;float:right;margin:0 1rem 1rem}article .align-center,article .align-default{display:block;margin-left:auto;margin-right:auto;text-align:center}article table.align-default{display:table;text-align:initial}.domainindex-jumpbox,.genindex-jumpbox{border-bottom:1px solid var(--color-background-border);border-top:1px solid var(--color-background-border);padding:.25rem}.domainindex-section h2,.genindex-section h2{margin-bottom:.5rem;margin-top:.75rem}.domainindex-section ul,.genindex-section ul{margin-bottom:0;margin-top:0}ol,ul{margin-bottom:1rem;margin-top:1rem;padding-left:1.2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}ol li>p:last-child,ul li>p:last-child{margin-top:.25rem}ol li>ol,ol li>ul,ul li>ol,ul li>ul{margin-bottom:.5rem;margin-top:.5rem}ol.arabic{list-style:decimal}ol.loweralpha{list-style:lower-alpha}ol.upperalpha{list-style:upper-alpha}ol.lowerroman{list-style:lower-roman}ol.upperroman{list-style:upper-roman}.simple li>ol,.simple li>ul,.toctree-wrapper li>ol,.toctree-wrapper li>ul{margin-bottom:0;margin-top:0}.field-list dt,.option-list dt,dl.footnote dt,dl.glossary dt,dl.simple dt,dl:not([class]) dt{font-weight:500;margin-top:.25rem}.field-list dt+dt,.option-list dt+dt,dl.footnote dt+dt,dl.glossary dt+dt,dl.simple dt+dt,dl:not([class]) dt+dt{margin-top:0}.field-list dt .classifier:before,.option-list dt .classifier:before,dl.footnote dt .classifier:before,dl.glossary dt .classifier:before,dl.simple dt .classifier:before,dl:not([class]) dt .classifier:before{content:":";margin-left:.2rem;margin-right:.2rem}.field-list dd ul,.field-list dd>p:first-child,.option-list dd ul,.option-list dd>p:first-child,dl.footnote dd ul,dl.footnote dd>p:first-child,dl.glossary dd ul,dl.glossary dd>p:first-child,dl.simple dd ul,dl.simple dd>p:first-child,dl:not([class]) dd ul,dl:not([class]) dd>p:first-child{margin-top:.125rem}.field-list dd ul,.option-list dd ul,dl.footnote dd ul,dl.glossary dd ul,dl.simple dd ul,dl:not([class]) dd ul{margin-bottom:.125rem}.math-wrapper{overflow-x:auto;width:100%}div.math{position:relative;text-align:center}div.math .headerlink,div.math:focus .headerlink{display:none}div.math:hover .headerlink{display:inline-block}div.math span.eqno{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);z-index:1}abbr[title]{cursor:help}.problematic{color:var(--color-problematic)}kbd:not(.compound){background-color:var(--color-background-secondary);border:1px solid var(--color-foreground-border);border-radius:.2rem;box-shadow:0 .0625rem 0 rgba(0,0,0,.2),inset 0 0 0 .125rem var(--color-background-primary);color:var(--color-foreground-primary);display:inline-block;font-size:var(--font-size--small--3);margin:0 .2rem;padding:0 .2rem;vertical-align:text-bottom}blockquote{background:var(--color-background-secondary);border-left:4px solid var(--color-background-border);margin-left:0;margin-right:0;padding:.5rem 1rem}blockquote .attribution{font-weight:600;text-align:right}blockquote.highlights,blockquote.pull-quote{font-size:1.25em}blockquote.epigraph,blockquote.pull-quote{border-left-width:0;border-radius:.5rem}blockquote.highlights{background:transparent;border-left-width:0}p .reference img{vertical-align:middle}p.rubric{font-size:1.125em;font-weight:700;line-height:1.25}dd p.rubric{font-size:var(--font-size--small);font-weight:inherit;line-height:inherit;text-transform:uppercase}article .sidebar{background-color:var(--color-background-secondary);border:1px solid var(--color-background-border);border-radius:.2rem;clear:right;float:right;margin-left:1rem;margin-right:0;width:30%}article .sidebar>*{padding-left:1rem;padding-right:1rem}article .sidebar>ol,article .sidebar>ul{padding-left:2.2rem}article .sidebar .sidebar-title{border-bottom:1px solid var(--color-background-border);font-weight:500;margin:0;padding:.5rem 1rem}.table-wrapper{margin-bottom:.5rem;margin-top:1rem;overflow-x:auto;padding:.2rem .2rem .75rem;width:100%}table.docutils{border-collapse:collapse;border-radius:.2rem;border-spacing:0;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}table.docutils th{background:var(--color-table-header-background)}table.docutils td,table.docutils th{border-bottom:1px solid var(--color-table-border);border-left:1px solid var(--color-table-border);border-right:1px solid var(--color-table-border);padding:0 .25rem}table.docutils td p,table.docutils th p{margin:.25rem}table.docutils td:first-child,table.docutils th:first-child{border-left:none}table.docutils td:last-child,table.docutils th:last-child{border-right:none}table.docutils td.text-left,table.docutils th.text-left{text-align:left}table.docutils td.text-right,table.docutils th.text-right{text-align:right}table.docutils td.text-center,table.docutils th.text-center{text-align:center}:target{scroll-margin-top:.5rem}@media(max-width:67em){:target{scroll-margin-top:calc(.5rem + var(--header-height))}section>span:target{scroll-margin-top:calc(.8rem + var(--header-height))}}.headerlink{font-weight:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-caption>.headerlink,dl dt>.headerlink,figcaption p>.headerlink,h1>.headerlink,h2>.headerlink,h3>.headerlink,h4>.headerlink,h5>.headerlink,h6>.headerlink,p.caption>.headerlink,table>caption>.headerlink{margin-left:.5rem;visibility:hidden}.code-block-caption:hover>.headerlink,dl dt:hover>.headerlink,figcaption p:hover>.headerlink,h1:hover>.headerlink,h2:hover>.headerlink,h3:hover>.headerlink,h4:hover>.headerlink,h5:hover>.headerlink,h6:hover>.headerlink,p.caption:hover>.headerlink,table>caption:hover>.headerlink{visibility:visible}.code-block-caption>.toc-backref,dl dt>.toc-backref,figcaption p>.toc-backref,h1>.toc-backref,h2>.toc-backref,h3>.toc-backref,h4>.toc-backref,h5>.toc-backref,h6>.toc-backref,p.caption>.toc-backref,table>caption>.toc-backref{color:inherit;text-decoration-line:none}figure:hover>figcaption>p>.headerlink,table:hover>caption>.headerlink{visibility:visible}:target>h1:first-of-type,:target>h2:first-of-type,:target>h3:first-of-type,:target>h4:first-of-type,:target>h5:first-of-type,:target>h6:first-of-type,span:target~h1:first-of-type,span:target~h2:first-of-type,span:target~h3:first-of-type,span:target~h4:first-of-type,span:target~h5:first-of-type,span:target~h6:first-of-type{background-color:var(--color-highlight-on-target)}:target>h1:first-of-type code.literal,:target>h2:first-of-type code.literal,:target>h3:first-of-type code.literal,:target>h4:first-of-type code.literal,:target>h5:first-of-type code.literal,:target>h6:first-of-type code.literal,span:target~h1:first-of-type code.literal,span:target~h2:first-of-type code.literal,span:target~h3:first-of-type code.literal,span:target~h4:first-of-type code.literal,span:target~h5:first-of-type code.literal,span:target~h6:first-of-type code.literal{background-color:transparent}.literal-block-wrapper:target .code-block-caption,.this-will-duplicate-information-and-it-is-still-useful-here li :target,figure:target,table:target>caption{background-color:var(--color-highlight-on-target)}dt:target{background-color:var(--color-highlight-on-target)!important}.footnote-reference:target,.footnote>dt:target+dd{background-color:var(--color-highlight-on-target)}.guilabel{background-color:var(--color-guilabel-background);border:1px solid var(--color-guilabel-border);border-radius:.5em;color:var(--color-guilabel-text);font-size:.9em;padding:0 .3em}footer{display:flex;flex-direction:column;font-size:var(--font-size--small);margin-top:2rem}.bottom-of-page{align-items:center;border-top:1px solid var(--color-background-border);color:var(--color-foreground-secondary);display:flex;justify-content:space-between;line-height:1.5;margin-top:1rem;padding-bottom:1rem;padding-top:1rem}@media(max-width:46em){.bottom-of-page{flex-direction:column-reverse;gap:.25rem;text-align:center}}.bottom-of-page .left-details{font-size:var(--font-size--small)}.bottom-of-page .right-details{display:flex;flex-direction:column;gap:.25rem;text-align:right}.bottom-of-page .icons{display:flex;font-size:1rem;gap:.25rem;justify-content:flex-end}.bottom-of-page .icons a{text-decoration:none}.bottom-of-page .icons img,.bottom-of-page .icons svg{font-size:1.125rem;height:1em;width:1em}.related-pages a{align-items:center;display:flex;text-decoration:none}.related-pages a:hover .page-info .title{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}.related-pages a svg.furo-related-icon,.related-pages a svg.furo-related-icon>use{color:var(--color-foreground-border);flex-shrink:0;height:.75rem;margin:0 .5rem;width:.75rem}.related-pages a.next-page{clear:right;float:right;max-width:50%;text-align:right}.related-pages a.prev-page{clear:left;float:left;max-width:50%}.related-pages a.prev-page svg{transform:rotate(180deg)}.page-info{display:flex;flex-direction:column;overflow-wrap:anywhere}.next-page .page-info{align-items:flex-end}.page-info .context{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:var(--font-size--small);padding-bottom:.1rem;text-decoration:none}ul.search{list-style:none;padding-left:0}ul.search li{border-bottom:1px solid var(--color-background-border);padding:1rem 0}[role=main] .highlighted{background-color:var(--color-highlighted-background);color:var(--color-highlighted-text)}.sidebar-brand{display:flex;flex-direction:column;flex-shrink:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none}.sidebar-brand-text{color:var(--color-sidebar-brand-text);font-size:1.5rem;overflow-wrap:break-word}.sidebar-brand-text,.sidebar-logo-container{margin:var(--sidebar-item-spacing-vertical) 0}.sidebar-logo{display:block;margin:0 auto;max-width:100%}.sidebar-search-container{align-items:center;background:var(--color-sidebar-search-background);display:flex;margin-top:var(--sidebar-search-space-above);position:relative}.sidebar-search-container:focus-within,.sidebar-search-container:hover{background:var(--color-sidebar-search-background--focus)}.sidebar-search-container:before{background-color:var(--color-sidebar-search-icon);content:"";height:var(--sidebar-search-icon-size);left:var(--sidebar-item-spacing-horizontal);-webkit-mask-image:var(--icon-search);mask-image:var(--icon-search);position:absolute;width:var(--sidebar-search-icon-size)}.sidebar-search{background:transparent;border:none;border-bottom:1px solid var(--color-sidebar-search-border);border-top:1px solid var(--color-sidebar-search-border);box-sizing:border-box;color:var(--color-sidebar-search-foreground);padding:var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal) var(--sidebar-search-input-spacing-vertical) calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size));width:100%;z-index:10}.sidebar-search:focus{outline:none}.sidebar-search::-moz-placeholder{font-size:var(--sidebar-search-input-font-size)}.sidebar-search::placeholder{font-size:var(--sidebar-search-input-font-size)}#searchbox .highlight-link{margin:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0;text-align:center}#searchbox .highlight-link a{color:var(--color-sidebar-search-icon);font-size:var(--font-size--small--2)}.sidebar-tree{font-size:var(--sidebar-item-font-size);margin-bottom:var(--sidebar-item-spacing-vertical);margin-top:var(--sidebar-tree-space-above)}.sidebar-tree ul{display:flex;flex-direction:column;list-style:none;margin-bottom:0;margin-top:0;padding:0}.sidebar-tree li{margin:0;position:relative}.sidebar-tree li>ul{margin-left:var(--sidebar-item-spacing-horizontal)}.sidebar-tree .icon,.sidebar-tree .reference{color:var(--color-sidebar-link-text)}.sidebar-tree .reference{box-sizing:border-box;display:inline-block;height:100%;line-height:var(--sidebar-item-line-height);overflow-wrap:anywhere;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none;width:100%}.sidebar-tree .reference:hover{background:var(--color-sidebar-item-background--hover)}.sidebar-tree .reference.external:after{color:var(--color-sidebar-link-text);content:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='12' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke-width='1.5' stroke='%23607D8B' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M0 0h24v24H0z' stroke='none'/%3E%3Cpath d='M11 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-5M10 14 20 4M15 4h5v5'/%3E%3C/svg%3E");margin:0 .25rem;vertical-align:middle}.sidebar-tree .current-page>.reference{font-weight:700}.sidebar-tree label{align-items:center;cursor:pointer;display:flex;height:var(--sidebar-item-height);justify-content:center;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--sidebar-expander-width)}.sidebar-tree .caption,.sidebar-tree :not(.caption)>.caption-text{color:var(--color-sidebar-caption-text);font-size:var(--sidebar-caption-font-size);font-weight:700;margin:var(--sidebar-caption-space-above) 0 0 0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-transform:uppercase}.sidebar-tree li.has-children>.reference{padding-right:var(--sidebar-expander-width)}.sidebar-tree .toctree-l1>.reference,.sidebar-tree .toctree-l1>label .icon{color:var(--color-sidebar-link-text--top-level)}.sidebar-tree label{background:var(--color-sidebar-item-expander-background)}.sidebar-tree label:hover{background:var(--color-sidebar-item-expander-background--hover)}.sidebar-tree .current>.reference{background:var(--color-sidebar-item-background--current)}.sidebar-tree .current>.reference:hover{background:var(--color-sidebar-item-background--hover)}.toctree-checkbox{display:none;position:absolute}.toctree-checkbox~ul{display:none}.toctree-checkbox~label .icon svg{transform:rotate(90deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label .icon svg{transform:rotate(-90deg)}.toc-title-container{padding:var(--toc-title-padding);padding-top:var(--toc-spacing-vertical)}.toc-title{color:var(--color-toc-title-text);font-size:var(--toc-title-font-size);padding-left:var(--toc-spacing-horizontal);text-transform:uppercase}.no-toc{display:none}.toc-tree-container{padding-bottom:var(--toc-spacing-vertical)}.toc-tree{border-left:1px solid var(--color-background-border);font-size:var(--toc-font-size);line-height:1.3;padding-left:calc(var(--toc-spacing-horizontal) - var(--toc-item-spacing-horizontal))}.toc-tree>ul>li:first-child{padding-top:0}.toc-tree>ul>li:first-child>ul{padding-left:0}.toc-tree>ul>li:first-child>a{display:none}.toc-tree ul{list-style-type:none;margin-bottom:0;margin-top:0;padding-left:var(--toc-item-spacing-horizontal)}.toc-tree li{padding-top:var(--toc-item-spacing-vertical)}.toc-tree li.scroll-current>.reference{color:var(--color-toc-item-text--active);font-weight:700}.toc-tree .reference{color:var(--color-toc-item-text);overflow-wrap:anywhere;text-decoration:none}.toc-scroll{max-height:100vh;overflow-y:scroll}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here){background:rgba(255,0,0,.25);color:var(--color-problematic)}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here):before{content:"ERROR: Adding a table of contents in Furo-based documentation is unnecessary, and does not work well with existing styling.Add a 'this-will-duplicate-information-and-it-is-still-useful-here' class, if you want an escape hatch."}.text-align\:left>p{text-align:left}.text-align\:center>p{text-align:center}.text-align\:right>p{text-align:right} +/*# sourceMappingURL=furo.css.map*/ \ No newline at end of file diff --git a/_static/styles/furo.css.map b/_static/styles/furo.css.map new file mode 100644 index 00000000..d1dfb109 --- /dev/null +++ b/_static/styles/furo.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo.css","mappings":"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0CACE,CAFF,kBACA,CACE,wEACA,CARA,YACA,CAKF,mBAFF,OAII,eACA,CAJF,iCAJE,cAGJ,CANI,oBAEA,CAKF,SAIE,2BADA,UACA,kBAGF,sCACA,CAFF,WACE,WACA,qCACE,gCACA,2EACA,sDAKJ,aACE,mDAII,CAJJ,6CAII,kEACA,iBACE,iDACA,+CACE,aACA,WADA,+BACA,uEANN,YACE,mDAEE,mBADF,0CACE,CADF,qBACE,0DACA,YACE,4DACA,sEANN,YACE,8CACA,kBADA,UACA,2CACE,2EACA,cACE,kEACA,mEANN,yBACE,4DACA,sBACE,+EAEE,iEACA,qEANN,sCACE,CAGE,iBAHF,gBAGE,qBACE,CAJJ,uBACA,gDACE,wDACA,6DAHF,2CACA,CADA,gBACA,eACE,CAGE,sBANN,8BACE,CAII,iBAFF,4DACA,WACE,YADF,uCACE,6EACA,2BANN,8CACE,kDACA,0CACE,8BACA,yFACE,sBACA,sFALJ,mEACA,sBACE,kEACA,6EACE,uCACA,kEALJ,qGAEE,kEACA,6EACE,uCACA,kEALJ,8CACA,uDACE,sEACA,2EACE,sCACA,iEALJ,mGACA,qCACE,oDACA,0DACE,6GACA,gDAGR,yDCrEA,sEACE,CACA,6GACE,gEACF,iGAIF,wFACE,qDAGA,mGAEE,2CAEF,4FACE,gCACF,wGACE,8DAEE,6FAIA,iJAKN,6GACE,gDAKF,yDACA,qCAGA,6BACA,kBACA,qDAKA,oCAEA,+DAGA,2CAGE,oDAIA,oEAEE,qBAGJ,wDAEE,uCAEF,kEAGA,8CAEA,uDAKA,oCAEA,yDAEE,gEAKF,+CC5FA,0EAGE,CACA,qDCLJ,+DAIE,sCAIA,kEACE,yBACA,2FAMA,gBACA,yGCbF,mBAOA,2MAIA,4HAYA,0DACE,8GAYF,8HAQE,mBAEA,6HAOF,YAGA,mIAME,eACA,CAFF,YAEE,4FAMJ,8BAEE,uBAYA,sCAEE,CAJF,oBAEA,CARA,wCAEA,CAHA,8BACA,CAFA,eACA,CAGA,wCAEA,CAEA,mDAIE,kCACE,6BACA,4CAKJ,kDAIA,eACE,aAGF,8BACE,uDACA,sCACA,cAEA,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","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto\n display: block\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #646776; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #2962ff;\n --color-brand-content: #2a5adf;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link-underline--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #ffffffcc; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #2b8cee;\n --color-brand-content: #368ce2;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n vertical-align: middle\n\n.theme-toggle\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n vertical-align: middle\n height: 1rem\n width: 1rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n float: left\n padding: 1rem 0.5rem\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1rem\n width: 1rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page svg\n color: inherit\n height: 1rem\n width: 1rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $full-width - $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n .theme-toggle-header\n display: block\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: var(--header-height)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Center the page, and accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n .content\n margin-left: auto\n margin-right: auto\n\n@media (max-width: $content-width + 2* $content-padding)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n .content\n padding: 0 $content-padding--small\n // Don't float sidebars to the right.\n article aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 3.5rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\n.versionmodified\n font-style: italic\ndiv.versionadded, div.versionchanged, div.deprecated\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > p,\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n",".table-wrapper\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 0.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(0.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(0.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the

    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 z®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 z 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%0Am;KtygULK&#fSVc?2i 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�~K90sIoeZ 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 z