{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Gzxd03NTjoCO", "outputId": "1a1e135c-90e1-40bf-f991-eed47f10a927" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Mounted at /content/drive\n" ] } ], "source": [ "from google.colab import drive\n", "drive.mount('/content/drive')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "l3DzkPrhjtLv", "outputId": "670a4a88-7a04-4d92-9095-eedc6773a710" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "/content/drive/MyDrive/AIBOT_COL\n" ] } ], "source": [ "%cd /content/drive/MyDrive/AIBOT_COL" ] }, { "cell_type": "code", "source": [ "# @title 1. πŸ” Kiểm tra GPU\n", "import torch\n", "\n", "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", "if device == \"cuda\":\n", " gpu_name = torch.cuda.get_device_name(0)\n", " gpu_mem = torch.cuda.get_device_properties(0).total_memory / 1e9\n", " print(f\"βœ… GPU Detected: {gpu_name}\")\n", " print(f\" VRAM: {gpu_mem:.1f} GB\")\n", "else:\n", " print(\"⚠️ KHΓ”NG TÌM THαΊ€Y GPU!\")\n", " print(\"πŸ‘‰ VΓ o Runtime β†’ Change runtime type β†’ T4 GPU\")\n", "\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2y6f6K9QtNUL", "outputId": "e24adbee-9a19-4be8-ff14-f635a40cf293" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "βœ… GPU Detected: NVIDIA A100-SXM4-40GB\n", " VRAM: 42.5 GB\n" ] } ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "collapsed": true, "id": "UZWQZW-UgvnG", "outputId": "a25e89ab-d5c1-42b3-9834-27ffbe90237e" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Requirement already satisfied: torch in /usr/local/lib/python3.12/dist-packages (2.9.0+cu126)\n", "Collecting torch\n", " Downloading torch-2.10.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (31 kB)\n", "Requirement already satisfied: torchvision in /usr/local/lib/python3.12/dist-packages (0.24.0+cu126)\n", "Collecting torchvision\n", " Downloading torchvision-0.25.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (5.4 kB)\n", "Requirement already satisfied: torchaudio in /usr/local/lib/python3.12/dist-packages (2.9.0+cu126)\n", "Collecting torchaudio\n", " Downloading torchaudio-2.10.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (6.9 kB)\n", "Collecting faster-whisper\n", " Downloading faster_whisper-1.2.1-py3-none-any.whl.metadata (16 kB)\n", "Collecting jiwer\n", " Downloading jiwer-4.0.0-py3-none-any.whl.metadata (3.3 kB)\n", "Requirement already satisfied: librosa in /usr/local/lib/python3.12/dist-packages (0.11.0)\n", "Requirement already satisfied: datasets in /usr/local/lib/python3.12/dist-packages (4.0.0)\n", "Collecting datasets\n", " Downloading datasets-4.5.0-py3-none-any.whl.metadata (19 kB)\n", "Requirement already satisfied: matplotlib in /usr/local/lib/python3.12/dist-packages (3.10.0)\n", "Collecting matplotlib\n", " Downloading matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (52 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m52.8/52.8 kB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: pandas in /usr/local/lib/python3.12/dist-packages (2.2.2)\n", "Collecting pandas\n", " Downloading pandas-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (79 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m79.5/79.5 kB\u001b[0m \u001b[31m9.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting torchmetrics\n", " Downloading torchmetrics-1.8.2-py3-none-any.whl.metadata (22 kB)\n", "Collecting torchcodec\n", " Downloading torchcodec-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (11 kB)\n", "Requirement already satisfied: filelock in /usr/local/lib/python3.12/dist-packages (from torch) (3.20.3)\n", "Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.12/dist-packages (from torch) (4.15.0)\n", "Requirement already satisfied: setuptools in /usr/local/lib/python3.12/dist-packages (from torch) (75.2.0)\n", "Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.12/dist-packages (from torch) (1.14.0)\n", "Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.12/dist-packages (from torch) (3.6.1)\n", "Requirement already satisfied: jinja2 in /usr/local/lib/python3.12/dist-packages (from torch) (3.1.6)\n", "Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.12/dist-packages (from torch) (2025.3.0)\n", "Collecting cuda-bindings==12.9.4 (from torch)\n", " Downloading cuda_bindings-12.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (2.6 kB)\n", "Collecting nvidia-cuda-nvrtc-cu12==12.8.93 (from torch)\n", " Downloading nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl.metadata (1.7 kB)\n", "Collecting nvidia-cuda-runtime-cu12==12.8.90 (from torch)\n", " Downloading nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.7 kB)\n", "Collecting nvidia-cuda-cupti-cu12==12.8.90 (from torch)\n", " Downloading nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.7 kB)\n", "Requirement already satisfied: nvidia-cudnn-cu12==9.10.2.21 in /usr/local/lib/python3.12/dist-packages (from torch) (9.10.2.21)\n", "Collecting nvidia-cublas-cu12==12.8.4.1 (from torch)\n", " Downloading nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl.metadata (1.7 kB)\n", "Collecting nvidia-cufft-cu12==11.3.3.83 (from torch)\n", " Downloading nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.7 kB)\n", "Collecting nvidia-curand-cu12==10.3.9.90 (from torch)\n", " Downloading nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl.metadata (1.7 kB)\n", "Collecting nvidia-cusolver-cu12==11.7.3.90 (from torch)\n", " Downloading nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl.metadata (1.8 kB)\n", "Collecting nvidia-cusparse-cu12==12.5.8.93 (from torch)\n", " Downloading nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.8 kB)\n", "Requirement already satisfied: nvidia-cusparselt-cu12==0.7.1 in /usr/local/lib/python3.12/dist-packages (from torch) (0.7.1)\n", "Requirement already satisfied: nvidia-nccl-cu12==2.27.5 in /usr/local/lib/python3.12/dist-packages (from torch) (2.27.5)\n", "Collecting nvidia-nvshmem-cu12==3.4.5 (from torch)\n", " Downloading nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.1 kB)\n", "Collecting nvidia-nvtx-cu12==12.8.90 (from torch)\n", " Downloading nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.8 kB)\n", "Collecting nvidia-nvjitlink-cu12==12.8.93 (from torch)\n", " Downloading nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl.metadata (1.7 kB)\n", "Collecting nvidia-cufile-cu12==1.13.1.3 (from torch)\n", " Downloading nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (1.7 kB)\n", "Collecting triton==3.6.0 (from torch)\n", " Downloading triton-3.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (1.7 kB)\n", "Requirement already satisfied: cuda-pathfinder~=1.1 in /usr/local/lib/python3.12/dist-packages (from cuda-bindings==12.9.4->torch) (1.3.3)\n", "Requirement already satisfied: numpy in /usr/local/lib/python3.12/dist-packages (from torchvision) (2.0.2)\n", "Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.12/dist-packages (from torchvision) (11.3.0)\n", "Collecting ctranslate2<5,>=4.0 (from faster-whisper)\n", " Downloading ctranslate2-4.6.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (10 kB)\n", "Requirement already satisfied: huggingface-hub>=0.21 in /usr/local/lib/python3.12/dist-packages (from faster-whisper) (0.36.0)\n", "Requirement already satisfied: tokenizers<1,>=0.13 in /usr/local/lib/python3.12/dist-packages (from faster-whisper) (0.22.2)\n", "Collecting onnxruntime<2,>=1.14 (from faster-whisper)\n", " Downloading onnxruntime-1.23.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (5.1 kB)\n", "Collecting av>=11 (from faster-whisper)\n", " Downloading av-16.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (4.6 kB)\n", "Requirement already satisfied: tqdm in /usr/local/lib/python3.12/dist-packages (from faster-whisper) (4.67.1)\n", "Requirement already satisfied: click>=8.1.8 in /usr/local/lib/python3.12/dist-packages (from jiwer) (8.3.1)\n", "Collecting rapidfuzz>=3.9.7 (from jiwer)\n", " Downloading rapidfuzz-3.14.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (12 kB)\n", "Requirement already satisfied: audioread>=2.1.9 in /usr/local/lib/python3.12/dist-packages (from librosa) (3.1.0)\n", "Requirement already satisfied: numba>=0.51.0 in /usr/local/lib/python3.12/dist-packages (from librosa) (0.60.0)\n", "Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.12/dist-packages (from librosa) (1.16.3)\n", "Requirement already satisfied: scikit-learn>=1.1.0 in /usr/local/lib/python3.12/dist-packages (from librosa) (1.6.1)\n", "Requirement already satisfied: joblib>=1.0 in /usr/local/lib/python3.12/dist-packages (from librosa) (1.5.3)\n", "Requirement already satisfied: decorator>=4.3.0 in /usr/local/lib/python3.12/dist-packages (from librosa) (4.4.2)\n", "Requirement already satisfied: soundfile>=0.12.1 in /usr/local/lib/python3.12/dist-packages (from librosa) (0.13.1)\n", "Requirement already satisfied: pooch>=1.1 in /usr/local/lib/python3.12/dist-packages (from librosa) (1.8.2)\n", "Requirement already satisfied: soxr>=0.3.2 in /usr/local/lib/python3.12/dist-packages (from librosa) (1.0.0)\n", "Requirement already satisfied: lazy_loader>=0.1 in /usr/local/lib/python3.12/dist-packages (from librosa) (0.4)\n", "Requirement already satisfied: msgpack>=1.0 in /usr/local/lib/python3.12/dist-packages (from librosa) (1.1.2)\n", "Collecting pyarrow>=21.0.0 (from datasets)\n", " Downloading pyarrow-23.0.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (3.0 kB)\n", "Requirement already satisfied: dill<0.4.1,>=0.3.0 in /usr/local/lib/python3.12/dist-packages (from datasets) (0.3.8)\n", "Requirement already satisfied: requests>=2.32.2 in /usr/local/lib/python3.12/dist-packages (from datasets) (2.32.4)\n", "Requirement already satisfied: httpx<1.0.0 in /usr/local/lib/python3.12/dist-packages (from datasets) (0.28.1)\n", "Requirement already satisfied: xxhash in /usr/local/lib/python3.12/dist-packages (from datasets) (3.6.0)\n", "Requirement already satisfied: multiprocess<0.70.19 in /usr/local/lib/python3.12/dist-packages (from datasets) (0.70.16)\n", "Requirement already satisfied: packaging in /usr/local/lib/python3.12/dist-packages (from datasets) (25.0)\n", "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.12/dist-packages (from datasets) (6.0.3)\n", "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (1.3.3)\n", "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (0.12.1)\n", "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (4.61.1)\n", "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (1.4.9)\n", "Requirement already satisfied: pyparsing>=3 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (3.3.2)\n", "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (2.9.0.post0)\n", "Collecting lightning-utilities>=0.8.0 (from torchmetrics)\n", " Downloading lightning_utilities-0.15.2-py3-none-any.whl.metadata (5.7 kB)\n", "Requirement already satisfied: aiohttp!=4.0.0a0,!=4.0.0a1 in /usr/local/lib/python3.12/dist-packages (from fsspec[http]<=2025.10.0,>=2023.1.0->datasets) (3.13.3)\n", "Requirement already satisfied: anyio in /usr/local/lib/python3.12/dist-packages (from httpx<1.0.0->datasets) (4.12.1)\n", "Requirement already satisfied: certifi in /usr/local/lib/python3.12/dist-packages (from httpx<1.0.0->datasets) (2026.1.4)\n", "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.12/dist-packages (from httpx<1.0.0->datasets) (1.0.9)\n", "Requirement already satisfied: idna in /usr/local/lib/python3.12/dist-packages (from httpx<1.0.0->datasets) (3.11)\n", "Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.12/dist-packages (from httpcore==1.*->httpx<1.0.0->datasets) (0.16.0)\n", "Requirement already satisfied: hf-xet<2.0.0,>=1.1.3 in /usr/local/lib/python3.12/dist-packages (from huggingface-hub>=0.21->faster-whisper) (1.2.0)\n", "Requirement already satisfied: llvmlite<0.44,>=0.43.0dev0 in /usr/local/lib/python3.12/dist-packages (from numba>=0.51.0->librosa) (0.43.0)\n", "Collecting coloredlogs (from onnxruntime<2,>=1.14->faster-whisper)\n", " Downloading coloredlogs-15.0.1-py2.py3-none-any.whl.metadata (12 kB)\n", "Requirement already satisfied: flatbuffers in /usr/local/lib/python3.12/dist-packages (from onnxruntime<2,>=1.14->faster-whisper) (25.12.19)\n", "Requirement already satisfied: protobuf in /usr/local/lib/python3.12/dist-packages (from onnxruntime<2,>=1.14->faster-whisper) (5.29.5)\n", "Requirement already satisfied: platformdirs>=2.5.0 in /usr/local/lib/python3.12/dist-packages (from pooch>=1.1->librosa) (4.5.1)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.12/dist-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)\n", "Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.12/dist-packages (from requests>=2.32.2->datasets) (3.4.4)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.12/dist-packages (from requests>=2.32.2->datasets) (2.5.0)\n", "Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.12/dist-packages (from scikit-learn>=1.1.0->librosa) (3.6.0)\n", "Requirement already satisfied: cffi>=1.0 in /usr/local/lib/python3.12/dist-packages (from soundfile>=0.12.1->librosa) (2.0.0)\n", "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.12/dist-packages (from sympy>=1.13.3->torch) (1.3.0)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.12/dist-packages (from jinja2->torch) (3.0.3)\n", "Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /usr/local/lib/python3.12/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.10.0,>=2023.1.0->datasets) (2.6.1)\n", "Requirement already satisfied: aiosignal>=1.4.0 in /usr/local/lib/python3.12/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.10.0,>=2023.1.0->datasets) (1.4.0)\n", "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.12/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.10.0,>=2023.1.0->datasets) (25.4.0)\n", "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.12/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.10.0,>=2023.1.0->datasets) (1.8.0)\n", "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.12/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.10.0,>=2023.1.0->datasets) (6.7.1)\n", "Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.12/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.10.0,>=2023.1.0->datasets) (0.4.1)\n", "Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.12/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.10.0,>=2023.1.0->datasets) (1.22.0)\n", "Requirement already satisfied: pycparser in /usr/local/lib/python3.12/dist-packages (from cffi>=1.0->soundfile>=0.12.1->librosa) (3.0)\n", "Collecting humanfriendly>=9.1 (from coloredlogs->onnxruntime<2,>=1.14->faster-whisper)\n", " Downloading humanfriendly-10.0-py2.py3-none-any.whl.metadata (9.2 kB)\n", "Downloading torch-2.10.0-cp312-cp312-manylinux_2_28_x86_64.whl (915.7 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m915.7/915.7 MB\u001b[0m \u001b[31m1.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading cuda_bindings-12.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (12.2 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.2/12.2 MB\u001b[0m \u001b[31m116.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl (594.3 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m594.3/594.3 MB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (10.2 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.2/10.2 MB\u001b[0m \u001b[31m84.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl (88.0 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m88.0/88.0 MB\u001b[0m \u001b[31m23.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (954 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m954.8/954.8 kB\u001b[0m \u001b[31m71.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (193.1 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m193.1/193.1 MB\u001b[0m \u001b[31m11.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.2 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m74.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl (63.6 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m63.6/63.6 MB\u001b[0m \u001b[31m34.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl (267.5 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m267.5/267.5 MB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (288.2 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m288.2/288.2 MB\u001b[0m \u001b[31m3.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl (39.3 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m39.3/39.3 MB\u001b[0m \u001b[31m51.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (139.1 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m139.1/139.1 MB\u001b[0m \u001b[31m15.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (89 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m90.0/90.0 kB\u001b[0m \u001b[31m10.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading triton-3.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (188.3 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m188.3/188.3 MB\u001b[0m \u001b[31m8.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading torchvision-0.25.0-cp312-cp312-manylinux_2_28_x86_64.whl (8.1 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.1/8.1 MB\u001b[0m \u001b[31m128.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading torchaudio-2.10.0-cp312-cp312-manylinux_2_28_x86_64.whl (1.9 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.9/1.9 MB\u001b[0m \u001b[31m94.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading faster_whisper-1.2.1-py3-none-any.whl (1.1 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m78.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading jiwer-4.0.0-py3-none-any.whl (23 kB)\n", "Downloading datasets-4.5.0-py3-none-any.whl (515 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m515.2/515.2 kB\u001b[0m \u001b[31m41.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (8.7 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.7/8.7 MB\u001b[0m \u001b[31m137.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading pandas-3.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (10.9 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.9/10.9 MB\u001b[0m \u001b[31m136.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading torchmetrics-1.8.2-py3-none-any.whl (983 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m983.2/983.2 kB\u001b[0m \u001b[31m57.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading torchcodec-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl (2.1 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.1/2.1 MB\u001b[0m \u001b[31m102.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading av-16.1.0-cp312-cp312-manylinux_2_28_x86_64.whl (41.2 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m41.2/41.2 MB\u001b[0m \u001b[31m57.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading ctranslate2-4.6.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (38.8 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m38.8/38.8 MB\u001b[0m \u001b[31m62.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading lightning_utilities-0.15.2-py3-none-any.whl (29 kB)\n", "Downloading onnxruntime-1.23.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (17.4 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m17.4/17.4 MB\u001b[0m \u001b[31m112.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading pyarrow-23.0.0-cp312-cp312-manylinux_2_28_x86_64.whl (47.6 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m47.6/47.6 MB\u001b[0m \u001b[31m47.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading rapidfuzz-3.14.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.2/3.2 MB\u001b[0m \u001b[31m95.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading coloredlogs-15.0.1-py2.py3-none-any.whl (46 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m46.0/46.0 kB\u001b[0m \u001b[31m5.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading humanfriendly-10.0-py2.py3-none-any.whl (86 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m86.8/86.8 kB\u001b[0m \u001b[31m11.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hInstalling collected packages: triton, torchcodec, rapidfuzz, pyarrow, nvidia-nvtx-cu12, nvidia-nvshmem-cu12, nvidia-nvjitlink-cu12, nvidia-curand-cu12, nvidia-cufile-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, lightning-utilities, humanfriendly, cuda-bindings, ctranslate2, av, pandas, nvidia-cusparse-cu12, nvidia-cufft-cu12, matplotlib, jiwer, coloredlogs, onnxruntime, nvidia-cusolver-cu12, torch, faster-whisper, datasets, torchvision, torchmetrics, torchaudio\n", " Attempting uninstall: triton\n", " Found existing installation: triton 3.5.0\n", " Uninstalling triton-3.5.0:\n", " Successfully uninstalled triton-3.5.0\n", " Attempting uninstall: pyarrow\n", " Found existing installation: pyarrow 18.1.0\n", " Uninstalling pyarrow-18.1.0:\n", " Successfully uninstalled pyarrow-18.1.0\n", " Attempting uninstall: nvidia-nvtx-cu12\n", " Found existing installation: nvidia-nvtx-cu12 12.6.77\n", " Uninstalling nvidia-nvtx-cu12-12.6.77:\n", " Successfully uninstalled nvidia-nvtx-cu12-12.6.77\n", " Attempting uninstall: nvidia-nvshmem-cu12\n", " Found existing installation: nvidia-nvshmem-cu12 3.3.20\n", " Uninstalling nvidia-nvshmem-cu12-3.3.20:\n", " Successfully uninstalled nvidia-nvshmem-cu12-3.3.20\n", " Attempting uninstall: nvidia-nvjitlink-cu12\n", " Found existing installation: nvidia-nvjitlink-cu12 12.6.85\n", " Uninstalling nvidia-nvjitlink-cu12-12.6.85:\n", " Successfully uninstalled nvidia-nvjitlink-cu12-12.6.85\n", " Attempting uninstall: nvidia-curand-cu12\n", " Found existing installation: nvidia-curand-cu12 10.3.7.77\n", " Uninstalling nvidia-curand-cu12-10.3.7.77:\n", " Successfully uninstalled nvidia-curand-cu12-10.3.7.77\n", " Attempting uninstall: nvidia-cufile-cu12\n", " Found existing installation: nvidia-cufile-cu12 1.11.1.6\n", " Uninstalling nvidia-cufile-cu12-1.11.1.6:\n", " Successfully uninstalled nvidia-cufile-cu12-1.11.1.6\n", " Attempting uninstall: nvidia-cuda-runtime-cu12\n", " Found existing installation: nvidia-cuda-runtime-cu12 12.6.77\n", " Uninstalling nvidia-cuda-runtime-cu12-12.6.77:\n", " Successfully uninstalled nvidia-cuda-runtime-cu12-12.6.77\n", " Attempting uninstall: nvidia-cuda-nvrtc-cu12\n", " Found existing installation: nvidia-cuda-nvrtc-cu12 12.6.77\n", " Uninstalling nvidia-cuda-nvrtc-cu12-12.6.77:\n", " Successfully uninstalled nvidia-cuda-nvrtc-cu12-12.6.77\n", " Attempting uninstall: nvidia-cuda-cupti-cu12\n", " Found existing installation: nvidia-cuda-cupti-cu12 12.6.80\n", " Uninstalling nvidia-cuda-cupti-cu12-12.6.80:\n", " Successfully uninstalled nvidia-cuda-cupti-cu12-12.6.80\n", " Attempting uninstall: nvidia-cublas-cu12\n", " Found existing installation: nvidia-cublas-cu12 12.6.4.1\n", " Uninstalling nvidia-cublas-cu12-12.6.4.1:\n", " Successfully uninstalled nvidia-cublas-cu12-12.6.4.1\n", " Attempting uninstall: cuda-bindings\n", " Found existing installation: cuda-bindings 12.9.5\n", " Uninstalling cuda-bindings-12.9.5:\n", " Successfully uninstalled cuda-bindings-12.9.5\n", " Attempting uninstall: pandas\n", " Found existing installation: pandas 2.2.2\n", " Uninstalling pandas-2.2.2:\n", " Successfully uninstalled pandas-2.2.2\n", " Attempting uninstall: nvidia-cusparse-cu12\n", " Found existing installation: nvidia-cusparse-cu12 12.5.4.2\n", " Uninstalling nvidia-cusparse-cu12-12.5.4.2:\n", " Successfully uninstalled nvidia-cusparse-cu12-12.5.4.2\n", " Attempting uninstall: nvidia-cufft-cu12\n", " Found existing installation: nvidia-cufft-cu12 11.3.0.4\n", " Uninstalling nvidia-cufft-cu12-11.3.0.4:\n", " Successfully uninstalled nvidia-cufft-cu12-11.3.0.4\n", " Attempting uninstall: matplotlib\n", " Found existing installation: matplotlib 3.10.0\n", " Uninstalling matplotlib-3.10.0:\n", " Successfully uninstalled matplotlib-3.10.0\n", " Attempting uninstall: nvidia-cusolver-cu12\n", " Found existing installation: nvidia-cusolver-cu12 11.7.1.2\n", " Uninstalling nvidia-cusolver-cu12-11.7.1.2:\n", " Successfully uninstalled nvidia-cusolver-cu12-11.7.1.2\n", " Attempting uninstall: torch\n", " Found existing installation: torch 2.9.0+cu126\n", " Uninstalling torch-2.9.0+cu126:\n", " Successfully uninstalled torch-2.9.0+cu126\n", " Attempting uninstall: datasets\n", " Found existing installation: datasets 4.0.0\n", " Uninstalling datasets-4.0.0:\n", " Successfully uninstalled datasets-4.0.0\n", " Attempting uninstall: torchvision\n", " Found existing installation: torchvision 0.24.0+cu126\n", " Uninstalling torchvision-0.24.0+cu126:\n", " Successfully uninstalled torchvision-0.24.0+cu126\n", " Attempting uninstall: torchaudio\n", " Found existing installation: torchaudio 2.9.0+cu126\n", " Uninstalling torchaudio-2.9.0+cu126:\n", " Successfully uninstalled torchaudio-2.9.0+cu126\n", "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", "google-colab 1.0.0 requires pandas==2.2.2, but you have pandas 3.0.0 which is incompatible.\n", "db-dtypes 1.5.0 requires pandas<3.0.0,>=1.5.3, but you have pandas 3.0.0 which is incompatible.\n", "fastai 2.8.6 requires torch<2.10,>=1.10, but you have torch 2.10.0 which is incompatible.\n", "cuda-python 12.9.5 requires cuda-bindings~=12.9.5, but you have cuda-bindings 12.9.4 which is incompatible.\n", "gradio 5.50.0 requires pandas<3.0,>=1.0, but you have pandas 3.0.0 which is incompatible.\n", "prophet 1.2.2 requires pandas<3,>=1.0.4, but you have pandas 3.0.0 which is incompatible.\n", "cudf-cu12 25.10.0 requires pandas<2.4.0dev0,>=2.0, but you have pandas 3.0.0 which is incompatible.\n", "dask-cudf-cu12 25.10.0 requires pandas<2.4.0dev0,>=2.0, but you have pandas 3.0.0 which is incompatible.\n", "bqplot 0.12.45 requires pandas<3.0.0,>=1.0.0, but you have pandas 3.0.0 which is incompatible.\u001b[0m\u001b[31m\n", "\u001b[0mSuccessfully installed av-16.1.0 coloredlogs-15.0.1 ctranslate2-4.6.3 cuda-bindings-12.9.4 datasets-4.5.0 faster-whisper-1.2.1 humanfriendly-10.0 jiwer-4.0.0 lightning-utilities-0.15.2 matplotlib-3.10.8 nvidia-cublas-cu12-12.8.4.1 nvidia-cuda-cupti-cu12-12.8.90 nvidia-cuda-nvrtc-cu12-12.8.93 nvidia-cuda-runtime-cu12-12.8.90 nvidia-cufft-cu12-11.3.3.83 nvidia-cufile-cu12-1.13.1.3 nvidia-curand-cu12-10.3.9.90 nvidia-cusolver-cu12-11.7.3.90 nvidia-cusparse-cu12-12.5.8.93 nvidia-nvjitlink-cu12-12.8.93 nvidia-nvshmem-cu12-3.4.5 nvidia-nvtx-cu12-12.8.90 onnxruntime-1.23.2 pandas-3.0.0 pyarrow-23.0.0 rapidfuzz-3.14.3 torch-2.10.0 torchaudio-2.10.0 torchcodec-0.10.0 torchmetrics-1.8.2 torchvision-0.25.0 triton-3.6.0\n" ] }, { "output_type": "display_data", "data": { "application/vnd.colab-display-data+json": { "pip_warning": { "packages": [ "cuda", "matplotlib", "mpl_toolkits", "torch", "torchgen" ] }, "id": "6e92ee742da5458e8cb002d3e39c31a1" } }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "βœ… Dependencies installed successfully!\n" ] } ], "source": [ "!pip install --upgrade torch torchvision torchaudio faster-whisper jiwer librosa datasets matplotlib pandas torchmetrics torchcodec\n", "!apt-get install -y -qq ffmpeg > /dev/null 2>&1\n", "print(\"βœ… Dependencies installed successfully!\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "HVIMepPtgwbi" }, "outputs": [], "source": [ "import unicodedata\n", "from jiwer import wer, cer\n", "from torchmetrics.text import WordErrorRate, CharErrorRate\n", "import torch\n", "\n", "import time\n", "import re\n", "import torch\n", "import jiwer\n", "import librosa\n", "import pandas as pd\n", "from tqdm.auto import tqdm\n", "\n", "from datasets import load_dataset, Audio\n", "from transformers import WhisperProcessor, WhisperForConditionalGeneration\n", "from peft import PeftModel\n", "\n", "\n", "def normalize_text(text):\n", " \"\"\"ChuαΊ©n hΓ³a vΔƒn bαΊ£n tiαΊΏng Việt.\"\"\"\n", " if not text:\n", " return \"\"\n", " # Unicode normalization\n", " text = unicodedata.normalize('NFC', text)\n", " # Lowercase\n", " text = text.lower()\n", " # LoαΊ‘i bỏ dαΊ₯u cΓ’u and kΓ½ tα»± Δ‘αΊ·c biệt\n", " text = re.sub(r'[\\.\\!\\,\\?\\:\\;\\\"\\(\\)\\-]', ' ', text)\n", " # LoαΊ‘i bỏ khoαΊ£ng trαΊ―ng thα»«a\n", " text = re.sub(r'\\s+', ' ', text).strip()\n", " return text\n", "\n", "wer_metric = WordErrorRate()\n", "cer_metric = CharErrorRate()" ] }, { "cell_type": "code", "source": [ "# @title 4. πŸ€– Load Models\n", "import time\n", "from faster_whisper import WhisperModel\n", "\n", "AVAILABLE_MODELS = {\n", " # \"EraX-WoW-Turbo\": \"erax-ai/EraX-WoW-Turbo-V1.1-CT2\",\n", " \"PhoWhisper Large\": \"kiendt/PhoWhisper-large-ct2\",\n", " \"PhoWhisper Lora Finetuned\": \"vyluong/pho-whisper-vi-ct2\"\n", " }\n", "\n", "loaded_whisper_models = {}\n", "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", "compute_type = \"float16\" if device == \"cuda\" else \"int8\"\n", "\n", "def load_whisper_model(model_name):\n", " if model_name in loaded_whisper_models:\n", " return loaded_whisper_models[model_name]\n", "\n", " print(f\"πŸ“₯ Loading: {model_name}...\")\n", " start = time.time()\n", " model = WhisperModel(\n", " AVAILABLE_MODELS[model_name],\n", " device=device,\n", " compute_type=compute_type\n", " )\n", " loaded_whisper_models[model_name] = model\n", " print(f\" βœ… Loaded in {time.time() - start:.1f}s\")\n", " return model" ], "metadata": { "id": "3OJqieq5XXzY" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# @title 5. βš™οΈ CαΊ₯u hΓ¬nh Tham sα»‘ (Full Settings)\n", "\n", "EVAL_CONFIG = {\n", " \"language\": \"vi\",\n", " \"beam_size\": 5,\n", " \"vad_filter\": True,\n", " \"vad_options\": {\n", " \"min_silence_duration_ms\": 800,\n", " \"speech_pad_ms\": 400,\n", " \"min_speech_duration_ms\": 450,\n", " \"threshold\": 0.5\n", " },\n", " \"temperature\": 0.0,\n", " \"best_of\": 5,\n", " \"patience\": 1.05,\n", " \"length_penalty\": 1.0,\n", " \"condition_on_previous_text\": True,\n", " \"no_speech_threshold\": 0.6,\n", " \"log_prob_threshold\": -1.4,\n", " \"compression_ratio_threshold\": 2.3\n", "}\n", "\n", "def transcribe_full(model, audio_array):\n", " \"\"\"Thα»±c hiện transcription vα»›i Δ‘αΊ§y Δ‘α»§ tham sα»‘ config.\"\"\"\n", " segments_gen, info = model.transcribe(\n", " audio_array,\n", " language=EVAL_CONFIG[\"language\"],\n", " beam_size=EVAL_CONFIG[\"beam_size\"],\n", " vad_filter=EVAL_CONFIG[\"vad_filter\"],\n", " vad_parameters=EVAL_CONFIG[\"vad_options\"],\n", " temperature=EVAL_CONFIG[\"temperature\"],\n", " best_of=EVAL_CONFIG[\"best_of\"],\n", " patience=EVAL_CONFIG[\"patience\"],\n", " length_penalty=EVAL_CONFIG[\"length_penalty\"],\n", " condition_on_previous_text=EVAL_CONFIG[\"condition_on_previous_text\"],\n", " no_speech_threshold=EVAL_CONFIG[\"no_speech_threshold\"],\n", " log_prob_threshold=EVAL_CONFIG[\"log_prob_threshold\"],\n", " compression_ratio_threshold=EVAL_CONFIG[\"compression_ratio_threshold\"]\n", " )\n", "\n", " text = \" \".join([s.text for s in segments_gen]).strip()\n", " return text" ], "metadata": { "id": "nAv_zZaBXYq2" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# @title 6. πŸ“‚ Load Datasets (VLSP 2020 & FPT FOSD)\n", "from datasets import load_dataset, Audio\n", "\n", "print(\"⏳ Loading VLSP 2020 dataset (Streaming)...\")\n", "ds_vlsp = load_dataset(\"doof-ferb/vlsp2020_vinai_100h\", split=\"train\", streaming=True)\n", "ds_vlsp = ds_vlsp.cast_column(\"audio\", Audio(sampling_rate=16000))\n", "\n", "print(\"⏳ Loading FPT FOSD dataset (Streaming)...\")\n", "ds_fosd = load_dataset(\"doof-ferb/fpt_fosd\", split=\"train\", streaming=True)\n", "ds_fosd = ds_fosd.cast_column(\"audio\", Audio(sampling_rate=16000))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 181, "referenced_widgets": [ "56e441c82e094ffeb407783ee26b3f30", "b1c1b45a3d9a4c2eb888f55a6629a8f6", "27c382205f374ea68c6109f2235b5318", "70275901c2754ad7953fd5e5c900f0e9", "670b2a95fc4441a29999023a350f6d61", "91c253cc46d44b2bb8ded45f27c40171", "dc3e0a9cab8c490f9436b3403d7f9d8f", "60ff7da44e3d45c992c718a845ab4e6e", "e0c46a0f2b1f4140a725b832130cbcea", "6487e41ded424caea3775a8ef9e29c51", "7a2c6c72b4f24c73be7d716720811d21", "4ac7e313556f4536a25db824ca593169", "b0c69ea0e2f6477cbb8f1a38fb9c4e13", "a8c242dc5a46451984cbbf0185045c09", "44afc49c2dcd4e44b15f5b86c4e6a810", "24bb98fe994845c1aaa821c66f873752", "f65ae8e4354d40c48833dbd6ba15cf89", "de102240dc90472684b156c55be0d8c7", "825240873b184e9688c32aece3d99513", "fa09ee1e74f644988a4e3162f1321ce7", "ecb32cd55acd422996330c98cee45cef", "e13d8569a9014cebb5d1159377874c79", "550d5b04930c499fa4090ead4e8115a9", "4ec7ba353a1441e1a5f4f94676c186a2", "e00a22b386a4459fb121920f8eafe482", "b85c4b82a79a4be89e7e153b0986c0f0", "ceacab317f344b7b80aef2fc52a0631e", "092e894bee794cd7851503662f3ad98a", "f777a203c1b94c43868f817ecbd44b20", "6fb17526c9be4240a40f8b27dcdc7ee4", "00d0525d19384ebe8fb255c77a0f67fb", "d17ee787ad584acd860536312fb192ef", "772c0ee207814e0cafc7c35bdef9a80b", "9f946100232b430fa20462f12c90f5e8", "41d53865563045f98b1a3b15451c8d11", "677b4948734642f99c7a6b124646a65f", "f5d3cb43cf2e495f8350dca12a91af82", "405db30dffae4d90988e746282dc2942", "5f3184e0dcaa4a7d8462138dae3a27eb", "3852d612380b432bb2eb4a0fc9953c3e", "70cf6e09a6dd4015b115821a5d028db8", "668e44432c0e4c169e9db942596473e9", "dff813bb01ae4615b1ec13db110f2fda", "2c537ecffbb84465955ee42a9407cd07" ] }, "id": "yCEPqz4zc_Wn", "outputId": "e65f3cdf-a7e1-433e-aecd-0c2d272ec5b1" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "⏳ Loading VLSP 2020 dataset (Streaming)...\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "README.md: 0.00B [00:00, ?B/s]" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "56e441c82e094ffeb407783ee26b3f30" } }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "Resolving data files: 0%| | 0/35 [00:00" ], "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 DatasetModelWERCERTime (s)Avg Time/Sample
0VLSP 2020PhoWhisper Large0.0615240.034911400.2939510.800588
1VLSP 2020PhoWhisper Lora Finetuned0.0346790.022630185.5238610.371048
2FPT FOSDPhoWhisper Large0.0348030.023166170.9980740.341996
3FPT FOSDPhoWhisper Lora Finetuned0.0342670.02158279.4964170.158993
\n" ] }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# @title 9. πŸ“ˆ Trα»±c quan hΓ³a\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "def plot_comparison(df):\n", " fig, axes = plt.subplots(1, 3, figsize=(18, 5))\n", "\n", " metrics = [('WER', \"Word Error Rate\"), ('CER', \"Character Error Rate\"), ('Time (s)', \"Total Inference Time\")]\n", "\n", " for i, (col, title) in enumerate(metrics):\n", " ax = axes[i]\n", " barplot = sns.barplot(data=df, x='Dataset', y=col, hue='Model', ax=ax)\n", " ax.set_title(f\"{title} (Lower is better)\")\n", "\n", " # Add labels on top of bars\n", " for container in ax.containers:q\n", " ax.bar_label(container, fmt='%.3f' if 'Time' not in col else '%.1f', padding=3)\n", "\n", " plt.tight_layout()\n", " plt.show()\n", "\n", "plot_comparison(df_final_res)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 507 }, "id": "9EUSfTK-ddWY", "outputId": "8477d133-43bc-4d28-aa53-6eda0de0c68d" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAABv4AAAHqCAYAAADMEzkrAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA3qhJREFUeJzs3Xtcj/fjP/7Hq/R6dVIoneikQhFNSGGJpqzNmnNDpJmZc9bImd7EnDKnxuYwH+Y8M7NIk0UJJWeNFhk6YGqyDur6/eH3ur5eepXOqR732+11217P63ld1/N5VV6P1/W8ruclEQRBABERERERERERERERERHVaSq13QAiIiIiIiIiIiIiIiIiqjwO/BERERERERERERERERHVAxz4IyIiIiIiIiIiIiIiIqoHOPBHREREREREREREREREVA9w4I+IiIiIiIiIiIiIiIioHuDAHxEREREREREREREREVE9wIE/IiIiIiIiIiIiIiIionqAA39ERERERERERERERERE9QAH/oiIiIiIiIiIiIiIiIjqAQ78Eb1loqKiIJFIEBUVVdtNof/f3r170axZMzx79qy2m1IjevXqhV69elV6O/Lf5f3791e+UbUsPDwc2trayMzMrO2mEBHVColEgokTJ9Z2M4gUnDt3DlKpFHfv3q3tptSI0aNHw8LCotLbuXPnDiQSCVasWFH5RtWy69evo1GjRrh69WptN4WI6K1QU+eUnj17hk8//RRGRkaQSCSYOnVqte6vPnhbz/c9e/YMBgYG2LlzZ203pUZs27YNEokEd+7cqfS2LCws8MEHH1S+UbWsoKAApqam2LBhQ203haoQB/6oQdq7dy8kEgl++umnYss6duwIiUSCkydPFltmZmYGFxeXmmjiG8k/qEp6nT17trabqNTo0aMV2imTydC6dWvMmzcPubm5Fdrm9evXsWDBgir50H5dYWEh5s+fj0mTJkFbW1ssry8f7nVNTEwMFixYgKdPnxZbtmTJEhw6dKha9uvp6Qlra2uEhIRUy/aJiGpLcnIyxo0bh1atWkFdXR06Ojro3r071qxZg//++6+2m1dpDx48wIIFC5CYmFhj+5Sf1CnptXv37hprS3ksWLBAoZ1qamqwsLDA5MmTlX7ulkV1H//Zs2fDx8cH5ubmYlmvXr3Qvn37atkflay0PL5hwwZs27atWvZrZ2cHLy8vzJs3r1q2T0RUFqV97r/6KsuAT3V+r32V/JzShQsXKrT+kiVLsG3bNowfPx47duzAyJEjq7iFdcPr57hKeo0ePbq2m1qiNWvWoHHjxhg2bJhYJs+Fjx49qsWWNTzPnz/HggULlP5bcfToUSxYsKBa9qumpoaAgAAsXry4wudm6e3TqLYbQFQbevToAQA4ffo0Pv74Y7E8OzsbV69eRaNGjXDmzBm4ubmJy+7du4d79+4pfBC+DRYtWgRLS8ti5dbW1rXQmrKRyWT47rvvAABZWVn4+eefERwcjOTk5ApdYXT9+nUsXLgQvXr1qpKroF/1yy+/ICkpCZ999lmVbvdtdvz48dpuQoliYmKwcOFCjB49Gk2aNFFYtmTJEgwaNAje3t7Vsu9x48bhyy+/xMKFC9G4ceNq2QcRUU369ddfMXjwYMhkMvj6+qJ9+/bIz8/H6dOnERgYiGvXrmHTpk213cxKefDgARYuXAgLCws4ODjU6L4nT56MLl26FCt3dnau0XaU18aNG6GtrY2cnBxERkZi7dq1SEhIwOnTp8u9reo8/omJiThx4gRiYmKqdLtvs82bN6OoqKi2m6FUaXl8w4YN0NfXr7aTnp9//jnef/99JCcnw8rKqlr2QURUmh07dii8/+GHHxAREVGs3NbW9o3bqu7vtVXl999/R7du3TB//vzabkqtGjduHNzd3cX3KSkpmDdvHj777DP07NlTLLeysoKTkxP+++8/SKXS2miqUgUFBVizZg2mTZsGVVXV2m5OjRg5ciSGDRsGmUxW200p5vnz51i4cCEAFJuJ6+jRo1i/fn21Df75+flh5syZ2LVrF8aMGVMt+6CaxYE/apBMTExgaWlZ7ARGbGwsBEHA4MGDiy2Tv5cPGlaUIAjIzc2FhoZGpbYj169fP3Tu3Llc67x48QJFRUVKw0ZOTg60tLQq3J6y9K9Ro0YYMWKE+P6LL76Ai4sLfvzxR6xatQqGhoYV3n9V27p1K7p3744WLVrUdlOqTFFREfLz86Gurq50+dsUQmtbbm4upFIpVFRUMHDgQEyaNAn79u1jCCKiOi8lJQXDhg2Dubk5fv/9dxgbG4vLJkyYgNu3b+PXX3+t0TZVNoPUpLK0tWfPnhg0aFC5tlvaZ3RVHJ/nz59DU1Oz1DqDBg2Cvr4+gJcns4YNG4Y9e/bg3Llz6Nq1a6X2X5W2bt0KMzMzdOvWrbabUmXelKPV1NRquEVvr1e/z7i7u6Np06bYvn07Fi1aVNtNI6IG6NXzGwBw9uxZREREFCuvTzIyMmBnZ1dl23vTeYq3lbOzs8JFXRcuXMC8efPg7Oys9Of/tvXvyJEjyMzMxJAhQ2q7KVWqtNysqqraYAY53+TV7NmkSRP07dsX27Zt4zmveoJTfVKD1aNHD1y8eFFhGqszZ86gXbt26NevH86ePatwRe2ZM2cgkUjQvXt3AC+/bAYHB8PKygoymQwWFhaYNWsW8vLyFPYjnxLy2LFj6Ny5MzQ0NPDtt98CAP7++294e3tDS0sLBgYGmDZtWrH1K+vVZ3iEhoaK7ZVPxyORSHD9+nV88sknaNq0qTiwWRX9KyuJRIIePXpAEAT89ddfYvndu3fxxRdfoE2bNtDQ0ICenh4GDx6sMIXQtm3bMHjwYACAm5ub0ik0fvvtN/Ts2RNaWlpo3LgxvLy8cO3atTe2Kzc3F+Hh4QpXb5VHWY5hQEAA9PT0IAiCWDZp0iRIJBJ88803Yll6ejokEgk2btwoluXl5WH+/PmwtraGTCaDqakpvvrqq2I/I/lzmXbu3Il27dpBJpMhPDy8xHYre8bf2rVr0a5dO2hqaqJp06bo3Lkzdu3aVabjUFhYiFmzZsHIyAhaWlro378/7t27V6xeXFwcPD09oaurC01NTbi6uuLMmTPi8gULFiAwMBAAYGlpKf6s5b/jOTk52L59u9KpNO7fv48xY8bA0NAQMpkM7dq1w5YtWxT2L5+abffu3ZgzZw5atGgBTU1NZGdnAwAMDAzQoUMH/Pzzz2XqNxHR2+zrr7/Gs2fP8P333ysM+slZW1tjypQpxcoPHTqE9u3bi/+Wvv55UpbPbuD/TS916tQpfPHFFzAwMEDLli3LtQ0AePr0KaZNmwYLCwvIZDK0bNkSvr6+ePToEaKiosQ77vz8/MTPh1enHHzTZw+AUvNSZZX0GV3a8QFe3kElr29iYoIJEyYUm45TPuVlfHw83n33XWhqamLWrFnlbqP8avXk5GSx7MmTJ/jyyy9hb28PbW1t6OjooF+/frh06ZJYp6qOf0kOHTqE3r17QyKRlLtPwJuP4TfffANVVVWFspUrV0IikSAgIEAsKywsROPGjTFjxgyxrKioCKGhoWjXrh3U1dVhaGiIcePG4Z9//lFoQ3lztLJn/O3evRuOjo5o3LgxdHR0YG9vjzVr1pT5OKxevRrm5ubQ0NCAq6ur0mfl3bx5E4MGDUKzZs2grq6Ozp074/Dhw+Ly0vK4hYUFrl27hlOnTonlr+bMp0+fYurUqTA1NYVMJoO1tTWWLVum8D2stO8zwMsB0V69ejGjEdFbLScnB9OnTxf/vWvTpg1WrFihcC6gtO+15clHFTV69Ghoa2vj/v378Pb2hra2Npo3b44vv/wShYWFAP7f9+aUlBT8+uuvCt/Lgao5T1Ge7+979+7F4sWL0bJlS6irq6NPnz64fft2sb7FxcXh/fffR9OmTaGlpYUOHToU+7x80+ddZSl7xp88r12+fBmurq7Q1NSEtbU19u/fDwA4deoUnJycoKGhgTZt2uDEiRPFtluW41WSQ4cOwcLCosJ3zP/+++/i+bYmTZrgo48+wo0bN8Tlly9fhkQiUTiO8fHxkEgk6NSpk8K2+vXrBycnJ4WyspzPk//eJicn4/3330fjxo0xfPjwEtus7Bl/Fy5cgIeHB/T19aGhoQFLS8tyDX4dP34cDg4OUFdXh52dHQ4ePFiszpsyz507d9C8eXMAwMKFC8W/rQULFmD06NFYv349AMWpheWqKnu+9957OH36NJ48eVLmvtPbi3f8UYPVo0cP7NixA3FxceKXzzNnzsDFxQUuLi7IysrC1atX0aFDB3FZ27ZtoaenBwD49NNPsX37dgwaNAjTp09HXFwcQkJCcOPGjWLPDkxKSoKPjw/GjRuHsWPHok2bNvjvv//Qp08fpKamYvLkyTAxMcGOHTvw+++/l6sfWVlZxebclkgkYjvltm7ditzcXHz22WeQyWRo1qyZuGzw4MGwsbHBkiVLxNBZ2f6Vl/wDt2nTpmLZ+fPnERMTg2HDhqFly5a4c+cONm7ciF69euH69evQ1NTEu+++i8mTJ+Obb77BrFmzxKkz5P/dsWMHRo0aBQ8PDyxbtgzPnz/Hxo0bxYHf0qYGjY+PR35+frEwUlZlOYY9e/bE6tWrce3aNfF5NNHR0VBRUUF0dDQmT54slgHAu+++C+Dlh3r//v1x+vRpfPbZZ7C1tcWVK1ewevVq/Pnnn8WeCfD7779j7969mDhxIvT19cs1JermzZsxefJkDBo0CFOmTEFubi4uX76MuLg4fPLJJ29cf/HixZBIJJgxYwYyMjIQGhoKd3d3JCYmile0//777+jXrx8cHR0xf/58qKioYOvWrejduzeio6PRtWtXDBgwAH/++Sd+/PFHrF69WrwboXnz5tixYwc+/fRTdO3aVZyWVR5c09PT0a1bN/GLRfPmzfHbb7/B398f2dnZxR5CHhwcDKlUii+//BJ5eXkKd0A6OjrWyPMWiIiq2y+//IJWrVqV69nFp0+fxsGDB/HFF1+gcePG+OabbzBw4ECkpqaKuaMsn92v+uKLL9C8eXPMmzcPOTk55drGs2fP0LNnT9y4cQNjxoxBp06d8OjRIxw+fBh///03bG1tsWjRomLTLcn7XJbPnlcpy0ul+ffff5U+F0VPT0/hi7qyz2j5M/GUHZ8FCxZg4cKFcHd3x/jx45GUlISNGzfi/PnzOHPmjMJdYY8fP0a/fv0wbNgwjBgxokKzKijLaH/99RcOHTqEwYMHw9LSEunp6fj222/h6uqK69evw8TEpMqP/6vu37+P1NTUCme0shzDnj17oqioCKdPnxaf6/xqRpO7ePEinj17JmY04OWdktu2bYOfnx8mT56MlJQUrFu3DhcvXiz2M6pMjo6IiICPjw/69OmDZcuWAQBu3LiBM2fOKB24f90PP/yAf//9FxMmTEBubi7WrFmD3r1748qVK+LvyrVr18TZL2bOnAktLS3s3bsX3t7eOHDgAD7++ONS83hoaKj4rOzZs2cDgLjt58+fw9XVFffv38e4ceNgZmaGmJgYBAUF4eHDhwgNDVVob2nfZxwdHfHzzz8jOzsbOjo6ZT6GREQ1QRAE9O/fHydPnoS/vz8cHBxw7NgxBAYG4v79+1i9ejUAlPq9trwZq6IKCwvh4eEBJycnrFixAidOnMDKlSthZWWF8ePHw9bWFjt27MC0adPQsmVLTJ8+HcDL7+VVcZ6ivN/fly5dChUVFXz55ZfIysrC119/jeHDhyMuLk6sExERgQ8++ADGxsaYMmUKjIyMcOPGDRw5ckT8vCzL5111+eeff/DBBx9g2LBhGDx4MDZu3Ihhw4Zh586dmDp1Kj7//HN88sknWL58OQYNGoR79+6Jjx8p7/F6XUxMTIXz1IkTJ9CvXz+0atUKCxYswH///Ye1a9eie/fuSEhIgIWFBdq3b48mTZrgjz/+QP/+/QH8vzx16dIl8XO7qKgIMTExCo/ZKc/5vBcvXsDDwwM9evTAihUryvX3kJGRgb59+6J58+aYOXMmmjRpgjt37igdvFPm1q1bGDp0KD7//HOMGjUKW7duxeDBgxEeHo733nsPQNkyT/PmzbFx40aMHz8eH3/8MQYMGAAA6NChA3JycvDgwQOlUwgDVZc9HR0dIQgCYmJixPxLdZhA1EBdu3ZNACAEBwcLgiAIBQUFgpaWlrB9+3ZBEATB0NBQWL9+vSAIgpCdnS2oqqoKY8eOFQRBEBITEwUAwqeffqqwzS+//FIAIPz+++9imbm5uQBACA8PV6gbGhoqABD27t0rluXk5AjW1tYCAOHkyZOltn/r1q0CAKUvmUwm1ktJSREACDo6OkJGRobCNubPny8AEHx8fBTKq6J/JRk1apSgpaUlZGZmCpmZmcLt27eFFStWCBKJRGjfvr1QVFQk1n3+/Hmx9WNjYwUAwg8//CCW7du3T+kx+/fff4UmTZqIPze5tLQ0QVdXt1j567777jsBgHDlypViy8zNzQUvL68S1y3rMczIyBAACBs2bBAEQRCePn0qqKioCIMHDxYMDQ3F9SZPniw0a9ZMPD47duwQVFRUhOjoaIXth4WFCQCEM2fOiGUABBUVFeHatWul9lfO1dVVcHV1Fd9/9NFHQrt27cq07qtOnjwpABBatGghZGdni+V79+4VAAhr1qwRBEEQioqKBBsbG8HDw6PYz9/S0lJ47733xLLly5cLAISUlJRi+9PS0hJGjRpVrNzf318wNjYWHj16pFA+bNgwQVdXV/w9k7e3VatWSn/3BEEQlixZIgAQ0tPTy3wciIjeNllZWQIA4aOPPirzOgAEqVQq3L59Wyy7dOmSAEBYu3atWFbWz255junRo4fw4sULhfpl3ca8efMEAMLBgweL1Zd/npw/f14AIGzdurXY8rJ+9pSUl0oi/zwp6fXw4UOxbkmf0SUdn4yMDEEqlQp9+/YVCgsLxfJ169YJAIQtW7aIZa6urgIAISwsrEztlvczKSlJyMzMFO7cuSNs2bJF0NDQEJo3by7k5OSIdXNzcxX2LwgvM6dMJhMWLVokllXF8VfmxIkTAgDhl19+KbbM1dW11NxS1mNYWFgo6OjoCF999ZXYZj09PWHw4MGCqqqq8O+//wqCIAirVq0SVFRUhH/++UcQBEGIjo4WAAg7d+5U2G94eHix8orkaHNzc/H9lClTBB0dnWJ/Q28i/36goaEh/P3332J5XFycAECYNm2aWNanTx/B3t5eyM3NFcuKiooEFxcXwcbGRiwrKY8LgiC0a9dOIVvKBQcHC1paWsKff/6pUD5z5kxBVVVVSE1NVWivsu8zcrt27RIACHFxcWU6BkRE1WnChAnCq6dcDx06JAAQ/ve//ynUGzRokCCRSBTyVUnfa8uaj+Q5pKznlM6fPy+WjRo1SgCg8FkuCILwzjvvCI6Ojgplys6JVMV5ivJ+f7e1tRXy8vLEemvWrFE4j/PixQvB0tJSMDc3Fz+r5V7NIGX9vHuTkrLPq21+9Wcjz2u7du0Sy27evCken7Nnz4rlx44dK7btsh4vZQoKCgSJRCJMnz692DJ5LszMzCxxfQcHB8HAwEB4/PixWHbp0iVBRUVF8PX1Fcu8vLyErl27iu8HDBggDBgwQFBVVRV+++03QRAEISEhQQAg/Pzzz4IglO98nvz3dubMmSW29VXy3335eaWffvqp2N9CWcmz3IEDB8SyrKwswdjYWHjnnXfEsrJmnszMTAGAMH/+/GL7ev3fFbmqzJ4PHjwQAAjLli17c+fprcepPqnBsrW1hZ6envjsvkuXLiEnJ0e8CtnFxUWcaig2NhaFhYXitE5Hjx4FAIVpfgCIVzq9/kwcS0tLeHh4KJQdPXoUxsbGCs9+0dTUVLi6pSzWr1+PiIgIhddvv/1WrN7AgQPFW8Zf9/nnnxdrG1C5/pUmJycHzZs3R/PmzWFtbY0vv/wS3bt3x88//6xwBfyrzzcpKCjA48ePYW1tjSZNmiAhIeGN+4mIiMDTp0/h4+ODR48eiS9VVVU4OTnh5MmTpa7/+PFjAIpXuJdVWY9h8+bN0bZtW/zxxx8AXt5ZqqqqisDAQKSnp+PWrVsAXl4R1aNHD/H47Nu3D7a2tmjbtq1C33r37g0Axfrm6upa4fn3mzRpgr///hvnz5+v0Pq+vr7i1WjAy2cHGRsbi8coMTERt27dwieffILHjx+LfcnJyUGfPn3wxx9/KEz3VB6CIODAgQP48MMPIQiCwrHy8PBAVlZWsd+lUaNGlfhsHfnvgrI7OIiI6gr5FMav/ttcFu7u7grTAHXo0AE6OjoK03SX97N77NixxZ6xUdZtHDhwAB07dlR6Bfabpn+syGfP63npTebNm1cso0VERCjcpQSU/hn9+vE5ceIE8vPzMXXqVKioqCjU09HRKZbRZDIZ/Pz8ytXuNm3aoHnz5rCwsMCYMWNgbW2N3377TeHKaZlMJu6/sLAQjx8/hra2Ntq0aVOmjFbZz/7KZLSyHkMVFRW4uLiIGe3GjRt4/PgxZs6cCUEQEBsbC+BlRpNfzQ68zGi6urp47733FHKHo6MjtLW1i2W08uboVzVp0gQ5OTmIiIio0Pre3t4Kz7Hu2rUrnJycxIz25MkT/P777xgyZIh4B+ujR4/w+PFjeHh44NatW7h//36F9g28PFY9e/ZE06ZNFY6Vu7s7CgsLxWMvV9r3GWY0InqbHT16FKqqquKMPnLTp0+HIAhKz+G8rrLnR8rj9czTs2dPhbxXksqep6jI93c/Pz+FWXrkMwzI23vx4kWkpKRg6tSp4me1nDwvVvfn3Ztoa2tj2LBh4vs2bdqgSZMmsLW1VZj6Uv7/8r5V5Hi96smTJxAEoUJ56uHDh0hMTMTo0aMVsm2HDh3w3nvviVkCePkzSUhIEGevOH36NN5//304ODiIsyhER0eLjwECKnY+b/z48eXuBwDx9+LIkSMoKCgo9/omJiYK30d0dHTg6+uLixcvIi0tDUD5M095VGX2ZJ6qXzjVJzVYEolE/DJfVFSEM2fOwMDAANbW1gBeDvytW7cOAMQBQPkH0N27d6GioiLWlTMyMkKTJk1w9+5dhXJLS8ti+7979y6sra2LnZgq7zSZXbt2RefOnd9YT1kbSlpWFf0rjbq6On755RcAL59z+PXXXyMjI6PYYMt///2HkJAQbN26Fffv31eYVisrK+uN+5EPmslD5uvKOg3Qq/stq/Icw549e4qhKDo6Gp07d0bnzp3RrFkzREdHw9DQEJcuXVKYVvPWrVu4ceNGiSc/MjIyFN6X92f0qhkzZuDEiRPo2rUrrK2t0bdvX3zyySfi8y7fxMbGRuG9RCKBtbW1OHWY/Oc0atSoEreRlZVVoTCamZmJp0+fYtOmTdi0aZPSOuU5VvLfhYo+T4iI6G0g//z7999/y7WemZlZsbKmTZsqPDuivJ/dyv7NLes2kpOTMXDgwHL1Qa4inz3l/Sy1t7cv03OCy5vRgOJ5USqVolWrVsUyWosWLRROhpXFgQMHoKOjg8zMTHzzzTdISUkpltGKioqwZs0abNiwASkpKeJzfwAUm25emar67K9oRgPKdgx79uwpTl0VHR0NY2NjdOrUCR07dkR0dLT4HJQhQ4Yo9C0rKwsGBgZK91+VGe2LL77A3r170a9fP7Ro0QJ9+/bFkCFD4OnpWab1X89oANC6dWvs3bsXAHD79m0IgoC5c+di7ty5SreRkZGhMHhYHrdu3cLly5erJM8yoxHR2+zu3bswMTEpdtGVfGrk1z+/lans+ZGyUldXL/bv8ut5rySVPU9Rke/vr+dTeXaQt1f+jGL5o1WUqe7Puzdp2bJlsc8vXV1dmJqaFisD/l/fKnK8lKnKPAW8/L0+duwYcnJyoKWlhZ49e+LFixeIjY2FqakpMjIy0LNnT1y7dk1h4M/Ozk4cRCzv+bxGjRopPA+7PFxdXTFw4EAsXLgQq1evRq9eveDt7Y1PPvkEMpnsjesrO7fbunVrAC+nzDcyMip35imPqsyezFP1Cwf+qEHr0aMHfvnlF1y5ckV8vp+ci4uLON/66dOnYWJiglatWimsX9Z/CEu6e6gmldaGkpZVV/9UVVUVToR5eHigbdu2GDdunMIDfydNmoStW7di6tSpcHZ2hq6uLiQSCYYNG1amO8DkdXbs2AEjI6Niyxs1Kv2fQPmJq3/++afCAaIsx7BHjx7YvHkz/vrrL0RHR6Nnz57ilU7R0dEwMTFBUVGReOUa8LJv9vb2WLVqldJtvh4QK/M7aGtri6SkJBw5cgTh4eE4cOAANmzYgHnz5mHhwoUV3q6c/Oe0fPlyODg4KK2jra1dqW2PGDGixJOL8ud4ypV2rOQBW/58QSKiukhHRwcmJia4evVqudZ7/c48uVdPFpT3s1vZv7mV/fwvi4p89lRXnqtIRquKbZfk3XffFT/nPvzwQ9jb22P48OGIj48X75BbsmQJ5s6dizFjxiA4OBjNmjWDiooKpk6dWq6MVtHP/lczWnXq0aMHCgoKEBsbK2Y04OWAYHR0NG7evInMzMxiGc3AwAA7d+5Uus3XT/hU5mdsYGCAxMREHDt2DL/99ht+++03bN26Fb6+vti+fXuFtysn/zl9+eWXJV4Z/vpFbuXd/nvvvYevvvpK6XL5STM5ZjQiashqIh8BJee9sqjseYqKfH8vSz59k+r+vHuTkvrwpr5V5Hi9qlmzZpBIJNWepzp37gx1dXX88ccfMDMzg4GBAVq3bo2ePXtiw4YNyMvLQ3R0tMJdc+U9n/fqbBTlJZFIsH//fpw9exa//PILjh07hjFjxmDlypU4e/Zshc9Hvaq8mae8266q7Mk8Vb9w4I8aNPkdfKdPn8aZM2cUHnrr6OgImUyGqKgoxMXF4f333xeXmZubo6ioCLdu3RKv0AJePlT36dOnMDc3f+O+zc3NcfXqVQiCoDA4lJSUVAU9q5yq6F95GBsbY9q0aVi4cCHOnj2Lbt26AQD279+PUaNGYeXKlWLd3NxcPH36VGH9kgbX5NORGRgYlOmK+9e1bdsWAJCSkgJ7e/tyrVueYyg/WRQREYHz589j5syZAF6eeNu4cSNMTEygpaUFR0dHhb5dunQJffr0qZErcbS0tDB06FAMHToU+fn5GDBgABYvXoygoCCoq6uXuq78Si05QRBw+/ZtMYDKf046Ojpv/DmV1ldly5o3b47GjRujsLCwQr8Dr0tJSYG+vn6JV2kREdUVH3zwATZt2oTY2Fg4OztX2XbL+tldFduwsrJ64+DlmzJCWT573iby/JCUlKRwQVp+fj5SUlKqvC/a2tqYP38+/Pz8sHfvXnEaqv3798PNzQ3ff/+9Qv2nT58qnCioruP/akYrr/Icw65du0IqlSI6OhrR0dEIDAwE8DKjbd68GZGRkeJ7OSsrK5w4cQLdu3evkYv/pFIpPvzwQ3z44YcoKirCF198gW+//RZz585940nK1zMaAPz555+wsLAAAPH4qKmpVXlGA14eq2fPnlVZRlNRUanUiTMioupibm6OEydO4N9//1W46+/mzZvicrmS/s2sioxV3Sp7nqKqv7/L2wQAV69eLXGb5fm8e5tU9ng1atQIVlZWlc5Tr7t58yb09fWhpaUF4GVW6dq1K6Kjo2FmZqZwIVVeXh527tyJ9PT0YnkKqPj5vIro1q0bunXrhsWLF2PXrl0YPnw4du/ejU8//bTU9eR3jL76O//nn38CgJipypp5Kpqnqip7yn8XXj2PSXUXn/FHDZr8qpOdO3fi/v37Cnf8yWQydOrUCevXr0dOTo44SAhAHAQMDQ1V2J78qiYvL6837vv999/HgwcPsH//frHs+fPnJd6eX5Oqon/lNWnSJGhqamLp0qVimaqqarGrtNauXaswnRQAMUy8Hng9PDygo6ODJUuWKJ2nOzMzs9Q2OTo6QiqV4sKFC+XpCoDyHUNLS0u0aNECq1evRkFBgTiFZs+ePZGcnIz9+/ejW7duClc0DRkyBPfv38fmzZuL7fu///4T506vCvLn6MhJpVLY2dlBEIQyzX/+ww8/KEwnt3//fjx8+BD9+vUD8PI4W1lZYcWKFXj27Fmx9V/9OZX0s5Yve71cVVUVAwcOxIEDB5SeHH7T78Dr4uPjq/QEORFRbfnqq6+gpaWFTz/9FOnp6cWWJycnY82aNeXeblk/u6tiGwMHDsSlS5fw008/FduGfP2SPjfK89nzNnF3d4dUKsU333yjcIy+//57ZGVlVUtGGz58OFq2bIlly5aJZcp+Rvv27Sv2/JvqOv4tWrSAqalphTJaeY6huro6unTpgh9//BGpqakKJ6r+++8/fPPNN7CysoKxsbG4zpAhQ1BYWIjg4OBi+37x4kWVnqB9PaOpqKiIF1bl5eW9cf1Dhw4p/MzOnTuHuLg4MaMZGBigV69e+Pbbb/Hw4cNi61cmowEvj1VsbCyOHTtWbNnTp0/x4sWLN/ZBLj4+Hu3atROnQSMiepu8//77KCwsFB8nI7d69WpIJBLx312g5H8zqyJjVbfKnqeo6u/vANCpUydYWloiNDS02HGVH8/yfN69TarieDk7O1coTxkbG8PBwQHbt29XOK5Xr17F8ePHFW6eAF5mp7i4OJw8eVLMU/r6+rC1tRUz5qszKFT2fF55/PPPP8X+tuQzUpQlTz148EDh+0h2djZ++OEHODg4iHcrljXzyJ+pXVKeUrasKrNnfHw8JBIJz3vVE7zjjxo0qVSKLl26IDo6GjKZTOGOKuDldJ/yq6leHfjr2LEjRo0ahU2bNuHp06dwdXXFuXPnsH37dnh7e8PNze2N+x47dizWrVsHX19fxMfHw9jYGDt27BD/kS+r3377TbxK7PW2vz41aVlVRf/KS09PD35+ftiwYQNu3LgBW1tbfPDBB9ixYwd0dXVhZ2eH2NhYnDhxotizYxwcHKCqqoply5YhKysLMpkMvXv3hoGBATZu3IiRI0eiU6dOGDZsGJo3b47U1FT8+uuv6N69e7Hg/Sp1dXX07dsXJ06cwKJFi4otv337Nv73v/8VK3/nnXfg5eVVrmPYs2dP7N69G/b29uKc9J06dYKWlhb+/PNPhef7AcDIkSOxd+9efP755zh58iS6d++OwsJC3Lx5E3v37sWxY8fK9OzHsujbty+MjIzQvXt3GBoa4saNG1i3bh28vLyKPaNAmWbNmqFHjx7w8/NDeno6QkNDYW1tjbFjxwJ4eZLqu+++Q79+/dCuXTv4+fmhRYsWuH//Pk6ePAkdHR3xmZDyv9HZs2dj2LBhUFNTw4cffijeEXnixAmsWrUKJiYmsLS0hJOTE5YuXYqTJ0/CyckJY8eOhZ2dHZ48eYKEhAScOHECT548KdNxyMjIwOXLlzFhwoQKHkkioreHlZUVdu3ahaFDh8LW1ha+vr5o37498vPzERMTg3379mH06NHl3m5ZP7urYhuBgYHYv38/Bg8ejDFjxsDR0RFPnjzB4cOHERYWho4dO8LKygpNmjRBWFgYGjduDC0tLTg5OcHS0rLMnz0VFR0djdzc3GLlHTp0KHXapdI0b94cQUFBWLhwITw9PdG/f38kJSVhw4YN6NKlC0aMGFGpNiujpqaGKVOmIDAwEOHh4fD09MQHH3yARYsWwc/PDy4uLrhy5Qp27txZLHtW5/H/6KOP8NNPPxW7whp4eTJIWUaztLTE8OHDy3UMe/bsiaVLl0JXV1ecAcLAwABt2rRBUlJSsb8TV1dXjBs3DiEhIUhMTETfvn2hpqaGW7duYd++fVizZg0GDRpU1sNfqk8//RRPnjxB79690bJlS9y9exdr166Fg4NDma7Utra2Ro8ePTB+/Hjk5eUhNDQUenp6CtNQrV+/Hj169IC9vT3Gjh2LVq1aIT09HbGxsfj7779x6dIlAKXncUdHR2zcuBH/+9//YG1tDQMDA/Tu3RuBgYE4fPgwPvjgA4wePRqOjo7IycnBlStXsH//fty5c6dMU00VFBTg1KlT+OKLLyp+MImIqtGHH34INzc3zJ49G3fu3EHHjh1x/Phx/Pzzz5g6dap4dxOAEr/XVkXGqm5VcZ6iqr6/y6moqGDjxo348MMP4eDgAD8/PxgbG+PmzZu4du2aOBBT1s+7t01lj9dHH32EHTt24M8//1R61/yqVauKnadUUVHBrFmzsHz5cvTr1w/Ozs7w9/fHf//9h7Vr10JXVxcLFixQWKdnz55YvHgx7t27pzDA9+677+Lbb7+FhYWFwiN2dHR0KnU+rzy2b9+ODRs24OOPP4aVlRX+/fdfbN68GTo6OsUGMJVp3bo1/P39cf78eRgaGmLLli1IT0/H1q1bxTplzTwaGhqws7PDnj170Lp1azRr1gzt27dH+/btxfNhkydPhoeHB1RVVTFs2LAqzZ4RERHo3r37W/XvClWCQNTABQUFCQAEFxeXYssOHjwoABAaN24svHjxQmFZQUGBsHDhQsHS0lJQU1MTTE1NhaCgICE3N1ehnrm5ueDl5aV033fv3hX69+8vaGpqCvr6+sKUKVOE8PBwAYBw8uTJUtu9detWAUCJr61btwqCIAgpKSkCAGH58uXFtjF//nwBgJCZmVlsWVX0T5lRo0YJWlpaSpclJycLqqqqwqhRowRBEIR//vlH8PPzE/T19QVtbW3Bw8NDuHnzpmBubi7Wkdu8ebPQqlUrQVVVtdjxO3nypODh4SHo6uoK6urqgpWVlTB69GjhwoULb2zvwYMHBYlEIqSmphbrd0nH3t/fXxCEsh9DQRCE9evXCwCE8ePHK5S7u7sLAITIyMhi6+Tn5wvLli0T2rVrJ8hkMqFp06aCo6OjsHDhQiErK0usB0CYMGHCG/sq5+rqKri6uorvv/32W+Hdd98V9PT0BJlMJlhZWQmBgYEK+1Dm5MmTAgDhxx9/FIKCggQDAwNBQ0ND8PLyEu7evVus/sWLF4UBAwaI+zE3NxeGDBlSrO/BwcFCixYtBBUVFQGAkJKSIgiCINy8eVN49913BQ0NDQGAwu9Ienq6MGHCBMHU1FRQU1MTjIyMhD59+gibNm0q1t59+/Yp7c/GjRsFTU1NITs7+w1HkIio7vjzzz+FsWPHChYWFoJUKhUaN24sdO/eXVi7dq3C51VJnyWvfyaX9bNbnmPOnz9fbJvl+fx//PixMHHiRKFFixaCVCoVWrZsKYwaNUp49OiRWOfnn38W7OzshEaNGilkJEEo22dPaXlJGfnnSUmv+fPnv/G4lnZ8BEEQ1q1bJ7Rt21ZQU1MTDA0NhfHjxwv//POPQh1XV1ehXbt2ZWrzm/qZlZUl6OrqivkgNzdXmD59umBsbCxoaGgI3bt3F2JjY4tlCEGo/PEvSUJCggBAiI6OLtbvko59nz59xHplOYaCIAi//vqrAEDo16+fQvmnn34qABC+//57pe3btGmT4OjoKGhoaAiNGzcW7O3tha+++kp48OCBWKciOdrc3Fx8v3//fqFv376CgYGBIJVKBTMzM2HcuHHCw4cPS93Oq98PVq5cKZiamgoymUzo2bOncOnSpWL1k5OTBV9fX8HIyEhQU1MTWrRoIXzwwQfC/v37FeqVlMfT0tIELy8voXHjxgIAhd+Rf//9VwgKChKsra0FqVQq6OvrCy4uLsKKFSuE/Pz8Yu1V5rfffhMACLdu3SrDUSQiqn4TJkwQXj/l+u+//wrTpk0TTExMBDU1NcHGxkZYvny5UFRUpFCvpO+1Zc1H8hxS1nNKr2aNks7XyDPCq0r6DKuK8xSV+f4u/8x4NW8IgiCcPn1aeO+994TGjRsLWlpaQocOHYS1a9cq1Cnr511pzp8/r3T/r7b51Z9NSXmtpOOr7LiV5XiVJC8vT9DX1xeCg4MVyuU/c2UvVVVVsd6JEyeE7t27CxoaGoKOjo7w4YcfCtevXy+2n+zsbEFVVbXY+dX/+7//EwAII0eOVNq+spzPK+08ozLy3335uaSEhATBx8dHMDMzE2QymWBgYCB88MEHZTpnKP85HTt2TOjQoYMgk8mEtm3bKj2vVJbMIwiCEBMTIzg6OgpSqVThu8OLFy+ESZMmCc2bNxckEkmxv8nKZs+nT58KUqlU+O67797Yb6obJIJQjqedEhE1MIWFhbCzs8OQIUOU3jZPDcc777yDXr16YfXq1bXdFCIiIgLQp08fmJiYYMeOHbXdFKpF3t7ekEgkSqf9JSIiotIFBwdj69atuHXrFlRVVWu7OVRLQkND8fXXXyM5OblGnlNN1Y8Df0REb7Bnzx6MHz8eqamp0NbWru3mUC0IDw/HoEGD8Ndff8HAwKC2m0NEREQA4uLi0LNnT9y6dQvm5ua13RyqBTdu3IC9vT0SExPRvn372m4OERFRnfPs2TO0atUKq1evxvDhw2u7OVQLCgoKYGVlhZkzZ3Lq9HqEA39ERERERERERERERERE9YBKbTeAiIiIiIiIiIiIiIiIiCqPA39ERERERERERERERERE9QAH/oiIiIiIiIiIiIiIiIjqAQ78EREREREREREREREREdUDjWq7AW+joqIiPHjwAI0bN4ZEIqnt5hAREVENEgQB//77L0xMTKCiwmukKou5ioiIqOFirqpazFVEREQNV3lyFQf+lHjw4AFMTU1ruxlERERUi+7du4eWLVvWdjPqPOYqIiIiYq6qGsxVREREVJZcxYE/JRo3bgzg5QHU0dGp5dYQERFRTcrOzoapqamYB6hymKuIiIgaLuaqqsVcRURE1HCVJ1dx4E8J+XQJOjo6DSZIrV+/HsuXL0daWho6duyItWvXomvXriXW37dvH+bOnYs7d+7AxsYGy5Ytw/vvv69Q58aNG5gxYwZOnTqFFy9ewM7ODgcOHICZmRmePHmC+fPn4/jx40hNTUXz5s3h7e2N4OBg6OrqVnd3iYiI3ojTJ1UN5qrK56oFCxZg9+7duHfvHqRSKRwdHbF48WI4OTmJdSwsLHD37l2F7YaEhGDmzJlV30EiIqJyYq6qGg0xV8ktXboUQUFBmDJlCkJDQwEAubm5mD59Onbv3o28vDx4eHhgw4YNMDQ0FNdLTU3F+PHjcfLkSWhra2PUqFEICQlBo0YlnxLt378/EhMTkZGRgaZNm8Ld3R3Lli2DiYlJdXeTiIjojcqSqzjBOmHPnj0ICAjA/PnzkZCQgI4dO8LDwwMZGRlK68fExMDHxwf+/v64ePEivL294e3tjatXr4p1kpOT0aNHD7Rt2xZRUVG4fPky5s6dC3V1dQAvp6d48OABVqxYgatXr2Lbtm0IDw+Hv79/jfSZiIiIqDpUR65q3bo11q1bhytXruD06dOwsLBA3759kZmZqbCtRYsW4eHDh+Jr0qRJ1dpXIiIioppw/vx5fPvtt+jQoYNC+bRp0/DLL79g3759OHXqFB48eIABAwaIywsLC+Hl5YX8/HzExMRg+/bt2LZtG+bNm1fq/tzc3LB3714kJSXhwIEDSE5OxqBBg6qlb0RERNVBIgiCUNuNeNtkZ2dDV1cXWVlZDeIKKicnJ3Tp0gXr1q0D8PJh0aamppg0aZLSq8SHDh2KnJwcHDlyRCzr1q0bHBwcEBYWBgAYNmwY1NTUsGPHjjK3Y9++fRgxYgRycnJKvfKKiIioOjW0HFDdGtrxrI5c9Tr5MT1x4gT69OkD4OUdf1OnTsXUqVOrvlNEREQV1NByQHVriMfz2bNn6NSpEzZs2ID//e9/cHBwQGhoKLKystC8eXPs2rVLHJS7efMmbG1tERsbi27duuG3337DBx98gAcPHoh3AYaFhWHGjBnIzMyEVCotUxsOHz4Mb29v5OXlQU1Nrdr6SkREVJry5ADe8dfA5efnIz4+Hu7u7mKZiooK3N3dERsbq3Sd2NhYhfoA4OHhIdYvKirCr7/+itatW8PDwwMGBgZwcnLCoUOHSm2L/BeWg35ERERUF1VHrlK2j02bNkFXVxcdO3ZUWLZ06VLo6enhnXfewfLly/HixYtK9oiIiIiodk2YMAFeXl7F8lJ8fDwKCgoUytu2bQszMzMxR8XGxsLe3l5h6k8PDw9kZ2fj2rVrZdr/kydPsHPnTri4uHDQj4iI6gyOsDRwjx49QmFhoUIIAgBDQ0PcvHlT6TppaWlK66elpQEAMjIy8OzZMyxduhT/+9//sGzZMoSHh2PAgAE4efIkXF1dlbYjODgYn332WRX1jKhmFRYWoqCgoLabQURloKamBlVV1dpuBtVD1ZGr5I4cOYJhw4bh+fPnMDY2RkREBPT19cXlkydPRqdOndCsWTPExMQgKCgIDx8+xKpVq6qod0Q1h7mKqO5grqLqtHv3biQkJOD8+fPFlqWlpUEqlaJJkyYK5a/mqJJylnxZaWbMmIF169bh+fPn6Natm8LsDER1CXMVUd1RlbmKA39U5YqKigAAH330EaZNmwYAcHBwQExMDMLCwooN/GVnZ8PLywt2dnZYsGBBTTeXqFIEQUBaWhqePn1a200honJo0qQJjIyMyvRAZKK3gZubGxITE/Ho0SNs3rwZQ4YMQVxcHAwMDAAAAQEBYt0OHTpAKpVi3LhxCAkJgUwmq61mE5ULcxVR3cRcRdXh3r17mDJlCiIiIqCurl7j+w8MDIS/vz/u3r2LhQsXwtfXF0eOHOHvOdUZzFVEdVNV5SoO/DVw+vr6UFVVRXp6ukJ5eno6jIyMlK5jZGRUan19fX00atQIdnZ2CnVsbW1x+vRphbJ///0Xnp6eaNy4MX766SdOm0B1jjxEGRgYQFNTk18CiN5ygiDg+fPnyMjIAAAYGxvXcouoPqmOXCWnpaUFa2trWFtbo1u3brCxscH333+PoKAgpdt1cnLCixcvcOfOHbRp06YSvSKqOcxVRHULcxVVp/j4eGRkZKBTp05iWWFhIf744w+sW7cOx44dQ35+Pp4+fapw19+rOcrIyAjnzp1T2K48d5WUzeT09fWhr6+P1q1bw9bWFqampjh79iycnZ2rqIdE1Yu5iqhuqepcxYG/Bk4qlcLR0RGRkZHw9vYG8PKOvcjISEycOFHpOs7OzoiMjMTUqVPFsoiICDH8SKVSdOnSBUlJSQrr/fnnnzA3NxffZ2dnw8PDAzKZDIcPH66VK7iIKqOwsFAMUXp6erXdHCIqIw0NDQAvp6Y2MDDg9FRUZaojV5WkqKgIeXl5JS5PTEyEioqKeEcg0duOuYqobmKuourSp08fXLlyRaHMz88Pbdu2xYwZM2Bqago1NTVERkZi4MCBAICkpCSkpqaKOcrZ2RmLFy8Wfz+BlzlLR0en2MXqpZHPbFVa9iJ6mzBXEdVNVZmrOPBHCAgIwKhRo9C5c2d07doVoaGhyMnJgZ+fHwDA19cXLVq0QEhICABgypQpcHV1xcqVK+Hl5YXdu3fjwoUL2LRpk7jNwMBADB06FO+++y7c3NwQHh6OX375BVFRUQBeDvr17dsXz58/x//93/8hOzsb2dnZAIDmzZvzywLVCfI50jU1NWu5JURUXvK/24KCAn7mUJWq6lyVk5ODxYsXo3///jA2NsajR4+wfv163L9/H4MHDwYAxMbGIi4uDm5ubmjcuDFiY2Mxbdo0jBgxAk2bNq2dA0FUTsxVRHUXcxVVh8aNG6N9+/YKZVpaWtDT0xPL/f39ERAQgGbNmkFHRweTJk2Cs7MzunXrBgDo27cv7OzsMHLkSHz99ddIS0vDnDlzMGHCBHEq9HPnzsHX1xeRkZFo0aIF4uLicP78efTo0QNNmzZFcnIy5s6dCysrK97tR3UGcxVR3VVVuYoDf4ShQ4ciMzMT8+bNQ1paGhwcHBAeHi4+8Dg1NRUqKipifRcXF+zatQtz5szBrFmzYGNjg0OHDikEso8//hhhYWEICQnB5MmT0aZNGxw4cAA9evQAACQkJCAuLg4AYG1trdCelJQUWFhYVHOviaoOp0sgqnv4d0vVpapzlaqqKm7evInt27fj0aNH0NPTQ5cuXRAdHY127doBAGQyGXbv3o0FCxYgLy8PlpaWmDZtmsJz/4jqCv77TFT38O+Wasvq1auhoqKCgQMHIi8vDx4eHtiwYYO4XFVVFUeOHMH48ePh7OwMLS0tjBo1CosWLRLrPH/+HElJSQoDJQcPHsT8+fORk5MDY2NjeHp6Ys6cOXxuMtU5/PeZqO6pqr9biSAIQpVsqR7Jzs6Grq4usrKyoKOjU9vNIaK3VG5uLlJSUmBpacmpaonqmNL+fpkDqhaPJxGVBXMVUd3FXFVzeDyJqCyYq4jqrqrKVSqlLiUiIiIFUVFRkEgkePr0aZnXsbCwQGhoaLW1iYiIiKguYq4iIiIiqhrMVfQqDvwREVG9Mnr0aEgkEnz++efFlk2YMAESiQSjR4+u+YYRVYH169fDwsIC6urqcHJywrlz50qtv2/fPrRt2xbq6uqwt7fH0aNHFZYvWLAAbdu2hZaWFpo2bQp3d3dxKm45CwsLSCQShdfSpUurvG9ERPT2Ya4iIiIiqhrMVVSTOPBHRET1jqmpKXbv3o3//vtPLMvNzcWuXbtgZmZWiy0jqrg9e/YgICAA8+fPR0JCAjp27AgPDw9kZGQorR8TEwMfHx/4+/vj4sWL8Pb2hre3N65evSrWad26NdatW4crV67g9OnTsLCwQN++fZGZmamwrUWLFuHhw4fia9KkSdXaVyIienswVxEVt3TpUkgkEkydOlUsy83NxYQJE6CnpwdtbW0MHDgQ6enpCuulpqbCy8sLmpqaMDAwQGBgIF68eFHDrSciotrCXEU1hQN/RERU73Tq1AmmpqY4ePCgWHbw4EGYmZnhnXfeEcvy8vIwefJkGBgYQF1dHT169MD58+cVtnX06FG0bt0aGhoacHNzw507d4rt7/Tp0+jZsyc0NDRgamqKyZMnIycnp9r6Rw3TqlWrMHbsWPj5+cHOzg5hYWHQ1NTEli1blNZfs2YNPD09ERgYCFtbWwQHB6NTp05Yt26dWOeTTz6Bu7s7WrVqhXbt2mHVqlXIzs7G5cuXFbbVuHFjGBkZiS8tLa1q7SsREb09mKuIFJ0/fx7ffvstOnTooFA+bdo0/PLLL9i3bx9OnTqFBw8eYMCAAeLywsJCeHl5IT8/HzExMdi+fTu2bduGefPm1XQXiIioljBXUU3hwB8REdVLY8aMwdatW8X3W7ZsgZ+fn0Kdr776CgcOHMD27duRkJAAa2treHh44MmTJwCAe/fuYcCAAfjwww+RmJiITz/9FDNnzlTYRnJyMjw9PTFw4EBcvnwZe/bswenTpzFx4sTq7yQ1GPn5+YiPj4e7u7tYpqKiAnd3d8TGxipdJzY2VqE+AHh4eJRYPz8/H5s2bYKuri46duyosGzp0qXQ09PDO++8g+XLl/PKdCKiBoa5iuilZ8+eYfjw4di8eTOaNm0qlmdlZeH777/HqlWr0Lt3bzg6OmLr1q2IiYnB2bNnAQDHjx/H9evX8X//939wcHBAv379EBwcjPXr1yM/P7+2ukRERDWMuYpqAgf+iIioXhoxYgROnz6Nu3fv4u7duzhz5gxGjBghLs/JycHGjRuxfPly9OvXD3Z2dti8eTM0NDTw/fffAwA2btwIKysrrFy5Em3atMHw4cOLzbceEhKC4cOHY+rUqbCxsYGLiwu++eYb/PDDD8jNza3JLlM99ujRIxQWFsLQ0FCh3NDQEGlpaUrXSUtLK1P9I0eOQFtbG+rq6li9ejUiIiKgr68vLp88eTJ2796NkydPYty4cViyZAm++uqrEtual5eH7OxshRcREdVtzFVEL02YMAFeXl7FLq6Kj49HQUGBQnnbtm1hZmYmXnQVGxsLe3t7hXzm4eGB7OxsXLt2rWY6QEREtY65impCo9puABERUXVo3rw5vLy8sG3bNgiCAC8vL4XBjOTkZBQUFKB79+5imZqaGrp27YobN24AAG7cuAEnJyeF7To7Oyu8v3TpEi5fvoydO3eKZYIgoKioCCkpKbC1ta2O7hFVGTc3NyQmJuLRo0fYvHkzhgwZgri4OBgYGAAAAgICxLodOnSAVCrFuHHjEBISAplMVmx7ISEhWLhwYY21n4iIqh9zFRGwe/duJCQkFJtqDXh5wZVUKkWTJk0Uyl+96Kqki7Lky5TJy8tDXl6e+J4XVBER1X3MVVQTOPBXyxwDf6jtJlAJ4pf71nYTiKiSxowZI05hsH79+mrZx7NnzzBu3DhMnjy52DI+mJmqir6+PlRVVZGenq5Qnp6eDiMjI6XrGBkZlam+lpYWrK2tYW1tjW7dusHGxgbff/89goKClG7XyckJL168wJ07d9CmTZtiy4OCghQGC7Ozs2FqalqmflYWc9XbiZmKqH5grqKG7N69e5gyZQoiIiKgrq5eY/utzQuqmKveTsxVRPUDcxVVN071SURE9Zanpyfy8/NRUFAADw8PhWVWVlaQSqU4c+aMWFZQUIDz58/Dzs4OAGBra4tz584prCd/Rodcp06dcP36dXHg5NWXVCqtpp5RQyOVSuHo6IjIyEixrKioCJGRkcWu6pNzdnZWqA8AERERJdZ/dbuvXln+usTERKioqIh3BL5OJpNBR0dH4UVERHUfcxU1ZPHx8cjIyECnTp3QqFEjNGrUCKdOncI333yDRo0awdDQEPn5+Xj69KnCeq9edFXSRVnyZcoEBQUhKytLfN27d6/qO0dERDWOuYqqGwf+iIio3lJVVcWNGzdw/fp1qKqqKizT0tLC+PHjERgYiPDwcFy/fh1jx47F8+fP4e/vDwD4/PPPcevWLQQGBiIpKQm7du3Ctm3bFLYzY8YMxMTEYOLEiUhMTMStW7fw888/82HJVOUCAgKwefNmbN++HTdu3MD48eORk5MjPgTc19dX4S69KVOmIDw8HCtXrsTNmzexYMECXLhwQfzdzMnJwaxZs3D27FncvXsX8fHxGDNmDO7fv4/BgwcDePksmtDQUFy6dAl//fUXdu7ciWnTpmHEiBFo2rRpzR8EIiKqNcxV1JD16dMHV65cQWJiovjq3Lkzhg8fLv6/mpqawkVXSUlJSE1NFS+6cnZ2xpUrV5CRkSHWiYiIgI6Ojngi93W8oIqIqH5irqLqxqk+iYioXivty/HSpUtRVFSEkSNH4t9//0Xnzp1x7NgxcUDDzMwMBw4cwLRp07B27Vp07doVS5YswZgxY8RtdOjQAadOncLs2bPRs2dPCIIAKysrDB06tNr7Rg3L0KFDkZmZiXnz5iEtLQ0ODg4IDw8Xnw2TmpoKFZX/d02Xi4sLdu3ahTlz5mDWrFmwsbHBoUOH0L59ewAvv2jcvHkT27dvx6NHj6Cnp4cuXbogOjoa7dq1A/DyZNPu3buxYMEC5OXlwdLSEtOmTVOYypOIiBoO5ipqqBo3bixmKDktLS3o6emJ5f7+/ggICECzZs2go6ODSZMmwdnZGd26dQMA9O3bF3Z2dhg5ciS+/vprpKWlYc6cOZgwYYLS5yYTEVH9xlxF1UkiCIJQ241422RnZ0NXVxdZWVnVfjUV50x/e3HedHqT3NxcpKSkwNLSskaf80BElVfa329N5oCGgLmKmKmoLJiriOquhpqrevXqBQcHB4SGhgJ4eRymT5+OH3/8EXl5efDw8MCGDRsUpvG8e/cuxo8fj6ioKGhpaWHUqFFYunQpGjUq23X5zFXEXEVlwVxFVHdVVa6q9ak+169fDwsLC6irq8PJyanY3LSv27dvH9q2bQt1dXXY29vj6NGjxercuHED/fv3h66uLrS0tNClSxekpqZWVxeIiIiIiIiIiKgBiYqKEgf9AEBdXR3r16/HkydPkJOTg4MHDxZ7dp+5uTmOHj2K58+fIzMzEytWrCjzoB8RERFRWdXqwN+ePXsQEBCA+fPnIyEhAR07doSHh4fCfOeviomJgY+PD/z9/XHx4kV4e3vD29sbV69eFeskJyejR48eaNu2LaKionD58mXMnTuXVzcQERERERERERERERFRvVarA3+rVq3C2LFj4efnBzs7O4SFhUFTUxNbtmxRWn/NmjXw9PREYGAgbG1tERwcjE6dOmHdunVindmzZ+P999/H119/jXfeeQdWVlbo378/DAwMaqpbRERERERERERERERERDWu1gb+8vPzER8fD3d39//XGBUVuLu7IzY2Vuk6sbGxCvUBwMPDQ6xfVFSEX3/9Fa1bt4aHhwcMDAzg5OSEQ4cOldqWvLw8ZGdnK7yIiIiIiIiIiIiIiIiI6pJaG/h79OgRCgsLYWhoqFBuaGiItLQ0peukpaWVWj8jIwPPnj3D0qVL4enpiePHj+Pjjz/GgAEDcOrUqRLbEhISAl1dXfFlampayd4RERERERERERERERER1axaneqzqhUVFQEAPvroI0ybNg0ODg6YOXMmPvjgA4SFhZW4XlBQELKyssTXvXv3aqrJRERERERERERERERERFWiUW3tWF9fH6qqqkhPT1coT09Ph5GRkdJ1jIyMSq2vr6+PRo0awc7OTqGOra0tTp8+XWJbZDIZZDJZRbpBRERERERERERERERE9FaotTv+pFIpHB0dERkZKZYVFRUhMjISzs7OStdxdnZWqA8AERERYn2pVIouXbogKSlJoc6ff/4Jc3PzKu4BERERERERERERERER0duj1u74A4CAgACMGjUKnTt3RteuXREaGoqcnBz4+fkBAHx9fdGiRQuEhIQAAKZMmQJXV1esXLkSXl5e2L17Ny5cuIBNmzaJ2wwMDMTQoUPx7rvvws3NDeHh4fjll18QFRVVG10kIiIiIiIiIiIiIiIiqhG1+oy/oUOHYsWKFZg3bx4cHByQmJiI8PBwGBoaAgBSU1Px8OFDsb6Liwt27dqFTZs2oWPHjti/fz8OHTqE9u3bi3U+/vhjhIWF4euvv4a9vT2+++47HDhwAD169Kjx/hER1VXbtm1DkyZN3tp9jx49Gt7e3jXSHiIiIqLKYK4iIiIiqhrMVURlU6t3/AHAxIkTMXHiRKXLlN2lN3jwYAwePLjUbY4ZMwZjxoypiuYREVWIY+APNbq/+OW+5ao/evRobN++HQCgpqYGMzMz+Pr6YtasWWjUqGo+Grp16wYHBweEhYWJZWFhYRg/fjy2bt2K0aNHK7QnOTkZ0dHRZdr2mjVrIAhClbSzqkkkEvz0008MekRERFWEuYq5irmKiIioajBXMVcxVzUMtXrHHxER1R5PT088fPgQt27dwvTp07FgwQIsX768yrbv5uZW7AKOkydPwtTUtFh5VFQUevfuXeZt6+rq1toVXgAgCAJevHhRI/vKz8+vkf0QERFRxTFXVRxzFREREb2KuarimKtIjgN/REQNlEwmg5GREczNzTF+/Hi4u7vj8OHDCnWOHTsGW1tbaGtri8FLrqioCIsWLULLli0hk8ng4OCA8PBwcbmbmxuSkpKQlpYmlp06dQozZ85UCFIpKSm4e/cu3Nzcyrzv16dO2L9/P+zt7aGhoQE9PT24u7sjJydHoe7ChQvRvHlz6Ojo4PPPP1cIKEVFRQgJCYGlpSU0NDTE6aTloqKiIJFI8Ntvv8HR0REymQynT58u5xEHHj9+DB8fH7Ro0QKampqwt7fHjz/+qFCnV69emDhxIqZOnQp9fX14eHgAAA4fPgwbGxuoq6vDzc0N27dvh0QiwdOnT8V1T58+jZ49e0JDQwOmpqaYPHmyeByIiIio+jBXMVcRERFR1WCuYq6iyuPAHxERAQA0NDQUwsXz58+xYsUK7NixA3/88QdSU1Px5ZdfisvXrFmDlStXYsWKFbh8+TI8PDzQv39/3Lp1CwDQvXt3qKmp4eTJkwCA69ev47///oO/vz8eP36MlJQUAC+vqlJXV4ezs3OZ9/2qhw8fwsfHB2PGjMGNGzcQFRWFAQMGKEytEBkZKS778ccfcfDgQSxcuFBcHhISgh9++AFhYWG4du0apk2bhhEjRuDUqVMK+5o5cyaWLl2KGzduoEOHDuU+xrm5uXB0dMSvv/6Kq1ev4rPPPsPIkSNx7tw5hXrbt2+HVCrFmTNnEBYWhpSUFAwaNAje3t64dOkSxo0bh9mzZyusk5ycDE9PTwwcOBCXL1/Gnj17cPr06RKn0yYiIqLqw1zFXEVERERVg7mKuYrKr9af8UdERLVLEARERkbi2LFjmDRpklheUFCAsLAwWFlZAXj5TNZFixaJy1esWIEZM2Zg2LBhAIBly5bh5MmTCA0Nxfr166GlpYWuXbsiKioKPj4+iIqKQo8ePSCTyeDi4oKoqChYWloiKioKzs7OkMlkZd73qx4+fIgXL15gwIABMDc3BwDY29sr1JFKpdiyZQs0NTXRrl07LFq0CIGBgQgODkZBQQGWLFmCEydOiGGuVatWOH36NL799lu4urqK21m0aBHee++9Ch/rFi1aKATCSZMm4dixY9i7dy+6du0qltvY2ODrr78W38+cORNt2rQRp7Zo06YNrl69isWLF4t1QkJCMHz4cEydOlXcxjfffANXV1ds3LgR6urqFW43ERERlQ1zFXMVERERVQ3mKuYqqjgO/BERNVBHjhyBtrY2CgoKUFRUhE8++QQLFiwQl2tqaopBBgCMjY2RkZEBAMjOzsaDBw/QvXt3hW12794dly5dEt/36tUL+/btA/By+oFevXoBAFxdXREVFQU/Pz9ERUVh7NixCtspbd+v69ixI/r06QN7e3t4eHigb9++GDRoEJo2bapQR1NTU3zv7OyMZ8+e4d69e3j27BmeP39eLCDl5+fjnXfeUSjr3Lmz0jaUVWFhIZYsWYK9e/fi/v37yM/PR15enkLbAMDR0VHhfVJSErp06aJQ9mrwAoBLly7h8uXL2Llzp1gmCAKKioqQkpICW1vbSrWdiIiISsZcxVxFREREVYO5irmKKo8Df0REDZSbmxs2btwIqVQKExMTNGqk+JGgpqam8F4ikShMR1DWfSxevBj3799HVFSUePWQq6srvv32WyQnJ+PevXvFHpRcnn2rqqoiIiICMTExOH78ONauXYvZs2cjLi4OlpaWb2zjs2fPAAC//vorWrRoobDs1au6AEBLS+uN2yvN8uXLsWbNGoSGhsLe3h5aWlqYOnVqsQciV2Q/z549w7hx4zB58uRiy8zMzCrcZiIiInoz5qqXmKuIiIiospirXmKuosrgwB8RUQOlpaUFa2vrCq2ro6MDExMTnDlzRmFqgTNnzihc2ePi4gKpVIoNGzaI84UDQJcuXZCZmYktW7aIUyxUhkQiQffu3dG9e3fMmzcP5ubm+OmnnxAQEADg5dVF//33HzQ0NAAAZ8+ehba2NkxNTdGsWTPIZDKkpqYq9KU6nDlzBh999BFGjBgB4OVDmv/880/Y2dmVul6bNm1w9OhRhbLz588rvO/UqROuX79e4Z8pERERVRxzFXMVERERVQ3mKuYqqjwO/BERUYUEBgZi/vz5sLKygoODA7Zu3YrExESFW/c1NDTQrVs3rF27Ft27d4eqqiqAl3OYv1r++hVT5REXF4fIyEj07dsXBgYGiIuLQ2ZmpsJUAfn5+fD398ecOXNw584dzJ8/HxMnToSKigoaN26ML7/8EtOmTUNRURF69OiBrKwsnDlzBjo6Ohg1alS525SSkoLExESFMhsbG9jY2GD//v2IiYlB06ZNsWrVKqSnp78xSI0bNw6rVq3CjBkz4O/vj8TERGzbtg3AyxAJADNmzEC3bt0wceJEfPrpp9DS0sL169cRERGBdevWlbsPREREVHOYq0rGXEVERETlwVxVMuaqhoMDf0REVCGTJ09GVlYWpk+fjoyMDNjZ2eHw4cOwsbFRqOfm5oY//vhDnC9dztXVFSdPnoSbm1ul2qGjo4M//vgDoaGhyM7Ohrm5OVauXIl+/fqJdfr06QMbGxu8++67yMvLg4+Pj8L88MHBwWjevDlCQkLw119/oUmTJujUqRNmzZpVoTbJr9x6VXR0NObMmYO//voLHh4e0NTUxGeffQZvb29kZWWVuj1LS0vs378f06dPx5o1a+Ds7IzZs2dj/Pjx4vQOHTp0wKlTpzB79mz07NkTgiDAysoKQ4cOrVAfiIiIqOYwV5WMuYqIiIjKg7mqZMxVDYdEKO8EuA1AdnY2dHV1kZWVBR0dnWrdl2PgD9W6faq4+OW+td0Eesvl5uYiJSUFlpaWUFdXr+3mUAlGjx6Np0+f4tChQ7XdlCq1ePFihIWF4d69e7XdlDqptL/fmswBDQFzFTFTUVkwV9UNzFWkDHNVzWGuIuYqKgvmqrqBuYqUqapcxTv+iIiI6oANGzagS5cu0NPTw5kzZ7B8+XJMnDixtptFREREVOcwVxERERFVDeaqtxMH/oiIiOqAW7du4X//+x+ePHkCMzMzTJ8+HUFBQbXdLCIiIqI6h7mKiIiIqGowV72dOPBHRET1mvyhwnXd6tWrsXr16tpuBhERETVgzFVEREREVYO5iqqTSm03gIiIiIiIiIiIiIiIiIgqjwN/RERERERERERERERERPUAB/6IiIiIiIiIiIiIiIiI6gEO/BERERERERERERERERHVAxz4IyIiIiIiIiIiIiIiIqoHOPBHREREREREREREREREVA9w4I+IiIrZtm0bmjRp8tbue/To0fD29q6R9tRHtfnzrUm9evXC1KlTa7sZRETUwDFX1W/MVURERDWHuap+Y66qOo2qdetERA1U6iL7Gt2f2bwr5ao/evRobN++HQCgpqYGMzMz+Pr6YtasWWjUqGo+Grp16wYHBweEhYWJZWFhYRg/fjy2bt2K0aNHK7QnOTkZ0dHRZdr2mjVrIAhClbSzqkkkEvz000+1HvSioqLg5uZWrHz27NmYPXs23n///WrZ3z///NMgQhoREdUc5irmKuYqIiKiqsFcxVzFXNUwcOCPiKiB8vT0xNatW5GXl4ejR49iwoQJUFNTQ1BQUJVs383NDT/99JNC2cmTJ2FqaoqoqCiFIBUVFYVRo0aVedu6urpV0saKEgQBhYWFVRY6S1NQUAA1NbUKr5+UlAQdHR3xvba2NjQ0NKChoVEVzSMiIiIwV1UGcxURERG9irmq4pirSI5TfRIRNVAymQxGRkYwNzfH+PHj4e7ujsOHDyvUOXbsGGxtbaGtrQ1PT088fPhQXFZUVIRFixahZcuWkMlkcHBwQHh4uLjczc0NSUlJSEtLE8tOnTqFmTNnIioqSixLSUnB3bt3i13tU9q+X586Yf/+/bC3t4eGhgb09PTg7u6OnJwchboLFy5E8+bNoaOjg88//xz5+fkKfQkJCYGlpSU0NDTQsWNH7N+/X1weFRUFiUSC3377DY6OjpDJZDh9+nQ5j/ibj9mdO3cgkUiwZ88euLq6Ql1dHTt37sTjx4/h4+ODFi1aQFNTE/b29vjxxx/LtE8DAwMYGRmJL21t7WJTJyxYsAAODg7YsWMHLCwsoKuri2HDhuHff/8t0zG6c+eO+PNr2rQpJBKJGJQtLCwQGhqq0CYHBwcsWLBAfC+RSPDdd9/h448/hqamJmxsbIr9Ll69ehX9+vWDtrY2DA0NMXLkSDx69EhcnpOTA19fX2hra8PY2BgrV64s0/EhIiKqCsxVzFVyzFVERESVw1zFXCXHXFVxHPgjIiIAgIaGhkK4eP78OVasWIEdO3bgjz/+QGpqKr788ktx+Zo1a7By5UqsWLECly9fhoeHB/r3749bt24BALp37w41NTWcPHkSAHD9+nX8999/8Pf3x+PHj5GSkgLg5VVV6urqcHZ2LvO+X/Xw4UP4+PhgzJgxuHHjBqKiojBgwACFqRUiIyPFZT/++CMOHjyIhQsXistDQkLwww8/ICwsDNeuXcO0adMwYsQInDp1SmFfM2fOxNKlS3Hjxg106NCh3Mf4Tcfs1f1MmTIFN27cgIeHB3Jzc+Ho6Ihff/0VV69exWeffYaRI0fi3Llz5W5DSZKTk3Ho0CEcOXIER44cwalTp7B06VJxeWnHyNTUFAcOHADw8oqthw8fYs2aNeXa/8KFCzFkyBBcvnwZ77//PoYPH44nT54AAJ4+fYrevXvjnXfewYULFxAeHo709HQMGTJEXD8wMBCnTp3Czz//jOPHjyMqKgoJCQlVcGSIiIjKj7mKuYq5ioiIqGowVzFXMVeVH6f6JCJq4ARBQGRkJI4dO4ZJkyaJ5QUFBQgLC4OVlRUAYOLEiVi0aJG4fMWKFZgxYwaGDRsGAFi2bBlOnjyJ0NBQrF+/HlpaWujatSuioqLg4+ODqKgo9OjRAzKZDC4uLoiKioKlpSWioqLg7OwMmUxW5n2/6uHDh3jx4gUGDBgAc3NzAIC9veKc9VKpFFu2bIGmpibatWuHRYsWITAwEMHBwSgoKMCSJUtw4sQJMcy1atUKp0+fxrfffgtXV1dxO4sWLcJ7771X4WP9pmMmN3XqVAwYMEBh3VeD5KRJk3Ds2DHs3bsXXbt2LXWfLVu2VHh/9+5dpfWKioqwbds2NG7cGAAwcuRIREZGYvHixcjLy3vjMWrWrBmAl1dsVWTO9NGjR8PHxwcAsGTJEnzzzTc4d+4cPD09sW7dOrzzzjtYsmSJWH/Lli0wNTXFn3/+CRMTE3z//ff4v//7P/Tp0wcAsH379mJ9JyIiqm7MVcxVAHMVERFRVWCuYq4CmKsqigN/REQN1JEjR6CtrY2CggIUFRXhk08+UbidXVNTUwwyAGBsbIyMjAwAQHZ2Nh48eIDu3bsrbLN79+64dOmS+L5Xr17Yt28fgJfTD/Tq1QsA4OrqiqioKPj5+SEqKgpjx45V2E5p+35dx44d0adPH9jb28PDwwN9+/bFoEGD0LRpU4U6mpqa4ntnZ2c8e/YM9+7dw7Nnz/D8+fNiASk/Px/vvPOOQlnnzp2VtqEsynrMlO2nsLAQS5Yswd69e3H//n3k5+cjLy9PoU8liY6OFsMRAIXj8ioLCwuFeq8e89u3b5f5GFXUq1ekaWlpQUdHR9z/pUuXcPLkSWhraxdbLzk5Gf/99x/y8/Ph5OQkljdr1gxt2rSpkrYRERG9CXMVc9WrmKuIiIgqjrmKuepVzFUVw4E/IqIGys3NDRs3boRUKoWJiUmxB/++/oBeiUSiMB1BWfexePFi3L9/H1FRUeJVQK6urvj222+RnJyMe/fuoXfv3hXet6qqKiIiIhATE4Pjx49j7dq1mD17NuLi4mBpafnGNj579gwA8Ouvv6JFixYKy169qgt4+QFfE17fz/Lly7FmzRqEhobC3t4eWlpamDp1qsJUFyWxtLQs0xVNyo55UVERgPIdo9epqKgU+9kVFBSUe/8ffvghli1bVmw9Y2Nj3L59u9Q2EBERVTfmqpeYq15iriIiIqo45qqXmKteYq6qGD7jj4iogdLS0oK1tTXMzMyKhag30dHRgYmJCc6cOaNQfubMGdjZ2YnvXVxcIJVKsWHDBnHebwDo0qULMjMzsWXLFnGKhcqQSCTo3r07Fi5ciIsXL0IqleKnn34Sl1+6dAn//fef+P7s2bPQ1taGqakp7OzsIJPJkJqaCmtra4WXqalppdr1qrIeM2XOnDmDjz76CCNGjEDHjh3RqlUr/Pnnn1XWtjcpyzGSSqUAXl7t9armzZsrPOg6OztbnC+/rDp16oRr167BwsKi2P61tLRgZWUFNTU1xMXFiev8888/NXqMiIioYWOuYq4qK+aqumnjxo3o0KEDdHR0oKOjA2dnZ/z222/i8l69ekEikSi8Pv/8c4VtpKamwsvLC5qamjAwMEBgYCBevHhR010hInrrMVcxV5UVc1XJeMcfERFVSGBgIObPnw8rKys4ODhg69atSExMxM6dO8U6Ghoa6NatG9auXYvu3btDVVUVwMsP3VfLX796pjzi4uIQGRmJvn37wsDAAHFxccjMzIStra1YJz8/H/7+/pgzZw7u3LmD+fPnY+LEiVBRUUHjxo3x5ZdfYtq0aSgqKkKPHj2QlZWFM2fOQEdHB6NGjSp3m1JSUpCYmKhQZmNjU6ZjpoyNjQ3279+PmJgYNG3aFKtWrUJ6evobA1hVKcsxMjc3h0QiwZEjR/D+++9DQ0MD2tra6N27N7Zt24YPP/wQTZo0wbx588Tfg7KaMGECNm/eDB8fH3z11Vdo1qwZbt++jd27d+O7776DtrY2/P39ERgYCD09PRgYGGD27NlQUeH1TUREVDcwV5WMuYq56m3QsmVLLF26FDY2NhAEAdu3b8dHH32Eixcvol27dgCAsWPHKjzn6dVpzgoLC+Hl5QUjIyPExMTg4cOH8PX1hZqamsJzgYiIqPKYq0rGXNVwchUH/oiIqEImT56MrKwsTJ8+HRkZGbCzs8Phw4dhY2OjUM/NzQ1//PGHOF+6nKurK06ePAk3N7dKtUNHRwd//PEHQkNDkZ2dDXNzc6xcuRL9+vUT6/Tp0wc2NjZ49913kZeXBx8fH4X54YODg9G8eXOEhITgr7/+QpMmTdCpUyfMmjWrQm0KCAgoVhYdHV3mY/a6OXPm4K+//oKHhwc0NTXx2WefwdvbG1lZWRVqX0W86Ri1aNECCxcuxMyZM+Hn5wdfX19s27YNQUFBSElJwQcffABdXV0EBweX+woq+ZVnM2bMQN++fZGXlwdzc3N4enqKYWn58uXiFAuNGzfG9OnTa/T4EBERVQZzVcmYq5ir3gYffvihwvvFixdj48aNOHv2rDjwp6mpCSMjI6XrHz9+HNevX8eJEydgaGgIBwcHBAcHY8aMGViwYIF4NwIREVUec1XJmKsaTq6SCOWdALcByM7Ohq6uLrKysqCjo1Ot+3IM/KFat08VF7/ct7abQG+53NxcpKSkwNLSEurq6rXdHCrB6NGj8fTpUxw6dKi2m0JvkdL+fmsyBzQEzFXETEVlwVxVNzBXkTINLVcVFhZi3759GDVqFC5evAg7Ozv06tUL165dgyAIMDIywocffoi5c+eKd/3NmzcPhw8fVrjLIiUlBa1atUJCQgLeeeedMu2buYqYq6gsmKvqBuYqUqaqchXv+CMiIiIiIiIiIirFlStX4OzsjNzcXGhra+Onn34SpzL75JNPYG5uDhMTE1y+fBkzZsxAUlISDh48CABIS0uDoaGhwvbk79PS0krcZ15eHvLy8sT32dnZVd0tIiIiqoc48EdERERERERERFSKNm3aIDExEVlZWdi/fz9GjRqFU6dOwc7ODp999plYz97eHsbGxujTpw+Sk5NhZWVV4X2GhIRg4cKFVdF8IiIiakAa9tOZiYio3tu2bRunTaB6Y/369bCwsIC6ujqcnJxw7ty5Uuvv27cPbdu2hbq6Ouzt7XH06FGF5QsWLEDbtm2hpaWFpk2bwt3dHXFxcQp1njx5guHDh0NHRwdNmjSBv78/nj17VuV9IyKitx9zFTVkUqkU1tbWcHR0REhICDp27Ig1a9Yorevk5AQAuH37NgDAyMgI6enpCnXk70t6LiAABAUFISsrS3zdu3evKrpCRERvAeYqqk4c+CMiIiKqA/bs2YOAgADMnz8fCQkJ6NixIzw8PJCRkaG0fkxMDHx8fODv74+LFy/C29sb3t7euHr1qlindevWWLduHa5cuYLTp0/DwsICffv2RWZmplhn+PDhuHbtGiIiInDkyBH88ccfCle1ExERETVERUVFCtNwvkr+LD9jY2MAgLOzM65cuaKQ2yIiIqCjoyNOF6qMTCaDjo6OwouIiIjoTTjwR0RERFQHrFq1CmPHjoWfnx/s7OwQFhYGTU1NbNmyRWn9NWvWwNPTE4GBgbC1tUVwcDA6deqEdevWiXU++eQTuLu7o1WrVmjXrh1WrVqF7OxsXL58GQBw48YNhIeH47vvvoOTkxN69OiBtWvXYvfu3Xjw4EGN9JuIiIiotgUFBeGPP/7AnTt3cOXKFQQFBSEqKgrDhw9HcnIygoODER8fjzt37uDw4cPw9fXFu+++iw4dOgAA+vbtCzs7O4wcORKXLl3CsWPHMGfOHEyYMAEymayWe0dERET1DQf+iIgqqaioqLabQETlVNf+bvPz8xEfHw93d3exTEVFBe7u7oiNjVW6TmxsrEJ9APDw8Cixfn5+PjZt2gRdXV107NhR3EaTJk3QuXNnsZ67uztUVFSKTQlKRFQV6tq/z0TUMP5uMzIy4OvrizZt2qBPnz44f/48jh07hvfeew9SqRQnTpxA37590bZtW0yfPh0DBw7EL7/8Iq6vqqqKI0eOQFVVFc7OzhgxYgR8fX2xaNGiWuwVEdV3DeHfZ6L6pqr+bhtVyVaIiBogqVQKFRUVPHjwAM2bN4dUKoVEIqntZhFRKQRBQH5+PjIzM6GiogKpVFrbTSqTR48eobCwEIaGhgrlhoaGuHnzptJ10tLSlNZPS0tTKDty5AiGDRuG58+fw9jYGBEREdDX1xe3YWBgoFC/UaNGaNasWbHtyOXl5SlMe5WdnV22ThJRg8ZcRVT31NVcVRHff/99ictMTU1x6tSpN27D3Ny82POWiYiqA3MVUd1T1bmKA39ERBWkoqICS0tLPHz4kFPeEdUxmpqaMDMzg4oKJz9wc3NDYmIiHj16hM2bN2PIkCGIi4srNuBXViEhIVi4cGEVt5KI6jvmKqK6i7mKiOjtwlxFVHdVVa7iwB8RUSVIpVKYmZnhxYsXKCwsrO3mEFEZqKqqolGjRnXqikd9fX2oqqoiPT1doTw9PR1GRkZK1zEyMipTfS0tLVhbW8Pa2hrdunWDjY0Nvv/+ewQFBcHIyAgZGRkK9V+8eIEnT56UuN+goCAEBASI77Ozs2FqalrmvhJRw8VcRVT31MVcRUTUEDBXEdU9VZmrOPBHRFRJEokEampqUFNTq+2mEFE9JZVK4ejoiMjISHh7ewN4Oe97ZGQkJk6cqHQdZ2dnREZGYurUqWJZREQEnJ2dS91XUVGROFWns7Mznj59ivj4eDg6OgIAfv/9dxQVFcHJyUnp+jKZDDKZrJw9JCJ6ibmKiIiIqGowVxE1XBz4IyIiIqoDAgICMGrUKHTu3Bldu3ZFaGgocnJy4OfnBwDw9fVFixYtEBISAgCYMmUKXF1dsXLlSnh5eWH37t24cOECNm3aBADIycnB4sWL0b9/fxgbG+PRo0dYv3497t+/j8GDBwMAbG1t4enpibFjxyIsLAwFBQWYOHEihg0bBhMTk9o5EEREREREREREVCIO/BERERHVAUOHDkVmZibmzZuHtLQ0ODg4IDw8HIaGhgCA1NRUhTngXVxcsGvXLsyZMwezZs2CjY0NDh06hPbt2wN4OYXEzZs3sX37djx69Ah6enro0qULoqOj0a5dO3E7O3fuxMSJE9GnTx+oqKhg4MCB+Oabb2q280REREREREREVCYc+CMiIiKqIyZOnFji1J5RUVHFygYPHizevfc6dXV1HDx48I37bNasGXbt2lWudhIRERERERERUe1QeXMVIiIiIiIiIiIiIiIiInrbceCPiIiIiIiIiIiIiIiIqB7gwB8RERERERERERERERFRPcCBPyIiIiIiIiIiIiIiIqJ6gAN/RERERERERERERERERPUAB/6IiIiIiIiIiIiIiIiI6gEO/BERERERERERERERERHVA2/FwN/69ethYWEBdXV1ODk54dy5c6XW37dvH9q2bQt1dXXY29vj6NGjCstHjx4NiUSi8PL09KzOLhARERERERERERERERHVqlof+NuzZw8CAgIwf/58JCQkoGPHjvDw8EBGRobS+jExMfDx8YG/vz8uXrwIb29veHt74+rVqwr1PD098fDhQ/H1448/1kR3iIiIiIiIiIiIiIiIiGpFrQ/8rVq1CmPHjoWfnx/s7OwQFhYGTU1NbNmyRWn9NWvWwNPTE4GBgbC1tUVwcDA6deqEdevWKdSTyWQwMjISX02bNq2J7hARERERERERERERERHVilod+MvPz0d8fDzc3d3FMhUVFbi7uyM2NlbpOrGxsQr1AcDDw6NY/aioKBgYGKBNmzYYP348Hj9+XPUdICIiIiIiIiIiIiIiInpLNKrNnT969AiFhYUwNDRUKDc0NMTNmzeVrpOWlqa0flpamvje09MTAwYMgKWlJZKTkzFr1iz069cPsbGxUFVVLbbNvLw85OXlie+zs7Mr0y0iIiIiIiIiIiIiIiKiGlerA3/VZdiwYeL/29vbo0OHDrCyskJUVBT69OlTrH5ISAgWLlxYk00kIiIiIiIiIiIiIiIiqlK1OtWnvr4+VFVVkZ6erlCenp4OIyMjpesYGRmVqz4AtGrVCvr6+rh9+7bS5UFBQcjKyhJf9+7dK2dPiIiIiIiIiIiIiIiIiGpXrQ78SaVSODo6IjIyUiwrKipCZGQknJ2dla7j7OysUB8AIiIiSqwPAH///TceP34MY2NjpctlMhl0dHQUXkRERERERERERERERER1Sa0O/AFAQEAANm/ejO3bt+PGjRsYP348cnJy4OfnBwDw9fVFUFCQWH/KlCkIDw/HypUrcfPmTSxYsAAXLlzAxIkTAQDPnj1DYGAgzp49izt37iAyMhIfffQRrK2t4eHhUSt9JCIiIiIiIiIiIiIiIqputf6Mv6FDhyIzMxPz5s1DWloaHBwcEB4eDkNDQwBAamoqVFT+3/iki4sLdu3ahTlz5mDWrFmwsbHBoUOH0L59ewCAqqoqLl++jO3bt+Pp06cwMTFB3759ERwcDJlMVit9JCIiIiIiIiIiIiIiIqputT7wBwATJ04U79h7XVRUVLGywYMHY/DgwUrra2ho4NixY1XZPCIiIiIiIiIiIiIiIqK3Xq1P9UlERERERERERERERERElceBPyIiIiIiIiIiIiIiIqJ6gAN/RERERERERERERERERPUAB/6IiIiIiIiIiIiIiIiI6gEO/BERERERERERERERERHVAxz4IyIiIiIiIiIiIiIiIqoHOPBHREREREREREREREREVA9w4I+IiIiIiIiIiIiIiIioHuDAHxEREREREREREREREVE9wIE/IiIiIiIiIiIiIiIionqAA39ERERERERERERERERE9QAH/oiIiIiIiIiIiIiIiIjqAQ78EREREREREREREREREdUDHPgjIiIiIiIiIiIiIiIiqgc48EdERERERERERFSCjRs3okOHDtDR0YGOjg6cnZ3x22+/ictzc3MxYcIE6OnpQVtbGwMHDkR6errCNlJTU+Hl5QVNTU0YGBggMDAQL168qOmuEBERUQPAgT8iIiIiIiIiIqIStGzZEkuXLkV8fDwu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BggMDMSLFy9qsitERETUANT6HX9ERERERERERERvq1OnTmHChAno0qULXrx4gVmzZqFv3764fv06tLS0xHpjx47FokWLxPeampri/xcWFsLLywtGRkaIiYnBw4cP4evrCzU1NSxZsqRG+0NERET1Gwf+iIiIiIiIiIiIShAeHq7wftu2bTAwMEB8fDzeffddsVxTUxNGRkZKt3H8+HFcv34dJ06cgKGhIRwcHBAcHIwZM2ZgwYIFkEql1doHIiIiajjeiqk+iYiIiIiIiIiI6oKsrCwAQLP/r717D6uyyv///9qIHDwAIcoGU1HTkFQ8kIhjKUmCmkU5eMhJNL86NlIqkzaYeawwU9OUIps8zcToOB81M2NClLRASowxS5k0DUs3nhIUExD27w9/7mknKCqwcft8XNd9jfda73vd78Ule1a+971uT0+r9vfff19eXl5q37694uLidOHCBUtfRkaGOnToIG9vb0tbeHi4CgoK9M0335R7n6KiIhUUFFgdAAAA18MTfwAAAAAAAEAllJWVaeLEifrd736n9u3bW9qffPJJtWjRQr6+vtq7d69eeOEF5eTkaP369ZIkk8lkVfSTZDk3mUzl3is+Pl6zZs2qppkAAAB7ReEPAAAAAAAAqITx48dr3759+uyzz6zax44da/lzhw4d5OPjoz59+ujQoUNq3br1Td0rLi5OsbGxlvOCggI1a9bs5hIHAAB3DLb6BAAAAAAAAK4jJiZGmzdv1vbt23X33XdfMzY4OFiSdPDgQUmS0WhUXl6eVcyV84reC+js7Cw3NzerAwAA4Hp44g8AAAAAAFSb3NkdbJ0CytF8+te2TuG2YTab9eyzz2rDhg1KS0tTy5Ytr3tNdna2JMnHx0eSFBISoldeeUUnTpxQkyZNJEkpKSlyc3NTQEBAteUOAADuPBT+AAAAAAAAgAqMHz9eSUlJ+uCDD9SwYUPLO/nc3d3l6uqqQ4cOKSkpSf3791ejRo20d+9eTZo0SQ8++KA6duwoSerbt68CAgL01FNPad68eTKZTJo2bZrGjx8vZ2dnW04PAADYGbb6BAAAAAAAACrw9ttvKz8/X71795aPj4/lWLt2rSTJyclJW7duVd++feXv768///nPGjRokD788EPLGHXq1NHmzZtVp04dhYSE6A9/+INGjBih2bNn22paAADATlH4A2q5hIQE+fn5ycXFRcHBwfriiy+uGb9u3Tr5+/vLxcVFHTp00JYtW6z6Z86cKX9/f9WvX1933XWXwsLClJmZaRXj5+cng8FgdcydO7fK54bag79nAAAAAFA+s9lc7jFy5EhJUrNmzfTpp5/q9OnTunjxor777jvNmzfvqnfytWjRQlu2bNGFCxd08uRJzZ8/X46ObMYFAACqFoU/oBZbu3atYmNjNWPGDO3Zs0eBgYEKDw/XiRMnyo1PT0/XsGHDNHr0aH311VeKjIxUZGSk9u3bZ4lp27atli5dqq+//lqfffaZ/Pz81LdvX508edJqrNmzZ+v48eOW49lnn63WucJ2+HsGAAAAAAAAAPaBwh9Qiy1cuFBjxozRqFGjFBAQoMTERNWrV0/Lly8vN37x4sWKiIjQ5MmT1a5dO82ZM0ddunTR0qVLLTFPPvmkwsLC1KpVK913331auHChCgoKtHfvXquxGjZsKKPRaDnq169frXOF7fD3DAAAAAAAAADsA4U/oJYqLi5WVlaWwsLCLG0ODg4KCwtTRkZGuddkZGRYxUtSeHh4hfHFxcVatmyZ3N3dFRgYaNU3d+5cNWrUSJ07d9brr7+uS5cu3eKMUBvx96z2s8U2rFcUFRWpU6dOMhgMys7OrqopAQAAAAAAAKgmFP6AWurUqVMqLS2Vt7e3Vbu3t7dMJlO515hMpkrFb968WQ0aNJCLi4veeOMNpaSkyMvLy9L/3HPPac2aNdq+fbv++Mc/6tVXX9WUKVOqaGaoTfh7VrvZchtWSZoyZYp8fX2rbX4AAAAAAAAAqhaFP+AOFBoaquzsbKWnpysiIkKDBw+2KiTExsaqd+/e6tixo8aNG6cFCxZoyZIlKioqsmHWuN3w9+zW2XIb1o8//liffPKJ5s+fX61zBAAAAAAAAFB1KPwBtZSXl5fq1KmjvLw8q/a8vDwZjcZyrzEajZWKr1+/vu655x51795d7733nhwdHfXee+9VmEtwcLAuXbqkI0eO3NxkUGvx96z2suU2rHl5eRozZoz+9re/qV69elUwGwAAAMA2SkpKdPToUeXk5OjMmTO2TgcAAKDaUfgDaiknJyd17dpVqamplraysjKlpqYqJCSk3GtCQkKs4iUpJSWlwvhfj3utp6yys7Pl4OCgJk2a3MAMcDvg71ntZattWM1ms0aOHKlx48YpKCioCmcEAAAA1Ixz587p7bffVq9eveTm5iY/Pz+1a9dOjRs3VosWLTRmzBh9+eWXtk4TAACgWjjaOgEAFYuNjVV0dLSCgoLUrVs3LVq0SIWFhRo1apQkacSIEWratKni4+MlSRMmTFCvXr20YMECDRgwQGvWrNHu3bu1bNkySVJhYaFeeeUVPfroo/Lx8dGpU6eUkJCgn376SVFRUZIuPzGUmZmp0NBQNWzYUBkZGZo0aZL+8Ic/6K677rLNDwLVir9nd54r27CeOnVK7777rgYPHqzMzEw1adJES5Ys0blz5xQXF2frNAEAAIAbtnDhQr3yyitq3bq1Bg4cqKlTp8rX11eurq46c+aM9u3bp507d6pv374KDg7WkiVL1KZNG1unDQAAUGUo/AG12JAhQ3Ty5ElNnz5dJpNJnTp1UnJysuWJntzcXDk4/O/B3R49eigpKUnTpk3T1KlT1aZNG23cuFHt27eXJNWpU0cHDhzQqlWrdOrUKTVq1Ej333+/du7cqfvuu0+S5OzsrDVr1mjmzJkqKipSy5YtNWnSJMXGxtb8DwA1gr9ntVNNbMN6ZSvWNm3a6L333lNcXJy2bdumjIwMOTs7W10TFBSk4cOHa9WqVVUwOwAAAKB6fPnll9qxY4flvz1+q1u3bnr66aeVmJioFStWaOfOnRT+AACAXTGYzWazrZOobQoKCuTu7q78/Hy5ublV6726Tl5drePj5mW9PsLWKQC4wwUHB6tbt25asmSJpMvbpTZv3lwxMTH6y1/+clX8kCFDdOHCBX344YeWth49eqhjx45KTEys8D6tW7fWU089pZkzZyo3N1cFBQWWvmPHjik8PFz/+te/FBwcrLvvvrsKZ1g71eQ64EYlJCTo9ddfl8lkUmBgoJYsWaJu3bpVGL9u3Tq99NJLOnLkiNq0aaPXXntN/fv3l3T5fTfTpk3Tli1b9P3338vd3V1hYWGaO3eufH19LWOcOXNGzz77rD788EM5ODho0KBBWrx4sRo0aFCpnFlXYUPD122dAirQfPrXtk6hSvEZUHvxOVA71cRnQG1eV92OWFeBf6sCgDvXjawDeMcfAAC1VGxsrN59912tWrVK+/fv1zPPPHPVNqy/3pJzwoQJSk5O1oIFC3TgwAHNnDlTu3fvVkxMjKTL27BOnTpVu3bt0g8//KCsrCw9/fTTVtuwNm/eXO3bt7ccbdu2lXS5OHgnFP1qs7Vr1yo2NlYzZszQnj17FBgYqPDwcJ04caLc+PT0dA0bNkyjR4/WV199pcjISEVGRmrfvn2SpAsXLmjPnj166aWXtGfPHq1fv145OTl69NFHrcYZPny4vvnmG6WkpGjz5s3asWOHxo4dW+3zBQAAqGoFBQXauHGj9u/fb+tUAAAAqg1bfQIAUEvZYhtW1F4LFy7UmDFjLIXfxMREffTRR1q+fHm5T4AuXrxYERERmjx5siRpzpw5SklJ0dKlS5WYmCh3d3elpKRYXbN06VJ169ZNubm5at68ufbv36/k5GR9+eWXCgoKkiQtWbJE/fv31/z5862eDAQAAKhtBg8erAcffFAxMTH65ZdfFBQUpCNHjshsNmvNmjUaNGiQrVMEAACochT+AACoxWJiYixP7P1WWlraVW1RUVGWp/d+y8XFRevXr7+h+/v5+YldwW2vuLhYWVlZVk94Ojg4KCwsTBkZGeVek5GRcdV7M8PDw7Vx48YK75Ofny+DwSAPDw/LGB4eHpainySFhYXJwcFBmZmZevzxx68ao6ioSEVFRZbzX28dCwAAUJN27NihF198UZK0YcMGmc1mnT17VqtWrdLLL79M4Q8AANgltvoEAACo5U6dOqXS0lLL055XeHt7y2QylXuNyWS6ofiLFy/qhRde0LBhwyx7xZtMJjVp0sQqztHRUZ6enhWOEx8fL3d3d8vRrFmzSs0RAACgquXn58vT01OSlJycrEGDBqlevXoaMGCAvvvuOxtnBwAAUD0o/AEAANzhSkpKNHjwYJnNZr399tu3NFZcXJzy8/Mtx9GjR6soSwAAgBvTrFkzZWRkqLCwUMnJyerbt68k6eeff5aLi4uNswMAAKgebPUJAABQy3l5ealOnTrKy8uzas/Ly5PRaCz3GqPRWKn4K0W/H374Qdu2bbM87XdljBMnTljFX7p0SWfOnKnwvs7OznJ2dq703AAAAKrLxIkTNXz4cDVo0EAtWrRQ7969JV3eArRDhw62TQ4AAKCaUPgDABvqOnm1rVNABbJeH2HrFAALJycnde3aVampqYqMjJQklZWVKTU1tcJ3QIaEhCg1NVUTJ060tKWkpCgkJMRyfqXo991332n79u1q1KjRVWOcPXtWWVlZ6tq1qyRp27ZtKisrU3BwcNVOEgAAoIr96U9/UnBwsHJzc/Xwww/LweHyxletWrXSyy+/bOPsAAAAqgeFP6ACubP59l9t1Hz617ZOAQBsIjY2VtHR0QoKClK3bt20aNEiFRYWatSoUZKkESNGqGnTpoqPj5ckTZgwQb169dKCBQs0YMAArVmzRrt379ayZcskXS76/f73v9eePXu0efNmlZaWWt7b5+npKScnJ7Vr104REREaM2aMEhMTVVJSopiYGA0dOlS+vr62+UEAAADcgK5du1q+wHTFgAEDbJQNAABA9auyd/xdvHhR8+fPr6rhAAAA8CtDhgzR/PnzNX36dHXq1EnZ2dlKTk6Wt7e3JCk3N1fHjx+3xPfo0UNJSUlatmyZAgMD9a9//UsbN25U+/btJUk//fSTNm3apB9//FGdOnWSj4+P5UhPT7eM8/7778vf3199+vRR//791bNnT0vxEAAAoLaZO3eufvnll0rFZmZm6qOPPqrmjAAAAGrWDT3xd/LkSWVmZsrJyUl9+vRRnTp1VFJSorfeekvx8fG6dOmSnn/++erKFQCAGsNTv7XTnf7Ub0xMTIVbe6alpV3VFhUVpaioqHLj/fz8ZDabr3tPT09PJSUl3VCeAAAAtvLtt9+qefPmioqK0sCBAxUUFKTGjRtLuvyu4m+//VafffaZ/v73v+vYsWNavZrXLwAAAPtS6Sf+PvvsM7Vp00aPPvqo+vXrpx49eujbb7/Vfffdp3feeUczZ87U0aNHqzNXAAAAu8BOCQAAANVj9erV2rp1q0pKSvTkk0/KaDTKyclJDRs2lLOzszp37qzly5drxIgROnDggB588EFbpwwAAFClKv3E37Rp09S/f39NnTpVq1at0oIFC/T444/r1Vdf1e9///vqzBEAAOC2w04JAAAAthEYGKh3331X77zzjvbu3asffvhBv/zyi7y8vNSpUyd5eXnZOkUAAIBqU+nC39dff6233npLAQEBmj17thYuXKh58+bpscceq878AAAAbjufffaZHnnkERUUFMhgMCgoKEgrVqxQZGSkHB0dNXPmTEVHR9s6TQAAALvm4OCgTp06qVOnTrZOBQAAoMZUeqvPn3/+2fKNKFdXV9WrV0/t27evtsQAAABuV1d2Sti7d69iY2P15ZdfWnZK+PbbbzVu3Di5urraOk0AAAAAAADYmUo/8SddfkGyyWSSJJnNZuXk5KiwsNAqpmPHjlWXHQAAwG2InRIA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M2fO1KpVq/TBBx9Y7puWllYTPzIAAIBysa4CAACoGqyrANQWFP4A2IWHHnpIgYGBWr9+vSTJwcFBb775pr755hutWrVK27Zt05QpUyRJPXr00KJFi+Tm5qbjx4/r+PHjev755yVJJSUlmjNnjv7zn/9o48aNOnLkiEaOHGm5z0svvaRvv/1WH3/8sfbv36+3335bXl5elmvDw8PVsGFD7dy5U59//rkaNGigiIgIFRcX6/nnn9fgwYMt3wA7fvy4evToUbM/KAAAgOtgXQUAAFA1WFcBsAVHWycAAFXF399fe/fulSRNnDjR0u7n56eXX35Z48aN01tvvSUnJye5u7vLYDDIaDRajfH0009b/tyqVSu9+eabuv/++3X+/Hk1aNBAubm56ty5s4KCgixjX7F27VqVlZXpr3/9qwwGgyRpxYoV8vDwUFpamvr27StXV1cVFRVddV8AAIDahHUVAABA1WBdBaCm8cQfALthNpstC5itW7eqT58+atq0qRo2bKinnnpKp0+f1oULF645RlZWlgYOHKjmzZurYcOG6tWrlyQpNzdXkvTMM89ozZo16tSpk6ZMmaL09HTLtf/5z3908OBBNWzYUA0aNFCDBg3k6empixcv6tChQ9U0awAAgKrHugoAAKBqsK4CUNMo/AGwG/v371fLli115MgRPfLII+rYsaP+7//+T1lZWUpISJAkFRcXV3h9YWGhwsPD5ebmpvfff19ffvmlNmzYYHVdv3799MMPP2jSpEk6duyY+vTpY9l24fz58+ratauys7Otjv/+97968sknq3n2AAAAVYd1FQAAQNVgXQWgprHVJwC7sG3bNn399deaNGmSsrKyVFZWpgULFsjB4fL3G/75z39axTs5Oam0tNSq7cCBAzp9+rTmzp2rZs2aSZJ279591b0aN26s6OhoRUdH64EHHtDkyZM1f/58denSRWvXrlWTJk3k5uZWbp7l3RcAAKA2YV0FAABQNVhXAbAFnvgDcNspKiqSyWTSTz/9pD179ujVV1/VY489pkceeUQjRozQPffco5KSEi1ZskTff/+9/va3vykxMdFqDD8/P50/f16pqak6deqULly4oObNm8vJycly3aZNmzRnzhyr66ZPn64PPvhABw8e1DfffKPNmzerXbt2kqThw4fLy8tLjz32mHbu3KnDhw8rLS1Nzz33nH788UfLfffu3aucnBydOnVKJSUlNfNDAwAAKAfrKgAAgKrBugpArWEGgNtIdHS0WZJZktnR0dHcuHFjc1hYmHn58uXm0tJSS9zChQvNPj4+ZldXV3N4eLh59erVZknmn3/+2RIzbtw4c6NGjcySzDNmzDCbzWZzUlKS2c/Pz+zs7GwOCQkxb9q0ySzJ/NVXX5nNZrN5zpw55nbt2pldXV3Nnp6e5scee8z8/fffW8Y8fvy4ecSIEWYvLy+zs7OzuVWrVuYxY8aY8/PzzWaz2XzixAnzww8/bG7QoIFZknn79u3V/SMDAAAoF+sqAACAqsG6CkBtYjCbzeaaLjYCAAAAAAAAAAAAqFps9QkAAAAAAAAAAADYAQp/AAAAAAAAAAAAgB2g8AcAAAAAAAAAAADYAQp/AAAAAAAAAAAAgB2g8AcAAAAAAAAAAADYAQp/AAAAAAAAAAAAgB2g8AcAAAAAAAAAAADYAQp/AAAAAAAAAAAAgB2g8AcAAAAAAAAAAADYAQp/AAAAAAAAAAAAgB2g8AcAAAAAAAAAAADYAQp/AAAAAAAAAAAAgB34/wBHFDxvZGCBWAAAAABJRU5ErkJggg==\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# @title 10. πŸ“ So sΓ‘nh chi tiαΊΏt Predicted vs Reference\n", "from IPython.display import display\n", "\n", "def style_detailed_df(df, title):\n", " print(f\"\\nπŸ“ {title}:\")\n", " # Wrap text and add styling for better readability\n", " styler = df.head(20).style.set_properties(**{\n", " 'text-align': 'left',\n", " 'white-space': 'pre-wrap',\n", " 'max-width': '450px',\n", " 'font-family': 'JetBrains Mono, monospace',\n", " 'font-size': '13px'\n", " }).set_table_styles([\n", " {'selector': 'th', 'props': [('background-color', '#e9ecef'), ('text-align', 'center'), ('font-weight', 'bold')]},\n", " {'selector': 'td', 'props': [('border', '1px solid #dee2e6'), ('padding', '10px')]}\n", " ]).hide(axis='index')\n", " display(styler)\n", "\n", "style_detailed_df(df_vlsp_detail, \"VLSP 2020: 20 Samples Comparison\")\n", "style_detailed_df(df_fosd_detail, \"FPT FOSD: 20 Samples Comparison\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "3Efnlpf6dfHV", "outputId": "6b2743a3-485e-4016-8074-e6afe0d09ea7" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "πŸ“ VLSP 2020: 20 Samples Comparison:\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ReferencePhoWhisper LargePhoWhisper Lora Finetuned
hΓ΄n thΓͺ hΓ΄n phu cΓ³ nghΔ©a lΓ  chΖ°a cΓ³ cΓ‘i giαΊ₯y hΓ΄n thΓΊ nαΊΏu mΓ  vαΊ­y thΓ¬ kαΊΏt cα»₯c bαΊ£o lΓ£nh phαΊ£i lΓ m coi nhΖ° lΓ  cΓ‘i người mΓ  được bαΊ£o lΓ£nh hoαΊ·c phαΊ£i ở nΖ°α»›c ngoΓ i con cΓ‘i họ khΓ΄nghΓ΄n thΓͺ hΓ΄n phu cΓ³ nghΔ©a lΓ  chΖ°a cΓ³ cΓ‘i giαΊ₯y hΓ΄n thΓΊ nαΊΏu mΓ  vαΊ­y thΓ¬ kαΊΏt cα»₯c bαΊ£o lΓ£nh phαΊ£i lΓ m coi nhΖ° lΓ  cΓ‘i người mΓ  được bαΊ£o lΓ£nh hoαΊ·c phαΊ£i ở nΖ°α»›c ngoΓ ihΓ΄n thΓͺ hΓ΄n phu cΓ³ nghΔ©a lΓ  chΖ°a cΓ³ cΓ‘i giαΊ₯y hΓ΄n thΓΊ nαΊΏu mΓ  vαΊ­y thΓ¬ kαΊΏt cα»₯c bαΊ£o lΓ£nh phαΊ£i lΓ m coi nhΖ° lΓ  cΓ‘i người mΓ  được bαΊ£o lΓ£nh hoαΊ·c phαΊ£i ở nΖ°α»›c ngoΓ i hoαΊ·c cΓ‘i họ khΓ΄ng cΓ³
theo bΓ  Δ‘Γ’y lΓ  mα»™t sα»± thαΊ­t Δ‘Γ£ được thα»«a nhαΊ­n rα»™ng rΓ£itheo bΓ  Δ‘Γ’y lΓ  mα»™t sα»± thαΊ­t Δ‘Γ£ được thα»«a nhαΊ­n rα»™ng rΓ£itheo bΓ  Δ‘Γ’y lΓ  mα»™t sα»± thαΊ­t Δ‘Γ£ được thα»«a nhαΊ­n rα»™ng rΓ£i
tΖ°α»›ng cam pu chia cΓ²n yΓͺu cαΊ§u thα»§ tΖ°α»›ng sinh ga po phαΊ£i Δ‘iều chỉnh phΓ‘t biểu khΓ΄ng Δ‘ΓΊng sα»± thαΊ­t chΓΊt nΓ o nΓ y theo lời Γ΄ngtΖ°α»›ng cam pu chia cΓ²n yΓͺu cαΊ§u thα»§ tΖ°α»›ng singapore phαΊ£i Δ‘iều chỉnh phΓ‘t biểu khΓ΄ng Δ‘ΓΊng sα»± thαΊ­t chΓΊt nΓ o nΓ y theo lời Γ΄ngtΖ°α»›ng cam pu chia cΓ²n yΓͺu cαΊ§u thα»§ tΖ°α»›ng sinh ga po phαΊ£i Δ‘iều chỉnh phΓ‘t biểu khΓ΄ng Δ‘ΓΊng sα»± thαΊ­t chΓΊt nΓ o nΓ y theo lời Γ΄ng
nΓ³ lΓ m người dΓ’n mαΊ·c dΓΉ nhΓ¬n thΓ¬ rαΊ₯t bΓ¬nh thường nhΖ°ng mΓ  rαΊ₯t rαΊ₯t lΓ  rα»™n rΓ ng tα»« tα»« trΓͺn cΓ‘c đường phα»‘ vΓ  trΓͺn mα»—i con mα»—i con ngườinΓ³ lΓ m người dΓ’n mαΊ·c dΓΉ nhΓ¬n thΓ¬ rαΊ₯t bΓ¬nh thường nhΖ°ng mΓ  rαΊ₯t rαΊ₯t rα»™n rΓ ng tα»« tα»« trΓͺn cΓ‘c đường phα»‘ vΓ  trΓͺn mα»—i con mα»—i con ngườinΓ³ lΓ m người dΓ’n mαΊ·c dΓΉ nhΓ¬n thΓ¬ rαΊ₯t bΓ¬nh thường nhΖ°ng mΓ  rαΊ₯t rαΊ₯t lΓ  rα»™n rΓ ng tα»« tα»« tα»« trΓͺn cΓ‘c đường phα»‘ vΓ  trΓͺn mα»—i con mα»—i con người
bΓ’y giờ mΓ¬nh nΓ³i tα»« thαΊ» xanh hai nΔƒm tα»›i thαΊ» xanh vΔ©nh viα»…n minh Δ‘ang ờ nΓ³i về thαΊ» xanh nhΖ°ng mΓ  cΓ³ quΓ‘ nhiều cΓ’u hỏibΓ’y giờ mΓ¬nh nΓ³i tα»« thαΊ» xanh hai nΔƒm tα»›i thαΊ» xanh vΔ©nh viα»…n mΓ¬nh Δ‘ang nΓ³i về thαΊ» xanh nhΖ°ng mΓ  cΓ³ quΓ‘ nhiều cΓ’u hỏibΓ’y giờ mΓ¬nh nΓ³i tα»« thαΊ» xanh hai nΔƒm tα»›i thαΊ» xanh vΔ©nh viα»…n mΓ¬nh Δ‘ang nΓ³i về thαΊ» xanh nhΖ°ng mΓ  cΓ³ quΓ‘ nhiều cΓ’u hỏi
mọi người Δ‘Γ£ thα»­ cΓ‘c kiểu Δƒn kiΓͺng vΓ  luyện tαΊ­p khΓ‘c nhau mΓ  khΓ΄ng hiệu quαΊ£ họ thαΊ₯y nαΊΏch kα»‹t nhΖ° mα»™t cΓ‘ch để thαΊ₯y được sα»± rΓ΅ rΓ ng hΖ‘n về nhα»―ng gΓ¬ Δ‘ang thay Δ‘α»•i trΓͺn cΖ‘ thể cα»§a họmọi người Δ‘Γ£ thα»­ cΓ‘c kiểu Δƒn kiΓͺng vΓ  luyện tαΊ­p khΓ‘c nhau mΓ  khΓ΄ng hiệu quαΊ£ họ thαΊ₯y nαΊΏch kα»‹t nhΖ° mα»™t cΓ‘ch để thαΊ₯y được sα»± rΓ΅ rΓ ng hΖ‘n về nhα»―ng gΓ¬ Δ‘ang thay Δ‘α»•i trΓͺn cΖ‘ thể cα»§a họmọi người Δ‘Γ£ thα»­ cΓ‘c kiểu Δƒn kiΓͺng vΓ  luyện tαΊ­p khΓ‘c nhau mΓ  khΓ΄ng hiệu quαΊ£ họ thαΊ₯y nαΊΏch kα»‹t nhΖ° mα»™t cΓ‘ch để thαΊ₯y được sα»± rΓ΅ rΓ ng hΖ‘n về nhα»―ng gΓ¬ Δ‘ang thay Δ‘α»•i trΓͺn cΖ‘ thể cα»§a họ
khi chΓΊng tΓ΄i về Δ‘αΊΏn Δ‘Γ³ thΓ¬ thαΊ₯y gαΊ§n tα»‘i rα»“i chΓΊng tΓ΄i nghΔ© rαΊ±ng lΓ  cαΊ§n phαΊ£i cΓ³ sα»± an toΓ n Δ‘α»‘i vα»›i người dΓ’n lΓ  trΓͺn hαΊΏt hai nα»―a thΓ¬ chΓΊng tΓ΄i cΕ©ng nhαΊ­n được sα»± gΓ³p Γ½ cα»§a anh em linh mα»₯c vΓ  cα»§a bề trΓͺn thΓ¬ chΓΊng tΓ΄i quyαΊΏt Δ‘α»‹nh để cho bΓ  con ra về αΊ‘khi chΓΊng tΓ΄i về Δ‘αΊΏn Δ‘Γ³ thΓ¬ thαΊ₯y yαΊΏu Δ‘αΊ―m tα»‘i rα»“i chΓΊng tΓ΄i nghΔ© rαΊ±ng lΓ  cαΊ§n phαΊ£i cΓ³ sα»± an toΓ n Δ‘α»‘i vα»›i người dΓ’n vΓ  trΓͺn hαΊΏt hai nα»―a thΓ¬ chΓΊng tΓ΄i cΕ©ng nhαΊ­n được sα»± gΓ³p Γ½ cα»§a anh em linh mα»₯c vΓ  cα»§a bề trΓͺn vΓ¬ chΓΊng tΓ΄i Δ‘α»‹nh để cho bΓ  con ra về αΊ‘khi chΓΊng tΓ΄i về Δ‘αΊΏn Δ‘Γ³ thΓ¬ thαΊ₯y gαΊ§n tα»‘i rα»“i chΓΊng tΓ΄i nghΔ© rαΊ±ng lΓ  cαΊ§n phαΊ£i cΓ³ sα»± an toΓ n Δ‘α»‘i vα»›i người dΓ’n lΓ  trΓͺn hαΊΏt hai nα»―a thΓ¬ chΓΊng tΓ΄i cΕ©ng nhαΊ­n được sα»± gΓ³p Γ½ cα»§a anh em linh mα»₯c về cα»§a bề trΓͺn để cho bΓ  con lΓ‘ bΓ¨
bΓ  cho biαΊΏt cuα»™c Δ‘ua cα»§a bΓ  Δ‘ang diα»…n ra gay go vΓ¬ sα»‘ phiαΊΏu khiαΊΏm diện gα»­i lαΊ‘i khΓ΄ng nhiều nhΖ° trΓ΄ng đợi vΓ  bΓ  Δ‘ang nα»— lα»±c hαΊΏt sα»©c để huy Δ‘α»™ng nhiều phiαΊΏu cα»§a cα»­ tri gα»‘c việt nhαΊ₯t cΓ³ thểbΓ  cho biαΊΏt cuα»™c Δ‘ua cα»§a bΓ  Δ‘ang diα»…n ra gay go vΓ¬ sα»‘ phiαΊΏu khiαΊΏm diện gα»­i lαΊ‘i khΓ΄ng nhiều nhΖ° trΓ΄ng đợi vΓ  bΓ  Δ‘ang nα»— lα»±c hαΊΏt sα»©c để huy Δ‘α»™ng nhiều phiαΊΏu cα»§a cα»­ tri gα»‘c việt nhαΊ₯t cΓ³ thểbΓ  cho biαΊΏt cuα»™c Δ‘ua cα»§a bΓ  Δ‘ang diα»…n ra gay go vΓ¬ sα»‘ phiαΊΏu khiαΊΏm diện gα»­i lαΊ‘i khΓ΄ng nhiều nhΖ° trΓ΄ng đợi vΓ  bΓ  Δ‘ang nα»— lα»±c hαΊΏt sα»©c để huy Δ‘α»™ng nhiều phiαΊΏu cα»§a cα»­ tri gα»‘c việt nhαΊ₯t cΓ³ thể
nαΊΏu nαΊ₯u cΖ‘m Δ‘αΊ£m bαΊ£o thΓ¬ mΓ¬nh cα»© lαΊ₯y gαΊ‘o nΓ³ ngon ngon mα»™t chΓΊt thΓ¬ về mΓ¬nh nαΊ₯u cΖ‘m nΓ³ ngon nΓͺn thΓ¬ người ta mua thΓ¬ mα»™t lαΊ§n hai lαΊ§n ta thαΊ₯y ngon thΓ¬ người ta cα»© tα»›i người ta mua hoΓ i vαΊ­y Δ‘Γ³nαΊΏu muα»‘n nαΊ₯u cΖ‘m Δ‘αΊ£m bαΊ£o thΓ¬ mΓ¬nh cα»© lαΊ₯y cΓ‘i gαΊ‘o nΓ³ ngon ngon mα»™t chΓΊt thΓ¬ về mΓ¬nh nαΊ₯u cΖ‘m nΓ³ ngon nΓͺn thΓ¬ người ta mua thΓ¬ mα»™t lαΊ§n hai lαΊ§n ta thαΊ₯y ngon thΓ¬ người ta cα»© tα»›i ta mua hoΓ i vαΊ­y Γ‘nαΊΏu nαΊ₯u cΖ‘m Δ‘αΊ£m bαΊ£o thΓ¬ mΓ¬nh cα»© lαΊ₯y gαΊ‘o nΓ³ ngon ngon mα»™t chΓΊt thΓ¬ về mΓ¬nh nαΊ₯u cΖ‘m nΓ³ ngon nΓͺn thΓ¬ người ta mua thΓ¬ mα»™t lαΊ§n hai lαΊ§n ta thαΊ₯y ngon người ta cα»© tα»›i người ta mua hoΓ i vαΊ­y Γ‘
cuα»‘i thΓ‘ng hai vα»«a qua nhΓ  chα»©c trΓ‘ch tαΊ‘i khu vα»±c nΓ y Δ‘Γ£ cΓ΄ng khai kαΊΏ hoαΊ‘ch bα»• sung thΓͺm nhα»―ng Δ‘Ζ‘n vα»‹ cαΊ£nh sΓ‘t Δ‘i bα»™ Δ‘i tuαΊ§n trΓͺn nhα»―ng con phα»‘ cΓ³ tα»· lệ tα»™i phαΊ‘m cao giα»‘ng nhΖ° a gai Δ‘Γ’y lΓ  mα»™t bΖ°α»›c tiαΊΏn mα»›i nhαΊ±m Δ‘α»‘i phΓ³ vα»›i tΓ¬nh trαΊ‘ng mαΊ₯t trαΊ­t tα»± an ninh vΓ  buΓ΄n bΓ‘n ma tΓΊy tαΊ‘i Δ‘Γ’y chα»‹ nhΖ° Γ½ mα»™t chα»§ tiệm trong khu vα»±c cho biαΊΏtcuα»‘i thΓ‘ng hai vα»«a qua nhΓ  chα»©c trΓ‘ch tαΊ‘i khu vα»±c nΓ y Δ‘Γ£ cΓ΄ng khai kαΊΏ hoαΊ‘ch bα»• sung thΓͺm nhα»―ng Δ‘Ζ‘n vα»‹ cαΊ£nh sΓ‘t Δ‘i bα»™ Δ‘i tuαΊ§n trΓͺn nhα»―ng con phα»‘ cΓ³ tα»· lệ tα»™i phαΊ‘m cao giα»‘ng nhΖ° a gai Δ‘Γ’y lΓ  mα»™t bΖ°α»›c tiαΊΏn mα»›i nhαΊ±m Δ‘α»‘i phΓ³ vα»›i tΓ¬nh trαΊ‘ng mαΊ₯t trαΊ­t tα»± an ninh vΓ  buΓ΄n bΓ‘n ma tuΓ½ tαΊ‘i Δ‘Γ’y chα»‹ nhΖ° Γ½ mα»™t chα»§ tiệm trong khu vα»±c cho biαΊΏtcuα»‘i thΓ‘ng hai vα»«a qua nhΓ  chα»©c trΓ‘ch tαΊ‘i khu vα»±c nΓ y Δ‘Γ£ cΓ΄ng khai kαΊΏ hoαΊ‘ch bα»• sung thΓͺm nhα»―ng Δ‘Ζ‘n vα»‹ cαΊ£nh sΓ‘t Δ‘i bα»™ Δ‘i tuαΊ§n trΓͺn nhα»―ng con phα»‘ cΓ³ tα»· lệ tα»™i phαΊ‘m cao giα»‘ng nhΖ° a gai Δ‘Γ’y lΓ  mα»™t bΖ°α»›c tiαΊΏn mα»›i nhαΊ±m Δ‘α»‘i phΓ³ vα»›i tΓ¬nh trαΊ‘ng mαΊ₯t trαΊ­t tα»± an ninh vΓ  buΓ΄n bΓ‘n ma tΓΊy tαΊ‘i Δ‘Γ’y chα»‹ nhΖ° Γ½ mα»™t chα»§ tiệm trong khu vα»±c cho biαΊΏt
bαΊ―c kinh mα»™t mα»±c khαΊ³ng Δ‘α»‹nh rαΊ±ng hαΊ§u hαΊΏt vΓΉng biển Δ‘Γ΄ng trong phαΊ‘m vi đường chΓ­n Δ‘oαΊ‘n do chΓ­nh họ vαΊ½ ra lΓ  thuα»™c chα»§ quyền khΓ΄ng thể tranh cΓ£i cα»§a trung quα»‘c sα»± kiện nΓ y Δ‘Γ£ Δ‘αΊ©y phi lip pin tα»›i quyαΊΏt Δ‘α»‹nh yΓͺu cαΊ§u tΓ²a Γ‘n trọng tΓ i quα»‘c tαΊΏ phΓ’n xα»­ cuα»™c tranh chαΊ₯pbαΊ―c kinh mα»™t mα»±c khαΊ³ng Δ‘α»‹nh rαΊ±ng hαΊ§u hαΊΏt vΓΉng biển Δ‘Γ΄ng trong phαΊ‘m vi đường chΓ­n Δ‘oαΊ‘n do chΓ­nh họ vαΊ½ ra lΓ  thuα»™c chα»§ quyền khΓ΄ng thể tranh cΓ£i cα»§a trung quα»‘c sα»± kiện nΓ y Δ‘Γ£ Δ‘αΊ©y phi lΓ­p pin tα»›i quyαΊΏt Δ‘α»‹nh yΓͺu cαΊ§u tΓ²a Γ‘n trọng tΓ i quα»‘c tαΊΏ phΓ’n xα»­ cuα»™c tranh chαΊ₯pbαΊ―c kinh mα»™t mα»±c khαΊ³ng Δ‘α»‹nh rαΊ±ng hαΊ§u hαΊΏt vΓΉng biển Δ‘Γ΄ng trong phαΊ‘m vi đường chΓ­n Δ‘oαΊ‘n do chΓ­nh họ vαΊ½ ra lΓ  thuα»™c chα»§ quyền khΓ΄ng thể tranh cΓ£i cα»§a trung quα»‘c sα»± kiện nΓ y Δ‘Γ£ Δ‘αΊ©y phi lip pin tα»›i quyαΊΏt Δ‘α»‹nh yΓͺu cαΊ§u tΓ²a Γ‘n trọng tΓ i quα»‘c tαΊΏ phΓ’n xα»­ cuα»™c tranh chαΊ₯p
khoαΊ£ng mười ngΓ n người nga ngΓ y mười ba thΓ‘ng nΔƒm biểu tΓ¬nh tαΊ‘i thα»§ Δ‘Γ΄ phαΊ£n Δ‘α»‘i chΓ­nh phα»§ cα»§a tα»•ng thα»‘ng vờ la Δ‘i mia pu tinkhoαΊ£ng mười ngΓ n người nga ngΓ y mười ba thΓ‘ng nΔƒm biểu tΓ¬nh tαΊ‘i thα»§ Δ‘Γ΄ phαΊ£n Δ‘α»‘i chΓ­nh phα»§ cα»§a tα»•ng thα»‘ng vờ la Δ‘i mia pu tinkhoαΊ£ng mười ngΓ n người nga ngΓ y mười ba thΓ‘ng nΔƒm biểu tΓ¬nh tαΊ‘i thα»§ Δ‘Γ΄ phαΊ£n Δ‘α»‘i chΓ­nh phα»§ cα»§a tα»•ng thα»‘ng vờ la Δ‘i mia pu tin
nhα»―ng người tuαΊ§n hΓ nh cho biαΊΏt họ muα»‘n trαΊ―c nghiệm sα»©c chα»‹u Δ‘α»±ng cα»§a cαΊ£nh sΓ‘t Δ‘α»‘i vα»›i mα»™t cuα»™c tα»₯ tαΊ­p lα»›n tαΊ‘i thα»§ Δ‘Γ΄ cα»§a nga sau khi tα»•ng thα»‘ng vờ la Δ‘ia mia pu tin tuyΓͺn thệ nhαΊ­m chα»©c cho nhiệm kα»³ thα»© ba được mα»™t tuαΊ§nnhα»―ng người tuαΊ§n hΓ nh cho biαΊΏt họ muα»‘n trαΊ―c nghiệm sα»©c chα»‹u Δ‘α»±ng cα»§a cαΊ£nh sΓ‘t Δ‘α»‘i vα»›i mα»™t cuα»™c tα»₯ tαΊ­p lα»›n tαΊ‘i thα»§ Δ‘Γ΄ cα»§a nga sau khi tα»•ng thα»‘ng vờ la Δ‘i mia pu tin tuyΓͺn thệ nhαΊ­m chα»©c cho nhiệm kα»³ thα»© ba được mα»™t tuαΊ§nnhα»―ng người tuαΊ§n hΓ nh cho biαΊΏt họ muα»‘n trαΊ―c nghiệm sα»©c chα»‹u Δ‘α»±ng cα»§a cαΊ£nh sΓ‘t Δ‘α»‘i vα»›i mα»™t cuα»™c tα»₯ tαΊ­p lα»›n tαΊ‘i thα»§ Δ‘Γ΄ cα»§a nga sau khi tα»•ng thα»‘ng vờ la Δ‘ia mia pu tin tuyΓͺn thệ nhαΊ­m chα»©c cho nhiệm kα»³ thα»© ba được mα»™t tuαΊ§n
Δ‘Γ³ lΓ  vαΊ₯n đề nΓͺu gΖ°Ζ‘ng cα»§a cΓ‘n bα»™ Δ‘αΊ£ng viΓͺn nhΓ  nΖ°α»›c cΓ‘c cαΊ₯pΔ‘Γ³ lΓ  vαΊ₯n đề nΓͺu gΖ°Ζ‘ng cα»§a cΓ‘n bα»™ Δ‘αΊ£ng viΓͺn nhΓ  nΖ°α»›c cΓ‘c cαΊ₯pΔ‘Γ³ lΓ  vαΊ₯n đề nΓͺu gΖ°Ζ‘ng cα»§a cΓ‘n bα»™ Δ‘αΊ£ng viΓͺn nhΓ  nΖ°α»›c cΓ‘c cαΊ₯p
biαΊΏt tαΊ₯t cαΊ£ nhα»―ng Δ‘iều Δ‘Γ³ Δ‘iều chΓΊng tΓ΄i muα»‘n xΓ‘c Δ‘α»‹nh lΓ  chiαΊΏc Γ©p chΓ­n mΖ°Ζ‘i cΓ‘i tΓͺn mΓ  dΓ’n cuα»“ng tΓ­n bΓͺ mờ vΓͺ kΓ©p biαΊΏt Δ‘αΊΏn cΓ³ Δ‘i theo xu hΖ°α»›ng cα»§a bΓͺ mờ vΓͺ kΓ©p lΓ  trở thΓ nh mα»™t chiαΊΏc xe khΓ΄ng tαΊ§m thường hay khΓ΄ngbiαΊΏt tαΊ₯t cαΊ£ nhα»―ng Δ‘iều Δ‘Γ³ Δ‘iều chΓΊng tΓ΄i muα»‘n xΓ‘c Δ‘α»‹nh lΓ  chiαΊΏc Γ©p chΓ­n mΖ°Ζ‘i cΓ‘i tΓͺn mΓ  dΓ’n cuα»“ng tΓ­n bΓͺ mờ w biαΊΏt Δ‘αΊΏn cΓ³ Δ‘i theo xu hΖ°α»›ng cα»§a bΓͺ mờ w lΓ  trở thΓ nh mα»™t chiαΊΏc xe khΓ΄ng tαΊ§m thường hay khΓ΄ngtαΊ₯t cαΊ£ nhα»―ng Δ‘iều Δ‘Γ³ Δ‘iều chΓΊng tΓ΄i muα»‘n xΓ‘c Δ‘α»‹nh lΓ  chiαΊΏc Γ©p chΓ­n mΖ°Ζ‘i cΓ‘i tΓͺn mΓ  dΓ’n cuα»“ng tΓ­n bΓͺ mờ vΓͺ kΓ©p biαΊΏt Δ‘αΊΏn cΓ³ Δ‘i theo xu hΖ°α»›ng cα»§a bΓͺ mờ vΓͺ kΓ©p lΓ  trở thΓ nh mα»™t chiαΊΏc xe khΓ΄ng tαΊ§m thường hay khΓ΄ng
cho na tΓ΄ cho Δ‘αΊΏn lΓ unk chΖ°a Δ‘a tΓ΄ cho Δ‘αΊΏn lΓ unk cho na tΓ΄ cho Δ‘αΊΏn lΓ 
thΓ΄ng qua mαΊ‘ng xΓ£ hα»™i nhΓ³m nhα»―ng người vαΊ­n Δ‘α»™ng sα»± giΓΊp Δ‘α»‘ phΓ‘p lΓ½ cho cΓ΄ hΖ°Ζ‘ng cΓ‘ch Δ‘Γ’y hai nΔƒm bΓ y tỏ họ thαΊ₯y nghαΊΉn Δ‘αΊ―ng hoαΊ·c α»©c phΓ‘t khΓ³c vΓ¬ kαΊΏt quαΊ£ mα»›i Δ‘Γ’y tαΊ‘i tΓ²a ma lai si a bΓ  nguyα»…n hoΓ ng Γ‘nh mα»™t người trong nhΓ³m cΕ©ng lΓ  mα»™t giαΊ£ng viΓͺn Δ‘αΊ‘i học được biαΊΏt Δ‘αΊΏn rα»™ng rΓ£i trΓͺn mαΊ‘ng xΓ£ hα»™i nΓ³i vα»›i vi Γ’y ba vΓ  cαΊ£ nhΓ³m lαΊ·ng người khi nghe tinthΓ΄ng qua mαΊ‘ng xΓ£ hα»™i nhΓ³m nhα»―ng người vαΊ­n Δ‘α»™ng sα»± giΓΊp Δ‘α»‘ phΓ‘p lΓ½ cho cΓ΄ hΖ°Ζ‘ng cΓ‘ch Δ‘Γ’y hai nΔƒm bΓ y tỏ họ thαΊ₯y nghαΊΉn Δ‘αΊ―ng hoαΊ·c α»©c phΓ‘t khΓ³c về kαΊΏt quαΊ£ mα»›i Δ‘Γ’y tαΊ‘i toΓ  malaysia bΓ  nguyα»…n hoΓ ng Γ‘nh mα»™t người trong nhΓ³m cΕ©ng lΓ  mα»™t giαΊ£ng viΓͺn Δ‘αΊ‘i học được biαΊΏt Δ‘αΊΏn rα»™ng rΓ£i trΓͺn mαΊ‘ng xΓ£ hα»™i nΓ³i vα»›i vietbay bΓ  vΓ  cαΊ£ nhΓ³m lαΊ·ng người khi nghe tinthΓ΄ng qua mαΊ‘ng xΓ£ hα»™i nhΓ³m nhα»―ng người vαΊ­n Δ‘α»™ng sα»± giΓΊp Δ‘α»‘ phΓ‘p lΓ½ cho cΓ΄ hΖ°Ζ‘ng cΓ‘ch Δ‘Γ’y hai nΔƒm bΓ y tỏ họ thαΊ₯y nghαΊΉn Δ‘αΊ―ng hoαΊ·c α»©c phΓ‘t khΓ³c về kαΊΏt quαΊ£ mα»›i Δ‘Γ’y tαΊ‘i tΓ²a ma lai si a bΓ  nguyα»…n hoΓ ng Γ‘nh mα»™t người trong nhΓ³m cΕ©ng lΓ  mα»™t giαΊ£ng viΓͺn Δ‘αΊ‘i học được biαΊΏt Δ‘αΊΏn rα»™ng rΓ£i trΓͺn mαΊ‘ng xΓ£ hα»™i nΓ³i vα»›i vi Γ’y ba vΓ  cαΊ£ nhΓ³m lαΊ·ng người khi nghe tin
sαΊ½ nhαΊ­n được mα»™t bα»™ sΖ°u tαΊ­p quαΊ§n Γ‘o mα»›i mα»™t sα»‘ tiền khΓ΄ng được tiαΊΏt lα»™ vΓ  mα»™t cΔƒn hα»™ ở thΓ nh phα»‘ niu oΓ³csαΊ½ nhαΊ­n được mα»™t bα»™ sΖ°u tαΊ­p quαΊ§n Γ‘o mα»›i mα»™t sα»‘ tiền khΓ΄ng được tiαΊΏt lα»™ vΓ  mα»™t cΔƒn hα»™ ở thΓ nh phα»‘ new yorksαΊ½ nhαΊ­n được mα»™t bα»™ sΖ°u tαΊ­p quαΊ§n Γ‘o mα»›i mα»™t sα»‘ tiền khΓ΄ng được tiαΊΏt lα»™ vΓ  mα»™t cΔƒn hα»™ ở thΓ nh phα»‘ niu oΓ³c
tα»· lệ mα»™t giΓ‘o viΓͺn cho bα»‘n mΖ°Ζ‘i sΓ‘u học sinh tiểu học lΓ  con sα»‘ tệ nhαΊ₯t trΓͺn thαΊΏ giα»›i ngoΓ i chΓ’u phi ngΓ’n hΓ ng phΓ‘t triển chΓ’u Γ‘ Δ‘ang cαΊ₯p chΓ­n mΖ°Ζ‘i triệu Δ‘Γ΄ la trong vΓ²ng nΔƒm nΔƒm để cαΊ£i thiện chαΊ₯t lượng giΓ‘o dα»₯c vΓ  giαΊ£m tα»· lệ bỏ họctα»· lệ mα»™t giΓ‘o viΓͺn cho bα»‘n mΖ°Ζ‘i sΓ‘u học sinh tiểu học lΓ  con sα»‘ tệ nhαΊ₯t trΓͺn thαΊΏ giα»›i ngoΓ i chΓ’u phi ngΓ’n hΓ ng phΓ‘t triển chΓ’u Γ‘ Δ‘ang cαΊ₯p chΓ­n mΖ°Ζ‘i triệu Δ‘Γ΄ la trong vΓ²ng nΔƒm nΔƒm để cαΊ£i thiện chαΊ₯t lượng giΓ‘o dα»₯c vΓ  giαΊ£m tα»· lệ bỏ họctα»· lệ mα»™t giΓ‘o viΓͺn cho bα»‘n mΖ°Ζ‘i sΓ‘u học sinh tiểu học lΓ  con sα»‘ tệ nhαΊ₯t trΓͺn thαΊΏ giα»›i ngoΓ i chΓ’u phi ngΓ’n hΓ ng phΓ‘t triển chΓ’u Γ‘ Δ‘ang cαΊ₯p chΓ­n mΖ°Ζ‘i triệu Δ‘Γ΄ la trong vΓ²ng nΔƒm nΔƒm để cαΊ£i thiện chαΊ₯t lượng giΓ‘o dα»₯c vΓ  giαΊ£m tα»· lệ bỏ học
giΓ‘o viΓͺn trΓ΄ng đợi bαΊ‘n Δ‘αΊ‘t thΓ nh tΓ­ch cao khi giΓ‘o viΓͺn cΓ³ nhα»―ng kα»³ vọng tΓ­ch cα»±c tα»« Δ‘Γ³ thα»±c sα»± khΓ­ch lệ bαΊ‘n học tα»‘t hΖ‘ngiΓ‘o viΓͺn trΓ΄ng đợi bαΊ‘n Δ‘αΊ‘t thΓ nh tΓ­ch cao khi giΓ‘o viΓͺn cΓ³ nhα»―ng kα»³ vọng tΓ­ch cα»±c Δ‘iều Δ‘Γ³ thα»±c sα»± khΓ­ch lệ bαΊ‘n học tα»‘t hΖ‘ngiΓ‘o viΓͺn trΓ΄ng đợi bαΊ‘n Δ‘αΊ‘t thΓ nh tΓ­ch cao khi giΓ‘o viΓͺn cΓ³ nhα»―ng kα»³ vọng tΓ­ch cα»±c Δ‘iều Δ‘Γ³ thα»±c sα»± khΓ­ch lệ bαΊ‘n học tα»‘t hΖ‘n
\n" ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "πŸ“ FPT FOSD: 20 Samples Comparison:\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ReferencePhoWhisper LargePhoWhisper Lora Finetuned
cΓ‘ch để Δ‘icΓ‘ch để Δ‘icΓ‘ch để Δ‘i
họ Δ‘Γ£ xΓ©t nghiệm mΓ‘u cho cheng nhΖ°ng mọi thα»© vαΊ«n hoΓ n toΓ n bΓ¬nh thườnghọ Δ‘Γ£ xΓ©t nghiền mΓ‘u cho trang nhΖ°ng mọi thα»© vαΊ«n hoΓ n toΓ n bΓ¬nh thườnghọ Δ‘Γ£ xΓ©t nghiệm bαΊ£o cho cheng nhΖ°ng mọi thα»© vαΊ«n hoΓ n toΓ n bΓ¬nh thường
anh cΓ³ thể gọi tΓ΄i khΓ΄nganh cΓ³ thể gọi tΓ΄i khΓ΄nganh cΓ³ thể gọi tΓ΄i khΓ΄ng
cΓ³ rαΊ₯t nhiều yαΊΏu tα»‘ may rα»§i ở Δ‘Γ’ycΓ³ rαΊ₯t nhiều yαΊΏu tα»‘ may rα»§i ở Δ‘Γ’ycΓ³ rαΊ₯t nhiều yαΊΏu tα»‘ may rα»§i ở Δ‘Γ’y
ai lΓ  chΓΊa nΓ³i dα»‘iai lΓ  chΓΊa nΓ³i dα»‘iai lΓ  chΓΊa nΓ³i dα»‘i
cΓ³ cα»­a hΓ ng tiện lợi ở sΓ’n bay khΓ΄ngcΓ³ cα»­a hΓ ng tiện lợi ở sΓ’n bay khΓ΄ngc cΓ³ cα»­a hΓ ng tiện lợi ở sΓ’n bay khΓ΄ng
anh Δ‘α»•i ngoαΊ‘i tệ được khΓ΄nganh Δ‘α»•i ngoαΊ‘i tệ được khΓ΄nganh Δ‘α»•i ngoαΊ‘i tệ được khΓ΄ng
cΓ΄ αΊ₯y mua hai mΖ°Ζ‘i trΓ‘i chΓ΄m chΓ΄m vΓ  ba con cΓ‘cΓ΄ αΊ₯y mua hai mΖ°Ζ‘i trΓ‘i chΓ΄m chΓ΄m vΓ  ba con cΓ‘cΓ΄ αΊ₯y mua hai mΖ°Ζ‘i trΓ‘i chΓ΄m chΓ΄m vΓ  ba con cΓ‘
Δ‘α»©a bΓ© cΓ³ Γ³i Γ²ng ọc ra sα»―a hoαΊ·c nΖ°α»›c vΓ  bΓ© chΖ°a Δ‘αΊΏn mười tuαΊ§n tuα»•i hoαΊ·c cΓ³ biểu hiện mαΊ₯t nΖ°α»›c khΓ΄ngΔ‘α»©a bΓ© cΓ³ Γ³i Γ²ng ọc ra sα»―a hoαΊ·c nΖ°α»›c vΓ  bΓ© chΖ°a Δ‘αΊΏn mười tuαΊ§n tuα»•i hoαΊ·c cΓ³ biểu hiện mαΊ₯t nΖ°α»›c khΓ΄ngbΓ© cΓ³ Γ³i Γ²ng ọc ra sα»―a hoαΊ·c nΖ°α»›c vΓ  bΓ© chΖ°a Δ‘αΊΏn mười tuαΊ§n tuα»•i hoαΊ·c cΓ³ biểu hiện mαΊ₯t nΖ°α»›c khΓ΄ng
tΓ΄i cΓ³ thể viαΊΏt tΓͺn Δ‘α»‹a chỉ sα»‘ Δ‘iện thoαΊ‘i cα»§a cΓ΄ng ty bαΊ£o hiểm cα»§a anh được khΓ΄ngtΓ΄i cΓ³ thể viαΊΏt tΓͺn Δ‘α»‹a chỉ sα»‘ Δ‘iện thoαΊ‘i cα»§a cΓ΄ng ty bαΊ£o hiểm cα»§a anh được khΓ΄ngtΓ΄i cΓ³ thể viαΊΏt tΓͺn Δ‘α»‹a chỉ sα»‘ Δ‘iện thoαΊ‘i cα»§a cΓ΄ng ty bαΊ£o hiểm cα»§a anh được khΓ΄ng
Δ‘α»«ng lo tΓ΄i vα»«a mα»›i Δ‘αΊΏn rα»“iΔ‘α»«ng lo tΓ΄i vα»«a mα»›i Δ‘αΊΏn rα»“iΔ‘α»«ng lo tΓ΄i vα»«a mα»›i Δ‘αΊΏn rα»“i
mười phút nữa vào giờ rưốimười phút nữa vào giờ rưốimười phút nữa vào giờ rưối
tΓ΄i cΓ³ thể hαΊΉn cho chiều mai khΓ΄ngtΓ΄i cΓ³ thể hαΊΉn cho chiều mai khΓ΄ngtΓ΄i cΓ³ thể hαΊΉn cho chiều mai khΓ΄ng
anh rα»­a hΓ¬nh kα»Ή thuαΊ­t sα»‘ ra được khΓ΄nganh rα»­a hΓ¬nh kα»Ή thuαΊ­t sα»‘ ra được khΓ΄nganh rα»­a hΓ¬nh kα»Ή thuαΊ­t sα»‘ ra được khΓ΄ng
tΓ΄i cα»‘ thu xαΊΏp thΓ΄i
tΓ΄i khΓ΄ng dΓΉng ma tΓΊytΓ΄i khΓ΄ng dΓΉng ma tuΓ½tΓ΄i khΓ΄ng dΓΉng ma tΓΊy
quΓ’n Δ‘α»™i mα»Ή muα»‘n chαΊΏ tαΊ‘o nhα»―ng mΓ‘y tα»± Δ‘α»™ng hoΓ n toΓ n vΓ¬ nhα»―ng chiαΊΏc mΓ  họ Δ‘ang cΓ³ vαΊ«n cαΊ§n được Δ‘iều khiển bởi con ngườiquΓ’n Δ‘α»™i mα»Ή muα»‘n chαΊΏ tαΊ‘o nhα»―ng mΓ‘y tα»± Δ‘α»™ng hoΓ n toΓ n vΓ¬ nhα»―ng chiαΊΏc mΓ  họ Δ‘ang cΓ³ vαΊ«n cαΊ§n được Δ‘iều khiển bởi con ngườiquΓ’n Δ‘α»™i mα»Ή muα»‘n chαΊΏ tαΊ‘o nhα»―ng mΓ‘y tα»± Δ‘α»™ng hoΓ n toΓ n vΓ¬ nhα»―ng chiαΊΏc mΓ  họ Δ‘ang cΓ³ vαΊ«n cαΊ§n được Δ‘iều khiển bởi con người
tΓ΄i quΓͺn tΓΊi Δ‘eo vai trong xe tαΊ―c xitΓ΄i quΓͺn tΓΊi Δ‘eo vai trong xe taxitΓ΄i quΓͺn tΓΊi Δ‘eo vai trong xe tαΊ―c xi
dΖ° luαΊ­n Δ‘Γ£ phαΊ£n Γ‘nh lΓͺn cΖ‘ quan Δ‘α»‹a chΓ­nh cα»§a thα»‹ trαΊ₯n nhΖ°ng mΓ£i chαΊ£ thαΊ₯y hα»“i Γ’mdΖ° luαΊ­n Δ‘Γ£ phαΊ£n Γ‘nh lΓͺn cΖ‘ quan Δ‘α»‹a chΓ­nh cα»§a thα»‹ trαΊ₯n nhΖ°ng mΓ£i chαΊ£ thαΊ₯y hα»“i Γ’mdΖ° luαΊ­n Δ‘Γ£ phαΊ£n Γ‘nh lΓͺn cΖ‘ quan Δ‘α»‹a chΓ­nh cα»§a thα»‹ trαΊ₯n nhΖ°ng mΓ£i chαΊ£ thαΊ₯y hα»“i Γ’m
giαΊ£ danh lΓ m tα»« thiện lα»«a tiền người dΓ’ngiαΊ£ danh lΓ m tα»« thiện lα»«a tiền người dΓ’ngiαΊ£ danh lΓ m tα»« thiện lα»«a tiền người dΓ’n
\n" ] }, "metadata": {} } ] }, { "cell_type": "markdown", "source": [ "# Inference Transformer Model" ], "metadata": { "id": "3QedojnzXfcM" } }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 205, "referenced_widgets": [ "735503fcaa4c4bc1b774a9504b85ba44", "6623288a87fb4c3ba20b0f69d82b84b9", "0bc3145777894a9f919e74fe5bf40ae6", "4d3ba578d162409b9e543ff8a883e046", "bf684ce1d22a46e381c01758af7348ec", "fa22117aad17411b9d131d5d28d8593b", "f9249c919d8f475897891e39b8d7bfc6", "a903c7f98e3f4773903ee6a20ff785ae", "daa830804eb648d98c735b3d31aa50ba", "63b3d1b5f3eb4adeb4414e9107517480", "f044541292ad4478a622dcf75614b23d", "11cf1531a65a4bd7895644ab66967081", "0786dd8fc5d049f682d330f161906de2", "8476f5091d5f4c698059239f9e82a943", "41304d2fa3d3423b885d7613adbb869c", "213db72a947e430ebe43a3d679f5fdc8", "073f20a03e79489ca9e7679398b14af9", "4c2ca7cfd5c04de0941e146c23f7fde0", "b845a69c791f4b46969b554692bd2014", "e67702ae0b8e432ca4ab918b12211719", "b2da29c44f2641159af2fd908f42507d", "7378e313d5fc45f591968515e23299d8", "d5037ce091c14f2d9176fe51068f3299", "6c3a4deee31440f4a976000534f33423", "5d9612d45b1e424081d4d63b4a2ef9a3", "6e396d3636824fdc938e2dc52287dd89", "38e9594062524839a281e5a419bf0412", "c5b934817a66425180902d0b3bb3ecbf", "cfc189deee044d9c811a4462fc432672", "1604cf029cc9446dabfdad718bb4dd1f", "467d688696454277b6fc11f45559e6e8", "b84c0ff4e5d8421792701c67870a8b23", "0cc22243bb414981a57811c4390fcb21" ] }, "id": "lxsLPfpcg1hT", "outputId": "6c6c1920-237d-4617-b087-818513cabdd4" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ“₯ Loading Whisper + LoRA model...\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "735503fcaa4c4bc1b774a9504b85ba44", "version_major": 2, "version_minor": 0 }, "text/plain": [ "config.json: 0.00B [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "11cf1531a65a4bd7895644ab66967081", "version_major": 2, "version_minor": 0 }, "text/plain": [ "pytorch_model.bin: 0%| | 0.00/967M [00:00